]> git.proxmox.com Git - ceph.git/commitdiff
import ceph 14.2.5
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 10 Dec 2019 11:49:26 +0000 (12:49 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 10 Dec 2019 11:49:26 +0000 (12:49 +0100)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
810 files changed:
ceph/.github/pull_request_template.md
ceph/CMakeLists.txt
ceph/PendingReleaseNotes
ceph/admin/build-doc
ceph/admin/doc-requirements.txt
ceph/alpine/APKBUILD
ceph/ceph.spec
ceph/ceph.spec.in
ceph/changelog.upstream
ceph/cmake/modules/BuildDPDK.cmake
ceph/cmake/modules/CheckCxxAtomic.cmake
ceph/cmake/modules/FindBoost.cmake
ceph/cmake/modules/Findgenl.cmake [new file with mode: 0644]
ceph/debian/control
ceph/doc/cephfs/fs-volumes.rst [new file with mode: 0644]
ceph/doc/cephfs/fstab.rst
ceph/doc/cephfs/index.rst
ceph/doc/cephfs/kernel.rst
ceph/doc/cephfs/posix.rst
ceph/doc/dev/osd_internals/recovery_reservation.rst
ceph/doc/dev/osd_internals/scrub.rst
ceph/doc/man/8/ceph-bluestore-tool.rst
ceph/doc/man/8/ceph-kvstore-tool.rst
ceph/doc/man/8/mount.ceph.rst
ceph/doc/man/8/rados.rst
ceph/doc/man/8/rbd.rst
ceph/doc/mgr/crash.rst
ceph/doc/mgr/dashboard.rst
ceph/doc/mgr/orchestrator_cli.rst
ceph/doc/mgr/telemetry.rst
ceph/doc/rados/command/list-inconsistent-obj.json
ceph/doc/rados/configuration/bluestore-config-ref.rst
ceph/doc/rados/configuration/mon-config-ref.rst
ceph/doc/rados/configuration/mon-osd-interaction.rst
ceph/doc/rados/operations/balancer.rst
ceph/doc/rados/operations/health-checks.rst
ceph/doc/rados/operations/monitoring-osd-pg.rst
ceph/doc/rados/operations/monitoring.rst
ceph/doc/rados/operations/pg-states.rst
ceph/doc/rados/operations/placement-groups.rst
ceph/doc/radosgw/index.rst
ceph/doc/radosgw/multisite.rst
ceph/doc/radosgw/notifications.rst [new file with mode: 0644]
ceph/doc/radosgw/pubsub-module.rst
ceph/doc/radosgw/s3-notification-compatibility.rst [new file with mode: 0644]
ceph/doc/radosgw/s3.rst
ceph/doc/radosgw/s3/bucketops.rst
ceph/doc/radosgw/s3/objectops.rst
ceph/doc/rbd/qemu-rbd.rst
ceph/doc/rbd/rbd-mirroring.rst
ceph/doc_deps.deb.txt
ceph/install-deps.sh
ceph/make-dist
ceph/monitoring/grafana/dashboards/cephfs-overview.json
ceph/monitoring/grafana/dashboards/host-details.json
ceph/monitoring/grafana/dashboards/hosts-overview.json
ceph/monitoring/grafana/dashboards/osd-device-details.json
ceph/monitoring/grafana/dashboards/osds-overview.json
ceph/monitoring/grafana/dashboards/pool-overview.json
ceph/monitoring/grafana/dashboards/radosgw-detail.json
ceph/monitoring/grafana/dashboards/rbd-overview.json
ceph/qa/clusters/2-node-mgr.yaml [new file with mode: 0644]
ceph/qa/debug/mgr.yaml [new file with mode: 0644]
ceph/qa/rbd/krbd_discard.t
ceph/qa/rbd/krbd_discard_4M.t
ceph/qa/run-standalone.sh
ceph/qa/standalone/ceph-helpers.sh
ceph/qa/standalone/erasure-code/test-erasure-eio.sh
ceph/qa/standalone/mgr/balancer.sh [new file with mode: 0755]
ceph/qa/standalone/misc/network-ping.sh [new file with mode: 0755]
ceph/qa/standalone/mon/mon-osdmap-prune.sh
ceph/qa/standalone/mon/osd-pool-create.sh
ceph/qa/standalone/osd/divergent-priors.sh [new file with mode: 0755]
ceph/qa/standalone/osd/ec-error-rollforward.sh
ceph/qa/standalone/osd/osd-backfill-prio.sh
ceph/qa/standalone/osd/osd-backfill-space.sh
ceph/qa/standalone/osd/osd-bluefs-volume-ops.sh
ceph/qa/standalone/osd/osd-dup.sh
ceph/qa/standalone/osd/osd-recovery-prio.sh
ceph/qa/standalone/osd/osd-recovery-space.sh [new file with mode: 0755]
ceph/qa/standalone/osd/osd-rep-recov-eio.sh
ceph/qa/standalone/scrub/osd-scrub-dump.sh [new file with mode: 0755]
ceph/qa/standalone/scrub/osd-scrub-repair.sh
ceph/qa/standalone/scrub/osd-scrub-snaps.sh
ceph/qa/standalone/special/ceph_objectstore_tool.py
ceph/qa/suites/fs/basic_functional/tasks/client-recovery.yaml
ceph/qa/suites/fs/bugs/client_trim_caps/conf [new symlink]
ceph/qa/suites/fs/bugs/conf [deleted symlink]
ceph/qa/suites/fs/thrash/msgr-failures/osd-mds-delay.yaml
ceph/qa/suites/fs/upgrade/featureful_client/old_client/tasks/2-upgrade.yaml
ceph/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/2-upgrade.yaml
ceph/qa/suites/krbd/fsx/striping/default/msgr-failures/few.yaml
ceph/qa/suites/krbd/fsx/striping/default/msgr-failures/many.yaml
ceph/qa/suites/krbd/fsx/striping/fancy/msgr-failures/few.yaml
ceph/qa/suites/krbd/rbd-nomount/msgr-failures/few.yaml
ceph/qa/suites/krbd/rbd-nomount/msgr-failures/many.yaml
ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_enumerate.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_netlink_enobufs.yaml [new file with mode: 0644]
ceph/qa/suites/krbd/rbd/msgr-failures/few.yaml
ceph/qa/suites/krbd/rbd/msgr-failures/many.yaml
ceph/qa/suites/krbd/singleton/msgr-failures/few.yaml
ceph/qa/suites/krbd/singleton/msgr-failures/many.yaml
ceph/qa/suites/krbd/unmap/ceph/ceph.yaml
ceph/qa/suites/krbd/wac/wac/verify/many-resets.yaml
ceph/qa/suites/rados/basic/msgr-failures/few.yaml
ceph/qa/suites/rados/basic/msgr-failures/many.yaml
ceph/qa/suites/rados/dashboard/% [new file with mode: 0644]
ceph/qa/suites/rados/dashboard/.qa [new symlink]
ceph/qa/suites/rados/dashboard/clusters/+ [new file with mode: 0644]
ceph/qa/suites/rados/dashboard/clusters/.qa [new symlink]
ceph/qa/suites/rados/dashboard/clusters/2-node-mgr.yaml [new symlink]
ceph/qa/suites/rados/dashboard/debug/.qa [new symlink]
ceph/qa/suites/rados/dashboard/debug/mgr.yaml [new symlink]
ceph/qa/suites/rados/dashboard/objectstore [new symlink]
ceph/qa/suites/rados/dashboard/supported-random-distro$ [new symlink]
ceph/qa/suites/rados/dashboard/tasks/.qa [new symlink]
ceph/qa/suites/rados/dashboard/tasks/dashboard.yaml [new file with mode: 0644]
ceph/qa/suites/rados/mgr/clusters/2-node-mgr.yaml [changed from file to symlink]
ceph/qa/suites/rados/mgr/clusters/openstack.yaml [deleted file]
ceph/qa/suites/rados/mgr/debug/mgr.yaml [changed from file to symlink]
ceph/qa/suites/rados/mgr/tasks/crash.yaml
ceph/qa/suites/rados/mgr/tasks/dashboard.yaml [deleted file]
ceph/qa/suites/rados/mgr/tasks/insights.yaml
ceph/qa/suites/rados/mgr/tasks/module_selftest.yaml
ceph/qa/suites/rados/monthrash/msgr-failures/few.yaml
ceph/qa/suites/rados/monthrash/msgr-failures/mon-delay.yaml
ceph/qa/suites/rados/multimon/msgr-failures/few.yaml
ceph/qa/suites/rados/multimon/msgr-failures/many.yaml
ceph/qa/suites/rados/singleton-bluestore/msgr-failures/few.yaml
ceph/qa/suites/rados/singleton-bluestore/msgr-failures/many.yaml
ceph/qa/suites/rados/singleton-nomsgr/all/balancer.yaml [new file with mode: 0644]
ceph/qa/suites/rados/singleton/all/mon-memory-target-compliance.yaml.disabled [new file with mode: 0644]
ceph/qa/suites/rados/singleton/all/test-crash.yaml
ceph/qa/suites/rados/singleton/msgr-failures/few.yaml
ceph/qa/suites/rados/singleton/msgr-failures/many.yaml
ceph/qa/suites/rados/standalone/workloads/mgr.yaml [new file with mode: 0644]
ceph/qa/suites/rados/thrash-old-clients/msgr-failures/fastclose.yaml
ceph/qa/suites/rados/thrash-old-clients/msgr-failures/few.yaml
ceph/qa/suites/rados/thrash-old-clients/msgr-failures/osd-delay.yaml
ceph/qa/suites/rados/thrash/msgr-failures/fastclose.yaml
ceph/qa/suites/rados/thrash/msgr-failures/few.yaml
ceph/qa/suites/rados/thrash/msgr-failures/osd-delay.yaml
ceph/qa/suites/rados/verify/msgr-failures/few.yaml
ceph/qa/suites/rbd/basic/msgr-failures/few.yaml
ceph/qa/suites/rbd/cli/msgr-failures/few.yaml
ceph/qa/suites/rbd/cli_v1/msgr-failures/few.yaml
ceph/qa/suites/rbd/mirror/workloads/rbd-mirror-bootstrap-workunit.yaml [new file with mode: 0644]
ceph/qa/suites/rbd/qemu/msgr-failures/few.yaml
ceph/qa/suites/rbd/thrash/msgr-failures/few.yaml
ceph/qa/suites/rgw/multisite/realms/three-zone-plus-pubsub.yaml [new file with mode: 0644]
ceph/qa/suites/rgw/verify/msgr-failures/few.yaml
ceph/qa/suites/smoke/basic/tasks/mon_thrash.yaml
ceph/qa/suites/smoke/basic/tasks/rados_bench.yaml
ceph/qa/suites/smoke/basic/tasks/rbd_fsx.yaml
ceph/qa/suites/tgt/basic/msgr-failures/few.yaml
ceph/qa/suites/tgt/basic/msgr-failures/many.yaml
ceph/qa/tasks/cbt.py
ceph/qa/tasks/ceph.conf.template
ceph/qa/tasks/ceph.py
ceph/qa/tasks/cephfs/fuse_mount.py
ceph/qa/tasks/cephfs/kernel_mount.py
ceph/qa/tasks/cephfs/mount.py
ceph/qa/tasks/cephfs/test_client_recovery.py
ceph/qa/tasks/cephfs/test_failover.py
ceph/qa/tasks/cephfs/test_volume_client.py
ceph/qa/tasks/cephfs/test_volumes.py
ceph/qa/tasks/kclient.py
ceph/qa/tasks/mgr/dashboard/test_mgr_module.py
ceph/qa/tasks/mgr/dashboard/test_pool.py
ceph/qa/tasks/mgr/dashboard/test_rbd.py
ceph/qa/tasks/mgr/dashboard/test_rgw.py
ceph/qa/tasks/mgr/test_dashboard.py
ceph/qa/tasks/mgr/test_insights.py
ceph/qa/tasks/mgr/test_module_selftest.py
ceph/qa/tasks/rgw_multisite.py
ceph/qa/tasks/rgw_multisite_tests.py
ceph/qa/tasks/vstart_runner.py
ceph/qa/valgrind.supp
ceph/qa/workunits/ceph-helpers-root.sh
ceph/qa/workunits/cephtool/test.sh
ceph/qa/workunits/mon/pool_ops.sh
ceph/qa/workunits/rados/test_crash.sh
ceph/qa/workunits/rados/test_envlibrados_for_rocksdb.sh
ceph/qa/workunits/rados/test_librados_build.sh
ceph/qa/workunits/rbd/cli_generic.sh
ceph/qa/workunits/rbd/krbd_udev_enumerate.sh [new file with mode: 0755]
ceph/qa/workunits/rbd/krbd_udev_netlink_enobufs.sh [new file with mode: 0755]
ceph/qa/workunits/rbd/rbd_mirror.sh
ceph/qa/workunits/rbd/rbd_mirror_bootstrap.sh [new file with mode: 0755]
ceph/qa/workunits/rbd/rbd_mirror_helpers.sh
ceph/src/.git_version
ceph/src/CMakeLists.txt
ceph/src/auth/cephx/CephxClientHandler.cc
ceph/src/auth/cephx/CephxProtocol.cc
ceph/src/auth/cephx/CephxServiceHandler.cc
ceph/src/auth/cephx/CephxSessionHandler.cc
ceph/src/ceph-crash.in
ceph/src/ceph-volume/ceph_volume/api/lvm.py
ceph/src/ceph-volume/ceph_volume/configuration.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/listing.py
ceph/src/ceph-volume/ceph_volume/devices/lvm/zap.py
ceph/src/ceph-volume/ceph_volume/systemd/main.py
ceph/src/ceph-volume/ceph_volume/tests/api/test_lvm.py
ceph/src/ceph-volume/ceph_volume/tests/conftest.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_bluestore.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_listing.py
ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py
ceph/src/ceph-volume/ceph_volume/tests/functional/playbooks/deploy.yml
ceph/src/ceph-volume/ceph_volume/tests/test_configuration.py
ceph/src/ceph-volume/ceph_volume/tests/test_inventory.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_device.py
ceph/src/ceph-volume/ceph_volume/tests/util/test_system.py
ceph/src/ceph-volume/ceph_volume/util/device.py
ceph/src/ceph-volume/ceph_volume/util/encryption.py
ceph/src/ceph-volume/ceph_volume/util/system.py
ceph/src/ceph-volume/shell_tox.ini [new file with mode: 0644]
ceph/src/ceph-volume/tox.ini
ceph/src/ceph.in
ceph/src/client/Client.cc
ceph/src/client/Client.h
ceph/src/client/Inode.h
ceph/src/client/MetaSession.h
ceph/src/cls/rbd/cls_rbd.cc
ceph/src/cls/rbd/cls_rbd_client.cc
ceph/src/cls/rbd/cls_rbd_client.h
ceph/src/cls/rgw/cls_rgw_types.cc
ceph/src/cls/rgw/cls_rgw_types.h
ceph/src/cls/user/cls_user.cc
ceph/src/common/CMakeLists.txt
ceph/src/common/Checksummer.h
ceph/src/common/Formatter.cc
ceph/src/common/Formatter.h
ceph/src/common/PriorityCache.cc
ceph/src/common/PriorityCache.h
ceph/src/common/Thread.h
ceph/src/common/WorkQueue.h
ceph/src/common/admin_socket.cc
ceph/src/common/admin_socket.h
ceph/src/common/ceph_context.cc
ceph/src/common/config_proxy.h
ceph/src/common/legacy_config_opts.h
ceph/src/common/options.cc
ceph/src/common/perf_counters.cc
ceph/src/common/perf_counters.h
ceph/src/common/safe_io.c
ceph/src/common/safe_io.h
ceph/src/common/scrub_types.h
ceph/src/common/secret.c
ceph/src/common/simple_cache.hpp
ceph/src/common/subsys.h
ceph/src/crimson/os/Transaction.h
ceph/src/crimson/os/cyan_store.cc
ceph/src/dmclock/CMakeLists.txt
ceph/src/global/global_init.cc
ceph/src/include/byteorder.h
ceph/src/include/ceph_fs.h
ceph/src/include/compat.h
ceph/src/include/config-h.in.cmake
ceph/src/include/denc.h
ceph/src/include/msgr.h
ceph/src/include/rados.h
ceph/src/include/rados/librados.hpp
ceph/src/include/rados/rados_types.hpp
ceph/src/include/rados/rgw_file.h
ceph/src/include/rbd/librbd.h
ceph/src/include/rbd/librbd.hpp
ceph/src/include/rbd_types.h
ceph/src/include/types.h
ceph/src/krbd.cc
ceph/src/kv/CMakeLists.txt
ceph/src/kv/RocksDBStore.cc
ceph/src/kv/rocksdb_cache/BinnedLRUCache.cc
ceph/src/librados/librados_cxx.cc
ceph/src/librbd/CMakeLists.txt
ceph/src/librbd/DeepCopyRequest.cc
ceph/src/librbd/ImageCtx.cc
ceph/src/librbd/ImageCtx.h
ceph/src/librbd/api/DiffIterate.cc
ceph/src/librbd/api/Image.cc
ceph/src/librbd/api/Image.h
ceph/src/librbd/api/Migration.cc
ceph/src/librbd/api/Mirror.cc
ceph/src/librbd/api/Mirror.h
ceph/src/librbd/api/Snapshot.cc
ceph/src/librbd/api/Trash.cc
ceph/src/librbd/api/Trash.h
ceph/src/librbd/cache/ObjectCacherObjectDispatch.cc
ceph/src/librbd/deep_copy/ObjectCopyRequest.cc
ceph/src/librbd/image/AttachChildRequest.cc
ceph/src/librbd/image/DetachChildRequest.cc
ceph/src/librbd/image/OpenRequest.cc
ceph/src/librbd/image/PreRemoveRequest.cc
ceph/src/librbd/image/PreRemoveRequest.h
ceph/src/librbd/image/RefreshRequest.cc
ceph/src/librbd/image/RemoveRequest.cc
ceph/src/librbd/image/RemoveRequest.h
ceph/src/librbd/io/CopyupRequest.cc
ceph/src/librbd/io/ImageRequestWQ.cc
ceph/src/librbd/io/ObjectRequest.cc
ceph/src/librbd/librbd.cc
ceph/src/librbd/operation/ObjectMapIterate.cc
ceph/src/librbd/operation/ResizeRequest.cc
ceph/src/librbd/operation/SnapshotCreateRequest.cc
ceph/src/librbd/operation/SnapshotRemoveRequest.cc
ceph/src/librbd/operation/SparsifyRequest.cc
ceph/src/librbd/operation/TrimRequest.cc
ceph/src/librbd/trash/RemoveRequest.cc [new file with mode: 0644]
ceph/src/librbd/trash/RemoveRequest.h [new file with mode: 0644]
ceph/src/mds/CInode.h
ceph/src/mds/InoTable.cc
ceph/src/mds/Locker.cc
ceph/src/mds/MDBalancer.cc
ceph/src/mds/MDCache.cc
ceph/src/mds/MDCache.h
ceph/src/mds/MDSContext.cc
ceph/src/mds/MDSRank.cc
ceph/src/mds/MDSRank.h
ceph/src/mds/SnapRealm.h
ceph/src/mds/locks.c
ceph/src/mds/mdstypes.h
ceph/src/messages/MBackfillReserve.h
ceph/src/messages/MMonSubscribe.h
ceph/src/mgr/ActivePyModules.cc
ceph/src/mgr/BaseMgrModule.cc
ceph/src/mgr/BaseMgrStandbyModule.cc
ceph/src/mgr/ClusterState.cc
ceph/src/mgr/ClusterState.h
ceph/src/mgr/DaemonHealthMetricCollector.cc
ceph/src/mgr/DaemonHealthMetricCollector.h
ceph/src/mgr/DaemonServer.cc
ceph/src/mgr/DaemonState.h
ceph/src/mgr/Mgr.cc
ceph/src/mgr/PyModuleRegistry.cc
ceph/src/mgr/PyOSDMap.cc
ceph/src/mon/CMakeLists.txt
ceph/src/mon/MonCap.cc
ceph/src/mon/MonClient.cc
ceph/src/mon/MonClient.h
ceph/src/mon/MonCommands.h
ceph/src/mon/MonMap.cc
ceph/src/mon/Monitor.cc
ceph/src/mon/MonitorDBStore.h
ceph/src/mon/OSDMonitor.cc
ceph/src/mon/OSDMonitor.h
ceph/src/mon/PGMap.cc
ceph/src/mount/CMakeLists.txt
ceph/src/mount/conf.cc [new file with mode: 0644]
ceph/src/mount/mount.ceph.c
ceph/src/mount/mount.ceph.h [new file with mode: 0644]
ceph/src/msg/async/ProtocolV1.cc
ceph/src/msg/async/ProtocolV2.cc
ceph/src/msg/async/frames_v2.h
ceph/src/msg/msg_types.h
ceph/src/msg/simple/Pipe.cc
ceph/src/msg/xio/XioMsg.h
ceph/src/os/CMakeLists.txt
ceph/src/os/ObjectStore.cc
ceph/src/os/ObjectStore.h
ceph/src/os/bluestore/Allocator.cc
ceph/src/os/bluestore/Allocator.h
ceph/src/os/bluestore/BitmapAllocator.cc
ceph/src/os/bluestore/BitmapAllocator.h
ceph/src/os/bluestore/BlueFS.cc
ceph/src/os/bluestore/BlueFS.h
ceph/src/os/bluestore/BlueStore.cc
ceph/src/os/bluestore/BlueStore.h
ceph/src/os/bluestore/KernelDevice.cc
ceph/src/os/bluestore/KernelDevice.h
ceph/src/os/bluestore/StupidAllocator.cc
ceph/src/os/bluestore/StupidAllocator.h
ceph/src/os/bluestore/bluefs_types.h
ceph/src/os/bluestore/bluestore_tool.cc
ceph/src/os/bluestore/bluestore_types.h
ceph/src/os/bluestore/fastbmap_allocator_impl.cc
ceph/src/os/bluestore/fastbmap_allocator_impl.h
ceph/src/os/filestore/DBObjectMap.h
ceph/src/os/filestore/FileStore.cc
ceph/src/os/filestore/HashIndex.cc
ceph/src/osd/DynamicPerfStats.h
ceph/src/osd/OSD.cc
ceph/src/osd/OSD.h
ceph/src/osd/OSDCap.cc
ceph/src/osd/OSDMap.cc
ceph/src/osd/OSDMap.h
ceph/src/osd/PG.cc
ceph/src/osd/PG.h
ceph/src/osd/PGBackend.cc
ceph/src/osd/PGBackend.h
ceph/src/osd/PGLog.cc
ceph/src/osd/PGLog.h
ceph/src/osd/PGPeeringEvent.h
ceph/src/osd/PrimaryLogPG.cc
ceph/src/osd/PrimaryLogPG.h
ceph/src/osd/ReplicatedBackend.cc
ceph/src/osd/osd_types.cc
ceph/src/osd/osd_types.h
ceph/src/pybind/ceph_volume_client.py
ceph/src/pybind/cephfs/cephfs.pyx
ceph/src/pybind/mgr/balancer/module.py
ceph/src/pybind/mgr/crash/module.py
ceph/src/pybind/mgr/dashboard/CMakeLists.txt
ceph/src/pybind/mgr/dashboard/HACKING.rst
ceph/src/pybind/mgr/dashboard/__init__.py
ceph/src/pybind/mgr/dashboard/controllers/__init__.py
ceph/src/pybind/mgr/dashboard/controllers/auth.py
ceph/src/pybind/mgr/dashboard/controllers/home.py [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/controllers/iscsi.py
ceph/src/pybind/mgr/dashboard/controllers/pool.py
ceph/src/pybind/mgr/dashboard/controllers/rgw.py
ceph/src/pybind/mgr/dashboard/controllers/saml2.py
ceph/src/pybind/mgr/dashboard/frontend/angular.json
ceph/src/pybind/mgr/dashboard/frontend/dist/2.23eee776b9ebe5035afa.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/3rdpartylicenses.txt [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/6.2177204066439fcd8170.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/7.a311be12e7802be9438f.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/8.0ff37488868257bf7364.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/9.f4b21c687db5d9cef117.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Mimic_Octopus2.jpg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Nautilus_Octopus.jpg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/loading.gif [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/logo-mini.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/notification-icons.png [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/assets/prometheus_logo.svg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/common.8a53d98b04768bd15706.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.03f9acb8077098945447.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/3rdpartylicenses.txt [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.3d63c004c315603efec1.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.05e89b87dac0b3fdcc5c.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.4a6a002d073ab0275cb2.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.383a20140e10eb51367c.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Mimic_Octopus2.jpg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Nautilus_Octopus.jpg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/loading.gif [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/logo-mini.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/notification-icons.png [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/prometheus_logo.svg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.8a53d98b04768bd15706.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/favicon.ico [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.35e77a38ca9d85c4e897.eot [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.78dcc9c4999659b8026a.svg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.89889688147bd7575d63.svg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.fa2772327f55d8198301.woff [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.4cca9699be2afd74460d.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.f31db31652a3fd9f4bca.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/prometheus_logo.074db273ef932a67d91b.svg [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.e449ada3d1974ef4aa64.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/scripts.fc88ef4a23399c760d0b.js [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.f5317b15474518dffebc.css [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/dist/favicon.ico [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.35e77a38ca9d85c4e897.eot [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.78dcc9c4999659b8026a.svg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.89889688147bd7575d63.svg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.fa2772327f55d8198301.woff [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/index.html [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/main.7ef9e458bdf2879bd531.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/polyfills.f31db31652a3fd9f4bca.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/prometheus_logo.074db273ef932a67d91b.svg [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/runtime.c2fa00b158659de6ccaa.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/scripts.fc88ef4a23399c760d0b.js [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/dist/styles.e201ff296d50970399c4.css [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts
ceph/src/pybind/mgr/dashboard/frontend/environment.build.js
ceph/src/pybind/mgr/dashboard/frontend/i18n.config.json [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/package-lock.json
ceph/src/pybind/mgr/dashboard/frontend/package.json
ceph/src/pybind/mgr/dashboard/frontend/src/app/app-routing.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/app.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/block.module.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.html [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.scss [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/pool-list/pool-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-form/rbd-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-list/rbd-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-chart/cephfs-chart.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-chart/cephfs-chart.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-chart/cephfs-chart.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/health/health.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-list/nfs-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-details/pool-details.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-details/pool-details.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-details/pool-details.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-form/pool-form.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/role-list/role-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/sso/sso-not-found/sso-not-found.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-list/user-list.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/core/not-found/not-found.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/locale.helper.ts [deleted file]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/iscsi.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.scss
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/language-selector/language-selector.component.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/language-selector/language-selector.component.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/constants/app.constants.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.html
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.spec.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.ts [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/module-status-guard.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-list.service.spec.ts
ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-list.service.ts
ceph/src/pybind/mgr/dashboard/frontend/src/environments/environment.tpl.ts
ceph/src/pybind/mgr/dashboard/frontend/src/locale/messages.en-US.xlf [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/frontend/src/main.ts
ceph/src/pybind/mgr/dashboard/frontend/src/styles.scss
ceph/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts
ceph/src/pybind/mgr/dashboard/module.py
ceph/src/pybind/mgr/dashboard/run-backend-api-tests.sh
ceph/src/pybind/mgr/dashboard/run-frontend-unittests.sh
ceph/src/pybind/mgr/dashboard/services/access_control.py
ceph/src/pybind/mgr/dashboard/services/iscsi_client.py
ceph/src/pybind/mgr/dashboard/tests/__init__.py
ceph/src/pybind/mgr/dashboard/tests/test_home.py [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/tests/test_iscsi.py
ceph/src/pybind/mgr/dashboard/tests/test_pool.py [new file with mode: 0644]
ceph/src/pybind/mgr/dashboard/tools.py
ceph/src/pybind/mgr/dashboard/tox.ini
ceph/src/pybind/mgr/devicehealth/module.py
ceph/src/pybind/mgr/k8sevents/README.md [new file with mode: 0644]
ceph/src/pybind/mgr/k8sevents/__init__.py [new file with mode: 0644]
ceph/src/pybind/mgr/k8sevents/module.py [new file with mode: 0644]
ceph/src/pybind/mgr/k8sevents/rbac_sample.yaml [new file with mode: 0644]
ceph/src/pybind/mgr/mgr_module.py
ceph/src/pybind/mgr/mgr_util.py
ceph/src/pybind/mgr/orchestrator_cli/module.py
ceph/src/pybind/mgr/pg_autoscaler/module.py
ceph/src/pybind/mgr/prometheus/module.py
ceph/src/pybind/mgr/rbd_support/module.py
ceph/src/pybind/mgr/restful/api/request.py
ceph/src/pybind/mgr/restful/common.py
ceph/src/pybind/mgr/telemetry/module.py
ceph/src/pybind/mgr/volumes/fs/purge_queue.py
ceph/src/pybind/mgr/volumes/fs/subvolspec.py
ceph/src/pybind/mgr/volumes/fs/subvolume.py
ceph/src/pybind/mgr/volumes/fs/volume.py
ceph/src/pybind/mgr/volumes/module.py
ceph/src/pybind/mgr/zabbix/module.py
ceph/src/pybind/mgr/zabbix/zabbix_template.xml
ceph/src/pybind/rados/rados.pyx
ceph/src/pybind/rbd/rbd.pyx
ceph/src/pybind/rgw/rgw.pyx
ceph/src/rgw/CMakeLists.txt
ceph/src/rgw/rgw_admin.cc
ceph/src/rgw/rgw_aio_throttle.cc
ceph/src/rgw/rgw_amqp.cc
ceph/src/rgw/rgw_amqp.h
ceph/src/rgw/rgw_arn.cc [new file with mode: 0644]
ceph/src/rgw/rgw_arn.h [new file with mode: 0644]
ceph/src/rgw/rgw_asio_frontend.cc
ceph/src/rgw/rgw_auth_s3.cc
ceph/src/rgw/rgw_basic_types.cc
ceph/src/rgw/rgw_basic_types.h
ceph/src/rgw/rgw_bucket.cc
ceph/src/rgw/rgw_bucket.h
ceph/src/rgw/rgw_common.cc
ceph/src/rgw/rgw_common.h
ceph/src/rgw/rgw_compression.cc
ceph/src/rgw/rgw_coroutine.cc
ceph/src/rgw/rgw_cr_rados.cc
ceph/src/rgw/rgw_cr_rados.h
ceph/src/rgw/rgw_data_sync.cc
ceph/src/rgw/rgw_file.cc
ceph/src/rgw/rgw_file.h
ceph/src/rgw/rgw_http_client.cc
ceph/src/rgw/rgw_http_client.h
ceph/src/rgw/rgw_iam_policy.cc
ceph/src/rgw/rgw_iam_policy.h
ceph/src/rgw/rgw_json_enc.cc
ceph/src/rgw/rgw_lc.cc
ceph/src/rgw/rgw_lc.h
ceph/src/rgw/rgw_main.cc
ceph/src/rgw/rgw_metadata.cc
ceph/src/rgw/rgw_notify.cc [new file with mode: 0644]
ceph/src/rgw/rgw_notify.h [new file with mode: 0644]
ceph/src/rgw/rgw_notify_event_type.cc [new file with mode: 0644]
ceph/src/rgw/rgw_notify_event_type.h [new file with mode: 0644]
ceph/src/rgw/rgw_object_lock.cc [new file with mode: 0644]
ceph/src/rgw/rgw_object_lock.h [new file with mode: 0644]
ceph/src/rgw/rgw_op.cc
ceph/src/rgw/rgw_op.h
ceph/src/rgw/rgw_perf_counters.cc
ceph/src/rgw/rgw_perf_counters.h
ceph/src/rgw/rgw_pubsub.cc
ceph/src/rgw/rgw_pubsub.h
ceph/src/rgw/rgw_pubsub_push.cc
ceph/src/rgw/rgw_pubsub_push.h
ceph/src/rgw/rgw_rados.cc
ceph/src/rgw/rgw_rados.h
ceph/src/rgw/rgw_realm_watcher.cc
ceph/src/rgw/rgw_rest.cc
ceph/src/rgw/rgw_rest.h
ceph/src/rgw/rgw_rest_pubsub.cc [new file with mode: 0644]
ceph/src/rgw/rgw_rest_pubsub.h [new file with mode: 0644]
ceph/src/rgw/rgw_rest_pubsub_common.cc [new file with mode: 0644]
ceph/src/rgw/rgw_rest_pubsub_common.h [new file with mode: 0644]
ceph/src/rgw/rgw_rest_role.cc
ceph/src/rgw/rgw_rest_s3.cc
ceph/src/rgw/rgw_rest_s3.h
ceph/src/rgw/rgw_rest_sts.cc
ceph/src/rgw/rgw_rest_sts.h
ceph/src/rgw/rgw_rest_user_policy.cc
ceph/src/rgw/rgw_sts.cc
ceph/src/rgw/rgw_sts.h
ceph/src/rgw/rgw_sync_log_trim.cc
ceph/src/rgw/rgw_sync_module.h
ceph/src/rgw/rgw_sync_module_es.cc
ceph/src/rgw/rgw_sync_module_pubsub.cc
ceph/src/rgw/rgw_sync_module_pubsub.h
ceph/src/rgw/rgw_sync_module_pubsub_rest.cc
ceph/src/rgw/rgw_sync_module_pubsub_rest.h
ceph/src/rgw/rgw_user.cc
ceph/src/rgw/rgw_website.cc
ceph/src/rgw/rgw_website.h
ceph/src/rgw/rgw_xml_enc.cc
ceph/src/rgw/rgw_zone.cc
ceph/src/script/ceph-backport.sh
ceph/src/seastar/fmt/.travis.yml
ceph/src/seastar/fmt/CMakeLists.txt
ceph/src/seastar/fmt/README.rst
ceph/src/seastar/fmt/doc/api.rst
ceph/src/seastar/fmt/doc/build.py
ceph/src/seastar/fmt/doc/index.rst
ceph/src/seastar/fmt/doc/usage.rst
ceph/src/seastar/fmt/include/fmt/chrono.h [new file with mode: 0644]
ceph/src/seastar/fmt/include/fmt/color.h
ceph/src/seastar/fmt/include/fmt/core.h
ceph/src/seastar/fmt/include/fmt/format-inl.h
ceph/src/seastar/fmt/include/fmt/format.h
ceph/src/seastar/fmt/include/fmt/locale.h [new file with mode: 0644]
ceph/src/seastar/fmt/include/fmt/ostream.h
ceph/src/seastar/fmt/include/fmt/posix.h
ceph/src/seastar/fmt/include/fmt/printf.h
ceph/src/seastar/fmt/include/fmt/time.h
ceph/src/seastar/fmt/src/format.cc
ceph/src/seastar/fmt/support/AndroidManifest.xml
ceph/src/seastar/fmt/support/build.gradle
ceph/src/seastar/fmt/support/cmake/cxx14.cmake
ceph/src/seastar/fmt/support/cmake/fmt.pc.in [new file with mode: 0644]
ceph/src/seastar/fmt/test/CMakeLists.txt
ceph/src/seastar/fmt/test/chrono-test.cc [new file with mode: 0644]
ceph/src/seastar/fmt/test/core-test.cc
ceph/src/seastar/fmt/test/custom-formatter-test.cc
ceph/src/seastar/fmt/test/format-impl-test.cc
ceph/src/seastar/fmt/test/format-test.cc
ceph/src/seastar/fmt/test/gtest-extra-test.cc
ceph/src/seastar/fmt/test/gtest-extra.h
ceph/src/seastar/fmt/test/locale-test.cc [new file with mode: 0644]
ceph/src/seastar/fmt/test/mock-allocator.h
ceph/src/seastar/fmt/test/ostream-test.cc
ceph/src/seastar/fmt/test/posix-mock-test.cc
ceph/src/seastar/fmt/test/posix-test.cc
ceph/src/seastar/fmt/test/printf-test.cc
ceph/src/seastar/fmt/test/ranges-test.cc
ceph/src/seastar/fmt/test/time-test.cc
ceph/src/seastar/fmt/test/util.h
ceph/src/telemetry/server/ceph_telemetry/app.py
ceph/src/telemetry/server/ceph_telemetry/rest/device.py [new file with mode: 0644]
ceph/src/test/cli-integration/balancer/misplaced.t [new file with mode: 0644]
ceph/src/test/cli/rbd/help.t
ceph/src/test/cls_rbd/test_cls_rbd.cc
ceph/src/test/common/test_bloom_filter.cc
ceph/src/test/common/test_time.cc
ceph/src/test/fs/test_trim_caps.cc
ceph/src/test/libcephfs/access.cc
ceph/src/test/libcephfs/acl.cc
ceph/src/test/libcephfs/caps.cc
ceph/src/test/libcephfs/ceph_pthread_self.h [new file with mode: 0644]
ceph/src/test/libcephfs/deleg.cc
ceph/src/test/libcephfs/flock.cc
ceph/src/test/libcephfs/multiclient.cc
ceph/src/test/libcephfs/reclaim.cc
ceph/src/test/libcephfs/recordlock.cc
ceph/src/test/libcephfs/test.cc
ceph/src/test/librados/aio.cc
ceph/src/test/librados_test_stub/LibradosTestStub.cc
ceph/src/test/librbd/CMakeLists.txt
ceph/src/test/librbd/fsx.cc
ceph/src/test/librbd/image/test_mock_PreRemoveRequest.cc
ceph/src/test/librbd/image/test_mock_RefreshRequest.cc
ceph/src/test/librbd/mock/MockImageCtx.h
ceph/src/test/librbd/object_map/test_mock_LockRequest.cc
ceph/src/test/librbd/test_Trash.cc
ceph/src/test/librbd/test_internal.cc
ceph/src/test/librbd/test_mirroring.cc
ceph/src/test/librbd/trash/test_mock_RemoveRequest.cc [new file with mode: 0644]
ceph/src/test/librgw_file.cc
ceph/src/test/librgw_file_aw.cc
ceph/src/test/librgw_file_gp.cc
ceph/src/test/librgw_file_marker.cc
ceph/src/test/librgw_file_nfsns.cc
ceph/src/test/mon/CMakeLists.txt
ceph/src/test/mon/test_log_rss_usage.cc [new file with mode: 0644]
ceph/src/test/mon/test_mon_memory_target.cc [new file with mode: 0644]
ceph/src/test/mon/test_mon_rss_usage.cc [new file with mode: 0644]
ceph/src/test/objectstore/Allocator_test.cc
ceph/src/test/objectstore/store_test.cc
ceph/src/test/objectstore/test_bluestore_types.cc
ceph/src/test/osd/TestOSDMap.cc
ceph/src/test/osd/TestPGLog.cc
ceph/src/test/pybind/test_rbd.py
ceph/src/test/rbd_mirror/CMakeLists.txt
ceph/src/test/rbd_mirror/image_deleter/test_mock_RemoveRequest.cc [deleted file]
ceph/src/test/rbd_mirror/image_deleter/test_mock_TrashMoveRequest.cc
ceph/src/test/rbd_mirror/image_deleter/test_mock_TrashRemoveRequest.cc [new file with mode: 0644]
ceph/src/test/rgw/CMakeLists.txt
ceph/src/test/rgw/amqp_mock.cc
ceph/src/test/rgw/amqp_mock.h
ceph/src/test/rgw/rgw_multi/multisite.py
ceph/src/test/rgw/rgw_multi/tests.py
ceph/src/test/rgw/rgw_multi/tests_ps.py
ceph/src/test/rgw/rgw_multi/zone_ps.py
ceph/src/test/rgw/test_multi.md
ceph/src/test/rgw/test_multi.py
ceph/src/test/rgw/test_rgw_amqp.cc
ceph/src/test/rgw/test_rgw_arn.cc [new file with mode: 0644]
ceph/src/test/rgw/test_rgw_dmclock_scheduler.cc
ceph/src/test/rgw/test_rgw_iam_policy.cc
ceph/src/test/rgw/test_rgw_xml.cc
ceph/src/tools/ceph_objectstore_tool.cc
ceph/src/tools/cephfs/Resetter.cc
ceph/src/tools/cephfs/cephfs-shell
ceph/src/tools/rados/rados.cc
ceph/src/tools/rbd/action/MirrorPool.cc
ceph/src/tools/rbd_ggate/main.cc
ceph/src/tools/rbd_mirror/CMakeLists.txt
ceph/src/tools/rbd_mirror/ImageDeleter.cc
ceph/src/tools/rbd_mirror/ImageReplayer.cc
ceph/src/tools/rbd_mirror/PoolReplayer.cc
ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc [deleted file]
ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.h [deleted file]
ceph/src/tools/rbd_mirror/image_deleter/TrashMoveRequest.cc
ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.cc [new file with mode: 0644]
ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.h [new file with mode: 0644]
ceph/src/tools/rbd_nbd/CMakeLists.txt
ceph/src/tools/rbd_nbd/nbd-netlink.h [new file with mode: 0644]
ceph/src/tools/rbd_nbd/rbd-nbd.cc
ceph/src/tools/rebuild_mondb.cc

index bcd25ac680651bcb56a4ff0f4b2d92109640f5ef..69a755f04b5061385b4f783dd6eadf6b189fd59c 100644 (file)
@@ -30,8 +30,23 @@ This was just a quick overview.  More information for contributors is available
 https://raw.githubusercontent.com/ceph/ceph/master/SubmittingPatches.rst
 
 -->
-
+## Checklist
 - [ ] References tracker ticket
 - [ ] Updates documentation if necessary
 - [ ] Includes tests for new functionality or reproducer for bug
 
+---
+
+<details>
+<summary>Show available Jenkins commands</summary>
+
+- `jenkins retest this please`
+- `jenkins test make check`
+- `jenkins test make check arm64`
+- `jenkins test submodules`
+- `jenkins test dashboard`
+- `jenkins test dashboard backend`
+- `jenkins test docs`
+- `jenkins render docs`
+
+</details>
index 4e187f261bc4a22c03c3d35115092bca46036fb7..1e9ebfbb4128fe2d29df6ec836ec787f52698b25 100644 (file)
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.5.1)
 
 project(ceph CXX C ASM)
-set(VERSION 14.2.4)
+set(VERSION 14.2.5)
 
 if(POLICY CMP0028)
   cmake_policy(SET CMP0028 NEW)
@@ -210,20 +210,33 @@ endif()
 
 find_package(Backtrace)
 
+# remote block storage
+option(WITH_RBD "Remote block storage is here" ON)
+
 if(LINUX)
   find_package(udev REQUIRED)
   set(HAVE_UDEV ${UDEV_FOUND})
   find_package(blkid REQUIRED)
   set(HAVE_BLKID ${BLKID_FOUND})
+  if(WITH_RBD)
+    find_package(genl REQUIRED)
+    set(HAVE_GENL $GENL_FOUND)
+  endif()
+  find_package(keyutils REQUIRED)
+  set(HAVE_KEYUTILS ${KEYUTILS_FOUND})
 elseif(FREEBSD)
   set(HAVE_UDEV OFF)
   set(HAVE_LIBAIO OFF)
   set(HAVE_BLKID OFF)
+  set(HAVE_GENL OFF)
+  set(HAVE_KEYUTILS OFF)
 else()
   set(HAVE_UDEV OFF)
   message(STATUS "Not using udev")
   set(HAVE_BLKID OFF)
   message(STATUS "Not using BLKID")
+  set(HAVE_GENL OFF)
+  message(STATUS "Not using GENL")
 endif(LINUX)
 
 option(WITH_OPENLDAP "OPENLDAP is here" ON)
@@ -267,11 +280,7 @@ if(WITH_BLUESTORE)
   endif()
 endif()
 
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64|aarch64")
-  option(WITH_SPDK "Enable SPDK" ON)
-else()
-  option(WITH_SPDK "Enable SPDK" OFF)
-endif()
+option(WITH_SPDK "Enable SPDK" OFF)
 if(WITH_SPDK)
   if(NOT WITH_BLUESTORE)
     message(SEND_ERROR "Please enable WITH_BLUESTORE for using SPDK")
@@ -311,15 +320,19 @@ option(WITH_LIBCEPHFS "libcephfs client library" ON)
 # key-value store
 option(WITH_KVS "Key value store is here" ON)
 
-# remote block storage
-option(WITH_RBD "Remote block storage is here" ON)
-
 # KERNEL remote block storage
 option(WITH_KRBD "Kernel Remote block storage is here" ON)
 
 if(WITH_KRBD AND WITHOUT_RBD)
   message(FATAL_ERROR "Cannot have WITH_KRBD with WITH_RBD.")
 endif()
+if(LINUX)
+  if(WITH_LIBCEPHFS OR WITH_KRBD)
+    # keyutils is only used when talking to the Linux Kernel key store 
+    find_package(keyutils REQUIRED)
+    set(HAVE_KEYUTILS ${KEYUTILS_FOUND})
+  endif()
+endif()
 
 option(WITH_LEVELDB "LevelDB is here" ON)
 if(WITH_LEVELDB)
@@ -386,10 +399,6 @@ else()
   set(EXE_LINKER_USE_PIE ${ENABLE_SHARED})
 endif()
 
-if(WITH_LIBCEPHFS OR WITH_KRBD)
-  find_package(keyutils REQUIRED)
-endif()
-
 find_package(CURL REQUIRED)
 set(CMAKE_REQUIRED_INCLUDES ${CURL_INCLUDE_DIRS})
 set(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBRARIES})
@@ -681,6 +690,9 @@ if(WITH_SYSTEM_NPM)
     message(FATAL_ERROR "Can't find npm.")
   endif()
 endif()
+set(DASHBOARD_FRONTEND_LANGS "" CACHE STRING
+  "List of comma separated ceph-dashboard frontend languages to build. \
+  Use value `ALL` to build all languages")
 
 include_directories(SYSTEM ${PROJECT_BINARY_DIR}/include)
 
index 131801d14de753699596c81382dce27ffa4e9f3e..d4fb7f9810ad81d09e9b5564694b8834abedf8a8 100644 (file)
@@ -1,4 +1,13 @@
->=14.2.2
+14.2.4
+------
+
+* In the Zabbix Mgr Module there was a typo in the key being send
+  to Zabbix for PGs in backfill_wait state. The key that was sent
+  was 'wait_backfill' and the correct name is 'backfill_wait'.
+  Update your Zabbix template accordingly so that it accepts the
+  new key being send to Zabbix.
+
+14.2.3
 --------
 
 * Nautilus-based librbd clients can now open images on Jewel clusters.
@@ -8,6 +17,12 @@
   multiply your current "objecter_inflight_ops" and
   "objecter_inflight_op_bytes" paramaeters by the old
   "num_rados_handles" to get the same throttle behavior.
+  
+* The ``bluestore_no_per_pool_stats_tolerance`` config option has been
+  replaced with ``bluestore_fsck_error_on_no_per_pool_stats``
+  (default: false).  The overall default behavior has not changed:
+  fsck will warn but not fail on legacy stores, and repair will
+  convert to per-pool stats.
 
 14.2.2
 ------
   bucket reshard in earlier versions of RGW. One subcommand lists such
   objects and the other deletes them. Read the troubleshooting section
   of the dynamic resharding docs for details.
+
+14.2.5
+------
+
+* The telemetry module now has a 'device' channel, enabled by default, that
+  will report anonymized hard disk and SSD health metrics to telemetry.ceph.com
+  in order to build and improve device failure prediction algorithms.  Because
+  the content of telemetry reports has changed, you will need to either re-opt-in
+  with::
+
+    ceph telemetry on
+
+  You can view exactly what information will be reported first with::
+
+    ceph telemetry show
+    ceph telemetry show device   # specifically show the device channel
+
+  If you are not comfortable sharing device metrics, you can disable that
+  channel first before re-opting-in:
+
+    ceph config set mgr mgr/telemetry/channel_crash false
+    ceph telemetry on
+
+* The telemetry module now reports more information about CephFS file systems,
+  including:
+
+    - how many MDS daemons (in total and per file system)
+    - which features are (or have been) enabled
+    - how many data pools
+    - approximate file system age (year + month of creation)
+    - how many files, bytes, and snapshots
+    - how much metadata is being cached
+
+  We have also added:
+
+    - which Ceph release the monitors are running
+    - whether msgr v1 or v2 addresses are used for the monitors
+    - whether IPv4 or IPv6 addresses are used for the monitors
+    - whether RADOS cache tiering is enabled (and which mode)
+    - whether pools are replicated or erasure coded, and
+      which erasure code profile plugin and parameters are in use
+    - how many hosts are in the cluster, and how many hosts have each type of daemon
+    - whether a separate OSD cluster network is being used
+    - how many RBD pools and images are in the cluster, and how many pools have RBD mirroring enabled
+    - how many RGW daemons, zones, and zonegroups are present; which RGW frontends are in use
+    - aggregate stats about the CRUSH map, like which algorithms are used, how big buckets are, how many rules are defined, and what tunables are in use
+
+  If you had telemetry enabled, you will need to re-opt-in with::
+
+    ceph telemetry on
+
+  You can view exactly what information will be reported first with::
+
+    ceph telemetry show        # see everything
+    ceph telemetry show basic  # basic cluster info (including all of the new info)
+
+* A health warning is now generated if the average osd heartbeat ping
+  time exceeds a configurable threshold for any of the intervals
+  computed.  The OSD computes 1 minute, 5 minute and 15 minute
+  intervals with average, minimum and maximum values.  New configuration
+  option ``mon_warn_on_slow_ping_ratio`` specifies a percentage of
+  ``osd_heartbeat_grace`` to determine the threshold.  A value of zero
+  disables the warning.  New configuration option
+ ``mon_warn_on_slow_ping_time`` specified in milliseconds over-rides the
+  computed value, causes a warning
+  when OSD heartbeat pings take longer than the specified amount.
+  New admin command ``ceph daemon mgr.# dump_osd_network [threshold]`` command will
+  list all connections with a ping time longer than the specified threshold or
+  value determined by the config options, for the average for any of the 3 intervals.
+  New admin command ``ceph daemon osd.# dump_osd_network [threshold]`` will
+  do the same but only including heartbeats initiated by the specified OSD.
+
+* New OSD daemon command dump_recovery_reservations which reveals the
+  recovery locks held (in_progress) and waiting in priority queues.
+
+* New OSD daemon command dump_scrub_reservations which reveals the
+  scrub reservations that are held for local (primary) and remote (replica) PGs.
index 6e94d459d3f5d265ca8c24fa04b4c52b99093078..7a23c7d4b9f11f1bbfefd53490f7550180a99672 100755 (executable)
@@ -20,7 +20,8 @@ if command -v dpkg >/dev/null; then
         exit 1
     fi
 elif command -v yum >/dev/null; then
-    for package in python-devel python-pip python-virtualenv doxygen ditaa ant libxml2-devel libxslt-devel Cython graphviz; do
+    python_package="python$(rpm --eval '%{python3_pkgversion}')"
+    for package in "$python_package"-devel "$python_package"-pip "$python_package"-virtualenv doxygen ditaa ant libxml2-devel libxslt-devel "$python_package"-Cython graphviz; do
        if ! rpm -q --whatprovides $package >/dev/null ; then
                missing="${missing:+$missing }$package"
        fi
@@ -57,7 +58,7 @@ cd build-doc
 [ -z "$vdir" ] && vdir="$TOPDIR/build-doc/virtualenv"
 
 if [ ! -e $vdir ]; then
-    virtualenv --system-site-packages $vdir
+    virtualenv --python=python3 --system-site-packages $vdir
 fi
 $vdir/bin/pip install --quiet -r $TOPDIR/admin/doc-requirements.txt
 
index 0939b68133435eb2a9ac60c12d3f48a441a32398..0af3bde9220c400679b20880b5bb2c4c13488cda 100644 (file)
@@ -1,7 +1,4 @@
-Sphinx == 1.8.3
+Sphinx == 2.1.2
 git+https://github.com/ceph/sphinx-ditaa.git@py3#egg=sphinx-ditaa
-# newer versions of breathe will require Sphinx >= 2.0.0 and are Python3 only
-breathe==4.12.0
-# 4.2 is not yet release at the time of writing, to address CVE-2017-18342,
-# we have to use its beta release.
-pyyaml>=4.2b1
+breathe == 4.13.1
+pyyaml >= 5.1.2
index 116118724e0d21a493793b1567919e911f83a3a1..8f05680d63f15b1eee790dcac30dc1031c7c4c33 100644 (file)
@@ -1,7 +1,7 @@
 # Contributor: John Coyle <dx9err@gmail.com>
 # Maintainer: John Coyle <dx9err@gmail.com>
 pkgname=ceph
-pkgver=14.2.4
+pkgver=14.2.5
 pkgrel=0
 pkgdesc="Ceph is a distributed object store and file system"
 pkgusers="ceph"
@@ -64,7 +64,7 @@ makedepends="
        xmlstarlet
        yasm
 "
-source="ceph-14.2.4.tar.bz2"
+source="ceph-14.2.5.tar.bz2"
 subpackages="
        $pkgname-base
        $pkgname-common
@@ -117,7 +117,7 @@ _sysconfdir=/etc
 _udevrulesdir=/etc/udev/rules.d
 _python_sitelib=/usr/lib/python2.7/site-packages
 
-builddir=$srcdir/ceph-14.2.4
+builddir=$srcdir/ceph-14.2.5
 
 build() {
        export CEPH_BUILD_VIRTUALENV=$builddir
index 4b93d8052e698ddc5780c7d5c568de8897f4ff38..e6ad065e9bd5027e857aff9bff94c1cae04c2f0a 100644 (file)
@@ -22,6 +22,7 @@
 # bcond syntax!
 #################################################################################
 %bcond_with make_check
+%bcond_without ceph_test_package
 %ifarch s390 s390x
 %bcond_with tcmalloc
 %else
@@ -29,7 +30,6 @@
 %endif
 %if 0%{?fedora} || 0%{?rhel}
 %bcond_without selinux
-%bcond_without ceph_test_package
 %bcond_without cephfs_java
 %bcond_without lttng
 %bcond_without libradosstriper
@@ -39,7 +39,6 @@
 %endif
 %if 0%{?suse_version}
 %bcond_with selinux
-%bcond_with ceph_test_package
 %bcond_with cephfs_java
 %bcond_with amqp_endpoint
 #Compat macro for new _fillupdir macro introduced in Nov 2017
@@ -86,6 +85,7 @@
 %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
 %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
 %{!?python3_pkgversion: %global python3_pkgversion 3}
+%{!?python3_version_nodots: %global python3_version_nodots 3}
 %{!?python3_version: %global python3_version 3}
 # define _python_buildid macro which will expand to the empty string when
 # building with python2
 # main package definition
 #################################################################################
 Name:          ceph
-Version:       14.2.4
+Version:       14.2.5
 Release:       0%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:         2
@@ -117,7 +117,7 @@ License:    LGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and
 Group:         System/Filesystems
 %endif
 URL:           http://ceph.com/
-Source0:       %{?_remote_tarball_prefix}ceph-14.2.4.tar.bz2
+Source0:       %{?_remote_tarball_prefix}ceph-14.2.5.tar.bz2
 %if 0%{?suse_version}
 # _insert_obs_source_lines_here
 ExclusiveArch:  x86_64 aarch64 ppc64le s390x
@@ -149,7 +149,11 @@ BuildRequires:     fuse-devel
 %if 0%{?rhel} == 7
 # devtoolset offers newer make and valgrind-devel, but the old ones are good
 # enough.
+%ifarch x86_64
+BuildRequires: devtoolset-8-gcc-c++ >= 8.2.1
+%else
 BuildRequires: devtoolset-7-gcc-c++ >= 7.3.1-5.13
+%endif
 %else
 BuildRequires: gcc-c++
 %endif
@@ -166,14 +170,16 @@ BuildRequires:    leveldb-devel > 1.2
 BuildRequires: libaio-devel
 BuildRequires: libblkid-devel >= 2.17
 BuildRequires: libcurl-devel
+BuildRequires: libcap-ng-devel
 BuildRequires: libudev-devel
+BuildRequires: libnl3-devel
 BuildRequires: liboath-devel
 BuildRequires: libtool
 BuildRequires: libxml2-devel
-BuildRequires: libuuid-devel
 BuildRequires: make
 BuildRequires: ncurses-devel
 BuildRequires: parted
+BuildRequires: patch
 BuildRequires: perl
 BuildRequires: pkgconfig
 BuildRequires:  procps
@@ -194,6 +200,7 @@ BuildRequires:  librabbitmq-devel
 %endif
 %if 0%{with make_check}
 BuildRequires:  jq
+BuildRequires: libuuid-devel
 BuildRequires: python%{_python_buildid}-bcrypt
 BuildRequires: python%{_python_buildid}-coverage
 BuildRequires: python%{_python_buildid}-nose
@@ -228,6 +235,7 @@ BuildRequires:  pkgconfig(systemd)
 BuildRequires: systemd-rpm-macros
 %{?systemd_requires}
 PreReq:                %fillup_prereq
+BuildRequires: fdupes
 BuildRequires: net-tools
 BuildRequires: libbz2-devel
 BuildRequires: mozilla-nss-devel
@@ -264,7 +272,11 @@ BuildRequires:     python2-Cython
 %endif
 BuildRequires: python%{python3_pkgversion}-devel
 BuildRequires: python%{python3_pkgversion}-setuptools
+%if 0%{?rhel}
+BuildRequires: python%{python3_version_nodots}-Cython
+%else
 BuildRequires: python%{python3_pkgversion}-Cython
+%endif
 BuildRequires: python%{_python_buildid}-prettytable
 BuildRequires: python%{_python_buildid}-sphinx
 BuildRequires: lz4-devel >= 1.7
@@ -443,6 +455,7 @@ Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-ssh = %{_epoch_prefix}%{version}-%{release}
 %endif
 %if 0%{?rhel} == 7
@@ -533,6 +546,18 @@ Requires:       python%{_python_buildid}-kubernetes
 ceph-mgr-rook is a ceph-mgr plugin for orchestration functions using
 a Rook backend.
 
+%package mgr-k8sevents
+BuildArch:      noarch
+Summary:        Ceph Manager plugin to orchestrate ceph-events to kubernetes' events API
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{_python_buildid}-kubernetes
+%description mgr-k8sevents
+ceph-mgr-k8sevents is a ceph-mgr plugin that sends every ceph-events
+to kubernetes' events API
+
 %package mgr-ssh
 Summary:        ceph-mgr ssh module
 BuildArch:     noarch
@@ -705,6 +730,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librgw2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rgw}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rgw
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -718,7 +744,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librgw2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-rgw = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rgw}
 %if 0%{without python2}
 Provides:      python-rgw = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:     python-rgw < %{_epoch_prefix}%{version}-%{release}
@@ -734,6 +760,7 @@ Summary:    Python 2 libraries for the RADOS object store
 Group:         Development/Libraries/Python
 %endif
 Requires:      librados2 = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rados}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rados
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -747,7 +774,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      python%{python3_pkgversion}
 Requires:      librados2 = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rados}
 %if 0%{without python2}
 Provides:      python-rados = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:      python-rados < %{_epoch_prefix}%{version}-%{release}
@@ -825,6 +852,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librbd1 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rbd}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rbd
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -838,6 +866,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librbd1 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rbd}
 Provides:      python3-rbd = %{_epoch_prefix}%{version}-%{release}
 %if 0%{without python2}
 Provides:      python-rbd = %{_epoch_prefix}%{version}-%{release}
@@ -886,6 +915,7 @@ Group:              Development/Libraries/Python
 Requires:      libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-cephfs}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-cephfs
 This package contains Python 2 libraries for interacting with Cephs distributed
@@ -900,7 +930,7 @@ Group:              Development/Libraries/Python
 Requires:      libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-cephfs = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-cephfs}
 %if 0%{without python2}
 Provides:      python-cephfs = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:     python-cephfs < %{_epoch_prefix}%{version}-%{release}
@@ -927,7 +957,7 @@ Summary:    Python 3 utility libraries for Ceph CLI
 %if 0%{?suse_version}
 Group:         Development/Libraries/Python
 %endif
-Provides:   python3-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse}
 %description -n python%{python3_pkgversion}-ceph-argparse
 This package contains types and routines for Python 3 used by the Ceph CLI as
 well as the RESTful interface. These have to do with querying the daemons for
@@ -1075,7 +1105,7 @@ This package provides Ceph’s default alerts for Prometheus.
 # common
 #################################################################################
 %prep
-%autosetup -p1 -n ceph-14.2.4
+%autosetup -p1 -n ceph-14.2.5
 
 %build
 # LTO can be enabled as soon as the following GCC bug is fixed:
@@ -1083,7 +1113,7 @@ This package provides Ceph’s default alerts for Prometheus.
 %define _lto_cflags %{nil}
 
 %if 0%{?rhel} == 7
-. /opt/rh/devtoolset-7/enable
+. /opt/rh/devtoolset-8/enable
 %endif
 
 %if 0%{with cephfs_java}
@@ -1116,7 +1146,7 @@ free -h
 echo "System limits:"
 ulimit -a
 if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then
-    mem_per_process=1800
+    mem_per_process=2500
     max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p")
     max_jobs="$(($max_mem / $mem_per_process))"
     test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits"
@@ -1261,7 +1291,10 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
 %py3_compile %{buildroot}%{python3_sitelib}
 # prometheus alerts
 install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/SUSE/default_rules/ceph_default_alerts.yml
+# hardlink duplicate files under /usr to save space
+%fdupes %{buildroot}%{_prefix}
 %endif
+
 %if 0%{?rhel} == 8
 %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}
 %endif
@@ -1644,6 +1677,19 @@ if [ $1 -eq 1 ] ; then
     /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
 fi
 
+%files mgr-k8sevents
+%{_datadir}/ceph/mgr/k8sevents
+
+%post mgr-k8sevents
+if [ $1 -eq 1 ] ; then
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
+fi
+
+%postun mgr-k8sevents
+if [ $1 -eq 1 ] ; then
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
+fi
+
 %files mgr-ssh
 %{_datadir}/ceph/mgr/ssh
 
@@ -1903,6 +1949,7 @@ fi
 %if %{with lttng}
 %{_libdir}/librados_tp.so.*
 %endif
+%dir %{_sysconfdir}/ceph
 
 %post -n librados2 -p /sbin/ldconfig
 
@@ -1979,8 +2026,8 @@ fi
 %{_libdir}/librgw.so.*
 %{_libdir}/librgw_admin_user.so.*
 %if %{with lttng}
-%{_libdir}/librgw_op_tp.so*
-%{_libdir}/librgw_rados_tp.so*
+%{_libdir}/librgw_op_tp.so.*
+%{_libdir}/librgw_rados_tp.so.*
 %endif
 
 %post -n librgw2 -p /sbin/ldconfig
@@ -1994,6 +2041,10 @@ fi
 %{_includedir}/rados/rgw_file.h
 %{_libdir}/librgw.so
 %{_libdir}/librgw_admin_user.so
+%if %{with lttng}
+%{_libdir}/librgw_op_tp.so
+%{_libdir}/librgw_rados_tp.so
+%endif
 
 %if 0%{with python2}
 %files -n python-rgw
@@ -2017,6 +2068,7 @@ fi
 
 %files -n libcephfs2
 %{_libdir}/libcephfs.so.*
+%dir %{_sysconfdir}/ceph
 
 %post -n libcephfs2 -p /sbin/ldconfig
 
index 734542815756d37bcb995ba55bdfd8716cbeb4f2..bcf706d18ec691c815b900fbe1c709cf9a9173a9 100644 (file)
@@ -22,6 +22,7 @@
 # bcond syntax!
 #################################################################################
 %bcond_with make_check
+%bcond_without ceph_test_package
 %ifarch s390 s390x
 %bcond_with tcmalloc
 %else
@@ -29,7 +30,6 @@
 %endif
 %if 0%{?fedora} || 0%{?rhel}
 %bcond_without selinux
-%bcond_without ceph_test_package
 %bcond_without cephfs_java
 %bcond_without lttng
 %bcond_without libradosstriper
@@ -39,7 +39,6 @@
 %endif
 %if 0%{?suse_version}
 %bcond_with selinux
-%bcond_with ceph_test_package
 %bcond_with cephfs_java
 %bcond_with amqp_endpoint
 #Compat macro for new _fillupdir macro introduced in Nov 2017
@@ -86,6 +85,7 @@
 %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
 %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
 %{!?python3_pkgversion: %global python3_pkgversion 3}
+%{!?python3_version_nodots: %global python3_version_nodots 3}
 %{!?python3_version: %global python3_version 3}
 # define _python_buildid macro which will expand to the empty string when
 # building with python2
@@ -149,7 +149,11 @@ BuildRequires:     fuse-devel
 %if 0%{?rhel} == 7
 # devtoolset offers newer make and valgrind-devel, but the old ones are good
 # enough.
+%ifarch x86_64
+BuildRequires: devtoolset-8-gcc-c++ >= 8.2.1
+%else
 BuildRequires: devtoolset-7-gcc-c++ >= 7.3.1-5.13
+%endif
 %else
 BuildRequires: gcc-c++
 %endif
@@ -166,14 +170,16 @@ BuildRequires:    leveldb-devel > 1.2
 BuildRequires: libaio-devel
 BuildRequires: libblkid-devel >= 2.17
 BuildRequires: libcurl-devel
+BuildRequires: libcap-ng-devel
 BuildRequires: libudev-devel
+BuildRequires: libnl3-devel
 BuildRequires: liboath-devel
 BuildRequires: libtool
 BuildRequires: libxml2-devel
-BuildRequires: libuuid-devel
 BuildRequires: make
 BuildRequires: ncurses-devel
 BuildRequires: parted
+BuildRequires: patch
 BuildRequires: perl
 BuildRequires: pkgconfig
 BuildRequires:  procps
@@ -194,6 +200,7 @@ BuildRequires:  librabbitmq-devel
 %endif
 %if 0%{with make_check}
 BuildRequires:  jq
+BuildRequires: libuuid-devel
 BuildRequires: python%{_python_buildid}-bcrypt
 BuildRequires: python%{_python_buildid}-coverage
 BuildRequires: python%{_python_buildid}-nose
@@ -228,6 +235,7 @@ BuildRequires:  pkgconfig(systemd)
 BuildRequires: systemd-rpm-macros
 %{?systemd_requires}
 PreReq:                %fillup_prereq
+BuildRequires: fdupes
 BuildRequires: net-tools
 BuildRequires: libbz2-devel
 BuildRequires: mozilla-nss-devel
@@ -264,7 +272,11 @@ BuildRequires:     python2-Cython
 %endif
 BuildRequires: python%{python3_pkgversion}-devel
 BuildRequires: python%{python3_pkgversion}-setuptools
+%if 0%{?rhel}
+BuildRequires: python%{python3_version_nodots}-Cython
+%else
 BuildRequires: python%{python3_pkgversion}-Cython
+%endif
 BuildRequires: python%{_python_buildid}-prettytable
 BuildRequires: python%{_python_buildid}-sphinx
 BuildRequires: lz4-devel >= 1.7
@@ -443,6 +455,7 @@ Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release}
+Recommends:    ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
 Recommends:    ceph-mgr-ssh = %{_epoch_prefix}%{version}-%{release}
 %endif
 %if 0%{?rhel} == 7
@@ -533,6 +546,18 @@ Requires:       python%{_python_buildid}-kubernetes
 ceph-mgr-rook is a ceph-mgr plugin for orchestration functions using
 a Rook backend.
 
+%package mgr-k8sevents
+BuildArch:      noarch
+Summary:        Ceph Manager plugin to orchestrate ceph-events to kubernetes' events API
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{_python_buildid}-kubernetes
+%description mgr-k8sevents
+ceph-mgr-k8sevents is a ceph-mgr plugin that sends every ceph-events
+to kubernetes' events API
+
 %package mgr-ssh
 Summary:        ceph-mgr ssh module
 BuildArch:     noarch
@@ -705,6 +730,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librgw2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rgw}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rgw
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -718,7 +744,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librgw2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-rgw = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rgw}
 %if 0%{without python2}
 Provides:      python-rgw = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:     python-rgw < %{_epoch_prefix}%{version}-%{release}
@@ -734,6 +760,7 @@ Summary:    Python 2 libraries for the RADOS object store
 Group:         Development/Libraries/Python
 %endif
 Requires:      librados2 = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rados}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rados
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -747,7 +774,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      python%{python3_pkgversion}
 Requires:      librados2 = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rados}
 %if 0%{without python2}
 Provides:      python-rados = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:      python-rados < %{_epoch_prefix}%{version}-%{release}
@@ -825,6 +852,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librbd1 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-rbd}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-rbd
 This package contains Python 2 libraries for interacting with Cephs RADOS
@@ -838,6 +866,7 @@ Group:              Development/Libraries/Python
 %endif
 Requires:      librbd1 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-rbd}
 Provides:      python3-rbd = %{_epoch_prefix}%{version}-%{release}
 %if 0%{without python2}
 Provides:      python-rbd = %{_epoch_prefix}%{version}-%{release}
@@ -886,6 +915,7 @@ Group:              Development/Libraries/Python
 Requires:      libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-rados = %{_epoch_prefix}%{version}-%{release}
 Requires:      python-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python-cephfs}
 Obsoletes:     python-ceph < %{_epoch_prefix}%{version}-%{release}
 %description -n python-cephfs
 This package contains Python 2 libraries for interacting with Cephs distributed
@@ -900,7 +930,7 @@ Group:              Development/Libraries/Python
 Requires:      libcephfs2 = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
 Requires:      python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
-Provides:      python3-cephfs = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-cephfs}
 %if 0%{without python2}
 Provides:      python-cephfs = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:     python-cephfs < %{_epoch_prefix}%{version}-%{release}
@@ -927,7 +957,7 @@ Summary:    Python 3 utility libraries for Ceph CLI
 %if 0%{?suse_version}
 Group:         Development/Libraries/Python
 %endif
-Provides:   python3-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
+%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse}
 %description -n python%{python3_pkgversion}-ceph-argparse
 This package contains types and routines for Python 3 used by the Ceph CLI as
 well as the RESTful interface. These have to do with querying the daemons for
@@ -1083,7 +1113,7 @@ This package provides Ceph’s default alerts for Prometheus.
 %define _lto_cflags %{nil}
 
 %if 0%{?rhel} == 7
-. /opt/rh/devtoolset-7/enable
+. /opt/rh/devtoolset-8/enable
 %endif
 
 %if 0%{with cephfs_java}
@@ -1116,7 +1146,7 @@ free -h
 echo "System limits:"
 ulimit -a
 if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then
-    mem_per_process=1800
+    mem_per_process=2500
     max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p")
     max_jobs="$(($max_mem / $mem_per_process))"
     test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits"
@@ -1261,7 +1291,10 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
 %py3_compile %{buildroot}%{python3_sitelib}
 # prometheus alerts
 install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/SUSE/default_rules/ceph_default_alerts.yml
+# hardlink duplicate files under /usr to save space
+%fdupes %{buildroot}%{_prefix}
 %endif
+
 %if 0%{?rhel} == 8
 %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}
 %endif
@@ -1644,6 +1677,19 @@ if [ $1 -eq 1 ] ; then
     /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
 fi
 
+%files mgr-k8sevents
+%{_datadir}/ceph/mgr/k8sevents
+
+%post mgr-k8sevents
+if [ $1 -eq 1 ] ; then
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
+fi
+
+%postun mgr-k8sevents
+if [ $1 -eq 1 ] ; then
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
+fi
+
 %files mgr-ssh
 %{_datadir}/ceph/mgr/ssh
 
@@ -1903,6 +1949,7 @@ fi
 %if %{with lttng}
 %{_libdir}/librados_tp.so.*
 %endif
+%dir %{_sysconfdir}/ceph
 
 %post -n librados2 -p /sbin/ldconfig
 
@@ -1979,8 +2026,8 @@ fi
 %{_libdir}/librgw.so.*
 %{_libdir}/librgw_admin_user.so.*
 %if %{with lttng}
-%{_libdir}/librgw_op_tp.so*
-%{_libdir}/librgw_rados_tp.so*
+%{_libdir}/librgw_op_tp.so.*
+%{_libdir}/librgw_rados_tp.so.*
 %endif
 
 %post -n librgw2 -p /sbin/ldconfig
@@ -1994,6 +2041,10 @@ fi
 %{_includedir}/rados/rgw_file.h
 %{_libdir}/librgw.so
 %{_libdir}/librgw_admin_user.so
+%if %{with lttng}
+%{_libdir}/librgw_op_tp.so
+%{_libdir}/librgw_rados_tp.so
+%endif
 
 %if 0%{with python2}
 %files -n python-rgw
@@ -2017,6 +2068,7 @@ fi
 
 %files -n libcephfs2
 %{_libdir}/libcephfs.so.*
+%dir %{_sysconfdir}/ceph
 
 %post -n libcephfs2 -p /sbin/ldconfig
 
index 2ef88be7c2f3b33a93491854a80e5bbc2f886336..bd3f51adf718b4dfec4eb8c3e485b649ba06f00b 100644 (file)
@@ -1,8 +1,14 @@
-ceph (14.2.4-1xenial) xenial; urgency=medium
+ceph (14.2.5-1xenial) xenial; urgency=medium
 
   * 
 
- -- Jenkins Build Slave User <jenkins-build@slave-ubuntu01.front.sepia.ceph.com>  Fri, 13 Sep 2019 18:29:06 +0000
+ -- Jenkins Build Slave User <jenkins-build@slave-ubuntu01.front.sepia.ceph.com>  Fri, 06 Dec 2019 16:53:42 +0000
+
+ceph (14.2.5-1) stable; urgency=medium
+
+  * New upstream release
+
+ -- Ceph Release Team <ceph-maintainers@ceph.com>  Fri, 06 Dec 2019 16:42:32 +0000
 
 ceph (14.2.4-1) stable; urgency=medium
 
index 12a831a8b10a68e053dbab157f4cc43eb4258085..fe4a0acf15f2c9c72b998f95f0e61be6399f1e40 100644 (file)
@@ -71,11 +71,13 @@ function(do_build_dpdk dpdk_dir)
       "\"${target}\" not listed in ${supported_targets}")
   endif()
 
+  set(EXTRA_CFLAGS "-Wno-unknown-warning-option -Wno-stringop-truncation -Wno-address-of-packed-member -fPIC")
+
   include(ExternalProject)
   ExternalProject_Add(dpdk-ext
     SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/spdk/dpdk
     CONFIGURE_COMMAND $(MAKE) config O=${dpdk_dir} T=${target}
-    BUILD_COMMAND env CC=${CMAKE_C_COMPILER} $(MAKE) O=${dpdk_dir} EXTRA_CFLAGS=-fPIC
+    BUILD_COMMAND env CC=${CMAKE_C_COMPILER} $(MAKE) O=${dpdk_dir} EXTRA_CFLAGS=${EXTRA_CFLAGS}
     BUILD_IN_SOURCE 1
     INSTALL_COMMAND "true")
   ExternalProject_Add_Step(dpdk-ext patch-config
index 074e4db891a23186ec4821e197bfa0adeaf062df..68efa15314b9d9d3d27dead99b314b1f2fe49c51 100644 (file)
@@ -15,7 +15,13 @@ int main() {
   std::atomic<uint16_t> w2;
   std::atomic<uint32_t> w4;
   std::atomic<uint64_t> w8;
-  return w1 + w2 + w4 + w8;
+#ifdef __s390x__
+  // Boost needs 16-byte atomics for tagged pointers.
+  std::atomic<unsigned __int128> w16;
+#else
+  #define w16 0
+#endif
+  return w1 + w2 + w4 + w8 + w16;
 }
 " ${var})
 endfunction(check_cxx_atomics)
index dd08ba5e45c85a9b1875cc9df7af1a0e80073a46..e2525b89345e3552bbefd0ad8ce6083ea6ba1bfa 100644 (file)
@@ -2134,7 +2134,7 @@ if(Boost_FOUND)
         endif()
         if(_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES)
           set_target_properties(Boost::${COMPONENT} PROPERTIES
-            INTERFACE_COMPILE_FEATURES "${_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES}")
+            CXX_STANDARD 17)
         endif()
       endif()
     endif()
diff --git a/ceph/cmake/modules/Findgenl.cmake b/ceph/cmake/modules/Findgenl.cmake
new file mode 100644 (file)
index 0000000..07c5f35
--- /dev/null
@@ -0,0 +1,23 @@
+# - Find libnl-genl3
+# Find the genl library and includes
+#
+# GENL_INCLUDE_DIR - where to find netlink.h, etc.
+# GENL_LIBRARIES - List of libraries when using genl.
+# GENL_FOUND - True if genl found.
+
+find_path(GENL_INCLUDE_DIR NAMES netlink/netlink.h PATH_SUFFIXES libnl3)
+
+find_library(LIBNL_LIB nl-3)
+find_library(LIBNL_GENL_LIB nl-genl-3)
+set(GENL_LIBRARIES
+  ${LIBNL_LIB}
+  ${LIBNL_GENL_LIB}
+  )
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(nl-genl-3
+  DEFAULT_MSG GENL_LIBRARIES GENL_INCLUDE_DIR)
+
+mark_as_advanced(
+  GENL_LIBRARIES
+  GENL_INCLUDE_DIR)
index b073073ba137eed5f50bc4fff490fec510c664d7..4cfa1c4c34b2e6c9b84fe924b52c6bd7efa5f452 100644 (file)
@@ -26,6 +26,7 @@ Build-Depends: cmake (>= 3.5),
                libbabeltrace-ctf-dev,
                libbabeltrace-dev,
                libblkid-dev (>= 2.17),
+               libcap-ng-dev,
                libcunit1-dev,
                libcurl4-openssl-dev,
                libexpat1-dev,
@@ -45,10 +46,13 @@ Build-Depends: cmake (>= 3.5),
                libssl-dev,
                libtool,
                libudev-dev,
+               libnl-3-dev,
+               libnl-genl-3-dev,
                libxml2-dev,
                librabbitmq-dev,
                lsb-release,
                parted,
+               patch,
                pkg-config,
                python (>= 2.7),
                python-all-dev,
@@ -69,7 +73,7 @@ Build-Depends: cmake (>= 3.5),
                python3-all-dev,
                python3-setuptools,
 # Make-Check   socat,
-               uuid-dev,
+# Make-Check   uuid-dev,
                uuid-runtime,
                valgrind,
                virtualenv | python-virtualenv,
@@ -192,6 +196,7 @@ Recommends: ceph-mgr-dashboard,
             ceph-mgr-diskprediction-local,
             ceph-mgr-diskprediction-cloud,
             ceph-mgr-rook,
+            ceph-mgr-k8sevents,
             ceph-mgr-ssh
 Suggests: python-influxdb
 Replaces: ceph (<< 0.93-417),
@@ -275,6 +280,21 @@ Description: rook plugin for ceph-mgr
  functionality, to allow ceph-mgr to install and configure ceph using
  Rook.
 
+Package: ceph-mgr-k8sevents
+Architecture: all
+Depends: ceph-mgr (= ${binary:Version}),
+         python-kubernetes,
+         ${misc:Depends},
+         ${python:Depends},
+Description: kubernetes events plugin for ceph-mgr
+ Ceph is a massively scalable, open-source, distributed
+ storage system that runs on commodity hardware and delivers object,
+ block and file system storage.
+ .
+ This package contains the k8sevents plugin, to allow ceph-mgr to send
+ ceph related events to the kubernetes events API, and track all events
+ that occur within the rook-ceph namespace.
+
 Package: ceph-mgr-ssh
 Architecture: all
 Depends: ceph-mgr (= ${binary:Version}),
diff --git a/ceph/doc/cephfs/fs-volumes.rst b/ceph/doc/cephfs/fs-volumes.rst
new file mode 100644 (file)
index 0000000..af0f115
--- /dev/null
@@ -0,0 +1,155 @@
+.. _fs-volumes-and-subvolumes:
+
+FS volumes and subvolumes
+=========================
+
+A  single source of truth for CephFS exports is implemented in the volumes
+module of the :term:`Ceph Manager` daemon (ceph-mgr). The OpenStack shared
+file system service (manila_), Ceph Containter Storage Interface (CSI_),
+storage administrators among others can use the common CLI provided by the
+ceph-mgr volumes module to manage the CephFS exports.
+
+The ceph-mgr volumes module implements the following file system export
+abstactions:
+
+* FS volumes, an abstraction for CephFS file systems
+
+* FS subvolumes, an abstraction for independent CephFS directory trees
+
+* FS subvolume groups, an abstraction for a directory level higher than FS
+  subvolumes to effect policies (e.g., :doc:`/cephfs/file-layouts`) across a
+  set of subvolumes
+
+Some possible use-cases for the export abstractions:
+
+* FS subvolumes used as manila shares or CSI volumes
+
+* FS subvolume groups used as manila share groups
+
+Requirements
+------------
+
+* Nautilus (14.2.x) or a later version of Ceph
+
+* Cephx client user (see :doc:`/rados/operations/user-management`) with
+  the following minimum capabilities::
+
+    mon 'allow r'
+    mgr 'allow rw'
+
+
+FS Volumes
+----------
+
+Create a volume using::
+
+    $ ceph fs volume create <vol_name>
+
+This creates a CephFS file sytem and its data and metadata pools. It also tries
+to create MDSes for the filesytem using the enabled ceph-mgr orchestrator
+module  (see :doc:`/mgr/orchestrator_cli`) , e.g., rook.
+
+Remove a volume using::
+
+    $ ceph fs volume rm <vol_name> [--yes-i-really-mean-it]
+
+This removes a file system and its data and metadata pools. It also tries to
+remove MDSes using the enabled ceph-mgr orchestrator module.
+
+List volumes using::
+
+    $ ceph fs volume ls
+
+FS Subvolume groups
+-------------------
+
+Create a subvolume group using::
+
+    $ ceph fs subvolumegroup create <vol_name> <group_name> [--mode <octal_mode> --pool_layout <data_pool_name>]
+
+The command succeeds even if the subvolume group already exists.
+
+When creating a subvolume group you can specify its data pool layout (see
+:doc:`/cephfs/file-layouts`), and file mode in octal numerals. By default, the
+subvolume group is created with an octal file mode '755', and data pool layout
+of its parent directory.
+
+
+Remove a subvolume group using::
+
+    $ ceph fs subvolumegroup rm <vol_name> <group_name> [--force]
+
+The removal of a subvolume group fails if it is not empty, e.g., has subvolumes
+or snapshots, or is non-existent. Using the '--force' flag allows the command
+to succeed even if the subvolume group is non-existent.
+
+
+Fetch the absolute path of a subvolume group using::
+
+    $ ceph fs subvolumegroup getpath <vol_name> <group_name>
+
+Create a snapshot (see :doc:`/cephfs/experimental-features`) of a
+subvolume group using::
+
+    $ ceph fs subvolumegroup snapshot create <vol_name> <group_name> <snap_name>
+
+This implicitly snapshots all the subvolumes under the subvolume group.
+
+Remove a snapshot of a subvolume group using::
+
+    $ ceph fs subvolumegroup snapshot rm <vol_name> <group_name> <snap_name> [--force]
+
+Using the '--force' flag allows the command to succeed that would otherwise
+fail if the snapshot did not exist.
+
+
+FS Subvolumes
+-------------
+
+Create a subvolume using::
+
+    $ ceph fs subvolume create <vol_name> <subvol_name> [--group_name <subvol_group_name> --mode <octal_mode> --pool_layout <data_pool_name> --size <size_in_bytes>]
+
+
+The command succeeds even if the subvolume already exists.
+
+When creating a subvolume you can specify its subvolume group, data pool layout,
+file mode in octal numerals, and size in bytes. The size of the subvolume is
+specified by setting a quota on it (see :doc:`/cephfs/quota`). By default a
+subvolume is created within the default subvolume group, and with an octal file
+mode '755', data pool layout of its parent directory and no size limit.
+
+
+Remove a subvolume group using::
+
+    $ ceph fs subvolume rm <vol_name> <subvol_name> [--group_name <subvol_group_name> --force]
+
+
+The command removes the subvolume and its contents. It does this in two steps.
+First, it move the subvolume to a trash folder, and then asynchronously purges
+its contents.
+
+The removal of a subvolume fails if it has snapshots, or is non-existent.
+Using the '--force' flag allows the command to succeed even if the subvolume is
+non-existent.
+
+
+Fetch the absolute path of a subvolume using::
+
+    $ ceph fs subvolume getpath <vol_name> <subvol_name> [--group_name <subvol_group_name>]
+
+
+Create a snapshot of a subvolume using::
+
+    $ ceph fs subvolume snapshot create <vol_name> <subvol_name> <snap_name> [--group_name <subvol_group_name>]
+
+
+Remove a snapshot of a subvolume using::
+
+    $ ceph fs subvolume snapshot rm <vol_name> <subvol_name> <snap_name> [--group_name <subvol_group_name> --force]
+
+Using the '--force' flag allows the command to succeed that would otherwise
+fail if the snapshot did not exist.
+
+.. _manila: https://github.com/openstack/manila
+.. _CSI: https://github.com/ceph/ceph-csi
index 785208d7f2f8210b07606182a04fe87a20652b8b..344c80d9e41bcaab7cdd2d600f76c078a00ae82a 100644 (file)
@@ -15,10 +15,11 @@ following to ``/etc/fstab``::
 
 For example:: 
 
-       10.10.10.10:6789:/     /mnt/ceph    ceph    name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev    0       2
+       10.10.10.10:6789:/     /mnt/ceph    ceph    name=admin,noatime,_netdev    0       2
        
-.. important:: The ``name`` and ``secret`` or ``secretfile`` options are 
-   mandatory when you have Ceph authentication running. 
+The default for the ``name=`` parameter is ``guest``. If the ``secret`` or
+``secretfile`` options are not specified then the mount helper will attempt to
+find a secret for the given ``name`` in one of the configured keyrings.
  
 See `User Management`_ for details.
    
index d55701d137d92fd31e49f537c250532af67084a8..925ca89a02786efe84aad00b5f12ca78c6b293b4 100644 (file)
@@ -111,6 +111,7 @@ authentication keyring.
     Application best practices <app-best-practices>
     Scrub <scrub>
     LazyIO <lazyio>
+    FS volume and subvolumes <fs-volumes>
 
 .. toctree:: 
    :hidden:
index 3b5a75086a54cb3ee5a07dea1dac4dbc9457ccd5..89f481f9f644f8c7c08b07895a0a94e747009947 100644 (file)
@@ -9,8 +9,12 @@ monitor host name(s) into IP address(es) for you. For example::
        sudo mkdir /mnt/mycephfs
        sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
 
-To mount the Ceph file system with ``cephx`` authentication enabled, you must
-specify a user name and a secret. ::
+To mount the Ceph file system with ``cephx`` authentication enabled, the kernel
+must authenticate with the cluster. The default ``name=`` option is ``guest``.
+The mount.ceph helper will automatically attempt to find a secret key in the
+keyring.
+
+The secret can also be specified manually with the ``secret=`` option. ::
 
        sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
 
@@ -18,11 +22,11 @@ The foregoing usage leaves the secret in the Bash history. A more secure
 approach reads the secret from a file. For example::
 
        sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
+
+See `User Management`_ for details on cephx.
        
-If you have more than one filesystem, specify which one to mount using
+If you have more than one file system, specify which one to mount using
 the ``mds_namespace`` option, e.g. ``-o mds_namespace=myfs``.
-    
-See `User Management`_ for details on cephx.
 
 To unmount the Ceph file system, you may use the ``umount`` command. For example:: 
 
index 3cd59ec575bcfe2154a1e7849a0db1741ba146ab..34c2b44ad94042447bab09c0044d69b7fda35372 100644 (file)
@@ -80,3 +80,22 @@ than NFS when it comes to write atomicity.
 In other words, when it comes to POSIX, ::
 
   HDFS < NFS < CephFS < {XFS, ext4}
+
+
+fsync() and error reporting
+---------------------------
+
+POSIX is somewhat vague about the state of an inode after fsync reports
+an error. In general, CephFS uses the standard error-reporting
+mechanisms in the client's kernel, and therefore follows the same
+conventions as other filesystems.
+
+In modern Linux kernels (v4.17 or later), writeback errors are reported
+once to every file description that is open at the time of the error. In
+addition, unreported errors that occured before the file description was
+opened will also be returned on fsync.
+
+See `PostgreSQL's summary of fsync() error reporting across operating systems
+<https://wiki.postgresql.org/wiki/Fsync_Errors>`_ and `Matthew Wilcox's
+presentation on Linux IO error handling
+<https://www.youtube.com/watch?v=74c19hwY2oE>`_ for more information.
index 4ab03192fe5548466405a250a7b9b5ef1e52252f..a24ac1b15eb38407c404a6b12bc767df85e33ff6 100644 (file)
@@ -48,6 +48,14 @@ necessary), the primary drops the local reservation and enters the
 Recovered state. Once all the PGs have reported they are clean, the
 primary enters the Clean state and marks itself active+clean.
 
+-----------------
+Dump Reservations
+-----------------
+
+An OSD daemon command dumps total local and remote reservations::
+
+  ceph daemon osd.<id> dump_recovery_reservations
+
 
 --------------
 Things to Note
index 3343b3986c52a9c48c8547cb947f40234b460807..f20dc042e458db2aa8dcbe0b6ae7c0d1aa66f4f9 100644 (file)
@@ -1,6 +1,9 @@
 
+Scrub internals and diagnostics
+===============================
+
 Scrubbing Behavior Table
-========================
+------------------------
 
 +-------------------------------------------------+----------+-----------+---------------+----------------------+
 |                                          Flags  | none     | noscrub   | nodeep_scrub  | noscrub/nodeep_scrub |
@@ -28,3 +31,11 @@ State variables
 - Initiated scrub state is  must_scrub && !must_deep_scrub && !time_for_deep
 - Initiated scrub after osd_deep_scrub_interval state is must scrub && !must_deep_scrub && time_for_deep
 - Initiated deep scrub state is  must_scrub && must_deep_scrub
+
+Scrub Reservations
+------------------
+
+An OSD daemon command dumps total local and remote reservations::
+
+  ceph daemon osd.<id> dump_scrub_reservations
+
index bc1058809eb48793b76d251b124aceba99c2aa2d..0ad5c20c3d6089594395ec377358ecdca5e2c54d 100644 (file)
@@ -22,6 +22,7 @@ Synopsis
 | **ceph-bluestore-tool** bluefs-bdev-new-wal --path *osd path* --dev-target *new-device*
 | **ceph-bluestore-tool** bluefs-bdev-new-db --path *osd path* --dev-target *new-device*
 | **ceph-bluestore-tool** bluefs-bdev-migrate --path *osd path* --dev-target *new-device* --devs-source *device1* [--devs-source *device2*]
+| **ceph-bluestore-tool** free-dump|free-score --path *osd path* [ --allocator block/bluefs-wal/bluefs-db/bluefs-slow ]
 
 
 Description
@@ -81,6 +82,15 @@ Commands
 
    Show device label(s).          
 
+:command:`free-dump` --path *osd path* [ --allocator block/bluefs-wal/bluefs-db/bluefs-slow ]
+
+   Dump all free regions in allocator.
+
+:command:`free-score` --path *osd path* [ --allocator block/bluefs-wal/bluefs-db/bluefs-slow ]
+
+   Give a [0-1] number that represents quality of fragmentation in allocator.
+   0 represents case when all free space is in one chunk. 1 represents worst possible fragmentation.
+
 Options
 =======
 
@@ -117,6 +127,10 @@ Options
 
    deep scrub/repair (read and validate object data, not just metadata)
 
+.. option:: --allocator *name*
+
+   Useful for *free-dump* and *free-score* actions. Selects allocator(s).
+
 Device labels
 =============
 
index d7b88f08aac7ceb3ee580d8f6812dfe363387d4c..1eb99c03067d6abd3e8d886d7940c3ac5da7cf43 100644 (file)
@@ -80,6 +80,11 @@ which are as follows:
     Note that in the case of rocksdb this may corrupt an otherwise uncorrupted
     database--use this only as a last resort!
 
+:command:`stats`
+    Prints statistics from underlying key-value database. This is only for informative purposes.
+    Format and information content may vary between releases. For RocksDB information includes
+    compactions stats, performance counters, memory usage and internal RocksDB stats. 
+
 Availability
 ============
 
index 0627f5cca80eafcd8747e68ad5a5763dfea37460..4f22cd29f733ab4f047b2e98665bfe942be4e86e 100644 (file)
@@ -9,14 +9,14 @@
 Synopsis
 ========
 
-| **mount.ceph** *monaddr1*\ [,\ *monaddr2*\ ,...]:/[*subdir*] *dir* [
+| **mount.ceph** [*monaddr1*\ ,\ *monaddr2*\ ,...]:/[*subdir*] *dir* [
   -o *options* ]
 
 
 Description
 ===========
 
-**mount.ceph** is a simple helper for mounting the Ceph file system on
+**mount.ceph** is a helper for mounting the Ceph file system on
 a Linux host. It serves to resolve monitor hostname(s) into IP
 addresses and read authentication keys from disk; the Linux kernel
 client component does most of the real work. In fact, it is possible
@@ -34,6 +34,10 @@ learn about all monitors from any responsive monitor. However, it is a
 good idea to specify more than one in case one happens to be down at
 the time of mount.
 
+If the host portion of the device is left blank, then **mount.ceph** will
+attempt to determine monitor addresses using local configuration files
+and/or DNS SRV records.
+
 A subdirectory subdir may be specified if a subset of the file system
 is to be mounted.
 
@@ -126,6 +130,16 @@ Options
 :command:`noasyncreaddir`
   no dcache readdir
 
+:command:`conf`
+  Path to a ceph.conf file. This is used to initialize the ceph context
+  for autodiscovery of monitor addresses and auth secrets. The default is
+  to use the standard search path for ceph.conf files.
+
+Mount Secrets
+=============
+If the `secret` and `secretfile` options are not specified on the command-line
+then the mount helper will spawn a child process that will use the standard
+ceph library routines to find a keyring and fetch the secret from it.
 
 Examples
 ========
@@ -143,6 +157,10 @@ port::
 
         mount.ceph monhost1:7000,monhost2:7000,monhost3:7000:/ /mnt/foo
 
+To automatically determine the monitor addresses from local configuration::
+
+        mount.ceph :/ /mnt/foo
+
 To mount only part of the namespace::
 
         mount.ceph monhost1:/some/small/thing /mnt/thing
index 63fdc23f97202ee78f958406bc59b1d24a1ab4e0..36b6c0b3e3610bb1d9b582b7f61cdebf79640b7d 100644 (file)
@@ -26,6 +26,16 @@ Options
 
    Interact with the given pool. Required by most commands.
 
+.. option:: --pgid
+
+   As an alternative to ``--pool``, ``--pgid`` also allow users to specify the
+   PG id to which the command will be directed. With this option, certain
+   commands like ``ls`` allow users to limit the scope of the command to the given PG.
+
+.. option:: -N namespace, --namespace namespace
+
+   Specify the rados namespace to use for the object.
+
 .. option:: -s snap, --snap snap
 
    Read from the given pool snapshot. Valid for all pool-specific read operations.
@@ -104,7 +114,7 @@ Pool specific commands
   List the watchers of object name.
 
 :command:`ls` *outfile*
-  List objects in given pool and write to outfile.
+  List objects in the given pool and write to outfile. Instead of ``--pool`` if ``--pgid`` will be specified, ``ls`` will only list the objects in the given PG.
 
 :command:`lssnap`
   List snapshots for given pool.
@@ -199,6 +209,10 @@ To get a list object in pool foo sent to stdout::
 
        rados -p foo ls -
 
+To get a list of objects in PG 0.6::
+
+       rados --pgid 0.6 ls
+
 To write an object::
 
        rados -p foo put myobject blah.txt
index 22f78ad63d555889dc723c1713813db3a1375405..45c3315a824b997cb44164bb48b6d6b6d316fa2f 100644 (file)
@@ -537,13 +537,13 @@ Commands
 :command:`mv` *src-image-spec* *dest-image-spec*
   Rename an image.  Note: rename across pools is not supported.
 
-:command:`namespace create` *pool-name* *namespace-name*
+:command:`namespace create` *pool-name*/*namespace-name*
   Create a new image namespace within the pool.
 
 :command:`namespace list` *pool-name*
   List image namespaces defined within the pool.
 
-:command:`namespace remove` *pool-name* *namespace-name*
+:command:`namespace remove` *pool-name*/*namespace-name*
   Remove an empty image namespace from the pool.
 
 :command:`object-map check` *image-spec* | *snap-spec*
index 8a988103022eaf7d1e2af376a5054c6348981ce6..76e0ce94a80fe89a9d0e8be3105ac140cb41b290 100644 (file)
@@ -37,7 +37,13 @@ Remove a specific crash dump.
 
   ceph crash ls
 
-List the timestamp/uuid crashids for all saved crash info.
+List the timestamp/uuid crashids for all new and archived crash info.
+
+::
+
+  ceph crash ls-new
+
+List the timestamp/uuid crashids for all newcrash info.
 
 ::
 
@@ -57,4 +63,21 @@ Show all details of a saved crash.
 
 Remove saved crashes older than 'keep' days.  <keep> must be an integer.
 
+::
+
+   ceph crash archive <crashid>
+
+Archive a crash report so that it is no longer considered for the ``RECENT_CRASH`` health check and does not appear in the ``crash ls-new`` output (it will still appear in the ``crash ls`` output).
+
+::
+
+   ceph crash archive-all
+
+Archive all new crash reports.
+
+
+Options
+-------
 
+* ``mgr/crash/warn_recent_interval`` [default: 2 weeks] controls what constitutes "recent" for the purposes of raising the ``RECENT_CRASH`` health warning.
+* ``mgr/crash/retain_interval`` [default: 1 year] controls how long crash reports are retained by the cluster before they are automatically purged.
index bcec83414a7794b1b6162f3bf968fc3531edc687..8ba2111d2ac18315d65926d18047a0bcf8a61b5f 100644 (file)
@@ -772,13 +772,6 @@ to allow direct connections to the manager nodes, you could set up a proxy that
 automatically forwards incoming requests to the currently active ceph-mgr
 instance.
 
-.. note::
-  Note that putting the dashboard behind a load-balancing proxy like `HAProxy
-  <https://www.haproxy.org/>`_ currently has some limitations, particularly if
-  you require the traffic between the proxy and the dashboard to be encrypted
-  via SSL/TLS. See `BUG#24662 <https://tracker.ceph.com/issues/24662>`_ for
-  details.
-
 Configuring a URL Prefix
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -793,6 +786,71 @@ to use hyperlinks that include your prefix, you can set the
 
 so you can access the dashboard at ``http://$IP:$PORT/$PREFIX/``.
 
+Disable the redirection
+^^^^^^^^^^^^^^^^^^^^^^^
+
+If the dashboard is behind a load-balancing proxy like `HAProxy <https://www.haproxy.org/>`_
+you might want to disable the redirection behaviour to prevent situations that
+internal (unresolvable) URL's are published to the frontend client. Use the
+following command to get the dashboard to respond with a HTTP error (500 by default)
+instead of redirecting to the active dashboard::
+
+  $ ceph config set mgr mgr/dashboard/standby_behaviour "error"
+
+To reset the setting to the default redirection behaviour, use the following command::
+
+  $ ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
+
+Configure the error status code
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When the redirection behaviour is disabled, then you want to customize the HTTP status
+code of standby dashboards. To do so you need to run the command::
+
+  $ ceph config set mgr mgr/dashboard/standby_error_status_code 503
+
+HAProxy example configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Below you will find an example configuration for SSL/TLS pass through using
+`HAProxy <https://www.haproxy.org/>`_.
+
+Please note that the configuration works under the following conditions.
+If the dashboard fails over, the front-end client might receive a HTTP redirect
+(303) response and will be redirected to an unresolvable host. This happens when
+the failover occurs during two HAProxy health checks. In this situation the
+previously active dashboard node will now respond with a 303 which points to
+the new active node. To prevent that situation you should consider to disable
+the redirection behaviour on standby nodes.
+
+::
+
+  defaults
+    log global
+    option log-health-checks
+    timeout connect 5s
+    timeout client 50s
+    timeout server 450s
+
+  frontend dashboard_front
+    mode http
+    bind *:80
+    option httplog
+    redirect scheme https code 301 if !{ ssl_fc }
+
+  frontend dashboard_front_ssl
+    mode tcp
+    bind *:443
+    option tcplog
+    default_backend dashboard_back_ssl
+
+  backend dashboard_back_ssl
+    mode tcp
+    option httpchk GET /
+    http-check expect status 200
+    server x <HOST>:<PORT> check-ssl check verify none
+    server y <HOST>:<PORT> check-ssl check verify none
+    server z <HOST>:<PORT> check-ssl check verify none
 
 .. _dashboard-auditing:
 
index da87aa710760c8db441273090e51db97c328b4d2..6ee378457f0d19ab149ec26684a5d81c81f7b8fc 100644 (file)
@@ -49,7 +49,8 @@ The relation between the names is the following:
 Configuration
 =============
 
-You can select the orchestrator module to use with the ``set backend`` command::
+To enable the orchestrator, please select the orchestrator module to use
+with the ``set backend`` command::
 
     ceph orchestrator set backend <module>
 
@@ -62,6 +63,14 @@ You can then check backend is properly configured::
 
     ceph orchestrator status
 
+Disable the Orchestrator
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+To disable the orchestrator again, use the empty string ``""``::
+
+    ceph orchestrator set backend ""``
+    ceph mgr module disable rook
+
 Usage
 =====
 
@@ -193,11 +202,11 @@ services of a particular type via optional --type parameter
 
 ::
 
-    ceph orchestrator service ls [--host host] [--svc_type type] [--refresh|--no-cache]
+    ceph orchestrator service ls [--host host] [--svc_type type] [--refresh]
 
 Discover the status of a particular service::
 
-    ceph orchestrator service status <type> <name> [--refresh]
+    ceph orchestrator service ls --svc_type type --svc_id <name> [--refresh]
 
 
 Query the status of a particular service instance (mon, osd, mds, rgw).  For OSDs
@@ -256,7 +265,6 @@ This is an overview of the current implementation status of the orchestrators.
  device {ident,fault}-(on,off}       ⚪         ⚪       ⚪         ⚪
  device ls                           ✔️         ✔️       ✔️         ✔️
  service ls                          ⚪         ✔️       ✔️         ⚪
- service status                      ⚪         ✔️       ✔️         ⚪
  service-instance status             ⚪         ⚪       ⚪         ⚪
  iscsi {stop,start,reload}           ⚪         ⚪       ⚪         ⚪
  iscsi add                           ⚪         ⚪       ⚪         ⚪
index 2bd1edb09b379963f46f56197ab03f210437523a..9621a4a62c3ae5b64b81c752935cb25709753c3b 100644 (file)
@@ -7,19 +7,36 @@ The telemetry module sends anonymous data about the cluster back to the Ceph
 developers to help understand how Ceph is used and what problems users may
 be experiencing.
 
-Reported telemetry includes:
+Channels
+--------
+
+The telemetry report is broken down into several "channels," each with
+a different type of information.  Assuming telemetry has been enabled,
+individual channels can be turned on and off.  (If telemetry is off,
+the per-channel setting has no effect.)
+
+* **basic** (default: on): Basic information about the cluster
 
-  * capacity of the cluster 
-  * number of monitors, managers, OSDs, MDSs, radosgws, or other daemons
-  * software version currently being used
-  * number and types of RADOS pools and CephFS file systems
-  * information about daemon crashes, including
+    - capacity of the cluster
+    - number of monitors, managers, OSDs, MDSs, radosgws, or other daemons
+    - software version currently being used
+    - number and types of RADOS pools and CephFS file systems
+    - names of configuration options that have been changed from their
+      default (but *not* their values)
+
+* **crash** (default: on): Information about daemon crashes, including
 
     - type of daemon
     - version of the daemon
     - operating system (OS distribution, kernel version)
     - stack trace identifying where in the Ceph code the crash occurred
 
+* **ident** (default: on): User-provided identifying information about
+  the cluster
+
+    - cluster description
+    - contact email address
+
 The data being reported does *not* contain any sensitive
 data like pool names, object names, object contents, or hostnames.
 
@@ -30,50 +47,61 @@ the way Ceph is used.
 
 Data is sent over HTTPS to *telemetry.ceph.com*.
 
+Enabling the module
+-------------------
+
+The module must first be enabled.  Note that even if the module is
+enabled, telemetry is still "off" by default, so simply enabling the
+module will *NOT* result in any data being shared.::
+
+  ceph mgr module enable telemetry
+
 Sample report
 -------------
 
 You can look at what data is reported at any time with the command::
 
-  ceph mgr module enable telemetry
   ceph telemetry show
 
 If you have any concerns about privacy with regard to the information included in
 this report, please contact the Ceph developers.
 
-Enabling
+Channels
 --------
 
-The *telemetry* module is enabled with::
+Individual channels can be enabled or disabled with::
+
+  ceph config set mgr mgr/telemetry/channel_ident false
+  ceph config set mgr mgr/telemetry/channel_basic false
+  ceph config set mgr mgr/telemetry/channel_crash false
+  ceph telemetry show
+
+Enabling Telemetry
+------------------
+
+To allow the *telemetry* module to start sharing data,::
 
-  ceph mgr module enable telemetry
   ceph telemetry on
 
-Telemetry can be disabled with::
+Telemetry can be disabled at any time with::
 
   ceph telemetry off
 
 Interval
 --------
 
-The module compiles and sends a new report every 72 hours by default.
+The module compiles and sends a new report every 24 hours by default.
 You can adjust this interval with::
 
-  ceph config set mgr mgr/telemetry/interval 24    # report every day
+  ceph config set mgr mgr/telemetry/interval 72    # report every three days
 
 Contact and Description
 -----------------------
 
-A contact and description can be added to the report.  This is completely optional.::
+A contact and description can be added to the report.  This is
+completely optional, and disabled by default.::
 
   ceph config set mgr mgr/telemetry/contact 'John Doe <john.doe@example.com>'
   ceph config set mgr mgr/telemetry/description 'My first Ceph cluster'
+  ceph config set mgr mgr/telemetry/channel_ident true
 
-Show report
------------
-
-The report is sent in JSON format, and can be printed::
-
-  ceph telemetry show
-
-So you can inspect the content if you have privacy concerns.
index 637e3ed8f74fed727cfebac9b3db25f6b9c9eed1..2bdc5f74c70b5ebed5ffd29fe7d0a0d4f7b5ec4a 100644 (file)
@@ -91,7 +91,8 @@
                 "attr_value_mismatch",
                 "attr_name_mismatch",
                 "snapset_inconsistency",
-                "hinfo_inconsistency"
+                "hinfo_inconsistency",
+               "size_too_large"
               ]
             },
             "minItems": 0,
index 8eb96bafa808f044501cb127fbda3da729527312..7d1c50c9124164b1f17627e83214dd2af87e3d4b 100644 (file)
@@ -231,12 +231,13 @@ The configured cache memory budget can be used in a few different ways:
 * BlueStore data (i.e., recently read or written object data)
 
 Cache memory usage is governed by the following options:
-``bluestore_cache_meta_ratio``, ``bluestore_cache_kv_ratio``, and
-``bluestore_cache_kv_max``.  The fraction of the cache devoted to data
-is 1.0 minus the meta and kv ratios.  The memory devoted to kv
-metadata (the RocksDB cache) is capped by ``bluestore_cache_kv_max``
-since our testing indicates there are diminishing returns beyond a
-certain point.
+``bluestore_cache_meta_ratio`` and ``bluestore_cache_kv_ratio``.
+The fraction of the cache devoted to data
+is governed by the effective bluestore cache size (depending on
+``bluestore_cache_size[_ssd|_hdd]`` settings and the device class of the primary
+device) as well as the meta and kv ratios.
+The data fraction can be calculated by
+``<effective_cache_size> * (1 - bluestore_cache_meta_ratio - bluestore_cache_kv_ratio)``
 
 ``bluestore_cache_size``
 
@@ -264,14 +265,14 @@ certain point.
 :Description: The ratio of cache devoted to metadata.
 :Type: Floating point
 :Required: Yes
-:Default: ``.01``
+:Default: ``.4``
 
 ``bluestore_cache_kv_ratio``
 
 :Description: The ratio of cache devoted to key/value data (rocksdb).
 :Type: Floating point
 :Required: Yes
-:Default: ``.99``
+:Default: ``.4``
 
 ``bluestore_cache_kv_max``
 
index fd10763f30fe03ba657c6763c5cbf127b405cfcd..67318f490c640a3c2ce8d490a0744825073bbe0c 100644 (file)
@@ -393,6 +393,25 @@ by setting it in the ``[mon]`` section of the configuration file.
 :Default: True
 
 
+``mon warn on slow ping ratio``
+
+:Description: Issue a ``HEALTH_WARN`` in cluster log if any heartbeat
+              between OSDs exceeds ``mon warn on slow ping ratio``
+              of ``osd heartbeat grace``.  The default is 5%.
+:Type: Float
+:Default: ``0.05``
+
+
+``mon warn on slow ping time``
+
+:Description: Override ``mon warn on slow ping ratio`` with a specific value.
+              Issue a ``HEALTH_WARN`` in cluster log if any heartbeat
+              between OSDs exceeds ``mon warn on slow ping time``
+              milliseconds.  The default is 0 (disabled).
+:Type: Integer
+:Default: ``0``
+
+
 ``mon cache target full warn ratio``
 
 :Description: Position between pool's ``cache_target_full`` and
@@ -422,8 +441,8 @@ by setting it in the ``[mon]`` section of the configuration file.
               log (a non-positive number disables it). If current health summary
               is empty or identical to the last time, monitor will not send it
               to cluster log.
-:Type: Integer
-:Default: 3600
+:Type: Float
+:Default: 60.000000
 
 
 ``mon health to clog interval``
@@ -433,7 +452,7 @@ by setting it in the ``[mon]`` section of the configuration file.
               send the summary to cluster log no matter if the summary changes
               or not.
 :Type: Integer
-:Default: 60
+:Default: 3600
 
 
 
@@ -1196,6 +1215,26 @@ Miscellaneous
 :Type: Integer
 :Default: 300
 
+``mon osd cache size min``
+
+:Description: The minimum amount of bytes to be kept mapped in memory for osd
+               monitor caches.
+:Type: 64-bit Integer
+:Default: 134217728
+
+``mon memory target``
+
+:Description: The amount of bytes pertaining to osd monitor caches and kv cache
+              to be kept mapped in memory with cache auto-tuning enabled.
+:Type: 64-bit Integer
+:Default: 2147483648
+
+``mon memory autotune``
+
+:Description: Autotune the cache memory being used for osd monitors and kv
+              database.
+:Type: Boolean
+:Default: True
 
 
 .. _Paxos: https://en.wikipedia.org/wiki/Paxos_(computer_science)
index e2c24771481489ca733149b25279952267d02a5f..a7324ebb0e5541e996e69f8140a3e0ab71e24398 100644 (file)
@@ -24,10 +24,8 @@ monitoring the Ceph Storage Cluster.
 OSDs Check Heartbeats
 =====================
 
-Each Ceph OSD Daemon checks the heartbeat of other Ceph OSD Daemons every 6
-seconds. You can change the heartbeat interval by adding an ``osd heartbeat
-interval`` setting under the ``[osd]`` section of your Ceph configuration file,
-or by setting the value at runtime. If a neighboring Ceph OSD Daemon doesn't
+Each Ceph OSD Daemon checks the heartbeat of other Ceph OSD Daemons at random
+intervals less than every 6 seconds.  If a neighboring Ceph OSD Daemon doesn't
 show a heartbeat within a 20 second grace period, the Ceph OSD Daemon may
 consider the neighboring Ceph OSD Daemon ``down`` and report it back to a Ceph
 Monitor, which will update the Ceph Cluster Map. You may change this grace
@@ -379,6 +377,15 @@ OSD Settings
 :Default: ``30``
 
 
+``osd mon heartbeat stat stale``
+
+:Description: Stop reporting on heartbeat ping times which haven't been updated for
+              this many seconds.  Set to zero to disable this action.
+
+:Type: 32-bit Integer
+:Default: ``3600``
+
+
 ``osd mon report interval``
 
 :Description: The number of seconds a Ceph OSD Daemon may wait
index 930ef0d8c2053b5c5af1b8e293f897796dc982d9..530e0dc41c7371df6de9f95c7868df5ddb8b2fc1 100644 (file)
@@ -42,9 +42,9 @@ healed itself).
 When the cluster is healthy, the balancer will throttle its changes
 such that the percentage of PGs that are misplaced (i.e., that need to
 be moved) is below a threshold of (by default) 5%.  The
-``max_misplaced`` threshold can be adjusted with::
+``target_max_misplaced_ratio`` threshold can be adjusted with::
 
-  ceph config set mgr mgr/balancer/max_misplaced .07   # 7%
+  ceph config set mgr target_max_misplaced_ratio .07   # 7%
 
 
 Modes
index f35d7aaf0463907c5774e4d942a40973b849a4ed..2ed2da4871a9543df69dff3316604efadfdf860f 100644 (file)
@@ -335,6 +335,59 @@ needs to be stopped and BlueFS informed of the device size change with::
 
   ceph-bluestore-tool bluefs-bdev-expand --path /var/lib/ceph/osd/ceph-$ID
 
+BLUEFS_AVAILABLE_SPACE
+______________________
+
+To check how much space is free for BlueFS do::
+
+  ceph daemon osd.123 bluestore bluefs available
+
+This will output up to 3 values: `BDEV_DB free`, `BDEV_SLOW free` and
+`available_from_bluestore`. `BDEV_DB` and `BDEV_SLOW` report amount of space that
+has been acquired by BlueFS and is considered free. Value `available_from_bluestore`
+denotes ability of BlueStore to relinquish more space to BlueFS.
+It is normal that this value is different from amount of BlueStore free space, as
+BlueFS allocation unit is typically larger than BlueStore allocation unit.
+This means that only part of BlueStore free space will be acceptable for BlueFS.
+
+BLUEFS_LOW_SPACE
+_________________
+
+If BlueFS is running low on available free space and there is little
+`available_from_bluestore` one can consider reducing BlueFS allocation unit size.
+To simulate available space when allocation unit is different do::
+
+  ceph daemon osd.123 bluestore bluefs available <alloc-unit-size>
+
+BLUESTORE_FRAGMENTATION
+_______________________
+
+As BlueStore works free space on underlying storage will get fragmented.
+This is normal and unavoidable but excessive fragmentation will cause slowdown.
+To inspect BlueStore fragmentation one can do::
+
+  ceph daemon osd.123 bluestore allocator score block
+
+Score is given in [0-1] range.
+[0.0 .. 0.4] tiny fragmentation
+[0.4 .. 0.7] small, acceptable fragmentation
+[0.7 .. 0.9] considerable, but safe fragmentation
+[0.9 .. 1.0] severe fragmentation, may impact BlueFS ability to get space from BlueStore
+
+If detailed report of free fragments is required do::
+
+  ceph daemon osd.123 bluestore allocator dump block
+
+In case when handling OSD process that is not running fragmentation can be
+inspected with `ceph-bluestore-tool`.
+Get fragmentation score::
+
+  ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-123 --allocator block free-score
+
+And dump detailed free chunks::
+
+  ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-123 --allocator block free-dump
+
 BLUESTORE_LEGACY_STATFS
 _______________________
 
@@ -489,16 +542,27 @@ The state of specific problematic PGs can be queried with::
   ceph tell <pgid> query
 
 
-PG_DEGRADED_FULL
+PG_RECOVERY_FULL
+________________
+
+Data redundancy may be reduced or at risk for some data due to a lack
+of free space in the cluster.  Specifically, one or more PGs has the
+*recovery_toofull* flag set, meaning that the
+cluster is unable to migrate or recover data because one or more OSDs
+is above the *full* threshold.
+
+See the discussion for *OSD_FULL* above for steps to resolve this condition.
+
+PG_BACKFILL_FULL
 ________________
 
 Data redundancy may be reduced or at risk for some data due to a lack
 of free space in the cluster.  Specifically, one or more PGs has the
-*backfill_toofull* or *recovery_toofull* flag set, meaning that the
+*backfill_toofull* flag set, meaning that the
 cluster is unable to migrate or recover data because one or more OSDs
 is above the *backfillfull* threshold.
 
-See the discussion for *OSD_BACKFILLFULL* or *OSD_FULL* above for
+See the discussion for *OSD_BACKFILLFULL* above for
 steps to resolve this condition.
 
 PG_DAMAGED
@@ -678,6 +742,12 @@ the pool is too large and should be reduced or set to zero with::
 
 For more information, see :ref:`specifying_pool_target_size`.
 
+TOO_FEW_OSDS
+____________
+
+The number of OSDs in the cluster is below the configurable
+threshold of ``osd_pool_default_size``.
+
 SMALLER_PGP_NUM
 _______________
 
@@ -840,3 +910,72 @@ happen if they are misplaced or degraded (see *PG_AVAILABILITY* and
 You can manually initiate a scrub of a clean PG with::
 
   ceph pg deep-scrub <pgid>
+
+
+Miscellaneous
+-------------
+
+RECENT_CRASH
+____________
+
+One or more Ceph daemons has crashed recently, and the crash has not
+yet been archived (acknowledged) by the administrator.  This may
+indicate a software bug, a hardware problem (e.g., a failing disk), or
+some other problem.
+
+New crashes can be listed with::
+
+  ceph crash ls-new
+
+Information about a specific crash can be examined with::
+
+  ceph crash info <crash-id>
+
+This warning can be silenced by "archiving" the crash (perhaps after
+being examined by an administrator) so that it does not generate this
+warning::
+
+  ceph crash archive <crash-id>
+
+Similarly, all new crashes can be archived with::
+
+  ceph crash archive-all
+
+Archived crashes will still be visible via ``ceph crash ls`` but not
+``ceph crash ls-new``.
+
+The time period for what "recent" means is controlled by the option
+``mgr/crash/warn_recent_interval`` (default: two weeks).
+
+These warnings can be disabled entirely with::
+
+  ceph config set mgr/crash/warn_recent_interval 0
+
+TELEMETRY_CHANGED
+_________________
+
+Telemetry has been enabled, but the contents of the telemetry report
+have changed since that time, so telemetry reports will not be sent.
+
+The Ceph developers periodically revise the telemetry feature to
+include new and useful information, or to remove information found to
+be useless or sensitive.  If any new information is included in the
+report, Ceph will require the administrator to re-enable telemetry to
+ensure they have an opportunity to (re)review what information will be
+shared.
+
+To review the contents of the telemetry report,::
+
+  ceph telemetry show
+
+Note that the telemetry report consists of several optional channels
+that may be independently enabled or disabled.  For more information, see
+:ref:`telemetry`.
+
+To re-enable telemetry (and make this warning go away),::
+
+  ceph telemetry on
+
+To disable telemetry (and make this warning go away),::
+
+  ceph telemetry off
index c490e1c3eb0f07a80e26d0d1c04ae020bbd702e7..630d268b458259892b67d2efdaae03e8465d3933 100644 (file)
@@ -385,6 +385,11 @@ and, ``backfill_toofull`` indicates that a backfill operation was requested,
 but couldn't be completed due to insufficient storage capacity. When a 
 placement group cannot be backfilled, it may be considered ``incomplete``.
 
+The ``backfill_toofull`` state may be transient.  It is possible that as PGs
+are moved around, space may become available.  The ``backfill_toofull`` is
+similar to ``backfill_wait`` in that as soon as conditions change
+backfill can proceed.
+
 Ceph provides a number of settings to manage the load spike associated with
 reassigning placement groups to an OSD (especially a new OSD). By default,
 ``osd_max_backfills`` sets the maximum number of concurrent backfills to and from
index 728309119886af32fdd1f45d04be93bbc12a3073..294e922de30f279ecd8f37faf03a781c0538b99f 100644 (file)
@@ -159,6 +159,114 @@ to a health state:
     2017-07-25 10:11:13.535493 mon.a mon.0 172.21.9.34:6789/0 110 : cluster [INF] Health check cleared: PG_DEGRADED (was: Degraded data redundancy: 2 pgs unclean, 2 pgs degraded, 2 pgs undersized)
     2017-07-25 10:11:13.535577 mon.a mon.0 172.21.9.34:6789/0 111 : cluster [INF] Cluster is now healthy
 
+Network Performance Checks
+--------------------------
+
+Ceph OSDs send heartbeat ping messages amongst themselves to monitor daemon availability.  We
+also use the response times to monitor network performance.
+While it is possible that a busy OSD could delay a ping response, we can assume
+that if a network switch fails mutiple delays will be detected between distinct pairs of OSDs.
+
+By default we will warn about ping times which exceed 1 second (1000 milliseconds).
+
+::
+
+    HEALTH_WARN Long heartbeat ping times on back interface seen, longest is 1118.001 msec
+
+The health detail will add the combination of OSDs are seeing the delays and by how much.  There is a limit of 10
+detail line items.
+
+::
+
+    [WRN] OSD_SLOW_PING_TIME_BACK: Long heartbeat ping times on back interface seen, longest is 1118.001 msec
+        Slow heartbeat ping on back interface from osd.0 to osd.1 1118.001 msec
+        Slow heartbeat ping on back interface from osd.0 to osd.2 1030.123 msec
+        Slow heartbeat ping on back interface from osd.2 to osd.1 1015.321 msec
+        Slow heartbeat ping on back interface from osd.1 to osd.0 1010.456 msec
+
+To see even more detail and a complete dump of network performance information the ``dump_osd_network`` command can be used.  Typically, this would be
+sent to a mgr, but it can be limited to a particular OSD's interactions by issuing it to any OSD.  The current threshold which defaults to 1 second
+(1000 milliseconds) can be overridden as an argument in milliseconds.
+
+The following command will show all gathered network performance data by specifying a threshold of 0 and sending to the mgr.
+
+::
+
+    $ ceph daemon /var/run/ceph/ceph-mgr.x.asok dump_osd_network 0
+    {
+        "threshold": 0,
+        "entries": [
+            {
+                "last update": "Wed Sep  4 17:04:49 2019",
+                "stale": false,
+                "from osd": 2,
+                "to osd": 0,
+                "interface": "front",
+                "average": {
+                    "1min": 1.023,
+                    "5min": 0.860,
+                    "15min": 0.883
+                },
+                "min": {
+                    "1min": 0.818,
+                    "5min": 0.607,
+                    "15min": 0.607
+                },
+                "max": {
+                    "1min": 1.164,
+                    "5min": 1.173,
+                    "15min": 1.544
+                },
+                "last": 0.924
+            },
+            {
+                "last update": "Wed Sep  4 17:04:49 2019",
+                "stale": false,
+                "from osd": 2,
+                "to osd": 0,
+                "interface": "back",
+                "average": {
+                    "1min": 0.968,
+                    "5min": 0.897,
+                    "15min": 0.830
+                },
+                "min": {
+                    "1min": 0.860,
+                    "5min": 0.563,
+                    "15min": 0.502
+                },
+                "max": {
+                    "1min": 1.171,
+                    "5min": 1.216,
+                    "15min": 1.456
+                },
+                "last": 0.845
+            },
+            {
+                "last update": "Wed Sep  4 17:04:48 2019",
+                "stale": false,
+                "from osd": 0,
+                "to osd": 1,
+                "interface": "front",
+                "average": {
+                    "1min": 0.965,
+                    "5min": 0.811,
+                    "15min": 0.850
+                },
+                "min": {
+                    "1min": 0.650,
+                    "5min": 0.488,
+                    "15min": 0.466
+                },
+                "max": {
+                    "1min": 1.252,
+                    "5min": 1.252,
+                    "15min": 1.362
+                },
+            "last": 0.791
+        },
+        ...
+
 
 Detecting configuration issues
 ==============================
index 651d924d2d577d414603f98f75a34ffe574a3f18..c38a683f0c57f8c7f040a5910610b9101792701d 100644 (file)
@@ -69,8 +69,8 @@ map is ``active + clean``.
   The placement group is waiting in line to start backfill.
 
 *backfill_toofull*
-  A backfill operation is waiting because the destination OSD is over its
-  full ratio.
+  A backfill operation is waiting because the destination OSD is over
+  the backfillfull ratio.
 
 *backfill_unfound*
   Backfill stopped due to unfound objects.
index 63048cdd735a0c8aa39a7ba667696e32efdfff44..a2c89e541a36216d866b74f0d18362b70a204e83 100644 (file)
@@ -382,14 +382,15 @@ makes every effort to evenly spread OSDs among all existing Placement
 Groups.
 
 As long as there are one or two orders of magnitude more Placement
-Groups than OSDs, the distribution should be even. For instance, 300
-placement groups for 3 OSDs, 1000 placement groups for 10 OSDs etc.
+Groups than OSDs, the distribution should be even. For instance, 256
+placement groups for 3 OSDs, 512 or 1024 placement groups for 10 OSDs
+etc.
 
 Uneven data distribution can be caused by factors other than the ratio
 between OSDs and placement groups. Since CRUSH does not take into
 account the size of the objects, a few very large objects may create
 an imbalance. Let say one million 4K objects totaling 4GB are evenly
-spread among 1000 placement groups on 10 OSDs. They will use 4GB / 10
+spread among 1024 placement groups on 10 OSDs. They will use 4GB / 10
 = 400MB on each OSD. If one 400MB object is added to the pool, the
 three OSDs supporting the placement group in which the object has been
 placed will be filled with 400MB + 400MB = 800MB while the seven
@@ -433,9 +434,12 @@ You should then check if the result makes sense with the way you
 designed your Ceph cluster to maximize `data durability`_,
 `object distribution`_ and minimize `resource usage`_.
 
-The result should be **rounded up to the nearest power of two.**
-Rounding up is optional, but recommended for CRUSH to more evenly balance
-the number of objects among placement groups.
+The result should always be **rounded up to the nearest power of two**.
+
+Only a power of two will evenly balance the number of objects among
+placement groups. Other values will result in an uneven distribution of
+data across your OSDs. Their use should be limited to incrementally
+stepping from one power of two to another.
 
 As an example, for a cluster with 200 OSDs and a pool size of 3
 replicas, you would estimate your number of PGs as follows::
index 453b56ca777bf7062c41be128175b27d95ecb67e..0523caadb09a7da2f604104ec09f7eb95d069971 100644 (file)
@@ -61,6 +61,7 @@ you may write data with one API and retrieve it with the other.
    Dynamic bucket index resharding <dynamicresharding>
    Multi factor authentication <mfa>
    Sync Modules <sync-modules>
+   Bucket Notifications <notifications>
    Data Layout in RADOS <layout>
    STS Lite <STSLite>
    Role <role>
index 431c2da2b668ce3f88aa4ede6d87140c2bb0c16a..17132371ed493b613af77e6bb4b6cc4754ef2ac8 100644 (file)
@@ -229,7 +229,7 @@ the default zone group first.
 
     # radosgw-admin zonegroup remove --rgw-zonegroup=default --rgw-zone=default
     # radosgw-admin period update --commit
-    # radosgw-admin zone delete --rgw-zone=default
+    # radosgw-admin zone rm --rgw-zone=default
     # radosgw-admin period update --commit
     # radosgw-admin zonegroup delete --rgw-zonegroup=default
     # radosgw-admin period update --commit
@@ -404,7 +404,7 @@ Delete the default zone if needed.
 
 ::
 
-    # radosgw-admin zone delete --rgw-zone=default
+    # radosgw-admin zone rm --rgw-zone=default
 
 Finally, delete the default pools in your Ceph storage cluster if
 needed.
@@ -1277,7 +1277,7 @@ Next, delete the zone. Execute the following:
 
 ::
 
-    # radosgw-admin zone delete --rgw-zone<name>
+    # radosgw-admin zone rm --rgw-zone<name>
 
 Finally, update the period:
 
diff --git a/ceph/doc/radosgw/notifications.rst b/ceph/doc/radosgw/notifications.rst
new file mode 100644 (file)
index 0000000..152dc03
--- /dev/null
@@ -0,0 +1,291 @@
+====================
+Bucket Notifications
+====================
+
+.. versionadded:: Nautilus
+
+.. contents::
+
+Bucket notifications provide a mechanism for sending information out of the radosgw when certain events are happening on the bucket.
+Currently, notifications could be sent to HTTP and AMQP0.9.1 endpoints.
+
+Note, that if the events should be stored in Ceph, in addition, or instead of being pushed to an endpoint, 
+the `PubSub Module`_ should be used instead of the bucket notification mechanism.
+
+A user can create different topics. A topic entity is defined by its user and its name. A
+user can only manage its own topics, and can only associate them with buckets it owns.
+
+In order to send notifications for events for a specific bucket, a notification entity needs to be created. A
+notification can be created on a subset of event types, or for all event types (default).
+The notification may also filter out events based on preffix/suffix and/or regular expression matching of the keys. As well as, 
+on the metadata attributes attached to the object.
+There can be multiple notifications for any specific topic, and the same topic could be used for multiple notifications.
+
+REST API has been defined to provide configuration and control interfaces for the bucket notification
+mechanism. This API is similar to the one defined as S3-compatible API of the pubsub sync module.
+
+.. toctree::
+   :maxdepth: 1
+
+   S3 Bucket Notification Compatibility <s3-notification-compatibility>
+
+Notificatios Performance Stats
+------------------------------
+Same counters are shared between the pubsub sync module and the bucket notification mechanism.
+
+- ``pubsub_event_triggered``: running counter of events with at lease one topic associated with them
+- ``pubsub_event_lost``: running counter of events that had topics associated with them but that were not pushed to any of the endpoints
+- ``pubsub_push_ok``: running counter, for all notifications, of events successfully pushed to their endpoint
+- ``pubsub_push_fail``: running counter, for all notifications, of events failed to be pushed to their endpoint
+- ``pubsub_push_pending``: gauge value of events pushed to an endpoint but not acked or nacked yet
+
+.. note:: 
+
+    ``pubsub_event_triggered`` and ``pubsub_event_lost`` are incremented per event, while: 
+    ``pubsub_push_ok``, ``pubsub_push_fail``, are incremented per push action on each notification.
+
+Bucket Notification REST API
+----------------------------
+
+Topics
+~~~~~~
+
+Create a Topic
+``````````````
+
+This will create a new topic. The topic should be provided with push endpoint parameters that would be used later
+when a notification is created.
+Upon successful request, the response will include the topic ARN that could be later used to reference this topic in the notification request. 
+To update a topic, use the same command used for topic creation, with the topic name of an existing topic and different endpoint values.
+
+.. tip:: Any notification already associated with the topic needs to be re-created for the topic update to take effect 
+
+::
+
+   POST
+   Action=CreateTopic
+   &Name=<topic-name>
+   &push-endpoint=<endpoint>
+   [&Attributes.entry.1.key=amqp-exchange&Attributes.entry.1.value=<exchange>]
+   [&Attributes.entry.2.key=amqp-sck-level&Attributes.entry.2.value=ack-level]
+   &Attributes.entry.3.key=verify-sll&Attributes.entry.3.value=true|false]
+
+Request parameters:
+
+- push-endpoint: URI of endpoint to send push notification to
+
+ - URI schema is: ``http[s]|amqp://[<user>:<password>@]<fqdn>[:<port>][/<amqp-vhost>]``
+ - Same schema is used for HTTP and AMQP endpoints (except amqp-vhost which is specific to AMQP)
+ - Default values for HTTP/S: no user/password, port 80/443
+ - Default values for AMQP: user/password=guest/guest, port 5672, amqp-vhost is "/"
+
+- verify-ssl: can be used with https endpoints (ignored for other endpoints), indicate whether the server certificate is validated or not ("true" by default)
+- amqp-exchange: mandatory parameter for AMQP endpoint. The exchanges must exist and be able to route messages based on topics
+- amqp-ack-level: No end2end acking is required, as messages may persist in the broker before delivered into their final destination. 2 ack methods exist:
+
+ - "none" - message is considered "delivered" if sent to broker
+ - "broker" message is considered "delivered" if acked by broker
+
+.. note:: 
+
+    - The key/value of a specific parameter does not have to reside in the same line, or in any specific order, but must use the same index
+    - Attribute indexing does not need to be sequntial or start from any specific value
+    - `AWS Create Topic`_ has detailed explanation on endpoint attributes format. However, in our case different keys and values are used
+
+The response will have the following format:
+
+::
+
+    <CreateTopicResponse xmlns="https://sns.amazonaws.com/doc/2010-03-31/">
+        <CreateTopicResult>
+            <TopicArn></TopicArn>
+        </CreateTopicResult>
+        <ResponseMetadata>
+            <RequestId></RequestId>
+        </ResponseMetadata>
+    </CreateTopicResponse>    
+
+The topic ARN in the response will have the following format:
+
+::
+
+   arn:aws:sns:<zone-group>:<tenant>:<topic>
+Get Topic Information
+`````````````````````
+
+Returns information about specific topic. This includes push-endpoint information, if provided.
+
+::
+
+   POST
+   Action=GetTopic&TopicArn=<topic-arn>
+
+Response will have the following format:
+
+::
+
+    <GetTopicResponse>
+        <GetTopicRersult>
+            <Topic>
+                <User></User>
+                <Name></Name>
+                <EndPoint>
+                    <EndpointAddress></EndpointAddress>
+                    <EndpointArgs></EndpointArgs>
+                    <EndpointTopic></EndpointTopic>
+                </EndPoint>
+                <TopicArn></TopicArn>
+            </Topic>
+        </GetTopicResult>
+        <ResponseMetadata>
+            <RequestId></RequestId>
+        </ResponseMetadata>
+    </GetTopicResponse>    
+
+- User: name of the user that created the topic
+- Name: name of the topic
+- EndPoinjtAddress: the push-endpoint URL
+- EndPointArgs: the push-endpoint args
+- EndpointTopic: the topic name that should be sent to the endpoint (mat be different than the above topic name)
+- TopicArn: topic ARN
+
+Delete Topic
+````````````
+
+::
+
+   POST
+   Action=DeleteTopic&TopicArn=<topic-arn>
+
+Delete the specified topic. Note that deleting a deleted topic should result with no-op and not a failure.
+
+The response will have the following format:
+
+::
+
+    <DeleteTopicResponse xmlns="https://sns.amazonaws.com/doc/2010-03-31/">
+        <ResponseMetadata>
+            <RequestId></RequestId>
+        </ResponseMetadata>
+    </DeleteTopicResponse>    
+
+List Topics
+```````````
+
+List all topics that user defined.
+
+::
+
+   POST 
+   Action=ListTopics
+Response will have the following format:
+
+::
+
+    <ListTopicdResponse xmlns="https://sns.amazonaws.com/doc/2010-03-31/">
+        <ListTopicsRersult>
+            <Topics>
+                <member>
+                    <User></User>
+                    <Name></Name>
+                    <EndPoint>
+                        <EndpointAddress></EndpointAddress>
+                        <EndpointArgs></EndpointArgs>
+                        <EndpointTopic></EndpointTopic>
+                    </EndPoint>
+                    <TopicArn></TopicArn>
+                </member>
+            </Topics>
+        </ListTopicsResult>
+        <ResponseMetadata>
+            <RequestId></RequestId>
+        </ResponseMetadata>
+    </ListTopicsResponse>    
+
+Notifications
+~~~~~~~~~~~~~
+
+Detailed under: `Bucket Operations`_.
+
+.. note:: 
+
+    - "Abort Multipart Upload" request does not emit a notification
+    - "Delete Multiple Objects" request does not emit a notification
+    - Both "Initiate Multipart Upload" and "POST Object" requests will emit an ``s3:ObjectCreated:Post`` notification
+
+
+Events
+~~~~~~
+
+The events are in JSON format (regardless of the actual endpoint), and share the same structure as the S3-compatible events
+pushed or pulled using the pubsub sync module.
+
+::
+
+   {"Records":[  
+       {
+           "eventVersion":"2.1"
+           "eventSource":"aws:s3",
+           "awsRegion":"",
+           "eventTime":"",
+           "eventName":"",
+           "userIdentity":{  
+               "principalId":""
+           },
+           "requestParameters":{
+               "sourceIPAddress":""
+           },
+           "responseElements":{
+               "x-amz-request-id":"",
+               "x-amz-id-2":""
+           },
+           "s3":{
+               "s3SchemaVersion":"1.0",
+               "configurationId":"",
+               "bucket":{
+                   "name":"",
+                   "ownerIdentity":{
+                       "principalId":""
+                   },
+                   "arn":"",
+                   "id:""
+               },
+               "object":{
+                   "key":"",
+                   "size":"",
+                   "eTag":"",
+                   "versionId":"",
+                   "sequencer": "",
+                   "metadata":""
+               }
+           },
+           "eventId":"",
+       }
+   ]}
+
+- awsRegion: zonegroup
+- eventTime: timestamp indicating when the event was triggered
+- eventName: for list of supported events see: `S3 Notification Compatibility`_
+- userIdentity.principalId: user that triggered the change
+- requestParameters.sourceIPAddress: not supported
+- responseElements.x-amz-request-id: request ID of the original change 
+- responseElements.x_amz_id_2: RGW on which the change was made 
+- s3.configurationId: notification ID that created the event
+- s3.bucket.name: name of the bucket
+- s3.bucket.ownerIdentity.principalId: owner of the bucket
+- s3.bucket.arn: ARN of the bucket
+- s3.bucket.id: Id of the bucket (an extension to the S3 notification API)
+- s3.object.key: object key
+- s3.object.size: object size
+- s3.object.eTag: object etag
+- s3.object.version: object version in case of versioned bucket
+- s3.object.sequencer: monotonically increasing identifier of the change per object (hexadecimal format)
+- s3.object.metadata: any metadata set on the object sent as: ``x-amz-meta-`` (an extension to the S3 notification API) 
+- s3.eventId: not supported (an extension to the S3 notification API)
+
+.. _PubSub Module : ../pubsub-module
+.. _S3 Notification Compatibility: ../s3-notification-compatibility
+.. _AWS Create Topic: https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html
+.. _Bucket Operations: ../s3/bucketops
index 796b18d3631ae77a4cd36535405c0b12e103ce36..11dbd7e1e3f43f7a7139655f9eaa1c4f5eb158c0 100644 (file)
@@ -1,49 +1,73 @@
-=========================
+================== 
 PubSub Sync Module
-=========================
+==================
 
 .. versionadded:: Nautilus
 
+.. contents::
+
 This sync module provides a publish and subscribe mechanism for the object store modification
-events. Events are published into defined topics. Topics can be subscribed to, and events
+events. Events are published into predefined topics. Topics can be subscribed to, and events
 can be pulled from them. Events need to be acked. Also, events will expire and disappear
-after a period of time. A push notification mechanism exists too, currently supporting HTTP and
-AMQP0.9.1 endpoints.
+after a period of time. 
+
+A push notification mechanism exists too, currently supporting HTTP and
+AMQP0.9.1 endpoints, on top of storing the events in Ceph. If events should only be pushed to an endpoint
+and do not need to be stored in Ceph, the `Bucket Notification`_ mechanism should be used instead of pubsub sync module. 
 
 A user can create different topics. A topic entity is defined by its user and its name. A
 user can only manage its own topics, and can only subscribe to events published by buckets
 it owns.
 
-In order to publish events for specific bucket a notification needs to be created. A
-notification can be created only on subset of event types, or for all event types (default).
-There can be multiple notifications for any specific topic.
+In order to publish events for specific bucket a notification entity needs to be created. A
+notification can be created on a subset of event types, or for all event types (default).
+There can be multiple notifications for any specific topic, and the same topic could be used for multiple notifications.
 
 A subscription to a topic can also be defined. There can be multiple subscriptions for any
 specific topic.
 
-A new REST api has been defined to provide configuration and control interfaces for the pubsub
-mechanisms.
+REST API has been defined to provide configuration and control interfaces for the pubsub
+mechanisms. This API has two flavors, one is S3-compatible and one is not. The two flavors can be used
+together, although it is recommended to use the S3-compatible one. 
+The S3-compatible API is similar to the one used in the bucket notification mechanism.
 
-Events are stored as rgw objects in a special bucket, under a special user. Events cannot
-be accessed directly, but need to be pulled and acked using the new REST api.
+Events are stored as RGW objects in a special bucket, under a special user. Events cannot
+be accessed directly, but need to be pulled and acked using the new REST API.
 
+.. toctree::
+   :maxdepth: 1
 
+   S3 Bucket Notification Compatibility <s3-notification-compatibility>
+
+PubSub Zone Configuration
+-------------------------
 
-PubSub Tier Type Configuration
--------------------------------------
+The pubsub sync module requires the creation of a new zone in a `Multisite`_ environment.
+First, a master zone must exist, then a secondary zone should be created.
+In the creation of the secondary zone, its tier type must be set to ``pubsub``:
 
 ::
 
-     {
-        "tenant": <tenant>,             # default: <empty>
-        "uid": <uid>,                   # default: "pubsub"
-        "data_bucket_prefix": <prefix>  # default: "pubsub-"
-        "data_oid_prefix": <prefix>     #
+   # radosgw-admin zone create --rgw-zonegroup={zone-group-name} \
+                               --rgw-zone={zone-name} \
+                               --endpoints={http://fqdn}[,{http://fqdn}] \
+                               --sync-from-all=0 \
+                               --sync-from={master-zone-name} \
+                               --tier-type=pubsub
 
-        "events_retention_days": <days> # default: 7
-      }
 
+PubSub Zone Configuration Parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                
+::
 
+   {
+       "tenant": <tenant>,             # default: <empty>
+       "uid": <uid>,                   # default: "pubsub"
+       "data_bucket_prefix": <prefix>  # default: "pubsub-"
+       "data_oid_prefix": <prefix>     #
+       "events_retention_days": <days> # default: 7
+   }
 
 * ``tenant`` (string)
 
@@ -65,82 +89,129 @@ The oid prefix for the stored events.
 
 How many days to keep events that weren't acked.
 
-How to Configure
-~~~~~~~~~~~~~~~~
-
-See `Multisite Configuration`_ for how to multisite config instructions. The pubsub sync module requires a creation of a new zone. The zone
-tier type needs to be defined as ``pubsub``:
-
-::
-
-    # radosgw-admin zone create --rgw-zonegroup={zone-group-name} \
-                                --rgw-zone={zone-name} \
-                                --endpoints={http://fqdn}[,{http://fqdn}]
-                                --tier-type=pubsub
-
+Configuring Parameters via CLI
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The tier configuration can be then done using the following command
+The tier configuration could be set using the following command:
 
 ::
 
-    # radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
+   # radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                                 --rgw-zone={zone-name} \
                                 --tier-config={key}={val}[,{key}={val}]
 
-The ``key`` in the configuration specifies the config variable that needs to be updated, and
-the ``val`` specifies its new value. Nested values can be accessed using period. For example:
+Where the ``key`` in the configuration specifies the configuration variable that needs to be updated (from the list above), and
+the ``val`` specifies its new value. For example, setting the pubsub control user ``uid`` to ``user_ps``:
 
 ::
 
-    # radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
+   # radosgw-admin zone modify --rgw-zonegroup={zone-group-name} \
                                 --rgw-zone={zone-name} \
                                 --tier-config=uid=pubsub
 
-
 A configuration field can be removed by using ``--tier-config-rm={key}``.
 
 PubSub Performance Stats
 -------------------------
-- **pubsub_event_triggered**: running counter of events with at lease one pubsub topic associated with them
-- **pubsub_event_lost**: running counter of events that had  pubsub topics and subscriptions associated with them but that were not stored or pushed to any of the subscriptions
-- **pubsub_store_ok**: running counter, for all subscriptions, of stored pubsub events 
-- **pubsub_store_fail**: running counter, for all subscriptions, of pubsub events that needed to be stored but failed
-- **pubsub_push_ok**: running counter, for all subscriptions, of pubsub events successfully pushed to their endpoint
-- **pubsub_push_fail**: running counter, for all subscriptions, of pubsub events failed to be pushed to their endpoint
-- **pubsub_push_pending**: gauge value of pubsub events pushed to a endpoined but not acked or nacked yet
+Same counters are shared between the pubsub sync module and the notification mechanism.
+
+- ``pubsub_event_triggered``: running counter of events with at lease one topic associated with them
+- ``pubsub_event_lost``: running counter of events that had topics and subscriptions associated with them but that were not stored or pushed to any of the subscriptions
+- ``pubsub_store_ok``: running counter, for all subscriptions, of stored events 
+- ``pubsub_store_fail``: running counter, for all subscriptions, of events failed to be stored
+- ``pubsub_push_ok``: running counter, for all subscriptions, of events successfully pushed to their endpoint
+- ``pubsub_push_fail``: running counter, for all subscriptions, of events failed to be pushed to their endpoint
+- ``pubsub_push_pending``: gauge value of events pushed to an endpoint but not acked or nacked yet
 
-Note that **pubsub_event_triggered** and **pubsub_event_lost** are incremented per event, while: **pubsub_store_ok**, **pubsub_store_fail**, **pubsub_push_ok**, **pubsub_push_fail**, are incremented per store/push action on each subscriptions.
+.. note:: 
+
+    ``pubsub_event_triggered`` and ``pubsub_event_lost`` are incremented per event, while: 
+    ``pubsub_store_ok``, ``pubsub_store_fail``, ``pubsub_push_ok``, ``pubsub_push_fail``, are incremented per store/push action on each subscriptions.
 
 PubSub REST API
--------------------------
+---------------
 
+.. tip:: PubSub REST calls, and only them, should be sent to an RGW which belong to a PubSub zone
 
 Topics
 ~~~~~~
-
 Create a Topic
-``````````````````````````
+``````````````
+
+This will create a new topic. Topic creation is needed both for both flavors of the API.
+Optionally the topic could be provided with push endpoint parameters that would be used later
+when an S3-compatible notification is created.
+Upon successful request, the response will include the topic ARN that could be later used to reference this topic in an S3-compatible notification request. 
+To update a topic, use the same command used for topic creation, with the topic name of an existing topic and different endpoint values.
 
-This will create a new topic.
+.. tip:: Any S3-compatible notification already associated with the topic needs to be re-created for the topic update to take effect 
 
 ::
 
-   PUT /topics/<topic-name>
+   PUT /topics/<topic-name>[?push-endpoint=<endpoint>[&amqp-exchange=<exchange>][&amqp-ack-level=<level>][&verify-ssl=true|false]]
+
+Request parameters:
+
+- push-endpoint: URI of endpoint to send push notification to
+
+ - URI schema is: ``http[s]|amqp://[<user>:<password>@]<fqdn>[:<port>][/<amqp-vhost>]``
+ - Same schema is used for HTTP and AMQP endpoints (except amqp-vhost which is specific to AMQP)
+ - Default values for HTTP/S: no user/password, port 80/443
+ - Default values for AMQP: user/password=guest/guest, port 5672, amqp-vhost is "/"
+
+- verify-ssl: can be used with https endpoints (ignored for other endpoints), indicate whether the server certificate is validated or not ("true" by default)
+- amqp-exchange: mandatory parameter for AMQP endpoint. The exchanges must exist and be able to route messages based on topics
+- amqp-ack-level: No end2end acking is required, as messages may persist in the broker before delivered into their final destination. 2 ack methods exist:
+
+ - "none" - message is considered "delivered" if sent to broker
+ - "broker" message is considered "delivered" if acked by broker
+
+The topic ARN in the response will have the following format:
 
+::
+
+   arn:aws:sns:<zone-group>:<tenant>:<topic>
 
 Get Topic Information
-````````````````````````````````
+`````````````````````
 
-Returns information about specific topic. This includes subscriptions to that topic.
+Returns information about specific topic. This includes subscriptions to that topic, and push-endpoint information, if provided.
 
 ::
 
    GET /topics/<topic-name>
 
+Response will have the following format (JSON):
+
+::
 
+   {
+       "topic":{
+           "user":"",
+           "name":"",
+           "dest":{
+               "bucket_name":"",
+               "oid_prefix":"",
+               "push_endpoint":"",
+               "push_endpoint_args":""
+           },
+           "arn":""
+       },
+       "subs":[]
+   }             
+
+- topic.user: name of the user that created the topic
+- name: name of the topic
+- dest.bucket_name: not used
+- dest.oid_prefix: not used
+- dest.push_endpoint: in case of S3-compliant notifications, this value will be used as the push-endpoint URL
+- dest.push_endpoint_args: in case of S3-compliant notifications, this value will be used as the push-endpoint args
+- topic.arn: topic ARN
+- subs: list of subscriptions associated with this topic
 
 Delete Topic
-````````````````````````````````````
+````````````
 
 ::
 
@@ -149,21 +220,35 @@ Delete Topic
 Delete the specified topic.
 
 List Topics
-````````````````````````````````````
+```````````
 
 List all topics that user defined.
 
 ::
 
    GET /topics
+S3-Compliant Notifications
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+Detailed under: `Bucket Operations`_.
 
+.. note:: 
+
+    - Notification creation will also create a subscription for pushing/pulling events
+    - The generated subscription's name will have the same as the notification Id, and could be used later to fetch and ack events with the subscription API.
+    - Notification deletion will deletes all generated subscriptions
+    - In case that bucket deletion implicitly deletes the notification, 
+      the associated subscription will not be deleted automatically (any events of the deleted bucket could still be access),
+      and will have to be deleted explicitly with the subscription deletion API
+    - Filtering based on metadata (which is an extension to S3) is not supported, and such rules will be ignored
 
-Notifications
-~~~~~~~~~~~~~
+
+Non S3-Compliant Notifications
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Create a Notification
-``````````````````````````
+`````````````````````
 
 This will create a publisher for a specific bucket into a topic.
 
@@ -171,15 +256,13 @@ This will create a publisher for a specific bucket into a topic.
 
    PUT /notifications/bucket/<bucket>?topic=<topic-name>[&events=<event>[,<event>]]
 
+Request parameters:
 
-Request Params:
- - topic-name: name of topic
- - event: event type (string), one of: OBJECT_CREATE, OBJECT_DELETE 
-
-
-
+- topic-name: name of topic
+- event: event type (string), one of: ``OBJECT_CREATE``, ``OBJECT_DELETE``, ``DELETE_MARKER_CREATE``
 Delete Notification Information
-````````````````````````````````
+```````````````````````````````
 
 Delete publisher from a specific bucket into a specific topic.
 
@@ -187,13 +270,47 @@ Delete publisher from a specific bucket into a specific topic.
 
    DELETE /notifications/bucket/<bucket>?topic=<topic-name>
 
-Request Params:
- - topic-name: name of topic
+Request parameters:
+
+- topic-name: name of topic
+
+.. note:: When the bucket is deleted, any notification defined on it is also deleted
+
+List Notifications
+``````````````````
+
+List all topics with associated events defined on a bucket.
+
+::
+
+   GET /notifications/bucket/<bucket>
+
+Response will have the following format (JSON):
+
+::
 
+   {"topics":[
+      {
+         "topic":{
+            "user":"",
+            "name":"",
+            "dest":{
+               "bucket_name":"",
+               "oid_prefix":"",
+               "push_endpoint":"",
+               "push_endpoint_args":""
+            }
+            "arn":""
+         },
+         "events":[]
+      }
+    ]}            
 
+Subscriptions
+~~~~~~~~~~~~~
 
-Create Subscription
-````````````````````````````````````
+Create Subscription
+`````````````````````
 
 Creates a new subscription.
 
@@ -201,61 +318,192 @@ Creates a new subscription.
 
    PUT /subscriptions/<sub-name>?topic=<topic-name>[&push-endpoint=<endpoint>[&amqp-exchange=<exchange>][&amqp-ack-level=<level>][&verify-ssl=true|false]]
 
-Request Params:
+Request parameters:
 
- - topic-name: name of topic
- - push-endpoint: URI of endpoint to send push notification to
+- topic-name: name of topic
+- push-endpoint: URI of endpoint to send push notification to
 
 - URI schema is: ``http|amqp://[<user>:<password>@]<fqdn>[:<port>][/<amqp-vhost>]``
 - Same schema is used for HTTP and AMQP endpoints (except amqp-vhost which is specific to AMQP)
-  - Default values for HTTP: no user/password, port 80
 - Default values for AMQP: user/password=guest/guest, port 5672, amqp-vhost is "/"
- URI schema is: ``http[s]|amqp://[<user>:<password>@]<fqdn>[:<port>][/<amqp-vhost>]``
+ - Same schema is used for HTTP and AMQP endpoints (except amqp-vhost which is specific to AMQP)
+ - Default values for HTTP/S: no user/password, port 80/443
+ - Default values for AMQP: user/password=guest/guest, port 5672, amqp-vhost is "/"
 
- - verify-ssl: can be used with https endpoints (ignored for other endpoints), indicate whether the server certificate is validated or not ("true" by default)
- - amqp-exchange: mandatory parameter for AMQP endpoint. The exchanges must exist and be able to route messages based on topics
- - amqp-ack-level: 2 ack levels exist: "none" - message is considered "delivered" if sent to broker; 
-   "broker" message is considered "delivered" if acked by broker. 
-   No end2end acking is required, as messages may persist in the broker before delivered into their final destination
+- verify-ssl: can be used with https endpoints (ignored for other endpoints), indicate whether the server certificate is validated or not ("true" by default)
+- amqp-exchange: mandatory parameter for AMQP endpoint. The exchanges must exist and be able to route messages based on topics
+- amqp-ack-level: No end2end acking is required, as messages may persist in the broker before delivered into their final destination. 2 ack methods exist:
 
-Get Subscription Info
-````````````````````````````````````
+ - "none": message is considered "delivered" if sent to broker
+ - "broker": message is considered "delivered" if acked by broker
 
-Returns info about specific subscription
+Get Subscription Information
+````````````````````````````
+
+Returns information about specific subscription.
 
 ::
 
    GET /subscriptions/<sub-name>
 
+Response will have the following format (JSON):
+
+::
+
+   {
+       "user":"",
+       "name":"",
+       "topic":"",
+       "dest":{
+           "bucket_name":"",
+           "oid_prefix":"",
+           "push_endpoint":"",
+           "push_endpoint_args":""
+       }
+       "s3_id":""
+   }             
+
+- user: name of the user that created the subscription
+- name: name of the subscription
+- topic: name of the topic the subscription is associated with
 
 Delete Subscription
-`````````````````````````````````
+```````````````````
 
-Removes a subscription
+Removes a subscription.
 
 ::
 
    DELETE /subscriptions/<sub-name>
 
-
 Events
 ~~~~~~
 
 Pull Events
-`````````````````````````````````
+```````````
 
-Pull events sent to a specific subscription
+Pull events sent to a specific subscription.
 
 ::
 
    GET /subscriptions/<sub-name>?events[&max-entries=<max-entries>][&marker=<marker>]
 
-Request Params:
- - marker: pagination marker for list of events, if not specified will start from the oldest
- - max-entries: max number of events to return
+Request parameters:
+
+- marker: pagination marker for list of events, if not specified will start from the oldest
+- max-entries: max number of events to return
+
+The response will hold information on the current marker and whether there are more events not fetched:
+
+::
+
+   {"next_marker":"","is_truncated":"",...}
+
+
+The actual content of the response is depended with how the subscription was created.
+In case that the subscription was created via an S3-compatible notification, 
+the events will have an S3-compatible record format (JSON):
+
+::
+
+   {"Records":[  
+       {
+           "eventVersion":"2.1"
+           "eventSource":"aws:s3",
+           "awsRegion":"",
+           "eventTime":"",
+           "eventName":"",
+           "userIdentity":{  
+               "principalId":""
+           },
+           "requestParameters":{
+               "sourceIPAddress":""
+           },
+           "responseElements":{
+               "x-amz-request-id":"",
+               "x-amz-id-2":""
+           },
+           "s3":{
+               "s3SchemaVersion":"1.0",
+               "configurationId":"",
+               "bucket":{
+                   "name":"",
+                   "ownerIdentity":{
+                       "principalId":""
+                   },
+                   "arn":"",
+                   "id":""
+               },
+               "object":{
+                   "key":"",
+                   "size":"0",
+                   "eTag":"",
+                   "versionId":"",
+                   "sequencer":"",
+                   "metadata":""
+               }
+           },
+           "eventId":"",
+       }
+   ]}
+
+- awsRegion: zonegroup
+- eventTime: timestamp indicating when the event was triggered
+- eventName: either ``s3:ObjectCreated:``, or ``s3:ObjectRemoved:``
+- userIdentity: not supported 
+- requestParameters: not supported
+- responseElements: not supported
+- s3.configurationId: notification ID that created the subscription for the event
+- s3.eventId: unique ID of the event, that could be used for acking (an extension to the S3 notification API)
+- s3.bucket.name: name of the bucket
+- s3.bucket.ownerIdentity.principalId: owner of the bucket
+- s3.bucket.arn: ARN of the bucket
+- s3.bucket.id: Id of the bucket (an extension to the S3 notification API)
+- s3.object.key: object key
+- s3.object.size: not supported
+- s3.object.eTag: object etag
+- s3.object.version: object version in case of versioned bucket
+- s3.object.sequencer: monotonically increasing identifier of the change per object (hexadecimal format)
+- s3.object.metadata: not supported (an extension to the S3 notification API)
+- s3.eventId: unique ID of the event, that could be used for acking (an extension to the S3 notification API)
+
+In case that the subscription was not created via a non S3-compatible notification, 
+the events will have the following event format (JSON):
+
+::
 
+    {"events":[
+       {
+           "id":"",
+           "event":"",
+           "timestamp":"",
+           "info":{
+               "attrs":{
+                   "mtime":""
+               },
+               "bucket":{
+                   "bucket_id":"",
+                   "name":"",
+                   "tenant":""
+               },
+               "key":{
+                   "instance":"",
+                   "name":""
+               }
+           }
+       }
+   ]}
+
+- id: unique ID of the event, that could be used for acking
+- event: one of: ``OBJECT_CREATE``, ``OBJECT_DELETE``, ``DELETE_MARKER_CREATE``
+- timestamp: timestamp indicating when the event was sent
+- info.attrs.mtime: timestamp indicating when the event was triggered
+- info.bucket.bucket_id: id of the bucket
+- info.bucket.name: name of the bucket
+- info.bucket.tenant: tenant the bucket belongs to
+- info.key.instance: object version in case of versioned bucket
+- info.key.name: object key
 
 Ack Event
-`````````````````````````````````
+`````````
 
 Ack event so that it can be removed from the subscription history.
 
@@ -263,8 +511,10 @@ Ack event so that it can be removed from the subscription history.
 
    POST /subscriptions/<sub-name>?ack&event-id=<event-id>
 
+Request parameters:
 
-Request Params:
- - event-id: id of event to be acked
+- event-id: id of event to be acked
 
-.. _Multisite Configuration: ./multisite.rst
+.. _Multisite : ../multisite
+.. _Bucket Notification : ../notifications
+.. _Bucket Operations: ../s3/bucketops
diff --git a/ceph/doc/radosgw/s3-notification-compatibility.rst b/ceph/doc/radosgw/s3-notification-compatibility.rst
new file mode 100644 (file)
index 0000000..6cc6ac0
--- /dev/null
@@ -0,0 +1,122 @@
+=====================================
+S3 Bucket Notifications Compatibility
+=====================================
+
+Ceph's `Bucket Notifications`_ and `PubSub Module`_ APIs follow `AWS S3 Bucket Notifications API`_. However, some differences exist, as listed below.
+
+
+.. note:: 
+
+    Compatibility is different depending on which of the above mechanism is used
+
+Supported Destination
+---------------------
+
+AWS supports: **SNS**, **SQS** and **Lambda** as possible destinations (AWS internal destinations). 
+Currently, we support: **HTTP/S** and **AMQP**. And also support pulling and acking of events stored in Ceph (as an intenal destination).
+
+We are using the **SNS** ARNs to represent the **HTTP/S** and **AMQP** destinations.
+
+Notification Configuration XML
+------------------------------
+
+Following tags (and the tags inside them) are not supported:
+
++-----------------------------------+----------------------------------------------+
+| Tag                               | Remaks                                       |
++===================================+==============================================+
+| ``<QueueConfiguration>``          | not needed, we treat all destinations as SNS |
++-----------------------------------+----------------------------------------------+
+| ``<CloudFunctionConfiguration>``  | not needed, we treat all destinations as SNS |
++-----------------------------------+----------------------------------------------+
+
+REST API Extension 
+------------------
+
+Ceph's bucket notification API has the following extensions:
+
+- Deletion of a specific notification, or all notifications on a bucket, using the ``DELETE`` verb
+
+ - In S3, all notifications are deleted when the bucket is deleted, or when an empty notification is set on the bucket
+
+- Getting the information on a specific notification (when more than one exists on a bucket)
+
+  - In S3, it is only possible to fetch all notifications on a bucket
+
+- In addition to filtering based on prefix/suffix of object keys we support:
+
+  - Filtering based on regular expression matching
+
+  - Filtering based on metadata attributes attached to the object
+
+- Filtering overlapping is allowed, so that same event could be sent as different notification
+
+
+Unsupported Fields in the Event Record
+--------------------------------------
+
+The records sent for bucket notification follow format described in: `Event Message Structure`_.
+However, the following fields may be sent empty, under the different deployment options (Notification/PubSub):
+
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+| Field                                  | Notification | PubSub        | Description                                                |
++========================================+==============+===============+============================================================+
+| ``userIdentity.principalId``           | Supported    | Not Supported | The identity of the user that triggered the event          |
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+| ``requestParameters.sourceIPAddress``  |         Not Supported        | The IP address of the client that triggered the event      |
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+| ``requestParameters.x-amz-request-id`` | Supported    | Not Supported | The request id that triggered the event                    |
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+| ``requestParameters.x-amz-id-2``       | Supported    | Not Supported | The IP address of the RGW on which the event was triggered |
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+| ``s3.object.size``                     | Supported    | Not Supported | The size of the object                                     |
++----------------------------------------+--------------+---------------+------------------------------------------------------------+
+
+Event Types
+-----------
+
++----------------------------------------------+-----------------+-------------------------------------------+
+| Event                                        | Notification    | PubSub                                    |
++==============================================+=================+===========================================+
+| ``s3:ObjectCreated:*``                       | Supported                                                   |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Put``                     | Supported       | Supported at ``s3:ObjectCreated:*`` level |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Post``                    | Supported       | Not Supported                             |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Copy``                    | Supported       | Supported at ``s3:ObjectCreated:*`` level |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:CompleteMultipartUpload`` | Supported       | Supported at ``s3:ObjectCreated:*`` level |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:*``                       | Supported       | Supported only the specific events below  |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:Delete``                  | Supported                                                   |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:DeleteMarkerCreated``     | Supported                                                   |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRestore:Post``                    | Not applicable to Ceph                                      |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRestore:Complete``                | Not applicable to Ceph                                      |
++----------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ReducedRedundancyLostObject``           | Not applicable to Ceph                                      |
++----------------------------------------------+-----------------+-------------------------------------------+
+
+Topic Configuration
+-------------------
+In the case of bucket notifications, the topics management API will be derived from `AWS Simple Notification Service API`_. 
+Note that most of the API is not applicable to Ceph, and only the following actions are implemented:
+
+ - ``CreateTopic``
+ - ``DeleteTopic``
+ - ``ListTopics``
+
+We also extend it by: 
+
+ - ``GetTopic`` - allowing for fetching a specific topic, instead of all user topics
+ - In ``CreateTopic`` we allow setting endpoint attributes
+
+.. _AWS Simple Notification Service API: https://docs.aws.amazon.com/sns/latest/api/API_Operations.html
+.. _AWS S3 Bucket Notifications API: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
+.. _Event Message Structure: https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html
+.. _`PubSub Module`: ../pubsub-module
+.. _`Bucket Notifications`: ../notifications
index cf6eaba7fa4da55997919f8b8e6353348bb56f07..36cc898ac4434feead440c471585e911ff6ede0f 100644 (file)
@@ -48,7 +48,7 @@ The following table describes the support status for current Amazon S3 functiona
 +---------------------------------+-----------------+----------------------------------------+
 | **Bucket Location**             | Supported       |                                        |
 +---------------------------------+-----------------+----------------------------------------+
-| **Bucket Notification**         | Not Supported   |                                        |
+| **Bucket Notification**         | Supported       | See `S3 Notification Compatibility`_   |
 +---------------------------------+-----------------+----------------------------------------+
 | **Bucket Object Versions**      | Supported       |                                        |
 +---------------------------------+-----------------+----------------------------------------+
@@ -98,3 +98,4 @@ The following common request header fields are not supported:
 +----------------------------+------------+
 
 .. _Amazon S3 API: http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html
+.. _S3 Notification Compatibility: ../s3-notification-compatibility
index 01e5eb4bfdd7c49bd5f33175a78496c02f6043fa..7c94a835d5fc3e41621fe955eef1cd9304da35e5 100644 (file)
@@ -29,11 +29,14 @@ Syntax
 Parameters
 ~~~~~~~~~~
 
+
 +---------------+----------------------+-----------------------------------------------------------------------------+------------+
 | Name          | Description          | Valid Values                                                                | Required   |
 +===============+======================+=============================================================================+============+
 | ``x-amz-acl`` | Canned ACLs.         | ``private``, ``public-read``, ``public-read-write``, ``authenticated-read`` | No         |
 +---------------+----------------------+-----------------------------------------------------------------------------+------------+
+| ``x-amz-bucket-object-lock-enabled`` | Enable object lock on bucket. | ``true``, ``false``                         | No         |
++--------------------------------------+-------------------------------+---------------------------------------------+------------+
 
 Request Entities
 ~~~~~~~~~~~~~~~~
@@ -386,3 +389,294 @@ REQUEST ENTITIES
 +-----------------------------+-----------+---------------------------------------------------------------------------+
 | ``Status``                  | String    | Sets the versioning state of the bucket.  Valid Values: Suspended/Enabled |
 +-----------------------------+-----------+---------------------------------------------------------------------------+
+
+PUT BUCKET OBJECT LOCK
+--------------------------------
+
+Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock configuration will be
+applied by default to every new object placed in the specified bucket.
+
+Syntax
+~~~~~~
+
+::
+
+    PUT /{bucket}?object-lock HTTP/1.1
+
+Request Entities
+~~~~~~~~~~~~~~~~
+
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| Name                        | Type        | Description                                                                            | Required |
++=============================+=============+========================================================================================+==========+
+| ``ObjectLockConfiguration`` | Container   | A container for the request.                                                           |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``ObjectLockEnabled``       | String      | Indicates whether this bucket has an Object Lock configuration enabled.                |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Rule``                    | Container   | The Object Lock rule in place for the specified bucket.                                |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``DefaultRetention``        | Container   | The default retention period applied to new objects placed in the specified bucket.    |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Mode``                    | String      | The default Object Lock retention mode. Valid Values:  GOVERNANCE/COMPLIANCE           |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Days``                    | Integer     | The number of days specified for the default retention period.                         |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Years``                   | Integer     | The number of years specified for the default retention period.                        |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+
+HTTP Response
+~~~~~~~~~~~~~
+
+If the bucket object lock is not enabled when creating the bucket, the operation will fail.
+
++---------------+-----------------------+----------------------------------------------------------+
+| HTTP Status   | Status Code           | Description                                              |
++===============+=======================+==========================================================+
+| ``400``       | MalformedXML          | The XML is not well-formed                               |
++---------------+-----------------------+----------------------------------------------------------+
+| ``409``       | InvalidBucketState    | The bucket object lock is not enabled                    |
++---------------+-----------------------+----------------------------------------------------------+
+
+GET BUCKET OBJECT LOCK
+--------------------------------
+
+Gets the Object Lock configuration for a bucket. The rule specified in the Object Lock configuration will be applied by
+default to every new object placed in the specified bucket.
+
+Syntax
+~~~~~~
+
+::
+
+    GET /{bucket}?object-lock HTTP/1.1
+
+
+Response Entities
+~~~~~~~~~~~~~~~~~
+
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| Name                        | Type        | Description                                                                            | Required |
++=============================+=============+========================================================================================+==========+
+| ``ObjectLockConfiguration`` | Container   | A container for the request.                                                           |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``ObjectLockEnabled``       | String      | Indicates whether this bucket has an Object Lock configuration enabled.                |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Rule``                    | Container   | The Object Lock rule in place for the specified bucket.                                |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``DefaultRetention``        | Container   | The default retention period applied to new objects placed in the specified bucket.    |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Mode``                    | String      | The default Object Lock retention mode. Valid Values:  GOVERNANCE/COMPLIANCE           |   Yes    |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Days``                    | Integer     | The number of days specified for the default retention period.                         |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+| ``Years``                   | Integer     | The number of years specified for the default retention period.                        |   No     |
++-----------------------------+-------------+----------------------------------------------------------------------------------------+----------+
+
+Create Notification
+-------------------
+
+Create a publisher for a specific bucket into a topic.
+
+Syntax
+~~~~~~
+
+::
+
+    PUT /<bucket name>?notification HTTP/1.1
+
+
+Request Entities
+~~~~~~~~~~~~~~~~
+
+Parameters are XML encoded in the body of the request, in the following format:
+
+::
+
+   <NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
+       <TopicConfiguration>
+           <Id></Id>
+           <Topic></Topic>
+           <Event></Event>
+           <Filter>
+               <S3Key>
+                   <FilterRule>
+                       <Name></Name>
+                       <Value></Value>
+                   </FilterRule>
+                   </S3Key>
+                <S3Metadata>
+                    <FilterRule>
+                        <Name></Name>
+                        <Value></Value>
+                    </FilterRule>
+                </s3Metadata>
+            </Filter>
+       </TopicConfiguration>
+   </NotificationConfiguration>
+
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| Name                          | Type      | Description                                                                          | Required |
++===============================+===========+======================================================================================+==========+
+| ``NotificationConfiguration`` | Container | Holding list of ``TopicConfiguration`` entities                                      | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``TopicConfiguration``        | Container | Holding ``Id``, ``Topic`` and list of ``Event`` entities                             | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Id``                        | String    | Name of the notification                                                             | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Topic``                     | String    | Topic ARN. Topic must be created beforehand                                          | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Event``                     | String    | List of supported events see: `S3 Notification Compatibility`_.  Multiple ``Event``  | No       |
+|                               |           | entities can be used. If omitted, all events are handled                             |          |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Filter``                    | Container | Holding ``S3Key`` and ``S3Metadata`` entities                                        | No       |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``S3Key``                     | Container | Holding a list of ``FilterRule`` entities, for filtering based on object key.        | No       |
+|                               |           | At most, 3 entities may be in the list, with ``Name`` be ``prefix``, ``suffix`` or   |          |
+|                               |           | ``regex``. All filter rules in the list must match for the filter to match.          |          |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``S3Metadata``                | Container | Holding a list of ``FilterRule`` entities, for filtering based on object metadata.   | No       |
+|                               |           | All filter rules in the list must match the ones defined on the object. The object,  |          |
+|                               |           | have other metadata entitied not listed in the filter.                               |          |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``S3Key.FilterRule``          | Container | Holding ``Name`` and ``Value`` entities. ``Name`` would  be: ``prefix``, ``suffix``  | Yes      |
+|                               |           | or ``regex``. The ``Value`` would hold the key prefix, key suffix or a regular       |          |
+|                               |           | expression for matching the key, accordingly.                                        |          |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``S3Metadata.FilterRule``     | Container | Holding ``Name`` and ``Value`` entities. ``Name`` would be the name of the metadata  | Yes      |
+|                               |           | attribute (e.g. ``x-amz-meta-xxx``). The ``Value`` would be the expected value for   |          | 
+|                               |           | this attribute                                                                       |          |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+
+
+HTTP Response
+~~~~~~~~~~~~~
+
++---------------+-----------------------+----------------------------------------------------------+
+| HTTP Status   | Status Code           | Description                                              |
++===============+=======================+==========================================================+
+| ``400``       | MalformedXML          | The XML is not well-formed                               |
++---------------+-----------------------+----------------------------------------------------------+
+| ``400``       | InvalidArgument       | Missing Id; Missing/Invalid Topic ARN; Invalid Event     |
++---------------+-----------------------+----------------------------------------------------------+
+| ``404``       | NoSuchBucket          | The bucket does not exist                                |
++---------------+-----------------------+----------------------------------------------------------+
+| ``404``       | NoSuchKey             | The topic does not exist                                 |
++---------------+-----------------------+----------------------------------------------------------+
+
+
+Delete Notification
+-------------------
+
+Delete a specific, or all, notifications from a bucket.
+
+.. note:: 
+
+    - Notification deletion is an extension to the S3 notification API
+    - When the bucket is deleted, any notification defined on it is also deleted 
+    - Deleting an unkown notification (e.g. double delete) is not considered an error
+
+Syntax
+~~~~~~
+
+::
+
+    DELETE /bucket?notification[=<notification-id>] HTTP/1.1
+
+
+Parameters
+~~~~~~~~~~
+
++------------------------+-----------+----------------------------------------------------------------------------------------+
+| Name                   | Type      | Description                                                                            |
++========================+===========+========================================================================================+
+| ``notification-id``    | String    | Name of the notification. If not provided, all notifications on the bucket are deleted |
++------------------------+-----------+----------------------------------------------------------------------------------------+
+
+HTTP Response
+~~~~~~~~~~~~~
+
++---------------+-----------------------+----------------------------------------------------------+
+| HTTP Status   | Status Code           | Description                                              |
++===============+=======================+==========================================================+
+| ``404``       | NoSuchBucket          | The bucket does not exist                                |
++---------------+-----------------------+----------------------------------------------------------+
+
+Get/List Notification
+---------------------
+
+Get a specific notification, or list all notifications configured on a bucket.
+
+Syntax
+~~~~~~
+
+::
+
+    GET /bucket?notification[=<notification-id>] HTTP/1.1 
+
+
+Parameters
+~~~~~~~~~~
+
++------------------------+-----------+----------------------------------------------------------------------------------------+
+| Name                   | Type      | Description                                                                            |
++========================+===========+========================================================================================+
+| ``notification-id``    | String    | Name of the notification. If not provided, all notifications on the bucket are listed  |
++------------------------+-----------+----------------------------------------------------------------------------------------+
+
+Response Entities
+~~~~~~~~~~~~~~~~~
+
+Response is XML encoded in the body of the request, in the following format:
+
+::
+
+   <NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
+       <TopicConfiguration>
+           <Id></Id>
+           <Topic></Topic>
+           <Event></Event>
+           <Filter>
+               <S3Key>
+                   <FilterRule>
+                       <Name></Name>
+                       <Value></Value>
+                   </FilterRule>
+                   </S3Key>
+                <S3Metadata>
+                    <FilterRule>
+                        <Name></Name>
+                        <Value></Value>
+                    </FilterRule>
+                </s3Metadata>
+            </Filter>
+       </TopicConfiguration>
+   </NotificationConfiguration>
+
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| Name                          | Type      | Description                                                                          | Required |
++===============================+===========+======================================================================================+==========+
+| ``NotificationConfiguration`` | Container | Holding list of ``TopicConfiguration`` entities                                      | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``TopicConfiguration``        | Container | Holding ``Id``, ``Topic`` and list of ``Event`` entities                             | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Id``                        | String    | Name of the notification                                                             | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Topic``                     | String    | Topic ARN                                                                            | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Event``                     | String    | Handled event. Multiple ``Event`` entities may exist                                 | Yes      |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+| ``Filter``                    | Container | Holding the filters configured for this notification                                 | No       |
++-------------------------------+-----------+--------------------------------------------------------------------------------------+----------+
+
+HTTP Response
+~~~~~~~~~~~~~
+
++---------------+-----------------------+----------------------------------------------------------+
+| HTTP Status   | Status Code           | Description                                              |
++===============+=======================+==========================================================+
+| ``404``       | NoSuchBucket          | The bucket does not exist                                |
++---------------+-----------------------+----------------------------------------------------------+
+| ``404``       | NoSuchKey             | The notification does not exist (if provided)            |
++---------------+-----------------------+----------------------------------------------------------+
+
+.. _S3 Notification Compatibility: ../s3-notification-compatibility
index 37a65c130ceec0fb8fcd5e363af52e40a41b7a46..2ac52607fe31522871d4fc3dd05b5ec761e28dbc 100644 (file)
@@ -403,6 +403,7 @@ Syntax
     DELETE /{bucket}/{object}?uploadId= HTTP/1.1
 
 
+
 Append Object
 -------------
 Append data to an object. You must have write permissions on the bucket to perform this operation.
@@ -410,7 +411,7 @@ It is used to upload files in appending mode. The type of the objects created by
 operation is Appendable Object, and the type of the objects uploaded with the Put Object operation is Normal Object.
 **Append Object can't be used if bucket versioning is enabled or suspended.**
 **Synced object will become normal in multisite, but you can still append to the original object.**
-
+**Compression and encryption features are disabled for Appendable objects.**
 
 Syntax
 ~~~~~~
@@ -458,3 +459,100 @@ The following HTTP response may be returned:
 | **409**       | InvalidBucketstate         | Bucket versioning is enabled or suspended         |
 +---------------+----------------------------+---------------------------------------------------+
 
+
+Put Object Retention
+--------------------
+Places an Object Retention configuration on an object.
+
+Syntax
+~~~~~~
+
+::
+
+    PUT /{bucket}/{object}?retention&versionId= HTTP/1.1
+
+Request Entities
+~~~~~~~~~~~~~~~~
+
++---------------------+-------------+-------------------------------------------------------------------------------+------------+
+| Name                | Type        | Description                                                                   |  Required  |
++=====================+=============+===============================================================================+============+
+| ``Retention``       | Container   | A container for the request.                                                  |    Yes     |
++---------------------+-------------+-------------------------------------------------------------------------------+------------+
+| ``Mode``            | String      | Retention mode for the specified object. Valid Values:  GOVERNANCE/COMPLIANCE |    Yes     |
++---------------------+-------------+--------------------------------------------------------------------------------------------+
+| ``RetainUntilDate`` | Timestamp   | Retention date. Format: 2020-01-05T00:00:00.000Z                              |    Yes     |
++---------------------+-------------+--------------------------------------------------------------------------------------------+
+
+
+Get Object Retention
+--------------------
+Gets an Object Retention configuration on an object.
+
+
+Syntax
+~~~~~~
+
+::
+
+    GET /{bucket}/{object}?retention&versionId= HTTP/1.1
+
+Response Entities
+~~~~~~~~~~~~~~~~~
+
++---------------------+-------------+-------------------------------------------------------------------------------+------------+
+| Name                | Type        | Description                                                                   |  Required  |
++=====================+=============+===============================================================================+============+
+| ``Retention``       | Container   | A container for the request.                                                  |    Yes     |
++---------------------+-------------+-------------------------------------------------------------------------------+------------+
+| ``Mode``            | String      | Retention mode for the specified object. Valid Values:  GOVERNANCE/COMPLIANCE |    Yes     |
++---------------------+-------------+--------------------------------------------------------------------------------------------+
+| ``RetainUntilDate`` | Timestamp   | Retention date. Format: 2020-01-05T00:00:00.000Z                              |    Yes     |
++---------------------+-------------+--------------------------------------------------------------------------------------------+
+
+
+Put Object Legal Hold
+---------------------
+Applies a Legal Hold configuration to the specified object.
+
+Syntax
+~~~~~~
+
+::
+
+    PUT /{bucket}/{object}?legal-hold&versionId= HTTP/1.1
+
+Request Entities
+~~~~~~~~~~~~~~~~
+
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+| Name           | Type        | Description                                                                            |  Required  |
++================+=============+========================================================================================+============+
+| ``LegalHold``  | Container   | A container for the request.                                                           |    Yes     |
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+| ``Status``     | String      | Indicates whether the specified object has a Legal Hold in place. Valid Values: ON/OFF |    Yes     |
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+
+
+Get Object Legal Hold
+---------------------
+Gets an object's current Legal Hold status.
+
+Syntax
+~~~~~~
+
+::
+
+    GET /{bucket}/{object}?legal-hold&versionId= HTTP/1.1
+
+Response Entities
+~~~~~~~~~~~~~~~~~
+
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+| Name           | Type        | Description                                                                            |  Required  |
++================+=============+========================================================================================+============+
+| ``LegalHold``  | Container   | A container for the request.                                                           |    Yes     |
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+| ``Status``     | String      | Indicates whether the specified object has a Legal Hold in place. Valid Values: ON/OFF |    Yes     |
++----------------+-------------+----------------------------------------------------------------------------------------+------------+
+
index 80c5dcc4187b585238a2a6ec77cc50651cfa0064..80685cd6012f5a2151672ac7a2fcc44056255085 100644 (file)
@@ -171,7 +171,7 @@ edit`` to include the ``xmlns:qemu`` value. Then, add a ``qemu:commandline``
 block as a child of that domain. The following example shows how to set two
 devices with ``qemu id=`` to different ``discard_granularity`` values.
 
-.. code-block:: guess
+.. code-block:: xml
 
        <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
                <qemu:commandline>
index 2ccddde93e47c5ed7888963d8027c5196d1833d1..8762b9b980648c48c5899c40b112129fbbc942bf 100644 (file)
@@ -39,14 +39,14 @@ tasks to configure mirroring using the ``rbd`` command. Mirroring is
 configured on a per-pool basis within the Ceph clusters.
 
 The pool configuration steps should be performed on both peer clusters. These
-procedures assume two clusters, named "local" and "remote", are accessible from
+procedures assume two clusters, named "site-a" and "site-b", are accessible from
 a single host for clarity.
 
 See the `rbd`_ manpage for additional details of how to connect to different
 Ceph clusters.
 
 .. note:: The cluster name in the following examples corresponds to a Ceph
-   configuration file of the same name (e.g. /etc/ceph/remote.conf).  See the
+   configuration file of the same name (e.g. /etc/ceph/site-b.conf).  See the
    `ceph-conf`_ documentation for how to configure multiple clusters.
 
 Enable Mirroring
@@ -66,8 +66,8 @@ The mirroring mode can either be ``pool`` or ``image``:
 
 For example::
 
-        $ rbd --cluster local mirror pool enable image-pool pool
-        $ rbd --cluster remote mirror pool enable image-pool pool
+        $ rbd --cluster site-a mirror pool enable image-pool pool
+        $ rbd --cluster site-b mirror pool enable image-pool pool
 
 Disable Mirroring
 -----------------
@@ -83,23 +83,72 @@ explicitly.
 
 For example::
 
-        $ rbd --cluster local mirror pool disable image-pool
-        $ rbd --cluster remote mirror pool disable image-pool
+        $ rbd --cluster site-a mirror pool disable image-pool
+        $ rbd --cluster site-b mirror pool disable image-pool
 
-Add Cluster Peer
-----------------
+Bootstrap Peers
+---------------
 
 In order for the ``rbd-mirror`` daemon to discover its peer cluster, the peer
-needs to be registered to the pool. To add a mirroring peer Ceph cluster with
-``rbd``, specify the ``mirror pool peer add`` command, the pool name, and a
-cluster specification::
+needs to be registered to the pool and a user account needs to be created.
+This process can be automated with ``rbd`` and the
+``mirror pool peer bootstrap create`` and ``mirror pool peer bootstrap import``
+commands.
+
+To manually create a new bootstrap token with ``rbd``, specify the
+``mirror pool peer bootstrap create`` command, a pool name, along with an
+optional friendly site name to describe the local cluster::
+
+        rbd mirror pool peer bootstrap create [--site-name {local-site-name}] {pool-name}
+
+The output of ``mirror pool peer bootstrap create`` will be a token that should
+be provided to the ``mirror pool peer bootstrap import`` command. For example,
+on site-a::
+
+        $ rbd --cluster site-a mirror pool peer bootstrap create --site-name site-a image-pool
+        eyJmc2lkIjoiOWY1MjgyZGItYjg5OS00NTk2LTgwOTgtMzIwYzFmYzM5NmYzIiwiY2xpZW50X2lkIjoicmJkLW1pcnJvci1wZWVyIiwia2V5IjoiQVFBUnczOWQwdkhvQmhBQVlMM1I4RmR5dHNJQU50bkFTZ0lOTVE9PSIsIm1vbl9ob3N0IjoiW3YyOjE5Mi4xNjguMS4zOjY4MjAsdjE6MTkyLjE2OC4xLjM6NjgyMV0ifQ==
+
+To manually import the bootstrap token created by another cluster with ``rbd``,
+specify the ``mirror pool peer bootstrap import`` command, the pool name, a file
+path to the created token (or '-' to read from standard input), along with an
+optional friendly site name to describe the local cluster and a mirroring
+direction (defaults to rx-tx for bidirectional mirroring, but can also be set
+to rx-only for unidirectional mirroring)::
+
+        rbd mirror pool peer bootstrap import [--site-name {local-site-name}] [--direction {rx-only or rx-tx}] {pool-name} {token-path}
+
+For example, on site-b::
+
+        $ cat <<EOF > token
+        eyJmc2lkIjoiOWY1MjgyZGItYjg5OS00NTk2LTgwOTgtMzIwYzFmYzM5NmYzIiwiY2xpZW50X2lkIjoicmJkLW1pcnJvci1wZWVyIiwia2V5IjoiQVFBUnczOWQwdkhvQmhBQVlMM1I4RmR5dHNJQU50bkFTZ0lOTVE9PSIsIm1vbl9ob3N0IjoiW3YyOjE5Mi4xNjguMS4zOjY4MjAsdjE6MTkyLjE2OC4xLjM6NjgyMV0ifQ==
+        EOF
+        $ rbd --cluster site-b mirror pool peer bootstrap import --site-name site-b image-pool token
+
+Add Cluster Peer Manually
+-------------------------
+
+Cluster peers can be specified manually if desired or if the above bootstrap
+commands are not available with the currently installed Ceph release.
+
+The remote ``rbd-mirror`` daemon will need access to the local cluster to
+perform mirroring. A new local Ceph user should be created for the remote
+daemon to use. To `create a Ceph user`_, with ``ceph`` specify the
+``auth get-or-create`` command, user name, monitor caps, and OSD caps::
+
+        ceph auth get-or-create client.rbd-mirror-peer mon 'profile rbd' osd 'profile rbd'
+
+The resulting keyring should be copied to the other cluster's ``rbd-mirror``
+daemon hosts if not using the Ceph monitor ``config-key`` store described below.
+
+To manually add a mirroring peer Ceph cluster with ``rbd``, specify the
+``mirror pool peer add`` command, the pool name, and a cluster specification::
 
         rbd mirror pool peer add {pool-name} {client-name}@{cluster-name}
 
 For example::
 
-        $ rbd --cluster local mirror pool peer add image-pool client.remote@remote
-        $ rbd --cluster remote mirror pool peer add image-pool client.local@local
+        $ rbd --cluster site-a mirror pool peer add image-pool client.rbd-mirror-peer@site-b
+        $ rbd --cluster site-b mirror pool peer add image-pool client.rbd-mirror-peer@site-a
 
 By default, the ``rbd-mirror`` daemon needs to have access to a Ceph
 configuration file located at ``/etc/ceph/{cluster-name}.conf`` that provides
@@ -112,12 +161,15 @@ stored within the local Ceph monitor ``config-key`` store. To specify the
 peer cluster connection attributes when adding a mirroring peer, use the
 ``--remote-mon-host`` and ``--remote-key-file`` optionals. For example::
 
-        $ rbd --cluster local mirror pool peer add image-pool client.remote@remote --remote-mon-host 192.168.1.1,192.168.1.2 --remote-key-file <(echo 'AQAeuZdbMMoBChAAcj++/XUxNOLFaWdtTREEsw==')
-        $ rbd --cluster local mirror pool info image-pool --all
+        $ cat <<EOF > remote-key-file
+        AQAeuZdbMMoBChAAcj++/XUxNOLFaWdtTREEsw==
+        EOF
+        $ rbd --cluster site-a mirror pool peer add image-pool client.rbd-mirror-peer@site-b --remote-mon-host 192.168.1.1,192.168.1.2 --remote-key-file remote-key-file
+        $ rbd --cluster site-a mirror pool info image-pool --all
         Mode: pool
         Peers: 
-          UUID                                 NAME   CLIENT        MON_HOST                KEY                                      
-          587b08db-3d33-4f32-8af8-421e77abb081 remote client.remote 192.168.1.1,192.168.1.2 AQAeuZdbMMoBChAAcj++/XUxNOLFaWdtTREEsw== 
+          UUID                                 NAME   CLIENT                 MON_HOST                KEY                                      
+          587b08db-3d33-4f32-8af8-421e77abb081 site-b client.rbd-mirror-peer 192.168.1.1,192.168.1.2 AQAeuZdbMMoBChAAcj++/XUxNOLFaWdtTREEsw== 
 
 Remove Cluster Peer
 -------------------
@@ -130,8 +182,8 @@ To remove a mirroring peer Ceph cluster with ``rbd``, specify the
 
 For example::
 
-        $ rbd --cluster local mirror pool peer remove image-pool 55672766-c02b-4729-8567-f13a66893445
-        $ rbd --cluster remote mirror pool peer remove image-pool 60c0e299-b38f-4234-91f6-eed0a367be08
+        $ rbd --cluster site-a mirror pool peer remove image-pool 55672766-c02b-4729-8567-f13a66893445
+        $ rbd --cluster site-b mirror pool peer remove image-pool 60c0e299-b38f-4234-91f6-eed0a367be08
 
 Data Pools
 ----------
@@ -177,7 +229,7 @@ the ``feature enable`` command, the pool and image name, and the feature name::
 
 For example::
 
-        $ rbd --cluster local feature enable image-pool/image-1 journaling
+        $ rbd --cluster site-a feature enable image-pool/image-1 journaling
 
 .. note:: The journaling feature is dependent on the exclusive-lock feature. If
    the exclusive-lock feature is not already enabled, it should be enabled prior
@@ -198,7 +250,7 @@ To enable mirroring for a specific image with ``rbd``, specify the
 
 For example::
 
-        $ rbd --cluster local mirror image enable image-pool/image-1
+        $ rbd --cluster site-a mirror image enable image-pool/image-1
 
 Disable Image Mirroring
 -----------------------
@@ -210,7 +262,7 @@ To disable mirroring for a specific image with ``rbd``, specify the
 
 For example::
 
-        $ rbd --cluster local mirror image disable image-pool/image-1
+        $ rbd --cluster site-a mirror image disable image-pool/image-1
 
 Image Promotion and Demotion
 ----------------------------
@@ -232,7 +284,7 @@ To demote a specific image to non-primary with ``rbd``, specify the
 
 For example::
 
-        $ rbd --cluster local mirror image demote image-pool/image-1
+        $ rbd --cluster site-a mirror image demote image-pool/image-1
 
 To demote all primary images within a pool to non-primary with ``rbd``, specify
 the ``mirror pool demote`` command along with the pool name::
@@ -241,7 +293,7 @@ the ``mirror pool demote`` command along with the pool name::
 
 For example::
 
-        $ rbd --cluster local mirror pool demote image-pool
+        $ rbd --cluster site-a mirror pool demote image-pool
 
 To promote a specific image to primary with ``rbd``, specify the
 ``mirror image promote`` command along with the pool and image name::
@@ -250,7 +302,7 @@ To promote a specific image to primary with ``rbd``, specify the
 
 For example::
 
-        $ rbd --cluster remote mirror image promote image-pool/image-1
+        $ rbd --cluster site-b mirror image promote image-pool/image-1
 
 To promote all non-primary images within a pool to primary with ``rbd``, specify
 the ``mirror pool promote`` command along with the pool name::
@@ -259,7 +311,7 @@ the ``mirror pool promote`` command along with the pool name::
 
 For example::
 
-        $ rbd --cluster local mirror pool promote image-pool
+        $ rbd --cluster site-a mirror pool promote image-pool
 
 .. tip:: Since the primary / non-primary status is per-image, it is possible to
    have two clusters split the IO load and stage failover / failback.
index 2b8041bb5681c5c1437c8450b65959f971dda069..318be6e2286cc29f00c24a6a11045814376f33d9 100644 (file)
@@ -1,8 +1,8 @@
 git
 gcc
-python-dev
-python-pip
-python-virtualenv
+python3-dev
+python3-pip
+python3-virtualenv
 doxygen
 ditaa
 libxml2-dev
@@ -10,4 +10,4 @@ libxslt1-dev
 graphviz
 ant
 zlib1g-dev
-cython
+cython3
index 0a21dfcb635661fa08bdad17fd7bd6c64d4cee9c..8f671db1450a4df695962684685af643d0d9f92e 100755 (executable)
@@ -70,7 +70,7 @@ function ensure_decent_gcc_on_ubuntu {
     local old=$(gcc -dumpfullversion -dumpversion)
     local new=$1
     local codename=$2
-    if dpkg --compare-versions $old ge 7.0; then
+    if dpkg --compare-versions $old ge ${new}.0; then
        return
     fi
 
@@ -97,10 +97,10 @@ msyaQpNl/m/lNtOLhR64v5ZybofB2EWkMxUzX8D/FQ==
 -----END PGP PUBLIC KEY BLOCK-----
 ENDOFKEY
        $SUDO env DEBIAN_FRONTEND=noninteractive apt-get update -y || true
-       $SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y g++-7
+       $SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y g++-${new}
     fi
 
-    case $codename in
+    case "$codename" in
         trusty)
             old=4.8;;
         xenial)
@@ -120,8 +120,8 @@ ENDOFKEY
     $SUDO update-alternatives --auto gcc
 
     # cmake uses the latter by default
-    $SUDO ln -nsf /usr/bin/gcc /usr/bin/$(uname -m)-linux-gnu-gcc
-    $SUDO ln -nsf /usr/bin/g++ /usr/bin/$(uname -m)-linux-gnu-g++
+    $SUDO ln -nsf /usr/bin/gcc /usr/bin/${ARCH}-linux-gnu-gcc
+    $SUDO ln -nsf /usr/bin/g++ /usr/bin/${ARCH}-linux-gnu-g++
 }
 
 function install_pkg_on_ubuntu {
@@ -183,11 +183,11 @@ function ensure_decent_gcc_on_rh {
            cat <<EOF
 Your GCC is too old. Please run following command to add DTS to your environment:
 
-scl enable devtoolset-7 bash
+scl enable devtoolset-8 bash
 
 Or add following line to the end of ~/.bashrc to add it permanently:
 
-source scl_source enable devtoolset-7
+source scl_source enable devtoolset-8
 
 see https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/ for more details.
 EOF
@@ -267,17 +267,17 @@ else
         for_make_check=false
     fi
     source /etc/os-release
-    case $ID in
+    case "$ID" in
     debian|ubuntu|devuan)
         echo "Using apt-get to install dependencies"
         $SUDO apt-get install -y devscripts equivs
         $SUDO apt-get install -y dpkg-dev
         case "$VERSION" in
             *Trusty*)
-                ensure_decent_gcc_on_ubuntu 7 trusty
+                ensure_decent_gcc_on_ubuntu 8 trusty
                 ;;
             *Xenial*)
-                ensure_decent_gcc_on_ubuntu 7 xenial
+                ensure_decent_gcc_on_ubuntu 8 xenial
                 install_boost_on_ubuntu xenial
                 ;;
             *Bionic*)
@@ -318,12 +318,12 @@ else
             builddepcmd="dnf -y builddep --allowerasing"
         fi
         echo "Using $yumdnf to install dependencies"
-       if [ "$ID" = "centos" -a $(uname -m) = aarch64 ]; then
+       if [ "$ID" = "centos" -a "$ARCH" = "aarch64" ]; then
            $SUDO yum-config-manager --disable centos-sclo-sclo || true
            $SUDO yum-config-manager --disable centos-sclo-rh || true
            $SUDO yum remove centos-release-scl || true
        fi
-        case $ID in
+        case "$ID" in
             fedora)
                 if test $yumdnf = yum; then
                     $SUDO $yumdnf install -y yum-utils
@@ -335,15 +335,16 @@ else
                 if test $ID = rhel ; then
                     $SUDO yum-config-manager --enable rhel-$MAJOR_VERSION-server-optional-rpms
                 fi
-                $SUDO yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/$MAJOR_VERSION/x86_64/
-                $SUDO yum install --nogpgcheck -y epel-release
+                rpm --quiet --query epel-release || \
+                   $SUDO yum -y install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$MAJOR_VERSION.noarch.rpm
                 $SUDO rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION
                 $SUDO rm -f /etc/yum.repos.d/dl.fedoraproject.org*
                 if test $ID = centos -a $MAJOR_VERSION = 7 ; then
-                   case $(uname -m) in
+                   $SUDO $yumdnf install -y python36-devel
+                   case "$ARCH" in
                        x86_64)
                            $SUDO yum -y install centos-release-scl
-                           dts_ver=7
+                           dts_ver=8
                            ;;
                        aarch64)
                            $SUDO yum -y install centos-release-scl-rh
@@ -353,8 +354,10 @@ else
                            ;;
                    esac
                 elif test $ID = rhel -a $MAJOR_VERSION = 7 ; then
-                    $SUDO yum-config-manager --enable rhel-server-rhscl-7-rpms
-                    dts_ver=7
+                    $SUDO yum-config-manager \
+                         --enable rhel-server-rhscl-7-rpms \
+                         --enable rhel-7-server-devtools-rpms
+                    dts_ver=8
                 fi
                 ;;
         esac
index db62562402158e89141d870c4f57cbbe9cc946fc..1bcad43920614f5d310b0678ed351c6ebf18aa08 100755 (executable)
@@ -78,13 +78,35 @@ _python_autoselect() {
 build_dashboard_frontend() {
   CURR_DIR=`pwd`
   TEMP_DIR=`mktemp -d`
+
   $CURR_DIR/src/tools/setup-virtualenv.sh --python=$(_python_autoselect) $TEMP_DIR
   $TEMP_DIR/bin/pip install nodeenv
   $TEMP_DIR/bin/nodeenv -p --node=10.13.0
   cd src/pybind/mgr/dashboard/frontend
+
+  DEFAULT_LANG=`jq -r .config.locale package.json`
+  if [ -z "$DASHBOARD_FRONTEND_LANGS" ]; then
+    BUILD_TARGET=":${DEFAULT_LANG}"
+  else
+    if [ "$DASHBOARD_FRONTEND_LANGS" == "ALL" ]; then
+      BUILD_TARGET=":*"
+    else
+      DASHBOARD_FRONTEND_LANGS_LIST=`echo "$DASHBOARD_FRONTEND_LANGS" | sed 's/ /,/g'`
+      if [[ $DASHBOARD_FRONTEND_LANGS_LIST != *"${DEFAULT_LANG}"* ]]; then
+        # default language must be always built
+        DASHBOARD_FRONTEND_LANGS_LIST="${DASHBOARD_FRONTEND_LANGS},${DEFAULT_LANG}"
+      fi
+      BUILD_TARGET=":{${DASHBOARD_FRONTEND_LANGS_LIST}}"
+    fi
+  fi
+  [ -z "$MAX_DASHBOARD_PARALLEL_BUILDS" ] && MAX_DASHBOARD_PARALLEL_BUILDS=2
+
   . $TEMP_DIR/bin/activate
   npm ci
-  npm run build -- --prod --progress=false
+  echo "Building ceph-dashboard frontend with build${BUILD_TARGET} script";
+  # we need to use "-- --" because so that "--prod" survives accross all
+  # scripts redirections inside package.json
+  npx npm-run-all --print-label --parallel --max-parallel $MAX_DASHBOARD_PARALLEL_BUILDS "build${BUILD_TARGET} -- -- --prod"
   deactivate
   cd $CURR_DIR
   rm -rf $TEMP_DIR
@@ -135,6 +157,7 @@ download_boost $boost_version 2684c972994ee57fc5632e03bf044746f6eb45d4920c343937
                https://dl.bintray.com/boostorg/release/$boost_version/source \
                https://downloads.sourceforge.net/project/boost/boost/$boost_version \
                https://download.ceph.com/qa
+
 build_dashboard_frontend
 tar --concatenate -f $outfile.all.tar $outfile.version.tar
 tar --concatenate -f $outfile.all.tar $outfile.boost.tar
index b131cc2079f1dc94abda27b650342a47a4a0055d..57922f55155a9f429ee5557d651d1fd1ee6cd5ad 100644 (file)
       "title": "MDS Workload - $mds_servers",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Client Request Load - $mds_servers",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
index df68b65e34b5845905a579494aed118231e6272f..c4d139a68c007b5d227e231ead74ce7cb009b9eb 100644 (file)
       "title": "CPU Utilisation",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "RAM Usage",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Network Load",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "tableColumn": "",
       "targets": [
         {
-          "expr": "sum(ceph_osd_stat_bytes and on (ceph_daemon) ceph_disk_occupation{exported_instance=~\"($ceph_hosts).*\"})",
+          "expr": "sum(ceph_osd_stat_bytes and on (ceph_daemon) ceph_disk_occupation{instance=~\"($ceph_hosts).*\"})",
           "format": "time_series",
           "intervalFactor": 2,
           "refId": "A",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "(irate(node_disk_writes_completed{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "(irate(node_disk_writes_completed{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) writes",
           "textEditor": true
         },
         {
-          "expr": "(irate(node_disk_reads_completed{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "(irate(node_disk_reads_completed{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_reads_completed_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
           "label": "Read (-) / Write (+)",
           "logBase": 1,
           "max": null,
-          "min": "0",
+          "min": null,
           "show": true
         },
         {
       "steppedLine": false,
       "targets": [
         {
-          "expr": "(irate(node_disk_bytes_written{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_written_bytes_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "(irate(node_disk_bytes_written{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_written_bytes_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) write",
           "refId": "B"
         },
         {
-          "expr": "(irate(node_disk_bytes_read{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_read_bytes_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "(irate(node_disk_bytes_read{instance=~\"($ceph_hosts).*\"}[5m]) or irate(node_disk_read_bytes_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}}({{ceph_daemon}}) read",
           "label": "Read (-) / Write (+)",
           "logBase": 1,
           "max": null,
-          "min": "0",
+          "min": null,
           "show": true
         },
         {
       "steppedLine": false,
       "targets": [
         {
-          "expr": "max by(instance,device) (((\n  (irate(node_disk_write_time_ms{ instance=~\"($ceph_hosts).*\"}[5m]) )\n  / clamp_min(irate(node_disk_writes_completed{ instance=~\"($ceph_hosts).*\"}[5m]), 0.001) or \n  (irate(node_disk_read_time_ms{ instance=~\"($ceph_hosts).*\"}[5m]) )\n  / clamp_min(irate(node_disk_reads_completed{ instance=~\"($ceph_hosts).*\"}[5m]), 0.001)\n  ) / 1000) or\n  (irate(node_disk_write_time_seconds_total{ instance=~\"($ceph_hosts).*\"}[5m]) )\n  / clamp_min(irate(node_disk_writes_completed_total{ instance=~\"($ceph_hosts).*\"}[5m]), 0.001) or \n  (irate(node_disk_read_time_seconds_total{ instance=~\"($ceph_hosts).*\"}[5m]) )\n  / clamp_min(irate(node_disk_reads_completed_total{ instance=~\"($ceph_hosts).*\"}[5m]), 0.001)\n  ) *\n  on(instance,device) group_left(osd_id) label_replace(ceph_disk_occupation,\"osd_id\",\"$1\",\"ceph_daemon\",\"osd.(.*)\")",
+          "expr": "max by(instance,device) ((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)  ) *  on(instance,device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation{instance=~\"($ceph_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
-          "legendFormat": "{{device}}({{osd_id}})",
+          "legendFormat": "{{device}}({{ceph_daemon}})",
           "refId": "D"
         }
       ],
       "datasource": "$datasource",
       "description": "Show disk utilization % (util) of any OSD devices on the host by the physical device name and associated OSD id.",
       "fill": 1,
+      "fillGradient": 0,
       "gridPos": {
         "h": 9,
         "w": 11,
       "lines": true,
       "linewidth": 1,
       "links": [],
-      "minSpan": 12,
+      "maxPerRow": 2,
       "nullPointMode": "connected",
+      "options": {
+        "dataLinks": []
+      },
       "percentage": false,
       "pointradius": 5,
       "points": false,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "(\n  (irate(node_disk_io_time_ms[5m]) / 10 ) or\n  irate(node_disk_io_time_seconds_total[5m]) * 100)\n* on(instance, device) group_left(osd_id) label_replace(ceph_disk_occupation{instance=~\"($ceph_hosts).*\"}, \"osd_id\",\"$1\",\"ceph_daemon\",\"osd.(.*)\")\n",
+          "expr": "((irate(node_disk_io_time_ms{instance=~\"($ceph_hosts).*\"}[5m]) / 10 ) or  irate(node_disk_io_time_seconds_total{instance=~\"($ceph_hosts).*\"}[5m]) * 100)* on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation{instance=~\"($ceph_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "hide": false,
           "intervalFactor": 1,
-          "legendFormat": "{{device}}({{osd_id}})",
-          "refId": "C",
-          "step": 10,
-          "textEditor": true
-        },
-        {
-          "expr": "(irate(node_disk_io_time_ms{instance=~\"($ceph_hosts).*\"}[5m] * 1000) or irate(node_disk_writes_completed_total{instance=~\"($ceph_hosts).*\"}[5m])) * on(instance, device) group_left(ceph_daemon) label_replace(label_replace(ceph_disk_occupation, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
-          "format": "time_series",
-          "intervalFactor": 1,
+          "legendFormat": "{{device}}({{ceph_daemon}})",
           "refId": "A"
         }
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "$ceph_hosts Disk utilisation",
       "tooltip": {
       },
       "yaxes": [
         {
-          "format": "short",
+          "format": "percent",
           "label": "%Util",
           "logBase": 1,
           "max": "100",
index dbb7bdda74a79e02d6f0e1b6ab48f6bd727441c0..96e739d11fd14913e3294a35b435f6da99c87e5c 100644 (file)
       "tableColumn": "",
       "targets": [
         {
-          "expr": "avg (\n  ((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100)\n  ) *\n  on(instance, device) label_replace(label_replace(ceph_disk_occupation{instance=~\"($osd_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")\n)",
+          "expr" : "avg (\n  ((irate(node_disk_io_time_ms[5m]) / 10 ) or\n   (irate(node_disk_io_time_seconds_total[5m]) * 100)\n  ) *\n  on(instance, device) label_replace(label_replace(ceph_disk_occupation{instance=~\"($osd_hosts).*\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")\n)",
           "format": "time_series",
           "instant": true,
           "intervalFactor": 1,
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "CPU Busy - Top 10 Hosts",
       "tooltip": {
         "shared": true,
-        "sort": 1,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "Network Load - Top 10",
       "tooltip": {
         "shared": true,
-        "sort": 1,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
index e78e6a77d6e4590b7a142703e87419f41f24f402..6b70778df4231617ee12037236590ee767897a2e 100644 (file)
       "title": "$osd Latency",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "$osd R/W IOPS",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "$osd R/W Bytes",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\"))",
+          "expr": "(irate(node_disk_read_time_seconds_total[1m]) / irate(node_disk_reads_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\"))",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}}/{{device}} Reads",
           "refId": "A"
         },
         {
-          "expr": "(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\"))",
+          "expr": "(irate(node_disk_write_time_seconds_total[1m]) / irate(node_disk_writes_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\"))",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}}/{{device}} Writes",
       "title": "Physical Device Latency for $osd",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "irate(node_disk_writes_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "irate(node_disk_writes_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}} Writes",
           "refId": "A"
         },
         {
-          "expr": "irate(node_disk_reads_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "irate(node_disk_reads_completed_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}} Reads",
       "title": "Physical Device R/W IOPS for $osd",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "irate(node_disk_read_bytes_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "irate(node_disk_read_bytes_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}} {{device}} Reads",
           "refId": "A"
         },
         {
-          "expr": "irate(node_disk_written_bytes_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "irate(node_disk_written_bytes_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{instance}} {{device}} Writes",
       "title": "Physical Device R/W Bytes for $osd",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "steppedLine": false,
       "targets": [
         {
-          "expr": "irate(node_disk_io_time_seconds_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1:9100\", \"exported_instance\", \"(.*)\")",
+          "expr": "irate(node_disk_io_time_seconds_total[1m]) and on (instance, device) label_replace(label_replace(ceph_disk_occupation{ceph_daemon=~\"$osd\"}, \"device\", \"$1\", \"device\", \"/dev/(.*)\"), \"instance\", \"$1\", \"instance\", \"(.*)\")",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "{{device}} on {{instance}}",
       "title": "Physical Device Util% for $osd",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
index 3fc6d3152c25dca12c8bbd9c636c589135b64b3b..d81c6e3646e1a7ba2374cd56d72f5d9c0a10b652 100644 (file)
       "title": "OSD Read Latencies",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "OSD Write Latencies",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Read/Write Profile",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
index 404d719ead0afa68868978194a17dacd48795fb3..d8654599a9fd593abaa65312005567d87629538b 100644 (file)
@@ -82,7 +82,7 @@
       "title": "Top $topk Client IOPS by Pool",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Top $topk Client Throughput by Pool",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "scroll": true,
       "showHeader": true,
       "sort": {
-        "col": 6,
+        "col": 5,
         "desc": true
       },
       "styles": [
       "scroll": true,
       "showHeader": true,
       "sort": {
-        "col": 6,
+        "col": 5,
         "desc": true
       },
       "styles": [
       },
       {
         "current": {
-          "text": "3",
-          "value": "3"
+          "text": "15",
+          "value": "15"
         },
         "hide": 0,
         "label": "Top K",
         "name": "topk",
         "options": [
           {
-            "text": "3",
-            "value": "3"
+            "text": "15",
+            "value": "15"
           }
         ],
-        "query": "3",
+        "query": "15",
         "skipUrlSync": false,
         "type": "textbox"
       }
index 8aa02414a8fab56be0243e70b04a12fcd93329ff..648abab89ce962844ac794d7b37d3bfc17b4bff4 100644 (file)
       "steppedLine": false,
       "targets": [
         {
-          "expr": "rate(ceph_rgw_get_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_get_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s])",
+          "expr": "sum by (ceph_daemon) (rate(ceph_rgw_get_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_get_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s]))",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "GET",
+          "legendFormat": "GET {{ceph_daemon}}",
           "refId": "A"
         },
         {
-          "expr": "rate(ceph_rgw_put_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_put_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s])",
+          "expr": "sum by (ceph_daemon)(rate(ceph_rgw_put_initial_lat_sum{ceph_daemon=~\"($rgw_servers)\"}[30s]) / rate(ceph_rgw_put_initial_lat_count{ceph_daemon=~\"($rgw_servers)\"}[30s]))",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "PUT",
+          "legendFormat": "PUT {{ceph_daemon}}",
           "refId": "B"
         }
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "$rgw_servers GET/PUT Latencies",
       "tooltip": {
       "dashes": false,
       "datasource": "$datasource",
       "fill": 1,
+      "fillGradient": 0,
       "gridPos": {
         "h": 8,
         "w": 7,
           "expr": "rate(ceph_rgw_get_b{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "GETs",
+          "legendFormat": "GETs {{ceph_daemon}}",
           "refId": "B"
         },
         {
           "expr": "rate(ceph_rgw_put_b{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "PUTs",
+          "legendFormat": "PUTs {{ceph_daemon}}",
           "refId": "A"
         }
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "Bandwidth by HTTP Operation",
       "tooltip": {
       "dashes": false,
       "datasource": "$datasource",
       "fill": 1,
+      "fillGradient": 0,
       "gridPos": {
         "h": 8,
         "w": 7,
           "expr": "rate(ceph_rgw_failed_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "Requests Failed",
+          "legendFormat": "Requests Failed {{ceph_daemon}}",
           "refId": "B"
         },
         {
           "expr": "rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "GETs",
+          "legendFormat": "GETs {{ceph_daemon}}",
           "refId": "C"
         },
         {
           "expr": "rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "PUTs",
+          "legendFormat": "PUTs {{ceph_daemon}}",
           "refId": "D"
         },
         {
           "expr": "rate(ceph_rgw_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) -\n  (rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) +\n   rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s]))",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "Other",
+          "legendFormat": "Other {{ceph_daemon}}",
           "refId": "A"
         }
       ],
       "thresholds": [],
       "timeFrom": null,
+      "timeRegions": [],
       "timeShift": null,
       "title": "HTTP Request Breakdown",
       "tooltip": {
           "expr": "rate(ceph_rgw_failed_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "Failures",
+          "legendFormat": "Failures {{ceph_daemon}}",
           "refId": "A"
         },
         {
           "expr": "rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "GETs",
+          "legendFormat": "GETs {{ceph_daemon}}",
           "refId": "B"
         },
         {
           "expr": "rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s])",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "PUTs",
+          "legendFormat": "PUTs {{ceph_daemon}}",
           "refId": "C"
         },
         {
           "expr": "rate(ceph_rgw_req{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) -\n  (rate(ceph_rgw_get{ceph_daemon=~\"[[rgw_servers]]\"}[30s]) +\n   rate(ceph_rgw_put{ceph_daemon=~\"[[rgw_servers]]\"}[30s]))",
           "format": "time_series",
           "intervalFactor": 1,
-          "legendFormat": "Other (DELETE,LIST)",
+          "legendFormat": "Other (DELETE,LIST) {{ceph_daemon}}",
           "refId": "D"
         }
       ],
index 37eb650a6489fc0584c76a8ff74ab0c224f44f12..f3df003ec49ec62f696df7f0585eec2432a7716c 100644 (file)
       "title": "IOPS",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Throughput",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
       "title": "Average Latency",
       "tooltip": {
         "shared": true,
-        "sort": 0,
+        "sort": 2,
         "value_type": "individual"
       },
       "type": "graph",
diff --git a/ceph/qa/clusters/2-node-mgr.yaml b/ceph/qa/clusters/2-node-mgr.yaml
new file mode 100644 (file)
index 0000000..b1c29a8
--- /dev/null
@@ -0,0 +1,10 @@
+roles:
+- [mgr.x, mon.a, mon.c, mds.a, mds.c, osd.0, client.0]
+- [mgr.y, mgr.z, mon.b, mds.b, osd.1, osd.2, osd.3, client.1]
+log-rotate:
+  ceph-mds: 10G
+  ceph-osd: 10G
+openstack:
+  - volumes: # attached to each instance
+      count: 2
+      size: 30 # GB
diff --git a/ceph/qa/debug/mgr.yaml b/ceph/qa/debug/mgr.yaml
new file mode 100644 (file)
index 0000000..068021e
--- /dev/null
@@ -0,0 +1,16 @@
+overrides:
+  ceph:
+    conf:
+      mon:
+        debug mon: 20
+      mgr:
+        debug mgr: 20
+        debug ms: 1
+      client:
+        debug client: 20
+        debug mgrc: 20
+        debug ms: 1
+      osd:
+        debug mgrc: 20
+      mds:
+        debug mgrc: 20
index a76f3bfcf20916290a943cd5e10cb91151a91194..99f7261f2ab410ae8d7261b8c6f641f5c7efb8db 100644 (file)
@@ -6,28 +6,28 @@ Zero, < 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 156672 -l 512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 64512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -36,7 +36,7 @@ Zero, 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -47,7 +47,7 @@ Zero, 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -58,7 +58,7 @@ Zero, 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -69,7 +69,7 @@ Zero, 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 66560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -82,21 +82,21 @@ Zero, < 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 163840 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 130048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0030000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -107,7 +107,7 @@ Zero, < 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -120,7 +120,7 @@ Zero, 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 131072 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -131,7 +131,7 @@ Zero, 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -142,7 +142,7 @@ Zero, 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -153,7 +153,7 @@ Zero, 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 132096 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0020000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -166,7 +166,7 @@ Zero, 37 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 589824 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0090000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -177,7 +177,7 @@ Zero, 37 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 589312 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0090000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -188,7 +188,7 @@ Zero, 37 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 590336 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   00a0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -201,21 +201,21 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4193792 -l 512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4129280 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4128768 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03f0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -224,7 +224,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4128256 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03f0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -233,7 +233,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4063744 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03f0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -242,7 +242,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4063232 -l 131072 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03e0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -251,7 +251,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4062720 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03e0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -260,7 +260,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 512 -l 4193792 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0010000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -271,7 +271,7 @@ Delete:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0400000
@@ -286,7 +286,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg1
   $ DEV=$(sudo rbd map cloneimg1)
   $ blkdiscard -o 720896 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -295,7 +295,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg2
   $ DEV=$(sudo rbd map cloneimg2)
   $ blkdiscard -o 1474560 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -304,7 +304,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg3
   $ DEV=$(sudo rbd map cloneimg3)
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -317,7 +317,7 @@ Full clone:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 720896 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   00b0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -328,7 +328,7 @@ Full clone:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 1474560 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0170000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -337,7 +337,7 @@ Full clone:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0400000
@@ -351,14 +351,14 @@ Multiple object requests:
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 143360 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   3200000
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 286720 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0008000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
@@ -379,7 +379,7 @@ Multiple object requests:
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 573440 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0050000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
index 395f0241d699cd872d04b40a14b8d7dcaf056aaf..6c3d7cc74c1e98e3635965f2f1b7b47f2967656f 100644 (file)
@@ -6,28 +6,28 @@ Zero, < 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 156672 -l 512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 64512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -36,28 +36,28 @@ Zero, 1 block:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 66560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -66,28 +66,28 @@ Zero, < 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 163840 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 130048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131584 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -96,28 +96,28 @@ Zero, 2 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 131072 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 131072 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 130560 -l 132096 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -126,21 +126,21 @@ Zero, 37 blocks:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 589824 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 589312 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 590336 -l 2424832 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
@@ -149,7 +149,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4193792 -l 512 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03ffe00 0000 0000 0000 0000 0000 0000 0000 0000
@@ -158,7 +158,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4129280 -l 65024 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03f0200 0000 0000 0000 0000 0000 0000 0000 0000
@@ -167,7 +167,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4128768 -l 65536 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03f0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -176,7 +176,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4128256 -l 66048 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03efe00 0000 0000 0000 0000 0000 0000 0000 0000
@@ -185,7 +185,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4063744 -l 130560 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03e0200 0000 0000 0000 0000 0000 0000 0000 0000
@@ -194,7 +194,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4063232 -l 131072 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03e0000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -203,7 +203,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 4062720 -l 131584 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   03dfe00 0000 0000 0000 0000 0000 0000 0000 0000
@@ -212,7 +212,7 @@ Truncate:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 512 -l 4193792 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0000200 0000 0000 0000 0000 0000 0000 0000 0000
@@ -223,7 +223,7 @@ Delete:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0400000
@@ -238,7 +238,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg1
   $ DEV=$(sudo rbd map -o alloc_size=4194304 cloneimg1)
   $ blkdiscard -o 720896 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -247,7 +247,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg2
   $ DEV=$(sudo rbd map -o alloc_size=4194304 cloneimg2)
   $ blkdiscard -o 1474560 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -256,7 +256,7 @@ Empty clone:
   $ rbd clone img@snap cloneimg3
   $ DEV=$(sudo rbd map -o alloc_size=4194304 cloneimg3)
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 abab abab abab abab abab abab abab abab
   *
   0400000
@@ -269,14 +269,14 @@ Full clone:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 720896 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0400000
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 1474560 -l 2719744 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   0168000 0000 0000 0000 0000 0000 0000 0000 0000
@@ -285,7 +285,7 @@ Full clone:
 
   $ xfs_io -c 'pwrite -w 0 4M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 4194304 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 0000 0000 0000 0000 0000 0000 0000 0000
   *
   0400000
@@ -299,21 +299,21 @@ Multiple object requests:
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 143360 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   3200000
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 286720 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   3200000
 
   $ xfs_io -c 'pwrite -b 4M -w 0 50M' $DEV >/dev/null
   $ blkdiscard -o 0 -l 573440 $DEV
-  $ hexdump $DEV
+  $ dd if=$DEV iflag=direct bs=4M status=none | hexdump
   0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
   *
   3200000
index 4a7a00546c5971426d182623db6e41d5c99e15c7..92cca83ce7fd41564693221dae8fd0dae04eeb3c 100755 (executable)
@@ -135,7 +135,7 @@ do
            CEPH_ROOT=.. \
            CEPH_LIB=lib \
            LOCALRUN=yes \
-           $cmd ; then
+           time -f "Elapsed %E (%e seconds)" $cmd ; then
           echo "$f .............. FAILED"
           errors=$(expr $errors + 1)
         fi
index 83ca1e2511e23c71fa9ca859065e60a331d31bb0..52b0eee691714fd6a9d7bbf39a5d68613084cf83 100755 (executable)
@@ -673,11 +673,15 @@ EOF
     echo start osd.$id
     ceph-osd -i $id $ceph_args &
 
+    # If noup is set, then can't wait for this osd
+    if ceph osd dump --format=json | jq '.flags_set[]' | grep -q '"noup"' ; then
+      return 0
+    fi
     wait_for_osd up $id || return 1
 
 }
 
-function run_osd_bluestore() {
+function run_osd_filestore() {
     local dir=$1
     shift
     local id=$1
@@ -710,7 +714,7 @@ function run_osd_bluestore() {
     echo "{\"cephx_secret\": \"$OSD_SECRET\"}" > $osd_data/new.json
     ceph osd new $uuid -i $osd_data/new.json
     rm $osd_data/new.json
-    ceph-osd -i $id $ceph_args --mkfs --key $OSD_SECRET --osd-uuid $uuid --osd-objectstore=bluestore
+    ceph-osd -i $id $ceph_args --mkfs --key $OSD_SECRET --osd-uuid $uuid --osd-objectstore=filestore
 
     local key_fn=$osd_data/keyring
     cat > $key_fn<<EOF
@@ -722,6 +726,10 @@ EOF
     echo start osd.$id
     ceph-osd -i $id $ceph_args &
 
+    # If noup is set, then can't wait for this osd
+    if ceph osd dump --format=json | jq '.flags_set[]' | grep -q '"noup"' ; then
+      return 0
+    fi
     wait_for_osd up $id || return 1
 
 
@@ -859,6 +867,10 @@ function activate_osd() {
 
     [ "$id" = "$(cat $osd_data/whoami)" ] || return 1
 
+    # If noup is set, then can't wait for this osd
+    if ceph osd dump --format=json | jq '.flags_set[]' | grep -q '"noup"' ; then
+      return 0
+    fi
     wait_for_osd up $id || return 1
 }
 
@@ -1179,13 +1191,8 @@ function _objectstore_tool_nodown() {
     shift
     local osd_data=$dir/$id
 
-    local journal_args
-    if [ "$objectstore_type" == "filestore" ]; then
-       journal_args=" --journal-path $osd_data/journal"
-    fi
     ceph-objectstore-tool \
         --data-path $osd_data \
-        $journal_args \
         "$@" || return 1
 }
 
@@ -1619,13 +1626,20 @@ function test_wait_for_health_ok() {
     local dir=$1
 
     setup $dir || return 1
-    run_mon $dir a --osd_pool_default_size=1 --osd_failsafe_full_ratio=.99 --mon_pg_warn_min_per_osd=0 || return 1
+    run_mon $dir a --osd_failsafe_full_ratio=.99 --mon_pg_warn_min_per_osd=0 || return 1
     run_mgr $dir x --mon_pg_warn_min_per_osd=0 || return 1
+    # start osd_pool_default_size OSDs
     run_osd $dir 0 || return 1
+    run_osd $dir 1 || return 1
+    run_osd $dir 2 || return 1
     kill_daemons $dir TERM osd || return 1
     ceph osd down 0 || return 1
+    # expect TOO_FEW_OSDS warning
     ! TIMEOUT=1 wait_for_health_ok || return 1
+    # resurrect all OSDs
     activate_osd $dir 0 || return 1
+    activate_osd $dir 1 || return 1
+    activate_osd $dir 2 || return 1
     wait_for_health_ok || return 1
     teardown $dir || return 1
 }
@@ -2133,7 +2147,8 @@ function inject_eio() {
     if [ "$pooltype" != "ec" ]; then
         shard_id=""
     fi
-    set_config osd $osd_id filestore_debug_inject_read_err true || return 1
+    type=$(cat $dir/$osd_id/type)
+    set_config osd $osd_id ${type}_debug_inject_read_err true || return 1
     local loop=0
     while ( CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.$osd_id) \
              inject${which}err $poolname $objname $shard_id | grep -q Invalid ); do
@@ -2154,6 +2169,24 @@ function multidiff() {
     fi
 }
 
+function create_ec_pool() {
+    local pool_name=$1
+    shift
+    local allow_overwrites=$1
+    shift
+
+    ceph osd erasure-code-profile set myprofile crush-failure-domain=osd "$@" || return 1
+
+    create_pool "$poolname" 1 1 erasure myprofile || return 1
+
+    if [ "$allow_overwrites" = "true" ]; then
+        ceph osd pool set "$poolname" allow_ec_overwrites true || return 1
+    fi
+
+    wait_for_clean || return 1
+    return 0
+}
+
 # Local Variables:
 # compile-command: "cd ../../src ; make -j4 && ../qa/standalone/ceph-helpers.sh TESTS # test_get_config"
 # End:
index af8b29b9c508c016a4a7835f2355fa06d2431925..ce234d4adbd4f3c131c3e0df080c22e1a3bcb305 100755 (executable)
@@ -26,7 +26,6 @@ function run() {
     export CEPH_ARGS
     CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
     CEPH_ARGS+="--mon-host=$CEPH_MON "
-    CEPH_ARGS+="--osd-objectstore=filestore "
 
     local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
     for func in $funcs ; do
diff --git a/ceph/qa/standalone/mgr/balancer.sh b/ceph/qa/standalone/mgr/balancer.sh
new file mode 100755 (executable)
index 0000000..979d70e
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2019 Red Hat <contact@redhat.com>
+#
+# Author: David Zafman <dzafman@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Library Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library Public License for more details.
+#
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:7102" # git grep '\<7102\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        $func $dir || return 1
+    done
+}
+
+TEST_POOL1=test1
+TEST_POOL2=test2
+
+function TEST_balancer() {
+    local dir=$1
+
+    setup $dir || return 1
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    run_osd $dir 0 || return 1
+    run_osd $dir 1 || return 1
+    run_osd $dir 2 || return 1
+    create_pool $TEST_POOL1 8
+    create_pool $TEST_POOL2 8
+
+    wait_for_clean || return 1
+
+    ceph pg dump pgs
+    ceph osd set-require-min-compat-client luminous
+    ceph balancer status || return 1
+    eval MODE=$(ceph balancer status | jq '.mode')
+    test $MODE = "none" || return 1
+    ACTIVE=$(ceph balancer status | jq '.active')
+    test $ACTIVE = "false" || return 1
+
+    ceph balancer ls || return 1
+    PLANS=$(ceph balancer ls)
+    test "$PLANS" = "[]" || return 1
+    ceph balancer eval || return 1
+    EVAL="$(ceph balancer eval)"
+    test "$EVAL" = "current cluster score 0.000000 (lower is better)"
+    ceph balancer eval-verbose || return 1
+
+    ceph balancer pool add $TEST_POOL1 || return 1
+    ceph balancer pool add $TEST_POOL2 || return 1
+    ceph balancer pool ls || return 1
+    eval POOL=$(ceph balancer pool ls | jq '.[0]')
+    test "$POOL" = "$TEST_POOL1" || return 1
+    eval POOL=$(ceph balancer pool ls | jq '.[1]')
+    test "$POOL" = "$TEST_POOL2" || return 1
+    ceph balancer pool rm $TEST_POOL1 || return 1
+    ceph balancer pool rm $TEST_POOL2 || return 1
+    ceph balancer pool ls || return 1
+    ceph balancer pool add $TEST_POOL1 || return 1
+
+    ceph balancer mode crush-compat || return 1
+    ceph balancer status || return 1
+    eval MODE=$(ceph balancer status | jq '.mode')
+    test $MODE = "crush-compat" || return 1
+    ! ceph balancer optimize plan_crush $TEST_POOL1 || return 1
+    ceph balancer status || return 1
+    eval RESULT=$(ceph balancer status | jq '.optimize_result')
+    test "$RESULT" = "Distribution is already perfect" || return 1
+
+    ceph balancer on || return 1
+    ACTIVE=$(ceph balancer status | jq '.active')
+    test $ACTIVE = "true" || return 1
+    sleep 2
+    ceph balancer status || return 1
+    ceph balancer off || return 1
+    ACTIVE=$(ceph balancer status | jq '.active')
+    test $ACTIVE = "false" || return 1
+    sleep 2
+
+    ceph balancer reset || return 1
+
+    ceph balancer mode upmap || return 1
+    ceph balancer status || return 1
+    eval MODE=$(ceph balancer status | jq '.mode')
+    test $MODE = "upmap" || return 1
+    ! ceph balancer optimize plan_upmap $TEST_POOL || return 1
+    ceph balancer status || return 1
+    eval RESULT=$(ceph balancer status | jq '.optimize_result')
+    test "$RESULT" = "Unable to find further optimization, or pool(s)' pg_num is decreasing, or distribution is already perfect" || return 1
+
+    ceph balancer on || return 1
+    ACTIVE=$(ceph balancer status | jq '.active')
+    test $ACTIVE = "true" || return 1
+    sleep 2
+    ceph balancer status || return 1
+    ceph balancer off || return 1
+    ACTIVE=$(ceph balancer status | jq '.active')
+    test $ACTIVE = "false" || return 1
+
+    teardown $dir || return 1
+}
+
+main balancer "$@"
+
+# Local Variables:
+# compile-command: "make -j4 && ../qa/run-standalone.sh balancer.sh"
+# End:
diff --git a/ceph/qa/standalone/misc/network-ping.sh b/ceph/qa/standalone/misc/network-ping.sh
new file mode 100755 (executable)
index 0000000..b2b299d
--- /dev/null
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:7146" # git grep '\<7146\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    CEPH_ARGS+="--debug_disable_randomized_ping=true "
+    CEPH_ARGS+="--debug_heartbeat_testing_span=5 "
+    CEPH_ARGS+="--osd_heartbeat_interval=1 "
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+        $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+function TEST_network_ping_test1() {
+    local dir=$1
+
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    run_osd $dir 0 || return 1
+    run_osd $dir 1 || return 1
+    run_osd $dir 2 || return 1
+
+    sleep 5
+
+    create_pool foo 16
+
+    # write some objects
+    timeout 20 rados bench -p foo 10 write -b 4096 --no-cleanup || return 1
+
+    # Get 1 cycle worth of ping data "1 minute"
+    sleep 10
+    flush_pg_stats
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "4" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "12" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+    # Wait another 4 cycles to get "5 minute interval"
+    sleep 20
+    flush_pg_stats
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "4" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "12" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+
+    # Wait another 10 cycles to get "15 minute interval"
+    sleep 50
+    flush_pg_stats
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "0" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "1000" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "4" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network 0 | tee $dir/json
+    test "$(cat $dir/json | jq '.entries | length')" = "12" || return 1
+    test "$(cat $dir/json | jq '.threshold')" = "0" || return 1
+
+    # Just check the threshold output matches the input
+    CEPH_ARGS='' ceph daemon $(get_asok_path mgr.x) dump_osd_network 99 | tee $dir/json
+    test "$(cat $dir/json | jq '.threshold')" = "99" || return 1
+    CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_osd_network 98 | tee $dir/json
+    test "$(cat $dir/json | jq '.threshold')" = "98" || return 1
+
+    rm -f $dir/json
+}
+
+# Test setting of mon_warn_on_slow_ping_time very low to
+# get health warning
+function TEST_network_ping_test2() {
+    local dir=$1
+
+    export CEPH_ARGS
+    export EXTRA_OPTS=" --mon_warn_on_slow_ping_time=0.001"
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    run_osd $dir 0 || return 1
+    run_osd $dir 1 || return 1
+    run_osd $dir 2 || return 1
+
+    sleep 5
+
+    create_pool foo 16
+
+    # write some objects
+    timeout 20 rados bench -p foo 10 write -b 4096 --no-cleanup || return 1
+
+    # Get at least 1 cycle of ping data (this test runs with 5 second cycles of 1 second pings)
+    sleep 10
+    flush_pg_stats
+
+    ceph health | tee $dir/health
+    grep -q "Long heartbeat" $dir/health || return 1
+
+    ceph health detail | tee $dir/health
+    grep -q "OSD_SLOW_PING_TIME_BACK" $dir/health || return 1
+    grep -q "OSD_SLOW_PING_TIME_FRONT" $dir/health || return 1
+    rm -f $dir/health
+}
+
+main network-ping "$@"
+
+# Local Variables:
+# compile-command: "cd ../.. ; make -j4 && ../qa/run-standalone.sh network-ping.sh"
+# End:
index e3928087aacecb9b1d450dd3f2f7f48ad1a61325..f8f7876bb761eb587770873951384772a88b9674 100755 (executable)
@@ -4,11 +4,6 @@ source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
 
 base_test=$CEPH_ROOT/qa/workunits/mon/test_mon_osdmap_prune.sh
 
-# We are going to open and close a lot of files, and generate a lot of maps
-# that the osds will need to process. If we don't increase the fd ulimit, we
-# risk having the osds asserting when handling filestore transactions.
-ulimit -n 4096
-
 function run() {
 
   local dir=$1
index f404cdda919a3aa7e618fad83035896b432ec5b1..ecb94cb3ab88b96ae7d79b0d272ed257dd2c2e2e 100755 (executable)
@@ -212,12 +212,11 @@ function TEST_pool_create_rep_expected_num_objects() {
     local dir=$1
     setup $dir || return 1
 
-    # disable pg dir merge
-    CEPH_ARGS+="--osd-objectstore=filestore"
     export CEPH_ARGS
     run_mon $dir a || return 1
     run_mgr $dir x || return 1
-    run_osd $dir 0 || return 1
+    # disable pg dir merge
+    run_osd_filestore $dir 0 || return 1
 
     ceph osd pool create rep_expected_num_objects 64 64 replicated  replicated_rule 100000 || return 1
     # wait for pg dir creating
diff --git a/ceph/qa/standalone/osd/divergent-priors.sh b/ceph/qa/standalone/osd/divergent-priors.sh
new file mode 100755 (executable)
index 0000000..dec0e7a
--- /dev/null
@@ -0,0 +1,840 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2019 Red Hat <contact@redhat.com>
+#
+# Author: David Zafman <dzafman@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Library Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library Public License for more details.
+#
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    # This should multiple of 6
+    export loglen=12
+    export divisor=3
+    export trim=$(expr $loglen / 2)
+    export DIVERGENT_WRITE=$(expr $trim / $divisor)
+    export DIVERGENT_REMOVE=$(expr $trim / $divisor)
+    export DIVERGENT_CREATE=$(expr $trim / $divisor)
+    export poolname=test
+    export testobjects=100
+    # Fix port????
+    export CEPH_MON="127.0.0.1:7115" # git grep '\<7115\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    # so we will not force auth_log_shard to be acting_primary
+    CEPH_ARGS+="--osd_force_auth_primary_missing_objects=1000000 "
+    CEPH_ARGS+="--osd_debug_pg_log_writeout=true "
+    CEPH_ARGS+="--osd_min_pg_log_entries=$loglen --osd_max_pg_log_entries=$loglen --osd_pg_log_trim_min=$trim "
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+        $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+
+# Special case divergence test
+#      Test handling of divergent entries with prior_version
+#      prior to log_tail
+#      based on qa/tasks/divergent_prior.py
+function TEST_divergent() {
+    local dir=$1
+
+    # something that is always there
+    local dummyfile='/etc/fstab'
+    local dummyfile2='/etc/resolv.conf'
+
+    local num_osds=3
+    local osds="$(seq 0 $(expr $num_osds - 1))"
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    for i in $osds
+    do
+      run_osd $dir $i || return 1
+    done
+
+    ceph osd set noout
+    ceph osd set noin
+    ceph osd set nodown
+    create_pool $poolname 1 1
+    ceph osd pool set $poolname size 3
+    ceph osd pool set $poolname min_size 2
+
+    flush_pg_stats || return 1
+    wait_for_clean || return 1
+
+    # determine primary
+    local divergent="$(ceph pg dump pgs --format=json | jq '.pg_stats[0].up_primary')"
+    echo "primary and soon to be divergent is $divergent"
+    ceph pg dump pgs
+    local non_divergent=""
+    for i in $osds
+    do
+      if [ "$i" = "$divergent" ]; then
+         continue
+      fi
+      non_divergent="$non_divergent $i"
+    done
+
+    echo "writing initial objects"
+    # write a bunch of objects
+    for i in $(seq 1 $testobjects)
+    do
+      rados -p $poolname put existing_$i $dummyfile
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    local pgid=$(get_pg $poolname existing_1)
+
+    # blackhole non_divergent
+    echo "blackholing osds $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) config set objectstore_blackhole 1
+    done
+
+    local case5=$testobjects
+    local case3=$(expr $testobjects - 1)
+    # Write some soon to be divergent
+    echo 'writing divergent object'
+    rados -p $poolname put existing_$case5 $dummyfile &
+    echo 'create missing divergent object'
+    inject_eio rep data $poolname existing_$case3 $dir 0 || return 1
+    rados -p $poolname get existing_$case3 $dir/existing &
+    sleep 10
+    killall -9 rados
+
+    # kill all the osds but leave divergent in
+    echo 'killing all the osds'
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd || return 1
+    for i in $osds
+    do
+      ceph osd down osd.$i
+    done
+    for i in $non_divergent
+    do
+      ceph osd out osd.$i
+    done
+
+    # bring up non-divergent
+    echo "bringing up non_divergent $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      activate_osd $dir $i || return 1
+    done
+    for i in $non_divergent
+    do
+      ceph osd in osd.$i
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # write 1 non-divergent object (ensure that old divergent one is divergent)
+    objname="existing_$(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE)"
+    echo "writing non-divergent object $objname"
+    ceph pg dump pgs
+    rados -p $poolname put $objname $dummyfile2
+
+    # ensure no recovery of up osds first
+    echo 'delay recovery'
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) set_recovery_delay 100000
+    done
+
+    # bring in our divergent friend
+    echo "revive divergent $divergent"
+    ceph pg dump pgs
+    ceph osd set noup
+    activate_osd $dir $divergent
+    sleep 5
+
+    echo 'delay recovery divergent'
+    ceph pg dump pgs
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) set_recovery_delay 100000
+
+    ceph osd unset noup
+
+    wait_for_osd up 0
+    wait_for_osd up 1
+    wait_for_osd up 2
+
+    ceph pg dump pgs
+    echo 'wait for peering'
+    ceph pg dump pgs
+    rados -p $poolname put foo $dummyfile
+
+    echo "killing divergent $divergent"
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd.$divergent
+    #_objectstore_tool_nodown $dir $divergent --op log --pgid $pgid
+    echo "reviving divergent $divergent"
+    ceph pg dump pgs
+    activate_osd $dir $divergent
+
+    sleep 20
+
+    echo "allowing recovery"
+    ceph pg dump pgs
+    # Set osd_recovery_delay_start back to 0 and kick the queue
+    for i in $osds
+    do
+        ceph tell osd.$i debug kick_recovery_wq 0
+    done
+
+    echo 'reading divergent objects'
+    ceph pg dump pgs
+    for i in $(seq 1 $(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE))
+    do
+      rados -p $poolname get existing_$i $dir/existing || return 1
+    done
+    rm -f $dir/existing
+
+    grep _merge_object_divergent_entries $(find $dir -name '*osd*log')
+    # Check for _merge_object_divergent_entries for case #5
+    if ! grep -q "_merge_object_divergent_entries.*cannot roll back, removing and adding to missing" $(find $dir -name '*osd*log')
+    then
+           echo failure
+           return 1
+    fi
+    echo "success"
+
+    delete_pool $poolname
+    kill_daemons $dir || return 1
+}
+
+function TEST_divergent_ec() {
+    local dir=$1
+
+    # something that is always there
+    local dummyfile='/etc/fstab'
+    local dummyfile2='/etc/resolv.conf'
+
+    local num_osds=3
+    local osds="$(seq 0 $(expr $num_osds - 1))"
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    for i in $osds
+    do
+      run_osd $dir $i || return 1
+    done
+
+    ceph osd set noout
+    ceph osd set noin
+    ceph osd set nodown
+    create_ec_pool $poolname true k=2 m=1 || return 1
+
+    flush_pg_stats || return 1
+    wait_for_clean || return 1
+
+    # determine primary
+    local divergent="$(ceph pg dump pgs --format=json | jq '.pg_stats[0].up_primary')"
+    echo "primary and soon to be divergent is $divergent"
+    ceph pg dump pgs
+    local non_divergent=""
+    for i in $osds
+    do
+      if [ "$i" = "$divergent" ]; then
+         continue
+      fi
+      non_divergent="$non_divergent $i"
+    done
+
+    echo "writing initial objects"
+    # write a bunch of objects
+    for i in $(seq 1 $testobjects)
+    do
+      rados -p $poolname put existing_$i $dummyfile
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    local pgid=$(get_pg $poolname existing_1)
+
+    # blackhole non_divergent
+    echo "blackholing osds $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) config set objectstore_blackhole 1
+    done
+
+    # Write some soon to be divergent
+    echo 'writing divergent object'
+    rados -p $poolname put existing_$testobjects $dummyfile2 &
+    sleep 1
+    rados -p $poolname put existing_$testobjects $dummyfile &
+    rados -p $poolname mksnap snap1
+    rados -p $poolname put existing_$(expr $testobjects - 1) $dummyfile &
+    sleep 10
+    killall -9 rados
+
+    # kill all the osds but leave divergent in
+    echo 'killing all the osds'
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd || return 1
+    for i in $osds
+    do
+      ceph osd down osd.$i
+    done
+    for i in $non_divergent
+    do
+      ceph osd out osd.$i
+    done
+
+    # bring up non-divergent
+    echo "bringing up non_divergent $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      activate_osd $dir $i || return 1
+    done
+    for i in $non_divergent
+    do
+      ceph osd in osd.$i
+    done
+
+    sleep 5
+    #WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # write 1 non-divergent object (ensure that old divergent one is divergent)
+    objname="existing_$(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE)"
+    echo "writing non-divergent object $objname"
+    ceph pg dump pgs
+    rados -p $poolname put $objname $dummyfile2
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # Dump logs
+    for i in $non_divergent
+    do
+      kill_daemons $dir KILL osd.$i || return 1
+      _objectstore_tool_nodown $dir $i --op log --pgid $pgid
+      activate_osd $dir $i || return 1
+    done
+    _objectstore_tool_nodown $dir $divergent --op log --pgid $pgid
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # ensure no recovery of up osds first
+    echo 'delay recovery'
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) set_recovery_delay 100000
+    done
+
+    # bring in our divergent friend
+    echo "revive divergent $divergent"
+    ceph pg dump pgs
+    ceph osd set noup
+    activate_osd $dir $divergent
+    sleep 5
+
+    echo 'delay recovery divergent'
+    ceph pg dump pgs
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) set_recovery_delay 100000
+
+    ceph osd unset noup
+
+    wait_for_osd up 0
+    wait_for_osd up 1
+    wait_for_osd up 2
+
+    ceph pg dump pgs
+    echo 'wait for peering'
+    ceph pg dump pgs
+    rados -p $poolname put foo $dummyfile
+
+    echo "killing divergent $divergent"
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd.$divergent
+    #_objectstore_tool_nodown $dir $divergent --op log --pgid $pgid
+    echo "reviving divergent $divergent"
+    ceph pg dump pgs
+    activate_osd $dir $divergent
+
+    sleep 20
+
+    echo "allowing recovery"
+    ceph pg dump pgs
+    # Set osd_recovery_delay_start back to 0 and kick the queue
+    for i in $osds
+    do
+        ceph tell osd.$i debug kick_recovery_wq 0
+    done
+
+    echo 'reading divergent objects'
+    ceph pg dump pgs
+    for i in $(seq 1 $(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE))
+    do
+      rados -p $poolname get existing_$i $dir/existing || return 1
+    done
+    rm -f $dir/existing
+
+    grep _merge_object_divergent_entries $(find $dir -name '*osd*log')
+    # Check for _merge_object_divergent_entries for case #3
+    # XXX: Not reproducing this case
+#    if ! grep -q "_merge_object_divergent_entries.* missing, .* adjusting" $(find $dir -name '*osd*log')
+#    then
+#      echo failure
+#      return 1
+#    fi
+    # Check for _merge_object_divergent_entries for case #4
+    if ! grep -q "_merge_object_divergent_entries.*rolled back" $(find $dir -name '*osd*log')
+    then
+       echo failure
+       return 1
+    fi
+    echo "success"
+
+    delete_pool $poolname
+    kill_daemons $dir || return 1
+}
+
+# Special case divergence test with ceph-objectstore-tool export/remove/import
+#      Test handling of divergent entries with prior_version
+#      prior to log_tail and a ceph-objectstore-tool export/import
+#      based on qa/tasks/divergent_prior2.py
+function TEST_divergent_2() {
+    local dir=$1
+
+    # something that is always there
+    local dummyfile='/etc/fstab'
+    local dummyfile2='/etc/resolv.conf'
+
+    local num_osds=3
+    local osds="$(seq 0 $(expr $num_osds - 1))"
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    for i in $osds
+    do
+      run_osd $dir $i || return 1
+    done
+
+    ceph osd set noout
+    ceph osd set noin
+    ceph osd set nodown
+    create_pool $poolname 1 1
+    ceph osd pool set $poolname size 3
+    ceph osd pool set $poolname min_size 2
+
+    flush_pg_stats || return 1
+    wait_for_clean || return 1
+
+    # determine primary
+    local divergent="$(ceph pg dump pgs --format=json | jq '.pg_stats[0].up_primary')"
+    echo "primary and soon to be divergent is $divergent"
+    ceph pg dump pgs
+    local non_divergent=""
+    for i in $osds
+    do
+      if [ "$i" = "$divergent" ]; then
+         continue
+      fi
+      non_divergent="$non_divergent $i"
+    done
+
+    echo "writing initial objects"
+    # write a bunch of objects
+    for i in $(seq 1 $testobjects)
+    do
+      rados -p $poolname put existing_$i $dummyfile
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    local pgid=$(get_pg $poolname existing_1)
+
+    # blackhole non_divergent
+    echo "blackholing osds $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) config set objectstore_blackhole 1
+    done
+
+    # Do some creates to hit case 2
+    echo 'create new divergent objects'
+    for i in $(seq 1 $DIVERGENT_CREATE)
+    do
+      rados -p $poolname create newobject_$i &
+    done
+    # Write some soon to be divergent
+    echo 'writing divergent objects'
+    for i in $(seq 1 $DIVERGENT_WRITE)
+    do
+      rados -p $poolname put existing_$i $dummyfile2 &
+    done
+    # Remove some soon to be divergent
+    echo 'remove divergent objects'
+    for i in $(seq 1 $DIVERGENT_REMOVE)
+    do
+      rmi=$(expr $i + $DIVERGENT_WRITE)
+      rados -p $poolname rm existing_$rmi &
+    done
+    sleep 10
+    killall -9 rados
+
+    # kill all the osds but leave divergent in
+    echo 'killing all the osds'
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd || return 1
+    for i in $osds
+    do
+      ceph osd down osd.$i
+    done
+    for i in $non_divergent
+    do
+      ceph osd out osd.$i
+    done
+
+    # bring up non-divergent
+    echo "bringing up non_divergent $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      activate_osd $dir $i || return 1
+    done
+    for i in $non_divergent
+    do
+      ceph osd in osd.$i
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # write 1 non-divergent object (ensure that old divergent one is divergent)
+    objname="existing_$(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE)"
+    echo "writing non-divergent object $objname"
+    ceph pg dump pgs
+    rados -p $poolname put $objname $dummyfile2
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # ensure no recovery of up osds first
+    echo 'delay recovery'
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) set_recovery_delay 100000
+    done
+
+    # bring in our divergent friend
+    echo "revive divergent $divergent"
+    ceph pg dump pgs
+    ceph osd set noup
+    activate_osd $dir $divergent
+    sleep 5
+
+    echo 'delay recovery divergent'
+    ceph pg dump pgs
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) set_recovery_delay 100000
+
+    ceph osd unset noup
+
+    wait_for_osd up 0
+    wait_for_osd up 1
+    wait_for_osd up 2
+
+    ceph pg dump pgs
+    echo 'wait for peering'
+    ceph pg dump pgs
+    rados -p $poolname put foo $dummyfile
+
+    # At this point the divergent_priors should have been detected
+
+    echo "killing divergent $divergent"
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd.$divergent
+
+    # export a pg
+    expfile=$dir/exp.$$.out
+    _objectstore_tool_nodown $dir $divergent --op export-remove --pgid $pgid --file $expfile
+    _objectstore_tool_nodown $dir $divergent --op import --file $expfile
+
+    echo "reviving divergent $divergent"
+    ceph pg dump pgs
+    activate_osd $dir $divergent
+    wait_for_osd up $divergent
+
+    sleep 20
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) dump_ops_in_flight
+
+    echo "allowing recovery"
+    ceph pg dump pgs
+    # Set osd_recovery_delay_start back to 0 and kick the queue
+    for i in $osds
+    do
+        ceph tell osd.$i debug kick_recovery_wq 0
+    done
+
+    echo 'reading divergent objects'
+    ceph pg dump pgs
+    for i in $(seq 1 $(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE))
+    do
+      rados -p $poolname get existing_$i $dir/existing || return 1
+    done
+    for i in $(seq 1 $DIVERGENT_CREATE)
+    do
+      rados -p $poolname get newobject_$i $dir/existing
+    done
+    rm -f $dir/existing
+
+    grep _merge_object_divergent_entries $(find $dir -name '*osd*log')
+    # Check for _merge_object_divergent_entries for case #1
+    if ! grep -q "_merge_object_divergent_entries: more recent entry found:" $(find $dir -name '*osd*log')
+    then
+           echo failure
+           return 1
+    fi
+    # Check for _merge_object_divergent_entries for case #2
+    if ! grep -q "_merge_object_divergent_entries.*prior_version or op type indicates creation" $(find $dir -name '*osd*log')
+    then
+           echo failure
+           return 1
+    fi
+    echo "success"
+
+    rm $dir/$expfile
+
+    delete_pool $poolname
+    kill_daemons $dir || return 1
+}
+
+# this is the same as case _2 above, except we enable pg autoscaling in order
+# to reproduce https://tracker.ceph.com/issues/41816
+function TEST_divergent_3() {
+    local dir=$1
+
+    # something that is always there
+    local dummyfile='/etc/fstab'
+    local dummyfile2='/etc/resolv.conf'
+
+    local num_osds=3
+    local osds="$(seq 0 $(expr $num_osds - 1))"
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    for i in $osds
+    do
+      run_osd $dir $i || return 1
+    done
+
+    ceph osd set noout
+    ceph osd set noin
+    ceph osd set nodown
+    create_pool $poolname 1 1
+    ceph osd pool set $poolname size 3
+    ceph osd pool set $poolname min_size 2
+
+    # reproduce https://tracker.ceph.com/issues/41816
+    ceph osd pool set $poolname pg_autoscale_mode on
+
+    flush_pg_stats || return 1
+    wait_for_clean || return 1
+
+    # determine primary
+    local divergent="$(ceph pg dump pgs --format=json | jq '.pg_stats[0].up_primary')"
+    echo "primary and soon to be divergent is $divergent"
+    ceph pg dump pgs
+    local non_divergent=""
+    for i in $osds
+    do
+      if [ "$i" = "$divergent" ]; then
+         continue
+      fi
+      non_divergent="$non_divergent $i"
+    done
+
+    echo "writing initial objects"
+    # write a bunch of objects
+    for i in $(seq 1 $testobjects)
+    do
+      rados -p $poolname put existing_$i $dummyfile
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    local pgid=$(get_pg $poolname existing_1)
+
+    # blackhole non_divergent
+    echo "blackholing osds $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) config set objectstore_blackhole 1
+    done
+
+    # Do some creates to hit case 2
+    echo 'create new divergent objects'
+    for i in $(seq 1 $DIVERGENT_CREATE)
+    do
+      rados -p $poolname create newobject_$i &
+    done
+    # Write some soon to be divergent
+    echo 'writing divergent objects'
+    for i in $(seq 1 $DIVERGENT_WRITE)
+    do
+      rados -p $poolname put existing_$i $dummyfile2 &
+    done
+    # Remove some soon to be divergent
+    echo 'remove divergent objects'
+    for i in $(seq 1 $DIVERGENT_REMOVE)
+    do
+      rmi=$(expr $i + $DIVERGENT_WRITE)
+      rados -p $poolname rm existing_$rmi &
+    done
+    sleep 10
+    killall -9 rados
+
+    # kill all the osds but leave divergent in
+    echo 'killing all the osds'
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd || return 1
+    for i in $osds
+    do
+      ceph osd down osd.$i
+    done
+    for i in $non_divergent
+    do
+      ceph osd out osd.$i
+    done
+
+    # bring up non-divergent
+    echo "bringing up non_divergent $non_divergent"
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      activate_osd $dir $i || return 1
+    done
+    for i in $non_divergent
+    do
+      ceph osd in osd.$i
+    done
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # write 1 non-divergent object (ensure that old divergent one is divergent)
+    objname="existing_$(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE)"
+    echo "writing non-divergent object $objname"
+    ceph pg dump pgs
+    rados -p $poolname put $objname $dummyfile2
+
+    WAIT_FOR_CLEAN_TIMEOUT=20 wait_for_clean
+
+    # ensure no recovery of up osds first
+    echo 'delay recovery'
+    ceph pg dump pgs
+    for i in $non_divergent
+    do
+      CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${i}) set_recovery_delay 100000
+    done
+
+    # bring in our divergent friend
+    echo "revive divergent $divergent"
+    ceph pg dump pgs
+    ceph osd set noup
+    activate_osd $dir $divergent
+    sleep 5
+
+    echo 'delay recovery divergent'
+    ceph pg dump pgs
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) set_recovery_delay 100000
+
+    ceph osd unset noup
+
+    wait_for_osd up 0
+    wait_for_osd up 1
+    wait_for_osd up 2
+
+    ceph pg dump pgs
+    echo 'wait for peering'
+    ceph pg dump pgs
+    rados -p $poolname put foo $dummyfile
+
+    # At this point the divergent_priors should have been detected
+
+    echo "killing divergent $divergent"
+    ceph pg dump pgs
+    kill_daemons $dir KILL osd.$divergent
+
+    # export a pg
+    expfile=$dir/exp.$$.out
+    _objectstore_tool_nodown $dir $divergent --op export-remove --pgid $pgid --file $expfile
+    _objectstore_tool_nodown $dir $divergent --op import --file $expfile
+
+    echo "reviving divergent $divergent"
+    ceph pg dump pgs
+    activate_osd $dir $divergent
+    wait_for_osd up $divergent
+
+    sleep 20
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${divergent}) dump_ops_in_flight
+
+    echo "allowing recovery"
+    ceph pg dump pgs
+    # Set osd_recovery_delay_start back to 0 and kick the queue
+    for i in $osds
+    do
+        ceph tell osd.$i debug kick_recovery_wq 0
+    done
+
+    echo 'reading divergent objects'
+    ceph pg dump pgs
+    for i in $(seq 1 $(expr $DIVERGENT_WRITE + $DIVERGENT_REMOVE))
+    do
+      rados -p $poolname get existing_$i $dir/existing || return 1
+    done
+    for i in $(seq 1 $DIVERGENT_CREATE)
+    do
+      rados -p $poolname get newobject_$i $dir/existing
+    done
+    rm -f $dir/existing
+
+    grep _merge_object_divergent_entries $(find $dir -name '*osd*log')
+    # Check for _merge_object_divergent_entries for case #1
+    if ! grep -q "_merge_object_divergent_entries: more recent entry found:" $(find $dir -name '*osd*log')
+    then
+           echo failure
+           return 1
+    fi
+    # Check for _merge_object_divergent_entries for case #2
+    if ! grep -q "_merge_object_divergent_entries.*prior_version or op type indicates creation" $(find $dir -name '*osd*log')
+    then
+           echo failure
+           return 1
+    fi
+    echo "success"
+
+    rm $dir/$expfile
+
+    delete_pool $poolname
+    kill_daemons $dir || return 1
+}
+
+
+main divergent-priors "$@"
+
+# Local Variables:
+# compile-command: "make -j4 && ../qa/run-standalone.sh divergent-priors.sh"
+# End:
index cfbf2871927fadca64444e5d41e3caf14dcb0a96..05188ad509653bc95eaaf0816a4b7d5346166bf8 100755 (executable)
@@ -10,7 +10,7 @@ function run() {
     export CEPH_MON="127.0.0.1:7132" # git grep '\<7132\>' : there must be only one
     export CEPH_ARGS
     CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
-    CEPH_ARGS+="--mon-host=$CEPH_MON --osd-objectstore filestore"
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
     export margin=10
     export objects=200
     export poolname=test
index 2a69ba12d03f9677d7ad48dfb5ece2871e729e01..a089696bb9b4d8bf665092da9ffff82443599fd3 100755 (executable)
@@ -157,7 +157,7 @@ function TEST_backfill_priority() {
     ceph osd pool set $pool3 size 2
     sleep 2
 
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     # 3. Item is in progress, adjust priority with no higher priority waiting
     for i in $(seq 1 $max_tries)
@@ -172,18 +172,18 @@ function TEST_backfill_priority() {
       sleep 2
     done
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     ceph osd out osd.$chk_osd1_2
     sleep 2
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
     ceph pg dump pgs
 
     ceph osd pool set $pool2 size 2
     sleep 2
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     ceph pg dump pgs
 
@@ -222,7 +222,7 @@ function TEST_backfill_priority() {
       sleep 2
     done
     sleep 2
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio")
     if [ "$PRIO" != "$FORCE_PRIO" ];
@@ -235,7 +235,7 @@ function TEST_backfill_priority() {
     # 4. Item is in progress, if higher priority items waiting prempt item
     ceph pg cancel-force-backfill $PG3 || return 1
     sleep 2
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG3}\")).prio")
     if [ "$PRIO" != "$degraded_prio" ];
@@ -260,14 +260,14 @@ function TEST_backfill_priority() {
 
     ceph pg cancel-force-backfill $PG2 || return 1
     sleep 5
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     # 2. Item is queued, re-queue and preempt because new priority higher than an in progress item
     flush_pg_stats || return 1
     ceph pg force-backfill $PG3 || return 1
     sleep 2
 
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio")
     if [ "$PRIO" != "$degraded_prio" ];
@@ -293,7 +293,7 @@ function TEST_backfill_priority() {
     ceph osd unset noout
     ceph osd unset nobackfill
 
-    wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations" || return 1
+    wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations" || return 1
 
     ceph pg dump pgs
 
@@ -321,7 +321,7 @@ function TEST_backfill_priority() {
 # pool 2 with recovery_priority 2
 #
 # Start backfill by changing the pool sizes from 1 to 2
-# Use dump_reservations to verify priorities
+# Use dump_recovery_reservations to verify priorities
 function TEST_backfill_pool_priority() {
     local dir=$1
     local pools=3 # Don't assume the first 2 pools are exact what we want
@@ -430,10 +430,10 @@ function TEST_backfill_pool_priority() {
     ceph osd pool set $pool1 size 2
     ceph osd pool set $pool2 size 2
     sleep 5
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/dump.${chk_osd1_1}.out
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/dump.${chk_osd1_1}.out
     echo osd.${chk_osd1_1}
     cat $dir/dump.${chk_osd1_1}.out
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_reservations > $dir/dump.${chk_osd1_2}.out
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_recovery_reservations > $dir/dump.${chk_osd1_2}.out
     echo osd.${chk_osd1_2}
     cat $dir/dump.${chk_osd1_2}.out
 
index 936043250edf1cd41b1f6be581e62a95fd437c8b..636601ec7bde70523868ee2ba5a160e1e70491da 100755 (executable)
@@ -247,6 +247,21 @@ function TEST_backfill_test_multi() {
     fi
 
     ceph pg dump pgs
+    ceph status
+
+    ceph status --format=json-pretty > $dir/stat.json
+
+    eval SEV=$(jq '.health.checks.PG_BACKFILL_FULL.severity' $dir/stat.json)
+    if [ "$SEV" != "HEALTH_WARN" ]; then
+      echo "PG_BACKFILL_FULL severity $SEV not HEALTH_WARN"
+      ERRORS="$(expr $ERRORS + 1)"
+    fi
+    eval MSG=$(jq '.health.checks.PG_BACKFILL_FULL.summary.message' $dir/stat.json)
+    if [ "$MSG" != "Low space hindering backfill (add storage if this doesn't resolve itself): 4 pgs backfill_toofull" ]; then
+      echo "PG_BACKFILL_FULL message '$MSG' mismatched"
+      ERRORS="$(expr $ERRORS + 1)"
+    fi
+    rm -f $dir/stat.json
 
     if [ $ERRORS != "0" ];
     then
index 550708963bc6f8331f60572443b1ba687d0056b6..5258cfc6d5bdd01607aedf66ab2cccb27473bf2d 100755 (executable)
@@ -38,13 +38,13 @@ function TEST_bluestore() {
 
     run_mon $dir a || return 1
     run_mgr $dir x || return 1
-    run_osd_bluestore $dir 0 || return 1
+    run_osd $dir 0 || return 1
     osd_pid0=$(cat $dir/osd.0.pid)
-    run_osd_bluestore $dir 1 || return 1
+    run_osd $dir 1 || return 1
     osd_pid1=$(cat $dir/osd.1.pid)
-    run_osd_bluestore $dir 2 || return 1
+    run_osd $dir 2 || return 1
     osd_pid2=$(cat $dir/osd.2.pid)
-    run_osd_bluestore $dir 3 || return 1
+    run_osd $dir 3 || return 1
     osd_pid3=$(cat $dir/osd.3.pid)
 
     sleep 5
@@ -140,13 +140,13 @@ function TEST_bluestore() {
 
     ceph-bluestore-tool --path $dir/3 fsck || return 1
 
-    run_osd_bluestore $dir 0 || return 1
+    run_osd $dir 0 || return 1
     osd_pid0=$(cat $dir/osd.0.pid)
-    run_osd_bluestore $dir 1 || return 1
+    run_osd $dir 1 || return 1
     osd_pid1=$(cat $dir/osd.1.pid)
-    run_osd_bluestore $dir 2 || return 1
+    run_osd $dir 2 || return 1
     osd_pid2=$(cat $dir/osd.2.pid)
-    run_osd_bluestore $dir 3 || return 1
+    run_osd $dir 3 || return 1
     osd_pid3=$(cat $dir/osd.3.pid)
 
     wait_for_clean || return 1
@@ -218,13 +218,13 @@ function TEST_bluestore() {
 
     ceph-bluestore-tool --path $dir/3 fsck || return 1
 
-    run_osd_bluestore $dir 0 || return 1
+    run_osd $dir 0 || return 1
     osd_pid0=$(cat $dir/osd.0.pid)
-    run_osd_bluestore $dir 1 || return 1
+    run_osd $dir 1 || return 1
     osd_pid1=$(cat $dir/osd.1.pid)
-    run_osd_bluestore $dir 2 || return 1
+    run_osd $dir 2 || return 1
     osd_pid2=$(cat $dir/osd.2.pid)
-    run_osd_bluestore $dir 3 || return 1
+    run_osd $dir 3 || return 1
     osd_pid3=$(cat $dir/osd.3.pid)
 
     # write some objects
@@ -324,13 +324,13 @@ function TEST_bluestore() {
 
     ceph-bluestore-tool --path $dir/3 fsck || return 1
 
-    run_osd_bluestore $dir 0 || return 1
+    run_osd $dir 0 || return 1
     osd_pid0=$(cat $dir/osd.0.pid)
-    run_osd_bluestore $dir 1 || return 1
+    run_osd $dir 1 || return 1
     osd_pid1=$(cat $dir/osd.1.pid)
-    run_osd_bluestore $dir 2 || return 1
+    run_osd $dir 2 || return 1
     osd_pid2=$(cat $dir/osd.2.pid)
-    run_osd_bluestore $dir 3 || return 1
+    run_osd $dir 3 || return 1
     osd_pid3=$(cat $dir/osd.3.pid)
 
     # write some objects
index 324840b04b4ee79edf7239898a39d9885fc6fafa..26f583b9990ec0c4aa89d2aa6f884914aa0cb976 100755 (executable)
@@ -33,10 +33,10 @@ function TEST_filestore_to_bluestore() {
 
     run_mon $dir a || return 1
     run_mgr $dir x || return 1
-    run_osd $dir 0 || return 1
+    run_osd_filestore $dir 0 || return 1
     osd_pid=$(cat $dir/osd.0.pid)
-    run_osd $dir 1 || return 1
-    run_osd $dir 2 || return 1
+    run_osd_filestore $dir 1 || return 1
+    run_osd_filestore $dir 2 || return 1
 
     sleep 5
 
@@ -61,7 +61,7 @@ function TEST_filestore_to_bluestore() {
                          --op dup || return 1
     CEPH_ARGS=$O
 
-    run_osd_bluestore $dir 0 || return 1
+    run_osd $dir 0 || return 1
 
     while ! ceph osd stat | grep '3 up' ; do sleep 1 ; done
     ceph osd metadata 0 | grep bluestore || return 1
index d246dda66db1aac3ed8506c95333737e75e7d35b..fb386e265ab3525dce0b5cb0748f1a1a4c840964 100755 (executable)
@@ -152,7 +152,7 @@ function TEST_recovery_priority() {
     # to be preempted.
     ceph osd pool set $pool3 size 2
     sleep 2
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     # 3. Item is in progress, adjust priority with no higher priority waiting
     for i in $(seq 1 $max_tries)
@@ -167,18 +167,18 @@ function TEST_recovery_priority() {
       sleep 2
     done
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     ceph osd out osd.$chk_osd1_2
     sleep 2
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
     ceph pg dump pgs
 
     ceph osd pool set $pool2 size 2
     sleep 2
     flush_pg_stats || return 1
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     ceph pg dump pgs
 
@@ -217,7 +217,7 @@ function TEST_recovery_priority() {
       sleep 2
     done
     sleep 2
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio")
     if [ "$PRIO" != "$FORCE_PRIO" ];
@@ -232,7 +232,7 @@ function TEST_recovery_priority() {
     ceph pg cancel-force-recovery $PG3 || return 1
     sleep 2
     #ceph osd set norecover
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG3}\")).prio")
     if [ "$PRIO" != "$NORMAL_PRIO" ];
@@ -257,14 +257,14 @@ function TEST_recovery_priority() {
 
     ceph pg cancel-force-recovery $PG2 || return 1
     sleep 5
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1
 
     # 2. Item is queued, re-queue and preempt because new priority higher than an in progress item
     flush_pg_stats || return 1
     ceph pg force-recovery $PG3 || return 1
     sleep 2
 
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1
     cat $dir/out
     PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio")
     if [ "$PRIO" != "$NORMAL_PRIO" ];
@@ -290,7 +290,7 @@ function TEST_recovery_priority() {
     ceph osd unset noout
     ceph osd unset norecover
 
-    wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations" || return 1
+    wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations" || return 1
 
     ceph pg dump pgs
 
@@ -318,7 +318,7 @@ function TEST_recovery_priority() {
 # pool 2 with recovery_priority 2
 #
 # Start recovery by changing the pool sizes from 1 to 2
-# Use dump_reservations to verify priorities
+# Use dump_recovery_reservations to verify priorities
 function TEST_recovery_pool_priority() {
     local dir=$1
     local pools=3 # Don't assume the first 2 pools are exact what we want
@@ -426,10 +426,10 @@ function TEST_recovery_pool_priority() {
     ceph osd pool set $pool1 size 2
     ceph osd pool set $pool2 size 2
     sleep 10
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/dump.${chk_osd1_1}.out
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/dump.${chk_osd1_1}.out
     echo osd.${chk_osd1_1}
     cat $dir/dump.${chk_osd1_1}.out
-    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_reservations > $dir/dump.${chk_osd1_2}.out
+    CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_recovery_reservations > $dir/dump.${chk_osd1_2}.out
     echo osd.${chk_osd1_2}
     cat $dir/dump.${chk_osd1_2}.out
 
diff --git a/ceph/qa/standalone/osd/osd-recovery-space.sh b/ceph/qa/standalone/osd/osd-recovery-space.sh
new file mode 100755 (executable)
index 0000000..d12494a
--- /dev/null
@@ -0,0 +1,179 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2018 Red Hat <contact@redhat.com>
+#
+# Author: David Zafman <dzafman@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Library Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library Public License for more details.
+#
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:7221" # git grep '\<7221\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    CEPH_ARGS+="--osd_max_backfills=10 "
+    export objects=600
+    export poolprefix=test
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+        $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+
+function get_num_in_state() {
+    local state=$1
+    local expression
+    expression+="select(contains(\"${state}\"))"
+    ceph --format json pg dump pgs 2>/dev/null | \
+        jq ".pg_stats | [.[] | .state | $expression] | length"
+}
+
+
+function wait_for_state() {
+    local state=$1
+    local num_in_state=-1
+    local cur_in_state
+    local -a delays=($(get_timeout_delays $2 5))
+    local -i loop=0
+
+    flush_pg_stats || return 1
+    while test $(get_num_pgs) == 0 ; do
+       sleep 1
+    done
+
+    while true ; do
+        cur_in_state=$(get_num_in_state ${state})
+        test $cur_in_state = "0" && break
+        if test $cur_in_state != $num_in_state ; then
+            loop=0
+            num_in_state=$cur_in_state
+        elif (( $loop >= ${#delays[*]} )) ; then
+            ceph pg dump pgs
+            return 1
+        fi
+        sleep ${delays[$loop]}
+        loop+=1
+    done
+    return 0
+}
+
+
+function wait_for_recovery_toofull() {
+    local timeout=$1
+    wait_for_state recovery_toofull $timeout
+}
+
+
+# Create 1 pools with size 1
+# set ful-ratio to 50%
+# Write data 600 5K (3000K)
+# Inject fake_statfs_for_testing to 3600K (83% full)
+# Incresase the pool size to 2
+# The pool shouldn't have room to recovery
+function TEST_recovery_test_simple() {
+    local dir=$1
+    local pools=1
+    local OSDS=2
+
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    export CEPH_ARGS
+
+    for osd in $(seq 0 $(expr $OSDS - 1))
+    do
+      run_osd $dir $osd || return 1
+    done
+
+    ceph osd set-nearfull-ratio .40
+    ceph osd set-backfillfull-ratio .45
+    ceph osd set-full-ratio .50
+
+    for p in $(seq 1 $pools)
+    do
+      create_pool "${poolprefix}$p" 1 1
+      ceph osd pool set "${poolprefix}$p" size 1
+    done
+
+    wait_for_clean || return 1
+
+    dd if=/dev/urandom of=$dir/datafile bs=1024 count=5
+    for o in $(seq 1 $objects)
+    do
+      rados -p "${poolprefix}$p" put obj$o $dir/datafile
+    done
+
+    for o in $(seq 0 $(expr $OSDS - 1))
+    do
+      ceph tell osd.$o injectargs '--fake_statfs_for_testing 3686400' || return 1
+    done
+    sleep 5
+
+    ceph pg dump pgs
+
+    for p in $(seq 1 $pools)
+    do
+      ceph osd pool set "${poolprefix}$p" size 2
+    done
+
+    # If this times out, we'll detected errors below
+    wait_for_recovery_toofull 30
+
+    ERRORS=0
+    if [ "$(ceph pg dump pgs | grep +recovery_toofull | wc -l)" != "1" ];
+    then
+      echo "One pool should have been in recovery_toofull"
+      ERRORS="$(expr $ERRORS + 1)"
+    fi
+
+    ceph pg dump pgs
+    ceph status
+    ceph status --format=json-pretty > $dir/stat.json
+
+    eval SEV=$(jq '.health.checks.PG_RECOVERY_FULL.severity' $dir/stat.json)
+    if [ "$SEV" != "HEALTH_ERR" ]; then
+      echo "PG_RECOVERY_FULL severity $SEV not HEALTH_ERR"
+      ERRORS="$(expr $ERRORS + 1)"
+    fi
+    eval MSG=$(jq '.health.checks.PG_RECOVERY_FULL.summary.message' $dir/stat.json)
+    if [ "$MSG" != "Full OSDs blocking recovery: 1 pg recovery_toofull" ]; then
+      echo "PG_RECOVERY_FULL message '$MSG' mismatched"
+      ERRORS="$(expr $ERRORS + 1)"
+    fi
+    rm -f $dir/stat.json
+
+    if [ $ERRORS != "0" ];
+    then
+      return 1
+    fi
+
+    for i in $(seq 1 $pools)
+    do
+      delete_pool "${poolprefix}$i"
+    done
+    kill_daemons $dir || return 1
+}
+
+
+main osd-recovery-space "$@"
+
+# Local Variables:
+# compile-command: "make -j4 && ../qa/run-standalone.sh osd-recovery-space.sh"
+# End:
index adf6fc7967a0fa8eb0f15a8679de02684f071c19..6e9eeac3945012f6e76ada2bb809a3916a11b5a2 100755 (executable)
@@ -27,7 +27,7 @@ function run() {
     export CEPH_ARGS
     CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
     CEPH_ARGS+="--mon-host=$CEPH_MON "
-    CEPH_ARGS+="--osd-objectstore=filestore "
+
 
     local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
     for func in $funcs ; do
@@ -44,9 +44,10 @@ function run() {
 function setup_osds() {
     local count=$1
     shift
+    local type=$1
 
     for id in $(seq 0 $(expr $count - 1)) ; do
-        run_osd $dir $id || return 1
+        run_osd${type} $dir $id || return 1
     done
     wait_for_clean || return 1
 }
@@ -331,7 +332,7 @@ function TEST_rep_read_unfound() {
     local dir=$1
     local objname=myobject
 
-    setup_osds 3 || return 1
+    setup_osds 3 _filestore || return 1
 
     ceph osd pool delete foo foo --yes-i-really-really-mean-it || return 1
     local poolname=test-pool
diff --git a/ceph/qa/standalone/scrub/osd-scrub-dump.sh b/ceph/qa/standalone/scrub/osd-scrub-dump.sh
new file mode 100755 (executable)
index 0000000..e218834
--- /dev/null
@@ -0,0 +1,173 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2019 Red Hat <contact@redhat.com>
+#
+# Author: David Zafman <dzafman@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Library Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library Public License for more details.
+#
+
+source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
+
+MAX_SCRUBS=4
+SCRUB_SLEEP=2
+POOL_SIZE=3
+
+function run() {
+    local dir=$1
+    shift
+    local SLEEP=0
+    local CHUNK_MAX=5
+
+    export CEPH_MON="127.0.0.1:7184" # git grep '\<7184\>' : there must be only one
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+    CEPH_ARGS+="--osd_max_scrubs=$MAX_SCRUBS "
+    CEPH_ARGS+="--osd_scrub_sleep=$SLEEP "
+    CEPH_ARGS+="--osd_scrub_chunk_max=$CHUNK_MAX "
+    CEPH_ARGS+="--osd_scrub_sleep=$SCRUB_SLEEP "
+    CEPH_ARGS+="--osd_pool_default_size=$POOL_SIZE "
+
+    export -n CEPH_CLI_TEST_DUP_COMMAND
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        setup $dir || return 1
+        $func $dir || return 1
+        teardown $dir || return 1
+    done
+}
+
+function TEST_recover_unexpected() {
+    local dir=$1
+    shift
+    local OSDS=6
+    local PGS=16
+    local POOLS=3
+    local OBJS=1000
+
+    run_mon $dir a || return 1
+    run_mgr $dir x || return 1
+    for o in $(seq 0 $(expr $OSDS - 1))
+    do
+        run_osd $dir $o
+    done
+
+    for i in $(seq 1 $POOLS)
+    do
+        create_pool test$i $PGS $PGS
+    done
+
+    wait_for_clean || return 1
+
+    dd if=/dev/urandom of=datafile bs=4k count=2
+    for i in $(seq 1 $POOLS)
+    do
+       for j in $(seq 1 $OBJS)
+       do
+              rados -p test$i put obj$j datafile
+       done
+    done
+    rm datafile
+
+    ceph osd set noscrub
+    ceph osd set nodeep-scrub
+
+    for qpg in $(ceph pg dump pgs --format=json-pretty | jq '.pg_stats[].pgid')
+    do
+       primary=$(ceph pg dump pgs --format=json | jq ".pg_stats[] | select(.pgid == $qpg) | .acting_primary")
+       eval pg=$qpg   # strip quotes around qpg
+       CEPH_ARGS='' ceph daemon $(get_asok_path osd.$primary) trigger_scrub $pg
+    done
+
+    ceph pg dump pgs
+
+    max=$(CEPH_ARGS='' ceph daemon $(get_asok_path osd.0) dump_scrub_reservations | jq '.osd_max_scrubs')
+    if [ $max != $MAX_SCRUBS];
+    then
+       echo "ERROR: Incorrect osd_max_scrubs from dump_scrub_reservations"
+       return 1
+    fi
+
+    ceph osd unset noscrub
+
+    ok=false
+    for i in $(seq 0 300)
+    do
+       ceph pg dump pgs
+       if ceph pg dump pgs | grep scrubbing; then
+           ok=true
+           break
+       fi
+       sleep 1
+    done
+    if test $ok = "false"; then
+       echo "ERROR: Test set-up failed no scrubbing"
+       return 1
+    fi
+
+    local total=0
+    local zerocount=0
+    local maxzerocount=3
+    while(true)
+    do
+       pass=0
+       for o in $(seq 0 $(expr $OSDS - 1))
+       do
+               CEPH_ARGS='' ceph daemon $(get_asok_path osd.$o) dump_scrub_reservations
+               scrubs=$(CEPH_ARGS='' ceph daemon $(get_asok_path osd.$o) dump_scrub_reservations | jq '.scrubs_local + .scrubs_remote')
+               if [ $scrubs -gt $MAX_SCRUBS ]; then
+                   echo "ERROR: More than $MAX_SCRUBS currently reserved"
+                   return 1
+               fi
+               pass=$(expr $pass + $scrubs)
+        done
+       if [ $pass = "0" ]; then
+           zerocount=$(expr $zerocount + 1)
+       fi
+       if [ $zerocount -gt $maxzerocount ]; then
+           break
+       fi
+       total=$(expr $total + $pass)
+       sleep $(expr $SCRUB_SLEEP \* 2)
+    done
+
+    # Check that there are no more scrubs
+    for i in $(seq 0 5)
+    do
+        if ceph pg dump pgs | grep scrubbing; then
+           echo "ERROR: Extra scrubs after test completion...not expected"
+           return 1
+        fi
+       sleep $SCRUB_SLEEP
+    done
+
+    echo $total total reservations seen
+
+    # Sort of arbitraty number based on PGS * POOLS * POOL_SIZE as the number of total scrub
+    # reservations that must occur.  However, the loop above might see the same reservation more
+    # than once.
+    actual_reservations=$(expr $PGS \* $POOLS \* $POOL_SIZE)
+    if [ $total -lt $actual_reservations ]; then
+       echo "ERROR: Unexpectedly low amount of scrub reservations seen during test"
+       return 1
+    fi
+
+    return 0
+}
+
+
+main osd-scrub-dump "$@"
+
+# Local Variables:
+# compile-command: "cd build ; make check && \
+#    ../qa/run-standalone.sh osd-scrub-dump.sh"
+# End:
index b62e2c086c8134ac4cb3612a3357b5d0de02646d..3acc0d8b47d8fdc1831d6e77a35e9b19496e1f71 100755 (executable)
@@ -56,7 +56,6 @@ function run() {
     CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
     CEPH_ARGS+="--mon-host=$CEPH_MON "
     CEPH_ARGS+="--osd-skip-data-digest=false "
-    CEPH_ARGS+="--osd-objectstore=filestore "
 
     export -n CEPH_CLI_TEST_DUP_COMMAND
     local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
@@ -108,6 +107,86 @@ function TEST_corrupt_and_repair_replicated() {
     teardown $dir || return 1
 }
 
+#
+# Allow repair to be scheduled when some recovering is still undergoing on the same OSD
+#
+function TEST_allow_repair_during_recovery() {
+    local dir=$1
+    local poolname=rbd
+
+    setup $dir || return 1
+    run_mon $dir a --osd_pool_default_size=2 || return 1
+    run_mgr $dir x || return 1
+    run_osd $dir 0 --osd_scrub_during_recovery=false \
+                   --osd_repair_during_recovery=true \
+                   --osd_debug_pretend_recovery_active=true || return 1
+    run_osd $dir 1 --osd_scrub_during_recovery=false \
+                   --osd_repair_during_recovery=true \
+                   --osd_debug_pretend_recovery_active=true || return 1
+    create_rbd_pool || return 1
+    wait_for_clean || return 1
+
+    add_something $dir $poolname || return 1
+    corrupt_and_repair_one $dir $poolname $(get_not_primary $poolname SOMETHING) || return 1
+
+    teardown $dir || return 1
+}
+
+#
+# Skip non-repair scrub correctly during recovery
+#
+function TEST_skip_non_repair_during_recovery() {
+    local dir=$1
+    local poolname=rbd
+
+    setup $dir || return 1
+    run_mon $dir a --osd_pool_default_size=2 || return 1
+    run_mgr $dir x || return 1
+    run_osd $dir 0 --osd_scrub_during_recovery=false \
+                   --osd_repair_during_recovery=true \
+                   --osd_debug_pretend_recovery_active=true || return 1
+    run_osd $dir 1 --osd_scrub_during_recovery=false \
+                   --osd_repair_during_recovery=true \
+                   --osd_debug_pretend_recovery_active=true || return 1
+    create_rbd_pool || return 1
+    wait_for_clean || return 1
+
+    add_something $dir $poolname || return 1
+    scrub_and_not_schedule $dir $poolname $(get_not_primary $poolname SOMETHING) || return 1
+
+    teardown $dir || return 1
+}
+
+function scrub_and_not_schedule() {
+    local dir=$1
+    local poolname=$2
+    local osd=$3
+
+    #
+    # 1) start a non-repair scrub
+    #
+    local pg=$(get_pg $poolname SOMETHING)
+    local last_scrub=$(get_last_scrub_stamp $pg)
+    ceph pg scrub $pg
+
+    #
+    # 2) Assure the scrub is not scheduled
+    #
+    for ((i=0; i < 3; i++)); do
+        if test "$(get_last_scrub_stamp $pg)" '>' "$last_scrub" ; then
+            return 1
+        fi
+        sleep 1
+    done
+
+    #
+    # 3) Access to the file must OK
+    #
+    objectstore_tool $dir $osd SOMETHING list-attrs || return 1
+    rados --pool $poolname get SOMETHING $dir/COPY || return 1
+    diff $dir/ORIGINAL $dir/COPY || return 1
+}
+
 function corrupt_and_repair_two() {
     local dir=$1
     local poolname=$2
@@ -191,24 +270,6 @@ function corrupt_and_repair_erasure_coded() {
 
 }
 
-function create_ec_pool() {
-    local pool_name=$1
-    shift
-    local allow_overwrites=$1
-    shift
-
-    ceph osd erasure-code-profile set myprofile crush-failure-domain=osd "$@" || return 1
-
-    create_pool "$poolname" 1 1 erasure myprofile || return 1
-
-    if [ "$allow_overwrites" = "true" ]; then
-        ceph osd pool set "$poolname" allow_ec_overwrites true || return 1
-    fi
-
-    wait_for_clean || return 1
-    return 0
-}
-
 function auto_repair_erasure_coded() {
     local dir=$1
     local allow_overwrites=$2
@@ -225,9 +286,9 @@ function auto_repair_erasure_coded() {
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 2) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id $ceph_osd_args || return 1
-       else
             run_osd $dir $id $ceph_osd_args || return 1
+       else
+            run_osd_filestore $dir $id $ceph_osd_args || return 1
        fi
     done
     create_rbd_pool || return 1
@@ -280,7 +341,7 @@ function TEST_auto_repair_bluestore_basic() {
            --osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 2) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     create_pool $poolname 1 1 || return 1
@@ -329,7 +390,7 @@ function TEST_auto_repair_bluestore_scrub() {
            --osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 2) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     create_pool $poolname 1 1 || return 1
@@ -384,7 +445,7 @@ function TEST_auto_repair_bluestore_failed() {
            --osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 2) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     create_pool $poolname 1 1 || return 1
@@ -453,7 +514,7 @@ function TEST_auto_repair_bluestore_failed_norecov() {
            --osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 2) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     create_pool $poolname 1 1 || return 1
@@ -510,7 +571,7 @@ function TEST_repair_stats() {
     local ceph_osd_args="--osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 $(expr $OSDS - 1)) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     create_pool $poolname 1 1 || return 1
@@ -539,8 +600,8 @@ function TEST_repair_stats() {
       OSD=$(expr $i % 2)
       _objectstore_tool_nodown $dir $OSD obj$i remove || return 1
     done
-    run_osd_bluestore $dir $primary $ceph_osd_args || return 1
-    run_osd_bluestore $dir $other $ceph_osd_args || return 1
+    run_osd $dir $primary $ceph_osd_args || return 1
+    run_osd $dir $other $ceph_osd_args || return 1
     wait_for_clean || return 1
 
     repair $pgid
@@ -584,7 +645,7 @@ function TEST_repair_stats_ec() {
     local ceph_osd_args="--osd_deep_scrub_randomize_ratio=0 \
             --osd-scrub-interval-randomize-ratio=0"
     for id in $(seq 0 $(expr $OSDS - 1)) ; do
-        run_osd_bluestore $dir $id $ceph_osd_args || return 1
+        run_osd $dir $id $ceph_osd_args || return 1
     done
 
     # Create an EC pool
@@ -612,8 +673,8 @@ function TEST_repair_stats_ec() {
       OSD=$(expr $i % 2)
       _objectstore_tool_nodown $dir $OSD obj$i remove || return 1
     done
-    run_osd_bluestore $dir $primary $ceph_osd_args || return 1
-    run_osd_bluestore $dir $other $ceph_osd_args || return 1
+    run_osd $dir $primary $ceph_osd_args || return 1
+    run_osd $dir $other $ceph_osd_args || return 1
     wait_for_clean || return 1
 
     repair $pgid
@@ -655,9 +716,9 @@ function corrupt_and_repair_jerasure() {
     run_mgr $dir x || return 1
     for id in $(seq 0 3) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id || return 1
-       else
             run_osd $dir $id || return 1
+       else
+            run_osd_filestore $dir $id || return 1
        fi
     done
     create_rbd_pool || return 1
@@ -689,9 +750,9 @@ function corrupt_and_repair_lrc() {
     run_mgr $dir x || return 1
     for id in $(seq 0 9) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id || return 1
-       else
             run_osd $dir $id || return 1
+       else
+            run_osd_filestore $dir $id || return 1
        fi
     done
     create_rbd_pool || return 1
@@ -724,9 +785,9 @@ function unfound_erasure_coded() {
     run_mgr $dir x || return 1
     for id in $(seq 0 3) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id || return 1
-       else
             run_osd $dir $id || return 1
+       else
+            run_osd_filestore $dir $id || return 1
        fi
     done
 
@@ -794,9 +855,9 @@ function list_missing_erasure_coded() {
     run_mgr $dir x || return 1
     for id in $(seq 0 2) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id || return 1
-       else
             run_osd $dir $id || return 1
+       else
+            run_osd_filestore $dir $id || return 1
        fi
     done
     create_rbd_pool || return 1
@@ -869,7 +930,7 @@ function TEST_list_missing_erasure_coded_overwrites() {
 function TEST_corrupt_scrub_replicated() {
     local dir=$1
     local poolname=csr_pool
-    local total_objs=18
+    local total_objs=19
 
     setup $dir || return 1
     run_mon $dir a --osd_pool_default_size=2 || return 1
@@ -891,6 +952,11 @@ function TEST_corrupt_scrub_replicated() {
         rados --pool $poolname setomapval $objname key-$objname val-$objname || return 1
     done
 
+    # Increase file 1 MB + 1KB
+    dd if=/dev/zero of=$dir/new.ROBJ19 bs=1024 count=1025
+    rados --pool $poolname put $objname $dir/new.ROBJ19 || return 1
+    rm -f $dir/new.ROBJ19
+
     local pg=$(get_pg $poolname ROBJ0)
     local primary=$(get_primary $poolname ROBJ0)
 
@@ -1010,12 +1076,18 @@ function TEST_corrupt_scrub_replicated() {
           objectstore_tool $dir 1 $objname set-bytes $dir/new.ROBJ18 || return 1
           # Make one replica have a different object info, so a full repair must happen too
           objectstore_tool $dir $osd $objname corrupt-info || return 1
+          ;;
+
+       19)
+          # Set osd-max-object-size smaller than this object's size
 
         esac
     done
 
     local pg=$(get_pg $poolname ROBJ0)
 
+    ceph tell osd.\* injectargs -- --osd-max-object-size=1048576
+
     inject_eio rep data $poolname ROBJ11 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
     inject_eio rep mdata $poolname ROBJ12 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
     inject_eio rep mdata $poolname ROBJ13 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
@@ -1043,9 +1115,10 @@ function TEST_corrupt_scrub_replicated() {
     err_strings[15]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 1 soid 3:ffdb2004:::ROBJ9:head : object info inconsistent "
     err_strings[16]="log_channel[(]cluster[)] log [[]ERR[]] : scrub [0-9]*[.]0 3:c0c86b1d:::ROBJ14:head : no '_' attr"
     err_strings[17]="log_channel[(]cluster[)] log [[]ERR[]] : scrub [0-9]*[.]0 3:5c7b2c47:::ROBJ16:head : can't decode 'snapset' attr buffer::malformed_input: .* no longer understand old encoding version 3 < 97"
-    err_strings[18]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub : stat mismatch, got 18/18 objects, 0/0 clones, 17/18 dirty, 17/18 omap, 0/0 pinned, 0/0 hit_set_archive, 0/0 whiteouts, 113/120 bytes, 0/0 manifest objects, 0/0 hit_set_archive bytes."
-    err_strings[19]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub 1 missing, 7 inconsistent objects"
-    err_strings[20]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub 17 errors"
+    err_strings[18]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub : stat mismatch, got 19/19 objects, 0/0 clones, 18/19 dirty, 18/19 omap, 0/0 pinned, 0/0 hit_set_archive, 0/0 whiteouts, 1049713/1049720 bytes, 0/0 manifest objects, 0/0 hit_set_archive bytes."
+    err_strings[19]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub 1 missing, 8 inconsistent objects"
+    err_strings[20]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 scrub 18 errors"
+    err_strings[21]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 soid 3:123a5f55:::ROBJ19:head : size 1049600 > 1048576 is too large"
 
     for err_string in "${err_strings[@]}"
     do
@@ -1588,6 +1661,69 @@ function TEST_corrupt_scrub_replicated() {
      ],
      "union_shard_errors": []
    },
+   {
+      "object": {
+        "name": "ROBJ19",
+        "nspace": "",
+        "locator": "",
+        "snap": "head",
+        "version": 58
+      },
+      "errors": [
+        "size_too_large"
+      ],
+      "union_shard_errors": [],
+      "selected_object_info": {
+        "oid": {
+          "oid": "ROBJ19",
+          "key": "",
+          "snapid": -2,
+          "hash": 2868534344,
+          "max": 0,
+          "pool": 3,
+          "namespace": ""
+        },
+        "version": "63'59",
+        "prior_version": "63'58",
+        "last_reqid": "osd.1.0:58",
+        "user_version": 58,
+        "size": 1049600,
+        "mtime": "2019-08-09T23:33:58.340709+0000",
+        "local_mtime": "2019-08-09T23:33:58.345676+0000",
+        "lost": 0,
+        "flags": [
+          "dirty",
+          "omap",
+          "data_digest",
+          "omap_digest"
+        ],
+        "truncate_seq": 0,
+        "truncate_size": 0,
+        "data_digest": "0x3dde0ef3",
+        "omap_digest": "0xbffddd28",
+        "expected_object_size": 0,
+        "expected_write_size": 0,
+        "alloc_hint_flags": 0,
+        "manifest": {
+          "type": 0
+        },
+        "watchers": {}
+      },
+      "shards": [
+        {
+          "osd": 0,
+          "primary": false,
+          "errors": [],
+          "size": 1049600
+        },
+        {
+          "osd": 1,
+          "primary": true,
+          "errors": [],
+          "size": 1049600
+        }
+      ]
+   },
    {
       "shards": [
         {
@@ -1704,7 +1840,7 @@ function TEST_corrupt_scrub_replicated() {
         "version": "79'66",
         "prior_version": "79'65",
         "last_reqid": "client.4554.0:1",
-        "user_version": 74,
+        "user_version": 79,
         "size": 7,
         "mtime": "",
         "local_mtime": "",
@@ -1756,7 +1892,7 @@ function TEST_corrupt_scrub_replicated() {
             "version": "95'67",
             "prior_version": "51'64",
             "last_reqid": "client.4649.0:1",
-            "user_version": 75,
+            "user_version": 80,
             "size": 1,
             "mtime": "",
             "local_mtime": "",
@@ -1842,7 +1978,7 @@ function TEST_corrupt_scrub_replicated() {
         "version": "95'67",
         "prior_version": "51'64",
         "last_reqid": "client.4649.0:1",
-        "user_version": 75,
+        "user_version": 80,
         "size": 1,
         "mtime": "",
         "local_mtime": "",
@@ -1915,6 +2051,10 @@ EOF
     inject_eio rep mdata $poolname ROBJ12 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
     inject_eio rep mdata $poolname ROBJ13 $dir 1 || return 1 # shard 1 of [1, 0], osd.0
     inject_eio rep data $poolname ROBJ13 $dir 0 || return 1 # shard 0 of [1, 0], osd.1
+
+    # ROBJ19 won't error this time
+    ceph tell osd.\* injectargs -- --osd-max-object-size=134217728
+
     pg_deep_scrub $pg
 
     err_strings=()
@@ -1941,7 +2081,7 @@ EOF
     err_strings[20]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 0 soid 3:c0c86b1d:::ROBJ14:head : candidate had a corrupt info"
     err_strings[21]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 soid 3:c0c86b1d:::ROBJ14:head : failed to pick suitable object info"
     err_strings[22]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 1 soid 3:ce3f1d6a:::ROBJ1:head : candidate size 9 info size 7 mismatch"
-    err_strings[23]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 1 soid 3:ce3f1d6a:::ROBJ1:head : data_digest 0x2d4a11c2 != data_digest 0x2ddbf8f5 from shard 0, data_digest 0x2d4a11c2 != data_digest 0x2ddbf8f5 from auth oi 3:ce3f1d6a:::ROBJ1:head[(][0-9]*'[0-9]* osd.1.0:65 dirty|omap|data_digest|omap_digest s 7 uv 3 dd 2ddbf8f5 od f5fba2c6 alloc_hint [[]0 0 0[]][)], size 9 != size 7 from auth oi 3:ce3f1d6a:::ROBJ1:head[(][0-9]*'[0-9]* osd.1.0:[0-9]* dirty|omap|data_digest|omap_digest s 7 uv 3 dd 2ddbf8f5 od f5fba2c6 alloc_hint [[]0 0 0[]][)], size 9 != size 7 from shard 0"
+    err_strings[23]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 1 soid 3:ce3f1d6a:::ROBJ1:head : data_digest 0x2d4a11c2 != data_digest 0x2ddbf8f5 from shard 0, data_digest 0x2d4a11c2 != data_digest 0x2ddbf8f5 from auth oi 3:ce3f1d6a:::ROBJ1:head[(][0-9]*'[0-9]* osd.1.0:[0-9]* dirty|omap|data_digest|omap_digest s 7 uv 3 dd 2ddbf8f5 od f5fba2c6 alloc_hint [[]0 0 0[]][)], size 9 != size 7 from auth oi 3:ce3f1d6a:::ROBJ1:head[(][0-9]*'[0-9]* osd.1.0:[0-9]* dirty|omap|data_digest|omap_digest s 7 uv 3 dd 2ddbf8f5 od f5fba2c6 alloc_hint [[]0 0 0[]][)], size 9 != size 7 from shard 0"
     err_strings[24]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 1 soid 3:d60617f9:::ROBJ13:head : candidate had a read error"
     err_strings[25]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 0 soid 3:d60617f9:::ROBJ13:head : candidate had a stat error"
     err_strings[26]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 soid 3:d60617f9:::ROBJ13:head : failed to pick suitable object info"
@@ -1954,7 +2094,7 @@ EOF
     err_strings[33]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 shard 0 soid 3:ffdb2004:::ROBJ9:head : object info inconsistent "
     err_strings[34]="log_channel[(]cluster[)] log [[]ERR[]] : deep-scrub [0-9]*[.]0 3:c0c86b1d:::ROBJ14:head : no '_' attr"
     err_strings[35]="log_channel[(]cluster[)] log [[]ERR[]] : deep-scrub [0-9]*[.]0 3:5c7b2c47:::ROBJ16:head : can't decode 'snapset' attr buffer::malformed_input: .* no longer understand old encoding version 3 < 97"
-    err_strings[36]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 deep-scrub : stat mismatch, got 18/18 objects, 0/0 clones, 17/18 dirty, 17/18 omap, 0/0 pinned, 0/0 hit_set_archive, 0/0 whiteouts, 115/116 bytes, 0/0 manifest objects, 0/0 hit_set_archive bytes."
+    err_strings[36]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 deep-scrub : stat mismatch, got 19/19 objects, 0/0 clones, 18/19 dirty, 18/19 omap, 0/0 pinned, 0/0 hit_set_archive, 0/0 whiteouts, 1049715/1049716 bytes, 0/0 manifest objects, 0/0 hit_set_archive bytes."
     err_strings[37]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 deep-scrub 1 missing, 11 inconsistent objects"
     err_strings[38]="log_channel[(]cluster[)] log [[]ERR[]] : [0-9]*[.]0 deep-scrub 35 errors"
 
@@ -3172,7 +3312,7 @@ EOF
         "version": "79'66",
         "prior_version": "79'65",
         "last_reqid": "client.4554.0:1",
-        "user_version": 74,
+        "user_version": 79,
         "size": 7,
         "mtime": "2018-04-05 14:34:05.598688",
         "local_mtime": "2018-04-05 14:34:05.599698",
@@ -3270,7 +3410,7 @@ EOF
             "version": "119'68",
             "prior_version": "51'64",
             "last_reqid": "client.4834.0:1",
-            "user_version": 76,
+            "user_version": 81,
             "size": 3,
             "mtime": "2018-04-05 14:35:01.500659",
             "local_mtime": "2018-04-05 14:35:01.502117",
@@ -3314,7 +3454,7 @@ EOF
         "version": "119'68",
         "prior_version": "51'64",
         "last_reqid": "client.4834.0:1",
-        "user_version": 76,
+        "user_version": 81,
         "size": 3,
         "mtime": "2018-04-05 14:35:01.500659",
         "local_mtime": "2018-04-05 14:35:01.502117",
@@ -3405,9 +3545,9 @@ function corrupt_scrub_erasure() {
     run_mgr $dir x || return 1
     for id in $(seq 0 2) ; do
        if [ "$allow_overwrites" = "true" ]; then
-            run_osd_bluestore $dir $id || return 1
-       else
             run_osd $dir $id || return 1
+       else
+            run_osd_filestore $dir $id || return 1
        fi
     done
     create_rbd_pool || return 1
index 8fd02e6f5c36a96c7c9087329b8c61a5ba3ca36f..5f3bb6549636a57b237b4382c255924fc478eccf 100755 (executable)
@@ -30,7 +30,7 @@ function run() {
     export CEPH_MON="127.0.0.1:7121" # git grep '\<7121\>' : there must be only one
     export CEPH_ARGS
     CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
-    CEPH_ARGS+="--mon-host=$CEPH_MON --osd-objectstore=filestore"
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
 
     export -n CEPH_CLI_TEST_DUP_COMMAND
     local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
@@ -100,12 +100,12 @@ function create_scenario() {
     JSON="$(ceph-objectstore-tool --data-path $dir/${osd} --op list obj5 | grep \"snapid\":1)"
     OBJ5SAVE="$JSON"
     # Starts with a snapmap
-    ceph-osdomap-tool --no-mon-config --omap-path $dir/${osd}/current/omap --command dump-raw-keys > $dir/drk.log
-    grep "_USER_[0-9]*_USER_,MAP_.*[.]1[.]obj5[.][.]" $dir/drk.log || return 1
+    ceph-kvstore-tool bluestore-kv $dir/${osd} list 2> /dev/null > $dir/drk.log
+    grep "^M.*MAP_.*[.]1[.]obj5[.][.]$" $dir/drk.log || return 1
     ceph-objectstore-tool --data-path $dir/${osd} --rmtype nosnapmap "$JSON" remove || return 1
     # Check that snapmap is stil there
-    ceph-osdomap-tool --no-mon-config --omap-path $dir/${osd}/current/omap --command dump-raw-keys > $dir/drk.log
-    grep "_USER_[0-9]*_USER_,MAP_.*[.]1[.]obj5[.][.]" $dir/drk.log || return 1
+    ceph-kvstore-tool bluestore-kv $dir/${osd} list 2> /dev/null > $dir/drk.log
+    grep "^M.*MAP_.*[.]1[.]obj5[.][.]$" $dir/drk.log || return 1
     rm -f $dir/drk.log
 
     JSON="$(ceph-objectstore-tool --data-path $dir/${osd} --op list obj5 | grep \"snapid\":4)"
@@ -120,13 +120,13 @@ function create_scenario() {
     ceph-objectstore-tool --data-path $dir/${osd} "$JSON" remove || return 1
 
     # Starts with a snapmap
-    ceph-osdomap-tool --no-mon-config --omap-path $dir/${osd}/current/omap --command dump-raw-keys > $dir/drk.log
-    grep "_USER_[0-9]*_USER_,MAP_.*[.]7[.]obj16[.][.]" $dir/drk.log || return 1
+    ceph-kvstore-tool bluestore-kv $dir/${osd} list 2> /dev/null > $dir/drk.log
+    grep "^M.*MAP_.*[.]7[.]obj16[.][.]$" $dir/drk.log || return 1
     JSON="$(ceph-objectstore-tool --data-path $dir/${osd} --op list obj16 | grep \"snapid\":7)"
     ceph-objectstore-tool --data-path $dir/${osd} --rmtype snapmap "$JSON" remove || return 1
     # Check that snapmap is now removed
-    ceph-osdomap-tool --no-mon-config --omap-path $dir/${osd}/current/omap --command dump-raw-keys > $dir/drk.log
-    ! grep "_USER_[0-9]*_USER_,MAP_.*[.]7[.]obj16[.][.]" $dir/drk.log || return 1
+    ceph-kvstore-tool bluestore-kv $dir/${osd} list 2> /dev/null > $dir/drk.log
+    ! grep "^M.*MAP_.*[.]7[.]obj16[.][.]$" $dir/drk.log || return 1
     rm -f $dir/drk.log
 
     JSON="$(ceph-objectstore-tool --data-path $dir/${osd} --head --op list obj2)"
index 15ad54e61ecf92a89de1cc580a72e4f808fba96b..b058c247c6104f08818a5cf81870cb0b8c9b12fa 100755 (executable)
@@ -604,6 +604,7 @@ def test_removeall(CFSD_PREFIX, db, OBJREPPGS, REP_POOL, CEPH_BIN, OSDDIR, REP_N
     errors=0
     print("Test removeall")
     kill_daemons()
+    test_force_remove = 0
     for nspace in db.keys():
         for basename in db[nspace].keys():
             JSON = db[nspace][basename]['json']
@@ -619,6 +620,25 @@ def test_removeall(CFSD_PREFIX, db, OBJREPPGS, REP_POOL, CEPH_BIN, OSDDIR, REP_N
                     if int(basename.split(REP_NAME)[1]) <= int(NUM_CLONED_REP_OBJECTS):
                         cmd = (CFSD_PREFIX + "'{json}' remove").format(osd=osd, json=JSON)
                         errors += test_failure(cmd, "Snapshots are present, use removeall to delete everything")
+                        if not test_force_remove:
+
+                            cmd = (CFSD_PREFIX + " '{json}' set-attr snapset /dev/null").format(osd=osd, json=JSON)
+                            logging.debug(cmd)
+                            ret = call(cmd, shell=True, stdout=nullfd, stderr=nullfd)
+                            if ret != 0:
+                                logging.error("Test set-up to corrupt snapset failed for {json}".format(json=JSON))
+                                errors += 1
+                                # Do the removeall since this test failed to set-up
+                            else:
+                                test_force_remove = 1
+
+                                cmd = (CFSD_PREFIX + " '{json}' --force remove").format(osd=osd, json=JSON)
+                                logging.debug(cmd)
+                                ret = call(cmd, shell=True, stdout=nullfd, stderr=nullfd)
+                                if ret != 0:
+                                    logging.error("forced remove with corrupt snapset failed for {json}".format(json=JSON))
+                                    errors += 1
+                                continue
 
                     cmd = (CFSD_PREFIX + " --force --dry-run '{json}' remove").format(osd=osd, json=JSON)
                     logging.debug(cmd)
index a2f56299b221ab995bb74cce0c3d672e0dcee200..d1cef80251eee9980d21e55b496f55649ae343e3 100644 (file)
@@ -7,6 +7,8 @@ overrides:
       - evicting unresponsive client
       - but it is still running
       - slow request
+      - MDS_CLIENT_LATE_RELEASE
+      - t responding to mclientcaps
 
 tasks:
   - cephfs_test_runner:
diff --git a/ceph/qa/suites/fs/bugs/client_trim_caps/conf b/ceph/qa/suites/fs/bugs/client_trim_caps/conf
new file mode 120000 (symlink)
index 0000000..16e8cc4
--- /dev/null
@@ -0,0 +1 @@
+.qa/cephfs/conf
\ No newline at end of file
diff --git a/ceph/qa/suites/fs/bugs/conf b/ceph/qa/suites/fs/bugs/conf
deleted file mode 120000 (symlink)
index 16e8cc4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.qa/cephfs/conf
\ No newline at end of file
index 4dc0086e6748c8aeb94957222d49db67fc56e2c3..68802961957f81f34e911ceb62fcdcd16f641af9 100644 (file)
@@ -6,3 +6,5 @@ overrides:
         ms inject delay type: osd mds
         ms inject delay probability: .005
         ms inject delay max: 1
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index a02c48ecd55470512acca7c43baaeff6ef56d2f0..77836536e6145285d48a1062b474c6b32c94f6fb 100644 (file)
@@ -1,8 +1,20 @@
 overrides:
   ceph:
+    mon_bind_msgr2: false
+    mon_bind_addrvec: false
+    log-whitelist:
+    - scrub mismatch
+    - ScrubResult
+    - wrongly marked
+    - \(POOL_APP_NOT_ENABLED\)
+    - \(SLOW_OPS\)
+    - overall HEALTH_
+    - \(MON_MSGR2_NOT_ENABLED\)
     conf:
       global:
         bluestore warn on legacy statfs: false
+      mon:
+        mon warn on osd down out interval zero: false
 
 tasks:
 - mds_pre_upgrade:
@@ -11,8 +23,32 @@ tasks:
     mon.a:
     mon.b:
 - print: "**** done install.upgrade both hosts"
-- ceph.stop: [mds.*]
 - ceph.restart:
-    daemons: [mon.*, mgr.*, osd.*, mds.*]
+    daemons: [mon.*, mgr.*]
     mon-health-to-clog: false
+    wait-for-healthy: false
+- exec:
+    mon.a:
+      - ceph config set global mon_warn_on_msgr2_not_enabled false
+- ceph.healthy:
+- ceph.restart:
+    daemons: [osd.*]
+    wait-for-healthy: false
+    wait-for-osds-up: true
+- ceph.stop: [mds.*]
+- ceph.restart:
+    daemons: [mds.*]
+    wait-for-healthy: false
+    wait-for-osds-up: true
+- exec:
+    mon.a:
+    - ceph mon enable-msgr2
+    - ceph config rm global mon_warn_on_msgr2_not_enabled
+- exec:
+    mon.a:
+    - ceph osd dump -f json-pretty
+    - ceph versions
+    - ceph osd require-osd-release nautilus
+    #- ceph osd set-require-min-compat-client nautilus
+- ceph.healthy:
 - print: "**** done ceph.restart"
index a02c48ecd55470512acca7c43baaeff6ef56d2f0..77836536e6145285d48a1062b474c6b32c94f6fb 100644 (file)
@@ -1,8 +1,20 @@
 overrides:
   ceph:
+    mon_bind_msgr2: false
+    mon_bind_addrvec: false
+    log-whitelist:
+    - scrub mismatch
+    - ScrubResult
+    - wrongly marked
+    - \(POOL_APP_NOT_ENABLED\)
+    - \(SLOW_OPS\)
+    - overall HEALTH_
+    - \(MON_MSGR2_NOT_ENABLED\)
     conf:
       global:
         bluestore warn on legacy statfs: false
+      mon:
+        mon warn on osd down out interval zero: false
 
 tasks:
 - mds_pre_upgrade:
@@ -11,8 +23,32 @@ tasks:
     mon.a:
     mon.b:
 - print: "**** done install.upgrade both hosts"
-- ceph.stop: [mds.*]
 - ceph.restart:
-    daemons: [mon.*, mgr.*, osd.*, mds.*]
+    daemons: [mon.*, mgr.*]
     mon-health-to-clog: false
+    wait-for-healthy: false
+- exec:
+    mon.a:
+      - ceph config set global mon_warn_on_msgr2_not_enabled false
+- ceph.healthy:
+- ceph.restart:
+    daemons: [osd.*]
+    wait-for-healthy: false
+    wait-for-osds-up: true
+- ceph.stop: [mds.*]
+- ceph.restart:
+    daemons: [mds.*]
+    wait-for-healthy: false
+    wait-for-osds-up: true
+- exec:
+    mon.a:
+    - ceph mon enable-msgr2
+    - ceph config rm global mon_warn_on_msgr2_not_enabled
+- exec:
+    mon.a:
+    - ceph osd dump -f json-pretty
+    - ceph versions
+    - ceph osd require-osd-release nautilus
+    #- ceph osd set-require-min-compat-client nautilus
+- ceph.healthy:
 - print: "**** done ceph.restart"
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 86f8dde8a0e35f5d070c9ce894256fe2fad4edea..4caedaebdcaf1f1d8b5bf7001412d0568c9436a7 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 86f8dde8a0e35f5d070c9ce894256fe2fad4edea..4caedaebdcaf1f1d8b5bf7001412d0568c9436a7 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_enumerate.yaml b/ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_enumerate.yaml
new file mode 100644 (file)
index 0000000..c326507
--- /dev/null
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+    clients:
+      all:
+        - rbd/krbd_udev_enumerate.sh
diff --git a/ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_netlink_enobufs.yaml b/ceph/qa/suites/krbd/rbd-nomount/tasks/krbd_udev_netlink_enobufs.yaml
new file mode 100644 (file)
index 0000000..b0530d5
--- /dev/null
@@ -0,0 +1,10 @@
+overrides:
+  ceph:
+    log-whitelist:
+      - pauserd,pausewr flag\(s\) set
+
+tasks:
+- workunit:
+    clients:
+      all:
+        - rbd/krbd_udev_netlink_enobufs.sh
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 86f8dde8a0e35f5d070c9ce894256fe2fad4edea..4caedaebdcaf1f1d8b5bf7001412d0568c9436a7 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 86f8dde8a0e35f5d070c9ce894256fe2fad4edea..4caedaebdcaf1f1d8b5bf7001412d0568c9436a7 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index c58aaca48f01e8e98efb91db64124d209160dcee..aee5779fa7373731a33e2f82e3e169c68918e9d2 100644 (file)
@@ -1,6 +1,11 @@
 overrides:
   ceph:
     crush_tunables: bobtail
+    mon_bind_addrvec: false
+    mon_bind_msgr2: false
+    conf:
+      global:
+        ms bind msgr2: false
 tasks:
 - install:
 - ceph:
index 526897e9cda8cce3e74eb9b42f3ae77819037e52..d69f65031decb2b7e0fd90805d81dc01311671d6 100644 (file)
@@ -3,6 +3,8 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
 tasks:
 - exec:
     client.0:
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 038c3a799086a07c5a64882c30f1e8896f0056d1..f4bb065b5f3af0c4670f4ebb86af4992bf16c9e4 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 1500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/rados/dashboard/% b/ceph/qa/suites/rados/dashboard/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rados/dashboard/.qa b/ceph/qa/suites/rados/dashboard/.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/rados/dashboard/clusters/+ b/ceph/qa/suites/rados/dashboard/clusters/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/qa/suites/rados/dashboard/clusters/.qa b/ceph/qa/suites/rados/dashboard/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/rados/dashboard/clusters/2-node-mgr.yaml b/ceph/qa/suites/rados/dashboard/clusters/2-node-mgr.yaml
new file mode 120000 (symlink)
index 0000000..8a0b912
--- /dev/null
@@ -0,0 +1 @@
+.qa/clusters/2-node-mgr.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/rados/dashboard/debug/.qa b/ceph/qa/suites/rados/dashboard/debug/.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/rados/dashboard/debug/mgr.yaml b/ceph/qa/suites/rados/dashboard/debug/mgr.yaml
new file mode 120000 (symlink)
index 0000000..651e5f8
--- /dev/null
@@ -0,0 +1 @@
+.qa/debug/mgr.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/rados/dashboard/objectstore b/ceph/qa/suites/rados/dashboard/objectstore
new file mode 120000 (symlink)
index 0000000..c40bd32
--- /dev/null
@@ -0,0 +1 @@
+.qa/objectstore
\ No newline at end of file
diff --git a/ceph/qa/suites/rados/dashboard/supported-random-distro$ b/ceph/qa/suites/rados/dashboard/supported-random-distro$
new file mode 120000 (symlink)
index 0000000..7cef21e
--- /dev/null
@@ -0,0 +1 @@
+../basic/supported-random-distro$
\ No newline at end of file
diff --git a/ceph/qa/suites/rados/dashboard/tasks/.qa b/ceph/qa/suites/rados/dashboard/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/rados/dashboard/tasks/dashboard.yaml b/ceph/qa/suites/rados/dashboard/tasks/dashboard.yaml
new file mode 100644 (file)
index 0000000..ad6adc7
--- /dev/null
@@ -0,0 +1,51 @@
+
+tasks:
+  - install:
+  - ceph:
+      # tests may leave mgrs broken, so don't try and call into them
+      # to invoke e.g. pg dump during teardown.
+      wait-for-scrub: false
+      log-whitelist:
+        - overall HEALTH_
+        - \(MGR_DOWN\)
+        - \(PG_
+        - replacing it with standby
+        - No standby daemons available
+        - \(FS_DEGRADED\)
+        - \(MDS_FAILED\)
+        - \(MDS_DEGRADED\)
+        - \(FS_WITH_FAILED_MDS\)
+        - \(MDS_DAMAGE\)
+        - \(MDS_ALL_DOWN\)
+        - \(MDS_UP_LESS_THAN_MAX\)
+        - \(OSD_DOWN\)
+        - \(OSD_HOST_DOWN\)
+        - \(POOL_APP_NOT_ENABLED\)
+        - pauserd,pausewr flag\(s\) set
+        - Monitor daemon marked osd\.[[:digit:]]+ down, but it is still running
+        - evicting unresponsive client .+
+  - rgw: [client.0]
+  - cephfs_test_runner:
+      fail_on_skip: false
+      modules:
+        - tasks.mgr.test_dashboard
+        - tasks.mgr.dashboard.test_auth
+        - tasks.mgr.dashboard.test_cephfs
+        - tasks.mgr.dashboard.test_cluster_configuration
+        - tasks.mgr.dashboard.test_health
+        - tasks.mgr.dashboard.test_host
+        - tasks.mgr.dashboard.test_logs
+        - tasks.mgr.dashboard.test_monitor
+        - tasks.mgr.dashboard.test_osd
+        - tasks.mgr.dashboard.test_perf_counters
+        - tasks.mgr.dashboard.test_summary
+        - tasks.mgr.dashboard.test_rgw
+        - tasks.mgr.dashboard.test_rbd
+        - tasks.mgr.dashboard.test_pool
+        - tasks.mgr.dashboard.test_requests
+        - tasks.mgr.dashboard.test_role
+        - tasks.mgr.dashboard.test_settings
+        - tasks.mgr.dashboard.test_user
+        - tasks.mgr.dashboard.test_erasure_code_profile
+        - tasks.mgr.dashboard.test_mgr_module
+        - tasks.mgr.dashboard.test_ganesha
deleted file mode 100644 (file)
index 906c59707ec657329cc81bc2a727d12c212a8c22..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,6 +0,0 @@
-roles:
-- [mgr.x, mon.a, mon.c, mds.a, mds.c, osd.0, client.0]
-- [mgr.y, mgr.z, mon.b, mds.b, osd.1, osd.2, osd.3, client.1]
-log-rotate:
-  ceph-mds: 10G
-  ceph-osd: 10G
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..8a0b9123b38259f2005204afd0c3050f7d4dcb1a
--- /dev/null
@@ -0,0 +1 @@
+.qa/clusters/2-node-mgr.yaml
\ No newline at end of file
diff --git a/ceph/qa/suites/rados/mgr/clusters/openstack.yaml b/ceph/qa/suites/rados/mgr/clusters/openstack.yaml
deleted file mode 100644 (file)
index 21eca2b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-openstack:
-  - volumes: # attached to each instance
-      count: 2
-      size: 30 # GB
deleted file mode 100644 (file)
index 068021eb6c7cb24c3c8c840c66bb2c2a02936147..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,16 +0,0 @@
-overrides:
-  ceph:
-    conf:
-      mon:
-        debug mon: 20
-      mgr:
-        debug mgr: 20
-        debug ms: 1
-      client:
-        debug client: 20
-        debug mgrc: 20
-        debug ms: 1
-      osd:
-        debug mgrc: 20
-      mds:
-        debug mgrc: 20
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..651e5f8a89e68fcf56ab453e40db0f451b30300d
--- /dev/null
@@ -0,0 +1 @@
+.qa/debug/mgr.yaml
\ No newline at end of file
index 77183c74f320e4dfa5052433ee3b49749349682a..7b4c444606e5ee03185c89f023acbf646dd2b51a 100644 (file)
@@ -9,6 +9,7 @@ tasks:
         - overall HEALTH_
         - \(MGR_DOWN\)
         - \(PG_
+        - \(RECENT_CRASH\)
         - replacing it with standby
         - No standby daemons available
   - cephfs_test_runner:
diff --git a/ceph/qa/suites/rados/mgr/tasks/dashboard.yaml b/ceph/qa/suites/rados/mgr/tasks/dashboard.yaml
deleted file mode 100644 (file)
index 76ce83d..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-tasks:
-  - install:
-  - ceph:
-      # tests may leave mgrs broken, so don't try and call into them
-      # to invoke e.g. pg dump during teardown.
-      wait-for-scrub: false
-      log-whitelist:
-        - overall HEALTH_
-        - \(MGR_DOWN\)
-        - \(PG_
-        - replacing it with standby
-        - No standby daemons available
-        - \(FS_DEGRADED\)
-        - \(MDS_FAILED\)
-        - \(MDS_DEGRADED\)
-        - \(FS_WITH_FAILED_MDS\)
-        - \(MDS_DAMAGE\)
-        - \(MDS_ALL_DOWN\)
-        - \(MDS_UP_LESS_THAN_MAX\)
-        - \(OSD_DOWN\)
-        - \(OSD_HOST_DOWN\)
-        - \(POOL_APP_NOT_ENABLED\)
-        - pauserd,pausewr flag\(s\) set
-        - Monitor daemon marked osd\.[[:digit:]]+ down, but it is still running
-  - rgw: [client.0]
-  - cephfs_test_runner:
-      fail_on_skip: false
-      modules:
-        - tasks.mgr.test_dashboard
-        - tasks.mgr.dashboard.test_auth
-        - tasks.mgr.dashboard.test_cephfs
-        - tasks.mgr.dashboard.test_cluster_configuration
-        - tasks.mgr.dashboard.test_health
-        - tasks.mgr.dashboard.test_host
-        - tasks.mgr.dashboard.test_logs
-        - tasks.mgr.dashboard.test_monitor
-        - tasks.mgr.dashboard.test_osd
-        - tasks.mgr.dashboard.test_perf_counters
-        - tasks.mgr.dashboard.test_summary
-        - tasks.mgr.dashboard.test_rgw
-        - tasks.mgr.dashboard.test_rbd
-        - tasks.mgr.dashboard.test_pool
-        - tasks.mgr.dashboard.test_requests
-        - tasks.mgr.dashboard.test_role
-        - tasks.mgr.dashboard.test_settings
-        - tasks.mgr.dashboard.test_user
-        - tasks.mgr.dashboard.test_erasure_code_profile
-        - tasks.mgr.dashboard.test_mgr_module
-        - tasks.mgr.dashboard.test_ganesha
index 2d5ccb54b27203860707818267df5520a5981334..521606656dc39133925e08776c1316c4a0d7025e 100644 (file)
@@ -11,6 +11,7 @@ tasks:
         - \(MGR_INSIGHTS_WARNING\)
         - \(insights_health_check
         - \(PG_
+        - \(RECENT_CRASH\)
         - replacing it with standby
         - No standby daemons available
   - cephfs_test_runner:
index 17fa6b395c69fd08b21b089a8bc213a2c760a716..bdfb6abf6044d2bdfb2a99d4ed033ce619562bfe 100644 (file)
@@ -18,6 +18,7 @@ tasks:
         - influxdb python module not found
         - \(MGR_ZABBIX_
         - foo bar
+        - evicting unresponsive client
   - cephfs_test_runner:
       modules:
         - tasks.mgr.test_module_selftest
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index da25b7a09eb910b2af0d09247a56501f8c33ad1e..fcd8ca7c293110abc6a7e14afbee5fb792c64e9f 100644 (file)
@@ -9,3 +9,5 @@ overrides:
         ms inject internal delays: .002
       mgr:
         debug monc: 10
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 54e6d7f2bfd04e2d6ee9766786fef57f0c320bc3..ffeb5f6857c82050ca777d705bfae0a5d7b299c3 100644 (file)
@@ -4,3 +4,5 @@ overrides:
       global:
         ms inject socket failures: 1000
         mon mgr beacon grace: 90
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 5f67fcea9a1cbc2475d9229677c73689a4920615..59ca5c0f0fa8120513d9e760f7dc86f243a7df09 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 1000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/rados/singleton-nomsgr/all/balancer.yaml b/ceph/qa/suites/rados/singleton-nomsgr/all/balancer.yaml
new file mode 100644 (file)
index 0000000..7541050
--- /dev/null
@@ -0,0 +1,10 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, osd.2, client.0]
+tasks:
+- install:
+- ceph:
+    fs: xfs
+- cram:
+    clients:
+      client.0:
+      - src/test/cli-integration/balancer/misplaced.t
diff --git a/ceph/qa/suites/rados/singleton/all/mon-memory-target-compliance.yaml.disabled b/ceph/qa/suites/rados/singleton/all/mon-memory-target-compliance.yaml.disabled
new file mode 100644 (file)
index 0000000..56de322
--- /dev/null
@@ -0,0 +1,152 @@
+roles:
+- - mon.a
+  - mgr.x
+  - osd.0
+  - osd.1
+  - osd.2
+  - osd.3
+  - osd.4
+  - osd.5
+  - osd.6
+  - osd.7
+  - osd.8
+  - osd.9
+  - osd.10
+  - osd.11
+  - osd.12
+  - osd.13
+  - osd.14
+  - client.0
+openstack:
+  - volumes: # attached to each instance
+      count: 4
+      size: 1 # GB
+overrides:
+  ceph:
+    conf:
+      mon:
+        mon memory target: 134217728 # reduced to 128_M
+        rocksdb cache size: 67108864 # reduced to 64_M
+        mon osd cache size: 100000
+        mon osd cache size min: 134217728
+      osd:
+        osd memory target: 1610612736 # reduced to 1.5_G
+        osd objectstore: bluestore
+        debug bluestore: 20
+        osd scrub min interval: 60
+        osd scrub max interval: 120
+        osd max backfills: 9
+
+tasks:
+- install:
+    branch: wip-sseshasa2-testing-2019-07-30-1825 # change as appropriate
+- ceph:
+    create_rbd_pool: false
+    log-whitelist:
+      - overall HEALTH_
+      - \(OSDMAP_FLAGS\)
+      - \(OSD_
+      - \(PG_
+      - \(POOL_
+      - \(CACHE_POOL_
+      - \(OBJECT_
+      - \(SLOW_OPS\)
+      - \(REQUEST_SLOW\)
+      - \(TOO_FEW_PGS\)
+      - slow requests
+- interactive:
+- parallel:
+    - log-mon-rss
+    - stress-tasks
+    - benchload
+- exec:
+    client.0:
+      - "ceph_test_mon_memory_target 134217728" # mon memory target
+      - "ceph_test_mon_rss_usage 134217728"
+log-mon-rss:
+- background_exec:
+    client.0:
+      - while true
+      - do /usr/bin/ceph_test_log_rss_usage ceph-mon >> /var/log/ceph/ceph-mon-rss-usage.log
+      - sleep 300 # log rss usage every 5 mins. May be modified accordingly
+      - done
+- exec:
+    client.0:
+      - sleep 37860 # sum total of the radosbench test times below plus 60 secs
+benchload: # The total radosbench test below translates to 10.5 hrs
+- full_sequential:
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+  - radosbench:
+      clients: [client.0]
+      time: 1800
+stress-tasks:
+- thrashosds:
+    op_delay: 1
+    bdev_inject_crash: 1
+    bdev_inject_crash_probability: .8
+    chance_down: 80
+    chance_pgnum_grow: 3
+    chance_pgpnum_fix: 1
+    chance_thrash_cluster_full: 0
+    chance_thrash_pg_upmap: 3
+    chance_thrash_pg_upmap_items: 3
+    min_in: 2
index 6dbffb48c31b31c6cfb554c2ffe028ac2b2ac40c..8002deaa5db97561e1bc1bfbc89f50be8a54533d 100644 (file)
@@ -7,6 +7,7 @@ tasks:
       log-whitelist:
         - Reduced data availability
         - OSD_.*DOWN
+        - \(RECENT_CRASH\)
   - workunit:
       clients:
          client.0:
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index cd193532d906de61d29d186b9cc1d364d10c6dd3..20aeb4df28b35a4174491249ae8ca878ab13c97d 100644 (file)
@@ -7,3 +7,5 @@ overrides:
         mon client hunt interval max multiple: 2
       mgr:
         debug monc: 10
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/rados/standalone/workloads/mgr.yaml b/ceph/qa/suites/rados/standalone/workloads/mgr.yaml
new file mode 100644 (file)
index 0000000..997fae8
--- /dev/null
@@ -0,0 +1,18 @@
+roles:
+- - mon.a
+  - mgr.x
+  - osd.0
+  - osd.1
+  - osd.2
+  - client.0
+openstack:
+  - volumes: # attached to each instance
+      count: 3
+      size: 10 # GB
+tasks:
+- install:
+- workunit:
+    basedir: qa/standalone
+    clients:
+      all:
+        - mgr
index 77fd730aff70f61c2226702b9ddfe54c99bae8e6..02121726ef4d58d4ad7cab00e27422bdcb54e99f 100644 (file)
@@ -4,3 +4,5 @@ overrides:
       global:
         ms inject socket failures: 2500
         ms tcp read timeout: 5
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 477bffe619bcf3388288b82308f2b67466506e80..527eadb450b68e834922129aea367a9e20417706 100644 (file)
@@ -5,3 +5,5 @@ overrides:
         ms inject socket failures: 5000
       osd:
         osd heartbeat use min delay socket: true
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index a33ba89e14fb82bfc5624df2b9b855828b92ece3..91c147256356d8dddd7d544065fcbcc39d661b81 100644 (file)
@@ -7,3 +7,5 @@ overrides:
         ms inject delay probability: .005
         ms inject delay max: 1
         ms inject internal delays: .002
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 77fd730aff70f61c2226702b9ddfe54c99bae8e6..02121726ef4d58d4ad7cab00e27422bdcb54e99f 100644 (file)
@@ -4,3 +4,5 @@ overrides:
       global:
         ms inject socket failures: 2500
         ms tcp read timeout: 5
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 477bffe619bcf3388288b82308f2b67466506e80..527eadb450b68e834922129aea367a9e20417706 100644 (file)
@@ -5,3 +5,5 @@ overrides:
         ms inject socket failures: 5000
       osd:
         osd heartbeat use min delay socket: true
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index a33ba89e14fb82bfc5624df2b9b855828b92ece3..91c147256356d8dddd7d544065fcbcc39d661b81 100644 (file)
@@ -7,3 +7,5 @@ overrides:
         ms inject delay probability: .005
         ms inject delay max: 1
         ms inject internal delays: .002
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/rbd/mirror/workloads/rbd-mirror-bootstrap-workunit.yaml b/ceph/qa/suites/rbd/mirror/workloads/rbd-mirror-bootstrap-workunit.yaml
new file mode 100644 (file)
index 0000000..585f582
--- /dev/null
@@ -0,0 +1,11 @@
+meta:
+- desc: run the rbd_mirror_bootstrap.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+    clients:
+      cluster1.client.mirror: [rbd/rbd_mirror_bootstrap.sh]
+    env:
+      # override workunit setting of CEPH_ARGS='--cluster'
+      CEPH_ARGS: ''
+      RBD_MIRROR_INSTANCES: '1'
+      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
index 55b6df536ec797008abf3a20d37197d2c9423ee5..9349b4f9a30cb47298c54203a65bd45be6430ba0 100644 (file)
@@ -5,3 +5,4 @@ overrides:
         ms inject socket failures: 5000
     log-whitelist:
     - but it is still running
+    - \(OSD_SLOW_PING_TIME
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
diff --git a/ceph/qa/suites/rgw/multisite/realms/three-zone-plus-pubsub.yaml b/ceph/qa/suites/rgw/multisite/realms/three-zone-plus-pubsub.yaml
new file mode 100644 (file)
index 0000000..e77e5ad
--- /dev/null
@@ -0,0 +1,23 @@
+overrides:
+  rgw-multisite:
+    realm:
+      name: test-realm
+      is default: true
+    zonegroups:
+      - name: test-zonegroup
+        is_master: true
+        is_default: true
+        endpoints: [c1.client.0]
+        zones:
+          - name: test-zone1
+            is_master: true
+            is_default: true
+            endpoints: [c1.client.0]
+          - name: test-zone2
+            is_default: true
+            endpoints: [c2.client.0]
+          - name: test-zone3
+            endpoints: [c1.client.1]
+          - name: test-zone4
+            endpoints: [c2.client.1]
+            is_pubsub: true
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 595ef667d645d63d6a094fb34238eb6e55a1fc2d..2144afd2fe49983797a4247fa2b7e3a5c5f157c3 100644 (file)
@@ -13,6 +13,7 @@ overrides:
       - \(OBJECT_
       - \(SLOW_OPS\)
       - \(TOO_FEW_PGS\)
+      - \(OSD_SLOW_PING_TIME
     conf:
       global:
         ms inject delay max: 1
index 84331efa2e6e6ab951c18ec4db412d2213ffca67..493858d37d5afeb6ab66683beec8f2746bcb6cf0 100644 (file)
@@ -22,6 +22,7 @@ tasks:
       - \(OBJECT_
       - \(SLOW_OPS\)
       - \(TOO_FEW_PGS\)
+      - \(OSD_SLOW_PING_TIME
 - thrashosds:
     chance_pgnum_grow: 2
     chance_pgnum_shrink: 2
index 8440c80c0a698c3684df6686ccfd1e90968058f2..3297ef5b8aafdf049d4cb9af9e9610ff5322ebc8 100644 (file)
@@ -11,6 +11,7 @@ overrides:
       - \(OBJECT_
       - \(SLOW_OPS\)
       - \(TOO_FEW_PGS\)
+      - \(OSD_SLOW_PING_TIME
     conf:
       client:
         rbd cache: true
index 0de320d46b8e20335a9e59a4bc115d4e82116ffb..4326fe23eb9ab25f76fecd92531e8161452feedd 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 5000
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 86f8dde8a0e35f5d070c9ce894256fe2fad4edea..4caedaebdcaf1f1d8b5bf7001412d0568c9436a7 100644 (file)
@@ -3,3 +3,5 @@ overrides:
     conf:
       global:
         ms inject socket failures: 500
+    log-whitelist:
+      - \(OSD_SLOW_PING_TIME
index 9f8520f8cc539c17be55e77b3e80ecd671bbfb4c..b774cb56699009c0bfb2bf95e03410a8736ef8c2 100644 (file)
@@ -240,6 +240,21 @@ class CBT(Task):
                 cosbench_version = 'cosbench-0.4.2.c3.1'
             else:
                 cosbench_version = '0.4.2.c3'
+            # note: stop-all requires 'nc'
+            self.first_mon.run(
+                args=[
+                    'cd', testdir, run.Raw('&&'),
+                    'cd', 'cos', run.Raw('&&'),
+                    'sh', 'stop-all.sh',
+                    run.Raw('||'), 'true'
+                ]
+            )
+            self.first_mon.run(
+                args=[
+                    'sudo', 'killall', '-9', 'java',
+                    run.Raw('||'), 'true'
+                ]
+            )
             self.first_mon.run(
                 args=[
                     'rm', '--one-file-system', '-rf', '--',
index 2566000ad17b94e6931243c1998c3aefa1593fc3..b246169e7fb58c2a9108a4a5ec53373636797f61 100644 (file)
@@ -26,6 +26,7 @@
        mon warn on crush straw calc version zero = false
        mon warn on no sortbitwise = false
        mon warn on osd down out interval zero = false
+       mon warn on too few osds = false
 
         osd pool default erasure code profile = "plugin=jerasure technique=reed_sol_van k=2 m=1 ruleset-failure-domain=osd crush-failure-domain=osd"
 
@@ -36,6 +37,9 @@
        mon cluster log file level = debug
        debug asserts on shutdown = true
 
+       # we see this fail in qa on *nautilus*; bump up retries
+       mon_client_directed_command_retry = 4
+
 [osd]
         osd journal size = 100
 
index 7f0976536959d107a81e5b2f7649e8535b6c169d..e07d331e9a89d5d3bd34e333bff66540e4523434 100644 (file)
@@ -1625,14 +1625,10 @@ def restart(ctx, config):
             ctx.daemons.get_daemon(type_, id_, cluster).restart()
             clusters.add(cluster)
     
-    for cluster in clusters:
-        manager = ctx.managers[cluster]
-        for dmon in daemons:
-            if '.' in dmon:
-                dm_parts = dmon.split('.')
-                if dm_parts[1].isdigit():
-                    if dm_parts[0] == 'osd':
-                        manager.mark_down_osd(int(dm_parts[1]))
+    for role in daemons:
+        cluster, type_, id_ = teuthology.split_role(role)
+        if type_ == 'osd':
+            ctx.managers[cluster].mark_down_osd(id_)
 
     if config.get('wait-for-healthy', True):
         for cluster in clusters:
@@ -1938,11 +1934,13 @@ def task(ctx, config):
             # a bunch of scary messages unrelated to our actual run.
             firstmon = teuthology.get_first_mon(ctx, config, config['cluster'])
             (mon0_remote,) = ctx.cluster.only(firstmon).remotes.keys()
+            # try this several times, since tell to mons is lossy.
             mon0_remote.run(
                 args=[
                     'sudo',
                     'ceph',
                     '--cluster', config['cluster'],
+                    '--mon-client-directed-command-retry', '5',
                     'tell',
                     'mon.*',
                     'injectargs',
index 0c0c84b75377e7c4a4703dae9de1b296f735faa9..bbd56b3c57c0c7446ccfe480ad44cd92f796ee82 100644 (file)
@@ -166,6 +166,7 @@ class FuseMount(CephFSMount):
     def gather_mount_info(self):
         status = self.admin_socket(['status'])
         self.id = status['id']
+        self.client_pid = status['metadata']['pid']
         try:
             self.inst = status['inst_str']
             self.addr = status['addr_str']
index 6b128f57247d0ed6e82cc621f593bae26c93ebce..3c33cc83c1c435f1e02a9838961b48b31e7c0e50 100644 (file)
@@ -1,6 +1,7 @@
 from StringIO import StringIO
 import json
 import logging
+import time
 from textwrap import dedent
 from teuthology.orchestra.run import CommandFailedError
 from teuthology import misc
@@ -17,46 +18,21 @@ UMOUNT_TIMEOUT = 300
 
 
 class KernelMount(CephFSMount):
-    def __init__(self, ctx, mons, test_dir, client_id, client_remote,
+    def __init__(self, ctx, test_dir, client_id, client_remote,
                  ipmi_user, ipmi_password, ipmi_domain):
         super(KernelMount, self).__init__(ctx, test_dir, client_id, client_remote)
-        self.mons = mons
 
         self.mounted = False
         self.ipmi_user = ipmi_user
         self.ipmi_password = ipmi_password
         self.ipmi_domain = ipmi_domain
 
-    def write_secret_file(self, remote, role, keyring, filename):
-        """
-        Stash the keyring in the filename specified.
-        """
-        remote.run(
-            args=[
-                'adjust-ulimits',
-                'ceph-coverage',
-                '{tdir}/archive/coverage'.format(tdir=self.test_dir),
-                'ceph-authtool',
-                '--name={role}'.format(role=role),
-                '--print-key',
-                keyring,
-                run.Raw('>'),
-                filename,
-            ],
-            timeout=(5*60),
-        )
-
     def mount(self, mount_path=None, mount_fs_name=None):
         self.setupfs(name=mount_fs_name)
 
         log.info('Mounting kclient client.{id} at {remote} {mnt}...'.format(
             id=self.client_id, remote=self.client_remote, mnt=self.mountpoint))
 
-        keyring = self.get_keyring_path()
-        secret = '{tdir}/ceph.data/client.{id}.secret'.format(tdir=self.test_dir, id=self.client_id)
-        self.write_secret_file(self.client_remote, 'client.{id}'.format(id=self.client_id),
-                               keyring, secret)
-
         self.client_remote.run(
             args=[
                 'mkdir',
@@ -69,8 +45,8 @@ class KernelMount(CephFSMount):
         if mount_path is None:
             mount_path = "/"
 
-        opts = 'name={id},secretfile={secret},norequire_active_mds'.format(id=self.client_id,
-                                                      secret=secret)
+        opts = 'name={id},norequire_active_mds,conf={conf}'.format(id=self.client_id,
+                                                        conf=self.config_path)
 
         if mount_fs_name is not None:
             opts += ",mds_namespace={0}".format(mount_fs_name)
@@ -81,8 +57,10 @@ class KernelMount(CephFSMount):
                 'adjust-ulimits',
                 'ceph-coverage',
                 '{tdir}/archive/coverage'.format(tdir=self.test_dir),
-                '/sbin/mount.ceph',
-                '{mons}:{mount_path}'.format(mons=','.join(self.mons), mount_path=mount_path),
+                '/bin/mount',
+                '-t',
+                'ceph',
+                ':{mount_path}'.format(mount_path=mount_path),
                 self.mountpoint,
                 '-v',
                 '-o',
@@ -176,21 +154,31 @@ class KernelMount(CephFSMount):
                                                 self.ipmi_user,
                                                 self.ipmi_password,
                                                 self.ipmi_domain)
-        con.power_off()
+        con.hard_reset(wait_for_login=False)
 
         self.mounted = False
 
     def kill_cleanup(self):
         assert not self.mounted
 
-        con = orchestra_remote.getRemoteConsole(self.client_remote.hostname,
-                                                self.ipmi_user,
-                                                self.ipmi_password,
-                                                self.ipmi_domain)
-        con.power_on()
+        # We need to do a sleep here because we don't know how long it will
+        # take for a hard_reset to be effected.
+        time.sleep(30)
 
-        # Wait for node to come back up after reboot
-        misc.reconnect(None, 300, [self.client_remote])
+        try:
+            # Wait for node to come back up after reboot
+            misc.reconnect(None, 300, [self.client_remote])
+        except:
+            # attempt to get some useful debug output:
+            con = orchestra_remote.getRemoteConsole(self.client_remote.hostname,
+                                                    self.ipmi_user,
+                                                    self.ipmi_password,
+                                                    self.ipmi_domain)
+            con.check_status(timeout=60)
+            raise
+
+        # Remove mount directory
+        self.client_remote.run(args=['uptime'], timeout=10)
 
         # Remove mount directory
         self.client_remote.run(
index 4bbad25426f71840232ca1e39b5d9d955296a3c9..8d07323d859efc7cff55fa805df171799105941e 100644 (file)
@@ -502,6 +502,14 @@ class CephFSMount(object):
         self._kill_background(p)
         self.background_procs.remove(p)
 
+    def send_signal(self, signal):
+        signal = signal.lower()
+        if signal.lower() not in ['sigstop', 'sigcont', 'sigterm', 'sigkill']:
+            raise NotImplementedError
+
+        self.client_remote.run(args=['sudo', 'kill', '-{0}'.format(signal),
+                                self.client_pid], omit_sudo=False)
+
     def get_global_id(self):
         raise NotImplementedError()
 
index 496b2faa1ec241386cd31b454ff92784b1426950..24a3b4a69dd112c69d28f84036bf3db0172bb718 100644 (file)
@@ -238,6 +238,9 @@ class TestClientRecovery(CephFSTestCase):
         # Simulate client death
         self.mount_a.kill()
 
+        # wait for it to die so it doesn't voluntarily release buffer cap
+        time.sleep(5)
+
         try:
             # Now, after session_timeout seconds, the waiter should
             # complete their operation when the MDS marks the holder's
@@ -299,6 +302,9 @@ class TestClientRecovery(CephFSTestCase):
         # Simulate client death
         self.mount_a.kill()
 
+        # wait for it to die so it doesn't voluntarily release buffer cap
+        time.sleep(5)
+
         try:
             # The waiter should get stuck waiting for the capability
             # held on the MDS by the now-dead client A
@@ -569,3 +575,37 @@ class TestClientRecovery(CephFSTestCase):
         self.assert_session_state(gid, "open")
         time.sleep(session_timeout * 1.5)  # Long enough for MDS to consider session stale
         self.assert_session_state(gid, "stale")
+
+    def test_dont_mark_unresponsive_client_stale(self):
+        """
+        Test that an unresponsive client holding caps is not marked stale or
+        evicted unless another clients wants its caps.
+        """
+        if not isinstance(self.mount_a, FuseMount):
+            self.skipTest("Require FUSE client to handle signal STOP/CONT")
+
+        # XXX: To conduct this test we need at least two clients since a
+        # single client is never evcited by MDS.
+        SESSION_TIMEOUT = 30
+        SESSION_AUTOCLOSE = 50
+        time_at_beg = time.time()
+        mount_a_gid = self.mount_a.get_global_id()
+        mount_a_pid = self.mount_a.client_pid
+        self.fs.set_var('session_timeout', SESSION_TIMEOUT)
+        self.fs.set_var('session_autoclose', SESSION_AUTOCLOSE)
+        self.assert_session_count(2, self.fs.mds_asok(['session', 'ls']))
+
+        # test that client holding cap not required by any other client is not
+        # marked stale when it becomes unresponsive.
+        self.mount_a.run_shell(['mkdir', 'dir'])
+        self.mount_a.send_signal('sigstop')
+        time.sleep(SESSION_TIMEOUT + 2)
+        self.assert_session_state(mount_a_gid, "open")
+
+        # test that other clients have to wait to get the caps from
+        # unresponsive client until session_autoclose.
+        self.mount_b.run_shell(['stat', 'dir'])
+        self.assert_session_count(1, self.fs.mds_asok(['session', 'ls']))
+        self.assertLess(time.time(), time_at_beg + SESSION_AUTOCLOSE)
+
+        self.mount_a.send_signal('sigcont')
index f1bb0f22a5b3782025b728a26a8d191d02e6d0ed..07702435afd2c1e6ecb7d2bf5bb0a86c81572568 100644 (file)
@@ -365,7 +365,7 @@ class TestStandbyReplay(CephFSTestCase):
         self.assertEqual(0, len(list(self.fs.get_replays(status=status))))
         return status
 
-    def _confirm_single_replay(self, full=True, status=None):
+    def _confirm_single_replay(self, full=True, status=None, retries=3):
         status = self.fs.wait_for_daemons(status=status)
         ranks = sorted(self.fs.get_mds_map(status=status)['in'])
         replays = list(self.fs.get_replays(status=status))
@@ -378,7 +378,11 @@ class TestStandbyReplay(CephFSTestCase):
                     has_replay = True
                     checked_replays.add(replay['gid'])
             if full and not has_replay:
-                raise RuntimeError("rank "+str(rank)+" has no standby-replay follower")
+                if retries <= 0:
+                    raise RuntimeError("rank "+str(rank)+" has no standby-replay follower")
+                else:
+                    retries = retries-1
+                    time.sleep(2)
         self.assertEqual(checked_replays, set(info['gid'] for info in replays))
         return status
 
index 8ab632b92a62664f4c5ce6d858da2d9cb886cfdd..fcf30854442482b17a0e77f069eb7d52d5de5298 100644 (file)
@@ -6,6 +6,7 @@ from textwrap import dedent
 from tasks.cephfs.cephfs_test_case import CephFSTestCase
 from tasks.cephfs.fuse_mount import FuseMount
 from teuthology.exceptions import CommandFailedError
+from teuthology.misc import sudo_write_file
 
 log = logging.getLogger(__name__)
 
@@ -14,11 +15,12 @@ class TestVolumeClient(CephFSTestCase):
     # One for looking at the global filesystem, one for being
     # the VolumeClient, two for mounting the created shares
     CLIENTS_REQUIRED = 4
-    py_version = 'python'
+    default_py_version = 'python3'
 
     def setUp(self):
         CephFSTestCase.setUp(self)
-        self.py_version = self.ctx.config.get('overrides', {}).get('python', 'python')
+        self.py_version = self.ctx.config.get('overrides', {}).\
+                          get('python', TestVolumeClient.default_py_version)
         log.info("using python version: {python_version}".format(
             python_version=self.py_version
         ))
@@ -33,6 +35,8 @@ class TestVolumeClient(CephFSTestCase):
         return client.run_python("""
 from __future__ import print_function
 from ceph_volume_client import CephFSVolumeClient, VolumePath
+from sys import version_info as sys_version_info
+from rados import OSError as rados_OSError
 import logging
 log = logging.getLogger("ceph_volume_client")
 log.addHandler(logging.StreamHandler())
@@ -45,27 +49,6 @@ vc.disconnect()
                    vol_prefix=vol_prefix, ns_prefix=ns_prefix),
         self.py_version)
 
-    def _sudo_write_file(self, remote, path, data):
-        """
-        Write data to a remote file as super user
-
-        :param remote: Remote site.
-        :param path: Path on the remote being written to.
-        :param data: Data to be written.
-
-        Both perms and owner are passed directly to chmod.
-        """
-        remote.run(
-            args=[
-                'sudo',
-                'python',
-                '-c',
-                'import shutil, sys; shutil.copyfileobj(sys.stdin, file(sys.argv[1], "wb"))',
-                path,
-            ],
-            stdin=data,
-        )
-
     def _configure_vc_auth(self, mount, id_name):
         """
         Set up auth credentials for the VolumeClient user
@@ -77,7 +60,7 @@ vc.disconnect()
             "mon", "allow *"
         )
         mount.client_id = id_name
-        self._sudo_write_file(mount.client_remote, mount.get_keyring_path(), out)
+        sudo_write_file(mount.client_remote, mount.get_keyring_path(), out)
         self.set_conf("client.{name}".format(name=id_name), "keyring", mount.get_keyring_path())
 
     def _configure_guest_auth(self, volumeclient_mount, guest_mount,
@@ -140,9 +123,8 @@ vc.disconnect()
             key=key
         ))
         guest_mount.client_id = guest_entity
-        self._sudo_write_file(guest_mount.client_remote,
-                              guest_mount.get_keyring_path(),
-                              keyring_txt)
+        sudo_write_file(guest_mount.client_remote,
+                        guest_mount.get_keyring_path(), keyring_txt)
 
         # Add a guest client section to the ceph config file.
         self.set_conf("client.{0}".format(guest_entity), "client quota", "True")
@@ -990,6 +972,29 @@ vc.disconnect()
         vc_mount.umount_wait()
         self._configure_vc_auth(vc_mount, "manila")
 
+        obj_data = 'test_data'
+        obj_name = 'test_vc_obj'
+        pool_name = self.fs.get_data_pool_names()[0]
+        self.fs.rados(['put', obj_name, '-'], pool=pool_name, stdin_data=obj_data)
+
+        self._volume_client_python(vc_mount, dedent("""
+            data, version_before = vc.get_object_and_version("{pool_name}", "{obj_name}")
+
+            if sys_version_info.major < 3:
+                data = data + 'modification1'
+            elif sys_version_info.major > 3:
+                data = str.encode(data.decode() + 'modification1')
+
+            vc.put_object_versioned("{pool_name}", "{obj_name}", data, version_before)
+            data, version_after = vc.get_object_and_version("{pool_name}", "{obj_name}")
+            assert version_after == version_before + 1
+        """).format(pool_name=pool_name, obj_name=obj_name))
+
+    def test_version_check_for_put_object_versioned(self):
+        vc_mount = self.mounts[1]
+        vc_mount.umount_wait()
+        self._configure_vc_auth(vc_mount, "manila")
+
         obj_data = 'test_data'
         obj_name = 'test_vc_ob_2'
         pool_name = self.fs.get_data_pool_names()[0]
@@ -997,14 +1002,30 @@ vc.disconnect()
 
         # Test if put_object_versioned() crosschecks the version of the
         # given object. Being a negative test, an exception is expected.
-        with self.assertRaises(CommandFailedError):
-            self._volume_client_python(vc_mount, dedent("""
-                data, version = vc.get_object_and_version("{pool_name}", "{obj_name}")
-                data += 'm1'
-                vc.put_object("{pool_name}", "{obj_name}", data)
-                data += 'm2'
+        expected_exception = 'rados_OSError'
+        output = self._volume_client_python(vc_mount, dedent("""
+            data, version = vc.get_object_and_version("{pool_name}", "{obj_name}")
+
+            if sys_version_info.major < 3:
+                data = data + 'm1'
+            elif sys_version_info.major > 3:
+                data = str.encode(data.decode('utf-8') + 'm1')
+
+            vc.put_object("{pool_name}", "{obj_name}", data)
+
+            if sys_version_info.major < 3:
+                data = data + 'm2'
+            elif sys_version_info.major > 3:
+                data = str.encode(data.decode('utf-8') + 'm2')
+
+            try:
                 vc.put_object_versioned("{pool_name}", "{obj_name}", data, version)
-            """).format(pool_name=pool_name, obj_name=obj_name))
+            except {expected_exception}:
+                print('{expected_exception} raised')
+        """).format(pool_name=pool_name, obj_name=obj_name,
+                    expected_exception=expected_exception))
+        self.assertEqual(expected_exception + ' raised', output)
+
 
     def test_delete_object(self):
         vc_mount = self.mounts[1]
index eb94251cab9a35836eb09485d9858667bf9be21f..f7f20f005593159c340f8b5b0b86f8c7e659a47a 100644 (file)
@@ -3,6 +3,7 @@ import json
 import errno
 import random
 import logging
+import collections
 
 from tasks.cephfs.cephfs_test_case import CephFSTestCase
 from teuthology.exceptions import CommandFailedError
@@ -63,7 +64,7 @@ class TestVolumes(CephFSTestCase):
         return path[1:].rstrip()
 
     def _delete_test_volume(self):
-        self._fs_cmd("volume", "rm", self.volname)
+        self._fs_cmd("volume", "rm", self.volname, "--yes-i-really-mean-it")
 
     def _do_subvolume_io(self, subvolume, number_of_files=DEFAULT_NUMBER_OF_FILES,
                          file_size=DEFAULT_FILE_SIZE):
@@ -95,6 +96,23 @@ class TestVolumes(CephFSTestCase):
             self._delete_test_volume()
         super(TestVolumes, self).tearDown()
 
+    def test_volume_rm(self):
+        try:
+            self._fs_cmd("volume", "rm", self.volname)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.EPERM:
+                raise RuntimeError("expected the 'fs volume rm' command to fail with EPERM, "
+                                   "but it failed with {0}".format(ce.exitstatus))
+            else:
+                self._fs_cmd("volume", "rm", self.volname, "--yes-i-really-mean-it")
+
+                #check if it's gone
+                volumes = json.loads(self.mgr_cluster.mon_manager.raw_cluster_cmd('fs', 'volume', 'ls', '--format=json-pretty'))
+                if (self.volname in [volume['name'] for volume in volumes]):
+                    raise RuntimeError("Expected the 'fs volume rm' command to succeed. The volume {0} not removed.".format(self.volname))
+        else:
+            raise RuntimeError("expected the 'fs volume rm' command to fail.")
+
     ### basic subvolume operations
 
     def test_subvolume_create_and_rm(self):
@@ -132,6 +150,47 @@ class TestVolumes(CephFSTestCase):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_create_with_invalid_data_pool_layout(self):
+        subvolume = self._generate_random_subvolume_name()
+        data_pool = "invalid_pool"
+        # create subvolume with invalid data pool layout
+        try:
+            self._fs_cmd("subvolume", "create", self.volname, subvolume, "--pool_layout", data_pool)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.EINVAL:
+                raise
+        else:
+            raise
+        # clean up
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume, "--force")
+
+    def test_subvolume_create_with_auto_cleanup_on_fail(self):
+        subvolume = self._generate_random_subvolume_name()
+        data_pool = "invalid_pool"
+        # create subvolume with invalid data pool layout fails
+        with self.assertRaises(CommandFailedError):
+            self._fs_cmd("subvolume", "create", self.volname, subvolume, "--pool_layout", data_pool)
+
+        # check whether subvol path is cleaned up
+        try:
+            self._fs_cmd("subvolume", "getpath", self.volname, subvolume)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.ENOENT:
+                raise
+        else:
+            raise
+
+    def test_subvolume_create_with_invalid_size(self):
+        # create subvolume with an invalid size -1
+        subvolume = self._generate_random_subvolume_name()
+        try:
+            self._fs_cmd("subvolume", "create", self.volname, subvolume, "--size", "-1")
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.EINVAL:
+                raise
+        else:
+            raise RuntimeError("expected the 'fs subvolume create' command to fail")
+
     def test_nonexistent_subvolume_rm(self):
         # remove non-existing subvolume
         subvolume = "non_existent_subvolume"
@@ -174,6 +233,36 @@ class TestVolumes(CephFSTestCase):
         # remove subvolume
         self._fs_cmd("subvolume", "rm", self.volname, subvolume)
 
+    def test_subvolume_ls(self):
+        # tests the 'fs subvolume ls' command
+
+        subvolumes = []
+
+        # create subvolumes
+        for i in range(3):
+            svname = self._generate_random_subvolume_name()
+            self._fs_cmd("subvolume", "create", self.volname, svname)
+            subvolumes.append(svname)
+
+        # list subvolumes
+        subvolumels = json.loads(self._fs_cmd('subvolume', 'ls', self.volname))
+        if len(subvolumels) == 0:
+            raise RuntimeError("Expected the 'fs subvolume ls' command to list the created subvolumes.")
+        else:
+            subvolnames = [subvolume['name'] for subvolume in subvolumels]
+            if collections.Counter(subvolnames) != collections.Counter(subvolumes):
+                raise RuntimeError("Error creating or listing subvolumes")
+
+    def test_subvolume_ls_for_notexistent_default_group(self):
+        # tests the 'fs subvolume ls' command when the default group '_nogroup' doesn't exist
+        # prerequisite: we expect that the volume is created and the default group _nogroup is
+        # NOT created (i.e. a subvolume without group is not created)
+
+        # list subvolumes
+        subvolumels = json.loads(self._fs_cmd('subvolume', 'ls', self.volname))
+        if len(subvolumels) > 0:
+            raise RuntimeError("Expected the 'fs subvolume ls' command to output an empty list.")
+
     ### subvolume group operations
 
     def test_subvolume_create_and_rm_in_group(self):
@@ -221,6 +310,36 @@ class TestVolumes(CephFSTestCase):
         self._fs_cmd("subvolumegroup", "rm", self.volname, group1)
         self._fs_cmd("subvolumegroup", "rm", self.volname, group2)
 
+    def test_subvolume_group_create_with_invalid_data_pool_layout(self):
+        group = self._generate_random_group_name()
+        data_pool = "invalid_pool"
+        # create group with invalid data pool layout
+        try:
+            self._fs_cmd("subvolumegroup", "create", self.volname, group, "--pool_layout", data_pool)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.EINVAL:
+                raise
+        else:
+            raise
+        # clean up
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group, "--force")
+
+    def test_subvolume_group_create_with_auto_cleanup_on_fail(self):
+        group = self._generate_random_group_name()
+        data_pool = "invalid_pool"
+        # create group with invalid data pool layout
+        with self.assertRaises(CommandFailedError):
+            self._fs_cmd("subvolumegroup", "create", self.volname, group, "--pool_layout", data_pool)
+
+        # check whether group path is cleaned up
+        try:
+            self._fs_cmd("subvolumegroup", "getpath", self.volname, group)
+        except CommandFailedError as ce:
+            if ce.exitstatus != errno.ENOENT:
+                raise
+        else:
+            raise
+
     def test_subvolume_create_with_desired_data_pool_layout_in_group(self):
         subvol1 = self._generate_random_subvolume_name()
         subvol2 = self._generate_random_subvolume_name()
@@ -343,6 +462,34 @@ class TestVolumes(CephFSTestCase):
         # remove group
         self._fs_cmd("subvolumegroup", "rm", self.volname, group)
 
+    def test_subvolume_group_ls(self):
+        # tests the 'fs subvolumegroup ls' command
+
+        subvolumegroups = []
+
+        #create subvolumegroups
+        for i in range(3):
+            groupname = self._generate_random_group_name()
+            self._fs_cmd("subvolumegroup", "create", self.volname, groupname)
+            subvolumegroups.append(groupname)
+
+        subvolumegroupls = json.loads(self._fs_cmd('subvolumegroup', 'ls', self.volname))
+        if len(subvolumegroupls) == 0:
+            raise RuntimeError("Expected the 'fs subvolumegroup ls' command to list the created subvolume groups")
+        else:
+            subvolgroupnames = [subvolumegroup['name'] for subvolumegroup in subvolumegroupls]
+            if collections.Counter(subvolgroupnames) != collections.Counter(subvolumegroups):
+                raise RuntimeError("Error creating or listing subvolume groups")
+
+    def test_subvolume_group_ls_for_nonexistent_volume(self):
+        # tests the 'fs subvolumegroup ls' command when /volume doesn't exist
+        # prerequisite: we expect that the test volume is created and a subvolumegroup is NOT created
+
+        # list subvolume groups
+        subvolumegroupls = json.loads(self._fs_cmd('subvolumegroup', 'ls', self.volname))
+        if len(subvolumegroupls) > 0:
+            raise RuntimeError("Expected the 'fs subvolumegroup ls' command to output an empty list")
+
     ### snapshot operations
 
     def test_subvolume_snapshot_create_and_rm(self):
@@ -441,6 +588,29 @@ class TestVolumes(CephFSTestCase):
         # remove group
         self._fs_cmd("subvolumegroup", "rm", self.volname, group)
 
+    def test_subvolume_snapshot_ls(self):
+        # tests the 'fs subvolume snapshot ls' command
+
+        snapshots = []
+
+        # create subvolume
+        subvolume = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+
+        # create subvolume snapshots
+        for i in range(3):
+            sname = self._generate_random_snapshot_name()
+            self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, sname)
+            snapshots.append(sname)
+
+        subvolsnapshotls = json.loads(self._fs_cmd('subvolume', 'snapshot', 'ls', self.volname, subvolume))
+        if len(subvolsnapshotls) == 0:
+            raise RuntimeError("Expected the 'fs subvolume snapshot ls' command to list the created subvolume snapshots")
+        else:
+            snapshotnames = [snapshot['name'] for snapshot in subvolsnapshotls]
+            if collections.Counter(snapshotnames) != collections.Counter(snapshots):
+                raise RuntimeError("Error creating or listing subvolume snapshots")
+
     def test_subvolume_group_snapshot_create_and_rm(self):
         subvolume = self._generate_random_subvolume_name()
         group = self._generate_random_group_name()
@@ -529,6 +699,29 @@ class TestVolumes(CephFSTestCase):
         # remove group
         self._fs_cmd("subvolumegroup", "rm", self.volname, group)
 
+    def test_subvolume_group_snapshot_ls(self):
+        # tests the 'fs subvolumegroup snapshot ls' command
+
+        snapshots = []
+
+        # create group
+        group = self._generate_random_group_name()
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+
+        # create subvolumegroup snapshots
+        for i in range(3):
+            sname = self._generate_random_snapshot_name()
+            self._fs_cmd("subvolumegroup", "snapshot", "create", self.volname, group, sname)
+            snapshots.append(sname)
+
+        subvolgrpsnapshotls = json.loads(self._fs_cmd('subvolumegroup', 'snapshot', 'ls', self.volname, group))
+        if len(subvolgrpsnapshotls) == 0:
+            raise RuntimeError("Expected the 'fs subvolumegroup snapshot ls' command to list the created subvolume group snapshots")
+        else:
+            snapshotnames = [snapshot['name'] for snapshot in subvolgrpsnapshotls]
+            if collections.Counter(snapshotnames) != collections.Counter(snapshots):
+                raise RuntimeError("Error creating or listing subvolume group snapshots")
+
     def test_async_subvolume_rm(self):
         subvolume = self._generate_random_subvolume_name()
 
index 5e217b323585e7df1a68a3d8586600fec7f8602f..88f27366a718f348ed509a53a0521090cd960fde 100644 (file)
@@ -72,13 +72,6 @@ def task(ctx, config):
 
     test_dir = misc.get_testdir(ctx)
 
-    # Assemble mon addresses
-    remotes_and_roles = ctx.cluster.remotes.items()
-    roles = [roles for (remote_, roles) in remotes_and_roles]
-    ips = [remote_.ssh.get_transport().getpeername()[0]
-           for (remote_, _) in remotes_and_roles]
-    mons = misc.get_mons(roles, ips).values()
-
     mounts = {}
     for id_, remote in clients:
         client_config = config.get("client.%s" % id_)
@@ -90,7 +83,6 @@ def task(ctx, config):
 
         kernel_mount = KernelMount(
             ctx,
-            mons,
             test_dir,
             id_,
             remote,
index af0036904a30aa3ff70524e125ba1f640fbd26ea..154700e0b70ea73c48b9ff0f9d44a8b8a854efdc 100644 (file)
@@ -12,11 +12,6 @@ logger = logging.getLogger(__name__)
 class MgrModuleTestCase(DashboardTestCase):
     MGRS_REQUIRED = 1
 
-    @classmethod
-    def tearDownClass(cls):
-        cls._ceph_cmd(['mgr', 'module', 'disable', 'telemetry'])
-        super(MgrModuleTestCase, cls).tearDownClass()
-
     def wait_until_rest_api_accessible(self):
         """
         Wait until the REST API is accessible.
@@ -37,7 +32,7 @@ class MgrModuleTestCase(DashboardTestCase):
 
 class MgrModuleTest(MgrModuleTestCase):
     def test_list_disabled_module(self):
-        self._ceph_cmd(['mgr', 'module', 'disable', 'telemetry'])
+        self._ceph_cmd(['mgr', 'module', 'disable', 'iostat'])
         self.wait_until_rest_api_accessible()
         data = self._get('/api/mgr/module')
         self.assertStatus(200)
@@ -65,12 +60,12 @@ class MgrModuleTest(MgrModuleTestCase):
                             'tags': JList(str)
                         }))
                 })))
-        module_info = self.find_object_in_list('name', 'telemetry', data)
+        module_info = self.find_object_in_list('name', 'iostat', data)
         self.assertIsNotNone(module_info)
         self.assertFalse(module_info['enabled'])
 
     def test_list_enabled_module(self):
-        self._ceph_cmd(['mgr', 'module', 'enable', 'telemetry'])
+        self._ceph_cmd(['mgr', 'module', 'enable', 'iostat'])
         self.wait_until_rest_api_accessible()
         data = self._get('/api/mgr/module')
         self.assertStatus(200)
@@ -98,7 +93,7 @@ class MgrModuleTest(MgrModuleTestCase):
                             'tags': JList(str)
                         }))
                 })))
-        module_info = self.find_object_in_list('name', 'telemetry', data)
+        module_info = self.find_object_in_list('name', 'iostat', data)
         self.assertIsNotNone(module_info)
         self.assertTrue(module_info['enabled'])
 
@@ -110,15 +105,21 @@ class MgrModuleTelemetryTest(MgrModuleTestCase):
         self.assertSchema(
             data,
             JObj(
+                allow_unknown=True,
                 sub_elems={
-                    'contact': JLeaf(str),
-                    'description': JLeaf(str),
-                    'enabled': JLeaf(bool),
-                    'interval': JLeaf(int),
-                    'leaderboard': JLeaf(bool),
-                    'organization': JLeaf(str),
-                    'proxy': JLeaf(str),
-                    'url': JLeaf(str)
+                    'channel_basic': bool,
+                    'channel_ident': bool,
+                    'channel_crash': bool,
+                    'channel_device': bool,
+                    'contact': str,
+                    'description': str,
+                    'enabled': bool,
+                    'interval': int,
+                    'last_opt_revision': int,
+                    'leaderboard': bool,
+                    'organization': str,
+                    'proxy': str,
+                    'url': str
                 }))
 
     def test_put(self):
@@ -155,37 +156,3 @@ class MgrModuleTelemetryTest(MgrModuleTestCase):
         self.assertEqual(data['organization'], 'SUSE Linux')
         self.assertEqual(data['proxy'], 'foo')
         self.assertEqual(data['url'], 'https://foo.bar/report')
-
-    def test_enable(self):
-        self._ceph_cmd(['mgr', 'module', 'disable', 'telemetry'])
-        self.wait_until_rest_api_accessible()
-        try:
-            # Note, an exception is thrown because the Ceph Mgr
-            # modules are reloaded.
-            self._post('/api/mgr/module/telemetry/enable')
-        except requests.ConnectionError:
-            pass
-        self.wait_until_rest_api_accessible()
-        data = self._get('/api/mgr/module')
-        self.assertStatus(200)
-        module_info = self.find_object_in_list('name', 'telemetry', data)
-        self.assertIsNotNone(module_info)
-        self.assertTrue(module_info['enabled'])
-
-    def test_disable(self):
-        # Enable the 'telemetry' module (all CephMgr modules are restarted)
-        # and wait until the Dashboard REST API is accessible.
-        self._ceph_cmd(['mgr', 'module', 'enable', 'telemetry'])
-        self.wait_until_rest_api_accessible()
-        try:
-            # Note, an exception is thrown because the Ceph Mgr
-            # modules are reloaded.
-            self._post('/api/mgr/module/telemetry/disable')
-        except requests.ConnectionError:
-            pass
-        self.wait_until_rest_api_accessible()
-        data = self._get('/api/mgr/module')
-        self.assertStatus(200)
-        module_info = self.find_object_in_list('name', 'telemetry', data)
-        self.assertIsNotNone(module_info)
-        self.assertFalse(module_info['enabled'])
index 82acd606e09b16fac5ca08efc714dd02e8c3021d..12306801d8025fb62fea8d5be6186b92f5cf9a7b 100644 (file)
@@ -235,7 +235,10 @@ class PoolTest(DashboardTestCase):
             # they can't recover from the resulting warning state.
             # Feel free to test it locally.
             # {
-            #     'pg_num': '8',
+            #     'pg_num': '2', # Decrease PGs
+            # },
+            # {
+            #     'pg_num': '8', # Increase PGs
             # },
             {
                 'application_metadata': ['rgw'],
index b1c64bbdde5ab01452158ac62a2f0c2fb5f42714..039c8cc22fb58f8df0705d235e079a1a31b36cf0 100644 (file)
@@ -114,8 +114,8 @@ class RbdTest(DashboardTestCase):
     @classmethod
     def setUpClass(cls):
         super(RbdTest, cls).setUpClass()
-        cls.create_pool('rbd', 10, 'replicated')
-        cls.create_pool('rbd_iscsi', 10, 'replicated')
+        cls.create_pool('rbd', 2**3, 'replicated')
+        cls.create_pool('rbd_iscsi', 2**3, 'replicated')
 
         cls.create_image('rbd', 'img1', 2**30)
         cls.create_image('rbd', 'img2', 2*2**30)
@@ -324,7 +324,7 @@ class RbdTest(DashboardTestCase):
         if not self.bluestore_support:
             self.skipTest('requires bluestore cluster')
 
-        self.create_pool('data_pool', 12, 'erasure')
+        self.create_pool('data_pool', 2**4, 'erasure')
 
         rbd_name = 'test_rbd_in_data_pool'
         self.create_image('rbd', rbd_name, 10240, data_pool='data_pool')
index b4c0676b0dd6cef7741c59cffdc623b984998cde..34f337f8df37e7ae1288943dcaf85908527fc225 100644 (file)
@@ -114,16 +114,22 @@ class RgwBucketTest(RgwTestCase):
     def setUpClass(cls):
         cls.create_test_user = True
         super(RgwBucketTest, cls).setUpClass()
-        # Create a tenanted user.
+        # Create tenanted users.
         cls._radosgw_admin_cmd([
             'user', 'create', '--tenant', 'testx', '--uid', 'teuth-test-user',
             '--display-name', 'tenanted teuth-test-user'
         ])
+        cls._radosgw_admin_cmd([
+            'user', 'create', '--tenant', 'testx', '--uid', 'teuth-test-user2',
+            '--display-name', 'tenanted teuth-test-user 2'
+        ])
 
     @classmethod
     def tearDownClass(cls):
         cls._radosgw_admin_cmd(
             ['user', 'rm', '--tenant', 'testx', '--uid=teuth-test-user'])
+        cls._radosgw_admin_cmd(
+            ['user', 'rm', '--tenant', 'testx', '--uid=teuth-test-user2'])
         super(RgwBucketTest, cls).tearDownClass()
 
     def test_all(self):
@@ -232,7 +238,22 @@ class RgwBucketTest(RgwTestCase):
         self.assertEqual(data['tenant'], 'testx')
         self.assertEqual(data['bid'], 'testx/teuth-test-bucket')
 
-        # Update the bucket.
+        # Update bucket: different user from same tenant.
+        self._put(
+            '/api/rgw/bucket/{}'.format(
+                urllib.quote_plus('testx/teuth-test-bucket')),
+            params={
+                'bucket_id': data['id'],
+                'uid': 'testx$teuth-test-user2'
+            })
+        self.assertStatus(200)
+        data = self._get('/api/rgw/bucket/{}'.format(
+            urllib.quote_plus('testx/teuth-test-bucket')))
+        self.assertStatus(200)
+        self.assertIn('owner', data)
+        self.assertEqual(data['owner'], 'testx$teuth-test-user2')
+
+        # Update bucket: different user from empty tenant.
         self._put(
             '/api/rgw/bucket/{}'.format(
                 urllib.quote_plus('testx/teuth-test-bucket')),
index 3b778520da872f93f15aea1f28151b3b56e358de..b0cf200d61be46ef312e3ca9751759e7d9aac703 100644 (file)
@@ -20,6 +20,14 @@ class TestDashboard(MgrTestCase):
         self.mgr_cluster.mon_manager.raw_cluster_cmd("dashboard",
                                                      "create-self-signed-cert")
 
+    def tearDown(self):
+        self.mgr_cluster.mon_manager.raw_cluster_cmd("config", "set", "mgr",
+                                                     "mgr/dashboard/standby_behaviour",
+                                                     "redirect")
+        self.mgr_cluster.mon_manager.raw_cluster_cmd("config", "set", "mgr",
+                                                     "mgr/dashboard/standby_error_status_code",
+                                                     "500")
+
     def test_standby(self):
         original_active_id = self.mgr_cluster.get_active_id()
         original_uri = self._get_uri("dashboard")
@@ -46,6 +54,42 @@ class TestDashboard(MgrTestCase):
         self.assertEqual(r.status_code, 303)
         self.assertEqual(r.headers['Location'], failed_over_uri)
 
+    def test_standby_disable_redirect(self):
+        self.mgr_cluster.mon_manager.raw_cluster_cmd("config", "set", "mgr",
+                                                     "mgr/dashboard/standby_behaviour",
+                                                     "error")
+
+        original_active_id = self.mgr_cluster.get_active_id()
+        original_uri = self._get_uri("dashboard")
+        log.info("Originally running manager '{}' at {}".format(
+            original_active_id, original_uri))
+
+        # Force a failover and wait until the previously active manager
+        # is listed as standby.
+        self.mgr_cluster.mgr_fail(original_active_id)
+        self.wait_until_true(
+            lambda: original_active_id in self.mgr_cluster.get_standby_ids(),
+            timeout=30)
+
+        failed_active_id = self.mgr_cluster.get_active_id()
+        failed_over_uri = self._get_uri("dashboard")
+        log.info("After failover running manager '{}' at {}".format(
+            failed_active_id, failed_over_uri))
+
+        self.assertNotEqual(original_uri, failed_over_uri)
+
+        # Redirection should be disabled now, instead a 500 must be returned.
+        r = requests.get(original_uri, allow_redirects=False, verify=False)
+        self.assertEqual(r.status_code, 500)
+
+        self.mgr_cluster.mon_manager.raw_cluster_cmd("config", "set", "mgr",
+                                                     "mgr/dashboard/standby_error_status_code",
+                                                     "503")
+
+        # The customized HTTP status code (503) must be returned.
+        r = requests.get(original_uri, allow_redirects=False, verify=False)
+        self.assertEqual(r.status_code, 503)
+
     def test_urls(self):
         base_uri = self._get_uri("dashboard")
 
index 37fe0a89c88d4194bb038123cf5514c1be8d6186..8f0f41ceb66310aac878e7b079352c24432613f9 100644 (file)
@@ -163,23 +163,6 @@ class TestInsights(MgrTestCase):
         report = self._insights()
         self.assertFalse(report["health"]["history"]["checks"])
 
-    def test_insights_health(self):
-        """The insights module reports health checks"""
-        self._add_crash(1, True) # add invalid crash data
-        timeout = 10
-        while timeout > 0:
-            time.sleep(1)
-            timeout -= 1
-            # should observe a health check because it can't read the invalid
-            # crash data created at the beginning of this test
-            report = self._insights()
-            if "MGR_INSIGHTS_WARNING" in report["health"]["current"]["checks"]:
-                self._clear_crashes()
-                return
-        self._clear_crashes()
-        self.fail("Insights module did not set health check")
-        pass
-
     def test_schema(self):
         """TODO: assert conformance to a full schema specification?"""
         report = self._insights()
@@ -214,10 +197,4 @@ class TestInsights(MgrTestCase):
         self.assertFalse(report["errors"])
         log.warning("{}".format(json.dumps(report["crashes"], indent=2)))
 
-        # handling of comm. error with crash module
-        self._add_crash(1, True)
-        report = self._insights()
-        self.assertFalse(report["crashes"]["summary"])
-        self.assertTrue(report["errors"])
-
         self._clear_crashes()
index 7e6a5110c9dce28e597e5bc87833561bf1577c22..bec2786c33d3d5c894a3f3c96c36ad13460bb3d5 100644 (file)
@@ -78,6 +78,10 @@ class TestModuleSelftest(MgrTestCase):
     def test_crash(self):
         self._selftest_plugin("crash")
 
+    def test_orchestrator_cli(self):
+        self._selftest_plugin("orchestrator_cli")
+
+
     def test_selftest_config_update(self):
         """
         That configuration updates are seen by running mgr modules
index a41238daa0419792384bb85681f8a04548ee5dee..9dea39312dee37d229aa059781db42d119c9a829 100644 (file)
@@ -11,6 +11,7 @@ from util.rgw import rgwadmin, wait_for_radosgw
 from util.rados import create_ec_pool, create_replicated_pool
 from rgw_multi import multisite
 from rgw_multi.zone_rados import RadosZone as RadosZone
+from rgw_multi.zone_ps import PSZone as PSZone
 
 from teuthology.orchestra import run
 from teuthology import misc
@@ -33,6 +34,7 @@ class RGWMultisite(Task):
 
     * 'is_master' is passed on the command line as --master
     * 'is_default' is passed on the command line as --default
+    * 'is_pubsub' is used to create a zone with tier-type=pubsub
     * 'endpoints' given as client names are replaced with actual endpoints
 
             zonegroups:
@@ -78,6 +80,9 @@ class RGWMultisite(Task):
                   - name: test-zone2
                     is_default: true
                     endpoints: [c2.client.0]
+                  - name: test-zone3
+                    is_pubsub: true
+                    endpoints: [c1.client.1]
 
     """
     def __init__(self, ctx, config):
@@ -369,7 +374,10 @@ def create_zonegroup(cluster, gateways, period, config):
 def create_zone(ctx, cluster, gateways, creds, zonegroup, config):
     """ create a zone with the given configuration """
     zone = multisite.Zone(config['name'], zonegroup, cluster)
-    zone = RadosZone(config['name'], zonegroup, cluster)
+    if config.pop('is_pubsub', False):
+        zone = PSZone(config['name'], zonegroup, cluster)
+    else:
+        zone = RadosZone(config['name'], zonegroup, cluster)
 
     # collect Gateways for the zone's endpoints
     endpoints = config.get('endpoints')
index 4e6e2b3dff004af425ea602f94071c52c4d61954..dade6e47483e13bfb9830a02402451469761ac60 100644 (file)
@@ -10,10 +10,11 @@ from teuthology.exceptions import ConfigError
 from teuthology.task import Task
 from teuthology import misc
 
-from rgw_multi import multisite, tests
+from rgw_multi import multisite, tests, tests_ps
 
 log = logging.getLogger(__name__)
 
+
 class RGWMultisiteTests(Task):
     """
     Runs the rgw_multi tests against a multisite configuration created by the
@@ -63,9 +64,16 @@ class RGWMultisiteTests(Task):
 
         # run nose tests in the rgw_multi.tests module
         conf = nose.config.Config(stream=get_log_stream(), verbosity=2)
+        error_msg = ''
         result = nose.run(defaultTest=tests.__name__, argv=argv, config=conf)
         if not result:
-            raise RuntimeError('rgw multisite test failures')
+            error_msg += 'rgw multisite, '
+        result = nose.run(defaultTest=tests_ps.__name__, argv=argv, config=conf)
+        if not result:
+            error_msg += 'rgw multisite pubsub, '
+        if error_msg:
+            raise RuntimeError(error_msg + 'test failures')
+
 
 def get_log_stream():
     """ return a log stream for nose output """
@@ -88,4 +96,5 @@ def get_log_stream():
 
     return LogStream()
 
+
 task = RGWMultisiteTests
index bdfc04fc3a0f732f9828c0348ecd7cff7e1b4fd1..74b26d23df466ea6cd37aac62672004f87f753fc 100644 (file)
@@ -109,7 +109,7 @@ if os.path.exists("./CMakeCache.txt") and os.path.exists("./bin"):
                 python_paths.append(g_exp)
 
     ld_path = os.path.join(os.getcwd(), "lib/")
-    print "Using guessed paths {0} {1}".format(ld_path, python_paths)
+    print("Using guessed paths {0} {1}".format(ld_path, python_paths))
     respawn_in_path(ld_path, python_paths)
 
 
@@ -884,6 +884,7 @@ def exec_test():
     interactive_on_error = False
     create_cluster = False
     create_cluster_only = False
+    ignore_missing_binaries = False
 
     args = sys.argv[1:]
     flags = [a for a in args if a.startswith("-")]
@@ -895,6 +896,8 @@ def exec_test():
             create_cluster = True
         elif f == "--create-cluster-only":
             create_cluster_only = True
+        elif f == "--ignore-missing-binaries":
+            ignore_missing_binaries = True
         else:
             log.error("Unknown option '{0}'".format(f))
             sys.exit(-1)
@@ -904,7 +907,7 @@ def exec_test():
     require_binaries = ["ceph-dencoder", "cephfs-journal-tool", "cephfs-data-scan",
                         "cephfs-table-tool", "ceph-fuse", "rados"]
     missing_binaries = [b for b in require_binaries if not os.path.exists(os.path.join(BIN_PREFIX, b))]
-    if missing_binaries:
+    if missing_binaries and not ignore_missing_binaries:
         log.error("Some ceph binaries missing, please build them: {0}".format(" ".join(missing_binaries)))
         sys.exit(-1)
 
index e533d3fdfcaa92370ad96941904b082c8afacadb..56112b1f4fd98ef06f62f33c37677ec323c9e9ea 100644 (file)
 # while using aes-128-gcm with AES-NI enabled. Not observed while running
 # with `OPENSSL_ia32cap="~0x200000200000000"`.
 {
-   <insert_a_suppression_name_here>
+   uninitialised gcm.Xi in aes-128-gcm with AES-NI for msgr, part 1
    Memcheck:Cond
    ...
    fun:EVP_DecryptFinal_ex
    ...
    fun:_ZN15AsyncConnection7processEv
    fun:_ZN11EventCenter14process_eventsEjPNSt6chrono8durationImSt5ratioILl1ELl1000000000EEEE
-   fun:operator()
-   fun:_ZNSt17_Function_handlerIFvvEZN12NetworkStack10add_threadEjEUlvE_E9_M_invokeERKSt9_Any_data
-   fun:execute_native_thread_routine
-   fun:start_thread
-   fun:clone
+   ...
 }
 
 {
-   <insert_a_suppression_name_here>
+   uninitialised gcm.Xi in aes-128-gcm with AES-NI for msgr, part 2
    Memcheck:Cond
    fun:_ZN4ceph6crypto6onwire25AES128GCM_OnWireRxHandler34authenticated_decrypt_update_finalEONS_6buffer7v14_2_04listEj
    fun:_ZN10ProtocolV231handle_read_frame_epilogue_mainEOSt10unique_ptrIN4ceph6buffer7v14_2_08ptr_nodeENS4_8disposerEEi
    fun:_ZN10ProtocolV216run_continuationER2CtIS_E
    ...
    fun:_ZN11EventCenter14process_eventsEjPNSt6chrono8durationImSt5ratioILl1ELl1000000000EEEE
-   fun:operator()
-   fun:_ZNSt17_Function_handlerIFvvEZN12NetworkStack10add_threadEjEUlvE_E9_M_invokeERKSt9_Any_data
-   fun:execute_native_thread_routine
-   fun:start_thread
-   fun:clone
+   ...
 }
index cd716a57e78d33f3af3e4e631aedfa72d35b7fe2..65c2fc3b9e7658f66a334c413308996e759da6e2 100755 (executable)
@@ -22,6 +22,11 @@ function distro_id() {
     echo $ID
 }
 
+function distro_version() {
+    source /etc/os-release
+    echo $VERSION
+}
+
 function install() {
     for package in "$@" ; do
         install_one $package
@@ -45,6 +50,52 @@ function install_one() {
     esac
 }
 
+function install_cmake3_on_centos7 {
+    source /etc/os-release
+    local MAJOR_VERSION="$(echo $VERSION_ID | cut -d. -f1)"
+    sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/$MAJOR_VERSION/x86_64/
+    sudo yum install --nogpgcheck -y epel-release
+    sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION
+    sudo yum install -y cmake3
+}
+
+function install_cmake3_on_xenial {
+    install_pkg_on_ubuntu \
+       ceph-cmake \
+       d278b9d28de0f6b88f56dfe1e8bf684a41577210 \
+       xenial \
+       force \
+       cmake
+}
+
+function install_pkg_on_ubuntu {
+    local project=$1
+    shift
+    local sha1=$1
+    shift
+    local codename=$1
+    shift
+    local force=$1
+    shift
+    local pkgs=$@
+    local missing_pkgs
+    if [ $force = "force" ]; then
+       missing_pkgs="$@"
+    else
+       for pkg in $pkgs; do
+           if ! dpkg -s $pkg &> /dev/null; then
+               missing_pkgs+=" $pkg"
+           fi
+       done
+    fi
+    if test -n "$missing_pkgs"; then
+       local shaman_url="https://shaman.ceph.com/api/repos/${project}/master/${sha1}/ubuntu/${codename}/repo"
+       sudo curl --silent --location $shaman_url --output /etc/apt/sources.list.d/$project.list
+       sudo env DEBIAN_FRONTEND=noninteractive apt-get update -y -o Acquire::Languages=none -o Acquire::Translation=none || true
+       sudo env DEBIAN_FRONTEND=noninteractive apt-get install --allow-unauthenticated -y $missing_pkgs
+    fi
+}
+
 #######################################################################
 
 function control_osd() {
index f469acdc893f218285737545e20dfb6019630978..a4bd3d415a6fc3ec57091bbdaf4fa20b04126b78 100755 (executable)
@@ -49,6 +49,11 @@ function expect_false()
        if "$@"; then return 1; else return 0; fi
 }
 
+function expect_true()
+{
+       set -x
+       if ! "$@"; then return 1; else return 0; fi
+}
 
 TEMP_DIR=$(mktemp -d ${TMPDIR-/tmp}/cephtool.XXX)
 trap "rm -fr $TEMP_DIR" 0
@@ -2700,6 +2705,55 @@ function test_mgr_tell()
   ceph tell mgr osd status
 }
 
+function test_mgr_devices()
+{
+  ceph device ls
+  expect_false ceph device info doesnotexist
+  expect_false ceph device get-health-metrics doesnotexist
+}
+
+function test_per_pool_scrub_status()
+{
+  ceph osd pool create noscrub_pool 12
+  ceph osd pool create noscrub_pool2 12
+  ceph -s | expect_false grep -q "Some pool(s) have the.*scrub.* flag(s) set"
+  ceph -s --format json | \
+    jq .health.checks.POOL_SCRUB_FLAGS.summary.message | \
+    expect_false grep -q "Some pool(s) have the.*scrub.* flag(s) set"
+  ceph report | jq .health.checks.POOL_SCRUB_FLAGS.detail |
+    expect_false grep -q "Pool .* has .*scrub.* flag"
+  ceph health detail | jq .health.checks.POOL_SCRUB_FLAGS.detail | \
+    expect_false grep -q "Pool .* has .*scrub.* flag"
+
+  ceph osd pool set noscrub_pool noscrub 1
+  ceph -s | expect_true grep -q "Some pool(s) have the noscrub flag(s) set"
+  ceph -s --format json | \
+    jq .health.checks.POOL_SCRUB_FLAGS.summary.message | \
+    expect_true grep -q "Some pool(s) have the noscrub flag(s) set"
+  ceph report | jq .health.checks.POOL_SCRUB_FLAGS.detail | \
+    expect_true grep -q "Pool noscrub_pool has noscrub flag"
+  ceph health detail | expect_true grep -q "Pool noscrub_pool has noscrub flag"
+
+  ceph osd pool set noscrub_pool nodeep-scrub 1
+  ceph osd pool set noscrub_pool2 nodeep-scrub 1
+  ceph -s | expect_true grep -q "Some pool(s) have the noscrub, nodeep-scrub flag(s) set"
+  ceph -s --format json | \
+    jq .health.checks.POOL_SCRUB_FLAGS.summary.message | \
+    expect_true grep -q "Some pool(s) have the noscrub, nodeep-scrub flag(s) set"
+  ceph report | jq .health.checks.POOL_SCRUB_FLAGS.detail | \
+    expect_true grep -q "Pool noscrub_pool has noscrub flag"
+  ceph report | jq .health.checks.POOL_SCRUB_FLAGS.detail | \
+    expect_true grep -q "Pool noscrub_pool has nodeep-scrub flag"
+  ceph report | jq .health.checks.POOL_SCRUB_FLAGS.detail | \
+    expect_true grep -q "Pool noscrub_pool2 has nodeep-scrub flag"
+  ceph health detail | expect_true grep -q "Pool noscrub_pool has noscrub flag"
+  ceph health detail | expect_true grep -q "Pool noscrub_pool has nodeep-scrub flag"
+  ceph health detail | expect_true grep -q "Pool noscrub_pool2 has nodeep-scrub flag"
+
+  ceph osd pool rm noscrub_pool noscrub_pool --yes-i-really-really-mean-it
+  ceph osd pool rm noscrub_pool2 noscrub_pool2 --yes-i-really-really-mean-it
+}
+
 #
 # New tests should be added to the TESTS array below
 #
@@ -2752,6 +2806,7 @@ OSD_TESTS+=" tiering_agent"
 OSD_TESTS+=" admin_heap_profiler"
 OSD_TESTS+=" osd_tell_help_command"
 OSD_TESTS+=" osd_compact"
+OSD_TESTS+=" per_pool_scrub_status"
 
 MDS_TESTS+=" mds_tell"
 MDS_TESTS+=" mon_mds"
@@ -2759,6 +2814,7 @@ MDS_TESTS+=" mon_mds_metadata"
 MDS_TESTS+=" mds_tell_help_command"
 
 MGR_TESTS+=" mgr_tell"
+MGR_TESTS+=" mgr_devices"
 
 TESTS+=$MON_TESTS
 TESTS+=$OSD_TESTS
index a336fd544e723bbcc31863e7754929ca052065a1..4098795b98923171a11ae7038b07cca964288348 100755 (executable)
@@ -25,6 +25,16 @@ ceph osd pool set foo size 10
 expect_false ceph osd pool set foo size 0
 expect_false ceph osd pool set foo size 20
 
+ceph osd pool set foo size 3
+ceph osd getcrushmap -o crush
+crushtool -d crush -o crush.txt
+sed -i 's/max_size 10/max_size 3/' crush.txt
+crushtool -c crush.txt -o crush.new
+ceph osd setcrushmap -i crush.new
+expect_false ceph osd pool set foo size 4
+ceph osd setcrushmap -i crush
+rm -f crush crush.txt crush.new
+
 # should fail due to safety interlock
 expect_false ceph osd pool delete foo
 expect_false ceph osd pool delete foo foo
index 6e7aaaaba63485b311887be2617b958e1518524a..6608d7872e232b12ac5b9586ca84e63d37d4bc2b 100755 (executable)
@@ -29,5 +29,11 @@ sudo systemctl restart ceph-crash
 sleep 30
 
 # must be 3 crashdumps registered and moved to crash/posted
-[ $(ceph crash ls | wc -l) = 3 ]  || exit 1
+[ $(ceph crash ls | wc -l) = 4 ]  || exit 1   # 4 here bc of the table header
 [ $(sudo find /var/lib/ceph/crash/posted/ -name meta | wc -l) = 3 ] || exit 1
+
+# there should be a health warning
+ceph health detail | grep RECENT_CRASH || exit 1
+ceph crash archive-all
+sleep 30
+ceph health detail | grep -c RECENT_CRASH | grep 0     # should be gone!
index d5c09529ff65938610cc13c728eeae4a6437efa8..1360f6dfe5b4832f09742b4026789958a4403807 100755 (executable)
@@ -10,7 +10,6 @@ source $(dirname $0)/../ceph-helpers-root.sh
 #                      Install required tools
 ############################################
 echo "Install required tools"
-install git cmake
 
 CURRENT_PATH=`pwd`
 
@@ -21,13 +20,26 @@ CURRENT_PATH=`pwd`
 # for rocksdb
 case $(distro_id) in
        ubuntu|debian|devuan)
-               install g++ libsnappy-dev zlib1g-dev libbz2-dev libradospp-dev
+               install git g++ libsnappy-dev zlib1g-dev libbz2-dev libradospp-dev
+        case $(distro_version) in
+            *Xenial*)
+                install_cmake3_on_xenial
+                ;;
+            *)
+                install cmake
+                ;;
+        esac
                ;;
        centos|fedora|rhel)
-               install gcc-c++.x86_64 snappy-devel zlib zlib-devel bzip2 bzip2-devel libradospp-devel.x86_64
+               install git gcc-c++.x86_64 snappy-devel zlib zlib-devel bzip2 bzip2-devel libradospp-devel.x86_64
+        if [ $(distro_id) = "fedora" ]; then
+            install cmake
+        else
+            install_cmake3_on_centos7
+        fi
                ;;
        opensuse*|suse|sles)
-               install gcc-c++ snappy-devel zlib-devel libbz2-devel libradospp-devel
+               install git gcc-c++ snappy-devel zlib-devel libbz2-devel libradospp-devel
                ;;
        *)
         echo "$(distro_id) is unknown, $@ will have to be installed manually."
@@ -55,7 +67,12 @@ git clone https://github.com/facebook/rocksdb.git --depth 1
 
 # compile code
 cd rocksdb
-mkdir build && cd build && cmake -DWITH_LIBRADOS=ON -DWITH_SNAPPY=ON -DWITH_GFLAGS=OFF -DFAIL_ON_WARNINGS=OFF ..
+if type cmake3 > /dev/null 2>&1 ; then
+    CMAKE=cmake3
+else
+    CMAKE=cmake
+fi
+mkdir build && cd build && ${CMAKE} -DWITH_LIBRADOS=ON -DWITH_SNAPPY=ON -DWITH_GFLAGS=OFF -DFAIL_ON_WARNINGS=OFF ..
 make rocksdb_env_librados_test -j8
 
 echo "Copy ceph.conf"
index 41500151cb54bf0055dc36d2b162b13184c0e980..0bca50507e27530901b9e19542ab7cfb4ee7168e 100755 (executable)
@@ -22,8 +22,8 @@ hello_world_cpp
 "
 BINARIES="${BINARIES_TO_RUN}hello_radosstriper_cpp
 "
-DL_PREFIX="http://git.ceph.com/?p=ceph.git;a=blob_plain;hb=master;f=examples/librados/"
-#DL_PREFIX="https://raw.githubusercontent.com/ceph/ceph/master/examples/librados/"
+DL_PREFIX="http://git.ceph.com/?p=ceph.git;a=blob_plain;hb=nautilus;f=examples/librados/"
+#DL_PREFIX="https://raw.githubusercontent.com/ceph/ceph/nautilus/examples/librados/"
 DESTDIR=$(pwd)
 
 function cleanup () {
index 1a46df10c5103874250c607a709eada7e5675a1e..7f44d932d9534a78bc2cc37780eb6d0ea21471d2 100755 (executable)
@@ -665,6 +665,16 @@ test_namespace() {
     rbd rm rbd/test2/image2
     rbd rm rbd/image2
 
+    # v1 clones are supported within the same namespace
+    rbd create $RBD_CREATE_ARGS --size 1G rbd/test1/image3
+    rbd snap create rbd/test1/image3@1
+    rbd snap protect rbd/test1/image3@1
+    rbd clone --rbd-default-clone-format 1 rbd/test1/image3@1 rbd/test1/image4
+    rbd rm rbd/test1/image4
+    rbd snap unprotect rbd/test1/image3@1
+    rbd snap rm rbd/test1/image3@1
+    rbd rm rbd/test1/image3
+
     rbd create $RBD_CREATE_ARGS --size 1G --namespace test1 image2
     expect_fail rbd namespace remove rbd/test1
 
diff --git a/ceph/qa/workunits/rbd/krbd_udev_enumerate.sh b/ceph/qa/workunits/rbd/krbd_udev_enumerate.sh
new file mode 100755 (executable)
index 0000000..494f958
--- /dev/null
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+# This is a test for https://tracker.ceph.com/issues/41036, but it also
+# triggers https://tracker.ceph.com/issues/41404 in some environments.
+
+set -ex
+
+function assert_exit_codes() {
+    declare -a pids=($@)
+
+    for pid in ${pids[@]}; do
+       wait $pid
+    done
+}
+
+function run_map() {
+    declare -a pids
+
+    for i in {1..300}; do
+        sudo rbd map img$i &
+        pids+=($!)
+    done
+
+    assert_exit_codes ${pids[@]}
+    [[ $(rbd showmapped | wc -l) -eq 301 ]]
+}
+
+function run_unmap_by_dev() {
+    declare -a pids
+
+    run_map
+    for i in {0..299}; do
+        sudo rbd unmap /dev/rbd$i &
+        pids+=($!)
+    done
+
+    assert_exit_codes ${pids[@]}
+    [[ $(rbd showmapped | wc -l) -eq 0 ]]
+}
+
+function run_unmap_by_spec() {
+    declare -a pids
+
+    run_map
+    for i in {1..300}; do
+        sudo rbd unmap img$i &
+        pids+=($!)
+    done
+
+    assert_exit_codes ${pids[@]}
+    [[ $(rbd showmapped | wc -l) -eq 0 ]]
+}
+
+# Can't test with exclusive-lock, don't bother enabling deep-flatten.
+# See https://tracker.ceph.com/issues/42492.
+for i in {1..300}; do
+    rbd create --size 1 --image-feature '' img$i
+done
+
+for i in {1..30}; do
+    echo Iteration $i
+    run_unmap_by_dev
+    run_unmap_by_spec
+done
+
+echo OK
diff --git a/ceph/qa/workunits/rbd/krbd_udev_netlink_enobufs.sh b/ceph/qa/workunits/rbd/krbd_udev_netlink_enobufs.sh
new file mode 100755 (executable)
index 0000000..7c9c53a
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# This is a test for https://tracker.ceph.com/issues/41404, verifying that udev
+# events are properly reaped while the image is being (un)mapped in the kernel.
+# UDEV_BUF_SIZE is 1M (giving us a 2M socket receive buffer), but modprobe +
+# modprobe -r generate ~28M worth of "block" events.
+
+set -ex
+
+rbd create --size 1 img
+
+ceph osd pause
+sudo rbd map img &
+PID=$!
+sudo modprobe scsi_debug max_luns=16 add_host=16 num_parts=1 num_tgts=16
+sudo udevadm settle
+sudo modprobe -r scsi_debug
+[[ $(rbd showmapped | wc -l) -eq 0 ]]
+ceph osd unpause
+wait $PID
+[[ $(rbd showmapped | wc -l) -eq 2 ]]
+sudo rbd unmap img
+
+echo OK
index 80d7b5deafd967651635eb7a9b3bf028808b0ac7..e534f537bcb2a92f0439e268d303ec8bfe69a8b9 100755 (executable)
@@ -305,6 +305,35 @@ for i in ${image2} ${image4}; do
   compare_images ${POOL} ${i}
 done
 
+testlog "TEST: remove mirroring pool"
+pool=pool_to_remove
+for cluster in ${CLUSTER1} ${CLUSTER2}; do
+    CEPH_ARGS='' ceph --cluster ${cluster} osd pool create ${pool} 16 16
+    CEPH_ARGS='' rbd --cluster ${cluster} pool init ${pool}
+    rbd --cluster ${cluster} mirror pool enable ${pool} pool
+done
+rbd --cluster ${CLUSTER1} mirror pool peer add ${pool} ${CLUSTER2}
+rbd --cluster ${CLUSTER2} mirror pool peer add ${pool} ${CLUSTER1}
+rdp_image=test_remove_data_pool
+create_image ${CLUSTER2} ${pool} ${image} 128
+create_image ${CLUSTER2} ${POOL} ${rdp_image} 128 --data-pool ${pool}
+write_image ${CLUSTER2} ${pool} ${image} 100
+write_image ${CLUSTER2} ${POOL} ${rdp_image} 100
+wait_for_replay_complete ${CLUSTER1} ${CLUSTER2} ${pool} ${image}
+wait_for_status_in_pool_dir ${CLUSTER1} ${pool} ${image} 'up+replaying' 'master_position'
+wait_for_replay_complete ${CLUSTER1} ${CLUSTER2} ${POOL} ${rdp_image}
+wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${rdp_image} 'up+replaying' 'master_position'
+for cluster in ${CLUSTER1} ${CLUSTER2}; do
+    CEPH_ARGS='' ceph --cluster ${cluster} osd pool rm ${pool} ${pool} --yes-i-really-really-mean-it
+done
+remove_image_retry ${CLUSTER2} ${POOL} ${rdp_image}
+wait_for_image_present ${CLUSTER1} ${POOL} ${rdp_image} 'deleted'
+for i in 0 1 2 4 8 8 8 8 16 16; do
+    sleep $i
+    admin_daemons "${CLUSTER2}" rbd mirror status ${pool}/${image} || break
+done
+admin_daemons "${CLUSTER2}" rbd mirror status ${pool}/${image} && false
+
 testlog "TEST: snapshot rename"
 snap_name='snap_rename'
 create_snapshot ${CLUSTER2} ${POOL} ${image2} "${snap_name}_0"
diff --git a/ceph/qa/workunits/rbd/rbd_mirror_bootstrap.sh b/ceph/qa/workunits/rbd/rbd_mirror_bootstrap.sh
new file mode 100755 (executable)
index 0000000..05352f3
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh -ex
+#
+# rbd_mirror_bootstrap.sh - test peer bootstrap create/import
+#
+
+RBD_MIRROR_MANUAL_PEERS=1
+RBD_MIRROR_INSTANCES=${RBD_MIRROR_INSTANCES:-1}
+. $(dirname $0)/rbd_mirror_helpers.sh
+
+setup
+
+testlog "TEST: bootstrap cluster2 from cluster1"
+# create token on cluster1 and import to cluster2
+TOKEN=${TEMPDIR}/peer-token
+TOKEN_2=${TEMPDIR}/peer-token-2
+rbd --cluster ${CLUSTER1} mirror pool peer bootstrap create ${POOL} > ${TOKEN}
+rbd --cluster ${CLUSTER1} mirror pool peer bootstrap create ${PARENT_POOL} > ${TOKEN_2}
+cmp ${TOKEN} ${TOKEN_2}
+
+rbd --cluster ${CLUSTER2} --pool ${POOL} mirror pool peer bootstrap import ${TOKEN} --direction rx-only
+rbd --cluster ${CLUSTER2} --pool ${PARENT_POOL} mirror pool peer bootstrap import ${TOKEN} --direction rx-tx
+
+start_mirrors ${CLUSTER1}
+start_mirrors ${CLUSTER2}
+
+testlog "TEST: verify rx-only direction"
+[ "$(rbd --cluster ${CLUSTER1} --pool ${POOL} mirror pool info --format xml |
+       ${XMLSTARLET} sel -t -v  '//mirror/peers/peer[1]/uuid')" = "" ]
+
+create_image ${CLUSTER1} ${POOL} image1
+
+wait_for_image_replay_started ${CLUSTER2} ${POOL} image1
+write_image ${CLUSTER1} ${POOL} image1 100
+wait_for_replay_complete ${CLUSTER2} ${CLUSTER1} ${POOL} image1
+
+testlog "TEST: verify rx-tx direction"
+create_image ${CLUSTER1} ${PARENT_POOL} image1
+create_image ${CLUSTER2} ${PARENT_POOL} image2
+
+enable_mirror ${CLUSTER1} ${PARENT_POOL} image1
+enable_mirror ${CLUSTER2} ${PARENT_POOL} image2
+
+wait_for_image_replay_started ${CLUSTER2} ${PARENT_POOL} image1
+write_image ${CLUSTER1} ${PARENT_POOL} image1 100
+wait_for_replay_complete ${CLUSTER2} ${CLUSTER1} ${PARENT_POOL} image1
+
+wait_for_image_replay_started ${CLUSTER1} ${PARENT_POOL} image2
+write_image ${CLUSTER2} ${PARENT_POOL} image2 100
+wait_for_replay_complete ${CLUSTER1} ${CLUSTER2} ${PARENT_POOL} image2
index 9d5c3c8fff4b465adebdc76f245d0fe8e69175d1..fcd5b38b2c09956730074c82c9d3b3c393208454 100755 (executable)
@@ -257,26 +257,28 @@ setup_pools()
     rbd --cluster ${cluster} mirror pool enable ${POOL} pool
     rbd --cluster ${cluster} mirror pool enable ${PARENT_POOL} image
 
-    if [ -z ${RBD_MIRROR_CONFIG_KEY} ]; then
-      rbd --cluster ${cluster} mirror pool peer add ${POOL} ${remote_cluster}
-      rbd --cluster ${cluster} mirror pool peer add ${PARENT_POOL} ${remote_cluster}
-    else
-      mon_map_file=${TEMPDIR}/${remote_cluster}.monmap
-      ceph --cluster ${remote_cluster} mon getmap > ${mon_map_file}
-      mon_addr=$(monmaptool --print ${mon_map_file} | grep -E 'mon\.' |
-        head -n 1 | sed -E 's/^[0-9]+: ([^ ]+).+$/\1/' | sed -E 's/\/[0-9]+//g')
-
-      admin_key_file=${TEMPDIR}/${remote_cluster}.client.${CEPH_ID}.key
-      CEPH_ARGS='' ceph --cluster ${remote_cluster} auth get-key client.${CEPH_ID} > ${admin_key_file}
-
-      rbd --cluster ${cluster} mirror pool peer add ${POOL} client.${CEPH_ID}@${remote_cluster}-DNE \
-          --remote-mon-host "${mon_addr}" --remote-key-file ${admin_key_file}
-
-      uuid=$(rbd --cluster ${cluster} mirror pool peer add ${PARENT_POOL} client.${CEPH_ID}@${remote_cluster}-DNE)
-      rbd --cluster ${cluster} mirror pool peer set ${PARENT_POOL} ${uuid} mon-host ${mon_addr}
-      rbd --cluster ${cluster} mirror pool peer set ${PARENT_POOL} ${uuid} key-file ${admin_key_file}
-
-      PEER_CLUSTER_SUFFIX=-DNE
+    if [ -z ${RBD_MIRROR_MANUAL_PEERS} ]; then
+      if [ -z ${RBD_MIRROR_CONFIG_KEY} ]; then
+        rbd --cluster ${cluster} mirror pool peer add ${POOL} ${remote_cluster}
+        rbd --cluster ${cluster} mirror pool peer add ${PARENT_POOL} ${remote_cluster}
+      else
+        mon_map_file=${TEMPDIR}/${remote_cluster}.monmap
+        ceph --cluster ${remote_cluster} mon getmap > ${mon_map_file}
+        mon_addr=$(monmaptool --print ${mon_map_file} | grep -E 'mon\.' |
+          head -n 1 | sed -E 's/^[0-9]+: ([^ ]+).+$/\1/' | sed -E 's/\/[0-9]+//g')
+
+        admin_key_file=${TEMPDIR}/${remote_cluster}.client.${CEPH_ID}.key
+        CEPH_ARGS='' ceph --cluster ${remote_cluster} auth get-key client.${CEPH_ID} > ${admin_key_file}
+
+        rbd --cluster ${cluster} mirror pool peer add ${POOL} client.${CEPH_ID}@${remote_cluster}-DNE \
+            --remote-mon-host "${mon_addr}" --remote-key-file ${admin_key_file}
+
+        uuid=$(rbd --cluster ${cluster} mirror pool peer add ${PARENT_POOL} client.${CEPH_ID}@${remote_cluster}-DNE)
+        rbd --cluster ${cluster} mirror pool peer set ${PARENT_POOL} ${uuid} mon-host ${mon_addr}
+        rbd --cluster ${cluster} mirror pool peer set ${PARENT_POOL} ${uuid} key-file ${admin_key_file}
+
+        PEER_CLUSTER_SUFFIX=-DNE
+      fi
     fi
 }
 
@@ -680,7 +682,7 @@ test_status_in_pool_dir()
     local description_pattern="$5"
     local service_pattern="$6"
 
-    local status_log=${TEMPDIR}/${cluster}-${image}.mirror_status
+    local status_log=${TEMPDIR}/${cluster}-${pool}-${image}.mirror_status
     rbd --cluster ${cluster} -p ${pool} mirror image status ${image} |
        tee ${status_log} >&2
     grep "state: .*${state_pattern}" ${status_log} || return 1
@@ -694,7 +696,38 @@ test_status_in_pool_dir()
         grep "service: " ${status_log} && return 1
     fi
 
+    # recheck using `mirror pool status` command to stress test it.
+
+    local last_update="$(sed -nEe 's/^ *last_update: *(.*) *$/\1/p' ${status_log})"
+    test_mirror_pool_status_verbose \
+        ${cluster} ${pool} ${image} "${state_pattern}" "${last_update}" &&
     return 0
+
+    echo "'mirror pool status' test failed" >&2
+    exit 1
+}
+
+test_mirror_pool_status_verbose()
+{
+    local cluster=$1
+    local pool=$2
+    local image=$3
+    local state_pattern="$4"
+    local prev_last_update="$5"
+
+    local status_log=${TEMPDIR}/${cluster}-${pool}.mirror_status
+
+    rbd --cluster ${cluster} mirror pool status ${pool} --verbose --format xml \
+        > ${status_log}
+
+    local last_update state
+    last_update=$($XMLSTARLET sel -t -v \
+        "//images/image[name='${image}']/last_update" < ${status_log})
+    state=$($XMLSTARLET sel -t -v \
+        "//images/image[name='${image}']/state" < ${status_log})
+
+    echo "${state}" | grep "${state_pattern}" ||
+    test "${last_update}" '>' "${prev_last_update}"
 }
 
 wait_for_status_in_pool_dir()
index ef3a0810828a2e641e0577d543582257dc036ec8..aa97a7083247e0edf3f5882bb4baffe43182d947 100644 (file)
@@ -1,2 +1,2 @@
-75f4de193b3ea58512f204623e6c5a16e6c1e1ba
-v14.2.4
+ad5bd132e1492173c85fda2cc863152730b16a92
+v14.2.5
index 4895e84df63fc8e75d18491c227b388d65aefc15..28ec9835f851dbae8d2085af5ec29c1708f24f6f 100644 (file)
@@ -625,6 +625,8 @@ add_subdirectory(bash_completion)
 add_subdirectory(client)
 
 if(WITH_LIBCEPHFS)
+  find_package(PkgConfig QUIET REQUIRED)
+  pkg_check_modules(CAPNG REQUIRED libcap-ng)
   set(libcephfs_srcs libcephfs.cc)
   add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs})
   target_link_libraries(cephfs PRIVATE client ceph-common
@@ -651,7 +653,9 @@ if(WITH_LIBCEPHFS)
   add_executable(ceph-syn ${ceph_syn_srcs})
   target_link_libraries(ceph-syn client global-static ceph-common)
   install(TARGETS ceph-syn DESTINATION bin)
-  add_subdirectory(mount)
+  if(LINUX)
+    add_subdirectory(mount)
+  endif()
 endif(WITH_LIBCEPHFS)
 
 if(WITH_FUSE)
index 94a9b7a0eb3b95c7872b916aa4696e603add8db7..abdb2f2cc474b52c813702da439d3c21a85f6e85 100644 (file)
@@ -128,7 +128,13 @@ int CephxClientHandler::handle_response(
 
   if (starting) {
     CephXServerChallenge ch;
-    decode(ch, indata);
+    try {
+      decode(ch, indata);
+    } catch (buffer::error& e) {
+      ldout(cct, 1) << __func__ << " failed to decode CephXServerChallenge: "
+                   << e.what() << dendl;
+      return -EPERM;
+    }
     server_challenge = ch.server_challenge;
     ldout(cct, 10) << " got initial server challenge "
                   << std::hex << server_challenge << std::dec << dendl;
@@ -139,7 +145,13 @@ int CephxClientHandler::handle_response(
   }
 
   struct CephXResponseHeader header;
-  decode(header, indata);
+  try {
+    decode(header, indata);
+  } catch (buffer::error& e) {
+    ldout(cct, 1) << __func__ << " failed to decode CephXResponseHeader: "
+                 << e.what() << dendl;
+    return -EPERM;
+  }
 
   switch (header.request_type) {
   case CEPHX_GET_AUTH_SESSION_KEY:
@@ -159,8 +171,14 @@ int CephxClientHandler::handle_response(
       ldout(cct, 10) << " want=" << want << " need=" << need << " have=" << have << dendl;
       if (!indata.end()) {
        bufferlist cbl, extra_tickets;
-       decode(cbl, indata);
-       decode(extra_tickets, indata);
+       try {
+         decode(cbl, indata);
+         decode(extra_tickets, indata);
+       } catch (buffer::error& e) {
+         ldout(cct, 1) << __func__ << " failed to decode tickets: "
+                       << e.what() << dendl;
+         return -EPERM;
+       }
        ldout(cct, 10) << " got connection bl " << cbl.length()
                       << " and extra tickets " << extra_tickets.length()
                       << dendl;
index 6254d8f3c1e6da096c9362e8e09ce150022ec3e0..5d44d847dc26ddb536a93658737d085fa8173901 100644 (file)
@@ -37,9 +37,9 @@ void cephx_calc_client_server_challenge(CephContext *cct, CryptoKey& secret, uin
     return;
 
   uint64_t k = 0;
-  const uint64_t *p = (const uint64_t *)enc.c_str();
+  const ceph_le64 *p = (const ceph_le64 *)enc.c_str();
   for (int pos = 0; pos + sizeof(k) <= enc.length(); pos+=sizeof(k), p++)
-    k ^= mswab(*p);
+    k ^= *p;
   *key = k;
 }
 
@@ -149,50 +149,59 @@ bool CephXTicketHandler::verify_service_ticket_reply(
   CryptoKey& secret,
   bufferlist::const_iterator& indata)
 {
-  __u8 service_ticket_v;
-  decode(service_ticket_v, indata);
-
-  CephXServiceTicket msg_a;
-  std::string error;
-  if (decode_decrypt(cct, msg_a, secret, indata, error)) {
-    ldout(cct, 0) << "verify_service_ticket_reply: failed decode_decrypt, error is: " << error << dendl;
-    return false;
-  }
-  
-  __u8 ticket_enc;
-  decode(ticket_enc, indata);
+  try {
+    __u8 service_ticket_v;
+    decode(service_ticket_v, indata);
 
-  bufferlist service_ticket_bl;
-  if (ticket_enc) {
-    ldout(cct, 10) << " got encrypted ticket" << dendl;
+    CephXServiceTicket msg_a;
     std::string error;
-    if (decode_decrypt(cct, service_ticket_bl, session_key, indata, error)) {
-      ldout(cct, 10) << "verify_service_ticket_reply: decode_decrypt failed "
-           << "with " << error << dendl;
+    if (decode_decrypt(cct, msg_a, secret, indata, error)) {
+      ldout(cct, 0) << __func__ << " failed decode_decrypt, error is: " << error
+                   << dendl;
       return false;
     }
-  } else {
-    decode(service_ticket_bl, indata);
-  }
-  auto iter = service_ticket_bl.cbegin();
-  decode(ticket, iter);
-  ldout(cct, 10) << " ticket.secret_id=" <<  ticket.secret_id << dendl;
-
-  ldout(cct, 10) << "verify_service_ticket_reply service " << ceph_entity_type_name(service_id)
-          << " secret_id " << ticket.secret_id
-          << " session_key " << msg_a.session_key
-           << " validity=" << msg_a.validity << dendl;
-  session_key = msg_a.session_key;
-  if (!msg_a.validity.is_zero()) {
-    expires = ceph_clock_now();
-    expires += msg_a.validity;
-    renew_after = expires;
-    renew_after -= ((double)msg_a.validity.sec() / 4);
-    ldout(cct, 10) << "ticket expires=" << expires << " renew_after=" << renew_after << dendl;
-  }
   
-  have_key_flag = true;
-  return true;
+    __u8 ticket_enc;
+    decode(ticket_enc, indata);
+
+    bufferlist service_ticket_bl;
+    if (ticket_enc) {
+      ldout(cct, 10) << __func__ << " got encrypted ticket" << dendl;
+      std::string error;
+      if (decode_decrypt(cct, service_ticket_bl, session_key, indata, error)) {
+       ldout(cct, 10) << __func__ << " decode_decrypt failed "
+                      << "with " << error << dendl;
+       return false;
+      }
+    } else {
+      decode(service_ticket_bl, indata);
+    }
+    auto iter = service_ticket_bl.cbegin();
+    decode(ticket, iter);
+    ldout(cct, 10) << __func__ << " ticket.secret_id=" <<  ticket.secret_id
+                  << dendl;
+
+    ldout(cct, 10) << __func__ << " service "
+                  << ceph_entity_type_name(service_id)
+                  << " secret_id " << ticket.secret_id
+                  << " session_key " << msg_a.session_key
+                  << " validity=" << msg_a.validity << dendl;
+    session_key = msg_a.session_key;
+    if (!msg_a.validity.is_zero()) {
+      expires = ceph_clock_now();
+      expires += msg_a.validity;
+      renew_after = expires;
+      renew_after -= ((double)msg_a.validity.sec() / 4);
+      ldout(cct, 10) << __func__ << " ticket expires=" << expires
+                    << " renew_after=" << renew_after << dendl;
+    }
+
+    have_key_flag = true;
+    return true;
+  } catch (buffer::error& e) {
+    ldout(cct, 1) << __func__ << " decode error: " << e.what() << dendl;
+    return false;
+  }
 }
 
 bool CephXTicketHandler::have_key()
@@ -269,15 +278,24 @@ bool CephXTicketManager::verify_service_ticket_reply(CryptoKey& secret,
                                                     bufferlist::const_iterator& indata)
 {
   __u8 service_ticket_reply_v;
-  decode(service_ticket_reply_v, indata);
-
   uint32_t num;
-  decode(num, indata);
+  try {
+    decode(service_ticket_reply_v, indata);
+    decode(num, indata);
+  } catch (buffer::error& e) {
+    ldout(cct, 10) << __func__ << " failed to decode ticket v or count: "
+                  << e.what() << dendl;
+  }
   ldout(cct, 10) << "verify_service_ticket_reply got " << num << " keys" << dendl;
 
   for (int i=0; i<(int)num; i++) {
     uint32_t type;
-    decode(type, indata);
+    try {
+      decode(type, indata);
+    } catch (buffer::error& e) {
+      ldout(cct, 10) << __func__ << " failed to decode ticket type: " << e.what()
+                    << dendl;
+    }
     ldout(cct, 10) << "got key for service_id " << ceph_entity_type_name(type) << dendl;
     CephXTicketHandler& handler = get_handler(type);
     if (!handler.verify_service_ticket_reply(secret, indata)) {
index 12bb8348f44c5637657e1522c80611fbe83a9b10..2ab0602e25f61cb56416e34d18aa5be29c60946f 100644 (file)
@@ -61,7 +61,13 @@ int CephxServiceHandler::handle_request(
   int ret = 0;
 
   struct CephXRequestHeader cephx_header;
-  decode(cephx_header, indata);
+  try {
+    decode(cephx_header, indata);
+  } catch (buffer::error& e) {
+    ldout(cct, 0) << __func__ << " failed to decode CephXRequestHeader: "
+                 << e.what() << dendl;
+    return -EPERM;
+  }
 
   switch (cephx_header.request_type) {
   case CEPHX_GET_AUTH_SESSION_KEY:
@@ -70,7 +76,14 @@ int CephxServiceHandler::handle_request(
                     << entity_name << dendl;
 
       CephXAuthenticate req;
-      decode(req, indata);
+      try {
+       decode(req, indata);
+      } catch (buffer::error& e) {
+       ldout(cct, 0) << __func__ << " failed to decode CephXAuthenticate: "
+                     << e.what() << dendl;
+       ret = -EPERM;
+       break;
+      }
 
       CryptoKey secret;
       if (!key_server->get_secret(entity_name, secret)) {
@@ -234,7 +247,15 @@ int CephxServiceHandler::handle_request(
       }
 
       CephXServiceTicketRequest ticket_req;
-      decode(ticket_req, indata);
+      try {
+       decode(ticket_req, indata);
+      } catch (buffer::error& e) {
+       ldout(cct, 0) << __func__
+                     << " failed to decode CephXServiceTicketRequest: "
+                     << e.what() << dendl;
+       ret = -EPERM;
+       break;
+      }
       ldout(cct, 10) << " ticket_req.keys = " << ticket_req.keys << dendl;
 
       ret = 0;
index 16c1251841601811db4fc1422f5eb5ab803fe58e..83069f2851252911d2f0772083d68be5723463bf 100644 (file)
@@ -37,16 +37,16 @@ int CephxSessionHandler::_calc_signature(Message *m, uint64_t *psig)
     // - skip the leading 4 byte wrapper from encode_encrypt
     struct {
       __u8 v;
-      __le64 magic;
-      __le32 len;
-      __le32 header_crc;
-      __le32 front_crc;
-      __le32 middle_crc;
-      __le32 data_crc;
+      ceph_le64 magic;
+      ceph_le32 len;
+      ceph_le32 header_crc;
+      ceph_le32 front_crc;
+      ceph_le32 middle_crc;
+      ceph_le32 data_crc;
     } __attribute__ ((packed)) sigblock = {
-      1, mswab(AUTH_ENC_MAGIC), mswab<uint32_t>(4*4),
-      mswab<uint32_t>(header.crc), mswab<uint32_t>(footer.front_crc),
-      mswab<uint32_t>(footer.middle_crc), mswab<uint32_t>(footer.data_crc)
+      1, init_le64(AUTH_ENC_MAGIC), init_le32(4*4),
+      init_le32(header.crc), init_le32(footer.front_crc),
+      init_le32(footer.middle_crc), init_le32(footer.data_crc)
     };
 
     char exp_buf[CryptoKey::get_max_outbuf_size(sizeof(sigblock))];
@@ -66,27 +66,27 @@ int CephxSessionHandler::_calc_signature(Message *m, uint64_t *psig)
       return -1;
     }
 
-    *psig = *reinterpret_cast<__le64*>(exp_buf);
+    *psig = *reinterpret_cast<ceph_le64*>(exp_buf);
   } else {
     // newer mimic+ signatures
     struct {
-      __le32 header_crc;
-      __le32 front_crc;
-      __le32 front_len;
-      __le32 middle_crc;
-      __le32 middle_len;
-      __le32 data_crc;
-      __le32 data_len;
-      __le32 seq_lower_word;
+      ceph_le32 header_crc;
+      ceph_le32 front_crc;
+      ceph_le32 front_len;
+      ceph_le32 middle_crc;
+      ceph_le32 middle_len;
+      ceph_le32 data_crc;
+      ceph_le32 data_len;
+      ceph_le32 seq_lower_word;
     } __attribute__ ((packed)) sigblock = {
-      mswab<uint32_t>(header.crc),
-      mswab<uint32_t>(footer.front_crc),
-      mswab<uint32_t>(header.front_len),
-      mswab<uint32_t>(footer.middle_crc),
-      mswab<uint32_t>(header.middle_len),
-      mswab<uint32_t>(footer.data_crc),
-      mswab<uint32_t>(header.data_len),
-      mswab<uint32_t>(header.seq)
+      init_le32(header.crc),
+      init_le32(footer.front_crc),
+      init_le32(header.front_len),
+      init_le32(footer.middle_crc),
+      init_le32(header.middle_len),
+      init_le32(footer.data_crc),
+      init_le32(header.data_len),
+      init_le32(header.seq)
     };
 
     char exp_buf[CryptoKey::get_max_outbuf_size(sizeof(sigblock))];
@@ -107,7 +107,7 @@ int CephxSessionHandler::_calc_signature(Message *m, uint64_t *psig)
     }
 
     struct enc {
-      __le64 a, b, c, d;
+      ceph_le64 a, b, c, d;
     } *penc = reinterpret_cast<enc*>(exp_buf);
     *psig = penc->a ^ penc->b ^ penc->c ^ penc->d;
   }
index 5bfb50c474b87050e5b314e396811bda2e242e50..e5f08acb71a571a4ab68696bf13c9c033a2befef 100755 (executable)
@@ -5,6 +5,7 @@
 import argparse
 import logging
 import os
+import socket
 import subprocess
 import sys
 import time
@@ -12,6 +13,9 @@ import time
 logging.basicConfig(level=logging.INFO)
 log = logging.getLogger(__name__)
 
+auth_names = ['client.crash.%s' % socket.gethostname(),
+              'client.crash',
+              'client.admin']
 
 def parse_args():
     parser = argparse.ArgumentParser()
@@ -22,22 +26,31 @@ def parse_args():
         '-d', '--delay', default=10.0, type=float,
         help='minutes to delay between scans (0 to exit after one)',
     )
+    parser.add_argument(
+        '--name', '-n',
+        help='ceph name to authenticate as (default: try client.crash, client.admin)')
     return parser.parse_args()
 
 
 def post_crash(path):
-    pr = subprocess.Popen(
-        args=['timeout', '30', 'ceph', 'crash', 'post', '-i', '-'],
-        stdin=subprocess.PIPE,
-        stdout=subprocess.PIPE,
-        stderr=subprocess.PIPE,
-    )
-    f = open(os.path.join(path, 'meta'), 'r')
-    stdout, stderr = pr.communicate(input=f.read())
-    rc = pr.wait()
-    f.close()
-    if rc != 0:
-        log.warning('post %s failed: %s' % (path, stderr))
+    rc = 0
+    for n in auth_names:
+        pr = subprocess.Popen(
+            args=['timeout', '30', 'ceph',
+                  '-n', n,
+                  'crash', 'post', '-i', '-'],
+            stdin=subprocess.PIPE,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE,
+        )
+        f = open(os.path.join(path, 'meta'), 'rb')
+        stdout, stderr = pr.communicate(input=f.read())
+        rc = pr.wait()
+        f.close()
+        if rc != 0:
+            log.warning('post %s as %s failed: %s' % (path, n, stderr))
+        if rc == 0:
+            break
     return rc
 
 
@@ -66,6 +79,8 @@ def scrape_path(path):
 def main():
     args = parse_args()
     postdir = os.path.join(args.path, 'posted')
+    if args.name:
+        auth_names = [args.name]
 
     while not os.path.isdir(postdir):
         log.error("directory %s does not exist; please create" % postdir)
index cce8a302cba1ca30743769ba6008993629444513..b6661522e342271a8b25cfa4b24c8dd9ab05d099 100644 (file)
@@ -267,61 +267,11 @@ def dmsetup_splitname(dev):
     return _splitname_parser(out)
 
 
-def is_lv(dev, lvs=None):
-    """
-    Boolean to detect if a device is an LV or not.
-    """
-    splitname = dmsetup_splitname(dev)
-    # Allowing to optionally pass `lvs` can help reduce repetitive checks for
-    # multiple devices at once.
-    lvs = lvs if lvs is not None else Volumes()
-    if splitname.get('LV_NAME'):
-        lvs.filter(lv_name=splitname['LV_NAME'], vg_name=splitname['VG_NAME'])
-        return len(lvs) > 0
-    return False
-
-
-def get_api_vgs():
-    """
-    Return the list of group volumes available in the system using flags to
-    include common metadata associated with them
-
-    Command and sample delimited output should look like::
-
-        $ vgs --noheadings --units=g --readonly --separator=';' \
-          -o vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free
-          ubuntubox-vg;1;2;0;wz--n-;299.52g;12.00m
-          osd_vg;3;1;0;wz--n-;29.21g;9.21g
-
-    To normalize sizing, the units are forced in 'g' which is equivalent to
-    gigabytes, which uses multiples of 1024 (as opposed to 1000)
-    """
-    fields = 'vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free,vg_free_count'
-    stdout, stderr, returncode = process.call(
-        ['vgs', '--noheadings', '--readonly', '--units=g', '--separator=";"', '-o', fields],
-        verbose_on_failure=False
-    )
-    return _output_parser(stdout, fields)
-
-
-def get_api_lvs():
-    """
-    Return the list of logical volumes available in the system using flags to include common
-    metadata associated with them
-
-    Command and delimited output should look like::
-
-        $ lvs --noheadings --readonly --separator=';' -a -o lv_tags,lv_path,lv_name,vg_name
-          ;/dev/ubuntubox-vg/root;root;ubuntubox-vg
-          ;/dev/ubuntubox-vg/swap_1;swap_1;ubuntubox-vg
-
-    """
-    fields = 'lv_tags,lv_path,lv_name,vg_name,lv_uuid,lv_size'
-    stdout, stderr, returncode = process.call(
-        ['lvs', '--noheadings', '--readonly', '--separator=";"', '-a', '-o', fields],
-        verbose_on_failure=False
-    )
-    return _output_parser(stdout, fields)
+####################################
+#
+# Code for LVM Physical Volumes
+#
+################################
 
 
 def get_api_pvs():
@@ -348,51 +298,161 @@ def get_api_pvs():
     return _output_parser(stdout, fields)
 
 
-def get_lv_from_argument(argument):
+class PVolume(object):
     """
-    Helper proxy function that consumes a possible logical volume passed in from the CLI
-    in the form of `vg/lv`, but with some validation so that an argument that is a full
-    path to a device can be ignored
+    Represents a Physical Volume from LVM, with some top-level attributes like
+    ``pv_name`` and parsed tags as a dictionary of key/value pairs.
     """
-    if argument.startswith('/'):
-        lv = get_lv(lv_path=argument)
-        return lv
-    try:
-        vg_name, lv_name = argument.split('/')
-    except (ValueError, AttributeError):
-        return None
-    return get_lv(lv_name=lv_name, vg_name=vg_name)
 
+    def __init__(self, **kw):
+        for k, v in kw.items():
+            setattr(self, k, v)
+        self.pv_api = kw
+        self.name = kw['pv_name']
+        self.tags = parse_tags(kw['pv_tags'])
 
-def get_lv(lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-    """
-    Return a matching lv for the current system, requiring ``lv_name``,
-    ``vg_name``, ``lv_path`` or ``tags``. Raises an error if more than one lv
-    is found.
+    def __str__(self):
+        return '<%s>' % self.pv_api['pv_name']
 
-    It is useful to use ``tags`` when trying to find a specific logical volume,
-    but it can also lead to multiple lvs being found, since a lot of metadata
-    is shared between lvs of a distinct OSD.
-    """
-    if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-        return None
-    lvs = Volumes()
-    return lvs.get(
-        lv_name=lv_name, vg_name=vg_name, lv_path=lv_path, lv_uuid=lv_uuid,
-        lv_tags=lv_tags
-    )
+    def __repr__(self):
+        return self.__str__()
+
+    def set_tags(self, tags):
+        """
+        :param tags: A dictionary of tag names and values, like::
+
+            {
+                "ceph.osd_fsid": "aaa-fff-bbbb",
+                "ceph.osd_id": "0"
+            }
+
+        At the end of all modifications, the tags are refreshed to reflect
+        LVM's most current view.
+        """
+        for k, v in tags.items():
+            self.set_tag(k, v)
+        # after setting all the tags, refresh them for the current object, use the
+        # pv_* identifiers to filter because those shouldn't change
+        pv_object = get_pv(pv_name=self.pv_name, pv_uuid=self.pv_uuid)
+        self.tags = pv_object.tags
+
+    def set_tag(self, key, value):
+        """
+        Set the key/value pair as an LVM tag. Does not "refresh" the values of
+        the current object for its tags. Meant to be a "fire and forget" type
+        of modification.
+
+        **warning**: Altering tags on a PV has to be done ensuring that the
+        device is actually the one intended. ``pv_name`` is *not* a persistent
+        value, only ``pv_uuid`` is. Using ``pv_uuid`` is the best way to make
+        sure the device getting changed is the one needed.
+        """
+        # remove it first if it exists
+        if self.tags.get(key):
+            current_value = self.tags[key]
+            tag = "%s=%s" % (key, current_value)
+            process.call(['pvchange', '--deltag', tag, self.pv_name])
+
+        process.call(
+            [
+                'pvchange',
+                '--addtag', '%s=%s' % (key, value), self.pv_name
+            ]
+        )
 
 
-def get_pv(pv_name=None, pv_uuid=None, pv_tags=None):
+class PVolumes(list):
     """
-    Return a matching pv (physical volume) for the current system, requiring
-    ``pv_name``, ``pv_uuid``, or ``pv_tags``. Raises an error if more than one
-    pv is found.
+    A list of all known (physical) volumes for the current system, with the ability
+    to filter them via keyword arguments.
     """
-    if not any([pv_name, pv_uuid, pv_tags]):
-        return None
-    pvs = PVolumes()
-    return pvs.get(pv_name=pv_name, pv_uuid=pv_uuid, pv_tags=pv_tags)
+
+    def __init__(self, populate=True):
+        if populate:
+            self._populate()
+
+    def _populate(self):
+        # get all the pvs in the current system
+        for pv_item in get_api_pvs():
+            self.append(PVolume(**pv_item))
+
+    def _purge(self):
+        """
+        Deplete all the items in the list, used internally only so that we can
+        dynamically allocate the items when filtering without the concern of
+        messing up the contents
+        """
+        self[:] = []
+
+    def _filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
+        """
+        The actual method that filters using a new list. Useful so that other
+        methods that do not want to alter the contents of the list (e.g.
+        ``self.find``) can operate safely.
+        """
+        filtered = [i for i in self]
+        if pv_name:
+            filtered = [i for i in filtered if i.pv_name == pv_name]
+
+        if pv_uuid:
+            filtered = [i for i in filtered if i.pv_uuid == pv_uuid]
+
+        # at this point, `filtered` has either all the physical volumes in self
+        # or is an actual filtered list if any filters were applied
+        if pv_tags:
+            tag_filtered = []
+            for pvolume in filtered:
+                matches = all(pvolume.tags.get(k) == str(v) for k, v in pv_tags.items())
+                if matches:
+                    tag_filtered.append(pvolume)
+            # return the tag_filtered pvolumes here, the `filtered` list is no
+            # longer usable
+            return tag_filtered
+
+        return filtered
+
+    def filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
+        """
+        Filter out volumes on top level attributes like ``pv_name`` or by
+        ``pv_tags`` where a dict is required. For example, to find a physical
+        volume that has an OSD ID of 0, the filter would look like::
+
+            pv_tags={'ceph.osd_id': '0'}
+
+        """
+        if not any([pv_name, pv_uuid, pv_tags]):
+            raise TypeError('.filter() requires pv_name, pv_uuid, or pv_tags'
+                            '(none given)')
+
+        filtered_pvs = PVolumes(populate=False)
+        filtered_pvs.extend(self._filter(pv_name, pv_uuid, pv_tags))
+        return filtered_pvs
+
+    def get(self, pv_name=None, pv_uuid=None, pv_tags=None):
+        """
+        This is a bit expensive, since it will try to filter out all the
+        matching items in the list, filter them out applying anything that was
+        added and return the matching item.
+
+        This method does *not* alter the list, and it will raise an error if
+        multiple pvs are matched
+
+        It is useful to use ``tags`` when trying to find a specific logical volume,
+        but it can also lead to multiple pvs being found, since a lot of metadata
+        is shared between pvs of a distinct OSD.
+        """
+        if not any([pv_name, pv_uuid, pv_tags]):
+            return None
+        pvs = self._filter(
+            pv_name=pv_name,
+            pv_uuid=pv_uuid,
+            pv_tags=pv_tags
+        )
+        if not pvs:
+            return None
+        if len(pvs) > 1 and pv_tags:
+            raise MultiplePVsError(pv_name)
+        return pvs[0]
 
 
 def create_pv(device):
@@ -409,306 +469,195 @@ def create_pv(device):
     ])
 
 
-def create_vg(devices, name=None, name_prefix=None):
+def remove_pv(pv_name):
     """
-    Create a Volume Group. Command looks like::
+    Removes a physical volume using a double `-f` to prevent prompts and fully
+    remove anything related to LVM. This is tremendously destructive, but so is all other actions
+    when zapping a device.
 
-        vgcreate --force --yes group_name device
+    In the case where multiple PVs are found, it will ignore that fact and
+    continue with the removal, specifically in the case of messages like::
 
-    Once created the volume group is returned as a ``VolumeGroup`` object
+        WARNING: PV $UUID /dev/DEV-1 was already found on /dev/DEV-2
 
-    :param devices: A list of devices to create a VG. Optionally, a single
-                    device (as a string) can be used.
-    :param name: Optionally set the name of the VG, defaults to 'ceph-{uuid}'
-    :param name_prefix: Optionally prefix the name of the VG, which will get combined
-                        with a UUID string
+    These situations can be avoided with custom filtering rules, which this API
+    cannot handle while accommodating custom user filters.
     """
-    if isinstance(devices, set):
-        devices = list(devices)
-    if not isinstance(devices, list):
-        devices = [devices]
-    if name_prefix:
-        name = "%s-%s" % (name_prefix, str(uuid.uuid4()))
-    elif name is None:
-        name = "ceph-%s" % str(uuid.uuid4())
-    process.run([
-        'vgcreate',
-        '-s',
-        '1G',
-        '--force',
-        '--yes',
-        name] + devices
-    )
-
-    vg = get_vg(vg_name=name)
-    return vg
+    fail_msg = "Unable to remove vg %s" % pv_name
+    process.run(
+        [
+            'pvremove',
+            '-v',  # verbose
+            '-f',  # force it
+            '-f',  # force it
+            pv_name
+        ],
+        fail_msg=fail_msg,
+    )
 
 
-def extend_vg(vg, devices):
+def get_pv(pv_name=None, pv_uuid=None, pv_tags=None, pvs=None):
     """
-    Extend a Volume Group. Command looks like::
-
-        vgextend --force --yes group_name [device, ...]
+    Return a matching pv (physical volume) for the current system, requiring
+    ``pv_name``, ``pv_uuid``, or ``pv_tags``. Raises an error if more than one
+    pv is found.
+    """
+    if not any([pv_name, pv_uuid, pv_tags]):
+        return None
+    if pvs is None or len(pvs) == 0:
+        pvs = PVolumes()
 
-    Once created the volume group is extended and returned as a ``VolumeGroup`` object
+    return pvs.get(pv_name=pv_name, pv_uuid=pv_uuid, pv_tags=pv_tags)
 
-    :param vg: A VolumeGroup object
-    :param devices: A list of devices to extend the VG. Optionally, a single
-                    device (as a string) can be used.
-    """
-    if not isinstance(devices, list):
-        devices = [devices]
-    process.run([
-        'vgextend',
-        '--force',
-        '--yes',
-        vg.name] + devices
-    )
 
-    vg = get_vg(vg_name=vg.name)
-    return vg
+################################
+#
+# Code for LVM Volume Groups
+#
+#############################
 
 
-def reduce_vg(vg, devices):
+def get_api_vgs():
     """
-    Reduce a Volume Group. Command looks like::
+    Return the list of group volumes available in the system using flags to
+    include common metadata associated with them
 
-        vgreduce --force --yes group_name [device, ...]
+    Command and sample delimited output should look like::
 
-    :param vg: A VolumeGroup object
-    :param devices: A list of devices to remove from the VG. Optionally, a
-                    single device (as a string) can be used.
+        $ vgs --noheadings --units=g --readonly --separator=';' \
+          -o vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free
+          ubuntubox-vg;1;2;0;wz--n-;299.52g;12.00m
+          osd_vg;3;1;0;wz--n-;29.21g;9.21g
+
+    To normalize sizing, the units are forced in 'g' which is equivalent to
+    gigabytes, which uses multiples of 1024 (as opposed to 1000)
     """
-    if not isinstance(devices, list):
-        devices = [devices]
-    process.run([
-        'vgreduce',
-        '--force',
-        '--yes',
-        vg.name] + devices
+    fields = 'vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free,vg_free_count'
+    stdout, stderr, returncode = process.call(
+        ['vgs', '--noheadings', '--readonly', '--units=g', '--separator=";"', '-o', fields],
+        verbose_on_failure=False
     )
-
-    vg = get_vg(vg_name=vg.name)
-    return vg
+    return _output_parser(stdout, fields)
 
 
-def remove_vg(vg_name):
+class VolumeGroup(object):
     """
-    Removes a volume group.
+    Represents an LVM group, with some top-level attributes like ``vg_name``
     """
-    if not vg_name:
-        logger.warning('Skipping removal of invalid VG name: "%s"', vg_name)
-        return
-    fail_msg = "Unable to remove vg %s" % vg_name
-    process.run(
-        [
-            'vgremove',
-            '-v',  # verbose
-            '-f',  # force it
-            vg_name
-        ],
-        fail_msg=fail_msg,
-    )
 
+    def __init__(self, **kw):
+        for k, v in kw.items():
+            setattr(self, k, v)
+        self.name = kw['vg_name']
+        self.tags = parse_tags(kw.get('vg_tags', ''))
 
-def remove_pv(pv_name):
-    """
-    Removes a physical volume using a double `-f` to prevent prompts and fully
-    remove anything related to LVM. This is tremendously destructive, but so is all other actions
-    when zapping a device.
+    def __str__(self):
+        return '<%s>' % self.name
 
-    In the case where multiple PVs are found, it will ignore that fact and
-    continue with the removal, specifically in the case of messages like::
+    def __repr__(self):
+        return self.__str__()
 
-        WARNING: PV $UUID /dev/DEV-1 was already found on /dev/DEV-2
+    def _parse_size(self, size):
+        error_msg = "Unable to convert vg size to integer: '%s'" % str(size)
+        try:
+            integer, _ = size.split('g')
+        except ValueError:
+            logger.exception(error_msg)
+            raise RuntimeError(error_msg)
 
-    These situations can be avoided with custom filtering rules, which this API
-    cannot handle while accommodating custom user filters.
-    """
-    fail_msg = "Unable to remove vg %s" % pv_name
-    process.run(
-        [
-            'pvremove',
-            '-v',  # verbose
-            '-f',  # force it
-            '-f',  # force it
-            pv_name
-        ],
-        fail_msg=fail_msg,
-    )
+        return util.str_to_int(integer)
 
+    @property
+    def free(self):
+        """
+        Parse the available size in gigabytes from the ``vg_free`` attribute, that
+        will be a string with a character ('g') to indicate gigabytes in size.
+        Returns a rounded down integer to ease internal operations::
 
-def remove_lv(lv):
-    """
-    Removes a logical volume given it's absolute path.
+        >>> data_vg.vg_free
+        '0.01g'
+        >>> data_vg.size
+        0
+        """
+        return self._parse_size(self.vg_free)
 
-    Will return True if the lv is successfully removed or
-    raises a RuntimeError if the removal fails.
+    @property
+    def size(self):
+        """
+        Parse the size in gigabytes from the ``vg_size`` attribute, that
+        will be a string with a character ('g') to indicate gigabytes in size.
+        Returns a rounded down integer to ease internal operations::
 
-    :param lv: A ``Volume`` object or the path for an LV
-    """
-    if isinstance(lv, Volume):
-        path = lv.lv_path
-    else:
-        path = lv
+        >>> data_vg.vg_size
+        '1024.9g'
+        >>> data_vg.size
+        1024
+        """
+        return self._parse_size(self.vg_size)
 
-    stdout, stderr, returncode = process.call(
-        [
-            'lvremove',
-            '-v',  # verbose
-            '-f',  # force it
-            path
-        ],
-        show_command=True,
-        terminal_verbose=True,
-    )
-    if returncode != 0:
-        raise RuntimeError("Unable to remove %s" % path)
-    return True
+    def sizing(self, parts=None, size=None):
+        """
+        Calculate proper sizing to fully utilize the volume group in the most
+        efficient way possible. To prevent situations where LVM might accept
+        a percentage that is beyond the vg's capabilities, it will refuse with
+        an error when requesting a larger-than-possible parameter, in addition
+        to rounding down calculations.
 
+        A dictionary with different sizing parameters is returned, to make it
+        easier for others to choose what they need in order to create logical
+        volumes::
 
-def create_lv(name, group, extents=None, size=None, tags=None, uuid_name=False, pv=None):
-    """
-    Create a Logical Volume in a Volume Group. Command looks like::
+        >>> data_vg.free
+        1024
+        >>> data_vg.sizing(parts=4)
+        {'parts': 4, 'sizes': 256, 'percentages': 25}
+        >>> data_vg.sizing(size=512)
+        {'parts': 2, 'sizes': 512, 'percentages': 50}
 
-        lvcreate -L 50G -n gfslv vg0
 
-    ``name``, ``group``, are required. If ``size`` is provided it must follow
-    lvm's size notation (like 1G, or 20M). Tags are an optional dictionary and is expected to
-    conform to the convention of prefixing them with "ceph." like::
+        :param parts: Number of parts to create LVs from
+        :param size: Size in gigabytes to divide the VG into
 
-        {"ceph.block_device": "/dev/ceph/osd-1"}
+        :raises SizeAllocationError: When requested size cannot be allocated with
+        :raises ValueError: If both ``parts`` and ``size`` are given
+        """
+        if parts is not None and size is not None:
+            raise ValueError(
+                "Cannot process sizing with both parts (%s) and size (%s)" % (parts, size)
+            )
 
-    :param uuid_name: Optionally combine the ``name`` with UUID to ensure uniqueness
+        # if size is given we need to map that to extents so that we avoid
+        # issues when trying to get this right with a size in gigabytes find
+        # the percentage first, cheating, because these values are thrown out
+        vg_free_count = util.str_to_int(self.vg_free_count)
+
+        if size:
+            extents = int(size * vg_free_count / self.free)
+            disk_sizing = sizing(self.free, size=size, parts=parts)
+        else:
+            if parts is not None:
+                # Prevent parts being 0, falling back to 1 (100% usage)
+                parts = parts or 1
+            size = int(self.free / parts)
+            extents = size * vg_free_count / self.free
+            disk_sizing = sizing(self.free, parts=parts)
+
+        extent_sizing = sizing(vg_free_count, size=extents)
+
+        disk_sizing['extents'] = int(extents)
+        disk_sizing['percentages'] = extent_sizing['percentages']
+        return disk_sizing
+
+
+class VolumeGroups(list):
+    """
+    A list of all known volume groups for the current system, with the ability
+    to filter them via keyword arguments.
     """
-    if uuid_name:
-        name = '%s-%s' % (name, uuid.uuid4())
-    if tags is None:
-        tags = {
-            "ceph.osd_id": "null",
-            "ceph.type": "null",
-            "ceph.cluster_fsid": "null",
-            "ceph.osd_fsid": "null",
-        }
 
-    # XXX add CEPH_VOLUME_LVM_DEBUG to enable -vvvv on lv operations
-    type_path_tag = {
-        'journal': 'ceph.journal_device',
-        'data': 'ceph.data_device',
-        'block': 'ceph.block_device',
-        'wal': 'ceph.wal_device',
-        'db': 'ceph.db_device',
-        'lockbox': 'ceph.lockbox_device',  # XXX might not ever need this lockbox sorcery
-    }
-    if size:
-        command = [
-            'lvcreate',
-            '--yes',
-            '-L',
-            '%s' % size,
-            '-n', name, group
-        ]
-    elif extents:
-        command = [
-            'lvcreate',
-            '--yes',
-            '-l',
-            '%s' % extents,
-            '-n', name, group
-        ]
-    # create the lv with all the space available, this is needed because the
-    # system call is different for LVM
-    else:
-        command = [
-            'lvcreate',
-            '--yes',
-            '-l',
-            '100%FREE',
-            '-n', name, group
-        ]
-    if pv:
-        command.append(pv)
-    process.run(command)
-
-    lv = get_lv(lv_name=name, vg_name=group)
-    lv.set_tags(tags)
-
-    # when creating a distinct type, the caller doesn't know what the path will
-    # be so this function will set it after creation using the mapping
-    path_tag = type_path_tag.get(tags.get('ceph.type'))
-    if path_tag:
-        lv.set_tags(
-            {path_tag: lv.lv_path}
-        )
-    return lv
-
-
-def create_lvs(volume_group, parts=None, size=None, name_prefix='ceph-lv'):
-    """
-    Create multiple Logical Volumes from a Volume Group by calculating the
-    proper extents from ``parts`` or ``size``. A custom prefix can be used
-    (defaults to ``ceph-lv``), these names are always suffixed with a uuid.
-
-    LV creation in ceph-volume will require tags, this is expected to be
-    pre-computed by callers who know Ceph metadata like OSD IDs and FSIDs. It
-    will probably not be the case when mass-creating LVs, so common/default
-    tags will be set to ``"null"``.
-
-    .. note:: LVs that are not in use can be detected by querying LVM for tags that are
-              set to ``"null"``.
-
-    :param volume_group: The volume group (vg) to use for LV creation
-    :type group: ``VolumeGroup()`` object
-    :param parts: Number of LVs to create *instead of* ``size``.
-    :type parts: int
-    :param size: Size (in gigabytes) of LVs to create, e.g. "as many 10gb LVs as possible"
-    :type size: int
-    :param extents: The number of LVM extents to use to create the LV. Useful if looking to have
-    accurate LV sizes (LVM rounds sizes otherwise)
-    """
-    if parts is None and size is None:
-        # fallback to just one part (using 100% of the vg)
-        parts = 1
-    lvs = []
-    tags = {
-        "ceph.osd_id": "null",
-        "ceph.type": "null",
-        "ceph.cluster_fsid": "null",
-        "ceph.osd_fsid": "null",
-    }
-    sizing = volume_group.sizing(parts=parts, size=size)
-    for part in range(0, sizing['parts']):
-        size = sizing['sizes']
-        extents = sizing['extents']
-        lv_name = '%s-%s' % (name_prefix, uuid.uuid4())
-        lvs.append(
-            create_lv(lv_name, volume_group.name, extents=extents, tags=tags)
-        )
-    return lvs
-
-
-def get_vg(vg_name=None, vg_tags=None):
-    """
-    Return a matching vg for the current system, requires ``vg_name`` or
-    ``tags``. Raises an error if more than one vg is found.
-
-    It is useful to use ``tags`` when trying to find a specific volume group,
-    but it can also lead to multiple vgs being found.
-    """
-    if not any([vg_name, vg_tags]):
-        return None
-    vgs = VolumeGroups()
-    return vgs.get(vg_name=vg_name, vg_tags=vg_tags)
-
-
-class VolumeGroups(list):
-    """
-    A list of all known volume groups for the current system, with the ability
-    to filter them via keyword arguments.
-    """
-
-    def __init__(self):
-        self._populate()
+    def __init__(self, populate=True):
+        if populate:
+            self._populate()
 
     def _populate(self):
         # get all the vgs in the current system
@@ -760,15 +709,10 @@ class VolumeGroups(list):
         """
         if not any([vg_name, vg_tags]):
             raise TypeError('.filter() requires vg_name or vg_tags (none given)')
-        # first find the filtered volumes with the values in self
-        filtered_groups = self._filter(
-            vg_name=vg_name,
-            vg_tags=vg_tags
-        )
-        # then purge everything
-        self._purge()
-        # and add the filtered items
-        self.extend(filtered_groups)
+
+        filtered_vgs = VolumeGroups(populate=False)
+        filtered_vgs.extend(self._filter(vg_name, vg_tags))
+        return filtered_vgs
 
     def get(self, vg_name=None, vg_tags=None):
         """
@@ -797,318 +741,149 @@ class VolumeGroups(list):
         return vgs[0]
 
 
-class Volumes(list):
-    """
-    A list of all known (logical) volumes for the current system, with the ability
-    to filter them via keyword arguments.
+def create_vg(devices, name=None, name_prefix=None):
     """
+    Create a Volume Group. Command looks like::
 
-    def __init__(self):
-        self._populate()
+        vgcreate --force --yes group_name device
 
-    def _populate(self):
-        # get all the lvs in the current system
-        for lv_item in get_api_lvs():
-            self.append(Volume(**lv_item))
+    Once created the volume group is returned as a ``VolumeGroup`` object
 
-    def _purge(self):
-        """
-        Delete all the items in the list, used internally only so that we can
-        dynamically allocate the items when filtering without the concern of
-        messing up the contents
-        """
-        self[:] = []
+    :param devices: A list of devices to create a VG. Optionally, a single
+                    device (as a string) can be used.
+    :param name: Optionally set the name of the VG, defaults to 'ceph-{uuid}'
+    :param name_prefix: Optionally prefix the name of the VG, which will get combined
+                        with a UUID string
+    """
+    if isinstance(devices, set):
+        devices = list(devices)
+    if not isinstance(devices, list):
+        devices = [devices]
+    if name_prefix:
+        name = "%s-%s" % (name_prefix, str(uuid.uuid4()))
+    elif name is None:
+        name = "ceph-%s" % str(uuid.uuid4())
+    process.run([
+        'vgcreate',
+        '-s',
+        '1G',
+        '--force',
+        '--yes',
+        name] + devices
+    )
 
-    def _filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        The actual method that filters using a new list. Useful so that other
-        methods that do not want to alter the contents of the list (e.g.
-        ``self.find``) can operate safely.
-        """
-        filtered = [i for i in self]
-        if lv_name:
-            filtered = [i for i in filtered if i.lv_name == lv_name]
+    vg = get_vg(vg_name=name)
+    return vg
 
-        if vg_name:
-            filtered = [i for i in filtered if i.vg_name == vg_name]
 
-        if lv_uuid:
-            filtered = [i for i in filtered if i.lv_uuid == lv_uuid]
+def extend_vg(vg, devices):
+    """
+    Extend a Volume Group. Command looks like::
 
-        if lv_path:
-            filtered = [i for i in filtered if i.lv_path == lv_path]
+        vgextend --force --yes group_name [device, ...]
 
-        # at this point, `filtered` has either all the volumes in self or is an
-        # actual filtered list if any filters were applied
-        if lv_tags:
-            tag_filtered = []
-            for volume in filtered:
-                # all the tags we got need to match on the volume
-                matches = all(volume.tags.get(k) == str(v) for k, v in lv_tags.items())
-                if matches:
-                    tag_filtered.append(volume)
-            return tag_filtered
+    Once created the volume group is extended and returned as a ``VolumeGroup`` object
 
-        return filtered
+    :param vg: A VolumeGroup object
+    :param devices: A list of devices to extend the VG. Optionally, a single
+                    device (as a string) can be used.
+    """
+    if not isinstance(devices, list):
+        devices = [devices]
+    process.run([
+        'vgextend',
+        '--force',
+        '--yes',
+        vg.name] + devices
+    )
 
-    def filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        Filter out volumes on top level attributes like ``lv_name`` or by
-        ``lv_tags`` where a dict is required. For example, to find a volume
-        that has an OSD ID of 0, the filter would look like::
+    vg = get_vg(vg_name=vg.name)
+    return vg
 
-            lv_tags={'ceph.osd_id': '0'}
 
-        """
-        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-            raise TypeError('.filter() requires lv_name, vg_name, lv_path, lv_uuid, or tags (none given)')
-        # first find the filtered volumes with the values in self
-        filtered_volumes = self._filter(
-            lv_name=lv_name,
-            vg_name=vg_name,
-            lv_path=lv_path,
-            lv_uuid=lv_uuid,
-            lv_tags=lv_tags
-        )
-        # then purge everything
-        self._purge()
-        # and add the filtered items
-        self.extend(filtered_volumes)
+def reduce_vg(vg, devices):
+    """
+    Reduce a Volume Group. Command looks like::
 
-    def get(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
-        """
-        This is a bit expensive, since it will try to filter out all the
-        matching items in the list, filter them out applying anything that was
-        added and return the matching item.
+        vgreduce --force --yes group_name [device, ...]
 
-        This method does *not* alter the list, and it will raise an error if
-        multiple LVs are matched
+    :param vg: A VolumeGroup object
+    :param devices: A list of devices to remove from the VG. Optionally, a
+                    single device (as a string) can be used.
+    """
+    if not isinstance(devices, list):
+        devices = [devices]
+    process.run([
+        'vgreduce',
+        '--force',
+        '--yes',
+        vg.name] + devices
+    )
 
-        It is useful to use ``tags`` when trying to find a specific logical volume,
-        but it can also lead to multiple lvs being found, since a lot of metadata
-        is shared between lvs of a distinct OSD.
-        """
-        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
-            return None
-        lvs = self._filter(
-            lv_name=lv_name,
-            vg_name=vg_name,
-            lv_path=lv_path,
-            lv_uuid=lv_uuid,
-            lv_tags=lv_tags
-        )
-        if not lvs:
-            return None
-        if len(lvs) > 1:
-            raise MultipleLVsError(lv_name, lv_path)
-        return lvs[0]
+    vg = get_vg(vg_name=vg.name)
+    return vg
 
 
-class PVolumes(list):
+def remove_vg(vg_name):
     """
-    A list of all known (physical) volumes for the current system, with the ability
-    to filter them via keyword arguments.
+    Removes a volume group.
     """
-
-    def __init__(self):
-        self._populate()
-
-    def _populate(self):
-        # get all the pvs in the current system
-        for pv_item in get_api_pvs():
-            self.append(PVolume(**pv_item))
-
-    def _purge(self):
-        """
-        Deplete all the items in the list, used internally only so that we can
-        dynamically allocate the items when filtering without the concern of
-        messing up the contents
-        """
-        self[:] = []
-
-    def _filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        The actual method that filters using a new list. Useful so that other
-        methods that do not want to alter the contents of the list (e.g.
-        ``self.find``) can operate safely.
-        """
-        filtered = [i for i in self]
-        if pv_name:
-            filtered = [i for i in filtered if i.pv_name == pv_name]
-
-        if pv_uuid:
-            filtered = [i for i in filtered if i.pv_uuid == pv_uuid]
-
-        # at this point, `filtered` has either all the physical volumes in self
-        # or is an actual filtered list if any filters were applied
-        if pv_tags:
-            tag_filtered = []
-            for pvolume in filtered:
-                matches = all(pvolume.tags.get(k) == str(v) for k, v in pv_tags.items())
-                if matches:
-                    tag_filtered.append(pvolume)
-            # return the tag_filtered pvolumes here, the `filtered` list is no
-            # longer usable
-            return tag_filtered
-
-        return filtered
-
-    def filter(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        Filter out volumes on top level attributes like ``pv_name`` or by
-        ``pv_tags`` where a dict is required. For example, to find a physical volume
-        that has an OSD ID of 0, the filter would look like::
-
-            pv_tags={'ceph.osd_id': '0'}
-
-        """
-        if not any([pv_name, pv_uuid, pv_tags]):
-            raise TypeError('.filter() requires pv_name, pv_uuid, or pv_tags (none given)')
-        # first find the filtered volumes with the values in self
-        filtered_volumes = self._filter(
-            pv_name=pv_name,
-            pv_uuid=pv_uuid,
-            pv_tags=pv_tags
-        )
-        # then purge everything
-        self._purge()
-        # and add the filtered items
-        self.extend(filtered_volumes)
-
-    def get(self, pv_name=None, pv_uuid=None, pv_tags=None):
-        """
-        This is a bit expensive, since it will try to filter out all the
-        matching items in the list, filter them out applying anything that was
-        added and return the matching item.
-
-        This method does *not* alter the list, and it will raise an error if
-        multiple pvs are matched
-
-        It is useful to use ``tags`` when trying to find a specific logical volume,
-        but it can also lead to multiple pvs being found, since a lot of metadata
-        is shared between pvs of a distinct OSD.
-        """
-        if not any([pv_name, pv_uuid, pv_tags]):
-            return None
-        pvs = self._filter(
-            pv_name=pv_name,
-            pv_uuid=pv_uuid,
-            pv_tags=pv_tags
-        )
-        if not pvs:
-            return None
-        if len(pvs) > 1 and pv_tags:
-            raise MultiplePVsError(pv_name)
-        return pvs[0]
+    if not vg_name:
+        logger.warning('Skipping removal of invalid VG name: "%s"', vg_name)
+        return
+    fail_msg = "Unable to remove vg %s" % vg_name
+    process.run(
+        [
+            'vgremove',
+            '-v',  # verbose
+            '-f',  # force it
+            vg_name
+        ],
+        fail_msg=fail_msg,
+    )
 
 
-class VolumeGroup(object):
+def get_vg(vg_name=None, vg_tags=None, vgs=None):
     """
-    Represents an LVM group, with some top-level attributes like ``vg_name``
-    """
-
-    def __init__(self, **kw):
-        for k, v in kw.items():
-            setattr(self, k, v)
-        self.name = kw['vg_name']
-        self.tags = parse_tags(kw.get('vg_tags', ''))
-
-    def __str__(self):
-        return '<%s>' % self.name
-
-    def __repr__(self):
-        return self.__str__()
-
-    def _parse_size(self, size):
-        error_msg = "Unable to convert vg size to integer: '%s'" % str(size)
-        try:
-            integer, _ = size.split('g')
-        except ValueError:
-            logger.exception(error_msg)
-            raise RuntimeError(error_msg)
-
-        return util.str_to_int(integer)
-
-    @property
-    def free(self):
-        """
-        Parse the available size in gigabytes from the ``vg_free`` attribute, that
-        will be a string with a character ('g') to indicate gigabytes in size.
-        Returns a rounded down integer to ease internal operations::
-
-        >>> data_vg.vg_free
-        '0.01g'
-        >>> data_vg.size
-        0
-        """
-        return self._parse_size(self.vg_free)
-
-    @property
-    def size(self):
-        """
-        Parse the size in gigabytes from the ``vg_size`` attribute, that
-        will be a string with a character ('g') to indicate gigabytes in size.
-        Returns a rounded down integer to ease internal operations::
-
-        >>> data_vg.vg_size
-        '1024.9g'
-        >>> data_vg.size
-        1024
-        """
-        return self._parse_size(self.vg_size)
-
-    def sizing(self, parts=None, size=None):
-        """
-        Calculate proper sizing to fully utilize the volume group in the most
-        efficient way possible. To prevent situations where LVM might accept
-        a percentage that is beyond the vg's capabilities, it will refuse with
-        an error when requesting a larger-than-possible parameter, in addition
-        to rounding down calculations.
+    Return a matching vg for the current system, requires ``vg_name`` or
+    ``tags``. Raises an error if more than one vg is found.
 
-        A dictionary with different sizing parameters is returned, to make it
-        easier for others to choose what they need in order to create logical
-        volumes::
+    It is useful to use ``tags`` when trying to find a specific volume group,
+    but it can also lead to multiple vgs being found.
+    """
+    if not any([vg_name, vg_tags]):
+        return None
+    if vgs is None or len(vgs) == 0:
+        vgs = VolumeGroups()
 
-        >>> data_vg.free
-        1024
-        >>> data_vg.sizing(parts=4)
-        {'parts': 4, 'sizes': 256, 'percentages': 25}
-        >>> data_vg.sizing(size=512)
-        {'parts': 2, 'sizes': 512, 'percentages': 50}
+    return vgs.get(vg_name=vg_name, vg_tags=vg_tags)
 
 
-        :param parts: Number of parts to create LVs from
-        :param size: Size in gigabytes to divide the VG into
+#################################
+#
+# Code for LVM Logical Volumes
+#
+###############################
 
-        :raises SizeAllocationError: When requested size cannot be allocated with
-        :raises ValueError: If both ``parts`` and ``size`` are given
-        """
-        if parts is not None and size is not None:
-            raise ValueError(
-                "Cannot process sizing with both parts (%s) and size (%s)" % (parts, size)
-            )
 
-        # if size is given we need to map that to extents so that we avoid
-        # issues when trying to get this right with a size in gigabytes find
-        # the percentage first, cheating, because these values are thrown out
-        vg_free_count = util.str_to_int(self.vg_free_count)
+def get_api_lvs():
+    """
+    Return the list of logical volumes available in the system using flags to include common
+    metadata associated with them
 
-        if size:
-            extents = int(size * vg_free_count / self.free)
-            disk_sizing = sizing(self.free, size=size, parts=parts)
-        else:
-            if parts is not None:
-                # Prevent parts being 0, falling back to 1 (100% usage)
-                parts = parts or 1
-            size = int(self.free / parts)
-            extents = size * vg_free_count / self.free
-            disk_sizing = sizing(self.free, parts=parts)
+    Command and delimited output should look like::
 
-        extent_sizing = sizing(vg_free_count, size=extents)
+        $ lvs --noheadings --readonly --separator=';' -a -o lv_tags,lv_path,lv_name,vg_name
+          ;/dev/ubuntubox-vg/root;root;ubuntubox-vg
+          ;/dev/ubuntubox-vg/swap_1;swap_1;ubuntubox-vg
 
-        disk_sizing['extents'] = int(extents)
-        disk_sizing['percentages'] = extent_sizing['percentages']
-        return disk_sizing
+    """
+    fields = 'lv_tags,lv_path,lv_name,vg_name,lv_uuid,lv_size'
+    stdout, stderr, returncode = process.call(
+        ['lvs', '--noheadings', '--readonly', '--separator=";"', '-a', '-o', fields],
+        verbose_on_failure=False
+    )
+    return _output_parser(stdout, fields)
 
 
 class Volume(object):
@@ -1209,64 +984,309 @@ class Volume(object):
         self.tags[key] = value
 
 
-class PVolume(object):
+class Volumes(list):
     """
-    Represents a Physical Volume from LVM, with some top-level attributes like
-    ``pv_name`` and parsed tags as a dictionary of key/value pairs.
+    A list of all known (logical) volumes for the current system, with the ability
+    to filter them via keyword arguments.
     """
 
-    def __init__(self, **kw):
-        for k, v in kw.items():
-            setattr(self, k, v)
-        self.pv_api = kw
-        self.name = kw['pv_name']
-        self.tags = parse_tags(kw['pv_tags'])
-
-    def __str__(self):
-        return '<%s>' % self.pv_api['pv_name']
+    def __init__(self):
+        self._populate()
 
-    def __repr__(self):
-        return self.__str__()
+    def _populate(self):
+        # get all the lvs in the current system
+        for lv_item in get_api_lvs():
+            self.append(Volume(**lv_item))
 
-    def set_tags(self, tags):
+    def _purge(self):
         """
-        :param tags: A dictionary of tag names and values, like::
+        Delete all the items in the list, used internally only so that we can
+        dynamically allocate the items when filtering without the concern of
+        messing up the contents
+        """
+        self[:] = []
 
-            {
-                "ceph.osd_fsid": "aaa-fff-bbbb",
-                "ceph.osd_id": "0"
-            }
+    def _filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
+        """
+        The actual method that filters using a new list. Useful so that other
+        methods that do not want to alter the contents of the list (e.g.
+        ``self.find``) can operate safely.
+        """
+        filtered = [i for i in self]
+        if lv_name:
+            filtered = [i for i in filtered if i.lv_name == lv_name]
 
-        At the end of all modifications, the tags are refreshed to reflect
-        LVM's most current view.
+        if vg_name:
+            filtered = [i for i in filtered if i.vg_name == vg_name]
+
+        if lv_uuid:
+            filtered = [i for i in filtered if i.lv_uuid == lv_uuid]
+
+        if lv_path:
+            filtered = [i for i in filtered if i.lv_path == lv_path]
+
+        # at this point, `filtered` has either all the volumes in self or is an
+        # actual filtered list if any filters were applied
+        if lv_tags:
+            tag_filtered = []
+            for volume in filtered:
+                # all the tags we got need to match on the volume
+                matches = all(volume.tags.get(k) == str(v) for k, v in lv_tags.items())
+                if matches:
+                    tag_filtered.append(volume)
+            return tag_filtered
+
+        return filtered
+
+    def filter(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
         """
-        for k, v in tags.items():
-            self.set_tag(k, v)
-        # after setting all the tags, refresh them for the current object, use the
-        # pv_* identifiers to filter because those shouldn't change
-        pv_object = get_pv(pv_name=self.pv_name, pv_uuid=self.pv_uuid)
-        self.tags = pv_object.tags
+        Filter out volumes on top level attributes like ``lv_name`` or by
+        ``lv_tags`` where a dict is required. For example, to find a volume
+        that has an OSD ID of 0, the filter would look like::
+
+            lv_tags={'ceph.osd_id': '0'}
 
-    def set_tag(self, key, value):
         """
-        Set the key/value pair as an LVM tag. Does not "refresh" the values of
-        the current object for its tags. Meant to be a "fire and forget" type
-        of modification.
+        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
+            raise TypeError('.filter() requires lv_name, vg_name, lv_path, lv_uuid, or tags (none given)')
+        # first find the filtered volumes with the values in self
+        filtered_volumes = self._filter(
+            lv_name=lv_name,
+            vg_name=vg_name,
+            lv_path=lv_path,
+            lv_uuid=lv_uuid,
+            lv_tags=lv_tags
+        )
+        # then purge everything
+        self._purge()
+        # and add the filtered items
+        self.extend(filtered_volumes)
 
-        **warning**: Altering tags on a PV has to be done ensuring that the
-        device is actually the one intended. ``pv_name`` is *not* a persistent
-        value, only ``pv_uuid`` is. Using ``pv_uuid`` is the best way to make
-        sure the device getting changed is the one needed.
+    def get(self, lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None):
         """
-        # remove it first if it exists
-        if self.tags.get(key):
-            current_value = self.tags[key]
-            tag = "%s=%s" % (key, current_value)
-            process.call(['pvchange', '--deltag', tag, self.pv_name])
+        This is a bit expensive, since it will try to filter out all the
+        matching items in the list, filter them out applying anything that was
+        added and return the matching item.
 
-        process.call(
-            [
-                'pvchange',
-                '--addtag', '%s=%s' % (key, value), self.pv_name
-            ]
+        This method does *not* alter the list, and it will raise an error if
+        multiple LVs are matched
+
+        It is useful to use ``tags`` when trying to find a specific logical volume,
+        but it can also lead to multiple lvs being found, since a lot of metadata
+        is shared between lvs of a distinct OSD.
+        """
+        if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
+            return None
+        lvs = self._filter(
+            lv_name=lv_name,
+            vg_name=vg_name,
+            lv_path=lv_path,
+            lv_uuid=lv_uuid,
+            lv_tags=lv_tags
         )
+        if not lvs:
+            return None
+        if len(lvs) > 1:
+            raise MultipleLVsError(lv_name, lv_path)
+        return lvs[0]
+
+
+def create_lv(name, group, extents=None, size=None, tags=None, uuid_name=False, pv=None):
+    """
+    Create a Logical Volume in a Volume Group. Command looks like::
+
+        lvcreate -L 50G -n gfslv vg0
+
+    ``name``, ``group``, are required. If ``size`` is provided it must follow
+    lvm's size notation (like 1G, or 20M). Tags are an optional dictionary and is expected to
+    conform to the convention of prefixing them with "ceph." like::
+
+        {"ceph.block_device": "/dev/ceph/osd-1"}
+
+    :param uuid_name: Optionally combine the ``name`` with UUID to ensure uniqueness
+    """
+    if uuid_name:
+        name = '%s-%s' % (name, uuid.uuid4())
+    if tags is None:
+        tags = {
+            "ceph.osd_id": "null",
+            "ceph.type": "null",
+            "ceph.cluster_fsid": "null",
+            "ceph.osd_fsid": "null",
+        }
+
+    # XXX add CEPH_VOLUME_LVM_DEBUG to enable -vvvv on lv operations
+    type_path_tag = {
+        'journal': 'ceph.journal_device',
+        'data': 'ceph.data_device',
+        'block': 'ceph.block_device',
+        'wal': 'ceph.wal_device',
+        'db': 'ceph.db_device',
+        'lockbox': 'ceph.lockbox_device',  # XXX might not ever need this lockbox sorcery
+    }
+    if size:
+        command = [
+            'lvcreate',
+            '--yes',
+            '-L',
+            '%s' % size,
+            '-n', name, group
+        ]
+    elif extents:
+        command = [
+            'lvcreate',
+            '--yes',
+            '-l',
+            '%s' % extents,
+            '-n', name, group
+        ]
+    # create the lv with all the space available, this is needed because the
+    # system call is different for LVM
+    else:
+        command = [
+            'lvcreate',
+            '--yes',
+            '-l',
+            '100%FREE',
+            '-n', name, group
+        ]
+    if pv:
+        command.append(pv)
+    process.run(command)
+
+    lv = get_lv(lv_name=name, vg_name=group)
+    lv.set_tags(tags)
+
+    # when creating a distinct type, the caller doesn't know what the path will
+    # be so this function will set it after creation using the mapping
+    path_tag = type_path_tag.get(tags.get('ceph.type'))
+    if path_tag:
+        lv.set_tags(
+            {path_tag: lv.lv_path}
+        )
+    return lv
+
+
+def remove_lv(lv):
+    """
+    Removes a logical volume given it's absolute path.
+
+    Will return True if the lv is successfully removed or
+    raises a RuntimeError if the removal fails.
+
+    :param lv: A ``Volume`` object or the path for an LV
+    """
+    if isinstance(lv, Volume):
+        path = lv.lv_path
+    else:
+        path = lv
+
+    stdout, stderr, returncode = process.call(
+        [
+            'lvremove',
+            '-v',  # verbose
+            '-f',  # force it
+            path
+        ],
+        show_command=True,
+        terminal_verbose=True,
+    )
+    if returncode != 0:
+        raise RuntimeError("Unable to remove %s" % path)
+    return True
+
+
+def is_lv(dev, lvs=None):
+    """
+    Boolean to detect if a device is an LV or not.
+    """
+    splitname = dmsetup_splitname(dev)
+    # Allowing to optionally pass `lvs` can help reduce repetitive checks for
+    # multiple devices at once.
+    if lvs is None or len(lvs) == 0:
+        lvs = Volumes()
+
+    if splitname.get('LV_NAME'):
+        lvs.filter(lv_name=splitname['LV_NAME'], vg_name=splitname['VG_NAME'])
+        return len(lvs) > 0
+    return False
+
+
+def get_lv(lv_name=None, vg_name=None, lv_path=None, lv_uuid=None, lv_tags=None, lvs=None):
+    """
+    Return a matching lv for the current system, requiring ``lv_name``,
+    ``vg_name``, ``lv_path`` or ``tags``. Raises an error if more than one lv
+    is found.
+
+    It is useful to use ``tags`` when trying to find a specific logical volume,
+    but it can also lead to multiple lvs being found, since a lot of metadata
+    is shared between lvs of a distinct OSD.
+    """
+    if not any([lv_name, vg_name, lv_path, lv_uuid, lv_tags]):
+        return None
+    if lvs is None:
+        lvs = Volumes()
+    return lvs.get(
+        lv_name=lv_name, vg_name=vg_name, lv_path=lv_path, lv_uuid=lv_uuid,
+        lv_tags=lv_tags
+    )
+
+
+def get_lv_from_argument(argument):
+    """
+    Helper proxy function that consumes a possible logical volume passed in from the CLI
+    in the form of `vg/lv`, but with some validation so that an argument that is a full
+    path to a device can be ignored
+    """
+    if argument.startswith('/'):
+        lv = get_lv(lv_path=argument)
+        return lv
+    try:
+        vg_name, lv_name = argument.split('/')
+    except (ValueError, AttributeError):
+        return None
+    return get_lv(lv_name=lv_name, vg_name=vg_name)
+
+
+def create_lvs(volume_group, parts=None, size=None, name_prefix='ceph-lv'):
+    """
+    Create multiple Logical Volumes from a Volume Group by calculating the
+    proper extents from ``parts`` or ``size``. A custom prefix can be used
+    (defaults to ``ceph-lv``), these names are always suffixed with a uuid.
+
+    LV creation in ceph-volume will require tags, this is expected to be
+    pre-computed by callers who know Ceph metadata like OSD IDs and FSIDs. It
+    will probably not be the case when mass-creating LVs, so common/default
+    tags will be set to ``"null"``.
+
+    .. note:: LVs that are not in use can be detected by querying LVM for tags that are
+              set to ``"null"``.
+
+    :param volume_group: The volume group (vg) to use for LV creation
+    :type group: ``VolumeGroup()`` object
+    :param parts: Number of LVs to create *instead of* ``size``.
+    :type parts: int
+    :param size: Size (in gigabytes) of LVs to create, e.g. "as many 10gb LVs as possible"
+    :type size: int
+    :param extents: The number of LVM extents to use to create the LV. Useful if looking to have
+    accurate LV sizes (LVM rounds sizes otherwise)
+    """
+    if parts is None and size is None:
+        # fallback to just one part (using 100% of the vg)
+        parts = 1
+    lvs = []
+    tags = {
+        "ceph.osd_id": "null",
+        "ceph.type": "null",
+        "ceph.cluster_fsid": "null",
+        "ceph.osd_fsid": "null",
+    }
+    sizing = volume_group.sizing(parts=parts, size=size)
+    for part in range(0, sizing['parts']):
+        size = sizing['sizes']
+        extents = sizing['extents']
+        lv_name = '%s-%s' % (name_prefix, uuid.uuid4())
+        lvs.append(
+            create_lv(lv_name, volume_group.name, extents=extents, tags=tags)
+        )
+    return lvs
index 6379ef67a7d82523ad52d6afdd12f48e25b54e9e..2fee47ffab910ad4c4310bbc6581c5c769a0bd9f 100644 (file)
@@ -1,13 +1,19 @@
-try:
-    import configparser
-except ImportError:
-    import ConfigParser as configparser
 import contextlib
 import logging
 import os
 import re
 from ceph_volume import terminal, conf
 from ceph_volume import exceptions
+from sys import version_info as sys_version_info
+
+if sys_version_info.major >= 3:
+    import configparser
+    conf_parentclass = configparser.ConfigParser
+elif sys_version_info.major < 3:
+    import ConfigParser as configparser
+    conf_parentclass = configparser.SafeConfigParser
+else:
+    raise RuntimeError('Not expecting python version > 3 yet.')
 
 
 logger = logging.getLogger(__name__)
@@ -50,7 +56,7 @@ def load(abspath=None):
         ceph_file = open(abspath)
         trimmed_conf = _TrimIndentFile(ceph_file)
         with contextlib.closing(ceph_file):
-            parser.readfp(trimmed_conf)
+            parser.read_conf(trimmed_conf)
             conf.ceph = parser
             return parser
     except configparser.ParsingError as error:
@@ -59,9 +65,9 @@ def load(abspath=None):
         raise RuntimeError('Unable to read configuration file: %s' % abspath)
 
 
-class Conf(configparser.SafeConfigParser):
+class Conf(conf_parentclass):
     """
-    Subclasses from SafeConfigParser to give a few helpers for Ceph
+    Subclasses from ConfigParser to give a few helpers for Ceph
     configuration.
     """
 
@@ -215,3 +221,11 @@ class Conf(configparser.SafeConfigParser):
             for name, val in options.items():
                 if isinstance(val, list):
                     options[name] = '\n'.join(val)
+
+    def read_conf(self, conffile):
+        if sys_version_info.major >= 3:
+            self.read_file(conffile)
+        elif sys_version_info.major < 3:
+            self.readfp(conffile)
+        else:
+            raise RuntimeError('Not expecting python version > 3 yet.')
index 96875936377e4e9bd018d861ac3b663310f3f3ee..f3416472a0b9cc14c56839e9d1ada5bfb5ae26f5 100644 (file)
@@ -112,8 +112,8 @@ class List(object):
     def list(self, args):
         # ensure everything is up to date before calling out
         # to list lv's
-        self.update()
-        report = self.generate(args)
+        lvs = self.update()
+        report = self.generate(args, lvs)
         if args.format == 'json':
             # If the report is empty, we don't return a non-zero exit status
             # because it is assumed this is going to be consumed by automated
@@ -153,25 +153,27 @@ class List(object):
                         # this means that the device has changed, so it must be updated
                         # on the API to reflect this
                         lv.set_tags({device_name: disk_device})
+        return lvs
 
-    def generate(self, args):
+    def generate(self, args, lvs=None):
         """
         Generate reports for an individual device or for all Ceph-related
         devices, logical or physical, as long as they have been prepared by
         this tool before and contain enough metadata.
         """
         if args.device:
-            return self.single_report(args.device)
+            return self.single_report(args.device, lvs)
         else:
-            return self.full_report()
+            return self.full_report(lvs)
 
-    def single_report(self, device):
+    def single_report(self, device, lvs=None):
         """
         Generate a report for a single device. This can be either a logical
         volume in the form of vg/lv or a device with an absolute path like
         /dev/sda1 or /dev/sda
         """
-        lvs = api.Volumes()
+        if lvs is None:
+            lvs = api.Volumes()
         report = {}
         lv = api.get_lv_from_argument(device)
 
@@ -227,6 +229,7 @@ class List(object):
         if lvs is None:
             lvs = api.Volumes()
         report = {}
+
         for lv in lvs:
             try:
                 _id = lv.tags['ceph.osd_id']
@@ -246,7 +249,7 @@ class List(object):
                     # bluestore will not have a journal, filestore will not have
                     # a block/wal/db, so we must skip if not present
                     continue
-                if not api.get_lv(lv_uuid=device_uuid):
+                if not api.get_lv(lv_uuid=device_uuid, lvs=lvs):
                     # means we have a regular device, so query blkid
                     disk_device = disk.get_device_from_partuuid(device_uuid)
                     if disk_device:
index 328a036152e2c1ebb5242938524247e84d36c160..bca32ac8833961253ebdc2fa7753c8bbe7cf04d1 100644 (file)
@@ -1,12 +1,13 @@
 import argparse
 import os
 import logging
+import time
 
 from textwrap import dedent
 
 from ceph_volume import decorators, terminal, process
 from ceph_volume.api import lvm as api
-from ceph_volume.util import system, encryption, disk, arg_validators
+from ceph_volume.util import system, encryption, disk, arg_validators, str_to_int
 from ceph_volume.util.device import Device
 from ceph_volume.systemd import systemctl
 
@@ -17,12 +18,38 @@ mlogger = terminal.MultiLogger(__name__)
 def wipefs(path):
     """
     Removes the filesystem from an lv or partition.
+
+    Environment variables supported::
+
+    * ``CEPH_VOLUME_WIPEFS_TRIES``: Defaults to 8
+    * ``CEPH_VOLUME_WIPEFS_INTERVAL``: Defaults to 5
+
     """
-    process.run([
-        'wipefs',
-        '--all',
-        path
-    ])
+    tries = str_to_int(
+        os.environ.get('CEPH_VOLUME_WIPEFS_TRIES', 8)
+    )
+    interval = str_to_int(
+        os.environ.get('CEPH_VOLUME_WIPEFS_INTERVAL', 5)
+    )
+
+    for trying in range(tries):
+        stdout, stderr, exit_code = process.call([
+            'wipefs',
+            '--all',
+            path
+        ])
+        if exit_code != 0:
+            # this could narrow the retry by poking in the stderr of the output
+            # to verify that 'probing initialization failed' appears, but
+            # better to be broad in this retry to prevent missing on
+            # a different message that needs to be retried as well
+            terminal.warning(
+                'failed to wipefs device, will try again to workaround probable race condition'
+            )
+            time.sleep(interval)
+        else:
+            return
+    raise RuntimeError("could not complete wipefs on device: %s" % path)
 
 
 def zap_data(path):
@@ -77,7 +104,7 @@ def ensure_associated_lvs(lvs):
     wal_lvs = lvs._filter(lv_tags={'ceph.type': 'wal'})
     backing_devices = [
         (journal_lvs, 'journal'),
-        (db_lvs, 'block'),
+        (db_lvs, 'db'),
         (wal_lvs, 'wal')
     ]
 
@@ -243,8 +270,9 @@ class Zap(object):
                 "Zapping successful for: %s" % ", ".join([str(d) for d in self.args.devices])
             )
         else:
+            identifier = self.args.osd_id or self.args.osd_fsid
             terminal.success(
-                "Zapping successful for OSD: %s" % self.args.osd_id or self.args.osd_fsid
+                "Zapping successful for OSD: %s" % identifier
             )
 
     @decorators.needs_root
index bf24f0a01549f65b0d64e3efc0536965132cfcfc..e4d244f5d56d22c9167286861d4496b9944120f5 100644 (file)
@@ -99,7 +99,7 @@ def main(args=None):
             # don't log any output to the terminal, just rely on stderr/stdout
             # going to logging
             process.run(command, terminal_logging=False)
-            logger.info('successfully trggered activation for: %s', extra_data)
+            logger.info('successfully triggered activation for: %s', extra_data)
             break
         except RuntimeError as error:
             logger.warning(error)
index ddf99f6ae1f80e453bd306dc065858cddc57baca..223ac501382f99641260ccf79bed5f133c8f8000 100644 (file)
@@ -186,8 +186,8 @@ class TestPVolumes(object):
             pv_name='/dev/vg/foo',
             pv_uuid='1111', pv_tags=pv_tags, vg_name='vg')
         pvolumes.append(FooPVolume)
-        pvolumes.filter(pv_tags={'ceph.type': 'journal', 'ceph.osd_id': '2'})
-        assert pvolumes == []
+        assert pvolumes.filter(pv_tags={'ceph.type': 'journal',
+                               'ceph.osd_id': '2'}) == []
 
     def test_filter_by_tags_matches(self, pvolumes, monkeypatch):
         pv_tags = "ceph.type=journal,ceph.osd_id=1"
@@ -195,8 +195,8 @@ class TestPVolumes(object):
             pv_name='/dev/vg/foo',
             pv_uuid='1111', pv_tags=pv_tags, vg_name="vg")
         pvolumes.append(FooPVolume)
-        pvolumes.filter(pv_tags={'ceph.type': 'journal', 'ceph.osd_id': '1'})
-        assert pvolumes == [FooPVolume]
+        assert pvolumes.filter(pv_tags={'ceph.type': 'journal',
+                               'ceph.osd_id': '1'}) == [FooPVolume]
 
 
 class TestGetVG(object):
@@ -337,7 +337,7 @@ class TestVolumeGroups(object):
         journal = api.VolumeGroup(vg_name='volume2', vg_tags='ceph.group=plain')
         volume_groups.append(osd)
         volume_groups.append(journal)
-        volume_groups.filter(vg_tags={'ceph.group': 'dmcache'})
+        volume_groups = volume_groups.filter(vg_tags={'ceph.group': 'dmcache'})
         assert len(volume_groups) == 1
         assert volume_groups[0].vg_name == 'volume1'
 
@@ -345,7 +345,7 @@ class TestVolumeGroups(object):
         vg_tags = "ceph.group=dmcache,ceph.disk_type=ssd"
         osd = api.VolumeGroup(vg_name='volume1', vg_path='/dev/vg/lv', vg_tags=vg_tags)
         volume_groups.append(osd)
-        volume_groups.filter(vg_tags={'ceph.group': 'data', 'ceph.disk_type': 'ssd'})
+        volume_groups = volume_groups.filter(vg_tags={'ceph.group': 'data', 'ceph.disk_type': 'ssd'})
         assert volume_groups == []
 
     def test_filter_by_vg_name(self, volume_groups):
@@ -354,13 +354,13 @@ class TestVolumeGroups(object):
         journal = api.VolumeGroup(vg_name='volume2', vg_tags='ceph.type=journal')
         volume_groups.append(osd)
         volume_groups.append(journal)
-        volume_groups.filter(vg_name='ceph_vg')
+        volume_groups = volume_groups.filter(vg_name='ceph_vg')
         assert len(volume_groups) == 1
         assert volume_groups[0].vg_name == 'ceph_vg'
 
     def test_filter_requires_params(self, volume_groups):
         with pytest.raises(TypeError):
-            volume_groups.filter()
+            volume_groups = volume_groups.filter()
 
 
 class TestVolumeGroupFree(object):
@@ -928,6 +928,7 @@ class TestSplitNameParser(object):
 class TestIsLV(object):
 
     def test_is_not_an_lv(self, monkeypatch):
+        monkeypatch.setattr(api.process, 'call', lambda x, **kw: ('', '', 0))
         monkeypatch.setattr(api, 'dmsetup_splitname', lambda x, **kw: {})
         assert api.is_lv('/dev/sda1', lvs=[]) is False
 
index fad7df44e305dfa2960f4cb45339dc19522228a0..b108ce2f1256fd9a517792deb2a725731c2faa17 100644 (file)
@@ -153,6 +153,10 @@ def volume_groups(monkeypatch):
     vgs._purge()
     return vgs
 
+def volume_groups_empty(monkeypatch):
+    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
+    vgs = lvm_api.VolumeGroups(populate=False)
+    return vgs
 
 @pytest.fixture
 def stub_vgs(monkeypatch, volume_groups):
@@ -167,6 +171,12 @@ def pvolumes(monkeypatch):
     pvolumes = lvm_api.PVolumes()
     pvolumes._purge()
     return pvolumes
+@pytest.fixture
+def pvolumes_empty(monkeypatch):
+    monkeypatch.setattr('ceph_volume.process.call', lambda x, **kw: ('', '', 0))
+    pvolumes = lvm_api.PVolumes(populate=False)
+    return pvolumes
+
 
 
 @pytest.fixture
index 8df5840b6527b9b83c49b2c9ed876a77cff54c33..69be0d5c0a348233c208021a2207b1febc0930a2 100644 (file)
@@ -1,5 +1,6 @@
 import pytest
 from ceph_volume.devices.lvm.strategies import bluestore
+from ceph_volume.api import lvm
 
 
 class TestSingleType(object):
@@ -51,7 +52,7 @@ class TestSingleType(object):
 
 class TestMixedType(object):
 
-    def test_filter_all_data_devs(self, fakedevice, factory):
+    def test_filter_all_data_devs(self, fakedevice, factory, monkeypatch):
         # in this scenario the user passed a already used device to be used for
         # data and an unused device to be used as db device.
         db_dev = fakedevice(used_by_ceph=False, is_lvm_member=False, rotational=False, sys_api=dict(size=6073740000))
@@ -59,6 +60,7 @@ class TestMixedType(object):
         args = factory(filtered_devices=[data_dev], osds_per_device=1,
                        block_db_size=None, block_wal_size=None,
                        osd_ids=[])
+        monkeypatch.setattr(lvm, 'VolumeGroup', lambda x, **kw: [])
         bluestore.MixedType(args, [], [db_dev], [])
 
 
index 1af1498f013514e7c3f01854f3df0de0c5dc7827..efbb460f96033e46acc72885d9e6e2cf0c4afe01 100644 (file)
@@ -79,6 +79,23 @@ class TestList(object):
         with pytest.raises(SystemExit):
             lvm.listing.List([]).list(args)
 
+    def test_lvs_list_is_created_just_once(self, monkeypatch, is_root, volumes, factory):
+        api.volumes_obj_create_count = 0
+
+        def monkey_populate(self):
+            api.volumes_obj_create_count += 1
+            for lv_item in api.get_api_lvs():
+                self.append(api.Volume(**lv_item))
+        monkeypatch.setattr(api.Volumes, '_populate', monkey_populate)
+
+        args = factory(format='pretty', device='/dev/sda1')
+        with pytest.raises(SystemExit):
+            lvm.listing.List([]).list(args)
+
+        # XXX: Ideally, the count should be just 1. Volumes._populate() is
+        # being called thrice out of which only twice is moneky_populate.
+        assert api.volumes_obj_create_count == 2
+
 
 class TestFullReport(object):
 
index 55daa4f87c8c3d59853f9a0a62c3b3eb103c00b4..20ca56b54b325aab3808b8330d6f6c0fd36a4c93 100644 (file)
@@ -1,3 +1,4 @@
+import os
 import pytest
 from ceph_volume.api import lvm as api
 from ceph_volume.devices.lvm import zap
@@ -90,6 +91,22 @@ class TestEnsureAssociatedLVs(object):
         result = zap.ensure_associated_lvs(volumes)
         assert result == ['/dev/VolGroup/block']
 
+    def test_success_message_for_fsid(self, factory, is_root, capsys):
+        cli_zap = zap.Zap([])
+        args = factory(devices=[], osd_id=None, osd_fsid='asdf-lkjh')
+        cli_zap.args = args
+        cli_zap.zap()
+        out, err = capsys.readouterr()
+        assert "Zapping successful for OSD: asdf-lkjh" in err
+
+    def test_success_message_for_id(self, factory, is_root, capsys):
+        cli_zap = zap.Zap([])
+        args = factory(devices=[], osd_id='1', osd_fsid=None)
+        cli_zap.args = args
+        cli_zap.zap()
+        out, err = capsys.readouterr()
+        assert "Zapping successful for OSD: 1" in err
+
     def test_block_and_partition_are_found(self, volumes, monkeypatch):
         monkeypatch.setattr(zap.disk, 'get_device_from_partuuid', lambda x: '/dev/sdb1')
         tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=block'
@@ -151,3 +168,26 @@ class TestEnsureAssociatedLVs(object):
         assert '/dev/VolGroup/lvjournal' in result
         assert '/dev/VolGroup/lvwal' in result
         assert '/dev/VolGroup/lvdb' in result
+
+
+class TestWipeFs(object):
+
+    def setup(self):
+        os.environ['CEPH_VOLUME_WIPEFS_INTERVAL'] = '0'
+
+    def test_works_on_second_try(self, stub_call):
+        os.environ['CEPH_VOLUME_WIPEFS_TRIES'] = '2'
+        stub_call([('wiping /dev/sda', '', 1), ('', '', 0)])
+        result = zap.wipefs('/dev/sda')
+        assert result is None
+
+    def test_does_not_work_after_several_tries(self, stub_call):
+        os.environ['CEPH_VOLUME_WIPEFS_TRIES'] = '2'
+        stub_call([('wiping /dev/sda', '', 1), ('', '', 1)])
+        with pytest.raises(RuntimeError):
+            zap.wipefs('/dev/sda')
+
+    def test_does_not_work_default_tries(self, stub_call):
+        stub_call([('wiping /dev/sda', '', 1)]*8)
+        with pytest.raises(RuntimeError):
+            zap.wipefs('/dev/sda')
index c0fe8fea9455e62192986731621858e974c6ae34..0b65a17256156400242dd37e7810e794324a6c0c 100644 (file)
@@ -17,6 +17,9 @@
     delegate_facts_host: True
     dashboard_enabled: False
 
+  environment:
+    DEBIAN_FRONTEND: noninteractive
+
   pre_tasks:
     # If we can't get python2 installed before any module is used we will fail
     # so just try what we can to get it installed
       when:
         - systempython2.stat is undefined or systempython2.stat.exists == false
 
+    # Ansible will try to auto-install python-apt, in some systems this might be
+    # python3-apt, or python-apt, and it has caused whole runs to fail because
+    # it is trying to do an interactive prompt
+    - name: install python-apt and aptitude in debian based systems
+      raw: sudo apt-get -y install "{{ item }}"
+      ignore_errors: yes
+      with_items:
+        - python3-apt
+        - python-apt
+        - aptitude
+
     - name: install python2 for fedora
       raw: sudo dnf -y install python creates=/usr/bin/python
       ignore_errors: yes
index 2e26ead7c82ed7b1979cd4dd30ff552a8088020f..9af6cd9bedf81114b6fd6d1de94bc710606e1d2e 100644 (file)
@@ -28,13 +28,13 @@ class TestConf(object):
     def test_get_non_existing_list(self):
         cfg = configuration.Conf()
         cfg.is_valid = lambda: True
-        cfg.readfp(self.conf_file)
+        cfg.read_conf(self.conf_file)
         assert cfg.get_list('global', 'key') == []
 
     def test_get_non_existing_list_get_default(self):
         cfg = configuration.Conf()
         cfg.is_valid = lambda: True
-        cfg.readfp(self.conf_file)
+        cfg.read_conf(self.conf_file)
         assert cfg.get_list('global', 'key', ['a']) == ['a']
 
     def test_get_rid_of_comments(self):
@@ -45,7 +45,7 @@ class TestConf(object):
         default = 0  # this is a comment
         """))
 
-        cfg.readfp(conf_file)
+        cfg.read_conf(conf_file)
         assert cfg.get_list('foo', 'default') == ['0']
 
     def test_gets_split_on_commas(self):
@@ -56,7 +56,7 @@ class TestConf(object):
         default = 0,1,2,3  # this is a comment
         """))
 
-        cfg.readfp(conf_file)
+        cfg.read_conf(conf_file)
         assert cfg.get_list('foo', 'default') == ['0', '1', '2', '3']
 
     def test_spaces_and_tabs_are_ignored(self):
@@ -67,7 +67,7 @@ class TestConf(object):
         default = 0,        1,  2 ,3  # this is a comment
         """))
 
-        cfg.readfp(conf_file)
+        cfg.read_conf(conf_file)
         assert cfg.get_list('foo', 'default') == ['0', '1', '2', '3']
 
 
index 71cb027ed87596d6ecd95971f6237849eac9829f..9721fccdb6434b8e510a47c25784a99d7b67ba1c 100644 (file)
@@ -25,7 +25,8 @@ def device_report_keys(device_info):
                      'sectorsize': '512',
                      'size': 1999844147200.0,
                      'support_discard': '',
-                     'vendor': 'DELL'}
+                     'vendor': 'DELL',
+                     'device_id': 'Vendor-Model-Serial'}
     }
  )
     report = Devices().json_report()[0]
@@ -67,6 +68,7 @@ class TestInventory(object):
         'sys_api',
         'available',
         'lvs',
+        'device_id',
     ]
 
     expected_sys_api_keys = [
index 3a098d7ed2d416b73d8addce9beb395985e19eae..7477777bc8d57c74645fcf9870c8d852dc6d037a 100644 (file)
@@ -32,19 +32,19 @@ class TestDevice(object):
         disk = device.Device("vg/lv")
         assert disk.is_lv
 
-    def test_vgs_is_empty(self, device_info, pvolumes, monkeypatch):
+    def test_vgs_is_empty(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         BarPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", pv_tags={})
         pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         lsblk = {"TYPE": "disk"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/nvme0n1")
         assert disk.vgs == []
 
-    def test_vgs_is_not_empty(self, device_info, pvolumes, monkeypatch):
+    def test_vgs_is_not_empty(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         BarPVolume = api.PVolume(vg_name='foo', lv_uuid='111', pv_name='/dev/nvme0n1', pv_uuid="0000", pv_tags={})
         pvolumes.append(BarPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         lsblk = {"TYPE": "disk"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/nvme0n1")
@@ -179,10 +179,10 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member is False
 
-    def test_pv_api(self, device_info, pvolumes, monkeypatch):
+    def test_pv_api(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         device_info(devices=data, lsblk=lsblk)
@@ -190,10 +190,10 @@ class TestDevice(object):
         assert disk.pvs_api
 
     @pytest.mark.parametrize("ceph_type", ["data", "block"])
-    def test_used_by_ceph(self, device_info, pvolumes, monkeypatch, ceph_type):
+    def test_used_by_ceph(self, device_info, pvolumes, pvolumes_empty, monkeypatch, ceph_type):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": ceph_type}}
@@ -201,10 +201,10 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.used_by_ceph
 
-    def test_not_used_by_ceph(self, device_info, pvolumes, monkeypatch):
+    def test_not_used_by_ceph(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes.append(FooPVolume)
-        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        monkeypatch.setattr(api, 'PVolumes', lambda populate=True: pvolumes if populate else pvolumes_empty)
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "part"}
         lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": "journal"}}
@@ -248,7 +248,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_luks1(self, device_info, pvolumes, monkeypatch):
+    def test_mapper_is_encrypted_luks1(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         status = {'type': 'LUKS1'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -257,7 +257,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_luks2(self, device_info, pvolumes, monkeypatch):
+    def test_mapper_is_encrypted_luks2(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         status = {'type': 'LUKS2'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -266,7 +266,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_encrypted_plain(self, device_info, pvolumes, monkeypatch):
+    def test_mapper_is_encrypted_plain(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         status = {'type': 'PLAIN'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
@@ -275,7 +275,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
-    def test_mapper_is_not_encrypted_plain(self, device_info, pvolumes, monkeypatch):
+    def test_mapper_is_not_encrypted_plain(self, device_info, pvolumes, pvolumes_empty, monkeypatch):
         monkeypatch.setattr(device, 'encryption_status', lambda x: {})
         lsblk = {'FSTYPE': 'xfs', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
index d0919c99854618f6e0888e5f458d707988af4faf..4073cf381da6ccd82ef78ca4a52122bd158bb5bd 100644 (file)
@@ -4,6 +4,7 @@ import getpass
 import pytest
 from textwrap import dedent
 from ceph_volume.util import system
+from mock.mock import patch
 
 
 class TestMkdirP(object):
@@ -216,3 +217,64 @@ class TestWhich(object):
         cap = capsys.readouterr()
         assert 'Absolute path not found for executable: exedir' in cap.err
         assert 'Ensure $PATH environment variable contains common executable locations' in cap.err
+
+
+@pytest.fixture
+def stub_which(monkeypatch):
+    def apply(value='/bin/restorecon'):
+        monkeypatch.setattr(system, 'which', lambda x: value)
+    return apply
+
+
+# python2 has no FileNotFoundError
+try:
+    FileNotFoundError
+except NameError:
+    FileNotFoundError = OSError
+
+
+class TestSetContext(object):
+
+    def setup(self):
+        try:
+            os.environ.pop('CEPH_VOLUME_SKIP_RESTORECON')
+        except KeyError:
+            pass
+
+    @pytest.mark.parametrize('value', ['1', 'True', 'true', 'TRUE', 'yes'])
+    def test_set_context_skips(self, stub_call, fake_run, value):
+        stub_call(('', '', 0))
+        os.environ['CEPH_VOLUME_SKIP_RESTORECON'] = value
+        system.set_context('/tmp/foo')
+        assert fake_run.calls == []
+
+    @pytest.mark.parametrize('value', ['0', 'False', 'false', 'FALSE', 'no'])
+    def test_set_context_doesnt_skip_with_env(self, stub_call, stub_which, fake_run, value):
+        stub_call(('', '', 0))
+        stub_which()
+        os.environ['CEPH_VOLUME_SKIP_RESTORECON'] = value
+        system.set_context('/tmp/foo')
+        assert len(fake_run.calls)
+
+    def test_set_context_skips_on_executable(self, stub_call, stub_which, fake_run):
+        stub_call(('', '', 0))
+        stub_which('restorecon')
+        system.set_context('/tmp/foo')
+        assert fake_run.calls == []
+
+    def test_set_context_no_skip_on_executable(self, stub_call, stub_which, fake_run):
+        stub_call(('', '', 0))
+        stub_which('/bin/restorecon')
+        system.set_context('/tmp/foo')
+        assert len(fake_run.calls)
+
+    @patch('ceph_volume.process.call')
+    def test_selinuxenabled_doesnt_exist(self, mocked_call, fake_run):
+        mocked_call.side_effect = FileNotFoundError()
+        system.set_context('/tmp/foo')
+        assert fake_run.calls == []
+
+    def test_selinuxenabled_is_not_enabled(self, stub_call, fake_run):
+        stub_call(('', '', 1))
+        system.set_context('/tmp/foo')
+        assert fake_run.calls == []
index ddec0e84804f599d703987b1169b4be3391d967c..ea478f3877d7891f3ed88189a4e061a2a8da9b34 100644 (file)
@@ -62,6 +62,7 @@ class Device(object):
         'available',
         'path',
         'sys_api',
+        'device_id',
     ]
     pretty_report_sys_fields = [
         'human_readable_size',
@@ -232,8 +233,7 @@ class Device(object):
             for path in self._get_pv_paths():
                 # check if there was a pv created with the
                 # name of device
-                pvs = lvm.PVolumes()
-                pvs.filter(pv_name=path)
+                pvs = lvm.PVolumes().filter(pv_name=path)
                 has_vgs = [pv.vg_name for pv in pvs if pv.vg_name]
                 if has_vgs:
                     self.vgs = list(set(has_vgs))
index 4beac7c640fc02a9c17efa6f1776202b3763777b..72a0ccf121e9722f77df4897e30a135ceb9754c9 100644 (file)
@@ -103,7 +103,8 @@ def dmcrypt_close(mapping):
         logger.debug('device mapper path does not exist %s' % mapping)
         logger.debug('will skip cryptsetup removal')
         return
-    process.run(['cryptsetup', 'remove', mapping])
+    # don't be strict about the remove call, but still warn on the terminal if it fails
+    process.run(['cryptsetup', 'remove', mapping], stop_on_error=False)
 
 
 def get_dmcrypt_key(osd_id, osd_fsid, lockbox_keyring=None):
index 98f6fc42dd43cf73f8ffde2b5add432be7e1e578..5aaca59af7557f4310ce936c6917d28cff2312a8 100644 (file)
@@ -8,6 +8,12 @@ import uuid
 from ceph_volume import process, terminal
 from . import as_string
 
+# python2 has no FileNotFoundError
+try:
+    FileNotFoundError
+except NameError:
+    FileNotFoundError = OSError
+
 logger = logging.getLogger(__name__)
 mlogger = terminal.MultiLogger(__name__)
 
@@ -275,7 +281,39 @@ def get_mounts(devices=False, paths=False, realpath=False):
         return paths_mounted
 
 
-def set_context(path, recursive = False):
+def set_context(path, recursive=False):
+    """
+    Calls ``restorecon`` to set the proper context on SELinux systems. Only if
+    the ``restorecon`` executable is found anywhere in the path it will get
+    called.
+
+    If the ``CEPH_VOLUME_SKIP_RESTORECON`` environment variable is set to
+    any of: "1", "true", "yes" the call will be skipped as well.
+
+    Finally, if SELinux is not enabled, or not available in the system,
+    ``restorecon`` will not be called. This is checked by calling out to the
+    ``selinuxenabled`` executable. If that tool is not installed or returns
+    a non-zero exit status then no further action is taken and this function
+    will return.
+    """
+    skip = os.environ.get('CEPH_VOLUME_SKIP_RESTORECON', '')
+    if skip.lower() in ['1', 'true', 'yes']:
+        logger.info(
+            'CEPH_VOLUME_SKIP_RESTORECON environ is set, will not call restorecon'
+        )
+        return
+
+    try:
+        stdout, stderr, code = process.call(['selinuxenabled'],
+                                            verbose_on_failure=False)
+    except FileNotFoundError:
+        logger.info('No SELinux found, skipping call to restorecon')
+        return
+
+    if code != 0:
+        logger.info('SELinux is not enabled, will not call restorecon')
+        return
+
     # restore selinux context to default policy values
     if which('restorecon').startswith('/'):
         if recursive:
diff --git a/ceph/src/ceph-volume/shell_tox.ini b/ceph/src/ceph-volume/shell_tox.ini
new file mode 100644 (file)
index 0000000..5cd4606
--- /dev/null
@@ -0,0 +1,11 @@
+[tox]
+envlist = py27, py35, py36
+skip_missing_interpreters = true
+
+[testenv]
+passenv=*
+whitelist_externals=
+  bash
+  grep
+  mktemp
+commands=bash {posargs:ceph_volume/tests/functional/scripts/test_unicode.sh} {posargs:ceph_volume/tests/functional/scripts/output.py}
index 71eb8c5979b4f6607ae6f36518f5ff0d5bf7e070..dc66681d2c0368ee621adda97c27f37dae370743 100644 (file)
@@ -5,6 +5,7 @@ skip_missing_interpreters = true
 [testenv]
 deps=
   pytest
+  mock
 commands=py.test -v {posargs:ceph_volume/tests} --ignore=ceph_volume/tests/functional
 
 [testenv:flake8]
index f060023f57c6b481f9ad8226c00d6eb648bef25a..78529616820ddcbb8e27d1f5fcbb734922b18f39 100755 (executable)
@@ -96,24 +96,27 @@ def get_pythonlib_dir():
     return "lib.{version[0]}".format(version=sys.version_info)
 
 
-def get_cmake_variables(names):
+def get_cmake_variables(*names):
     vars = dict((name, None) for name in names)
     for line in open(os.path.join(MYPDIR, "CMakeCache.txt")):
         # parse lines like "WITH_ASAN:BOOL=ON"
         for name in names:
             if line.startswith("{}:".format(name)):
-                vars[name] = line.split("=")[1].strip()
+                type_value = line.split(":")[1].strip()
+                t, v = type_value.split("=")
+                if t == 'BOOL':
+                    v = v.upper() in ('TRUE', '1', 'Y', 'YES', 'ON')
+                vars[name] = v
                 break
         if all(vars.values()):
             break
-    return vars
+    return [vars[name] for name in names]
 
 
 if os.path.exists(os.path.join(MYPDIR, "CMakeCache.txt")) \
      and os.path.exists(os.path.join(MYPDIR, "bin/init-ceph")):
-    vars = get_cmake_variables(["ceph_SOURCE_DIR", "ASAN_LIBRARY"])
-    src_path = vars["ceph_SOURCE_DIR"]
-    asan_lib_path = vars["ASAN_LIBRARY"]
+    src_path, with_asan, asan_lib_path = \
+        get_cmake_variables("ceph_SOURCE_DIR", "WITH_ASAN", "ASAN_LIBRARY")
     if src_path is None:
         # Huh, maybe we're not really in a cmake environment?
         pass
@@ -125,8 +128,8 @@ if os.path.exists(os.path.join(MYPDIR, "CMakeCache.txt")) \
         pythonlib_path = os.path.join(lib_path,
                                       "cython_modules",
                                       get_pythonlib_dir())
-
-        respawn_in_path(lib_path, pybind_path, pythonlib_path, asan_lib_path)
+        respawn_in_path(lib_path, pybind_path, pythonlib_path,
+                        asan_lib_path if with_asan else None)
 
         if 'PATH' in os.environ and bin_path not in os.environ['PATH']:
             os.environ['PATH'] = os.pathsep.join([bin_path, os.environ['PATH']])
index e821de07fb3604c771dd536460cc4dff173be242..08bfb2f3d5bff860fb241a6a40b1132724047ea0 100644 (file)
@@ -2942,8 +2942,21 @@ void Client::kick_requests_closed(MetaSession *session)
       if (req->got_unsafe) {
        lderr(cct) << __func__ << " removing unsafe request " << req->get_tid() << dendl;
        req->unsafe_item.remove_myself();
-       req->unsafe_dir_item.remove_myself();
-       req->unsafe_target_item.remove_myself();
+       if (is_dir_operation(req)) {
+         Inode *dir = req->inode();
+         assert(dir);
+         dir->set_async_err(-EIO);
+         lderr(cct) << "kick_requests_closed drop req of inode(dir) : "
+                    <<  dir->ino  << " " << req->get_tid() << dendl;
+         req->unsafe_dir_item.remove_myself();
+       }
+       if (req->target) {
+         InodeRef &in = req->target;
+         in->set_async_err(-EIO);
+         lderr(cct) << "kick_requests_closed drop req of inode : "
+                    <<  in->ino  << " " << req->get_tid() << dendl;
+         req->unsafe_target_item.remove_myself();
+       }
        signal_cond_list(req->waitfor_safe);
        unregister_request(req);
       }
@@ -3309,7 +3322,7 @@ void Client::cap_delay_requeue(Inode *in)
 }
 
 void Client::send_cap(Inode *in, MetaSession *session, Cap *cap,
-                     bool sync, int used, int want, int retain,
+                     int flags, int used, int want, int retain,
                      int flush, ceph_tid_t flush_tid)
 {
   int held = cap->issued | cap->implemented;
@@ -3320,7 +3333,6 @@ void Client::send_cap(Inode *in, MetaSession *session, Cap *cap,
 
   ldout(cct, 10) << __func__ << " " << *in
           << " mds." << session->mds_num << " seq " << cap->seq
-          << (sync ? " sync " : " async ")
           << " used " << ccap_string(used)
           << " want " << ccap_string(want)
           << " flush " << ccap_string(flush)
@@ -3395,11 +3407,13 @@ void Client::send_cap(Inode *in, MetaSession *session, Cap *cap,
   m->btime = in->btime;
   m->time_warp_seq = in->time_warp_seq;
   m->change_attr = in->change_attr;
-  if (sync)
-    m->flags |= MClientCaps::FLAG_SYNC;
-  if (!in->cap_snaps.empty())
-    m->flags |= MClientCaps::FLAG_PENDING_CAPSNAP;
-    
+
+  if (!(flags & MClientCaps::FLAG_PENDING_CAPSNAP) &&
+      !in->cap_snaps.empty() &&
+      in->cap_snaps.rbegin()->second.flush_tid == 0)
+    flags |= MClientCaps::FLAG_PENDING_CAPSNAP;
+  m->flags = flags;
+
   if (flush & CEPH_CAP_FILE_WR) {
     m->inline_version = in->inline_version;
     m->inline_data = in->inline_data;
@@ -3527,8 +3541,6 @@ void Client::check_caps(Inode *in, unsigned flags)
       used &= ~(CEPH_CAP_FILE_CACHE | CEPH_CAP_FILE_LAZYIO);
   }
 
-  if (!in->cap_snaps.empty())
-    flush_snaps(in);
 
   for (auto &p : in->caps) {
     mds_rank_t mds = p.first;
@@ -3585,17 +3597,15 @@ void Client::check_caps(Inode *in, unsigned flags)
     }
 
   ack:
-    // re-send old cap/snapcap flushes first.
-    if (session->mds_state >= MDSMap::STATE_RECONNECT &&
-       session->mds_state < MDSMap::STATE_ACTIVE &&
-       session->early_flushing_caps.count(in) == 0) {
-      ldout(cct, 20) << " reflushing caps (check_caps) on " << *in
-                    << " to mds." << session->mds_num << dendl;
-      session->early_flushing_caps.insert(in);
-      if (in->cap_snaps.size())
-       flush_snaps(in, true);
-      if (in->flushing_caps)
-       flush_caps(in, session, flags & CHECK_CAPS_SYNCHRONOUS);
+    if (&cap == in->auth_cap) {
+      if (in->flags & I_KICK_FLUSH) {
+       ldout(cct, 20) << " reflushing caps (check_caps) on " << *in
+                      << " to mds." << mds << dendl;
+       kick_flushing_caps(in, session);
+      }
+      if (!in->cap_snaps.empty() &&
+         in->cap_snaps.rbegin()->second.flush_tid == 0)
+       flush_snaps(in);
     }
 
     int flushing;
@@ -3607,8 +3617,9 @@ void Client::check_caps(Inode *in, unsigned flags)
       flush_tid = 0;
     }
 
-    send_cap(in, session, &cap, flags & CHECK_CAPS_SYNCHRONOUS, cap_used, wanted,
-            retain, flushing, flush_tid);
+    int msg_flags = (flags & CHECK_CAPS_SYNCHRONOUS) ? MClientCaps::FLAG_SYNC : 0;
+    send_cap(in, session, &cap, msg_flags, cap_used, wanted, retain,
+            flushing, flush_tid);
   }
 }
 
@@ -3693,23 +3704,63 @@ void Client::_flushed_cap_snap(Inode *in, snapid_t seq)
   flush_snaps(in);
 }
 
-void Client::flush_snaps(Inode *in, bool all_again)
+void Client::send_flush_snap(Inode *in, MetaSession *session,
+                            snapid_t follows, CapSnap& capsnap)
 {
-  ldout(cct, 10) << "flush_snaps on " << *in << " all_again " << all_again << dendl;
+  auto m = MClientCaps::create(CEPH_CAP_OP_FLUSHSNAP,
+                               in->ino, in->snaprealm->ino, 0,
+                               in->auth_cap->mseq, cap_epoch_barrier);
+  m->caller_uid = capsnap.cap_dirtier_uid;
+  m->caller_gid = capsnap.cap_dirtier_gid;
+
+  m->set_client_tid(capsnap.flush_tid);
+  m->head.snap_follows = follows;
+
+  m->head.caps = capsnap.issued;
+  m->head.dirty = capsnap.dirty;
+
+  m->head.uid = capsnap.uid;
+  m->head.gid = capsnap.gid;
+  m->head.mode = capsnap.mode;
+  m->btime = capsnap.btime;
+
+  m->size = capsnap.size;
+
+  m->head.xattr_version = capsnap.xattr_version;
+  encode(capsnap.xattrs, m->xattrbl);
+
+  m->ctime = capsnap.ctime;
+  m->btime = capsnap.btime;
+  m->mtime = capsnap.mtime;
+  m->atime = capsnap.atime;
+  m->time_warp_seq = capsnap.time_warp_seq;
+  m->change_attr = capsnap.change_attr;
+
+  if (capsnap.dirty & CEPH_CAP_FILE_WR) {
+    m->inline_version = in->inline_version;
+    m->inline_data = in->inline_data;
+  }
+
+  ceph_assert(!session->flushing_caps_tids.empty());
+  m->set_oldest_flush_tid(*session->flushing_caps_tids.begin());
+
+  session->con->send_message2(std::move(m));
+}
+
+void Client::flush_snaps(Inode *in)
+{
+  ldout(cct, 10) << "flush_snaps on " << *in << dendl;
   ceph_assert(in->cap_snaps.size());
 
   // pick auth mds
   ceph_assert(in->auth_cap);
   MetaSession *session = in->auth_cap->session;
-  int mseq = in->auth_cap->mseq;
 
   for (auto &p : in->cap_snaps) {
     CapSnap &capsnap = p.second;
-    if (!all_again) {
-      // only flush once per session
-      if (capsnap.flush_tid > 0)
-       continue;
-    }
+    // only do new flush
+    if (capsnap.flush_tid > 0)
+      continue;
 
     ldout(cct, 10) << "flush_snaps mds." << session->mds_num
             << " follows " << p.first
@@ -3719,57 +3770,18 @@ void Client::flush_snaps(Inode *in, bool all_again)
             << " writing=" << capsnap.writing
             << " on " << *in << dendl;
     if (capsnap.dirty_data || capsnap.writing)
-      continue;
+      break;
     
-    if (capsnap.flush_tid == 0) {
-      capsnap.flush_tid = ++last_flush_tid;
-      if (!in->flushing_cap_item.is_on_list())
-       session->flushing_caps.push_back(&in->flushing_cap_item);
-      session->flushing_caps_tids.insert(capsnap.flush_tid);
-    }
-
-    auto m = MClientCaps::create(CEPH_CAP_OP_FLUSHSNAP, in->ino, in->snaprealm->ino, 0, mseq,
-                                    cap_epoch_barrier);
-    m->caller_uid = capsnap.cap_dirtier_uid;
-    m->caller_gid = capsnap.cap_dirtier_gid;
-
-    m->set_client_tid(capsnap.flush_tid);
-    m->head.snap_follows = p.first;
-
-    m->head.caps = capsnap.issued;
-    m->head.dirty = capsnap.dirty;
-
-    m->head.uid = capsnap.uid;
-    m->head.gid = capsnap.gid;
-    m->head.mode = capsnap.mode;
-    m->btime = capsnap.btime;
+    capsnap.flush_tid = ++last_flush_tid;
+    session->flushing_caps_tids.insert(capsnap.flush_tid);
+    in->flushing_cap_tids[capsnap.flush_tid] = 0;
+    if (!in->flushing_cap_item.is_on_list())
+      session->flushing_caps.push_back(&in->flushing_cap_item);
 
-    m->size = capsnap.size;
-
-    m->head.xattr_version = capsnap.xattr_version;
-    encode(capsnap.xattrs, m->xattrbl);
-
-    m->ctime = capsnap.ctime;
-    m->btime = capsnap.btime;
-    m->mtime = capsnap.mtime;
-    m->atime = capsnap.atime;
-    m->time_warp_seq = capsnap.time_warp_seq;
-    m->change_attr = capsnap.change_attr;
-
-    if (capsnap.dirty & CEPH_CAP_FILE_WR) {
-      m->inline_version = in->inline_version;
-      m->inline_data = in->inline_data;
-    }
-
-    ceph_assert(!session->flushing_caps_tids.empty());
-    m->set_oldest_flush_tid(*session->flushing_caps_tids.begin());
-
-    session->con->send_message2(std::move(m));
+    send_flush_snap(in, session, p.first, capsnap);
   }
 }
 
-
-
 void Client::wait_on_list(list<Cond*>& ls)
 {
   Cond cond;
@@ -4119,9 +4131,8 @@ void Client::remove_session_caps(MetaSession *s)
   while (s->caps.size()) {
     Cap *cap = *s->caps.begin();
     InodeRef in(&cap->inode);
-    bool dirty_caps = false, cap_snaps = false;
+    bool dirty_caps = false;
     if (in->auth_cap == cap) {
-      cap_snaps = !in->cap_snaps.empty();
       dirty_caps = in->dirty_caps | in->flushing_caps;
       in->wanted_max_size = 0;
       in->requested_max_size = 0;
@@ -4129,9 +4140,7 @@ void Client::remove_session_caps(MetaSession *s)
     if (cap->wanted | cap->issued)
       in->flags |= I_CAP_DROPPED;
     remove_cap(cap, false);
-    if (cap_snaps) {
-      in->cap_snaps.clear();
-    }
+    in->cap_snaps.clear();
     if (dirty_caps) {
       lderr(cct) << __func__ << " still has dirty|flushing caps on " << *in << dendl;
       if (in->flushing_caps) {
@@ -4393,28 +4402,6 @@ void Client::flush_caps_sync()
   }
 }
 
-void Client::flush_caps(Inode *in, MetaSession *session, bool sync)
-{
-  ldout(cct, 10) << __func__ << " " << in << " mds." << session->mds_num << dendl;
-  Cap *cap = in->auth_cap;
-  ceph_assert(cap->session == session);
-
-  for (map<ceph_tid_t,int>::iterator p = in->flushing_cap_tids.begin();
-       p != in->flushing_cap_tids.end();
-       ++p) {
-    bool req_sync = false;
-
-    /* If this is a synchronous request, then flush the journal on last one */
-    if (sync && (p->first == in->flushing_cap_tids.rbegin()->first))
-      req_sync = true;
-
-    send_cap(in, session, cap, req_sync,
-            (get_caps_used(in) | in->caps_dirty()),
-            in->caps_wanted(), (cap->issued | cap->implemented),
-            p->second, p->first);
-  }
-}
-
 void Client::wait_sync_caps(Inode *in, ceph_tid_t want)
 {
   while (in->flushing_caps) {
@@ -4448,6 +4435,40 @@ void Client::wait_sync_caps(ceph_tid_t want)
   }
 }
 
+void Client::kick_flushing_caps(Inode *in, MetaSession *session)
+{
+  in->flags &= ~I_KICK_FLUSH;
+
+  Cap *cap = in->auth_cap;
+  ceph_assert(cap->session == session);
+
+  ceph_tid_t last_snap_flush = 0;
+  for (auto p = in->flushing_cap_tids.rbegin();
+       p != in->flushing_cap_tids.rend();
+       ++p) {
+    if (!p->second) {
+      last_snap_flush = p->first;
+      break;
+    }
+  }
+
+  int wanted = in->caps_wanted();
+  int used = get_caps_used(in) | in->caps_dirty();
+  auto it = in->cap_snaps.begin();
+  for (auto& p : in->flushing_cap_tids) {
+    if (p.second) {
+      int msg_flags = p.first < last_snap_flush ? MClientCaps::FLAG_PENDING_CAPSNAP : 0;
+      send_cap(in, session, cap, msg_flags, used, wanted, (cap->issued | cap->implemented),
+              p.second, p.first);
+    } else {
+      ceph_assert(it != in->cap_snaps.end());
+      ceph_assert(it->second.flush_tid == p.first);
+      send_flush_snap(in, session, it->first, it->second);
+      ++it;
+    }
+  }
+}
+
 void Client::kick_flushing_caps(MetaSession *session)
 {
   mds_rank_t mds = session->mds_num;
@@ -4455,22 +4476,15 @@ void Client::kick_flushing_caps(MetaSession *session)
 
   for (xlist<Inode*>::iterator p = session->flushing_caps.begin(); !p.end(); ++p) {
     Inode *in = *p;
-    if (session->early_flushing_caps.count(in))
-      continue;
-    ldout(cct, 20) << " reflushing caps on " << *in << " to mds." << mds << dendl;
-    if (in->cap_snaps.size())
-      flush_snaps(in, true);
-    if (in->flushing_caps)
-      flush_caps(in, session);
+    if (in->flags & I_KICK_FLUSH) {
+      ldout(cct, 20) << " reflushing caps on " << *in << " to mds." << mds << dendl;
+      kick_flushing_caps(in, session);
+    }
   }
-
-  session->early_flushing_caps.clear();
 }
 
 void Client::early_kick_flushing_caps(MetaSession *session)
 {
-  session->early_flushing_caps.clear();
-
   for (xlist<Inode*>::iterator p = session->flushing_caps.begin(); !p.end(); ++p) {
     Inode *in = *p;
     Cap *cap = in->auth_cap;
@@ -4479,14 +4493,13 @@ void Client::early_kick_flushing_caps(MetaSession *session)
     // if flushing caps were revoked, we re-send the cap flush in client reconnect
     // stage. This guarantees that MDS processes the cap flush message before issuing
     // the flushing caps to other client.
-    if ((in->flushing_caps & in->auth_cap->issued) == in->flushing_caps)
+    if ((in->flushing_caps & in->auth_cap->issued) == in->flushing_caps) {
+      in->flags |= I_KICK_FLUSH;
       continue;
+    }
 
     ldout(cct, 20) << " reflushing caps (early_kick) on " << *in
                   << " to mds." << session->mds_num << dendl;
-
-    session->early_flushing_caps.insert(in);
-
     // send_reconnect() also will reset these sequence numbers. make sure
     // sequence numbers in cap flush message match later reconnect message.
     cap->seq = 0;
@@ -4494,11 +4507,7 @@ void Client::early_kick_flushing_caps(MetaSession *session)
     cap->mseq = 0;
     cap->issued = cap->implemented;
 
-    if (in->cap_snaps.size())
-      flush_snaps(in, true);
-    if (in->flushing_caps)
-      flush_caps(in, session);
-
+    kick_flushing_caps(in, session);
   }
 }
 
@@ -4894,12 +4903,9 @@ void Client::handle_cap_import(MetaSession *session, Inode *in, const MConstRef<
   if (realm)
     put_snap_realm(realm);
   
-  if (in->auth_cap && in->auth_cap->session->mds_num == mds) {
+  if (in->auth_cap && in->auth_cap->session == session) {
     // reflush any/all caps (if we are now the auth_cap)
-    if (in->cap_snaps.size())
-      flush_snaps(in, true);
-    if (in->flushing_caps)
-      flush_caps(in, session);
+    kick_flushing_caps(in, session);
   }
 }
 
@@ -4978,6 +4984,11 @@ void Client::handle_cap_flush_ack(MetaSession *session, Inode *in, Cap *cap, con
                    << " expected is " << it->first << dendl;
   }
   for (; it != in->flushing_cap_tids.end(); ) {
+    if (!it->second) {
+      // cap snap
+      ++it;
+      continue;
+    }
     if (it->first == flush_ack_tid)
       cleaned = it->second;
     if (it->first <= flush_ack_tid) {
@@ -5018,7 +5029,7 @@ void Client::handle_cap_flush_ack(MetaSession *session, Inode *in, Cap *cap, con
       if (in->flushing_caps == 0) {
        ldout(cct, 10) << " " << *in << " !flushing" << dendl;
        num_flushing_caps--;
-       if (in->cap_snaps.empty())
+       if (in->flushing_cap_tids.empty())
          in->flushing_cap_item.remove_myself();
       }
       if (!in->caps_dirty())
@@ -5030,24 +5041,29 @@ void Client::handle_cap_flush_ack(MetaSession *session, Inode *in, Cap *cap, con
 
 void Client::handle_cap_flushsnap_ack(MetaSession *session, Inode *in, const MConstRef<MClientCaps>& m)
 {
+  ceph_tid_t flush_ack_tid = m->get_client_tid();
   mds_rank_t mds = session->mds_num;
   ceph_assert(in->caps.count(mds));
   snapid_t follows = m->get_snap_follows();
 
   if (auto it = in->cap_snaps.find(follows); it != in->cap_snaps.end()) {
     auto& capsnap = it->second;
-    if (m->get_client_tid() != capsnap.flush_tid) {
-      ldout(cct, 10) << " tid " << m->get_client_tid() << " != " << capsnap.flush_tid << dendl;
+    if (flush_ack_tid != capsnap.flush_tid) {
+      ldout(cct, 10) << " tid " << flush_ack_tid << " != " << capsnap.flush_tid << dendl;
     } else {
+      InodeRef tmp_ref(in);
       ldout(cct, 5) << __func__ << " mds." << mds << " flushed snap follows " << follows
              << " on " << *in << dendl;
-      InodeRef tmp_ref;
-      if (in->get_num_ref() == 1)
-       tmp_ref = in; // make sure inode not get freed while erasing item from in->cap_snaps
-      if (in->flushing_caps == 0 && in->cap_snaps.empty())
-       in->flushing_cap_item.remove_myself();
       session->flushing_caps_tids.erase(capsnap.flush_tid);
+      in->flushing_cap_tids.erase(capsnap.flush_tid);
+      if (in->flushing_caps == 0 && in->flushing_cap_tids.empty())
+       in->flushing_cap_item.remove_myself();
       in->cap_snaps.erase(it);
+
+      signal_cond_list(in->waitfor_caps);
+      if (session->flushing_caps_tids.empty() ||
+         *session->flushing_caps_tids.begin() > flush_ack_tid)
+       sync_cond.Signal();
     }
   } else {
     ldout(cct, 5) << __func__ << " DUP(?) mds." << mds << " flushed snap follows " << follows
@@ -8000,12 +8016,12 @@ int Client::_readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p,
     fill_statx(dn->inode, caps, &stx);
 
     uint64_t next_off = dn->offset + 1;
+    fill_dirent(&de, dn->name.c_str(), stx.stx_mode, stx.stx_ino, next_off);
     ++pd;
     if (pd == dir->readdir_cache.end())
       next_off = dir_result_t::END;
 
     Inode *in = NULL;
-    fill_dirent(&de, dn->name.c_str(), stx.stx_mode, stx.stx_ino, next_off);
     if (getref) {
       in = dn->inode.get();
       _ll_get(in);
index 755088685266832be7e41f6499cea55689686db4..742cb6812fc7e0d0a5fbc09ecf0d0b7f87d026d0 100644 (file)
@@ -651,7 +651,7 @@ public:
   int mark_caps_flushing(Inode *in, ceph_tid_t *ptid);
   void adjust_session_flushing_caps(Inode *in, MetaSession *old_s, MetaSession *new_s);
   void flush_caps_sync();
-  void flush_caps(Inode *in, MetaSession *session, bool sync=false);
+  void kick_flushing_caps(Inode *in, MetaSession *session);
   void kick_flushing_caps(MetaSession *session);
   void early_kick_flushing_caps(MetaSession *session);
   int get_caps(Inode *in, int need, int want, int *have, loff_t endoff);
@@ -670,13 +670,16 @@ public:
   void handle_cap_flushsnap_ack(MetaSession *session, Inode *in, const MConstRef<MClientCaps>& m);
   void handle_cap_grant(MetaSession *session, Inode *in, Cap *cap, const MConstRef<MClientCaps>& m);
   void cap_delay_requeue(Inode *in);
-  void send_cap(Inode *in, MetaSession *session, Cap *cap, bool sync,
+
+  void send_cap(Inode *in, MetaSession *session, Cap *cap, int flags,
                int used, int want, int retain, int flush,
                ceph_tid_t flush_tid);
 
+  void send_flush_snap(Inode *in, MetaSession *session, snapid_t follows, CapSnap& capsnap);
+
+  void flush_snaps(Inode *in);
   void get_cap_ref(Inode *in, int cap);
   void put_cap_ref(Inode *in, int cap);
-  void flush_snaps(Inode *in, bool all_again=false);
   void wait_sync_caps(Inode *in, ceph_tid_t want);
   void wait_sync_caps(ceph_tid_t want);
   void queue_cap_snap(Inode *in, SnapContext &old_snapc);
index e101596c7f17bf52ca677494508429273be9ba29..0e6586cb6697682a74e33ca13750123a323bc049 100644 (file)
@@ -113,6 +113,7 @@ struct CapSnap {
 #define I_DIR_ORDERED  2
 #define I_CAP_DROPPED  4
 #define I_SNAPDIR_OPEN 8
+#define I_KICK_FLUSH   16
 
 struct Inode {
   Client *client;
index af2d7acd76415dfa9dec2f093b0bc0dafdef1485..ba1f8d80fcd4fb5ee0dcaf18557f43c0321e9b88 100644 (file)
@@ -52,7 +52,6 @@ struct MetaSession {
   xlist<MetaRequest*> requests;
   xlist<MetaRequest*> unsafe_requests;
   std::set<ceph_tid_t> flushing_caps_tids;
-  std::set<Inode*> early_flushing_caps;
 
   MClientCapRelease::ref release;
 
index 3a810e2e91452bbbba88bd3411538f81fdac75de..09f2e790126e3a1e1d0491286d0b4b4903fb02d5 100644 (file)
@@ -4590,6 +4590,13 @@ int uuid_get(cls_method_context_t hctx, std::string *mirror_uuid) {
   return 0;
 }
 
+void sanitize_entity_inst(entity_inst_t* entity_inst) {
+  // make all addrs of type ANY because the type isn't what uniquely
+  // identifies them and clients and on-disk formats can be encoded
+  // with different backwards compatibility settings.
+  entity_inst->addr.set_type(entity_addr_t::TYPE_ANY);
+}
+
 int list_watchers(cls_method_context_t hctx,
                   std::set<entity_inst_t> *entities) {
   obj_list_watch_response_t watchers;
@@ -4601,7 +4608,10 @@ int list_watchers(cls_method_context_t hctx,
 
   entities->clear();
   for (auto &w : watchers.entries) {
-    entities->emplace(w.name, w.addr);
+    entity_inst_t entity_inst{w.name, w.addr};
+    sanitize_entity_inst(&entity_inst);
+
+    entities->insert(entity_inst);
   }
   return 0;
 }
@@ -4804,7 +4814,9 @@ struct MirrorImageStatusOnDisk : cls::rbd::MirrorImageStatus {
 
   void encode_meta(bufferlist &bl, uint64_t features) const {
     ENCODE_START(1, 1, bl);
-    encode(origin, bl, features);
+    auto sanitized_origin = origin;
+    sanitize_entity_inst(&sanitized_origin);
+    encode(sanitized_origin, bl, features);
     ENCODE_FINISH(bl);
   }
 
@@ -4816,6 +4828,7 @@ struct MirrorImageStatusOnDisk : cls::rbd::MirrorImageStatus {
   void decode_meta(bufferlist::const_iterator &it) {
     DECODE_START(1, it);
     decode(origin, it);
+    sanitize_entity_inst(&origin);
     DECODE_FINISH(it);
   }
 
index ebf2104ad96a6791b3672923a4a55dbdcf772135..9b868c55d788ba9832d15a5e61bc380458475e14 100644 (file)
@@ -1808,8 +1808,8 @@ int mirror_peer_list(librados::IoCtx *ioctx,
 
 int mirror_peer_add(librados::IoCtx *ioctx, const std::string &uuid,
                     const std::string &cluster_name,
-                    const std::string &client_name, int64_t pool_id) {
-  cls::rbd::MirrorPeer peer(uuid, cluster_name, client_name, pool_id);
+                    const std::string &client_name) {
+  cls::rbd::MirrorPeer peer(uuid, cluster_name, client_name, -1);
   bufferlist in_bl;
   encode(peer, in_bl);
 
index e03f0f410c1dd9c363ba77b4e8fb91014d3dbefb..27a64cc23b7d755851b3f60135afa85d3116fd82 100644 (file)
@@ -385,8 +385,7 @@ int mirror_peer_list(librados::IoCtx *ioctx,
                      std::vector<cls::rbd::MirrorPeer> *peers);
 int mirror_peer_add(librados::IoCtx *ioctx, const std::string &uuid,
                     const std::string &cluster_name,
-                    const std::string &client_name,
-                    int64_t pool_id = -1);
+                    const std::string &client_name);
 int mirror_peer_remove(librados::IoCtx *ioctx,
                        const std::string &uuid);
 int mirror_peer_set_client(librados::IoCtx *ioctx,
index 892ef5617e0e662cb78424953e8b7813509c0bc3..a94c1134b97a259b2d9726ed1e942aa3c97fa666 100644 (file)
@@ -481,7 +481,7 @@ void rgw_bi_log_entry::generate_test_instances(list<rgw_bi_log_entry*>& ls)
   ls.push_back(new rgw_bi_log_entry);
   ls.back()->id = "midf";
   ls.back()->object = "obj";
-  ls.back()->timestamp = ceph::real_clock::from_ceph_timespec({{2}, {3}});
+  ls.back()->timestamp = ceph::real_clock::from_ceph_timespec({init_le32(2), init_le32(3)});
   ls.back()->index_ver = 4323;
   ls.back()->tag = "tagasdfds";
   ls.back()->op = CLS_RGW_OP_DEL;
@@ -663,7 +663,7 @@ void cls_rgw_reshard_entry::generate_test_instances(list<cls_rgw_reshard_entry*>
 {
   ls.push_back(new cls_rgw_reshard_entry);
   ls.push_back(new cls_rgw_reshard_entry);
-  ls.back()->time = ceph::real_clock::from_ceph_timespec({{2}, {3}});
+  ls.back()->time = ceph::real_clock::from_ceph_timespec({init_le32(2), init_le32(3)});
   ls.back()->tenant = "tenant";
   ls.back()->bucket_name = "bucket1""";
   ls.back()->bucket_id = "bucket_id";
index d069e8f516d2a9693d949acf480d94e00d18d52e..6098f1be65938209c774f4993afa82274301aa20 100644 (file)
@@ -1093,7 +1093,7 @@ struct cls_rgw_gc_obj_info
     ls.push_back(new cls_rgw_gc_obj_info);
     ls.push_back(new cls_rgw_gc_obj_info);
     ls.back()->tag = "footag";
-    ceph_timespec ts{21, 32};
+    ceph_timespec ts{init_le32(21), init_le32(32)};
     ls.back()->time = ceph::real_clock::from_ceph_timespec(ts);
   }
 };
index 17e394b67b10a9968ddc7f1022247d4994e5c191..e80e6e231c27046608cd863cec413aa540c5b728 100644 (file)
@@ -370,11 +370,12 @@ static int cls_user_get_header(cls_method_context_t hctx, bufferlist *in, buffer
   return 0;
 }
 
-/// A method to reset the user.buckets header stats in accordance to the values
-/// seen in the user.buckets omap keys. This will not be equivalent to --sync-stats
-/// which requires comparing the values with actual bucket meta stats supplied
-/// by RGW
-static int cls_user_reset_stats(cls_method_context_t hctx, bufferlist *in, bufferlist *out /*ignore*/)
+/// A method to reset the user.buckets header stats in accordance to
+/// the values seen in the user.buckets omap keys. This is not be
+/// equivalent to --sync-stats which also re-calculates the stats for
+/// each bucket.
+static int cls_user_reset_stats(cls_method_context_t hctx,
+                               bufferlist *in, bufferlist *out /*ignore*/)
 {
   cls_user_reset_stats_op op;
 
@@ -382,27 +383,33 @@ static int cls_user_reset_stats(cls_method_context_t hctx, bufferlist *in, buffe
     auto bliter = in->cbegin();
     decode(op, bliter);
   } catch (buffer::error& err) {
-    CLS_LOG(0, "ERROR: cls_user_reset_op(): failed to decode op");
+    CLS_LOG(0, "ERROR: %s failed to decode op", __func__);
     return -EINVAL;
   }
+
   cls_user_header header;
   bool truncated = false;
   string from_index, prefix;
   do {
     map<string, bufferlist> keys;
-    int rc = cls_cxx_map_get_vals(hctx, from_index, prefix, MAX_ENTRIES, &keys, &truncated);
-
-    if (rc < 0)
+    int rc = cls_cxx_map_get_vals(hctx, from_index, prefix, MAX_ENTRIES,
+                                 &keys, &truncated);
+    if (rc < 0) {
+      CLS_LOG(0, "ERROR: %s failed to retrieve omap key-values", __func__);
       return rc;
+    }
+    CLS_LOG(20, "%s: read %lu key-values, truncated=%d",
+           __func__, keys.size(), truncated);
 
-    for (const auto&kv : keys){
+    for (const auto& kv : keys) {
       cls_user_bucket_entry e;
       try {
        auto bl = kv.second;
        auto bliter = bl.cbegin();
        decode(e, bliter);
       } catch (buffer::error& err) {
-       CLS_LOG(0, "ERROR: failed to decode bucket entry for %s", kv.first.c_str());
+       CLS_LOG(0, "ERROR: %s failed to decode bucket entry for %s",
+               __func__, kv.first.c_str());
        return -EIO;
       }
       add_header_stats(&header.stats, e);
@@ -413,6 +420,7 @@ static int cls_user_reset_stats(cls_method_context_t hctx, bufferlist *in, buffe
   header.last_stats_update = op.time;
   encode(header, bl);
 
+  CLS_LOG(20, "%s: updating header", __func__);
   return cls_cxx_map_write_header(hctx, &bl);
 }
 
index 65ba10b0f145fca64149577b00f60d31d73feb49..bd9276520dc3d964cdfc765f26055d753d625045 100644 (file)
@@ -4,6 +4,9 @@ add_library(common_buffer_obj OBJECT
 add_library(common_texttable_obj OBJECT
   TextTable.cc)
 
+add_library(common_prioritycache_obj OBJECT
+  PriorityCache.cc)
+
 set(common_srcs
   AsyncOpTracker.cc
   BackTrace.cc
@@ -20,7 +23,6 @@ set(common_srcs
   Mutex.cc
   OutputDataSocket.cc
   PluginRegistry.cc
-  PriorityCache.cc
   Readahead.cc
   SloppyCRCMap.cc
   SubProcess.cc
@@ -175,7 +177,7 @@ target_link_libraries(crc32
 
 add_library(common_utf8 STATIC utf8.c)
 
-if(WITH_LIBCEPHFS OR WITH_KRBD)
+if(HAVE_KEYUTILS)
   set(parse_secret_srcs
     secret.c)
   add_library(parse_secret_objs OBJECT ${parse_secret_srcs})
index 2137c1d6609e1c5d787b925d5234b3de707faff4..ceb551bcbf45813a88cfbcfde772939eb42050de 100644 (file)
@@ -5,6 +5,7 @@
 #define CEPH_OS_BLUESTORE_CHECKSUMMER
 
 #include "xxHash/xxhash.h"
+#include "include/byteorder.h"
 
 class Checksummer {
 public:
@@ -69,7 +70,7 @@ public:
 
   struct crc32c {
     typedef uint32_t init_value_t;
-    typedef __le32 value_t;
+    typedef ceph_le32 value_t;
 
     // we have no execution context/state.
     typedef int state_t;
@@ -78,7 +79,7 @@ public:
     static void fini(state_t *state) {
     }
 
-    static value_t calc(
+    static init_value_t calc(
       state_t state,
       init_value_t init_value,
       size_t len,
@@ -90,7 +91,7 @@ public:
 
   struct crc32c_16 {
     typedef uint32_t init_value_t;
-    typedef __le16 value_t;
+    typedef ceph_le16 value_t;
 
     // we have no execution context/state.
     typedef int state_t;
@@ -99,7 +100,7 @@ public:
     static void fini(state_t *state) {
     }
 
-    static value_t calc(
+    static init_value_t calc(
       state_t state,
       init_value_t init_value,
       size_t len,
@@ -120,7 +121,7 @@ public:
     static void fini(state_t *state) {
     }
 
-    static value_t calc(
+    static init_value_t calc(
       state_t state,
       init_value_t init_value,
       size_t len,
@@ -132,7 +133,7 @@ public:
 
   struct xxhash32 {
     typedef uint32_t init_value_t;
-    typedef __le32 value_t;
+    typedef ceph_le32 value_t;
 
     typedef XXH32_state_t *state_t;
     static void init(state_t *s) {
@@ -142,7 +143,7 @@ public:
       XXH32_freeState(*s);
     }
 
-    static value_t calc(
+    static init_value_t calc(
       state_t state,
       init_value_t init_value,
       size_t len,
@@ -161,7 +162,7 @@ public:
 
   struct xxhash64 {
     typedef uint64_t init_value_t;
-    typedef __le64 value_t;
+    typedef ceph_le64 value_t;
 
     typedef XXH64_state_t *state_t;
     static void init(state_t *s) {
@@ -171,7 +172,7 @@ public:
       XXH64_freeState(*s);
     }
 
-    static value_t calc(
+    static init_value_t calc(
       state_t state,
       init_value_t init_value,
       size_t len,
@@ -250,7 +251,7 @@ public:
     pv += offset / csum_block_size;
     size_t pos = offset;
     while (length > 0) {
-      typename Alg::value_t v = Alg::calc(state, -1, csum_block_size, p);
+      typename Alg::init_value_t v = Alg::calc(state, -1, csum_block_size, p);
       if (*pv != v) {
        if (bad_csum) {
          *bad_csum = v;
index f2498c9329d8342e2c06521f911780aa4ed1ffe7..786272c1692b1021b4819eedebd6c1708ab566a9 100644 (file)
 // -----------------------
 namespace ceph {
 
+std::string
+fixed_u_to_string(uint64_t num, int scale)
+{
+       std::ostringstream t;
+
+       t.fill('0');
+       t.width(scale + 1);
+       t << num;
+       int len = t.str().size();
+       return t.str().substr(0,len - scale) + "." + t.str().substr(len - scale);
+}
+
+std::string
+fixed_to_string(int64_t num, int scale)
+{
+       std::ostringstream t;
+       bool neg = num < 0;
+       if (neg) num = -num;
+
+       t.fill('0');
+       t.width(scale + 1);
+       t << num;
+       int len = t.str().size();
+       return (neg ? "-" : "") + t.str().substr(0,len - scale) + "." + t.str().substr(len - scale);
+}
+
 /*
  * FormatterAttrs(const char *attr, ...)
  *
index 1363f1f6768772a6c081bd0427f7d8fd5040d4d2..c4cdd552373b0a5ac9e650c10c80e84734bd2bb3 100644 (file)
@@ -299,5 +299,7 @@ namespace ceph {
     std::vector< std::string > m_column_name;
   };
 
+  std::string fixed_to_string(int64_t num, int scale);
+  std::string fixed_u_to_string(uint64_t num, int scale);
 }
 #endif
index cbcf174304ad507647b452fd30205c3fd2db4d49..bb4366b6cc61e9cccaa396d986d2805589658eff 100644 (file)
  */
 
 #include "PriorityCache.h"
+#include "common/dout.h"
+#include "perfglue/heap_profiler.h"
+#define dout_context cct
+#define dout_subsys ceph_subsys_prioritycache
+#undef dout_prefix
+#define dout_prefix *_dout << "prioritycache "
 
-namespace PriorityCache {
-  int64_t get_chunk(uint64_t usage, uint64_t total_bytes) {
+namespace PriorityCache
+{
+  int64_t get_chunk(uint64_t usage, uint64_t total_bytes)
+  {
     uint64_t chunk = total_bytes;
 
     // Find the nearest power of 2
@@ -50,6 +58,341 @@ namespace PriorityCache {
     return val;
   }
 
-  PriCache::~PriCache() {
+  Manager::Manager(CephContext *c,
+                   uint64_t min,
+                   uint64_t max,
+                   uint64_t target,
+                   bool reserve_extra) :
+      cct(c),
+      caches{},
+      min_mem(min),
+      max_mem(max),
+      target_mem(target),
+      tuned_mem(min),
+      reserve_extra(reserve_extra)
+  {
+    PerfCountersBuilder b(cct, "prioritycache", 
+                          MallocStats::M_FIRST, MallocStats::M_LAST);
+
+    b.add_u64(MallocStats::M_TARGET_BYTES, "target_bytes",
+              "target process memory usage in bytes", "t",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(MallocStats::M_MAPPED_BYTES, "mapped_bytes",
+              "total bytes mapped by the process", "m",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(MallocStats::M_UNMAPPED_BYTES, "unmapped_bytes",
+              "unmapped bytes that the kernel has yet to reclaimed", "u",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(MallocStats::M_HEAP_BYTES, "heap_bytes",
+              "aggregate bytes in use by the heap", "h",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(MallocStats::M_CACHE_BYTES, "cache_bytes",
+              "current memory available for caches.", "c",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    logger = b.create_perf_counters();
+    cct->get_perfcounters_collection()->add(logger);
+
+    tune_memory();
+  }
+
+  Manager::~Manager()
+  {
+    clear();
+    cct->get_perfcounters_collection()->remove(logger);
+    delete logger;
+  }
+
+  void Manager::tune_memory()
+  {
+    size_t heap_size = 0;
+    size_t unmapped = 0;
+    uint64_t mapped = 0;
+
+    ceph_heap_release_free_memory();
+    ceph_heap_get_numeric_property("generic.heap_size", &heap_size);
+    ceph_heap_get_numeric_property("tcmalloc.pageheap_unmapped_bytes", &unmapped);
+    mapped = heap_size - unmapped;
+
+    uint64_t new_size = tuned_mem;
+    new_size = (new_size < max_mem) ? new_size : max_mem;
+    new_size = (new_size > min_mem) ? new_size : min_mem;
+
+    // Approach the min/max slowly, but bounce away quickly.
+    if ((uint64_t) mapped < target_mem) {
+      double ratio = 1 - ((double) mapped / target_mem);
+      new_size += ratio * (max_mem - new_size);
+    } else { 
+      double ratio = 1 - ((double) target_mem / mapped);
+      new_size -= ratio * (new_size - min_mem);
+    }
+
+    ldout(cct, 5) << __func__
+                  << " target: " << target_mem
+                  << " mapped: " << mapped  
+                  << " unmapped: " << unmapped
+                  << " heap: " << heap_size
+                  << " old mem: " << tuned_mem
+                  << " new mem: " << new_size << dendl;
+
+    tuned_mem = new_size;
+
+    logger->set(MallocStats::M_TARGET_BYTES, target_mem);
+    logger->set(MallocStats::M_MAPPED_BYTES, mapped);
+    logger->set(MallocStats::M_UNMAPPED_BYTES, unmapped);
+    logger->set(MallocStats::M_HEAP_BYTES, heap_size);
+    logger->set(MallocStats::M_CACHE_BYTES, new_size);
+  }
+
+  void Manager::insert(const std::string& name, std::shared_ptr<PriCache> c,
+                       bool enable_perf_counters)
+  {
+    ceph_assert(!caches.count(name));
+    ceph_assert(!indexes.count(name));
+
+    caches.emplace(name, c);
+
+    if (!enable_perf_counters) {
+      return;
+    }
+
+    // TODO: If we ever assign more than
+    // PERF_COUNTER_MAX_BOUND - PERF_COUNTER_LOWER_BOUND perf counters for
+    // priority caching we could run out of slots.  Recycle them some day?
+    // Also note that start and end are *exclusive*.
+    int start = cur_index++;
+    int end = cur_index + Extra::E_LAST + 1;
+
+    ceph_assert(end < PERF_COUNTER_MAX_BOUND);
+    indexes.emplace(name, std::vector<int>(Extra::E_LAST + 1));
+
+    PerfCountersBuilder b(cct, "prioritycache:" + name, start, end);
+
+    b.add_u64(cur_index + Priority::PRI0, "pri0_bytes",
+              "bytes allocated to pri0", "p0",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI1, "pri1_bytes",
+              "bytes allocated to pri1", "p1",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI2, "pri2_bytes",
+              "bytes allocated to pri2", "p2",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI3, "pri3_bytes",
+              "bytes allocated to pri3", "p3",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI4, "pri4_bytes",
+              "bytes allocated to pri4", "p4",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI5, "pri5_bytes",
+              "bytes allocated to pri5", "p5",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI6, "pri6_bytes",
+              "bytes allocated to pri6", "p6",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI7, "pri7_bytes",
+              "bytes allocated to pri7", "p7",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI8, "pri8_bytes",
+              "bytes allocated to pri8", "p8",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI9, "pri9_bytes",
+              "bytes allocated to pri9", "p9",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI10, "pri10_bytes",
+              "bytes allocated to pri10", "p10",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Priority::PRI11, "pri11_bytes",
+              "bytes allocated to pri11", "p11",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Extra::E_RESERVED, "reserved_bytes",
+              "bytes reserved for future growth.", "r",
+              PerfCountersBuilder::PRIO_INTERESTING, unit_t(UNIT_BYTES));
+
+    b.add_u64(cur_index + Extra::E_COMMITTED, "committed_bytes",
+              "total bytes committed,", "c",
+              PerfCountersBuilder::PRIO_CRITICAL, unit_t(UNIT_BYTES));
+
+    for (int i = 0; i < Extra::E_LAST+1; i++) {
+      indexes[name][i] = cur_index + i;
+    }
+
+    auto l = b.create_perf_counters();
+    loggers.emplace(name, l);
+    cct->get_perfcounters_collection()->add(l);
+
+    cur_index = end;
+  }
+
+  void Manager::erase(const std::string& name)
+  {
+    auto li = loggers.find(name);
+    if (li != loggers.end()) {
+      cct->get_perfcounters_collection()->remove(li->second);
+      delete li->second;
+      loggers.erase(li);
+    }
+    indexes.erase(name);
+    caches.erase(name);
+  }
+
+  void Manager::clear()
+  {
+    auto li = loggers.begin();
+    while (li != loggers.end()) {
+      cct->get_perfcounters_collection()->remove(li->second);
+      delete li->second;
+      li = loggers.erase(li);
+    }
+    indexes.clear();
+    caches.clear();
+  }
+
+  void Manager::balance()
+  {
+    int64_t mem_avail = tuned_mem;
+    // Each cache is going to get a little extra from get_chunk, so shrink the
+    // available memory here to compensate.
+    if (reserve_extra) {
+      mem_avail -= get_chunk(1, tuned_mem) * caches.size();
+    }
+
+    if (mem_avail < 0) {
+      // There's so little memory available that just assigning a chunk per
+      // cache pushes us over the limit. Set mem_avail to 0 and continue to
+      // ensure each priority's byte counts are zeroed in balance_priority.
+      mem_avail = 0;
+    }
+
+    // Assign memory for each priority level
+    for (int i = 0; i < Priority::LAST+1; i++) {
+      ldout(cct, 10) << __func__ << " assigning cache bytes for PRI: " << i << dendl;
+
+      auto pri = static_cast<Priority>(i);
+      balance_priority(&mem_avail, pri);
+
+      // Update the per-priority perf counters
+      for (auto &l : loggers) {
+        auto it = caches.find(l.first);
+        ceph_assert(it != caches.end());
+
+        auto bytes = it->second->get_cache_bytes(pri);
+        l.second->set(indexes[it->first][pri], bytes);
+      }
+    }
+    // assert if we assigned more memory than is available.
+    ceph_assert(mem_avail >= 0);
+
+    for (auto &l : loggers) {
+      auto it = caches.find(l.first);
+      ceph_assert(it != caches.end());
+
+      // Commit the new cache size
+      int64_t committed = it->second->commit_cache_size(tuned_mem);
+
+      // Update the perf counters
+      int64_t alloc = it->second->get_cache_bytes();
+
+      l.second->set(indexes[it->first][Extra::E_RESERVED], committed - alloc);
+      l.second->set(indexes[it->first][Extra::E_COMMITTED], committed);
+    }
+  }
+
+  void Manager::balance_priority(int64_t *mem_avail, Priority pri)
+  {
+    std::unordered_map<std::string, std::shared_ptr<PriCache>> tmp_caches = caches;
+    double cur_ratios = 0;
+    double new_ratios = 0;
+    uint64_t round = 0;
+
+    // First, zero this priority's bytes, sum the initial ratios.
+    for (auto it = caches.begin(); it != caches.end(); it++) {
+      it->second->set_cache_bytes(pri, 0);
+      cur_ratios += it->second->get_cache_ratio();
+    }
+
+    // For other priorities, loop until caches are satisified or we run out of
+    // memory (stop if we can't guarantee a full byte allocation).
+    while (!tmp_caches.empty() && *mem_avail > static_cast<int64_t>(tmp_caches.size())) {
+      uint64_t total_assigned = 0;
+      for (auto it = tmp_caches.begin(); it != tmp_caches.end();) {
+        int64_t cache_wants = it->second->request_cache_bytes(pri, tuned_mem);
+        // Usually the ratio should be set to the fraction of the current caches'
+        // assigned ratio compared to the total ratio of all caches that still
+        // want memory.  There is a special case where the only caches left are
+        // all assigned 0% ratios but still want memory.  In that case, give 
+        // them an equal shot at the remaining memory for this priority.
+        double ratio = 1.0 / tmp_caches.size();
+        if (cur_ratios > 0) {
+          ratio = it->second->get_cache_ratio() / cur_ratios;
+        }
+        int64_t fair_share = static_cast<int64_t>(*mem_avail * ratio);
+
+        ldout(cct, 10) << __func__ << " " << it->first
+                       << " pri: " << (int) pri
+                       << " round: " << round
+                       << " wanted: " << cache_wants
+                       << " ratio: " << it->second->get_cache_ratio()
+                       << " cur_ratios: " << cur_ratios
+                       << " fair_share: " << fair_share
+                       << " mem_avail: " << *mem_avail
+                       << dendl;
+
+        if (cache_wants > fair_share) {
+          // If we want too much, take what we can get but stick around for more
+          it->second->add_cache_bytes(pri, fair_share);
+          total_assigned += fair_share;
+          new_ratios += it->second->get_cache_ratio();
+          ++it;
+        } else {
+          // Otherwise assign only what we want
+          if (cache_wants > 0) {
+            it->second->add_cache_bytes(pri, cache_wants);
+            total_assigned += cache_wants;
+          }
+          // Either the cache didn't want anything or got what it wanted, so
+          // remove it from the tmp list.
+          it = tmp_caches.erase(it);
+        }
+      }
+      // Reset the ratios 
+      *mem_avail -= total_assigned;
+      cur_ratios = new_ratios;
+      new_ratios = 0;
+      ++round;
+    }
+
+    // If this is the last priority, divide up any remaining memory based
+    // solely on the ratios.
+    if (pri == Priority::LAST) {
+      uint64_t total_assigned = 0;
+      for (auto it = caches.begin(); it != caches.end(); it++) {
+        double ratio = it->second->get_cache_ratio();
+        int64_t fair_share = static_cast<int64_t>(*mem_avail * ratio);
+        it->second->set_cache_bytes(Priority::LAST, fair_share);
+        total_assigned += fair_share;
+      }
+      *mem_avail -= total_assigned;
+      return;
+    }
+  }
+
+  PriCache::~PriCache()
+  {
   }
 }
index 8dcb3e03a7cc408ac4b71db25748a14c0bfc635e..6ac607022414838d32587836fce5bdf3b3129976 100644 (file)
 
 #include <stdint.h>
 #include <string>
+#include <vector>
+#include <memory>
+#include <unordered_map>
+#include "common/perf_counters.h"
+#include "include/ceph_assert.h"
 
 namespace PriorityCache {
+  // Reserve 16384 slots for PriorityCache perf counters
+  const int PERF_COUNTER_LOWER_BOUND = 1073741824;
+  const int PERF_COUNTER_MAX_BOUND = 1073758208;
+
+  enum MallocStats {
+    M_FIRST = PERF_COUNTER_LOWER_BOUND,
+    M_TARGET_BYTES,
+    M_MAPPED_BYTES,
+    M_UNMAPPED_BYTES,
+    M_HEAP_BYTES,
+    M_CACHE_BYTES,
+    M_LAST,
+  };
+
   enum Priority {
-    PRI0,  // Reserved for special items
-    PRI1,  // High priority cache items
-    PRI2,  // Medium priority cache items
-    PRI3,  // Low priority cache items
-    LAST = PRI3,
+    PRI0,
+    PRI1,
+    PRI2,
+    PRI3,
+    PRI4,
+    PRI5,
+    PRI6,
+    PRI7,
+    PRI8,
+    PRI9,
+    PRI10,
+    PRI11,
+    LAST = PRI11,
+  };
+
+  enum Extra {
+    E_RESERVED = Priority::LAST+1,
+    E_COMMITTED,
+    E_LAST = E_COMMITTED,
   };
 
   int64_t get_chunk(uint64_t usage, uint64_t total_bytes);
@@ -68,6 +101,49 @@ namespace PriorityCache {
     // Get the name of this cache.
     virtual std::string get_cache_name() const = 0;
   };
+
+  class Manager {
+    CephContext* cct = nullptr;
+    PerfCounters* logger;
+    std::unordered_map<std::string, PerfCounters*> loggers;
+    std::unordered_map<std::string, std::vector<int>> indexes;
+    std::unordered_map<std::string, std::shared_ptr<PriCache>> caches;
+
+    // Start perf counter slots after the malloc stats.
+    int cur_index = MallocStats::M_LAST;
+
+    uint64_t min_mem = 0;
+    uint64_t max_mem = 0;
+    uint64_t target_mem = 0;
+    uint64_t tuned_mem = 0;
+    bool reserve_extra;
+
+  public:
+    Manager(CephContext *c, uint64_t min, uint64_t max, uint64_t target,
+            bool reserve_extra);
+    ~Manager();
+    void set_min_memory(uint64_t min) {
+      min_mem = min;
+    }
+    void set_max_memory(uint64_t max) {
+      max_mem = max;
+    }
+    void set_target_memory(uint64_t target) {
+      target_mem = target;
+    }
+    uint64_t get_tuned_mem() const {
+      return tuned_mem;
+    }
+    void insert(const std::string& name, const std::shared_ptr<PriCache> c,
+                bool enable_perf_counters);
+    void erase(const std::string& name);
+    void clear();
+    void tune_memory();
+    void balance();
+
+  private:
+    void balance_priority(int64_t *mem_avail, Priority pri);
+  };
 }
 
 #endif
index bc32755c30e887d517dd790a90321182214fa6d8..0ab65fca52f01a04abcda146393724d62f478985 100644 (file)
@@ -16,6 +16,8 @@
 #ifndef CEPH_THREAD_H
 #define CEPH_THREAD_H
 
+#include <functional>
+#include <string_view>
 #include <system_error>
 #include <thread>
 
@@ -68,13 +70,14 @@ std::string get_thread_name(const std::thread& t);
 void kill(std::thread& t, int signal);
 
 template<typename Fun, typename... Args>
-std::thread make_named_thread(const std::string& s,
+std::thread make_named_thread(std::string_view n,
                              Fun&& fun,
                              Args&& ...args) {
-  auto t = std::thread(std::forward<Fun>(fun),
-                      std::forward<Args>(args)...);
-  set_thread_name(t, s);
-  return t;
-}
 
+  return std::thread([n = std::string(n)](auto&& fun, auto&& ...args) {
+                      ceph_pthread_setname(pthread_self(), n.data());
+                      std::invoke(std::forward<Fun>(fun),
+                                  std::forward<Args>(args)...);
+                    }, std::forward<Fun>(fun), std::forward<Args>(args)...);
+}
 #endif
index a978a6d698433f981175b1f95aa8cbec532838eb..2ccdd9a1036658ed676f15583da7f76a6fb544a6 100644 (file)
@@ -41,6 +41,7 @@ class CephContext;
 
 /// Pool of threads that share work submitted to multiple work queues.
 class ThreadPool : public md_config_obs_t {
+protected:
   CephContext *cct;
   std::string name;
   std::string thread_name;
@@ -69,7 +70,7 @@ public:
     void reset_tp_timeout();
     void suspend_tp_timeout();
   };
-private:
+protected:
 
   /// Basic interface to a work queue used by the worker threads.
   struct WorkQueue_ {
@@ -450,7 +451,7 @@ public:
     std::list<T *> m_items;
     uint32_t m_processing;
   };
-private:
+protected:
   std::vector<WorkQueue_*> work_queues;
   int next_work_queue = 0;
  
@@ -472,7 +473,7 @@ private:
 
   void start_threads();
   void join_old_threads();
-  void worker(WorkThread *wt);
+  virtual void worker(WorkThread *wt);
 
 public:
   ThreadPool(CephContext *cct_, std::string nm, std::string tn, int n, const char *option = NULL);
index c7f21f7b0f206c4b73b2d8abfc4e619c311f0bb4..25e8d8fafdcd2c15c32fe0dcd9240ba80a60f8d9 100644 (file)
@@ -317,6 +317,8 @@ bool AdminSocket::do_accept()
          c = "foo";
          break;
        }
+       //wrap command with new protocol
+       c = "{\"prefix\": \"" + c + "\"}";
        break;
       }
     } else {
@@ -334,8 +336,28 @@ bool AdminSocket::do_accept()
     }
   }
 
-  bool rval = false;
+  bool rval;
+  bufferlist out;
+  rval = execute_command(c, out);
+  if (rval) {
+    uint32_t len = htonl(out.length());
+    int ret = safe_write(connection_fd, &len, sizeof(len));
+    if (ret < 0) {
+      lderr(m_cct) << "AdminSocket: error writing response length "
+          << cpp_strerror(ret) << dendl;
+      rval = false;
+    } else {
+      if (out.write_fd(connection_fd) >= 0)
+        rval = true;
+    }
+  }
 
+  retry_sys_call(::close, connection_fd);
+  return rval;
+}
+
+int AdminSocket::execute_command(const std::string& cmd, ceph::bufferlist& out)
+{
   cmdmap_t cmdmap;
   string format;
   vector<string> cmdvec;
@@ -343,14 +365,13 @@ bool AdminSocket::do_accept()
   cmdvec.push_back(cmd);
   if (!cmdmap_from_json(cmdvec, &cmdmap, errss)) {
     ldout(m_cct, 0) << "AdminSocket: " << errss.str() << dendl;
-    retry_sys_call(::close, connection_fd);
     return false;
   }
+  string match;
   try {
     cmd_getval(m_cct, cmdmap, "format", format);
-    cmd_getval(m_cct, cmdmap, "prefix", c);
+    cmd_getval(m_cct, cmdmap, "prefix", match);
   } catch (const bad_cmd_get& e) {
-    retry_sys_call(::close, connection_fd);
     return false;
   }
   if (format != "json" && format != "json-pretty" &&
@@ -359,7 +380,6 @@ bool AdminSocket::do_accept()
 
   std::unique_lock l(lock);
   decltype(hooks)::iterator p;
-  string match = c;
   while (match.size()) {
     p = hooks.find(match);
     if (p != hooks.cend())
@@ -375,53 +395,41 @@ bool AdminSocket::do_accept()
     }
   }
 
-  bufferlist out;
   if (p == hooks.cend()) {
-    lderr(m_cct) << "AdminSocket: request '" << c << "' not defined" << dendl;
-  } else {
-    string args;
-    if (match != c) {
-      args = c.substr(match.length() + 1);
-    }
-
-    // Drop lock to avoid cycles in cases where the hook takes
-    // the same lock that was held during calls to register/unregister,
-    // and set in_hook to allow unregister to wait for us before
-    // removing this hook.
-    in_hook = true;
-    auto match_hook = p->second.hook;
-    l.unlock();
-    bool success = (validate(match, cmdmap, out) &&
-                    match_hook->call(match, cmdmap, format, out));
-    l.lock();
-    in_hook = false;
-    in_hook_cond.notify_all();
-
-    if (!success) {
-      ldout(m_cct, 0) << "AdminSocket: request '" << match << "' args '" << args
-                     << "' to " << match_hook << " failed" << dendl;
-      out.append("failed");
-    } else {
-      ldout(m_cct, 5) << "AdminSocket: request '" << match << "' '" << args
-                      << "' to " << match_hook
-                      << " returned " << out.length() << " bytes" << dendl;
-    }
-    uint32_t len = htonl(out.length());
-    int ret = safe_write(connection_fd, &len, sizeof(len));
-    if (ret < 0) {
-      lderr(m_cct) << "AdminSocket: error writing response length "
-                  << cpp_strerror(ret) << dendl;
-    } else {
-      if (out.write_fd(connection_fd) >= 0)
-       rval = true;
-    }
+    lderr(m_cct) << "AdminSocket: request '" << cmd << "' not defined" << dendl;
+    return false;
+  }
+  string args;
+  if (match != cmd) {
+    args = cmd.substr(match.length() + 1);
   }
-  l.unlock();
 
-  retry_sys_call(::close, connection_fd);
-  return rval;
+  // Drop lock to avoid cycles in cases where the hook takes
+  // the same lock that was held during calls to register/unregister,
+  // and set in_hook to allow unregister to wait for us before
+  // removing this hook.
+  in_hook = true;
+  auto match_hook = p->second.hook;
+  l.unlock();
+  bool success = (validate(match, cmdmap, out) &&
+      match_hook->call(match, cmdmap, format, out));
+  l.lock();
+  in_hook = false;
+  in_hook_cond.notify_all();
+  if (!success) {
+    ldout(m_cct, 0) << "AdminSocket: request '" << match << "' args '" << args
+        << "' to " << match_hook << " failed" << dendl;
+    out.append("failed");
+  } else {
+    ldout(m_cct, 5) << "AdminSocket: request '" << match << "' '" << args
+        << "' to " << match_hook
+        << " returned " << out.length() << " bytes" << dendl;
+  }
+  return true;
 }
 
+
+
 bool AdminSocket::validate(const std::string& command,
                           const cmdmap_t& cmdmap,
                           bufferlist& out) const
index 9f2c5ee87e233da0a0c9d0ae493b579d5c399df2..3603fde35efd5eaa4c4e67a934ffafdaf5ef5685 100644 (file)
@@ -94,6 +94,7 @@ public:
 
   void chown(uid_t uid, gid_t gid);
   void chmod(mode_t mode);
+  int execute_command(const std::string& cmd, ceph::bufferlist& out);
 
 private:
 
index 3d70344d212ca0759acefef17254158c92ba7bab..d454593686fa5c07be073f25ffbb3786cd1d7095 100644 (file)
@@ -196,6 +196,9 @@ public:
   {
     while (1) {
       std::unique_lock l(_lock);
+      if (_exit_thread) {
+        break;
+      }
 
       if (_cct->_conf->heartbeat_interval) {
         auto interval = ceph::make_timespan(_cct->_conf->heartbeat_interval);
index 51aeaa842d74e00570d960fbd7bc5bc1dd937e2b..ce7c35d83ce855386696afeba128795e790caeab 100644 (file)
@@ -81,12 +81,17 @@ class ConfigProxy {
 
   std::map<md_config_obs_t*, CallGateRef> obs_call_gate;
 
-  void call_observers(rev_obs_map_t &rev_obs) {
+  void call_observers(std::unique_lock<ceph::recursive_mutex>& locker,
+                      rev_obs_map_t& rev_obs) {
+    // observers are notified outside of lock
+    locker.unlock();
     for (auto& [obs, keys] : rev_obs) {
       obs->handle_conf_change(*this, keys);
-      // this can be done outside the lock as call_gate_enter()
-      // and remove_observer() are serialized via lock
-      call_gate_leave(obs);
+    }
+    locker.lock();
+
+    for (auto& rev_ob : rev_obs) {
+      call_gate_leave(rev_ob.first);
     }
   }
 
@@ -184,16 +189,14 @@ public:
   }
   // for those want to reexpand special meta, e.g, $pid
   void finalize_reexpand_meta() {
+    std::unique_lock locker(lock);
     rev_obs_map_t rev_obs;
-    {
-      std::lock_guard l(lock);
-      if (config.finalize_reexpand_meta(values, obs_mgr)) {
-        _gather_changes(values.changed, &rev_obs, nullptr);
-        values.changed.clear();
-      }
+    if (config.finalize_reexpand_meta(values, obs_mgr)) {
+      _gather_changes(values.changed, &rev_obs, nullptr);
+      values.changed.clear();
     }
 
-    call_observers(rev_obs);
+    call_observers(locker, rev_obs);
   }
   void add_observer(md_config_obs_t* obs) {
     std::lock_guard l(lock);
@@ -207,16 +210,14 @@ public:
     obs_mgr.remove_observer(obs);
   }
   void call_all_observers() {
+    std::unique_lock locker(lock);
     rev_obs_map_t rev_obs;
-    {
-      std::lock_guard l(lock);
-      obs_mgr.for_each_observer(
-        [this, &rev_obs](md_config_obs_t *obs, const std::string &key) {
-          map_observer_changes(obs, key, &rev_obs);
-        });
-    }
+    obs_mgr.for_each_observer(
+      [this, &rev_obs](md_config_obs_t *obs, const std::string &key) {
+        map_observer_changes(obs, key, &rev_obs);
+      });
 
-    call_observers(rev_obs);
+    call_observers(locker, rev_obs);
   }
   void set_safe_to_start_threads() {
     config.set_safe_to_start_threads();
@@ -242,18 +243,17 @@ public:
   }
   // Expand all metavariables. Make any pending observer callbacks.
   void apply_changes(std::ostream* oss) {
+    std::unique_lock locker(lock);
     rev_obs_map_t rev_obs;
-    {
-      std::lock_guard l{lock};
-      // apply changes until the cluster name is assigned
-      if (!values.cluster.empty()) {
-        // meta expands could have modified anything.  Copy it all out again.
-        _gather_changes(values.changed, &rev_obs, oss);
-        values.changed.clear();
-      }
+
+    // apply changes until the cluster name is assigned
+    if (!values.cluster.empty()) {
+      // meta expands could have modified anything.  Copy it all out again.
+      _gather_changes(values.changed, &rev_obs, oss);
+      values.changed.clear();
     }
 
-    call_observers(rev_obs);
+    call_observers(locker, rev_obs);
   }
   void _gather_changes(std::set<std::string> &changes,
                        rev_obs_map_t *rev_obs, std::ostream* oss) {
@@ -279,29 +279,25 @@ public:
   int set_mon_vals(CephContext *cct,
                   const map<std::string,std::string>& kv,
                   md_config_t::config_callback config_cb) {
-    int ret;
+    std::unique_lock locker(lock);
+    int ret = config.set_mon_vals(cct, values, obs_mgr, kv, config_cb);
+
     rev_obs_map_t rev_obs;
-    {
-      std::lock_guard l{lock};
-      ret = config.set_mon_vals(cct, values, obs_mgr, kv, config_cb);
-      _gather_changes(values.changed, &rev_obs, nullptr);
-      values.changed.clear();
-    }
+    _gather_changes(values.changed, &rev_obs, nullptr);
+    values.changed.clear();
 
-    call_observers(rev_obs);
+    call_observers(locker, rev_obs);
     return ret;
   }
   int injectargs(const std::string &s, std::ostream *oss) {
-    int ret;
+    std::unique_lock locker(lock);
+    int ret = config.injectargs(values, obs_mgr, s, oss);
+
     rev_obs_map_t rev_obs;
-    {
-      std::lock_guard l{lock};
-      ret = config.injectargs(values, obs_mgr, s, oss);
-      _gather_changes(values.changed, &rev_obs, oss);
-      values.changed.clear();
-    }
+    _gather_changes(values.changed, &rev_obs, oss);
+    values.changed.clear();
 
-    call_observers(rev_obs);
+    call_observers(locker, rev_obs);
     return ret;
   }
   void parse_env(unsigned entity_type,
index 340e740b4699a41430002957bb3d305ec71cf457..79d9c1fa73782ada588fe2705d388fb2f10373ba 100644 (file)
@@ -201,6 +201,9 @@ OPTION(mon_compact_on_bootstrap, OPT_BOOL)  // trigger leveldb compaction on boo
 OPTION(mon_compact_on_trim, OPT_BOOL)       // compact (a prefix) when we trim old states
 OPTION(mon_osd_cache_size, OPT_INT)  // the size of osdmaps cache, not to rely on underlying store's cache
 
+OPTION(mon_osd_cache_size_min, OPT_U64) // minimum amount of memory to cache osdmaps
+OPTION(mon_memory_target, OPT_U64) // amount of mapped memory for osdmaps
+OPTION(mon_memory_autotune, OPT_BOOL) // autotune cache memory for osdmap
 OPTION(mon_cpu_threads, OPT_INT)
 OPTION(mon_osd_mapping_pgs_per_chunk, OPT_INT)
 OPTION(mon_clean_pg_upmaps_per_chunk, OPT_INT)
@@ -343,6 +346,7 @@ OPTION(mon_client_ping_timeout, OPT_DOUBLE)   // fail if we don't hear back
 OPTION(mon_client_hunt_interval_backoff, OPT_DOUBLE) // each time we reconnect to a monitor, double our timeout
 OPTION(mon_client_hunt_interval_max_multiple, OPT_DOUBLE) // up to a max of 10*default (30 seconds)
 OPTION(mon_client_max_log_entries_per_message, OPT_INT)
+OPTION(mon_client_directed_command_retry, OPT_INT)
 OPTION(client_cache_size, OPT_INT)
 OPTION(client_cache_mid, OPT_FLOAT)
 OPTION(client_use_random_mds, OPT_BOOL)
@@ -714,6 +718,7 @@ OPTION(osd_max_push_cost, OPT_U64)  // max size of push message
 OPTION(osd_max_push_objects, OPT_U64)  // max objects in single push op
 OPTION(osd_max_scrubs, OPT_INT)
 OPTION(osd_scrub_during_recovery, OPT_BOOL) // Allow new scrubs to start while recovery is active on the OSD
+OPTION(osd_repair_during_recovery, OPT_BOOL) // Allow new requested repairs to start while recovery is active on the OSD
 OPTION(osd_scrub_begin_hour, OPT_INT)
 OPTION(osd_scrub_end_hour, OPT_INT)
 OPTION(osd_scrub_begin_week_day, OPT_INT)
@@ -781,6 +786,7 @@ OPTION(osd_debug_random_push_read_error, OPT_DOUBLE)
 OPTION(osd_debug_verify_cached_snaps, OPT_BOOL)
 OPTION(osd_debug_deep_scrub_sleep, OPT_FLOAT)
 OPTION(osd_debug_no_acting_change, OPT_BOOL)
+OPTION(osd_debug_pretend_recovery_active, OPT_BOOL)
 OPTION(osd_enable_op_tracker, OPT_BOOL) // enable/disable OSD op tracking
 OPTION(osd_num_op_tracker_shard, OPT_U32) // The number of shards for holding the ops
 OPTION(osd_op_history_size, OPT_U32)    // Max number of completed ops to track
@@ -931,6 +937,7 @@ OPTION(bdev_async_discard, OPT_BOOL)
 OPTION(objectstore_blackhole, OPT_BOOL)
 
 OPTION(bluefs_alloc_size, OPT_U64)
+OPTION(bluefs_shared_alloc_size, OPT_U64)
 OPTION(bluefs_max_prefetch, OPT_U64)
 OPTION(bluefs_min_log_runway, OPT_U64)  // alloc when we get this low
 OPTION(bluefs_max_log_runway, OPT_U64)  // alloc this much at a time
@@ -1038,12 +1045,14 @@ OPTION(bluestore_max_deferred_txc, OPT_U64)
 OPTION(bluestore_rocksdb_options, OPT_STR)
 OPTION(bluestore_fsck_on_mount, OPT_BOOL)
 OPTION(bluestore_fsck_on_mount_deep, OPT_BOOL)
+OPTION(bluestore_fsck_quick_fix_on_mount, OPT_BOOL)
 OPTION(bluestore_fsck_on_umount, OPT_BOOL)
 OPTION(bluestore_fsck_on_umount_deep, OPT_BOOL)
 OPTION(bluestore_fsck_on_mkfs, OPT_BOOL)
 OPTION(bluestore_fsck_on_mkfs_deep, OPT_BOOL)
 OPTION(bluestore_sync_submit_transaction, OPT_BOOL) // submit kv txn in queueing thread (not kv_sync_thread)
 OPTION(bluestore_fsck_read_bytes_cap, OPT_U64)
+OPTION(bluestore_fsck_quick_fix_threads, OPT_INT)
 OPTION(bluestore_throttle_bytes, OPT_U64)
 OPTION(bluestore_throttle_deferred_bytes, OPT_U64)
 OPTION(bluestore_throttle_cost_per_io_hdd, OPT_U64)
@@ -1072,7 +1081,7 @@ OPTION(bluestore_debug_permit_any_bdev_label, OPT_BOOL)
 OPTION(bluestore_debug_random_read_err, OPT_DOUBLE)
 OPTION(bluestore_debug_inject_bug21040, OPT_BOOL)
 OPTION(bluestore_debug_inject_csum_err_probability, OPT_FLOAT)
-OPTION(bluestore_no_per_pool_stats_tolerance, OPT_STR)
+OPTION(bluestore_fsck_error_on_no_per_pool_stats, OPT_BOOL)
 OPTION(bluestore_warn_on_bluefs_spillover, OPT_BOOL)
 OPTION(bluestore_warn_on_legacy_statfs, OPT_BOOL)
 OPTION(bluestore_log_op_age, OPT_DOUBLE)
@@ -1262,6 +1271,10 @@ OPTION(rados_tracing, OPT_BOOL) // true if LTTng-UST tracepoints should be enabl
 OPTION(nss_db_path, OPT_STR) // path to nss db
 
 
+OPTION(rgw_max_attr_name_len, OPT_SIZE)
+OPTION(rgw_max_attr_size, OPT_SIZE)
+OPTION(rgw_max_attrs_num_in_req, OPT_U64)
+
 OPTION(rgw_max_chunk_size, OPT_INT)
 OPTION(rgw_put_obj_min_window_size, OPT_INT)
 OPTION(rgw_put_obj_max_window_size, OPT_INT)
@@ -1397,6 +1410,10 @@ OPTION(rgw_nfs_max_gc, OPT_INT) /* max gc events per cycle */
 OPTION(rgw_nfs_write_completion_interval_s, OPT_INT) /* stateless (V3)
                                                          * commit
                                                          * delay */
+OPTION(rgw_nfs_s3_fast_attrs, OPT_BOOL) /* use fast S3 attrs from
+                                        * bucket index--currently
+                                        * assumes NFS mounts are
+                                        * immutable */
 
 OPTION(rgw_zone, OPT_STR) // zone name
 OPTION(rgw_zone_root_pool, OPT_STR)    // pool where zone specific info is stored
index 4d42dfedc97882598ad481bb034f57776d451776..cc10924dc51163db73d29d1bd35aba8bd4a1d03c 100644 (file)
@@ -1370,6 +1370,23 @@ std::vector<Option> get_global_options() {
     .add_service("mon")
     .set_description("maximum number of OSDMaps to cache in memory"),
 
+    Option("mon_osd_cache_size_min", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
+    .set_default(128_M)
+    .add_service("mon")
+    .set_description("The minimum amount of bytes to be kept mapped in memory for osd monitor caches."),
+
+    Option("mon_memory_target", Option::TYPE_SIZE, Option::LEVEL_BASIC)
+    .set_default(2_G)
+    .set_flag(Option::FLAG_RUNTIME)
+    .add_service("mon")
+    .set_description("The amount of bytes pertaining to osd monitor caches and kv cache to be kept mapped in memory with cache auto-tuning enabled"),
+
+    Option("mon_memory_autotune", Option::TYPE_BOOL, Option::LEVEL_BASIC)
+    .set_default(true)
+    .set_flag(Option::FLAG_RUNTIME)
+    .add_service("mon")
+    .set_description("Autotune the cache memory being used for osd monitors and kv database"),
+
     Option("mon_cpu_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(4)
     .add_service("mon")
@@ -1727,6 +1744,24 @@ std::vector<Option> get_global_options() {
     .add_service("mgr")
     .set_description("Issue a health warning if there are misplaced objects"),
 
+    Option("mon_warn_on_too_few_osds", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(true)
+    .add_service("mgr")
+    .set_description("Issue a health warning if there are fewer OSDs than osd_pool_default_size"),
+
+    Option("mon_warn_on_slow_ping_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(0)
+    .add_service("mgr")
+    .set_description("Override mon_warn_on_slow_ping_ratio with specified threshold in milliseconds")
+    .add_see_also("mon_warn_on_slow_ping_ratio"),
+
+    Option("mon_warn_on_slow_ping_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(.05)
+    .add_service("mgr")
+    .set_description("Issue a health warning if heartbeat ping longer than percentage of osd_heartbeat_grace")
+    .add_see_also("osd_heartbeat_grace")
+    .add_see_also("mon_warn_on_slow_ping_time"),
+
     Option("mon_max_snap_prune_per_epoch", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
     .set_default(100)
     .add_service("mon")
@@ -2235,6 +2270,10 @@ std::vector<Option> get_global_options() {
     .set_default(1000)
     .set_description(""),
 
+    Option("mon_client_directed_command_retry", Option::TYPE_INT, Option::LEVEL_DEV)
+    .set_default(2)
+    .set_description("Number of times to try sending a comamnd directed at a specific monitor"),
+
     Option("mon_max_pool_pg_num", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
     .set_default(65536)
     .set_description(""),
@@ -3331,9 +3370,9 @@ std::vector<Option> get_global_options() {
     .set_default(15_min)
     .set_description(""),
 
-    Option("osd_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+    Option("osd_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_DEV)
     .set_default(6)
-    .set_min_max(1, 86400)
+    .set_min_max(1, 60)
     .set_description("Interval (in seconds) between peer pings"),
 
     Option("osd_heartbeat_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
@@ -3375,6 +3414,11 @@ std::vector<Option> get_global_options() {
     .set_default(30)
     .set_description(""),
 
+    Option("osd_mon_heartbeat_stat_stale", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+    .set_default(1_hr)
+    .set_description("Stop reporting on heartbeat ping times not updated for this many seconds.")
+    .set_long_description("Stop reporting on old heartbeat information unless this is set to zero"),
+
     Option("osd_mon_report_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(5)
     .set_description("Frequency of OSD reports to mon for peer failures, fullness status changes"),
@@ -3459,6 +3503,10 @@ std::vector<Option> get_global_options() {
     .set_default(false)
     .set_description("Allow scrubbing when PGs on the OSD are undergoing recovery"),
 
+    Option("osd_repair_during_recovery", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("Allow requested repairing when PGs on the OSD are undergoing recovery"),
+
     Option("osd_scrub_begin_hour", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(0)
     .set_description("Restrict scrubbing to this hour of the day or later")
@@ -3768,6 +3816,10 @@ std::vector<Option> get_global_options() {
     Option("osd_debug_no_purge_strays", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(false),
 
+    Option("osd_debug_pretend_recovery_active", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .set_description(""),
+
     Option("osd_enable_op_tracker", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(true)
     .set_description(""),
@@ -3918,6 +3970,7 @@ std::vector<Option> get_global_options() {
 
     Option("rocksdb_cache_size", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
     .set_default(512_M)
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description(""),
 
     Option("rocksdb_cache_row_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
@@ -3953,7 +4006,7 @@ std::vector<Option> get_global_options() {
     .set_description(""),
 
     Option("rocksdb_enable_rmrange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
-    .set_default(true)
+    .set_default(false)
     .set_description("Refer to github.com/facebook/rocksdb/wiki/DeleteRange-Implementation"),
 
     Option("rocksdb_max_items_rmrange", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
@@ -3977,7 +4030,7 @@ std::vector<Option> get_global_options() {
     .set_long_description("A downside of setting rocksdb_cache_index_and_filter_blocks to true is that regular data can push indices and filters out of memory.  Setting this option to true means they are cached with higher priority than other data and should typically stay in the block cache."),
 
     Option("rocksdb_pin_l0_filter_and_index_blocks_in_cache", Option::TYPE_BOOL, Option::LEVEL_DEV)
-    .set_default(true)
+    .set_default(false)
     .set_description("Whether to pin Level 0 indices and bloom filters in the block cache")
     .set_long_description("A downside of setting rocksdb_cache_index_and_filter_blocks to true is that regular data can push indices and filters out of memory.  Setting this option to true means that level 0 SST files will always have their indices and filters pinned in the block cache."),
 
@@ -4246,7 +4299,11 @@ std::vector<Option> get_global_options() {
 
     Option("bluefs_alloc_size", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
     .set_default(1_M)
-    .set_description(""),
+    .set_description("Allocation unit size for DB and WAL devices"),
+
+    Option("bluefs_shared_alloc_size", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
+    .set_default(64_K)
+    .set_description("Allocation unit size for primary/shared device"),
 
     Option("bluefs_max_prefetch", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
     .set_default(1_M)
@@ -4681,6 +4738,10 @@ std::vector<Option> get_global_options() {
     .set_default(false)
     .set_description("Run deep fsck at mount when bluestore_fsck_on_mount is set to true"),
 
+    Option("bluestore_fsck_quick_fix_on_mount", Option::TYPE_BOOL, Option::LEVEL_DEV)
+      .set_default(true)
+      .set_description("Do quick-fix for the store at mount"),
+
     Option("bluestore_fsck_on_umount", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(false)
     .set_description("Run fsck at umount"),
@@ -4706,6 +4767,10 @@ std::vector<Option> get_global_options() {
     .set_flag(Option::FLAG_RUNTIME)
     .set_description("Maximum bytes read at once by deep fsck"),
 
+    Option("bluestore_fsck_quick_fix_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
+      .set_default(2)
+      .set_description("Number of additional threads to perform quick-fix (shallow fsck) command"),
+
     Option("bluestore_throttle_bytes", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
     .set_default(64_M)
     .set_flag(Option::FLAG_RUNTIME)
@@ -4833,15 +4898,9 @@ std::vector<Option> get_global_options() {
     .set_default(0.0)
     .set_description("inject crc verification errors into bluestore device reads"),
 
-    Option("bluestore_no_per_pool_stats_tolerance", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default("until_repair")
-    .set_flag(Option::FLAG_RUNTIME)
-    .set_enum_allowed({"enforce", "until_repair", "until_fsck"})
-    .set_description("Specified how to treat lack of per-pool stats, e.g. caused by an upgrade")
-    .set_long_description(
-      "'until_fsck' will tolerate the case for regular ops and fail on fsck or repair, the latter will fix the issue, "
-      "'until_repair' will tolerate for regular ops and fsck. Repair indicates and fixes the issue, "
-      "'enforce' will unconditionally use global stats mode."),
+    Option("bluestore_fsck_error_on_no_per_pool_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("Make fsck error (instead of warn) when bluestore lacks per-pool stats, e.g., after an upgrade"),
 
     Option("bluestore_warn_on_bluefs_spillover", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(true)
@@ -5512,6 +5571,14 @@ std::vector<Option> get_global_options() {
     .set_description("")
     .add_service({"mon", "osd"})
     .set_long_description("This sets the gss target service name."),
+
+    Option("debug_disable_randomized_ping", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .set_description("Disable heartbeat ping randomization for testing purposes"),
+
+    Option("debug_heartbeat_testing_span", Option::TYPE_INT, Option::LEVEL_DEV)
+    .set_default(0)
+    .set_description("Override 60 second periods for testing only"),
   });
 }
 
@@ -5641,7 +5708,7 @@ std::vector<Option> get_rgw_options() {
         "will be located in the path that is specified here. "),
 
     Option("rgw_enable_apis", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default("s3, s3website, swift, swift_auth, admin, sts")
+    .set_default("s3, s3website, swift, swift_auth, admin, sts, pubsub")
     .set_description("A list of set of RESTful APIs that rgw handles."),
 
     Option("rgw_cache_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
@@ -6091,6 +6158,12 @@ std::vector<Option> get_rgw_options() {
     .set_default(10)
     .set_description(""),
 
+    Option("rgw_nfs_s3_fast_attrs", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
+    .set_default(false)
+    .set_description("use fast S3 attrs from bucket index (immutable only)")
+    .set_long_description("use fast S3 attrs from bucket index (assumes NFS "
+                         "mounts are immutable)"),
+
     Option("rgw_rados_pool_autoscale_bias", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
     .set_default(4.0)
     .set_min_max(0.01, 100000.0)
@@ -6614,7 +6687,7 @@ std::vector<Option> get_rgw_options() {
     .set_default(1000)
     .set_description("Max number of buckets per user")
     .set_long_description(
-        "A user can create this many buckets. Zero means unlimmited, negative number means "
+        "A user can create this many buckets. Zero means unlimited, negative number means "
         "user cannot create any buckets (although user will retain buckets already created."),
 
     Option("rgw_objexp_gc_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
@@ -7546,6 +7619,10 @@ std::vector<Option> get_mds_options() {
     .set_default(64_K)
     .set_description("maximum aggregate size of extended attributes on a file"),
 
+    Option("mds_cache_trim_interval", Option::TYPE_SECS, Option::LEVEL_ADVANCED)
+    .set_default(1)
+    .set_description("interval in seconds between cache trimming"),
+
     Option("mds_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(0)
     .set_description("maximum number of inodes in MDS cache (<=0 is unlimited)")
index 0c57c02482b4de2f9dafd1c08475ec967ca5cc27..36105b0e6b91917a32be28ab2f75c15e967a062e 100644 (file)
@@ -126,7 +126,7 @@ void PerfCountersCollectionImpl::dump_formatted_generic(
     bool schema,
     bool histograms,
     const std::string &logger,
-    const std::string &counter)
+    const std::string &counter) const
 {
   f->open_object_section("perfcounter_collection");
   
@@ -350,7 +350,7 @@ void PerfCounters::reset()
 }
 
 void PerfCounters::dump_formatted_generic(Formatter *f, bool schema,
-    bool histograms, const std::string &counter)
+    bool histograms, const std::string &counter) const
 {
   f->open_object_section(m_name.c_str());
   
index dca8885815ebfdde74dd5353efe936d52e7d624a..7087040fc914d0ecc5b453606d8e6e3c9158e12c 100644 (file)
@@ -243,11 +243,11 @@ public:
 
   void reset();
   void dump_formatted(ceph::Formatter *f, bool schema,
-                      const std::string &counter = "") {
+                      const std::string &counter = "") const {
     dump_formatted_generic(f, schema, false, counter);
   }
   void dump_formatted_histograms(ceph::Formatter *f, bool schema,
-                                 const std::string &counter = "") {
+                                 const std::string &counter = "") const {
     dump_formatted_generic(f, schema, true, counter);
   }
   pair<uint64_t, uint64_t> get_tavg_ns(int idx) const;
@@ -274,7 +274,7 @@ private:
   PerfCounters(const PerfCounters &rhs);
   PerfCounters& operator=(const PerfCounters &rhs);
   void dump_formatted_generic(ceph::Formatter *f, bool schema, bool histograms,
-                              const std::string &counter = "");
+                              const std::string &counter = "") const;
 
   typedef std::vector<perf_counter_data_any_d> perf_counter_data_vec_t;
 
@@ -321,13 +321,13 @@ public:
 
   void dump_formatted(ceph::Formatter *f, bool schema,
                       const std::string &logger = "",
-                      const std::string &counter = "") {
+                      const std::string &counter = "") const {
     dump_formatted_generic(f, schema, false, logger, counter);
   }
 
   void dump_formatted_histograms(ceph::Formatter *f, bool schema,
                                  const std::string &logger = "",
-                                 const std::string &counter = "") {
+                                 const std::string &counter = "") const {
     dump_formatted_generic(f, schema, true, logger, counter);
   }
 
@@ -348,7 +348,7 @@ public:
 private:
   void dump_formatted_generic(ceph::Formatter *f, bool schema, bool histograms,
                               const std::string &logger = "",
-                              const std::string &counter = "");
+                              const std::string &counter = "") const;
 
   perf_counters_set_t m_loggers;
 
index 633e3b3e8f06f08ab408fb57622ef8f5fafe7421..22369af38fb7cbdb0bc0ad94f85de93ef67be2aa 100644 (file)
@@ -153,7 +153,8 @@ ssize_t safe_splice_exact(int fd_in, off_t *off_in, int fd_out,
 #endif
 
 int safe_write_file(const char *base, const char *file,
-                   const char *val, size_t vallen)
+                   const char *val, size_t vallen,
+                   unsigned mode)
 {
   int ret;
   char fn[PATH_MAX];
@@ -168,7 +169,7 @@ int safe_write_file(const char *base, const char *file,
 
   snprintf(fn, sizeof(fn), "%s/%s", base, file);
   snprintf(tmp, sizeof(tmp), "%s/%s.tmp", base, file);
-  fd = open(tmp, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+  fd = open(tmp, O_WRONLY|O_CREAT|O_TRUNC, mode);
   if (fd < 0) {
     ret = errno;
     return -ret;
index af8ca700d418113ea1c3c589c23b97fd3ded6e31..7ccbf37b6042e4f819f08c34ee67ecfcf9008dcb 100644 (file)
@@ -62,9 +62,10 @@ extern "C" {
    * Safe functions to read and write an entire file.
    */
   int safe_write_file(const char *base, const char *file,
-                       const char *val, size_t vallen);
+                     const char *val, size_t vallen,
+                     unsigned mode);
   int safe_read_file(const char *base, const char *file,
-                      char *val, size_t vallen);
+                    char *val, size_t vallen);
 
 #ifdef __cplusplus
 }
index cf9ec8d7d365d75a7d7ebd5dabe8083c51ba72d1..61a74b8154c863f1324c222a5f44b4ec5b43df11 100644 (file)
@@ -135,6 +135,9 @@ struct inconsistent_obj_wrapper : librados::inconsistent_obj_t {
   void set_hinfo_inconsistency() {
     errors |= obj_err_t::HINFO_INCONSISTENCY;
   }
+  void set_size_too_large() {
+    errors |= obj_err_t::SIZE_TOO_LARGE;
+  }
   void add_shard(const pg_shard_t& pgs, const shard_info_wrapper& shard);
   void set_auth_missing(const hobject_t& hoid,
                         const map<pg_shard_t, ScrubMap*>&,
index 8f92fb0a7f01bce100e69c6f99be4369cbe55abe..83fcf10df51daec7c00e82a65e88096cf3840fb2 100644 (file)
@@ -31,13 +31,13 @@ int read_secret_from_file(const char *filename, char *secret, size_t max_len)
   fd = open(filename, O_RDONLY);
   if (fd < 0) {
     perror("unable to read secretfile");
-    return -1;
+    return -errno;
   }
   len = safe_read(fd, secret, max_len);
   if (len <= 0) {
     perror("unable to read secret from file");
     close(fd);
-    return -1;
+    return len ? len : -ENODATA;
   }
   end = secret;
   while (end < secret + len && *end && *end != '\n' && *end != '\r')
index 77905e929ef17d927e0911c8448a7f7804d99758..6e8a452eba91ae53879388a1583be209eb1d024d 100644 (file)
@@ -22,6 +22,8 @@ template <class K, class V, class C = std::less<K>, class H = std::hash<K> >
 class SimpleLRU {
   ceph::mutex lock = ceph::make_mutex("SimpleLRU::lock");
   size_t max_size;
+  size_t max_bytes = 0;
+  size_t total_bytes = 0;
   ceph::unordered_map<K, typename list<pair<K, V> >::iterator, H> contents;
   list<pair<K, V> > lru;
   map<K, V, C> pinned;
@@ -33,12 +35,26 @@ class SimpleLRU {
     }
   }
 
+  void trim_cache_bytes() {
+    while(total_bytes > max_bytes) {
+      total_bytes -= lru.back().second.length();
+      contents.erase(lru.back().first);
+      lru.pop_back();
+    }
+  }
+
   void _add(K key, V&& value) {
     lru.emplace_front(key, std::move(value)); // can't move key because we access it below
     contents[key] = lru.begin();
     trim_cache();
   }
 
+  void _add_bytes(K key, V&& value) {
+    lru.emplace_front(key, std::move(value)); // can't move key because we access it below
+    contents[key] = lru.begin();
+    trim_cache_bytes();
+  }
+
 public:
   SimpleLRU(size_t max_size) : max_size(max_size) {
     contents.rehash(max_size);
@@ -69,6 +85,7 @@ public:
       contents.find(key);
     if (i == contents.end())
       return;
+    total_bytes -= i->second->second.length();
     lru.erase(i->second);
     contents.erase(i);
   }
@@ -79,6 +96,22 @@ public:
     trim_cache();
   }
 
+  size_t get_size() {
+    std::lock_guard l(lock);
+    return contents.size();
+  }
+
+  void set_bytes(size_t num_bytes) {
+    std::lock_guard l(lock);
+    max_bytes = num_bytes;
+    trim_cache_bytes();
+  }
+
+  size_t get_bytes() {
+    std::lock_guard l(lock);
+    return total_bytes;
+  }
+
   bool lookup(K key, V *out) {
     std::lock_guard l(lock);
     typename ceph::unordered_map<K, typename list<pair<K, V> >::iterator, H>::iterator i =
@@ -100,6 +133,12 @@ public:
     std::lock_guard l(lock);
     _add(std::move(key), std::move(value));
   }
+
+  void add_bytes(K key, V value) {
+    std::lock_guard l(lock);
+    total_bytes += value.length();
+    _add_bytes(std::move(key), std::move(value));
+  }
 };
 
 #endif
index 24f49285405011c5b47013ec0ad61761de791a56..18443a0482eb98181205cc940ccca78712c5d38d 100644 (file)
@@ -78,3 +78,4 @@ SUBSYS(mgr, 1, 5)
 SUBSYS(mgrc, 1, 5)
 SUBSYS(dpdk, 1, 5)
 SUBSYS(eventtrace, 1, 5)
+SUBSYS(prioritycache, 1, 5)
index a2f58b19d644d3a84323f0380be9ec8f66e034c4..c6f660fe150b86fd1631fb8cfe644157418847c3 100644 (file)
@@ -149,42 +149,42 @@ public:
   };
 
   struct Op {
-    __le32 op;
-    __le32 cid;
-    __le32 oid;
-    __le64 off;
-    __le64 len;
-    __le32 dest_cid;
-    __le32 dest_oid;                  //OP_CLONE, OP_CLONERANGE
-    __le64 dest_off;                  //OP_CLONERANGE
+    ceph_le32 op;
+    ceph_le32 cid;
+    ceph_le32 oid;
+    ceph_le64 off;
+    ceph_le64 len;
+    ceph_le32 dest_cid;
+    ceph_le32 dest_oid;               //OP_CLONE, OP_CLONERANGE
+    ceph_le64 dest_off;               //OP_CLONERANGE
     union {
       struct {
-        __le32 hint_type;             //OP_COLL_HINT
+        ceph_le32 hint_type;          //OP_COLL_HINT
       };
       struct {
-        __le32 alloc_hint_flags;      //OP_SETALLOCHINT
+        ceph_le32 alloc_hint_flags;   //OP_SETALLOCHINT
       };
     };
-    __le64 expected_object_size;      //OP_SETALLOCHINT
-    __le64 expected_write_size;       //OP_SETALLOCHINT
-    __le32 split_bits;                //OP_SPLIT_COLLECTION2,OP_COLL_SET_BITS,
+    ceph_le64 expected_object_size;   //OP_SETALLOCHINT
+    ceph_le64 expected_write_size;    //OP_SETALLOCHINT
+    ceph_le32 split_bits;             //OP_SPLIT_COLLECTION2,OP_COLL_SET_BITS,
                                       //OP_MKCOLL
-    __le32 split_rem;                 //OP_SPLIT_COLLECTION2
+    ceph_le32 split_rem;              //OP_SPLIT_COLLECTION2
   } __attribute__ ((packed)) ;
 
   struct TransactionData {
-    __le64 ops;
-    __le32 largest_data_len;
-    __le32 largest_data_off;
-    __le32 largest_data_off_in_data_bl;
-    __le32 fadvise_flags;
+    ceph_le64 ops;
+    ceph_le32 largest_data_len;
+    ceph_le32 largest_data_off;
+    ceph_le32 largest_data_off_in_data_bl;
+    ceph_le32 fadvise_flags;
 
     TransactionData() noexcept :
-    ops(0),
-      largest_data_len(0),
-      largest_data_off(0),
-      largest_data_off_in_data_bl(0),
-       fadvise_flags(0) { }
+    ops(init_le64(0)),
+      largest_data_len(init_le32(0)),
+      largest_data_off(init_le32(0)),
+      largest_data_off_in_data_bl(init_le32(0)),
+       fadvise_flags(init_le32(0)) { }
 
       // override default move operations to reset default values
     TransactionData(TransactionData&& other) noexcept :
@@ -498,13 +498,13 @@ public:
   /// operations are removed from the parameter Transaction
   void append(Transaction& other) {
 
-    data.ops += other.data.ops;
+    data.ops = data.ops + other.data.ops;
     if (other.data.largest_data_len > data.largest_data_len) {
       data.largest_data_len = other.data.largest_data_len;
       data.largest_data_off = other.data.largest_data_off;
       data.largest_data_off_in_data_bl = data_bl.length() + other.data.largest_data_off_in_data_bl;
     }
-    data.fadvise_flags |= other.data.fadvise_flags;
+    data.fadvise_flags = data.fadvise_flags | other.data.fadvise_flags;
     on_applied.splice(on_applied.end(), other.on_applied);
     on_commit.splice(on_commit.end(), other.on_commit);
     on_applied_sync.splice(on_applied_sync.end(), other.on_applied_sync);
@@ -777,7 +777,7 @@ public:
   void nop() {
     Op* _op = _get_next_op();
     _op->op = OP_NOP;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /**
    * touch
@@ -790,7 +790,7 @@ public:
     _op->op = OP_TOUCH;
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /**
    * Write data to an offset within an object. If the object is too
@@ -824,7 +824,7 @@ public:
       // we are about to
       data.largest_data_off_in_data_bl = orig_len + sizeof(__u32);  
     }
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /**
    * zero out the indicated byte range within an object. Some
@@ -843,7 +843,7 @@ public:
     _op->oid = _get_object_id(oid);
     _op->off = off;
     _op->len = len;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Discard all data in the object beyond the specified size.
   void truncate(const coll_t& cid, const ghobject_t& oid, uint64_t off) {
@@ -852,7 +852,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     _op->off = off;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Remove an object. All four parts of the object are removed.
   void remove(const coll_t& cid, const ghobject_t& oid) {
@@ -860,7 +860,7 @@ public:
     _op->op = OP_REMOVE;
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Set an xattr of an object
   void setattr(const coll_t& cid, const ghobject_t& oid,
@@ -879,7 +879,7 @@ public:
     _op->oid = _get_object_id(oid);
     encode(s, data_bl);
     encode(val, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Set multiple xattrs of an object
   void setattrs(const coll_t& cid, const ghobject_t& oid,
@@ -890,7 +890,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(attrset, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Set multiple xattrs of an object
   void setattrs(const coll_t& cid, const ghobject_t& oid,
@@ -901,7 +901,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(attrset, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// remove an xattr from an object
   void rmattr(const coll_t& cid, const ghobject_t& oid, const char *name) {
@@ -916,7 +916,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(s, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// remove all xattrs from an object
   void rmattrs(const coll_t& cid, const ghobject_t& oid) {
@@ -924,7 +924,7 @@ public:
     _op->op = OP_RMATTRS;
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /**
    * Clone an object into another object.
@@ -944,7 +944,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     _op->dest_oid = _get_object_id(noid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /**
    * Clone a byte range from one object to another.
@@ -969,7 +969,7 @@ public:
     _op->off = srcoff;
     _op->len = srclen;
     _op->dest_off = dstoff;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   
   /// Create the collection
@@ -978,7 +978,7 @@ public:
     _op->op = OP_MKCOLL;
     _op->cid = _get_coll_id(cid);
     _op->split_bits = bits;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   
   /**
@@ -996,7 +996,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->hint_type = type;
     encode(hint, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   
   /// remove the collection, the collection must be empty
@@ -1004,7 +1004,7 @@ public:
     Op* _op = _get_next_op();
     _op->op = OP_RMCOLL;
     _op->cid = _get_coll_id(cid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   void collection_move(const coll_t& cid, const coll_t &oldcid,
                       const ghobject_t& oid)
@@ -1016,13 +1016,13 @@ public:
     _op->cid = _get_coll_id(oldcid);
     _op->oid = _get_object_id(oid);
     _op->dest_cid = _get_coll_id(cid);
-    data.ops++;
+    data.ops = data.ops + 1;
     
     _op = _get_next_op();
     _op->op = OP_COLL_REMOVE;
     _op->cid = _get_coll_id(oldcid);
     _op->oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   void collection_move_rename(const coll_t& oldcid, const ghobject_t& oldoid,
                              const coll_t &cid, const ghobject_t& oid) {
@@ -1032,7 +1032,7 @@ public:
     _op->oid = _get_object_id(oldoid);
     _op->dest_cid = _get_coll_id(cid);
     _op->dest_oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   void try_rename(const coll_t &cid, const ghobject_t& oldoid,
                  const ghobject_t& oid) {
@@ -1041,7 +1041,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oldoid);
     _op->dest_oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   
   /// Remove omap from oid
@@ -1053,7 +1053,7 @@ public:
     _op->op = OP_OMAP_CLEAR;
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   /// Set keys on oid omap.  Replaces duplicate keys.
   void omap_setkeys(
@@ -1067,7 +1067,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(attrset, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
     /// Set keys on an oid omap (bufferlist variant).
@@ -1081,7 +1081,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     data_bl.append(attrset_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Remove keys from oid omap
@@ -1096,7 +1096,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(keys, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Remove keys from oid omap
@@ -1110,7 +1110,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     data_bl.append(keys_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
   
   /// Remove key range from oid omap
@@ -1127,7 +1127,7 @@ public:
     _op->oid = _get_object_id(oid);
     encode(first, data_bl);
     encode(last, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Set omap header
@@ -1142,7 +1142,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->oid = _get_object_id(oid);
     encode(bl, data_bl);
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Split collection based on given prefixes, objects matching the specified
@@ -1158,7 +1158,7 @@ public:
     _op->dest_cid = _get_coll_id(destination);
     _op->split_bits = bits;
     _op->split_rem = rem;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Merge collection into another.
@@ -1171,7 +1171,7 @@ public:
     _op->cid = _get_coll_id(cid);
     _op->dest_cid = _get_coll_id(destination);
     _op->split_bits = bits;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   void collection_set_bits(
@@ -1181,7 +1181,7 @@ public:
     _op->op = OP_COLL_SET_BITS;
     _op->cid = _get_coll_id(cid);
     _op->split_bits = bits;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   /// Set allocation hint for an object
@@ -1200,7 +1200,7 @@ public:
     _op->expected_object_size = expected_object_size;
     _op->expected_write_size = expected_write_size;
     _op->alloc_hint_flags = flags;
-    data.ops++;
+    data.ops = data.ops + 1;
   }
 
   void encode(bufferlist& bl) const {
index adebd41e74bd56befe936fbdf31e45ec7eeed0c1..68ccae88bea655aa4a56a553423a992602718691 100644 (file)
@@ -252,7 +252,7 @@ void CyanStore::write_meta(const std::string& key,
   std::string v = value;
   v += "\n";
   if (int r = safe_write_file(path.c_str(), key.c_str(),
-                              v.c_str(), v.length());
+                              v.c_str(), v.length(), 0600);
       r < 0) {
     throw std::runtime_error{fmt::format("unable to write_meta({})", key)};
   }
index d75cdd1dd7fea8ac828bdfc4083444b0f1e0060c..049ea5e312945b476b7ce926c79706c4fa73579a 100644 (file)
@@ -10,8 +10,12 @@ endif()
 
 find_package(Threads)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+if(CMAKE_CXX_STANDARD OR CMAKE_CXX_FLAGS MATCHES "-std=(c|gnu)\\+\\+")
+  # use existing settings if available
+else()
+  set(CMAKE_CXX_STANDARD 11)
+  set(CMAKE_CXX_STANDARD_REQUIRED ON)
+endif()
 
 add_subdirectory(src)
 
index eb8bbfd1a4dbbb68bd9f7785fa3fb90a4fb39fe0..07fda649b6e134ff1363ae150dd098e97b3d3baf 100644 (file)
@@ -226,21 +226,30 @@ global_init(const std::map<std::string,std::string> *defaults,
     gid_t gid = 0;
     std::string uid_string;
     std::string gid_string;
+    std::string home_directory;
     if (g_conf()->setuser.length()) {
+      char buf[4096];
+      struct passwd pa;
+      struct passwd *p = 0;
+
       uid = atoi(g_conf()->setuser.c_str());
-      if (!uid) {
-       char buf[4096];
-       struct passwd pa;
-       struct passwd *p = 0;
+      if (uid) {
+        getpwuid_r(uid, &pa, buf, sizeof(buf), &p);
+      } else {
        getpwnam_r(g_conf()->setuser.c_str(), &pa, buf, sizeof(buf), &p);
-       if (!p) {
+        if (!p) {
          cerr << "unable to look up user '" << g_conf()->setuser << "'"
               << std::endl;
          exit(1);
-       }
-       uid = p->pw_uid;
-       gid = p->pw_gid;
-       uid_string = g_conf()->setuser;
+        }
+
+        uid = p->pw_uid;
+        gid = p->pw_gid;
+        uid_string = g_conf()->setuser;
+      }
+
+      if (p && p->pw_dir != nullptr) {
+        home_directory = std::string(p->pw_dir);
       }
     }
     if (g_conf()->setgroup.length() > 0) {
@@ -301,6 +310,10 @@ global_init(const std::map<std::string,std::string> *defaults,
             << std::endl;
        exit(1);
       }
+      if (setenv("HOME", home_directory.c_str(), 1) != 0) {
+       cerr << "warning: unable to set HOME to " << home_directory << ": "
+             << cpp_strerror(errno) << std::endl;
+      }
       priv_ss << "set uid:gid to " << uid << ":" << gid << " (" << uid_string << ":" << gid_string << ")";
     } else {
       priv_ss << "deferred set uid:gid to " << uid << ":" << gid << " (" << uid_string << ":" << gid_string << ")";
index 8674860166864936da9aa7db9bfc8b293a1630a0..85268543143bc145112427aa43eb272210ce6077 100644 (file)
@@ -83,14 +83,20 @@ using ceph_le64 = ceph_le<__u64>;
 using ceph_le32 = ceph_le<__u32>;
 using ceph_le16 = ceph_le<__u16>;
 
-inline __u64 init_le64(__u64 x) {
-  return mswab<__u64>(x);
+inline ceph_le64 init_le64(__u64 x) {
+  ceph_le64 v;
+  v = x;
+  return v;
 }
-inline __u32 init_le32(__u32 x) {
-  return mswab<__u32>(x);
+inline ceph_le32 init_le32(__u32 x) {
+  ceph_le32 v;
+  v = x;
+  return v;
 }
-inline __u16 init_le16(__u16 x) {
-  return mswab<__u16>(x);
+inline ceph_le16 init_le16(__u16 x) {
+  ceph_le16 v;
+  v = x;
+  return v;
 }
 
   /*
index fd12b9f12541a16ce84b7f713a2e1ae473e164c0..1c73ff377bc08c0666c65142267d48551e138aab 100644 (file)
 #include "msgr.h"
 #include "rados.h"
 
+/*
+ * The data structures defined here are shared between Linux kernel and
+ * user space.  Also, those data structures are maintained always in
+ * little-endian byte order, even on big-endian systems.  This is handled
+ * differently in kernel vs. user space.  For use as kernel headers, the
+ * little-endian fields need to use the __le16/__le32/__le64 types.  These
+ * are markers that indicate endian conversion routines must be used
+ * whenever such fields are accessed, which can be verified by checker
+ * tools like "sparse".  For use as user-space headers, the little-endian
+ * fields instead use types ceph_le16/ceph_le32/ceph_le64, which are C++
+ * classes that implement automatic endian conversion on every access.
+ * To still allow for header sharing, this file uses the __le types, but
+ * redefines those to the ceph_ types when compiled in user space.
+ */
+#ifndef __KERNEL__
+#include "byteorder.h"
+#define __le16 ceph_le16
+#define __le32 ceph_le32
+#define __le64 ceph_le64
+#endif
+
 /*
  * subprotocol versions.  when specific messages types or high-level
  * protocols change, bump the affected components.  we keep rev
@@ -710,6 +731,7 @@ int ceph_flags_to_mode(int flags);
 #define CEPH_CAP_PIN         1  /* no specific capabilities beyond the pin */
 
 /* generic cap bits */
+/* note: these definitions are duplicated in mds/locks.c */
 #define CEPH_CAP_GSHARED     1  /* client can reads */
 #define CEPH_CAP_GEXCL       2  /* client can read and update */
 #define CEPH_CAP_GCACHE      4  /* (file) client can cache reads */
@@ -951,4 +973,10 @@ struct ceph_mds_snap_realm {
 } __attribute__ ((packed));
 /* followed by my snap list, then prior parent snap list */
 
+#ifndef __KERNEL__
+#undef __le16
+#undef __le32
+#undef __le64
+#endif
+
 #endif
index 606e4156288823f68785a1e1b597450e1f46c677..7c75dac2e16b0823315039fc6818c219a4f0ffc8 100644 (file)
@@ -99,6 +99,9 @@ int sched_setaffinity(pid_t pid, size_t cpusetsize,
 #ifndef EKEYREJECTED
 #define EKEYREJECTED 129
 #endif
+#ifndef XATTR_CREATE
+#define XATTR_CREATE 1
+#endif
 
 #ifndef HOST_NAME_MAX
 #ifdef MAXHOSTNAMELEN 
index 326facb9e253b64b7b3d1ee22ca937c12588e5af..d83a59b2c563cdf99c7b6fd23a1d44d25c59c22d 100644 (file)
 /* Define if endian type is little endian */
 #cmakedefine CEPH_LITTLE_ENDIAN
 
-#cmakedefine PYTHON_EXECUTABLE "@MGR_PYTHON_EXECUTABLE@"
+#cmakedefine MGR_PYTHON_EXECUTABLE "@MGR_PYTHON_EXECUTABLE@"
 
 /* Define to 1 if you have the `getprogname' function. */
 #cmakedefine HAVE_GETPROGNAME 1
index cc2b906bf02e7166408985edd7333a3de5d80f13..a6a0fcaa9ade66891755789b13405bb5bcf7ce40 100644 (file)
@@ -321,19 +321,19 @@ template<typename T, typename=void> struct ExtType {
 template<typename T>
 struct ExtType<T, std::enable_if_t<std::is_same_v<T, int16_t> ||
                                   std::is_same_v<T, uint16_t>>> {
-  using type = __le16;
+  using type = ceph_le16;
 };
 
 template<typename T>
 struct ExtType<T, std::enable_if_t<std::is_same_v<T, int32_t> ||
                                   std::is_same_v<T, uint32_t>>> {
-  using type = __le32;
+  using type = ceph_le32;
 };
 
 template<typename T>
 struct ExtType<T, std::enable_if_t<std::is_same_v<T, int64_t> ||
                                   std::is_same_v<T, uint64_t>>> {
-  using type = __le64;
+  using type = ceph_le64;
 };
 
 template<>
@@ -548,11 +548,11 @@ denc_lba(uint64_t v, It& p) {
   word |= (v << pos) & 0x7fffffff;
   v >>= 31 - pos;
   if (!v) {
-    *(__le32*)p.get_pos_add(sizeof(uint32_t)) = word;
+    *(ceph_le32*)p.get_pos_add(sizeof(uint32_t)) = word;
     return;
   }
   word |= 0x80000000;
-  *(__le32*)p.get_pos_add(sizeof(uint32_t)) = word;
+  *(ceph_le32*)p.get_pos_add(sizeof(uint32_t)) = word;
   uint8_t byte = v & 0x7f;
   v >>= 7;
   while (v) {
@@ -567,7 +567,7 @@ denc_lba(uint64_t v, It& p) {
 template<class It>
 inline std::enable_if_t<is_const_iterator_v<It>>
 denc_lba(uint64_t& v, It& p) {
-  uint32_t word = *(__le32*)p.get_pos_add(sizeof(uint32_t));
+  uint32_t word = *(ceph_le32*)p.get_pos_add(sizeof(uint32_t));
   int shift;
   switch (word & 7) {
   case 0:
@@ -1638,7 +1638,7 @@ inline std::enable_if_t<traits::supported && !traits::featured> decode_nohead(
                           __u8 *struct_compat,                         \
                           char **len_pos,                              \
                           uint32_t *start_oob_off) {                   \
-    *(__le32*)*len_pos = p.get_pos() - *len_pos - sizeof(uint32_t) +   \
+    *(ceph_le32*)*len_pos = p.get_pos() - *len_pos - sizeof(uint32_t) +        \
       p.get_out_of_band_offset() - *start_oob_off;                     \
   }                                                                    \
   /* decode */                                                         \
index 4029443d0a4e588b5288c92ba50b511220134a70..bda8108082475f8a13b67920cc41658acc204060 100644 (file)
@@ -7,6 +7,14 @@
 
 #include "include/int_types.h"
 
+/* See comment in ceph_fs.h.  */
+#ifndef __KERNEL__
+#include "byteorder.h"
+#define __le16 ceph_le16
+#define __le32 ceph_le32
+#define __le64 ceph_le64
+#endif
+
 /*
  * Data types for message passing layer used by Ceph.
  */
@@ -236,5 +244,10 @@ struct ceph_msg_footer {
 #define CEPH_MSG_FOOTER_NOCRC     (1<<1)   /* no data crc */
 #define CEPH_MSG_FOOTER_SIGNED   (1<<2)   /* msg was signed */
 
+#ifndef __KERNEL__
+#undef __le16
+#undef __le32
+#undef __le64
+#endif
 
 #endif
index 53320d65410c619ac75152159737e2803a40ed7e..6cf951f2d8fab5e727fdaabf9106ddee89c48115 100644 (file)
@@ -9,6 +9,14 @@
 #include <string.h>
 #include "msgr.h"
 
+/* See comment in ceph_fs.h.  */
+#ifndef __KERNEL__
+#include "byteorder.h"
+#define __le16 ceph_le16
+#define __le32 ceph_le32
+#define __le64 ceph_le64
+#endif
+
 /*
  * fs id
  */
@@ -663,5 +671,10 @@ struct ceph_osd_reply_head {
        struct ceph_osd_op ops[0];  /* ops[], object */
 } __attribute__ ((packed));
 
+#ifndef __KERNEL__
+#undef __le16
+#undef __le32
+#undef __le64
+#endif
 
 #endif
index 539777153c88e9c723213265a5619bccc3d3310f..0c047c432ff8013260ccb3b4f97b0a0a8ce7c010 100644 (file)
@@ -719,6 +719,8 @@ inline namespace v14_2_0 {
 
     ~IoCtx();
 
+    bool is_valid() const;
+
     // Close our pool handle
     void close();
 
@@ -1304,6 +1306,7 @@ inline namespace v14_2_0 {
     Rados();
     explicit Rados(IoCtx& ioctx);
     ~Rados();
+    static void from_rados_t(rados_t cluster, Rados &rados);
 
     int init(const char * const id);
     int init2(const char * const name, const char * const clustername,
index bcbdb43200cb6267663622b886b0d071497205d3..8c02dd83736a926b39172e48b7b693a5b1b8b7cc 100644 (file)
@@ -193,10 +193,12 @@ struct obj_err_t {
     ATTR_NAME_MISMATCH    = 1 << 8,
     SNAPSET_INCONSISTENCY   = 1 << 9,
     HINFO_INCONSISTENCY   = 1 << 10,
+    SIZE_TOO_LARGE        = 1 << 11,
     // When adding more here add to either SHALLOW_ERRORS or DEEP_ERRORS
   };
   uint64_t errors = 0;
-  static constexpr uint64_t SHALLOW_ERRORS = OBJECT_INFO_INCONSISTENCY|SIZE_MISMATCH|ATTR_VALUE_MISMATCH|ATTR_NAME_MISMATCH|SNAPSET_INCONSISTENCY|HINFO_INCONSISTENCY;
+  static constexpr uint64_t SHALLOW_ERRORS = OBJECT_INFO_INCONSISTENCY|SIZE_MISMATCH|ATTR_VALUE_MISMATCH
+         |ATTR_NAME_MISMATCH|SNAPSET_INCONSISTENCY|HINFO_INCONSISTENCY|SIZE_TOO_LARGE;
   static constexpr uint64_t DEEP_ERRORS = DATA_DIGEST_MISMATCH|OMAP_DIGEST_MISMATCH;
   bool has_object_info_inconsistency() const {
     return errors & OBJECT_INFO_INCONSISTENCY;
@@ -228,6 +230,9 @@ struct obj_err_t {
   bool has_hinfo_inconsistency() const {
     return errors & HINFO_INCONSISTENCY;
   }
+  bool has_size_too_large() const {
+    return errors & SIZE_TOO_LARGE;
+  }
 };
 
 struct inconsistent_obj_t : obj_err_t {
index c1c319550937e40af68b3a370c30602332c1a091..66cf627aafa1c1b07ccc72ab3f1399d6d8234062 100644 (file)
@@ -102,7 +102,8 @@ void rgwfile_version(int *major, int *minor, int *extra);
 
 int rgw_lookup(struct rgw_fs *rgw_fs,
              struct rgw_file_handle *parent_fh, const char *path,
-             struct rgw_file_handle **fh, uint32_t flags);
+             struct rgw_file_handle **fh,
+             struct stat *st, uint32_t mask, uint32_t flags);
 
 /*
   lookup object by handle (NFS style)
@@ -221,6 +222,7 @@ int rgw_unlink(struct rgw_fs *rgw_fs,
     read  directory content
 */
 typedef bool (*rgw_readdir_cb)(const char *name, void *arg, uint64_t offset,
+                              struct stat *st, uint32_t mask,
                               uint32_t flags);
 
 #define RGW_READDIR_FLAG_NONE      0x0000
index 1adffe781cf68e80e618be2e1c075007f1764881..79ceffece05b32e096cc947bdb86a25ff97696b2 100644 (file)
@@ -139,6 +139,12 @@ typedef enum {
   RBD_MIRROR_MODE_POOL      /* mirroring enabled on all journaled images */
 } rbd_mirror_mode_t;
 
+typedef enum {
+  RBD_MIRROR_PEER_DIRECTION_RX    = 0,
+  RBD_MIRROR_PEER_DIRECTION_TX    = 1,
+  RBD_MIRROR_PEER_DIRECTION_RX_TX = 2
+} rbd_mirror_peer_direction_t;
+
 typedef struct {
   char *uuid;
   char *cluster_name;
@@ -430,10 +436,22 @@ CEPH_RBD_API void rbd_migration_status_cleanup(
     rbd_image_migration_status_t *status);
 
 /* pool mirroring */
+CEPH_RBD_API int rbd_mirror_site_name_get(rados_t cluster,
+                                          char *name, size_t *max_len);
+CEPH_RBD_API int rbd_mirror_site_name_set(rados_t cluster,
+                                          const char *name);
+
 CEPH_RBD_API int rbd_mirror_mode_get(rados_ioctx_t io_ctx,
                                      rbd_mirror_mode_t *mirror_mode);
 CEPH_RBD_API int rbd_mirror_mode_set(rados_ioctx_t io_ctx,
                                      rbd_mirror_mode_t mirror_mode);
+
+CEPH_RBD_API int rbd_mirror_peer_bootstrap_create(rados_ioctx_t io_ctx,
+                                                  char *token, size_t *max_len);
+CEPH_RBD_API int rbd_mirror_peer_bootstrap_import(
+    rados_ioctx_t io_ctx, rbd_mirror_peer_direction_t direction,
+    const char *token);
+
 CEPH_RBD_API int rbd_mirror_peer_add(rados_ioctx_t io_ctx,
                                      char *uuid, size_t uuid_max_length,
                                      const char *cluster_name,
index 4aaffd116f6f3f63d96c5a273bb92681d006a1c6..15eb9f56a31db9525c68cf4fe435a76cb1b64688 100644 (file)
@@ -74,6 +74,8 @@ namespace librbd {
     std::string address;
   } locker_t;
 
+  typedef rbd_mirror_peer_direction_t mirror_peer_direction_t;
+
   typedef struct {
     std::string uuid;
     std::string cluster_name;
@@ -263,8 +265,18 @@ public:
                        image_migration_status_t *status, size_t status_size);
 
   // RBD pool mirroring support functions
+  int mirror_site_name_get(librados::Rados& rados, std::string* site_name);
+  int mirror_site_name_set(librados::Rados& rados,
+                           const std::string& site_name);
+
   int mirror_mode_get(IoCtx& io_ctx, rbd_mirror_mode_t *mirror_mode);
   int mirror_mode_set(IoCtx& io_ctx, rbd_mirror_mode_t mirror_mode);
+
+  int mirror_peer_bootstrap_create(IoCtx& io_ctx, std::string* token);
+  int mirror_peer_bootstrap_import(IoCtx& io_ctx,
+                                   mirror_peer_direction_t direction,
+                                   const std::string &token);
+
   int mirror_peer_add(IoCtx& io_ctx, std::string *uuid,
                       const std::string &cluster_name,
                       const std::string &client_name);
index 94799ab6f1de60016409529ec5ef7ecbe1651c5d..35a1a8bc3c3bd5c1109eae3b8c20ff2c1994ee78 100644 (file)
  * MON config-key prefix for storing optional remote cluster connectivity
  * parameters
  */
-#define RBD_MIRROR_PEER_CONFIG_KEY_PREFIX "rbd/mirror/peer/"
+#define RBD_MIRROR_CONFIG_KEY_PREFIX          "rbd/mirror/"
+#define RBD_MIRROR_SITE_NAME_CONFIG_KEY       RBD_MIRROR_CONFIG_KEY_PREFIX "site_name"
+#define RBD_MIRROR_PEER_CLIENT_ID_CONFIG_KEY  RBD_MIRROR_CONFIG_KEY_PREFIX "peer_client_id"
+#define RBD_MIRROR_PEER_CONFIG_KEY_PREFIX     RBD_MIRROR_CONFIG_KEY_PREFIX "peer/"
 
 struct rbd_info {
-       __le64 max_id;
+       ceph_le64 max_id;
 } __attribute__ ((packed));
 
 struct rbd_obj_snap_ondisk {
-       __le64 id;
-       __le64 image_size;
+       ceph_le64 id;
+       ceph_le64 image_size;
 } __attribute__((packed));
 
 struct rbd_obj_header_ondisk {
@@ -138,11 +141,11 @@ struct rbd_obj_header_ondisk {
                __u8 comp_type;
                __u8 unused;
        } __attribute__((packed)) options;
-       __le64 image_size;
-       __le64 snap_seq;
-       __le32 snap_count;
-       __le32 reserved;
-       __le64 snap_names_len;
+       ceph_le64 image_size;
+       ceph_le64 snap_seq;
+       ceph_le32 snap_count;
+       ceph_le32 reserved;
+       ceph_le64 snap_names_len;
        struct rbd_obj_snap_ondisk snaps[0];
 } __attribute__((packed));
 
index 04c62e3897407f1ae396395e197e84220cb25343..1ae1527758de3b5fdd361e30b2b16ba2ed0be6f0 100644 (file)
 #include <fcntl.h>
 #include <string.h>
 
-// <macro hackery>
-// temporarily remap __le* to ceph_le* for benefit of shared kernel/userland headers
-#define __le16 ceph_le16
-#define __le32 ceph_le32
-#define __le64 ceph_le64
 #include "ceph_fs.h"
 #include "ceph_frag.h"
 #include "rbd_types.h"
-#undef __le16
-#undef __le32
-#undef __le64
-// </macro hackery>
-
 
 #ifdef __cplusplus
 #ifndef _BACKWARD_BACKWARD_WARNING_H
index f766a4e8c90fb96e903886d010f8d289084f1259..b9cfeaf574dae2471e63de3985c842186f1d24aa 100644 (file)
@@ -23,7 +23,9 @@
 #include <sys/stat.h>
 #include <sys/sysmacros.h>
 #include <sys/types.h>
+#include <tuple>
 #include <unistd.h>
+#include <utility>
 
 #include "auth/KeyRing.h"
 #include "common/errno.h"
@@ -33,6 +35,7 @@
 #include "common/safe_io.h"
 #include "common/secret.h"
 #include "common/TextTable.h"
+#include "common/Thread.h"
 #include "include/ceph_assert.h"
 #include "include/stringify.h"
 #include "include/krbd.h"
@@ -41,8 +44,7 @@
 #include <blkid/blkid.h>
 #include <libudev.h>
 
-
-const static int POLL_TIMEOUT=120000;
+static const int UDEV_BUF_SIZE = 1 << 20;  /* doubled to 2M (SO_RCVBUFFORCE) */
 
 struct krbd_ctx {
   CephContext *cct;
@@ -228,94 +230,152 @@ static int build_map_buf(CephContext *cct, const krbd_spec& spec,
   return 0;
 }
 
-static int wait_for_udev_add(struct udev_monitor *mon, const krbd_spec& spec,
-                             string *pname)
+/*
+ * Return:
+ *   <kernel error, false> - didn't map
+ *   <0 or udev error, true> - mapped
+ */
+template <typename F>
+static std::pair<int, bool> wait_for_mapping(int sysfs_r_fd, udev_monitor *mon,
+                                             F udev_device_handler)
 {
-  struct udev_device *bus_dev = nullptr;
-  std::vector<struct udev_device*> block_dev_vec;
+  struct pollfd fds[2];
+  int sysfs_r = INT_MAX, udev_r = INT_MAX;
   int r;
 
-  /*
-   * Catch /sys/devices/rbd/<id>/ and wait for the corresponding
-   * block device to show up.  This is necessary because rbd devices
-   * and block devices aren't linked together in our sysfs layout.
-   */
+  fds[0].fd = sysfs_r_fd;
+  fds[0].events = POLLIN;
+  fds[1].fd = udev_monitor_get_fd(mon);
+  fds[1].events = POLLIN;
+
   for (;;) {
-    struct pollfd fds[1];
-    struct udev_device *dev;
+    if (poll(fds, 2, -1) < 0) {
+      ceph_abort_msgf("poll failed: %d", -errno);
+    }
 
-    fds[0].fd = udev_monitor_get_fd(mon);
-    fds[0].events = POLLIN;
-    r = poll(fds, 1, POLL_TIMEOUT);
-    if (r > 0) {
-      r = 0;
-    } else {
-      r = (r == 0) ? -ETIMEDOUT : -errno;
-      break;
+    if (fds[0].revents) {
+      r = safe_read_exact(sysfs_r_fd, &sysfs_r, sizeof(sysfs_r));
+      if (r < 0) {
+        ceph_abort_msgf("safe_read_exact failed: %d", r);
+      }
+      if (sysfs_r < 0) {
+        return std::make_pair(sysfs_r, false);
+      }
+      if (udev_r != INT_MAX) {
+        ceph_assert(!sysfs_r);
+        return std::make_pair(udev_r, true);
+      }
+      fds[0].fd = -1;
     }
 
-    dev = udev_monitor_receive_device(mon);
-    if (!dev)
-      continue;
+    if (fds[1].revents) {
+      for (;;) {
+        struct udev_device *dev;
+
+        dev = udev_monitor_receive_device(mon);
+        if (!dev) {
+          if (errno != EINTR && errno != EAGAIN) {
+            udev_r = -errno;
+            if (sysfs_r != INT_MAX) {
+              ceph_assert(!sysfs_r);
+              return std::make_pair(udev_r, true);
+            }
+            fds[1].fd = -1;
+          }
+          break;
+        }
+        if (udev_device_handler(dev)) {
+          udev_r = 0;
+          if (sysfs_r != INT_MAX) {
+            ceph_assert(!sysfs_r);
+            return std::make_pair(udev_r, true);
+          }
+          fds[1].fd = -1;
+          break;
+        }
+      }
+    }
+  }
+}
 
-    if (strcmp(udev_device_get_action(dev), "add") != 0)
-      goto next;
+class UdevMapHandler {
+public:
+  UdevMapHandler(const krbd_spec *spec, std::string *pdevnode) :
+      m_spec(spec), m_pdevnode(pdevnode) {}
 
-    if (strcmp(udev_device_get_subsystem(dev), "rbd") == 0) {
-      if (!bus_dev) {
-        auto cur_spec = spec_from_dev(dev);
-        if (cur_spec && *cur_spec == spec) {
-          bus_dev = dev;
+  /*
+   * Catch /sys/devices/rbd/<id>/ and wait for the corresponding
+   * block device to show up.  This is necessary because rbd devices
+   * and block devices aren't linked together in our sysfs layout.
+   */
+  bool operator()(udev_device *dev) {
+    if (strcmp(udev_device_get_action(dev), "add")) {
+      goto next;
+    }
+    if (!strcmp(udev_device_get_subsystem(dev), "rbd")) {
+      if (!m_bus_dev) {
+        auto spec = spec_from_dev(dev);
+        if (spec && *spec == *m_spec) {
+          m_bus_dev = dev;
           goto check;
         }
       }
-    } else if (strcmp(udev_device_get_subsystem(dev), "block") == 0) {
-      block_dev_vec.push_back(dev);
+    } else if (!strcmp(udev_device_get_subsystem(dev), "block")) {
+      m_block_devs.push_back(dev);
       goto check;
     }
 
 next:
     udev_device_unref(dev);
-    continue;
+    return false;
 
 check:
-    if (bus_dev && !block_dev_vec.empty()) {
-      const char *major = udev_device_get_sysattr_value(bus_dev, "major");
-      const char *minor = udev_device_get_sysattr_value(bus_dev, "minor");
+    if (m_bus_dev && !m_block_devs.empty()) {
+      const char *major = udev_device_get_sysattr_value(m_bus_dev, "major");
+      const char *minor = udev_device_get_sysattr_value(m_bus_dev, "minor");
       ceph_assert(!minor ^ have_minor_attr());
 
-      for (auto p : block_dev_vec) {
+      for (auto p : m_block_devs) {
         const char *this_major = udev_device_get_property_value(p, "MAJOR");
         const char *this_minor = udev_device_get_property_value(p, "MINOR");
 
         if (strcmp(this_major, major) == 0 &&
             (!minor || strcmp(this_minor, minor) == 0)) {
-          string name = get_kernel_rbd_name(udev_device_get_sysname(bus_dev));
+          string name = get_kernel_rbd_name(udev_device_get_sysname(m_bus_dev));
 
           ceph_assert(strcmp(udev_device_get_devnode(p), name.c_str()) == 0);
-          *pname = name;
-          goto done;
+          *m_pdevnode = name;
+          return true;
         }
       }
     }
+    return false;
   }
 
-done:
-  if (bus_dev) {
-    udev_device_unref(bus_dev);
-  }
-  
-  for (auto p : block_dev_vec) {
-    udev_device_unref(p);
+  ~UdevMapHandler() {
+    if (m_bus_dev) {
+      udev_device_unref(m_bus_dev);
+    }
+
+    for (auto p : m_block_devs) {
+      udev_device_unref(p);
+    }
   }
 
-  return r;
-}
+private:
+  udev_device *m_bus_dev = nullptr;
+  std::vector<udev_device *> m_block_devs;
+  const krbd_spec *m_spec;
+  std::string *m_pdevnode;
+};
 
 static int do_map(struct udev *udev, const krbd_spec& spec, const string& buf,
                   string *pname)
 {
   struct udev_monitor *mon;
+  std::thread mapper;
+  bool mapped;
+  int fds[2];
   int r;
 
   mon = udev_monitor_new_from_netlink(udev, "udev");
@@ -330,22 +390,45 @@ static int do_map(struct udev *udev, const krbd_spec& spec, const string& buf,
   if (r < 0)
     goto out_mon;
 
+  r = udev_monitor_set_receive_buffer_size(mon, UDEV_BUF_SIZE);
+  if (r < 0) {
+    std::cerr << "rbd: failed to set udev buffer size: " << cpp_strerror(r)
+              << std::endl;
+    /* not fatal */
+  }
+
   r = udev_monitor_enable_receiving(mon);
   if (r < 0)
     goto out_mon;
 
-  r = sysfs_write_rbd_add(buf);
-  if (r < 0) {
-    cerr << "rbd: sysfs write failed" << std::endl;
+  if (pipe2(fds, O_NONBLOCK) < 0) {
+    r = -errno;
     goto out_mon;
   }
 
-  r = wait_for_udev_add(mon, spec, pname);
+  mapper = make_named_thread("mapper", [&buf, sysfs_r_fd = fds[1]]() {
+    int sysfs_r = sysfs_write_rbd_add(buf);
+    int r = safe_write(sysfs_r_fd, &sysfs_r, sizeof(sysfs_r));
+    if (r < 0) {
+      ceph_abort_msgf("safe_write failed: %d", r);
+    }
+  });
+
+  std::tie(r, mapped) = wait_for_mapping(fds[0], mon,
+                                         UdevMapHandler(&spec, pname));
   if (r < 0) {
-    cerr << "rbd: wait failed" << std::endl;
-    goto out_mon;
+    if (!mapped) {
+      std::cerr << "rbd: sysfs write failed" << std::endl;
+    } else {
+      std::cerr << "rbd: udev wait failed" << std::endl;
+      /* TODO: fall back to enumeration */
+    }
   }
 
+  mapper.join();
+  close(fds[0]);
+  close(fds[1]);
+
 out_mon:
   udev_monitor_unref(mon);
   return r;
@@ -391,6 +474,7 @@ static int devno_to_krbd_id(struct udev *udev, dev_t devno, string *pid)
   struct udev_device *dev;
   int r;
 
+retry:
   enm = udev_enumerate_new(udev);
   if (!enm)
     return -ENOMEM;
@@ -412,8 +496,14 @@ static int devno_to_krbd_id(struct udev *udev, dev_t devno, string *pid)
   }
 
   r = udev_enumerate_scan_devices(enm);
-  if (r < 0)
+  if (r < 0) {
+    if (r == -ENOENT || r == -ENODEV) {
+      std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+      udev_enumerate_unref(enm);
+      goto retry;
+    }
     goto out_enm;
+  }
 
   l = udev_enumerate_get_list_entry(enm);
   if (!l) {
@@ -444,6 +534,7 @@ static int __enumerate_devices(struct udev *udev, const krbd_spec& spec,
   struct udev_enumerate *enm;
   int r;
 
+retry:
   enm = udev_enumerate_new(udev);
   if (!enm)
     return -ENOMEM;
@@ -479,8 +570,14 @@ static int __enumerate_devices(struct udev *udev, const krbd_spec& spec,
     goto out_enm;
 
   r = udev_enumerate_scan_devices(enm);
-  if (r < 0)
+  if (r < 0) {
+    if (r == -ENOENT || r == -ENODEV) {
+      std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+      udev_enumerate_unref(enm);
+      goto retry;
+    }
     goto out_enm;
+  }
 
   *penm = enm;
   return 0;
@@ -587,41 +684,31 @@ static string build_unmap_buf(const string& id, const char *options)
   return buf;
 }
 
-static int wait_for_udev_remove(struct udev_monitor *mon, dev_t devno)
-{
-  for (;;) {
-    struct pollfd fds[1];
-    struct udev_device *dev;
-    int r;
-
-    fds[0].fd = udev_monitor_get_fd(mon);
-    fds[0].events = POLLIN;
-    r = poll(fds, 1, POLL_TIMEOUT);
-    if (r < 0)
-      return -errno;
+class UdevUnmapHandler {
+public:
+  UdevUnmapHandler(dev_t devno) : m_devno(devno) {}
 
-    if (r == 0)
-      return -ETIMEDOUT;
+  bool operator()(udev_device *dev) {
+    bool match = false;
 
-    dev = udev_monitor_receive_device(mon);
-    if (!dev)
-      continue;
-
-    if (strcmp(udev_device_get_action(dev), "remove") == 0 &&
-        udev_device_get_devnum(dev) == devno) {
-      udev_device_unref(dev);
-      break;
+    if (!strcmp(udev_device_get_action(dev), "remove") &&
+        udev_device_get_devnum(dev) == m_devno) {
+      match = true;
     }
-
     udev_device_unref(dev);
+    return match;
   }
 
-  return 0;
-}
+private:
+  dev_t m_devno;
+};
 
 static int do_unmap(struct udev *udev, dev_t devno, const string& buf)
 {
   struct udev_monitor *mon;
+  std::thread unmapper;
+  bool unmapped;
+  int fds[2];
   int r;
 
   mon = udev_monitor_new_from_netlink(udev, "udev");
@@ -632,44 +719,69 @@ static int do_unmap(struct udev *udev, dev_t devno, const string& buf)
   if (r < 0)
     goto out_mon;
 
+  r = udev_monitor_set_receive_buffer_size(mon, UDEV_BUF_SIZE);
+  if (r < 0) {
+    std::cerr << "rbd: failed to set udev buffer size: " << cpp_strerror(r)
+              << std::endl;
+    /* not fatal */
+  }
+
   r = udev_monitor_enable_receiving(mon);
   if (r < 0)
     goto out_mon;
 
-  /*
-   * On final device close(), kernel sends a block change event, in
-   * response to which udev apparently runs blkid on the device.  This
-   * makes unmap fail with EBUSY, if issued right after final close().
-   * Try to circumvent this with a retry before turning to udev.
-   */
-  for (int tries = 0; ; tries++) {
-    r = sysfs_write_rbd_remove(buf);
-    if (r >= 0) {
-      break;
-    } else if (r == -EBUSY && tries < 2) {
-      if (!tries) {
-        usleep(250 * 1000);
+  if (pipe2(fds, O_NONBLOCK) < 0) {
+    r = -errno;
+    goto out_mon;
+  }
+
+  unmapper = make_named_thread("unmapper", [&buf, sysfs_r_fd = fds[1]]() {
+    /*
+     * On final device close(), kernel sends a block change event, in
+     * response to which udev apparently runs blkid on the device.  This
+     * makes unmap fail with EBUSY, if issued right after final close().
+     * Try to circumvent this with a retry before turning to udev.
+     */
+    for (int tries = 0; ; tries++) {
+      int sysfs_r = sysfs_write_rbd_remove(buf);
+      if (sysfs_r == -EBUSY && tries < 2) {
+        if (!tries) {
+          usleep(250 * 1000);
+        } else {
+          /*
+           * libudev does not provide the "wait until the queue is empty"
+           * API or the sufficient amount of primitives to build it from.
+           */
+          std::string err = run_cmd("udevadm", "settle", "--timeout", "10",
+                                    (char *)NULL);
+          if (!err.empty())
+            std::cerr << "rbd: " << err << std::endl;
+        }
       } else {
-        /*
-         * libudev does not provide the "wait until the queue is empty"
-         * API or the sufficient amount of primitives to build it from.
-         */
-        string err = run_cmd("udevadm", "settle", "--timeout", "10", (char*)NULL);
-        if (!err.empty())
-          cerr << "rbd: " << err << std::endl;
+        int r = safe_write(sysfs_r_fd, &sysfs_r, sizeof(sysfs_r));
+        if (r < 0) {
+          ceph_abort_msgf("safe_write failed: %d", r);
+        }
+        break;
       }
-    } else {
-      cerr << "rbd: sysfs write failed" << std::endl;
-      goto out_mon;
     }
-  }
+  });
 
-  r = wait_for_udev_remove(mon, devno);
+  std::tie(r, unmapped) = wait_for_mapping(fds[0], mon,
+                                           UdevUnmapHandler(devno));
   if (r < 0) {
-    cerr << "rbd: wait failed" << std::endl;
-    goto out_mon;
+    if (!unmapped) {
+      std::cerr << "rbd: sysfs write failed" << std::endl;
+    } else {
+      std::cerr << "rbd: udev wait failed: " << cpp_strerror(r) << std::endl;
+      r = 0;
+    }
   }
 
+  unmapper.join();
+  close(fds[0]);
+  close(fds[1]);
+
 out_mon:
   udev_monitor_unref(mon);
   return r;
@@ -699,13 +811,25 @@ static int unmap_image(struct krbd_ctx *ctx, const char *devnode,
     wholedevno = sb.st_rdev;
   }
 
-  r = devno_to_krbd_id(ctx->udev, wholedevno, &id);
-  if (r < 0) {
-    if (r == -ENOENT) {
-      cerr << "rbd: '" << devnode << "' is not an rbd device" << std::endl;
-      r = -EINVAL;
+  for (int tries = 0; ; tries++) {
+    r = devno_to_krbd_id(ctx->udev, wholedevno, &id);
+    if (r == -ENOENT && tries < 2) {
+      usleep(250 * 1000);
+    } else {
+      if (r < 0) {
+        if (r == -ENOENT) {
+          std::cerr << "rbd: '" << devnode << "' is not an rbd device"
+                    << std::endl;
+          r = -EINVAL;
+        }
+        return r;
+      }
+      if (tries) {
+        std::cerr << "rbd: udev enumerate missed a device, tries = " << tries
+                  << std::endl;
+      }
+      break;
     }
-    return r;
   }
 
   return do_unmap(ctx->udev, wholedevno, build_unmap_buf(id, options));
@@ -718,14 +842,25 @@ static int unmap_image(struct krbd_ctx *ctx, const krbd_spec& spec,
   string id;
   int r;
 
-  r = spec_to_devno_and_krbd_id(ctx->udev, spec, &devno, &id);
-  if (r < 0) {
-    if (r == -ENOENT) {
-      cerr << "rbd: " << spec << ": not a mapped image or snapshot"
-           << std::endl;
-      r = -EINVAL;
+  for (int tries = 0; ; tries++) {
+    r = spec_to_devno_and_krbd_id(ctx->udev, spec, &devno, &id);
+    if (r == -ENOENT && tries < 2) {
+      usleep(250 * 1000);
+    } else {
+      if (r < 0) {
+        if (r == -ENOENT) {
+          std::cerr << "rbd: " << spec << ": not a mapped image or snapshot"
+                    << std::endl;
+          r = -EINVAL;
+        }
+        return r;
+      }
+      if (tries) {
+        std::cerr << "rbd: udev enumerate missed a device, tries = " << tries
+                  << std::endl;
+      }
+      break;
     }
-    return r;
   }
 
   return do_unmap(ctx->udev, devno, build_unmap_buf(id, options));
@@ -765,6 +900,7 @@ static int do_dump(struct udev *udev, Formatter *f, TextTable *tbl)
   bool have_output = false;
   int r;
 
+retry:
   enm = udev_enumerate_new(udev);
   if (!enm)
     return -ENOMEM;
@@ -774,8 +910,14 @@ static int do_dump(struct udev *udev, Formatter *f, TextTable *tbl)
     goto out_enm;
 
   r = udev_enumerate_scan_devices(enm);
-  if (r < 0)
+  if (r < 0) {
+    if (r == -ENOENT || r == -ENODEV) {
+      std::cerr << "rbd: udev enumerate failed, retrying" << std::endl;
+      udev_enumerate_unref(enm);
+      goto retry;
+    }
     goto out_enm;
+  }
 
   udev_list_entry_foreach(l, udev_enumerate_get_list_entry(enm)) {
     struct udev_device *dev;
index 51f25b94e32399e78c04db7f6883bcfb2d6976cd..057eb82601aff56586766cf026434da6e01677a4 100644 (file)
@@ -9,10 +9,9 @@ if (WITH_LEVELDB)
   list(APPEND kv_srcs LevelDBStore.cc)
 endif (WITH_LEVELDB)
 
-add_library(kv_objs OBJECT ${kv_srcs})
-add_library(kv STATIC $<TARGET_OBJECTS:kv_objs>)
-target_include_directories(kv_objs SYSTEM BEFORE PUBLIC
-  $<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
-target_include_directories(kv SYSTEM BEFORE PUBLIC
-  $<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
-target_link_libraries(kv ${LEVELDB_LIBRARIES} RocksDB::RocksDB)
+add_library(kv STATIC ${kv_srcs}
+  $<TARGET_OBJECTS:common_prioritycache_obj>)
+
+target_link_libraries(kv ${LEVELDB_LIBRARIES}
+  RocksDB::RocksDB
+  heap_profiler)
index 39250bb919b260d60b5e7771952c3ff7bf48aa12..8a1c9382abd1f4932c75eb78282896684643141d 100644 (file)
@@ -382,6 +382,8 @@ int RocksDBStore::load_rocksdb_options(bool create_if_missing, rocksdb::Options&
     opt.env = static_cast<rocksdb::Env*>(priv);
   }
 
+  opt.env->SetAllowNonOwnerAccess(false);
+
   // caches
   if (!set_cache_flag) {
     cache_size = g_conf()->rocksdb_cache_size;
index 38f367e1bc78714b04dcf761f13facce072dbca3..2391a7f64da297bb888b32ea6e2a5c374041bb46 100644 (file)
@@ -563,8 +563,8 @@ int64_t BinnedLRUCache::request_cache_bytes(PriorityCache::Priority pri, uint64_
       request = GetHighPriPoolUsage();
       break;
     }
-  // All other cache items are currently shoved into the LAST priority. 
-  case PriorityCache::Priority::LAST:
+  // All other cache items are currently shoved into the PRI1 priority. 
+  case PriorityCache::Priority::PRI1:
     {
       request = GetUsage();
       request -= GetHighPriPoolUsage();
@@ -587,8 +587,14 @@ int64_t BinnedLRUCache::commit_cache_size(uint64_t total_bytes)
   ldout(cct, 10) << __func__ << " old: " << old_bytes
                  << " new: " << new_bytes << dendl;
   SetCapacity((size_t) new_bytes);
-  double ratio =
-      (double) get_cache_bytes(PriorityCache::Priority::PRI0) / new_bytes;
+
+  double ratio = 0;
+  if (new_bytes > 0) {
+    int64_t pri0_bytes = get_cache_bytes(PriorityCache::Priority::PRI0);
+    // Add 10% of the "reserved" bytes so the ratio can't get stuck at 0 
+    pri0_bytes += (new_bytes - get_cache_bytes()) / 10;
+    ratio = (double) pri0_bytes / new_bytes;
+  }
   ldout(cct, 10) << __func__ << " High Pri Pool Ratio set to " << ratio << dendl;
   SetHighPriPoolRatio(ratio);
   return new_bytes;
index 77190788a678563aa82ecc493bf37d2352a1bc81..bc3f65f2842f4c9d7c9c4974383908fe76c0b9be 100644 (file)
@@ -1056,6 +1056,10 @@ librados::IoCtx::~IoCtx()
   close();
 }
 
+bool librados::IoCtx::is_valid() const {
+  return io_ctx_impl != nullptr;
+}
+
 void librados::IoCtx::close()
 {
   if (io_ctx_impl)
@@ -2172,6 +2176,16 @@ librados::Rados::~Rados()
   shutdown();
 }
 
+void librados::Rados::from_rados_t(rados_t cluster, Rados &rados) {
+  if (rados.client) {
+    rados.client->put();
+  }
+  rados.client = static_cast<RadosClient*>(cluster);
+  if (rados.client) {
+    rados.client->get();
+  }
+}
+
 int librados::Rados::init(const char * const id)
 {
   return rados_create((rados_t *)&client, id);
index f07e4657fd13da71fed8caa4b22712aafe4dbfd6..19d942a7b8eab046f16077122f7dee0606befb29 100644 (file)
@@ -134,6 +134,7 @@ set(librbd_internal_srcs
   operation/SparsifyRequest.cc
   operation/TrimRequest.cc
   trash/MoveRequest.cc
+  trash/RemoveRequest.cc
   watcher/Notifier.cc
   watcher/RewatchRequest.cc
   ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
index 45191158e38c4e50f218ad32b3b0d141a5914285..1d56b255d4cbab2e0021b6ffdd20cd6475b9f370 100644 (file)
@@ -50,6 +50,18 @@ DeepCopyRequest<I>::~DeepCopyRequest() {
 
 template <typename I>
 void DeepCopyRequest<I>::send() {
+  if (!m_src_image_ctx->data_ctx.is_valid()) {
+    lderr(m_cct) << "missing data pool for source image" << dendl;
+    finish(-ENODEV);
+    return;
+  }
+
+  if (!m_dst_image_ctx->data_ctx.is_valid()) {
+    lderr(m_cct) << "missing data pool for destination image" << dendl;
+    finish(-ENODEV);
+    return;
+  }
+
   int r = validate_copy_points();
   if (r < 0) {
     finish(r);
index 19d3ce70c9bee57e7deb846b4be9a38771368705..6ad3b7455e471fa0ae917cc3819923934d816770 100644 (file)
@@ -172,7 +172,9 @@ public:
     delete[] format_string;
 
     md_ctx.aio_flush();
-    data_ctx.aio_flush();
+    if (data_ctx.is_valid()) {
+      data_ctx.aio_flush();
+    }
     io_work_queue->drain();
 
     delete io_object_dispatcher;
@@ -191,7 +193,7 @@ public:
     asok_hook = new LibrbdAdminSocketHook(this);
 
     string pname = string("librbd-") + id + string("-") +
-      data_ctx.get_pool_name() + string("-") + name;
+      md_ctx.get_pool_name() + string("-") + name;
     if (!snap_name.empty()) {
       pname += "-";
       pname += snap_name;
@@ -212,7 +214,7 @@ public:
     asok_hook = nullptr;
   }
 
-  void ImageCtx::init_layout()
+  void ImageCtx::init_layout(int64_t pool_id)
   {
     if (stripe_unit == 0 || stripe_count == 0) {
       stripe_unit = 1ull << order;
@@ -229,7 +231,7 @@ public:
     layout.stripe_unit = stripe_unit;
     layout.stripe_count = stripe_count;
     layout.object_size = 1ull << order;
-    layout.pool_id = data_ctx.get_id();  // FIXME: pool id overflow?
+    layout.pool_id = pool_id;  // FIXME: pool id overflow?
 
     delete[] format_string;
     size_t len = object_prefix.length() + 16;
@@ -329,7 +331,9 @@ public:
       snap_namespace = it->second.snap_namespace;
       snap_name = it->second.name;
       snap_exists = true;
-      data_ctx.snap_set_read(snap_id);
+      if (data_ctx.is_valid()) {
+        data_ctx.snap_set_read(snap_id);
+      }
       return 0;
     }
     return -ENOENT;
@@ -342,7 +346,9 @@ public:
     snap_namespace = {};
     snap_name = "";
     snap_exists = true;
-    data_ctx.snap_set_read(snap_id);
+    if (data_ctx.is_valid()) {
+      data_ctx.snap_set_read(snap_id);
+    }
   }
 
   snap_t ImageCtx::get_snap_id(const cls::rbd::SnapshotNamespace& in_snap_namespace,
index fe1c4828cabbd85dc030bf8009e63301bc36f89b..f60dec9886406c259a2fe6ef6452fdc9625821fa 100644 (file)
@@ -223,7 +223,7 @@ namespace librbd {
     ~ImageCtx();
     void init();
     void shutdown();
-    void init_layout();
+    void init_layout(int64_t pool_id);
     void perf_start(std::string name);
     void perf_stop();
     void set_read_flag(unsigned flag);
index 148734b7e50a8eb7e72e40721335fd0dab512500..55fefcc211e7e5c9f4c3038b62a06a03a1a85d92 100644 (file)
@@ -238,6 +238,10 @@ int DiffIterate<I>::diff_iterate(I *ictx,
   ldout(ictx->cct, 20) << "diff_iterate " << ictx << " off = " << off
                 << " len = " << len << dendl;
 
+  if (!ictx->data_ctx.is_valid()) {
+    return -ENODEV;
+  }
+
   // ensure previous writes are visible to listsnaps
   C_SaferCond flush_ctx;
   {
@@ -276,6 +280,8 @@ template <typename I>
 int DiffIterate<I>::execute() {
   CephContext* cct = m_image_ctx.cct;
 
+  ceph_assert(m_image_ctx.data_ctx.is_valid());
+
   librados::IoCtx head_ctx;
   librados::snap_t from_snap_id = 0;
   librados::snap_t end_snap_id;
index 13c5a90d8c547421945af4d0a7bd0484e646abad..ac781390b974d9b29f80077964b3bd1be84dbd6b 100644 (file)
@@ -76,6 +76,23 @@ int pre_remove_image(librados::IoCtx& io_ctx, const std::string& image_id) {
 
 } // anonymous namespace
 
+template <typename I>
+int64_t Image<I>::get_data_pool_id(I *ictx) {
+  if (ictx->data_ctx.is_valid()) {
+    return ictx->data_ctx.get_id();
+  }
+
+  int64_t pool_id;
+  int r = cls_client::get_data_pool(&ictx->md_ctx, ictx->header_oid, &pool_id);
+  if (r < 0) {
+    CephContext *cct = ictx->cct;
+    lderr(cct) << "error getting data pool ID: " << cpp_strerror(r) << dendl;
+    return r;
+  }
+
+  return pool_id;
+}
+
 template <typename I>
 int Image<I>::get_op_features(I *ictx, uint64_t *op_features) {
   CephContext *cct = ictx->cct;
@@ -782,7 +799,8 @@ int Image<I>::remove(IoCtx& io_ctx, const std::string &image_name,
         if (r == -ENOTEMPTY || r == -EBUSY || r == -EMLINK) {
           // best-effort try to restore the image if the removal
           // failed for possible expected reasons
-          Trash<I>::restore(io_ctx, trash_image_source, image_id, image_name);
+          Trash<I>::restore(io_ctx, {cls::rbd::TRASH_IMAGE_SOURCE_REMOVING},
+                            image_id, image_name);
         }
       }
       return r;
index 8bfadae70de931f4cd503afc00a76e8eb902a22b..af928c84c06c93f8d1f39407fbcd40b4460b8ad2 100644 (file)
@@ -24,6 +24,8 @@ template <typename ImageCtxT = librbd::ImageCtx>
 struct Image {
   typedef std::map<std::string, std::string> ImageNameToIds;
 
+  static int64_t get_data_pool_id(ImageCtxT *ictx);
+
   static int get_op_features(ImageCtxT *ictx, uint64_t *op_features);
 
   static int list_images(librados::IoCtx& io_ctx,
index 0c56959d76ececb0be40712cab4fad5d271a4e00..20c0c417386c932800e0303f035970c61c4c60fe 100644 (file)
@@ -1175,7 +1175,8 @@ template <typename I>
 int Migration<I>::v2_relink_src_image() {
   ldout(m_cct, 10) << dendl;
 
-  int r = Trash<I>::restore(m_src_io_ctx, RBD_TRASH_IMAGE_SOURCE_MIGRATION,
+  int r = Trash<I>::restore(m_src_io_ctx,
+                            {cls::rbd::TRASH_IMAGE_SOURCE_MIGRATION},
                             m_src_image_ctx->id, m_src_image_ctx->name);
   if (r < 0) {
     lderr(m_cct) << "failed restoring image from trash: " << cpp_strerror(r)
index 9fe240bc67097ff514dee54bb7d680f693915d33..92ba3359f8f2092594ff9ee5f14c5eb244bb6c56 100644 (file)
@@ -22,6 +22,8 @@
 #include "librbd/mirror/PromoteRequest.h"
 #include "librbd/mirror/Types.h"
 #include "librbd/MirroringWatcher.h"
+#include <boost/algorithm/string/trim.hpp>
+#include <boost/algorithm/string/replace.hpp>
 #include <boost/scope_exit.hpp>
 
 #define dout_subsys ceph_subsys_rbd
@@ -33,6 +35,56 @@ namespace api {
 
 namespace {
 
+int get_config_key(librados::Rados& rados, const std::string& key,
+                   std::string* value) {
+  std::string cmd =
+    "{"
+      "\"prefix\": \"config-key get\", "
+      "\"key\": \"" + key + "\""
+    "}";
+
+  bufferlist in_bl;
+  bufferlist out_bl;
+
+  int r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
+  if (r == -EINVAL) {
+    return -EOPNOTSUPP;
+  } else if (r < 0 && r != -ENOENT) {
+    return r;
+  }
+
+  *value = out_bl.to_str();
+  return 0;
+}
+
+int set_config_key(librados::Rados& rados, const std::string& key,
+                   const std::string& value) {
+  std::string cmd;
+  if (value.empty()) {
+    cmd = "{"
+            "\"prefix\": \"config-key rm\", "
+            "\"key\": \"" + key + "\""
+          "}";
+  } else {
+    cmd = "{"
+            "\"prefix\": \"config-key set\", "
+            "\"key\": \"" + key + "\", "
+            "\"val\": \"" + value + "\""
+          "}";
+  }
+  bufferlist in_bl;
+  bufferlist out_bl;
+
+  int r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
+  if (r == -EINVAL) {
+    return -EOPNOTSUPP;
+  } else if (r < 0) {
+    return r;
+  }
+
+  return 0;
+}
+
 std::string get_peer_config_key_name(int64_t pool_id,
                                      const std::string& peer_uuid) {
   return RBD_MIRROR_PEER_CONFIG_KEY_PREFIX + stringify(pool_id) + "/" +
@@ -42,19 +94,148 @@ std::string get_peer_config_key_name(int64_t pool_id,
 int remove_peer_config_key(librados::IoCtx& io_ctx,
                            const std::string& peer_uuid) {
   int64_t pool_id = io_ctx.get_id();
+  auto key = get_peer_config_key_name(pool_id, peer_uuid);
+
+  librados::Rados rados(io_ctx);
+  int r = set_config_key(rados, key, "");
+  if (r < 0 && r != -ENOENT && r != -EPERM) {
+    return r;
+  }
+  return 0;
+}
+
+int create_bootstrap_user(CephContext* cct, librados::Rados& rados,
+                          std::string* peer_client_id, std::string* cephx_key) {
+  ldout(cct, 20) << dendl;
+
+  // retrieve peer CephX user from config-key
+  int r = get_config_key(rados, RBD_MIRROR_PEER_CLIENT_ID_CONFIG_KEY,
+                         peer_client_id);
+  if (r == -EACCES) {
+      ldout(cct, 5) << "insufficient permissions to get peer-client-id "
+                    << "config-key" << dendl;
+      return r;
+  } else if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to retrieve peer client id key: "
+               << cpp_strerror(r) << dendl;
+    return r;
+  } else if (r == -ENOENT || peer_client_id->empty()) {
+    ldout(cct, 20) << "creating new peer-client-id config-key" << dendl;
+
+    *peer_client_id = "rbd-mirror-peer";
+    r = set_config_key(rados, RBD_MIRROR_PEER_CLIENT_ID_CONFIG_KEY,
+                       *peer_client_id);
+    if (r == -EACCES) {
+      ldout(cct, 5) << "insufficient permissions to update peer-client-id "
+                    << "config-key" << dendl;
+      return r;
+    } else if (r < 0) {
+      lderr(cct) << "failed to update peer client id key: "
+                 << cpp_strerror(r) << dendl;
+      return r;
+    }
+  }
+  ldout(cct, 20) << "peer_client_id=" << *peer_client_id << dendl;
+
+  // create peer client user
   std::string cmd =
-    "{"
-      "\"prefix\": \"config-key rm\", "
-      "\"key\": \"" + get_peer_config_key_name(pool_id, peer_uuid) + "\""
-    "}";
+    R"({)" \
+    R"(  "prefix": "auth get-or-create",)" \
+    R"(  "entity": "client.)" + *peer_client_id + R"(",)" \
+    R"(  "caps": [)" \
+    R"(    "mon", "profile rbd-mirror-peer",)" \
+    R"(    "osd", "profile rbd"],)" \
+    R"(  "format": "json")" \
+    R"(})";
 
   bufferlist in_bl;
   bufferlist out_bl;
-  librados::Rados rados(io_ctx);
-  int r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
-  if (r < 0 && r != -ENOENT && r != -EPERM) {
+
+  r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
+  if (r == -EINVAL) {
+    ldout(cct, 5) << "caps mismatch for existing user" << dendl;
+    return -EEXIST;
+  } else if (r == -EACCES) {
+    ldout(cct, 5) << "insufficient permissions to create user" << dendl;
+    return r;
+  } else if (r < 0) {
+    lderr(cct) << "failed to create or update RBD mirroring bootstrap user: "
+               << cpp_strerror(r) << dendl;
     return r;
   }
+
+  // extract key from response
+  bool json_valid = false;
+  json_spirit::mValue json_root;
+  if(json_spirit::read(out_bl.to_str(), json_root)) {
+    try {
+      auto& json_obj = json_root.get_array()[0].get_obj();
+      *cephx_key = json_obj["key"].get_str();
+      json_valid = true;
+    } catch (std::runtime_error&) {
+    }
+  }
+
+  if (!json_valid) {
+    lderr(cct) << "invalid auth keyring JSON received" << dendl;
+    return -EBADMSG;
+  }
+
+  return 0;
+}
+
+int create_bootstrap_peer(CephContext* cct, librados::IoCtx& io_ctx,
+                          const std::string& site_name, const std::string& fsid,
+                          const std::string& client_id, const std::string& key,
+                          const std::string& mon_host,
+                          const std::string& cluster1,
+                          const std::string& cluster2) {
+  ldout(cct, 20) << dendl;
+
+  std::string peer_uuid;
+  std::vector<mirror_peer_t> peers;
+  int r = Mirror<>::peer_list(io_ctx, &peers);
+  if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to list mirror peers: " << cpp_strerror(r) << dendl;
+    return r;
+  }
+
+  if (peers.empty()) {
+    r = Mirror<>::peer_add(io_ctx, &peer_uuid, site_name,
+                           "client." + client_id);
+    if (r < 0) {
+      lderr(cct) << "failed to add " << cluster1 << " peer to "
+                 << cluster2 << " " << "cluster: " << cpp_strerror(r) << dendl;
+      return r;
+    }
+  } else if (peers[0].cluster_name != site_name &&
+             peers[0].cluster_name != fsid) {
+    // only support a single peer
+    lderr(cct) << "multiple peers are not currently supported" << dendl;
+    return -EINVAL;
+  } else {
+    peer_uuid = peers[0].uuid;
+
+    if (peers[0].cluster_name != site_name) {
+      r = Mirror<>::peer_set_cluster(io_ctx, peer_uuid, site_name);
+      if (r < 0) {
+        // non-fatal attempt to update site name
+        lderr(cct) << "failed to update peer site name" << dendl;
+      }
+    }
+  }
+
+  Mirror<>::Attributes attributes {
+    {"mon_host", mon_host},
+    {"key", key}};
+  r = Mirror<>::peer_set_attributes(io_ctx, peer_uuid, attributes);
+  if (r < 0) {
+    lderr(cct) << "failed to update " << cluster1 << " cluster connection "
+               << "attributes in " << cluster2 << " cluster: "
+               << cpp_strerror(r) << dendl;
+    return r;
+  }
+
   return 0;
 }
 
@@ -421,11 +602,6 @@ int Mirror<I>::image_resync(I *ictx) {
     return r;
   }
 
-  r = validate_mirroring_enabled(ictx);
-  if (r < 0) {
-    return r;
-  }
-
   C_SaferCond tag_owner_ctx;
   bool is_tag_owner;
   Journal<I>::is_tag_owner(ictx, &is_tag_owner, &tag_owner_ctx);
@@ -531,6 +707,51 @@ int Mirror<I>::image_get_instance_id(I *ictx, std::string *instance_id) {
   return 0;
 }
 
+template <typename I>
+int Mirror<I>::site_name_get(librados::Rados& rados, std::string* name) {
+  CephContext *cct = reinterpret_cast<CephContext *>(rados.cct());
+  ldout(cct, 20) << dendl;
+
+  int r = get_config_key(rados, RBD_MIRROR_SITE_NAME_CONFIG_KEY, name);
+  if (r == -EOPNOTSUPP) {
+    return r;
+  } else if (r == -ENOENT || name->empty()) {
+    // default to the cluster fsid
+    r = rados.cluster_fsid(name);
+    if (r < 0) {
+      lderr(cct) << "failed to retrieve cluster fsid: " << cpp_strerror(r)
+                 << dendl;
+    }
+    return r;
+  } else if (r < 0) {
+    lderr(cct) << "failed to retrieve site name: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  return 0;
+}
+
+template <typename I>
+int Mirror<I>::site_name_set(librados::Rados& rados, const std::string& name) {
+  CephContext *cct = reinterpret_cast<CephContext *>(rados.cct());
+
+  std::string site_name{name};
+  boost::algorithm::trim(site_name);
+  ldout(cct, 20) << "site_name=" << site_name << dendl;
+
+  int r = set_config_key(rados, RBD_MIRROR_SITE_NAME_CONFIG_KEY, name);
+  if (r == -EOPNOTSUPP) {
+    return r;
+  } else if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to update site name: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  return 0;
+}
+
 template <typename I>
 int Mirror<I>::mode_get(librados::IoCtx& io_ctx,
                         rbd_mirror_mode_t *mirror_mode) {
@@ -760,6 +981,234 @@ int Mirror<I>::mode_set(librados::IoCtx& io_ctx,
   return 0;
 }
 
+template <typename I>
+int Mirror<I>::peer_bootstrap_create(librados::IoCtx& io_ctx,
+                                     std::string* token) {
+  CephContext *cct = reinterpret_cast<CephContext *>(io_ctx.cct());
+  ldout(cct, 20) << dendl;
+
+  auto mirror_mode = cls::rbd::MIRROR_MODE_DISABLED;
+  int r = cls_client::mirror_mode_get(&io_ctx, &mirror_mode);
+  if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to retrieve mirroring mode: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  } else if (mirror_mode == cls::rbd::MIRROR_MODE_DISABLED) {
+    return -EINVAL;
+  }
+
+  // retrieve the cluster fsid
+  std::string fsid;
+  librados::Rados rados(io_ctx);
+  r = rados.cluster_fsid(&fsid);
+  if (r < 0) {
+    lderr(cct) << "failed to retrieve cluster fsid: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  std::string peer_client_id;
+  std::string cephx_key;
+  r = create_bootstrap_user(cct, rados, &peer_client_id, &cephx_key);
+  if (r < 0) {
+    return r;
+  }
+
+  std::string mon_host = cct->_conf.get_val<std::string>("mon_host");
+  ldout(cct, 20) << "mon_host=" << mon_host << dendl;
+
+  // format the token response
+  bufferlist token_bl;
+  token_bl.append(
+    R"({)" \
+      R"("fsid":")" + fsid + R"(",)" + \
+      R"("client_id":")" + peer_client_id + R"(",)" + \
+      R"("key":")" + cephx_key + R"(",)" + \
+      R"("mon_host":")" + \
+        boost::replace_all_copy(mon_host, "\"", "\\\"") + R"(")" + \
+    R"(})");
+  ldout(cct, 20) << "token=" << token_bl.to_str() << dendl;
+
+  bufferlist base64_bl;
+  token_bl.encode_base64(base64_bl);
+  *token = base64_bl.to_str();
+
+  return 0;
+}
+
+template <typename I>
+int Mirror<I>::peer_bootstrap_import(librados::IoCtx& io_ctx,
+                                     rbd_mirror_peer_direction_t direction,
+                                     const std::string& token) {
+  CephContext *cct = reinterpret_cast<CephContext *>(io_ctx.cct());
+  ldout(cct, 20) << dendl;
+
+  if (direction != RBD_MIRROR_PEER_DIRECTION_RX &&
+      direction != RBD_MIRROR_PEER_DIRECTION_RX_TX) {
+    lderr(cct) << "invalid mirror peer direction" << dendl;
+    return -EINVAL;
+  }
+
+  bufferlist token_bl;
+  try {
+    bufferlist base64_bl;
+    base64_bl.append(token);
+    token_bl.decode_base64(base64_bl);
+  } catch (buffer::error& err) {
+    lderr(cct) << "failed to decode base64" << dendl;
+    return -EINVAL;
+  }
+
+  ldout(cct, 20) << "token=" << token_bl.to_str() << dendl;
+
+  bool json_valid = false;
+  std::string expected_remote_fsid;
+  std::string remote_client_id;
+  std::string remote_key;
+  std::string remote_mon_host;
+
+  json_spirit::mValue json_root;
+  if(json_spirit::read(token_bl.to_str(), json_root)) {
+    try {
+      auto& json_obj = json_root.get_obj();
+      expected_remote_fsid = json_obj["fsid"].get_str();
+      remote_client_id = json_obj["client_id"].get_str();
+      remote_key = json_obj["key"].get_str();
+      remote_mon_host = json_obj["mon_host"].get_str();
+      json_valid = true;
+    } catch (std::runtime_error&) {
+    }
+  }
+
+  if (!json_valid) {
+    lderr(cct) << "invalid bootstrap token JSON received" << dendl;
+    return -EINVAL;
+  }
+
+  // sanity check import process
+  std::string local_fsid;
+  librados::Rados rados(io_ctx);
+  int r = rados.cluster_fsid(&local_fsid);
+  if (r < 0) {
+    lderr(cct) << "failed to retrieve cluster fsid: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  std::string local_site_name;
+  r = site_name_get(rados, &local_site_name);
+  if (r < 0) {
+    lderr(cct) << "failed to retrieve cluster site name: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  // attempt to connect to remote cluster
+  librados::Rados remote_rados;
+  remote_rados.init(remote_client_id.c_str());
+
+  auto remote_cct = reinterpret_cast<CephContext*>(remote_rados.cct());
+  remote_cct->_conf.set_val("mon_host", remote_mon_host);
+  remote_cct->_conf.set_val("key", remote_key);
+
+  r = remote_rados.connect();
+  if (r < 0) {
+    lderr(cct) << "failed to connect to peer cluster: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  }
+
+  std::string remote_fsid;
+  r = remote_rados.cluster_fsid(&remote_fsid);
+  if (r < 0) {
+    lderr(cct) << "failed to retrieve remote cluster fsid: "
+               << cpp_strerror(r) << dendl;
+    return r;
+  } else if (local_fsid == remote_fsid) {
+    lderr(cct) << "cannot import token for local cluster" << dendl;
+    return -EINVAL;
+  } else if (expected_remote_fsid != remote_fsid) {
+    lderr(cct) << "unexpected remote cluster fsid" << dendl;
+    return -EINVAL;
+  }
+
+  std::string remote_site_name;
+  r = site_name_get(remote_rados, &remote_site_name);
+  if (r < 0) {
+    lderr(cct) << "failed to retrieve remote cluster site name: "
+               << cpp_strerror(r) << dendl;
+    return r;
+  } else if (local_site_name == remote_site_name) {
+    lderr(cct) << "cannot import token for duplicate site name" << dendl;
+    return -EINVAL;
+  }
+
+  librados::IoCtx remote_io_ctx;
+  r = remote_rados.ioctx_create(io_ctx.get_pool_name().c_str(), remote_io_ctx);
+  if (r == -ENOENT) {
+    ldout(cct, 10) << "remote pool does not exist" << dendl;
+    return r;
+  } else if (r < 0) {
+    lderr(cct) << "failed to open remote pool '" << io_ctx.get_pool_name()
+               << "': " << cpp_strerror(r) << dendl;
+    return r;
+  }
+
+  auto remote_mirror_mode = cls::rbd::MIRROR_MODE_DISABLED;
+  r = cls_client::mirror_mode_get(&remote_io_ctx, &remote_mirror_mode);
+  if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to retrieve remote mirroring mode: "
+               << cpp_strerror(r) << dendl;
+    return r;
+  } else if (remote_mirror_mode == cls::rbd::MIRROR_MODE_DISABLED) {
+    return -ENOSYS;
+  }
+
+  auto local_mirror_mode = cls::rbd::MIRROR_MODE_DISABLED;
+  r = cls_client::mirror_mode_get(&io_ctx, &local_mirror_mode);
+  if (r < 0 && r != -ENOENT) {
+    lderr(cct) << "failed to retrieve local mirroring mode: " << cpp_strerror(r)
+               << dendl;
+    return r;
+  } else if (local_mirror_mode == cls::rbd::MIRROR_MODE_DISABLED) {
+    // copy mirror mode from remote peer
+    r = mode_set(io_ctx, static_cast<rbd_mirror_mode_t>(remote_mirror_mode));
+    if (r < 0) {
+      return r;
+    }
+  }
+
+  if (direction == RBD_MIRROR_PEER_DIRECTION_RX_TX) {
+    // create a local mirror peer user and export it to the remote cluster
+    std::string local_client_id;
+    std::string local_key;
+    r = create_bootstrap_user(cct, rados, &local_client_id, &local_key);
+    if (r < 0) {
+      return r;
+    }
+
+    std::string local_mon_host = cct->_conf.get_val<std::string>("mon_host");
+
+    // create local cluster peer in remote cluster
+    r = create_bootstrap_peer(cct, remote_io_ctx, local_site_name, local_fsid,
+                              local_client_id, local_key, local_mon_host,
+                              "local", "remote");
+    if (r < 0) {
+      return r;
+    }
+  }
+
+  // create remote cluster peer in local cluster
+  r = create_bootstrap_peer(cct, io_ctx, remote_site_name, remote_fsid,
+                            remote_client_id, remote_key, remote_mon_host,
+                            "remote", "local");
+  if (r < 0) {
+    return r;
+  }
+
+  return 0;
+}
+
 template <typename I>
 int Mirror<I>::peer_add(librados::IoCtx& io_ctx, std::string *uuid,
                         const std::string &cluster_name,
@@ -890,18 +1339,12 @@ int Mirror<I>::peer_get_attributes(librados::IoCtx& io_ctx,
   ldout(cct, 20) << "uuid=" << uuid << dendl;
 
   attributes->clear();
-  std::string cmd =
-    "{"
-      "\"prefix\": \"config-key get\", "
-      "\"key\": \"" + get_peer_config_key_name(io_ctx.get_id(), uuid) + "\""
-    "}";
-
-  bufferlist in_bl;
-  bufferlist out_bl;
 
   librados::Rados rados(io_ctx);
-  int r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
-  if (r == -ENOENT || out_bl.length() == 0) {
+  std::string value;
+  int r = get_config_key(rados, get_peer_config_key_name(io_ctx.get_id(), uuid),
+                         &value);
+  if (r == -ENOENT || value.empty()) {
     return -ENOENT;
   } else if (r < 0) {
     lderr(cct) << "failed to retrieve peer attributes: " << cpp_strerror(r)
@@ -911,7 +1354,7 @@ int Mirror<I>::peer_get_attributes(librados::IoCtx& io_ctx,
 
   bool json_valid = false;
   json_spirit::mValue json_root;
-  if(json_spirit::read(out_bl.to_str(), json_root)) {
+  if(json_spirit::read(value, json_root)) {
     try {
       auto& json_obj = json_root.get_obj();
       for (auto& pairs : json_obj) {
@@ -962,18 +1405,10 @@ int Mirror<I>::peer_set_attributes(librados::IoCtx& io_ctx,
   }
   ss << "}";
 
-  std::string cmd =
-    "{"
-      "\"prefix\": \"config-key set\", "
-      "\"key\": \"" + get_peer_config_key_name(io_ctx.get_id(), uuid) + "\", "
-      "\"val\": \"" + ss.str() + "\""
-    "}";
-  bufferlist in_bl;
-  bufferlist out_bl;
-
   librados::Rados rados(io_ctx);
-  r = rados.mon_command(cmd, in_bl, &out_bl, nullptr);
-  if (r < 0) {
+  r = set_config_key(rados, get_peer_config_key_name(io_ctx.get_id(), uuid),
+                     ss.str());
+  if (r < 0 && r != -ENOENT) {
     lderr(cct) << "failed to update peer attributes: " << cpp_strerror(r)
                << dendl;
     return r;
index 78a40849e7fd82179e2fba7c904bff2a010cd0f4..94768acdbbd66999bb776e872cf63151a58b7c0a 100644 (file)
@@ -23,9 +23,17 @@ struct Mirror {
   typedef std::map<std::string, mirror_image_status_t> IdToMirrorImageStatus;
   typedef std::map<mirror_image_status_state_t, int> MirrorImageStatusStates;
 
+  static int site_name_get(librados::Rados& rados, std::string* name);
+  static int site_name_set(librados::Rados& rados, const std::string& name);
+
   static int mode_get(librados::IoCtx& io_ctx, rbd_mirror_mode_t *mirror_mode);
   static int mode_set(librados::IoCtx& io_ctx, rbd_mirror_mode_t mirror_mode);
 
+  static int peer_bootstrap_create(librados::IoCtx& io_ctx, std::string* token);
+  static int peer_bootstrap_import(librados::IoCtx& io_ctx,
+                                   rbd_mirror_peer_direction_t direction,
+                                   const std::string& token);
+
   static int peer_add(librados::IoCtx& io_ctx, std::string *uuid,
                       const std::string &cluster_name,
                       const std::string &client_name);
index 99010bf4d3537840ef5744d9d48dd792f0dc7373..3d29cfb263a2078a239642ffb702fc37e3bbc3be 100644 (file)
@@ -111,7 +111,7 @@ int Snapshot<I>::get_group_namespace(I *ictx, uint64_t snap_id,
     return -ENOENT;
   }
 
-  GetGroupVisitor ggv = GetGroupVisitor(ictx->cct, &ictx->data_ctx, group_snap);
+  GetGroupVisitor ggv = GetGroupVisitor(ictx->cct, &ictx->md_ctx, group_snap);
   r = boost::apply_visitor(ggv, snap_info->snap_namespace);
   if (r < 0) {
     return r;
index 79f7bdfa4c5bfbbfe96c0099e17829aa78465214..4fcc106b4e36af7605bcc5e1a9620cfd5fbac337 100644 (file)
@@ -19,6 +19,7 @@
 #include "librbd/mirror/DisableRequest.h"
 #include "librbd/mirror/EnableRequest.h"
 #include "librbd/trash/MoveRequest.h"
+#include "librbd/trash/RemoveRequest.h"
 #include <json_spirit/json_spirit.h>
 #include "librbd/journal/DisabledPolicy.h"
 #include "librbd/image/ListWatchersRequest.h"
 namespace librbd {
 namespace api {
 
+template <typename I>
+const typename Trash<I>::TrashImageSources Trash<I>::RESTORE_SOURCE_WHITELIST {
+    cls::rbd::TRASH_IMAGE_SOURCE_USER,
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING
+  };
+
 namespace {
 
 template <typename I>
@@ -517,41 +524,17 @@ int Trash<I>::remove(IoCtx &io_ctx, const std::string &image_id, bool force,
     return -EBUSY;
   }
 
-  r = cls_client::trash_state_set(&io_ctx, image_id,
-                                  cls::rbd::TRASH_IMAGE_STATE_REMOVING,
-                                  cls::rbd::TRASH_IMAGE_STATE_NORMAL);
-  if (r < 0 && r != -EOPNOTSUPP) {
-    lderr(cct) << "error setting trash image state: "
-               << cpp_strerror(r) << dendl;
-    return r;
-  }
-
   ThreadPool *thread_pool;
   ContextWQ *op_work_queue;
   ImageCtx::get_thread_pool_instance(cct, &thread_pool, &op_work_queue);
 
   C_SaferCond cond;
-  auto req = librbd::image::RemoveRequest<I>::create(
-    io_ctx, "", image_id, force, true, prog_ctx, op_work_queue, &cond);
+  auto req = librbd::trash::RemoveRequest<I>::create(
+      io_ctx, image_id, op_work_queue, force, prog_ctx, &cond);
   req->send();
 
   r = cond.wait();
   if (r < 0) {
-    lderr(cct) << "error removing image " << image_id
-               << ", which is pending deletion" << dendl;
-    int ret = cls_client::trash_state_set(&io_ctx, image_id,
-                                          cls::rbd::TRASH_IMAGE_STATE_NORMAL,
-                                          cls::rbd::TRASH_IMAGE_STATE_REMOVING);
-    if (ret < 0 && ret != -EOPNOTSUPP) {
-      lderr(cct) << "error setting trash image state: "
-                 << cpp_strerror(ret) << dendl;
-    }
-    return r;
-  }
-  r = cls_client::trash_remove(&io_ctx, image_id);
-  if (r < 0 && r != -ENOENT) {
-    lderr(cct) << "error removing image " << image_id
-               << " from rbd_trash object" << dendl;
     return r;
   }
 
@@ -567,7 +550,8 @@ int Trash<I>::remove(IoCtx &io_ctx, const std::string &image_id, bool force,
 }
 
 template <typename I>
-int Trash<I>::restore(librados::IoCtx &io_ctx, rbd_trash_image_source_t source,
+int Trash<I>::restore(librados::IoCtx &io_ctx,
+                      const TrashImageSources& trash_image_sources,
                       const std::string &image_id,
                       const std::string &image_new_name) {
   CephContext *cct((CephContext *)io_ctx.cct());
@@ -582,10 +566,10 @@ int Trash<I>::restore(librados::IoCtx &io_ctx, rbd_trash_image_source_t source,
     return r;
   }
 
-  if (trash_spec.source !=  static_cast<cls::rbd::TrashImageSource>(source)) {
-    lderr(cct) << "Current trash source: " << trash_spec.source
-               << " does not match expected: "
-               << static_cast<cls::rbd::TrashImageSource>(source) << dendl;
+  if (trash_image_sources.count(trash_spec.source) == 0) {
+    lderr(cct) << "Current trash source '" << trash_spec.source << "' "
+               << "does not match expected: "
+               << trash_image_sources << dendl;
     return -EINVAL;
   }
 
index 6122bd9459c6b9dbb4c03e4d7929b91c59bc8190..65b6b8bc4fda166e2335931bd7e874a495cefd3a 100644 (file)
@@ -6,6 +6,8 @@
 
 #include "include/rados/librados_fwd.hpp"
 #include "include/rbd/librbd.hpp"
+#include "cls/rbd/cls_rbd_types.h"
+#include <set>
 #include <string>
 #include <vector>
 
@@ -19,6 +21,8 @@ namespace api {
 
 template <typename ImageCtxT = librbd::ImageCtx>
 struct Trash {
+  typedef std::set<cls::rbd::TrashImageSource> TrashImageSources;
+  static const TrashImageSources RESTORE_SOURCE_WHITELIST;
 
   static int move(librados::IoCtx &io_ctx, rbd_trash_image_source_t source,
                   const std::string &image_name, uint64_t delay);
@@ -34,7 +38,8 @@ struct Trash {
                    float threshold, ProgressContext& pctx);
   static int remove(librados::IoCtx &io_ctx, const std::string &image_id,
                     bool force, ProgressContext& prog_ctx);
-  static int restore(librados::IoCtx &io_ctx, rbd_trash_image_source_t source,
+  static int restore(librados::IoCtx &io_ctx,
+                     const TrashImageSources& trash_image_sources,
                      const std::string &image_id,
                      const std::string &image_new_name);
 
index f108247b2542350c4a246953bc560b8f939bc9bf..5bced71bfdf365ca55c45a1a9b23be34d50d2f24 100644 (file)
@@ -78,6 +78,7 @@ ObjectCacherObjectDispatch<I>::ObjectCacherObjectDispatch(
   : m_image_ctx(image_ctx),
     m_cache_lock(util::unique_lock_name(
       "librbd::cache::ObjectCacherObjectDispatch::cache_lock", this)) {
+  ceph_assert(m_image_ctx->data_ctx.is_valid());
 }
 
 template <typename I>
index 14acda37edfb696f44e55a9b0d9113cf47b92cfc..92a1750f1152e2c753454673b9f2e21c67d049fe 100644 (file)
@@ -50,6 +50,8 @@ ObjectCopyRequest<I>::ObjectCopyRequest(I *src_image_ctx,
     m_dst_image_ctx(dst_image_ctx), m_cct(dst_image_ctx->cct),
     m_snap_map(snap_map), m_dst_object_number(dst_object_number),
     m_flatten(flatten), m_on_finish(on_finish) {
+  ceph_assert(src_image_ctx->data_ctx.is_valid());
+  ceph_assert(dst_image_ctx->data_ctx.is_valid());
   ceph_assert(!m_snap_map.empty());
 
   m_src_async_op = new io::AsyncOperation();
index bedeeca01563720c010b60234b4f83f53b93a5d8..f3631bf37b680025eec642c98cfc7e6c05372659 100644 (file)
@@ -46,8 +46,7 @@ void AttachChildRequest<I>::v1_add_child() {
   ldout(m_cct, 15) << dendl;
 
   librados::ObjectWriteOperation op;
-  cls_client::add_child(&op, {m_parent_image_ctx->md_ctx.get_id(),
-                              m_parent_image_ctx->md_ctx.get_namespace(),
+  cls_client::add_child(&op, {m_parent_image_ctx->md_ctx.get_id(), "",
                               m_parent_image_ctx->id,
                               m_parent_snap_id}, m_image_ctx->id);
 
index 89f5c949a90534b3d6eeedd7b146894d21e5a264..5103f49d6fa5ccba203545d4088616c0e9daab0c 100644 (file)
@@ -241,6 +241,8 @@ void DetachChildRequest<I>::clone_v1_remove_child() {
   auto cct = m_image_ctx.cct;
   ldout(cct, 5) << dendl;
 
+  m_parent_spec.pool_namespace = "";
+
   librados::ObjectWriteOperation op;
   librbd::cls_client::remove_child(&op, m_parent_spec, m_image_ctx.id);
 
index dd9e603dc98bdae7d4270eabc9270b702215ddfd..7d4625aea1c28081f157725fd26ad1723fc2ff42 100644 (file)
@@ -473,13 +473,19 @@ Context *OpenRequest<I>::handle_v2_get_data_pool(int *result) {
     *result = util::create_ioctx(m_image_ctx->md_ctx, "data pool", data_pool_id,
                                  {}, &m_image_ctx->data_ctx);
     if (*result < 0) {
-      send_close_image(*result);
-      return nullptr;
+      if (*result != -ENOENT) {
+        send_close_image(*result);
+        return nullptr;
+      }
+      m_image_ctx->data_ctx.close();
+    } else {
+      m_image_ctx->data_ctx.set_namespace(m_image_ctx->md_ctx.get_namespace());
     }
-    m_image_ctx->data_ctx.set_namespace(m_image_ctx->md_ctx.get_namespace());
+  } else {
+    data_pool_id = m_image_ctx->md_ctx.get_id();
   }
 
-  m_image_ctx->init_layout();
+  m_image_ctx->init_layout(data_pool_id);
   send_refresh();
   return nullptr;
 }
@@ -516,7 +522,8 @@ Context *OpenRequest<I>::handle_refresh(int *result) {
 template <typename I>
 Context *OpenRequest<I>::send_init_cache(int *result) {
   // cache is disabled or parent image context
-  if (!m_image_ctx->cache || m_image_ctx->child != nullptr) {
+  if (!m_image_ctx->cache || m_image_ctx->child != nullptr ||
+      !m_image_ctx->data_ctx.is_valid()) {
     return send_register_watch(result);
   }
 
index 0ed6cf946adc9a7cbe60184eb7e16a0760c3140a..3326c143671bf56867bb4d6a93d238445daddeb2 100644 (file)
@@ -68,19 +68,10 @@ void PreRemoveRequest<I>::acquire_exclusive_lock() {
     m_image_ctx->set_journal_policy(new journal::DisabledPolicy());
   }
 
-  if (m_force) {
-    auto ctx = create_context_callback<
-      PreRemoveRequest<I>,
-      &PreRemoveRequest<I>::handle_exclusive_lock_force>(this);
-
-    m_exclusive_lock = m_image_ctx->exclusive_lock;
-    m_exclusive_lock->shut_down(ctx);
-  } else {
-    auto ctx = create_context_callback<
-      PreRemoveRequest<I>, &PreRemoveRequest<I>::handle_exclusive_lock>(this);
-
-    m_image_ctx->exclusive_lock->try_acquire_lock(ctx);
-  }
+  auto ctx = create_context_callback<
+    PreRemoveRequest<I>, &PreRemoveRequest<I>::handle_exclusive_lock>(this);
+
+  m_image_ctx->exclusive_lock->try_acquire_lock(ctx);
 }
 
 template <typename I>
@@ -89,8 +80,14 @@ void PreRemoveRequest<I>::handle_exclusive_lock(int r) {
   ldout(cct, 5) << "r=" << r << dendl;
 
   if (r < 0 || !m_image_ctx->exclusive_lock->is_lock_owner()) {
-    lderr(cct) << "cannot obtain exclusive lock - not removing" << dendl;
-    finish(-EBUSY);
+    if (!m_force) {
+      lderr(cct) << "cannot obtain exclusive lock - not removing" << dendl;
+      finish(-EBUSY);
+    } else {
+      ldout(cct, 5) << "cannot obtain exclusive lock - "
+                    << "proceeding due to force flag set" << dendl;
+      shut_down_exclusive_lock();
+    }
     return;
   }
 
@@ -98,7 +95,26 @@ void PreRemoveRequest<I>::handle_exclusive_lock(int r) {
 }
 
 template <typename I>
-void PreRemoveRequest<I>::handle_exclusive_lock_force(int r) {
+void PreRemoveRequest<I>::shut_down_exclusive_lock() {
+  RWLock::RLocker owner_lock(m_image_ctx->owner_lock);
+  if (m_image_ctx->exclusive_lock == nullptr) {
+    validate_image_removal();
+    return;
+  }
+
+  auto cct = m_image_ctx->cct;
+  ldout(cct, 5) << dendl;
+
+  auto ctx = create_context_callback<
+    PreRemoveRequest<I>,
+    &PreRemoveRequest<I>::handle_shut_down_exclusive_lock>(this);
+
+  m_exclusive_lock = m_image_ctx->exclusive_lock;
+  m_exclusive_lock->shut_down(ctx);
+}
+
+template <typename I>
+void PreRemoveRequest<I>::handle_shut_down_exclusive_lock(int r) {
   auto cct = m_image_ctx->cct;
   ldout(cct, 5) << "r=" << r << dendl;
 
index 99981491b651dc543175a4f531aad13ca2fc59bc..30f16b362133284fdf9d3d6a6dacecd812174a94 100644 (file)
@@ -35,15 +35,12 @@ private:
    * @verbatim
    *
    *       <start>
-   *          |
-   *          v
-   *   CHECK EXCLUSIVE LOCK
-   *          |
-   *          v (skip if not needed)
-   *  ACQUIRE EXCLUSIVE LOCK
-   *          |
-   *          v
-   *   CHECK IMAGE WATCHERS
+   *          |   (skip if
+   *          v    not needed)   (error)
+   *  ACQUIRE EXCLUSIVE LOCK  * * * * * * > SHUT DOWN EXCLUSIVE LOCK
+   *          |                                |
+   *          v                                |
+   *   CHECK IMAGE WATCHERS <------------------/
    *          |
    *          v
    *     CHECK GROUP
@@ -72,7 +69,9 @@ private:
 
   void acquire_exclusive_lock();
   void handle_exclusive_lock(int r);
-  void handle_exclusive_lock_force(int r);
+
+  void shut_down_exclusive_lock();
+  void handle_shut_down_exclusive_lock(int r);
 
   void validate_image_removal();
   void check_image_snaps();
index 664f5b8b793e5f63b9543fcfb52b0cbf473509bd..7ec565d6cafc342f80192ae78d9066ccc552bcec 100644 (file)
@@ -1313,7 +1313,7 @@ void RefreshRequest<I>::apply() {
       m_image_ctx.op_features = 0;
       m_image_ctx.operations_disabled = false;
       m_image_ctx.object_prefix = std::move(m_object_prefix);
-      m_image_ctx.init_layout();
+      m_image_ctx.init_layout(m_image_ctx.md_ctx.get_id());
     } else {
       // HEAD revision doesn't have a defined overlap so it's only
       // applicable to snapshots
@@ -1396,8 +1396,10 @@ void RefreshRequest<I>::apply() {
     if (m_refresh_parent != nullptr) {
       m_refresh_parent->apply();
     }
-    m_image_ctx.data_ctx.selfmanaged_snap_set_write_ctx(m_image_ctx.snapc.seq,
-                                                        m_image_ctx.snaps);
+    if (m_image_ctx.data_ctx.is_valid()) {
+      m_image_ctx.data_ctx.selfmanaged_snap_set_write_ctx(m_image_ctx.snapc.seq,
+                                                          m_image_ctx.snaps);
+    }
 
     // handle dynamically enabled / disabled features
     if (m_image_ctx.exclusive_lock != nullptr &&
index 1cff51b3eae5d777f9fa62079df35e3bfeb098e0..8e029f8b91223527f3c63281ef9661c8bbed0d1b 100644 (file)
@@ -126,6 +126,11 @@ void RemoveRequest<I>::handle_pre_remove_image(int r) {
     return;
   }
 
+  if (!m_image_ctx->data_ctx.is_valid()) {
+    detach_child();
+    return;
+  }
+
   trim_image();
 }
 
index 40a571e5aab85b9e895101638188a83127d01fc8..98d597645a4913bfc418bf46526f96be36de25dd 100644 (file)
@@ -63,7 +63,7 @@ private:
    *                              PRE REMOVE IMAGE * * *        |
    *                                     |             *        |
    *                                     v             *        |
-   *                                TRIM IMAGE * * * * *        |
+   *    (skip if invalid data pool) TRIM IMAGE * * * * *        |
    *                                     |             *        |
    *                                     v             *        |
    *                                DETACH CHILD       *        |
index 3ab44d0ec8599be139c9b4313fb45056e5951fa3..06ef47ca86504af6d32829717b9836c0b0b0fc8f 100644 (file)
@@ -114,6 +114,7 @@ CopyupRequest<I>::CopyupRequest(I *ictx, const std::string &oid,
     m_trace(util::create_trace(*m_image_ctx, "copy-up", parent_trace)),
     m_lock("CopyupRequest", false, false)
 {
+  ceph_assert(m_image_ctx->data_ctx.is_valid());
   m_async_op.start_op(*util::get_image_ctx(m_image_ctx));
 }
 
index 32584640d7ddb8e879aa8d76445f53773484a95c..34f2c2cf2bae49d060d963386d124d48b5b32496 100644 (file)
@@ -844,6 +844,15 @@ int ImageRequestWQ<I>::start_in_flight_io(AioCompletion *c) {
     return false;
   }
 
+  if (!m_image_ctx.data_ctx.is_valid()) {
+    CephContext *cct = m_image_ctx.cct;
+    lderr(cct) << "missing data pool" << dendl;
+
+    c->get();
+    c->fail(-ENODEV);
+    return false;
+  }
+
   m_in_flight_ios++;
   return true;
 }
index 57bd7291c6824575029a6a17a9ac215a72dbcc4c..58b1708455eb09bd1e55d21e5d618464c29ca3d0 100644 (file)
@@ -115,6 +115,7 @@ ObjectRequest<I>::ObjectRequest(I *ictx, const std::string &oid,
   : m_ictx(ictx), m_oid(oid), m_object_no(objectno), m_object_off(off),
     m_object_len(len), m_snap_id(snap_id), m_completion(completion),
     m_trace(util::create_trace(*ictx, "", trace)) {
+  ceph_assert(m_ictx->data_ctx.is_valid());
   if (m_trace.valid()) {
     m_trace.copy_name(trace_name + std::string(" ") + oid);
     m_trace.event("start");
index 605fe133239288c8c28c83241e8d7b23a389ed67..f7d6f64cdb9e79e8a275d0fc1c9c1ab34246d983 100644 (file)
@@ -643,8 +643,8 @@ namespace librbd {
     TracepointProvider::initialize<tracepoint_traits>(get_cct(io_ctx));
     tracepoint(librbd, trash_undelete_enter, io_ctx.get_pool_name().c_str(),
                io_ctx.get_id(), id, name);
-    int r = librbd::api::Trash<>::restore(io_ctx, RBD_TRASH_IMAGE_SOURCE_USER,
-                                          id, name);
+    int r = librbd::api::Trash<>::restore(
+      io_ctx, librbd::api::Trash<>::RESTORE_SOURCE_WHITELIST, id, name);
     tracepoint(librbd, trash_undelete_exit, r);
     return r;
   }
@@ -840,10 +840,31 @@ namespace librbd {
     return librbd::api::Mirror<>::mode_get(io_ctx, mirror_mode);
   }
 
+  int RBD::mirror_site_name_get(librados::Rados& rados,
+                                std::string* site_name) {
+    return librbd::api::Mirror<>::site_name_get(rados, site_name);
+  }
+
+  int RBD::mirror_site_name_set(librados::Rados& rados,
+                                const std::string& site_name) {
+    return librbd::api::Mirror<>::site_name_set(rados, site_name);
+  }
+
   int RBD::mirror_mode_set(IoCtx& io_ctx, rbd_mirror_mode_t mirror_mode) {
     return librbd::api::Mirror<>::mode_set(io_ctx, mirror_mode);
   }
 
+  int RBD::mirror_peer_bootstrap_create(IoCtx& io_ctx, std::string* token) {
+    return librbd::api::Mirror<>::peer_bootstrap_create(io_ctx, token);
+  }
+
+  int RBD::mirror_peer_bootstrap_import(IoCtx& io_ctx,
+                                        rbd_mirror_peer_direction_t direction,
+                                        const std::string& token) {
+    return librbd::api::Mirror<>::peer_bootstrap_import(io_ctx, direction,
+                                                        token);
+  }
+
   int RBD::mirror_peer_add(IoCtx& io_ctx, std::string *uuid,
                            const std::string &cluster_name,
                            const std::string &client_name) {
@@ -1457,7 +1478,7 @@ namespace librbd {
   int64_t Image::get_data_pool_id()
   {
     ImageCtx *ictx = reinterpret_cast<ImageCtx *>(ctx);
-    return ictx->data_ctx.get_id();
+    return librbd::api::Image<>::get_data_pool_id(ictx);
   }
 
   int Image::parent_info(string *parent_pool_name, string *parent_name,
@@ -2685,6 +2706,34 @@ extern "C" int rbd_image_options_is_empty(rbd_image_options_t opts)
 }
 
 /* pool mirroring */
+extern "C" int rbd_mirror_site_name_get(rados_t cluster, char *name,
+                                        size_t *max_len) {
+  librados::Rados rados;
+  librados::Rados::from_rados_t(cluster, rados);
+
+  std::string site_name;
+  int r = librbd::api::Mirror<>::site_name_get(rados, &site_name);
+  if (r < 0) {
+    return r;
+  }
+
+  auto total_len = site_name.size() + 1;
+  if (*max_len < total_len) {
+    *max_len = total_len;
+    return -ERANGE;
+  }
+  *max_len = total_len;
+
+  strcpy(name, site_name.c_str());
+  return 0;
+}
+
+extern "C" int rbd_mirror_site_name_set(rados_t cluster, const char *name) {
+  librados::Rados rados;
+  librados::Rados::from_rados_t(cluster, rados);
+  return librbd::api::Mirror<>::site_name_set(rados, name);
+}
+
 extern "C" int rbd_mirror_mode_get(rados_ioctx_t p,
                                    rbd_mirror_mode_t *mirror_mode) {
   librados::IoCtx io_ctx;
@@ -2699,6 +2748,37 @@ extern "C" int rbd_mirror_mode_set(rados_ioctx_t p,
   return librbd::api::Mirror<>::mode_set(io_ctx, mirror_mode);
 }
 
+extern "C" int rbd_mirror_peer_bootstrap_create(rados_ioctx_t p, char *token,
+                                                size_t *max_len) {
+  librados::IoCtx io_ctx;
+  librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+
+  std::string token_str;
+  int r = librbd::api::Mirror<>::peer_bootstrap_create(io_ctx, &token_str);
+  if (r < 0) {
+    return r;
+  }
+
+  auto total_len = token_str.size() + 1;
+  if (*max_len < total_len) {
+    *max_len = total_len;
+    return -ERANGE;
+  }
+  *max_len = total_len;
+
+  strcpy(token, token_str.c_str());
+  return 0;
+}
+
+extern "C" int rbd_mirror_peer_bootstrap_import(
+    rados_ioctx_t p, rbd_mirror_peer_direction_t direction,
+    const char *token) {
+  librados::IoCtx io_ctx;
+  librados::IoCtx::from_rados_ioctx_t(p, io_ctx);
+
+  return librbd::api::Mirror<>::peer_bootstrap_import(io_ctx, direction, token);
+}
+
 extern "C" int rbd_mirror_peer_add(rados_ioctx_t p, char *uuid,
                                    size_t uuid_max_length,
                                    const char *cluster_name,
@@ -3298,8 +3378,8 @@ extern "C" int rbd_trash_restore(rados_ioctx_t p, const char *id,
   TracepointProvider::initialize<tracepoint_traits>(get_cct(io_ctx));
   tracepoint(librbd, trash_undelete_enter, io_ctx.get_pool_name().c_str(),
              io_ctx.get_id(), id, name);
-  int r = librbd::api::Trash<>::restore(io_ctx, RBD_TRASH_IMAGE_SOURCE_USER,
-                                        id, name);
+  int r = librbd::api::Trash<>::restore(
+      io_ctx, librbd::api::Trash<>::RESTORE_SOURCE_WHITELIST, id, name);
   tracepoint(librbd, trash_undelete_exit, r);
   return r;
 }
@@ -4228,7 +4308,7 @@ extern "C" int rbd_get_block_name_prefix(rbd_image_t image, char *prefix,
 extern "C" int64_t rbd_get_data_pool_id(rbd_image_t image)
 {
   librbd::ImageCtx *ictx = reinterpret_cast<librbd::ImageCtx *>(image);
-  return ictx->data_ctx.get_id();
+  return librbd::api::Image<>::get_data_pool_id(ictx);
 }
 
 extern "C" int rbd_get_parent_info(rbd_image_t image,
index 658dbb4a73762d5c8adbf0a1e81f9df449c4c60e..669584164902e414b9f615a303c2e415f2b94c0d 100644 (file)
@@ -194,6 +194,11 @@ private:
 
 template <typename I>
 void ObjectMapIterateRequest<I>::send() {
+  if (!m_image_ctx.data_ctx.is_valid()) {
+    this->async_complete(-ENODEV);
+    return;
+  }
+
   send_verify_objects();
 }
 
@@ -201,6 +206,12 @@ template <typename I>
 bool ObjectMapIterateRequest<I>::should_complete(int r) {
   CephContext *cct = m_image_ctx.cct;
   ldout(cct, 5) << this << " should_complete: " << " r=" << r << dendl;
+
+  if (r == -ENODEV) {
+    lderr(cct) << "missing data pool" << dendl;
+    return true;
+  }
+
   if (r < 0) {
     lderr(cct) << "object map operation encountered an error: "
               << cpp_strerror(r) << dendl;
index 881f17376a4525f8b677324ee2484946478a4f71..537436ce27a12325403eb3648ceb775be8dea48e 100644 (file)
@@ -401,9 +401,9 @@ void ResizeRequest<I>::send_update_header() {
   librados::ObjectWriteOperation op;
   if (image_ctx.old_format) {
     // rewrite only the size field of the header
-    // NOTE: format 1 image headers are not stored in fixed endian format
+    ceph_le64 new_size = init_le64(m_new_size);
     bufferlist bl;
-    bl.append(reinterpret_cast<const char*>(&m_new_size), sizeof(m_new_size));
+    bl.append(reinterpret_cast<const char*>(&new_size), sizeof(new_size));
     op.write(offsetof(rbd_obj_header_ondisk, image_size), bl);
   } else {
     cls_client::set_size(&op, m_new_size);
index 31553177306f0183335f3abaea910d5b68d42ef8..66293609166e1d1ad90a59a452d1d299aad060c9 100644 (file)
@@ -36,6 +36,15 @@ SnapshotCreateRequest<I>::SnapshotCreateRequest(I &image_ctx,
 
 template <typename I>
 void SnapshotCreateRequest<I>::send_op() {
+  I &image_ctx = this->m_image_ctx;
+  CephContext *cct = image_ctx.cct;
+
+  if (!image_ctx.data_ctx.is_valid()) {
+    lderr(cct) << "missing data pool" << dendl;
+    this->async_complete(-ENODEV);
+    return;
+  }
+
   send_suspend_requests();
 }
 
index 8c34ebf6c5342a8ad1d59bd2ed137fe6fc2b4405..fde41a5f363dc30eb762325bf4a46bb7c4bbc128 100644 (file)
@@ -263,6 +263,11 @@ template <typename I>
 void SnapshotRemoveRequest<I>::release_snap_id() {
   I &image_ctx = this->m_image_ctx;
 
+  if (!image_ctx.data_ctx.is_valid()) {
+    remove_snap();
+    return;
+  }
+
   CephContext *cct = image_ctx.cct;
   ldout(cct, 5) << "snap_name=" << m_snap_name << ", "
                 << "snap_id=" << m_snap_id << dendl;
index 4dc6bde7e3240f747572b3b67c480e4b920887b9..53049f886e7a51443c16e0c8676746098adf1ac0 100644 (file)
@@ -124,6 +124,11 @@ public:
 
     ldout(m_cct, 20) << dendl;
 
+    if (!image_ctx.data_ctx.is_valid()) {
+      lderr(m_cct) << "missing data pool" << dendl;
+      return -ENODEV;
+    }
+
     if (image_ctx.exclusive_lock != nullptr &&
         !image_ctx.exclusive_lock->is_lock_owner()) {
       ldout(m_cct, 1) << "lost exclusive lock during sparsify" << dendl;
index cecf37b3e6138936b3764f6993051b1e2926d204..15f6a5dfd8185eea00ed8239f0409481dc42faa3 100644 (file)
@@ -174,6 +174,15 @@ bool TrimRequest<I>::should_complete(int r)
 
 template <typename I>
 void TrimRequest<I>::send() {
+  I &image_ctx = this->m_image_ctx;
+  CephContext *cct = image_ctx.cct;
+
+  if (!image_ctx.data_ctx.is_valid()) {
+    lderr(cct) << "missing data pool" << dendl;
+    send_finish(-ENODEV);
+    return;
+  }
+
   send_pre_trim();
 }
 
diff --git a/ceph/src/librbd/trash/RemoveRequest.cc b/ceph/src/librbd/trash/RemoveRequest.cc
new file mode 100644 (file)
index 0000000..77cbfd8
--- /dev/null
@@ -0,0 +1,171 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "librbd/trash/RemoveRequest.h"
+#include "common/WorkQueue.h"
+#include "common/dout.h"
+#include "common/errno.h"
+#include "cls/rbd/cls_rbd_client.h"
+#include "librbd/ExclusiveLock.h"
+#include "librbd/ImageCtx.h"
+#include "librbd/ImageState.h"
+#include "librbd/Utils.h"
+#include "librbd/image/RemoveRequest.h"
+
+#define dout_subsys ceph_subsys_rbd
+#undef dout_prefix
+#define dout_prefix *_dout << "librbd::trash::RemoveRequest: " << this \
+                           << " " << __func__ << ": "
+
+namespace librbd {
+namespace trash {
+
+using util::create_context_callback;
+using util::create_rados_callback;
+
+template <typename I>
+void RemoveRequest<I>::send() {
+  set_state();
+}
+
+template <typename I>
+void RemoveRequest<I>::set_state() {
+  ldout(m_cct, 10) << dendl;
+
+  librados::ObjectWriteOperation op;
+  cls_client::trash_state_set(&op, m_image_id, m_trash_set_state,
+                              m_trash_expect_state);
+
+  auto aio_comp = create_rados_callback<
+      RemoveRequest<I>, &RemoveRequest<I>::handle_set_state>(this);
+  int r = m_io_ctx.aio_operate(RBD_TRASH, aio_comp, &op);
+  ceph_assert(r == 0);
+  aio_comp->release();
+}
+
+template <typename I>
+void RemoveRequest<I>::handle_set_state(int r) {
+  ldout(m_cct, 10) << "r=" << r << dendl;
+
+  if (r < 0 && r != -EOPNOTSUPP) {
+    lderr(m_cct) << "error setting trash image state: " << cpp_strerror(r)
+                 << dendl;
+    if (m_ret_val == 0) {
+      m_ret_val = r;
+    }
+    if (m_trash_set_state == cls::rbd::TRASH_IMAGE_STATE_REMOVING) {
+      close_image();
+    } else {
+      finish(m_ret_val);
+    }
+    return;
+  }
+
+  if (m_trash_set_state == cls::rbd::TRASH_IMAGE_STATE_REMOVING) {
+    remove_image();
+  } else {
+    ceph_assert(m_trash_set_state == cls::rbd::TRASH_IMAGE_STATE_NORMAL);
+    finish(m_ret_val < 0 ? m_ret_val : r);
+  };
+}
+
+template <typename I>
+void RemoveRequest<I>::close_image() {
+  if (m_image_ctx == nullptr) {
+    finish(m_ret_val);
+    return;
+  }
+
+  ldout(m_cct, 10) << dendl;
+
+  auto ctx = create_context_callback<
+      RemoveRequest<I>, &RemoveRequest<I>::handle_close_image>(this);
+  m_image_ctx->state->close(ctx);
+}
+
+template <typename I>
+void RemoveRequest<I>::handle_close_image(int r) {
+  ldout(m_cct, 10) << "r=" << r << dendl;
+
+  if (r < 0) {
+    ldout(m_cct, 5) << "failed to close image:" << cpp_strerror(r) << dendl;
+  }
+
+  m_image_ctx->destroy();
+  m_image_ctx = nullptr;
+  finish(m_ret_val);
+}
+
+template <typename I>
+void RemoveRequest<I>::remove_image() {
+  ldout(m_cct, 10) << dendl;
+
+  auto ctx = create_context_callback<
+      RemoveRequest<I>, &RemoveRequest<I>::handle_remove_image>(this);
+  if (m_image_ctx != nullptr) {
+    auto req = librbd::image::RemoveRequest<I>::create(
+        m_io_ctx, m_image_ctx, m_force, true, m_prog_ctx, m_op_work_queue, ctx);
+    req->send();
+  } else {
+    auto req = librbd::image::RemoveRequest<I>::create(
+        m_io_ctx, "", m_image_id, m_force, true, m_prog_ctx, m_op_work_queue,
+        ctx);
+    req->send();
+  }
+}
+
+template <typename I>
+void RemoveRequest<I>::handle_remove_image(int r) {
+  ldout(m_cct, 10) << "r=" << r << dendl;
+
+  if (r < 0) {
+    ldout(m_cct, 5) << "failed to remove image:" << cpp_strerror(r) << dendl;
+
+    m_ret_val = r;
+    m_trash_set_state = cls::rbd::TRASH_IMAGE_STATE_NORMAL;
+    m_trash_expect_state = cls::rbd::TRASH_IMAGE_STATE_REMOVING;
+    set_state();
+    return;
+  }
+
+  m_image_ctx = nullptr;
+  remove_trash_entry();
+}
+
+template <typename I>
+void RemoveRequest<I>::remove_trash_entry() {
+  ldout(m_cct, 10) << dendl;
+
+  librados::ObjectWriteOperation op;
+  cls_client::trash_remove(&op, m_image_id);
+
+  auto aio_comp = create_rados_callback<
+      RemoveRequest<I>, &RemoveRequest<I>::handle_remove_trash_entry>(this);
+  int r = m_io_ctx.aio_operate(RBD_TRASH, aio_comp, &op);
+  ceph_assert(r == 0);
+  aio_comp->release();
+}
+
+template <typename I>
+void RemoveRequest<I>::handle_remove_trash_entry(int r) {
+  ldout(m_cct, 10) << "r=" << r << dendl;
+
+  if (r < 0 && r != -ENOENT) {
+    lderr(m_cct) << "error removing trash entry: " << cpp_strerror(r) << dendl;
+  }
+
+  finish(0);
+}
+
+template <typename I>
+void RemoveRequest<I>::finish(int r) {
+  ldout(m_cct, 10) << "r=" << r << dendl;
+
+  m_on_finish->complete(r);
+  delete this;
+}
+
+} // namespace trash
+} // namespace librbd
+
+template class librbd::trash::RemoveRequest<librbd::ImageCtx>;
diff --git a/ceph/src/librbd/trash/RemoveRequest.h b/ceph/src/librbd/trash/RemoveRequest.h
new file mode 100644 (file)
index 0000000..5f65a57
--- /dev/null
@@ -0,0 +1,119 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_LIBRBD_TRASH_REMOVE_REQUEST_H
+#define CEPH_LIBRBD_TRASH_REMOVE_REQUEST_H
+
+#include "include/utime.h"
+#include "include/rados/librados.hpp"
+#include "cls/rbd/cls_rbd_types.h"
+#include <string>
+
+class CephContext;
+class Context;
+class ContextWQ;
+
+namespace librbd {
+
+class ProgressContext;
+
+struct ImageCtx;
+
+namespace trash {
+
+template <typename ImageCtxT = librbd::ImageCtx>
+class RemoveRequest {
+public:
+  static RemoveRequest* create(librados::IoCtx &io_ctx,
+                               const std::string &image_id,
+                               ContextWQ *op_work_queue, bool force,
+                               ProgressContext &prog_ctx, Context *on_finish) {
+    return new RemoveRequest(io_ctx, image_id, op_work_queue, force, prog_ctx,
+                             on_finish);
+  }
+
+  static RemoveRequest* create(librados::IoCtx &io_ctx, ImageCtxT *image_ctx,
+                               ContextWQ *op_work_queue, bool force,
+                               ProgressContext &prog_ctx, Context *on_finish) {
+    return new RemoveRequest(io_ctx, image_ctx, op_work_queue, force, prog_ctx,
+                             on_finish);
+  }
+
+
+  RemoveRequest(librados::IoCtx &io_ctx, const std::string &image_id,
+                ContextWQ *op_work_queue, bool force, ProgressContext &prog_ctx,
+                Context *on_finish)
+    : m_io_ctx(io_ctx), m_image_id(image_id), m_op_work_queue(op_work_queue),
+      m_force(force), m_prog_ctx(prog_ctx), m_on_finish(on_finish),
+      m_cct(reinterpret_cast<CephContext *>(io_ctx.cct())) {
+  }
+
+  RemoveRequest(librados::IoCtx &io_ctx, ImageCtxT *image_ctx,
+                ContextWQ *op_work_queue, bool force, ProgressContext &prog_ctx,
+                Context *on_finish)
+    : m_io_ctx(io_ctx), m_image_ctx(image_ctx), m_image_id(m_image_ctx->id),
+      m_op_work_queue(op_work_queue), m_force(force), m_prog_ctx(prog_ctx),
+      m_on_finish(on_finish),
+      m_cct(reinterpret_cast<CephContext *>(io_ctx.cct())) {
+  }
+
+  void send();
+
+private:
+  /*
+   * @verbatim
+   *
+   * <start>
+   *    |
+   *    v
+   * SET_STATE (removing) * * * * * * *> CLOSE_IMAGE
+   *    |                                    |
+   *    v                                    |
+   * REMOVE_IMAGE * * *> SET_STATE (normal)  |
+   *    |                   |                |
+   *    v                   |                |
+   * REMOVE_TRASH_ENTRY     |                |
+   *    |                   |                |
+   *    v                   |                |
+   * <finish> <-------------/<---------------/
+   *
+   * @endverbatim
+   */
+
+  librados::IoCtx &m_io_ctx;
+  ImageCtxT *m_image_ctx = nullptr;
+  std::string m_image_id;
+  ContextWQ *m_op_work_queue;
+  bool m_force;
+  ProgressContext &m_prog_ctx;
+  Context *m_on_finish;
+
+  CephContext *m_cct;
+
+  cls::rbd::TrashImageState m_trash_set_state =
+      cls::rbd::TRASH_IMAGE_STATE_REMOVING;
+  cls::rbd::TrashImageState m_trash_expect_state =
+      cls::rbd::TRASH_IMAGE_STATE_NORMAL;
+  int m_ret_val = 0;
+
+  void set_state();
+  void handle_set_state(int r);
+
+  void close_image();
+  void handle_close_image(int r);
+
+  void remove_image();
+  void handle_remove_image(int r);
+
+  void remove_trash_entry();
+  void handle_remove_trash_entry(int r);
+
+  void finish(int r);
+};
+
+} // namespace trash
+} // namespace librbd
+
+extern template class librbd::trash::RemoveRequest<librbd::ImageCtx>;
+
+#endif // CEPH_LIBRBD_TRASH_REMOVE_REQUEST_H
index 2c48e3b2d9969abe23f4aa8793edd226f2919b3e..27c946b0f56d774484b1231cea108dedd6ec9b9c 100644 (file)
@@ -235,6 +235,7 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CIno
   static const int STATE_EVALSTALECAPS         = (1<<16);
   static const int STATE_QUEUEDEXPORTPIN       = (1<<17);
   static const int STATE_TRACKEDBYOFT          = (1<<18);  // tracked by open file table
+  static const int STATE_DELAYEDEXPORTPIN      = (1<<19);
   // orphan inode needs notification of releasing reference
   static const int STATE_ORPHAN =      STATE_NOTIFYREF;
 
@@ -242,7 +243,7 @@ class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CIno
     (STATE_DIRTY|STATE_NEEDSRECOVER|STATE_DIRTYPARENT|STATE_DIRTYPOOL);
   static const int MASK_STATE_EXPORT_KEPT =
     (STATE_FROZEN|STATE_AMBIGUOUSAUTH|STATE_EXPORTINGCAPS|
-     STATE_QUEUEDEXPORTPIN|STATE_TRACKEDBYOFT);
+     STATE_QUEUEDEXPORTPIN|STATE_TRACKEDBYOFT|STATE_DELAYEDEXPORTPIN);
 
   // -- waiters --
   static const uint64_t WAIT_DIR         = (1<<0);
@@ -626,7 +627,7 @@ protected:
   int num_caps_wanted = 0;
 
 public:
-  mempool::mds_co::compact_map<int, mempool::mds_co::set<client_t> > client_snap_caps;     // [auth] [snap] dirty metadata we still need from the head
+  mempool::mds_co::set<client_t> client_snap_caps;
   mempool::mds_co::compact_map<snapid_t, mempool::mds_co::set<client_t> > client_need_snapflush;
 
   void add_need_snapflush(CInode *snapin, snapid_t snapid, client_t client);
index 43fe380c7895bd7fc11baabd4a5ae0cb6f22c225..dfb6a41d4b057d9a59b39a70bfe10b1261879624 100644 (file)
@@ -226,15 +226,10 @@ bool InoTable::repair(inodeno_t id)
 
 bool InoTable::force_consume_to(inodeno_t ino)
 {
-  auto it = free.begin();
-  if (it != free.end() && it.get_start() <= ino) {
-    inodeno_t min = it.get_start();
-    derr << "erasing " << min << " to " << ino << dendl;
-    free.erase(min, ino - min + 1);
-    projected_free = free;
-    projected_version = ++version;
-    return true;
-  } else {
+  inodeno_t first = free.range_start();
+  if (first > ino)
     return false;
-  }
+
+  skip_inos(inodeno_t(ino + 1 - first));
+  return true;
 }
index 639656adc1d24fd4608427262c748506a75fe153..a7c68adf0d1a3f332049a06dfb237b68c95f86fc 100644 (file)
@@ -1858,30 +1858,15 @@ void Locker::file_update_finish(CInode *in, MutationRef& mut, unsigned flags,
   } else if ((flags & UPDATE_SNAPFLUSH) && !in->client_snap_caps.empty()) {
     dout(10) << " client_snap_caps " << in->client_snap_caps << dendl;
     // check for snap writeback completion
-    bool gather = false;
-    auto p = in->client_snap_caps.begin();
-    while (p != in->client_snap_caps.end()) {
-      auto q = p->second.find(client);
-      if (q != p->second.end()) {
-       SimpleLock *lock = in->get_lock(p->first);
+    in->client_snap_caps.erase(client);
+    if (in->client_snap_caps.empty()) {
+      for (int i = 0; i < num_cinode_locks; i++) {
+       SimpleLock *lock = in->get_lock(cinode_lock_info[i].lock);
        ceph_assert(lock);
-       dout(10) << " completing client_snap_caps for " << ccap_string(p->first)
-                << " lock " << *lock << " on " << *in << dendl;
        lock->put_wrlock();
-
-       p->second.erase(q);
-       if (p->second.empty()) {
-         gather = true;
-         in->client_snap_caps.erase(p++);
-       } else
-         ++p;
-      }
-    }
-    if (gather) {
-      if (in->client_snap_caps.empty()) {
-       in->item_open_file.remove_myself();
-       in->item_caps.remove_myself();
       }
+      in->item_open_file.remove_myself();
+      in->item_caps.remove_myself();
       eval_cap_gather(in, &need_issue);
     }
   }
@@ -2964,8 +2949,9 @@ void Locker::handle_client_caps(const MClientCaps::const_ref &m)
        dout(10) << " revocation in progress, not making any conclusions about null snapflushes" << dendl;
       }
     }
+    if (cap->need_snapflush() && !(m->flags & MClientCaps::FLAG_PENDING_CAPSNAP))
+      cap->clear_needsnapflush();
 
-    bool need_snapflush = cap->need_snapflush();
     if (dirty && in->is_auth()) {
       dout(7) << " flush client." << client << " dirty " << ccap_string(dirty)
              << " seq " << m->get_seq() << " on " << *in << dendl;
@@ -2973,12 +2959,6 @@ void Locker::handle_client_caps(const MClientCaps::const_ref &m)
           m->get_caps(), 0, dirty, 0, mds->get_osd_epoch_barrier());
       ack->set_client_tid(m->get_client_tid());
       ack->set_oldest_flush_tid(m->get_oldest_flush_tid());
-
-      // client flushes and releases caps at the same time. make sure MDCache::cow_inode()
-      // properly setup CInode::client_need_snapflush
-      if (!need_snapflush && (dirty & ~cap->issued()) &&
-         (m->flags & MClientCaps::FLAG_PENDING_CAPSNAP))
-       cap->mark_needsnapflush();
     }
 
     // filter wanted based on what we could ever give out (given auth/replica status)
@@ -2993,14 +2973,9 @@ void Locker::handle_client_caps(const MClientCaps::const_ref &m)
       adjust_cap_wanted(cap, new_wanted, m->get_issue_seq());
     }
 
-    bool updated = in->is_auth() &&
-                  _do_cap_update(in, cap, dirty, follows, m, ack, &need_flush);
-
-    if (cap->need_snapflush() &&
-       (!need_snapflush || !(m->flags & MClientCaps::FLAG_PENDING_CAPSNAP)))
-      cap->clear_needsnapflush();
-
-    if (updated) {
+    if (in->is_auth() &&
+       _do_cap_update(in, cap, dirty, follows, m, ack, &need_flush)) {
+      // updated
       eval(in, CEPH_CAP_LOCKS);
 
       if (!need_flush && (cap->wanted() & ~cap->pending()))
@@ -3692,7 +3667,10 @@ void Locker::get_late_revoking_clients(std::list<client_t> *result,
   // Slow path: execute in O(N_clients)
   for (auto &p : revoking_caps_by_client) {
     if (any_late_revoking_caps(p.second, timeout)) {
-      result->push_back(p.first);
+      // Search the list for duplicate and only insert if unique
+      std::list<client_t>::const_iterator it = std::find(result->begin(), result->end(), p.first);
+      if (it == result->end())
+        result->push_back(p.first);
     }
   }
 }
index 66c5ffe9f16bff400ddf3b8b6d16431e55b35c29..e178482394444c54cf4d556b5361441086e92ef6 100644 (file)
@@ -102,6 +102,15 @@ void MDBalancer::handle_export_pins(void)
     CInode *in = *cur;
     ceph_assert(in->is_dir());
     mds_rank_t export_pin = in->get_export_pin(false);
+    if (export_pin >= mds->mdsmap->get_max_mds()) {
+      dout(20) << " delay export pin on " << *in << dendl;
+      in->state_clear(CInode::STATE_QUEUEDEXPORTPIN);
+      q.erase(cur);
+
+      in->state_set(CInode::STATE_DELAYEDEXPORTPIN);
+      mds->mdcache->export_pin_delayed_queue.insert(in);
+      continue;
+    }
 
     bool remove = true;
     list<CDir*> dfls;
@@ -166,7 +175,8 @@ void MDBalancer::handle_export_pins(void)
                  dendl;
     }
 
-    if (export_pin >= 0 && export_pin != mds->get_nodeid()) {
+    if (export_pin >= 0 && export_pin < mds->mdsmap->get_max_mds() 
+       && export_pin != mds->get_nodeid()) {
       mds->mdcache->migrator->export_dir(cd, export_pin);
     }
   }
index 886b0eef1a391d42bdea70ec80969fdb7c0fbe57..e9238391cccfcbf70b28f34cdda82aaefc6ce6c2 100644 (file)
@@ -136,45 +136,17 @@ public:
 MDCache::MDCache(MDSRank *m, PurgeQueue &purge_queue_) :
   mds(m),
   filer(m->objecter, m->finisher),
-  exceeded_size_limit(false),
   recovery_queue(m),
   stray_manager(m, purge_queue_),
   trim_counter(g_conf().get_val<double>("mds_cache_trim_decay_rate")),
   open_file_table(m)
 {
   migrator.reset(new Migrator(mds, this));
-  root = NULL;
-  myin = NULL;
-  readonly = false;
-
-  stray_index = 0;
-  for (int i = 0; i < NUM_STRAY; ++i) {
-    strays[i] = NULL;
-  }
-
-  num_shadow_inodes = 0;
-  num_inodes_with_caps = 0;
 
   max_dir_commit_size = g_conf()->mds_dir_max_commit_size ?
                         (g_conf()->mds_dir_max_commit_size << 20) :
                         (0.9 *(g_conf()->osd_max_write_size << 20));
 
-  discover_last_tid = 0;
-  open_ino_last_tid = 0;
-  find_ino_peer_last_tid = 0;
-
-  last_cap_id = 0;
-
-  client_lease_durations[0] = 5.0;
-  client_lease_durations[1] = 30.0;
-  client_lease_durations[2] = 300.0;
-
-  resolves_pending = false;
-  rejoins_pending = false;
-  cap_imports_num_opening = 0;
-
-  opening_root = open = false;
-
   cache_inode_limit = g_conf().get_val<int64_t>("mds_cache_size");
   cache_memory_limit = g_conf().get_val<Option::size_t>("mds_cache_memory_limit");
   cache_reservation = g_conf().get_val<double>("mds_cache_reservation");
@@ -186,9 +158,35 @@ MDCache::MDCache(MDSRank *m, PurgeQueue &purge_queue_) :
 
   decayrate.set_halflife(g_conf()->mds_decay_halflife);
 
-  did_shutdown_log_cap = false;
-
-  global_snaprealm = NULL;
+  upkeeper = std::thread([this]() {
+    std::unique_lock lock(upkeep_mutex);
+    while (!upkeep_trim_shutdown.load()) {
+      auto now = clock::now();
+      auto since = now-upkeep_last_trim;
+      auto interval = clock::duration(g_conf().get_val<std::chrono::seconds>("mds_cache_trim_interval"));
+      if (since >= interval*.90) {
+        lock.unlock(); /* mds_lock -> upkeep_mutex */
+        std::scoped_lock mds_lock(mds->mds_lock);
+        lock.lock();
+        if (upkeep_trim_shutdown.load())
+          return;
+        if (mds->is_cache_trimmable()) {
+          dout(20) << "upkeep thread trimming cache; last trim " << since << " ago" << dendl;
+          trim_client_leases();
+          trim();
+          check_memory_usage();
+          mds->server->recall_client_state(nullptr, Server::RecallFlags::ENFORCE_MAX);
+          upkeep_last_trim = clock::now();
+        } else {
+          dout(10) << "cache not ready for trimming" << dendl;
+        }
+      } else {
+        interval -= since;
+      }
+      dout(20) << "upkeep thread waiting interval " << interval << dendl;
+      upkeep_cvar.wait_for(lock, interval);
+    }
+  });
 }
 
 MDCache::~MDCache() 
@@ -196,6 +194,8 @@ MDCache::~MDCache()
   if (logger) {
     g_ceph_context->get_perfcounters_collection()->remove(logger.get());
   }
+  if (upkeeper.joinable())
+    upkeeper.join();
 }
 
 void MDCache::handle_conf_change(const ConfigProxy& conf,
@@ -230,6 +230,11 @@ void MDCache::log_stat()
   mds->logger->set(l_mds_inodes_pin_tail, lru.lru_get_pintail());
   mds->logger->set(l_mds_inodes_with_caps, num_inodes_with_caps);
   mds->logger->set(l_mds_caps, Capability::count());
+  if (root) {
+    mds->logger->set(l_mds_root_rfiles, root->inode.rstat.rfiles);
+    mds->logger->set(l_mds_root_rbytes, root->inode.rstat.rbytes);
+    mds->logger->set(l_mds_root_rsnaps, root->inode.rstat.rsnaps);
+  }
 }
 
 
@@ -237,6 +242,11 @@ void MDCache::log_stat()
 
 bool MDCache::shutdown()
 {
+  {
+    std::scoped_lock lock(upkeep_mutex);
+    upkeep_trim_shutdown = true;
+    upkeep_cvar.notify_one();
+  }
   if (lru.lru_get_size() > 0) {
     dout(7) << "WARNING: mdcache shutdown with non-empty cache" << dendl;
     //show_cache();
@@ -305,6 +315,9 @@ void MDCache::remove_inode(CInode *o)
   if (o->state_test(CInode::STATE_QUEUEDEXPORTPIN))
     export_pin_queue.erase(o);
 
+  if (o->state_test(CInode::STATE_DELAYEDEXPORTPIN))
+    export_pin_delayed_queue.erase(o);
+
   // remove from inode map
   if (o->last == CEPH_NOSNAP) {
     inode_map.erase(o->ino());
@@ -1468,17 +1481,16 @@ CInode *MDCache::cow_inode(CInode *in, snapid_t last)
     auto ret = head_in->split_need_snapflush(oldin, in);
     if (ret.first) {
       oldin->client_snap_caps = in->client_snap_caps;
-      for (const auto &p : oldin->client_snap_caps) {
-       SimpleLock *lock = oldin->get_lock(p.first);
-       ceph_assert(lock);
-       for (const auto &q : p.second) {
+      if (!oldin->client_snap_caps.empty()) {
+       for (int i = 0; i < num_cinode_locks; i++) {
+         SimpleLock *lock = oldin->get_lock(cinode_lock_info[i].lock);
+         ceph_assert(lock);
          if (lock->get_state() != LOCK_SNAP_SYNC) {
            ceph_assert(lock->is_stable());
            lock->set_state(LOCK_SNAP_SYNC);  // gathering
            oldin->auth_pin(lock);
          }
          lock->get_wrlock(true);
-         (void)q; /* unused */
        }
       }
     }
@@ -1487,17 +1499,21 @@ CInode *MDCache::cow_inode(CInode *in, snapid_t last)
       in->client_snap_caps.clear();
       in->item_open_file.remove_myself();
       in->item_caps.remove_myself();
-      for (const auto &p : client_snap_caps) {
-       SimpleLock *lock = in->get_lock(p.first);
-       ceph_assert(lock);
-       ceph_assert(lock->get_state() == LOCK_SNAP_SYNC); // gathering
-       for (const auto &q : p.second) {
+
+      if (!client_snap_caps.empty()) {
+       MDSContext::vec finished;
+       for (int i = 0; i < num_cinode_locks; i++) {
+         SimpleLock *lock = in->get_lock(cinode_lock_info[i].lock);
+         ceph_assert(lock);
+         ceph_assert(lock->get_state() == LOCK_SNAP_SYNC); // gathering
          lock->put_wrlock();
-         (void)q; /* unused */
+         if (!lock->get_num_wrlocks()) {
+           lock->set_state(LOCK_SYNC);
+           lock->take_waiting(SimpleLock::WAIT_STABLE|SimpleLock::WAIT_RD, finished);
+           in->auth_unpin(lock);
+         }
        }
-       ceph_assert(!lock->get_num_wrlocks());
-       lock->set_state(LOCK_SYNC);
-       in->auth_unpin(lock);
+       mds->queue_waiters(finished);
       }
     }
     return oldin;
@@ -1512,23 +1528,8 @@ CInode *MDCache::cow_inode(CInode *in, snapid_t last)
       int issued = cap->need_snapflush() ? CEPH_CAP_ANY_WR : cap->issued();
       if ((issued & CEPH_CAP_ANY_WR) &&
          cap->client_follows < last) {
-       // note in oldin
-       for (int i = 0; i < num_cinode_locks; i++) {
-         if (issued & cinode_lock_info[i].wr_caps) {
-           int lockid = cinode_lock_info[i].lock;
-           SimpleLock *lock = oldin->get_lock(lockid);
-           ceph_assert(lock);
-           if (lock->get_state() != LOCK_SNAP_SYNC) {
-             ceph_assert(lock->is_stable());
-             lock->set_state(LOCK_SNAP_SYNC);  // gathering
-             oldin->auth_pin(lock);
-           }
-           lock->get_wrlock(true);
-           oldin->client_snap_caps[lockid].insert(client);
-           dout(10) << " client." << client << " cap " << ccap_string(issued & cinode_lock_info[i].wr_caps)
-                    << " wrlock lock " << *lock << " on " << *oldin << dendl;
-         }
-       }
+       dout(10) << " client." << client << " cap " << ccap_string(issued) << dendl;
+       oldin->client_snap_caps.insert(client);
        cap->client_follows = last;
 
        // we need snapflushes for any intervening snaps
@@ -1542,6 +1543,19 @@ CInode *MDCache::cow_inode(CInode *in, snapid_t last)
        dout(10) << " ignoring client." << client << " cap follows " << cap->client_follows << dendl;
       }
     }
+
+    if (!oldin->client_snap_caps.empty()) {
+      for (int i = 0; i < num_cinode_locks; i++) {
+       SimpleLock *lock = oldin->get_lock(cinode_lock_info[i].lock);
+       ceph_assert(lock);
+       if (lock->get_state() != LOCK_SNAP_SYNC) {
+         ceph_assert(lock->is_stable());
+         lock->set_state(LOCK_SNAP_SYNC);  // gathering
+         oldin->auth_pin(lock);
+       }
+       lock->get_wrlock(true);
+      }
+    }
   }
   return oldin;
 }
@@ -5504,17 +5518,17 @@ void MDCache::rebuild_need_snapflush(CInode *head_in, SnapRealm *realm,
 
     dout(10) << " need snapflush from client." << client << " on " << *in << dendl;
 
-    /* TODO: we can check the reconnected/flushing caps to find
-     *       which locks need gathering */
-    for (int i = 0; i < num_cinode_locks; i++) {
-      int lockid = cinode_lock_info[i].lock;
-      SimpleLock *lock = in->get_lock(lockid);
-      ceph_assert(lock);
-      in->client_snap_caps[lockid].insert(client);
-      in->auth_pin(lock);
-      lock->set_state(LOCK_SNAP_SYNC);
-      lock->get_wrlock(true);
+    if (in->client_snap_caps.empty()) {
+      for (int i = 0; i < num_cinode_locks; i++) {
+       int lockid = cinode_lock_info[i].lock;
+       SimpleLock *lock = in->get_lock(lockid);
+       ceph_assert(lock);
+       in->auth_pin(lock);
+       lock->set_state(LOCK_SNAP_SYNC);
+       lock->get_wrlock(true);
+      }
     }
+    in->client_snap_caps.insert(client);
     mds->locker->mark_need_snapflush_inode(in);
   }
 }
@@ -7303,6 +7317,13 @@ void MDCache::standby_trim_segment(LogSegment *ls)
     in->dirfragtreelock.remove_dirty();
     try_trim_inode(in);
   }
+  while (!ls->truncating_inodes.empty()) {
+    auto it = ls->truncating_inodes.begin();
+    CInode *in = *it;
+    ls->truncating_inodes.erase(it);
+    in->put(CInode::PIN_TRUNCATING);
+    try_trim_inode(in);
+  }
 }
 
 void MDCache::handle_cache_expire(const MCacheExpire::const_ref &m)
@@ -7560,19 +7581,21 @@ void MDCache::trim_client_leases()
   
   dout(10) << "trim_client_leases" << dendl;
 
-  for (int pool=0; pool<client_lease_pools; pool++) {
-    int before = client_leases[pool].size();
-    if (client_leases[pool].empty()) 
+  std::size_t pool = 0;
+  for (const auto& list : client_leases) {
+    pool += 1;
+    if (list.empty())
       continue;
 
-    while (!client_leases[pool].empty()) {
-      ClientLease *r = client_leases[pool].front();
+    auto before = list.size();
+    while (!list.empty()) {
+      ClientLease *r = list.front();
       if (r->ttl > now) break;
       CDentry *dn = static_cast<CDentry*>(r->parent);
       dout(10) << " expiring client." << r->client << " lease of " << *dn << dendl;
       dn->remove_client_lease(r, mds->locker);
     }
-    int after = client_leases[pool].size();
+    auto after = list.size();
     dout(10) << "trim_client_leases pool " << pool << " trimmed "
             << (before-after) << " leases, " << after << " left" << dendl;
   }
@@ -12988,3 +13011,23 @@ bool MDCache::dump_inode(Formatter *f, uint64_t number) {
   f->close_section();
   return true;
 }
+
+void MDCache::handle_mdsmap(const MDSMap &mdsmap) {
+  // process export_pin_delayed_queue whenever a new MDSMap received
+  auto &q = export_pin_delayed_queue;
+  for (auto it = q.begin(); it != q.end(); ) {
+    auto *in = *it;
+    mds_rank_t export_pin = in->get_export_pin(false);
+    dout(10) << " delayed export_pin=" << export_pin << " on " << *in 
+      << " max_mds=" << mdsmap.get_max_mds() << dendl;
+    if (export_pin >= mdsmap.get_max_mds()) {
+      it++;
+      continue;
+    }
+
+    in->state_clear(CInode::STATE_DELAYEDEXPORTPIN);
+    it = q.erase(it);
+    in->maybe_export_pin();
+  }
+}
+
index 0482b82bbdf9dbb06bb500d85105e2edb389f6bc..9cd83419d9e3fe5e47182b42ce8502709dad3cc9 100644 (file)
@@ -17,7 +17,9 @@
 #ifndef CEPH_MDCACHE_H
 #define CEPH_MDCACHE_H
 
+#include <atomic>
 #include <string_view>
+#include <thread>
 
 #include "common/DecayCounter.h"
 #include "include/types.h"
@@ -135,14 +137,14 @@ class MDCache {
  protected:
   ceph::unordered_map<inodeno_t,CInode*> inode_map;  // map of head inodes by ino
   map<vinodeno_t, CInode*> snap_inode_map;  // map of snap inodes by ino
-  CInode *root;                            // root inode
-  CInode *myin;                            // .ceph/mds%d dir
+  CInode *root = nullptr; // root inode
+  CInode *myin = nullptr; // .ceph/mds%d dir
 
-  bool readonly;
+  bool readonly = false;
   void set_readonly() { readonly = true; }
 
-  CInode *strays[NUM_STRAY];         // my stray dir
-  int stray_index;
+  std::array<CInode *, NUM_STRAY> strays{}; // my stray dir
+  int stray_index = 0;
 
   CInode *get_stray() {
     return strays[stray_index];
@@ -154,7 +156,7 @@ class MDCache {
 
   Filer filer;
 
-  bool exceeded_size_limit;
+  bool exceeded_size_limit = false;
 
 private:
   uint64_t cache_inode_limit;
@@ -208,9 +210,9 @@ public:
 
   DecayRate decayrate;
 
-  int num_shadow_inodes;
+  int num_shadow_inodes = 0;
 
-  int num_inodes_with_caps;
+  int num_inodes_with_caps = 0;
 
   unsigned max_dir_commit_size;
 
@@ -224,10 +226,11 @@ public:
 
   // -- client leases --
 public:
-  static const int client_lease_pools = 3;
-  float client_lease_durations[client_lease_pools];
+  static constexpr std::size_t client_lease_pools = 3;
+  std::array<float, client_lease_pools> client_lease_durations{5.0, 30.0, 300.0};
+
 protected:
-  xlist<ClientLease*> client_leases[client_lease_pools];
+  std::array<xlist<ClientLease*>, client_lease_pools> client_leases{};
 public:
   void touch_client_lease(ClientLease *r, int pool, utime_t ttl) {
     client_leases[pool].push_back(&r->item_lease);
@@ -250,9 +253,7 @@ public:
   }
 
   // -- client caps --
-  uint64_t              last_cap_id;
-  
-
+  uint64_t last_cap_id = 0;
 
   // -- discover --
   struct discover_info_t {
@@ -280,7 +281,7 @@ public:
   };
 
   map<ceph_tid_t, discover_info_t> discovers;
-  ceph_tid_t discover_last_tid;
+  ceph_tid_t discover_last_tid = 0;
 
   void _send_discover(discover_info_t& dis);
   discover_info_t& _create_discover(mds_rank_t mds) {
@@ -517,7 +518,7 @@ protected:
   friend class ESlaveUpdate;
   friend class ECommitted;
 
-  bool resolves_pending;
+  bool resolves_pending = false;
   set<mds_rank_t> resolve_gather;      // nodes i need resolves from
   set<mds_rank_t> resolve_ack_gather;  // nodes i need a resolve_ack from
   set<version_t> resolve_snapclient_commits;
@@ -594,7 +595,7 @@ public:
   bool dump_inode(Formatter *f, uint64_t number);
 protected:
   // [rejoin]
-  bool rejoins_pending;
+  bool rejoins_pending = false;
   set<mds_rank_t> rejoin_gather;      // nodes from whom i need a rejoin
   set<mds_rank_t> rejoin_sent;        // nodes i sent a rejoin to
   set<mds_rank_t> rejoin_ack_sent;    // nodes i sent a rejoin to
@@ -611,7 +612,7 @@ protected:
   map<inodeno_t,map<client_t,map<mds_rank_t,cap_reconnect_t> > > cap_imports;  // ino -> client -> frommds -> capex
   set<inodeno_t> cap_imports_missing;
   map<inodeno_t, MDSContext::vec > cap_reconnect_waiters;
-  int cap_imports_num_opening;
+  int cap_imports_num_opening = 0;
   
   set<CInode*> rejoin_undef_inodes;
   set<CInode*> rejoin_potential_updated_scatterlocks;
@@ -839,7 +840,7 @@ public:
       shutdown_export_strays();
   }
 
-  bool did_shutdown_log_cap;
+  bool did_shutdown_log_cap = false;
 
   // inode_map
   bool have_inode(vinodeno_t vino) {
@@ -954,7 +955,7 @@ protected:
 
 
 private:
-  bool opening_root, open;
+  bool opening_root = false, open = false;
   MDSContext::vec waiting_for_open;
 
 public:
@@ -1059,7 +1060,7 @@ protected:
       want_replica(false), want_xlocked(false), tid(0), pool(-1),
       last_err(0) {}
   };
-  ceph_tid_t open_ino_last_tid;
+  ceph_tid_t open_ino_last_tid = 0;
   map<inodeno_t,open_ino_info_t> opening_inodes;
 
   void _open_ino_backtrace_fetched(inodeno_t ino, bufferlist& bl, int err);
@@ -1096,7 +1097,7 @@ public:
   };
 
   map<ceph_tid_t, find_ino_peer_info_t> find_ino_peer;
-  ceph_tid_t find_ino_peer_last_tid;
+  ceph_tid_t find_ino_peer_last_tid = 0;
 
   void find_ino_peers(inodeno_t ino, MDSContext *c, mds_rank_t hint=MDS_RANK_NONE);
   void _do_find_ino_peer(find_ino_peer_info_t& fip);
@@ -1106,7 +1107,7 @@ public:
 
   // -- snaprealms --
 private:
-  SnapRealm *global_snaprealm;
+  SnapRealm *global_snaprealm = nullptr;
 public:
   SnapRealm *get_global_snaprealm() const { return global_snaprealm; }
   void create_global_snaprealm();
@@ -1261,6 +1262,9 @@ public:
   void process_delayed_expire(CDir *dir);
   void discard_delayed_expire(CDir *dir);
 
+  // -- mdsmap --
+  void handle_mdsmap(const MDSMap &mdsmap);
+
 protected:
   int dump_cache(std::string_view fn, Formatter *f);
 public:
@@ -1318,8 +1322,16 @@ public:
 public:
   /* Because exports may fail, this set lets us keep track of inodes that need exporting. */
   std::set<CInode *> export_pin_queue;
+  std::set<CInode *> export_pin_delayed_queue;
 
   OpenFileTable open_file_table;
+
+private:
+  std::thread upkeeper;
+  ceph::mutex upkeep_mutex = ceph::make_mutex("MDCache::upkeep_mutex");
+  ceph::condition_variable upkeep_cvar;
+  time upkeep_last_trim = time::min();
+  std::atomic<bool> upkeep_trim_shutdown{false};
 };
 
 class C_MDS_RetryRequest : public MDSInternalContext {
index f520737e454fcb7a0d1ca4907e3cb6ee805d4d9b..c09e8c3ab5666455775e567fd2c1608a0b625a54 100644 (file)
@@ -95,6 +95,7 @@ void MDSIOContextBase::complete(int r) {
   if (mds->is_daemon_stopping()) {
     dout(4) << "MDSIOContextBase::complete: dropping for stopping "
             << typeid(*this).name() << dendl;
+    MDSContext::complete(r);
     return;
   }
 
index 8b622cab0f97171faa4c9e80296f7fc673a7b39f..ce927f979c175ea0a47e884cdefcb8d978b1d581 100644 (file)
@@ -742,13 +742,7 @@ void MDSRankDispatcher::tick()
   }
 
   // ...
-  if (is_clientreplay() || is_active() || is_stopping()) {
-    mdcache->trim_client_leases();
-    mdcache->trim();
-    mdcache->check_memory_usage();
-
-    server->recall_client_state(nullptr, Server::RecallFlags::ENFORCE_MAX);
-
+  if (is_cache_trimmable()) {
     server->find_idle_sessions();
     server->evict_cap_revoke_non_responders();
     locker->tick();
@@ -2404,6 +2398,8 @@ void MDSRankDispatcher::handle_mds_map(
   if (oldmap.get_max_mds() != mdsmap->get_max_mds()) {
     purge_queue.update_op_limit(*mdsmap);
   }
+
+  mdcache->handle_mdsmap(*mdsmap);
 }
 
 void MDSRank::handle_mds_recovery(mds_rank_t who)
@@ -3201,6 +3197,9 @@ void MDSRank::create_logger()
 
     // useful dir/inode/subtree stats
     mds_plb.set_prio_default(PerfCountersBuilder::PRIO_USEFUL);
+    mds_plb.add_u64(l_mds_root_rfiles, "root_rfiles", "root inode rfiles");
+    mds_plb.add_u64(l_mds_root_rbytes, "root_rbytes", "root inode rbytes");
+    mds_plb.add_u64(l_mds_root_rsnaps, "root_rsnaps", "root inode rsnaps");
     mds_plb.add_u64_counter(l_mds_dir_fetch, "dir_fetch", "Directory fetch");
     mds_plb.add_u64_counter(l_mds_dir_commit, "dir_commit", "Directory commit");
     mds_plb.add_u64_counter(l_mds_dir_split, "dir_split", "Directory split");
index 4119c90d32d6b26abf5b51933978611e89865905..5635fad011d36ae1807ea91b6c304c39e187e35a 100644 (file)
@@ -77,6 +77,9 @@ enum {
   l_mds_openino_dir_fetch,
   l_mds_openino_backtrace_fetch,
   l_mds_openino_peer_discover,
+  l_mds_root_rfiles,
+  l_mds_root_rbytes,
+  l_mds_root_rsnaps,
   l_mds_last,
 };
 
@@ -229,6 +232,10 @@ class MDSRank {
     bool is_cluster_degraded() const { return cluster_degraded; }
     bool allows_multimds_snaps() const { return mdsmap->allows_multimds_snaps(); }
 
+    bool is_cache_trimmable() const {
+      return is_clientreplay() || is_active() || is_stopping();
+    }
+
     void handle_write_error(int err);
 
     void handle_conf_change(const ConfigProxy& conf,
index 62d6cba952a401bd7870c020e1f2c1affe10e1f0..17849e4f926f667c8097321769a5cc2238f6e670 100644 (file)
@@ -147,9 +147,10 @@ public:
   }
   void remove_cap(client_t client, Capability *cap) {
     cap->item_snaprealm_caps.remove_myself();
-    if (client_caps[client]->empty()) {
-      delete client_caps[client];
-      client_caps.erase(client);
+    auto found = client_caps.find(client);
+    if (found != client_caps.end() && found->second->empty()) {
+      delete found->second;
+      client_caps.erase(found);
     }
   }
 };
index c788407fb0af450b7e8844b8becbe3fe798a192d..fad782ba6a093464db0631db1b1166ce288e2ea6 100644 (file)
@@ -8,9 +8,18 @@ typedef char bool;
 #include <string.h>
 #include <fcntl.h>
 
-#include "include/ceph_fs.h"
 #include "locks.h"
 
+/* Duplicated from ceph_fs.h, which we cannot include into a C file.  */
+#define CEPH_CAP_GSHARED     1  /* client can reads */
+#define CEPH_CAP_GEXCL       2  /* client can read and update */
+#define CEPH_CAP_GCACHE      4  /* (file) client can cache reads */
+#define CEPH_CAP_GRD         8  /* (file) client can read */
+#define CEPH_CAP_GWR        16  /* (file) client can write */
+#define CEPH_CAP_GBUFFER    32  /* (file) client can buffer writes */
+#define CEPH_CAP_GWREXTEND  64  /* (file) client can extend EOF */
+#define CEPH_CAP_GLAZYIO   128  /* (file) client can perform lazy io */
+
 static const struct sm_state_t simplelock[LOCK_MAX] = {
                       // stable     loner  rep state  r     rp   rd   wr   fwr  l    x    caps,other
     [LOCK_SYNC]      = { 0,         false, LOCK_SYNC, ANY,  0,   ANY, 0,   0,   ANY, 0,   CEPH_CAP_GSHARED,0,0,CEPH_CAP_GSHARED },
index 49f6944e4bf6b695cdb54a407b525695b7d3c974..dec19c1ec9fc15aab833801a710f220202b95536 100644 (file)
@@ -1414,13 +1414,13 @@ WRITE_CLASS_ENCODER(snaprealm_reconnect_t)
 
 // compat for pre-FLOCK feature
 struct old_ceph_mds_cap_reconnect {
-       __le64 cap_id;
-       __le32 wanted;
-       __le32 issued;
-  __le64 old_size;
+       ceph_le64 cap_id;
+       ceph_le32 wanted;
+       ceph_le32 issued;
+  ceph_le64 old_size;
   struct ceph_timespec old_mtime, old_atime;
-       __le64 snaprealm;
-       __le64 pathbase;        /* base ino for our path to this ino */
+       ceph_le64 snaprealm;
+       ceph_le64 pathbase;        /* base ino for our path to this ino */
 } __attribute__ ((packed));
 WRITE_RAW_ENCODER(old_ceph_mds_cap_reconnect)
 
index ab571c49f6dd0cfd4af84187c998440bda4fa6f5..ac813293aa8ca320c8d971f785903ba92fc6f53d 100644 (file)
@@ -30,9 +30,9 @@ public:
   enum {
     REQUEST = 0,   // primary->replica: please reserve a slot
     GRANT = 1,     // replica->primary: ok, i reserved it
-    REJECT = 2,    // replica->primary: sorry, try again later (*)
+    REJECT_TOOFULL = 2,    // replica->primary: too full, sorry, try again later (*)
     RELEASE = 3,   // primary->replcia: release the slot i reserved before
-    TOOFULL = 4,   // replica->primary: too full, stop backfilling
+    REVOKE_TOOFULL = 4,   // replica->primary: too full, stop backfilling
     REVOKE = 5,    // replica->primary: i'm taking back the slot i gave you
     // (*) NOTE: prior to luminous, REJECT was overloaded to also mean release
   };
@@ -63,7 +63,7 @@ public:
        query_epoch,
        query_epoch,
        RemoteBackfillReserved());
-    case REJECT:
+    case REJECT_TOOFULL:
       // NOTE: this is replica -> primary "i reject your request"
       //      and also primary -> replica "cancel my previously-granted request"
       //                                  (for older peers)
@@ -72,13 +72,13 @@ public:
       return new PGPeeringEvent(
        query_epoch,
        query_epoch,
-       RemoteReservationRejected());
+       RemoteReservationRejectedTooFull());
     case RELEASE:
       return new PGPeeringEvent(
        query_epoch,
        query_epoch,
        RemoteReservationCanceled());
-    case TOOFULL:
+    case REVOKE_TOOFULL:
       return new PGPeeringEvent(
        query_epoch,
        query_epoch,
@@ -119,14 +119,14 @@ public:
     case GRANT:
       out << "GRANT";
       break;
-    case REJECT:
-      out << "REJECT ";
+    case REJECT_TOOFULL:
+      out << "REJECT_TOOFULL";
       break;
     case RELEASE:
       out << "RELEASE";
       break;
-    case TOOFULL:
-      out << "TOOFULL";
+    case REVOKE_TOOFULL:
+      out << "REVOKE_TOOFULL";
       break;
     case REVOKE:
       out << "REVOKE";
@@ -159,8 +159,8 @@ public:
       header.compat_version = 3;
       encode(pgid.pgid, payload);
       encode(query_epoch, payload);
-      encode((type == RELEASE || type == TOOFULL || type == REVOKE) ?
-              REJECT : type, payload);
+      encode((type == RELEASE || type == REVOKE_TOOFULL || type == REVOKE) ?
+              REJECT_TOOFULL : type, payload);
       encode(priority, payload);
       encode(pgid.shard, payload);
       return;
index a21158aebd6454d49916361387da1fdcc88c4977..bbc883347d4880f726547304476c52d1dbfca2b6 100644 (file)
@@ -22,8 +22,8 @@
  * compatibility with old crap
  */
 struct ceph_mon_subscribe_item_old {
-       __le64 unused;
-       __le64 have;
+       ceph_le64 unused;
+       ceph_le64 have;
        __u8 onetime;
 } __attribute__ ((packed));
 WRITE_RAW_ENCODER(ceph_mon_subscribe_item_old)
index 907bb0c81c934e2bbc5d9bd664d72def85b58aad..a554475dcdd53f5bf948a8b4669517100673e59d 100644 (file)
@@ -199,6 +199,22 @@ PyObject *ActivePyModules::get_python(const std::string &what)
       }
     });
     return f.get();
+  } else if (what == "modified_config_options") {
+    PyEval_RestoreThread(tstate);
+    auto all_daemons = daemon_state.get_all();
+    set<string> names;
+    for (auto& [key, daemon] : all_daemons) {
+      std::lock_guard l(daemon->lock);
+      for (auto& [name, valmap] : daemon->config) {
+       names.insert(name);
+      }
+    }
+    f.open_array_section("options");
+    for (auto& name : names) {
+      f.dump_string("name", name);
+    }
+    f.close_section();
+    return f.get();
   } else if (what.substr(0, 6) == "config") {
     PyEval_RestoreThread(tstate);
     if (what == "config_options") {
@@ -314,10 +330,15 @@ PyObject *ActivePyModules::get_python(const std::string &what)
   } else if (what.size() > 7 &&
             what.substr(0, 7) == "device ") {
     string devid = what.substr(7);
-    daemon_state.with_device(devid, [&f, &tstate] (const DeviceState& dev) {
-        PyEval_RestoreThread(tstate);
-       f.dump_object("device", dev);
-      });
+    if (!daemon_state.with_device(
+         devid,
+         [&f, &tstate] (const DeviceState& dev) {
+           PyEval_RestoreThread(tstate);
+           f.dump_object("device", dev);
+         })) {
+      // device not found
+      PyEval_RestoreThread(tstate);
+    }
     return f.get();
   } else if (what == "io_rate") {
     cluster_state.with_pgmap(
index 59bbe8f393edb39fe7d9f2d21cec2cc74203a7b3..7415db0ba4c47e66c9f437b336cd528baf5a9bdb 100644 (file)
@@ -296,9 +296,9 @@ ceph_set_health_checks(BaseMgrModule *self, PyObject *args)
          severity = HEALTH_ERR;
        }
       } else if (ks == "summary") {
-       if (!PyString_Check(v)) {
+       if (!PyString_Check(v) && !PyUnicode_Check(v)) {
          derr << __func__ << " check " << check_name
-              << " summary value not string" << dendl;
+              << " summary value not [unicode] string" << dendl;
          continue;
        }
        summary = PyString_AsString(v);
@@ -310,9 +310,9 @@ ceph_set_health_checks(BaseMgrModule *self, PyObject *args)
        }
        for (int k = 0; k < PyList_Size(v); ++k) {
          PyObject *di = PyList_GET_ITEM(v, k);
-         if (!PyString_Check(di)) {
+         if (!PyString_Check(di) && !PyUnicode_Check(di)) {
            derr << __func__ << " check " << check_name
-                << " detail item " << k << " not a string" << dendl;
+                << " detail item " << k << " not a [unicode] string" << dendl;
            continue;
          }
          detail.push_back(PyString_AsString(di));
index b445f8dce3a19185102807098b73356b25ec8fab..f3fbff667cf6db9e6c913badf003617c53c7c21a 100644 (file)
@@ -69,6 +69,7 @@ ceph_get_module_option(BaseMgrStandbyModule *self, PyObject *args)
     derr << "Invalid args!" << dendl;
     return nullptr;
   }
+  PyThreadState *tstate = PyEval_SaveThread();
   std::string final_key;
   std::string value;
   bool found = false;
@@ -80,6 +81,7 @@ ceph_get_module_option(BaseMgrStandbyModule *self, PyObject *args)
     final_key = what;
     found = self->this_module->get_config(final_key, &value);
   }
+  PyEval_RestoreThread(tstate);
   if (found) {
     dout(10) << __func__ << " " << final_key << " found: " << value
             << dendl;
index 7e073a58bcc077b81f0781bc6c72fcfbe4e0e691..891bd562a51fadae638af1ccc2ffafb49a09a042 100644 (file)
@@ -16,6 +16,8 @@
 #include "messages/MPGStats.h"
 
 #include "mgr/ClusterState.h"
+#include <time.h>
+#include <boost/range/adaptor/reversed.hpp>
 
 #define dout_context g_ceph_context
 #define dout_subsys ceph_subsys_mgr
@@ -29,7 +31,8 @@ ClusterState::ClusterState(
   : monc(monc_),
     objecter(objecter_),
     lock("ClusterState"),
-    mgr_map(mgrmap)
+    mgr_map(mgrmap),
+    asok_hook(NULL)
 {}
 
 void ClusterState::set_objecter(Objecter *objecter_)
@@ -174,3 +177,196 @@ void ClusterState::notify_osdmap(const OSDMap &osd_map)
   // that a cut-down set of functionality remains in PGMonitor
   // while the full-blown PGMap lives only here.
 }
+
+class ClusterSocketHook : public AdminSocketHook {
+  ClusterState *cluster_state;
+public:
+  explicit ClusterSocketHook(ClusterState *o) : cluster_state(o) {}
+  bool call(std::string_view admin_command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
+    stringstream ss;
+    bool r = true;
+    try {
+      r = cluster_state->asok_command(admin_command, cmdmap, format, ss);
+    } catch (const bad_cmd_get& e) {
+      ss << e.what();
+      r = true;
+    }
+    out.append(ss);
+    return r;
+  }
+};
+
+void ClusterState::final_init()
+{
+  AdminSocket *admin_socket = g_ceph_context->get_admin_socket();
+  asok_hook = new ClusterSocketHook(this);
+  int r = admin_socket->register_command("dump_osd_network",
+                     "dump_osd_network name=value,type=CephInt,req=false", asok_hook,
+                     "Dump osd heartbeat network ping times");
+  ceph_assert(r == 0);
+}
+
+void ClusterState::shutdown()
+{
+  // unregister commands
+  g_ceph_context->get_admin_socket()->unregister_commands(asok_hook);
+  delete asok_hook;
+  asok_hook = NULL;
+}
+
+bool ClusterState::asok_command(std::string_view admin_command, const cmdmap_t& cmdmap,
+                      std::string_view format, ostream& ss)
+{
+  std::lock_guard l(lock);
+  Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
+  if (admin_command == "dump_osd_network") {
+    int64_t value = 0;
+    // Default to health warning level if nothing specified
+    if (!(cmd_getval(g_ceph_context, cmdmap, "value", value))) {
+      // Convert milliseconds to microseconds
+      value = static_cast<int64_t>(g_ceph_context->_conf.get_val<double>("mon_warn_on_slow_ping_time")) * 1000;
+      if (value == 0) {
+        double ratio = g_conf().get_val<double>("mon_warn_on_slow_ping_ratio");
+       value = g_conf().get_val<int64_t>("osd_heartbeat_grace");
+       value *= 1000000 * ratio; // Seconds of grace to microseconds at ratio
+      }
+    } else {
+      // Convert user input to microseconds
+      value *= 1000;
+    }
+    if (value < 0)
+      value = 0;
+
+    struct mgr_ping_time_t {
+      uint32_t pingtime;
+      int from;
+      int to;
+      bool back;
+      std::array<uint32_t,3> times;
+      std::array<uint32_t,3> min;
+      std::array<uint32_t,3> max;
+      uint32_t last;
+      uint32_t last_update;
+
+      bool operator<(const mgr_ping_time_t& rhs) const {
+        if (pingtime < rhs.pingtime)
+          return true;
+        if (pingtime > rhs.pingtime)
+          return false;
+        if (from < rhs.from)
+          return true;
+        if (from > rhs.from)
+          return false;
+        if (to < rhs.to)
+          return true;
+        if (to > rhs.to)
+          return false;
+        return back;
+      }
+    };
+
+    set<mgr_ping_time_t> sorted;
+    utime_t now = ceph_clock_now();
+    for (auto i : pg_map.osd_stat) {
+      for (auto j : i.second.hb_pingtime) {
+
+       if (j.second.last_update == 0)
+         continue;
+       auto stale_time = g_ceph_context->_conf.get_val<int64_t>("osd_mon_heartbeat_stat_stale");
+       if (now.sec() - j.second.last_update > stale_time) {
+         dout(20) << __func__ << " time out heartbeat for osd " << i.first
+                  << " last_update " << j.second.last_update << dendl;
+          continue;
+       }
+       mgr_ping_time_t item;
+       item.pingtime = std::max(j.second.back_pingtime[0], j.second.back_pingtime[1]);
+       item.pingtime = std::max(item.pingtime, j.second.back_pingtime[2]);
+       if (!value || item.pingtime >= value) {
+         item.from = i.first;
+         item.to = j.first;
+         item.times[0] = j.second.back_pingtime[0];
+         item.times[1] = j.second.back_pingtime[1];
+         item.times[2] = j.second.back_pingtime[2];
+         item.min[0] = j.second.back_min[0];
+         item.min[1] = j.second.back_min[1];
+         item.min[2] = j.second.back_min[2];
+         item.max[0] = j.second.back_max[0];
+         item.max[1] = j.second.back_max[1];
+         item.max[2] = j.second.back_max[2];
+         item.last = j.second.back_last;
+         item.back = true;
+         item.last_update = j.second.last_update;
+         sorted.emplace(item);
+       }
+
+       if (j.second.front_last == 0)
+         continue;
+       item.pingtime = std::max(j.second.front_pingtime[0], j.second.front_pingtime[1]);
+       item.pingtime = std::max(item.pingtime, j.second.front_pingtime[2]);
+       if (!value || item.pingtime >= value) {
+         item.from = i.first;
+         item.to = j.first;
+         item.times[0] = j.second.front_pingtime[0];
+         item.times[1] = j.second.front_pingtime[1];
+         item.times[2] = j.second.front_pingtime[2];
+         item.min[0] = j.second.front_min[0];
+         item.min[1] = j.second.front_min[1];
+         item.min[2] = j.second.front_min[2];
+         item.max[0] = j.second.front_max[0];
+         item.max[1] = j.second.front_max[1];
+         item.max[2] = j.second.front_max[2];
+         item.last = j.second.front_last;
+         item.back = false;
+         item.last_update = j.second.last_update;
+         sorted.emplace(item);
+       }
+      }
+    }
+
+    // Network ping times (1min 5min 15min)
+    f->open_object_section("network_ping_times");
+    f->dump_int("threshold", value / 1000);
+    f->open_array_section("entries");
+    for (auto &sitem : boost::adaptors::reverse(sorted)) {
+      ceph_assert(!value || sitem.pingtime >= value);
+
+      f->open_object_section("entry");
+
+      const time_t lu(sitem.last_update);
+      char buffer[26];
+      string lustr(ctime_r(&lu, buffer));
+      lustr.pop_back();   // Remove trailing \n
+      auto stale = g_ceph_context->_conf.get_val<int64_t>("osd_heartbeat_stale");
+      f->dump_string("last update", lustr);
+      f->dump_bool("stale", ceph_clock_now().sec() - sitem.last_update > stale);
+      f->dump_int("from osd", sitem.from);
+      f->dump_int("to osd", sitem.to);
+      f->dump_string("interface", (sitem.back ? "back" : "front"));
+      f->open_object_section("average");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.times[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.times[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.times[2],3).c_str());
+      f->close_section(); // average
+      f->open_object_section("min");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.min[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.min[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.min[2],3).c_str());
+      f->close_section(); // min
+      f->open_object_section("max");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.max[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.max[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.max[2],3).c_str());
+      f->close_section(); // max
+      f->dump_format_unquoted("last", "%s", fixed_u_to_string(sitem.last,3).c_str());
+      f->close_section(); // entry
+    }
+    f->close_section(); // entries
+    f->close_section(); // network_ping_times
+  } else {
+    ceph_abort_msg("broken asok registration");
+  }
+  f->flush(ss);
+  delete f;
+  return true;
+}
index c5d46fa1abfd53e21ab8bf6b9bf84ad417416146..0298f62ec29acbf0239c2506c5d2cad5e5b31be0 100644 (file)
@@ -50,6 +50,8 @@ protected:
   bufferlist health_json;
   bufferlist mon_status_json;
 
+  class ClusterSocketHook *asok_hook;
+
 public:
 
   void load_digest(MMgrDigest *m);
@@ -137,7 +139,10 @@ public:
       pg_map,
       std::forward<Args>(args)...);
   }
-
+  void final_init();
+  void shutdown();
+  bool asok_command(std::string_view admin_command, const cmdmap_t& cmdmap,
+                      std::string_view format, ostream& ss);
 };
 
 #endif
index beba5dad815a5757c94a121f4de4bb8dcd78a205..09d98e51c484b3a91139ebc9b73bcac938756286 100644 (file)
@@ -11,6 +11,23 @@ ostream& operator<<(ostream& os,
   return os << daemon.first << "." << daemon.second;
 }
 
+// define operator<<(ostream&, const vector<DaemonKey>&) after
+// ostream& operator<<(ostream&, const DaemonKey&), so that C++'s
+// ADL can use the former instead of using the generic one:
+// operator<<(ostream&, const std::pair<A,B>&)
+ostream& operator<<(
+   ostream& os,
+   const vector<DaemonHealthMetricCollector::DaemonKey>& daemons)
+{
+  os << "[";
+  for (auto d = daemons.begin(); d != daemons.end(); ++d) {
+    if (d != daemons.begin()) os << ",";
+    os << *d;
+  }
+  os << "]";
+  return os;
+}
+
 namespace {
 
 class SlowOps final : public DaemonHealthMetricCollector {
index 731b4c43b5c83b96f40d7618a557b381b39f5119..42bf905fa9bd0faf9d2624704e0b3295737d333f 100644 (file)
@@ -12,7 +12,7 @@ public:
   static std::unique_ptr<DaemonHealthMetricCollector> create(daemon_metric m);
   void update(const DaemonKey& daemon, const DaemonHealthMetric& metric) {
     if (_is_relevant(metric.get_type())) {
-      reported = _update(daemon, metric);
+      reported |= _update(daemon, metric);
     }
   }
   void summarize(health_check_map_t& cm) {
index acf4443a65524b7bbc85c028411c051c1fbaf43c..0bb21d8587d4dab742e2e575fb112d1fc8d8a275 100644 (file)
@@ -378,6 +378,7 @@ void DaemonServer::shutdown()
   dout(10) << "begin" << dendl;
   msgr->shutdown();
   msgr->wait();
+  cluster_state.shutdown();
   dout(10) << "done" << dendl;
 
   std::lock_guard l(lock);
@@ -431,9 +432,6 @@ bool DaemonServer::handle_open(MMgrOpen *m)
     daemon = std::make_shared<DaemonState>(daemon_state.types);
     daemon->key = key;
     daemon->service_daemon = true;
-    if (m->daemon_metadata.count("hostname")) {
-      daemon->hostname = m->daemon_metadata["hostname"];
-    }
     daemon_state.insert(daemon);
   }
   if (daemon) {
@@ -2705,9 +2703,6 @@ void DaemonServer::got_service_map()
        auto daemon = std::make_shared<DaemonState>(daemon_state.types);
        daemon->key = key;
        daemon->set_metadata(q.second.metadata);
-        if (q.second.metadata.count("hostname")) {
-          daemon->hostname = q.second.metadata["hostname"];
-        }
        daemon->service_daemon = true;
        daemon_state.insert(daemon);
        dout(10) << "added missing " << key << dendl;
index 680d4a0cc2cf5112e13a1b322e67c92f7110ea9e..706286a2b12f8673d7035872bfae4ca197cd8223 100644 (file)
@@ -180,6 +180,10 @@ class DaemonState
        }
       }
     }
+    p = m.find("hostname");
+    if (p != m.end()) {
+      hostname = p->second;
+    }
   }
 
   const std::map<std::string,std::string>& _get_config_defaults() {
index 7cd6c91eb655d6e94ef6893ae112bcd6c3644886..ab749b025771308e48bec435c36c772309770032 100644 (file)
@@ -302,6 +302,8 @@ void Mgr::init()
       kv_store, *monc, clog, audit_clog, *objecter, *client,
       finisher, server);
 
+  cluster_state.final_init();
+
   dout(4) << "Complete." << dendl;
   initializing = false;
   initialized = true;
index 061a92c6c7cc9c1843595bad3804aa86305637a8..ad275e38d4629aebddb27c6b8452373bcae7697a 100644 (file)
@@ -41,10 +41,10 @@ void PyModuleRegistry::init()
   // Set up global python interpreter
 #if PY_MAJOR_VERSION >= 3
 #define WCHAR(s) L ## #s
-  Py_SetProgramName(const_cast<wchar_t*>(WCHAR(PYTHON_EXECUTABLE)));
+  Py_SetProgramName(const_cast<wchar_t*>(WCHAR(MGR_PYTHON_EXECUTABLE)));
 #undef WCHAR
 #else
-  Py_SetProgramName(const_cast<char*>(PYTHON_EXECUTABLE));
+  Py_SetProgramName(const_cast<char*>(MGR_PYTHON_EXECUTABLE));
 #endif
   // Add more modules
   if (g_conf().get_val<bool>("daemonize")) {
index 5c249512de020ddb63fe1c30164d6d3437ec426e..dd67ae223e4a29e2e5d738bcfaffc45f5f652666 100644 (file)
@@ -147,11 +147,13 @@ static PyObject *osdmap_calc_pg_upmaps(BasePyOSDMap* self, PyObject *args)
           << " max_iterations " << max_iterations
           << " pools " << pools
           << dendl;
+  PyThreadState *tstate = PyEval_SaveThread();
   int r = self->osdmap->calc_pg_upmaps(g_ceph_context,
                                 max_deviation,
                                 max_iterations,
                                 pools,
                                 incobj->inc);
+  PyEval_RestoreThread(tstate);
   dout(10) << __func__ << " r = " << r << dendl;
   return PyInt_FromLong(r);
 }
index 23396f063bd0ab89b108bcea637259f8008669bd..62b41dc2acd9931d3777a8d5a9c489facb3bae40 100644 (file)
@@ -30,6 +30,5 @@ if(HAVE_GSSAPI)
 endif()
 
 add_library(mon STATIC
-  ${lib_mon_srcs}
-  $<TARGET_OBJECTS:kv_objs>)
-target_link_libraries(mon heap_profiler)
+  ${lib_mon_srcs})
+target_link_libraries(mon kv heap_profiler)
index 00b3016b3ba5dc4b3c55ba4e410bd000f9666398..a0e91c3614b9bad580d1793a8ae0a35a239a218a 100644 (file)
@@ -19,6 +19,7 @@
 #include <boost/spirit/include/phoenix.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
+#include <boost/algorithm/string/predicate.hpp>
 
 #include "MonCap.h"
 #include "include/stringify.h"
@@ -177,6 +178,9 @@ void MonCapGrant::expand_profile(int daemon_type, const EntityName& name) const
 
 void MonCapGrant::expand_profile_mgr(const EntityName& name) const
 {
+  if (profile == "crash") {
+    profile_grants.push_back(MonCapGrant("crash post"));
+  }
 }
 
 void MonCapGrant::expand_profile_mon(const EntityName& name) const
@@ -290,7 +294,7 @@ void MonCapGrant::expand_profile_mon(const EntityName& name) const
     profile_grants.push_back(MonCapGrant("osd", MON_CAP_R));
     profile_grants.push_back(MonCapGrant("pg", MON_CAP_R));
   }
-  if (profile == "rbd" || profile == "rbd-mirror") {
+  if (boost::starts_with(profile, "rbd")) {
     profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));
     profile_grants.push_back(MonCapGrant("osd", MON_CAP_R));
     profile_grants.push_back(MonCapGrant("pg", MON_CAP_R));
@@ -307,8 +311,19 @@ void MonCapGrant::expand_profile_mon(const EntityName& name) const
     StringConstraint constraint(StringConstraint::MATCH_TYPE_PREFIX,
                                 "rbd/mirror/");
     profile_grants.push_back(MonCapGrant("config-key get", "key", constraint));
-  }
+  } else if (profile == "rbd-mirror-peer") {
+    StringConstraint constraint(StringConstraint::MATCH_TYPE_REGEX,
+                                "rbd/mirror/[^/]+");
+    profile_grants.push_back(MonCapGrant("config-key get", "key", constraint));
 
+    constraint = StringConstraint(StringConstraint::MATCH_TYPE_PREFIX,
+                                  "rbd/mirror/peer/");
+    profile_grants.push_back(MonCapGrant("config-key set", "key", constraint));
+  }
+  else if (profile == "crash") {
+    // TODO: we could limit this to getting the monmap and mgrmap...
+    profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));
+  }
   if (profile == "role-definer") {
     // grants ALL caps to the auth subsystem, read-only on the
     // monitor subsystem and nothing else.
index 37e4c347f5b8e738c7b348aac535aab6073a12d7..6cb4aec1304d9deac231f9313cd47a31047260fb 100644 (file)
@@ -1001,6 +1001,8 @@ int MonClient::wait_auth_rotating(double timeout)
 
 void MonClient::_send_command(MonCommand *r)
 {
+  ++r->send_attempts;
+
   entity_addr_t peer;
   if (active_con) {
     peer = active_con->get_con()->get_peer_addr();
@@ -1008,6 +1010,10 @@ void MonClient::_send_command(MonCommand *r)
 
   if (r->target_rank >= 0 &&
       r->target_rank != monmap.get_rank(peer)) {
+    if (r->send_attempts > cct->_conf->mon_client_directed_command_retry) {
+      _finish_command(r, -ENXIO, "mon unavailable");
+      return;
+    }
     ldout(cct, 10) << __func__ << " " << r->tid << " " << r->cmd
                   << " wants rank " << r->target_rank
                   << ", reopening session"
@@ -1023,6 +1029,10 @@ void MonClient::_send_command(MonCommand *r)
 
   if (r->target_name.length() &&
       r->target_name != monmap.get_name(peer)) {
+    if (r->send_attempts > cct->_conf->mon_client_directed_command_retry) {
+      _finish_command(r, -ENXIO, "mon unavailable");
+      return;
+    }
     ldout(cct, 10) << __func__ << " " << r->tid << " " << r->cmd
                   << " wants mon " << r->target_name
                   << ", reopening session"
@@ -1048,10 +1058,11 @@ void MonClient::_send_command(MonCommand *r)
 void MonClient::_resend_mon_commands()
 {
   // resend any requests
-  for (map<uint64_t,MonCommand*>::iterator p = mon_commands.begin();
-       p != mon_commands.end();
-       ++p) {
-    _send_command(p->second);
+  map<uint64_t,MonCommand*>::iterator p = mon_commands.begin();
+  while (p != mon_commands.end()) {
+    auto cmd = p->second;
+    ++p;
+    _send_command(cmd); // might remove cmd from mon_commands
   }
 }
 
@@ -1115,9 +1126,12 @@ void MonClient::start_mon_command(const vector<string>& cmd,
                                 bufferlist *outbl, string *outs,
                                 Context *onfinish)
 {
+  ldout(cct,10) << __func__ << " cmd=" << cmd << dendl;
   std::lock_guard l(monc_lock);
   if (!initialized || stopping) {
-    onfinish->complete(-ECANCELED);
+    if (onfinish) {
+      onfinish->complete(-ECANCELED);
+    }
     return;
   }
   MonCommand *r = new MonCommand(++last_mon_command_tid);
@@ -1150,9 +1164,12 @@ void MonClient::start_mon_command(const string &mon_name,
                                 bufferlist *outbl, string *outs,
                                 Context *onfinish)
 {
+  ldout(cct,10) << __func__ << " mon." << mon_name << " cmd=" << cmd << dendl;
   std::lock_guard l(monc_lock);
   if (!initialized || stopping) {
-    onfinish->complete(-ECANCELED);
+    if (onfinish) {
+      onfinish->complete(-ECANCELED);
+    }
     return;
   }
   MonCommand *r = new MonCommand(++last_mon_command_tid);
@@ -1172,9 +1189,12 @@ void MonClient::start_mon_command(int rank,
                                 bufferlist *outbl, string *outs,
                                 Context *onfinish)
 {
+  ldout(cct,10) << __func__ << " rank " << rank << " cmd=" << cmd << dendl;
   std::lock_guard l(monc_lock);
   if (!initialized || stopping) {
-    onfinish->complete(-ECANCELED);
+    if (onfinish) {
+      onfinish->complete(-ECANCELED);
+    }
     return;
   }
   MonCommand *r = new MonCommand(++last_mon_command_tid);
@@ -1403,6 +1423,18 @@ int MonClient::handle_auth_request(
               << auth_method << dendl;
     return -EOPNOTSUPP;
   }
+
+  auto ac = &auth_meta->authorizer_challenge;
+  if (!HAVE_FEATURE(con->get_features(), CEPHX_V2)) {
+    if (cct->_conf->cephx_service_require_version >= 2) {
+      ldout(cct,10) << __func__ << " client missing CEPHX_V2 ("
+                   << "cephx_service_requre_version = "
+                   << cct->_conf->cephx_service_require_version << ")" << dendl;
+      return -EACCES;
+    }
+    ac = nullptr;
+  }
+
   bool was_challenge = (bool)auth_meta->authorizer_challenge;
   bool isvalid = ah->verify_authorizer(
     cct,
@@ -1415,7 +1447,7 @@ int MonClient::handle_auth_request(
     &con->peer_caps_info,
     &auth_meta->session_key,
     &auth_meta->connection_secret,
-    &auth_meta->authorizer_challenge);
+    ac);
   if (isvalid) {
     handle_authentication_dispatcher->ms_handle_authentication(con);
     return 1;
index e4c018289bee5334e87ac27a569cb592c8be8a6b..a7874b72a5862cd18f82f0d493e90665e21dcfb1 100644 (file)
@@ -499,6 +499,7 @@ private:
   struct MonCommand {
     string target_name;
     int target_rank;
+    unsigned send_attempts = 0;
     uint64_t tid;
     vector<string> cmd;
     bufferlist inbl;
index 81198af35e6e2d3b4bc43ce13ce1c64499bcb97b..7c13d936bb5552445e22423d8d18a13d0cac19ab 100644 (file)
@@ -1232,4 +1232,4 @@ COMMAND("config generate-minimal-conf",
 
 COMMAND_WITH_FLAG("smart name=devid,type=CephString,req=false",
                  "Query health metrics for underlying device",
-                 "mon", "rw", FLAG(HIDDEN))
+                 "mon", "r", FLAG(HIDDEN))
index 90330a1dab387f7c93a459332a191ddc27f223f8..f03193e044dd000f3ad70cd55da08cb7d9480fbd 100644 (file)
@@ -36,7 +36,16 @@ void mon_info_t::encode(bufferlist& bl, uint64_t features) const
   ENCODE_START(v, 1, bl);
   encode(name, bl);
   if (v < 3) {
-    encode(public_addrs.legacy_addr(), bl, features);
+    auto a = public_addrs.legacy_addr();
+    if (a != entity_addr_t()) {
+      encode(a, bl, features);
+    } else {
+      // note: we don't have a legacy addr here, so lie so that it looks
+      // like one, just so that old clients get a valid-looking map.
+      // they won't be able to talk to the v2 mons, but that's better
+      // than nothing.
+      encode(public_addrs.as_legacy_addr(), bl, features);
+    }
   } else {
     encode(public_addrs, bl, features);
   }
index d16bff32b3d9313e2a8b85bdef5dc93163ef0968..1c46c38774d87b496301ccff602e42d065b1b292 100644 (file)
@@ -6227,7 +6227,7 @@ int Monitor::handle_auth_request(
     }
     dout(10) << __func__ << " bad authorizer on " << con << dendl;
     return -EACCES;
-  } else if (auth_meta->auth_mode < AUTH_MODE_MON &&
+  } else if (auth_meta->auth_mode < AUTH_MODE_MON ||
             auth_meta->auth_mode > AUTH_MODE_MON_MAX) {
     derr << __func__ << " unrecognized auth mode " << auth_meta->auth_mode
         << dendl;
index 0561dadf8c8d2748c001211ea8f5b12de685a7a7..1e001e07174cbf469b302ae56d5435ced2146f6f 100644 (file)
@@ -30,6 +30,7 @@
 #include "common/debug.h"
 #include "common/safe_io.h"
 #include "common/blkdev.h"
+#include "common/PriorityCache.h"
 
 #define dout_context g_ceph_context
 
@@ -56,6 +57,10 @@ class MonitorDBStore
     return devname;
   }
 
+  std::shared_ptr<PriorityCache::PriCache> get_priority_cache() const {
+    return db->get_priority_cache();
+  }
+
   struct Op {
     uint8_t type;
     string prefix;
@@ -727,7 +732,8 @@ class MonitorDBStore
     string v = value;
     v += "\n";
     int r = safe_write_file(path.c_str(), key.c_str(),
-                           v.c_str(), v.length());
+                           v.c_str(), v.length(),
+                           0600);
     if (r < 0)
       return r;
     return 0;
index 3f50e6fd3d261a169caa87485ab046533c02017b..3f3bfe26b0a3b24b0ab5f6d8be76a2d0d160d434 100644 (file)
@@ -60,6 +60,7 @@
 #include "common/Timer.h"
 #include "common/ceph_argparse.h"
 #include "common/perf_counters.h"
+#include "common/PriorityCache.h"
 #include "common/strtol.h"
 #include "common/numa.h"
 
@@ -78,6 +79,7 @@
 #include "include/str_list.h"
 #include "include/str_map.h"
 #include "include/scope_guard.h"
+#include "perfglue/heap_profiler.h"
 
 #include "auth/cephx/CephxKeyServer.h"
 #include "osd/OSDCap.h"
@@ -93,6 +95,105 @@ static const string OSD_SNAP_PREFIX("osd_snap");
 
 namespace {
 
+struct OSDMemCache : public PriorityCache::PriCache {
+  OSDMonitor *osdmon;
+  int64_t cache_bytes[PriorityCache::Priority::LAST+1] = {0};
+  int64_t committed_bytes = 0;
+  double cache_ratio = 0;
+
+  OSDMemCache(OSDMonitor *m) : osdmon(m) {};
+
+  virtual uint64_t _get_used_bytes() const = 0;
+
+  virtual int64_t request_cache_bytes(
+      PriorityCache::Priority pri, uint64_t total_cache) const {
+    int64_t assigned = get_cache_bytes(pri);
+
+    switch (pri) {
+    // All cache items are currently set to have PRI1 priority
+    case PriorityCache::Priority::PRI1:
+      {
+        int64_t request = _get_used_bytes();
+        return (request > assigned) ? request - assigned : 0;
+      }
+    default:
+      break;
+    }
+    return -EOPNOTSUPP;
+  }
+
+  virtual int64_t get_cache_bytes(PriorityCache::Priority pri) const {
+      return cache_bytes[pri];
+  }
+
+  virtual int64_t get_cache_bytes() const {
+    int64_t total = 0;
+
+    for (int i = 0; i < PriorityCache::Priority::LAST + 1; i++) {
+      PriorityCache::Priority pri = static_cast<PriorityCache::Priority>(i);
+      total += get_cache_bytes(pri);
+    }
+    return total;
+  }
+
+  virtual void set_cache_bytes(PriorityCache::Priority pri, int64_t bytes) {
+    cache_bytes[pri] = bytes;
+  }
+  virtual void add_cache_bytes(PriorityCache::Priority pri, int64_t bytes) {
+    cache_bytes[pri] += bytes;
+  }
+  virtual int64_t commit_cache_size(uint64_t total_cache) {
+    committed_bytes = PriorityCache::get_chunk(
+        get_cache_bytes(), total_cache);
+    return committed_bytes;
+  }
+  virtual int64_t get_committed_size() const {
+    return committed_bytes;
+  }
+  virtual double get_cache_ratio() const {
+    return cache_ratio;
+  }
+  virtual void set_cache_ratio(double ratio) {
+    cache_ratio = ratio;
+  }
+  virtual string get_cache_name() const = 0;
+};
+
+struct IncCache : public OSDMemCache {
+  IncCache(OSDMonitor *m) : OSDMemCache(m) {};
+
+  virtual uint64_t _get_used_bytes() const {
+    return osdmon->inc_osd_cache.get_bytes();
+  }
+
+  virtual string get_cache_name() const {
+    return "OSDMap Inc Cache";
+  }
+
+  uint64_t _get_num_osdmaps() const {
+    return osdmon->inc_osd_cache.get_size();
+  }
+};
+
+struct FullCache : public OSDMemCache {
+  FullCache(OSDMonitor *m) : OSDMemCache(m) {};
+
+  virtual uint64_t _get_used_bytes() const {
+    return osdmon->full_osd_cache.get_bytes();
+  }
+
+  virtual string get_cache_name() const {
+    return "OSDMap Full Cache";
+  }
+
+  uint64_t _get_num_osdmaps() const {
+    return osdmon->full_osd_cache.get_size();
+  }
+};
+
+std::shared_ptr<IncCache> inc_cache;
+std::shared_ptr<FullCache> full_cache;
+
 const uint32_t MAX_POOL_APPLICATIONS = 4;
 const uint32_t MAX_POOL_APPLICATION_KEYS = 64;
 const uint32_t MAX_POOL_APPLICATION_LENGTH = 128;
@@ -281,7 +382,153 @@ OSDMonitor::OSDMonitor(
    full_osd_cache(g_conf()->mon_osd_cache_size),
    has_osdmap_manifest(false),
    mapper(mn->cct, &mn->cpu_tp)
-{}
+{
+  inc_cache = std::make_shared<IncCache>(this);
+  full_cache = std::make_shared<FullCache>(this);
+  cct->_conf.add_observer(this);
+  int r = _set_cache_sizes();
+  if (r < 0) {
+    derr << __func__ << " using default osd cache size - mon_osd_cache_size ("
+         << g_conf()->mon_osd_cache_size
+         << ") without priority cache management"
+         << dendl;
+  }
+}
+
+const char **OSDMonitor::get_tracked_conf_keys() const
+{
+  static const char* KEYS[] = {
+    "mon_memory_target",
+    "mon_memory_autotune",
+    "rocksdb_cache_size",
+    NULL
+  };
+  return KEYS;
+}
+
+void OSDMonitor::handle_conf_change(const ConfigProxy& conf,
+                                    const std::set<std::string> &changed)
+{
+  dout(10) << __func__ << " " << changed << dendl;
+
+  if (changed.count("mon_memory_autotune")) {
+    _set_cache_autotuning();
+  }
+  if (changed.count("mon_memory_target") ||
+      changed.count("rocksdb_cache_size")) {
+    int r = _update_mon_cache_settings();
+    if (r < 0) {
+      derr << __func__ << " mon_memory_target:"
+           << g_conf()->mon_memory_target
+           << " rocksdb_cache_size:"
+           << g_conf()->rocksdb_cache_size
+           << ". Invalid size provided."
+           << dendl;
+    }
+  }
+}
+
+void OSDMonitor::_set_cache_autotuning()
+{
+  if (!g_conf()->mon_memory_autotune && pcm != nullptr) {
+    // Disable cache autotuning
+    std::lock_guard l(balancer_lock);
+    pcm = nullptr;
+  }
+
+  if (g_conf()->mon_memory_autotune && pcm == nullptr) {
+    int r = register_cache_with_pcm();
+    if (r < 0) {
+      dout(10) << __func__
+               << " Error while registering osdmon caches with pcm."
+               << " Cache auto tuning not enabled."
+               << dendl;
+      mon_memory_autotune = false;
+    } else {
+      mon_memory_autotune = true;
+    }
+  }
+}
+
+int OSDMonitor::_update_mon_cache_settings()
+{
+  if (g_conf()->mon_memory_target <= 0 ||
+      g_conf()->mon_memory_target < mon_memory_min ||
+      g_conf()->rocksdb_cache_size <= 0) {
+    return -EINVAL;
+  }
+
+  uint64_t old_mon_memory_target = mon_memory_target;
+  uint64_t old_rocksdb_cache_size = rocksdb_cache_size;
+
+  // Set the new pcm memory cache sizes
+  mon_memory_target = g_conf()->mon_memory_target;
+  rocksdb_cache_size = g_conf()->rocksdb_cache_size;
+
+  uint64_t base = mon_memory_base;
+  double fragmentation = mon_memory_fragmentation;
+  uint64_t target = mon_memory_target;
+  uint64_t min = mon_memory_min;
+  uint64_t max = min;
+
+  uint64_t ltarget = (1.0 - fragmentation) * target;
+  if (ltarget > base + min) {
+    max = ltarget - base;
+  }
+
+  int r = _set_cache_ratios();
+  if (r < 0) {
+    derr << __func__ << " Cache ratios for pcm could not be set."
+         << " Review the kv (rocksdb) and mon_memory_target sizes."
+         << dendl;
+    mon_memory_target = old_mon_memory_target;
+    rocksdb_cache_size = old_rocksdb_cache_size;
+    return -EINVAL;
+  }
+
+  if (mon_memory_autotune && pcm != nullptr) {
+    std::lock_guard l(balancer_lock);
+    // set pcm cache levels
+    pcm->set_target_memory(target);
+    pcm->set_min_memory(min);
+    pcm->set_max_memory(max);
+    // tune memory based on new values
+    pcm->tune_memory();
+    pcm->balance();
+    _set_new_cache_sizes();
+    dout(10) << __func__ << " Updated mon cache setting."
+             << " target: " << target
+             << " min: " << min
+             << " max: " << max
+             << dendl;
+  }
+  return 0;
+}
+
+int OSDMonitor::_set_cache_sizes()
+{
+  if (g_conf()->mon_memory_autotune) {
+    // set the new osdmon cache targets to be managed by pcm
+    mon_osd_cache_size = g_conf()->mon_osd_cache_size;
+    rocksdb_cache_size = g_conf()->rocksdb_cache_size;
+    mon_memory_base = cct->_conf.get_val<Option::size_t>("osd_memory_base");
+    mon_memory_fragmentation = cct->_conf.get_val<double>("osd_memory_expected_fragmentation");
+    mon_memory_target = g_conf()->mon_memory_target;
+    mon_memory_min = g_conf()->mon_osd_cache_size_min;
+    if (mon_memory_target <= 0 || mon_memory_min <= 0) {
+      derr << __func__ << " mon_memory_target:" << mon_memory_target
+           << " mon_memory_min:" << mon_memory_min
+           << ". Invalid size option(s) provided."
+           << dendl;
+      return -EINVAL;
+    }
+    // Set the initial inc and full LRU cache sizes
+    inc_osd_cache.set_bytes(mon_memory_min);
+    full_osd_cache.set_bytes(mon_memory_min);
+    mon_memory_autotune = g_conf()->mon_memory_autotune;
+  }
+  return 0;
+}
 
 bool OSDMonitor::_have_pending_crush()
 {
@@ -473,6 +720,17 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
     int err = get_version(osdmap.epoch+1, inc_bl);
     ceph_assert(err == 0);
     ceph_assert(inc_bl.length());
+    // set priority cache manager levels if the osdmap is
+    // being populated for the first time.
+    if (mon_memory_autotune && pcm == nullptr) {
+      int r = register_cache_with_pcm();
+      if (r < 0) {
+        dout(10) << __func__
+                 << " Error while registering osdmon caches with pcm."
+                 << " Proceeding without cache auto tuning."
+                 << dendl;
+      }
+    }
 
     dout(7) << "update_from_paxos  applying incremental " << osdmap.epoch+1
            << dendl;
@@ -588,7 +846,6 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
 
   share_map_with_random_osd();
   update_logger();
-
   process_failures();
 
   // make sure our feature bits reflect the latest map
@@ -600,6 +857,81 @@ void OSDMonitor::update_from_paxos(bool *need_bootstrap)
   }
 }
 
+int OSDMonitor::register_cache_with_pcm()
+{
+  if (mon_memory_target <= 0 || mon_memory_min <= 0) {
+    derr << __func__ << " Invalid memory size specified for mon caches."
+         << " Caches will not be auto-tuned."
+         << dendl;
+    return -EINVAL;
+  }
+  uint64_t base = mon_memory_base;
+  double fragmentation = mon_memory_fragmentation;
+  // For calculating total target memory, consider rocksdb cache size.
+  uint64_t target = mon_memory_target;
+  uint64_t min = mon_memory_min;
+  uint64_t max = min;
+
+  // Apply the same logic as in bluestore to set the max amount
+  // of memory to use for cache. Assume base memory for OSDMaps
+  // and then add in some overhead for fragmentation.
+  uint64_t ltarget = (1.0 - fragmentation) * target;
+  if (ltarget > base + min) {
+    max = ltarget - base;
+  }
+
+  rocksdb_binned_kv_cache = mon->store->get_priority_cache();
+  if (!rocksdb_binned_kv_cache) {
+    derr << __func__ << " not using rocksdb" << dendl;
+    return -EINVAL;
+  }
+
+  int r = _set_cache_ratios();
+  if (r < 0) {
+    derr << __func__ << " Cache ratios for pcm could not be set."
+         << " Review the kv (rocksdb) and mon_memory_target sizes."
+         << dendl;
+    return -EINVAL;
+  }
+
+  pcm = std::make_shared<PriorityCache::Manager>(
+      cct, min, max, target, true);
+  pcm->insert("kv", rocksdb_binned_kv_cache, true);
+  pcm->insert("inc", inc_cache, true);
+  pcm->insert("full", full_cache, true);
+  dout(10) << __func__ << " pcm target: " << target
+           << " pcm max: " << max
+           << " pcm min: " << min
+           << " inc_osd_cache size: " << inc_osd_cache.get_size()
+           << dendl;
+  return 0;
+}
+
+int OSDMonitor::_set_cache_ratios()
+{
+  double old_cache_kv_ratio = cache_kv_ratio;
+
+  // Set the cache ratios for kv(rocksdb), inc and full caches
+  cache_kv_ratio = (double)rocksdb_cache_size / (double)mon_memory_target;
+  if (cache_kv_ratio >= 1.0) {
+    derr << __func__ << " Cache kv ratio (" << cache_kv_ratio
+         << ") must be in range [0,<1.0]."
+         << dendl;
+    cache_kv_ratio = old_cache_kv_ratio;
+    return -EINVAL;
+  }
+  rocksdb_binned_kv_cache->set_cache_ratio(cache_kv_ratio);
+  cache_inc_ratio = cache_full_ratio = (1.0 - cache_kv_ratio) / 2;
+  inc_cache->set_cache_ratio(cache_inc_ratio);
+  full_cache->set_cache_ratio(cache_full_ratio);
+
+  dout(10) << __func__ << " kv ratio " << cache_kv_ratio
+           << " inc ratio " << cache_inc_ratio
+           << " full ratio " << cache_full_ratio
+           << dendl;
+  return 0;
+}
+
 void OSDMonitor::start_mapping()
 {
   // initiate mapping job
@@ -2383,16 +2715,22 @@ public:
     MonOpRequestRef op)
     : C_MonOp(op), osdmon(osdmon) {}
 
-  void _finish(int) override {
-    MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(op->get_req());
-    osdmon->mon->send_reply(
-      op,
-      new MOSDMarkMeDown(
-       m->fsid,
-       m->target_osd,
-       m->target_addrs,
-       m->get_epoch(),
-       false));   // ACK itself does not request an ack
+  void _finish(int r) override {
+    if (r == 0) {
+      MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(op->get_req());
+      osdmon->mon->send_reply(
+        op,
+        new MOSDMarkMeDown(
+          m->fsid,
+          m->target_osd,
+          m->target_addrs,
+          m->get_epoch(),
+          false));   // ACK itself does not request an ack
+    } else if (r == -EAGAIN) {
+        osdmon->dispatch(op);
+    } else {
+        ceph_abort_msgf("C_AckMarkedDown: unknown result %d", r);
+    }
   }
   ~C_AckMarkedDown() override {
   }
@@ -2584,23 +2922,27 @@ bool OSDMonitor::check_failure(utime_t now, int target_osd, failure_info_t& fi)
   // help us localize the grace correction to a subset of the system
   // (say, a rack with a bad switch) that is unhappy.
   ceph_assert(fi.reporters.size());
-  for (map<int,failure_reporter_t>::iterator p = fi.reporters.begin();
-       p != fi.reporters.end();
-       ++p) {
+  for (auto p = fi.reporters.begin(); p != fi.reporters.end();) {
     // get the parent bucket whose type matches with "reporter_subtree_level".
     // fall back to OSD if the level doesn't exist.
-    map<string, string> reporter_loc = osdmap.crush->get_full_location(p->first);
-    map<string, string>::iterator iter = reporter_loc.find(reporter_subtree_level);
-    if (iter == reporter_loc.end()) {
-      reporters_by_subtree.insert("osd." + to_string(p->first));
+    if (osdmap.exists(p->first)) {
+      auto reporter_loc = osdmap.crush->get_full_location(p->first);
+      if (auto iter = reporter_loc.find(reporter_subtree_level);
+          iter == reporter_loc.end()) {
+        reporters_by_subtree.insert("osd." + to_string(p->first));
+      } else {
+        reporters_by_subtree.insert(iter->second);
+      }
+      if (g_conf()->mon_osd_adjust_heartbeat_grace) {
+        const osd_xinfo_t& xi = osdmap.get_xinfo(p->first);
+        utime_t elapsed = now - xi.down_stamp;
+        double decay = exp((double)elapsed * decay_k);
+        peer_grace += decay * (double)xi.laggy_interval * xi.laggy_probability;
+      }
+      ++p;
     } else {
-      reporters_by_subtree.insert(iter->second);
-    }
-    if (g_conf()->mon_osd_adjust_heartbeat_grace) {
-      const osd_xinfo_t& xi = osdmap.get_xinfo(p->first);
-      utime_t elapsed = now - xi.down_stamp;
-      double decay = exp((double)elapsed * decay_k);
-      peer_grace += decay * (double)xi.laggy_interval * xi.laggy_probability;
+      fi.cancel_report(p->first);;
+      p = fi.reporters.erase(p);
     }
   }
   
@@ -2666,6 +3008,8 @@ bool OSDMonitor::prepare_failure(MonOpRequestRef op)
   ceph_assert(osdmap.is_up(target_osd));
   ceph_assert(osdmap.get_addrs(target_osd) == m->get_target_addrs());
 
+  mon->no_reply(op);
+
   if (m->if_osd_failed()) {
     // calculate failure time
     utime_t now = ceph_clock_now();
@@ -2678,7 +3022,6 @@ bool OSDMonitor::prepare_failure(MonOpRequestRef op)
                         << " reported immediately failed by "
                         << m->get_orig_source();
       force_failure(target_osd, reporter);
-      mon->no_reply(op);
       return true;
     }
     mon->clog->debug() << "osd." << m->get_target_osd() << " reported failed by "
@@ -2713,7 +3056,6 @@ bool OSDMonitor::prepare_failure(MonOpRequestRef op)
     } else {
       dout(10) << " no failure_info for osd." << target_osd << dendl;
     }
-    mon->no_reply(op);
   }
 
   return false;
@@ -3874,7 +4216,7 @@ int OSDMonitor::get_version(version_t ver, uint64_t features, bufferlist& bl)
       OSDMap::get_significant_features(mon->get_quorum_con_features())) {
     reencode_incremental_map(bl, features);
   }
-  inc_osd_cache.add({ver, significant_features}, bl);
+  inc_osd_cache.add_bytes({ver, significant_features}, bl);
   return 0;
 }
 
@@ -4023,7 +4365,7 @@ int OSDMonitor::get_version_full(version_t ver, uint64_t features,
       OSDMap::get_significant_features(mon->get_quorum_con_features())) {
     reencode_full_map(bl, features);
   }
-  full_osd_cache.add({ver, significant_features}, bl);
+  full_osd_cache.add_bytes({ver, significant_features}, bl);
   return 0;
 }
 
@@ -4454,6 +4796,51 @@ void OSDMonitor::tick()
   if (do_propose ||
       !pending_inc.new_pg_temp.empty())  // also propose if we adjusted pg_temp
     propose_pending();
+
+  {
+    std::lock_guard l(balancer_lock);
+    if (ceph_using_tcmalloc() && mon_memory_autotune && pcm != nullptr) {
+      pcm->tune_memory();
+      pcm->balance();
+      _set_new_cache_sizes();
+      dout(10) << "tick balancer "
+               << " inc cache_bytes: " << inc_cache->get_cache_bytes()
+               << " inc comtd_bytes: " << inc_cache->get_committed_size()
+               << " inc used_bytes: " << inc_cache->_get_used_bytes()
+               << " inc num_osdmaps: " << inc_cache->_get_num_osdmaps()
+               << dendl;
+      dout(10) << "tick balancer "
+               << " full cache_bytes: " << full_cache->get_cache_bytes()
+               << " full comtd_bytes: " << full_cache->get_committed_size()
+               << " full used_bytes: " << full_cache->_get_used_bytes()
+               << " full num_osdmaps: " << full_cache->_get_num_osdmaps()
+               << dendl;
+    }
+  }
+}
+
+void OSDMonitor::_set_new_cache_sizes()
+{
+  uint64_t cache_size = 0;
+  int64_t inc_alloc = 0;
+  int64_t full_alloc = 0;
+  int64_t kv_alloc = 0;
+
+  if (pcm != nullptr && rocksdb_binned_kv_cache != nullptr) {
+    cache_size = pcm->get_tuned_mem();
+    inc_alloc = inc_cache->get_committed_size();
+    full_alloc = full_cache->get_committed_size();
+    kv_alloc = rocksdb_binned_kv_cache->get_committed_size();
+  }
+
+  inc_osd_cache.set_bytes(inc_alloc);
+  full_osd_cache.set_bytes(full_alloc);
+
+  dout(10) << __func__ << " cache_size:" << cache_size
+           << " inc_alloc: " << inc_alloc
+           << " full_alloc: " << full_alloc
+           << " kv_alloc: " << kv_alloc
+           << dendl;
 }
 
 bool OSDMonitor::handle_osd_timeouts(const utime_t &now,
@@ -5164,6 +5551,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op)
        if (f) {
          if (detail == "detail") {
            f->open_object_section("pool");
+           f->dump_int("pool_id", it->first);
            f->dump_string("pool_name", osdmap.get_pool_name(it->first));
            it->second.dump(f.get());
            f->close_section();
@@ -7151,6 +7539,9 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
       ss << "pool size must be between 1 and 10";
       return -EINVAL;
     }
+    if (!osdmap.crush->check_crush_rule(p.get_crush_rule(), p.type, n, ss)) {
+      return -EINVAL;
+    }
     int r = check_pg_num(pool, p.get_pg_num(), n, &ss);
     if (r < 0) {
       return r;
index 090dca7f2126ad688e47510cbfc4bf4f54775304..27f56129d944d5fac102c5401867c1ed03c391c5 100644 (file)
@@ -27,6 +27,7 @@
 #include "include/types.h"
 #include "include/encoding.h"
 #include "common/simple_cache.hpp"
+#include "common/PriorityCache.h"
 #include "msg/Messenger.h"
 
 #include "osd/OSDMap.h"
@@ -208,12 +209,17 @@ struct osdmap_manifest_t {
 };
 WRITE_CLASS_ENCODER(osdmap_manifest_t);
 
-class OSDMonitor : public PaxosService {
+class OSDMonitor : public PaxosService,
+                   public md_config_obs_t {
   CephContext *cct;
 
 public:
   OSDMap osdmap;
 
+  // config observer
+  const char** get_tracked_conf_keys() const override;
+  void handle_conf_change(const ConfigProxy& conf,
+    const std::set<std::string> &changed) override;
   // [leader]
   OSDMap::Incremental pending_inc;
   map<int, bufferlist> pending_metadata;
@@ -221,6 +227,9 @@ public:
   map<int, failure_info_t> failure_info;
   map<int,utime_t>    down_pending_out;  // osd down -> out
   bool priority_convert = false;
+  std::shared_ptr<PriorityCache::PriCache> rocksdb_binned_kv_cache = nullptr;
+  std::shared_ptr<PriorityCache::Manager> pcm = nullptr;
+  ceph::mutex balancer_lock = ceph::make_mutex("OSDMonitor::balancer_lock");
 
   map<int,double> osd_weight;
 
@@ -303,6 +312,28 @@ private:
   bool is_prune_supported() const;
   bool do_prune(MonitorDBStore::TransactionRef tx);
 
+  // Priority cache control
+  uint32_t mon_osd_cache_size = 0;  ///< Number of cached OSDMaps
+  uint64_t rocksdb_cache_size = 0;  ///< Cache for kv Db
+  double cache_kv_ratio = 0;        ///< Cache ratio dedicated to kv
+  double cache_inc_ratio = 0;       ///< Cache ratio dedicated to inc
+  double cache_full_ratio = 0;      ///< Cache ratio dedicated to full
+  uint64_t mon_memory_base = 0;     ///< Mon base memory for cache autotuning
+  double mon_memory_fragmentation = 0; ///< Expected memory fragmentation
+  uint64_t mon_memory_target = 0;   ///< Mon target memory for cache autotuning
+  uint64_t mon_memory_min = 0;      ///< Min memory to cache osdmaps
+  bool mon_memory_autotune = false; ///< Cache auto tune setting
+  int register_cache_with_pcm();
+  int _set_cache_sizes();
+  int _set_cache_ratios();
+  void _set_new_cache_sizes();
+  void _set_cache_autotuning();
+  int _update_mon_cache_settings();
+
+  friend struct OSDMemCache;
+  friend struct IncCache;
+  friend struct FullCache;
+
   /**
    * we haven't delegated full version stashing to paxosservice for some time
    * now, making this function useless in current context.
index a067f4af6f536e11db5ceecf7d46153cd70a6096..3d8538f3689b2f2288f03a518c1b99d9a4399d60 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "osd/osd_types.h"
 #include "osd/OSDMap.h"
+#include <boost/range/adaptor/reversed.hpp>
 
 #define dout_context g_ceph_context
 
@@ -1133,14 +1134,16 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc)
 
     auto pool_statfs_iter =
       pool_statfs.find(std::make_pair(update_pool, update_osd));
-    pool_stat_t &pool_sum_ref = pg_pool_sum[update_pool];
-    if (pool_statfs_iter == pool_statfs.end()) {
-      pool_statfs.emplace(std::make_pair(update_pool, update_osd), statfs_inc);
-    } else {
-      pool_sum_ref.sub(pool_statfs_iter->second);
-      pool_statfs_iter->second = statfs_inc;
+    if (pg_pool_sum.count(update_pool)) { 
+      pool_stat_t &pool_sum_ref = pg_pool_sum[update_pool];
+      if (pool_statfs_iter == pool_statfs.end()) {
+        pool_statfs.emplace(std::make_pair(update_pool, update_osd), statfs_inc);
+      } else {
+        pool_sum_ref.sub(pool_statfs_iter->second);
+        pool_statfs_iter->second = statfs_inc;
+      }
+      pool_sum_ref.add(statfs_inc);
     }
-    pool_sum_ref.add(statfs_inc);
   }
 
   for (auto p = inc.get_osd_stat_updates().begin();
@@ -2331,10 +2334,11 @@ void PGMap::get_health_checks(
   typedef enum pg_consequence_t {
     UNAVAILABLE = 1,   // Client IO to the pool may block
     DEGRADED = 2,      // Fewer than the requested number of replicas are present
-    DEGRADED_FULL = 3, // Fewer than the request number of replicas may be present
-                       //  and insufficiet resources are present to fix this
-    DAMAGED = 4        // The data may be missing or inconsistent on disk and
+    BACKFILL_FULL = 3, // Backfill is blocked for space considerations
+                       // This may or may not be a deadlock condition.
+    DAMAGED = 4,        // The data may be missing or inconsistent on disk and
                        //  requires repair
+    RECOVERY_FULL = 5  // Recovery is blocked because OSDs are full
   } pg_consequence_t;
 
   // For a given PG state, how should it be reported at the pool level?
@@ -2377,8 +2381,8 @@ void PGMap::get_health_checks(
     { PG_STATE_SNAPTRIM_ERROR,   {DAMAGED,     {}} },
     { PG_STATE_RECOVERY_UNFOUND, {DAMAGED,     {}} },
     { PG_STATE_BACKFILL_UNFOUND, {DAMAGED,     {}} },
-    { PG_STATE_BACKFILL_TOOFULL, {DEGRADED_FULL, {}} },
-    { PG_STATE_RECOVERY_TOOFULL, {DEGRADED_FULL, {}} },
+    { PG_STATE_BACKFILL_TOOFULL, {BACKFILL_FULL, {}} },
+    { PG_STATE_RECOVERY_TOOFULL, {RECOVERY_FULL, {}} },
     { PG_STATE_DEGRADED,         {DEGRADED,    {}} },
     { PG_STATE_DOWN,             {UNAVAILABLE, {}} },
     // Delayed (wait until stuck) reports
@@ -2522,16 +2526,21 @@ void PGMap::get_health_checks(
         summary = "Degraded data redundancy: ";
         sev = HEALTH_WARN;
         break;
-      case DEGRADED_FULL:
-        health_code = "PG_DEGRADED_FULL";
-        summary = "Degraded data redundancy (low space): ";
-        sev = HEALTH_ERR;
+      case BACKFILL_FULL:
+        health_code = "PG_BACKFILL_FULL";
+        summary = "Low space hindering backfill (add storage if this doesn't resolve itself): ";
+        sev = HEALTH_WARN;
         break;
       case DAMAGED:
         health_code = "PG_DAMAGED";
         summary = "Possible data damage: ";
         sev = HEALTH_ERR;
         break;
+      case RECOVERY_FULL:
+        health_code = "PG_RECOVERY_FULL";
+        summary = "Full OSDs blocking recovery: ";
+        sev = HEALTH_ERR;
+        break;
       default:
         ceph_abort();
     }
@@ -2694,6 +2703,129 @@ void PGMap::get_health_checks(
     }
   }
 
+  // TOO_FEW_OSDS
+  auto warn_too_few_osds = cct->_conf.get_val<bool>("mon_warn_on_too_few_osds");
+  auto osd_pool_default_size = cct->_conf.get_val<uint64_t>("osd_pool_default_size");
+  if (warn_too_few_osds && osdmap.get_num_osds() < osd_pool_default_size) {
+    ostringstream ss;
+    ss << "OSD count " << osdmap.get_num_osds()
+        << " < osd_pool_default_size " << osd_pool_default_size;
+    checks->add("TOO_FEW_OSDS", HEALTH_WARN, ss.str());
+  }
+
+  // SLOW_PING_TIME
+  // Convert milliseconds to microseconds
+  auto warn_slow_ping_time = cct->_conf.get_val<double>("mon_warn_on_slow_ping_time") * 1000;
+  auto grace = cct->_conf.get_val<int64_t>("osd_heartbeat_grace");
+  if (warn_slow_ping_time == 0) {
+    double ratio = cct->_conf.get_val<double>("mon_warn_on_slow_ping_ratio");
+    warn_slow_ping_time = grace;
+    warn_slow_ping_time *= 1000000 * ratio; // Seconds of grace to microseconds at ratio
+  }
+  if (warn_slow_ping_time > 0) {
+
+    struct mon_ping_item_t {
+      uint32_t pingtime;
+      int from;
+      int to;
+      bool improving;
+
+      bool operator<(const mon_ping_item_t& rhs) const {
+        if (pingtime < rhs.pingtime)
+          return true;
+        if (pingtime > rhs.pingtime)
+          return false;
+        if (from < rhs.from)
+          return true;
+        if (from > rhs.from)
+          return false;
+        return to < rhs.to;
+      }
+    };
+
+    list<string> detail_back;
+    list<string> detail_front;
+    set<mon_ping_item_t> back_sorted, front_sorted;
+    for (auto i : osd_stat) {
+      for (auto j : i.second.hb_pingtime) {
+
+       // Maybe source info is old
+       if (now.sec() - j.second.last_update > grace * 60)
+         continue;
+
+       mon_ping_item_t back;
+       back.pingtime = std::max(j.second.back_pingtime[0], j.second.back_pingtime[1]);
+       back.pingtime = std::max(back.pingtime, j.second.back_pingtime[2]);
+       back.from = i.first;
+       back.to = j.first;
+       if (back.pingtime > warn_slow_ping_time) {
+         back.improving = (j.second.back_pingtime[0] < j.second.back_pingtime[1]
+                           && j.second.back_pingtime[1] < j.second.back_pingtime[2]);
+         back_sorted.emplace(back);
+       }
+
+       mon_ping_item_t front;
+       front.pingtime = std::max(j.second.front_pingtime[0], j.second.front_pingtime[1]);
+       front.pingtime = std::max(front.pingtime, j.second.front_pingtime[2]);
+       front.from = i.first;
+       front.to = j.first;
+       if (front.pingtime > warn_slow_ping_time) {
+         front.improving = (j.second.front_pingtime[0] < j.second.front_pingtime[1]
+                            && j.second.front_pingtime[1] < j.second.back_pingtime[2]);
+         front_sorted.emplace(front);
+       }
+      }
+    }
+    int max_detail = 10;
+    for (auto &sback : boost::adaptors::reverse(back_sorted)) {
+      ostringstream ss;
+      if (max_detail == 0) {
+       ss << "Truncated long network list.  Use ceph daemon mgr.# dump_osd_network for more information";
+        detail_back.push_back(ss.str());
+        break;
+      }
+      max_detail--;
+      ss << "Slow heartbeat ping on back interface from osd." << sback.from
+         << (osdmap.is_down(sback.from) ? " (down)" : "")
+        << " to osd." << sback.to
+         << (osdmap.is_down(sback.to) ? " (down)" : "")
+        << " " << fixed_u_to_string(sback.pingtime, 3) << " msec"
+        << (sback.improving ? " possibly improving" : "");
+      detail_back.push_back(ss.str());
+    }
+    max_detail = 10;
+    for (auto &sfront : boost::adaptors::reverse(front_sorted)) {
+      ostringstream ss;
+      if (max_detail == 0) {
+       ss << "Truncated long network list.  Use ceph daemon mgr.# dump_osd_network for more information";
+        detail_front.push_back(ss.str());
+        break;
+      }
+      max_detail--;
+      ss << "Slow heartbeat ping on front interface from osd." << sfront.from
+         << (osdmap.is_down(sfront.from) ? " (down)" : "")
+         << " to osd." << sfront.to
+         << (osdmap.is_down(sfront.to) ? " (down)" : "")
+        << " " << fixed_u_to_string(sfront.pingtime, 3) << " msec"
+        << (sfront.improving ? " possibly improving" : "");
+      detail_front.push_back(ss.str());
+    }
+    if (detail_back.size() != 0) {
+      ostringstream ss;
+      ss << "Long heartbeat ping times on back interface seen, longest is "
+        << fixed_u_to_string(back_sorted.rbegin()->pingtime, 3) << " msec";
+      auto& d = checks->add("OSD_SLOW_PING_TIME_BACK", HEALTH_WARN, ss.str());
+      d.detail.swap(detail_back);
+    }
+    if (detail_front.size() != 0) {
+      ostringstream ss;
+      ss << "Long heartbeat ping times on front interface seen, longest is "
+        << fixed_u_to_string(front_sorted.rbegin()->pingtime, 3) << " msec";
+      auto& d = checks->add("OSD_SLOW_PING_TIME_FRONT", HEALTH_WARN, ss.str());
+      d.detail.swap(detail_front);
+    }
+  }
+
   // SMALLER_PGP_NUM
   // MANY_OBJECTS_PER_PG
   if (!pg_stat.empty()) {
index 6ff2617446161c5d101e9dd46bc57a26f7d633ed..67e7130e9e06e8444124b636971e5ed91922bd0b 100644 (file)
@@ -1,9 +1,7 @@
 set(mount_ceph_srcs
-  mount.ceph.c)
+  mount.ceph.c conf.cc)
 add_executable(mount.ceph ${mount_ceph_srcs}
   $<TARGET_OBJECTS:parse_secret_objs>
   $<TARGET_OBJECTS:common_mountcephfs_objs>)
-set_target_properties(mount.ceph PROPERTIES
-  INSTALL_RPATH "")
-target_link_libraries(mount.ceph keyutils::keyutils)
+target_link_libraries(mount.ceph keyutils::keyutils ${CAPNG_LIBRARIES} global ceph-common)
 install(TARGETS mount.ceph DESTINATION ${CMAKE_INSTALL_SBINDIR})
diff --git a/ceph/src/mount/conf.cc b/ceph/src/mount/conf.cc
new file mode 100644 (file)
index 0000000..228f53e
--- /dev/null
@@ -0,0 +1,95 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <string>
+#include <vector>
+#include <cstring>
+#include <map>
+
+#include "common/ceph_context.h"
+#include "common/ceph_argparse.h"
+#include "global/global_init.h"
+#include "common/config.h"
+#include "auth/KeyRing.h"
+#include "mount.ceph.h"
+#include "mon/MonClient.h"
+
+extern "C" void mount_ceph_get_config_info(const char *config_file,
+                                          const char *name,
+                                          struct ceph_config_info *cci)
+{
+  int err;
+  KeyRing keyring;
+  CryptoKey secret;
+  std::string secret_str;
+  std::string monaddrs;
+  vector<const char *> args = { "--name", name };
+  bool first = true;
+
+  if (config_file) {
+    args.push_back("--conf");
+    args.push_back(config_file);
+  }
+
+  /* Create CephContext */
+  auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY,
+                        CINIT_FLAG_NO_DAEMON_ACTIONS|CINIT_FLAG_NO_MON_CONFIG);
+  auto& conf = cct->_conf;
+
+  conf.parse_env(cct->get_module_type()); // environment variables override
+  conf.apply_changes(nullptr);
+
+  MonClient monc = MonClient(cct.get());
+  err = monc.build_initial_monmap();
+  if (err)
+    goto scrape_keyring;
+
+  for (const auto& mon : monc.monmap.addr_mons) {
+    auto& eaddr = mon.first;
+
+    // For now, kernel client only accepts legacy addrs
+    if (!eaddr.is_legacy())
+      continue;
+
+    std::string addr;
+    addr += eaddr.ip_only_to_str();
+    addr += ":";
+    addr += std::to_string(eaddr.get_port());
+    /* If this will overrun cci_mons, stop here */
+    if (monaddrs.length() + 1 + addr.length() + 1 > sizeof(cci->cci_mons))
+      break;
+
+    if (first)
+      first = false;
+    else
+      monaddrs += ",";
+
+    monaddrs += addr;
+  }
+
+  if (monaddrs.length())
+    strcpy(cci->cci_mons, monaddrs.c_str());
+  else
+    mount_ceph_debug("Could not discover monitor addresses");
+
+scrape_keyring:
+  err = keyring.from_ceph_context(cct.get());
+  if (err) {
+    mount_ceph_debug("keyring.from_ceph_context failed: %d\n", err);
+    return;
+  }
+
+  if (!keyring.get_secret(conf->name, secret)) {
+    mount_ceph_debug("keyring.get_secret failed\n");
+    return;
+  }
+
+  secret.encode_base64(secret_str);
+
+  if (secret_str.length() + 1 > sizeof(cci->cci_secret)) {
+    mount_ceph_debug("secret is too long\n");
+    return;
+  }
+  strcpy(cci->cci_secret, secret_str.c_str());
+}
index 1345e7f451257771666bee6c6d6a49fc756a3493..3a612f3d45d4f610dff7d654f2f634be542e54ad 100644 (file)
@@ -3,20 +3,22 @@
 #include <stdlib.h>
 #include <errno.h>
 #include <sys/mount.h>
+#include <stdbool.h>
+#include <sys/mman.h>
+#include <wait.h>
+#include <cap-ng.h>
 
 #include "common/module.h"
 #include "common/secret.h"
 #include "include/addr_parsing.h"
+#include "mount.ceph.h"
 
 #ifndef MS_RELATIME
 # define MS_RELATIME (1<<21)
 #endif
 
-#define MAX_SECRET_LEN 1000
-#define MAX_SECRET_OPTION_LEN (MAX_SECRET_LEN + 7)
-
-int verboseflag = 0;
-int skip_mtab_flag = 0;
+bool verboseflag = false;
+bool skip_mtab_flag = false;
 static const char * const EMPTY_STRING = "";
 
 /* TODO duplicates logic from kernel */
@@ -24,6 +26,17 @@ static const char * const EMPTY_STRING = "";
 
 #include "mtab.c"
 
+struct ceph_mount_info {
+       unsigned long   cmi_flags;
+       char            *cmi_name;
+       char            *cmi_path;
+       char            *cmi_mons;
+       char            *cmi_conf;
+       char            *cmi_opts;
+       int             cmi_opts_len;
+       char            cmi_secret[SECRET_BUFSIZE];
+};
+
 static void block_signals (int how)
 {
      sigset_t sigs;
@@ -34,69 +47,173 @@ static void block_signals (int how)
      sigprocmask (how, &sigs, (sigset_t *) 0);
 }
 
-static char *mount_resolve_src(const char *orig_str)
+void mount_ceph_debug(const char *fmt, ...)
+{
+       if (verboseflag) {
+               va_list args;
+
+               va_start(args, fmt);
+               vprintf(fmt, args);
+               va_end(args);
+       }
+}
+
+static int parse_src(const char *orig_str, struct ceph_mount_info *cmi)
 {
-       int len, pos;
+       size_t len;
        char *mount_path;
-       char *src;
-       char *buf = strdup(orig_str);
 
-       mount_path = strstr(buf, ":/");
+       mount_path = strstr(orig_str, ":/");
        if (!mount_path) {
-               printf("source mount path was not specified\n");
-               free(buf);
-               return NULL;
+               fprintf(stderr, "source mount path was not specified\n");
+               return -EINVAL;
        }
-       if (mount_path == buf) {
-               printf("server address expected\n");
-               free(buf);
-               return NULL;
+
+       len = mount_path - orig_str;
+       if (len != 0) {
+               cmi->cmi_mons = strndup(orig_str, len);
+               if (!cmi->cmi_mons)
+                       return -ENOMEM;
        }
 
-       *mount_path = '\0';
        mount_path++;
+       cmi->cmi_path = strdup(mount_path);
+       if (!cmi->cmi_path)
+               return -ENOMEM;
+       return 0;
+}
 
-       if (!*mount_path) {
-               printf("incorrect source mount path\n");
-               free(buf);
-               return NULL;
-       }
+static char *finalize_src(struct ceph_mount_info *cmi)
+{
+       int pos, len;
+       char *src;
 
-       src = resolve_addrs(buf);
-       if (!src) {
-               free(buf);
+       src = resolve_addrs(cmi->cmi_mons);
+       if (!src)
                return NULL;
-       }
 
        len = strlen(src);
        pos = safe_cat(&src, &len, len, ":");
-       safe_cat(&src, &len, pos, mount_path);
+       safe_cat(&src, &len, pos, cmi->cmi_path);
 
-       free(buf);
        return src;
 }
 
+static int
+drop_capabilities()
+{
+       capng_setpid(getpid());
+       capng_clear(CAPNG_SELECT_BOTH);
+       if (capng_update(CAPNG_ADD, CAPNG_PERMITTED, CAP_DAC_READ_SEARCH)) {
+               fprintf(stderr, "Unable to update permitted capability set.\n");
+               return EX_SYSERR;
+       }
+       if (capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_DAC_READ_SEARCH)) {
+               fprintf(stderr, "Unable to update effective capability set.\n");
+               return EX_SYSERR;
+       }
+       if (capng_apply(CAPNG_SELECT_BOTH)) {
+               fprintf(stderr, "Unable to apply new capability set.\n");
+               return EX_SYSERR;
+       }
+       return 0;
+}
+
+/*
+ * Attempt to fetch info from the local config file, if one is present. Since
+ * this involves activity that may be dangerous for a privileged task, we
+ * fork(), have the child drop privileges and do the processing and then hand
+ * back the results via memory shared with the parent.
+ */
+static int fetch_config_info(struct ceph_mount_info *cmi)
+{
+       int ret = 0;
+       pid_t pid;
+       struct ceph_config_info *cci;
+
+       /* Don't do anything if we already have requisite info */
+       if (cmi->cmi_secret[0] && cmi->cmi_mons)
+               return 0;
+
+       cci = mmap((void *)0, sizeof(*cci), PROT_READ | PROT_WRITE,
+                  MAP_ANONYMOUS | MAP_SHARED, -1, 0);
+       if (cci == MAP_FAILED) {
+               mount_ceph_debug("Unable to allocate memory: %s\n",
+                                strerror(errno));
+               return EX_SYSERR;
+       }
+
+       pid = fork();
+       if (pid < 0) {
+               mount_ceph_debug("fork() failure: %s\n", strerror(errno));
+               ret = EX_SYSERR;
+               goto out;
+       }
+
+       if (pid == 0) {
+               /* child */
+               ret = drop_capabilities();
+               if (ret)
+                       exit(1);
+               mount_ceph_get_config_info(cmi->cmi_conf, cmi->cmi_name, cci);
+               exit(0);
+       } else {
+               /* parent */
+               pid = wait(&ret);
+               if (!WIFEXITED(ret)) {
+                       mount_ceph_debug("Child process terminated abnormally.\n");
+                       ret = EX_SYSERR;
+                       goto out;
+               }
+               ret = WEXITSTATUS(ret);
+               if (ret) {
+                       mount_ceph_debug("Child exited with status %d\n", ret);
+                       ret = EX_SYSERR;
+                       goto out;
+               }
+
+               /*
+                * Copy values from MAP_SHARED buffer to cmi if we didn't
+                * already find anything and we got something from the child.
+                */
+               size_t len;
+               if (!cmi->cmi_secret[0] && cci->cci_secret[0]) {
+
+                       len = strnlen(cci->cci_secret, SECRET_BUFSIZE);
+                       if (len < SECRET_BUFSIZE) {
+                               memcpy(cmi->cmi_secret, cci->cci_secret, len + 1);
+                       } else {
+                               mount_ceph_debug("secret is too long (len=%zu max=%zu)!\n", len, SECRET_BUFSIZE);
+                       }
+               }
+               if (!cmi->cmi_mons && cci->cci_mons[0]) {
+                       len = strnlen(cci->cci_mons, MON_LIST_BUFSIZE);
+                       if (len < MON_LIST_BUFSIZE)
+                               cmi->cmi_mons = strndup(cci->cci_mons, len + 1);
+               }
+       }
+out:
+       munmap(cci, sizeof(*cci));
+       return ret;
+}
+
 /*
  * this one is partially based on parse_options() from cifs.mount.c
  */
-static char *parse_options(const char *data, int *filesys_flags)
+static int parse_options(const char *data, struct ceph_mount_info *cmi)
 {
        char * next_keyword = NULL;
-       char * out = NULL;
-       int out_len = 0;
        int pos = 0;
        char *name = NULL;
        int name_len = 0;
        int name_pos = 0;
-       char secret[MAX_SECRET_LEN];
-       char *saw_name = NULL;
-       char *saw_secret = NULL;
 
-       if(verboseflag)
-               printf("parsing options: %s\n", data);
+       mount_ceph_debug("parsing options: %s\n", data);
 
        do {
                char * value = NULL;
+               bool skip = true;
+
                /*  check if ends with trailing comma */
                if(*data == 0)
                        break;
@@ -112,144 +229,118 @@ static char *parse_options(const char *data, int *filesys_flags)
                        value++;
                }
 
-               int skip = 1;
-
                if (strncmp(data, "ro", 2) == 0) {
-                       *filesys_flags |= MS_RDONLY;
+                       cmi->cmi_flags |= MS_RDONLY;
                } else if (strncmp(data, "rw", 2) == 0) {
-                       *filesys_flags &= ~MS_RDONLY;
+                       cmi->cmi_flags &= ~MS_RDONLY;
                } else if (strncmp(data, "nosuid", 6) == 0) {
-                       *filesys_flags |= MS_NOSUID;
+                       cmi->cmi_flags |= MS_NOSUID;
                } else if (strncmp(data, "suid", 4) == 0) {
-                       *filesys_flags &= ~MS_NOSUID;
+                       cmi->cmi_flags &= ~MS_NOSUID;
                } else if (strncmp(data, "dev", 3) == 0) {
-                       *filesys_flags &= ~MS_NODEV;
+                       cmi->cmi_flags &= ~MS_NODEV;
                } else if (strncmp(data, "nodev", 5) == 0) {
-                       *filesys_flags |= MS_NODEV;
+                       cmi->cmi_flags |= MS_NODEV;
                } else if (strncmp(data, "noexec", 6) == 0) {
-                       *filesys_flags |= MS_NOEXEC;
+                       cmi->cmi_flags |= MS_NOEXEC;
                } else if (strncmp(data, "exec", 4) == 0) {
-                       *filesys_flags &= ~MS_NOEXEC;
+                       cmi->cmi_flags &= ~MS_NOEXEC;
                 } else if (strncmp(data, "sync", 4) == 0) {
-                        *filesys_flags |= MS_SYNCHRONOUS;
+                        cmi->cmi_flags |= MS_SYNCHRONOUS;
                 } else if (strncmp(data, "remount", 7) == 0) {
-                        *filesys_flags |= MS_REMOUNT;
+                        cmi->cmi_flags |= MS_REMOUNT;
                 } else if (strncmp(data, "mandlock", 8) == 0) {
-                        *filesys_flags |= MS_MANDLOCK;
+                        cmi->cmi_flags |= MS_MANDLOCK;
                } else if ((strncmp(data, "nobrl", 5) == 0) || 
                           (strncmp(data, "nolock", 6) == 0)) {
-                       *filesys_flags &= ~MS_MANDLOCK;
+                       cmi->cmi_flags &= ~MS_MANDLOCK;
                } else if (strncmp(data, "noatime", 7) == 0) {
-                       *filesys_flags |= MS_NOATIME;
+                       cmi->cmi_flags |= MS_NOATIME;
                } else if (strncmp(data, "nodiratime", 10) == 0) {
-                       *filesys_flags |= MS_NODIRATIME;
+                       cmi->cmi_flags |= MS_NODIRATIME;
                } else if (strncmp(data, "relatime", 8) == 0) {
-                       *filesys_flags |= MS_RELATIME;
-
+                       cmi->cmi_flags |= MS_RELATIME;
+               } else if (strncmp(data, "strictatime", 11) == 0) {
+                       cmi->cmi_flags |= MS_STRICTATIME;
                } else if (strncmp(data, "noauto", 6) == 0) {
-                       skip = 1;  /* ignore */
+                       /* ignore */
                } else if (strncmp(data, "_netdev", 7) == 0) {
-                       skip = 1;  /* ignore */
+                       /* ignore */
                } else if (strncmp(data, "nofail", 6) == 0) {
-                       skip = 1;  /* ignore */
-
+                       /* ignore */
                } else if (strncmp(data, "secretfile", 10) == 0) {
+                       int ret;
+
                        if (!value || !*value) {
-                               printf("keyword secretfile found, but no secret file specified\n");
-                               free(saw_name);
-                               return NULL;
+                               fprintf(stderr, "keyword secretfile found, but no secret file specified\n");
+                               return -EINVAL;
                        }
-
-                       if (read_secret_from_file(value, secret, sizeof(secret)) < 0) {
-                               printf("error reading secret file\n");
-                               return NULL;
+                       ret = read_secret_from_file(value, cmi->cmi_secret, sizeof(cmi->cmi_secret));
+                       if (ret < 0) {
+                               fprintf(stderr, "error reading secret file: %d\n", ret);
+                               return ret;
                        }
-
-                       /* see comment for "secret" */
-                       saw_secret = secret;
-                       skip = 1;
                } else if (strncmp(data, "secret", 6) == 0) {
+                       size_t len;
+
                        if (!value || !*value) {
-                               printf("mount option secret requires a value.\n");
-                               free(saw_name);
-                               return NULL;
+                               fprintf(stderr, "mount option secret requires a value.\n");
+                               return -EINVAL;
                        }
 
-                       /* secret is only added to kernel options as
-                          backwards compatibility, if add_key doesn't
-                          recognize our keytype; hence, it is skipped
-                          here and appended to options on add_key
-                          failure */
-                       size_t len = sizeof(secret);
-                       strncpy(secret, value, len-1);
-                       secret[len-1] = '\0';
-                       saw_secret = secret;
-                       skip = 1;
-               } else if (strncmp(data, "name", 4) == 0) {
+                       len = strnlen(value, sizeof(cmi->cmi_secret)) + 1;
+                       if (len <= sizeof(cmi->cmi_secret))
+                               memcpy(cmi->cmi_secret, value, len);
+               } else if (strncmp(data, "conf", 4) == 0) {
                        if (!value || !*value) {
-                               printf("mount option name requires a value.\n");
-                               return NULL;
+                               fprintf(stderr, "mount option conf requires a value.\n");
+                               return -EINVAL;
                        }
-
-                       /* take a copy of the name, to be used for
-                          naming the keys that we add to kernel; */
-                       free(saw_name);
-                       saw_name = strdup(value);
-                       if (!saw_name) {
-                               printf("out of memory.\n");
-                               return NULL;
+                       /* keep pointer to value */
+                       cmi->cmi_conf = strdup(value);
+                       if (!cmi->cmi_conf)
+                               return -ENOMEM;
+               } else if (strncmp(data, "name", 4) == 0) {
+                       if (!value || !*value) {
+                               fprintf(stderr, "mount option name requires a value.\n");
+                               return -EINVAL;
                        }
-                       skip = 0;
+                       /* keep pointer to value */
+                       name = value;
+                       skip = false;
                } else {
-                       skip = 0;
-                       if (verboseflag) {
-                         fprintf(stderr, "mount.ceph: unrecognized mount option \"%s\", "
-                                         "passing to kernel.\n", data);
-            }
+                       skip = false;
+                       mount_ceph_debug("mount.ceph: unrecognized mount option \"%s\", passing to kernel.\n",
+                                       data);
                }
 
                /* Copy (possibly modified) option to out */
                if (!skip) {
                        if (pos)
-                               pos = safe_cat(&out, &out_len, pos, ",");
+                               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, ",");
 
                        if (value) {
-                               pos = safe_cat(&out, &out_len, pos, data);
-                               pos = safe_cat(&out, &out_len, pos, "=");
-                               pos = safe_cat(&out, &out_len, pos, value);
+                               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, data);
+                               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, "=");
+                               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, value);
                        } else {
-                               pos = safe_cat(&out, &out_len, pos, data);
+                               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, data);
                        }
                        
                }
                data = next_keyword;
        } while (data);
 
-       name_pos = safe_cat(&name, &name_len, name_pos, "client.");
-       if (!saw_name) {
-               name_pos = safe_cat(&name, &name_len, name_pos, CEPH_AUTH_NAME_DEFAULT);
-       } else {
-               name_pos = safe_cat(&name, &name_len, name_pos, saw_name);
-       }
-       if (saw_secret || is_kernel_secret(name)) {
-               int ret;
-               char secret_option[MAX_SECRET_OPTION_LEN];
-               ret = get_secret_option(saw_secret, name, secret_option, sizeof(secret_option));
-               if (ret < 0) {
-                       free(saw_name);
-                       return NULL;
-               } else {
-                       if (pos) {
-                               pos = safe_cat(&out, &out_len, pos, ",");
-                       }
-                       pos = safe_cat(&out, &out_len, pos, secret_option);
-               }
-       }
+       name_pos = safe_cat(&cmi->cmi_name, &name_len, name_pos, "client.");
+       name_pos = safe_cat(&cmi->cmi_name, &name_len, name_pos,
+                           name ? name : CEPH_AUTH_NAME_DEFAULT);
 
-       free(saw_name);
-       if (!out)
-               return strdup(EMPTY_STRING);
-       return out;
+       if (!cmi->cmi_opts) {
+               cmi->cmi_opts = strdup(EMPTY_STRING);
+               if (!cmi->cmi_opts)
+                       return -ENOMEM;
+       }
+       return 0;
 }
 
 
@@ -279,19 +370,19 @@ static int parse_arguments(int argc, char *const *const argv,
                if (!strcmp("-h", argv[i]))
                        return 1;
                else if (!strcmp("-n", argv[i]))
-                       skip_mtab_flag = 1;
+                       skip_mtab_flag = true;
                else if (!strcmp("-v", argv[i]))
-                       verboseflag = 1;
+                       verboseflag = true;
                else if (!strcmp("-o", argv[i])) {
                        ++i;
                        if (i >= argc) {
-                               printf("Option -o requires an argument.\n\n");
+                               fprintf(stderr, "Option -o requires an argument.\n\n");
                                return -EINVAL;
                        }
                        *opts = argv[i];
                }
                else {
-                       printf("Can't understand option: '%s'\n\n", argv[i]);
+                       fprintf(stderr, "Can't understand option: '%s'\n\n", argv[i]);
                        return -EINVAL;
                }
        }
@@ -321,55 +412,115 @@ static void usage(const char *prog_name)
        printf("\n");
 }
 
+/*
+ * The structure itself lives on the stack, so don't free it. Just the
+ * pointers inside.
+ */
+static void ceph_mount_info_free(struct ceph_mount_info *cmi)
+{
+       free(cmi->cmi_opts);
+       free(cmi->cmi_name);
+       free(cmi->cmi_path);
+       free(cmi->cmi_mons);
+       free(cmi->cmi_conf);
+}
+
+static int finalize_options(struct ceph_mount_info *cmi)
+{
+       int pos;
+
+       if (cmi->cmi_secret[0] || is_kernel_secret(cmi->cmi_name)) {
+               int ret;
+               char secret_option[SECRET_OPTION_BUFSIZE];
+
+               ret = get_secret_option(cmi->cmi_secret, cmi->cmi_name,
+                                       secret_option, sizeof(secret_option));
+               if (ret < 0)
+                       return ret;
+
+               pos = strlen(cmi->cmi_opts);
+               if (pos)
+                       pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, ",");
+               pos = safe_cat(&cmi->cmi_opts, &cmi->cmi_opts_len, pos, secret_option);
+       }
+       return 0;
+}
+
 int main(int argc, char *argv[])
 {
        const char *src, *node, *opts;
        char *rsrc = NULL;
-       char *popts = NULL;
-       int flags = 0;
-       int retval = 0;
+       int retval;
+       struct ceph_mount_info cmi = { 0 };
 
        retval = parse_arguments(argc, argv, &src, &node, &opts);
        if (retval) {
                usage(argv[0]);
-               exit((retval > 0) ? EXIT_SUCCESS : EXIT_FAILURE);
+               retval = (retval > 0) ? 0 : EX_USAGE;
+               goto out;
        }
 
-       rsrc = mount_resolve_src(src);
+       retval = parse_options(opts, &cmi);
+       if (retval) {
+               fprintf(stderr, "failed to parse ceph_options: %d\n", retval);
+               retval = EX_USAGE;
+               goto out;
+       }
+
+       retval = parse_src(src, &cmi);
+       if (retval) {
+               fprintf(stderr, "unable to parse mount source: %d\n", retval);
+               retval = EX_USAGE;
+               goto out;
+       }
+
+       /* We don't care if this errors out, since this is best-effort */
+       fetch_config_info(&cmi);
+
+       if (!cmi.cmi_mons) {
+               fprintf(stderr, "unable to determine mon addresses\n");
+               retval = EX_USAGE;
+               goto out;
+       }
+
+       rsrc = finalize_src(&cmi);
        if (!rsrc) {
-               printf("failed to resolve source\n");
-               exit(1);
+               fprintf(stderr, "failed to resolve source\n");
+               retval = EX_USAGE;
+               goto out;
        }
 
+       /* Ensure the ceph key_type is available */
        modprobe();
 
-       popts = parse_options(opts, &flags);
-       if (!popts) {
-               printf("failed to parse ceph_options\n");
-               exit(1);
+       retval = finalize_options(&cmi);
+       if (retval) {
+               fprintf(stderr, "couldn't finalize options: %d\n", retval);
+               retval = EX_USAGE;
+               goto out;
        }
 
        block_signals(SIG_BLOCK);
 
-       if (mount(rsrc, node, "ceph", flags, popts)) {
-               retval = errno;
+       if (mount(rsrc, node, "ceph", cmi.cmi_flags, cmi.cmi_opts)) {
+               retval = EX_FAIL;
                switch (errno) {
                case ENODEV:
-                       printf("mount error: ceph filesystem not supported by the system\n");
+                       fprintf(stderr, "mount error: ceph filesystem not supported by the system\n");
                        break;
                default:
-                       printf("mount error %d = %s\n",errno,strerror(errno));
+                       fprintf(stderr, "mount error %d = %s\n",errno,strerror(errno));
                }
        } else {
                if (!skip_mtab_flag) {
-                       update_mtab_entry(rsrc, node, "ceph", popts, flags, 0, 0);
+                       update_mtab_entry(rsrc, node, "ceph", cmi.cmi_opts, cmi.cmi_flags, 0, 0);
                }
        }
 
        block_signals(SIG_UNBLOCK);
-
-       free(popts);
+out:
+       ceph_mount_info_free(&cmi);
        free(rsrc);
-       exit(retval);
+       return retval;
 }
 
diff --git a/ceph/src/mount/mount.ceph.h b/ceph/src/mount/mount.ceph.h
new file mode 100644 (file)
index 0000000..c563597
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _SRC_MOUNT_MOUNT_CEPH_H
+#define _SRC_MOUNT_MOUNT_CEPH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * See class CryptoKey
+ *
+ * 2 (for the type of secret) +
+ * 8 (for the timestamp) +
+ * 2 (for the length of secret) +
+ * 16 (for an AES-128 key)
+ */
+#define MAX_RAW_SECRET_LEN (2 + 8 + 2 + 16)
+
+/* Max length of base64 encoded secret. 4/3 original size (rounded up) */
+#define MAX_SECRET_LEN ((MAX_RAW_SECRET_LEN + (3 - 1)) * 4 / 3)
+
+/* Max Including null terminator */
+#define SECRET_BUFSIZE (MAX_SECRET_LEN + 1)
+
+/* Buffer size for secret= option */
+#define SECRET_OPTION_BUFSIZE (sizeof("secret=") + MAX_SECRET_LEN + 1)
+
+/* 2k should be enough for anyone? */
+#define MON_LIST_BUFSIZE       2048
+
+void mount_ceph_debug(const char *fmt, ...);
+
+struct ceph_config_info {
+       char            cci_secret[SECRET_BUFSIZE];     // auth secret
+       char            cci_mons[MON_LIST_BUFSIZE];     // monitor addrs
+};
+
+void mount_ceph_get_config_info(const char *config_file, const char *name,
+                               struct ceph_config_info *cci);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRC_MOUNT_MOUNT_CEPH_H */
index 1911d31e7e28746a8e0249a0920b80ed726301a4..06771d0de5b8b593e7bf0bab4c136cf210405f09 100644 (file)
@@ -1927,6 +1927,9 @@ CtPtr ProtocolV1::handle_connect_message_2() {
         connection->policy.features_required |= CEPH_FEATURE_MSG_AUTH;
       }
     }
+    if (cct->_conf->cephx_service_require_version >= 2) {
+      connection->policy.features_required |= CEPH_FEATURE_CEPHX_V2;
+    }
   }
 
   uint64_t feat_missing =
index 5666b24c7a2946e804a2b9097005f6889d112206..4b03f5ebcf46ce25550372a847cd9f09590f3241 100644 (file)
@@ -502,8 +502,8 @@ ssize_t ProtocolV2::write_message(Message *m, bool more) {
   ceph_msg_header2 header2{header.seq,        header.tid,
                            header.type,       header.priority,
                            header.version,
-                           0,                 header.data_off,
-                           ack_seq,
+                           init_le32(0),      header.data_off,
+                           init_le64(ack_seq),
                            footer.flags,      header.compat_version,
                            header.reserved};
 
@@ -1385,15 +1385,16 @@ CtPtr ProtocolV2::handle_message() {
                          current_header.type,
                          current_header.priority,
                          current_header.version,
-                         msg_frame.front_len(),
-                         msg_frame.middle_len(),
-                         msg_frame.data_len(),
+                         init_le32(msg_frame.front_len()),
+                         init_le32(msg_frame.middle_len()),
+                         init_le32(msg_frame.data_len()),
                          current_header.data_off,
                          peer_name,
                          current_header.compat_version,
                          current_header.reserved,
-                         0};
-  ceph_msg_footer footer{0, 0, 0, 0, current_header.flags};
+                         init_le32(0)};
+  ceph_msg_footer footer{init_le32(0), init_le32(0),
+                        init_le32(0), init_le64(0), current_header.flags};
 
   Message *message = decode_message(cct, 0, header, footer,
       msg_frame.front(),
index 9975b74aa9fcac1dd739224fd3326f19fd4b5aa2..b08943c5e5cc69cab5b696aba73adaf439d6217b 100644 (file)
@@ -62,8 +62,8 @@ struct segment_t {
 
   static constexpr __le16 DEFAULT_ALIGNMENT = sizeof(void *);
 
-  __le32 length;
-  __le16 alignment;
+  ceph_le32 length;
+  ceph_le16 alignment;
 } __attribute__((packed));
 
 struct SegmentIndex {
@@ -102,7 +102,7 @@ struct preamble_block_t {
   __u8 _reserved[2];
 
   // CRC32 for this single preamble block.
-  __le32 crc;
+  ceph_le32 crc;
 } __attribute__((packed));
 static_assert(sizeof(preamble_block_t) % CRYPTO_BLOCK_SIZE == 0);
 static_assert(std::is_standard_layout<preamble_block_t>::value);
@@ -128,7 +128,7 @@ static_assert(std::is_standard_layout<preamble_block_t>::value);
 // frame abortion facility.
 struct epilogue_plain_block_t {
   __u8 late_flags;
-  std::array<__le32, MAX_NUM_SEGMENTS> crc_values;
+  std::array<ceph_le32, MAX_NUM_SEGMENTS> crc_values;
 } __attribute__((packed));
 static_assert(std::is_standard_layout<epilogue_plain_block_t>::value);
 
index b6952ca498b703eb727595df78183898d2315597..74d5ee30f59491d03d06520122e722079f3e9319 100644 (file)
@@ -154,8 +154,8 @@ namespace std {
 
 // define a wire format for sockaddr that matches Linux's.
 struct ceph_sockaddr_storage {
-  __le16 ss_family;
-  __u8 __ss_padding[128 - sizeof(__le16)];
+  ceph_le16 ss_family;
+  __u8 __ss_padding[128 - sizeof(ceph_le16)];
 
   void encode(bufferlist& bl) const {
     struct ceph_sockaddr_storage ss = *this;
@@ -488,16 +488,16 @@ struct entity_addr_t {
     }
     encode(nonce, bl);
     __u32 elen = get_sockaddr_len();
+#if (__FreeBSD__) || defined(__APPLE__)
+      elen -= sizeof(u.sa.sa_len);
+#endif
     encode(elen, bl);
     if (elen) {
-#if (__FreeBSD__) || defined(__APPLE__)
-      __le16 ss_family = u.sa.sa_family;
+      uint16_t ss_family = u.sa.sa_family;
+
       encode(ss_family, bl);
-      bl.append(u.sa.sa_data,
-               elen - sizeof(u.sa.sa_len) - sizeof(u.sa.sa_family));
-#else
-      bl.append((char*)get_sockaddr(), elen);
-#endif
+      elen -= sizeof(u.sa.sa_family);
+      bl.append(u.sa.sa_data, elen);
     }
     ENCODE_FINISH(bl);
   }
@@ -519,7 +519,8 @@ struct entity_addr_t {
     if (elen) {
 #if defined(__FreeBSD__) || defined(__APPLE__)
       u.sa.sa_len = 0;
-      __le16 ss_family;
+#endif
+      uint16_t ss_family;
       if (elen < sizeof(ss_family)) {
        throw buffer::malformed_input("elen smaller than family len");
       }
@@ -530,17 +531,6 @@ struct entity_addr_t {
        throw buffer::malformed_input("elen exceeds sockaddr len");
       }
       bl.copy(elen, u.sa.sa_data);
-#else
-      if (elen < sizeof(u.sa.sa_family)) {
-       throw buffer::malformed_input("elen smaller than family len");
-      }
-      bl.copy(sizeof(u.sa.sa_family), (char*)&u.sa.sa_family);
-      if (elen > get_sockaddr_len()) {
-       throw buffer::malformed_input("elen exceeds sockaddr len");
-      }
-      elen -= sizeof(u.sa.sa_family);
-      bl.copy(elen, u.sa.sa_data);
-#endif
     }
     DECODE_FINISH(bl);
   }
index 03011df5de1f70bec2b679319f49b29eff02a8b6..fd44dc4e53726aa4a81fd185f281f3762e4eebfd 100644 (file)
@@ -1606,6 +1606,7 @@ void Pipe::was_session_reset()
   randomize_out_seq();
 
   in_seq = 0;
+  in_seq_acked = 0;
   connect_seq = 0;
 }
 
index 99968fd9fb893a8d695713c5093848ed96820b7b..2f0c84902b665846a40cb1310c33c0a617e58746 100644 (file)
@@ -33,7 +33,7 @@ class XioMessenger;
 class XioMsgCnt
 {
 public:
-  __le32 msg_cnt;
+  ceph_le32 msg_cnt;
   buffer::list bl;
 public:
   explicit XioMsgCnt(buffer::ptr p)
@@ -48,8 +48,8 @@ class XioMsgHdr
 {
 public:
   char tag;
-  __le32 msg_cnt;
-  __le32 peer_type;
+  ceph_le32 msg_cnt;
+  ceph_le32 peer_type;
   entity_addr_t addr; /* XXX hack! */
   ceph_msg_header* hdr;
   ceph_msg_footer* ftr;
@@ -57,7 +57,7 @@ public:
   buffer::list bl;
 public:
   XioMsgHdr(ceph_msg_header& _hdr, ceph_msg_footer& _ftr, uint64_t _features)
-    : tag(CEPH_MSGR_TAG_MSG), msg_cnt(0), hdr(&_hdr), ftr(&_ftr),
+    : tag(CEPH_MSGR_TAG_MSG), msg_cnt(init_le32(0)), hdr(&_hdr), ftr(&_ftr),
       features(_features)
     { }
 
index 8f5d6b70791a527580234cacdc482b62465d1969..e65d7393f7ae5907898327aa97e5fcef9cab5ed0 100644 (file)
@@ -71,10 +71,9 @@ if(WITH_SPDK)
     bluestore/NVMEDevice.cc)
 endif()
 
-add_library(os STATIC ${libos_srcs}
-  $<TARGET_OBJECTS:kv_objs>)
+add_library(os STATIC ${libos_srcs})
 
-target_link_libraries(os heap_profiler)
+target_link_libraries(os heap_profiler kv)
 
 if(WITH_BLUEFS)
   add_library(bluefs SHARED 
index d9b9cf6d1ab65fed44fdccb171a1afe9edace3ac..f9c6073dab60a4035959ae3ddda15caaf136953d 100644 (file)
@@ -129,7 +129,7 @@ int ObjectStore::write_meta(const std::string& key,
   string v = value;
   v += "\n";
   int r = safe_write_file(path.c_str(), key.c_str(),
-                         v.c_str(), v.length());
+                         v.c_str(), v.length(), 0600);
   if (r < 0)
     return r;
   return 0;
index 6096b494bd6f4d1ca58088c2df1ed1d7719ecb50..0349412eac6e9a04bb3e9f660337d4f53fd91c50 100644 (file)
@@ -359,42 +359,42 @@ public:
     };
 
     struct Op {
-      __le32 op;
-      __le32 cid;
-      __le32 oid;
-      __le64 off;
-      __le64 len;
-      __le32 dest_cid;
-      __le32 dest_oid;                  //OP_CLONE, OP_CLONERANGE
-      __le64 dest_off;                  //OP_CLONERANGE
+      ceph_le32 op;
+      ceph_le32 cid;
+      ceph_le32 oid;
+      ceph_le64 off;
+      ceph_le64 len;
+      ceph_le32 dest_cid;
+      ceph_le32 dest_oid;               //OP_CLONE, OP_CLONERANGE
+      ceph_le64 dest_off;               //OP_CLONERANGE
       union {
        struct {
-         __le32 hint_type;             //OP_COLL_HINT
+         ceph_le32 hint_type;          //OP_COLL_HINT
        };
        struct {
-         __le32 alloc_hint_flags;      //OP_SETALLOCHINT
+         ceph_le32 alloc_hint_flags;   //OP_SETALLOCHINT
        };
       };
-      __le64 expected_object_size;      //OP_SETALLOCHINT
-      __le64 expected_write_size;       //OP_SETALLOCHINT
-      __le32 split_bits;                //OP_SPLIT_COLLECTION2,OP_COLL_SET_BITS,
+      ceph_le64 expected_object_size;   //OP_SETALLOCHINT
+      ceph_le64 expected_write_size;    //OP_SETALLOCHINT
+      ceph_le32 split_bits;             //OP_SPLIT_COLLECTION2,OP_COLL_SET_BITS,
                                         //OP_MKCOLL
-      __le32 split_rem;                 //OP_SPLIT_COLLECTION2
+      ceph_le32 split_rem;              //OP_SPLIT_COLLECTION2
     } __attribute__ ((packed)) ;
 
     struct TransactionData {
-      __le64 ops;
-      __le32 largest_data_len;
-      __le32 largest_data_off;
-      __le32 largest_data_off_in_data_bl;
-      __le32 fadvise_flags;
+      ceph_le64 ops;
+      ceph_le32 largest_data_len;
+      ceph_le32 largest_data_off;
+      ceph_le32 largest_data_off_in_data_bl;
+      ceph_le32 fadvise_flags;
 
       TransactionData() noexcept :
-        ops(0),
-        largest_data_len(0),
-        largest_data_off(0),
-        largest_data_off_in_data_bl(0),
-       fadvise_flags(0) { }
+        ops(init_le64(0)),
+        largest_data_len(init_le32(0)),
+        largest_data_off(init_le32(0)),
+        largest_data_off_in_data_bl(init_le32(0)),
+       fadvise_flags(init_le32(0)) { }
 
       // override default move operations to reset default values
       TransactionData(TransactionData&& other) noexcept :
@@ -709,13 +709,13 @@ public:
     /// Append the operations of the parameter to this Transaction. Those operations are removed from the parameter Transaction
     void append(Transaction& other) {
 
-      data.ops += other.data.ops;
+      data.ops = data.ops + other.data.ops;
       if (other.data.largest_data_len > data.largest_data_len) {
        data.largest_data_len = other.data.largest_data_len;
        data.largest_data_off = other.data.largest_data_off;
        data.largest_data_off_in_data_bl = data_bl.length() + other.data.largest_data_off_in_data_bl;
       }
-      data.fadvise_flags |= other.data.fadvise_flags;
+      data.fadvise_flags = data.fadvise_flags | other.data.fadvise_flags;
       on_applied.splice(on_applied.end(), other.on_applied);
       on_commit.splice(on_commit.end(), other.on_commit);
       on_applied_sync.splice(on_applied_sync.end(), other.on_applied_sync);
@@ -990,7 +990,7 @@ public:
     void nop() {
       Op* _op = _get_next_op();
       _op->op = OP_NOP;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /**
      * touch
@@ -1003,7 +1003,7 @@ public:
       _op->op = OP_TOUCH;
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /**
      * Write data to an offset within an object. If the object is too
@@ -1036,7 +1036,7 @@ public:
        data.largest_data_off = off;
        data.largest_data_off_in_data_bl = orig_len + sizeof(__u32);  // we are about to
       }
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /**
      * zero out the indicated byte range within an object. Some
@@ -1055,7 +1055,7 @@ public:
       _op->oid = _get_object_id(oid);
       _op->off = off;
       _op->len = len;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Discard all data in the object beyond the specified size.
     void truncate(const coll_t& cid, const ghobject_t& oid, uint64_t off) {
@@ -1064,7 +1064,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       _op->off = off;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Remove an object. All four parts of the object are removed.
     void remove(const coll_t& cid, const ghobject_t& oid) {
@@ -1072,7 +1072,7 @@ public:
       _op->op = OP_REMOVE;
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Set an xattr of an object
     void setattr(const coll_t& cid, const ghobject_t& oid, const char* name, bufferlist& val) {
@@ -1088,7 +1088,7 @@ public:
       _op->oid = _get_object_id(oid);
       encode(s, data_bl);
       encode(val, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Set multiple xattrs of an object
     void setattrs(const coll_t& cid, const ghobject_t& oid, const map<string,bufferptr>& attrset) {
@@ -1098,7 +1098,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(attrset, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Set multiple xattrs of an object
     void setattrs(const coll_t& cid, const ghobject_t& oid, const map<string,bufferlist>& attrset) {
@@ -1108,7 +1108,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(attrset, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// remove an xattr from an object
     void rmattr(const coll_t& cid, const ghobject_t& oid, const char *name) {
@@ -1123,7 +1123,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(s, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// remove all xattrs from an object
     void rmattrs(const coll_t& cid, const ghobject_t& oid) {
@@ -1131,7 +1131,7 @@ public:
       _op->op = OP_RMATTRS;
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /**
      * Clone an object into another object.
@@ -1151,7 +1151,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       _op->dest_oid = _get_object_id(noid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /**
      * Clone a byte range from one object to another.
@@ -1176,7 +1176,7 @@ public:
       _op->off = srcoff;
       _op->len = srclen;
       _op->dest_off = dstoff;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Create the collection
@@ -1185,7 +1185,7 @@ public:
       _op->op = OP_MKCOLL;
       _op->cid = _get_coll_id(cid);
       _op->split_bits = bits;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /**
@@ -1203,7 +1203,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->hint_type = type;
       encode(hint, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// remove the collection, the collection must be empty
@@ -1211,7 +1211,7 @@ public:
       Op* _op = _get_next_op();
       _op->op = OP_RMCOLL;
       _op->cid = _get_coll_id(cid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     void collection_move(const coll_t& cid, const coll_t &oldcid, const ghobject_t& oid)
       __attribute__ ((deprecated)) {
@@ -1222,13 +1222,13 @@ public:
        _op->cid = _get_coll_id(oldcid);
        _op->oid = _get_object_id(oid);
        _op->dest_cid = _get_coll_id(cid);
-       data.ops++;
+       data.ops = data.ops + 1;
 
        _op = _get_next_op();
        _op->op = OP_COLL_REMOVE;
        _op->cid = _get_coll_id(oldcid);
        _op->oid = _get_object_id(oid);
-       data.ops++;
+       data.ops = data.ops + 1;
       }
     void collection_move_rename(const coll_t& oldcid, const ghobject_t& oldoid,
                                const coll_t &cid, const ghobject_t& oid) {
@@ -1238,7 +1238,7 @@ public:
       _op->oid = _get_object_id(oldoid);
       _op->dest_cid = _get_coll_id(cid);
       _op->dest_oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     void try_rename(const coll_t &cid, const ghobject_t& oldoid,
                     const ghobject_t& oid) {
@@ -1247,7 +1247,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oldoid);
       _op->dest_oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Remove omap from oid
@@ -1259,7 +1259,7 @@ public:
       _op->op = OP_OMAP_CLEAR;
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
     /// Set keys on oid omap.  Replaces duplicate keys.
     void omap_setkeys(
@@ -1273,7 +1273,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(attrset, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Set keys on an oid omap (bufferlist variant).
@@ -1287,7 +1287,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       data_bl.append(attrset_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Remove keys from oid omap
@@ -1302,7 +1302,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(keys, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Remove keys from oid omap
@@ -1316,7 +1316,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       data_bl.append(keys_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Remove key range from oid omap
@@ -1333,7 +1333,7 @@ public:
        _op->oid = _get_object_id(oid);
        encode(first, data_bl);
        encode(last, data_bl);
-       data.ops++;
+       data.ops = data.ops + 1;
       }
 
     /// Set omap header
@@ -1348,7 +1348,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->oid = _get_object_id(oid);
       encode(bl, data_bl);
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Split collection based on given prefixes, objects matching the specified bits/rem are
@@ -1364,7 +1364,7 @@ public:
       _op->dest_cid = _get_coll_id(destination);
       _op->split_bits = bits;
       _op->split_rem = rem;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Merge collection into another.
@@ -1377,7 +1377,7 @@ public:
       _op->cid = _get_coll_id(cid);
       _op->dest_cid = _get_coll_id(destination);
       _op->split_bits = bits;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     void collection_set_bits(
@@ -1387,7 +1387,7 @@ public:
       _op->op = OP_COLL_SET_BITS;
       _op->cid = _get_coll_id(cid);
       _op->split_bits = bits;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     /// Set allocation hint for an object
@@ -1406,7 +1406,7 @@ public:
       _op->expected_object_size = expected_object_size;
       _op->expected_write_size = expected_write_size;
       _op->alloc_hint_flags = flags;
-      data.ops++;
+      data.ops = data.ops + 1;
     }
 
     void encode(bufferlist& bl) const {
@@ -1487,6 +1487,9 @@ public:
   virtual int repair(bool deep) {
     return -EOPNOTSUPP;
   }
+  virtual int quick_fix() {
+    return -EOPNOTSUPP;
+  }
 
   virtual void set_cache_shards(unsigned num) { }
 
index b6026353165cba9d1250aa85cff1dc65ca634603..748589fac22d9aa55326deea51ac65941ed3c9c9 100644 (file)
 #include "StupidAllocator.h"
 #include "BitmapAllocator.h"
 #include "common/debug.h"
-
+#include "common/admin_socket.h"
 #define dout_subsys ceph_subsys_bluestore
 
+class Allocator::SocketHook : public AdminSocketHook {
+  Allocator *alloc;
+
+  std::string name;
+public:
+  explicit SocketHook(Allocator *alloc, const std::string& _name) : alloc(alloc), name(_name)
+  {
+    AdminSocket *admin_socket = g_ceph_context->get_admin_socket();
+    if (name.empty()) {
+      name = to_string((uintptr_t)this);
+    }
+    if (admin_socket) {
+      int r = admin_socket->register_command(("bluestore allocator dump " + name).c_str(),
+                                           ("bluestore allocator dump " + name).c_str(),
+                                           this,
+                                           "dump allocator free regions");
+      if (r != 0)
+        alloc = nullptr; //some collision, disable
+      if (alloc) {
+        r = admin_socket->register_command(("bluestore allocator score " + name).c_str(),
+                                           ("bluestore allocator score " + name).c_str(),
+                                           this,
+                                           "give score on allocator fragmentation (0-no fragmentation, 1-absolute fragmentation)");
+        ceph_assert(r == 0);
+      }
+    }
+  }
+  ~SocketHook()
+  {
+    AdminSocket *admin_socket = g_ceph_context->get_admin_socket();
+    if (admin_socket && alloc) {
+      int r = admin_socket->unregister_command(("bluestore allocator dump " + name).c_str());
+      ceph_assert(r == 0);
+      r = admin_socket->unregister_command(("bluestore allocator score " + name).c_str());
+      ceph_assert(r == 0);
+    }
+  }
+
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+            std::string_view format, bufferlist& out) override {
+    stringstream ss;
+    bool r = true;
+    if (command == "bluestore allocator dump " + name) {
+      Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
+      f->open_array_section("free_regions");
+      auto iterated_allocation = [&](size_t off, size_t len) {
+        ceph_assert(len > 0);
+        f->open_object_section("free");
+        char off_hex[30];
+        char len_hex[30];
+        snprintf(off_hex, sizeof(off_hex) - 1, "0x%lx", off);
+        snprintf(len_hex, sizeof(len_hex) - 1, "0x%lx", len);
+        f->dump_string("offset", off_hex);
+        f->dump_string("length", len_hex);
+        f->close_section();
+      };
+      alloc->dump(iterated_allocation);
+
+
+      f->close_section();
+      f->flush(ss);
+    } else if (command == "bluestore allocator score " + name) {
+      Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
+      f->open_object_section("fragmentation_score");
+      f->dump_float("fragmentation_rating", alloc->get_fragmentation_score());
+      f->close_section();
+      f->flush(ss);
+      delete f;
+    } else {
+      ss << "Invalid command" << std::endl;
+      r = false;
+    }
+    out.append(ss);
+    return r;
+  }
+
+};
+Allocator::Allocator(const std::string& name)
+{
+  asok_hook = new SocketHook(this, name);
+}
+
+
+Allocator::~Allocator()
+{
+  delete asok_hook;
+}
+
+
 Allocator *Allocator::create(CephContext* cct, string type,
-                             int64_t size, int64_t block_size)
+                             int64_t size, int64_t block_size, const std::string& name)
 {
+  Allocator* alloc = nullptr;
   if (type == "stupid") {
-    return new StupidAllocator(cct);
+    alloc = new StupidAllocator(cct, name);
   } else if (type == "bitmap") {
-    return new BitmapAllocator(cct, size, block_size);
+    alloc = new BitmapAllocator(cct, size, block_size, name);
   }
-  lderr(cct) << "Allocator::" << __func__ << " unknown alloc type "
+  if (alloc == nullptr) {
+    lderr(cct) << "Allocator::" << __func__ << " unknown alloc type "
             << type << dendl;
-  return nullptr;
+  }
+  return alloc;
 }
 
 void Allocator::release(const PExtentVector& release_vec)
@@ -29,3 +121,55 @@ void Allocator::release(const PExtentVector& release_vec)
   }
   release(release_set);
 }
+
+/**
+ * Gives fragmentation a numeric value.
+ *
+ * Following algorithm applies value to each existing free unallocated block.
+ * Value of single block is a multiply of size and per-byte-value.
+ * Per-byte-value is greater for larger blocks.
+ * Assume block size X has value per-byte p; then block size 2*X will have per-byte value 1.1*p.
+ *
+ * This could be expressed in logarithms, but for speed this is interpolated inside ranges.
+ * [1]  [2..3] [4..7] [8..15] ...
+ * ^    ^      ^      ^
+ * 1.1  1.1^2  1.1^3  1.1^4 ...
+ *
+ * Final score is obtained by proportion between score that would have been obtained
+ * in condition of absolute fragmentation and score in no fragmentation at all.
+ */
+double Allocator::get_fragmentation_score()
+{
+  // this value represents how much worth is 2X bytes in one chunk then in X + X bytes
+  static const double double_size_worth = 1.1 ;
+  std::vector<double> scales{1};
+  double score_sum = 0;
+  size_t sum = 0;
+
+  auto get_score = [&](size_t v) -> double {
+    size_t sc = sizeof(v) * 8 - clz(v) - 1; //assign to grade depending on log2(len)
+    while (scales.size() <= sc + 1) {
+      //unlikely expand scales vector
+      scales.push_back(scales[scales.size() - 1] * double_size_worth);
+    }
+
+    size_t sc_shifted = size_t(1) << sc;
+    double x = double(v - sc_shifted) / sc_shifted; //x is <0,1) in its scale grade
+    // linear extrapolation in its scale grade
+    double score = (sc_shifted    ) * scales[sc]   * (1-x) +
+                   (sc_shifted * 2) * scales[sc+1] * x;
+    return score;
+  };
+
+  auto iterated_allocation = [&](size_t off, size_t len) {
+    ceph_assert(len > 0);
+    score_sum += get_score(len);
+    sum += len;
+  };
+  dump(iterated_allocation);
+
+
+  double ideal = get_score(sum);
+  double terrible = sum * get_score(1);
+  return (ideal - score_sum) / (ideal - terrible);
+}
index 763e6f25d6e4ce7a064187d3d31856e469ad3363..61299bf58767ab62360b8f2dac9f09739bbc0975 100644 (file)
 #include <ostream>
 #include "include/ceph_assert.h"
 #include "os/bluestore/bluestore_types.h"
+#include <functional>
 
 class Allocator {
 public:
-  virtual ~Allocator() {}
+  explicit Allocator(const std::string& name);
+  virtual ~Allocator();
 
   /*
    * Allocate required number of blocks in n number of extents.
@@ -44,6 +46,7 @@ public:
   void release(const PExtentVector& release_set);
 
   virtual void dump() = 0;
+  virtual void dump(std::function<void(uint64_t offset, uint64_t length)> notify) = 0;
 
   virtual void init_add_free(uint64_t offset, uint64_t length) = 0;
   virtual void init_rm_free(uint64_t offset, uint64_t length) = 0;
@@ -53,10 +56,14 @@ public:
   {
     return 0.0;
   }
-
+  virtual double get_fragmentation_score();
   virtual void shutdown() = 0;
+
   static Allocator *create(CephContext* cct, string type, int64_t size,
-                          int64_t block_size);
+                          int64_t block_size, const std::string& name = "");
+private:
+  class SocketHook;
+  SocketHook* asok_hook = nullptr;
 };
 
 #endif
index 7c0d86a86bea291b1154d77fc1313776f2ccfe9c..c24a333aae3168ef20200bf17b154851f2fb54a9 100755 (executable)
@@ -10,7 +10,9 @@
 
 BitmapAllocator::BitmapAllocator(CephContext* _cct,
                                         int64_t capacity,
-                                        int64_t alloc_unit) :
+                                        int64_t alloc_unit,
+                                        const std::string& name) :
+    Allocator(name),
     cct(_cct)
 {
   ldout(cct, 10) << __func__ << " 0x" << std::hex << capacity << "/"
@@ -100,3 +102,13 @@ void BitmapAllocator::dump()
     ++it;
   }
 }
+
+void BitmapAllocator::dump(std::function<void(uint64_t offset, uint64_t length)> notify)
+{
+  size_t alloc_size = get_min_alloc_size();
+  auto multiply_by_alloc_size = [alloc_size, notify](size_t off, size_t len) {
+    notify(off * alloc_size, len * alloc_size);
+  };
+  std::lock_guard lck(lock);
+  l1.dump(multiply_by_alloc_size);
+}
index 223c21dfbc5e87a64bb10d9fd015e704fa368ebf..ed7f122775fbb486e1a9531aa86b5dff6adf9a95 100755 (executable)
@@ -17,7 +17,7 @@ class BitmapAllocator : public Allocator,
   CephContext* cct;
 
 public:
-  BitmapAllocator(CephContext* _cct, int64_t capacity, int64_t alloc_unit);
+  BitmapAllocator(CephContext* _cct, int64_t capacity, int64_t alloc_unit, const std::string& name);
   ~BitmapAllocator() override
   {
   }
@@ -36,6 +36,7 @@ public:
   }
 
   void dump() override;
+  void dump(std::function<void(uint64_t offset, uint64_t length)> notify) override;
   double get_fragmentation(uint64_t) override
   {
     return _get_fragmentation();
index a23b88312d61ab0d88d5e6779489ab1f1a209a79..0d9680c43de439269dde95160ef8ae5e641d50a1 100644 (file)
@@ -10,6 +10,7 @@
 #include "BlockDevice.h"
 #include "Allocator.h"
 #include "include/ceph_assert.h"
+#include "common/admin_socket.h"
 
 #define dout_context cct
 #define dout_subsys ceph_subsys_bluefs
@@ -42,6 +43,78 @@ static void slow_discard_cb(void *priv, void* priv2) {
   bluefs->handle_discard(BlueFS::BDEV_SLOW, *tmp);
 }
 
+class BlueFS::SocketHook : public AdminSocketHook {
+  BlueFS* bluefs;
+public:
+  static BlueFS::SocketHook* create(BlueFS* bluefs)
+  {
+    BlueFS::SocketHook* hook = nullptr;
+    AdminSocket* admin_socket = bluefs->cct->get_admin_socket();
+    if (admin_socket) {
+      hook = new BlueFS::SocketHook(bluefs);
+      int r = admin_socket->register_command("bluestore bluefs available",
+                                             "bluestore bluefs available "
+                                             "name=alloc_size,type=CephInt,req=false",
+                                             hook,
+                                             "Report available space for bluefs. "
+                                             "If alloc_size set, make simulation.");
+      if (r != 0) {
+        ldout(bluefs->cct, 1) << __func__ << " cannot register SocketHook" << dendl;
+        delete hook;
+        hook = nullptr;
+      }
+    }
+    return hook;
+  }
+
+  ~SocketHook() {
+    AdminSocket* admin_socket = bluefs->cct->get_admin_socket();
+    int r = admin_socket->unregister_command("bluestore bluefs available");
+    ceph_assert(r == 0);
+  }
+private:
+  SocketHook(BlueFS* bluefs) :
+    bluefs(bluefs) {}
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+              std::string_view format, bufferlist& out) override {
+      stringstream ss;
+      bool r = true;
+      if (command == "bluestore bluefs available") {
+        int64_t alloc_size = 0;
+        cmd_getval(bluefs->cct, cmdmap, "alloc_size", alloc_size);
+        if ((alloc_size & (alloc_size - 1)) != 0) {
+          ss << "Invalid allocation size:'" << alloc_size << std::endl;
+        }
+        if (alloc_size == 0)
+          alloc_size = bluefs->cct->_conf->bluefs_alloc_size;
+        Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
+        f->open_object_section("bluefs_available_space");
+        for (unsigned dev = BDEV_WAL; dev <= BDEV_SLOW; dev++) {
+          if (bluefs->bdev[dev]) {
+            f->open_object_section("dev");
+            f->dump_string("device", bluefs->get_device_name(dev));
+            ceph_assert(bluefs->alloc[dev]);
+            f->dump_int("free", bluefs->alloc[dev]->get_free());
+            f->close_section();
+          }
+        }
+        size_t extra_space = 0;
+        if (bluefs->slow_dev_expander) {
+          extra_space = bluefs->slow_dev_expander->available_freespace(alloc_size);
+        }
+        f->dump_int("available_from_bluestore", extra_space);
+        f->close_section();
+        f->flush(ss);
+        delete f;
+      } else {
+        ss << "Invalid command" << std::endl;
+        r = false;
+      }
+      out.append(ss);
+      return r;
+    }
+};
+
 BlueFS::BlueFS(CephContext* cct)
   : cct(cct),
     bdev(MAX_BDEV),
@@ -51,10 +124,12 @@ BlueFS::BlueFS(CephContext* cct)
   discard_cb[BDEV_WAL] = wal_discard_cb;
   discard_cb[BDEV_DB] = db_discard_cb;
   discard_cb[BDEV_SLOW] = slow_discard_cb;
+  asok_hook = SocketHook::create(this);
 }
 
 BlueFS::~BlueFS()
 {
+  delete asok_hook;
   for (auto p : ioc) {
     if (p)
       p->aio_wait();
@@ -257,8 +332,7 @@ int BlueFS::reclaim_blocks(unsigned id, uint64_t want,
   ceph_assert(id < alloc.size());
   ceph_assert(alloc[id]);
 
-  int64_t got = alloc[id]->allocate(want, cct->_conf->bluefs_alloc_size, 0,
-                                   extents);
+  int64_t got = alloc[id]->allocate(want, alloc_size[id], 0, extents);
   ceph_assert(got != 0);
   if (got < 0) {
     derr << __func__ << " failed to allocate space to return to bluestore"
@@ -435,15 +509,44 @@ void BlueFS::_init_alloc()
 {
   dout(20) << __func__ << dendl;
   alloc.resize(MAX_BDEV);
+  alloc_size.resize(MAX_BDEV, 0);
   pending_release.resize(MAX_BDEV);
+
+  if (bdev[BDEV_WAL]) {
+    alloc_size[BDEV_WAL] = cct->_conf->bluefs_alloc_size;
+  }
+  if (bdev[BDEV_SLOW]) {
+    alloc_size[BDEV_DB] = cct->_conf->bluefs_alloc_size;
+    alloc_size[BDEV_SLOW] = cct->_conf->bluefs_shared_alloc_size;
+  } else {
+    alloc_size[BDEV_DB] = cct->_conf->bluefs_shared_alloc_size;
+  }
+  // new wal and db devices are never shared
+  if (bdev[BDEV_NEWWAL]) {
+    alloc_size[BDEV_NEWWAL] = cct->_conf->bluefs_alloc_size;
+  }
+  if (bdev[BDEV_NEWDB]) {
+    alloc_size[BDEV_NEWDB] = cct->_conf->bluefs_alloc_size;
+  }
+
   for (unsigned id = 0; id < bdev.size(); ++id) {
     if (!bdev[id]) {
       continue;
     }
     ceph_assert(bdev[id]->get_size());
+    std::string name = "bluefs-";
+    const char* devnames[] = {"wal","db","slow"};
+    if (id <= BDEV_SLOW)
+      name += devnames[id];
+    else
+      name += to_string(uintptr_t(this));
+    ceph_assert(alloc_size[id]);
+    dout(1) << __func__ << " id " << id
+            << " alloc_size 0x" << std::hex << alloc_size[id]
+            << " size 0x" << bdev[id]->get_size() << std::dec << dendl;
     alloc[id] = Allocator::create(cct, cct->_conf->bluefs_allocator,
                                  bdev[id]->get_size(),
-                                 cct->_conf->bluefs_alloc_size);
+                                 alloc_size[id], name);
     interval_set<uint64_t>& p = block_all[id];
     for (interval_set<uint64_t>::iterator q = p.begin(); q != p.end(); ++q) {
       alloc[id]->init_add_free(q.get_start(), q.get_len());
@@ -1044,6 +1147,8 @@ int BlueFS::device_migrate_to_existing(
   vector<byte> buf;
   bool buffered = cct->_conf->bluefs_buffered_io;
 
+  dout(10) << __func__ << " devs_source " << devs_source
+          << " dev_target " << dev_target << dendl;
   assert(dev_target < (int)MAX_BDEV);
 
   int flags = 0;
@@ -1064,71 +1169,90 @@ int BlueFS::device_migrate_to_existing(
     if (p.second->fnode.ino == 1) {
       continue;
     }
+    dout(10) << __func__ << " " << p.first << " " << p.second->fnode << dendl;
+
     auto& fnode_extents = p.second->fnode.extents;
 
+    bool rewrite = false;
     for (auto ext_it = fnode_extents.begin();
-      ext_it != p.second->fnode.extents.end();
-      ++ext_it) {
+        ext_it != p.second->fnode.extents.end();
+        ++ext_it) {
       if (ext_it->bdev != dev_target && devs_source.count(ext_it->bdev)) {
-       bluefs_extent_t old_ext = *ext_it;
-       PExtentVector extents;
-       auto l =
-         _allocate_without_fallback(dev_target, old_ext.length, &extents);
-       if (l == 0) {
-         buf.resize(old_ext.length);
-         int r = bdev[old_ext.bdev]->read_random(
-           old_ext.offset,
-           old_ext.length,
-           (char*)&buf.at(0),
-           buffered);
-         if (r != 0) {
-           derr << __func__ << " failed to read 0x" << std::hex
-             << old_ext.offset << "~" <<old_ext.length << std::dec
-             << " from " << (int)dev_target << dendl;
-           return -EIO;
-         }
+       rewrite = true;
+       break;
+      }
+    }
+    if (rewrite) {
+      dout(10) << __func__ << "  migrating" << dendl;
+
+      // read entire file
+      bufferlist bl;
+      for (auto old_ext : fnode_extents) {
+       buf.resize(old_ext.length);
+       int r = bdev[old_ext.bdev]->read_random(
+         old_ext.offset,
+         old_ext.length,
+         (char*)&buf.at(0),
+         buffered);
+       if (r != 0) {
+         derr << __func__ << " failed to read 0x" << std::hex
+              << old_ext.offset << "~" << old_ext.length << std::dec
+              << " from " << (int)dev_target << dendl;
+         return -EIO;
+       }
+       bl.append((char*)&buf[0], old_ext.length);
+      }
 
-         assert(extents.size() > 0);
-         uint64_t src_buf_pos = 0;
-         {
-           // overwrite existing extent
-           *ext_it=
-             bluefs_extent_t(dev_target_new, extents[0].offset, extents[0].length);
-           bufferlist bl;
-           bl.append((char*)&buf.at(src_buf_pos), extents[0].length);
-           int r = bdev[dev_target]->write(extents[0].offset, bl, buffered);
-           ceph_assert(r == 0);
-           src_buf_pos += extents[0].length;
-         }
-         // then insert more extents if needed
-         for( size_t i = 1; i < extents.size(); ++i) {
-           bufferlist bl;
-           bl.append((char*)&buf.at(src_buf_pos), extents[i].length);
-           ++ext_it;
-           ext_it = fnode_extents.emplace(ext_it, dev_target_new,
-             extents[i].offset, extents[i].length);
-           int r = bdev[dev_target]->write(extents[i].offset, bl, buffered);
-           ceph_assert(r == 0);
-           src_buf_pos += extents[i].length;
-         }
-         {
-           PExtentVector to_release;
-           to_release.emplace_back(old_ext.offset, old_ext.length);
-           alloc[old_ext.bdev]->release(to_release);
-         }
+      // write entire file
+      PExtentVector extents;
+      auto l = _allocate_without_fallback(dev_target, bl.length(), &extents);
+      if (l < 0) {
+       derr << __func__ << " unable to allocate len 0x" << std::hex
+            << bl.length() << std::dec << " from " << (int)dev_target
+            << ": " << cpp_strerror(l) << dendl;
+       return -ENOSPC;
+      }
 
-       } else {
-         derr << __func__ << " unable to allocate len 0x" << std::hex
-           << old_ext.length << std::dec << " from " << (int)dev_target
-           << dendl;
-         return -ENOSPC;
+      uint64_t off = 0;
+      for (auto& i : extents) {
+       bufferlist cur;
+       uint64_t cur_len = std::min<uint64_t>(i.length, bl.length() - off);
+       ceph_assert(cur_len > 0);
+       cur.substr_of(bl, off, cur_len);
+       int r = bdev[dev_target]->write(i.offset, cur, buffered);
+       ceph_assert(r == 0);
+       off += cur_len;
+      }
+
+      // release old extents
+      for (auto old_ext : fnode_extents) {
+       PExtentVector to_release;
+       to_release.emplace_back(old_ext.offset, old_ext.length);
+       alloc[old_ext.bdev]->release(to_release);
+      }
+
+      // update fnode
+      fnode_extents.clear();
+      for (auto& i : extents) {
+       fnode_extents.emplace_back(dev_target_new, i.offset, i.length);
+      }
+    } else {
+      for (auto ext_it = fnode_extents.begin();
+          ext_it != p.second->fnode.extents.end();
+          ++ext_it) {
+       if (dev_target != dev_target_new && ext_it->bdev == dev_target) {
+         dout(20) << __func__ << "  " << " ... adjusting extent 0x"
+                  << std::hex << ext_it->offset << std::dec
+                  << " bdev " << dev_target << " -> " << dev_target_new
+                  << dendl;
+         ext_it->bdev = dev_target_new;
        }
-      } else if (dev_target != dev_target_new && ext_it->bdev == dev_target) {
-       ext_it->bdev = dev_target_new;
       }
     }
     auto& prefer_bdev = p.second->fnode.prefer_bdev;
     if (prefer_bdev != dev_target && devs_source.count(prefer_bdev)) {
+      dout(20) << __func__ << "  " << " ... adjusting prefer_bdev "
+              << prefer_bdev << " -> " << dev_target_new << dendl;
       prefer_bdev = dev_target_new;
     }
   }
@@ -1172,6 +1296,8 @@ int BlueFS::device_migrate_to_new(
   vector<byte> buf;
   bool buffered = cct->_conf->bluefs_buffered_io;
 
+  dout(10) << __func__ << " devs_source " << devs_source
+          << " dev_target " << dev_target << dendl;
   assert(dev_target == (int)BDEV_NEWDB || (int)BDEV_NEWWAL);
 
   int flags = 0;
@@ -1187,71 +1313,78 @@ int BlueFS::device_migrate_to_new(
     if (p.second->fnode.ino == 1) {
       continue;
     }
+    dout(10) << __func__ << " " << p.first << " " << p.second->fnode << dendl;
+
     auto& fnode_extents = p.second->fnode.extents;
 
+    bool rewrite = false;
     for (auto ext_it = fnode_extents.begin();
-      ext_it != p.second->fnode.extents.end();
-      ++ext_it) {
+        ext_it != p.second->fnode.extents.end();
+        ++ext_it) {
       if (ext_it->bdev != dev_target && devs_source.count(ext_it->bdev)) {
-       bluefs_extent_t old_ext = *ext_it;
-       PExtentVector extents;
-       auto l =
-         _allocate_without_fallback(dev_target, old_ext.length, &extents);
-       if (l == 0) {
-         buf.resize(old_ext.length);
-         int r = bdev[old_ext.bdev]->read_random(
-           old_ext.offset,
-           old_ext.length,
-           (char*)&buf.at(0),
-           buffered);
-         dout(10)<<__func__<<" read = "<<r<<dendl;
-         if (r != 0) {
-           derr << __func__ << " failed to read 0x" << std::hex
-             << old_ext.offset << "~" <<old_ext.length << std::dec
-             << " from " << (int)dev_target << dendl;
-           return -EIO;
-         }
-
-         assert(extents.size() > 0);
-         uint64_t src_buf_pos = 0;
-         {
-           // overwrite existing extent
-           *ext_it=
-             bluefs_extent_t(dev_target_new, extents[0].offset, extents[0].length);
-           bufferlist bl;
-           bl.append((char*)&buf.at(src_buf_pos), extents[0].length);
-           int r = bdev[dev_target]->write(extents[0].offset, bl, buffered);
-           ceph_assert(r == 0);
-           src_buf_pos += extents[0].length;
-         }
-         // then insert more extents if needed
-         for( size_t i = 1; i < extents.size(); ++i) {
-           bufferlist bl;
-           bl.append((char*)&buf.at(src_buf_pos), extents[i].length);
-           ++ext_it;
-           ext_it = fnode_extents.emplace(ext_it, dev_target_new,
-             extents[i].offset, extents[i].length);
-           int r = bdev[dev_target]->write(extents[i].offset, bl, buffered);
-           ceph_assert(r == 0);
-           src_buf_pos += extents[i].length;
-         }
-         {
-           PExtentVector to_release;
-           to_release.emplace_back(old_ext.offset, old_ext.length);
-           alloc[old_ext.bdev]->release(to_release);
-         }
-       } else {
-         derr << __func__ << " unable to allocate len 0x" << std::hex
-           << old_ext.length << std::dec << " from " << (int)dev_target
-           << dendl;
-         return -ENOSPC;
+       rewrite = true;
+       break;
+      }
+    }
+    if (rewrite) {
+      dout(10) << __func__ << "  migrating" << dendl;
+
+      // read entire file
+      bufferlist bl;
+      for (auto old_ext : fnode_extents) {
+       buf.resize(old_ext.length);
+       int r = bdev[old_ext.bdev]->read_random(
+         old_ext.offset,
+         old_ext.length,
+         (char*)&buf.at(0),
+         buffered);
+       if (r != 0) {
+         derr << __func__ << " failed to read 0x" << std::hex
+              << old_ext.offset << "~" << old_ext.length << std::dec
+              << " from " << (int)dev_target << dendl;
+         return -EIO;
        }
-      } else if (dev_target != dev_target_new && ext_it->bdev == dev_target) {
-       ext_it->bdev = dev_target_new;
+       bl.append((char*)&buf[0], old_ext.length);
+      }
+
+      // write entire file
+      PExtentVector extents;
+      auto l = _allocate_without_fallback(dev_target, bl.length(), &extents);
+      if (l < 0) {
+       derr << __func__ << " unable to allocate len 0x" << std::hex
+            << bl.length() << std::dec << " from " << (int)dev_target
+            << ": " << cpp_strerror(l) << dendl;
+       return -ENOSPC;
+      }
+
+      uint64_t off = 0;
+      for (auto& i : extents) {
+       bufferlist cur;
+       uint64_t cur_len = std::min<uint64_t>(i.length, bl.length() - off);
+       ceph_assert(cur_len > 0);
+       cur.substr_of(bl, off, cur_len);
+       int r = bdev[dev_target]->write(i.offset, cur, buffered);
+       ceph_assert(r == 0);
+       off += cur_len;
+      }
+
+      // release old extents
+      for (auto old_ext : fnode_extents) {
+       PExtentVector to_release;
+       to_release.emplace_back(old_ext.offset, old_ext.length);
+       alloc[old_ext.bdev]->release(to_release);
+      }
+
+      // update fnode
+      fnode_extents.clear();
+      for (auto& i : extents) {
+       fnode_extents.emplace_back(dev_target_new, i.offset, i.length);
       }
     }
     auto& prefer_bdev = p.second->fnode.prefer_bdev;
     if (prefer_bdev != dev_target && devs_source.count(prefer_bdev)) {
+      dout(20) << __func__ << "  " << " ... adjusting prefer_bdev "
+              << prefer_bdev << " -> " << dev_target_new << dendl;
       prefer_bdev = dev_target_new;
     }
   }
@@ -1824,9 +1957,13 @@ void BlueFS::_compact_log_async(std::unique_lock<ceph::mutex>& l)
   log_t.clear();
   _compact_log_dump_metadata(&t, 0);
 
+  uint64_t max_alloc_size = std::max(alloc_size[BDEV_WAL],
+                                    std::max(alloc_size[BDEV_DB],
+                                             alloc_size[BDEV_SLOW]));
+
   // conservative estimate for final encoded size
   new_log_jump_to = round_up_to(t.op_bl.length() + super.block_size * 2,
-                                cct->_conf->bluefs_alloc_size);
+                                max_alloc_size);
   t.op_jump(log_seq, new_log_jump_to);
 
   // allocate
@@ -2447,12 +2584,19 @@ void BlueFS::flush_bdev()
   }
 }
 
+const char* BlueFS::get_device_name(unsigned id)
+{
+  if (id >= MAX_BDEV) return "BDEV_INV";
+  const char* names[] = {"BDEV_WAL", "BDEV_DB", "BDEV_SLOW", "BDEV_NEWWAL", "BDEV_NEWDB"};
+  return names[id];
+}
+
 int BlueFS::_expand_slow_device(uint64_t need, PExtentVector& extents)
 {
   int r = -ENOSPC;
   if (slow_dev_expander) {
-    auto min_alloc_size = cct->_conf->bluefs_alloc_size;
     int id = _get_slow_device_id();
+    auto min_alloc_size = alloc_size[id];
     ceph_assert(id <= (int)alloc.size() && alloc[id]);
     auto min_need = round_up_to(need, min_alloc_size);
     need = std::max(need,
@@ -2474,17 +2618,15 @@ int BlueFS::_allocate_without_fallback(uint8_t id, uint64_t len,
   dout(10) << __func__ << " len 0x" << std::hex << len << std::dec
            << " from " << (int)id << dendl;
   assert(id < alloc.size());
-  uint64_t min_alloc_size = cct->_conf->bluefs_alloc_size;
-
-  uint64_t left = round_up_to(len, min_alloc_size);
-
   if (!alloc[id]) {
     return -ENOENT;
   }
   extents->reserve(4);  // 4 should be (more than) enough for most allocations
+  uint64_t min_alloc_size = alloc_size[id];
+  uint64_t left = round_up_to(len, min_alloc_size);
   int64_t alloc_len = alloc[id]->allocate(left, min_alloc_size, 0, extents);
-  if (alloc_len < (int64_t)left) {
-    if (alloc_len != 0) {
+  if (alloc_len < 0 || alloc_len < (int64_t)left) {
+    if (alloc_len > 0) {
       alloc[id]->release(*extents);
     }
     if (bdev[id])
@@ -2508,27 +2650,26 @@ int BlueFS::_allocate(uint8_t id, uint64_t len,
   dout(10) << __func__ << " len 0x" << std::hex << len << std::dec
            << " from " << (int)id << dendl;
   ceph_assert(id < alloc.size());
-  uint64_t min_alloc_size = cct->_conf->bluefs_alloc_size;
-
-  uint64_t left = round_up_to(len, min_alloc_size);
   int64_t alloc_len = 0;
   PExtentVector extents;
-  
   uint64_t hint = 0;
   if (alloc[id]) {
     if (!node->extents.empty() && node->extents.back().bdev == id) {
       hint = node->extents.back().end();
     }   
     extents.reserve(4);  // 4 should be (more than) enough for most allocations
-    alloc_len = alloc[id]->allocate(left, min_alloc_size, hint, &extents);
+    alloc_len = alloc[id]->allocate(round_up_to(len, alloc_size[id]),
+                                   alloc_size[id], hint, &extents);
   }
-  if (alloc_len < (int64_t)left) {
+  if (!alloc[id] ||
+      alloc_len < 0 ||
+      alloc_len < (int64_t)round_up_to(len, alloc_size[id])) {
     if (alloc_len > 0) {
       alloc[id]->release(extents);
     }
     if (id != BDEV_SLOW) {
       if (bdev[id]) {
-       dout(1) << __func__ << " failed to allocate 0x" << std::hex << left
+       dout(1) << __func__ << " failed to allocate 0x" << std::hex << len
                << " on bdev " << (int)id
                << ", free 0x" << alloc[id]->get_free()
                << "; fallback to bdev " << (int)id + 1
@@ -2536,13 +2677,13 @@ int BlueFS::_allocate(uint8_t id, uint64_t len,
       }
       return _allocate(id + 1, len, node);
     }
-    dout(1) << __func__ << " unable to allocate 0x" << std::hex << left
+    dout(1) << __func__ << " unable to allocate 0x" << std::hex << len
            << " on bdev " << (int)id << ", free 0x"
            << (alloc[id] ? alloc[id]->get_free() : (uint64_t)-1)
            << "; fallback to slow device expander "
            << std::dec << dendl;
     extents.clear();
-    if (_expand_slow_device(left, extents) == 0) {
+    if (_expand_slow_device(len, extents) == 0) {
       id = _get_slow_device_id();
       for (auto& e : extents) {
        _add_block_extent(id, e.offset, e.length);
@@ -2551,19 +2692,20 @@ int BlueFS::_allocate(uint8_t id, uint64_t len,
       auto* last_alloc = alloc[id];
       ceph_assert(last_alloc);
       // try again
-      alloc_len = last_alloc->allocate(left, min_alloc_size, hint, &extents);
-      if (alloc_len < (int64_t)left) {
+      alloc_len = last_alloc->allocate(round_up_to(len, alloc_size[id]),
+                                      alloc_size[id], hint, &extents);
+      if (alloc_len < 0 || alloc_len < (int64_t)len) {
        if (alloc_len > 0) {
          last_alloc->release(extents);
        }
-       derr << __func__ << " failed to allocate 0x" << std::hex << left
+       derr << __func__ << " failed to allocate 0x" << std::hex << len
              << " on bdev " << (int)id
              << ", free 0x" << last_alloc->get_free() << std::dec << dendl;
         return -ENOSPC;
       }
     } else {
       derr << __func__ << " failed to expand slow device to fit +0x"
-          << std::hex << left << std::dec
+          << std::hex << len << std::dec
           << dendl;
       return -ENOSPC;
     }
index 780b3d2475a54bc4bee93d4482f790bf03de4d72..fb89c213d2ad910968345777e9e3b2bfea79000c 100644 (file)
@@ -63,6 +63,13 @@ public:
     uint64_t min_size,
     uint64_t size,
     PExtentVector& extents) = 0;
+  /** Reports amount of space that can be transferred to BlueFS.
+   * This gives either current state, when alloc_size is currently used
+   * BlueFS's size, or simulation when alloc_size is different.
+   * @params
+   * alloc_size - allocation unit size to check
+   */
+  virtual size_t available_freespace(uint64_t alloc_size) = 0;
 };
 
 class BlueFS {
@@ -299,12 +306,16 @@ private:
   vector<IOContext*> ioc;                     ///< IOContexts for bdevs
   vector<interval_set<uint64_t> > block_all;  ///< extents in bdev we own
   vector<Allocator*> alloc;                   ///< allocators for bdevs
+  vector<uint64_t> alloc_size;                ///< alloc size for each device
   vector<interval_set<uint64_t>> pending_release; ///< extents to release
 
   BlockDevice::aio_callback_t discard_cb[3]; //discard callbacks for each dev
 
   BlueFSDeviceExpander* slow_dev_expander = nullptr;
 
+  class SocketHook;
+  SocketHook* asok_hook = nullptr;
+
   void _init_logger();
   void _shutdown_logger();
   void _update_logger_stats();
@@ -318,6 +329,7 @@ private:
   void _drop_link(FileRef f);
 
   int _get_slow_device_id() { return bdev[BDEV_SLOW] ? BDEV_SLOW : BDEV_DB; }
+  const char* get_device_name(unsigned id);
   int _expand_slow_device(uint64_t min_size, PExtentVector& extents);
   int _allocate(uint8_t bdev, uint64_t len,
                bluefs_fnode_t* node);
@@ -412,6 +424,9 @@ public:
 
   void collect_metadata(map<string,string> *pm, unsigned skip_bdev_id);
   void get_devices(set<string> *ls);
+  uint64_t get_alloc_size(int id) {
+    return alloc_size[id];
+  }
   int fsck();
 
   int device_migrate_to_new(
index 60baa85da0999b875b07e54a9b62c3695db5d2dc..563919f1afe3b00adb54dd3fac9af3a802eaeada 100644 (file)
@@ -18,6 +18,8 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
+#include <boost/container/flat_set.hpp>
+
 #include "include/cpp-btree/btree_set.h"
 
 #include "BlueStore.h"
@@ -639,9 +641,9 @@ struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator {
     ceph_assert(llen == rlen);
     ceph_assert((rlen % 8) == 0);
     new_value->resize(rlen);
-    const __le64* lv = (const __le64*)ldata;
-    const __le64* rv = (const __le64*)rdata;
-    __le64* nv = &(__le64&)new_value->at(0);
+    const ceph_le64* lv = (const ceph_le64*)ldata;
+    const ceph_le64* rv = (const ceph_le64*)rdata;
+    ceph_le64* nv = &(ceph_le64&)new_value->at(0);
     for (size_t i = 0; i < rlen >> 3; ++i) {
       nv[i] = lv[i] + rv[i];
     }
@@ -784,7 +786,7 @@ void BlueStore::GarbageCollector::process_protrusive_extents(
           bool bExit = false;
           do {
             if (it->blob.get() == b) {
-              extents_to_collect.emplace_back(it->logical_offset, it->length);
+              extents_to_collect.insert(it->logical_offset, it->length);
             }
             bExit = it == bi.last_lextent;
             ++it;
@@ -810,8 +812,8 @@ int64_t BlueStore::GarbageCollector::estimate(
   used_alloc_unit = boost::optional<uint64_t >();
   blob_info_counted = nullptr;
 
-  gc_start_offset = start_offset;
-  gc_end_offset = start_offset + length;
+  uint64_t gc_start_offset = start_offset;
+  uint64_t gc_end_offset = start_offset + length;
 
   uint64_t end_offset = start_offset + length;
 
@@ -873,12 +875,18 @@ BlueStore::Cache *BlueStore::Cache::create(CephContext* cct, string type,
 void BlueStore::Cache::trim(uint64_t onode_max, uint64_t buffer_max)
 {
   std::lock_guard l(lock);
+  if (cct->_conf->objectstore_blackhole) {
+    // do not trim if we are throwing away IOs a layer down
+    return;
+  }
   _trim(onode_max, buffer_max);
 }
 
 void BlueStore::Cache::trim_all()
 {
   std::lock_guard l(lock);
+  // we should not be shutting down after the blackhole is enabled
+  assert(!cct->_conf->objectstore_blackhole);
   _trim(0, 0);
 }
 
@@ -3125,6 +3133,34 @@ BlueStore::BlobRef BlueStore::ExtentMap::split_blob(
 #undef dout_prefix
 #define dout_prefix *_dout << "bluestore.onode(" << this << ")." << __func__ << " "
 
+BlueStore::Onode* BlueStore::Onode::decode(
+  CollectionRef c,
+  const ghobject_t& oid,
+  const string& key,
+  const bufferlist& v)
+{
+  Onode* on = new Onode(c.get(), oid, key);
+  on->exists = true;
+  auto p = v.front().begin_deep();
+  on->onode.decode(p);
+  for (auto& i : on->onode.attrs) {
+    i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_other);
+  }
+
+  // initialize extent_map
+  on->extent_map.decode_spanning_blobs(p);
+  if (on->onode.extent_map_shards.empty()) {
+    denc(on->extent_map.inline_bl, p);
+    on->extent_map.decode_some(on->extent_map.inline_bl);
+    on->extent_map.inline_bl.reassign_to_mempool(
+      mempool::mempool_bluestore_cache_other);
+  }
+  else {
+    on->extent_map.init_shards(false, false);
+  }
+  return on;
+}
+
 void BlueStore::Onode::flush()
 {
   if (flushing_count.load()) {
@@ -3406,7 +3442,7 @@ BlueStore::OnodeRef BlueStore::Collection::get_onode(
   if (o)
     return o;
 
-  mempool::bluestore_cache_other::string key;
+  string key;
   get_object_key(store->cct, oid, &key);
 
   ldout(store->cct, 20) << __func__ << " oid " << oid << " key "
@@ -3427,24 +3463,7 @@ BlueStore::OnodeRef BlueStore::Collection::get_onode(
   } else {
     // loaded
     ceph_assert(r >= 0);
-    on = new Onode(this, oid, key);
-    on->exists = true;
-    auto p = v.front().begin_deep();
-    on->onode.decode(p);
-    for (auto& i : on->onode.attrs) {
-      i.second.reassign_to_mempool(mempool::mempool_bluestore_cache_other);
-    }
-
-    // initialize extent_map
-    on->extent_map.decode_spanning_blobs(p);
-    if (on->onode.extent_map_shards.empty()) {
-      denc(on->extent_map.inline_bl, p);
-      on->extent_map.decode_some(on->extent_map.inline_bl);
-      on->extent_map.inline_bl.reassign_to_mempool(
-       mempool::mempool_bluestore_cache_other);
-    } else {
-      on->extent_map.init_shards(false, false);
-    }
+    on = Onode::decode(this, oid, key, v);
   }
   o.reset(on);
   return onode_map.add(oid, o);
@@ -3534,21 +3553,33 @@ void *BlueStore::MempoolThread::entry()
 {
   std::unique_lock l(lock);
 
-  std::list<std::shared_ptr<PriorityCache::PriCache>> caches;
-  binned_kv_cache = store->db->get_priority_cache();
-  if (binned_kv_cache != nullptr) {
-    caches.push_back(binned_kv_cache);
+  uint64_t base = store->osd_memory_base;
+  double fragmentation = store->osd_memory_expected_fragmentation;
+  uint64_t target = store->osd_memory_target;
+  uint64_t min = store->osd_memory_cache_min;
+  uint64_t max = min;
+
+  // When setting the maximum amount of memory to use for cache, first 
+  // assume some base amount of memory for the OSD and then fudge in
+  // some overhead for fragmentation that scales with cache usage.
+  uint64_t ltarget = (1.0 - fragmentation) * target;
+  if (ltarget > base + min) {
+    max = ltarget - base;
   }
-  caches.push_back(meta_cache);
-  caches.push_back(data_cache);
 
-  autotune_cache_size = store->osd_memory_cache_min;
+  binned_kv_cache = store->db->get_priority_cache();
+  if (store->cache_autotune && binned_kv_cache != nullptr) {
+    pcm = std::make_shared<PriorityCache::Manager>(
+        store->cct, min, max, target, true);
+    pcm->insert("kv", binned_kv_cache, true);
+    pcm->insert("meta", meta_cache, true);
+    pcm->insert("data", data_cache, true);
+  }
 
   utime_t next_balance = ceph_clock_now();
   utime_t next_resize = ceph_clock_now();
 
   bool interval_stats_trim = false;
-  bool interval_stats_resize = false; 
   while (!stop) {
     // Before we trim, check and see if it's time to rebalance/resize.
     double autotune_interval = store->cache_autotune_interval;
@@ -3558,19 +3589,18 @@ void *BlueStore::MempoolThread::entry()
       _adjust_cache_settings();
 
       // Log events at 5 instead of 20 when balance happens.
-      interval_stats_resize = true; 
       interval_stats_trim = true;
-      if (store->cache_autotune) {
-        _balance_cache(caches);
+
+      if (pcm != nullptr) {
+        pcm->balance();
       }
 
       next_balance = ceph_clock_now();
       next_balance += autotune_interval;
     }
     if (resize_interval > 0 && next_resize < ceph_clock_now()) {
-      if (ceph_using_tcmalloc() && store->cache_autotune) {
-        _tune_cache_size(interval_stats_resize);
-        interval_stats_resize = false;
+      if (ceph_using_tcmalloc() && pcm != nullptr) {
+        pcm->tune_memory();
       }
       next_resize = ceph_clock_now();
       next_resize += resize_interval;
@@ -3615,9 +3645,8 @@ void BlueStore::MempoolThread::_trim_shards(bool interval_stats)
   int64_t data_alloc =
      static_cast<int64_t>(store->cache_data_ratio * cache_size);
 
-  if (binned_kv_cache != nullptr && store->cache_autotune) {
-    cache_size = autotune_cache_size;
-
+  if (pcm != nullptr && binned_kv_cache != nullptr) {
+    cache_size = pcm->get_tuned_mem();
     kv_alloc = binned_kv_cache->get_committed_size();
     meta_alloc = meta_cache->get_committed_size();
     data_alloc = data_cache->get_committed_size();
@@ -3653,169 +3682,6 @@ void BlueStore::MempoolThread::_trim_shards(bool interval_stats)
   }
 }
 
-void BlueStore::MempoolThread::_tune_cache_size(bool interval_stats)
-{
-  auto cct = store->cct;
-  uint64_t target = store->osd_memory_target;
-  uint64_t base = store->osd_memory_base;
-  double fragmentation = store->osd_memory_expected_fragmentation;
-  uint64_t cache_min = store->osd_memory_cache_min;
-  uint64_t cache_max = cache_min;
-  uint64_t limited_target = (1.0 - fragmentation) * target;
-  if (limited_target > base + cache_min) {
-    cache_max = limited_target - base;
-  }
-
-  size_t heap_size = 0;
-  size_t unmapped = 0;
-  uint64_t mapped = 0;
-
-  ceph_heap_release_free_memory();
-  ceph_heap_get_numeric_property("generic.heap_size", &heap_size);
-  ceph_heap_get_numeric_property("tcmalloc.pageheap_unmapped_bytes", &unmapped);
-  mapped = heap_size - unmapped;
-
-  uint64_t new_size = autotune_cache_size;
-  new_size = (new_size < cache_max) ? new_size : cache_max;
-  new_size = (new_size > cache_min) ? new_size : cache_min;
-
-  // Approach the min/max slowly, but bounce away quickly.
-  if ((uint64_t) mapped < target) {
-    double ratio = 1 - ((double) mapped / target);
-    new_size += ratio * (cache_max - new_size); 
-  } else {
-    double ratio = 1 - ((double) target / mapped);
-    new_size -= ratio * (new_size - cache_min);
-  }
-
-  if (interval_stats) {
-    ldout(cct, 5) << __func__
-                  << " target: " << target
-                  << " heap: " << heap_size
-                  << " unmapped: " << unmapped
-                  << " mapped: " << mapped 
-                  << " old cache_size: " << autotune_cache_size
-                  << " new cache size: " << new_size << dendl;
-  } else {
-    ldout(cct, 20) << __func__
-                   << " target: " << target
-                   << " heap: " << heap_size
-                   << " unmapped: " << unmapped
-                   << " mapped: " << mapped        
-                   << " old cache_size: " << autotune_cache_size
-                   << " new cache size: " << new_size << dendl;
-  }
-  autotune_cache_size = new_size;
-}
-
-void BlueStore::MempoolThread::_balance_cache(
-    const std::list<std::shared_ptr<PriorityCache::PriCache>>& caches)
-{
-  int64_t mem_avail = autotune_cache_size;
-  /* Each cache is going to get at least 1 chunk's worth of memory from get_chunk
-   * so shrink the available memory here to compensate.  Don't shrink the amount of
-   * memory below 0 however.
-   */
-  mem_avail -= PriorityCache::get_chunk(1, autotune_cache_size) * caches.size();
-  if (mem_avail < 0) {
-    mem_avail = 0;
-  }
-
-  // Assign memory for each priority level
-  for (int i = 0; i < PriorityCache::Priority::LAST + 1; i++) {
-    ldout(store->cct, 10) << __func__ << " assigning cache bytes for PRI: " << i << dendl;
-    PriorityCache::Priority pri = static_cast<PriorityCache::Priority>(i);
-    _balance_cache_pri(&mem_avail, caches, pri);
-  }
-  // Assign any leftover memory based on the default ratios.
-  if (mem_avail > 0) {
-    for (auto it = caches.begin(); it != caches.end(); it++) {
-      int64_t fair_share =
-          static_cast<int64_t>((*it)->get_cache_ratio() * mem_avail);
-      if (fair_share > 0) {
-        (*it)->add_cache_bytes(PriorityCache::Priority::LAST, fair_share);
-      }
-    }
-  }
-  // assert if we assigned more memory than is available.
-  ceph_assert(mem_avail >= 0);
-
-  // Finally commit the new cache sizes
-  for (auto it = caches.begin(); it != caches.end(); it++) {
-    (*it)->commit_cache_size(autotune_cache_size);
-  }
-}
-
-void BlueStore::MempoolThread::_balance_cache_pri(int64_t *mem_avail,
-    const std::list<std::shared_ptr<PriorityCache::PriCache>>& caches,
-    PriorityCache::Priority pri)
-{
-  std::list<std::shared_ptr<PriorityCache::PriCache>> tmp_caches = caches;
-  double cur_ratios = 0;
-  double new_ratios = 0;
-
-  // Zero this priority's bytes, sum the initial ratios.
-  for (auto it = tmp_caches.begin(); it != tmp_caches.end(); it++) {
-    (*it)->set_cache_bytes(pri, 0);
-    cur_ratios += (*it)->get_cache_ratio();
-  }
-
-  // For this priority, loop until caches are satisified or we run out of memory.
-  // Since we can't allocate fractional bytes, stop if we have fewer bytes left
-  // than the number of participating caches.
-  while (!tmp_caches.empty() && *mem_avail > static_cast<int64_t>(tmp_caches.size())) {
-    uint64_t total_assigned = 0;
-
-    for (auto it = tmp_caches.begin(); it != tmp_caches.end(); ) {
-      int64_t cache_wants = (*it)->request_cache_bytes(pri, autotune_cache_size);
-
-      // Usually the ratio should be set to the fraction of the current caches'
-      // assigned ratio compared to the total ratio of all caches that still
-      // want memory.  There is a special case where the only caches left are
-      // all assigned 0% ratios but still want memory.  In that case, give 
-      // them an equal shot at the remaining memory for this priority.
-      double ratio = 1.0 / tmp_caches.size();
-      if (cur_ratios > 0) {
-        ratio = (*it)->get_cache_ratio() / cur_ratios;
-      }
-      int64_t fair_share = static_cast<int64_t>(*mem_avail * ratio);
-
-      if (cache_wants > fair_share) {
-        // If we want too much, take what we can get but stick around for more
-        (*it)->add_cache_bytes(pri, fair_share);
-        total_assigned += fair_share;
-
-        new_ratios += (*it)->get_cache_ratio();
-        ldout(store->cct, 20) << __func__ << " " << (*it)->get_cache_name() 
-                              << " wanted: " << cache_wants << " fair_share: " << fair_share
-                              << " mem_avail: " << *mem_avail
-                              << " staying in list.  Size: " << tmp_caches.size()
-                              << dendl;
-        ++it;
-      } else {
-        // Otherwise assign only what we want
-        if (cache_wants > 0) { 
-          (*it)->add_cache_bytes(pri, cache_wants);
-          total_assigned += cache_wants;
-
-          ldout(store->cct, 20) << __func__ << " " << (*it)->get_cache_name()
-                                << " wanted: " << cache_wants << " fair_share: " << fair_share
-                                << " mem_avail: " << *mem_avail
-                                << " removing from list.  New size: " << tmp_caches.size() - 1
-                                << dendl;
-
-        }
-        // Either the cache didn't want anything or got what it wanted, so remove it from the tmp list. 
-        it = tmp_caches.erase(it);
-      }
-    }
-    // Reset the ratios 
-    *mem_avail -= total_assigned;
-    cur_ratios = new_ratios;
-    new_ratios = 0;
-  }
-}
-
 // =======================================================
 
 // OmapIteratorImpl
@@ -4079,7 +3945,6 @@ const char **BlueStore::get_tracked_conf_keys() const
     "osd_memory_cache_min",
     "bluestore_cache_autotune",
     "bluestore_cache_autotune_interval",
-    "bluestore_no_per_pool_stats_tolerance",
     "bluestore_warn_on_legacy_statfs",
     NULL
   };
@@ -4089,8 +3954,7 @@ const char **BlueStore::get_tracked_conf_keys() const
 void BlueStore::handle_conf_change(const ConfigProxy& conf,
                                   const std::set<std::string> &changed)
 {
-  if (changed.count("bluestore_no_per_pool_stats_tolerance") ||
-      changed.count("bluestore_warn_on_legacy_statfs")) {
+  if (changed.count("bluestore_warn_on_legacy_statfs")) {
     _check_legacy_statfs_alert();
   }
 
@@ -4891,7 +4755,7 @@ int BlueStore::_open_alloc()
 
   alloc = Allocator::create(cct, cct->_conf->bluestore_allocator,
                             bdev->get_size(),
-                            min_alloc_size);
+                            min_alloc_size, "block");
   if (!alloc) {
     lderr(cct) << __func__ << " Allocator::unknown alloc type "
                << cct->_conf->bluestore_allocator
@@ -5090,8 +4954,9 @@ int BlueStore::_minimal_open_bluefs(bool create)
 
   bfn = path + "/block.db";
   if (::stat(bfn.c_str(), &st) == 0) {
-    r = bluefs->add_block_device(BlueFS::BDEV_DB, bfn,
-         create && cct->_conf->bdev_enable_discard);
+    r = bluefs->add_block_device(
+      BlueFS::BDEV_DB, bfn,
+      create && cct->_conf->bdev_enable_discard);
     if (r < 0) {
       derr << __func__ << " add block device(" << bfn << ") returned: "
             << cpp_strerror(r) << dendl;
@@ -5146,21 +5011,21 @@ int BlueStore::_minimal_open_bluefs(bool create)
       bdev->get_size() * (cct->_conf->bluestore_bluefs_min_ratio +
                          cct->_conf->bluestore_bluefs_gift_ratio);
     initial = std::max(initial, cct->_conf->bluestore_bluefs_min);
-    if (cct->_conf->bluefs_alloc_size % min_alloc_size) {
-      derr << __func__ << " bluefs_alloc_size 0x" << std::hex
-           << cct->_conf->bluefs_alloc_size << " is not a multiple of "
+    uint64_t alloc_size = cct->_conf->bluefs_shared_alloc_size;
+    if (alloc_size % min_alloc_size) {
+      derr << __func__ << " bluefs_shared_alloc_size 0x" << std::hex
+           << alloc_size << " is not a multiple of "
            << "min_alloc_size 0x" << min_alloc_size << std::dec << dendl;
       r = -EINVAL;
       goto free_bluefs;
     }
     // align to bluefs's alloc_size
-    initial = p2roundup(initial, cct->_conf->bluefs_alloc_size);
+    initial = p2roundup(initial, alloc_size);
     // put bluefs in the middle of the device in case it is an HDD
-    uint64_t start = p2align((bdev->get_size() - initial) / 2,
-                             cct->_conf->bluefs_alloc_size);
+    uint64_t start = p2align((bdev->get_size() - initial) / 2, alloc_size);
     //avoiding superblock overwrite
-    ceph_assert(cct->_conf->bluefs_alloc_size > _get_ondisk_reserved());
-    start = std::max(cct->_conf->bluefs_alloc_size, start);
+    start = std::max(alloc_size, start);
+    ceph_assert(start >=_get_ondisk_reserved());
 
     bluefs->add_block_extent(bluefs_shared_bdev, start, initial);
     bluefs_extents.insert(start, initial);
@@ -5170,7 +5035,7 @@ int BlueStore::_minimal_open_bluefs(bool create)
   bfn = path + "/block.wal";
   if (::stat(bfn.c_str(), &st) == 0) {
     r = bluefs->add_block_device(BlueFS::BDEV_WAL, bfn,
-      create && cct->_conf->bdev_enable_discard);
+                                create && cct->_conf->bdev_enable_discard);
     if (r < 0) {
       derr << __func__ << " add block device(" << bfn << ") returned: "
            << cpp_strerror(r) << dendl;
@@ -5605,8 +5470,9 @@ int BlueStore::allocate_bluefs_freespace(
   ceph_assert(min_size <= size);
   if (size) {
     // round up to alloc size
-    min_size = p2roundup(min_size, cct->_conf->bluefs_alloc_size);
-    size = p2roundup(size, cct->_conf->bluefs_alloc_size);
+    uint64_t alloc_size = bluefs->get_alloc_size(bluefs_shared_bdev);
+    min_size = p2roundup(min_size, alloc_size);
+    size = p2roundup(size, alloc_size);
 
     PExtentVector extents_local;
     PExtentVector* extents = extents_out ? extents_out : &extents_local;
@@ -5621,20 +5487,20 @@ int BlueStore::allocate_bluefs_freespace(
       dout(10) << __func__ << " gifting " << gift
               << " (" << byte_u_t(gift) << ")" << dendl;
 
-      alloc_len = alloc->allocate(gift, cct->_conf->bluefs_alloc_size,
-                                 0, 0, extents);
-      if (alloc_len) {
+      alloc_len = alloc->allocate(gift, alloc_size, 0, 0, extents);
+      if (alloc_len > 0) {
        allocated += alloc_len;
        size -= alloc_len;
       }
 
-      if (alloc_len < (int64_t)gift && (min_size > allocated)) {
+      if (alloc_len < 0 || 
+          (alloc_len < (int64_t)gift && (min_size > allocated))) {
        derr << __func__
              << " failed to allocate on 0x" << std::hex << gift
              << " min_size 0x" << min_size
              << " > allocated total 0x" << allocated
-             << " bluefs_alloc_size 0x" << cct->_conf->bluefs_alloc_size
-             << " allocated 0x" << alloc_len
+             << " bluefs_shared_alloc_size 0x" << alloc_size
+             << " allocated 0x" << (alloc_len < 0 ? 0 : alloc_len)
              << " available 0x " << alloc->get_free()
              << std::dec << dendl;
 
@@ -5657,6 +5523,25 @@ int BlueStore::allocate_bluefs_freespace(
   return 0;
 }
 
+size_t BlueStore::available_freespace(uint64_t alloc_size) {
+  size_t total = 0;
+  auto iterated_allocation = [&](size_t off, size_t len) {
+    //only count in size that is alloc_size aligned
+    size_t dist_to_alignment;
+    size_t offset_in_block = off & (alloc_size - 1);
+    if (offset_in_block == 0)
+      dist_to_alignment = 0;
+    else
+      dist_to_alignment = alloc_size - offset_in_block;
+    if (dist_to_alignment >= len)
+      return;
+    len -= dist_to_alignment;
+    total += p2align(len, alloc_size);
+  };
+  alloc->dump(iterated_allocation);
+  return total;
+}
+
 int64_t BlueStore::_get_bluefs_size_delta(uint64_t bluefs_free, uint64_t bluefs_total)
 {
   float bluefs_free_ratio = (float)bluefs_free / (float)bluefs_total;
@@ -5755,7 +5640,8 @@ int BlueStore::_balance_bluefs_freespace()
   // reclaim from bluefs?
   if (delta < 0) {
     // round up to alloc size
-    auto reclaim = p2roundup(uint64_t(-delta), cct->_conf->bluefs_alloc_size);
+    uint64_t alloc_size = bluefs->get_alloc_size(bluefs_shared_bdev);
+    auto reclaim = p2roundup(uint64_t(-delta), alloc_size);
 
     // hard cap to fit into 32 bits
     reclaim = std::min<uint64_t>(reclaim, 1ull << 31);
@@ -5786,9 +5672,10 @@ int BlueStore::_balance_bluefs_freespace()
   return ret;
 }
 
-int BlueStore::_open_collections(int *errors)
+int BlueStore::_open_collections()
 {
   dout(10) << __func__ << dendl;
+  collections_had_errors = false;
   ceph_assert(coll_map.empty());
   KeyValueDB::Iterator it = db->get_iterator(PREFIX_COLL);
   for (it->upper_bound(string());
@@ -5817,13 +5704,31 @@ int BlueStore::_open_collections(int *errors)
 
     } else {
       derr << __func__ << " unrecognized collection " << it->key() << dendl;
-      if (errors)
-       (*errors)++;
+      collections_had_errors = true;
     }
   }
   return 0;
 }
 
+void BlueStore::_fsck_collections(int64_t* errors)
+{
+  if (collections_had_errors) {
+    dout(10) << __func__ << dendl;
+    KeyValueDB::Iterator it = db->get_iterator(PREFIX_COLL);
+    for (it->upper_bound(string());
+      it->valid();
+      it->next()) {
+      coll_t cid;
+      if (!cid.parse(it->key())) {
+        derr << __func__ << " unrecognized collection " << it->key() << dendl;
+        if (errors) {
+          (*errors)++;
+        }
+      }
+    }
+  }
+}
+
 void BlueStore::_open_statfs()
 {
   osd_pools.clear();
@@ -5841,9 +5746,6 @@ void BlueStore::_open_statfs()
       dout(10) << __func__ << " store_statfs is corrupt, using empty" << dendl;
     }
     _check_legacy_statfs_alert();
-  } else if (cct->_conf->bluestore_no_per_pool_stats_tolerance == "enforce") {
-    per_pool_stat_collection = false;
-    dout(10) << __func__ << " store_statfs is requested but missing, using empty" << dendl;
   } else {
     per_pool_stat_collection = true;
     dout(10) << __func__ << " per-pool statfs is enabled" << dendl;
@@ -5968,6 +5870,13 @@ int BlueStore::mkfs()
   int r;
   uuid_d old_fsid;
 
+  if (cct->_conf->osd_max_object_size > OBJECT_MAX_SIZE) {
+    derr << __func__ << " osd_max_object_size "
+        << cct->_conf->osd_max_object_size << " > bluestore max "
+        << OBJECT_MAX_SIZE << dendl;
+    return -EINVAL;
+  }
+
   {
     string done;
     r = read_meta("mkfs_done", &done);
@@ -6210,7 +6119,7 @@ int BlueStore::add_new_bluefs_device(int id, const string& dev_path)
     ceph_assert(r == 0);
 
     r = bluefs->add_block_device(BlueFS::BDEV_NEWWAL, p,
-      cct->_conf->bdev_enable_discard);
+                                cct->_conf->bdev_enable_discard);
     ceph_assert(r == 0);
 
     if (bluefs->bdev_support_label(BlueFS::BDEV_NEWWAL)) {
@@ -6231,7 +6140,7 @@ int BlueStore::add_new_bluefs_device(int id, const string& dev_path)
     ceph_assert(r == 0);
 
     r = bluefs->add_block_device(BlueFS::BDEV_NEWDB, p,
-      cct->_conf->bdev_enable_discard);
+                                cct->_conf->bdev_enable_discard);
     ceph_assert(r == 0);
 
     if (bluefs->bdev_support_label(BlueFS::BDEV_NEWDB)) {
@@ -6374,7 +6283,7 @@ int BlueStore::migrate_to_new_bluefs_device(const set<int>& devs_source,
     target_size = cct->_conf->bluestore_block_wal_size;
 
     r = bluefs->add_block_device(BlueFS::BDEV_NEWWAL, dev_path,
-      cct->_conf->bdev_enable_discard);
+                                cct->_conf->bdev_enable_discard);
     ceph_assert(r == 0);
 
     if (bluefs->bdev_support_label(BlueFS::BDEV_NEWWAL)) {
@@ -6391,7 +6300,7 @@ int BlueStore::migrate_to_new_bluefs_device(const set<int>& devs_source,
     target_size = cct->_conf->bluestore_block_db_size;
 
     r = bluefs->add_block_device(BlueFS::BDEV_NEWDB, dev_path,
-      cct->_conf->bdev_enable_discard);
+                                cct->_conf->bdev_enable_discard);
     ceph_assert(r == 0);
 
     if (bluefs->bdev_support_label(BlueFS::BDEV_NEWDB)) {
@@ -6594,6 +6503,13 @@ int BlueStore::_mount(bool kv_only, bool open_db)
     }
   }
 
+  if (cct->_conf->osd_max_object_size > OBJECT_MAX_SIZE) {
+    derr << __func__ << " osd_max_object_size "
+        << cct->_conf->osd_max_object_size << " > bluestore max "
+        << OBJECT_MAX_SIZE << dendl;
+    return -EINVAL;
+  }
+
   int r = _open_path();
   if (r < 0)
     return r;
@@ -6647,6 +6563,18 @@ int BlueStore::_mount(bool kv_only, bool open_db)
 
   mempool_thread.init();
 
+  if (!per_pool_stat_collection &&
+    cct->_conf->bluestore_fsck_quick_fix_on_mount == true) {
+    dout(1) << __func__ << " quick-fix on mount" << dendl;
+    _fsck_on_open(FSCK_SHALLOW, true);
+
+    //reread statfs
+    //FIXME minor: replace with actual open/close?
+    _open_statfs();
+
+    _check_legacy_statfs_alert();
+  }
+
   mounted = true;
   return 0;
 
@@ -6698,6 +6626,48 @@ int BlueStore::umount()
   return 0;
 }
 
+int BlueStore::cold_open()
+{
+  int r = _open_path();
+  if (r < 0)
+    return r;
+  r = _open_fsid(false);
+  if (r < 0)
+    goto out_path;
+
+  r = _read_fsid(&fsid);
+  if (r < 0)
+    goto out_fsid;
+
+  r = _lock_fsid();
+  if (r < 0)
+    goto out_fsid;
+
+  r = _open_bdev(false);
+  if (r < 0)
+    goto out_fsid;
+  r = _open_db_and_around(true);
+  if (r < 0) {
+    goto out_bdev;
+  }
+  return 0;
+ out_bdev:
+  _close_bdev();
+ out_fsid:
+  _close_fsid();
+ out_path:
+  _close_path();
+  return r;
+}
+int BlueStore::cold_close()
+{
+  _close_db_and_around();
+  _close_bdev();
+  _close_fsid();
+  _close_path();
+  return 0;
+}
+
 static void apply(uint64_t off,
                   uint64_t len,
                   uint64_t granularity,
@@ -6712,6 +6682,22 @@ static void apply(uint64_t off,
   }
 }
 
+int _fsck_sum_extents(
+  const PExtentVector& extents,
+  bool compressed,
+  store_statfs_t& expected_statfs)
+{
+  for (auto e : extents) {
+    if (!e.is_valid())
+      continue;
+    expected_statfs.allocated += e.length;
+    if (compressed) {
+      expected_statfs.data_compressed_allocated += e.length;
+    }
+  }
+  return 0;
+}
+
 int BlueStore::_fsck_check_extents(
   const coll_t& cid,
   const ghobject_t& oid,
@@ -6720,7 +6706,8 @@ int BlueStore::_fsck_check_extents(
   mempool_dynamic_bitset &used_blocks,
   uint64_t granularity,
   BlueStoreRepairer* repairer,
-  store_statfs_t& expected_statfs)
+  store_statfs_t& expected_statfs,
+  FSCKDepth depth)
 {
   dout(30) << __func__ << " oid " << oid << " extents " << extents << dendl;
   int errors = 0;
@@ -6731,34 +6718,36 @@ int BlueStore::_fsck_check_extents(
     if (compressed) {
       expected_statfs.data_compressed_allocated += e.length;
     }
-    bool already = false;
-    apply(
-      e.offset, e.length, granularity, used_blocks,
-      [&](uint64_t pos, mempool_dynamic_bitset &bs) {
-       ceph_assert(pos < bs.size());
-       if (bs.test(pos)) {
-         if (repairer) {
-           repairer->note_misreference(
-             pos * min_alloc_size, min_alloc_size, !already);
-         }
-          if (!already) {
-            derr << "fsck error: " << oid << " extent " << e
-                << " or a subset is already allocated (misreferenced)" << dendl;
-           ++errors;
-           already = true;
+    if (depth != FSCK_SHALLOW) {
+      bool already = false;
+      apply(
+        e.offset, e.length, granularity, used_blocks,
+        [&](uint64_t pos, mempool_dynamic_bitset &bs) {
+         ceph_assert(pos < bs.size());
+         if (bs.test(pos)) {
+           if (repairer) {
+             repairer->note_misreference(
+               pos * min_alloc_size, min_alloc_size, !already);
+           }
+            if (!already) {
+              derr << "fsck error: " << oid << " extent " << e
+                  << " or a subset is already allocated (misreferenced)" << dendl;
+             ++errors;
+             already = true;
+           }
          }
-       }
-       else
-         bs.set(pos);
-      });
-      if (repairer) {
-       repairer->get_space_usage_tracker().set_used( e.offset, e.length, cid, oid);
-      }
+         else
+           bs.set(pos);
+        });
+        if (repairer) {
+         repairer->get_space_usage_tracker().set_used( e.offset, e.length, cid, oid);
+        }
 
-    if (e.end() > bdev->get_size()) {
-      derr << "fsck error:  " << oid << " extent " << e
-          << " past end of block device" << dendl;
-      ++errors;
+      if (e.end() > bdev->get_size()) {
+        derr << "fsck error:  " << oid << " extent " << e
+            << " past end of block device" << dendl;
+        ++errors;
+      }
     }
   }
   return errors;
@@ -6766,8 +6755,8 @@ int BlueStore::_fsck_check_extents(
 
 void BlueStore::_fsck_check_pool_statfs(
   BlueStore::per_pool_statfs& expected_pool_statfs,
-  bool need_per_pool_stats,
-  int& errors,
+  int64_t& errors,
+  int64_t& warnings,
   BlueStoreRepairer* repairer)
 {
   auto it = db->get_iterator(PREFIX_STAT);
@@ -6776,28 +6765,13 @@ void BlueStore::_fsck_check_pool_statfs(
       string key = it->key();
       if (key == BLUESTORE_GLOBAL_STATFS_KEY) {
         if (repairer) {
-         if (need_per_pool_stats) {
-           ++errors;
-           repairer->remove_key(db, PREFIX_STAT, BLUESTORE_GLOBAL_STATFS_KEY);
-           derr << "fsck error: " << "legacy statfs record found, removing" << dendl;
-         } else {
-           derr << "fsck warning: " << "legacy statfs record found, bypassing" << dendl;
-         }
-       } else {
-         const char* s = "fsck warning: ";
-          if (need_per_pool_stats) {
-           ++errors;
-           s = "fsck error: ";
-         }
-         derr << s << "legacy statfs record found, suggest to "
-                 "run store repair to get consistent statistic reports"
+         ++errors;
+         repairer->remove_key(db, PREFIX_STAT, BLUESTORE_GLOBAL_STATFS_KEY);
+         derr << "fsck error: " << "legacy statfs record found, removing"
               << dendl;
        }
        continue;
       }
-      if (!need_per_pool_stats) {
-       continue;
-      }
       uint64_t pool_id;
       if (get_key_pool_stat(key, &pool_id) < 0) {
        derr << "fsck error: bad key " << key
@@ -6864,114 +6838,777 @@ void BlueStore::_fsck_check_pool_statfs(
       expected_pool_statfs.erase(stat_it);
     }
   } // if (it)
-  for( auto s = expected_pool_statfs.begin(); s != expected_pool_statfs.end();
-    ++s) {
-    if (s->second.is_zero()) {
+  for (auto& s : expected_pool_statfs) {
+    if (s.second.is_zero()) {
       // we might lack empty statfs recs in DB
       continue;
     }
     derr << "fsck error: missing Pool StatFS record for pool "
-         << std::hex << s->first << std::dec << dendl;
+        << std::hex << s.first << std::dec << dendl;
     if (repairer) {
       string key;
-      get_pool_stat_key(s->first, &key);
-      repairer->fix_statfs(db, key, s->second);
+      get_pool_stat_key(s.first, &key);
+      repairer->fix_statfs(db, key, s.second);
     }
     ++errors;
   }
+  if (!per_pool_stat_collection &&
+      cct->_conf->bluestore_fsck_error_on_no_per_pool_stats &&
+      repairer) {
+    // by virtue of running this method, we correct the top-level
+    // error of having global stats
+    repairer->inc_repaired();
+  }
 }
 
-/**
-An overview for currently implemented repair logics 
-performed in fsck in two stages: detection(+preparation) and commit.
-Detection stage (in processing order):
-  (Issue -> Repair action to schedule)
-  - Detect undecodable keys for Shared Blobs -> Remove
-  - Detect undecodable records for Shared Blobs -> Remove 
-    (might trigger missed Shared Blob detection below)
-  - Detect stray records for Shared Blobs -> Remove
-  - Detect misreferenced pextents -> Fix
-    Prepare Bloom-like filter to track cid/oid -> pextent 
-    Prepare list of extents that are improperly referenced
-    Enumerate Onode records that might use 'misreferenced' pextents
-    (Bloom-like filter applied to reduce computation)
-      Per each questinable Onode enumerate all blobs and identify broken ones 
-      (i.e. blobs having 'misreferences')
-      Rewrite each broken blob data by allocating another extents and 
-      copying data there
-      If blob is shared - unshare it and mark corresponding Shared Blob 
-      for removal
-      Release previously allocated space
-      Update Extent Map
-  - Detect missed Shared Blobs -> Recreate
-  - Detect undecodable deferred transaction -> Remove
-  - Detect Freelist Manager's 'false free' entries -> Mark as used
-  - Detect Freelist Manager's leaked entries -> Mark as free
-  - Detect statfs inconsistency - Update
-  Commit stage (separate DB commit per each step):
-  - Apply leaked FM entries fix
-  - Apply 'false free' FM entries fix
-  - Apply 'Remove' actions
-  - Apply fix for misreference pextents
-  - Apply Shared Blob recreate 
-    (can be merged with the step above if misreferences were dectected)
-  - Apply StatFS update
-*/
-int BlueStore::_fsck(bool deep, bool repair)
-{
-  dout(1) << __func__
-         << " <<<START>>>"
-         << (repair ? " repair" : " check")
-         << (deep ? " (deep)" : " (shallow)") << " start" << dendl;
-  int errors = 0;
-  unsigned repaired = 0;
-
-  typedef btree::btree_set<
-    uint64_t,std::less<uint64_t>,
-    mempool::bluestore_fsck::pool_allocator<uint64_t>> uint64_t_btree_t;
-  uint64_t_btree_t used_nids;
-  uint64_t_btree_t used_omap_head;
-  uint64_t_btree_t used_pgmeta_omap_head;
-  uint64_t_btree_t used_sbids;
-
-  mempool_dynamic_bitset used_blocks;
-  KeyValueDB::Iterator it;
-  store_statfs_t expected_store_statfs, actual_statfs;
-  per_pool_statfs expected_pool_statfs;
-
-  struct sb_info_t {
-    coll_t cid;
-    int64_t pool_id = INT64_MIN;
-    list<ghobject_t> oids;
-    SharedBlobRef sb;
-    bluestore_extent_ref_map_t ref_map;
-    bool compressed = false;
-    bool passed = false;
-    bool updated = false;
-  };
-  mempool::bluestore_fsck::map<uint64_t,sb_info_t> sb_info;
+BlueStore::OnodeRef BlueStore::fsck_check_objects_shallow(
+  BlueStore::FSCKDepth depth,
+  int64_t pool_id,
+  BlueStore::CollectionRef c,
+  const ghobject_t& oid,
+  const string& key,
+  const bufferlist& value,
+  mempool::bluestore_fsck::list<string>& expecting_shards,
+  map<BlobRef, bluestore_blob_t::unused_t>* referenced,
+  const BlueStore::FSCK_ObjectCtx& ctx)
+{
+  auto& errors = ctx.errors;
+  auto& num_objects = ctx.num_objects;
+  auto& num_extents = ctx.num_extents;
+  auto& num_blobs = ctx.num_blobs;
+  auto& num_sharded_objects = ctx.num_sharded_objects;
+  auto& num_spanning_blobs = ctx.num_spanning_blobs;
+  auto used_blocks = ctx.used_blocks;
+  auto sb_info_lock = ctx.sb_info_lock;
+  auto& sb_info = ctx.sb_info;
+  auto repairer = ctx.repairer;
+
+  store_statfs_t* res_statfs = (per_pool_stat_collection || repairer) ?
+    &ctx.expected_pool_statfs[pool_id] :
+    &ctx.expected_store_statfs;
+
+  dout(10) << __func__ << "  " << oid << dendl;
+  OnodeRef o;
+  o.reset(Onode::decode(c, oid, key, value));
+  ++num_objects;
 
-  uint64_t num_objects = 0;
-  uint64_t num_extents = 0;
-  uint64_t num_blobs = 0;
-  uint64_t num_spanning_blobs = 0;
-  uint64_t num_shared_blobs = 0;
-  uint64_t num_sharded_objects = 0;
-  uint64_t num_object_shards = 0;
-  BlueStoreRepairer repairer;
-  store_statfs_t* expected_statfs = nullptr;
-  // in deep mode we need R/W write access to be able to replay deferred ops
-  bool read_only = !(repair || deep);
+  num_spanning_blobs += o->extent_map.spanning_blob_map.size();
 
-  utime_t start = ceph_clock_now();
-  const auto& no_pps_mode = cct->_conf->bluestore_no_per_pool_stats_tolerance;
-  bool need_per_pool_stats = no_pps_mode == "until_fsck" ||
-    (no_pps_mode == "until_repair" && repair);
-  bool enforce_no_per_pool_stats = no_pps_mode == "enforce";
+  o->extent_map.fault_range(db, 0, OBJECT_MAX_SIZE);
+  _dump_onode<30>(cct, *o);
+  // shards
+  if (!o->extent_map.shards.empty()) {
+    ++num_sharded_objects;
+    if (depth != FSCK_SHALLOW) {
+      for (auto& s : o->extent_map.shards) {
+        dout(20) << __func__ << "    shard " << *s.shard_info << dendl;
+        expecting_shards.push_back(string());
+        get_extent_shard_key(o->key, s.shard_info->offset,
+          &expecting_shards.back());
+        if (s.shard_info->offset >= o->onode.size) {
+          derr << "fsck error: " << oid << " shard 0x" << std::hex
+            << s.shard_info->offset << " past EOF at 0x" << o->onode.size
+            << std::dec << dendl;
+          ++errors;
+        }
+      }
+    }
+  }
 
-  int r = _open_path();
-  if (r < 0)
-    return r;
+  // lextents
+  uint64_t pos = 0;
+  mempool::bluestore_fsck::map<BlobRef,
+    bluestore_blob_use_tracker_t> ref_map;
+  for (auto& l : o->extent_map.extent_map) {
+    dout(20) << __func__ << "    " << l << dendl;
+    if (l.logical_offset < pos) {
+      derr << "fsck error: " << oid << " lextent at 0x"
+        << std::hex << l.logical_offset
+        << " overlaps with the previous, which ends at 0x" << pos
+        << std::dec << dendl;
+      ++errors;
+    }
+    if (depth != FSCK_SHALLOW &&
+      o->extent_map.spans_shard(l.logical_offset, l.length)) {
+      derr << "fsck error: " << oid << " lextent at 0x"
+        << std::hex << l.logical_offset << "~" << l.length
+        << " spans a shard boundary"
+        << std::dec << dendl;
+      ++errors;
+    }
+    pos = l.logical_offset + l.length;
+    res_statfs->data_stored += l.length;
+    ceph_assert(l.blob);
+    const bluestore_blob_t& blob = l.blob->get_blob();
+
+    auto& ref = ref_map[l.blob];
+    if (ref.is_empty()) {
+      uint32_t min_release_size = blob.get_release_size(min_alloc_size);
+      uint32_t l = blob.get_logical_length();
+      ref.init(l, min_release_size);
+    }
+    ref.get(
+      l.blob_offset,
+      l.length);
+    ++num_extents;
+    if (depth != FSCK_SHALLOW &&
+      blob.has_unused()) {
+      ceph_assert(referenced);
+      auto p = referenced->find(l.blob);
+      bluestore_blob_t::unused_t* pu;
+      if (p == referenced->end()) {
+        pu = &(*referenced)[l.blob];
+      }
+      else {
+        pu = &p->second;
+      }
+      uint64_t blob_len = blob.get_logical_length();
+      ceph_assert((blob_len % (sizeof(*pu) * 8)) == 0);
+      ceph_assert(l.blob_offset + l.length <= blob_len);
+      uint64_t chunk_size = blob_len / (sizeof(*pu) * 8);
+      uint64_t start = l.blob_offset / chunk_size;
+      uint64_t end =
+        round_up_to(l.blob_offset + l.length, chunk_size) / chunk_size;
+      for (auto i = start; i < end; ++i) {
+        (*pu) |= (1u << i);
+      }
+    }
+  } //for (auto& l : o->extent_map.extent_map)
+
+  for (auto& i : ref_map) {
+    ++num_blobs;
+    const bluestore_blob_t& blob = i.first->get_blob();
+    bool equal =
+      depth == FSCK_SHALLOW ? true :
+      i.first->get_blob_use_tracker().equal(i.second);
+    if (!equal) {
+      derr << "fsck error: " << oid << " blob " << *i.first
+        << " doesn't match expected ref_map " << i.second << dendl;
+      ++errors;
+    }
+    if (blob.is_compressed()) {
+      res_statfs->data_compressed += blob.get_compressed_payload_length();
+      res_statfs->data_compressed_original +=
+        i.first->get_referenced_bytes();
+    }
+    if (blob.is_shared()) {
+      if (i.first->shared_blob->get_sbid() > blobid_max) {
+        derr << "fsck error: " << oid << " blob " << blob
+          << " sbid " << i.first->shared_blob->get_sbid() << " > blobid_max "
+          << blobid_max << dendl;
+        ++errors;
+      }
+      else if (i.first->shared_blob->get_sbid() == 0) {
+        derr << "fsck error: " << oid << " blob " << blob
+          << " marked as shared but has uninitialized sbid"
+          << dendl;
+        ++errors;
+      }
+      // the below lock is optional and provided in multithreading mode only
+      if (sb_info_lock) {
+        sb_info_lock->lock();
+      }
+      sb_info_t& sbi = sb_info[i.first->shared_blob->get_sbid()];
+      ceph_assert(sbi.cid == coll_t() || sbi.cid == c->cid);
+      ceph_assert(sbi.pool_id == INT64_MIN ||
+        sbi.pool_id == oid.hobj.get_logical_pool());
+      sbi.cid = c->cid;
+      sbi.pool_id = oid.hobj.get_logical_pool();
+      sbi.sb = i.first->shared_blob;
+      sbi.oids.push_back(oid);
+      sbi.compressed = blob.is_compressed();
+      for (auto e : blob.get_extents()) {
+        if (e.is_valid()) {
+          sbi.ref_map.get(e.offset, e.length);
+        }
+      }
+      if (sb_info_lock) {
+        sb_info_lock->unlock();
+      }
+    } else if (depth != FSCK_SHALLOW) {
+      ceph_assert(used_blocks);
+      errors += _fsck_check_extents(c->cid, oid, blob.get_extents(),
+        blob.is_compressed(),
+        *used_blocks,
+        fm->get_alloc_size(),
+        repairer,
+        *res_statfs,
+        depth);
+    } else {
+      errors += _fsck_sum_extents(
+        blob.get_extents(),
+        blob.is_compressed(),
+        *res_statfs);
+    }
+  } // for (auto& i : ref_map)
+  return o;
+}
+
+#include "common/WorkQueue.h"
+
+class ShallowFSCKThreadPool : public ThreadPool
+{
+public:
+  ShallowFSCKThreadPool(CephContext* cct_, std::string nm, std::string tn, int n) :
+    ThreadPool(cct_, nm, tn, n) {
+  }
+  void worker(ThreadPool::WorkThread* wt) override {
+    int next_wq = 0;
+    while (!_stop) {
+      next_wq %= work_queues.size();
+      WorkQueue_ *wq = work_queues[next_wq++];
+
+      void* item = wq->_void_dequeue();
+      if (item) {
+        processing++;
+        TPHandle tp_handle(cct, nullptr, wq->timeout_interval, wq->suicide_interval);
+        wq->_void_process(item, tp_handle);
+        processing--;
+      }
+    }
+  }
+  template <size_t BatchLen>
+  struct FSCKWorkQueue : public ThreadPool::WorkQueue_
+  {
+    struct Entry {
+      int64_t pool_id;
+      BlueStore::CollectionRef c;
+      ghobject_t oid;
+      string key;
+      bufferlist value;
+    };
+    struct Batch {
+      std::atomic<size_t> running = { 0 };
+      size_t entry_count = 0;
+      std::array<Entry, BatchLen> entries;
+
+      int64_t errors = 0;
+      int64_t warnings = 0;
+      uint64_t num_objects = 0;
+      uint64_t num_extents = 0;
+      uint64_t num_blobs = 0;
+      uint64_t num_sharded_objects = 0;
+      uint64_t num_spanning_blobs = 0;
+      store_statfs_t expected_store_statfs;
+      BlueStore::per_pool_statfs expected_pool_statfs;
+    };
+
+    size_t batchCount;
+    BlueStore* store = nullptr;
+
+    mempool::bluestore_fsck::list<string>* expecting_shards = nullptr;
+    ceph::mutex* sb_info_lock = nullptr;
+    BlueStore::sb_info_map_t* sb_info = nullptr;
+    BlueStoreRepairer* repairer = nullptr;
+
+    Batch* batches = nullptr;
+    size_t last_batch_pos = 0;
+    bool batch_acquired = false;
+
+    FSCKWorkQueue(std::string n,
+                  size_t _batchCount,
+                  BlueStore* _store,
+                  mempool::bluestore_fsck::list<string>& _expecting_shards,
+                  ceph::mutex* _sb_info_lock,
+                  BlueStore::sb_info_map_t& _sb_info,
+                  BlueStoreRepairer* _repairer) :
+      WorkQueue_(n, time_t(), time_t()),
+      batchCount(_batchCount),
+      store(_store),
+      expecting_shards(&_expecting_shards),
+      sb_info_lock(_sb_info_lock),
+      sb_info(&_sb_info),
+      repairer(_repairer)
+    {
+      batches = new Batch[batchCount];
+    }
+    ~FSCKWorkQueue() {
+      delete[] batches;
+    }
+
+    /// Remove all work items from the queue.
+    void _clear() override {
+      //do nothing
+    }
+    /// Check whether there is anything to do.
+    bool _empty() override {
+      ceph_assert(false);
+    }
+
+    /// Get the next work item to process.
+    void* _void_dequeue() override {
+      size_t pos = rand() % batchCount;
+      size_t pos0 = pos;
+      do {
+        auto& batch = batches[pos];
+        if (batch.running.fetch_add(1) == 0) {
+          if (batch.entry_count) {
+            return &batch;
+          }
+        }
+        batch.running--;
+        pos++;
+        pos %= batchCount;
+      } while (pos != pos0);
+      return nullptr;
+    }
+    /** @brief Process the work item.
+     * This function will be called several times in parallel
+     * and must therefore be thread-safe. */
+    void _void_process(void* item, TPHandle& handle) override {
+      Batch* batch = (Batch*)item;
+
+      BlueStore::FSCK_ObjectCtx ctx(
+        batch->errors,
+        batch->warnings,
+        batch->num_objects,
+        batch->num_extents,
+        batch->num_blobs,
+        batch->num_sharded_objects,
+        batch->num_spanning_blobs,
+        nullptr, // used_blocks
+        nullptr, // used_omap_head;
+        nullptr, // used_per_pool_omap_head;
+        nullptr, // used_pgmeta_omap_head;
+        sb_info_lock,
+        *sb_info,
+        batch->expected_store_statfs,
+        batch->expected_pool_statfs,
+        repairer);
+
+      for (size_t i = 0; i < batch->entry_count; i++) {
+        auto& entry = batch->entries[i];
+
+        store->fsck_check_objects_shallow(
+          BlueStore::FSCK_SHALLOW,
+          entry.pool_id,
+          entry.c,
+          entry.oid,
+          entry.key,
+          entry.value,
+          *expecting_shards,
+          nullptr, // referenced
+          ctx);
+      }
+      //std::cout << "processed " << batch << std::endl;
+      batch->entry_count = 0;
+      batch->running--;
+    }
+    /** @brief Synchronously finish processing a work item.
+     * This function is called after _void_process with the global thread pool lock held,
+     * so at most one copy will execute simultaneously for a given thread pool.
+     * It can be used for non-thread-safe finalization. */
+    void _void_process_finish(void*) override {
+      ceph_assert(false);
+    }
+
+    bool queue(
+      int64_t pool_id,
+      BlueStore::CollectionRef c,
+      const ghobject_t& oid,
+      const string& key,
+      const bufferlist& value) {
+      bool res = false;
+      size_t pos0 = last_batch_pos;
+      if (!batch_acquired) {
+        do {
+          auto& batch = batches[last_batch_pos];
+          if (batch.running.fetch_add(1) == 0) {
+            if (batch.entry_count < BatchLen) {
+              batch_acquired = true;
+              break;
+            }
+          }
+          batch.running.fetch_sub(1);
+          last_batch_pos++;
+          last_batch_pos %= batchCount;
+        } while (last_batch_pos != pos0);
+      }
+      if (batch_acquired) {
+        auto& batch = batches[last_batch_pos];
+        ceph_assert(batch.running);
+        ceph_assert(batch.entry_count < BatchLen);
+
+        auto& entry = batch.entries[batch.entry_count];
+        entry.pool_id = pool_id;
+        entry.c = c;
+        entry.oid = oid;
+        entry.key = key;
+        entry.value = value;
+
+        ++batch.entry_count;
+        if (batch.entry_count == BatchLen) {
+          batch_acquired = false;
+          batch.running.fetch_sub(1);
+          last_batch_pos++;
+          last_batch_pos %= batchCount;
+        }
+        res = true;
+      }
+      return res;
+    }
+
+    void finalize(ThreadPool& tp,
+                  BlueStore::FSCK_ObjectCtx& ctx) {
+      if (batch_acquired) {
+        auto& batch = batches[last_batch_pos];
+        ceph_assert(batch.running);
+        batch.running.fetch_sub(1);
+      }
+      tp.stop();
+
+      for (size_t i = 0; i < batchCount; i++) {
+        auto& batch = batches[i];
+
+        //process leftovers if any
+        if (batch.entry_count) {
+          TPHandle tp_handle(store->cct,
+            nullptr,
+            timeout_interval,
+            suicide_interval);
+          ceph_assert(batch.running == 0);
+
+          batch.running++; // just to be on-par with the regular call
+          _void_process(&batch, tp_handle);
+        }
+        ceph_assert(batch.entry_count == 0);
+
+        ctx.errors += batch.errors;
+        ctx.warnings += batch.warnings;
+        ctx.num_objects += batch.num_objects;
+        ctx.num_extents += batch.num_extents;
+        ctx.num_blobs += batch.num_blobs;
+        ctx.num_sharded_objects += batch.num_sharded_objects;
+        ctx.num_spanning_blobs += batch.num_spanning_blobs;
+        ctx.expected_store_statfs.add(batch.expected_store_statfs);
+
+        for (auto it = batch.expected_pool_statfs.begin();
+          it != batch.expected_pool_statfs.end();
+          it++) {
+          ctx.expected_pool_statfs[it->first].add(it->second);
+        }
+      }
+    }
+  };
+};
+
+void BlueStore::_fsck_check_objects(FSCKDepth depth,
+  BlueStore::FSCK_ObjectCtx& ctx)
+{
+  //no need for the below lock when in non-shallow mode as
+  // there is no multithreading in this case
+  if (depth != FSCK_SHALLOW) {
+    ctx.sb_info_lock = nullptr;
+  }
+
+  auto& errors = ctx.errors;
+  auto used_omap_head = ctx.used_omap_head;
+  auto used_pgmeta_omap_head = ctx.used_pgmeta_omap_head;
+  auto sb_info_lock = ctx.sb_info_lock;
+  auto& sb_info = ctx.sb_info;
+  auto repairer = ctx.repairer;
+
+  uint64_t_btree_t used_nids;
+
+  size_t processed_myself = 0;
+
+  auto it = db->get_iterator(PREFIX_OBJ);
+  mempool::bluestore_fsck::list<string> expecting_shards;
+  if (it) {
+    const size_t thread_count = cct->_conf->bluestore_fsck_quick_fix_threads;
+    typedef ShallowFSCKThreadPool::FSCKWorkQueue<256> WQ;
+    std::unique_ptr<WQ> wq(
+      new WQ(
+        "FSCKWorkQueue",
+        (thread_count ? : 1) * 32,
+        this,
+        expecting_shards,
+        sb_info_lock,
+        sb_info,
+        repairer));
+
+    ShallowFSCKThreadPool thread_pool(cct, "ShallowFSCKThreadPool", "ShallowFSCK", thread_count);
+
+    thread_pool.add_work_queue(wq.get());
+    if (depth == FSCK_SHALLOW && thread_count > 0) {
+      //not the best place but let's check anyway
+      ceph_assert(sb_info_lock);
+      thread_pool.start();
+    }
+
+    //fill global if not overriden below
+    CollectionRef c;
+    int64_t pool_id = -1;
+    spg_t pgid;
+    for (it->lower_bound(string()); it->valid(); it->next()) {
+      dout(30) << __func__ << " key "
+        << pretty_binary_string(it->key()) << dendl;
+      if (is_extent_shard_key(it->key())) {
+        if (depth == FSCK_SHALLOW) {
+          continue;
+        }
+        while (!expecting_shards.empty() &&
+          expecting_shards.front() < it->key()) {
+          derr << "fsck error: missing shard key "
+            << pretty_binary_string(expecting_shards.front())
+            << dendl;
+          ++errors;
+          expecting_shards.pop_front();
+        }
+        if (!expecting_shards.empty() &&
+          expecting_shards.front() == it->key()) {
+          // all good
+          expecting_shards.pop_front();
+          continue;
+        }
+
+        uint32_t offset;
+        string okey;
+        get_key_extent_shard(it->key(), &okey, &offset);
+        derr << "fsck error: stray shard 0x" << std::hex << offset
+          << std::dec << dendl;
+        if (expecting_shards.empty()) {
+          derr << "fsck error: " << pretty_binary_string(it->key())
+            << " is unexpected" << dendl;
+          ++errors;
+          continue;
+        }
+        while (expecting_shards.front() > it->key()) {
+          derr << "fsck error:   saw " << pretty_binary_string(it->key())
+            << dendl;
+          derr << "fsck error:   exp "
+            << pretty_binary_string(expecting_shards.front()) << dendl;
+          ++errors;
+          expecting_shards.pop_front();
+          if (expecting_shards.empty()) {
+            break;
+          }
+        }
+        continue;
+      }
+
+      ghobject_t oid;
+      int r = get_key_object(it->key(), &oid);
+      if (r < 0) {
+        derr << "fsck error: bad object key "
+          << pretty_binary_string(it->key()) << dendl;
+        ++errors;
+        continue;
+      }
+      if (!c ||
+        oid.shard_id != pgid.shard ||
+        oid.hobj.get_logical_pool() != (int64_t)pgid.pool() ||
+        !c->contains(oid)) {
+        c = nullptr;
+        for (auto& p : coll_map) {
+          if (p.second->contains(oid)) {
+            c = p.second;
+            break;
+          }
+        }
+        if (!c) {
+          derr << "fsck error: stray object " << oid
+            << " not owned by any collection" << dendl;
+          ++errors;
+          continue;
+        }
+        pool_id = c->cid.is_pg(&pgid) ? pgid.pool() : META_POOL_ID;
+        dout(20) << __func__ << "  collection " << c->cid << " " << c->cnode
+          << dendl;
+      }
+
+      if (depth != FSCK_SHALLOW &&
+        !expecting_shards.empty()) {
+        for (auto& k : expecting_shards) {
+          derr << "fsck error: missing shard key "
+            << pretty_binary_string(k) << dendl;
+        }
+        ++errors;
+        expecting_shards.clear();
+      }
+
+      bool queued = false;
+      if (depth == FSCK_SHALLOW && thread_count > 0) {
+        queued = wq->queue(
+          pool_id,
+          c,
+          oid,
+          it->key(),
+          it->value());
+      }
+      OnodeRef o;
+      map<BlobRef, bluestore_blob_t::unused_t> referenced;
+
+      if (!queued) {
+        ++processed_myself;
+
+         o = fsck_check_objects_shallow(
+          depth,
+          pool_id,
+          c,
+          oid,
+          it->key(),
+          it->value(),
+          expecting_shards,
+          &referenced,
+          ctx);
+      }
+
+      if (depth != FSCK_SHALLOW) {
+        ceph_assert(o != nullptr);
+        if (o->onode.nid) {
+          if (o->onode.nid > nid_max) {
+            derr << "fsck error: " << oid << " nid " << o->onode.nid
+              << " > nid_max " << nid_max << dendl;
+            ++errors;
+          }
+          if (used_nids.count(o->onode.nid)) {
+            derr << "fsck error: " << oid << " nid " << o->onode.nid
+              << " already in use" << dendl;
+            ++errors;
+            continue; // go for next object
+          }
+          used_nids.insert(o->onode.nid);
+        }
+        for (auto& i : referenced) {
+          dout(20) << __func__ << "  referenced 0x" << std::hex << i.second
+            << std::dec << " for " << *i.first << dendl;
+          const bluestore_blob_t& blob = i.first->get_blob();
+          if (i.second & blob.unused) {
+            derr << "fsck error: " << oid << " blob claims unused 0x"
+              << std::hex << blob.unused
+              << " but extents reference 0x" << i.second << std::dec
+              << " on blob " << *i.first << dendl;
+            ++errors;
+          }
+          if (blob.has_csum()) {
+            uint64_t blob_len = blob.get_logical_length();
+            uint64_t unused_chunk_size = blob_len / (sizeof(blob.unused) * 8);
+            unsigned csum_count = blob.get_csum_count();
+            unsigned csum_chunk_size = blob.get_csum_chunk_size();
+            for (unsigned p = 0; p < csum_count; ++p) {
+              unsigned pos = p * csum_chunk_size;
+              unsigned firstbit = pos / unused_chunk_size;    // [firstbit,lastbit]
+              unsigned lastbit = (pos + csum_chunk_size - 1) / unused_chunk_size;
+              unsigned mask = 1u << firstbit;
+              for (unsigned b = firstbit + 1; b <= lastbit; ++b) {
+                mask |= 1u << b;
+              }
+              if ((blob.unused & mask) == mask) {
+                // this csum chunk region is marked unused
+                if (blob.get_csum_item(p) != 0) {
+                  derr << "fsck error: " << oid
+                    << " blob claims csum chunk 0x" << std::hex << pos
+                    << "~" << csum_chunk_size
+                    << " is unused (mask 0x" << mask << " of unused 0x"
+                    << blob.unused << ") but csum is non-zero 0x"
+                    << blob.get_csum_item(p) << std::dec << " on blob "
+                    << *i.first << dendl;
+                  ++errors;
+                }
+              }
+            }
+          }
+        }
+        // omap
+        if (o->onode.has_omap()) {
+          ceph_assert(used_omap_head);
+          ceph_assert(used_pgmeta_omap_head);
+          auto m =
+            o->onode.is_pgmeta_omap() ? used_pgmeta_omap_head : used_omap_head;
+          if (m->count(o->onode.nid)) {
+            derr << "fsck error: " << oid << " omap_head " << o->onode.nid
+              << " already in use" << dendl;
+            ++errors;
+          } else {
+            m->insert(o->onode.nid);
+          }
+        }
+        if (depth == FSCK_DEEP) {
+          bufferlist bl;
+          uint64_t max_read_block = cct->_conf->bluestore_fsck_read_bytes_cap;
+          uint64_t offset = 0;
+          do {
+            uint64_t l = std::min(uint64_t(o->onode.size - offset), max_read_block);
+            int r = _do_read(c.get(), o, offset, l, bl,
+              CEPH_OSD_OP_FLAG_FADVISE_NOCACHE);
+            if (r < 0) {
+              ++errors;
+              derr << "fsck error: " << oid << std::hex
+                << " error during read: "
+                << " " << offset << "~" << l
+                << " " << cpp_strerror(r) << std::dec
+                << dendl;
+              break;
+            }
+            offset += l;
+          } while (offset < o->onode.size);
+        } // deep
+      } //if (depth != FSCK_SHALLOW)
+    } // for (it->lower_bound(string()); it->valid(); it->next())
+    if (depth == FSCK_SHALLOW && thread_count > 0) {
+      wq->finalize(thread_pool, ctx);
+      if (processed_myself) {
+        // may be needs more threads?
+        dout(0) << __func__ << " partial offload"
+                << ", done myself " << processed_myself
+                << " of " << ctx.num_objects
+                << "objects, threads " << thread_count
+                << dendl;
+      }
+    }
+  } // if (it)
+}
+/**
+An overview for currently implemented repair logics 
+performed in fsck in two stages: detection(+preparation) and commit.
+Detection stage (in processing order):
+  (Issue -> Repair action to schedule)
+  - Detect undecodable keys for Shared Blobs -> Remove
+  - Detect undecodable records for Shared Blobs -> Remove 
+    (might trigger missed Shared Blob detection below)
+  - Detect stray records for Shared Blobs -> Remove
+  - Detect misreferenced pextents -> Fix
+    Prepare Bloom-like filter to track cid/oid -> pextent 
+    Prepare list of extents that are improperly referenced
+    Enumerate Onode records that might use 'misreferenced' pextents
+    (Bloom-like filter applied to reduce computation)
+      Per each questinable Onode enumerate all blobs and identify broken ones 
+      (i.e. blobs having 'misreferences')
+      Rewrite each broken blob data by allocating another extents and 
+      copying data there
+      If blob is shared - unshare it and mark corresponding Shared Blob 
+      for removal
+      Release previously allocated space
+      Update Extent Map
+  - Detect missed Shared Blobs -> Recreate
+  - Detect undecodable deferred transaction -> Remove
+  - Detect Freelist Manager's 'false free' entries -> Mark as used
+  - Detect Freelist Manager's leaked entries -> Mark as free
+  - Detect statfs inconsistency - Update
+  Commit stage (separate DB commit per each step):
+  - Apply leaked FM entries fix
+  - Apply 'false free' FM entries fix
+  - Apply 'Remove' actions
+  - Apply fix for misreference pextents
+  - Apply Shared Blob recreate 
+    (can be merged with the step above if misreferences were dectected)
+  - Apply StatFS update
+*/
+int BlueStore::_fsck(BlueStore::FSCKDepth depth, bool repair)
+{
+  dout(1) << __func__
+    << (repair ? " repair" : " check")
+    << (depth == FSCK_DEEP ? " (deep)" :
+      depth == FSCK_SHALLOW ? " (shallow)" : " (regular)")
+    << dendl;
+
+  // in deep mode we need R/W write access to be able to replay deferred ops
+  bool read_only = !(repair || depth == FSCK_DEEP);
+
+  int r = _open_path();
+  if (r < 0)
+    return r;
   r = _open_fsid(false);
   if (r < 0)
     goto out_path;
@@ -6999,7 +7636,7 @@ int BlueStore::_fsck(bool deep, bool repair)
     }
   }
 
-  r = _open_collections(&errors);
+  r = _open_collections();
   if (r < 0)
     goto out_db;
 
@@ -7015,6 +7652,58 @@ int BlueStore::_fsck(bool deep, bool repair)
   if (r < 0)
     goto out_scan;
 
+  r = _fsck_on_open(depth, repair);
+
+out_scan:
+  mempool_thread.shutdown();
+  _flush_cache();
+out_db:
+  _close_db_and_around();
+out_bdev:
+  _close_bdev();
+out_fsid:
+  _close_fsid();
+out_path:
+  _close_path();
+
+  return r;
+}
+
+int BlueStore::_fsck_on_open(BlueStore::FSCKDepth depth, bool repair)
+{
+  dout(1) << __func__
+         << " <<<START>>>"
+         << (repair ? " repair" : " check")
+         << (depth == FSCK_DEEP ? " (deep)" :
+                depth == FSCK_SHALLOW ? " (shallow)" : " (regular)")
+          << " start" << dendl;
+  int64_t errors = 0;
+  int64_t warnings = 0;
+  unsigned repaired = 0;
+
+  uint64_t_btree_t used_omap_head;
+  uint64_t_btree_t used_per_pool_omap_head;
+  uint64_t_btree_t used_pgmeta_omap_head;
+  uint64_t_btree_t used_sbids;
+
+  mempool_dynamic_bitset used_blocks;
+  KeyValueDB::Iterator it;
+  store_statfs_t expected_store_statfs, actual_statfs;
+  per_pool_statfs expected_pool_statfs;
+
+  sb_info_map_t sb_info;
+
+  uint64_t num_objects = 0;
+  uint64_t num_extents = 0;
+  uint64_t num_blobs = 0;
+  uint64_t num_spanning_blobs = 0;
+  uint64_t num_shared_blobs = 0;
+  uint64_t num_sharded_objects = 0;
+  BlueStoreRepairer repairer;
+
+  utime_t start = ceph_clock_now();
+
+  _fsck_collections(&errors);
   used_blocks.resize(fm->get_alloc_units());
   apply(
     0, std::max<uint64_t>(min_alloc_size, SUPER_RESERVED), fm->get_alloc_size(), used_blocks,
@@ -7065,14 +7754,26 @@ int BlueStore::_fsck(bool deep, bool repair)
         }
        );
     }
-    r = bluefs->fsck();
+    int r = bluefs->fsck();
     if (r < 0) {
-      goto out_scan;
+      return r;
     }
     if (r > 0)
       errors += r;
   }
 
+  if (!per_pool_stat_collection) {
+    const char *w;
+    if (cct->_conf->bluestore_fsck_error_on_no_per_pool_stats) {
+      w = "error";
+      ++errors;
+    } else {
+      w = "warning";
+      ++warnings;
+    }
+    derr << "fsck " << w << ": store not yet converted to per-pool stats"
+        << dendl;
+  }
   // get expected statfs; reset unaffected fields to be able to compare
   // structs
   statfs(&actual_statfs);
@@ -7082,335 +7783,41 @@ int BlueStore::_fsck(bool deep, bool repair)
   actual_statfs.internal_metadata = 0;
   actual_statfs.omap_allocated = 0;
 
-  need_per_pool_stats = per_pool_stat_collection || need_per_pool_stats;
-
+  if (g_conf()->bluestore_debug_fsck_abort) {
+    dout(1) << __func__ << " debug abort" << dendl;
+    goto out_scan;
+  }
   // walk PREFIX_OBJ
-  dout(1) << __func__ << " walking object keyspace" << dendl;
-  it = db->get_iterator(PREFIX_OBJ);
-  if (it) {
-     //fill global if not overriden below
-    expected_statfs = &expected_store_statfs;
-
-    CollectionRef c;
-    spg_t pgid;
-    mempool::bluestore_fsck::list<string> expecting_shards;
-    for (it->lower_bound(string()); it->valid(); it->next()) {
-      if (g_conf()->bluestore_debug_fsck_abort) {
-       goto out_scan;
-      }
-      dout(30) << __func__ << " key "
-               << pretty_binary_string(it->key()) << dendl;
-      if (is_extent_shard_key(it->key())) {
-       while (!expecting_shards.empty() &&
-              expecting_shards.front() < it->key()) {
-         derr << "fsck error: missing shard key "
-              << pretty_binary_string(expecting_shards.front())
-              << dendl;
-         ++errors;
-         expecting_shards.pop_front();
-       }
-       if (!expecting_shards.empty() &&
-           expecting_shards.front() == it->key()) {
-         // all good
-         expecting_shards.pop_front();
-         continue;
-       }
-
-        uint32_t offset;
-        string okey;
-        get_key_extent_shard(it->key(), &okey, &offset);
-        derr << "fsck error: stray shard 0x" << std::hex << offset
-            << std::dec << dendl;
-        if (expecting_shards.empty()) {
-          derr << "fsck error: " << pretty_binary_string(it->key())
-               << " is unexpected" << dendl;
-          ++errors;
-          continue;
-        }
-       while (expecting_shards.front() > it->key()) {
-         derr << "fsck error:   saw " << pretty_binary_string(it->key())
-              << dendl;
-         derr << "fsck error:   exp "
-              << pretty_binary_string(expecting_shards.front()) << dendl;
-         ++errors;
-         expecting_shards.pop_front();
-         if (expecting_shards.empty()) {
-           break;
-         }
-       }
-       continue;
-      }
-
-      ghobject_t oid;
-      int r = get_key_object(it->key(), &oid);
-      if (r < 0) {
-        derr << "fsck error: bad object key "
-             << pretty_binary_string(it->key()) << dendl;
-       ++errors;
-       continue;
-      }
-      if (!c ||
-         oid.shard_id != pgid.shard ||
-         oid.hobj.get_logical_pool() != (int64_t)pgid.pool() ||
-         !c->contains(oid)) {
-       c = nullptr;
-       for (auto& p : coll_map) {
-         if (p.second->contains(oid)) {
-           c = p.second;
-           break;
-         }
-       }
-       if (!c) {
-          derr << "fsck error: stray object " << oid
-               << " not owned by any collection" << dendl;
-         ++errors;
-         continue;
-       }
-       auto pool_id = c->cid.is_pg(&pgid) ? pgid.pool() : META_POOL_ID;
-       dout(20) << __func__ << "  collection " << c->cid << " " << c->cnode
-                << dendl;
-       if (need_per_pool_stats) {
-         expected_statfs = &expected_pool_statfs[pool_id];
-       }
-
-       dout(20) << __func__ << "  collection " << c->cid << " " << c->cnode
-                << dendl;
-      }
-
-      if (!expecting_shards.empty()) {
-       for (auto &k : expecting_shards) {
-         derr << "fsck error: missing shard key "
-              << pretty_binary_string(k) << dendl;
-       }
-       ++errors;
-       expecting_shards.clear();
-      }
-
-      dout(10) << __func__ << "  " << oid << dendl;
-      store_statfs_t onode_statfs;
-      RWLock::RLocker l(c->lock);
-      OnodeRef o = c->get_onode(oid, false);
-      if (o->onode.nid) {
-       if (o->onode.nid > nid_max) {
-         derr << "fsck error: " << oid << " nid " << o->onode.nid
-              << " > nid_max " << nid_max << dendl;
-         ++errors;
-       }
-       if (used_nids.count(o->onode.nid)) {
-         derr << "fsck error: " << oid << " nid " << o->onode.nid
-              << " already in use" << dendl;
-         ++errors;
-         continue; // go for next object
-       }
-       used_nids.insert(o->onode.nid);
-      }
-      ++num_objects;
-      num_spanning_blobs += o->extent_map.spanning_blob_map.size();
-      o->extent_map.fault_range(db, 0, OBJECT_MAX_SIZE);
-      _dump_onode<30>(cct, *o);
-      // shards
-      if (!o->extent_map.shards.empty()) {
-       ++num_sharded_objects;
-       num_object_shards += o->extent_map.shards.size();
-      }
-      for (auto& s : o->extent_map.shards) {
-       dout(20) << __func__ << "    shard " << *s.shard_info << dendl;
-       expecting_shards.push_back(string());
-       get_extent_shard_key(o->key, s.shard_info->offset,
-                            &expecting_shards.back());
-       if (s.shard_info->offset >= o->onode.size) {
-         derr << "fsck error: " << oid << " shard 0x" << std::hex
-              << s.shard_info->offset << " past EOF at 0x" << o->onode.size
-              << std::dec << dendl;
-         ++errors;
-       }
-      }
-      // lextents
-      map<BlobRef,bluestore_blob_t::unused_t> referenced;
-      uint64_t pos = 0;
-      mempool::bluestore_fsck::map<BlobRef,
-                                  bluestore_blob_use_tracker_t> ref_map;
-      for (auto& l : o->extent_map.extent_map) {
-       dout(20) << __func__ << "    " << l << dendl;
-       if (l.logical_offset < pos) {
-         derr << "fsck error: " << oid << " lextent at 0x"
-              << std::hex << l.logical_offset
-              << " overlaps with the previous, which ends at 0x" << pos
-              << std::dec << dendl;
-         ++errors;
-       }
-       if (o->extent_map.spans_shard(l.logical_offset, l.length)) {
-         derr << "fsck error: " << oid << " lextent at 0x"
-              << std::hex << l.logical_offset << "~" << l.length
-              << " spans a shard boundary"
-              << std::dec << dendl;
-         ++errors;
-       }
-       pos = l.logical_offset + l.length;
-       onode_statfs.data_stored += l.length;
-       ceph_assert(l.blob);
-       const bluestore_blob_t& blob = l.blob->get_blob();
-
-        auto& ref = ref_map[l.blob];
-        if (ref.is_empty()) {
-          uint32_t min_release_size = blob.get_release_size(min_alloc_size);
-          uint32_t l = blob.get_logical_length();
-          ref.init(l, min_release_size);
-        }
-       ref.get(
-         l.blob_offset, 
-         l.length);
-       ++num_extents;
-       if (blob.has_unused()) {
-         auto p = referenced.find(l.blob);
-         bluestore_blob_t::unused_t *pu;
-         if (p == referenced.end()) {
-           pu = &referenced[l.blob];
-         } else {
-           pu = &p->second;
-         }
-         uint64_t blob_len = blob.get_logical_length();
-         ceph_assert((blob_len % (sizeof(*pu)*8)) == 0);
-         ceph_assert(l.blob_offset + l.length <= blob_len);
-         uint64_t chunk_size = blob_len / (sizeof(*pu)*8);
-         uint64_t start = l.blob_offset / chunk_size;
-         uint64_t end =
-           round_up_to(l.blob_offset + l.length, chunk_size) / chunk_size;
-         for (auto i = start; i < end; ++i) {
-           (*pu) |= (1u << i);
-         }
-       }
-      }
-      for (auto &i : referenced) {
-       dout(20) << __func__ << "  referenced 0x" << std::hex << i.second
-                << std::dec << " for " << *i.first << dendl;
-       const bluestore_blob_t& blob = i.first->get_blob();
-       if (i.second & blob.unused) {
-         derr << "fsck error: " << oid << " blob claims unused 0x"
-              << std::hex << blob.unused
-              << " but extents reference 0x" << i.second << std::dec
-              << " on blob " << *i.first << dendl;
-         ++errors;
-       }
-       if (blob.has_csum()) {
-         uint64_t blob_len = blob.get_logical_length();
-         uint64_t unused_chunk_size = blob_len / (sizeof(blob.unused)*8);
-         unsigned csum_count = blob.get_csum_count();
-         unsigned csum_chunk_size = blob.get_csum_chunk_size();
-         for (unsigned p = 0; p < csum_count; ++p) {
-           unsigned pos = p * csum_chunk_size;
-           unsigned firstbit = pos / unused_chunk_size;    // [firstbit,lastbit]
-           unsigned lastbit = (pos + csum_chunk_size - 1) / unused_chunk_size;
-           unsigned mask = 1u << firstbit;
-           for (unsigned b = firstbit + 1; b <= lastbit; ++b) {
-             mask |= 1u << b;
-           }
-           if ((blob.unused & mask) == mask) {
-             // this csum chunk region is marked unused
-             if (blob.get_csum_item(p) != 0) {
-               derr << "fsck error: " << oid
-                    << " blob claims csum chunk 0x" << std::hex << pos
-                    << "~" << csum_chunk_size
-                    << " is unused (mask 0x" << mask << " of unused 0x"
-                    << blob.unused << ") but csum is non-zero 0x"
-                    << blob.get_csum_item(p) << std::dec << " on blob "
-                    << *i.first << dendl;
-               ++errors;
-             }
-           }
-         }
-       }
-      }
-      for (auto &i : ref_map) {
-       ++num_blobs;
-       const bluestore_blob_t& blob = i.first->get_blob();
-       bool equal = i.first->get_blob_use_tracker().equal(i.second);
-       if (!equal) {
-         derr << "fsck error: " << oid << " blob " << *i.first
-              << " doesn't match expected ref_map " << i.second << dendl;
-         ++errors;
-       }
-       if (blob.is_compressed()) {
-         onode_statfs.data_compressed += blob.get_compressed_payload_length();
-         onode_statfs.data_compressed_original +=
-           i.first->get_referenced_bytes();
-       }
-       if (blob.is_shared()) {
-         if (i.first->shared_blob->get_sbid() > blobid_max) {
-           derr << "fsck error: " << oid << " blob " << blob
-                << " sbid " << i.first->shared_blob->get_sbid() << " > blobid_max "
-                << blobid_max << dendl;
-           ++errors;
-         } else if (i.first->shared_blob->get_sbid() == 0) {
-            derr << "fsck error: " << oid << " blob " << blob
-                 << " marked as shared but has uninitialized sbid"
-                 << dendl;
-            ++errors;
-          }
-         sb_info_t& sbi = sb_info[i.first->shared_blob->get_sbid()];
-         ceph_assert(sbi.cid == coll_t() || sbi.cid == c->cid);
-         ceph_assert(sbi.pool_id == INT64_MIN ||
-                     sbi.pool_id == oid.hobj.get_logical_pool());
-         sbi.cid = c->cid;
-         sbi.pool_id = oid.hobj.get_logical_pool();
-         sbi.sb = i.first->shared_blob;
-         sbi.oids.push_back(oid);
-         sbi.compressed = blob.is_compressed();
-         for (auto e : blob.get_extents()) {
-           if (e.is_valid()) {
-             sbi.ref_map.get(e.offset, e.length);
-           }
-         }
-       } else {
-         errors += _fsck_check_extents(c->cid, oid, blob.get_extents(),
-                                       blob.is_compressed(),
-                                       used_blocks,
-                                       fm->get_alloc_size(),
-                                       repair ? &repairer : nullptr,
-                                       onode_statfs);
-        }
-      }
-      if (deep) {
-       bufferlist bl;
-       uint64_t max_read_block = cct->_conf->bluestore_fsck_read_bytes_cap;
-       uint64_t offset = 0;
-       do {
-         uint64_t l = std::min(uint64_t(o->onode.size - offset), max_read_block);
-         int r = _do_read(c.get(), o, offset, l, bl,
-           CEPH_OSD_OP_FLAG_FADVISE_NOCACHE);
-         if (r < 0) {
-           ++errors;
-           derr << "fsck error: " << oid << std::hex
-                << " error during read: "
-                << " " << offset << "~" << l
-                << " " << cpp_strerror(r) << std::dec
-                << dendl;
-           break;
-         }
-         offset += l;
-       } while (offset < o->onode.size);
-      }
-      // omap
-      if (o->onode.has_omap()) {
-       auto& m =
-         o->onode.is_pgmeta_omap() ? used_pgmeta_omap_head : used_omap_head;
-       if (m.count(o->onode.nid)) {
-         derr << "fsck error: " << oid << " omap_head " << o->onode.nid
-              << " already in use" << dendl;
-         ++errors;
-       } else {
-         m.insert(o->onode.nid);
-       }
-      }
-      expected_statfs->add(onode_statfs);
-    } // for (it->lower_bound(string()); it->valid(); it->next())
-  } // if (it)
+  {
+    dout(1) << __func__ << " walking object keyspace" << dendl;
+    ceph::mutex sb_info_lock =  ceph::make_mutex("BlueStore::fsck::sbinfo_lock");
+    BlueStore::FSCK_ObjectCtx ctx(
+      errors,
+      warnings,
+      num_objects,
+      num_extents,
+      num_blobs,
+      num_sharded_objects,
+      num_spanning_blobs,
+      &used_blocks,
+      &used_omap_head,
+      nullptr,
+      &used_pgmeta_omap_head,
+      &sb_info_lock,
+      sb_info,
+      expected_store_statfs,
+      expected_pool_statfs,
+      repair ? &repairer : nullptr);
+    _fsck_check_objects(depth,
+      ctx);
+  }
 
   dout(1) << __func__ << " checking shared_blobs" << dendl;
   it = db->get_iterator(PREFIX_SHARED_BLOB);
   if (it) {
-    //fill global if not overriden below
-    expected_statfs = &expected_store_statfs;
+    // FIXME minor: perhaps simplify for shallow mode?
+    // fill global if not overriden below
+    auto expected_statfs = &expected_store_statfs;
 
     for (it->lower_bound(string()); it->valid(); it->next()) {
       string key = it->key();
@@ -7467,7 +7874,7 @@ int BlueStore::_fsck(bool deep, bool repair)
        for (auto &r : shared_blob.ref_map.ref_map) {
          extents.emplace_back(bluestore_pextent_t(r.first, r.second.length));
        }
-       if (need_per_pool_stats) {
+       if (per_pool_stat_collection || repair) {
          expected_statfs = &expected_pool_statfs[sbi.pool_id];
        }
        errors += _fsck_check_extents(sbi.cid,
@@ -7477,7 +7884,8 @@ int BlueStore::_fsck(bool deep, bool repair)
                                      used_blocks,
                                      fm->get_alloc_size(),
                                      repair ? &repairer : nullptr,
-                                     *expected_statfs);
+                                     *expected_statfs,
+                                      depth);
        sbi.passed = true;
       }
     }
@@ -7491,8 +7899,8 @@ int BlueStore::_fsck(bool deep, bool repair)
     interval_set<uint64_t> to_release;
     it = db->get_iterator(PREFIX_OBJ);
     if (it) {
-      //fill global if not overriden below
-      expected_statfs = &expected_store_statfs;
+      // fill global if not overriden below
+      auto expected_statfs = &expected_store_statfs;
 
       CollectionRef c;
       spg_t pgid;
@@ -7526,8 +7934,8 @@ int BlueStore::_fsck(bool deep, bool repair)
          if (!c) {
            continue;
          }
-         auto pool_id = c->cid.is_pg(&pgid) ? pgid.pool() : META_POOL_ID;
-         if (need_per_pool_stats) {
+         if (per_pool_stat_collection || repair) {
+           auto pool_id = c->cid.is_pg(&pgid) ? pgid.pool() : META_POOL_ID;
            expected_statfs = &expected_pool_statfs[pool_id];
          }
        }
@@ -7538,8 +7946,8 @@ int BlueStore::_fsck(bool deep, bool repair)
        dout(20) << __func__ << " check misreference for col:" << c->cid
                  << " obj:" << oid << dendl;
 
-       RWLock::RLocker l(c->lock);
-       OnodeRef o = c->get_onode(oid, false);
+        OnodeRef o;
+        o.reset(Onode::decode(c, oid, it->key(), it->value()));
        o->extent_map.fault_range(db, 0, OBJECT_MAX_SIZE);
        mempool::bluestore_fsck::set<BlobRef> blobs;
 
@@ -7586,10 +7994,10 @@ int BlueStore::_fsck(bool deep, bool repair)
            PExtentVector exts;
            int64_t alloc_len = alloc->allocate(e->length, min_alloc_size,
                                                0, 0, &exts);
-           if (alloc_len < (int64_t)e->length) {
+           if (alloc_len < 0 || alloc_len < (int64_t)e->length) {
              derr << __func__
                   << " failed to allocate 0x" << std::hex << e->length
-                  << " allocated 0x " << alloc_len
+                  << " allocated 0x " << (alloc_len < 0 ? 0 : alloc_len)
                   << " min_alloc_size 0x" << min_alloc_size
                   << " available 0x " << alloc->get_free()
                   << std::dec << dendl;
@@ -7679,192 +8087,194 @@ int BlueStore::_fsck(bool deep, bool repair)
     } // if (it) {
   } //if (repair && repairer.preprocess_misreference()) {
 
-  for (auto &p : sb_info) {
-    sb_info_t& sbi = p.second;
-    if (!sbi.passed) {
-      derr << "fsck error: missing " << *sbi.sb << dendl;
-      ++errors;
-    }
-    if (repair && (!sbi.passed || sbi.updated)) {
-      auto sbid = p.first;
-      if (sbi.ref_map.empty()) {
-       ceph_assert(sbi.passed);
-       dout(20) << __func__ << " " << *sbi.sb
-                << " is empty, removing" << dendl;
-       repairer.fix_shared_blob(db, sbid, nullptr);
-      } else {
-       bufferlist bl;
-       bluestore_shared_blob_t persistent(sbid, std::move(sbi.ref_map));
-       encode(persistent, bl);
-       dout(20) << __func__ << " " << *sbi.sb
-                << " is " << bl.length() << " bytes, updating" << dendl;
+  if (depth != FSCK_SHALLOW) {
+    for (auto &p : sb_info) {
+      sb_info_t& sbi = p.second;
+      if (!sbi.passed) {
+        derr << "fsck error: missing " << *sbi.sb << dendl;
+        ++errors;
+      }
+      if (repair && (!sbi.passed || sbi.updated)) {
+        auto sbid = p.first;
+        if (sbi.ref_map.empty()) {
+         ceph_assert(sbi.passed);
+         dout(20) << __func__ << " " << *sbi.sb
+                  << " is empty, removing" << dendl;
+         repairer.fix_shared_blob(db, sbid, nullptr);
+        } else {
+         bufferlist bl;
+         bluestore_shared_blob_t persistent(sbid, std::move(sbi.ref_map));
+         encode(persistent, bl);
+         dout(20) << __func__ << " " << *sbi.sb
+                  << " is " << bl.length() << " bytes, updating" << dendl;
 
-       repairer.fix_shared_blob(db, sbid, &bl);
+         repairer.fix_shared_blob(db, sbid, &bl);
+        }
       }
     }
   }
   sb_info.clear();
 
-  // check global stats if no-pps is enforced only
-  if (!need_per_pool_stats) {
-    if (!(actual_statfs == expected_store_statfs)) {
-      derr << "fsck error: actual " << actual_statfs
-          << " != expected " << expected_store_statfs << dendl;
-      if (repair) {
-       repairer.fix_statfs(db, BLUESTORE_GLOBAL_STATFS_KEY,
-         expected_store_statfs);
-      }
-      ++errors;
+  // check global stats only if fscking (not repairing) w/o per-pool stats
+  if (!per_pool_stat_collection &&
+      !repair &&
+      !(actual_statfs == expected_store_statfs)) {
+    derr << "fsck error: actual " << actual_statfs
+        << " != expected " << expected_store_statfs << dendl;
+    if (repair) {
+      repairer.fix_statfs(db, BLUESTORE_GLOBAL_STATFS_KEY,
+                         expected_store_statfs);
     }
-  }
-  if (!enforce_no_per_pool_stats) {
-    dout(1) << __func__ << " checking pool_statfs" << dendl;
-    _fsck_check_pool_statfs(expected_pool_statfs, need_per_pool_stats,
-      errors, repair ? &repairer : nullptr);
+    ++errors;
   }
 
-  dout(1) << __func__ << " checking for stray omap data" << dendl;
-  it = db->get_iterator(PREFIX_OMAP);
-  if (it) {
-    for (it->lower_bound(string()); it->valid(); it->next()) {
-      uint64_t omap_head;
-      _key_decode_u64(it->key().c_str(), &omap_head);
-      if (used_omap_head.count(omap_head) == 0) {
-       derr << "fsck error: found stray omap data on omap_head "
-            << omap_head << dendl;
-       ++errors;
+  dout(1) << __func__ << " checking pool_statfs" << dendl;
+  _fsck_check_pool_statfs(expected_pool_statfs,
+                         errors, warnings, repair ? &repairer : nullptr);
+
+  if (depth != FSCK_SHALLOW) {
+    dout(1) << __func__ << " checking for stray omap data" << dendl;
+    it = db->get_iterator(PREFIX_OMAP);
+    if (it) {
+      for (it->lower_bound(string()); it->valid(); it->next()) {
+        uint64_t omap_head;
+        _key_decode_u64(it->key().c_str(), &omap_head);
+        if (used_omap_head.count(omap_head) == 0) {
+         derr << "fsck error: found stray omap data on omap_head "
+              << omap_head << dendl;
+         ++errors;
+        }
       }
     }
-  }
-  it = db->get_iterator(PREFIX_PGMETA_OMAP);
-  if (it) {
-    for (it->lower_bound(string()); it->valid(); it->next()) {
-      uint64_t omap_head;
-      _key_decode_u64(it->key().c_str(), &omap_head);
-      if (used_pgmeta_omap_head.count(omap_head) == 0) {
-       derr << "fsck error: found stray omap data on omap_head "
-            << omap_head << dendl;
-       ++errors;
+    it = db->get_iterator(PREFIX_PGMETA_OMAP);
+    if (it) {
+      for (it->lower_bound(string()); it->valid(); it->next()) {
+        uint64_t omap_head;
+        _key_decode_u64(it->key().c_str(), &omap_head);
+        if (used_pgmeta_omap_head.count(omap_head) == 0) {
+         derr << "fsck error: found stray (pgmeta) omap data on omap_head "
+              << omap_head << dendl;
+         ++errors;
+        }
       }
     }
-  }
-
-  dout(1) << __func__ << " checking deferred events" << dendl;
-  it = db->get_iterator(PREFIX_DEFERRED);
-  if (it) {
-    for (it->lower_bound(string()); it->valid(); it->next()) {
-      bufferlist bl = it->value();
-      auto p = bl.cbegin();
-      bluestore_deferred_transaction_t wt;
-      try {
-       decode(wt, p);
-      } catch (buffer::error& e) {
-       derr << "fsck error: failed to decode deferred txn "
-            << pretty_binary_string(it->key()) << dendl;
-       if (repair) {
-          dout(20) << __func__ << " undecodable deferred TXN record, key: '"
-                  << pretty_binary_string(it->key())
-                  << "', removing" << dendl;   
-         repairer.remove_key(db, PREFIX_DEFERRED, it->key());
-       }
-       continue;
+    dout(1) << __func__ << " checking deferred events" << dendl;
+    it = db->get_iterator(PREFIX_DEFERRED);
+    if (it) {
+      for (it->lower_bound(string()); it->valid(); it->next()) {
+        bufferlist bl = it->value();
+        auto p = bl.cbegin();
+        bluestore_deferred_transaction_t wt;
+        try {
+         decode(wt, p);
+        } catch (buffer::error& e) {
+         derr << "fsck error: failed to decode deferred txn "
+              << pretty_binary_string(it->key()) << dendl;
+         if (repair) {
+            dout(20) << __func__ << " undecodable deferred TXN record, key: '"
+                    << pretty_binary_string(it->key())
+                    << "', removing" << dendl;
+           repairer.remove_key(db, PREFIX_DEFERRED, it->key());
+         }
+         continue;
+        }
+        dout(20) << __func__ << "  deferred " << wt.seq
+                << " ops " << wt.ops.size()
+                << " released 0x" << std::hex << wt.released << std::dec << dendl;
+        for (auto e = wt.released.begin(); e != wt.released.end(); ++e) {
+          apply(
+            e.get_start(), e.get_len(), fm->get_alloc_size(), used_blocks,
+            [&](uint64_t pos, mempool_dynamic_bitset &bs) {
+         ceph_assert(pos < bs.size());
+              bs.set(pos);
+            }
+          );
+        }
       }
-      dout(20) << __func__ << "  deferred " << wt.seq
-              << " ops " << wt.ops.size()
-              << " released 0x" << std::hex << wt.released << std::dec << dendl;
-      for (auto e = wt.released.begin(); e != wt.released.end(); ++e) {
+    }
+
+    dout(1) << __func__ << " checking freelist vs allocated" << dendl;
+    {
+      // remove bluefs_extents from used set since the freelist doesn't
+      // know they are allocated.
+      for (auto e = bluefs_extents.begin(); e != bluefs_extents.end(); ++e) {
         apply(
           e.get_start(), e.get_len(), fm->get_alloc_size(), used_blocks,
           [&](uint64_t pos, mempool_dynamic_bitset &bs) {
-       ceph_assert(pos < bs.size());
-            bs.set(pos);
+           ceph_assert(pos < bs.size());
+           bs.reset(pos);
           }
         );
       }
-    }
-  }
-
-  dout(1) << __func__ << " checking freelist vs allocated" << dendl;
-  {
-    // remove bluefs_extents from used set since the freelist doesn't
-    // know they are allocated.
-    for (auto e = bluefs_extents.begin(); e != bluefs_extents.end(); ++e) {
-      apply(
-        e.get_start(), e.get_len(), fm->get_alloc_size(), used_blocks,
-        [&](uint64_t pos, mempool_dynamic_bitset &bs) {
-         ceph_assert(pos < bs.size());
-         bs.reset(pos);
-        }
-      );
-    }
-    fm->enumerate_reset();
-    uint64_t offset, length;
-    while (fm->enumerate_next(db, &offset, &length)) {
-      bool intersects = false;
-      apply(
-        offset, length, fm->get_alloc_size(), used_blocks,
-        [&](uint64_t pos, mempool_dynamic_bitset &bs) {
-         ceph_assert(pos < bs.size());
-          if (bs.test(pos)) {
-           if (offset == SUPER_RESERVED &&
-               length == min_alloc_size - SUPER_RESERVED) {
-             // this is due to the change just after luminous to min_alloc_size
-             // granularity allocations, and our baked in assumption at the top
-             // of _fsck that 0~round_up_to(SUPER_RESERVED,min_alloc_size) is used
-             // (vs luminous's round_up_to(SUPER_RESERVED,block_size)).  harmless,
-             // since we will never allocate this region below min_alloc_size.
-             dout(10) << __func__ << " ignoring free extent between SUPER_RESERVED"
-                      << " and min_alloc_size, 0x" << std::hex << offset << "~"
-                      << length << std::dec << dendl;
-           } else {
-              intersects = true;
-             if (repair) {
-               repairer.fix_false_free(db, fm,
-                                       pos * min_alloc_size,
-                                       min_alloc_size);
+      fm->enumerate_reset();
+      uint64_t offset, length;
+      while (fm->enumerate_next(db, &offset, &length)) {
+        bool intersects = false;
+        apply(
+          offset, length, fm->get_alloc_size(), used_blocks,
+          [&](uint64_t pos, mempool_dynamic_bitset &bs) {
+           ceph_assert(pos < bs.size());
+            if (bs.test(pos)) {
+             if (offset == SUPER_RESERVED &&
+                 length == min_alloc_size - SUPER_RESERVED) {
+               // this is due to the change just after luminous to min_alloc_size
+               // granularity allocations, and our baked in assumption at the top
+               // of _fsck that 0~round_up_to(SUPER_RESERVED,min_alloc_size) is used
+               // (vs luminous's round_up_to(SUPER_RESERVED,block_size)).  harmless,
+               // since we will never allocate this region below min_alloc_size.
+               dout(10) << __func__ << " ignoring free extent between SUPER_RESERVED"
+                        << " and min_alloc_size, 0x" << std::hex << offset << "~"
+                        << length << std::dec << dendl;
+             } else {
+                intersects = true;
+               if (repair) {
+                 repairer.fix_false_free(db, fm,
+                                         pos * min_alloc_size,
+                                         min_alloc_size);
+               }
              }
-           }
-          } else {
-           bs.set(pos);
+            } else {
+             bs.set(pos);
+            }
           }
+        );
+        if (intersects) {
+         derr << "fsck error: free extent 0x" << std::hex << offset
+               << "~" << length << std::dec
+               << " intersects allocated blocks" << dendl;
+         ++errors;
         }
-      );
-      if (intersects) {
-       derr << "fsck error: free extent 0x" << std::hex << offset
-             << "~" << length << std::dec
-             << " intersects allocated blocks" << dendl;
-       ++errors;
       }
-    }
-    fm->enumerate_reset();
-    size_t count = used_blocks.count();
-    if (used_blocks.size() != count) {
-      ceph_assert(used_blocks.size() > count);
-      used_blocks.flip();
-      size_t start = used_blocks.find_first();
-      while (start != decltype(used_blocks)::npos) {
-       size_t cur = start;
-       while (true) {
-         size_t next = used_blocks.find_next(cur);
-         if (next != cur + 1) {
-           ++errors;
-           derr << "fsck error: leaked extent 0x" << std::hex
-                << ((uint64_t)start * fm->get_alloc_size()) << "~"
-                << ((cur + 1 - start) * fm->get_alloc_size()) << std::dec
-                << dendl;
-           if (repair) {
-             repairer.fix_leaked(db,
-                                 fm,
-                                 start * min_alloc_size,
-                                 (cur + 1 - start) * min_alloc_size);
+      fm->enumerate_reset();
+      size_t count = used_blocks.count();
+      if (used_blocks.size() != count) {
+        ceph_assert(used_blocks.size() > count);
+        used_blocks.flip();
+        size_t start = used_blocks.find_first();
+        while (start != decltype(used_blocks)::npos) {
+         size_t cur = start;
+         while (true) {
+           size_t next = used_blocks.find_next(cur);
+           if (next != cur + 1) {
+             ++errors;
+             derr << "fsck error: leaked extent 0x" << std::hex
+                  << ((uint64_t)start * fm->get_alloc_size()) << "~"
+                  << ((cur + 1 - start) * fm->get_alloc_size()) << std::dec
+                  << dendl;
+             if (repair) {
+               repairer.fix_leaked(db,
+                                   fm,
+                                   start * min_alloc_size,
+                                   (cur + 1 - start) * min_alloc_size);
+             }
+             start = next;
+             break;
            }
-           start = next;
-           break;
+           cur = next;
          }
-         cur = next;
-       }
+        }
+        used_blocks.flip();
       }
-      used_blocks.flip();
     }
   }
   if (repair) {
@@ -7872,23 +8282,8 @@ int BlueStore::_fsck(bool deep, bool repair)
     repaired = repairer.apply(db);
     dout(5) << __func__ << " repair applied" << dendl;
   }
- out_scan:
-  mempool_thread.shutdown();
-  _flush_cache();
- out_db:
-  it.reset();  // before db is closed
-  _close_db_and_around();
- out_bdev:
-  _close_bdev();
- out_fsid:
-  _close_fsid();
- out_path:
-  _close_path();
-
-  // fatal errors take precedence
-  if (r < 0)
-    return r;
 
+out_scan:
   dout(2) << __func__ << " " << num_objects << " objects, "
          << num_sharded_objects << " of them sharded.  "
          << dendl;
@@ -7981,6 +8376,17 @@ void BlueStore::inject_statfs(const string& key, const store_statfs_t& new_statf
   repairer.apply(db);
 }
 
+void BlueStore::inject_global_statfs(const store_statfs_t& new_statfs)
+{
+  KeyValueDB::Transaction t = db->get_transaction();
+  volatile_statfs v;
+  v = new_statfs;
+  bufferlist bl;
+  v.encode(bl);
+  t->set(PREFIX_STAT, BLUESTORE_GLOBAL_STATFS_KEY, bl);
+  db->submit_transaction_sync(t);
+}
+
 void BlueStore::inject_misreference(coll_t cid1, ghobject_t oid1,
                                    coll_t cid2, ghobject_t oid2,
                                    uint64_t offset)
@@ -8231,8 +8637,7 @@ void BlueStore::_check_legacy_statfs_alert()
 {
   string s;
   if (!per_pool_stat_collection &&
-    cct->_conf->bluestore_no_per_pool_stats_tolerance != "enforce" &&
-    cct->_conf->bluestore_warn_on_legacy_statfs) {
+      cct->_conf->bluestore_warn_on_legacy_statfs) {
     s = "legacy statfs reporting detected, "
         "suggest to run store repair to get consistent statistic reports";
   }
@@ -9904,9 +10309,9 @@ void BlueStore::_txc_state_proc(TransContext *txc)
          dout(20) << __func__ << " DEBUG randomly forcing submit via kv thread"
                   << dendl;
        } else {
-         txc->state = TransContext::STATE_KV_SUBMITTED;
          int r = cct->_conf->bluestore_debug_omit_kv_commit ? 0 : db->submit_transaction(txc->t);
          ceph_assert(r == 0);
+         txc->state = TransContext::STATE_KV_SUBMITTED;
          _txc_applied_kv(txc);
        }
       }
@@ -10547,9 +10952,9 @@ void BlueStore::_kv_sync_thread()
          txc->log_state_latency(logger, l_bluestore_state_kv_queued_lat);
          int r = cct->_conf->bluestore_debug_omit_kv_commit ? 0 : db->submit_transaction(txc->t);
          ceph_assert(r == 0);
+         txc->state = TransContext::STATE_KV_SUBMITTED;
          _txc_applied_kv(txc);
          --txc->osr->kv_committing_serially;
-         txc->state = TransContext::STATE_KV_SUBMITTED;
          if (txc->osr->kv_submitted_waiters) {
            std::lock_guard l(txc->osr->qlock);
            txc->osr->qcond.notify_all();
@@ -10991,16 +11396,6 @@ int BlueStore::queue_transactions(
   ObjectStore::Transaction::collect_contexts(
     tls, &on_applied, &on_commit, &on_applied_sync);
 
-  if (cct->_conf->objectstore_blackhole) {
-    dout(0) << __func__ << " objectstore_blackhole = TRUE, dropping transaction"
-           << dendl;
-    for (auto& l : { on_applied, on_commit, on_applied_sync }) {
-      for (auto c : l) {
-       delete c;
-      }
-    }
-    return 0;
-  }
   auto start = mono_clock::now();
 
   Collection *c = static_cast<Collection*>(ch.get());
@@ -11587,12 +11982,29 @@ void BlueStore::_do_write_small(
     prev_ep = end; // to avoid this extent check as it's a duplicate
   }
 
+  boost::container::flat_set<const bluestore_blob_t*> inspected_blobs;
+  // We don't want to have more blobs than min alloc units fit
+  // into 2 max blobs
+  size_t blob_threshold = max_blob_size / min_alloc_size * 2 + 1;
+  bool above_blob_threshold = false;
+
+  inspected_blobs.reserve(blob_threshold);
+
+  uint64_t max_off = 0;
+  auto start_ep = ep;
+  auto end_ep = ep; // exclusively
   do {
     any_change = false;
 
     if (ep != end && ep->logical_offset < offset + max_bsize) {
       BlobRef b = ep->blob;
+      if (!above_blob_threshold) {
+       inspected_blobs.insert(&b->get_blob());
+       above_blob_threshold = inspected_blobs.size() >= blob_threshold;
+      }
+      max_off = ep->logical_end();
       auto bstart = ep->blob_start();
+
       dout(20) << __func__ << " considering " << *b
               << " bstart 0x" << std::hex << bstart << std::dec << dendl;
       if (bstart >= end_offs) {
@@ -11791,12 +12203,18 @@ void BlueStore::_do_write_small(
        }
       }
       ++ep;
+      end_ep = ep;
       any_change = true;
     } // if (ep != end && ep->logical_offset < offset + max_bsize)
 
     // check extent for reuse in reverse order
     if (prev_ep != end && prev_ep->logical_offset >= min_off) {
       BlobRef b = prev_ep->blob;
+      if (!above_blob_threshold) {
+       inspected_blobs.insert(&b->get_blob());
+       above_blob_threshold = inspected_blobs.size() >= blob_threshold;
+      }
+      start_ep = prev_ep;
       auto bstart = prev_ep->blob_start();
       dout(20) << __func__ << " considering " << *b
               << " bstart 0x" << std::hex << bstart << std::dec << dendl;
@@ -11843,6 +12261,24 @@ void BlueStore::_do_write_small(
     } // if (prev_ep != end && prev_ep->logical_offset >= min_off) 
   } while (any_change);
 
+  if (above_blob_threshold) {
+    dout(10) << __func__ << " request GC, blobs >= " << inspected_blobs.size()
+            << " " << std::hex << min_off << "~" << max_off << std::dec
+           << dendl;
+    ceph_assert(start_ep != end_ep);
+    for (auto ep = start_ep; ep != end_ep; ++ep) {
+      dout(20) << __func__ << " inserting for GC "
+              << std::hex << ep->logical_offset << "~" << ep->length
+             << std::dec << dendl;
+
+      wctx->extents_to_gc.union_insert(ep->logical_offset, ep->length);
+    }
+    // insert newly written extent to GC
+    wctx->extents_to_gc.union_insert(offset, length);
+      dout(20) << __func__ << " inserting (last) for GC "
+              << std::hex << offset << "~" << length
+             << std::dec << dendl;
+  }
   // new blob.
   BlobRef b = c->new_blob();
   uint64_t b_off = p2phase<uint64_t>(offset, alloc_len);
@@ -12095,9 +12531,9 @@ int BlueStore::_do_alloc_write(
   prealloc_left = alloc->allocate(
     need, min_alloc_size, need,
     0, &prealloc);
-  if (prealloc_left < (int64_t)need) {
+  if (prealloc_left < 0 || prealloc_left < (int64_t)need) {
     derr << __func__ << " failed to allocate 0x" << std::hex << need
-         << " allocated 0x " << prealloc_left
+         << " allocated 0x " << (prealloc_left < 0 ? 0 : prealloc_left)
          << " min_alloc_size 0x" << min_alloc_size
          << " available 0x " << alloc->get_free()
          << std::dec << dendl;
@@ -12462,34 +12898,38 @@ int BlueStore::_do_gc(
   TransContext *txc,
   CollectionRef& c,
   OnodeRef o,
-  const GarbageCollector& gc,
   const WriteContext& wctx,
   uint64_t *dirty_start,
   uint64_t *dirty_end)
 {
-  auto& extents_to_collect = gc.get_extents_to_collect();
 
   bool dirty_range_updated = false;
   WriteContext wctx_gc;
   wctx_gc.fork(wctx); // make a clone for garbage collection
 
+  auto & extents_to_collect = wctx.extents_to_gc;
   for (auto it = extents_to_collect.begin();
        it != extents_to_collect.end();
        ++it) {
     bufferlist bl;
-    int r = _do_read(c.get(), o, it->offset, it->length, bl, 0);
-    ceph_assert(r == (int)it->length);
+    auto offset = (*it).first;
+    auto length = (*it).second;
+    dout(20) << __func__ << " processing " << std::hex
+            << offset << "~" << length << std::dec
+           << dendl;
+    int r = _do_read(c.get(), o, offset, length, bl, 0);
+    ceph_assert(r == (int)length);
 
-    _do_write_data(txc, c, o, it->offset, it->length, bl, &wctx_gc);
-    logger->inc(l_bluestore_gc_merged, it->length);
+    _do_write_data(txc, c, o, offset, length, bl, &wctx_gc);
+    logger->inc(l_bluestore_gc_merged, length);
 
-    if (*dirty_start > it->offset) {
-      *dirty_start = it->offset;
+    if (*dirty_start > offset) {
+      *dirty_start = offset;
       dirty_range_updated = true;
     }
 
-    if (*dirty_end < it->offset + it->length) {
-      *dirty_end = it->offset + it->length;
+    if (*dirty_end < offset + length) {
+      *dirty_end = offset + length;
       dirty_range_updated = true;
     }
   }
@@ -12537,7 +12977,7 @@ int BlueStore::_do_write(
   uint64_t end = offset + length;
 
   GarbageCollector gc(c->store->cct);
-  int64_t benefit;
+  int64_t benefit = 0;
   auto dirty_start = offset;
   auto dirty_end = end;
 
@@ -12552,14 +12992,18 @@ int BlueStore::_do_write(
     goto out;
   }
 
+  if (wctx.extents_to_gc.empty() ||
+      wctx.extents_to_gc.range_start() > offset ||
+      wctx.extents_to_gc.range_end() < offset + length) {
+    benefit = gc.estimate(offset,
+                         length,
+                         o->extent_map,
+                         wctx.old_extents,
+                         min_alloc_size);
+  }
+
   // NB: _wctx_finish() will empty old_extents
   // so we must do gc estimation before that
-  benefit = gc.estimate(offset,
-                        length,
-                       o->extent_map,
-                       wctx.old_extents,
-                       min_alloc_size);
-
   _wctx_finish(txc, c, o, &wctx);
   if (end > o->onode.size) {
     dout(20) << __func__ << " extending size to 0x" << std::hex << end
@@ -12568,18 +13012,24 @@ int BlueStore::_do_write(
   }
 
   if (benefit >= g_conf()->bluestore_gc_enable_total_threshold) {
-    if (!gc.get_extents_to_collect().empty()) {
-      dout(20) << __func__ << " perform garbage collection, "
-               << "expected benefit = " << benefit << " AUs" << dendl;
-      r = _do_gc(txc, c, o, gc, wctx, &dirty_start, &dirty_end);
-      if (r < 0) {
-        derr << __func__ << " _do_gc failed with " << cpp_strerror(r)
-             << dendl;
-        goto out;
-      }
-      dout(20)<<__func__<<" gc range is " << std::hex << dirty_start
-             << "~" << dirty_end - dirty_start << std::dec << dendl;
+    wctx.extents_to_gc.union_of(gc.get_extents_to_collect());
+    dout(20) << __func__
+             << " perform garbage collection for compressed extents, "
+             << "expected benefit = " << benefit << " AUs" << dendl;
+  }
+  if (!wctx.extents_to_gc.empty()) {
+    dout(20) << __func__ << " perform garbage collection" << dendl;
+
+    r = _do_gc(txc, c, o,
+      wctx,
+      &dirty_start, &dirty_end);
+    if (r < 0) {
+      derr << __func__ << " _do_gc failed with " << cpp_strerror(r)
+            << dendl;
+      goto out;
     }
+    dout(20)<<__func__<<" gc range is " << std::hex << dirty_start
+           << "~" << dirty_end - dirty_start << std::dec << dendl;
   }
   o->extent_map.compress_extent_map(dirty_start, dirty_end - dirty_start);
   o->extent_map.dirty_range(dirty_start, dirty_end - dirty_start);
index 84a6e3961c1013d43041646e07d3cdd751089096..374034ace2d53353159838b75ce63dc9e9ec9818 100644 (file)
@@ -29,6 +29,8 @@
 #include <boost/functional/hash.hpp>
 #include <boost/dynamic_bitset.hpp>
 
+#include "include/cpp-btree/btree_set.h"
+
 #include "include/ceph_assert.h"
 #include "include/unordered_map.h"
 #include "include/mempool.h"
@@ -156,6 +158,7 @@ public:
 
   typedef map<uint64_t, bufferlist> ready_regions_t;
 
+
   struct BufferSpace;
   struct Collection;
   typedef boost::intrusive_ptr<Collection> CollectionRef;
@@ -963,7 +966,7 @@ public:
       uint64_t min_alloc_size);
 
     /// return a collection of extents to perform GC on
-    const vector<bluestore_pextent_t>& get_extents_to_collect() const {
+    const interval_set<uint64_t>& get_extents_to_collect() const {
       return extents_to_collect;
     }
     GarbageCollector(CephContext* _cct) : cct(_cct) {}
@@ -994,7 +997,7 @@ public:
                                          ///< specific write
 
     ///< protrusive extents that should be collected if GC takes place
-    vector<bluestore_pextent_t> extents_to_collect;
+    interval_set<uint64_t> extents_to_collect;
 
     boost::optional<uint64_t > used_alloc_unit; ///< last processed allocation
                                                 ///<  unit when traversing 
@@ -1016,8 +1019,6 @@ public:
     int64_t expected_for_release = 0;      ///< alloc units currently used by
                                            ///< compressed blobs that might
                                            ///< gone after GC
-    uint64_t gc_start_offset = 0;              ///starting offset for GC
-    uint64_t gc_end_offset = 0;                ///ending offset for GC
 
   protected:
     void process_protrusive_extents(const BlueStore::ExtentMap& extent_map, 
@@ -1065,6 +1066,30 @@ public:
        exists(false),
        extent_map(this) {
     }
+    Onode(Collection* c, const ghobject_t& o,
+      const string& k)
+      : nref(0),
+      c(c),
+      oid(o),
+      key(k),
+      exists(false),
+      extent_map(this) {
+    }
+    Onode(Collection* c, const ghobject_t& o,
+      const char* k)
+      : nref(0),
+      c(c),
+      oid(o),
+      key(k),
+      exists(false),
+      extent_map(this) {
+    }
+
+    static Onode* decode(
+      CollectionRef c,
+      const ghobject_t& oid,
+      const string& key,
+      const bufferlist& v);
 
     void flush();
     void get() {
@@ -1815,6 +1840,7 @@ public:
          auto it = q.rbegin();
          it++;
          if (it->state >= TransContext::STATE_KV_SUBMITTED) {
+           --kv_submitted_waiters;
            return;
           }
        }
@@ -1905,6 +1931,7 @@ private:
 
   RWLock coll_lock = {"BlueStore::coll_lock"};  ///< rwlock to protect coll_map
   mempool::bluestore_cache_other::unordered_map<coll_t, CollectionRef> coll_map;
+  bool collections_had_errors = false;
   map<coll_t,CollectionRef> new_coll_map;
 
   vector<Cache*> cache_shards;
@@ -2024,6 +2051,7 @@ private:
     bool stop = false;
     uint64_t autotune_cache_size = 0;
     std::shared_ptr<PriorityCache::PriCache> binned_kv_cache = nullptr;
+    std::shared_ptr<PriorityCache::Manager> pcm = nullptr;
 
     struct MempoolCache : public PriorityCache::PriCache {
       BlueStore *store;
@@ -2040,8 +2068,8 @@ private:
         int64_t assigned = get_cache_bytes(pri);
 
         switch (pri) {
-        // All cache items are currently shoved into the LAST priority 
-        case PriorityCache::Priority::LAST:
+        // All cache items are currently shoved into the PRI1 priority 
+        case PriorityCache::Priority::PRI1:
           {
             int64_t request = _get_used_bytes();
             return(request > assigned) ? request - assigned : 0;
@@ -2218,7 +2246,8 @@ private:
   void _close_fm();
   int _open_alloc();
   void _close_alloc();
-  int _open_collections(int *errors=0);
+  int _open_collections();
+  void _fsck_collections(int64_t* errors);
   void _close_collections();
 
   int _setup_block_symlink_or_file(string name, string path, uint64_t size,
@@ -2302,6 +2331,14 @@ public:
   using mempool_dynamic_bitset =
     boost::dynamic_bitset<uint64_t,
                          mempool::bluestore_fsck::pool_allocator<uint64_t>>;
+  using  per_pool_statfs =
+    mempool::bluestore_fsck::map<uint64_t, store_statfs_t>;
+
+  enum FSCKDepth {
+    FSCK_REGULAR,
+    FSCK_DEEP,
+    FSCK_SHALLOW
+  };
 
 private:
   int _fsck_check_extents(
@@ -2312,16 +2349,18 @@ private:
     mempool_dynamic_bitset &used_blocks,
     uint64_t granularity,
     BlueStoreRepairer* repairer,
-    store_statfs_t& expected_statfs);
+    store_statfs_t& expected_statfs,
+    FSCKDepth depth);
 
-  using  per_pool_statfs =
-    mempool::bluestore_fsck::map<uint64_t, store_statfs_t>;
   void _fsck_check_pool_statfs(
     per_pool_statfs& expected_pool_statfs,
-    bool need_per_pool_stats,
-    int& errors,
+    int64_t& errors,
+    int64_t &warnings,
     BlueStoreRepairer* repairer);
 
+  int _fsck(FSCKDepth depth, bool repair);
+  int _fsck_on_open(BlueStore::FSCKDepth depth, bool repair);
+
   void _buffer_cache_write(
     TransContext *txc,
     BlobRef b,
@@ -2425,14 +2464,18 @@ public:
   int write_meta(const std::string& key, const std::string& value) override;
   int read_meta(const std::string& key, std::string *value) override;
 
+  int cold_open();
+  int cold_close();
 
   int fsck(bool deep) override {
-    return _fsck(deep, false);
+    return _fsck(deep ? FSCK_DEEP : FSCK_REGULAR, false);
   }
   int repair(bool deep) override {
-    return _fsck(deep, true);
+    return _fsck(deep ? FSCK_DEEP : FSCK_REGULAR, true);
+  }
+  int quick_fix() override {
+    return _fsck(FSCK_SHALLOW, true);
   }
-  int _fsck(bool deep, bool repair);
 
   void set_cache_shards(unsigned num) override;
   void dump_cache_stats(Formatter *f) override {
@@ -2648,6 +2691,7 @@ public:
   void inject_leaked(uint64_t len);
   void inject_false_free(coll_t cid, ghobject_t oid);
   void inject_statfs(const string& key, const store_statfs_t& new_statfs);
+  void inject_global_statfs(const store_statfs_t& new_statfs);
   void inject_misreference(coll_t cid1, ghobject_t oid1,
                           coll_t cid2, ghobject_t oid2,
                           uint64_t offset);
@@ -2766,6 +2810,7 @@ private:
     unsigned csum_order = 0;        ///< target checksum chunk order
 
     old_extent_map_t old_extents;   ///< must deref these blobs
+    interval_set<uint64_t> extents_to_gc; ///< extents for garbage collection
 
     struct write_item {
       uint64_t logical_offset;      ///< write logical offset
@@ -2884,7 +2929,6 @@ private:
   int _do_gc(TransContext *txc,
              CollectionRef& c,
              OnodeRef o,
-             const GarbageCollector& gc,
              const WriteContext& wctx,
              uint64_t *dirty_start,
              uint64_t *dirty_end);
@@ -3020,6 +3064,94 @@ private:
     PExtentVector& extents) override {
     return allocate_bluefs_freespace(min_size, size, &extents);
   };
+  size_t available_freespace(uint64_t alloc_size) override;
+
+public:
+  struct sb_info_t {
+    coll_t cid;
+    int64_t pool_id = INT64_MIN;
+    list<ghobject_t> oids;
+    BlueStore::SharedBlobRef sb;
+    bluestore_extent_ref_map_t ref_map;
+    bool compressed = false;
+    bool passed = false;
+    bool updated = false;
+  };
+  typedef btree::btree_set<
+    uint64_t, std::less<uint64_t>,
+    mempool::bluestore_fsck::pool_allocator<uint64_t>> uint64_t_btree_t;
+
+  typedef mempool::bluestore_fsck::map<uint64_t, sb_info_t> sb_info_map_t;
+  struct FSCK_ObjectCtx {
+    int64_t& errors;
+    int64_t& warnings;
+    uint64_t& num_objects;
+    uint64_t& num_extents;
+    uint64_t& num_blobs;
+    uint64_t& num_sharded_objects;
+    uint64_t& num_spanning_blobs;
+
+    mempool_dynamic_bitset* used_blocks;
+    uint64_t_btree_t* used_omap_head;
+    uint64_t_btree_t* used_per_pool_omap_head;
+    uint64_t_btree_t* used_pgmeta_omap_head;
+
+    ceph::mutex* sb_info_lock;
+    sb_info_map_t& sb_info;
+
+    store_statfs_t& expected_store_statfs;
+    per_pool_statfs& expected_pool_statfs;
+    BlueStoreRepairer* repairer;
+
+    FSCK_ObjectCtx(int64_t& e,
+                   int64_t& w,
+                   uint64_t& _num_objects,
+                   uint64_t& _num_extents,
+                   uint64_t& _num_blobs,
+                   uint64_t& _num_sharded_objects,
+                   uint64_t& _num_spanning_blobs,
+                   mempool_dynamic_bitset* _ub,
+                   uint64_t_btree_t* _used_omap_head,
+                   uint64_t_btree_t* _used_per_pool_omap_head,
+                   uint64_t_btree_t* _used_pgmeta_omap_head,
+                   ceph::mutex* _sb_info_lock,
+                   sb_info_map_t& _sb_info,
+                   store_statfs_t& _store_statfs,
+                   per_pool_statfs& _pool_statfs,
+                   BlueStoreRepairer* _repairer) :
+      errors(e),
+      warnings(w),
+      num_objects(_num_objects),
+      num_extents(_num_extents),
+      num_blobs(_num_blobs),
+      num_sharded_objects(_num_sharded_objects),
+      num_spanning_blobs(_num_spanning_blobs),
+      used_blocks(_ub),
+      used_omap_head(_used_omap_head),
+      used_per_pool_omap_head(_used_per_pool_omap_head),
+      used_pgmeta_omap_head(_used_pgmeta_omap_head),
+      sb_info_lock(_sb_info_lock),
+      sb_info(_sb_info),
+      expected_store_statfs(_store_statfs),
+      expected_pool_statfs(_pool_statfs),
+      repairer(_repairer) {
+    }
+  };
+
+  OnodeRef fsck_check_objects_shallow(
+    FSCKDepth depth,
+    int64_t pool_id,
+    CollectionRef c,
+    const ghobject_t& oid,
+    const string& key,
+    const bufferlist& value,
+    mempool::bluestore_fsck::list<string>& expecting_shards,
+    map<BlobRef, bluestore_blob_t::unused_t>* referenced,
+    const BlueStore::FSCK_ObjectCtx& ctx);
+
+private:
+  void _fsck_check_objects(FSCKDepth depth,
+    FSCK_ObjectCtx& ctx);
 };
 
 inline ostream& operator<<(ostream& out, const BlueStore::volatile_statfs& s) {
@@ -3207,6 +3339,9 @@ public:
       ++to_repair_cnt;
     }
   }
+  void inc_repaired() {
+    ++to_repair_cnt;
+  }  
 
   StoreSpaceTracker& get_space_usage_tracker() {
     return space_usage_tracker;
index 3530c454bf274456cf959cf16c6768902386b7f1..8481d67a474469110e3ed56a6e43a4bb125860fe 100644 (file)
@@ -538,7 +538,8 @@ void KernelDevice::_aio_thread()
              "This may suggest HW issue. Please check your dmesg!");
           }
         } else if (aio[i]->length != (uint64_t)r) {
-          derr << "aio to " << aio[i]->offset << "~" << aio[i]->length
+          derr << "aio to 0x" << std::hex << aio[i]->offset
+              << "~" << aio[i]->length << std::dec
                << " but returned: " << r << dendl;
           ceph_abort_msg("unexpected aio return value: does not match length");
         }
@@ -808,6 +809,11 @@ int KernelDevice::write(
           << (buffered ? " (buffered)" : " (direct)")
           << dendl;
   ceph_assert(is_valid_io(off, len));
+  if (cct->_conf->objectstore_blackhole) {
+    lderr(cct) << __func__ << " objectstore_blackhole=true, throwing out IO"
+              << dendl;
+    return 0;
+  }
 
   if ((!buffered || bl.get_num_buffers() >= IOV_MAX) &&
       bl.rebuild_aligned_size_and_memory(block_size, block_size, IOV_MAX)) {
@@ -832,6 +838,11 @@ int KernelDevice::aio_write(
           << (buffered ? " (buffered)" : " (direct)")
           << dendl;
   ceph_assert(is_valid_io(off, len));
+  if (cct->_conf->objectstore_blackhole) {
+    lderr(cct) << __func__ << " objectstore_blackhole=true, throwing out IO"
+              << dendl;
+    return 0;
+  }
 
   if ((!buffered || bl.get_num_buffers() >= IOV_MAX) &&
       bl.rebuild_aligned_size_and_memory(block_size, block_size, IOV_MAX)) {
@@ -908,6 +919,11 @@ int KernelDevice::aio_write(
 int KernelDevice::discard(uint64_t offset, uint64_t len)
 {
   int r = 0;
+  if (cct->_conf->objectstore_blackhole) {
+    lderr(cct) << __func__ << " objectstore_blackhole=true, throwing out IO"
+              << dendl;
+    return 0;
+  }
   if (support_discard) {
       dout(10) << __func__
               << " 0x" << std::hex << offset << "~" << len << std::dec
index ec8cf2f8dc40034e96374b1e9fcd4824ff951150..19b52abd571e354205f7f76a0a203e43aa9f2c2b 100644 (file)
@@ -25,9 +25,7 @@
 #include "ceph_aio.h"
 #include "BlockDevice.h"
 
-#ifndef RW_IO_MAX
-#define RW_IO_MAX 0x7FFFF000
-#endif
+#define RW_IO_MAX (INT_MAX & CEPH_PAGE_MASK)
 
 
 class KernelDevice : public BlockDevice {
index db2e9e3634c2d84108f87d6dbf8fa68bcda98ad7..c17ebb3b13aa116278479731d0390e4cf8ab7529 100644 (file)
@@ -10,8 +10,8 @@
 #undef dout_prefix
 #define dout_prefix *_dout << "stupidalloc 0x" << this << " "
 
-StupidAllocator::StupidAllocator(CephContext* cct)
-  : cct(cct), num_free(0),
+StupidAllocator::StupidAllocator(CephContext* cct, const std::string& name)
+  : Allocator(name), cct(cct), num_free(0),
     free(10),
     last_alloc(0)
 {
@@ -291,6 +291,16 @@ void StupidAllocator::dump()
   }
 }
 
+void StupidAllocator::dump(std::function<void(uint64_t offset, uint64_t length)> notify)
+{
+  std::lock_guard l(lock);
+  for (unsigned bin = 0; bin < free.size(); ++bin) {
+    for (auto p = free[bin].begin(); p != free[bin].end(); ++p) {
+      notify(p.get_start(), p.get_len());
+    }
+  }
+}
+
 void StupidAllocator::init_add_free(uint64_t offset, uint64_t length)
 {
   std::lock_guard l(lock);
index 6c6e7832f7efefd39115a19635209479a982610f..23264757c3fd5f7e0d035d44f8b0604628cb6289 100644 (file)
@@ -35,7 +35,7 @@ class StupidAllocator : public Allocator {
     uint64_t alloc_unit);
 
 public:
-  StupidAllocator(CephContext* cct);
+  StupidAllocator(CephContext* cct, const std::string& name = "");
   ~StupidAllocator() override;
 
   int64_t allocate(
@@ -53,6 +53,7 @@ public:
   double get_fragmentation(uint64_t alloc_unit) override;
 
   void dump() override;
+  void dump(std::function<void(uint64_t offset, uint64_t length)> notify) override;
 
   void init_add_free(uint64_t offset, uint64_t length) override;
   void init_rm_free(uint64_t offset, uint64_t length) override;
index 9c8511711b38cdf63ace36e09ca7bc0aa03eea8c..2e5b97f75c59246ed5a9a3b44f1c52c937bb2469 100644 (file)
@@ -90,6 +90,7 @@ struct bluefs_fnode_t {
   void append_extent(const bluefs_extent_t& ext) {
     if (!extents.empty() &&
        extents.back().end() == ext.offset &&
+       extents.back().bdev == ext.bdev &&
        (uint64_t)extents.back().length + (uint64_t)ext.length < 0xffffffff) {
       extents.back().length += ext.length;
     } else {
index bdc5869b5120fec9593bd1056b529687471048b2..63db8261f547f4c2766f18d555ceda7d27769332 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "os/bluestore/BlueFS.h"
 #include "os/bluestore/BlueStore.h"
+#include "common/admin_socket.h"
 
 namespace po = boost::program_options;
 
@@ -224,6 +225,7 @@ int main(int argc, char **argv)
   string action;
   string log_file;
   string key, value;
+  vector<string> allocs_name;
   int log_level = 30;
   bool fsck_deep = false;
   po::options_description po_options("Options");
@@ -239,10 +241,27 @@ int main(int argc, char **argv)
     ("deep", po::value<bool>(&fsck_deep), "deep fsck (read all data)")
     ("key,k", po::value<string>(&key), "label metadata key name")
     ("value,v", po::value<string>(&value), "label metadata value")
+    ("allocator", po::value<vector<string>>(&allocs_name), "allocator to inspect: 'block'/'bluefs-wal'/'bluefs-db'/'bluefs-slow'")
     ;
   po::options_description po_positional("Positional options");
   po_positional.add_options()
-    ("command", po::value<string>(&action), "fsck, repair, bluefs-export, bluefs-bdev-sizes, bluefs-bdev-expand, bluefs-bdev-new-db, bluefs-bdev-new-wal, bluefs-bdev-migrate, show-label, set-label-key, rm-label-key, prime-osd-dir, bluefs-log-dump")
+    ("command", po::value<string>(&action),
+        "fsck, "
+        "repair, "
+        "quick-fix, "
+        "bluefs-export, "
+        "bluefs-bdev-sizes, "
+        "bluefs-bdev-expand, "
+        "bluefs-bdev-new-db, "
+        "bluefs-bdev-new-wal, "
+        "bluefs-bdev-migrate, "
+        "show-label, "
+        "set-label-key, "
+        "rm-label-key, "
+        "prime-osd-dir, "
+        "bluefs-log-dump, "
+        "free-dump, "
+        "free-score")
     ;
   po::options_description po_all("All options");
   po_all.add(po_options).add(po_positional);
@@ -275,7 +294,7 @@ int main(int argc, char **argv)
     exit(EXIT_FAILURE);
   }
 
-  if (action == "fsck" || action == "repair") {
+  if (action == "fsck" || action == "repair" || action == "quick-fix") {
     if (path.empty()) {
       cerr << "must specify bluestore path" << std::endl;
       exit(EXIT_FAILURE);
@@ -357,7 +376,24 @@ int main(int argc, char **argv)
       exit(EXIT_FAILURE);
     }
   }
-
+  if (action == "free-score" || action == "free-dump") {
+    if (path.empty()) {
+      cerr << "must specify bluestore path" << std::endl;
+      exit(EXIT_FAILURE);
+    }
+    for (auto name : allocs_name) {
+      if (!name.empty() &&
+          name != "block" &&
+          name != "bluefs-db" &&
+          name != "bluefs-wal" &&
+          name != "bluefs-slow") {
+        cerr << "unknown allocator '" << name << "'" << std::endl;
+        exit(EXIT_FAILURE);
+      }
+    }
+    if (allocs_name.empty())
+      allocs_name = vector<string>{"block", "bluefs-db", "bluefs-wal", "bluefs-slow"};
+  }
   vector<const char*> args;
   if (log_file.size()) {
     args.push_back("--log-file");
@@ -382,14 +418,17 @@ int main(int argc, char **argv)
   common_init_finish(cct.get());
 
   if (action == "fsck" ||
-      action == "repair") {
+      action == "repair" ||
+      action == "quick-fix") {
     validate_path(cct.get(), path, false);
     BlueStore bluestore(cct.get(), path);
     int r;
     if (action == "fsck") {
       r = bluestore.fsck(fsck_deep);
-    } else {
+    } else if (action == "repair") {
       r = bluestore.repair(fsck_deep);
+    } else {
+      r = bluestore.quick_fix();
     }
     if (r < 0) {
       cerr << "error from fsck: " << cpp_strerror(r) << std::endl;
@@ -792,6 +831,31 @@ int main(int argc, char **argv)
       }
       return r;
     }
+  } else  if (action == "free-dump" || action == "free-score") {
+    AdminSocket *admin_socket = g_ceph_context->get_admin_socket();
+    ceph_assert(admin_socket);
+    std::string action_name = action == "free-dump" ? "dump" : "score";
+    validate_path(cct.get(), path, false);
+    BlueStore bluestore(cct.get(), path);
+    int r = bluestore.cold_open();
+    if (r < 0) {
+      cerr << "error from cold_open: " << cpp_strerror(r) << std::endl;
+      exit(EXIT_FAILURE);
+    }
+
+    for (auto alloc_name : allocs_name) {
+      ceph::bufferlist out;
+      bool b = admin_socket->execute_command(
+          "{\"prefix\": \"bluestore allocator " + action_name + " " + alloc_name + "\"}", out);
+      if (!b) {
+        cerr << "failure querying '" << alloc_name << "'" << std::endl;
+        exit(EXIT_FAILURE);
+      }
+      cout << alloc_name << ":" << std::endl;
+      cout << std::string(out.c_str(),out.length()) << std::endl;
+    }
+
+    bluestore.cold_close();
   } else {
     cerr << "unrecognized action " << action << std::endl;
     return 1;
index 87fbd981d9f806f60f8bbfd613a0f9e1a171c935..f58a079c4af252c4c319d71b9ad84836740fe66c 100644 (file)
@@ -756,11 +756,11 @@ public:
     case 1:
       return reinterpret_cast<const uint8_t*>(p)[i];
     case 2:
-      return reinterpret_cast<const __le16*>(p)[i];
+      return reinterpret_cast<const ceph_le16*>(p)[i];
     case 4:
-      return reinterpret_cast<const __le32*>(p)[i];
+      return reinterpret_cast<const ceph_le32*>(p)[i];
     case 8:
-      return reinterpret_cast<const __le64*>(p)[i];
+      return reinterpret_cast<const ceph_le64*>(p)[i];
     default:
       ceph_abort_msg("unrecognized csum word size");
     }
index 089ff396ad7b0ca75297eb813cd2712a3378db61..0654bb8542aa619f691657ff809f11b418d8b755 100755 (executable)
@@ -544,3 +544,88 @@ void AllocatorLevel01Loose::collect_stats(
     bins_overall[cbits(free_seq_cnt) - 1]++;
   }
 }
+
+inline ssize_t AllocatorLevel01Loose::count_0s(slot_t slot_val, size_t start_pos)
+  {
+  #ifdef __GNUC__
+    size_t pos = __builtin_ffsll(slot_val >> start_pos);
+    if (pos == 0)
+      return sizeof(slot_t)*8 - start_pos;
+    return pos - 1;
+  #else
+    size_t pos = start_pos;
+    slot_t mask = slot_t(1) << pos;
+    while (pos < bits_per_slot && (slot_val & mask) == 0) {
+      mask <<= 1;
+      pos++;
+    }
+    return pos - start_pos;
+  #endif
+  }
+
+ inline ssize_t AllocatorLevel01Loose::count_1s(slot_t slot_val, size_t start_pos)
+ {
+   return count_0s(~slot_val, start_pos);
+ }
+void AllocatorLevel01Loose::dump(
+    std::function<void(uint64_t offset, uint64_t length)> notify)
+{
+  size_t len = 0;
+  size_t off = 0;
+  for (size_t i = 0; i < l1.size(); i++)
+  {
+    for (size_t j = 0; j < L1_ENTRIES_PER_SLOT * L1_ENTRY_WIDTH; j += L1_ENTRY_WIDTH)
+    {
+      size_t w = (l1[i] >> j) & L1_ENTRY_MASK;
+      switch (w) {
+        case L1_ENTRY_FULL:
+          if (len > 0) {
+            notify(off, len);
+            len = 0;
+          }
+          break;
+        case L1_ENTRY_FREE:
+          if (len == 0)
+            off = ( ( bits_per_slot * i + j ) / L1_ENTRY_WIDTH ) * slots_per_slotset * bits_per_slot;
+          len += bits_per_slotset;
+          break;
+        case L1_ENTRY_PARTIAL:
+          size_t pos = ( ( bits_per_slot * i + j ) / L1_ENTRY_WIDTH ) * slots_per_slotset;
+          for (size_t t = 0; t < slots_per_slotset; t++) {
+            size_t p = 0;
+            slot_t allocation_pattern = l0[pos + t];
+            while (p < bits_per_slot) {
+              if (len == 0) {
+                //continue to skip allocated space, meaning bits set to 0
+                ssize_t alloc_count = count_0s(allocation_pattern, p);
+                p += alloc_count;
+                //now we are switched to expecting free space
+                if (p < bits_per_slot) {
+                  //now @p are 1s
+                  ssize_t free_count = count_1s(allocation_pattern, p);
+                  assert(free_count > 0);
+                  len = free_count;
+                  off = (pos + t) * bits_per_slot + p;
+                  p += free_count;
+                }
+              } else {
+                //continue free region
+                ssize_t free_count = count_1s(allocation_pattern, p);
+                if (free_count == 0) {
+                  notify(off, len);
+                  len = 0;
+                } else {
+                  p += free_count;
+                  len += free_count;
+                }
+              }
+            }
+          }
+          break;
+      }
+    }
+  }
+  if (len > 0)
+    notify(off, len);
+}
+
index 4143f3d5d53f69fdd30f0a758631f1e73935a9bc..cfc44c550de478b8464a1cbafe8710bf7dcce204 100755 (executable)
@@ -46,6 +46,7 @@ typedef mempool::bluestore_alloc::vector<slot_t> slot_vector_t;
 
 // fitting into cache line on x86_64
 static const size_t slotset_width = 8; // 8 slots per set
+static const size_t slots_per_slotset = 8;
 static const size_t slotset_bytes = sizeof(slot_t) * slotset_width;
 static const size_t bits_per_slot = sizeof(slot_t) * 8;
 static const size_t bits_per_slotset = slotset_bytes * 8;
@@ -141,6 +142,7 @@ class AllocatorLevel01Loose : public AllocatorLevel01
     L1_ENTRY_NOT_USED = 0x02,
     L1_ENTRY_FREE = 0x03,
     CHILD_PER_SLOT = bits_per_slot / L1_ENTRY_WIDTH, // 32
+    L1_ENTRIES_PER_SLOT = bits_per_slot / L1_ENTRY_WIDTH, //32
     CHILD_PER_SLOT_L0 = bits_per_slot, // 64
   };
   uint64_t _children_per_slot() const override
@@ -469,8 +471,13 @@ public:
   }
   void collect_stats(
     std::map<size_t, size_t>& bins_overall) override;
+
+  static inline ssize_t count_0s(slot_t slot_val, size_t start_pos);
+  static inline ssize_t count_1s(slot_t slot_val, size_t start_pos);
+  void dump(std::function<void(uint64_t offset, uint64_t length)> notify);
 };
 
+
 class AllocatorLevel01Compact : public AllocatorLevel01
 {
   uint64_t _children_per_slot() const override
index 43855246ffba8e6170c26543c437bd751f4e3d60..e288df83cf95b2fa069699c895d9f986a1ba4961 100644 (file)
@@ -355,6 +355,10 @@ public:
       o.back()->seq = 30;
     }
 
+    size_t length() {
+      return sizeof(_Header);
+    }
+
     _Header() : seq(0), parent(0), num_children(1) {}
   };
 
index e72f0cc3095e4733918847c4936440ddc6581467..d387947e5d080874697d336cd54c1769c7db3c96 100644 (file)
@@ -1377,7 +1377,7 @@ int FileStore::write_superblock()
   bufferlist bl;
   encode(superblock, bl);
   return safe_write_file(basedir.c_str(), "superblock",
-      bl.c_str(), bl.length());
+                        bl.c_str(), bl.length(), 0600);
 }
 
 int FileStore::read_superblock()
@@ -1462,7 +1462,7 @@ int FileStore::write_version_stamp()
   encode(target_version, bl);
 
   return safe_write_file(basedir.c_str(), "store_version",
-      bl.c_str(), bl.length());
+                        bl.c_str(), bl.length(), 0600);
 }
 
 int FileStore::upgrade()
index c439693589cc55a53c7b3aadac138b59b88bf3f6..ab56b43c2c5e0cc6443be16838e88bcbed09c02b 100644 (file)
@@ -703,10 +703,11 @@ int HashIndex::pre_split_folder(uint32_t pg_num, uint64_t expected_num_objs)
   const uint32_t subs = (1 << split_bits);
   // Calculate how many levels we create starting from here
   int level  = 0;
-  leavies /= subs;
-  while (leavies > 1) {
+  int level_limit = MAX_HASH_LEVEL - dump_num - 1;
+  uint64_t actual_leaves = subs;
+  while (actual_leaves < leavies && level < level_limit) {
     ++level;
-    leavies = leavies >> 4;
+    actual_leaves <<= 4;
   }
   for (uint32_t i = 0; i < subs; ++i) {
     ceph_assert(split_bits <= 4); // otherwise BAD_SHIFT
index e88b21c9dd04edfbc7556cc81209e8fcb6640881..aaef868451c9055c1d6dc656d790c05e4b2700b9 100644 (file)
@@ -169,10 +169,15 @@ public:
   }
 
   void add_to_reports(
-      const std::map<OSDPerfMetricQuery, OSDPerfMetricLimits> & limits,
+      const std::map<OSDPerfMetricQuery, OSDPerfMetricLimits> &limits,
       std::map<OSDPerfMetricQuery, OSDPerfMetricReport> *reports) {
     for (auto &it : data) {
       auto &query = it.first;
+      auto limit_it = limits.find(query);
+      if (limit_it == limits.end()) {
+        continue;
+      }
+      auto &query_limits = limit_it->second;
       auto &counters = it.second;
       auto &report = (*reports)[query];
 
@@ -182,7 +187,7 @@ public:
       auto &descriptors = report.performance_counter_descriptors;
       ceph_assert(descriptors.size() > 0);
 
-      if (!is_limited(limits.at(query), counters.size())) {
+      if (!is_limited(query_limits, counters.size())) {
         for (auto &it_counters : counters) {
           auto &bl = report.group_packed_performance_counters[it_counters.first];
           query.pack_counters(it_counters.second, &bl);
@@ -190,7 +195,7 @@ public:
         continue;
       }
 
-      for (auto &limit : limits.at(query)) {
+      for (auto &limit : query_limits) {
         size_t index = 0;
         for (; index < descriptors.size(); index++) {
           if (descriptors[index] == limit.order_by) {
index 5255cfc843f68b6fe02e1b792b1bdef84e3e8e54..3cf724f221c8135fde273d7be17a47f3d1115f11 100644 (file)
@@ -23,7 +23,9 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <signal.h>
+#include <time.h>
 #include <boost/scoped_ptr.hpp>
+#include <boost/range/adaptor/reversed.hpp>
 
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -227,8 +229,9 @@ OSDService::OSDService(OSD *osd) :
   pre_publish_lock{ceph::make_mutex("OSDService::pre_publish_lock")},
   max_oldest_map(0),
   peer_map_epoch_lock("OSDService::peer_map_epoch_lock"),
-  sched_scrub_lock("OSDService::sched_scrub_lock"), scrubs_pending(0),
-  scrubs_active(0),
+  sched_scrub_lock("OSDService::sched_scrub_lock"),
+  scrubs_local(0),
+  scrubs_remote(0),
   agent_lock("OSDService::agent_lock"),
   agent_valid_iterator(false),
   agent_ops(0),
@@ -353,9 +356,11 @@ void OSDService::identify_splits_and_merges(
           << " pg_nums " << p->second << dendl;
   deque<spg_t> queue;
   queue.push_back(pgid);
+  set<spg_t> did;
   while (!queue.empty()) {
     auto cur = queue.front();
     queue.pop_front();
+    did.insert(cur);
     unsigned pgnum = old_pgnum;
     for (auto q = p->second.lower_bound(old_map->get_epoch());
         q != p->second.end() &&
@@ -371,7 +376,8 @@ void OSDService::identify_splits_and_merges(
                     << " children " << children << dendl;
            for (auto i : children) {
              split_children->insert(make_pair(i, q->first));
-             queue.push_back(i);
+              if (!did.count(i))
+               queue.push_back(i);
            }
          }
        } else if (cur.ps() < q->second) {
@@ -401,8 +407,15 @@ void OSDService::identify_splits_and_merges(
                       << " is merge source, target " << parent
                       << ", source(s) " << children << dendl;
              merge_pgs->insert(make_pair(parent, q->first));
+              if (!did.count(parent)) {
+                // queue (and re-scan) parent in case it might not exist yet
+                // and there are some future splits pending on it
+                queue.push_back(parent);
+              }
              for (auto c : children) {
                merge_pgs->insert(make_pair(c, q->first));
+                if (!did.count(c))
+                  queue.push_back(c);
              }
            }
          } else {
@@ -418,6 +431,8 @@ void OSDService::identify_splits_and_merges(
                     << " is merge target, source " << children << dendl;
            for (auto c : children) {
              merge_pgs->insert(make_pair(c, q->first));
+              if (!did.count(c))
+                queue.push_back(c);
            }
            merge_pgs->insert(make_pair(cur, q->first));
          }
@@ -939,10 +954,24 @@ void OSDService::set_statfs(const struct store_statfs_t &stbuf,
 osd_stat_t OSDService::set_osd_stat(vector<int>& hb_peers,
                                    int num_pgs)
 {
+  utime_t now = ceph_clock_now();
+  auto stale_time = g_conf().get_val<int64_t>("osd_mon_heartbeat_stat_stale");
   std::lock_guard l(stat_lock);
   osd_stat.hb_peers.swap(hb_peers);
   osd->op_tracker.get_age_ms_histogram(&osd_stat.op_queue_age_hist);
   osd_stat.num_pgs = num_pgs;
+  // Clean entries that aren't updated
+  // This is called often enough that we can just remove 1 at a time
+  for (auto i: osd_stat.hb_pingtime) {
+    if (i.second.last_update == 0)
+      continue;
+    if (stale_time && now.sec() - i.second.last_update > stale_time) {
+      dout(20) << __func__ << " time out heartbeat for osd " << i.first
+              << " last_update " << i.second.last_update << dendl;
+      osd_stat.hb_pingtime.erase(i.first);
+      break;
+    }
+  }
   return osd_stat;
 }
 
@@ -1321,78 +1350,77 @@ void OSDService::share_map_peer(int peer, Connection *con, OSDMapRef map)
   }
 }
 
-bool OSDService::can_inc_scrubs_pending()
+bool OSDService::can_inc_scrubs()
 {
   bool can_inc = false;
   std::lock_guard l(sched_scrub_lock);
 
-  if (scrubs_pending + scrubs_active < cct->_conf->osd_max_scrubs) {
-    dout(20) << __func__ << " " << scrubs_pending << " -> " << (scrubs_pending+1)
-            << " (max " << cct->_conf->osd_max_scrubs << ", active " << scrubs_active
-            << ")" << dendl;
+  if (scrubs_local + scrubs_remote < cct->_conf->osd_max_scrubs) {
+    dout(20) << __func__ << " == true " << scrubs_local << " local + " << scrubs_remote
+            << " remote < max " << cct->_conf->osd_max_scrubs << dendl;
     can_inc = true;
   } else {
-    dout(20) << __func__ << " " << scrubs_pending << " + " << scrubs_active
-            << " active >= max " << cct->_conf->osd_max_scrubs << dendl;
+    dout(20) << __func__ << " == false " << scrubs_local << " local + " << scrubs_remote
+            << " remote >= max " << cct->_conf->osd_max_scrubs << dendl;
   }
 
   return can_inc;
 }
 
-bool OSDService::inc_scrubs_pending()
+bool OSDService::inc_scrubs_local()
 {
   bool result = false;
-
-  sched_scrub_lock.Lock();
-  if (scrubs_pending + scrubs_active < cct->_conf->osd_max_scrubs) {
-    dout(20) << "inc_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending+1)
-            << " (max " << cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
+  std::lock_guard l{sched_scrub_lock};
+  if (scrubs_local + scrubs_remote < cct->_conf->osd_max_scrubs) {
+    dout(20) << __func__ << " " << scrubs_local << " -> " << (scrubs_local+1)
+            << " (max " << cct->_conf->osd_max_scrubs << ", remote " << scrubs_remote << ")" << dendl;
     result = true;
-    ++scrubs_pending;
+    ++scrubs_local;
   } else {
-    dout(20) << "inc_scrubs_pending " << scrubs_pending << " + " << scrubs_active << " active >= max " << cct->_conf->osd_max_scrubs << dendl;
+    dout(20) << __func__ << " " << scrubs_local << " local + " << scrubs_remote << " remote >= max " << cct->_conf->osd_max_scrubs << dendl;
   }
-  sched_scrub_lock.Unlock();
-
   return result;
 }
 
-void OSDService::dec_scrubs_pending()
+void OSDService::dec_scrubs_local()
 {
-  sched_scrub_lock.Lock();
-  dout(20) << "dec_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending-1)
-          << " (max " << cct->_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
-  --scrubs_pending;
-  ceph_assert(scrubs_pending >= 0);
-  sched_scrub_lock.Unlock();
+  std::lock_guard l{sched_scrub_lock};
+  dout(20) << __func__ << " " << scrubs_local << " -> " << (scrubs_local-1)
+          << " (max " << cct->_conf->osd_max_scrubs << ", remote " << scrubs_remote << ")" << dendl;
+  --scrubs_local;
+  ceph_assert(scrubs_local >= 0);
 }
 
-void OSDService::inc_scrubs_active(bool reserved)
+bool OSDService::inc_scrubs_remote()
 {
-  sched_scrub_lock.Lock();
-  ++(scrubs_active);
-  if (reserved) {
-    --(scrubs_pending);
-    dout(20) << "inc_scrubs_active " << (scrubs_active-1) << " -> " << scrubs_active
-            << " (max " << cct->_conf->osd_max_scrubs
-            << ", pending " << (scrubs_pending+1) << " -> " << scrubs_pending << ")" << dendl;
-    ceph_assert(scrubs_pending >= 0);
+  bool result = false;
+  std::lock_guard l{sched_scrub_lock};
+  if (scrubs_local + scrubs_remote < cct->_conf->osd_max_scrubs) {
+    dout(20) << __func__ << " " << scrubs_remote << " -> " << (scrubs_remote+1)
+            << " (max " << cct->_conf->osd_max_scrubs << ", local " << scrubs_local << ")" << dendl;
+    result = true;
+    ++scrubs_remote;
   } else {
-    dout(20) << "inc_scrubs_active " << (scrubs_active-1) << " -> " << scrubs_active
-            << " (max " << cct->_conf->osd_max_scrubs
-            << ", pending " << scrubs_pending << ")" << dendl;
+    dout(20) << __func__ << " " << scrubs_local << " local + " << scrubs_remote << " remote >= max " << cct->_conf->osd_max_scrubs << dendl;
   }
-  sched_scrub_lock.Unlock();
+  return result;
+}
+
+void OSDService::dec_scrubs_remote()
+{
+  std::lock_guard l{sched_scrub_lock};
+  dout(20) << __func__ << " " << scrubs_remote << " -> " << (scrubs_remote-1)
+          << " (max " << cct->_conf->osd_max_scrubs << ", local " << scrubs_local << ")" << dendl;
+  --scrubs_remote;
+  ceph_assert(scrubs_remote >= 0);
 }
 
-void OSDService::dec_scrubs_active()
+void OSDService::dump_scrub_reservations(Formatter *f)
 {
-  sched_scrub_lock.Lock();
-  dout(20) << "dec_scrubs_active " << scrubs_active << " -> " << (scrubs_active-1)
-          << " (max " << cct->_conf->osd_max_scrubs << ", pending " << scrubs_pending << ")" << dendl;
-  --scrubs_active;
-  ceph_assert(scrubs_active >= 0);
-  sched_scrub_lock.Unlock();
+  std::lock_guard l{sched_scrub_lock};
+  f->dump_int("scrubs_local", scrubs_local);
+  f->dump_int("scrubs_remote", scrubs_remote);
+  f->dump_int("osd_max_scrubs", cct->_conf->osd_max_scrubs);
 }
 
 void OSDService::retrieve_epochs(epoch_t *_boot_epoch, epoch_t *_up_epoch,
@@ -2595,7 +2623,7 @@ will start to track new ops received afterwards.";
     }
 
     f->close_section(); //watchers
-  } else if (admin_command == "dump_reservations") {
+  } else if (admin_command == "dump_recovery_reservations") {
     f->open_object_section("reservations");
     f->open_object_section("local_reservations");
     service.local_reserver.dump(f);
@@ -2604,6 +2632,10 @@ will start to track new ops received afterwards.";
     service.remote_reserver.dump(f);
     f->close_section();
     f->close_section();
+  } else if (admin_command == "dump_scrub_reservations") {
+    f->open_object_section("scrub_reservations");
+    service.dump_scrub_reservations(f);
+    f->close_section();
   } else if (admin_command == "get_latest_osdmap") {
     get_latest_osdmap();
   } else if (admin_command == "heap") {
@@ -2712,6 +2744,132 @@ will start to track new ops received afterwards.";
     if (is_active()) {
       send_beacon(ceph::coarse_mono_clock::now());
     }
+  } else if (admin_command == "dump_osd_network") {
+    int64_t value = 0;
+    if (!(cmd_getval(cct, cmdmap, "value", value))) {
+      // Convert milliseconds to microseconds
+      value = static_cast<int64_t>(g_conf().get_val<double>("mon_warn_on_slow_ping_time")) * 1000;
+      if (value == 0) {
+        double ratio = g_conf().get_val<double>("mon_warn_on_slow_ping_ratio");
+        value = g_conf().get_val<int64_t>("osd_heartbeat_grace");
+        value *= 1000000 * ratio; // Seconds of grace to microseconds at ratio
+      }
+    } else {
+      // Convert user input to microseconds
+      value *= 1000;
+    }
+    if (value < 0) value = 0;
+
+    struct osd_ping_time_t {
+      uint32_t pingtime;
+      int to;
+      bool back;
+      std::array<uint32_t,3> times;
+      std::array<uint32_t,3> min;
+      std::array<uint32_t,3> max;
+      uint32_t last;
+      uint32_t last_update;
+
+      bool operator<(const osd_ping_time_t& rhs) const {
+       if (pingtime < rhs.pingtime)
+          return true;
+       if (pingtime > rhs.pingtime)
+         return false;
+        if (to < rhs.to)
+         return true;
+        if (to > rhs.to)
+         return false;
+       return back;
+      }
+    };
+
+    set<osd_ping_time_t> sorted;
+    // Get pingtimes under lock and not on the stack
+    map<int, osd_stat_t::Interfaces> *pingtimes = new map<int, osd_stat_t::Interfaces>;
+    service.get_hb_pingtime(pingtimes);
+    for (auto j : *pingtimes) {
+      if (j.second.last_update == 0)
+       continue;
+      osd_ping_time_t item;
+      item.pingtime = std::max(j.second.back_pingtime[0], j.second.back_pingtime[1]);
+      item.pingtime = std::max(item.pingtime, j.second.back_pingtime[2]);
+      if (item.pingtime >= value) {
+       item.to = j.first;
+       item.times[0] = j.second.back_pingtime[0];
+       item.times[1] = j.second.back_pingtime[1];
+       item.times[2] = j.second.back_pingtime[2];
+       item.min[0] = j.second.back_min[0];
+       item.min[1] = j.second.back_min[1];
+       item.min[2] = j.second.back_min[2];
+       item.max[0] = j.second.back_max[0];
+       item.max[1] = j.second.back_max[1];
+       item.max[2] = j.second.back_max[2];
+       item.last = j.second.back_last;
+       item.back = true;
+       item.last_update = j.second.last_update;
+       sorted.emplace(item);
+      }
+      if (j.second.front_last == 0)
+       continue;
+      item.pingtime = std::max(j.second.front_pingtime[0], j.second.front_pingtime[1]);
+      item.pingtime = std::max(item.pingtime, j.second.front_pingtime[2]);
+      if (item.pingtime >= value) {
+       item.to = j.first;
+       item.times[0] = j.second.front_pingtime[0];
+       item.times[1] = j.second.front_pingtime[1];
+       item.times[2] = j.second.front_pingtime[2];
+       item.min[0] = j.second.front_min[0];
+       item.min[1] = j.second.front_min[1];
+       item.min[2] = j.second.front_min[2];
+       item.max[0] = j.second.front_max[0];
+       item.max[1] = j.second.front_max[1];
+       item.max[2] = j.second.front_max[2];
+       item.last = j.second.front_last;
+       item.last_update = j.second.last_update;
+       item.back = false;
+       sorted.emplace(item);
+      }
+    }
+    delete pingtimes;
+    //
+    // Network ping times (1min 5min 15min)
+    f->open_object_section("network_ping_times");
+    f->dump_int("threshold", value / 1000);
+    f->open_array_section("entries");
+    for (auto &sitem : boost::adaptors::reverse(sorted)) {
+      ceph_assert(sitem.pingtime >= value);
+      f->open_object_section("entry");
+
+      const time_t lu(sitem.last_update);
+      char buffer[26];
+      string lustr(ctime_r(&lu, buffer));
+      lustr.pop_back();   // Remove trailing \n
+      auto stale = cct->_conf.get_val<int64_t>("osd_heartbeat_stale");
+      f->dump_string("last update", lustr);
+      f->dump_bool("stale", ceph_clock_now().sec() - sitem.last_update > stale);
+      f->dump_int("from osd", whoami);
+      f->dump_int("to osd", sitem.to);
+      f->dump_string("interface", (sitem.back ? "back" : "front"));
+      f->open_object_section("average");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.times[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.times[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.times[2],3).c_str());
+      f->close_section();  // average
+      f->open_object_section("min");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.max[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.max[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.max[2],3).c_str());
+      f->close_section();  // min
+      f->open_object_section("max");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(sitem.max[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(sitem.max[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(sitem.max[2],3).c_str());
+      f->close_section();  // max
+      f->dump_format_unquoted("last", "%s", fixed_u_to_string(sitem.last,3).c_str());
+      f->close_section();  // entry
+    }
+    f->close_section(); // entries
+    f->close_section(); // network_ping_times
   } else {
     ceph_abort_msg("broken asok registration");
   }
@@ -3303,10 +3461,14 @@ void OSD::final_init()
                                     "show clients which have active watches,"
                                     " and on which objects");
   ceph_assert(r == 0);
-  r = admin_socket->register_command("dump_reservations", "dump_reservations",
+  r = admin_socket->register_command("dump_recovery_reservations", "dump_recovery_reservations",
                                     asok_hook,
                                     "show recovery reservations");
   ceph_assert(r == 0);
+  r = admin_socket->register_command("dump_scrub_reservations", "dump_scrub_reservations",
+                                    asok_hook,
+                                    "show scrub reservations");
+  ceph_assert(r == 0);
   r = admin_socket->register_command("get_latest_osdmap", "get_latest_osdmap",
                                     asok_hook,
                                     "force osd to update the latest map from "
@@ -3390,6 +3552,10 @@ void OSD::final_init()
                                      asok_hook,
                                      "send OSD beacon to mon immediately");
 
+  r = admin_socket->register_command("dump_osd_network", "dump_osd_network name=value,type=CephInt,req=false", asok_hook,
+                                        "Dump osd heartbeat network ping times");
+  ceph_assert(r == 0);
+
   test_ops_hook = new TestOpsSocketHook(&(this->service), this->store);
   // Note: pools are CephString instead of CephPoolname because
   // these commands traditionally support both pool names and numbers
@@ -4810,6 +4976,7 @@ void OSD::_add_heartbeat_peer(int p)
     hi = &heartbeat_peers[p];
     hi->peer = p;
     RefCountedPtr s{new HeartbeatSession{p}, false};
+    hi->hb_interval_start = ceph_clock_now();
     hi->con_back = cons.first.get();
     hi->con_back->set_priv(s);
     if (cons.second) {
@@ -5111,6 +5278,131 @@ void OSD::handle_osd_ping(MOSDPing *m)
                      << " , erase pending ping(sent at " << m->stamp << ")"
                      << " and older pending ping(s)"
                      << dendl;
+
+#define ROUND_S_TO_USEC(sec) (uint32_t)((sec) * 1000 * 1000 + 0.5)
+           ++i->second.hb_average_count;
+           uint32_t back_pingtime = ROUND_S_TO_USEC(i->second.last_rx_back - m->stamp);
+           i->second.hb_total_back += back_pingtime;
+           if (back_pingtime < i->second.hb_min_back)
+             i->second.hb_min_back = back_pingtime;
+           if (back_pingtime > i->second.hb_max_back)
+             i->second.hb_max_back = back_pingtime;
+           uint32_t front_pingtime = ROUND_S_TO_USEC(i->second.last_rx_front - m->stamp);
+           i->second.hb_total_front += front_pingtime;
+           if (front_pingtime < i->second.hb_min_front)
+             i->second.hb_min_front = front_pingtime;
+           if (front_pingtime > i->second.hb_max_front)
+             i->second.hb_max_front = front_pingtime;
+
+           ceph_assert(i->second.hb_interval_start != utime_t());
+           if (i->second.hb_interval_start == utime_t())
+             i->second.hb_interval_start = now;
+           int64_t hb_avg_time_period = 60;
+           if (cct->_conf.get_val<int64_t>("debug_heartbeat_testing_span")) {
+             hb_avg_time_period = cct->_conf.get_val<int64_t>("debug_heartbeat_testing_span");
+           }
+           if (now - i->second.hb_interval_start >=  utime_t(hb_avg_time_period, 0)) {
+              uint32_t back_avg = i->second.hb_total_back / i->second.hb_average_count;
+              uint32_t back_min = i->second.hb_min_back;
+              uint32_t back_max = i->second.hb_max_back;
+              uint32_t front_avg = i->second.hb_total_front / i->second.hb_average_count;
+              uint32_t front_min = i->second.hb_min_front;
+              uint32_t front_max = i->second.hb_max_front;
+
+             // Reset for new interval
+             i->second.hb_average_count = 0;
+             i->second.hb_interval_start = now;
+             i->second.hb_total_back = i->second.hb_max_back = 0;
+             i->second.hb_min_back =  UINT_MAX;
+             i->second.hb_total_front = i->second.hb_max_front = 0;
+             i->second.hb_min_front = UINT_MAX;
+
+             // Record per osd interace ping times
+             // Based on osd_heartbeat_interval ignoring that it is randomly short than this interval
+             if (i->second.hb_back_pingtime.size() == 0) {
+               ceph_assert(i->second.hb_front_pingtime.size() == 0);
+               for (unsigned k = 0 ; k < hb_vector_size; ++k) {
+                 i->second.hb_back_pingtime.push_back(back_avg);
+                 i->second.hb_back_min.push_back(back_min);
+                 i->second.hb_back_max.push_back(back_max);
+                 i->second.hb_front_pingtime.push_back(front_avg);
+                 i->second.hb_front_min.push_back(front_min);
+                 i->second.hb_front_max.push_back(front_max);
+                 ++i->second.hb_index;
+               }
+             } else {
+               int index = i->second.hb_index & (hb_vector_size - 1);
+               i->second.hb_back_pingtime[index] = back_avg;
+               i->second.hb_back_min[index] = back_min;
+               i->second.hb_back_max[index] = back_max;
+               i->second.hb_front_pingtime[index] = front_avg;
+               i->second.hb_front_min[index] = front_min;
+               i->second.hb_front_max[index] = front_max;
+               ++i->second.hb_index;
+             }
+
+             {
+               std::lock_guard l(service.stat_lock);
+               service.osd_stat.hb_pingtime[from].last_update = now.sec();
+               service.osd_stat.hb_pingtime[from].back_last =  back_pingtime;
+
+               uint32_t total = 0;
+               uint32_t min = UINT_MAX;
+               uint32_t max = 0;
+               uint32_t count = 0;
+               uint32_t which = 0;
+               uint32_t size = (uint32_t)i->second.hb_back_pingtime.size();
+               for (int32_t k = size - 1 ; k >= 0; --k) {
+                 ++count;
+                 int index = (i->second.hb_index + k) % size;
+                 total += i->second.hb_back_pingtime[index];
+                 if (i->second.hb_back_min[index] < min)
+                   min = i->second.hb_back_min[index];
+                 if (i->second.hb_back_max[index] > max)
+                   max = i->second.hb_back_max[index];
+                 if (count == 1 || count == 5 || count == 15) {
+                   service.osd_stat.hb_pingtime[from].back_pingtime[which] = total / count;
+                   service.osd_stat.hb_pingtime[from].back_min[which] = min;
+                   service.osd_stat.hb_pingtime[from].back_max[which] = max;
+                   which++;
+                   if (count == 15)
+                     break;
+                 }
+               }
+
+                if (i->second.con_front != NULL) {
+                 service.osd_stat.hb_pingtime[from].front_last = front_pingtime;
+
+                 total = 0;
+                 min = UINT_MAX;
+                 max = 0;
+                 count = 0;
+                 which = 0;
+                 for (int32_t k = size - 1 ; k >= 0; --k) {
+                   ++count;
+                   int index = (i->second.hb_index + k) % size;
+                   total += i->second.hb_front_pingtime[index];
+                   if (i->second.hb_front_min[index] < min)
+                     min = i->second.hb_front_min[index];
+                   if (i->second.hb_front_max[index] > max)
+                     max = i->second.hb_front_max[index];
+                   if (count == 1 || count == 5 || count == 15) {
+                     service.osd_stat.hb_pingtime[from].front_pingtime[which] = total / count;
+                     service.osd_stat.hb_pingtime[from].front_min[which] = min;
+                     service.osd_stat.hb_pingtime[from].front_max[which] = max;
+                     which++;
+                     if (count == 15)
+                       break;
+                   }
+                 }
+               }
+             }
+           } else {
+               std::lock_guard l(service.stat_lock);
+               service.osd_stat.hb_pingtime[from].back_last =  back_pingtime;
+                if (i->second.con_front != NULL)
+                 service.osd_stat.hb_pingtime[from].front_last = front_pingtime;
+           }
             i->second.ping_history.erase(i->second.ping_history.begin(), ++acked);
           }
 
@@ -5174,7 +5466,12 @@ void OSD::heartbeat_entry()
   while (!heartbeat_stop) {
     heartbeat();
 
-    double wait = .5 + ((float)(rand() % 10)/10.0) * (float)cct->_conf->osd_heartbeat_interval;
+    double wait;
+    if (cct->_conf.get_val<bool>("debug_disable_randomized_ping")) {
+      wait = (float)cct->_conf->osd_heartbeat_interval;
+    } else {
+      wait = .5 + ((float)(rand() % 10)/10.0) * (float)cct->_conf->osd_heartbeat_interval;
+    }
     utime_t w;
     w.set_from_double(wait);
     dout(30) << "heartbeat_entry sleeping for " << wait << dendl;
@@ -5287,6 +5584,8 @@ void OSD::heartbeat()
       i->second.first_tx = now;
     i->second.ping_history[now] = make_pair(deadline,
       HeartbeatInfo::HEARTBEAT_MAX_CONN);
+    if (i->second.hb_interval_start == utime_t())
+      i->second.hb_interval_start = now;
     dout(30) << "heartbeat sending ping to osd." << peer << dendl;
     i->second.con_back->send_message(new MOSDPing(monc->get_fsid(),
                                          service.get_osdmap_epoch(),
@@ -7610,15 +7909,22 @@ bool OSD::scrub_load_below_threshold()
 void OSD::sched_scrub()
 {
   // if not permitted, fail fast
-  if (!service.can_inc_scrubs_pending()) {
+  if (!service.can_inc_scrubs()) {
     return;
   }
-  if (!cct->_conf->osd_scrub_during_recovery && service.is_recovery_active()) {
-    dout(20) << __func__ << " not scheduling scrubs due to active recovery" << dendl;
-    return;
+  bool allow_requested_repair_only = false;
+  if (service.is_recovery_active()) {
+    if (!cct->_conf->osd_scrub_during_recovery && cct->_conf->osd_repair_during_recovery) {
+      dout(10) << __func__
+               << " will only schedule explicitly requested repair due to active recovery"
+               << dendl;
+      allow_requested_repair_only = true;
+    } else if (!cct->_conf->osd_scrub_during_recovery && !cct->_conf->osd_repair_during_recovery) {
+      dout(20) << __func__ << " not scheduling scrubs due to active recovery" << dendl;
+      return;
+    }
   }
 
-
   utime_t now = ceph_clock_now();
   bool time_permit = scrub_time_permit(now);
   bool load_is_low = scrub_load_below_threshold();
@@ -7651,8 +7957,16 @@ void OSD::sched_scrub()
        dout(30) << __func__ << ": already in progress pgid " << scrub.pgid << dendl;
        continue;
       }
+      // Skip other kinds of scrubing if only explicitly requested repairing is allowed
+      if (allow_requested_repair_only && !pg->scrubber.must_repair) {
+        pg->unlock();
+        dout(10) << __func__ << " skip " << scrub.pgid
+                 << " because repairing is not explicitly requested on it"
+                 << dendl;
+        continue;
+      }
       // If it is reserving, let it resolve before going to the next scrub job
-      if (pg->scrubber.reserved) {
+      if (pg->scrubber.local_reserved && !pg->scrubber.active) {
        pg->unlock();
        dout(30) << __func__ << ": reserve in progress pgid " << scrub.pgid << dendl;
        break;
@@ -8627,6 +8941,11 @@ bool OSD::advance_pg(
          pg->write_if_dirty(rctx);
          dispatch_context_transaction(*rctx, pg, &handle);
          pg->ch->flush();
+         // release backoffs explicitly, since the on_shutdown path
+         // aggressively tears down backoff state.
+         if (pg->is_primary()) {
+           pg->release_pg_backoffs();
+         }
          pg->on_shutdown();
          OSDShard *sdata = pg->osd_shard;
          {
@@ -9745,6 +10064,9 @@ void OSDService::finish_recovery_op(PG *pg, const hobject_t& soid, bool dequeue)
 
 bool OSDService::is_recovery_active()
 {
+  if (cct->_conf->osd_debug_pretend_recovery_active) {
+    return true;
+  }
   return local_reserver.has_reservation() || remote_reserver.has_reservation();
 }
 
@@ -10308,11 +10630,9 @@ void OSD::set_perf_queries(
   std::vector<PGRef> pgs;
   _get_pgs(&pgs);
   for (auto& pg : pgs) {
-    if (pg->is_primary()) {
-      pg->lock();
-      pg->set_dynamic_perf_stats_queries(supported_queries);
-      pg->unlock();
-    }
+    pg->lock();
+    pg->set_dynamic_perf_stats_queries(supported_queries);
+    pg->unlock();
   }
 }
 
@@ -10322,17 +10642,15 @@ void OSD::get_perf_reports(
   _get_pgs(&pgs);
   DynamicPerfStats dps;
   for (auto& pg : pgs) {
-    if (pg->is_primary()) {
-      // m_perf_queries can be modified only in set_perf_queries by mgr client
-      // request, and it is protected by by mgr client's lock, which is held
-      // when set_perf_queries/get_perf_reports are called, so we may not hold
-      // m_perf_queries_lock here.
-      DynamicPerfStats pg_dps(m_perf_queries);
-      pg->lock();
-      pg->get_dynamic_perf_stats(&pg_dps);
-      pg->unlock();
-      dps.merge(pg_dps);
-    }
+    // m_perf_queries can be modified only in set_perf_queries by mgr client
+    // request, and it is protected by by mgr client's lock, which is held
+    // when set_perf_queries/get_perf_reports are called, so we may not hold
+    // m_perf_queries_lock here.
+    DynamicPerfStats pg_dps(m_perf_queries);
+    pg->lock();
+    pg->get_dynamic_perf_stats(&pg_dps);
+    pg->unlock();
+    dps.merge(pg_dps);
   }
   dps.add_to_reports(m_perf_limits, reports);
   dout(20) << "reports for " << reports->size() << " queries" << dendl;
index dab173c033d9fb5769aa63b3441ddc285b73318b..c87deeb0eecb0b2b266763ea3e25900b9427d743 100644 (file)
@@ -433,8 +433,8 @@ public:
 private:
   // -- scrub scheduling --
   Mutex sched_scrub_lock;
-  int scrubs_pending;
-  int scrubs_active;
+  int scrubs_local;
+  int scrubs_remote;
 
 public:
   struct ScrubJob {
@@ -509,11 +509,12 @@ public:
     f->close_section();
   }
 
-  bool can_inc_scrubs_pending();
-  bool inc_scrubs_pending();
-  void inc_scrubs_active(bool reserved);
-  void dec_scrubs_pending();
-  void dec_scrubs_active();
+  bool can_inc_scrubs();
+  bool inc_scrubs_local();
+  void dec_scrubs_local();
+  bool inc_scrubs_remote();
+  void dec_scrubs_remote();
+  void dump_scrub_reservations(Formatter *f);
 
   void reply_op_error(OpRequestRef op, int err);
   void reply_op_error(OpRequestRef op, int err, eversion_t v, version_t uv);
@@ -920,6 +921,12 @@ public:
     std::lock_guard l(stat_lock);
     return osd_stat.seq;
   }
+  void get_hb_pingtime(map<int, osd_stat_t::Interfaces> *pp)
+  {
+    std::lock_guard l(stat_lock);
+    *pp = osd_stat.hb_pingtime;
+    return;
+  }
 
   // -- OSD Full Status --
 private:
@@ -1563,6 +1570,24 @@ private:
     /// send time -> deadline -> remaining replies
     map<utime_t, pair<utime_t, int>> ping_history;
 
+    utime_t hb_interval_start;
+    uint32_t hb_average_count = 0;
+    uint32_t hb_index = 0;
+
+    uint32_t hb_total_back = 0;
+    uint32_t hb_min_back = UINT_MAX;
+    uint32_t hb_max_back = 0;
+    vector<uint32_t> hb_back_pingtime;
+    vector<uint32_t> hb_back_min;
+    vector<uint32_t> hb_back_max;
+
+    uint32_t hb_total_front = 0;
+    uint32_t hb_min_front = UINT_MAX;
+    uint32_t hb_max_front = 0;
+    vector<uint32_t> hb_front_pingtime;
+    vector<uint32_t> hb_front_min;
+    vector<uint32_t> hb_front_max;
+
     bool is_stale(utime_t stale) {
       if (ping_history.empty()) {
         return false;
@@ -1609,7 +1634,11 @@ private:
   Messenger *hb_back_server_messenger;
   utime_t last_heartbeat_resample;   ///< last time we chose random peers in waiting-for-healthy state
   double daily_loadavg;
-  
+
+  // Track ping repsonse times using vector as a circular buffer
+  // MUST BE A POWER OF 2
+  const uint32_t hb_vector_size = 16;
+
   void _add_heartbeat_peer(int p);
   void _remove_heartbeat_peer(int p);
   bool heartbeat_reset(Connection *con);
index e3d541a91df010b7a656e5e0e92bf6c4aeae44ff..b6df192c31ea1c7a5acc65c92fa1e6cd1700a39d 100644 (file)
@@ -115,7 +115,7 @@ bool OSDCapPoolNamespace::is_match(const std::string& pn,
     }
   }
   if (nspace) {
-    if ((*nspace)[nspace->length() - 1] == '*' &&
+    if (!nspace->empty() && nspace->back() == '*' &&
        boost::starts_with(ns, nspace->substr(0, nspace->length() - 1))) {
       return true;
     }
index e32a5bf2caa617c8b05ce79b3baa245866e76755..be5d6fcf0deaa5f4683dded065f24e5790b00671 100644 (file)
@@ -1809,45 +1809,6 @@ bool OSDMap::check_pg_upmaps(
     }
     vector<int> raw, up;
     pg_to_raw_upmap(pg, &raw, &up);
-    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;
-    }
-    auto j = pg_upmap_items.find(pg);
-    if (j != pg_upmap_items.end()) {
-      mempool::osdmap::vector<pair<int,int>> newmap;
-      for (auto& p : j->second) {
-        if (std::find(raw.begin(), raw.end(), p.first) == raw.end()) {
-          // cancel mapping if source osd does not exist anymore
-          continue;
-        }
-        if (p.second != CRUSH_ITEM_NONE && p.second < max_osd &&
-            p.second >= 0 && osd_weight[p.second] == 0) {
-          // cancel mapping if target osd is out
-          continue;
-        }
-        newmap.push_back(p);
-      }
-      if (newmap.empty()) {
-        ldout(cct, 10) << " removing no-op pg_upmap_items "
-                       << j->first << " " << j->second
-                       << dendl;
-        to_cancel->push_back(pg);
-        continue;
-      } else if (newmap != j->second) {
-        ldout(cct, 10) << " simplifying partially no-op pg_upmap_items "
-                       << j->first << " " << j->second
-                       << " -> " << newmap
-                       << dendl;
-        to_remap->insert({pg, newmap});
-        any_change = true;
-        continue;
-      }
-    }
     auto crush_rule = get_pg_pool_crush_rule(pg);
     auto r = crush->verify_upmap(cct,
                                  crush_rule,
@@ -1892,6 +1853,47 @@ bool OSDMap::check_pg_upmaps(
         break;
       }
     }
+    if (!to_cancel->empty() && to_cancel->back() == pg)
+      continue;
+    // 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;
+    }
+    auto j = pg_upmap_items.find(pg);
+    if (j != pg_upmap_items.end()) {
+      mempool::osdmap::vector<pair<int,int>> newmap;
+      for (auto& p : j->second) {
+        if (std::find(raw.begin(), raw.end(), p.first) == raw.end()) {
+          // cancel mapping if source osd does not exist anymore
+          continue;
+        }
+        if (p.second != CRUSH_ITEM_NONE && p.second < max_osd &&
+            p.second >= 0 && osd_weight[p.second] == 0) {
+          // cancel mapping if target osd is out
+          continue;
+        }
+        newmap.push_back(p);
+      }
+      if (newmap.empty()) {
+        ldout(cct, 10) << " removing no-op pg_upmap_items "
+                       << j->first << " " << j->second
+                       << dendl;
+        to_cancel->push_back(pg);
+      } else if (newmap != j->second) {
+        ldout(cct, 10) << " simplifying partially no-op pg_upmap_items "
+                       << j->first << " " << j->second
+                       << " -> " << newmap
+                       << dendl;
+        to_remap->insert({pg, newmap});
+        any_change = true;
+      }
+    }
   }
   any_change = any_change || !to_cancel->empty();
   return any_change;
@@ -3900,8 +3902,6 @@ void OSDMap::print_summary(Formatter *f, ostream& out,
     f->dump_int("num_osds", get_num_osds());
     f->dump_int("num_up_osds", get_num_up_osds());
     f->dump_int("num_in_osds", get_num_in_osds());
-    f->dump_bool("full", test_flag(CEPH_OSDMAP_FULL) ? true : false);
-    f->dump_bool("nearfull", test_flag(CEPH_OSDMAP_NEARFULL) ? true : false);
     f->dump_unsigned("num_remapped_pgs", get_num_pg_temp());
     f->close_section();
   } else {
@@ -3932,10 +3932,6 @@ void OSDMap::print_oneline_summary(ostream& out) const
       << get_num_osds() << " total, "
       << get_num_up_osds() << " up, "
       << get_num_in_osds() << " in";
-  if (test_flag(CEPH_OSDMAP_FULL))
-    out << "; full flag set";
-  else if (test_flag(CEPH_OSDMAP_NEARFULL))
-    out << "; nearfull flag set";
 }
 
 bool OSDMap::crush_rule_in_use(int rule_id) const
@@ -5543,6 +5539,31 @@ void OSDMap::check_health(health_check_map_t *checks) const
     }
   }
 
+  std::list<std::string> scrub_messages;
+  bool noscrub = false, nodeepscrub = false;
+  for (const auto &p : pools) {
+    if (p.second.flags & pg_pool_t::FLAG_NOSCRUB) {
+      ostringstream ss;
+      ss << "Pool " << get_pool_name(p.first) << " has noscrub flag";
+      scrub_messages.push_back(ss.str());
+      noscrub = true;
+    }
+    if (p.second.flags & pg_pool_t::FLAG_NODEEP_SCRUB) {
+      ostringstream ss;
+      ss << "Pool " << get_pool_name(p.first) << " has nodeep-scrub flag";
+      scrub_messages.push_back(ss.str());
+      nodeepscrub = true;
+    }
+  }
+  if (noscrub || nodeepscrub) {
+    string out = "";
+    out += noscrub ? string("noscrub") + (nodeepscrub ? ", " : "") : "";
+    out += nodeepscrub ? "nodeep-scrub" : "";
+    auto& d = checks->add("POOL_SCRUB_FLAGS", HEALTH_OK,
+      "Some pool(s) have the " + out + " flag(s) set");
+    d.detail.splice(d.detail.end(), scrub_messages);
+  }
+
   // OSD_OUT_OF_ORDER_FULL
   {
     // An osd could configure failsafe ratio, to something different
index 1f7e74f4d838243fd37d4d27df37f6fb6723b7dd..61a80c4961e7b13bb5325a9ed0f42843fabf79ba 100644 (file)
@@ -106,7 +106,7 @@ ostream& operator<<(ostream& out, const osd_xinfo_t& xi);
 struct PGTempMap {
 #if 1
   bufferlist data;
-  typedef btree::btree_map<pg_t,int32_t*> map_t;
+  typedef btree::btree_map<pg_t,ceph_le32*> map_t;
   map_t map;
 
   void encode(bufferlist& bl) const {
@@ -115,7 +115,7 @@ struct PGTempMap {
     encode(n, bl);
     for (auto &p : map) {
       encode(p.first, bl);
-      bl.append((char*)p.second, (*p.second + 1) * sizeof(int32_t));
+      bl.append((char*)p.second, (*p.second + 1) * sizeof(ceph_le32));
     }
   }
   void decode(bufferlist::const_iterator& p) {
@@ -147,7 +147,7 @@ struct PGTempMap {
     //map.reserve(n);
     char *start = data.c_str();
     for (auto i : offsets) {
-      map.insert(map.end(), make_pair(i.first, (int32_t*)(start + i.second)));
+      map.insert(map.end(), make_pair(i.first, (ceph_le32*)(start + i.second)));
     }
   }
   void rebuild() {
@@ -171,8 +171,8 @@ struct PGTempMap {
        current.first = it->first;
        ceph_assert(it->second);
        current.second.resize(*it->second);
-       int32_t *p = it->second + 1;
-       for (int n = 0; n < *it->second; ++n, ++p) {
+       ceph_le32 *p = it->second + 1;
+       for (uint32_t n = 0; n < *it->second; ++n, ++p) {
          current.second[n] = *p;
        }
       }
@@ -234,18 +234,18 @@ struct PGTempMap {
   }
   void set(pg_t pgid, const mempool::osdmap::vector<int32_t>& v) {
     using ceph::encode;
-    size_t need = sizeof(int32_t) * (1 + v.size());
+    size_t need = sizeof(ceph_le32) * (1 + v.size());
     if (need < data.get_append_buffer_unused_tail_length()) {
       bufferptr z(data.get_append_buffer_unused_tail_length());
       z.zero();
       data.append(z.c_str(), z.length());
     }
     encode(v, data);
-    map[pgid] = (int32_t*)(data.back().end_c_str()) - (1 + v.size());
+    map[pgid] = (ceph_le32*)(data.back().end_c_str()) - (1 + v.size());
   }
   mempool::osdmap::vector<int32_t> get(pg_t pgid) {
     mempool::osdmap::vector<int32_t> v;
-    int32_t *p = map[pgid];
+    ceph_le32 *p = map[pgid];
     size_t n = *p++;
     v.resize(n);
     for (size_t i = 0; i < n; ++i, ++p) {
index 8161087bfb4700e1877f018bea978e06b9c6e7ae..cd52976ffcb810ade08002a4d4c2f78655b4af3c 100644 (file)
@@ -912,11 +912,15 @@ bool PG::needs_backfill() const
 
 void PG::check_past_interval_bounds() const
 {
+  auto oldest_epoch = osd->get_superblock().oldest_map;
   auto rpib = get_required_past_interval_bounds(
     info,
-    osd->get_superblock().oldest_map);
+    oldest_epoch);
   if (rpib.first >= rpib.second) {
-    if (!past_intervals.empty()) {
+    // do not warn if the start bound is dictated by oldest_map; the
+    // past intervals are presumably appropriate given the pg info.
+    if (!past_intervals.empty() &&
+        rpib.first > oldest_epoch) {
       osd->clog->error() << info.pgid << " required past_interval bounds are"
                         << " empty [" << rpib << ") but past_intervals is not: "
                         << past_intervals;
@@ -1118,7 +1122,7 @@ void PG::clear_primary_state()
 }
 
 PG::Scrubber::Scrubber()
- : reserved(false), reserve_failed(false),
+ : local_reserved(false), remote_reserved(false), reserve_failed(false),
    epoch_start(0),
    active(false),
    shallow_errors(0), deep_errors(0), fixed(0),
@@ -2877,7 +2881,7 @@ void PG::merge_from(map<spg_t,PGRef>& sources, RecoveryCtx *rctx,
 
   // make sure we have a meaningful last_epoch_started/clean (if we were a
   // placeholder)
-  if (info.last_epoch_started == 0) {
+  if (info.history.epoch_created == 0) {
     // start with (a) source's history, since these PGs *should* have been
     // remapped in concert with each other...
     info.history = sources.begin()->second->info.history;
@@ -4337,22 +4341,24 @@ void PG::requeue_map_waiters()
 /*
  * when holding pg and sched_scrub_lock, then the states are:
  *   scheduling:
- *     scrubber.reserved = true
- *     scrub_rserved_peers includes whoami
- *     osd->scrub_pending++
+ *     scrubber.local_reserved = true
+ *     scrubber.active = false
+ *     scrubber.reserved_peers includes whoami
+ *     osd->scrubs_local++
  *   scheduling, replica declined:
- *     scrubber.reserved = true
+ *     scrubber.local_reserved = true
  *     scrubber.reserved_peers includes -1
- *     osd->scrub_pending++
+ *     osd->scrub_local++
  *   pending:
- *     scrubber.reserved = true
+ *     scrubber.local_reserved = true
+ *     scrubber.active = false
  *     scrubber.reserved_peers.size() == acting.size();
  *     pg on scrub_wq
- *     osd->scrub_pending++
+ *     osd->scrub_local++
  *   scrubbing:
- *     scrubber.reserved = false;
+ *     scrubber.local_reserved = true;
+ *     scrubber.active = true
  *     scrubber.reserved_peers empty
- *     osd->scrubber.active++
  */
 
 // returns true if a scrub has been newly kicked off
@@ -4366,7 +4372,7 @@ bool PG::sched_scrub()
 
   // All processing the first time through commits us to whatever
   // choices are made.
-  if (!scrubber.reserved) {
+  if (!scrubber.local_reserved) {
     dout(20) << __func__ << ": Start processing pg " << info.pgid << dendl;
 
     bool allow_deep_scrub = !(get_osdmap()->test_flag(CEPH_OSDMAP_NODEEP_SCRUB) ||
@@ -4452,10 +4458,13 @@ bool PG::sched_scrub()
     scrubber.need_auto = false;
 
     ceph_assert(scrubber.reserved_peers.empty());
-    if ((cct->_conf->osd_scrub_during_recovery || !osd->is_recovery_active()) &&
-         osd->inc_scrubs_pending()) {
+    bool allow_scrubing = cct->_conf->osd_scrub_during_recovery ||
+                          (cct->_conf->osd_repair_during_recovery && scrubber.must_repair) ||
+                          !osd->is_recovery_active();
+    if (allow_scrubing &&
+         osd->inc_scrubs_local()) {
       dout(20) << __func__ << ": reserved locally, reserving replicas" << dendl;
-      scrubber.reserved = true;
+      scrubber.local_reserved = true;
       scrubber.reserved_peers.insert(pg_whoami);
       scrub_reserve_replicas();
     } else {
@@ -4464,7 +4473,7 @@ bool PG::sched_scrub()
     }
   }
 
-  if (scrubber.reserved) {
+  if (scrubber.local_reserved) {
     if (scrubber.reserve_failed) {
       dout(20) << __func__ << ": failed, a peer declined" << dendl;
       clear_scrub_reserved();
@@ -4617,24 +4626,24 @@ void PG::handle_scrub_reserve_request(OpRequestRef op)
 {
   dout(7) << __func__ << " " << *op->get_req() << dendl;
   op->mark_started();
-  if (scrubber.reserved) {
+  if (scrubber.local_reserved) {
     dout(10) << __func__ << " ignoring reserve request: Already reserved"
             << dendl;
     return;
   }
   if ((cct->_conf->osd_scrub_during_recovery || !osd->is_recovery_active()) &&
-      osd->inc_scrubs_pending()) {
-    scrubber.reserved = true;
+      osd->inc_scrubs_remote()) {
+    scrubber.remote_reserved = true;
   } else {
     dout(20) << __func__ << ": failed to reserve remotely" << dendl;
-    scrubber.reserved = false;
+    scrubber.remote_reserved = false;
   }
   const MOSDScrubReserve *m =
     static_cast<const MOSDScrubReserve*>(op->get_req());
   Message *reply = new MOSDScrubReserve(
     spg_t(info.pgid.pgid, primary.shard),
     m->map_epoch,
-    scrubber.reserved ? MOSDScrubReserve::GRANT : MOSDScrubReserve::REJECT,
+    scrubber.remote_reserved ? MOSDScrubReserve::GRANT : MOSDScrubReserve::REJECT,
     pg_whoami);
   osd->send_message_osd_cluster(reply, op->get_req()->get_connection());
 }
@@ -4643,7 +4652,7 @@ void PG::handle_scrub_reserve_grant(OpRequestRef op, pg_shard_t from)
 {
   dout(7) << __func__ << " " << *op->get_req() << dendl;
   op->mark_started();
-  if (!scrubber.reserved) {
+  if (!scrubber.local_reserved) {
     dout(10) << "ignoring obsolete scrub reserve reply" << dendl;
     return;
   }
@@ -4660,7 +4669,7 @@ void PG::handle_scrub_reserve_reject(OpRequestRef op, pg_shard_t from)
 {
   dout(7) << __func__ << " " << *op->get_req() << dendl;
   op->mark_started();
-  if (!scrubber.reserved) {
+  if (!scrubber.local_reserved) {
     dout(10) << "ignoring obsolete scrub reserve reply" << dendl;
     return;
   }
@@ -4703,7 +4712,7 @@ void PG::reject_reservation()
   osd->send_message_osd_cluster(
     primary.osd,
     new MBackfillReserve(
-      MBackfillReserve::REJECT,
+      MBackfillReserve::REJECT_TOOFULL,
       spg_t(info.pgid.pgid, primary.shard),
       get_osdmap_epoch()),
     get_osdmap_epoch());
@@ -4734,9 +4743,13 @@ void PG::clear_scrub_reserved()
   scrubber.reserved_peers.clear();
   scrubber.reserve_failed = false;
 
-  if (scrubber.reserved) {
-    scrubber.reserved = false;
-    osd->dec_scrubs_pending();
+  if (scrubber.local_reserved) {
+    scrubber.local_reserved = false;
+    osd->dec_scrubs_local();
+  }
+  if (scrubber.remote_reserved) {
+    scrubber.remote_reserved = false;
+    osd->dec_scrubs_remote();
   }
 }
 
@@ -5310,12 +5323,6 @@ void PG::chunky_scrub(ThreadPool::TPHandle &handle)
         scrubber.epoch_start = info.history.same_interval_since;
         scrubber.active = true;
 
-       osd->inc_scrubs_active(scrubber.reserved);
-       if (scrubber.reserved) {
-         scrubber.reserved = false;
-         scrubber.reserved_peers.clear();
-       }
-
        {
          ObjectStore::Transaction t;
          scrubber.cleanup_store(&t);
@@ -5675,9 +5682,12 @@ void PG::scrub_clear_state(bool has_error)
   state_clear(PG_STATE_DEEP_SCRUB);
   publish_stats_to_osd();
 
-  // active -> nothing.
-  if (scrubber.active)
-    osd->dec_scrubs_active();
+  // local -> nothing.
+  if (scrubber.local_reserved) {
+    osd->dec_scrubs_local();
+    scrubber.local_reserved = false;
+    scrubber.reserved_peers.clear();
+  }
 
   requeue_ops(waiting_for_scrub);
 
@@ -7762,15 +7772,16 @@ void PG::RecoveryState::WaitRemoteBackfillReserved::retry()
   }
 
   pg->state_clear(PG_STATE_BACKFILL_WAIT);
-  pg->state_set(PG_STATE_BACKFILL_TOOFULL);
   pg->publish_stats_to_osd();
 
   pg->schedule_backfill_retry(pg->cct->_conf->osd_backfill_retry_interval);
 }
 
 boost::statechart::result
-PG::RecoveryState::WaitRemoteBackfillReserved::react(const RemoteReservationRejected &evt)
+PG::RecoveryState::WaitRemoteBackfillReserved::react(const RemoteReservationRejectedTooFull &evt)
 {
+  PG *pg = context< RecoveryMachine >().pg;
+  pg->state_set(PG_STATE_BACKFILL_TOOFULL);
   retry();
   return transit<NotBackfilling>();
 }
@@ -7828,7 +7839,7 @@ PG::RecoveryState::NotBackfilling::react(const RemoteBackfillReserved &evt)
 }
 
 boost::statechart::result
-PG::RecoveryState::NotBackfilling::react(const RemoteReservationRejected &evt)
+PG::RecoveryState::NotBackfilling::react(const RemoteReservationRejectedTooFull &evt)
 {
   return discard_event();
 }
@@ -7870,11 +7881,11 @@ PG::RecoveryState::RepNotRecovering::RepNotRecovering(my_context ctx)
 }
 
 boost::statechart::result
-PG::RecoveryState::RepNotRecovering::react(const RejectRemoteReservation &evt)
+PG::RecoveryState::RepNotRecovering::react(const RejectTooFullRemoteReservation &evt)
 {
   PG *pg = context< RecoveryMachine >().pg;
   pg->reject_reservation();
-  post_event(RemoteReservationRejected());
+  post_event(RemoteReservationRejectedTooFull());
   return discard_event();
 }
 
@@ -7978,12 +7989,12 @@ PG::RecoveryState::RepNotRecovering::react(const RequestBackfillPrio &evt)
       (rand()%1000 < (pg->cct->_conf->osd_debug_reject_backfill_probability*1000.0))) {
     ldout(pg->cct, 10) << "backfill reservation rejected: failure injection"
                       << dendl;
-    post_event(RejectRemoteReservation());
+    post_event(RejectTooFullRemoteReservation());
   } else if (!pg->cct->_conf->osd_debug_skip_full_check_in_backfill_reservation &&
       pg->osd->tentative_backfill_full(pg, pending_adjustment, cur_stat)) {
     ldout(pg->cct, 10) << "backfill reservation rejected: backfill full"
                       << dendl;
-    post_event(RejectRemoteReservation());
+    post_event(RejectTooFullRemoteReservation());
   } else {
     Context *preempt = nullptr;
     // Don't reserve space if skipped reservation check, this is used
@@ -8065,17 +8076,17 @@ PG::RecoveryState::RepWaitBackfillReserved::react(const RemoteBackfillReserved &
 
 boost::statechart::result
 PG::RecoveryState::RepWaitBackfillReserved::react(
-  const RejectRemoteReservation &evt)
+  const RejectTooFullRemoteReservation &evt)
 {
   PG *pg = context< RecoveryMachine >().pg;
   pg->reject_reservation();
-  post_event(RemoteReservationRejected());
+  post_event(RemoteReservationRejectedTooFull());
   return discard_event();
 }
 
 boost::statechart::result
 PG::RecoveryState::RepWaitBackfillReserved::react(
-  const RemoteReservationRejected &evt)
+  const RemoteReservationRejectedTooFull &evt)
 {
   PG *pg = context< RecoveryMachine >().pg;
   pg->clear_reserved_num_bytes();
@@ -8124,7 +8135,7 @@ PG::RecoveryState::RepRecovering::react(const BackfillTooFull &)
   pg->osd->send_message_osd_cluster(
     pg->primary.osd,
     new MBackfillReserve(
-      MBackfillReserve::TOOFULL,
+      MBackfillReserve::REVOKE_TOOFULL,
       spg_t(pg->info.pgid.pgid, pg->primary.shard),
       pg->get_osdmap_epoch()),
     pg->get_osdmap_epoch());
index 6aa8b95afaee0a94bfc27ed86644537fb6f913d4..e14291f7653fa206656b3c198601f5ab125ebe99 100644 (file)
@@ -1673,11 +1673,13 @@ protected:
     hobject_t end = info.pgid.pgid.get_hobj_end(pool.info.get_pg_num());
     add_backoff(s, begin, end);
   }
+public:
   void release_pg_backoffs() {
     hobject_t begin = info.pgid.pgid.get_hobj_start();
     hobject_t end = info.pgid.pgid.get_hobj_end(pool.info.get_pg_num());
     release_backoffs(begin, end);
   }
+protected:
 
   // -- scrub --
 public:
@@ -1687,7 +1689,7 @@ public:
 
     // metadata
     set<pg_shard_t> reserved_peers;
-    bool reserved, reserve_failed;
+    bool local_reserved, remote_reserved, reserve_failed;
     epoch_t epoch_start;
 
     // common to both scrubs
@@ -2043,7 +2045,7 @@ protected:
   TrivialEvent(NeedUpThru)
   TrivialEvent(Backfilled)
   TrivialEvent(LocalBackfillReserved)
-  TrivialEvent(RejectRemoteReservation)
+  TrivialEvent(RejectTooFullRemoteReservation)
   public:
   TrivialEvent(RequestBackfill)
   protected:
@@ -2431,12 +2433,12 @@ protected:
         boost::statechart::custom_reaction< Backfilled >,
        boost::statechart::custom_reaction< DeferBackfill >,
        boost::statechart::custom_reaction< UnfoundBackfill >,
-       boost::statechart::custom_reaction< RemoteReservationRejected >,
+       boost::statechart::custom_reaction< RemoteReservationRejectedTooFull >,
        boost::statechart::custom_reaction< RemoteReservationRevokedTooFull>,
        boost::statechart::custom_reaction< RemoteReservationRevoked>
        > reactions;
       explicit Backfilling(my_context ctx);
-      boost::statechart::result react(const RemoteReservationRejected& evt) {
+      boost::statechart::result react(const RemoteReservationRejectedTooFull& evt) {
        // for compat with old peers
        post_event(RemoteReservationRevokedTooFull());
        return discard_event();
@@ -2454,7 +2456,7 @@ protected:
     struct WaitRemoteBackfillReserved : boost::statechart::state< WaitRemoteBackfillReserved, Active >, NamedState {
       typedef boost::mpl::list<
        boost::statechart::custom_reaction< RemoteBackfillReserved >,
-       boost::statechart::custom_reaction< RemoteReservationRejected >,
+       boost::statechart::custom_reaction< RemoteReservationRejectedTooFull >,
        boost::statechart::custom_reaction< RemoteReservationRevoked >,
        boost::statechart::transition< AllBackfillsReserved, Backfilling >
        > reactions;
@@ -2463,7 +2465,7 @@ protected:
       void retry();
       void exit();
       boost::statechart::result react(const RemoteBackfillReserved& evt);
-      boost::statechart::result react(const RemoteReservationRejected& evt);
+      boost::statechart::result react(const RemoteReservationRejectedTooFull& evt);
       boost::statechart::result react(const RemoteReservationRevoked& evt);
     };
 
@@ -2479,12 +2481,12 @@ protected:
       typedef boost::mpl::list<
        boost::statechart::transition< RequestBackfill, WaitLocalBackfillReserved>,
        boost::statechart::custom_reaction< RemoteBackfillReserved >,
-       boost::statechart::custom_reaction< RemoteReservationRejected >
+       boost::statechart::custom_reaction< RemoteReservationRejectedTooFull >
        > reactions;
       explicit NotBackfilling(my_context ctx);
       void exit();
       boost::statechart::result react(const RemoteBackfillReserved& evt);
-      boost::statechart::result react(const RemoteReservationRejected& evt);
+      boost::statechart::result react(const RemoteReservationRejectedTooFull& evt);
     };
 
     struct NotRecovering : boost::statechart::state< NotRecovering, Active>, NamedState {
@@ -2562,7 +2564,7 @@ protected:
       typedef boost::mpl::list<
        boost::statechart::transition< RecoveryDone, RepNotRecovering >,
        // for compat with old peers
-       boost::statechart::transition< RemoteReservationRejected, RepNotRecovering >,
+       boost::statechart::transition< RemoteReservationRejectedTooFull, RepNotRecovering >,
        boost::statechart::transition< RemoteReservationCanceled, RepNotRecovering >,
        boost::statechart::custom_reaction< BackfillTooFull >,
        boost::statechart::custom_reaction< RemoteRecoveryPreempted >,
@@ -2578,15 +2580,15 @@ protected:
     struct RepWaitBackfillReserved : boost::statechart::state< RepWaitBackfillReserved, ReplicaActive >, NamedState {
       typedef boost::mpl::list<
        boost::statechart::custom_reaction< RemoteBackfillReserved >,
-       boost::statechart::custom_reaction< RejectRemoteReservation >,
-       boost::statechart::custom_reaction< RemoteReservationRejected >,
+       boost::statechart::custom_reaction< RejectTooFullRemoteReservation >,
+       boost::statechart::custom_reaction< RemoteReservationRejectedTooFull >,
        boost::statechart::custom_reaction< RemoteReservationCanceled >
        > reactions;
       explicit RepWaitBackfillReserved(my_context ctx);
       void exit();
       boost::statechart::result react(const RemoteBackfillReserved &evt);
-      boost::statechart::result react(const RejectRemoteReservation &evt);
-      boost::statechart::result react(const RemoteReservationRejected &evt);
+      boost::statechart::result react(const RejectTooFullRemoteReservation &evt);
+      boost::statechart::result react(const RemoteReservationRejectedTooFull &evt);
       boost::statechart::result react(const RemoteReservationCanceled &evt);
     };
 
@@ -2594,13 +2596,13 @@ protected:
       typedef boost::mpl::list<
        boost::statechart::custom_reaction< RemoteRecoveryReserved >,
        // for compat with old peers
-       boost::statechart::custom_reaction< RemoteReservationRejected >,
+       boost::statechart::custom_reaction< RemoteReservationRejectedTooFull >,
        boost::statechart::custom_reaction< RemoteReservationCanceled >
        > reactions;
       explicit RepWaitRecoveryReserved(my_context ctx);
       void exit();
       boost::statechart::result react(const RemoteRecoveryReserved &evt);
-      boost::statechart::result react(const RemoteReservationRejected &evt) {
+      boost::statechart::result react(const RemoteReservationRejectedTooFull &evt) {
        // for compat with old peers
        post_event(RemoteReservationCanceled());
        return discard_event();
@@ -2612,8 +2614,8 @@ protected:
       typedef boost::mpl::list<
        boost::statechart::custom_reaction< RequestRecoveryPrio >,
        boost::statechart::custom_reaction< RequestBackfillPrio >,
-       boost::statechart::custom_reaction< RejectRemoteReservation >,
-       boost::statechart::transition< RemoteReservationRejected, RepNotRecovering >,
+       boost::statechart::custom_reaction< RejectTooFullRemoteReservation >,
+       boost::statechart::transition< RemoteReservationRejectedTooFull, RepNotRecovering >,
        boost::statechart::transition< RemoteReservationCanceled, RepNotRecovering >,
        boost::statechart::custom_reaction< RemoteRecoveryReserved >,
        boost::statechart::custom_reaction< RemoteBackfillReserved >,
@@ -2630,7 +2632,7 @@ protected:
        // my reservation completion raced with a RELEASE from primary
        return discard_event();
       }
-      boost::statechart::result react(const RejectRemoteReservation &evt);
+      boost::statechart::result react(const RejectTooFullRemoteReservation &evt);
       void exit();
     };
 
index 0ea25a0324de88a6feb9b0954380822364ab0052..db24ed363f4fc6cb80c5b2af037df000cbc852c5 100644 (file)
@@ -756,6 +756,18 @@ bool PGBackend::be_compare_scrub_objects(
                << " from shard " << auth_shard;
     obj_result.set_size_mismatch();
   }
+  // If the replica is too large and we didn't already count it for this object
+  //
+  if (candidate.size > cct->_conf->osd_max_object_size
+      && !obj_result.has_size_too_large()) {
+    if (error != CLEAN)
+      errorstream << ", ";
+    error = FOUND_ERROR;
+    errorstream << "size " << candidate.size
+               << " > " << cct->_conf->osd_max_object_size
+               << " is too large";
+    obj_result.set_size_too_large();
+  }
   for (map<string,bufferptr>::const_iterator i = auth.attrs.begin();
        i != auth.attrs.end();
        ++i) {
@@ -1258,10 +1270,16 @@ void PGBackend::be_omap_checks(const map<pg_shard_t,ScrubMap*> &maps,
       omap_stats.omap_bytes += obj.object_omap_bytes;
       omap_stats.omap_keys += obj.object_omap_keys;
       if (obj.large_omap_object_found) {
+        pg_t pg;
+        auto osdmap = get_osdmap();
+        osdmap->map_to_pg(k.pool, k.oid.name, k.get_key(), k.nspace, &pg);
+        pg_t mpg = osdmap->raw_pg_to_pg(pg);
         omap_stats.large_omap_objects++;
-        warnstream << "Large omap object found. Object: " << k << " Key count: "
-                   << obj.large_omap_object_key_count << " Size (bytes): "
-                   << obj.large_omap_object_value_size << '\n';
+        warnstream << "Large omap object found. Object: " << k
+                   << " PG: " << pg << " (" << mpg << ")"
+                   << " Key count: " << obj.large_omap_object_key_count
+                   << " Size (bytes): " << obj.large_omap_object_value_size
+                   << '\n';
         break;
       }
     }
index b48cbfb1bd4af38c4cfe18ef171d6c8a1866c715..b9641a5305c7b9b3caeece706b47188686f454e2 100644 (file)
@@ -108,7 +108,7 @@ typedef std::shared_ptr<const OSDMap> OSDMapRef;
      virtual void failed_push(const list<pg_shard_t> &from,
                               const hobject_t &soid,
                               const eversion_t &need = eversion_t()) = 0;
-     virtual void finish_degraded_object(const hobject_t& oid) = 0;
+     virtual void finish_degraded_object(const hobject_t oid) = 0;
      virtual void primary_failed(const hobject_t &soid) = 0;
      virtual bool primary_error(const hobject_t& soid, eversion_t v) = 0;
      virtual void cancel_pull(const hobject_t &soid) = 0;
index f0591ca01e096c96f7060889b392e121fb657051..3aeeb55e79f21fad2bbd05c0786cda8a43b6f05d 100644 (file)
@@ -269,11 +269,11 @@ void PGLog::proc_replica_log(
     limit :
     first_non_divergent->version;
 
-  // We need to preserve the original crt before it gets updated in rewind_from_head().
-  // Later, in merge_object_divergent_entries(), we use it to check whether we can rollback
-  // a divergent entry or not.
-  eversion_t original_crt = log.get_can_rollback_to();
-  dout(20) << __func__ << " original_crt = " << original_crt << dendl;
+  // we merge and adjust the replica's log, rollback the rollbackable divergent entry, 
+  // remove the unrollbackable divergent entry and mark the according object as missing. 
+  // the rollback boundary must choose crt of the olog which going to be merged. 
+  // The replica log's(olog) crt will not be modified, so it could get passed
+  // to _merge_divergent_entries() directly.
   IndexedLog folog(olog);
   auto divergent = folog.rewind_from_head(lu);
   _merge_divergent_entries(
@@ -281,7 +281,6 @@ void PGLog::proc_replica_log(
     divergent,
     oinfo,
     olog.get_can_rollback_to(),
-    original_crt,
     omissing,
     0,
     this);
@@ -345,7 +344,6 @@ void PGLog::rewind_divergent_log(eversion_t newhead,
     log,
     divergent,
     info,
-    log.get_can_rollback_to(),
     original_crt,
     missing,
     rollbacker,
@@ -472,7 +470,6 @@ void PGLog::merge_log(pg_info_t &oinfo, pg_log_t &olog, pg_shard_t fromosd,
       log,
       divergent,
       info,
-      log.get_can_rollback_to(),
       original_crt,
       missing,
       rollbacker,
@@ -485,6 +482,9 @@ void PGLog::merge_log(pg_info_t &oinfo, pg_log_t &olog, pg_shard_t fromosd,
 
     info.last_user_version = oinfo.last_user_version;
     info.purged_snaps = oinfo.purged_snaps;
+    // update num_missing too
+    // we might have appended some more missing objects above
+    info.stats.stats.sum.num_objects_missing = missing.num_missing();
 
     changed = true;
   }
index f02b4c4c23d199dcdd02ac1049ac290762d9d34c..6ff3eae8f5b4cbace827eaf585257d556b9d2695 100644 (file)
@@ -88,13 +88,19 @@ public:
     mempool::osd_pglog::list<pg_log_entry_t>::reverse_iterator
       rollback_info_trimmed_to_riter;
 
+    /*
+     * return true if we need to mark the pglog as dirty
+     */
     template <typename F>
-    void advance_can_rollback_to(eversion_t to, F &&f) {
-      if (to > can_rollback_to)
-       can_rollback_to = to;
-
-      if (to > rollback_info_trimmed_to)
-       rollback_info_trimmed_to = to;
+    bool advance_can_rollback_to(eversion_t to, F &&f) {
+      bool dirty_log = to > can_rollback_to || to > rollback_info_trimmed_to;
+      if (dirty_log) {
+       if (to > can_rollback_to)
+         can_rollback_to = to;
+
+       if (to > rollback_info_trimmed_to)
+         rollback_info_trimmed_to = to;
+      }
 
       while (rollback_info_trimmed_to_riter != log.rbegin()) {
        --rollback_info_trimmed_to_riter;
@@ -104,6 +110,8 @@ public:
        }
        f(*rollback_info_trimmed_to_riter);
       }
+
+      return dirty_log;
     }
 
     void reset_rollback_info_trimmed_to_riter() {
@@ -158,8 +166,8 @@ public:
          h->trim(entry);
        });
     }
-    void roll_forward_to(eversion_t to, LogEntryHandler *h) {
-      advance_can_rollback_to(
+    bool roll_forward_to(eversion_t to, LogEntryHandler *h) {
+      return advance_can_rollback_to(
        to,
        [&](pg_log_entry_t &entry) {
          h->rollforward(entry);
@@ -563,6 +571,7 @@ protected:
   bool pg_log_debug;
   /// Log is clean on [dirty_to, dirty_from)
   bool touched_log;
+  bool dirty_log;
   bool clear_divergent_priors;
   bool rebuilt_missing_with_deletes = false;
 
@@ -588,7 +597,7 @@ protected:
   }
 public:
   bool is_dirty() const {
-    return !touched_log ||
+    return !touched_log || dirty_log ||
       (dirty_to != eversion_t()) ||
       (dirty_from != eversion_t::max()) ||
       (writeout_from != eversion_t::max()) ||
@@ -634,6 +643,7 @@ protected:
     dirty_to = eversion_t();
     dirty_from = eversion_t::max();
     touched_log = true;
+    dirty_log = false;
     trimmed.clear();
     trimmed_dups.clear();
     writeout_from = eversion_t::max();
@@ -654,6 +664,7 @@ public:
     cct(cct),
     pg_log_debug(!(cct && !(cct->_conf->osd_debug_pg_log_writeout))),
     touched_log(false),
+    dirty_log(false),
     clear_divergent_priors(false)
   { }
 
@@ -713,9 +724,10 @@ public:
   void roll_forward_to(
     eversion_t roll_forward_to,
     LogEntryHandler *h) {
-    log.roll_forward_to(
-      roll_forward_to,
-      h);
+    if (log.roll_forward_to(
+         roll_forward_to,
+         h))
+      dirty_log = true;
   }
 
   eversion_t get_can_rollback_to() const {
@@ -868,8 +880,7 @@ protected:
     const hobject_t &hoid,               ///< [in] object we are merging
     const mempool::osd_pglog::list<pg_log_entry_t> &orig_entries, ///< [in] entries for hoid to merge
     const pg_info_t &info,              ///< [in] info for merging entries
-    eversion_t olog_can_rollback_to,     ///< [in] rollback boundary
-    eversion_t original_can_rollback_to,     ///< [in] original rollback boundary
+    eversion_t olog_can_rollback_to,     ///< [in] rollback boundary of input InedexedLog
     missing_type &missing,               ///< [in,out] missing to adjust, use
     LogEntryHandler *rollbacker,         ///< [in] optional rollbacker object
     const DoutPrefixProvider *dpp        ///< [in] logging provider
@@ -1033,17 +1044,11 @@ protected:
     ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid
                        << " olog_can_rollback_to: "
                        << olog_can_rollback_to << dendl;
-    ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid
-                       << " original_crt: "
-                       << original_can_rollback_to << dendl;
     /// Distinguish between 4) and 5)
     for (list<pg_log_entry_t>::const_reverse_iterator i = entries.rbegin();
         i != entries.rend();
         ++i) {
-      /// Use original_can_rollback_to instead of olog_can_rollback_to to check
-      //  if we can rollback or not. This is to ensure that we don't try to rollback
-      //  to an object that has been deleted and doesn't exist.
-      if (!i->can_rollback() || i->version <= original_can_rollback_to) {
+      if (!i->can_rollback() || i->version <= olog_can_rollback_to) {
        ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid << " cannot rollback "
                           << *i << dendl;
        can_rollback = false;
@@ -1056,7 +1061,7 @@ protected:
       for (list<pg_log_entry_t>::const_reverse_iterator i = entries.rbegin();
           i != entries.rend();
           ++i) {
-       ceph_assert(i->can_rollback() && i->version > original_can_rollback_to);
+       ceph_assert(i->can_rollback() && i->version > olog_can_rollback_to);
        ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid
                           << " rolling back " << *i << dendl;
        if (rollbacker)
@@ -1092,8 +1097,7 @@ protected:
     const IndexedLog &log,               ///< [in] log to merge against
     mempool::osd_pglog::list<pg_log_entry_t> &entries,       ///< [in] entries to merge
     const pg_info_t &oinfo,              ///< [in] info for merging entries
-    eversion_t olog_can_rollback_to,     ///< [in] rollback boundary
-    eversion_t original_can_rollback_to, ///< [in] original rollback boundary
+    eversion_t olog_can_rollback_to,     ///< [in] rollback boundary of input IndexedLog
     missing_type &omissing,              ///< [in,out] missing to adjust, use
     LogEntryHandler *rollbacker,         ///< [in] optional rollbacker object
     const DoutPrefixProvider *dpp        ///< [in] logging provider
@@ -1109,7 +1113,6 @@ protected:
        i->second,
        oinfo,
        olog_can_rollback_to,
-        original_can_rollback_to,
        omissing,
        rollbacker,
        dpp);
@@ -1133,7 +1136,6 @@ protected:
       entries,
       info,
       log.get_can_rollback_to(),
-      log.get_can_rollback_to(),
       missing,
       rollbacker,
       this);
index 02b8360a46b2579c45857804f429983b18768736..a4a557ef1c312b13e0e848ed5f0ec3669ad01a54 100644 (file)
@@ -165,7 +165,7 @@ struct RequestRecoveryPrio : boost::statechart::event< RequestRecoveryPrio > {
 
 TrivialEvent(NullEvt)
 TrivialEvent(RemoteBackfillReserved)
-TrivialEvent(RemoteReservationRejected)
+TrivialEvent(RemoteReservationRejectedTooFull)
 TrivialEvent(RemoteReservationRevokedTooFull)
 TrivialEvent(RemoteReservationRevoked)
 TrivialEvent(RemoteReservationCanceled)
index c034383c9f22cad124625f5208b2107fc35ccd82..27cf2f43039068e5385ce4ab171927425836bd0a 100644 (file)
@@ -6551,6 +6551,8 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          if (op.extent.offset > oi.size) {
            t->truncate(
              soid, op.extent.offset);
+            truncate_update_size_and_usage(ctx->delta_stats, oi,
+                                           op.extent.offset);
          } else {
            t->nop(soid);
          }
@@ -6982,6 +6984,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          map<string,bufferlist> rmattrs;
          result = getattrs_maybe_cache(ctx->obc, &rmattrs);
          if (result < 0) {
+           dout(10) << __func__ << " error: " << cpp_strerror(result) << dendl;
            return result;
          }
          map<string, bufferlist>::iterator iter;
@@ -7798,6 +7801,9 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
     if (result < 0)
       break;
   }
+  if (result < 0) {
+    dout(10) << __func__ << " error: " << cpp_strerror(result) << dendl;
+  }
   return result;
 }
 
@@ -11590,7 +11596,7 @@ void PrimaryLogPG::remove_missing_object(const hobject_t &soid,
   ceph_assert(r == 0);
 }
 
-void PrimaryLogPG::finish_degraded_object(const hobject_t& oid)
+void PrimaryLogPG::finish_degraded_object(const hobject_t oid)
 {
   dout(10) << __func__ << " " << oid << dendl;
   if (callbacks_for_degraded_object.count(oid)) {
@@ -11684,7 +11690,10 @@ void PrimaryLogPG::recover_got(hobject_t oid, eversion_t v)
 {
   dout(10) << "got missing " << oid << " v " << v << dendl;
   pg_log.recover_got(oid, v, info);
-  if (pg_log.get_log().complete_to != pg_log.get_log().log.end()) {
+  if (pg_log.get_log().log.empty()) {
+    dout(10) << "last_complete now " << info.last_complete
+             << " while log is empty" << dendl;
+  } else if (pg_log.get_log().complete_to != pg_log.get_log().log.end()) {
     dout(10) << "last_complete now " << info.last_complete
             << " log.complete_to " << pg_log.get_log().complete_to->version
             << dendl;
@@ -15257,6 +15266,7 @@ int PrimaryLogPG::rep_repair_primary_object(const hobject_t& soid, OpContext *ct
     eio_errors_to_process = true;
     ceph_assert(is_clean());
     state_set(PG_STATE_REPAIR);
+    state_clear(PG_STATE_CLEAN);
     queue_peering_event(
         PGPeeringEventRef(
          std::make_shared<PGPeeringEvent>(
index acb1a7e29182b3b31ba33d55b0a2e322b01a6860..b0fee77c91c0011a0d8a3d81aca7e630ca0045ec 100644 (file)
@@ -1126,7 +1126,7 @@ protected:
                                  PGBackend::RecoveryHandle *h,
                                  bool *work_started);
 
-  void finish_degraded_object(const hobject_t& oid) override;
+  void finish_degraded_object(const hobject_t oid) override;
 
   // Cancels/resets pulls from peer
   void check_recovery_sources(const OSDMapRef& map) override ;
index 550dc848d82dd71fa45faa740f84ec2be240af88..f8d67af325ba4243c20905ae2016355b9dcaa4bd 100644 (file)
@@ -2006,7 +2006,8 @@ int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info,
     }
     out_op->data.claim_append(bit);
   }
-  if (progress.first && out_op->data_included.begin().get_start() == 0 &&
+  if (progress.first && !out_op->data_included.empty() &&
+      out_op->data_included.begin().get_start() == 0 &&
       out_op->data.length() == oi.size && oi.is_data_digest()) {
     uint32_t crc = out_op->data.crc32c(-1);
     if (oi.data_digest != crc) {
index ae3813193b6166ef222a20888adff3a18b447dfd..7fb9b8df2f0481585eddeba51759adc4e4096779 100644 (file)
@@ -393,11 +393,66 @@ void osd_stat_t::dump(Formatter *f) const
   f->open_array_section("alerts");
   ::dump(f, os_alerts);
   f->close_section();
+  f->open_array_section("network_ping_times");
+  for (auto &i : hb_pingtime) {
+    f->open_object_section("entry");
+    f->dump_int("osd", i.first);
+    const time_t lu(i.second.last_update);
+    char buffer[26];
+    string lustr(ctime_r(&lu, buffer));
+    lustr.pop_back();   // Remove trailing \n
+    f->dump_string("last update", lustr);
+    f->open_array_section("interfaces");
+    f->open_object_section("interface");
+    f->dump_string("interface", "back");
+    f->open_object_section("average");
+    f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.back_pingtime[0],3).c_str());
+    f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.back_pingtime[1],3).c_str());
+    f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.back_pingtime[2],3).c_str());
+    f->close_section(); // average
+    f->open_object_section("min");
+    f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.back_min[0],3).c_str());
+    f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.back_min[1],3).c_str());
+    f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.back_min[2],3).c_str());
+    f->close_section(); // min
+    f->open_object_section("max");
+    f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.back_max[0],3).c_str());
+    f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.back_max[1],3).c_str());
+    f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.back_max[2],3).c_str());
+    f->close_section(); // max
+    f->dump_format_unquoted("last", "%s", fixed_u_to_string(i.second.back_last,3).c_str());
+    f->close_section(); // interface
+
+    if (i.second.front_pingtime[0] != 0) {
+      f->open_object_section("interface");
+      f->dump_string("interface", "front");
+      f->open_object_section("average");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.front_pingtime[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.front_pingtime[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.front_pingtime[2],3).c_str());
+      f->close_section(); // average
+      f->open_object_section("min");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.front_min[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.front_min[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.front_min[2],3).c_str());
+      f->close_section(); // min
+      f->open_object_section("max");
+      f->dump_format_unquoted("1min", "%s", fixed_u_to_string(i.second.front_max[0],3).c_str());
+      f->dump_format_unquoted("5min", "%s", fixed_u_to_string(i.second.front_max[1],3).c_str());
+      f->dump_format_unquoted("15min", "%s", fixed_u_to_string(i.second.front_max[2],3).c_str());
+      f->close_section(); // max
+      f->dump_format_unquoted("last", "%s", fixed_u_to_string(i.second.front_last,3).c_str());
+      f->close_section(); // interface
+    }
+    f->close_section(); // interfaces
+    f->close_section(); // entry
+  }
+  f->close_section(); // network_ping_time
 }
 
 void osd_stat_t::encode(bufferlist &bl, uint64_t features) const
 {
-  ENCODE_START(12, 2, bl);
+  ENCODE_START(14, 2, bl);
 
   //////// for compatibility ////////
   int64_t kb = statfs.kb();
@@ -431,6 +486,35 @@ void osd_stat_t::encode(bufferlist &bl, uint64_t features) const
   encode(num_shards_repaired, bl);
   encode(num_osds, bl);
   encode(num_per_pool_osds, bl);
+
+  encode((uint32_t)0, bl); // compatibility
+
+  // hb_pingtime map
+  encode((int)hb_pingtime.size(), bl);
+  for (auto i : hb_pingtime) {
+    encode(i.first, bl); // osd
+    encode(i.second.last_update, bl);
+    encode(i.second.back_pingtime[0], bl);
+    encode(i.second.back_pingtime[1], bl);
+    encode(i.second.back_pingtime[2], bl);
+    encode(i.second.back_min[0], bl);
+    encode(i.second.back_min[1], bl);
+    encode(i.second.back_min[2], bl);
+    encode(i.second.back_max[0], bl);
+    encode(i.second.back_max[1], bl);
+    encode(i.second.back_max[2], bl);
+    encode(i.second.back_last, bl);
+    encode(i.second.front_pingtime[0], bl);
+    encode(i.second.front_pingtime[1], bl);
+    encode(i.second.front_pingtime[2], bl);
+    encode(i.second.front_min[0], bl);
+    encode(i.second.front_min[1], bl);
+    encode(i.second.front_min[2], bl);
+    encode(i.second.front_max[0], bl);
+    encode(i.second.front_max[1], bl);
+    encode(i.second.front_max[2], bl);
+    encode(i.second.front_last, bl);
+  }
   ENCODE_FINISH(bl);
 }
 
@@ -438,7 +522,7 @@ void osd_stat_t::decode(bufferlist::const_iterator &bl)
 {
   int64_t kb, kb_used,kb_avail;
   int64_t kb_used_data, kb_used_omap, kb_used_meta;
-  DECODE_START_LEGACY_COMPAT_LEN(12, 2, 2, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(14, 2, 2, bl);
   decode(kb, bl);
   decode(kb_used, bl);
   decode(kb_avail, bl);
@@ -505,6 +589,43 @@ void osd_stat_t::decode(bufferlist::const_iterator &bl)
     num_osds = 0;
     num_per_pool_osds = 0;
   }
+  // Compatibility num_per_pool_omap_osds
+  if (struct_v >= 13) {
+    uint32_t dummy;
+    decode(dummy, bl);
+  }
+  hb_pingtime.clear();
+  if (struct_v >= 14) {
+    int count;
+    decode(count, bl);
+    for (int i = 0 ; i < count ; i++) {
+      int osd;
+      decode(osd, bl);
+      struct Interfaces ifs;
+      decode(ifs.last_update, bl);
+      decode(ifs.back_pingtime[0],bl);
+      decode(ifs.back_pingtime[1], bl);
+      decode(ifs.back_pingtime[2], bl);
+      decode(ifs.back_min[0],bl);
+      decode(ifs.back_min[1], bl);
+      decode(ifs.back_min[2], bl);
+      decode(ifs.back_max[0],bl);
+      decode(ifs.back_max[1], bl);
+      decode(ifs.back_max[2], bl);
+      decode(ifs.back_last, bl);
+      decode(ifs.front_pingtime[0], bl);
+      decode(ifs.front_pingtime[1], bl);
+      decode(ifs.front_pingtime[2], bl);
+      decode(ifs.front_min[0], bl);
+      decode(ifs.front_min[1], bl);
+      decode(ifs.front_min[2], bl);
+      decode(ifs.front_max[0], bl);
+      decode(ifs.front_max[1], bl);
+      decode(ifs.front_max[2], bl);
+      decode(ifs.front_last, bl);
+      hb_pingtime[osd] = ifs;
+    }
+  }
   DECODE_FINISH(bl);
 }
 
@@ -524,6 +645,13 @@ void osd_stat_t::generate_test_instances(std::list<osd_stat_t*>& o)
     "some alert", "some alert details");
   o.back()->os_alerts[1].emplace(
     "some alert2", "some alert2 details");
+  struct Interfaces gen_interfaces = {
+       123456789, { 1000, 900, 800 }, { 990, 890, 790 }, { 1010, 910, 810 }, 1001,
+        { 1100, 1000, 900 }, { 1090, 990, 890 }, { 1110, 1010, 910 }, 1101 };
+  o.back()->hb_pingtime[20] = gen_interfaces;
+  gen_interfaces = {
+       987654321, { 100, 200, 300 }, { 90, 190, 290 }, { 110, 210, 310 }, 101 };
+  o.back()->hb_pingtime[30] = gen_interfaces;
 }
 
 // -- pg_t --
@@ -3007,7 +3135,7 @@ void pool_stat_t::dump(Formatter *f) const
   f->dump_int("ondisk_log_size", ondisk_log_size);
   f->dump_int("up", up);
   f->dump_int("acting", acting);
-  f->dump_int("num_store_stats", acting);
+  f->dump_int("num_store_stats", num_store_stats);
 }
 
 void pool_stat_t::encode(bufferlist &bl, uint64_t features) const
index 7e591d956b51e0db7877a271efc3f622465a66c8..6ef0009dd5792f551f8bacb1d91a9cb7db6b61a5 100644 (file)
@@ -2169,7 +2169,9 @@ struct pg_stat_t {
     // adding (or subtracting!) invalid stats render our stats invalid too
     stats_invalid |= o.stats_invalid;
     dirty_stats_invalid |= o.dirty_stats_invalid;
+    omap_stats_invalid |= o.omap_stats_invalid;
     hitset_stats_invalid |= o.hitset_stats_invalid;
+    hitset_bytes_stats_invalid |= o.hitset_bytes_stats_invalid;
     pin_stats_invalid |= o.pin_stats_invalid;
     manifest_stats_invalid |= o.manifest_stats_invalid;
   }
@@ -2356,6 +2358,19 @@ struct osd_stat_t {
   uint32_t num_osds = 0;
   uint32_t num_per_pool_osds = 0;
 
+  struct Interfaces {
+    uint32_t last_update;  // in seconds
+    uint32_t back_pingtime[3];
+    uint32_t back_min[3];
+    uint32_t back_max[3];
+    uint32_t back_last;
+    uint32_t front_pingtime[3];
+    uint32_t front_min[3];
+    uint32_t front_max[3];
+    uint32_t front_last;
+  };
+  map<int, Interfaces> hb_pingtime;  ///< map of osd id to Interfaces
+
   osd_stat_t() : snap_trim_queue_len(0), num_snap_trimming(0),
        num_shards_repaired(0)  {}
 
index 754ad61f2f67fb2a5ed738dbba2cee75e0265aaa..7d7e5b49e40c9698f27e073ab5e4c06339e56168 100644 (file)
@@ -27,9 +27,11 @@ def to_bytes(param):
     Helper method that returns byte representation of the given parameter.
     '''
     if isinstance(param, str):
-        return param.encode()
+        return param.encode('utf-8')
+    elif param is None:
+        return param
     else:
-        return str(param).encode()
+        return str(param).encode('utf-8')
 
 class RadosError(Exception):
     """
@@ -476,7 +478,7 @@ class CephFSVolumeClient(object):
             self.evict(premount_evict)
             log.debug("Premount eviction of {0} completes".format(premount_evict))
         log.debug("CephFS mounting...")
-        self.fs.mount(filesystem_name=self.fs_name)
+        self.fs.mount(filesystem_name=to_bytes(self.fs_name))
         log.debug("Connection to cephfs complete")
 
         # Recover from partial auth updates due to a previous
index 8e7b43b25e12ce54ad7eaca27c07c4f2fa8c100d..def4069b90ff164c3e3ed68f74f35adb78a22835 100644 (file)
@@ -49,13 +49,21 @@ cdef extern from "sys/statvfs.h":
         unsigned long int f_padding[32]
 
 
-cdef extern from "dirent.h":
-    cdef struct dirent:
-        long int d_ino
-        unsigned long int d_off
-        unsigned short int d_reclen
-        unsigned char d_type
-        char d_name[256]
+IF UNAME_SYSNAME == "FreeBSD":
+    cdef extern from "dirent.h":
+        cdef struct dirent:
+            long int d_ino
+            unsigned short int d_reclen
+            unsigned char d_type
+            char d_name[256]
+ELSE:
+    cdef extern from "dirent.h":
+        cdef struct dirent:
+            long int d_ino
+            unsigned long int d_off
+            unsigned short int d_reclen
+            unsigned char d_type
+            char d_name[256]
 
 
 cdef extern from "time.h":
@@ -164,7 +172,7 @@ class OSError(Error):
         self.strerror = strerror
 
     def __str__(self):
-        return '[Errno {0}] {1}'.format(self.errno, self.strerror)
+        return '{0}: {1} [Errno {2}]'.format(self.strerror, os.strerror(self.errno), self.errno)
 
 
 class PermissionError(OSError):
@@ -211,6 +219,10 @@ class OutOfRange(OSError):
     pass
 
 
+class ObjectNotEmpty(OSError):
+    pass
+
+
 IF UNAME_SYSNAME == "FreeBSD":
     cdef errno_to_exception =  {
         errno.EPERM      : PermissionError,
@@ -223,6 +235,7 @@ IF UNAME_SYSNAME == "FreeBSD":
         errno.EOPNOTSUPP : OperationNotSupported,
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
+        errno.ENOTEMPTY  : ObjectNotEmpty,
     }
 ELSE:
     cdef errno_to_exception =  {
@@ -236,6 +249,7 @@ ELSE:
         errno.EOPNOTSUPP : OperationNotSupported,
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
+        errno.ENOTEMPTY  : ObjectNotEmpty,
     }
 
 
@@ -253,7 +267,7 @@ cdef make_ex(ret, msg):
     if ret in errno_to_exception:
         return errno_to_exception[ret](ret, msg)
     else:
-        return Error(ret, msg + (": error code %d" % ret))
+        return Error(msg + ': {} [Errno {:d}]'.format(os.strerror(ret), ret))
 
 
 class DirEntry(namedtuple('DirEntry',
@@ -310,11 +324,18 @@ cdef class DirResult(object):
         if not dirent:
             return None
 
-        return DirEntry(d_ino=dirent.d_ino,
-                        d_off=dirent.d_off,
-                        d_reclen=dirent.d_reclen,
-                        d_type=dirent.d_type,
-                        d_name=dirent.d_name)
+        IF UNAME_SYSNAME == "FreeBSD":
+            return DirEntry(d_ino=dirent.d_ino,
+                            d_off=0,
+                            d_reclen=dirent.d_reclen,
+                            d_type=dirent.d_type,
+                            d_name=dirent.d_name)
+        ELSE:
+             return DirEntry(d_ino=dirent.d_ino,
+                            d_off=dirent.d_off,
+                            d_reclen=dirent.d_reclen,
+                            d_type=dirent.d_type,
+                            d_name=dirent.d_name)
 
     def close(self):
         if self.handle:
@@ -798,7 +819,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_mkdir(self.cluster, _path, _mode)
         if ret < 0:
-            raise make_ex(ret, "error in mkdir '%s'" % path)
+            raise make_ex(ret, "error in mkdir {}".format(path.decode('utf-8')))
 
     def chmod(self, path, mode) :
         """
@@ -817,7 +838,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_chmod(self.cluster, _path, _mode)
         if ret < 0:
-            raise make_ex(ret, "error in chmod '%s'" % path)
+            raise make_ex(ret, "error in chmod {}".format(path.decode('utf-8')))
 
     def mkdirs(self, path, mode):
         """
@@ -838,7 +859,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_mkdirs(self.cluster, _path, _mode)
         if ret < 0:
-            raise make_ex(ret, "error in mkdirs '%s'" % path)
+            raise make_ex(ret, "error in mkdirs {}".format(path.decode('utf-8')))
 
     def rmdir(self, path):
         """
@@ -851,7 +872,7 @@ cdef class LibCephFS(object):
         cdef char* _path = path
         ret = ceph_rmdir(self.cluster, _path)
         if ret < 0:
-            raise make_ex(ret, "error in rmdir '%s'" % path)
+            raise make_ex(ret, "error in rmdir {}".format(path.decode('utf-8')))
 
     def open(self, path, flags, mode=0):
         """
@@ -906,7 +927,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_open(self.cluster, _path, _flags, _mode)
         if ret < 0:
-            raise make_ex(ret, "error in open '%s'" % path)
+            raise make_ex(ret, "error in open {}".format(path.decode('utf-8')))
         return ret
 
     def close(self, fd):
@@ -1104,7 +1125,7 @@ cdef class LibCephFS(object):
             # FIXME: replace magic number with CEPH_STATX_BASIC_STATS
             ret = ceph_statx(self.cluster, _path, &stx, 0x7ffu, 0)
         if ret < 0:
-            raise make_ex(ret, "error in stat: %s" % path)
+            raise make_ex(ret, "error in stat: {}".format(path.decode('utf-8')))
         return StatResult(st_dev=stx.stx_dev, st_ino=stx.stx_ino,
                           st_mode=stx.stx_mode, st_nlink=stx.stx_nlink,
                           st_uid=stx.stx_uid, st_gid=stx.stx_gid,
@@ -1222,7 +1243,7 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_unlink(self.cluster, _path)
         if ret < 0:
-            raise make_ex(ret, "error in unlink: %s" % path)
+            raise make_ex(ret, "error in unlink: {}".format(path.decode('utf-8')))
 
     def rename(self, src, dst):
         """
@@ -1244,7 +1265,8 @@ cdef class LibCephFS(object):
         with nogil:
             ret = ceph_rename(self.cluster, _src, _dst)
         if ret < 0:
-            raise make_ex(ret, "error in rename '%s' to '%s'" % (src, dst))
+            raise make_ex(ret, "error in rename {} to {}".format(src.decode(
+                          'utf-8'), dst.decode('utf-8')))
 
     def mds_command(self, mds_spec, args, input_data):
         """
index 7868cd2fbc174e3f48265944961c768d27962cb2..fe30cd66ef144403dfa2483a7fdcdcf6a9f37710 100644 (file)
@@ -13,6 +13,7 @@ import time
 from mgr_module import MgrModule, CommandResult
 from threading import Event
 from mgr_module import CRUSHMap
+import datetime
 
 TIME_FORMAT = '%Y-%m-%d_%H:%M:%S'
 
@@ -403,6 +404,12 @@ class Module(MgrModule):
     run = True
     plans = {}
     mode = ''
+    optimizing = False
+    last_optimize_started = ''
+    last_optimize_duration = ''
+    optimize_result = ''
+    success_string = 'Optimization plan created successfully'
+    in_progress_string = 'in progress'
 
     def __init__(self, *args, **kwargs):
         super(Module, self).__init__(*args, **kwargs)
@@ -414,6 +421,9 @@ class Module(MgrModule):
             s = {
                 'plans': list(self.plans.keys()),
                 'active': self.active,
+                'last_optimize_started': self.last_optimize_started,
+                'last_optimize_duration': self.last_optimize_duration,
+                'optimize_result': self.optimize_result,
                 'mode': self.get_module_option('mode'),
             }
             return (0, json.dumps(s, indent=4), '')
@@ -515,6 +525,11 @@ class Module(MgrModule):
                                   'current cluster')
             return (0, self.evaluate(ms, pools, verbose=verbose), '')
         elif command['prefix'] == 'balancer optimize':
+            # The GIL can be release by the active balancer, so disallow when active
+            if self.active:
+                return (-errno.EINVAL, '', 'Balancer enabled, disable to optimize manually')
+            if self.optimizing:
+                return (-errno.EINVAL, '', 'Balancer finishing up....try again')
             pools = []
             if 'pools' in command:
                 pools = command['pools']
@@ -527,11 +542,18 @@ class Module(MgrModule):
             if len(invalid_pool_names):
                 return (-errno.EINVAL, '', 'pools %s not found' % invalid_pool_names)
             plan = self.plan_create(command['plan'], osdmap, pools)
+            self.last_optimize_started = time.asctime(time.localtime())
+            self.optimize_result = self.in_progress_string
+            start = time.time()
             r, detail = self.optimize(plan)
-            # remove plan if we are currently unable to find an optimization
-            # or distribution is already perfect
-            if r:
-                self.plan_rm(command['plan'])
+            end = time.time()
+            self.last_optimize_duration = str(datetime.timedelta(seconds=(end - start)))
+            if r == 0:
+                # Add plan if an optimization was created
+                self.optimize_result = self.success_string
+                self.plans[command['plan']] = plan
+            else:
+                self.optimize_result = detail
             return (r, '', detail)
         elif command['prefix'] == 'balancer rm':
             self.plan_rm(command['plan'])
@@ -552,6 +574,11 @@ class Module(MgrModule):
                 return (-errno.ENOENT, '', 'plan %s not found' % command['plan'])
             return (0, plan.show(), '')
         elif command['prefix'] == 'balancer execute':
+            # The GIL can be release by the active balancer, so disallow when active
+            if self.active:
+                return (-errno.EINVAL, '', 'Balancer enabled, disable to execute a plan')
+            if self.optimizing:
+                return (-errno.EINVAL, '', 'Balancer finishing up....try again')
             plan = self.plans.get(command['plan'])
             if not plan:
                 return (-errno.ENOENT, '', 'plan %s not found' % command['plan'])
@@ -621,10 +648,19 @@ class Module(MgrModule):
                     final = [int(p) for p in final]
                     final = [pool_name_by_id[p] for p in final if p in pool_name_by_id]
                 plan = self.plan_create(name, osdmap, final)
+                self.optimizing = True
+                self.last_optimize_started = time.asctime(time.localtime())
+                self.optimize_result = self.in_progress_string
+                start = time.time()
                 r, detail = self.optimize(plan)
+                end = time.time()
+                self.last_optimize_duration = str(datetime.timedelta(seconds=(end - start)))
                 if r == 0:
+                    self.optimize_result = self.success_string
                     self.execute(plan)
-                self.plan_rm(name)
+                else:
+                    self.optimize_result = detail
+                self.optimizing = False
             self.log.debug('Sleeping for %d', sleep_interval)
             self.event.wait(sleep_interval)
             self.event.clear()
@@ -635,7 +671,6 @@ class Module(MgrModule):
                                  self.get("pg_dump"),
                                  'plan %s initial' % name),
                     pools)
-        self.plans[name] = plan
         return plan
 
     def plan_rm(self, name):
@@ -988,7 +1023,7 @@ class Module(MgrModule):
 
         # Make sure roots don't overlap their devices.  If so, we
         # can't proceed.
-        roots = pe.target_by_root.keys()
+        roots = list(pe.target_by_root.keys())
         self.log.debug('roots %s', roots)
         visited = {}
         overlap = {}
@@ -1280,3 +1315,9 @@ class Module(MgrModule):
                 return r, outs
         self.log.debug('done')
         return 0, ''
+
+    def gather_telemetry(self):
+        return {
+            'active': self.active,
+            'mode': self.mode,
+        }
index 18aed3fba6282a6a4e7849951bd46b0164b36e87..3f4ee67986e2370cd13c54a3e58210cad52061f6 100644 (file)
@@ -2,19 +2,97 @@ from mgr_module import MgrModule
 import datetime
 import errno
 import json
-import six
 from collections import defaultdict
+from prettytable import PrettyTable
+from threading import Event
 
 
 DATEFMT = '%Y-%m-%d %H:%M:%S.%f'
 
+MAX_WAIT = 600
+MIN_WAIT = 60
 
 class Module(MgrModule):
+    MODULE_OPTIONS = [
+        {
+            'name': 'warn_recent_interval',
+            'type': 'secs',
+            'default': 60*60*24*14,
+            'desc': 'time interval in which to warn about recent crashes',
+            'runtime': True,
+        },
+        {
+            'name': 'retain_interval',
+            'type': 'secs',
+            'default': 60*60*24 * 365,
+            'desc': 'how long to retain crashes before pruning them',
+            'runtime': True,
+        },
+    ]
 
     def __init__(self, *args, **kwargs):
         super(Module, self).__init__(*args, **kwargs)
+        self.crashes = None
+        self.run = True
+        self.event = Event()
+
+    def shutdown(self):
+        self.run = False
+        self.event.set()
+
+    def serve(self):
+        self.config_notify()
+        while self.run:
+            self._refresh_health_checks()
+            self._prune(self.retain_interval)
+            wait = min(MAX_WAIT, max(self.warn_recent_interval / 100, MIN_WAIT))
+            self.event.wait(wait)
+            self.event.clear()
+
+    def config_notify(self):
+        for opt in self.MODULE_OPTIONS:
+            setattr(self,
+                    opt['name'],
+                    self.get_module_option(opt['name']) or opt['default'])
+            self.log.debug(' mgr option %s = %s',
+                           opt['name'], getattr(self, opt['name']))
+
+    def _load_crashes(self):
+        raw = self.get_store_prefix('crash/')
+        self.crashes = {k[6:]: json.loads(m) for (k, m) in raw.items()}
+
+    def _refresh_health_checks(self):
+        if not self.crashes:
+            self._load_crashes()
+        cutoff = datetime.datetime.utcnow() - datetime.timedelta(
+            seconds=self.warn_recent_interval)
+        recent = {
+            crashid: crash for crashid, crash in self.crashes.items()
+            if self.time_from_string(crash['timestamp']) > cutoff and 'archived' not in crash
+        }
+        num = len(recent)
+        health_checks = {}
+        if recent:
+            detail = [
+                '%s crashed on host %s at %s' % (
+                    crash.get('entity_name', 'unidentified daemon'),
+                    crash.get('utsname_hostname', '(unknown)'),
+                    crash.get('timestamp', 'unknown time'))
+                    for (_, crash) in recent.items()]
+            if num > 30:
+                detail = detail[0:30]
+                detail.append('and %d more' % (num - 30))
+            self.log.debug('detail %s' % detail)
+            health_checks['RECENT_CRASH'] = {
+                'severity': 'warning',
+                'summary': '%d daemons have recently crashed' % (num),
+                'detail': detail,
+            }
+        self.set_health_checks(health_checks)
 
     def handle_command(self, inbuf, command):
+        if not self.crashes:
+            self._load_crashes()
         for cmd in self.COMMANDS:
             if cmd['cmd'].startswith(command['prefix']):
                 handler = cmd['handler']
@@ -24,20 +102,20 @@ class Module(MgrModule):
 
         return handler(self, command, inbuf)
 
-    @staticmethod
-    def validate_crash_metadata(inbuf):
-        # raise any exceptions to caller
-        metadata = json.loads(inbuf)
-        if 'crash_id' not in metadata:
-            raise AttributeError("missing 'crash_id' field")
-        return metadata
-
-    @staticmethod
-    def time_from_string(timestr):
+    def time_from_string(self, timestr):
         # drop the 'Z' timezone indication, it's always UTC
         timestr = timestr.rstrip('Z')
         return datetime.datetime.strptime(timestr, DATEFMT)
 
+    def validate_crash_metadata(self, inbuf):
+        # raise any exceptions to caller
+        metadata = json.loads(inbuf)
+        for f in ['crash_id', 'timestamp']:
+            if f not in metadata:
+                raise AttributeError("missing '%s' field" % f)
+        time = self.time_from_string(metadata['timestamp'])
+        return metadata
+
     def timestamp_filter(self, f):
         """
         Filter crash reports by timestamp.
@@ -46,22 +124,19 @@ class Module(MgrModule):
         :returns: crash reports for which f(time) returns true
         """
         def inner(pair):
-            _, meta = pair
-            meta = json.loads(meta)
-            time = self.time_from_string(meta["timestamp"])
+            _, crash = pair
+            time = self.time_from_string(crash["timestamp"])
             return f(time)
-        matches = filter(inner, six.iteritems(
-            self.get_store_prefix("crash/")))
-        return [(k, json.loads(m)) for k, m in matches]
+        return filter(inner, self.crashes.items())
 
     # command handlers
 
     def do_info(self, cmd, inbuf):
         crashid = cmd['id']
-        key = 'crash/%s' % crashid
-        val = self.get_store(key)
-        if not val:
+        crash = self.crashes.get(crashid)
+        if not crash:
             return errno.EINVAL, '', 'crash info: %s not found' % crashid
+        val = json.dumps(crash, indent=4)
         return 0, val, ''
 
     def do_post(self, cmd, inbuf):
@@ -69,42 +144,96 @@ class Module(MgrModule):
             metadata = self.validate_crash_metadata(inbuf)
         except Exception as e:
             return errno.EINVAL, '', 'malformed crash metadata: %s' % e
-
         crashid = metadata['crash_id']
-        key = 'crash/%s' % crashid
-        # repeated stores of same item are ignored silently
-        if not self.get_store(key):
-            self.set_store(key, inbuf)
+
+        if crashid not in self.crashes:
+            self.crashes[crashid] = metadata
+            key = 'crash/%s' % crashid
+            self.set_store(key, json.dumps(metadata))
+            self._refresh_health_checks()
         return 0, '', ''
 
+    def ls(self):
+        if not self.crashes:
+            self._load_crashes()
+        return self.do_ls({'prefix': 'crash ls'}, '')
+
     def do_ls(self, cmd, inbuf):
-        keys = []
-        for k, meta in self.timestamp_filter(lambda ts: True):
-            entity_name = meta.get('entity_name', 'unknown')
-            keys.append("%s %s" % (k.replace('crash/', ''), entity_name))
-        keys.sort()
-        return 0, '\n'.join(keys), ''
+        if cmd['prefix'] == 'crash ls':
+            t = self.crashes.values()
+        else:
+            t = [crash for crashid, crash in self.crashes.items()
+                 if 'archived' not in crash]
+        r = sorted(t, key=lambda i: i.get('crash_id'))
+        if cmd.get('format') == 'json' or cmd.get('format') == 'json-pretty':
+            return 0, json.dumps(r, indent=4), ''
+        else:
+            table = PrettyTable(['ID', 'ENTITY', 'NEW'],
+                                border=False)
+            table.left_padding_width = 0
+            table.right_padding_width = 1
+            table.align['ID'] = 'l'
+            table.align['ENTITY'] = 'l'
+            for c in r:
+                table.add_row([c.get('crash_id'),
+                               c.get('entity_name','unknown'),
+                               '' if 'archived' in c else '*'])
+            return 0, table.get_string(), ''
 
     def do_rm(self, cmd, inbuf):
         crashid = cmd['id']
-        key = 'crash/%s' % crashid
-        self.set_store(key, None)       # removes key
+        if crashid in self.crashes:
+            del self.crashes[crashid]
+            key = 'crash/%s' % crashid
+            self.set_store(key, None)       # removes key
+            self._refresh_health_checks()
         return 0, '', ''
 
     def do_prune(self, cmd, inbuf):
-        now = datetime.datetime.utcnow()
-
         keep = cmd['keep']
         try:
             keep = int(keep)
         except ValueError:
             return errno.EINVAL, '', 'keep argument must be integer'
 
-        cutoff = now - datetime.timedelta(days=keep)
+        self._prune(keep * 60*60*24)
+        return 0, '', ''
 
-        for key, _ in self.timestamp_filter(lambda ts: ts <= cutoff):
+    def _prune(self, seconds):
+        now = datetime.datetime.utcnow()
+        cutoff = now - datetime.timedelta(seconds=seconds)
+        removed_any = False
+        # make a copy of the list, since we'll modify self.crashes below
+        to_prune = list(self.timestamp_filter(lambda ts: ts <= cutoff))
+        for crashid, crash in to_prune:
+            del self.crashes[crashid]
+            key = 'crash/%s' % crashid
             self.set_store(key, None)
+            removed_any = True
+        if removed_any:
+            self._refresh_health_checks()
+
+    def do_archive(self, cmd, inbuf):
+        crashid = cmd['id']
+        crash = self.crashes.get(crashid)
+        if not crash:
+            return errno.EINVAL, '', 'crash info: %s not found' % crashid
+        if not crash.get('archived'):
+            crash['archived'] = str(datetime.datetime.utcnow())
+            self.crashes[crashid] = crash
+            key = 'crash/%s' % crashid
+            self.set_store(key, json.dumps(crash))
+            self._refresh_health_checks()
+        return 0, '', ''
 
+    def do_archive_all(self, cmd, inbuf):
+        for crashid, crash in self.crashes.items():
+            if not crash.get('archived'):
+                crash['archived'] = str(datetime.datetime.utcnow())
+                self.crashes[crashid] = crash
+                key = 'crash/%s' % crashid
+                self.set_store(key, json.dumps(crash))
+        self._refresh_health_checks()
         return 0, '', ''
 
     def do_stat(self, cmd, inbuf):
@@ -133,11 +262,9 @@ class Module(MgrModule):
                 'idlist': list()
             }
 
-        for key, meta in six.iteritems(self.get_store_prefix('crash/')):
+        for crashid, crash in self.crashes.items():
             total += 1
-            meta = json.loads(meta)
-            stamp = self.time_from_string(meta['timestamp'])
-            crashid = meta['crash_id']
+            stamp = self.time_from_string(crash['timestamp'])
             for i, bindict in enumerate(bins):
                 if stamp <= bindict['agelimit']:
                     bindict['idlist'].append(crashid)
@@ -160,9 +287,8 @@ class Module(MgrModule):
             return errno.EINVAL, '', '<hours> argument must be integer'
 
         report = defaultdict(lambda: 0)
-        cutoff = datetime.datetime.utcnow() - datetime.timedelta(hours=hours)
-        for _, meta in self.timestamp_filter(lambda ts: ts >= cutoff):
-            pname = meta.get("process_name", "unknown")
+        for crashid, crash in self.crashes.items():
+            pname = crash.get("process_name", "unknown")
             if not pname:
                 pname = "unknown"
             report[pname] += 1
@@ -185,7 +311,13 @@ class Module(MgrModule):
         },
         {
             'cmd': 'crash ls',
-            'desc': 'Show saved crash dumps',
+            'desc': 'Show new and archived crash dumps',
+            'perm': 'r',
+            'handler': do_ls,
+        },
+        {
+            'cmd': 'crash ls-new',
+            'desc': 'Show new crash dumps',
             'perm': 'r',
             'handler': do_ls,
         },
@@ -219,4 +351,16 @@ class Module(MgrModule):
             'perm': 'r',
             'handler': do_json_report,
         },
+        {
+            'cmd': 'crash archive name=id,type=CephString',
+            'desc': 'Acknowledge a crash and silence health warning(s)',
+            'perm': 'w',
+            'handler': do_archive,
+        },
+        {
+            'cmd': 'crash archive-all',
+            'desc': 'Acknowledge all new crashes and silence health warning(s)',
+            'perm': 'w',
+            'handler': do_archive_all,
+        },
     ]
index 24a2efc9e292ebfa80b0971310971794e9c812ba..b6c7861838e141b668d6b56d228809bf879fe388 100644 (file)
@@ -15,7 +15,7 @@ function(add_npm_command)
   cmake_parse_arguments(NC "${options}" "${single_kw}" "${multi_kw}" ${ARGN})
   string(REPLACE ";" " " command "${NC_COMMAND}")
   if(NC_NODEENV)
-    string(REGEX REPLACE "^(npm .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command})
+    string(REGEX REPLACE "^(.*(npm|npx) .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command})
   endif()
   string(REPLACE " " ";" command "${command}")
   add_custom_command(
@@ -84,15 +84,41 @@ file(
   frontend/src/*/*/*/*/*/*.ts
   frontend/src/*/*/*/*/*/*.html)
 
+# these files are generated during build
+list(REMOVE_ITEM frontend_src
+  ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/src/environments/environment.prod.ts
+  ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/src/environments/environment.ts)
+
+execute_process(
+    COMMAND bash -c "jq -r .config.locale ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/package.json"
+    OUTPUT_VARIABLE default_lang
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+if(DASHBOARD_FRONTEND_LANGS)
+  string(STRIP "${DASHBOARD_FRONTEND_LANGS}" DASHBOARD_FRONTEND_LANGS)
+  if(DASHBOARD_FRONTEND_LANGS STREQUAL "ALL")
+    set(build_target ":*")
+  else()
+    string(FIND "${DASHBOARD_FRONTEND_LANGS}" "${default_lang}" default_idx)
+    if (default_idx EQUAL -1)
+      # default language must be always built
+      string(CONCAT DASHBOARD_FRONTEND_LANGS "${DASHBOARD_FRONTEND_LANGS}" ",${default_lang}")
+    endif()
+    set(build_target ":\{${DASHBOARD_FRONTEND_LANGS}\}")
+  endif()
+else(DASHBOARD_FRONTEND_LANGS)
+  set(build_target ":${default_lang}")
+endif(DASHBOARD_FRONTEND_LANGS)
+
 if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
-  set(npm_command npm run build -- --prod --progress=false)
+  set(npm_args "-- --prod --progress=false")
 else()
-  set(npm_command npm run build -- --progress=false)
+  set(npm_args "-- --progress=false")
 endif()
 
 add_npm_command(
   OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/dist"
-  COMMAND ${npm_command}
+  COMMAND npx npm-run-all --print-label --parallel --max-parallel 2 "\"build${build_target} -- ${npm_args}\""
   DEPENDS ${frontend_src} frontend/node_modules
   WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend
   COMMENT "dashboard frontend is being created"
@@ -102,5 +128,6 @@ add_custom_target(mgr-dashboard-frontend-build
   ALL
   DEPENDS frontend/dist mgr-dashboard-frontend-deps
   WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend)
+
 add_dependencies(tests mgr-dashboard-frontend-build)
 endif(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
index 9c2050da01e62953e880cb122f50baec23c4fe35..fde1698b23a1d1400aad7f0f4c7a7a77b45d8d1b 100644 (file)
@@ -315,7 +315,7 @@ How to extract messages from source code?
 To extract the I18N messages from the templates and the TypeScript files just
 run the following command in ``src/pybind/mgr/dashboard/frontend``::
 
-  $ npm run i18n
+  $ npm run i18n:extract
 
 This will extract all marked messages from the HTML templates first and then
 add all marked strings from the TypeScript files to the translation template.
@@ -362,15 +362,28 @@ Updating translated messages
 Any time there are new messages translated and reviewed in a specific language
 we should update the translation file upstream.
 
-To do that, we need to download the language xlf file from transifex and replace
-the current one in the repository. Since Angular doesn't support missing
-translations, we need to do an extra step and fill all the untranslated strings
-with the source string.
+To do that, check the settings in the i18n config file
+``src/pybind/mgr/dashboard/frontend/i18n.config.json``:: and make sure that the
+organization is *ceph*, the project is *ceph-dashboard* and the resource is
+the one you want to pull from and push to e.g. *Master:master*. To find a list
+of avaiable resources visit ``https://www.transifex.com/ceph/ceph-dashboard/content/``::
+
+After you checked the config go to the directory ``src/pybind/mgr/dashboard/frontend``:: and run
+
+  $ npm run i18n
+
+This command will extract all marked messages from the HTML templates and
+TypeScript files. Once the source file has been created it will push it to
+transifex and pull the latest translations. It will also fill all the
+untranslated strings with the source string.
+The tool will ask you for an api token, unless you added it by running:
+
+  $ npm run i18n:token
+
+To create a transifex api token visit ``https://www.transifex.com/user/settings/api/``::
 
-Each language file should be placed in ``src/locale/messages.<locale-id>.xlf``.
-For example, the path for german would be ``src/locale/messages.de-DE.xlf``.
-``<locale-id>`` should match the id previouisly inserted in
-``supported-languages.enum.ts``.
+After the command ran successfully, build the UI and check if everything is
+working as expected. You also might want to run the frontend tests.
 
 Suggestions
 ~~~~~~~~~~~
index 527073db5e8e758419457e5aed5eb77c603a387e..798ed37e3ab6c5b8350700fae9b1e22f9f72e70b 100644 (file)
@@ -51,3 +51,4 @@ else:
     sys.modules['ceph_module'] = mock.Mock()
 
     mgr = mock.Mock()
+    mgr.get_frontend_path.side_effect = lambda: os.path.abspath("./frontend/dist")
index 28f5998e876c7c2c6fb27b7324a0459dc6e2f6e0..bf78cbf3c8439081ac8a502b1b84a19913b71d50 100644 (file)
@@ -8,6 +8,7 @@ import inspect
 import json
 import os
 import pkgutil
+import re
 import sys
 
 if sys.version_info >= (3, 0):
@@ -294,24 +295,32 @@ ENDPOINT_MAP = collections.defaultdict(list)
 def generate_controller_routes(endpoint, mapper, base_url):
     inst = endpoint.inst
     ctrl_class = endpoint.ctrl
-    endp_base_url = None
 
     if endpoint.proxy:
         conditions = None
     else:
         conditions = dict(method=[endpoint.method])
 
+    # base_url can be empty or a URL path that starts with "/"
+    # we will remove the trailing "/" if exists to help with the
+    # concatenation with the endpoint url below
+    if base_url.endswith("/"):
+        base_url = base_url[:-1]
+
     endp_url = endpoint.url
-    if base_url == "/":
-        base_url = ""
-    if endp_url == "/" and base_url:
-        endp_url = ""
-    url = "{}{}".format(base_url, endp_url)
 
-    if '/' in url[len(base_url)+1:]:
-        endp_base_url = url[:len(base_url)+1+endp_url[1:].find('/')]
+    if endp_url.find("/", 1) == -1:
+        parent_url = "{}{}".format(base_url, endp_url)
     else:
-        endp_base_url = url
+        parent_url = "{}{}".format(base_url, endp_url[:endp_url.find("/", 1)])
+
+    # parent_url might be of the form "/.../{...}" where "{...}" is a path parameter
+    # we need to remove the path parameter definition
+    parent_url = re.sub(r'(?:/\{[^}]+\})$', '', parent_url)
+    if not parent_url:  # root path case
+        parent_url = "/"
+
+    url = "{}{}".format(base_url, endp_url)
 
     logger.debug("Mapped [%s] to %s:%s restricted to %s",
                  url, ctrl_class.__name__, endpoint.action,
@@ -329,7 +338,7 @@ def generate_controller_routes(endpoint, mapper, base_url):
     mapper.connect(name, url, controller=inst, action=endpoint.action,
                    conditions=conditions)
 
-    return endp_base_url
+    return parent_url
 
 
 def generate_routes(url_prefix):
@@ -502,10 +511,13 @@ class BaseController(object):
 
         @property
         def url(self):
+            ctrl_path = self.ctrl.get_path()
+            if ctrl_path == "/":
+                ctrl_path = ""
             if self.config['path'] is not None:
-                url = "{}{}".format(self.ctrl.get_path(), self.config['path'])
+                url = "{}{}".format(ctrl_path, self.config['path'])
             else:
-                url = "{}/{}".format(self.ctrl.get_path(), self.func.__name__)
+                url = "{}/{}".format(ctrl_path, self.func.__name__)
 
             ctrl_path_params = self.ctrl.get_path_param_names(
                 self.config['path'])
index 7d145adcfedde2781d47314a8a9dc16e2f76390b..f1c6545a1754e9b52b9938da83f75d8607692c0a 100644 (file)
@@ -23,7 +23,6 @@ class Auth(RESTController):
             logger.debug('Login successful')
             token = JwtManager.gen_token(username)
             token = token.decode('utf-8')
-            logger.debug("JWT Token: %s", token)
             cherrypy.response.headers['Authorization'] = "Bearer: {}".format(token)
             return {
                 'token': token,
diff --git a/ceph/src/pybind/mgr/dashboard/controllers/home.py b/ceph/src/pybind/mgr/dashboard/controllers/home.py
new file mode 100644 (file)
index 0000000..df11340
--- /dev/null
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+
+import os
+import re
+import json
+try:
+    from functools import lru_cache
+except ImportError:
+    from ..plugins.lru_cache import lru_cache
+
+import cherrypy
+from cherrypy.lib.static import serve_file
+
+from . import Controller, UiApiController, BaseController, Proxy, Endpoint
+from .. import mgr, logger
+
+
+LANGUAGES = {f for f in os.listdir(mgr.get_frontend_path())
+             if os.path.isdir(os.path.join(mgr.get_frontend_path(), f))}
+LANGUAGES_PATH_MAP = {f.lower(): {'lang': f, 'path': os.path.join(mgr.get_frontend_path(), f)}
+                      for f in LANGUAGES}
+# pre-populating with the primary language subtag
+for _lang in list(LANGUAGES_PATH_MAP.keys()):
+    if '-' in _lang:
+        LANGUAGES_PATH_MAP[_lang.split('-')[0]] = {
+            'lang': LANGUAGES_PATH_MAP[_lang]['lang'], 'path': LANGUAGES_PATH_MAP[_lang]['path']}
+
+
+def _get_default_language():
+    with open("{}/../package.json".format(mgr.get_frontend_path()), "r") as f:
+        config = json.load(f)
+    return config['config']['locale']
+
+
+DEFAULT_LANGUAGE = _get_default_language()
+DEFAULT_LANGUAGE_PATH = os.path.join(mgr.get_frontend_path(), DEFAULT_LANGUAGE)
+
+
+@Controller("/", secure=False)
+class HomeController(BaseController):
+    LANG_TAG_SEQ_RE = re.compile(r'\s*([^,]+)\s*,?\s*')
+    LANG_TAG_RE = re.compile(
+        r'^(?P<locale>[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})?)(;q=(?P<weight>[01]\.\d{0,3}))?$')
+    MAX_ACCEPTED_LANGS = 10
+
+    @lru_cache()
+    def _parse_accept_language(self, accept_lang_header):
+        result = []
+        for i, m in enumerate(self.LANG_TAG_SEQ_RE.finditer(accept_lang_header)):
+            if i >= self.MAX_ACCEPTED_LANGS:
+                logger.debug("reached max accepted languages, skipping remaining")
+                break
+
+            tag_match = self.LANG_TAG_RE.match(m.group(1))
+            if tag_match is None:
+                raise cherrypy.HTTPError(400, "Malformed 'Accept-Language' header")
+            locale = tag_match.group('locale').lower()
+            weight = tag_match.group('weight')
+            if weight:
+                try:
+                    ratio = float(weight)
+                except ValueError:
+                    raise cherrypy.HTTPError(400, "Malformed 'Accept-Language' header")
+            else:
+                ratio = 1.0
+            result.append((locale, ratio))
+
+        result.sort(key=lambda l: l[0])
+        result.sort(key=lambda l: l[1], reverse=True)
+        logger.debug("language preference: %s", result)
+        return [l[0] for l in result]
+
+    def _language_dir(self, langs):
+        for lang in langs:
+            if lang in LANGUAGES_PATH_MAP:
+                logger.debug("found directory for language '%s'", lang)
+                cherrypy.response.headers['Content-Language'] = LANGUAGES_PATH_MAP[lang]['lang']
+                return LANGUAGES_PATH_MAP[lang]['path']
+
+        logger.debug("Languages '%s' not available, falling back to %s", langs, DEFAULT_LANGUAGE)
+        cherrypy.response.headers['Content-Language'] = DEFAULT_LANGUAGE
+        return DEFAULT_LANGUAGE_PATH
+
+    @Proxy()
+    def __call__(self, path, **params):
+        if not path:
+            path = "index.html"
+
+        if 'cd-lang' in cherrypy.request.cookie:
+            langs = [cherrypy.request.cookie['cd-lang'].value.lower()]
+            logger.debug("frontend language from cookie: %s", langs)
+        else:
+            if 'Accept-Language' in cherrypy.request.headers:
+                accept_lang_header = cherrypy.request.headers['Accept-Language']
+                langs = self._parse_accept_language(accept_lang_header)
+            else:
+                langs = [DEFAULT_LANGUAGE.lower()]
+            logger.debug("frontend language from headers: %s", langs)
+
+        base_dir = self._language_dir(langs)
+        full_path = os.path.join(base_dir, path)
+        logger.debug("serving static content: %s", full_path)
+        if 'Vary' in cherrypy.response.headers:
+            cherrypy.response.headers['Vary'] = "{}, Accept-Language"
+        else:
+            cherrypy.response.headers['Vary'] = "Accept-Language"
+        return serve_file(full_path)
+
+
+@UiApiController("/langs", secure=False)
+class LangsController(BaseController):
+    @Endpoint('GET')
+    def __call__(self):
+        return list(LANGUAGES)
index df44f889807047039fdaf25b702dbdd8610cd5bc..ca0eebf7d990ffee7de232bb78a76fad8545edda 100644 (file)
@@ -19,13 +19,14 @@ from ..services.iscsi_cli import IscsiGatewaysConfig
 from ..services.rbd import format_bitmask
 from ..services.tcmu_service import TcmuService
 from ..exceptions import DashboardException
-from ..tools import TaskManager
+from ..tools import str_to_bool, TaskManager
 
 
 @UiApiController('/iscsi', Scope.ISCSI)
 class IscsiUi(BaseController):
 
-    REQUIRED_CEPH_ISCSI_CONFIG_VERSION = 10
+    REQUIRED_CEPH_ISCSI_CONFIG_MIN_VERSION = 10
+    REQUIRED_CEPH_ISCSI_CONFIG_MAX_VERSION = 11
 
     @Endpoint()
     @ReadPermission
@@ -43,10 +44,13 @@ class IscsiUi(BaseController):
                     status['message'] = 'Gateway {} is inaccessible'.format(gateway)
                     return status
             config = IscsiClient.instance().get_config()
-            if config['version'] != IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_VERSION:
-                status['message'] = 'Unsupported `ceph-iscsi` config version. Expected {} but ' \
-                                    'found {}.'.format(IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_VERSION,
-                                                       config['version'])
+            if config['version'] < IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_MIN_VERSION or \
+                    config['version'] > IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_MAX_VERSION:
+                status['message'] = 'Unsupported `ceph-iscsi` config version. ' \
+                                    'Expected >= {} and <= {} but found' \
+                                    ' {}.'.format(IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_MIN_VERSION,
+                                                  IscsiUi.REQUIRED_CEPH_ISCSI_CONFIG_MAX_VERSION,
+                                                  config['version'])
                 return status
             status['available'] = True
         except RequestException as e:
@@ -61,10 +65,39 @@ class IscsiUi(BaseController):
 
         return status
 
+    @Endpoint()
+    @ReadPermission
+    def version(self):
+        return {
+            'ceph_iscsi_config_version': IscsiClient.instance().get_config()['version']
+        }
+
     @Endpoint()
     @ReadPermission
     def settings(self):
-        return IscsiClient.instance().get_settings()
+        settings = IscsiClient.instance().get_settings()
+        if 'target_controls_limits' in settings:
+            target_default_controls = settings['target_default_controls']
+            for ctrl_k, ctrl_v in target_default_controls.items():
+                limits = settings['target_controls_limits'].get(ctrl_k, {})
+                if 'type' not in limits:
+                    # default
+                    limits['type'] = 'int'
+                    # backward compatibility
+                    if target_default_controls[ctrl_k] in ['Yes', 'No']:
+                        limits['type'] = 'bool'
+                        target_default_controls[ctrl_k] = str_to_bool(ctrl_v)
+                settings['target_controls_limits'][ctrl_k] = limits
+        if 'disk_controls_limits' in settings:
+            for backstore, disk_controls_limits in settings['disk_controls_limits'].items():
+                disk_default_controls = settings['disk_default_controls'][backstore]
+                for ctrl_k, ctrl_v in disk_default_controls.items():
+                    limits = disk_controls_limits.get(ctrl_k, {})
+                    if 'type' not in limits:
+                        # default
+                        limits['type'] = 'int'
+                    settings['disk_controls_limits'][backstore][ctrl_k] = limits
+        return settings
 
     @Endpoint()
     @ReadPermission
@@ -211,7 +244,7 @@ class IscsiTarget(RESTController):
 
     @iscsi_target_task('create', {'target_iqn': '{target_iqn}'})
     def create(self, target_iqn=None, target_controls=None, acl_enabled=None,
-               portals=None, disks=None, clients=None, groups=None):
+               auth=None, portals=None, disks=None, clients=None, groups=None):
         target_controls = target_controls or {}
         portals = portals or []
         disks = disks or []
@@ -223,13 +256,15 @@ class IscsiTarget(RESTController):
             raise DashboardException(msg='Target already exists',
                                      code='target_already_exists',
                                      component='iscsi')
-        IscsiTarget._validate(target_iqn, portals, disks, groups)
-        IscsiTarget._create(target_iqn, target_controls, acl_enabled, portals, disks, clients,
-                            groups, 0, 100, config)
+        settings = IscsiClient.instance().get_settings()
+        IscsiTarget._validate(target_iqn, target_controls, portals, disks, groups, settings)
+
+        IscsiTarget._create(target_iqn, target_controls, acl_enabled, auth, portals, disks,
+                            clients, groups, 0, 100, config, settings)
 
     @iscsi_target_task('edit', {'target_iqn': '{target_iqn}'})
     def set(self, target_iqn, new_target_iqn=None, target_controls=None, acl_enabled=None,
-            portals=None, disks=None, clients=None, groups=None):
+            auth=None, portals=None, disks=None, clients=None, groups=None):
         target_controls = target_controls or {}
         portals = IscsiTarget._sorted_portals(portals)
         disks = IscsiTarget._sorted_disks(disks)
@@ -245,11 +280,12 @@ class IscsiTarget(RESTController):
             raise DashboardException(msg='Target IQN already in use',
                                      code='target_iqn_already_in_use',
                                      component='iscsi')
-        IscsiTarget._validate(new_target_iqn, portals, disks, groups)
+        settings = IscsiClient.instance().get_settings()
+        IscsiTarget._validate(new_target_iqn, target_controls, portals, disks, groups, settings)
         config = IscsiTarget._delete(target_iqn, config, 0, 50, new_target_iqn, target_controls,
                                      portals, disks, clients, groups)
-        IscsiTarget._create(new_target_iqn, target_controls, acl_enabled, portals, disks, clients,
-                            groups, 50, 100, config)
+        IscsiTarget._create(new_target_iqn, target_controls, acl_enabled, auth, portals, disks,
+                            clients, groups, 50, 100, config, settings)
 
     @staticmethod
     def _delete(target_iqn, config, task_progress_begin, task_progress_end, new_target_iqn=None,
@@ -285,10 +321,12 @@ class IscsiTarget(RESTController):
                 IscsiClient.instance(gateway_name=gateway_name).delete_group(target_iqn,
                                                                              group_id)
             TaskManager.current_task().inc_progress(task_progress_inc)
+        deleted_clients = []
         for client_iqn in list(target_config['clients'].keys()):
             if IscsiTarget._client_deletion_required(target, new_target_iqn, new_target_controls,
                                                      new_clients, client_iqn,
                                                      new_groups, deleted_groups):
+                deleted_clients.append(client_iqn)
                 IscsiClient.instance(gateway_name=gateway_name).delete_client(target_iqn,
                                                                               client_iqn)
             TaskManager.current_task().inc_progress(task_progress_inc)
@@ -296,6 +334,14 @@ class IscsiTarget(RESTController):
             if IscsiTarget._target_lun_deletion_required(target, new_target_iqn,
                                                          new_target_controls,
                                                          new_disks, image_id):
+                all_clients = target_config['clients'].keys()
+                not_deleted_clients = [c for c in all_clients if c not in deleted_clients]
+                for client_iqn in not_deleted_clients:
+                    client_image_ids = target_config['clients'][client_iqn]['luns'].keys()
+                    for client_image_id in client_image_ids:
+                        if image_id == client_image_id:
+                            IscsiClient.instance(gateway_name=gateway_name).delete_client_lun(
+                                target_iqn, client_iqn, client_image_id)
                 IscsiClient.instance(gateway_name=gateway_name).delete_target_lun(target_iqn,
                                                                                   image_id)
                 pool, image = image_id.split('/', 1)
@@ -391,7 +437,11 @@ class IscsiTarget(RESTController):
         if not new_disk:
             return True
         old_disk = IscsiTarget._get_disk(target['disks'], image_id)
-        if new_disk != old_disk:
+        new_disk_without_controls = deepcopy(new_disk)
+        new_disk_without_controls.pop('controls')
+        old_disk_without_controls = deepcopy(old_disk)
+        old_disk_without_controls.pop('controls')
+        if new_disk_without_controls != old_disk_without_controls:
             return True
         return False
 
@@ -412,13 +462,12 @@ class IscsiTarget(RESTController):
         return False
 
     @staticmethod
-    def _validate(target_iqn, portals, disks, groups):
+    def _validate(target_iqn, target_controls, portals, disks, groups, settings):
         if not target_iqn:
             raise DashboardException(msg='Target IQN is required',
                                      code='target_iqn_required',
                                      component='iscsi')
 
-        settings = IscsiClient.instance().get_settings()
         minimum_gateways = max(1, settings['config']['minimum_gateways'])
         portals_by_host = IscsiTarget._get_portals_by_host(portals)
         if len(portals_by_host.keys()) < minimum_gateways:
@@ -430,6 +479,26 @@ class IscsiTarget(RESTController):
                                      code='portals_required',
                                      component='iscsi')
 
+        # 'target_controls_limits' was introduced in ceph-iscsi > 3.2
+        # When using an older `ceph-iscsi` version these validations will
+        # NOT be executed beforehand
+        if 'target_controls_limits' in settings:
+            for target_control_name, target_control_value in target_controls.items():
+                limits = settings['target_controls_limits'].get(target_control_name)
+                if limits is not None:
+                    min_value = limits.get('min')
+                    if min_value is not None and target_control_value < min_value:
+                        raise DashboardException(msg='Target control {} must be >= '
+                                                     '{}'.format(target_control_name, min_value),
+                                                 code='target_control_invalid_min',
+                                                 component='iscsi')
+                    max_value = limits.get('max')
+                    if max_value is not None and target_control_value > max_value:
+                        raise DashboardException(msg='Target control {} must be <= '
+                                                     '{}'.format(target_control_name, max_value),
+                                                 code='target_control_invalid_max',
+                                                 component='iscsi')
+
         for portal in portals:
             gateway_name = portal['host']
             try:
@@ -449,6 +518,26 @@ class IscsiTarget(RESTController):
             IscsiTarget._validate_image(pool, image, backstore, required_rbd_features,
                                         unsupported_rbd_features)
 
+            # 'disk_controls_limits' was introduced in ceph-iscsi > 3.2
+            # When using an older `ceph-iscsi` version these validations will
+            # NOT be executed beforehand
+            if 'disk_controls_limits' in settings:
+                for disk_control_name, disk_control_value in disk['controls'].items():
+                    limits = settings['disk_controls_limits'][backstore].get(disk_control_name)
+                    if limits is not None:
+                        min_value = limits.get('min')
+                        if min_value is not None and disk_control_value < min_value:
+                            raise DashboardException(msg='Disk control {} must be >= '
+                                                         '{}'.format(disk_control_name, min_value),
+                                                     code='disk_control_invalid_min',
+                                                     component='iscsi')
+                        max_value = limits.get('max')
+                        if max_value is not None and disk_control_value > max_value:
+                            raise DashboardException(msg='Disk control {} must be <= '
+                                                         '{}'.format(disk_control_name, max_value),
+                                                     code='disk_control_invalid_max',
+                                                     component='iscsi')
+
         initiators = []
         for group in groups:
             initiators = initiators + group['members']
@@ -493,10 +582,31 @@ class IscsiTarget(RESTController):
                                      code='pool_does_not_exist',
                                      component='iscsi')
 
+    @staticmethod
+    def _update_targetauth(config, target_iqn, auth, gateway_name):
+        # Target level authentication was introduced in ceph-iscsi config v11
+        if config['version'] > 10:
+            user = auth['user']
+            password = auth['password']
+            mutual_user = auth['mutual_user']
+            mutual_password = auth['mutual_password']
+            IscsiClient.instance(gateway_name=gateway_name).update_targetauth(target_iqn,
+                                                                              user,
+                                                                              password,
+                                                                              mutual_user,
+                                                                              mutual_password)
+
+    @staticmethod
+    def _update_targetacl(target_config, target_iqn, acl_enabled, gateway_name):
+        if not target_config or target_config['acl_enabled'] != acl_enabled:
+            targetauth_action = ('enable_acl' if acl_enabled else 'disable_acl')
+            IscsiClient.instance(gateway_name=gateway_name).update_targetacl(target_iqn,
+                                                                             targetauth_action)
+
     @staticmethod
     def _create(target_iqn, target_controls, acl_enabled,
-                portals, disks, clients, groups,
-                task_progress_begin, task_progress_end, config):
+                auth, portals, disks, clients, groups,
+                task_progress_begin, task_progress_end, config, settings):
         target_config = config['targets'].get(target_iqn, None)
         TaskManager.current_task().set_progress(task_progress_begin)
         portals_by_host = IscsiTarget._get_portals_by_host(portals)
@@ -519,44 +629,66 @@ class IscsiTarget(RESTController):
                                                                                    host,
                                                                                    ip_list)
                 TaskManager.current_task().inc_progress(task_progress_inc)
-            targetauth_action = ('enable_acl' if acl_enabled else 'disable_acl')
-            IscsiClient.instance(gateway_name=gateway_name).update_targetauth(target_iqn,
-                                                                              targetauth_action)
+
+            if acl_enabled:
+                IscsiTarget._update_targetauth(config, target_iqn, auth, gateway_name)
+                IscsiTarget._update_targetacl(target_config, target_iqn, acl_enabled, gateway_name)
+
+            else:
+                IscsiTarget._update_targetacl(target_config, target_iqn, acl_enabled, gateway_name)
+                IscsiTarget._update_targetauth(config, target_iqn, auth, gateway_name)
+
             for disk in disks:
                 pool = disk['pool']
                 image = disk['image']
                 image_id = '{}/{}'.format(pool, image)
+                backstore = disk['backstore']
+                wwn = disk.get('wwn')
+                lun = disk.get('lun')
                 if image_id not in config['disks']:
-                    backstore = disk['backstore']
                     IscsiClient.instance(gateway_name=gateway_name).create_disk(pool,
                                                                                 image,
-                                                                                backstore)
+                                                                                backstore,
+                                                                                wwn)
                 if not target_config or image_id not in target_config['disks']:
                     IscsiClient.instance(gateway_name=gateway_name).create_target_lun(target_iqn,
-                                                                                      image_id)
-                    controls = disk['controls']
-                    if controls:
-                        IscsiClient.instance(gateway_name=gateway_name).reconfigure_disk(pool,
-                                                                                         image,
-                                                                                         controls)
+                                                                                      image_id,
+                                                                                      lun)
+
+                controls = disk['controls']
+                d_conf_controls = {}
+                if image_id in config['disks']:
+                    d_conf_controls = config['disks'][image_id]['controls']
+                    disk_default_controls = settings['disk_default_controls'][backstore]
+                    for old_control in d_conf_controls.keys():
+                        # If control was removed, restore the default value
+                        if old_control not in controls:
+                            controls[old_control] = disk_default_controls[old_control]
+
+                if (image_id not in config['disks'] or d_conf_controls != controls) and controls:
+                    IscsiClient.instance(gateway_name=gateway_name).reconfigure_disk(pool,
+                                                                                     image,
+                                                                                     controls)
                 TaskManager.current_task().inc_progress(task_progress_inc)
             for client in clients:
                 client_iqn = client['client_iqn']
                 if not target_config or client_iqn not in target_config['clients']:
                     IscsiClient.instance(gateway_name=gateway_name).create_client(target_iqn,
                                                                                   client_iqn)
-                    for lun in client['luns']:
-                        pool = lun['pool']
-                        image = lun['image']
-                        image_id = '{}/{}'.format(pool, image)
-                        IscsiClient.instance(gateway_name=gateway_name).create_client_lun(
-                            target_iqn, client_iqn, image_id)
                     user = client['auth']['user']
                     password = client['auth']['password']
                     m_user = client['auth']['mutual_user']
                     m_password = client['auth']['mutual_password']
                     IscsiClient.instance(gateway_name=gateway_name).create_client_auth(
                         target_iqn, client_iqn, user, password, m_user, m_password)
+                for lun in client['luns']:
+                    pool = lun['pool']
+                    image = lun['image']
+                    image_id = '{}/{}'.format(pool, image)
+                    if not target_config or client_iqn not in target_config['clients'] or \
+                            image_id not in target_config['clients'][client_iqn]['luns']:
+                        IscsiClient.instance(gateway_name=gateway_name).create_client_lun(
+                            target_iqn, client_iqn, image_id)
                 TaskManager.current_task().inc_progress(task_progress_inc)
             for group in groups:
                 group_id = group['group_id']
@@ -600,8 +732,12 @@ class IscsiTarget(RESTController):
                 'pool': disk_config['pool'],
                 'image': disk_config['image'],
                 'controls': disk_config['controls'],
-                'backstore': disk_config['backstore']
+                'backstore': disk_config['backstore'],
+                'wwn': disk_config['wwn']
             }
+            # lun_id was introduced in ceph-iscsi config v11
+            if config['version'] > 10:
+                disk['lun'] = target_config['disks'][target_disk]['lun_id']
             disks.append(disk)
         disks = IscsiTarget._sorted_disks(disks)
         clients = []
@@ -648,9 +784,6 @@ class IscsiTarget(RESTController):
             groups.append(group)
         groups = IscsiTarget._sorted_groups(groups)
         target_controls = target_config['controls']
-        for key, value in target_controls.items():
-            if isinstance(value, bool):
-                target_controls[key] = 'Yes' if value else 'No'
         acl_enabled = target_config['acl_enabled']
         target = {
             'target_iqn': target_iqn,
@@ -661,21 +794,50 @@ class IscsiTarget(RESTController):
             'target_controls': target_controls,
             'acl_enabled': acl_enabled
         }
+        # Target level authentication was introduced in ceph-iscsi config v11
+        if config['version'] > 10:
+            target_user = target_config['auth']['username']
+            target_password = target_config['auth']['password']
+            target_mutual_user = target_config['auth']['mutual_username']
+            target_mutual_password = target_config['auth']['mutual_password']
+            target['auth'] = {
+                'user': target_user,
+                'password': target_password,
+                'mutual_user': target_mutual_user,
+                'mutual_password': target_mutual_password
+            }
         return target
 
+    @staticmethod
+    def _is_executing(target_iqn):
+        executing_tasks, _ = TaskManager.list()
+        for t in executing_tasks:
+            if t.name.startswith('iscsi/target') and t.metadata.get('target_iqn') == target_iqn:
+                return True
+        return False
+
     @staticmethod
     def _set_info(target):
         if not target['portals']:
             return
         target_iqn = target['target_iqn']
+        # During task execution, additional info is not available
+        if IscsiTarget._is_executing(target_iqn):
+            return
         gateway_name = target['portals'][0]['host']
-        target_info = IscsiClient.instance(gateway_name=gateway_name).get_targetinfo(target_iqn)
-        target['info'] = target_info
-        for client in target['clients']:
-            client_iqn = client['client_iqn']
-            client_info = IscsiClient.instance(gateway_name=gateway_name).get_clientinfo(
-                target_iqn, client_iqn)
-            client['info'] = client_info
+        try:
+            target_info = IscsiClient.instance(gateway_name=gateway_name).get_targetinfo(
+                target_iqn)
+            target['info'] = target_info
+            for client in target['clients']:
+                client_iqn = client['client_iqn']
+                client_info = IscsiClient.instance(gateway_name=gateway_name).get_clientinfo(
+                    target_iqn, client_iqn)
+                client['info'] = client_info
+        except RequestException as e:
+            # Target/Client has been removed in the meanwhile (e.g. using gwcli)
+            if e.status_code != 404:
+                raise e
 
     @staticmethod
     def _sorted_portals(portals):
index 5732674b01a2caf25a5eb6f9d8ec1e953d8ac89b..3dc45aa7bd344fc373b36617edcc0170d26cb53b 100644 (file)
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
+import time
 import cherrypy
 
 from . import ApiController, RESTController, Endpoint, ReadPermission, Task
@@ -9,7 +10,7 @@ from ..security import Scope
 from ..services.ceph_service import CephService
 from ..services.rbd import RbdConfiguration
 from ..services.exception import handle_send_command_error
-from ..tools import str_to_bool
+from ..tools import str_to_bool, TaskManager
 
 
 def pool_task(name, metadata, wait_for=2.0):
@@ -43,7 +44,8 @@ class Pool(RESTController):
         res['pool_name'] = pool['pool_name']
         return res
 
-    def _pool_list(self, attrs=None, stats=False):
+    @classmethod
+    def _pool_list(cls, attrs=None, stats=False):
         if attrs:
             attrs = attrs.split(',')
 
@@ -52,14 +54,15 @@ class Pool(RESTController):
         else:
             pools = CephService.get_pool_list()
 
-        return [self._serialize_pool(pool, attrs) for pool in pools]
+        return [cls._serialize_pool(pool, attrs) for pool in pools]
 
     def list(self, attrs=None, stats=False):
         return self._pool_list(attrs, stats)
 
-    def _get(self, pool_name, attrs=None, stats=False):
+    @classmethod
+    def _get(cls, pool_name, attrs=None, stats=False):
         # type: (str, str, bool) -> dict
-        pools = self._pool_list(attrs, stats)
+        pools = cls._pool_list(attrs, stats)
         pool = [pool for pool in pools if pool['pool_name'] == pool_name]
         if not pool:
             raise cherrypy.NotFound('No such pool')
@@ -81,6 +84,7 @@ class Pool(RESTController):
     def set(self, pool_name, flags=None, application_metadata=None, configuration=None, **kwargs):
         self._set_pool_values(pool_name, application_metadata, flags, True, kwargs)
         RbdConfiguration(pool_name).set_configuration(configuration)
+        self._wait_for_pgs(pool_name)
 
     @pool_task('create', {'pool_name': '{pool}'})
     @handle_send_command_error('pool')
@@ -92,6 +96,7 @@ class Pool(RESTController):
                                  rule=rule_name)
         self._set_pool_values(pool, application_metadata, flags, False, kwargs)
         RbdConfiguration(pool).set_configuration(configuration)
+        self._wait_for_pgs(pool)
 
     def _set_pool_values(self, pool, application_metadata, flags, update_existing, kwargs):
         update_name = False
@@ -140,6 +145,38 @@ class Pool(RESTController):
                 reset_arg(arg, '0')
             reset_arg('compression_algorithm', 'unset')
 
+    @classmethod
+    def _wait_for_pgs(cls, pool_name):
+        """
+        Keep the task waiting for until all pg changes are complete
+        :param pool_name: The name of the pool.
+        :type pool_name: string
+        """
+        current_pool = cls._get(pool_name)
+        initial_pgs = int(current_pool['pg_placement_num']) + int(current_pool['pg_num'])
+        cls._pg_wait_loop(current_pool, initial_pgs)
+
+    @classmethod
+    def _pg_wait_loop(cls, pool, initial_pgs):
+        """
+        Compares if all pg changes are completed, if not it will call itself
+        until all changes are completed.
+        :param pool: The dict that represents a pool.
+        :type pool: dict
+        :param initial_pgs: The pg and pg_num count before any change happened.
+        :type initial_pgs: int
+        """
+        if 'pg_num_target' in pool:
+            target = int(pool['pg_num_target']) + int(pool['pg_placement_num_target'])
+            current = int(pool['pg_placement_num']) + int(pool['pg_num'])
+            if current != target:
+                max_diff = abs(target - initial_pgs)
+                diff = max_diff - abs(target - current)
+                percentage = int(round(diff / float(max_diff) * 100))
+                TaskManager.current_task().set_progress(percentage)
+                time.sleep(4)
+                cls._pg_wait_loop(cls._get(pool['pool_name']), initial_pgs)
+
     @RESTController.Resource()
     @ReadPermission
     def configuration(self, pool_name):
index 871fa00fdf4eefde1c9dbed24437c62e7fbaa97f..bd7a12b7be2da850bdd91352ae7f6bcb4e33653f 100644 (file)
@@ -121,6 +121,26 @@ class RgwBucket(RgwRESTController):
                 if bucket['tenant'] else bucket['bucket']
         return bucket
 
+    @staticmethod
+    def strip_tenant_from_bucket_name(bucket_name, uid):
+        # type (str, str) => str
+        """
+        When linking a bucket to a new user belonging to same tenant
+        as the previous owner, tenant must be removed from the bucket name.
+        >>> RgwBucket.strip_tenant_from_bucket_name('tenant/bucket-name', 'tenant$user1')
+        'bucket-name'
+        >>> RgwBucket.strip_tenant_from_bucket_name('tenant/bucket-name', 'tenant2$user2')
+        'tenant/bucket-name'
+        >>> RgwBucket.strip_tenant_from_bucket_name('bucket-name', 'user1')
+        'bucket-name'
+        """
+        bucket_tenant = bucket_name[:bucket_name.find('/')] if bucket_name.find('/') >= 0 else None
+        uid_tenant = uid[:uid.find('$')] if uid.find('$') >= 0 else None
+        if bucket_tenant and uid_tenant and bucket_tenant == uid_tenant:
+            return bucket_name[bucket_name.find('/') + 1:]
+
+        return bucket_name
+
     def list(self):
         return self.proxy('GET', 'bucket')
 
@@ -137,7 +157,7 @@ class RgwBucket(RgwRESTController):
 
     def set(self, bucket, bucket_id, uid):
         result = self.proxy('PUT', 'bucket', {
-            'bucket': bucket,
+            'bucket': RgwBucket.strip_tenant_from_bucket_name(bucket, uid),
             'bucket-id': bucket_id,
             'uid': uid
         }, json_response=False)
index 51bda8e8d62d09e31338b395bdab4e7148a56fb4..f007f691cc5b9f7caea3af9c3d310e404a3e531e 100644 (file)
@@ -13,7 +13,7 @@ try:
 except ImportError:
     python_saml_imported = False
 
-from .. import mgr, logger
+from .. import mgr
 from ..exceptions import UserDoesNotExist
 from ..services.auth import JwtManager
 from ..tools import prepare_url_prefix
@@ -73,7 +73,6 @@ class Saml2(BaseController):
             token = JwtManager.gen_token(username)
             JwtManager.set_user(JwtManager.decode_token(token))
             token = token.decode('utf-8')
-            logger.debug("JWT Token: %s", token)
             raise cherrypy.HTTPRedirect("{}/#/login?access_token={}".format(url_prefix, token))
         else:
             return {
index b64f58a32a6acfa48679ddf0d13d2f12aa8d4a5d..7347182fa1e21c2b36a068ed709982eb0052b875 100644 (file)
@@ -11,6 +11,9 @@
         "build": {
           "builder": "@angular-devkit/build-angular:browser",
           "options": {
+            "aot": true,
+            "i18nFormat": "xlf",
+            "i18nMissingTranslation": "ignore",
             "outputPath": "dist",
             "index": "src/index.html",
             "main": "src/main.ts",
@@ -41,7 +44,6 @@
               "sourceMap": false,
               "extractCss": true,
               "namedChunks": false,
-              "aot": true,
               "extractLicenses": true,
               "vendorChunk": false,
               "buildOptimizer": true,
                   "with": "src/environments/environment.prod.ts"
                 }
               ]
+            },
+            "cs": {
+              "outputPath": "dist/cs/",
+              "i18nFile": "src/locale/messages.cs.xlf",
+              "i18nLocale": "cs"
+            },
+            "de-DE": {
+              "outputPath": "dist/de-DE/",
+              "i18nFile": "src/locale/messages.de-DE.xlf",
+              "i18nLocale": "de-DE"
+            },
+            "en-US": {
+              "outputPath": "dist/en-US/",
+              "i18nFile": "src/locale/messages.en-US.xlf",
+              "i18nLocale": "en-US"
+            },
+            "es-ES": {
+              "outputPath": "dist/es-ES/",
+              "i18nFile": "src/locale/messages.es-ES.xlf",
+              "i18nLocale": "es-ES"
+            },
+            "fr-FR": {
+              "outputPath": "dist/fr-FR/",
+              "i18nFile": "src/locale/messages.fr-FR.xlf",
+              "i18nLocale": "fr-FR"
+            },
+            "id-ID": {
+              "outputPath": "dist/id-ID/",
+              "i18nFile": "src/locale/messages.id-ID.xlf",
+              "i18nLocale": "id-ID"
+            },
+            "it-IT": {
+              "outputPath": "dist/it-IT/",
+              "i18nFile": "src/locale/messages.it-IT.xlf",
+              "i18nLocale": "it-IT"
+            },
+            "ja-JP": {
+              "outputPath": "dist/ja-JP/",
+              "i18nFile": "src/locale/messages.ja-JP.xlf",
+              "i18nLocale": "ja-JP"
+            },
+            "pl-PL": {
+              "outputPath": "dist/pl-PL/",
+              "i18nFile": "src/locale/messages.pl-PL.xlf",
+              "i18nLocale": "pl-PL"
+            },
+            "pt-BR": {
+              "outputPath": "dist/pt-BR/",
+              "i18nFile": "src/locale/messages.pt-BR.xlf",
+              "i18nLocale": "pt-BR"
+            },
+            "zh-CN": {
+              "outputPath": "dist/zh-CN/",
+              "i18nFile": "src/locale/messages.zh-CN.xlf",
+              "i18nLocale": "zh-CN"
+            },
+            "zh-TW": {
+              "outputPath": "dist/zh-TW/",
+              "i18nFile": "src/locale/messages.zh-TW.xlf",
+              "i18nLocale": "zh-TW"
             }
           }
         },
           "configurations": {
             "production": {
               "browserTarget": "ceph-dashboard:build:production"
+            },
+            "cs": {
+              "browserTarget": "ceph-dashboard:build:cs"
+            },
+            "de-DE": {
+              "browserTarget": "ceph-dashboard:build:de-DE"
+            },
+            "en-US": {
+              "browserTarget": "ceph-dashboard:build:en-US"
+            },
+            "es-ES": {
+              "browserTarget": "ceph-dashboard:build:es-ES"
+            },
+            "fr-FR": {
+              "browserTarget": "ceph-dashboard:build:fr-FR"
+            },
+            "id-ID": {
+              "browserTarget": "ceph-dashboard:build:id-ID"
+            },
+            "it-IT": {
+              "browserTarget": "ceph-dashboard:build:it-IT"
+            },
+            "ja-JP": {
+              "browserTarget": "ceph-dashboard:build:ja-JP"
+            },
+            "pl-PL": {
+              "browserTarget": "ceph-dashboard:build:pl-PL"
+            },
+            "pt-BR": {
+              "browserTarget": "ceph-dashboard:build:pt-BR"
+            },
+            "zh-CN": {
+              "browserTarget": "ceph-dashboard:build:zh-CN"
+            },
+            "zh-TW": {
+              "browserTarget": "ceph-dashboard:build:zh-TW"
             }
           }
         },
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/2.23eee776b9ebe5035afa.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/2.23eee776b9ebe5035afa.js
deleted file mode 100644 (file)
index c8d09ae..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+lcs":function(l,n,e){"use strict";e.d(n,"a",function(){return a});var t=e("gIcY"),u=e("K9Ia"),i=(e("F83c"),e("QFaf")),o=e("kvvV"),a=(e("9nlD"),e("VXsX"),function(){function l(l,n,e,t){this.modalRef=l,this.rbdService=n,this.taskManagerService=e,this.notificationService=t,this.editing=!1,this.createForm()}return l.prototype.createForm=function(){this.snapshotForm=new i.a({snapshotName:new t.i("",{validators:[t.A.required]})})},l.prototype.ngOnInit=function(){this.onSubmit=new u.a},l.prototype.setSnapName=function(l){this.snapName=l,this.snapshotForm.get("snapshotName").setValue(l)},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l},l.prototype.editAction=function(){var l=this,n=this.snapshotForm.getValue("snapshotName"),e=new o.a;e.name="rbd/snap/edit",e.metadata={pool_name:this.poolName,image_name:this.imageName,snapshot_name:n},this.rbdService.renameSnapshot(this.poolName,this.imageName,this.snapName,n).toPromise().then(function(){l.taskManagerService.subscribe(e.name,e.metadata,function(n){l.notificationService.notifyTask(n)}),l.modalRef.hide(),l.onSubmit.next(l.snapName)}).catch(function(){l.snapshotForm.setErrors({cdSubmitButton:!0})})},l.prototype.createAction=function(){var l=this,n=this.snapshotForm.getValue("snapshotName"),e=new o.a;e.name="rbd/snap/create",e.metadata={pool_name:this.poolName,image_name:this.imageName,snapshot_name:n},this.rbdService.createSnapshot(this.poolName,this.imageName,n).toPromise().then(function(){l.taskManagerService.subscribe(e.name,e.metadata,function(n){l.notificationService.notifyTask(n)}),l.modalRef.hide(),l.onSubmit.next(n)}).catch(function(){l.snapshotForm.setErrors({cdSubmitButton:!0})})},l.prototype.submit=function(){this.editing?this.editAction():this.createAction()},l}())},"0rTx":function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("gIcY"),a=e("Ip0R"),r=e("IZUe"),s=e("gp3X"),d=e("sb0X"),c=e("KVJa"),p=e("Z21x"),m=e("sne2"),f=e("2GqK"),h=e("F83c"),g=e("DQlY"),v=e("2EZI"),b=e("kn/O");e.d(n,"a",function(){return S});var y=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,44,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Restore Image"])),(l()(),t["\u0275eld"](4,0,null,1,40,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,39,"form",[["class","form"],["name","restoreForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,o.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,o.d,null,[o.l]),t["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,27,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To restore"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](16,null,["","/","@",""])),(l()(),t["\u0275ted"](-1,null,[",\xa0 "])),(l()(),t["\u0275eld"](18,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["type the image's new name and click"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](21,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Restore Image"])),(l()(),t["\u0275ted"](-1,null,[". "])),(l()(),t["\u0275eld"](24,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](25,278528,null,0,a.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](26,{"has-error":0}),(l()(),t["\u0275eld"](27,0,null,null,1,"label",[["for","name"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["New Name"])),(l()(),t["\u0275eld"](29,0,null,null,6,"input",[["autocomplete","off"],["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,30)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,30).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,30)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,30)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](30,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),t["\u0275did"](32,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,o.q,null,[o.j]),t["\u0275did"](34,16384,null,0,o.r,[[4,o.q]],null,null),t["\u0275did"](35,4210688,null,0,r.a,[t.ElementRef],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](37,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](38,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](40,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.restore()&&t),t},s.b,s.a)),t["\u0275did"](41,114688,null,0,d.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Restore Image"])),(l()(),t["\u0275eld"](43,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),t["\u0275did"](44,49152,null,0,p.a,[a.Location,m.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.restoreForm);var u=l(n,26,0,e.restoreForm.showError("name",t["\u0275nov"](n,7)));l(n,25,0,"form-group",u),l(n,32,0,"name"),l(n,37,0,e.restoreForm.showError("name",t["\u0275nov"](n,7),"required")),l(n,41,0,e.restoreForm),l(n,44,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,16,0,e.poolName,e.imageName,e.imageId),l(n,29,0,t["\u0275nov"](n,34).ngClassUntouched,t["\u0275nov"](n,34).ngClassTouched,t["\u0275nov"](n,34).ngClassPristine,t["\u0275nov"](n,34).ngClassDirty,t["\u0275nov"](n,34).ngClassValid,t["\u0275nov"](n,34).ngClassInvalid,t["\u0275nov"](n,34).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-restore-modal",[],null,null,null,_,y)),t["\u0275did"](1,114688,null,0,f.a,[h.a,g.a,v.a,b.a],null,null)],function(l,n){l(n,1,0)},null)}var S=t["\u0275ccf"]("cd-rbd-trash-restore-modal",f.a,w,{},{},[])},"2GqK":function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e("F83c"),e("2EZI");var t=e("kvvV"),u=(e("kn/O"),function(){function l(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t}return l.prototype.ngOnInit=function(){this.restoreForm=this.fb.group({name:this.imageName})},l.prototype.restore=function(){var l=this,n=this.restoreForm.getValue("name");this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/restore",{pool_name:this.poolName,image_id:this.imageId,new_image_name:n}),call:this.rbdService.restoreTrash(this.poolName,this.imageId,n)}).subscribe(void 0,function(){l.restoreForm.setErrors({cdSubmitButton:!0})},function(){l.modalRef.hide()})},l}())},"2JDI":function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("wd/R"),u=(e("F83c"),e("2EZI"),e("1Ni5")),i=e("kvvV"),o=(e("kn/O"),function(){function l(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t,this.minDate=new Date,this.bsConfig={dateInputFormat:"YYYY-MM-DD HH:mm:ss",containerClass:"theme-default"},this.createForm()}return l.prototype.createForm=function(){this.moveForm=this.fb.group({expiresAt:["",[u.a.custom("format",function(l){return!(""===l||t(l,"YYYY-MM-DD HH:mm:ss").isValid())}),u.a.custom("expired",function(l){return t().isAfter(l)})]]})},l.prototype.ngOnInit=function(){this.pattern=this.poolName+"/"+this.imageName},l.prototype.moveImage=function(){var l=this,n=0,e=this.moveForm.getValue("expiresAt");e&&(n=t(e).diff(t(),"seconds",!0)),n<0&&(n=0),this.taskWrapper.wrapTaskAroundCall({task:new i.a("rbd/trash/move",{pool_name:this.poolName,image_name:this.imageName}),call:this.rbdService.moveTrash(this.poolName,this.imageName,n)}).subscribe(void 0,void 0,function(){l.modalRef.hide()})},l}())},"3ris":function(l,n,e){"use strict";e.d(n,"a",function(){return u});var t=e("LvDl"),u=(e("uIqm"),e("vCyI"),e("uYzU"),function(){function l(l,n){this.i18n=l,this.iscsiBackstorePipe=n,this.metadata={}}return Object.defineProperty(l.prototype,"content",{set:function(l){this.detailTable=l,l&&l.updateColumns()},enumerable:!0,configurable:!0}),l.prototype.ngOnInit=function(){this.columns=[{prop:"displayName",name:this.i18n("Name"),flexGrow:2,cellTemplate:this.highlightTpl},{prop:"current",name:this.i18n("Current"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:this.i18n("Default"),flexGrow:1,cellTemplate:this.highlightTpl}]},l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.generateTree()),this.data=void 0},l.prototype.generateTree=function(){var l=this;this.metadata={root:this.selectedItem.target_controls};var n={target:{expanded:"fa fa-fw fa-bullseye fa-lg"},initiators:{expanded:"fa fa-fw fa-user fa-lg",leaf:"fa fa-fw fa-user"},groups:{expanded:"fa fa-fw fa-users fa-lg",leaf:"fa fa-fw fa-users"},disks:{expanded:"fa fa-fw fa-hdd-o fa-lg",leaf:"fa fa-fw fa-hdd-o"},portals:{expanded:"fa fa-fw fa-server fa-lg",leaf:"fa fa-fw fa-server fa-lg"}},e=[];t.forEach(this.selectedItem.disks,function(n){var t="disk_"+n.pool+"_"+n.image;l.metadata[t]={controls:n.controls,backstore:n.backstore},e.push({value:n.pool+"/"+n.image,id:t})});var u=[];t.forEach(this.selectedItem.portals,function(l){u.push({value:l.host+":"+l.ip})});var i=[];t.forEach(this.selectedItem.clients,function(e){var u=t.cloneDeep(e.auth);t.extend(u,e.info),delete u.state,t.forEach(Object.keys(e.info.state),function(l){u[l.toLowerCase()]=e.info.state[l]}),l.metadata["client_"+e.client_iqn]=u;var o=[];e.luns.forEach(function(l){o.push({value:l.pool+"/"+l.image,id:"disk_"+l.pool+"_"+l.image,settings:{cssClasses:n.disks}})}),i.push({value:e.client_iqn,status:Object.keys(e.info.state).includes("LOGGED_IN")?"logged_in":"logged_out",id:"client_"+e.client_iqn,children:o})});var o=[];t.forEach(this.selectedItem.groups,function(l){var e=[];l.disks.forEach(function(l){e.push({value:l.pool+"/"+l.image,id:"disk_"+l.pool+"_"+l.image})});var t=[];l.members.forEach(function(l){t.push({value:l,id:"client_"+l})}),o.push({value:l.group_id,children:[{value:"Disks",children:e,settings:{selectionAllowed:!1,cssClasses:n.disks}},{value:"Initiators",children:t,settings:{selectionAllowed:!1,cssClasses:n.initiators}}]})}),this.tree={value:this.selectedItem.target_iqn,id:"root",settings:{static:!0,cssClasses:n.target},children:[{value:"Disks",children:e,settings:{selectionAllowed:!1,cssClasses:n.disks}},{value:"Portals",children:u,settings:{selectionAllowed:!1,cssClasses:n.portals}},{value:"Initiators",children:i,settings:{selectionAllowed:!1,cssClasses:n.initiators}},{value:"Groups",children:o,settings:{selectionAllowed:!1,cssClasses:n.groups}}]}},l.prototype.onNodeSelected=function(l){if(l.node.id){this.title=l.node.value;var n=this.metadata[l.node.id]||{};"root"===l.node.id?(this.columns[2].isHidden=!1,this.data=t.map(this.settings.target_default_controls,function(l,e){return{displayName:e,default:l,current:n[e]||l}})):l.node.id.toString().startsWith("disk_")?(this.columns[2].isHidden=!1,this.data=t.map(this.settings.disk_default_controls[n.backstore],function(l,e){return{displayName:e,default:l,current:t.isUndefined(n.controls[e])?l:n.controls[e]}}),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(n.backstore)})):(this.columns[2].isHidden=!0,this.data=t.map(n,function(l,n){return{displayName:n,default:void 0,current:l}}))}else this.data=void 0;this.detailTable&&this.detailTable.updateColumns()},l}())},BH9v:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("aXbf"),o=function(){function l(l,n){this.control=l,this.formatter=n}return l.prototype.setValue=function(l){var n=this.formatter.toMilliseconds(l);this.control.control.setValue(n+" ms")},l.prototype.ngOnInit=function(){var l=this;this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.control.value)})},l.prototype.onUpdate=function(l){this.setValue(l)},l}(),a=e("LvDl"),r=e("IzCI"),s=function(){function l(l,n,e,u){this.elementRef=l,this.control=n,this.dimlessBinaryPerSecondPipe=e,this.formatter=u,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){var l=this;this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.el.value)})},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l,0),e=this.round(n);this.el.value=this.dimlessBinaryPerSecondPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!a.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!a.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!a.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}(),d=function(){function l(l,n){this.formatter=l,this.ngControl=n}return l.prototype.setValue=function(l){var n=this.formatter.toIops(l);this.ngControl.control.setValue(n+" IOPS")},l.prototype.ngOnInit=function(){var l=this;this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.ngControl.value)})},l.prototype.onUpdate=function(l){this.setValue(l)},l}(),c=e("Ip0R"),p=e("4HWh"),m=e("p4Cf");e("rFfW"),e("o8EM"),e.d(n,"a",function(){return f}),e.d(n,"b",function(){return _});var f=t["\u0275crt"]({encapsulation:0,styles:[[".collapsible[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}"]],data:{}});function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdMilliseconds",""],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onUpdate(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,o,[u.q,i.a],{ngDataReady:[0,"ngDataReady"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady)},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdDimlessBinaryPerSecond",""],["class","form-control"],["defaultUnit","b"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onBlur(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,s,[t.ElementRef,u.q,r.a,i.a],{ngDataReady:[0,"ngDataReady"],defaultUnit:[1,"defaultUnit"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady,"b")},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdIops",""],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onUpdate(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,d,[i.a,u.q],{ngDataReady:[0,"ngDataReady"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady)},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The mininum value is 0"]))],null,null)}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),(l()(),t["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](4,null,["",""])),(l()(),t["\u0275eld"](5,0,null,null,2,"cd-helper",[],null,null,null,p.b,p.a)),t["\u0275did"](6,49152,null,0,m.a,[],null,null),(l()(),t["\u0275ted"](7,0,["",""])),(l()(),t["\u0275eld"](8,0,null,null,16,"div",[],[[8,"className",0]],null,null,null,null)),(l()(),t["\u0275eld"](9,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](10,0,null,null,7,null,null,null,null,null,null,null)),t["\u0275did"](11,16384,null,0,c.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,h)),t["\u0275did"](13,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,g)),t["\u0275did"](15,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](17,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275eld"](18,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,3,"button",[["class","btn btn-default"],["data-toggle","button"],["title","Remove the local configuration value. The parent configuration value will be inherited and used instead."],["type","button"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.reset(l.context.$implicit.name)&&t),t},null,null)),t["\u0275did"](20,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](21,{active:0}),(l()(),t["\u0275eld"](22,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-eraser"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](24,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,u=l(n,2,0,e.form.showError("configuration."+n.context.$implicit.name,t["\u0275nov"](n.parent.parent,0)));l(n,1,0,"form-group",u),l(n,11,0,n.context.$implicit.type),l(n,13,0,e.configurationType.milliseconds),l(n,15,0,e.configurationType.bps),l(n,17,0,e.configurationType.iops);var i=l(n,21,0,e.isDisabled(n.context.$implicit.name));l(n,20,0,"btn btn-default",i),l(n,24,0,e.form.showError("configuration."+n.context.$implicit.name,t["\u0275nov"](n.parent.parent,0),"min"))},function(l,n){l(n,3,0,n.context.$implicit.name),l(n,4,0,n.context.$implicit.displayName),l(n,7,0,n.context.$implicit.description),l(n,8,0,t["\u0275inlineInterpolate"](1,"col-sm-9 ",n.parent.context.$implicit.heading,""))})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,5,"h3",[["class","page-header"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,4,"span",[["class","collapsible"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.toggleSectionVisibility(l.context.$implicit.class)&&t),t},null,null)),(l()(),t["\u0275ted"](3,null,[""," "])),(l()(),t["\u0275eld"](4,0,null,null,2,"i",[["aria-hidden","true"],["class","fa"]],null,null,null,null,null)),t["\u0275did"](5,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](6,{"fa-plus-circle":0,"fa-minus-circle":1}),(l()(),t["\u0275eld"](7,0,null,null,2,"div",[],[[8,"className",0],[8,"hidden",0]],null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](9,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component,t=l(n,6,0,!e.sectionVisibility[n.context.$implicit.class],e.sectionVisibility[n.context.$implicit.class]);l(n,5,0,"fa",t),l(n,9,0,n.context.$implicit.options)},function(l,n){var e=n.component;l(n,3,0,n.context.$implicit.heading),l(n,7,0,t["\u0275inlineInterpolate"](1,"",n.context.$implicit.class,""),!e.sectionVisibility[n.context.$implicit.class])})}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,[["cfgFormGroup",1]],null,7,"fieldset",[],[[2,"ng-untouched",null],[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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,1).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,1).onReset()&&u),u},null,null)),t["\u0275did"](1,540672,null,0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](3,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["RBD Configuration"])),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](7,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,1,0,e.form.get("configuration")),l(n,7,0,e.rbdConfigurationService.sections)},function(l,n){l(n,0,0,t["\u0275nov"](n,3).ngClassUntouched,t["\u0275nov"](n,3).ngClassTouched,t["\u0275nov"](n,3).ngClassPristine,t["\u0275nov"](n,3).ngClassDirty,t["\u0275nov"](n,3).ngClassValid,t["\u0275nov"](n,3).ngClassInvalid,t["\u0275nov"](n,3).ngClassPending)})}},EFGL:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("IzCI"),o=e("aXbf"),a=e("dEH0"),r=e("BQkM"),s=e("25BL"),d=e("uIqm");e("aAWM"),e("o8EM"),e("Jm/i"),e.d(n,"a",function(){return c}),e.d(n,"b",function(){return _});var c=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function p(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function m(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function f(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,"div",[],null,null,null,null,null)),t["\u0275did"](1,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,p)),t["\u0275did"](3,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,m)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,f)),t["\u0275did"](7,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],function(l,n){l(n,1,0,n.context.value),l(n,3,0,"global"),l(n,5,0,"image"),l(n,7,0,"pool")},null)}function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,1),n.parent.context.value));l(n,1,0,e)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),n.parent.context.value));l(n,1,0,e)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,3),n.parent.context.value));l(n,1,0,e)})}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,9,"div",[],null,null,null,null,null)),t["\u0275did"](1,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,g)),t["\u0275did"](3,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](7,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](9,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null)],function(l,n){var e=n.component;l(n,1,0,n.context.row.type),l(n,3,0,e.typeField.bps),l(n,5,0,e.typeField.milliseconds),l(n,7,0,e.typeField.iops)},null)}function _(l){return t["\u0275vid"](0,[t["\u0275pid"](0,u.TitleCasePipe,[]),t["\u0275pid"](0,i.a,[o.a]),t["\u0275pid"](0,a.a,[]),t["\u0275pid"](0,r.a,[]),t["\u0275qud"](402653184,1,{configurationSourceTpl:0}),t["\u0275qud"](402653184,2,{configurationValueTpl:0}),t["\u0275qud"](402653184,3,{poolConfTable:0}),(l()(),t["\u0275eld"](7,0,null,null,1,"cd-table",[["identifier","name"]],null,null,null,s.b,s.a)),t["\u0275did"](8,2867200,[[3,4],["poolConfTable",4]],0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"]},null),(l()(),t["\u0275and"](0,[[1,2],["configurationSourceTpl",2]],null,0,null,h)),(l()(),t["\u0275and"](0,[[2,2],["configurationValueTpl",2]],null,0,null,C))],function(l,n){var e=n.component;l(n,8,0,e.data,e.poolConfigurationColumns,"name")},null)}},Ekvf:function(l,n,e){"use strict";e.d(n,"a",function(){return d});var t=e("mrSG"),u=e("t/Na"),i=e("67Y/"),o=e("xTzq"),a=e("o8EM"),r=e("CcnG"),s=e("pL04"),d=function(){function l(l,n){this.http=l,this.rbdConfigurationService=n,this.apiPath="api/pool"}return l.prototype.create=function(l){return this.http.post(this.apiPath,l,{observe:"response"})},l.prototype.update=function(l){var n;return l.hasOwnProperty("srcpool")?(n=l.srcpool,delete l.srcpool):(n=l.pool,delete l.pool),this.http.put(this.apiPath+"/"+encodeURIComponent(n),l,{observe:"response"})},l.prototype.delete=function(l){return this.http.delete(this.apiPath+"/"+l,{observe:"response"})},l.prototype.get=function(l){return this.http.get(this.apiPath+"/"+l)},l.prototype.getList=function(){return this.http.get(this.apiPath+"?stats=true")},l.prototype.getConfiguration=function(l){var n=this;return this.http.get(this.apiPath+"/"+l+"/configuration").pipe(Object(i.a)(function(l){return l.map(function(l){return Object.assign(l,n.rbdConfigurationService.getOptionByName(l.name))})}))},l.prototype.getInfo=function(l){return this.http.get(this.apiPath+"/_info"+(l?"?pool_name="+l:""))},l.prototype.list=function(l){void 0===l&&(l=[]);var n=l.join(",");return this.http.get(this.apiPath+"?attrs="+n).toPromise().then(function(l){return l})},l.ngInjectableDef=r.defineInjectable({factory:function(){return new l(r.inject(u.c),r.inject(a.a))},token:l,providedIn:s.a}),l=t.__decorate([o.a,t.__metadata("design:paramtypes",[u.c,a.a])],l)}()},EmSq:function(l,n,e){"use strict";e.d(n,"a",function(){return i});var t=e("CcnG"),u=e("LvDl"),i=(e("Fgil"),e("aXbf"),function(){function l(l,n,e,u){this.elementRef=l,this.control=n,this.dimlessBinaryPipe=e,this.formatter=u,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){this.setValue(this.el.value)},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l),e=this.round(n);this.el.value=this.dimlessBinaryPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!u.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!u.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!u.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}())},F83c:function(l,n,e){"use strict";e.d(n,"a",function(){return d});var t=e("mrSG"),u=e("t/Na"),i=e("67Y/"),o=e("xTzq"),a=e("o8EM"),r=e("CcnG"),s=e("pL04"),d=function(){function l(l,n){this.http=l,this.rbdConfigurationService=n}return l.prototype.create=function(l){return this.http.post("api/block/image",l,{observe:"response"})},l.prototype.delete=function(l,n){return this.http.delete("api/block/image/"+l+"/"+n,{observe:"response"})},l.prototype.update=function(l,n,e){return this.http.put("api/block/image/"+l+"/"+n,e,{observe:"response"})},l.prototype.get=function(l,n){return this.http.get("api/block/image/"+l+"/"+n)},l.prototype.list=function(){var l=this;return this.http.get("api/block/image").pipe(Object(i.a)(function(n){return n.map(function(n){return n.value.map(function(n){return n.configuration?(n.configuration.map(function(n){return Object.assign(n,l.rbdConfigurationService.getOptionByName(n.name))}),n):n}),n})}))},l.prototype.copy=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/copy",e,{observe:"response"})},l.prototype.flatten=function(l,n){return this.http.post("api/block/image/"+l+"/"+n+"/flatten",null,{observe:"response"})},l.prototype.defaultFeatures=function(){return this.http.get("api/block/image/default_features")},l.prototype.createSnapshot=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/snap",{snapshot_name:e},{observe:"response"})},l.prototype.renameSnapshot=function(l,n,e,t){return this.http.put("api/block/image/"+l+"/"+n+"/snap/"+e,{new_snap_name:t},{observe:"response"})},l.prototype.protectSnapshot=function(l,n,e,t){return this.http.put("api/block/image/"+l+"/"+n+"/snap/"+e,{is_protected:t},{observe:"response"})},l.prototype.rollbackSnapshot=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/snap/"+e+"/rollback",null,{observe:"response"})},l.prototype.cloneSnapshot=function(l,n,e,t){return this.http.post("api/block/image/"+l+"/"+n+"/snap/"+e+"/clone",t,{observe:"response"})},l.prototype.deleteSnapshot=function(l,n,e){return this.http.delete("api/block/image/"+l+"/"+n+"/snap/"+e,{observe:"response"})},l.prototype.listTrash=function(){return this.http.get("api/block/image/trash/")},l.prototype.moveTrash=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/move_trash",{delay:e},{observe:"response"})},l.prototype.purgeTrash=function(l){return this.http.post("api/block/image/trash/purge/?pool_name="+l,null,{observe:"response"})},l.prototype.restoreTrash=function(l,n,e){return this.http.post("api/block/image/trash/"+l+"/"+n+"/restore",{new_image_name:e},{observe:"response"})},l.prototype.removeTrash=function(l,n,e,t){return void 0===t&&(t=!1),this.http.delete("api/block/image/trash/"+l+"/"+n+"/?image_name="+e+"&force="+t,{observe:"response"})},l.ngInjectableDef=r.defineInjectable({factory:function(){return new l(r.inject(u.c),r.inject(a.a))},token:l,providedIn:s.a}),t.__decorate([t.__param(2,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"createSnapshot",null),t.__decorate([t.__param(3,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"renameSnapshot",null),t.__decorate([t.__param(3,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"protectSnapshot",null),l=t.__decorate([o.a,t.__metadata("design:paramtypes",[u.c,a.a])],l)}()},I4Qz:function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("gIcY"),a=e("Ip0R"),r=e("ARl4"),s=e("lqqz"),d=e("gp3X"),c=e("sb0X"),p=e("KVJa"),m=e("Z21x"),f=e("sne2"),h=e("2JDI"),g=e("F83c"),v=e("DQlY"),b=e("2EZI"),y=e("kn/O");e.d(n,"a",function(){return I});var C=t["\u0275crt"]({encapsulation:0,styles:[[".bs-datepicker-head bs-datepicker-navigation-view{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between}"]],data:{}});function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,['Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".']))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Protection has already expired. Please pick a future date or leave it empty."]))],null,null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,43,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Move an image to trash"])),(l()(),t["\u0275eld"](4,0,null,1,39,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,38,"form",[["class","form"],["name","moveForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,o.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,o.d,null,[o.l]),t["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,26,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,7,"p",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To move "])),(l()(),t["\u0275eld"](13,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](14,null,["","/",""])),(l()(),t["\u0275ted"](-1,null,[" to trash, click "])),(l()(),t["\u0275eld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Move Image"])),(l()(),t["\u0275ted"](-1,null,[". Optionally, you can pick an expiration date."])),(l()(),t["\u0275eld"](19,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](20,278528,null,0,a.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](21,{"has-error":0}),(l()(),t["\u0275eld"](22,0,null,null,1,"label",[["for","expires"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Protection expires at"])),(l()(),t["\u0275eld"](24,16777216,null,null,8,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","expiresAt"],["placeholder","NOT PROTECTED"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,25)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,25).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,25)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,25)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,27).onChange(e)&&u),"keyup.esc"===n&&(u=!1!==t["\u0275nov"](l,27).hide()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onBlur()&&u),u},null,null)),t["\u0275did"](25,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["\u0275did"](26,737280,null,0,r.b,[r.a,t.ElementRef,t.Renderer2,t.ViewContainerRef,s.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),t["\u0275did"](27,16384,null,0,r.B,[r.b,r.f,t.Renderer2,t.ElementRef,t.ChangeDetectorRef],null,null),t["\u0275prd"](1024,null,o.o,function(l){return[l]},[r.B]),t["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,r.B]),t["\u0275did"](30,671744,null,0,o.j,[[3,o.d],[6,o.o],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,o.q,null,[o.j]),t["\u0275did"](32,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](34,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](36,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](37,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](38,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.moveImage()&&t),t},d.b,d.a)),t["\u0275did"](40,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Move Image"])),(l()(),t["\u0275eld"](42,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["\u0275did"](43,49152,null,0,m.a,[a.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.moveForm);var u=l(n,21,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7)));l(n,20,0,"form-group",u),l(n,26,0,e.bsConfig,e.minDate),l(n,30,0,"expiresAt"),l(n,34,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7),"format")),l(n,36,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7),"expired")),l(n,40,0,e.moveForm),l(n,43,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,14,0,e.poolName,e.imageName),l(n,24,0,t["\u0275nov"](n,32).ngClassUntouched,t["\u0275nov"](n,32).ngClassTouched,t["\u0275nov"](n,32).ngClassPristine,t["\u0275nov"](n,32).ngClassDirty,t["\u0275nov"](n,32).ngClassValid,t["\u0275nov"](n,32).ngClassInvalid,t["\u0275nov"](n,32).ngClassPending)})}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-move-modal",[],null,null,null,S,C)),t["\u0275did"](1,114688,null,0,h.a,[g.a,v.a,b.a,y.a],null,null)],function(l,n){l(n,1,0)},null)}var I=t["\u0275ccf"]("cd-rbd-trash-move-modal",h.a,R,{},{},[])},JBea:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("vCyI");var t=function(){function l(){}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first())},l}()},"JIi+":function(l,n,e){"use strict";var t=e("CcnG"),u=e("eajB"),i=e("lqqz"),o=e("pKUh"),a=e("YAQW"),r=e("Ip0R"),s=e("25BL"),d=e("uIqm"),c=e("NUGo"),p=e("S7zO"),m=e("VTlA"),f=e("ufoC"),h=e("mSOc"),g=e("wd/R"),v=e("F/XL"),b=e("F83c"),y=e("OLbh"),C=e("0+/T"),_=e("x38r"),w=e("vCyI"),S=e("QTAa"),R=e("kvvV"),I=e("a0VL"),k=e("Fgil"),D=e("aexS"),F=e("9nlD"),E=e("VXsX"),T=e("+lcs"),N=function(){return function(l){this.i18n=l,this.create={permission:"create",icon:"fa-plus",name:this.i18n("Create")},this.rename={permission:"update",icon:"fa-pencil",name:this.i18n("Rename")},this.protect={permission:"update",icon:"fa-lock",visible:function(l){return l.hasSingleSelection&&!l.first().is_protected},name:this.i18n("Protect")},this.unprotect={permission:"update",icon:"fa-unlock",visible:function(l){return l.hasSingleSelection&&l.first().is_protected},name:this.i18n("Unprotect")},this.clone={permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-clone",name:this.i18n("Clone")},this.copy={permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-copy",name:this.i18n("Copy")},this.rollback={permission:"update",icon:"fa-undo",name:this.i18n("Rollback")},this.deleteSnap={permission:"delete",icon:"fa-times",disable:function(l){var n=l.first();return!l.hasSingleSelection||n.cdExecuting||n.is_protected},name:this.i18n("Delete")},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}}(),V=function(){return function(){}}(),P=function(){function l(l,n,e,t,u,i,o,a,r,s){var d=this;this.authStorageService=l,this.modalService=n,this.dimlessBinaryPipe=e,this.cdDatePipe=t,this.rbdService=u,this.taskManagerService=i,this.notificationService=o,this.summaryService=a,this.taskListService=r,this.i18n=s,this.snapshots=[],this.selection=new w.a,this.builders={"rbd/snap/create":function(l){var n=new V;return n.name=l.snapshot_name,n}},this.permission=this.authStorageService.getPermissions().rbdImage;var c=new N(this.i18n);c.create.click=function(){return d.openCreateSnapshotModal()},c.rename.click=function(){return d.openEditSnapshotModal()},c.protect.click=function(){return d.toggleProtection()},c.unprotect.click=function(){return d.toggleProtection()};var p=function(){return d.selection.first()&&encodeURIComponent(d.poolName)+"/"+encodeURIComponent(d.rbdName)+"/"+encodeURIComponent(d.selection.first().name)};c.clone.routerLink=function(){return"/block/rbd/clone/"+p()},c.copy.routerLink=function(){return"/block/rbd/copy/"+p()},c.rollback.click=function(){return d.rollbackModal()},c.deleteSnap.click=function(){return d.deleteSnapshotModal()},this.tableActions=c.ordering}return l.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Name"),prop:"name",cellTransformation:_.a.executing,flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("State"),prop:"is_protected",flexGrow:1,cellClass:"text-center",cellTemplate:this.protectTpl},{name:this.i18n("Created"),prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}]},l.prototype.ngOnChanges=function(){var l=this;this.taskListService.init(function(){return Object(v.a)(l.snapshots)},null,function(n){return l.data=n},function(){return l.data=l.snapshots},function(n){return["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(n.name)&&l.poolName===n.metadata.pool_name&&l.rbdName===n.metadata.image_name},function(l,n){return l.name===n.metadata.snapshot_name},this.builders)},l.prototype.openSnapshotModal=function(l,n){var e=this;void 0===n&&(n=null),this.modalRef=this.modalService.show(T.a),this.modalRef.content.poolName=this.poolName,this.modalRef.content.imageName=this.rbdName,n?this.modalRef.content.setEditing():n=this.rbdName+"_"+g().toISOString(!0),this.modalRef.content.setSnapName(n),this.modalRef.content.onSubmit.subscribe(function(n){var t=new S.a;t.name=l,t.metadata={image_name:e.rbdName,pool_name:e.poolName,snapshot_name:n},e.summaryService.addRunningTask(t),e.ngOnChanges()})},l.prototype.openCreateSnapshotModal=function(){this.openSnapshotModal("rbd/snap/create")},l.prototype.openEditSnapshotModal=function(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)},l.prototype.toggleProtection=function(){var l=this,n=this.selection.first().name,e=this.selection.first().is_protected,t=new R.a;t.name="rbd/snap/edit",t.metadata={pool_name:this.poolName,image_name:this.rbdName,snapshot_name:n},this.rbdService.protectSnapshot(this.poolName,this.rbdName,n,!e).toPromise().then(function(){var n=new S.a;n.name=t.name,n.metadata=t.metadata,l.summaryService.addRunningTask(n),l.ngOnChanges(),l.taskManagerService.subscribe(t.name,t.metadata,function(n){l.notificationService.notifyTask(n)})})},l.prototype._asyncTask=function(l,n,e){var t=this,u=new R.a;u.name=n,u.metadata={pool_name:this.poolName,image_name:this.rbdName,snapshot_name:e},this.rbdService[l](this.poolName,this.rbdName,e).toPromise().then(function(){var l=new S.a;l.name=u.name,l.metadata=u.metadata,t.summaryService.addRunningTask(l),t.modalRef.hide(),t.ngOnChanges(),t.taskManagerService.subscribe(l.name,l.metadata,function(l){t.notificationService.notifyTask(l)})}).catch(function(){t.modalRef.content.stopLoadingSpinner()})},l.prototype.rollbackModal=function(){var l=this,n=this.selection.selected[0].name,e={titleText:this.i18n("RBD snapshot rollback"),buttonText:this.i18n("Rollback"),bodyTpl:this.rollbackTpl,bodyData:{snapName:this.poolName+"/"+this.rbdName+"@"+n},onSubmit:function(){l._asyncTask("rollbackSnapshot","rbd/snap/rollback",n)}};this.modalRef=this.modalService.show(y.a,{initialState:e})},l.prototype.deleteSnapshotModal=function(){var l=this,n=this.selection.selected[0].name;this.modalRef=this.modalService.show(C.a,{initialState:{itemDescription:this.i18n("RBD snapshot"),submitAction:function(){return l._asyncTask("deleteSnapshot","rbd/snap/delete",n)}}})},l.prototype.updateSelection=function(l){this.selection=l},l}(),x=e("DQlY"),M=e("Jm/i"),O=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function q(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-success"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["PROTECTED"]))],null,null)}function A(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-info"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["UNPROTECTED"]))],null,null)}function B(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,q)),t["\u0275did"](1,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,A)),t["\u0275did"](3,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)},null)}function j(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["You are about to rollback"])),(l()(),t["\u0275eld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](3,null,["",""])),(l()(),t["\u0275ted"](-1,null,[".\n"]))],null,function(l,n){l(n,3,0,n.context.$implicit.snapName)})}function U(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{nameTpl:0}),t["\u0275qud"](402653184,2,{protectTpl:0}),t["\u0275qud"](402653184,3,{rollbackTpl:0}),(l()(),t["\u0275eld"](3,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,e){var t=!0;return"updateSelection"===n&&(t=!1!==l.component.updateSelection(e)&&t),t},s.b,s.a)),t["\u0275did"](4,2867200,null,0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),t["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,c.b,c.a)),t["\u0275did"](6,114688,null,0,p.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["\u0275and"](0,[[2,2],["protectTpl",2]],null,0,null,B)),(l()(),t["\u0275and"](0,[[3,2],["rollbackTpl",2]],null,0,null,j))],function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex","single"),l(n,6,0,e.permission,e.selection,e.tableActions)},null)}var G=e("EFGL"),$=e("aAWM"),z=e("aXbf"),L=e("o8EM"),W=e("nSDx"),Y=e("o4+5"),X=e("JBea");e.d(n,"b",function(){return K}),e.d(n,"c",function(){return rl}),e.d(n,"a",function(){return dl});var K=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function J(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Only available for RBD images with "])),(l()(),t["\u0275eld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["fast-diff"])),(l()(),t["\u0275ted"](-1,null,[" enabled"]))],null,null)}function Z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["",""]))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function Q(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"span",[["class","text-muted"],["placement","right"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["\u0275ted"](-1,null,["N/A"]))],function(l,n){l(n,2,0,t["\u0275nov"](n.parent.parent,5),"right")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function H(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[" "," "])),t["\u0275ppd"](2,1)],null,function(l,n){var e=n.component,u=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),e.selectedItem.disk_usage));l(n,1,0,u)})}function ll(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"span",[["class","text-muted"],["placement","right"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["\u0275ted"](-1,null,["N/A"]))],function(l,n){l(n,2,0,t["\u0275nov"](n.parent.parent,5),"right")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function nl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[" "," "])),t["\u0275ppd"](2,1)],null,function(l,n){var e=n.component,u=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),e.selectedItem.total_disk_usage));l(n,1,0,u)})}function el(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[""," /"," @",""]))],null,function(l,n){var e=n.component;l(n,1,0,e.selectedItem.parent.pool_name,e.selectedItem.parent.image_name,e.selectedItem.parent.snap_name)})}function tl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["-"]))],null,null)}function ul(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,105,"tabset",[],[[2,"tab-container",null]],null,null,o.b,o.a)),t["\u0275did"](1,180224,null,0,a.d,[a.e,t.Renderer2],null,null),(l()(),t["\u0275eld"](2,0,null,0,94,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](3,212992,null,0,a.b,[a.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](4,0,null,null,92,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,91,"tbody",[],null,null,null,null,null)),(l()(),t["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](7,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Name"])),(l()(),t["\u0275eld"](9,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](10,null,["",""])),(l()(),t["\u0275eld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pool"])),(l()(),t["\u0275eld"](14,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](15,null,["",""])),(l()(),t["\u0275eld"](16,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Data Pool"])),(l()(),t["\u0275eld"](19,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](20,null,["",""])),t["\u0275ppd"](21,1),(l()(),t["\u0275eld"](22,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](23,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Created"])),(l()(),t["\u0275eld"](25,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](26,null,["",""])),t["\u0275ppd"](27,1),(l()(),t["\u0275eld"](28,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](29,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Size"])),(l()(),t["\u0275eld"](31,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](32,null,["",""])),t["\u0275ppd"](33,1),(l()(),t["\u0275eld"](34,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](35,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Objects"])),(l()(),t["\u0275eld"](37,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](38,null,["",""])),t["\u0275ppd"](39,1),(l()(),t["\u0275eld"](40,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](41,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Object size"])),(l()(),t["\u0275eld"](43,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](44,null,["",""])),t["\u0275ppd"](45,1),(l()(),t["\u0275eld"](46,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](47,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Features"])),(l()(),t["\u0275eld"](49,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,Z)),t["\u0275did"](51,278528,null,0,r.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275eld"](52,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](53,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Provisioned"])),(l()(),t["\u0275eld"](55,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,Q)),t["\u0275did"](57,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,H)),t["\u0275did"](59,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](60,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](61,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Total provisioned"])),(l()(),t["\u0275eld"](63,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,ll)),t["\u0275did"](65,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,nl)),t["\u0275did"](67,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](68,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](69,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Striping unit"])),(l()(),t["\u0275eld"](71,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](72,null,["",""])),t["\u0275ppd"](73,1),(l()(),t["\u0275eld"](74,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](75,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Striping count"])),(l()(),t["\u0275eld"](77,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](78,null,["",""])),(l()(),t["\u0275eld"](79,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](80,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Parent"])),(l()(),t["\u0275eld"](82,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,el)),t["\u0275did"](84,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,tl)),t["\u0275did"](86,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](87,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](88,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Block name prefix"])),(l()(),t["\u0275eld"](90,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](91,null,["",""])),(l()(),t["\u0275eld"](92,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](93,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Order"])),(l()(),t["\u0275eld"](95,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](96,null,["",""])),(l()(),t["\u0275eld"](97,0,null,0,4,"tab",[["heading","Snapshots"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](98,212992,null,0,a.b,[a.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](99,0,null,null,2,"cd-rbd-snapshot-list",[],null,null,null,U,O)),t["\u0275prd"](131584,null,m.a,m.a,[f.a,h.a]),t["\u0275did"](101,638976,null,0,P,[D.a,x.b,k.a,I.a,b.a,E.a,F.a,h.a,m.a,M.a],{snapshots:[0,"snapshots"],poolName:[1,"poolName"],rbdName:[2,"rbdName"]},null),(l()(),t["\u0275eld"](102,0,null,0,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](103,212992,null,0,a.b,[a.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](104,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,G.b,G.a)),t["\u0275did"](105,638976,null,0,$.a,[z.a,L.a,M.a],{data:[0,"data"]},null)],function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,51,0,e.selectedItem.features_name),l(n,57,0,-1===(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,59,0,-1!==(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,65,0,-1===(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,67,0,-1!==(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,84,0,e.selectedItem.parent),l(n,86,0,!e.selectedItem.parent),l(n,98,0,"Snapshots"),l(n,101,0,e.selectedItem.snapshots,e.selectedItem.pool_name,e.selectedItem.name),l(n,103,0,"Configuration"),l(n,105,0,e.selectedItem.configuration)},function(l,n){var e=n.component;l(n,0,0,t["\u0275nov"](n,1).clazz),l(n,2,0,t["\u0275nov"](n,3).id,t["\u0275nov"](n,3).active,t["\u0275nov"](n,3).addClass),l(n,10,0,e.selectedItem.name),l(n,15,0,e.selectedItem.pool_name);var u=t["\u0275unv"](n,20,0,l(n,21,0,t["\u0275nov"](n.parent,0),e.selectedItem.data_pool));l(n,20,0,u);var i=t["\u0275unv"](n,26,0,l(n,27,0,t["\u0275nov"](n.parent,1),e.selectedItem.timestamp));l(n,26,0,i);var o=t["\u0275unv"](n,32,0,l(n,33,0,t["\u0275nov"](n.parent,2),e.selectedItem.size));l(n,32,0,o);var a=t["\u0275unv"](n,38,0,l(n,39,0,t["\u0275nov"](n.parent,3),e.selectedItem.num_objs));l(n,38,0,a);var r=t["\u0275unv"](n,44,0,l(n,45,0,t["\u0275nov"](n.parent,2),e.selectedItem.obj_size));l(n,44,0,r);var s=t["\u0275unv"](n,72,0,l(n,73,0,t["\u0275nov"](n.parent,2),e.selectedItem.stripe_unit));l(n,72,0,s),l(n,78,0,e.selectedItem.stripe_count),l(n,91,0,e.selectedItem.block_name_prefix),l(n,96,0,e.selectedItem.order),l(n,97,0,t["\u0275nov"](n,98).id,t["\u0275nov"](n,98).active,t["\u0275nov"](n,98).addClass),l(n,102,0,t["\u0275nov"](n,103).id,t["\u0275nov"](n,103).active,t["\u0275nov"](n,103).addClass)})}function il(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"strong",[["tooltip","This setting overrides the global value"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"]},null),(l()(),t["\u0275ted"](-1,null,["Image"])),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,2,0,"This setting overrides the global value")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function ol(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,16777216,null,null,2,"span",[["tooltip","This is the global value. No value for this option has been set for this image."]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](1,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"]},null),(l()(),t["\u0275ted"](-1,null,["Global"])),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"This is the global value. No value for this option has been set for this image.")},function(l,n){l(n,0,0,t["\u0275nov"](n,1).ariaDescribedby)})}function al(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,il)),t["\u0275did"](1,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),t["\u0275and"](0,[["global",2]],null,0,null,ol))],function(l,n){l(n,1,0,n.context.value-0,t["\u0275nov"](n,2))},null)}function rl(l){return t["\u0275vid"](0,[t["\u0275pid"](0,W.a,[]),t["\u0275pid"](0,I.a,[r.DatePipe]),t["\u0275pid"](0,k.a,[z.a]),t["\u0275pid"](0,Y.a,[z.a]),t["\u0275qud"](402653184,1,{poolConfigurationSourceTpl:0}),(l()(),t["\u0275and"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,J)),(l()(),t["\u0275and"](16777216,null,null,1,null,ul)),t["\u0275did"](7,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,[[1,2],["poolConfigurationSourceTpl",2]],null,0,null,al))],function(l,n){var e=n.component;l(n,7,0,null==e.selection?null:e.selection.hasSingleSelection)},null)}function sl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-details",[],null,null,null,rl,K)),t["\u0275did"](1,573440,null,0,X.a,[],null,null)],null,null)}var dl=t["\u0275ccf"]("cd-rbd-details",X.a,sl,{selection:"selection",images:"images"},{},[])},L4us:function(l,n,e){"use strict";var t=e("gIcY"),u=(e("XED3"),e("QFaf")),i=e("kvvV"),o=(e("kn/O"),function(){return function(){}}());e.d(n,"a",function(){return a});var a=function(){function l(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.bsConfig={containerClass:"theme-default"},this.createForm()}return l.prototype.createForm=function(){this.editPeerForm=new u.a({clusterName:new t.i("",{validators:[t.A.required,this.validateClusterName]}),clientID:new t.i("",{validators:[t.A.required,this.validateClientID]}),monAddr:new t.i("",{validators:[this.validateMonAddr]}),key:new t.i("",{validators:[this.validateKey]})})},l.prototype.ngOnInit=function(){var l=this;this.pattern=this.poolName+"/"+this.peerUUID,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(function(n){l.setResponse(n)})},l.prototype.validateClusterName=function(l){if(!l.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:l.value}}},l.prototype.validateClientID=function(l){if(!l.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:l.value}}},l.prototype.validateMonAddr=function(l){if(!l.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:l.value}}},l.prototype.validateKey=function(l){try{if(""===l.value||atob(l.value))return null}catch(n){}return{invalidKey:{value:l.value}}},l.prototype.setResponse=function(l){this.response=l,this.editPeerForm.get("clusterName").setValue(l.cluster_name),this.editPeerForm.get("clientID").setValue(l.client_id),this.editPeerForm.get("monAddr").setValue(l.mon_host),this.editPeerForm.get("key").setValue(l.key)},l.prototype.update=function(){var l=this,n=new o;n.cluster_name=this.editPeerForm.getValue("clusterName"),n.client_id=this.editPeerForm.getValue("clientID"),n.mon_host=this.editPeerForm.getValue("monAddr"),n.key=this.editPeerForm.getValue("key"),this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new i.a("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,n)}:{task:new i.a("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,n)}).subscribe(void 0,function(){return l.editPeerForm.setErrors({cdSubmitButton:!0})},function(){l.rbdMirroringService.refresh(),l.modalRef.hide()})},l}()},MyVl:function(l,n,e){"use strict";var t,u=e("CcnG"),i=e("gIcY"),o=e("LvDl"),a=(e("Ekvf"),e("F83c"),e("sne2"),e("QFaf")),r=e("PhyI"),s=e("kvvV"),d=(e("Fgil"),e("aexS"),e("aXbf"),e("kn/O"),function(){return function(){this.features=[]}}()),c=function(){return function(){this.features=[]}}(),p=e("mrSG"),m=function(l){function n(){var n=null!==l&&l.apply(this,arguments)||this;return n.features=[],n}return p.__extends(n,l),n}(function(){return function(){}}()),f=function(){return function(){this.features=[]}}();!function(l){l.editing="editing",l.cloning="cloning",l.copying="copying"}(t||(t={})),e.d(n,"a",function(){return h});var h=function(){function l(l,n,e,i,o,a,r,s,d,c){this.authStorageService=l,this.route=n,this.poolService=e,this.rbdService=i,this.formatter=o,this.taskWrapper=a,this.dimlessBinaryPipe=r,this.i18n=s,this.actionLabels=d,this.router=c,this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=null,this.featuresList=[],this.initializeConfigData=new u.EventEmitter,this.advancedEnabled=!1,this.rbdFormMode=t,this.defaultObjectSize="4 MiB",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.poolPermission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("RBD"),this.features={"deep-flatten":{desc:this.i18n("Deep flatten"),requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:this.i18n("Layering"),requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:this.i18n("Exclusive lock"),requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:this.i18n("Object map (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},journaling:{desc:this.i18n("Journaling (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:this.i18n("Fast diff (interlocked with object-map)"),requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}return l.prototype.objToArray=function(l){return o.map(l,function(l,n){return Object.assign(l,{key:n})})},l.prototype.createForm=function(){this.rbdForm=new a.a({parent:new i.i(""),name:new i.i("",{validators:[i.A.required,i.A.pattern(/^[^@\/]+?$/)]}),pool:new i.i(null,{validators:[i.A.required]}),useDataPool:new i.i(!1),dataPool:new i.i(null),size:new i.i(null,{updateOn:"blur"}),obj_size:new i.i(this.defaultObjectSize),features:new a.a(this.featuresList.reduce(function(l,n){return l[n.key]=new i.i({value:!1,disabled:!!n.initDisabled}),l},{})),stripingUnit:new i.i(null),stripingCount:new i.i(null,{updateOn:"blur"})},this.validateRbdForm(this.formatter))},l.prototype.disableForEdit=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable()},l.prototype.disableForClone=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()},l.prototype.disableForCopy=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()},l.prototype.ngOnInit=function(){var l=this;this.router.url.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):this.router.url.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):this.router.url.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,this.mode===this.rbdFormMode.editing||this.mode===this.rbdFormMode.cloning||this.mode===this.rbdFormMode.copying?this.route.params.subscribe(function(n){var e=decodeURIComponent(n.pool),t=decodeURIComponent(n.name);n.snap&&(l.snapName=decodeURIComponent(n.snap)),l.rbdService.get(e,t).subscribe(function(n){l.setResponse(n,l.snapName)})}):this.rbdService.defaultFeatures().subscribe(function(n){l.setFeatures(n)}),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&this.poolService.list(["pool_name","type","flags_names","application_metadata"]).then(function(n){for(var e=[],t=[],u=0,i=n;u<i.length;u++){var a=i[u];-1!==o.indexOf(a.application_metadata,"rbd")&&(a.pool_name.includes("/")||("replicated"===a.type?(e.push(a),t.push(a)):"erasure"===a.type&&-1!==a.flags_names.indexOf("ec_overwrites")&&t.push(a)))}if(l.pools=e,l.allPools=e,l.dataPools=t,l.allDataPools=t,1===l.pools.length){var r=l.pools[0].pool_name;l.rbdForm.get("pool").setValue(r),l.onPoolChange(r)}}),o.each(this.features,function(n){l.rbdForm.get("features").get(n.key).valueChanges.subscribe(function(e){return l.featureFormUpdate(n.key,e)})})},l.prototype.onPoolChange=function(l){var n=this.allDataPools.filter(function(n){return n.pool_name!==l});this.rbdForm.getValue("dataPool")===l&&this.rbdForm.get("dataPool").setValue(null),this.dataPools=n},l.prototype.onUseDataPoolChange=function(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))},l.prototype.onDataPoolChange=function(l){var n=this.allPools.filter(function(n){return n.pool_name!==l});this.rbdForm.getValue("pool")===l&&this.rbdForm.get("pool").setValue(null),this.pools=n},l.prototype.validateRbdForm=function(l){var n=this;return function(e){var t=e.get("useDataPool"),u=e.get("dataPool"),i=null;t.value&&null==u.value&&(i={required:!0}),u.setErrors(i);var o=e.get("size"),a=e.get("obj_size"),r=l.toBytes(null!=a.value?a.value:n.defaultObjectSize),s=e.get("stripingCount"),d=null!=s.value?s.value:1,c=null;null===o.value?c={required:!0}:d*r>l.toBytes(o.value)&&(c={invalidSizeObject:!0}),o.setErrors(c);var p=e.get("stripingUnit"),m=null;null===p.value&&null!==s.value?m={required:!0}:null!==p.value&&l.toBytes(p.value)>r&&(m={invalidStripingUnit:!0}),p.setErrors(m);var f=null;return null===s.value&&null!==p.value?f={required:!0}:d<1&&(f={min:!0}),s.setErrors(f),null}},l.prototype.getDependendChildFeatures=function(l){return o.filter(this.features,function(n){return n.requires===l})||[]},l.prototype.deepBoxCheck=function(l,n){var e=this;this.getDependendChildFeatures(l).forEach(function(l){var t=e.rbdForm.get(l.key);n?t.enable({emitEvent:!1}):(t.disable({emitEvent:!1}),t.setValue(!1,{emitEvent:!1}),e.deepBoxCheck(l.key,n));var u=e.rbdForm.get("features");e.mode===e.rbdFormMode.editing&&u.get(l.key).enabled&&((-1===e.response.features_name.indexOf(l.key)||l.allowDisable)&&(-1!==e.response.features_name.indexOf(l.key)||l.allowEnable)||u.get(l.key).disable())})},l.prototype.interlockCheck=function(l,n){var e=this,t=this.featuresList.find(function(n){return n.key===l});if(this.response){var u=null!=t.interlockedWith,i=this.featuresList.find(function(l){return l.interlockedWith===t.key}),a=!!this.response.features_name.find(function(l){return l===t.key});if(u){if(a!==!!this.response.features_name.find(function(l){return l===t.interlockedWith}))return}else if(i&&!!this.response.features_name.find(function(l){return l===i.key})!==a)return}n?o.filter(this.features,function(n){return n.interlockedWith===l}).forEach(function(l){return e.rbdForm.get(l.key).setValue(!0,{emitEvent:!1})}):t.interlockedWith&&this.rbdForm.get("features").get(t.interlockedWith).setValue(!1)},l.prototype.featureFormUpdate=function(l,n){if(n){var e=this.features[l].requires;if(e&&!this.rbdForm.getValue(e))return void this.rbdForm.get("features."+l).setValue(!1)}this.deepBoxCheck(l,n),this.interlockCheck(l,n)},l.prototype.setFeatures=function(l){var n=this,e=this.rbdForm.get("features");o.forIn(this.features,function(t){-1!==l.indexOf(t.key)&&e.get(t.key).setValue(!0),n.featureFormUpdate(t.key,e.get(t.key).value)})},l.prototype.setResponse=function(l,n){if(this.response=l,this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name+"@"+n);else if(this.mode===this.rbdFormMode.copying)n?this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name+"@"+n):this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name);else if(l.parent){var e=l.parent;this.rbdForm.get("parent").setValue(e.pool_name+"/"+e.image_name+"@"+e.snap_name)}this.mode===this.rbdFormMode.editing&&this.rbdForm.get("name").setValue(l.name),this.rbdForm.get("pool").setValue(l.pool_name),l.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(l.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(l.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(l.obj_size)),this.setFeatures(l.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(l.stripe_unit)),this.rbdForm.get("stripingCount").setValue(l.stripe_count),this.initializeConfigData.emit({initialData:this.response.configuration,sourceType:r.a.image})},l.prototype.createRequest=function(){var l=this,n=new m;return n.pool_name=this.rbdForm.getValue("pool"),n.name=this.rbdForm.getValue("name"),n.size=this.formatter.toBytes(this.rbdForm.getValue("size")),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(),n},l.prototype.createAction=function(){var l=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new s.a("rbd/create",{pool_name:l.pool_name,image_name:l.name}),call:this.rbdService.create(l)})},l.prototype.editRequest=function(){var l=this,n=new f;return n.name=this.rbdForm.getValue("name"),n.size=this.formatter.toBytes(this.rbdForm.getValue("size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.configuration=this.getDirtyConfigurationValues(),n},l.prototype.cloneRequest=function(){var l=this,n=new d;return n.child_pool_name=this.rbdForm.getValue("pool"),n.child_image_name=this.rbdForm.getValue("name"),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(!0,r.a.image),n},l.prototype.editAction=function(){return this.taskWrapper.wrapTaskAroundCall({task:new s.a("rbd/edit",{pool_name:this.response.pool_name,image_name:this.response.name}),call:this.rbdService.update(this.response.pool_name,this.response.name,this.editRequest())})},l.prototype.cloneAction=function(){var l=this.cloneRequest();return this.taskWrapper.wrapTaskAroundCall({task:new s.a("rbd/clone",{parent_pool_name:this.response.pool_name,parent_image_name:this.response.name,parent_snap_name:this.snapName,child_pool_name:l.child_pool_name,child_image_name:l.child_image_name}),call:this.rbdService.cloneSnapshot(this.response.pool_name,this.response.name,this.snapName,l)})},l.prototype.copyRequest=function(){var l=this,n=new c;return this.snapName&&(n.snapshot_name=this.snapName),n.dest_pool_name=this.rbdForm.getValue("pool"),n.dest_image_name=this.rbdForm.getValue("name"),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(!0,r.a.image),n},l.prototype.copyAction=function(){var l=this.copyRequest();return this.taskWrapper.wrapTaskAroundCall({task:new s.a("rbd/copy",{src_pool_name:this.response.pool_name,src_image_name:this.response.name,dest_pool_name:l.dest_pool_name,dest_image_name:l.dest_image_name}),call:this.rbdService.copy(this.response.pool_name,this.response.name,l)})},l.prototype.submit=function(){var l=this;(this.mode===this.rbdFormMode.editing?this.editAction():this.mode===this.rbdFormMode.cloning?this.cloneAction():this.mode===this.rbdFormMode.copying?this.copyAction():this.createAction()).subscribe(void 0,function(){return l.rbdForm.setErrors({cdSubmitButton:!0})},function(){return l.router.navigate(["/block/rbd"])})},l}()},OcYo:function(l,n,e){"use strict";e.d(n,"a",function(){return t});var t=function(){function l(l,n,e){this.elementRef=l,this.renderer=n,this.toastr=e}return l.prototype.ngOnInit=function(){var l=this.renderer.createElement("i");this.renderer.addClass(l,"icon-prepend"),this.renderer.addClass(l,"fa"),this.renderer.addClass(l,"fa-clipboard"),this.renderer.appendChild(this.elementRef.nativeElement,l)},l.prototype.getInputElement=function(){return document.getElementById(this.cdCopy2ClipboardButton)},l.prototype.onClick=function(){try{var l=document.createElement("input");l.value=this.getInputElement().value,document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),this.toastr.success("Copied text to the clipboard successfully.")}catch(n){this.toastr.error("Failed to copy text to the clipboard.")}},l}()},PhyI:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e.d(n,"b",function(){return u});var t=function(l){return l[l.global=0]="global",l[l.pool=1]="pool",l[l.image=2]="image",l}({}),u=function(l){return l[l.bps=0]="bps",l[l.iops=1]="iops",l[l.milliseconds=2]="milliseconds",l}({})},RIVN:function(l,n,e){"use strict";var t=e("CcnG"),u=e("C6Ij"),i=e("AWcq"),o=e("Ip0R"),a=function(){function l(){}return l.prototype.transform=function(l){return"warning"===l?"label label-warning":"error"===l?"label label-danger":"success"===l?"label label-success":"label label-info"},l}(),r=e("25BL"),s=e("uIqm"),d=e("XED3"),c=e("85J/"),p=function(){function l(l,n,e){this.rbdMirroringService=l,this.cephShortVersionPipe=n,this.i18n=e}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{prop:"instance_id",name:this.i18n("Instance"),flexGrow:2},{prop:"id",name:this.i18n("ID"),flexGrow:2},{prop:"server_hostname",name:this.i18n("Hostname"),flexGrow:2},{prop:"version",name:this.i18n("Version"),pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.data=n.content_data.daemons)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l}(),m=e("Jm/i"),f=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.health_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function g(l){return t["\u0275vid"](0,[t["\u0275pid"](0,a,[]),t["\u0275qud"](402653184,1,{healthTmpl:0}),(l()(),t["\u0275eld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},r.b,r.a)),t["\u0275did"](3,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275and"](0,[[1,2],["healthTmpl",2]],null,0,null,h))],function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",0)},null)}var v=e("NUGo"),b=e("S7zO"),y=e("6blF"),C=e("0+/T"),_=e("vCyI"),w=e("kvvV"),S=e("aexS"),R=e("kn/O"),I=e("aa9H"),k=e("L4us"),D=function(){function l(l,n,e,t,u){var i=this;this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.taskWrapper=t,this.i18n=u,this.selection=new _.a,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;var o={permission:"update",icon:"fa-edit",click:function(){return i.editModeModal()},name:this.i18n("Edit Mode"),canBePrimary:function(){return!0}},a={permission:"create",icon:"fa-plus",name:this.i18n("Add Peer"),click:function(){return i.editPeersModal("add")},disable:function(){return!i.selection.first()||"disabled"===i.selection.first().mirror_mode},visible:function(){return!i.getPeerUUID()},canBePrimary:function(){return!1}},r={permission:"update",icon:"fa-exchange",name:this.i18n("Edit Peer"),click:function(){return i.editPeersModal("edit")},visible:function(){return!!i.getPeerUUID()}},s={permission:"delete",icon:"fa-times",name:this.i18n("Delete Peer"),click:function(){return i.deletePeersModal()},visible:function(){return!!i.getPeerUUID()}};this.tableActions=[o,a,r,s]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{prop:"name",name:this.i18n("Name"),flexGrow:2},{prop:"mirror_mode",name:this.i18n("Mode"),flexGrow:2},{prop:"leader_id",name:this.i18n("Leader"),flexGrow:2},{prop:"image_local_count",name:this.i18n("# Local"),flexGrow:2},{prop:"image_remote_count",name:this.i18n("# Remote"),flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.data=n.content_data.pools)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l.prototype.editModeModal=function(){var l={poolName:this.selection.first().name};this.modalRef=this.modalService.show(I.a,{initialState:l})},l.prototype.editPeersModal=function(l){var n={poolName:this.selection.first().name,mode:l};"edit"===l&&(n.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(k.a,{initialState:n})},l.prototype.deletePeersModal=function(){var l=this,n=this.selection.first().name,e=this.getPeerUUID();this.modalRef=this.modalService.show(C.a,{initialState:{itemDescription:this.i18n("mirror peer"),submitActionObservable:function(){return new y.a(function(t){l.taskWrapper.wrapTaskAroundCall({task:new w.a("rbd/mirroring/peer/delete",{pool_name:n}),call:l.rbdMirroringService.deletePeer(n,e)}).subscribe(void 0,function(l){return t.error(l)},function(){l.rbdMirroringService.refresh(),t.complete()})})}}})},l.prototype.getPeerUUID=function(){var l=this.selection.first(),n=this.data.find(function(n){return l&&l.name===n.name});if(n&&n.peer_uuids)return n.peer_uuids[0]},l.prototype.updateSelection=function(l){this.selection=l},l}(),F=e("DQlY"),E=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function T(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.health_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function N(l){return t["\u0275vid"](0,[t["\u0275pid"](0,a,[]),t["\u0275qud"](402653184,1,{healthTmpl:0}),(l()(),t["\u0275eld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,e){var t=!0,u=l.component;return"fetchData"===n&&(t=!1!==u.refresh()&&t),"updateSelection"===n&&(t=!1!==u.updateSelection(e)&&t),t},r.b,r.a)),t["\u0275did"](3,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),t["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,v.b,v.a)),t["\u0275did"](5,114688,null,0,b.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["\u0275and"](0,[[1,2],["healthTmpl",2]],null,0,null,T))],function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",0,"name","true","single"),l(n,5,0,e.permission,e.selection,e.tableActions)},null)}var V=e("Da1D"),P=t["\u0275crt"]({encapsulation:2,styles:[],data:{}});function x(l){return t["\u0275vid"](0,[t["\u0275ncd"](null,0)],null,null)}var M=t["\u0275crt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function O(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[8,"className",0],[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","%"]],null,null,x,P)),t["\u0275did"](1,245760,null,0,V.a,[V.b],{type:[0,"type"],value:[1,"value"]},null),t["\u0275ncd"](0,0)],function(l,n){var e=n.component;l(n,1,0,e.type,e._value)},function(l,n){l(n,0,0,"progress-bar "+(t["\u0275nov"](n,1).type?"progress-bar-"+t["\u0275nov"](n,1).type+" bg-"+t["\u0275nov"](n,1).type:""),!t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).striped,t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).value,t["\u0275nov"](n,1).percent?t["\u0275nov"](n,1).percent.toFixed(0)+"%":"",t["\u0275nov"](n,1).max,"100",t["\u0275nov"](n,1).setBarWidth)})}function q(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[8,"className",0],[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","%"]],null,null,x,P)),t["\u0275did"](1,245760,null,0,V.a,[V.b],{type:[0,"type"],value:[1,"value"]},null),(l()(),t["\u0275ted"](2,0,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.value)},function(l,n){l(n,0,0,"progress-bar "+(t["\u0275nov"](n,1).type?"progress-bar-"+t["\u0275nov"](n,1).type+" bg-"+t["\u0275nov"](n,1).type:""),!t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).striped,t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).value,t["\u0275nov"](n,1).percent?t["\u0275nov"](n,1).percent.toFixed(0)+"%":"",t["\u0275nov"](n,1).max,"100",t["\u0275nov"](n,1).setBarWidth),l(n,2,0,n.context.$implicit.label)})}function A(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,q)),t["\u0275did"](1,278528,null,0,o.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.component._value)},null)}function B(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,O)),t["\u0275did"](1,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,A)),t["\u0275did"](3,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,1,0,!e.isStacked),l(n,3,0,e.isStacked)},null)}var j=e("pKUh"),U=e("YAQW"),G=function(){function l(l,n){this.rbdMirroringService=l,this.i18n=n,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}}}return l.prototype.ngOnInit=function(){var l=this;this.image_error.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Issue"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.image_syncing.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"progress",name:this.i18n("Progress"),cellTemplate:this.progressTmpl,flexGrow:2},{prop:"state",name:this.i18n("State"),cellTemplate:this.syncTmpl,flexGrow:1}],this.image_ready.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Description"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.image_error.data=n.content_data.image_error,l.image_syncing.data=n.content_data.image_syncing,l.image_ready.data=n.content_data.image_ready)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l}(),$=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.state_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function L(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-info"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Syncing"]))],null,null)}function W(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"progressbar",[["type","info"]],[[1,"max",0],[2,"progress",null]],null,null,B,M)),t["\u0275did"](1,49152,null,0,V.b,[V.c],{type:[0,"type"],value:[1,"value"]},null)],function(l,n){l(n,1,0,"info",n.context.value)},function(l,n){l(n,0,0,t["\u0275nov"](n,1).max,t["\u0275nov"](n,1).addClass)})}function Y(l){return t["\u0275vid"](0,[t["\u0275pid"](0,a,[]),t["\u0275qud"](402653184,1,{stateTmpl:0}),t["\u0275qud"](402653184,2,{syncTmpl:0}),t["\u0275qud"](402653184,3,{progressTmpl:0}),(l()(),t["\u0275eld"](4,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,j.b,j.a)),t["\u0275did"](5,180224,null,0,U.d,[U.e,t.Renderer2],null,null),(l()(),t["\u0275eld"](6,0,null,0,3,"tab",[["heading","Issues"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](7,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](8,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},r.b,r.a)),t["\u0275did"](9,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275eld"](10,0,null,0,3,"tab",[["heading","Syncing"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](11,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](12,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},r.b,r.a)),t["\u0275did"](13,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275eld"](14,0,null,0,3,"tab",[["heading","Ready"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](15,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](16,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},r.b,r.a)),t["\u0275did"](17,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275and"](0,[[1,2],["stateTmpl",2]],null,0,null,z)),(l()(),t["\u0275and"](0,[[2,2],["syncTmpl",2]],null,0,null,L)),(l()(),t["\u0275and"](0,[[3,2],["progressTmpl",2]],null,0,null,W))],function(l,n){var e=n.component;l(n,7,0,"Issues"),l(n,9,0,e.image_error.data,e.image_error.columns,"flex",0),l(n,11,0,"Syncing"),l(n,13,0,e.image_syncing.data,e.image_syncing.columns,"flex",0),l(n,15,0,"Ready"),l(n,17,0,e.image_ready.data,e.image_ready.columns,"flex",0)},function(l,n){l(n,4,0,t["\u0275nov"](n,5).clazz),l(n,6,0,t["\u0275nov"](n,7).id,t["\u0275nov"](n,7).active,t["\u0275nov"](n,7).addClass),l(n,10,0,t["\u0275nov"](n,11).id,t["\u0275nov"](n,11).active,t["\u0275nov"](n,11).addClass),l(n,14,0,t["\u0275nov"](n,15).id,t["\u0275nov"](n,15).active,t["\u0275nov"](n,15).addClass)})}var X=e("cxJu");e.d(n,"a",function(){return Q});var K=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function J(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,u.b,u.a)),t["\u0275did"](1,114688,null,0,i.a,[],{status:[0,"status"]},null),(l()(),t["\u0275eld"](2,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Daemons"])),(l()(),t["\u0275eld"](6,0,null,null,1,"cd-mirroring-daemons",[],null,null,null,g,f)),t["\u0275did"](7,245760,null,0,p,[d.a,c.a,m.a],null,null),(l()(),t["\u0275eld"](8,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pools"])),(l()(),t["\u0275eld"](11,0,null,null,1,"cd-mirroring-pools",[],null,null,null,N,E)),t["\u0275did"](12,245760,null,0,D,[S.a,d.a,F.b,R.a,m.a],null,null),(l()(),t["\u0275eld"](13,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](14,0,null,null,4,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](15,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Images"])),(l()(),t["\u0275eld"](17,0,null,null,1,"cd-mirroring-images",[],null,null,null,Y,$)),t["\u0275did"](18,245760,null,0,G,[d.a,m.a],null,null)],function(l,n){l(n,1,0,n.component.status),l(n,7,0),l(n,12,0),l(n,18,0)},null)}function Z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-mirroring",[],null,null,null,J,K)),t["\u0275did"](1,245760,null,0,X.a,[d.a],null,null)],function(l,n){l(n,1,0)},null)}var Q=t["\u0275ccf"]("cd-mirroring",X.a,Z,{},{},[])},Sofw:function(l,n,e){"use strict";e.d(n,"a",function(){return a});var t=e("gIcY"),u=(e("my5R"),e("mtw6")),i=e("QFaf"),o=e("1Ni5"),a=(e("aexS"),e("9nlD"),function(){function l(l,n,e,t,u){this.authStorageService=l,this.bsModalRef=n,this.iscsiService=e,this.notificationService=t,this.i18n=u,this.USER_REGEX=/[\w\.:@_-]{8,64}/,this.PASSWORD_REGEX=/[\w@\-_\/]{12,16}/,this.permission=this.authStorageService.getPermissions().iscsi}return l.prototype.ngOnInit=function(){var l=this;this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(function(n){l.discoveryForm.patchValue(n)})},l.prototype.createForm=function(){var l=this;this.discoveryForm=new i.a({user:new t.i({value:"",disabled:!this.hasPermission}),password:new t.i({value:"",disabled:!this.hasPermission}),mutual_user:new t.i({value:"",disabled:!this.hasPermission}),mutual_password:new t.i({value:"",disabled:!this.hasPermission})}),o.a.validateIf(this.discoveryForm.get("user"),function(){return l.discoveryForm.getValue("password")||l.discoveryForm.getValue("mutual_user")||l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("password"),function(){return l.discoveryForm.getValue("user")||l.discoveryForm.getValue("mutual_user")||l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("mutual_user"),function(){return l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("mutual_password"),function(){return l.discoveryForm.getValue("mutual_user")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])},l.prototype.submitAction=function(){var l=this;this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(function(){l.notificationService.show(u.a.success,l.i18n("Updated discovery authentication")),l.bsModalRef.hide()},function(){l.bsModalRef.hide()})},l}())},Ur3J:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("gIcY"),o=e("IZUe"),a=e("gp3X"),r=e("sb0X"),s=e("KVJa"),d=e("Z21x"),c=e("sne2"),p=e("+lcs"),m=e("DQlY"),f=e("F83c"),h=e("VXsX"),g=e("9nlD");e.d(n,"a",function(){return I});var v=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Rename"]))],null,null)}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Create"]))],null,null)}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Rename"]))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Create"]))],null,null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,11,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,7,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](3,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](7,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" RBD Snapshot"])),(l()(),t["\u0275eld"](9,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.modalRef.hide()&&t),t},null,null)),(l()(),t["\u0275eld"](10,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["\xd7"])),(l()(),t["\u0275eld"](12,0,null,null,35,"form",[["class","form-horizontal"],["name","snapshotForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,14).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,14).onReset()&&u),u},null,null)),t["\u0275did"](13,16384,null,0,i.D,[],null,null),t["\u0275did"](14,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,i.d,null,[i.l]),t["\u0275did"](16,16384,null,0,i.s,[[4,i.d]],null,null),(l()(),t["\u0275eld"](17,0,null,null,17,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](19,278528,null,0,u.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](20,{"has-error":0}),(l()(),t["\u0275eld"](21,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","snapshotName"]],null,null,null,null,null)),(l()(),t["\u0275eld"](22,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Name"])),(l()(),t["\u0275eld"](24,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](25,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),t["\u0275eld"](26,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","snapshotName"],["id","snapshotName"],["name","snapshotName"],["placeholder","Snapshot 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,27)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,27)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,27)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](27,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["\u0275prd"](1024,null,i.p,function(l){return[l]},[i.e]),t["\u0275did"](29,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,i.q,null,[i.j]),t["\u0275did"](31,16384,null,0,i.r,[[4,i.q]],null,null),t["\u0275did"](32,4210688,null,0,o.a,[t.ElementRef],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](34,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](35,0,null,null,12,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](36,0,null,null,11,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](37,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t},a.b,a.a)),t["\u0275did"](38,114688,null,0,r.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275eld"](39,0,null,0,5,null,null,null,null,null,null,null)),t["\u0275did"](40,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](42,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](44,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,0,[" Snapshot"])),(l()(),t["\u0275eld"](46,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,s.b,s.a)),t["\u0275did"](47,49152,null,0,d.a,[u.Location,c.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,3,0,e.editing),l(n,5,0,"true"),l(n,14,0,e.snapshotForm);var u=l(n,20,0,e.snapshotForm.showError("snapshotName",t["\u0275nov"](n,14)));l(n,19,0,"form-group",u),l(n,29,0,"snapshotName"),l(n,34,0,e.snapshotForm.showError("snapshotName",t["\u0275nov"](n,14),"required")),l(n,38,0,e.snapshotForm),l(n,40,0,e.editing),l(n,42,0,"true"),l(n,47,0,"Close",e.modalRef.hide)},function(l,n){l(n,12,0,t["\u0275nov"](n,16).ngClassUntouched,t["\u0275nov"](n,16).ngClassTouched,t["\u0275nov"](n,16).ngClassPristine,t["\u0275nov"](n,16).ngClassDirty,t["\u0275nov"](n,16).ngClassValid,t["\u0275nov"](n,16).ngClassInvalid,t["\u0275nov"](n,16).ngClassPending),l(n,26,0,t["\u0275nov"](n,31).ngClassUntouched,t["\u0275nov"](n,31).ngClassTouched,t["\u0275nov"](n,31).ngClassPristine,t["\u0275nov"](n,31).ngClassDirty,t["\u0275nov"](n,31).ngClassValid,t["\u0275nov"](n,31).ngClassInvalid,t["\u0275nov"](n,31).ngClassPending)})}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-snapshot-form",[],null,null,null,S,v)),t["\u0275did"](1,114688,null,0,p.a,[m.a,f.a,h.a,g.a],null,null)],function(l,n){l(n,1,0)},null)}var I=t["\u0275ccf"]("cd-rbd-snapshot-form",p.a,R,{},{},[])},VBM6:function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("Ip0R"),a=e("gIcY"),r=e("IZUe"),s=e("gp3X"),d=e("sb0X"),c=e("KVJa"),p=e("Z21x"),m=e("sne2"),f=e("L4us"),h=e("DQlY"),g=e("XED3"),v=e("kn/O");e.d(n,"a",function(){return N});var b=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Edit"]))],null,null)}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Add"]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Edit"]))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Add"]))],null,null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The cluster name is not valid."]))],null,null)}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The CephX ID is not valid."]))],null,null)}function D(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The monitory address is not valid."]))],null,null)}function F(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX key must be base64 encoded."]))],null,null)}function E(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,101,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](4,16384,null,0,o.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](6,278528,null,0,o.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](8,16384,null,0,o.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" pool mirror peer"])),(l()(),t["\u0275eld"](10,0,null,1,91,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,90,"form",[["class","form"],["name","editPeerForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,13).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,13).onReset()&&u),u},null,null)),t["\u0275did"](12,16384,null,0,a.D,[],null,null),t["\u0275did"](13,540672,[["formDir",4]],0,a.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,a.d,null,[a.l]),t["\u0275did"](15,16384,null,0,a.s,[[4,a.d]],null,null),(l()(),t["\u0275eld"](16,0,null,null,78,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,14,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,13,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](20,16384,null,0,o.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](22,278528,null,0,o.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](24,16384,null,0,o.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" the pool mirror peer attributes for pool "])),(l()(),t["\u0275eld"](26,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](27,null,["",""])),(l()(),t["\u0275ted"](-1,null,[" and click "])),(l()(),t["\u0275eld"](29,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Submit"])),(l()(),t["\u0275ted"](-1,null,["."])),(l()(),t["\u0275eld"](32,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](33,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](34,{"has-error":0}),(l()(),t["\u0275eld"](35,0,null,null,3,"label",[["class","control-label"],["for","clusterName"]],null,null,null,null,null)),(l()(),t["\u0275eld"](36,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Cluster Name"])),(l()(),t["\u0275eld"](38,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","clusterName"],["id","clusterName"],["name","clusterName"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,41)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,41).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,41)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,41)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](40,4210688,null,0,r.a,[t.ElementRef],null,null),t["\u0275did"](41,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](43,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](45,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](47,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,R)),t["\u0275did"](49,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](50,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](51,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](52,{"has-error":0}),(l()(),t["\u0275eld"](53,0,null,null,3,"label",[["class","control-label"],["for","clientID"]],null,null,null,null,null)),(l()(),t["\u0275eld"](54,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX ID"])),(l()(),t["\u0275eld"](56,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](57,0,null,null,5,"input",[["class","form-control"],["formControlName","clientID"],["id","clientID"],["name","clientID"],["placeholder","CephX 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,58)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,58).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,58)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,58)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](58,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](60,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](62,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,I)),t["\u0275did"](64,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,k)),t["\u0275did"](66,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](67,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](68,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](69,{"has-error":0}),(l()(),t["\u0275eld"](70,0,null,null,2,"label",[["class","control-label"],["for","monAddr"]],null,null,null,null,null)),(l()(),t["\u0275eld"](71,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Monitor Addresses"])),(l()(),t["\u0275eld"](73,0,null,null,5,"input",[["class","form-control"],["formControlName","monAddr"],["id","monAddr"],["name","monAddr"],["placeholder","Comma-delimited addresses..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,74)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,74).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](74,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](76,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](78,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,D)),t["\u0275did"](80,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](81,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](82,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](83,{"has-error":0}),(l()(),t["\u0275eld"](84,0,null,null,2,"label",[["class","control-label"],["for","key"]],null,null,null,null,null)),(l()(),t["\u0275eld"](85,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX Key"])),(l()(),t["\u0275eld"](87,0,null,null,5,"input",[["class","form-control"],["formControlName","key"],["id","key"],["name","key"],["placeholder","Base64-encoded key..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,88)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,88).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,88)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,88)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](88,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](90,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](92,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,F)),t["\u0275did"](94,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](95,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](96,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](97,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t},s.b,s.a)),t["\u0275did"](98,114688,null,0,d.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Submit"])),(l()(),t["\u0275eld"](100,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),t["\u0275did"](101,49152,null,0,p.a,[o.Location,m.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,4,0,e.mode),l(n,6,0,"edit"),l(n,13,0,e.editPeerForm),l(n,20,0,e.mode),l(n,22,0,"edit");var u=l(n,34,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13)));l(n,33,0,"form-group",u),l(n,43,0,"clusterName"),l(n,47,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13),"required")),l(n,49,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13),"invalidClusterName"));var i=l(n,52,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13)));l(n,51,0,"form-group",i),l(n,60,0,"clientID"),l(n,64,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13),"required")),l(n,66,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13),"invalidClientID"));var o=l(n,69,0,e.editPeerForm.showError("monAddr",t["\u0275nov"](n,13)));l(n,68,0,"form-group",o),l(n,76,0,"monAddr"),l(n,80,0,e.editPeerForm.showError("monAddr",t["\u0275nov"](n,13),"invalidMonAddr"));var a=l(n,83,0,e.editPeerForm.showError("key",t["\u0275nov"](n,13)));l(n,82,0,"form-group",a),l(n,90,0,"key"),l(n,94,0,e.editPeerForm.showError("key",t["\u0275nov"](n,13),"invalidKey")),l(n,98,0,e.editPeerForm),l(n,101,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,11,0,t["\u0275nov"](n,15).ngClassUntouched,t["\u0275nov"](n,15).ngClassTouched,t["\u0275nov"](n,15).ngClassPristine,t["\u0275nov"](n,15).ngClassDirty,t["\u0275nov"](n,15).ngClassValid,t["\u0275nov"](n,15).ngClassInvalid,t["\u0275nov"](n,15).ngClassPending),l(n,27,0,e.poolName),l(n,39,0,t["\u0275nov"](n,45).ngClassUntouched,t["\u0275nov"](n,45).ngClassTouched,t["\u0275nov"](n,45).ngClassPristine,t["\u0275nov"](n,45).ngClassDirty,t["\u0275nov"](n,45).ngClassValid,t["\u0275nov"](n,45).ngClassInvalid,t["\u0275nov"](n,45).ngClassPending),l(n,57,0,t["\u0275nov"](n,62).ngClassUntouched,t["\u0275nov"](n,62).ngClassTouched,t["\u0275nov"](n,62).ngClassPristine,t["\u0275nov"](n,62).ngClassDirty,t["\u0275nov"](n,62).ngClassValid,t["\u0275nov"](n,62).ngClassInvalid,t["\u0275nov"](n,62).ngClassPending),l(n,73,0,t["\u0275nov"](n,78).ngClassUntouched,t["\u0275nov"](n,78).ngClassTouched,t["\u0275nov"](n,78).ngClassPristine,t["\u0275nov"](n,78).ngClassDirty,t["\u0275nov"](n,78).ngClassValid,t["\u0275nov"](n,78).ngClassInvalid,t["\u0275nov"](n,78).ngClassPending),l(n,87,0,t["\u0275nov"](n,92).ngClassUntouched,t["\u0275nov"](n,92).ngClassTouched,t["\u0275nov"](n,92).ngClassPristine,t["\u0275nov"](n,92).ngClassDirty,t["\u0275nov"](n,92).ngClassValid,t["\u0275nov"](n,92).ngClassInvalid,t["\u0275nov"](n,92).ngClassPending)})}function T(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-pool-edit-peer-modal",[],null,null,null,E,b)),t["\u0275did"](1,114688,null,0,f.a,[h.a,g.a,v.a],null,null)],function(l,n){l(n,1,0)},null)}var N=t["\u0275ccf"]("cd-pool-edit-peer-modal",f.a,T,{},{},[])},WxU5:function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e("Ekvf"),e("F83c"),e("2EZI");var t=e("kvvV"),u=(e("aexS"),e("kn/O"),function(){function l(l,n,e,t,u,i){this.authStorageService=l,this.rbdService=n,this.modalRef=e,this.fb=t,this.poolService=u,this.taskWrapper=i,this.poolPermission=this.authStorageService.getPermissions().pool}return l.prototype.createForm=function(){this.purgeForm=this.fb.group({poolName:""})},l.prototype.ngOnInit=function(){var l=this;this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(function(n){l.pools=n.filter(function(l){return l.application_metadata.includes("rbd")}).map(function(l){return l.pool_name})}),this.createForm()},l.prototype.purge=function(){var l=this,n=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/purge",{pool_name:n}),call:this.rbdService.purgeTrash(n)}).subscribe(void 0,function(){l.purgeForm.setErrors({cdSubmitButton:!0})},function(){l.modalRef.hide()})},l}())},XED3:function(l,n,e){"use strict";e.d(n,"a",function(){return a});var t=e("26FU"),u=e("CcnG"),i=e("t/Na"),o=e("pL04"),a=function(){function l(l,n){this.http=l,this.ngZone=n,this.summaryDataSource=new t.a(null),this.summaryData$=this.summaryDataSource.asObservable(),this.refreshAndSchedule()}return l.prototype.refresh=function(){var l=this;this.http.get("api/block/mirroring/summary").subscribe(function(n){l.summaryDataSource.next(n)})},l.prototype.refreshAndSchedule=function(){var l=this;this.refresh(),this.ngZone.runOutsideAngular(function(){setTimeout(function(){l.ngZone.run(function(){l.refreshAndSchedule()})},3e4)})},l.prototype.getCurrentSummary=function(){return this.summaryDataSource.getValue()},l.prototype.subscribeSummary=function(l,n){return this.summaryData$.subscribe(l,n)},l.prototype.getPool=function(l){return this.http.get("api/block/mirroring/pool/"+l)},l.prototype.updatePool=function(l,n){return this.http.put("api/block/mirroring/pool/"+l,n,{observe:"response"})},l.prototype.getPeer=function(l,n){return this.http.get("api/block/mirroring/pool/"+l+"/peer/"+n)},l.prototype.addPeer=function(l,n){return this.http.post("api/block/mirroring/pool/"+l+"/peer",n,{observe:"response"})},l.prototype.updatePeer=function(l,n,e){return this.http.put("api/block/mirroring/pool/"+l+"/peer/"+n,e,{observe:"response"})},l.prototype.deletePeer=function(l,n){return this.http.delete("api/block/mirroring/pool/"+l+"/peer/"+n,{observe:"response"})},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(i.c),u.inject(u.NgZone))},token:l,providedIn:o.a}),l}()},Z4cD:function(l,n,e){"use strict";e.d(n,"a",function(){return i});var t=e("mrSG"),u=e("LvDl"),i=(e("my5R"),function(){function l(l,n){this.modalRef=l,this.iscsiService=n}return l.prototype.ngOnInit=function(){var l=this;this.helpText=this.iscsiService.imageAdvancedSettings,this.model=u.cloneDeep(this.imagesSettings[this.image]),u.forEach(this.backstores,function(n){l.model[n]=l.model[n]||{}})},l.prototype.save=function(){var l=this.model.backstore,n={};u.forIn(this.model[l],function(l,e){""!==l&&null!==l&&(n[e]=l)}),this.imagesSettings[this.image].backstore=l,this.imagesSettings[this.image][l]=n,this.imagesSettings=t.__assign({},this.imagesSettings),this.modalRef.hide()},l}())},a6qe:function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("gIcY"),u=e("LvDl"),i=(e("my5R"),e("QFaf")),o=function(){function l(l,n){this.modalRef=l,this.iscsiService=n}return l.prototype.ngOnInit=function(){var l=this,n={};this.helpText=this.iscsiService.targetAdvancedSettings,u.forIn(this.target_default_controls,function(e,u){n[u]=new t.i(l.target_controls.value[u])}),this.settingsForm=new i.a(n)},l.prototype.save=function(){var l={};u.forIn(this.settingsForm.controls,function(n,e){""!==n.value&&null!==n.value&&(l[e]=n.value)}),this.target_controls.setValue(l),this.modalRef.hide()},l.prototype.isRadio=function(l){return-1!==["Yes","No"].indexOf(this.target_default_controls[l])},l}()},aAWM:function(l,n,e){"use strict";e("uIqm");var t=e("PhyI"),u=function(){function l(){}return l.prototype.transform=function(l){return{0:"global",1:"pool",2:"image"}[l]},l}();e("aXbf"),e("o8EM"),e.d(n,"a",function(){return i});var i=function(){function l(l,n,e){this.formatterService=l,this.rbdConfigurationService=n,this.i18n=e,this.sourceField=t.a,this.typeField=t.b}return l.prototype.ngOnInit=function(){this.poolConfigurationColumns=[{prop:"displayName",name:this.i18n("Name")},{prop:"description",name:this.i18n("Description")},{prop:"name",name:this.i18n("Key")},{prop:"source",name:this.i18n("Source"),cellTemplate:this.configurationSourceTpl,pipe:new u},{prop:"value",name:this.i18n("Value"),cellTemplate:this.configurationValueTpl}]},l.prototype.ngOnChanges=function(){var l=this;this.data&&(this.data=this.data.filter(function(n){return l.rbdConfigurationService.getOptionFields().map(function(l){return l.name}).includes(n.name)}))},l}()},aa9H:function(l,n,e){"use strict";var t=e("gIcY"),u=(e("XED3"),e("QFaf")),i=e("kvvV"),o=(e("kn/O"),function(){return function(){}}());e.d(n,"a",function(){return a});var a=function(){function l(l,n,e,t){this.modalRef=l,this.i18n=n,this.rbdMirroringService=e,this.taskWrapper=t,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:this.i18n("Disabled")},{id:"pool",name:this.i18n("Pool")},{id:"image",name:this.i18n("Image")}],this.createForm()}return l.prototype.createForm=function(){this.editModeForm=new u.a({mirrorMode:new t.i("",{validators:[t.A.required,this.validateMode.bind(this)]})})},l.prototype.ngOnInit=function(){var l=this;this.pattern=""+this.poolName,this.rbdMirroringService.getPool(this.poolName).subscribe(function(n){l.setResponse(n)}),this.subs=this.rbdMirroringService.subscribeSummary(function(n){if(l.peerExists=!1,n){var e=n.content_data.pools.find(function(n){return l.poolName===n.name});l.peerExists=e&&e.peer_uuids.length}})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.validateMode=function(l){return"disabled"===l.value&&this.peerExists?{cannotDisable:{value:l.value}}:null},l.prototype.setResponse=function(l){this.editModeForm.get("mirrorMode").setValue(l.mirror_mode)},l.prototype.update=function(){var l=this,n=new o;n.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new i.a("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,n)}).subscribe(void 0,function(){return l.editModeForm.setErrors({cdSubmitButton:!0})},function(){l.rbdMirroringService.refresh(),l.modalRef.hide()})},l}()},bUo2:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gp3X"),i=e("sb0X"),o=e("EEJc"),a=e("ajRT"),r=e("gIcY"),s=e("Ip0R"),d=e("D4zM"),c=e("OcYo"),p=e("SZbH"),m=e("KVJa"),f=e("Z21x"),h=e("sne2"),g=e("Sofw"),v=e("aexS"),b=e("DQlY"),y=e("my5R"),C=e("9nlD"),_=e("Jm/i");e.d(n,"a",function(){return x});var w=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function D(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function F(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function E(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function T(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function N(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submitAction()&&t),t},u.b,u.a)),t["\u0275did"](1,114688,null,0,i.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Submit"]))],function(l,n){l(n,1,0,n.component.discoveryForm)},null)}function V(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,93,"cd-modal",[],null,null,null,o.c,o.b)),t["\u0275did"](1,49152,null,0,a.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Discovery Authentication"])),(l()(),t["\u0275eld"](4,0,null,1,89,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,88,"form",[["class","form-horizontal"],["name","discoveryForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,r.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,r.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,r.d,null,[r.l]),t["\u0275did"](9,16384,null,0,r.s,[[4,r.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,77,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](12,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](13,{"has-error":0}),(l()(),t["\u0275eld"](14,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","user"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["User"])),(l()(),t["\u0275eld"](16,0,null,null,10,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["id","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,18)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,18).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,18)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,18)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](18,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](20,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](22,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](24,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,R)),t["\u0275did"](26,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](27,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](28,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](29,{"has-error":0}),(l()(),t["\u0275eld"](30,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","password"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Password"])),(l()(),t["\u0275eld"](32,0,null,null,16,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](33,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](34,0,null,null,5,"input",[["class","form-control"],["formControlName","password"],["id","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,35)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,35).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,35)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,35)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](35,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](37,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](39,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275eld"](40,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](41,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,42).onClick()&&u),u},null,null)),t["\u0275did"](42,81920,null,0,d.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["\u0275eld"](43,0,null,null,1,"button",[["cdCopy2ClipboardButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,44).onClick()&&u),u},null,null)),t["\u0275did"](44,81920,null,0,c.a,[t.ElementRef,t.Renderer2,p.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,I)),t["\u0275did"](46,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,k)),t["\u0275did"](48,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](49,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](50,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](51,{"has-error":0}),(l()(),t["\u0275eld"](52,0,null,null,2,"label",[["class","control-label col-sm-4"],["for","mutual_user"]],null,null,null,null,null)),(l()(),t["\u0275eld"](53,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mutual User"])),(l()(),t["\u0275eld"](55,0,null,null,10,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](56,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_user"],["id","mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,57)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,57).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,57)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,57)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](57,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](59,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](61,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,D)),t["\u0275did"](63,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,F)),t["\u0275did"](65,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](66,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](67,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](68,{"has-error":0}),(l()(),t["\u0275eld"](69,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","mutual_password"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mutual Password"])),(l()(),t["\u0275eld"](71,0,null,null,16,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](72,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](73,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_password"],["id","mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,74)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,74).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](74,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](76,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](78,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275eld"](79,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](80,0,null,null,1,"button",[["cdPasswordButton","mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,81).onClick()&&u),u},null,null)),t["\u0275did"](81,81920,null,0,d.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["\u0275eld"](82,0,null,null,1,"button",[["cdCopy2ClipboardButton","mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,83).onClick()&&u),u},null,null)),t["\u0275did"](83,81920,null,0,c.a,[t.ElementRef,t.Renderer2,p.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,E)),t["\u0275did"](85,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,T)),t["\u0275did"](87,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](88,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](89,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,N)),t["\u0275did"](91,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](92,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["\u0275did"](93,49152,null,0,f.a,[s.Location,h.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,1,0,e.bsModalRef),l(n,7,0,e.discoveryForm);var u=l(n,13,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7)));l(n,12,0,"form-group",u),l(n,20,0,"user"),l(n,24,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7),"required")),l(n,26,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7),"pattern"));var i=l(n,29,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7)));l(n,28,0,"form-group",i),l(n,37,0,"password"),l(n,42,0,"password"),l(n,44,0,"password"),l(n,46,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7),"required")),l(n,48,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7),"pattern"));var o=l(n,51,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7)));l(n,50,0,"form-group",o),l(n,59,0,"mutual_user"),l(n,63,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7),"required")),l(n,65,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7),"pattern"));var a=l(n,68,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7)));l(n,67,0,"form-group",a),l(n,76,0,"mutual_password"),l(n,81,0,"mutual_password"),l(n,83,0,"mutual_password"),l(n,85,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7),"required")),l(n,87,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7),"pattern")),l(n,91,0,e.hasPermission),l(n,93,0,"Cancel",e.bsModalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,17,0,t["\u0275nov"](n,22).ngClassUntouched,t["\u0275nov"](n,22).ngClassTouched,t["\u0275nov"](n,22).ngClassPristine,t["\u0275nov"](n,22).ngClassDirty,t["\u0275nov"](n,22).ngClassValid,t["\u0275nov"](n,22).ngClassInvalid,t["\u0275nov"](n,22).ngClassPending),l(n,34,0,t["\u0275nov"](n,39).ngClassUntouched,t["\u0275nov"](n,39).ngClassTouched,t["\u0275nov"](n,39).ngClassPristine,t["\u0275nov"](n,39).ngClassDirty,t["\u0275nov"](n,39).ngClassValid,t["\u0275nov"](n,39).ngClassInvalid,t["\u0275nov"](n,39).ngClassPending),l(n,56,0,t["\u0275nov"](n,61).ngClassUntouched,t["\u0275nov"](n,61).ngClassTouched,t["\u0275nov"](n,61).ngClassPristine,t["\u0275nov"](n,61).ngClassDirty,t["\u0275nov"](n,61).ngClassValid,t["\u0275nov"](n,61).ngClassInvalid,t["\u0275nov"](n,61).ngClassPending),l(n,73,0,t["\u0275nov"](n,78).ngClassUntouched,t["\u0275nov"](n,78).ngClassTouched,t["\u0275nov"](n,78).ngClassPristine,t["\u0275nov"](n,78).ngClassDirty,t["\u0275nov"](n,78).ngClassValid,t["\u0275nov"](n,78).ngClassInvalid,t["\u0275nov"](n,78).ngClassPending)})}function P(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-discovery-modal",[],null,null,null,V,w)),t["\u0275did"](1,114688,null,0,g.a,[v.a,b.a,y.a,C.a,_.a],null,null)],function(l,n){l(n,1,0)},null)}var x=t["\u0275ccf"]("cd-iscsi-target-discovery-modal",g.a,P,{},{},[])},cxJu:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("XED3");var t=function(){function l(l){this.rbdMirroringService=l}return l.prototype.ngOnInit=function(){var l=this;this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.status=n.content_data.status)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l}()},"e/kN":function(l,n,e){"use strict";e.d(n,"a",function(){return r}),e("my5R");var t=e("0+/T"),u=(e("uIqm"),e("x38r")),i=e("vCyI"),o=e("kvvV"),a=(e("+0ag"),e("aexS"),e("mSOc"),e("VTlA"),e("kn/O"),e("Sofw")),r=function(){function l(l,n,e,t,u,o,a,r){var s=this;this.authStorageService=l,this.i18n=n,this.iscsiService=e,this.taskListService=t,this.cephReleaseNamePipe=u,this.summaryservice=o,this.modalService=a,this.taskWrapper=r,this.available=void 0,this.selection=new i.a,this.targets=[],this.builders={"iscsi/target/create":function(l){return{target_iqn:l.target_iqn}}},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return"/block/iscsi/targets/add"},name:this.i18n("Add")},{permission:"update",icon:"fa-pencil",routerLink:function(){return"/block/iscsi/targets/edit/"+s.selection.first().target_iqn},name:this.i18n("Edit")},{permission:"delete",icon:"fa-times",click:function(){return s.deleteIscsiTargetModal()},name:this.i18n("Delete")}]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("Target"),prop:"target_iqn",flexGrow:2,cellTransformation:u.a.executing},{name:this.i18n("Portals"),prop:"cdPortals",flexGrow:2},{name:this.i18n("Images"),prop:"cdImages",flexGrow:2},{name:this.i18n("# Sessions"),prop:"info.num_sessions",flexGrow:1}],this.iscsiService.status().subscribe(function(n){if(l.available=n.available,n.available)l.taskListService.init(function(){return l.iscsiService.listTargets()},function(n){return l.prepareResponse(n)},function(n){return l.targets=n},function(){return l.onFetchError()},l.taskFilter,l.itemFilter,l.builders),l.iscsiService.settings().subscribe(function(n){l.settings=n});else{var e=l.summaryservice.getCurrentSummary(),t=l.cephReleaseNamePipe.transform(e.version);l.docsUrl="http://docs.ceph.com/docs/"+t+"/mgr/dashboard/#enabling-iscsi-management",l.status=n.message}})},l.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},l.prototype.prepareResponse=function(l){return l.forEach(function(l){l.cdPortals=l.portals.map(function(l){return l.host+":"+l.ip}),l.cdImages=l.disks.map(function(l){return l.pool+"/"+l.image})}),l},l.prototype.onFetchError=function(){this.table.reset()},l.prototype.itemFilter=function(l,n){return l.target_iqn===n.metadata.target_iqn},l.prototype.taskFilter=function(l){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteIscsiTargetModal=function(){var l=this,n=this.selection.first().target_iqn;this.modalRef=this.modalService.show(t.a,{initialState:{itemDescription:this.i18n("iSCSI"),submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new o.a("iscsi/target/delete",{target_iqn:n}),call:l.iscsiService.deleteTarget(n)})}}})},l.prototype.configureDiscoveryAuth=function(){this.modalService.show(a.a,{})},l}()},gr3l:function(l,n,e){"use strict";e.d(n,"a",function(){return m});var t=e("gIcY"),u=e("LvDl"),i=e("VNr4"),o=(e("my5R"),e("F83c"),e("DNAf")),a=e("a96k"),r=(e("sne2"),e("QFaf")),s=e("1Ni5"),d=e("kvvV"),c=(e("kn/O"),e("Z4cD")),p=e("a6qe"),m=function(){function l(l,n,e,t,u,i,a,r){this.iscsiService=l,this.modalService=n,this.rbdService=e,this.router=t,this.route=u,this.i18n=i,this.taskWrapper=a,this.actionLabels=r,this.minimum_gateways=1,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new o.a({noOptions:this.i18n("There are no portals available.")},this.i18n),images:new o.a({noOptions:this.i18n("There are no images available.")},this.i18n),initiatorImage:new o.a({noOptions:this.i18n("There are no images available. Please make sure you add an image to the target.")},this.i18n),groupInitiator:new o.a({noOptions:this.i18n("There are no initiators available. Please make sure you add an initiator to the target.")},this.i18n)},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/[\w\.:@_-]{8,64}/,this.PASSWORD_REGEX=/[\w@\-_\/]{12,16}/,this.resource=this.i18n("target")}return l.prototype.ngOnInit=function(){var l=this,n=[this.iscsiService.listTargets(),this.rbdService.list(),this.iscsiService.portals(),this.iscsiService.settings()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(function(e){l.target_iqn=decodeURIComponent(e.target_iqn),n.push(l.iscsiService.getTarget(l.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,Object(i.a)(n).subscribe(function(n){var e=u(n[0]).filter(function(n){return n.target_iqn!==l.target_iqn}).flatMap(function(l){return l.disks}).map(function(l){return l.pool+"/"+l.image}).value();l.minimum_gateways=n[3].config.minimum_gateways,l.target_default_controls=n[3].target_default_controls,l.disk_default_controls=n[3].disk_default_controls,l.backstores=n[3].backstores,l.default_backstore=n[3].default_backstore,l.unsupported_rbd_features=n[3].unsupported_rbd_features,l.required_rbd_features=n[3].required_rbd_features,l.imagesAll=u(n[1]).flatMap(function(l){return l.value}).filter(function(n){return-1===e.indexOf(n.pool_name+"/"+n.name)&&0!==l.getValidBackstores(n).length}).value(),l.imagesSelections=l.imagesAll.map(function(l){return new a.a(!1,l.pool_name+"/"+l.name,"")});var t=[];n[2].forEach(function(l){l.ip_addresses.forEach(function(n){t.push(new a.a(!1,l.name+":"+n,""))})}),l.portalsSelections=t.slice(),l.createForm(),n[4]&&l.resolveModel(n[4])})},l.prototype.createForm=function(){var l=this;this.targetForm=new r.a({target_iqn:new t.i("iqn.2001-07.com.ceph:"+Date.now(),{validators:[t.A.required,t.A.pattern(this.IQN_REGEX)]}),target_controls:new t.i({}),portals:new t.i([],{validators:[s.a.custom("minGateways",function(n){return u.uniq(n.map(function(l){return l.split(":")[0]})).length<Math.max(1,l.minimum_gateways)})]}),disks:new t.i([]),initiators:new t.f([]),groups:new t.f([]),acl_enabled:new t.i(!1)})},l.prototype.resolveModel=function(l){var n=this;this.targetForm.patchValue({target_iqn:l.target_iqn,target_controls:l.target_controls,acl_enabled:l.acl_enabled});var e=[];u.forEach(l.portals,function(l){e.push(l.host+":"+l.ip)}),this.targetForm.patchValue({portals:e});var t=[];u.forEach(l.disks,function(l){var e=l.pool+"/"+l.image;t.push(e),n.imagesSettings[e]={backstore:l.backstore},n.imagesSettings[e][l.backstore]=l.controls,n.onImageSelection({option:{name:e,selected:!0}})}),this.targetForm.patchValue({disks:t}),u.forEach(l.clients,function(l){var e=n.addInitiator();l.luns=u.map(l.luns,function(l){return l.pool+"/"+l.image}),e.patchValue(l)}),u.forEach(l.groups,function(l){var e=n.addGroup();l.disks=u.map(l.disks,function(l){return l.pool+"/"+l.image}),e.patchValue(l),u.forEach(l.members,function(l){n.onGroupMemberSelection({option:new a.a(!0,l,"")})})})},l.prototype.hasAdvancedSettings=function(l){return Object.values(l).length>0},Object.defineProperty(l.prototype,"portals",{get:function(){return this.targetForm.get("portals")},enumerable:!0,configurable:!0}),l.prototype.onPortalSelection=function(){this.portals.setValue(this.portals.value)},l.prototype.removePortal=function(l,n){return this.portalsSelections.forEach(function(l){l.name===n&&(l.selected=!1)}),this.portals.value.splice(l,1),this.portals.setValue(this.portals.value),!1},Object.defineProperty(l.prototype,"disks",{get:function(){return this.targetForm.get("disks")},enumerable:!0,configurable:!0}),l.prototype.removeImage=function(l,n){return this.imagesSelections.forEach(function(l){l.name===n&&(l.selected=!1)}),this.disks.value.splice(l,1),this.removeImageRefs(n),!1},l.prototype.removeImageRefs=function(l){var n=this;this.initiators.controls.forEach(function(n){var e=n.value.luns.filter(function(n){return n!==l});n.get("luns").setValue(e)}),this.groups.controls.forEach(function(n){var e=n.value.disks.filter(function(n){return n!==l});n.get("disks").setValue(e)}),u.forEach(this.imagesInitiatorSelections,function(e,t){n.imagesInitiatorSelections[t]=e.filter(function(n){return n.name!==l})}),u.forEach(this.groupDiskSelections,function(e,t){n.groupDiskSelections[t]=e.filter(function(n){return n.name!==l})})},l.prototype.getDefaultBackstore=function(l){var n=this,e=this.default_backstore,t=this.getImageById(l);return this.validFeatures(t,this.default_backstore)||this.backstores.forEach(function(l){l!==n.default_backstore&&n.validFeatures(t,l)&&(e=l)}),e},l.prototype.onImageSelection=function(l){var n=this,e=l.option;if(e.selected){if(!this.imagesSettings[e.name]){var t=this.getDefaultBackstore(e.name);this.imagesSettings[e.name]={backstore:t},this.imagesSettings[e.name][t]={}}u.forEach(this.imagesInitiatorSelections,function(l,t){l.push(new a.a(!1,e.name,"")),n.imagesInitiatorSelections[t]=l.slice()}),u.forEach(this.groupDiskSelections,function(l,t){l.push(new a.a(!1,e.name,"")),n.groupDiskSelections[t]=l.slice()})}else this.removeImageRefs(e.name)},Object.defineProperty(l.prototype,"initiators",{get:function(){return this.targetForm.get("initiators")},enumerable:!0,configurable:!0}),l.prototype.addInitiator=function(){var l=this,n=new r.a({client_iqn:new t.i("",{validators:[t.A.required,s.a.custom("notUnique",function(n){var e=l.initiators.controls.reduce(function(l,n){return l.concat(n.value.client_iqn)},[]);return e.indexOf(n)!==e.lastIndexOf(n)}),t.A.pattern(this.IQN_REGEX)]}),auth:new r.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")}),luns:new t.i([]),cdIsInGroup:new t.i(!1)});s.a.validateIf(n.get("user"),function(){return n.getValue("password")||n.getValue("mutual_user")||n.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[n.get("password"),n.get("mutual_user"),n.get("mutual_password")]),s.a.validateIf(n.get("password"),function(){return n.getValue("user")||n.getValue("mutual_user")||n.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[n.get("user"),n.get("mutual_user"),n.get("mutual_password")]),s.a.validateIf(n.get("mutual_user"),function(){return n.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[n.get("user"),n.get("password"),n.get("mutual_password")]),s.a.validateIf(n.get("mutual_password"),function(){return n.getValue("mutual_user")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[n.get("user"),n.get("password"),n.get("mutual_user")]),this.initiators.push(n),u.forEach(this.groupMembersSelections,function(n,e){n.push(new a.a(!1,"","")),l.groupMembersSelections[e]=n.slice()});var e=u.map(this.targetForm.getValue("disks"),function(l){return new a.a(!1,l,"")});return this.imagesInitiatorSelections.push(e),n},l.prototype.removeInitiator=function(l){var n=this,e=this.initiators.value[l];this.initiators.removeAt(l),u.forEach(this.groupMembersSelections,function(e,t){e.splice(l,1),n.groupMembersSelections[t]=e.slice()}),this.groups.controls.forEach(function(l){var n=l.value.members.filter(function(l){return l!==e.client_iqn});l.get("members").setValue(n)}),this.imagesInitiatorSelections.splice(l,1)},l.prototype.updatedInitiatorSelector=function(){var l=this;this.initiators.controls.forEach(function(l){l.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),u.forEach(this.groupMembersSelections,function(n,e){u.forEach(n,function(n,e){var t=n.name;n.name=l.initiators.controls[e].value.client_iqn,l.groups.controls.forEach(function(l){var e=l.value.members,u=e.indexOf(t);-1!==u&&(e[u]=n.name),l.get("members").setValue(e)})}),l.groupMembersSelections[e]=l.groupMembersSelections[e].slice()})},l.prototype.removeInitiatorImage=function(l,n,e,t){var u=l.getValue("luns");return u.splice(n,1),l.patchValue({luns:u}),this.imagesInitiatorSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),!1},Object.defineProperty(l.prototype,"groups",{get:function(){return this.targetForm.get("groups")},enumerable:!0,configurable:!0}),l.prototype.addGroup=function(){var l=new r.a({group_id:new t.i("",{validators:[t.A.required]}),members:new t.i([]),disks:new t.i([])});this.groups.push(l);var n=u.map(this.targetForm.getValue("disks"),function(l){return new a.a(!1,l,"")});this.groupDiskSelections.push(n);var e=u.map(this.initiators.value,function(l){return new a.a(!1,l.client_iqn,"",!l.cdIsInGroup)});return this.groupMembersSelections.push(e),l},l.prototype.removeGroup=function(l){this.groups.removeAt(l),this.groupDiskSelections.splice(l,1)},l.prototype.onGroupMemberSelection=function(l){var n,e=l.option;this.initiators.controls.forEach(function(l,t){l.value.client_iqn===e.name&&(l.patchValue({luns:[]}),l.get("cdIsInGroup").setValue(e.selected),n=t)}),u.forEach(this.groupMembersSelections,function(l){l[n].enabled=!e.selected})},l.prototype.removeGroupInitiator=function(l,n,e){var t=l.getValue("members")[n];l.getValue("members").splice(n,1),this.groupMembersSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),this.groupMembersSelections[e]=this.groupMembersSelections[e].slice(),this.onGroupMemberSelection({option:new a.a(!1,t,"")})},l.prototype.removeGroupDisk=function(l,n,e){var t=l.getValue("disks")[n];l.getValue("disks").splice(n,1),this.groupDiskSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),this.groupDiskSelections[e]=this.groupDiskSelections[e].slice()},l.prototype.submit=function(){var l,n=this,e=u.cloneDeep(this.targetForm.value),t={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};e.disks.forEach(function(l){var e=l.split("/"),u=n.imagesSettings[l].backstore;t.disks.push({pool:e[0],image:e[1],backstore:u,controls:n.imagesSettings[l][u]})}),e.portals.forEach(function(l){var n=l.indexOf(":");t.portals.push({host:l.substring(0,n),ip:l.substring(n+1)})}),t.acl_enabled&&(e.initiators.forEach(function(l){l.auth.user||(l.auth.user=""),l.auth.password||(l.auth.password=""),l.auth.mutual_user||(l.auth.mutual_user=""),l.auth.mutual_password||(l.auth.mutual_password=""),delete l.cdIsInGroup;var n=[];l.luns.forEach(function(l){var e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.luns=n}),t.clients=e.initiators),t.acl_enabled&&(e.groups.forEach(function(l){var n=[];l.disks.forEach(function(l){var e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.disks=n}),t.groups=e.groups),this.isEdit?(t.new_target_iqn=t.target_iqn,t.target_iqn=this.target_iqn,l=this.taskWrapper.wrapTaskAroundCall({task:new d.a("iscsi/target/edit",{target_iqn:t.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,t)})):l=this.taskWrapper.wrapTaskAroundCall({task:new d.a("iscsi/target/create",{target_iqn:t.target_iqn}),call:this.iscsiService.createTarget(t)}),l.subscribe(void 0,function(){n.targetForm.setErrors({cdSubmitButton:!0})},function(){return n.router.navigate(["/block/iscsi/targets"])})},l.prototype.targetSettingsModal=function(){var l={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls};this.modalRef=this.modalService.show(p.a,{initialState:l})},l.prototype.imageSettingsModal=function(l){var n={imagesSettings:this.imagesSettings,image:l,disk_default_controls:this.disk_default_controls,backstores:this.getValidBackstores(this.getImageById(l))};this.modalRef=this.modalService.show(c.a,{initialState:n})},l.prototype.validFeatures=function(l,n){var e=l.features,t=this.required_rbd_features[n];return(e&t)===t&&0==(e&this.unsupported_rbd_features[n])},l.prototype.getImageById=function(l){return this.imagesAll.find(function(n){return l===n.pool_name+"/"+n.name})},l.prototype.getValidBackstores=function(l){var n=this;return this.backstores.filter(function(e){return n.validFeatures(l,e)})},l}()},"k/xb":function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e.d(n,"b",function(){return v}),e.d(n,"c",function(){return i}),e.d(n,"d",function(){return o}),e.d(n,"g",function(){return a}),e.d(n,"h",function(){return r}),e.d(n,"i",function(){return s}),e.d(n,"j",function(){return d}),e.d(n,"k",function(){return c}),e.d(n,"l",function(){return p}),e.d(n,"m",function(){return m}),e.d(n,"n",function(){return f}),e.d(n,"e",function(){return h}),e.d(n,"f",function(){return g});var t=e("sne2"),u=(e("Vhfg"),e("gr3l"),e("e/kN"),e("roDX"),e("cxJu"),e("MyVl"),e("wG1H"),function(){return function(){}}()),i={breadcrumbs:"Images"},o={breadcrumbs:t.a.CREATE},a={breadcrumbs:t.a.EDIT},r={breadcrumbs:t.a.CLONE},s={breadcrumbs:t.a.COPY},d={breadcrumbs:t.a.COPY},c={breadcrumbs:"Mirroring"},p={breadcrumbs:"iSCSI"},m={breadcrumbs:"Overview"},f={breadcrumbs:"Targets"},h={breadcrumbs:t.a.ADD},g={breadcrumbs:t.a.EDIT},v=function(){return function(){}}()},kccj:function(l,n,e){"use strict";e.d(n,"a",function(){return t});var t=function(){return function(){}}()},l7Jr:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R"),o=e("EEJc"),a=e("ajRT"),r=e("gp3X"),s=e("sb0X"),d=e("KVJa"),c=e("Z21x"),p=e("sne2"),m=e("a6qe"),f=e("DQlY"),h=e("my5R");e.d(n,"a",function(){return w});var g=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,6,"input",[["class","form-control"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,1)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,2).onChange(e.target.value)&&u),"input"===n&&(u=!1!==t["\u0275nov"](l,2).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](2,16384,null,0,u.C,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.C]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){l(n,4,0,n.parent.context.$implicit.key)},function(l,n){l(n,0,0,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,21,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,9,"div",[["class","radio radio-inline"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,6,"input",[["type","radio"],["value","Yes"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,4)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,4).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,4)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,4)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,5).onChange()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,5).onTouched()&&u),u},null,null)),t["\u0275did"](4,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](5,212992,null,0,u.w,[t.Renderer2,t.ElementRef,u.E,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.w]),t["\u0275did"](7,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](9,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](10,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Yes"])),(l()(),t["\u0275eld"](12,0,null,null,9,"div",[["class","radio radio-inline"]],null,null,null,null,null)),(l()(),t["\u0275eld"](13,0,null,null,6,"input",[["type","radio"],["value","No"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,14)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,14).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,14)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,14)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,15).onChange()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,15).onTouched()&&u),u},null,null)),t["\u0275did"](14,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](15,212992,null,0,u.w,[t.Renderer2,t.ElementRef,u.E,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.w]),t["\u0275did"](17,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](19,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](20,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["No"]))],function(l,n){l(n,5,0,n.parent.context.$implicit.key,"Yes"),l(n,7,0,n.parent.context.$implicit.key),l(n,15,0,n.parent.context.$implicit.key,"No"),l(n,17,0,n.parent.context.$implicit.key)},function(l,n){l(n,3,0,n.parent.context.$implicit.key+"Yes",t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,10,0,n.parent.context.$implicit.key+"Yes"),l(n,13,0,n.parent.context.$implicit.key+"No",t["\u0275nov"](n,19).ngClassUntouched,t["\u0275nov"](n,19).ngClassTouched,t["\u0275nov"](n,19).ngClassPristine,t["\u0275nov"](n,19).ngClassDirty,t["\u0275nov"](n,19).ngClassValid,t["\u0275nov"](n,19).ngClassInvalid,t["\u0275nov"](n,19).ngClassPending),l(n,20,0,n.parent.context.$implicit.key+"No")})}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,11,"div",[["class","form-group row"]],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,i.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),(l()(),t["\u0275eld"](3,0,null,null,8,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,"label",[["class","control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](5,null,["",""])),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](7,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](9,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](10,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](11,null,["",""]))],function(l,n){var e=n.component,u=l(n,2,0,e.settingsForm.showError(n.context.$implicit.key,t["\u0275nov"](n.parent,7)));l(n,1,0,"form-group row",u),l(n,7,0,!e.isRadio(n.context.$implicit.key)),l(n,9,0,e.isRadio(n.context.$implicit.key))},function(l,n){var e=n.component;l(n,4,0,t["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,5,0,n.context.$implicit.key),l(n,11,0,null==e.helpText[n.context.$implicit.key]?null:e.helpText[n.context.$implicit.key].help)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,22,"cd-modal",[],null,null,null,o.c,o.b)),t["\u0275did"](1,49152,null,0,a.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Advanced Settings"])),(l()(),t["\u0275eld"](4,0,null,1,18,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,17,"form",[["class","form"],["name","settingsForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,u.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](9,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["\u0275and"](16777216,null,null,2,null,y)),t["\u0275did"](14,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["\u0275pid"](0,i.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["\u0275eld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t},r.b,r.a)),t["\u0275did"](19,114688,null,0,s.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Confirm"])),(l()(),t["\u0275eld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),t["\u0275did"](22,49152,null,0,c.a,[i.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.settingsForm),l(n,14,0,t["\u0275unv"](n,14,0,t["\u0275nov"](n,15).transform(e.settingsForm.controls))),l(n,19,0,e.settingsForm),l(n,22,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending)})}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-iqn-settings-modal",[],null,null,null,C,g)),t["\u0275did"](1,114688,null,0,m.a,[f.a,h.a],null,null)],function(l,n){l(n,1,0)},null)}var w=t["\u0275ccf"]("cd-iscsi-target-iqn-settings-modal",m.a,_,{},{},[])},"lz+O":function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R"),o=e("EEJc"),a=e("ajRT"),r=e("gp3X"),s=e("sb0X"),d=e("KVJa"),c=e("Z21x"),p=e("sne2"),m=e("WxU5"),f=e("aexS"),h=e("F83c"),g=e("DQlY"),v=e("2EZI"),b=e("Ekvf"),y=e("kn/O");e.d(n,"a",function(){return k});var C=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","poolName"],["placeholder","Pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,1)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){l(n,3,0,"poolName")},function(l,n){l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,11,"select",[["class","form-control"],["formControlName","poolName"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,1).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](6,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),t["\u0275did"](7,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](8,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](-1,null,["All"])),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](11,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,3,0,"poolName"),l(n,7,0,""),l(n,8,0,""),l(n,11,0,e.pools)},function(l,n){l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,31,"cd-modal",[],null,null,null,o.c,o.b)),t["\u0275did"](1,49152,null,0,a.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Purge Trash"])),(l()(),t["\u0275eld"](4,0,null,1,27,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,26,"form",[["class","form"],["name","purgeForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,u.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](9,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,14,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,6,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To purge, select one or All images and click"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Purge Trash"])),(l()(),t["\u0275ted"](-1,null,[".\xa0 "])),(l()(),t["\u0275eld"](18,0,null,null,6,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,1,"label",[["class","center-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pool:"])),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](22,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](24,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](25,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](26,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](27,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.purge()&&t),t},r.b,r.a)),t["\u0275did"](28,114688,null,0,s.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Purge Trash"])),(l()(),t["\u0275eld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),t["\u0275did"](31,49152,null,0,c.a,[i.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.purgeForm),l(n,22,0,!e.poolPermission.read),l(n,24,0,e.poolPermission.read),l(n,28,0,e.purgeForm),l(n,31,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending)})}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-purge-modal",[],null,null,null,R,C)),t["\u0275did"](1,114688,null,0,m.a,[f.a,h.a,g.a,v.a,b.a,y.a],null,null)],function(l,n){l(n,1,0)},null)}var k=t["\u0275ccf"]("cd-rbd-trash-purge-modal",m.a,I,{},{},[])},my5R:function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("mrSG"),u=e("t/Na"),i=e("xTzq"),o=e("CcnG"),a=e("pL04"),r=function(){function l(l){this.http=l,this.targetAdvancedSettings={cmdsn_depth:{help:""},dataout_timeout:{help:""},first_burst_length:{help:""},immediate_data:{help:""},initial_r2t:{help:""},max_burst_length:{help:""},max_outstanding_r2t:{help:""},max_recv_data_segment_length:{help:""},max_xmit_data_segment_length:{help:""},nopin_response_timeout:{help:""},nopin_timeout:{help:""}},this.imageAdvancedSettings={hw_max_sectors:{help:""},max_data_area_mb:{help:""},osd_op_timeout:{help:""},qfull_timeout:{help:""}}}return l.prototype.listTargets=function(){return this.http.get("api/iscsi/target")},l.prototype.getTarget=function(l){return this.http.get("api/iscsi/target/"+l)},l.prototype.updateTarget=function(l,n){return this.http.put("api/iscsi/target/"+l,n,{observe:"response"})},l.prototype.status=function(){return this.http.get("ui-api/iscsi/status")},l.prototype.settings=function(){return this.http.get("ui-api/iscsi/settings")},l.prototype.portals=function(){return this.http.get("ui-api/iscsi/portals")},l.prototype.createTarget=function(l){return this.http.post("api/iscsi/target",l,{observe:"response"})},l.prototype.deleteTarget=function(l){return this.http.delete("api/iscsi/target/"+l,{observe:"response"})},l.prototype.getDiscovery=function(){return this.http.get("api/iscsi/discoveryauth")},l.prototype.updateDiscovery=function(l){return this.http.put("api/iscsi/discoveryauth",l)},l.prototype.overview=function(){return this.http.get("ui-api/iscsi/overview")},l.ngInjectableDef=o.defineInjectable({factory:function(){return new l(o.inject(u.c))},token:l,providedIn:a.a}),l=t.__decorate([i.a,t.__metadata("design:paramtypes",[u.c])],l)}()},nP0W:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("EEJc"),o=e("ajRT"),a=e("Ip0R"),r=e("gp3X"),s=e("sb0X"),d=e("KVJa"),c=e("Z21x"),p=e("sne2"),m=e("aa9H"),f=e("DQlY"),h=e("Jm/i"),g=e("XED3"),v=e("kn/O");e.d(n,"a",function(){return S});var b=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.id),l(n,2,0,n.context.$implicit.id)},function(l,n){l(n,3,0,n.context.$implicit.name)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Peer clusters must be removed prior to disabling mirror."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,42,"cd-modal",[],null,null,null,i.c,i.b)),t["\u0275did"](1,49152,null,0,o.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Edit pool mirror mode"])),(l()(),t["\u0275eld"](4,0,null,1,38,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,37,"form",[["class","form"],["name","editModeForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,u.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](9,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,25,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,8,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To edit the mirror mode for pool\xa0 "])),(l()(),t["\u0275eld"](14,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](15,null,["",""])),(l()(),t["\u0275ted"](-1,null,[", select a new mode from the list and click\xa0 "])),(l()(),t["\u0275eld"](17,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Update"])),(l()(),t["\u0275ted"](-1,null,["."])),(l()(),t["\u0275eld"](20,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](21,278528,null,0,a.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](22,{"has-error":0}),(l()(),t["\u0275eld"](23,0,null,null,2,"label",[["class","control-label"],["for","mirrorMode"]],null,null,null,null,null)),(l()(),t["\u0275eld"](24,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mode"])),(l()(),t["\u0275eld"](26,0,null,null,7,"select",[["class","form-control"],["formControlName","mirrorMode"],["id","mirrorMode"],["name","mirrorMode"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,27).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onTouched()&&u),u},null,null)),t["\u0275did"](27,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](29,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](31,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](33,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](35,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](36,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](37,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](38,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t},r.b,r.a)),t["\u0275did"](39,114688,null,0,s.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Update"])),(l()(),t["\u0275eld"](41,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),t["\u0275did"](42,49152,null,0,c.a,[a.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.editModeForm);var u=l(n,22,0,e.editModeForm.showError("mirrorMode",t["\u0275nov"](n,7)));l(n,21,0,"form-group",u),l(n,29,0,"mirrorMode"),l(n,33,0,e.mirrorModes),l(n,35,0,e.editModeForm.showError("mirrorMode",t["\u0275nov"](n,7),"cannotDisable")),l(n,39,0,e.editModeForm),l(n,42,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,15,0,e.poolName),l(n,26,0,t["\u0275nov"](n,31).ngClassUntouched,t["\u0275nov"](n,31).ngClassTouched,t["\u0275nov"](n,31).ngClassPristine,t["\u0275nov"](n,31).ngClassDirty,t["\u0275nov"](n,31).ngClassValid,t["\u0275nov"](n,31).ngClassInvalid,t["\u0275nov"](n,31).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-pool-edit-mode-modal",[],null,null,null,_,b)),t["\u0275did"](1,245760,null,0,m.a,[f.a,h.a,g.a,v.a],null,null)],function(l,n){l(n,1,0)},null)}var S=t["\u0275ccf"]("cd-pool-edit-mode-modal",m.a,w,{},{},[])},nhAp:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R"),o=e("uYzU"),a=e("EEJc"),r=e("ajRT"),s=e("KVJa"),d=e("Z21x"),c=e("sne2"),p=e("Z4cD"),m=e("DQlY"),f=e("my5R");e.d(n,"a",function(){return w});var h=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""])),t["\u0275ppd"](4,1)],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){var e=t["\u0275unv"](n,3,0,l(n,4,0,t["\u0275nov"](n.parent,0),n.context.$implicit));l(n,3,0,e)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,12,"div",[["class","form-group row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,11,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,1,"label",[["class","control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](3,null,["",""])),(l()(),t["\u0275eld"](4,0,null,null,6,"input",[["class","form-control"],["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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0,i=l.component;return"input"===n&&(u=!1!==t["\u0275nov"](l,5)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,5).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,5)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,5)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,6).onChange(e.target.value)&&u),"input"===n&&(u=!1!==t["\u0275nov"](l,6).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,6).onTouched()&&u),"ngModelChange"===n&&(u=!1!==(i.model[l.parent.parent.context.$implicit][l.context.$implicit.key]=e)&&u),u},null,null)),t["\u0275did"](5,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](6,16384,null,0,u.C,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.C]),t["\u0275did"](8,671744,null,0,u.u,[[8,null],[8,null],[8,null],[6,u.p]],{model:[0,"model"]},{update:"ngModelChange"}),t["\u0275prd"](2048,null,u.q,null,[u.u]),t["\u0275did"](10,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](11,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](12,null,["",""]))],function(l,n){l(n,8,0,n.component.model[n.parent.parent.context.$implicit][n.context.$implicit.key])},function(l,n){var e=n.component;l(n,2,0,t["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,3,0,n.context.$implicit.key),l(n,4,0,t["\u0275nov"](n,10).ngClassUntouched,t["\u0275nov"](n,10).ngClassTouched,t["\u0275nov"](n,10).ngClassPristine,t["\u0275nov"](n,10).ngClassDirty,t["\u0275nov"](n,10).ngClassValid,t["\u0275nov"](n,10).ngClassInvalid,t["\u0275nov"](n,10).ngClassPending),l(n,12,0,null==e.helpText[n.context.$implicit.key]?null:e.helpText[n.context.$implicit.key].help)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,2,null,v)),t["\u0275did"](2,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["\u0275pid"](0,i.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){var e=n.component;l(n,2,0,t["\u0275unv"](n,2,0,t["\u0275nov"](n,3).transform(e.disk_default_controls[n.parent.context.$implicit])))},null)}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](2,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,2,0,n.component.model.backstore===n.context.$implicit)},null)}function C(l){return t["\u0275vid"](0,[t["\u0275pid"](0,o.a,[]),(l()(),t["\u0275eld"](1,0,null,null,31,"cd-modal",[],null,null,null,a.c,a.b)),t["\u0275did"](2,49152,null,0,r.a,[],null,null),(l()(),t["\u0275eld"](3,0,null,0,5,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Settings"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](7,0,null,null,1,"small",[],null,null,null,null,null)),(l()(),t["\u0275ted"](8,null,["",""])),(l()(),t["\u0275eld"](9,0,null,1,23,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](10,0,null,null,16,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["\u0275eld"](13,0,null,null,11,"div",[["class","form-group row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](14,0,null,null,10,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](15,0,null,null,1,"label",[["class","control-label"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Backstore"])),(l()(),t["\u0275eld"](17,0,null,null,7,"select",[["class","form-control"],["id","backstore"],["name","backstore"]],[[2,"ng-untouched",null],[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(l,n,e){var u=!0,i=l.component;return"change"===n&&(u=!1!==t["\u0275nov"](l,18).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,18).onTouched()&&u),"ngModelChange"===n&&(u=!1!==(i.model.backstore=e)&&u),u},null,null)),t["\u0275did"](18,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](20,671744,null,0,u.u,[[8,null],[8,null],[8,null],[6,u.p]],{name:[0,"name"],isDisabled:[1,"isDisabled"],model:[2,"model"]},{update:"ngModelChange"}),t["\u0275prd"](2048,null,u.q,null,[u.u]),t["\u0275did"](22,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,g)),t["\u0275did"](24,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](26,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275eld"](27,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](28,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](29,0,null,null,1,"button",[["class","btn btn-sm btn-primary"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.save()&&t),t},null,null)),(l()(),t["\u0275ted"](-1,null,["Confirm"])),(l()(),t["\u0275eld"](31,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,s.b,s.a)),t["\u0275did"](32,49152,null,0,d.a,[i.Location,c.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,20,0,"backstore",1==e.backstores.length,e.model.backstore),l(n,24,0,e.backstores),l(n,26,0,e.backstores),l(n,32,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,8,0,n.component.image),l(n,17,0,t["\u0275nov"](n,22).ngClassUntouched,t["\u0275nov"](n,22).ngClassTouched,t["\u0275nov"](n,22).ngClassPristine,t["\u0275nov"](n,22).ngClassDirty,t["\u0275nov"](n,22).ngClassValid,t["\u0275nov"](n,22).ngClassInvalid,t["\u0275nov"](n,22).ngClassPending)})}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-image-settings-modal",[],null,null,null,C,h)),t["\u0275did"](1,114688,null,0,p.a,[m.a,f.a],null,null)],function(l,n){l(n,1,0)},null)}var w=t["\u0275ccf"]("cd-iscsi-target-image-settings-modal",p.a,_,{},{},[])},o8EM:function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("PhyI"),u=e("CcnG"),i=e("Jm/i"),o=function(){function l(l){this.i18n=l,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:t.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:t.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:t.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:t.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:t.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:t.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:t.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:t.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:t.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:t.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:t.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:t.b.iops}]}]}return l.getOptionsFromSections=function(l){return l.map(function(l){return l.options}).reduce(function(l,n){return l.concat(n)})},l.prototype.filterConfigOptionsByName=function(n){return l.getOptionsFromSections(this.sections).filter(function(l){return l.name===n})},l.prototype.getOptionValueByName=function(l,n,e){void 0===e&&(e="");var t=this.filterConfigOptionsByName(l);return 1===t.length?t.pop()[n]:e},l.prototype.getWritableSections=function(){return this.sections.map(function(l){return l.options=l.options.filter(function(l){return!l.readOnly}),l})},l.prototype.getOptionFields=function(){return l.getOptionsFromSections(this.sections)},l.prototype.getWritableOptionFields=function(){return l.getOptionsFromSections(this.getWritableSections())},l.prototype.getOptionByName=function(l){return this.filterConfigOptionsByName(l).pop()},l.prototype.getDisplayName=function(l){return this.getOptionValueByName(l,"displayName")},l.prototype.getDescription=function(l){return this.getOptionValueByName(l,"description")},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(i.a))},token:l,providedIn:"root"}),l}()},rFfW:function(l,n,e){"use strict";e.d(n,"a",function(){return a});var t=e("CcnG"),u=e("gIcY"),i=e("QFaf"),o=e("PhyI"),a=(e("aXbf"),e("o8EM"),function(){function l(l,n){this.formatterService=l,this.rbdConfigurationService=n,this.changes=new t.EventEmitter,this.ngDataReady=new t.EventEmitter,this.configurationType=o.b,this.sectionVisibility={}}return l.prototype.ngOnInit=function(){var l=this,n=this.createConfigurationFormGroup();this.form.addControl("configuration",n),n.valueChanges.subscribe(function(){l.changes.emit(l.getDirtyValues.bind(l))}),this.initializeData&&this.initializeData.subscribe(function(n){l.initialData=n.initialData;var e=n.sourceType;l.rbdConfigurationService.getWritableOptionFields().forEach(function(t){var u=n.initialData.filter(function(l){return l.name===t.name}).pop();u&&u.source===e&&l.form.get("configuration."+t.name).setValue(u.value)}),l.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(function(n){return l.sectionVisibility[n.class]=!1})},l.prototype.getDirtyValues=function(l,n){var e=this;if(void 0===l&&(l=!1),l&&!n)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");var t={};return this.rbdConfigurationService.getWritableOptionFields().forEach(function(u){var i=e.form.get("configuration").get(u.name);e.initialData&&e.initialData[u.name]===i.value||(i.dirty||l&&i.source===n)&&(t[u.name]=null===i.value?i.value:u.type===o.b.bps?e.formatterService.toBytes(i.value):u.type===o.b.milliseconds?e.formatterService.toMilliseconds(i.value):u.type===o.b.iops?e.formatterService.toIops(i.value):i.value)}),t},l.prototype.createConfigurationFormGroup=function(){var l=new i.a({});return this.rbdConfigurationService.getWritableOptionFields().forEach(function(n){var e;if(n.type!==o.b.milliseconds&&n.type!==o.b.iops&&n.type!==o.b.bps)throw new Error("Type "+n.type+" is unknown, you may need to add it to RbdConfiguration class");e=new u.i(0,u.A.min(0)),l.addControl(n.name,e)}),l},l.prototype.reset=function(l){var n=this.form.get("configuration").get(l);n.disabled?(n.setValue(n.previousValue||0),n.enable(),n.previousValue||n.markAsPristine()):(n.previousValue=n.value,n.setValue(null),n.markAsDirty(),n.disable())},l.prototype.isDisabled=function(l){return this.form.get("configuration").get(l).disabled},l.prototype.toggleSectionVisibility=function(l){this.sectionVisibility[l]=!this.sectionVisibility[l]},l}())},roDX:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("my5R"),e("o4+5"),e("uYzU");var t=function(){function l(l,n,e,t){this.iscsiService=l,this.dimlessPipe=n,this.iscsiBackstorePipe=e,this.i18n=t,this.gateways=[],this.images=[]}return l.prototype.ngOnInit=function(){this.gatewaysColumns=[{name:this.i18n("Name"),prop:"name"},{name:this.i18n("State"),prop:"state",cellTemplate:this.statusColorTpl},{name:this.i18n("# Targets"),prop:"num_targets"},{name:this.i18n("# Sessions"),prop:"num_sessions"}],this.imagesColumns=[{name:this.i18n("Pool"),prop:"pool"},{name:this.i18n("Image"),prop:"image"},{name:this.i18n("Backstore"),prop:"backstore",pipe:this.iscsiBackstorePipe},{name:this.i18n("Read Bytes"),prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Write Bytes"),prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Read Ops"),prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("Write Ops"),prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("A/O Since"),prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]},l.prototype.refresh=function(){var l=this;this.iscsiService.overview().subscribe(function(n){l.gateways=n.gateways,l.images=n.images,l.images.map(function(l){return l.stats_history&&(l.stats_history.rd_bytes=l.stats_history.rd_bytes.map(function(l){return l[1]}),l.stats_history.wr_bytes=l.stats_history.wr_bytes.map(function(l){return l[1]})),l.cdIsBinary=!0,l})})},l}()},u2XS:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("25BL"),o=e("uIqm"),a=e("nuQ0"),r=e("Tff5"),s=e("urB8"),d=e("xtUU"),c=e("3ris"),p=e("Jm/i"),m=e("uYzU");e.d(n,"b",function(){return f}),e.d(n,"c",function(){return C}),e.d(n,"a",function(){return w});var f=t["\u0275crt"]({encapsulation:0,styles:[["tree .fa{font-weight:unset!important}"]],data:{}});function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,0,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["\xa0"])),(l()(),t["\u0275eld"](3,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),t["\u0275did"](4,278528,null,0,u.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pad"](5,1),t["\u0275pad"](6,1),t["\u0275pod"](7,{"label-success":0,"label-danger":1}),(l()(),t["\u0275ted"](8,null,[" "," "]))],function(l,n){var e=l(n,7,0,l(n,5,0,"logged_in").includes(n.context.$implicit.status),l(n,6,0,"logged_out").includes(n.context.$implicit.status));l(n,4,0,"label",e)},function(l,n){l(n,0,0,n.context.$implicit.value),l(n,8,0,n.context.$implicit.status)})}function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["",""])),(l()(),t["\u0275eld"](3,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,i.b,i.a)),t["\u0275did"](4,2867200,[[2,4],["detailTable",4]],0,o.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],limit:[3,"limit"]},null)],function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex",0)},function(l,n){l(n,2,0,n.component.title)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](1,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](3,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,void 0===n.context.row.default||n.context.row.default===n.context.row.current),l(n,3,0,void 0!==n.context.row.default&&n.context.row.default!==n.context.row.current)},null)}function C(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{highlightTpl:0}),t["\u0275qud"](671088640,2,{content:0}),(l()(),t["\u0275eld"](2,0,null,null,7,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["iSCSI Topology"])),(l()(),t["\u0275eld"](5,0,null,null,4,"tree",[],null,[[null,"nodeSelected"]],function(l,n,e){var t=!0;return"nodeSelected"===n&&(t=!1!==l.component.onNodeSelected(e)&&t),t},a.b,a.a)),t["\u0275prd"](512,null,r.TreeService,r.TreeService,[s.NodeDraggableService]),t["\u0275did"](7,770048,null,1,d.TreeComponent,[r.TreeService],{treeModel:[0,"treeModel"]},{nodeSelected:"nodeSelected"}),t["\u0275qud"](335544320,3,{template:0}),(l()(),t["\u0275and"](0,[[3,2]],null,0,null,h)),(l()(),t["\u0275and"](16777216,null,null,1,null,g)),t["\u0275did"](11,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,[[1,2],["highlightTpl",2]],null,0,null,y))],function(l,n){var e=n.component;l(n,7,0,e.tree),l(n,11,0,e.data)},null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-details",[],null,null,null,C,f)),t["\u0275did"](1,638976,null,0,c.a,[p.a,m.a],null,null)],function(l,n){l(n,1,0)},null)}var w=t["\u0275ccf"]("cd-iscsi-target-details",c.a,_,{selection:"selection",settings:"settings"},{},[])},wG1H:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("aexS");var t=function(){function l(l){this.authStorageService=l,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return l.prototype.ngOnInit=function(){},l}()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/3rdpartylicenses.txt b/ceph/src/pybind/mgr/dashboard/frontend/dist/3rdpartylicenses.txt
deleted file mode 100644 (file)
index 304f6e6..0000000
+++ /dev/null
@@ -1,1559 +0,0 @@
-@angular/animations
-MIT
-
-@angular/common
-MIT
-
-@angular/core
-MIT
-
-@angular/forms
-MIT
-
-@angular/platform-browser
-MIT
-
-@angular/router
-MIT
-
-@auth0/angular-jwt
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2017 Auth0 Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-@ngx-translate/i18n-polyfill
-MIT
-
-@swimlane/ngx-datatable
-MIT
-(The MIT License)
-
-Copyright (c) 2016 Swimlane <info@swimlane.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-awesome-bootstrap-checkbox
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 flatlogic.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-bootstrap
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2011-2019 Twitter, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-chart.js
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2018 Chart.js Contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-chartjs-color
-MIT
-Copyright (c) 2012 Heather Arthur
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-chartjs-color-string
-MIT
-Copyright (c) 2011 Heather Arthur <fayearthur@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-color-convert
-Copyright (c) 2011 Heather Arthur <fayearthur@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-color-name
-MIT
-The MIT License (MIT)
-Copyright (c) 2015 Dmitry Ivanov
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-core-js
-MIT
-Copyright (c) 2014-2019 Denis Pushkarev
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-detect-browser
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2019 Damon Oehlman <damon.oehlman@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-fork-awesome
-(OFL-1.1 AND MIT)
-/!\ The MIT License only applies to all CSS and LESS files in the following
-directories: fork-awesome/css/, fork-awesome/less/, and fork-awesome/scss/.
-
-MIT License
-
-Copyright (c) 2018 Dave Gandy & Fork Awesome
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-*******************************************************************************
-
-/!\ The Creative Commons Attribution 3.0 Unported License applies to all Fork
-Awesome project files that are not a part of the Font or Code licenses.
-
-Creative Commons Legal Code
-
-Attribution 3.0 Unported
-
-    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
-    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
-    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
-    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
-    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
-    DAMAGES RESULTING FROM ITS USE.
-
-License
-
-THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
-COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
-COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
-AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
-
-BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
-TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
-BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
-CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
-CONDITIONS.
-
-1. Definitions
-
- a. "Adaptation" means a work based upon the Work, or upon the Work and
-    other pre-existing works, such as a translation, adaptation,
-    derivative work, arrangement of music or other alterations of a
-    literary or artistic work, or phonogram or performance and includes
-    cinematographic adaptations or any other form in which the Work may be
-    recast, transformed, or adapted including in any form recognizably
-    derived from the original, except that a work that constitutes a
-    Collection will not be considered an Adaptation for the purpose of
-    this License. For the avoidance of doubt, where the Work is a musical
-    work, performance or phonogram, the synchronization of the Work in
-    timed-relation with a moving image ("synching") will be considered an
-    Adaptation for the purpose of this License.
- b. "Collection" means a collection of literary or artistic works, such as
-    encyclopedias and anthologies, or performances, phonograms or
-    broadcasts, or other works or subject matter other than works listed
-    in Section 1(f) below, which, by reason of the selection and
-    arrangement of their contents, constitute intellectual creations, in
-    which the Work is included in its entirety in unmodified form along
-    with one or more other contributions, each constituting separate and
-    independent works in themselves, which together are assembled into a
-    collective whole. A work that constitutes a Collection will not be
-    considered an Adaptation (as defined above) for the purposes of this
-    License.
- c. "Distribute" means to make available to the public the original and
-    copies of the Work or Adaptation, as appropriate, through sale or
-    other transfer of ownership.
- d. "Licensor" means the individual, individuals, entity or entities that
-    offer(s) the Work under the terms of this License.
- e. "Original Author" means, in the case of a literary or artistic work,
-    the individual, individuals, entity or entities who created the Work
-    or if no individual or entity can be identified, the publisher; and in
-    addition (i) in the case of a performance the actors, singers,
-    musicians, dancers, and other persons who act, sing, deliver, declaim,
-    play in, interpret or otherwise perform literary or artistic works or
-    expressions of folklore; (ii) in the case of a phonogram the producer
-    being the person or legal entity who first fixes the sounds of a
-    performance or other sounds; and, (iii) in the case of broadcasts, the
-    organization that transmits the broadcast.
- f. "Work" means the literary and/or artistic work offered under the terms
-    of this License including without limitation any production in the
-    literary, scientific and artistic domain, whatever may be the mode or
-    form of its expression including digital form, such as a book,
-    pamphlet and other writing; a lecture, address, sermon or other work
-    of the same nature; a dramatic or dramatico-musical work; a
-    choreographic work or entertainment in dumb show; a musical
-    composition with or without words; a cinematographic work to which are
-    assimilated works expressed by a process analogous to cinematography;
-    a work of drawing, painting, architecture, sculpture, engraving or
-    lithography; a photographic work to which are assimilated works
-    expressed by a process analogous to photography; a work of applied
-    art; an illustration, map, plan, sketch or three-dimensional work
-    relative to geography, topography, architecture or science; a
-    performance; a broadcast; a phonogram; a compilation of data to the
-    extent it is protected as a copyrightable work; or a work performed by
-    a variety or circus performer to the extent it is not otherwise
-    considered a literary or artistic work.
- g. "You" means an individual or entity exercising rights under this
-    License who has not previously violated the terms of this License with
-    respect to the Work, or who has received express permission from the
-    Licensor to exercise rights under this License despite a previous
-    violation.
- h. "Publicly Perform" means to perform public recitations of the Work and
-    to communicate to the public those public recitations, by any means or
-    process, including by wire or wireless means or public digital
-    performances; to make available to the public Works in such a way that
-    members of the public may access these Works from a place and at a
-    place individually chosen by them; to perform the Work to the public
-    by any means or process and the communication to the public of the
-    performances of the Work, including by public digital performance; to
-    broadcast and rebroadcast the Work by any means including signs,
-    sounds or images.
- i. "Reproduce" means to make copies of the Work by any means including
-    without limitation by sound or visual recordings and the right of
-    fixation and reproducing fixations of the Work, including storage of a
-    protected performance or phonogram in digital form or other electronic
-    medium.
-
-2. Fair Dealing Rights. Nothing in this License is intended to reduce,
-limit, or restrict any uses free from copyright or rights arising from
-limitations or exceptions that are provided for in connection with the
-copyright protection under copyright law or other applicable laws.
-
-3. License Grant. Subject to the terms and conditions of this License,
-Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
-perpetual (for the duration of the applicable copyright) license to
-exercise the rights in the Work as stated below:
-
- a. to Reproduce the Work, to incorporate the Work into one or more
-    Collections, and to Reproduce the Work as incorporated in the
-    Collections;
- b. to create and Reproduce Adaptations provided that any such Adaptation,
-    including any translation in any medium, takes reasonable steps to
-    clearly label, demarcate or otherwise identify that changes were made
-    to the original Work. For example, a translation could be marked "The
-    original work was translated from English to Spanish," or a
-    modification could indicate "The original work has been modified.";
- c. to Distribute and Publicly Perform the Work including as incorporated
-    in Collections; and,
- d. to Distribute and Publicly Perform Adaptations.
- e. For the avoidance of doubt:
-
-     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
-        which the right to collect royalties through any statutory or
-        compulsory licensing scheme cannot be waived, the Licensor
-        reserves the exclusive right to collect such royalties for any
-        exercise by You of the rights granted under this License;
-    ii. Waivable Compulsory License Schemes. In those jurisdictions in
-        which the right to collect royalties through any statutory or
-        compulsory licensing scheme can be waived, the Licensor waives the
-        exclusive right to collect such royalties for any exercise by You
-        of the rights granted under this License; and,
-   iii. Voluntary License Schemes. The Licensor waives the right to
-        collect royalties, whether individually or, in the event that the
-        Licensor is a member of a collecting society that administers
-        voluntary licensing schemes, via that society, from any exercise
-        by You of the rights granted under this License.
-
-The above rights may be exercised in all media and formats whether now
-known or hereafter devised. The above rights include the right to make
-such modifications as are technically necessary to exercise the rights in
-other media and formats. Subject to Section 8(f), all rights not expressly
-granted by Licensor are hereby reserved.
-
-4. Restrictions. The license granted in Section 3 above is expressly made
-subject to and limited by the following restrictions:
-
- a. You may Distribute or Publicly Perform the Work only under the terms
-    of this License. You must include a copy of, or the Uniform Resource
-    Identifier (URI) for, this License with every copy of the Work You
-    Distribute or Publicly Perform. You may not offer or impose any terms
-    on the Work that restrict the terms of this License or the ability of
-    the recipient of the Work to exercise the rights granted to that
-    recipient under the terms of the License. You may not sublicense the
-    Work. You must keep intact all notices that refer to this License and
-    to the disclaimer of warranties with every copy of the Work You
-    Distribute or Publicly Perform. When You Distribute or Publicly
-    Perform the Work, You may not impose any effective technological
-    measures on the Work that restrict the ability of a recipient of the
-    Work from You to exercise the rights granted to that recipient under
-    the terms of the License. This Section 4(a) applies to the Work as
-    incorporated in a Collection, but this does not require the Collection
-    apart from the Work itself to be made subject to the terms of this
-    License. If You create a Collection, upon notice from any Licensor You
-    must, to the extent practicable, remove from the Collection any credit
-    as required by Section 4(b), as requested. If You create an
-    Adaptation, upon notice from any Licensor You must, to the extent
-    practicable, remove from the Adaptation any credit as required by
-    Section 4(b), as requested.
- b. If You Distribute, or Publicly Perform the Work or any Adaptations or
-    Collections, You must, unless a request has been made pursuant to
-    Section 4(a), keep intact all copyright notices for the Work and
-    provide, reasonable to the medium or means You are utilizing: (i) the
-    name of the Original Author (or pseudonym, if applicable) if supplied,
-    and/or if the Original Author and/or Licensor designate another party
-    or parties (e.g., a sponsor institute, publishing entity, journal) for
-    attribution ("Attribution Parties") in Licensor's copyright notice,
-    terms of service or by other reasonable means, the name of such party
-    or parties; (ii) the title of the Work if supplied; (iii) to the
-    extent reasonably practicable, the URI, if any, that Licensor
-    specifies to be associated with the Work, unless such URI does not
-    refer to the copyright notice or licensing information for the Work;
-    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
-    a credit identifying the use of the Work in the Adaptation (e.g.,
-    "French translation of the Work by Original Author," or "Screenplay
-    based on original Work by Original Author"). The credit required by
-    this Section 4 (b) may be implemented in any reasonable manner;
-    provided, however, that in the case of a Adaptation or Collection, at
-    a minimum such credit will appear, if a credit for all contributing
-    authors of the Adaptation or Collection appears, then as part of these
-    credits and in a manner at least as prominent as the credits for the
-    other contributing authors. For the avoidance of doubt, You may only
-    use the credit required by this Section for the purpose of attribution
-    in the manner set out above and, by exercising Your rights under this
-    License, You may not implicitly or explicitly assert or imply any
-    connection with, sponsorship or endorsement by the Original Author,
-    Licensor and/or Attribution Parties, as appropriate, of You or Your
-    use of the Work, without the separate, express prior written
-    permission of the Original Author, Licensor and/or Attribution
-    Parties.
- c. Except as otherwise agreed in writing by the Licensor or as may be
-    otherwise permitted by applicable law, if You Reproduce, Distribute or
-    Publicly Perform the Work either by itself or as part of any
-    Adaptations or Collections, You must not distort, mutilate, modify or
-    take other derogatory action in relation to the Work which would be
-    prejudicial to the Original Author's honor or reputation. Licensor
-    agrees that in those jurisdictions (e.g. Japan), in which any exercise
-    of the right granted in Section 3(b) of this License (the right to
-    make Adaptations) would be deemed to be a distortion, mutilation,
-    modification or other derogatory action prejudicial to the Original
-    Author's honor and reputation, the Licensor will waive or not assert,
-    as appropriate, this Section, to the fullest extent permitted by the
-    applicable national law, to enable You to reasonably exercise Your
-    right under Section 3(b) of this License (right to make Adaptations)
-    but not otherwise.
-
-5. Representations, Warranties and Disclaimer
-
-UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
-OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
-KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
-INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
-FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
-LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
-WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
-OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
-
-6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
-LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
-ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
-ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. Termination
-
- a. This License and the rights granted hereunder will terminate
-    automatically upon any breach by You of the terms of this License.
-    Individuals or entities who have received Adaptations or Collections
-    from You under this License, however, will not have their licenses
-    terminated provided such individuals or entities remain in full
-    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
-    survive any termination of this License.
- b. Subject to the above terms and conditions, the license granted here is
-    perpetual (for the duration of the applicable copyright in the Work).
-    Notwithstanding the above, Licensor reserves the right to release the
-    Work under different license terms or to stop distributing the Work at
-    any time; provided, however that any such election will not serve to
-    withdraw this License (or any other license that has been, or is
-    required to be, granted under the terms of this License), and this
-    License will continue in full force and effect unless terminated as
-    stated above.
-
-8. Miscellaneous
-
- a. Each time You Distribute or Publicly Perform the Work or a Collection,
-    the Licensor offers to the recipient a license to the Work on the same
-    terms and conditions as the license granted to You under this License.
- b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
-    offers to the recipient a license to the original Work on the same
-    terms and conditions as the license granted to You under this License.
- c. If any provision of this License is invalid or unenforceable under
-    applicable law, it shall not affect the validity or enforceability of
-    the remainder of the terms of this License, and without further action
-    by the parties to this agreement, such provision shall be reformed to
-    the minimum extent necessary to make such provision valid and
-    enforceable.
- d. No term or provision of this License shall be deemed waived and no
-    breach consented to unless such waiver or consent shall be in writing
-    and signed by the party to be charged with such waiver or consent.
- e. This License constitutes the entire agreement between the parties with
-    respect to the Work licensed here. There are no understandings,
-    agreements or representations with respect to the Work not specified
-    here. Licensor shall not be bound by any additional provisions that
-    may appear in any communication from You. This License may not be
-    modified without the mutual written agreement of the Licensor and You.
- f. The rights granted under, and the subject matter referenced, in this
-    License were drafted utilizing the terminology of the Berne Convention
-    for the Protection of Literary and Artistic Works (as amended on
-    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
-    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
-    and the Universal Copyright Convention (as revised on July 24, 1971).
-    These rights and subject matter take effect in the relevant
-    jurisdiction in which the License terms are sought to be enforced
-    according to the corresponding provisions of the implementation of
-    those treaty provisions in the applicable national law. If the
-    standard suite of rights granted under applicable copyright law
-    includes additional rights not granted under this License, such
-    additional rights are deemed to be included in the License; this
-    License is not intended to restrict the license of any rights under
-    applicable law.
-
-
-Creative Commons Notice
-
-    Creative Commons is not a party to this License, and makes no warranty
-    whatsoever in connection with the Work. Creative Commons will not be
-    liable to You or any party on any legal theory for any damages
-    whatsoever, including without limitation any general, special,
-    incidental or consequential damages arising in connection to this
-    license. Notwithstanding the foregoing two (2) sentences, if Creative
-    Commons has expressly identified itself as the Licensor hereunder, it
-    shall have all rights and obligations of Licensor.
-
-    Except for the limited purpose of indicating to the public that the
-    Work is licensed under the CCPL, Creative Commons does not authorize
-    the use by either party of the trademark "Creative Commons" or any
-    related trademark or logo of Creative Commons without the prior
-    written consent of Creative Commons. Any permitted use will be in
-    compliance with Creative Commons' then-current trademark usage
-    guidelines, as may be published on its website or otherwise made
-    available upon request from time to time. For the avoidance of doubt,
-    this trademark restriction does not form part of this License.
-
-    Creative Commons may be contacted at https://creativecommons.org/.
-
-*******************************************************************************
-
-/!\ The SIL OPEN FONT LICENSE applies to all desktop and webfont files in the
-following directory: fonts/ and to all glyphs and SVG files in the following
-directory: src/icons/svg/.
-
-
-Copyright (c) 2018, Fork Awesome (https://forkawesome.github.io),
-with Reserved Font Name Fork Awesome.
-
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
-
-
-lodash
-MIT
-Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
-
-
-moment
-MIT
-Copyright (c) JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-
-ng-block-ui
-MIT
-MIT License
-
-Copyright (c) 2017 
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-ng2-charts
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2015-2017 Dmitriy Shekhovtsov <valorkin@gmail.com>
-Copyright (c) 2015-2017 Valor Software
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-
-ng2-tree
-MIT
-
-ngx-bootstrap/accordion
-
-ngx-bootstrap/alert
-
-ngx-bootstrap/chronos
-The MIT License (MIT)
-
-Copyright (c) Valor Software
-Copyright (c) Dmitriy Shekhovtsov<valorkin@gmail.com>
-Copyright (c) moment/moment
-Copyright (c) JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-
-ngx-bootstrap/collapse
-
-ngx-bootstrap/component-loader
-
-ngx-bootstrap/datepicker
-
-ngx-bootstrap/dropdown
-
-ngx-bootstrap/mini-ngrx
-
-ngx-bootstrap/modal
-
-ngx-bootstrap/popover
-
-ngx-bootstrap/positioning
-
-ngx-bootstrap/progressbar
-
-ngx-bootstrap/tabs
-
-ngx-bootstrap/timepicker
-
-ngx-bootstrap/tooltip
-
-ngx-bootstrap/typeahead
-
-ngx-bootstrap/utils
-
-ngx-toastr
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2018 Scott Cooper
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-punycode
-MIT
-Copyright Mathias Bynens <https://mathiasbynens.be/>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-querystring
-MIT
-
-Copyright 2012 Irakli Gozalishvili. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
-
-rxjs
-Apache-2.0
-                               Apache License
-                         Version 2.0, January 2004
-                      http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
-    "License" shall mean the terms and conditions for use, reproduction,
-    and distribution as defined by Sections 1 through 9 of this document.
-
-    "Licensor" shall mean the copyright owner or entity authorized by
-    the copyright owner that is granting the License.
-
-    "Legal Entity" shall mean the union of the acting entity and all
-    other entities that control, are controlled by, or are under common
-    control with that entity. For the purposes of this definition,
-    "control" means (i) the power, direct or indirect, to cause the
-    direction or management of such entity, whether by contract or
-    otherwise, or (ii) ownership of fifty percent (50%) or more of the
-    outstanding shares, or (iii) beneficial ownership of such entity.
-
-    "You" (or "Your") shall mean an individual or Legal Entity
-    exercising permissions granted by this License.
-
-    "Source" form shall mean the preferred form for making modifications,
-    including but not limited to software source code, documentation
-    source, and configuration files.
-
-    "Object" form shall mean any form resulting from mechanical
-    transformation or translation of a Source form, including but
-    not limited to compiled object code, generated documentation,
-    and conversions to other media types.
-
-    "Work" shall mean the work of authorship, whether in Source or
-    Object form, made available under the License, as indicated by a
-    copyright notice that is included in or attached to the work
-    (an example is provided in the Appendix below).
-
-    "Derivative Works" shall mean any work, whether in Source or Object
-    form, that is based on (or derived from) the Work and for which the
-    editorial revisions, annotations, elaborations, or other modifications
-    represent, as a whole, an original work of authorship. For the purposes
-    of this License, Derivative Works shall not include works that remain
-    separable from, or merely link (or bind by name) to the interfaces of,
-    the Work and Derivative Works thereof.
-
-    "Contribution" shall mean any work of authorship, including
-    the original version of the Work and any modifications or additions
-    to that Work or Derivative Works thereof, that is intentionally
-    submitted to Licensor for inclusion in the Work by the copyright owner
-    or by an individual or Legal Entity authorized to submit on behalf of
-    the copyright owner. For the purposes of this definition, "submitted"
-    means any form of electronic, verbal, or written communication sent
-    to the Licensor or its representatives, including but not limited to
-    communication on electronic mailing lists, source code control systems,
-    and issue tracking systems that are managed by, or on behalf of, the
-    Licensor for the purpose of discussing and improving the Work, but
-    excluding communication that is conspicuously marked or otherwise
-    designated in writing by the copyright owner as "Not a Contribution."
-
-    "Contributor" shall mean Licensor and any individual or Legal Entity
-    on behalf of whom a Contribution has been received by Licensor and
-    subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    copyright license to reproduce, prepare Derivative Works of,
-    publicly display, publicly perform, sublicense, and distribute the
-    Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    (except as stated in this section) patent license to make, have made,
-    use, offer to sell, sell, import, and otherwise transfer the Work,
-    where such license applies only to those patent claims licensable
-    by such Contributor that are necessarily infringed by their
-    Contribution(s) alone or by combination of their Contribution(s)
-    with the Work to which such Contribution(s) was submitted. If You
-    institute patent litigation against any entity (including a
-    cross-claim or counterclaim in a lawsuit) alleging that the Work
-    or a Contribution incorporated within the Work constitutes direct
-    or contributory patent infringement, then any patent licenses
-    granted to You under this License for that Work shall terminate
-    as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
-    Work or Derivative Works thereof in any medium, with or without
-    modifications, and in Source or Object form, provided that You
-    meet the following conditions:
-
-    (a) You must give any other recipients of the Work or
-        Derivative Works a copy of this License; and
-
-    (b) You must cause any modified files to carry prominent notices
-        stating that You changed the files; and
-
-    (c) You must retain, in the Source form of any Derivative Works
-        that You distribute, all copyright, patent, trademark, and
-        attribution notices from the Source form of the Work,
-        excluding those notices that do not pertain to any part of
-        the Derivative Works; and
-
-    (d) If the Work includes a "NOTICE" text file as part of its
-        distribution, then any Derivative Works that You distribute must
-        include a readable copy of the attribution notices contained
-        within such NOTICE file, excluding those notices that do not
-        pertain to any part of the Derivative Works, in at least one
-        of the following places: within a NOTICE text file distributed
-        as part of the Derivative Works; within the Source form or
-        documentation, if provided along with the Derivative Works; or,
-        within a display generated by the Derivative Works, if and
-        wherever such third-party notices normally appear. The contents
-        of the NOTICE file are for informational purposes only and
-        do not modify the License. You may add Your own attribution
-        notices within Derivative Works that You distribute, alongside
-        or as an addendum to the NOTICE text from the Work, provided
-        that such additional attribution notices cannot be construed
-        as modifying the License.
-
-    You may add Your own copyright statement to Your modifications and
-    may provide additional or different license terms and conditions
-    for use, reproduction, or distribution of Your modifications, or
-    for any such Derivative Works as a whole, provided Your use,
-    reproduction, and distribution of the Work otherwise complies with
-    the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
-    any Contribution intentionally submitted for inclusion in the Work
-    by You to the Licensor shall be under the terms and conditions of
-    this License, without any additional terms or conditions.
-    Notwithstanding the above, nothing herein shall supersede or modify
-    the terms of any separate license agreement you may have executed
-    with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
-    names, trademarks, service marks, or product names of the Licensor,
-    except as required for reasonable and customary use in describing the
-    origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
-    agreed to in writing, Licensor provides the Work (and each
-    Contributor provides its Contributions) on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-    implied, including, without limitation, any warranties or conditions
-    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-    PARTICULAR PURPOSE. You are solely responsible for determining the
-    appropriateness of using or redistributing the Work and assume any
-    risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
-    whether in tort (including negligence), contract, or otherwise,
-    unless required by applicable law (such as deliberate and grossly
-    negligent acts) or agreed to in writing, shall any Contributor be
-    liable to You for damages, including any direct, indirect, special,
-    incidental, or consequential damages of any character arising as a
-    result of this License or out of the use or inability to use the
-    Work (including but not limited to damages for loss of goodwill,
-    work stoppage, computer failure or malfunction, or any and all
-    other commercial damages or losses), even if such Contributor
-    has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
-    the Work or Derivative Works thereof, You may choose to offer,
-    and charge a fee for, acceptance of support, warranty, indemnity,
-    or other liability obligations and/or rights consistent with this
-    License. However, in accepting such obligations, You may act only
-    on Your own behalf and on Your sole responsibility, not on behalf
-    of any other Contributor, and only if You agree to indemnify,
-    defend, and hold each Contributor harmless for any liability
-    incurred by, or claims asserted against, such Contributor by reason
-    of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
-    To apply the Apache License to your work, attach the following
-    boilerplate notice, with the fields enclosed by brackets "[]"
-    replaced with your own identifying information. (Don't include
-    the brackets!)  The text should be enclosed in the appropriate
-    comment syntax for the file format. We also recommend that a
-    file or class name and description of purpose be included on the
-    same "printed page" as the copyright notice for easier
-    identification within third-party archives.
-
- Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
-
- 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
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-rxjs-compat
-Apache-2.0
-                               Apache License
-                         Version 2.0, January 2004
-                      http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
-    "License" shall mean the terms and conditions for use, reproduction,
-    and distribution as defined by Sections 1 through 9 of this document.
-
-    "Licensor" shall mean the copyright owner or entity authorized by
-    the copyright owner that is granting the License.
-
-    "Legal Entity" shall mean the union of the acting entity and all
-    other entities that control, are controlled by, or are under common
-    control with that entity. For the purposes of this definition,
-    "control" means (i) the power, direct or indirect, to cause the
-    direction or management of such entity, whether by contract or
-    otherwise, or (ii) ownership of fifty percent (50%) or more of the
-    outstanding shares, or (iii) beneficial ownership of such entity.
-
-    "You" (or "Your") shall mean an individual or Legal Entity
-    exercising permissions granted by this License.
-
-    "Source" form shall mean the preferred form for making modifications,
-    including but not limited to software source code, documentation
-    source, and configuration files.
-
-    "Object" form shall mean any form resulting from mechanical
-    transformation or translation of a Source form, including but
-    not limited to compiled object code, generated documentation,
-    and conversions to other media types.
-
-    "Work" shall mean the work of authorship, whether in Source or
-    Object form, made available under the License, as indicated by a
-    copyright notice that is included in or attached to the work
-    (an example is provided in the Appendix below).
-
-    "Derivative Works" shall mean any work, whether in Source or Object
-    form, that is based on (or derived from) the Work and for which the
-    editorial revisions, annotations, elaborations, or other modifications
-    represent, as a whole, an original work of authorship. For the purposes
-    of this License, Derivative Works shall not include works that remain
-    separable from, or merely link (or bind by name) to the interfaces of,
-    the Work and Derivative Works thereof.
-
-    "Contribution" shall mean any work of authorship, including
-    the original version of the Work and any modifications or additions
-    to that Work or Derivative Works thereof, that is intentionally
-    submitted to Licensor for inclusion in the Work by the copyright owner
-    or by an individual or Legal Entity authorized to submit on behalf of
-    the copyright owner. For the purposes of this definition, "submitted"
-    means any form of electronic, verbal, or written communication sent
-    to the Licensor or its representatives, including but not limited to
-    communication on electronic mailing lists, source code control systems,
-    and issue tracking systems that are managed by, or on behalf of, the
-    Licensor for the purpose of discussing and improving the Work, but
-    excluding communication that is conspicuously marked or otherwise
-    designated in writing by the copyright owner as "Not a Contribution."
-
-    "Contributor" shall mean Licensor and any individual or Legal Entity
-    on behalf of whom a Contribution has been received by Licensor and
-    subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    copyright license to reproduce, prepare Derivative Works of,
-    publicly display, publicly perform, sublicense, and distribute the
-    Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
-    this License, each Contributor hereby grants to You a perpetual,
-    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-    (except as stated in this section) patent license to make, have made,
-    use, offer to sell, sell, import, and otherwise transfer the Work,
-    where such license applies only to those patent claims licensable
-    by such Contributor that are necessarily infringed by their
-    Contribution(s) alone or by combination of their Contribution(s)
-    with the Work to which such Contribution(s) was submitted. If You
-    institute patent litigation against any entity (including a
-    cross-claim or counterclaim in a lawsuit) alleging that the Work
-    or a Contribution incorporated within the Work constitutes direct
-    or contributory patent infringement, then any patent licenses
-    granted to You under this License for that Work shall terminate
-    as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
-    Work or Derivative Works thereof in any medium, with or without
-    modifications, and in Source or Object form, provided that You
-    meet the following conditions:
-
-    (a) You must give any other recipients of the Work or
-        Derivative Works a copy of this License; and
-
-    (b) You must cause any modified files to carry prominent notices
-        stating that You changed the files; and
-
-    (c) You must retain, in the Source form of any Derivative Works
-        that You distribute, all copyright, patent, trademark, and
-        attribution notices from the Source form of the Work,
-        excluding those notices that do not pertain to any part of
-        the Derivative Works; and
-
-    (d) If the Work includes a "NOTICE" text file as part of its
-        distribution, then any Derivative Works that You distribute must
-        include a readable copy of the attribution notices contained
-        within such NOTICE file, excluding those notices that do not
-        pertain to any part of the Derivative Works, in at least one
-        of the following places: within a NOTICE text file distributed
-        as part of the Derivative Works; within the Source form or
-        documentation, if provided along with the Derivative Works; or,
-        within a display generated by the Derivative Works, if and
-        wherever such third-party notices normally appear. The contents
-        of the NOTICE file are for informational purposes only and
-        do not modify the License. You may add Your own attribution
-        notices within Derivative Works that You distribute, alongside
-        or as an addendum to the NOTICE text from the Work, provided
-        that such additional attribution notices cannot be construed
-        as modifying the License.
-
-    You may add Your own copyright statement to Your modifications and
-    may provide additional or different license terms and conditions
-    for use, reproduction, or distribution of Your modifications, or
-    for any such Derivative Works as a whole, provided Your use,
-    reproduction, and distribution of the Work otherwise complies with
-    the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
-    any Contribution intentionally submitted for inclusion in the Work
-    by You to the Licensor shall be under the terms and conditions of
-    this License, without any additional terms or conditions.
-    Notwithstanding the above, nothing herein shall supersede or modify
-    the terms of any separate license agreement you may have executed
-    with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
-    names, trademarks, service marks, or product names of the Licensor,
-    except as required for reasonable and customary use in describing the
-    origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
-    agreed to in writing, Licensor provides the Work (and each
-    Contributor provides its Contributions) on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-    implied, including, without limitation, any warranties or conditions
-    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-    PARTICULAR PURPOSE. You are solely responsible for determining the
-    appropriateness of using or redistributing the Work and assume any
-    risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
-    whether in tort (including negligence), contract, or otherwise,
-    unless required by applicable law (such as deliberate and grossly
-    negligent acts) or agreed to in writing, shall any Contributor be
-    liable to You for damages, including any direct, indirect, special,
-    incidental, or consequential damages of any character arising as a
-    result of this License or out of the use or inability to use the
-    Work (including but not limited to damages for loss of goodwill,
-    work stoppage, computer failure or malfunction, or any and all
-    other commercial damages or losses), even if such Contributor
-    has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
-    the Work or Derivative Works thereof, You may choose to offer,
-    and charge a fee for, acceptance of support, warranty, indemnity,
-    or other liability obligations and/or rights consistent with this
-    License. However, in accepting such obligations, You may act only
-    on Your own behalf and on Your sole responsibility, not on behalf
-    of any other Contributor, and only if You agree to indemnify,
-    defend, and hold each Contributor harmless for any liability
-    incurred by, or claims asserted against, such Contributor by reason
-    of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
-    To apply the Apache License to your work, attach the following
-    boilerplate notice, with the fields enclosed by brackets "[]"
-    replaced with your own identifying information. (Don't include
-    the brackets!)  The text should be enclosed in the appropriate
-    comment syntax for the file format. We also recommend that a
-    file or class name and description of purpose be included on the
-    same "printed page" as the copyright notice for easier
-    identification within third-party archives.
-
- Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
-
- 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
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-tslib
-Apache-2.0
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/ 
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-
-url
-MIT
-The MIT License (MIT)
-
-Copyright Joyent, Inc. and other Node contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-uuid
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2010-2016 Robert Kieffer and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-webpack
-MIT
-Copyright JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-zone.js
-MIT
-The MIT License
-
-Copyright (c) 2016-2018 Google, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-undefined
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/6.2177204066439fcd8170.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/6.2177204066439fcd8170.js
deleted file mode 100644 (file)
index 6493975..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{EmSq:function(l,n,u){"use strict";u.d(n,"a",function(){return i});var e=u("CcnG"),t=u("LvDl"),i=(u("Fgil"),u("aXbf"),function(){function l(l,n,u,t){this.elementRef=l,this.control=n,this.dimlessBinaryPipe=u,this.formatter=t,this.ngModelChange=new e.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){this.setValue(this.el.value)},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l),u=this.round(n);this.el.value=this.dimlessBinaryPipe.transform(u),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!t.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!t.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!t.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}())},OcYo:function(l,n,u){"use strict";u.d(n,"a",function(){return e});var e=function(){function l(l,n,u){this.elementRef=l,this.renderer=n,this.toastr=u}return l.prototype.ngOnInit=function(){var l=this.renderer.createElement("i");this.renderer.addClass(l,"icon-prepend"),this.renderer.addClass(l,"fa"),this.renderer.addClass(l,"fa-clipboard"),this.renderer.appendChild(this.elementRef.nativeElement,l)},l.prototype.getInputElement=function(){return document.getElementById(this.cdCopy2ClipboardButton)},l.prototype.onClick=function(){try{var l=document.createElement("input");l.value=this.getInputElement().value,document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),this.toastr.success("Copied text to the clipboard successfully.")}catch(n){this.toastr.error("Failed to copy text to the clipboard.")}},l}()},Znkk:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),t=u("sne2"),i=u("Avrn"),o=u("+0ag"),a=u("mSOc"),r=function(){function l(l,n,u){this.route=l,this.summaryService=n,this.cephReleaseNamePipe=u,this.message="The Object Gateway service is not configured."}return l.prototype.ngOnInit=function(){var l=this,n=this.summaryService.subscribe(function(u){if(u){var e=l.cephReleaseNamePipe.transform(u.version);l.docsUrl="http://docs.ceph.com/docs/"+e+"/mgr/dashboard/#enabling-the-object-gateway-management-frontend",setTimeout(function(){n.unsubscribe()},0)}});this.routeParamsSubscribe=this.route.params.subscribe(function(n){l.message=n.message})},l.prototype.ngOnDestroy=function(){this.routeParamsSubscribe.unsubscribe()},l}(),s=u("gIcY"),d=u("LvDl"),c=u("mrSG"),p=u("t/Na"),f=u("VNr4"),m=u("F/XL"),g=u("psW0"),v=u("xTzq"),b=u("pL04"),h=function(){function l(l){this.http=l,this.url="api/rgw/bucket"}return l.prototype.list=function(){var l=this;return this.enumerate().pipe(Object(g.a)(function(n){return n.length>0?Object(f.a)(n.map(function(n){return l.get(n)})):Object(m.a)([])}))},l.prototype.enumerate=function(){return this.http.get(this.url)},l.prototype.get=function(l){return this.http.get(this.url+"/"+l)},l.prototype.create=function(l,n){var u=new p.h;return u=(u=u.append("bucket",l)).append("uid",n),this.http.post(this.url,null,{params:u})},l.prototype.update=function(l,n,u){var e=new p.h;return e=(e=e.append("bucket_id",n)).append("uid",u),this.http.put(this.url+"/"+l,null,{params:e})},l.prototype.delete=function(l,n){void 0===n&&(n=!0);var u=new p.h;return u=u.append("purge_objects",n?"true":"false"),this.http.delete(this.url+"/"+l,{params:u})},l.prototype.exists=function(l){return this.enumerate().pipe(Object(g.a)(function(n){var u=d.indexOf(n,l);return Object(m.a)(-1!==u)}))},l.ngInjectableDef=e.defineInjectable({factory:function(){return new l(e.inject(p.c))},token:l,providedIn:b.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[p.c])],l)}(),C=u("P8lu"),y=u("mtw6"),_=u("2EZI"),k=u("9nlD"),R=function(){function l(l,n,u,e,i,o,a,r){this.route=l,this.router=n,this.formBuilder=u,this.rgwBucketService=e,this.rgwUserService=i,this.notificationService=o,this.i18n=a,this.actionLabels=r,this.editing=!1,this.error=!1,this.loading=!1,this.owners=null,this.editing=this.router.url.startsWith("/rgw/bucket/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("bucket"),this.createForm()}return l.prototype.createForm=function(){this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[s.A.required],[this.bucketNameValidator()]],owner:[null,[s.A.required]]})},l.prototype.ngOnInit=function(){var l=this;this.rgwUserService.enumerate().subscribe(function(n){l.owners=n.sort()}),this.route.params.subscribe(function(n){if(n.hasOwnProperty("bid")){var u=decodeURIComponent(n.bid);l.loading=!0,l.rgwBucketService.get(u).subscribe(function(n){l.loading=!1;var u=d.clone(l.bucketForm.value),e=d.pick(n,d.keys(l.bucketForm.value));e=d.merge(u,e),l.bucketForm.setValue(e)})}},function(n){l.error=n})},l.prototype.goToListView=function(){this.router.navigate(["/rgw/bucket"])},l.prototype.submit=function(){var l=this;if(this.bucketForm.pristine)this.goToListView();else{var n=this.bucketForm.get("bid"),u=this.bucketForm.get("owner");if(this.editing){var e=this.bucketForm.get("id");this.rgwBucketService.update(n.value,e.value,u.value).subscribe(function(){l.notificationService.show(y.a.success,l.i18n('Updated Object Gateway bucket "{{bid}}"',{bid:n.value})),l.goToListView()},function(){l.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(n.value,u.value).subscribe(function(){l.notificationService.show(y.a.success,l.i18n('Created Object Gateway bucket "{{bid}}"',{bid:n.value})),l.goToListView()},function(){l.bucketForm.setErrors({cdSubmitButton:!0})})}},l.prototype.bucketNameValidator=function(){var l=this.rgwBucketService;return function(n){return new Promise(function(u){n.pristine||""===n.value?u(null):/^[0-9A-Za-z][\w-\.]{2,254}$/.test(n.value)?l.exists(n.value).subscribe(function(l){u(l?{bucketNameExists:!0}:null)}):u({bucketNameInvalid:!0})})}},l}(),I=u("6blF"),w=u("0+/T"),q=u("uIqm"),E=u("vCyI"),x=u("aexS"),T=u("EgGo"),V=new T.a("rgw/bucket"),S=function(){function l(l,n,u,e,t,i){var o=this;this.authStorageService=l,this.rgwBucketService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.columns=[],this.buckets=[],this.selection=new E.a,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Name"),prop:"bid",flexGrow:1},{name:this.i18n("Owner"),prop:"owner",flexGrow:1}],this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return o.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return o.urlBuilder.getEdit(o.selection.first()&&""+encodeURIComponent(o.selection.first().bid))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return o.deleteAction()},name:this.actionLabels.DELETE}]}return l.prototype.getBucketList=function(l){var n=this;this.rgwBucketService.list().subscribe(function(l){n.buckets=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteAction=function(){var l=this;this.bsModalService.show(w.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"bucket":"buckets"),submitActionObservable:function(){return new I.a(function(n){Object(f.a)(l.selection.selected.map(function(n){return l.rgwBucketService.delete(n.bid)})).subscribe(null,function(u){n.error(u),l.table.refreshBtn()},function(){n.complete(),l.table.refreshBtn()})})}}})},l}(),D=function(){function l(l){this.http=l,this.url="api/rgw/daemon"}return l.prototype.list=function(){return this.http.get(this.url)},l.prototype.get=function(l){return this.http.get(this.url+"/"+l)},l.ngInjectableDef=e.defineInjectable({factory:function(){return new l(e.inject(p.c))},token:l,providedIn:b.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[p.c])],l)}(),N=u("85J/"),F=function(){function l(l,n,u,e){this.rgwDaemonService=l,this.authStorageService=n,this.i18n=e,this.columns=[],this.daemons=[],this.selection=new E.a,this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:2},{name:this.i18n("Hostname"),prop:"server_hostname",flexGrow:2},{name:this.i18n("Version"),prop:"version",flexGrow:1,pipe:u}]}return l.prototype.getDaemonList=function(l){var n=this;this.rgwDaemonService.list().subscribe(function(l){n.daemons=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l}(),j=u("1Ni5"),P=u("aXbf"),z=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.types=[],this.resource=this.i18n("capability"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({type:[null,[s.A.required]],perm:[null,[s.A.required]]})},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD},l.prototype.setValues=function(l,n){this.formGroup.setValue({type:l,perm:n})},l.prototype.setCapabilities=function(l){var n=this,u=[];l.forEach(function(l){u.push(l.type)}),this.types=[],["users","buckets","metadata","usage","zone"].forEach(function(l){-1===d.indexOf(u,l)&&n.types.push(l)})},l.prototype.onSubmit=function(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()},l}(),B=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.viewing=!0,this.userCandidates=[],this.resource=this.i18n("S3 Key"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({user:[null,[s.A.required]],generate_key:[!0],access_key:[null,[j.a.requiredIf({generate_key:!1})]],secret_key:[null,[j.a.requiredIf({generate_key:!1})]]})},l.prototype.setViewing=function(l){void 0===l&&(l=!0),this.viewing=l,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE},l.prototype.setValues=function(l,n,u){this.formGroup.setValue({user:l,generate_key:d.isEmpty(n),access_key:n,secret_key:u})},l.prototype.setUserCandidates=function(l){this.userCandidates=l},l.prototype.onSubmit=function(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()},l}(),U=function(){return function(){}}(),M=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.subusers=[],this.resource=this.i18n("Subuser"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[s.A.required,this.subuserValidator()]],perm:[null,[s.A.required]],generate_secret:[!0],secret_key:[null,[j.a.requiredIf({generate_secret:!1})]]})},l.prototype.subuserValidator=function(){var l=this;return function(n){return l.editing?null:Object(j.b)(n.value)?null:l.subusers.some(function(u){return d.isEqual(l.getSubuserName(u.id),n.value)})?{subuserIdExists:!0}:null}},l.prototype.getSubuserName=function(l){if(d.isEmpty(l))return l;var n=l.match(/([^:]+)(:(.+))?/);return d.isUndefined(n[3])?n[1]:n[3]},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE},l.prototype.setValues=function(l,n,u){void 0===n&&(n=""),void 0===u&&(u=""),this.formGroup.setValue({uid:l,subuid:this.getSubuserName(n),perm:u,generate_secret:!0,secret_key:null})},l.prototype.setSubusers=function(l){this.subusers=l},l.prototype.onSubmit=function(){var l=this.formGroup.value,n=new U;n.id=l.uid+":"+l.subuid,n.permissions=l.perm,n.generate_secret=l.generate_secret,n.secret_key=l.secret_key,this.submitAction.emit(n),this.bsModalRef.hide()},l}(),A=function(){function l(l,n,u){this.bsModalRef=l,this.i18n=n,this.actionLabels=u,this.resource=this.i18n("Swift Key"),this.action=this.actionLabels.SHOW}return l.prototype.setValues=function(l,n){this.user=l,this.secret_key=n},l}(),O=function(){function l(l,n,u,e,t,i,o,a){this.formBuilder=l,this.route=n,this.router=u,this.rgwUserService=e,this.bsModalService=t,this.notificationService=i,this.i18n=o,this.actionLabels=a,this.editing=!1,this.error=!1,this.loading=!1,this.submitObservables=[],this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.resource=this.i18n("user"),this.subuserLabel=this.i18n("subuser"),this.s3keyLabel=this.i18n("S3 Key"),this.capabilityLabel=this.i18n("capability"),this.createForm()}return l.prototype.createForm=function(){this.userForm=this.formBuilder.group({uid:[null,[s.A.required],[j.a.unique(this.rgwUserService.exists,this.rgwUserService)]],display_name:[null,[s.A.required]],email:[null,[j.a.email],[j.a.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets:[1e3,[s.A.required,s.A.min(0)]],suspended:[!1],generate_key:[!0],access_key:[null,[j.a.requiredIf({generate_key:!1})]],secret_key:[null,[j.a.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[j.a.requiredIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1}),this.quotaMaxSizeValidator]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[s.A.min(0),j.a.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[j.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1}),this.quotaMaxSizeValidator]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[s.A.min(0),j.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})},l.prototype.ngOnInit=function(){var l=this;this.editing=this.router.url.startsWith("/rgw/user/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.route.params.subscribe(function(n){if(n.hasOwnProperty("uid")){var u=decodeURIComponent(n.uid);l.loading=!0;var e=[];e.push(l.rgwUserService.get(u)),e.push(l.rgwUserService.getQuota(u)),Object(f.a)(e).subscribe(function(n){l.loading=!1;var u=d.clone(l.userForm.value),e=d.pick(n[0],d.keys(l.userForm.value));["user","bucket"].forEach(function(l){var u=n[1][l+"_quota"];e[l+"_quota_enabled"]=u.enabled,u.max_size<0?(e[l+"_quota_max_size_unlimited"]=!0,e[l+"_quota_max_size"]=null):(e[l+"_quota_max_size_unlimited"]=!1,e[l+"_quota_max_size"]=u.max_size+" B"),u.max_objects<0?(e[l+"_quota_max_objects_unlimited"]=!0,e[l+"_quota_max_objects"]=null):(e[l+"_quota_max_objects_unlimited"]=!1,e[l+"_quota_max_objects"]=u.max_objects)}),e=d.merge(u,e),l.userForm.setValue(e),l.subusers=n[0].subusers,l.s3Keys=n[0].keys,l.swiftKeys=n[0].swift_keys;var t={"read, write":"*"};n[0].caps.forEach(function(l){l.perm in t&&(l.perm=t[l.perm])}),l.capabilities=n[0].caps},function(n){l.error=n})}})},l.prototype.goToListView=function(){this.router.navigate(["/rgw/user"])},l.prototype.onSubmit=function(){var l,n=this;if(this.userForm.pristine)this.goToListView();else{var u=this.userForm.getValue("uid");if(this.editing){if(this._isGeneralDirty()){var e=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(u,e))}l=this.i18n('Updated Object Gateway user "{{uid}}"',{uid:u})}else e=this._getCreateArgs(),this.submitObservables.push(this.rgwUserService.create(e)),l=this.i18n('Created Object Gateway user "{{uid}}"',{uid:u});if(this._isUserQuotaDirty()){var t=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(u,t))}if(this._isBucketQuotaDirty()){var i=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(u,i))}Object(f.a)(this.submitObservables).subscribe(function(){n.notificationService.show(y.a.success,l),n.goToListView()},function(){n.userForm.setErrors({cdSubmitButton:!0})})}},l.prototype.quotaMaxSizeValidator=function(l){return Object(j.b)(l.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(l.value)?{quotaMaxSize:!0}:(new P.a).toBytes(l.value)<1024?{quotaMaxSize:!0}:null},l.prototype.setSubuser=function(l,n){var u={"full-control":"full","read-write":"readwrite"},e=this.userForm.getValue("uid");this.submitObservables.push(this.rgwUserService.createSubuser(e,{subuser:l.id,access:l.permissions in u?u[l.permissions]:l.permissions,key_type:"swift",secret_key:l.secret_key,generate_secret:l.generate_secret?"true":"false"})),d.isNumber(n)?this.subusers[n]=l:(this.subusers.push(l),this.swiftKeys.push({user:l.id,secret_key:l.generate_secret?"Apply your changes first...":l.secret_key})),this.userForm.markAsDirty()},l.prototype.deleteSubuser=function(l){var n=this.subusers[l];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.userForm.getValue("uid"),n.id)),this.s3Keys=this.s3Keys.filter(function(l){return l.user!==n.id}),this.swiftKeys=this.swiftKeys.filter(function(l){return l.user!==n.id}),this.subusers.splice(l,1),this.userForm.markAsDirty()},l.prototype.setCapability=function(l,n){var u=this.userForm.getValue("uid");if(d.isNumber(n)){var e=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(u,e.type,e.perm)),this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities[n]=l}else this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities.push(l);this.userForm.markAsDirty()},l.prototype.deleteCapability=function(l){var n=this.capabilities[l];this.submitObservables.push(this.rgwUserService.deleteCapability(this.userForm.getValue("uid"),n.type,n.perm)),this.capabilities.splice(l,1),this.userForm.markAsDirty()},l.prototype.setS3Key=function(l,n){if(d.isNumber(n));else{var u=l.user.match(/([^:]+)(:(.+))?/);this.submitObservables.push(this.rgwUserService.addS3Key(u[1],{subuser:u[2]?u[3]:"",generate_key:l.generate_key?"true":"false",access_key:l.access_key,secret_key:l.secret_key})),this.s3Keys.push({user:l.user,access_key:l.generate_key?"Apply your changes first...":l.access_key,secret_key:l.generate_key?"Apply your changes first...":l.secret_key})}this.userForm.markAsDirty()},l.prototype.deleteS3Key=function(l){var n=this.s3Keys[l];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.userForm.getValue("uid"),n.access_key)),this.s3Keys.splice(l,1),this.userForm.markAsDirty()},l.prototype.showSubuserModal=function(l){var n=this,u=this.userForm.getValue("uid"),e=this.bsModalService.show(M);if(d.isNumber(l)){var t=this.subusers[l];e.content.setEditing(),e.content.setValues(u,t.id,t.permissions)}else e.content.setEditing(!1),e.content.setValues(u),e.content.setSubusers(this.subusers);e.content.submitAction.subscribe(function(u){n.setSubuser(u,l)})},l.prototype.showS3KeyModal=function(l){var n=this,u=this.bsModalService.show(B);if(d.isNumber(l)){var e=this.s3Keys[l];u.content.setViewing(),u.content.setValues(e.user,e.access_key,e.secret_key)}else{var t=this._getS3KeyUserCandidates();u.content.setViewing(!1),u.content.setUserCandidates(t),u.content.submitAction.subscribe(function(l){n.setS3Key(l)})}},l.prototype.showSwiftKeyModal=function(l){var n=this.bsModalService.show(A),u=this.swiftKeys[l];n.content.setValues(u.user,u.secret_key)},l.prototype.showCapabilityModal=function(l){var n=this,u=this.bsModalService.show(z);if(d.isNumber(l)){var e=this.capabilities[l];u.content.setEditing(),u.content.setValues(e.type,e.perm)}else u.content.setEditing(!1),u.content.setCapabilities(this.capabilities);u.content.submitAction.subscribe(function(u){n.setCapability(u,l)})},l.prototype._isGeneralDirty=function(){var l=this;return["display_name","email","max_buckets","suspended"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._isUserQuotaDirty=function(){var l=this;return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._isBucketQuotaDirty=function(){var l=this;return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._getCreateArgs=function(){var l={uid:this.userForm.getValue("uid"),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");return d.isString(n)&&n.length>0&&d.merge(l,{email:n}),this.userForm.getValue("generate_key")||d.merge(l,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")}),l},l.prototype._getUpdateArgs=function(){for(var l={},n=0,u=["display_name","email","max_buckets","suspended"];n<u.length;n++){var e=u[n];l[e]=this.userForm.getValue(e)}return l},l.prototype._getUserQuotaArgs=function(){var l={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){var n=(new P.a).toBytes(this.userForm.getValue("user_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("user_quota_max_objects")),l},l.prototype._getBucketQuotaArgs=function(){var l={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){var n=(new P.a).toBytes(this.userForm.getValue("bucket_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("bucket_quota_max_objects")),l},l.prototype._getS3KeyUserCandidates=function(){var l=[],n=this.userForm.getValue("uid");return d.isString(n)&&!d.isEmpty(n)&&l.push(n),this.subusers.forEach(function(n){l.push(n.id)}),this.s3Keys.forEach(function(n){l.push(n.user)}),l=d.uniq(l)},l}(),L=u("x38r"),G=new T.a("rgw/user"),K=function(){function l(l,n,u,e,t,i){var o=this;this.authStorageService=l,this.rgwUserService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.columns=[],this.users=[],this.selection=new E.a,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Username"),prop:"uid",flexGrow:1},{name:this.i18n("Full name"),prop:"display_name",flexGrow:1},{name:this.i18n("Email address"),prop:"email",flexGrow:1},{name:this.i18n("Suspended"),prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:L.a.checkIcon},{name:this.i18n("Max. buckets"),prop:"max_buckets",flexGrow:1}],this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return o.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return o.urlBuilder.getEdit(o.selection.first()&&""+encodeURIComponent(o.selection.first().uid))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return o.deleteAction()},name:this.actionLabels.DELETE}]}return l.prototype.getUserList=function(l){var n=this;this.rgwUserService.list().subscribe(function(l){n.users=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteAction=function(){var l=this;this.bsModalService.show(w.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"user":"users"),submitActionObservable:function(){return new I.a(function(n){Object(f.a)(l.selection.selected.map(function(n){return l.rgwUserService.delete(n.uid)})).subscribe(null,function(u){n.error(u),l.table.refreshBtn()},function(){n.complete(),l.table.refreshBtn()})})}}})},l}(),$=function(){return function(){}}(),Z={breadcrumbs:"Daemons"},Q={breadcrumbs:"Users"},H={breadcrumbs:t.a.CREATE},Y={breadcrumbs:t.a.EDIT},X={breadcrumbs:"Buckets"},W={breadcrumbs:t.a.CREATE},J={breadcrumbs:t.a.EDIT},ll={breadcrumbs:"Object Gateway"},nl=function(){return function(){}}(),ul=u("MdoF"),el=u("ES0t"),tl=u("Xg1U"),il=u("z5nN"),ol=u("iutN"),al=u("EEJc"),rl=u("PEr+"),sl=u("a40w"),dl=u("pMnS"),cl=u("YAQW"),pl=u("a278"),fl=u("insk"),ml=u("ZYjt"),gl=u("20UP"),vl=u("Jm/i"),bl=u("pKUh"),hl=u("sLuX"),Cl=u("FSuO"),yl=u("a0VL"),_l=u("j8L6"),kl=u("b5OY"),Rl=u("pxLl"),Il=u("Ip0R"),wl=function(){function l(l,n){this.rgwDaemonService=l,this.authStorageService=n,this.serviceId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.serviceId=this.selection.first().id)},l.prototype.getMetaData=function(){var l=this;d.isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(function(n){l.metadata=n.rgw_metadata})},l}(),ql=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function El(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","x5ARzZtmk"]],null,null,null,pl.b,pl.a)),e["\u0275did"](3,638976,null,0,fl.a,[a.a,ml.DomSanitizer,gl.a,o.a,vl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){var u=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"rgw-instance-detail?var-rgw_servers=rgw."+u.selection.first().id,"one","x5ARzZtmk")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function xl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.getMetaData()&&e),e},hl.b,hl.a)),e["\u0275did"](5,638976,null,0,Cl.a,[yl.a],{data:[0,"data"]},{fetchData:"fetchData"}),(l()(),e["\u0275eld"](6,0,null,0,3,"tab",[["heading","Performance Counters"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](7,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](8,0,null,null,1,"cd-table-performance-counter",[["serviceType","rgw"]],null,null,null,_l.b,_l.a)),e["\u0275did"](9,114688,null,0,kl.a,[Rl.a,vl.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null),(l()(),e["\u0275and"](16777216,null,0,1,null,El)),e["\u0275did"](11,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.metadata),l(n,7,0,"Performance Counters"),l(n,9,0,"rgw",u.serviceId),l(n,11,0,u.grafanaPermission.read)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,6,0,e["\u0275nov"](n,7).id,e["\u0275nov"](n,7).active,e["\u0275nov"](n,7).addClass)})}function Tl(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,xl)),e["\u0275did"](1,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,1,0,n.component.selection.hasSingleSelection)},null)}function Vl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-daemon-details",[],null,null,null,Tl,ql)),e["\u0275did"](1,573440,null,0,wl,[D,x.a],null,null)],null,null)}var Sl=e["\u0275ccf"]("cd-rgw-daemon-details",wl,Vl,{selection:"selection"},{},[]),Dl=u("iExv"),Nl=u("o4+5"),Fl=function(){function l(){}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.bucket=this.selection.first())},l}(),jl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Pl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function zl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,2),u.bucket.bucket_quota.max_size));l(n,1,0,t)})}function Bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function Ul(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.bucket.bucket_quota.max_objects)})}function Ml(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Pl)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,zl)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Bl)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ul)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.bucket.bucket_quota.max_size<=-1),l(n,17,0,u.bucket.bucket_quota.max_size>-1),l(n,22,0,u.bucket.bucket_quota.max_objects<=-1),l(n,24,0,u.bucket.bucket_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,1),u.bucket.bucket_quota.enabled));l(n,9,0,t)})}function Al(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,60,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,57,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,56,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](7,null,["",""])),(l()(),e["\u0275eld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["ID"])),(l()(),e["\u0275eld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["",""])),(l()(),e["\u0275eld"](13,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](14,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Owner"])),(l()(),e["\u0275eld"](16,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](17,null,["",""])),(l()(),e["\u0275eld"](18,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Index type"])),(l()(),e["\u0275eld"](21,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](22,null,["",""])),(l()(),e["\u0275eld"](23,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Placement rule"])),(l()(),e["\u0275eld"](26,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](27,null,["",""])),(l()(),e["\u0275eld"](28,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](29,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Marker"])),(l()(),e["\u0275eld"](31,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](32,null,["",""])),(l()(),e["\u0275eld"](33,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](34,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum marker"])),(l()(),e["\u0275eld"](36,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](37,null,["",""])),(l()(),e["\u0275eld"](38,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Version"])),(l()(),e["\u0275eld"](41,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](42,null,["",""])),(l()(),e["\u0275eld"](43,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Master version"])),(l()(),e["\u0275eld"](46,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](47,null,["",""])),(l()(),e["\u0275eld"](48,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](49,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Modification time"])),(l()(),e["\u0275eld"](51,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](52,null,["",""])),e["\u0275ppd"](53,1),(l()(),e["\u0275eld"](54,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Zonegroup"])),(l()(),e["\u0275eld"](57,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](58,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ml)),e["\u0275did"](60,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,60,0,n.component.bucket.bucket_quota)},function(l,n){var u=n.component;l(n,7,0,u.bucket.bid),l(n,12,0,u.bucket.id),l(n,17,0,u.bucket.owner),l(n,22,0,u.bucket.index_type),l(n,27,0,u.bucket.placement_rule),l(n,32,0,u.bucket.marker),l(n,37,0,u.bucket.max_marker),l(n,42,0,u.bucket.ver),l(n,47,0,u.bucket.master_ver);var t=e["\u0275unv"](n,52,0,l(n,53,0,e["\u0275nov"](n.parent.parent,0),u.bucket.mtime));l(n,52,0,t),l(n,58,0,u.bucket.zonegroup)})}function Ol(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Al)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.bucket)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Ll(l){return e["\u0275vid"](0,[e["\u0275pid"](0,yl.a,[Il.DatePipe]),e["\u0275pid"](0,Dl.a,[vl.a]),e["\u0275pid"](0,Nl.a,[P.a]),(l()(),e["\u0275and"](16777216,null,null,1,null,Ol)),e["\u0275did"](4,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,4,0,n.component.selection.hasSingleSelection)},null)}function Gl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-bucket-details",[],null,null,null,Ll,jl)),e["\u0275did"](1,573440,null,0,Fl,[],null,null)],null,null)}var Kl=e["\u0275ccf"]("cd-rgw-bucket-details",Fl,Gl,{selection:"selection"},{},[]),$l=u("25BL"),Zl=u("xtZt"),Ql=u("lqqz"),Hl=u("Fgil"),Yl=function(){function l(l,n,u){this.rgwUserService=l,this.bsModalService=n,this.i18n=u,this.keys=[],this.keysColumns=[],this.keysSelection=new E.a}return l.prototype.ngOnInit=function(){this.keysColumns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Type"),prop:"type",flexGrow:1}]},l.prototype.ngOnChanges=function(){var l=this;this.selection.hasSelection&&(this.user=this.selection.first(),this.user.subusers=d.sortBy(this.user.subusers,"id"),this.user.caps=d.sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(function(n){d.extend(l.user,n)}),this.keys=[],this.user.keys.forEach(function(n){l.keys.push({id:l.keys.length+1,type:"S3",username:n.user,ref:n})}),this.user.swift_keys.forEach(function(n){l.keys.push({id:l.keys.length+1,type:"Swift",username:n.user,ref:n})}),this.keys=d.sortBy(this.keys,"user"))},l.prototype.updateKeysSelection=function(l){this.keysSelection=l},l.prototype.showKeyModal=function(){var l=this.keysSelection.first(),n=this.bsModalService.show("S3"===l.type?B:A);switch(l.type){case"S3":n.content.setViewing(),n.content.setValues(l.ref.user,l.ref.access_key,l.ref.secret_key);break;case"Swift":n.content.setValues(l.ref.user,l.ref.secret_key)}},l}(),Xl=u("DQlY"),Wl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Jl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email address"])),(l()(),e["\u0275eld"](3,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["",""]))],null,function(l,n){l(n,4,0,n.component.user.email)})}function ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,["No"]))],null,null)}function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,["Yes"]))],null,null)}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," (",") "]))],null,function(l,n){l(n,1,0,n.context.$implicit.id,n.context.$implicit.permissions)})}function en(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subusers"])),(l()(),e["\u0275eld"](3,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,un)),e["\u0275did"](5,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){l(n,5,0,n.component.user.subusers)},null)}function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," (",") "]))],null,function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.perm)})}function on(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Capabilities"])),(l()(),e["\u0275eld"](3,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,tn)),e["\u0275did"](5,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){l(n,5,0,n.component.user.caps)},null)}function an(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function rn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,1),u.user.user_quota.max_size));l(n,1,0,t)})}function sn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function dn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.user.user_quota.max_objects)})}function cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,an)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,rn)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,sn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,dn)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.user.user_quota.max_size<=-1),l(n,17,0,u.user.user_quota.max_size>-1),l(n,22,0,u.user.user_quota.max_objects<=-1),l(n,24,0,u.user.user_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,0),u.user.user_quota.enabled));l(n,9,0,t)})}function pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,1),u.user.bucket_quota.max_size));l(n,1,0,t)})}function mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.user.bucket_quota.max_objects)})}function vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,pn)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,fn)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,mn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gn)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.user.bucket_quota.max_size<=-1),l(n,17,0,u.user.bucket_quota.max_size>-1),l(n,22,0,u.user.bucket_quota.max_objects<=-1),l(n,24,0,u.user.bucket_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,0),u.user.bucket_quota.enabled));l(n,9,0,t)})}function bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,43,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,38,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,37,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](7,null,["",""])),(l()(),e["\u0275eld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275eld"](11,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,Jl)),e["\u0275did"](14,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Suspended"])),(l()(),e["\u0275eld"](18,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](19,null,["",""])),e["\u0275ppd"](20,1),(l()(),e["\u0275eld"](21,0,null,null,9,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["System"])),(l()(),e["\u0275eld"](24,0,null,null,6,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,5,null,null,null,null,null,null,null)),e["\u0275did"](26,16384,null,0,Il.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ln)),e["\u0275did"](28,278528,null,0,Il.NgSwitchCase,[e.ViewContainerRef,e.TemplateRef,Il.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nn)),e["\u0275did"](30,278528,null,0,Il.NgSwitchCase,[e.ViewContainerRef,e.TemplateRef,Il.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),e["\u0275eld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](32,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum buckets"])),(l()(),e["\u0275eld"](34,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](35,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,en)),e["\u0275did"](37,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,on)),e["\u0275did"](39,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,cn)),e["\u0275did"](41,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vn)),e["\u0275did"](43,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,14,0,u.user.email.length),l(n,26,0,u.user.system),l(n,28,0,"0"),l(n,30,0,"1"),l(n,37,0,u.user.subusers&&u.user.subusers.length),l(n,39,0,u.user.caps&&u.user.caps.length),l(n,41,0,u.user.user_quota),l(n,43,0,u.user.bucket_quota)},function(l,n){var u=n.component;l(n,7,0,u.user.uid),l(n,12,0,u.user.display_name);var t=e["\u0275unv"](n,19,0,l(n,20,0,e["\u0275nov"](n.parent.parent,0),u.user.suspended));l(n,19,0,t),l(n,35,0,u.user.max_buckets)})}function hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,bn)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](6,0,null,0,11,"tab",[["heading","Keys"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](7,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](8,0,null,null,9,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["selectionType","multi"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateKeysSelection(u)&&e),e},$l.b,$l.a)),e["\u0275did"](9,2867200,null,0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](10,0,null,0,7,"div",[["class","table-actions"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,16777216,null,null,6,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),e["\u0275prd"](512,null,Zl.f,Zl.f,[]),e["\u0275did"](13,212992,null,0,Zl.c,[e.ElementRef,e.Renderer2,e.ViewContainerRef,Ql.a,Zl.a,Zl.f],null,null),(l()(),e["\u0275eld"](14,0,null,null,3,"button",[["class","btn btn-sm btn-primary"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showKeyModal()&&e),e},null,null)),(l()(),e["\u0275eld"](15,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Show"]))],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.user),l(n,7,0,"Keys"),l(n,9,0,u.keys,u.keysColumns,"flex","true","multi"),l(n,13,0)},function(l,n){var u=n.component;l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,6,0,e["\u0275nov"](n,7).id,e["\u0275nov"](n,7).active,e["\u0275nov"](n,7).addClass),l(n,11,0,e["\u0275nov"](n,13).dropup,e["\u0275nov"](n,13).isOpen,e["\u0275nov"](n,13).isOpen&&e["\u0275nov"](n,13).isBs4),l(n,14,0,!u.keysSelection.hasSingleSelection)})}function Cn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Dl.a,[vl.a]),e["\u0275pid"](0,Hl.a,[P.a]),e["\u0275qud"](402653184,1,{accessKeyTpl:0}),e["\u0275qud"](402653184,2,{secretKeyTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,hn)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,5,0,n.component.selection.hasSingleSelection)},null)}function yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-details",[],null,null,null,Cn,Wl)),e["\u0275did"](1,638976,null,0,Yl,[C.a,Xl.b,vl.a],null,null)],function(l,n){l(n,1,0)},null)}var _n=e["\u0275ccf"]("cd-rgw-user-details",Yl,yn,{selection:"selection"},{},[]),kn=u("8xTl"),Rn=u("D4zM"),In=u("OcYo"),wn=u("SZbH"),qn=u("KVJa"),En=u("Z21x"),xn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Tn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,[""," ",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,31,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,30,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,13).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,13).onReset()&&t),t},null,null)),e["\u0275did"](12,16384,null,0,s.D,[],null,null),e["\u0275did"](13,4210688,null,0,s.t,[[8,null],[8,null]],null,null),e["\u0275prd"](2048,null,s.d,null,[s.t]),e["\u0275did"](15,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](16,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](19,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,5,"input",[["class","form-control"],["id","user"],["name","user"],["type","text"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,21)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,21).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,21)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,21)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.user=u)&&t),t},null,null)),e["\u0275did"](21,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](23,671744,null,0,s.u,[[2,s.d],[8,null],[8,null],[6,s.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["\u0275prd"](2048,null,s.q,null,[s.u]),e["\u0275did"](25,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](26,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](29,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](30,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](31,0,null,null,5,"input",[["class","form-control"],["id","secret_key"],["name","secret_key"],["type","password"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,32)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,32).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,32)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,32)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.secret_key=u)&&t),t},null,null)),e["\u0275did"](32,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](34,671744,null,0,s.u,[[2,s.d],[8,null],[8,null],[6,s.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["\u0275prd"](2048,null,s.q,null,[s.u]),e["\u0275did"](36,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](37,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](38,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,39).onClick()&&t),t},null,null)),e["\u0275did"](39,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](40,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,41).onClick()&&t),t},null,null)),e["\u0275did"](41,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275eld"](42,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](43,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](44,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,23,0,"user",u.user),l(n,34,0,"secret_key",u.secret_key),l(n,39,0,"secret_key"),l(n,41,0,"secret_key"),l(n,44,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,11,0,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending),l(n,20,0,!0,e["\u0275nov"](n,25).ngClassUntouched,e["\u0275nov"](n,25).ngClassTouched,e["\u0275nov"](n,25).ngClassPristine,e["\u0275nov"](n,25).ngClassDirty,e["\u0275nov"](n,25).ngClassValid,e["\u0275nov"](n,25).ngClassInvalid,e["\u0275nov"](n,25).ngClassPending),l(n,31,0,!0,e["\u0275nov"](n,36).ngClassUntouched,e["\u0275nov"](n,36).ngClassTouched,e["\u0275nov"](n,36).ngClassPristine,e["\u0275nov"](n,36).ngClassDirty,e["\u0275nov"](n,36).ngClassValid,e["\u0275nov"](n,36).ngClassInvalid,e["\u0275nov"](n,36).ngClassPending)})}function Vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-swift-key-modal",[],null,null,null,Tn,xn)),e["\u0275did"](1,49152,null,0,A,[Xl.a,vl.a,t.b],null,null)],null,null)}var Sn=e["\u0275ccf"]("cd-rgw-user-swift-key-modal",A,Vn,{},{},[]),Dn=u("IZUe"),Nn=u("gp3X"),Fn=u("sb0X"),jn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](3,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](5,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,3,0,"user")},function(l,n){l(n,0,0,!0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a username --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"select",[["autofocus",""],["class","form-control"],["formControlName","user"],["id","user"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](1,4210688,null,0,Dn.a,[e.ElementRef],null,null),e["\u0275did"](2,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](4,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](6,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Bn)),e["\u0275did"](8,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Un)),e["\u0275did"](10,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,4,0,"user"),l(n,8,0,null!==u.userCandidates),l(n,10,0,u.userCandidates)},function(l,n){l(n,0,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function An(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function On(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","generate_key"],["id","generate_key"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","generate_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate key"]))],function(l,n){l(n,6,0,"generate_key")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Kn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","access_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Access key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ln)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,5,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,11)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](13,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](15,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](16,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,18).onClick()&&t),t},null,null)),e["\u0275did"](18,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](19,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,20).onClick()&&t),t},null,null)),e["\u0275did"](20,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Gn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("access_key",e["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,!u.viewing),l(n,13,0,"access_key"),l(n,18,0,"access_key"),l(n,20,0,"access_key"),l(n,22,0,u.formGroup.showError("access_key",e["\u0275nov"](n.parent,12),"required"))},function(l,n){l(n,10,0,n.component.viewing,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending)})}function $n(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Qn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,$n)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,11)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](13,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](15,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](16,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,18).onClick()&&t),t},null,null)),e["\u0275did"](18,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](19,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,20).onClick()&&t),t},null,null)),e["\u0275did"](20,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Zn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,!u.viewing),l(n,13,0,"secret_key"),l(n,18,0,"secret_key"),l(n,20,0,"secret_key"),l(n,22,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent,12),"required"))},function(l,n){l(n,10,0,n.component.viewing,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending)})}function Hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Nn.b,Nn.a)),e["\u0275did"](1,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](2,0,[""," ",""])),e["\u0275ppd"](3,1),e["\u0275ppd"](4,1)],function(l,n){l(n,1,0,n.component.formGroup)},function(l,n){var u=n.component,t=e["\u0275unv"](n,2,0,l(n,3,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,2,1,l(n,4,0,e["\u0275nov"](n.parent,1),u.resource));l(n,2,0,t,i)})}function Yn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,[""," ",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,31,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,21,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Pn)),e["\u0275did"](23,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,zn)),e["\u0275did"](26,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Mn)),e["\u0275did"](28,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,An)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,On)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Kn)),e["\u0275did"](34,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qn)),e["\u0275did"](36,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](37,0,null,null,4,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Hn)),e["\u0275did"](39,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](40,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](41,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("user",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,23,0,!u.viewing),l(n,26,0,u.viewing),l(n,28,0,!u.viewing),l(n,30,0,u.formGroup.showError("user",e["\u0275nov"](n,12),"required")),l(n,32,0,!u.viewing),l(n,34,0,!u.formGroup.getValue("generate_key")),l(n,36,0,!u.formGroup.getValue("generate_key")),l(n,39,0,!u.viewing),l(n,41,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Xn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-s3-key-modal",[],null,null,null,Yn,jn)),e["\u0275did"](1,49152,null,0,B,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var Wn=e["\u0275ccf"]("cd-rgw-user-s3-key-modal",B,Xn,{},{submitAction:"submitAction"},[]),Jn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function lu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function nu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","type"],["id","type"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](3,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](5,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,3,0,"type")},function(l,n){l(n,0,0,!0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a type --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function eu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function tu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"select",[["autofocus",""],["class","form-control"],["formControlName","type"],["id","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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](1,4210688,null,0,Dn.a,[e.ElementRef],null,null),e["\u0275did"](2,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](4,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](6,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,uu)),e["\u0275did"](8,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,eu)),e["\u0275did"](10,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,4,0,"type"),l(n,8,0,null!==u.types),l(n,10,0,u.types)},function(l,n){l(n,0,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function au(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ru(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,[""," ",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,51,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,38,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","type"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Type"])),(l()(),e["\u0275and"](16777216,null,null,1,null,lu)),e["\u0275did"](23,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,nu)),e["\u0275did"](26,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,tu)),e["\u0275did"](28,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,iu)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](31,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](32,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](33,{"has-error":0}),(l()(),e["\u0275eld"](34,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","perm"]],null,null,null,null,null)),(l()(),e["\u0275eld"](35,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permission"])),(l()(),e["\u0275eld"](37,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](38,0,null,null,15,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,12,"select",[["class","form-control"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,40).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,40).onTouched()&&t),t},null,null)),e["\u0275did"](40,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](42,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](44,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](45,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](46,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](47,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a permission --"])),(l()(),e["\u0275and"](16777216,null,null,2,null,ou)),e["\u0275did"](50,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["\u0275pad"](51,3),(l()(),e["\u0275and"](16777216,null,null,1,null,au)),e["\u0275did"](53,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](54,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Nn.b,Nn.a)),e["\u0275did"](56,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](57,0,[""," ",""])),e["\u0275ppd"](58,1),e["\u0275ppd"](59,1),(l()(),e["\u0275eld"](60,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](61,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("type",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,23,0,!u.editing),l(n,26,0,u.editing),l(n,28,0,!u.editing),l(n,30,0,u.formGroup.showError("type",e["\u0275nov"](n,12),"required"));var i=l(n,33,0,u.formGroup.showError("perm",e["\u0275nov"](n,12)));l(n,32,0,"form-group",i),l(n,42,0,"perm"),l(n,46,0,null),l(n,47,0,null);var o=l(n,51,0,"read","write","*");l(n,50,0,o),l(n,53,0,u.formGroup.showError("perm",e["\u0275nov"](n,12),"required")),l(n,56,0,u.formGroup),l(n,61,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending),l(n,39,0,e["\u0275nov"](n,44).ngClassUntouched,e["\u0275nov"](n,44).ngClassTouched,e["\u0275nov"](n,44).ngClassPristine,e["\u0275nov"](n,44).ngClassDirty,e["\u0275nov"](n,44).ngClassValid,e["\u0275nov"](n,44).ngClassInvalid,e["\u0275nov"](n,44).ngClassPending);var o=e["\u0275unv"](n,57,0,l(n,58,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,57,1,l(n,59,0,e["\u0275nov"](n,1),u.resource));l(n,57,0,o,a)})}function su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-capability-modal",[],null,null,null,ru,Jn)),e["\u0275did"](1,49152,null,0,z,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var du=e["\u0275ccf"]("cd-rgw-user-capability-modal",z,su,{},{submitAction:"submitAction"},[]),cu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function mu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen subuser ID is already in use."]))],null,null)}function gu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function vu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function bu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function hu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,bu)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent.parent,12)));l(n,1,0,"form-group",t),l(n,12,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent.parent,12),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Swift key"])),(l()(),e["\u0275eld"](3,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,5,"input",[["formControlName","generate_secret"],["id","generate_secret"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,7).onTouched()&&t),t},null,null)),e["\u0275did"](7,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](9,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](11,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](12,0,null,null,1,"label",[["for","generate_secret"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate secret"])),(l()(),e["\u0275and"](16777216,null,null,1,null,hu)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,9,0,"generate_secret"),l(n,15,0,!u.editing&&!u.formGroup.getValue("generate_secret"))},function(l,n){l(n,6,0,e["\u0275nov"](n,11).ngClassUntouched,e["\u0275nov"](n,11).ngClassTouched,e["\u0275nov"](n,11).ngClassPristine,e["\u0275nov"](n,11).ngClassDirty,e["\u0275nov"](n,11).ngClassValid,e["\u0275nov"](n,11).ngClassInvalid,e["\u0275nov"](n,11).ngClassPending)})}function yu(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,[""," ",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,78,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,65,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","uid"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](21,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,5,"input",[["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,23)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,23).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,23)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,23)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](23,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](25,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](27,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](28,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](29,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](30,{"has-error":0}),(l()(),e["\u0275eld"](31,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","subuid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](32,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subuser"])),(l()(),e["\u0275and"](16777216,null,null,1,null,pu)),e["\u0275did"](35,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](36,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","subuid"],["id","subuid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,39)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,39).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,39)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,39)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](38,4210688,null,0,Dn.a,[e.ElementRef],null,null),e["\u0275did"](39,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](41,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](43,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,fu)),e["\u0275did"](45,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,mu)),e["\u0275did"](47,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](48,0,null,null,30,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](49,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](50,{"has-error":0}),(l()(),e["\u0275eld"](51,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","perm"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permission"])),(l()(),e["\u0275eld"](54,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,23,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,null,20,"select",[["class","form-control"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,57).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,57).onTouched()&&t),t},null,null)),e["\u0275did"](57,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](59,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](61,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](62,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](63,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](64,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a permission --"])),(l()(),e["\u0275and"](16777216,null,null,2,null,gu)),e["\u0275did"](67,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["\u0275pad"](68,2),(l()(),e["\u0275eld"](69,0,null,null,3,"option",[["value","read-write"]],null,null,null,null,null)),e["\u0275did"](70,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](71,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](-1,null,["read, write"])),(l()(),e["\u0275eld"](73,0,null,null,3,"option",[["value","full-control"]],null,null,null,null,null)),e["\u0275did"](74,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](75,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](-1,null,["full"])),(l()(),e["\u0275and"](16777216,null,null,1,null,vu)),e["\u0275did"](78,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Cu)),e["\u0275did"](80,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](81,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](82,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Nn.b,Nn.a)),e["\u0275did"](83,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](84,0,[""," ",""])),e["\u0275ppd"](85,1),e["\u0275ppd"](86,1),(l()(),e["\u0275eld"](87,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](88,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("uid",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,25,0,"uid");var i=l(n,30,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12)));l(n,29,0,"form-group",i),l(n,35,0,!u.editing),l(n,41,0,"subuid"),l(n,45,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12),"required")),l(n,47,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12),"subuserIdExists"));var o=l(n,50,0,u.formGroup.showError("perm",e["\u0275nov"](n,12)));l(n,49,0,"form-group",o),l(n,59,0,"perm"),l(n,63,0,null),l(n,64,0,null);var a=l(n,68,0,"read","write");l(n,67,0,a),l(n,70,0,"read-write"),l(n,71,0,"read-write"),l(n,74,0,"full-control"),l(n,75,0,"full-control"),l(n,78,0,u.formGroup.showError("perm",e["\u0275nov"](n,12),"required")),l(n,80,0,!u.editing),l(n,83,0,u.formGroup),l(n,88,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending),l(n,22,0,!0,e["\u0275nov"](n,27).ngClassUntouched,e["\u0275nov"](n,27).ngClassTouched,e["\u0275nov"](n,27).ngClassPristine,e["\u0275nov"](n,27).ngClassDirty,e["\u0275nov"](n,27).ngClassValid,e["\u0275nov"](n,27).ngClassInvalid,e["\u0275nov"](n,27).ngClassPending),l(n,37,0,u.editing,e["\u0275nov"](n,43).ngClassUntouched,e["\u0275nov"](n,43).ngClassTouched,e["\u0275nov"](n,43).ngClassPristine,e["\u0275nov"](n,43).ngClassDirty,e["\u0275nov"](n,43).ngClassValid,e["\u0275nov"](n,43).ngClassInvalid,e["\u0275nov"](n,43).ngClassPending),l(n,56,0,e["\u0275nov"](n,61).ngClassUntouched,e["\u0275nov"](n,61).ngClassTouched,e["\u0275nov"](n,61).ngClassPristine,e["\u0275nov"](n,61).ngClassDirty,e["\u0275nov"](n,61).ngClassValid,e["\u0275nov"](n,61).ngClassInvalid,e["\u0275nov"](n,61).ngClassPending);var o=e["\u0275unv"](n,84,0,l(n,85,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,84,1,l(n,86,0,e["\u0275nov"](n,1),u.resource));l(n,84,0,o,a)})}function _u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-subuser-modal",[],null,null,null,yu,cu)),e["\u0275did"](1,49152,null,0,M,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var ku=e["\u0275ccf"]("cd-rgw-user-subuser-modal",M,_u,{},{submitAction:"submitAction"},[]),Ru=u("IzCI"),Iu=u("Dwqy"),wu=u("uYzU"),qu=u("uhwM"),Eu=u("E2fk"),xu=u("nSDx"),Tu=u("SB+Q"),Vu=u("TYzs"),Su=u("BQkM"),Du=u("dEH0"),Nu=u("lTVp"),Fu=u("OZfm"),ju=u("NJnL"),Pu=u("eajB"),zu=u("FO+L"),Bu=u("nhM1"),Uu=u("BARL"),Mu=u("ZYCi"),Au=u("9Xeq"),Ou=u("xdbM"),Lu=u("yGOH"),Gu=u("V/fk"),Ku=u("F8xH"),$u=u("ChqD"),Zu=u("PCNd"),Qu=u("G6Q+"),Hu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Yu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","WAkugZpiz"]],null,null,null,pl.b,pl.a)),e["\u0275did"](3,638976,null,0,fl.a,[a.a,ml.DomSanitizer,gl.a,o.a,vl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rgw-overview?","two","WAkugZpiz")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function Xu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,5,"tab",[["heading","Daemons List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getDaemonList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](5,2867200,null,0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](6,0,null,2,1,"cd-rgw-daemon-details",[["cdTableDetail",""]],null,null,null,Tl,ql)),e["\u0275did"](7,573440,null,0,wl,[D,x.a],{selection:[0,"selection"]},null),(l()(),e["\u0275and"](16777216,null,0,1,null,Yu)),e["\u0275did"](9,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Daemons List"),l(n,5,0,u.daemons,u.columns,"flex","single"),l(n,7,0,u.selection),l(n,9,0,u.grafanaPermission.read)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Wu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-daemon-list",[],null,null,null,Xu,Hu)),e["\u0275did"](1,49152,null,0,F,[D,x.a,N.a,vl.a],null,null)],null,null)}var Ju=e["\u0275ccf"]("cd-rgw-daemon-list",F,Wu,{},{},[]),le=u("NUGo"),ne=u("S7zO"),ue=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ee(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","user_id"],["selectionType","multi"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getUserList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](2,2867200,[[1,4],["table",4]],0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,le.b,le.a)),e["\u0275did"](4,114688,null,0,ne.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,2,1,"cd-rgw-user-details",[["cdTableDetail",""]],null,null,null,Cn,Wl)),e["\u0275did"](6,638976,null,0,Yl,[C.a,Xl.b,vl.a],{selection:[0,"selection"]},null)],function(l,n){var u=n.component;l(n,2,0,u.users,u.columns,"flex",!1,"user_id","multi"),l(n,4,0,u.permission,u.selection,u.tableActions),l(n,6,0,u.selection)},null)}function te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-rgw-user-list",[],null,null,null,ee,ue)),e["\u0275prd"](256,null,T.a,G,[]),e["\u0275did"](2,49152,null,0,K,[x.a,C.a,Xl.b,vl.a,T.a,t.b],null,null)],null,null)}var ie=e["\u0275ccf"]("cd-rgw-user-list",K,te,{},{},[]),oe=u("QC43"),ae=u("XFyV"),re=u("M/6F"),se=u("NDi4"),de=u("EmSq"),ce=e["\u0275crt"]({encapsulation:0,styles:[["form[_ngcontent-%COMP%]   .input-group-addon[_ngcontent-%COMP%]{color:#90949c!important;background-color:transparent}"]],data:{}});function pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,oe.b,oe.a)),e["\u0275did"](1,49152,null,0,ae.a,[],null,null),(l()(),e["\u0275ted"](-1,0,["Loading user data..."]))],null,null)}function fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,[[null,"backAction"]],function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e},re.b,re.a)),e["\u0275did"](1,49152,null,0,se.a,[],null,{backAction:"backAction"}),(l()(),e["\u0275ted"](-1,0,["The user data could not be loaded."]))],null,null)}function me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen user ID is already in use."]))],null,null)}function be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function he(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This is not a valid email address."]))],null,null)}function ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen email address is already in use."]))],null,null)}function _e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function Re(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ie(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","access_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Access key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Re)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("access_key",e["\u0275nov"](n.parent.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"access_key"),l(n,17,0,"access_key"),l(n,19,0,"access_key"),l(n,21,0,u.userForm.showError("access_key",e["\u0275nov"](n.parent.parent,3),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function we(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,we)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("secret_key",e["\u0275nov"](n.parent.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.userForm.showError("secret_key",e["\u0275nov"](n.parent.parent,3),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Ee(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["S3 key"])),(l()(),e["\u0275eld"](3,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,5,"input",[["formControlName","generate_key"],["id","generate_key"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,7).onTouched()&&t),t},null,null)),e["\u0275did"](7,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](9,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](11,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](12,0,null,null,1,"label",[["for","generate_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ie)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,qe)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,9,0,"generate_key"),l(n,15,0,!u.editing&&!u.userForm.getValue("generate_key")),l(n,17,0,!u.editing&&!u.userForm.getValue("generate_key"))},function(l,n){l(n,6,0,e["\u0275nov"](n,11).ngClassUntouched,e["\u0275nov"](n,11).ngClassTouched,e["\u0275nov"](n,11).ngClassPristine,e["\u0275nov"](n,11).ngClassDirty,e["\u0275nov"](n,11).ngClassValid,e["\u0275nov"](n,11).ngClassInvalid,e["\u0275nov"](n,11).ngClassPending)})}function xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no subusers."]))],null,null)}function Te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,"span",[["class","input-group-addon"],["style","border-left: 0; border-right: 0;"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,0,"i",[["class","icon-prepend fa fa-share-alt"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_showSubuserButton"],["tooltip","Edit"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-cogs"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteSubuserButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteSubuser(l.context.index)&&e),e},null,null)),e["\u0275did"](13,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](14,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,10,0,"Edit"),l(n,13,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.id,"")),l(n,7,0,e["\u0275inlineInterpolate"](1,"","full-control"===n.context.$implicit.permissions?"full":n.context.$implicit.permissions,"")),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby),l(n,12,0,e["\u0275nov"](n,13).ariaDescribedby)})}function Ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,14,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subusers"])),(l()(),e["\u0275eld"](3,0,null,null,11,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,xe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Te)),e["\u0275did"](7,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addSubuserButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal()&&e),e},null,null)),(l()(),e["\u0275eld"](10,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,[""," ",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1)],function(l,n){var u=n.component;l(n,5,0,0===u.subusers.length),l(n,7,0,u.subusers)},function(l,n){var u=n.component,t=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n.parent.parent,1),u.subuserLabel));l(n,12,0,t,i)})}function Se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no keys."]))],null,null)}function De(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,12,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_showS3KeyButton"],["tooltip","Show"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteS3KeyButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteS3Key(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Show"),l(n,10,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.user,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby)})}function Ne(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no keys."]))],null,null)}function Fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,7,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,3,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_showSwiftKeyButton"],["tooltip","Show"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSwiftKeyModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Show")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.user,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby)})}function je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Keys"])),(l()(),e["\u0275eld"](3,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["S3"])),(l()(),e["\u0275eld"](5,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Se)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,De)),e["\u0275did"](9,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](10,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addS3KeyButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal()&&e),e},null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](14,null,[""," ",""])),e["\u0275ppd"](15,1),e["\u0275ppd"](16,1),(l()(),e["\u0275eld"](17,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Swift"])),(l()(),e["\u0275eld"](20,0,null,null,4,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Ne)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fe)),e["\u0275did"](24,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,7,0,0===u.s3Keys.length),l(n,9,0,u.s3Keys),l(n,22,0,0===u.swiftKeys.length),l(n,24,0,u.swiftKeys)},function(l,n){var u=n.component,t=e["\u0275unv"](n,14,0,l(n,15,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["\u0275unv"](n,14,1,l(n,16,0,e["\u0275nov"](n.parent.parent,1),u.s3keyLabel));l(n,14,0,t,i)})}function Pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no capabilities."]))],null,null)}function ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,12,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-share-alt"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_editCapButton"],["tooltip","Edit"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-cogs"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteCapButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteCapability(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Edit"),l(n,10,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](2,"",n.context.$implicit.type,":",n.context.$implicit.perm,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby)})}function Be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,14,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Capabilities"])),(l()(),e["\u0275eld"](3,0,null,null,11,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Pe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ze)),e["\u0275did"](7,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addCapButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal()&&e),e},null,null)),(l()(),e["\u0275eld"](10,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,[""," ",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1)],function(l,n){var u=n.component;l(n,5,0,0===u.capabilities.length),l(n,7,0,u.capabilities)},function(l,n){var u=n.component,t=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.ADD)),i=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n.parent.parent,1),u.capabilityLabel));l(n,12,0,t,i)})}function Ue(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","user_quota_max_size_unlimited"],["id","user_quota_max_size_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","user_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited size"]))],function(l,n){l(n,6,0,"user_quota_max_size_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ae(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function Oe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","user_quota_max_size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. size"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","user_quota_max_size"],["id","user_quota_max_size"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,13).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](13,81920,null,0,de.a,[e.ElementRef,s.q,Hl.a,P.a],null,null),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Me)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ae)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,11,0,"user_quota_max_size"),l(n,13,0),l(n,16,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3),"quotaMaxSize"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Le(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","user_quota_max_objects_unlimited"],["id","user_quota_max_objects_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","user_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited objects"]))],function(l,n){l(n,6,0,"user_quota_max_objects_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function $e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","user_quota_max_objects"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. objects"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","user_quota_max_objects"],["id","user_quota_max_objects"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](10,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ge)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ke)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"user_quota_max_objects"),l(n,16,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3),"min"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","bucket_quota_max_size_unlimited"],["id","bucket_quota_max_size_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","bucket_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited size"]))],function(l,n){l(n,6,0,"bucket_quota_max_size_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function He(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function Ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","bucket_quota_max_size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. size"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","bucket_quota_max_size"],["id","bucket_quota_max_size"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,13).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](13,81920,null,0,de.a,[e.ElementRef,s.q,Hl.a,P.a],null,null),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qe)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,He)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,11,0,"bucket_quota_max_size"),l(n,13,0),l(n,16,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3),"quotaMaxSize"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","bucket_quota_max_objects_unlimited"],["id","bucket_quota_max_objects_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","bucket_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited objects"]))],function(l,n){l(n,6,0,"bucket_quota_max_objects_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function We(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function lt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","bucket_quota_max_objects"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. objects"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","bucket_quota_max_objects"],["id","bucket_quota_max_objects"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](10,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,We)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Je)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"bucket_quota_max_objects"),l(n,16,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3),"min"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function nt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,156,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,155,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,3).onReset()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,s.D,[],null,null),e["\u0275did"](3,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](5,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](6,0,null,null,150,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,[""," ",""])),e["\u0275ppd"](10,1),e["\u0275ppd"](11,1),(l()(),e["\u0275eld"](12,0,null,null,135,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](14,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](15,{"has-error":0}),(l()(),e["\u0275eld"](16,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","uid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,me)),e["\u0275did"](20,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](21,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,24)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,24).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,24)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,24)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](23,4210688,null,0,Dn.a,[e.ElementRef],null,null),e["\u0275did"](24,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](26,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](28,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,ge)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ve)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](33,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](34,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](35,{"has-error":0}),(l()(),e["\u0275eld"](36,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","display_name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,be)),e["\u0275did"](40,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](41,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](42,0,null,null,5,"input",[["class","form-control"],["formControlName","display_name"],["id","display_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,43)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,43).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,43)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,43)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](43,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](45,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](47,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,he)),e["\u0275did"](49,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](50,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](51,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](52,{"has-error":0}),(l()(),e["\u0275eld"](53,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","email"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email address"])),(l()(),e["\u0275eld"](55,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,null,5,"input",[["class","form-control"],["formControlName","email"],["id","email"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,57)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,57).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,57)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,57)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](57,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](59,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](61,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ce)),e["\u0275did"](63,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ye)),e["\u0275did"](65,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](66,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](67,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](68,{"has-error":0}),(l()(),e["\u0275eld"](69,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","max_buckets"]],null,null,null,null,null)),(l()(),e["\u0275eld"](70,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. buckets"])),(l()(),e["\u0275eld"](72,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](73,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](74,0,null,null,6,"input",[["class","form-control"],["formControlName","max_buckets"],["id","max_buckets"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,75)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,75).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,75)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,75)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,76).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,76).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,76).onTouched()&&t),t},null,null)),e["\u0275did"](75,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](76,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](78,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](80,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,_e)),e["\u0275did"](82,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ke)),e["\u0275did"](84,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](85,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](86,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](87,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](88,0,null,null,5,"input",[["formControlName","suspended"],["id","suspended"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,89).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,89).onTouched()&&t),t},null,null)),e["\u0275did"](89,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](91,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](93,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](94,0,null,null,1,"label",[["for","suspended"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Suspended"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ee)),e["\u0275did"](97,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ve)),e["\u0275did"](99,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,je)),e["\u0275did"](101,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Be)),e["\u0275did"](103,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](104,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](105,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User quota"])),(l()(),e["\u0275eld"](107,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](108,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](109,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](110,0,null,null,5,"input",[["formControlName","user_quota_enabled"],["id","user_quota_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,111).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,111).onTouched()&&t),t},null,null)),e["\u0275did"](111,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](113,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](115,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](116,0,null,null,1,"label",[["for","user_quota_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ue)),e["\u0275did"](119,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Oe)),e["\u0275did"](121,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Le)),e["\u0275did"](123,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,$e)),e["\u0275did"](125,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](126,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](127,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](129,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](130,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](131,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](132,0,null,null,5,"input",[["formControlName","bucket_quota_enabled"],["id","bucket_quota_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,133).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,133).onTouched()&&t),t},null,null)),e["\u0275did"](133,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](135,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](137,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](138,0,null,null,1,"label",[["for","bucket_quota_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ze)),e["\u0275did"](141,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ye)),e["\u0275did"](143,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Xe)),e["\u0275did"](145,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,lt)),e["\u0275did"](147,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](148,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](149,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](150,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Nn.b,Nn.a)),e["\u0275did"](151,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](152,0,[""," ",""])),e["\u0275ppd"](153,1),e["\u0275ppd"](154,1),(l()(),e["\u0275eld"](155,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](156,49152,null,0,En.a,[Il.Location,t.b],null,null)],function(l,n){var u=n.component;l(n,3,0,u.userForm);var t=l(n,15,0,u.userForm.showError("uid",e["\u0275nov"](n,3)));l(n,14,0,"form-group",t),l(n,20,0,!u.editing),l(n,26,0,"uid"),l(n,30,0,u.userForm.showError("uid",e["\u0275nov"](n,3),"required")),l(n,32,0,u.userForm.showError("uid",e["\u0275nov"](n,3),"notUnique"));var i=l(n,35,0,u.userForm.showError("display_name",e["\u0275nov"](n,3)));l(n,34,0,"form-group",i),l(n,40,0,!u.editing),l(n,45,0,"display_name"),l(n,49,0,u.userForm.showError("display_name",e["\u0275nov"](n,3),"required"));var o=l(n,52,0,u.userForm.showError("email",e["\u0275nov"](n,3)));l(n,51,0,"form-group",o),l(n,59,0,"email"),l(n,63,0,u.userForm.showError("email",e["\u0275nov"](n,3),"email")),l(n,65,0,u.userForm.showError("email",e["\u0275nov"](n,3),"notUnique"));var a=l(n,68,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3)));l(n,67,0,"form-group",a),l(n,78,0,"max_buckets"),l(n,82,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3),"required")),l(n,84,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3),"min")),l(n,91,0,"suspended"),l(n,97,0,!u.editing),l(n,99,0,u.editing),l(n,101,0,u.editing),l(n,103,0,u.editing),l(n,113,0,"user_quota_enabled"),l(n,119,0,u.userForm.controls.user_quota_enabled.value),l(n,121,0,!u.userForm.getValue("user_quota_max_size_unlimited")),l(n,123,0,u.userForm.controls.user_quota_enabled.value),l(n,125,0,!u.userForm.getValue("user_quota_max_objects_unlimited")),l(n,135,0,"bucket_quota_enabled"),l(n,141,0,u.userForm.controls.bucket_quota_enabled.value),l(n,143,0,!u.userForm.getValue("bucket_quota_max_size_unlimited")),l(n,145,0,u.userForm.controls.bucket_quota_enabled.value),l(n,147,0,!u.userForm.getValue("bucket_quota_max_objects_unlimited")),l(n,151,0,u.userForm,"button")},function(l,n){var u=n.component;l(n,1,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending);var t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,9,1,l(n,11,0,e["\u0275nov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,22,0,u.editing,e["\u0275nov"](n,28).ngClassUntouched,e["\u0275nov"](n,28).ngClassTouched,e["\u0275nov"](n,28).ngClassPristine,e["\u0275nov"](n,28).ngClassDirty,e["\u0275nov"](n,28).ngClassValid,e["\u0275nov"](n,28).ngClassInvalid,e["\u0275nov"](n,28).ngClassPending),l(n,42,0,e["\u0275nov"](n,47).ngClassUntouched,e["\u0275nov"](n,47).ngClassTouched,e["\u0275nov"](n,47).ngClassPristine,e["\u0275nov"](n,47).ngClassDirty,e["\u0275nov"](n,47).ngClassValid,e["\u0275nov"](n,47).ngClassInvalid,e["\u0275nov"](n,47).ngClassPending),l(n,56,0,e["\u0275nov"](n,61).ngClassUntouched,e["\u0275nov"](n,61).ngClassTouched,e["\u0275nov"](n,61).ngClassPristine,e["\u0275nov"](n,61).ngClassDirty,e["\u0275nov"](n,61).ngClassValid,e["\u0275nov"](n,61).ngClassInvalid,e["\u0275nov"](n,61).ngClassPending),l(n,74,0,e["\u0275nov"](n,80).ngClassUntouched,e["\u0275nov"](n,80).ngClassTouched,e["\u0275nov"](n,80).ngClassPristine,e["\u0275nov"](n,80).ngClassDirty,e["\u0275nov"](n,80).ngClassValid,e["\u0275nov"](n,80).ngClassInvalid,e["\u0275nov"](n,80).ngClassPending),l(n,88,0,e["\u0275nov"](n,93).ngClassUntouched,e["\u0275nov"](n,93).ngClassTouched,e["\u0275nov"](n,93).ngClassPristine,e["\u0275nov"](n,93).ngClassDirty,e["\u0275nov"](n,93).ngClassValid,e["\u0275nov"](n,93).ngClassInvalid,e["\u0275nov"](n,93).ngClassPending),l(n,110,0,e["\u0275nov"](n,115).ngClassUntouched,e["\u0275nov"](n,115).ngClassTouched,e["\u0275nov"](n,115).ngClassPristine,e["\u0275nov"](n,115).ngClassDirty,e["\u0275nov"](n,115).ngClassValid,e["\u0275nov"](n,115).ngClassInvalid,e["\u0275nov"](n,115).ngClassPending),l(n,132,0,e["\u0275nov"](n,137).ngClassUntouched,e["\u0275nov"](n,137).ngClassTouched,e["\u0275nov"](n,137).ngClassPristine,e["\u0275nov"](n,137).ngClassDirty,e["\u0275nov"](n,137).ngClassValid,e["\u0275nov"](n,137).ngClassInvalid,e["\u0275nov"](n,137).ngClassPending);var o=e["\u0275unv"](n,152,0,l(n,153,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,152,1,l(n,154,0,e["\u0275nov"](n.parent,1),u.resource));l(n,152,0,o,a)})}function ut(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275and"](16777216,null,null,1,null,pe)),e["\u0275did"](3,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,fe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nt)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)},null)}function et(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-form",[],null,null,null,ut,ce)),e["\u0275did"](1,114688,null,0,O,[_.a,Mu.a,Mu.l,C.a,Xl.b,k.a,vl.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var tt=e["\u0275ccf"]("cd-rgw-user-form",O,et,{},{},[]),it=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ot(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","bucket"],["selectionType","multi"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getBucketList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](2,2867200,[[1,4],["table",4]],0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,le.b,le.a)),e["\u0275did"](4,114688,null,0,ne.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,2,1,"cd-rgw-bucket-details",[["cdTableDetail",""]],null,null,null,Ll,jl)),e["\u0275did"](6,573440,null,0,Fl,[],{selection:[0,"selection"]},null)],function(l,n){var u=n.component;l(n,2,0,u.buckets,u.columns,"flex",!1,"bucket","multi"),l(n,4,0,u.permission,u.selection,u.tableActions),l(n,6,0,u.selection)},null)}function at(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-rgw-bucket-list",[],null,null,null,ot,it)),e["\u0275prd"](256,null,T.a,V,[]),e["\u0275did"](2,49152,null,0,S,[x.a,h,Xl.b,vl.a,T.a,t.b],null,null)],null,null)}var rt=e["\u0275ccf"]("cd-rgw-bucket-list",S,at,{},{},[]),st=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function dt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,oe.b,oe.a)),e["\u0275did"](1,49152,null,0,ae.a,[],null,null),(l()(),e["\u0275ted"](-1,0,["Loading bucket data..."]))],null,null)}function ct(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,[[null,"backAction"]],function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e},re.b,re.a)),e["\u0275did"](1,49152,null,0,se.a,[],null,{backAction:"backAction"}),(l()(),e["\u0275ted"](-1,0,["The bucket data could not be loaded."]))],null,null)}function pt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","id"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Id"])),(l()(),e["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,5,"input",[["class","form-control"],["formControlName","id"],["id","id"],["name","id"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,5)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,5).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,5)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,5)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](5,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](7,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](9,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,7,0,"id")},function(l,n){l(n,4,0,e["\u0275nov"](n,9).ngClassUntouched,e["\u0275nov"](n,9).ngClassTouched,e["\u0275nov"](n,9).ngClassPristine,e["\u0275nov"](n,9).ngClassDirty,e["\u0275nov"](n,9).ngClassValid,e["\u0275nov"](n,9).ngClassInvalid,e["\u0275nov"](n,9).ngClassPending)})}function ft(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function mt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function gt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function vt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen name is already in use."]))],null,null)}function bt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function ht(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a user --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Ct(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function yt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _t(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,67,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,66,"form",[["class","form-horizontal"],["name","bucketForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,3).onReset()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,s.D,[],null,null),e["\u0275did"](3,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](5,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](6,0,null,null,61,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,[""," ",""])),e["\u0275ppd"](10,1),e["\u0275ppd"](11,1),(l()(),e["\u0275eld"](12,0,null,null,46,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,pt)),e["\u0275did"](14,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](16,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](17,{"has-error":0}),(l()(),e["\u0275eld"](18,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","bid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,ft)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](23,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","bid"],["id","bid"],["name","bid"],["placeholder","Name..."],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](25,4210688,null,0,Dn.a,[e.ElementRef],null,null),e["\u0275did"](26,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](28,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](30,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,mt)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gt)),e["\u0275did"](34,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vt)),e["\u0275did"](36,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](37,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](38,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](39,{"has-error":0}),(l()(),e["\u0275eld"](40,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","owner"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Owner"])),(l()(),e["\u0275eld"](43,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](45,0,null,null,11,"select",[["class","form-control"],["formControlName","owner"],["id","owner"],["name","owner"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,46).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,46).onTouched()&&t),t},null,null)),e["\u0275did"](46,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](48,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](50,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,bt)),e["\u0275did"](52,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ht)),e["\u0275did"](54,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ct)),e["\u0275did"](56,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,yt)),e["\u0275did"](58,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](59,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](60,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](61,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Nn.b,Nn.a)),e["\u0275did"](62,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](63,0,[""," ",""])),e["\u0275ppd"](64,1),e["\u0275ppd"](65,1),(l()(),e["\u0275eld"](66,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](67,49152,null,0,En.a,[Il.Location,t.b],null,null)],function(l,n){var u=n.component;l(n,3,0,u.bucketForm),l(n,14,0,u.editing);var t=l(n,17,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3)));l(n,16,0,"form-group",t),l(n,22,0,!u.editing),l(n,28,0,"bid"),l(n,32,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"required")),l(n,34,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"bucketNameInvalid")),l(n,36,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"bucketNameExists"));var i=l(n,39,0,u.bucketForm.showError("owner",e["\u0275nov"](n,3)));l(n,38,0,"form-group",i),l(n,48,0,"owner"),l(n,52,0,null===u.owners),l(n,54,0,null!==u.owners),l(n,56,0,u.owners),l(n,58,0,u.bucketForm.showError("owner",e["\u0275nov"](n,3),"required")),l(n,62,0,u.bucketForm,"button")},function(l,n){var u=n.component;l(n,1,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending);var t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,9,1,l(n,11,0,e["\u0275nov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,24,0,u.editing,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,45,0,e["\u0275nov"](n,50).ngClassUntouched,e["\u0275nov"](n,50).ngClassTouched,e["\u0275nov"](n,50).ngClassPristine,e["\u0275nov"](n,50).ngClassDirty,e["\u0275nov"](n,50).ngClassValid,e["\u0275nov"](n,50).ngClassInvalid,e["\u0275nov"](n,50).ngClassPending);var o=e["\u0275unv"](n,63,0,l(n,64,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,63,1,l(n,65,0,e["\u0275nov"](n.parent,1),u.resource));l(n,63,0,o,a)})}function kt(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275and"](16777216,null,null,1,null,dt)),e["\u0275did"](3,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ct)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,_t)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)},null)}function Rt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-bucket-form",[],null,null,null,kt,st)),e["\u0275did"](1,114688,null,0,R,[Mu.a,Mu.l,_.a,h,C.a,k.a,vl.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var It=e["\u0275ccf"]("cd-rgw-bucket-form",R,Rt,{},{},[]),wt=u("TZo1"),qt=u("9Kw/"),Et=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function xt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"cd-info-panel",[],null,null,null,wt.b,wt.a)),e["\u0275did"](1,49152,null,0,qt.a,[vl.a],null,null),(l()(),e["\u0275ted"](2,0,[" ",""])),(l()(),e["\u0275eld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Please consult the "])),(l()(),e["\u0275eld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["documentation"])),(l()(),e["\u0275ted"](-1,null,[" on how to configure and enable the Object Gateway management functionality."]))],null,function(l,n){var u=n.component;l(n,2,0,u.message),l(n,6,0,e["\u0275inlineInterpolate"](1,"",u.docsUrl,""))})}function Tt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-501",[],null,null,null,xt,Et)),e["\u0275did"](1,245760,null,0,r,[Mu.a,a.a,o.a],null,null)],function(l,n){l(n,1,0)},null)}var Vt=e["\u0275ccf"]("cd-rgw-501",r,Tt,{},{},[]);u.d(n,"RgwModuleNgFactory",function(){return St}),u.d(n,"RoutedRgwModuleNgFactory",function(){return Dt});var St=e["\u0275cmf"]($,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[ul.a,el.a,tl.a,il.a,il.b,ol.a,al.a,rl.a,sl.a,dl.a,Sl,Kl,_n,Sn,Wn,du,ku]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,Il.NgLocalization,Il.NgLocaleLocalization,[e.LOCALE_ID,[2,Il["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,Dl.a,Dl.a,[vl.a]),e["\u0275mpd"](4608,Il.DatePipe,Il.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,o.a,o.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,Hl.a,Hl.a,[P.a]),e["\u0275mpd"](4608,Ru.a,Ru.a,[P.a]),e["\u0275mpd"](4608,Nl.a,Nl.a,[P.a]),e["\u0275mpd"](4608,Iu.a,Iu.a,[]),e["\u0275mpd"](4608,wu.a,wu.a,[]),e["\u0275mpd"](4608,qu.a,qu.a,[]),e["\u0275mpd"](4608,Eu.a,Eu.a,[]),e["\u0275mpd"](4608,yl.a,yl.a,[Il.DatePipe]),e["\u0275mpd"](4608,xu.a,xu.a,[]),e["\u0275mpd"](4608,Tu.a,Tu.a,[]),e["\u0275mpd"](4608,Vu.a,Vu.a,[]),e["\u0275mpd"](4608,Su.a,Su.a,[]),e["\u0275mpd"](4608,Du.a,Du.a,[]),e["\u0275mpd"](4608,kn.a,kn.a,[]),e["\u0275mpd"](4608,s.E,s.E,[]),e["\u0275mpd"](4608,s.h,s.h,[]),e["\u0275mpd"](4608,Nu.b,Nu.b,[]),e["\u0275mpd"](4608,Fu.a,Fu.a,[]),e["\u0275mpd"](4608,ju.a,ju.a,[]),e["\u0275mpd"](4608,Ql.a,Ql.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ju.a,e.ApplicationRef]),e["\u0275mpd"](4608,Pu.a,Pu.a,[]),e["\u0275mpd"](4608,Xl.b,Xl.b,[e.RendererFactory2,Ql.a]),e["\u0275mpd"](4608,zu.ScrollbarHelper,zu.ScrollbarHelper,[ml.DOCUMENT]),e["\u0275mpd"](4608,Bu.DimensionsHelper,Bu.DimensionsHelper,[]),e["\u0275mpd"](4608,Uu.ColumnChangesService,Uu.ColumnChangesService,[]),e["\u0275mpd"](4608,Zl.f,Zl.f,[]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,i.a,i.a,[Mu.l,x.a]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](1073742336,Il.CommonModule,Il.CommonModule,[]),e["\u0275mpd"](1073742336,Au.a,Au.a,[]),e["\u0275mpd"](1073742336,s.B,s.B,[]),e["\u0275mpd"](1073742336,s.n,s.n,[]),e["\u0275mpd"](1073742336,s.x,s.x,[]),e["\u0275mpd"](1073742336,Nu.c,Nu.c,[]),e["\u0275mpd"](1073742336,Fu.d,Fu.d,[]),e["\u0275mpd"](1073742336,Pu.d,Pu.d,[]),e["\u0275mpd"](1073742336,Ou.ChartsModule,Ou.ChartsModule,[]),e["\u0275mpd"](1073742336,Xl.e,Xl.e,[]),e["\u0275mpd"](1073742336,Lu.a,Lu.a,[]),e["\u0275mpd"](1073742336,Zl.e,Zl.e,[]),e["\u0275mpd"](1073742336,Gu.a,Gu.a,[]),e["\u0275mpd"](1073742336,Ku.NgxDatatableModule,Ku.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,Mu.p,Mu.p,[[2,Mu.v],[2,Mu.l]]),e["\u0275mpd"](1073742336,$u.a,$u.a,[]),e["\u0275mpd"](1073742336,b.a,b.a,[]),e["\u0275mpd"](1073742336,Zu.a,Zu.a,[]),e["\u0275mpd"](1073742336,Qu.a,Qu.a,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,$,$,[]),e["\u0275mpd"](256,Zl.a,{autoClose:!0,insideClick:!1},[])])}),Dt=e["\u0275cmf"](nl,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[ul.a,el.a,tl.a,il.a,il.b,ol.a,al.a,rl.a,sl.a,dl.a,Sl,Kl,_n,Sn,Wn,du,ku,Ju,ie,tt,rt,It,Vt]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,Il.NgLocalization,Il.NgLocaleLocalization,[e.LOCALE_ID,[2,Il["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,Dl.a,Dl.a,[vl.a]),e["\u0275mpd"](4608,Il.DatePipe,Il.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,o.a,o.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,Hl.a,Hl.a,[P.a]),e["\u0275mpd"](4608,Ru.a,Ru.a,[P.a]),e["\u0275mpd"](4608,Nl.a,Nl.a,[P.a]),e["\u0275mpd"](4608,Iu.a,Iu.a,[]),e["\u0275mpd"](4608,wu.a,wu.a,[]),e["\u0275mpd"](4608,qu.a,qu.a,[]),e["\u0275mpd"](4608,Eu.a,Eu.a,[]),e["\u0275mpd"](4608,yl.a,yl.a,[Il.DatePipe]),e["\u0275mpd"](4608,xu.a,xu.a,[]),e["\u0275mpd"](4608,Tu.a,Tu.a,[]),e["\u0275mpd"](4608,Vu.a,Vu.a,[]),e["\u0275mpd"](4608,Su.a,Su.a,[]),e["\u0275mpd"](4608,Du.a,Du.a,[]),e["\u0275mpd"](4608,kn.a,kn.a,[]),e["\u0275mpd"](4608,s.E,s.E,[]),e["\u0275mpd"](4608,s.h,s.h,[]),e["\u0275mpd"](4608,Nu.b,Nu.b,[]),e["\u0275mpd"](4608,Fu.a,Fu.a,[]),e["\u0275mpd"](4608,ju.a,ju.a,[]),e["\u0275mpd"](4608,Ql.a,Ql.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ju.a,e.ApplicationRef]),e["\u0275mpd"](4608,Pu.a,Pu.a,[]),e["\u0275mpd"](4608,Xl.b,Xl.b,[e.RendererFactory2,Ql.a]),e["\u0275mpd"](4608,zu.ScrollbarHelper,zu.ScrollbarHelper,[ml.DOCUMENT]),e["\u0275mpd"](4608,Bu.DimensionsHelper,Bu.DimensionsHelper,[]),e["\u0275mpd"](4608,Uu.ColumnChangesService,Uu.ColumnChangesService,[]),e["\u0275mpd"](4608,Zl.f,Zl.f,[]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,i.a,i.a,[Mu.l,x.a]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](1073742336,Il.CommonModule,Il.CommonModule,[]),e["\u0275mpd"](1073742336,Au.a,Au.a,[]),e["\u0275mpd"](1073742336,s.B,s.B,[]),e["\u0275mpd"](1073742336,s.n,s.n,[]),e["\u0275mpd"](1073742336,s.x,s.x,[]),e["\u0275mpd"](1073742336,Nu.c,Nu.c,[]),e["\u0275mpd"](1073742336,Fu.d,Fu.d,[]),e["\u0275mpd"](1073742336,Pu.d,Pu.d,[]),e["\u0275mpd"](1073742336,Ou.ChartsModule,Ou.ChartsModule,[]),e["\u0275mpd"](1073742336,Xl.e,Xl.e,[]),e["\u0275mpd"](1073742336,Lu.a,Lu.a,[]),e["\u0275mpd"](1073742336,Zl.e,Zl.e,[]),e["\u0275mpd"](1073742336,Gu.a,Gu.a,[]),e["\u0275mpd"](1073742336,Ku.NgxDatatableModule,Ku.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,Mu.p,Mu.p,[[2,Mu.v],[2,Mu.l]]),e["\u0275mpd"](1073742336,$u.a,$u.a,[]),e["\u0275mpd"](1073742336,b.a,b.a,[]),e["\u0275mpd"](1073742336,Zu.a,Zu.a,[]),e["\u0275mpd"](1073742336,Qu.a,Qu.a,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,$,$,[]),e["\u0275mpd"](1073742336,nl,nl,[]),e["\u0275mpd"](256,Zl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,Mu.j,function(){return[[{path:"",redirectTo:"daemon",pathMatch:"full"},{path:"daemon",component:F,data:Z},{path:"user",data:Q,children:[{path:"",component:K},{path:"create",component:O,data:H},{path:"edit/:uid",component:O,data:Y}]},{path:"bucket",data:X,children:[{path:"",component:S},{path:"create",component:R,data:W},{path:"edit/:bid",component:R,data:J}]},{path:"501/:message",component:r,canActivate:[i.a],data:ll}]]},[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/7.a311be12e7802be9438f.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/7.a311be12e7802be9438f.js
deleted file mode 100644 (file)
index 13ef67a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{J6Oi:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),t=u("k/xb"),a=u("MdoF"),i=u("ES0t"),o=u("Xg1U"),d=u("z5nN"),r=u("iutN"),s=u("EEJc"),c=u("PEr+"),p=u("a40w"),f=u("pMnS"),g=u("RIVN"),m=u("nP0W"),v=u("VBM6"),h=u("atuK"),b=u("JIi+"),C=u("Ur3J"),R=u("I4Qz"),I=u("0rTx"),w=u("lz+O"),x=u("u2XS"),y=u("nhAp"),T=u("l7Jr"),k=u("bUo2"),V=u("Ip0R"),N=u("iExv"),E=u("Jm/i"),D=u("85J/"),_=u("+0ag"),S=u("aXbf"),F=u("Fgil"),P=u("IzCI"),q=u("o4+5"),$=u("Dwqy"),O=u("uYzU"),M=u("uhwM"),z=u("E2fk"),j=u("a0VL"),A=u("nSDx"),U=u("SB+Q"),B=u("TYzs"),L=u("BQkM"),G=u("dEH0"),K=u("8xTl"),H=u("gIcY"),J=u("lTVp"),Z=u("OZfm"),W=u("NJnL"),Q=u("lqqz"),Y=u("eajB"),X=u("DQlY"),ll=u("FO+L"),nl=u("ZYjt"),ul=u("nhM1"),el=u("BARL"),tl=u("xtZt"),al=u("aexS"),il=u("Avrn"),ol=u("ZYCi"),dl=u("urB8"),rl=u("JZ5S"),sl=u("Tff5"),cl=u("YAQW"),pl=u("Da1D"),fl=u("ARl4"),gl=u("9Xeq"),ml=u("xdbM"),vl=u("yGOH"),hl=u("V/fk"),bl=u("F8xH"),Cl=u("ChqD"),Rl=u("pL04"),Il=u("PCNd"),wl=u("STEd"),xl=u("kccj"),yl=u("a278"),Tl=u("insk"),kl=u("mSOc"),Vl=u("20UP"),Nl=u("pKUh"),El=u("C6Ij"),Dl=u("AWcq"),_l=u("25BL"),Sl=u("uIqm"),Fl=u("NUGo"),Pl=u("S7zO"),ql=u("JBea"),$l=u("VTlA"),Ol=u("ufoC"),Ml=u("EgGo"),zl=u("LvDl"),jl=u("F83c"),Al=u("OLbh"),Ul=u("0+/T"),Bl=u("sne2"),Ll=u("x38r"),Gl=u("yJti"),Kl=u("vCyI"),Hl=u("kvvV"),Jl=u("kn/O"),Zl=u("2JDI"),Wl=function(){return function(){}}(),Ql=new Ml.a("block/rbd"),Yl=function(){function l(l,n,u,e,t,a,i,o,d,r){var s=this;this.authStorageService=l,this.rbdService=n,this.dimlessBinaryPipe=u,this.dimlessPipe=e,this.modalService=t,this.taskWrapper=a,this.taskListService=i,this.i18n=o,this.urlBuilder=d,this.actionLabels=r,this.selection=new Kl.a,this.builders={"rbd/create":function(l){return s.createRbdFromTask(l.pool_name,l.image_name)},"rbd/clone":function(l){return s.createRbdFromTask(l.child_pool_name,l.child_image_name)},"rbd/copy":function(l){return s.createRbdFromTask(l.dest_pool_name,l.dest_image_name)}},this.permission=this.authStorageService.getPermissions().rbdImage;var c=function(){return s.selection.first()&&encodeURIComponent(s.selection.first().pool_name)+"/"+encodeURIComponent(s.selection.first().name)},p={permission:"create",icon:"fa-plus",routerLink:function(){return s.urlBuilder.getCreate()},canBePrimary:function(l){return!l.hasSingleSelection},name:this.actionLabels.CREATE},f={permission:"update",icon:"fa-pencil",routerLink:function(){return s.urlBuilder.getEdit(c())},name:this.actionLabels.EDIT},g={permission:"delete",icon:"fa-times",click:function(){return s.deleteRbdModal()},name:this.actionLabels.DELETE},m={permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-copy",routerLink:function(){return"/block/rbd/copy/"+c()},name:this.i18n("Copy")},v={permission:"update",disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting||!l.first().parent},icon:"fa-chain-broken",click:function(){return s.flattenRbdModal()},name:this.i18n("Flatten")},h={permission:"delete",icon:"fa-trash-o",click:function(){return s.trashRbdModal()},name:this.i18n("Move to Trash")};this.tableActions=[p,f,m,v,g,h]}return l.prototype.createRbdFromTask=function(l,n){var u=new Wl;return u.id="-1",u.name=n,u.pool_name=l,u},l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:2,cellTransformation:Ll.a.executing},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Objects"),prop:"num_objs",flexGrow:1,cellClass:"text-right",pipe:this.dimlessPipe},{name:this.i18n("Object size"),prop:"obj_size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Total provisioned"),prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Parent"),prop:"parent",flexGrow:2,cellTemplate:this.parentTpl}],this.taskListService.init(function(){return l.rbdService.list()},function(n){return l.prepareResponse(n)},function(n){return l.images=n},function(){return l.onFetchError()},this.taskFilter,this.itemFilter,this.builders)},l.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatusList=[{status:Gl.a.ValueException}]},l.prototype.prepareResponse=function(l){var n=[],u={};l.forEach(function(l){zl.isUndefined(u[l.status])&&(u[l.status]=[]),u[l.status].push(l.pool_name),n=n.concat(l.value)});var e=[];return zl.forEach(u,function(l,n){e.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=e,n},l.prototype.itemFilter=function(l,n){var u,e;switch(n.name){case"rbd/copy":u="dest_pool_name",e="dest_image_name";break;case"rbd/clone":u="child_pool_name",e="child_image_name";break;default:u="pool_name",e="image_name"}return l.pool_name===n.metadata[u]&&l.name===n.metadata[e]},l.prototype.taskFilter=function(l){return["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteRbdModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name;this.modalRef=this.modalService.show(Ul.a,{initialState:{itemDescription:"RBD",submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/delete",{pool_name:n,image_name:u}),call:l.rbdService.delete(n,u)})}}})},l.prototype.trashRbdModal=function(){var l={metaType:"RBD",poolName:this.selection.first().pool_name,imageName:this.selection.first().name};this.modalRef=this.modalService.show(Zl.a,{initialState:l})},l.prototype.flattenRbd=function(l,n){var u=this;this.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/flatten",{pool_name:l,image_name:n}),call:this.rbdService.flatten(l,n)}).subscribe(void 0,void 0,function(){u.modalRef.hide()})},l.prototype.flattenRbdModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name,e=this.selection.first().parent;this.modalRef=this.modalService.show(Al.a,{initialState:{titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:e.pool_name+"/"+e.image_name+"@"+e.snap_name,child:n+"/"+u},onSubmit:function(){l.flattenRbd(n,u)}}})},l}(),Xl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,El.b,El.a)),e["\u0275did"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null))],null,function(l,n){l(n,0,0,"Only available for RBD images with <strong>fast-diff</strong> enabled")})}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["","/","@",""]))],null,function(l,n){l(n,1,0,n.parent.context.value.pool_name,n.parent.context.value.image_name,n.parent.context.value.snap_name)})}function en(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["-"]))],null,null)}function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,un)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,en)),e["\u0275did"](3,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)},null)}function an(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,[" You are about to flatten "])),(l()(),e["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](2,null,["",""])),(l()(),e["\u0275ted"](-1,null,[". "])),(l()(),e["\u0275eld"](4,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" All blocks will be copied from parent "])),(l()(),e["\u0275eld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](8,null,["",""])),(l()(),e["\u0275ted"](-1,null,[" to child "])),(l()(),e["\u0275eld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](11,null,["",""])),(l()(),e["\u0275ted"](-1,null,[".\n"]))],null,function(l,n){l(n,2,0,n.context.$implicit.child),l(n,8,0,n.context.$implicit.parent),l(n,11,0,n.context.$implicit.child)})}function on(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),e["\u0275qud"](402653184,2,{usageTpl:0}),e["\u0275qud"](402653184,3,{parentTpl:0}),e["\u0275qud"](402653184,4,{nameTpl:0}),e["\u0275qud"](402653184,5,{flattenTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,ln)),e["\u0275did"](6,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](7,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},_l.b,_l.a)),e["\u0275did"](8,2867200,[[1,4],["table",4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](9,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](10,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](11,0,null,2,1,"cd-rbd-details",[["cdTableDetail",""]],null,null,null,b.c,b.b)),e["\u0275did"](12,573440,null,0,ql.a,[],{selection:[0,"selection"]},null),(l()(),e["\u0275and"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,nn)),(l()(),e["\u0275and"](0,[[3,2],["parentTpl",2]],null,0,null,tn)),(l()(),e["\u0275and"](0,[[5,2],["flattenTpl",2]],null,0,null,an))],function(l,n){var u=n.component;l(n,6,0,u.viewCacheStatusList),l(n,8,0,u.images,u.columns,"flex","id","true","single"),l(n,10,0,u.permission,u.selection,u.tableActions),l(n,12,0,u.selection)},null)}var dn=u("wd/R"),rn=u("WxU5"),sn=u("2GqK"),cn=function(){function l(l,n,u,e,t,a,i){var o=this;this.authStorageService=l,this.rbdService=n,this.modalService=u,this.cdDatePipe=e,this.taskListService=t,this.taskWrapper=a,this.i18n=i,this.executingTasks=[],this.selection=new Kl.a,this.permission=this.authStorageService.getPermissions().rbdImage;var d={permission:"update",icon:"fa-undo",click:function(){return o.restoreModal()},name:this.i18n("Restore")},r={permission:"delete",icon:"fa-times",click:function(){return o.deleteModal()},name:this.i18n("Delete")};this.tableActions=[d,r]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:1,cellTransformation:Ll.a.executing},{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:1},{name:this.i18n("Status"),prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:this.i18n("Deleted At"),prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(function(){return l.rbdService.listTrash()},function(n){return l.prepareResponse(n)},function(n){return l.images=n},function(){return l.onFetchError()},this.taskFilter,this.itemFilter,void 0)},l.prototype.prepareResponse=function(l){var n=[],u={};l.forEach(function(l){zl.isUndefined(u[l.status])&&(u[l.status]=[]),u[l.status].push(l.pool_name),n=n.concat(l.value)});var e=[];return zl.forEach(u,function(l,n){e.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=e,n.forEach(function(l){l.cdIsExpired=dn().isAfter(l.deferment_end_time)}),n},l.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatusList=[{status:Gl.a.ValueException}]},l.prototype.itemFilter=function(l,n){return l.id===n.metadata.image_id},l.prototype.taskFilter=function(l){return["rbd/trash/remove","rbd/trash/restore"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.restoreModal=function(){var l={metaType:"RBD",poolName:this.selection.first().pool_name,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(sn.a,{initialState:l})},l.prototype.deleteModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name,e=this.selection.first().id,t=this.selection.first().deferment_end_time;this.modalRef=this.modalService.show(Ul.a,{initialState:{itemDescription:"RBD",bodyTemplate:this.deleteTpl,bodyContext:{$implicit:t},submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/trash/remove",{pool_name:n,image_id:e,image_name:u}),call:l.rbdService.removeTrash(n,e,u,!0)})}}})},l.prototype.isExpired=function(l){return dn().isAfter(l)},l.prototype.purgeModal=function(){this.modalService.show(rn.a)},l}(),pn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,El.b,El.a)),e["\u0275did"](1,114688,null,0,Dl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.purgeModal()&&e),e},null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-fw fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Purge Trash"]))],null,null)}function mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Expired at"]))],null,null)}function vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Protected until"]))],null,null)}function hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,mn)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vn)),e["\u0275did"](3,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275ted"](4,null,[" ","\n"])),e["\u0275ppd"](5,1)],function(l,n){l(n,1,0,n.context.row.cdIsExpired),l(n,3,0,!n.context.row.cdIsExpired)},function(l,n){var u=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n.parent,0),n.context.value));l(n,4,0,u)})}function bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"p",[["class","text-danger"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,3,"strong",[],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](3,null,["This image is protected until ","."])),e["\u0275ppd"](4,1)],null,function(l,n){var u=e["\u0275unv"](n,3,0,l(n,4,0,e["\u0275nov"](n.parent.parent,0),n.parent.context.$implicit));l(n,3,0,u)})}function Cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,bn)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,!n.component.isExpired(n.context.$implicit))},null)}function Rn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,j.a,[V.DatePipe]),e["\u0275qud"](402653184,1,{table:0}),e["\u0275qud"](402653184,2,{expiresTpl:0}),e["\u0275qud"](402653184,3,{deleteTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,fn)),e["\u0275did"](5,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](6,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},_l.b,_l.a)),e["\u0275did"](7,2867200,[[1,4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](8,0,null,0,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](10,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gn)),e["\u0275did"](12,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,[[2,2],["expiresTpl",2]],null,0,null,hn)),(l()(),e["\u0275and"](0,[[3,2],["deleteTpl",2]],null,0,null,Cn))],function(l,n){var u=n.component;l(n,5,0,u.viewCacheStatusList),l(n,7,0,u.images,u.columns,"flex","id","true","single"),l(n,10,0,u.permission,u.selection,u.tableActions),l(n,12,0,u.permission.delete)},null)}var In=u("wG1H"),wn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function xn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","41FrpeUiz"]],null,null,null,yl.b,yl.a)),e["\u0275did"](3,638976,null,0,Tl.a,[kl.a,nl.DomSanitizer,Vl.a,_.a,E.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rbd-overview?","two","41FrpeUiz")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,Nl.b,Nl.a)),e["\u0275did"](2,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](3,0,null,0,5,"tab",[["heading","Images"],["id","tab1"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](4,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],id:[1,"id"]},null),(l()(),e["\u0275eld"](5,0,null,null,3,"cd-rbd-list",[],null,null,null,on,Xl)),e["\u0275prd"](131584,null,$l.a,$l.a,[Ol.a,kl.a]),e["\u0275prd"](256,null,Ml.a,Ql,[]),e["\u0275did"](8,114688,null,0,Yl,[al.a,jl.a,F.a,q.a,X.b,Jl.a,$l.a,E.a,Ml.a,Bl.b],null,null),(l()(),e["\u0275eld"](9,0,null,0,4,"tab",[["heading","Trash"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](10,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](11,0,null,null,2,"cd-rbd-trash-list",[],null,null,null,Rn,pn)),e["\u0275prd"](131584,null,$l.a,$l.a,[Ol.a,kl.a]),e["\u0275did"](13,114688,null,0,cn,[al.a,jl.a,X.b,j.a,$l.a,Jl.a,E.a],null,null),(l()(),e["\u0275and"](16777216,null,0,1,null,xn)),e["\u0275did"](15,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,4,0,"Images","tab1"),l(n,8,0),l(n,10,0,"Trash"),l(n,13,0),l(n,15,0,u.grafanaPermission.read)},function(l,n){l(n,1,0,e["\u0275nov"](n,2).clazz),l(n,3,0,e["\u0275nov"](n,4).id,e["\u0275nov"](n,4).active,e["\u0275nov"](n,4).addClass),l(n,9,0,e["\u0275nov"](n,10).id,e["\u0275nov"](n,10).active,e["\u0275nov"](n,10).addClass)})}function Tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rbd-images",[],null,null,null,yn,wn)),e["\u0275did"](1,114688,null,0,In.a,[al.a],null,null)],function(l,n){l(n,1,0)},null)}var kn=e["\u0275ccf"]("cd-rbd-images",In.a,Tn,{},{},[]),Vn=u("4HWh"),Nn=u("p4Cf"),En=u("IZUe"),Dn=u("EmSq"),_n=u("BH9v"),Sn=u("rFfW"),Fn=u("o8EM"),Pn=u("gp3X"),qn=u("sb0X"),$n=u("KVJa"),On=u("Z21x"),Mn=u("MyVl"),zn=u("Ekvf"),jn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function An(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](2,null,[""," from"])),e["\u0275ppd"](3,1),(l()(),e["\u0275eld"](4,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"input",[["class","form-control"],["formControlName","parent"],["id","parent"],["name","parent"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,6)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,6).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,6)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,6)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](6,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](8,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](10,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](11,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){l(n,8,0,"parent")},function(l,n){var u=n.component,t=e["\u0275unv"](n,2,0,l(n,3,0,e["\u0275nov"](n.parent,0),u.action));l(n,2,0,t),l(n,5,0,e["\u0275nov"](n,10).ngClassUntouched,e["\u0275nov"](n,10).ngClassTouched,e["\u0275nov"](n,10).ngClassPristine,e["\u0275nov"](n,10).ngClassDirty,e["\u0275nov"](n,10).ngClassValid,e["\u0275nov"](n,10).ngClassInvalid,e["\u0275nov"](n,10).ngClassPending)})}function Un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["'/' and '@' are not allowed."]))],null,null)}function Ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null)],function(l,n){l(n,3,0,"pool")},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Kn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- No rbd pools available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Jn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a pool --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)},function(l,n){l(n,3,0,n.context.$implicit.pool_name)})}function Wn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Kn)),e["\u0275did"](7,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Hn)),e["\u0275did"](9,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Jn)),e["\u0275did"](11,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Zn)),e["\u0275did"](13,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,3,0,"pool"),l(n,7,0,null===u.pools),l(n,9,0,null!==u.pools&&0===u.pools.length),l(n,11,0,null!==u.pools&&u.pools.length>0),l(n,13,0,u.pools)},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Qn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Xn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"],["placeholder","Data pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null)],function(l,n){l(n,3,0,"dataPool")},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function lu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function nu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- No data pools available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a data pool -- "]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function eu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)},function(l,n){l(n,3,0,n.context.$implicit.pool_name)})}function tu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,13,"select",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0,a=l.component;return"change"===n&&(t=!1!==e["\u0275nov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"change"===n&&(t=!1!==a.onDataPoolChange(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,lu)),e["\u0275did"](7,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nu)),e["\u0275did"](9,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,uu)),e["\u0275did"](11,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,eu)),e["\u0275did"](13,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,3,0,"dataPool"),l(n,7,0,null===u.dataPools),l(n,9,0,null!==u.dataPools&&0===u.dataPools.length),l(n,11,0,null!==u.dataPools&&u.dataPools.length>0),l(n,13,0,u.dataPools)},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function au(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","dataPool"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Data pool"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Yn)),e["\u0275did"](7,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,1,"cd-helper",[["html","Dedicated pool that stores the object-data of the RBD."]],null,null,null,Vn.b,Vn.a)),e["\u0275did"](9,49152,null,0,Nn.a,[],{html:[0,"html"]},null),(l()(),e["\u0275eld"](10,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Xn)),e["\u0275did"](12,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,tu)),e["\u0275did"](14,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,au)),e["\u0275did"](16,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.rbdForm.showError("dataPool",e["\u0275nov"](n.parent,5)));l(n,1,0,"form-group",t),l(n,7,0,"editing"!==u.mode),l(n,9,0,"Dedicated pool that stores the object-data of the RBD."),l(n,12,0,"editing"===u.mode||!u.poolPermission.read),l(n,14,0,"editing"!==u.mode&&u.poolPermission.read),l(n,16,0,u.rbdForm.showError("dataPool",e["\u0275nov"](n.parent,5),"required"))},null)}function ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function du(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["You have to increase the size."]))],null,null)}function ru(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-helper",[],null,null,null,Vn.b,Vn.a)),e["\u0275did"](1,49152,null,0,Nn.a,[],{html:[0,"html"]},null)],function(l,n){l(n,1,0,e["\u0275inlineInterpolate"](1,"",n.parent.context.$implicit.helperHtml,""))},null)}function su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](4,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](6,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](7,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](8,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,ru)),e["\u0275did"](10,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,10,0,n.context.$implicit.helperHtml)},function(l,n){l(n,1,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,""),e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,""),e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending),l(n,7,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,8,0,n.context.$implicit.desc)})}function cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=0!=(l.component.advancedEnabled=!0)&&e),e},null,null)),(l()(),e["\u0275ted"](-1,null,["Advanced..."]))],null,null)}function pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function gu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function mu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required because stripe count is defined!"]))],null,null)}function vu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe unit is greater than object size."]))],null,null)}function hu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function bu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required because stripe unit is defined!"]))],null,null)}function Cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe count must be greater than 0."]))],null,null)}function Ru(l){return e["\u0275vid"](0,[e["\u0275pid"](0,V.TitleCasePipe,[]),e["\u0275pid"](0,K.a,[]),(l()(),e["\u0275eld"](2,0,null,null,171,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,170,"form",[["class","form-horizontal"],["name","rbdForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,5).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,5).onReset()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,H.D,[],null,null),e["\u0275did"](5,540672,[["formDir",4]],0,H.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,H.d,null,[H.l]),e["\u0275did"](7,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](8,0,null,null,165,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](11,null,[""," ",""])),e["\u0275ppd"](12,1),e["\u0275ppd"](13,1),(l()(),e["\u0275eld"](14,0,null,null,150,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,An)),e["\u0275did"](16,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](17,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](18,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](19,{"has-error":0}),(l()(),e["\u0275eld"](20,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](23,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](26,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](28,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](30,16384,null,0,H.r,[[4,H.q]],null,null),e["\u0275did"](31,4210688,null,0,En.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Un)),e["\u0275did"](33,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Bn)),e["\u0275did"](35,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](36,0,null,null,13,"div",[["class","form-group"]],null,[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onPoolChange(u.target.value)&&e),e},null,null)),e["\u0275did"](37,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](38,{"has-error":0}),(l()(),e["\u0275eld"](39,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","pool"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" Pool "])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ln)),e["\u0275did"](42,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](43,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Gn)),e["\u0275did"](45,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Wn)),e["\u0275did"](47,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qn)),e["\u0275did"](49,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](50,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](53,0,null,null,5,"input",[["formControlName","useDataPool"],["id","useDataPool"],["name","useDataPool"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0,a=l.component;return"change"===n&&(t=!1!==e["\u0275nov"](l,54).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,54).onTouched()&&t),"change"===n&&(t=!1!==a.onUseDataPoolChange()&&t),t},null,null)),e["\u0275did"](54,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](56,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](58,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](59,0,null,null,1,"label",[["for","useDataPool"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Use a dedicated data pool"])),(l()(),e["\u0275and"](16777216,null,null,1,null,iu)),e["\u0275did"](62,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](63,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](64,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](65,{"has-error":0}),(l()(),e["\u0275eld"](66,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](67,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Size"])),(l()(),e["\u0275eld"](69,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](70,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](71,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","size"],["id","size"],["name","size"],["placeholder","e.g., 10GiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,72)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,72).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,72)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,72)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,77).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](72,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](74,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](76,16384,null,0,H.r,[[4,H.q]],null,null),e["\u0275did"](77,81920,null,0,Dn.a,[e.ElementRef,H.q,F.a,S.a],{defaultUnit:[0,"defaultUnit"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ou)),e["\u0275did"](79,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,du)),e["\u0275did"](81,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](82,0,null,null,10,"div",[["class","form-group"],["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]],null,null,null,null)),e["\u0275did"](83,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](84,{"has-error":0}),e["\u0275did"](85,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](87,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](88,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","features"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Features"])),(l()(),e["\u0275eld"](90,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,su)),e["\u0275did"](92,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](93,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](94,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,cu)),e["\u0275did"](96,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](97,0,null,null,67,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),e["\u0275eld"](98,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Advanced"])),(l()(),e["\u0275eld"](100,0,null,null,61,"div",[["class","section"]],null,null,null,null,null)),(l()(),e["\u0275eld"](101,0,null,null,1,"h3",[["class","page-header"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Striping"])),(l()(),e["\u0275eld"](103,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](104,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](105,{"has-error":0}),(l()(),e["\u0275eld"](106,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Object size"])),(l()(),e["\u0275eld"](108,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](109,0,null,null,7,"select",[["class","form-control"],["formControlName","obj_size"],["id","obj_size"],["name","obj_size"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,110).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,110).onTouched()&&t),t},null,null)),e["\u0275did"](110,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](112,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](114,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,pu)),e["\u0275did"](116,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](117,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](118,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](119,{"has-error":0}),(l()(),e["\u0275eld"](120,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","stripingUnit"]],null,null,null,null,null)),(l()(),e["\u0275eld"](121,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe unit"])),(l()(),e["\u0275and"](16777216,null,null,1,null,fu)),e["\u0275did"](124,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](125,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](126,0,null,null,11,"select",[["class","form-control"],["formControlName","stripingUnit"],["id","stripingUnit"],["name","stripingUnit"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,127).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,127).onTouched()&&t),t},null,null)),e["\u0275did"](127,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](129,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](131,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](132,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](133,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](134,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select stripe unit --"])),(l()(),e["\u0275and"](16777216,null,null,1,null,gu)),e["\u0275did"](137,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,mu)),e["\u0275did"](139,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vu)),e["\u0275did"](141,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](142,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](143,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](144,{"has-error":0}),(l()(),e["\u0275eld"](145,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","stripingCount"]],null,null,null,null,null)),(l()(),e["\u0275eld"](146,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe count"])),(l()(),e["\u0275and"](16777216,null,null,1,null,hu)),e["\u0275did"](149,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](150,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](151,0,null,null,6,"input",[["class","form-control"],["formControlName","stripingCount"],["id","stripingCount"],["name","stripingCount"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,152)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,152).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,152)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,152)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,153).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,153).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,153).onTouched()&&t),t},null,null)),e["\u0275did"](152,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275did"](153,16384,null,0,H.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l,n){return[l,n]},[H.e,H.C]),e["\u0275did"](155,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](157,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,bu)),e["\u0275did"](159,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Cu)),e["\u0275did"](161,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](162,0,null,null,2,"div",[["class","section"]],null,null,null,null,null)),(l()(),e["\u0275eld"](163,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],function(l,n,u){var e=!0;return"changes"===n&&(e=!1!==(l.component.getDirtyConfigurationValues=u)&&e),e},_n.b,_n.a)),e["\u0275did"](164,114688,null,0,Sn.a,[S.a,Fn.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),e["\u0275eld"](165,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](166,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](167,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Pn.b,Pn.a)),e["\u0275did"](168,114688,null,0,qn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](169,0,[""," ",""])),e["\u0275ppd"](170,1),e["\u0275ppd"](171,1),(l()(),e["\u0275eld"](172,0,null,null,1,"cd-back-button",[],null,null,null,$n.b,$n.a)),e["\u0275did"](173,49152,null,0,On.a,[V.Location,Bl.b],null,null)],function(l,n){var u=n.component;l(n,5,0,u.rbdForm),l(n,16,0,u.rbdForm.getValue("parent"));var t=l(n,19,0,u.rbdForm.showError("name",e["\u0275nov"](n,5)));l(n,18,0,"form-group",t),l(n,28,0,"name"),l(n,33,0,u.rbdForm.showError("name",e["\u0275nov"](n,5),"required")),l(n,35,0,u.rbdForm.showError("name",e["\u0275nov"](n,5),"pattern"));var a=l(n,38,0,u.rbdForm.showError("pool",e["\u0275nov"](n,5)));l(n,37,0,"form-group",a),l(n,42,0,"editing"!==u.mode),l(n,45,0,"editing"===u.mode||!u.poolPermission.read),l(n,47,0,"editing"!==u.mode&&u.poolPermission.read),l(n,49,0,u.rbdForm.showError("pool",e["\u0275nov"](n,5),"required")),l(n,56,0,"useDataPool"),l(n,62,0,u.rbdForm.getValue("useDataPool"));var i=l(n,65,0,u.rbdForm.showError("size",e["\u0275nov"](n,5)));l(n,64,0,"form-group",i),l(n,74,0,"size"),l(n,77,0,"GiB"),l(n,79,0,u.rbdForm.showError("size",e["\u0275nov"](n,5),"required")),l(n,81,0,u.rbdForm.showError("size",e["\u0275nov"](n,5),"invalidSizeObject"));var o=l(n,84,0,(e["\u0275nov"](n,5).submitted||u.rbdForm.get("features").dirty)&&u.rbdForm.get("features").invalid);l(n,83,0,"form-group",o),l(n,85,0,"features"),l(n,92,0,u.featuresList),l(n,96,0,!u.advancedEnabled);var d=l(n,105,0,u.rbdForm.showError("obj_size",e["\u0275nov"](n,5)));l(n,104,0,"form-group",d),l(n,112,0,"obj_size"),l(n,116,0,u.objectSizes);var r=l(n,119,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5)));l(n,118,0,"form-group",r),l(n,124,0,u.rbdForm.getValue("stripingCount")),l(n,129,0,"stripingUnit"),l(n,133,0,null),l(n,134,0,null),l(n,137,0,u.objectSizes),l(n,139,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5),"required")),l(n,141,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5),"invalidStripingUnit"));var s=l(n,144,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5)));l(n,143,0,"form-group",s),l(n,149,0,u.rbdForm.getValue("stripingUnit")),l(n,155,0,"stripingCount"),l(n,159,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5),"required")),l(n,161,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5),"min")),l(n,164,0,u.rbdForm,u.initializeConfigData),l(n,168,0,e["\u0275nov"](n,5),"button")},function(l,n){var u=n.component;l(n,3,0,e["\u0275nov"](n,7).ngClassUntouched,e["\u0275nov"](n,7).ngClassTouched,e["\u0275nov"](n,7).ngClassPristine,e["\u0275nov"](n,7).ngClassDirty,e["\u0275nov"](n,7).ngClassValid,e["\u0275nov"](n,7).ngClassInvalid,e["\u0275nov"](n,7).ngClassPending);var t=e["\u0275unv"](n,11,0,l(n,12,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,11,1,l(n,13,0,e["\u0275nov"](n,1),u.resource));l(n,11,0,t,a),l(n,25,0,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,53,0,e["\u0275nov"](n,58).ngClassUntouched,e["\u0275nov"](n,58).ngClassTouched,e["\u0275nov"](n,58).ngClassPristine,e["\u0275nov"](n,58).ngClassDirty,e["\u0275nov"](n,58).ngClassValid,e["\u0275nov"](n,58).ngClassInvalid,e["\u0275nov"](n,58).ngClassPending),l(n,71,0,e["\u0275nov"](n,76).ngClassUntouched,e["\u0275nov"](n,76).ngClassTouched,e["\u0275nov"](n,76).ngClassPristine,e["\u0275nov"](n,76).ngClassDirty,e["\u0275nov"](n,76).ngClassValid,e["\u0275nov"](n,76).ngClassInvalid,e["\u0275nov"](n,76).ngClassPending),l(n,82,0,e["\u0275nov"](n,87).ngClassUntouched,e["\u0275nov"](n,87).ngClassTouched,e["\u0275nov"](n,87).ngClassPristine,e["\u0275nov"](n,87).ngClassDirty,e["\u0275nov"](n,87).ngClassValid,e["\u0275nov"](n,87).ngClassInvalid,e["\u0275nov"](n,87).ngClassPending),l(n,97,0,!u.advancedEnabled),l(n,109,0,e["\u0275nov"](n,114).ngClassUntouched,e["\u0275nov"](n,114).ngClassTouched,e["\u0275nov"](n,114).ngClassPristine,e["\u0275nov"](n,114).ngClassDirty,e["\u0275nov"](n,114).ngClassValid,e["\u0275nov"](n,114).ngClassInvalid,e["\u0275nov"](n,114).ngClassPending),l(n,126,0,e["\u0275nov"](n,131).ngClassUntouched,e["\u0275nov"](n,131).ngClassTouched,e["\u0275nov"](n,131).ngClassPristine,e["\u0275nov"](n,131).ngClassDirty,e["\u0275nov"](n,131).ngClassValid,e["\u0275nov"](n,131).ngClassInvalid,e["\u0275nov"](n,131).ngClassPending),l(n,151,0,e["\u0275nov"](n,157).ngClassUntouched,e["\u0275nov"](n,157).ngClassTouched,e["\u0275nov"](n,157).ngClassPristine,e["\u0275nov"](n,157).ngClassDirty,e["\u0275nov"](n,157).ngClassValid,e["\u0275nov"](n,157).ngClassInvalid,e["\u0275nov"](n,157).ngClassPending);var i=e["\u0275unv"](n,169,0,l(n,170,0,e["\u0275nov"](n,0),u.action)),o=e["\u0275unv"](n,169,1,l(n,171,0,e["\u0275nov"](n,1),u.resource));l(n,169,0,i,o)})}function Iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rbd-form",[],null,null,null,Ru,jn)),e["\u0275did"](1,114688,null,0,Mn.a,[al.a,ol.a,zn.a,jl.a,S.a,Jl.a,F.a,E.a,Bl.b,ol.l],null,null)],function(l,n){l(n,1,0)},null)}var wu=e["\u0275ccf"]("cd-rbd-form",Mn.a,Iu,{},{},[]),xu=u("JxMD"),yu=u("dgut"),Tu=function(){function l(l){this.router=l}return l.prototype.ngOnInit=function(){this.url=this.router.url},l.prototype.navigateTo=function(l){this.router.navigate([l])},l}(),ku=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Vu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Nl.b,Nl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,1,"tab",[["heading","Overview"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/overview")&&e),e},null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(l()(),e["\u0275eld"](4,0,null,0,1,"tab",[["heading","Targets"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/targets")&&e),e},null,null)),e["\u0275did"](5,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(l,n){var u=n.component;l(n,3,0,"Overview","/block/iscsi/overview"===u.url),l(n,5,0,"Targets","/block/iscsi/targets"===u.url)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,4,0,e["\u0275nov"](n,5).id,e["\u0275nov"](n,5).active,e["\u0275nov"](n,5).addClass)})}var Nu=u("roDX"),Eu=u("my5R"),Du=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function _u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"span",[["class","label"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"label-success":0,"label-danger":1}),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){var u=l(n,2,0,"up"==n.context.value,"down"==n.context.value);l(n,1,0,"label",u)},function(l,n){l(n,3,0,n.context.value)})}function Su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-sparkline",[],null,null,null,xu.b,xu.a)),e["\u0275did"](2,638976,null,0,yu.a,[F.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],function(l,n){l(n,2,0,n.parent.context.value,n.parent.context.row.cdIsBinary)},null)}function Fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function Pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Su)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fu)),e["\u0275did"](3,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function qu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," /s "]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function $u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function Ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,qu)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,$u)),e["\u0275did"](3,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function Mu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,u)})}function zu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function ju(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Mu)),e["\u0275did"](1,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,zu)),e["\u0275did"](3,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function Au(l){return e["\u0275vid"](0,[e["\u0275pid"](0,$.a,[]),e["\u0275qud"](402653184,1,{statusColorTpl:0}),e["\u0275qud"](402653184,2,{iscsiSparklineTpl:0}),e["\u0275qud"](402653184,3,{iscsiPerSecondTpl:0}),e["\u0275qud"](402653184,4,{iscsiRelativeDateTpl:0}),(l()(),e["\u0275eld"](5,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Vu,ku)),e["\u0275did"](6,114688,null,0,Tu,[ol.l],null,null),(l()(),e["\u0275eld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Gateways"])),(l()(),e["\u0275eld"](9,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.refresh()&&e),e},_l.b,_l.a)),e["\u0275did"](10,2867200,null,0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"}),(l()(),e["\u0275eld"](11,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](13,0,null,null,1,"cd-table",[],null,null,null,_l.b,_l.a)),e["\u0275did"](14,2867200,null,0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(l()(),e["\u0275and"](0,[[1,2],["statusColorTpl",2]],null,0,null,_u)),(l()(),e["\u0275and"](0,[[2,2],["iscsiSparklineTpl",2]],null,0,null,Pu)),(l()(),e["\u0275and"](0,[[3,2],["iscsiPerSecondTpl",2]],null,0,null,Ou)),(l()(),e["\u0275and"](0,[[4,2],["iscsiRelativeDateTpl",2]],null,0,null,ju))],function(l,n){var u=n.component;l(n,6,0),l(n,10,0,u.gateways,u.gatewaysColumns),l(n,14,0,u.images,u.imagesColumns)},null)}function Uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi",[],null,null,null,Au,Du)),e["\u0275did"](1,114688,null,0,Nu.a,[Eu.a,q.a,O.a,E.a],null,null)],function(l,n){l(n,1,0)},null)}var Bu=e["\u0275ccf"]("cd-iscsi",Nu.a,Uu,{},{},[]),Lu=u("TZo1"),Gu=u("9Kw/"),Ku=u("3ris"),Hu=u("e/kN"),Ju=e["\u0275crt"]({encapsulation:0,styles:[["tabset.tabset>ul{border-bottom:0;float:left;display:block;margin-right:20px;border-right:1px solid #ddd;padding-right:15px}"]],data:{}});function Zu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Available information:"])),(l()(),e["\u0275eld"](4,0,null,null,1,"pre",[],null,null,null,null,null)),(l()(),e["\u0275ted"](5,null,["",""]))],null,function(l,n){l(n,5,0,n.component.status)})}function Wu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"cd-info-panel",[["title","iSCSI Targets not available"]],null,null,null,Lu.b,Lu.a)),e["\u0275did"](1,49152,null,0,Gu.a,[E.a],{title:[0,"title"]},null),(l()(),e["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Please consult the "])),(l()(),e["\u0275eld"](4,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["documentation"])),(l()(),e["\u0275ted"](-1,null,[" on how to configure and enable the iSCSI Targets management functionality."])),(l()(),e["\u0275and"](16777216,null,0,1,null,Zu)),e["\u0275did"](8,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,"iSCSI Targets not available"),l(n,8,0,u.status)},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.component.docsUrl,""))})}function Qu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-details",[["cdTableDetail",""]],null,null,null,x.c,x.b)),e["\u0275did"](1,638976,null,0,Ku.a,[E.a,O.a],{selection:[0,"selection"],settings:[1,"settings"]},null)],function(l,n){var u=n.component;l(n,1,0,u.selection,u.settings)},null)}function Yu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","target_iqn"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},_l.b,_l.a)),e["\u0275did"](1,2867200,[[1,4],["table",4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](2,0,null,0,6,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](4,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.configureDiscoveryAuth()&&e),e},null,null)),(l()(),e["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-fw fa-key-modern"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Discovery authentication"])),(l()(),e["\u0275and"](16777216,null,2,1,null,Qu)),e["\u0275did"](10,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,u.targets,u.columns,"flex","target_iqn","true","single"),l(n,4,0,u.permissions.iscsi,u.selection,u.tableActions),l(n,10,0,u.selection.hasSingleSelection)},null)}function Xu(l){return e["\u0275vid"](0,[e["\u0275qud"](671088640,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,Vu,ku)),e["\u0275did"](2,114688,null,0,Tu,[ol.l],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Wu)),e["\u0275did"](4,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Yu)),e["\u0275did"](6,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,2,0),l(n,4,0,!1===u.available),l(n,6,0,!0===u.available)},null)}function le(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-iscsi-target-list",[],null,null,null,Xu,Ju)),e["\u0275prd"](131584,null,$l.a,$l.a,[Ol.a,kl.a]),e["\u0275did"](2,245760,null,0,Hu.a,[al.a,E.a,Eu.a,$l.a,_.a,kl.a,X.b,Jl.a],null,null)],function(l,n){l(n,2,0)},null)}var ne=e["\u0275ccf"]("cd-iscsi-target-list",Hu.a,le,{},{},[]),ue=u("WiuZ"),ee=u("wnGv"),te=u("D4zM"),ae=u("OcYo"),ie=u("SZbH"),oe=u("gr3l"),de=e["\u0275crt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function re(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["IQN has wrong pattern."]))],null,null)}function ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'"])),(l()(),e["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309"])),(l()(),e["\u0275eld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,1,"a",[["href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],["target","_blank"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["More information"]))],null,null)}function pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This target has modified advanced settings."]))],null,null)}function fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removePortal(l.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["At least "," gateways are required."]))],null,function(l,n){l(n,1,0,n.component.minimum_gateways)})}function me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["Backstore: ",".\xa0"])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent,2),u.imagesSettings[n.parent.context.$implicit].backstore));l(n,1,0,t)})}function ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This image has modified settings."]))],null,null)}function he(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,12,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,6,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.imageSettingsModal(l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-cogs fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeImage(l.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](7,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,me)),e["\u0275did"](10,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ve)),e["\u0275did"](12,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,10,0,u.backstores.length>1),l(n,12,0,u.hasAdvancedSettings(u.imagesSettings[n.context.$implicit][u.imagesSettings[n.context.$implicit].backstore]))},function(l,n){l(n,2,0,n.context.$implicit)})}function be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["At least 1 image is required."]))],null,null)}function Ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator IQN needs to be unique."]))],null,null)}function Re(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ie(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["IQN has wrong pattern."]))],null,null)}function we(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function Ne(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ee(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function De(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiatorImage(l.parent.context.$implicit,l.context.index,l.parent.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function _e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator belongs to a group. Images will be configure in the group."]))],null,null)}function Se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,null,null,ue.b,ue.a)),e["\u0275did"](3,638976,null,0,ee.a,[E.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["\u0275eld"](4,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"]))],function(l,n){var u=n.component,e=n.parent.context.$implicit.getValue("luns");l(n,3,0,"btn btn-default pull-right",e,u.imagesInitiatorSelections[n.parent.context.index],u.messages.initiatorImage)},null)}function Fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,123,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](1,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](3,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](4,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator"])),(l()(),e["\u0275ted"](7,null,[": "," "])),(l()(),e["\u0275eld"](8,0,null,null,1,"button",[["class","close"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiator(l.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,113,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](12,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](13,{"has-error":0}),(l()(),e["\u0275eld"](14,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","client_iqn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Client IQN"])),(l()(),e["\u0275eld"](17,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,5,"input",[["class","form-control"],["formControlName","client_iqn"],["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,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,a=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,20)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,20).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,20)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,20)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==a.updatedInitiatorSelector()&&t),t},null,null)),e["\u0275did"](20,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](22,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](24,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ce)),e["\u0275did"](26,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Re)),e["\u0275did"](28,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ie)),e["\u0275did"](30,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](31,0,null,null,80,null,null,null,null,null,null,null)),e["\u0275did"](32,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](34,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](35,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](36,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](37,{"has-error":0}),(l()(),e["\u0275eld"](38,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User"])),(l()(),e["\u0275eld"](40,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,42)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,42).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,42)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,42)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](42,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](44,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](46,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,we)),e["\u0275did"](48,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,xe)),e["\u0275did"](50,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](51,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](52,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](53,{"has-error":0}),(l()(),e["\u0275eld"](54,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","password"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password"])),(l()(),e["\u0275eld"](56,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](57,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,5,"input",[["class","form-control"],["formControlName","password"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,59)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,59).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,59)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,59)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](59,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](61,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](63,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](64,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](65,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,66).onClick()&&t),t},null,null)),e["\u0275did"](66,81920,null,0,te.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](67,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,68).onClick()&&t),t},null,null)),e["\u0275did"](68,81920,null,0,ae.a,[e.ElementRef,e.Renderer2,ie.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ye)),e["\u0275did"](70,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Te)),e["\u0275did"](72,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](73,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](74,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](75,{"has-error":0}),(l()(),e["\u0275eld"](76,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","mutual_user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](77,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual User"])),(l()(),e["\u0275eld"](79,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](80,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_user"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,81)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,81).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,81)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,81)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](81,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](83,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](85,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,ke)),e["\u0275did"](87,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ve)),e["\u0275did"](89,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](90,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](91,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](92,{"has-error":0}),(l()(),e["\u0275eld"](93,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","mutual_password"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual Password"])),(l()(),e["\u0275eld"](95,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](96,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](97,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_password"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,98)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,98).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,98)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,98)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](98,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](100,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](102,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](103,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](104,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,105).onClick()&&t),t},null,null)),e["\u0275did"](105,81920,null,0,te.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](106,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,107).onClick()&&t),t},null,null)),e["\u0275did"](107,81920,null,0,ae.a,[e.ElementRef,e.Renderer2,ie.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ne)),e["\u0275did"](109,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ee)),e["\u0275did"](111,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](112,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](113,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](114,{"has-error":0}),(l()(),e["\u0275eld"](115,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","luns"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](117,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,De)),e["\u0275did"](119,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,_e)),e["\u0275did"](121,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Se)),e["\u0275did"](123,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,1,0,n.context.index);var u=l(n,13,0,n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2)));l(n,12,0,"form-group",u),l(n,22,0,"client_iqn");var t=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"notUnique");l(n,26,0,t);var a=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"required");l(n,28,0,a);var i=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,30,0,i),l(n,32,0,"auth");var o=l(n,37,0,n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2)));l(n,36,0,"form-group",o),l(n,44,0,"user");var d=n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2),"required");l(n,48,0,d);var r=n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,50,0,r);var s=l(n,53,0,n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2)));l(n,52,0,"form-group",s),l(n,61,0,"password"),l(n,66,0,"password"+n.context.index),l(n,68,0,"password"+n.context.index);var c=n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2),"required");l(n,70,0,c);var p=n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,72,0,p);var f=l(n,75,0,n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2)));l(n,74,0,"form-group",f),l(n,83,0,"mutual_user");var g=n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2),"required");l(n,87,0,g);var m=n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,89,0,m);var v=l(n,92,0,n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2)));l(n,91,0,"form-group",v),l(n,100,0,"mutual_password"),l(n,105,0,"mutual_password"+n.context.index),l(n,107,0,"mutual_password"+n.context.index);var h=n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2),"required");l(n,109,0,h);var b=n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,111,0,b);var C=l(n,114,0,n.context.$implicit.showError("luns",e["\u0275nov"](n.parent.parent,2)));l(n,113,0,"form-group",C);var R=n.context.$implicit.getValue("luns");l(n,119,0,R);var I=n.context.$implicit.getValue("cdIsInGroup");l(n,121,0,I);var w=!n.context.$implicit.getValue("cdIsInGroup");l(n,123,0,w)},function(l,n){l(n,0,0,e["\u0275nov"](n,3).ngClassUntouched,e["\u0275nov"](n,3).ngClassTouched,e["\u0275nov"](n,3).ngClassPristine,e["\u0275nov"](n,3).ngClassDirty,e["\u0275nov"](n,3).ngClassValid,e["\u0275nov"](n,3).ngClassInvalid,e["\u0275nov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("client_iqn");l(n,7,0,u),l(n,19,0,e["\u0275nov"](n,24).ngClassUntouched,e["\u0275nov"](n,24).ngClassTouched,e["\u0275nov"](n,24).ngClassPristine,e["\u0275nov"](n,24).ngClassDirty,e["\u0275nov"](n,24).ngClassValid,e["\u0275nov"](n,24).ngClassInvalid,e["\u0275nov"](n,24).ngClassPending),l(n,41,0,"user"+n.context.index,e["\u0275nov"](n,46).ngClassUntouched,e["\u0275nov"](n,46).ngClassTouched,e["\u0275nov"](n,46).ngClassPristine,e["\u0275nov"](n,46).ngClassDirty,e["\u0275nov"](n,46).ngClassValid,e["\u0275nov"](n,46).ngClassInvalid,e["\u0275nov"](n,46).ngClassPending),l(n,58,0,"password"+n.context.index,e["\u0275nov"](n,63).ngClassUntouched,e["\u0275nov"](n,63).ngClassTouched,e["\u0275nov"](n,63).ngClassPristine,e["\u0275nov"](n,63).ngClassDirty,e["\u0275nov"](n,63).ngClassValid,e["\u0275nov"](n,63).ngClassInvalid,e["\u0275nov"](n,63).ngClassPending),l(n,80,0,"mutual_user"+n.context.index,e["\u0275nov"](n,85).ngClassUntouched,e["\u0275nov"](n,85).ngClassTouched,e["\u0275nov"](n,85).ngClassPristine,e["\u0275nov"](n,85).ngClassDirty,e["\u0275nov"](n,85).ngClassValid,e["\u0275nov"](n,85).ngClassInvalid,e["\u0275nov"](n,85).ngClassPending),l(n,97,0,"mutual_password"+n.context.index,e["\u0275nov"](n,102).ngClassUntouched,e["\u0275nov"](n,102).ngClassTouched,e["\u0275nov"](n,102).ngClassPristine,e["\u0275nov"](n,102).ngClassDirty,e["\u0275nov"](n,102).ngClassValid,e["\u0275nov"](n,102).ngClassInvalid,e["\u0275nov"](n,102).ngClassPending)})}function Pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["No items added."]))],null,null)}function qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","initiators"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiators"])),(l()(),e["\u0275eld"](3,0,null,null,14,"div",[["class","col-sm-9"],["formArrayName","initiators"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](4,212992,null,0,H.g,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.g]),e["\u0275did"](6,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fe)),e["\u0275did"](8,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](9,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Pe)),e["\u0275did"](12,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](13,0,null,null,3,"button",[["class","btn btn-default pull-right"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(l.component.addInitiator(),e=!1),e},null,null)),(l()(),e["\u0275eld"](14,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add initiator"])),(l()(),e["\u0275eld"](17,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){var u=n.component;l(n,4,0,"initiators"),l(n,8,0,u.initiators.controls),l(n,12,0,0===u.initiators.controls.length)},function(l,n){l(n,3,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function $e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupInitiator(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function Oe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupDisk(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function Me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,56,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](1,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](3,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](4,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Group"])),(l()(),e["\u0275ted"](7,null,[": "," "])),(l()(),e["\u0275eld"](8,0,null,null,1,"button",[["class","close"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.groups.removeAt(l.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,46,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","group_id"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](15,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,5,"input",[["class","form-control"],["formControlName","group_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,18)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,18).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,18)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,18)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](18,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](20,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](22,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](23,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](24,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](25,{"has-error":0}),(l()(),e["\u0275eld"](26,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","members"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiators"])),(l()(),e["\u0275eld"](29,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,$e)),e["\u0275did"](31,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](32,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](33,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](34,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onGroupMemberSelection(u)&&e),e},ue.b,ue.a)),e["\u0275did"](35,638976,null,0,ee.a,[E.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](36,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add initiator"])),(l()(),e["\u0275eld"](39,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](40,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](41,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](42,{"has-error":0}),(l()(),e["\u0275eld"](43,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","disks"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](46,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Oe)),e["\u0275did"](48,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](49,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](50,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,null,null,ue.b,ue.a)),e["\u0275did"](52,638976,null,0,ee.a,[E.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["\u0275eld"](53,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](54,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"])),(l()(),e["\u0275eld"](56,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){var u=n.component;l(n,1,0,n.context.index),l(n,20,0,"group_id");var t=l(n,25,0,n.context.$implicit.showError("members",e["\u0275nov"](n.parent.parent,2)));l(n,24,0,"form-group",t);var a=n.context.$implicit.getValue("members");l(n,31,0,a);var i=n.context.$implicit.getValue("members");l(n,35,0,"btn btn-default pull-right",i,u.groupMembersSelections[n.context.index],u.messages.groupInitiator);var o=l(n,42,0,n.context.$implicit.showError("disks",e["\u0275nov"](n.parent.parent,2)));l(n,41,0,"form-group",o);var d=n.context.$implicit.getValue("disks");l(n,48,0,d);var r=n.context.$implicit.getValue("disks");l(n,52,0,"btn btn-default pull-right",r,u.groupDiskSelections[n.context.index],u.messages.initiatorImage)},function(l,n){l(n,0,0,e["\u0275nov"](n,3).ngClassUntouched,e["\u0275nov"](n,3).ngClassTouched,e["\u0275nov"](n,3).ngClassPristine,e["\u0275nov"](n,3).ngClassDirty,e["\u0275nov"](n,3).ngClassValid,e["\u0275nov"](n,3).ngClassInvalid,e["\u0275nov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("group_id");l(n,7,0,u),l(n,17,0,e["\u0275nov"](n,22).ngClassUntouched,e["\u0275nov"](n,22).ngClassTouched,e["\u0275nov"](n,22).ngClassPristine,e["\u0275nov"](n,22).ngClassDirty,e["\u0275nov"](n,22).ngClassValid,e["\u0275nov"](n,22).ngClassInvalid,e["\u0275nov"](n,22).ngClassPending)})}function ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["No items added."]))],null,null)}function je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","initiators"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Groups"])),(l()(),e["\u0275eld"](5,0,null,null,13,"div",[["class","col-sm-9"],["formArrayName","groups"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](6,212992,null,0,H.g,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.g]),e["\u0275did"](8,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Me)),e["\u0275did"](10,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](11,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,ze)),e["\u0275did"](14,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,3,"button",[["class","btn btn-default pull-right"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(l.component.addGroup(),e=!1),e},null,null)),(l()(),e["\u0275eld"](16,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add group"]))],function(l,n){var u=n.component,t=l(n,2,0,u.targetForm.showError("groups",e["\u0275nov"](n.parent,2)));l(n,1,0,"form-group",t),l(n,6,0,"groups"),l(n,10,0,u.groups.controls),l(n,14,0,0===u.groups.controls.length)},function(l,n){l(n,5,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ae(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,101,"form",[["class","form-horizontal"],["name","targetForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,2).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,2).onReset()&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.D,[],null,null),e["\u0275did"](2,540672,[["formDir",4]],0,H.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,H.d,null,[H.l]),e["\u0275did"](4,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](5,0,null,null,96,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](8,null,[""," ",""])),e["\u0275ppd"](9,1),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,81,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,26,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](13,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](14,{"has-error":0}),(l()(),e["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","target_iqn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Target IQN"])),(l()(),e["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,19,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](21,0,null,null,5,"input",[["class","form-control"],["formControlName","target_iqn"],["id","target_iqn"],["name","target_iqn"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,22)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,22).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,22)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,22)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](22,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](24,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](26,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](27,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](28,0,null,null,1,"button",[["class","btn btn-default"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.targetSettingsModal()&&e),e},null,null)),(l()(),e["\u0275eld"](29,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-cogs fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,re)),e["\u0275did"](31,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,se)),e["\u0275did"](33,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ce)),e["\u0275did"](35,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,pe)),e["\u0275did"](37,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](38,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](40,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](41,{"has-error":0}),(l()(),e["\u0275eld"](42,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","portals"]],null,null,null,null,null)),(l()(),e["\u0275eld"](43,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Portals"])),(l()(),e["\u0275eld"](45,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](46,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,fe)),e["\u0275did"](48,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ge)),e["\u0275did"](50,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](51,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](53,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onPortalSelection(u)&&e),e},ue.b,ue.a)),e["\u0275did"](54,638976,null,0,ee.a,[E.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](55,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add portal"])),(l()(),e["\u0275eld"](58,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](59,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](60,278528,null,0,V.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](61,{"has-error":0}),(l()(),e["\u0275eld"](62,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","disks"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](64,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,he)),e["\u0275did"](66,278528,null,0,V.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,be)),e["\u0275did"](68,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](69,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](70,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](71,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onImageSelection(u)&&e),e},ue.b,ue.a)),e["\u0275did"](72,638976,null,0,ee.a,[E.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](73,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](74,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"])),(l()(),e["\u0275eld"](76,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](77,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](78,0,null,null,10,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](79,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](80,0,null,null,5,"input",[["formControlName","acl_enabled"],["id","acl_enabled"],["name","acl_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,81).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,81).onTouched()&&t),t},null,null)),e["\u0275did"](81,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](83,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](85,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](86,0,null,null,1,"label",[["for","acl_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["ACL authentication"])),(l()(),e["\u0275eld"](88,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,qe)),e["\u0275did"](90,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,je)),e["\u0275did"](92,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](93,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](94,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](95,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Pn.b,Pn.a)),e["\u0275did"](96,114688,null,0,qn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](97,0,[""," ",""])),e["\u0275ppd"](98,1),e["\u0275ppd"](99,1),(l()(),e["\u0275eld"](100,0,null,null,1,"cd-back-button",[],null,null,null,$n.b,$n.a)),e["\u0275did"](101,49152,null,0,On.a,[V.Location,Bl.b],null,null)],function(l,n){var u=n.component;l(n,2,0,u.targetForm);var t=l(n,14,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2)));l(n,13,0,"form-group",t),l(n,24,0,"target_iqn"),l(n,31,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"required")),l(n,33,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"pattern")),l(n,35,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"iqn")),l(n,37,0,u.hasAdvancedSettings(u.targetForm.getValue("target_controls")));var a=l(n,41,0,u.targetForm.showError("portals",e["\u0275nov"](n,2)));l(n,40,0,"form-group",a),l(n,48,0,u.portals.value),l(n,50,0,u.targetForm.showError("portals",e["\u0275nov"](n,2),"minGateways")),l(n,54,0,"btn btn-default pull-right",u.portals.value,u.portalsSelections,u.messages.portals);var i=l(n,61,0,u.targetForm.showError("disks",e["\u0275nov"](n,2)));l(n,60,0,"form-group",i),l(n,66,0,u.targetForm.getValue("disks")),l(n,68,0,u.targetForm.showError("disks",e["\u0275nov"](n,2),"required")),l(n,72,0,"btn btn-default pull-right",u.disks.value,u.imagesSelections,u.messages.images),l(n,83,0,"acl_enabled"),l(n,90,0,u.targetForm.getValue("acl_enabled")),l(n,92,0,u.targetForm.getValue("acl_enabled")),l(n,96,0,e["\u0275nov"](n,2),"button")},function(l,n){var u=n.component;l(n,0,0,e["\u0275nov"](n,4).ngClassUntouched,e["\u0275nov"](n,4).ngClassTouched,e["\u0275nov"](n,4).ngClassPristine,e["\u0275nov"](n,4).ngClassDirty,e["\u0275nov"](n,4).ngClassValid,e["\u0275nov"](n,4).ngClassInvalid,e["\u0275nov"](n,4).ngClassPending);var t=e["\u0275unv"](n,8,0,l(n,9,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,8,1,l(n,10,0,e["\u0275nov"](n.parent,1),u.resource));l(n,8,0,t,a),l(n,21,0,e["\u0275nov"](n,26).ngClassUntouched,e["\u0275nov"](n,26).ngClassTouched,e["\u0275nov"](n,26).ngClassPristine,e["\u0275nov"](n,26).ngClassDirty,e["\u0275nov"](n,26).ngClassValid,e["\u0275nov"](n,26).ngClassInvalid,e["\u0275nov"](n,26).ngClassPending),l(n,80,0,e["\u0275nov"](n,85).ngClassUntouched,e["\u0275nov"](n,85).ngClassTouched,e["\u0275nov"](n,85).ngClassPristine,e["\u0275nov"](n,85).ngClassDirty,e["\u0275nov"](n,85).ngClassValid,e["\u0275nov"](n,85).ngClassInvalid,e["\u0275nov"](n,85).ngClassPending);var i=e["\u0275unv"](n,97,0,l(n,98,0,e["\u0275nov"](n.parent,0),u.action)),o=e["\u0275unv"](n,97,1,l(n,99,0,e["\u0275nov"](n.parent,1),u.resource));l(n,97,0,i,o)})}function Ue(l){return e["\u0275vid"](0,[e["\u0275pid"](0,V.TitleCasePipe,[]),e["\u0275pid"](0,K.a,[]),e["\u0275pid"](0,O.a,[]),(l()(),e["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Ae)),e["\u0275did"](5,16384,null,0,V.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,5,0,n.component.targetForm)},null)}function Be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-form",[],null,null,null,Ue,de)),e["\u0275did"](1,114688,null,0,oe.a,[Eu.a,X.b,jl.a,ol.l,ol.a,E.a,Jl.a,Bl.b],null,null)],function(l,n){l(n,1,0)},null)}var Le=e["\u0275ccf"]("cd-iscsi-target-form",oe.a,Be,{},{},[]),Ge=u("Vhfg"),Ke=u("cxJu");u.d(n,"BlockModuleNgFactory",function(){return He}),u.d(n,"RoutedBlockModuleNgFactory",function(){return Je});var He=e["\u0275cmf"](t.a,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,i.a,o.a,d.a,d.b,r.a,s.a,c.a,p.a,f.a,g.a,m.a,v.a,h.a,h.b,h.c,b.a,C.a,R.a,I.a,w.a,x.a,y.a,T.a,k.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,V.NgLocalization,V.NgLocaleLocalization,[e.LOCALE_ID,[2,V["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,N.a,N.a,[E.a]),e["\u0275mpd"](4608,V.DatePipe,V.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[S.a]),e["\u0275mpd"](4608,P.a,P.a,[S.a]),e["\u0275mpd"](4608,q.a,q.a,[S.a]),e["\u0275mpd"](4608,$.a,$.a,[]),e["\u0275mpd"](4608,O.a,O.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,z.a,z.a,[]),e["\u0275mpd"](4608,j.a,j.a,[V.DatePipe]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,B.a,B.a,[]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,G.a,G.a,[]),e["\u0275mpd"](4608,K.a,K.a,[]),e["\u0275mpd"](4608,H.E,H.E,[]),e["\u0275mpd"](4608,H.h,H.h,[]),e["\u0275mpd"](4608,J.b,J.b,[]),e["\u0275mpd"](4608,Z.a,Z.a,[]),e["\u0275mpd"](4608,W.a,W.a,[]),e["\u0275mpd"](4608,Q.a,Q.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,W.a,e.ApplicationRef]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,X.b,X.b,[e.RendererFactory2,Q.a]),e["\u0275mpd"](4608,ll.ScrollbarHelper,ll.ScrollbarHelper,[nl.DOCUMENT]),e["\u0275mpd"](4608,ul.DimensionsHelper,ul.DimensionsHelper,[]),e["\u0275mpd"](4608,el.ColumnChangesService,el.ColumnChangesService,[]),e["\u0275mpd"](4608,tl.f,tl.f,[]),e["\u0275mpd"](4608,al.a,al.a,[]),e["\u0275mpd"](4608,il.a,il.a,[ol.l,al.a]),e["\u0275mpd"](4608,dl.NodeDraggableService,dl.NodeDraggableService,[]),e["\u0275mpd"](4608,rl.NodeMenuService,rl.NodeMenuService,[]),e["\u0275mpd"](4608,sl.TreeService,sl.TreeService,[dl.NodeDraggableService]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](4608,pl.c,pl.c,[]),e["\u0275mpd"](4608,fl.w,fl.w,[]),e["\u0275mpd"](4608,fl.y,fl.y,[]),e["\u0275mpd"](4608,fl.a,fl.a,[]),e["\u0275mpd"](4608,fl.e,fl.e,[]),e["\u0275mpd"](4608,fl.c,fl.c,[]),e["\u0275mpd"](4608,fl.f,fl.f,[]),e["\u0275mpd"](4608,fl.x,fl.x,[fl.y,fl.f]),e["\u0275mpd"](1073742336,V.CommonModule,V.CommonModule,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,gl.a,gl.a,[]),e["\u0275mpd"](1073742336,H.B,H.B,[]),e["\u0275mpd"](1073742336,H.n,H.n,[]),e["\u0275mpd"](1073742336,H.x,H.x,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,Z.d,Z.d,[]),e["\u0275mpd"](1073742336,Y.d,Y.d,[]),e["\u0275mpd"](1073742336,ml.ChartsModule,ml.ChartsModule,[]),e["\u0275mpd"](1073742336,X.e,X.e,[]),e["\u0275mpd"](1073742336,vl.a,vl.a,[]),e["\u0275mpd"](1073742336,tl.e,tl.e,[]),e["\u0275mpd"](1073742336,hl.a,hl.a,[]),e["\u0275mpd"](1073742336,bl.NgxDatatableModule,bl.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,ol.p,ol.p,[[2,ol.v],[2,ol.l]]),e["\u0275mpd"](1073742336,Cl.a,Cl.a,[]),e["\u0275mpd"](1073742336,Rl.a,Rl.a,[]),e["\u0275mpd"](1073742336,Il.a,Il.a,[]),e["\u0275mpd"](1073742336,pl.d,pl.d,[]),e["\u0275mpd"](1073742336,wl.TreeModule,wl.TreeModule,[]),e["\u0275mpd"](1073742336,xl.a,xl.a,[]),e["\u0275mpd"](1073742336,fl.d,fl.d,[]),e["\u0275mpd"](1073742336,t.a,t.a,[]),e["\u0275mpd"](256,tl.a,{autoClose:!0,insideClick:!1},[])])}),Je=e["\u0275cmf"](t.b,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,i.a,o.a,d.a,d.b,r.a,s.a,c.a,p.a,f.a,g.a,m.a,v.a,h.a,h.b,h.c,b.a,C.a,R.a,I.a,w.a,x.a,y.a,T.a,k.a,kn,wu,Bu,ne,Le]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,V.NgLocalization,V.NgLocaleLocalization,[e.LOCALE_ID,[2,V["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,N.a,N.a,[E.a]),e["\u0275mpd"](4608,V.DatePipe,V.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[S.a]),e["\u0275mpd"](4608,P.a,P.a,[S.a]),e["\u0275mpd"](4608,q.a,q.a,[S.a]),e["\u0275mpd"](4608,$.a,$.a,[]),e["\u0275mpd"](4608,O.a,O.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,z.a,z.a,[]),e["\u0275mpd"](4608,j.a,j.a,[V.DatePipe]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,B.a,B.a,[]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,G.a,G.a,[]),e["\u0275mpd"](4608,K.a,K.a,[]),e["\u0275mpd"](4608,H.E,H.E,[]),e["\u0275mpd"](4608,H.h,H.h,[]),e["\u0275mpd"](4608,J.b,J.b,[]),e["\u0275mpd"](4608,Z.a,Z.a,[]),e["\u0275mpd"](4608,W.a,W.a,[]),e["\u0275mpd"](4608,Q.a,Q.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,W.a,e.ApplicationRef]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,X.b,X.b,[e.RendererFactory2,Q.a]),e["\u0275mpd"](4608,ll.ScrollbarHelper,ll.ScrollbarHelper,[nl.DOCUMENT]),e["\u0275mpd"](4608,ul.DimensionsHelper,ul.DimensionsHelper,[]),e["\u0275mpd"](4608,el.ColumnChangesService,el.ColumnChangesService,[]),e["\u0275mpd"](4608,tl.f,tl.f,[]),e["\u0275mpd"](4608,al.a,al.a,[]),e["\u0275mpd"](4608,il.a,il.a,[ol.l,al.a]),e["\u0275mpd"](4608,dl.NodeDraggableService,dl.NodeDraggableService,[]),e["\u0275mpd"](4608,rl.NodeMenuService,rl.NodeMenuService,[]),e["\u0275mpd"](4608,sl.TreeService,sl.TreeService,[dl.NodeDraggableService]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](4608,pl.c,pl.c,[]),e["\u0275mpd"](4608,fl.w,fl.w,[]),e["\u0275mpd"](4608,fl.y,fl.y,[]),e["\u0275mpd"](4608,fl.a,fl.a,[]),e["\u0275mpd"](4608,fl.e,fl.e,[]),e["\u0275mpd"](4608,fl.c,fl.c,[]),e["\u0275mpd"](4608,fl.f,fl.f,[]),e["\u0275mpd"](4608,fl.x,fl.x,[fl.y,fl.f]),e["\u0275mpd"](1073742336,V.CommonModule,V.CommonModule,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,gl.a,gl.a,[]),e["\u0275mpd"](1073742336,H.B,H.B,[]),e["\u0275mpd"](1073742336,H.n,H.n,[]),e["\u0275mpd"](1073742336,H.x,H.x,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,Z.d,Z.d,[]),e["\u0275mpd"](1073742336,Y.d,Y.d,[]),e["\u0275mpd"](1073742336,ml.ChartsModule,ml.ChartsModule,[]),e["\u0275mpd"](1073742336,X.e,X.e,[]),e["\u0275mpd"](1073742336,vl.a,vl.a,[]),e["\u0275mpd"](1073742336,tl.e,tl.e,[]),e["\u0275mpd"](1073742336,hl.a,hl.a,[]),e["\u0275mpd"](1073742336,bl.NgxDatatableModule,bl.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,ol.p,ol.p,[[2,ol.v],[2,ol.l]]),e["\u0275mpd"](1073742336,Cl.a,Cl.a,[]),e["\u0275mpd"](1073742336,Rl.a,Rl.a,[]),e["\u0275mpd"](1073742336,Il.a,Il.a,[]),e["\u0275mpd"](1073742336,pl.d,pl.d,[]),e["\u0275mpd"](1073742336,wl.TreeModule,wl.TreeModule,[]),e["\u0275mpd"](1073742336,xl.a,xl.a,[]),e["\u0275mpd"](1073742336,fl.d,fl.d,[]),e["\u0275mpd"](1073742336,t.a,t.a,[]),e["\u0275mpd"](1073742336,t.b,t.b,[]),e["\u0275mpd"](256,tl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,ol.j,function(){return[[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[Ge.a],data:t.c,children:[{path:"",component:In.a},{path:"create",component:Mn.a,data:t.d},{path:"edit/:pool/:name",component:Mn.a,data:t.g},{path:"clone/:pool/:name/:snap",component:Mn.a,data:t.h},{path:"copy/:pool/:name",component:Mn.a,data:t.i},{path:"copy/:pool/:name/:snap",component:Mn.a,data:t.j}]},{path:"mirroring",component:Ke.a,canActivate:[Ge.a],data:t.k},{path:"iscsi",canActivate:[Ge.a],data:t.l,children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:Nu.a,data:t.m},{path:"targets",data:t.n,children:[{path:"",component:Hu.a},{path:"add",component:oe.a,data:t.e},{path:"edit/:target_iqn",component:oe.a,data:t.f}]}]}]]},[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/8.0ff37488868257bf7364.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/8.0ff37488868257bf7364.js
deleted file mode 100644 (file)
index cb37f79..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{nOaW:function(l,n,e){"use strict";e.r(n);var u=e("CcnG"),t=e("sne2"),o=e("gIcY"),i=e("LvDl"),a=e("VNr4"),r=e("t/Na"),s=e("Jm/i"),d=e("pL04"),c=function(){function l(l,n){this.http=l,this.i18n=n,this.apiPath="api/erasure_code_profile",this.formTooltips={k:this.i18n("Each object is split in data-chunks parts, each stored on a different OSD."),m:this.i18n("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."),plugins:{jerasure:{description:this.i18n("The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools."),technique:this.i18n("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."),packetSize:this.i18n("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.")},lrc:{description:this.i18n("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."),l:this.i18n("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."),crushLocality:this.i18n("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.")},isa:{description:this.i18n("The isa plugin encapsulates the ISA library. It only runs on Intel processors."),technique:this.i18n("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.")},shec:{description:this.i18n("The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes."),c:this.i18n("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.")}},crushRoot:this.i18n("The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default."),crushFailureDomain:this.i18n("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."),crushDeviceClass:this.i18n("Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map."),directory:this.i18n("Set the directory name from which the erasure code plugin is loaded.")}}return l.prototype.list=function(){return this.http.get(this.apiPath)},l.prototype.create=function(l){return this.http.post(this.apiPath,l,{observe:"response"})},l.prototype.update=function(l){return this.http.put(this.apiPath+"/"+l.name,l,{observe:"response"})},l.prototype.delete=function(l){return this.http.delete(this.apiPath+"/"+l,{observe:"response"})},l.prototype.get=function(l){return this.http.get(this.apiPath+"/"+l)},l.prototype.getInfo=function(){return this.http.get(this.apiPath+"/_info")},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(r.c),u.inject(s.a))},token:l,providedIn:d.a}),l}(),p=e("Ekvf"),f=e("0+/T"),m=e("QFaf"),g=e("1Ni5"),h=e("PhyI"),v=e("kvvV"),b=e("Fgil"),C=e("aexS"),R=e("aXbf"),y=e("kn/O"),I=e("2EZI"),E=function(){return function(){}}(),V=function(){function l(l,n,e,t,o,i){this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.ecpService=t,this.i18n=o,this.actionLabels=i,this.submitAction=new u.EventEmitter,this.requiredControls=[],this.devices=[],this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.action=this.actionLabels.CREATE,this.resource=this.i18n("EC Profile"),this.createForm(),this.setJerasureDefaults()}return l.prototype.createForm=function(){var l=this;this.form=this.formBuilder.group({name:[null,[o.A.required,o.A.pattern("[A-Za-z0-9_-]+"),g.a.custom("uniqueName",function(n){return l.names&&-1!==l.names.indexOf(n)})]],plugin:[this.PLUGIN.JERASURE,[o.A.required]],k:[1],m:[1],crushFailureDomain:["host"],crushRoot:["default"],crushDeviceClass:[""],directory:[""],technique:["reed_sol_van"],packetSize:[2048,[o.A.min(1)]],l:[1,[o.A.required,o.A.min(1)]],crushLocality:[""],c:[1,[o.A.required,o.A.min(1)]]}),this.form.get("plugin").valueChanges.subscribe(function(n){return l.onPluginChange(n)})},l.prototype.onPluginChange=function(l){this.plugin=l,l===this.PLUGIN.JERASURE?this.setJerasureDefaults():l===this.PLUGIN.LRC?this.setLrcDefaults():l===this.PLUGIN.ISA?this.setIsaDefaults():l===this.PLUGIN.SHEC&&this.setShecDefaults()},l.prototype.setNumberValidators=function(l,n){var e=[o.A.min(1)];n&&e.push(o.A.required),this.form.get(l).setValidators(e)},l.prototype.setKMValidators=function(l){var n=this;["k","m"].forEach(function(e){return n.setNumberValidators(e,l)})},l.prototype.setJerasureDefaults=function(){this.requiredControls=["k","m"],this.setDefaults({k:4,m:2}),this.setKMValidators(!0),this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"]},l.prototype.setLrcDefaults=function(){this.requiredControls=["k","m","l"],this.setKMValidators(!0),this.setNumberValidators("l",!0),this.setDefaults({k:4,m:2,l:3})},l.prototype.setIsaDefaults=function(){this.requiredControls=[],this.setKMValidators(!1),this.setDefaults({k:7,m:3}),this.techniques=["reed_sol_van","cauchy"]},l.prototype.setShecDefaults=function(){this.requiredControls=[],this.setKMValidators(!1),this.setDefaults({k:4,m:3,c:2})},l.prototype.setDefaults=function(l){var n=this;Object.keys(l).forEach(function(e){n.form.get(e).pristine&&n.form.silentSet(e,l[e])})},l.prototype.ngOnInit=function(){var l=this;this.ecpService.getInfo().subscribe(function(n){var e=n.plugins,u=n.names,t=n.directory,o=n.devices;l.failureDomains=n.failure_domains,l.plugins=e,l.names=u,l.devices=o,l.form.silentSet("directory",t)})},l.prototype.createJson=function(){var l=this,n={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC]},e=new E,u=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(function(e){var t=n[e],o=l.form.get(e);return(t&&t.includes(u)||!t)&&(o.dirty||l.requiredControls.includes(e))&&l.form.getValue(e)}).forEach(function(n){l.extendJson(n,e)}),e},l.prototype.extendJson=function(l,n){n[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[l]||l]=this.form.getValue(l)},l.prototype.onSubmit=function(){var l=this;if(this.form.invalid)this.form.setErrors({cdSubmitButton:!0});else{var n=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new v.a("ecp/create",{name:n.name}),call:this.ecpService.create(n)}).subscribe(void 0,function(){l.form.setErrors({cdSubmitButton:!0})},function(){l.bsModalRef.hide(),l.submitAction.emit(n)})}},l}(),T=e("DNAf"),w=e("a96k"),S=function(){return function(l){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],available:[new w.a(!1,"cephfs",""),new w.a(!1,"rbd",""),new w.a(!1,"rgw","")],validators:[o.A.pattern("[A-Za-z0-9_]+"),o.A.maxLength(128)],messages:new T.a({empty:l("No applications added"),selectionLimit:{text:l("Applications limit reached"),tooltip:l("A pool can only have up to four applications definitions.")},customValidations:{pattern:l("Allowed characters '_a-zA-Z0-9'"),maxlength:l("Maximum length is 128 characters")},filter:l("Filter or add applications"),add:l("Add application")},l)}}}(),N=function(){function l(l,n,e,o,i,a,r,s,d,c,p,f){this.dimlessBinaryPipe=l,this.route=n,this.router=e,this.modalService=o,this.poolService=i,this.authStorageService=a,this.formatter=r,this.bsModalService=s,this.taskWrapper=d,this.ecpService=c,this.i18n=p,this.actionLabels=f,this.editing=!1,this.data=new S(this.i18n),this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new u.EventEmitter,this.currentConfigurationValues={},this.editing=this.router.url.startsWith("/pool/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("pool"),this.authenticate(),this.createForm()}return l.prototype.authenticate=function(){this.permission=this.authStorageService.getPermissions().pool,(!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)&&this.router.navigate(["/404"])},l.prototype.createForm=function(){var l=this,n=new m.a({mode:new o.i("none"),algorithm:new o.i(""),minBlobSize:new o.i("",{updateOn:"blur"}),maxBlobSize:new o.i("",{updateOn:"blur"}),ratio:new o.i("",{updateOn:"blur"})});this.form=new m.a({name:new o.i("",{validators:[o.A.pattern(/^[\.A-Za-z0-9_\/-]+$/),o.A.required]}),poolType:new o.i("",{validators:[o.A.required]}),crushRule:new o.i(null,{validators:[g.a.custom("tooFewOsds",function(n){return l.info&&n&&l.info.osd_count<n.min_size})]}),size:new o.i("",{updateOn:"blur"}),erasureProfile:new o.i(null),pgNum:new o.i("",{validators:[o.A.required,o.A.min(1)]}),ecOverwrites:new o.i(!1),compression:n},[g.a.custom("form",function(){return null}),g.a.custom("rbdPool",function(){return l.form&&l.form.getValue("name").includes("/")&&l.data&&-1!==l.data.applications.selected.indexOf("rbd")})])},l.prototype.ngOnInit=function(){var l=this;Object(a.a)(this.poolService.getInfo(),this.ecpService.list()).subscribe(function(n){l.initInfo(n[0]),l.initEcp(n[1]),l.editing&&l.initEditMode(),l.listenToChanges(),l.setComplexValidators()})},l.prototype.initInfo=function(l){this.form.silentSet("algorithm",l.bluestore_compression_algorithm),l.compression_modes.push("unset"),this.info=l},l.prototype.initEcp=function(l){var n=this.form.get("erasureProfile");l.length<=1&&n.disable(),1===l.length?n.setValue(l[0]):l.length>1&&n.disabled&&n.enable(),this.ecProfiles=l},l.prototype.initEditMode=function(){var l=this;this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(function(n){return l.poolService.get(n.name).subscribe(function(n){l.data.pool=n,l.initEditFormData(n)})})},l.prototype.disableForEdit=function(){var l=this;["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(function(n){return l.form.get(n).disable()})},l.prototype.initEditFormData=function(l){var n=this;this.initializeConfigData.emit({initialData:l.configuration,sourceType:h.a.pool});var e={name:l.pool_name,poolType:l.type,crushRule:this.info["crush_rules_"+l.type].find(function(n){return n.rule_name===l.crush_rule}),size:l.size,erasureProfile:this.ecProfiles.find(function(n){return n.name===l.erasure_code_profile}),pgNum:l.pg_num,ecOverwrites:l.flags_names.includes("ec_overwrites"),mode:l.options.compression_mode,algorithm:l.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_max_blob_size),ratio:l.options.compression_required_ratio};Object.keys(e).forEach(function(l){var u=e[l];i.isUndefined(u)||""===u||n.form.silentSet(l,u)}),this.data.applications.selected=l.application_metadata},l.prototype.listenToChanges=function(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()},l.prototype.listenToChangesDuringAddEdit=function(){var l=this;this.form.get("pgNum").valueChanges.subscribe(function(n){var e=n-l.data.pgs;1===Math.abs(e)&&2!==n?l.doPgPowerJump(e):l.data.pgs=n})},l.prototype.doPgPowerJump=function(l){var n=this.calculatePgPower()+l;this.setPgs(-1===l?Math.round(n):Math.floor(n))},l.prototype.calculatePgPower=function(l){return void 0===l&&(l=this.form.getValue("pgNum")),Math.log(l)/Math.log(2)},l.prototype.setPgs=function(l){var n=Math.pow(2,l<0?0:l);this.data.pgs=n,this.form.silentSet("pgNum",n)},l.prototype.listenToChangesDuringAdd=function(){var l=this;this.form.get("poolType").valueChanges.subscribe(function(n){l.form.get("size").updateValueAndValidity(),l.rulesChange(),"replicated"===n&&l.replicatedRuleChange(),l.pgCalc()}),this.form.get("crushRule").valueChanges.subscribe(function(){"replicated"===l.form.getValue("poolType")&&l.replicatedRuleChange(),l.pgCalc()}),this.form.get("size").valueChanges.subscribe(function(){l.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(function(){l.pgCalc()}),this.form.get("mode").valueChanges.subscribe(function(){["minBlobSize","maxBlobSize","ratio"].forEach(function(n){l.form.get(n).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(function(){l.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(function(){l.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})},l.prototype.rulesChange=function(){var l=this.form.getValue("poolType");if(l&&this.info){var n=this.info["crush_rules_"+l]||[],e=this.form.get("crushRule");1===n.length?(e.setValue(n[0]),e.disable()):(e.setValue(null),e.enable()),this.current.rules=n}else this.current.rules=[]},l.prototype.replicatedRuleChange=function(){if("replicated"===this.form.getValue("poolType")){var l=this.form.get("size"),n=this.form.getValue("size")||3,e=this.getMinSize(),u=this.getMaxSize();n<e?n=e:n>u&&(n=u),n!==l.value&&this.form.silentSet("size",n)}},l.prototype.getMinSize=function(){if(this.info&&!(this.info.osd_count<1)){var l=this.form.getValue("crushRule");return l?l.min_size:1}},l.prototype.getMaxSize=function(){if(this.info&&!(this.info.osd_count<1)){var l=this.info.osd_count;if(this.form.getValue("crushRule")){var n=this.form.get("crushRule").value.max_size;if(n<l)return n}return l}},l.prototype.pgCalc=function(){var l=this.form.getValue("poolType");if(this.info&&!this.form.get("pgNum").dirty&&l){var n=100*this.info.osd_count,e="replicated"===l?this.replicatedPgCalc(n):this.erasurePgCalc(n);if(e){var u=this.data.pgs;this.alignPgs(e),this.externalPgChange||(this.externalPgChange=u!==this.data.pgs)}}},l.prototype.replicatedPgCalc=function(l){var n=this.form.get("size"),e=n.value;if(n.valid&&e>0)return l/e},l.prototype.erasurePgCalc=function(l){var n=this.form.get("erasureProfile"),e=n.value;if((n.valid||n.disabled)&&e)return l/(e.k+e.m)},l.prototype.alignPgs=function(l){void 0===l&&(l=this.form.getValue("pgNum")),this.setPgs(Math.round(this.calculatePgPower(l<1?1:l)))},l.prototype.setComplexValidators=function(){var l=this;this.editing?(this.form.get("pgNum").setValidators(g.a.custom("noDecrease",function(n){return l.data.pool&&n<l.data.pool.pg_num})),this.form.get("name").setValidators([this.form.get("name").validator,g.a.custom("uniqueName",function(n){return l.data.pool&&l.info&&-1!==l.info.pool_names.indexOf(n)&&l.info.pool_names.indexOf(n)!==l.info.pool_names.indexOf(l.data.pool.pool_name)})])):(g.a.validateIf(this.form.get("size"),function(){return"replicated"===l.form.get("poolType").value},[g.a.custom("min",function(n){return l.form.getValue("size")&&n<l.getMinSize()}),g.a.custom("max",function(n){return l.form.getValue("size")&&l.getMaxSize()<n})]),this.form.get("name").setValidators([this.form.get("name").validator,g.a.custom("uniqueName",function(n){return l.info&&-1!==l.info.pool_names.indexOf(n)})])),this.setCompressionValidators()},l.prototype.setCompressionValidators=function(){var l=this;g.a.validateIf(this.form.get("minBlobSize"),function(){return l.hasCompressionEnabled()},[o.A.min(0),g.a.custom("maximum",function(n){return l.oddBlobSize(n,l.form.getValue("maxBlobSize"))})]),g.a.validateIf(this.form.get("maxBlobSize"),function(){return l.hasCompressionEnabled()},[o.A.min(0),g.a.custom("minimum",function(n){return l.oddBlobSize(l.form.getValue("minBlobSize"),n)})]),g.a.validateIf(this.form.get("ratio"),function(){return l.hasCompressionEnabled()},[o.A.min(0),o.A.max(1)])},l.prototype.oddBlobSize=function(l,n){return l=this.formatter.toBytes(l),n=this.formatter.toBytes(n),Boolean(l&&n&&l>=n)},l.prototype.hasCompressionEnabled=function(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()},l.prototype.describeCrushStep=function(l){return[l.op.replace("_"," "),l.item_name||"",l.type?l.num+" type "+l.type:""].join(" ")},l.prototype.addErasureCodeProfile=function(){var l=this;this.modalSubscription=this.modalService.onHide.subscribe(function(){return l.reloadECPs()}),this.bsModalService.show(V)},l.prototype.reloadECPs=function(){var l=this;this.ecpService.list().subscribe(function(n){return l.initEcp(n)}),this.modalSubscription.unsubscribe()},l.prototype.deleteErasureCodeProfile=function(){var l=this,n=this.form.getValue("erasureProfile");if(n){var e=n.name;this.modalSubscription=this.modalService.onHide.subscribe(function(){return l.reloadECPs()}),this.modalService.show(f.a,{initialState:{itemDescription:this.i18n("erasure code profile"),submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new v.a("ecp/delete",{name:e}),call:l.ecpService.delete(e)})}}})}},l.prototype.submit=function(){var l=this;if(this.form.invalid)this.form.setErrors({cdSubmitButton:!0});else{var n={pool:this.form.getValue("name")};this.assignFormFields(n,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_num",formControlName:"pgNum",editable:!0},"replicated"===this.form.getValue("poolType")?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",attr:"rule_name"}]),this.info.is_all_bluestore&&(this.assignFormField(n,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:function(){return["ec_overwrites"]}}),"none"!==this.form.getValue("mode")?this.assignFormFields(n,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:function(n){return l.hasCompressionEnabled()&&n}},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(n,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:function(){return"unset"}},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:function(){return l.data.pool.pool_name}}]));var e=this.data.applications.selected;(e.length>0||this.editing)&&(n.application_metadata=e),"replicated"!==this.form.get("poolType").value||i.isEmpty(this.currentConfigurationValues)||(n.configuration=this.currentConfigurationValues),this.triggerApiTask(n)}},l.prototype.assignFormFields=function(l,n){var e=this;n.forEach(function(n){return e.assignFormField(l,n)})},l.prototype.assignFormField=function(l,n){var e=n.externalFieldName,u=n.formControlName,t=n.attr,o=n.replaceFn,a=n.editable,r=n.resetValue;if(!this.editing||a&&!this.form.get(u).pristine){var s=this.form.getValue(u),d=o?o(s):t?i.get(s,t):s;if(!s||!d){if(!a||i.isUndefined(r))return;d=r}l[e]=d}},l.prototype.triggerApiTask=function(l){var n=this;this.taskWrapper.wrapTaskAroundCall({task:new v.a("pool/"+(this.editing?t.e.EDIT:t.e.CREATE),{pool_name:l.hasOwnProperty("srcpool")?l.srcpool:l.pool}),call:this.poolService[this.editing?t.e.UPDATE:t.e.CREATE](l)}).subscribe(void 0,function(l){i.isObject(l.error)&&"34"===l.error.code&&n.form.get("pgNum").setErrors({34:!0}),n.form.setErrors({cdSubmitButton:!0})},function(){return n.router.navigate(["/pool"])})},l.prototype.appSelection=function(){this.form.updateValueAndValidity({emitEvent:!1,onlySelf:!0})},l}(),D=e("MuvH"),_=e("uIqm"),k=e("x38r"),P=e("yJti"),x=e("vCyI"),z=e("o4+5"),F=e("VTlA"),q=e("EgGo"),A=e("d+Og"),O=function(){return function(l){this.pool_name=l}}(),L=new q.a("pool"),M=function(){function l(l,n,e,u,t,o,a,r,s,d,c){var p=this;this.poolService=l,this.taskWrapper=n,this.authStorageService=e,this.taskListService=u,this.modalService=t,this.i18n=o,this.pgCategoryService=a,this.dimlessPipe=r,this.urlBuilder=s,this.configurationService=d,this.actionLabels=c,this.pools=[],this.selection=new x.a,this.executingTasks=[],this.selectionCacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return p.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return p.urlBuilder.getEdit(encodeURIComponent(p.selection.first().pool_name))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-trash-o",click:function(){return p.deletePoolModal()},name:this.actionLabels.DELETE,disable:function(){return!p.selection.first()||!p.monAllowPoolDelete},disableDesc:function(){return p.getDisableDesc()}}],this.configurationService.get("mon_allow_pool_delete").subscribe(function(l){if(i.has(l,"value")){var n=i.find(l.value,function(l){return"mon"===l.section})||{value:!1};p.monAllowPoolDelete="true"===n.value}})}return l.prototype.ngOnInit=function(){var l=this,n=function(l,n,e){return i.get(n,l)>i.get(e,l)?1:-1};this.columns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:4,cellTransformation:k.a.executing},{prop:"type",name:this.i18n("Type"),flexGrow:2},{prop:"application_metadata",name:this.i18n("Applications"),flexGrow:2},{prop:"pg_status",name:this.i18n("PG Status"),flexGrow:3,cellClass:function(n){return l.getPgStatusCellClass(n.row,n.column,n.value)}},{prop:"size",name:this.i18n("Replica Size"),flexGrow:1,cellClass:"text-right"},{prop:"last_change",name:this.i18n("Last Change"),flexGrow:1,cellClass:"text-right"},{prop:"erasure_code_profile",name:this.i18n("Erasure Coded Profile"),flexGrow:2},{prop:"crush_rule",name:this.i18n("Crush Ruleset"),flexGrow:3},{name:this.i18n("Usage"),prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:3},{prop:"stats.rd_bytes.rates",name:this.i18n("Read bytes"),comparator:function(l,e,u,t){return n("stats.rd_bytes.latest",u,t)},cellTransformation:k.a.sparkline,flexGrow:3},{prop:"stats.wr_bytes.rates",name:this.i18n("Write bytes"),comparator:function(l,e,u,t){return n("stats.wr_bytes.latest",u,t)},cellTransformation:k.a.sparkline,flexGrow:3},{prop:"stats.rd.rate",name:this.i18n("Read ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:k.a.perSecond},{prop:"stats.wr.rate",name:this.i18n("Write ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:k.a.perSecond}],this.taskListService.init(function(){return l.poolService.getList()},void 0,function(n){return l.pools=l.transformPoolsData(n)},function(){l.table.reset(),l.viewCacheStatusList=[{status:P.a.ValueException}]},function(l){return l.name.startsWith("pool/")},function(l,n){return n.metadata.pool_name===l.pool_name},{default:function(l){return new O(l.metadata.pool_name)}})},l.prototype.updateSelection=function(l){this.selection=l,this.getSelectionTiers()},l.prototype.deletePoolModal=function(){var l=this,n=this.selection.first().pool_name;this.modalRef=this.modalService.show(f.a,{initialState:{itemDescription:"Pool",submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new v.a("pool/"+t.e.DELETE,{pool_name:n}),call:l.poolService.delete(n)})}}})},l.prototype.getPgStatusCellClass=function(l,n,e){var u;return(u={"text-right":!0})["pg-"+this.pgCategoryService.getTypeByStates(e)]=!0,u},l.prototype.transformPoolsData=function(l){var n=this,e=["bytes_used","max_avail","rd_bytes","wr_bytes","rd","wr"],u={latest:0,rate:0,rates:[]};return i.forEach(l,function(l){l.pg_status=n.transformPgStatus(l.pg_status);var t={};i.forEach(e,function(n){t[n]=l.stats&&l.stats[n]?l.stats[n]:u}),l.stats=t;var o=t.bytes_used.latest+t.max_avail.latest;l.usage=o>0?t.bytes_used.latest/o:o,["rd_bytes","wr_bytes"].forEach(function(n){l.stats[n].rates=l.stats[n].rates.map(function(l){return l[1]})}),l.cdIsBinary=!0}),l},l.prototype.transformPgStatus=function(l){var n=[];return i.forEach(l,function(l,e){n.push(l+" "+e)}),n.join(", ")},l.prototype.getPoolDetails=function(l){return i.omit(l,["cdExecuting","cdIsBinary"])},l.prototype.getSelectionTiers=function(){var l=this.selection.hasSingleSelection?this.selection.first().tiers:[];this.selectionCacheTiers=this.pools.filter(function(n){return l.includes(n.pool)})},l.prototype.getDisableDesc=function(){if(!this.monAllowPoolDelete)return this.i18n("Pool deletion is disabled by the mon_allow_pool_delete configuration setting.")},l}(),j=function(){return function(){}}(),B={breadcrumbs:t.a.CREATE},U={breadcrumbs:t.a.EDIT},G=function(){return function(){}}(),K=e("ES0t"),$=e("MdoF"),J=e("Xg1U"),H=e("z5nN"),W=e("iutN"),Z=e("EEJc"),Y=e("PEr+"),X=e("a40w"),Q=e("pMnS"),ll=e("RIVN"),nl=e("nP0W"),el=e("VBM6"),ul=e("atuK"),tl=e("JIi+"),ol=e("Ur3J"),il=e("I4Qz"),al=e("0rTx"),rl=e("lz+O"),sl=e("u2XS"),dl=e("nhAp"),cl=e("l7Jr"),pl=e("bUo2"),fl=e("Ip0R"),ml=e("4HWh"),gl=e("p4Cf"),hl=e("8xTl"),vl=e("IZUe"),bl=e("gp3X"),Cl=e("sb0X"),Rl=e("KVJa"),yl=e("Z21x"),Il=e("DQlY"),El=u["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Vl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Tl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function wl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function Sl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Nl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Dl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function _l(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function kl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Pl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 2."]))],null,null)}function xl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function zl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Fl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function ql(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Al(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","c"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Durability estimator (c)"])),(l()(),u["\u0275eld"](6,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](7,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](8,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,6,"input",[["class","form-control"],["formControlName","c"],["id","c"],["name","c"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ql)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("c",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,e.tooltips.plugins.shec.c),l(n,13,0,"c"),l(n,17,0,e.form.showError("c",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,9,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function Ol(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Ll(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Ml(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,5,"label",[["class","control-label col-sm-3"],["for","l"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Locality (l)"])),(l()(),u["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](8,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](9,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](10,0,null,null,6,"input",[["class","form-control"],["formControlName","l"],["id","l"],["name","l"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,11)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,11)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,12).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,12).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,12).onTouched()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](12,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](14,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](16,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ol)),u["\u0275did"](18,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ll)),u["\u0275did"](20,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("l",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,8,0,e.tooltips.plugins.lrc.l),l(n,14,0,"l"),l(n,18,0,e.form.showError("l",u["\u0275nov"](n.parent,12),"required")),l(n,20,0,e.form.showError("l",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,10,0,u["\u0275nov"](n,16).ngClassUntouched,u["\u0275nov"](n,16).ngClassTouched,u["\u0275nov"](n,16).ngClassPristine,u["\u0275nov"](n,16).ngClassDirty,u["\u0275nov"](n,16).ngClassValid,u["\u0275nov"](n,16).ngClassInvalid,u["\u0275nov"](n,16).ngClassPending)})}function jl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Bl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Ul(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Gl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["None"]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Kl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function $l(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushLocality"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush Locality"])),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](5,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](6,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","crushLocality"],["id","crushLocality"],["name","crushLocality"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ul)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Gl)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Kl)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,5,0,e.tooltips.plugins.lrc.crushLocality),l(n,10,0,"crushLocality"),l(n,14,0,!e.failureDomains),l(n,16,0,e.failureDomains&&e.failureDomains.length>0),l(n,18,0,e.failureDomains)},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Jl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Hl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","technique"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Technique"])),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](5,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](6,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,7,"select",[["class","form-control"],["formControlName","technique"],["id","technique"],["name","technique"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Jl)),u["\u0275did"](14,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,5,0,e.tooltips.plugins[e.plugin].technique),l(n,10,0,"technique"),l(n,14,0,e.techniques)},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Wl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Zl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","packetSize"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Packetsize"])),(l()(),u["\u0275eld"](6,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](7,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](8,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,6,"input",[["class","form-control"],["formControlName","packetSize"],["id","packetSize"],["name","packetSize"],["placeholder","Packetsize..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Wl)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("packetSize",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,e.tooltips.plugins.jerasure.packetSize),l(n,13,0,"packetSize"),l(n,17,0,e.form.showError("packetSize",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,9,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function Yl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Xl(l){return u["\u0275vid"](0,[u["\u0275pid"](0,fl.TitleCasePipe,[]),u["\u0275pid"](0,hl.a,[]),(l()(),u["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),u["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),u["\u0275ted"](4,null,[""," ",""])),u["\u0275ppd"](5,1),u["\u0275ppd"](6,1),(l()(),u["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.bsModalRef.hide()&&u),u},null,null)),(l()(),u["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["\xd7"])),(l()(),u["\u0275eld"](10,0,null,null,173,"form",[["class","form-horizontal"],["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(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["\u0275nov"](l,12).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["\u0275nov"](l,12).onReset()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.D,[],null,null),u["\u0275did"](12,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["\u0275prd"](2048,null,o.d,null,[o.l]),u["\u0275did"](14,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](15,0,null,null,160,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["\u0275eld"](16,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](17,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](18,{"has-error":0}),(l()(),u["\u0275eld"](19,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Name"])),(l()(),u["\u0275eld"](22,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](23,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](24,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,26)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](25,4210688,null,0,vl.a,[u.ElementRef],null,null),u["\u0275did"](26,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](28,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](30,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Vl)),u["\u0275did"](32,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Tl)),u["\u0275did"](34,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,wl)),u["\u0275did"](36,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](37,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](38,0,null,null,5,"label",[["class","control-label col-sm-3"],["for","plugin"]],null,null,null,null,null)),(l()(),u["\u0275eld"](39,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Plugin"])),(l()(),u["\u0275eld"](41,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](42,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](43,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](44,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](45,0,null,null,9,"select",[["class","form-control"],["formControlName","plugin"],["id","plugin"],["name","plugin"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,46).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,46).onTouched()&&t),t},null,null)),u["\u0275did"](46,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](48,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](50,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Sl)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Nl)),u["\u0275did"](54,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Dl)),u["\u0275did"](56,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](57,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](58,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](59,{"has-error":0}),(l()(),u["\u0275eld"](60,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","k"]],null,null,null,null,null)),(l()(),u["\u0275eld"](61,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Data chunks (k)"])),(l()(),u["\u0275and"](16777216,null,null,1,null,_l)),u["\u0275did"](64,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](65,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](66,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](67,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](68,0,null,null,6,"input",[["class","form-control"],["formControlName","k"],["id","k"],["name","k"],["ng-model","$ctrl.erasureCodeProfile.k"],["placeholder","Data chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,69)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,69).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,69)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,69)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,70).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,70).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,70).onTouched()&&t),t},null,null)),u["\u0275did"](69,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](70,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](72,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](74,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,kl)),u["\u0275did"](76,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Pl)),u["\u0275did"](78,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](79,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](80,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](81,{"has-error":0}),(l()(),u["\u0275eld"](82,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","m"]],null,null,null,null,null)),(l()(),u["\u0275eld"](83,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Coding chunks (m)"])),(l()(),u["\u0275and"](16777216,null,null,1,null,xl)),u["\u0275did"](86,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](87,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](88,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](89,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](90,0,null,null,6,"input",[["class","form-control"],["formControlName","m"],["id","m"],["name","m"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,91)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,91).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,91)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,91)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,92).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,92).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,92).onTouched()&&t),t},null,null)),u["\u0275did"](91,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](92,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](94,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](96,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,zl)),u["\u0275did"](98,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Fl)),u["\u0275did"](100,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Al)),u["\u0275did"](102,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ml)),u["\u0275did"](104,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](105,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](106,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushFailureDomain"]],null,null,null,null,null)),(l()(),u["\u0275eld"](107,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush failure domain"])),(l()(),u["\u0275eld"](109,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](110,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](111,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](112,0,null,null,9,"select",[["class","form-control"],["formControlName","crushFailureDomain"],["id","crushFailureDomain"],["name","crushFailureDomain"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,113).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,113).onTouched()&&t),t},null,null)),u["\u0275did"](113,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](115,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](117,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,jl)),u["\u0275did"](119,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Bl)),u["\u0275did"](121,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,$l)),u["\u0275did"](123,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,2,null,Hl)),u["\u0275did"](125,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),u["\u0275pad"](126,2),(l()(),u["\u0275and"](16777216,null,null,1,null,Zl)),u["\u0275did"](128,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](129,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](130,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](131,{"has-error":0}),(l()(),u["\u0275eld"](132,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushRoot"]],null,null,null,null,null)),(l()(),u["\u0275eld"](133,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush root"])),(l()(),u["\u0275eld"](135,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](136,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](137,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](138,0,null,null,5,"input",[["class","form-control"],["formControlName","crushRoot"],["id","crushRoot"],["name","crushRoot"],["placeholder","root..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,139)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,139).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,139)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,139)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](139,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](141,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](143,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](144,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](145,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushDeviceClass"]],null,null,null,null,null)),(l()(),u["\u0275eld"](146,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush device class"])),(l()(),u["\u0275eld"](148,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](149,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](150,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](151,0,null,null,11,"select",[["class","form-control"],["formControlName","crushDeviceClass"],["id","crushDeviceClass"],["name","crushDeviceClass"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,152).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,152).onTouched()&&t),t},null,null)),u["\u0275did"](152,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](154,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](156,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](157,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](158,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](159,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["any"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Yl)),u["\u0275did"](162,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](163,0,null,null,12,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](164,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","directory"]],null,null,null,null,null)),(l()(),u["\u0275eld"](165,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Directory"])),(l()(),u["\u0275eld"](167,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](168,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](169,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](170,0,null,null,5,"input",[["class","form-control"],["formControlName","directory"],["id","directory"],["name","directory"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,171)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,171).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,171)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,171)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](171,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](173,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](175,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](176,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["\u0275eld"](177,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u},bl.b,bl.a)),u["\u0275did"](178,114688,null,0,Cl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["\u0275ted"](179,0,[""," ",""])),u["\u0275ppd"](180,1),u["\u0275ppd"](181,1),(l()(),u["\u0275eld"](182,0,null,null,1,"cd-back-button",[],null,null,null,Rl.b,Rl.a)),u["\u0275did"](183,49152,null,0,yl.a,[fl.Location,t.b],{back:[0,"back"]},null)],function(l,n){var e=n.component;l(n,12,0,e.form);var t=l(n,18,0,e.form.showError("name",u["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,28,0,"name"),l(n,32,0,e.form.showError("name",u["\u0275nov"](n,12),"required")),l(n,34,0,e.form.showError("name",u["\u0275nov"](n,12),"pattern")),l(n,36,0,e.form.showError("name",u["\u0275nov"](n,12),"uniqueName")),l(n,43,0,e.tooltips.plugins[e.plugin].description),l(n,48,0,"plugin"),l(n,52,0,!e.plugins),l(n,54,0,e.plugins),l(n,56,0,e.form.showError("name",u["\u0275nov"](n,12),"required"));var o=l(n,59,0,e.form.showError("k",u["\u0275nov"](n,12)));l(n,58,0,"form-group",o),l(n,64,0,e.requiredControls.includes("k")),l(n,66,0,e.tooltips.k),l(n,72,0,"k"),l(n,76,0,e.form.showError("k",u["\u0275nov"](n,12),"required")),l(n,78,0,e.form.showError("k",u["\u0275nov"](n,12),"min"));var i=l(n,81,0,e.form.showError("m",u["\u0275nov"](n,12)));l(n,80,0,"form-group",i),l(n,86,0,e.requiredControls.includes("m")),l(n,88,0,e.tooltips.m),l(n,94,0,"m"),l(n,98,0,e.form.showError("m",u["\u0275nov"](n,12),"required")),l(n,100,0,e.form.showError("m",u["\u0275nov"](n,12),"min")),l(n,102,0,"shec"===e.plugin),l(n,104,0,e.plugin===e.PLUGIN.LRC),l(n,110,0,e.tooltips.crushFailureDomain),l(n,115,0,"crushFailureDomain"),l(n,119,0,!e.failureDomains),l(n,121,0,e.failureDomains),l(n,123,0,e.plugin===e.PLUGIN.LRC);var a=l(n,126,0,e.PLUGIN.JERASURE,e.PLUGIN.ISA).includes(e.plugin);l(n,125,0,a),l(n,128,0,e.plugin===e.PLUGIN.JERASURE);var r=l(n,131,0,e.form.showError("crushRoot",u["\u0275nov"](n,12)));l(n,130,0,"form-group",r),l(n,136,0,e.tooltips.crushRoot),l(n,141,0,"crushRoot"),l(n,149,0,e.tooltips.crushDeviceClass),l(n,154,0,"crushDeviceClass"),l(n,158,0,""),l(n,159,0,""),l(n,162,0,e.devices),l(n,168,0,e.tooltips.directory),l(n,173,0,"directory"),l(n,178,0,u["\u0275nov"](n,12)),l(n,183,0,e.bsModalRef.hide)},function(l,n){var e=n.component,t=u["\u0275unv"](n,4,0,l(n,5,0,u["\u0275nov"](n,0),e.action)),o=u["\u0275unv"](n,4,1,l(n,6,0,u["\u0275nov"](n,1),e.resource));l(n,4,0,t,o),l(n,10,0,u["\u0275nov"](n,14).ngClassUntouched,u["\u0275nov"](n,14).ngClassTouched,u["\u0275nov"](n,14).ngClassPristine,u["\u0275nov"](n,14).ngClassDirty,u["\u0275nov"](n,14).ngClassValid,u["\u0275nov"](n,14).ngClassInvalid,u["\u0275nov"](n,14).ngClassPending),l(n,24,0,u["\u0275nov"](n,30).ngClassUntouched,u["\u0275nov"](n,30).ngClassTouched,u["\u0275nov"](n,30).ngClassPristine,u["\u0275nov"](n,30).ngClassDirty,u["\u0275nov"](n,30).ngClassValid,u["\u0275nov"](n,30).ngClassInvalid,u["\u0275nov"](n,30).ngClassPending),l(n,45,0,u["\u0275nov"](n,50).ngClassUntouched,u["\u0275nov"](n,50).ngClassTouched,u["\u0275nov"](n,50).ngClassPristine,u["\u0275nov"](n,50).ngClassDirty,u["\u0275nov"](n,50).ngClassValid,u["\u0275nov"](n,50).ngClassInvalid,u["\u0275nov"](n,50).ngClassPending),l(n,68,0,u["\u0275nov"](n,74).ngClassUntouched,u["\u0275nov"](n,74).ngClassTouched,u["\u0275nov"](n,74).ngClassPristine,u["\u0275nov"](n,74).ngClassDirty,u["\u0275nov"](n,74).ngClassValid,u["\u0275nov"](n,74).ngClassInvalid,u["\u0275nov"](n,74).ngClassPending),l(n,90,0,u["\u0275nov"](n,96).ngClassUntouched,u["\u0275nov"](n,96).ngClassTouched,u["\u0275nov"](n,96).ngClassPristine,u["\u0275nov"](n,96).ngClassDirty,u["\u0275nov"](n,96).ngClassValid,u["\u0275nov"](n,96).ngClassInvalid,u["\u0275nov"](n,96).ngClassPending),l(n,112,0,u["\u0275nov"](n,117).ngClassUntouched,u["\u0275nov"](n,117).ngClassTouched,u["\u0275nov"](n,117).ngClassPristine,u["\u0275nov"](n,117).ngClassDirty,u["\u0275nov"](n,117).ngClassValid,u["\u0275nov"](n,117).ngClassInvalid,u["\u0275nov"](n,117).ngClassPending),l(n,138,0,u["\u0275nov"](n,143).ngClassUntouched,u["\u0275nov"](n,143).ngClassTouched,u["\u0275nov"](n,143).ngClassPristine,u["\u0275nov"](n,143).ngClassDirty,u["\u0275nov"](n,143).ngClassValid,u["\u0275nov"](n,143).ngClassInvalid,u["\u0275nov"](n,143).ngClassPending),l(n,151,0,u["\u0275nov"](n,156).ngClassUntouched,u["\u0275nov"](n,156).ngClassTouched,u["\u0275nov"](n,156).ngClassPristine,u["\u0275nov"](n,156).ngClassDirty,u["\u0275nov"](n,156).ngClassValid,u["\u0275nov"](n,156).ngClassInvalid,u["\u0275nov"](n,156).ngClassPending),l(n,170,0,u["\u0275nov"](n,175).ngClassUntouched,u["\u0275nov"](n,175).ngClassTouched,u["\u0275nov"](n,175).ngClassPristine,u["\u0275nov"](n,175).ngClassDirty,u["\u0275nov"](n,175).ngClassValid,u["\u0275nov"](n,175).ngClassInvalid,u["\u0275nov"](n,175).ngClassPending);var i=u["\u0275unv"](n,179,0,l(n,180,0,u["\u0275nov"](n,0),e.action)),a=u["\u0275unv"](n,179,1,l(n,181,0,u["\u0275nov"](n,1),e.resource));l(n,179,0,i,a)})}function Ql(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-erasure-code-profile-form",[],null,null,null,Xl,El)),u["\u0275did"](1,114688,null,0,V,[I.a,Il.a,y.a,c,s.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var ln=u["\u0275ccf"]("cd-erasure-code-profile-form",V,Ql,{},{submitAction:"submitAction"},[]),nn=e("iExv"),en=e("85J/"),un=e("+0ag"),tn=e("IzCI"),on=e("Dwqy"),an=e("uYzU"),rn=e("uhwM"),sn=e("E2fk"),dn=e("a0VL"),cn=e("nSDx"),pn=e("SB+Q"),fn=e("TYzs"),mn=e("BQkM"),gn=e("dEH0"),hn=e("lTVp"),vn=e("OZfm"),bn=e("NJnL"),Cn=e("lqqz"),Rn=e("eajB"),yn=e("FO+L"),In=e("ZYjt"),En=e("nhM1"),Vn=e("BARL"),Tn=e("xtZt"),wn=e("Avrn"),Sn=e("ZYCi"),Nn=e("urB8"),Dn=e("JZ5S"),_n=e("Tff5"),kn=e("YAQW"),Pn=e("Da1D"),xn=e("ARl4"),zn=e("kJI8"),Fn=e("9Xeq"),qn=e("xdbM"),An=e("yGOH"),On=e("V/fk"),Ln=e("F8xH"),Mn=e("ChqD"),jn=e("PCNd"),Bn=e("STEd"),Un=e("kccj"),Gn=e("k/xb"),Kn=e("C6Ij"),$n=e("AWcq"),Jn=e("xSw7"),Hn=e("GgAd"),Wn=e("a278"),Zn=e("insk"),Yn=e("mSOc"),Xn=e("20UP"),Qn=e("pKUh"),le=e("25BL"),ne=e("NUGo"),ee=e("S7zO"),ue=e("EFGL"),te=e("aAWM"),oe=e("o8EM"),ie=e("sLuX"),ae=e("FSuO"),re=(e("jKX/"),function(){function l(l,n){this.i18n=l,this.poolService=n,this.cacheTierColumns=[],this.cacheTierColumns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:3},{prop:"cache_mode",name:this.i18n("Cache Mode"),flexGrow:2},{prop:"cache_min_evict_age",name:this.i18n("Min Evict Age"),flexGrow:2},{prop:"cache_min_flush_age",name:this.i18n("Min Flush Age"),flexGrow:2},{prop:"target_max_bytes",name:this.i18n("Target Max Bytes"),flexGrow:2},{prop:"target_max_objects",name:this.i18n("Target Max Objects"),flexGrow:2}]}return l.prototype.ngOnChanges=function(){var l=this;this.selection.hasSingleSelection&&this.poolService.getConfiguration(this.selection.first().pool_name).subscribe(function(n){l.selectedPoolConfiguration=n})},l}()),se=u["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function de(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","-xyV8KCiz"]],null,null,null,Wn.b,Wn.a)),u["\u0275did"](3,638976,null,0,Zn.a,[Yn.a,In.DomSanitizer,Xn.a,un.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){var e=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"ceph-pool-detail?var-pool_name="+e.selection.first().pool_name,"one","-xyV8KCiz")},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function ce(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,ue.b,ue.a)),u["\u0275did"](3,638976,null,0,te.a,[R.a,oe.a,s.a],{data:[0,"data"]},null)],function(l,n){var e=n.component;l(n,1,0,"Configuration"),l(n,3,0,e.selectedPoolConfiguration)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function pe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Cache Tiers Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,le.b,le.a)),u["\u0275did"](3,2867200,null,0,_.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},null)],function(l,n){var e=n.component;l(n,1,0,"Cache Tiers Details"),l(n,3,0,e.cacheTiers,e.cacheTierColumns,"flex",!1)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function fe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,11,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](1,180224,[[1,4],["tabsetChild",4]],0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](3,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](5,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,de)),u["\u0275did"](7,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,ce)),u["\u0275did"](9,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,pe)),u["\u0275did"](11,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,5,0,e.selection.first(),!1,!0),l(n,7,0,e.permissions.grafana.read),l(n,9,0,"replicated"===e.selection.first().type),l(n,11,0,e.selection.first().tiers.length>0)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).clazz),l(n,2,0,u["\u0275nov"](n,3).id,u["\u0275nov"](n,3).active,u["\u0275nov"](n,3).addClass)})}function me(l){return u["\u0275vid"](0,[u["\u0275qud"](671088640,1,{tabsetChild:0}),(l()(),u["\u0275and"](16777216,null,null,1,null,fe)),u["\u0275did"](2,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,2,0,n.component.selection.hasSingleSelection)},null)}var ge=e("ufoC"),he=u["\u0275crt"]({encapsulation:0,styles:[[".pg-clean{color:#0b0}  .pg-working{color:#2b99a8}  .pg-warning{color:#ffc200}  .pg-unknown{color:red}"]],data:{}});function ve(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Kn.b,Kn.a)),u["\u0275did"](1,114688,null,0,$n.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function be(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Jn.b,Jn.a)),u["\u0275did"](1,573440,null,0,Hn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(l,n){l(n,1,0,n.parent.context.row.stats.bytes_used.latest+n.parent.context.row.stats.max_avail.latest,n.parent.context.row.stats.bytes_used.latest)},null)}function Ce(l){return u["\u0275vid"](0,[(l()(),u["\u0275and"](16777216,null,null,1,null,be)),u["\u0275did"](1,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,null==n.context.row.stats?null:null==n.context.row.stats.max_avail?null:n.context.row.stats.max_avail.latest)},null)}function Re(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","z99hzWtmk"]],null,null,null,Wn.b,Wn.a)),u["\u0275did"](3,638976,null,0,Zn.a,[Yn.a,In.DomSanitizer,Xn.a,un.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"ceph-pools-overview?","two","z99hzWtmk")},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function ye(l){return u["\u0275vid"](0,[u["\u0275qud"](402653184,1,{table:0}),u["\u0275qud"](402653184,2,{poolUsageTpl:0}),u["\u0275qud"](402653184,3,{poolConfigurationSourceTpl:0}),(l()(),u["\u0275eld"](3,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](4,180224,null,0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](5,0,null,0,10,"tab",[["heading","Pools List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](6,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ve)),u["\u0275did"](8,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](9,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,e){var u=!0;return"updateSelection"===n&&(u=!1!==l.component.updateSelection(e)&&u),u},le.b,le.a)),u["\u0275did"](10,2867200,[[1,4],["table",4]],0,_.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),u["\u0275eld"](11,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,ne.b,ne.a)),u["\u0275did"](12,114688,null,0,ee.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),u["\u0275eld"](13,0,null,2,1,"cd-pool-details",[["cdTableDetail",""]],null,null,null,me,se)),u["\u0275did"](14,573440,null,0,re,[s.a,p.a],{selection:[0,"selection"],permissions:[1,"permissions"],cacheTiers:[2,"cacheTiers"]},null),(l()(),u["\u0275and"](0,[[2,2],["poolUsageTpl",2]],null,0,null,Ce)),(l()(),u["\u0275and"](16777216,null,0,1,null,Re)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,6,0,"Pools List"),l(n,8,0,e.viewCacheStatusList),l(n,10,0,e.pools,e.columns,"single"),l(n,12,0,e.permissions.pool,e.selection,e.tableActions),l(n,14,0,e.selection,e.permissions,e.selectionCacheTiers),l(n,17,0,e.permissions.grafana.read)},function(l,n){l(n,3,0,u["\u0275nov"](n,4).clazz),l(n,5,0,u["\u0275nov"](n,6).id,u["\u0275nov"](n,6).active,u["\u0275nov"](n,6).addClass)})}function Ie(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"cd-pool-list",[],null,null,null,ye,he)),u["\u0275prd"](131584,null,F.a,F.a,[ge.a,Yn.a]),u["\u0275prd"](256,null,q.a,L,[]),u["\u0275did"](3,114688,null,0,M,[p.a,y.a,C.a,F.a,Il.b,s.a,A.a,z.a,q.a,D.a,t.b],null,null)],function(l,n){l(n,3,0)},null)}var Ee=u["\u0275ccf"]("cd-pool-list",M,Ie,{},{},[]),Ve=e("EmSq"),Te=e("pYKc"),we=e("ppaS"),Se=e("BH9v"),Ne=e("rFfW"),De=u["\u0275crt"]({encapsulation:0,styles:[[".crush-rule-steps[_ngcontent-%COMP%]{margin-top:10px}"]],data:{}});function _e(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"h1",[["class","jumbotron"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-lg fa-pulse fa-spinner text-primary"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],null,null)}function ke(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Pe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The chosen Ceph pool name is already in use."]))],null,null)}function xe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function ze(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Fe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function qe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["At least one placement group is needed!"]))],null,null)}function Ae(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Your cluster can't handle this many PGs. Please recalculate the PG amount needed."]))],null,null)}function Oe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](1,null,["You can only increase the number of PGs of an existing pool. Currently your pool has "," PGs."]))],null,function(l,n){l(n,1,0,n.component.data.pool.pg_num)})}function Le(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The current PGs settings were calculated for you, you should make sure the values suit your needs before submit."]))],null,null)}function Me(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit.rule_name)})}function je(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.describeCrushStep(n.context.$implicit))})}function Be(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,11,"span",[["class","help-block"],["id","crush-info-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,10,"tabset",[],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](2,180224,null,0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](3,0,null,0,3,"tab",[["class","crush-rule-info"],["heading","Crush rule"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](4,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](5,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](6,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["\u0275eld"](7,0,null,0,4,"tab",[["class","crush-rule-steps"],["heading","Crush steps"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](8,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](9,0,null,null,2,"ol",[],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,je)),u["\u0275did"](11,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,4,0,"Crush rule"),l(n,6,0,e.form.getValue("crushRule"),!1,!0),l(n,8,0,"Crush steps"),l(n,11,0,e.form.get("crushRule").value.steps)},function(l,n){l(n,1,0,u["\u0275nov"](n,2).clazz),l(n,3,0,u["\u0275nov"](n,4).id,u["\u0275nov"](n,4).active,u["\u0275nov"](n,4).addClass),l(n,7,0,u["\u0275nov"](n,8).id,u["\u0275nov"](n,8).active,u["\u0275nov"](n,8).addClass)})}function Ue(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The rule can't be used in the current cluster as it has to few OSDs to meet the minimum required OSD by this rule."]))],null,null)}function Ge(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush ruleset"])),(l()(),u["\u0275eld"](5,0,null,null,22,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","crushRule"],["id","crushRule"],["name","crushSet"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](13,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](14,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](15,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select a crush rule --"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Me)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,3,"button",[["class","btn btn-default"],["id","crush-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.crushInfo=!t.data.crushInfo)&&u),u},null,null)),u["\u0275did"](21,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](22,{active:0}),(l()(),u["\u0275eld"](23,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-question-circle"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,Be)),u["\u0275did"](25,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ue)),u["\u0275did"](27,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("crushRule",u["\u0275nov"](n.parent.parent,2)));l(n,1,0,"form-group",t),l(n,10,0,"crushRule"),l(n,14,0,null),l(n,15,0,null),l(n,18,0,e.current.rules);var o=l(n,22,0,e.data.crushInfo);l(n,21,0,"btn btn-default",o),l(n,25,0,e.data.crushInfo&&e.form.getValue("crushRule")),l(n,27,0,e.form.showError("crushRule",u["\u0275nov"](n.parent.parent,2),"tooFewOsds"))},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Ke(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,5,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"ul",[["class","list-inline"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](3,null,["Minimum: ",""])),(l()(),u["\u0275eld"](4,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](5,null,["Maximum: ",""]))],null,function(l,n){var e=n.component;l(n,3,0,e.getMinSize()),l(n,5,0,e.getMaxSize())})}function $e(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](1,null,["The size specified is out of range. A value from "," to "," is valid."]))],null,function(l,n){var e=n.component;l(n,1,0,e.getMinSize(),e.getMaxSize())})}function Je(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Replicated size"])),(l()(),u["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","size"],["id","size"],["name","size"],["type","number"]],[[8,"max",0],[8,"min",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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,9)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,9)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,10).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,10).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),t},null,null)),u["\u0275did"](9,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](10,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](12,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](14,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ke)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,$e)),u["\u0275did"](18,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2)));l(n,1,0,"form-group",t),l(n,12,0,"size"),l(n,16,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2))),l(n,18,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2)))},function(l,n){var e=n.component;l(n,8,0,e.getMaxSize(),e.getMinSize(),u["\u0275nov"](n,14).ngClassUntouched,u["\u0275nov"](n,14).ngClassTouched,u["\u0275nov"](n,14).ngClassPristine,u["\u0275nov"](n,14).ngClassDirty,u["\u0275nov"](n,14).ngClassValid,u["\u0275nov"](n,14).ngClassInvalid,u["\u0275nov"](n,14).ngClassPending)})}function He(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function We(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- No erasure code profile available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Ze(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select an erasure code profile --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Ye(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit.name)})}function Xe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"],["id","ecp-info-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](2,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null)],function(l,n){l(n,2,0,n.component.form.getValue("erasureProfile"),!1,!0)},null)}function Qe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,29,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","erasureProfile"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Erasure code profile"])),(l()(),u["\u0275eld"](3,0,null,null,26,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,23,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,13,"select",[["class","form-control"],["formControlName","erasureProfile"],["id","erasureProfile"],["name","erasureProfile"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,6).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,6).onTouched()&&t),t},null,null)),u["\u0275did"](6,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](8,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](10,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,He)),u["\u0275did"](12,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,We)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ze)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ye)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,8,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,3,"button",[["class","btn btn-default"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.erasureInfo=!t.data.erasureInfo)&&u),u},null,null)),u["\u0275did"](21,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](22,{active:0}),(l()(),u["\u0275eld"](23,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-question-circle"]],null,null,null,null,null)),(l()(),u["\u0275eld"](24,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addErasureCodeProfile()&&u),u},null,null)),(l()(),u["\u0275eld"](25,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-plus"]],null,null,null,null,null)),(l()(),u["\u0275eld"](26,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteErasureCodeProfile()&&u),u},null,null)),(l()(),u["\u0275eld"](27,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-trash-o"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,Xe)),u["\u0275did"](29,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,8,0,"erasureProfile"),l(n,12,0,!e.ecProfiles),l(n,14,0,e.ecProfiles&&0===e.ecProfiles.length),l(n,16,0,e.ecProfiles&&e.ecProfiles.length>0),l(n,18,0,e.ecProfiles);var u=l(n,22,0,e.data.erasureInfo);l(n,21,0,"btn btn-default",u),l(n,29,0,e.data.erasureInfo&&e.form.getValue("erasureProfile"))},function(l,n){var e=n.component;l(n,5,0,u["\u0275nov"](n,10).ngClassUntouched,u["\u0275nov"](n,10).ngClassTouched,u["\u0275nov"](n,10).ngClassPristine,u["\u0275nov"](n,10).ngClassDirty,u["\u0275nov"](n,10).ngClassValid,u["\u0275nov"](n,10).ngClassInvalid,u["\u0275nov"](n,10).ngClassPending),l(n,24,0,e.editing),l(n,26,0,e.editing||e.ecProfiles.length<1)})}function lu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Flags"])),(l()(),u["\u0275eld"](3,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,5,"input",[["formControlName","ecOverwrites"],["id","ec-overwrites"],["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]],[[null,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,7).onChange(e.target.checked)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,7).onTouched()&&t),t},null,null)),u["\u0275did"](7,16384,null,0,o.c,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.c]),u["\u0275did"](9,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](11,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](12,0,null,null,1,"label",[["for","ec-overwrites"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["EC Overwrites"]))],function(l,n){l(n,9,0,"ecOverwrites")},function(l,n){l(n,6,0,u["\u0275nov"](n,11).ngClassUntouched,u["\u0275nov"](n,11).ngClassTouched,u["\u0275nov"](n,11).ngClassPristine,u["\u0275nov"](n,11).ngClassDirty,u["\u0275nov"](n,11).ngClassValid,u["\u0275nov"](n,11).ngClassInvalid,u["\u0275nov"](n,11).ngClassPending)})}function nu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,38,"div",[],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,29,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](2,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](3,{"has-error":0}),(l()(),u["\u0275eld"](4,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","pgNum"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Placement groups"])),(l()(),u["\u0275eld"](7,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](8,0,null,null,22,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,8,"input",[["class","form-control"],["formControlName","pgNum"],["id","pgNum"],["min","1"],["name","pgNum"],["required",""],["type","number"]],[[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]],[[null,"focus"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0,o=l.component;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),"focus"===n&&(t=0!=(o.externalPgChange=!1)&&t),"blur"===n&&(t=!1!==o.alignPgs()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275did"](12,16384,null,0,o.y,[],{required:[0,"required"]},null),u["\u0275prd"](1024,null,o.o,function(l){return[l]},[o.y]),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](15,671744,null,0,o.j,[[3,o.d],[6,o.o],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](17,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Fe)),u["\u0275did"](19,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,qe)),u["\u0275did"](21,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ae)),u["\u0275did"](23,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Oe)),u["\u0275did"](25,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](26,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](27,0,null,null,1,"a",[["href","http://ceph.com/pgcalc"],["target","_blank"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Calculation help"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Le)),u["\u0275did"](30,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ge)),u["\u0275did"](32,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Je)),u["\u0275did"](34,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Qe)),u["\u0275did"](36,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,lu)),u["\u0275did"](38,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,3,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2)));l(n,2,0,"form-group",t),l(n,12,0,""),l(n,15,0,"pgNum"),l(n,19,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"required")),l(n,21,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"min")),l(n,23,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"34")),l(n,25,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"noDecrease")),l(n,30,0,e.externalPgChange),l(n,32,0,e.form.getValue("poolType")&&e.current.rules.length>0),l(n,34,0,"replicated"===e.form.getValue("poolType")),l(n,36,0,"erasure"===e.form.getValue("poolType")),l(n,38,0,e.info.is_all_bluestore&&"erasure"===e.form.getValue("poolType"))},function(l,n){l(n,9,0,u["\u0275nov"](n,12).required?"":null,u["\u0275nov"](n,17).ngClassUntouched,u["\u0275nov"](n,17).ngClassTouched,u["\u0275nov"](n,17).ngClassPristine,u["\u0275nov"](n,17).ngClassDirty,u["\u0275nov"](n,17).ngClassValid,u["\u0275nov"](n,17).ngClassInvalid,u["\u0275nov"](n,17).ngClassPending)})}function eu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function uu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function tu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- No erasure compression algorithm available --"]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function ou(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function iu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than 0"]))],null,null)}function au(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be less than the maximum blob size"]))],null,null)}function ru(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than 0"]))],null,null)}function su(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than the minimum blob size"]))],null,null)}function du(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be between 0.0 and 1.0"]))],null,null)}function cu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,67,"div",[],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](2,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](3,{"has-error":0}),(l()(),u["\u0275eld"](4,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","algorithm"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Algorithm"])),(l()(),u["\u0275eld"](6,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","algorithm"],["id","algorithm"],["name","algorithm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,uu)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,tu)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ou)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](20,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](21,{"has-error":0}),(l()(),u["\u0275eld"](22,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","minBlobSize"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Minimum blob size"])),(l()(),u["\u0275eld"](24,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](25,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","minBlobSize"],["id","minBlobSize"],["min","0"],["name","minBlobSize"],["placeholder","e.g., 128KiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,26)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,30).onBlur(e.target.value)&&t),t},null,null)),u["\u0275did"](26,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](28,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](30,81920,null,0,Ve.a,[u.ElementRef,o.q,b.a,R.a],{defaultUnit:[0,"defaultUnit"]},null),u["\u0275did"](31,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,iu)),u["\u0275did"](33,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,au)),u["\u0275did"](35,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](36,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](37,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](38,{"has-error":0}),(l()(),u["\u0275eld"](39,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","maxBlobSize"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Maximum blob size"])),(l()(),u["\u0275eld"](41,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](42,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","maxBlobSize"],["id","maxBlobSize"],["min","0"],["placeholder","e.g., 512KiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,43)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,43).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,43)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,43)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,47).onBlur(e.target.value)&&t),t},null,null)),u["\u0275did"](43,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](45,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](47,81920,null,0,Ve.a,[u.ElementRef,o.q,b.a,R.a],{defaultUnit:[0,"defaultUnit"]},null),u["\u0275did"](48,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ru)),u["\u0275did"](50,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,su)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](53,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](54,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](55,{"has-error":0}),(l()(),u["\u0275eld"](56,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","ratio"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Ratio"])),(l()(),u["\u0275eld"](58,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](59,0,null,null,6,"input",[["class","form-control"],["formControlName","ratio"],["id","ratio"],["max","1"],["min","0"],["name","ratio"],["placeholder","Compression ratio"],["step","0.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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,60)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,60).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,60)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,60)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,61).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,61).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,61).onTouched()&&t),t},null,null)),u["\u0275did"](60,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](61,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](63,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](65,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,du)),u["\u0275did"](67,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,3,0,e.form.showError("algorithm",u["\u0275nov"](n.parent.parent,2)));l(n,2,0,"form-group",t),l(n,10,0,"algorithm"),l(n,14,0,!e.info.compression_algorithms),l(n,16,0,e.info.compression_algorithms&&0===e.info.compression_algorithms.length),l(n,18,0,e.info.compression_algorithms);var o=l(n,21,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2)));l(n,20,0,"form-group",o),l(n,28,0,"minBlobSize"),l(n,30,0,"KiB"),l(n,33,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2),"min")),l(n,35,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2),"maximum"));var i=l(n,38,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2)));l(n,37,0,"form-group",i),l(n,45,0,"maxBlobSize"),l(n,47,0,"KiB"),l(n,50,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2),"min")),l(n,52,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2),"minimum"));var a=l(n,55,0,e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2)));l(n,54,0,"form-group",a),l(n,63,0,"ratio"),l(n,67,0,e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2),"min")||e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2),"max"))},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending),l(n,25,0,u["\u0275nov"](n,31).ngClassUntouched,u["\u0275nov"](n,31).ngClassTouched,u["\u0275nov"](n,31).ngClassPristine,u["\u0275nov"](n,31).ngClassDirty,u["\u0275nov"](n,31).ngClassValid,u["\u0275nov"](n,31).ngClassInvalid,u["\u0275nov"](n,31).ngClassPending),l(n,42,0,u["\u0275nov"](n,48).ngClassUntouched,u["\u0275nov"](n,48).ngClassTouched,u["\u0275nov"](n,48).ngClassPristine,u["\u0275nov"](n,48).ngClassDirty,u["\u0275nov"](n,48).ngClassValid,u["\u0275nov"](n,48).ngClassInvalid,u["\u0275nov"](n,48).ngClassPending),l(n,59,0,u["\u0275nov"](n,65).ngClassUntouched,u["\u0275nov"](n,65).ngClassTouched,u["\u0275nov"](n,65).ngClassPristine,u["\u0275nov"](n,65).ngClassDirty,u["\u0275nov"](n,65).ngClassValid,u["\u0275nov"](n,65).ngClassInvalid,u["\u0275nov"](n,65).ngClassPending)})}function pu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,19,"div",[["formGroupName","compression"]],[[2,"ng-untouched",null],[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)),u["\u0275did"](1,212992,null,0,o.m,[[3,o.d],[8,null],[8,null]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.d,null,[o.m]),u["\u0275did"](3,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Compression"])),(l()(),u["\u0275eld"](6,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","mode"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Mode"])),(l()(),u["\u0275eld"](9,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](10,0,null,null,7,"select",[["class","form-control"],["formControlName","mode"],["id","mode"],["name","mode"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,eu)),u["\u0275did"](17,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,cu)),u["\u0275did"](19,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,1,0,"compression"),l(n,13,0,"mode"),l(n,17,0,e.info.compression_modes),l(n,19,0,e.hasCompressionEnabled())},function(l,n){l(n,0,0,u["\u0275nov"](n,3).ngClassUntouched,u["\u0275nov"](n,3).ngClassTouched,u["\u0275nov"](n,3).ngClassPristine,u["\u0275nov"](n,3).ngClassDirty,u["\u0275nov"](n,3).ngClassValid,u["\u0275nov"](n,3).ngClassInvalid,u["\u0275nov"](n,3).ngClassPending),l(n,10,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function fu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,5,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["It's not possible to create an RBD pool with '/' in the name."])),(l()(),u["\u0275eld"](4,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Please change the name or remove 'rbd' from the applications list."]))],null,null)}function mu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,78,"form",[["class","form-horizontal"],["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(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["\u0275nov"](l,2).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["\u0275nov"](l,2).onReset()&&t),t},null,null)),u["\u0275did"](1,16384,null,0,o.D,[],null,null),u["\u0275did"](2,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["\u0275prd"](2048,null,o.d,null,[o.l]),u["\u0275did"](4,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](5,0,null,null,73,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),u["\u0275ted"](8,null,[""," ",""])),u["\u0275ppd"](9,1),u["\u0275ppd"](10,1),(l()(),u["\u0275eld"](11,0,null,null,58,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),u["\u0275eld"](12,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](13,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](14,{"has-error":0}),(l()(),u["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),u["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Name"])),(l()(),u["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](19,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,22)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,22).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,22)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,22)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](21,4210688,null,0,vl.a,[u.ElementRef],null,null),u["\u0275did"](22,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](24,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](26,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ke)),u["\u0275did"](28,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Pe)),u["\u0275did"](30,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](31,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](32,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](33,{"has-error":0}),(l()(),u["\u0275eld"](34,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","poolType"]],null,null,null,null,null)),(l()(),u["\u0275eld"](35,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Pool type"])),(l()(),u["\u0275eld"](37,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](38,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](39,0,null,null,11,"select",[["class","form-control"],["formControlName","poolType"],["id","poolType"],["name","poolType"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,40).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,40).onTouched()&&t),t},null,null)),u["\u0275did"](40,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](42,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](44,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](45,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](46,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](47,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select a pool type --"])),(l()(),u["\u0275and"](16777216,null,null,1,null,xe)),u["\u0275did"](50,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ze)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,nu)),u["\u0275did"](54,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](55,0,null,null,6,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](56,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","applications"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Applications"])),(l()(),u["\u0275eld"](58,0,null,null,3,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](59,0,null,null,2,"span",[["class","form-control no-border full-height"]],null,null,null,null,null)),(l()(),u["\u0275eld"](60,0,null,null,1,"cd-select-badges",[["id","applications"]],null,[[null,"selection"]],function(l,n,e){var u=!0;return"selection"===n&&(u=!1!==l.component.appSelection()&&u),u},Te.b,Te.a)),u["\u0275did"](61,49152,null,0,we.a,[s.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],selectionLimit:[3,"selectionLimit"],customBadges:[4,"customBadges"],customBadgeValidators:[5,"customBadgeValidators"]},{selection:"selection"}),(l()(),u["\u0275and"](16777216,null,null,1,null,pu)),u["\u0275did"](63,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](64,0,null,null,2,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),u["\u0275eld"](65,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],function(l,n,e){var u=!0;return"changes"===n&&(u=!1!==(l.component.currentConfigurationValues=e())&&u),u},Se.b,Se.a)),u["\u0275did"](66,114688,null,0,Ne.a,[R.a,oe.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),u["\u0275eld"](67,0,null,null,2,"div",[["class","form-group has-error"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,fu)),u["\u0275did"](69,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](70,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),u["\u0275eld"](71,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),u["\u0275eld"](72,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.submit()&&u),u},bl.b,bl.a)),u["\u0275did"](73,114688,null,0,Cl.a,[u.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),u["\u0275ted"](74,0,[""," ",""])),u["\u0275ppd"](75,1),u["\u0275ppd"](76,1),(l()(),u["\u0275eld"](77,0,null,null,1,"cd-back-button",[],null,null,null,Rl.b,Rl.a)),u["\u0275did"](78,49152,null,0,yl.a,[fl.Location,t.b],null,null)],function(l,n){var e=n.component;l(n,2,0,e.form);var t=l(n,14,0,e.form.showError("name",u["\u0275nov"](n,2)));l(n,13,0,"form-group",t),l(n,24,0,"name"),l(n,28,0,e.form.showError("name",u["\u0275nov"](n,2),"required")),l(n,30,0,e.form.showError("name",u["\u0275nov"](n,2),"uniqueName"));var o=l(n,33,0,e.form.showError("poolType",u["\u0275nov"](n,2)));l(n,32,0,"form-group",o),l(n,42,0,"poolType"),l(n,46,0,""),l(n,47,0,""),l(n,50,0,e.data.poolTypes),l(n,52,0,e.form.showError("poolType",u["\u0275nov"](n,2),"required")),l(n,54,0,e.form.getValue("poolType")),l(n,61,0,e.data.applications.selected,e.data.applications.available,e.data.applications.messages,4,!0,e.data.applications.validators),l(n,63,0,e.info.is_all_bluestore),l(n,66,0,e.form,e.initializeConfigData),l(n,69,0,e.form.hasError("rbdPool")),l(n,73,0,u["\u0275nov"](n,2),"button")},function(l,n){var e=n.component;l(n,0,0,u["\u0275nov"](n,4).ngClassUntouched,u["\u0275nov"](n,4).ngClassTouched,u["\u0275nov"](n,4).ngClassPristine,u["\u0275nov"](n,4).ngClassDirty,u["\u0275nov"](n,4).ngClassValid,u["\u0275nov"](n,4).ngClassInvalid,u["\u0275nov"](n,4).ngClassPending);var t=u["\u0275unv"](n,8,0,l(n,9,0,u["\u0275nov"](n.parent,0),e.action)),o=u["\u0275unv"](n,8,1,l(n,10,0,u["\u0275nov"](n.parent,1),e.resource));l(n,8,0,t,o),l(n,20,0,u["\u0275nov"](n,26).ngClassUntouched,u["\u0275nov"](n,26).ngClassTouched,u["\u0275nov"](n,26).ngClassPristine,u["\u0275nov"](n,26).ngClassDirty,u["\u0275nov"](n,26).ngClassValid,u["\u0275nov"](n,26).ngClassInvalid,u["\u0275nov"](n,26).ngClassPending),l(n,39,0,u["\u0275nov"](n,44).ngClassUntouched,u["\u0275nov"](n,44).ngClassTouched,u["\u0275nov"](n,44).ngClassPristine,u["\u0275nov"](n,44).ngClassDirty,u["\u0275nov"](n,44).ngClassValid,u["\u0275nov"](n,44).ngClassInvalid,u["\u0275nov"](n,44).ngClassPending),l(n,64,0,"replicated"!==e.form.get("poolType").value||-1===e.data.applications.selected.indexOf("rbd"));var i=u["\u0275unv"](n,74,0,l(n,75,0,u["\u0275nov"](n.parent,0),e.action)),a=u["\u0275unv"](n,74,1,l(n,76,0,u["\u0275nov"](n.parent,1),e.resource));l(n,74,0,i,a)})}function gu(l){return u["\u0275vid"](0,[u["\u0275pid"](0,fl.TitleCasePipe,[]),u["\u0275pid"](0,hl.a,[]),(l()(),u["\u0275eld"](2,0,null,null,4,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,_e)),u["\u0275did"](4,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,mu)),u["\u0275did"](6,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,4,0,!(e.info&&e.ecProfiles)),l(n,6,0,e.info&&e.ecProfiles)},null)}function hu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-pool-form",[],null,null,null,gu,De)),u["\u0275did"](1,114688,null,0,N,[b.a,Sn.a,Sn.l,Il.b,p.a,C.a,R.a,Il.b,y.a,c,s.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var vu=u["\u0275ccf"]("cd-pool-form",N,hu,{},{},[]);e.d(n,"PoolModuleNgFactory",function(){return bu}),e.d(n,"RoutedPoolModuleNgFactory",function(){return Cu});var bu=u["\u0275cmf"](j,[],function(l){return u["\u0275mod"]([u["\u0275mpd"](512,u.ComponentFactoryResolver,u["\u0275CodegenComponentFactoryResolver"],[[8,[K.a,$.a,J.a,H.a,H.b,W.a,Z.a,Y.a,X.a,Q.a,ll.a,nl.a,el.a,ul.a,ul.b,ul.c,tl.a,ol.a,il.a,al.a,rl.a,sl.a,dl.a,cl.a,pl.a,ln]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["\u0275mpd"](4608,fl.NgLocalization,fl.NgLocaleLocalization,[u.LOCALE_ID,[2,fl["\u0275angular_packages_common_common_a"]]]),u["\u0275mpd"](4608,nn.a,nn.a,[s.a]),u["\u0275mpd"](4608,fl.DatePipe,fl.DatePipe,[u.LOCALE_ID]),u["\u0275mpd"](4608,en.a,en.a,[]),u["\u0275mpd"](4608,un.a,un.a,[]),u["\u0275mpd"](4608,R.a,R.a,[]),u["\u0275mpd"](4608,b.a,b.a,[R.a]),u["\u0275mpd"](4608,tn.a,tn.a,[R.a]),u["\u0275mpd"](4608,z.a,z.a,[R.a]),u["\u0275mpd"](4608,on.a,on.a,[]),u["\u0275mpd"](4608,an.a,an.a,[]),u["\u0275mpd"](4608,rn.a,rn.a,[]),u["\u0275mpd"](4608,sn.a,sn.a,[]),u["\u0275mpd"](4608,dn.a,dn.a,[fl.DatePipe]),u["\u0275mpd"](4608,cn.a,cn.a,[]),u["\u0275mpd"](4608,pn.a,pn.a,[]),u["\u0275mpd"](4608,fn.a,fn.a,[]),u["\u0275mpd"](4608,mn.a,mn.a,[]),u["\u0275mpd"](4608,gn.a,gn.a,[]),u["\u0275mpd"](4608,hl.a,hl.a,[]),u["\u0275mpd"](4608,o.E,o.E,[]),u["\u0275mpd"](4608,o.h,o.h,[]),u["\u0275mpd"](4608,hn.b,hn.b,[]),u["\u0275mpd"](4608,vn.a,vn.a,[]),u["\u0275mpd"](4608,bn.a,bn.a,[]),u["\u0275mpd"](4608,Cn.a,Cn.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,bn.a,u.ApplicationRef]),u["\u0275mpd"](4608,Rn.a,Rn.a,[]),u["\u0275mpd"](4608,Il.b,Il.b,[u.RendererFactory2,Cn.a]),u["\u0275mpd"](4608,yn.ScrollbarHelper,yn.ScrollbarHelper,[In.DOCUMENT]),u["\u0275mpd"](4608,En.DimensionsHelper,En.DimensionsHelper,[]),u["\u0275mpd"](4608,Vn.ColumnChangesService,Vn.ColumnChangesService,[]),u["\u0275mpd"](4608,Tn.f,Tn.f,[]),u["\u0275mpd"](4608,C.a,C.a,[]),u["\u0275mpd"](4608,wn.a,wn.a,[Sn.l,C.a]),u["\u0275mpd"](4608,Nn.NodeDraggableService,Nn.NodeDraggableService,[]),u["\u0275mpd"](4608,Dn.NodeMenuService,Dn.NodeMenuService,[]),u["\u0275mpd"](4608,_n.TreeService,_n.TreeService,[Nn.NodeDraggableService]),u["\u0275mpd"](4608,kn.e,kn.e,[]),u["\u0275mpd"](4608,Pn.c,Pn.c,[]),u["\u0275mpd"](4608,xn.w,xn.w,[]),u["\u0275mpd"](4608,xn.y,xn.y,[]),u["\u0275mpd"](4608,xn.a,xn.a,[]),u["\u0275mpd"](4608,xn.e,xn.e,[]),u["\u0275mpd"](4608,xn.c,xn.c,[]),u["\u0275mpd"](4608,xn.f,xn.f,[]),u["\u0275mpd"](4608,xn.x,xn.x,[xn.y,xn.f]),u["\u0275mpd"](1073742336,fl.CommonModule,fl.CommonModule,[]),u["\u0275mpd"](1073742336,zn.a,zn.a,[]),u["\u0275mpd"](1073742336,kn.c,kn.c,[]),u["\u0275mpd"](1073742336,vn.d,vn.d,[]),u["\u0275mpd"](1073742336,Fn.a,Fn.a,[]),u["\u0275mpd"](1073742336,o.B,o.B,[]),u["\u0275mpd"](1073742336,o.n,o.n,[]),u["\u0275mpd"](1073742336,o.x,o.x,[]),u["\u0275mpd"](1073742336,hn.c,hn.c,[]),u["\u0275mpd"](1073742336,Rn.d,Rn.d,[]),u["\u0275mpd"](1073742336,qn.ChartsModule,qn.ChartsModule,[]),u["\u0275mpd"](1073742336,Il.e,Il.e,[]),u["\u0275mpd"](1073742336,An.a,An.a,[]),u["\u0275mpd"](1073742336,Tn.e,Tn.e,[]),u["\u0275mpd"](1073742336,On.a,On.a,[]),u["\u0275mpd"](1073742336,Ln.NgxDatatableModule,Ln.NgxDatatableModule,[]),u["\u0275mpd"](1073742336,Sn.p,Sn.p,[[2,Sn.v],[2,Sn.l]]),u["\u0275mpd"](1073742336,Mn.a,Mn.a,[]),u["\u0275mpd"](1073742336,d.a,d.a,[]),u["\u0275mpd"](1073742336,jn.a,jn.a,[]),u["\u0275mpd"](1073742336,Pn.d,Pn.d,[]),u["\u0275mpd"](1073742336,Bn.TreeModule,Bn.TreeModule,[]),u["\u0275mpd"](1073742336,Un.a,Un.a,[]),u["\u0275mpd"](1073742336,xn.d,xn.d,[]),u["\u0275mpd"](1073742336,Gn.a,Gn.a,[]),u["\u0275mpd"](1073742336,j,j,[]),u["\u0275mpd"](256,Tn.a,{autoClose:!0,insideClick:!1},[])])}),Cu=u["\u0275cmf"](G,[],function(l){return u["\u0275mod"]([u["\u0275mpd"](512,u.ComponentFactoryResolver,u["\u0275CodegenComponentFactoryResolver"],[[8,[K.a,$.a,J.a,H.a,H.b,W.a,Z.a,Y.a,X.a,Q.a,ll.a,nl.a,el.a,ul.a,ul.b,ul.c,tl.a,ol.a,il.a,al.a,rl.a,sl.a,dl.a,cl.a,pl.a,ln,Ee,vu]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["\u0275mpd"](4608,fl.NgLocalization,fl.NgLocaleLocalization,[u.LOCALE_ID,[2,fl["\u0275angular_packages_common_common_a"]]]),u["\u0275mpd"](4608,nn.a,nn.a,[s.a]),u["\u0275mpd"](4608,fl.DatePipe,fl.DatePipe,[u.LOCALE_ID]),u["\u0275mpd"](4608,en.a,en.a,[]),u["\u0275mpd"](4608,un.a,un.a,[]),u["\u0275mpd"](4608,R.a,R.a,[]),u["\u0275mpd"](4608,b.a,b.a,[R.a]),u["\u0275mpd"](4608,tn.a,tn.a,[R.a]),u["\u0275mpd"](4608,z.a,z.a,[R.a]),u["\u0275mpd"](4608,on.a,on.a,[]),u["\u0275mpd"](4608,an.a,an.a,[]),u["\u0275mpd"](4608,rn.a,rn.a,[]),u["\u0275mpd"](4608,sn.a,sn.a,[]),u["\u0275mpd"](4608,dn.a,dn.a,[fl.DatePipe]),u["\u0275mpd"](4608,cn.a,cn.a,[]),u["\u0275mpd"](4608,pn.a,pn.a,[]),u["\u0275mpd"](4608,fn.a,fn.a,[]),u["\u0275mpd"](4608,mn.a,mn.a,[]),u["\u0275mpd"](4608,gn.a,gn.a,[]),u["\u0275mpd"](4608,hl.a,hl.a,[]),u["\u0275mpd"](4608,o.E,o.E,[]),u["\u0275mpd"](4608,o.h,o.h,[]),u["\u0275mpd"](4608,hn.b,hn.b,[]),u["\u0275mpd"](4608,vn.a,vn.a,[]),u["\u0275mpd"](4608,bn.a,bn.a,[]),u["\u0275mpd"](4608,Cn.a,Cn.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,bn.a,u.ApplicationRef]),u["\u0275mpd"](4608,Rn.a,Rn.a,[]),u["\u0275mpd"](4608,Il.b,Il.b,[u.RendererFactory2,Cn.a]),u["\u0275mpd"](4608,yn.ScrollbarHelper,yn.ScrollbarHelper,[In.DOCUMENT]),u["\u0275mpd"](4608,En.DimensionsHelper,En.DimensionsHelper,[]),u["\u0275mpd"](4608,Vn.ColumnChangesService,Vn.ColumnChangesService,[]),u["\u0275mpd"](4608,Tn.f,Tn.f,[]),u["\u0275mpd"](4608,C.a,C.a,[]),u["\u0275mpd"](4608,wn.a,wn.a,[Sn.l,C.a]),u["\u0275mpd"](4608,Nn.NodeDraggableService,Nn.NodeDraggableService,[]),u["\u0275mpd"](4608,Dn.NodeMenuService,Dn.NodeMenuService,[]),u["\u0275mpd"](4608,_n.TreeService,_n.TreeService,[Nn.NodeDraggableService]),u["\u0275mpd"](4608,kn.e,kn.e,[]),u["\u0275mpd"](4608,Pn.c,Pn.c,[]),u["\u0275mpd"](4608,xn.w,xn.w,[]),u["\u0275mpd"](4608,xn.y,xn.y,[]),u["\u0275mpd"](4608,xn.a,xn.a,[]),u["\u0275mpd"](4608,xn.e,xn.e,[]),u["\u0275mpd"](4608,xn.c,xn.c,[]),u["\u0275mpd"](4608,xn.f,xn.f,[]),u["\u0275mpd"](4608,xn.x,xn.x,[xn.y,xn.f]),u["\u0275mpd"](1073742336,fl.CommonModule,fl.CommonModule,[]),u["\u0275mpd"](1073742336,zn.a,zn.a,[]),u["\u0275mpd"](1073742336,kn.c,kn.c,[]),u["\u0275mpd"](1073742336,vn.d,vn.d,[]),u["\u0275mpd"](1073742336,Fn.a,Fn.a,[]),u["\u0275mpd"](1073742336,o.B,o.B,[]),u["\u0275mpd"](1073742336,o.n,o.n,[]),u["\u0275mpd"](1073742336,o.x,o.x,[]),u["\u0275mpd"](1073742336,hn.c,hn.c,[]),u["\u0275mpd"](1073742336,Rn.d,Rn.d,[]),u["\u0275mpd"](1073742336,qn.ChartsModule,qn.ChartsModule,[]),u["\u0275mpd"](1073742336,Il.e,Il.e,[]),u["\u0275mpd"](1073742336,An.a,An.a,[]),u["\u0275mpd"](1073742336,Tn.e,Tn.e,[]),u["\u0275mpd"](1073742336,On.a,On.a,[]),u["\u0275mpd"](1073742336,Ln.NgxDatatableModule,Ln.NgxDatatableModule,[]),u["\u0275mpd"](1073742336,Sn.p,Sn.p,[[2,Sn.v],[2,Sn.l]]),u["\u0275mpd"](1073742336,Mn.a,Mn.a,[]),u["\u0275mpd"](1073742336,d.a,d.a,[]),u["\u0275mpd"](1073742336,jn.a,jn.a,[]),u["\u0275mpd"](1073742336,Pn.d,Pn.d,[]),u["\u0275mpd"](1073742336,Bn.TreeModule,Bn.TreeModule,[]),u["\u0275mpd"](1073742336,Un.a,Un.a,[]),u["\u0275mpd"](1073742336,xn.d,xn.d,[]),u["\u0275mpd"](1073742336,Gn.a,Gn.a,[]),u["\u0275mpd"](1073742336,j,j,[]),u["\u0275mpd"](1073742336,G,G,[]),u["\u0275mpd"](256,Tn.a,{autoClose:!0,insideClick:!1},[]),u["\u0275mpd"](1024,Sn.j,function(){return[[{path:"",component:M},{path:"create",component:N,data:B},{path:"edit/:name",component:N,data:U}]]},[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/9.f4b21c687db5d9cef117.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/9.f4b21c687db5d9cef117.js
deleted file mode 100644 (file)
index c004846..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{DY6s:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),o=u("LceX"),a=u("iutN"),t=u("ES0t"),d=u("MdoF"),s=u("Xg1U"),r=u("z5nN"),i=u("EEJc"),c=u("PEr+"),p=u("a40w"),m=u("pMnS"),f=u("Ip0R"),v=u("gIcY"),g=u("iExv"),h=u("Jm/i"),b=u("85J/"),C=u("+0ag"),R=u("aXbf"),y=u("Fgil"),I=u("IzCI"),w=u("o4+5"),x=u("Dwqy"),D=u("uYzU"),k=u("uhwM"),T=u("E2fk"),E=u("a0VL"),N=u("nSDx"),F=u("SB+Q"),P=u("TYzs"),S=u("BQkM"),_=u("dEH0"),M=u("8xTl"),q=u("lTVp"),V=u("OZfm"),A=u("NJnL"),U=u("lqqz"),L=u("eajB"),O=u("DQlY"),j=u("FO+L"),z=u("ZYjt"),H=u("nhM1"),B=u("BARL"),Z=u("xtZt"),Y=u("aexS"),G=u("Avrn"),K=u("ZYCi"),J=u("YAQW"),X=u("9Xeq"),Q=u("xdbM"),W=u("yGOH"),$=u("V/fk"),ll=u("F8xH"),nl=u("ChqD"),ul=u("pL04"),el=u("PCNd"),ol=u("pKUh"),al=function(){function l(l){this.router=l}return l.prototype.ngOnInit=function(){this.url=this.router.url},l.prototype.navigateTo=function(l){this.router.navigate([l])},l}(),tl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function dl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ol.b,ol.a)),e["\u0275did"](1,180224,null,0,J.d,[J.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,1,"tab",[["heading","Users"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/user-management/users")&&e),e},null,null)),e["\u0275did"](3,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(l()(),e["\u0275eld"](4,0,null,0,1,"tab",[["heading","Roles"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/user-management/roles")&&e),e},null,null)),e["\u0275did"](5,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(l,n){var u=n.component;l(n,3,0,"Users","/user-management/users"===u.url),l(n,5,0,"Roles","/user-management/roles"===u.url)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,4,0,e["\u0275nov"](n,5).id,e["\u0275nov"](n,5).active,e["\u0275nov"](n,5).addClass)})}var sl=u("25BL"),rl=u("uIqm"),il=u("NUGo"),cl=u("S7zO"),pl=u("EgGo"),ml=u("ZEkX"),fl=u("Mxhz"),vl=u("9nlD"),gl=u("sne2"),hl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" ",""," "]))],null,function(l,n){l(n,1,0,n.context.$implicit,n.context.last?"":", ")})}function Cl(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,bl)),e["\u0275did"](1,278528,null,0,f.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value)},null)}function Rl(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{userRolesTpl:0}),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-user-tabs",[],null,null,null,dl,tl)),e["\u0275did"](2,114688,null,0,al,[K.l],null,null),(l()(),e["\u0275eld"](3,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","username"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getUsers()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e},sl.b,sl.a)),e["\u0275did"](4,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,il.b,il.a)),e["\u0275did"](6,114688,null,0,cl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275and"](0,[[1,2],["userRolesTpl",2]],null,0,null,Cl))],function(l,n){var u=n.component;l(n,2,0),l(n,4,0,u.users,u.columns,"flex","username","single"),l(n,6,0,u.permission,u.selection,u.tableActions)},null)}function yl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-user-list",[],null,null,null,Rl,hl)),e["\u0275prd"](256,null,pl.a,ml.b,[]),e["\u0275did"](2,114688,null,0,ml.a,[fl.a,N.a,O.b,vl.a,Y.a,h.a,pl.a,gl.b],null,null)],function(l,n){l(n,2,0)},null)}var Il=e["\u0275ccf"]("cd-user-list",ml.a,yl,{},{},[]),wl=u("pYKc"),xl=u("ppaS"),Dl=u("IZUe"),kl=u("D4zM"),Tl=u("gp3X"),El=u("sb0X"),Nl=u("KVJa"),Fl=u("Z21x"),Pl=u("V3my"),Sl=u("DSvg"),_l=u("SgmB"),Ml=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ql(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Vl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Al(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ul(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ll(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password confirmation doesn't match the password."]))],null,null)}function Ol(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Invalid email."]))],null,null)}function jl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border full-height"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-select-badges",[],null,null,null,wl.b,wl.a)),e["\u0275did"](2,49152,null,0,xl.a,[h.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],function(l,n){var u=n.component;l(n,2,0,u.userForm.controls.roles.value,u.allRoles,u.messages)},null)}function zl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,['You are about to remove "user read / update" permissions from your own user.'])),(l()(),e["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"p",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["If you continue, you will no longer be able to add or remove roles from any user."])),(l()(),e["\u0275eld"](6,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Are you sure you want to continue?"]))],null,null)}function Hl(l){return e["\u0275vid"](0,[e["\u0275pid"](0,f.TitleCasePipe,[]),e["\u0275pid"](0,M.a,[]),e["\u0275qud"](402653184,1,{removeSelfUserReadUpdatePermissionTpl:0}),(l()(),e["\u0275eld"](3,0,null,null,106,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,105,"form",[["class","form-horizontal"],["name","userForm"],["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(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["\u0275nov"](l,6).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["\u0275nov"](l,6).onReset()&&o),o},null,null)),e["\u0275did"](5,16384,null,0,v.D,[],null,null),e["\u0275did"](6,540672,[["formDir",4]],0,v.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,v.d,null,[v.l]),e["\u0275did"](8,16384,null,0,v.s,[[4,v.d]],null,null),(l()(),e["\u0275eld"](9,0,null,null,100,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,[""," ",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1),(l()(),e["\u0275eld"](15,0,null,null,85,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,ql)),e["\u0275did"](23,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","username"],["id","username"],["name","username"],["placeholder","Username..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,26).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,26)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](26,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](28,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](30,16384,null,0,v.r,[[4,v.q]],null,null),e["\u0275did"](31,4210688,null,0,Dl.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Vl)),e["\u0275did"](33,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](34,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](35,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](36,{"has-error":0}),(l()(),e["\u0275eld"](37,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password"])),(l()(),e["\u0275eld"](39,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](40,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,5,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","password"],["name","password"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,42)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,42).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,42)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,42)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](42,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](44,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](46,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](47,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](48,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["\u0275nov"](l,49).onClick()&&o),o},null,null)),e["\u0275did"](49,81920,null,0,kl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Al)),e["\u0275did"](51,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](52,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](53,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](54,{"has-error":0}),(l()(),e["\u0275eld"](55,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Confirm password"])),(l()(),e["\u0275eld"](57,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](59,0,null,null,5,"input",[["class","form-control"],["formControlName","confirmpassword"],["id","confirmpassword"],["name","confirmpassword"],["placeholder","Confirm 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,60)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,60).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,60)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,60)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](60,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](62,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](64,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](65,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](66,0,null,null,1,"button",[["cdPasswordButton","confirmpassword"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["\u0275nov"](l,67).onClick()&&o),o},null,null)),e["\u0275did"](67,81920,null,0,kl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ul)),e["\u0275did"](69,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ll)),e["\u0275did"](71,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](72,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](73,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275eld"](75,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](76,0,null,null,5,"input",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Full 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,77)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,77).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,77)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,77)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](77,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](79,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](81,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](82,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](83,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](84,{"has-error":0}),(l()(),e["\u0275eld"](85,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","email"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email"])),(l()(),e["\u0275eld"](87,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](88,0,null,null,5,"input",[["class","form-control"],["formControlName","email"],["id","email"],["name","email"],["placeholder","Email..."],["type","email"]],[[2,"ng-untouched",null],[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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,89)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,89).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,89)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,89)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](89,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](91,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](93,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ol)),e["\u0275did"](95,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](96,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Roles"])),(l()(),e["\u0275eld"](98,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,jl)),e["\u0275did"](100,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](101,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](102,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](103,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Tl.b,Tl.a)),e["\u0275did"](104,114688,null,0,El.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](105,0,[""," ",""])),e["\u0275ppd"](106,1),e["\u0275ppd"](107,1),(l()(),e["\u0275eld"](108,0,null,null,1,"cd-back-button",[],null,null,null,Nl.b,Nl.a)),e["\u0275did"](109,49152,null,0,Fl.a,[f.Location,gl.b],null,null),(l()(),e["\u0275and"](0,[[1,2],["removeSelfUserReadUpdatePermissionTpl",2]],null,0,null,zl))],function(l,n){var u=n.component;l(n,6,0,u.userForm);var o=l(n,18,0,u.userForm.showError("username",e["\u0275nov"](n,6)));l(n,17,0,"form-group",o),l(n,23,0,u.mode!==u.userFormMode.editing),l(n,28,0,"username"),l(n,33,0,u.userForm.showError("username",e["\u0275nov"](n,6),"required"));var a=l(n,36,0,u.userForm.showError("password",e["\u0275nov"](n,6)));l(n,35,0,"form-group",a),l(n,44,0,"password"),l(n,49,0,"password"),l(n,51,0,u.userForm.showError("password",e["\u0275nov"](n,6),"required"));var t=l(n,54,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6)));l(n,53,0,"form-group",t),l(n,62,0,"confirmpassword"),l(n,67,0,"confirmpassword"),l(n,69,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6),"required")),l(n,71,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6),"match")),l(n,79,0,"name");var d=l(n,84,0,u.userForm.showError("email",e["\u0275nov"](n,6)));l(n,83,0,"form-group",d),l(n,91,0,"email"),l(n,95,0,u.userForm.showError("email",e["\u0275nov"](n,6),"email")),l(n,100,0,u.allRoles),l(n,104,0,e["\u0275nov"](n,6),"button")},function(l,n){var u=n.component;l(n,4,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending);var o=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n,1),u.resource));l(n,12,0,o,a),l(n,25,0,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,41,0,e["\u0275nov"](n,46).ngClassUntouched,e["\u0275nov"](n,46).ngClassTouched,e["\u0275nov"](n,46).ngClassPristine,e["\u0275nov"](n,46).ngClassDirty,e["\u0275nov"](n,46).ngClassValid,e["\u0275nov"](n,46).ngClassInvalid,e["\u0275nov"](n,46).ngClassPending),l(n,59,0,e["\u0275nov"](n,64).ngClassUntouched,e["\u0275nov"](n,64).ngClassTouched,e["\u0275nov"](n,64).ngClassPristine,e["\u0275nov"](n,64).ngClassDirty,e["\u0275nov"](n,64).ngClassValid,e["\u0275nov"](n,64).ngClassInvalid,e["\u0275nov"](n,64).ngClassPending),l(n,76,0,e["\u0275nov"](n,81).ngClassUntouched,e["\u0275nov"](n,81).ngClassTouched,e["\u0275nov"](n,81).ngClassPristine,e["\u0275nov"](n,81).ngClassDirty,e["\u0275nov"](n,81).ngClassValid,e["\u0275nov"](n,81).ngClassInvalid,e["\u0275nov"](n,81).ngClassPending),l(n,88,0,e["\u0275nov"](n,93).ngClassUntouched,e["\u0275nov"](n,93).ngClassTouched,e["\u0275nov"](n,93).ngClassPristine,e["\u0275nov"](n,93).ngClassDirty,e["\u0275nov"](n,93).ngClassValid,e["\u0275nov"](n,93).ngClassInvalid,e["\u0275nov"](n,93).ngClassPending);var t=e["\u0275unv"](n,105,0,l(n,106,0,e["\u0275nov"](n,0),u.action)),d=e["\u0275unv"](n,105,1,l(n,107,0,e["\u0275nov"](n,1),u.resource));l(n,105,0,t,d)})}function Bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-user-form",[],null,null,null,Hl,Ml)),e["\u0275did"](1,114688,null,0,Pl.a,[Sl.a,Y.a,K.a,K.l,O.b,_l.a,fl.a,vl.a,h.a,gl.b],null,null)],function(l,n){l(n,1,0)},null)}var Zl=e["\u0275ccf"]("cd-user-form",Pl.a,Bl,{},{},[]),Yl=u("LvDl"),Gl=u("x38r"),Kl=(u("vCyI"),function(){function l(l){this.i18n=l,this.scopes_permissions=[]}return l.prototype.ngOnInit=function(){this.columns=[{prop:"scope",name:this.i18n("Scope"),flexGrow:2},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon}]},l.prototype.ngOnChanges=function(){var l=this;if(this.selection.hasSelection){this.selectedItem=this.selection.first();var n=[];Yl.each(this.scopes,function(u){var e={read:!1,create:!1,update:!1,delete:!1};e.scope=u,u in l.selectedItem.scopes_permissions&&Yl.each(l.selectedItem.scopes_permissions[u],function(l){e[l]=!0}),n.push(e)}),this.scopes_permissions=n}},l}()),Jl=e["\u0275crt"]({encapsulation:0,styles:[["thead[_ngcontent-%COMP%]{background-color:#f5f5f5}.fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#d1d1d1}"]],data:{}});function Xl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ol.b,ol.a)),e["\u0275did"](1,180224,null,0,J.d,[J.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,sl.b,sl.a)),e["\u0275did"](5,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Ql(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Xl)),e["\u0275did"](1,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,null==u.selection?null:u.selection.hasSingleSelection)},null)}var Wl=u("n/D3"),$l=u("ZDA6"),ln=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-user-tabs",[],null,null,null,dl,tl)),e["\u0275did"](1,114688,null,0,al,[K.l],null,null),(l()(),e["\u0275eld"](2,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getRoles()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e},sl.b,sl.a)),e["\u0275did"](3,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,il.b,il.a)),e["\u0275did"](5,114688,null,0,cl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](6,0,null,2,1,"cd-role-details",[["cdTableDetail",""]],null,null,null,Ql,Jl)),e["\u0275did"](7,638976,null,0,Kl,[h.a],{selection:[0,"selection"],scopes:[1,"scopes"]},null)],function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.roles,u.columns,"flex","name","single"),l(n,5,0,u.permission,u.selection,u.tableActions),l(n,7,0,u.selection,u.scopes)},null)}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-role-list",[],null,null,null,nn,ln)),e["\u0275prd"](256,null,pl.a,Wl.b,[]),e["\u0275did"](2,114688,null,0,Wl.a,[_l.a,$l.a,N.a,Y.a,O.b,vl.a,h.a,pl.a,gl.b],null,null)],function(l,n){l(n,2,0)},null)}var en=e["\u0275ccf"]("cd-role-list",Wl.a,un,{},{},[]),on=u("eTJe"),an=e["\u0275crt"]({encapsulation:0,styles:[[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function dn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function sn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen name is already in use."]))],null,null)}function rn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"id",0],[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"label",[["class","datatable-permissions-scope-cell-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](3,null,["",""]))],null,function(l,n){var u=n.component;l(n,1,0,e["\u0275inlineInterpolate"](1,"scope_",n.context.row.scope,""),u.isRowChecked(n.context.row.scope)),l(n,2,0,e["\u0275inlineInterpolate"](1,"scope_",n.context.row.scope,"")),l(n,3,0,n.context.value)})}function cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"label",[],null,null,null,null,null))],null,function(l,n){l(n,1,0,n.context.value)})}function pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"id",0],[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickHeaderCheckbox(l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"label",[["class","datatable-permissions-header-cell-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](3,null,["",""]))],null,function(l,n){var u=n.component;l(n,1,0,e["\u0275inlineInterpolate"](1,"header_",n.context.column.prop,""),u.isHeaderChecked(n.context.column.prop)),l(n,2,0,e["\u0275inlineInterpolate"](1,"header_",n.context.column.prop,"")),l(n,3,0,n.context.column.name)})}function mn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,f.TitleCasePipe,[]),e["\u0275pid"](0,M.a,[]),e["\u0275qud"](402653184,1,{headerPermissionCheckboxTpl:0}),e["\u0275qud"](402653184,2,{cellScopeCheckboxTpl:0}),e["\u0275qud"](402653184,3,{cellPermissionCheckboxTpl:0}),(l()(),e["\u0275eld"](5,0,null,null,59,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,58,"form",[["class","form-horizontal"],["name","roleForm"],["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(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["\u0275nov"](l,8).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["\u0275nov"](l,8).onReset()&&o),o},null,null)),e["\u0275did"](7,16384,null,0,v.D,[],null,null),e["\u0275did"](8,540672,[["formDir",4]],0,v.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,v.d,null,[v.l]),e["\u0275did"](10,16384,null,0,v.s,[[4,v.d]],null,null),(l()(),e["\u0275eld"](11,0,null,null,53,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](14,null,[""," ",""])),e["\u0275ppd"](15,1),e["\u0275ppd"](16,1),(l()(),e["\u0275eld"](17,0,null,null,38,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](19,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](20,{"has-error":0}),(l()(),e["\u0275eld"](21,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,tn)),e["\u0275did"](25,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](26,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,28)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,28).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,28)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,28)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](28,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](30,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](32,16384,null,0,v.r,[[4,v.q]],null,null),e["\u0275did"](33,4210688,null,0,Dl.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,dn)),e["\u0275did"](35,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,sn)),e["\u0275did"](37,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](38,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](39,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](40,{"has-error":0}),(l()(),e["\u0275eld"](41,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","description"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Description"])),(l()(),e["\u0275eld"](43,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,5,"input",[["class","form-control"],["formControlName","description"],["id","description"],["name","description"],["placeholder","Description..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,45)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,45).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,45)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,45)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](45,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](47,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](49,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](50,0,null,null,5,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permissions"])),(l()(),e["\u0275eld"](53,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](54,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,sl.b,sl.a)),e["\u0275did"](55,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null),(l()(),e["\u0275eld"](56,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](57,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Tl.b,Tl.a)),e["\u0275did"](59,114688,null,0,El.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](60,0,[""," ",""])),e["\u0275ppd"](61,1),e["\u0275ppd"](62,1),(l()(),e["\u0275eld"](63,0,null,null,1,"cd-back-button",[],null,null,null,Nl.b,Nl.a)),e["\u0275did"](64,49152,null,0,Fl.a,[f.Location,gl.b],null,null),(l()(),e["\u0275and"](0,[[2,2],["cellScopeCheckboxTpl",2]],null,0,null,rn)),(l()(),e["\u0275and"](0,[[3,2],["cellPermissionCheckboxTpl",2]],null,0,null,cn)),(l()(),e["\u0275and"](0,[[1,2],["headerPermissionCheckboxTpl",2]],null,0,null,pn))],function(l,n){var u=n.component;l(n,8,0,u.roleForm);var o=l(n,20,0,u.roleForm.showError("name",e["\u0275nov"](n,8)));l(n,19,0,"form-group",o),l(n,25,0,u.mode!==u.roleFormMode.editing),l(n,30,0,"name"),l(n,35,0,u.roleForm.showError("name",e["\u0275nov"](n,8),"required")),l(n,37,0,u.roleForm.showError("name",e["\u0275nov"](n,8),"notUnique"));var a=l(n,40,0,u.roleForm.showError("description",e["\u0275nov"](n,8)));l(n,39,0,"form-group",a),l(n,47,0,"description"),l(n,55,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1),l(n,59,0,e["\u0275nov"](n,8),"button")},function(l,n){var u=n.component;l(n,6,0,e["\u0275nov"](n,10).ngClassUntouched,e["\u0275nov"](n,10).ngClassTouched,e["\u0275nov"](n,10).ngClassPristine,e["\u0275nov"](n,10).ngClassDirty,e["\u0275nov"](n,10).ngClassValid,e["\u0275nov"](n,10).ngClassInvalid,e["\u0275nov"](n,10).ngClassPending);var o=e["\u0275unv"](n,14,0,l(n,15,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,14,1,l(n,16,0,e["\u0275nov"](n,1),u.resource));l(n,14,0,o,a),l(n,27,0,e["\u0275nov"](n,32).ngClassUntouched,e["\u0275nov"](n,32).ngClassTouched,e["\u0275nov"](n,32).ngClassPristine,e["\u0275nov"](n,32).ngClassDirty,e["\u0275nov"](n,32).ngClassValid,e["\u0275nov"](n,32).ngClassInvalid,e["\u0275nov"](n,32).ngClassPending),l(n,44,0,e["\u0275nov"](n,49).ngClassUntouched,e["\u0275nov"](n,49).ngClassTouched,e["\u0275nov"](n,49).ngClassPristine,e["\u0275nov"](n,49).ngClassDirty,e["\u0275nov"](n,49).ngClassValid,e["\u0275nov"](n,49).ngClassInvalid,e["\u0275nov"](n,49).ngClassPending);var t=e["\u0275unv"](n,60,0,l(n,61,0,e["\u0275nov"](n,0),u.action)),d=e["\u0275unv"](n,60,1,l(n,62,0,e["\u0275nov"](n,1),u.resource));l(n,60,0,t,d)})}function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-role-form",[],null,null,null,mn,an)),e["\u0275did"](1,114688,null,0,on.a,[K.a,K.l,_l.a,$l.a,vl.a,h.a,gl.b],null,null)],function(l,n){l(n,1,0)},null)}var vn=e["\u0275ccf"]("cd-role-form",on.a,fn,{},{},[]);u.d(n,"AuthModuleNgFactory",function(){return gn}),u.d(n,"RoutedAuthModuleNgFactory",function(){return hn});var gn=e["\u0275cmf"](o.a,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,t.a,d.a,s.a,r.a,r.b,i.a,c.a,p.a,m.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,f.NgLocalization,f.NgLocaleLocalization,[e.LOCALE_ID,[2,f["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,v.E,v.E,[]),e["\u0275mpd"](4608,v.h,v.h,[]),e["\u0275mpd"](4608,g.a,g.a,[h.a]),e["\u0275mpd"](4608,f.DatePipe,f.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,b.a,b.a,[]),e["\u0275mpd"](4608,C.a,C.a,[]),e["\u0275mpd"](4608,R.a,R.a,[]),e["\u0275mpd"](4608,y.a,y.a,[R.a]),e["\u0275mpd"](4608,I.a,I.a,[R.a]),e["\u0275mpd"](4608,w.a,w.a,[R.a]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,k.a,k.a,[]),e["\u0275mpd"](4608,T.a,T.a,[]),e["\u0275mpd"](4608,E.a,E.a,[f.DatePipe]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,F.a,F.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,q.b,q.b,[]),e["\u0275mpd"](4608,V.a,V.a,[]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,U.a,U.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,A.a,e.ApplicationRef]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,O.b,O.b,[e.RendererFactory2,U.a]),e["\u0275mpd"](4608,j.ScrollbarHelper,j.ScrollbarHelper,[z.DOCUMENT]),e["\u0275mpd"](4608,H.DimensionsHelper,H.DimensionsHelper,[]),e["\u0275mpd"](4608,B.ColumnChangesService,B.ColumnChangesService,[]),e["\u0275mpd"](4608,Z.f,Z.f,[]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,G.a,G.a,[K.l,Y.a]),e["\u0275mpd"](4608,J.e,J.e,[]),e["\u0275mpd"](1073742336,Z.e,Z.e,[]),e["\u0275mpd"](1073742336,f.CommonModule,f.CommonModule,[]),e["\u0275mpd"](1073742336,v.B,v.B,[]),e["\u0275mpd"](1073742336,v.n,v.n,[]),e["\u0275mpd"](1073742336,V.d,V.d,[]),e["\u0275mpd"](1073742336,v.x,v.x,[]),e["\u0275mpd"](1073742336,X.a,X.a,[]),e["\u0275mpd"](1073742336,q.c,q.c,[]),e["\u0275mpd"](1073742336,L.d,L.d,[]),e["\u0275mpd"](1073742336,Q.ChartsModule,Q.ChartsModule,[]),e["\u0275mpd"](1073742336,O.e,O.e,[]),e["\u0275mpd"](1073742336,W.a,W.a,[]),e["\u0275mpd"](1073742336,$.a,$.a,[]),e["\u0275mpd"](1073742336,ll.NgxDatatableModule,ll.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,K.p,K.p,[[2,K.v],[2,K.l]]),e["\u0275mpd"](1073742336,nl.a,nl.a,[]),e["\u0275mpd"](1073742336,ul.a,ul.a,[]),e["\u0275mpd"](1073742336,el.a,el.a,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,o.a,o.a,[]),e["\u0275mpd"](256,Z.a,{autoClose:!0,insideClick:!1},[])])}),hn=e["\u0275cmf"](o.b,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,t.a,d.a,s.a,r.a,r.b,i.a,c.a,p.a,m.a,Il,Zl,en,vn]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,f.NgLocalization,f.NgLocaleLocalization,[e.LOCALE_ID,[2,f["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,v.E,v.E,[]),e["\u0275mpd"](4608,v.h,v.h,[]),e["\u0275mpd"](4608,g.a,g.a,[h.a]),e["\u0275mpd"](4608,f.DatePipe,f.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,b.a,b.a,[]),e["\u0275mpd"](4608,C.a,C.a,[]),e["\u0275mpd"](4608,R.a,R.a,[]),e["\u0275mpd"](4608,y.a,y.a,[R.a]),e["\u0275mpd"](4608,I.a,I.a,[R.a]),e["\u0275mpd"](4608,w.a,w.a,[R.a]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,k.a,k.a,[]),e["\u0275mpd"](4608,T.a,T.a,[]),e["\u0275mpd"](4608,E.a,E.a,[f.DatePipe]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,F.a,F.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,q.b,q.b,[]),e["\u0275mpd"](4608,V.a,V.a,[]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,U.a,U.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,A.a,e.ApplicationRef]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,O.b,O.b,[e.RendererFactory2,U.a]),e["\u0275mpd"](4608,j.ScrollbarHelper,j.ScrollbarHelper,[z.DOCUMENT]),e["\u0275mpd"](4608,H.DimensionsHelper,H.DimensionsHelper,[]),e["\u0275mpd"](4608,B.ColumnChangesService,B.ColumnChangesService,[]),e["\u0275mpd"](4608,Z.f,Z.f,[]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,G.a,G.a,[K.l,Y.a]),e["\u0275mpd"](4608,J.e,J.e,[]),e["\u0275mpd"](1073742336,Z.e,Z.e,[]),e["\u0275mpd"](1073742336,f.CommonModule,f.CommonModule,[]),e["\u0275mpd"](1073742336,v.B,v.B,[]),e["\u0275mpd"](1073742336,v.n,v.n,[]),e["\u0275mpd"](1073742336,V.d,V.d,[]),e["\u0275mpd"](1073742336,v.x,v.x,[]),e["\u0275mpd"](1073742336,X.a,X.a,[]),e["\u0275mpd"](1073742336,q.c,q.c,[]),e["\u0275mpd"](1073742336,L.d,L.d,[]),e["\u0275mpd"](1073742336,Q.ChartsModule,Q.ChartsModule,[]),e["\u0275mpd"](1073742336,O.e,O.e,[]),e["\u0275mpd"](1073742336,W.a,W.a,[]),e["\u0275mpd"](1073742336,$.a,$.a,[]),e["\u0275mpd"](1073742336,ll.NgxDatatableModule,ll.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,K.p,K.p,[[2,K.v],[2,K.l]]),e["\u0275mpd"](1073742336,nl.a,nl.a,[]),e["\u0275mpd"](1073742336,ul.a,ul.a,[]),e["\u0275mpd"](1073742336,el.a,el.a,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,o.a,o.a,[]),e["\u0275mpd"](1073742336,o.b,o.b,[]),e["\u0275mpd"](256,Z.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,K.j,function(){return[[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:o.c,children:[{path:"",component:ml.a},{path:"create",component:Pl.a,data:o.d},{path:"edit/:username",component:Pl.a,data:o.e}]},{path:"roles",data:o.f,children:[{path:"",component:Wl.a},{path:"create",component:on.a,data:o.g},{path:"edit/:name",component:on.a,data:o.h}]}]]},[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png
deleted file mode 100644 (file)
index 79064dc..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Mimic_Octopus2.jpg b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Mimic_Octopus2.jpg
deleted file mode 100644 (file)
index f8cf2a8..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Mimic_Octopus2.jpg and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Nautilus_Octopus.jpg b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Nautilus_Octopus.jpg
deleted file mode 100644 (file)
index 1f0776f..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/1280px-Nautilus_Octopus.jpg and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png
deleted file mode 100644 (file)
index 79064dc..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png
deleted file mode 100644 (file)
index d46bd73..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png
deleted file mode 100644 (file)
index 26d602b..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png
deleted file mode 100644 (file)
index 0f07b83..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/loading.gif b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/loading.gif
deleted file mode 100644 (file)
index 8fb88de..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/loading.gif and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/logo-mini.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/logo-mini.png
deleted file mode 100644 (file)
index b3446a8..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/logo-mini.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/notification-icons.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/notification-icons.png
deleted file mode 100644 (file)
index d609a7c..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/notification-icons.png and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/prometheus_logo.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/assets/prometheus_logo.svg
deleted file mode 100644 (file)
index 5c51f66..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.1"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="115.333px"
-   height="114px"
-   viewBox="0 0 115.333 114"
-   enable-background="new 0 0 115.333 114"
-   xml:space="preserve"
-   sodipodi:docname="prometheus_logo_orange.svg"
-   inkscape:version="0.92.1 r15371"><metadata
-     id="metadata4495"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs4493" /><sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1484"
-     inkscape:window-height="886"
-     id="namedview4491"
-     showgrid="false"
-     inkscape:zoom="5.2784901"
-     inkscape:cx="60.603667"
-     inkscape:cy="60.329656"
-     inkscape:window-x="54"
-     inkscape:window-y="7"
-     inkscape:window-maximized="0"
-     inkscape:current-layer="Layer_1" /><g
-     id="Layer_2" /><path
-     style="fill:#e6522c;fill-opacity:1"
-     inkscape:connector-curvature="0"
-     id="path4486"
-     d="M 56.667,0.667 C 25.372,0.667 0,26.036 0,57.332 c 0,31.295 25.372,56.666 56.667,56.666 31.295,0 56.666,-25.371 56.666,-56.666 0,-31.296 -25.372,-56.665 -56.666,-56.665 z m 0,106.055 c -8.904,0 -16.123,-5.948 -16.123,-13.283 H 72.79 c 0,7.334 -7.219,13.283 -16.123,13.283 z M 83.297,89.04 H 30.034 V 79.382 H 83.298 V 89.04 Z M 83.106,74.411 H 30.186 C 30.01,74.208 29.83,74.008 29.66,73.802 24.208,67.182 22.924,63.726 21.677,60.204 c -0.021,-0.116 6.611,1.355 11.314,2.413 0,0 2.42,0.56 5.958,1.205 -3.397,-3.982 -5.414,-9.044 -5.414,-14.218 0,-11.359 8.712,-21.285 5.569,-29.308 3.059,0.249 6.331,6.456 6.552,16.161 3.252,-4.494 4.613,-12.701 4.613,-17.733 0,-5.21 3.433,-11.262 6.867,-11.469 -3.061,5.045 0.793,9.37 4.219,20.099 1.285,4.03 1.121,10.812 2.113,15.113 C 63.797,33.534 65.333,20.5 71,16 c -2.5,5.667 0.37,12.758 2.333,16.167 3.167,5.5 5.087,9.667 5.087,17.548 0,5.284 -1.951,10.259 -5.242,14.148 3.742,-0.702 6.326,-1.335 6.326,-1.335 l 12.152,-2.371 c 10e-4,-10e-4 -1.765,7.261 -8.55,14.254 z" /></svg>
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/common.8a53d98b04768bd15706.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/common.8a53d98b04768bd15706.js
deleted file mode 100644 (file)
index 85fd813..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{pYKc:function(l,n,e){"use strict";var t=e("CcnG"),u=e("WiuZ"),i=e("wnGv"),s=e("Jm/i"),a=e("Ip0R");e("ppaS"),e.d(n,"a",function(){return c}),e.d(n,"b",function(){return r});var c=t["\u0275crt"]({encapsulation:0,styles:[[".select-menu-edit{margin-left:-20px}.badge-remove[_ngcontent-%COMP%]{color:#fff}"]],data:{}});function o(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,4,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,1,"span",[["class","margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275ted"](3,null,["",""])),(l()(),t["\u0275eld"](4,0,null,null,1,"a",[["class","badge-remove"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l.parent,2).removeItem(l.context.$implicit)&&u),u},null,null)),(l()(),t["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-times"]],null,null,null,null,null))],null,function(l,n){l(n,3,0,n.context.$implicit)})}function r(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{cdSelect:0}),(l()(),t["\u0275eld"](1,0,null,null,2,"cd-select",[["elemClass","margin-right-sm select-menu-edit"]],null,[[null,"selection"]],function(l,n,e){var t=!0;return"selection"===n&&(t=!1!==l.component.selection.emit(e)&&t),t},u.b,u.a)),t["\u0275did"](2,638976,[[1,4],["cdSelect",4]],0,i.a,[s.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(l()(),t["\u0275eld"](3,0,null,0,0,"i",[["class","fa fa-fw fa-pencil"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,o)),t["\u0275did"](5,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,2,0,"margin-right-sm select-menu-edit",e.data,e.options,e.messages,e.selectionLimit,e.customBadges,e.customBadgeValidators),l(n,5,0,e.data)},null)}},ppaS:function(l,n,e){"use strict";e.d(n,"a",function(){return i});var t=e("CcnG"),u=e("DNAf"),i=function(){return function(l){this.i18n=l,this.data=[],this.options=[],this.messages=new u.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new t.EventEmitter}}()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.03f9acb8077098945447.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/2.03f9acb8077098945447.js
new file mode 100644 (file)
index 0000000..e1fe348
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+lcs":function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("gIcY"),u=e("K9Ia"),i=(e("F83c"),e("QFaf")),o=e("kvvV"),r=(e("9nlD"),e("VXsX"),function(){function l(l,n,e,t){this.modalRef=l,this.rbdService=n,this.taskManagerService=e,this.notificationService=t,this.editing=!1,this.createForm()}return l.prototype.createForm=function(){this.snapshotForm=new i.a({snapshotName:new t.i("",{validators:[t.A.required]})})},l.prototype.ngOnInit=function(){this.onSubmit=new u.a},l.prototype.setSnapName=function(l){this.snapName=l,this.snapshotForm.get("snapshotName").setValue(l)},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l},l.prototype.editAction=function(){var l=this,n=this.snapshotForm.getValue("snapshotName"),e=new o.a;e.name="rbd/snap/edit",e.metadata={pool_name:this.poolName,image_name:this.imageName,snapshot_name:n},this.rbdService.renameSnapshot(this.poolName,this.imageName,this.snapName,n).toPromise().then(function(){l.taskManagerService.subscribe(e.name,e.metadata,function(n){l.notificationService.notifyTask(n)}),l.modalRef.hide(),l.onSubmit.next(l.snapName)}).catch(function(){l.snapshotForm.setErrors({cdSubmitButton:!0})})},l.prototype.createAction=function(){var l=this,n=this.snapshotForm.getValue("snapshotName"),e=new o.a;e.name="rbd/snap/create",e.metadata={pool_name:this.poolName,image_name:this.imageName,snapshot_name:n},this.rbdService.createSnapshot(this.poolName,this.imageName,n).toPromise().then(function(){l.taskManagerService.subscribe(e.name,e.metadata,function(n){l.notificationService.notifyTask(n)}),l.modalRef.hide(),l.onSubmit.next(n)}).catch(function(){l.snapshotForm.setErrors({cdSubmitButton:!0})})},l.prototype.submit=function(){this.editing?this.editAction():this.createAction()},l}())},"0rTx":function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("gIcY"),r=e("Ip0R"),a=e("IZUe"),s=e("gp3X"),d=e("sb0X"),c=e("KVJa"),p=e("Z21x"),m=e("sne2"),f=e("2GqK"),g=e("F83c"),h=e("DQlY"),v=e("2EZI"),b=e("kn/O");e.d(n,"a",function(){return I});var y=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,44,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Restore Image"])),(l()(),t["\u0275eld"](4,0,null,1,40,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,39,"form",[["class","form"],["name","restoreForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,o.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,o.d,null,[o.l]),t["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,27,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,12,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To restore"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](16,null,["","/","@",""])),(l()(),t["\u0275ted"](-1,null,[",\xa0 "])),(l()(),t["\u0275eld"](18,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["type the image's new name and click"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](21,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Restore Image"])),(l()(),t["\u0275ted"](-1,null,[". "])),(l()(),t["\u0275eld"](24,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](25,278528,null,0,r.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](26,{"has-error":0}),(l()(),t["\u0275eld"](27,0,null,null,1,"label",[["for","name"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["New Name"])),(l()(),t["\u0275eld"](29,0,null,null,6,"input",[["autocomplete","off"],["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,30)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,30).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,30)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,30)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](30,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),t["\u0275did"](32,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,o.q,null,[o.j]),t["\u0275did"](34,16384,null,0,o.r,[[4,o.q]],null,null),t["\u0275did"](35,4210688,null,0,a.a,[t.ElementRef],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](37,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](38,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](40,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.restore()&&t),t},s.b,s.a)),t["\u0275did"](41,114688,null,0,d.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Restore Image"])),(l()(),t["\u0275eld"](43,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),t["\u0275did"](44,49152,null,0,p.a,[r.Location,m.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.restoreForm);var u=l(n,26,0,e.restoreForm.showError("name",t["\u0275nov"](n,7)));l(n,25,0,"form-group",u),l(n,32,0,"name"),l(n,37,0,e.restoreForm.showError("name",t["\u0275nov"](n,7),"required")),l(n,41,0,e.restoreForm),l(n,44,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,16,0,e.poolName,e.imageName,e.imageId),l(n,29,0,t["\u0275nov"](n,34).ngClassUntouched,t["\u0275nov"](n,34).ngClassTouched,t["\u0275nov"](n,34).ngClassPristine,t["\u0275nov"](n,34).ngClassDirty,t["\u0275nov"](n,34).ngClassValid,t["\u0275nov"](n,34).ngClassInvalid,t["\u0275nov"](n,34).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-restore-modal",[],null,null,null,_,y)),t["\u0275did"](1,114688,null,0,f.a,[g.a,h.a,v.a,b.a],null,null)],function(l,n){l(n,1,0)},null)}var I=t["\u0275ccf"]("cd-rbd-trash-restore-modal",f.a,w,{},{},[])},"2GqK":function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e("F83c"),e("2EZI");var t=e("kvvV"),u=(e("kn/O"),function(){function l(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t}return l.prototype.ngOnInit=function(){this.restoreForm=this.fb.group({name:this.imageName})},l.prototype.restore=function(){var l=this,n=this.restoreForm.getValue("name");this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/restore",{pool_name:this.poolName,image_id:this.imageId,new_image_name:n}),call:this.rbdService.restoreTrash(this.poolName,this.imageId,n)}).subscribe(void 0,function(){l.restoreForm.setErrors({cdSubmitButton:!0})},function(){l.modalRef.hide()})},l}())},"2JDI":function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("wd/R"),u=(e("F83c"),e("2EZI"),e("1Ni5")),i=e("kvvV"),o=(e("kn/O"),function(){function l(l,n,e,t){this.rbdService=l,this.modalRef=n,this.fb=e,this.taskWrapper=t,this.minDate=new Date,this.bsConfig={dateInputFormat:"YYYY-MM-DD HH:mm:ss",containerClass:"theme-default"},this.createForm()}return l.prototype.createForm=function(){this.moveForm=this.fb.group({expiresAt:["",[u.a.custom("format",function(l){return!(""===l||t(l,"YYYY-MM-DD HH:mm:ss").isValid())}),u.a.custom("expired",function(l){return t().isAfter(l)})]]})},l.prototype.ngOnInit=function(){this.pattern=this.poolName+"/"+this.imageName},l.prototype.moveImage=function(){var l=this,n=0,e=this.moveForm.getValue("expiresAt");e&&(n=t(e).diff(t(),"seconds",!0)),n<0&&(n=0),this.taskWrapper.wrapTaskAroundCall({task:new i.a("rbd/trash/move",{pool_name:this.poolName,image_name:this.imageName}),call:this.rbdService.moveTrash(this.poolName,this.imageName,n)}).subscribe(void 0,void 0,function(){l.modalRef.hide()})},l}())},"3ris":function(l,n,e){"use strict";e.d(n,"a",function(){return u});var t=e("LvDl"),u=(e("uIqm"),e("vCyI"),e("iExv"),e("uYzU"),function(){function l(l,n,e){this.i18n=l,this.iscsiBackstorePipe=n,this.booleanTextPipe=e,this.metadata={}}return Object.defineProperty(l.prototype,"content",{set:function(l){this.detailTable=l,l&&l.updateColumns()},enumerable:!0,configurable:!0}),l.prototype.ngOnInit=function(){this.columns=[{prop:"displayName",name:this.i18n("Name"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"current",name:this.i18n("Current"),flexGrow:1,cellTemplate:this.highlightTpl},{prop:"default",name:this.i18n("Default"),flexGrow:1,cellTemplate:this.highlightTpl}]},l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.generateTree()),this.data=void 0},l.prototype.generateTree=function(){var l=this,n=t.cloneDeep(this.selectedItem.target_controls);this.cephIscsiConfigVersion>10&&t.extend(n,t.cloneDeep(this.selectedItem.auth)),this.metadata={root:n};var e={target:{expanded:this.selectedItem.cdExecuting?"fa fa-fw fa-spinner fa-spin fa-lg":"fa fa-fw fa-bullseye fa-lg"},initiators:{expanded:"fa fa-fw fa-user fa-lg",leaf:"fa fa-fw fa-user"},groups:{expanded:"fa fa-fw fa-users fa-lg",leaf:"fa fa-fw fa-users"},disks:{expanded:"fa fa-fw fa-hdd-o fa-lg",leaf:"fa fa-fw fa-hdd-o"},portals:{expanded:"fa fa-fw fa-server fa-lg",leaf:"fa fa-fw fa-server fa-lg"}},u=[];t.forEach(this.selectedItem.disks,function(n){var e="disk_"+n.pool+"_"+n.image;l.metadata[e]={controls:n.controls,backstore:n.backstore},["wwn","lun"].forEach(function(t){t in n&&(l.metadata[e][t]=n[t])}),u.push({value:n.pool+"/"+n.image,id:e})});var i=[];t.forEach(this.selectedItem.portals,function(l){i.push({value:l.host+":"+l.ip})});var o=[];t.forEach(this.selectedItem.clients,function(n){var u=t.cloneDeep(n.auth);n.info&&(t.extend(u,n.info),delete u.state,t.forEach(Object.keys(n.info.state),function(l){u[l.toLowerCase()]=n.info.state[l]})),l.metadata["client_"+n.client_iqn]=u;var i=[];n.luns.forEach(function(l){i.push({value:l.pool+"/"+l.image,id:"disk_"+l.pool+"_"+l.image,settings:{cssClasses:e.disks}})});var r="";n.info&&(r=Object.keys(n.info.state).includes("LOGGED_IN")?"logged_in":"logged_out"),o.push({value:n.client_iqn,status:r,id:"client_"+n.client_iqn,children:i})});var r=[];t.forEach(this.selectedItem.groups,function(l){var n=[];l.disks.forEach(function(l){n.push({value:l.pool+"/"+l.image,id:"disk_"+l.pool+"_"+l.image})});var t=[];l.members.forEach(function(l){t.push({value:l,id:"client_"+l})}),r.push({value:l.group_id,children:[{value:"Disks",children:n,settings:{selectionAllowed:!1,cssClasses:e.disks}},{value:"Initiators",children:t,settings:{selectionAllowed:!1,cssClasses:e.initiators}}]})}),this.tree={value:this.selectedItem.target_iqn,id:"root",settings:{static:!0,cssClasses:e.target},children:[{value:"Disks",children:u,settings:{selectionAllowed:!1,cssClasses:e.disks}},{value:"Portals",children:i,settings:{selectionAllowed:!1,cssClasses:e.portals}},{value:"Initiators",children:o,settings:{selectionAllowed:!1,cssClasses:e.initiators}},{value:"Groups",children:r,settings:{selectionAllowed:!1,cssClasses:e.groups}}]}},l.prototype.format=function(l){return"boolean"==typeof l?this.booleanTextPipe.transform(l):l},l.prototype.onNodeSelected=function(l){var n=this;if(l.node.id){this.title=l.node.value;var e=this.metadata[l.node.id]||{};"root"===l.node.id?(this.columns[2].isHidden=!1,this.data=t.map(this.settings.target_default_controls,function(l,u){return{displayName:u,default:l=n.format(l),current:t.isUndefined(e[u])?l:n.format(e[u])}}),this.cephIscsiConfigVersion>10&&["user","password","mutual_user","mutual_password"].forEach(function(l){n.data.push({displayName:l,default:null,current:e[l]})})):l.node.id.toString().startsWith("disk_")?(this.columns[2].isHidden=!1,this.data=t.map(this.settings.disk_default_controls[e.backstore],function(l,u){return{displayName:u,default:l=n.format(l),current:t.isUndefined(e.controls[u])?l:n.format(e.controls[u])}}),this.data.push({displayName:"backstore",default:this.iscsiBackstorePipe.transform(this.settings.default_backstore),current:this.iscsiBackstorePipe.transform(e.backstore)}),["wwn","lun"].forEach(function(l){l in e&&n.data.push({displayName:l,default:void 0,current:e[l]})})):(this.columns[2].isHidden=!0,this.data=t.map(e,function(l,e){return{displayName:e,default:void 0,current:n.format(l)}}))}else this.data=void 0;this.detailTable&&this.detailTable.updateColumns()},l}())},BH9v:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("aXbf"),o=function(){function l(l,n){this.control=l,this.formatter=n}return l.prototype.setValue=function(l){var n=this.formatter.toMilliseconds(l);this.control.control.setValue(n+" ms")},l.prototype.ngOnInit=function(){var l=this;this.setValue(this.control.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.control.value)})},l.prototype.onUpdate=function(l){this.setValue(l)},l}(),r=e("LvDl"),a=e("IzCI"),s=function(){function l(l,n,e,u){this.elementRef=l,this.control=n,this.dimlessBinaryPerSecondPipe=e,this.formatter=u,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){var l=this;this.setValue(this.el.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.el.value)})},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l,0),e=this.round(n);this.el.value=this.dimlessBinaryPerSecondPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!r.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!r.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!r.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}(),d=function(){function l(l,n){this.formatter=l,this.ngControl=n}return l.prototype.setValue=function(l){var n=this.formatter.toIops(l);this.ngControl.control.setValue(n+" IOPS")},l.prototype.ngOnInit=function(){var l=this;this.setValue(this.ngControl.value),this.ngDataReady&&this.ngDataReady.subscribe(function(){return l.setValue(l.ngControl.value)})},l.prototype.onUpdate=function(l){this.setValue(l)},l}(),c=e("Ip0R"),p=e("4HWh"),m=e("p4Cf");e("rFfW"),e("o8EM"),e.d(n,"a",function(){return f}),e.d(n,"b",function(){return _});var f=t["\u0275crt"]({encapsulation:0,styles:[[".collapsible[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}"]],data:{}});function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdMilliseconds",""],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onUpdate(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,o,[u.q,i.a],{ngDataReady:[0,"ngDataReady"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady)},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdDimlessBinaryPerSecond",""],["class","form-control"],["defaultUnit","b"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onBlur(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,s,[t.ElementRef,u.q,a.a,i.a],{ngDataReady:[0,"ngDataReady"],defaultUnit:[1,"defaultUnit"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady,"b")},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,6,"input",[["cdIops",""],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,2)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,2)._compositionEnd(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,7).onUpdate(e.target.value)&&u),u},null,null)),t["\u0275did"](2,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null),t["\u0275did"](7,81920,null,0,d,[i.a,u.q],{ngDataReady:[0,"ngDataReady"]},null)],function(l,n){var e=n.component;l(n,4,0,n.parent.context.$implicit.name),l(n,7,0,e.ngDataReady)},function(l,n){l(n,1,0,n.parent.context.$implicit.name,n.parent.context.$implicit.name,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The mininum value is 0"]))],null,null)}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),(l()(),t["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](4,null,["",""])),(l()(),t["\u0275eld"](5,0,null,null,2,"cd-helper",[],null,null,null,p.b,p.a)),t["\u0275did"](6,49152,null,0,m.a,[],null,null),(l()(),t["\u0275ted"](7,0,["",""])),(l()(),t["\u0275eld"](8,0,null,null,16,"div",[],[[8,"className",0]],null,null,null,null)),(l()(),t["\u0275eld"](9,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](10,0,null,null,7,null,null,null,null,null,null,null)),t["\u0275did"](11,16384,null,0,c.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,g)),t["\u0275did"](13,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,h)),t["\u0275did"](15,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](17,278528,null,0,c.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,c.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275eld"](18,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,3,"button",[["class","btn btn-default"],["data-toggle","button"],["title","Remove the local configuration value. The parent configuration value will be inherited and used instead."],["type","button"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.reset(l.context.$implicit.name)&&t),t},null,null)),t["\u0275did"](20,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](21,{active:0}),(l()(),t["\u0275eld"](22,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-eraser"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](24,16384,null,0,c.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,u=l(n,2,0,e.form.showError("configuration."+n.context.$implicit.name,t["\u0275nov"](n.parent.parent,0)));l(n,1,0,"form-group",u),l(n,11,0,n.context.$implicit.type),l(n,13,0,e.configurationType.milliseconds),l(n,15,0,e.configurationType.bps),l(n,17,0,e.configurationType.iops);var i=l(n,21,0,e.isDisabled(n.context.$implicit.name));l(n,20,0,"btn btn-default",i),l(n,24,0,e.form.showError("configuration."+n.context.$implicit.name,t["\u0275nov"](n.parent.parent,0),"min"))},function(l,n){l(n,3,0,n.context.$implicit.name),l(n,4,0,n.context.$implicit.displayName),l(n,7,0,n.context.$implicit.description),l(n,8,0,t["\u0275inlineInterpolate"](1,"col-sm-9 ",n.parent.context.$implicit.heading,""))})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,9,"div",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,5,"h3",[["class","page-header"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,4,"span",[["class","collapsible"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.toggleSectionVisibility(l.context.$implicit.class)&&t),t},null,null)),(l()(),t["\u0275ted"](3,null,[""," "])),(l()(),t["\u0275eld"](4,0,null,null,2,"i",[["aria-hidden","true"],["class","fa"]],null,null,null,null,null)),t["\u0275did"](5,278528,null,0,c.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](6,{"fa-plus-circle":0,"fa-minus-circle":1}),(l()(),t["\u0275eld"](7,0,null,null,2,"div",[],[[8,"className",0],[8,"hidden",0]],null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](9,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component,t=l(n,6,0,!e.sectionVisibility[n.context.$implicit.class],e.sectionVisibility[n.context.$implicit.class]);l(n,5,0,"fa",t),l(n,9,0,n.context.$implicit.options)},function(l,n){var e=n.component;l(n,3,0,n.context.$implicit.heading),l(n,7,0,t["\u0275inlineInterpolate"](1,"",n.context.$implicit.class,""),!e.sectionVisibility[n.context.$implicit.class])})}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,[["cfgFormGroup",1]],null,7,"fieldset",[],[[2,"ng-untouched",null],[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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,1).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,1).onReset()&&u),u},null,null)),t["\u0275did"](1,540672,null,0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](3,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["RBD Configuration"])),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](7,278528,null,0,c.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,1,0,e.form.get("configuration")),l(n,7,0,e.rbdConfigurationService.sections)},function(l,n){l(n,0,0,t["\u0275nov"](n,3).ngClassUntouched,t["\u0275nov"](n,3).ngClassTouched,t["\u0275nov"](n,3).ngClassPristine,t["\u0275nov"](n,3).ngClassDirty,t["\u0275nov"](n,3).ngClassValid,t["\u0275nov"](n,3).ngClassInvalid,t["\u0275nov"](n,3).ngClassPending)})}},EFGL:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("IzCI"),o=e("aXbf"),r=e("dEH0"),a=e("BQkM"),s=e("25BL"),d=e("uIqm");e("aAWM"),e("o8EM"),e("Jm/i"),e.d(n,"a",function(){return c}),e.d(n,"b",function(){return _});var c=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function p(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function m(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function f(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,e)})}function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,7,"div",[],null,null,null,null,null)),t["\u0275did"](1,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,p)),t["\u0275did"](3,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,m)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,f)),t["\u0275did"](7,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null)],function(l,n){l(n,1,0,n.context.value),l(n,3,0,"global"),l(n,5,0,"image"),l(n,7,0,"pool")},null)}function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,1),n.parent.context.value));l(n,1,0,e)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),n.parent.context.value));l(n,1,0,e)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""])),t["\u0275ppd"](2,1)],null,function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,3),n.parent.context.value));l(n,1,0,e)})}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,9,"div",[],null,null,null,null,null)),t["\u0275did"](1,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,h)),t["\u0275did"](3,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](7,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](9,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null)],function(l,n){var e=n.component;l(n,1,0,n.context.row.type),l(n,3,0,e.typeField.bps),l(n,5,0,e.typeField.milliseconds),l(n,7,0,e.typeField.iops)},null)}function _(l){return t["\u0275vid"](0,[t["\u0275pid"](0,u.TitleCasePipe,[]),t["\u0275pid"](0,i.a,[o.a]),t["\u0275pid"](0,r.a,[]),t["\u0275pid"](0,a.a,[]),t["\u0275qud"](402653184,1,{configurationSourceTpl:0}),t["\u0275qud"](402653184,2,{configurationValueTpl:0}),t["\u0275qud"](402653184,3,{poolConfTable:0}),(l()(),t["\u0275eld"](7,0,null,null,1,"cd-table",[["identifier","name"]],null,null,null,s.b,s.a)),t["\u0275did"](8,2867200,[[3,4],["poolConfTable",4]],0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"]},null),(l()(),t["\u0275and"](0,[[1,2],["configurationSourceTpl",2]],null,0,null,g)),(l()(),t["\u0275and"](0,[[2,2],["configurationValueTpl",2]],null,0,null,C))],function(l,n){var e=n.component;l(n,8,0,e.data,e.poolConfigurationColumns,"name")},null)}},Ekvf:function(l,n,e){"use strict";e.d(n,"a",function(){return d});var t=e("mrSG"),u=e("t/Na"),i=e("67Y/"),o=e("xTzq"),r=e("o8EM"),a=e("CcnG"),s=e("pL04"),d=function(){function l(l,n){this.http=l,this.rbdConfigurationService=n,this.apiPath="api/pool"}return l.prototype.create=function(l){return this.http.post(this.apiPath,l,{observe:"response"})},l.prototype.update=function(l){var n;return l.hasOwnProperty("srcpool")?(n=l.srcpool,delete l.srcpool):(n=l.pool,delete l.pool),this.http.put(this.apiPath+"/"+encodeURIComponent(n),l,{observe:"response"})},l.prototype.delete=function(l){return this.http.delete(this.apiPath+"/"+l,{observe:"response"})},l.prototype.get=function(l){return this.http.get(this.apiPath+"/"+l)},l.prototype.getList=function(){return this.http.get(this.apiPath+"?stats=true")},l.prototype.getConfiguration=function(l){var n=this;return this.http.get(this.apiPath+"/"+l+"/configuration").pipe(Object(i.a)(function(l){return l.map(function(l){return Object.assign(l,n.rbdConfigurationService.getOptionByName(l.name))})}))},l.prototype.getInfo=function(l){return this.http.get(this.apiPath+"/_info"+(l?"?pool_name="+l:""))},l.prototype.list=function(l){void 0===l&&(l=[]);var n=l.join(",");return this.http.get(this.apiPath+"?attrs="+n).toPromise().then(function(l){return l})},l.ngInjectableDef=a.defineInjectable({factory:function(){return new l(a.inject(u.c),a.inject(r.a))},token:l,providedIn:s.a}),l=t.__decorate([o.a,t.__metadata("design:paramtypes",[u.c,r.a])],l)}()},EmSq:function(l,n,e){"use strict";e.d(n,"a",function(){return i});var t=e("CcnG"),u=e("LvDl"),i=(e("Fgil"),e("aXbf"),function(){function l(l,n,e,u){this.elementRef=l,this.control=n,this.dimlessBinaryPipe=e,this.formatter=u,this.ngModelChange=new t.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){this.setValue(this.el.value)},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l),e=this.round(n);this.el.value=this.dimlessBinaryPipe.transform(e),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!u.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!u.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!u.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}())},F83c:function(l,n,e){"use strict";e.d(n,"a",function(){return d});var t=e("mrSG"),u=e("t/Na"),i=e("67Y/"),o=e("xTzq"),r=e("o8EM"),a=e("CcnG"),s=e("pL04"),d=function(){function l(l,n){this.http=l,this.rbdConfigurationService=n}return l.prototype.create=function(l){return this.http.post("api/block/image",l,{observe:"response"})},l.prototype.delete=function(l,n){return this.http.delete("api/block/image/"+l+"/"+n,{observe:"response"})},l.prototype.update=function(l,n,e){return this.http.put("api/block/image/"+l+"/"+n,e,{observe:"response"})},l.prototype.get=function(l,n){return this.http.get("api/block/image/"+l+"/"+n)},l.prototype.list=function(){var l=this;return this.http.get("api/block/image").pipe(Object(i.a)(function(n){return n.map(function(n){return n.value.map(function(n){return n.configuration?(n.configuration.map(function(n){return Object.assign(n,l.rbdConfigurationService.getOptionByName(n.name))}),n):n}),n})}))},l.prototype.copy=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/copy",e,{observe:"response"})},l.prototype.flatten=function(l,n){return this.http.post("api/block/image/"+l+"/"+n+"/flatten",null,{observe:"response"})},l.prototype.defaultFeatures=function(){return this.http.get("api/block/image/default_features")},l.prototype.createSnapshot=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/snap",{snapshot_name:e},{observe:"response"})},l.prototype.renameSnapshot=function(l,n,e,t){return this.http.put("api/block/image/"+l+"/"+n+"/snap/"+e,{new_snap_name:t},{observe:"response"})},l.prototype.protectSnapshot=function(l,n,e,t){return this.http.put("api/block/image/"+l+"/"+n+"/snap/"+e,{is_protected:t},{observe:"response"})},l.prototype.rollbackSnapshot=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/snap/"+e+"/rollback",null,{observe:"response"})},l.prototype.cloneSnapshot=function(l,n,e,t){return this.http.post("api/block/image/"+l+"/"+n+"/snap/"+e+"/clone",t,{observe:"response"})},l.prototype.deleteSnapshot=function(l,n,e){return this.http.delete("api/block/image/"+l+"/"+n+"/snap/"+e,{observe:"response"})},l.prototype.listTrash=function(){return this.http.get("api/block/image/trash/")},l.prototype.moveTrash=function(l,n,e){return this.http.post("api/block/image/"+l+"/"+n+"/move_trash",{delay:e},{observe:"response"})},l.prototype.purgeTrash=function(l){return this.http.post("api/block/image/trash/purge/?pool_name="+l,null,{observe:"response"})},l.prototype.restoreTrash=function(l,n,e){return this.http.post("api/block/image/trash/"+l+"/"+n+"/restore",{new_image_name:e},{observe:"response"})},l.prototype.removeTrash=function(l,n,e,t){return void 0===t&&(t=!1),this.http.delete("api/block/image/trash/"+l+"/"+n+"/?image_name="+e+"&force="+t,{observe:"response"})},l.ngInjectableDef=a.defineInjectable({factory:function(){return new l(a.inject(u.c),a.inject(r.a))},token:l,providedIn:s.a}),t.__decorate([t.__param(2,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"createSnapshot",null),t.__decorate([t.__param(3,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"renameSnapshot",null),t.__decorate([t.__param(3,o.b),t.__metadata("design:type",Function),t.__metadata("design:paramtypes",[Object,Object,Object,Object]),t.__metadata("design:returntype",void 0)],l.prototype,"protectSnapshot",null),l=t.__decorate([o.a,t.__metadata("design:paramtypes",[u.c,r.a])],l)}()},I4Qz:function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("gIcY"),r=e("Ip0R"),a=e("ARl4"),s=e("lqqz"),d=e("gp3X"),c=e("sb0X"),p=e("KVJa"),m=e("Z21x"),f=e("sne2"),g=e("2JDI"),h=e("F83c"),v=e("DQlY"),b=e("2EZI"),y=e("kn/O");e.d(n,"a",function(){return R});var C=t["\u0275crt"]({encapsulation:0,styles:[[".bs-datepicker-head bs-datepicker-navigation-view{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between}"]],data:{}});function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,['Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".']))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Protection has already expired. Please pick a future date or leave it empty."]))],null,null)}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,43,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Move an image to trash"])),(l()(),t["\u0275eld"](4,0,null,1,39,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,38,"form",[["class","form"],["name","moveForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,o.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,o.d,null,[o.l]),t["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,26,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,7,"p",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To move "])),(l()(),t["\u0275eld"](13,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](14,null,["","/",""])),(l()(),t["\u0275ted"](-1,null,[" to trash, click "])),(l()(),t["\u0275eld"](16,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Move Image"])),(l()(),t["\u0275ted"](-1,null,[". Optionally, you can pick an expiration date."])),(l()(),t["\u0275eld"](19,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](20,278528,null,0,r.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](21,{"has-error":0}),(l()(),t["\u0275eld"](22,0,null,null,1,"label",[["for","expires"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Protection expires at"])),(l()(),t["\u0275eld"](24,16777216,null,null,8,"input",[["bsDatepicker",""],["class","form-control"],["formControlName","expiresAt"],["placeholder","NOT PROTECTED"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,25)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,25).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,25)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,25)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,27).onChange(e)&&u),"keyup.esc"===n&&(u=!1!==t["\u0275nov"](l,27).hide()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onBlur()&&u),u},null,null)),t["\u0275did"](25,16384,null,0,o.e,[t.Renderer2,t.ElementRef,[2,o.b]],null,null),t["\u0275did"](26,737280,null,0,a.b,[a.a,t.ElementRef,t.Renderer2,t.ViewContainerRef,s.a],{bsConfig:[0,"bsConfig"],minDate:[1,"minDate"]},null),t["\u0275did"](27,16384,null,0,a.B,[a.b,a.f,t.Renderer2,t.ElementRef,t.ChangeDetectorRef],null,null),t["\u0275prd"](1024,null,o.o,function(l){return[l]},[a.B]),t["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,a.B]),t["\u0275did"](30,671744,null,0,o.j,[[3,o.d],[6,o.o],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,o.q,null,[o.j]),t["\u0275did"](32,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](34,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](36,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](37,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](38,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.moveImage()&&t),t},d.b,d.a)),t["\u0275did"](40,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Move Image"])),(l()(),t["\u0275eld"](42,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["\u0275did"](43,49152,null,0,m.a,[r.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.moveForm);var u=l(n,21,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7)));l(n,20,0,"form-group",u),l(n,26,0,e.bsConfig,e.minDate),l(n,30,0,"expiresAt"),l(n,34,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7),"format")),l(n,36,0,e.moveForm.showError("expiresAt",t["\u0275nov"](n,7),"expired")),l(n,40,0,e.moveForm),l(n,43,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,14,0,e.poolName,e.imageName),l(n,24,0,t["\u0275nov"](n,32).ngClassUntouched,t["\u0275nov"](n,32).ngClassTouched,t["\u0275nov"](n,32).ngClassPristine,t["\u0275nov"](n,32).ngClassDirty,t["\u0275nov"](n,32).ngClassValid,t["\u0275nov"](n,32).ngClassInvalid,t["\u0275nov"](n,32).ngClassPending)})}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-move-modal",[],null,null,null,I,C)),t["\u0275did"](1,114688,null,0,g.a,[h.a,v.a,b.a,y.a],null,null)],function(l,n){l(n,1,0)},null)}var R=t["\u0275ccf"]("cd-rbd-trash-move-modal",g.a,S,{},{},[])},JBea:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("vCyI");var t=function(){function l(){}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first())},l}()},"JIi+":function(l,n,e){"use strict";var t=e("CcnG"),u=e("eajB"),i=e("lqqz"),o=e("pKUh"),r=e("YAQW"),a=e("Ip0R"),s=e("25BL"),d=e("uIqm"),c=e("NUGo"),p=e("S7zO"),m=e("VTlA"),f=e("ufoC"),g=e("mSOc"),h=e("wd/R"),v=e("F/XL"),b=e("F83c"),y=e("OLbh"),C=e("0+/T"),_=e("sne2"),w=e("x38r"),I=e("vCyI"),S=e("QTAa"),R=e("kvvV"),k=e("a0VL"),F=e("Fgil"),E=e("aexS"),D=e("9nlD"),V=e("VXsX"),T=e("+lcs"),N=function(){return function(l,n){this.i18n=l,this.create={permission:"create",icon:"fa-plus",name:n.CREATE},this.rename={permission:"update",icon:"fa-pencil",name:n.RENAME},this.protect={permission:"update",icon:"fa-lock",visible:function(l){return l.hasSingleSelection&&!l.first().is_protected},name:n.PROTECT},this.unprotect={permission:"update",icon:"fa-unlock",visible:function(l){return l.hasSingleSelection&&l.first().is_protected},name:n.UNPROTECT},this.clone={permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-clone",name:n.CLONE},this.copy={permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-copy",name:n.COPY},this.rollback={permission:"update",icon:"fa-undo",name:n.ROLLBACK},this.deleteSnap={permission:"delete",icon:"fa-times",disable:function(l){var n=l.first();return!l.hasSingleSelection||n.cdExecuting||n.is_protected},name:n.DELETE},this.ordering=[this.create,this.rename,this.protect,this.unprotect,this.clone,this.copy,this.rollback,this.deleteSnap]}}(),P=function(){return function(){}}(),x=function(){function l(l,n,e,t,u,i,o,r,a,s,d){var c=this;this.authStorageService=l,this.modalService=n,this.dimlessBinaryPipe=e,this.cdDatePipe=t,this.rbdService=u,this.taskManagerService=i,this.notificationService=o,this.summaryService=r,this.taskListService=a,this.i18n=s,this.actionLabels=d,this.snapshots=[],this.selection=new I.a,this.builders={"rbd/snap/create":function(l){var n=new P;return n.name=l.snapshot_name,n}},this.permission=this.authStorageService.getPermissions().rbdImage;var p=new N(this.i18n,this.actionLabels);p.create.click=function(){return c.openCreateSnapshotModal()},p.rename.click=function(){return c.openEditSnapshotModal()},p.protect.click=function(){return c.toggleProtection()},p.unprotect.click=function(){return c.toggleProtection()};var m=function(){return c.selection.first()&&encodeURIComponent(c.poolName)+"/"+encodeURIComponent(c.rbdName)+"/"+encodeURIComponent(c.selection.first().name)};p.clone.routerLink=function(){return"/block/rbd/clone/"+m()},p.copy.routerLink=function(){return"/block/rbd/copy/"+m()},p.rollback.click=function(){return c.rollbackModal()},p.deleteSnap.click=function(){return c.deleteSnapshotModal()},this.tableActions=p.ordering}return l.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Name"),prop:"name",cellTransformation:w.a.executing,flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("State"),prop:"is_protected",flexGrow:1,cellClass:"text-center",cellTemplate:this.protectTpl},{name:this.i18n("Created"),prop:"timestamp",flexGrow:1,pipe:this.cdDatePipe}]},l.prototype.ngOnChanges=function(){var l=this;this.taskListService.init(function(){return Object(v.a)(l.snapshots)},null,function(n){return l.data=n},function(){return l.data=l.snapshots},function(n){return["rbd/snap/create","rbd/snap/delete","rbd/snap/edit","rbd/snap/rollback"].includes(n.name)&&l.poolName===n.metadata.pool_name&&l.rbdName===n.metadata.image_name},function(l,n){return l.name===n.metadata.snapshot_name},this.builders)},l.prototype.openSnapshotModal=function(l,n){var e=this;void 0===n&&(n=null),this.modalRef=this.modalService.show(T.a),this.modalRef.content.poolName=this.poolName,this.modalRef.content.imageName=this.rbdName,n?this.modalRef.content.setEditing():n=this.rbdName+"_"+h().toISOString(!0),this.modalRef.content.setSnapName(n),this.modalRef.content.onSubmit.subscribe(function(n){var t=new S.a;t.name=l,t.metadata={image_name:e.rbdName,pool_name:e.poolName,snapshot_name:n},e.summaryService.addRunningTask(t),e.ngOnChanges()})},l.prototype.openCreateSnapshotModal=function(){this.openSnapshotModal("rbd/snap/create")},l.prototype.openEditSnapshotModal=function(){this.openSnapshotModal("rbd/snap/edit",this.selection.first().name)},l.prototype.toggleProtection=function(){var l=this,n=this.selection.first().name,e=this.selection.first().is_protected,t=new R.a;t.name="rbd/snap/edit",t.metadata={pool_name:this.poolName,image_name:this.rbdName,snapshot_name:n},this.rbdService.protectSnapshot(this.poolName,this.rbdName,n,!e).toPromise().then(function(){var n=new S.a;n.name=t.name,n.metadata=t.metadata,l.summaryService.addRunningTask(n),l.ngOnChanges(),l.taskManagerService.subscribe(t.name,t.metadata,function(n){l.notificationService.notifyTask(n)})})},l.prototype._asyncTask=function(l,n,e){var t=this,u=new R.a;u.name=n,u.metadata={pool_name:this.poolName,image_name:this.rbdName,snapshot_name:e},this.rbdService[l](this.poolName,this.rbdName,e).toPromise().then(function(){var l=new S.a;l.name=u.name,l.metadata=u.metadata,t.summaryService.addRunningTask(l),t.modalRef.hide(),t.ngOnChanges(),t.taskManagerService.subscribe(l.name,l.metadata,function(l){t.notificationService.notifyTask(l)})}).catch(function(){t.modalRef.content.stopLoadingSpinner()})},l.prototype.rollbackModal=function(){var l=this,n=this.selection.selected[0].name,e={titleText:this.i18n("RBD snapshot rollback"),buttonText:this.i18n("Rollback"),bodyTpl:this.rollbackTpl,bodyData:{snapName:this.poolName+"/"+this.rbdName+"@"+n},onSubmit:function(){l._asyncTask("rollbackSnapshot","rbd/snap/rollback",n)}};this.modalRef=this.modalService.show(y.a,{initialState:e})},l.prototype.deleteSnapshotModal=function(){var l=this,n=this.selection.selected[0].name;this.modalRef=this.modalService.show(C.a,{initialState:{itemDescription:this.i18n("RBD snapshot"),itemNames:[n],submitAction:function(){return l._asyncTask("deleteSnapshot","rbd/snap/delete",n)}}})},l.prototype.updateSelection=function(l){this.selection=l},l}(),O=e("DQlY"),q=e("Jm/i"),M=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function A(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-success"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["PROTECTED"]))],null,null)}function B(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-info"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["UNPROTECTED"]))],null,null)}function j(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,A)),t["\u0275did"](1,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,B)),t["\u0275did"](3,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)},null)}function U(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["You are about to rollback"])),(l()(),t["\u0275eld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](3,null,["",""])),(l()(),t["\u0275ted"](-1,null,[".\n"]))],null,function(l,n){l(n,3,0,n.context.$implicit.snapName)})}function G(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{nameTpl:0}),t["\u0275qud"](402653184,2,{protectTpl:0}),t["\u0275qud"](402653184,3,{rollbackTpl:0}),(l()(),t["\u0275eld"](3,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,e){var t=!0;return"updateSelection"===n&&(t=!1!==l.component.updateSelection(e)&&t),t},s.b,s.a)),t["\u0275did"](4,2867200,null,0,d.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),t["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,c.b,c.a)),t["\u0275did"](6,114688,null,0,p.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["\u0275and"](0,[[2,2],["protectTpl",2]],null,0,null,j)),(l()(),t["\u0275and"](0,[[3,2],["rollbackTpl",2]],null,0,null,U))],function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex","single"),l(n,6,0,e.permission,e.selection,e.tableActions)},null)}var L=e("EFGL"),z=e("aAWM"),W=e("aXbf"),$=e("o8EM"),X=e("nSDx"),Y=e("o4+5"),K=e("JBea");e.d(n,"b",function(){return J}),e.d(n,"c",function(){return sl}),e.d(n,"a",function(){return cl});var J=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Only available for RBD images with "])),(l()(),t["\u0275eld"](2,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["fast-diff"])),(l()(),t["\u0275ted"](-1,null,[" enabled"]))],null,null)}function Q(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["",""]))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function H(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"span",[["class","text-muted"],["placement","right"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["\u0275ted"](-1,null,["N/A"]))],function(l,n){l(n,2,0,t["\u0275nov"](n.parent.parent,5),"right")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function ll(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[" "," "])),t["\u0275ppd"](2,1)],null,function(l,n){var e=n.component,u=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),e.selectedItem.disk_usage));l(n,1,0,u)})}function nl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"span",[["class","text-muted"],["placement","right"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(l()(),t["\u0275ted"](-1,null,["N/A"]))],function(l,n){l(n,2,0,t["\u0275nov"](n.parent.parent,5),"right")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function el(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[" "," "])),t["\u0275ppd"](2,1)],null,function(l,n){var e=n.component,u=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent.parent,2),e.selectedItem.total_disk_usage));l(n,1,0,u)})}function tl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,[""," /"," @",""]))],null,function(l,n){var e=n.component;l(n,1,0,e.selectedItem.parent.pool_name,e.selectedItem.parent.image_name,e.selectedItem.parent.snap_name)})}function ul(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["-"]))],null,null)}function il(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,105,"tabset",[],[[2,"tab-container",null]],null,null,o.b,o.a)),t["\u0275did"](1,180224,null,0,r.d,[r.e,t.Renderer2],null,null),(l()(),t["\u0275eld"](2,0,null,0,94,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](3,212992,null,0,r.b,[r.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](4,0,null,null,92,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,91,"tbody",[],null,null,null,null,null)),(l()(),t["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](7,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Name"])),(l()(),t["\u0275eld"](9,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](10,null,["",""])),(l()(),t["\u0275eld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pool"])),(l()(),t["\u0275eld"](14,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](15,null,["",""])),(l()(),t["\u0275eld"](16,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Data Pool"])),(l()(),t["\u0275eld"](19,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](20,null,["",""])),t["\u0275ppd"](21,1),(l()(),t["\u0275eld"](22,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](23,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Created"])),(l()(),t["\u0275eld"](25,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](26,null,["",""])),t["\u0275ppd"](27,1),(l()(),t["\u0275eld"](28,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](29,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Size"])),(l()(),t["\u0275eld"](31,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](32,null,["",""])),t["\u0275ppd"](33,1),(l()(),t["\u0275eld"](34,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](35,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Objects"])),(l()(),t["\u0275eld"](37,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](38,null,["",""])),t["\u0275ppd"](39,1),(l()(),t["\u0275eld"](40,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](41,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Object size"])),(l()(),t["\u0275eld"](43,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](44,null,["",""])),t["\u0275ppd"](45,1),(l()(),t["\u0275eld"](46,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](47,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Features"])),(l()(),t["\u0275eld"](49,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,Q)),t["\u0275did"](51,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275eld"](52,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](53,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Provisioned"])),(l()(),t["\u0275eld"](55,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,H)),t["\u0275did"](57,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,ll)),t["\u0275did"](59,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](60,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](61,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Total provisioned"])),(l()(),t["\u0275eld"](63,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,nl)),t["\u0275did"](65,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,el)),t["\u0275did"](67,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](68,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](69,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Striping unit"])),(l()(),t["\u0275eld"](71,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](72,null,["",""])),t["\u0275ppd"](73,1),(l()(),t["\u0275eld"](74,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](75,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Striping count"])),(l()(),t["\u0275eld"](77,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](78,null,["",""])),(l()(),t["\u0275eld"](79,0,null,null,7,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](80,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Parent"])),(l()(),t["\u0275eld"](82,0,null,null,4,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,tl)),t["\u0275did"](84,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,ul)),t["\u0275did"](86,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](87,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](88,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Block name prefix"])),(l()(),t["\u0275eld"](90,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](91,null,["",""])),(l()(),t["\u0275eld"](92,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),t["\u0275eld"](93,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Order"])),(l()(),t["\u0275eld"](95,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),t["\u0275ted"](96,null,["",""])),(l()(),t["\u0275eld"](97,0,null,0,4,"tab",[["heading","Snapshots"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](98,212992,null,0,r.b,[r.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](99,0,null,null,2,"cd-rbd-snapshot-list",[],null,null,null,G,M)),t["\u0275prd"](131584,null,m.a,m.a,[f.a,g.a]),t["\u0275did"](101,638976,null,0,x,[E.a,O.b,F.a,k.a,b.a,V.a,D.a,g.a,m.a,q.a,_.b],{snapshots:[0,"snapshots"],poolName:[1,"poolName"],rbdName:[2,"rbdName"]},null),(l()(),t["\u0275eld"](102,0,null,0,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](103,212992,null,0,r.b,[r.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](104,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,L.b,L.a)),t["\u0275did"](105,638976,null,0,z.a,[W.a,$.a,q.a],{data:[0,"data"]},null)],function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,51,0,e.selectedItem.features_name),l(n,57,0,-1===(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,59,0,-1!==(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,65,0,-1===(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,67,0,-1!==(null==e.selectedItem.features_name?null:e.selectedItem.features_name.indexOf("fast-diff"))),l(n,84,0,e.selectedItem.parent),l(n,86,0,!e.selectedItem.parent),l(n,98,0,"Snapshots"),l(n,101,0,e.selectedItem.snapshots,e.selectedItem.pool_name,e.selectedItem.name),l(n,103,0,"Configuration"),l(n,105,0,e.selectedItem.configuration)},function(l,n){var e=n.component;l(n,0,0,t["\u0275nov"](n,1).clazz),l(n,2,0,t["\u0275nov"](n,3).id,t["\u0275nov"](n,3).active,t["\u0275nov"](n,3).addClass),l(n,10,0,e.selectedItem.name),l(n,15,0,e.selectedItem.pool_name);var u=t["\u0275unv"](n,20,0,l(n,21,0,t["\u0275nov"](n.parent,0),e.selectedItem.data_pool));l(n,20,0,u);var i=t["\u0275unv"](n,26,0,l(n,27,0,t["\u0275nov"](n.parent,1),e.selectedItem.timestamp));l(n,26,0,i);var o=t["\u0275unv"](n,32,0,l(n,33,0,t["\u0275nov"](n.parent,2),e.selectedItem.size));l(n,32,0,o);var r=t["\u0275unv"](n,38,0,l(n,39,0,t["\u0275nov"](n.parent,3),e.selectedItem.num_objs));l(n,38,0,r);var a=t["\u0275unv"](n,44,0,l(n,45,0,t["\u0275nov"](n.parent,2),e.selectedItem.obj_size));l(n,44,0,a);var s=t["\u0275unv"](n,72,0,l(n,73,0,t["\u0275nov"](n.parent,2),e.selectedItem.stripe_unit));l(n,72,0,s),l(n,78,0,e.selectedItem.stripe_count),l(n,91,0,e.selectedItem.block_name_prefix),l(n,96,0,e.selectedItem.order),l(n,97,0,t["\u0275nov"](n,98).id,t["\u0275nov"](n,98).active,t["\u0275nov"](n,98).addClass),l(n,102,0,t["\u0275nov"](n,103).id,t["\u0275nov"](n,103).active,t["\u0275nov"](n,103).addClass)})}function ol(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,16777216,null,null,2,"strong",[["tooltip","This setting overrides the global value"]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](2,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"]},null),(l()(),t["\u0275ted"](-1,null,["Image"])),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,2,0,"This setting overrides the global value")},function(l,n){l(n,1,0,t["\u0275nov"](n,2).ariaDescribedby)})}function rl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,16777216,null,null,2,"span",[["tooltip","This is the global value. No value for this option has been set for this image."]],[[1,"aria-describedby",0]],null,null,null,null)),t["\u0275did"](1,212992,null,0,u.c,[t.ViewContainerRef,t.Renderer2,t.ElementRef,i.a,u.a],{tooltip:[0,"tooltip"]},null),(l()(),t["\u0275ted"](-1,null,["Global"])),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"This is the global value. No value for this option has been set for this image.")},function(l,n){l(n,0,0,t["\u0275nov"](n,1).ariaDescribedby)})}function al(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,ol)),t["\u0275did"](1,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(l()(),t["\u0275and"](0,[["global",2]],null,0,null,rl))],function(l,n){l(n,1,0,n.context.value-0,t["\u0275nov"](n,2))},null)}function sl(l){return t["\u0275vid"](0,[t["\u0275pid"](0,X.a,[]),t["\u0275pid"](0,k.a,[a.DatePipe]),t["\u0275pid"](0,F.a,[W.a]),t["\u0275pid"](0,Y.a,[W.a]),t["\u0275qud"](402653184,1,{poolConfigurationSourceTpl:0}),(l()(),t["\u0275and"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,Z)),(l()(),t["\u0275and"](16777216,null,null,1,null,il)),t["\u0275did"](7,16384,null,0,a.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,[[1,2],["poolConfigurationSourceTpl",2]],null,0,null,al))],function(l,n){var e=n.component;l(n,7,0,null==e.selection?null:e.selection.hasSingleSelection)},null)}function dl(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-details",[],null,null,null,sl,J)),t["\u0275did"](1,573440,null,0,K.a,[],null,null)],null,null)}var cl=t["\u0275ccf"]("cd-rbd-details",K.a,dl,{selection:"selection",images:"images"},{},[])},L4us:function(l,n,e){"use strict";var t=e("gIcY"),u=(e("XED3"),e("QFaf")),i=e("kvvV"),o=(e("kn/O"),function(){return function(){}}());e.d(n,"a",function(){return r});var r=function(){function l(l,n,e){this.modalRef=l,this.rbdMirroringService=n,this.taskWrapper=e,this.bsConfig={containerClass:"theme-default"},this.createForm()}return l.prototype.createForm=function(){this.editPeerForm=new u.a({clusterName:new t.i("",{validators:[t.A.required,this.validateClusterName]}),clientID:new t.i("",{validators:[t.A.required,this.validateClientID]}),monAddr:new t.i("",{validators:[this.validateMonAddr]}),key:new t.i("",{validators:[this.validateKey]})})},l.prototype.ngOnInit=function(){var l=this;this.pattern=this.poolName+"/"+this.peerUUID,"edit"===this.mode&&this.rbdMirroringService.getPeer(this.poolName,this.peerUUID).subscribe(function(n){l.setResponse(n)})},l.prototype.validateClusterName=function(l){if(!l.value.match(/^[\w\-_]*$/))return{invalidClusterName:{value:l.value}}},l.prototype.validateClientID=function(l){if(!l.value.match(/^(?!client\.)[\w\-_.]*$/))return{invalidClientID:{value:l.value}}},l.prototype.validateMonAddr=function(l){if(!l.value.match(/^[,; ]*([\w.\-_\[\]]+(:[\d]+)?[,; ]*)*$/))return{invalidMonAddr:{value:l.value}}},l.prototype.validateKey=function(l){try{if(""===l.value||atob(l.value))return null}catch(n){}return{invalidKey:{value:l.value}}},l.prototype.setResponse=function(l){this.response=l,this.editPeerForm.get("clusterName").setValue(l.cluster_name),this.editPeerForm.get("clientID").setValue(l.client_id),this.editPeerForm.get("monAddr").setValue(l.mon_host),this.editPeerForm.get("key").setValue(l.key)},l.prototype.update=function(){var l=this,n=new o;n.cluster_name=this.editPeerForm.getValue("clusterName"),n.client_id=this.editPeerForm.getValue("clientID"),n.mon_host=this.editPeerForm.getValue("monAddr"),n.key=this.editPeerForm.getValue("key"),this.taskWrapper.wrapTaskAroundCall("edit"===this.mode?{task:new i.a("rbd/mirroring/peer/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePeer(this.poolName,this.peerUUID,n)}:{task:new i.a("rbd/mirroring/peer/add",{pool_name:this.poolName}),call:this.rbdMirroringService.addPeer(this.poolName,n)}).subscribe(void 0,function(){return l.editPeerForm.setErrors({cdSubmitButton:!0})},function(){l.rbdMirroringService.refresh(),l.modalRef.hide()})},l}()},MyVl:function(l,n,e){"use strict";var t,u=e("CcnG"),i=e("gIcY"),o=e("LvDl"),r=e("svcd"),a=e("15JJ"),s=(e("Ekvf"),e("F83c"),e("sne2"),e("QFaf")),d=e("PhyI"),c=e("kvvV"),p=(e("Fgil"),e("aexS"),e("aXbf"),e("kn/O"),function(){return function(){this.features=[]}}()),m=function(){return function(){this.features=[]}}(),f=e("mrSG"),g=function(l){function n(){var n=null!==l&&l.apply(this,arguments)||this;return n.features=[],n}return f.__extends(n,l),n}(function(){return function(){}}()),h=function(){return function(){this.features=[]}}();!function(l){l.editing="editing",l.cloning="cloning",l.copying="copying"}(t||(t={})),e.d(n,"a",function(){return v});var v=function(){function l(l,n,e,i,o,a,s,d,c,p){this.authStorageService=l,this.route=n,this.poolService=e,this.rbdService=i,this.formatter=o,this.taskWrapper=a,this.dimlessBinaryPipe=s,this.i18n=d,this.actionLabels=c,this.router=p,this.pools=null,this.allPools=null,this.dataPools=null,this.allDataPools=null,this.featuresList=[],this.initializeConfigData=new u.EventEmitter,this.advancedEnabled=!1,this.rbdFormMode=t,this.defaultObjectSize="4 MiB",this.objectSizes=["4 KiB","8 KiB","16 KiB","32 KiB","64 KiB","128 KiB","256 KiB","512 KiB","1 MiB","2 MiB","4 MiB","8 MiB","16 MiB","32 MiB"],this.rbdImage=new r.a,this.poolPermission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("RBD"),this.features={"deep-flatten":{desc:this.i18n("Deep flatten"),requires:null,allowEnable:!1,allowDisable:!0},layering:{desc:this.i18n("Layering"),requires:null,allowEnable:!1,allowDisable:!1},"exclusive-lock":{desc:this.i18n("Exclusive lock"),requires:null,allowEnable:!0,allowDisable:!0},"object-map":{desc:this.i18n("Object map (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},journaling:{desc:this.i18n("Journaling (requires exclusive-lock)"),requires:"exclusive-lock",allowEnable:!0,allowDisable:!0,initDisabled:!0},"fast-diff":{desc:this.i18n("Fast diff (interlocked with object-map)"),requires:"object-map",allowEnable:!0,allowDisable:!0,interlockedWith:"object-map",initDisabled:!0}},this.featuresList=this.objToArray(this.features),this.createForm()}return l.prototype.objToArray=function(l){return o.map(l,function(l,n){return Object.assign(l,{key:n})})},l.prototype.createForm=function(){this.rbdForm=new s.a({parent:new i.i(""),name:new i.i("",{validators:[i.A.required,i.A.pattern(/^[^@\/]+?$/)]}),pool:new i.i(null,{validators:[i.A.required]}),useDataPool:new i.i(!1),dataPool:new i.i(null),size:new i.i(null,{updateOn:"blur"}),obj_size:new i.i(this.defaultObjectSize),features:new s.a(this.featuresList.reduce(function(l,n){return l[n.key]=new i.i({value:!1,disabled:!!n.initDisabled}),l},{})),stripingUnit:new i.i(null),stripingCount:new i.i(null,{updateOn:"blur"})},this.validateRbdForm(this.formatter))},l.prototype.disableForEdit=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("pool").disable(),this.rbdForm.get("useDataPool").disable(),this.rbdForm.get("dataPool").disable(),this.rbdForm.get("obj_size").disable(),this.rbdForm.get("stripingUnit").disable(),this.rbdForm.get("stripingCount").disable()},l.prototype.disableForClone=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()},l.prototype.disableForCopy=function(){this.rbdForm.get("parent").disable(),this.rbdForm.get("size").disable()},l.prototype.ngOnInit=function(){var l=this;this.router.url.startsWith("/block/rbd/edit")?(this.mode=this.rbdFormMode.editing,this.action=this.actionLabels.EDIT,this.disableForEdit()):this.router.url.startsWith("/block/rbd/clone")?(this.mode=this.rbdFormMode.cloning,this.disableForClone(),this.action=this.actionLabels.CLONE):this.router.url.startsWith("/block/rbd/copy")?(this.mode=this.rbdFormMode.copying,this.action=this.actionLabels.COPY,this.disableForCopy()):this.action=this.actionLabels.CREATE,this.mode===this.rbdFormMode.editing||this.mode===this.rbdFormMode.cloning||this.mode===this.rbdFormMode.copying?this.route.params.subscribe(function(n){var e=decodeURIComponent(n.pool),t=decodeURIComponent(n.name);n.snap&&(l.snapName=decodeURIComponent(n.snap)),l.rbdService.get(e,t).subscribe(function(n){l.setResponse(n,l.snapName),l.rbdImage.next(n)})}):this.rbdService.defaultFeatures().subscribe(function(n){l.setFeatures(n)}),this.mode!==this.rbdFormMode.editing&&this.poolPermission.read&&this.poolService.list(["pool_name","type","flags_names","application_metadata"]).then(function(n){for(var e=[],t=[],u=0,i=n;u<i.length;u++){var r=i[u];-1!==o.indexOf(r.application_metadata,"rbd")&&(r.pool_name.includes("/")||("replicated"===r.type?(e.push(r),t.push(r)):"erasure"===r.type&&-1!==r.flags_names.indexOf("ec_overwrites")&&t.push(r)))}if(l.pools=e,l.allPools=e,l.dataPools=t,l.allDataPools=t,1===l.pools.length){var a=l.pools[0].pool_name;l.rbdForm.get("pool").setValue(a),l.onPoolChange(a)}}),o.each(this.features,function(n){l.rbdForm.get("features").get(n.key).valueChanges.subscribe(function(e){return l.featureFormUpdate(n.key,e)})})},l.prototype.onPoolChange=function(l){var n=this.allDataPools.filter(function(n){return n.pool_name!==l});this.rbdForm.getValue("dataPool")===l&&this.rbdForm.get("dataPool").setValue(null),this.dataPools=n},l.prototype.onUseDataPoolChange=function(){this.rbdForm.getValue("useDataPool")||(this.rbdForm.get("dataPool").setValue(null),this.onDataPoolChange(null))},l.prototype.onDataPoolChange=function(l){var n=this.allPools.filter(function(n){return n.pool_name!==l});this.rbdForm.getValue("pool")===l&&this.rbdForm.get("pool").setValue(null),this.pools=n},l.prototype.validateRbdForm=function(l){var n=this;return function(e){var t=e.get("useDataPool"),u=e.get("dataPool"),i=null;t.value&&null==u.value&&(i={required:!0}),u.setErrors(i);var o=e.get("size"),r=e.get("obj_size"),a=l.toBytes(null!=r.value?r.value:n.defaultObjectSize),s=e.get("stripingCount"),d=null!=s.value?s.value:1,c=null;null===o.value?c={required:!0}:d*a>l.toBytes(o.value)&&(c={invalidSizeObject:!0}),o.setErrors(c);var p=e.get("stripingUnit"),m=null;null===p.value&&null!==s.value?m={required:!0}:null!==p.value&&l.toBytes(p.value)>a&&(m={invalidStripingUnit:!0}),p.setErrors(m);var f=null;return null===s.value&&null!==p.value?f={required:!0}:d<1&&(f={min:!0}),s.setErrors(f),null}},l.prototype.getDependendChildFeatures=function(l){return o.filter(this.features,function(n){return n.requires===l})||[]},l.prototype.deepBoxCheck=function(l,n){var e=this;this.getDependendChildFeatures(l).forEach(function(l){var t=e.rbdForm.get(l.key);n?t.enable({emitEvent:!1}):(t.disable({emitEvent:!1}),t.setValue(!1,{emitEvent:!1}),e.deepBoxCheck(l.key,n));var u=e.rbdForm.get("features");e.mode===e.rbdFormMode.editing&&u.get(l.key).enabled&&((-1===e.response.features_name.indexOf(l.key)||l.allowDisable)&&(-1!==e.response.features_name.indexOf(l.key)||l.allowEnable)||u.get(l.key).disable())})},l.prototype.interlockCheck=function(l,n){var e=this,t=this.featuresList.find(function(n){return n.key===l});if(this.response){var u=null!=t.interlockedWith,i=this.featuresList.find(function(l){return l.interlockedWith===t.key}),r=!!this.response.features_name.find(function(l){return l===t.key});if(u){if(r!==!!this.response.features_name.find(function(l){return l===t.interlockedWith}))return}else if(i&&!!this.response.features_name.find(function(l){return l===i.key})!==r)return}n?o.filter(this.features,function(n){return n.interlockedWith===l}).forEach(function(l){return e.rbdForm.get(l.key).setValue(!0,{emitEvent:!1})}):t.interlockedWith&&this.rbdForm.get("features").get(t.interlockedWith).setValue(!1)},l.prototype.featureFormUpdate=function(l,n){if(n){var e=this.features[l].requires;if(e&&!this.rbdForm.getValue(e))return void this.rbdForm.get("features."+l).setValue(!1)}this.deepBoxCheck(l,n),this.interlockCheck(l,n)},l.prototype.setFeatures=function(l){var n=this,e=this.rbdForm.get("features");o.forIn(this.features,function(t){-1!==l.indexOf(t.key)&&e.get(t.key).setValue(!0),n.featureFormUpdate(t.key,e.get(t.key).value)})},l.prototype.setResponse=function(l,n){if(this.response=l,this.mode===this.rbdFormMode.cloning)this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name+"@"+n);else if(this.mode===this.rbdFormMode.copying)n?this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name+"@"+n):this.rbdForm.get("parent").setValue(l.pool_name+"/"+l.name);else if(l.parent){var e=l.parent;this.rbdForm.get("parent").setValue(e.pool_name+"/"+e.image_name+"@"+e.snap_name)}this.mode===this.rbdFormMode.editing&&this.rbdForm.get("name").setValue(l.name),this.rbdForm.get("pool").setValue(l.pool_name),l.data_pool&&(this.rbdForm.get("useDataPool").setValue(!0),this.rbdForm.get("dataPool").setValue(l.data_pool)),this.rbdForm.get("size").setValue(this.dimlessBinaryPipe.transform(l.size)),this.rbdForm.get("obj_size").setValue(this.dimlessBinaryPipe.transform(l.obj_size)),this.setFeatures(l.features_name),this.rbdForm.get("stripingUnit").setValue(this.dimlessBinaryPipe.transform(l.stripe_unit)),this.rbdForm.get("stripingCount").setValue(l.stripe_count),this.initializeConfigData.emit({initialData:this.response.configuration,sourceType:d.a.image})},l.prototype.createRequest=function(){var l=this,n=new g;return n.pool_name=this.rbdForm.getValue("pool"),n.name=this.rbdForm.getValue("name"),n.size=this.formatter.toBytes(this.rbdForm.getValue("size")),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(),n},l.prototype.createAction=function(){var l=this.createRequest();return this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/create",{pool_name:l.pool_name,image_name:l.name}),call:this.rbdService.create(l)})},l.prototype.editRequest=function(){var l=this,n=new h;return n.name=this.rbdForm.getValue("name"),n.size=this.formatter.toBytes(this.rbdForm.getValue("size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.configuration=this.getDirtyConfigurationValues(),n},l.prototype.cloneRequest=function(){var l=this,n=new p;return n.child_pool_name=this.rbdForm.getValue("pool"),n.child_image_name=this.rbdForm.getValue("name"),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(!0,d.a.image),n},l.prototype.editAction=function(){return this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/edit",{pool_name:this.response.pool_name,image_name:this.response.name}),call:this.rbdService.update(this.response.pool_name,this.response.name,this.editRequest())})},l.prototype.cloneAction=function(){var l=this.cloneRequest();return this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/clone",{parent_pool_name:this.response.pool_name,parent_image_name:this.response.name,parent_snap_name:this.snapName,child_pool_name:l.child_pool_name,child_image_name:l.child_image_name}),call:this.rbdService.cloneSnapshot(this.response.pool_name,this.response.name,this.snapName,l)})},l.prototype.copyRequest=function(){var l=this,n=new m;return this.snapName&&(n.snapshot_name=this.snapName),n.dest_pool_name=this.rbdForm.getValue("pool"),n.dest_image_name=this.rbdForm.getValue("name"),n.obj_size=this.formatter.toBytes(this.rbdForm.getValue("obj_size")),o.forIn(this.features,function(e){l.rbdForm.getValue(e.key)&&n.features.push(e.key)}),n.stripe_unit=this.formatter.toBytes(this.rbdForm.getValue("stripingUnit")),n.stripe_count=this.rbdForm.getValue("stripingCount"),n.data_pool=this.rbdForm.getValue("dataPool"),n.configuration=this.getDirtyConfigurationValues(!0,d.a.image),n},l.prototype.copyAction=function(){var l=this.copyRequest();return this.taskWrapper.wrapTaskAroundCall({task:new c.a("rbd/copy",{src_pool_name:this.response.pool_name,src_image_name:this.response.name,dest_pool_name:l.dest_pool_name,dest_image_name:l.dest_image_name}),call:this.rbdService.copy(this.response.pool_name,this.response.name,l)})},l.prototype.submit=function(){var l=this;this.mode||this.rbdImage.next("create"),this.rbdImage.complete(),this.rbdImage.pipe(Object(a.a)(function(){return l.mode===l.rbdFormMode.editing?l.editAction():l.mode===l.rbdFormMode.cloning?l.cloneAction():l.mode===l.rbdFormMode.copying?l.copyAction():l.createAction()})).subscribe(function(){},function(){return l.rbdForm.setErrors({cdSubmitButton:!0})},function(){return l.router.navigate(["/block/rbd"])})},l}()},OcYo:function(l,n,e){"use strict";e.d(n,"a",function(){return t});var t=function(){function l(l,n,e){this.elementRef=l,this.renderer=n,this.toastr=e}return l.prototype.ngOnInit=function(){var l=this.renderer.createElement("i");this.renderer.addClass(l,"icon-prepend"),this.renderer.addClass(l,"fa"),this.renderer.addClass(l,"fa-clipboard"),this.renderer.appendChild(this.elementRef.nativeElement,l)},l.prototype.getInputElement=function(){return document.getElementById(this.cdCopy2ClipboardButton)},l.prototype.onClick=function(){try{var l=document.createElement("input");l.value=this.getInputElement().value,document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),this.toastr.success("Copied text to the clipboard successfully.")}catch(n){this.toastr.error("Failed to copy text to the clipboard.")}},l}()},PhyI:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e.d(n,"b",function(){return u});var t=function(l){return l[l.global=0]="global",l[l.pool=1]="pool",l[l.image=2]="image",l}({}),u=function(l){return l[l.bps=0]="bps",l[l.iops=1]="iops",l[l.milliseconds=2]="milliseconds",l}({})},RIVN:function(l,n,e){"use strict";var t=e("CcnG"),u=e("C6Ij"),i=e("AWcq"),o=e("Ip0R"),r=function(){function l(){}return l.prototype.transform=function(l){return"warning"===l?"label label-warning":"error"===l?"label label-danger":"success"===l?"label label-success":"label label-info"},l}(),a=e("25BL"),s=e("uIqm"),d=e("XED3"),c=e("85J/"),p=function(){function l(l,n,e){this.rbdMirroringService=l,this.cephShortVersionPipe=n,this.i18n=e}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{prop:"instance_id",name:this.i18n("Instance"),flexGrow:2},{prop:"id",name:this.i18n("ID"),flexGrow:2},{prop:"server_hostname",name:this.i18n("Hostname"),flexGrow:2},{prop:"version",name:this.i18n("Version"),pipe:this.cephShortVersionPipe,flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.data=n.content_data.daemons)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l}(),m=e("Jm/i"),f=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.health_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function h(l){return t["\u0275vid"](0,[t["\u0275pid"](0,r,[]),t["\u0275qud"](402653184,1,{healthTmpl:0}),(l()(),t["\u0275eld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},a.b,a.a)),t["\u0275did"](3,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275and"](0,[[1,2],["healthTmpl",2]],null,0,null,g))],function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",0)},null)}var v=e("NUGo"),b=e("S7zO"),y=e("6blF"),C=e("0+/T"),_=e("vCyI"),w=e("kvvV"),I=e("aexS"),S=e("kn/O"),R=e("aa9H"),k=e("L4us"),F=function(){function l(l,n,e,t,u){var i=this;this.authStorageService=l,this.rbdMirroringService=n,this.modalService=e,this.taskWrapper=t,this.i18n=u,this.selection=new _.a,this.data=[],this.permission=this.authStorageService.getPermissions().rbdMirroring;var o={permission:"update",icon:"fa-edit",click:function(){return i.editModeModal()},name:this.i18n("Edit Mode"),canBePrimary:function(){return!0}},r={permission:"create",icon:"fa-plus",name:this.i18n("Add Peer"),click:function(){return i.editPeersModal("add")},disable:function(){return!i.selection.first()||"disabled"===i.selection.first().mirror_mode},visible:function(){return!i.getPeerUUID()},canBePrimary:function(){return!1}},a={permission:"update",icon:"fa-exchange",name:this.i18n("Edit Peer"),click:function(){return i.editPeersModal("edit")},visible:function(){return!!i.getPeerUUID()}},s={permission:"delete",icon:"fa-times",name:this.i18n("Delete Peer"),click:function(){return i.deletePeersModal()},visible:function(){return!!i.getPeerUUID()}};this.tableActions=[o,r,a,s]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{prop:"name",name:this.i18n("Name"),flexGrow:2},{prop:"mirror_mode",name:this.i18n("Mode"),flexGrow:2},{prop:"leader_id",name:this.i18n("Leader"),flexGrow:2},{prop:"image_local_count",name:this.i18n("# Local"),flexGrow:2},{prop:"image_remote_count",name:this.i18n("# Remote"),flexGrow:2},{prop:"health",name:this.i18n("Health"),cellTemplate:this.healthTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.data=n.content_data.pools)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l.prototype.editModeModal=function(){var l={poolName:this.selection.first().name};this.modalRef=this.modalService.show(R.a,{initialState:l})},l.prototype.editPeersModal=function(l){var n={poolName:this.selection.first().name,mode:l};"edit"===l&&(n.peerUUID=this.getPeerUUID()),this.modalRef=this.modalService.show(k.a,{initialState:n})},l.prototype.deletePeersModal=function(){var l=this,n=this.selection.first().name,e=this.getPeerUUID();this.modalRef=this.modalService.show(C.a,{initialState:{itemDescription:this.i18n("mirror peer"),itemNames:[n+" ("+e+")"],submitActionObservable:function(){return new y.a(function(t){l.taskWrapper.wrapTaskAroundCall({task:new w.a("rbd/mirroring/peer/delete",{pool_name:n}),call:l.rbdMirroringService.deletePeer(n,e)}).subscribe(void 0,function(l){return t.error(l)},function(){l.rbdMirroringService.refresh(),t.complete()})})}}})},l.prototype.getPeerUUID=function(){var l=this.selection.first(),n=this.data.find(function(n){return l&&l.name===n.name});if(n&&n.peer_uuids)return n.peer_uuids[0]},l.prototype.updateSelection=function(l){this.selection=l},l}(),E=e("DQlY"),D=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function V(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.health_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function T(l){return t["\u0275vid"](0,[t["\u0275pid"](0,r,[]),t["\u0275qud"](402653184,1,{healthTmpl:0}),(l()(),t["\u0275eld"](2,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,e){var t=!0,u=l.component;return"fetchData"===n&&(t=!1!==u.refresh()&&t),"updateSelection"===n&&(t=!1!==u.updateSelection(e)&&t),t},a.b,a.a)),t["\u0275did"](3,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],forceIdentifier:[5,"forceIdentifier"],selectionType:[6,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),t["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,v.b,v.a)),t["\u0275did"](5,114688,null,0,b.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),t["\u0275and"](0,[[1,2],["healthTmpl",2]],null,0,null,V))],function(l,n){var e=n.component;l(n,3,0,e.data,e.columns,"flex",0,"name","true","single"),l(n,5,0,e.permission,e.selection,e.tableActions)},null)}var N=e("Da1D"),P=t["\u0275crt"]({encapsulation:2,styles:[],data:{}});function x(l){return t["\u0275vid"](0,[t["\u0275ncd"](null,0)],null,null)}var O=t["\u0275crt"]({encapsulation:0,styles:["[_nghost-%COMP%] {\n      width: 100%;\n      display: flex;\n    }"],data:{}});function q(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[8,"className",0],[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","%"]],null,null,x,P)),t["\u0275did"](1,245760,null,0,N.a,[N.b],{type:[0,"type"],value:[1,"value"]},null),t["\u0275ncd"](0,0)],function(l,n){var e=n.component;l(n,1,0,e.type,e._value)},function(l,n){l(n,0,0,"progress-bar "+(t["\u0275nov"](n,1).type?"progress-bar-"+t["\u0275nov"](n,1).type+" bg-"+t["\u0275nov"](n,1).type:""),!t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).striped,t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).value,t["\u0275nov"](n,1).percent?t["\u0275nov"](n,1).percent.toFixed(0)+"%":"",t["\u0275nov"](n,1).max,"100",t["\u0275nov"](n,1).setBarWidth)})}function M(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"bar",[["aria-valuemin","0"],["role","progressbar"]],[[8,"className",0],[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","%"]],null,null,x,P)),t["\u0275did"](1,245760,null,0,N.a,[N.b],{type:[0,"type"],value:[1,"value"]},null),(l()(),t["\u0275ted"](2,0,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.value)},function(l,n){l(n,0,0,"progress-bar "+(t["\u0275nov"](n,1).type?"progress-bar-"+t["\u0275nov"](n,1).type+" bg-"+t["\u0275nov"](n,1).type:""),!t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).striped,t["\u0275nov"](n,1).isBs3&&t["\u0275nov"](n,1).animate,t["\u0275nov"](n,1).value,t["\u0275nov"](n,1).percent?t["\u0275nov"](n,1).percent.toFixed(0)+"%":"",t["\u0275nov"](n,1).max,"100",t["\u0275nov"](n,1).setBarWidth),l(n,2,0,n.context.$implicit.label)})}function A(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,M)),t["\u0275did"](1,278528,null,0,o.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.component._value)},null)}function B(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,q)),t["\u0275did"](1,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,A)),t["\u0275did"](3,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,1,0,!e.isStacked),l(n,3,0,e.isStacked)},null)}var j=e("pKUh"),U=e("YAQW"),G=function(){function l(l,n){this.rbdMirroringService=l,this.i18n=n,this.image_error={data:[],columns:{}},this.image_syncing={data:[],columns:{}},this.image_ready={data:[],columns:{}}}return l.prototype.ngOnInit=function(){var l=this;this.image_error.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Issue"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.image_syncing.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"progress",name:this.i18n("Progress"),cellTemplate:this.progressTmpl,flexGrow:2},{prop:"state",name:this.i18n("State"),cellTemplate:this.syncTmpl,flexGrow:1}],this.image_ready.columns=[{prop:"pool_name",name:this.i18n("Pool"),flexGrow:2},{prop:"name",name:this.i18n("Image"),flexGrow:2},{prop:"description",name:this.i18n("Description"),flexGrow:4},{prop:"state",name:this.i18n("State"),cellTemplate:this.stateTmpl,flexGrow:1}],this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.image_error.data=n.content_data.image_error,l.image_syncing.data=n.content_data.image_syncing,l.image_ready.data=n.content_data.image_ready)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.refresh=function(){this.rbdMirroringService.refresh()},l}(),L=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{ngClass:[0,"ngClass"]},null),t["\u0275ppd"](2,1),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){var e=t["\u0275unv"](n,1,0,l(n,2,0,t["\u0275nov"](n.parent,0),n.context.row.state_color));l(n,1,0,e)},function(l,n){l(n,3,0,n.context.value)})}function W(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","label label-info"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Syncing"]))],null,null)}function $(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"progressbar",[["type","info"]],[[1,"max",0],[2,"progress",null]],null,null,B,O)),t["\u0275did"](1,49152,null,0,N.b,[N.c],{type:[0,"type"],value:[1,"value"]},null)],function(l,n){l(n,1,0,"info",n.context.value)},function(l,n){l(n,0,0,t["\u0275nov"](n,1).max,t["\u0275nov"](n,1).addClass)})}function X(l){return t["\u0275vid"](0,[t["\u0275pid"](0,r,[]),t["\u0275qud"](402653184,1,{stateTmpl:0}),t["\u0275qud"](402653184,2,{syncTmpl:0}),t["\u0275qud"](402653184,3,{progressTmpl:0}),(l()(),t["\u0275eld"](4,0,null,null,13,"tabset",[],[[2,"tab-container",null]],null,null,j.b,j.a)),t["\u0275did"](5,180224,null,0,U.d,[U.e,t.Renderer2],null,null),(l()(),t["\u0275eld"](6,0,null,0,3,"tab",[["heading","Issues"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](7,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](8,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},a.b,a.a)),t["\u0275did"](9,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275eld"](10,0,null,0,3,"tab",[["heading","Syncing"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](11,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](12,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},a.b,a.a)),t["\u0275did"](13,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275eld"](14,0,null,0,3,"tab",[["heading","Ready"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),t["\u0275did"](15,212992,null,0,U.b,[U.d,t.ElementRef,t.Renderer2],{heading:[0,"heading"]},null),(l()(),t["\u0275eld"](16,0,null,null,1,"cd-table",[["columnMode","flex"]],null,[[null,"fetchData"]],function(l,n,e){var t=!0;return"fetchData"===n&&(t=!1!==l.component.refresh()&&t),t},a.b,a.a)),t["\u0275did"](17,2867200,null,0,s.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"]},{fetchData:"fetchData"}),(l()(),t["\u0275and"](0,[[1,2],["stateTmpl",2]],null,0,null,z)),(l()(),t["\u0275and"](0,[[2,2],["syncTmpl",2]],null,0,null,W)),(l()(),t["\u0275and"](0,[[3,2],["progressTmpl",2]],null,0,null,$))],function(l,n){var e=n.component;l(n,7,0,"Issues"),l(n,9,0,e.image_error.data,e.image_error.columns,"flex",0),l(n,11,0,"Syncing"),l(n,13,0,e.image_syncing.data,e.image_syncing.columns,"flex",0),l(n,15,0,"Ready"),l(n,17,0,e.image_ready.data,e.image_ready.columns,"flex",0)},function(l,n){l(n,4,0,t["\u0275nov"](n,5).clazz),l(n,6,0,t["\u0275nov"](n,7).id,t["\u0275nov"](n,7).active,t["\u0275nov"](n,7).addClass),l(n,10,0,t["\u0275nov"](n,11).id,t["\u0275nov"](n,11).active,t["\u0275nov"](n,11).addClass),l(n,14,0,t["\u0275nov"](n,15).id,t["\u0275nov"](n,15).active,t["\u0275nov"](n,15).addClass)})}var Y=e("cxJu");e.d(n,"a",function(){return Q});var K=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function J(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,u.b,u.a)),t["\u0275did"](1,114688,null,0,i.a,[],{status:[0,"status"]},null),(l()(),t["\u0275eld"](2,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Daemons"])),(l()(),t["\u0275eld"](6,0,null,null,1,"cd-mirroring-daemons",[],null,null,null,h,f)),t["\u0275did"](7,245760,null,0,p,[d.a,c.a,m.a],null,null),(l()(),t["\u0275eld"](8,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](9,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pools"])),(l()(),t["\u0275eld"](11,0,null,null,1,"cd-mirroring-pools",[],null,null,null,T,D)),t["\u0275did"](12,245760,null,0,F,[I.a,d.a,E.b,S.a,m.a],null,null),(l()(),t["\u0275eld"](13,0,null,null,5,"div",[["class","row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](14,0,null,null,4,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](15,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Images"])),(l()(),t["\u0275eld"](17,0,null,null,1,"cd-mirroring-images",[],null,null,null,X,L)),t["\u0275did"](18,245760,null,0,G,[d.a,m.a],null,null)],function(l,n){l(n,1,0,n.component.status),l(n,7,0),l(n,12,0),l(n,18,0)},null)}function Z(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-mirroring",[],null,null,null,J,K)),t["\u0275did"](1,245760,null,0,Y.a,[d.a],null,null)],function(l,n){l(n,1,0)},null)}var Q=t["\u0275ccf"]("cd-mirroring",Y.a,Z,{},{},[])},Sofw:function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("gIcY"),u=(e("my5R"),e("mtw6")),i=e("QFaf"),o=e("1Ni5"),r=(e("aexS"),e("9nlD"),function(){function l(l,n,e,t,u){this.authStorageService=l,this.bsModalRef=n,this.iscsiService=e,this.notificationService=t,this.i18n=u,this.USER_REGEX=/[\w\.:@_-]{8,64}/,this.PASSWORD_REGEX=/[\w@\-_\/]{12,16}/,this.permission=this.authStorageService.getPermissions().iscsi}return l.prototype.ngOnInit=function(){var l=this;this.hasPermission=this.permission.update,this.createForm(),this.iscsiService.getDiscovery().subscribe(function(n){l.discoveryForm.patchValue(n)})},l.prototype.createForm=function(){var l=this;this.discoveryForm=new i.a({user:new t.i({value:"",disabled:!this.hasPermission}),password:new t.i({value:"",disabled:!this.hasPermission}),mutual_user:new t.i({value:"",disabled:!this.hasPermission}),mutual_password:new t.i({value:"",disabled:!this.hasPermission})}),o.a.validateIf(this.discoveryForm.get("user"),function(){return l.discoveryForm.getValue("password")||l.discoveryForm.getValue("mutual_user")||l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("password"),function(){return l.discoveryForm.getValue("user")||l.discoveryForm.getValue("mutual_user")||l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("mutual_user"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("mutual_user"),function(){return l.discoveryForm.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_password")]),o.a.validateIf(this.discoveryForm.get("mutual_password"),function(){return l.discoveryForm.getValue("mutual_user")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[this.discoveryForm.get("user"),this.discoveryForm.get("password"),this.discoveryForm.get("mutual_user")])},l.prototype.submitAction=function(){var l=this;this.iscsiService.updateDiscovery(this.discoveryForm.value).subscribe(function(){l.notificationService.show(u.a.success,l.i18n("Updated discovery authentication")),l.bsModalRef.hide()},function(){l.bsModalRef.hide()})},l}())},Ur3J:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("gIcY"),o=e("IZUe"),r=e("gp3X"),a=e("sb0X"),s=e("KVJa"),d=e("Z21x"),c=e("sne2"),p=e("+lcs"),m=e("DQlY"),f=e("F83c"),g=e("VXsX"),h=e("9nlD");e.d(n,"a",function(){return R});var v=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Rename"]))],null,null)}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Create"]))],null,null)}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Rename"]))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Create"]))],null,null)}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,11,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,7,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](3,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](5,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](7,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" RBD Snapshot"])),(l()(),t["\u0275eld"](9,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,e){var t=!0;return"click"===n&&(t=!1!==l.component.modalRef.hide()&&t),t},null,null)),(l()(),t["\u0275eld"](10,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["\xd7"])),(l()(),t["\u0275eld"](12,0,null,null,35,"form",[["class","form-horizontal"],["name","snapshotForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,14).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,14).onReset()&&u),u},null,null)),t["\u0275did"](13,16384,null,0,i.D,[],null,null),t["\u0275did"](14,540672,[["formDir",4]],0,i.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,i.d,null,[i.l]),t["\u0275did"](16,16384,null,0,i.s,[[4,i.d]],null,null),(l()(),t["\u0275eld"](17,0,null,null,17,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](19,278528,null,0,u.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](20,{"has-error":0}),(l()(),t["\u0275eld"](21,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","snapshotName"]],null,null,null,null,null)),(l()(),t["\u0275eld"](22,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Name"])),(l()(),t["\u0275eld"](24,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](25,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),t["\u0275eld"](26,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","snapshotName"],["id","snapshotName"],["name","snapshotName"],["placeholder","Snapshot 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,27)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,27)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,27)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](27,16384,null,0,i.e,[t.Renderer2,t.ElementRef,[2,i.b]],null,null),t["\u0275prd"](1024,null,i.p,function(l){return[l]},[i.e]),t["\u0275did"](29,671744,null,0,i.j,[[3,i.d],[8,null],[8,null],[6,i.p],[2,i.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,i.q,null,[i.j]),t["\u0275did"](31,16384,null,0,i.r,[[4,i.q]],null,null),t["\u0275did"](32,4210688,null,0,o.a,[t.ElementRef],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](34,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](35,0,null,null,12,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](36,0,null,null,11,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](37,0,null,null,8,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submit()&&t),t},r.b,r.a)),t["\u0275did"](38,114688,null,0,a.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275eld"](39,0,null,0,5,null,null,null,null,null,null,null)),t["\u0275did"](40,16384,null,0,u.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](42,278528,null,0,u.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](44,16384,null,0,u.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,u.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,0,[" Snapshot"])),(l()(),t["\u0275eld"](46,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,s.b,s.a)),t["\u0275did"](47,49152,null,0,d.a,[u.Location,c.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,3,0,e.editing),l(n,5,0,"true"),l(n,14,0,e.snapshotForm);var u=l(n,20,0,e.snapshotForm.showError("snapshotName",t["\u0275nov"](n,14)));l(n,19,0,"form-group",u),l(n,29,0,"snapshotName"),l(n,34,0,e.snapshotForm.showError("snapshotName",t["\u0275nov"](n,14),"required")),l(n,38,0,e.snapshotForm),l(n,40,0,e.editing),l(n,42,0,"true"),l(n,47,0,"Close",e.modalRef.hide)},function(l,n){l(n,12,0,t["\u0275nov"](n,16).ngClassUntouched,t["\u0275nov"](n,16).ngClassTouched,t["\u0275nov"](n,16).ngClassPristine,t["\u0275nov"](n,16).ngClassDirty,t["\u0275nov"](n,16).ngClassValid,t["\u0275nov"](n,16).ngClassInvalid,t["\u0275nov"](n,16).ngClassPending),l(n,26,0,t["\u0275nov"](n,31).ngClassUntouched,t["\u0275nov"](n,31).ngClassTouched,t["\u0275nov"](n,31).ngClassPristine,t["\u0275nov"](n,31).ngClassDirty,t["\u0275nov"](n,31).ngClassValid,t["\u0275nov"](n,31).ngClassInvalid,t["\u0275nov"](n,31).ngClassPending)})}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-snapshot-form",[],null,null,null,I,v)),t["\u0275did"](1,114688,null,0,p.a,[m.a,f.a,g.a,h.a],null,null)],function(l,n){l(n,1,0)},null)}var R=t["\u0275ccf"]("cd-rbd-snapshot-form",p.a,S,{},{},[])},VBM6:function(l,n,e){"use strict";var t=e("CcnG"),u=e("EEJc"),i=e("ajRT"),o=e("Ip0R"),r=e("gIcY"),a=e("IZUe"),s=e("gp3X"),d=e("sb0X"),c=e("KVJa"),p=e("Z21x"),m=e("sne2"),f=e("L4us"),g=e("DQlY"),h=e("XED3"),v=e("kn/O");e.d(n,"a",function(){return T});var b=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Edit"]))],null,null)}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Add"]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Edit"]))],null,null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275ted"](-1,null,["Add"]))],null,null)}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The cluster name is not valid."]))],null,null)}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The CephX ID is not valid."]))],null,null)}function F(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["The monitory address is not valid."]))],null,null)}function E(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX key must be base64 encoded."]))],null,null)}function D(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,101,"cd-modal",[],null,null,null,u.c,u.b)),t["\u0275did"](1,49152,null,0,i.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,7,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](4,16384,null,0,o.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](6,278528,null,0,o.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](8,16384,null,0,o.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" pool mirror peer"])),(l()(),t["\u0275eld"](10,0,null,1,91,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,90,"form",[["class","form"],["name","editPeerForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,13).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,13).onReset()&&u),u},null,null)),t["\u0275did"](12,16384,null,0,r.D,[],null,null),t["\u0275did"](13,540672,[["formDir",4]],0,r.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,r.d,null,[r.l]),t["\u0275did"](15,16384,null,0,r.s,[[4,r.d]],null,null),(l()(),t["\u0275eld"](16,0,null,null,78,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,14,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,13,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,5,null,null,null,null,null,null,null)),t["\u0275did"](20,16384,null,0,o.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](22,278528,null,0,o.NgSwitchCase,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](24,16384,null,0,o.NgSwitchDefault,[t.ViewContainerRef,t.TemplateRef,o.NgSwitch],null,null),(l()(),t["\u0275ted"](-1,null,[" the pool mirror peer attributes for pool "])),(l()(),t["\u0275eld"](26,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](27,null,["",""])),(l()(),t["\u0275ted"](-1,null,[" and click "])),(l()(),t["\u0275eld"](29,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Submit"])),(l()(),t["\u0275ted"](-1,null,["."])),(l()(),t["\u0275eld"](32,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](33,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](34,{"has-error":0}),(l()(),t["\u0275eld"](35,0,null,null,3,"label",[["class","control-label"],["for","clusterName"]],null,null,null,null,null)),(l()(),t["\u0275eld"](36,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Cluster Name"])),(l()(),t["\u0275eld"](38,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](39,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","clusterName"],["id","clusterName"],["name","clusterName"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,41)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,41).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,41)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,41)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](40,4210688,null,0,a.a,[t.ElementRef],null,null),t["\u0275did"](41,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](43,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](45,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,I)),t["\u0275did"](47,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](49,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](50,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](51,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](52,{"has-error":0}),(l()(),t["\u0275eld"](53,0,null,null,3,"label",[["class","control-label"],["for","clientID"]],null,null,null,null,null)),(l()(),t["\u0275eld"](54,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX ID"])),(l()(),t["\u0275eld"](56,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](57,0,null,null,5,"input",[["class","form-control"],["formControlName","clientID"],["id","clientID"],["name","clientID"],["placeholder","CephX 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,58)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,58).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,58)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,58)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](58,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](60,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](62,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,R)),t["\u0275did"](64,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,k)),t["\u0275did"](66,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](67,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](68,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](69,{"has-error":0}),(l()(),t["\u0275eld"](70,0,null,null,2,"label",[["class","control-label"],["for","monAddr"]],null,null,null,null,null)),(l()(),t["\u0275eld"](71,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Monitor Addresses"])),(l()(),t["\u0275eld"](73,0,null,null,5,"input",[["class","form-control"],["formControlName","monAddr"],["id","monAddr"],["name","monAddr"],["placeholder","Comma-delimited addresses..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,74)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,74).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](74,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](76,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](78,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,F)),t["\u0275did"](80,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](81,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](82,278528,null,0,o.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](83,{"has-error":0}),(l()(),t["\u0275eld"](84,0,null,null,2,"label",[["class","control-label"],["for","key"]],null,null,null,null,null)),(l()(),t["\u0275eld"](85,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["CephX Key"])),(l()(),t["\u0275eld"](87,0,null,null,5,"input",[["class","form-control"],["formControlName","key"],["id","key"],["name","key"],["placeholder","Base64-encoded key..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,88)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,88).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,88)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,88)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](88,16384,null,0,r.e,[t.Renderer2,t.ElementRef,[2,r.b]],null,null),t["\u0275prd"](1024,null,r.p,function(l){return[l]},[r.e]),t["\u0275did"](90,671744,null,0,r.j,[[3,r.d],[8,null],[8,null],[6,r.p],[2,r.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,r.q,null,[r.j]),t["\u0275did"](92,16384,null,0,r.r,[[4,r.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,E)),t["\u0275did"](94,16384,null,0,o.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](95,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](96,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](97,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t},s.b,s.a)),t["\u0275did"](98,114688,null,0,d.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Submit"])),(l()(),t["\u0275eld"](100,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),t["\u0275did"](101,49152,null,0,p.a,[o.Location,m.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,4,0,e.mode),l(n,6,0,"edit"),l(n,13,0,e.editPeerForm),l(n,20,0,e.mode),l(n,22,0,"edit");var u=l(n,34,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13)));l(n,33,0,"form-group",u),l(n,43,0,"clusterName"),l(n,47,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13),"required")),l(n,49,0,e.editPeerForm.showError("clusterName",t["\u0275nov"](n,13),"invalidClusterName"));var i=l(n,52,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13)));l(n,51,0,"form-group",i),l(n,60,0,"clientID"),l(n,64,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13),"required")),l(n,66,0,e.editPeerForm.showError("clientID",t["\u0275nov"](n,13),"invalidClientID"));var o=l(n,69,0,e.editPeerForm.showError("monAddr",t["\u0275nov"](n,13)));l(n,68,0,"form-group",o),l(n,76,0,"monAddr"),l(n,80,0,e.editPeerForm.showError("monAddr",t["\u0275nov"](n,13),"invalidMonAddr"));var r=l(n,83,0,e.editPeerForm.showError("key",t["\u0275nov"](n,13)));l(n,82,0,"form-group",r),l(n,90,0,"key"),l(n,94,0,e.editPeerForm.showError("key",t["\u0275nov"](n,13),"invalidKey")),l(n,98,0,e.editPeerForm),l(n,101,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,11,0,t["\u0275nov"](n,15).ngClassUntouched,t["\u0275nov"](n,15).ngClassTouched,t["\u0275nov"](n,15).ngClassPristine,t["\u0275nov"](n,15).ngClassDirty,t["\u0275nov"](n,15).ngClassValid,t["\u0275nov"](n,15).ngClassInvalid,t["\u0275nov"](n,15).ngClassPending),l(n,27,0,e.poolName),l(n,39,0,t["\u0275nov"](n,45).ngClassUntouched,t["\u0275nov"](n,45).ngClassTouched,t["\u0275nov"](n,45).ngClassPristine,t["\u0275nov"](n,45).ngClassDirty,t["\u0275nov"](n,45).ngClassValid,t["\u0275nov"](n,45).ngClassInvalid,t["\u0275nov"](n,45).ngClassPending),l(n,57,0,t["\u0275nov"](n,62).ngClassUntouched,t["\u0275nov"](n,62).ngClassTouched,t["\u0275nov"](n,62).ngClassPristine,t["\u0275nov"](n,62).ngClassDirty,t["\u0275nov"](n,62).ngClassValid,t["\u0275nov"](n,62).ngClassInvalid,t["\u0275nov"](n,62).ngClassPending),l(n,73,0,t["\u0275nov"](n,78).ngClassUntouched,t["\u0275nov"](n,78).ngClassTouched,t["\u0275nov"](n,78).ngClassPristine,t["\u0275nov"](n,78).ngClassDirty,t["\u0275nov"](n,78).ngClassValid,t["\u0275nov"](n,78).ngClassInvalid,t["\u0275nov"](n,78).ngClassPending),l(n,87,0,t["\u0275nov"](n,92).ngClassUntouched,t["\u0275nov"](n,92).ngClassTouched,t["\u0275nov"](n,92).ngClassPristine,t["\u0275nov"](n,92).ngClassDirty,t["\u0275nov"](n,92).ngClassValid,t["\u0275nov"](n,92).ngClassInvalid,t["\u0275nov"](n,92).ngClassPending)})}function V(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-pool-edit-peer-modal",[],null,null,null,D,b)),t["\u0275did"](1,114688,null,0,f.a,[g.a,h.a,v.a],null,null)],function(l,n){l(n,1,0)},null)}var T=t["\u0275ccf"]("cd-pool-edit-peer-modal",f.a,V,{},{},[])},WxU5:function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e("Ekvf"),e("F83c"),e("2EZI");var t=e("kvvV"),u=(e("aexS"),e("kn/O"),function(){function l(l,n,e,t,u,i){this.authStorageService=l,this.rbdService=n,this.modalRef=e,this.fb=t,this.poolService=u,this.taskWrapper=i,this.poolPermission=this.authStorageService.getPermissions().pool}return l.prototype.createForm=function(){this.purgeForm=this.fb.group({poolName:""})},l.prototype.ngOnInit=function(){var l=this;this.poolPermission.read&&this.poolService.list(["pool_name","application_metadata"]).then(function(n){l.pools=n.filter(function(l){return l.application_metadata.includes("rbd")}).map(function(l){return l.pool_name})}),this.createForm()},l.prototype.purge=function(){var l=this,n=this.purgeForm.getValue("poolName")||"";this.taskWrapper.wrapTaskAroundCall({task:new t.a("rbd/trash/purge",{pool_name:n}),call:this.rbdService.purgeTrash(n)}).subscribe(void 0,function(){l.purgeForm.setErrors({cdSubmitButton:!0})},function(){l.modalRef.hide()})},l}())},XED3:function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("26FU"),u=e("CcnG"),i=e("t/Na"),o=e("pL04"),r=function(){function l(l,n){this.http=l,this.ngZone=n,this.summaryDataSource=new t.a(null),this.summaryData$=this.summaryDataSource.asObservable(),this.refreshAndSchedule()}return l.prototype.refresh=function(){var l=this;this.http.get("api/block/mirroring/summary").subscribe(function(n){l.summaryDataSource.next(n)})},l.prototype.refreshAndSchedule=function(){var l=this;this.refresh(),this.ngZone.runOutsideAngular(function(){setTimeout(function(){l.ngZone.run(function(){l.refreshAndSchedule()})},3e4)})},l.prototype.getCurrentSummary=function(){return this.summaryDataSource.getValue()},l.prototype.subscribeSummary=function(l,n){return this.summaryData$.subscribe(l,n)},l.prototype.getPool=function(l){return this.http.get("api/block/mirroring/pool/"+l)},l.prototype.updatePool=function(l,n){return this.http.put("api/block/mirroring/pool/"+l,n,{observe:"response"})},l.prototype.getPeer=function(l,n){return this.http.get("api/block/mirroring/pool/"+l+"/peer/"+n)},l.prototype.addPeer=function(l,n){return this.http.post("api/block/mirroring/pool/"+l+"/peer",n,{observe:"response"})},l.prototype.updatePeer=function(l,n,e){return this.http.put("api/block/mirroring/pool/"+l+"/peer/"+n,e,{observe:"response"})},l.prototype.deletePeer=function(l,n){return this.http.delete("api/block/mirroring/pool/"+l+"/peer/"+n,{observe:"response"})},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(i.c),u.inject(u.NgZone))},token:l,providedIn:o.a}),l}()},Z4cD:function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("mrSG"),u=e("gIcY"),i=e("LvDl"),o=(e("my5R"),e("QFaf")),r=function(){function l(l,n){this.modalRef=l,this.iscsiService=n}return l.prototype.ngOnInit=function(){var l=this,n={backstore:new u.i(this.imagesSettings[this.image].backstore),lun:new u.i(this.imagesSettings[this.image].lun),wwn:new u.i(this.imagesSettings[this.image].wwn)};i.forEach(this.backstores,function(e){var t=l.imagesSettings[l.image][e]||{};i.forIn(l.disk_default_controls[e],function(l,e){n[e]=new u.i(t[e])})}),this.settingsForm=new o.a(n)},l.prototype.getDiskControlLimits=function(l,n){return this.disk_controls_limits?this.disk_controls_limits[l][n]:{type:"int"}},l.prototype.save=function(){var l=this,n=this.settingsForm.controls.backstore.value,e=this.settingsForm.controls.lun.value,u=this.settingsForm.controls.wwn.value,o={};i.forIn(this.settingsForm.controls,function(e,t){""!==e.value&&null!==e.value&&t in l.disk_default_controls[l.settingsForm.value.backstore]&&(o[t]=e.value,i.forEach(l.backstores,function(u){u!==n&&t in(l.imagesSettings[l.image][u]||{})&&(l.imagesSettings[l.image][u][t]=e.value)}))}),this.imagesSettings[this.image].backstore=n,this.imagesSettings[this.image].lun=e,this.imagesSettings[this.image].wwn=u,this.imagesSettings[this.image][n]=o,this.imagesSettings=t.__assign({},this.imagesSettings),this.control.updateValueAndValidity({emitEvent:!1}),this.modalRef.hide()},l}()},a6qe:function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("gIcY"),u=e("LvDl"),i=(e("my5R"),e("QFaf")),o=function(){function l(l,n){this.modalRef=l,this.iscsiService=n}return l.prototype.ngOnInit=function(){var l=this,n={};u.forIn(this.target_default_controls,function(e,u){n[u]=new t.i(l.target_controls.value[u])}),this.settingsForm=new i.a(n)},l.prototype.save=function(){var l={};u.forIn(this.settingsForm.controls,function(n,e){""!==n.value&&null!==n.value&&(l[e]=n.value)}),this.target_controls.setValue(l),this.modalRef.hide()},l.prototype.getTargetControlLimits=function(l){return this.target_controls_limits?this.target_controls_limits[l]:["Yes","No"].includes(this.target_default_controls[l])?{type:"bool"}:{type:"int"}},l}()},aAWM:function(l,n,e){"use strict";e("uIqm");var t=e("PhyI"),u=function(){function l(){}return l.prototype.transform=function(l){return{0:"global",1:"pool",2:"image"}[l]},l}();e("aXbf"),e("o8EM"),e.d(n,"a",function(){return i});var i=function(){function l(l,n,e){this.formatterService=l,this.rbdConfigurationService=n,this.i18n=e,this.sourceField=t.a,this.typeField=t.b}return l.prototype.ngOnInit=function(){this.poolConfigurationColumns=[{prop:"displayName",name:this.i18n("Name")},{prop:"description",name:this.i18n("Description")},{prop:"name",name:this.i18n("Key")},{prop:"source",name:this.i18n("Source"),cellTemplate:this.configurationSourceTpl,pipe:new u},{prop:"value",name:this.i18n("Value"),cellTemplate:this.configurationValueTpl}]},l.prototype.ngOnChanges=function(){var l=this;this.data&&(this.data=this.data.filter(function(n){return l.rbdConfigurationService.getOptionFields().map(function(l){return l.name}).includes(n.name)}))},l}()},aa9H:function(l,n,e){"use strict";var t=e("gIcY"),u=(e("XED3"),e("QFaf")),i=e("kvvV"),o=(e("kn/O"),function(){return function(){}}());e.d(n,"a",function(){return r});var r=function(){function l(l,n,e,t){this.modalRef=l,this.i18n=n,this.rbdMirroringService=e,this.taskWrapper=t,this.bsConfig={containerClass:"theme-default"},this.peerExists=!1,this.mirrorModes=[{id:"disabled",name:this.i18n("Disabled")},{id:"pool",name:this.i18n("Pool")},{id:"image",name:this.i18n("Image")}],this.createForm()}return l.prototype.createForm=function(){this.editModeForm=new u.a({mirrorMode:new t.i("",{validators:[t.A.required,this.validateMode.bind(this)]})})},l.prototype.ngOnInit=function(){var l=this;this.pattern=""+this.poolName,this.rbdMirroringService.getPool(this.poolName).subscribe(function(n){l.setResponse(n)}),this.subs=this.rbdMirroringService.subscribeSummary(function(n){if(l.peerExists=!1,n){var e=n.content_data.pools.find(function(n){return l.poolName===n.name});l.peerExists=e&&e.peer_uuids.length}})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l.prototype.validateMode=function(l){return"disabled"===l.value&&this.peerExists?{cannotDisable:{value:l.value}}:null},l.prototype.setResponse=function(l){this.editModeForm.get("mirrorMode").setValue(l.mirror_mode)},l.prototype.update=function(){var l=this,n=new o;n.mirror_mode=this.editModeForm.getValue("mirrorMode"),this.taskWrapper.wrapTaskAroundCall({task:new i.a("rbd/mirroring/pool/edit",{pool_name:this.poolName}),call:this.rbdMirroringService.updatePool(this.poolName,n)}).subscribe(void 0,function(){return l.editModeForm.setErrors({cdSubmitButton:!0})},function(){l.rbdMirroringService.refresh(),l.modalRef.hide()})},l}()},bUo2:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gp3X"),i=e("sb0X"),o=e("EEJc"),r=e("ajRT"),a=e("gIcY"),s=e("Ip0R"),d=e("D4zM"),c=e("OcYo"),p=e("SZbH"),m=e("KVJa"),f=e("Z21x"),g=e("sne2"),h=e("Sofw"),v=e("aexS"),b=e("DQlY"),y=e("my5R"),C=e("9nlD"),_=e("Jm/i");e.d(n,"a",function(){return x});var w=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function k(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function F(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function E(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function D(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function V(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function T(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.submitAction()&&t),t},u.b,u.a)),t["\u0275did"](1,114688,null,0,i.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Submit"]))],function(l,n){l(n,1,0,n.component.discoveryForm)},null)}function N(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,93,"cd-modal",[],null,null,null,o.c,o.b)),t["\u0275did"](1,49152,null,0,r.a,[],{modalRef:[0,"modalRef"]},null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Discovery Authentication"])),(l()(),t["\u0275eld"](4,0,null,1,89,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,88,"form",[["class","form-horizontal"],["name","discoveryForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,a.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,a.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,a.d,null,[a.l]),t["\u0275did"](9,16384,null,0,a.s,[[4,a.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,77,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](12,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](13,{"has-error":0}),(l()(),t["\u0275eld"](14,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","user"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["User"])),(l()(),t["\u0275eld"](16,0,null,null,10,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["id","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,18)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,18).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,18)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,18)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](18,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](20,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](22,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,I)),t["\u0275did"](24,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](26,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](27,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](28,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](29,{"has-error":0}),(l()(),t["\u0275eld"](30,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","password"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Password"])),(l()(),t["\u0275eld"](32,0,null,null,16,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](33,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](34,0,null,null,5,"input",[["class","form-control"],["formControlName","password"],["id","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,35)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,35).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,35)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,35)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](35,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](37,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](39,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275eld"](40,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](41,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,42).onClick()&&u),u},null,null)),t["\u0275did"](42,81920,null,0,d.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["\u0275eld"](43,0,null,null,1,"button",[["cdCopy2ClipboardButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,44).onClick()&&u),u},null,null)),t["\u0275did"](44,81920,null,0,c.a,[t.ElementRef,t.Renderer2,p.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,R)),t["\u0275did"](46,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,k)),t["\u0275did"](48,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](49,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](50,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](51,{"has-error":0}),(l()(),t["\u0275eld"](52,0,null,null,2,"label",[["class","control-label col-sm-4"],["for","mutual_user"]],null,null,null,null,null)),(l()(),t["\u0275eld"](53,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mutual User"])),(l()(),t["\u0275eld"](55,0,null,null,10,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](56,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_user"],["id","mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,57)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,57).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,57)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,57)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](57,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](59,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](61,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,F)),t["\u0275did"](63,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,E)),t["\u0275did"](65,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](66,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](67,278528,null,0,s.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](68,{"has-error":0}),(l()(),t["\u0275eld"](69,0,null,null,1,"label",[["class","control-label col-sm-4"],["for","mutual_password"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mutual Password"])),(l()(),t["\u0275eld"](71,0,null,null,16,"div",[["class","col-sm-8"]],null,null,null,null,null)),(l()(),t["\u0275eld"](72,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](73,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_password"],["id","mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,74)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,74).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,74)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](74,16384,null,0,a.e,[t.Renderer2,t.ElementRef,[2,a.b]],null,null),t["\u0275prd"](1024,null,a.p,function(l){return[l]},[a.e]),t["\u0275did"](76,671744,null,0,a.j,[[3,a.d],[8,null],[8,null],[6,a.p],[2,a.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,a.q,null,[a.j]),t["\u0275did"](78,16384,null,0,a.r,[[4,a.q]],null,null),(l()(),t["\u0275eld"](79,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),t["\u0275eld"](80,0,null,null,1,"button",[["cdPasswordButton","mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,81).onClick()&&u),u},null,null)),t["\u0275did"](81,81920,null,0,d.a,[t.ElementRef,t.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),t["\u0275eld"](82,0,null,null,1,"button",[["cdCopy2ClipboardButton","mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l,83).onClick()&&u),u},null,null)),t["\u0275did"](83,81920,null,0,c.a,[t.ElementRef,t.Renderer2,p.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,D)),t["\u0275did"](85,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,V)),t["\u0275did"](87,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](88,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](89,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,T)),t["\u0275did"](91,16384,null,0,s.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](92,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["\u0275did"](93,49152,null,0,f.a,[s.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,1,0,e.bsModalRef),l(n,7,0,e.discoveryForm);var u=l(n,13,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7)));l(n,12,0,"form-group",u),l(n,20,0,"user"),l(n,24,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7),"required")),l(n,26,0,e.discoveryForm.showError("user",t["\u0275nov"](n,7),"pattern"));var i=l(n,29,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7)));l(n,28,0,"form-group",i),l(n,37,0,"password"),l(n,42,0,"password"),l(n,44,0,"password"),l(n,46,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7),"required")),l(n,48,0,e.discoveryForm.showError("password",t["\u0275nov"](n,7),"pattern"));var o=l(n,51,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7)));l(n,50,0,"form-group",o),l(n,59,0,"mutual_user"),l(n,63,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7),"required")),l(n,65,0,e.discoveryForm.showError("mutual_user",t["\u0275nov"](n,7),"pattern"));var r=l(n,68,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7)));l(n,67,0,"form-group",r),l(n,76,0,"mutual_password"),l(n,81,0,"mutual_password"),l(n,83,0,"mutual_password"),l(n,85,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7),"required")),l(n,87,0,e.discoveryForm.showError("mutual_password",t["\u0275nov"](n,7),"pattern")),l(n,91,0,e.hasPermission),l(n,93,0,"Cancel",e.bsModalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,17,0,t["\u0275nov"](n,22).ngClassUntouched,t["\u0275nov"](n,22).ngClassTouched,t["\u0275nov"](n,22).ngClassPristine,t["\u0275nov"](n,22).ngClassDirty,t["\u0275nov"](n,22).ngClassValid,t["\u0275nov"](n,22).ngClassInvalid,t["\u0275nov"](n,22).ngClassPending),l(n,34,0,t["\u0275nov"](n,39).ngClassUntouched,t["\u0275nov"](n,39).ngClassTouched,t["\u0275nov"](n,39).ngClassPristine,t["\u0275nov"](n,39).ngClassDirty,t["\u0275nov"](n,39).ngClassValid,t["\u0275nov"](n,39).ngClassInvalid,t["\u0275nov"](n,39).ngClassPending),l(n,56,0,t["\u0275nov"](n,61).ngClassUntouched,t["\u0275nov"](n,61).ngClassTouched,t["\u0275nov"](n,61).ngClassPristine,t["\u0275nov"](n,61).ngClassDirty,t["\u0275nov"](n,61).ngClassValid,t["\u0275nov"](n,61).ngClassInvalid,t["\u0275nov"](n,61).ngClassPending),l(n,73,0,t["\u0275nov"](n,78).ngClassUntouched,t["\u0275nov"](n,78).ngClassTouched,t["\u0275nov"](n,78).ngClassPristine,t["\u0275nov"](n,78).ngClassDirty,t["\u0275nov"](n,78).ngClassValid,t["\u0275nov"](n,78).ngClassInvalid,t["\u0275nov"](n,78).ngClassPending)})}function P(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-discovery-modal",[],null,null,null,N,w)),t["\u0275did"](1,114688,null,0,h.a,[v.a,b.a,y.a,C.a,_.a],null,null)],function(l,n){l(n,1,0)},null)}var x=t["\u0275ccf"]("cd-iscsi-target-discovery-modal",h.a,P,{},{},[])},cxJu:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("XED3");var t=function(){function l(l){this.rbdMirroringService=l}return l.prototype.ngOnInit=function(){var l=this;this.subs=this.rbdMirroringService.subscribeSummary(function(n){n&&(l.status=n.content_data.status)})},l.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},l}()},"e/kN":function(l,n,e){"use strict";e.d(n,"a",function(){return a}),e("my5R");var t=e("0+/T"),u=(e("sne2"),e("uIqm"),e("x38r")),i=e("vCyI"),o=e("kvvV"),r=(e("+0ag"),e("aexS"),e("mSOc"),e("VTlA"),e("kn/O"),e("Sofw")),a=function(){function l(l,n,e,t,u,o,r,a,s){var d=this;this.authStorageService=l,this.i18n=n,this.iscsiService=e,this.taskListService=t,this.cephReleaseNamePipe=u,this.summaryservice=o,this.modalService=r,this.taskWrapper=a,this.actionLabels=s,this.available=void 0,this.selection=new i.a,this.targets=[],this.builders={"iscsi/target/create":function(l){return{target_iqn:l.target_iqn}}},this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return"/block/iscsi/targets/create"},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return"/block/iscsi/targets/edit/"+d.selection.first().target_iqn},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return d.deleteIscsiTargetModal()},name:this.actionLabels.DELETE}]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("Target"),prop:"target_iqn",flexGrow:2,cellTransformation:u.a.executing},{name:this.i18n("Portals"),prop:"cdPortals",flexGrow:2},{name:this.i18n("Images"),prop:"cdImages",flexGrow:2},{name:this.i18n("# Sessions"),prop:"info.num_sessions",flexGrow:1}],this.iscsiService.status().subscribe(function(n){if(l.available=n.available,n.available)l.iscsiService.version().subscribe(function(n){l.cephIscsiConfigVersion=n.ceph_iscsi_config_version,l.taskListService.init(function(){return l.iscsiService.listTargets()},function(n){return l.prepareResponse(n)},function(n){return l.targets=n},function(){return l.onFetchError()},l.taskFilter,l.itemFilter,l.builders)}),l.iscsiService.settings().subscribe(function(n){l.settings=n});else{var e=l.summaryservice.getCurrentSummary(),t=l.cephReleaseNamePipe.transform(e.version);l.docsUrl="http://docs.ceph.com/docs/"+t+"/mgr/dashboard/#enabling-iscsi-management",l.status=n.message}})},l.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},l.prototype.prepareResponse=function(l){return l.forEach(function(l){l.cdPortals=l.portals.map(function(l){return l.host+":"+l.ip}),l.cdImages=l.disks.map(function(l){return l.pool+"/"+l.image})}),l},l.prototype.onFetchError=function(){this.table.reset()},l.prototype.itemFilter=function(l,n){return l.target_iqn===n.metadata.target_iqn},l.prototype.taskFilter=function(l){return["iscsi/target/create","iscsi/target/edit","iscsi/target/delete"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteIscsiTargetModal=function(){var l=this,n=this.selection.first().target_iqn;this.modalRef=this.modalService.show(t.a,{initialState:{itemDescription:this.i18n("iSCSI target"),itemNames:[n],submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new o.a("iscsi/target/delete",{target_iqn:n}),call:l.iscsiService.deleteTarget(n)})}}})},l.prototype.configureDiscoveryAuth=function(){this.modalService.show(r.a,{})},l}()},eF8U:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R");e("jMP8"),e.d(n,"a",function(){return o}),e.d(n,"b",function(){return g});var o=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function r(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{ngValue:[0,"ngValue"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function a(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,10,"select",[["class","form-control custom-select"]],[[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]],[[null,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,1).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](6,0,null,null,2,"option",[],null,null,null,null,null)),t["\u0275did"](7,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{ngValue:[0,"ngValue"]},null),t["\u0275did"](8,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,r)),t["\u0275did"](10,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,3,0,e.setting),l(n,7,0,null),l(n,8,0,null),l(n,10,0,e.limits.values)},function(l,n){var e=n.component;l(n,0,0,t["\u0275inlineInterpolate"](1,"",e.setting,""),t["\u0275inlineInterpolate"](1,"",e.setting,""),t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function s(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,6,"input",[["class","form-control"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,1)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,2).onChange(e.target.value)&&u),"input"===n&&(u=!1!==t["\u0275nov"](l,2).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,2).onTouched()&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](2,16384,null,0,u.C,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.C]),t["\u0275did"](4,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](6,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){l(n,4,0,n.component.setting)},function(l,n){l(n,0,0,t["\u0275nov"](n,6).ngClassUntouched,t["\u0275nov"](n,6).ngClassTouched,t["\u0275nov"](n,6).ngClassPristine,t["\u0275nov"](n,6).ngClassDirty,t["\u0275nov"](n,6).ngClassValid,t["\u0275nov"](n,6).ngClassInvalid,t["\u0275nov"](n,6).ngClassPending)})}function d(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,1)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){l(n,3,0,n.component.setting)},function(l,n){l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function c(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,21,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,9,"div",[["class","radio radio-inline"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,6,"input",[["class","custom-control-input"],["type","radio"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,4)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,4).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,4)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,4)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,5).onChange()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,5).onTouched()&&u),u},null,null)),t["\u0275did"](4,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](5,212992,null,0,u.w,[t.Renderer2,t.ElementRef,u.E,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.w]),t["\u0275did"](7,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](9,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](10,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Yes"])),(l()(),t["\u0275eld"](12,0,null,null,9,"div",[["class","radio radio-inline"]],null,null,null,null,null)),(l()(),t["\u0275eld"](13,0,null,null,6,"input",[["class","custom-control-input"],["type","radio"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,14)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,14).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,14)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,14)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,15).onChange()&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,15).onTouched()&&u),u},null,null)),t["\u0275did"](14,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](15,212992,null,0,u.w,[t.Renderer2,t.ElementRef,u.E,t.Injector],{formControlName:[0,"formControlName"],value:[1,"value"]},null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.w]),t["\u0275did"](17,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](19,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](20,0,null,null,1,"label",[["class","custom-control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["No"]))],function(l,n){var e=n.component;l(n,5,0,e.setting,!0),l(n,7,0,e.setting),l(n,15,0,e.setting,!1),l(n,17,0,e.setting)},function(l,n){var e=n.component;l(n,3,0,e.setting+"True",t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,10,0,e.setting+"True"),l(n,13,0,e.setting+"False",t["\u0275nov"](n,19).ngClassUntouched,t["\u0275nov"](n,19).ngClassTouched,t["\u0275nov"](n,19).ngClassPristine,t["\u0275nov"](n,19).ngClassDirty,t["\u0275nov"](n,19).ngClassValid,t["\u0275nov"](n,19).ngClassInvalid,t["\u0275nov"](n,19).ngClassPending),l(n,20,0,e.setting+"False")})}function p(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,s)),t["\u0275did"](2,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,d)),t["\u0275did"](4,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,c)),t["\u0275did"](6,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,2,0,"int"===e.limits.type),l(n,4,0,"str"===e.limits.type),l(n,6,0,"bool"===e.limits.type)},null)}function m(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["Must be greater than or equal to ","."]))],null,function(l,n){l(n,2,0,n.component.limits.min)})}function f(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["Must be less than or equal to ","."]))],null,function(l,n){l(n,2,0,n.component.limits.max)})}function g(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,15,"div",[["class","form-group"]],[[2,"ng-untouched",null],[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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,3).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,3).onReset()&&u),u},null,null)),t["\u0275did"](1,278528,null,0,i.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),t["\u0275did"](3,540672,null,0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](5,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](6,0,null,null,1,"label",[["class","col-form-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),t["\u0275ted"](7,null,["",""])),(l()(),t["\u0275and"](16777216,null,null,1,null,a)),t["\u0275did"](9,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,p)),t["\u0275did"](11,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,m)),t["\u0275did"](13,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,f)),t["\u0275did"](15,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.settingsForm.showError(e.setting,e.formDir));l(n,1,0,"form-group",t),l(n,3,0,e.settingsForm),l(n,9,0,"enum"===e.limits.type),l(n,11,0,"enum"!==e.limits.type),l(n,13,0,e.settingsForm.showError(e.setting,e.formDir,"min")),l(n,15,0,e.settingsForm.showError(e.setting,e.formDir,"max"))},function(l,n){var e=n.component;l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending),l(n,6,0,t["\u0275inlineInterpolate"](1,"",e.setting,"")),l(n,7,0,e.setting)})}},gr3l:function(l,n,e){"use strict";e.d(n,"a",function(){return m});var t=e("gIcY"),u=e("LvDl"),i=e("VNr4"),o=(e("my5R"),e("F83c"),e("DNAf")),r=e("a96k"),a=(e("sne2"),e("QFaf")),s=e("1Ni5"),d=e("kvvV"),c=(e("kn/O"),e("Z4cD")),p=e("a6qe"),m=function(){function l(l,n,e,t,u,i,r,a){this.iscsiService=l,this.modalService=n,this.rbdService=e,this.router=t,this.route=u,this.i18n=i,this.taskWrapper=r,this.actionLabels=a,this.api_version=0,this.minimum_gateways=1,this.isEdit=!1,this.portalsSelections=[],this.imagesInitiatorSelections=[],this.groupDiskSelections=[],this.groupMembersSelections=[],this.imagesSettings={},this.messages={portals:new o.a({noOptions:this.i18n("There are no portals available.")},this.i18n),images:new o.a({noOptions:this.i18n("There are no images available.")},this.i18n),initiatorImage:new o.a({noOptions:this.i18n("There are no images available. Please make sure you add an image to the target.")},this.i18n),groupInitiator:new o.a({noOptions:this.i18n("There are no initiators available. Please make sure you add an initiator to the target.")},this.i18n)},this.IQN_REGEX=/^iqn\.(19|20)\d\d-(0[1-9]|1[0-2])\.\D{2,3}(\.[A-Za-z0-9-]+)+(:[A-Za-z0-9-\.]+)*$/,this.USER_REGEX=/[\w\.:@_-]{8,64}/,this.PASSWORD_REGEX=/[\w@\-_\/]{12,16}/,this.resource=this.i18n("target")}return l.prototype.ngOnInit=function(){var l=this,n=[this.iscsiService.listTargets(),this.rbdService.list(),this.iscsiService.portals(),this.iscsiService.settings(),this.iscsiService.version()];this.router.url.startsWith("/block/iscsi/targets/edit")&&(this.isEdit=!0,this.route.params.subscribe(function(e){l.target_iqn=decodeURIComponent(e.target_iqn),n.push(l.iscsiService.getTarget(l.target_iqn))})),this.action=this.isEdit?this.actionLabels.EDIT:this.actionLabels.CREATE,Object(i.a)(n).subscribe(function(n){var e=u(n[0]).filter(function(n){return n.target_iqn!==l.target_iqn}).flatMap(function(l){return l.disks}).map(function(l){return l.pool+"/"+l.image}).value();"api_version"in n[3]&&(l.api_version=n[3].api_version),l.minimum_gateways=n[3].config.minimum_gateways,l.target_default_controls=n[3].target_default_controls,l.target_controls_limits=n[3].target_controls_limits,l.disk_default_controls=n[3].disk_default_controls,l.disk_controls_limits=n[3].disk_controls_limits,l.backstores=n[3].backstores,l.default_backstore=n[3].default_backstore,l.unsupported_rbd_features=n[3].unsupported_rbd_features,l.required_rbd_features=n[3].required_rbd_features,l.imagesAll=u(n[1]).flatMap(function(l){return l.value}).filter(function(n){return-1===e.indexOf(n.pool_name+"/"+n.name)&&0!==l.getValidBackstores(n).length}).value(),l.imagesSelections=l.imagesAll.map(function(l){return new r.a(!1,l.pool_name+"/"+l.name,"")});var t=[];n[2].forEach(function(l){l.ip_addresses.forEach(function(n){t.push(new r.a(!1,l.name+":"+n,""))})}),l.portalsSelections=t.slice(),l.cephIscsiConfigVersion=n[4].ceph_iscsi_config_version,l.createForm(),n[5]&&l.resolveModel(n[5])})},l.prototype.createForm=function(){var l=this;if(this.targetForm=new a.a({target_iqn:new t.i("iqn.2001-07.com.ceph:"+Date.now(),{validators:[t.A.required,t.A.pattern(this.IQN_REGEX)]}),target_controls:new t.i({}),portals:new t.i([],{validators:[s.a.custom("minGateways",function(n){return u.uniq(n.map(function(l){return l.split(":")[0]})).length<Math.max(1,l.minimum_gateways)})]}),disks:new t.i([],{validators:[s.a.custom("dupLunId",function(n){var e=l.getLunIds(n);return e.length!==u.uniq(e).length}),s.a.custom("dupWwn",function(n){var e=l.getWwns(n);return e.length!==u.uniq(e).length})]}),initiators:new t.f([]),groups:new t.f([]),acl_enabled:new t.i(!1)}),this.cephIscsiConfigVersion>10){var n=new a.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")});this.setAuthValidator(n),this.targetForm.addControl("auth",n)}},l.prototype.resolveModel=function(l){var n=this;this.targetForm.patchValue({target_iqn:l.target_iqn,target_controls:l.target_controls,acl_enabled:l.acl_enabled}),this.cephIscsiConfigVersion>10&&this.targetForm.patchValue({auth:l.auth});var e=[];u.forEach(l.portals,function(l){e.push(l.host+":"+l.ip)}),this.targetForm.patchValue({portals:e});var t=[];u.forEach(l.disks,function(l){var e=l.pool+"/"+l.image;t.push(e),n.imagesSettings[e]={backstore:l.backstore},n.imagesSettings[e][l.backstore]=l.controls,"lun"in l&&(n.imagesSettings[e].lun=l.lun),"wwn"in l&&(n.imagesSettings[e].wwn=l.wwn),n.onImageSelection({option:{name:e,selected:!0}})}),this.targetForm.patchValue({disks:t}),u.forEach(l.clients,function(l){var e=n.addInitiator();l.luns=u.map(l.luns,function(l){return l.pool+"/"+l.image}),e.patchValue(l)}),u.forEach(l.groups,function(l){var e=n.addGroup();l.disks=u.map(l.disks,function(l){return l.pool+"/"+l.image}),e.patchValue(l),u.forEach(l.members,function(l){n.onGroupMemberSelection({option:new r.a(!0,l,"")})})})},l.prototype.hasAdvancedSettings=function(l){return Object.values(l).length>0},Object.defineProperty(l.prototype,"portals",{get:function(){return this.targetForm.get("portals")},enumerable:!0,configurable:!0}),l.prototype.onPortalSelection=function(){this.portals.setValue(this.portals.value)},l.prototype.removePortal=function(l,n){return this.portalsSelections.forEach(function(l){l.name===n&&(l.selected=!1)}),this.portals.value.splice(l,1),this.portals.setValue(this.portals.value),!1},Object.defineProperty(l.prototype,"disks",{get:function(){return this.targetForm.get("disks")},enumerable:!0,configurable:!0}),l.prototype.removeImage=function(l,n){return this.imagesSelections.forEach(function(l){l.name===n&&(l.selected=!1)}),this.disks.value.splice(l,1),this.removeImageRefs(n),this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1}),!1},l.prototype.removeImageRefs=function(l){var n=this;this.initiators.controls.forEach(function(n){var e=n.value.luns.filter(function(n){return n!==l});n.get("luns").setValue(e)}),this.groups.controls.forEach(function(n){var e=n.value.disks.filter(function(n){return n!==l});n.get("disks").setValue(e)}),u.forEach(this.imagesInitiatorSelections,function(e,t){n.imagesInitiatorSelections[t]=e.filter(function(n){return n.name!==l})}),u.forEach(this.groupDiskSelections,function(e,t){n.groupDiskSelections[t]=e.filter(function(n){return n.name!==l})})},l.prototype.getDefaultBackstore=function(l){var n=this,e=this.default_backstore,t=this.getImageById(l);return this.validFeatures(t,this.default_backstore)||this.backstores.forEach(function(l){l!==n.default_backstore&&n.validFeatures(t,l)&&(e=l)}),e},l.prototype.isLunIdInUse=function(l,n){var e=this.disks.value.filter(function(l){return l!==n});return this.getLunIds(e).includes(l)},l.prototype.getLunIds=function(l){var n=this;return u.map(l,function(l){return n.imagesSettings[l].lun})},l.prototype.nextLunId=function(l){for(var n=this.disks.value.filter(function(n){return n!==l}),e=this.getLunIds(n),t=0;e.includes(t);)t++;return t},l.prototype.getWwns=function(l){var n=this;return u.map(l,function(l){return n.imagesSettings[l].wwn}).filter(function(l){return u.isString(l)&&""!==l})},l.prototype.onImageSelection=function(l){var n=this,e=l.option;if(e.selected){if(this.imagesSettings[e.name])this.isLunIdInUse(this.imagesSettings[e.name].lun,e.name)&&(this.imagesSettings[e.name].lun=this.nextLunId(e.name));else{var t=this.getDefaultBackstore(e.name);this.imagesSettings[e.name]={backstore:t,lun:this.nextLunId(e.name)},this.imagesSettings[e.name][t]={}}u.forEach(this.imagesInitiatorSelections,function(l,t){l.push(new r.a(!1,e.name,"")),n.imagesInitiatorSelections[t]=l.slice()}),u.forEach(this.groupDiskSelections,function(l,t){l.push(new r.a(!1,e.name,"")),n.groupDiskSelections[t]=l.slice()})}else this.removeImageRefs(e.name);this.targetForm.get("disks").updateValueAndValidity({emitEvent:!1})},Object.defineProperty(l.prototype,"initiators",{get:function(){return this.targetForm.get("initiators")},enumerable:!0,configurable:!0}),l.prototype.addInitiator=function(){var l=this,n=new a.a({client_iqn:new t.i("",{validators:[t.A.required,s.a.custom("notUnique",function(n){var e=l.initiators.controls.reduce(function(l,n){return l.concat(n.value.client_iqn)},[]);return e.indexOf(n)!==e.lastIndexOf(n)}),t.A.pattern(this.IQN_REGEX)]}),auth:new a.a({user:new t.i(""),password:new t.i(""),mutual_user:new t.i(""),mutual_password:new t.i("")}),luns:new t.i([]),cdIsInGroup:new t.i(!1)});this.setAuthValidator(n),this.initiators.push(n),u.forEach(this.groupMembersSelections,function(n,e){n.push(new r.a(!1,"","")),l.groupMembersSelections[e]=n.slice()});var e=u.map(this.targetForm.getValue("disks"),function(l){return new r.a(!1,l,"")});return this.imagesInitiatorSelections.push(e),n},l.prototype.setAuthValidator=function(l){s.a.validateIf(l.get("user"),function(){return l.getValue("password")||l.getValue("mutual_user")||l.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[l.get("password"),l.get("mutual_user"),l.get("mutual_password")]),s.a.validateIf(l.get("password"),function(){return l.getValue("user")||l.getValue("mutual_user")||l.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("mutual_user"),l.get("mutual_password")]),s.a.validateIf(l.get("mutual_user"),function(){return l.getValue("mutual_password")},[t.A.required],[t.A.pattern(this.USER_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_password")]),s.a.validateIf(l.get("mutual_password"),function(){return l.getValue("mutual_user")},[t.A.required],[t.A.pattern(this.PASSWORD_REGEX)],[l.get("user"),l.get("password"),l.get("mutual_user")])},l.prototype.removeInitiator=function(l){var n=this,e=this.initiators.value[l];this.initiators.removeAt(l),u.forEach(this.groupMembersSelections,function(e,t){e.splice(l,1),n.groupMembersSelections[t]=e.slice()}),this.groups.controls.forEach(function(l){var n=l.value.members.filter(function(l){return l!==e.client_iqn});l.get("members").setValue(n)}),this.imagesInitiatorSelections.splice(l,1)},l.prototype.updatedInitiatorSelector=function(){var l=this;this.initiators.controls.forEach(function(l){l.get("client_iqn").updateValueAndValidity({emitEvent:!1})}),u.forEach(this.groupMembersSelections,function(n,e){u.forEach(n,function(n,e){var t=n.name;n.name=l.initiators.controls[e].value.client_iqn,l.groups.controls.forEach(function(l){var e=l.value.members,u=e.indexOf(t);-1!==u&&(e[u]=n.name),l.get("members").setValue(e)})}),l.groupMembersSelections[e]=l.groupMembersSelections[e].slice()})},l.prototype.removeInitiatorImage=function(l,n,e,t){var u=l.getValue("luns");return u.splice(n,1),l.patchValue({luns:u}),this.imagesInitiatorSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),!1},Object.defineProperty(l.prototype,"groups",{get:function(){return this.targetForm.get("groups")},enumerable:!0,configurable:!0}),l.prototype.addGroup=function(){var l=new a.a({group_id:new t.i("",{validators:[t.A.required]}),members:new t.i([]),disks:new t.i([])});this.groups.push(l);var n=u.map(this.targetForm.getValue("disks"),function(l){return new r.a(!1,l,"")});this.groupDiskSelections.push(n);var e=u.map(this.initiators.value,function(l){return new r.a(!1,l.client_iqn,"",!l.cdIsInGroup)});return this.groupMembersSelections.push(e),l},l.prototype.removeGroup=function(l){this.groups.removeAt(l),this.groupDiskSelections.splice(l,1)},l.prototype.onGroupMemberSelection=function(l){var n,e=l.option;this.initiators.controls.forEach(function(l,t){l.value.client_iqn===e.name&&(l.patchValue({luns:[]}),l.get("cdIsInGroup").setValue(e.selected),n=t)}),u.forEach(this.groupMembersSelections,function(l){l[n].enabled=!e.selected})},l.prototype.removeGroupInitiator=function(l,n,e){var t=l.getValue("members")[n];l.getValue("members").splice(n,1),this.groupMembersSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),this.groupMembersSelections[e]=this.groupMembersSelections[e].slice(),this.onGroupMemberSelection({option:new r.a(!1,t,"")})},l.prototype.removeGroupDisk=function(l,n,e){var t=l.getValue("disks")[n];l.getValue("disks").splice(n,1),this.groupDiskSelections[e].forEach(function(l){l.name===t&&(l.selected=!1)}),this.groupDiskSelections[e]=this.groupDiskSelections[e].slice()},l.prototype.submit=function(){var l,n=this,e=u.cloneDeep(this.targetForm.value),t={target_iqn:this.targetForm.getValue("target_iqn"),target_controls:this.targetForm.getValue("target_controls"),acl_enabled:this.targetForm.getValue("acl_enabled"),portals:[],disks:[],clients:[],groups:[]};if(this.cephIscsiConfigVersion>10){var i=this.targetForm.get("auth");i.getValue("user")||i.get("user").setValue(""),i.getValue("password")||i.get("password").setValue(""),i.getValue("mutual_user")||i.get("mutual_user").setValue(""),i.getValue("mutual_password")||i.get("mutual_password").setValue("");var o=this.targetForm.getValue("acl_enabled");t.auth={user:o?"":i.getValue("user"),password:o?"":i.getValue("password"),mutual_user:o?"":i.getValue("mutual_user"),mutual_password:o?"":i.getValue("mutual_password")}}e.disks.forEach(function(l){var e=l.split("/"),u=n.imagesSettings[l].backstore;t.disks.push({pool:e[0],image:e[1],backstore:u,controls:n.imagesSettings[l][u],lun:n.imagesSettings[l].lun,wwn:n.imagesSettings[l].wwn})}),e.portals.forEach(function(l){var n=l.indexOf(":");t.portals.push({host:l.substring(0,n),ip:l.substring(n+1)})}),t.acl_enabled&&(e.initiators.forEach(function(l){l.auth.user||(l.auth.user=""),l.auth.password||(l.auth.password=""),l.auth.mutual_user||(l.auth.mutual_user=""),l.auth.mutual_password||(l.auth.mutual_password=""),delete l.cdIsInGroup;var n=[];l.luns.forEach(function(l){var e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.luns=n}),t.clients=e.initiators),t.acl_enabled&&(e.groups.forEach(function(l){var n=[];l.disks.forEach(function(l){var e=l.split("/");n.push({pool:e[0],image:e[1]})}),l.disks=n}),t.groups=e.groups),this.isEdit?(t.new_target_iqn=t.target_iqn,t.target_iqn=this.target_iqn,l=this.taskWrapper.wrapTaskAroundCall({task:new d.a("iscsi/target/edit",{target_iqn:t.target_iqn}),call:this.iscsiService.updateTarget(this.target_iqn,t)})):l=this.taskWrapper.wrapTaskAroundCall({task:new d.a("iscsi/target/create",{target_iqn:t.target_iqn}),call:this.iscsiService.createTarget(t)}),l.subscribe(void 0,function(){n.targetForm.setErrors({cdSubmitButton:!0})},function(){return n.router.navigate(["/block/iscsi/targets"])})},l.prototype.targetSettingsModal=function(){var l={target_controls:this.targetForm.get("target_controls"),target_default_controls:this.target_default_controls,target_controls_limits:this.target_controls_limits};this.modalRef=this.modalService.show(p.a,{initialState:l})},l.prototype.imageSettingsModal=function(l){var n={imagesSettings:this.imagesSettings,image:l,api_version:this.api_version,disk_default_controls:this.disk_default_controls,disk_controls_limits:this.disk_controls_limits,backstores:this.getValidBackstores(this.getImageById(l)),control:this.targetForm.get("disks")};this.modalRef=this.modalService.show(c.a,{initialState:n})},l.prototype.validFeatures=function(l,n){var e=l.features,t=this.required_rbd_features[n];return(e&t)===t&&0==(e&this.unsupported_rbd_features[n])},l.prototype.getImageById=function(l){return this.imagesAll.find(function(n){return l===n.pool_name+"/"+n.name})},l.prototype.getValidBackstores=function(l){var n=this;return this.backstores.filter(function(e){return n.validFeatures(l,e)})},l}()},jMP8:function(l,n,e){"use strict";e.d(n,"a",function(){return u});var t=e("gIcY"),u=(e("QFaf"),function(){function l(){}return l.prototype.ngOnInit=function(){var l=[];"min"in this.limits&&l.push(t.A.min(this.limits.min)),"max"in this.limits&&l.push(t.A.max(this.limits.max)),this.settingsForm.get(this.setting).setValidators(l)},l}())},"k/xb":function(l,n,e){"use strict";e.d(n,"a",function(){return u}),e.d(n,"b",function(){return v}),e.d(n,"c",function(){return i}),e.d(n,"d",function(){return o}),e.d(n,"g",function(){return r}),e.d(n,"h",function(){return a}),e.d(n,"i",function(){return s}),e.d(n,"j",function(){return d}),e.d(n,"k",function(){return c}),e.d(n,"l",function(){return p}),e.d(n,"m",function(){return m}),e.d(n,"n",function(){return f}),e.d(n,"e",function(){return g}),e.d(n,"f",function(){return h});var t=e("sne2"),u=(e("Vhfg"),e("gr3l"),e("e/kN"),e("roDX"),e("cxJu"),e("MyVl"),e("wG1H"),function(){return function(){}}()),i={breadcrumbs:"Images"},o={breadcrumbs:t.a.CREATE},r={breadcrumbs:t.a.EDIT},a={breadcrumbs:t.a.CLONE},s={breadcrumbs:t.a.COPY},d={breadcrumbs:t.a.COPY},c={breadcrumbs:"Mirroring"},p={breadcrumbs:"iSCSI"},m={breadcrumbs:"Overview"},f={breadcrumbs:"Targets"},g={breadcrumbs:t.a.CREATE},h={breadcrumbs:t.a.EDIT},v=function(){return function(){}}()},kccj:function(l,n,e){"use strict";e.d(n,"a",function(){return t});var t=function(){return function(){}}()},l7Jr:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("eF8U"),o=e("jMP8"),r=e("EEJc"),a=e("ajRT"),s=e("gIcY"),d=e("gp3X"),c=e("sb0X"),p=e("KVJa"),m=e("Z21x"),f=e("sne2"),g=e("a6qe"),h=e("DQlY"),v=e("my5R");e.d(n,"a",function(){return w});var b=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"div",[["class","form-group row"]],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,u.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),(l()(),t["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,"cd-iscsi-setting",[],null,null,null,i.b,i.a)),t["\u0275did"](5,114688,null,0,o.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],function(l,n){var e=n.component,u=l(n,2,0,e.settingsForm.showError(n.context.$implicit.key,t["\u0275nov"](n.parent,7)));l(n,1,0,"form-group row",u),l(n,5,0,e.settingsForm,t["\u0275nov"](n.parent,7),n.context.$implicit.key,e.getTargetControlLimits(n.context.$implicit.key))},null)}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,22,"cd-modal",[],null,null,null,r.c,r.b)),t["\u0275did"](1,49152,null,0,a.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Advanced Settings"])),(l()(),t["\u0275eld"](4,0,null,1,18,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,17,"form",[["class","form"],["name","settingsForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,s.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,s.d,null,[s.l]),t["\u0275did"](9,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,5,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["\u0275and"](16777216,null,null,2,null,y)),t["\u0275did"](14,278528,null,0,u.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["\u0275pid"](0,u.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["\u0275eld"](16,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](17,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](18,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t},d.b,d.a)),t["\u0275did"](19,114688,null,0,c.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Confirm"])),(l()(),t["\u0275eld"](21,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,p.b,p.a)),t["\u0275did"](22,49152,null,0,m.a,[u.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.settingsForm),l(n,14,0,t["\u0275unv"](n,14,0,t["\u0275nov"](n,15).transform(e.settingsForm.controls))),l(n,19,0,e.settingsForm),l(n,22,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending)})}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-iqn-settings-modal",[],null,null,null,C,b)),t["\u0275did"](1,114688,null,0,g.a,[h.a,v.a],null,null)],function(l,n){l(n,1,0)},null)}var w=t["\u0275ccf"]("cd-iscsi-target-iqn-settings-modal",g.a,_,{},{},[])},"lz+O":function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R"),o=e("EEJc"),r=e("ajRT"),a=e("gp3X"),s=e("sb0X"),d=e("KVJa"),c=e("Z21x"),p=e("sne2"),m=e("WxU5"),f=e("aexS"),g=e("F83c"),h=e("DQlY"),v=e("2EZI"),b=e("Ekvf"),y=e("kn/O");e.d(n,"a",function(){return k});var C=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","poolName"],["placeholder","Pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,1)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,1)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){l(n,3,0,"poolName")},function(l,n){l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,11,"select",[["class","form-control"],["formControlName","poolName"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,1).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,1).onTouched()&&u),u},null,null)),t["\u0275did"](1,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](3,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](5,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275eld"](6,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),t["\u0275did"](7,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](8,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](-1,null,["All"])),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](11,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,3,0,"poolName"),l(n,7,0,""),l(n,8,0,""),l(n,11,0,e.pools)},function(l,n){l(n,0,0,t["\u0275nov"](n,5).ngClassUntouched,t["\u0275nov"](n,5).ngClassTouched,t["\u0275nov"](n,5).ngClassPristine,t["\u0275nov"](n,5).ngClassDirty,t["\u0275nov"](n,5).ngClassValid,t["\u0275nov"](n,5).ngClassInvalid,t["\u0275nov"](n,5).ngClassPending)})}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,31,"cd-modal",[],null,null,null,o.c,o.b)),t["\u0275did"](1,49152,null,0,r.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Purge Trash"])),(l()(),t["\u0275eld"](4,0,null,1,27,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,26,"form",[["class","form"],["name","purgeForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,u.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](9,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,14,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,6,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To purge, select one or All images and click"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](15,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Purge Trash"])),(l()(),t["\u0275ted"](-1,null,[".\xa0 "])),(l()(),t["\u0275eld"](18,0,null,null,6,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,1,"label",[["class","center-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Pool:"])),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](22,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,I)),t["\u0275did"](24,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](25,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](26,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](27,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.purge()&&t),t},a.b,a.a)),t["\u0275did"](28,114688,null,0,s.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Purge Trash"])),(l()(),t["\u0275eld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),t["\u0275did"](31,49152,null,0,c.a,[i.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.purgeForm),l(n,22,0,!e.poolPermission.read),l(n,24,0,e.poolPermission.read),l(n,28,0,e.purgeForm),l(n,31,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending)})}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-rbd-trash-purge-modal",[],null,null,null,S,C)),t["\u0275did"](1,114688,null,0,m.a,[f.a,g.a,h.a,v.a,b.a,y.a],null,null)],function(l,n){l(n,1,0)},null)}var k=t["\u0275ccf"]("cd-rbd-trash-purge-modal",m.a,R,{},{},[])},my5R:function(l,n,e){"use strict";e.d(n,"a",function(){return a});var t=e("mrSG"),u=e("t/Na"),i=e("xTzq"),o=e("CcnG"),r=e("pL04"),a=function(){function l(l){this.http=l}return l.prototype.listTargets=function(){return this.http.get("api/iscsi/target")},l.prototype.getTarget=function(l){return this.http.get("api/iscsi/target/"+l)},l.prototype.updateTarget=function(l,n){return this.http.put("api/iscsi/target/"+l,n,{observe:"response"})},l.prototype.status=function(){return this.http.get("ui-api/iscsi/status")},l.prototype.settings=function(){return this.http.get("ui-api/iscsi/settings")},l.prototype.version=function(){return this.http.get("ui-api/iscsi/version")},l.prototype.portals=function(){return this.http.get("ui-api/iscsi/portals")},l.prototype.createTarget=function(l){return this.http.post("api/iscsi/target",l,{observe:"response"})},l.prototype.deleteTarget=function(l){return this.http.delete("api/iscsi/target/"+l,{observe:"response"})},l.prototype.getDiscovery=function(){return this.http.get("api/iscsi/discoveryauth")},l.prototype.updateDiscovery=function(l){return this.http.put("api/iscsi/discoveryauth",l)},l.prototype.overview=function(){return this.http.get("ui-api/iscsi/overview")},l.ngInjectableDef=o.defineInjectable({factory:function(){return new l(o.inject(u.c))},token:l,providedIn:r.a}),l=t.__decorate([i.a,t.__metadata("design:paramtypes",[u.c])],l)}()},nP0W:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("EEJc"),o=e("ajRT"),r=e("Ip0R"),a=e("gp3X"),s=e("sb0X"),d=e("KVJa"),c=e("Z21x"),p=e("sne2"),m=e("aa9H"),f=e("DQlY"),g=e("Jm/i"),h=e("XED3"),v=e("kn/O");e.d(n,"a",function(){return I});var b=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.id),l(n,2,0,n.context.$implicit.id)},function(l,n){l(n,3,0,n.context.$implicit.name)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Peer clusters must be removed prior to disabling mirror."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,42,"cd-modal",[],null,null,null,i.c,i.b)),t["\u0275did"](1,49152,null,0,o.a,[],null,null),(l()(),t["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Edit pool mirror mode"])),(l()(),t["\u0275eld"](4,0,null,1,38,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,37,"form",[["class","form"],["name","editModeForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,7).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,7).onReset()&&u),u},null,null)),t["\u0275did"](6,16384,null,0,u.D,[],null,null),t["\u0275did"](7,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](9,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](10,0,null,null,25,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](11,0,null,null,8,"p",[],null,null,null,null,null)),(l()(),t["\u0275eld"](12,0,null,null,7,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["To edit the mirror mode for pool\xa0 "])),(l()(),t["\u0275eld"](14,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](15,null,["",""])),(l()(),t["\u0275ted"](-1,null,[", select a new mode from the list and click\xa0 "])),(l()(),t["\u0275eld"](17,0,null,null,1,"kbd",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Update"])),(l()(),t["\u0275ted"](-1,null,["."])),(l()(),t["\u0275eld"](20,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),t["\u0275did"](21,278528,null,0,r.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](22,{"has-error":0}),(l()(),t["\u0275eld"](23,0,null,null,2,"label",[["class","control-label"],["for","mirrorMode"]],null,null,null,null,null)),(l()(),t["\u0275eld"](24,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Mode"])),(l()(),t["\u0275eld"](26,0,null,null,7,"select",[["class","form-control"],["formControlName","mirrorMode"],["id","mirrorMode"],["name","mirrorMode"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,27).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onTouched()&&u),u},null,null)),t["\u0275did"](27,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](29,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](31,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](33,278528,null,0,r.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](35,16384,null,0,r.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](36,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](37,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](38,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.update()&&t),t},a.b,a.a)),t["\u0275did"](39,114688,null,0,s.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Update"])),(l()(),t["\u0275eld"](41,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),t["\u0275did"](42,49152,null,0,c.a,[r.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,7,0,e.editModeForm);var u=l(n,22,0,e.editModeForm.showError("mirrorMode",t["\u0275nov"](n,7)));l(n,21,0,"form-group",u),l(n,29,0,"mirrorMode"),l(n,33,0,e.mirrorModes),l(n,35,0,e.editModeForm.showError("mirrorMode",t["\u0275nov"](n,7),"cannotDisable")),l(n,39,0,e.editModeForm),l(n,42,0,"Cancel",e.modalRef.hide)},function(l,n){var e=n.component;l(n,5,0,t["\u0275nov"](n,9).ngClassUntouched,t["\u0275nov"](n,9).ngClassTouched,t["\u0275nov"](n,9).ngClassPristine,t["\u0275nov"](n,9).ngClassDirty,t["\u0275nov"](n,9).ngClassValid,t["\u0275nov"](n,9).ngClassInvalid,t["\u0275nov"](n,9).ngClassPending),l(n,15,0,e.poolName),l(n,26,0,t["\u0275nov"](n,31).ngClassUntouched,t["\u0275nov"](n,31).ngClassTouched,t["\u0275nov"](n,31).ngClassPristine,t["\u0275nov"](n,31).ngClassDirty,t["\u0275nov"](n,31).ngClassValid,t["\u0275nov"](n,31).ngClassInvalid,t["\u0275nov"](n,31).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-pool-edit-mode-modal",[],null,null,null,_,b)),t["\u0275did"](1,245760,null,0,m.a,[f.a,g.a,h.a,v.a],null,null)],function(l,n){l(n,1,0)},null)}var I=t["\u0275ccf"]("cd-pool-edit-mode-modal",m.a,w,{},{},[])},nhAp:function(l,n,e){"use strict";var t=e("CcnG"),u=e("gIcY"),i=e("Ip0R"),o=e("eF8U"),r=e("jMP8"),a=e("uYzU"),s=e("EEJc"),d=e("ajRT"),c=e("gp3X"),p=e("sb0X"),m=e("KVJa"),f=e("Z21x"),g=e("sne2"),h=e("Z4cD"),v=e("DQlY"),b=e("my5R");e.d(n,"a",function(){return E});var y=t["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[["class","invalid-feedback"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,27,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Identifier"])),(l()(),t["\u0275eld"](3,0,null,null,14,"div",[["class","form-group row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,13,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](5,0,null,null,3,"label",[["class","col-form-label"],["for","lun"]],null,null,null,null,null)),(l()(),t["\u0275eld"](6,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["lun"])),(l()(),t["\u0275eld"](8,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),t["\u0275eld"](9,0,null,null,6,"input",[["class","form-control"],["formControlName","lun"],["id","lun"],["name","lun"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,10)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,10).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,10)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,10)._compositionEnd(e.target.value)&&u),"change"===n&&(u=!1!==t["\u0275nov"](l,11).onChange(e.target.value)&&u),"input"===n&&(u=!1!==t["\u0275nov"](l,11).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,11).onTouched()&&u),u},null,null)),t["\u0275did"](10,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275did"](11,16384,null,0,u.C,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l,n){return[l,n]},[u.e,u.C]),t["\u0275did"](13,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](15,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,C)),t["\u0275did"](17,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](18,0,null,null,9,"div",[["class","form-group row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](19,0,null,null,8,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](20,0,null,null,1,"label",[["class","col-form-label"],["for","wwn"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["wwn"])),(l()(),t["\u0275eld"](22,0,null,null,5,"input",[["class","form-control"],["formControlName","wwn"],["id","wwn"],["name","wwn"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var u=!0;return"input"===n&&(u=!1!==t["\u0275nov"](l,23)._handleInput(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,23).onTouched()&&u),"compositionstart"===n&&(u=!1!==t["\u0275nov"](l,23)._compositionStart()&&u),"compositionend"===n&&(u=!1!==t["\u0275nov"](l,23)._compositionEnd(e.target.value)&&u),u},null,null)),t["\u0275did"](23,16384,null,0,u.e,[t.Renderer2,t.ElementRef,[2,u.b]],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.e]),t["\u0275did"](25,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](27,16384,null,0,u.r,[[4,u.q]],null,null)],function(l,n){var e=n.component;l(n,13,0,"lun"),l(n,17,0,e.settingsForm.showError("lun",t["\u0275nov"](n.parent,12),"required")),l(n,25,0,"wwn")},function(l,n){l(n,9,0,t["\u0275nov"](n,15).ngClassUntouched,t["\u0275nov"](n,15).ngClassTouched,t["\u0275nov"](n,15).ngClassPristine,t["\u0275nov"](n,15).ngClassDirty,t["\u0275nov"](n,15).ngClassValid,t["\u0275nov"](n,15).ngClassInvalid,t["\u0275nov"](n,15).ngClassPending),l(n,22,0,t["\u0275nov"](n,27).ngClassUntouched,t["\u0275nov"](n,27).ngClassTouched,t["\u0275nov"](n,27).ngClassPristine,t["\u0275nov"](n,27).ngClassDirty,t["\u0275nov"](n,27).ngClassValid,t["\u0275nov"](n,27).ngClassInvalid,t["\u0275nov"](n,27).ngClassPending)})}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,"option",[],null,null,null,null,null)),t["\u0275did"](1,147456,null,0,u.v,[t.ElementRef,t.Renderer2,[2,u.z]],{value:[0,"value"]},null),t["\u0275did"](2,147456,null,0,u.G,[t.ElementRef,t.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),t["\u0275ted"](3,null,["",""])),t["\u0275ppd"](4,1)],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){var e=t["\u0275unv"](n,3,0,l(n,4,0,t["\u0275nov"](n.parent,0),n.context.$implicit));l(n,3,0,e)})}function I(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"div",[["class","form-group row"]],null,null,null,null,null)),t["\u0275did"](1,278528,null,0,i.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pod"](2,{"has-error":0}),(l()(),t["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,"cd-iscsi-setting",[],null,null,null,o.b,o.a)),t["\u0275did"](5,114688,null,0,r.a,[],{settingsForm:[0,"settingsForm"],formDir:[1,"formDir"],setting:[2,"setting"],limits:[3,"limits"]},null)],function(l,n){var e=n.component,u=l(n,2,0,e.settingsForm.showError(n.context.$implicit.key,t["\u0275nov"](n.parent.parent.parent,12)));l(n,1,0,"form-group row",u),l(n,5,0,e.settingsForm,t["\u0275nov"](n.parent.parent.parent,12),n.context.$implicit.key,e.getDiskControlLimits(n.parent.parent.context.$implicit,n.context.$implicit.key))},null)}function S(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,2,null,I)),t["\u0275did"](2,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),t["\u0275pid"](0,i.KeyValuePipe,[t.KeyValueDiffers]),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){var e=n.component;l(n,2,0,t["\u0275unv"](n,2,0,t["\u0275nov"](n,3).transform(e.disk_default_controls[n.parent.context.$implicit])))},null)}function R(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,S)),t["\u0275did"](2,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,2,0,n.component.settingsForm.value.backstore===n.context.$implicit)},null)}function k(l){return t["\u0275vid"](0,[t["\u0275pid"](0,a.a,[]),(l()(),t["\u0275eld"](1,0,null,null,41,"cd-modal",[],null,null,null,s.c,s.b)),t["\u0275did"](2,49152,null,0,d.a,[],null,null),(l()(),t["\u0275eld"](3,0,null,0,5,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Configure"])),(l()(),t["\u0275ted"](-1,null,["\xa0 "])),(l()(),t["\u0275eld"](7,0,null,null,1,"small",[],null,null,null,null,null)),(l()(),t["\u0275ted"](8,null,["",""])),(l()(),t["\u0275eld"](9,0,null,1,33,null,null,null,null,null,null,null)),(l()(),t["\u0275eld"](10,0,null,null,32,"form",[["class","form"],["name","settingsForm"],["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(l,n,e){var u=!0;return"submit"===n&&(u=!1!==t["\u0275nov"](l,12).onSubmit(e)&&u),"reset"===n&&(u=!1!==t["\u0275nov"](l,12).onReset()&&u),u},null,null)),t["\u0275did"](11,16384,null,0,u.D,[],null,null),t["\u0275did"](12,540672,[["formDir",4]],0,u.l,[[8,null],[8,null]],{form:[0,"form"]},null),t["\u0275prd"](2048,null,u.d,null,[u.l]),t["\u0275did"](14,16384,null,0,u.s,[[4,u.d]],null,null),(l()(),t["\u0275eld"](15,0,null,null,20,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),t["\u0275eld"](16,0,null,null,1,"p",[["class","alert-warning"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Changing these parameters from their default values is usually not necessary."])),(l()(),t["\u0275and"](16777216,null,null,1,null,_)),t["\u0275did"](19,16384,null,0,i.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275eld"](20,0,null,null,1,"legend",[["class","cd-header"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Settings"])),(l()(),t["\u0275eld"](22,0,null,null,11,"div",[["class","form-group row"]],null,null,null,null,null)),(l()(),t["\u0275eld"](23,0,null,null,10,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),t["\u0275eld"](24,0,null,null,1,"label",[["class","control-label"]],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["Backstore"])),(l()(),t["\u0275eld"](26,0,null,null,7,"select",[["class","form-control"],["formControlName","backstore"],["id","backstore"],["name","backstore"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var u=!0;return"change"===n&&(u=!1!==t["\u0275nov"](l,27).onChange(e.target.value)&&u),"blur"===n&&(u=!1!==t["\u0275nov"](l,27).onTouched()&&u),u},null,null)),t["\u0275did"](27,16384,null,0,u.z,[t.Renderer2,t.ElementRef],null,null),t["\u0275prd"](1024,null,u.p,function(l){return[l]},[u.z]),t["\u0275did"](29,671744,null,0,u.j,[[3,u.d],[8,null],[8,null],[6,u.p],[2,u.F]],{name:[0,"name"]},null),t["\u0275prd"](2048,null,u.q,null,[u.j]),t["\u0275did"](31,16384,null,0,u.r,[[4,u.q]],null,null),(l()(),t["\u0275and"](16777216,null,null,1,null,w)),t["\u0275did"](33,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,R)),t["\u0275did"](35,278528,null,0,i.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),t["\u0275eld"](36,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),t["\u0275eld"](37,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),t["\u0275eld"](38,0,null,null,2,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var t=!0;return"submitAction"===n&&(t=!1!==l.component.save()&&t),t},c.b,c.a)),t["\u0275did"](39,114688,null,0,p.a,[t.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),t["\u0275ted"](-1,0,["Confirm"])),(l()(),t["\u0275eld"](41,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,m.b,m.a)),t["\u0275did"](42,49152,null,0,f.a,[i.Location,g.b],{name:[0,"name"],back:[1,"back"]},null)],function(l,n){var e=n.component;l(n,12,0,e.settingsForm),l(n,19,0,e.api_version>=1),l(n,29,0,"backstore"),l(n,33,0,e.backstores),l(n,35,0,e.backstores),l(n,39,0,e.settingsForm),l(n,42,0,"Cancel",e.modalRef.hide)},function(l,n){l(n,8,0,n.component.image),l(n,10,0,t["\u0275nov"](n,14).ngClassUntouched,t["\u0275nov"](n,14).ngClassTouched,t["\u0275nov"](n,14).ngClassPristine,t["\u0275nov"](n,14).ngClassDirty,t["\u0275nov"](n,14).ngClassValid,t["\u0275nov"](n,14).ngClassInvalid,t["\u0275nov"](n,14).ngClassPending),l(n,26,0,t["\u0275nov"](n,31).ngClassUntouched,t["\u0275nov"](n,31).ngClassTouched,t["\u0275nov"](n,31).ngClassPristine,t["\u0275nov"](n,31).ngClassDirty,t["\u0275nov"](n,31).ngClassValid,t["\u0275nov"](n,31).ngClassInvalid,t["\u0275nov"](n,31).ngClassPending)})}function F(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-image-settings-modal",[],null,null,null,k,y)),t["\u0275did"](1,114688,null,0,h.a,[v.a,b.a],null,null)],function(l,n){l(n,1,0)},null)}var E=t["\u0275ccf"]("cd-iscsi-target-image-settings-modal",h.a,F,{},{},[])},o8EM:function(l,n,e){"use strict";e.d(n,"a",function(){return o});var t=e("PhyI"),u=e("CcnG"),i=e("Jm/i"),o=function(){function l(l){this.i18n=l,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:t.b.bps},{name:"rbd_qos_iops_limit",displayName:this.i18n("IOPS Limit"),description:this.i18n("The desired limit of IO operations per second."),type:t.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:t.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:t.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:t.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:t.b.iops},{name:"rbd_qos_bps_burst",displayName:this.i18n("BPS Burst"),description:this.i18n("The desired burst limit of IO bytes."),type:t.b.bps},{name:"rbd_qos_iops_burst",displayName:this.i18n("IOPS Burst"),description:this.i18n("The desired burst limit of IO operations."),type:t.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:t.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:t.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:t.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:t.b.iops}]}]}return l.getOptionsFromSections=function(l){return l.map(function(l){return l.options}).reduce(function(l,n){return l.concat(n)})},l.prototype.filterConfigOptionsByName=function(n){return l.getOptionsFromSections(this.sections).filter(function(l){return l.name===n})},l.prototype.getOptionValueByName=function(l,n,e){void 0===e&&(e="");var t=this.filterConfigOptionsByName(l);return 1===t.length?t.pop()[n]:e},l.prototype.getWritableSections=function(){return this.sections.map(function(l){return l.options=l.options.filter(function(l){return!l.readOnly}),l})},l.prototype.getOptionFields=function(){return l.getOptionsFromSections(this.sections)},l.prototype.getWritableOptionFields=function(){return l.getOptionsFromSections(this.getWritableSections())},l.prototype.getOptionByName=function(l){return this.filterConfigOptionsByName(l).pop()},l.prototype.getDisplayName=function(l){return this.getOptionValueByName(l,"displayName")},l.prototype.getDescription=function(l){return this.getOptionValueByName(l,"description")},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(i.a))},token:l,providedIn:"root"}),l}()},rFfW:function(l,n,e){"use strict";e.d(n,"a",function(){return r});var t=e("CcnG"),u=e("gIcY"),i=e("QFaf"),o=e("PhyI"),r=(e("aXbf"),e("o8EM"),function(){function l(l,n){this.formatterService=l,this.rbdConfigurationService=n,this.changes=new t.EventEmitter,this.ngDataReady=new t.EventEmitter,this.configurationType=o.b,this.sectionVisibility={}}return l.prototype.ngOnInit=function(){var l=this,n=this.createConfigurationFormGroup();this.form.addControl("configuration",n),n.valueChanges.subscribe(function(){l.changes.emit(l.getDirtyValues.bind(l))}),this.initializeData&&this.initializeData.subscribe(function(n){l.initialData=n.initialData;var e=n.sourceType;l.rbdConfigurationService.getWritableOptionFields().forEach(function(t){var u=n.initialData.filter(function(l){return l.name===t.name}).pop();u&&u.source===e&&l.form.get("configuration."+t.name).setValue(u.value)}),l.ngDataReady.emit()}),this.rbdConfigurationService.getWritableSections().forEach(function(n){return l.sectionVisibility[n.class]=!1})},l.prototype.getDirtyValues=function(l,n){var e=this;if(void 0===l&&(l=!1),l&&!n)throw new Error("ProgrammingError: If local values shall be included, a proper localFieldType argument has to be provided, too");var t={};return this.rbdConfigurationService.getWritableOptionFields().forEach(function(u){var i=e.form.get("configuration").get(u.name);e.initialData&&e.initialData[u.name]===i.value||(i.dirty||l&&i.source===n)&&(t[u.name]=null===i.value?i.value:u.type===o.b.bps?e.formatterService.toBytes(i.value):u.type===o.b.milliseconds?e.formatterService.toMilliseconds(i.value):u.type===o.b.iops?e.formatterService.toIops(i.value):i.value)}),t},l.prototype.createConfigurationFormGroup=function(){var l=new i.a({});return this.rbdConfigurationService.getWritableOptionFields().forEach(function(n){var e;if(n.type!==o.b.milliseconds&&n.type!==o.b.iops&&n.type!==o.b.bps)throw new Error("Type "+n.type+" is unknown, you may need to add it to RbdConfiguration class");e=new u.i(0,u.A.min(0)),l.addControl(n.name,e)}),l},l.prototype.reset=function(l){var n=this.form.get("configuration").get(l);n.disabled?(n.setValue(n.previousValue||0),n.enable(),n.previousValue||n.markAsPristine()):(n.previousValue=n.value,n.setValue(null),n.markAsDirty(),n.disable())},l.prototype.isDisabled=function(l){return this.form.get("configuration").get(l).disabled},l.prototype.toggleSectionVisibility=function(l){this.sectionVisibility[l]=!this.sectionVisibility[l]},l}())},roDX:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("my5R"),e("o4+5"),e("uYzU");var t=function(){function l(l,n,e,t){this.iscsiService=l,this.dimlessPipe=n,this.iscsiBackstorePipe=e,this.i18n=t,this.gateways=[],this.images=[]}return l.prototype.ngOnInit=function(){this.gatewaysColumns=[{name:this.i18n("Name"),prop:"name"},{name:this.i18n("State"),prop:"state",cellTemplate:this.statusColorTpl},{name:this.i18n("# Targets"),prop:"num_targets"},{name:this.i18n("# Sessions"),prop:"num_sessions"}],this.imagesColumns=[{name:this.i18n("Pool"),prop:"pool"},{name:this.i18n("Image"),prop:"image"},{name:this.i18n("Backstore"),prop:"backstore",pipe:this.iscsiBackstorePipe},{name:this.i18n("Read Bytes"),prop:"stats_history.rd_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Write Bytes"),prop:"stats_history.wr_bytes",cellTemplate:this.iscsiSparklineTpl},{name:this.i18n("Read Ops"),prop:"stats.rd",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("Write Ops"),prop:"stats.wr",pipe:this.dimlessPipe,cellTemplate:this.iscsiPerSecondTpl},{name:this.i18n("A/O Since"),prop:"optimized_since",cellTemplate:this.iscsiRelativeDateTpl}]},l.prototype.refresh=function(){var l=this;this.iscsiService.overview().subscribe(function(n){l.gateways=n.gateways,l.images=n.images,l.images.map(function(l){return l.stats_history&&(l.stats_history.rd_bytes=l.stats_history.rd_bytes.map(function(l){return l[1]}),l.stats_history.wr_bytes=l.stats_history.wr_bytes.map(function(l){return l[1]})),l.cdIsBinary=!0,l})})},l}()},u2XS:function(l,n,e){"use strict";var t=e("CcnG"),u=e("Ip0R"),i=e("25BL"),o=e("uIqm"),r=e("nuQ0"),a=e("Tff5"),s=e("urB8"),d=e("xtUU"),c=e("3ris"),p=e("Jm/i"),m=e("uYzU"),f=e("iExv");e.d(n,"b",function(){return g}),e.d(n,"c",function(){return _}),e.d(n,"a",function(){return I});var g=t["\u0275crt"]({encapsulation:0,styles:[["tree .fa{font-weight:unset!important}"]],data:{}});function h(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,0,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["\xa0"])),(l()(),t["\u0275eld"](3,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),t["\u0275did"](4,278528,null,0,u.NgClass,[t.IterableDiffers,t.KeyValueDiffers,t.ElementRef,t.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),t["\u0275pad"](5,1),t["\u0275pad"](6,1),t["\u0275pod"](7,{"label-success":0,"label-danger":1}),(l()(),t["\u0275ted"](8,null,[" "," "]))],function(l,n){var e=l(n,7,0,l(n,5,0,"logged_in").includes(n.context.$implicit.status),l(n,6,0,"logged_out").includes(n.context.$implicit.status));l(n,4,0,"label",e)},function(l,n){l(n,0,0,n.context.$implicit.value),l(n,8,0,n.context.$implicit.status)})}function v(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](2,null,["",""])),(l()(),t["\u0275eld"](3,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,i.b,i.a)),t["\u0275did"](4,2867200,[[2,4],["detailTable",4]],0,o.a,[t.NgZone,t.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],limit:[3,"limit"]},null)],function(l,n){var e=n.component;l(n,4,0,e.data,e.columns,"flex",0)},function(l,n){l(n,2,0,n.component.title)})}function b(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function y(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),t["\u0275ted"](1,null,["",""]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function C(l){return t["\u0275vid"](0,[(l()(),t["\u0275and"](16777216,null,null,1,null,b)),t["\u0275did"](1,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](16777216,null,null,1,null,y)),t["\u0275did"](3,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,void 0===n.context.row.default||n.context.row.default===n.context.row.current),l(n,3,0,void 0!==n.context.row.default&&n.context.row.default!==n.context.row.current)},null)}function _(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{highlightTpl:0}),t["\u0275qud"](671088640,2,{content:0}),(l()(),t["\u0275eld"](2,0,null,null,7,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(l()(),t["\u0275eld"](3,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),t["\u0275ted"](-1,null,["iSCSI Topology"])),(l()(),t["\u0275eld"](5,0,null,null,4,"tree",[],null,[[null,"nodeSelected"]],function(l,n,e){var t=!0;return"nodeSelected"===n&&(t=!1!==l.component.onNodeSelected(e)&&t),t},r.b,r.a)),t["\u0275prd"](512,null,a.TreeService,a.TreeService,[s.NodeDraggableService]),t["\u0275did"](7,770048,null,1,d.TreeComponent,[a.TreeService],{treeModel:[0,"treeModel"]},{nodeSelected:"nodeSelected"}),t["\u0275qud"](335544320,3,{template:0}),(l()(),t["\u0275and"](0,[[3,2]],null,0,null,h)),(l()(),t["\u0275and"](16777216,null,null,1,null,v)),t["\u0275did"](11,16384,null,0,u.NgIf,[t.ViewContainerRef,t.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),t["\u0275and"](0,[[1,2],["highlightTpl",2]],null,0,null,C))],function(l,n){var e=n.component;l(n,7,0,e.tree),l(n,11,0,e.data)},null)}function w(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-details",[],null,null,null,_,g)),t["\u0275did"](1,638976,null,0,c.a,[p.a,m.a,f.a],null,null)],function(l,n){l(n,1,0)},null)}var I=t["\u0275ccf"]("cd-iscsi-target-details",c.a,w,{selection:"selection",settings:"settings",cephIscsiConfigVersion:"cephIscsiConfigVersion"},{},[])},wG1H:function(l,n,e){"use strict";e.d(n,"a",function(){return t}),e("aexS");var t=function(){function l(l){this.authStorageService=l,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return l.prototype.ngOnInit=function(){},l}()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/3rdpartylicenses.txt b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/3rdpartylicenses.txt
new file mode 100644 (file)
index 0000000..304f6e6
--- /dev/null
@@ -0,0 +1,1559 @@
+@angular/animations
+MIT
+
+@angular/common
+MIT
+
+@angular/core
+MIT
+
+@angular/forms
+MIT
+
+@angular/platform-browser
+MIT
+
+@angular/router
+MIT
+
+@auth0/angular-jwt
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2017 Auth0 Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+@ngx-translate/i18n-polyfill
+MIT
+
+@swimlane/ngx-datatable
+MIT
+(The MIT License)
+
+Copyright (c) 2016 Swimlane <info@swimlane.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+awesome-bootstrap-checkbox
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2014 flatlogic.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+bootstrap
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2011-2019 Twitter, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+chart.js
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2018 Chart.js Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+chartjs-color
+MIT
+Copyright (c) 2012 Heather Arthur
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+chartjs-color-string
+MIT
+Copyright (c) 2011 Heather Arthur <fayearthur@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+color-convert
+Copyright (c) 2011 Heather Arthur <fayearthur@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+color-name
+MIT
+The MIT License (MIT)
+Copyright (c) 2015 Dmitry Ivanov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+core-js
+MIT
+Copyright (c) 2014-2019 Denis Pushkarev
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+detect-browser
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2019 Damon Oehlman <damon.oehlman@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+fork-awesome
+(OFL-1.1 AND MIT)
+/!\ The MIT License only applies to all CSS and LESS files in the following
+directories: fork-awesome/css/, fork-awesome/less/, and fork-awesome/scss/.
+
+MIT License
+
+Copyright (c) 2018 Dave Gandy & Fork Awesome
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*******************************************************************************
+
+/!\ The Creative Commons Attribution 3.0 Unported License applies to all Fork
+Awesome project files that are not a part of the Font or Code licenses.
+
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+    DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+    other pre-existing works, such as a translation, adaptation,
+    derivative work, arrangement of music or other alterations of a
+    literary or artistic work, or phonogram or performance and includes
+    cinematographic adaptations or any other form in which the Work may be
+    recast, transformed, or adapted including in any form recognizably
+    derived from the original, except that a work that constitutes a
+    Collection will not be considered an Adaptation for the purpose of
+    this License. For the avoidance of doubt, where the Work is a musical
+    work, performance or phonogram, the synchronization of the Work in
+    timed-relation with a moving image ("synching") will be considered an
+    Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+    encyclopedias and anthologies, or performances, phonograms or
+    broadcasts, or other works or subject matter other than works listed
+    in Section 1(f) below, which, by reason of the selection and
+    arrangement of their contents, constitute intellectual creations, in
+    which the Work is included in its entirety in unmodified form along
+    with one or more other contributions, each constituting separate and
+    independent works in themselves, which together are assembled into a
+    collective whole. A work that constitutes a Collection will not be
+    considered an Adaptation (as defined above) for the purposes of this
+    License.
+ c. "Distribute" means to make available to the public the original and
+    copies of the Work or Adaptation, as appropriate, through sale or
+    other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+    offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+    the individual, individuals, entity or entities who created the Work
+    or if no individual or entity can be identified, the publisher; and in
+    addition (i) in the case of a performance the actors, singers,
+    musicians, dancers, and other persons who act, sing, deliver, declaim,
+    play in, interpret or otherwise perform literary or artistic works or
+    expressions of folklore; (ii) in the case of a phonogram the producer
+    being the person or legal entity who first fixes the sounds of a
+    performance or other sounds; and, (iii) in the case of broadcasts, the
+    organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+    of this License including without limitation any production in the
+    literary, scientific and artistic domain, whatever may be the mode or
+    form of its expression including digital form, such as a book,
+    pamphlet and other writing; a lecture, address, sermon or other work
+    of the same nature; a dramatic or dramatico-musical work; a
+    choreographic work or entertainment in dumb show; a musical
+    composition with or without words; a cinematographic work to which are
+    assimilated works expressed by a process analogous to cinematography;
+    a work of drawing, painting, architecture, sculpture, engraving or
+    lithography; a photographic work to which are assimilated works
+    expressed by a process analogous to photography; a work of applied
+    art; an illustration, map, plan, sketch or three-dimensional work
+    relative to geography, topography, architecture or science; a
+    performance; a broadcast; a phonogram; a compilation of data to the
+    extent it is protected as a copyrightable work; or a work performed by
+    a variety or circus performer to the extent it is not otherwise
+    considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+    License who has not previously violated the terms of this License with
+    respect to the Work, or who has received express permission from the
+    Licensor to exercise rights under this License despite a previous
+    violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+    to communicate to the public those public recitations, by any means or
+    process, including by wire or wireless means or public digital
+    performances; to make available to the public Works in such a way that
+    members of the public may access these Works from a place and at a
+    place individually chosen by them; to perform the Work to the public
+    by any means or process and the communication to the public of the
+    performances of the Work, including by public digital performance; to
+    broadcast and rebroadcast the Work by any means including signs,
+    sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+    without limitation by sound or visual recordings and the right of
+    fixation and reproducing fixations of the Work, including storage of a
+    protected performance or phonogram in digital form or other electronic
+    medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+    Collections, and to Reproduce the Work as incorporated in the
+    Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+    including any translation in any medium, takes reasonable steps to
+    clearly label, demarcate or otherwise identify that changes were made
+    to the original Work. For example, a translation could be marked "The
+    original work was translated from English to Spanish," or a
+    modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+    in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme cannot be waived, the Licensor
+        reserves the exclusive right to collect such royalties for any
+        exercise by You of the rights granted under this License;
+    ii. Waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme can be waived, the Licensor waives the
+        exclusive right to collect such royalties for any exercise by You
+        of the rights granted under this License; and,
+   iii. Voluntary License Schemes. The Licensor waives the right to
+        collect royalties, whether individually or, in the event that the
+        Licensor is a member of a collecting society that administers
+        voluntary licensing schemes, via that society, from any exercise
+        by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+    of this License. You must include a copy of, or the Uniform Resource
+    Identifier (URI) for, this License with every copy of the Work You
+    Distribute or Publicly Perform. You may not offer or impose any terms
+    on the Work that restrict the terms of this License or the ability of
+    the recipient of the Work to exercise the rights granted to that
+    recipient under the terms of the License. You may not sublicense the
+    Work. You must keep intact all notices that refer to this License and
+    to the disclaimer of warranties with every copy of the Work You
+    Distribute or Publicly Perform. When You Distribute or Publicly
+    Perform the Work, You may not impose any effective technological
+    measures on the Work that restrict the ability of a recipient of the
+    Work from You to exercise the rights granted to that recipient under
+    the terms of the License. This Section 4(a) applies to the Work as
+    incorporated in a Collection, but this does not require the Collection
+    apart from the Work itself to be made subject to the terms of this
+    License. If You create a Collection, upon notice from any Licensor You
+    must, to the extent practicable, remove from the Collection any credit
+    as required by Section 4(b), as requested. If You create an
+    Adaptation, upon notice from any Licensor You must, to the extent
+    practicable, remove from the Adaptation any credit as required by
+    Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+    Collections, You must, unless a request has been made pursuant to
+    Section 4(a), keep intact all copyright notices for the Work and
+    provide, reasonable to the medium or means You are utilizing: (i) the
+    name of the Original Author (or pseudonym, if applicable) if supplied,
+    and/or if the Original Author and/or Licensor designate another party
+    or parties (e.g., a sponsor institute, publishing entity, journal) for
+    attribution ("Attribution Parties") in Licensor's copyright notice,
+    terms of service or by other reasonable means, the name of such party
+    or parties; (ii) the title of the Work if supplied; (iii) to the
+    extent reasonably practicable, the URI, if any, that Licensor
+    specifies to be associated with the Work, unless such URI does not
+    refer to the copyright notice or licensing information for the Work;
+    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+    a credit identifying the use of the Work in the Adaptation (e.g.,
+    "French translation of the Work by Original Author," or "Screenplay
+    based on original Work by Original Author"). The credit required by
+    this Section 4 (b) may be implemented in any reasonable manner;
+    provided, however, that in the case of a Adaptation or Collection, at
+    a minimum such credit will appear, if a credit for all contributing
+    authors of the Adaptation or Collection appears, then as part of these
+    credits and in a manner at least as prominent as the credits for the
+    other contributing authors. For the avoidance of doubt, You may only
+    use the credit required by this Section for the purpose of attribution
+    in the manner set out above and, by exercising Your rights under this
+    License, You may not implicitly or explicitly assert or imply any
+    connection with, sponsorship or endorsement by the Original Author,
+    Licensor and/or Attribution Parties, as appropriate, of You or Your
+    use of the Work, without the separate, express prior written
+    permission of the Original Author, Licensor and/or Attribution
+    Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+    otherwise permitted by applicable law, if You Reproduce, Distribute or
+    Publicly Perform the Work either by itself or as part of any
+    Adaptations or Collections, You must not distort, mutilate, modify or
+    take other derogatory action in relation to the Work which would be
+    prejudicial to the Original Author's honor or reputation. Licensor
+    agrees that in those jurisdictions (e.g. Japan), in which any exercise
+    of the right granted in Section 3(b) of this License (the right to
+    make Adaptations) would be deemed to be a distortion, mutilation,
+    modification or other derogatory action prejudicial to the Original
+    Author's honor and reputation, the Licensor will waive or not assert,
+    as appropriate, this Section, to the fullest extent permitted by the
+    applicable national law, to enable You to reasonably exercise Your
+    right under Section 3(b) of this License (right to make Adaptations)
+    but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+    automatically upon any breach by You of the terms of this License.
+    Individuals or entities who have received Adaptations or Collections
+    from You under this License, however, will not have their licenses
+    terminated provided such individuals or entities remain in full
+    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+    survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+    perpetual (for the duration of the applicable copyright in the Work).
+    Notwithstanding the above, Licensor reserves the right to release the
+    Work under different license terms or to stop distributing the Work at
+    any time; provided, however that any such election will not serve to
+    withdraw this License (or any other license that has been, or is
+    required to be, granted under the terms of this License), and this
+    License will continue in full force and effect unless terminated as
+    stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+    the Licensor offers to the recipient a license to the Work on the same
+    terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+    offers to the recipient a license to the original Work on the same
+    terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of
+    the remainder of the terms of this License, and without further action
+    by the parties to this agreement, such provision shall be reformed to
+    the minimum extent necessary to make such provision valid and
+    enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+    breach consented to unless such waiver or consent shall be in writing
+    and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+    respect to the Work licensed here. There are no understandings,
+    agreements or representations with respect to the Work not specified
+    here. Licensor shall not be bound by any additional provisions that
+    may appear in any communication from You. This License may not be
+    modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+    License were drafted utilizing the terminology of the Berne Convention
+    for the Protection of Literary and Artistic Works (as amended on
+    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+    and the Universal Copyright Convention (as revised on July 24, 1971).
+    These rights and subject matter take effect in the relevant
+    jurisdiction in which the License terms are sought to be enforced
+    according to the corresponding provisions of the implementation of
+    those treaty provisions in the applicable national law. If the
+    standard suite of rights granted under applicable copyright law
+    includes additional rights not granted under this License, such
+    additional rights are deemed to be included in the License; this
+    License is not intended to restrict the license of any rights under
+    applicable law.
+
+
+Creative Commons Notice
+
+    Creative Commons is not a party to this License, and makes no warranty
+    whatsoever in connection with the Work. Creative Commons will not be
+    liable to You or any party on any legal theory for any damages
+    whatsoever, including without limitation any general, special,
+    incidental or consequential damages arising in connection to this
+    license. Notwithstanding the foregoing two (2) sentences, if Creative
+    Commons has expressly identified itself as the Licensor hereunder, it
+    shall have all rights and obligations of Licensor.
+
+    Except for the limited purpose of indicating to the public that the
+    Work is licensed under the CCPL, Creative Commons does not authorize
+    the use by either party of the trademark "Creative Commons" or any
+    related trademark or logo of Creative Commons without the prior
+    written consent of Creative Commons. Any permitted use will be in
+    compliance with Creative Commons' then-current trademark usage
+    guidelines, as may be published on its website or otherwise made
+    available upon request from time to time. For the avoidance of doubt,
+    this trademark restriction does not form part of this License.
+
+    Creative Commons may be contacted at https://creativecommons.org/.
+
+*******************************************************************************
+
+/!\ The SIL OPEN FONT LICENSE applies to all desktop and webfont files in the
+following directory: fonts/ and to all glyphs and SVG files in the following
+directory: src/icons/svg/.
+
+
+Copyright (c) 2018, Fork Awesome (https://forkawesome.github.io),
+with Reserved Font Name Fork Awesome.
+
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+
+lodash
+MIT
+Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+moment
+MIT
+Copyright (c) JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+ng-block-ui
+MIT
+MIT License
+
+Copyright (c) 2017 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+ng2-charts
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2015-2017 Dmitriy Shekhovtsov <valorkin@gmail.com>
+Copyright (c) 2015-2017 Valor Software
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+ng2-tree
+MIT
+
+ngx-bootstrap/accordion
+
+ngx-bootstrap/alert
+
+ngx-bootstrap/chronos
+The MIT License (MIT)
+
+Copyright (c) Valor Software
+Copyright (c) Dmitriy Shekhovtsov<valorkin@gmail.com>
+Copyright (c) moment/moment
+Copyright (c) JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+ngx-bootstrap/collapse
+
+ngx-bootstrap/component-loader
+
+ngx-bootstrap/datepicker
+
+ngx-bootstrap/dropdown
+
+ngx-bootstrap/mini-ngrx
+
+ngx-bootstrap/modal
+
+ngx-bootstrap/popover
+
+ngx-bootstrap/positioning
+
+ngx-bootstrap/progressbar
+
+ngx-bootstrap/tabs
+
+ngx-bootstrap/timepicker
+
+ngx-bootstrap/tooltip
+
+ngx-bootstrap/typeahead
+
+ngx-bootstrap/utils
+
+ngx-toastr
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2018 Scott Cooper
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+punycode
+MIT
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+querystring
+MIT
+
+Copyright 2012 Irakli Gozalishvili. All rights reserved.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+
+rxjs
+Apache-2.0
+                               Apache License
+                         Version 2.0, January 2004
+                      http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+    "License" shall mean the terms and conditions for use, reproduction,
+    and distribution as defined by Sections 1 through 9 of this document.
+
+    "Licensor" shall mean the copyright owner or entity authorized by
+    the copyright owner that is granting the License.
+
+    "Legal Entity" shall mean the union of the acting entity and all
+    other entities that control, are controlled by, or are under common
+    control with that entity. For the purposes of this definition,
+    "control" means (i) the power, direct or indirect, to cause the
+    direction or management of such entity, whether by contract or
+    otherwise, or (ii) ownership of fifty percent (50%) or more of the
+    outstanding shares, or (iii) beneficial ownership of such entity.
+
+    "You" (or "Your") shall mean an individual or Legal Entity
+    exercising permissions granted by this License.
+
+    "Source" form shall mean the preferred form for making modifications,
+    including but not limited to software source code, documentation
+    source, and configuration files.
+
+    "Object" form shall mean any form resulting from mechanical
+    transformation or translation of a Source form, including but
+    not limited to compiled object code, generated documentation,
+    and conversions to other media types.
+
+    "Work" shall mean the work of authorship, whether in Source or
+    Object form, made available under the License, as indicated by a
+    copyright notice that is included in or attached to the work
+    (an example is provided in the Appendix below).
+
+    "Derivative Works" shall mean any work, whether in Source or Object
+    form, that is based on (or derived from) the Work and for which the
+    editorial revisions, annotations, elaborations, or other modifications
+    represent, as a whole, an original work of authorship. For the purposes
+    of this License, Derivative Works shall not include works that remain
+    separable from, or merely link (or bind by name) to the interfaces of,
+    the Work and Derivative Works thereof.
+
+    "Contribution" shall mean any work of authorship, including
+    the original version of the Work and any modifications or additions
+    to that Work or Derivative Works thereof, that is intentionally
+    submitted to Licensor for inclusion in the Work by the copyright owner
+    or by an individual or Legal Entity authorized to submit on behalf of
+    the copyright owner. For the purposes of this definition, "submitted"
+    means any form of electronic, verbal, or written communication sent
+    to the Licensor or its representatives, including but not limited to
+    communication on electronic mailing lists, source code control systems,
+    and issue tracking systems that are managed by, or on behalf of, the
+    Licensor for the purpose of discussing and improving the Work, but
+    excluding communication that is conspicuously marked or otherwise
+    designated in writing by the copyright owner as "Not a Contribution."
+
+    "Contributor" shall mean Licensor and any individual or Legal Entity
+    on behalf of whom a Contribution has been received by Licensor and
+    subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    copyright license to reproduce, prepare Derivative Works of,
+    publicly display, publicly perform, sublicense, and distribute the
+    Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    (except as stated in this section) patent license to make, have made,
+    use, offer to sell, sell, import, and otherwise transfer the Work,
+    where such license applies only to those patent claims licensable
+    by such Contributor that are necessarily infringed by their
+    Contribution(s) alone or by combination of their Contribution(s)
+    with the Work to which such Contribution(s) was submitted. If You
+    institute patent litigation against any entity (including a
+    cross-claim or counterclaim in a lawsuit) alleging that the Work
+    or a Contribution incorporated within the Work constitutes direct
+    or contributory patent infringement, then any patent licenses
+    granted to You under this License for that Work shall terminate
+    as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+    Work or Derivative Works thereof in any medium, with or without
+    modifications, and in Source or Object form, provided that You
+    meet the following conditions:
+
+    (a) You must give any other recipients of the Work or
+        Derivative Works a copy of this License; and
+
+    (b) You must cause any modified files to carry prominent notices
+        stating that You changed the files; and
+
+    (c) You must retain, in the Source form of any Derivative Works
+        that You distribute, all copyright, patent, trademark, and
+        attribution notices from the Source form of the Work,
+        excluding those notices that do not pertain to any part of
+        the Derivative Works; and
+
+    (d) If the Work includes a "NOTICE" text file as part of its
+        distribution, then any Derivative Works that You distribute must
+        include a readable copy of the attribution notices contained
+        within such NOTICE file, excluding those notices that do not
+        pertain to any part of the Derivative Works, in at least one
+        of the following places: within a NOTICE text file distributed
+        as part of the Derivative Works; within the Source form or
+        documentation, if provided along with the Derivative Works; or,
+        within a display generated by the Derivative Works, if and
+        wherever such third-party notices normally appear. The contents
+        of the NOTICE file are for informational purposes only and
+        do not modify the License. You may add Your own attribution
+        notices within Derivative Works that You distribute, alongside
+        or as an addendum to the NOTICE text from the Work, provided
+        that such additional attribution notices cannot be construed
+        as modifying the License.
+
+    You may add Your own copyright statement to Your modifications and
+    may provide additional or different license terms and conditions
+    for use, reproduction, or distribution of Your modifications, or
+    for any such Derivative Works as a whole, provided Your use,
+    reproduction, and distribution of the Work otherwise complies with
+    the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+    any Contribution intentionally submitted for inclusion in the Work
+    by You to the Licensor shall be under the terms and conditions of
+    this License, without any additional terms or conditions.
+    Notwithstanding the above, nothing herein shall supersede or modify
+    the terms of any separate license agreement you may have executed
+    with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+    names, trademarks, service marks, or product names of the Licensor,
+    except as required for reasonable and customary use in describing the
+    origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+    agreed to in writing, Licensor provides the Work (and each
+    Contributor provides its Contributions) on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+    implied, including, without limitation, any warranties or conditions
+    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+    PARTICULAR PURPOSE. You are solely responsible for determining the
+    appropriateness of using or redistributing the Work and assume any
+    risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+    whether in tort (including negligence), contract, or otherwise,
+    unless required by applicable law (such as deliberate and grossly
+    negligent acts) or agreed to in writing, shall any Contributor be
+    liable to You for damages, including any direct, indirect, special,
+    incidental, or consequential damages of any character arising as a
+    result of this License or out of the use or inability to use the
+    Work (including but not limited to damages for loss of goodwill,
+    work stoppage, computer failure or malfunction, or any and all
+    other commercial damages or losses), even if such Contributor
+    has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+    the Work or Derivative Works thereof, You may choose to offer,
+    and charge a fee for, acceptance of support, warranty, indemnity,
+    or other liability obligations and/or rights consistent with this
+    License. However, in accepting such obligations, You may act only
+    on Your own behalf and on Your sole responsibility, not on behalf
+    of any other Contributor, and only if You agree to indemnify,
+    defend, and hold each Contributor harmless for any liability
+    incurred by, or claims asserted against, such Contributor by reason
+    of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+    To apply the Apache License to your work, attach the following
+    boilerplate notice, with the fields enclosed by brackets "[]"
+    replaced with your own identifying information. (Don't include
+    the brackets!)  The text should be enclosed in the appropriate
+    comment syntax for the file format. We also recommend that a
+    file or class name and description of purpose be included on the
+    same "printed page" as the copyright notice for easier
+    identification within third-party archives.
+
+ Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
+
+ 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
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+rxjs-compat
+Apache-2.0
+                               Apache License
+                         Version 2.0, January 2004
+                      http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+    "License" shall mean the terms and conditions for use, reproduction,
+    and distribution as defined by Sections 1 through 9 of this document.
+
+    "Licensor" shall mean the copyright owner or entity authorized by
+    the copyright owner that is granting the License.
+
+    "Legal Entity" shall mean the union of the acting entity and all
+    other entities that control, are controlled by, or are under common
+    control with that entity. For the purposes of this definition,
+    "control" means (i) the power, direct or indirect, to cause the
+    direction or management of such entity, whether by contract or
+    otherwise, or (ii) ownership of fifty percent (50%) or more of the
+    outstanding shares, or (iii) beneficial ownership of such entity.
+
+    "You" (or "Your") shall mean an individual or Legal Entity
+    exercising permissions granted by this License.
+
+    "Source" form shall mean the preferred form for making modifications,
+    including but not limited to software source code, documentation
+    source, and configuration files.
+
+    "Object" form shall mean any form resulting from mechanical
+    transformation or translation of a Source form, including but
+    not limited to compiled object code, generated documentation,
+    and conversions to other media types.
+
+    "Work" shall mean the work of authorship, whether in Source or
+    Object form, made available under the License, as indicated by a
+    copyright notice that is included in or attached to the work
+    (an example is provided in the Appendix below).
+
+    "Derivative Works" shall mean any work, whether in Source or Object
+    form, that is based on (or derived from) the Work and for which the
+    editorial revisions, annotations, elaborations, or other modifications
+    represent, as a whole, an original work of authorship. For the purposes
+    of this License, Derivative Works shall not include works that remain
+    separable from, or merely link (or bind by name) to the interfaces of,
+    the Work and Derivative Works thereof.
+
+    "Contribution" shall mean any work of authorship, including
+    the original version of the Work and any modifications or additions
+    to that Work or Derivative Works thereof, that is intentionally
+    submitted to Licensor for inclusion in the Work by the copyright owner
+    or by an individual or Legal Entity authorized to submit on behalf of
+    the copyright owner. For the purposes of this definition, "submitted"
+    means any form of electronic, verbal, or written communication sent
+    to the Licensor or its representatives, including but not limited to
+    communication on electronic mailing lists, source code control systems,
+    and issue tracking systems that are managed by, or on behalf of, the
+    Licensor for the purpose of discussing and improving the Work, but
+    excluding communication that is conspicuously marked or otherwise
+    designated in writing by the copyright owner as "Not a Contribution."
+
+    "Contributor" shall mean Licensor and any individual or Legal Entity
+    on behalf of whom a Contribution has been received by Licensor and
+    subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    copyright license to reproduce, prepare Derivative Works of,
+    publicly display, publicly perform, sublicense, and distribute the
+    Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    (except as stated in this section) patent license to make, have made,
+    use, offer to sell, sell, import, and otherwise transfer the Work,
+    where such license applies only to those patent claims licensable
+    by such Contributor that are necessarily infringed by their
+    Contribution(s) alone or by combination of their Contribution(s)
+    with the Work to which such Contribution(s) was submitted. If You
+    institute patent litigation against any entity (including a
+    cross-claim or counterclaim in a lawsuit) alleging that the Work
+    or a Contribution incorporated within the Work constitutes direct
+    or contributory patent infringement, then any patent licenses
+    granted to You under this License for that Work shall terminate
+    as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+    Work or Derivative Works thereof in any medium, with or without
+    modifications, and in Source or Object form, provided that You
+    meet the following conditions:
+
+    (a) You must give any other recipients of the Work or
+        Derivative Works a copy of this License; and
+
+    (b) You must cause any modified files to carry prominent notices
+        stating that You changed the files; and
+
+    (c) You must retain, in the Source form of any Derivative Works
+        that You distribute, all copyright, patent, trademark, and
+        attribution notices from the Source form of the Work,
+        excluding those notices that do not pertain to any part of
+        the Derivative Works; and
+
+    (d) If the Work includes a "NOTICE" text file as part of its
+        distribution, then any Derivative Works that You distribute must
+        include a readable copy of the attribution notices contained
+        within such NOTICE file, excluding those notices that do not
+        pertain to any part of the Derivative Works, in at least one
+        of the following places: within a NOTICE text file distributed
+        as part of the Derivative Works; within the Source form or
+        documentation, if provided along with the Derivative Works; or,
+        within a display generated by the Derivative Works, if and
+        wherever such third-party notices normally appear. The contents
+        of the NOTICE file are for informational purposes only and
+        do not modify the License. You may add Your own attribution
+        notices within Derivative Works that You distribute, alongside
+        or as an addendum to the NOTICE text from the Work, provided
+        that such additional attribution notices cannot be construed
+        as modifying the License.
+
+    You may add Your own copyright statement to Your modifications and
+    may provide additional or different license terms and conditions
+    for use, reproduction, or distribution of Your modifications, or
+    for any such Derivative Works as a whole, provided Your use,
+    reproduction, and distribution of the Work otherwise complies with
+    the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+    any Contribution intentionally submitted for inclusion in the Work
+    by You to the Licensor shall be under the terms and conditions of
+    this License, without any additional terms or conditions.
+    Notwithstanding the above, nothing herein shall supersede or modify
+    the terms of any separate license agreement you may have executed
+    with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+    names, trademarks, service marks, or product names of the Licensor,
+    except as required for reasonable and customary use in describing the
+    origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+    agreed to in writing, Licensor provides the Work (and each
+    Contributor provides its Contributions) on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+    implied, including, without limitation, any warranties or conditions
+    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+    PARTICULAR PURPOSE. You are solely responsible for determining the
+    appropriateness of using or redistributing the Work and assume any
+    risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+    whether in tort (including negligence), contract, or otherwise,
+    unless required by applicable law (such as deliberate and grossly
+    negligent acts) or agreed to in writing, shall any Contributor be
+    liable to You for damages, including any direct, indirect, special,
+    incidental, or consequential damages of any character arising as a
+    result of this License or out of the use or inability to use the
+    Work (including but not limited to damages for loss of goodwill,
+    work stoppage, computer failure or malfunction, or any and all
+    other commercial damages or losses), even if such Contributor
+    has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+    the Work or Derivative Works thereof, You may choose to offer,
+    and charge a fee for, acceptance of support, warranty, indemnity,
+    or other liability obligations and/or rights consistent with this
+    License. However, in accepting such obligations, You may act only
+    on Your own behalf and on Your sole responsibility, not on behalf
+    of any other Contributor, and only if You agree to indemnify,
+    defend, and hold each Contributor harmless for any liability
+    incurred by, or claims asserted against, such Contributor by reason
+    of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+    To apply the Apache License to your work, attach the following
+    boilerplate notice, with the fields enclosed by brackets "[]"
+    replaced with your own identifying information. (Don't include
+    the brackets!)  The text should be enclosed in the appropriate
+    comment syntax for the file format. We also recommend that a
+    file or class name and description of purpose be included on the
+    same "printed page" as the copyright notice for easier
+    identification within third-party archives.
+
+ Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
+
+ 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
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+tslib
+Apache-2.0
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/ 
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+
+url
+MIT
+The MIT License (MIT)
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+uuid
+MIT
+The MIT License (MIT)
+
+Copyright (c) 2010-2016 Robert Kieffer and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+webpack
+MIT
+Copyright JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+zone.js
+MIT
+The MIT License
+
+Copyright (c) 2016-2018 Google, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+undefined
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.3d63c004c315603efec1.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/6.3d63c004c315603efec1.js
new file mode 100644 (file)
index 0000000..bf8a00f
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{EmSq:function(l,n,u){"use strict";u.d(n,"a",function(){return i});var e=u("CcnG"),t=u("LvDl"),i=(u("Fgil"),u("aXbf"),function(){function l(l,n,u,t){this.elementRef=l,this.control=n,this.dimlessBinaryPipe=u,this.formatter=t,this.ngModelChange=new e.EventEmitter,this.el=this.elementRef.nativeElement}return l.prototype.ngOnInit=function(){this.setValue(this.el.value)},l.prototype.setValue=function(l){/^[\d.]+$/.test(l)&&(l+=this.defaultUnit||"m");var n=this.formatter.toBytes(l),u=this.round(n);this.el.value=this.dimlessBinaryPipe.transform(u),null!==n?(this.ngModelChange.emit(this.el.value),this.control.control.setValue(this.el.value)):(this.ngModelChange.emit(null),this.control.control.setValue(null))},l.prototype.round=function(l){if(null!==l&&0!==l){if(!t.isUndefined(this.minBytes)&&l<this.minBytes)return this.minBytes;if(!t.isUndefined(this.maxBytes)&&l>this.maxBytes)return this.maxBytes;if(!t.isUndefined(this.roundPower)){var n=Math.round(Math.log(l)/Math.log(this.roundPower));return Math.pow(this.roundPower,n)}}return l},l.prototype.onBlur=function(l){this.setValue(l)},l}())},OcYo:function(l,n,u){"use strict";u.d(n,"a",function(){return e});var e=function(){function l(l,n,u){this.elementRef=l,this.renderer=n,this.toastr=u}return l.prototype.ngOnInit=function(){var l=this.renderer.createElement("i");this.renderer.addClass(l,"icon-prepend"),this.renderer.addClass(l,"fa"),this.renderer.addClass(l,"fa-clipboard"),this.renderer.appendChild(this.elementRef.nativeElement,l)},l.prototype.getInputElement=function(){return document.getElementById(this.cdCopy2ClipboardButton)},l.prototype.onClick=function(){try{var l=document.createElement("input");l.value=this.getInputElement().value,document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),this.toastr.success("Copied text to the clipboard successfully.")}catch(n){this.toastr.error("Failed to copy text to the clipboard.")}},l}()},Znkk:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),t=u("sne2"),i=u("Avrn"),o=u("+0ag"),a=u("mSOc"),r=function(){function l(l,n,u){this.route=l,this.summaryService=n,this.cephReleaseNamePipe=u,this.message="The Object Gateway service is not configured."}return l.prototype.ngOnInit=function(){var l=this,n=this.summaryService.subscribe(function(u){if(u){var e=l.cephReleaseNamePipe.transform(u.version);l.docsUrl="http://docs.ceph.com/docs/"+e+"/mgr/dashboard/#enabling-the-object-gateway-management-frontend",setTimeout(function(){n.unsubscribe()},0)}});this.routeParamsSubscribe=this.route.params.subscribe(function(n){l.message=n.message})},l.prototype.ngOnDestroy=function(){this.routeParamsSubscribe.unsubscribe()},l}(),s=u("gIcY"),d=u("LvDl"),c=u("mrSG"),p=u("t/Na"),f=u("VNr4"),m=u("F/XL"),g=u("psW0"),v=u("xTzq"),b=u("pL04"),h=function(){function l(l){this.http=l,this.url="api/rgw/bucket"}return l.prototype.list=function(){var l=this;return this.enumerate().pipe(Object(g.a)(function(n){return n.length>0?Object(f.a)(n.map(function(n){return l.get(n)})):Object(m.a)([])}))},l.prototype.enumerate=function(){return this.http.get(this.url)},l.prototype.get=function(l){return this.http.get(this.url+"/"+l)},l.prototype.create=function(l,n){var u=new p.h;return u=(u=u.append("bucket",l)).append("uid",n),this.http.post(this.url,null,{params:u})},l.prototype.update=function(l,n,u){var e=new p.h;return e=(e=e.append("bucket_id",n)).append("uid",u),this.http.put(this.url+"/"+l,null,{params:e})},l.prototype.delete=function(l,n){void 0===n&&(n=!0);var u=new p.h;return u=u.append("purge_objects",n?"true":"false"),this.http.delete(this.url+"/"+l,{params:u})},l.prototype.exists=function(l){return this.enumerate().pipe(Object(g.a)(function(n){var u=d.indexOf(n,l);return Object(m.a)(-1!==u)}))},l.ngInjectableDef=e.defineInjectable({factory:function(){return new l(e.inject(p.c))},token:l,providedIn:b.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[p.c])],l)}(),C=u("P8lu"),y=u("mtw6"),_=u("2EZI"),k=u("9nlD"),R=function(){function l(l,n,u,e,i,o,a,r){this.route=l,this.router=n,this.formBuilder=u,this.rgwBucketService=e,this.rgwUserService=i,this.notificationService=o,this.i18n=a,this.actionLabels=r,this.editing=!1,this.error=!1,this.loading=!1,this.owners=null,this.editing=this.router.url.startsWith("/rgw/bucket/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("bucket"),this.createForm()}return l.prototype.createForm=function(){this.bucketForm=this.formBuilder.group({id:[null],bid:[null,[s.A.required],[this.bucketNameValidator()]],owner:[null,[s.A.required]]})},l.prototype.ngOnInit=function(){var l=this;this.rgwUserService.enumerate().subscribe(function(n){l.owners=n.sort()}),this.route.params.subscribe(function(n){if(n.hasOwnProperty("bid")){var u=decodeURIComponent(n.bid);l.loading=!0,l.rgwBucketService.get(u).subscribe(function(n){l.loading=!1;var u=d.clone(l.bucketForm.value),e=d.pick(n,d.keys(l.bucketForm.value));e=d.merge(u,e),l.bucketForm.setValue(e)})}},function(n){l.error=n})},l.prototype.goToListView=function(){this.router.navigate(["/rgw/bucket"])},l.prototype.submit=function(){var l=this;if(this.bucketForm.pristine)this.goToListView();else{var n=this.bucketForm.get("bid"),u=this.bucketForm.get("owner");if(this.editing){var e=this.bucketForm.get("id");this.rgwBucketService.update(n.value,e.value,u.value).subscribe(function(){l.notificationService.show(y.a.success,l.i18n('Updated Object Gateway bucket "{{bid}}"',{bid:n.value})),l.goToListView()},function(){l.bucketForm.setErrors({cdSubmitButton:!0})})}else this.rgwBucketService.create(n.value,u.value).subscribe(function(){l.notificationService.show(y.a.success,l.i18n('Created Object Gateway bucket "{{bid}}"',{bid:n.value})),l.goToListView()},function(){l.bucketForm.setErrors({cdSubmitButton:!0})})}},l.prototype.bucketNameValidator=function(){var l=this.rgwBucketService;return function(n){return new Promise(function(u){n.pristine||""===n.value?u(null):/^[0-9A-Za-z][\w-\.]{2,254}$/.test(n.value)?l.exists(n.value).subscribe(function(l){u(l?{bucketNameExists:!0}:null)}):u({bucketNameInvalid:!0})})}},l}(),I=u("6blF"),w=u("0+/T"),q=u("uIqm"),E=u("vCyI"),x=u("aexS"),T=u("EgGo"),V=new T.a("rgw/bucket"),S=function(){function l(l,n,u,e,t,i){var o=this;this.authStorageService=l,this.rgwBucketService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.columns=[],this.buckets=[],this.selection=new E.a,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Name"),prop:"bid",flexGrow:1},{name:this.i18n("Owner"),prop:"owner",flexGrow:1}],this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return o.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return o.urlBuilder.getEdit(o.selection.first()&&""+encodeURIComponent(o.selection.first().bid))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return o.deleteAction()},name:this.actionLabels.DELETE}]}return l.prototype.getBucketList=function(l){var n=this;this.rgwBucketService.list().subscribe(function(l){n.buckets=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteAction=function(){var l=this;this.bsModalService.show(w.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"bucket":"buckets"),itemNames:this.selection.selected.map(function(l){return l.bid}),submitActionObservable:function(){return new I.a(function(n){Object(f.a)(l.selection.selected.map(function(n){return l.rgwBucketService.delete(n.bid)})).subscribe(null,function(u){n.error(u),l.table.refreshBtn()},function(){n.complete(),l.table.refreshBtn()})})}}})},l}(),N=function(){function l(l){this.http=l,this.url="api/rgw/daemon"}return l.prototype.list=function(){return this.http.get(this.url)},l.prototype.get=function(l){return this.http.get(this.url+"/"+l)},l.ngInjectableDef=e.defineInjectable({factory:function(){return new l(e.inject(p.c))},token:l,providedIn:b.a}),l=c.__decorate([v.a,c.__metadata("design:paramtypes",[p.c])],l)}(),D=u("85J/"),F=function(){function l(l,n,u,e){this.rgwDaemonService=l,this.authStorageService=n,this.i18n=e,this.columns=[],this.daemons=[],this.selection=new E.a,this.grafanaPermission=this.authStorageService.getPermissions().grafana,this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:2},{name:this.i18n("Hostname"),prop:"server_hostname",flexGrow:2},{name:this.i18n("Version"),prop:"version",flexGrow:1,pipe:u}]}return l.prototype.getDaemonList=function(l){var n=this;this.rgwDaemonService.list().subscribe(function(l){n.daemons=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l}(),j=u("1Ni5"),P=u("aXbf"),z=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.types=[],this.resource=this.i18n("capability"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({type:[null,[s.A.required]],perm:[null,[s.A.required]]})},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.ADD},l.prototype.setValues=function(l,n){this.formGroup.setValue({type:l,perm:n})},l.prototype.setCapabilities=function(l){var n=this,u=[];l.forEach(function(l){u.push(l.type)}),this.types=[],["users","buckets","metadata","usage","zone"].forEach(function(l){-1===d.indexOf(u,l)&&n.types.push(l)})},l.prototype.onSubmit=function(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()},l}(),B=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.viewing=!0,this.userCandidates=[],this.resource=this.i18n("S3 Key"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({user:[null,[s.A.required]],generate_key:[!0],access_key:[null,[j.a.requiredIf({generate_key:!1})]],secret_key:[null,[j.a.requiredIf({generate_key:!1})]]})},l.prototype.setViewing=function(l){void 0===l&&(l=!0),this.viewing=l,this.action=this.viewing?this.actionLabels.SHOW:this.actionLabels.CREATE},l.prototype.setValues=function(l,n,u){this.formGroup.setValue({user:l,generate_key:d.isEmpty(n),access_key:n,secret_key:u})},l.prototype.setUserCandidates=function(l){this.userCandidates=l},l.prototype.onSubmit=function(){this.submitAction.emit(this.formGroup.value),this.bsModalRef.hide()},l}(),A=function(){return function(){}}(),U=function(){function l(l,n,u,t){this.formBuilder=l,this.bsModalRef=n,this.i18n=u,this.actionLabels=t,this.submitAction=new e.EventEmitter,this.editing=!0,this.subusers=[],this.resource=this.i18n("Subuser"),this.createForm()}return l.prototype.createForm=function(){this.formGroup=this.formBuilder.group({uid:[null],subuid:[null,[s.A.required,this.subuserValidator()]],perm:[null,[s.A.required]],generate_secret:[!0],secret_key:[null,[j.a.requiredIf({generate_secret:!1})]]})},l.prototype.subuserValidator=function(){var l=this;return function(n){return l.editing?null:Object(j.b)(n.value)?null:l.subusers.some(function(u){return d.isEqual(l.getSubuserName(u.id),n.value)})?{subuserIdExists:!0}:null}},l.prototype.getSubuserName=function(l){if(d.isEmpty(l))return l;var n=l.match(/([^:]+)(:(.+))?/);return d.isUndefined(n[3])?n[1]:n[3]},l.prototype.setEditing=function(l){void 0===l&&(l=!0),this.editing=l,this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE},l.prototype.setValues=function(l,n,u){void 0===n&&(n=""),void 0===u&&(u=""),this.formGroup.setValue({uid:l,subuid:this.getSubuserName(n),perm:u,generate_secret:!0,secret_key:null})},l.prototype.setSubusers=function(l){this.subusers=l},l.prototype.onSubmit=function(){var l=this.formGroup.value,n=new A;n.id=l.uid+":"+l.subuid,n.permissions=l.perm,n.generate_secret=l.generate_secret,n.secret_key=l.secret_key,this.submitAction.emit(n),this.bsModalRef.hide()},l}(),O=function(){function l(l,n,u){this.bsModalRef=l,this.i18n=n,this.actionLabels=u,this.resource=this.i18n("Swift Key"),this.action=this.actionLabels.SHOW}return l.prototype.setValues=function(l,n){this.user=l,this.secret_key=n},l}(),M=function(){function l(l,n,u,e,t,i,o,a){this.formBuilder=l,this.route=n,this.router=u,this.rgwUserService=e,this.bsModalService=t,this.notificationService=i,this.i18n=o,this.actionLabels=a,this.editing=!1,this.error=!1,this.loading=!1,this.submitObservables=[],this.subusers=[],this.s3Keys=[],this.swiftKeys=[],this.capabilities=[],this.resource=this.i18n("user"),this.subuserLabel=this.i18n("subuser"),this.s3keyLabel=this.i18n("S3 Key"),this.capabilityLabel=this.i18n("capability"),this.createForm()}return l.prototype.createForm=function(){this.userForm=this.formBuilder.group({uid:[null,[s.A.required],[j.a.unique(this.rgwUserService.exists,this.rgwUserService)]],display_name:[null,[s.A.required]],email:[null,[j.a.email],[j.a.unique(this.rgwUserService.emailExists,this.rgwUserService)]],max_buckets:[1e3,[s.A.required,s.A.min(0)]],suspended:[!1],generate_key:[!0],access_key:[null,[j.a.requiredIf({generate_key:!1})]],secret_key:[null,[j.a.requiredIf({generate_key:!1})]],user_quota_enabled:[!1],user_quota_max_size_unlimited:[!0],user_quota_max_size:[null,[j.a.requiredIf({user_quota_enabled:!0,user_quota_max_size_unlimited:!1}),this.quotaMaxSizeValidator]],user_quota_max_objects_unlimited:[!0],user_quota_max_objects:[null,[s.A.min(0),j.a.requiredIf({user_quota_enabled:!0,user_quota_max_objects_unlimited:!1})]],bucket_quota_enabled:[!1],bucket_quota_max_size_unlimited:[!0],bucket_quota_max_size:[null,[j.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_size_unlimited:!1}),this.quotaMaxSizeValidator]],bucket_quota_max_objects_unlimited:[!0],bucket_quota_max_objects:[null,[s.A.min(0),j.a.requiredIf({bucket_quota_enabled:!0,bucket_quota_max_objects_unlimited:!1})]]})},l.prototype.ngOnInit=function(){var l=this;this.editing=this.router.url.startsWith("/rgw/user/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.route.params.subscribe(function(n){if(n.hasOwnProperty("uid")){var u=decodeURIComponent(n.uid);l.loading=!0;var e=[];e.push(l.rgwUserService.get(u)),e.push(l.rgwUserService.getQuota(u)),Object(f.a)(e).subscribe(function(n){l.loading=!1;var u=d.clone(l.userForm.value),e=d.pick(n[0],d.keys(l.userForm.value));["user","bucket"].forEach(function(l){var u=n[1][l+"_quota"];e[l+"_quota_enabled"]=u.enabled,u.max_size<0?(e[l+"_quota_max_size_unlimited"]=!0,e[l+"_quota_max_size"]=null):(e[l+"_quota_max_size_unlimited"]=!1,e[l+"_quota_max_size"]=u.max_size+" B"),u.max_objects<0?(e[l+"_quota_max_objects_unlimited"]=!0,e[l+"_quota_max_objects"]=null):(e[l+"_quota_max_objects_unlimited"]=!1,e[l+"_quota_max_objects"]=u.max_objects)}),e=d.merge(u,e),l.userForm.setValue(e),l.subusers=n[0].subusers,l.s3Keys=n[0].keys,l.swiftKeys=n[0].swift_keys;var t={"read, write":"*"};n[0].caps.forEach(function(l){l.perm in t&&(l.perm=t[l.perm])}),l.capabilities=n[0].caps},function(n){l.error=n})}})},l.prototype.goToListView=function(){this.router.navigate(["/rgw/user"])},l.prototype.onSubmit=function(){var l,n=this;if(this.userForm.pristine)this.goToListView();else{var u=this.userForm.getValue("uid");if(this.editing){if(this._isGeneralDirty()){var e=this._getUpdateArgs();this.submitObservables.push(this.rgwUserService.update(u,e))}l=this.i18n('Updated Object Gateway user "{{uid}}"',{uid:u})}else e=this._getCreateArgs(),this.submitObservables.push(this.rgwUserService.create(e)),l=this.i18n('Created Object Gateway user "{{uid}}"',{uid:u});if(this._isUserQuotaDirty()){var t=this._getUserQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(u,t))}if(this._isBucketQuotaDirty()){var i=this._getBucketQuotaArgs();this.submitObservables.push(this.rgwUserService.updateQuota(u,i))}Object(f.a)(this.submitObservables).subscribe(function(){n.notificationService.show(y.a.success,l),n.goToListView()},function(){n.userForm.setErrors({cdSubmitButton:!0})})}},l.prototype.quotaMaxSizeValidator=function(l){return Object(j.b)(l.value)?null:null===RegExp("^(\\d+(\\.\\d+)?)\\s*(B|K(B|iB)?|M(B|iB)?|G(B|iB)?|T(B|iB)?)?$","i").exec(l.value)?{quotaMaxSize:!0}:(new P.a).toBytes(l.value)<1024?{quotaMaxSize:!0}:null},l.prototype.setSubuser=function(l,n){var u={"full-control":"full","read-write":"readwrite"},e=this.userForm.getValue("uid");this.submitObservables.push(this.rgwUserService.createSubuser(e,{subuser:l.id,access:l.permissions in u?u[l.permissions]:l.permissions,key_type:"swift",secret_key:l.secret_key,generate_secret:l.generate_secret?"true":"false"})),d.isNumber(n)?this.subusers[n]=l:(this.subusers.push(l),this.swiftKeys.push({user:l.id,secret_key:l.generate_secret?"Apply your changes first...":l.secret_key})),this.userForm.markAsDirty()},l.prototype.deleteSubuser=function(l){var n=this.subusers[l];this.submitObservables.push(this.rgwUserService.deleteSubuser(this.userForm.getValue("uid"),n.id)),this.s3Keys=this.s3Keys.filter(function(l){return l.user!==n.id}),this.swiftKeys=this.swiftKeys.filter(function(l){return l.user!==n.id}),this.subusers.splice(l,1),this.userForm.markAsDirty()},l.prototype.setCapability=function(l,n){var u=this.userForm.getValue("uid");if(d.isNumber(n)){var e=this.capabilities[n];this.submitObservables.push(this.rgwUserService.deleteCapability(u,e.type,e.perm)),this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities[n]=l}else this.submitObservables.push(this.rgwUserService.addCapability(u,l.type,l.perm)),this.capabilities.push(l);this.userForm.markAsDirty()},l.prototype.deleteCapability=function(l){var n=this.capabilities[l];this.submitObservables.push(this.rgwUserService.deleteCapability(this.userForm.getValue("uid"),n.type,n.perm)),this.capabilities.splice(l,1),this.userForm.markAsDirty()},l.prototype.setS3Key=function(l,n){if(d.isNumber(n));else{var u=l.user.match(/([^:]+)(:(.+))?/);this.submitObservables.push(this.rgwUserService.addS3Key(u[1],{subuser:u[2]?u[3]:"",generate_key:l.generate_key?"true":"false",access_key:l.access_key,secret_key:l.secret_key})),this.s3Keys.push({user:l.user,access_key:l.generate_key?"Apply your changes first...":l.access_key,secret_key:l.generate_key?"Apply your changes first...":l.secret_key})}this.userForm.markAsDirty()},l.prototype.deleteS3Key=function(l){var n=this.s3Keys[l];this.submitObservables.push(this.rgwUserService.deleteS3Key(this.userForm.getValue("uid"),n.access_key)),this.s3Keys.splice(l,1),this.userForm.markAsDirty()},l.prototype.showSubuserModal=function(l){var n=this,u=this.userForm.getValue("uid"),e=this.bsModalService.show(U);if(d.isNumber(l)){var t=this.subusers[l];e.content.setEditing(),e.content.setValues(u,t.id,t.permissions)}else e.content.setEditing(!1),e.content.setValues(u),e.content.setSubusers(this.subusers);e.content.submitAction.subscribe(function(u){n.setSubuser(u,l)})},l.prototype.showS3KeyModal=function(l){var n=this,u=this.bsModalService.show(B);if(d.isNumber(l)){var e=this.s3Keys[l];u.content.setViewing(),u.content.setValues(e.user,e.access_key,e.secret_key)}else{var t=this._getS3KeyUserCandidates();u.content.setViewing(!1),u.content.setUserCandidates(t),u.content.submitAction.subscribe(function(l){n.setS3Key(l)})}},l.prototype.showSwiftKeyModal=function(l){var n=this.bsModalService.show(O),u=this.swiftKeys[l];n.content.setValues(u.user,u.secret_key)},l.prototype.showCapabilityModal=function(l){var n=this,u=this.bsModalService.show(z);if(d.isNumber(l)){var e=this.capabilities[l];u.content.setEditing(),u.content.setValues(e.type,e.perm)}else u.content.setEditing(!1),u.content.setCapabilities(this.capabilities);u.content.submitAction.subscribe(function(u){n.setCapability(u,l)})},l.prototype._isGeneralDirty=function(){var l=this;return["display_name","email","max_buckets","suspended"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._isUserQuotaDirty=function(){var l=this;return["user_quota_enabled","user_quota_max_size_unlimited","user_quota_max_size","user_quota_max_objects_unlimited","user_quota_max_objects"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._isBucketQuotaDirty=function(){var l=this;return["bucket_quota_enabled","bucket_quota_max_size_unlimited","bucket_quota_max_size","bucket_quota_max_objects_unlimited","bucket_quota_max_objects"].some(function(n){return l.userForm.get(n).dirty})},l.prototype._getCreateArgs=function(){var l={uid:this.userForm.getValue("uid"),display_name:this.userForm.getValue("display_name"),suspended:this.userForm.getValue("suspended"),email:"",max_buckets:this.userForm.getValue("max_buckets"),generate_key:this.userForm.getValue("generate_key"),access_key:"",secret_key:""},n=this.userForm.getValue("email");return d.isString(n)&&n.length>0&&d.merge(l,{email:n}),this.userForm.getValue("generate_key")||d.merge(l,{generate_key:!1,access_key:this.userForm.getValue("access_key"),secret_key:this.userForm.getValue("secret_key")}),l},l.prototype._getUpdateArgs=function(){for(var l={},n=0,u=["display_name","email","max_buckets","suspended"];n<u.length;n++){var e=u[n];l[e]=this.userForm.getValue(e)}return l},l.prototype._getUserQuotaArgs=function(){var l={quota_type:"user",enabled:this.userForm.getValue("user_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("user_quota_max_size_unlimited")){var n=(new P.a).toBytes(this.userForm.getValue("user_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("user_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("user_quota_max_objects")),l},l.prototype._getBucketQuotaArgs=function(){var l={quota_type:"bucket",enabled:this.userForm.getValue("bucket_quota_enabled"),max_size_kb:-1,max_objects:-1};if(!this.userForm.getValue("bucket_quota_max_size_unlimited")){var n=(new P.a).toBytes(this.userForm.getValue("bucket_quota_max_size"));l.max_size_kb=(n/1024).toFixed(0)}return this.userForm.getValue("bucket_quota_max_objects_unlimited")||(l.max_objects=this.userForm.getValue("bucket_quota_max_objects")),l},l.prototype._getS3KeyUserCandidates=function(){var l=[],n=this.userForm.getValue("uid");return d.isString(n)&&!d.isEmpty(n)&&l.push(n),this.subusers.forEach(function(n){l.push(n.id)}),this.s3Keys.forEach(function(n){l.push(n.user)}),l=d.uniq(l)},l}(),L=u("x38r"),G=new T.a("rgw/user"),K=function(){function l(l,n,u,e,t,i){var o=this;this.authStorageService=l,this.rgwUserService=n,this.bsModalService=u,this.i18n=e,this.urlBuilder=t,this.actionLabels=i,this.columns=[],this.users=[],this.selection=new E.a,this.permission=this.authStorageService.getPermissions().rgw,this.columns=[{name:this.i18n("Username"),prop:"uid",flexGrow:1},{name:this.i18n("Full name"),prop:"display_name",flexGrow:1},{name:this.i18n("Email address"),prop:"email",flexGrow:1},{name:this.i18n("Suspended"),prop:"suspended",flexGrow:1,cellClass:"text-center",cellTransformation:L.a.checkIcon},{name:this.i18n("Max. buckets"),prop:"max_buckets",flexGrow:1}],this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return o.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return o.urlBuilder.getEdit(o.selection.first()&&""+encodeURIComponent(o.selection.first().uid))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return o.deleteAction()},name:this.actionLabels.DELETE}]}return l.prototype.getUserList=function(l){var n=this;this.rgwUserService.list().subscribe(function(l){n.users=l},function(){l.error()})},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteAction=function(){var l=this;this.bsModalService.show(w.a,{initialState:{itemDescription:this.i18n(this.selection.hasSingleSelection?"user":"users"),itemNames:this.selection.selected.map(function(l){return l.uid}),submitActionObservable:function(){return new I.a(function(n){Object(f.a)(l.selection.selected.map(function(n){return l.rgwUserService.delete(n.uid)})).subscribe(null,function(u){n.error(u),l.table.refreshBtn()},function(){n.complete(),l.table.refreshBtn()})})}}})},l}(),$=function(){return function(){}}(),Z={breadcrumbs:"Daemons"},Q={breadcrumbs:"Users"},H={breadcrumbs:t.a.CREATE},Y={breadcrumbs:t.a.EDIT},X={breadcrumbs:"Buckets"},W={breadcrumbs:t.a.CREATE},J={breadcrumbs:t.a.EDIT},ll={breadcrumbs:"Object Gateway"},nl=function(){return function(){}}(),ul=u("MdoF"),el=u("ES0t"),tl=u("Xg1U"),il=u("z5nN"),ol=u("iutN"),al=u("EEJc"),rl=u("PEr+"),sl=u("a40w"),dl=u("pMnS"),cl=u("YAQW"),pl=u("a278"),fl=u("insk"),ml=u("ZYjt"),gl=u("20UP"),vl=u("Jm/i"),bl=u("pKUh"),hl=u("sLuX"),Cl=u("FSuO"),yl=u("a0VL"),_l=u("j8L6"),kl=u("b5OY"),Rl=u("pxLl"),Il=u("Ip0R"),wl=function(){function l(l,n){this.rgwDaemonService=l,this.authStorageService=n,this.serviceId="",this.grafanaPermission=this.authStorageService.getPermissions().grafana}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.serviceId=this.selection.first().id)},l.prototype.getMetaData=function(){var l=this;d.isEmpty(this.serviceId)||this.rgwDaemonService.get(this.serviceId).subscribe(function(n){l.metadata=n.rgw_metadata})},l}(),ql=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function El(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","x5ARzZtmk"]],null,null,null,pl.b,pl.a)),e["\u0275did"](3,638976,null,0,fl.a,[a.a,ml.DomSanitizer,gl.a,o.a,vl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){var u=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"rgw-instance-detail?var-rgw_servers=rgw."+u.selection.first().id,"one","x5ARzZtmk")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function xl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,11,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,[[null,"fetchData"]],function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.getMetaData()&&e),e},hl.b,hl.a)),e["\u0275did"](5,638976,null,0,Cl.a,[yl.a],{data:[0,"data"]},{fetchData:"fetchData"}),(l()(),e["\u0275eld"](6,0,null,0,3,"tab",[["heading","Performance Counters"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](7,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](8,0,null,null,1,"cd-table-performance-counter",[["serviceType","rgw"]],null,null,null,_l.b,_l.a)),e["\u0275did"](9,114688,null,0,kl.a,[Rl.a,vl.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null),(l()(),e["\u0275and"](16777216,null,0,1,null,El)),e["\u0275did"](11,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.metadata),l(n,7,0,"Performance Counters"),l(n,9,0,"rgw",u.serviceId),l(n,11,0,u.grafanaPermission.read)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,6,0,e["\u0275nov"](n,7).id,e["\u0275nov"](n,7).active,e["\u0275nov"](n,7).addClass)})}function Tl(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,xl)),e["\u0275did"](1,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,1,0,n.component.selection.hasSingleSelection)},null)}function Vl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-daemon-details",[],null,null,null,Tl,ql)),e["\u0275did"](1,573440,null,0,wl,[N,x.a],null,null)],null,null)}var Sl=e["\u0275ccf"]("cd-rgw-daemon-details",wl,Vl,{selection:"selection"},{},[]),Nl=u("iExv"),Dl=u("o4+5"),Fl=function(){function l(){}return l.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.bucket=this.selection.first())},l}(),jl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Pl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function zl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,2),u.bucket.bucket_quota.max_size));l(n,1,0,t)})}function Bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function Al(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.bucket.bucket_quota.max_objects)})}function Ul(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Pl)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,zl)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Bl)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Al)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.bucket.bucket_quota.max_size<=-1),l(n,17,0,u.bucket.bucket_quota.max_size>-1),l(n,22,0,u.bucket.bucket_quota.max_objects<=-1),l(n,24,0,u.bucket.bucket_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,1),u.bucket.bucket_quota.enabled));l(n,9,0,t)})}function Ol(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,60,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,57,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,56,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](7,null,["",""])),(l()(),e["\u0275eld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["ID"])),(l()(),e["\u0275eld"](11,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["",""])),(l()(),e["\u0275eld"](13,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](14,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Owner"])),(l()(),e["\u0275eld"](16,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](17,null,["",""])),(l()(),e["\u0275eld"](18,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Index type"])),(l()(),e["\u0275eld"](21,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](22,null,["",""])),(l()(),e["\u0275eld"](23,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Placement rule"])),(l()(),e["\u0275eld"](26,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](27,null,["",""])),(l()(),e["\u0275eld"](28,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](29,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Marker"])),(l()(),e["\u0275eld"](31,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](32,null,["",""])),(l()(),e["\u0275eld"](33,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](34,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum marker"])),(l()(),e["\u0275eld"](36,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](37,null,["",""])),(l()(),e["\u0275eld"](38,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Version"])),(l()(),e["\u0275eld"](41,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](42,null,["",""])),(l()(),e["\u0275eld"](43,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Master version"])),(l()(),e["\u0275eld"](46,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](47,null,["",""])),(l()(),e["\u0275eld"](48,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](49,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Modification time"])),(l()(),e["\u0275eld"](51,0,null,null,2,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](52,null,["",""])),e["\u0275ppd"](53,1),(l()(),e["\u0275eld"](54,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Zonegroup"])),(l()(),e["\u0275eld"](57,0,null,null,1,"td",[],null,null,null,null,null)),(l()(),e["\u0275ted"](58,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ul)),e["\u0275did"](60,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,60,0,n.component.bucket.bucket_quota)},function(l,n){var u=n.component;l(n,7,0,u.bucket.bid),l(n,12,0,u.bucket.id),l(n,17,0,u.bucket.owner),l(n,22,0,u.bucket.index_type),l(n,27,0,u.bucket.placement_rule),l(n,32,0,u.bucket.marker),l(n,37,0,u.bucket.max_marker),l(n,42,0,u.bucket.ver),l(n,47,0,u.bucket.master_ver);var t=e["\u0275unv"](n,52,0,l(n,53,0,e["\u0275nov"](n.parent.parent,0),u.bucket.mtime));l(n,52,0,t),l(n,58,0,u.bucket.zonegroup)})}function Ml(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ol)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.bucket)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Ll(l){return e["\u0275vid"](0,[e["\u0275pid"](0,yl.a,[Il.DatePipe]),e["\u0275pid"](0,Nl.a,[vl.a]),e["\u0275pid"](0,Dl.a,[P.a]),(l()(),e["\u0275and"](16777216,null,null,1,null,Ml)),e["\u0275did"](4,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,4,0,n.component.selection.hasSingleSelection)},null)}function Gl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-bucket-details",[],null,null,null,Ll,jl)),e["\u0275did"](1,573440,null,0,Fl,[],null,null)],null,null)}var Kl=e["\u0275ccf"]("cd-rgw-bucket-details",Fl,Gl,{selection:"selection"},{},[]),$l=u("25BL"),Zl=u("xtZt"),Ql=u("lqqz"),Hl=u("Fgil"),Yl=function(){function l(l,n,u){this.rgwUserService=l,this.bsModalService=n,this.i18n=u,this.keys=[],this.keysColumns=[],this.keysSelection=new E.a}return l.prototype.ngOnInit=function(){this.keysColumns=[{name:this.i18n("Username"),prop:"username",flexGrow:1},{name:this.i18n("Type"),prop:"type",flexGrow:1}]},l.prototype.ngOnChanges=function(){var l=this;this.selection.hasSelection&&(this.user=this.selection.first(),this.user.subusers=d.sortBy(this.user.subusers,"id"),this.user.caps=d.sortBy(this.user.caps,"type"),this.rgwUserService.getQuota(this.user.uid).subscribe(function(n){d.extend(l.user,n)}),this.keys=[],this.user.keys.forEach(function(n){l.keys.push({id:l.keys.length+1,type:"S3",username:n.user,ref:n})}),this.user.swift_keys.forEach(function(n){l.keys.push({id:l.keys.length+1,type:"Swift",username:n.user,ref:n})}),this.keys=d.sortBy(this.keys,"user"))},l.prototype.updateKeysSelection=function(l){this.keysSelection=l},l.prototype.showKeyModal=function(){var l=this.keysSelection.first(),n=this.bsModalService.show("S3"===l.type?B:O);switch(l.type){case"S3":n.content.setViewing(),n.content.setValues(l.ref.user,l.ref.access_key,l.ref.secret_key);break;case"Swift":n.content.setValues(l.ref.user,l.ref.secret_key)}},l}(),Xl=u("DQlY"),Wl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Jl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email address"])),(l()(),e["\u0275eld"](3,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["",""]))],null,function(l,n){l(n,4,0,n.component.user.email)})}function ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,["No"]))],null,null)}function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,["Yes"]))],null,null)}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," (",") "]))],null,function(l,n){l(n,1,0,n.context.$implicit.id,n.context.$implicit.permissions)})}function en(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subusers"])),(l()(),e["\u0275eld"](3,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,un)),e["\u0275did"](5,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){l(n,5,0,n.component.user.subusers)},null)}function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," (",") "]))],null,function(l,n){l(n,1,0,n.context.$implicit.type,n.context.$implicit.perm)})}function on(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Capabilities"])),(l()(),e["\u0275eld"](3,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,tn)),e["\u0275did"](5,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){l(n,5,0,n.component.user.caps)},null)}function an(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function rn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,1),u.user.user_quota.max_size));l(n,1,0,t)})}function sn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function dn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.user.user_quota.max_objects)})}function cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,an)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,rn)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,sn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,dn)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.user.user_quota.max_size<=-1),l(n,17,0,u.user.user_quota.max_size>-1),l(n,22,0,u.user.user_quota.max_objects<=-1),l(n,24,0,u.user.user_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,0),u.user.user_quota.enabled));l(n,9,0,t)})}function pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent.parent,1),u.user.bucket_quota.max_size));l(n,1,0,t)})}function mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited"]))],null,null)}function gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.user.bucket_quota.max_objects)})}function vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](3,0,null,null,21,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,20,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275eld"](8,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["",""])),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum size"])),(l()(),e["\u0275and"](16777216,null,null,1,null,pn)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,fn)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](18,0,null,null,6,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum objects"])),(l()(),e["\u0275and"](16777216,null,null,1,null,mn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gn)),e["\u0275did"](24,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,15,0,u.user.bucket_quota.max_size<=-1),l(n,17,0,u.user.bucket_quota.max_size>-1),l(n,22,0,u.user.bucket_quota.max_objects<=-1),l(n,24,0,u.user.bucket_quota.max_objects>-1)},function(l,n){var u=n.component,t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent.parent.parent,0),u.user.bucket_quota.enabled));l(n,9,0,t)})}function bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,43,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,38,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,37,"tbody",[],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](6,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](7,null,["",""])),(l()(),e["\u0275eld"](8,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275eld"](11,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,Jl)),e["\u0275did"](14,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,5,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Suspended"])),(l()(),e["\u0275eld"](18,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](19,null,["",""])),e["\u0275ppd"](20,1),(l()(),e["\u0275eld"](21,0,null,null,9,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["System"])),(l()(),e["\u0275eld"](24,0,null,null,6,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,5,null,null,null,null,null,null,null)),e["\u0275did"](26,16384,null,0,Il.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ln)),e["\u0275did"](28,278528,null,0,Il.NgSwitchCase,[e.ViewContainerRef,e.TemplateRef,Il.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nn)),e["\u0275did"](30,278528,null,0,Il.NgSwitchCase,[e.ViewContainerRef,e.TemplateRef,Il.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(l()(),e["\u0275eld"](31,0,null,null,4,"tr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](32,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Maximum buckets"])),(l()(),e["\u0275eld"](34,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](35,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,en)),e["\u0275did"](37,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,on)),e["\u0275did"](39,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,cn)),e["\u0275did"](41,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vn)),e["\u0275did"](43,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,14,0,u.user.email.length),l(n,26,0,u.user.system),l(n,28,0,"0"),l(n,30,0,"1"),l(n,37,0,u.user.subusers&&u.user.subusers.length),l(n,39,0,u.user.caps&&u.user.caps.length),l(n,41,0,u.user.user_quota),l(n,43,0,u.user.bucket_quota)},function(l,n){var u=n.component;l(n,7,0,u.user.uid),l(n,12,0,u.user.display_name);var t=e["\u0275unv"](n,19,0,l(n,20,0,e["\u0275nov"](n.parent.parent,0),u.user.suspended));l(n,19,0,t),l(n,35,0,u.user.max_buckets)})}function hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,bn)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](6,0,null,0,11,"tab",[["heading","Keys"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](7,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](8,0,null,null,9,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["selectionType","multi"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateKeysSelection(u)&&e),e},$l.b,$l.a)),e["\u0275did"](9,2867200,null,0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](10,0,null,0,7,"div",[["class","table-actions"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,16777216,null,null,6,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),e["\u0275prd"](512,null,Zl.f,Zl.f,[]),e["\u0275did"](13,212992,null,0,Zl.c,[e.ElementRef,e.Renderer2,e.ViewContainerRef,Ql.a,Zl.a,Zl.f],null,null),(l()(),e["\u0275eld"](14,0,null,null,3,"button",[["class","btn btn-sm btn-primary"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showKeyModal()&&e),e},null,null)),(l()(),e["\u0275eld"](15,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Show"]))],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.user),l(n,7,0,"Keys"),l(n,9,0,u.keys,u.keysColumns,"flex","true","multi"),l(n,13,0)},function(l,n){var u=n.component;l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,6,0,e["\u0275nov"](n,7).id,e["\u0275nov"](n,7).active,e["\u0275nov"](n,7).addClass),l(n,11,0,e["\u0275nov"](n,13).dropup,e["\u0275nov"](n,13).isOpen,e["\u0275nov"](n,13).isOpen&&e["\u0275nov"](n,13).isBs4),l(n,14,0,!u.keysSelection.hasSingleSelection)})}function Cn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Nl.a,[vl.a]),e["\u0275pid"](0,Hl.a,[P.a]),e["\u0275qud"](402653184,1,{accessKeyTpl:0}),e["\u0275qud"](402653184,2,{secretKeyTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,hn)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,5,0,n.component.selection.hasSingleSelection)},null)}function yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-details",[],null,null,null,Cn,Wl)),e["\u0275did"](1,638976,null,0,Yl,[C.a,Xl.b,vl.a],null,null)],function(l,n){l(n,1,0)},null)}var _n=e["\u0275ccf"]("cd-rgw-user-details",Yl,yn,{selection:"selection"},{},[]),kn=u("8xTl"),Rn=u("D4zM"),In=u("OcYo"),wn=u("SZbH"),qn=u("KVJa"),En=u("Z21x"),xn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Tn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["","",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,31,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,30,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,13).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,13).onReset()&&t),t},null,null)),e["\u0275did"](12,16384,null,0,s.D,[],null,null),e["\u0275did"](13,4210688,null,0,s.t,[[8,null],[8,null]],null,null),e["\u0275prd"](2048,null,s.d,null,[s.t]),e["\u0275did"](15,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](16,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](19,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,5,"input",[["class","form-control"],["id","user"],["name","user"],["type","text"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,21)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,21).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,21)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,21)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.user=u)&&t),t},null,null)),e["\u0275did"](21,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](23,671744,null,0,s.u,[[2,s.d],[8,null],[8,null],[6,s.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["\u0275prd"](2048,null,s.q,null,[s.u]),e["\u0275did"](25,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](26,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](29,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](30,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](31,0,null,null,5,"input",[["class","form-control"],["id","secret_key"],["name","secret_key"],["type","password"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,i=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,32)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,32).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,32)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,32)._compositionEnd(u.target.value)&&t),"ngModelChange"===n&&(t=!1!==(i.secret_key=u)&&t),t},null,null)),e["\u0275did"](32,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](34,671744,null,0,s.u,[[2,s.d],[8,null],[8,null],[6,s.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),e["\u0275prd"](2048,null,s.q,null,[s.u]),e["\u0275did"](36,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](37,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](38,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,39).onClick()&&t),t},null,null)),e["\u0275did"](39,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](40,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,41).onClick()&&t),t},null,null)),e["\u0275did"](41,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275eld"](42,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](43,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](44,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,23,0,"user",u.user),l(n,34,0,"secret_key",u.secret_key),l(n,39,0,"secret_key"),l(n,41,0,"secret_key"),l(n,44,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,11,0,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending),l(n,20,0,!0,e["\u0275nov"](n,25).ngClassUntouched,e["\u0275nov"](n,25).ngClassTouched,e["\u0275nov"](n,25).ngClassPristine,e["\u0275nov"](n,25).ngClassDirty,e["\u0275nov"](n,25).ngClassValid,e["\u0275nov"](n,25).ngClassInvalid,e["\u0275nov"](n,25).ngClassPending),l(n,31,0,!0,e["\u0275nov"](n,36).ngClassUntouched,e["\u0275nov"](n,36).ngClassTouched,e["\u0275nov"](n,36).ngClassPristine,e["\u0275nov"](n,36).ngClassDirty,e["\u0275nov"](n,36).ngClassValid,e["\u0275nov"](n,36).ngClassInvalid,e["\u0275nov"](n,36).ngClassPending)})}function Vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-swift-key-modal",[],null,null,null,Tn,xn)),e["\u0275did"](1,49152,null,0,O,[Xl.a,vl.a,t.b],null,null)],null,null)}var Sn=e["\u0275ccf"]("cd-rgw-user-swift-key-modal",O,Vn,{},{},[]),Nn=u("IZUe"),Dn=u("gp3X"),Fn=u("sb0X"),jn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["id","user"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](3,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](5,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,3,0,"user")},function(l,n){l(n,0,0,!0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a username --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function An(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"select",[["autofocus",""],["class","form-control"],["formControlName","user"],["id","user"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](1,4210688,null,0,Nn.a,[e.ElementRef],null,null),e["\u0275did"](2,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](4,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](6,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Bn)),e["\u0275did"](8,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,An)),e["\u0275did"](10,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,4,0,"user"),l(n,8,0,null!==u.userCandidates),l(n,10,0,u.userCandidates)},function(l,n){l(n,0,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function On(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","generate_key"],["id","generate_key"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","generate_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate key"]))],function(l,n){l(n,6,0,"generate_key")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Kn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","access_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Access key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ln)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,5,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,11)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](13,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](15,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](16,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,18).onClick()&&t),t},null,null)),e["\u0275did"](18,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](19,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,20).onClick()&&t),t},null,null)),e["\u0275did"](20,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Gn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("access_key",e["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,!u.viewing),l(n,13,0,"access_key"),l(n,18,0,"access_key"),l(n,20,0,"access_key"),l(n,22,0,u.formGroup.showError("access_key",e["\u0275nov"](n.parent,12),"required"))},function(l,n){l(n,10,0,n.component.viewing,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending)})}function $n(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Qn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,$n)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,11)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,11)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](13,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](15,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](16,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,18).onClick()&&t),t},null,null)),e["\u0275did"](18,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](19,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,20).onClick()&&t),t},null,null)),e["\u0275did"](20,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Zn)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,!u.viewing),l(n,13,0,"secret_key"),l(n,18,0,"secret_key"),l(n,20,0,"secret_key"),l(n,22,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent,12),"required"))},function(l,n){l(n,10,0,n.component.viewing,e["\u0275nov"](n,15).ngClassUntouched,e["\u0275nov"](n,15).ngClassTouched,e["\u0275nov"](n,15).ngClassPristine,e["\u0275nov"](n,15).ngClassDirty,e["\u0275nov"](n,15).ngClassValid,e["\u0275nov"](n,15).ngClassInvalid,e["\u0275nov"](n,15).ngClassPending)})}function Hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Dn.b,Dn.a)),e["\u0275did"](1,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](2,0,["","",""])),e["\u0275ppd"](3,1),e["\u0275ppd"](4,1)],function(l,n){l(n,1,0,n.component.formGroup)},function(l,n){var u=n.component,t=e["\u0275unv"](n,2,0,l(n,3,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,2,1,l(n,4,0,e["\u0275nov"](n.parent,1),u.resource));l(n,2,0,t,i)})}function Yn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["","",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,31,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,21,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Pn)),e["\u0275did"](23,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,zn)),e["\u0275did"](26,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Un)),e["\u0275did"](28,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,On)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Mn)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Kn)),e["\u0275did"](34,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qn)),e["\u0275did"](36,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](37,0,null,null,4,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Hn)),e["\u0275did"](39,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](40,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](41,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("user",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,23,0,!u.viewing),l(n,26,0,u.viewing),l(n,28,0,!u.viewing),l(n,30,0,u.formGroup.showError("user",e["\u0275nov"](n,12),"required")),l(n,32,0,!u.viewing),l(n,34,0,!u.formGroup.getValue("generate_key")),l(n,36,0,!u.formGroup.getValue("generate_key")),l(n,39,0,!u.viewing),l(n,41,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Xn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-s3-key-modal",[],null,null,null,Yn,jn)),e["\u0275did"](1,49152,null,0,B,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var Wn=e["\u0275ccf"]("cd-rgw-user-s3-key-modal",B,Xn,{},{submitAction:"submitAction"},[]),Jn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function lu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function nu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","type"],["id","type"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](3,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](5,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,3,0,"type")},function(l,n){l(n,0,0,!0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a type --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function eu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function tu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"select",[["autofocus",""],["class","form-control"],["formControlName","type"],["id","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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](1,4210688,null,0,Nn.a,[e.ElementRef],null,null),e["\u0275did"](2,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](4,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](6,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,uu)),e["\u0275did"](8,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,eu)),e["\u0275did"](10,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,4,0,"type"),l(n,8,0,null!==u.types),l(n,10,0,u.types)},function(l,n){l(n,0,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function au(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ru(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["","",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,51,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,38,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","type"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Type"])),(l()(),e["\u0275and"](16777216,null,null,1,null,lu)),e["\u0275did"](23,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,nu)),e["\u0275did"](26,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,tu)),e["\u0275did"](28,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,iu)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](31,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](32,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](33,{"has-error":0}),(l()(),e["\u0275eld"](34,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","perm"]],null,null,null,null,null)),(l()(),e["\u0275eld"](35,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permission"])),(l()(),e["\u0275eld"](37,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](38,0,null,null,15,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,12,"select",[["class","form-control"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,40).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,40).onTouched()&&t),t},null,null)),e["\u0275did"](40,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](42,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](44,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](45,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](46,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](47,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a permission --"])),(l()(),e["\u0275and"](16777216,null,null,2,null,ou)),e["\u0275did"](50,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["\u0275pad"](51,3),(l()(),e["\u0275and"](16777216,null,null,1,null,au)),e["\u0275did"](53,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](54,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Dn.b,Dn.a)),e["\u0275did"](56,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](57,0,["","",""])),e["\u0275ppd"](58,1),e["\u0275ppd"](59,1),(l()(),e["\u0275eld"](60,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](61,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("type",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,23,0,!u.editing),l(n,26,0,u.editing),l(n,28,0,!u.editing),l(n,30,0,u.formGroup.showError("type",e["\u0275nov"](n,12),"required"));var i=l(n,33,0,u.formGroup.showError("perm",e["\u0275nov"](n,12)));l(n,32,0,"form-group",i),l(n,42,0,"perm"),l(n,46,0,null),l(n,47,0,null);var o=l(n,51,0,"read","write","*");l(n,50,0,o),l(n,53,0,u.formGroup.showError("perm",e["\u0275nov"](n,12),"required")),l(n,56,0,u.formGroup),l(n,61,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending),l(n,39,0,e["\u0275nov"](n,44).ngClassUntouched,e["\u0275nov"](n,44).ngClassTouched,e["\u0275nov"](n,44).ngClassPristine,e["\u0275nov"](n,44).ngClassDirty,e["\u0275nov"](n,44).ngClassValid,e["\u0275nov"](n,44).ngClassInvalid,e["\u0275nov"](n,44).ngClassPending);var o=e["\u0275unv"](n,57,0,l(n,58,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,57,1,l(n,59,0,e["\u0275nov"](n,1),u.resource));l(n,57,0,o,a)})}function su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-capability-modal",[],null,null,null,ru,Jn)),e["\u0275did"](1,49152,null,0,z,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var du=e["\u0275ccf"]("cd-rgw-user-capability-modal",z,su,{},{submitAction:"submitAction"},[]),cu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function mu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen subuser ID is already in use."]))],null,null)}function gu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function vu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function bu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function hu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,bu)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent.parent,12)));l(n,1,0,"form-group",t),l(n,12,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.formGroup.showError("secret_key",e["\u0275nov"](n.parent.parent,12),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Swift key"])),(l()(),e["\u0275eld"](3,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,5,"input",[["formControlName","generate_secret"],["id","generate_secret"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,7).onTouched()&&t),t},null,null)),e["\u0275did"](7,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](9,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](11,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](12,0,null,null,1,"label",[["for","generate_secret"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate secret"])),(l()(),e["\u0275and"](16777216,null,null,1,null,hu)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,9,0,"generate_secret"),l(n,15,0,!u.editing&&!u.formGroup.getValue("generate_secret"))},function(l,n){l(n,6,0,e["\u0275nov"](n,11).ngClassUntouched,e["\u0275nov"](n,11).ngClassTouched,e["\u0275nov"](n,11).ngClassPristine,e["\u0275nov"](n,11).ngClassDirty,e["\u0275nov"](n,11).ngClassValid,e["\u0275nov"](n,11).ngClassInvalid,e["\u0275nov"](n,11).ngClassPending)})}function yu(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),e["\u0275ted"](4,null,["","",""])),e["\u0275ppd"](5,1),e["\u0275ppd"](6,1),(l()(),e["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.bsModalRef.hide()&&e),e},null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["\xd7"])),(l()(),e["\u0275eld"](10,0,null,null,78,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,12).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,12).onReset()&&t),t},null,null)),e["\u0275did"](11,16384,null,0,s.D,[],null,null),e["\u0275did"](12,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](14,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](15,0,null,null,65,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","uid"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275eld"](21,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,5,"input",[["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,23)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,23).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,23)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,23)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](23,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](25,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](27,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](28,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](29,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](30,{"has-error":0}),(l()(),e["\u0275eld"](31,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","subuid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](32,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subuser"])),(l()(),e["\u0275and"](16777216,null,null,1,null,pu)),e["\u0275did"](35,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](36,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","subuid"],["id","subuid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,39)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,39).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,39)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,39)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](38,4210688,null,0,Nn.a,[e.ElementRef],null,null),e["\u0275did"](39,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](41,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](43,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,fu)),e["\u0275did"](45,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,mu)),e["\u0275did"](47,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](48,0,null,null,30,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](49,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](50,{"has-error":0}),(l()(),e["\u0275eld"](51,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","perm"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permission"])),(l()(),e["\u0275eld"](54,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](55,0,null,null,23,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,null,20,"select",[["class","form-control"],["formControlName","perm"],["id","perm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,57).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,57).onTouched()&&t),t},null,null)),e["\u0275did"](57,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](59,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](61,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](62,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](63,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](64,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a permission --"])),(l()(),e["\u0275and"](16777216,null,null,2,null,gu)),e["\u0275did"](67,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),e["\u0275pad"](68,2),(l()(),e["\u0275eld"](69,0,null,null,3,"option",[["value","read-write"]],null,null,null,null,null)),e["\u0275did"](70,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](71,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](-1,null,["read, write"])),(l()(),e["\u0275eld"](73,0,null,null,3,"option",[["value","full-control"]],null,null,null,null,null)),e["\u0275did"](74,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](75,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](-1,null,["full"])),(l()(),e["\u0275and"](16777216,null,null,1,null,vu)),e["\u0275did"](78,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Cu)),e["\u0275did"](80,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](81,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](82,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Dn.b,Dn.a)),e["\u0275did"](83,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](84,0,["","",""])),e["\u0275ppd"](85,1),e["\u0275ppd"](86,1),(l()(),e["\u0275eld"](87,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](88,49152,null,0,En.a,[Il.Location,t.b],{back:[0,"back"]},null)],function(l,n){var u=n.component;l(n,12,0,u.formGroup);var t=l(n,18,0,u.formGroup.showError("uid",e["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,25,0,"uid");var i=l(n,30,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12)));l(n,29,0,"form-group",i),l(n,35,0,!u.editing),l(n,41,0,"subuid"),l(n,45,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12),"required")),l(n,47,0,u.formGroup.showError("subuid",e["\u0275nov"](n,12),"subuserIdExists"));var o=l(n,50,0,u.formGroup.showError("perm",e["\u0275nov"](n,12)));l(n,49,0,"form-group",o),l(n,59,0,"perm"),l(n,63,0,null),l(n,64,0,null);var a=l(n,68,0,"read","write");l(n,67,0,a),l(n,70,0,"read-write"),l(n,71,0,"read-write"),l(n,74,0,"full-control"),l(n,75,0,"full-control"),l(n,78,0,u.formGroup.showError("perm",e["\u0275nov"](n,12),"required")),l(n,80,0,!u.editing),l(n,83,0,u.formGroup),l(n,88,0,u.bsModalRef.hide)},function(l,n){var u=n.component,t=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,4,1,l(n,6,0,e["\u0275nov"](n,1),u.resource));l(n,4,0,t,i),l(n,10,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending),l(n,22,0,!0,e["\u0275nov"](n,27).ngClassUntouched,e["\u0275nov"](n,27).ngClassTouched,e["\u0275nov"](n,27).ngClassPristine,e["\u0275nov"](n,27).ngClassDirty,e["\u0275nov"](n,27).ngClassValid,e["\u0275nov"](n,27).ngClassInvalid,e["\u0275nov"](n,27).ngClassPending),l(n,37,0,u.editing,e["\u0275nov"](n,43).ngClassUntouched,e["\u0275nov"](n,43).ngClassTouched,e["\u0275nov"](n,43).ngClassPristine,e["\u0275nov"](n,43).ngClassDirty,e["\u0275nov"](n,43).ngClassValid,e["\u0275nov"](n,43).ngClassInvalid,e["\u0275nov"](n,43).ngClassPending),l(n,56,0,e["\u0275nov"](n,61).ngClassUntouched,e["\u0275nov"](n,61).ngClassTouched,e["\u0275nov"](n,61).ngClassPristine,e["\u0275nov"](n,61).ngClassDirty,e["\u0275nov"](n,61).ngClassValid,e["\u0275nov"](n,61).ngClassInvalid,e["\u0275nov"](n,61).ngClassPending);var o=e["\u0275unv"](n,84,0,l(n,85,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,84,1,l(n,86,0,e["\u0275nov"](n,1),u.resource));l(n,84,0,o,a)})}function _u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-subuser-modal",[],null,null,null,yu,cu)),e["\u0275did"](1,49152,null,0,U,[_.a,Xl.a,vl.a,t.b],null,null)],null,null)}var ku=e["\u0275ccf"]("cd-rgw-user-subuser-modal",U,_u,{},{submitAction:"submitAction"},[]),Ru=u("IzCI"),Iu=u("Dwqy"),wu=u("uYzU"),qu=u("uhwM"),Eu=u("E2fk"),xu=u("nSDx"),Tu=u("SB+Q"),Vu=u("TYzs"),Su=u("BQkM"),Nu=u("dEH0"),Du=u("lTVp"),Fu=u("OZfm"),ju=u("NJnL"),Pu=u("eajB"),zu=u("FO+L"),Bu=u("nhM1"),Au=u("BARL"),Uu=u("ZYCi"),Ou=u("9Xeq"),Mu=u("xdbM"),Lu=u("yGOH"),Gu=u("V/fk"),Ku=u("F8xH"),$u=u("ChqD"),Zu=u("PCNd"),Qu=u("G6Q+"),Hu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Yu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","WAkugZpiz"]],null,null,null,pl.b,pl.a)),e["\u0275did"](3,638976,null,0,fl.a,[a.a,ml.DomSanitizer,gl.a,o.a,vl.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rgw-overview?","two","WAkugZpiz")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function Xu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,bl.b,bl.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,5,"tab",[["heading","Daemons List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,3,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getDaemonList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](5,2867200,null,0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](6,0,null,2,1,"cd-rgw-daemon-details",[["cdTableDetail",""]],null,null,null,Tl,ql)),e["\u0275did"](7,573440,null,0,wl,[N,x.a],{selection:[0,"selection"]},null),(l()(),e["\u0275and"](16777216,null,0,1,null,Yu)),e["\u0275did"](9,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,"Daemons List"),l(n,5,0,u.daemons,u.columns,"flex","single"),l(n,7,0,u.selection),l(n,9,0,u.grafanaPermission.read)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Wu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-daemon-list",[],null,null,null,Xu,Hu)),e["\u0275did"](1,49152,null,0,F,[N,x.a,D.a,vl.a],null,null)],null,null)}var Ju=e["\u0275ccf"]("cd-rgw-daemon-list",F,Wu,{},{},[]),le=u("NUGo"),ne=u("S7zO"),ue=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ee(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","user_id"],["selectionType","multi"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getUserList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](2,2867200,[[1,4],["table",4]],0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,le.b,le.a)),e["\u0275did"](4,114688,null,0,ne.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,2,1,"cd-rgw-user-details",[["cdTableDetail",""]],null,null,null,Cn,Wl)),e["\u0275did"](6,638976,null,0,Yl,[C.a,Xl.b,vl.a],{selection:[0,"selection"]},null)],function(l,n){var u=n.component;l(n,2,0,u.users,u.columns,"flex",!1,"user_id","multi"),l(n,4,0,u.permission,u.selection,u.tableActions),l(n,6,0,u.selection)},null)}function te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-rgw-user-list",[],null,null,null,ee,ue)),e["\u0275prd"](256,null,T.a,G,[]),e["\u0275did"](2,49152,null,0,K,[x.a,C.a,Xl.b,vl.a,T.a,t.b],null,null)],null,null)}var ie=e["\u0275ccf"]("cd-rgw-user-list",K,te,{},{},[]),oe=u("QC43"),ae=u("XFyV"),re=u("M/6F"),se=u("NDi4"),de=u("EmSq"),ce=e["\u0275crt"]({encapsulation:0,styles:[["form[_ngcontent-%COMP%]   .input-group-addon[_ngcontent-%COMP%]{color:#90949c!important;background-color:transparent}"]],data:{}});function pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,oe.b,oe.a)),e["\u0275did"](1,49152,null,0,ae.a,[],null,null),(l()(),e["\u0275ted"](-1,0,["Loading user data..."]))],null,null)}function fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,[[null,"backAction"]],function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e},re.b,re.a)),e["\u0275did"](1,49152,null,0,se.a,[],null,{backAction:"backAction"}),(l()(),e["\u0275ted"](-1,0,["The user data could not be loaded."]))],null,null)}function me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen user ID is already in use."]))],null,null)}function be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function he(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This is not a valid email address."]))],null,null)}function ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen email address is already in use."]))],null,null)}function _e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function Re(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ie(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","access_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Access key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","access_key"],["id","access_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","access_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Re)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("access_key",e["\u0275nov"](n.parent.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"access_key"),l(n,17,0,"access_key"),l(n,19,0,"access_key"),l(n,21,0,u.userForm.showError("access_key",e["\u0275nov"](n.parent.parent,3),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function we(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","secret_key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Secret key"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"input",[["class","form-control"],["formControlName","secret_key"],["id","secret_key"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,10)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,10)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](10,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](15,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,"button",[["cdPasswordButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,17).onClick()&&t),t},null,null)),e["\u0275did"](17,81920,null,0,Rn.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](18,0,null,null,1,"button",[["cdCopy2ClipboardButton","secret_key"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,19).onClick()&&t),t},null,null)),e["\u0275did"](19,81920,null,0,In.a,[e.ElementRef,e.Renderer2,wn.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,we)),e["\u0275did"](21,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("secret_key",e["\u0275nov"](n.parent.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"secret_key"),l(n,17,0,"secret_key"),l(n,19,0,"secret_key"),l(n,21,0,u.userForm.showError("secret_key",e["\u0275nov"](n.parent.parent,3),"required"))},function(l,n){l(n,9,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Ee(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["S3 key"])),(l()(),e["\u0275eld"](3,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,5,"input",[["formControlName","generate_key"],["id","generate_key"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,7).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,7).onTouched()&&t),t},null,null)),e["\u0275did"](7,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](9,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](11,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](12,0,null,null,1,"label",[["for","generate_key"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Auto-generate key"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ie)),e["\u0275did"](15,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,qe)),e["\u0275did"](17,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,9,0,"generate_key"),l(n,15,0,!u.editing&&!u.userForm.getValue("generate_key")),l(n,17,0,!u.editing&&!u.userForm.getValue("generate_key"))},function(l,n){l(n,6,0,e["\u0275nov"](n,11).ngClassUntouched,e["\u0275nov"](n,11).ngClassTouched,e["\u0275nov"](n,11).ngClassPristine,e["\u0275nov"](n,11).ngClassDirty,e["\u0275nov"](n,11).ngClassValid,e["\u0275nov"](n,11).ngClassInvalid,e["\u0275nov"](n,11).ngClassPending)})}function xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no subusers."]))],null,null)}function Te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,"span",[["class","input-group-addon"],["style","border-left: 0; border-right: 0;"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,0,"i",[["class","icon-prepend fa fa-share-alt"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_showSubuserButton"],["tooltip","Edit"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-cogs"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteSubuserButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteSubuser(l.context.index)&&e),e},null,null)),e["\u0275did"](13,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](14,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,10,0,"Edit"),l(n,13,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.id,"")),l(n,7,0,e["\u0275inlineInterpolate"](1,"","full-control"===n.context.$implicit.permissions?"full":n.context.$implicit.permissions,"")),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby),l(n,12,0,e["\u0275nov"](n,13).ariaDescribedby)})}function Ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,14,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Subusers"])),(l()(),e["\u0275eld"](3,0,null,null,11,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,xe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Te)),e["\u0275did"](7,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addSubuserButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSubuserModal()&&e),e},null,null)),(l()(),e["\u0275eld"](10,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["","",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1)],function(l,n){var u=n.component;l(n,5,0,0===u.subusers.length),l(n,7,0,u.subusers)},function(l,n){var u=n.component,t=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n.parent.parent,1),u.subuserLabel));l(n,12,0,t,i)})}function Se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no keys."]))],null,null)}function Ne(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,12,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_showS3KeyButton"],["tooltip","Show"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteS3KeyButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteS3Key(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Show"),l(n,10,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.user,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby)})}function De(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no keys."]))],null,null)}function Fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,7,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-key"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,3,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_showSwiftKeyButton"],["tooltip","Show"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showSwiftKeyModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-eye"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Show")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.user,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby)})}function je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,24,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Keys"])),(l()(),e["\u0275eld"](3,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["S3"])),(l()(),e["\u0275eld"](5,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Se)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ne)),e["\u0275did"](9,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](10,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addS3KeyButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showS3KeyModal()&&e),e},null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](14,null,["","",""])),e["\u0275ppd"](15,1),e["\u0275ppd"](16,1),(l()(),e["\u0275eld"](17,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Swift"])),(l()(),e["\u0275eld"](20,0,null,null,4,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,De)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fe)),e["\u0275did"](24,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,7,0,0===u.s3Keys.length),l(n,9,0,u.s3Keys),l(n,22,0,0===u.swiftKeys.length),l(n,24,0,u.swiftKeys)},function(l,n){var u=n.component,t=e["\u0275unv"](n,14,0,l(n,15,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.CREATE)),i=e["\u0275unv"](n,14,1,l(n,16,0,e["\u0275nov"](n.parent.parent,1),u.s3keyLabel));l(n,14,0,t,i)})}function Pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["There are no capabilities."]))],null,null)}function ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,12,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,10,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,0,"i",[["class","icon-prepend fa fa-share-alt"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,0,"input",[["class","form-control"],["readonly",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,6,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,16777216,null,null,2,"button",[["class","btn btn-default tc_editCapButton"],["tooltip","Edit"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal(l.context.index)&&e),e},null,null)),e["\u0275did"](7,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-cogs"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,16777216,null,null,2,"button",[["class","btn btn-default tc_deleteCapButton"],["tooltip","Delete"],["type","button"]],[[1,"aria-describedby",0]],[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.deleteCapability(l.context.index)&&e),e},null,null)),e["\u0275did"](10,212992,null,0,Pu.c,[e.ViewContainerRef,e.Renderer2,e.ElementRef,Ql.a,Pu.a],{tooltip:[0,"tooltip"]},null),(l()(),e["\u0275eld"](11,0,null,null,0,"i",[["class","fa fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,0,"span",[["class","help-block"]],null,null,null,null,null))],function(l,n){l(n,7,0,"Edit"),l(n,10,0,"Delete")},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](2,"",n.context.$implicit.type,":",n.context.$implicit.perm,"")),l(n,6,0,e["\u0275nov"](n,7).ariaDescribedby),l(n,9,0,e["\u0275nov"](n,10).ariaDescribedby)})}function Be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,14,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Capabilities"])),(l()(),e["\u0275eld"](3,0,null,null,11,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Pe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ze)),e["\u0275did"](7,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](8,0,null,null,6,"span",[["class","form-control no-border"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,5,"button",[["class","btn btn-sm btn-default btn-label pull-right tc_addCapButton"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.showCapabilityModal()&&e),e},null,null)),(l()(),e["\u0275eld"](10,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["","",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1)],function(l,n){var u=n.component;l(n,5,0,0===u.capabilities.length),l(n,7,0,u.capabilities)},function(l,n){var u=n.component,t=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n.parent.parent,0),u.actionLabels.ADD)),i=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n.parent.parent,1),u.capabilityLabel));l(n,12,0,t,i)})}function Ae(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","user_quota_max_size_unlimited"],["id","user_quota_max_size_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","user_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited size"]))],function(l,n){l(n,6,0,"user_quota_max_size_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ue(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Oe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function Me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","user_quota_max_size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. size"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","user_quota_max_size"],["id","user_quota_max_size"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,13).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](13,81920,null,0,de.a,[e.ElementRef,s.q,Hl.a,P.a],null,null),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ue)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Oe)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,11,0,"user_quota_max_size"),l(n,13,0),l(n,16,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_size",e["\u0275nov"](n.parent,3),"quotaMaxSize"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Le(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","user_quota_max_objects_unlimited"],["id","user_quota_max_objects_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","user_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited objects"]))],function(l,n){l(n,6,0,"user_quota_max_objects_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function $e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","user_quota_max_objects"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. objects"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","user_quota_max_objects"],["id","user_quota_max_objects"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](10,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ge)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ke)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"user_quota_max_objects"),l(n,16,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("user_quota_max_objects",e["\u0275nov"](n.parent,3),"min"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","bucket_quota_max_size_unlimited"],["id","bucket_quota_max_size_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","bucket_quota_max_size_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited size"]))],function(l,n){l(n,6,0,"bucket_quota_max_size_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function He(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function Ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","bucket_quota_max_size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. size"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["formControlName","bucket_quota_max_size"],["id","bucket_quota_max_size"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,13).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](13,81920,null,0,de.a,[e.ElementRef,s.q,Hl.a,P.a],null,null),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qe)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,He)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,11,0,"bucket_quota_max_size"),l(n,13,0),l(n,16,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_size",e["\u0275nov"](n.parent,3),"quotaMaxSize"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function Xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,5,"input",[["formControlName","bucket_quota_max_objects_unlimited"],["id","bucket_quota_max_objects_unlimited"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,4).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,4).onTouched()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](6,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](8,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](9,0,null,null,1,"label",[["for","bucket_quota_max_objects_unlimited"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Unlimited objects"]))],function(l,n){l(n,6,0,"bucket_quota_max_objects_unlimited")},function(l,n){l(n,3,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function We(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The entered value must be >= 0."]))],null,null)}function lt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","bucket_quota_max_objects"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. objects"])),(l()(),e["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","bucket_quota_max_objects"],["id","bucket_quota_max_objects"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,9)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,9)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,10).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,10).onTouched()&&t),t},null,null)),e["\u0275did"](9,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](10,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](12,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](14,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,We)),e["\u0275did"](16,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Je)),e["\u0275did"](18,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3)));l(n,1,0,"form-group",t),l(n,12,0,"bucket_quota_max_objects"),l(n,16,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3),"required")),l(n,18,0,u.userForm.showError("bucket_quota_max_objects",e["\u0275nov"](n.parent,3),"min"))},function(l,n){l(n,8,0,e["\u0275nov"](n,14).ngClassUntouched,e["\u0275nov"](n,14).ngClassTouched,e["\u0275nov"](n,14).ngClassPristine,e["\u0275nov"](n,14).ngClassDirty,e["\u0275nov"](n,14).ngClassValid,e["\u0275nov"](n,14).ngClassInvalid,e["\u0275nov"](n,14).ngClassPending)})}function nt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,156,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,155,"form",[["class","form-horizontal"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,3).onReset()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,s.D,[],null,null),e["\u0275did"](3,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](5,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](6,0,null,null,150,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["","",""])),e["\u0275ppd"](10,1),e["\u0275ppd"](11,1),(l()(),e["\u0275eld"](12,0,null,null,135,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](14,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](15,{"has-error":0}),(l()(),e["\u0275eld"](16,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","uid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,me)),e["\u0275did"](20,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](21,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","uid"],["id","uid"],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,24)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,24).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,24)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,24)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](23,4210688,null,0,Nn.a,[e.ElementRef],null,null),e["\u0275did"](24,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](26,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](28,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,ge)),e["\u0275did"](30,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ve)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](33,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](34,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](35,{"has-error":0}),(l()(),e["\u0275eld"](36,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","display_name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,be)),e["\u0275did"](40,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](41,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](42,0,null,null,5,"input",[["class","form-control"],["formControlName","display_name"],["id","display_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,43)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,43).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,43)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,43)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](43,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](45,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](47,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,he)),e["\u0275did"](49,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](50,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](51,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](52,{"has-error":0}),(l()(),e["\u0275eld"](53,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","email"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email address"])),(l()(),e["\u0275eld"](55,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,null,5,"input",[["class","form-control"],["formControlName","email"],["id","email"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,57)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,57).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,57)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,57)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](57,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](59,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](61,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ce)),e["\u0275did"](63,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ye)),e["\u0275did"](65,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](66,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](67,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](68,{"has-error":0}),(l()(),e["\u0275eld"](69,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","max_buckets"]],null,null,null,null,null)),(l()(),e["\u0275eld"](70,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Max. buckets"])),(l()(),e["\u0275eld"](72,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](73,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](74,0,null,null,6,"input",[["class","form-control"],["formControlName","max_buckets"],["id","max_buckets"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,75)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,75).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,75)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,75)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,76).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,76).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,76).onTouched()&&t),t},null,null)),e["\u0275did"](75,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275did"](76,16384,null,0,s.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l,n){return[l,n]},[s.e,s.C]),e["\u0275did"](78,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](80,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,_e)),e["\u0275did"](82,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ke)),e["\u0275did"](84,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](85,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](86,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](87,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](88,0,null,null,5,"input",[["formControlName","suspended"],["id","suspended"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,89).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,89).onTouched()&&t),t},null,null)),e["\u0275did"](89,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](91,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](93,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](94,0,null,null,1,"label",[["for","suspended"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Suspended"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ee)),e["\u0275did"](97,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ve)),e["\u0275did"](99,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,je)),e["\u0275did"](101,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Be)),e["\u0275did"](103,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](104,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](105,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User quota"])),(l()(),e["\u0275eld"](107,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](108,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](109,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](110,0,null,null,5,"input",[["formControlName","user_quota_enabled"],["id","user_quota_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,111).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,111).onTouched()&&t),t},null,null)),e["\u0275did"](111,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](113,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](115,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](116,0,null,null,1,"label",[["for","user_quota_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ae)),e["\u0275did"](119,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Me)),e["\u0275did"](121,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Le)),e["\u0275did"](123,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,$e)),e["\u0275did"](125,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](126,0,null,null,21,"fieldset",[],null,null,null,null,null)),(l()(),e["\u0275eld"](127,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Bucket quota"])),(l()(),e["\u0275eld"](129,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](130,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](131,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](132,0,null,null,5,"input",[["formControlName","bucket_quota_enabled"],["id","bucket_quota_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,133).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,133).onTouched()&&t),t},null,null)),e["\u0275did"](133,16384,null,0,s.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.c]),e["\u0275did"](135,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](137,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275eld"](138,0,null,null,1,"label",[["for","bucket_quota_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Enabled"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Ze)),e["\u0275did"](141,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ye)),e["\u0275did"](143,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Xe)),e["\u0275did"](145,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,lt)),e["\u0275did"](147,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](148,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](149,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](150,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.onSubmit()&&e),e},Dn.b,Dn.a)),e["\u0275did"](151,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](152,0,["","",""])),e["\u0275ppd"](153,1),e["\u0275ppd"](154,1),(l()(),e["\u0275eld"](155,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](156,49152,null,0,En.a,[Il.Location,t.b],null,null)],function(l,n){var u=n.component;l(n,3,0,u.userForm);var t=l(n,15,0,u.userForm.showError("uid",e["\u0275nov"](n,3)));l(n,14,0,"form-group",t),l(n,20,0,!u.editing),l(n,26,0,"uid"),l(n,30,0,u.userForm.showError("uid",e["\u0275nov"](n,3),"required")),l(n,32,0,u.userForm.showError("uid",e["\u0275nov"](n,3),"notUnique"));var i=l(n,35,0,u.userForm.showError("display_name",e["\u0275nov"](n,3)));l(n,34,0,"form-group",i),l(n,40,0,!u.editing),l(n,45,0,"display_name"),l(n,49,0,u.userForm.showError("display_name",e["\u0275nov"](n,3),"required"));var o=l(n,52,0,u.userForm.showError("email",e["\u0275nov"](n,3)));l(n,51,0,"form-group",o),l(n,59,0,"email"),l(n,63,0,u.userForm.showError("email",e["\u0275nov"](n,3),"email")),l(n,65,0,u.userForm.showError("email",e["\u0275nov"](n,3),"notUnique"));var a=l(n,68,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3)));l(n,67,0,"form-group",a),l(n,78,0,"max_buckets"),l(n,82,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3),"required")),l(n,84,0,u.userForm.showError("max_buckets",e["\u0275nov"](n,3),"min")),l(n,91,0,"suspended"),l(n,97,0,!u.editing),l(n,99,0,u.editing),l(n,101,0,u.editing),l(n,103,0,u.editing),l(n,113,0,"user_quota_enabled"),l(n,119,0,u.userForm.controls.user_quota_enabled.value),l(n,121,0,!u.userForm.getValue("user_quota_max_size_unlimited")),l(n,123,0,u.userForm.controls.user_quota_enabled.value),l(n,125,0,!u.userForm.getValue("user_quota_max_objects_unlimited")),l(n,135,0,"bucket_quota_enabled"),l(n,141,0,u.userForm.controls.bucket_quota_enabled.value),l(n,143,0,!u.userForm.getValue("bucket_quota_max_size_unlimited")),l(n,145,0,u.userForm.controls.bucket_quota_enabled.value),l(n,147,0,!u.userForm.getValue("bucket_quota_max_objects_unlimited")),l(n,151,0,u.userForm,"button")},function(l,n){var u=n.component;l(n,1,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending);var t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,9,1,l(n,11,0,e["\u0275nov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,22,0,u.editing,e["\u0275nov"](n,28).ngClassUntouched,e["\u0275nov"](n,28).ngClassTouched,e["\u0275nov"](n,28).ngClassPristine,e["\u0275nov"](n,28).ngClassDirty,e["\u0275nov"](n,28).ngClassValid,e["\u0275nov"](n,28).ngClassInvalid,e["\u0275nov"](n,28).ngClassPending),l(n,42,0,e["\u0275nov"](n,47).ngClassUntouched,e["\u0275nov"](n,47).ngClassTouched,e["\u0275nov"](n,47).ngClassPristine,e["\u0275nov"](n,47).ngClassDirty,e["\u0275nov"](n,47).ngClassValid,e["\u0275nov"](n,47).ngClassInvalid,e["\u0275nov"](n,47).ngClassPending),l(n,56,0,e["\u0275nov"](n,61).ngClassUntouched,e["\u0275nov"](n,61).ngClassTouched,e["\u0275nov"](n,61).ngClassPristine,e["\u0275nov"](n,61).ngClassDirty,e["\u0275nov"](n,61).ngClassValid,e["\u0275nov"](n,61).ngClassInvalid,e["\u0275nov"](n,61).ngClassPending),l(n,74,0,e["\u0275nov"](n,80).ngClassUntouched,e["\u0275nov"](n,80).ngClassTouched,e["\u0275nov"](n,80).ngClassPristine,e["\u0275nov"](n,80).ngClassDirty,e["\u0275nov"](n,80).ngClassValid,e["\u0275nov"](n,80).ngClassInvalid,e["\u0275nov"](n,80).ngClassPending),l(n,88,0,e["\u0275nov"](n,93).ngClassUntouched,e["\u0275nov"](n,93).ngClassTouched,e["\u0275nov"](n,93).ngClassPristine,e["\u0275nov"](n,93).ngClassDirty,e["\u0275nov"](n,93).ngClassValid,e["\u0275nov"](n,93).ngClassInvalid,e["\u0275nov"](n,93).ngClassPending),l(n,110,0,e["\u0275nov"](n,115).ngClassUntouched,e["\u0275nov"](n,115).ngClassTouched,e["\u0275nov"](n,115).ngClassPristine,e["\u0275nov"](n,115).ngClassDirty,e["\u0275nov"](n,115).ngClassValid,e["\u0275nov"](n,115).ngClassInvalid,e["\u0275nov"](n,115).ngClassPending),l(n,132,0,e["\u0275nov"](n,137).ngClassUntouched,e["\u0275nov"](n,137).ngClassTouched,e["\u0275nov"](n,137).ngClassPristine,e["\u0275nov"](n,137).ngClassDirty,e["\u0275nov"](n,137).ngClassValid,e["\u0275nov"](n,137).ngClassInvalid,e["\u0275nov"](n,137).ngClassPending);var o=e["\u0275unv"](n,152,0,l(n,153,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,152,1,l(n,154,0,e["\u0275nov"](n.parent,1),u.resource));l(n,152,0,o,a)})}function ut(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275and"](16777216,null,null,1,null,pe)),e["\u0275did"](3,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,fe)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nt)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)},null)}function et(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-user-form",[],null,null,null,ut,ce)),e["\u0275did"](1,114688,null,0,M,[_.a,Uu.a,Uu.l,C.a,Xl.b,k.a,vl.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var tt=e["\u0275ccf"]("cd-rgw-user-form",M,et,{},{},[]),it=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ot(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","bucket"],["selectionType","multi"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(l,n,u){var e=!0,t=l.component;return"updateSelection"===n&&(e=!1!==t.updateSelection(u)&&e),"fetchData"===n&&(e=!1!==t.getBucketList(u)&&e),e},$l.b,$l.a)),e["\u0275did"](2,2867200,[[1,4],["table",4]],0,q.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,le.b,le.a)),e["\u0275did"](4,114688,null,0,ne.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,2,1,"cd-rgw-bucket-details",[["cdTableDetail",""]],null,null,null,Ll,jl)),e["\u0275did"](6,573440,null,0,Fl,[],{selection:[0,"selection"]},null)],function(l,n){var u=n.component;l(n,2,0,u.buckets,u.columns,"flex",!1,"bucket","multi"),l(n,4,0,u.permission,u.selection,u.tableActions),l(n,6,0,u.selection)},null)}function at(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-rgw-bucket-list",[],null,null,null,ot,it)),e["\u0275prd"](256,null,T.a,V,[]),e["\u0275did"](2,49152,null,0,S,[x.a,h,Xl.b,vl.a,T.a,t.b],null,null)],null,null)}var rt=e["\u0275ccf"]("cd-rgw-bucket-list",S,at,{},{},[]),st=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function dt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,oe.b,oe.a)),e["\u0275did"](1,49152,null,0,ae.a,[],null,null),(l()(),e["\u0275ted"](-1,0,["Loading bucket data..."]))],null,null)}function ct(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,[[null,"backAction"]],function(l,n,u){var e=!0;return"backAction"===n&&(e=!1!==l.component.goToListView()&&e),e},re.b,re.a)),e["\u0275did"](1,49152,null,0,se.a,[],null,{backAction:"backAction"}),(l()(),e["\u0275ted"](-1,0,["The bucket data could not be loaded."]))],null,null)}function pt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","id"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Id"])),(l()(),e["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,5,"input",[["class","form-control"],["formControlName","id"],["id","id"],["name","id"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,5)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,5).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,5)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,5)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](5,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](7,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](9,16384,null,0,s.r,[[4,s.q]],null,null)],function(l,n){l(n,7,0,"id")},function(l,n){l(n,4,0,e["\u0275nov"](n,9).ngClassUntouched,e["\u0275nov"](n,9).ngClassTouched,e["\u0275nov"](n,9).ngClassPristine,e["\u0275nov"](n,9).ngClassDirty,e["\u0275nov"](n,9).ngClassValid,e["\u0275nov"](n,9).ngClassInvalid,e["\u0275nov"](n,9).ngClassPending)})}function ft(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function mt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function gt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The value is not valid."]))],null,null)}function vt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen name is already in use."]))],null,null)}function bt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function ht(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a user --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Ct(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,s.v,[e.ElementRef,e.Renderer2,[2,s.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,s.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function yt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function _t(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,67,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,66,"form",[["class","form-horizontal"],["name","bucketForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,3).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,3).onReset()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,s.D,[],null,null),e["\u0275did"](3,540672,[["frm",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,s.d,null,[s.l]),e["\u0275did"](5,16384,null,0,s.s,[[4,s.d]],null,null),(l()(),e["\u0275eld"](6,0,null,null,61,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](9,null,["","",""])),e["\u0275ppd"](10,1),e["\u0275ppd"](11,1),(l()(),e["\u0275eld"](12,0,null,null,46,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,pt)),e["\u0275did"](14,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](16,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](17,{"has-error":0}),(l()(),e["\u0275eld"](18,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","bid"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,ft)),e["\u0275did"](22,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](23,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","bid"],["id","bid"],["name","bid"],["placeholder","Name..."],["type","text"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](25,4210688,null,0,Nn.a,[e.ElementRef],null,null),e["\u0275did"](26,16384,null,0,s.e,[e.Renderer2,e.ElementRef,[2,s.b]],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.e]),e["\u0275did"](28,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](30,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,mt)),e["\u0275did"](32,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gt)),e["\u0275did"](34,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vt)),e["\u0275did"](36,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](37,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](38,278528,null,0,Il.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](39,{"has-error":0}),(l()(),e["\u0275eld"](40,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","owner"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Owner"])),(l()(),e["\u0275eld"](43,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](45,0,null,null,11,"select",[["class","form-control"],["formControlName","owner"],["id","owner"],["name","owner"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,46).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,46).onTouched()&&t),t},null,null)),e["\u0275did"](46,16384,null,0,s.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,s.p,function(l){return[l]},[s.z]),e["\u0275did"](48,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,s.q,null,[s.j]),e["\u0275did"](50,16384,null,0,s.r,[[4,s.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,bt)),e["\u0275did"](52,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ht)),e["\u0275did"](54,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ct)),e["\u0275did"](56,278528,null,0,Il.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,yt)),e["\u0275did"](58,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](59,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](60,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](61,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Dn.b,Dn.a)),e["\u0275did"](62,114688,null,0,Fn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](63,0,["","",""])),e["\u0275ppd"](64,1),e["\u0275ppd"](65,1),(l()(),e["\u0275eld"](66,0,null,null,1,"cd-back-button",[],null,null,null,qn.b,qn.a)),e["\u0275did"](67,49152,null,0,En.a,[Il.Location,t.b],null,null)],function(l,n){var u=n.component;l(n,3,0,u.bucketForm),l(n,14,0,u.editing);var t=l(n,17,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3)));l(n,16,0,"form-group",t),l(n,22,0,!u.editing),l(n,28,0,"bid"),l(n,32,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"required")),l(n,34,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"bucketNameInvalid")),l(n,36,0,u.bucketForm.showError("bid",e["\u0275nov"](n,3),"bucketNameExists"));var i=l(n,39,0,u.bucketForm.showError("owner",e["\u0275nov"](n,3)));l(n,38,0,"form-group",i),l(n,48,0,"owner"),l(n,52,0,null===u.owners),l(n,54,0,null!==u.owners),l(n,56,0,u.owners),l(n,58,0,u.bucketForm.showError("owner",e["\u0275nov"](n,3),"required")),l(n,62,0,u.bucketForm,"button")},function(l,n){var u=n.component;l(n,1,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending);var t=e["\u0275unv"](n,9,0,l(n,10,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,9,1,l(n,11,0,e["\u0275nov"](n.parent,1),u.resource));l(n,9,0,t,i),l(n,24,0,u.editing,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,45,0,e["\u0275nov"](n,50).ngClassUntouched,e["\u0275nov"](n,50).ngClassTouched,e["\u0275nov"](n,50).ngClassPristine,e["\u0275nov"](n,50).ngClassDirty,e["\u0275nov"](n,50).ngClassValid,e["\u0275nov"](n,50).ngClassInvalid,e["\u0275nov"](n,50).ngClassPending);var o=e["\u0275unv"](n,63,0,l(n,64,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,63,1,l(n,65,0,e["\u0275nov"](n.parent,1),u.resource));l(n,63,0,o,a)})}function kt(l){return e["\u0275vid"](0,[e["\u0275pid"](0,Il.TitleCasePipe,[]),e["\u0275pid"](0,kn.a,[]),(l()(),e["\u0275and"](16777216,null,null,1,null,dt)),e["\u0275did"](3,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ct)),e["\u0275did"](5,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,_t)),e["\u0275did"](7,16384,null,0,Il.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,3,0,u.editing&&u.loading&&!u.error),l(n,5,0,u.editing&&u.error),l(n,7,0,!u.loading&&!u.error)},null)}function Rt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-bucket-form",[],null,null,null,kt,st)),e["\u0275did"](1,114688,null,0,R,[Uu.a,Uu.l,_.a,h,C.a,k.a,vl.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var It=e["\u0275ccf"]("cd-rgw-bucket-form",R,Rt,{},{},[]),wt=u("TZo1"),qt=u("9Kw/"),Et=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function xt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"cd-info-panel",[],null,null,null,wt.b,wt.a)),e["\u0275did"](1,49152,null,0,qt.a,[vl.a],null,null),(l()(),e["\u0275ted"](2,0,[" ",""])),(l()(),e["\u0275eld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Please consult the "])),(l()(),e["\u0275eld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["documentation"])),(l()(),e["\u0275ted"](-1,null,[" on how to configure and enable the Object Gateway management functionality."]))],null,function(l,n){var u=n.component;l(n,2,0,u.message),l(n,6,0,e["\u0275inlineInterpolate"](1,"",u.docsUrl,""))})}function Tt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rgw-501",[],null,null,null,xt,Et)),e["\u0275did"](1,245760,null,0,r,[Uu.a,a.a,o.a],null,null)],function(l,n){l(n,1,0)},null)}var Vt=e["\u0275ccf"]("cd-rgw-501",r,Tt,{},{},[]);u.d(n,"RgwModuleNgFactory",function(){return St}),u.d(n,"RoutedRgwModuleNgFactory",function(){return Nt});var St=e["\u0275cmf"]($,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[ul.a,el.a,tl.a,il.a,il.b,ol.a,al.a,rl.a,sl.a,dl.a,Sl,Kl,_n,Sn,Wn,du,ku]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,Il.NgLocalization,Il.NgLocaleLocalization,[e.LOCALE_ID,[2,Il["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,Nl.a,Nl.a,[vl.a]),e["\u0275mpd"](4608,Il.DatePipe,Il.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,o.a,o.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,Hl.a,Hl.a,[P.a]),e["\u0275mpd"](4608,Ru.a,Ru.a,[P.a]),e["\u0275mpd"](4608,Dl.a,Dl.a,[P.a]),e["\u0275mpd"](4608,Iu.a,Iu.a,[]),e["\u0275mpd"](4608,wu.a,wu.a,[]),e["\u0275mpd"](4608,qu.a,qu.a,[]),e["\u0275mpd"](4608,Eu.a,Eu.a,[]),e["\u0275mpd"](4608,yl.a,yl.a,[Il.DatePipe]),e["\u0275mpd"](4608,xu.a,xu.a,[]),e["\u0275mpd"](4608,Tu.a,Tu.a,[]),e["\u0275mpd"](4608,Vu.a,Vu.a,[]),e["\u0275mpd"](4608,Su.a,Su.a,[]),e["\u0275mpd"](4608,Nu.a,Nu.a,[]),e["\u0275mpd"](4608,kn.a,kn.a,[]),e["\u0275mpd"](4608,s.E,s.E,[]),e["\u0275mpd"](4608,s.h,s.h,[]),e["\u0275mpd"](4608,Du.b,Du.b,[]),e["\u0275mpd"](4608,Fu.a,Fu.a,[]),e["\u0275mpd"](4608,ju.a,ju.a,[]),e["\u0275mpd"](4608,Ql.a,Ql.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ju.a,e.ApplicationRef]),e["\u0275mpd"](4608,Pu.a,Pu.a,[]),e["\u0275mpd"](4608,Xl.b,Xl.b,[e.RendererFactory2,Ql.a]),e["\u0275mpd"](4608,zu.ScrollbarHelper,zu.ScrollbarHelper,[ml.DOCUMENT]),e["\u0275mpd"](4608,Bu.DimensionsHelper,Bu.DimensionsHelper,[]),e["\u0275mpd"](4608,Au.ColumnChangesService,Au.ColumnChangesService,[]),e["\u0275mpd"](4608,Zl.f,Zl.f,[]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,i.a,i.a,[Uu.l,x.a]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](1073742336,Il.CommonModule,Il.CommonModule,[]),e["\u0275mpd"](1073742336,Ou.a,Ou.a,[]),e["\u0275mpd"](1073742336,s.B,s.B,[]),e["\u0275mpd"](1073742336,s.n,s.n,[]),e["\u0275mpd"](1073742336,s.x,s.x,[]),e["\u0275mpd"](1073742336,Du.c,Du.c,[]),e["\u0275mpd"](1073742336,Fu.d,Fu.d,[]),e["\u0275mpd"](1073742336,Pu.d,Pu.d,[]),e["\u0275mpd"](1073742336,Mu.ChartsModule,Mu.ChartsModule,[]),e["\u0275mpd"](1073742336,Xl.e,Xl.e,[]),e["\u0275mpd"](1073742336,Lu.a,Lu.a,[]),e["\u0275mpd"](1073742336,Zl.e,Zl.e,[]),e["\u0275mpd"](1073742336,Gu.a,Gu.a,[]),e["\u0275mpd"](1073742336,Ku.NgxDatatableModule,Ku.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,Uu.p,Uu.p,[[2,Uu.v],[2,Uu.l]]),e["\u0275mpd"](1073742336,$u.a,$u.a,[]),e["\u0275mpd"](1073742336,b.a,b.a,[]),e["\u0275mpd"](1073742336,Zu.a,Zu.a,[]),e["\u0275mpd"](1073742336,Qu.a,Qu.a,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,$,$,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,Zl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}),Nt=e["\u0275cmf"](nl,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[ul.a,el.a,tl.a,il.a,il.b,ol.a,al.a,rl.a,sl.a,dl.a,Sl,Kl,_n,Sn,Wn,du,ku,Ju,ie,tt,rt,It,Vt]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,Il.NgLocalization,Il.NgLocaleLocalization,[e.LOCALE_ID,[2,Il["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,Nl.a,Nl.a,[vl.a]),e["\u0275mpd"](4608,Il.DatePipe,Il.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,o.a,o.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,Hl.a,Hl.a,[P.a]),e["\u0275mpd"](4608,Ru.a,Ru.a,[P.a]),e["\u0275mpd"](4608,Dl.a,Dl.a,[P.a]),e["\u0275mpd"](4608,Iu.a,Iu.a,[]),e["\u0275mpd"](4608,wu.a,wu.a,[]),e["\u0275mpd"](4608,qu.a,qu.a,[]),e["\u0275mpd"](4608,Eu.a,Eu.a,[]),e["\u0275mpd"](4608,yl.a,yl.a,[Il.DatePipe]),e["\u0275mpd"](4608,xu.a,xu.a,[]),e["\u0275mpd"](4608,Tu.a,Tu.a,[]),e["\u0275mpd"](4608,Vu.a,Vu.a,[]),e["\u0275mpd"](4608,Su.a,Su.a,[]),e["\u0275mpd"](4608,Nu.a,Nu.a,[]),e["\u0275mpd"](4608,kn.a,kn.a,[]),e["\u0275mpd"](4608,s.E,s.E,[]),e["\u0275mpd"](4608,s.h,s.h,[]),e["\u0275mpd"](4608,Du.b,Du.b,[]),e["\u0275mpd"](4608,Fu.a,Fu.a,[]),e["\u0275mpd"](4608,ju.a,ju.a,[]),e["\u0275mpd"](4608,Ql.a,Ql.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,ju.a,e.ApplicationRef]),e["\u0275mpd"](4608,Pu.a,Pu.a,[]),e["\u0275mpd"](4608,Xl.b,Xl.b,[e.RendererFactory2,Ql.a]),e["\u0275mpd"](4608,zu.ScrollbarHelper,zu.ScrollbarHelper,[ml.DOCUMENT]),e["\u0275mpd"](4608,Bu.DimensionsHelper,Bu.DimensionsHelper,[]),e["\u0275mpd"](4608,Au.ColumnChangesService,Au.ColumnChangesService,[]),e["\u0275mpd"](4608,Zl.f,Zl.f,[]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,i.a,i.a,[Uu.l,x.a]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](1073742336,Il.CommonModule,Il.CommonModule,[]),e["\u0275mpd"](1073742336,Ou.a,Ou.a,[]),e["\u0275mpd"](1073742336,s.B,s.B,[]),e["\u0275mpd"](1073742336,s.n,s.n,[]),e["\u0275mpd"](1073742336,s.x,s.x,[]),e["\u0275mpd"](1073742336,Du.c,Du.c,[]),e["\u0275mpd"](1073742336,Fu.d,Fu.d,[]),e["\u0275mpd"](1073742336,Pu.d,Pu.d,[]),e["\u0275mpd"](1073742336,Mu.ChartsModule,Mu.ChartsModule,[]),e["\u0275mpd"](1073742336,Xl.e,Xl.e,[]),e["\u0275mpd"](1073742336,Lu.a,Lu.a,[]),e["\u0275mpd"](1073742336,Zl.e,Zl.e,[]),e["\u0275mpd"](1073742336,Gu.a,Gu.a,[]),e["\u0275mpd"](1073742336,Ku.NgxDatatableModule,Ku.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,Uu.p,Uu.p,[[2,Uu.v],[2,Uu.l]]),e["\u0275mpd"](1073742336,$u.a,$u.a,[]),e["\u0275mpd"](1073742336,b.a,b.a,[]),e["\u0275mpd"](1073742336,Zu.a,Zu.a,[]),e["\u0275mpd"](1073742336,Qu.a,Qu.a,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,$,$,[]),e["\u0275mpd"](1073742336,nl,nl,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,Zl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,Uu.j,function(){return[[{path:"",redirectTo:"daemon",pathMatch:"full"},{path:"daemon",component:F,data:Z},{path:"user",data:Q,children:[{path:"",component:K},{path:"create",component:M,data:H},{path:"edit/:uid",component:M,data:Y}]},{path:"bucket",data:X,children:[{path:"",component:S},{path:"create",component:R,data:W},{path:"edit/:bid",component:R,data:J}]},{path:"501/:message",component:r,canActivate:[i.a],data:ll}]]},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.05e89b87dac0b3fdcc5c.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/7.05e89b87dac0b3fdcc5c.js
new file mode 100644 (file)
index 0000000..5f67f04
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{J6Oi:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),t=u("k/xb"),a=u("MdoF"),o=u("ES0t"),i=u("Xg1U"),r=u("z5nN"),d=u("iutN"),s=u("EEJc"),c=u("PEr+"),p=u("a40w"),f=u("pMnS"),g=u("RIVN"),m=u("nP0W"),v=u("VBM6"),h=u("atuK"),b=u("JIi+"),C=u("Ur3J"),R=u("I4Qz"),I=u("0rTx"),w=u("lz+O"),T=u("u2XS"),y=u("nhAp"),k=u("l7Jr"),x=u("bUo2"),_=u("Ip0R"),E=u("iExv"),V=u("Jm/i"),N=u("85J/"),D=u("+0ag"),S=u("aXbf"),F=u("Fgil"),P=u("IzCI"),q=u("o4+5"),O=u("Dwqy"),j=u("uYzU"),U=u("uhwM"),$=u("E2fk"),A=u("a0VL"),M=u("nSDx"),z=u("SB+Q"),L=u("TYzs"),B=u("BQkM"),G=u("dEH0"),K=u("8xTl"),H=u("gIcY"),J=u("lTVp"),Z=u("OZfm"),W=u("NJnL"),Q=u("lqqz"),Y=u("eajB"),X=u("DQlY"),ll=u("FO+L"),nl=u("ZYjt"),ul=u("nhM1"),el=u("BARL"),tl=u("xtZt"),al=u("aexS"),ol=u("Avrn"),il=u("ZYCi"),rl=u("urB8"),dl=u("JZ5S"),sl=u("Tff5"),cl=u("YAQW"),pl=u("Da1D"),fl=u("ARl4"),gl=u("9Xeq"),ml=u("xdbM"),vl=u("yGOH"),hl=u("V/fk"),bl=u("F8xH"),Cl=u("ChqD"),Rl=u("pL04"),Il=u("PCNd"),wl=u("STEd"),Tl=u("kccj"),yl=u("a278"),kl=u("insk"),xl=u("mSOc"),_l=u("20UP"),El=u("pKUh"),Vl=u("C6Ij"),Nl=u("AWcq"),Dl=u("25BL"),Sl=u("uIqm"),Fl=u("NUGo"),Pl=u("S7zO"),ql=u("JBea"),Ol=u("VTlA"),jl=u("ufoC"),Ul=u("EgGo"),$l=u("LvDl"),Al=u("F83c"),Ml=u("OLbh"),zl=u("0+/T"),Ll=u("sne2"),Bl=u("x38r"),Gl=u("yJti"),Kl=u("vCyI"),Hl=u("kvvV"),Jl=u("kn/O"),Zl=u("2JDI"),Wl=function(){return function(){}}(),Ql=new Ul.a("block/rbd"),Yl=function(){function l(l,n,u,e,t,a,o,i,r,d){var s=this;this.authStorageService=l,this.rbdService=n,this.dimlessBinaryPipe=u,this.dimlessPipe=e,this.modalService=t,this.taskWrapper=a,this.taskListService=o,this.i18n=i,this.urlBuilder=r,this.actionLabels=d,this.selection=new Kl.a,this.builders={"rbd/create":function(l){return s.createRbdFromTask(l.pool_name,l.image_name)},"rbd/clone":function(l){return s.createRbdFromTask(l.child_pool_name,l.child_image_name)},"rbd/copy":function(l){return s.createRbdFromTask(l.dest_pool_name,l.dest_image_name)}},this.permission=this.authStorageService.getPermissions().rbdImage;var c=function(){return s.selection.first()&&encodeURIComponent(s.selection.first().pool_name)+"/"+encodeURIComponent(s.selection.first().name)};this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return s.urlBuilder.getCreate()},canBePrimary:function(l){return!l.hasSingleSelection},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return s.urlBuilder.getEdit(c())},name:this.actionLabels.EDIT},{permission:"create",canBePrimary:function(l){return l.hasSingleSelection},disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting},icon:"fa-copy",routerLink:function(){return"/block/rbd/copy/"+c()},name:this.actionLabels.COPY},{permission:"update",disable:function(l){return!l.hasSingleSelection||l.first().cdExecuting||!l.first().parent},icon:"fa-chain-broken",click:function(){return s.flattenRbdModal()},name:this.actionLabels.FLATTEN},{permission:"delete",icon:"fa-times",click:function(){return s.deleteRbdModal()},name:this.actionLabels.DELETE},{permission:"delete",icon:"fa-trash-o",click:function(){return s.trashRbdModal()},name:this.actionLabels.TRASH}]}return l.prototype.createRbdFromTask=function(l,n){var u=new Wl;return u.id="-1",u.name=n,u.pool_name=l,u},l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("Name"),prop:"name",flexGrow:2,cellTransformation:Bl.a.executing},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:2},{name:this.i18n("Size"),prop:"size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Objects"),prop:"num_objs",flexGrow:1,cellClass:"text-right",pipe:this.dimlessPipe},{name:this.i18n("Object size"),prop:"obj_size",flexGrow:1,cellClass:"text-right",pipe:this.dimlessBinaryPipe},{name:this.i18n("Provisioned"),prop:"disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Total provisioned"),prop:"total_disk_usage",cellClass:"text-center",flexGrow:1,pipe:this.dimlessBinaryPipe},{name:this.i18n("Parent"),prop:"parent",flexGrow:2,cellTemplate:this.parentTpl}],this.taskListService.init(function(){return l.rbdService.list()},function(n){return l.prepareResponse(n)},function(n){return l.images=n},function(){return l.onFetchError()},this.taskFilter,this.itemFilter,this.builders)},l.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatusList=[{status:Gl.a.ValueException}]},l.prototype.prepareResponse=function(l){var n=[],u={};l.forEach(function(l){$l.isUndefined(u[l.status])&&(u[l.status]=[]),u[l.status].push(l.pool_name),n=n.concat(l.value)});var e=[];return $l.forEach(u,function(l,n){e.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=e,n},l.prototype.itemFilter=function(l,n){var u,e;switch(n.name){case"rbd/copy":u="dest_pool_name",e="dest_image_name";break;case"rbd/clone":u="child_pool_name",e="child_image_name";break;default:u="pool_name",e="image_name"}return l.pool_name===n.metadata[u]&&l.name===n.metadata[e]},l.prototype.taskFilter=function(l){return["rbd/clone","rbd/copy","rbd/create","rbd/delete","rbd/edit","rbd/flatten","rbd/trash/move"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.deleteRbdModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name;this.modalRef=this.modalService.show(zl.a,{initialState:{itemDescription:"RBD",itemNames:[n+"/"+u],submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/delete",{pool_name:n,image_name:u}),call:l.rbdService.delete(n,u)})}}})},l.prototype.trashRbdModal=function(){var l={metaType:"RBD",poolName:this.selection.first().pool_name,imageName:this.selection.first().name};this.modalRef=this.modalService.show(Zl.a,{initialState:l})},l.prototype.flattenRbd=function(l,n){var u=this;this.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/flatten",{pool_name:l,image_name:n}),call:this.rbdService.flatten(l,n)}).subscribe(void 0,void 0,function(){u.modalRef.hide()})},l.prototype.flattenRbdModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name,e=this.selection.first().parent;this.modalRef=this.modalService.show(Ml.a,{initialState:{titleText:"RBD flatten",buttonText:"Flatten",bodyTpl:this.flattenTpl,bodyData:{parent:e.pool_name+"/"+e.image_name+"@"+e.snap_name,child:n+"/"+u},onSubmit:function(){l.flattenRbd(n,u)}}})},l}(),Xl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Vl.b,Vl.a)),e["\u0275did"](1,114688,null,0,Nl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null))],null,function(l,n){l(n,0,0,"Only available for RBD images with <strong>fast-diff</strong> enabled")})}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["","/","@",""]))],null,function(l,n){l(n,1,0,n.parent.context.value.pool_name,n.parent.context.value.image_name,n.parent.context.value.snap_name)})}function en(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["-"]))],null,null)}function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,un)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,en)),e["\u0275did"](3,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value),l(n,3,0,!n.context.value)},null)}function an(l){return e["\u0275vid"](0,[(l()(),e["\u0275ted"](-1,null,[" You are about to flatten "])),(l()(),e["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](2,null,["",""])),(l()(),e["\u0275ted"](-1,null,[". "])),(l()(),e["\u0275eld"](4,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" All blocks will be copied from parent "])),(l()(),e["\u0275eld"](7,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](8,null,["",""])),(l()(),e["\u0275ted"](-1,null,[" to child "])),(l()(),e["\u0275eld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](11,null,["",""])),(l()(),e["\u0275ted"](-1,null,[".\n"]))],null,function(l,n){l(n,2,0,n.context.$implicit.child),l(n,8,0,n.context.$implicit.parent),l(n,11,0,n.context.$implicit.child)})}function on(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{table:0}),e["\u0275qud"](402653184,2,{usageTpl:0}),e["\u0275qud"](402653184,3,{parentTpl:0}),e["\u0275qud"](402653184,4,{nameTpl:0}),e["\u0275qud"](402653184,5,{flattenTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,ln)),e["\u0275did"](6,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](7,0,null,null,5,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},Dl.b,Dl.a)),e["\u0275did"](8,2867200,[[1,4],["table",4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](9,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](10,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](11,0,null,2,1,"cd-rbd-details",[["cdTableDetail",""]],null,null,null,b.c,b.b)),e["\u0275did"](12,573440,null,0,ql.a,[],{selection:[0,"selection"]},null),(l()(),e["\u0275and"](0,[["usageNotAvailableTooltipTpl",2]],null,0,null,nn)),(l()(),e["\u0275and"](0,[[3,2],["parentTpl",2]],null,0,null,tn)),(l()(),e["\u0275and"](0,[[5,2],["flattenTpl",2]],null,0,null,an))],function(l,n){var u=n.component;l(n,6,0,u.viewCacheStatusList),l(n,8,0,u.images,u.columns,"flex","id","true","single"),l(n,10,0,u.permission,u.selection,u.tableActions),l(n,12,0,u.selection)},null)}var rn=u("wd/R"),dn=u("WxU5"),sn=u("2GqK"),cn=function(){function l(l,n,u,e,t,a,o,i){var r=this;this.authStorageService=l,this.rbdService=n,this.modalService=u,this.cdDatePipe=e,this.taskListService=t,this.taskWrapper=a,this.i18n=o,this.actionLabels=i,this.executingTasks=[],this.selection=new Kl.a,this.permission=this.authStorageService.getPermissions().rbdImage,this.tableActions=[{permission:"update",icon:"fa-undo",click:function(){return r.restoreModal()},name:this.actionLabels.RESTORE},{permission:"delete",icon:"fa-times",click:function(){return r.deleteModal()},name:this.actionLabels.DELETE}]}return l.prototype.ngOnInit=function(){var l=this;this.columns=[{name:this.i18n("ID"),prop:"id",flexGrow:1,cellTransformation:Bl.a.executing},{name:this.i18n("Name"),prop:"name",flexGrow:1},{name:this.i18n("Pool"),prop:"pool_name",flexGrow:1},{name:this.i18n("Status"),prop:"deferment_end_time",flexGrow:1,cellTemplate:this.expiresTpl},{name:this.i18n("Deleted At"),prop:"deletion_time",flexGrow:1,pipe:this.cdDatePipe}],this.taskListService.init(function(){return l.rbdService.listTrash()},function(n){return l.prepareResponse(n)},function(n){return l.images=n},function(){return l.onFetchError()},this.taskFilter,this.itemFilter,void 0)},l.prototype.prepareResponse=function(l){var n=[],u={};l.forEach(function(l){$l.isUndefined(u[l.status])&&(u[l.status]=[]),u[l.status].push(l.pool_name),n=n.concat(l.value)});var e=[];return $l.forEach(u,function(l,n){e.push({status:parseInt(n,10),statusFor:(l.length>1?"pools ":"pool ")+"<strong>"+l.join("</strong>, <strong>")+"</strong>"})}),this.viewCacheStatusList=e,n.forEach(function(l){l.cdIsExpired=rn().isAfter(l.deferment_end_time)}),n},l.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatusList=[{status:Gl.a.ValueException}]},l.prototype.itemFilter=function(l,n){return l.id===n.metadata.image_id},l.prototype.taskFilter=function(l){return["rbd/trash/remove","rbd/trash/restore"].includes(l.name)},l.prototype.updateSelection=function(l){this.selection=l},l.prototype.restoreModal=function(){var l={metaType:"RBD",poolName:this.selection.first().pool_name,imageName:this.selection.first().name,imageId:this.selection.first().id};this.modalRef=this.modalService.show(sn.a,{initialState:l})},l.prototype.deleteModal=function(){var l=this,n=this.selection.first().pool_name,u=this.selection.first().name,e=this.selection.first().id,t=this.selection.first().deferment_end_time;this.modalRef=this.modalService.show(zl.a,{initialState:{itemDescription:"RBD",itemNames:[n+"/"+u],bodyTemplate:this.deleteTpl,bodyContext:{$implicit:t},submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new Hl.a("rbd/trash/remove",{pool_name:n,image_id:e,image_name:u}),call:l.rbdService.removeTrash(n,e,u,!0)})}}})},l.prototype.isExpired=function(l){return rn().isAfter(l)},l.prototype.purgeModal=function(){this.modalService.show(dn.a)},l}(),pn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Vl.b,Vl.a)),e["\u0275did"](1,114688,null,0,Nl.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.purgeModal()&&e),e},null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-fw fa-times"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Purge Trash"]))],null,null)}function mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Expired at"]))],null,null)}function vn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Protected until"]))],null,null)}function hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,mn)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vn)),e["\u0275did"](3,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275ted"](4,null,[" ","\n"])),e["\u0275ppd"](5,1)],function(l,n){l(n,1,0,n.context.row.cdIsExpired),l(n,3,0,!n.context.row.cdIsExpired)},function(l,n){var u=e["\u0275unv"](n,4,0,l(n,5,0,e["\u0275nov"](n.parent,0),n.context.value));l(n,4,0,u)})}function bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,4,"p",[["class","text-danger"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,3,"strong",[],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](3,null,["This image is protected until ","."])),e["\u0275ppd"](4,1)],null,function(l,n){var u=e["\u0275unv"](n,3,0,l(n,4,0,e["\u0275nov"](n.parent.parent,0),n.parent.context.$implicit));l(n,3,0,u)})}function Cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,bn)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,!n.component.isExpired(n.context.$implicit))},null)}function Rn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,A.a,[_.DatePipe]),e["\u0275qud"](402653184,1,{table:0}),e["\u0275qud"](402653184,2,{expiresTpl:0}),e["\u0275qud"](402653184,3,{deleteTpl:0}),(l()(),e["\u0275and"](16777216,null,null,1,null,fn)),e["\u0275did"](5,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](6,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},Dl.b,Dl.a)),e["\u0275did"](7,2867200,[[1,4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](8,0,null,0,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](10,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,gn)),e["\u0275did"](12,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,[[2,2],["expiresTpl",2]],null,0,null,hn)),(l()(),e["\u0275and"](0,[[3,2],["deleteTpl",2]],null,0,null,Cn))],function(l,n){var u=n.component;l(n,5,0,u.viewCacheStatusList),l(n,7,0,u.images,u.columns,"flex","id","true","single"),l(n,10,0,u.permission,u.selection,u.tableActions),l(n,12,0,u.permission.delete)},null)}var In=u("wG1H"),wn=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](1,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","41FrpeUiz"]],null,null,null,yl.b,yl.a)),e["\u0275did"](3,638976,null,0,kl.a,[xl.a,nl.DomSanitizer,_l.a,D.a,V.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"rbd-overview?","two","41FrpeUiz")},function(l,n){l(n,0,0,e["\u0275nov"](n,1).id,e["\u0275nov"](n,1).active,e["\u0275nov"](n,1).addClass)})}function yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,15,"div",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["\u0275did"](2,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](3,0,null,0,5,"tab",[["heading","Images"],["id","tab1"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](4,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],id:[1,"id"]},null),(l()(),e["\u0275eld"](5,0,null,null,3,"cd-rbd-list",[],null,null,null,on,Xl)),e["\u0275prd"](131584,null,Ol.a,Ol.a,[jl.a,xl.a]),e["\u0275prd"](256,null,Ul.a,Ql,[]),e["\u0275did"](8,114688,null,0,Yl,[al.a,Al.a,F.a,q.a,X.b,Jl.a,Ol.a,V.a,Ul.a,Ll.b],null,null),(l()(),e["\u0275eld"](9,0,null,0,4,"tab",[["heading","Trash"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](10,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](11,0,null,null,2,"cd-rbd-trash-list",[],null,null,null,Rn,pn)),e["\u0275prd"](131584,null,Ol.a,Ol.a,[jl.a,xl.a]),e["\u0275did"](13,114688,null,0,cn,[al.a,Al.a,X.b,A.a,Ol.a,Jl.a,V.a,Ll.b],null,null),(l()(),e["\u0275and"](16777216,null,0,1,null,Tn)),e["\u0275did"](15,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,4,0,"Images","tab1"),l(n,8,0),l(n,10,0,"Trash"),l(n,13,0),l(n,15,0,u.grafanaPermission.read)},function(l,n){l(n,1,0,e["\u0275nov"](n,2).clazz),l(n,3,0,e["\u0275nov"](n,4).id,e["\u0275nov"](n,4).active,e["\u0275nov"](n,4).addClass),l(n,9,0,e["\u0275nov"](n,10).id,e["\u0275nov"](n,10).active,e["\u0275nov"](n,10).addClass)})}function kn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rbd-images",[],null,null,null,yn,wn)),e["\u0275did"](1,114688,null,0,In.a,[al.a],null,null)],function(l,n){l(n,1,0)},null)}var xn=e["\u0275ccf"]("cd-rbd-images",In.a,kn,{},{},[]),_n=u("4HWh"),En=u("p4Cf"),Vn=u("IZUe"),Nn=u("EmSq"),Dn=u("BH9v"),Sn=u("rFfW"),Fn=u("o8EM"),Pn=u("gp3X"),qn=u("sb0X"),On=u("KVJa"),jn=u("Z21x"),Un=u("MyVl"),$n=u("Ekvf"),An=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Mn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](2,null,[""," from"])),e["\u0275ppd"](3,1),(l()(),e["\u0275eld"](4,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,5,"input",[["class","form-control"],["formControlName","parent"],["id","parent"],["name","parent"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,6)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,6).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,6)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,6)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](6,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](8,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](10,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](11,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){l(n,8,0,"parent")},function(l,n){var u=n.component,t=e["\u0275unv"](n,2,0,l(n,3,0,e["\u0275nov"](n.parent,0),u.action));l(n,2,0,t),l(n,5,0,e["\u0275nov"](n,10).ngClassUntouched,e["\u0275nov"](n,10).ngClassTouched,e["\u0275nov"](n,10).ngClassPristine,e["\u0275nov"](n,10).ngClassDirty,e["\u0275nov"](n,10).ngClassValid,e["\u0275nov"](n,10).ngClassInvalid,e["\u0275nov"](n,10).ngClassPending)})}function zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ln(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["'/' and '@' are not allowed."]))],null,null)}function Bn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Gn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","pool"],["id","pool"],["name","pool"],["placeholder","Pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null)],function(l,n){l(n,3,0,"pool")},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Kn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Hn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- No rbd pools available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Jn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a pool --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Zn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)},function(l,n){l(n,3,0,n.context.$implicit.pool_name)})}function Wn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Kn)),e["\u0275did"](7,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Hn)),e["\u0275did"](9,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Jn)),e["\u0275did"](11,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Zn)),e["\u0275did"](13,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,3,0,"pool"),l(n,7,0,null===u.pools),l(n,9,0,null!==u.pools&&0===u.pools.length),l(n,11,0,null!==u.pools&&u.pools.length>0),l(n,13,0,u.pools)},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function Qn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Yn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Xn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"input",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"],["placeholder","Data pool 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,1)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,1)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null)],function(l,n){l(n,3,0,"dataPool")},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function lu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function nu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- No data pools available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select a data pool -- "]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function eu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit.pool_name),l(n,2,0,n.context.$implicit.pool_name)},function(l,n){l(n,3,0,n.context.$implicit.pool_name)})}function tu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,13,"select",[["class","form-control"],["formControlName","dataPool"],["id","dataPool"],["name","dataPool"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0,a=l.component;return"change"===n&&(t=!1!==e["\u0275nov"](l,1).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,1).onTouched()&&t),"change"===n&&(t=!1!==a.onDataPoolChange(u.target.value)&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](3,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](5,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,lu)),e["\u0275did"](7,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,nu)),e["\u0275did"](9,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,uu)),e["\u0275did"](11,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,eu)),e["\u0275did"](13,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var u=n.component;l(n,3,0,"dataPool"),l(n,7,0,null===u.dataPools),l(n,9,0,null!==u.dataPools&&0===u.dataPools.length),l(n,11,0,null!==u.dataPools&&u.dataPools.length>0),l(n,13,0,u.dataPools)},function(l,n){l(n,0,0,e["\u0275nov"](n,5).ngClassUntouched,e["\u0275nov"](n,5).ngClassTouched,e["\u0275nov"](n,5).ngClassPristine,e["\u0275nov"](n,5).ngClassDirty,e["\u0275nov"](n,5).ngClassValid,e["\u0275nov"](n,5).ngClassInvalid,e["\u0275nov"](n,5).ngClassPending)})}function au(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","dataPool"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Data pool"])),(l()(),e["\u0275and"](16777216,null,null,1,null,Yn)),e["\u0275did"](7,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](8,0,null,null,1,"cd-helper",[["html","Dedicated pool that stores the object-data of the RBD."]],null,null,null,_n.b,_n.a)),e["\u0275did"](9,49152,null,0,En.a,[],{html:[0,"html"]},null),(l()(),e["\u0275eld"](10,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Xn)),e["\u0275did"](12,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,tu)),e["\u0275did"](14,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,au)),e["\u0275did"](16,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component,t=l(n,2,0,u.rbdForm.showError("dataPool",e["\u0275nov"](n.parent,5)));l(n,1,0,"form-group",t),l(n,7,0,"editing"!==u.mode),l(n,9,0,"Dedicated pool that stores the object-data of the RBD."),l(n,12,0,"editing"===u.mode||!u.poolPermission.read),l(n,14,0,"editing"!==u.mode&&u.poolPermission.read),l(n,16,0,u.rbdForm.showError("dataPool",e["\u0275nov"](n.parent,5),"required"))},null)}function iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ru(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["You have to increase the size."]))],null,null)}function du(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-helper",[],null,null,null,_n.b,_n.a)),e["\u0275did"](1,49152,null,0,En.a,[],{html:[0,"html"]},null)],function(l,n){l(n,1,0,e["\u0275inlineInterpolate"](1,"",n.parent.context.$implicit.helperHtml,""))},null)}function su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,2).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,2).onTouched()&&t),t},null,null)),e["\u0275did"](2,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](4,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](6,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](7,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](8,null,["",""])),(l()(),e["\u0275and"](16777216,null,null,1,null,du)),e["\u0275did"](10,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,10,0,n.context.$implicit.helperHtml)},function(l,n){l(n,1,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,""),e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,""),e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending),l(n,7,0,e["\u0275inlineInterpolate"](1,"",n.context.$implicit.key,"")),l(n,8,0,n.context.$implicit.desc)})}function cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"a",[["class","pull-right margin-right-md"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=0!=(l.component.advancedEnabled=!0)&&e),e},null,null)),(l()(),e["\u0275ted"](-1,null,["Advanced..."]))],null,null)}function pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function gu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](1,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{value:[0,"value"]},null),e["\u0275did"](2,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function mu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required because stripe count is defined!"]))],null,null)}function vu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe unit is greater than object size."]))],null,null)}function hu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function bu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required because stripe unit is defined!"]))],null,null)}function Cu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe count must be greater than 0."]))],null,null)}function Ru(l){return e["\u0275vid"](0,[e["\u0275pid"](0,_.TitleCasePipe,[]),e["\u0275pid"](0,K.a,[]),(l()(),e["\u0275eld"](2,0,null,null,171,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,170,"form",[["class","form-horizontal"],["name","rbdForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,5).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,5).onReset()&&t),t},null,null)),e["\u0275did"](4,16384,null,0,H.D,[],null,null),e["\u0275did"](5,540672,[["formDir",4]],0,H.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,H.d,null,[H.l]),e["\u0275did"](7,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](8,0,null,null,165,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](9,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](11,null,["","",""])),e["\u0275ppd"](12,1),e["\u0275ppd"](13,1),(l()(),e["\u0275eld"](14,0,null,null,150,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Mn)),e["\u0275did"](16,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](17,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](18,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](19,{"has-error":0}),(l()(),e["\u0275eld"](20,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](21,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](23,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](24,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](26,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](28,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](30,16384,null,0,H.r,[[4,H.q]],null,null),e["\u0275did"](31,4210688,null,0,Vn.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,zn)),e["\u0275did"](33,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ln)),e["\u0275did"](35,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](36,0,null,null,13,"div",[["class","form-group"]],null,[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onPoolChange(u.target.value)&&e),e},null,null)),e["\u0275did"](37,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](38,{"has-error":0}),(l()(),e["\u0275eld"](39,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","pool"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" Pool "])),(l()(),e["\u0275and"](16777216,null,null,1,null,Bn)),e["\u0275did"](42,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](43,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Gn)),e["\u0275did"](45,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Wn)),e["\u0275did"](47,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qn)),e["\u0275did"](49,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](50,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](53,0,null,null,5,"input",[["formControlName","useDataPool"],["id","useDataPool"],["name","useDataPool"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0,a=l.component;return"change"===n&&(t=!1!==e["\u0275nov"](l,54).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,54).onTouched()&&t),"change"===n&&(t=!1!==a.onUseDataPoolChange()&&t),t},null,null)),e["\u0275did"](54,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](56,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](58,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](59,0,null,null,1,"label",[["for","useDataPool"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Use a dedicated data pool"])),(l()(),e["\u0275and"](16777216,null,null,1,null,ou)),e["\u0275did"](62,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](63,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](64,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](65,{"has-error":0}),(l()(),e["\u0275eld"](66,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),e["\u0275eld"](67,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Size"])),(l()(),e["\u0275eld"](69,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](70,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](71,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","GiB"],["formControlName","size"],["id","size"],["name","size"],["placeholder","e.g., 10GiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,72)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,72).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,72)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,72)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,77).onBlur(u.target.value)&&t),t},null,null)),e["\u0275did"](72,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](74,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](76,16384,null,0,H.r,[[4,H.q]],null,null),e["\u0275did"](77,81920,null,0,Nn.a,[e.ElementRef,H.q,F.a,S.a],{defaultUnit:[0,"defaultUnit"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,iu)),e["\u0275did"](79,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ru)),e["\u0275did"](81,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](82,0,null,null,10,"div",[["class","form-group"],["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]],null,null,null,null)),e["\u0275did"](83,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](84,{"has-error":0}),e["\u0275did"](85,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](87,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](88,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","features"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Features"])),(l()(),e["\u0275eld"](90,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,su)),e["\u0275did"](92,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](93,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](94,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,cu)),e["\u0275did"](96,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](97,0,null,null,67,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),e["\u0275eld"](98,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Advanced"])),(l()(),e["\u0275eld"](100,0,null,null,61,"div",[["class","section"]],null,null,null,null,null)),(l()(),e["\u0275eld"](101,0,null,null,1,"h3",[["class","page-header"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Striping"])),(l()(),e["\u0275eld"](103,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](104,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](105,{"has-error":0}),(l()(),e["\u0275eld"](106,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Object size"])),(l()(),e["\u0275eld"](108,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](109,0,null,null,7,"select",[["class","form-control"],["formControlName","obj_size"],["id","obj_size"],["name","obj_size"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,110).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,110).onTouched()&&t),t},null,null)),e["\u0275did"](110,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](112,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](114,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,pu)),e["\u0275did"](116,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](117,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](118,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](119,{"has-error":0}),(l()(),e["\u0275eld"](120,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","stripingUnit"]],null,null,null,null,null)),(l()(),e["\u0275eld"](121,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe unit"])),(l()(),e["\u0275and"](16777216,null,null,1,null,fu)),e["\u0275did"](124,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](125,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](126,0,null,null,11,"select",[["class","form-control"],["formControlName","stripingUnit"],["id","stripingUnit"],["name","stripingUnit"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,127).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,127).onTouched()&&t),t},null,null)),e["\u0275did"](127,16384,null,0,H.z,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.z]),e["\u0275did"](129,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](131,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](132,0,null,null,3,"option",[],null,null,null,null,null)),e["\u0275did"](133,147456,null,0,H.v,[e.ElementRef,e.Renderer2,[2,H.z]],{ngValue:[0,"ngValue"]},null),e["\u0275did"](134,147456,null,0,H.G,[e.ElementRef,e.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),e["\u0275ted"](-1,null,["-- Select stripe unit --"])),(l()(),e["\u0275and"](16777216,null,null,1,null,gu)),e["\u0275did"](137,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,mu)),e["\u0275did"](139,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,vu)),e["\u0275did"](141,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](142,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](143,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](144,{"has-error":0}),(l()(),e["\u0275eld"](145,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","stripingCount"]],null,null,null,null,null)),(l()(),e["\u0275eld"](146,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Stripe count"])),(l()(),e["\u0275and"](16777216,null,null,1,null,hu)),e["\u0275did"](149,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](150,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](151,0,null,null,6,"input",[["class","form-control"],["formControlName","stripingCount"],["id","stripingCount"],["name","stripingCount"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,152)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,152).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,152)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,152)._compositionEnd(u.target.value)&&t),"change"===n&&(t=!1!==e["\u0275nov"](l,153).onChange(u.target.value)&&t),"input"===n&&(t=!1!==e["\u0275nov"](l,153).onChange(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,153).onTouched()&&t),t},null,null)),e["\u0275did"](152,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275did"](153,16384,null,0,H.C,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l,n){return[l,n]},[H.e,H.C]),e["\u0275did"](155,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](157,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,bu)),e["\u0275did"](159,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Cu)),e["\u0275did"](161,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](162,0,null,null,2,"div",[["class","section"]],null,null,null,null,null)),(l()(),e["\u0275eld"](163,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],function(l,n,u){var e=!0;return"changes"===n&&(e=!1!==(l.component.getDirtyConfigurationValues=u)&&e),e},Dn.b,Dn.a)),e["\u0275did"](164,114688,null,0,Sn.a,[S.a,Fn.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),e["\u0275eld"](165,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](166,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](167,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Pn.b,Pn.a)),e["\u0275did"](168,114688,null,0,qn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](169,0,["","",""])),e["\u0275ppd"](170,1),e["\u0275ppd"](171,1),(l()(),e["\u0275eld"](172,0,null,null,1,"cd-back-button",[],null,null,null,On.b,On.a)),e["\u0275did"](173,49152,null,0,jn.a,[_.Location,Ll.b],null,null)],function(l,n){var u=n.component;l(n,5,0,u.rbdForm),l(n,16,0,u.rbdForm.getValue("parent"));var t=l(n,19,0,u.rbdForm.showError("name",e["\u0275nov"](n,5)));l(n,18,0,"form-group",t),l(n,28,0,"name"),l(n,33,0,u.rbdForm.showError("name",e["\u0275nov"](n,5),"required")),l(n,35,0,u.rbdForm.showError("name",e["\u0275nov"](n,5),"pattern"));var a=l(n,38,0,u.rbdForm.showError("pool",e["\u0275nov"](n,5)));l(n,37,0,"form-group",a),l(n,42,0,"editing"!==u.mode),l(n,45,0,"editing"===u.mode||!u.poolPermission.read),l(n,47,0,"editing"!==u.mode&&u.poolPermission.read),l(n,49,0,u.rbdForm.showError("pool",e["\u0275nov"](n,5),"required")),l(n,56,0,"useDataPool"),l(n,62,0,u.rbdForm.getValue("useDataPool"));var o=l(n,65,0,u.rbdForm.showError("size",e["\u0275nov"](n,5)));l(n,64,0,"form-group",o),l(n,74,0,"size"),l(n,77,0,"GiB"),l(n,79,0,u.rbdForm.showError("size",e["\u0275nov"](n,5),"required")),l(n,81,0,u.rbdForm.showError("size",e["\u0275nov"](n,5),"invalidSizeObject"));var i=l(n,84,0,(e["\u0275nov"](n,5).submitted||u.rbdForm.get("features").dirty)&&u.rbdForm.get("features").invalid);l(n,83,0,"form-group",i),l(n,85,0,"features"),l(n,92,0,u.featuresList),l(n,96,0,!u.advancedEnabled);var r=l(n,105,0,u.rbdForm.showError("obj_size",e["\u0275nov"](n,5)));l(n,104,0,"form-group",r),l(n,112,0,"obj_size"),l(n,116,0,u.objectSizes);var d=l(n,119,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5)));l(n,118,0,"form-group",d),l(n,124,0,u.rbdForm.getValue("stripingCount")),l(n,129,0,"stripingUnit"),l(n,133,0,null),l(n,134,0,null),l(n,137,0,u.objectSizes),l(n,139,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5),"required")),l(n,141,0,u.rbdForm.showError("stripingUnit",e["\u0275nov"](n,5),"invalidStripingUnit"));var s=l(n,144,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5)));l(n,143,0,"form-group",s),l(n,149,0,u.rbdForm.getValue("stripingUnit")),l(n,155,0,"stripingCount"),l(n,159,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5),"required")),l(n,161,0,u.rbdForm.showError("stripingCount",e["\u0275nov"](n,5),"min")),l(n,164,0,u.rbdForm,u.initializeConfigData),l(n,168,0,e["\u0275nov"](n,5),"button")},function(l,n){var u=n.component;l(n,3,0,e["\u0275nov"](n,7).ngClassUntouched,e["\u0275nov"](n,7).ngClassTouched,e["\u0275nov"](n,7).ngClassPristine,e["\u0275nov"](n,7).ngClassDirty,e["\u0275nov"](n,7).ngClassValid,e["\u0275nov"](n,7).ngClassInvalid,e["\u0275nov"](n,7).ngClassPending);var t=e["\u0275unv"](n,11,0,l(n,12,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,11,1,l(n,13,0,e["\u0275nov"](n,1),u.resource));l(n,11,0,t,a),l(n,25,0,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,53,0,e["\u0275nov"](n,58).ngClassUntouched,e["\u0275nov"](n,58).ngClassTouched,e["\u0275nov"](n,58).ngClassPristine,e["\u0275nov"](n,58).ngClassDirty,e["\u0275nov"](n,58).ngClassValid,e["\u0275nov"](n,58).ngClassInvalid,e["\u0275nov"](n,58).ngClassPending),l(n,71,0,e["\u0275nov"](n,76).ngClassUntouched,e["\u0275nov"](n,76).ngClassTouched,e["\u0275nov"](n,76).ngClassPristine,e["\u0275nov"](n,76).ngClassDirty,e["\u0275nov"](n,76).ngClassValid,e["\u0275nov"](n,76).ngClassInvalid,e["\u0275nov"](n,76).ngClassPending),l(n,82,0,e["\u0275nov"](n,87).ngClassUntouched,e["\u0275nov"](n,87).ngClassTouched,e["\u0275nov"](n,87).ngClassPristine,e["\u0275nov"](n,87).ngClassDirty,e["\u0275nov"](n,87).ngClassValid,e["\u0275nov"](n,87).ngClassInvalid,e["\u0275nov"](n,87).ngClassPending),l(n,97,0,!u.advancedEnabled),l(n,109,0,e["\u0275nov"](n,114).ngClassUntouched,e["\u0275nov"](n,114).ngClassTouched,e["\u0275nov"](n,114).ngClassPristine,e["\u0275nov"](n,114).ngClassDirty,e["\u0275nov"](n,114).ngClassValid,e["\u0275nov"](n,114).ngClassInvalid,e["\u0275nov"](n,114).ngClassPending),l(n,126,0,e["\u0275nov"](n,131).ngClassUntouched,e["\u0275nov"](n,131).ngClassTouched,e["\u0275nov"](n,131).ngClassPristine,e["\u0275nov"](n,131).ngClassDirty,e["\u0275nov"](n,131).ngClassValid,e["\u0275nov"](n,131).ngClassInvalid,e["\u0275nov"](n,131).ngClassPending),l(n,151,0,e["\u0275nov"](n,157).ngClassUntouched,e["\u0275nov"](n,157).ngClassTouched,e["\u0275nov"](n,157).ngClassPristine,e["\u0275nov"](n,157).ngClassDirty,e["\u0275nov"](n,157).ngClassValid,e["\u0275nov"](n,157).ngClassInvalid,e["\u0275nov"](n,157).ngClassPending);var o=e["\u0275unv"](n,169,0,l(n,170,0,e["\u0275nov"](n,0),u.action)),i=e["\u0275unv"](n,169,1,l(n,171,0,e["\u0275nov"](n,1),u.resource));l(n,169,0,o,i)})}function Iu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-rbd-form",[],null,null,null,Ru,An)),e["\u0275did"](1,114688,null,0,Un.a,[al.a,il.a,$n.a,Al.a,S.a,Jl.a,F.a,V.a,Ll.b,il.l],null,null)],function(l,n){l(n,1,0)},null)}var wu=e["\u0275ccf"]("cd-rbd-form",Un.a,Iu,{},{},[]),Tu=u("JxMD"),yu=u("dgut"),ku=function(){function l(l){this.router=l}return l.prototype.ngOnInit=function(){this.url=this.router.url},l.prototype.navigateTo=function(l){this.router.navigate([l])},l}(),xu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function _u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,El.b,El.a)),e["\u0275did"](1,180224,null,0,cl.d,[cl.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,1,"tab",[["heading","Overview"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/overview")&&e),e},null,null)),e["\u0275did"](3,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(l()(),e["\u0275eld"](4,0,null,0,1,"tab",[["heading","Targets"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/block/iscsi/targets")&&e),e},null,null)),e["\u0275did"](5,212992,null,0,cl.b,[cl.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(l,n){var u=n.component;l(n,3,0,"Overview","/block/iscsi/overview"===u.url),l(n,5,0,"Targets","/block/iscsi/targets"===u.url)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,4,0,e["\u0275nov"](n,5).id,e["\u0275nov"](n,5).active,e["\u0275nov"](n,5).addClass)})}var Eu=u("roDX"),Vu=u("my5R"),Nu=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Du(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"span",[["class","label"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"label-success":0,"label-danger":1}),(l()(),e["\u0275ted"](3,null,["",""]))],function(l,n){var u=l(n,2,0,"up"==n.context.value,"down"==n.context.value);l(n,1,0,"label",u)},function(l,n){l(n,3,0,n.context.value)})}function Su(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-sparkline",[],null,null,null,Tu.b,Tu.a)),e["\u0275did"](2,638976,null,0,yu.a,[F.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],function(l,n){l(n,2,0,n.parent.context.value,n.parent.context.row.cdIsBinary)},null)}function Fu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function Pu(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Su)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fu)),e["\u0275did"](3,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function qu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," /s "]))],null,function(l,n){l(n,1,0,n.parent.context.value)})}function Ou(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function ju(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,qu)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ou)),e["\u0275did"](3,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function Uu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" "," "])),e["\u0275ppd"](2,1)],null,function(l,n){var u=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent,0),n.parent.context.value));l(n,1,0,u)})}function $u(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,[" n/a "]))],null,null)}function Au(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Uu)),e["\u0275did"](1,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,$u)),e["\u0275did"](3,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,"user:rbd"===n.context.row.backstore),l(n,3,0,"user:rbd"!==n.context.row.backstore)},null)}function Mu(l){return e["\u0275vid"](0,[e["\u0275pid"](0,O.a,[]),e["\u0275qud"](402653184,1,{statusColorTpl:0}),e["\u0275qud"](402653184,2,{iscsiSparklineTpl:0}),e["\u0275qud"](402653184,3,{iscsiPerSecondTpl:0}),e["\u0275qud"](402653184,4,{iscsiRelativeDateTpl:0}),(l()(),e["\u0275eld"](5,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,_u,xu)),e["\u0275did"](6,114688,null,0,ku,[il.l],null,null),(l()(),e["\u0275eld"](7,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Gateways"])),(l()(),e["\u0275eld"](9,0,null,null,1,"cd-table",[],null,[[null,"fetchData"]],function(l,n,u){var e=!0;return"fetchData"===n&&(e=!1!==l.component.refresh()&&e),e},Dl.b,Dl.a)),e["\u0275did"](10,2867200,null,0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"}),(l()(),e["\u0275eld"](11,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](13,0,null,null,1,"cd-table",[],null,null,null,Dl.b,Dl.a)),e["\u0275did"](14,2867200,null,0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(l()(),e["\u0275and"](0,[[1,2],["statusColorTpl",2]],null,0,null,Du)),(l()(),e["\u0275and"](0,[[2,2],["iscsiSparklineTpl",2]],null,0,null,Pu)),(l()(),e["\u0275and"](0,[[3,2],["iscsiPerSecondTpl",2]],null,0,null,ju)),(l()(),e["\u0275and"](0,[[4,2],["iscsiRelativeDateTpl",2]],null,0,null,Au))],function(l,n){var u=n.component;l(n,6,0),l(n,10,0,u.gateways,u.gatewaysColumns),l(n,14,0,u.images,u.imagesColumns)},null)}function zu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi",[],null,null,null,Mu,Nu)),e["\u0275did"](1,114688,null,0,Eu.a,[Vu.a,q.a,j.a,V.a],null,null)],function(l,n){l(n,1,0)},null)}var Lu=e["\u0275ccf"]("cd-iscsi",Eu.a,zu,{},{},[]),Bu=u("TZo1"),Gu=u("9Kw/"),Ku=u("3ris"),Hu=u("e/kN"),Ju=e["\u0275crt"]({encapsulation:0,styles:[["tabset.tabset>ul{border-bottom:0;float:left;display:block;margin-right:20px;border-right:1px solid #ddd;padding-right:15px}"]],data:{}});function Zu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Available information:"])),(l()(),e["\u0275eld"](4,0,null,null,1,"pre",[],null,null,null,null,null)),(l()(),e["\u0275ted"](5,null,["",""]))],null,function(l,n){l(n,5,0,n.component.status)})}function Wu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"cd-info-panel",[["title","iSCSI Targets not available"]],null,null,null,Bu.b,Bu.a)),e["\u0275did"](1,49152,null,0,Gu.a,[V.a],{title:[0,"title"]},null),(l()(),e["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Please consult the "])),(l()(),e["\u0275eld"](4,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["documentation"])),(l()(),e["\u0275ted"](-1,null,[" on how to configure and enable the iSCSI Targets management functionality."])),(l()(),e["\u0275and"](16777216,null,0,1,null,Zu)),e["\u0275did"](8,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,"iSCSI Targets not available"),l(n,8,0,u.status)},function(l,n){l(n,4,0,e["\u0275inlineInterpolate"](1,"",n.component.docsUrl,""))})}function Qu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-details",[["cdTableDetail",""]],null,null,null,T.c,T.b)),e["\u0275did"](1,638976,null,0,Ku.a,[V.a,j.a,E.a],{selection:[0,"selection"],settings:[1,"settings"],cephIscsiConfigVersion:[2,"cephIscsiConfigVersion"]},null)],function(l,n){var u=n.component;l(n,1,0,u.selection,u.settings,u.cephIscsiConfigVersion)},null)}function Yu(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,10,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","target_iqn"],["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,u){var e=!0;return"updateSelection"===n&&(e=!1!==l.component.updateSelection(u)&&e),e},Dl.b,Dl.a)),e["\u0275did"](1,2867200,[[1,4],["table",4]],0,Sl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](2,0,null,0,6,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Fl.b,Fl.a)),e["\u0275did"](4,114688,null,0,Pl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](5,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.configureDiscoveryAuth()&&e),e},null,null)),(l()(),e["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-fw fa-key-modern"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Discovery authentication"])),(l()(),e["\u0275and"](16777216,null,2,1,null,Qu)),e["\u0275did"](10,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,u.targets,u.columns,"flex","target_iqn","true","single"),l(n,4,0,u.permissions.iscsi,u.selection,u.tableActions),l(n,10,0,u.selection.hasSingleSelection)},null)}function Xu(l){return e["\u0275vid"](0,[e["\u0275qud"](671088640,1,{table:0}),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-iscsi-tabs",[],null,null,null,_u,xu)),e["\u0275did"](2,114688,null,0,ku,[il.l],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Wu)),e["\u0275did"](4,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Yu)),e["\u0275did"](6,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,2,0),l(n,4,0,!1===u.available),l(n,6,0,!0===u.available)},null)}function le(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-iscsi-target-list",[],null,null,null,Xu,Ju)),e["\u0275prd"](131584,null,Ol.a,Ol.a,[jl.a,xl.a]),e["\u0275did"](2,245760,null,0,Hu.a,[al.a,V.a,Vu.a,Ol.a,D.a,xl.a,X.b,Jl.a,Ll.b],null,null)],function(l,n){l(n,2,0)},null)}var ne=e["\u0275ccf"]("cd-iscsi-target-list",Hu.a,le,{},{},[]),ue=u("D4zM"),ee=u("OcYo"),te=u("SZbH"),ae=u("WiuZ"),oe=u("wnGv"),ie=u("gr3l"),re=e["\u0275crt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function de(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["IQN has wrong pattern."]))],null,null)}function ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,8,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'"])),(l()(),e["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309"])),(l()(),e["\u0275eld"](6,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,1,"a",[["href","https://en.wikipedia.org/wiki/ISCSI#Addressing"],["target","_blank"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["More information"]))],null,null)}function pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This target has modified advanced settings."]))],null,null)}function fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removePortal(l.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["At least "," gateways are required."]))],null,function(l,n){l(n,1,0,n.component.minimum_gateways)})}function me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"div",[["class","input-group-addon"]],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["lun: ",""]))],null,function(l,n){l(n,1,0,n.component.imagesSettings[n.parent.context.$implicit].lun)})}function ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,["Backstore: ",".\xa0"])),e["\u0275ppd"](2,1)],null,function(l,n){var u=n.component,t=e["\u0275unv"](n,1,0,l(n,2,0,e["\u0275nov"](n.parent.parent.parent,2),u.imagesSettings[n.parent.context.$implicit].backstore));l(n,1,0,t)})}function he(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This image has modified settings."]))],null,null)}function be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,14,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,8,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,me)),e["\u0275did"](4,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](5,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.imageSettingsModal(l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](7,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-cogs fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeImage(l.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,ve)),e["\u0275did"](12,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,he)),e["\u0275did"](14,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,4,0,u.api_version>=1),l(n,12,0,u.backstores.length>1),l(n,14,0,u.hasAdvancedSettings(u.imagesSettings[n.context.$implicit][u.imagesSettings[n.context.$implicit].backstore]))},function(l,n){l(n,2,0,n.context.$implicit)})}function Ce(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Duplicated LUN numbers."]))],null,null)}function Re(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Duplicated WWN."]))],null,null)}function Ie(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function we(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function Te(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function xe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function _e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ee(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function Ve(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,83,"div",[["formGroupName","auth"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](1,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](3,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](4,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](5,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](6,{"has-error":0}),(l()(),e["\u0275eld"](7,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","target_user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](8,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User"])),(l()(),e["\u0275eld"](10,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["id","target_user"],["name","target_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,12)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,12).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,12)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,12)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](12,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](14,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](16,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ie)),e["\u0275did"](18,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,we)),e["\u0275did"](20,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](21,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](22,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](23,{"has-error":0}),(l()(),e["\u0275eld"](24,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","target_password"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password"])),(l()(),e["\u0275eld"](27,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](28,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](29,0,null,null,5,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","target_password"],["name","target_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,30)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,30).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,30)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,30)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](30,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](32,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](34,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](35,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](36,0,null,null,1,"button",[["cdPasswordButton","target_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,37).onClick()&&t),t},null,null)),e["\u0275did"](37,81920,null,0,ue.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](38,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,39).onClick()&&t),t},null,null)),e["\u0275did"](39,81920,null,0,ee.a,[e.ElementRef,e.Renderer2,te.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Te)),e["\u0275did"](41,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ye)),e["\u0275did"](43,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](44,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](45,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](46,{"has-error":0}),(l()(),e["\u0275eld"](47,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","target_mutual_user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](48,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual User"])),(l()(),e["\u0275eld"](50,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_user"],["id","target_mutual_user"],["name","target_mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,52)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,52).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,52)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,52)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](52,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](54,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](56,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,ke)),e["\u0275did"](58,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,xe)),e["\u0275did"](60,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](61,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](62,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](63,{"has-error":0}),(l()(),e["\u0275eld"](64,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","target_mutual_password"]],null,null,null,null,null)),(l()(),e["\u0275eld"](65,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual Password"])),(l()(),e["\u0275eld"](67,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](68,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](69,0,null,null,5,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","mutual_password"],["id","target_mutual_password"],["name","target_mutual_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,70)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,70).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,70)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,70)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](70,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](72,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](74,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](75,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](76,0,null,null,1,"button",[["cdPasswordButton","target_mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,77).onClick()&&t),t},null,null)),e["\u0275did"](77,81920,null,0,ue.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](78,0,null,null,1,"button",[["cdCopy2ClipboardButton","target_mutual_password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,79).onClick()&&t),t},null,null)),e["\u0275did"](79,81920,null,0,ee.a,[e.ElementRef,e.Renderer2,te.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,_e)),e["\u0275did"](81,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ee)),e["\u0275did"](83,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,"auth");var t=l(n,6,0,u.targetForm.showError("user",e["\u0275nov"](n.parent,2)));l(n,5,0,"form-group",t),l(n,14,0,"user"),l(n,18,0,u.targetForm.showError("user",e["\u0275nov"](n.parent,2),"required")),l(n,20,0,u.targetForm.showError("user",e["\u0275nov"](n.parent,2),"pattern"));var a=l(n,23,0,u.targetForm.showError("password",e["\u0275nov"](n.parent,2)));l(n,22,0,"form-group",a),l(n,32,0,"password"),l(n,37,0,"target_password"),l(n,39,0,"target_password"),l(n,41,0,u.targetForm.showError("password",e["\u0275nov"](n.parent,2),"required")),l(n,43,0,u.targetForm.showError("password",e["\u0275nov"](n.parent,2),"pattern"));var o=l(n,46,0,u.targetForm.showError("mutual_user",e["\u0275nov"](n.parent,2)));l(n,45,0,"form-group",o),l(n,54,0,"mutual_user"),l(n,58,0,u.targetForm.showError("mutual_user",e["\u0275nov"](n.parent,2),"required")),l(n,60,0,u.targetForm.showError("mutual_user",e["\u0275nov"](n.parent,2),"pattern"));var i=l(n,63,0,u.targetForm.showError("mutual_password",e["\u0275nov"](n.parent,2)));l(n,62,0,"form-group",i),l(n,72,0,"mutual_password"),l(n,77,0,"target_mutual_password"),l(n,79,0,"target_mutual_password"),l(n,81,0,u.targetForm.showError("mutual_password",e["\u0275nov"](n.parent,2),"required")),l(n,83,0,u.targetForm.showError("mutual_password",e["\u0275nov"](n.parent,2),"pattern"))},function(l,n){l(n,0,0,e["\u0275nov"](n,3).ngClassUntouched,e["\u0275nov"](n,3).ngClassTouched,e["\u0275nov"](n,3).ngClassPristine,e["\u0275nov"](n,3).ngClassDirty,e["\u0275nov"](n,3).ngClassValid,e["\u0275nov"](n,3).ngClassInvalid,e["\u0275nov"](n,3).ngClassPending),l(n,11,0,e["\u0275nov"](n,16).ngClassUntouched,e["\u0275nov"](n,16).ngClassTouched,e["\u0275nov"](n,16).ngClassPristine,e["\u0275nov"](n,16).ngClassDirty,e["\u0275nov"](n,16).ngClassValid,e["\u0275nov"](n,16).ngClassInvalid,e["\u0275nov"](n,16).ngClassPending),l(n,29,0,e["\u0275nov"](n,34).ngClassUntouched,e["\u0275nov"](n,34).ngClassTouched,e["\u0275nov"](n,34).ngClassPristine,e["\u0275nov"](n,34).ngClassDirty,e["\u0275nov"](n,34).ngClassValid,e["\u0275nov"](n,34).ngClassInvalid,e["\u0275nov"](n,34).ngClassPending),l(n,51,0,e["\u0275nov"](n,56).ngClassUntouched,e["\u0275nov"](n,56).ngClassTouched,e["\u0275nov"](n,56).ngClassPristine,e["\u0275nov"](n,56).ngClassDirty,e["\u0275nov"](n,56).ngClassValid,e["\u0275nov"](n,56).ngClassInvalid,e["\u0275nov"](n,56).ngClassPending),l(n,69,0,e["\u0275nov"](n,74).ngClassUntouched,e["\u0275nov"](n,74).ngClassTouched,e["\u0275nov"](n,74).ngClassPristine,e["\u0275nov"](n,74).ngClassDirty,e["\u0275nov"](n,74).ngClassValid,e["\u0275nov"](n,74).ngClassInvalid,e["\u0275nov"](n,74).ngClassPending)})}function Ne(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator IQN needs to be unique."]))],null,null)}function De(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Se(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["IQN has wrong pattern."]))],null,null)}function Fe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Pe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Oe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ue(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Usernames must have a length of 8 to 64 characters and can only contain letters, '.', '@', '-', '_' or ':'."]))],null,null)}function $e(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ae(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Passwords must have a length of 12 to 16 characters and can only contain letters, '@', '-', '_' or '/'."]))],null,null)}function Me(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiatorImage(l.parent.context.$implicit,l.context.index,l.parent.context.index,l.context.$implicit)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator belongs to a group. Images will be configure in the group."]))],null,null)}function Le(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,null,null,ae.b,ae.a)),e["\u0275did"](3,638976,null,0,oe.a,[V.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["\u0275eld"](4,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"]))],function(l,n){var u=n.component,e=n.parent.context.$implicit.getValue("luns");l(n,3,0,"btn btn-default pull-right",e,u.imagesInitiatorSelections[n.parent.context.index],u.messages.initiatorImage)},null)}function Be(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,123,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](1,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](3,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](4,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiator"])),(l()(),e["\u0275ted"](7,null,[": "," "])),(l()(),e["\u0275eld"](8,0,null,null,1,"button",[["class","close"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeInitiator(l.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,113,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](12,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](13,{"has-error":0}),(l()(),e["\u0275eld"](14,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","client_iqn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Client IQN"])),(l()(),e["\u0275eld"](17,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,5,"input",[["class","form-control"],["formControlName","client_iqn"],["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,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0,a=l.component;return"input"===n&&(t=!1!==e["\u0275nov"](l,20)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,20).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,20)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,20)._compositionEnd(u.target.value)&&t),"blur"===n&&(t=!1!==a.updatedInitiatorSelector()&&t),t},null,null)),e["\u0275did"](20,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](22,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](24,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ne)),e["\u0275did"](26,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,De)),e["\u0275did"](28,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Se)),e["\u0275did"](30,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](31,0,null,null,80,null,null,null,null,null,null,null)),e["\u0275did"](32,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](34,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](35,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](36,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](37,{"has-error":0}),(l()(),e["\u0275eld"](38,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","user"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["User"])),(l()(),e["\u0275eld"](40,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,5,"input",[["class","form-control"],["formControlName","user"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,42)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,42).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,42)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,42)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](42,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](44,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](46,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Fe)),e["\u0275did"](48,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Pe)),e["\u0275did"](50,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](51,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](52,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](53,{"has-error":0}),(l()(),e["\u0275eld"](54,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","password"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password"])),(l()(),e["\u0275eld"](56,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](57,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,5,"input",[["class","form-control"],["formControlName","password"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,59)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,59).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,59)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,59)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](59,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](61,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](63,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](64,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](65,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,66).onClick()&&t),t},null,null)),e["\u0275did"](66,81920,null,0,ue.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](67,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,68).onClick()&&t),t},null,null)),e["\u0275did"](68,81920,null,0,ee.a,[e.ElementRef,e.Renderer2,te.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,qe)),e["\u0275did"](70,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Oe)),e["\u0275did"](72,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](73,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](74,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](75,{"has-error":0}),(l()(),e["\u0275eld"](76,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","mutual_user"]],null,null,null,null,null)),(l()(),e["\u0275eld"](77,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual User"])),(l()(),e["\u0275eld"](79,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](80,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_user"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,81)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,81).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,81)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,81)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](81,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](83,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](85,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,je)),e["\u0275did"](87,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ue)),e["\u0275did"](89,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](90,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](91,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](92,{"has-error":0}),(l()(),e["\u0275eld"](93,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","mutual_password"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Mutual Password"])),(l()(),e["\u0275eld"](95,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](96,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](97,0,null,null,5,"input",[["class","form-control"],["formControlName","mutual_password"],["type","password"]],[[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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,98)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,98).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,98)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,98)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](98,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](100,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](102,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](103,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](104,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,105).onClick()&&t),t},null,null)),e["\u0275did"](105,81920,null,0,ue.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275eld"](106,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var t=!0;return"click"===n&&(t=!1!==e["\u0275nov"](l,107).onClick()&&t),t},null,null)),e["\u0275did"](107,81920,null,0,ee.a,[e.ElementRef,e.Renderer2,te.j],{cdCopy2ClipboardButton:[0,"cdCopy2ClipboardButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,$e)),e["\u0275did"](109,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ae)),e["\u0275did"](111,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](112,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](113,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](114,{"has-error":0}),(l()(),e["\u0275eld"](115,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","luns"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](117,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Me)),e["\u0275did"](119,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ze)),e["\u0275did"](121,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Le)),e["\u0275did"](123,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,1,0,n.context.index);var u=l(n,13,0,n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2)));l(n,12,0,"form-group",u),l(n,22,0,"client_iqn");var t=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"notUnique");l(n,26,0,t);var a=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"required");l(n,28,0,a);var o=n.context.$implicit.showError("client_iqn",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,30,0,o),l(n,32,0,"auth");var i=l(n,37,0,n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2)));l(n,36,0,"form-group",i),l(n,44,0,"user");var r=n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2),"required");l(n,48,0,r);var d=n.context.$implicit.showError("user",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,50,0,d);var s=l(n,53,0,n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2)));l(n,52,0,"form-group",s),l(n,61,0,"password"),l(n,66,0,"password"+n.context.index),l(n,68,0,"password"+n.context.index);var c=n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2),"required");l(n,70,0,c);var p=n.context.$implicit.showError("password",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,72,0,p);var f=l(n,75,0,n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2)));l(n,74,0,"form-group",f),l(n,83,0,"mutual_user");var g=n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2),"required");l(n,87,0,g);var m=n.context.$implicit.showError("mutual_user",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,89,0,m);var v=l(n,92,0,n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2)));l(n,91,0,"form-group",v),l(n,100,0,"mutual_password"),l(n,105,0,"mutual_password"+n.context.index),l(n,107,0,"mutual_password"+n.context.index);var h=n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2),"required");l(n,109,0,h);var b=n.context.$implicit.showError("mutual_password",e["\u0275nov"](n.parent.parent,2),"pattern");l(n,111,0,b);var C=l(n,114,0,n.context.$implicit.showError("luns",e["\u0275nov"](n.parent.parent,2)));l(n,113,0,"form-group",C);var R=n.context.$implicit.getValue("luns");l(n,119,0,R);var I=n.context.$implicit.getValue("cdIsInGroup");l(n,121,0,I);var w=!n.context.$implicit.getValue("cdIsInGroup");l(n,123,0,w)},function(l,n){l(n,0,0,e["\u0275nov"](n,3).ngClassUntouched,e["\u0275nov"](n,3).ngClassTouched,e["\u0275nov"](n,3).ngClassPristine,e["\u0275nov"](n,3).ngClassDirty,e["\u0275nov"](n,3).ngClassValid,e["\u0275nov"](n,3).ngClassInvalid,e["\u0275nov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("client_iqn");l(n,7,0,u),l(n,19,0,e["\u0275nov"](n,24).ngClassUntouched,e["\u0275nov"](n,24).ngClassTouched,e["\u0275nov"](n,24).ngClassPristine,e["\u0275nov"](n,24).ngClassDirty,e["\u0275nov"](n,24).ngClassValid,e["\u0275nov"](n,24).ngClassInvalid,e["\u0275nov"](n,24).ngClassPending),l(n,41,0,"user"+n.context.index,e["\u0275nov"](n,46).ngClassUntouched,e["\u0275nov"](n,46).ngClassTouched,e["\u0275nov"](n,46).ngClassPristine,e["\u0275nov"](n,46).ngClassDirty,e["\u0275nov"](n,46).ngClassValid,e["\u0275nov"](n,46).ngClassInvalid,e["\u0275nov"](n,46).ngClassPending),l(n,58,0,"password"+n.context.index,e["\u0275nov"](n,63).ngClassUntouched,e["\u0275nov"](n,63).ngClassTouched,e["\u0275nov"](n,63).ngClassPristine,e["\u0275nov"](n,63).ngClassDirty,e["\u0275nov"](n,63).ngClassValid,e["\u0275nov"](n,63).ngClassInvalid,e["\u0275nov"](n,63).ngClassPending),l(n,80,0,"mutual_user"+n.context.index,e["\u0275nov"](n,85).ngClassUntouched,e["\u0275nov"](n,85).ngClassTouched,e["\u0275nov"](n,85).ngClassPristine,e["\u0275nov"](n,85).ngClassDirty,e["\u0275nov"](n,85).ngClassValid,e["\u0275nov"](n,85).ngClassInvalid,e["\u0275nov"](n,85).ngClassPending),l(n,97,0,"mutual_password"+n.context.index,e["\u0275nov"](n,102).ngClassUntouched,e["\u0275nov"](n,102).ngClassTouched,e["\u0275nov"](n,102).ngClassPristine,e["\u0275nov"](n,102).ngClassDirty,e["\u0275nov"](n,102).ngClassValid,e["\u0275nov"](n,102).ngClassInvalid,e["\u0275nov"](n,102).ngClassPending)})}function Ge(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["No items added."]))],null,null)}function Ke(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","initiators"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiators"])),(l()(),e["\u0275eld"](3,0,null,null,14,"div",[["class","col-sm-9"],["formArrayName","initiators"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](4,212992,null,0,H.g,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.g]),e["\u0275did"](6,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Be)),e["\u0275did"](8,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](9,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Ge)),e["\u0275did"](12,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](13,0,null,null,3,"button",[["class","btn btn-default pull-right"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(l.component.addInitiator(),e=!1),e},null,null)),(l()(),e["\u0275eld"](14,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add initiator"])),(l()(),e["\u0275eld"](17,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){var u=n.component;l(n,4,0,"initiators"),l(n,8,0,u.initiators.controls),l(n,12,0,0===u.initiators.controls.length)},function(l,n){l(n,3,0,e["\u0275nov"](n,6).ngClassUntouched,e["\u0275nov"](n,6).ngClassTouched,e["\u0275nov"](n,6).ngClassPristine,e["\u0275nov"](n,6).ngClassDirty,e["\u0275nov"](n,6).ngClassValid,e["\u0275nov"](n,6).ngClassInvalid,e["\u0275nov"](n,6).ngClassPending)})}function He(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupInitiator(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function Je(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(l()(),e["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.removeGroupDisk(l.parent.context.$implicit,l.context.index,l.parent.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(l,n){l(n,2,0,n.context.$implicit)})}function Ze(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,56,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](1,212992,null,0,H.m,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.m]),e["\u0275did"](3,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](4,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Group"])),(l()(),e["\u0275ted"](7,null,[": "," "])),(l()(),e["\u0275eld"](8,0,null,null,1,"button",[["class","close"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.groups.removeAt(l.context.index)&&e),e},null,null)),(l()(),e["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-remove fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,46,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","group_id"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275eld"](15,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,5,"input",[["class","form-control"],["formControlName","group_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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,18)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,18).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,18)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,18)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](18,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](20,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](22,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](23,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](24,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](25,{"has-error":0}),(l()(),e["\u0275eld"](26,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","members"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Initiators"])),(l()(),e["\u0275eld"](29,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,He)),e["\u0275did"](31,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](32,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](33,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](34,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onGroupMemberSelection(u)&&e),e},ae.b,ae.a)),e["\u0275did"](35,638976,null,0,oe.a,[V.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](36,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](37,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add initiator"])),(l()(),e["\u0275eld"](39,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](40,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](41,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](42,{"has-error":0}),(l()(),e["\u0275eld"](43,0,null,null,2,"label",[["class","control-label col-sm-3"],["for","disks"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](46,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Je)),e["\u0275did"](48,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](49,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](50,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,null,null,ae.b,ae.a)),e["\u0275did"](52,638976,null,0,oe.a,[V.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},null),(l()(),e["\u0275eld"](53,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](54,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"])),(l()(),e["\u0275eld"](56,0,null,null,0,"hr",[],null,null,null,null,null))],function(l,n){var u=n.component;l(n,1,0,n.context.index),l(n,20,0,"group_id");var t=l(n,25,0,n.context.$implicit.showError("members",e["\u0275nov"](n.parent.parent,2)));l(n,24,0,"form-group",t);var a=n.context.$implicit.getValue("members");l(n,31,0,a);var o=n.context.$implicit.getValue("members");l(n,35,0,"btn btn-default pull-right",o,u.groupMembersSelections[n.context.index],u.messages.groupInitiator);var i=l(n,42,0,n.context.$implicit.showError("disks",e["\u0275nov"](n.parent.parent,2)));l(n,41,0,"form-group",i);var r=n.context.$implicit.getValue("disks");l(n,48,0,r);var d=n.context.$implicit.getValue("disks");l(n,52,0,"btn btn-default pull-right",d,u.groupDiskSelections[n.context.index],u.messages.initiatorImage)},function(l,n){l(n,0,0,e["\u0275nov"](n,3).ngClassUntouched,e["\u0275nov"](n,3).ngClassTouched,e["\u0275nov"](n,3).ngClassPristine,e["\u0275nov"](n,3).ngClassDirty,e["\u0275nov"](n,3).ngClassValid,e["\u0275nov"](n,3).ngClassInvalid,e["\u0275nov"](n,3).ngClassPending);var u=n.context.$implicit.getValue("group_id");l(n,7,0,u),l(n,17,0,e["\u0275nov"](n,22).ngClassUntouched,e["\u0275nov"](n,22).ngClassTouched,e["\u0275nov"](n,22).ngClassPristine,e["\u0275nov"](n,22).ngClassDirty,e["\u0275nov"](n,22).ngClassValid,e["\u0275nov"](n,22).ngClassInvalid,e["\u0275nov"](n,22).ngClassPending)})}function We(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["No items added."]))],null,null)}function Qe(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](1,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](2,{"has-error":0}),(l()(),e["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","initiators"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Groups"])),(l()(),e["\u0275eld"](5,0,null,null,13,"div",[["class","col-sm-9"],["formArrayName","groups"]],[[2,"ng-untouched",null],[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)),e["\u0275did"](6,212992,null,0,H.g,[[3,H.d],[8,null],[8,null]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.d,null,[H.g]),e["\u0275did"](8,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ze)),e["\u0275did"](10,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](11,0,null,null,7,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,6,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,We)),e["\u0275did"](14,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](15,0,null,null,3,"button",[["class","btn btn-default pull-right"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(l.component.addGroup(),e=!1),e},null,null)),(l()(),e["\u0275eld"](16,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](17,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add group"]))],function(l,n){var u=n.component,t=l(n,2,0,u.targetForm.showError("groups",e["\u0275nov"](n.parent,2)));l(n,1,0,"form-group",t),l(n,6,0,"groups"),l(n,10,0,u.groups.controls),l(n,14,0,0===u.groups.controls.length)},function(l,n){l(n,5,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending)})}function Ye(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,111,"form",[["class","form-horizontal"],["name","targetForm"],["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(l,n,u){var t=!0;return"submit"===n&&(t=!1!==e["\u0275nov"](l,2).onSubmit(u)&&t),"reset"===n&&(t=!1!==e["\u0275nov"](l,2).onReset()&&t),t},null,null)),e["\u0275did"](1,16384,null,0,H.D,[],null,null),e["\u0275did"](2,540672,[["formDir",4]],0,H.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,H.d,null,[H.l]),e["\u0275did"](4,16384,null,0,H.s,[[4,H.d]],null,null),(l()(),e["\u0275eld"](5,0,null,null,106,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](7,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](8,null,["","",""])),e["\u0275ppd"](9,1),e["\u0275ppd"](10,1),(l()(),e["\u0275eld"](11,0,null,null,91,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,26,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](13,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](14,{"has-error":0}),(l()(),e["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","target_iqn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Target IQN"])),(l()(),e["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](19,0,null,null,19,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](21,0,null,null,5,"input",[["class","form-control"],["formControlName","target_iqn"],["id","target_iqn"],["name","target_iqn"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,22)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,22).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,22)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,22)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](22,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](24,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](26,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](27,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](28,0,null,null,1,"button",[["class","btn btn-default"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,u){var e=!0;return"click"===n&&(e=!1!==l.component.targetSettingsModal()&&e),e},null,null)),(l()(),e["\u0275eld"](29,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-cogs fa-fw"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,de)),e["\u0275did"](31,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,se)),e["\u0275did"](33,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ce)),e["\u0275did"](35,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,pe)),e["\u0275did"](37,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](38,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](39,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](40,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](41,{"has-error":0}),(l()(),e["\u0275eld"](42,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","portals"]],null,null,null,null,null)),(l()(),e["\u0275eld"](43,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Portals"])),(l()(),e["\u0275eld"](45,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),e["\u0275eld"](46,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,fe)),e["\u0275did"](48,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,ge)),e["\u0275did"](50,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](51,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](52,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](53,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onPortalSelection(u)&&e),e},ae.b,ae.a)),e["\u0275did"](54,638976,null,0,oe.a,[V.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](55,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](56,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add portal"])),(l()(),e["\u0275eld"](58,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](59,0,null,null,25,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](60,278528,null,0,_.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](61,{"has-error":0}),(l()(),e["\u0275eld"](62,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","disks"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Images"])),(l()(),e["\u0275eld"](64,0,null,null,20,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,be)),e["\u0275did"](66,278528,null,0,_.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275eld"](67,0,null,null,5,"input",[["class","form-control"],["formControlName","disks"],["id","disks"],["name","disks"],["type","hidden"]],[[2,"ng-untouched",null],[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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var t=!0;return"input"===n&&(t=!1!==e["\u0275nov"](l,68)._handleInput(u.target.value)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,68).onTouched()&&t),"compositionstart"===n&&(t=!1!==e["\u0275nov"](l,68)._compositionStart()&&t),"compositionend"===n&&(t=!1!==e["\u0275nov"](l,68)._compositionEnd(u.target.value)&&t),t},null,null)),e["\u0275did"](68,16384,null,0,H.e,[e.Renderer2,e.ElementRef,[2,H.b]],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.e]),e["\u0275did"](70,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](72,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ce)),e["\u0275did"](74,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Re)),e["\u0275did"](76,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](77,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(l()(),e["\u0275eld"](78,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(l()(),e["\u0275eld"](79,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(l,n,u){var e=!0;return"selection"===n&&(e=!1!==l.component.onImageSelection(u)&&e),e},ae.b,ae.a)),e["\u0275did"](80,638976,null,0,oe.a,[V.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(l()(),e["\u0275eld"](81,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(l()(),e["\u0275eld"](82,0,null,0,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Add image"])),(l()(),e["\u0275eld"](84,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275eld"](85,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](86,0,null,null,10,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](87,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](88,0,null,null,5,"input",[["formControlName","acl_enabled"],["id","acl_enabled"],["name","acl_enabled"],["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]],[[null,"change"],[null,"blur"]],function(l,n,u){var t=!0;return"change"===n&&(t=!1!==e["\u0275nov"](l,89).onChange(u.target.checked)&&t),"blur"===n&&(t=!1!==e["\u0275nov"](l,89).onTouched()&&t),t},null,null)),e["\u0275did"](89,16384,null,0,H.c,[e.Renderer2,e.ElementRef],null,null),e["\u0275prd"](1024,null,H.p,function(l){return[l]},[H.c]),e["\u0275did"](91,671744,null,0,H.j,[[3,H.d],[8,null],[8,null],[6,H.p],[2,H.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,H.q,null,[H.j]),e["\u0275did"](93,16384,null,0,H.r,[[4,H.q]],null,null),(l()(),e["\u0275eld"](94,0,null,null,1,"label",[["for","acl_enabled"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["ACL authentication"])),(l()(),e["\u0275eld"](96,0,null,null,0,"hr",[],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Ve)),e["\u0275did"](98,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ke)),e["\u0275did"](100,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Qe)),e["\u0275did"](102,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](103,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](104,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](105,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},Pn.b,Pn.a)),e["\u0275did"](106,114688,null,0,qn.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](107,0,["","",""])),e["\u0275ppd"](108,1),e["\u0275ppd"](109,1),(l()(),e["\u0275eld"](110,0,null,null,1,"cd-back-button",[],null,null,null,On.b,On.a)),e["\u0275did"](111,49152,null,0,jn.a,[_.Location,Ll.b],null,null)],function(l,n){var u=n.component;l(n,2,0,u.targetForm);var t=l(n,14,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2)));l(n,13,0,"form-group",t),l(n,24,0,"target_iqn"),l(n,31,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"required")),l(n,33,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"pattern")),l(n,35,0,u.targetForm.showError("target_iqn",e["\u0275nov"](n,2),"iqn")),l(n,37,0,u.hasAdvancedSettings(u.targetForm.getValue("target_controls")));var a=l(n,41,0,u.targetForm.showError("portals",e["\u0275nov"](n,2)));l(n,40,0,"form-group",a),l(n,48,0,u.portals.value),l(n,50,0,u.targetForm.showError("portals",e["\u0275nov"](n,2),"minGateways")),l(n,54,0,"btn btn-default pull-right",u.portals.value,u.portalsSelections,u.messages.portals);var o=l(n,61,0,u.targetForm.showError("disks",e["\u0275nov"](n,2)));l(n,60,0,"form-group",o),l(n,66,0,u.targetForm.getValue("disks")),l(n,70,0,"disks"),l(n,74,0,u.targetForm.showError("disks",e["\u0275nov"](n,2),"dupLunId")),l(n,76,0,u.targetForm.showError("disks",e["\u0275nov"](n,2),"dupWwn")),l(n,80,0,"btn btn-default pull-right",u.disks.value,u.imagesSelections,u.messages.images),l(n,91,0,"acl_enabled"),l(n,98,0,u.cephIscsiConfigVersion>10&&!u.targetForm.getValue("acl_enabled")),l(n,100,0,u.targetForm.getValue("acl_enabled")),l(n,102,0,u.targetForm.getValue("acl_enabled")),l(n,106,0,e["\u0275nov"](n,2),"button")},function(l,n){var u=n.component;l(n,0,0,e["\u0275nov"](n,4).ngClassUntouched,e["\u0275nov"](n,4).ngClassTouched,e["\u0275nov"](n,4).ngClassPristine,e["\u0275nov"](n,4).ngClassDirty,e["\u0275nov"](n,4).ngClassValid,e["\u0275nov"](n,4).ngClassInvalid,e["\u0275nov"](n,4).ngClassPending);var t=e["\u0275unv"](n,8,0,l(n,9,0,e["\u0275nov"](n.parent,0),u.action)),a=e["\u0275unv"](n,8,1,l(n,10,0,e["\u0275nov"](n.parent,1),u.resource));l(n,8,0,t,a),l(n,21,0,e["\u0275nov"](n,26).ngClassUntouched,e["\u0275nov"](n,26).ngClassTouched,e["\u0275nov"](n,26).ngClassPristine,e["\u0275nov"](n,26).ngClassDirty,e["\u0275nov"](n,26).ngClassValid,e["\u0275nov"](n,26).ngClassInvalid,e["\u0275nov"](n,26).ngClassPending),l(n,67,0,e["\u0275nov"](n,72).ngClassUntouched,e["\u0275nov"](n,72).ngClassTouched,e["\u0275nov"](n,72).ngClassPristine,e["\u0275nov"](n,72).ngClassDirty,e["\u0275nov"](n,72).ngClassValid,e["\u0275nov"](n,72).ngClassInvalid,e["\u0275nov"](n,72).ngClassPending),l(n,88,0,e["\u0275nov"](n,93).ngClassUntouched,e["\u0275nov"](n,93).ngClassTouched,e["\u0275nov"](n,93).ngClassPristine,e["\u0275nov"](n,93).ngClassDirty,e["\u0275nov"](n,93).ngClassValid,e["\u0275nov"](n,93).ngClassInvalid,e["\u0275nov"](n,93).ngClassPending);var o=e["\u0275unv"](n,107,0,l(n,108,0,e["\u0275nov"](n.parent,0),u.action)),i=e["\u0275unv"](n,107,1,l(n,109,0,e["\u0275nov"](n.parent,1),u.resource));l(n,107,0,o,i)})}function Xe(l){return e["\u0275vid"](0,[e["\u0275pid"](0,_.TitleCasePipe,[]),e["\u0275pid"](0,K.a,[]),e["\u0275pid"](0,j.a,[]),(l()(),e["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,Ye)),e["\u0275did"](5,16384,null,0,_.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,5,0,n.component.targetForm)},null)}function lt(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-iscsi-target-form",[],null,null,null,Xe,re)),e["\u0275did"](1,114688,null,0,ie.a,[Vu.a,X.b,Al.a,il.l,il.a,V.a,Jl.a,Ll.b],null,null)],function(l,n){l(n,1,0)},null)}var nt=e["\u0275ccf"]("cd-iscsi-target-form",ie.a,lt,{},{},[]),ut=u("Vhfg"),et=u("cxJu");u.d(n,"BlockModuleNgFactory",function(){return tt}),u.d(n,"RoutedBlockModuleNgFactory",function(){return at});var tt=e["\u0275cmf"](t.a,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,o.a,i.a,r.a,r.b,d.a,s.a,c.a,p.a,f.a,g.a,m.a,v.a,h.a,h.b,h.c,b.a,C.a,R.a,I.a,w.a,T.a,y.a,k.a,x.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,_.NgLocalization,_.NgLocaleLocalization,[e.LOCALE_ID,[2,_["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,E.a,E.a,[V.a]),e["\u0275mpd"](4608,_.DatePipe,_.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[S.a]),e["\u0275mpd"](4608,P.a,P.a,[S.a]),e["\u0275mpd"](4608,q.a,q.a,[S.a]),e["\u0275mpd"](4608,O.a,O.a,[]),e["\u0275mpd"](4608,j.a,j.a,[]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,$.a,$.a,[]),e["\u0275mpd"](4608,A.a,A.a,[_.DatePipe]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,z.a,z.a,[]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,B.a,B.a,[]),e["\u0275mpd"](4608,G.a,G.a,[]),e["\u0275mpd"](4608,K.a,K.a,[]),e["\u0275mpd"](4608,H.E,H.E,[]),e["\u0275mpd"](4608,H.h,H.h,[]),e["\u0275mpd"](4608,J.b,J.b,[]),e["\u0275mpd"](4608,Z.a,Z.a,[]),e["\u0275mpd"](4608,W.a,W.a,[]),e["\u0275mpd"](4608,Q.a,Q.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,W.a,e.ApplicationRef]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,X.b,X.b,[e.RendererFactory2,Q.a]),e["\u0275mpd"](4608,ll.ScrollbarHelper,ll.ScrollbarHelper,[nl.DOCUMENT]),e["\u0275mpd"](4608,ul.DimensionsHelper,ul.DimensionsHelper,[]),e["\u0275mpd"](4608,el.ColumnChangesService,el.ColumnChangesService,[]),e["\u0275mpd"](4608,tl.f,tl.f,[]),e["\u0275mpd"](4608,al.a,al.a,[]),e["\u0275mpd"](4608,ol.a,ol.a,[il.l,al.a]),e["\u0275mpd"](4608,rl.NodeDraggableService,rl.NodeDraggableService,[]),e["\u0275mpd"](4608,dl.NodeMenuService,dl.NodeMenuService,[]),e["\u0275mpd"](4608,sl.TreeService,sl.TreeService,[rl.NodeDraggableService]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](4608,pl.c,pl.c,[]),e["\u0275mpd"](4608,fl.w,fl.w,[]),e["\u0275mpd"](4608,fl.y,fl.y,[]),e["\u0275mpd"](4608,fl.a,fl.a,[]),e["\u0275mpd"](4608,fl.e,fl.e,[]),e["\u0275mpd"](4608,fl.c,fl.c,[]),e["\u0275mpd"](4608,fl.f,fl.f,[]),e["\u0275mpd"](4608,fl.x,fl.x,[fl.y,fl.f]),e["\u0275mpd"](1073742336,_.CommonModule,_.CommonModule,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,gl.a,gl.a,[]),e["\u0275mpd"](1073742336,H.B,H.B,[]),e["\u0275mpd"](1073742336,H.n,H.n,[]),e["\u0275mpd"](1073742336,H.x,H.x,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,Z.d,Z.d,[]),e["\u0275mpd"](1073742336,Y.d,Y.d,[]),e["\u0275mpd"](1073742336,ml.ChartsModule,ml.ChartsModule,[]),e["\u0275mpd"](1073742336,X.e,X.e,[]),e["\u0275mpd"](1073742336,vl.a,vl.a,[]),e["\u0275mpd"](1073742336,tl.e,tl.e,[]),e["\u0275mpd"](1073742336,hl.a,hl.a,[]),e["\u0275mpd"](1073742336,bl.NgxDatatableModule,bl.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,il.p,il.p,[[2,il.v],[2,il.l]]),e["\u0275mpd"](1073742336,Cl.a,Cl.a,[]),e["\u0275mpd"](1073742336,Rl.a,Rl.a,[]),e["\u0275mpd"](1073742336,Il.a,Il.a,[]),e["\u0275mpd"](1073742336,pl.d,pl.d,[]),e["\u0275mpd"](1073742336,wl.TreeModule,wl.TreeModule,[]),e["\u0275mpd"](1073742336,Tl.a,Tl.a,[]),e["\u0275mpd"](1073742336,fl.d,fl.d,[]),e["\u0275mpd"](1073742336,t.a,t.a,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,tl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}),at=e["\u0275cmf"](t.b,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,o.a,i.a,r.a,r.b,d.a,s.a,c.a,p.a,f.a,g.a,m.a,v.a,h.a,h.b,h.c,b.a,C.a,R.a,I.a,w.a,T.a,y.a,k.a,x.a,xn,wu,Lu,ne,nt]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,_.NgLocalization,_.NgLocaleLocalization,[e.LOCALE_ID,[2,_["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,E.a,E.a,[V.a]),e["\u0275mpd"](4608,_.DatePipe,_.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[S.a]),e["\u0275mpd"](4608,P.a,P.a,[S.a]),e["\u0275mpd"](4608,q.a,q.a,[S.a]),e["\u0275mpd"](4608,O.a,O.a,[]),e["\u0275mpd"](4608,j.a,j.a,[]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,$.a,$.a,[]),e["\u0275mpd"](4608,A.a,A.a,[_.DatePipe]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,z.a,z.a,[]),e["\u0275mpd"](4608,L.a,L.a,[]),e["\u0275mpd"](4608,B.a,B.a,[]),e["\u0275mpd"](4608,G.a,G.a,[]),e["\u0275mpd"](4608,K.a,K.a,[]),e["\u0275mpd"](4608,H.E,H.E,[]),e["\u0275mpd"](4608,H.h,H.h,[]),e["\u0275mpd"](4608,J.b,J.b,[]),e["\u0275mpd"](4608,Z.a,Z.a,[]),e["\u0275mpd"](4608,W.a,W.a,[]),e["\u0275mpd"](4608,Q.a,Q.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,W.a,e.ApplicationRef]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,X.b,X.b,[e.RendererFactory2,Q.a]),e["\u0275mpd"](4608,ll.ScrollbarHelper,ll.ScrollbarHelper,[nl.DOCUMENT]),e["\u0275mpd"](4608,ul.DimensionsHelper,ul.DimensionsHelper,[]),e["\u0275mpd"](4608,el.ColumnChangesService,el.ColumnChangesService,[]),e["\u0275mpd"](4608,tl.f,tl.f,[]),e["\u0275mpd"](4608,al.a,al.a,[]),e["\u0275mpd"](4608,ol.a,ol.a,[il.l,al.a]),e["\u0275mpd"](4608,rl.NodeDraggableService,rl.NodeDraggableService,[]),e["\u0275mpd"](4608,dl.NodeMenuService,dl.NodeMenuService,[]),e["\u0275mpd"](4608,sl.TreeService,sl.TreeService,[rl.NodeDraggableService]),e["\u0275mpd"](4608,cl.e,cl.e,[]),e["\u0275mpd"](4608,pl.c,pl.c,[]),e["\u0275mpd"](4608,fl.w,fl.w,[]),e["\u0275mpd"](4608,fl.y,fl.y,[]),e["\u0275mpd"](4608,fl.a,fl.a,[]),e["\u0275mpd"](4608,fl.e,fl.e,[]),e["\u0275mpd"](4608,fl.c,fl.c,[]),e["\u0275mpd"](4608,fl.f,fl.f,[]),e["\u0275mpd"](4608,fl.x,fl.x,[fl.y,fl.f]),e["\u0275mpd"](1073742336,_.CommonModule,_.CommonModule,[]),e["\u0275mpd"](1073742336,cl.c,cl.c,[]),e["\u0275mpd"](1073742336,gl.a,gl.a,[]),e["\u0275mpd"](1073742336,H.B,H.B,[]),e["\u0275mpd"](1073742336,H.n,H.n,[]),e["\u0275mpd"](1073742336,H.x,H.x,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,Z.d,Z.d,[]),e["\u0275mpd"](1073742336,Y.d,Y.d,[]),e["\u0275mpd"](1073742336,ml.ChartsModule,ml.ChartsModule,[]),e["\u0275mpd"](1073742336,X.e,X.e,[]),e["\u0275mpd"](1073742336,vl.a,vl.a,[]),e["\u0275mpd"](1073742336,tl.e,tl.e,[]),e["\u0275mpd"](1073742336,hl.a,hl.a,[]),e["\u0275mpd"](1073742336,bl.NgxDatatableModule,bl.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,il.p,il.p,[[2,il.v],[2,il.l]]),e["\u0275mpd"](1073742336,Cl.a,Cl.a,[]),e["\u0275mpd"](1073742336,Rl.a,Rl.a,[]),e["\u0275mpd"](1073742336,Il.a,Il.a,[]),e["\u0275mpd"](1073742336,pl.d,pl.d,[]),e["\u0275mpd"](1073742336,wl.TreeModule,wl.TreeModule,[]),e["\u0275mpd"](1073742336,Tl.a,Tl.a,[]),e["\u0275mpd"](1073742336,fl.d,fl.d,[]),e["\u0275mpd"](1073742336,t.a,t.a,[]),e["\u0275mpd"](1073742336,t.b,t.b,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,tl.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,il.j,function(){return[[{path:"",redirectTo:"rbd",pathMatch:"full"},{path:"rbd",canActivate:[ut.a],data:t.c,children:[{path:"",component:In.a},{path:"create",component:Un.a,data:t.d},{path:"edit/:pool/:name",component:Un.a,data:t.g},{path:"clone/:pool/:name/:snap",component:Un.a,data:t.h},{path:"copy/:pool/:name",component:Un.a,data:t.i},{path:"copy/:pool/:name/:snap",component:Un.a,data:t.j}]},{path:"mirroring",component:et.a,canActivate:[ut.a],data:t.k},{path:"iscsi",canActivate:[ut.a],data:t.l,children:[{path:"",redirectTo:"overview",pathMatch:"full"},{path:"overview",component:Eu.a,data:t.m},{path:"targets",data:t.n,children:[{path:"",component:Hu.a},{path:"create",component:ie.a,data:t.e},{path:"edit/:target_iqn",component:ie.a,data:t.f}]}]}]]},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.4a6a002d073ab0275cb2.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/8.4a6a002d073ab0275cb2.js
new file mode 100644 (file)
index 0000000..0a242b2
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{nOaW:function(l,n,e){"use strict";e.r(n);var u=e("CcnG"),t=e("sne2"),o=e("gIcY"),i=e("LvDl"),a=e("VNr4"),r=e("t/Na"),s=e("Jm/i"),d=e("pL04"),c=function(){function l(l,n){this.http=l,this.i18n=n,this.apiPath="api/erasure_code_profile",this.formTooltips={k:this.i18n("Each object is split in data-chunks parts, each stored on a different OSD."),m:this.i18n("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."),plugins:{jerasure:{description:this.i18n("The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools."),technique:this.i18n("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."),packetSize:this.i18n("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.")},lrc:{description:this.i18n("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."),l:this.i18n("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."),crushLocality:this.i18n("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.")},isa:{description:this.i18n("The isa plugin encapsulates the ISA library. It only runs on Intel processors."),technique:this.i18n("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.")},shec:{description:this.i18n("The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes."),c:this.i18n("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.")}},crushRoot:this.i18n("The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default."),crushFailureDomain:this.i18n("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."),crushDeviceClass:this.i18n("Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map."),directory:this.i18n("Set the directory name from which the erasure code plugin is loaded.")}}return l.prototype.list=function(){return this.http.get(this.apiPath)},l.prototype.create=function(l){return this.http.post(this.apiPath,l,{observe:"response"})},l.prototype.update=function(l){return this.http.put(this.apiPath+"/"+l.name,l,{observe:"response"})},l.prototype.delete=function(l){return this.http.delete(this.apiPath+"/"+l,{observe:"response"})},l.prototype.get=function(l){return this.http.get(this.apiPath+"/"+l)},l.prototype.getInfo=function(){return this.http.get(this.apiPath+"/_info")},l.ngInjectableDef=u.defineInjectable({factory:function(){return new l(u.inject(r.c),u.inject(s.a))},token:l,providedIn:d.a}),l}(),p=e("Ekvf"),f=e("0+/T"),m=e("QFaf"),g=e("1Ni5"),h=e("PhyI"),v=e("kvvV"),b=e("Fgil"),C=e("aexS"),R=e("aXbf"),y=e("kn/O"),I=e("2EZI"),E=function(){return function(){}}(),V=function(){function l(l,n,e,t,o,i){this.formBuilder=l,this.bsModalRef=n,this.taskWrapper=e,this.ecpService=t,this.i18n=o,this.actionLabels=i,this.submitAction=new u.EventEmitter,this.requiredControls=[],this.devices=[],this.tooltips=this.ecpService.formTooltips,this.PLUGIN={LRC:"lrc",SHEC:"shec",JERASURE:"jerasure",ISA:"isa"},this.plugin=this.PLUGIN.JERASURE,this.action=this.actionLabels.CREATE,this.resource=this.i18n("EC Profile"),this.createForm(),this.setJerasureDefaults()}return l.prototype.createForm=function(){var l=this;this.form=this.formBuilder.group({name:[null,[o.A.required,o.A.pattern("[A-Za-z0-9_-]+"),g.a.custom("uniqueName",function(n){return l.names&&-1!==l.names.indexOf(n)})]],plugin:[this.PLUGIN.JERASURE,[o.A.required]],k:[1],m:[1],crushFailureDomain:["host"],crushRoot:["default"],crushDeviceClass:[""],directory:[""],technique:["reed_sol_van"],packetSize:[2048,[o.A.min(1)]],l:[1,[o.A.required,o.A.min(1)]],crushLocality:[""],c:[1,[o.A.required,o.A.min(1)]]}),this.form.get("plugin").valueChanges.subscribe(function(n){return l.onPluginChange(n)})},l.prototype.onPluginChange=function(l){this.plugin=l,l===this.PLUGIN.JERASURE?this.setJerasureDefaults():l===this.PLUGIN.LRC?this.setLrcDefaults():l===this.PLUGIN.ISA?this.setIsaDefaults():l===this.PLUGIN.SHEC&&this.setShecDefaults()},l.prototype.setNumberValidators=function(l,n){var e=[o.A.min(1)];n&&e.push(o.A.required),this.form.get(l).setValidators(e)},l.prototype.setKMValidators=function(l){var n=this;["k","m"].forEach(function(e){return n.setNumberValidators(e,l)})},l.prototype.setJerasureDefaults=function(){this.requiredControls=["k","m"],this.setDefaults({k:4,m:2}),this.setKMValidators(!0),this.techniques=["reed_sol_van","reed_sol_r6_op","cauchy_orig","cauchy_good","liberation","blaum_roth","liber8tion"]},l.prototype.setLrcDefaults=function(){this.requiredControls=["k","m","l"],this.setKMValidators(!0),this.setNumberValidators("l",!0),this.setDefaults({k:4,m:2,l:3})},l.prototype.setIsaDefaults=function(){this.requiredControls=[],this.setKMValidators(!1),this.setDefaults({k:7,m:3}),this.techniques=["reed_sol_van","cauchy"]},l.prototype.setShecDefaults=function(){this.requiredControls=[],this.setKMValidators(!1),this.setDefaults({k:4,m:3,c:2})},l.prototype.setDefaults=function(l){var n=this;Object.keys(l).forEach(function(e){n.form.get(e).pristine&&n.form.silentSet(e,l[e])})},l.prototype.ngOnInit=function(){var l=this;this.ecpService.getInfo().subscribe(function(n){var e=n.plugins,u=n.names,t=n.directory,o=n.devices;l.failureDomains=n.failure_domains,l.plugins=e,l.names=u,l.devices=o,l.form.silentSet("directory",t)})},l.prototype.createJson=function(){var l=this,n={technique:[this.PLUGIN.ISA,this.PLUGIN.JERASURE],packetSize:[this.PLUGIN.JERASURE],l:[this.PLUGIN.LRC],crushLocality:[this.PLUGIN.LRC],c:[this.PLUGIN.SHEC]},e=new E,u=this.form.getValue("plugin");return Object.keys(this.form.controls).filter(function(e){var t=n[e],o=l.form.get(e);return(t&&t.includes(u)||!t)&&(o.dirty||l.requiredControls.includes(e))&&l.form.getValue(e)}).forEach(function(n){l.extendJson(n,e)}),e},l.prototype.extendJson=function(l,n){n[{crushFailureDomain:"crush-failure-domain",crushRoot:"crush-root",crushDeviceClass:"crush-device-class",packetSize:"packetsize",crushLocality:"crush-locality"}[l]||l]=this.form.getValue(l)},l.prototype.onSubmit=function(){var l=this;if(this.form.invalid)this.form.setErrors({cdSubmitButton:!0});else{var n=this.createJson();this.taskWrapper.wrapTaskAroundCall({task:new v.a("ecp/create",{name:n.name}),call:this.ecpService.create(n)}).subscribe(void 0,function(){l.form.setErrors({cdSubmitButton:!0})},function(){l.bsModalRef.hide(),l.submitAction.emit(n)})}},l}(),T=e("DNAf"),w=e("a96k"),S=function(){return function(l){this.erasureInfo=!1,this.crushInfo=!1,this.pgs=1,this.poolTypes=["erasure","replicated"],this.applications={selected:[],available:[new w.a(!1,"cephfs",""),new w.a(!1,"rbd",""),new w.a(!1,"rgw","")],validators:[o.A.pattern("[A-Za-z0-9_]+"),o.A.maxLength(128)],messages:new T.a({empty:l("No applications added"),selectionLimit:{text:l("Applications limit reached"),tooltip:l("A pool can only have up to four applications definitions.")},customValidations:{pattern:l("Allowed characters '_a-zA-Z0-9'"),maxlength:l("Maximum length is 128 characters")},filter:l("Filter or add applications"),add:l("Add application")},l)}}}(),N=function(){function l(l,n,e,o,i,a,r,s,d,c,p,f){this.dimlessBinaryPipe=l,this.route=n,this.router=e,this.modalService=o,this.poolService=i,this.authStorageService=a,this.formatter=r,this.bsModalService=s,this.taskWrapper=d,this.ecpService=c,this.i18n=p,this.actionLabels=f,this.editing=!1,this.data=new S(this.i18n),this.externalPgChange=!1,this.current={rules:[]},this.initializeConfigData=new u.EventEmitter,this.currentConfigurationValues={},this.editing=this.router.url.startsWith("/pool/"+t.e.EDIT),this.action=this.editing?this.actionLabels.EDIT:this.actionLabels.CREATE,this.resource=this.i18n("pool"),this.authenticate(),this.createForm()}return l.prototype.authenticate=function(){this.permission=this.authStorageService.getPermissions().pool,(!this.permission.read||!this.permission.update&&this.editing||!this.permission.create&&!this.editing)&&this.router.navigate(["/404"])},l.prototype.createForm=function(){var l=this,n=new m.a({mode:new o.i("none"),algorithm:new o.i(""),minBlobSize:new o.i("",{updateOn:"blur"}),maxBlobSize:new o.i("",{updateOn:"blur"}),ratio:new o.i("",{updateOn:"blur"})});this.form=new m.a({name:new o.i("",{validators:[o.A.pattern(/^[.A-Za-z0-9_\/-]+$/),o.A.required]}),poolType:new o.i("",{validators:[o.A.required]}),crushRule:new o.i(null,{validators:[g.a.custom("tooFewOsds",function(n){return l.info&&n&&l.info.osd_count<n.min_size})]}),size:new o.i("",{updateOn:"blur"}),erasureProfile:new o.i(null),pgNum:new o.i("",{validators:[o.A.required,o.A.min(1)]}),ecOverwrites:new o.i(!1),compression:n},[g.a.custom("form",function(){return null}),g.a.custom("rbdPool",function(){return l.form&&l.form.getValue("name").includes("/")&&l.data&&-1!==l.data.applications.selected.indexOf("rbd")})])},l.prototype.ngOnInit=function(){var l=this;Object(a.a)(this.poolService.getInfo(),this.ecpService.list()).subscribe(function(n){l.initInfo(n[0]),l.initEcp(n[1]),l.editing&&l.initEditMode(),l.listenToChanges(),l.setComplexValidators()})},l.prototype.initInfo=function(l){this.form.silentSet("algorithm",l.bluestore_compression_algorithm),l.compression_modes.push("unset"),this.info=l},l.prototype.initEcp=function(l){var n=this.form.get("erasureProfile");l.length<=1&&n.disable(),1===l.length?n.setValue(l[0]):l.length>1&&n.disabled&&n.enable(),this.ecProfiles=l},l.prototype.initEditMode=function(){var l=this;this.disableForEdit(),this.routeParamsSubscribe=this.route.params.subscribe(function(n){return l.poolService.get(n.name).subscribe(function(n){l.data.pool=n,l.initEditFormData(n)})})},l.prototype.disableForEdit=function(){var l=this;["poolType","crushRule","size","erasureProfile","ecOverwrites"].forEach(function(n){return l.form.get(n).disable()})},l.prototype.initEditFormData=function(l){var n=this;this.initializeConfigData.emit({initialData:l.configuration,sourceType:h.a.pool});var e={name:l.pool_name,poolType:l.type,crushRule:this.info["crush_rules_"+l.type].find(function(n){return n.rule_name===l.crush_rule}),size:l.size,erasureProfile:this.ecProfiles.find(function(n){return n.name===l.erasure_code_profile}),pgNum:l.pg_num,ecOverwrites:l.flags_names.includes("ec_overwrites"),mode:l.options.compression_mode,algorithm:l.options.compression_algorithm,minBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_min_blob_size),maxBlobSize:this.dimlessBinaryPipe.transform(l.options.compression_max_blob_size),ratio:l.options.compression_required_ratio};Object.keys(e).forEach(function(l){var u=e[l];i.isUndefined(u)||""===u||n.form.silentSet(l,u)}),this.data.pgs=this.form.getValue("pgNum"),this.data.applications.selected=l.application_metadata},l.prototype.listenToChanges=function(){this.listenToChangesDuringAddEdit(),this.editing||this.listenToChangesDuringAdd()},l.prototype.listenToChangesDuringAddEdit=function(){var l=this;this.form.get("pgNum").valueChanges.subscribe(function(n){var e=n-l.data.pgs;1===Math.abs(e)&&2!==n?l.doPgPowerJump(e):l.data.pgs=n})},l.prototype.doPgPowerJump=function(l){var n=this.calculatePgPower()+l;this.setPgs(-1===l?Math.round(n):Math.floor(n))},l.prototype.calculatePgPower=function(l){return void 0===l&&(l=this.form.getValue("pgNum")),Math.log(l)/Math.log(2)},l.prototype.setPgs=function(l){var n=Math.pow(2,l<0?0:l);this.data.pgs=n,this.form.silentSet("pgNum",n)},l.prototype.listenToChangesDuringAdd=function(){var l=this;this.form.get("poolType").valueChanges.subscribe(function(n){l.form.get("size").updateValueAndValidity(),l.rulesChange(),"replicated"===n&&l.replicatedRuleChange(),l.pgCalc()}),this.form.get("crushRule").valueChanges.subscribe(function(){"replicated"===l.form.getValue("poolType")&&l.replicatedRuleChange(),l.pgCalc()}),this.form.get("size").valueChanges.subscribe(function(){l.pgCalc()}),this.form.get("erasureProfile").valueChanges.subscribe(function(){l.pgCalc()}),this.form.get("mode").valueChanges.subscribe(function(){["minBlobSize","maxBlobSize","ratio"].forEach(function(n){l.form.get(n).updateValueAndValidity({emitEvent:!1})})}),this.form.get("minBlobSize").valueChanges.subscribe(function(){l.form.get("maxBlobSize").updateValueAndValidity({emitEvent:!1})}),this.form.get("maxBlobSize").valueChanges.subscribe(function(){l.form.get("minBlobSize").updateValueAndValidity({emitEvent:!1})})},l.prototype.rulesChange=function(){var l=this.form.getValue("poolType");if(l&&this.info){var n=this.info["crush_rules_"+l]||[],e=this.form.get("crushRule");1===n.length?(e.setValue(n[0]),e.disable()):(e.setValue(null),e.enable()),this.current.rules=n}else this.current.rules=[]},l.prototype.replicatedRuleChange=function(){if("replicated"===this.form.getValue("poolType")){var l=this.form.get("size"),n=this.form.getValue("size")||3,e=this.getMinSize(),u=this.getMaxSize();n<e?n=e:n>u&&(n=u),n!==l.value&&this.form.silentSet("size",n)}},l.prototype.getMinSize=function(){if(this.info&&!(this.info.osd_count<1)){var l=this.form.getValue("crushRule");return l?l.min_size:1}},l.prototype.getMaxSize=function(){if(this.info&&!(this.info.osd_count<1)){var l=this.info.osd_count;if(this.form.getValue("crushRule")){var n=this.form.get("crushRule").value.max_size;if(n<l)return n}return l}},l.prototype.pgCalc=function(){var l=this.form.getValue("poolType");if(this.info&&!this.form.get("pgNum").dirty&&l){var n=100*this.info.osd_count,e="replicated"===l?this.replicatedPgCalc(n):this.erasurePgCalc(n);if(e){var u=this.data.pgs;this.alignPgs(e),this.externalPgChange||(this.externalPgChange=u!==this.data.pgs)}}},l.prototype.replicatedPgCalc=function(l){var n=this.form.get("size"),e=n.value;if(n.valid&&e>0)return l/e},l.prototype.erasurePgCalc=function(l){var n=this.form.get("erasureProfile"),e=n.value;if((n.valid||n.disabled)&&e)return l/(e.k+e.m)},l.prototype.alignPgs=function(l){void 0===l&&(l=this.form.getValue("pgNum")),this.setPgs(Math.round(this.calculatePgPower(l<1?1:l)))},l.prototype.setComplexValidators=function(){var l=this;this.editing?this.form.get("name").setValidators([this.form.get("name").validator,g.a.custom("uniqueName",function(n){return l.data.pool&&l.info&&-1!==l.info.pool_names.indexOf(n)&&l.info.pool_names.indexOf(n)!==l.info.pool_names.indexOf(l.data.pool.pool_name)})]):(g.a.validateIf(this.form.get("size"),function(){return"replicated"===l.form.get("poolType").value},[g.a.custom("min",function(n){return l.form.getValue("size")&&n<l.getMinSize()}),g.a.custom("max",function(n){return l.form.getValue("size")&&l.getMaxSize()<n})]),this.form.get("name").setValidators([this.form.get("name").validator,g.a.custom("uniqueName",function(n){return l.info&&-1!==l.info.pool_names.indexOf(n)})])),this.setCompressionValidators()},l.prototype.setCompressionValidators=function(){var l=this;g.a.validateIf(this.form.get("minBlobSize"),function(){return l.hasCompressionEnabled()},[o.A.min(0),g.a.custom("maximum",function(n){return l.oddBlobSize(n,l.form.getValue("maxBlobSize"))})]),g.a.validateIf(this.form.get("maxBlobSize"),function(){return l.hasCompressionEnabled()},[o.A.min(0),g.a.custom("minimum",function(n){return l.oddBlobSize(l.form.getValue("minBlobSize"),n)})]),g.a.validateIf(this.form.get("ratio"),function(){return l.hasCompressionEnabled()},[o.A.min(0),o.A.max(1)])},l.prototype.oddBlobSize=function(l,n){return l=this.formatter.toBytes(l),n=this.formatter.toBytes(n),Boolean(l&&n&&l>=n)},l.prototype.hasCompressionEnabled=function(){return this.form.getValue("mode")&&"none"!==this.form.get("mode").value.toLowerCase()},l.prototype.describeCrushStep=function(l){return[l.op.replace("_"," "),l.item_name||"",l.type?l.num+" type "+l.type:""].join(" ")},l.prototype.addErasureCodeProfile=function(){var l=this;this.modalSubscription=this.modalService.onHide.subscribe(function(){return l.reloadECPs()}),this.bsModalService.show(V)},l.prototype.reloadECPs=function(){var l=this;this.ecpService.list().subscribe(function(n){return l.initEcp(n)}),this.modalSubscription.unsubscribe()},l.prototype.deleteErasureCodeProfile=function(){var l=this,n=this.form.getValue("erasureProfile");if(n){var e=n.name;this.modalSubscription=this.modalService.onHide.subscribe(function(){return l.reloadECPs()}),this.modalService.show(f.a,{initialState:{itemDescription:this.i18n("erasure code profile"),itemNames:[e],submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new v.a("ecp/delete",{name:e}),call:l.ecpService.delete(e)})}}})}},l.prototype.submit=function(){var l=this;if(this.form.invalid)this.form.setErrors({cdSubmitButton:!0});else{var n={pool:this.form.getValue("name")};this.assignFormFields(n,[{externalFieldName:"pool_type",formControlName:"poolType"},{externalFieldName:"pg_num",formControlName:"pgNum",editable:!0},"replicated"===this.form.getValue("poolType")?{externalFieldName:"size",formControlName:"size"}:{externalFieldName:"erasure_code_profile",formControlName:"erasureProfile",attr:"name"},{externalFieldName:"rule_name",formControlName:"crushRule",attr:"rule_name"}]),this.info.is_all_bluestore&&(this.assignFormField(n,{externalFieldName:"flags",formControlName:"ecOverwrites",replaceFn:function(){return["ec_overwrites"]}}),"none"!==this.form.getValue("mode")?this.assignFormFields(n,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:function(n){return l.hasCompressionEnabled()&&n}},{externalFieldName:"compression_algorithm",formControlName:"algorithm",editable:!0},{externalFieldName:"compression_min_blob_size",formControlName:"minBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_max_blob_size",formControlName:"maxBlobSize",replaceFn:this.formatter.toBytes,editable:!0,resetValue:0},{externalFieldName:"compression_required_ratio",formControlName:"ratio",editable:!0,resetValue:0}]):this.editing&&this.assignFormFields(n,[{externalFieldName:"compression_mode",formControlName:"mode",editable:!0,replaceFn:function(){return"unset"}},{externalFieldName:"srcpool",formControlName:"name",editable:!0,replaceFn:function(){return l.data.pool.pool_name}}]));var e=this.data.applications.selected;(e.length>0||this.editing)&&(n.application_metadata=e),"replicated"!==this.form.get("poolType").value||i.isEmpty(this.currentConfigurationValues)||(n.configuration=this.currentConfigurationValues),this.triggerApiTask(n)}},l.prototype.assignFormFields=function(l,n){var e=this;n.forEach(function(n){return e.assignFormField(l,n)})},l.prototype.assignFormField=function(l,n){var e=n.externalFieldName,u=n.formControlName,t=n.attr,o=n.replaceFn,a=n.editable,r=n.resetValue;if(!this.editing||a&&!this.form.get(u).pristine){var s=this.form.getValue(u),d=o?o(s):t?i.get(s,t):s;if(!s||!d){if(!a||i.isUndefined(r))return;d=r}l[e]=d}},l.prototype.triggerApiTask=function(l){var n=this;this.taskWrapper.wrapTaskAroundCall({task:new v.a("pool/"+(this.editing?t.e.EDIT:t.e.CREATE),{pool_name:l.hasOwnProperty("srcpool")?l.srcpool:l.pool}),call:this.poolService[this.editing?t.e.UPDATE:t.e.CREATE](l)}).subscribe(void 0,function(l){i.isObject(l.error)&&"34"===l.error.code&&n.form.get("pgNum").setErrors({34:!0}),n.form.setErrors({cdSubmitButton:!0})},function(){return n.router.navigate(["/pool"])})},l.prototype.appSelection=function(){this.form.updateValueAndValidity({emitEvent:!1,onlySelf:!0})},l}(),_=e("MuvH"),D=e("uIqm"),k=e("x38r"),P=e("yJti"),x=e("vCyI"),z=e("o4+5"),F=e("VTlA"),q=e("EgGo"),A=e("d+Og"),O=function(){return function(l){this.pool_name=l}}(),L=new q.a("pool"),M=function(){function l(l,n,e,u,t,o,a,r,s,d,c){var p=this;this.poolService=l,this.taskWrapper=n,this.authStorageService=e,this.taskListService=u,this.modalService=t,this.i18n=o,this.pgCategoryService=a,this.dimlessPipe=r,this.urlBuilder=s,this.configurationService=d,this.actionLabels=c,this.pools=[],this.selection=new x.a,this.executingTasks=[],this.selectionCacheTiers=[],this.monAllowPoolDelete=!1,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return p.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return p.urlBuilder.getEdit(encodeURIComponent(p.selection.first().pool_name))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-trash-o",click:function(){return p.deletePoolModal()},name:this.actionLabels.DELETE,disable:function(){return!p.selection.first()||!p.monAllowPoolDelete},disableDesc:function(){return p.getDisableDesc()}}],this.configurationService.get("mon_allow_pool_delete").subscribe(function(l){if(i.has(l,"value")){var n=i.find(l.value,function(l){return"mon"===l.section})||{value:!1};p.monAllowPoolDelete="true"===n.value}})}return l.prototype.ngOnInit=function(){var l=this,n=function(l,n,e){return i.get(n,l)>i.get(e,l)?1:-1};this.columns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:4,cellTransformation:k.a.executing},{prop:"type",name:this.i18n("Type"),flexGrow:2},{prop:"application_metadata",name:this.i18n("Applications"),flexGrow:2},{prop:"pg_status",name:this.i18n("PG Status"),flexGrow:3,cellClass:function(n){return l.getPgStatusCellClass(n.row,n.column,n.value)}},{prop:"size",name:this.i18n("Replica Size"),flexGrow:1,cellClass:"text-right"},{prop:"last_change",name:this.i18n("Last Change"),flexGrow:1,cellClass:"text-right"},{prop:"erasure_code_profile",name:this.i18n("Erasure Coded Profile"),flexGrow:2},{prop:"crush_rule",name:this.i18n("Crush Ruleset"),flexGrow:3},{name:this.i18n("Usage"),prop:"usage",cellTemplate:this.poolUsageTpl,flexGrow:3},{prop:"stats.rd_bytes.rates",name:this.i18n("Read bytes"),comparator:function(l,e,u,t){return n("stats.rd_bytes.latest",u,t)},cellTransformation:k.a.sparkline,flexGrow:3},{prop:"stats.wr_bytes.rates",name:this.i18n("Write bytes"),comparator:function(l,e,u,t){return n("stats.wr_bytes.latest",u,t)},cellTransformation:k.a.sparkline,flexGrow:3},{prop:"stats.rd.rate",name:this.i18n("Read ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:k.a.perSecond},{prop:"stats.wr.rate",name:this.i18n("Write ops"),flexGrow:1,pipe:this.dimlessPipe,cellTransformation:k.a.perSecond}],this.taskListService.init(function(){return l.poolService.getList()},void 0,function(n){return l.pools=l.transformPoolsData(n)},function(){l.table.reset(),l.viewCacheStatusList=[{status:P.a.ValueException}]},function(l){return l.name.startsWith("pool/")},function(l,n){return n.metadata.pool_name===l.pool_name},{default:function(l){return new O(l.metadata.pool_name)}})},l.prototype.updateSelection=function(l){this.selection=l,this.getSelectionTiers()},l.prototype.deletePoolModal=function(){var l=this,n=this.selection.first().pool_name;this.modalRef=this.modalService.show(f.a,{initialState:{itemDescription:"Pool",itemNames:[n],submitActionObservable:function(){return l.taskWrapper.wrapTaskAroundCall({task:new v.a("pool/"+t.e.DELETE,{pool_name:n}),call:l.poolService.delete(n)})}}})},l.prototype.getPgStatusCellClass=function(l,n,e){var u;return(u={"text-right":!0})["pg-"+this.pgCategoryService.getTypeByStates(e)]=!0,u},l.prototype.transformPoolsData=function(l){var n=this,e=["bytes_used","max_avail","rd_bytes","wr_bytes","rd","wr"],u={latest:0,rate:0,rates:[]};return i.forEach(l,function(l){l.pg_status=n.transformPgStatus(l.pg_status);var t={};i.forEach(e,function(n){t[n]=l.stats&&l.stats[n]?l.stats[n]:u}),l.stats=t;var o=t.bytes_used.latest+t.max_avail.latest;l.usage=o>0?t.bytes_used.latest/o:o,l.cdExecuting||l.pg_num+l.pg_placement_num===l.pg_num_target+l.pg_placement_num_target||(l.cdExecuting="Updating"),["rd_bytes","wr_bytes"].forEach(function(n){l.stats[n].rates=l.stats[n].rates.map(function(l){return l[1]})}),l.cdIsBinary=!0}),l},l.prototype.transformPgStatus=function(l){var n=[];return i.forEach(l,function(l,e){n.push(l+" "+e)}),n.join(", ")},l.prototype.getSelectionTiers=function(){var l=this.selection.hasSingleSelection?this.selection.first().tiers:[];this.selectionCacheTiers=this.pools.filter(function(n){return l.includes(n.pool)})},l.prototype.getDisableDesc=function(){if(!this.monAllowPoolDelete)return this.i18n("Pool deletion is disabled by the mon_allow_pool_delete configuration setting.")},l}(),j=function(){return function(){}}(),B={breadcrumbs:t.a.CREATE},U={breadcrumbs:t.a.EDIT},G=function(){return function(){}}(),K=e("ES0t"),$=e("MdoF"),J=e("Xg1U"),H=e("z5nN"),W=e("iutN"),Z=e("EEJc"),Y=e("PEr+"),X=e("a40w"),Q=e("pMnS"),ll=e("RIVN"),nl=e("nP0W"),el=e("VBM6"),ul=e("atuK"),tl=e("JIi+"),ol=e("Ur3J"),il=e("I4Qz"),al=e("0rTx"),rl=e("lz+O"),sl=e("u2XS"),dl=e("nhAp"),cl=e("l7Jr"),pl=e("bUo2"),fl=e("Ip0R"),ml=e("4HWh"),gl=e("p4Cf"),hl=e("8xTl"),vl=e("IZUe"),bl=e("gp3X"),Cl=e("sb0X"),Rl=e("KVJa"),yl=e("Z21x"),Il=e("DQlY"),El=u["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Vl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Tl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The name can only consist of alphanumeric characters, dashes and underscores."]))],null,null)}function wl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The chosen erasure code profile name is already in use."]))],null,null)}function Sl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Nl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function _l(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Dl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function kl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Pl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 2."]))],null,null)}function xl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function zl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Fl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function ql(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Al(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","c"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Durability estimator (c)"])),(l()(),u["\u0275eld"](6,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](7,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](8,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,6,"input",[["class","form-control"],["formControlName","c"],["id","c"],["name","c"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ql)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("c",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,e.tooltips.plugins.shec.c),l(n,13,0,"c"),l(n,17,0,e.form.showError("c",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,9,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function Ol(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Ll(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Ml(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,5,"label",[["class","control-label col-sm-3"],["for","l"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Locality (l)"])),(l()(),u["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](8,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](9,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](10,0,null,null,6,"input",[["class","form-control"],["formControlName","l"],["id","l"],["name","l"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,11)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,11)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,11)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,12).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,12).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,12).onTouched()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](12,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](14,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](16,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ol)),u["\u0275did"](18,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ll)),u["\u0275did"](20,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("l",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,8,0,e.tooltips.plugins.lrc.l),l(n,14,0,"l"),l(n,18,0,e.form.showError("l",u["\u0275nov"](n.parent,12),"required")),l(n,20,0,e.form.showError("l",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,10,0,u["\u0275nov"](n,16).ngClassUntouched,u["\u0275nov"](n,16).ngClassTouched,u["\u0275nov"](n,16).ngClassPristine,u["\u0275nov"](n,16).ngClassDirty,u["\u0275nov"](n,16).ngClassValid,u["\u0275nov"](n,16).ngClassInvalid,u["\u0275nov"](n,16).ngClassPending)})}function jl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Bl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Ul(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Gl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["None"]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function Kl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function $l(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushLocality"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush Locality"])),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](5,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](6,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","crushLocality"],["id","crushLocality"],["name","crushLocality"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ul)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Gl)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Kl)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,5,0,e.tooltips.plugins.lrc.crushLocality),l(n,10,0,"crushLocality"),l(n,14,0,!e.failureDomains),l(n,16,0,e.failureDomains&&e.failureDomains.length>0),l(n,18,0,e.failureDomains)},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Jl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Hl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","technique"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Technique"])),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](5,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](6,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,7,"select",[["class","form-control"],["formControlName","technique"],["id","technique"],["name","technique"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Jl)),u["\u0275did"](14,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,5,0,e.tooltips.plugins[e.plugin].technique),l(n,10,0,"technique"),l(n,14,0,e.techniques)},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Wl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Must be equal to or greater than 1."]))],null,null)}function Zl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","packetSize"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Packetsize"])),(l()(),u["\u0275eld"](6,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](7,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](8,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,6,"input",[["class","form-control"],["formControlName","packetSize"],["id","packetSize"],["name","packetSize"],["placeholder","Packetsize..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Wl)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("packetSize",u["\u0275nov"](n.parent,12)));l(n,1,0,"form-group",t),l(n,7,0,e.tooltips.plugins.jerasure.packetSize),l(n,13,0,"packetSize"),l(n,17,0,e.form.showError("packetSize",u["\u0275nov"](n.parent,12),"min"))},function(l,n){l(n,9,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function Yl(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function Xl(l){return u["\u0275vid"](0,[u["\u0275pid"](0,fl.TitleCasePipe,[]),u["\u0275pid"](0,hl.a,[]),(l()(),u["\u0275eld"](2,0,null,null,7,"div",[["class","modal-header"]],null,null,null,null,null)),(l()(),u["\u0275eld"](3,0,null,null,3,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(l()(),u["\u0275ted"](4,null,["","",""])),u["\u0275ppd"](5,1),u["\u0275ppd"](6,1),(l()(),u["\u0275eld"](7,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.bsModalRef.hide()&&u),u},null,null)),(l()(),u["\u0275eld"](8,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["\xd7"])),(l()(),u["\u0275eld"](10,0,null,null,173,"form",[["class","form-horizontal"],["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(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["\u0275nov"](l,12).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["\u0275nov"](l,12).onReset()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.D,[],null,null),u["\u0275did"](12,540672,[["frm",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["\u0275prd"](2048,null,o.d,null,[o.l]),u["\u0275did"](14,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](15,0,null,null,160,"div",[["class","modal-body"]],null,null,null,null,null)),(l()(),u["\u0275eld"](16,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](17,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](18,{"has-error":0}),(l()(),u["\u0275eld"](19,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Name"])),(l()(),u["\u0275eld"](22,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](23,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](24,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,26)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](25,4210688,null,0,vl.a,[u.ElementRef],null,null),u["\u0275did"](26,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](28,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](30,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Vl)),u["\u0275did"](32,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Tl)),u["\u0275did"](34,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,wl)),u["\u0275did"](36,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](37,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](38,0,null,null,5,"label",[["class","control-label col-sm-3"],["for","plugin"]],null,null,null,null,null)),(l()(),u["\u0275eld"](39,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Plugin"])),(l()(),u["\u0275eld"](41,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](42,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](43,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](44,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](45,0,null,null,9,"select",[["class","form-control"],["formControlName","plugin"],["id","plugin"],["name","plugin"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,46).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,46).onTouched()&&t),t},null,null)),u["\u0275did"](46,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](48,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](50,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Sl)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Nl)),u["\u0275did"](54,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,_l)),u["\u0275did"](56,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](57,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](58,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](59,{"has-error":0}),(l()(),u["\u0275eld"](60,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","k"]],null,null,null,null,null)),(l()(),u["\u0275eld"](61,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Data chunks (k)"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Dl)),u["\u0275did"](64,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](65,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](66,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](67,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](68,0,null,null,6,"input",[["class","form-control"],["formControlName","k"],["id","k"],["name","k"],["ng-model","$ctrl.erasureCodeProfile.k"],["placeholder","Data chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,69)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,69).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,69)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,69)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,70).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,70).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,70).onTouched()&&t),t},null,null)),u["\u0275did"](69,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](70,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](72,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](74,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,kl)),u["\u0275did"](76,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Pl)),u["\u0275did"](78,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](79,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](80,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](81,{"has-error":0}),(l()(),u["\u0275eld"](82,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","m"]],null,null,null,null,null)),(l()(),u["\u0275eld"](83,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Coding chunks (m)"])),(l()(),u["\u0275and"](16777216,null,null,1,null,xl)),u["\u0275did"](86,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](87,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](88,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](89,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](90,0,null,null,6,"input",[["class","form-control"],["formControlName","m"],["id","m"],["name","m"],["placeholder","Coding chunks..."],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,91)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,91).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,91)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,91)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,92).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,92).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,92).onTouched()&&t),t},null,null)),u["\u0275did"](91,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](92,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](94,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](96,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,zl)),u["\u0275did"](98,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Fl)),u["\u0275did"](100,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Al)),u["\u0275did"](102,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ml)),u["\u0275did"](104,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](105,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](106,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushFailureDomain"]],null,null,null,null,null)),(l()(),u["\u0275eld"](107,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush failure domain"])),(l()(),u["\u0275eld"](109,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](110,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](111,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](112,0,null,null,9,"select",[["class","form-control"],["formControlName","crushFailureDomain"],["id","crushFailureDomain"],["name","crushFailureDomain"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,113).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,113).onTouched()&&t),t},null,null)),u["\u0275did"](113,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](115,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](117,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,jl)),u["\u0275did"](119,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Bl)),u["\u0275did"](121,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,$l)),u["\u0275did"](123,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,2,null,Hl)),u["\u0275did"](125,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),u["\u0275pad"](126,2),(l()(),u["\u0275and"](16777216,null,null,1,null,Zl)),u["\u0275did"](128,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](129,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](130,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](131,{"has-error":0}),(l()(),u["\u0275eld"](132,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushRoot"]],null,null,null,null,null)),(l()(),u["\u0275eld"](133,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush root"])),(l()(),u["\u0275eld"](135,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](136,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](137,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](138,0,null,null,5,"input",[["class","form-control"],["formControlName","crushRoot"],["id","crushRoot"],["name","crushRoot"],["placeholder","root..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,139)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,139).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,139)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,139)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](139,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](141,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](143,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](144,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](145,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","crushDeviceClass"]],null,null,null,null,null)),(l()(),u["\u0275eld"](146,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush device class"])),(l()(),u["\u0275eld"](148,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](149,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](150,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](151,0,null,null,11,"select",[["class","form-control"],["formControlName","crushDeviceClass"],["id","crushDeviceClass"],["name","crushDeviceClass"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,152).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,152).onTouched()&&t),t},null,null)),u["\u0275did"](152,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](154,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](156,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](157,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](158,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](159,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["any"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Yl)),u["\u0275did"](162,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](163,0,null,null,12,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](164,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","directory"]],null,null,null,null,null)),(l()(),u["\u0275eld"](165,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Directory"])),(l()(),u["\u0275eld"](167,0,null,null,1,"cd-helper",[],null,null,null,ml.b,ml.a)),u["\u0275did"](168,49152,null,0,gl.a,[],{html:[0,"html"]},null),(l()(),u["\u0275eld"](169,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](170,0,null,null,5,"input",[["class","form-control"],["formControlName","directory"],["id","directory"],["name","directory"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,171)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,171).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,171)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,171)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](171,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](173,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](175,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](176,0,null,null,7,"div",[["class","modal-footer"]],null,null,null,null,null)),(l()(),u["\u0275eld"](177,0,null,null,4,"cd-submit-button",[],null,[[null,"submitAction"]],function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.onSubmit()&&u),u},bl.b,bl.a)),u["\u0275did"](178,114688,null,0,Cl.a,[u.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(l()(),u["\u0275ted"](179,0,["","",""])),u["\u0275ppd"](180,1),u["\u0275ppd"](181,1),(l()(),u["\u0275eld"](182,0,null,null,1,"cd-back-button",[],null,null,null,Rl.b,Rl.a)),u["\u0275did"](183,49152,null,0,yl.a,[fl.Location,t.b],{back:[0,"back"]},null)],function(l,n){var e=n.component;l(n,12,0,e.form);var t=l(n,18,0,e.form.showError("name",u["\u0275nov"](n,12)));l(n,17,0,"form-group",t),l(n,28,0,"name"),l(n,32,0,e.form.showError("name",u["\u0275nov"](n,12),"required")),l(n,34,0,e.form.showError("name",u["\u0275nov"](n,12),"pattern")),l(n,36,0,e.form.showError("name",u["\u0275nov"](n,12),"uniqueName")),l(n,43,0,e.tooltips.plugins[e.plugin].description),l(n,48,0,"plugin"),l(n,52,0,!e.plugins),l(n,54,0,e.plugins),l(n,56,0,e.form.showError("name",u["\u0275nov"](n,12),"required"));var o=l(n,59,0,e.form.showError("k",u["\u0275nov"](n,12)));l(n,58,0,"form-group",o),l(n,64,0,e.requiredControls.includes("k")),l(n,66,0,e.tooltips.k),l(n,72,0,"k"),l(n,76,0,e.form.showError("k",u["\u0275nov"](n,12),"required")),l(n,78,0,e.form.showError("k",u["\u0275nov"](n,12),"min"));var i=l(n,81,0,e.form.showError("m",u["\u0275nov"](n,12)));l(n,80,0,"form-group",i),l(n,86,0,e.requiredControls.includes("m")),l(n,88,0,e.tooltips.m),l(n,94,0,"m"),l(n,98,0,e.form.showError("m",u["\u0275nov"](n,12),"required")),l(n,100,0,e.form.showError("m",u["\u0275nov"](n,12),"min")),l(n,102,0,"shec"===e.plugin),l(n,104,0,e.plugin===e.PLUGIN.LRC),l(n,110,0,e.tooltips.crushFailureDomain),l(n,115,0,"crushFailureDomain"),l(n,119,0,!e.failureDomains),l(n,121,0,e.failureDomains),l(n,123,0,e.plugin===e.PLUGIN.LRC);var a=l(n,126,0,e.PLUGIN.JERASURE,e.PLUGIN.ISA).includes(e.plugin);l(n,125,0,a),l(n,128,0,e.plugin===e.PLUGIN.JERASURE);var r=l(n,131,0,e.form.showError("crushRoot",u["\u0275nov"](n,12)));l(n,130,0,"form-group",r),l(n,136,0,e.tooltips.crushRoot),l(n,141,0,"crushRoot"),l(n,149,0,e.tooltips.crushDeviceClass),l(n,154,0,"crushDeviceClass"),l(n,158,0,""),l(n,159,0,""),l(n,162,0,e.devices),l(n,168,0,e.tooltips.directory),l(n,173,0,"directory"),l(n,178,0,u["\u0275nov"](n,12)),l(n,183,0,e.bsModalRef.hide)},function(l,n){var e=n.component,t=u["\u0275unv"](n,4,0,l(n,5,0,u["\u0275nov"](n,0),e.action)),o=u["\u0275unv"](n,4,1,l(n,6,0,u["\u0275nov"](n,1),e.resource));l(n,4,0,t,o),l(n,10,0,u["\u0275nov"](n,14).ngClassUntouched,u["\u0275nov"](n,14).ngClassTouched,u["\u0275nov"](n,14).ngClassPristine,u["\u0275nov"](n,14).ngClassDirty,u["\u0275nov"](n,14).ngClassValid,u["\u0275nov"](n,14).ngClassInvalid,u["\u0275nov"](n,14).ngClassPending),l(n,24,0,u["\u0275nov"](n,30).ngClassUntouched,u["\u0275nov"](n,30).ngClassTouched,u["\u0275nov"](n,30).ngClassPristine,u["\u0275nov"](n,30).ngClassDirty,u["\u0275nov"](n,30).ngClassValid,u["\u0275nov"](n,30).ngClassInvalid,u["\u0275nov"](n,30).ngClassPending),l(n,45,0,u["\u0275nov"](n,50).ngClassUntouched,u["\u0275nov"](n,50).ngClassTouched,u["\u0275nov"](n,50).ngClassPristine,u["\u0275nov"](n,50).ngClassDirty,u["\u0275nov"](n,50).ngClassValid,u["\u0275nov"](n,50).ngClassInvalid,u["\u0275nov"](n,50).ngClassPending),l(n,68,0,u["\u0275nov"](n,74).ngClassUntouched,u["\u0275nov"](n,74).ngClassTouched,u["\u0275nov"](n,74).ngClassPristine,u["\u0275nov"](n,74).ngClassDirty,u["\u0275nov"](n,74).ngClassValid,u["\u0275nov"](n,74).ngClassInvalid,u["\u0275nov"](n,74).ngClassPending),l(n,90,0,u["\u0275nov"](n,96).ngClassUntouched,u["\u0275nov"](n,96).ngClassTouched,u["\u0275nov"](n,96).ngClassPristine,u["\u0275nov"](n,96).ngClassDirty,u["\u0275nov"](n,96).ngClassValid,u["\u0275nov"](n,96).ngClassInvalid,u["\u0275nov"](n,96).ngClassPending),l(n,112,0,u["\u0275nov"](n,117).ngClassUntouched,u["\u0275nov"](n,117).ngClassTouched,u["\u0275nov"](n,117).ngClassPristine,u["\u0275nov"](n,117).ngClassDirty,u["\u0275nov"](n,117).ngClassValid,u["\u0275nov"](n,117).ngClassInvalid,u["\u0275nov"](n,117).ngClassPending),l(n,138,0,u["\u0275nov"](n,143).ngClassUntouched,u["\u0275nov"](n,143).ngClassTouched,u["\u0275nov"](n,143).ngClassPristine,u["\u0275nov"](n,143).ngClassDirty,u["\u0275nov"](n,143).ngClassValid,u["\u0275nov"](n,143).ngClassInvalid,u["\u0275nov"](n,143).ngClassPending),l(n,151,0,u["\u0275nov"](n,156).ngClassUntouched,u["\u0275nov"](n,156).ngClassTouched,u["\u0275nov"](n,156).ngClassPristine,u["\u0275nov"](n,156).ngClassDirty,u["\u0275nov"](n,156).ngClassValid,u["\u0275nov"](n,156).ngClassInvalid,u["\u0275nov"](n,156).ngClassPending),l(n,170,0,u["\u0275nov"](n,175).ngClassUntouched,u["\u0275nov"](n,175).ngClassTouched,u["\u0275nov"](n,175).ngClassPristine,u["\u0275nov"](n,175).ngClassDirty,u["\u0275nov"](n,175).ngClassValid,u["\u0275nov"](n,175).ngClassInvalid,u["\u0275nov"](n,175).ngClassPending);var i=u["\u0275unv"](n,179,0,l(n,180,0,u["\u0275nov"](n,0),e.action)),a=u["\u0275unv"](n,179,1,l(n,181,0,u["\u0275nov"](n,1),e.resource));l(n,179,0,i,a)})}function Ql(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-erasure-code-profile-form",[],null,null,null,Xl,El)),u["\u0275did"](1,114688,null,0,V,[I.a,Il.a,y.a,c,s.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var ln=u["\u0275ccf"]("cd-erasure-code-profile-form",V,Ql,{},{submitAction:"submitAction"},[]),nn=e("iExv"),en=e("85J/"),un=e("+0ag"),tn=e("IzCI"),on=e("Dwqy"),an=e("uYzU"),rn=e("uhwM"),sn=e("E2fk"),dn=e("a0VL"),cn=e("nSDx"),pn=e("SB+Q"),fn=e("TYzs"),mn=e("BQkM"),gn=e("dEH0"),hn=e("lTVp"),vn=e("OZfm"),bn=e("NJnL"),Cn=e("lqqz"),Rn=e("eajB"),yn=e("FO+L"),In=e("ZYjt"),En=e("nhM1"),Vn=e("BARL"),Tn=e("xtZt"),wn=e("Avrn"),Sn=e("ZYCi"),Nn=e("urB8"),_n=e("JZ5S"),Dn=e("Tff5"),kn=e("YAQW"),Pn=e("Da1D"),xn=e("ARl4"),zn=e("kJI8"),Fn=e("9Xeq"),qn=e("xdbM"),An=e("yGOH"),On=e("V/fk"),Ln=e("F8xH"),Mn=e("ChqD"),jn=e("PCNd"),Bn=e("STEd"),Un=e("kccj"),Gn=e("k/xb"),Kn=e("C6Ij"),$n=e("AWcq"),Jn=e("xSw7"),Hn=e("GgAd"),Wn=e("a278"),Zn=e("insk"),Yn=e("mSOc"),Xn=e("20UP"),Qn=e("pKUh"),le=e("25BL"),ne=e("NUGo"),ee=e("S7zO"),ue=e("EFGL"),te=e("aAWM"),oe=e("o8EM"),ie=e("sLuX"),ae=e("FSuO"),re=(e("jKX/"),function(){function l(l,n){this.i18n=l,this.poolService=n,this.cacheTierColumns=[],this.cacheTierColumns=[{prop:"pool_name",name:this.i18n("Name"),flexGrow:3},{prop:"cache_mode",name:this.i18n("Cache Mode"),flexGrow:2},{prop:"cache_min_evict_age",name:this.i18n("Min Evict Age"),flexGrow:2},{prop:"cache_min_flush_age",name:this.i18n("Min Flush Age"),flexGrow:2},{prop:"target_max_bytes",name:this.i18n("Target Max Bytes"),flexGrow:2},{prop:"target_max_objects",name:this.i18n("Target Max Objects"),flexGrow:2}]}return l.prototype.ngOnChanges=function(){var l=this;this.selection.hasSingleSelection&&this.poolService.getConfiguration(this.selection.first().pool_name).subscribe(function(n){l.selectedPoolConfiguration=n})},l.prototype.filterNonPoolData=function(l){return i.omit(l,["cdExecuting","cdIsBinary"])},l}()),se=u["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function de(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","-xyV8KCiz"]],null,null,null,Wn.b,Wn.a)),u["\u0275did"](3,638976,null,0,Zn.a,[Yn.a,In.DomSanitizer,Xn.a,un.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){var e=n.component;l(n,1,0,"Performance Details"),l(n,3,0,"ceph-pool-detail?var-pool_name="+e.selection.first().pool_name,"one","-xyV8KCiz")},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function ce(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Configuration"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-rbd-configuration-table",[],null,null,null,ue.b,ue.a)),u["\u0275did"](3,638976,null,0,te.a,[R.a,oe.a,s.a],{data:[0,"data"]},null)],function(l,n){var e=n.component;l(n,1,0,"Configuration"),l(n,3,0,e.selectedPoolConfiguration)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function pe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Cache Tiers Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,le.b,le.a)),u["\u0275did"](3,2867200,null,0,D.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoSave:[3,"autoSave"]},null)],function(l,n){var e=n.component;l(n,1,0,"Cache Tiers Details"),l(n,3,0,e.cacheTiers,e.cacheTierColumns,"flex",!1)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function fe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,11,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](1,180224,[[1,4],["tabsetChild",4]],0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](3,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](5,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,de)),u["\u0275did"](7,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,ce)),u["\u0275did"](9,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,0,1,null,pe)),u["\u0275did"](11,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,3,0,"Details"),l(n,5,0,e.filterNonPoolData(e.selection.first()),!1,!0),l(n,7,0,e.permissions.grafana.read),l(n,9,0,"replicated"===e.selection.first().type),l(n,11,0,e.selection.first().tiers.length>0)},function(l,n){l(n,0,0,u["\u0275nov"](n,1).clazz),l(n,2,0,u["\u0275nov"](n,3).id,u["\u0275nov"](n,3).active,u["\u0275nov"](n,3).addClass)})}function me(l){return u["\u0275vid"](0,[u["\u0275qud"](671088640,1,{tabsetChild:0}),(l()(),u["\u0275and"](16777216,null,null,1,null,fe)),u["\u0275did"](2,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){l(n,2,0,n.component.selection.hasSingleSelection)},null)}var ge=e("ufoC"),he=u["\u0275crt"]({encapsulation:0,styles:[[".pg-clean{color:#0b0}  .pg-working{color:#2b99a8}  .pg-warning{color:#ffc200}  .pg-unknown{color:red}"]],data:{}});function ve(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Kn.b,Kn.a)),u["\u0275did"](1,114688,null,0,$n.a,[],{status:[0,"status"],statusFor:[1,"statusFor"]},null)],function(l,n){l(n,1,0,n.context.$implicit.status,n.context.$implicit.statusFor)},null)}function be(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Jn.b,Jn.a)),u["\u0275did"](1,573440,null,0,Hn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(l,n){l(n,1,0,n.parent.context.row.stats.bytes_used.latest+n.parent.context.row.stats.max_avail.latest,n.parent.context.row.stats.bytes_used.latest)},null)}function Ce(l){return u["\u0275vid"](0,[(l()(),u["\u0275and"](16777216,null,null,1,null,be)),u["\u0275did"](1,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,null==n.context.row.stats?null:null==n.context.row.stats.max_avail?null:n.context.row.stats.max_avail.latest)},null)}function Re(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](1,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","z99hzWtmk"]],null,null,null,Wn.b,Wn.a)),u["\u0275did"](3,638976,null,0,Zn.a,[Yn.a,In.DomSanitizer,Xn.a,un.a,s.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(l,n){l(n,1,0,"Overall Performance"),l(n,3,0,"ceph-pools-overview?","two","z99hzWtmk")},function(l,n){l(n,0,0,u["\u0275nov"](n,1).id,u["\u0275nov"](n,1).active,u["\u0275nov"](n,1).addClass)})}function ye(l){return u["\u0275vid"](0,[u["\u0275qud"](402653184,1,{table:0}),u["\u0275qud"](402653184,2,{poolUsageTpl:0}),u["\u0275qud"](402653184,3,{poolConfigurationSourceTpl:0}),(l()(),u["\u0275eld"](3,0,null,null,14,"tabset",[],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](4,180224,null,0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](5,0,null,0,10,"tab",[["heading","Pools List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](6,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ve)),u["\u0275did"](8,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](9,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"updateSelection"]],function(l,n,e){var u=!0;return"updateSelection"===n&&(u=!1!==l.component.updateSelection(e)&&u),u},le.b,le.a)),u["\u0275did"](10,2867200,[[1,4],["table",4]],0,D.a,[u.NgZone,u.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{updateSelection:"updateSelection"}),(l()(),u["\u0275eld"](11,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,ne.b,ne.a)),u["\u0275did"](12,114688,null,0,ee.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),u["\u0275eld"](13,0,null,2,1,"cd-pool-details",[["cdTableDetail",""]],null,null,null,me,se)),u["\u0275did"](14,573440,null,0,re,[s.a,p.a],{selection:[0,"selection"],permissions:[1,"permissions"],cacheTiers:[2,"cacheTiers"]},null),(l()(),u["\u0275and"](0,[[2,2],["poolUsageTpl",2]],null,0,null,Ce)),(l()(),u["\u0275and"](16777216,null,0,1,null,Re)),u["\u0275did"](17,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,6,0,"Pools List"),l(n,8,0,e.viewCacheStatusList),l(n,10,0,e.pools,e.columns,"single"),l(n,12,0,e.permissions.pool,e.selection,e.tableActions),l(n,14,0,e.selection,e.permissions,e.selectionCacheTiers),l(n,17,0,e.permissions.grafana.read)},function(l,n){l(n,3,0,u["\u0275nov"](n,4).clazz),l(n,5,0,u["\u0275nov"](n,6).id,u["\u0275nov"](n,6).active,u["\u0275nov"](n,6).addClass)})}function Ie(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"cd-pool-list",[],null,null,null,ye,he)),u["\u0275prd"](131584,null,F.a,F.a,[ge.a,Yn.a]),u["\u0275prd"](256,null,q.a,L,[]),u["\u0275did"](3,114688,null,0,M,[p.a,y.a,C.a,F.a,Il.b,s.a,A.a,z.a,q.a,_.a,t.b],null,null)],function(l,n){l(n,3,0)},null)}var Ee=u["\u0275ccf"]("cd-pool-list",M,Ie,{},{},[]),Ve=e("EmSq"),Te=e("pYKc"),we=e("ppaS"),Se=e("BH9v"),Ne=e("rFfW"),_e=u["\u0275crt"]({encapsulation:0,styles:[[".crush-rule-steps[_ngcontent-%COMP%]{margin-top:10px}"]],data:{}});function De(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"h1",[["class","jumbotron"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-lg fa-pulse fa-spinner text-primary"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],null,null)}function ke(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Pe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The chosen Ceph pool name is already in use."]))],null,null)}function xe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function ze(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Fe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function qe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["At least one placement group is needed!"]))],null,null)}function Ae(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Your cluster can't handle this many PGs. Please recalculate the PG amount needed."]))],null,null)}function Oe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The current PGs settings were calculated for you, you should make sure the values suit your needs before submit."]))],null,null)}function Le(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit.rule_name)})}function Me(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](1,null,[" "," "]))],null,function(l,n){l(n,1,0,n.component.describeCrushStep(n.context.$implicit))})}function je(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,11,"span",[["class","help-block"],["id","crush-info-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,10,"tabset",[],[[2,"tab-container",null]],null,null,Qn.b,Qn.a)),u["\u0275did"](2,180224,null,0,kn.d,[kn.e,u.Renderer2],null,null),(l()(),u["\u0275eld"](3,0,null,0,3,"tab",[["class","crush-rule-info"],["heading","Crush rule"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](4,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](5,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](6,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null),(l()(),u["\u0275eld"](7,0,null,0,4,"tab",[["class","crush-rule-steps"],["heading","Crush steps"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),u["\u0275did"](8,212992,null,0,kn.b,[kn.d,u.ElementRef,u.Renderer2],{heading:[0,"heading"]},null),(l()(),u["\u0275eld"](9,0,null,null,2,"ol",[],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,Me)),u["\u0275did"](11,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,4,0,"Crush rule"),l(n,6,0,e.form.getValue("crushRule"),!1,!0),l(n,8,0,"Crush steps"),l(n,11,0,e.form.get("crushRule").value.steps)},function(l,n){l(n,1,0,u["\u0275nov"](n,2).clazz),l(n,3,0,u["\u0275nov"](n,4).id,u["\u0275nov"](n,4).active,u["\u0275nov"](n,4).addClass),l(n,7,0,u["\u0275nov"](n,8).id,u["\u0275nov"](n,8).active,u["\u0275nov"](n,8).addClass)})}function Be(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["The rule can't be used in the current cluster as it has to few OSDs to meet the minimum required OSD by this rule."]))],null,null)}function Ue(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","crushRule"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Crush ruleset"])),(l()(),u["\u0275eld"](5,0,null,null,22,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,17,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","crushRule"],["id","crushRule"],["name","crushSet"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](13,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](14,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](15,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select a crush rule --"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Le)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,4,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,3,"button",[["class","btn btn-default"],["id","crush-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.crushInfo=!t.data.crushInfo)&&u),u},null,null)),u["\u0275did"](21,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](22,{active:0}),(l()(),u["\u0275eld"](23,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-question-circle"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,je)),u["\u0275did"](25,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Be)),u["\u0275did"](27,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("crushRule",u["\u0275nov"](n.parent.parent,2)));l(n,1,0,"form-group",t),l(n,10,0,"crushRule"),l(n,14,0,null),l(n,15,0,null),l(n,18,0,e.current.rules);var o=l(n,22,0,e.data.crushInfo);l(n,21,0,"btn btn-default",o),l(n,25,0,e.data.crushInfo&&e.form.getValue("crushRule")),l(n,27,0,e.form.showError("crushRule",u["\u0275nov"](n.parent.parent,2),"tooFewOsds"))},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending)})}function Ge(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,5,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,4,"ul",[["class","list-inline"]],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](3,null,["Minimum: ",""])),(l()(),u["\u0275eld"](4,0,null,null,1,"li",[],null,null,null,null,null)),(l()(),u["\u0275ted"](5,null,["Maximum: ",""]))],null,function(l,n){var e=n.component;l(n,3,0,e.getMinSize()),l(n,5,0,e.getMaxSize())})}function Ke(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](1,null,["The size specified is out of range. A value from "," to "," is valid."]))],null,function(l,n){var e=n.component;l(n,1,0,e.getMinSize(),e.getMaxSize())})}function $e(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](1,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](2,{"has-error":0}),(l()(),u["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","size"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Replicated size"])),(l()(),u["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](8,0,null,null,6,"input",[["class","form-control"],["formControlName","size"],["id","size"],["name","size"],["type","number"]],[[8,"max",0],[8,"min",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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,9)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,9).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,9)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,9)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,10).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,10).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),t},null,null)),u["\u0275did"](9,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](10,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](12,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](14,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ge)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ke)),u["\u0275did"](18,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,2,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2)));l(n,1,0,"form-group",t),l(n,12,0,"size"),l(n,16,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2))),l(n,18,0,e.form.showError("size",u["\u0275nov"](n.parent.parent,2)))},function(l,n){var e=n.component;l(n,8,0,e.getMaxSize(),e.getMinSize(),u["\u0275nov"](n,14).ngClassUntouched,u["\u0275nov"](n,14).ngClassTouched,u["\u0275nov"](n,14).ngClassPristine,u["\u0275nov"](n,14).ngClassDirty,u["\u0275nov"](n,14).ngClassValid,u["\u0275nov"](n,14).ngClassInvalid,u["\u0275nov"](n,14).ngClassPending)})}function Je(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function He(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- No erasure code profile available --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function We(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select an erasure code profile --"]))],function(l,n){l(n,1,0,null),l(n,2,0,null)},null)}function Ze(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit.name)})}function Ye(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,2,"span",[["class","help-block"],["id","ecp-info-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"cd-table-key-value",[],null,null,null,ie.b,ie.a)),u["\u0275did"](2,638976,null,0,ae.a,[dn.a],{data:[0,"data"],autoReload:[1,"autoReload"],renderObjects:[2,"renderObjects"]},null)],function(l,n){l(n,2,0,n.component.form.getValue("erasureProfile"),!1,!0)},null)}function Xe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,29,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","erasureProfile"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Erasure code profile"])),(l()(),u["\u0275eld"](3,0,null,null,26,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,23,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,13,"select",[["class","form-control"],["formControlName","erasureProfile"],["id","erasureProfile"],["name","erasureProfile"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,6).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,6).onTouched()&&t),t},null,null)),u["\u0275did"](6,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](8,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](10,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Je)),u["\u0275did"](12,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,He)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,We)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ze)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,8,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,3,"button",[["class","btn btn-default"],["id","ecp-info-button"],["type","button"]],null,[[null,"click"]],function(l,n,e){var u=!0,t=l.component;return"click"===n&&(u=0!=(t.data.erasureInfo=!t.data.erasureInfo)&&u),u},null,null)),u["\u0275did"](21,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](22,{active:0}),(l()(),u["\u0275eld"](23,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-question-circle"]],null,null,null,null,null)),(l()(),u["\u0275eld"](24,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.addErasureCodeProfile()&&u),u},null,null)),(l()(),u["\u0275eld"](25,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-plus"]],null,null,null,null,null)),(l()(),u["\u0275eld"](26,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],[[8,"disabled",0]],[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==l.component.deleteErasureCodeProfile()&&u),u},null,null)),(l()(),u["\u0275eld"](27,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-trash-o"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,Ye)),u["\u0275did"](29,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,8,0,"erasureProfile"),l(n,12,0,!e.ecProfiles),l(n,14,0,e.ecProfiles&&0===e.ecProfiles.length),l(n,16,0,e.ecProfiles&&e.ecProfiles.length>0),l(n,18,0,e.ecProfiles);var u=l(n,22,0,e.data.erasureInfo);l(n,21,0,"btn btn-default",u),l(n,29,0,e.data.erasureInfo&&e.form.getValue("erasureProfile"))},function(l,n){var e=n.component;l(n,5,0,u["\u0275nov"](n,10).ngClassUntouched,u["\u0275nov"](n,10).ngClassTouched,u["\u0275nov"](n,10).ngClassPristine,u["\u0275nov"](n,10).ngClassDirty,u["\u0275nov"](n,10).ngClassValid,u["\u0275nov"](n,10).ngClassInvalid,u["\u0275nov"](n,10).ngClassPending),l(n,24,0,e.editing),l(n,26,0,e.editing||e.ecProfiles.length<1)})}function Qe(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Flags"])),(l()(),u["\u0275eld"](3,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](4,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,5,"input",[["formControlName","ecOverwrites"],["id","ec-overwrites"],["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]],[[null,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,7).onChange(e.target.checked)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,7).onTouched()&&t),t},null,null)),u["\u0275did"](7,16384,null,0,o.c,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.c]),u["\u0275did"](9,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](11,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](12,0,null,null,1,"label",[["for","ec-overwrites"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["EC Overwrites"]))],function(l,n){l(n,9,0,"ecOverwrites")},function(l,n){l(n,6,0,u["\u0275nov"](n,11).ngClassUntouched,u["\u0275nov"](n,11).ngClassTouched,u["\u0275nov"](n,11).ngClassPristine,u["\u0275nov"](n,11).ngClassDirty,u["\u0275nov"](n,11).ngClassValid,u["\u0275nov"](n,11).ngClassInvalid,u["\u0275nov"](n,11).ngClassPending)})}function lu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,36,"div",[],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](2,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](3,{"has-error":0}),(l()(),u["\u0275eld"](4,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","pgNum"]],null,null,null,null,null)),(l()(),u["\u0275eld"](5,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Placement groups"])),(l()(),u["\u0275eld"](7,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](8,0,null,null,20,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](9,0,null,null,8,"input",[["class","form-control"],["formControlName","pgNum"],["id","pgNum"],["min","1"],["name","pgNum"],["required",""],["type","number"]],[[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]],[[null,"focus"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0,o=l.component;return"input"===n&&(t=!1!==u["\u0275nov"](l,10)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,10).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,10)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),"focus"===n&&(t=0!=(o.externalPgChange=!1)&&t),"blur"===n&&(t=!1!==o.alignPgs()&&t),t},null,null)),u["\u0275did"](10,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](11,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275did"](12,16384,null,0,o.y,[],{required:[0,"required"]},null),u["\u0275prd"](1024,null,o.o,function(l){return[l]},[o.y]),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](15,671744,null,0,o.j,[[3,o.d],[6,o.o],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](17,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,Fe)),u["\u0275did"](19,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,qe)),u["\u0275did"](21,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ae)),u["\u0275did"](23,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](24,0,null,null,2,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275eld"](25,0,null,null,1,"a",[["href","http://ceph.com/pgcalc"],["target","_blank"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Calculation help"])),(l()(),u["\u0275and"](16777216,null,null,1,null,Oe)),u["\u0275did"](28,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Ue)),u["\u0275did"](30,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,$e)),u["\u0275did"](32,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Xe)),u["\u0275did"](34,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Qe)),u["\u0275did"](36,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,3,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2)));l(n,2,0,"form-group",t),l(n,12,0,""),l(n,15,0,"pgNum"),l(n,19,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"required")),l(n,21,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"min")),l(n,23,0,e.form.showError("pgNum",u["\u0275nov"](n.parent,2),"34")),l(n,28,0,e.externalPgChange),l(n,30,0,e.form.getValue("poolType")&&e.current.rules.length>0),l(n,32,0,"replicated"===e.form.getValue("poolType")),l(n,34,0,"erasure"===e.form.getValue("poolType")),l(n,36,0,e.info.is_all_bluestore&&"erasure"===e.form.getValue("poolType"))},function(l,n){l(n,9,0,u["\u0275nov"](n,12).required?"":null,u["\u0275nov"](n,17).ngClassUntouched,u["\u0275nov"](n,17).ngClassTouched,u["\u0275nov"](n,17).ngClassPristine,u["\u0275nov"](n,17).ngClassDirty,u["\u0275nov"](n,17).ngClassValid,u["\u0275nov"](n,17).ngClassInvalid,u["\u0275nov"](n,17).ngClassPending)})}function nu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function eu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["Loading..."]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function uu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- No erasure compression algorithm available --"]))],function(l,n){l(n,1,0,""),l(n,2,0,"")},null)}function tu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),u["\u0275did"](1,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{value:[0,"value"]},null),u["\u0275did"](2,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{value:[0,"value"]},null),(l()(),u["\u0275ted"](3,null,[" "," "]))],function(l,n){l(n,1,0,n.context.$implicit),l(n,2,0,n.context.$implicit)},function(l,n){l(n,3,0,n.context.$implicit)})}function ou(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than 0"]))],null,null)}function iu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be less than the maximum blob size"]))],null,null)}function au(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than 0"]))],null,null)}function ru(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be greater than the minimum blob size"]))],null,null)}function su(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Value should be between 0.0 and 1.0"]))],null,null)}function du(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,67,"div",[],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](2,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](3,{"has-error":0}),(l()(),u["\u0275eld"](4,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","algorithm"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Algorithm"])),(l()(),u["\u0275eld"](6,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,11,"select",[["class","form-control"],["formControlName","algorithm"],["id","algorithm"],["name","algorithm"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,8).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,8).onTouched()&&t),t},null,null)),u["\u0275did"](8,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](10,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](12,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,eu)),u["\u0275did"](14,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,uu)),u["\u0275did"](16,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,tu)),u["\u0275did"](18,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275eld"](19,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](20,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](21,{"has-error":0}),(l()(),u["\u0275eld"](22,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","minBlobSize"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Minimum blob size"])),(l()(),u["\u0275eld"](24,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](25,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","minBlobSize"],["id","minBlobSize"],["min","0"],["name","minBlobSize"],["placeholder","e.g., 128KiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,26)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,26).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,26)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,30).onBlur(e.target.value)&&t),t},null,null)),u["\u0275did"](26,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](28,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](30,81920,null,0,Ve.a,[u.ElementRef,o.q,b.a,R.a],{defaultUnit:[0,"defaultUnit"]},null),u["\u0275did"](31,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ou)),u["\u0275did"](33,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,iu)),u["\u0275did"](35,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](36,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](37,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](38,{"has-error":0}),(l()(),u["\u0275eld"](39,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","maxBlobSize"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Maximum blob size"])),(l()(),u["\u0275eld"](41,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](42,0,null,null,6,"input",[["cdDimlessBinary",""],["class","form-control"],["defaultUnit","KiB"],["formControlName","maxBlobSize"],["id","maxBlobSize"],["min","0"],["placeholder","e.g., 512KiB"],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,43)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,43).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,43)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,43)._compositionEnd(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,47).onBlur(e.target.value)&&t),t},null,null)),u["\u0275did"](43,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](45,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](47,81920,null,0,Ve.a,[u.ElementRef,o.q,b.a,R.a],{defaultUnit:[0,"defaultUnit"]},null),u["\u0275did"](48,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,au)),u["\u0275did"](50,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ru)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](53,0,null,null,14,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](54,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](55,{"has-error":0}),(l()(),u["\u0275eld"](56,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","ratio"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Ratio"])),(l()(),u["\u0275eld"](58,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](59,0,null,null,6,"input",[["class","form-control"],["formControlName","ratio"],["id","ratio"],["max","1"],["min","0"],["name","ratio"],["placeholder","Compression ratio"],["step","0.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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,60)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,60).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,60)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,60)._compositionEnd(e.target.value)&&t),"change"===n&&(t=!1!==u["\u0275nov"](l,61).onChange(e.target.value)&&t),"input"===n&&(t=!1!==u["\u0275nov"](l,61).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,61).onTouched()&&t),t},null,null)),u["\u0275did"](60,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275did"](61,16384,null,0,o.C,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l,n){return[l,n]},[o.e,o.C]),u["\u0275did"](63,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](65,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,su)),u["\u0275did"](67,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component,t=l(n,3,0,e.form.showError("algorithm",u["\u0275nov"](n.parent.parent,2)));l(n,2,0,"form-group",t),l(n,10,0,"algorithm"),l(n,14,0,!e.info.compression_algorithms),l(n,16,0,e.info.compression_algorithms&&0===e.info.compression_algorithms.length),l(n,18,0,e.info.compression_algorithms);var o=l(n,21,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2)));l(n,20,0,"form-group",o),l(n,28,0,"minBlobSize"),l(n,30,0,"KiB"),l(n,33,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2),"min")),l(n,35,0,e.form.showError("minBlobSize",u["\u0275nov"](n.parent.parent,2),"maximum"));var i=l(n,38,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2)));l(n,37,0,"form-group",i),l(n,45,0,"maxBlobSize"),l(n,47,0,"KiB"),l(n,50,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2),"min")),l(n,52,0,e.form.showError("maxBlobSize",u["\u0275nov"](n.parent.parent,2),"minimum"));var a=l(n,55,0,e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2)));l(n,54,0,"form-group",a),l(n,63,0,"ratio"),l(n,67,0,e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2),"min")||e.form.showError("ratio",u["\u0275nov"](n.parent.parent,2),"max"))},function(l,n){l(n,7,0,u["\u0275nov"](n,12).ngClassUntouched,u["\u0275nov"](n,12).ngClassTouched,u["\u0275nov"](n,12).ngClassPristine,u["\u0275nov"](n,12).ngClassDirty,u["\u0275nov"](n,12).ngClassValid,u["\u0275nov"](n,12).ngClassInvalid,u["\u0275nov"](n,12).ngClassPending),l(n,25,0,u["\u0275nov"](n,31).ngClassUntouched,u["\u0275nov"](n,31).ngClassTouched,u["\u0275nov"](n,31).ngClassPristine,u["\u0275nov"](n,31).ngClassDirty,u["\u0275nov"](n,31).ngClassValid,u["\u0275nov"](n,31).ngClassInvalid,u["\u0275nov"](n,31).ngClassPending),l(n,42,0,u["\u0275nov"](n,48).ngClassUntouched,u["\u0275nov"](n,48).ngClassTouched,u["\u0275nov"](n,48).ngClassPristine,u["\u0275nov"](n,48).ngClassDirty,u["\u0275nov"](n,48).ngClassValid,u["\u0275nov"](n,48).ngClassInvalid,u["\u0275nov"](n,48).ngClassPending),l(n,59,0,u["\u0275nov"](n,65).ngClassUntouched,u["\u0275nov"](n,65).ngClassTouched,u["\u0275nov"](n,65).ngClassPristine,u["\u0275nov"](n,65).ngClassDirty,u["\u0275nov"](n,65).ngClassValid,u["\u0275nov"](n,65).ngClassInvalid,u["\u0275nov"](n,65).ngClassPending)})}function cu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,19,"div",[["formGroupName","compression"]],[[2,"ng-untouched",null],[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)),u["\u0275did"](1,212992,null,0,o.m,[[3,o.d],[8,null],[8,null]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.d,null,[o.m]),u["\u0275did"](3,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](4,0,null,null,1,"legend",[],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Compression"])),(l()(),u["\u0275eld"](6,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","mode"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Mode"])),(l()(),u["\u0275eld"](9,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](10,0,null,null,7,"select",[["class","form-control"],["formControlName","mode"],["id","mode"],["name","mode"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,11).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,11).onTouched()&&t),t},null,null)),u["\u0275did"](11,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](13,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](15,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,nu)),u["\u0275did"](17,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,du)),u["\u0275did"](19,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,1,0,"compression"),l(n,13,0,"mode"),l(n,17,0,e.info.compression_modes),l(n,19,0,e.hasCompressionEnabled())},function(l,n){l(n,0,0,u["\u0275nov"](n,3).ngClassUntouched,u["\u0275nov"](n,3).ngClassTouched,u["\u0275nov"](n,3).ngClassPristine,u["\u0275nov"](n,3).ngClassDirty,u["\u0275nov"](n,3).ngClassValid,u["\u0275nov"](n,3).ngClassInvalid,u["\u0275nov"](n,3).ngClassPending),l(n,10,0,u["\u0275nov"](n,15).ngClassUntouched,u["\u0275nov"](n,15).ngClassTouched,u["\u0275nov"](n,15).ngClassPristine,u["\u0275nov"](n,15).ngClassDirty,u["\u0275nov"](n,15).ngClassValid,u["\u0275nov"](n,15).ngClassInvalid,u["\u0275nov"](n,15).ngClassPending)})}function pu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,5,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),u["\u0275eld"](2,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["It's not possible to create an RBD pool with '/' in the name."])),(l()(),u["\u0275eld"](4,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Please change the name or remove 'rbd' from the applications list."]))],null,null)}function fu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,78,"form",[["class","form-horizontal"],["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(l,n,e){var t=!0;return"submit"===n&&(t=!1!==u["\u0275nov"](l,2).onSubmit(e)&&t),"reset"===n&&(t=!1!==u["\u0275nov"](l,2).onReset()&&t),t},null,null)),u["\u0275did"](1,16384,null,0,o.D,[],null,null),u["\u0275did"](2,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),u["\u0275prd"](2048,null,o.d,null,[o.l]),u["\u0275did"](4,16384,null,0,o.s,[[4,o.d]],null,null),(l()(),u["\u0275eld"](5,0,null,null,73,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),u["\u0275eld"](6,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),u["\u0275eld"](7,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),u["\u0275ted"](8,null,["","",""])),u["\u0275ppd"](9,1),u["\u0275ppd"](10,1),(l()(),u["\u0275eld"](11,0,null,null,58,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),u["\u0275eld"](12,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](13,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](14,{"has-error":0}),(l()(),u["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),u["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Name"])),(l()(),u["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](19,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](20,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,e){var t=!0;return"input"===n&&(t=!1!==u["\u0275nov"](l,22)._handleInput(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,22).onTouched()&&t),"compositionstart"===n&&(t=!1!==u["\u0275nov"](l,22)._compositionStart()&&t),"compositionend"===n&&(t=!1!==u["\u0275nov"](l,22)._compositionEnd(e.target.value)&&t),t},null,null)),u["\u0275did"](21,4210688,null,0,vl.a,[u.ElementRef],null,null),u["\u0275did"](22,16384,null,0,o.e,[u.Renderer2,u.ElementRef,[2,o.b]],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.e]),u["\u0275did"](24,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](26,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275and"](16777216,null,null,1,null,ke)),u["\u0275did"](28,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,Pe)),u["\u0275did"](30,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](31,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),u["\u0275did"](32,278528,null,0,fl.NgClass,[u.IterableDiffers,u.KeyValueDiffers,u.ElementRef,u.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),u["\u0275pod"](33,{"has-error":0}),(l()(),u["\u0275eld"](34,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","poolType"]],null,null,null,null,null)),(l()(),u["\u0275eld"](35,0,null,null,1,null,null,null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Pool type"])),(l()(),u["\u0275eld"](37,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(l()(),u["\u0275eld"](38,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](39,0,null,null,11,"select",[["class","form-control"],["formControlName","poolType"],["id","poolType"],["name","poolType"]],[[2,"ng-untouched",null],[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,"change"],[null,"blur"]],function(l,n,e){var t=!0;return"change"===n&&(t=!1!==u["\u0275nov"](l,40).onChange(e.target.value)&&t),"blur"===n&&(t=!1!==u["\u0275nov"](l,40).onTouched()&&t),t},null,null)),u["\u0275did"](40,16384,null,0,o.z,[u.Renderer2,u.ElementRef],null,null),u["\u0275prd"](1024,null,o.p,function(l){return[l]},[o.z]),u["\u0275did"](42,671744,null,0,o.j,[[3,o.d],[8,null],[8,null],[6,o.p],[2,o.F]],{name:[0,"name"]},null),u["\u0275prd"](2048,null,o.q,null,[o.j]),u["\u0275did"](44,16384,null,0,o.r,[[4,o.q]],null,null),(l()(),u["\u0275eld"](45,0,null,null,3,"option",[["ngValue",""]],null,null,null,null,null)),u["\u0275did"](46,147456,null,0,o.v,[u.ElementRef,u.Renderer2,[2,o.z]],{ngValue:[0,"ngValue"]},null),u["\u0275did"](47,147456,null,0,o.G,[u.ElementRef,u.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(l()(),u["\u0275ted"](-1,null,["-- Select a pool type --"])),(l()(),u["\u0275and"](16777216,null,null,1,null,xe)),u["\u0275did"](50,278528,null,0,fl.NgForOf,[u.ViewContainerRef,u.TemplateRef,u.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,ze)),u["\u0275did"](52,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,lu)),u["\u0275did"](54,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](55,0,null,null,6,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),u["\u0275eld"](56,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","applications"]],null,null,null,null,null)),(l()(),u["\u0275ted"](-1,null,["Applications"])),(l()(),u["\u0275eld"](58,0,null,null,3,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),u["\u0275eld"](59,0,null,null,2,"span",[["class","form-control no-border full-height"]],null,null,null,null,null)),(l()(),u["\u0275eld"](60,0,null,null,1,"cd-select-badges",[["id","applications"]],null,[[null,"selection"]],function(l,n,e){var u=!0;return"selection"===n&&(u=!1!==l.component.appSelection()&&u),u},Te.b,Te.a)),u["\u0275did"](61,49152,null,0,we.a,[s.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"],selectionLimit:[3,"selectionLimit"],customBadges:[4,"customBadges"],customBadgeValidators:[5,"customBadgeValidators"]},{selection:"selection"}),(l()(),u["\u0275and"](16777216,null,null,1,null,cu)),u["\u0275did"](63,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](64,0,null,null,2,"div",[],[[8,"hidden",0]],null,null,null,null)),(l()(),u["\u0275eld"](65,0,null,null,1,"cd-rbd-configuration-form",[],null,[[null,"changes"]],function(l,n,e){var u=!0;return"changes"===n&&(u=!1!==(l.component.currentConfigurationValues=e())&&u),u},Se.b,Se.a)),u["\u0275did"](66,114688,null,0,Ne.a,[R.a,oe.a],{form:[0,"form"],initializeData:[1,"initializeData"]},{changes:"changes"}),(l()(),u["\u0275eld"](67,0,null,null,2,"div",[["class","form-group has-error"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,pu)),u["\u0275did"](69,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275eld"](70,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),u["\u0275eld"](71,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),u["\u0275eld"](72,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,e){var u=!0;return"submitAction"===n&&(u=!1!==l.component.submit()&&u),u},bl.b,bl.a)),u["\u0275did"](73,114688,null,0,Cl.a,[u.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),u["\u0275ted"](74,0,["","",""])),u["\u0275ppd"](75,1),u["\u0275ppd"](76,1),(l()(),u["\u0275eld"](77,0,null,null,1,"cd-back-button",[],null,null,null,Rl.b,Rl.a)),u["\u0275did"](78,49152,null,0,yl.a,[fl.Location,t.b],null,null)],function(l,n){var e=n.component;l(n,2,0,e.form);var t=l(n,14,0,e.form.showError("name",u["\u0275nov"](n,2)));l(n,13,0,"form-group",t),l(n,24,0,"name"),l(n,28,0,e.form.showError("name",u["\u0275nov"](n,2),"required")),l(n,30,0,e.form.showError("name",u["\u0275nov"](n,2),"uniqueName"));var o=l(n,33,0,e.form.showError("poolType",u["\u0275nov"](n,2)));l(n,32,0,"form-group",o),l(n,42,0,"poolType"),l(n,46,0,""),l(n,47,0,""),l(n,50,0,e.data.poolTypes),l(n,52,0,e.form.showError("poolType",u["\u0275nov"](n,2),"required")),l(n,54,0,e.form.getValue("poolType")),l(n,61,0,e.data.applications.selected,e.data.applications.available,e.data.applications.messages,4,!0,e.data.applications.validators),l(n,63,0,e.info.is_all_bluestore),l(n,66,0,e.form,e.initializeConfigData),l(n,69,0,e.form.hasError("rbdPool")),l(n,73,0,u["\u0275nov"](n,2),"button")},function(l,n){var e=n.component;l(n,0,0,u["\u0275nov"](n,4).ngClassUntouched,u["\u0275nov"](n,4).ngClassTouched,u["\u0275nov"](n,4).ngClassPristine,u["\u0275nov"](n,4).ngClassDirty,u["\u0275nov"](n,4).ngClassValid,u["\u0275nov"](n,4).ngClassInvalid,u["\u0275nov"](n,4).ngClassPending);var t=u["\u0275unv"](n,8,0,l(n,9,0,u["\u0275nov"](n.parent,0),e.action)),o=u["\u0275unv"](n,8,1,l(n,10,0,u["\u0275nov"](n.parent,1),e.resource));l(n,8,0,t,o),l(n,20,0,u["\u0275nov"](n,26).ngClassUntouched,u["\u0275nov"](n,26).ngClassTouched,u["\u0275nov"](n,26).ngClassPristine,u["\u0275nov"](n,26).ngClassDirty,u["\u0275nov"](n,26).ngClassValid,u["\u0275nov"](n,26).ngClassInvalid,u["\u0275nov"](n,26).ngClassPending),l(n,39,0,u["\u0275nov"](n,44).ngClassUntouched,u["\u0275nov"](n,44).ngClassTouched,u["\u0275nov"](n,44).ngClassPristine,u["\u0275nov"](n,44).ngClassDirty,u["\u0275nov"](n,44).ngClassValid,u["\u0275nov"](n,44).ngClassInvalid,u["\u0275nov"](n,44).ngClassPending),l(n,64,0,"replicated"!==e.form.get("poolType").value||-1===e.data.applications.selected.indexOf("rbd"));var i=u["\u0275unv"](n,74,0,l(n,75,0,u["\u0275nov"](n.parent,0),e.action)),a=u["\u0275unv"](n,74,1,l(n,76,0,u["\u0275nov"](n.parent,1),e.resource));l(n,74,0,i,a)})}function mu(l){return u["\u0275vid"](0,[u["\u0275pid"](0,fl.TitleCasePipe,[]),u["\u0275pid"](0,hl.a,[]),(l()(),u["\u0275eld"](2,0,null,null,4,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),u["\u0275and"](16777216,null,null,1,null,De)),u["\u0275did"](4,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),u["\u0275and"](16777216,null,null,1,null,fu)),u["\u0275did"](6,16384,null,0,fl.NgIf,[u.ViewContainerRef,u.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var e=n.component;l(n,4,0,!(e.info&&e.ecProfiles)),l(n,6,0,e.info&&e.ecProfiles)},null)}function gu(l){return u["\u0275vid"](0,[(l()(),u["\u0275eld"](0,0,null,null,1,"cd-pool-form",[],null,null,null,mu,_e)),u["\u0275did"](1,114688,null,0,N,[b.a,Sn.a,Sn.l,Il.b,p.a,C.a,R.a,Il.b,y.a,c,s.a,t.b],null,null)],function(l,n){l(n,1,0)},null)}var hu=u["\u0275ccf"]("cd-pool-form",N,gu,{},{},[]);e.d(n,"PoolModuleNgFactory",function(){return vu}),e.d(n,"RoutedPoolModuleNgFactory",function(){return bu});var vu=u["\u0275cmf"](j,[],function(l){return u["\u0275mod"]([u["\u0275mpd"](512,u.ComponentFactoryResolver,u["\u0275CodegenComponentFactoryResolver"],[[8,[K.a,$.a,J.a,H.a,H.b,W.a,Z.a,Y.a,X.a,Q.a,ll.a,nl.a,el.a,ul.a,ul.b,ul.c,tl.a,ol.a,il.a,al.a,rl.a,sl.a,dl.a,cl.a,pl.a,ln]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["\u0275mpd"](4608,fl.NgLocalization,fl.NgLocaleLocalization,[u.LOCALE_ID,[2,fl["\u0275angular_packages_common_common_a"]]]),u["\u0275mpd"](4608,nn.a,nn.a,[s.a]),u["\u0275mpd"](4608,fl.DatePipe,fl.DatePipe,[u.LOCALE_ID]),u["\u0275mpd"](4608,en.a,en.a,[]),u["\u0275mpd"](4608,un.a,un.a,[]),u["\u0275mpd"](4608,R.a,R.a,[]),u["\u0275mpd"](4608,b.a,b.a,[R.a]),u["\u0275mpd"](4608,tn.a,tn.a,[R.a]),u["\u0275mpd"](4608,z.a,z.a,[R.a]),u["\u0275mpd"](4608,on.a,on.a,[]),u["\u0275mpd"](4608,an.a,an.a,[]),u["\u0275mpd"](4608,rn.a,rn.a,[]),u["\u0275mpd"](4608,sn.a,sn.a,[]),u["\u0275mpd"](4608,dn.a,dn.a,[fl.DatePipe]),u["\u0275mpd"](4608,cn.a,cn.a,[]),u["\u0275mpd"](4608,pn.a,pn.a,[]),u["\u0275mpd"](4608,fn.a,fn.a,[]),u["\u0275mpd"](4608,mn.a,mn.a,[]),u["\u0275mpd"](4608,gn.a,gn.a,[]),u["\u0275mpd"](4608,hl.a,hl.a,[]),u["\u0275mpd"](4608,o.E,o.E,[]),u["\u0275mpd"](4608,o.h,o.h,[]),u["\u0275mpd"](4608,hn.b,hn.b,[]),u["\u0275mpd"](4608,vn.a,vn.a,[]),u["\u0275mpd"](4608,bn.a,bn.a,[]),u["\u0275mpd"](4608,Cn.a,Cn.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,bn.a,u.ApplicationRef]),u["\u0275mpd"](4608,Rn.a,Rn.a,[]),u["\u0275mpd"](4608,Il.b,Il.b,[u.RendererFactory2,Cn.a]),u["\u0275mpd"](4608,yn.ScrollbarHelper,yn.ScrollbarHelper,[In.DOCUMENT]),u["\u0275mpd"](4608,En.DimensionsHelper,En.DimensionsHelper,[]),u["\u0275mpd"](4608,Vn.ColumnChangesService,Vn.ColumnChangesService,[]),u["\u0275mpd"](4608,Tn.f,Tn.f,[]),u["\u0275mpd"](4608,C.a,C.a,[]),u["\u0275mpd"](4608,wn.a,wn.a,[Sn.l,C.a]),u["\u0275mpd"](4608,Nn.NodeDraggableService,Nn.NodeDraggableService,[]),u["\u0275mpd"](4608,_n.NodeMenuService,_n.NodeMenuService,[]),u["\u0275mpd"](4608,Dn.TreeService,Dn.TreeService,[Nn.NodeDraggableService]),u["\u0275mpd"](4608,kn.e,kn.e,[]),u["\u0275mpd"](4608,Pn.c,Pn.c,[]),u["\u0275mpd"](4608,xn.w,xn.w,[]),u["\u0275mpd"](4608,xn.y,xn.y,[]),u["\u0275mpd"](4608,xn.a,xn.a,[]),u["\u0275mpd"](4608,xn.e,xn.e,[]),u["\u0275mpd"](4608,xn.c,xn.c,[]),u["\u0275mpd"](4608,xn.f,xn.f,[]),u["\u0275mpd"](4608,xn.x,xn.x,[xn.y,xn.f]),u["\u0275mpd"](1073742336,fl.CommonModule,fl.CommonModule,[]),u["\u0275mpd"](1073742336,zn.a,zn.a,[]),u["\u0275mpd"](1073742336,kn.c,kn.c,[]),u["\u0275mpd"](1073742336,vn.d,vn.d,[]),u["\u0275mpd"](1073742336,Fn.a,Fn.a,[]),u["\u0275mpd"](1073742336,o.B,o.B,[]),u["\u0275mpd"](1073742336,o.n,o.n,[]),u["\u0275mpd"](1073742336,o.x,o.x,[]),u["\u0275mpd"](1073742336,hn.c,hn.c,[]),u["\u0275mpd"](1073742336,Rn.d,Rn.d,[]),u["\u0275mpd"](1073742336,qn.ChartsModule,qn.ChartsModule,[]),u["\u0275mpd"](1073742336,Il.e,Il.e,[]),u["\u0275mpd"](1073742336,An.a,An.a,[]),u["\u0275mpd"](1073742336,Tn.e,Tn.e,[]),u["\u0275mpd"](1073742336,On.a,On.a,[]),u["\u0275mpd"](1073742336,Ln.NgxDatatableModule,Ln.NgxDatatableModule,[]),u["\u0275mpd"](1073742336,Sn.p,Sn.p,[[2,Sn.v],[2,Sn.l]]),u["\u0275mpd"](1073742336,Mn.a,Mn.a,[]),u["\u0275mpd"](1073742336,d.a,d.a,[]),u["\u0275mpd"](1073742336,jn.a,jn.a,[]),u["\u0275mpd"](1073742336,Pn.d,Pn.d,[]),u["\u0275mpd"](1073742336,Bn.TreeModule,Bn.TreeModule,[]),u["\u0275mpd"](1073742336,Un.a,Un.a,[]),u["\u0275mpd"](1073742336,xn.d,xn.d,[]),u["\u0275mpd"](1073742336,Gn.a,Gn.a,[]),u["\u0275mpd"](1073742336,j,j,[]),u["\u0275mpd"](256,u.LOCALE_ID,"en-US",[]),u["\u0275mpd"](256,Tn.a,{autoClose:!0,insideClick:!1},[]),u["\u0275mpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])}),bu=u["\u0275cmf"](G,[],function(l){return u["\u0275mod"]([u["\u0275mpd"](512,u.ComponentFactoryResolver,u["\u0275CodegenComponentFactoryResolver"],[[8,[K.a,$.a,J.a,H.a,H.b,W.a,Z.a,Y.a,X.a,Q.a,ll.a,nl.a,el.a,ul.a,ul.b,ul.c,tl.a,ol.a,il.a,al.a,rl.a,sl.a,dl.a,cl.a,pl.a,ln,Ee,hu]],[3,u.ComponentFactoryResolver],u.NgModuleRef]),u["\u0275mpd"](4608,fl.NgLocalization,fl.NgLocaleLocalization,[u.LOCALE_ID,[2,fl["\u0275angular_packages_common_common_a"]]]),u["\u0275mpd"](4608,nn.a,nn.a,[s.a]),u["\u0275mpd"](4608,fl.DatePipe,fl.DatePipe,[u.LOCALE_ID]),u["\u0275mpd"](4608,en.a,en.a,[]),u["\u0275mpd"](4608,un.a,un.a,[]),u["\u0275mpd"](4608,R.a,R.a,[]),u["\u0275mpd"](4608,b.a,b.a,[R.a]),u["\u0275mpd"](4608,tn.a,tn.a,[R.a]),u["\u0275mpd"](4608,z.a,z.a,[R.a]),u["\u0275mpd"](4608,on.a,on.a,[]),u["\u0275mpd"](4608,an.a,an.a,[]),u["\u0275mpd"](4608,rn.a,rn.a,[]),u["\u0275mpd"](4608,sn.a,sn.a,[]),u["\u0275mpd"](4608,dn.a,dn.a,[fl.DatePipe]),u["\u0275mpd"](4608,cn.a,cn.a,[]),u["\u0275mpd"](4608,pn.a,pn.a,[]),u["\u0275mpd"](4608,fn.a,fn.a,[]),u["\u0275mpd"](4608,mn.a,mn.a,[]),u["\u0275mpd"](4608,gn.a,gn.a,[]),u["\u0275mpd"](4608,hl.a,hl.a,[]),u["\u0275mpd"](4608,o.E,o.E,[]),u["\u0275mpd"](4608,o.h,o.h,[]),u["\u0275mpd"](4608,hn.b,hn.b,[]),u["\u0275mpd"](4608,vn.a,vn.a,[]),u["\u0275mpd"](4608,bn.a,bn.a,[]),u["\u0275mpd"](4608,Cn.a,Cn.a,[u.ComponentFactoryResolver,u.NgZone,u.Injector,bn.a,u.ApplicationRef]),u["\u0275mpd"](4608,Rn.a,Rn.a,[]),u["\u0275mpd"](4608,Il.b,Il.b,[u.RendererFactory2,Cn.a]),u["\u0275mpd"](4608,yn.ScrollbarHelper,yn.ScrollbarHelper,[In.DOCUMENT]),u["\u0275mpd"](4608,En.DimensionsHelper,En.DimensionsHelper,[]),u["\u0275mpd"](4608,Vn.ColumnChangesService,Vn.ColumnChangesService,[]),u["\u0275mpd"](4608,Tn.f,Tn.f,[]),u["\u0275mpd"](4608,C.a,C.a,[]),u["\u0275mpd"](4608,wn.a,wn.a,[Sn.l,C.a]),u["\u0275mpd"](4608,Nn.NodeDraggableService,Nn.NodeDraggableService,[]),u["\u0275mpd"](4608,_n.NodeMenuService,_n.NodeMenuService,[]),u["\u0275mpd"](4608,Dn.TreeService,Dn.TreeService,[Nn.NodeDraggableService]),u["\u0275mpd"](4608,kn.e,kn.e,[]),u["\u0275mpd"](4608,Pn.c,Pn.c,[]),u["\u0275mpd"](4608,xn.w,xn.w,[]),u["\u0275mpd"](4608,xn.y,xn.y,[]),u["\u0275mpd"](4608,xn.a,xn.a,[]),u["\u0275mpd"](4608,xn.e,xn.e,[]),u["\u0275mpd"](4608,xn.c,xn.c,[]),u["\u0275mpd"](4608,xn.f,xn.f,[]),u["\u0275mpd"](4608,xn.x,xn.x,[xn.y,xn.f]),u["\u0275mpd"](1073742336,fl.CommonModule,fl.CommonModule,[]),u["\u0275mpd"](1073742336,zn.a,zn.a,[]),u["\u0275mpd"](1073742336,kn.c,kn.c,[]),u["\u0275mpd"](1073742336,vn.d,vn.d,[]),u["\u0275mpd"](1073742336,Fn.a,Fn.a,[]),u["\u0275mpd"](1073742336,o.B,o.B,[]),u["\u0275mpd"](1073742336,o.n,o.n,[]),u["\u0275mpd"](1073742336,o.x,o.x,[]),u["\u0275mpd"](1073742336,hn.c,hn.c,[]),u["\u0275mpd"](1073742336,Rn.d,Rn.d,[]),u["\u0275mpd"](1073742336,qn.ChartsModule,qn.ChartsModule,[]),u["\u0275mpd"](1073742336,Il.e,Il.e,[]),u["\u0275mpd"](1073742336,An.a,An.a,[]),u["\u0275mpd"](1073742336,Tn.e,Tn.e,[]),u["\u0275mpd"](1073742336,On.a,On.a,[]),u["\u0275mpd"](1073742336,Ln.NgxDatatableModule,Ln.NgxDatatableModule,[]),u["\u0275mpd"](1073742336,Sn.p,Sn.p,[[2,Sn.v],[2,Sn.l]]),u["\u0275mpd"](1073742336,Mn.a,Mn.a,[]),u["\u0275mpd"](1073742336,d.a,d.a,[]),u["\u0275mpd"](1073742336,jn.a,jn.a,[]),u["\u0275mpd"](1073742336,Pn.d,Pn.d,[]),u["\u0275mpd"](1073742336,Bn.TreeModule,Bn.TreeModule,[]),u["\u0275mpd"](1073742336,Un.a,Un.a,[]),u["\u0275mpd"](1073742336,xn.d,xn.d,[]),u["\u0275mpd"](1073742336,Gn.a,Gn.a,[]),u["\u0275mpd"](1073742336,j,j,[]),u["\u0275mpd"](1073742336,G,G,[]),u["\u0275mpd"](256,u.LOCALE_ID,"en-US",[]),u["\u0275mpd"](256,Tn.a,{autoClose:!0,insideClick:!1},[]),u["\u0275mpd"](1024,Sn.j,function(){return[[{path:"",component:M},{path:"create",component:N,data:B},{path:"edit/:name",component:N,data:U}]]},[]),u["\u0275mpd"](256,u.TRANSLATIONS_FORMAT,"xlf",[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.383a20140e10eb51367c.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/9.383a20140e10eb51367c.js
new file mode 100644 (file)
index 0000000..c228291
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{DY6s:function(l,n,u){"use strict";u.r(n);var e=u("CcnG"),o=u("LceX"),a=u("iutN"),t=u("ES0t"),d=u("MdoF"),s=u("Xg1U"),r=u("z5nN"),i=u("EEJc"),c=u("PEr+"),p=u("a40w"),m=u("pMnS"),f=u("Ip0R"),v=u("gIcY"),g=u("iExv"),h=u("Jm/i"),b=u("85J/"),C=u("+0ag"),R=u("aXbf"),I=u("Fgil"),y=u("IzCI"),w=u("o4+5"),x=u("Dwqy"),D=u("uYzU"),T=u("uhwM"),k=u("E2fk"),E=u("a0VL"),N=u("nSDx"),S=u("SB+Q"),F=u("TYzs"),_=u("BQkM"),P=u("dEH0"),M=u("8xTl"),q=u("lTVp"),A=u("OZfm"),V=u("NJnL"),L=u("lqqz"),U=u("eajB"),O=u("DQlY"),j=u("FO+L"),z=u("ZYjt"),H=u("nhM1"),B=u("BARL"),Z=u("xtZt"),Y=u("aexS"),G=u("Avrn"),K=u("ZYCi"),J=u("YAQW"),X=u("9Xeq"),Q=u("xdbM"),W=u("yGOH"),$=u("V/fk"),ll=u("F8xH"),nl=u("ChqD"),ul=u("pL04"),el=u("PCNd"),ol=u("pKUh"),al=function(){function l(l){this.router=l}return l.prototype.ngOnInit=function(){this.url=this.router.url},l.prototype.navigateTo=function(l){this.router.navigate([l])},l}(),tl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function dl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ol.b,ol.a)),e["\u0275did"](1,180224,null,0,J.d,[J.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,1,"tab",[["heading","Users"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/user-management/users")&&e),e},null,null)),e["\u0275did"](3,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(l()(),e["\u0275eld"](4,0,null,0,1,"tab",[["heading","Roles"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(l,n,u){var e=!0;return"select"===n&&(e=!1!==l.component.navigateTo("/user-management/roles")&&e),e},null,null)),e["\u0275did"](5,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(l,n){var u=n.component;l(n,3,0,"Users","/user-management/users"===u.url),l(n,5,0,"Roles","/user-management/roles"===u.url)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass),l(n,4,0,e["\u0275nov"](n,5).id,e["\u0275nov"](n,5).active,e["\u0275nov"](n,5).addClass)})}var sl=u("25BL"),rl=u("uIqm"),il=u("NUGo"),cl=u("S7zO"),pl=u("EgGo"),ml=u("ZEkX"),fl=u("Mxhz"),vl=u("9nlD"),gl=u("sne2"),hl=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(l()(),e["\u0275ted"](1,null,[" ",""," "]))],null,function(l,n){l(n,1,0,n.context.$implicit,n.context.last?"":", ")})}function Cl(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,bl)),e["\u0275did"](1,278528,null,0,f.NgForOf,[e.ViewContainerRef,e.TemplateRef,e.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(l()(),e["\u0275and"](0,null,null,0))],function(l,n){l(n,1,0,n.context.value)},null)}function Rl(l){return e["\u0275vid"](0,[e["\u0275qud"](402653184,1,{userRolesTpl:0}),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-user-tabs",[],null,null,null,dl,tl)),e["\u0275did"](2,114688,null,0,al,[K.l],null,null),(l()(),e["\u0275eld"](3,0,null,null,3,"cd-table",[["columnMode","flex"],["identifier","username"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getUsers()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e},sl.b,sl.a)),e["\u0275did"](4,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,il.b,il.a)),e["\u0275did"](6,114688,null,0,cl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275and"](0,[[1,2],["userRolesTpl",2]],null,0,null,Cl))],function(l,n){var u=n.component;l(n,2,0),l(n,4,0,u.users,u.columns,"flex","username","single"),l(n,6,0,u.permission,u.selection,u.tableActions)},null)}function Il(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-user-list",[],null,null,null,Rl,hl)),e["\u0275prd"](256,null,pl.a,ml.b,[]),e["\u0275did"](2,114688,null,0,ml.a,[fl.a,N.a,O.b,vl.a,Y.a,h.a,pl.a,gl.b],null,null)],function(l,n){l(n,2,0)},null)}var yl=e["\u0275ccf"]("cd-user-list",ml.a,Il,{},{},[]),wl=u("pYKc"),xl=u("ppaS"),Dl=u("IZUe"),Tl=u("D4zM"),kl=u("gp3X"),El=u("sb0X"),Nl=u("KVJa"),Sl=u("Z21x"),Fl=u("V3my"),_l=u("DSvg"),Pl=u("SgmB"),Ml=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ql(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Al(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Vl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ll(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ul(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password confirmation doesn't match the password."]))],null,null)}function Ol(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Invalid email."]))],null,null)}function jl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border full-height"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"cd-select-badges",[],null,null,null,wl.b,wl.a)),e["\u0275did"](2,49152,null,0,xl.a,[h.a],{data:[0,"data"],options:[1,"options"],messages:[2,"messages"]},null)],function(l,n){var u=n.component;l(n,2,0,u.userForm.controls.roles.value,u.allRoles,u.messages)},null)}function zl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,['You are about to remove "user read / update" permissions from your own user.'])),(l()(),e["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,1,"p",[],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["If you continue, you will no longer be able to add or remove roles from any user."])),(l()(),e["\u0275eld"](6,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Are you sure you want to continue?"]))],null,null)}function Hl(l){return e["\u0275vid"](0,[e["\u0275pid"](0,f.TitleCasePipe,[]),e["\u0275pid"](0,M.a,[]),e["\u0275qud"](402653184,1,{removeSelfUserReadUpdatePermissionTpl:0}),(l()(),e["\u0275eld"](3,0,null,null,106,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](4,0,null,null,105,"form",[["class","form-horizontal"],["name","userForm"],["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(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["\u0275nov"](l,6).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["\u0275nov"](l,6).onReset()&&o),o},null,null)),e["\u0275did"](5,16384,null,0,v.D,[],null,null),e["\u0275did"](6,540672,[["formDir",4]],0,v.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,v.d,null,[v.l]),e["\u0275did"](8,16384,null,0,v.s,[[4,v.d]],null,null),(l()(),e["\u0275eld"](9,0,null,null,100,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](10,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](11,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](12,null,["","",""])),e["\u0275ppd"](13,1),e["\u0275ppd"](14,1),(l()(),e["\u0275eld"](15,0,null,null,85,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](16,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](17,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](18,{"has-error":0}),(l()(),e["\u0275eld"](19,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](20,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Username"])),(l()(),e["\u0275and"](16777216,null,null,1,null,ql)),e["\u0275did"](23,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](24,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","username"],["id","username"],["name","username"],["placeholder","Username..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,26)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,26).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,26)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,26)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](26,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](28,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](30,16384,null,0,v.r,[[4,v.q]],null,null),e["\u0275did"](31,4210688,null,0,Dl.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Al)),e["\u0275did"](33,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](34,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](35,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](36,{"has-error":0}),(l()(),e["\u0275eld"](37,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Password"])),(l()(),e["\u0275eld"](39,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](40,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](41,0,null,null,5,"input",[["autocomplete","new-password"],["class","form-control"],["formControlName","password"],["id","password"],["name","password"],["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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,42)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,42).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,42)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,42)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](42,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](44,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](46,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](47,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](48,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["\u0275nov"](l,49).onClick()&&o),o},null,null)),e["\u0275did"](49,81920,null,0,Tl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Vl)),e["\u0275did"](51,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](52,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](53,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](54,{"has-error":0}),(l()(),e["\u0275eld"](55,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Confirm password"])),(l()(),e["\u0275eld"](57,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](59,0,null,null,5,"input",[["class","form-control"],["formControlName","confirmpassword"],["id","confirmpassword"],["name","confirmpassword"],["placeholder","Confirm 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,60)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,60).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,60)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,60)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](60,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](62,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](64,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](65,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(l()(),e["\u0275eld"](66,0,null,null,1,"button",[["cdPasswordButton","confirmpassword"],["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(l,n,u){var o=!0;return"click"===n&&(o=!1!==e["\u0275nov"](l,67).onClick()&&o),o},null,null)),e["\u0275did"](67,81920,null,0,Tl.a,[e.ElementRef,e.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ll)),e["\u0275did"](69,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ul)),e["\u0275did"](71,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](72,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](73,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Full name"])),(l()(),e["\u0275eld"](75,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](76,0,null,null,5,"input",[["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","Full 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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,77)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,77).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,77)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,77)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](77,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](79,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](81,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](82,0,null,null,13,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](83,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](84,{"has-error":0}),(l()(),e["\u0275eld"](85,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","email"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Email"])),(l()(),e["\u0275eld"](87,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](88,0,null,null,5,"input",[["class","form-control"],["formControlName","email"],["id","email"],["name","email"],["placeholder","Email..."],["type","email"]],[[2,"ng-untouched",null],[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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,89)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,89).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,89)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,89)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](89,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](91,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](93,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,Ol)),e["\u0275did"](95,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](96,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Roles"])),(l()(),e["\u0275eld"](98,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275and"](16777216,null,null,1,null,jl)),e["\u0275did"](100,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](101,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](102,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](103,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},kl.b,kl.a)),e["\u0275did"](104,114688,null,0,El.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](105,0,["","",""])),e["\u0275ppd"](106,1),e["\u0275ppd"](107,1),(l()(),e["\u0275eld"](108,0,null,null,1,"cd-back-button",[],null,null,null,Nl.b,Nl.a)),e["\u0275did"](109,49152,null,0,Sl.a,[f.Location,gl.b],null,null),(l()(),e["\u0275and"](0,[[1,2],["removeSelfUserReadUpdatePermissionTpl",2]],null,0,null,zl))],function(l,n){var u=n.component;l(n,6,0,u.userForm);var o=l(n,18,0,u.userForm.showError("username",e["\u0275nov"](n,6)));l(n,17,0,"form-group",o),l(n,23,0,u.mode!==u.userFormMode.editing),l(n,28,0,"username"),l(n,33,0,u.userForm.showError("username",e["\u0275nov"](n,6),"required"));var a=l(n,36,0,u.userForm.showError("password",e["\u0275nov"](n,6)));l(n,35,0,"form-group",a),l(n,44,0,"password"),l(n,49,0,"password"),l(n,51,0,u.userForm.showError("password",e["\u0275nov"](n,6),"required"));var t=l(n,54,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6)));l(n,53,0,"form-group",t),l(n,62,0,"confirmpassword"),l(n,67,0,"confirmpassword"),l(n,69,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6),"required")),l(n,71,0,u.userForm.showError("confirmpassword",e["\u0275nov"](n,6),"match")),l(n,79,0,"name");var d=l(n,84,0,u.userForm.showError("email",e["\u0275nov"](n,6)));l(n,83,0,"form-group",d),l(n,91,0,"email"),l(n,95,0,u.userForm.showError("email",e["\u0275nov"](n,6),"email")),l(n,100,0,u.allRoles),l(n,104,0,e["\u0275nov"](n,6),"button")},function(l,n){var u=n.component;l(n,4,0,e["\u0275nov"](n,8).ngClassUntouched,e["\u0275nov"](n,8).ngClassTouched,e["\u0275nov"](n,8).ngClassPristine,e["\u0275nov"](n,8).ngClassDirty,e["\u0275nov"](n,8).ngClassValid,e["\u0275nov"](n,8).ngClassInvalid,e["\u0275nov"](n,8).ngClassPending);var o=e["\u0275unv"](n,12,0,l(n,13,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,12,1,l(n,14,0,e["\u0275nov"](n,1),u.resource));l(n,12,0,o,a),l(n,25,0,e["\u0275nov"](n,30).ngClassUntouched,e["\u0275nov"](n,30).ngClassTouched,e["\u0275nov"](n,30).ngClassPristine,e["\u0275nov"](n,30).ngClassDirty,e["\u0275nov"](n,30).ngClassValid,e["\u0275nov"](n,30).ngClassInvalid,e["\u0275nov"](n,30).ngClassPending),l(n,41,0,e["\u0275nov"](n,46).ngClassUntouched,e["\u0275nov"](n,46).ngClassTouched,e["\u0275nov"](n,46).ngClassPristine,e["\u0275nov"](n,46).ngClassDirty,e["\u0275nov"](n,46).ngClassValid,e["\u0275nov"](n,46).ngClassInvalid,e["\u0275nov"](n,46).ngClassPending),l(n,59,0,e["\u0275nov"](n,64).ngClassUntouched,e["\u0275nov"](n,64).ngClassTouched,e["\u0275nov"](n,64).ngClassPristine,e["\u0275nov"](n,64).ngClassDirty,e["\u0275nov"](n,64).ngClassValid,e["\u0275nov"](n,64).ngClassInvalid,e["\u0275nov"](n,64).ngClassPending),l(n,76,0,e["\u0275nov"](n,81).ngClassUntouched,e["\u0275nov"](n,81).ngClassTouched,e["\u0275nov"](n,81).ngClassPristine,e["\u0275nov"](n,81).ngClassDirty,e["\u0275nov"](n,81).ngClassValid,e["\u0275nov"](n,81).ngClassInvalid,e["\u0275nov"](n,81).ngClassPending),l(n,88,0,e["\u0275nov"](n,93).ngClassUntouched,e["\u0275nov"](n,93).ngClassTouched,e["\u0275nov"](n,93).ngClassPristine,e["\u0275nov"](n,93).ngClassDirty,e["\u0275nov"](n,93).ngClassValid,e["\u0275nov"](n,93).ngClassInvalid,e["\u0275nov"](n,93).ngClassPending);var t=e["\u0275unv"](n,105,0,l(n,106,0,e["\u0275nov"](n,0),u.action)),d=e["\u0275unv"](n,105,1,l(n,107,0,e["\u0275nov"](n,1),u.resource));l(n,105,0,t,d)})}function Bl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-user-form",[],null,null,null,Hl,Ml)),e["\u0275did"](1,114688,null,0,Fl.a,[_l.a,Y.a,K.a,K.l,O.b,Pl.a,fl.a,vl.a,h.a,gl.b],null,null)],function(l,n){l(n,1,0)},null)}var Zl=e["\u0275ccf"]("cd-user-form",Fl.a,Bl,{},{},[]),Yl=u("LvDl"),Gl=u("x38r"),Kl=(u("vCyI"),function(){function l(l){this.i18n=l,this.scopes_permissions=[]}return l.prototype.ngOnInit=function(){this.columns=[{prop:"scope",name:this.i18n("Scope"),flexGrow:2},{prop:"read",name:this.i18n("Read"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"create",name:this.i18n("Create"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"update",name:this.i18n("Update"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon},{prop:"delete",name:this.i18n("Delete"),flexGrow:1,cellClass:"text-center",cellTransformation:Gl.a.checkIcon}]},l.prototype.ngOnChanges=function(){var l=this;if(this.selection.hasSelection){this.selectedItem=this.selection.first();var n=[];Yl.each(this.scopes,function(u){var e={read:!1,create:!1,update:!1,delete:!1};e.scope=u,u in l.selectedItem.scopes_permissions&&Yl.each(l.selectedItem.scopes_permissions[u],function(l){e[l]=!0}),n.push(e)}),this.scopes_permissions=n}},l}()),Jl=e["\u0275crt"]({encapsulation:0,styles:[["thead[_ngcontent-%COMP%]{background-color:#f5f5f5}.fa[_ngcontent-%COMP%]{font-size:large}.fa.fa-square-o[_ngcontent-%COMP%]{color:#d1d1d1}"]],data:{}});function Xl(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,ol.b,ol.a)),e["\u0275did"](1,180224,null,0,J.d,[J.e,e.Renderer2],null,null),(l()(),e["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),e["\u0275did"](3,212992,null,0,J.b,[J.d,e.ElementRef,e.Renderer2],{heading:[0,"heading"]},null),(l()(),e["\u0275eld"](4,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,sl.b,sl.a)),e["\u0275did"](5,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null)],function(l,n){var u=n.component;l(n,3,0,"Details"),l(n,5,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1)},function(l,n){l(n,0,0,e["\u0275nov"](n,1).clazz),l(n,2,0,e["\u0275nov"](n,3).id,e["\u0275nov"](n,3).active,e["\u0275nov"](n,3).addClass)})}function Ql(l){return e["\u0275vid"](0,[(l()(),e["\u0275and"](16777216,null,null,1,null,Xl)),e["\u0275did"](1,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(l,n){var u=n.component;l(n,1,0,null==u.selection?null:u.selection.hasSingleSelection)},null)}var Wl=u("n/D3"),$l=u("ZDA6"),ln=e["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function nn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-user-tabs",[],null,null,null,dl,tl)),e["\u0275did"](1,114688,null,0,al,[K.l],null,null),(l()(),e["\u0275eld"](2,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","name"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(l,n,u){var e=!0,o=l.component;return"fetchData"===n&&(e=!1!==o.getRoles()&&e),"updateSelection"===n&&(e=!1!==o.updateSelection(u)&&e),e},sl.b,sl.a)),e["\u0275did"](3,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],selectionType:[4,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(l()(),e["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,il.b,il.a)),e["\u0275did"](5,114688,null,0,cl.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(l()(),e["\u0275eld"](6,0,null,2,1,"cd-role-details",[["cdTableDetail",""]],null,null,null,Ql,Jl)),e["\u0275did"](7,638976,null,0,Kl,[h.a],{selection:[0,"selection"],scopes:[1,"scopes"]},null)],function(l,n){var u=n.component;l(n,1,0),l(n,3,0,u.roles,u.columns,"flex","name","single"),l(n,5,0,u.permission,u.selection,u.tableActions),l(n,7,0,u.selection,u.scopes)},null)}function un(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"cd-role-list",[],null,null,null,nn,ln)),e["\u0275prd"](256,null,pl.a,Wl.b,[]),e["\u0275did"](2,114688,null,0,Wl.a,[Pl.a,$l.a,N.a,Y.a,O.b,vl.a,h.a,pl.a,gl.b],null,null)],function(l,n){l(n,2,0)},null)}var en=e["\u0275ccf"]("cd-role-list",Wl.a,un,{},{},[]),on=u("eTJe"),an=e["\u0275crt"]({encapsulation:0,styles:[[".datatable-permissions-header-cell-label[_ngcontent-%COMP%], .datatable-permissions-scope-cell-label[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function tn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function dn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["This field is required."]))],null,null)}function sn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["The chosen name is already in use."]))],null,null)}function rn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"id",0],[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"label",[["class","datatable-permissions-scope-cell-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](3,null,["",""]))],null,function(l,n){var u=n.component;l(n,1,0,e["\u0275inlineInterpolate"](1,"scope_",n.context.row.scope,""),u.isRowChecked(n.context.row.scope)),l(n,2,0,e["\u0275inlineInterpolate"](1,"scope_",n.context.row.scope,"")),l(n,3,0,n.context.value)})}function cn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,2,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickCellCheckbox(l.context.row.scope,l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,0,"label",[],null,null,null,null,null))],null,function(l,n){l(n,1,0,n.context.value)})}function pn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,3,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(l()(),e["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"id",0],[8,"checked",0]],[[null,"change"]],function(l,n,u){var e=!0;return"change"===n&&(e=!1!==l.component.onClickHeaderCheckbox(l.context.column.prop,u)&&e),e},null,null)),(l()(),e["\u0275eld"](2,0,null,null,1,"label",[["class","datatable-permissions-header-cell-label"]],[[8,"htmlFor",0]],null,null,null,null)),(l()(),e["\u0275ted"](3,null,["",""]))],null,function(l,n){var u=n.component;l(n,1,0,e["\u0275inlineInterpolate"](1,"header_",n.context.column.prop,""),u.isHeaderChecked(n.context.column.prop)),l(n,2,0,e["\u0275inlineInterpolate"](1,"header_",n.context.column.prop,"")),l(n,3,0,n.context.column.name)})}function mn(l){return e["\u0275vid"](0,[e["\u0275pid"](0,f.TitleCasePipe,[]),e["\u0275pid"](0,M.a,[]),e["\u0275qud"](402653184,1,{headerPermissionCheckboxTpl:0}),e["\u0275qud"](402653184,2,{cellScopeCheckboxTpl:0}),e["\u0275qud"](402653184,3,{cellPermissionCheckboxTpl:0}),(l()(),e["\u0275eld"](5,0,null,null,59,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(l()(),e["\u0275eld"](6,0,null,null,58,"form",[["class","form-horizontal"],["name","roleForm"],["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(l,n,u){var o=!0;return"submit"===n&&(o=!1!==e["\u0275nov"](l,8).onSubmit(u)&&o),"reset"===n&&(o=!1!==e["\u0275nov"](l,8).onReset()&&o),o},null,null)),e["\u0275did"](7,16384,null,0,v.D,[],null,null),e["\u0275did"](8,540672,[["formDir",4]],0,v.l,[[8,null],[8,null]],{form:[0,"form"]},null),e["\u0275prd"](2048,null,v.d,null,[v.l]),e["\u0275did"](10,16384,null,0,v.s,[[4,v.d]],null,null),(l()(),e["\u0275eld"](11,0,null,null,53,"div",[["class","panel panel-default"]],null,null,null,null,null)),(l()(),e["\u0275eld"](12,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(l()(),e["\u0275eld"](13,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(l()(),e["\u0275ted"](14,null,["","",""])),e["\u0275ppd"](15,1),e["\u0275ppd"](16,1),(l()(),e["\u0275eld"](17,0,null,null,38,"div",[["class","panel-body"]],null,null,null,null,null)),(l()(),e["\u0275eld"](18,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](19,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](20,{"has-error":0}),(l()(),e["\u0275eld"](21,0,null,null,4,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(l()(),e["\u0275eld"](22,0,null,null,1,null,null,null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Name"])),(l()(),e["\u0275and"](16777216,null,null,1,null,tn)),e["\u0275did"](25,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](26,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](27,0,null,null,6,"input",[["autofocus",""],["class","form-control"],["formControlName","name"],["id","name"],["name","name"],["placeholder","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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,28)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,28).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,28)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,28)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](28,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](30,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](32,16384,null,0,v.r,[[4,v.q]],null,null),e["\u0275did"](33,4210688,null,0,Dl.a,[e.ElementRef],null,null),(l()(),e["\u0275and"](16777216,null,null,1,null,dn)),e["\u0275did"](35,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275and"](16777216,null,null,1,null,sn)),e["\u0275did"](37,16384,null,0,f.NgIf,[e.ViewContainerRef,e.TemplateRef],{ngIf:[0,"ngIf"]},null),(l()(),e["\u0275eld"](38,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),e["\u0275did"](39,278528,null,0,f.NgClass,[e.IterableDiffers,e.KeyValueDiffers,e.ElementRef,e.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),e["\u0275pod"](40,{"has-error":0}),(l()(),e["\u0275eld"](41,0,null,null,1,"label",[["class","control-label col-sm-3"],["for","description"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Description"])),(l()(),e["\u0275eld"](43,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](44,0,null,null,5,"input",[["class","form-control"],["formControlName","description"],["id","description"],["name","description"],["placeholder","Description..."],["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,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(l,n,u){var o=!0;return"input"===n&&(o=!1!==e["\u0275nov"](l,45)._handleInput(u.target.value)&&o),"blur"===n&&(o=!1!==e["\u0275nov"](l,45).onTouched()&&o),"compositionstart"===n&&(o=!1!==e["\u0275nov"](l,45)._compositionStart()&&o),"compositionend"===n&&(o=!1!==e["\u0275nov"](l,45)._compositionEnd(u.target.value)&&o),o},null,null)),e["\u0275did"](45,16384,null,0,v.e,[e.Renderer2,e.ElementRef,[2,v.b]],null,null),e["\u0275prd"](1024,null,v.p,function(l){return[l]},[v.e]),e["\u0275did"](47,671744,null,0,v.j,[[3,v.d],[8,null],[8,null],[6,v.p],[2,v.F]],{name:[0,"name"]},null),e["\u0275prd"](2048,null,v.q,null,[v.j]),e["\u0275did"](49,16384,null,0,v.r,[[4,v.q]],null,null),(l()(),e["\u0275eld"](50,0,null,null,5,"div",[["class","form-group"]],null,null,null,null,null)),(l()(),e["\u0275eld"](51,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(l()(),e["\u0275ted"](-1,null,["Permissions"])),(l()(),e["\u0275eld"](53,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(l()(),e["\u0275eld"](54,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,sl.b,sl.a)),e["\u0275did"](55,2867200,null,0,rl.a,[e.NgZone,e.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],toolHeader:[3,"toolHeader"],footer:[4,"footer"],limit:[5,"limit"],autoReload:[6,"autoReload"],autoSave:[7,"autoSave"]},null),(l()(),e["\u0275eld"](56,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(l()(),e["\u0275eld"](57,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(l()(),e["\u0275eld"](58,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(l,n,u){var e=!0;return"submitAction"===n&&(e=!1!==l.component.submit()&&e),e},kl.b,kl.a)),e["\u0275did"](59,114688,null,0,El.a,[e.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(l()(),e["\u0275ted"](60,0,["","",""])),e["\u0275ppd"](61,1),e["\u0275ppd"](62,1),(l()(),e["\u0275eld"](63,0,null,null,1,"cd-back-button",[],null,null,null,Nl.b,Nl.a)),e["\u0275did"](64,49152,null,0,Sl.a,[f.Location,gl.b],null,null),(l()(),e["\u0275and"](0,[[2,2],["cellScopeCheckboxTpl",2]],null,0,null,rn)),(l()(),e["\u0275and"](0,[[3,2],["cellPermissionCheckboxTpl",2]],null,0,null,cn)),(l()(),e["\u0275and"](0,[[1,2],["headerPermissionCheckboxTpl",2]],null,0,null,pn))],function(l,n){var u=n.component;l(n,8,0,u.roleForm);var o=l(n,20,0,u.roleForm.showError("name",e["\u0275nov"](n,8)));l(n,19,0,"form-group",o),l(n,25,0,u.mode!==u.roleFormMode.editing),l(n,30,0,"name"),l(n,35,0,u.roleForm.showError("name",e["\u0275nov"](n,8),"required")),l(n,37,0,u.roleForm.showError("name",e["\u0275nov"](n,8),"notUnique"));var a=l(n,40,0,u.roleForm.showError("description",e["\u0275nov"](n,8)));l(n,39,0,"form-group",a),l(n,47,0,"description"),l(n,55,0,u.scopes_permissions,u.columns,"flex",!1,!1,0,!1,!1),l(n,59,0,e["\u0275nov"](n,8),"button")},function(l,n){var u=n.component;l(n,6,0,e["\u0275nov"](n,10).ngClassUntouched,e["\u0275nov"](n,10).ngClassTouched,e["\u0275nov"](n,10).ngClassPristine,e["\u0275nov"](n,10).ngClassDirty,e["\u0275nov"](n,10).ngClassValid,e["\u0275nov"](n,10).ngClassInvalid,e["\u0275nov"](n,10).ngClassPending);var o=e["\u0275unv"](n,14,0,l(n,15,0,e["\u0275nov"](n,0),u.action)),a=e["\u0275unv"](n,14,1,l(n,16,0,e["\u0275nov"](n,1),u.resource));l(n,14,0,o,a),l(n,27,0,e["\u0275nov"](n,32).ngClassUntouched,e["\u0275nov"](n,32).ngClassTouched,e["\u0275nov"](n,32).ngClassPristine,e["\u0275nov"](n,32).ngClassDirty,e["\u0275nov"](n,32).ngClassValid,e["\u0275nov"](n,32).ngClassInvalid,e["\u0275nov"](n,32).ngClassPending),l(n,44,0,e["\u0275nov"](n,49).ngClassUntouched,e["\u0275nov"](n,49).ngClassTouched,e["\u0275nov"](n,49).ngClassPristine,e["\u0275nov"](n,49).ngClassDirty,e["\u0275nov"](n,49).ngClassValid,e["\u0275nov"](n,49).ngClassInvalid,e["\u0275nov"](n,49).ngClassPending);var t=e["\u0275unv"](n,60,0,l(n,61,0,e["\u0275nov"](n,0),u.action)),d=e["\u0275unv"](n,60,1,l(n,62,0,e["\u0275nov"](n,1),u.resource));l(n,60,0,t,d)})}function fn(l){return e["\u0275vid"](0,[(l()(),e["\u0275eld"](0,0,null,null,1,"cd-role-form",[],null,null,null,mn,an)),e["\u0275did"](1,114688,null,0,on.a,[K.a,K.l,Pl.a,$l.a,vl.a,h.a,gl.b],null,null)],function(l,n){l(n,1,0)},null)}var vn=e["\u0275ccf"]("cd-role-form",on.a,fn,{},{},[]);u.d(n,"AuthModuleNgFactory",function(){return gn}),u.d(n,"RoutedAuthModuleNgFactory",function(){return hn});var gn=e["\u0275cmf"](o.a,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,t.a,d.a,s.a,r.a,r.b,i.a,c.a,p.a,m.a]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,f.NgLocalization,f.NgLocaleLocalization,[e.LOCALE_ID,[2,f["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,v.E,v.E,[]),e["\u0275mpd"](4608,v.h,v.h,[]),e["\u0275mpd"](4608,g.a,g.a,[h.a]),e["\u0275mpd"](4608,f.DatePipe,f.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,b.a,b.a,[]),e["\u0275mpd"](4608,C.a,C.a,[]),e["\u0275mpd"](4608,R.a,R.a,[]),e["\u0275mpd"](4608,I.a,I.a,[R.a]),e["\u0275mpd"](4608,y.a,y.a,[R.a]),e["\u0275mpd"](4608,w.a,w.a,[R.a]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,T.a,T.a,[]),e["\u0275mpd"](4608,k.a,k.a,[]),e["\u0275mpd"](4608,E.a,E.a,[f.DatePipe]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,q.b,q.b,[]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,V.a,V.a,[]),e["\u0275mpd"](4608,L.a,L.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,V.a,e.ApplicationRef]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,O.b,O.b,[e.RendererFactory2,L.a]),e["\u0275mpd"](4608,j.ScrollbarHelper,j.ScrollbarHelper,[z.DOCUMENT]),e["\u0275mpd"](4608,H.DimensionsHelper,H.DimensionsHelper,[]),e["\u0275mpd"](4608,B.ColumnChangesService,B.ColumnChangesService,[]),e["\u0275mpd"](4608,Z.f,Z.f,[]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,G.a,G.a,[K.l,Y.a]),e["\u0275mpd"](4608,J.e,J.e,[]),e["\u0275mpd"](1073742336,Z.e,Z.e,[]),e["\u0275mpd"](1073742336,f.CommonModule,f.CommonModule,[]),e["\u0275mpd"](1073742336,v.B,v.B,[]),e["\u0275mpd"](1073742336,v.n,v.n,[]),e["\u0275mpd"](1073742336,A.d,A.d,[]),e["\u0275mpd"](1073742336,v.x,v.x,[]),e["\u0275mpd"](1073742336,X.a,X.a,[]),e["\u0275mpd"](1073742336,q.c,q.c,[]),e["\u0275mpd"](1073742336,U.d,U.d,[]),e["\u0275mpd"](1073742336,Q.ChartsModule,Q.ChartsModule,[]),e["\u0275mpd"](1073742336,O.e,O.e,[]),e["\u0275mpd"](1073742336,W.a,W.a,[]),e["\u0275mpd"](1073742336,$.a,$.a,[]),e["\u0275mpd"](1073742336,ll.NgxDatatableModule,ll.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,K.p,K.p,[[2,K.v],[2,K.l]]),e["\u0275mpd"](1073742336,nl.a,nl.a,[]),e["\u0275mpd"](1073742336,ul.a,ul.a,[]),e["\u0275mpd"](1073742336,el.a,el.a,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,o.a,o.a,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,Z.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])}),hn=e["\u0275cmf"](o.b,[],function(l){return e["\u0275mod"]([e["\u0275mpd"](512,e.ComponentFactoryResolver,e["\u0275CodegenComponentFactoryResolver"],[[8,[a.a,t.a,d.a,s.a,r.a,r.b,i.a,c.a,p.a,m.a,yl,Zl,en,vn]],[3,e.ComponentFactoryResolver],e.NgModuleRef]),e["\u0275mpd"](4608,f.NgLocalization,f.NgLocaleLocalization,[e.LOCALE_ID,[2,f["\u0275angular_packages_common_common_a"]]]),e["\u0275mpd"](4608,v.E,v.E,[]),e["\u0275mpd"](4608,v.h,v.h,[]),e["\u0275mpd"](4608,g.a,g.a,[h.a]),e["\u0275mpd"](4608,f.DatePipe,f.DatePipe,[e.LOCALE_ID]),e["\u0275mpd"](4608,b.a,b.a,[]),e["\u0275mpd"](4608,C.a,C.a,[]),e["\u0275mpd"](4608,R.a,R.a,[]),e["\u0275mpd"](4608,I.a,I.a,[R.a]),e["\u0275mpd"](4608,y.a,y.a,[R.a]),e["\u0275mpd"](4608,w.a,w.a,[R.a]),e["\u0275mpd"](4608,x.a,x.a,[]),e["\u0275mpd"](4608,D.a,D.a,[]),e["\u0275mpd"](4608,T.a,T.a,[]),e["\u0275mpd"](4608,k.a,k.a,[]),e["\u0275mpd"](4608,E.a,E.a,[f.DatePipe]),e["\u0275mpd"](4608,N.a,N.a,[]),e["\u0275mpd"](4608,S.a,S.a,[]),e["\u0275mpd"](4608,F.a,F.a,[]),e["\u0275mpd"](4608,_.a,_.a,[]),e["\u0275mpd"](4608,P.a,P.a,[]),e["\u0275mpd"](4608,M.a,M.a,[]),e["\u0275mpd"](4608,q.b,q.b,[]),e["\u0275mpd"](4608,A.a,A.a,[]),e["\u0275mpd"](4608,V.a,V.a,[]),e["\u0275mpd"](4608,L.a,L.a,[e.ComponentFactoryResolver,e.NgZone,e.Injector,V.a,e.ApplicationRef]),e["\u0275mpd"](4608,U.a,U.a,[]),e["\u0275mpd"](4608,O.b,O.b,[e.RendererFactory2,L.a]),e["\u0275mpd"](4608,j.ScrollbarHelper,j.ScrollbarHelper,[z.DOCUMENT]),e["\u0275mpd"](4608,H.DimensionsHelper,H.DimensionsHelper,[]),e["\u0275mpd"](4608,B.ColumnChangesService,B.ColumnChangesService,[]),e["\u0275mpd"](4608,Z.f,Z.f,[]),e["\u0275mpd"](4608,Y.a,Y.a,[]),e["\u0275mpd"](4608,G.a,G.a,[K.l,Y.a]),e["\u0275mpd"](4608,J.e,J.e,[]),e["\u0275mpd"](1073742336,Z.e,Z.e,[]),e["\u0275mpd"](1073742336,f.CommonModule,f.CommonModule,[]),e["\u0275mpd"](1073742336,v.B,v.B,[]),e["\u0275mpd"](1073742336,v.n,v.n,[]),e["\u0275mpd"](1073742336,A.d,A.d,[]),e["\u0275mpd"](1073742336,v.x,v.x,[]),e["\u0275mpd"](1073742336,X.a,X.a,[]),e["\u0275mpd"](1073742336,q.c,q.c,[]),e["\u0275mpd"](1073742336,U.d,U.d,[]),e["\u0275mpd"](1073742336,Q.ChartsModule,Q.ChartsModule,[]),e["\u0275mpd"](1073742336,O.e,O.e,[]),e["\u0275mpd"](1073742336,W.a,W.a,[]),e["\u0275mpd"](1073742336,$.a,$.a,[]),e["\u0275mpd"](1073742336,ll.NgxDatatableModule,ll.NgxDatatableModule,[]),e["\u0275mpd"](1073742336,K.p,K.p,[[2,K.v],[2,K.l]]),e["\u0275mpd"](1073742336,nl.a,nl.a,[]),e["\u0275mpd"](1073742336,ul.a,ul.a,[]),e["\u0275mpd"](1073742336,el.a,el.a,[]),e["\u0275mpd"](1073742336,J.c,J.c,[]),e["\u0275mpd"](1073742336,o.a,o.a,[]),e["\u0275mpd"](1073742336,o.b,o.b,[]),e["\u0275mpd"](256,e.LOCALE_ID,"en-US",[]),e["\u0275mpd"](256,Z.a,{autoClose:!0,insideClick:!1},[]),e["\u0275mpd"](1024,K.j,function(){return[[{path:"",redirectTo:"users",pathMatch:"full"},{path:"users",data:o.c,children:[{path:"",component:ml.a},{path:"create",component:Fl.a,data:o.d},{path:"edit/:username",component:Fl.a,data:o.e}]},{path:"roles",data:o.f,children:[{path:"",component:Wl.a},{path:"create",component:on.a,data:o.g},{path:"edit/:name",component:on.a,data:o.h}]}]]},[]),e["\u0275mpd"](256,e.TRANSLATIONS_FORMAT,"xlf",[])])})}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png
new file mode 100644 (file)
index 0000000..79064dc
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Mimic_Octopus2.jpg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Mimic_Octopus2.jpg
new file mode 100644 (file)
index 0000000..f8cf2a8
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Mimic_Octopus2.jpg differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Nautilus_Octopus.jpg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Nautilus_Octopus.jpg
new file mode 100644 (file)
index 0000000..1f0776f
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/1280px-Nautilus_Octopus.jpg differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png
new file mode 100644 (file)
index 0000000..79064dc
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_228x228.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png
new file mode 100644 (file)
index 0000000..d46bd73
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png
new file mode 100644 (file)
index 0000000..26d602b
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png
new file mode 100644 (file)
index 0000000..0f07b83
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/Ceph_Logo_Standard_RGB_White_120411_fa.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/loading.gif b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/loading.gif
new file mode 100644 (file)
index 0000000..8fb88de
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/loading.gif differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/logo-mini.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/logo-mini.png
new file mode 100644 (file)
index 0000000..b3446a8
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/logo-mini.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/notification-icons.png b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/notification-icons.png
new file mode 100644 (file)
index 0000000..d609a7c
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/notification-icons.png differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/prometheus_logo.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/assets/prometheus_logo.svg
new file mode 100644 (file)
index 0000000..5c51f66
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="115.333px"
+   height="114px"
+   viewBox="0 0 115.333 114"
+   enable-background="new 0 0 115.333 114"
+   xml:space="preserve"
+   sodipodi:docname="prometheus_logo_orange.svg"
+   inkscape:version="0.92.1 r15371"><metadata
+     id="metadata4495"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs4493" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1484"
+     inkscape:window-height="886"
+     id="namedview4491"
+     showgrid="false"
+     inkscape:zoom="5.2784901"
+     inkscape:cx="60.603667"
+     inkscape:cy="60.329656"
+     inkscape:window-x="54"
+     inkscape:window-y="7"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><g
+     id="Layer_2" /><path
+     style="fill:#e6522c;fill-opacity:1"
+     inkscape:connector-curvature="0"
+     id="path4486"
+     d="M 56.667,0.667 C 25.372,0.667 0,26.036 0,57.332 c 0,31.295 25.372,56.666 56.667,56.666 31.295,0 56.666,-25.371 56.666,-56.666 0,-31.296 -25.372,-56.665 -56.666,-56.665 z m 0,106.055 c -8.904,0 -16.123,-5.948 -16.123,-13.283 H 72.79 c 0,7.334 -7.219,13.283 -16.123,13.283 z M 83.297,89.04 H 30.034 V 79.382 H 83.298 V 89.04 Z M 83.106,74.411 H 30.186 C 30.01,74.208 29.83,74.008 29.66,73.802 24.208,67.182 22.924,63.726 21.677,60.204 c -0.021,-0.116 6.611,1.355 11.314,2.413 0,0 2.42,0.56 5.958,1.205 -3.397,-3.982 -5.414,-9.044 -5.414,-14.218 0,-11.359 8.712,-21.285 5.569,-29.308 3.059,0.249 6.331,6.456 6.552,16.161 3.252,-4.494 4.613,-12.701 4.613,-17.733 0,-5.21 3.433,-11.262 6.867,-11.469 -3.061,5.045 0.793,9.37 4.219,20.099 1.285,4.03 1.121,10.812 2.113,15.113 C 63.797,33.534 65.333,20.5 71,16 c -2.5,5.667 0.37,12.758 2.333,16.167 3.167,5.5 5.087,9.667 5.087,17.548 0,5.284 -1.951,10.259 -5.242,14.148 3.742,-0.702 6.326,-1.335 6.326,-1.335 l 12.152,-2.371 c 10e-4,-10e-4 -1.765,7.261 -8.55,14.254 z" /></svg>
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.8a53d98b04768bd15706.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/common.8a53d98b04768bd15706.js
new file mode 100644 (file)
index 0000000..85fd813
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{pYKc:function(l,n,e){"use strict";var t=e("CcnG"),u=e("WiuZ"),i=e("wnGv"),s=e("Jm/i"),a=e("Ip0R");e("ppaS"),e.d(n,"a",function(){return c}),e.d(n,"b",function(){return r});var c=t["\u0275crt"]({encapsulation:0,styles:[[".select-menu-edit{margin-left:-20px}.badge-remove[_ngcontent-%COMP%]{color:#fff}"]],data:{}});function o(l){return t["\u0275vid"](0,[(l()(),t["\u0275eld"](0,0,null,null,5,"span",[],null,null,null,null,null)),(l()(),t["\u0275eld"](1,0,null,null,4,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275eld"](2,0,null,null,1,"span",[["class","margin-right-sm"]],null,null,null,null,null)),(l()(),t["\u0275ted"](3,null,["",""])),(l()(),t["\u0275eld"](4,0,null,null,1,"a",[["class","badge-remove"]],null,[[null,"click"]],function(l,n,e){var u=!0;return"click"===n&&(u=!1!==t["\u0275nov"](l.parent,2).removeItem(l.context.$implicit)&&u),u},null,null)),(l()(),t["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-times"]],null,null,null,null,null))],null,function(l,n){l(n,3,0,n.context.$implicit)})}function r(l){return t["\u0275vid"](0,[t["\u0275qud"](402653184,1,{cdSelect:0}),(l()(),t["\u0275eld"](1,0,null,null,2,"cd-select",[["elemClass","margin-right-sm select-menu-edit"]],null,[[null,"selection"]],function(l,n,e){var t=!0;return"selection"===n&&(t=!1!==l.component.selection.emit(e)&&t),t},u.b,u.a)),t["\u0275did"](2,638976,[[1,4],["cdSelect",4]],0,i.a,[s.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"],selectionLimit:[4,"selectionLimit"],customBadges:[5,"customBadges"],customBadgeValidators:[6,"customBadgeValidators"]},{selection:"selection"}),(l()(),t["\u0275eld"](3,0,null,0,0,"i",[["class","fa fa-fw fa-pencil"]],null,null,null,null,null)),(l()(),t["\u0275and"](16777216,null,null,1,null,o)),t["\u0275did"](5,278528,null,0,a.NgForOf,[t.ViewContainerRef,t.TemplateRef,t.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(l,n){var e=n.component;l(n,2,0,"margin-right-sm select-menu-edit",e.data,e.options,e.messages,e.selectionLimit,e.customBadges,e.customBadgeValidators),l(n,5,0,e.data)},null)}},ppaS:function(l,n,e){"use strict";e.d(n,"a",function(){return i});var t=e("CcnG"),u=e("DNAf"),i=function(){return function(l){this.i18n=l,this.data=[],this.options=[],this.messages=new u.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new t.EventEmitter}}()}}]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/favicon.ico b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/favicon.ico
new file mode 100644 (file)
index 0000000..90e538b
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/favicon.ico differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.35e77a38ca9d85c4e897.eot b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.35e77a38ca9d85c4e897.eot
new file mode 100644 (file)
index 0000000..b96d208
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.35e77a38ca9d85c4e897.eot differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2
new file mode 100644 (file)
index 0000000..f3520b5
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff
new file mode 100644 (file)
index 0000000..477da44
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.78dcc9c4999659b8026a.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.78dcc9c4999659b8026a.svg
new file mode 100644 (file)
index 0000000..e997204
--- /dev/null
@@ -0,0 +1,2849 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2019-2-18: Created with FontForge (http://fontforge.org)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20180321 at Mon Feb 18 18:29:30 2019
+ By Julien Deswaef
+The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io
+</metadata>
+<defs>
+<font id="forkawesome" horiz-adv-x="1536" >
+  <font-face 
+    font-family="forkawesome"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="1792"
+    panose-1="2 0 5 3 0 0 0 0 0 0"
+    ascent="1536"
+    descent="-256"
+    bbox="-0.653061 -264 2304.01 1538"
+    underline-thickness="89.6"
+    underline-position="-179.2"
+    unicode-range="U+0020-F32B"
+  />
+    <missing-glyph />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="200" 
+ />
+    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1830" 
+d="M572 137l-50 -50c-13 -13 -33 -13 -46 0l-466 466c-13 13 -13 33 0 46l466 466c13 13 33 13 46 0l50 -50c13 -13 13 -33 0 -46l-393 -393l393 -393c13 -13 13 -33 0 -46zM1163 1204l-373 -1291c-5 -17 -23 -27 -39 -22l-62 17c-17 5 -27 23 -22 40l373 1291
+c5 17 23 27 39 22l62 -17c17 -5 27 -23 22 -40zM1820 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46z" />
+    <glyph glyph-name="chevron-circle-right" unicode="&#xf138;" 
+d="M717 141l454 454c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l307 -307l-307 -307c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+    <glyph glyph-name="crosshairs" unicode="&#xf05b;" 
+d="M1197 512h-109c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h109c-43 144 -157 258 -301 301v-109c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v109c-144 -43 -258 -157 -301 -301h109c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-109c43 -144 157 -258 301 -301
+v109c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-109c144 43 258 157 301 301zM1536 704v-128c0 -35 -29 -64 -64 -64h-143c-49 -215 -218 -384 -433 -433v-143c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v143c-215 49 -384 218 -433 433h-143c-35 0 -64 29 -64 64v128
+c0 35 29 64 64 64h143c49 215 218 384 433 433v143c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-143c215 -49 384 -218 433 -433h143c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="gg" unicode="&#xf260;" horiz-adv-x="1920" 
+d="M672 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1248 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
+    <glyph glyph-name="wpforms" unicode="&#xf298;" 
+d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240c0 11 -9 20 -20 20h-32l-378 -256l-210 171l-210 -171l-378 256h-32c-11 0 -20 -9 -20 -20v-1240
+c0 -11 9 -20 20 -20h1240c11 0 20 9 20 20zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240c0 -82 -66 -148 -148 -148h-1240c-82 0 -148 66 -148 148v1240c0 82 66 148 148 148h1240c82 0 148 -66 148 -148z" />
+    <glyph glyph-name="angle-double-left" unicode="&#xf100;" horiz-adv-x="966" 
+d="M582 160c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23zM966 160
+c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792" 
+d="M256 224v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 608v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 992v-192c0 -17 -15 -32 -32 -32h-192
+c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM256 1376v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192
+c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 608v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344
+c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32z" />
+    <glyph glyph-name="archlinux" unicode="&#xf323;" horiz-adv-x="1794" 
+d="M897 1538c164 -386 203 -504 682 -1397c-61 36 -138 70 -247 98c158 -81 236 -156 310 -214c47 -87 97 -179 152 -281c-281 162 -499 263 -702 303c7 31 11 64 12 98c5 182 -83 337 -195 347s-207 -131 -212 -313v-9c0 -43 4 -84 13 -122c-205 -39 -426 -140 -710 -304
+c362 650 540 989 654 1226c60 -50 139 -99 256 -147c-109 76 -175 143 -230 201c89 190 137 318 217 514z" />
+    <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792" 
+d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 288v-192c0 -53 -43 -96 -96 -96h-320
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
+h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192
+c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="angle-left" unicode="&#xf104;" horiz-adv-x="582" 
+d="M582 992c0 -8 -4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23s-4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -14 10 -23z" />
+    <glyph glyph-name="recycle" unicode="&#xf1b8;" horiz-adv-x="1760" 
+d="M820 367l-15 -368l-2 -22l-420 29c-52 4 -95 53 -114 97c-40 93 12 203 42 292c0 0 77 -12 509 -28zM433 953l180 -379l-147 92c-225 -257 -246 -448 -246 -448l-190 357c-39 58 -4 121 -4 121s35 63 114 188l-140 86zM1664 436l-188 -359c-26 -65 -98 -71 -98 -71
+s-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173c339 -41 509 50 509 50zM879 1360c0 0 -47 -62 -265 -435l-317 187l-19 12l225 356c28 44 91 60 140 55c100 -9 172 -106 236 -175zM1534 1053l212 -363c27 -45 11 -108 -15 -150c-54 -84 -174 -104 -264 -129
+c0 0 -34 71 -265 436l313 195zM1391 1279l142 83l-220 -373l-419 20l151 86c-120 319 -279 429 -279 429l405 -1c70 6 108 -54 108 -54s39 -61 112 -190z" />
+    <glyph glyph-name="file-code-o" unicode="&#xf1c9;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM480 768c11 14 31 17 45 6l51 -38c14 -11 17 -31 6 -45l-182 -243l182 -243c11 -14 8 -34 -6 -45l-51 -38c-14 -11 -34 -8 -45 6l-226 301c-8 11 -8 27 0 38zM1282 467c8 -11 8 -27 0 -38l-226 -301c-11 -14 -31 -17 -45 -6l-51 38c-14 11 -17 31 -6 45
+l182 243l-182 243c-11 14 -8 34 6 45l51 38c14 11 34 8 45 -6zM662 6c-18 3 -29 20 -26 37l138 831c3 18 20 29 37 26l63 -10c18 -3 29 -20 26 -37l-138 -831c-3 -18 -20 -29 -37 -26z" />
+    <glyph glyph-name="thumb-tack" unicode="&#xf08d;" horiz-adv-x="1152" 
+d="M480 672v448c0 18 -14 32 -32 32s-32 -14 -32 -32v-448c0 -18 14 -32 32 -32s32 14 32 32zM1152 320c0 -35 -29 -64 -64 -64h-429l-51 -483c-2 -16 -15 -29 -31 -29h-1c-16 0 -29 11 -32 27l-76 485h-404c-35 0 -64 29 -64 64c0 164 124 320 256 320v512
+c-70 0 -128 58 -128 128s58 128 128 128h640c70 0 128 -58 128 -128s-58 -128 -128 -128v-512c132 0 256 -156 256 -320z" />
+    <glyph glyph-name="fax" unicode="&#xf1ac;" horiz-adv-x="1792" 
+d="M288 1152c88 0 160 -72 160 -160v-1088c0 -88 -72 -160 -160 -160h-128c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h128zM1664 989c76 -44 128 -127 128 -221v-768c0 -141 -115 -256 -256 -256h-864c-88 0 -160 72 -160 160v1536c0 53 43 96 96 96h672
+c53 0 127 -31 164 -68l152 -152c37 -37 68 -111 68 -164v-163zM928 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM928 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128
+c18 0 32 14 32 32zM928 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 256v128
+c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 0v128c0 18 -14 32 -32 32h-128
+c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128
+c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1536 896v256h-160c-53 0 -96 43 -96 96v160h-640v-512h896z" />
+    <glyph glyph-name="xing-square" unicode="&#xf169;" 
+d="M685 771c0 0 0 1 -126 222c-10 16 -24 34 -52 34h-184c-12 0 -21 -4 -26 -11c-5 -8 -4 -19 1 -29l125 -216v-1l-196 -346c-6 -10 -5 -20 0 -28s13 -13 24 -13h185c27 0 41 19 50 36c192 339 199 352 199 352zM1309 1268c-5 8 -13 12 -24 12h-187c-27 0 -39 -17 -49 -35
+c-398 -706 -411 -729 -411 -729s0 -1 262 -481c9 -16 23 -35 52 -35h184c11 0 20 4 25 12s5 18 -1 28l-260 476v1l409 723c5 10 5 20 0 28zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="google-plus-official" unicode="&#xf2b3;" 
+d="M917 631c0 22 -2 43 -6 64h-362v-132h217c-16 -106 -116 -165 -217 -165c-133 0 -239 110 -239 242s106 242 239 242c56 0 112 -19 153 -59l104 101c-71 66 -160 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110
+h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="quora" unicode="&#xf2c4;" horiz-adv-x="1734" 
+d="M1226 749c0 417 -130 631 -435 631c-300 0 -430 -214 -430 -631c0 -415 130 -627 430 -627c48 0 91 5 131 17c-62 122 -135 245 -277 245c-27 0 -54 -4 -79 -16l-49 97c59 51 154 91 276 91c191 0 288 -92 366 -209c45 100 67 235 67 402zM1616 117h117
+c7 -72 -29 -373 -356 -373c-198 0 -302 115 -381 249c-65 -18 -135 -27 -205 -27c-400 0 -791 319 -791 783c0 468 392 787 791 787c407 0 794 -317 794 -787c0 -262 -122 -475 -299 -612c57 -86 116 -143 198 -143c90 0 126 69 132 123z" />
+    <glyph glyph-name="archive-org" unicode="&#xf2fc;" horiz-adv-x="1506" 
+d="M1459 1344l-27 -53h-1385l-24 53l717 189zM1430 1237v-140h-1380v140h1380zM1257 442c-3 65 -4 124 -3 178c0 25 1 61 3 108s3 77 3 91c1 22 3 57 5 104s4 82 5 107c0 1 1 3 1 7v10c47 10 93 10 138 0c21 -325 21 -630 0 -916c-41 -11 -82 -12 -123 -1c-6 1 -10 2 -11 2
+s-3 2 -3 3s-1 4 -1 9c-3 34 -6 90 -10 165zM80 369v0c-1 9 -1 22 -1 38c0 5 -1 11 -1 21s-1 17 -1 22c0 26 0 45 -1 57v219c2 38 3 68 3 88c2 32 3 56 3 71c1 7 1 15 1 26c0 3 1 9 1 17s1 14 1 18c0 7 0 10 1 12c0 12 0 22 1 28c0 11 1 20 2 27c0 11 0 19 1 24c0 4 2 6 7 7
+c29 10 61 13 96 8c11 -2 22 -5 32 -9c2 0 3 -2 3 -6c2 -42 4 -74 6 -97c1 -20 2 -50 3 -90s2 -69 2 -88s1 -47 1 -85s1 -66 2 -84c-3 -131 -4 -199 -4 -206c-1 -47 -3 -112 -7 -194c-2 -27 -3 -47 -3 -60c0 -3 -2 -5 -6 -6c-28 -9 -59 -11 -94 -8c-4 1 -10 3 -18 5
+s-12 4 -14 5c-4 0 -6 1 -6 4c0 12 0 21 -1 26c0 4 -1 8 -1 14s-1 10 -1 13c0 9 0 15 -1 20c0 6 -1 13 -1 24v25c-1 6 -2 14 -2 25s0 19 -1 25c0 17 -1 30 -2 40v24zM464 255v0v25s-1 19 -1 25c-1 10 -1 23 -1 40c-1 5 -2 13 -2 24c0 16 0 29 -1 38v43c-1 13 -2 32 -2 57v29
+s-1 21 -1 27v102c0 27 0 47 1 61c0 18 1 48 3 88c0 17 1 40 3 71c0 11 0 20 1 26c0 15 1 27 2 35v12c0 4 1 9 1 15v13s1 7 2 13s1 10 1 14l2 24c0 4 1 6 5 7c30 10 62 13 96 8c11 -2 22 -5 32 -9c4 0 6 -2 6 -6l4 -97l4 -178c2 -78 3 -135 3 -169c0 -24 -1 -59 -1 -104
+s-1 -79 -2 -102c-1 -47 -3 -112 -7 -194c0 -13 -1 -33 -3 -60c0 -3 -2 -5 -7 -6c-26 -10 -57 -12 -92 -8c-4 0 -7 1 -11 2s-8 3 -13 4s-8 3 -10 4c-2 0 -3 1 -3 4c-1 7 -1 15 -1 26c-1 7 -2 16 -2 27c-2 4 -3 10 -3 20zM1046 961v0c1 -26 3 -63 4 -114s2 -89 2 -114
+c2 -67 3 -113 3 -140c0 -22 -1 -53 -1 -95s-1 -73 -2 -94c-1 -45 -3 -111 -7 -199c-1 -8 -2 -20 -2 -36s0 -28 -1 -36c0 -3 -2 -5 -7 -6c-27 -9 -58 -11 -93 -8c-5 1 -12 2 -20 5s-12 5 -13 5c-3 0 -5 1 -5 5c0 12 0 31 -2 56s-4 45 -5 58c0 15 -1 40 -2 73s-2 59 -3 77
+c0 13 -1 33 -2 60s-1 47 -1 60v68c-1 46 -1 69 0 70c1 55 3 136 7 242c2 48 4 94 8 139c0 4 2 6 6 7c29 10 61 13 95 8c12 -2 23 -5 33 -9c3 0 4 -2 4 -6zM60 -18v98h1390v-98h-1390zM0 -128v73h1506v-73h-1506z" />
+    <glyph glyph-name="volume-up" unicode="&#xf028;" horiz-adv-x="1664" 
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
+c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235zM1408 640c0 -203 -122 -392 -310 -471c-8 -3 -17 -5 -25 -5c-36 0 -65 29 -65 64c0 28 16 47 39 59c27 14 52 26 76 44c99 72 157 187 157 309s-58 237 -157 309
+c-24 18 -49 30 -76 44c-23 12 -39 31 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c188 -79 310 -268 310 -471zM1664 640c0 -307 -183 -585 -465 -706c-8 -3 -17 -5 -26 -5c-35 0 -64 29 -64 64c0 29 15 45 39 59c14 8 30 13 45 21c28 15 56 32 82 51c164 121 261 312 261 516
+s-97 395 -261 516c-26 19 -54 36 -82 51c-15 8 -31 13 -45 21c-24 14 -39 30 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c282 -121 465 -399 465 -706z" />
+    <glyph glyph-name="spoon" unicode="&#xf1b1;" horiz-adv-x="640" 
+d="M640 1008c0 -200 -87 -331 -209 -379l45 -821c2 -35 -25 -64 -60 -64h-192c-35 0 -62 29 -60 64l45 821c-122 48 -209 179 -209 379c0 256 143 528 320 528s320 -272 320 -528z" />
+    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="864" 
+d="M864 1524v-264h-157c-123 0 -146 -59 -146 -144v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218c0 253 155 391 381 391c108 0 201 -8 228 -12z" />
+    <glyph glyph-name="universal-access" unicode="&#xf29a;" horiz-adv-x="1792" 
+d="M1374 879c-8 34 -42 55 -77 47c-143 -34 -273 -62 -401 -62s-258 28 -401 62c-35 8 -69 -13 -77 -47c-8 -35 13 -69 47 -77c106 -25 205 -47 303 -58c-4 -338 -41 -432 -83 -540l-9 -21c-13 -33 4 -70 37 -83c7 -3 15 -4 23 -4c26 0 50 15 60 41l8 20
+c28 72 54 139 71 259h42c17 -120 43 -187 71 -259l8 -20c10 -26 34 -41 60 -41c8 0 16 1 23 4c33 13 50 50 37 83l-9 21c-42 108 -79 202 -83 540c98 11 197 33 303 58c34 8 55 42 47 77zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
+s128 57 128 128zM1600 640c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704s704 -315 704 -704zM896 1408c-423 0 -768 -345 -768 -768s345 -768 768 -768s768 345 768 768s-345 768 -768 768zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896
+s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="cloud-download" unicode="&#xf0ed;" horiz-adv-x="1920" 
+d="M1280 608c0 18 -14 32 -32 32h-224v352c0 17 -15 32 -32 32h-192c-17 0 -32 -15 -32 -32v-352h-224c-18 0 -32 -15 -32 -32c0 -8 3 -17 9 -23l352 -352c6 -6 14 -9 23 -9c8 0 17 3 23 9l351 351c6 7 10 15 10 24zM1920 384c0 -212 -172 -384 -384 -384h-1088
+c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
+    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664" 
+d="M458 653c-42 92 -74 214 -74 371h-256v-96c0 -98 133 -234 330 -275zM1536 928v96h-256c0 -157 -32 -279 -74 -371c197 41 330 177 330 275zM1664 1056v-128c0 -190 -230 -400 -542 -415c-40 -51 -77 -81 -95 -95c-53 -48 -67 -98 -67 -162s32 -128 128 -128
+s192 -64 192 -160v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 96 96 160 192 160s128 64 128 128s-14 114 -67 162c-18 14 -55 44 -95 95c-312 15 -542 225 -542 415v128c0 53 43 96 96 96h288v96c0 88 72 160 160 160h576c88 0 160 -72 160 -160v-96h288
+c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="caret-up" unicode="&#xf0d8;" horiz-adv-x="1024" 
+d="M1024 320c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1637" 
+d="M1163 955l293 293l-107 107l-293 -293zM1610 1248c0 -17 -6 -33 -18 -45l-1286 -1286c-12 -12 -28 -18 -45 -18s-33 6 -45 18l-198 198c-12 12 -18 28 -18 45s6 33 18 45l1286 1286c12 12 28 18 45 18s33 -6 45 -18l198 -198c12 -12 18 -28 18 -45zM259 1438l98 -30
+l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM609 1276l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1539 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM899 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
+    <glyph glyph-name="hourglass-o" unicode="&#xf250;" 
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-202 -76 -406 -343 -406 -708h1024c0 365 -204 632 -406 708c-25 9 -42 33 -42 60
+s17 51 42 60z" />
+    <glyph glyph-name="balance-scale" unicode="&#xf24e;" horiz-adv-x="2176" 
+d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280c-19 -54 -63 -98 -117 -117v-1291h608c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1344c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h608v1291c-54 19 -98 63 -117 117h-491c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h491c27 75 97 128 181 128s154 -53 181 -128h491c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-491zM1088 1264c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM2176 384c0 -206 -285 -288 -448 -288s-448 82 -448 288
+c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735zM896 384c0 -206 -285 -288 -448 -288s-448 82 -448 288c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735z" />
+    <glyph glyph-name="upload" unicode="&#xf093;" horiz-adv-x="1664" 
+d="M1280 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 288v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h427c27 -74 98 -128 181 -128
+h256c83 0 154 54 181 128h427c53 0 96 -43 96 -96zM1339 936c-10 -24 -33 -40 -59 -40h-256v-448c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v448h-256c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l448 448c12 13 29 19 45 19s33 -6 45 -19l448 -448
+c19 -18 24 -46 14 -69z" />
+    <glyph glyph-name="magnet" unicode="&#xf076;" 
+d="M1536 704v-128c0 -408 -323 -704 -768 -704s-768 296 -768 704v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-128c0 -183 213 -192 256 -192s256 9 256 192v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM512 1344v-384c0 -35 -29 -64 -64 -64h-384
+c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM1536 1344v-384c0 -35 -29 -64 -64 -64h-384c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="adjust" unicode="&#xf042;" 
+d="M768 96v1088c-300 0 -544 -244 -544 -544s244 -544 544 -544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="subway" unicode="&#xf239;" 
+d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM288 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160
+s72 -160 160 -160zM704 768v512h-544v-512h544zM1248 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM1408 768v512h-576v-512h576z" />
+    <glyph glyph-name="unslpash" unicode="&#xf325;" 
+d="M1052 728h484v-856h-1536v856h484v-428h568v428zM484 1408h568v-428h-568v428z" />
+    <glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="1612" 
+d="M1593 728l-742 -741c-25 -25 -65 -25 -90 0l-742 741c-25 25 -25 66 0 91l166 165c25 25 65 25 90 0l531 -531l531 531c25 25 65 25 90 0l166 -165c25 -25 25 -66 0 -91z" />
+    <glyph glyph-name="location-arrow" unicode="&#xf124;" horiz-adv-x="1408" 
+d="M1401 1187l-640 -1280c-11 -22 -33 -35 -57 -35c-5 0 -10 1 -15 2c-29 7 -49 32 -49 62v576h-576c-30 0 -55 20 -62 49s7 59 33 72l1280 640c9 5 19 7 29 7c17 0 33 -6 45 -19c20 -19 25 -49 12 -74z" />
+    <glyph glyph-name="check-circle" unicode="&#xf058;" 
+d="M1284 802c0 17 -6 34 -18 46l-91 90c-12 12 -28 19 -45 19s-33 -7 -45 -19l-408 -407l-226 226c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -90c-12 -12 -18 -29 -18 -46s6 -33 18 -45l362 -362c12 -12 29 -19 45 -19c17 0 34 7 46 19l543 543c12 12 18 28 18 45z
+M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="arrow-down" unicode="&#xf063;" horiz-adv-x="1558" 
+d="M1558 704c0 -34 -14 -67 -37 -90l-651 -652c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-651 652c-24 23 -38 56 -38 90s14 67 38 91l74 75c24 23 57 37 91 37s67 -14 90 -37l294 -294v704c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-704l294 294c23 23 56 37 90 37
+s67 -14 91 -37l75 -75c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="bicycle" unicode="&#xf206;" horiz-adv-x="2304" 
+d="M762 384h-314c-53 0 -83 60 -51 102l188 251c-42 20 -88 31 -137 31c-176 0 -320 -144 -320 -320s144 -320 320 -320c155 0 284 110 314 256zM576 512h186c-12 56 -38 107 -75 148zM1056 512l288 384h-480l-99 -132c67 -66 112 -154 126 -252h165zM2176 448
+c0 176 -144 320 -320 320c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320s320 144 320 320zM2304 448c0 -247 -201 -448 -448 -448s-448 201 -448 448
+c0 132 58 251 149 333l-65 98l-353 -469c-12 -17 -31 -26 -51 -26h-197c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c78 0 151 -20 215 -55l137 183h-224c-35 0 -64 29 -64 64s29 64 64 64h384v-128h435l-85 128h-222c-35 0 -64 29 -64 64
+s29 64 64 64h256c21 0 41 -11 53 -28l267 -400c58 28 123 44 192 44c247 0 448 -201 448 -448z" />
+    <glyph glyph-name="instagram" unicode="&#xf16d;" 
+d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1162 640c0 -218 -176 -394 -394 -394s-394 176 -394 394s176 394 394 394s394 -176 394 -394zM1270 1050c0 -51 -41 -92 -92 -92s-92 41 -92 92s41 92 92 92s92 -41 92 -92z
+M768 1270c-112 0 -352 9 -453 -31c-35 -14 -61 -31 -88 -58s-44 -53 -58 -88c-40 -101 -31 -341 -31 -453s-9 -352 31 -453c14 -35 31 -61 58 -88s53 -44 88 -58c101 -40 341 -31 453 -31s352 -9 453 31c35 14 61 31 88 58s44 53 58 88c40 101 31 341 31 453s9 352 -31 453
+c-14 35 -31 61 -58 88s-53 44 -88 58c-101 40 -341 31 -453 31zM1536 640c0 -106 1 -211 -5 -317c-6 -123 -34 -232 -124 -322s-199 -118 -322 -124c-106 -6 -211 -5 -317 -5s-211 -1 -317 5c-123 6 -232 34 -322 124s-118 199 -124 322c-6 106 -5 211 -5 317s-1 211 5 317
+c6 123 34 232 124 322s199 118 322 124c106 6 211 5 317 5s211 1 317 -5c123 -6 232 -34 322 -124s118 -199 124 -322c6 -106 5 -211 5 -317z" />
+    <glyph glyph-name="caret-square-o-up" unicode="&#xf151;" 
+d="M1145 419c-11 -22 -33 -35 -57 -35h-640c-24 0 -46 13 -57 35c-11 21 -9 47 5 66l320 448c12 17 31 27 52 27s40 -10 52 -27l320 -448c14 -19 16 -45 5 -66zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960c17 0 32 15 32 32
+zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664" 
+d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v224h-864c-18 0 -32 14 -32 32v864h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224v224c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-224h851l246 247c13 12 33 12 46 0c12 -13 12 -33 0 -46l-247 -246v-851h224c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="external-link" unicode="&#xf08e;" horiz-adv-x="1792" 
+d="M1408 608v-320c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v320c0 18 14 32 32 32
+h64c18 0 32 -14 32 -32zM1792 1472v-512c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-176 176l-652 -652c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l652 652l-176 176c-12 12 -19 28 -19 45c0 35 29 64 64 64h512c35 0 64 -29 64 -64z
+" />
+    <glyph glyph-name="arrow-circle-down" unicode="&#xf0ab;" 
+d="M1284 639c0 17 -6 33 -18 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-189 -189v502c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-502l-189 189c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l362 -362l91 -91
+c12 -12 28 -18 45 -18s33 6 45 18l91 91l362 362c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="font-awesome" unicode="&#xf2b4;" horiz-adv-x="1499" 
+d="M1499 1024v-839c0 -31 -20 -54 -49 -62c-107 -32 -227 -52 -338 -52c-150 0 -277 59 -443 59c-123 0 -250 -20 -370 -48v-338h-160v1368c-84 33 -139 115 -139 205c0 121 98 219 219 219s219 -98 219 -219c0 -90 -55 -172 -139 -205v-68c112 26 228 44 343 44
+c66 0 132 -5 198 -15c86 -13 173 -43 261 -43c55 0 111 7 165 18c41 8 135 40 169 40c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="paper-plane" unicode="&#xf1d8;" horiz-adv-x="1792" 
+d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-453 185l-242 -295c-12 -15 -30 -23 -49 -23c-7 0 -15 1 -22 4c-25 9 -42 33 -42 60v349l864 1059l-1069 -925l-395 162c-23 9 -38 30 -40 55
+c-1 24 11 47 32 59l1664 960c10 6 21 9 32 9c13 0 26 -4 36 -11z" />
+    <glyph glyph-name="meanpath" unicode="&#xf20c;" 
+d="M1311 694v-114c0 -32 -19 -52 -51 -52h-202c-32 0 -52 20 -52 52v114c0 32 20 52 52 52h202c32 0 51 -20 51 -52zM821 464v250c0 71 -47 118 -118 118h-133c-45 0 -78 -19 -96 -52c-18 33 -51 52 -96 52h-130c-70 0 -118 -47 -118 -118v-250c0 -15 7 -22 21 -22h55
+c15 0 22 7 22 22v230c0 32 19 52 52 52h94c32 0 52 -20 52 -52v-230c0 -15 6 -22 21 -22h54c15 0 22 7 22 22v230c0 32 20 52 52 52h97c32 0 51 -20 51 -52v-230c0 -15 7 -22 22 -22h55c14 0 21 7 21 22zM1410 560v154c0 71 -48 118 -119 118h-264c-71 0 -119 -47 -119 -118
+v-410c0 -15 8 -21 22 -21h55c15 0 21 6 21 21v180c19 -26 49 -42 94 -42h191c71 0 119 48 119 118zM1536 1176v-1072c0 -128 -104 -232 -232 -232h-1072c-128 0 -232 104 -232 232v1072c0 128 104 232 232 232h1072c128 0 232 -104 232 -232z" />
+    <glyph glyph-name="long-arrow-left" unicode="&#xf177;" horiz-adv-x="1728" 
+d="M1728 736v-192c0 -18 -14 -32 -32 -32h-1248v-224c0 -13 -7 -24 -19 -29s-25 -3 -35 5l-384 350c-6 6 -10 14 -10 23s4 18 10 24l384 354c10 9 23 11 35 6c11 -5 19 -16 19 -29v-224h1248c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="download" unicode="&#xf019;" horiz-adv-x="1664" 
+d="M1280 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 416v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h465l135 -136
+c37 -36 85 -56 136 -56s99 20 136 56l136 136h464c53 0 96 -43 96 -96zM1339 985c10 -24 5 -52 -14 -70l-448 -448c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-448 448c-19 18 -24 46 -14 70c10 23 33 39 59 39h256v448c0 35 29 64 64 64h256c35 0 64 -29 64 -64v-448h256
+c26 0 49 -16 59 -39z" />
+    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408" 
+d="M555 15c44 -19 92 -32 140 -32c228 0 376 91 376 335c0 62 -8 127 -41 180c-93 150 -227 158 -388 158c-30 0 -73 0 -101 -10c0 -106 -1 -212 -1 -317c0 -69 -9 -256 15 -314zM541 761c36 -6 73 -7 109 -7c206 0 353 58 353 289c0 195 -173 262 -340 262
+c-44 0 -87 -6 -130 -13c0 -101 8 -202 8 -303c0 -53 -1 -106 -1 -159c0 -23 0 -46 1 -69zM0 -128l2 94c64 16 129 17 191 43c35 59 30 163 30 230c0 22 2 978 -22 1025c-15 29 -162 36 -195 40l-4 83c238 4 476 21 713 21c45 0 91 -1 136 -1c226 0 475 -108 475 -368
+c0 -179 -136 -246 -277 -310c190 -43 359 -172 359 -382c0 -344 -313 -458 -606 -458c-88 0 -176 6 -264 6c-179 0 -360 -16 -538 -23z" />
+    <glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="1024" 
+d="M1024 832c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="chevron-left" unicode="&#xf053;" horiz-adv-x="1036" 
+d="M1017 1235l-531 -531l531 -531c25 -25 25 -65 0 -90l-166 -166c-25 -25 -65 -25 -90 0l-742 742c-25 25 -25 65 0 90l742 742c25 25 65 25 90 0l166 -166c25 -25 25 -65 0 -90z" />
+    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1152" 
+d="M1152 960c0 -296 -224 -540 -512 -572v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619
+c22 272 238 495 508 525c348 39 642 -232 642 -572zM128 960c0 -247 201 -448 448 -448s448 201 448 448s-201 448 -448 448s-448 -201 -448 -448z" />
+    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664" 
+d="M725 977l-170 -450c99 -1 198 -4 297 -4c19 0 38 1 57 2c-52 152 -113 307 -184 452zM0 -128l2 79c94 29 196 9 238 117l237 616l280 724h128c4 -7 8 -14 11 -21l205 -480c75 -177 144 -356 220 -532c45 -104 80 -211 130 -313c7 -16 21 -46 35 -57
+c33 -26 125 -32 172 -50c3 -19 6 -38 6 -57c0 -9 -1 -17 -1 -26c-127 0 -254 16 -381 16c-131 0 -262 -11 -393 -15c0 26 1 52 4 78l131 28c27 6 80 13 80 50c0 36 -129 333 -145 374l-450 2c-26 -58 -127 -320 -127 -358c0 -77 147 -80 204 -88c1 -19 1 -38 1 -58
+c0 -9 -1 -18 -2 -27c-116 0 -233 20 -349 20c-14 0 -34 -6 -48 -8c-63 -11 -125 -14 -188 -14z" />
+    <glyph glyph-name="pinterest" unicode="&#xf0d2;" 
+d="M1536 640c0 -424 -344 -768 -768 -768c-76 0 -148 11 -218 32c29 46 62 105 78 164c0 0 9 34 54 211c26 -51 104 -96 187 -96c247 0 415 225 415 527c0 227 -193 440 -487 440c-364 0 -548 -262 -548 -480c0 -132 50 -250 157 -294c17 -7 33 0 38 20c4 13 12 47 16 61
+c5 20 3 26 -11 43c-31 37 -51 84 -51 151c0 194 145 368 378 368c206 0 320 -126 320 -295c0 -221 -98 -408 -244 -408c-80 0 -140 66 -121 148c23 97 68 202 68 272c0 63 -34 116 -104 116c-82 0 -148 -85 -148 -199c0 0 0 -73 25 -122c-84 -356 -99 -418 -99 -418
+c-14 -58 -15 -123 -13 -177c-271 119 -460 389 -460 704c0 424 344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="sun" unicode="&#xf329;" horiz-adv-x="1707" 
+d="M1706 363c-3 -10 -11 -17 -20 -20l-292 -96v-306c0 -10 -5 -20 -13 -26c-9 -6 -19 -8 -29 -4l-292 94l-180 -248c-6 -8 -16 -13 -26 -13s-20 5 -26 13l-180 248l-292 -94c-10 -4 -20 -2 -29 4c-8 6 -13 16 -13 26v306l-292 96c-9 3 -17 10 -20 20s-2 21 4 29l180 248
+l-180 248c-6 9 -7 19 -4 29s11 17 20 20l292 96v306c0 10 5 20 13 26c9 6 19 8 29 4l292 -94l180 248c12 16 40 16 52 0l180 -248l292 94c10 4 20 2 29 -4c8 -6 13 -16 13 -26v-306l292 -96c9 -3 17 -10 20 -20s2 -20 -4 -29l-180 -248l180 -248c6 -8 7 -19 4 -29z" />
+    <glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="1664" 
+d="M1216 832c0 35 -29 64 -64 64h-128v128c0 35 -29 64 -64 64s-64 -29 -64 -64v-128h-128c-35 0 -64 -29 -64 -64s29 -64 64 -64h128v-128c0 -35 29 -64 64 -64s64 29 64 64v128h128c35 0 64 29 64 64zM640 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64
+c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="folder-open-o" unicode="&#xf115;" horiz-adv-x="1909" 
+d="M1781 605c0 28 -31 35 -53 35h-1088c-53 0 -123 -33 -157 -74l-294 -363c-9 -12 -18 -25 -18 -40c0 -28 31 -35 53 -35h1088c53 0 123 33 157 75l294 363c9 11 18 24 18 39zM640 768h768v160c0 53 -43 96 -96 96h-576c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320
+c-53 0 -96 -43 -96 -96v-853l256 315c58 71 165 122 256 122zM1909 605c0 -44 -19 -86 -46 -120l-295 -363c-57 -70 -166 -122 -256 -122h-1088c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224v-160h192
+c68 0 136 -31 166 -95c10 -21 15 -44 15 -68z" />
+    <glyph glyph-name="tachometer" unicode="&#xf0e4;" horiz-adv-x="1792" 
+d="M384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM576 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1004 351l101 382c8 34 -12 69 -46 78s-69 -12 -78 -46l-101 -382
+c-79 -6 -148 -61 -170 -142c-27 -103 35 -208 137 -235c103 -27 208 35 235 137c21 81 -13 163 -78 208zM1664 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
+s128 57 128 128zM1472 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1792 384c0 -172 -49 -338 -141 -483c-12 -18 -32 -29 -54 -29h-1402c-22 0 -42 11 -54 29c-92 144 -141 311 -141 483c0 494 402 896 896 896s896 -402 896 -896z
+" />
+    <glyph glyph-name="creative-commons" unicode="&#xf25e;" horiz-adv-x="1792" 
+d="M605 303c-200 0 -344 142 -344 337c0 192 147 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -55 56 -138 56c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11
+c10 -2 20 -8 24 -17l45 -82c7 -11 5 -26 -3 -36c-4 -4 -93 -104 -257 -104zM1235 303c-200 0 -344 142 -344 337c0 192 148 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -54 56 -138 56
+c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11c11 -2 20 -8 25 -17l45 -82c6 -11 4 -26 -4 -36c-4 -4 -92 -104 -257 -104zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM896 1536
+c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896z" />
+    <glyph glyph-name="clipboard" unicode="&#xf0ea;" horiz-adv-x="1792" 
+d="M768 -128h896v640h-416c-53 0 -96 43 -96 96v416h-384v-1152zM1024 1312v64c0 17 -15 32 -32 32h-704c-17 0 -32 -15 -32 -32v-64c0 -17 15 -32 32 -32h704c17 0 32 15 32 32zM1280 640h299l-299 299v-299zM1792 512v-672c0 -53 -43 -96 -96 -96h-960
+c-53 0 -96 43 -96 96v160h-544c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1088c53 0 96 -43 96 -96v-328c13 -8 25 -17 36 -28l408 -408c38 -38 68 -111 68 -164z" />
+    <glyph glyph-name="eercast" unicode="&#xf2da;" horiz-adv-x="1719" 
+d="M1304 752c35 54 -6 191 -128 272c-121 81 -276 75 -312 21c-35 -53 40 -19 177 -70c226 -84 228 -277 263 -223zM1667 178c-283 -696 -1558 -520 -1531 383c3 115 35 192 68 302c-211 -864 966 -1367 1449 -685c18 25 23 23 14 0zM1428 627c0 -283 -228 -513 -509 -513
+s-509 230 -509 513s228 513 509 513s509 -230 509 -513zM1715 915c-356 808 -1826 510 -1663 -589c-338 1101 1055 1606 1570 822c42 -64 90 -176 93 -233zM1653 573c17 338 -217 569 -533 656c-5 0 -27 9 14 13c772 -26 800 -1260 -41 -1274c274 76 543 266 560 605z" />
+    <glyph glyph-name="bar-chart" unicode="&#xf080;" horiz-adv-x="2048" 
+d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+    <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792" 
+d="M1792 416c0 -140 -70 -323 -127 -451c-11 -23 -22 -55 -37 -76c-7 -10 -14 -17 -28 -17c-20 0 -32 16 -32 35c0 16 4 34 5 50c3 41 5 82 5 123c0 477 -283 560 -714 560h-224v-256c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-512 512c-12 12 -19 28 -19 45s7 33 19 45
+l512 512c12 12 28 19 45 19c35 0 64 -29 64 -64v-256h224c328 0 736 -58 875 -403c42 -106 53 -221 53 -333z" />
+    <glyph glyph-name="hourglass-half" unicode="&#xf252;" 
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -146 33 -275 85 -384h854c52 109 85 238 85 384zM1223 192c-74 193 -207 330 -340 384h-230c-133 -54 -266 -191 -340 -384h910z" />
+    <glyph glyph-name="microchip" unicode="&#xf2db;" 
+d="M192 256v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 512v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 768v-128h-112c-9 0 -16 7 -16 16v16
+h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1024v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1280v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16
+h48v16c0 9 7 16 16 16h112zM1280 1440v-1472c0 -53 -43 -96 -96 -96h-832c-53 0 -96 43 -96 96v1472c0 53 43 96 96 96h832c53 0 96 -43 96 -96zM1536 208v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z
+M1536 464v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 720v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 976v-32
+c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 1232v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z" />
+    <glyph glyph-name="graduation-cap" unicode="&#xf19d;" horiz-adv-x="2304" 
+d="M1774 700l18 -316c8 -141 -287 -256 -640 -256s-648 115 -640 256l18 316l574 -181c16 -5 32 -7 48 -7s32 2 48 7zM2304 1024c0 -14 -9 -26 -22 -31l-1120 -352c-4 -1 -7 -1 -10 -1s-6 0 -10 1l-652 206c-57 -45 -97 -155 -105 -290c38 -22 63 -62 63 -109
+c0 -45 -23 -84 -58 -107l58 -433c1 -9 -2 -18 -8 -25s-15 -11 -24 -11h-192c-9 0 -18 4 -24 11s-9 16 -8 25l58 433c-35 23 -58 62 -58 107c0 48 27 89 65 111c6 117 36 243 98 330l-333 104c-13 5 -22 17 -22 31s9 26 22 31l1120 352c4 1 7 1 10 1s6 0 10 -1l1120 -352
+c13 -5 22 -17 22 -31z" />
+    <glyph glyph-name="info-circle" unicode="&#xf05a;" 
+d="M1024 160v160c0 18 -14 32 -32 32h-96v512c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h96v-320h-96c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h448c18 0 32 14 32 32zM896 1056v160c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
+v-160c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="2176" 
+d="M0 1404h128v-1532h-128v1532zM2048 1408h128v-1536h-128v1536zM256 1408h128v-1280h-128v1280zM512 1408h256v-1280h-256v1280zM1280 1408h256v-1280h-256v1280zM1792 1408h128v-1280h-128v1280zM1024 1408h128v-1280h-128v1280zM256 0h128v-128h-128v128zM512 0h128
+v-128h-128v128zM768 0h128v-128h-128v128zM1024 0h128v-128h-128v128zM1280 0h128v-128h-128v128zM1536 0h128v-128h-128v128zM1792 0h128v-128h-128v128z" />
+    <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792" 
+d="M1792 352v-192c0 -17 -15 -32 -32 -32h-1376v-192c0 -17 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 320c-6 6 -9 14 -9 22c0 9 3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -14 32 -32v-192h1376c17 0 32 -14 32 -32zM1792 896c0 -8 -3 -17 -9 -23l-320 -320
+c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-1376c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1376v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
+    <glyph glyph-name="hand-o-up" unicode="&#xf0a6;" 
+d="M1280 -64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 700c0 113 -46 189 -167 189c-19 0 -38 -2 -56 -5c-23 42 -80 65 -126 65c-24 0 -48 -6 -69 -18c-32 34 -72 53 -119 53c-32 0 -79 -14 -103 -35v331c0 69 -59 128 -128 128
+c-68 0 -128 -61 -128 -128v-576c-63 0 -128 96 -256 96c-96 0 -128 -75 -128 -160c0 -28 116 -79 139 -90c22 -12 44 -24 65 -37c53 -33 99 -71 145 -112c73 -64 163 -135 163 -241v-32h640v32c0 175 128 346 128 540zM1536 705c0 -112 -31 -218 -69 -322
+c-22 -61 -59 -160 -59 -223v-288c0 -71 -57 -128 -128 -128h-640c-71 0 -128 57 -128 128v288c0 48 -86 116 -119 145c-41 36 -82 70 -129 100c-93 58 -264 101 -264 235c0 159 87 288 256 288c44 0 87 -7 128 -22v374c0 138 117 256 255 256c140 0 257 -116 257 -256v-169
+c42 -3 82 -16 119 -37c14 2 29 3 43 3c64 0 128 -21 178 -60c189 2 300 -127 300 -312z" />
+    <glyph glyph-name="pause" unicode="&#xf04c;" 
+d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64zM640 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="github-square" unicode="&#xf092;" 
+d="M519 336c2 3 1 9 -3 13c-5 4 -11 5 -14 2c-2 -3 -1 -9 3 -13c5 -4 11 -5 14 -2zM491 377c-3 4 -8 6 -12 4c-3 -2 -3 -8 0 -12c4 -5 9 -7 12 -5s3 8 0 13zM450 417c1 2 -1 6 -5 8c-3 1 -7 1 -8 -2c-2 -3 0 -6 4 -8c4 -1 8 -1 9 2zM471 394c2 2 2 7 -2 10c-3 4 -8 5 -10 3
+c-3 -3 -2 -7 1 -11c3 -3 8 -5 11 -2zM557 319c1 4 -3 9 -9 11s-11 0 -13 -4c-1 -4 3 -9 9 -11s11 0 13 4zM599 316c0 4 -5 8 -12 8c-6 0 -10 -4 -10 -8s5 -8 11 -8s11 4 11 8zM638 323c-1 4 -7 6 -13 5s-10 -5 -9 -9s6 -7 12 -6s10 6 10 10zM1280 640
+c0 283 -229 512 -512 512s-512 -229 -512 -512c0 -226 147 -418 350 -486c26 -5 35 11 35 25c0 12 0 52 -1 95c0 0 -142 -31 -172 61c0 0 -23 59 -57 74c0 0 -46 32 4 32c0 0 50 -4 78 -53c45 -79 120 -56 149 -43c5 33 18 56 33 69c-114 13 -234 57 -234 253
+c0 56 20 101 53 137c-5 13 -23 65 5 136c43 13 141 -53 141 -53c41 12 84 17 128 17s87 -5 128 -17c0 0 98 66 141 53c28 -71 10 -123 5 -136c33 -36 53 -81 53 -137c0 -197 -120 -240 -234 -253c18 -16 35 -47 35 -95c0 -68 -1 -123 -1 -140c0 -14 9 -30 35 -25
+c203 68 350 260 350 486zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664" 
+d="M1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -70 -58 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704
+c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
+    <glyph glyph-name="mixcloud" unicode="&#xf289;" horiz-adv-x="2304" 
+d="M1645 438c0 80 -51 148 -121 175c-5 -31 -13 -62 -23 -92c-10 -32 -40 -52 -72 -52c-8 0 -16 1 -24 3c-41 14 -62 57 -49 97c15 46 23 94 23 143c0 250 -204 454 -455 454c-180 0 -342 -107 -414 -267c70 -18 135 -54 188 -106c30 -30 30 -79 0 -109s-79 -30 -109 0
+c-48 48 -112 75 -180 75c-141 0 -256 -114 -256 -255s115 -255 256 -255h1046c105 0 190 85 190 189zM1798 438c0 -189 -154 -342 -343 -342h-1046c-226 0 -409 183 -409 408c0 205 152 374 349 403c83 244 314 412 575 412c315 0 575 -241 605 -548
+c153 -33 269 -170 269 -333zM2048 438c0 -114 -33 -224 -97 -319c-15 -22 -39 -33 -64 -33c-15 0 -30 4 -43 13c-35 23 -44 71 -20 106c47 69 71 149 71 233c0 83 -24 164 -71 233c-24 35 -15 82 20 106s83 14 107 -21c64 -94 97 -204 97 -318zM2304 438
+c0 -159 -46 -312 -134 -443c-15 -22 -39 -34 -64 -34c-14 0 -29 4 -42 13c-35 24 -45 71 -21 106c70 106 108 230 108 358s-38 252 -108 357c-24 35 -14 83 21 106c35 24 82 15 106 -21c88 -130 134 -283 134 -442z" />
+    <glyph glyph-name="snowflake-o" unicode="&#xf2dc;" horiz-adv-x="1570" 
+d="M1519 419l-167 -33l186 -107c30 -17 41 -57 23 -87s-57 -41 -87 -23l-186 106l55 -160c28 -80 -94 -121 -121 -42l-102 300l-271 156v-313l208 -238c56 -63 -41 -148 -96 -84l-112 128v-214c0 -35 -29 -64 -64 -64s-64 29 -64 64v214l-112 -128c-55 -64 -152 21 -96 84
+l208 238v313l-271 -156l-102 -300c-27 -79 -149 -38 -121 42l55 160l-186 -106c-30 -18 -69 -7 -87 23s-7 70 23 87l186 107l-167 33c-83 17 -58 142 25 126l310 -62l271 157l-271 157l-310 -62c-4 -1 -9 -1 -13 -1c-76 0 -87 112 -12 127l167 33l-186 107
+c-30 17 -41 57 -23 87c18 31 57 41 87 23l186 -106l-55 160c-28 80 94 121 121 42l102 -300l271 -156v313l-208 238c-56 63 41 148 96 84l112 -128v214c0 35 29 64 64 64s64 -29 64 -64v-214l112 128c55 64 152 -21 96 -84l-208 -238v-313l271 156l102 300
+c27 79 149 38 121 -42l-55 -160l186 106c30 18 69 7 87 -23s7 -70 -23 -87l-186 -107l167 -33c75 -15 64 -127 -12 -127c-4 0 -9 0 -13 1l-310 62l-271 -157l271 -157l310 62c83 16 108 -109 25 -126z" />
+    <glyph glyph-name="flask" unicode="&#xf0c3;" horiz-adv-x="1458" 
+d="M1424 88c75 -119 22 -216 -119 -216h-1152c-141 0 -194 97 -119 216l503 793v399h-64c-35 0 -64 29 -64 64s29 64 64 64h512c35 0 64 -29 64 -64s-29 -64 -64 -64h-64v-399zM645 813l-272 -429h712l-272 429l-20 31v436h-128v-436z" />
+    <glyph glyph-name="pinterest-square" unicode="&#xf0d3;" 
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-725c33 47 87 128 108 210c0 0 9 34 53 209c27 -51 104 -95 186 -95c244 0 410 223 410 521c0 225 -191 435 -481 435c-361 0 -543 -259 -543 -475c0 -130 50 -246 156 -290c17 -7 33 0 38 19
+c3 13 11 47 15 61c5 19 3 26 -11 42c-30 37 -50 83 -50 150c0 192 144 363 374 363c204 0 316 -124 316 -291c0 -219 -97 -404 -241 -404c-79 0 -139 66 -120 147c23 96 67 200 67 269c0 62 -33 114 -102 114c-81 0 -146 -84 -146 -196c0 0 0 -72 24 -121
+c-83 -352 -98 -414 -98 -414c-22 -92 -13 -199 -7 -254h-183c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960z" />
+    <glyph glyph-name="fast-backward" unicode="&#xf049;" horiz-adv-x="1792" 
+d="M1747 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678
+c3 7 7 13 13 19l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
+    <glyph glyph-name="volume-control-phone" unicode="&#xf2a0;" horiz-adv-x="1408" 
+d="M617 -153c0 -34 -90 -84 -119 -95c-15 -6 -30 -8 -45 -8c-33 0 -66 9 -98 18c-164 49 -203 149 -268 290c-70 151 -87 295 -87 460s17 309 87 460c65 141 104 241 268 290c32 9 65 18 98 18c15 0 30 -2 45 -8c29 -11 119 -61 119 -95c0 -24 -53 -194 -64 -234
+c-6 -25 -8 -66 -27 -84c-13 -12 -34 -14 -51 -14c-47 0 -94 11 -141 11c-14 0 -35 -1 -47 -11c-16 -13 -24 -58 -30 -78c-24 -83 -37 -168 -37 -255s13 -172 37 -255c6 -20 14 -65 30 -78c12 -10 33 -11 47 -11c47 0 94 11 141 11c17 0 38 -2 51 -14c19 -18 21 -59 27 -84
+c11 -40 64 -210 64 -234zM776 760c-17 0 -33 7 -45 19c-25 25 -26 66 0 91c24 24 37 56 37 90s-13 66 -37 91c-26 25 -25 65 0 90s65 25 90 0c48 -48 75 -113 75 -181s-27 -133 -75 -181c-13 -12 -29 -19 -45 -19zM957 579c-17 0 -33 6 -45 19c-25 25 -25 65 0 90
+c72 73 112 169 112 272s-40 199 -112 272c-25 25 -25 65 0 90s65 25 90 0c97 -97 150 -225 150 -362s-53 -265 -150 -362c-12 -13 -29 -19 -45 -19zM1138 398c-17 0 -33 6 -45 19c-25 25 -25 65 0 90c120 121 187 282 187 453s-67 332 -187 453c-25 25 -25 65 0 90
+s65 25 90 0c145 -145 225 -338 225 -543s-80 -398 -225 -543c-12 -13 -29 -19 -45 -19z" />
+    <glyph glyph-name="biometric" unicode="&#xf32b;" horiz-adv-x="2304" 
+d="M1419 640c0 -147 -120 -267 -267 -267s-267 120 -267 267s120 267 267 267s267 -120 267 -267zM0 1222h2304v-521h-769c-29 185 -190 327 -383 327s-354 -142 -383 -327h-769v521zM0 579h769c29 -185 190 -327 383 -327s354 142 383 327h769v-521h-2304v521z" />
+    <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792" 
+d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 832v-256c0 -35 -29 -64 -64 -64h-1664
+c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="1792" 
+d="M903 -256c-386 0 -693 226 -834 549c-158 359 -32 934 249 1188l-11 -281c14 18 121 23 138 0c58 111 245 194 395 197c-57 -48 -189 -223 -178 -312c73 -23 185 -24 244 -28c18 -10 15 -71 -21 -121c0 0 -47 -65 -174 -88l15 -189l-139 67c-45 -114 63 -215 175 -196
+c124 21 168 102 255 97c86 -5 120 -53 109 -98c0 0 -14 -54 -107 -45c-79 -125 -184 -180 -354 -165c258 -214 606 -20 694 155c88 174 11 433 -77 506c104 -45 176 -91 214 -192c20 224 -83 478 -267 627c346 -101 557 -369 563 -797s-379 -874 -889 -874z" />
+    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1393" 
+d="M1393 321c-25 -79 -65 -163 -123 -250c-86 -131 -172 -196 -257 -196c-34 0 -80 11 -140 32c-59 22 -110 32 -151 32c-40 0 -88 -11 -142 -33c-55 -23 -99 -34 -132 -34c-103 0 -202 87 -301 259c-97 172 -147 339 -147 503c0 153 38 277 113 374c75 96 169 144 284 144
+c49 0 107 -10 177 -30c69 -20 115 -30 138 -30c29 0 77 11 143 34c66 22 124 34 173 34c80 0 151 -22 213 -65c35 -24 70 -58 104 -100c-52 -44 -90 -83 -114 -118c-43 -62 -65 -131 -65 -207c0 -82 23 -157 69 -223s99 -108 158 -126zM1017 1494c0 -41 -10 -87 -29 -136
+c-20 -50 -51 -96 -93 -138c-36 -36 -72 -60 -108 -72c-23 -7 -57 -13 -104 -17c2 99 28 185 78 257s134 121 250 148c2 -9 4 -16 5 -22c0 -7 1 -13 1 -20z" />
+    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920" 
+d="M832 448v128c0 18 -14 32 -32 32h-192v192c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-192h-192c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h192v-192c0 -18 14 -32 32 -32h128c18 0 32 14 32 32v192h192c18 0 32 14 32 32zM1408 384c0 71 -57 128 -128 128
+s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1664 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1920 512c0 -283 -229 -512 -512 -512c-130 0 -248 49 -338 128h-220c-90 -79 -208 -128 -338 -128c-283 0 -512 229 -512 512
+s229 512 512 512h896c283 0 512 -229 512 -512z" />
+    <glyph glyph-name="cc-stripe" unicode="&#xf1f5;" horiz-adv-x="2304" 
+d="M1597 633c0 -46 -7 -81 -21 -106c-12 -22 -31 -35 -52 -35c-15 0 -29 3 -41 9v224c26 27 49 30 57 30c38 0 57 -42 57 -122zM2035 669h-110c4 67 22 98 56 98s52 -32 54 -98zM476 534c0 84 -51 119 -134 149c-44 16 -68 29 -68 49c0 17 14 26 38 26c46 0 92 -17 124 -33
+l18 112c-25 12 -77 32 -149 32c-51 0 -93 -13 -123 -38c-32 -26 -48 -64 -48 -109c0 -82 50 -118 132 -147c52 -19 70 -32 70 -53c0 -20 -17 -31 -48 -31c-38 0 -101 19 -142 43l-18 -113c35 -20 100 -41 168 -41c54 0 98 13 129 37c34 27 51 66 51 117zM771 749l19 111h-96
+v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219c0 -57 15 -96 44 -120c25 -20 61 -30 111 -30c39 0 62 7 79 11v118c-9 -2 -30 -7 -44 -7c-29 0 -42 16 -42 50v197h77zM1087 724v139c-10 2 -19 3 -28 3c-42 0 -76 -22 -89 -62l-10 56h-131v-471h150v306c19 23 46 31 82 31
+c8 0 16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638c0 80 -15 141 -45 179c-27 35 -64 52 -111 52c-43 0 -81 -18 -117 -56l-8 47h-132v-645l150 25v151c23 -7 47 -11 68 -11c37 0 92 10 134 56c41 44 61 112 61 202zM1278 986c0 44 -35 79 -79 79s-79 -35 -79 -79
+s35 -80 79 -80s79 36 79 80zM2176 629c0 75 -16 134 -48 176c-33 42 -82 64 -144 64c-128 0 -207 -94 -207 -246c0 -84 21 -148 63 -188c37 -37 91 -55 161 -55c64 0 123 15 160 40l-16 103c-37 -20 -80 -31 -128 -31c-29 0 -49 6 -63 19c-16 13 -25 35 -28 66h248
+c1 7 2 41 2 52zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="quote-left" unicode="&#xf10d;" horiz-adv-x="1664" 
+d="M768 576v-384c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192zM1664 576v-384
+c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192z" />
+    <glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="2039" 
+d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1781 320l249 -249c6 -6 9 -14 9 -23c0 -8 -3 -16 -9 -22l-136 -136c-6 -6 -14 -9 -22 -9c-9 0 -17 3 -23 9l-249 249l-249 -249c-6 -6 -14 -9 -23 -9c-8 0 -16 3 -22 9
+l-136 136c-6 6 -9 14 -9 22c0 9 3 17 9 23l249 249l-249 249c-6 6 -9 14 -9 23c0 8 3 16 9 22l136 136c6 6 14 9 22 9c9 0 17 -3 23 -9l249 -249l249 249c6 6 14 9 23 9c8 0 16 -3 22 -9l136 -136c6 -6 9 -14 9 -22c0 -9 -3 -17 -9 -23zM1283 320l-181 -181
+c-24 -24 -37 -57 -37 -91c0 -33 13 -66 37 -90l83 -83c-14 -2 -29 -3 -44 -3h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c96 -76 194 -122 319 -122s223 46 319 122c12 10 23 17 39 17c19 0 38 -2 57 -6c-33 -32 -54 -58 -54 -106
+c0 -34 13 -67 37 -91z" />
+    <glyph glyph-name="plus-square-o" unicode="&#xf196;" horiz-adv-x="1408" 
+d="M1152 736v-64c0 -18 -14 -32 -32 -32h-352v-352c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v352h-352c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h352v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-352h352c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160
+h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="eye-slash" unicode="&#xf070;" horiz-adv-x="1792" 
+d="M555 201l78 141c-116 84 -185 219 -185 362c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c104 -161 251 -296 427 -375zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304c0 -26 22 -48 48 -48s48 22 48 48c0 115 94 208 208 208c26 0 48 22 48 48z
+M1307 1151c0 -2 0 -7 -1 -9c-211 -377 -420 -756 -631 -1133l-49 -89c-6 -10 -17 -16 -28 -16c-18 0 -113 58 -134 70c-10 6 -16 16 -16 28c0 16 34 70 44 87c-194 88 -357 238 -472 418c-13 20 -20 44 -20 69c0 24 7 49 20 69c198 304 507 507 876 507c60 0 121 -6 180 -17
+l54 97c6 10 16 16 28 16c18 0 112 -58 133 -70c10 -6 16 -16 16 -27zM1344 704c0 -186 -115 -352 -288 -418l280 502c5 -28 8 -56 8 -84zM1792 576c0 -26 -7 -47 -20 -69c-31 -51 -70 -100 -109 -145c-196 -225 -466 -362 -767 -362l74 132c291 25 538 202 694 444
+c-74 115 -169 216 -282 294l63 112c124 -83 249 -208 327 -337c13 -22 20 -43 20 -69z" />
+    <glyph glyph-name="trello" unicode="&#xf181;" 
+d="M704 192v1024c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-1024c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1376 576v640c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-640c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1536 1344v-1408c0 -35 -29 -64 -64 -64
+h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="dribbble" unicode="&#xf17d;" 
+d="M1024 36c-10 58 -48 258 -140 498c-1 0 -3 -1 -4 -1c0 0 -389 -136 -515 -410c-6 5 -15 11 -15 11c114 -93 259 -150 418 -150c91 0 177 19 256 52zM839 643c-16 37 -34 74 -53 111c-338 -101 -662 -93 -673 -93c-1 -7 -1 -14 -1 -21c0 -168 64 -322 168 -438
+c179 319 533 433 533 433c9 3 18 5 26 8zM732 855c-114 202 -235 366 -244 378c-183 -86 -319 -255 -362 -458c17 0 291 -3 606 80zM1416 536c-14 4 -197 62 -409 29c86 -237 121 -430 128 -469c147 99 251 257 281 440zM611 1277c-1 0 -1 0 -2 -1c0 0 1 1 2 1zM1201 1132
+c-115 102 -267 164 -433 164c-53 0 -105 -7 -155 -19c10 -13 134 -176 246 -382c247 92 340 234 342 237zM1424 647c-2 155 -57 298 -149 410c-2 -2 -107 -154 -366 -260c15 -31 30 -63 44 -95c5 -11 9 -23 14 -34c226 29 449 -20 457 -21zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="user-secret" unicode="&#xf21b;" horiz-adv-x="1408" 
+d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010c-1 2 -2 4 -4 6c-9 7 -81 8 -96 8c-57 0 -111 -8 -167 -19c-7 -2 -14 -2 -21 -2s-14 0 -21 2c-56 11 -110 19 -167 19c-15 0 -87 -1 -96 -8c-2 -2 -3 -4 -4 -6c1 -9 2 -18 4 -27
+c6 -8 11 -5 15 -17c26 -71 38 -126 128 -126c129 0 93 119 135 119h12c42 0 6 -119 135 -119c90 0 102 55 128 126c4 12 9 9 15 17c2 9 3 18 4 27zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 181 32 455 218 545l-90 220h214
+c-14 41 -22 84 -22 128c0 11 1 22 2 32c-39 8 -194 40 -194 96c0 59 170 91 210 99c21 75 71 189 122 248c20 23 45 37 76 37c60 0 108 -62 168 -62s108 62 168 62c31 0 56 -14 76 -37c51 -59 101 -173 122 -248c40 -8 210 -40 210 -99c0 -56 -155 -88 -194 -96
+c5 -54 -2 -108 -20 -160h214l-82 -225c179 -93 210 -362 210 -540z" />
+    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920" 
+d="M1920 384c0 -212 -172 -384 -384 -384h-1088c-247 0 -448 201 -448 448c0 179 106 334 258 405c-1 14 -2 29 -2 43c0 283 229 512 512 512c214 0 397 -131 474 -318c44 39 102 62 166 62c141 0 256 -115 256 -256c0 -51 -15 -98 -41 -138c170 -40 297 -192 297 -374z" />
+    <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="932" 
+d="M932 351c0 -204 -146 -365 -358 -400v-175c0 -18 -14 -32 -32 -32h-135c-17 0 -32 14 -32 32v175c-234 33 -362 173 -367 179c-10 12 -11 29 -2 41l103 135c5 7 14 11 23 12s18 -2 24 -9c2 -1 142 -135 319 -135c98 0 204 52 204 165c0 96 -118 143 -253 197
+c-180 71 -404 161 -404 412c0 184 144 336 353 376v180c0 18 15 32 32 32h135c18 0 32 -14 32 -32v-176c203 -23 311 -133 315 -137c10 -11 12 -26 5 -38l-81 -146c-5 -9 -13 -15 -23 -16c-10 -2 -19 1 -27 7c-1 1 -122 108 -272 108c-127 0 -215 -63 -215 -154
+c0 -106 122 -153 264 -208c184 -71 392 -152 392 -393z" />
+    <glyph glyph-name="eye" unicode="&#xf06e;" horiz-adv-x="1792" 
+d="M1664 576c-95 147 -225 273 -381 353c40 -68 61 -146 61 -225c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c171 -264 447 -448 768 -448s597 184 768 448zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304
+c0 -26 22 -48 48 -48s48 22 48 48c0 114 94 208 208 208c26 0 48 22 48 48zM1792 576c0 -25 -8 -48 -20 -69c-184 -303 -521 -507 -876 -507s-692 205 -876 507c-12 21 -20 44 -20 69s8 48 20 69c184 302 521 507 876 507s692 -205 876 -507c12 -21 20 -44 20 -69z" />
+    <glyph glyph-name="usb" unicode="&#xf287;" horiz-adv-x="2304" 
+d="M2288 731c10 -5 16 -16 16 -27s-6 -22 -16 -27l-320 -192c-5 -3 -10 -5 -16 -5c-5 0 -11 1 -16 4c-10 6 -16 16 -16 28v128h-858c32 -50 59 -109 83 -165c48 -108 97 -219 167 -219h96v96c0 18 14 32 32 32h320c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-320
+c-18 0 -32 14 -32 32v96h-96c-153 0 -222 157 -284 295c-47 107 -96 217 -164 217h-360c-29 -110 -129 -192 -248 -192c-141 0 -256 115 -256 256s115 256 256 256c119 0 219 -82 248 -192h104c68 0 117 110 164 217c62 138 131 295 284 295h107c27 75 97 128 181 128
+c106 0 192 -86 192 -192s-86 -192 -192 -192c-84 0 -154 53 -181 128h-107c-70 0 -119 -111 -167 -219c-24 -56 -51 -115 -83 -165h1114v128c0 12 6 22 16 28s23 5 32 -1z" />
+    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
+d="M1376 640l138 -135c19 -18 26 -45 20 -70c-7 -25 -27 -45 -52 -51l-188 -48l53 -186c7 -25 0 -52 -19 -70c-18 -19 -45 -26 -70 -19l-186 53l-48 -188c-6 -25 -26 -45 -51 -52c-6 -1 -13 -2 -19 -2c-19 0 -38 8 -51 22l-135 138l-135 -138c-18 -19 -45 -26 -70 -20
+c-26 7 -45 27 -51 52l-48 188l-186 -53c-25 -7 -52 0 -70 19c-19 18 -26 45 -19 70l53 186l-188 48c-25 6 -45 26 -52 51c-6 25 1 52 20 70l138 135l-138 135c-19 18 -26 45 -20 70c7 25 27 45 52 51l188 48l-53 186c-7 25 0 52 19 70c18 19 45 26 70 19l186 -53l48 188
+c6 25 26 45 51 51c25 7 52 0 70 -19l135 -139l135 139c18 19 44 26 70 19c25 -6 45 -26 51 -51l48 -188l186 53c25 7 52 0 70 -19c19 -18 26 -45 19 -70l-53 -186l188 -48c25 -6 45 -26 52 -51c6 -25 -1 -52 -20 -70z" />
+    <glyph glyph-name="500px" unicode="&#xf26e;" horiz-adv-x="1394" 
+d="M1387 -11l-6 -6c-75 -75 -162 -134 -259 -175c-101 -42 -207 -64 -317 -64s-217 22 -317 64c-97 41 -185 100 -259 175c-75 74 -134 161 -175 258c-25 61 -45 124 -54 189c-4 28 35 34 48 36c31 5 52 3 56 -20c1 -1 1 -2 1 -4c4 -20 14 -80 46 -159
+c33 -82 84 -158 152 -226c65 -65 141 -116 226 -152c87 -37 180 -56 276 -56c95 0 188 19 276 56c84 36 160 87 225 152l6 6c7 7 15 9 25 6c9 -2 20 -10 33 -22c32 -33 25 -49 17 -58zM915 604l-66 -66l63 -63c7 -7 20 -22 -7 -49c-11 -11 -22 -17 -32 -17
+c-7 0 -13 3 -19 10l-62 61l-66 -66c-2 -2 -7 -5 -15 -5c-9 0 -20 5 -31 16l-2 2c-7 6 -18 17 -18 29c0 6 3 11 8 17l66 65l-66 66c-11 11 -6 25 14 45c12 12 22 18 31 18c5 0 9 -2 13 -5l65 -66l65 65c11 11 29 6 48 -13c12 -12 25 -29 11 -44zM1386 547
+c0 -79 -16 -156 -46 -228c-30 -70 -72 -132 -126 -186s-117 -96 -187 -126c-72 -31 -149 -46 -228 -46s-156 15 -228 46c-70 30 -133 72 -187 126s-96 116 -125 186c-6 13 -15 38 -15 40h-1c-9 28 31 40 43 44c29 9 51 13 60 -12c24 -64 61 -126 97 -167h1v341
+c2 84 37 169 102 232c67 66 157 103 253 103c196 0 355 -158 355 -352c0 -196 -160 -355 -355 -355c-39 0 -68 3 -112 16c-5 2 -28 12 -13 61c4 13 16 51 44 43c2 0 51 -12 77 -12c139 0 248 108 248 246c0 65 -26 126 -72 171c-46 46 -108 71 -175 71
+c-69 0 -132 -28 -178 -80c-40 -45 -64 -105 -64 -160v-413c72 -44 155 -67 242 -67c128 0 252 51 341 140c90 90 140 211 140 338c0 128 -50 248 -141 339c-90 90 -210 140 -339 140s-250 -50 -340 -140c-1 -1 -58 -60 -77 -87l-2 -2c-12 -17 -23 -33 -73 -22
+c-25 6 -52 21 -52 43v680c0 18 14 38 38 38h877c30 0 30 -42 30 -55c0 -14 0 -55 -30 -55h-811v-483h1c56 59 153 121 210 145c71 30 151 46 231 46c79 0 156 -15 228 -46c70 -30 133 -72 187 -126s96 -116 126 -186c30 -73 46 -149 46 -229zM1355 1128
+c19 -17 6 -35 -13 -57c-12 -12 -25 -26 -39 -26c-6 0 -11 2 -16 7c-72 62 -137 104 -207 133c-87 38 -180 56 -276 56c-85 0 -178 -17 -262 -49c-26 -10 -40 24 -45 37c-6 16 -9 29 -8 38c2 10 7 17 16 20c82 36 194 57 299 57c109 0 216 -22 316 -64
+c92 -39 167 -87 235 -152z" />
+    <glyph glyph-name="liberapay-square" unicode="&#xf2e8;" horiz-adv-x="1533" 
+d="M148 1404h1236c82 0 149 -66 149 -148v-1236c0 -82 -67 -148 -149 -148h-1236c-82 0 -148 66 -148 148v1236c0 82 66 148 148 148zM736 1150v0l-161 -25l-133 -553c-8 -33 -12 -64 -12 -93s6 -54 18 -76s32 -40 60 -53s68 -19 117 -19l31 128c-18 1 -32 4 -42 9
+s-18 12 -22 20s-5 17 -5 27s1 23 4 35zM985 902v0c-42 0 -80 -3 -116 -10s-67 -14 -95 -22l-174 -722h155l47 189c24 -4 47 -6 71 -6c49 0 94 8 135 25s76 41 106 72s52 67 69 109s25 88 25 139c0 31 -4 61 -13 88s-22 51 -40 72c-18 20 -41 36 -69 48s-62 18 -101 18z
+M965 772v0c33 0 56 -11 69 -32s20 -46 20 -76c0 -31 -4 -59 -13 -84s-21 -47 -37 -65s-34 -32 -56 -42s-47 -15 -74 -15c-17 0 -32 1 -44 4l73 303c19 4 40 7 62 7z" />
+    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1192" 
+d="M956 1102l37 194c7 32 -17 57 -44 57h-712c-32 0 -54 -29 -54 -54v-1101c0 -3 3 -4 6 -1c262 315 291 352 291 352c30 35 42 41 86 41h239c33 0 52 28 55 44s31 162 37 191s-21 59 -48 59h-294c-39 0 -67 28 -67 67v42c0 39 28 66 67 66h346c24 0 51 22 55 43zM1183 1324
+c-37 -180 -148 -749 -158 -790c-12 -47 -30 -129 -144 -129h-271c-11 0 -12 1 -22 -10c0 0 -7 -8 -426 -494c-33 -38 -87 -31 -107 -23s-55 32 -55 98v1410c0 58 36 150 158 150h888c130 0 165 -74 137 -212zM1183 1324l-158 -790c10 41 121 610 158 790z" />
+    <glyph glyph-name="music" unicode="&#xf001;" 
+d="M1536 1312v-1120c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v537l-768 -237v-709c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v967c0 42 28 79 68 92l832 256c9 3 18 4 28 4
+c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="wpexplorer" unicode="&#xf2de;" horiz-adv-x="1792" 
+d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640c0 432 -352 784 -784 784s-784 -352 -784 -784
+s352 -784 784 -784s784 352 784 784zM1792 640c0 -494 -402 -896 -896 -896s-896 402 -896 896s402 896 896 896s896 -402 896 -896z" />
+    <glyph glyph-name="gg-circle" unicode="&#xf261;" horiz-adv-x="1792" 
+d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640c0 -495 -401 -896 -896 -896
+s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024" 
+d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19
+s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="pencil" unicode="&#xf040;" horiz-adv-x="1515" 
+d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928c0 13 -9 22 -22 22c-6 0 -12 -2 -17 -7l-542 -542c-5 -5 -7 -11 -7 -17c0 -13 9 -22 22 -22c6 0 12 2 17 7l542 542c5 5 7 11 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024c0 -34 -14 -67 -37 -90
+l-166 -166l-416 416l166 165c23 24 56 38 90 38s67 -14 91 -38l235 -234c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="bookmark-o" unicode="&#xf097;" horiz-adv-x="1280" 
+d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9
+c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
+    <glyph glyph-name="diamond" unicode="&#xf219;" horiz-adv-x="2048" 
+d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512c19 -24 17 -59 -4 -82l-960 -1024c-12 -13 -29 -20 -47 -20
+s-35 7 -47 20l-960 1024c-21 23 -23 58 -4 82l384 512c12 17 31 26 51 26h1152c20 0 39 -9 51 -26z" />
+    <glyph glyph-name="share" unicode="&#xf064;" horiz-adv-x="1792" 
+d="M1792 896c0 -17 -7 -33 -19 -45l-512 -512c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v256h-224c-431 0 -714 -83 -714 -560c0 -41 2 -82 5 -123c1 -16 5 -34 5 -50c0 -19 -12 -35 -32 -35c-14 0 -21 7 -28 17c-15 21 -26 53 -37 76c-57 128 -127 311 -127 451
+c0 112 11 227 53 333c139 345 547 403 875 403h224v256c0 35 29 64 64 64c17 0 33 -7 45 -19l512 -512c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="envelope" unicode="&#xf0e0;" horiz-adv-x="1792" 
+d="M1792 826v-794c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v794c30 -33 64 -62 101 -87c166 -113 334 -226 497 -345c84 -62 188 -138 297 -138h2c109 0 213 76 297 138c163 118 331 232 498 345c36 25 70 54 100 87zM1792 1120c0 -112 -83 -213 -171 -274
+c-156 -108 -313 -216 -468 -325c-65 -45 -175 -137 -256 -137h-2c-81 0 -191 92 -256 137c-155 109 -312 217 -467 325c-71 48 -172 161 -172 252c0 98 53 182 160 182h1472c87 0 160 -72 160 -160z" />
+    <glyph glyph-name="yahoo" unicode="&#xf19e;" horiz-adv-x="1318" 
+d="M750 579l13 -707c-34 6 -69 11 -105 11c-35 0 -70 -5 -105 -11l13 707c-186 321 -361 648 -566 957c35 -9 71 -15 108 -15s75 7 111 15c140 -248 292 -489 439 -733c148 242 305 483 439 733c35 -9 71 -14 107 -14c38 0 77 5 114 14c-80 -110 -146 -230 -215 -347
+c-119 -203 -236 -406 -353 -610z" />
+    <glyph glyph-name="window-restore" unicode="&#xf2d2;" horiz-adv-x="2048" 
+d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96c88 0 160 -72 160 -160v-352zM2048 1376v-960c0 -88 -72 -160 -160 -160h-608v-352c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h608v352c0 88 72 160 160 160h960
+c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1606" 
+d="M1606 1350c0 -29 -23 -58 -43 -78l-632 -632v-768h320c35 0 64 -29 64 -64s-29 -64 -64 -64h-896c-35 0 -64 29 -64 64s29 64 64 64h320v768l-632 632c-20 20 -43 49 -43 78c0 49 62 58 99 58h1408c37 0 99 -9 99 -58z" />
+    <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1728" 
+d="M256 1280c0 -46 -25 -87 -64 -110v-1266c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v1266c-39 23 -64 64 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -37 -23 -51 -52 -66c-113 -61 -238 -116 -369 -116c-184 0 -272 140 -490 140
+c-159 0 -326 -72 -464 -146c-11 -6 -21 -9 -33 -9c-35 0 -64 29 -64 64v742c0 24 12 41 31 55c24 16 53 30 79 43c126 64 279 120 421 120c157 0 280 -52 419 -117c28 -14 57 -19 88 -19c157 0 326 136 370 136c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="train" unicode="&#xf238;" 
+d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM768 192c106 0 192 86 192 192s-86 192 -192 192s-192 -86 -192 -192
+s86 -192 192 -192zM1344 768v512h-1152v-512h1152z" />
+    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792" 
+d="M1664 896c71 0 128 -57 128 -128s-57 -128 -128 -128v-384c0 -70 -58 -128 -128 -128c-178 148 -465 351 -812 380c-119 -40 -160 -179 -82 -259c-70 -115 20 -196 126 -279c-62 -122 -320 -124 -412 -39c-58 178 -144 356 -74 581h-122c-88 0 -160 72 -160 160v192
+c0 88 72 160 160 160h480c384 0 704 224 896 384c70 0 128 -58 128 -128v-384zM1536 292v954c-261 -200 -514 -315 -768 -343v-270c254 -28 507 -141 768 -341z" />
+    <glyph glyph-name="pause-circle-o" unicode="&#xf28c;" 
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM864 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576
+c0 -18 -14 -32 -32 -32h-192zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-192z" />
+    <glyph glyph-name="snapchat-ghost" unicode="&#xf2ac;" horiz-adv-x="1634" 
+d="M833 1408c180 2 329 -99 404 -261c23 -49 27 -125 27 -179c0 -64 -5 -127 -9 -191c8 -4 19 -7 28 -7c36 0 66 27 102 27c34 0 83 -24 83 -64c0 -96 -201 -78 -201 -162c0 -15 6 -29 12 -43c48 -105 139 -206 247 -251c26 -11 52 -17 80 -23c18 -4 28 -17 28 -35
+c0 -68 -173 -96 -219 -103c-20 -31 -5 -104 -58 -104c-41 0 -82 13 -126 13c-21 0 -42 -1 -62 -5c-119 -20 -159 -148 -354 -148c-188 0 -233 128 -349 148c-21 4 -42 5 -63 5c-45 0 -88 -15 -124 -15c-56 0 -39 74 -60 106c-46 7 -219 35 -219 103c0 18 10 31 28 35
+c28 6 54 12 80 23c107 44 200 146 247 251c6 14 12 28 12 43c0 84 -202 68 -202 161c0 39 46 64 81 64c31 0 62 -26 101 -26c11 0 22 2 32 7c-4 63 -9 126 -9 190c0 54 4 131 27 180c88 190 237 259 436 261z" />
+    <glyph glyph-name="folder" unicode="&#xf07b;" horiz-adv-x="1664" 
+d="M1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="outdent" unicode="&#xf03b;" horiz-adv-x="1792" 
+d="M384 992v-576c0 -17 -15 -32 -32 -32c-8 0 -17 3 -23 9l-288 288c-6 6 -9 15 -9 23s3 17 9 23l288 288c6 6 15 9 23 9c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32zM1792 608
+v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1728
+c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
+    <glyph glyph-name="stumbleupon" unicode="&#xf1a4;" horiz-adv-x="1920" 
+d="M1062 824v118c0 56 -46 102 -102 102s-102 -46 -102 -102v-612c0 -234 -194 -423 -429 -423c-237 0 -429 192 -429 429v266h328v-262c0 -57 46 -102 102 -102s102 45 102 102v620c0 229 196 413 428 413c233 0 428 -185 428 -416v-136l-195 -58zM1592 602h328v-266
+c0 -237 -192 -429 -429 -429c-236 0 -429 190 -429 425v268l131 -61l195 58v-270c0 -56 46 -101 102 -101s102 45 102 101v275z" />
+    <glyph glyph-name="address-card" unicode="&#xf2bb;" horiz-adv-x="2048" 
+d="M1024 405c0 155 -38 327 -196 327c-49 -28 -115 -76 -188 -76s-139 48 -188 76c-158 0 -196 -172 -196 -327c0 -87 57 -149 128 -149h512c71 0 128 62 128 149zM867 925c0 125 -102 227 -227 227s-227 -102 -227 -227c0 -126 102 -227 227 -227s227 101 227 227z
+M1792 416v64c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1792 676v56c0 20 -16 36 -36 36h-568c-20 0 -36 -16 -36 -36v-56c0 -20 16 -36 36 -36h568c20 0 36 16 36 36zM1792 928v64c0 18 -14 32 -32 32h-576
+c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-352v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-768v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-352c-88 0 -160 72 -160 160
+v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="i-cursor" unicode="&#xf246;" horiz-adv-x="896" 
+d="M832 1408c-212 0 -320 -75 -320 -224v-416h128v-128h-128v-544c0 -149 108 -224 320 -224h64v-128h-64c-180 0 -312 52 -384 146c-72 -94 -204 -146 -384 -146h-64v128h64c212 0 320 75 320 224v544h-128v128h128v416c0 149 -108 224 -320 224h-64v128h64
+c180 0 312 -52 384 -146c72 94 204 146 384 146h64v-128h-64z" />
+    <glyph glyph-name="car" unicode="&#xf1b9;" horiz-adv-x="2048" 
+d="M480 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM516 768h1016l-89 357c-3 11 -23 27 -35 27h-768c-12 0 -32 -16 -35 -27zM1888 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM2048 544v-384
+c0 -18 -14 -32 -32 -32h-96v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-1024v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419c31 126 153 221 283 221h768c130 0 252 -95 283 -221
+l105 -419h28c124 0 224 -100 224 -224z" />
+    <glyph glyph-name="file-excel-o" unicode="&#xf1c3;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM429 106h68l194 283l-189 272h-68v107h290v-107h-76l106 -159c8 -9 13 -16 17 -23c2 -3 4 -6 5 -10h2c0 -1 9 14 21 33l103 159h-74v107h279v-107h-67l-195 -282l192 -273h68v-106h-291v106h76l-107 161c-7 10 -13 16 -17 24c-2 3 -4 6 -5 10h-2
+c-3 0 -9 -15 -21 -34l-103 -161h75v-106h-281v106z" />
+    <glyph glyph-name="arrow-circle-o-left" unicode="&#xf190;" 
+d="M1152 736v-192c0 -17 -15 -32 -32 -32h-352v-192c0 -18 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 319c-6 6 -9 15 -9 23s3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -15 32 -32v-192h352c17 0 32 -15 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
+s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="1254" 
+d="M1254 1347v-73c0 -34 -27 -93 -61 -93c-17 0 -37 3 -54 -1c-16 -4 -28 -15 -32 -31c-5 -19 -3 -43 -3 -64v-1152c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v1218h-143v-1218c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v496c-97 8 -180 28 -245 59
+c-84 39 -148 99 -192 179c-42 77 -64 164 -64 259c0 111 30 207 88 286c59 79 129 132 209 159c75 25 233 37 417 37h479c34 0 61 -27 61 -61z" />
+    <glyph glyph-name="y-combinator" unicode="&#xf23b;" 
+d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
+    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024" 
+d="M1024 832v-416c0 -53 -43 -96 -96 -96s-96 43 -96 96v352h-64v-912c0 -62 -50 -112 -112 -112s-112 50 -112 112v464h-64v-464c0 -62 -50 -112 -112 -112s-112 50 -112 112v912h-64v-352c0 -53 -43 -96 -96 -96s-96 43 -96 96v416c0 106 86 192 192 192h640
+c106 0 192 -86 192 -192zM736 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+    <glyph glyph-name="history" unicode="&#xf1da;" 
+d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
+c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768zM896 928v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64
+c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="h-square" unicode="&#xf0fd;" 
+d="M1280 192v896c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-512v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-896c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h512v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792" 
+d="M896 -128c-16 0 -32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468c0 -240 -220 -441 -229 -450l-623 -600c-12 -12 -28 -18 -44 -18z" />
+    <glyph glyph-name="sort-amount-desc" unicode="&#xf161;" horiz-adv-x="1760" 
+d="M1184 -32v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1376 480v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448c18 0 32 -14 32 -32zM1568 992v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640
+c18 0 32 -14 32 -32zM1760 1504v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="search-plus" unicode="&#xf00e;" horiz-adv-x="1664" 
+d="M1024 736v-64c0 -17 -15 -32 -32 -32h-224v-224c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v224h-224c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h224v224c0 17 15 32 32 32h64c17 0 32 -15 32 -32v-224h224c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343
+c23 -23 37 -56 37 -90z" />
+    <glyph glyph-name="life-ring" unicode="&#xf1cd;" horiz-adv-x="1792" 
+d="M896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM896 1408c-130 0 -253 -33 -361 -90l194 -194c53 18 109 28 167 28c59 0 114 -10 167 -28l194 194c-108 57 -231 90 -361 90zM218 279l194 194c-18 53 -28 109 -28 167
+c0 59 10 114 28 167l-194 194c-57 -108 -90 -231 -90 -361s33 -253 90 -361zM896 -128c130 0 253 33 361 90l-194 194c-53 -18 -108 -28 -167 -28c-58 0 -114 10 -167 28l-194 -194c108 -57 231 -90 361 -90zM896 256c212 0 384 172 384 384s-172 384 -384 384
+s-384 -172 -384 -384s172 -384 384 -384zM1380 473l194 -194c57 108 90 231 90 361s-33 253 -90 361l-194 -194c18 -53 28 -109 28 -167s-10 -114 -28 -167z" />
+    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152" 
+d="M320 768h512v192c0 141 -115 256 -256 256s-256 -115 -256 -256v-192zM1152 672v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v192c0 246 202 448 448 448s448 -202 448 -448v-192h32c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="git-square" unicode="&#xf1d2;" 
+d="M582 228c0 -54 -49 -66 -93 -66c-43 0 -107 7 -107 63c0 55 54 64 98 64c42 0 102 -7 102 -61zM546 694c0 -50 -20 -85 -74 -85c-55 0 -77 32 -77 84s20 90 77 90c51 0 74 -42 74 -89zM712 769v125c-43 -16 -89 -29 -135 -29c-33 19 -71 29 -110 29
+c-114 0 -204 -84 -204 -200c0 -62 41 -148 103 -169v-3c-32 -14 -38 -53 -38 -85c0 -33 12 -60 41 -77v-3c-68 -22 -113 -65 -113 -139c0 -127 121 -163 227 -163c128 0 224 47 224 188c0 100 -91 130 -174 145c-28 5 -76 25 -76 60c0 33 18 47 49 52c102 20 167 99 167 204
+c0 18 -4 35 -10 52c16 4 33 8 49 13zM771 350h137c-2 27 -2 55 -2 82v387c0 23 0 46 2 69h-137c3 -23 3 -48 3 -71v-392c0 -25 0 -50 -3 -75zM1280 366v121c-20 -14 -44 -21 -68 -21c-45 0 -53 45 -53 82v225h52c18 0 35 -2 53 -2v117h-105c0 34 -2 68 3 102h-140
+c3 -18 4 -36 4 -55v-47h-60v-117c12 1 24 3 37 3c7 0 15 -1 23 -1v-2h-2v-217c0 -108 16 -212 148 -212c37 0 75 6 108 24zM924 1072c0 47 -35 91 -84 91s-85 -43 -85 -91c0 -47 37 -89 85 -89s84 43 84 89zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="mouse-pointer" unicode="&#xf245;" horiz-adv-x="1152" 
+d="M1133 493c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-382l201 -476c14 -33 -2 -70 -34 -84l-177 -75c-33 -14 -70 2 -84 34l-191 452l-312 -312c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v1504c0 26 16 49 40 59c7 3 16 5 24 5
+c17 0 33 -6 45 -19z" />
+    <glyph glyph-name="sign-in" unicode="&#xf090;" 
+d="M1184 640c0 -17 -7 -33 -19 -45l-544 -544c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45zM1536 992v-704c0 -159 -129 -288 -288 -288
+h-320c-17 0 -32 15 -32 32c0 28 -13 96 32 96h320c88 0 160 72 160 160v704c0 88 -72 160 -160 160h-288c-25 0 -64 -5 -64 32c0 28 -13 96 32 96h320c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="odnoklassniki-square" unicode="&#xf264;" 
+d="M927 956c0 -88 -71 -159 -159 -159s-159 71 -159 159s71 159 159 159s159 -71 159 -159zM1141 593c-18 36 -69 67 -136 14c0 0 -91 -72 -237 -72s-237 72 -237 72c-67 53 -118 22 -136 -14c-32 -64 4 -95 85 -148c69 -44 165 -61 226 -67l-51 -52
+c-72 -72 -142 -142 -191 -190c-29 -29 -29 -76 0 -105l9 -9c29 -29 76 -29 105 0l191 191c72 -73 142 -143 191 -191c29 -29 76 -29 105 0l9 9c29 29 29 76 0 105l-191 190l-52 52c62 6 156 23 225 67c81 53 117 84 85 148zM1092 956c0 179 -145 324 -324 324
+s-324 -145 -324 -324s145 -324 324 -324s324 145 324 324zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="tag" unicode="&#xf02b;" horiz-adv-x="1515" 
+d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
+l715 -714c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="align-justify" unicode="&#xf039;" horiz-adv-x="1792" 
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 960v-128
+c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="hospital-o" unicode="&#xf0f8;" horiz-adv-x="1408" 
+d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
+c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64
+c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
+c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1152h-256v-32c0 -53 -43 -96 -96 -96h-448c-53 0 -96 43 -96 96v32h-256v-1152h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM896 1056v320c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-96h-128v96
+c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h64c17 0 32 15 32 32v96h128v-96c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1408 1088v-1280c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1280c0 35 29 64 64 64h320v288c0 53 43 96 96 96
+h448c53 0 96 -43 96 -96v-288h320c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="chevron-circle-down" unicode="&#xf13a;" 
+d="M813 237l454 454c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-307 -307l-307 307c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+    <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408" 
+d="M1403 1241c10 -24 5 -52 -14 -70l-493 -493v-742c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-256 256c-12 12 -19 28 -19 45v486l-493 493c-19 18 -24 46 -14 70c10 23 33 39 59 39h1280c26 0 49 -16 59 -39z" />
+    <glyph glyph-name="google-plus" unicode="&#xf0d5;" horiz-adv-x="2304" 
+d="M1437 623c0 -419 -281 -716 -704 -716c-405 0 -733 328 -733 733s328 733 733 733c198 0 363 -72 491 -192l-199 -191c-54 52 -149 113 -292 113c-250 0 -454 -207 -454 -463s204 -463 454 -463c290 0 399 209 416 316h-416v252h692c7 -37 12 -74 12 -122zM2304 745v-210
+h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
+    <glyph glyph-name="sticky-note-o" unicode="&#xf24a;" 
+d="M1400 256h-248v-248c17 6 34 15 41 22l185 185c7 7 16 24 22 41zM1120 384h288v896h-1280v-1280h896v288c0 53 43 96 96 96zM1536 1312v-1024c0 -53 -31 -127 -68 -164l-184 -184c-37 -37 -111 -68 -164 -68h-1024c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344
+c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="fonticons" unicode="&#xf280;" 
+d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925c41 0 57 -15 56 -79l174 21c0 153 -105 181 -222 181c-174 0 -265 -70 -265 -240v-72h-96v-128h76
+c10 0 20 0 20 -8v-382c0 -19 -5 -25 -23 -27l-73 -7v-88h448v86l-149 14c-18 2 -11 5 -11 25v387h191l38 128h-231c-10 0 2 7 2 15v80c0 60 2 94 65 94zM1248 96v86l-54 9c-19 3 -10 5 -10 25v520h-275l-23 -101l83 -22c13 -4 23 -13 23 -27v-370c0 -19 -8 -23 -26 -25
+l-70 -9v-86h352z" />
+    <glyph glyph-name="comments-o" unicode="&#xf0e6;" horiz-adv-x="1792" 
+d="M704 1152c-312 0 -576 -176 -576 -384c0 -110 74 -216 202 -290l97 -56l-35 -84c21 12 42 25 62 39l44 31l53 -10c50 -9 101 -14 153 -14c312 0 576 176 576 384s-264 384 -576 384zM704 1280c389 0 704 -229 704 -512s-315 -512 -704 -512c-61 0 -120 6 -176 16
+c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512zM1526 111c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29
+c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466c0 52 -8 103 -23 152c169 -93 279 -241 279 -408c0 -163 -104 -307 -266 -401z" />
+    <glyph glyph-name="lastfm" unicode="&#xf202;" horiz-adv-x="1792" 
+d="M1292 832c0 -6 8 -34 10 -41c27 -82 90 -99 165 -120c167 -47 325 -136 325 -332c0 -199 -166 -339 -360 -339c-322 0 -422 394 -515 634c-77 198 -158 314 -381 314c-198 0 -372 -190 -372 -385c0 -207 155 -399 370 -399c95 0 194 20 258 95c31 35 61 73 83 116
+l84 -152c-11 -25 -27 -49 -44 -70l1 -1c-101 -117 -239 -152 -388 -152c-302 0 -528 267 -528 561c0 285 248 550 536 550c478 0 502 -414 664 -747c44 -92 119 -200 233 -200c104 0 196 67 196 177c0 238 -437 76 -499 467c-2 11 -3 22 -3 33c0 148 139 275 286 270
+c88 -3 141 -6 211 -68h-1c27 -25 47 -59 68 -88l-129 -99c-15 28 -29 51 -54 70v1c-24 22 -67 21 -97 21c-65 0 -119 -49 -119 -116z" />
+    <glyph glyph-name="peertube" unicode="&#xf2e4;" horiz-adv-x="1350" 
+d="M0 1536l675 -450l-675 -450v900zM675 1086l675 -450l-675 -450v900zM0 636l675 -450l-675 -450v900z" />
+    <glyph glyph-name="pagelines" unicode="&#xf18c;" horiz-adv-x="1402" 
+d="M1402 433c-201 -499 -683 -197 -683 -197c-148 -299 -392 -491 -674 -492c-25 0 -45 20 -45 45s20 44 45 44c235 1 440 156 574 402c-150 -58 -433 -102 -590 300c398 164 581 -41 651 -166c36 89 62 186 79 291c0 0 -510 -80 -546 358c435 175 557 -280 557 -280
+c6 61 12 192 12 195c0 0 -388 269 -139 603c455 -157 224 -593 224 -593c2 -6 2 -87 0 -122c0 0 165 325 498 210c-15 -489 -518 -388 -518 -388c-16 -100 -41 -195 -73 -283c0 0 303 335 628 73z" />
+    <glyph glyph-name="credit-card-alt" unicode="&#xf283;" horiz-adv-x="2304" 
+d="M0 32v608h2304v-608c0 -88 -72 -160 -160 -160h-1984c-88 0 -160 72 -160 160zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408c88 0 160 -72 160 -160v-224h-2304v224c0 88 72 160 160 160h1984z" />
+    <glyph glyph-name="file-word-o" unicode="&#xf1c2;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM233 768h300v-107h-90l99 -438c4 -16 6 -33 7 -46l2 -21h4l4 21c3 13 4 30 8 46l144 545h114l144 -545c4 -16 6 -33 9 -46c1 -7 3 -15 3 -21h4l2 21c1 13 3 30 7 46l99 438h-90v107h300v-107h-70l-164 -661h-159l-128 485c-5 16 -6 32 -9 46l-3 24h-4
+c0 -8 -1 -16 -2 -24c-2 -16 -5 -31 -10 -46l-128 -485h-159l-164 661h-70v107z" />
+    <glyph glyph-name="map" unicode="&#xf279;" horiz-adv-x="1792" 
+d="M512 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM1760 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4
+c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM640 1536c5 0 10 -1 14 -3l512 -256c11 -6 18 -17 18 -29v-1472c0 -17 -15 -32 -32 -32c-5 0 -10 1 -14 3l-512 256c-11 6 -18 17 -18 29v1472c0 17 15 32 32 32z" />
+    <glyph glyph-name="object-ungroup" unicode="&#xf248;" horiz-adv-x="2304" 
+d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
+v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
+    <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792" 
+d="M640 1280h512v128h-512v-128zM1792 640v-480c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v480h672v-160c0 -35 29 -64 64 -64h320c35 0 64 29 64 64v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384c0 88 72 160 160 160h352v160
+c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h352c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="weixin" unicode="&#xf1d7;" horiz-adv-x="2048" 
+d="M580 1075c0 55 -36 91 -91 91c-54 0 -109 -36 -109 -91c0 -54 55 -90 109 -90c55 0 91 36 91 90zM1323 568c0 36 -36 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c55 0 91 36 91 73zM1087 1075c0 55 -36 91 -90 91c-55 0 -109 -36 -109 -91
+c0 -54 54 -90 109 -90c54 0 90 36 90 90zM1722 568c0 36 -37 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c54 0 91 36 91 73zM1456 965c-23 3 -46 4 -70 4c-344 0 -616 -257 -616 -573c0 -53 8 -104 23 -152c-23 -2 -45 -3 -68 -3c-91 0 -163 18 -254 36
+l-253 -127l72 218c-181 127 -290 291 -290 490c0 345 326 616 725 616c356 0 669 -217 731 -509zM2048 404c0 -163 -108 -308 -254 -417l55 -181l-199 109c-73 -18 -146 -37 -218 -37c-345 0 -616 236 -616 526s271 526 616 526c326 0 616 -236 616 -526z" />
+    <glyph glyph-name="stop" unicode="&#xf04d;" 
+d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="clone" unicode="&#xf24d;" horiz-adv-x="1792" 
+d="M1664 -96v1088c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32zM1792 992v-1088c0 -88 -72 -160 -160 -160h-1088c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160zM1408 1376v-160
+h-128v160c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h160v-128h-160c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="thermometer-full" unicode="&#xf2c7;" horiz-adv-x="1024" 
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v907h128v-907c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1402" 
+d="M1376 1376c64 -64 0 -224 -96 -320l-161 -161l160 -696c3 -12 -2 -25 -12 -33l-128 -96c-5 -4 -12 -6 -19 -6c-2 0 -4 0 -7 1c-9 2 -17 7 -21 16l-279 508l-259 -259l53 -194c3 -11 0 -22 -8 -31l-96 -96c-6 -6 -15 -9 -23 -9h-2c-10 1 -18 5 -24 13l-189 252l-252 189
+c-8 5 -12 14 -13 23s3 18 9 25l96 97c6 6 15 9 23 9c3 0 6 0 8 -1l194 -53l259 259l-508 279c-9 5 -15 14 -17 24c-1 9 2 20 9 27l128 128c8 7 20 11 30 8l665 -159l160 160c96 96 256 160 320 96z" />
+    <glyph glyph-name="check-square" unicode="&#xf14a;" 
+d="M685 237l614 614c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-467 -467l-211 211c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l358 -358c25 -25 65 -25 90 0zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="window-maximize" unicode="&#xf2d0;" horiz-adv-x="1792" 
+d="M256 128h1280v768h-1280v-768zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="github" unicode="&#xf09b;" 
+d="M768 1408c424 0 768 -344 768 -768c0 -339 -220 -627 -525 -729c-39 -7 -53 17 -53 37c0 25 1 108 1 211c0 72 -24 118 -52 142c171 19 351 84 351 379c0 84 -30 152 -79 206c8 20 34 98 -8 204c-64 20 -211 -79 -211 -79c-61 17 -127 26 -192 26s-131 -9 -192 -26
+c0 0 -147 99 -211 79c-42 -106 -16 -184 -8 -204c-49 -54 -79 -122 -79 -206c0 -294 179 -360 350 -379c-22 -20 -42 -54 -49 -103c-44 -20 -156 -54 -223 64c-42 73 -118 79 -118 79c-75 1 -5 -47 -5 -47c50 -23 85 -112 85 -112c45 -137 259 -91 259 -91
+c0 -64 1 -124 1 -143c0 -20 -14 -44 -53 -37c-305 102 -525 390 -525 729c0 424 344 768 768 768zM291 305c-2 -4 -8 -5 -13 -2c-6 3 -9 8 -7 12c2 3 7 4 13 2c6 -3 9 -8 7 -12zM322 271c-4 -4 -11 -2 -16 3c-5 6 -6 13 -2 16c4 4 11 2 16 -3c5 -6 6 -13 2 -16zM352 226
+c-4 -3 -12 0 -17 7s-5 15 0 18c5 4 13 1 17 -6c5 -7 5 -15 0 -19zM394 184c-4 -5 -13 -4 -20 3c-7 6 -9 15 -4 19c4 5 13 4 20 -3c6 -6 8 -15 4 -19zM451 159c-2 -6 -11 -9 -19 -6c-9 2 -15 9 -13 15s11 9 19 7c9 -3 15 -10 13 -16zM514 154c0 -6 -7 -11 -16 -11
+c-10 -1 -17 4 -17 11c0 6 7 11 16 11c9 1 17 -4 17 -11zM572 164c1 -6 -5 -12 -14 -14s-17 2 -18 8c-1 7 5 13 14 15c9 1 17 -3 18 -9z" />
+    <glyph glyph-name="mastodon" unicode="&#xf2e1;" 
+d="M1503 425c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 44 -330 44c0 -18 1 -35 3 -51c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -136s-105 -56 -292 -66c-103 -6 -230 3 -379 42c-323 85 -379 430 -388 779c-3 104 -1 201 -1 283
+c0 357 235 462 235 462c118 54 320 77 531 79h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446zM1260 843c0 88 -22 160 -68 211c-47 52 -107 79 -183 79c-88 0 -154 -34 -198 -101l-43 -72l-43 72c-44 67 -110 101 -198 101c-76 0 -136 -27 -183 -79
+c-45 -52 -68 -123 -68 -211v-432h171v420c0 88 38 133 112 133c82 0 124 -54 124 -159v-229h170v229c0 105 42 159 124 159c74 0 112 -45 112 -133v-420h171v432v0z" />
+    <glyph glyph-name="envelope-open" unicode="&#xf2b6;" horiz-adv-x="1792" 
+d="M1792 882v-978c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v978c0 9 4 18 11 24c105 92 106 103 628 484c63 46 174 146 257 146s195 -101 257 -146c522 -381 523 -392 628 -484c7 -6 11 -15 11 -24zM1228 297c156 113 265 192 345 252c14 10 17 30 6 44
+l-38 52c-11 14 -31 17 -45 6c-79 -58 -187 -138 -343 -250c-62 -45 -174 -145 -257 -145s-195 100 -257 145c-156 113 -264 192 -343 250c-14 11 -34 8 -45 -6l-38 -52c-11 -14 -8 -34 6 -44c80 -60 189 -139 345 -252c78 -56 201 -169 332 -169c132 0 258 115 332 169z" />
+    <glyph glyph-name="step-backward" unicode="&#xf048;" horiz-adv-x="1024" 
+d="M979 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678c3 7 7 13 13 19z" />
+    <glyph glyph-name="wheelchair" unicode="&#xf193;" horiz-adv-x="1629" 
+d="M1023 349l102 -204c-77 -238 -299 -401 -549 -401c-317 0 -576 259 -576 576c0 242 152 458 379 541l17 -131c-163 -72 -268 -232 -268 -410c0 -247 201 -448 448 -448c257 0 465 220 447 477zM1571 249l58 -114l-256 -128c-9 -5 -19 -7 -29 -7c-24 0 -47 14 -57 35
+l-239 477h-472c-32 0 -60 25 -64 57l-96 779c-1 10 3 32 6 42c19 69 83 114 154 114c88 0 160 -72 160 -160c0 -91 -80 -169 -172 -159l37 -289h423v-128h-407l16 -128h455c24 0 47 -14 57 -35l228 -455z" />
+    <glyph glyph-name="bootstrap" unicode="&#xf315;" 
+d="M256 1408h1024c141 0 256 -115 256 -256v-1024c0 -141 -115 -256 -256 -256h-1024c-141 0 -256 115 -256 256v1024c0 141 115 256 256 256zM494 1020v-795h310c169 0 270 83 270 223c0 106 -69 182 -177 196v4c77 14 137 91 137 174c0 119 -93 198 -229 198h-311z
+M593 933h190c97 0 150 -44 150 -123c0 -86 -64 -133 -181 -133h-159v256zM593 592v0h187c127 0 192 -47 192 -139s-63 -141 -183 -141h-196v280z" />
+    <glyph glyph-name="cutlery" unicode="&#xf0f5;" horiz-adv-x="1408" 
+d="M640 1472v-640c0 -81 -52 -154 -128 -181v-779c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v779c-76 27 -128 100 -128 181v640c0 35 29 64 64 64s64 -29 64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64v-416
+c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64zM1408 1472v-1600c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v512h-224c-17 0 -32 15 -32 32v800c0 176 144 320 320 320h256c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="microphone-slash" unicode="&#xf131;" horiz-adv-x="1382" 
+d="M258 591l-101 -101c-27 66 -42 138 -42 214v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -39 6 -77 15 -113zM1372 1193l-361 -361v-128c0 -176 -144 -320 -320 -320c-38 0 -75 7 -109 19l-96 -96c61 -32 131 -51 205 -51c247 0 448 201 448 448v128c0 35 29 64 64 64
+s64 -29 64 -64v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-85 9 -165 38 -235 81l-254 -254c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l1234 1234c13 13 33 13 46 0l82 -82
+c13 -13 13 -33 0 -46zM992 1325l-621 -621v512c0 176 144 320 320 320c138 0 256 -89 301 -211z" />
+    <glyph glyph-name="user-plus" unicode="&#xf234;" horiz-adv-x="2048" 
+d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1664 512h352c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-352v-352c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v352h-352c-17 0 -32 15 -32 32v192
+c0 17 15 32 32 32h352v352c0 17 15 32 32 32h192c17 0 32 -15 32 -32v-352zM928 288c0 -70 58 -128 128 -128h256v-238c-49 -36 -111 -50 -171 -50h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c98 -75 193 -122 319 -122s221 47 319 122
+c12 10 23 17 39 17c85 0 160 -32 217 -96h-223c-70 0 -128 -58 -128 -128v-192z" />
+    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1728" 
+d="M576 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM192 640h384v256h-158c-4 0 -19 -6 -22 -9l-195 -195c-3 -3 -9 -18 -9 -22v-30zM1472 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1728 1216
+v-1024c0 -74 -78 -64 -128 -64c0 -141 -115 -256 -256 -256s-256 115 -256 256h-384c0 -141 -115 -256 -256 -256s-256 115 -256 256h-64c-50 0 -128 -10 -128 64c0 35 29 64 64 64v320c0 71 -10 150 45 205l198 198c25 25 73 45 109 45h160v192c0 35 29 64 64 64h1024
+c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1641" 
+d="M363 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1007 484l-682 -682c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-106 108c-24 23 -38 56 -38 90s14 67 38 91l681 681c52 -131 157 -236 288 -288zM1641 919c0 -33 -12 -74 -23 -106
+c-63 -178 -234 -301 -423 -301c-247 0 -448 201 -448 448s201 448 448 448c73 0 168 -22 229 -63c10 -7 16 -16 16 -28c0 -11 -7 -22 -16 -28l-293 -169v-224l193 -107c33 19 265 165 285 165s32 -15 32 -35z" />
+    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1856" 
+d="M576 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM192 640h384v256h-158c-6 -1 -17 -5 -22 -9l-195 -195c-3 -5 -8 -16 -9 -22v-30zM1472 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1600 800
+v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM1856 1344v-1152c0 -35 -29 -64 -64 -64h-192
+c0 -141 -114 -256 -256 -256c-141 0 -256 115 -256 256h-384c0 -141 -114 -256 -256 -256s-256 115 -256 256h-128c-35 0 -64 29 -64 64s29 64 64 64v416c0 35 20 84 45 109l198 198c25 25 74 45 109 45h160v320c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="cc-visa" unicode="&#xf1f0;" horiz-adv-x="2304" 
+d="M1975 546h-138s14 37 66 179c-1 -1 14 37 22 61l12 -55c31 -153 38 -185 38 -185zM531 611l-58 295c-8 41 -39 54 -75 54h-268l-2 -13c184 -47 335 -147 403 -336zM710 960l-162 -438l-17 89c-35 93 -120 179 -216 218l135 -510h175l261 641h-176zM849 318h166l104 642
+h-166zM1617 944c-33 13 -85 27 -149 27c-164 0 -279 -87 -280 -212c-1 -92 82 -143 145 -174c65 -31 86 -52 86 -80c0 -43 -52 -62 -99 -62c-67 0 -103 8 -156 33l-22 11l-23 -144c39 -18 110 -34 185 -34c174 -1 287 86 289 219c0 73 -45 128 -140 174
+c-58 29 -93 50 -93 80c0 27 30 55 95 55c54 1 94 -10 124 -24l15 -8zM2042 960h-128c-40 0 -70 -12 -87 -54l-246 -588h174c28 79 35 96 35 96h212s5 -22 20 -96h154zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
+h2048c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="superscript" unicode="&#xf12b;" horiz-adv-x="1529" 
+d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
+l-184 -267l204 -296h109zM1529 846v-206h-514l-3 27c-2 14 -4 33 -4 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-38 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 33 103 65 188 65c145 0 246 -85 246 -218c0 -240 -332 -260 -346 -403
+h232v80h126z" />
+    <glyph glyph-name="pixelfed" unicode="&#xf314;" 
+d="M768 -128c-424 0 -768 344 -768 768s344 768 768 768s768 -344 768 -768s-344 -768 -768 -768zM707 472h141c133 0 240 105 240 234s-107 234 -240 234h-203c-77 0 -139 -60 -139 -135v-525z" />
+    <glyph glyph-name="tty" unicode="&#xf1e4;" horiz-adv-x="1792" 
+d="M448 224v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM256 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM832 224v-192c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM66 768c-37 0 -66 29 -66 65v129h514v-129c0 -36 -29 -65 -65 -65h-383zM1216 224v-192
+c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1600 224v-192c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1016v-13h-514v10c0 37 -32 104 -382 102c-350 -1 -382 -65 -382 -102v-10h-514v13
+c0 67 120 392 896 392c775 0 896 -325 896 -392zM1792 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 962v-129c0 -36 -29 -65 -65 -65h-384c-36 0 -65 29 -65 65v129h514z" />
+    <glyph glyph-name="linode" unicode="&#xf2b8;" horiz-adv-x="1494" 
+d="M309 1l202 -214l-34 236l-216 213zM535 -225l274 218l-11 245l-300 -215zM224 413l227 -213l-48 327l-245 204zM474 189l317 214l-14 324l-352 -200zM822 178l95 -80l-2 239l-103 79c0 -8 4 -22 -4 -28l-78 -52l85 -70c10 -8 7 -76 7 -88zM117 930l256 -200l-68 465
+l-279 173zM1152 267l15 234l-230 -164l2 -240zM396 722l373 194l-19 441l-423 -163zM1249 357l20 233l-226 142l-2 -105l144 -95c3 -2 5 -6 4 -9l-7 -119zM1440 496l30 222l-179 -128l-20 -228zM1252 329l-71 49l-8 -117c0 -3 -1 -6 -4 -8l-234 -187c-4 -3 -10 -3 -14 0
+l-98 83l7 -161c0 -3 -1 -6 -4 -8l-293 -234c-2 -1 -4 -2 -6 -2c-3 1 -6 1 -8 3l-228 242c-5 5 -54 252 -59 277c-1 4 2 9 5 11l61 37c-12 11 -93 82 -95 92l-72 351c-1 4 1 9 6 12l94 45c-16 12 -132 96 -135 108l-96 466c-1 6 2 11 7 13l433 135c2 0 5 0 8 -1l317 -153
+c3 -2 6 -6 6 -9l20 -463c0 -4 -2 -8 -6 -10l-118 -61l126 -85c3 -1 5 -5 5 -8l5 -123l121 74c3 2 8 2 11 0l84 -56l3 110c0 3 2 7 5 9l206 126c4 2 8 2 11 0l245 -135c2 -2 4 -4 5 -7c2 -7 -31 -232 -34 -255c0 -3 -2 -6 -4 -7l-191 -153c-4 -3 -9 -3 -13 0z" />
+    <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280" 
+d="M1088 576v640h-448v-1137c51 27 133 74 213 137c107 84 235 215 235 360zM1280 1344v-768c0 -421 -589 -687 -614 -698c-8 -4 -17 -6 -26 -6s-18 2 -26 6c-25 11 -614 277 -614 698v768c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="user-md" unicode="&#xf0f0;" horiz-adv-x="1408" 
+d="M384 192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 199 40 513 278 565c-16 -38 -22 -79 -22 -120v-203c-77 -27 -128 -100 -128 -181c0 -106 86 -192 192 -192
+s192 86 192 192c0 81 -52 154 -128 181v203c0 33 3 66 25 93c84 -66 188 -104 295 -104s211 38 295 104c22 -27 25 -60 25 -93v-64c-141 0 -256 -115 -256 -256v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 70 58 128 128 128
+s128 -58 128 -128v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 91 -49 176 -128 221c0 73 7 151 -22 219c238 -52 278 -366 278 -565zM1088 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384z" />
+    <glyph glyph-name="xmpp" unicode="&#xf2f9;" horiz-adv-x="1542" 
+d="M1536 1314c47 -398 -206 -904 -657 -1199c122 -101 261 -177 414 -216v-27c-165 14 -320 59 -461 128l-30 15l-1 1l-6 3c-11 6 -30 16 -41 22c-94 -51 -193 -90 -297 -116c-68 -19 -139 -33 -211 -42v28c145 37 279 107 396 201c-426 296 -682 805 -637 1192l93 -33v0
+l273 -81c-1 -16 -1 -32 -1 -49c0 -296 147 -656 394 -917c254 262 406 628 406 929c0 17 0 33 -1 49l274 81z" />
+    <glyph glyph-name="moon-o" unicode="&#xf186;" horiz-adv-x="1471" 
+d="M1262 233c-36 -6 -73 -9 -110 -9c-371 0 -672 301 -672 672c0 127 37 251 104 357c-266 -79 -456 -323 -456 -613c0 -353 287 -640 640 -640c193 0 374 88 494 233zM1465 318c-125 -271 -399 -446 -697 -446c-423 0 -768 345 -768 768c0 415 325 752 739 767
+c28 1 51 -15 61 -39c11 -25 4 -54 -15 -72c-114 -104 -177 -246 -177 -400c0 -300 244 -544 544 -544c79 0 155 17 228 51c25 11 53 6 72 -13s24 -48 13 -72z" />
+    <glyph glyph-name="pie-chart" unicode="&#xf200;" horiz-adv-x="1728" 
+d="M768 646l546 -546c-139 -141 -333 -228 -546 -228c-424 0 -768 344 -768 768s344 768 768 768v-762zM955 640h773c0 -213 -87 -407 -228 -546zM1664 768h-768v768c424 0 768 -344 768 -768z" />
+    <glyph glyph-name="align-left" unicode="&#xf036;" horiz-adv-x="1792" 
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1664 960v-128
+c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="motorcycle" unicode="&#xf21c;" horiz-adv-x="2304" 
+d="M2301 500c32 -281 -197 -517 -476 -499c-214 14 -392 185 -414 399c-16 152 44 289 146 381l-71 107c-126 -105 -206 -262 -206 -438c0 -36 -28 -66 -64 -66h-325c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c53 0 104 -10 152 -27l24 45
+c-77 69 -178 110 -304 110h-64c-35 0 -64 29 -64 64s29 64 64 64h128c224 0 338 -92 384 -128h627l-85 128h-222c-39 0 -70 35 -63 75c5 31 35 53 66 53h253c21 0 41 -11 53 -28l70 -105l114 114c12 12 29 19 46 19h101c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-179
+l115 -172c81 39 175 55 275 36c191 -35 340 -195 362 -388zM448 128c155 0 284 110 314 256h-314c-22 0 -43 12 -55 31c-11 19 -12 43 -1 63l147 277c-29 8 -59 13 -91 13c-176 0 -320 -144 -320 -320s144 -320 320 -320zM1856 128c176 0 320 144 320 320s-144 320 -320 320
+c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320z" />
+    <glyph glyph-name="nextcloud-square" unicode="&#xf307;" 
+d="M257 1408h1022c142 0 257 -115 257 -257v-1022c0 -142 -115 -257 -257 -257h-1022c-142 0 -257 115 -257 257v1022c0 142 115 257 257 257zM772 969v0c-145 0 -268 -98 -307 -230c-34 69 -105 118 -187 118c-114 0 -208 -94 -208 -208s94 -207 208 -207
+c82 0 153 48 187 117c39 -132 162 -230 307 -230s267 98 306 230c34 -69 105 -117 187 -117c114 0 208 93 208 207s-94 208 -208 208c-82 0 -153 -49 -187 -118c-39 132 -161 230 -306 230zM772 846v0c106 0 196 -88 196 -197s-87 -196 -196 -196s-197 87 -197 196
+s88 197 197 197zM278 733c47 0 84 -37 84 -84s-37 -84 -84 -84s-84 37 -84 84s37 84 84 84zM1265 733c47 0 84 -37 84 -84s-37 -84 -84 -84s-84 37 -84 84s37 84 84 84z" />
+    <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1685" 
+d="M970 1084l316 -316l-572 -572l-316 316zM760 105l618 618c25 25 25 65 0 90l-362 362c-24 24 -66 24 -90 0l-618 -618c-25 -25 -25 -65 0 -90l362 -362c12 -12 27 -18 44 -18s34 6 46 18zM1648 742l-906 -908c-50 -49 -133 -49 -182 0l-126 126c75 75 75 197 0 272
+s-197 75 -272 0l-124 126c-50 49 -50 131 0 181l906 906c49 50 132 50 182 0l124 -125c-75 -75 -75 -197 0 -272s197 -75 272 0l126 -125c49 -50 49 -132 0 -181z" />
+    <glyph glyph-name="battery-half" unicode="&#xf242;" horiz-adv-x="2304" 
+d="M256 256v768h896v-768h-896zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
+c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+    <glyph glyph-name="spotify" unicode="&#xf1bc;" 
+d="M1127 326c0 28 -11 39 -30 51c-129 77 -279 115 -447 115c-98 0 -192 -13 -287 -34c-23 -5 -42 -20 -42 -52c0 -25 19 -49 49 -49c9 0 25 5 37 8c78 16 160 27 243 27c147 0 286 -36 397 -103c12 -7 20 -11 33 -11c25 0 47 20 47 48zM1223 541c0 27 -10 46 -35 61
+c-153 91 -347 141 -548 141c-129 0 -217 -18 -303 -42c-32 -9 -48 -31 -48 -64s27 -60 60 -60c14 0 22 4 37 8c70 19 154 33 251 33c190 0 363 -50 488 -124c11 -6 22 -13 38 -13c34 0 60 27 60 60zM1331 789c0 37 -16 56 -40 70c-173 101 -410 148 -636 148
+c-133 0 -255 -15 -364 -47c-28 -8 -54 -32 -54 -74c0 -41 31 -73 72 -73c15 0 29 5 40 8c97 27 202 37 307 37c208 0 424 -46 563 -129c14 -8 24 -12 40 -12c38 0 72 30 72 72zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+    <glyph glyph-name="dot-circle-o" unicode="&#xf192;" 
+d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+    <glyph glyph-name="facebook-square" unicode="&#xf082;" 
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-188v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-532c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
+h960z" />
+    <glyph glyph-name="facebook-messenger" unicode="&#xf2fe;" horiz-adv-x="1520" 
+d="M760 1408c420 0 760 -318 760 -711c0 -476 -490 -817 -978 -681l-260 -144v272c-556 420 -235 1264 478 1264zM841 455l415 440l-379 -209l-197 204l-415 -441l379 210z" />
+    <glyph glyph-name="angle-up" unicode="&#xf106;" horiz-adv-x="998" 
+d="M998 352c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="glide" unicode="&#xf2a5;" 
+d="M866 1021c0 -32 -7 -63 -13 -94c-21 -100 -41 -200 -62 -300c-3 -14 -3 -14 -18 -15c-10 -1 -21 -2 -31 -2c-86 0 -110 93 -110 163c0 104 41 243 138 298c16 8 33 14 51 14c41 0 45 -30 45 -64zM1352 597c0 18 -74 135 -91 142c-8 3 -25 8 -34 8
+c-82 0 -156 -37 -226 -77l-2 2c16 107 52 202 52 313c0 159 -85 233 -242 233c-23 0 -46 -3 -68 -6c-197 -35 -317 -260 -317 -445c0 -196 113 -304 308 -304c4 0 25 2 25 -3c0 -2 0 -3 -1 -5c-4 -38 -16 -80 -26 -117c-15 -55 -67 -150 -134 -150c-29 0 -42 20 -42 47
+c0 87 100 139 102 144c0 4 -5 8 -7 10c-31 28 -82 51 -124 51c-76 0 -117 -122 -117 -184c0 -116 73 -196 190 -196c173 0 299 182 338 332c11 44 19 89 30 133c2 9 5 13 14 18c71 36 146 60 227 60c44 0 83 -8 127 -18c1 -1 3 -1 4 -1c6 0 14 7 14 13zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="gitea" unicode="&#xf31f;" horiz-adv-x="2066" 
+d="M366 1280v0c62 0 120 -8 160 -8v0v0c329 -18 502 -29 699 -29l1 -363l53 -27v390c171 2 371 11 709 29v0h1c15 0 28 -7 38 -17s18 -25 24 -43c12 -36 16 -85 15 -143c-3 -117 -30 -272 -75 -427s-107 -311 -182 -431s-163 -204 -259 -211h-615c-75 8 -156 85 -224 169
+c-34 42 -64 87 -87 126c-21 36 -35 66 -41 88c-82 2 -219 15 -341 80c-125 67 -233 191 -242 414c-6 143 45 245 118 310s167 93 248 93zM388 1107v0c-90 -1 -147 -29 -180 -71c-36 -44 -46 -104 -38 -164c14 -113 61 -183 126 -229c62 -44 143 -65 231 -78
+c-70 193 -106 325 -128 542h-11zM1118 893c-34 0 -66 -19 -82 -51l-172 -353c-22 -45 -3 -99 42 -121l354 -172c45 -22 99 -3 121 42l171 354c22 45 3 99 -42 121l-249 121l-45 -93c5 -5 10 -14 12 -20c2 -5 3 -13 3 -19v-4c30 -14 54 -25 74 -36c30 -17 52 -34 59 -62
+s-1 -57 -17 -95c-12 -29 -29 -65 -51 -111c4 -5 9 -13 11 -19c2 -5 4 -13 4 -19c0 -22 -17 -46 -38 -54c-5 -2 -14 -4 -20 -4c-22 0 -46 17 -54 38c-2 5 -3 14 -3 20c0 22 17 46 38 54c5 2 14 3 19 3h2c22 46 41 82 52 109c15 36 18 55 15 66s-13 20 -39 35
+c-18 10 -41 22 -71 36c-4 -4 -13 -9 -19 -11c-5 -2 -14 -3 -19 -3h-6l-77 -158c5 -5 12 -14 14 -21c2 -5 3 -13 3 -19c0 -22 -17 -46 -38 -54c-5 -2 -13 -4 -19 -4c-22 0 -46 17 -54 38c-2 5 -3 14 -3 20c0 22 16 46 37 54c5 2 15 3 20 3l79 162c-3 4 -8 11 -10 16
+s-3 14 -3 20c0 22 17 46 38 54c5 2 14 3 19 3h1l46 94l-64 31c-13 6 -26 9 -39 9z" />
+    <glyph glyph-name="f-droid" unicode="&#xf32a;" horiz-adv-x="1676" 
+d="M47 1526v0c12 0 29 -8 36 -18l127 -164c10 3 27 6 37 6v0h1182v0c10 0 27 -3 37 -6l127 164c7 9 22 17 34 18h2h3c24 -1 44 -22 44 -46c0 -9 -4 -22 -10 -29l-133 -172c4 -11 7 -29 7 -40v0v-258c0 -61 -50 -111 -111 -111h-1182c-61 0 -111 50 -111 111v258v0
+c0 11 3 29 7 40l-133 172c-6 7 -10 20 -10 29c0 26 20 46 46 46h1zM482 1212v0c-69 0 -125 -56 -125 -125v0c0 -69 56 -125 125 -125v0c69 0 125 56 125 125v0c0 69 -56 125 -125 125v0zM1203 1212c-69 0 -125 -56 -125 -125v0c0 -69 56 -125 125 -125s125 56 125 125v0
+c0 69 -56 125 -125 125zM247 833h1182c61 0 111 -50 111 -111v-739c0 -61 -50 -111 -111 -111h-1182c-61 0 -111 50 -111 111v739c0 61 50 111 111 111zM838 740v0c-214 0 -388 -174 -388 -388s174 -388 388 -388s388 174 388 388s-174 388 -388 388zM838 670v0
+c176 0 318 -142 318 -318s-142 -317 -318 -317s-318 141 -318 317s142 318 318 318zM838 583v0c-106 0 -197 -72 -223 -171h119c20 36 59 61 104 61c67 0 120 -54 120 -121s-53 -120 -120 -120c-48 0 -89 28 -108 69h-117c24 -102 116 -180 225 -180c127 0 231 104 231 231
+s-104 231 -231 231z" />
+    <glyph glyph-name="shopping-basket" unicode="&#xf291;" horiz-adv-x="2048" 
+d="M1920 768c71 0 128 -57 128 -128s-57 -128 -128 -128h-15l-115 -662c-11 -61 -64 -106 -126 -106h-1280c-62 0 -115 45 -126 106l-115 662h-15c-71 0 -128 57 -128 128s57 128 128 128h1792zM485 -32c35 3 62 34 59 69l-32 416c-3 35 -34 62 -69 59s-62 -34 -59 -69
+l32 -416c3 -33 31 -59 64 -59h5zM896 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1280 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1632 27l32 416c3 35 -24 66 -59 69s-66 -24 -69 -59
+l-32 -416c-3 -35 24 -66 59 -69h5c33 0 61 26 64 59zM476 1244l-93 -412h-132l101 441c26 117 129 199 249 199h167c0 35 29 64 64 64h384c35 0 64 -29 64 -64h167c120 0 223 -82 249 -199l101 -441h-132l-93 412c-14 59 -65 100 -125 100h-167c0 -35 -29 -64 -64 -64h-384
+c-35 0 -64 29 -64 64h-167c-60 0 -111 -41 -125 -100z" />
+    <glyph glyph-name="user-o" unicode="&#xf2c0;" 
+d="M1201 752c141 -41 335 -180 335 -635c0 -206 -153 -373 -341 -373h-854c-188 0 -341 167 -341 373c0 455 194 594 335 635c-50 79 -79 172 -79 272c0 282 230 512 512 512s512 -230 512 -512c0 -100 -29 -193 -79 -272zM768 1408c-212 0 -384 -172 -384 -384
+s172 -384 384 -384s384 172 384 384s-172 384 -384 384zM1195 -128c117 0 213 109 213 245c0 315 -106 512 -304 522c-90 -79 -207 -127 -336 -127s-246 48 -336 127c-198 -10 -304 -207 -304 -522c0 -136 96 -245 213 -245h854z" />
+    <glyph glyph-name="paperclip" unicode="&#xf0c6;" horiz-adv-x="1400" 
+d="M1400 151c0 -156 -119 -275 -275 -275c-88 0 -173 38 -235 100l-777 776c-71 72 -113 170 -113 271c0 212 167 381 379 381c102 0 200 -41 273 -113l605 -606c6 -6 10 -14 10 -22c0 -21 -56 -77 -77 -77c-9 0 -17 4 -23 10l-606 607c-48 47 -113 77 -181 77
+c-142 0 -252 -115 -252 -256c0 -68 28 -133 76 -181l776 -777c38 -38 91 -63 145 -63c85 0 148 63 148 148c0 55 -25 107 -63 145l-581 581c-16 15 -38 24 -60 24c-38 0 -67 -28 -67 -67c0 -22 10 -43 25 -59l410 -410c6 -6 10 -14 10 -22c0 -21 -57 -78 -78 -78
+c-8 0 -16 4 -22 10l-410 410c-40 39 -63 94 -63 149c0 110 86 196 196 196c56 0 110 -23 149 -63l581 -581c63 -62 100 -147 100 -235z" />
+    <glyph glyph-name="deviantart" unicode="&#xf1bd;" horiz-adv-x="1024" 
+d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273c-1 0 -28 -28 -30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273c1 0 28 28 30 30h301v-303z" />
+    <glyph glyph-name="file-audio-o" unicode="&#xf1c7;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM620 686c12 -5 20 -17 20 -30v-544c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-166 167h-131c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h131l166 167c10 9 23 12 35 7zM1037 -3c-14 0 -28 5 -40 15c-28 22 -32 62 -9 90
+c65 80 100 178 100 282s-35 202 -100 282c-23 28 -19 68 9 91c27 22 68 18 90 -10c83 -102 129 -231 129 -363s-46 -261 -129 -363c-13 -16 -31 -24 -50 -24zM826 145c-15 0 -31 6 -44 17c-25 24 -27 65 -2 91c33 36 52 82 52 131s-19 95 -52 131c-25 26 -23 67 2 91
+c26 24 67 23 91 -3c56 -60 87 -137 87 -219s-31 -159 -87 -219c-13 -13 -30 -20 -47 -20z" />
+    <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1012" 
+d="M976 229l35 -159c4 -16 -5 -32 -20 -37c-4 -1 -97 -33 -217 -33c-312 0 -563 188 -647 482h-95c-18 0 -32 15 -32 32v113c0 17 14 32 32 32h66c-1 32 -1 70 1 105h-67c-18 0 -32 14 -32 32v114c0 18 14 32 32 32h98c89 280 345 466 644 466c104 0 190 -22 194 -23
+c8 -2 15 -8 20 -15c4 -7 5 -16 3 -24l-43 -159c-4 -17 -21 -27 -38 -22c-1 0 -69 17 -140 17c-168 0 -309 -91 -376 -240h468c10 0 19 -4 25 -12c6 -7 9 -17 7 -26l-24 -114c-3 -15 -16 -26 -32 -26h-488c-3 -32 -2 -66 0 -105h459c10 0 19 -5 25 -12c6 -8 8 -18 6 -27
+l-24 -112c-3 -15 -16 -26 -31 -26h-387c64 -156 208 -254 378 -254c87 0 158 24 159 24c8 3 18 2 26 -2c8 -5 13 -13 15 -21z" />
+    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1856" 
+d="M1664 896c0 106 -86 192 -192 192h-64v-384h64c106 0 192 86 192 192zM0 128h1792c0 -141 -115 -256 -256 -256h-1280c-141 0 -256 115 -256 256zM1856 896c0 -212 -172 -384 -384 -384h-64v-32c0 -123 -101 -224 -224 -224h-704c-123 0 -224 101 -224 224v736
+c0 35 29 64 64 64h1152c212 0 384 -172 384 -384z" />
+    <glyph glyph-name="university" unicode="&#xf19c;" horiz-adv-x="1920" 
+d="M960 1536l960 -384v-128h-128c0 -35 -31 -64 -69 -64h-1526c-38 0 -69 29 -69 64h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59c38 0 69 -29 69 -64v-64h-1664v64c0 35 31 64 69 64h59v768zM1851 -64c38 0 69 -29 69 -64v-128
+h-1920v128c0 35 31 64 69 64h1782z" />
+    <glyph glyph-name="times-circle-o" unicode="&#xf05c;" 
+d="M1097 457l-146 -146c-13 -13 -33 -13 -46 0l-137 137l-137 -137c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l137 137l-137 137c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l137 -137l137 137c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-137 -137
+l137 -137c13 -13 13 -33 0 -46zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="python" unicode="&#xf322;" 
+d="M759 1416v0c63 0 129 -4 193 -15c101 -17 185 -92 185 -192v-353c0 -103 -82 -188 -185 -188h-370c-126 0 -232 -108 -232 -230v-170h-127c-108 0 -171 78 -197 188c-36 147 -34 236 0 377c29 123 124 188 232 188h509v47h-370v141c0 107 28 164 185 192
+c53 9 114 15 177 15zM558 1303c-38 0 -69 -32 -69 -71s31 -70 69 -70s70 31 70 70s-32 71 -70 71zM1183 1021h139c108 0 159 -81 186 -188c37 -149 39 -261 0 -377c-37 -113 -78 -188 -186 -188h-555v-47h370v-141c0 -107 -92 -161 -185 -188c-140 -41 -253 -34 -370 0
+c-98 29 -185 88 -185 188v353c0 102 84 188 185 188h370c123 0 231 107 231 235v165zM975 127v0c-38 0 -69 -31 -69 -70s31 -71 69 -71s70 32 70 71s-32 70 -70 70zM1389 366c0 -17 -70 -30 -156 -30s-156 13 -156 30s70 30 156 30s156 -13 156 -30z" />
+    <glyph glyph-name="internet-explorer" unicode="&#xf26b;" horiz-adv-x="1792" 
+d="M1792 599c0 -35 -2 -70 -7 -104h-1151c0 -199 175 -343 367 -343c130 0 255 64 322 177h423c-114 -321 -419 -536 -759 -536c-123 0 -246 29 -356 83c-112 -57 -269 -116 -394 -116c-168 0 -237 103 -237 263c0 93 20 186 45 275c16 58 80 176 109 229
+c123 223 285 437 475 606c-153 -66 -319 -232 -427 -354c84 366 410 625 785 625c15 0 30 0 45 -1c124 57 297 117 433 117c162 0 301 -62 301 -245c0 -96 -37 -200 -75 -286c66 -119 101 -254 101 -390zM1722 1239c0 112 -80 181 -190 181c-84 0 -179 -34 -254 -70
+c162 -63 301 -179 393 -327c25 66 51 146 51 216zM128 2c0 -116 69 -179 183 -179c89 0 188 40 266 83c-163 96 -289 249 -351 428c-46 -96 -98 -224 -98 -332zM632 715h728c-7 193 -177 332 -364 332c-188 0 -357 -139 -364 -332z" />
+    <glyph glyph-name="file-video-o" unicode="&#xf1c8;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM768 768c70 0 128 -58 128 -128v-384c0 -70 -58 -128 -128 -128h-384c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h384zM1260 766c12 -5 20 -17 20 -30v-576c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -17 3 -23 9l-265 266v90l265 266
+c6 6 15 9 23 9c4 0 8 -1 12 -2z" />
+    <glyph glyph-name="angle-double-right" unicode="&#xf101;" horiz-adv-x="966" 
+d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM966 576c0 -8 -4 -17 -10 -23
+l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="safari" unicode="&#xf267;" horiz-adv-x="1792" 
+d="M949 643c0 -33 -23 -64 -58 -64c-33 0 -64 24 -64 58c0 33 24 64 59 64c32 0 63 -23 63 -58zM964 585l350 581c-47 -44 -485 -447 -497 -468l-349 -580c46 43 485 448 496 467zM1611 640c0 -131 -36 -260 -104 -371c-10 5 -52 35 -60 35c-7 0 -13 -6 -13 -13
+c0 -13 47 -37 59 -44c-99 -150 -252 -258 -426 -301l-16 67c-1 9 -7 10 -15 10c-7 0 -11 -10 -10 -15l16 -68c-48 -10 -97 -15 -146 -15c-131 0 -260 37 -372 105c6 10 44 65 44 73c0 7 -6 13 -13 13c-14 0 -44 -60 -53 -72c-151 100 -260 255 -302 432l69 15
+c8 2 10 8 10 15s-10 11 -16 10l-68 -15c-9 46 -14 92 -14 139c0 134 38 266 109 379c10 -6 58 -39 66 -39c7 0 13 5 13 12c0 14 -53 41 -65 49c102 149 257 256 433 296l15 -67c2 -8 8 -10 15 -10s11 10 10 16l-15 66c44 8 89 13 134 13c134 0 265 -38 379 -109
+c-7 -10 -39 -57 -39 -65c0 -7 5 -13 12 -13c14 0 41 52 48 64c148 -100 254 -253 295 -427l-56 -12c-9 -2 -10 -8 -10 -16c0 -7 10 -11 15 -10l57 13c9 -46 14 -93 14 -140zM1696 640c0 442 -358 800 -800 800s-800 -358 -800 -800s358 -800 800 -800s800 358 800 800z
+M1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="commenting-o" unicode="&#xf27b;" horiz-adv-x="1792" 
+d="M640 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1024 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128z
+M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
+c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -287 896 -640z" />
+    <glyph glyph-name="snowdrift" unicode="&#xf2f1;" horiz-adv-x="1448" 
+d="M1007 384c104 116 30 287 -165 383c7 -6 44 24 83 67s65 84 58 90c-195 96 -438 80 -542 -36s-30 -287 165 -383c-7 6 -44 -24 -83 -67s-65 -84 -58 -90c195 -96 438 -80 542 36zM103 1188v0c228 253 760 288 1188 78c15 -14 -42 -101 -127 -196s-167 -161 -182 -147
+c428 -210 591 -585 363 -839c-228 -253 -760 -288 -1188 -78c-15 14 42 101 127 196s167 161 182 147c-428 210 -591 585 -363 839z" />
+    <glyph glyph-name="black-tie" unicode="&#xf27e;" 
+d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
+    <glyph glyph-name="youtube-play" unicode="&#xf16a;" horiz-adv-x="1792" 
+d="M711 408l484 250l-484 253v-503zM896 1270c377 0 627 -18 627 -18c35 -4 112 -4 180 -76c0 0 55 -54 71 -178c19 -145 18 -290 18 -290v-136s1 -145 -18 -290c-16 -123 -71 -178 -71 -178c-68 -71 -145 -71 -180 -75c0 0 -250 -19 -627 -19c-466 4 -609 18 -609 18
+c-40 7 -130 5 -198 76c0 0 -55 55 -71 178c-19 145 -18 290 -18 290v136s-1 145 18 290c16 124 71 178 71 178c68 72 145 72 180 76c0 0 250 18 627 18z" />
+    <glyph glyph-name="modx" unicode="&#xf285;" horiz-adv-x="1728" 
+d="M1395 827l-614 386l92 151h855zM373 562l-184 116v858l1183 -743zM1392 697l147 -95v-858l-532 335zM1355 718l-500 -802h-855l356 571z" />
+    <glyph glyph-name="caret-square-o-right" unicode="&#xf152;" 
+d="M1088 640c0 -21 -10 -40 -27 -52l-448 -320c-19 -14 -45 -16 -66 -5c-22 11 -35 33 -35 57v640c0 24 13 46 35 57c21 11 47 9 66 -5l448 -320c17 -12 27 -31 27 -52zM1280 160v960c0 18 -14 32 -32 32h-960c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h960
+c18 0 32 14 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="gitlab" unicode="&#xf296;" horiz-adv-x="1793" 
+d="M104 830l792 -1015l-868 630c-24 18 -34 49 -25 77zM566 830h660l-330 -1015zM368 1442l198 -612h-462l198 612c11 31 55 31 66 0zM1688 830l101 -308c9 -28 -1 -59 -25 -77l-868 -630zM1688 830h-462l198 612c11 31 55 31 66 0z" />
+    <glyph glyph-name="arrows" unicode="&#xf047;" horiz-adv-x="1792" 
+d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-384v-384h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v384h-384
+v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h384v384h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256c12 12 28 19 45 19s33 -7 45 -19l256 -256
+c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-128v-384h384v128c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="refresh" unicode="&#xf021;" 
+d="M1511 480c0 -2 0 -5 -1 -7c-85 -354 -377 -601 -746 -601c-195 0 -384 77 -526 212l-129 -129c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v448c0 35 29 64 64 64h448c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-137 -137c94 -88 219 -138 348 -138
+c178 0 343 92 436 244c24 39 36 77 53 117c5 14 15 23 30 23h192c18 0 32 -15 32 -32zM1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64c0 17 7 33 19 45l138 138c-95 88 -220 137 -349 137c-178 0 -343 -92 -436 -244c-24 -39 -36 -77 -53 -117
+c-5 -14 -15 -23 -30 -23h-199c-18 0 -32 15 -32 32v7c86 355 381 601 750 601c196 0 387 -78 529 -212l130 129c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="file-o" unicode="&#xf016;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280z" />
+    <glyph glyph-name="battery-three-quarters" unicode="&#xf241;" horiz-adv-x="2304" 
+d="M256 256v768h1280v-768h-1280zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32
+h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+    <glyph glyph-name="reddit-alien" unicode="&#xf281;" horiz-adv-x="1792" 
+d="M1792 690c0 -78 -44 -145 -109 -178c8 -31 12 -63 12 -96c0 -316 -357 -572 -797 -572c-439 0 -796 256 -796 572c0 32 4 64 11 94c-67 33 -113 101 -113 180c0 110 89 199 199 199c57 0 108 -24 145 -63c135 94 315 155 515 162l116 521c4 18 23 30 41 26l369 -81
+c24 48 75 82 133 82c83 0 150 -67 150 -149c0 -83 -67 -150 -150 -150c-82 0 -149 67 -149 149l-334 74l-104 -472c201 -6 383 -66 519 -160c36 38 87 61 143 61c110 0 199 -89 199 -199zM418 491c0 -83 67 -150 149 -150c83 0 150 67 150 150c0 82 -67 149 -150 149
+c-82 0 -149 -67 -149 -149zM1228 136c15 15 15 37 0 52c-14 14 -37 14 -51 0c-60 -61 -189 -82 -281 -82s-221 21 -281 82c-14 14 -37 14 -51 0c-15 -14 -15 -37 0 -52c95 -95 278 -102 332 -102s237 7 332 102zM1225 341c82 0 149 67 149 150c0 82 -67 149 -149 149
+c-83 0 -150 -67 -150 -149c0 -83 67 -150 150 -150z" />
+    <glyph glyph-name="square" unicode="&#xf0c8;" 
+d="M1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="ellipsis-v" unicode="&#xf142;" horiz-adv-x="384" 
+d="M384 288v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 1312v-192c0 -53 -43 -96 -96 -96h-192
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="glide-g" unicode="&#xf2a6;" horiz-adv-x="1461" 
+d="M707 1231c0 53 -5 99 -69 99c-27 0 -54 -9 -78 -23c-151 -83 -213 -298 -213 -460c0 -108 37 -252 169 -252c30 0 68 -8 76 27c32 154 64 309 96 463c10 48 19 97 19 146zM1461 575c0 -10 -13 -20 -23 -20l-6 1c-68 10 -128 28 -197 28c-125 0 -240 -37 -351 -93
+c-14 -7 -17 -13 -21 -27c-18 -68 -30 -138 -47 -206c-60 -233 -255 -514 -522 -514c-182 0 -294 124 -294 303c0 97 63 286 180 286c41 0 202 -53 203 -95c-2 -8 -157 -88 -157 -223c0 -41 20 -73 65 -73c159 0 232 290 248 412v9c0 8 -32 4 -38 4c-301 0 -477 168 -477 471
+c0 286 186 635 491 688c35 6 70 9 106 9c242 0 374 -113 374 -360c0 -167 -57 -321 -81 -484l3 -3c108 61 222 119 350 119c13 0 41 -8 53 -13c26 -10 141 -191 141 -219z" />
+    <glyph glyph-name="globe" unicode="&#xf0ac;" 
+d="M768 1404c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM737 1186v0c-18 0 -40 -7 -58 -7c-27 0 -61 12 -81 0s-18 -37 -27 -55s-28 -34 -28 -54s19 -36 28 -54s2 -47 27 -54s54 36 81 54s69 32 81 54s0 36 0 54s16 39 0 55
+c-5 5 -14 7 -23 7zM491 1178h-6s-44 -8 -76 -13c-136 -92 -261 -300 -278 -464c23 -12 46 -22 60 -36c27 -27 83 -27 88 -56s-24 -62 -33 -80s-31 -31 -27 -54s36 -36 54 -54s37 -22 54 -54s20 -98 27 -135c9 -47 23 -85 44 -118c27 -19 72 -44 102 -58c10 28 10 93 16 122
+c7 37 13 109 27 135s19 19 28 28s18 15 28 28s17 34 26 52s30 31 26 53s-36 37 -54 55s-29 39 -55 54s-73 18 -101 25s-127 12 -129 13c-2 0 -1 -6 -7 2s-2 39 -2 57s11 34 24 66c13 18 5 10 25 24c10 9 43 -44 57 -44s-3 91 6 100c36 36 128 98 128 136s-37 36 -55 54
+s-46 -30 -111 -30s76 103 85 112s23 17 27 27s0 18 0 27s12 22 8 25c-2 1 -4 1 -6 1zM1212 1096c-62 -8 -139 -10 -182 -26c-45 -17 -54 -36 -81 -54s-67 -28 -81 -54s0 -54 0 -81s-26 -68 0 -82s55 37 82 55s63 64 81 54s6 -7 0 -27s-51 -41 -52 -81s102 -73 68 -126
+s-188 46 -232 17s-19 -54 -28 -81s-37 -52 -27 -81s52 -34 81 -54s81 -56 82 -58s20 -99 27 -135c14 -73 -27 -199 76 -231c31 14 78 41 106 60c13 34 24 72 35 94c22 44 71 123 80 161s0 37 0 55s7 30 0 54s-36 54 -54 81s-34 64 -54 81s-46 18 -54 27s-4 8 -4 13
+s-4 7 5 14s34 8 54 0s36 -36 54 -54s25 -51 54 -54s54 36 81 54c25 17 52 56 76 55c-12 131 -98 312 -193 404z" />
+    <glyph glyph-name="hashnode" unicode="&#xf317;" 
+d="M246 1408h1044c136 0 246 -110 246 -246v-1044c0 -136 -110 -246 -246 -246h-1044c-136 0 -246 110 -246 246v1044c0 136 110 246 246 246zM1153 23v0c87 1 158 71 162 158s-62 162 -149 171l-315 556c-46 83 -135 78 -167 -39c-28 -111 -20 -216 -28 -342
+c0 -1 -1 -2 -2 -2s-2 1 -2 1l-281 560c20 16 37 50 37 75c0 52 -41 93 -93 93s-94 -41 -94 -93s42 -93 94 -93c4 0 7 1 11 1c118 -304 250 -659 297 -741c32 -78 141 -53 144 31l12 444c0 3 3 3 4 1l226 -537c-11 -20 -21 -55 -21 -78v-1c0 -91 74 -165 165 -165z" />
+    <glyph glyph-name="comment-o" unicode="&#xf0e5;" horiz-adv-x="1792" 
+d="M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
+c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 354 401 640 896 640s896 -286 896 -640z" />
+    <glyph glyph-name="bluetooth" unicode="&#xf293;" horiz-adv-x="1322" 
+d="M734 483l148 -148l-149 -149zM733 1094l149 -149l-148 -148zM603 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1322 640c0 -710 -270 -896 -661 -896s-661 186 -661 896s270 896 661 896s661 -186 661 -896z
+" />
+    <glyph glyph-name="hand-pointer-o" unicode="&#xf25a;" horiz-adv-x="1664" 
+d="M640 1408c-71 0 -128 -57 -128 -128v-896l-151 202c-25 33 -65 54 -107 54c-70 0 -126 -59 -126 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h718c29 0 55 20 62 48l92 368c16 64 24 129 24 194v217c0 53 -41 101 -96 101c-53 0 -96 -43 -96 -96h-32v61
+c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-64h-32v90c0 72 -55 134 -128 134c-71 0 -128 -57 -128 -128v-96h-32v570c0 72 -55 134 -128 134zM640 1536c143 0 256 -120 256 -262v-220c11 1 21 2 32 2c65 0 126 -25 173 -69c31 14 65 21 99 21c72 0 139 -32 184 -87
+c19 5 37 7 56 7c126 0 224 -105 224 -229v-217c0 -75 -9 -151 -28 -225l-92 -368c-21 -85 -98 -145 -186 -145h-718c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 140 114 256 254 256c46 0 91 -12 130 -35v547c0 141 115 256 256 256zM768 128h-32v384h32
+v-384zM1024 128h-32v384h32v-384zM1280 128h-32v384h32v-384z" />
+    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664" 
+d="M1664 960v-256c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-192h96c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h672v192c0 247 201 448 448 448
+s448 -201 448 -448z" />
+    <glyph glyph-name="quote-right" unicode="&#xf10e;" horiz-adv-x="1664" 
+d="M768 1216v-704c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192zM1664 1216v-704
+c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192z" />
+    <glyph glyph-name="arrow-left" unicode="&#xf060;" horiz-adv-x="1472" 
+d="M1472 640v-128c0 -68 -45 -128 -117 -128h-704l293 -294c24 -23 38 -56 38 -90s-14 -67 -38 -90l-75 -76c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-651 652c-23 23 -37 56 -37 90s14 67 37 91l651 650c24 24 57 38 91 38s66 -14 90 -38l75 -74c24 -24 38 -57 38 -91
+s-14 -67 -38 -91l-293 -293h704c72 0 117 -60 117 -128z" />
+    <glyph glyph-name="scissors" unicode="&#xf0c4;" horiz-adv-x="1792" 
+d="M960 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1260 576l507 -398c18 -13 27 -35 25 -56c-3 -22 -16 -41 -35 -51l-128 -64c-9 -5 -19 -7 -29 -7c-11 0 -22 3 -31 8l-690 387l-110 -66c-4 -2 -8 -4 -12 -5c9 -31 13 -64 10 -97
+c-9 -103 -78 -201 -188 -271c-85 -54 -183 -84 -277 -84c-90 0 -166 27 -222 78c-57 53 -86 129 -79 207c9 102 78 201 187 271c85 54 184 84 278 84c56 0 107 -11 151 -31c6 9 13 16 22 22l122 73l-122 73c-9 6 -16 13 -22 22c-44 -20 -95 -31 -151 -31
+c-94 0 -193 30 -278 84c-109 70 -178 169 -187 271c-7 78 22 154 79 206c56 52 132 79 222 79c94 0 192 -30 277 -84c110 -69 179 -168 188 -271c3 -33 -1 -66 -10 -97c4 -1 8 -3 12 -5l110 -66l690 387c9 5 20 8 31 8c10 0 20 -2 29 -7l128 -64c19 -10 32 -29 35 -51
+c2 -21 -7 -43 -25 -56zM579 836c61 56 23 157 -85 225c-61 39 -132 59 -192 59c-46 0 -87 -12 -113 -36c-61 -56 -23 -157 85 -225c61 -39 131 -59 192 -59c46 0 87 12 113 36zM494 91c108 68 146 169 85 225c-26 24 -67 36 -113 36c-61 0 -131 -20 -192 -59
+c-108 -68 -146 -169 -85 -225c26 -24 67 -36 113 -36c60 0 131 20 192 59zM672 704l96 -58v11c0 23 13 44 33 56l14 8l-79 47l-26 -26c-8 -8 -14 -16 -22 -23c-3 -3 -5 -4 -7 -6zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8c2 -3 4 -4 7 -6
+c8 -8 14 -16 22 -24l26 -26zM1600 64l128 64l-520 408l-177 -138c-3 -4 -8 -5 -13 -7z" />
+    <glyph glyph-name="ellipsis-h" unicode="&#xf141;" horiz-adv-x="1408" 
+d="M384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM896 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM1408 800v-192c0 -53 -43 -96 -96 -96h-192
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="scribd" unicode="&#xf28a;" horiz-adv-x="1464" 
+d="M1464 -13c0 -119 -96 -216 -216 -216s-217 97 -217 216c0 120 97 217 217 217s216 -97 216 -217zM1231 268c-152 -20 -270 -150 -270 -308c0 -49 12 -97 33 -138c-90 -48 -212 -78 -379 -78c-532 0 -615 376 -615 426c0 51 30 218 218 218s214 -161 214 -194
+c0 0 0 -34 -23 -81c64 -60 215 -60 215 -60c151 0 265 74 265 184c0 111 -128 165 -420 302c-292 138 -402 239 -402 490c0 252 168 507 587 507s577 -235 577 -396s-137 -201 -188 -201c-50 0 -235 -17 -235 261c-33 37 -177 37 -177 37c-145 0 -209 -110 -209 -177
+c0 -68 27 -152 329 -252c463 -154 480 -355 480 -540z" />
+    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="444" 
+d="M414 288v-224c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v224c0 35 29 64 64 64h256c35 0 64 -29 64 -64zM444 1344l-28 -768c-1 -35 -31 -64 -66 -64h-256c-35 0 -65 29 -66 64l-28 768c-1 35 27 64 62 64h320c35 0 63 -29 62 -64z" />
+    <glyph glyph-name="try" unicode="&#xf195;" horiz-adv-x="1152" 
+d="M1152 704c0 -388 -316 -704 -704 -704h-160c-18 0 -32 14 -32 32v611l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71v93l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71
+v250c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-181l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-93l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-487c250 17 448 225 448 479c0 18 14 32 32 32h160
+c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="assistive-listening-systems" unicode="&#xf2a2;" horiz-adv-x="1792" 
+d="M128 -192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM320 0c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM365 365l256 -256l-90 -90l-256 256zM704 384c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64z
+M1411 704c0 -166 -78 -255 -146 -334c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64
+s-64 29 -64 64c0 318 258 576 576 576s576 -258 576 -576zM896 576c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1184 704c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 124 -100 224 -224 224c-123 0 -224 -100 -224 -224c0 -35 -29 -64 -64 -64
+s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352zM1578 993c13 -33 -4 -70 -37 -83c-7 -3 -15 -4 -23 -4c-25 0 -50 15 -59 41c-45 117 -123 219 -224 295c-28 21 -34 61 -13 89c22 28 62 34 90 13c120 -90 212 -212 266 -351zM1788 1074c12 -33 -4 -70 -37 -83
+c-8 -3 -15 -4 -23 -4c-26 0 -50 15 -60 41c-60 156 -163 292 -297 393c-29 21 -34 61 -13 89c21 29 61 34 89 13c154 -115 272 -271 341 -449z" />
+    <glyph glyph-name="flag-o" unicode="&#xf11d;" horiz-adv-x="1728" 
+d="M1600 491v616c-80 -43 -192 -91 -306 -91c-53 0 -102 10 -145 32c-107 53 -223 104 -362 104c-129 0 -287 -63 -403 -127v-599c132 61 300 113 433 113c154 0 254 -51 361 -104l28 -14c28 -14 62 -22 101 -22c111 0 231 59 293 92zM256 1280c0 -47 -26 -88 -64 -110
+v-1266c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14
+c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2
+c19 -12 31 -33 31 -55z" />
+    <glyph glyph-name="wikipedia-w" unicode="&#xf266;" horiz-adv-x="2304" 
+d="M1494 -103l-295 695c-117 -229 -246 -468 -357 -695c-1 -1 -54 0 -54 1c-169 395 -346 787 -515 1183c-41 96 -178 252 -272 251c0 11 -1 36 -1 51h583v-50c-69 -4 -190 -48 -156 -123c79 -179 373 -865 452 -1039c54 107 208 393 271 514c-50 102 -211 482 -262 576
+c-35 64 -130 70 -201 71v50l513 -1v-47c-70 -2 -137 -28 -106 -94c68 -144 110 -245 173 -377c20 39 125 250 173 363c32 74 -14 103 -139 106c1 13 0 37 1 49c160 1 400 1 443 2v-49c-81 -3 -165 -46 -209 -114l-213 -442c23 -58 228 -514 249 -564l441 1017
+c-31 83 -131 101 -170 102v50l460 -4l1 -2l-1 -44c-101 -3 -162 -57 -201 -145c-90 -208 -372 -864 -559 -1291h-49z" />
+    <glyph glyph-name="battery-quarter" unicode="&#xf243;" horiz-adv-x="2304" 
+d="M256 256v768h512v-768h-512zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
+c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+    <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664" 
+d="M384 0h896v256h-896v-256zM384 640h896v384h-160c-53 0 -96 43 -96 96v160h-640v-640zM1536 576c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 576v-416c0 -17 -15 -32 -32 -32h-224v-160c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v160
+h-224c-17 0 -32 15 -32 32v416c0 105 87 192 192 192h64v544c0 53 43 96 96 96h672c53 0 126 -30 164 -68l152 -152c38 -38 68 -111 68 -164v-256h64c105 0 192 -87 192 -192z" />
+    <glyph glyph-name="tipeee" unicode="&#xf301;" horiz-adv-x="2304" 
+d="M116 1259h2072c64 0 116 -52 116 -116v-1006c0 -64 -52 -116 -116 -116h-2072c-64 0 -116 52 -116 116v1006c0 64 52 116 116 116zM756 1006v0c-59 0 -90 -47 -90 -85c0 -40 37 -84 90 -84c59 0 92 38 92 84c0 38 -34 85 -92 85zM1672 966v-159l45 -211h110l45 211v159
+h-200zM534 925l-154 -49v-77h-45v-109h45v-148c3 -107 7 -176 132 -176c19 0 77 6 102 16v107c-16 -7 -42 -14 -53 -14c-33 0 -27 39 -27 67v148h80v109h-80v126zM1212 806v0c-50 0 -85 -24 -101 -36l-14 29h-192v-111h35v-368h-35v-109h250v109h-45v85c6 -5 40 -33 109 -33
+c108 0 190 82 190 215c0 119 -67 219 -197 219zM643 799v-109h35v-199h-35v-110h234v110h-40v308h-194zM1169 688v0c37 0 61 -53 61 -103c0 -64 -25 -104 -60 -104c-32 0 -60 43 -60 100c-3 66 26 107 59 107zM1764 555c-60 0 -95 -47 -95 -89c0 -43 41 -86 95 -86
+c61 0 99 39 99 86c0 48 -40 89 -99 89z" />
+    <glyph glyph-name="check-circle-o" unicode="&#xf05d;" 
+d="M1171 723l-422 -422c-25 -25 -65 -25 -90 0l-294 294c-25 25 -25 65 0 90l102 102c25 25 65 25 90 0l147 -147l275 275c25 25 65 25 90 0l102 -102c25 -25 25 -65 0 -90zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544z
+M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="level-up" unicode="&#xf148;" horiz-adv-x="1024" 
+d="M1018 933c-11 -23 -33 -37 -58 -37h-192v-864c0 -18 -14 -32 -32 -32h-704c-12 0 -24 7 -29 18c-5 12 -4 25 4 35l160 192c6 7 16 11 25 11h320v640h-192c-25 0 -47 14 -58 37c-10 22 -7 49 9 68l320 384c24 29 74 29 98 0l320 -384c16 -19 20 -46 9 -68z" />
+    <glyph glyph-name="houzz" unicode="&#xf27c;" horiz-adv-x="1024" 
+d="M512 345l512 295v-591l-512 -296v592zM0 640l512 -295l-512 -296v591zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
+    <glyph glyph-name="lemon-o" unicode="&#xf094;" horiz-adv-x="1535" 
+d="M1407 710c0 47 -9 170 -25 210c-19 48 -30 75 -30 129c0 46 10 91 10 136c0 19 -1 39 -10 55c-4 1 -9 1 -13 1c-39 0 -78 -9 -117 -9c-119 0 -232 48 -351 48c-93 0 -183 -35 -269 -69c-68 -27 -143 -59 -202 -103c-202 -153 -272 -433 -272 -674c0 -81 25 -160 25 -241
+c0 -46 -22 -88 -22 -132c0 -28 16 -51 46 -51c49 0 96 22 146 22c114 0 225 -31 339 -31c89 0 201 7 284 36c263 93 461 397 461 673zM1535 712c0 -333 -231 -684 -547 -796c-99 -35 -222 -44 -326 -44c-114 0 -226 29 -339 29c-48 0 -96 -29 -146 -29
+c-99 0 -174 89 -174 184c0 47 22 89 22 135c0 81 -25 160 -25 242c0 284 87 598 323 777c68 52 153 89 232 120c102 41 205 78 316 78c119 0 232 -48 349 -48c38 0 76 10 115 10c114 0 155 -81 155 -185c0 -45 -10 -91 -10 -136c0 -36 9 -50 21 -82c23 -58 34 -191 34 -255z
+" />
+    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664" 
+d="M896 708v-580c0 -139 -117 -256 -256 -256s-256 117 -256 256c0 35 29 64 64 64s64 -29 64 -64c0 -67 61 -128 128 -128s128 61 128 128v580c21 7 42 11 64 11s43 -4 64 -11zM1664 681c0 -17 -15 -32 -32 -32c-9 0 -16 4 -23 10c-58 54 -112 92 -195 92
+c-95 0 -177 -59 -231 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -28 -17c-14 0 -22 6 -29 17c-11 17 -20 35 -32 52c-54 75 -135 134 -230 134s-176 -59 -230 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -29 -17c-13 0 -21 6 -28 17c-11 17 -20 35 -32 52
+c-54 75 -136 134 -231 134c-83 0 -137 -38 -195 -92c-7 -6 -14 -10 -23 -10c-17 0 -32 15 -32 32c0 3 0 5 1 7c92 378 457 592 831 592c372 0 741 -214 831 -592c1 -2 1 -4 1 -7zM896 1408v-98c-21 1 -43 2 -64 2s-43 -1 -64 -2v98c0 35 29 64 64 64s64 -29 64 -64z" />
+    <glyph glyph-name="bell-o" unicode="&#xf0a2;" horiz-adv-x="1664" 
+d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM1664 128c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128
+c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441c0 -483 172 -707 320 -832z" />
+    <glyph glyph-name="shaarli" unicode="&#xf2f5;" horiz-adv-x="1651" 
+d="M878 1408c161 0 254 -160 278 -479h66c287 -44 429 -135 426 -273c24 -163 -80 -238 -312 -226c178 -156 241 -302 191 -437c-39 -108 -133 -143 -282 -107c-164 82 -281 176 -349 282h-43c-64 -188 -188 -282 -372 -282h-64c-153 47 -209 140 -166 278l80 221h-23
+c-225 32 -326 131 -305 298c6 153 160 231 462 233c84 9 119 36 105 80c0 275 103 412 308 412zM830 1182c-56 4 -83 -72 -82 -227l-5 -128c-5 -64 -25 -96 -61 -96l-360 -20c-56 -2 -85 -25 -85 -69c0 -43 31 -65 92 -68c211 11 310 -4 296 -43l-64 -137
+c-108 -163 -135 -258 -80 -287c73 -44 176 70 310 342c32 29 59 29 80 0c94 -100 171 -182 232 -246c62 -64 113 -83 151 -57c46 49 33 101 -37 157c-68 58 -146 137 -234 237c-9 33 -8 50 6 50c298 -20 441 -1 429 57c9 64 -121 96 -388 96c-41 -8 -74 2 -100 29v224
+c0 125 -30 186 -89 184c-3 1 -8 2 -11 2v0z" />
+    <glyph glyph-name="cc-diners-club" unicode="&#xf24c;" horiz-adv-x="2304" 
+d="M858 295v693c-139 -54 -238 -189 -238 -347s99 -293 238 -346zM1362 641c0 158 -99 293 -238 347v-694c139 54 238 189 238 347zM1577 641c0 -323 -262 -586 -586 -586c-323 0 -586 263 -586 586c0 324 263 586 586 586c324 0 586 -262 586 -586zM1960 634
+c0 382 -319 646 -669 646h-301c-354 0 -646 -264 -646 -646c0 -349 292 -634 646 -634h301c350 0 669 285 669 634zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="undo" unicode="&#xf0e2;" 
+d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
+c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768z" />
+    <glyph glyph-name="rebel" unicode="&#xf1d0;" horiz-adv-x="1756" 
+d="M0 662c10 286 156 550 421 724c1 0 7 2 4 -3c-21 -20 -402 -469 -51 -818c180 -179 325 -9 325 -9c139 181 -2 455 -2 455c-36 90 -165 145 -165 145l104 115c88 -38 156 -140 156 -140c3 107 -79 222 -79 222l161 183l160 -181c-74 -104 -79 -226 -79 -226
+c50 83 157 142 157 142l103 -115c-99 -32 -164 -144 -164 -144c-57 -103 -98 -323 2 -460c117 -161 317 10 317 10c371 332 -38 813 -38 813c-22 20 3 10 3 10c181 -132 414 -305 420 -740c7 -526 -361 -901 -876 -901c-503 0 -894 420 -879 918z" />
+    <glyph glyph-name="codiepie" unicode="&#xf284;" horiz-adv-x="1723" 
+d="M1584 246l-218 111c-98 -160 -272 -258 -460 -258c-298 0 -539 241 -539 538c0 298 241 539 539 539c175 0 339 -85 440 -229l215 125c-147 226 -396 361 -665 361c-438 0 -793 -355 -793 -793s355 -793 793 -793c284 0 547 152 688 399zM1030 643l693 -352
+c-152 -332 -457 -547 -827 -547c-495 0 -896 401 -896 896s401 896 896 896c352 0 642 -194 806 -500zM1543 640h-39v-160h-96v352h136c111 0 121 -192 -1 -192z" />
+    <glyph glyph-name="soundcloud" unicode="&#xf1be;" horiz-adv-x="2304" 
+d="M784 164c-1 -13 -11 -23 -24 -23c-12 0 -22 10 -23 23l-14 241l14 523c0 13 11 24 23 24c13 0 23 -11 24 -24l16 -523zM1080 193l-1 -24c0 -8 -3 -15 -9 -20c-5 -5 -12 -9 -20 -9c-9 0 -17 4 -23 11c-4 5 -6 11 -6 17v1c-11 235 -11 236 -11 236l10 579l1 6
+c0 10 5 19 13 24c5 3 10 5 16 5s11 -2 16 -5c8 -5 13 -14 13 -24l12 -586zM35 533l20 -128l-20 -126c-1 -5 -4 -9 -9 -9s-8 4 -9 9l-17 126l17 128c1 5 4 9 9 9s8 -4 9 -9zM121 612l26 -207l-26 -203c-1 -5 -5 -9 -10 -9s-9 4 -9 10l-23 202l23 207c0 5 4 9 9 9s9 -4 10 -9z
+M401 159zM213 650l25 -245l-25 -237c0 -6 -5 -11 -11 -11s-11 5 -12 11l-21 237l21 245c1 7 6 12 12 12s11 -5 11 -12zM307 657l23 -252l-23 -244c-1 -8 -7 -13 -14 -13s-13 5 -13 13l-21 244l21 252c0 8 6 13 13 13s13 -5 14 -13zM401 639l21 -234l-21 -246
+c-1 -9 -8 -16 -16 -16s-15 7 -15 16l-20 246l20 234c0 8 7 15 15 15s15 -7 16 -15zM784 164zM495 785l21 -380l-21 -246c0 -10 -8 -18 -17 -18c-10 0 -17 8 -18 18l-18 246l18 380c1 10 8 18 18 18c9 0 17 -8 17 -18zM589 871l19 -468l-19 -244c0 -11 -9 -19 -19 -19
+c-11 0 -19 8 -20 19l-16 244l16 468c1 11 9 19 20 19c10 0 19 -8 19 -19zM687 911l18 -506l-18 -242c-1 -12 -10 -21 -22 -21c-11 0 -20 9 -21 21l-16 242l16 506c0 12 10 22 21 22c12 0 21 -10 22 -22zM1079 169zM881 915l15 -510l-15 -239c0 -14 -11 -25 -25 -25
+s-24 11 -25 25l-14 239l14 510c0 14 11 25 25 25s25 -11 25 -25zM980 896l14 -492l-14 -236c0 -15 -12 -27 -27 -27s-27 12 -28 27l-12 236l12 492c1 16 13 28 28 28s26 -12 27 -28zM1192 404l-14 -231c0 -17 -14 -31 -31 -31s-31 14 -32 31l-6 114l-6 117l12 636v3
+c1 9 5 18 12 24c5 4 12 7 20 7c5 0 11 -2 15 -5c9 -5 15 -15 16 -26zM2304 423c0 -156 -127 -282 -283 -282h-786c-17 2 -31 15 -31 33v899c0 17 6 25 28 33c55 22 117 34 181 34c261 0 475 -200 498 -455c34 14 71 22 110 22c156 0 283 -127 283 -284z" />
+    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152" 
+d="M1152 832v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-288 32 -512 276 -512 572v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -247 201 -448 448 -448s448 201 448 448v128
+c0 35 29 64 64 64s64 -29 64 -64zM896 1216v-512c0 -176 -144 -320 -320 -320s-320 144 -320 320v512c0 176 144 320 320 320s320 -144 320 -320z" />
+    <glyph glyph-name="laravel" unicode="&#xf30b;" horiz-adv-x="1870" 
+d="M1863 682v0c13 -14 10 -25 -13 -31c-20 -6 -203 -54 -255 -68c76 -101 219 -294 231 -312c17 -25 2 -32 -23 -42s-571 -207 -608 -218c-48 -14 -69 -21 -100 22c-23 33 -149 259 -211 371c-117 -30 -330 -86 -392 -101c-60 -14 -86 22 -96 44s-365 786 -387 839
+c-23 53 2 62 24 64s335 28 376 30s44 -8 62 -34l450 -753l566 136c-31 44 -173 246 -187 265c-15 22 0 32 25 36s242 41 261 44s33 9 63 -27s201 -251 214 -265zM834 472c7 1 10 5 3 18s-422 729 -422 729c-4 7 -3 9 -13 9s-305 -27 -310 -27s-5 -8 0 -18s380 -783 382 -789
+s2 -8 19 -4s334 81 341 82zM1728 304c-5 8 -178 244 -187 258s-13 10 -27 6l-552 -143s169 -293 182 -312s21 -17 31 -13s531 179 547 185s11 11 6 19zM1763 696c13 3 22 7 16 14s-149 189 -159 203s-18 12 -27 10c-8 -2 -196 -36 -208 -38s-8 -8 -3 -15l166 -227
+s202 50 215 53z" />
+    <glyph glyph-name="indent" unicode="&#xf03c;" horiz-adv-x="1792" 
+d="M352 704c0 -8 -3 -17 -9 -23l-288 -288c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v576c0 17 15 32 32 32c8 0 17 -3 23 -9l288 -288c6 -6 9 -15 9 -23zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z
+M1792 608v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32
+h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
+    <glyph glyph-name="address-card-o" unicode="&#xf2bc;" horiz-adv-x="2048" 
+d="M1024 405c0 -87 -57 -149 -128 -149h-512c-71 0 -128 62 -128 149c0 155 38 327 196 327c49 -28 115 -76 188 -76s139 48 188 76c158 0 196 -172 196 -327zM867 925c0 -126 -102 -227 -227 -227s-227 101 -227 227c0 125 102 227 227 227s227 -102 227 -227zM1792 480
+v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1792 732v-56c0 -20 -16 -36 -36 -36h-568c-20 0 -36 16 -36 36v56c0 20 16 36 36 36h568c20 0 36 -16 36 -36zM1792 992v-64c0 -18 -14 -32 -32 -32h-576
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1920 32v1216c0 17 -15 32 -32 32h-1728c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h352v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h768v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h352
+c17 0 32 15 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="language" unicode="&#xf1ab;" 
+d="M654 458c-2 -7 -51 16 -64 21c-13 6 -72 39 -87 49s-72 57 -79 60c-36 -55 -82 -120 -134 -181c-18 -21 -72 -89 -105 -110c-5 -3 -34 -6 -38 -4c16 12 62 69 82 92c25 29 144 195 164 233c21 38 84 164 87 176c-10 1 -89 -26 -110 -33c-20 -6 -75 -19 -79 -22
+c-4 -4 -1 -16 -3 -20s-20 -13 -31 -15c-10 -3 -33 -4 -47 0c-13 3 -25 16 -28 21c0 0 -4 6 -5 23c12 4 32 5 54 11s76 22 105 32s85 31 102 35c18 3 63 33 87 41s41 18 42 13s0 -27 -1 -33c-1 -5 -49 -99 -56 -114c-4 -8 -32 -61 -77 -131c16 -7 50 -21 64 -28
+c17 -8 136 -58 142 -60s17 -48 15 -56zM449 944c3 -17 -2 -24 -4 -28c-10 -19 -35 -32 -50 -38s-40 -12 -60 -12c-9 1 -27 4 -49 26c-12 13 -21 48 -17 44s33 -8 46 -5s44 12 58 16c15 5 45 13 55 14c10 0 18 -4 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032
+l-694 -233v-1031zM1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66c-81 -52 -181 -92 -276 -108c-29 -6 -62 -12 -91 -12h-84c-106 0 -299 63 -383 124c-6 5 -8 9 -8 16c0 11 8 19 18 19
+c9 0 56 -29 69 -35c90 -45 216 -86 317 -86c125 0 210 16 324 65c33 15 62 34 93 51zM1536 1050v-1079c-773 246 -774 246 -774 246c-16 -7 -733 -249 -743 -249c-8 0 -15 5 -18 13c0 1 -1 2 -1 3v1078c1 3 2 8 4 10c6 7 14 9 20 11c3 1 64 21 149 50v384l558 -198
+c7 2 629 217 638 217c11 0 20 -8 20 -21v-418z" />
+    <glyph glyph-name="circle-thin" unicode="&#xf1db;" 
+d="M768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="drupal" unicode="&#xf1a9;" 
+d="M1167 -50c-2 7 -8 17 -24 5c-34 -25 -110 -56 -218 -56s-159 23 -193 49c-5 4 -3 4 -13 4c-11 0 -17 -5 -26 -12c-8 -7 -12 -24 0 -36c74 -68 198 -62 289 -54c92 9 170 63 178 71c12 12 9 22 7 29zM1128 65c-7 17 -19 47 -39 61c-20 13 -49 15 -76 15s-42 2 -71 -10
+s-59 -39 -78 -56s-22 -30 -12 -44c10 -13 21 -5 49 19c29 23 48 44 107 44s69 -22 81 -44s13 -25 25 -19c14 7 21 17 14 34zM1483 346c0 52 -23 140 -108 140c-80 0 -242 -166 -327 -167c-99 -2 -236 196 -434 194c-156 -1 -279 -125 -281 -257c-1 -74 23 -129 74 -164
+c34 -23 65 -37 166 -37c168 0 381 208 479 205c78 -3 199 -194 260 -198c48 -4 73 18 114 77c40 60 57 154 57 207zM1536 506c0 -448 -354 -744 -761 -744c-408 0 -775 321 -775 758c0 436 340 638 403 671c75 40 129 61 214 129c42 33 77 81 88 198
+c61 -73 134 -158 186 -193c85 -56 170 -78 259 -134c54 -33 386 -236 386 -685z" />
+    <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664" 
+d="M1664 650c0 -109 -20 -215 -60 -314l-20 -49l-185 -33c-29 -109 -128 -190 -247 -190v-32c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-32c96 0 179 -53 223 -131l68 12c19 62 29 126 29 193c0 302 -299 566 -640 566
+s-640 -264 -640 -566c0 -67 10 -131 29 -193l68 -12c44 78 127 131 223 131v32c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v32c-119 0 -218 81 -247 190l-185 33l-20 49c-40 99 -60 205 -60 314c0 411 381 758 832 758
+s832 -347 832 -758z" />
+    <glyph glyph-name="cc-mastercard" unicode="&#xf1f1;" horiz-adv-x="2304" 
+d="M1119 1195c-83 55 -181 85 -281 85c-281 0 -509 -228 -509 -508c0 -281 228 -509 509 -509c100 0 198 30 281 85c-268 218 -266 629 0 847zM1152 1171c-258 -203 -259 -597 0 -799c259 202 258 596 0 799zM1185 1195c265 -218 269 -630 0 -847c83 -55 182 -85 281 -85
+c281 0 509 228 509 509c0 280 -228 508 -509 508c-100 0 -198 -30 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17zM1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-5v3h5v-1zM1947 7h3l-4 5c2 0 2 1 3 1c1 1 1 2 1 3s0 2 -1 3c-1 0 -2 1 -4 1h-6
+v-13h3v5h1zM685 75c0 24 15 43 41 43c24 0 40 -19 40 -43c0 -25 -16 -43 -40 -43c-26 0 -41 19 -41 43zM1158 119c19 0 32 -11 35 -32h-70c3 19 15 32 35 32zM1514 75c0 24 15 43 40 43s41 -19 41 -43c0 -25 -16 -43 -41 -43s-40 19 -40 43zM1786 75c0 24 16 43 41 43
+c24 0 41 -19 41 -43c0 -25 -17 -43 -41 -43c-25 0 -41 19 -41 43zM1944 3c-1 0 -2 0 -4 1c-1 0 -2 1 -3 2s-2 2 -2 3c-1 2 -1 3 -1 4c0 2 0 3 1 4c0 2 1 3 2 4s2 1 3 2c2 1 3 1 4 1c2 0 3 0 4 -1c2 -1 3 -1 4 -2s1 -2 2 -4c0 -1 1 -2 1 -4c0 -1 -1 -2 -1 -4
+c-1 -1 -1 -2 -2 -3s-2 -2 -4 -2c-1 -1 -2 -1 -4 -1zM599 7h30v85c0 32 -21 53 -54 54c-17 0 -35 -5 -47 -24c-9 15 -24 24 -45 24c-14 0 -28 -5 -39 -20v16h-30v-135h30v75c0 24 13 36 33 36s30 -13 30 -36v-75h29v75c0 24 14 36 33 36c20 0 30 -13 30 -36v-75zM765 7h29
+v135h-29v-16c-10 12 -24 20 -43 20c-38 0 -67 -30 -67 -71s29 -71 67 -71c19 0 33 7 43 20v-17zM943 48c0 24 -18 36 -47 40l-14 2c-13 2 -23 5 -23 14s9 15 25 15c18 0 34 -6 43 -11l12 24c-14 9 -33 14 -55 14c-34 0 -56 -17 -56 -44c0 -22 16 -35 47 -39l13 -2
+c17 -3 24 -7 24 -14c0 -11 -11 -17 -31 -17s-35 7 -45 14l-13 -23c16 -11 36 -17 58 -17c39 0 62 18 62 44zM1073 14l-8 25c-9 -5 -18 -7 -26 -7c-15 0 -19 9 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61c0 -31 12 -50 47 -50c12 0 27 4 36 10zM1159 146
+c-39 0 -67 -29 -67 -71c0 -43 29 -71 69 -71c20 0 39 5 55 19l-14 22c-11 -9 -26 -15 -39 -15c-19 0 -36 9 -41 33h101v12c0 42 -26 71 -64 71zM1318 146c-17 0 -28 -8 -35 -20v16h-30v-135h30v76c0 22 9 35 29 35c6 0 12 -1 18 -4l9 28c-7 3 -15 4 -21 4zM1348 75
+c0 -41 28 -71 72 -71c20 0 34 4 48 16l-14 24c-11 -8 -22 -13 -35 -12c-24 0 -41 17 -41 43s17 43 41 43c13 0 24 -4 35 -12l14 24c-14 11 -28 16 -48 16c-44 0 -72 -30 -72 -71zM1593 7h30v135h-30v-16c-9 12 -23 20 -42 20c-38 0 -68 -30 -68 -71s30 -71 68 -71
+c19 0 33 7 42 20v-17zM1726 146c-17 0 -28 -8 -35 -20v16h-29v-135h29v76c0 22 10 35 29 35c6 0 12 -1 18 -4l9 28c-6 3 -15 4 -21 4zM1866 7h29v190h-29v-71c-9 12 -23 20 -43 20c-37 0 -67 -30 -67 -71s30 -71 67 -71c20 0 34 7 43 20v-17zM1944 27c-1 0 -3 -1 -5 -1
+c-2 -1 -3 -2 -4 -3c-2 -1 -3 -3 -3 -4c-1 -2 -1 -4 -1 -6c0 -1 0 -3 1 -5c0 -1 1 -3 3 -4c1 -1 2 -2 4 -3s4 -1 5 -1c2 0 4 0 6 1c1 1 3 2 4 3s2 3 3 4c1 2 1 4 1 5c0 2 0 4 -1 6c-1 1 -2 3 -3 4s-3 2 -4 3c-2 0 -4 1 -6 1zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048
+c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="times" unicode="&#xf00d;" horiz-adv-x="1188" 
+d="M1188 214c0 -25 -10 -50 -28 -68l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-294 294l-294 -294c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136c-18 18 -28 43 -28 68s10 50 28 68l294 294l-294 294c-18 18 -28 43 -28 68s10 50 28 68l136 136
+c18 18 43 28 68 28s50 -10 68 -28l294 -294l294 294c18 18 43 28 68 28s50 -10 68 -28l136 -136c18 -18 28 -43 28 -68s-10 -50 -28 -68l-294 -294l294 -294c18 -18 28 -43 28 -68z" />
+    <glyph glyph-name="buysellads" unicode="&#xf20d;" 
+d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960c0 -158 -130 -288 -288 -288h-960c-158 0 -288 130 -288 288v960c0 158 130 288 288 288h960c158 0 288 -130 288 -288z" />
+    <glyph glyph-name="diaspora" unicode="&#xf2e5;" horiz-adv-x="1581" 
+d="M1005 -16c-42 59 -111 155 -153 214c-41 57 -75 102 -77 102s-66 -87 -152 -205c-82 -113 -150 -205 -151 -205c-2 0 -296 207 -297 209c0 1 65 99 147 217s149 217 149 219c0 4 -27 14 -234 83c-129 43 -235 78 -237 79s10 41 52 174c30 95 56 174 57 175
+s112 -35 248 -80s249 -81 250 -81s2 2 3 5s2 118 3 257s2 254 3 255c1 2 40 2 180 2c98 0 179 0 180 -1c2 -1 4 -78 8 -249c7 -281 9 -285 13 -285c2 0 109 36 239 80s236 79 237 78c3 -3 109 -350 108 -351s-109 -37 -241 -82c-181 -61 -240 -82 -240 -85
+c0 -2 62 -95 141 -211c78 -114 141 -208 141 -209c-1 -2 -293 -217 -295 -217c-1 0 -38 50 -82 112z" />
+    <glyph glyph-name="att" unicode="&#xf31e;" 
+d="M768 1407v0c144 0 278 -39 393 -108c31 -19 46 -30 46 -48c0 -73 -206 -150 -472 -150c-268 0 -419 70 -419 135c0 22 19 39 54 60c116 71 253 111 398 111zM273 1226v0c1 0 0 -1 -1 -2c-22 -27 -31 -53 -31 -79c0 -72 57 -185 362 -185c416 0 677 151 677 236
+c0 7 -2 13 -5 18c-1 1 0 2 1 1c25 -23 48 -46 73 -74c38 -43 53 -66 53 -104c0 -107 -166 -228 -539 -228c-350 0 -725 108 -725 257c0 10 10 28 25 47c32 41 68 78 108 112c1 0 2 1 2 1zM1456 979v0s1 0 1 -1c18 -36 40 -89 51 -133c10 -40 10 -69 2 -97
+c-43 -152 -307 -235 -646 -235c-556 0 -794 160 -841 260c-6 12 -7 20 -4 37c7 39 32 114 55 159c1 1 1 1 1 0c-4 -15 -6 -30 -6 -45c0 -153 253 -274 557 -274c281 0 837 129 830 328v1zM1534 683v0s1 -1 1 -2c1 -13 1 -25 1 -41c0 -67 -9 -146 -28 -190
+c-26 -61 -154 -248 -714 -248c-411 0 -649 139 -744 238c-21 22 -36 49 -39 67c-7 36 -11 91 -11 133c0 2 2 2 2 0c34 -125 219 -308 612 -308c413 0 891 200 919 350c0 1 1 1 1 1zM1482 360v0c1 0 1 -1 1 -2c-13 -33 -30 -67 -47 -96c-29 -50 -61 -86 -95 -114
+c-124 -102 -332 -154 -521 -154c-359 0 -649 111 -745 315c-1 2 0 2 1 1c103 -149 366 -227 610 -227c345 0 679 106 795 276c0 1 1 1 1 1zM1274 64v0c1 0 1 -1 0 -2c-135 -118 -312 -190 -506 -190c-177 0 -341 60 -471 161c-1 1 -1 3 1 2c84 -47 234 -100 470 -100
+c272 0 444 89 505 129h1z" />
+    <glyph glyph-name="sort-asc" unicode="&#xf0de;" horiz-adv-x="1024" 
+d="M1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="1879" 
+d="M1879 584c0 -24 -15 -48 -31 -66l-336 -396c-58 -68 -176 -122 -264 -122h-1088c-36 0 -87 11 -87 56c0 24 15 48 31 66l336 396c58 68 176 122 264 122h1088c36 0 87 -11 87 -56zM1536 928v-160h-832c-125 0 -280 -71 -361 -167l-337 -396l-5 -6c0 8 -1 17 -1 25v960
+c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="heartbeat" unicode="&#xf21e;" horiz-adv-x="1792" 
+d="M1280 512h305c-12 -13 -20 -20 -22 -22l-623 -600c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-2 1 -10 8 -21 20h369c29 0 55 20 62 48l70 281l190 -667c8 -27 33 -46 62 -46c28 0 53 19 61 46l146 485l56 -112c11 -21 33 -35 57 -35zM1792 940
+c0 -115 -50 -220 -103 -300h-369l-111 221c-11 23 -37 37 -62 35c-27 -3 -49 -20 -56 -46l-129 -430l-196 686c-8 27 -33 46 -63 46c-29 0 -54 -20 -61 -48l-116 -464h-423c-53 80 -103 185 -103 300c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216
+c299 0 478 -175 478 -468z" />
+    <glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="1330" 
+d="M327 1225c-86 0 -156 70 -156 156c0 85 70 155 156 155s155 -70 155 -155c0 -86 -69 -156 -155 -156zM878 583c0 -108 -115 -84 -141 -40l-367 438c-16 26 -28 14 -28 14s-7 -8 4 -21l122 -139l1 -354c-86 -250 -161 -457 -161 -457c-47 -134 -86 -250 -120 -266
+c-41 -21 -71 -16 -103 -1c-42 19 -54 70 -51 100c0 0 2 16 197 618l5 416l-85 -164l35 -222c13 -84 -58 -95 -58 -95c-68 -11 -82 68 -82 70l-46 299c210 379 211 381 211 381c16 24 52 34 113 34c54 0 88 -16 107 -40l424 -521c6 -4 10 -10 14 -17l3 -3l-1 -1
+c5 -9 7 -19 7 -29zM475 433c96 -255 182 -448 182 -448c29 -74 79 -180 6 -222c-72 -42 -130 7 -146 41h-1c-3 8 -6 16 -8 25l-124 351zM1299 -159c21 -33 39 -57 28 -64c-19 -12 -25 23 -46 57c0 0 -113 171 -423 661c6 -2 17 7 17 7s11 9 11 17
+c308 -503 413 -678 413 -678z" />
+    <glyph glyph-name="arrows-v" unicode="&#xf07d;" horiz-adv-x="640" 
+d="M640 1216c0 -35 -29 -64 -64 -64h-128v-1024h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v1024h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256
+c12 12 28 19 45 19s33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="phone-square" unicode="&#xf098;" 
+d="M1280 343c0 5 0 11 -2 16c-6 18 -152 92 -180 108c-19 11 -42 33 -65 33c-44 0 -109 -131 -148 -131c-20 0 -45 18 -63 28c-132 74 -223 165 -297 297c-10 18 -28 43 -28 63c0 39 131 104 131 148c0 23 -22 46 -33 65c-16 28 -90 174 -108 180c-5 2 -11 2 -16 2
+c-26 0 -77 -12 -101 -22c-66 -30 -114 -156 -114 -225c0 -67 27 -128 50 -190c80 -219 318 -457 537 -537c62 -23 123 -50 190 -50c69 0 195 48 225 114c10 24 22 75 22 101zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="text-height" unicode="&#xf034;" horiz-adv-x="1789" 
+d="M1744 128c44 0 58 -28 31 -63l-126 -162c-27 -35 -71 -35 -98 0l-126 162c-27 35 -13 63 31 63h80v1024h-80c-44 0 -58 28 -31 63l126 162c27 35 71 35 98 0l126 -162c27 -35 13 -63 -31 -63h-80v-1024h80zM81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4
+c72 0 143 -1 215 -1h293c40 0 63 -9 90 29l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -35 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -31 155 -33 157c-21 26 -44 21 -75 21c-91 0 -186 4 -276 -7c-5 -44 -9 -91 -8 -136c1 -281 4 -562 4 -843
+c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9c38 61 175 62 238 99c22 49 19 320 19 383c0 202 -6 404 -6 606v117c0 18 4 90 -8 104
+c-14 15 -145 12 -162 12c-37 0 -144 -17 -173 -38c-48 -33 -48 -233 -108 -237c-18 11 -43 27 -56 44v383z" />
+    <glyph glyph-name="linkedin-square" unicode="&#xf08c;" 
+d="M237 122h231v694h-231v-694zM483 1030c-1 68 -50 120 -129 120s-131 -52 -131 -120c0 -66 50 -120 128 -120h1c81 0 131 54 131 120zM1068 122h231v398c0 213 -114 312 -266 312c-124 0 -179 -69 -209 -117h2v101h-231s3 -65 0 -694h231v388c0 20 1 41 7 56
+c17 41 55 84 119 84c83 0 116 -63 116 -157v-371zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="delicious" unicode="&#xf1a5;" 
+d="M1472 160v480h-704v704h-480c-124 0 -224 -100 -224 -224v-480h704v-704h480c124 0 224 100 224 224zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="qrcode" unicode="&#xf029;" 
+d="M0 1408h768v-704h-128v576h-512v-512h640v-128h-768v768zM0 -128v640h640v-640h-576v128h448v384h-384v-512h-128zM896 768v640h640v-640h-576v128h448v384h-384v-512h-128zM256 1152h256v-256h-256v256zM1152 1152h128v-128h-128v128zM256 256h128v-128h-128v128z
+M768 512h128v-128h-128v128zM1152 384h128v-128h-128v128zM1152 128h128v-128h-128v128zM1024 640h384v-256h-128v128h-256v128zM1536 256v-384h-256v128h128v256h128zM1024 384v-256h-256v128h128v128h128zM768 0h384v-128h-384v128z" />
+    <glyph glyph-name="arrows-h" unicode="&#xf07e;" horiz-adv-x="1792" 
+d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-1024v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h1024v128
+c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="mercury" unicode="&#xf223;" horiz-adv-x="1152" 
+d="M830 1220c190 -94 322 -290 322 -516c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572
+c0 226 132 422 322 516c-105 61 -187 157 -228 273c-8 21 8 43 30 43h69c13 0 24 -8 29 -20c58 -139 195 -236 354 -236s296 97 354 236c5 12 16 20 37 20h61c22 0 38 -22 30 -43c-41 -116 -123 -212 -228 -273zM576 256c247 0 448 201 448 448s-201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="text-width" unicode="&#xf035;" 
+d="M81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4c265 0 533 6 798 -3c22 -1 43 13 56 31l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -36 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -32 155 -33 157c-7 9 -16 15 -27 19
+c-8 3 -56 2 -66 2c-123 0 -265 7 -386 -7c-5 -44 -9 -91 -8 -136l1 -152v52c1 -163 3 -325 3 -487c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9
+c38 61 175 62 238 99c25 56 18 529 18 617c0 14 -5 29 -5 44c0 41 7 276 -8 293c-14 15 -145 12 -162 12c-42 0 -277 -22 -301 -38c-47 -31 -48 -232 -108 -237c-18 11 -43 27 -56 44v383zM1310 125c35 0 168 -119 195 -140c15 -12 26 -29 26 -49s-11 -37 -26 -49
+c-27 -21 -160 -140 -195 -140c-46 0 -30 107 -30 125h-1024c0 -18 16 -125 -30 -125c-35 0 -168 119 -195 140c-15 12 -26 29 -26 49s11 37 26 49c27 21 160 140 195 140c46 0 30 -107 30 -125h1024c0 18 -16 125 30 125z" />
+    <glyph glyph-name="envelope-o" unicode="&#xf003;" horiz-adv-x="1792" 
+d="M1664 32v768c-21 -24 -44 -46 -69 -66c-143 -110 -287 -222 -426 -338c-75 -63 -168 -140 -272 -140h-2c-104 0 -197 77 -272 140c-139 116 -283 228 -426 338c-25 20 -48 42 -69 66v-768c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1664 1083c0 25 6 69 -32 69h-1472
+c-17 0 -32 -15 -32 -32c0 -114 57 -213 147 -284c134 -105 268 -211 401 -317c53 -43 149 -135 219 -135h2c70 0 166 92 219 135c133 106 267 212 401 317c65 51 147 162 147 247zM1792 1120v-1088c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088
+c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="rss-square" unicode="&#xf143;" 
+d="M512 256c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM863 162c-17 310 -263 556 -573 573c-9 1 -18 -3 -24 -9s-10 -14 -10 -23v-128c0 -17 13 -31 30 -32c205 -15 370 -180 385 -385c1 -17 15 -30 32 -30h128c9 0 17 4 23 10
+s10 15 9 24zM1247 161c-17 520 -438 941 -958 958c-10 1 -17 -2 -23 -9c-6 -6 -10 -14 -10 -23v-128c0 -17 14 -31 31 -32c415 -15 753 -353 768 -768c1 -17 15 -31 32 -31h128c9 0 17 4 23 10c7 6 10 14 9 23zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280" 
+d="M1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
+    <glyph glyph-name="behance" unicode="&#xf1b4;" horiz-adv-x="2048" 
+d="M1848 1197v-124h-511v124h511zM1596 771c-120 0 -200 -75 -208 -195h408c-11 121 -74 195 -200 195zM1612 186c76 0 174 41 198 119h221c-68 -209 -209 -307 -427 -307c-288 0 -467 195 -467 479c0 274 189 483 467 483c286 0 444 -225 444 -495c0 -16 -1 -32 -2 -47
+h-658c0 -146 77 -232 224 -232zM277 236h296c113 0 205 40 205 167c0 129 -77 180 -199 180h-302v-347zM277 773h281c99 0 169 43 169 150c0 116 -90 144 -190 144h-260v-294zM0 1282h594c216 0 403 -61 403 -312c0 -127 -59 -209 -172 -263c155 -44 230 -161 230 -319
+c0 -256 -215 -366 -444 -366h-611v1260z" />
+    <glyph glyph-name="wpbeginner" unicode="&#xf297;" horiz-adv-x="1792" 
+d="M384 704h160v224h-160v-224zM1221 372v92c-86 -30 -157 -37 -243 -38c-193 -1 -364 79 -480 169l1 -96c109 -99 276 -177 484 -176c87 0 169 18 238 49zM640 704h640v224h-640v-224zM1792 736c0 -127 -36 -247 -99 -352c56 -64 89 -143 89 -229
+c0 -209 -198 -379 -443 -379c-166 0 -310 78 -386 193c-19 -1 -38 -1 -57 -1s-38 0 -57 1c-76 -115 -220 -193 -386 -193c-245 0 -443 170 -443 379c0 86 33 165 89 229c-63 105 -99 225 -99 352c0 424 401 768 896 768s896 -344 896 -768z" />
+    <glyph glyph-name="star-half-o" unicode="&#xf123;" horiz-adv-x="1664" 
+d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500c7 -44 -9 -70 -40 -70c-11 0 -25 4 -40 12l-449 236l-449 -236c-15 -8 -29 -12 -40 -12c-31 0 -47 26 -40 70l86 500l-364 354c-43 43 -29 85 31 94
+l502 73l225 455c13 27 31 41 49 41s35 -14 49 -41l225 -455l502 -73c60 -9 74 -51 30 -94z" />
+    <glyph glyph-name="keyboard-o" unicode="&#xf11c;" horiz-adv-x="1920" 
+d="M384 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM512 624v-96c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h224c9 0 16 -7 16 -16zM384 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96
+c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 368v-96c0 -9 -7 -16 -16 -16h-864c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h864c9 0 16 -7 16 -16zM768 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM640 880v-96
+c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1024 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM896 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96
+c9 0 16 -7 16 -16zM1280 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1152 880v-96c0 -9 -7 -16 -16 -16h-96
+c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 880v-352c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h112v240c0 9 7 16 16 16h96
+c9 0 16 -7 16 -16zM1792 128v896h-1664v-896h1664zM1920 1024v-896c0 -71 -57 -128 -128 -128h-1664c-71 0 -128 57 -128 128v896c0 71 57 128 128 128h1664c71 0 128 -57 128 -128z" />
+    <glyph glyph-name="minus-circle" unicode="&#xf056;" 
+d="M1216 576v128c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="hand-o-down" unicode="&#xf0a7;" 
+d="M1408 576c0 199 -128 369 -128 544v32h-640v-32c0 -106 -90 -177 -163 -241c-46 -41 -92 -79 -145 -112c-22 -14 -45 -26 -68 -38s-136 -62 -136 -89c0 -85 32 -160 128 -160c128 0 193 96 256 96v-576c0 -67 60 -128 128 -128c69 0 128 59 128 128v331
+c26 -20 70 -35 103 -35c47 0 87 19 119 53c21 -12 45 -18 69 -18c46 0 103 23 126 65c18 -3 37 -4 56 -4c118 0 167 73 167 184zM1280 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 580c0 -184 -104 -318 -295 -317l-5 1
+c-50 -40 -114 -61 -178 -61c-14 0 -29 1 -43 3c-34 -19 -80 -33 -119 -37v-169c0 -140 -117 -256 -257 -256c-138 0 -255 118 -255 256v374c-39 -16 -86 -22 -128 -22c-168 0 -256 129 -256 288c0 134 171 177 264 235c47 30 88 64 129 100c33 29 119 97 119 145v288
+c0 71 57 128 128 128h640c71 0 128 -57 128 -128v-288c0 -63 37 -162 59 -223c37 -102 69 -207 69 -317z" />
+    <glyph glyph-name="sort-numeric-asc" unicode="&#xf162;" horiz-adv-x="1454" 
+d="M1314 223c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1454 165c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244
+c0 138 106 251 253 251c159 0 287 -130 287 -347zM1424 882v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
+    <glyph glyph-name="share-alt" unicode="&#xf1e0;" 
+d="M1216 512c177 0 320 -143 320 -320s-143 -320 -320 -320s-320 143 -320 320c0 11 1 23 2 34l-360 180c-57 -53 -134 -86 -218 -86c-177 0 -320 143 -320 320s143 320 320 320c84 0 161 -33 218 -86l360 180c-1 11 -2 23 -2 34c0 177 143 320 320 320s320 -143 320 -320
+s-143 -320 -320 -320c-84 0 -161 33 -218 86l-360 -180c1 -11 2 -23 2 -34s-1 -23 -2 -34l360 -180c57 53 134 86 218 86z" />
+    <glyph glyph-name="shirtsinbulk" unicode="&#xf214;" 
+d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
+l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
+v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
+M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
+v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265c-172 0 -313 140 -313 313c0 172 141 313 313 313c173 0 313 -141 313 -313c0 -173 -140 -313 -313 -313zM595 646c0 -152 266 -41 266 -130c0 -45 -82 -49 -112 -49c-42 0 -102 9 -123 51h-3l-31 -63
+c51 -32 100 -42 162 -42c67 0 175 20 175 107c0 165 -269 56 -269 130c0 45 71 51 102 51c37 0 100 -11 122 -45h3l30 58c-52 21 -94 41 -152 41c-69 0 -170 -22 -170 -109z" />
+    <glyph glyph-name="viacoin" unicode="&#xf237;" 
+d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
+    <glyph glyph-name="dogmazic" unicode="&#xf303;" 
+d="M768 1404c423 0 768 -343 768 -766s-345 -766 -768 -766s-768 343 -768 766s345 766 768 766zM768 1302c-368 0 -666 -297 -666 -664s298 -664 666 -664s666 297 666 664s-298 664 -666 664zM768 1223c668 3 845 -918 212 -1148c-52 -19 -148 -29 -165 -17
+c-9 6 6 111 30 214c20 88 28 84 -78 37c-49 -22 -92 -40 -96 -41c-5 -1 -23 23 -60 78c-32 48 -54 78 -55 74s-21 -73 -44 -154c-50 -177 -38 -165 -111 -110c-452 340 -218 1052 351 1067h16zM803 1137c-251 0 -505 -261 -415 -458c14 -31 19 -30 9 1
+c-66 214 206 464 458 420c281 -49 436 -423 255 -613c-49 -51 -21 -53 31 -2c184 181 17 586 -267 645c-23 5 -47 7 -71 7zM435 998c-2 0 -6 0 -10 -1c-132 -18 -189 -193 -96 -296c27 -30 30 -29 22 5c-18 75 7 167 69 258c19 28 24 34 15 34zM805 958
+c-12 0 -35 -27 -35 -44c0 -20 -7 -22 -25 -6c-42 37 -123 53 -167 34c-14 -6 -14 -5 6 -8c61 -8 101 -75 69 -117c-27 -36 -40 -72 -44 -123c-4 -61 -30 -81 -51 -39c-27 54 10 135 62 135c11 0 0 8 -15 11c-89 17 -142 -140 -56 -167c14 -4 6 -11 -14 -11
+c-24 0 -48 11 -69 31c-23 22 -10 -6 24 -53c12 -16 57 -84 101 -150c94 -139 89 -132 95 -129c3 1 61 28 131 60s144 64 166 72c40 15 83 37 79 41c-1 1 -6 0 -11 -3c-24 -13 -80 -2 -98 18c-9 10 -9 9 15 9c97 0 121 145 28 173c-16 5 -18 7 -20 26c-1 11 -4 26 -5 33
+c-5 33 78 59 121 37c19 -10 15 0 -9 21c-37 33 -64 43 -119 43c-70 0 -77 6 -56 49c9 19 10 23 4 24c-10 2 -23 -11 -30 -29c-5 -15 -13 -20 -19 -11c-2 3 1 12 6 20c11 17 12 30 3 30c-8 0 -17 -11 -27 -30c-4 -8 -10 -15 -12 -15c-6 0 -4 18 3 31c4 6 6 16 6 20
+c0 16 -22 -2 -32 -25c-5 -12 -13 -22 -16 -22c-9 0 -7 12 6 37c6 13 10 24 9 25s-2 2 -4 2zM1242 756c-5 0 -5 -16 -5 -59c0 -100 -23 -174 -72 -226c-26 -27 -19 -29 32 -6c106 48 136 192 58 280c-6 7 -10 11 -13 11zM982 689c3 0 6 -3 10 -8c39 -45 25 -117 -28 -144
+c-24 -12 -28 -11 -37 8c-8 16 -8 16 3 28c16 17 34 55 40 86c4 21 8 30 12 30zM680 537c10 0 20 -8 21 -22c2 -25 -16 -39 -36 -27v0c-11 6 -11 32 1 43c4 4 9 6 14 6zM778 509c10 0 19 -11 19 -28c0 -22 -23 -33 -38 -18c-10 10 -9 27 2 38c6 6 12 8 17 8z" />
+    <glyph glyph-name="digg" unicode="&#xf1a6;" horiz-adv-x="2048" 
+d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968h205v-697h-205v697zM614 1254h205v-204h-205v204zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
+v-369h123z" />
+    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408" 
+d="M384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 69c1 -18 -5 -35 -17 -48c-12 -14 -29 -21 -47 -21h-135c-33 0 -60 25 -63 58c-29 305 -271 547 -576 576c-33 3 -58 30 -58 63v135c0 18 7 35 21 47c11 11 27 17 43 17h5
+c213 -17 414 -110 565 -262c152 -151 245 -352 262 -565zM1408 67c1 -17 -5 -34 -18 -47c-12 -13 -28 -20 -46 -20h-143c-34 0 -62 26 -64 60c-33 581 -496 1044 -1077 1078c-34 2 -60 30 -60 63v143c0 18 7 34 20 46c12 12 28 18 44 18h3c350 -18 679 -165 927 -414
+c249 -248 396 -577 414 -927z" />
+    <glyph glyph-name="television" unicode="&#xf26c;" horiz-adv-x="1920" 
+d="M1792 288v960c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1248v-960c0 -88 -72 -160 -160 -160h-736v-128h352c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h352v128h-736c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="ffmpeg" unicode="&#xf30f;" 
+d="M1158 323v179l-530 -527l-628 53l1010 1100l-167 -10l-730 -810v688l69 83l-169 -10v185l591 50l-325 -379v-161l483 553l774 66l-1134 -1194l149 -8l824 849v-806l-92 -87l234 -14v-223l-731 62z" />
+    <glyph glyph-name="folder-o" unicode="&#xf114;" horiz-adv-x="1664" 
+d="M1536 224v704c0 53 -43 96 -96 96h-704c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320c-53 0 -96 -43 -96 -96v-960c0 -53 43 -96 96 -96h1216c53 0 96 43 96 96zM1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960
+c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="bed" unicode="&#xf236;" horiz-adv-x="2048" 
+d="M256 512h1728c35 0 64 -29 64 -64v-448h-256v256h-1536v-256h-256v1216c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-704zM832 832c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM2048 576h-1152v384c0 35 29 64 64 64h704
+c212 0 384 -172 384 -384v-64z" />
+    <glyph glyph-name="caret-square-o-down" unicode="&#xf150;" 
+d="M1145 861c11 -21 9 -47 -5 -66l-320 -448c-12 -17 -31 -27 -52 -27s-40 10 -52 27l-320 448c-14 19 -16 45 -5 66c11 22 33 35 57 35h640c24 0 46 -13 57 -35zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
+c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="shower" unicode="&#xf2cc;" horiz-adv-x="1920" 
+d="M1433 1287c13 -13 13 -33 0 -46l-626 -626c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l44 44c-97 122 -109 289 -35 422c-46 44 -108 71 -176 71c-141 0 -256 -115 -256 -256v-1280h-256v1280c0 282 230 512 512 512c144 0 274 -60 367 -156
+c126 51 272 32 382 -55l44 44c13 13 33 13 46 0zM1344 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1600 896c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1856 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64
+s29 64 64 64zM1216 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1408 832c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64zM1728 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 768c35 0 64 -29 64 -64
+s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 640c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1600 768c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 512c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64
+s-29 -64 -64 -64zM1472 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 384
+c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 256c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" />
+    <glyph glyph-name="paper-plane-o" unicode="&#xf1d9;" horiz-adv-x="1792" 
+d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-527 215l-298 -327c-12 -14 -29 -21 -47 -21c-8 0 -16 1 -23 4c-25 10 -41 34 -41 60v452l-472 193c-23 9 -38 30 -40 55c-2 24 11 47 32 59l1664 960
+c21 13 48 12 68 -2zM1422 26l221 1323l-1434 -827l336 -137l863 639l-478 -797z" />
+    <glyph glyph-name="circle-o-notch" unicode="&#xf1ce;" horiz-adv-x="1728" 
+d="M1728 640c0 -477 -387 -864 -864 -864s-864 387 -864 864c0 434 320 793 736 855v-228c-292 -59 -512 -318 -512 -627c0 -353 287 -640 640 -640s640 287 640 640c0 309 -220 568 -512 627v228c416 -62 736 -421 736 -855z" />
+    <glyph glyph-name="gnupg" unicode="&#xf30d;" horiz-adv-x="1156" 
+d="M0 667h81v244c0 274 223 497 497 497s497 -223 497 -497v-242c-1 -1 -3 -1 -4 -2v0l-1 -1v0v0v0h-1v-1v0v0v0h-1v0v0v-1v0h-1v0v0v0l-1 -1v0v0h-1v0l-1 -1v0v0v0v0l-1 -1v0v0v0h-1v0v0v0l-1 -1v0v0v0v0v0h-1v0v-1v0v0v0v0h-1v0v0v0l-2 -1v0v0l-1 -1v0h-1v0v-1v0v0v0h-1v0
+v0v0v0h-1v-1h-1l-1 -1h-1v-1l-2 -1h-1l-1 -1v0l-3 -1l-1 -1l-1 -1h-1l-1 -1l-1 -1h-1l-4 -2v0l-1 -1h-1v-1h-2l-3 -2l-1 -1c-1 -1 -3 -1 -4 -2h-1v0l-2 -2h-1h-1l-1 -1v0l-2 -1v0l-2 -1h-1l-1 -1c-1 -1 -3 -1 -4 -2l-1 -1c-2 -1 -3 -1 -5 -2v0l-4 -2l-2 -1
+c-2 -1 -3 -2 -5 -3v0c-99 -47 -257 -97 -557 -119c-215 -15 -346 -110 -431 -224v390v0zM310 667h536v244c0 148 -120 268 -268 268s-268 -120 -268 -268v-244zM1004 628c-1 -1 -4 -1 -5 -2zM803 1288c-64 38 -138 60 -218 60c-218 0 -398 -164 -422 -376
+c64 200 251 345 472 345c59 0 116 -10 168 -29v0zM1156 573v-701h-989c109 61 190 54 325 50c183 -6 385 71 485 173s-9 24 -122 -5s-330 -31 -476 7c459 -6 637 142 739 275s-44 24 -138 -22s-258 -79 -439 -55c273 1 482 137 615 278v0z" />
+    <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792" 
+d="M1280 416v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM640 1152h512v128h-512v-128z
+M256 1152v-1280h-32c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h32zM1440 1152v-1280h-1088v1280h160v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h160zM1792 928v-832c0 -123 -101 -224 -224 -224h-32v1280h32c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="toggle-off" unicode="&#xf204;" horiz-adv-x="2048" 
+d="M1152 640c0 282 -230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512s512 230 512 512zM1920 640c0 282 -230 512 -512 512h-386c156 -117 258 -303 258 -512s-102 -395 -258 -512h386c282 0 512 230 512 512zM2048 640c0 -353 -287 -640 -640 -640h-768
+c-353 0 -640 287 -640 640s287 640 640 640h768c353 0 640 -287 640 -640z" />
+    <glyph glyph-name="calendar-minus-o" unicode="&#xf272;" horiz-adv-x="1664" 
+d="M1152 416v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088
+v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96
+c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="id-badge" unicode="&#xf2c1;" horiz-adv-x="1280" 
+d="M1024 278c0 -86 -57 -150 -128 -150h-512c-71 0 -128 64 -128 150c0 156 39 329 196 329c49 -46 115 -75 188 -75s139 29 188 75c157 0 196 -173 196 -329zM870 797c0 -126 -103 -227 -230 -227s-230 101 -230 227c0 125 103 227 230 227s230 -102 230 -227zM1152 -96
+v1376h-1024v-1376c0 -17 15 -32 32 -32h960c17 0 32 15 32 32zM1280 1376v-1472c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h352v-96c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v96h352c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="tencent-weibo" unicode="&#xf1d5;" horiz-adv-x="1166" 
+d="M785 964c0 -106 -87 -193 -193 -193c-41 0 -79 13 -111 35c-36 -39 -76 -88 -115 -146c-163 -245 -232 -534 -202 -859c2 -29 -19 -54 -47 -57h-5c-26 0 -49 20 -52 47c-39 438 100 748 223 931c45 67 90 121 132 165c-11 24 -16 50 -16 77c0 107 86 193 193 193
+c106 0 193 -86 193 -193zM1166 953c0 -321 -261 -582 -583 -582c-44 0 -88 5 -131 14c-28 7 -45 35 -39 63c7 27 34 45 62 39c35 -9 72 -13 108 -13c264 0 479 215 479 479s-215 479 -479 479s-479 -215 -479 -479c0 -77 18 -150 52 -218c13 -26 3 -57 -22 -70
+c-26 -13 -57 -3 -70 23c-42 81 -64 173 -64 265c0 322 262 583 583 583c322 0 583 -261 583 -583z" />
+    <glyph glyph-name="file-archive-o" unicode="&#xf1c6;" 
+d="M640 1152h-128v128h128v-128zM768 1024h-128v128h128v-128zM640 896h-128v128h128v-128zM768 768h-128v128h128v-128zM1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68z
+M1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416h-128v-128h-128v128h-512v-1536h1280zM781 593c85 -287 107 -349 107 -349c5 -17 8 -34 8 -52c0 -111 -108 -192 -256 -192s-256 81 -256 192
+c0 18 3 35 8 52c0 0 21 62 120 396v128h128v-128h79c29 0 54 -19 62 -47zM640 128c71 0 128 29 128 64s-57 64 -128 64s-128 -29 -128 -64s57 -64 128 -64z" />
+    <glyph glyph-name="yoast" unicode="&#xf2b1;" horiz-adv-x="1664" 
+d="M339 1318h691l-26 -72h-665c-147 0 -267 -121 -267 -268v-771c0 -126 90 -237 214 -263c32 -7 65 -5 98 -5v-72h-45c-187 0 -339 153 -339 340v771c0 187 152 340 339 340zM1190 1536h247l-482 -1294c-90 -240 -199 -490 -495 -498v195c111 18 182 79 220 182
+c13 34 20 69 20 105s-7 72 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795c16 24 33 47 45 73h678v1038c0 114 -72 216 -179 254l25 67c136 -46 226 -178 226 -321z" />
+    <glyph glyph-name="share-alt-square" unicode="&#xf1e1;" 
+d="M1280 341c0 118 -96 214 -213 214c-56 0 -107 -22 -145 -58l-241 120c1 8 2 15 2 23s-1 15 -2 23l241 120c38 -36 89 -58 145 -58c117 0 213 96 213 214c0 117 -96 213 -213 213c-118 0 -214 -96 -214 -213c0 -8 1 -15 2 -23l-241 -120c-38 35 -89 57 -145 57
+c-117 0 -213 -95 -213 -213s96 -213 213 -213c56 0 107 22 145 57l241 -120c-1 -8 -2 -15 -2 -23c0 -117 96 -213 214 -213c117 0 213 96 213 213zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="imdb" unicode="&#xf2d8;" 
+d="M922 739v-182c0 -36 7 -69 -38 -68v309c44 0 38 -23 38 -59zM1238 643v-121c0 -20 6 -53 -23 -53c-6 0 -11 3 -14 9c-8 19 -4 163 -4 165c0 14 -4 47 18 47c27 0 23 -27 23 -47zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221c-10 74 -20 148 -32 221h-158
+v-472h107v312l45 -312h76l43 319v-319zM1039 712c0 30 1 62 -5 90c-16 83 -116 77 -181 77h-91v-472c318 0 277 -22 277 305zM1356 515v133c0 64 -3 111 -82 111c-33 0 -55 -10 -77 -34v154h-117v-472h110l7 30c21 -25 44 -36 77 -36c73 0 82 56 82 114zM1536 1248v-1216
+c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1216c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="snapchat-square" unicode="&#xf2ad;" 
+d="M1280 388c0 14 -8 24 -22 27c-91 19 -160 83 -198 167c-4 8 -7 16 -7 25c0 45 124 36 124 100c0 27 -33 44 -57 44c-22 0 -40 -16 -63 -16c-4 0 -8 1 -12 2c3 38 5 77 5 115c0 34 -2 82 -17 114c-48 104 -140 165 -255 165c-125 0 -220 -47 -275 -165
+c-15 -32 -18 -80 -18 -115c0 -38 3 -76 6 -114c-5 -1 -10 -2 -15 -2c-22 0 -41 16 -62 16c-25 0 -55 -17 -55 -45c0 -62 124 -54 124 -99c0 -9 -3 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -47 106 -64 138 -69c9 -24 5 -66 40 -66
+c26 0 51 10 77 10c106 0 134 -95 256 -95c127 0 151 95 258 95c26 0 52 -9 78 -9c34 0 31 42 39 65c32 5 138 22 138 69zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="spell-check" unicode="&#xf327;" horiz-adv-x="2049" 
+d="M2049 700c0 -25 -10 -50 -28 -68l-724 -724l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136l-362 362c-18 18 -28 43 -28 68s10 50 28 68l136 136c18 18 43 28 68 28s50 -10 68 -28l294 -295l656 657c18 18 43 28 68 28s50 -10 68 -28l136 -136
+c18 -18 28 -43 28 -68zM0 880v73h48l158 454h111l158 -454h49v-73h-199v73h52l-32 98h-167l-32 -98h52v-73h-198zM200 1127h122l-49 149c-2 8 -5 16 -6 23c-1 8 -3 15 -3 18l-1 5h-2c-1 -13 -5 -29 -10 -46zM569 880v73h63v381h-63v73h242c40 0 72 -5 95 -14
+c24 -9 44 -25 58 -47c15 -21 22 -46 22 -75c0 -25 -6 -47 -17 -67s-28 -35 -48 -46v-1c28 -8 50 -24 64 -47s22 -49 22 -78c0 -35 -10 -65 -30 -91s-45 -43 -75 -52c-21 -6 -47 -9 -79 -9h-254zM730 1192h92c20 0 37 6 48 18c11 13 17 30 17 51c0 29 -10 49 -30 60
+c-11 5 -27 8 -46 8h-81v-137zM730 958h98c15 0 27 2 37 6c13 5 25 15 32 28c7 14 11 29 11 46c0 23 -7 41 -21 55c-13 14 -32 22 -56 22h-101v-157zM1131 950c-52 53 -78 118 -78 196s26 142 78 193s116 77 193 77c18 0 39 -2 60 -5c22 -3 44 -9 67 -16s41 -18 56 -33
+s23 -32 23 -51v-72h-88v41c0 12 -7 23 -20 31s-29 14 -45 17s-32 5 -48 5c-51 0 -94 -17 -127 -51c-33 -33 -49 -77 -49 -132c0 -59 17 -106 51 -142s78 -54 130 -54c14 0 29 2 45 4s31 8 46 16s23 19 23 32v41h89v-72c0 -18 -7 -35 -22 -49c-14 -14 -33 -26 -56 -33
+c-22 -7 -45 -13 -67 -16c-22 -4 -44 -6 -64 -6c-79 0 -145 27 -197 79v0z" />
+    <glyph glyph-name="building-o" unicode="&#xf0f7;" horiz-adv-x="1408" 
+d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
+c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 992v-64
+c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
+c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736
+v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32
+v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32z
+M1152 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1536h-1152v-1536h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM1408 1472v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64
+v1664c0 35 29 64 64 64h1280c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="sort-alpha-desc" unicode="&#xf15e;" horiz-adv-x="1629" 
+d="M1159 104h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
+c18 0 32 -14 32 -32zM1629 -150v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1540 1001v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530
+c-6 -9 -14 -18 -21 -26l-11 -10v-3l14 3c9 1 18 1 30 1h248v119h121z" />
+    <glyph glyph-name="map-signs" unicode="&#xf277;" horiz-adv-x="1718" 
+d="M1708 1239c13 -13 13 -33 0 -46l-141 -141c-18 -18 -43 -28 -68 -28h-1344c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h576v64c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-64h512c25 0 50 -10 68 -28zM731 320h256v-512c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64
+v512zM1563 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-1344c-25 0 -50 10 -68 28l-141 141c-13 13 -13 33 0 46l141 141c18 18 43 28 68 28h512v192h256v-192h576z" />
+    <glyph glyph-name="long-arrow-right" unicode="&#xf178;" horiz-adv-x="1728" 
+d="M1728 643c0 -9 -4 -18 -10 -24l-384 -354c-10 -9 -23 -11 -35 -6c-11 5 -19 16 -19 29v224h-1248c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h1248v224c0 13 7 24 19 29s25 3 35 -5l384 -350c6 -6 10 -14 10 -23z" />
+    <glyph glyph-name="first-order" unicode="&#xf2b0;" 
+d="M1322 640c0 -26 -1 -51 -5 -76l-236 14l224 -78c-13 -51 -33 -98 -58 -141l-214 103l177 -158c-30 -41 -66 -77 -107 -108l-157 178l103 -215c-43 -26 -90 -45 -140 -59l-79 228l14 -240c-25 -4 -50 -6 -76 -6c-25 0 -51 2 -76 6l14 238l-78 -226c-50 13 -97 33 -140 59
+l103 215l-157 -178c-41 30 -77 67 -108 108l178 158l-214 -104c-25 44 -45 91 -58 141l224 79l-237 -14c-3 25 -5 50 -5 76s2 52 5 77l238 -14l-225 79c13 50 33 97 58 140l214 -104l-177 159c31 41 67 77 107 108l158 -178l-103 215c43 25 90 45 140 58l77 -224l-13 236
+c24 4 50 6 75 6c26 0 51 -2 76 -6l-14 -237l78 225c50 -13 97 -33 140 -59l-103 -214l158 178c40 -31 76 -67 107 -108l-177 -159l213 104c26 -43 45 -91 58 -141l-224 -78l237 14c4 -25 5 -51 5 -77zM1352 640c0 325 -262 588 -584 588c-323 0 -584 -263 -584 -588
+c0 -324 261 -587 584 -587c322 0 584 263 584 587zM1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
+    <glyph glyph-name="calendar-check-o" unicode="&#xf274;" horiz-adv-x="1664" 
+d="M1303 572l-512 -512c-13 -12 -33 -12 -46 0l-288 288c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l220 -220l444 444c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96
+c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="id-card" unicode="&#xf2c2;" horiz-adv-x="2048" 
+d="M896 324c0 132 -32 284 -164 284c-40 -40 -95 -64 -156 -64s-116 24 -156 64c-132 0 -164 -152 -164 -284c0 -73 48 -132 107 -132h426c59 0 107 59 107 132zM768 768c0 106 -86 192 -192 192s-192 -86 -192 -192s86 -192 192 -192s192 86 192 192zM1792 288v64
+c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1408 544v64c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1792 544v64c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
+v-64c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1792 800v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM128 1152h1792v96c0 18 -14 32 -32 32h-1728c-18 0 -32 -14 -32 -32v-96zM2048 1248v-1216
+c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="globe-w" unicode="&#xf305;" 
+d="M768 1404c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM924 1238v0c-3 0 -6 -1 -7 -1c-2 0 -153 -25 -208 -34s-156 -30 -201 -34s-46 0 -69 0c-7 0 -14 1 -21 2c-65 -43 -152 -132 -193 -198c0 -4 2 -7 6 -11c12 -12 46 0 69 0
+s59 8 69 0s1 -7 2 -9s-16 -108 -7 -144s10 -88 33 -129s110 -63 145 -98s106 -34 112 -71s-30 -79 -42 -102s-40 -40 -35 -69s46 -47 69 -70s47 -29 69 -69s25 -125 35 -173c2 -9 5 -22 7 -31c3 0 8 -1 11 -1c57 0 146 15 200 33c6 41 13 83 24 103c18 33 24 24 36 36
+s23 18 35 35s23 46 34 68s38 38 33 67s-47 47 -70 70s-35 50 -69 69s-94 24 -130 33s-163 15 -165 16s0 -8 -8 2s-3 50 -3 73s13 44 30 85c17 23 7 12 33 31c13 12 55 -57 73 -57s-4 117 7 128c46 46 163 125 163 174s-46 46 -69 69s-60 -39 -143 -39s97 131 109 143
+s30 22 35 35s0 23 0 34s14 28 9 32c-2 2 -5 2 -8 2zM1041 1214v0c-6 -14 -7 -31 -14 -45c-12 -23 -35 -43 -35 -69s23 -46 35 -69s1 -60 34 -69s69 46 104 69c21 14 50 26 72 40c-46 50 -134 114 -196 143z" />
+    <glyph glyph-name="github-alt" unicode="&#xf113;" horiz-adv-x="1664" 
+d="M640 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1280 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1440 320c0 153 -93 288 -256 288c-66 0 -129 -12 -195 -21
+c-52 -8 -104 -11 -157 -11s-105 3 -157 11c-65 9 -129 21 -195 21c-163 0 -256 -135 -256 -288c0 -306 280 -353 524 -353h168c244 0 524 47 524 353zM1664 496c0 -111 -11 -229 -61 -331c-132 -267 -495 -293 -755 -293c-264 0 -649 23 -786 293c-51 101 -62 220 -62 331
+c0 146 40 284 136 396c-18 55 -27 113 -27 170c0 75 17 150 51 218c158 0 259 -69 379 -163c101 24 205 35 309 35c94 0 189 -10 280 -32c119 93 220 160 376 160c34 -68 51 -143 51 -218c0 -57 -9 -114 -27 -168c96 -113 136 -252 136 -398z" />
+    <glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="1664" 
+d="M831 863c21 0 41 -6 59 -18l222 -148c41 -27 78 -60 110 -97l146 -170c25 -29 36 -68 29 -106l-72 -413c-8 -42 -42 -74 -85 -79l-527 -56l-352 -32h-9c-52 0 -96 42 -96 96c0 50 42 90 92 96l260 32h-448c-55 0 -99 46 -96 101c3 52 49 91 101 91l442 1l-521 64
+c-54 6 -93 55 -85 110c8 48 52 80 100 80h10l481 -60l-351 94c-50 13 -88 59 -80 110c8 48 49 81 95 81c7 0 13 -1 20 -2l448 -96l217 -37c2 0 4 -1 6 -1c30 0 45 41 18 59l-186 125c-46 31 -57 93 -24 137c18 25 47 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
+l-238 262c-2 2 -3 5 -5 7c-31 41 -24 101 19 134c40 31 97 21 132 -16l142 -147c-3 -3 -6 -5 -9 -8c-21 -29 -29 -64 -23 -99c6 -34 26 -65 55 -85zM1648 1115l15 -266c3 -49 -1 -99 -11 -147l-48 -219c-8 -38 -32 -69 -67 -87l-106 -54c1 40 -12 78 -39 109l-146 170
+c-34 39 -73 74 -117 103l-222 148c-22 15 -48 23 -76 23c-34 0 -65 -14 -88 -37l-235 312c-33 44 -23 106 23 137c43 30 102 16 134 -26l266 -352l-262 455c-28 47 -12 108 37 134c46 24 104 5 130 -40l241 -420l-136 337c-19 48 -6 106 40 130c49 26 109 5 132 -45
+l193 -415l101 -196c16 -31 63 -18 61 16l-12 224c-3 55 40 101 95 102c52 0 94 -44 97 -96z" />
+    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1407" 
+d="M1384 609l-1328 -738c-31 -17 -56 -2 -56 33v1472c0 35 25 50 56 33l1328 -738c31 -17 31 -45 0 -62z" />
+    <glyph glyph-name="heart-o" unicode="&#xf08a;" horiz-adv-x="1792" 
+d="M1664 940c0 281 -190 340 -350 340c-149 0 -317 -161 -369 -223c-24 -29 -74 -29 -98 0c-52 62 -220 223 -369 223c-160 0 -350 -59 -350 -340c0 -183 185 -353 187 -355l581 -560l580 559c3 3 188 173 188 356zM1792 940c0 -240 -220 -441 -229 -450l-623 -600
+c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468z" />
+    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792" 
+d="M675 252c28 46 13 99 -34 119c-45 19 -105 -1 -133 -45c-29 -45 -15 -98 30 -119c46 -21 108 -1 137 45zM769 373c10 18 4 38 -14 45c-18 6 -40 -2 -50 -19c-10 -18 -5 -37 13 -45c18 -7 41 1 51 19zM943 266c-60 -136 -234 -210 -382 -162c-143 46 -203 187 -141 314
+c62 124 221 194 362 158c147 -38 221 -176 161 -310zM1255 426c-19 195 -275 329 -572 300c-297 -30 -521 -211 -502 -406s275 -329 572 -300c297 30 521 211 502 406zM1563 422c0 -225 -324 -508 -811 -508c-372 0 -752 180 -752 477c0 155 98 334 267 503
+c226 226 489 328 588 229c44 -43 48 -119 20 -209c-14 -46 43 -20 43 -21c182 77 341 81 399 -2c31 -44 28 -106 0 -178c-13 -33 4 -38 29 -46c103 -32 217 -109 217 -245zM1489 1046c57 -63 73 -150 48 -226c-10 -31 -43 -48 -74 -38s-48 43 -38 74c12 38 4 80 -24 111
+s-69 43 -107 35c-32 -7 -64 13 -70 45c-7 32 13 63 45 70c78 17 163 -7 220 -71zM1670 1209c118 -130 149 -308 99 -464c-12 -36 -50 -56 -86 -44s-56 50 -45 86c36 111 14 238 -70 330c-84 93 -207 128 -321 104c-37 -8 -74 16 -82 53s16 73 53 81c161 34 334 -15 452 -146
+z" />
+    <glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="998" 
+d="M998 800c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="cc-jcb" unicode="&#xf24b;" horiz-adv-x="2304" 
+d="M1951 538c0 -36 -24 -62 -54 -68c-4 -1 -13 -2 -18 -2h-153v140h153c5 0 14 -1 18 -2c30 -6 54 -33 54 -68zM1933 751c0 -35 -24 -58 -53 -63c-3 -1 -10 -1 -15 -1h-139v129h139c5 0 12 -1 15 -1c29 -5 53 -29 53 -64zM728 587v308h-228v-308c0 -75 -51 -131 -143 -131
+c-78 0 -155 23 -229 59v-112c120 -33 272 -33 272 -33c254 0 328 97 328 217zM1442 403v113c-52 -27 -118 -53 -200 -59c-144 -11 -230 59 -230 183s86 194 230 183c82 -6 147 -31 200 -58v112c-107 27 -208 31 -208 31c-352 16 -452 -123 -452 -268s100 -284 452 -268
+c0 0 101 4 208 31zM2176 518c0 74 -66 122 -152 128v3c78 11 121 62 121 121c0 76 -63 120 -148 124c-6 0 -17 1 -26 1h-455v-510h491c97 0 169 52 169 133zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048
+c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="compress" unicode="&#xf066;" horiz-adv-x="1510" 
+d="M755 576v-448c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64zM1510 1248
+c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="pencil-square-o" unicode="&#xf044;" horiz-adv-x="1784" 
+d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072c-9 9 -24 8 -33 -1l-350 -350c-9 -9 -10 -24 -1 -33s24 -8 33 1l350 350c9 9 10 24 1 33zM1408 478v-190c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832
+c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-9 -9 -21 -12 -32 -8c-15 4 -30 6 -45 6h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v126c0 8 3 16 9 22l64 64c10 10 23 12 35 7s20 -16 20 -29zM1312 1216
+l288 -288l-672 -672h-288v288zM1756 1084l-92 -92l-288 288l92 92c37 37 99 37 136 0l152 -152c37 -37 37 -99 0 -136z" />
+    <glyph glyph-name="google-plus-square" unicode="&#xf0d4;" 
+d="M917 631c0 25 -3 45 -6 64h-362v-132h217c-8 -56 -65 -165 -217 -165c-132 0 -239 108 -239 242s107 242 239 242c74 0 124 -31 153 -59l104 101c-67 62 -154 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110h-109
+v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="keybase" unicode="&#xf2f4;" horiz-adv-x="1547" 
+d="M146 -80c-13 28 -30 67 -39 87l-13 38l-44 -49l-44 -48l-4 92c-7 131 4 267 26 363c50 214 208 408 411 511l45 21l-10 33c-7 17 -14 55 -16 79l-4 46l-46 4c-70 7 -107 26 -131 76c-13 26 -13 31 -9 101c4 92 12 111 40 142c35 39 59 45 146 41c63 -4 77 -6 105 -19
+c17 -9 33 -18 35 -18s22 24 46 57l41 59l26 -15c15 -9 33 -20 42 -24l15 -9l-13 -33c-7 -17 -16 -48 -18 -63l-4 -31l37 -4c133 -13 234 -94 271 -216c11 -39 11 -116 0 -153c-11 -35 -11 -37 -2 -37c15 0 118 -51 159 -77c81 -52 175 -143 227 -222
+c98 -146 140 -306 123 -481c-9 -105 -29 -187 -64 -268l-13 -31h-109l26 52c28 57 50 136 61 206c7 48 10 179 3 203l-5 15l-28 -31c-70 -76 -172 -98 -310 -61c-118 31 -167 37 -278 37c-85 0 -113 -2 -159 -13c-127 -28 -217 -69 -341 -159c-46 -33 -83 -59 -85 -59
+s4 22 13 50s24 74 33 105l17 55l-19 -20c-11 -11 -42 -42 -68 -70l-46 -50l11 -42c13 -55 44 -122 77 -172c13 -22 24 -40 24 -42s-26 -2 -57 -2h-57zM338 449c105 111 190 200 192 200c2 -2 -8 -35 -19 -72c-72 -227 -87 -271 -85 -273c0 0 26 9 54 20
+c186 81 402 92 631 31c103 -26 142 -26 192 0c28 15 40 23 53 45c24 37 26 90 11 138c-37 105 -182 240 -317 299c-70 31 -74 30 -89 15l-14 -13l57 -69c31 -37 64 -79 68 -90c13 -26 15 -68 2 -94c-17 -37 -70 -64 -111 -55c-17 4 -25 3 -42 -10c-48 -35 -100 -26 -144 26
+c-35 39 -44 59 -46 98c0 20 -7 43 -11 52c-7 13 -8 28 -8 48l2 31l-29 7c-39 11 -85 32 -111 52c-13 9 -24 17 -28 17s-33 -13 -64 -28c-212 -109 -349 -312 -371 -541c-2 -22 -4 -51 -6 -62l-3 -19l24 24c11 11 107 112 212 223zM904 610c20 15 37 28 41 28
+c2 0 9 -6 16 -15c11 -17 30 -17 39 -2c7 11 7 13 -122 170c-76 94 -92 110 -103 110c-26 -2 -19 -23 22 -73l39 -48l-22 -17c-24 -22 -26 -26 -11 -39c11 -11 13 -9 35 6l24 15l16 -13c9 -7 13 -17 13 -19c0 -4 -17 -20 -37 -37c-20 -15 -35 -34 -35 -38c0 -7 10 -24 30 -48
+c7 -13 18 -8 55 20zM679 920c13 39 56 70 100 70c24 0 59 -20 83 -46l22 -26l20 24c55 61 61 147 17 221c-33 55 -94 87 -179 96c-46 4 -57 8 -81 32l-17 18l-9 -13c-17 -26 -54 -111 -65 -144c-15 -50 -9 -129 11 -168c20 -37 72 -88 87 -81c2 -2 7 6 11 17zM484 1217
+c4 11 16 39 27 61s19 44 19 51c0 20 -21 28 -80 32c-52 4 -57 3 -68 -8c-9 -9 -13 -20 -13 -35c0 -13 -3 -37 -5 -57c-4 -46 2 -54 48 -61c68 -4 65 -5 72 17zM417 1270c0 37 4 41 35 41h28v-61h-61v20h-2zM554 -4c-13 13 -17 22 -17 44c0 41 24 66 63 66
+c37 0 64 -27 64 -64c0 -39 -25 -61 -66 -63c-22 0 -31 4 -44 17zM976 -10c-50 39 -24 116 39 116c39 0 61 -25 63 -66c0 -24 -2 -31 -17 -44s-22 -17 -44 -17c-20 0 -32 4 -41 11z" />
+    <glyph glyph-name="angle-right" unicode="&#xf105;" horiz-adv-x="582" 
+d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 14 -10 23c0 8 4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="forumbee" unicode="&#xf211;" 
+d="M934 1386c-423 -161 -756 -499 -914 -923c-13 58 -20 117 -20 176c0 423 342 766 765 766c57 0 114 -7 169 -19zM1203 1267c62 -43 117 -95 164 -155c-518 -151 -923 -558 -1071 -1077c-59 46 -112 100 -155 162c149 514 549 918 1062 1070zM470 -67
+c154 475 526 849 999 1006c27 -62 45 -128 54 -195c-390 -160 -700 -472 -859 -863c-67 9 -132 26 -194 52zM1536 -125c-124 32 -247 70 -367 115c-88 -55 -187 -92 -290 -107c146 273 371 499 643 646c-14 -100 -49 -198 -101 -284c45 -121 83 -245 115 -370z" />
+    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538" 
+d="M14 557l710 710c25 25 65 25 90 0l710 -710c25 -25 16 -45 -19 -45h-1472c-35 0 -44 20 -19 45zM1473 0h-1408c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1408c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64z" />
+    <glyph glyph-name="mobile" unicode="&#xf10b;" horiz-adv-x="768" 
+d="M464 128c0 44 -36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80s80 36 80 80zM672 288v704c0 17 -15 32 -32 32h-512c-17 0 -32 -15 -32 -32v-704c0 -17 15 -32 32 -32h512c17 0 32 15 32 32zM480 1136c0 9 -7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160
+c9 0 16 7 16 16zM768 1152v-1024c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v1024c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="hourglass-end" unicode="&#xf253;" 
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-86 -32 -173 -100 -244 -196h700c-71 96 -158 164 -244 196c-25 9 -42 33 -42 60
+s17 51 42 60z" />
+    <glyph glyph-name="trash-o" unicode="&#xf014;" horiz-adv-x="1408" 
+d="M512 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM768 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1024 800v-576c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1152 76v948h-896v-948c0 -48 27 -76 32 -76h832c5 0 32 28 32 76zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948
+c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="star-o" unicode="&#xf006;" horiz-adv-x="1664" 
+d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -27 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12
+c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
+    <glyph glyph-name="floppy-o" unicode="&#xf0c7;" 
+d="M384 0h768v384h-768v-384zM1280 0h128v896c0 19 -17 60 -30 73l-281 281c-14 14 -53 30 -73 30v-416c0 -53 -43 -96 -96 -96h-576c-53 0 -96 43 -96 96v416h-128v-1280h128v416c0 53 43 96 96 96h832c53 0 96 -43 96 -96v-416zM896 928v320c0 17 -15 32 -32 32h-192
+c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h192c17 0 32 15 32 32zM1536 896v-928c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h928c53 0 126 -30 164 -68l280 -280c38 -38 68 -111 68 -164z" />
+    <glyph glyph-name="file-powerpoint-o" unicode="&#xf1c4;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM416 106h92v555h-92v107h368c46 0 92 -4 130 -19c83 -35 137 -119 137 -228s-56 -202 -146 -233c-36 -13 -75 -15 -118 -15h-137v-167h93v-106h-327v106zM769 386c31 0 57 5 78 15c42 21 62 64 62 120c0 53 -20 94 -56 115c-21 12 -48 18 -83 18h-120v-268
+h119z" />
+    <glyph glyph-name="cc-discover" unicode="&#xf1f2;" horiz-adv-x="2304" 
+d="M313 759c0 -32 -13 -63 -36 -84c-20 -18 -47 -26 -89 -26h-17v220h17c42 0 68 -7 89 -27c23 -20 36 -51 36 -83zM2089 824c0 -34 -22 -52 -64 -52h-19v101h20c41 0 63 -17 63 -49zM380 759c0 98 -73 167 -179 167h-95v-333h95c50 0 87 11 119 38c38 32 60 79 60 128z
+M410 593h65v333h-65v-333zM730 694c0 53 -22 77 -96 104c-39 14 -50 24 -50 42c0 21 20 37 48 37c20 0 36 -8 53 -27l34 44c-28 25 -62 37 -98 37c-59 0 -104 -41 -104 -95c0 -46 21 -70 82 -92c25 -9 38 -14 45 -19c13 -8 19 -20 19 -34c0 -27 -21 -47 -50 -47
+c-31 0 -56 15 -71 44l-42 -40c30 -44 66 -64 115 -64c68 0 115 45 115 110zM1008 604v77c-26 -26 -49 -37 -78 -37c-66 0 -112 48 -112 115c0 64 48 115 109 115c31 0 54 -11 81 -38v77c-28 14 -52 20 -80 20c-98 0 -177 -77 -177 -174c0 -98 77 -174 176 -174
+c28 0 52 5 81 19zM2240 0v527c-160 -100 -723 -420 -1633 -591h1569c35 0 64 29 64 64zM1389 757c0 100 -81 181 -181 181s-181 -81 -181 -181s81 -181 181 -181s181 81 181 181zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56
+h-115v74h119v57h-184v-333zM2105 593h80l-105 140c49 10 76 43 76 94c0 63 -43 99 -118 99h-97v-333h65v133h9zM2304 1274v-1268c0 -74 -59 -134 -132 -134h-2040c-73 0 -132 60 -132 134v1268c0 74 59 134 132 134h2040c73 0 132 -60 132 -134z" />
+    <glyph glyph-name="bomb" unicode="&#xf1e2;" horiz-adv-x="1792" 
+d="M571 947c-13 33 -50 48 -83 35c-144 -58 -260 -174 -318 -318c-13 -33 2 -70 35 -83c8 -3 16 -5 24 -5c26 0 49 15 60 40c45 112 135 202 247 247c33 14 49 51 35 84zM1513 1303l46 -46l-244 -243l68 -68c25 -25 25 -66 0 -91l-64 -64c56 -101 89 -218 89 -343
+c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704c125 0 242 -33 343 -89l64 64c25 25 66 25 91 0l68 -68zM1521 1359c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10l-91 90c-12 13 -12 33 0 46c13 12 33 12 46 0l90 -91c13 -12 13 -33 0 -45zM1751 1129
+c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-90 91c-13 12 -13 33 0 45c12 13 33 13 45 0l91 -90c12 -13 12 -33 0 -46zM1792 1312c0 -18 -14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96c18 0 32 -14 32 -32zM1600 1504v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96
+c0 18 14 32 32 32s32 -14 32 -32zM1751 1449l-91 -90c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10c-13 12 -13 33 0 45l90 91c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
+    <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792" 
+d="M666 1055c-56 -86 -97 -179 -137 -273c-58 121 -122 242 -273 242h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c178 0 309 -83 410 -225zM1792 256c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192c-297 0 -480 -35 -665 225
+c55 86 96 179 136 273c58 -121 122 -242 273 -242h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1792 1152c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 14 -32 32v192h-256c-133 0 -196 -91 -252 -199
+c-29 -56 -54 -114 -78 -171c-111 -258 -241 -526 -566 -526h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c133 0 196 91 252 199c29 56 54 114 78 171c111 258 241 526 566 526h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
+    <glyph glyph-name="fire-extinguisher" unicode="&#xf134;" horiz-adv-x="1408" 
+d="M512 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 1376v-320c0 -10 -4 -19 -12 -25c-6 -5 -13 -7 -20 -7c-2 0 -4 0 -7 1l-448 96c-14 3 -25 16 -25 31h-256v-102c146 -30 256 -159 256 -314v-800c0 -35 -29 -64 -64 -64h-512
+c-35 0 -64 29 -64 64v800c0 143 94 265 224 305v111h-32c-212 0 -326 -219 -327 -221c-11 -22 -34 -35 -57 -35c-10 0 -20 2 -29 7c-31 16 -44 54 -28 86c5 10 105 204 306 269c-15 25 -25 54 -25 86c0 88 72 160 160 160s160 -72 160 -160c0 -23 -5 -44 -14 -64h302
+c0 15 11 28 25 31l448 96c3 1 5 1 7 1c7 0 14 -2 20 -7c8 -6 12 -15 12 -25z" />
+    <glyph glyph-name="gnu-social" unicode="&#xf2e7;" horiz-adv-x="1513" 
+d="M218 1404v0h1077c121 0 218 -97 218 -218v-873c0 -121 -97 -218 -218 -218h-118c-80 -349 -645 -351 -645 -351s334 104 335 351h-649c-121 0 -218 97 -218 218v873c0 121 97 218 218 218zM532 1229c-35 -5 -114 -89 -114 -150c0 -49 -3 -127 70 -167
+c-69 -67 -82 -163 -81 -247c2 -154 67 -382 357 -397s352 214 352 360h-305l50 -134l89 5s17 -107 -174 -100c-122 5 -200 68 -200 249s22 211 193 218s203 -139 203 -139l142 -3s-11 107 -93 188c73 40 72 118 69 167c-2 47 -102 169 -125 148s39 -41 34 -143
+c-2 -45 11 -79 -75 -79c-57 0 -33 51 -105 51c-43 0 -59 -28 -65 -50c-6 22 -21 50 -64 50c-72 0 -49 -51 -106 -51c-86 0 -72 34 -74 79c-5 102 56 122 33 143c-1 1 -3 2 -5 2h-6z" />
+    <glyph glyph-name="pencil-square" unicode="&#xf14b;" 
+d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818c8 -7 6 -21 -3 -30l-291 -291c-9 -9 -23 -11 -30 -3c-8 7 -6 21 3 30l291 291c9 9 23 11 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92c37 37 37 99 0 136l-152 152c-37 37 -99 37 -136 0
+l-92 -92zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="reddit-square" unicode="&#xf1a2;" 
+d="M939 407c7 -7 7 -19 0 -26c-49 -49 -143 -53 -171 -53s-122 4 -171 53c-7 7 -7 19 0 26c7 8 19 8 26 0c31 -31 98 -42 145 -42s114 11 145 42c7 8 19 8 26 0zM676 563c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1014 563
+c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1229 666c0 56 -46 102 -103 102c-28 0 -54 -12 -73 -31c-70 48 -164 79 -267 82l54 243l171 -39c1 -42 35 -76 77 -76s77 35 77 77s-35 77 -77 77c-30 0 -56 -17 -69 -43l-189 42
+c-10 3 -19 -4 -21 -13l-60 -268c-103 -4 -196 -35 -265 -83c-19 20 -45 32 -74 32c-57 0 -103 -46 -103 -102c0 -41 24 -76 58 -93c-3 -15 -5 -32 -5 -48c0 -163 183 -295 409 -295s410 132 410 295c0 17 -2 33 -6 49c33 17 56 52 56 92zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="arrow-circle-o-down" unicode="&#xf01a;" 
+d="M1120 608c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v352c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-352h192c18 0 32 -14 32 -32zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="576" 
+d="M576 1088v-896c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-448 448c-12 12 -19 28 -19 45s7 33 19 45l448 448c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="camera-retro" unicode="&#xf083;" horiz-adv-x="1792" 
+d="M928 704c0 18 -14 32 -32 32c-88 0 -160 -72 -160 -160c0 -18 14 -32 32 -32s32 14 32 32c0 53 43 96 96 96c18 0 32 14 32 32zM1152 574c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM128 0h1536v128h-1536v-128zM1280 574
+c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM256 1216h384v128h-384v-128zM128 1024h1536v256h-828l-64 -128h-644v-128zM1792 1280v-1280c0 -71 -57 -128 -128 -128h-1536c-71 0 -128 57 -128 128v1280c0 71 57 128 128 128h1536
+c71 0 128 -57 128 -128z" />
+    <glyph glyph-name="thumbs-o-up" unicode="&#xf087;" 
+d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 768c0 68 -61 128 -128 128h-352c0 117 96 202 96 320c0 117 -23 192 -160 192c-64 -65 -31 -218 -128 -320c-28 -29 -52 -60 -77 -91c-45 -58 -164 -229 -243 -229h-32v-640h32
+c56 0 148 -36 202 -55c110 -38 224 -73 342 -73h121c113 0 192 45 192 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103c47 1 75 91 75 128zM1536 769c0 -58 -17 -115 -49 -163c6 -22 9 -46 9 -69
+c0 -50 -13 -100 -38 -144c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300h-129c-142 0 -274 42 -406 88c-29 10 -110 40 -138 40h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h274c39 26 107 116 137 155c34 44 69 87 107 128
+c60 64 28 222 128 320c24 23 56 37 90 37c104 0 204 -37 253 -134c31 -61 35 -119 35 -186c0 -70 -18 -130 -48 -192h176c138 0 256 -117 256 -255z" />
+    <glyph glyph-name="product-hunt" unicode="&#xf288;" horiz-adv-x="1792" 
+d="M1150 774c0 -74 -60 -134 -135 -134h-253v269h253c75 0 135 -60 135 -135zM1329 774c0 174 -140 314 -314 314h-433v-896h180v269h253c174 0 314 140 314 313zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="etsy" unicode="&#xf2d7;" 
+d="M518 1353v-655c232 -2 354 10 354 10c94 3 108 27 130 119l33 142h103l-14 -322l7 -319h-103l-29 127c-21 95 -62 118 -129 119c0 0 -86 8 -352 8v-556c0 -104 57 -153 177 -153h357c120 0 228 12 302 183l93 216h89c-7 -43 -55 -440 -62 -528c-329 12 -470 12 -470 12
+h-628l-376 -12v102l127 25c89 17 116 43 117 116c6 242 8 643 8 643s3 402 -8 645c-3 83 -28 103 -117 120l-127 24v102l376 -12h702s139 0 374 27c-14 -153 -31 -506 -31 -506h-93l-32 124c-39 155 -91 238 -187 238h-548c-41 0 -43 -14 -43 -39z" />
+    <glyph glyph-name="copyright" unicode="&#xf1f9;" 
+d="M1150 462v-109c0 -141 -225 -193 -366 -193c-274 0 -480 209 -480 485c0 271 204 475 475 475c99 0 358 -35 358 -194v-109c0 -9 -7 -16 -16 -16h-118c-9 0 -16 7 -16 16v70c0 63 -121 92 -203 92c-187 0 -317 -135 -317 -329c0 -201 136 -348 325 -348
+c72 0 208 27 208 90v70c0 9 7 16 15 16h119c8 0 16 -7 16 -16zM768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="pleroma" unicode="&#xf324;" horiz-adv-x="961" 
+d="M120 1408h262v-1536h-382v1416c0 66 54 120 120 120zM575 1408h386v-648c0 -66 -53 -120 -119 -120v0h-267v768zM575 254h386v-262c0 -66 -53 -120 -119 -120v0h-267v382z" />
+    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1651" 
+d="M572 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46zM1651 96v-64c0 -18 -14 -32 -32 -32h-960c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h960
+c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="twitter-square" unicode="&#xf081;" 
+d="M1280 926c-38 -17 -78 -28 -121 -34c44 26 77 68 93 117c-41 -24 -86 -42 -134 -51c-38 41 -93 66 -153 66c-116 0 -210 -94 -210 -210c0 -16 1 -33 5 -48c-175 9 -330 92 -434 220c-18 -31 -29 -68 -29 -106c0 -73 34 -137 91 -175c-35 1 -68 11 -100 26v-2
+c0 -102 77 -187 173 -206c-18 -5 -32 -8 -51 -8c-13 0 -26 2 -39 4c27 -83 104 -144 196 -146c-72 -56 -162 -90 -261 -90c-17 0 -34 1 -50 3c93 -59 203 -94 322 -94c386 0 598 320 598 598c0 9 0 18 -1 27c41 29 77 66 105 109zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="shopping-bag" unicode="&#xf290;" horiz-adv-x="1793" 
+d="M1757 128l35 -313c2 -18 -4 -36 -16 -50c-12 -13 -30 -21 -48 -21h-1664c-18 0 -36 8 -48 21c-12 14 -18 32 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775c4 32 31 57 64 57h256v-128c0 -71 57 -128 128 -128s128 57 128 128v128h384v-128c0 -71 57 -128 128 -128
+s128 57 128 128v128h256c33 0 60 -25 64 -57zM1280 1152v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 212 172 384 384 384s384 -172 384 -384z" />
+    <glyph glyph-name="stop-circle" unicode="&#xf28d;" 
+d="M1088 352v576c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="telegram" unicode="&#xf2c6;" horiz-adv-x="1792" 
+d="M1189 229l147 693c13 61 -22 85 -62 70l-864 -333c-59 -23 -58 -56 -10 -71l221 -69l513 323c24 16 46 7 28 -9l-415 -375l-16 -228c23 0 33 10 45 22l108 104l224 -165c41 -23 70 -11 81 38zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896
+s896 -401 896 -896z" />
+    <glyph glyph-name="circle" unicode="&#xf111;" 
+d="M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664" 
+d="M160 0h608v1152h-640v-1120c0 -17 15 -32 32 -32zM1536 32v1120h-640v-1152h608c17 0 32 15 32 32zM1664 1248v-1216c0 -88 -72 -160 -160 -160h-1344c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="zotero" unicode="&#xf309;" horiz-adv-x="1330" 
+d="M662 -127l-662 310v924l662 301l668 -301v-924zM314 152h723v221l-63 78h-275l338 379v218l-63 78h-601l-59 -82v-214h377l-352 -379l-25 -97v-202z" />
+    <glyph glyph-name="sign-out" unicode="&#xf08b;" horiz-adv-x="1568" 
+d="M640 96c0 -28 13 -96 -32 -96h-320c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h320c17 0 32 -15 32 -32c0 -28 13 -96 -32 -96h-320c-88 0 -160 -72 -160 -160v-704c0 -88 72 -160 160 -160h288c25 0 64 5 64 -32zM1568 640c0 -17 -7 -33 -19 -45l-544 -544
+c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="cube" unicode="&#xf1b2;" horiz-adv-x="1664" 
+d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768c0 -47 -26 -90 -67 -112l-704 -384c-19 -11 -40 -16 -61 -16s-42 5 -61 16l-704 384c-41 22 -67 65 -67 112v768c0 54 34 102 84 120l704 256c14 5 29 8 44 8s30 -3 44 -8
+l704 -256c50 -18 84 -66 84 -120z" />
+    <glyph glyph-name="mars-stroke-v" unicode="&#xf22a;" horiz-adv-x="1152" 
+d="M640 892c288 -32 512 -276 512 -572c0 -340 -294 -611 -642 -572c-270 30 -486 253 -508 525c-25 317 207 586 510 619v132h-160c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h160v165l-92 -92c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l202 201c25 25 65 25 90 0
+l202 -201c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-92 92v-165h160c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-160v-132zM576 -128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="file-text" unicode="&#xf15c;" 
+d="M1468 1060c10 -10 19 -22 28 -36h-472v472c14 -9 26 -18 36 -28zM992 896h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544c0 -53 43 -96 96 -96zM1152 160v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64
+c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32z" />
+    <glyph glyph-name="amazon" unicode="&#xf270;" horiz-adv-x="1736" 
+d="M1523 60c30 15 53 -8 22 -48s-280 -268 -698 -268s-738 286 -836 404c-27 31 4 45 22 33c293 -178 751 -471 1490 -121zM1730 175c15 -20 0 -108 -26 -172c-26 -63 -64 -107 -85 -124c-22 -18 -38 -11 -26 15s77 186 51 220c-26 33 -148 17 -192 13c-43 -4 -52 -8 -56 1
+c-9 23 87 62 150 70c63 7 164 3 184 -23zM1336 618c0 -110 129 -211 129 -211l-227 -224c-89 84 -156 154 -156 154c-10 10 -18 22 -25 33c-181 -283 -734 -265 -734 173c0 408 483 463 678 470v127c0 27 10 150 -142 150c0 0 -152 0 -217 -198l-294 27
+c0 197 187 417 539 417c351 0 449 -228 449 -329v-589zM664 597c0 -203 337 -251 337 69v162c-135 -4 -337 -42 -337 -231z" />
+    <glyph glyph-name="smile-o" unicode="&#xf118;" 
+d="M1134 461c-50 -161 -197 -269 -366 -269s-316 108 -366 269c-11 34 8 69 42 80c33 11 69 -8 80 -42c33 -107 132 -179 244 -179s211 72 244 179c11 34 47 53 81 42c33 -11 52 -46 41 -80zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="compass" unicode="&#xf14e;" 
+d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="address-book" unicode="&#xf2b9;" horiz-adv-x="1664" 
+d="M1201 298c0 177 -43 374 -221 374c-55 -32 -130 -87 -212 -87s-157 55 -212 87c-178 0 -221 -197 -221 -374c0 -99 65 -170 145 -170h576c80 0 145 71 145 170zM1028 892c0 144 -117 260 -260 260s-260 -116 -260 -260c0 -143 117 -259 260 -259s260 116 260 259z
+M1664 352v-192c0 -18 -14 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160v-224h96c18 0 32 -14 32 -32v-192c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32v-192
+c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="list-ol" unicode="&#xf0cb;" horiz-adv-x="1777" 
+d="M366 -84c0 -110 -86 -172 -190 -172c-63 0 -127 21 -172 66l57 88c27 -25 68 -45 106 -45c35 0 72 17 72 57c0 56 -64 59 -105 56l-26 56c36 46 69 97 112 136v1c-32 0 -65 -2 -97 -2v-53h-106v152h333v-88l-95 -115c67 -16 111 -68 111 -137zM368 543v-159h-362
+c-3 18 -6 36 -6 54c0 185 226 213 226 297c0 34 -21 52 -54 52c-35 0 -64 -30 -81 -58l-85 59c33 69 101 108 177 108c93 0 173 -55 173 -154c0 -148 -217 -181 -220 -259h127v60h105zM1777 224v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32
+h1216c17 0 32 -14 32 -32zM369 1123v-99h-335v99h107c0 81 1 162 1 243v12h-2c-11 -22 -31 -37 -50 -54l-71 76l136 127h106v-404h108zM1777 736v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32h1216c17 0 32 -14 32 -32zM1777 1248v-192
+c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 17 14 32 32 32h1216c17 0 32 -15 32 -32z" />
+    <glyph glyph-name="stumbleupon-circle" unicode="&#xf1a3;" 
+d="M866 697l90 27v62c0 106 -90 191 -196 191s-196 -84 -196 -190v-283c0 -26 -21 -47 -47 -47s-46 21 -46 47v120h-151v-122c0 -109 88 -196 197 -196c107 0 196 86 196 193v280c0 26 21 47 47 47c25 0 46 -21 46 -47v-54zM1199 502v122h-150v-126c0 -26 -21 -47 -47 -47
+c-25 0 -46 21 -46 47v123l-90 -26l-60 28v-123c0 -107 89 -194 197 -194s196 87 196 196zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="slack" unicode="&#xf198;" 
+d="M837 508l-205 69l66 197l205 -68zM979 1344c528 -158 651 -387 493 -915s-387 -651 -915 -493s-651 387 -493 915s387 651 915 493zM1256 671v0c13 41 -9 87 -51 101l-99 34l34 103c13 42 -8 88 -50 101c-47 13 -88 -14 -101 -51l-34 -103l-206 69l35 103
+c13 42 -9 88 -51 101c-47 13 -87 -13 -100 -50l-35 -104c-100 33 -111 39 -126 37c-32 -1 -63 -22 -74 -54c-13 -42 8 -88 50 -101l100 -33l-66 -198c-100 33 -112 39 -127 37c-32 -1 -63 -23 -74 -55c-13 -42 9 -87 51 -100l99 -34l-34 -103c-13 -42 8 -88 50 -101
+s88 9 101 51l34 103l206 -69l-35 -103c-13 -42 9 -88 51 -101s87 8 100 50l35 104l99 -34c42 -13 88 9 101 51s-8 88 -50 101l-100 33l66 198l100 -34c42 -13 88 9 101 51z" />
+    <glyph glyph-name="qq" unicode="&#xf1d6;" horiz-adv-x="1756" 
+d="M252 730c-7 17 -8 34 -8 52c0 28 18 73 35 94c-1 26 10 79 30 96c0 185 143 418 310 498c103 49 211 66 324 66c88 0 184 -21 266 -55c235 -99 288 -283 338 -518l1 -5c29 -44 55 -96 55 -150c0 -27 -18 -54 -18 -78c0 -2 6 -10 7 -12c86 -127 164 -265 164 -423
+c0 -35 -19 -157 -75 -157c-39 0 -82 95 -96 121c-1 1 -2 1 -3 1l-5 -4c-32 -83 -67 -161 -132 -223c57 -55 149 -50 166 -145c-5 -11 -3 -23 -11 -34c-57 -86 -210 -97 -302 -97c-122 0 -221 32 -336 66c-24 7 -60 3 -86 6c-61 -67 -210 -85 -296 -85c-76 0 -370 5 -370 135
+c0 56 12 72 51 108c31 6 54 23 90 25c5 0 9 1 14 2c1 1 2 1 2 4l-2 3c-69 16 -166 190 -181 262l-5 3c-7 0 -10 -15 -12 -20c-22 -51 -74 -106 -132 -112h-1c-8 0 -5 8 -11 10c-14 33 -23 63 -23 100c0 200 96 348 252 466z" />
+    <glyph glyph-name="audio-description" unicode="&#xf29e;" horiz-adv-x="2304" 
+d="M504 542h171l-1 265zM1530 641c0 111 -64 193 -197 193h-54v-388h52c125 0 199 91 199 195zM956 1018l1 -756c0 -19 -15 -34 -33 -34h-216c-18 0 -33 15 -33 34v62h-291l-55 -81c-6 -9 -17 -15 -28 -15h-267c-28 0 -44 31 -27 53l556 757c6 9 16 14 27 14h332
+c19 0 34 -15 34 -34zM1783 641c0 -263 -192 -413 -450 -413h-270c-19 0 -34 15 -34 34v756c0 19 15 34 34 34h268c260 0 452 -148 452 -411zM1939 640c0 0 4 -260 -148 -413h-51c136 162 139 414 139 414s2 198 -135 410h43c148 -169 152 -411 152 -411zM2123 640
+c0 0 4 -260 -149 -413h-51c136 162 139 414 139 414s2 198 -134 410h43c148 -169 152 -411 152 -411zM2304 640c0 0 4 -260 -148 -413h-51c135 162 138 414 138 414s2 198 -134 410h43c148 -169 152 -411 152 -411z" />
+    <glyph glyph-name="stop-circle-o" unicode="&#xf28e;" 
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h576c18 0 32 -14 32 -32v-576
+c0 -18 -14 -32 -32 -32h-576z" />
+    <glyph glyph-name="grav" unicode="&#xf2d6;" horiz-adv-x="1794" 
+d="M1291 1060c-32 36 -84 -25 -56 -58c27 -33 116 -9 56 58zM895 814c-11 -11 -28 -11 -38 0c-11 10 -11 27 0 37c10 11 27 11 38 0c10 -10 10 -27 0 -37zM1060 740l-35 -35c-16 -17 -43 -17 -60 0l-38 38c-16 17 -16 43 0 60l35 35c16 16 43 16 60 0l38 -39
+c16 -16 16 -43 0 -59zM951 870c-10 -10 -27 -10 -38 0c-10 11 -10 28 0 38c11 11 28 11 38 0c11 -10 11 -27 0 -38zM1354 968c-45 -85 -163 -120 -235 -69c-72 52 -122 156 -43 246c78 90 147 62 216 -3c43 -41 106 -90 62 -174zM1555 486c9 58 -74 60 -92 93
+c-49 87 -100 133 -197 110c42 29 85 22 85 22c1 23 0 47 -34 90c14 45 1 81 1 81c56 31 97 88 105 156c13 112 -68 214 -180 227c-80 9 -158 -28 -196 -93c-84 -145 5 -256 81 -294c-52 5 -124 43 -145 124c-24 93 10 180 32 222c0 0 -16 21 -29 32c0 0 -50 0 -89 -19
+c43 55 91 52 91 52c0 23 -2 54 -13 78c-20 41 -90 47 -117 -15c1 3 2 5 4 7c-18 -43 -4 -202 61 -315c-9 -5 -33 -22 -47 -36c-78 -35 -203 -218 -203 -218c-102 -39 -280 -184 -256 -288c1 -11 5 -20 11 -27c-10 -8 -20 -18 -30 -30c-43 -50 -19 -127 64 -88
+c57 26 108 73 132 110c0 0 -21 18 -60 16c100 24 125 34 168 33c29 -14 29 124 29 124c0 53 -8 112 -40 150c45 -44 105 -118 101 -219c-3 -66 -55 -83 -55 -83c-33 -60 -156 -238 -110 -383c0 0 -35 54 -37 80c-63 -70 -169 -189 -90 -233c96 -53 394 320 457 514
+c125 75 200 171 231 235c80 -159 346 -343 367 -215zM1794 640c0 -495 -402 -896 -897 -896s-897 401 -897 896s402 896 897 896s897 -401 897 -896z" />
+    <glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="1919" 
+d="M1901 621c25 -25 25 -65 0 -90l-294 -294c-12 -13 -33 -13 -45 0l-45 45c-13 12 -13 33 0 45l185 185h-294v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-132c-32 -288 -276 -512 -572 -512c-340 0 -611 294 -572 642c30 270 253 486 525 508
+c317 25 586 -207 619 -510h132v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224h294l-185 185c-13 12 -13 33 0 45l45 45c12 13 33 13 45 0zM576 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1020" 
+d="M1020 399v-367c0 -18 -14 -32 -32 -32h-956c-18 0 -32 14 -32 32v150c0 17 14 32 32 32h97v383h-95c-18 0 -32 14 -32 32v131c0 18 14 32 32 32h95v223c0 228 184 393 438 393c200 0 329 -120 335 -125c12 -11 13 -30 3 -43l-103 -127c-6 -7 -13 -11 -22 -12
+c-8 -1 -17 2 -23 7c-1 1 -87 69 -188 69c-113 0 -189 -68 -189 -170v-215h305c18 0 32 -14 32 -32v-131c0 -18 -14 -32 -32 -32h-305v-379h414v181c0 18 14 32 32 32h162c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="shaarli-o" unicode="&#xf2f6;" horiz-adv-x="1630" 
+d="M859 1408v0c107 0 210 -67 264 -160c40 -69 61 -156 75 -252c115 -20 212 -47 288 -96c78 -50 134 -137 140 -229l3 -20c7 -91 -25 -191 -100 -245c-18 -13 -36 -22 -55 -30c11 -19 25 -36 34 -56c37 -84 43 -181 12 -267v-1h-1c-26 -70 -82 -133 -154 -160
+s-147 -24 -224 -5c-9 3 -17 5 -25 10c-94 47 -174 101 -239 162c-25 -34 -53 -66 -86 -91c-75 -57 -168 -84 -266 -84c-31 0 -62 -4 -90 5c-82 25 -155 68 -199 141s-44 164 -20 243l1 3l1 3l21 58c-57 19 -109 45 -151 86c-67 66 -95 165 -86 259h-1c0 1 1 2 1 3v7h1
+c8 100 75 193 165 238c87 43 192 57 317 60c6 109 27 206 84 283c66 89 177 135 290 135zM859 1288c-173 0 -260 -116 -260 -348c12 -37 -17 -59 -88 -67c-255 -1 -386 -66 -391 -196c-18 -141 68 -226 258 -253h19l-67 -186c-36 -117 11 -195 141 -235h53
+c155 0 260 80 314 239h37c58 -90 155 -170 294 -239c126 -31 206 -1 239 90c42 114 -12 238 -162 370c196 -10 285 53 264 190c3 117 -118 194 -360 231h-56c-21 269 -99 404 -235 404zM819 1097v0c3 0 6 0 9 -1c50 1 76 -51 76 -156v-188c22 -23 49 -31 84 -25
+c226 0 335 -27 327 -81c10 -49 -110 -65 -361 -48c-12 0 -14 -15 -6 -43c74 -85 140 -151 198 -200c59 -47 69 -92 31 -133c-32 -22 -74 -5 -127 49c-51 54 -117 122 -197 207c-18 24 -40 24 -67 0c-113 -230 -200 -325 -262 -288c-46 24 -23 105 68 242l54 116
+c12 33 -72 45 -250 36c-51 3 -77 22 -77 58c0 37 24 57 71 58l304 17c31 0 48 27 52 81l4 107c-1 131 22 195 69 192z" />
+    <glyph glyph-name="ban" unicode="&#xf05e;" 
+d="M1312 643c0 109 -32 210 -87 295l-754 -753c86 -56 188 -89 297 -89c300 0 544 245 544 547zM313 344l755 754c-86 58 -189 91 -300 91c-300 0 -544 -245 -544 -546c0 -111 33 -213 89 -299zM1536 643c0 -426 -344 -771 -768 -771s-768 345 -768 771
+c0 425 344 770 768 770s768 -345 768 -770z" />
+    <glyph glyph-name="fighter-jet" unicode="&#xf0fb;" horiz-adv-x="1920" 
+d="M1920 576c0 0 0 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69c35 0 64 -7 64 -16s-29 -16 -64 -16h-320v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h320c35 0 64 -7 64 -16
+s-29 -16 -64 -16h-69l293 -352h64l224 -64l352 -32c288 -64 288 -96 288 -96z" />
+    <glyph glyph-name="space-shuttle" unicode="&#xf197;" horiz-adv-x="2176" 
+d="M620 416c-69 -40 -163 -64 -268 -64h-128v64h-64c-18 0 -32 36 -32 80c0 18 3 35 7 49c-77 2 -135 15 -135 31s58 29 135 31c-4 14 -7 31 -7 49c0 44 14 80 32 80h64v64h128c105 0 199 -24 268 -64h1113c74 -13 141 -24 187 -32c192 -32 256 -96 256 -128
+s-64 -96 -256 -128c-46 -8 -113 -19 -187 -32h-1113zM1739 668c32 -22 53 -55 53 -92s-21 -70 -53 -92l81 -30c41 29 68 73 68 122s-27 93 -68 122zM625 400h1015s-217 -38 -456 -80c-128 0 -224 -96 -224 -96l-288 -288s-97 -64 -160 -64h-96l-93 464h29
+c102 0 199 23 273 64zM352 816h-29l93 464h96c65 0 128 -32 160 -64l288 -288s96 -96 224 -96c239 -42 456 -80 456 -80h-1015c-74 41 -171 64 -273 64z" />
+    <glyph glyph-name="matrix-org" unicode="&#xf313;" 
+d="M40 1373v-1466h106v-35h-146v1536h146v-35h-106zM491 908v-74h2c20 28 44 51 72 66c28 16 60 23 96 23c35 0 66 -7 95 -20s50 -37 65 -71c16 24 38 46 66 64s61 27 99 27c29 0 56 -4 81 -11s45 -18 63 -34s31 -35 41 -60s15 -56 15 -91v-367h-150v311c0 18 -1 36 -2 52
+s-6 30 -12 42s-16 22 -28 29s-29 10 -50 10s-38 -4 -51 -12s-24 -19 -31 -32s-13 -27 -15 -44s-4 -34 -4 -51v-305h-150v307c0 16 0 33 -1 49s-4 30 -9 44c-5 13 -15 24 -27 32s-31 12 -55 12c-7 0 -16 -2 -28 -5s-23 -9 -34 -18s-20 -21 -28 -38s-11 -38 -11 -65v-318h-151
+v548h142zM1496 -93v1466h-106v35h146v-1536h-146v35h106z" />
+    <glyph glyph-name="steam" unicode="&#xf1b6;" horiz-adv-x="1792" 
+d="M1582 954c0 -135 -110 -244 -244 -244c-135 0 -244 109 -244 244s109 244 244 244c134 0 244 -109 244 -244zM812 212c0 139 -111 250 -250 250c-18 0 -36 -2 -54 -6l104 -42c102 -41 152 -156 111 -258s-157 -152 -259 -110c-41 16 -82 33 -123 49
+c42 -79 125 -133 221 -133c139 0 250 111 250 250zM1642 953c0 168 -137 305 -305 305c-169 0 -306 -137 -306 -305c0 -169 137 -305 306 -305c168 0 305 136 305 305zM1792 953c0 -252 -204 -455 -455 -455l-437 -319c-16 -172 -162 -307 -338 -307
+c-162 0 -299 115 -332 268l-230 92v429l389 -157c51 31 110 48 173 48c12 0 24 -1 35 -2l284 407c2 249 206 451 456 451c251 0 455 -204 455 -455z" />
+    <glyph glyph-name="bars" unicode="&#xf0c9;" 
+d="M1536 192v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 704v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 1216v-128
+c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="lightbulb-o" unicode="&#xf0eb;" horiz-adv-x="1024" 
+d="M736 960c0 -17 -15 -32 -32 -32s-32 15 -32 32c0 69 -107 96 -160 96c-17 0 -32 15 -32 32s15 32 32 32c93 0 224 -49 224 -160zM896 960c0 200 -203 320 -384 320s-384 -120 -384 -320c0 -64 26 -131 68 -180c19 -22 41 -43 61 -66c71 -85 131 -185 141 -298h228
+c10 113 70 213 141 298c20 23 42 44 61 66c42 49 68 116 68 180zM1024 960c0 -103 -34 -192 -103 -268s-160 -183 -168 -290c29 -17 47 -49 47 -82c0 -24 -9 -47 -25 -64c16 -17 25 -40 25 -64c0 -33 -17 -63 -45 -81c8 -14 13 -31 13 -47c0 -65 -51 -96 -109 -96
+c-26 -58 -84 -96 -147 -96s-121 38 -147 96c-58 0 -109 31 -109 96c0 16 5 33 13 47c-28 18 -45 48 -45 81c0 24 9 47 25 64c-16 17 -25 40 -25 64c0 33 18 65 47 82c-8 107 -99 214 -168 290s-103 165 -103 268c0 272 259 448 512 448s512 -176 512 -448z" />
+    <glyph glyph-name="map-pin" unicode="&#xf276;" horiz-adv-x="1024" 
+d="M512 448c44 0 87 5 128 15v-655c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v655c41 -10 84 -15 128 -15zM512 1536c283 0 512 -229 512 -512s-229 -512 -512 -512s-512 229 -512 512s229 512 512 512zM512 1312c18 0 32 14 32 32s-14 32 -32 32
+c-194 0 -352 -158 -352 -352c0 -18 14 -32 32 -32s32 14 32 32c0 159 129 288 288 288z" />
+    <glyph glyph-name="circle-o" unicode="&#xf10c;" 
+d="M768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="contao" unicode="&#xf26d;" horiz-adv-x="1748" 
+d="M116 1408h197c-47 -43 -89 -93 -126 -149c-155 -239 -92 -501 -32 -783c49 -229 90 -447 233 -604h-272c-64 0 -116 52 -116 116v1304c0 64 52 116 116 116zM1324 1408h308c64 0 116 -52 116 -116v-1304c0 -64 -52 -116 -116 -116h-178c132 131 207 321 196 565
+l-469 -101c-6 -111 -44 -218 -196 -250c-85 -18 -155 2 -199 40c-54 46 -97 106 -169 448c-73 343 -58 415 -28 479c25 52 81 100 165 118c153 32 231 -51 282 -150l468 100c-46 118 -107 214 -180 287z" />
+    <glyph glyph-name="vine" unicode="&#xf1ca;" horiz-adv-x="1458" 
+d="M1458 709v-198c-70 -16 -140 -23 -198 -23c-140 -294 -391 -546 -475 -593c-53 -30 -103 -32 -162 3c-103 62 -493 382 -623 1388h283c71 -604 245 -914 436 -1146c106 106 208 247 287 406c-189 96 -304 307 -304 553c0 249 143 437 388 437c238 0 368 -148 368 -403
+c0 -95 -20 -203 -58 -286c0 0 -176 -35 -241 78c13 43 31 117 31 184c0 119 -43 177 -108 177c-69 0 -117 -65 -117 -190c0 -255 162 -401 372 -401c37 0 79 4 121 14z" />
+    <glyph glyph-name="align-center" unicode="&#xf037;" horiz-adv-x="1792" 
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1664 960v-128c0 -35 -29 -64 -64 -64
+h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h640c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1202" 
+d="M1111 896c13 -133 -43 -213 -131 -258c146 -35 238 -122 220 -317c-23 -243 -203 -308 -461 -322v-255h-154v251c-39 0 -80 0 -122 1v-252h-154v255c-36 0 -72 1 -109 1h-200l31 183c113 -2 111 0 111 0c43 0 55 31 58 51v402h16c-6 1 -12 1 -16 1v287
+c-6 32 -26 68 -89 68c0 0 2 2 -111 0v164l212 -1c31 0 64 0 97 1v252h154v-247c41 1 82 2 122 2v245h154v-252c198 -17 355 -78 372 -260zM896 351c0 198 -326 169 -430 169v-338c104 0 430 -22 430 169zM825 827c0 181 -272 154 -359 154v-307c87 0 359 -20 359 153z" />
+    <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664" 
+d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
+M512 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288
+c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128
+c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920" 
+d="M1280 32c0 -17 -15 -32 -32 -32h-960c-37 0 -32 39 -32 64v576h-192c-35 0 -64 29 -64 64c0 15 5 30 15 41l320 384c12 14 30 22 49 22s37 -8 49 -22l320 -384c10 -11 15 -26 15 -41c0 -35 -29 -64 -64 -64h-192v-384h576c9 0 19 -4 25 -11l160 -192c4 -6 7 -14 7 -21z
+M1920 448c0 -15 -5 -30 -15 -41l-320 -384c-12 -14 -30 -23 -49 -23s-37 9 -49 23l-320 384c-10 11 -15 26 -15 41c0 35 29 64 64 64h192v384h-576c-9 0 -19 4 -25 12l-160 192c-4 5 -7 13 -7 20c0 17 15 32 32 32h960c37 0 32 -39 32 -64v-576h192c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="hourglass" unicode="&#xf254;" 
+d="M1504 -64c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472zM130 0c19 337 294 518 478 640c-184 122 -459 303 -478 640h1276c-19 -337 -294 -518 -478 -640c184 -122 459 -303 478 -640h-1276zM1504 1536
+c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472z" />
+    <glyph glyph-name="paint-brush" unicode="&#xf1fc;" horiz-adv-x="1790" 
+d="M1615 1536c91 0 175 -68 175 -163c0 -53 -21 -104 -45 -151c-78 -148 -340 -637 -465 -752c-61 -57 -133 -91 -218 -91c-169 0 -307 144 -307 312c0 80 33 158 92 212l638 579c35 32 81 54 130 54zM706 502c52 -101 147 -177 257 -206l1 -71c6 -285 -192 -481 -478 -481
+c-339 0 -486 270 -486 577c37 -25 166 -128 208 -128c25 0 46 14 55 37c85 222 218 262 443 272z" />
+    <glyph glyph-name="viadeo-square" unicode="&#xf2aa;" 
+d="M1050 495c0 50 -9 100 -28 147c-26 -16 -55 -28 -85 -34c16 -36 22 -75 22 -114c0 -154 -114 -280 -270 -280c-157 0 -271 126 -271 280c0 151 115 284 271 284c34 0 67 -6 98 -19c3 30 13 60 27 87c-40 14 -82 21 -125 21c-207 0 -361 -167 -361 -372s155 -367 361 -367
+s361 163 361 367zM872 850c25 -72 38 -148 38 -225c0 -173 -71 -317 -219 -411h-10c-14 0 -28 1 -42 3c199 76 235 377 235 562c0 23 0 47 -2 71zM872 850c-5 97 -60 247 -142 302c56 -95 106 -197 142 -302zM1207 955c0 61 -15 123 -51 174c-24 -51 -69 -94 -124 -109
+c-79 -22 -149 -59 -149 -153c0 -27 9 -54 24 -77c95 22 196 92 236 182c-6 -80 -155 -177 -213 -209c29 -29 67 -52 110 -52c73 0 125 65 150 127c12 30 17 86 17 117zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
+h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1899" 
+d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
+l715 -714c23 -24 37 -57 37 -91zM1899 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37c-52 0 -78 24 -112 59l470 470c23 23 37 56 37 90s-14 67 -37 91l-715 714c-51 51 -148 91 -219 91h224c71 0 168 -40 219 -91l715 -714c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="minus-square-o" unicode="&#xf147;" horiz-adv-x="1408" 
+d="M1152 736v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832
+c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="user-circle" unicode="&#xf2bd;" horiz-adv-x="1792" 
+d="M1523 197c-26 187 -102 353 -272 376c-88 -96 -215 -157 -355 -157s-267 61 -355 157c-170 -23 -246 -189 -272 -376c139 -196 368 -325 627 -325s488 129 627 325zM1280 896c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1792 640
+c0 -493 -400 -896 -896 -896c-495 0 -896 402 -896 896c0 495 401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="thumbs-o-down" unicode="&#xf088;" 
+d="M256 1088c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 512c0 37 -28 127 -75 128c21 24 35 71 35 103c0 47 -19 87 -53 119c12 21 18 45 18 69c0 46 -23 103 -65 126c3 18 5 37 5 56c0 117 -74 167 -185 167h-128c-118 0 -232 -35 -342 -73
+c-54 -19 -146 -55 -202 -55h-32v-640h32c79 0 198 -171 243 -229c25 -31 49 -62 77 -91c97 -102 64 -255 128 -320c137 0 160 75 160 192c0 118 -96 203 -96 320h352c67 0 128 60 128 128zM1536 511c0 -138 -118 -255 -256 -255h-176c30 -62 48 -122 48 -192
+c0 -66 -4 -126 -35 -186c-49 -97 -149 -134 -253 -134c-34 0 -66 14 -90 37c-100 98 -69 256 -128 321c-38 40 -73 83 -107 127c-30 39 -98 129 -137 155h-274c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c28 0 109 30 138 40c144 50 269 88 423 88h112
+c182 0 313 -108 312 -295v-5c39 -50 60 -114 60 -178c0 -14 -1 -29 -3 -43c25 -44 38 -94 38 -144c0 -23 -3 -47 -9 -69c32 -48 49 -105 49 -163z" />
+    <glyph glyph-name="subscript" unicode="&#xf12c;" horiz-adv-x="1531" 
+d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
+l-184 -267l204 -296h109zM1531 -50v-206h-514l-4 27c-1 15 -3 33 -3 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-39 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 34 103 65 188 65c145 0 246 -85 246 -218c0 -239 -332 -259 -346 -403
+h232v80h126z" />
+    <glyph glyph-name="flickr" unicode="&#xf16e;" 
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM698 640c0 117 -95 212 -212 212s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212zM1262 640c0 117 -95 212 -212 212
+s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212z" />
+    <glyph glyph-name="cc-amex" unicode="&#xf1f3;" horiz-adv-x="2304" 
+d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453c0 24 -18 33 -40 33h-84v-69h83c23 0 41 11 41 36zM1475 457c0 25 -22 29 -42 29h-82v-61h81c22 0 43 5 43 32zM1197 923c0 25 -22 29 -42 29h-82v-60h81
+c22 0 43 5 43 31zM1656 854h89l-44 108zM699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453c0 -109 -119 -91 -193 -91v-91h-126l-80 90l-83 -90h-256v271h260l80 -89l82 89h207
+c61 0 109 -21 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229c0 -73 -59 -134 -132 -134h-2040c-73 0 -132 61 -132 134v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1c9 0 10 -7 10 -14v-86h279v23
+c65 -34 154 -23 222 -23l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249c-37 0 -76 -4 -109 -22v22h-172v-22c-20 18 -47 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391c0 73 59 134 132 134h2040c73 0 132 -61 132 -134
+v-678h-120c-28 0 -58 -5 -81 -22v22h-177c-25 0 -59 -4 -78 -22v22h-316v-22c-24 17 -59 22 -87 22h-209v-22c-21 20 -64 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21c30 0 61 1 90 13v-102h174v99h8c10 0 12 -1 12 -12v-87h529c29 0 65 6 88 24
+v-24h168c32 0 66 3 95 17zM1546 469c0 -30 -16 -60 -46 -72c36 -13 43 -37 43 -72v-54h-65v45c0 46 -15 54 -58 54h-69v-99h-65v271h154c51 0 106 -9 106 -73zM1269 936c0 -31 -17 -61 -46 -73c37 -13 43 -36 43 -72v-53h-65c-1 58 14 98 -58 98h-70v-98h-64v271l153 -1
+c52 0 107 -8 107 -72zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357c0 -64 -44 -86 -102 -86h-126v58h126c16 0 34 4 34 25c0 58 -167 -22 -167 107c0 55 42 81 92 81h130v-57h-119c-17 0 -36 -3 -36 -25
+c0 -59 168 27 168 -103zM2304 407v-101c-19 -28 -56 -35 -88 -35h-125v58h125c16 0 33 5 33 25c0 57 -167 -22 -167 107c0 55 43 81 93 81h129v-57h-118c-18 0 -36 -3 -36 -25c0 -48 113 1 154 -53zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75
+c-89 0 -129 46 -129 133c0 91 41 138 133 138h63v-59c-68 1 -130 16 -130 -77c0 -46 11 -78 63 -78h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
+    <glyph glyph-name="reddit" unicode="&#xf1a1;" horiz-adv-x="1792" 
+d="M1095 369c9 -9 9 -23 0 -31c-57 -57 -167 -62 -199 -62s-142 5 -199 62c-9 8 -9 22 0 31c8 8 22 8 30 0c36 -37 114 -49 169 -49s132 12 169 49c8 8 22 8 30 0zM788 550c0 -49 -40 -89 -89 -89c-50 0 -90 40 -90 89c0 50 40 90 90 90c49 0 89 -40 89 -90zM1183 550
+c0 -49 -40 -89 -90 -89c-49 0 -89 40 -89 89c0 50 40 90 89 90c50 0 90 -40 90 -90zM1434 670c0 66 -54 119 -120 119c-34 0 -64 -14 -86 -36c-81 56 -190 92 -311 96l63 283l200 -45c0 -49 40 -89 89 -89c50 0 90 41 90 90s-40 90 -90 90c-35 0 -65 -21 -80 -50l-221 49
+c-11 3 -22 -5 -25 -16l-69 -312c-120 -5 -228 -41 -309 -97c-22 23 -53 37 -87 37c-66 0 -120 -53 -120 -119c0 -48 28 -88 68 -108c-4 -18 -6 -37 -6 -56c0 -190 214 -344 477 -344c264 0 478 154 478 344c0 19 -2 39 -7 57c39 20 66 60 66 107zM1792 640
+c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="times-circle" unicode="&#xf057;" 
+d="M1149 414c0 17 -7 33 -19 45l-181 181l181 181c12 12 19 28 19 45s-7 34 -19 46l-90 90c-12 12 -29 19 -46 19s-33 -7 -45 -19l-181 -181l-181 181c-12 12 -28 19 -45 19s-34 -7 -46 -19l-90 -90c-12 -12 -19 -29 -19 -46s7 -33 19 -45l181 -181l-181 -181
+c-12 -12 -19 -28 -19 -45s7 -34 19 -46l90 -90c12 -12 29 -19 46 -19s33 7 45 19l181 181l181 -181c12 -12 28 -19 45 -19s34 7 46 19l90 90c12 12 19 29 19 46zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="2304" 
+d="M651 539c0 -52 -42 -94 -93 -94c-52 0 -94 42 -94 94c0 51 42 93 94 93c51 0 93 -42 93 -93zM1805 540c0 -52 -42 -94 -94 -94s-94 42 -94 94s42 93 94 93s94 -41 94 -93zM765 539c0 106 -87 193 -193 193c-107 0 -193 -87 -193 -193c0 -107 86 -193 193 -193
+c106 0 193 86 193 193zM1918 540c0 106 -86 193 -193 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 193 86 193 193zM850 539c0 -154 -124 -279 -278 -279s-279 125 -279 279c0 153 125 278 279 278s278 -125 278 -278zM2004 540
+c0 -154 -125 -278 -279 -278c-153 0 -278 124 -278 278s125 278 278 278c154 0 279 -124 279 -278zM1040 537c0 255 -207 462 -462 462c-254 0 -461 -207 -461 -462s207 -462 461 -462c255 0 462 207 462 462zM1708 1110c-165 72 -351 111 -556 111s-409 -39 -573 -110
+c317 -1 573 -257 573 -574c0 311 247 564 556 573zM2187 537c0 255 -206 462 -461 462s-462 -207 -462 -462s207 -462 462 -462s461 207 461 462zM1921 1103h383c-60 -70 -104 -164 -115 -229c69 -95 110 -211 110 -337c0 -317 -257 -573 -573 -573c-180 0 -340 82 -445 211
+c0 0 -47 -56 -129 -179c-14 29 -85 130 -128 180c-105 -130 -266 -212 -446 -212c-316 0 -573 256 -573 573c0 126 41 242 110 337c-11 65 -55 159 -115 229h365c196 131 481 213 787 213s573 -82 769 -213z" />
+    <glyph glyph-name="sort-amount-asc" unicode="&#xf160;" horiz-adv-x="1760" 
+d="M704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1760 -32v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32
+v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1568 480v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640c18 0 32 -14 32 -32zM1376 992v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448
+c18 0 32 -14 32 -32zM1184 1504v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="renren" unicode="&#xf18b;" 
+d="M1133 -34c-109 -60 -234 -94 -368 -94c-133 0 -258 34 -367 94c177 112 320 281 367 479c48 -198 191 -367 368 -479zM638 1394v-485c0 -342 -189 -636 -457 -766c-113 134 -181 306 -181 495c0 380 276 695 638 756zM1536 638c0 -189 -68 -361 -181 -495
+c-268 130 -457 424 -457 766v485c362 -61 638 -376 638 -756z" />
+    <glyph glyph-name="key-modern" unicode="&#xf2f7;" horiz-adv-x="1792" 
+d="M546 1536v0c139 1 278 -52 383 -158c142 -141 187 -343 137 -525l726 -726v-319c0 -35 -29 -64 -64 -64h-300l-45 45l135 226l-46 45l-225 -135l-45 46l134 225l-45 45l-225 -134l-46 45l135 225l-45 46l-243 -139l-186 186c-182 -50 -382 -5 -524 136
+c-211 212 -209 556 4 770c107 106 246 159 385 160zM405 1290v0c-41 0 -82 -16 -113 -47c-63 -63 -63 -163 0 -226s164 -63 227 0s63 163 0 226c-31 31 -73 47 -114 47z" />
+    <glyph glyph-name="arrow-circle-o-right" unicode="&#xf18e;" 
+d="M1152 640c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-352c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h352v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
+s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="pinterest-p" unicode="&#xf231;" horiz-adv-x="1280" 
+d="M0 939c0 369 338 597 680 597c314 0 600 -216 600 -547c0 -311 -159 -656 -513 -656c-84 0 -190 42 -231 120c-76 -301 -70 -346 -238 -576l-14 -5l-9 10c-6 63 -15 125 -15 188c0 204 94 499 140 697c-25 51 -32 113 -32 169c0 101 70 229 184 229
+c84 0 129 -64 129 -143c0 -130 -88 -252 -88 -378c0 -86 71 -146 154 -146c230 0 301 332 301 509c0 237 -168 366 -395 366c-264 0 -468 -190 -468 -458c0 -129 79 -195 79 -226c0 -26 -19 -118 -52 -118c-5 0 -12 2 -17 3c-143 43 -195 234 -195 365z" />
+    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408" 
+d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
+    <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1683" 
+d="M832 1024c0 106 -86 192 -192 192s-192 -86 -192 -192c0 -29 7 -57 19 -83c-26 12 -54 19 -83 19c-106 0 -192 -86 -192 -192s86 -192 192 -192s192 86 192 192c0 29 -7 57 -19 83c26 -12 54 -19 83 -19c106 0 192 86 192 192zM1683 320c0 -23 -92 -115 -115 -115
+c-26 0 -107 94 -128 115l-96 -96l220 -220c18 -18 28 -43 28 -68c0 -56 -64 -120 -120 -120c-25 0 -50 10 -68 28l-671 671c-105 -78 -233 -131 -365 -131c-218 0 -368 151 -368 368c0 328 328 656 656 656c217 0 368 -150 368 -368c0 -132 -53 -260 -131 -365l355 -355
+l96 96c-21 21 -115 102 -115 128c0 23 92 115 115 115c8 0 17 -4 23 -10c37 -37 316 -300 316 -329z" />
+    <glyph glyph-name="syncthing" unicode="&#xf311;" 
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM774 1254c-337 0 -611 -274 -611 -611c0 -10 0 -28 1 -38c-17 -10 -32 -23 -42 -41c-33 -56 -14 -128 41 -161c18 -10 37 -15 56 -16c97 -210 309 -355 555 -355
+c108 0 210 28 298 78c16 -11 35 -19 56 -21c65 -5 122 42 129 107v10c0 14 -5 36 -11 49c87 105 139 241 139 388c0 57 -8 112 -23 164c14 13 25 30 32 49c21 61 -12 128 -73 149c-12 4 -26 6 -38 6v0c-6 0 -15 0 -21 -1c-112 148 -289 244 -488 244zM774 1175v0
+c171 0 323 -79 420 -204c-10 -11 -17 -24 -22 -39c-9 -27 -8 -55 1 -80l-224 -186c-18 11 -39 16 -60 16c-22 0 -44 -5 -63 -18c-26 -16 -43 -42 -50 -70l-447 -41c-10 21 -25 39 -46 52c-13 8 -27 12 -41 14c0 8 -1 16 -1 24c0 295 238 532 533 532zM1224 792
+c6 -3 15 -7 21 -9c15 -5 29 -8 44 -7c11 -43 17 -87 17 -133c0 -125 -42 -240 -114 -331c-13 7 -28 11 -43 13c-15 1 -28 0 -42 -4l-122 175c23 32 29 73 15 110zM783 516c2 -4 5 -11 8 -15c29 -44 81 -63 129 -50l122 -175c-12 -16 -19 -37 -21 -59v-9c0 -10 2 -26 5 -35
+c-75 -40 -161 -63 -252 -63c-211 0 -394 123 -480 301c10 8 24 22 30 33c5 8 11 22 13 31z" />
+    <glyph glyph-name="picture-o" unicode="&#xf03e;" horiz-adv-x="1920" 
+d="M640 960c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32v1216c0 17 -15 32 -32 32z
+M1920 1248v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="list-alt" unicode="&#xf022;" horiz-adv-x="1792" 
+d="M384 352v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 608v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 864v-64c0 -17 -15 -32 -32 -32h-64
+c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1536 352v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1536 608v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960
+c17 0 32 -15 32 -32zM1536 864v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1664 160v832c0 17 -15 32 -32 32h-1472c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 1248v-1088
+c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="fort-awesome" unicode="&#xf286;" horiz-adv-x="1664" 
+d="M640 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1152 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1664 496v-752h-640v320c0 106 -86 192 -192 192
+s-192 -86 -192 -192v-320h-640v752c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v624c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 21 28 16 41 16v391c-19 9 -32 29 -32 50c0 30 25 55 55 55s55 -25 55 -55
+c0 -21 -13 -41 -32 -50v-17c27 6 55 10 83 10c41 0 80 -15 114 -15c31 0 66 15 84 15c9 0 16 -7 16 -16v-210c0 -24 -81 -28 -97 -28c-37 0 -72 15 -110 15c-30 0 -61 -5 -90 -12v-133c13 0 41 5 41 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112
+c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-624h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16z" />
+    <glyph glyph-name="c" unicode="&#xf31c;" horiz-adv-x="1404" 
+d="M996 819c0 0 -23 211 -232 217s-317 -157 -317 -392s119 -423 323 -423s226 235 226 235l391 -24s22 -211 -141 -373s-364 -188 -504 -187s-334 -2 -522 190s-220 379 -220 563s36 427 259 611c152 125 306 172 460 172c643 0 685 -593 685 -593l-408 4v0z" />
+    <glyph glyph-name="commenting" unicode="&#xf27a;" horiz-adv-x="1792" 
+d="M640 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128z
+M1792 640c0 -354 -401 -640 -896 -640c-73 0 -144 6 -211 18c-114 -114 -263 -192 -435 -229c-27 -5 -56 -10 -86 -13c-16 -2 -31 9 -35 24c-4 16 8 26 20 37c63 59 138 106 164 317c-191 117 -313 291 -313 486c0 354 401 640 896 640s896 -286 896 -640z" />
+    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152" 
+d="M640 128c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1024 288v960c0 17 -15 32 -32 32h-832c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h832c17 0 32 15 32 32zM1152 1248v-1088c0 -88 -72 -160 -160 -160h-832c-88 0 -160 72 -160 160v1088
+c0 88 72 160 160 160h832c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="credit-card" unicode="&#xf09d;" horiz-adv-x="1920" 
+d="M1760 1408c88 0 160 -72 160 -160v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600zM160 1280c-17 0 -32 -15 -32 -32v-224h1664v224c0 17 -15 32 -32 32h-1600zM1760 0c17 0 32 15 32 32v608h-1664v-608
+c0 -17 15 -32 32 -32h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408" 
+d="M1408 800v-192c0 -53 -43 -96 -96 -96h-1216c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h1216c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="unlock-alt" unicode="&#xf13e;" horiz-adv-x="1152" 
+d="M1056 768c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v320c0 247 201 448 448 448s448 -201 448 -448c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64c0 141 -115 256 -256 256s-256 -115 -256 -256v-320h736z
+" />
+    <glyph glyph-name="ils" unicode="&#xf20b;" horiz-adv-x="1376" 
+d="M992 912v-496c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v496c0 150 -122 272 -272 272h-272v-1152c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v1344c0 18 14 32 32 32h464c274 0 496 -222 496 -496zM1376 1376v-880c0 -274 -222 -496 -496 -496h-464
+c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-768h272c150 0 272 122 272 272v880c0 18 14 32 32 32h160c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="cog" unicode="&#xf013;" 
+d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1536 749v-222c0 -15 -12 -33 -28 -36l-185 -28c-11 -32 -23 -62 -39 -91c34 -49 70 -93 107 -138c6 -7 10 -16 10 -25s-3 -16 -9 -23c-24 -32 -159 -179 -193 -179
+c-9 0 -18 4 -26 9l-138 108c-29 -15 -60 -28 -91 -38c-7 -61 -13 -126 -29 -186c-4 -16 -18 -28 -36 -28h-222c-18 0 -34 13 -36 30l-28 184c-31 10 -61 22 -90 37l-141 -107c-7 -6 -16 -9 -25 -9s-18 4 -25 11c-53 48 -123 110 -165 168c-5 7 -7 15 -7 23c0 9 3 16 8 23
+c34 46 71 90 105 137c-17 32 -31 65 -41 99l-183 27c-17 3 -29 19 -29 36v222c0 15 12 33 27 36l186 28c10 32 23 62 39 92c-34 48 -70 93 -107 138c-6 7 -10 15 -10 24s4 16 9 23c24 33 159 179 193 179c9 0 18 -4 26 -10l138 -107c29 15 60 28 91 38c7 61 13 126 29 186
+c4 16 18 28 36 28h222c18 0 34 -13 36 -30l28 -184c31 -10 61 -22 90 -37l142 107c6 6 15 9 24 9s18 -4 25 -10c53 -49 123 -111 165 -170c5 -6 7 -14 7 -22c0 -9 -3 -16 -8 -23c-34 -46 -71 -90 -105 -137c17 -32 31 -65 41 -98l183 -28c17 -3 29 -19 29 -36z" />
+    <glyph glyph-name="arrow-right" unicode="&#xf061;" horiz-adv-x="1472" 
+d="M1472 576c0 -34 -13 -67 -37 -91l-651 -651c-24 -23 -57 -37 -91 -37s-66 14 -90 37l-75 75c-24 24 -38 57 -38 91s14 67 38 91l293 293h-704c-72 0 -117 60 -117 128v128c0 68 45 128 117 128h704l-293 294c-24 23 -38 56 -38 90s14 67 38 90l75 75c24 24 56 38 90 38
+s67 -14 91 -38l651 -651c24 -23 37 -56 37 -90z" />
+    <glyph glyph-name="cc-paypal" unicode="&#xf1f4;" horiz-adv-x="2304" 
+d="M745 630c0 -49 -39 -86 -88 -86c-37 0 -64 21 -64 60c0 49 38 88 87 88c37 0 65 -23 65 -62zM1530 779c0 -60 -36 -72 -88 -72l-32 -1l17 107c1 7 6 11 13 11h18c34 0 72 -2 72 -45zM1881 630c0 -49 -39 -86 -87 -86c-37 0 -65 21 -65 60c0 49 38 88 87 88
+c37 0 65 -23 65 -62zM513 801c0 84 -65 112 -139 112h-160c-10 0 -20 -8 -21 -19l-65 -408c-1 -8 5 -16 13 -16h76c11 0 21 8 22 19l18 110c4 29 53 19 72 19c114 0 184 68 184 183zM822 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-23 34 -57 40 -95 40
+c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c36 0 81 16 106 44c-2 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM1269 752c0 7 -6 14 -13 14h-77c-7 0 -14 -4 -18 -10l-106 -156l-44 150c-3 9 -12 16 -22 16h-75c-7 0 -13 -7 -13 -14
+c0 -5 78 -231 85 -252c-11 -15 -82 -108 -82 -120c0 -7 6 -13 13 -13h77c7 0 14 4 18 10l255 368c2 2 2 4 2 7zM1649 801c0 84 -65 112 -139 112h-159c-11 0 -21 -8 -22 -19l-65 -408c-1 -8 5 -16 13 -16h82c8 0 14 6 16 13l18 116c4 29 53 19 72 19c114 0 184 68 184 183z
+M1958 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-22 34 -56 40 -95 40c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c37 0 82 16 106 44c-1 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM2176 898v1c0 8 -6 14 -13 14h-74
+c-6 0 -12 -5 -13 -11l-65 -416l-1 -2c0 -7 6 -14 14 -14h66c10 0 20 8 21 19zM392 764c-8 -51 -42 -57 -86 -57l-33 -1l17 107c1 7 7 11 13 11h19c45 0 79 -6 70 -60zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
+h2048c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="birthday-cake" unicode="&#xf1fd;" horiz-adv-x="1792" 
+d="M1792 128v-384h-1792v384c98 0 150 44 191 79c34 30 57 49 108 49s73 -19 108 -49c41 -35 92 -79 191 -79c98 0 149 44 191 79c34 30 56 49 107 49s74 -19 108 -49c41 -35 93 -79 191 -79s150 44 191 79c34 30 57 49 108 49c50 0 73 -19 107 -49c41 -35 93 -79 191 -79z
+M1792 448v-192c-51 0 -73 19 -108 49c-41 35 -92 79 -190 79c-99 0 -150 -44 -191 -79c-35 -30 -57 -49 -108 -49s-74 19 -108 49c-41 35 -92 79 -191 79c-98 0 -149 -44 -191 -79c-34 -30 -56 -49 -107 -49s-74 19 -108 49c-41 35 -93 79 -191 79c-99 0 -150 -44 -191 -79
+c-34 -30 -57 -49 -108 -49v192c0 106 86 192 192 192h64v448h256v-448h256v448h256v-448h256v448h256v-448h64c106 0 192 -86 192 -192zM512 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1024 1312
+c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1536 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224z" />
+    <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792" 
+d="M1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22c-22 -2 -43 14 -48 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -286 896 -640z" />
+    <glyph glyph-name="bell" unicode="&#xf0f3;" horiz-adv-x="1664" 
+d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM182 128h1300c-179 202 -266 476 -266 832c0 129 -122 320 -384 320s-384 -191 -384 -320c0 -356 -87 -630 -266 -832zM1664 128
+c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441
+c0 -483 172 -707 320 -832z" />
+    <glyph glyph-name="cc" unicode="&#xf20a;" horiz-adv-x="2048" 
+d="M785 528h207c-19 -211 -140 -339 -313 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-203c-7 85 -49 134 -117 134c-75 0 -120 -80 -120 -238c0 -115 20 -223 129 -223c69 0 101 60 109 139zM1497 528h206
+c-19 -211 -139 -339 -312 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-204c-6 85 -49 134 -116 134c-75 0 -120 -80 -120 -238c0 -115 19 -223 128 -223c69 0 102 60 110 139zM1856 647c0 268 -14 384 -76 468c-13 17 -34 28 -51 40
+c-63 46 -356 63 -697 63s-648 -17 -710 -63c-18 -13 -40 -23 -53 -40c-62 -83 -75 -200 -75 -468c0 -269 14 -385 75 -468c14 -19 35 -27 53 -41c62 -46 369 -65 710 -65s634 18 697 65c17 13 39 21 51 41c63 82 76 199 76 468zM2048 1408v-1536h-2048v1536h2048z" />
+    <glyph glyph-name="get-pocket" unicode="&#xf265;" horiz-adv-x="1720" 
+d="M1565 1408c87 0 155 -70 155 -156v-519c0 -479 -383 -861 -859 -861c-478 0 -861 382 -861 861v519c0 85 71 156 156 156h1409zM861 344c30 0 60 12 82 33l404 388c23 22 37 53 37 85c0 65 -53 118 -118 118c-31 0 -60 -12 -82 -33l-323 -310l-323 310
+c-22 21 -51 33 -81 33c-65 0 -118 -53 -118 -118c0 -32 13 -63 36 -85l405 -388c21 -21 51 -33 81 -33z" />
+    <glyph glyph-name="bell-slash-o" unicode="&#xf1f7;" horiz-adv-x="2019" 
+d="M1026 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM489 315l877 760c-50 105 -166 205 -356 205c-262 0 -384 -191 -384 -320c0 -256 -45 -470 -137 -645zM1842 128c0 -70 -58 -128 -128 -128
+h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255l149 129h757c-111 125 -186 277 -227 459l111 97c51 -298 182 -458 298 -556zM1928 1520l84 -96c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66
+c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240l418 363c13 11 34 10 45 -4z" />
+    <glyph glyph-name="header" unicode="&#xf1dc;" horiz-adv-x="1668" 
+d="M1620 -128c-88 0 -177 7 -266 7c-88 0 -176 -7 -264 -7c-34 0 -50 37 -50 66c0 89 100 51 152 85c33 21 33 105 33 140l-1 391c0 11 0 21 -1 31c-16 5 -34 4 -50 4h-675c-17 0 -35 1 -51 -4c-1 -10 -1 -20 -1 -31l-1 -371c0 -38 0 -142 37 -164c52 -32 170 13 170 -77
+c0 -30 -14 -70 -49 -70c-93 0 -186 7 -278 7c-85 0 -170 -7 -255 -7c-33 0 -48 38 -48 66c0 87 92 51 141 85c32 22 33 108 33 143l-1 57v813c0 48 7 202 -38 229c-50 31 -157 -17 -157 73c0 29 13 70 48 70c92 0 185 -7 277 -7c84 0 169 7 253 7c36 0 50 -40 50 -70
+c0 -86 -99 -44 -148 -75c-35 -21 -35 -124 -35 -160l1 -320c0 -11 0 -21 1 -32c13 -3 26 -3 39 -3h699c12 0 25 0 38 3c1 11 1 21 1 32l1 320c0 37 0 139 -35 160c-50 30 -150 -10 -150 75c0 30 14 70 50 70c88 0 176 -7 264 -7c86 0 172 7 258 7c36 0 50 -40 50 -70
+c0 -87 -103 -43 -153 -74c-34 -22 -35 -125 -35 -161l1 -943c0 -33 2 -120 34 -140c51 -32 159 9 159 -78c0 -29 -13 -70 -48 -70z" />
+    <glyph glyph-name="bluetooth-b" unicode="&#xf294;" horiz-adv-x="944" 
+d="M556 113l173 172l-173 172v-344zM556 823l173 172l-173 172v-344zM588 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
+    <glyph glyph-name="linux" unicode="&#xf17c;" horiz-adv-x="1523" 
+d="M657 1125c-20 -2 -13 -20 -24 -20c-10 -1 -8 22 24 20zM744 1111c-10 -3 -11 16 -29 11c29 13 39 -7 29 -11zM393 684c-9 3 -7 -15 -16 -29c-7 -13 -25 -23 -11 -25c5 -1 19 11 25 25c5 17 10 26 2 29zM1248 325c0 18 -39 35 -55 42c27 90 15 126 -3 211
+c-14 64 -73 151 -119 178c12 -10 34 -39 57 -83c40 -75 80 -186 54 -278c-10 -36 -34 -41 -50 -42c-70 -8 -29 84 -58 209c-33 140 -67 150 -75 161c-41 182 -86 164 -99 232c-11 61 53 111 -34 128c-27 5 -65 32 -80 34s-23 101 33 104c55 4 65 -62 55 -88
+c-16 -26 1 -36 28 -27c22 7 8 65 13 73c-14 84 -49 96 -85 103c-138 -11 -76 -163 -90 -149c-20 21 -78 2 -78 15c1 78 -25 123 -61 124c-40 1 -56 -55 -58 -87c-3 -30 17 -93 32 -88c10 3 27 23 9 22c-9 0 -23 22 -25 48c-1 26 9 52 43 51c39 -1 39 -79 35 -82
+c-13 -9 -29 -26 -31 -29c-13 -21 -38 -27 -48 -36c-17 -18 -21 -38 -8 -45c46 -26 31 -56 95 -58c42 -2 73 6 102 15c22 7 93 22 108 48c7 11 15 11 20 8c10 -5 12 -24 -13 -30c-35 -10 -70 -29 -102 -41c-31 -13 -41 -18 -70 -23c-66 -12 -115 24 -71 -19
+c15 -14 29 -23 67 -22c84 3 177 104 186 59c2 -10 -26 -22 -48 -33c-78 -38 -133 -114 -183 -88c-45 24 -90 135 -89 85c1 -77 -101 -145 -54 -233c-31 -8 -100 -155 -110 -231c-6 -44 4 -98 -7 -128c-15 -44 -83 42 -61 147c4 18 0 22 -5 13c-27 -49 -12 -118 10 -166
+c9 -21 32 -30 49 -48c35 -40 173 -142 197 -167c31 -29 22 -97 -42 -104c33 -62 65 -68 64 -169c38 20 23 64 7 92c-11 20 -25 29 -22 34c2 3 22 20 33 7c34 -38 98 -45 166 -36c69 8 143 32 177 87c16 26 27 35 34 30c8 -4 11 -22 10 -52c-1 -32 -14 -65 -23 -92
+c-9 -31 -12 -52 18 -53c8 56 24 111 28 167c5 64 -41 182 9 241c13 16 29 18 51 18c3 80 126 74 167 41zM620 1152c4 25 -8 43 -14 45c-12 3 -10 -15 -4 -13c4 0 9 -6 7 -15c-2 -12 -1 -20 8 -20c1 0 3 0 3 3zM1039 955c-4 19 -18 12 -34 22c-19 12 -23 32 -30 25
+c-21 -23 26 -71 46 -75c12 -2 21 14 18 28zM861 1168c1 24 -20 36 -25 35c-13 -1 -9 -7 -3 -9c8 -2 16 -16 18 -31c0 -2 10 2 10 5zM915 1401c1 5 -12 11 -21 18c-8 8 -16 15 -24 15c-20 -2 -10 -23 -13 -33c-4 -11 -19 -20 -9 -28c9 -7 15 11 34 18c5 2 28 -1 33 10z
+M1480 60c123 -76 -46 -139 -119 -176c-57 -29 -133 -93 -161 -120c-21 -20 -108 -30 -157 -5c-57 29 -27 75 -115 78c-44 1 -87 1 -130 1c-38 -1 -76 -3 -115 -4c-132 -3 -145 -88 -230 -85c-58 2 -131 48 -257 74c-88 18 -173 23 -191 62s22 83 25 121c3 51 -38 120 -8 146
+c26 23 81 6 117 26c38 22 54 39 54 86c14 -48 -1 -87 -32 -106c-19 -12 -54 -18 -83 -15c-23 2 -37 -1 -43 -10c-9 -11 -6 -31 5 -57s24 -43 22 -75c-1 -32 -37 -70 -31 -97c2 -10 12 -19 37 -26c40 -11 113 -22 184 -39c79 -20 161 -56 212 -49c152 21 65 184 41 223
+c-129 202 -214 334 -282 282c-17 -14 -18 34 -17 53c3 66 36 90 56 141c38 97 67 208 125 265c43 56 111 147 124 195c-11 104 -14 214 -16 310c-2 103 14 193 130 256c28 15 65 21 104 21c69 1 146 -19 195 -55c78 -58 127 -181 121 -269c-4 -69 8 -140 30 -214
+c26 -87 67 -148 133 -218c79 -84 141 -249 159 -354c16 -98 -6 -159 -27 -162c-32 -5 -52 -106 -152 -102c-64 3 -70 41 -88 74c-29 51 -58 35 -69 -19c-6 -27 -2 -67 7 -97c18 -63 12 -122 1 -195c-21 -138 97 -164 176 -98c78 65 95 75 193 109c149 51 99 96 19 123
+c-72 24 -75 145 -49 168c6 -130 74 -149 102 -167z" />
+    <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664" 
+d="M512 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 160v192c0 18 -14 32 -32 32h-320
+c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192
+c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32z
+M1536 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1664 1248v-1088c0 -88 -72 -160 -160 -160
+h-1344c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="handshake-o" unicode="&#xf2b5;" horiz-adv-x="2304" 
+d="M192 384c84 0 84 128 0 128s-84 -128 0 -128zM1665 442c-79 103 -156 208 -246 302l-125 -140c-110 -125 -307 -122 -414 6c-76 92 -76 224 2 315l177 206c-62 32 -137 21 -204 21c-59 0 -116 -24 -158 -66l-158 -158h-155v-544c44 0 84 6 119 -28l297 -292
+c61 -59 140 -111 227 -111c45 0 93 15 125 47c75 -26 162 16 185 93c48 -4 92 11 127 44c23 21 53 63 50 96c9 -9 31 -10 43 -10c119 0 181 125 108 219zM1824 384h96v512h-93l-157 180c-42 48 -105 76 -169 76h-167c-56 0 -110 -25 -146 -67l-209 -243
+c-37 -44 -37 -106 -1 -150c57 -68 162 -69 221 -3l193 218c46 51 130 3 109 -62c38 -44 79 -87 116 -131c50 -62 98 -127 147 -190c31 -40 54 -88 60 -140zM2112 384c84 0 84 128 0 128s-84 -128 0 -128zM2304 960v-640c0 -35 -29 -64 -64 -64h-434
+c-36 -87 -115 -145 -207 -158c-43 -63 -109 -111 -183 -127c-55 -70 -144 -112 -233 -106c-165 -93 -351 -12 -474 109l-287 282h-358c-35 0 -64 29 -64 64v672c0 35 29 64 64 64h421c116 116 196 224 370 224h117c65 0 128 -20 181 -56c53 36 116 56 181 56h167
+c190 0 269 -124 384 -256h355c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1664" 
+d="M462 142c0 -70 -57 -128 -128 -128c-70 0 -128 58 -128 128c0 71 58 128 128 128c71 0 128 -57 128 -128zM960 -64c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM256 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1458 142c0 -70 -58 -128 -128 -128c-71 0 -128 58 -128 128c0 71 57 128 128 128c70 0 128 -57 128 -128zM494 1138c0 -88 -72 -160 -160 -160s-160 72 -160 160s72 160 160 160s160 -72 160 -160zM1664 640c0 -71 -57 -128 -128 -128s-128 57 -128 128
+s57 128 128 128s128 -57 128 -128zM1024 1344c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1554 1138c0 -124 -101 -224 -224 -224c-124 0 -224 100 -224 224c0 123 100 224 224 224c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="snapchat" unicode="&#xf2ab;" 
+d="M1279 388c0 14 -8 24 -22 27c-91 20 -160 83 -198 167c-3 8 -7 16 -7 25c0 45 125 36 125 100c0 27 -33 44 -57 44c-23 0 -41 -16 -63 -16c-4 0 -8 1 -12 2c2 38 5 76 5 114c0 35 -2 83 -17 114c-48 104 -141 165 -255 165c-125 0 -220 -46 -275 -165
+c-15 -31 -17 -79 -17 -114c0 -38 3 -76 5 -114c-4 -2 -9 -2 -14 -2c-23 0 -41 15 -62 15c-25 0 -56 -16 -56 -44c0 -62 125 -54 125 -99c0 -9 -4 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -46 106 -63 137 -68c9 -24 5 -66 41 -66c25 0 50 9 77 9
+c105 0 133 -95 255 -95c127 0 151 95 257 95c27 0 52 -8 78 -8c35 0 31 42 40 65c31 5 137 22 137 68zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024" 
+d="M512 384c0 25 -8 49 -20 69c-13 20 -66 88 -87 155c-3 11 -13 16 -21 16s-18 -5 -21 -16c-21 -67 -74 -135 -87 -155c-12 -20 -20 -44 -20 -69c0 -71 57 -128 128 -128s128 57 128 128zM1024 512c0 -283 -229 -512 -512 -512s-512 229 -512 512c0 101 31 195 81 275
+c51 80 265 351 346 621c13 43 53 64 85 64s73 -21 85 -64c81 -270 295 -541 346 -621s81 -174 81 -275z" />
+    <glyph glyph-name="connectdevelop" unicode="&#xf20e;" horiz-adv-x="2048" 
+d="M2048 641c0 -28 -20 -51 -46 -56l-205 -356c2 -6 3 -12 3 -18c0 -27 -19 -50 -45 -55l-193 -337c2 -5 3 -10 3 -16c0 -31 -25 -57 -57 -57c-16 0 -31 7 -41 18h-400c-10 -12 -26 -20 -43 -20s-33 8 -43 20h-399c-10 -12 -25 -20 -43 -20c-31 0 -57 25 -57 57
+c0 7 2 14 4 20l-193 335c-26 5 -45 28 -45 55c0 7 1 12 3 18l-206 356c-26 6 -45 29 -45 56c0 28 20 51 47 56l199 344c0 2 -1 4 -1 6c0 23 14 42 34 51l209 363c-2 5 -4 12 -4 18c0 32 26 57 57 57c18 0 33 -8 44 -21h396c10 13 25 21 43 21s33 -8 43 -21h398
+c11 13 26 21 44 21c31 0 57 -25 57 -57c0 -6 -2 -12 -4 -18l207 -358c30 -1 55 -26 55 -56c0 -10 -3 -19 -7 -27l187 -324c25 -5 44 -28 44 -55zM1063 -158h389l-342 354h-143l-342 -354h360c10 9 24 16 39 16s29 -7 39 -16zM112 654c1 -4 1 -8 1 -13s0 -10 -2 -15l208 -360
+c5 -1 10 -4 15 -6l188 199v347l-187 194c-9 -6 -19 -9 -29 -10zM986 1438h-388l190 -200l554 200h-280c-10 -10 -23 -16 -38 -16s-28 6 -38 16zM1689 226c1 4 3 8 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427
+l333 -343c4 2 8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6c9 -3 16 -7 22 -13zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177c2 -4 4 -8 5 -12zM358 1051c0 -1 1 -3 1 -4c0 -11 -3 -21 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314
+l-223 236zM556 1425l-4 -8v-264l205 74l-191 201c-3 -1 -6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018c-5 8 -8 18 -8 29v2
+l-216 376c-5 1 -9 3 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82zM1729 266l207 361c-1 5 -2 9 -2 14c0 6 2 11 3 16l-171 296l-129 -612l77 -82c5 3 10 5 15 7z" />
+    <glyph glyph-name="chrome" unicode="&#xf268;" horiz-adv-x="1792" 
+d="M893 1536c153 1 309 -38 451 -120c157 -91 276 -222 352 -372l-742 39c-210 12 -410 -106 -479 -304l-276 424c172 214 430 332 694 333zM146 1131l337 -663c95 -187 296 -301 504 -262l-230 -451c-429 66 -757 437 -757 885c0 181 54 350 146 491zM1732 962
+c157 -404 0 -874 -388 -1098c-157 -91 -330 -128 -498 -119l405 623c115 177 113 408 -24 568zM896 942c167 0 302 -135 302 -302s-135 -302 -302 -302s-302 135 -302 302s135 302 302 302z" />
+    <glyph glyph-name="trademark" unicode="&#xf25c;" horiz-adv-x="1972" 
+d="M857 992v-117c0 -17 -15 -31 -32 -31h-298v-812c0 -18 -14 -32 -31 -32h-135c-18 0 -32 14 -32 32v812h-297c-18 0 -32 14 -32 31v117c0 18 14 32 32 32h793c17 0 32 -14 32 -32zM1895 995l77 -961c1 -9 -2 -17 -8 -24c-6 -6 -14 -10 -23 -10h-134c-16 0 -30 13 -31 29
+l-46 588l-189 -425c-5 -12 -16 -19 -29 -19h-120c-12 0 -23 7 -29 19l-188 427l-45 -590c-1 -16 -15 -29 -31 -29h-135c-9 0 -17 4 -23 10c-6 7 -9 15 -9 24l78 961c1 16 15 29 31 29h142c13 0 24 -8 29 -19l220 -520c7 -16 14 -34 20 -51c7 17 13 35 20 51l221 520
+c5 11 16 19 29 19h141c17 0 31 -13 32 -29z" />
+    <glyph glyph-name="align-right" unicode="&#xf038;" horiz-adv-x="1792" 
+d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1792 960v-128
+c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="1792" 
+d="M1070 358l306 564h-654l-306 -564h654zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="long-arrow-down" unicode="&#xf175;" horiz-adv-x="767" 
+d="M765 237c5 -12 3 -25 -5 -35l-350 -384c-6 -6 -14 -10 -23 -10s-18 4 -24 10l-355 384c-8 10 -10 23 -5 35c5 11 16 19 29 19h224v1248c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1248h224c13 0 24 -7 29 -19z" />
+    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1600" 
+d="M576 640v384h-256v-256c0 -71 57 -128 128 -128h128zM1600 192v-192h-1152v192l128 192h-128c-212 0 -384 172 -384 384v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
+    <glyph glyph-name="th-list" unicode="&#xf00b;" horiz-adv-x="1792" 
+d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-960
+c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
+h960c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="eraser" unicode="&#xf12d;" horiz-adv-x="1920" 
+d="M896 128l336 384h-768l-336 -384h768zM1909 1205c20 -46 12 -99 -21 -137l-896 -1024c-24 -28 -59 -44 -96 -44h-768c-50 0 -96 29 -117 75c-20 46 -12 99 21 137l896 1024c24 28 59 44 96 44h768c50 0 96 -29 117 -75z" />
+    <glyph glyph-name="codepen" unicode="&#xf1cb;" horiz-adv-x="1792" 
+d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
+c0 -25 -13 -50 -34 -64l-819 -546c-13 -8 -28 -13 -43 -13s-30 5 -43 13l-819 546c-21 14 -34 39 -34 64v546c0 25 13 50 34 64l819 546c13 8 28 13 43 13s30 -5 43 -13l819 -546c21 -14 34 -39 34 -64z" />
+    <glyph glyph-name="slideshare" unicode="&#xf1e7;" horiz-adv-x="1758" 
+d="M856 796c0 -111 -97 -202 -216 -202s-216 91 -216 202c0 112 97 202 216 202s216 -90 216 -202zM1358 796c0 -111 -96 -202 -216 -202c-119 0 -216 91 -216 202c0 112 97 202 216 202c120 0 216 -90 216 -202zM1583 616v667c0 115 -37 160 -143 160h-1112
+c-111 0 -142 -38 -142 -160v-673c237 -124 440 -102 551 -98c47 1 77 -8 95 -27c3 -3 6 -6 10 -9c21 -20 41 -36 61 -51c4 55 35 90 118 87c113 -5 321 -27 562 104zM1746 621c-64 -79 -186 -176 -372 -252c197 -671 -481 -778 -470 -434c0 -6 -1 185 -1 327
+c-15 3 -30 7 -48 11c0 -143 -1 -344 -1 -338c11 -344 -667 -237 -470 434c-186 76 -308 173 -372 252c-32 48 3 99 56 62c7 -5 15 -10 22 -15v694c0 96 72 174 161 174h1257c89 0 161 -78 161 -174v-694l21 15c53 37 88 -14 56 -62z" />
+    <glyph glyph-name="square-o" unicode="&#xf096;" horiz-adv-x="1408" 
+d="M1120 1280h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v832c0 88 -72 160 -160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="hourglass-start" unicode="&#xf251;" 
+d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -44 3 -87 9 -128h1006c6 41 9 84 9 128zM1280 -128c0 359 -198 624 -397 704h-230c-199 -80 -397 -345 -397 -704h1024z" />
+    <glyph glyph-name="superpowers" unicode="&#xf2dd;" horiz-adv-x="1792" 
+d="M1473 607c18 320 -227 585 -544 604c-315 19 -594 -221 -612 -538c-18 -320 227 -585 545 -604c315 -19 594 220 611 538zM1792 1536l-349 -348c159 -155 245 -371 231 -593c-22 -372 -308 -669 -675 -719l-999 -132l347 347c-159 155 -244 371 -231 593
+c23 373 308 670 676 720c333 44 667 88 1000 132z" />
+    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408" 
+d="M1408 -160v-64c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1152 896c0 -383 -448 -417 -448 -672c0 -70 35 -163 67 -224l-4 1l1 -1c-276 127 -512 302 -512 640c0 383 448 417 448 672c0 70 -35 163 -66 224l3 -1
+l-1 1c276 -127 512 -302 512 -640z" />
+    <glyph glyph-name="sellsy" unicode="&#xf213;" horiz-adv-x="2048" 
+d="M1500 165v733c0 28 -23 51 -50 51h-93c-27 0 -50 -23 -50 -51v-733c0 -27 23 -50 50 -50h93c27 0 50 23 50 50zM1216 165v531c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-531c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM924 165v429c0 27 -23 50 -50 50h-101
+c-27 0 -50 -23 -50 -50v-429c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM632 165v362c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-362c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM2048 311c0 -222 -181 -402 -402 -402h-1244c-221 0 -402 180 -402 402
+c0 155 91 297 231 363c-7 24 -10 49 -10 73c0 151 123 274 274 274c66 0 130 -24 180 -67c60 244 280 417 532 417c302 0 548 -246 548 -548c0 -41 -4 -82 -14 -122c180 -44 307 -206 307 -390z" />
+    <glyph glyph-name="fast-forward" unicode="&#xf050;" horiz-adv-x="1792" 
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678
+c-3 -7 -7 -13 -13 -19l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
+    <glyph glyph-name="bell-slash" unicode="&#xf1f6;" horiz-adv-x="2019" 
+d="M1544 684c51 -298 182 -458 298 -556c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255zM1010 -176c9 0 16 7 16 16s-7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176zM2012 1424
+c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240
+l418 363c13 11 34 10 45 -4z" />
+    <glyph glyph-name="cubes" unicode="&#xf1b3;" horiz-adv-x="2176" 
+d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416
+c0 -48 -27 -93 -71 -114l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-3 1 -5 2 -7 4c-2 -2 -4 -3 -7 -4l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-44 21 -71 66 -71 114v416c0 51 31 97 78 118l434 186v400c0 51 31 97 78 118l448 192
+c16 7 33 10 50 10s34 -3 50 -10l448 -192c47 -21 78 -67 78 -118v-400l434 -186c48 -21 78 -67 78 -118z" />
+    <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898" 
+d="M898 1066v-102c0 -18 -14 -32 -32 -32h-168c-31 -192 -178 -317 -405 -344c149 -159 308 -351 459 -536c8 -9 10 -23 4 -34c-5 -11 -16 -18 -29 -18h-195c-10 0 -19 4 -25 12c-161 193 -309 370 -498 571c-6 6 -9 14 -9 22v127c0 17 14 32 32 32h112
+c176 0 286 59 315 168h-427c-18 0 -32 14 -32 32v102c0 18 14 32 32 32h413c-38 75 -128 113 -268 113h-145c-18 0 -32 15 -32 32v133c0 18 14 32 32 32h832c18 0 32 -14 32 -32v-102c0 -18 -14 -32 -32 -32h-233c32 -41 53 -89 64 -144h171c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="hashtag" unicode="&#xf292;" horiz-adv-x="1728" 
+d="M959 512l64 256h-254l-64 -256h254zM1727 1016l-56 -224c-4 -14 -16 -24 -31 -24h-327l-64 -256h311c10 0 19 -5 25 -12c6 -8 9 -18 6 -28l-56 -224c-3 -14 -16 -24 -31 -24h-327l-81 -328c-4 -14 -17 -24 -31 -24h-224c-10 0 -20 5 -26 12c-6 8 -8 18 -6 28l78 312h-254
+l-81 -328c-4 -14 -17 -24 -31 -24h-225c-9 0 -19 5 -25 12c-6 8 -8 18 -6 28l78 312h-311c-10 0 -19 5 -25 12c-6 8 -8 18 -6 28l56 224c4 14 16 24 31 24h327l64 256h-311c-10 0 -19 5 -25 12c-6 8 -9 18 -6 28l56 224c3 14 16 24 31 24h327l81 328c4 14 17 24 32 24h224
+c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h254l81 328c4 14 17 24 32 24h224c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h311c10 0 19 -5 25 -12c6 -8 8 -18 6 -28z" />
+    <glyph glyph-name="file-text-o" unicode="&#xf0f6;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM384 736c0 18 14 32 32 32h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64zM1120 512c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704zM1120 256c18 0 32 -14 32 -32
+v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704z" />
+    <glyph glyph-name="nextcloud" unicode="&#xf306;" horiz-adv-x="1792" 
+d="M896 1049c225 0 409 -184 409 -409s-184 -409 -409 -409s-409 184 -409 409s184 409 409 409zM896 891c-139 0 -251 -112 -251 -251s112 -251 251 -251s251 112 251 251s-112 251 -251 251zM265 905c146 0 265 -119 265 -265s-119 -265 -265 -265s-265 119 -265 265
+s119 265 265 265zM265 748c-60 0 -107 -48 -107 -108s47 -108 107 -108s108 48 108 108s-48 108 -108 108zM1527 905c146 0 265 -119 265 -265s-119 -265 -265 -265s-265 119 -265 265s119 265 265 265zM1527 748c-60 0 -108 -48 -108 -108s48 -108 108 -108s107 48 107 108
+s-47 108 -107 108z" />
+    <glyph glyph-name="hand-o-left" unicode="&#xf0a5;" horiz-adv-x="1792" 
+d="M1376 128h32v640h-32c-106 0 -177 90 -241 163c-41 46 -79 92 -112 145c-14 22 -26 45 -38 68s-62 136 -89 136c-85 0 -160 -32 -160 -128c0 -128 96 -193 96 -256h-576c-67 0 -128 -60 -128 -128c0 -69 59 -128 128 -128h331c-21 -24 -35 -71 -35 -103
+c0 -47 19 -87 53 -119c-12 -21 -18 -45 -18 -69c0 -46 23 -103 65 -126c-3 -18 -4 -37 -4 -56c0 -118 73 -167 184 -167c199 0 369 128 544 128zM1664 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 768v-640c0 -71 -57 -128 -128 -128h-288
+c-63 0 -162 -37 -223 -59c-102 -37 -207 -69 -317 -69c-184 0 -318 104 -317 295l1 5c-40 50 -61 114 -61 178c0 14 1 29 3 43c-21 37 -34 77 -37 119h-169c-140 0 -256 117 -256 257c0 138 118 255 256 255h374c-15 41 -22 84 -22 128c0 169 129 256 288 256
+c134 0 177 -171 235 -264c30 -47 64 -88 100 -129c29 -33 97 -119 145 -119h288c71 0 128 -57 128 -128z" />
+    <glyph glyph-name="vimeo" unicode="&#xf27d;" horiz-adv-x="1628" 
+d="M1627 1018c-7 -158 -118 -375 -332 -651c-222 -287 -408 -431 -562 -431c-95 0 -175 88 -240 263c-44 160 -88 321 -132 482c-48 175 -101 262 -157 262c-12 0 -54 -25 -127 -76l-77 98c80 71 159 143 238 212c106 94 187 141 241 146c127 12 204 -74 234 -259
+c31 -200 54 -325 66 -373c37 -166 76 -249 120 -249c34 0 85 53 154 161c68 108 104 190 109 246c9 93 -27 139 -109 139c-39 0 -79 -9 -121 -26c80 262 233 389 459 382c167 -5 246 -114 236 -326z" />
+    <glyph glyph-name="mastodon-alt" unicode="&#xf2e2;" 
+d="M766 1408h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 45 -330 45c0 -18 1 -36 3 -52c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -135s-105 -57 -292 -67
+c-103 -6 -230 3 -379 42c-323 85 -380 430 -388 779c-3 104 -1 201 -1 283c0 357 235 462 235 462c118 54 320 77 531 79v0zM350 839c-64 0 -115 -52 -115 -116s51 -115 115 -115s116 51 116 115s-52 116 -116 116v0zM768 839c-64 0 -116 -52 -116 -116s52 -115 116 -115
+s116 51 116 115s-52 116 -116 116v0zM1186 839c-64 0 -116 -52 -116 -116s52 -115 116 -115s115 51 115 115s-51 116 -115 116v0z" />
+    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792" 
+d="M1760 640c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1728zM483 704c-19 24 -36 51 -51 80c-32 65 -48 128 -48 188c0 122 45 224 134 309s220 127 393 127c38 0 93 -7 167 -19c44 -8 103 -24 177 -48
+c7 -26 14 -66 21 -118c9 -79 14 -140 14 -183c0 -14 -2 -29 -5 -45l-12 -3l-84 6l-14 2c-34 101 -69 169 -103 205c-59 61 -130 91 -210 91c-76 0 -137 -20 -182 -59s-67 -88 -67 -146c0 -49 22 -95 66 -140s137 -88 279 -129c48 -14 105 -36 173 -66c36 -17 68 -34 95 -52
+h-743zM990 448h411c5 -28 7 -59 7 -92c0 -72 -13 -143 -41 -212c-15 -37 -38 -71 -71 -104c-24 -23 -60 -50 -109 -81c-50 -30 -100 -53 -153 -66c-53 -14 -120 -21 -203 -21c-55 0 -121 2 -195 23l-140 40c-39 11 -62 20 -72 28c-4 4 -8 11 -8 22v13c0 8 2 60 -2 156
+c-2 50 2 85 2 105v44l102 2c37 -85 54 -136 65 -154c24 -39 51 -70 80 -94s64 -43 105 -57c40 -15 85 -22 132 -22c42 0 89 9 139 27c51 17 92 46 122 86c31 40 47 83 47 129c0 56 -27 108 -81 157c-22 19 -68 43 -137 71z" />
+    <glyph glyph-name="ravelry" unicode="&#xf2d9;" horiz-adv-x="2080" 
+d="M1095 -197c-4 1 -7 2 -11 4c0 0 -329 193 -440 505c-37 6 -115 24 -175 37c87 -283 329 -499 626 -546zM454 409l168 -28c-57 171 -64 366 -64 366c-67 -65 -103 -154 -121 -224c3 -39 8 -77 17 -114zM564 1018c-31 -46 -56 -96 -77 -148c33 35 60 58 74 68
+c-2 30 3 80 3 80zM2001 584c0 436 -352 790 -784 790c-200 0 -382 -76 -521 -201c-21 -41 -35 -93 -45 -160c213 181 593 136 593 136c95 -4 84 -88 83 -114c-346 29 -516 -70 -684 -213c0 0 33 -320 109 -450c438 -20 771 218 771 218c42 30 79 33 87 -19
+c6 -42 9 -99 -39 -121c-146 -68 -307 -111 -467 -134c-104 -15 -162 -19 -317 -16c148 -344 518 -438 518 -438c116 -19 204 -4 263 15c256 130 433 398 433 707zM2075 621c-7 -68 -18 -147 -40 -212c-90 -267 -215 -441 -500 -600c-26 -18 -54 -35 -82 -44
+c-51 -18 -106 -22 -163 -16c-24 -2 -48 -3 -73 -3c-381 0 -703 260 -800 615c-3 0 -6 1 -9 1c-23 -180 110 -423 110 -423s8 -12 54 -82c-255 135 -262 533 -262 533c-61 23 -273 95 -310 154c0 0 166 -91 309 -109c-1 1 2 32 2 32c9 122 51 217 94 290
+c28 137 90 261 176 365c15 62 39 136 81 214c18 34 35 56 81 77c304 142 604 178 912 18c295 -154 455 -476 420 -810z" />
+    <glyph glyph-name="code-fork" unicode="&#xf126;" horiz-adv-x="1024" 
+d="M288 64c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM288 1216c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM928 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1024 1088c0 -71 -39 -133 -96 -166
+c-3 -361 -259 -441 -429 -495c-159 -50 -211 -74 -211 -171v-26c57 -33 96 -95 96 -166c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 71 39 133 96 166v820c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192c0 -71 -39 -133 -96 -166v-497
+c51 25 105 42 154 57c186 59 292 103 294 312c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192z" />
+    <glyph glyph-name="hand-o-right" unicode="&#xf0a4;" horiz-adv-x="1792" 
+d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 768c0 68 -61 128 -128 128h-576c0 63 96 128 96 256c0 96 -75 128 -160 128c-28 0 -79 -116 -90 -139c-12 -22 -24 -44 -37 -65c-33 -53 -71 -99 -112 -145c-64 -73 -135 -163 -241 -163
+h-32v-640h32c175 0 346 -128 540 -128c112 0 189 47 189 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103h331c69 0 128 59 128 128zM1792 769c0 -140 -116 -257 -256 -257h-169c-3 -42 -16 -82 -37 -119
+c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300c-112 0 -218 31 -322 69c-61 22 -160 59 -223 59h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c48 0 116 86 145 119c36 41 70 82 100 129c58 93 101 264 235 264
+c159 0 288 -87 288 -256c0 -44 -7 -87 -22 -128h374c138 0 256 -117 256 -255z" />
+    <glyph glyph-name="object-group" unicode="&#xf247;" horiz-adv-x="2048" 
+d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
+h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
+    <glyph glyph-name="wikidata" unicode="&#xf31a;" horiz-adv-x="2048" 
+d="M0 1264h76v-1264h-76v1264zM152 1264h227v-1264h-227v1264zM455 1264h228v-1264h-228v1264zM759 1264h75v-1264h-75v1264zM910 1264h76v-1264h-76v1264zM1820 1264h76v-1264h-76v1264zM1972 1264h76v-1264h-76v1264zM1062 1264h227v-1264h-227v1264zM1365 1264h76v-1264
+h-76v1264zM1517 1264h228v-1264h-228v1264z" />
+    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792" 
+d="M960 1280c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 352v-352c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-93 93c-157 -189 -439 -310 -748 -310s-591 121 -748 310l-93 -93c-6 -6 -15 -9 -23 -9c-4 0 -8 1 -12 2
+c-12 5 -20 17 -20 30v352c0 18 14 32 32 32h352c13 0 25 -8 30 -20s2 -25 -7 -35l-100 -100c90 -121 263 -209 461 -236v647h-192c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h192v163c-76 44 -128 126 -128 221c0 141 115 256 256 256s256 -115 256 -256
+c0 -95 -52 -177 -128 -221v-163h192c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-192v-647c198 27 371 115 461 236l-100 100c-9 10 -12 23 -7 35s17 20 30 20h352c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="meh-o" unicode="&#xf11a;" 
+d="M1152 448c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h640c35 0 64 -29 64 -64zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="file-image-o" unicode="&#xf1c5;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512c-106 0 -192 86 -192 192s86 192 192 192s192 -86 192 -192s-86 -192 -192 -192z" />
+    <glyph glyph-name="liberapay" unicode="&#xf2e9;" horiz-adv-x="1191" 
+d="M468 1404v0l-222 -918c-4 -19 -6 -37 -7 -53s3 -30 9 -42s18 -23 33 -30s36 -12 64 -14l-48 -196c-75 0 -134 9 -177 29s-74 47 -93 81s-28 73 -27 117s6 91 18 141l203 847zM849 1025v0c60 0 111 -9 154 -27s78 -44 106 -75s49 -68 62 -110s20 -86 20 -134h-1
+c0 -78 -12 -149 -38 -213s-61 -120 -106 -167s-99 -83 -162 -109s-133 -39 -207 -39c-36 0 -72 3 -108 9l-72 -288h-236l265 1103c42 13 91 24 146 34s113 16 177 16zM819 825v0c-34 0 -66 -3 -96 -9l-111 -464c18 -4 40 -7 67 -7c41 0 79 8 113 23s63 37 87 65
+s43 61 56 100s20 81 20 128c0 46 -11 84 -31 116s-55 48 -105 48z" />
+    <glyph glyph-name="nodejs" unicode="&#xf308;" 
+d="M768 -225c-24 0 -46 6 -67 17l-211 126c-32 17 -17 24 -7 27c43 14 51 18 96 43c5 3 11 1 16 -2l162 -97c6 -3 14 -3 19 0l634 367c6 3 10 10 10 18v733c0 8 -4 14 -10 17l-634 366c-6 3 -14 3 -19 0l-635 -366c-6 -3 -9 -11 -9 -17v-733c0 -6 3 -15 9 -18l174 -100
+c94 -48 152 8 152 64v723c0 10 8 19 19 19h82c10 0 19 -8 19 -19v-723c0 -126 -69 -199 -188 -199c-37 0 -65 0 -146 40l-167 95c-41 24 -67 68 -67 116v733c0 48 26 92 67 116l634 368c40 22 94 22 134 0l634 -368c41 -24 67 -68 67 -116v-733c0 -48 -26 -92 -67 -116
+l-634 -367c-21 -10 -45 -14 -67 -14zM964 279c-278 0 -336 127 -336 235c0 10 8 19 19 19h83c10 0 17 -6 17 -16c13 -84 49 -125 218 -125c134 0 191 29 191 101c0 41 -16 72 -224 93c-173 17 -282 56 -282 194c0 129 109 205 290 205c204 0 303 -70 316 -223
+c0 -5 -2 -9 -5 -14c-3 -3 -7 -7 -12 -7h-83c-8 0 -16 7 -18 15c-19 87 -68 116 -198 116c-146 0 -164 -51 -164 -89c0 -46 21 -61 218 -86c196 -25 288 -62 288 -199c-2 -140 -116 -219 -318 -219z" />
+    <glyph glyph-name="calculator" unicode="&#xf1ec;" horiz-adv-x="1664" 
+d="M384 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 0
+c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 384
+c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 0v384c0 70 -58 128 -128 128s-128 -58 -128 -128v-384c0 -70 58 -128 128 -128s128 58 128 128z
+M1152 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 1088v256c0 35 -29 64 -64 64h-1280c-35 0 -64 -29 -64 -64v-256c0 -35 29 -64 64 -64h1280c35 0 64 29 64 64zM1536 768c0 71 -57 128 -128 128s-128 -57 -128 -128
+s57 -128 128 -128s128 57 128 128zM1664 1408v-1536c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1536c0 70 58 128 128 128h1408c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1921" 
+d="M1918 1016c15 -41 -32 -137 -150 -294c-194 -258 -215 -234 -55 -383c154 -143 186 -212 191 -221c0 0 64 -112 -71 -113l-256 -4c-55 -11 -128 39 -128 39c-96 66 -186 237 -256 215c0 0 -72 -23 -70 -177c1 -33 -15 -51 -15 -51s-18 -19 -53 -22h-115
+c-253 -16 -476 217 -476 217s-244 252 -458 755c-14 33 1 49 1 49s15 19 57 19l274 2c26 -4 44 -18 44 -18s16 -11 24 -32c45 -112 103 -214 103 -214c100 -206 168 -241 207 -220c0 0 51 31 40 280c-4 90 -29 131 -29 131c-23 31 -66 40 -85 43c-15 2 10 38 43 54
+c49 24 136 25 239 24c81 -1 104 -6 135 -13c95 -23 63 -111 63 -323c0 -68 -13 -163 36 -194c21 -14 73 -2 201 216c0 0 60 104 107 225c8 22 25 31 25 31s16 9 38 6l288 2c87 11 101 -29 101 -29z" />
+    <glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="1078" 
+d="M539 629c-250 0 -454 203 -454 453c0 251 204 454 454 454s454 -203 454 -454c0 -250 -204 -453 -454 -453zM539 1306c-123 0 -223 -100 -223 -224c0 -123 100 -223 223 -223s223 100 223 223c0 124 -100 224 -223 224zM1062 574c44 -90 -6 -133 -120 -207
+c-96 -61 -228 -85 -315 -94l73 -72l267 -267c40 -41 40 -107 0 -147l-12 -13c-41 -40 -107 -40 -148 0c-67 68 -165 166 -267 268l-267 -268c-41 -40 -107 -40 -147 0l-12 13c-41 40 -41 106 0 147c68 68 165 166 267 267l72 72c-86 9 -220 32 -317 94
+c-114 74 -164 117 -120 207c26 51 97 94 191 20c0 0 127 -101 332 -101s332 101 332 101c94 74 165 31 191 -20z" />
+    <glyph glyph-name="linkedin" unicode="&#xf0e1;" 
+d="M349 911v-991h-330v991h330zM370 1217c1 -95 -71 -171 -186 -171h-2c-111 0 -182 76 -182 171c0 97 74 171 186 171c113 0 183 -74 184 -171zM1536 488v-568h-329v530c0 133 -48 224 -167 224c-91 0 -145 -61 -169 -120c-8 -22 -11 -51 -11 -81v-553h-329
+c4 898 0 991 0 991h329v-144h-2c43 68 121 167 299 167c217 0 379 -142 379 -446z" />
+    <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1026" 
+d="M603 0h-172c-18 0 -32 14 -32 32v330h-288c-18 0 -32 14 -32 32v103c0 18 14 32 32 32h288v85h-288c-18 0 -32 14 -32 32v104c0 17 14 32 32 32h214l-321 578c-5 10 -5 22 0 32c6 10 17 16 28 16h194c12 0 23 -7 29 -18l215 -425c24 -47 40 -87 56 -125
+c17 43 39 85 58 129l191 420c5 12 17 19 29 19h191c11 0 21 -6 27 -16c6 -9 6 -21 1 -31l-313 -579h215c18 0 32 -15 32 -32v-104c0 -18 -14 -32 -32 -32h-290v-85h290c18 0 32 -14 32 -32v-103c0 -18 -14 -32 -32 -32h-290v-330c0 -18 -15 -32 -32 -32z" />
+    <glyph glyph-name="skype" unicode="&#xf17e;" 
+d="M1173 473c0 174 -169 234 -311 266l-104 24c-76 18 -133 31 -133 89c0 53 56 77 144 77c157 0 160 -115 257 -115c65 0 104 51 104 109c0 115 -191 190 -380 190c-173 0 -374 -75 -374 -278c0 -168 112 -228 258 -263l146 -36c89 -22 144 -32 144 -96
+c0 -51 -57 -90 -145 -90c-185 0 -195 154 -302 154c-70 0 -101 -50 -101 -105c0 -123 188 -223 413 -223c188 0 384 94 384 297zM1536 256c0 -212 -172 -384 -384 -384c-88 0 -169 30 -234 80c-48 -10 -99 -16 -150 -16c-389 0 -704 315 -704 704c0 51 6 102 16 150
+c-50 65 -80 146 -80 234c0 212 172 384 384 384c88 0 169 -30 234 -80c48 10 99 16 150 16c389 0 704 -315 704 -704c0 -51 -6 -102 -16 -150c50 -65 80 -146 80 -234z" />
+    <glyph glyph-name="envelope-square" unicode="&#xf199;" 
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM1280 352v436c-19 -21 -40 -40 -64 -55c-94 -62 -191 -120 -284 -184c-47 -33 -105 -69 -164 -69s-117 36 -164 69
+c-93 64 -191 121 -284 185c-23 15 -41 37 -64 54v-436c0 -53 43 -96 96 -96h832c53 0 96 43 96 96zM1280 925c0 54 -40 99 -96 99h-832c-53 0 -96 -43 -96 -96c0 -54 56 -113 98 -141c88 -59 179 -114 267 -172c38 -25 101 -71 147 -71s109 46 147 71c89 58 178 115 267 174
+c39 26 98 86 98 136z" />
+    <glyph glyph-name="question-circle-o" unicode="&#xf29c;" 
+d="M880 336v-160c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v160c0 18 14 32 32 32h160c18 0 32 -14 32 -32zM1136 832c0 -142 -99 -198 -172 -239c-52 -30 -84 -49 -84 -81v-32c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v68c0 123 88 162 159 194
+c60 28 97 47 97 92c0 58 -73 101 -139 101c-35 0 -72 -11 -95 -27c-22 -15 -43 -37 -80 -83c-6 -8 -15 -12 -25 -12c-7 0 -14 2 -19 6l-108 82c-13 10 -16 29 -7 43c82 129 197 192 349 192c164 0 348 -130 348 -304zM768 1280c-353 0 -640 -287 -640 -640
+s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="ship" unicode="&#xf21a;" horiz-adv-x="2010" 
+d="M1792 -19c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83
+l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83
+c25 25 65 25 90 0l83 -83zM218 19c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -82l83 82c25 25 65 25 90 0l83 -82l64 64v293l-210 314c-23 35 -7 83 33 97l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58c40 -14 56 -62 33 -97l-210 -314v-293l19 18
+c25 25 65 25 90 0l83 -82l83 82c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83
+c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83zM621 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
+    <glyph glyph-name="gimp" unicode="&#xf31b;" horiz-adv-x="1792" 
+d="M1760 1453c243 -1827 -975 -1550 -1432 -1186c28 4 55 13 78 30c50 38 74 102 73 173s-25 150 -73 220c-6 9 -13 17 -20 25l26 588s159 -366 481 -358c674 18 794 417 867 508zM612 937c-97 0 -177 -85 -177 -193s80 -194 177 -194c16 0 31 4 46 8
+c-67 3 -122 62 -122 133v0c0 73 57 133 127 133v0c56 0 112 -47 124 -104c1 8 2 16 2 24c0 108 -80 193 -177 193zM1031 928v0c-119 0 -216 -102 -216 -228s97 -227 216 -227c45 0 87 14 122 39c-17 -8 -47 -15 -66 -15c-90 0 -162 77 -162 171v0c0 94 72 170 162 170
+c75 0 147 -63 160 -141v3c0 126 -97 228 -216 228zM158 822v0c79 -2 166 -58 227 -146c46 -67 70 -141 70 -206s-21 -121 -64 -153s-100 -37 -158 -16s-118 67 -164 134s-69 141 -69 206s21 121 64 153c26 20 58 29 94 28zM1042 804c-42 0 -76 -36 -76 -80v0
+c0 -44 34 -80 76 -80s76 36 76 80v0c0 44 -34 80 -76 80zM615 787c-28 0 -50 -23 -50 -52v0v0c0 -29 22 -53 50 -53s50 24 50 53v0v0c0 29 -22 52 -50 52zM130 770c-47 0 -85 -47 -85 -106v0c0 -59 38 -107 85 -107s84 48 84 107v0c0 59 -37 106 -84 106zM1202 468
+c0 0 44 -38 69 -72c-96 -78 -261 -141 -583 -73c163 -60 300 -88 406 -81c-64 -22 -146 -39 -250 -44c233 -23 407 22 468 117c16 -18 32 -49 47 -89c10 69 36 101 -4 155s-153 87 -153 87z" />
+    <glyph glyph-name="dashcube" unicode="&#xf210;" horiz-adv-x="1408" 
+d="M0 856c0 173 138 322 314 322h742l352 358v-1470c0 -174 -138 -322 -314 -322h-780c-176 0 -314 148 -314 322v790zM1232 102l-176 180v425c0 61 -49 112 -110 112h-484c-61 0 -110 -51 -110 -112v-492c0 -61 49 -113 110 -113h770z" />
+    <glyph glyph-name="optin-monster" unicode="&#xf23c;" horiz-adv-x="2132" 
+d="M396 -139c-10 -21 -39 -50 -64 -60c-35 -12 -78 11 -80 35c-2 31 75 87 108 93c32 6 47 -42 36 -68zM1737 -139c-11 26 4 74 35 68c33 -6 111 -62 108 -93c-1 -24 -45 -47 -79 -35c-26 10 -55 39 -64 60zM1785 -30c-21 43 15 121 70 114c58 -6 183 -94 183 -160
+c0 -43 -58 -72 -119 -55c-45 12 -116 65 -134 101zM346 -30c-18 -36 -88 -89 -133 -101c-61 -17 -119 12 -119 55c0 66 125 154 183 160c55 7 91 -71 69 -114zM1076 1094c106 0 192 -80 192 -179s-86 -179 -192 -179s-191 80 -191 179c0 15 2 28 5 42c16 -25 46 -43 80 -43
+c51 0 92 38 92 85c0 37 -26 69 -61 80c23 10 49 15 76 15h-1zM1380 1312c-132 145 -301 177 -466 87c93 208 452 180 466 -87zM2130 73c5 -7 -1 -25 -11 -42c4 -13 7 -26 7 -40c3 -117 -164 -237 -272 -241c-64 -3 -128 31 -158 87c-420 -15 -840 -18 -1259 0
+c-31 -56 -95 -89 -159 -87c-107 4 -274 124 -272 241c1 14 3 27 7 40c-10 17 -16 35 -11 42c4 6 17 6 31 1c12 19 26 35 41 51c-4 17 -4 32 2 38c7 6 23 4 39 -4c17 12 37 24 59 34c0 18 5 32 13 37c12 6 33 2 51 -16c21 3 42 3 61 -2c13 -3 26 -10 38 -19v73
+c-6 0 -11 0 -18 2c-65 12 -136 57 -152 132c-6 25 -6 52 0 81c12 50 55 79 93 95c3 22 30 52 55 59c28 7 46 -17 52 -38h13c18 -2 47 -6 60 -23c2 -2 4 -5 5 -7c20 2 41 5 61 7c-9 7 -19 13 -30 17c-19 33 -51 41 -91 43c0 3 0 6 1 10c-73 2 -163 21 -203 66
+c-46 51 -54 138 -45 204c8 65 35 140 90 179c31 21 80 3 84 -36c2 -17 5 -75 21 -84c18 -9 47 -13 76 -12c30 29 62 54 98 74c-55 5 -107 -6 -162 -14l47 46c46 44 107 82 163 111c87 44 185 77 282 86c-69 29 -148 44 -221 61c283 60 646 82 904 -139
+c67 -57 120 -134 158 -222c41 -5 93 -6 121 9h1c16 9 19 66 21 84c4 38 53 57 84 35c55 -39 82 -114 91 -178c8 -66 1 -153 -46 -204c-40 -45 -127 -65 -199 -67v-10c-41 -1 -75 -9 -95 -43c-11 -4 -21 -10 -31 -17c21 -2 42 -5 62 -7c1 3 3 6 5 8c14 16 43 21 60 23h13
+c6 20 25 44 52 38s52 -37 55 -59c40 -16 82 -45 93 -95c7 -30 6 -56 1 -81c-17 -75 -88 -121 -153 -132c-5 -1 -12 -2 -17 -2c0 -25 0 -49 -1 -73c12 9 24 16 38 19c19 5 40 5 61 2c18 18 40 22 51 16c8 -5 14 -19 14 -37c21 -10 42 -22 59 -34c16 8 31 10 38 4
+c6 -6 7 -21 2 -38c15 -16 30 -33 41 -51c14 5 26 5 31 -1zM1855 1025c0 -23 -5 -43 -9 -54c64 -25 97 -82 112 -132c4 39 -10 146 -51 189c-27 27 -52 19 -52 -3zM1777 925c48 -58 63 -154 47 -233c40 8 76 23 97 45c7 8 14 18 18 28c-4 79 -38 158 -110 181
+c-12 -12 -34 -18 -52 -21zM1740 921c-14 0 -30 0 -44 1c28 -76 46 -158 53 -239c13 0 28 1 43 3c22 90 -1 191 -52 235zM176 839c15 50 48 107 112 132c-4 11 -9 31 -9 54c0 22 -26 30 -52 3c-42 -43 -55 -150 -51 -189zM212 737c21 -23 57 -37 97 -45c-16 79 -1 175 47 233
+c-18 3 -40 9 -52 21c-72 -23 -105 -102 -110 -181c5 -10 11 -20 18 -28zM389 683c9 82 34 162 73 235c-19 -4 -37 -11 -55 -18l-45 -19v1c-27 -52 -37 -127 -20 -196c17 -2 32 -3 47 -3zM1352 644c13 -66 18 -132 28 -198c4 -23 11 -28 33 -17c59 30 84 145 85 211
+c-48 3 -97 3 -146 4zM1070 1285c-155 0 -282 -126 -282 -281c0 -156 127 -282 282 -282s282 126 282 282c0 155 -127 281 -282 281zM1298 646c-70 1 -141 1 -211 0v1c-1 -19 1 -141 16 -152c41 -20 146 -17 189 -4c20 6 9 137 6 155zM1030 447c17 9 9 168 5 199v1
+c-72 -1 -143 -1 -214 -3c-7 -34 -17 -181 7 -191c48 -21 154 -19 202 -6zM636 636c-20 -73 1 -167 82 -203c20 -9 32 -9 36 16c7 32 9 136 18 193c-45 -1 -91 -3 -136 -6zM509 510c2 -18 -14 -29 -34 -36c162 -174 343 -317 577 -394c250 71 428 222 604 396
+c-18 7 -32 19 -30 34c1 4 2 6 3 9v1v-1c-33 3 -66 7 -98 10c-35 -122 -133 -196 -173 -117c-10 19 -13 43 -17 62c-14 -31 -49 -30 -91 -33c-49 -4 -117 -5 -163 11c-11 -48 -41 -48 -99 -53c-52 -5 -180 -15 -203 40c-4 -106 -130 -37 -167 26c-12 21 -20 42 -26 65
+c-29 -3 -58 -6 -87 -10c2 -3 3 -7 4 -10zM425 -118c2 9 3 19 3 30c-21 86 -69 184 -124 200c-83 25 -255 -87 -245 -202c47 -72 148 -132 219 -135c66 -3 133 41 147 107zM428 53c12 -33 24 -77 27 -119c124 72 256 132 392 174c-143 76 -252 177 -360 285
+c-8 -5 -19 -9 -29 -13c-1 -3 -1 -6 -2 -9c17 -10 29 -22 22 -37c-8 -15 -32 -28 -56 -34c-8 -10 -19 -18 -29 -24h-1c-1 -50 -1 -100 1 -150c14 -25 26 -51 35 -73zM497 -113c382 -15 764 -13 1145 0c-136 79 -274 153 -428 196c-51 -23 -103 -42 -156 -57
+c-8 -3 -8 -3 -16 0c-44 14 -86 30 -129 49c-149 -43 -286 -108 -416 -188h-1v-1c1 0 1 0 1 1zM1681 -67c3 42 16 87 28 120c8 22 19 47 33 71l-1 -1c2 51 3 102 3 153c-11 6 -21 15 -30 25c-24 5 -48 19 -56 33c-7 15 5 28 22 38c-1 2 -2 6 -2 9c-11 3 -20 7 -28 12
+c-117 -109 -242 -210 -383 -284c144 -43 281 -104 414 -176zM2073 -90c11 115 -161 227 -245 202c-54 -16 -103 -114 -124 -200c0 -11 1 -21 3 -30c14 -66 81 -110 147 -107c71 3 172 63 219 135z" />
+    <glyph glyph-name="paw" unicode="&#xf1b0;" horiz-adv-x="1664" 
+d="M780 1064c0 -112 -58 -245 -187 -245c-162 0 -260 204 -260 344c0 112 58 245 187 245c163 0 260 -204 260 -344zM438 581c0 -97 -51 -198 -161 -198c-160 0 -277 196 -277 341c0 97 52 199 161 199c160 0 277 -197 277 -342zM832 608c245 0 576 -353 576 -589
+c0 -127 -104 -147 -206 -147c-134 0 -242 90 -370 90c-134 0 -248 -89 -393 -89c-97 0 -183 33 -183 146c0 237 331 589 576 589zM1071 819c-129 0 -187 133 -187 245c0 140 97 344 260 344c129 0 187 -133 187 -245c0 -140 -98 -344 -260 -344zM1503 923
+c109 0 161 -102 161 -199c0 -145 -117 -341 -277 -341c-110 0 -161 101 -161 198c0 145 117 342 277 342z" />
+    <glyph glyph-name="venus-double" unicode="&#xf226;" horiz-adv-x="1792" 
+d="M1790 1007c25 -317 -207 -586 -510 -619v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-512v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619c22 275 243 500 517 526c140 14 271 -23 377 -94c106 71 237 108 377 94c274 -26 495 -251 517 -526zM896 647c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM576 512
+c79 0 153 21 218 57c-96 103 -154 240 -154 391s59 288 154 391c-65 36 -139 57 -218 57c-247 0 -448 -201 -448 -448s201 -448 448 -448zM1152 128v260c-94 10 -181 44 -256 94c-75 -50 -162 -84 -256 -94v-260h512zM1216 512c247 0 448 201 448 448s-201 448 -448 448
+c-79 0 -153 -21 -218 -57c95 -103 154 -240 154 -391s-58 -288 -154 -391c65 -36 139 -57 218 -57z" />
+    <glyph glyph-name="calendar-times-o" unicode="&#xf273;" horiz-adv-x="1664" 
+d="M1111 151l-46 -46c-12 -12 -32 -12 -45 0l-188 189l-188 -189c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l189 188l-189 188c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l188 -188l188 188c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45l-188 -188l188 -188
+c12 -13 12 -33 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z
+" />
+    <glyph glyph-name="address-book-o" unicode="&#xf2ba;" horiz-adv-x="1664" 
+d="M1028 892c0 -143 -117 -259 -260 -259s-260 116 -260 259c0 144 117 260 260 260s260 -116 260 -260zM980 672c191 0 221 -227 221 -374c0 -84 -53 -170 -145 -170h-576c-92 0 -145 86 -145 170c0 141 30 374 216 374h5c66 -39 133 -87 212 -87s146 48 212 87zM1664 928
+c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160
+v-224h96c17 0 32 -15 32 -32v-192zM1408 -96v1472c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-1472c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32z" />
+    <glyph glyph-name="check" unicode="&#xf00c;" horiz-adv-x="1550" 
+d="M1550 970c0 -25 -10 -50 -28 -68l-724 -724l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136l-362 362c-18 18 -28 43 -28 68s10 50 28 68l136 136c18 18 43 28 68 28s50 -10 68 -28l294 -295l656 657c18 18 43 28 68 28s50 -10 68 -28l136 -136
+c18 -18 28 -43 28 -68z" />
+    <glyph glyph-name="meetup" unicode="&#xf2e0;" horiz-adv-x="1847" 
+d="M1297 302c-11 72 -143 16 -151 95c-11 112 153 354 140 448c-12 84 -68 102 -117 103c-47 1 -59 -7 -75 -16c-10 -6 -23 -17 -41 1c-22 21 -39 41 -68 45c-43 7 -62 -7 -93 -34c-12 -10 -42 -45 -70 -32c-12 6 -54 27 -84 40c-57 25 -140 -16 -170 -70
+c-45 -80 -133 -396 -146 -438c-30 -93 38 -170 129 -165c39 2 64 16 89 61c14 26 146 377 156 394c7 12 31 28 51 18c20 -11 24 -33 21 -53c-4 -34 -98 -248 -101 -272c-12 -80 94 -93 135 -14c13 25 160 324 173 344c15 22 26 29 41 28c11 0 29 -3 25 -38
+c-5 -33 -123 -253 -136 -307c-16 -72 23 -145 87 -177c40 -20 219 -55 205 39zM346 86c4 -20 -8 -39 -28 -43c-19 -4 -38 8 -42 28c-4 19 8 39 27 43s39 -8 43 -28zM916 -177c16 -23 10 -54 -12 -70c-23 -16 -54 -10 -70 13c-15 23 -9 54 13 70c23 16 54 10 69 -13zM140 635
+c-24 -36 -72 -45 -107 -20c-35 24 -44 73 -20 108c24 36 72 45 107 21c35 -25 44 -73 20 -109zM1430 -42c25 -37 16 -88 -21 -114c-37 -25 -87 -16 -112 21s-16 88 20 114c37 26 87 16 113 -21zM1542 562c92 -151 53 -350 -92 -452c-61 -43 -130 -62 -199 -60
+c-42 -165 -243 -226 -368 -114c-4 -3 -9 -6 -13 -10c-137 -95 -323 -61 -418 78c-34 50 -51 107 -53 164c-229 38 -315 329 -144 489c-99 164 2 376 187 402c88 232 377 342 573 190c236 78 477 -103 458 -354c144 -44 185 -234 69 -333zM418 1222c18 -27 12 -64 -15 -83
+c-26 -18 -63 -12 -81 15s-12 64 15 83c26 18 63 12 81 -15zM577 1503c5 -22 -9 -44 -31 -49s-44 9 -49 32c-4 22 10 44 32 49s44 -9 48 -32zM1763 555c6 -27 -11 -53 -37 -58c-26 -6 -52 11 -57 37c-6 27 11 53 37 59c26 5 52 -12 57 -38zM1099 1448c21 -36 10 -84 -27 -106
+c-36 -22 -83 -10 -104 26c-22 37 -10 85 26 107s83 10 105 -27zM1845 792c5 -20 -8 -39 -27 -44c-20 -4 -39 9 -43 28c-4 20 8 40 28 44c19 4 38 -8 42 -28zM1654 1033c20 -30 13 -71 -16 -92c-30 -20 -71 -13 -91 17s-13 71 17 92c29 21 70 13 90 -17z" />
+    <glyph glyph-name="sliders" unicode="&#xf1de;" 
+d="M352 128v-128h-352v128h352zM704 256c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280c35 0 64 -29 64 -64v-256
+c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1216 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
+    <glyph glyph-name="file-pdf-o" unicode="&#xf1c1;" 
+d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
+h-768v-1536h1280zM894 465c25 -20 53 -38 84 -56c42 5 81 7 117 7c67 0 152 -8 177 -49c7 -10 13 -28 2 -52c-1 -1 -2 -3 -3 -4v-1c-3 -18 -18 -38 -71 -38c-64 0 -161 29 -245 73c-139 -15 -285 -46 -392 -83c-103 -176 -182 -262 -242 -262c-10 0 -19 2 -28 7l-24 12
+c-3 1 -4 3 -6 5c-5 5 -9 16 -6 36c10 46 64 123 188 188c8 5 18 2 23 -6c1 -1 2 -3 2 -4c31 51 67 116 107 197c45 90 80 178 104 262c-32 109 -42 221 -24 287c7 25 22 40 42 40h22c15 0 27 -5 35 -15c12 -14 15 -36 9 -68c-1 -3 -2 -6 -4 -8c1 -3 1 -5 1 -8v-30
+c-1 -63 -2 -123 -14 -192c35 -105 87 -190 146 -238zM318 54c30 14 73 57 137 158c-75 -58 -122 -124 -137 -158zM716 974c-10 -28 -10 -76 -2 -132c3 16 5 31 7 44c2 17 5 31 7 43c1 3 2 5 4 8c-1 1 -1 3 -2 5c-1 18 -7 29 -13 36c0 -2 -1 -3 -1 -4zM592 313
+c88 35 186 63 284 81c-10 8 -20 15 -29 23c-49 43 -93 103 -127 176c-19 -61 -47 -126 -83 -197c-15 -28 -30 -56 -45 -83zM1238 329c-5 5 -31 24 -140 24c49 -18 94 -28 124 -28c9 0 14 0 18 1c0 1 -1 2 -2 3z" />
+    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408" 
+d="M493 1053c22 0 39 18 39 39s-17 39 -39 39c-21 0 -38 -18 -38 -39s17 -39 38 -39zM915 1053c21 0 38 18 38 39s-17 39 -38 39c-22 0 -39 -18 -39 -39s17 -39 39 -39zM103 869c56 0 102 -46 102 -102v-430c0 -57 -45 -103 -102 -103s-103 46 -103 103v430
+c0 56 46 102 103 102zM1163 850v-666c0 -61 -49 -110 -109 -110h-75v-227c0 -57 -46 -103 -103 -103s-103 46 -103 103v227h-138v-227c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103l-1 227h-74c-61 0 -110 49 -110 110v666h918zM931 1255c140 -72 235 -210 235 -369
+h-925c0 159 95 297 236 369l-71 131c-4 7 -2 16 5 20c7 3 16 1 20 -6l72 -132c61 27 129 42 201 42s140 -15 201 -42l72 132c4 7 13 9 20 6c7 -4 9 -13 5 -20zM1408 767v-430c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103v430c0 57 46 102 102 102
+c57 0 103 -45 103 -102z" />
+    <glyph glyph-name="hubzilla" unicode="&#xf2eb;" horiz-adv-x="1587" 
+d="M1349 1363c86 -43 165 -125 207 -213c16 -40 34 -78 30 -170c-3 -83 -8 -115 -34 -170c-68 -146 -203 -243 -356 -253l-83 -6l-29 -115c-24 -96 -27 -129 -27 -129c28 -29 91 -47 117 -115c36 -69 32 -168 -14 -225c-75 -93 -187 -121 -286 -70c-90 47 -136 164 -108 266
+c7 26 -2 34 -109 104l-116 77l-43 -35c-203 -162 -499 -19 -498 242c0 168 133 299 304 298c86 0 138 -20 202 -78l47 -42l104 53l105 51l-11 37c-16 55 -12 176 7 238c21 74 87 166 150 212c128 94 302 111 441 43v0zM580 413l233 -160s71 60 167 68l60 254
+s-185 59 -237 189l-217 -102s52 -128 -6 -248v-1z" />
+    <glyph glyph-name="stack-exchange" unicode="&#xf18d;" horiz-adv-x="1238" 
+d="M1238 283v-66c0 -113 -88 -204 -196 -204h-57l-260 -269v269h-529c-108 0 -196 91 -196 204v66h1238zM1238 609v-255h-1238v255h1238zM1238 937v-255h-1238v255h1238zM1238 1077v-67h-1238v67c0 112 88 203 196 203h846c108 0 196 -91 196 -203z" />
+    <glyph glyph-name="twitch" unicode="&#xf1e8;" horiz-adv-x="1592" 
+d="M796 1102v-434h-145v434h145zM1194 1102v-434h-145v434h145zM1194 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1592 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
+    <glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="576" 
+d="M576 640c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v896c0 35 29 64 64 64c17 0 33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="tree" unicode="&#xf1bb;" horiz-adv-x="1472" 
+d="M1472 64c0 -35 -29 -64 -64 -64h-462c3 -64 11 -131 11 -196c0 -33 -27 -60 -61 -60h-320c-34 0 -61 27 -61 60c0 65 8 132 11 196h-462c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-229c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-197c-35 0 -64 29 -64 64
+c0 17 7 33 19 45l384 384c12 12 28 19 45 19s33 -7 45 -19l384 -384c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-197l402 -403c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-229l402 -403c12 -12 19 -28 19 -45z" />
+    <glyph glyph-name="friendica" unicode="&#xf2e6;" horiz-adv-x="1520" 
+d="M0 1128c0 152 123 276 274 276h973c151 0 273 -124 273 -276v-980c0 -152 -122 -276 -273 -276h-973c-151 0 -274 124 -274 276v980zM1247 1343h-244v-368h-486v-310l485 3l1 -367h-486v-368h730c118 0 212 95 212 215v980c0 120 -94 215 -212 215z" />
+    <glyph glyph-name="gratipay" unicode="&#xf184;" 
+d="M773 234l350 473c27 37 59 156 -43 223c-86 56 -168 13 -211 -37c-16 -18 -44 -40 -96 -40s-79 22 -95 40c-43 50 -125 93 -212 37c-101 -67 -69 -186 -42 -223zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="map-marker" unicode="&#xf041;" horiz-adv-x="1024" 
+d="M768 896c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1024 896c0 -61 -7 -124 -33 -179l-364 -774c-21 -44 -67 -71 -115 -71s-94 27 -114 71l-365 774c-26 55 -33 118 -33 179c0 283 229 512 512 512s512 -229 512 -512z" />
+    <glyph glyph-name="globe-e" unicode="&#xf304;" 
+d="M768 1404c204 0 399 -81 543 -225s225 -339 225 -543s-81 -399 -225 -543s-339 -225 -543 -225s-399 81 -543 225s-225 339 -225 543s81 399 225 543s339 225 543 225zM863 1165h-1h-6c-78 -1 -136 -19 -204 -29s-157 -10 -205 -29s-58 -39 -87 -58s-72 -30 -87 -58
+s0 -58 0 -87s-28 -73 0 -88s58 39 87 58s68 70 88 59s6 -8 0 -29s-54 -44 -56 -87s110 -78 73 -135c-37 -56 -202 50 -250 18s-19 -58 -29 -87s-40 -57 -29 -88s55 -37 87 -58s87 -59 88 -62s21 -106 29 -145c6 -34 3 -78 4 -120c44 -36 123 -82 176 -102
+c21 41 37 107 53 139c24 48 77 133 87 174s0 39 0 58s8 32 0 58s-40 58 -59 87s-37 69 -58 88s-49 19 -58 29s-4 9 -4 14s-5 8 5 15s36 9 58 0s39 -39 58 -58s27 -55 58 -58s58 39 87 58c29 20 74 35 107 -22c8 -16 43 -35 68 -35s22 42 30 58s24 37 48 41s28 -14 44 -30
+s30 -69 53 -69s22 43 30 59c15 34 6 65 57 116c19 19 50 29 57 57s-21 62 -29 86s-28 63 -28 88c0 21 27 25 63 44c-24 30 -67 73 -97 97c-22 1 -41 2 -55 4c-69 8 -176 29 -253 29zM1251 411c-32 1 -70 -43 -105 -60c-39 -19 -100 -32 -116 -59s0 -39 0 -58s-14 -44 0 -58
+s38 0 58 0s37 9 59 0c12 -5 23 -17 33 -29c40 34 96 98 125 142c-5 11 -10 21 -14 32c-10 29 5 74 -29 88c-4 2 -7 2 -11 2z" />
+    <glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="2303" 
+d="M1032 576c-35 1 -68 21 -84 55c-22 45 -66 73 -116 73c-71 0 -128 -57 -128 -128c0 -34 12 -67 36 -89l10 -8c22 -20 51 -31 82 -31c50 0 94 28 116 73c16 34 49 54 84 55zM1600 704c0 34 -12 67 -36 89l-10 8c-22 20 -51 31 -82 31c-50 0 -94 -28 -116 -73
+c-16 -34 -49 -54 -84 -55c35 -1 68 -21 84 -55c22 -45 66 -73 116 -73c71 0 128 57 128 128zM1174 925c-23 -47 -81 -67 -128 -44c-42 21 -87 31 -134 31c-35 0 -68 -6 -99 -17c6 0 13 1 19 1c123 0 236 -72 289 -183c23 -48 2 -105 -46 -128c-12 -6 -25 -9 -39 -9
+c14 0 27 -3 39 -9c48 -23 69 -80 46 -128c-53 -111 -166 -183 -289 -183h-6c-15 2 -29 3 -44 4l-290 27l-239 -120c-10 -5 -19 -7 -29 -7c-23 0 -46 13 -57 35l-160 320c-15 31 -4 68 25 85l209 119l148 267c23 206 125 395 287 528c41 34 102 28 135 -13
+c34 -41 28 -101 -13 -135c-45 -38 -85 -81 -117 -128c78 53 168 89 267 101c53 7 101 -30 107 -83c7 -53 -30 -101 -83 -107c-58 -7 -112 -27 -159 -55c32 7 65 10 99 10c76 0 150 -17 218 -50c48 -24 68 -81 44 -129zM2137 1085l160 -320c15 -31 4 -68 -25 -85l-209 -119
+l-148 -267c-23 -206 -125 -395 -287 -528c-18 -15 -40 -22 -61 -22c-28 0 -55 12 -74 35c-34 41 -28 101 13 135c45 38 85 81 117 128c-78 -53 -168 -89 -267 -101c-4 -1 -8 -1 -12 -1c-48 0 -89 36 -95 84c-7 53 30 101 83 107c58 7 112 27 159 55c-32 -7 -65 -10 -99 -10
+c-76 0 -150 17 -218 50c-48 24 -68 81 -44 129c23 47 81 67 128 44c42 -21 87 -31 134 -31c35 0 68 6 99 17c-6 0 -13 -1 -19 -1c-123 0 -236 72 -289 183c-23 48 -2 105 46 128c12 6 25 9 39 9c-14 0 -27 3 -39 9c-48 23 -69 80 -46 128c53 111 166 183 289 183h7
+c14 -2 28 -3 42 -4l291 -27l239 120c10 5 19 7 29 7c23 0 46 -13 57 -35z" />
+    <glyph glyph-name="binoculars" unicode="&#xf1e5;" horiz-adv-x="1792" 
+d="M704 1216v-768c0 -35 -29 -64 -64 -64v-576c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v512l249 873c4 14 17 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v576c-35 0 -64 29 -64 64v768h424
+c14 0 27 -9 31 -23zM736 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32zM1408 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="sticky-note" unicode="&#xf249;" 
+d="M1024 288v-416h-928c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344c53 0 96 -43 96 -96v-928h-416c-53 0 -96 -43 -96 -96zM1152 256h381c-9 -48 -35 -102 -65 -132l-184 -184c-30 -30 -84 -56 -132 -65v381z" />
+    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280" 
+d="M1280 137c0 -146 -96 -265 -213 -265h-854c-117 0 -213 119 -213 265c0 263 65 567 327 567c81 -79 191 -128 313 -128s232 49 313 128c262 0 327 -304 327 -567zM1024 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
+    <glyph glyph-name="php" unicode="&#xf30e;" horiz-adv-x="2299" 
+d="M1149 1245c635 0 1150 -271 1150 -605s-515 -605 -1150 -605s-1149 271 -1149 605s514 605 1149 605zM1049 1081l-130 -627h125l74 359l100 -1c32 0 52 -6 62 -18s12 -33 6 -62l-58 -278h126l61 291c13 65 4 109 -27 132c-30 23 -77 36 -138 37h-111l35 167h-125z
+M478 914v0l-129 -625h126l34 165h108c37 0 73 5 107 13s66 27 96 57c25 24 44 50 58 80s24 60 28 91c11 67 1 121 -31 160s-84 58 -155 59h-242zM1549 914l-130 -625h126l34 165h109c37 0 72 5 106 13s67 27 97 57c25 24 43 50 57 80s24 60 28 91c11 67 1 121 -31 160
+s-84 58 -155 59h-241zM623 815v0c48 1 88 -4 120 -13s43 -45 32 -106c-13 -73 -38 -115 -77 -127s-87 -18 -145 -17h-12c-3 0 -8 1 -11 1l54 261h18c7 0 14 0 21 1zM1693 815v0c48 1 88 -4 120 -13s44 -45 33 -106c-13 -73 -39 -115 -78 -127s-87 -18 -145 -17h-12
+c-3 0 -8 1 -11 1l54 261h18c7 0 14 0 21 1z" />
+    <glyph glyph-name="ioxhost" unicode="&#xf208;" horiz-adv-x="2048" 
+d="M1463 704c0 -47 -38 -86 -86 -86h-702c-48 0 -86 39 -86 86s38 86 86 86h702c48 0 86 -39 86 -86zM1677 704c0 59 -8 115 -23 170h-982c-48 0 -86 38 -86 85c0 48 38 86 86 86h908c-115 187 -321 311 -555 311c-360 0 -653 -292 -653 -652c0 -59 8 -115 23 -170h982
+c48 0 86 -38 86 -85c0 -48 -38 -86 -86 -86h-908c115 -187 321 -311 556 -311c359 0 652 292 652 652zM2048 959c0 -47 -38 -85 -86 -85h-131c11 -55 17 -112 17 -170c0 -454 -369 -824 -823 -824c-333 0 -620 198 -750 483h-189c-48 0 -86 38 -86 86c0 47 38 85 86 85h132
+c-11 55 -17 112 -17 170c0 454 369 824 824 824c332 0 619 -198 749 -483h188c48 0 86 -38 86 -86z" />
+    <glyph glyph-name="expand" unicode="&#xf065;" 
+d="M755 480c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23zM1536 1344v-448
+c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="discord-alt" unicode="&#xf2ef;" 
+d="M559 1212v0l13 -16c-237 -68 -346 -172 -346 -172s29 16 78 38c141 62 252 79 298 83c8 1 15 3 23 3c80 11 170 13 265 2c125 -14 259 -51 396 -126c0 0 -103 99 -327 167l18 21s181 4 370 -138c0 0 189 -343 189 -766c0 0 -111 -191 -402 -200c0 0 -48 56 -87 106
+c172 49 238 157 238 157c-54 -35 -105 -61 -151 -78c-66 -28 -129 -45 -191 -56c-126 -24 -242 -17 -341 1c-75 14 -139 36 -193 57c-30 12 -63 26 -96 44c-4 3 -8 4 -12 7c-3 1 -4 3 -5 4c-24 13 -37 22 -37 22s63 -105 230 -155c-39 -50 -88 -109 -88 -109
+c-291 9 -401 200 -401 200c0 423 189 766 189 766c189 142 370 138 370 138zM522 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146c1 80 -59 146 -134 146zM1002 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146
+s-59 146 -134 146z" />
+    <glyph glyph-name="bitbucket-square" unicode="&#xf172;" 
+d="M848 666c0 57 -70 96 -118 67c-57 -27 -57 -119 1 -143c52 -31 125 16 117 76zM928 682c11 -88 -58 -174 -146 -182s-171 64 -175 153c-3 66 38 130 98 157c94 42 210 -26 223 -128zM1100 1073c-44 -45 -111 -51 -170 -58c-107 -14 -216 -13 -324 0
+c-59 8 -124 15 -170 58c28 40 78 48 123 55c135 24 273 23 408 1c48 -7 102 -15 133 -56zM1142 327c0 24 25 65 -9 75c-215 -142 -515 -142 -731 0l-12 -6l-5 -12c12 -70 23 -141 41 -210c41 -71 129 -95 204 -108c142 -26 299 -18 428 53c75 42 63 137 84 208zM1272 1020
+c4 24 9 53 -8 75c-38 48 -98 71 -155 88c-158 46 -325 52 -487 36c-77 -7 -154 -20 -226 -46c-54 -21 -127 -49 -136 -113c18 -150 47 -297 72 -446c8 -42 8 -92 46 -122c81 -62 184 -89 284 -100c148 -16 305 -5 440 63c38 20 82 46 90 92c28 157 55 314 80 473zM1536 1120
+v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="hand-paper-o" unicode="&#xf256;" horiz-adv-x="1632" 
+d="M880 1408c-62 0 -112 -50 -112 -112v-656h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-784l-154 205c-24 32 -62 51 -102 51c-71 0 -128 -58 -128 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h688c46 0 86 33 95 78l76 405c3 19 5 39 5 59v498
+c0 62 -50 112 -112 112s-112 -50 -112 -112v-272h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-528h-32v656c0 62 -50 112 -112 112zM880 1536c90 0 173 -51 214 -132c14 3 28 4 42 4c132 0 240 -108 240 -240v-17c139 8 256 -99 256 -239v-498c0 -28 -3 -56 -8 -83
+l-76 -404c-19 -106 -112 -183 -220 -183h-688c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 141 114 256 256 256c42 0 93 -10 128 -34v434c0 132 108 240 240 240c14 0 28 -1 42 -4c41 81 124 132 214 132z" />
+    <glyph glyph-name="database" unicode="&#xf1c0;" 
+d="M768 768c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 0c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 384c301 0 603 54 768 170
+v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 1536c424 0 768 -115 768 -256v-128c0 -141 -344 -256 -768 -256s-768 115 -768 256v128c0 141 344 256 768 256z" />
+    <glyph glyph-name="jirafeau" unicode="&#xf318;" 
+d="M1459 1408c43 0 77 -34 77 -77v-1382c0 -43 -34 -77 -77 -77h-923c18 109 27 134 50 210c31 103 92 108 92 108c49 11 74 31 224 -36s270 -72 270 -72v0c15 -19 71 -80 137 -85c90 -7 128 19 128 19s31 91 -38 176s-336 376 -343 403c0 0 -40 47 -69 58s-119 63 -135 130
+s-42 168 -33 215s22 152 -32 130s-31 -74 -40 -137s-52 -190 -112 -190c0 0 -87 150 -145 132s-108 -181 -63 -275c0 0 -210 -295 -393 -772c-20 14 -34 37 -34 63v1382c0 43 34 77 77 77h1382z" />
+    <glyph glyph-name="user-circle-o" unicode="&#xf2be;" horiz-adv-x="1792" 
+d="M896 1536c495 0 896 -401 896 -896c0 -492 -399 -896 -896 -896c-496 0 -896 403 -896 896c0 495 401 896 896 896zM1515 185c93 128 149 285 149 455c0 423 -345 768 -768 768s-768 -345 -768 -768c0 -170 56 -327 149 -455c36 179 123 327 306 327
+c81 -79 191 -128 313 -128s232 49 313 128c183 0 270 -148 306 -327zM1280 832c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
+    <glyph glyph-name="hacker-news" unicode="&#xf1d4;" 
+d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="edge" unicode="&#xf282;" horiz-adv-x="1654" 
+d="M0 741h1c52 414 335 796 841 795c307 0 560 -144 708 -409c76 -137 104 -283 104 -442v-188h-1125c5 -464 682 -448 974 -244v-377c-171 -103 -557 -192 -858 -77c-255 98 -433 363 -436 621c-4 333 165 554 436 680c-57 -72 -101 -150 -124 -285h635
+c37 379 -359 379 -359 379c-374 -13 -644 -231 -797 -453z" />
+    <glyph glyph-name="calendar-plus-o" unicode="&#xf271;" horiz-adv-x="1664" 
+d="M1536 1280c70 0 128 -58 128 -128v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128zM1152 1376v-288
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM384 1376v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM1536 -128v1024h-1408v-1024h1408zM896 448h224
+c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224z" />
+    <glyph glyph-name="hand-lizard-o" unicode="&#xf258;" horiz-adv-x="2048" 
+d="M1151 1536c81 0 159 -39 207 -105l572 -781c77 -104 118 -229 118 -359v-355c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v177l-286 143h-546c-106 0 -192 86 -192 192v32c0 159 129 288 288 288h420l42 128h-686c-133 0 -244 102 -255 234
+c-42 51 -65 116 -65 182v32c0 106 86 192 192 192h959zM1920 -64v355c0 101 -33 202 -93 284l-573 781c-24 32 -62 52 -103 52h-959c-35 0 -64 -29 -64 -64c0 -53 1 -90 36 -133c13 41 50 69 92 69h832v-32h-832c-35 0 -64 -29 -64 -64c0 -19 -1 -39 3 -58
+c11 -59 65 -102 125 -102h731c53 0 96 -43 96 -96c0 -10 -2 -21 -5 -30l-64 -192c-13 -39 -50 -66 -91 -66h-443c-88 0 -160 -72 -160 -160v-32c0 -35 29 -64 64 -64h561c10 0 20 -2 29 -7l317 -158c32 -17 53 -50 53 -86v-197c0 -35 29 -64 64 -64h384c35 0 64 29 64 64z
+" />
+    <glyph glyph-name="digitalocean" unicode="&#xf31d;" horiz-adv-x="1535" 
+d="M245 169h-191v190h191v-190zM473 -59h-228v228h228v-228zM769 465v-296h-296v296h296zM768 -128v298c315 0 559 312 438 644c-44 123 -142 221 -265 265c-332 120 -644 -123 -644 -438h-297c0 502 485 894 1012 729c230 -72 414 -255 485 -485
+c165 -527 -226 -1013 -729 -1013z" />
+    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408" 
+d="M597 869c0 0 -10 -17 -257 -456c-13 -22 -30 -46 -65 -46h-239c-14 0 -25 7 -31 17s-7 23 0 36l253 448c1 0 1 0 0 1l-161 279c-7 13 -8 27 -1 37c6 10 18 15 32 15h239c36 0 54 -24 66 -45c163 -285 164 -286 164 -286zM1403 1511c7 -10 7 -24 0 -37l-528 -934
+c-1 0 -1 -1 0 -1l336 -615c7 -13 7 -27 1 -37c-7 -10 -18 -15 -32 -15h-239c-36 0 -55 24 -66 45c-339 621 -339 622 -339 622s17 30 531 942c13 23 28 45 64 45h241c14 0 25 -5 31 -15z" />
+    <glyph glyph-name="youtube-square" unicode="&#xf166;" 
+d="M919 233v157c0 33 -10 50 -29 50c-11 0 -22 -5 -33 -16v-224c11 -11 22 -16 33 -16c19 0 29 16 29 49zM1103 355h66v34c0 34 -11 51 -33 51s-33 -17 -33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40c-26 -30 -51 -45 -76 -45
+c-21 0 -36 9 -42 28c-4 11 -6 28 -6 54v290h66v-270c0 -15 0 -24 1 -26c1 -10 6 -15 15 -15c14 0 27 10 42 31v280h67zM985 384v-146c0 -33 -2 -58 -7 -73c-8 -28 -26 -42 -53 -42c-23 0 -46 14 -68 41v-36h-67v493h67v-161c21 26 44 40 68 40c27 0 45 -14 53 -42
+c5 -15 7 -39 7 -74zM1236 255v-9c0 -22 -1 -36 -2 -43c-2 -15 -7 -28 -15 -40c-18 -27 -46 -40 -80 -40c-35 0 -62 13 -81 38c-14 18 -21 47 -21 86v129c0 39 6 67 20 86c19 25 46 38 80 38c33 0 60 -13 78 -38c14 -19 21 -47 21 -86v-76h-133v-65c0 -34 11 -51 34 -51
+c16 0 26 9 30 26c0 4 1 19 1 45h68zM785 1079v-156c0 -34 -11 -51 -32 -51c-22 0 -32 17 -32 51v156c0 34 10 52 32 52c21 0 32 -18 32 -52zM1318 366c0 86 0 177 -19 260c-14 59 -62 102 -119 108c-136 15 -274 15 -412 15c-137 0 -275 0 -411 -15
+c-58 -6 -106 -49 -119 -108c-19 -83 -20 -174 -20 -260c0 -85 0 -176 20 -260c13 -58 61 -101 118 -108c137 -15 275 -15 412 -15s275 0 412 15c57 7 105 50 118 108c20 84 20 175 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78c15 -46 32 -92 47 -138
+c24 -70 39 -122 46 -158v-201h74v201zM852 936v130c0 39 -7 68 -21 87c-19 25 -45 38 -78 38c-34 0 -60 -13 -78 -38c-14 -19 -21 -48 -21 -87v-130c0 -39 7 -68 21 -87c18 -25 44 -38 78 -38c33 0 59 13 78 38c14 18 21 48 21 87zM1033 816h67v370h-67v-283
+c-15 -21 -29 -31 -42 -31c-9 0 -15 5 -16 16c-1 2 -1 10 -1 26v272h-67v-293c0 -26 2 -43 6 -55c7 -18 22 -27 43 -27c25 0 50 15 77 45v-40zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
+c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="taxi" unicode="&#xf1ba;" horiz-adv-x="2048" 
+d="M1824 640c124 0 224 -100 224 -224v-384c0 -18 -14 -32 -32 -32h-96v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-1024v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419
+c31 126 153 221 283 221h128v224c0 18 14 32 32 32h448c18 0 32 -14 32 -32v-224h128c130 0 252 -95 283 -221l105 -419h28zM320 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM516 640h1016l-89 357c-3 11 -23 27 -35 27h-768
+c-12 0 -32 -16 -35 -27zM1728 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160z" />
+    <glyph glyph-name="sort-desc" unicode="&#xf0dd;" horiz-adv-x="1024" 
+d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1632" 
+d="M1408 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1632 1376c0 -332 -92 -553 -329 -791c-58 -57 -124 -116 -195 -176l-20 -379c-1 -10 -7 -20 -16 -26l-384 -224c-5 -3 -10 -4 -16 -4c-8 0 -16 3 -23 9l-64 64c-8 9 -11 21 -8 32l85 276
+l-281 281l-276 -85c-3 -1 -6 -1 -9 -1c-8 0 -17 3 -23 9l-64 64c-10 11 -12 27 -5 39l224 384c6 9 16 15 26 16l379 20c60 71 119 137 176 195c250 249 441 329 789 329c18 0 34 -14 34 -32z" />
+    <glyph glyph-name="discord" unicode="&#xf2ee;" 
+d="M180 1516v0h1176c99 0 180 -81 180 -181v-1575l-189 167l-106 98l-112 105l46 -163h-995c-99 0 -180 81 -180 181v1187c0 100 81 181 180 181zM634 1107c0 0 -121 3 -247 -92c0 0 -126 -229 -126 -512c0 0 73 -128 267 -134c0 0 33 40 59 73c-111 33 -153 104 -153 104
+s8 -6 24 -15c1 -1 2 -2 4 -3c3 -2 5 -2 8 -4c22 -12 44 -22 64 -30c36 -14 79 -28 129 -38c66 -12 143 -17 227 -1c41 7 83 20 127 38c31 11 65 28 101 52c0 0 -44 -73 -159 -105c26 -33 58 -71 58 -71c194 6 269 134 269 134c0 283 -127 512 -127 512
+c-126 95 -246 92 -246 92l-12 -14c149 -46 218 -112 218 -112c-91 50 -181 75 -264 85c-63 7 -123 5 -177 -2c-5 0 -10 -1 -15 -2c-31 -3 -106 -14 -200 -55c-32 -15 -51 -26 -51 -26s72 69 230 115zM609 779c50 0 91 -43 90 -97c0 -54 -40 -98 -90 -98c-49 0 -89 44 -89 98
+s39 97 89 97zM930 779c50 0 89 -43 89 -97s-39 -98 -89 -98c-49 0 -90 44 -90 98s40 97 90 97z" />
+    <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920" 
+d="M768 384h384v96h-128v448h-114l-148 -137l77 -80c24 21 39 32 55 57h2v-288h-128v-96zM1280 640c0 -182 -110 -416 -320 -416s-320 234 -320 416s110 416 320 416s320 -234 320 -416zM1792 384v512c-141 0 -256 115 -256 256h-1152c0 -141 -115 -256 -256 -256v-512
+c141 0 256 -115 256 -256h1152c0 141 115 256 256 256zM1920 1216v-1152c0 -35 -29 -64 -64 -64h-1792c-35 0 -64 29 -64 64v1152c0 35 29 64 64 64h1792c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920" 
+d="M416 256c-88 0 -160 72 -160 160v704c0 88 72 160 160 160h1088c88 0 160 -72 160 -160v-704c0 -88 -72 -160 -160 -160h-1088zM384 1120v-704c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32v704c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32zM1760 192h160v-96
+c0 -53 -72 -96 -160 -96h-1600c-88 0 -160 43 -160 96v96h1760zM1040 96c9 0 16 7 16 16s-7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160z" />
+    <glyph glyph-name="arrows-alt" unicode="&#xf0b2;" 
+d="M1283 995l-355 -355l355 -355l144 144c18 19 46 24 70 14c23 -10 39 -33 39 -59v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l144 144l-355 355l-355 -355l144 -144c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-448
+c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l144 -144l355 355l-355 355l-144 -144c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v448c0 35 29 64 64 64h448c26 0 49 -16 59 -40c10 -23 5 -51 -14 -69l-144 -144l355 -355l355 355
+l-144 144c-19 18 -24 46 -14 69c10 24 33 40 59 40h448c35 0 64 -29 64 -64v-448c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 7 -45 19z" />
+    <glyph glyph-name="thermometer-empty" unicode="&#xf2cb;" horiz-adv-x="1024" 
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 105 85 192 192 192s192 -88 192 -192zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320s320 143 320 320zM896 192
+c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
+    <glyph glyph-name="underline" unicode="&#xf0cd;" 
+d="M48 1313c-18 1 -33 1 -45 4l-3 88c13 1 26 1 40 1c35 0 73 -1 112 -4c94 -5 150 -7 166 -7c57 0 113 1 168 3c54 2 103 4 146 5c42 0 71 1 86 2l-1 -14l2 -64v-9c-40 -6 -81 -9 -124 -9c-40 0 -66 -8 -79 -25c-9 -10 -13 -54 -13 -132c0 -24 1 -43 1 -58l1 -229l14 -280
+c4 -81 20 -148 51 -202c23 -39 55 -70 96 -92c60 -32 119 -47 177 -47c68 0 132 9 191 28c35 11 68 27 99 51c31 23 53 44 65 64c26 40 43 79 53 114c14 49 21 125 21 229c0 179 -13 184 -28 410l-4 59c-3 43 -10 73 -24 88c-22 23 -48 35 -77 34l-100 -2l-14 3l2 86h84
+l205 -10c68 -3 133 3 196 10l18 -2c4 -25 6 -42 6 -51s-2 -19 -4 -31c-27 -7 -55 -12 -84 -13c-47 -7 -74 -12 -79 -17c-9 -9 -15 -22 -15 -41c0 -13 2 -33 3 -58c0 0 8 -18 22 -396c5 -151 -5 -253 -15 -304s-24 -92 -41 -122c-26 -44 -64 -85 -112 -123
+c-49 -37 -109 -67 -182 -89s-158 -33 -255 -33c-110 0 -205 15 -284 46s-139 72 -179 122s-68 115 -83 195c-11 55 -16 134 -16 237v333c0 126 -6 197 -17 213c-16 23 -65 37 -147 39zM1536 -96c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1472
+c18 0 32 -14 32 -32v-64z" />
+    <glyph glyph-name="sun-o" unicode="&#xf185;" horiz-adv-x="1707" 
+d="M1430 640c0 318 -258 576 -576 576s-576 -258 -576 -576s258 -576 576 -576s576 258 576 576zM1706 363c-3 -10 -11 -17 -20 -20l-292 -96v-306c0 -10 -5 -20 -13 -26c-9 -6 -19 -8 -29 -4l-292 94l-180 -248c-6 -8 -16 -13 -26 -13s-20 5 -26 13l-180 248l-292 -94
+c-10 -4 -20 -2 -29 4c-8 6 -13 16 -13 26v306l-292 96c-9 3 -17 10 -20 20s-2 21 4 29l180 248l-180 248c-6 9 -7 19 -4 29s11 17 20 20l292 96v306c0 10 5 20 13 26c9 6 19 8 29 4l292 -94l180 248c12 16 40 16 52 0l180 -248l292 94c10 4 20 2 29 -4c8 -6 13 -16 13 -26
+v-306l292 -96c9 -3 17 -10 20 -20s2 -20 -4 -29l-180 -248l180 -248c6 -8 7 -19 4 -29z" />
+    <glyph glyph-name="activitypub" unicode="&#xf2f2;" horiz-adv-x="2032" 
+d="M924 1280v-1280l-185 107v853l-739 -427v214zM1109 1280l923 -533v-214l-923 -533v213l739 427l-739 427v213zM1109 853l369 -213l-369 -213v426zM554 640v-427l-369 214z" />
+    <glyph glyph-name="play-circle" unicode="&#xf144;" 
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM1152 585c20 11 32 32 32 55s-12 44 -32 55l-544 320c-19 12 -44 12 -64 1c-20 -12 -32 -33 -32 -56v-640c0 -23 12 -44 32 -56c10 -5 21 -8 32 -8s22 3 32 9z" />
+    <glyph glyph-name="share-square-o" unicode="&#xf045;" horiz-adv-x="1664" 
+d="M1408 547v-259c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h255c17 0 32 -14 32 -32c0 -16 -11 -29 -26 -32c-50 -17 -95 -37 -133 -60c-5 -2 -10 -4 -16 -4h-112c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832
+c88 0 160 72 160 160v214c0 12 7 23 18 29c20 9 38 22 54 37c9 9 23 13 35 8s21 -16 21 -29zM1645 1043l-384 -384c-12 -13 -28 -19 -45 -19c-8 0 -17 2 -25 5c-23 10 -39 33 -39 59v192h-160c-220 0 -360 -42 -438 -131c-81 -93 -105 -243 -74 -473c2 -14 -7 -28 -20 -34
+c-4 -1 -8 -2 -12 -2c-10 0 -20 5 -26 13c-7 10 -166 235 -166 435c0 268 84 576 736 576h160v192c0 26 16 49 39 59c8 3 17 5 25 5c17 0 33 -7 45 -19l384 -384c25 -25 25 -65 0 -90z" />
+    <glyph glyph-name="street-view" unicode="&#xf21d;" horiz-adv-x="1408" 
+d="M1408 0c0 -176 -365 -256 -704 -256s-704 80 -704 256c0 136 203 200 373 229c35 6 68 -17 74 -52s-17 -68 -52 -74c-206 -36 -264 -92 -267 -104c10 -34 202 -127 576 -127s566 93 576 129c-3 10 -61 66 -267 102c-35 6 -58 39 -52 74s39 58 74 52
+c170 -29 373 -93 373 -229zM1024 896v-384c0 -35 -29 -64 -64 -64h-64v-384c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v384h-64c-35 0 -64 29 -64 64v384c0 71 57 128 128 128h384c71 0 128 -57 128 -128zM928 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224
+s100 224 224 224s224 -100 224 -224z" />
+    <glyph glyph-name="arrow-circle-up" unicode="&#xf0aa;" 
+d="M1284 641c0 17 -6 33 -18 45l-362 362l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91l-362 -362c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91c12 -12 28 -18 45 -18s33 6 45 18l189 189v-502c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v502l189 -189
+c12 -12 28 -19 45 -19s33 7 45 19l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="podcast" unicode="&#xf2ce;" 
+d="M994 344c0 -66 -7 -132 -17 -197c-15 -104 -30 -211 -55 -313c-18 -73 -86 -90 -152 -90s-134 17 -152 90c-25 102 -40 209 -55 313c-10 65 -17 131 -17 197c0 135 109 168 224 168s224 -33 224 -168zM1536 768c0 -324 -200 -601 -484 -714c-11 -4 -23 6 -21 18
+c3 21 6 43 10 66c2 16 4 32 6 47c1 6 4 10 9 12c208 106 352 322 352 571c0 365 -306 659 -675 639c-338 -18 -607 -306 -605 -644c2 -249 147 -464 356 -568c5 -2 8 -7 9 -12c2 -14 4 -29 6 -45c4 -24 7 -46 11 -68c2 -12 -11 -22 -22 -17c-297 116 -504 412 -487 753
+c19 387 331 704 718 728c446 28 817 -326 817 -766zM994 800c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224zM1282 768c0 -165 -79 -313 -200 -406c-10 -8 -24 -1 -26 12c-3 28 -11 61 -29 92c-4 6 -3 14 3 20c76 70 124 170 124 282
+c0 226 -197 407 -428 382c-177 -20 -321 -166 -338 -344c-13 -126 37 -242 122 -320c6 -6 7 -14 3 -20c-18 -31 -26 -64 -29 -93c-2 -12 -16 -19 -26 -11c-124 96 -203 247 -200 417c6 266 222 488 487 500c294 14 537 -220 537 -511z" />
+    <glyph glyph-name="hackster" unicode="&#xf326;" 
+d="M768 -128c-424 0 -768 344 -768 768s344 768 768 768s768 -344 768 -768s-344 -768 -768 -768zM517 887c-10 -3 -17 -13 -17 -23s8 -18 18 -18h113c17 0 31 14 31 31v9c0 3 0 5 -1 8c-4 16 -22 26 -38 22zM661 739v59v5c-2 9 -12 13 -21 11l-325 -88c-5 -1 -9 -7 -9 -12
+s4 -9 9 -9h151c17 0 31 -14 31 -31v-86c0 -9 8 -17 17 -17h324c17 0 31 -13 31 -30v-59v-5c2 -9 12 -13 21 -11l325 88c5 1 9 7 9 12s-4 9 -9 9h-152c-17 0 -30 14 -30 31v85c0 9 -8 17 -17 17h-324c-17 0 -31 14 -31 31v0zM891 989c-13 -4 -23 -16 -23 -30v-176
+c0 -17 14 -31 31 -31h101c17 0 30 14 30 31v203v0c0 2 0 6 -1 8c-4 16 -21 26 -37 22zM1013 386c10 3 17 13 17 23s-8 19 -18 19h-113c-17 0 -31 -14 -31 -31v-9c0 -3 0 -5 1 -8c4 -16 22 -26 38 -22zM639 285c13 4 23 16 23 30v176c0 17 -14 30 -31 30h-101
+c-17 0 -30 -13 -30 -30v-204c0 -3 0 -5 1 -8c4 -16 21 -25 37 -21z" />
+    <glyph glyph-name="plus-square" unicode="&#xf0fe;" 
+d="M1280 576v128c0 35 -29 64 -64 64h-320v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-320c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h320v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h320c35 0 64 29 64 64zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920" 
+d="M1792 544v832c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1376v-1088c0 -88 -72 -160 -160 -160h-544c0 -85 64 -157 64 -192s-29 -64 -64 -64h-512c-35 0 -64 29 -64 64c0 37 64 105 64 192h-544
+c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="expeditedssl" unicode="&#xf23e;" horiz-adv-x="1792" 
+d="M896 1472c-459 0 -832 -373 -832 -832s373 -832 832 -832s832 373 832 832s-373 832 -832 832zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM496 704c9 0 16 -7 16 -16v-480c0 -9 -7 -16 -16 -16h-32c-9 0 -16 7 -16 16
+v480c0 9 7 16 16 16h32zM896 640c71 0 128 -57 128 -128c0 -47 -26 -88 -64 -110v-114c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v114c-38 22 -64 63 -64 110c0 71 57 128 128 128zM896 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768zM544 928v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 124 100 224 224 224s224 -100 224 -224v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 194 -158 352 -352 352s-352 -158 -352 -352zM1408 192v512c0 35 -29 64 -64 64h-896
+c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h896c35 0 64 29 64 64z" />
+    <glyph glyph-name="toggle-on" unicode="&#xf205;" horiz-adv-x="2048" 
+d="M0 640c0 353 287 640 640 640h768c353 0 640 -287 640 -640s-287 -640 -640 -640h-768c-353 0 -640 287 -640 640zM1408 128c282 0 512 230 512 512s-230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512z" />
+    <glyph glyph-name="minus-square" unicode="&#xf146;" 
+d="M1280 576v128c0 35 -29 64 -64 64h-896c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h896c35 0 64 29 64 64zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="adn" unicode="&#xf170;" 
+d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="whatsapp" unicode="&#xf232;" 
+d="M985 562c17 0 180 -85 187 -97c2 -5 2 -11 2 -15c0 -25 -8 -53 -17 -76c-23 -56 -116 -92 -173 -92c-48 0 -147 42 -190 62c-143 65 -232 176 -318 303c-38 56 -72 125 -71 194v8c2 66 26 113 74 158c15 14 31 22 52 22c12 0 24 -3 37 -3c27 0 32 -8 42 -34
+c7 -17 58 -153 58 -163c0 -38 -69 -81 -69 -104c0 -5 2 -10 5 -15c22 -47 64 -101 102 -137c46 -44 95 -73 151 -101c7 -4 14 -7 22 -7c30 0 80 97 106 97zM782 32c346 0 628 282 628 628s-282 628 -628 628s-628 -282 -628 -628c0 -132 42 -261 120 -368l-79 -233l242 77
+c102 -67 223 -104 345 -104zM782 1414c416 0 754 -338 754 -754s-338 -754 -754 -754c-127 0 -253 32 -365 94l-417 -134l136 405c-71 117 -108 252 -108 389c0 416 338 754 754 754z" />
+    <glyph glyph-name="puzzle-piece" unicode="&#xf12e;" horiz-adv-x="1664" 
+d="M1664 438c0 -103 -59 -189 -168 -189c-122 0 -154 111 -264 111c-80 0 -110 -50 -110 -124c0 -78 32 -153 31 -230v-5c-11 0 -22 0 -33 -1c-103 -10 -207 -30 -311 -30c-71 0 -145 28 -145 110c0 110 111 142 111 264c0 109 -86 168 -189 168c-105 0 -202 -58 -202 -173
+c0 -127 97 -182 97 -251c0 -35 -22 -66 -46 -89c-31 -29 -75 -35 -117 -35c-82 0 -164 11 -245 24c-18 3 -37 5 -55 8l-13 2c-2 1 -5 1 -5 2v1024c4 -3 63 -10 73 -12c81 -13 163 -24 245 -24c42 0 86 6 117 35c24 23 46 54 46 89c0 69 -97 124 -97 251
+c0 115 97 173 203 173c102 0 188 -59 188 -168c0 -122 -111 -154 -111 -264c0 -82 74 -110 145 -110c115 0 229 26 343 32v-2c-3 -4 -10 -63 -12 -73c-13 -81 -24 -163 -24 -245c0 -42 6 -86 35 -117c23 -24 54 -46 89 -46c69 0 124 97 251 97c115 0 173 -97 173 -202z" />
+    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1768" 
+d="M263 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
+    <glyph glyph-name="skyatlas" unicode="&#xf216;" horiz-adv-x="2048" 
+d="M1430 953c0 0 -1 1 0 0zM1690 749c194 0 358 -145 358 -343c0 -211 -168 -366 -376 -366c-531 0 -629 799 -1151 799c-202 0 -349 -129 -349 -336c0 -214 160 -343 367 -343c136 0 291 57 401 136c18 13 54 52 73 52s35 -16 35 -35c0 -25 -42 -61 -60 -77
+c-131 -114 -321 -196 -495 -196c-267 0 -493 189 -493 464s216 477 489 477c593 0 712 -787 1158 -787c134 0 235 87 235 224c0 127 -98 223 -224 223c-56 0 -112 -37 -150 -37c-27 0 -51 23 -51 50c0 37 17 76 17 116c0 213 -163 367 -374 367c-170 0 -256 -118 -284 -118
+c-20 0 -36 16 -36 36c0 18 13 33 25 46c81 92 207 140 329 140c254 0 445 -187 445 -441c0 -22 -1 -44 -4 -66c38 10 77 15 115 15z" />
+    <glyph glyph-name="level-down" unicode="&#xf149;" horiz-adv-x="1024" 
+d="M32 1280h704c18 0 32 -15 32 -33v-863h192c25 0 47 -15 58 -37c11 -23 7 -50 -9 -69l-320 -384c-24 -29 -74 -29 -98 0l-320 384c-16 19 -19 46 -9 69c11 22 33 37 58 37h192v640h-320c-9 0 -18 4 -25 11l-160 192c-8 9 -9 23 -4 34s17 19 29 19z" />
+    <glyph glyph-name="stack-overflow" unicode="&#xf16c;" horiz-adv-x="1514" 
+d="M1278 -96v480h160v-640h-1438v640h160v-480h1118zM336 428l33 157l783 -165l-33 -156zM439 802l67 146l725 -339l-67 -145zM640 1158l102 123l614 -513l-102 -123zM1037 1536l477 -641l-128 -96l-477 641zM319 65v159h800v-159h-800z" />
+    <glyph glyph-name="check-square-o" unicode="&#xf046;" horiz-adv-x="1663" 
+d="M1408 606v-318c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-6 -6 -15 -10 -23 -10c-3 0 -6 1 -9 2c-15 4 -30 6 -45 6h-832
+c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v254c0 8 3 16 9 22l64 64c7 7 15 10 23 10c4 0 8 -1 12 -3c12 -5 20 -16 20 -29zM1639 1095l-814 -814c-32 -32 -82 -32 -114 0l-430 430c-32 32 -32 82 0 114l110 110c32 32 82 32 114 0
+l263 -263l647 647c32 32 82 32 114 0l110 -110c32 -32 32 -82 0 -114z" />
+    <glyph glyph-name="emby" unicode="&#xf319;" horiz-adv-x="1534" 
+d="M474 224l-62 -62l-412 415l356 356l-60 61l414 414l355 -355l58 57l411 -414l-352 -352l58 -58l-414 -414zM1091 633l-496 291v-578z" />
+    <glyph glyph-name="hand-spock-o" unicode="&#xf259;" horiz-adv-x="1920" 
+d="M459 -256c-103 0 -192 70 -217 170l-101 401c-8 35 -13 72 -13 108c0 23 0 45 -5 67l-116 477c-5 19 -7 38 -7 57c0 124 94 226 217 239c22 113 119 193 235 193c111 0 207 -76 233 -184l83 -348l103 428c26 108 122 184 233 184c119 0 217 -86 236 -202
+c123 -14 212 -118 212 -241c0 -19 -3 -39 -7 -59l-123 -512c80 60 138 118 243 118c139 0 255 -113 255 -253c0 -84 -41 -162 -107 -212l-507 -380c-44 -33 -98 -51 -153 -51h-694zM1104 1408c-51 0 -96 -36 -108 -86l-164 -682h-127l-145 602c-12 50 -57 86 -108 86
+c-64 0 -112 -51 -112 -113c0 -10 1 -19 3 -28l132 -547h-26l-99 408c-12 49 -57 88 -109 88c-62 0 -113 -50 -113 -112c0 -9 1 -18 3 -26l116 -478c14 -58 4 -116 19 -174l100 -401c11 -43 49 -73 93 -73h694c27 0 54 9 76 26l507 379c34 26 56 67 56 110
+c0 70 -58 125 -127 125c-28 0 -55 -9 -77 -26l-307 -230v227c0 8 129 538 139 581c2 9 4 19 4 29c0 62 -47 115 -111 115c-52 0 -97 -36 -109 -86l-116 -482h-26l150 624c2 9 3 19 3 28c0 63 -46 116 -111 116z" />
+    <glyph glyph-name="scuttlebutt" unicode="&#xf2ea;" horiz-adv-x="1709" 
+d="M760 -126c-31 4 -114 28 -131 38c-5 3 -12 10 -16 16l-8 10l-7 -5c-14 -9 -14 -9 -151 60c-70 36 -134 68 -141 71c-21 10 -30 25 -45 74c-5 17 -6 19 -12 21c-18 7 -84 50 -121 78c-27 21 -66 60 -70 70c-10 25 -31 91 -37 112c-18 60 -21 88 -21 178c0 60 0 68 4 76
+c5 11 24 29 46 43c29 19 128 68 192 96l8 4l-4 8c-3 5 -16 24 -29 42l-24 33h-10c-21 1 -28 3 -48 16s-21 13 -39 41c-56 87 -91 163 -95 205c-4 46 23 129 52 160c9 9 17 16 28 22c16 8 17 8 40 8c19 0 25 -1 35 -5c27 -11 44 -29 49 -50c2 -11 2 -17 -1 -43
+c-9 -68 -1 -127 21 -163c4 -6 16 -19 28 -29c19 -17 38 -37 38 -43c0 -7 4 -1 11 15c9 23 70 138 78 148l5 8l-2 25c-8 86 -8 113 0 139c5 18 16 33 31 39c26 12 96 16 121 8c15 -5 28 -14 35 -26c5 -7 6 -12 7 -27l1 -18l52 8c71 11 95 16 116 24c26 10 38 13 57 13
+c29 0 45 -6 104 -37c137 -72 176 -97 219 -139c24 -23 28 -31 49 -73c17 -34 19 -37 38 -57l20 -21l23 6c28 8 37 8 49 2c10 -5 22 -21 22 -29c0 -2 4 -9 9 -16c7 -10 24 -34 39 -58c0 0 6 1 12 3c13 5 27 6 38 1c4 -2 17 -10 28 -19c11 -8 20 -15 21 -15s12 -7 25 -15
+c13 -9 27 -17 32 -18s14 -6 20 -9c13 -8 27 -10 64 -13c15 -1 31 -4 35 -5c18 -5 46 -31 55 -51c8 -18 5 -43 -9 -65c-4 -6 -18 -21 -30 -33s-23 -23 -24 -26s1 -24 4 -47c8 -67 4 -101 -13 -127c-8 -12 -29 -26 -59 -40c-13 -6 -24 -13 -27 -15s-8 -14 -12 -26
+c-9 -26 -17 -44 -26 -54c-8 -10 -10 -18 -13 -57c-4 -53 -10 -71 -37 -99c-20 -21 -37 -29 -70 -39c-11 -3 -49 -16 -85 -28c-35 -12 -66 -22 -68 -22s-6 -5 -9 -11c-14 -25 -33 -48 -63 -75c-48 -43 -116 -83 -163 -97c-9 -3 -16 -7 -24 -14c-43 -38 -88 -56 -154 -62
+c-28 -2 -42 -3 -63 0zM820 -67c13 1 31 5 41 7c18 4 49 17 49 20c0 1 -9 6 -20 12s-37 22 -56 36c-70 48 -117 94 -124 121c-9 35 -9 157 1 321c2 29 3 52 2 53c-3 3 -131 99 -131 99c-2 -2 -20 -148 -25 -210c-5 -54 -7 -145 -4 -170c3 -21 10 -46 32 -105
+c24 -66 44 -109 63 -139l9 -14l26 -8c44 -15 83 -25 104 -25c5 0 20 1 33 2zM559 26c-15 35 -29 69 -47 122c-14 40 -15 45 -17 70c-6 75 4 212 26 365c4 29 7 55 7 57c0 3 -11 12 -33 28c-30 22 -50 32 -58 32c-5 0 -83 -100 -120 -153c-34 -49 -63 -103 -68 -122
+c-2 -10 42 -188 64 -258c16 -52 -1 -38 137 -108l120 -60s-5 12 -11 27zM988 8c27 8 80 38 113 63c21 16 45 38 44 39c-1 0 -24 -2 -51 -6c-28 -4 -58 -7 -68 -7c-45 0 -82 18 -99 48c-8 14 -22 51 -31 82c-7 24 -8 30 -9 64c-1 30 -3 43 -7 59c-6 22 -18 48 -26 55
+c-9 8 -48 36 -57 40c-5 2 -13 7 -18 10l-9 6l-1 -10c-4 -31 -7 -124 -7 -206c0 -107 -2 -99 22 -123c49 -49 155 -116 185 -117c4 0 13 1 19 3zM1086 191c27 4 59 9 71 11c31 6 92 24 138 41c22 8 49 17 61 20c39 11 51 21 55 44c1 8 2 8 -3 7c-48 -15 -87 -22 -143 -24
+c-94 -4 -148 8 -226 46c-23 12 -57 33 -74 47c-5 4 -9 7 -9 7s3 -13 6 -27c5 -20 7 -33 8 -62c2 -39 6 -57 22 -97c6 -14 7 -16 13 -18c12 -4 31 -2 81 5zM232 241c-1 2 -10 37 -20 78s-19 77 -20 79c-4 8 -3 30 3 48c18 54 75 143 164 253c11 13 19 25 19 26
+c0 3 -40 24 -53 27c-7 2 -20 6 -27 9c-13 5 -14 5 -22 1c-4 -2 -28 -13 -53 -24c-76 -34 -138 -68 -159 -84l-7 -5l1 -71c1 -78 3 -88 17 -138c6 -20 26 -79 36 -106c3 -8 33 -36 58 -55c20 -15 62 -42 64 -42c0 0 0 2 -1 4v0zM1306 380c32 4 65 11 87 20c16 7 40 20 47 27
+c5 5 12 18 11 20l-24 -2c-44 -4 -92 -5 -118 -2c-32 3 -55 10 -86 26c-59 29 -105 72 -127 117c-11 23 -13 31 -13 52c0 63 43 117 183 229c22 17 40 32 41 33c0 1 -7 14 -17 29l-18 28l-11 2c-11 2 -13 2 -44 -8c-41 -14 -52 -16 -104 -22c-23 -2 -48 -7 -55 -9
+c-17 -5 -40 -21 -57 -39c-19 -20 -75 -92 -90 -116c-19 -29 -19 -33 -11 -52c4 -9 13 -27 20 -41s16 -33 20 -43c6 -16 9 -25 23 -88c7 -34 14 -49 32 -69c31 -33 75 -60 131 -80c49 -17 105 -20 180 -12zM889 488c0 0 -1 6 -3 12s-6 26 -10 44c-8 41 -14 58 -29 86
+c-16 31 -34 71 -37 83c-3 14 1 37 9 58c10 24 35 62 74 111c54 68 87 98 126 115c19 8 40 13 80 17c18 2 35 4 38 5c5 1 5 1 -2 9c-11 13 -23 33 -36 62c-10 22 -16 31 -26 42c-29 31 -63 54 -150 100c-35 18 -68 36 -73 39c-14 9 -36 17 -46 17c-5 0 -19 -4 -31 -9
+c-25 -10 -61 -17 -144 -30c-29 -5 -53 -9 -54 -9c-3 -3 -2 -38 1 -62c7 -50 24 -108 42 -142c9 -18 10 -29 4 -39c-5 -8 -27 -28 -34 -31c-9 -4 -12 -25 -11 -72c0 -33 0 -38 6 -57c9 -29 14 -67 13 -106l-1 -32l86 -65c112 -84 134 -100 153 -111c9 -5 24 -15 34 -22
+c16 -12 21 -15 21 -13zM1392 530c61 4 104 12 148 30l26 11v13c1 12 -2 47 -4 49c0 1 -6 -1 -10 -3c-22 -12 -53 -16 -74 -9c-34 12 -72 52 -86 90c-5 13 -5 18 -4 34s1 21 7 34c8 18 25 39 39 51c6 5 11 9 11 10s-3 3 -7 4c-4 2 -14 8 -22 14l-14 11l-19 -16
+c-10 -9 -37 -32 -61 -51c-70 -55 -85 -67 -114 -98c-24 -24 -29 -32 -36 -46c-7 -13 -6 -18 -4 -28c10 -26 42 -57 80 -77c44 -24 66 -28 144 -23zM1533 717c27 16 74 54 62 49c-2 -1 -9 -2 -16 -3c-15 -1 -28 5 -38 17c-6 8 -8 8 -15 6c-18 -5 -43 -23 -51 -36
+c-4 -7 -5 -9 -2 -15c1 -4 8 -12 14 -19c11 -11 12 -12 20 -11c5 1 17 6 26 12zM525 805c-4 36 -5 39 -38 113c-9 21 -11 22 -17 22c-8 0 -16 4 -23 11c-3 3 -13 28 -23 55c-13 36 -18 48 -19 46c-4 -5 -29 -57 -35 -72c-10 -27 -13 -43 -19 -90c-4 -25 -7 -48 -7 -50
+c0 -3 5 -4 15 -7c8 -2 18 -7 23 -10s14 -7 20 -11s16 -10 21 -13s24 -10 41 -16c23 -8 35 -14 47 -22l16 -11v11c0 6 0 26 -2 44zM210 969c12 6 27 21 27 26c0 1 -11 11 -24 23c-40 34 -56 64 -67 125c-5 27 -5 80 0 114c4 24 4 25 0 27c-14 9 -30 11 -43 4
+c-9 -4 -10 -7 -21 -30c-22 -47 -28 -86 -19 -114c10 -32 40 -90 75 -146c26 -41 40 -47 72 -29zM519 1007c20 5 27 8 36 14c2 2 2 6 -4 22c-12 30 -23 69 -29 103c-7 36 -7 79 -3 124c3 27 2 70 -1 73c-5 5 -72 -1 -79 -7c-4 -4 -6 -29 -3 -62c-2 -41 16 -99 14 -134
+c-2 -25 0 -32 22 -93c14 -39 16 -45 20 -45c2 0 15 2 27 5z" />
+    <glyph glyph-name="social-home" unicode="&#xf2ec;" horiz-adv-x="1486" 
+d="M491 894h482v-621h-482v621v0zM1050 538h341v-666h-341v666zM91 273v0v620h318v-620h-318zM975 -128h-882v326h882v-326v0zM1053 894h340v-279h-340v279zM1452 1109v0c20 -5 34 -22 34 -44c0 -26 -93 -93 -93 -93h-1300s-87 62 -92 83s5 42 25 51l624 292
+c16 9 99 9 112 0z" />
+    <glyph glyph-name="leanpub" unicode="&#xf212;" horiz-adv-x="2048" 
+d="M1893 1144l155 -1272c-93 0 -173 19 -257 57c-125 57 -255 91 -393 91c-142 0 -273 -47 -374 -148c-101 101 -232 148 -374 148c-138 0 -268 -34 -393 -91c-81 -36 -163 -57 -252 -57h-5l155 1272c143 81 317 127 482 127c135 0 274 -28 387 -106c113 78 252 106 387 106
+c165 0 339 -46 482 -127zM1398 157c190 0 320 -51 492 -122l-124 1021c-112 51 -245 78 -368 78c-140 0 -271 -44 -374 -141c-103 97 -234 141 -374 141c-123 0 -256 -27 -368 -78l-124 -1021c172 71 302 122 492 122c137 0 258 -35 374 -108c116 73 237 108 374 108z
+M1438 191l-40 1c-132 3 -261 -32 -374 -102c-113 70 -242 102 -374 102c-166 0 -299 -39 -450 -101l114 941c104 43 224 66 336 66c150 0 269 -48 374 -155c101 103 215 152 359 155z" />
+    <glyph glyph-name="arrow-circle-left" unicode="&#xf0a8;" 
+d="M1280 576v128c0 35 -29 64 -64 64h-502l189 189c12 12 19 28 19 45s-7 33 -19 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-362 -362l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91l362 -362c12 -12 28 -18 45 -18s33 6 45 18l91 91c12 12 18 28 18 45
+s-6 33 -18 45l-189 189h502c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="exclamation-triangle" unicode="&#xf071;" horiz-adv-x="1792" 
+d="M1024 161v190c0 18 -14 33 -32 33h-192c-18 0 -32 -15 -32 -33v-190c0 -18 14 -33 32 -33h192c18 0 32 15 32 33zM1022 535l18 459c0 6 -3 14 -10 19c-6 5 -15 11 -24 11h-220c-9 0 -18 -6 -24 -11c-7 -5 -10 -15 -10 -21l17 -457c0 -13 15 -23 34 -23h185
+c18 0 33 10 34 23zM1008 1469l768 -1408c22 -39 21 -87 -2 -126s-65 -63 -110 -63h-1536c-45 0 -87 24 -110 63s-24 87 -2 126l768 1408c22 41 65 67 112 67s90 -26 112 -67z" />
+    <glyph glyph-name="gift" unicode="&#xf06b;" 
+d="M928 180v716h-320v-716c0 -35 29 -52 64 -52h192c35 0 64 17 64 52zM472 1024h195l-126 161c-11 13 -35 31 -69 31c-53 0 -96 -43 -96 -96s43 -96 96 -96zM1160 1120c0 53 -43 96 -96 96c-34 0 -58 -18 -69 -31l-125 -161h194c53 0 96 43 96 96zM1536 864v-320
+c0 -18 -14 -32 -32 -32h-96v-416c0 -53 -43 -96 -96 -96h-1088c-53 0 -96 43 -96 96v416h-96c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h440c-124 0 -224 100 -224 224s100 224 224 224c67 0 129 -28 168 -77l128 -165l128 165c39 49 101 77 168 77
+c124 0 224 -100 224 -224s-100 -224 -224 -224h440c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920" 
+d="M896 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1664 128c0 70 -58 128 -128 128s-128 -58 -128 -128c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1664 1152c0 70 -58 128 -128 128s-128 -58 -128 -128
+c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1280 731v-185c0 -13 -10 -28 -23 -30l-155 -24c-8 -26 -19 -51 -32 -76c28 -40 58 -77 90 -115c4 -6 7 -12 7 -20c0 -7 -2 -14 -7 -19c-20 -27 -132 -149 -161 -149c-8 0 -15 3 -21 7l-115 90c-25 -13 -50 -23 -77 -31
+c-5 -51 -10 -106 -23 -155c-4 -14 -16 -24 -30 -24h-186c-14 0 -28 11 -30 25l-23 153c-26 8 -51 19 -75 31l-118 -89c-5 -5 -13 -7 -20 -7c-8 0 -15 3 -21 8c-26 24 -144 131 -144 160c0 7 3 13 7 19c29 38 59 75 88 114c-14 27 -26 54 -35 82l-152 24c-14 2 -24 15 -24 29
+v185c0 13 10 28 23 30l155 24c8 26 19 51 32 76c-28 40 -58 77 -90 115c-4 6 -7 13 -7 20s2 14 7 20c20 27 132 148 161 148c8 0 15 -3 21 -7l115 -90c25 13 50 23 77 32c5 50 10 105 23 154c4 14 16 24 30 24h186c14 0 28 -11 30 -25l23 -153c26 -8 51 -19 75 -31l118 89
+c6 5 13 7 20 7c8 0 15 -3 21 -8c26 -24 144 -132 144 -160c0 -7 -3 -13 -7 -19c-29 -39 -59 -75 -87 -114c13 -27 25 -54 34 -82l152 -23c14 -3 24 -16 24 -30zM1920 198v-140c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7
+c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52
+c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31zM1920 1222v-140
+c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138
+c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7
+c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31z" />
+    <glyph glyph-name="hackaday" unicode="&#xf30a;" horiz-adv-x="1686" 
+d="M215 1408c118 0 214 -95 215 -213v-2c0 -11 -1 -21 -3 -31l168 -149c-60 -45 -109 -106 -142 -178l-173 154c-21 -7 -42 -11 -65 -11c-119 0 -215 96 -215 215c0 14 1 28 4 42l138 -122l150 167l-134 120c18 5 37 8 57 8zM1247 436l162 -143c17 5 45 9 62 9v0
+c118 0 214 -95 215 -213v-2c0 -13 -2 -26 -4 -39l-139 123l-150 -166l140 -124c-20 -6 -41 -9 -62 -9c-119 0 -215 96 -215 215c0 12 1 24 3 35l-140 124c56 50 100 115 128 190zM1471 1408c20 0 39 -3 57 -8l-134 -120l150 -167l138 122c3 -14 4 -28 4 -42
+c0 -119 -96 -215 -215 -215c-23 0 -44 4 -65 11l-174 -154c-33 72 -81 133 -141 178l167 149c-2 10 -2 20 -2 31v2c1 118 97 213 215 213zM439 436v0c28 -75 71 -140 127 -190l-139 -124c2 -11 3 -23 3 -35c0 -119 -96 -215 -215 -215c-21 0 -42 3 -62 9l140 124l-150 166
+l-139 -123c-2 13 -4 26 -4 39v2c1 118 97 213 215 213v0c17 0 45 -4 62 -9zM843 1062c222 0 401 -199 401 -445c0 -153 -69 -288 -175 -368c8 -12 12 -26 12 -41c0 -42 -33 -76 -75 -76s-76 34 -76 76c0 4 0 8 1 12h-13c1 -3 0 -9 0 -12v0c0 -42 -33 -76 -75 -76
+s-76 34 -76 76c0 4 0 8 1 12h-10v-9c0 -43 -35 -79 -77 -79s-77 36 -77 79c0 15 4 28 11 40c-105 80 -173 214 -173 366c0 246 179 445 401 445zM670 730c-8 0 -15 -1 -22 -3c-28 -4 -52 -23 -69 -45c-15 -18 -26 -40 -26 -64c-2 -20 1 -39 5 -58c5 -23 21 -41 39 -54
+c8 -7 20 -16 31 -8c7 9 1 23 7 33c2 10 9 18 18 23c18 9 37 18 57 25c16 5 29 15 43 24c18 14 30 40 21 62c-10 18 -22 34 -39 46c-19 12 -42 19 -65 19zM1015 730c-23 0 -45 -7 -64 -19c-17 -12 -29 -28 -39 -46c-9 -22 3 -48 21 -62c14 -9 27 -19 43 -24
+c20 -7 38 -16 56 -25c9 -5 17 -13 19 -23c6 -10 0 -24 7 -33c11 -8 23 1 31 8c18 13 34 31 39 54c4 19 7 38 5 58c0 24 -11 46 -26 64c-17 22 -41 41 -69 45c-7 2 -15 3 -23 3zM844 502c-20 1 -44 -88 -40 -126c12 -51 16 36 40 36c23 -1 19 -88 37 -35
+c5 35 -16 124 -37 125z" />
+    <glyph glyph-name="frown-o" unicode="&#xf119;" 
+d="M1134 307c11 -34 -8 -69 -41 -80c-34 -11 -70 8 -81 42c-33 107 -132 179 -244 179s-211 -72 -244 -179c-11 -34 -47 -53 -80 -42c-34 11 -53 46 -42 80c50 161 197 269 366 269s316 -108 366 -269zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
+s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
+s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="opera" unicode="&#xf26a;" horiz-adv-x="1792" 
+d="M1493 1308c-105 70 -228 110 -359 110c-213 0 -401 -109 -533 -273c-96 -120 -163 -290 -168 -484v-42c5 -194 72 -364 168 -484c132 -164 320 -273 533 -273c131 0 254 40 359 110c-158 -142 -368 -228 -597 -228c-14 0 -29 0 -43 1c-475 22 -853 414 -853 895
+c0 495 401 896 896 896h3c228 -1 436 -87 594 -228zM1792 640c0 -261 -112 -495 -290 -659c-68 -41 -143 -63 -222 -63c-92 0 -179 30 -255 84c203 74 353 331 353 638c0 306 -149 563 -352 638c76 53 162 83 254 83c81 0 157 -23 226 -65c176 -164 286 -397 286 -656z" />
+    <glyph glyph-name="viadeo" unicode="&#xf2a9;" horiz-adv-x="1278" 
+d="M1050 430c0 -143 -50 -269 -147 -374c-101 -110 -229 -161 -378 -161c-148 0 -277 50 -378 161c-97 105 -147 231 -147 374c0 297 224 540 525 540c62 0 124 -10 182 -31c-20 -39 -34 -82 -39 -126c-45 19 -94 28 -143 28c-227 0 -394 -194 -394 -414
+c0 -224 166 -407 394 -407s393 183 393 407c0 57 -10 113 -32 166c44 9 86 26 123 49c28 -67 41 -140 41 -212zM846 619c0 111 -19 221 -55 326c3 -34 3 -69 3 -103c0 -268 -53 -707 -342 -817c20 -3 41 -5 62 -5l14 1c216 136 318 346 318 598zM791 947v-2
+c-52 153 -124 301 -206 440c126 -85 195 -291 206 -438zM1035 744c-62 0 -117 33 -160 75c102 56 231 143 290 247c7 14 19 40 21 56c-58 -130 -206 -232 -344 -264c-22 34 -35 72 -35 113c0 48 24 112 60 147c41 39 102 59 157 74c80 22 145 84 180 159
+c52 -74 74 -164 74 -253c0 -45 -7 -127 -24 -170c-37 -90 -112 -184 -219 -184z" />
+    <glyph glyph-name="battery-empty" unicode="&#xf244;" horiz-adv-x="2304" 
+d="M2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960
+c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
+    <glyph glyph-name="freedombox" unicode="&#xf2fd;" horiz-adv-x="1816" 
+d="M152 1274v0h10c90 -2 180 -36 272 -79c4 -2 11 -5 15 -7c7 -3 13 -7 20 -10c116 -58 199 -126 267 -210l3 -3c2 -2 4 -7 6 -9l-255 -148l9 -492l37 465l50 -29l10 -491l37 464l49 -29l10 -490l37 463l50 -29l9 -488l37 461l50 -29l10 -487l37 466l422 245l-267 155
+c2 3 5 5 7 8s5 6 7 9c70 83 157 151 278 208c101 48 200 86 296 86h9c45 -1 84 -15 110 -44c80 -92 -8 -177 -39 -293c-41 -155 6 -321 -118 -429c-43 -37 -93 -47 -143 -52c65 -77 103 -183 82 -292c-4 -21 -10 -42 -18 -61c-6 -17 -13 -32 -22 -47l-9 -15
+c-2 -2 -3 -5 -5 -7c-63 -94 -168 -154 -281 -161c-6 0 -11 -1 -17 -1h-9c-15 0 -39 3 -53 5c-19 3 -49 12 -67 19c-3 1 -7 2 -9 3c-69 29 -124 80 -159 143c-2 3 -4 5 -5 8c-2 3 -5 3 -7 0c-1 -3 -3 -5 -5 -8s-2 -5 -4 -8c-48 -81 -131 -140 -231 -157c-12 -2 -23 -3 -35 -4
+c-6 0 -12 -1 -18 -1c-169 -3 -327 118 -361 292c-21 109 18 215 83 292c-50 5 -101 15 -144 52c-124 108 -78 274 -119 429c-31 116 -118 201 -38 293c26 29 65 43 110 44h9z" />
+    <glyph glyph-name="file-epub" unicode="&#xf321;" 
+d="M723 132l458 458l70 -71c24 -24 24 -64 0 -88l-483 -483c-24 -24 -65 -24 -89 0l-483 483c-24 24 -24 64 0 88l483 484c24 24 65 24 89 0l298 -299l-343 -343l-114 114l229 229l-115 114l-343 -343zM1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344
+c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416h-768v-1536h1280z" />
+    <glyph glyph-name="chevron-circle-left" unicode="&#xf137;" 
+d="M909 141l102 102c25 25 25 65 0 90l-307 307l307 307c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792" 
+d="M256 96v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 224v-320c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 480v-576c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 864v-960c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1376v-1472c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1472
+c0 18 14 32 32 32h192c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792" 
+d="M1792 288v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320
+c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192c0 70 58 128 128 128h512v192h-96c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h320c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-96v-192h512c70 0 128 -58 128 -128v-192h96
+c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="wheelchair-alt" unicode="&#xf29b;" horiz-adv-x="1399" 
+d="M1370 723c21 -22 32 -52 29 -82l-44 -551c-5 -56 -51 -98 -106 -98c-3 0 -6 0 -9 1c-59 4 -102 56 -98 114l35 429l-143 -8c35 -72 55 -154 55 -240c0 -144 -56 -275 -148 -372l-137 137c56 62 91 145 91 235c0 194 -157 351 -350 351c-91 0 -173 -35 -236 -92l-137 138
+c77 73 175 123 284 141l264 300l-149 87l-181 -161c-44 -40 -111 -36 -150 8s-35 111 8 150l239 213c34 31 84 36 124 12c487 -283 488 -283 488 -283c26 -15 41 -41 48 -68c10 -39 3 -83 -26 -117l-205 -232l371 20c31 2 61 -9 83 -32zM1172 1180c-98 0 -178 79 -178 178
+c0 98 80 178 178 178c99 0 179 -80 179 -178c0 -99 -80 -178 -179 -178zM545 -62c72 0 140 23 196 61l139 -139c-92 -73 -209 -116 -335 -116c-301 0 -545 244 -545 544c0 127 43 243 116 336l139 -139c-38 -56 -60 -124 -60 -197c0 -193 157 -350 350 -350z" />
+    <glyph glyph-name="external-link-square" unicode="&#xf14c;" 
+d="M1280 608v480c0 35 -29 64 -64 64h-480c-26 0 -49 -16 -59 -39c-10 -24 -5 -52 14 -70l144 -144l-534 -534c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l534 534l144 -144c12 -13 28 -19 45 -19c8 0 17 2 25 5c23 10 39 33 39 59zM1536 1120v-960
+c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="google" unicode="&#xf1a0;" horiz-adv-x="1505" 
+d="M768 750h725c7 -39 12 -77 12 -128c0 -438 -294 -750 -737 -750c-425 0 -768 343 -768 768s343 768 768 768c207 0 381 -76 515 -201l-209 -201c-57 55 -157 119 -306 119c-262 0 -476 -217 -476 -485s214 -485 476 -485c304 0 418 218 436 331h-436v264z" />
+    <glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="768" 
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1576" 
+d="M1576 1128c-44 -64 -99 -121 -162 -167c1 -14 1 -28 1 -42c0 -427 -325 -919 -919 -919c-183 0 -353 53 -496 145c26 -3 51 -4 78 -4c151 0 290 51 401 138c-142 3 -261 96 -302 224c20 -3 40 -5 61 -5c29 0 58 4 85 11c-148 30 -259 160 -259 317v4
+c43 -24 93 -39 146 -41c-87 58 -144 157 -144 269c0 60 16 115 44 163c159 -196 398 -324 666 -338c-5 24 -8 49 -8 74c0 178 144 323 323 323c93 0 177 -39 236 -102c73 14 143 41 205 78c-24 -75 -75 -138 -142 -178c65 7 128 25 186 50z" />
+    <glyph glyph-name="battery-full" unicode="&#xf240;" horiz-adv-x="2304" 
+d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288zM2304 832v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856
+c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160c71 0 128 -57 128 -128z" />
+    <glyph glyph-name="deaf" unicode="&#xf2a4;" horiz-adv-x="1792" 
+d="M1056 704c0 124 -101 224 -224 224s-224 -100 -224 -224c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352c0 -35 -29 -64 -64 -64s-64 29 -64 64zM835 1280c318 0 576 -258 576 -576c0 -166 -78 -255 -146 -334
+c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 318 258 576 576 576
+zM591 561l226 -226l-579 -579c-16 -16 -42 -16 -58 0l-168 168c-16 16 -16 42 0 58zM1612 1524l168 -168c16 -16 16 -42 0 -59l-233 -233l-26 -25l-71 -71c-43 100 -109 188 -195 258l91 91l207 207c17 16 43 16 59 0z" />
+    <glyph glyph-name="window-close-o" unicode="&#xf2d4;" horiz-adv-x="1792" 
+d="M1257 425l-146 -146c-13 -13 -33 -13 -46 0l-169 169l-169 -169c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l169 169l-169 169c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l169 -169l169 169c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-169 -169
+l169 -169c13 -13 13 -33 0 -46zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408" 
+d="M1408 296c0 -36 -16 -106 -31 -139c-21 -49 -77 -81 -122 -106c-59 -32 -119 -51 -186 -51c-93 0 -177 38 -262 69c-61 22 -120 49 -175 83c-170 105 -375 310 -480 480c-34 55 -61 114 -83 175c-31 85 -69 169 -69 262c0 67 19 127 51 186c25 45 57 101 106 122
+c33 15 103 31 139 31c7 0 14 0 21 -3c21 -7 43 -56 53 -76c32 -57 63 -115 96 -171c16 -26 46 -58 46 -89c0 -61 -181 -150 -181 -204c0 -27 25 -62 39 -86c101 -182 227 -308 409 -409c24 -14 59 -39 86 -39c54 0 143 181 204 181c31 0 63 -30 89 -46
+c56 -33 114 -64 171 -96c20 -10 69 -32 76 -53c3 -7 3 -14 3 -21z" />
+    <glyph glyph-name="mars-double" unicode="&#xf227;" horiz-adv-x="1920" 
+d="M1536 1120c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -243 -240 -434 -484 -468c-286 -40 -539 131 -626 380c-316 16 -565 288 -544 613c18 274 235 502 508 533
+c161 19 311 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c40 -50 71 -107 93 -169c124 -6 237 -52 328 -124l255 254h-134c-18 0 -32 14 -32 32v64z
+M1024 704c0 20 -2 39 -4 58c-215 -33 -380 -218 -380 -442c0 -20 2 -39 4 -58c215 33 380 218 380 442zM128 704c0 -226 169 -413 387 -443c-2 19 -3 39 -3 59c0 282 204 517 473 566c-70 157 -227 266 -409 266c-247 0 -448 -201 -448 -448zM1088 -128
+c247 0 448 201 448 448c0 226 -169 413 -387 443c2 -19 3 -39 3 -59c0 -282 -204 -517 -473 -566c70 -157 227 -266 409 -266z" />
+    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1755" 
+d="M1745 763l-164 -763h-334l178 832c8 35 3 67 -15 88c-17 21 -47 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276c135 0 258 -56 337 -154c80 -98 109 -231 81 -363z" />
+    <glyph glyph-name="hand-peace-o" unicode="&#xf25b;" 
+d="M1288 889c37 0 74 -7 107 -23c96 -43 141 -122 141 -226v-177c0 -63 -8 -126 -23 -186l-85 -339c-28 -114 -130 -194 -248 -194h-668c-141 0 -256 115 -256 256v401l-239 628c-11 29 -17 60 -17 91c0 141 115 256 256 256c106 0 202 -66 239 -165l17 -44v113
+c0 141 115 256 256 256s256 -115 256 -256v-261c16 3 32 5 48 5c92 0 176 -53 216 -135zM1072 896c-44 0 -84 -26 -102 -66l-74 -163l-71 -155h55c67 0 126 -47 140 -112l154 338c7 14 10 30 10 46c0 62 -50 112 -112 112zM1293 761c-76 0 -100 -61 -127 -121l-132 -290
+c-7 -14 -10 -30 -10 -46c0 -62 50 -112 112 -112c44 0 84 26 102 66l160 352c5 10 9 26 9 38c0 67 -48 113 -114 113zM128 1120c0 -16 3 -31 8 -46l248 -650v-69l102 111c27 29 66 46 106 46h198l106 233v535c0 71 -57 128 -128 128s-128 -57 -128 -128v-640h-64l-200 526
+c-19 49 -67 82 -120 82c-71 0 -128 -58 -128 -128zM1180 -128c59 0 110 40 124 97l85 339c13 50 19 103 19 155v91l-141 -310c-23 -51 -75 -84 -131 -84c-70 0 -131 51 -142 121c-27 -35 -69 -57 -114 -57h-208v32h208c61 0 116 50 116 112c0 61 -46 112 -108 112h-296
+c-31 0 -61 -13 -82 -36l-126 -136v-308c0 -71 57 -128 128 -128h668z" />
+    <glyph glyph-name="envira" unicode="&#xf299;" horiz-adv-x="1792" 
+d="M896 720c-127 240 -244 474 -577 632c-199 94 -21 -37 -21 -37c181 -125 264 -294 361 -479c126 -241 316 -559 577 -671c260 -112 137 -50 24 34c-113 85 -273 348 -364 521zM549 177c-361 286 -341 628 -549 1359c1911 0 1467 -1269 1469 -1465l323 -327h-104l-281 285
+c-156 -17 -498 -138 -858 148z" />
+    <glyph glyph-name="lastfm-square" unicode="&#xf203;" 
+d="M1432 484c0 141 -114 205 -234 239c-55 15 -100 28 -120 88c-1 5 -6 24 -6 28c0 48 38 83 85 83c22 0 53 1 71 -15h-1c19 -14 28 -30 39 -51l93 71c-15 21 -30 46 -49 64c-47 42 -91 49 -153 49c-105 0 -204 -86 -204 -195c0 -8 1 -15 2 -23c22 -136 91 -178 213 -213
+c60 -17 145 -44 146 -118v-5c1 -80 -66 -128 -141 -128c-82 0 -135 78 -167 144c-116 239 -134 538 -478 538c-207 0 -393 -191 -386 -396v-1c7 -214 154 -403 380 -403c107 0 207 25 279 110c12 16 23 33 31 51l-60 109c-56 -106 -125 -152 -245 -152
+c-158 0 -267 140 -267 291c0 139 128 273 268 273c160 0 218 -83 274 -226c67 -172 139 -456 371 -456c139 0 259 101 259 244zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1612" 
+d="M1382 544v-480c0 -35 -29 -64 -64 -64h-384v384h-256v-384h-384c-35 0 -64 29 -64 64v480c0 2 1 4 1 6l575 474l575 -474c1 -2 1 -4 1 -6zM1605 613l-62 -74c-5 -6 -13 -10 -21 -11h-3c-8 0 -15 2 -21 7l-692 577l-692 -577c-7 -5 -15 -8 -24 -7c-8 1 -16 5 -21 11
+l-62 74c-11 13 -9 34 4 45l719 599c42 35 110 35 152 0l244 -204v195c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-408l219 -182c13 -11 15 -32 4 -45z" />
+    <glyph glyph-name="empire" unicode="&#xf1d1;" horiz-adv-x="1792" 
+d="M874 -102v-66c-282 8 -529 160 -668 385l58 34c21 -35 46 -68 73 -99l65 57c94 -107 222 -183 368 -212l-17 -86c39 -7 80 -12 121 -13zM276 428l-83 -28c14 -39 30 -76 49 -112l-57 -33c-62 114 -98 246 -98 385s36 271 98 385l57 -33c-19 -35 -36 -73 -49 -112l82 -28
+c-23 -66 -35 -138 -35 -212s13 -146 36 -212zM1528 251l58 -34c-139 -225 -386 -377 -668 -385v66c41 1 82 6 121 13l-17 86c146 29 274 105 368 212l65 -57c27 31 52 64 73 99zM1377 805l-233 -80c9 -27 14 -55 14 -85s-5 -58 -14 -85l232 -80c-21 -63 -55 -120 -98 -169
+l-185 162c-37 -43 -88 -73 -147 -85l48 -241c-31 -6 -64 -10 -98 -10s-67 4 -98 10l48 241c-59 12 -110 42 -147 85l-185 -162c-43 49 -77 106 -98 169l232 80c-9 27 -14 55 -14 85s5 58 14 85l-233 80c22 63 56 120 99 169l185 -162c37 43 88 74 147 86l-48 240
+c31 7 64 10 98 10s67 -3 98 -10l-48 -240c59 -12 110 -43 147 -86l185 162c43 -49 77 -106 99 -169zM874 1448v-66c-41 -1 -82 -5 -121 -13l17 -86c-146 -28 -274 -104 -368 -211l-65 56c-27 -30 -51 -63 -73 -98l-57 33c139 226 385 377 667 385zM1705 640
+c0 -139 -36 -271 -98 -385l-57 33c19 36 35 73 49 112l-83 28c23 66 36 138 36 212s-12 146 -35 212l82 28c-13 39 -30 77 -49 112l57 33c62 -114 98 -246 98 -385zM1585 1063l-57 -33c-22 35 -46 68 -73 98l-65 -56c-94 107 -222 183 -368 211l17 86c-39 8 -80 12 -121 13
+v66c282 -8 528 -159 667 -385zM1748 640c0 470 -382 852 -852 852s-852 -382 -852 -852s382 -852 852 -852s852 382 852 852zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="server" unicode="&#xf233;" horiz-adv-x="1792" 
+d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM128 1152h1024v128h-1024v-128zM1696 704c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1696 1216
+c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
+    <glyph glyph-name="inkscape" unicode="&#xf312;" 
+d="M755 1398v0c47 0 95 -17 131 -52l588 -601c234 -234 -259 -288 -401 -371c-50 -51 153 -85 132 -147c-42 -126 -157 -45 -280 -171c-50 -51 95 -46 45 -97c-93 -68 -285 -115 -300 -32c-21 117 -135 68 -185 119s101 104 51 155s-299 97 -349 148s191 88 141 139
+c-138 68 -461 41 -269 278l567 580c34 35 82 52 129 52zM760 1343v0c-34 0 -68 -13 -93 -38c-49 -50 -140 -138 -219 -223c-45 -45 -40 -109 10 -109h123l80 139l49 -199l149 95l93 -49l22 131l111 -89c12 12 12 54 -9 76l-224 228c-24 25 -58 38 -92 38zM491 456
+c-74 0 219 -119 279 -103c27 14 40 34 21 38c-56 9 -285 56 -300 65zM1390 297c43 -1 86 -22 100 -63c0 -54 -212 -36 -212 -7c13 47 63 71 112 70zM409 172c26 0 50 -8 64 -26c-23 -61 -101 -115 -151 -72c-57 50 21 99 87 98zM1251 168c71 -14 85 -65 71 -79
+c-64 -38 -136 21 -71 79z" />
+    <glyph glyph-name="search-minus" unicode="&#xf010;" horiz-adv-x="1664" 
+d="M1024 736v-64c0 -17 -15 -32 -32 -32h-576c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h576c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38
+l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
+    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792" 
+d="M1280 832c0 35 -29 64 -64 64c-354 0 -582 -148 -813 -403c-12 -13 -19 -27 -19 -45c0 -35 29 -64 64 -64c18 0 32 7 45 19c49 44 93 92 141 137c181 163 336 228 582 228c35 0 64 29 64 64zM1792 1030c0 -64 -7 -129 -20 -193c-64 -311 -264 -513 -542 -651
+c-135 -68 -286 -108 -438 -108c-96 0 -195 16 -286 47c-48 16 -144 79 -184 79c-50 0 -110 -204 -197 -204c-63 0 -82 31 -109 77c-9 17 -16 23 -16 44c0 104 198 185 198 243c0 9 -26 62 -30 82c-6 34 -9 69 -9 104c0 318 253 545 537 639c205 68 641 -11 780 121
+c55 51 82 98 166 98c113 0 150 -293 150 -378z" />
+    <glyph glyph-name="envelope-open-o" unicode="&#xf2b7;" horiz-adv-x="1792" 
+d="M1474 623l39 -51c11 -14 8 -33 -5 -44c-100 -78 -330 -255 -340 -263c-71 -58 -167 -138 -271 -137h-2c-104 0 -200 79 -271 137c-11 9 -233 180 -331 256c-14 11 -17 30 -6 44l37 52c11 15 32 18 46 6c68 -53 164 -127 306 -236c50 -38 149 -131 219 -131h2
+c70 0 169 93 219 131c147 113 245 188 313 242c14 11 34 8 45 -6zM1664 -96v928c-100 93 -85 85 -548 443c-50 39 -149 133 -219 133h-2c-70 0 -169 -94 -219 -133c-463 -358 -448 -350 -548 -443v-928c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 832v-928
+c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v928c0 36 15 70 41 94c205 190 441 355 583 472c70 58 167 138 271 138h2c104 0 201 -80 271 -138c132 -109 383 -286 583 -472c26 -24 41 -58 41 -94z" />
+    <glyph glyph-name="exclamation-circle" unicode="&#xf06a;" 
+d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM896 161v190c0 18 -14 33 -31 33h-192c-18 0 -33 -15 -33 -33v-190c0 -18 15 -33 33 -33h192c17 0 31 15 31 33zM894 505l18 621c0 7 -3 14 -10 18c-6 5 -15 8 -24 8h-220
+c-9 0 -18 -3 -24 -8c-7 -4 -10 -11 -10 -18l17 -621c0 -14 15 -25 34 -25h185c18 0 33 11 34 25z" />
+    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792" 
+d="M1408 768c0 -283 -315 -512 -704 -512c-61 0 -120 6 -176 16c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512s704 -229 704 -512zM1792 512
+c0 -163 -104 -307 -266 -401c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466
+c0 52 -8 103 -23 152c169 -93 279 -241 279 -408z" />
+    <glyph glyph-name="moon" unicode="&#xf328;" horiz-adv-x="1471" 
+d="M1465 318c-125 -271 -399 -446 -697 -446c-423 0 -768 345 -768 768c0 415 325 752 739 767c28 1 51 -15 61 -39c11 -25 4 -54 -15 -72c-114 -104 -177 -246 -177 -400c0 -300 244 -544 544 -544c79 0 155 17 228 51c25 11 53 6 72 -13s24 -48 13 -72z" />
+    <glyph glyph-name="facebook-official" unicode="&#xf230;" 
+d="M1451 1408c47 0 85 -38 85 -85v-1366c0 -47 -38 -85 -85 -85h-391v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-735c-47 0 -85 38 -85 85v1366c0 47 38 85 85 85h1366z" />
+    <glyph glyph-name="clock-o" unicode="&#xf017;" 
+d="M896 992v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="caret-square-o-left" unicode="&#xf191;" 
+d="M1024 960v-640c0 -35 -29 -64 -64 -64c-13 0 -26 4 -37 12l-448 320c-17 12 -27 31 -27 52c0 20 10 40 27 52l448 320c11 8 24 12 37 12c35 0 64 -29 64 -64zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
+c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="hand-scissors-o" unicode="&#xf257;" horiz-adv-x="1792" 
+d="M1073 -128h-177c-104 0 -183 45 -226 141c-15 32 -23 67 -23 102v5c-82 40 -135 124 -135 216c0 11 0 38 5 48h-261c-141 0 -256 115 -256 256s115 256 256 256h113l-44 17c-99 37 -165 133 -165 239c0 141 115 256 256 256c31 0 62 -6 91 -17l628 -239h401
+c141 0 256 -115 256 -256v-668c0 -118 -80 -220 -194 -248l-339 -85c-60 -15 -123 -23 -186 -23zM1024 583l-155 -71l-163 -74c-40 -18 -66 -58 -66 -102c0 -62 50 -112 112 -112c16 0 32 3 46 10l338 154c-65 14 -112 73 -112 140v55zM1344 272c0 62 -50 112 -112 112
+c-16 0 -32 -3 -46 -10l-290 -132c-60 -27 -121 -51 -121 -127c0 -66 46 -114 113 -114c12 0 28 4 38 9l352 160c40 18 66 58 66 102zM1112 1024l-650 248c-15 5 -30 8 -46 8c-70 0 -128 -57 -128 -128c0 -53 33 -101 82 -120l526 -200v-64h-640c-71 0 -128 -57 -128 -128
+s57 -128 128 -128h535l233 106v198c0 40 17 79 46 106l111 102h-69zM1073 0c52 0 105 6 155 19l339 85c57 14 97 65 97 124v668c0 71 -57 128 -128 128h-308l-136 -126c-23 -21 -36 -51 -36 -82v-296c0 -62 51 -108 112 -108c62 0 112 55 112 116v208h32v-208
+c0 -45 -22 -87 -57 -114c70 -11 121 -72 121 -142c0 -56 -33 -108 -84 -131l-310 -141h91z" />
+    <glyph glyph-name="tumblr-square" unicode="&#xf174;" 
+d="M1136 75l-62 183c-24 -12 -69 -22 -103 -22c-102 -3 -123 71 -123 126v398h257v194h-256v326h-188c-3 0 -8 -3 -9 -10c-11 -99 -58 -275 -252 -345v-165h130v-418c0 -143 105 -347 384 -342c94 2 199 41 222 75zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
+c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280" 
+d="M1043 971c0 134 -95 224 -236 224h-320v-448h320c141 0 236 90 236 224zM1280 971c0 -257 -186 -437 -453 -437h-340v-118h505c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-505v-192c0 -18 -14 -32 -32 -32h-167c-18 0 -32 14 -32 32v192h-224c-18 0 -32 14 -32 32
+v128c0 18 14 32 32 32h224v118h-224c-18 0 -32 14 -32 32v149c0 18 14 32 32 32h224v629c0 18 14 32 32 32h539c267 0 453 -180 453 -437z" />
+    <glyph glyph-name="chevron-circle-up" unicode="&#xf139;" 
+d="M1165 397l102 102c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l307 307l307 -307c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
+" />
+    <glyph glyph-name="opencart" unicode="&#xf23d;" horiz-adv-x="2304" 
+d="M1524 -25c0 -91 -73 -164 -164 -164s-165 73 -165 164s74 165 165 165s164 -74 164 -165zM775 -25c0 -91 -74 -164 -165 -164s-164 73 -164 164s73 165 164 165s165 -74 165 -165zM0 1469c295 -311 572 -357 1660 -357s610 -242 -62 -842c213 370 945 698 -255 680
+c-1151 -17 -1219 333 -1343 519z" />
+    <glyph glyph-name="artstation" unicode="&#xf2ed;" horiz-adv-x="1533" 
+d="M601 1277v0h267c51 0 112 -37 136 -83l504 -878c16 -24 25 -53 25 -84c0 -35 -7 -53 -31 -94l-123 -213zM474 1058l348 -604h-695zM0 233v0h949l178 -309h-859c-53 0 -114 38 -138 85h-1z" />
+    <glyph glyph-name="thumbs-up" unicode="&#xf164;" horiz-adv-x="1600" 
+d="M256 192c0 35 -29 64 -64 64c-36 0 -64 -29 -64 -64c0 -36 28 -64 64 -64c35 0 64 28 64 64zM416 704v-640c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64zM1600 704c0 -53 -21 -110 -55 -149c11 -32 15 -62 15 -76
+c2 -50 -13 -97 -43 -137c11 -37 11 -77 0 -117c-10 -37 -29 -70 -54 -94c6 -75 -11 -136 -49 -181c-43 -51 -109 -77 -197 -78h-129c-143 0 -278 47 -386 84c-63 22 -123 43 -158 44c-34 1 -64 29 -64 64v641c0 33 28 61 61 64c37 3 133 122 177 180c36 46 70 89 101 120
+c39 39 50 99 62 157c11 59 23 121 66 163c12 12 28 19 45 19c224 0 224 -179 224 -256c0 -82 -29 -140 -56 -192c-11 -22 -21 -32 -29 -64h277c104 0 192 -88 192 -192z" />
+    <glyph glyph-name="vimeo-square" unicode="&#xf194;" 
+d="M1292 898c7 145 -47 218 -161 222c-154 5 -258 -82 -312 -261c28 12 55 19 82 19c56 0 81 -32 74 -96c-3 -38 -28 -94 -74 -167c-47 -74 -82 -110 -105 -110c-30 0 -56 56 -82 169c-8 34 -23 118 -45 255c-20 126 -73 185 -160 177c-36 -4 -92 -36 -164 -100
+c-54 -47 -107 -96 -162 -144l52 -67c50 34 79 52 87 52c38 0 74 -60 107 -179c30 -110 60 -219 90 -329c45 -119 99 -179 164 -179c104 0 232 98 383 294c146 188 222 336 226 444zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
+c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="arrow-circle-right" unicode="&#xf0a9;" 
+d="M1285 640c0 17 -6 33 -18 45l-91 91l-362 362c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l189 -189h-502c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h502l-189 -189c-12 -12 -19 -28 -19 -45s7 -33 19 -45l91 -91
+c12 -12 28 -18 45 -18s33 6 45 18l362 362l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896" 
+d="M885 970c11 -12 14 -29 7 -44l-540 -1157c-8 -15 -24 -25 -42 -25c-4 0 -9 1 -14 2c-22 7 -35 28 -30 49l197 808l-406 -101c-4 -1 -8 -1 -12 -1c-11 0 -23 4 -31 11c-12 10 -16 25 -13 39l201 825c5 19 23 32 44 32h328c25 0 45 -19 45 -42c0 -6 -2 -12 -5 -18
+l-171 -463l396 98c4 1 8 2 12 2c13 0 25 -6 34 -15z" />
+    <glyph glyph-name="thermometer-quarter" unicode="&#xf2ca;" horiz-adv-x="1024" 
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v139h128v-139c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+    <glyph glyph-name="hdd-o" unicode="&#xf0a0;" 
+d="M1040 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1296 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1408 160v320c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32
+zM178 640h1180l-157 482c-5 17 -24 30 -42 30h-782c-18 0 -37 -13 -42 -30zM1536 480v-320c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v320c0 27 8 50 16 75l197 606c23 70 90 119 164 119h782c74 0 141 -49 164 -119l197 -606c8 -25 16 -48 16 -75z" />
+    <glyph glyph-name="id-card-o" unicode="&#xf2c3;" horiz-adv-x="2048" 
+d="M896 324c0 -73 -48 -132 -107 -132h-426c-59 0 -107 59 -107 132c0 132 32 284 164 284c40 -40 95 -64 156 -64s116 24 156 64c132 0 164 -152 164 -284zM768 768c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 352v-64
+c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1408 608v-64c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h320c18 0 32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-192
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 864v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1920 32v1120h-1792v-1120c0 -17 15 -32 32 -32h1728c17 0 32 15 32 32zM2048 1248v-1216
+c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="plug" unicode="&#xf1e6;" horiz-adv-x="1792" 
+d="M1755 1083c49 -50 49 -131 0 -181l-401 -400l150 -150l-160 -160c-219 -219 -553 -250 -801 -86l-362 -362h-181v181l362 362c-164 248 -133 582 86 801l160 160l150 -150l400 401c50 49 131 49 181 0c50 -50 50 -132 0 -181l-400 -401l234 -234l401 400
+c50 50 131 50 181 0z" />
+    <glyph glyph-name="react" unicode="&#xf302;" horiz-adv-x="1755" 
+d="M1434 910v0c187 -64 321 -165 321 -269c0 -109 -143 -215 -341 -280c-11 -3 -21 -7 -32 -10c3 -13 7 -33 10 -46c39 -197 10 -360 -83 -413c-89 -52 -235 -1 -382 125c-16 14 -31 28 -46 43c-12 -12 -24 -22 -36 -33c-152 -133 -307 -187 -400 -134
+c-90 52 -118 203 -82 393c4 21 9 40 14 61c-16 4 -32 10 -47 15c-190 65 -330 172 -330 279c0 104 131 205 314 268c20 7 42 14 64 20c-5 19 -9 38 -13 57c-38 193 -11 348 79 400c94 55 250 -3 406 -142c8 -7 21 -20 29 -27c14 13 28 27 43 40c149 130 296 184 386 132
+c94 -54 121 -219 79 -423c-3 -13 -6 -25 -9 -38c15 -5 41 -13 56 -18zM970 1201v0c-14 -12 -27 -23 -40 -36c53 -57 101 -118 146 -182c77 -7 155 -20 231 -37c3 11 5 23 7 35c36 177 15 311 -43 344c-54 31 -173 -13 -301 -124zM524 553c-22 -52 -41 -104 -56 -153
+c52 -11 106 -19 159 -25c-19 29 -37 59 -54 89c-17 29 -33 59 -49 89zM524 726c15 30 32 61 49 90s35 59 53 87c-55 -7 -108 -16 -157 -27c15 -48 33 -99 55 -150zM563 640v0c23 -47 48 -93 74 -139c22 -38 59 -98 84 -134c50 -3 103 -5 157 -5s107 2 158 6
+c29 44 57 87 83 133c22 38 55 101 74 140c-23 47 -49 94 -75 139c-22 37 -59 96 -83 132c-51 4 -104 6 -157 6s-107 -2 -158 -6c-29 -44 -57 -87 -83 -133s-51 -92 -74 -139zM1182 464c-17 -29 -34 -59 -53 -88c54 6 108 16 161 28c-17 52 -35 102 -57 152
+c-16 -31 -34 -62 -51 -92zM1232 726c21 49 39 98 55 149c-49 11 -102 21 -157 28c15 -24 38 -63 52 -87c17 -29 34 -60 50 -90zM878 1112v0c-34 -37 -68 -79 -102 -123c28 1 74 3 102 3s74 -2 102 -3c-32 43 -66 84 -102 123zM481 1322c-54 -31 -76 -156 -44 -322
+c4 -18 8 -36 12 -53c76 17 154 29 231 36c45 64 94 125 147 182c-9 8 -17 16 -26 24c-135 119 -262 167 -320 133zM397 419c24 75 52 149 85 221c-33 71 -61 144 -84 218c-20 -6 -40 -12 -60 -19c-156 -55 -264 -135 -264 -198c7 -41 29 -78 64 -102
+c60 -48 143 -84 216 -107c14 -5 29 -9 43 -13zM796 83c11 10 22 19 33 30c-53 58 -103 119 -148 183c-79 6 -156 18 -233 34c-5 -19 -8 -38 -12 -57c-31 -163 -9 -284 46 -316c39 -15 83 -13 121 5c71 28 136 69 193 121zM880 166c36 40 70 81 102 125
+c-34 -2 -69 -3 -104 -3c-34 0 -68 1 -101 2c34 -45 68 -86 103 -124zM1328 63c11 76 9 153 -8 227c-2 12 -6 31 -9 42c-64 -14 -169 -31 -234 -36c-44 -64 -93 -126 -145 -184c15 -14 30 -27 44 -39c125 -108 241 -149 296 -117c33 26 53 65 56 107zM1391 432
+c171 57 291 143 291 210c0 62 -112 144 -272 199c-16 5 -34 11 -52 16c-23 -74 -51 -146 -84 -216c34 -71 64 -143 88 -218c10 3 19 6 29 9zM878 797c87 0 157 -70 157 -157s-70 -157 -157 -157s-157 70 -157 157s70 157 157 157z" />
+    <glyph glyph-name="themeisle" unicode="&#xf2b2;" horiz-adv-x="1792" 
+d="M852 1227c0 -36 -23 -76 -62 -76c-40 0 -62 40 -62 76c0 35 22 76 62 76c39 0 62 -41 62 -76zM688 -149v114c0 39 -31 73 -71 73s-70 -34 -70 -73v-114c0 -39 30 -74 70 -74s71 34 71 74zM860 -149v114c0 39 -30 73 -70 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74
+s70 35 70 74zM1034 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 34 71 74zM1208 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 35 71 74zM1476 535c-108 -207 -316 -359 -555 -359c-338 0 -562 296 -562 618
+c0 59 7 117 21 174c-70 -118 -104 -254 -104 -390c0 -211 87 -426 250 -563c18 34 52 57 91 57c35 0 68 -20 86 -50c19 30 51 50 87 50c35 0 68 -20 86 -50c19 30 52 50 87 50s68 -20 87 -50c18 30 51 50 86 50c38 0 73 -23 90 -56c152 127 240 322 250 519zM1326 564
+c0 50 -22 75 -72 75c-16 0 -32 -3 -47 -6c-50 -10 -99 -19 -149 -19c-158 0 -226 92 -226 243c0 69 13 137 30 204c-53 -81 -83 -178 -83 -275c0 -189 120 -371 324 -371c75 0 149 27 210 70c7 26 13 52 13 79zM884 1223c0 63 -44 129 -113 129s-113 -66 -113 -129
+c0 -64 44 -130 113 -130s113 66 113 130zM1513 884c0 188 -121 370 -324 370c-106 0 -205 -53 -276 -129c-25 -83 -48 -180 -48 -268c0 -133 53 -210 193 -210c48 0 95 9 142 19c18 3 35 6 53 6c69 0 104 -40 104 -108c0 -15 -1 -31 -4 -46c101 91 160 230 160 366z
+M1792 667c0 -126 -40 -358 -127 -454c-80 -87 -306 -214 -423 -247l-4 -1v-114c0 -57 -44 -107 -102 -107c-35 0 -68 20 -86 50c-19 -30 -52 -50 -87 -50s-68 20 -87 50c-18 -30 -51 -50 -86 -50c-36 0 -68 20 -87 50c-18 -30 -51 -50 -86 -50c-66 0 -103 55 -103 115
+c-57 -43 -125 -68 -198 -68c-77 0 -152 29 -211 80c36 1 72 8 106 20c-73 20 -138 66 -182 127c23 -5 47 -7 71 -7c58 0 115 16 164 46c-77 77 -198 206 -240 306c-20 47 -24 110 -24 160c0 174 71 560 302 560c37 0 66 -17 81 -52c13 19 27 37 42 54c7 9 20 19 25 29
+c28 44 41 74 76 119c113 144 286 243 472 243c21 0 42 -1 62 -4c38 41 91 64 146 64c51 0 104 -21 140 -57c3 -3 5 -8 5 -12c0 -13 -36 -47 -45 -57c15 -5 55 -24 55 -42c0 -10 -10 -18 -16 -25c110 -97 173 -235 197 -378c15 18 36 30 60 30c37 0 73 -25 100 -49
+c73 -65 90 -186 90 -279z" />
+    <glyph glyph-name="braille" unicode="&#xf2a1;" horiz-adv-x="2176" 
+d="M192 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
+M1472 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1472 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
+M1984 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 1376c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
+M896 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
+M384 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192
+zM2176 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192
+s192 -86 192 -192zM1664 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z" />
+    <glyph glyph-name="industry" unicode="&#xf275;" horiz-adv-x="1792" 
+d="M448 1536c35 0 64 -29 64 -64v-891l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-379l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-1152c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h384z" />
+    <glyph glyph-name="map-o" unicode="&#xf278;" horiz-adv-x="2048" 
+d="M2020 1525c17 -12 28 -32 28 -53v-1408c0 -26 -16 -50 -40 -59l-640 -256c-16 -7 -32 -7 -48 0l-616 246l-616 -246c-8 -4 -16 -5 -24 -5c-13 0 -25 4 -36 11c-17 12 -28 32 -28 53v1408c0 26 16 50 40 59l640 256c16 7 32 7 48 0l616 -246l616 246c20 8 42 6 60 -6z
+M736 1390v-1270l576 -230v1270zM128 1173v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
+    <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792" 
+d="M514 341l81 299h-159l75 -300c1 -2 1 -4 2 -6c0 2 1 5 1 7zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299c1 -3 1 -5 2 -7c0 2 1 4 1 6zM1382 768l33 128h-297l34 -128h230zM1792 736v-64c0 -18 -14 -32 -32 -32h-213
+l-164 -616c-4 -14 -17 -24 -31 -24h-159c-14 0 -27 10 -31 24l-166 616h-209l-167 -616c-4 -14 -16 -24 -31 -24h-159c-14 0 -27 10 -30 24l-160 616h-208c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h175l-33 128h-142c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h109l-89 344
+c-3 10 -1 20 5 28c6 7 16 12 26 12h137c15 0 28 -10 31 -24l90 -360h359l97 360c4 14 17 24 31 24h126c15 0 27 -10 31 -24l98 -360h365l93 360c3 14 16 24 31 24h137c10 0 20 -5 26 -12c6 -8 8 -19 5 -28l-91 -344h111c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-145
+l-34 -128h179c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="joomla" unicode="&#xf1aa;" 
+d="M1070 463l-160 -160l-151 -152l-30 -30c-88 -87 -211 -117 -323 -89c-21 -92 -103 -160 -201 -160c-113 0 -205 92 -205 206c0 97 67 179 158 200c-29 113 1 237 89 325l12 12l151 -152l-11 -11c-50 -49 -49 -129 0 -179c49 -49 129 -49 178 0l30 30l151 152l161 160z
+M729 1145l12 -12l-152 -152l-12 12c-49 49 -129 49 -178 0s-49 -130 0 -179l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30c-92 91 -120 222 -85 339c-92 20 -160 102 -160 200c0 114 92 206 205 206c103 0 187 -75 203 -172c111 26 232 -5 319 -91z
+M1536 78c0 -114 -92 -206 -205 -206c-100 0 -183 71 -202 165c-116 -36 -249 -8 -341 84l-11 12l151 152l12 -12c49 -49 129 -49 178 0s49 129 0 178l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30c87 -87 118 -210 90 -322c100 -14 177 -99 177 -203z
+M1534 1202c0 -104 -78 -190 -178 -204c33 -115 4 -244 -87 -335l-12 -12l-151 152l12 12c49 49 49 129 0 178s-129 49 -178 0l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30c91 91 221 120 337 86c14 100 100 177 204 177c113 0 205 -92 205 -206z" />
+    <glyph glyph-name="ethereum" unicode="&#xf2f3;" horiz-adv-x="1064" 
+d="M1064 623l-532 -325l-532 325l532 913zM532 194l532 325l-532 -775l-532 775z" />
+    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408" 
+d="M1408 800v-192c0 -53 -43 -96 -96 -96h-416v-416c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v416h-416c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h416v416c0 53 43 96 96 96h192c53 0 96 -43 96 -96v-416h416c53 0 96 -43 96 -96z" />
+    <glyph glyph-name="list-ul" unicode="&#xf0ca;" horiz-adv-x="1792" 
+d="M384 128c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 640c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 224v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32
+h1216c17 0 32 -15 32 -32zM384 1152c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 736v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32zM1792 1248v-192
+c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32z" />
+    <glyph glyph-name="play-circle-o" unicode="&#xf01d;" 
+d="M1184 640c0 -23 -12 -44 -32 -55l-544 -320c-10 -6 -21 -9 -32 -9s-22 3 -32 8c-20 12 -32 33 -32 56v640c0 23 12 44 32 56c20 11 45 11 64 -1l544 -320c20 -11 32 -32 32 -55zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="joplin" unicode="&#xf310;" 
+d="M288 1408h960c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288zM737 1171v-148l43 -1c59 -2 70 -6 81 -30c4 -10 5 -13 5 -296c0 -323 0 -323 -16 -362c-16 -38 -48 -69 -87 -83
+c-13 -5 -21 -5 -43 -6c-33 -1 -53 2 -80 15c-30 14 -50 37 -62 69c-9 24 -10 34 -12 88c-2 51 -1 56 -7 70c-9 23 -25 45 -40 56c-24 18 -49 24 -87 22c-40 -2 -68 -13 -95 -41c-23 -23 -35 -44 -44 -75c-4 -15 -5 -23 -5 -54c0 -38 1 -46 11 -79c26 -82 92 -156 178 -199
+c46 -23 85 -35 155 -44v0c20 -3 119 -3 142 0c87 10 150 32 208 71c73 49 127 125 142 199c8 40 9 47 10 343l1 291l6 13c6 15 15 24 29 28c5 2 28 3 52 4l43 1v74l-1 73l-263 1h-264z" />
+    <glyph glyph-name="mars-stroke" unicode="&#xf229;" 
+d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-213 -214l140 -140c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-140 141l-78 -79c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576
+s258 576 576 576c136 0 261 -47 359 -126l78 78l-172 172c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l172 -172l213 213h-261c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1820" 
+d="M1061 540v4l-24 320c-1 18 -17 32 -34 32h-186c-17 0 -33 -14 -34 -32l-24 -320v-4c-1 -16 14 -28 29 -28h244c15 0 30 12 29 28zM1820 73c0 -29 -8 -73 -46 -73h-704c17 0 31 14 30 32l-20 256c-1 18 -17 32 -34 32h-272c-17 0 -33 -14 -34 -32l-20 -256
+c-1 -18 13 -32 30 -32h-704c-38 0 -46 44 -46 73c0 40 11 80 26 116l417 1044c10 25 37 47 64 47h339c-17 0 -33 -14 -34 -32l-15 -192c-1 -18 12 -32 30 -32h166c18 0 31 14 30 32l-15 192c-1 18 -17 32 -34 32h339c27 0 54 -22 64 -47l417 -1044c15 -36 26 -76 26 -116z
+" />
+    <glyph glyph-name="volume-down" unicode="&#xf027;" horiz-adv-x="1152" 
+d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
+c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235z" />
+    <glyph glyph-name="question-circle" unicode="&#xf059;" 
+d="M896 160v192c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1152 832c0 183 -192 320 -364 320c-163 0 -285 -70 -371 -213c-9 -14 -5 -32 8 -42l132 -100c5 -4 12 -6 19 -6c9 0 19 4 25 12c47 60 67 78 86 92
+c17 12 50 24 86 24c64 0 123 -41 123 -85c0 -52 -27 -78 -88 -106c-71 -32 -168 -115 -168 -212v-36c0 -18 14 -32 32 -32h192c18 0 32 14 32 32c0 23 29 72 76 99c76 43 180 101 180 253zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
+s768 -344 768 -768z" />
+    <glyph glyph-name="paypal" unicode="&#xf1ed;" horiz-adv-x="1519" 
+d="M1510 890c13 -60 10 -129 -4 -204c-65 -330 -284 -444 -565 -444h-44c-34 0 -62 -25 -68 -59l-4 -19l-55 -346l-2 -15c-7 -34 -35 -59 -69 -59h-251c-28 0 -46 23 -42 51c18 112 35 224 53 336s36 223 54 335c3 24 19 37 43 37c40 0 80 1 131 0c72 -1 155 3 236 21
+c108 24 206 68 287 144c73 68 122 152 155 246c15 44 27 88 35 133c2 12 5 10 12 5c55 -41 86 -96 98 -162zM1338 1172c0 -82 -19 -160 -46 -236c-52 -151 -150 -259 -302 -315c-81 -29 -166 -41 -252 -42c-60 -1 -120 0 -180 0c-65 0 -106 -32 -118 -96
+c-14 -76 -69 -430 -85 -530c-1 -7 -4 -10 -12 -10h-295c-30 0 -52 26 -48 55l232 1471c6 38 40 67 79 67h598c43 0 142 -19 209 -45c142 -55 220 -167 220 -319z" />
+    <glyph glyph-name="child" unicode="&#xf1ae;" horiz-adv-x="1152" 
+d="M1124 988l-292 -292v-824c0 -62 -50 -112 -112 -112s-112 50 -112 112v384h-64v-384c0 -62 -50 -112 -112 -112s-112 50 -112 112v824l-292 292c-37 38 -37 98 0 136c38 37 98 37 136 0l228 -228h368l228 228c38 37 98 37 136 0c37 -38 37 -98 0 -136zM800 1152
+c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+    <glyph glyph-name="fork-awesome" unicode="&#xf2e3;" horiz-adv-x="1533" 
+d="M766 1404v0c423 0 767 -343 767 -766v-1v-2c0 -8 -1 -17 -1 -25v-2c-14 -388 -318 -703 -701 -735v1c-18 -2 -47 -2 -65 -2s-47 1 -65 3v-2c-383 32 -685 347 -700 735v2c0 8 -1 17 -1 25v2v1c0 423 343 766 766 766zM594 1085h-66c-35 -251 -54 -525 -29 -712
+s145 -157 181 -351c5 -29 10 -59 14 -89c20 -2 52 -4 72 -4s52 2 72 4c4 30 9 60 14 89c36 194 156 164 181 351s6 456 -28 712h-65c3 -190 12 -430 -8 -640c-8 -89 -103 -87 -108 0c-13 208 -15 428 -26 639h-64c-11 -211 -18 -431 -26 -643c-3 -82 -100 -81 -108 0
+c-19 208 -10 453 -6 644z" />
+    <glyph glyph-name="angle-double-up" unicode="&#xf102;" horiz-adv-x="998" 
+d="M998 224c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM998 608
+c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="bath" unicode="&#xf2cd;" horiz-adv-x="1792" 
+d="M1664 448v-192c0 -114 -50 -215 -128 -286v-194c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v118c-40 -14 -83 -22 -128 -22h-768c-45 0 -88 8 -128 22v-110c0 -22 -14 -40 -32 -40h-64c-18 0 -32 18 -32 40v186c-78 71 -128 172 -128 286v192h1536zM704 864
+c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 928c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 992c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 992c0 -18 -14 -32 -32 -32s-32 14 -32 32
+s14 32 32 32s32 -14 32 -32zM768 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32
+h96v640c0 141 115 256 256 256c72 0 137 -30 184 -78c62 25 136 16 191 -27l22 22c6 6 16 6 22 0l42 -42c6 -6 6 -16 0 -22l-314 -314c-6 -6 -16 -6 -22 0l-42 42c-6 6 -6 16 0 22l22 22c-48 61 -54 145 -17 212c-23 22 -54 35 -88 35c-71 0 -128 -57 -128 -128v-640h1504
+c18 0 32 -14 32 -32zM896 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM960 1120
+c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM896 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1024 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32
+s14 32 32 32s32 -14 32 -32zM960 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1088 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32z" />
+    <glyph glyph-name="reply-all" unicode="&#xf122;" horiz-adv-x="1792" 
+d="M640 454v-70c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-69l-397 -398c-25 -25 -25 -65 0 -90zM1792 416c0 -208 -157 -514 -164 -527c-5 -11 -16 -17 -28 -17
+c-3 0 -6 0 -9 1c-15 5 -24 19 -23 34c29 273 -5 453 -106 565c-85 95 -223 146 -438 163v-251c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-262c276 -19 473 -92 599 -221
+c151 -155 169 -365 169 -509z" />
+    <glyph glyph-name="patreon" unicode="&#xf2f0;" 
+d="M985 1341c-305 0 -553 -248 -553 -553c0 -304 248 -551 553 -551c304 0 551 247 551 551c0 305 -247 553 -551 553zM270 -132h-270v1473h270v-1473z" />
+    <glyph glyph-name="inbox" unicode="&#xf01c;" 
+d="M1023 576h316c-2 5 -3 11 -5 16l-212 496h-708l-212 -496c-2 -5 -3 -11 -5 -16h316l95 -192h320zM1536 546v-482c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v482c0 36 11 89 25 123l238 552c14 33 54 59 89 59h832c35 0 75 -26 89 -59l238 -552
+c14 -34 25 -87 25 -123z" />
+    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280" 
+d="M1280 480c0 -53 -43 -96 -96 -96c-32 0 -62 16 -80 43l-227 341h-45v-132l247 -411c6 -10 9 -21 9 -33c0 -35 -29 -64 -64 -64h-192v-272c0 -62 -50 -112 -112 -112h-160c-61 0 -112 50 -112 112v272h-192c-35 0 -64 29 -64 64c0 12 3 23 9 33l247 411v132h-45l-227 -341
+c-18 -27 -48 -43 -80 -43c-53 0 -96 43 -96 96c0 19 6 38 16 53l256 384c40 59 102 107 176 107h384c74 0 136 -48 176 -107l256 -384c10 -15 16 -34 16 -53zM864 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
+    <glyph glyph-name="gavel" unicode="&#xf0e3;" horiz-adv-x="1731" 
+d="M1731 0c0 -34 -14 -67 -37 -90l-107 -108c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-363 364c-24 23 -38 56 -38 90c0 38 16 69 43 96l-256 256l-126 -126c-9 -9 -21 -14 -34 -14s-25 5 -34 14c30 -30 58 -52 58 -98c0 -26 -10 -49 -28 -68c-34 -36 -70 -84 -124 -84
+c-25 0 -50 10 -68 28l-408 408c-18 18 -28 43 -28 68c0 54 48 90 84 124c19 18 42 28 68 28c46 0 68 -28 98 -58c-9 9 -14 21 -14 34s5 25 14 34l348 348c9 9 21 14 34 14s25 -5 34 -14c-30 30 -58 52 -58 98c0 26 10 49 28 68c34 36 70 84 124 84c25 0 50 -10 68 -28
+l408 -408c18 -18 28 -43 28 -68c0 -54 -48 -90 -84 -124c-19 -18 -42 -28 -68 -28c-46 0 -68 28 -98 58c9 -9 14 -21 14 -34s-5 -25 -14 -34l-126 -126l256 -256c27 27 58 43 96 43c34 0 67 -14 91 -37l363 -363c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="jsfiddle" unicode="&#xf1cc;" horiz-adv-x="2048" 
+d="M1800 764c145 -60 248 -202 248 -367c0 -219 -181 -397 -403 -397c-8 0 -15 1 -22 1h-1217c-224 13 -406 184 -406 406c0 149 81 279 202 350c-8 26 -12 53 -12 82c0 153 125 277 281 277c64 0 124 -22 172 -58c98 202 306 342 549 342c337 0 609 -269 609 -600
+c0 -12 -1 -24 -1 -36zM468 498c0 -169 133 -264 292 -264c98 0 169 31 240 99c-29 36 -61 71 -91 107c-41 -40 -86 -65 -144 -65c-71 0 -132 47 -132 121c0 73 61 121 130 121c220 0 267 -384 587 -384c156 0 288 98 288 262c0 166 -133 263 -291 263
+c-98 0 -171 -28 -241 -97c32 -35 62 -72 93 -108c40 39 85 64 142 64c66 0 132 -47 132 -117c0 -77 -56 -126 -131 -126c-213 0 -270 384 -582 384c-155 0 -292 -95 -292 -260z" />
+    <glyph glyph-name="git" unicode="&#xf1d3;" horiz-adv-x="1656" 
+d="M527 22c0 88 -97 100 -165 100c-71 0 -158 -15 -158 -104c0 -90 103 -101 172 -101c73 0 151 18 151 105zM468 777c0 75 -36 143 -119 143c-92 0 -124 -61 -124 -145c0 -83 36 -135 124 -135c87 0 119 56 119 137zM737 1101v-202c-26 -9 -52 -16 -79 -22
+c10 -27 16 -55 16 -84c0 -169 -104 -298 -270 -329c-50 -10 -79 -31 -79 -85c0 -153 404 -49 404 -331c0 -229 -155 -304 -363 -304c-171 0 -366 57 -366 263c0 120 73 189 182 225v4c-46 28 -67 72 -67 126c0 51 11 114 63 137v4c-101 34 -167 173 -167 274
+c0 187 145 324 330 324c62 0 124 -16 178 -47c75 0 149 20 218 47zM1055 220h-222c4 45 4 89 4 134v609c0 43 1 86 -4 128h222c-5 -41 -4 -83 -4 -124v-613c0 -45 0 -89 4 -134zM1656 442v-196c-53 -29 -114 -39 -174 -39c-214 0 -239 169 -239 343v351h2v4
+c-13 0 -25 2 -37 2c-20 0 -40 -3 -59 -6v190h96v76c0 30 -1 60 -6 89h227c-8 -55 -6 -110 -6 -165h171v-190c-29 0 -58 4 -86 4h-85v-365c0 -59 13 -131 87 -131c39 0 77 11 109 33zM1080 1389c0 -75 -58 -145 -135 -145c-79 0 -138 69 -138 145c0 77 58 147 138 147
+c79 0 135 -72 135 -147z" />
+    <glyph glyph-name="signalapp" unicode="&#xf30c;" horiz-adv-x="1652" 
+d="M710 1400c32 4 84 8 116 8v0c27 0 53 -2 80 -4l-3 -42c-21 2 -56 3 -77 3c-31 0 -81 -3 -111 -7zM977 1351l8 43c54 -10 138 -36 188 -58l-17 -39c-48 21 -128 45 -179 54zM446 1321c49 24 133 54 186 66l10 -42c-51 -11 -130 -39 -177 -62zM1223 1264l21 37
+c48 -27 120 -78 160 -115l-29 -32c-38 35 -106 85 -152 110zM222 1161c39 39 108 93 155 122l22 -36c-44 -27 -110 -79 -147 -116l-30 30v0zM1427 1101l32 28c37 -41 87 -114 112 -163l-38 -20c-24 46 -71 116 -106 155v0zM65 934c23 50 69 125 104 168l33 -27
+c-33 -40 -77 -112 -98 -159zM1564 878l39 15c20 -52 41 -138 46 -193l-43 -4c-5 52 -23 133 -42 182zM0 664c3 55 19 143 36 196l41 -14c-16 -49 -32 -132 -34 -184zM1582 436c14 50 26 133 27 185h43c-1 -55 -14 -144 -29 -197zM-0 585l43 2c2 -70 10 -131 23 -187l-42 -11
+c-14 59 -22 123 -24 196zM1464 203c32 41 73 114 93 162l40 -16c-21 -51 -66 -128 -99 -172zM47 313l40 15c22 -60 52 -113 92 -160l-33 -28c-43 51 -75 108 -99 173v0zM1273 26c44 28 107 82 143 120l31 -29c-37 -40 -105 -97 -151 -127zM202 82l28 32
+c12 -11 34 -28 47 -38c4 -3 6 -7 7 -11l40 -125l-41 -13l-37 118c-13 10 -32 26 -44 37v0zM1033 -80c50 13 129 44 175 68l20 -39c-48 -25 -131 -56 -184 -70zM644 -86c2 1 7 2 9 2s3 -1 5 -1c17 -5 31 -8 42 -11l-9 -42c-10 2 -27 7 -37 10l-128 -57l-18 40l136 59v0z
+M826 -106c45 0 90 4 134 11l7 -42c-39 -6 -102 -12 -141 -12c-22 0 -40 0 -55 1l2 43c15 -1 31 -1 53 -1v0zM357 -256v0v0c-9 0 -17 7 -20 15l-30 93l41 13l23 -70l67 29l17 -39l-89 -39c-2 -1 -7 -2 -9 -2zM442 -65c-11 0 -21 8 -22 19l-16 213c-70 53 -124 122 -161 204
+c-37 81 -56 171 -56 268c0 332 292 602 651 602s651 -270 651 -602s-292 -602 -651 -602c-60 0 -119 8 -176 23l-209 -123c-3 -2 -7 -2 -11 -2v0z" />
+    <glyph glyph-name="share-square" unicode="&#xf14d;" 
+d="M1005 435l352 352c25 25 25 65 0 90l-352 352c-18 19 -46 24 -69 14c-24 -10 -40 -33 -40 -59v-160c-574 0 -640 -329 -640 -576c0 -201 161 -396 167 -404c7 -8 16 -12 25 -12c4 0 9 1 13 3c13 5 21 19 19 33c-30 241 -11 391 62 473c61 69 167 99 354 99v-160
+c0 -26 16 -49 40 -59c7 -3 16 -5 24 -5c17 0 33 7 45 19zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
+    <glyph glyph-name="thermometer-half" unicode="&#xf2c9;" horiz-adv-x="1024" 
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v395h128v-395c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="924" 
+d="M608 280v-240c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v240c0 22 18 40 40 40h240c22 0 40 -18 40 -40zM924 880c0 -190 -129 -263 -224 -316c-59 -34 -96 -103 -96 -132c0 -22 -17 -48 -40 -48h-240c-22 0 -36 34 -36 56v45c0 121 120 225 208 265
+c77 35 109 68 109 132c0 56 -73 106 -154 106c-45 0 -86 -14 -108 -29c-24 -17 -48 -41 -107 -115c-8 -10 -20 -16 -31 -16c-9 0 -17 3 -25 8l-164 125c-17 13 -21 35 -10 53c108 179 260 266 464 266c214 0 454 -171 454 -400z" />
+    <glyph glyph-name="low-vision" unicode="&#xf2a8;" horiz-adv-x="1792" 
+d="M335 180c-2 0 -4 1 -6 2c-117 78 -234 206 -308 325c-14 20 -21 44 -21 69c0 52 36 94 65 133c116 158 271 288 452 365c-15 27 -110 193 -110 211c0 12 7 23 17 29c20 11 110 64 128 64c11 0 22 -6 28 -16l124 -229c63 13 128 19 192 19c362 0 684 -205 876 -507
+c13 -20 20 -44 20 -69s-7 -49 -20 -69c-119 -187 -293 -342 -497 -429c15 -27 110 -193 110 -211c0 -12 -6 -23 -17 -29c-20 -11 -110 -64 -127 -64c-12 0 -23 6 -29 16l-124 229l-64 119l-444 820l7 7c-34 -14 -67 -29 -99 -47c12 -23 489 -899 489 -906c0 -5 -4 -8 -9 -9
+c-22 -5 -50 -3 -72 -3c-11 0 -56 -2 -60 7l-456 841c-29 -21 -56 -44 -82 -68c22 -39 404 -742 404 -748c0 -8 -5 -10 -11 -10c-17 0 -150 41 -155 50l-106 197l-224 413c-28 -34 -54 -69 -78 -106c13 -19 30 -39 41 -59c14 -26 176 -321 176 -327c0 -5 -5 -10 -10 -10z
+M1165 282l49 -91c187 76 341 216 450 385c-111 171 -269 313 -459 389c89 -85 139 -202 139 -325c0 -141 -66 -274 -179 -358zM848 896c0 -26 22 -48 48 -48c55 0 108 -22 147 -61s61 -92 61 -147c0 -26 22 -48 48 -48s48 22 48 48c0 168 -136 304 -304 304
+c-26 0 -48 -22 -48 -48zM1214 961l-9 4l7 -7z" />
+    <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920" 
+d="M960 864c159 0 288 -129 288 -288s-129 -288 -288 -288s-288 129 -288 288s129 288 288 288zM1664 1280c141 0 256 -115 256 -256v-896c0 -141 -115 -256 -256 -256h-1408c-141 0 -256 115 -256 256v896c0 141 115 256 256 256h224l51 136c25 66 103 120 173 120h512
+c70 0 148 -54 173 -120l51 -136h224zM960 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="wordpress" unicode="&#xf19a;" horiz-adv-x="1792" 
+d="M127 640c0 111 24 217 67 313l367 -1005c-257 125 -434 388 -434 692zM1415 679c0 -66 -27 -142 -59 -249l-76 -256l-278 826s46 3 88 8c41 5 36 66 -5 63c-125 -9 -205 -10 -205 -10s-75 1 -202 10c-42 3 -47 -60 -5 -63c39 -4 80 -8 80 -8l120 -328l-168 -504l-280 832
+s46 3 88 8c41 5 36 66 -5 63c-124 -9 -205 -10 -205 -10c-14 0 -31 1 -49 1c137 209 373 347 642 347c200 0 382 -77 519 -202h-10c-75 0 -129 -65 -129 -136c0 -63 37 -116 76 -180c30 -51 63 -117 63 -212zM909 573l237 -647c1 -4 3 -8 5 -11c-80 -28 -165 -44 -255 -44
+c-75 0 -148 11 -217 32zM1570 1009c60 -110 95 -235 95 -369c0 -284 -154 -531 -383 -664l235 678c39 112 59 198 59 276c0 28 -2 54 -6 79zM896 1536c494 0 896 -402 896 -896s-402 -896 -896 -896s-896 402 -896 896s402 896 896 896zM896 -215c471 0 855 384 855 855
+s-384 855 -855 855s-855 -384 -855 -855s384 -855 855 -855z" />
+    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024" 
+d="M0 -126l17 85c64 20 133 28 193 59c23 29 34 66 41 101c13 68 231 1049 228 1129v25c-55 30 -122 22 -182 32l19 103c129 -6 260 -16 390 -16c106 0 212 10 318 16c-4 -30 -11 -60 -19 -89c-69 -24 -142 -35 -210 -62c-22 -54 -27 -113 -37 -170
+c-48 -259 -112 -518 -165 -775c-10 -48 -59 -247 -55 -289l1 -18c61 -14 123 -21 185 -31c-2 -33 -8 -66 -16 -99c-22 0 -43 -3 -65 -3c-57 0 -116 19 -173 20c-69 1 -138 2 -206 2c-89 0 -176 -15 -264 -20z" />
+    <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1542" 
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c25 -25 25 -65 0 -90l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
+    <glyph glyph-name="steam-square" unicode="&#xf1b7;" 
+d="M1242 889c0 106 -87 193 -194 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 194 86 194 193zM632 301c0 -110 -88 -198 -198 -198c-76 0 -142 43 -175 106c33 -13 65 -26 98 -40c80 -32 172 7 205 88c32 80 -7 172 -88 204l-82 33c13 3 28 5 42 5
+c110 0 198 -88 198 -198zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v153l172 -69c26 -121 134 -212 262 -212c140 0 255 107 268 243l345 252c200 0 361 162 361 360c0 200 -161 361 -361 361c-197 0 -358 -160 -360 -357l-225 -322
+c-9 1 -18 1 -28 1c-50 0 -97 -13 -137 -37l-297 119v468c0 159 129 288 288 288h960c159 0 288 -129 288 -288zM1289 887c0 -133 -108 -241 -242 -241c-133 0 -241 108 -241 241c0 134 108 242 241 242c134 0 242 -108 242 -242z" />
+    <glyph glyph-name="medium-square" unicode="&#xf2f8;" 
+d="M0 1404h1536v-1536h-1536v1536zM257 1057v-17l97 -116c7 -7 13 -20 13 -30v-4v-456v-9c0 -12 -6 -28 -14 -36l-109 -132v-17h308v17l-109 132c-9 9 -15 26 -15 38v7v395l270 -589h31l232 589v-469c0 -13 0 -16 -8 -24l-84 -80v-18h405v18l-80 79c-5 4 -10 12 -10 19
+c0 1 1 3 1 4v580c0 1 -1 3 -1 4c0 7 5 15 10 19l82 79v17h-285l-203 -507l-232 507h-299z" />
+    <glyph glyph-name="sort-numeric-desc" unicode="&#xf163;" horiz-adv-x="1454" 
+d="M1314 1247c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
+c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1424 -142v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1454 1189c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113
+c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244c0 138 106 251 253 251c159 0 287 -130 287 -347z" />
+    <glyph glyph-name="video-camera" unicode="&#xf03d;" horiz-adv-x="1792" 
+d="M1792 1184v-1088c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-403 403v-166c0 -159 -129 -288 -288 -288h-704c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h704c159 0 288 -129 288 -288v-165l403 402c12 13 28 19 45 19c8 0 17 -2 25 -5
+c23 -10 39 -33 39 -59z" />
+    <glyph glyph-name="thumbs-down" unicode="&#xf165;" horiz-adv-x="1600" 
+d="M256 960c0 36 -29 64 -64 64c-36 0 -64 -28 -64 -64c0 -35 28 -64 64 -64c35 0 64 29 64 64zM416 448c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64v-640zM1545 597c34 -38 55 -96 55 -149c-1 -104 -88 -192 -192 -192
+h-277c8 -32 18 -42 29 -64c26 -52 56 -110 56 -192c0 -77 0 -256 -224 -256c-17 0 -33 7 -45 19c-43 42 -55 104 -66 163c-12 58 -23 118 -62 157c-31 31 -65 74 -101 120c-44 58 -140 177 -177 180c-33 3 -61 31 -61 64v641c0 35 30 63 64 64c35 1 95 22 158 44
+c108 37 243 84 386 84h129c88 -1 154 -27 197 -78c38 -45 55 -106 49 -181c25 -24 44 -57 54 -94c11 -40 11 -80 0 -117c30 -40 45 -87 43 -137c0 -14 -4 -44 -15 -76z" />
+    <glyph glyph-name="medium" unicode="&#xf23a;" 
+d="M182 999v6c0 15 -8 34 -19 44l-144 173v26h446l344 -755l302 755h425v-26l-123 -117c-8 -6 -14 -19 -14 -29c0 -2 1 -4 1 -6v-864c0 -2 -1 -4 -1 -6c0 -10 6 -23 14 -29l120 -117v-26h-602v26l124 120c12 12 12 16 12 35v698l-345 -876h-47l-401 876v-587
+c0 -3 -1 -8 -1 -11c0 -18 10 -44 23 -57l162 -195v-26h-458v26l161 195c12 13 22 38 22 55c0 4 0 9 -1 13v679z" />
+    <glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="1036" 
+d="M1017 659l-742 -742c-25 -25 -65 -25 -90 0l-166 166c-25 25 -25 65 0 90l531 531l-531 531c-25 25 -25 65 0 90l166 166c25 25 65 25 90 0l742 -742c25 -25 25 -65 0 -90z" />
+    <glyph glyph-name="bus" unicode="&#xf207;" 
+d="M384 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1362 716l-72 384c-6 30 -32 52 -63 52h-918c-31 0 -57 -22 -63 -52l-72 -384
+c-7 -40 23 -76 63 -76h1062c40 0 70 36 63 76zM1136 1328c0 27 -21 48 -48 48h-640c-26 0 -48 -21 -48 -48s22 -48 48 -48h640c27 0 48 21 48 48zM1536 603v-603h-128v-128c0 -71 -57 -128 -128 -128s-128 57 -128 128v128h-768v-128c0 -71 -57 -128 -128 -128
+s-128 57 -128 128v128h-128v603c0 82 7 143 25 223l103 454c19 160 299 256 640 256s621 -96 640 -256l105 -454c18 -80 23 -141 23 -223z" />
+    <glyph glyph-name="registered" unicode="&#xf25d;" horiz-adv-x="1792" 
+d="M1042 833c0 58 -20 99 -60 121c-20 11 -48 18 -117 18h-123v-281h162c88 0 138 52 138 142zM1094 548l205 -373c5 -10 5 -22 -1 -31c-5 -10 -16 -16 -27 -16h-152c-12 0 -23 6 -28 17l-194 365h-155v-350c0 -18 -14 -32 -32 -32h-134c-18 0 -32 14 -32 32v960
+c0 18 14 32 32 32h294c105 0 151 -9 190 -24c113 -42 183 -153 183 -289c0 -123 -61 -227 -158 -275c3 -5 6 -10 9 -16zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM1792 640c0 -495 -401 -896 -896 -896
+s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
+    <glyph glyph-name="mars" unicode="&#xf222;" 
+d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-382 -383c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576c136 0 261 -47 359 -126l382 382h-261c-18 0 -32 14 -32 32v64
+c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="hand-rock-o" unicode="&#xf255;" 
+d="M768 1152c-71 0 -128 -57 -128 -128v-128h-32v93c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-429l-32 30v172c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-224c0 -31 13 -60 35 -82l310 -296c29 -29 39 -62 39 -102c0 -35 29 -64 64 -64h640
+c35 0 64 29 64 64v25c0 26 3 52 10 77l108 436c7 25 10 51 10 77v246c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-32h-32v125c0 53 -36 102 -89 113c-7 1 -15 2 -23 2c-62 0 -112 -50 -112 -112v-128h-32v122c0 67 -48 126 -115 133c-5 1 -9 1 -13 1zM768 1280
+c54 0 106 -17 149 -50c37 22 80 34 123 34c79 0 152 -38 197 -103c19 5 39 7 59 7c134 0 240 -110 240 -243v-246c0 -36 -5 -73 -13 -108l-109 -436c-6 -24 -6 -47 -6 -71c0 -106 -86 -192 -192 -192h-640c-114 0 -192 91 -192 201l-308 296c-47 45 -76 109 -76 175v224
+c0 132 108 240 240 240c6 0 11 0 16 -1c8 127 114 225 240 225c34 0 67 -7 98 -21c47 45 109 69 174 69z" />
+    <glyph glyph-name="window-close" unicode="&#xf2d3;" horiz-adv-x="1792" 
+d="M1175 215l146 146c13 13 13 33 0 46l-233 233l233 233c13 13 13 33 0 46l-146 146c-13 13 -33 13 -46 0l-233 -233l-233 233c-13 13 -33 13 -46 0l-146 -146c-13 -13 -13 -33 0 -46l233 -233l-233 -233c-13 -13 -13 -33 0 -46l146 -146c13 -13 33 -13 46 0l233 233
+l233 -233c13 -13 33 -13 46 0zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1632" 
+d="M1440 320c0 26 -10 50 -28 68l-208 208c-18 18 -43 28 -68 28c-29 0 -52 -11 -72 -32c33 -33 72 -61 72 -112c0 -53 -43 -96 -96 -96c-51 0 -79 39 -112 72c-21 -20 -33 -43 -33 -73c0 -25 10 -50 28 -68l206 -207c18 -18 43 -27 68 -27s50 9 68 26l147 146
+c18 18 28 42 28 67zM737 1025c0 25 -10 50 -28 68l-206 207c-18 18 -43 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l208 -208c18 -18 43 -27 68 -27c29 0 52 10 72 31c-33 33 -72 61 -72 112c0 53 43 96 96 96c51 0 79 -39 112 -72
+c21 20 33 43 33 73zM1632 320c0 -76 -31 -150 -85 -203l-147 -146c-54 -54 -127 -83 -203 -83c-77 0 -150 30 -204 85l-206 207c-54 54 -83 127 -83 203c0 79 32 154 88 209l-88 88c-55 -56 -129 -88 -208 -88c-76 0 -150 30 -204 84l-208 208c-55 55 -84 127 -84 204
+c0 76 31 150 85 203l147 146c54 54 127 83 203 83c77 0 150 -30 204 -85l206 -207c54 -54 83 -127 83 -203c0 -79 -32 -154 -88 -209l88 -88c55 56 129 88 208 88c76 0 150 -30 204 -84l208 -208c55 -55 84 -127 84 -204z" />
+    <glyph glyph-name="window-minimize" unicode="&#xf2d1;" horiz-adv-x="1792" 
+d="M1792 224v-192c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v192c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="eyedropper" unicode="&#xf1fb;" horiz-adv-x="1792" 
+d="M1698 1442c125 -125 126 -328 0 -452l-225 -223l104 -104c13 -13 13 -33 0 -46l-210 -210c-13 -13 -33 -13 -46 0l-105 105l-603 -603c-24 -24 -56 -37 -90 -37h-203l-256 -128l-64 64l128 256v203c0 34 13 66 37 90l603 603l-105 105c-13 13 -13 33 0 46l210 210
+c13 13 33 13 46 0l104 -104l223 225c124 126 327 125 452 0zM512 64l576 576l-192 192l-576 -576v-192h192z" />
+    <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1600" 
+d="M1600 576c0 -35 -29 -64 -64 -64h-224c0 -125 -27 -219 -67 -290l208 -209c25 -25 25 -65 0 -90c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-198 197s-131 -120 -301 -120v896h-128v-896c-181 0 -313 132 -313 132l-183 -207c-13 -14 -30 -21 -48 -21c-15 0 -30 5 -43 16
+c-26 24 -28 64 -5 91l202 227c-35 69 -58 158 -58 274h-224c-35 0 -64 29 -64 64s29 64 64 64h224v294l-173 173c-25 25 -25 65 0 90s65 25 90 0l173 -173h844l173 173c25 25 65 25 90 0s25 -65 0 -90l-173 -173v-294h224c35 0 64 -29 64 -64zM1120 1152h-640
+c0 177 143 320 320 320s320 -143 320 -320z" />
+    <glyph glyph-name="angellist" unicode="&#xf209;" horiz-adv-x="1258" 
+d="M942 1158l-114 -328l117 -21c30 82 165 451 165 518c0 25 -8 56 -38 56c-56 0 -116 -182 -130 -225zM643 471c11 -29 23 -58 33 -88c22 25 45 48 71 67c-35 7 -70 10 -104 21zM351 1367c0 -102 121 -420 159 -521c14 8 32 10 49 10c24 0 51 -3 75 -5l-121 351
+c-13 38 -71 220 -123 220c-27 0 -39 -32 -39 -55zM272 608c0 -73 196 -342 269 -342c20 0 37 22 37 40c0 23 -23 80 -32 102c-26 67 -121 274 -203 274c-27 0 -71 -47 -71 -74zM114 273c0 -36 12 -71 25 -104c79 -195 257 -309 465 -309c152 0 280 58 382 170
+c108 120 152 268 152 427c0 56 1 145 -43 185c-84 74 -369 102 -482 102c-14 0 -38 -1 -49 -11c-12 -5 -12 -24 -12 -35c0 -153 323 -139 420 -139c19 0 28 -5 40 -19c13 -16 17 -35 19 -55c-26 -26 -62 -41 -96 -54c-33 -12 -65 -25 -93 -46c-77 -56 -153 -152 -153 -251
+c0 -62 37 -115 37 -176c0 -1 -7 -23 -7 -26c-114 8 -142 121 -146 216c-12 -3 -28 -2 -41 -2c2 -7 2 -14 2 -21c0 -73 -65 -126 -135 -126c-108 0 -251 127 -251 237c0 30 13 47 33 67c20 -25 41 -50 60 -76c29 -39 79 -104 133 -104c14 0 41 12 41 29
+c0 45 -164 256 -204 256c-63 0 -97 -83 -97 -135zM0 264c0 130 50 216 179 251c-11 29 -28 73 -28 104c0 82 101 184 183 184c24 0 48 -7 70 -15c-42 119 -163 454 -163 567c0 101 51 181 160 181c140 0 299 -504 333 -604c44 110 182 571 338 571c98 0 153 -78 153 -171
+c0 -106 -118 -436 -159 -550c168 -41 192 -177 192 -328c0 -400 -255 -710 -668 -710c-76 0 -151 15 -223 42c-190 72 -367 267 -367 478z" />
+    <glyph glyph-name="chain-broken" unicode="&#xf127;" horiz-adv-x="1664" 
+d="M439 265l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46zM608 224v-320c0 -18 -14 -32 -32 -32s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM384 448c0 -18 -14 -32 -32 -32h-320
+c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1648 320c0 -77 -30 -149 -85 -203l-147 -146c-54 -54 -126 -83 -203 -83s-150 30 -204 85l-334 335c-17 17 -30 36 -42 56l239 18l273 -274c36 -36 100 -37 136 -1l147 146c18 18 28 42 28 67c0 26 -10 50 -28 68
+l-274 275l18 239c20 -12 39 -25 56 -42l336 -336c54 -55 84 -127 84 -204zM1031 1044l-239 -18l-273 274c-18 18 -42 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l274 -274l-18 -240c-20 12 -39 25 -56 42l-336 336
+c-54 55 -84 127 -84 204s30 149 85 203l147 146c54 54 126 83 203 83s150 -30 204 -85l334 -335c17 -17 30 -36 42 -56zM1664 960c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1120 1504v-320c0 -18 -14 -32 -32 -32
+s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM1527 1353l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
+    <glyph glyph-name="info" unicode="&#xf129;" horiz-adv-x="640" 
+d="M640 192v-128c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64v384h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-576h64c35 0 64 -29 64 -64zM512 1344v-192c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v192
+c0 35 29 64 64 64h256c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="956" 
+d="M876 207l80 -237c-30 -45 -166 -96 -288 -98c-363 -6 -500 258 -500 444v544h-168v215c252 91 313 319 327 449c1 8 8 12 12 12h244v-424h333v-252h-334v-518c0 -70 26 -167 160 -164c44 1 103 14 134 29z" />
+    <glyph glyph-name="line-chart" unicode="&#xf201;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435c0 -28 -34 -43 -55 -22l-121 121l-633 -633c-13 -13 -33 -13 -46 0l-233 233l-416 -416l-192 192l585 585c13 13 33 13 46 0l233 -233l464 464l-121 121c-21 21 -6 55 22 55h435c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="long-arrow-up" unicode="&#xf176;" horiz-adv-x="767" 
+d="M765 1043c-5 -11 -16 -19 -29 -19h-224v-1248c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1248h-224c-13 0 -24 7 -29 19s-3 25 5 35l350 384c6 6 14 10 23 10s18 -4 24 -10l355 -384c8 -10 10 -23 5 -35z" />
+    <glyph glyph-name="simplybuilt" unicode="&#xf215;" horiz-adv-x="2048" 
+d="M863 504c0 150 -121 271 -271 271c-149 0 -270 -121 -270 -271c0 -149 121 -270 270 -270c150 0 271 121 271 270zM1726 505c0 149 -121 270 -270 270c-150 0 -271 -121 -271 -270c0 -150 121 -271 271 -271c149 0 270 121 270 271zM2048 1314v-1348
+c0 -59 -48 -107 -108 -107h-1832c-60 0 -108 48 -108 107v1348c0 59 48 107 108 107h431c59 0 108 -48 108 -107v-161h754v161c0 59 49 107 108 107h431c60 0 108 -48 108 -107z" />
+    <glyph glyph-name="trash" unicode="&#xf1f8;" horiz-adv-x="1408" 
+d="M512 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM768 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1024 160v704c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96
+c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
+    <glyph glyph-name="free-code-camp" unicode="&#xf2c5;" horiz-adv-x="2304" 
+d="M453 -101c0 -28 -25 -54 -53 -54c-4 0 -9 2 -13 3c-56 13 -128 97 -162 140c-156 197 -225 427 -225 676c0 232 70 431 213 614c33 43 131 156 189 156c25 0 51 -20 51 -46c0 -30 -44 -71 -63 -90c-55 -57 -106 -115 -147 -184c-85 -142 -119 -284 -119 -449
+c0 -177 33 -337 123 -491c38 -65 83 -119 136 -173c21 -23 70 -68 70 -102zM1796 33c0 -37 -25 -68 -64 -68h-1081c-35 0 -64 29 -64 64c0 37 25 68 64 68h1081c35 0 64 -29 64 -64zM1581 644c0 -84 -19 -162 -67 -233c-33 -49 -100 -112 -153 -139c-8 -5 -18 -10 -27 -10
+c-8 0 -23 9 -23 18c0 29 122 98 122 232c0 44 -11 93 -35 130c-7 10 -32 42 -46 42c-3 0 -3 -2 -3 -5c0 -24 15 -47 15 -72c0 -32 -39 -48 -66 -48c-47 0 -66 33 -66 76c0 29 3 59 3 88c0 21 -1 27 -10 46c-14 27 -60 82 -93 82c-9 0 -12 0 -12 -9c0 -14 32 -29 32 -80
+c0 -133 -183 -157 -183 -290c0 -60 8 -110 42 -160c21 -31 44 -49 79 -63c9 -3 18 -4 18 -15s-9 -16 -18 -16c-5 0 -28 9 -33 11c-154 56 -271 190 -271 358c0 199 239 373 239 564c0 37 -6 63 -25 94c-11 18 -38 53 -56 64c-8 4 -19 11 -19 21c0 17 29 20 41 20
+c36 0 77 -13 110 -29c139 -66 168 -167 192 -307c6 -33 18 -138 66 -138c31 0 51 21 51 51c0 45 -40 94 -40 119c0 7 4 10 10 10c25 0 77 -53 93 -70c97 -103 133 -203 133 -342zM2304 615c0 -176 -47 -352 -138 -503c-42 -70 -180 -266 -271 -266c-21 0 -46 26 -46 47
+c0 34 117 143 146 180c124 156 183 332 183 531c0 164 -20 297 -93 446c-45 92 -92 154 -163 228c-23 24 -73 69 -73 105c0 25 26 52 51 52c66 0 161 -122 196 -169c134 -180 191 -365 206 -587c1 -21 2 -43 2 -64z" />
+    <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664" 
+d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
+    <glyph glyph-name="calendar-o" unicode="&#xf133;" horiz-adv-x="1664" 
+d="M128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152
+v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792" 
+d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h64zM1408 1152v-1280h-1024v1280h128v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h128zM1792 928v-832c0 -123 -101 -224 -224 -224h-64v1280h64
+c123 0 224 -101 224 -224z" />
+    <glyph glyph-name="arrow-circle-o-up" unicode="&#xf01b;" 
+d="M1118 660c-5 -12 -17 -20 -30 -20h-192v-352c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v352h-192c-18 0 -32 14 -32 32c0 9 4 17 10 24l319 319c7 6 15 9 23 9s16 -3 23 -9l320 -320c9 -10 12 -23 7 -35zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
+s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="1558" 
+d="M1558 565c0 -34 -14 -66 -37 -90l-75 -75c-24 -24 -57 -38 -91 -38s-67 14 -90 38l-294 293v-704c0 -72 -60 -117 -128 -117h-128c-68 0 -128 45 -128 117v704l-294 -293c-23 -24 -56 -38 -90 -38s-67 14 -90 38l-75 75c-24 24 -38 56 -38 90s14 67 38 91l651 651
+c23 24 56 37 90 37s67 -13 91 -37l651 -651c23 -24 37 -57 37 -91z" />
+    <glyph glyph-name="venus-mars" unicode="&#xf228;" horiz-adv-x="2048" 
+d="M1664 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -240 -237 -431 -478 -467c-152 -23 -295 14 -409 90c-75 -50 -162 -83 -256 -93v-132h96c18 0 32 -14 32 -32
+v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-314 35 -553 323 -506 654c34 249 232 449 480 487c153 23 296 -14 410 -90c92 61 202 97 320 97c136 0 261 -48 359 -126
+l255 254h-134c-18 0 -32 14 -32 32v64zM896 391c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM128 704c0 -247 201 -448 448 -448c79 0 154 21 218 57c-95 103 -154 240 -154 391s59 288 154 391c-64 36 -139 57 -218 57
+c-247 0 -448 -201 -448 -448zM1216 256c247 0 448 201 448 448s-201 448 -448 448c-79 0 -154 -21 -218 -57c95 -103 154 -240 154 -391s-59 -288 -154 -391c64 -36 139 -57 218 -57z" />
+    <glyph glyph-name="pause-circle" unicode="&#xf28b;" 
+d="M704 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1152 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768
+s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="1664" 
+d="M640 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1536 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1664 1088v-512c0 -32 -25 -60 -57 -64l-1044 -122c5 -23 13 -46 13 -70
+c0 -23 -14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 45 106 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c67 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="files-o" unicode="&#xf0c5;" horiz-adv-x="1792" 
+d="M1696 1152c53 0 96 -43 96 -96v-1216c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v288h-544c-53 0 -96 43 -96 96v672c0 53 31 127 68 164l408 408c37 37 111 68 164 68h416c53 0 96 -43 96 -96v-328c39 23 89 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323
+l-299 -299h299v299zM708 676l316 316v416h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h512v256c0 53 31 127 68 164zM1664 -128v1152h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h896z" />
+    <glyph glyph-name="mastodon-square" unicode="&#xf300;" 
+d="M288 1408h960c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288zM766 1189v0c-140 -1 -275 -17 -354 -53c0 0 -156 -70 -156 -308c0 -55 -1 -119 1 -188c6 -233 43 -463 258 -520
+c99 -26 184 -32 253 -28c124 7 195 45 195 45l-5 90s-88 -28 -188 -25c-99 3 -204 11 -220 133c-1 11 -2 22 -2 34c0 0 97 -24 220 -30c75 -3 146 4 218 13c138 16 257 102 272 179c24 122 22 297 22 297c0 238 -156 308 -156 308c-79 36 -214 52 -354 53h-4zM608 1003v0
+c58 0 103 -23 132 -68l28 -47l28 47c29 45 74 68 132 68c51 0 92 -18 123 -53c31 -34 45 -81 45 -140v-288h-114v280c0 59 -25 88 -75 88c-55 0 -82 -35 -82 -105v-153h-114v153c0 70 -27 105 -82 105c-50 0 -75 -29 -75 -88v-280h-114v288c0 59 15 105 45 140
+c31 35 72 53 123 53z" />
+    <glyph glyph-name="th-large" unicode="&#xf009;" horiz-adv-x="1664" 
+d="M768 512v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM768 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 512v-384
+c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
+    <glyph glyph-name="at" unicode="&#xf1fa;" 
+d="M972 761c0 144 -75 230 -201 230c-166 0 -344 -165 -344 -432c0 -149 74 -234 204 -234c201 0 341 230 341 436zM1536 640c0 -311 -222 -428 -412 -434c-13 0 -18 -1 -32 -1c-62 0 -111 18 -142 53c-19 22 -30 50 -33 83c-62 -78 -170 -154 -305 -154
+c-215 0 -338 133 -338 365c0 319 221 578 491 578c117 0 211 -50 261 -135l2 19l11 56c1 8 8 18 15 18h118c5 0 10 -7 13 -11c3 -3 4 -11 3 -16l-120 -614c-4 -19 -5 -34 -5 -48c0 -54 16 -65 57 -65c68 2 288 30 288 306c0 389 -251 640 -640 640
+c-353 0 -640 -287 -640 -640s287 -640 640 -640c147 0 291 51 405 144c14 12 34 10 45 -4l41 -49c5 -7 8 -15 7 -24c-1 -8 -5 -16 -12 -22c-136 -111 -309 -173 -486 -173c-423 0 -768 345 -768 768s345 768 768 768c459 0 768 -309 768 -768z" />
+    <glyph glyph-name="file" unicode="&#xf15b;" 
+d="M1024 1024v472c14 -9 26 -18 36 -28l408 -408c10 -10 19 -22 28 -36h-472zM896 992c0 -53 43 -96 96 -96h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544z" />
+    <glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="832" 
+d="M832 1504v-1339l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41z" />
+    <glyph glyph-name="futbol-o" unicode="&#xf1e3;" horiz-adv-x="1792" 
+d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM1515 186c94 128 149 284 149 454v3l-102 -89l-240 224l63 323l134 -12c-95 131 -231 232 -389 282l53 -124l-287 -159l-287 159
+l53 124c-158 -50 -294 -151 -389 -282l135 12l62 -323l-240 -224l-102 89v-3c0 -170 55 -326 149 -454l30 132l326 -40l139 -298l-116 -69c75 -25 156 -39 240 -39s165 14 240 39l-116 69l139 298l326 40z" />
+    <glyph glyph-name="flag-checkered" unicode="&#xf11e;" horiz-adv-x="1728" 
+d="M768 536v192c-122 -11 -269 -60 -384 -117v-185c116 54 260 100 384 110zM768 954v197c-126 -6 -274 -65 -384 -126v-189c118 61 260 113 384 118zM1600 491v184c-91 -45 -250 -112 -384 -71v224c-13 4 -26 9 -39 15c-115 58 -209 112 -360 112c-16 0 -32 -1 -49 -3v-222
+h19c151 0 275 -54 390 -111c13 -6 26 -11 39 -15v-188c27 -11 57 -17 91 -17c111 0 231 59 293 92zM1600 918v189c-80 -43 -192 -91 -306 -91c-27 0 -53 2 -78 8v-196c134 -38 293 39 384 90zM256 1280c0 -47 -26 -88 -64 -110v-1266c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146
+c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2c19 -12 31 -33 31 -55z" />
+    <glyph glyph-name="genderless" unicode="&#xf22d;" horiz-adv-x="1152" 
+d="M1024 576c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1152 576c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576s576 -258 576 -576z" />
+    <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1664" 
+d="M1024 704c0 35 -29 64 -64 64h-256c-35 0 -64 -29 -64 -64s29 -64 64 -64h256c35 0 64 29 64 64zM1600 896v-960c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v960c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1664 1344v-256c0 -35 -29 -64 -64 -64h-1536
+c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1536c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920" 
+d="M384 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 704v128c0 35 -29 64 -64 64h-128
+c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 -64v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM384 1088v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128
+c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 704v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64z
+M1792 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 704v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 1088v128c0 35 -29 64 -64 64h-128
+c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1920 1248v-1344c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1344c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
+    <glyph glyph-name="power-off" unicode="&#xf011;" 
+d="M1536 640c0 -423 -345 -768 -768 -768s-768 345 -768 768c0 243 112 467 307 613c57 43 137 32 179 -25c43 -56 31 -137 -25 -179c-130 -98 -205 -247 -205 -409c0 -282 230 -512 512 -512s512 230 512 512c0 162 -75 311 -205 409c-56 42 -68 123 -25 179
+c42 57 123 68 179 25c195 -146 307 -370 307 -613zM896 1408v-640c0 -70 -58 -128 -128 -128s-128 58 -128 128v640c0 70 58 128 128 128s128 -58 128 -128z" />
+    <glyph glyph-name="percent" unicode="&#xf295;" 
+d="M1280 256c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM512 1024c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1536 256c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384zM1440 1344c0 -14 -5 -27 -13 -38l-1056 -1408c-12 -16 -31 -26 -51 -26h-160c-35 0 -64 29 -64 64c0 14 5 27 13 38l1056 1408c12 16 31 26 51 26h160c35 0 64 -29 64 -64zM768 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
+s384 -172 384 -384z" />
+    <glyph glyph-name="google-wallet" unicode="&#xf1ee;" horiz-adv-x="1756" 
+d="M405 864c20 0 40 -10 52 -26c175 -239 297 -495 362 -774h-446c-80 278 -198 532 -367 749c-16 21 0 51 26 51h373zM964 507c-33 -135 -75 -266 -125 -393c-53 209 -138 405 -256 594c26 145 41 294 44 449c141 -227 253 -443 337 -650zM1063 1216
+c299 -412 521 -920 569 -1472h-451c-33 534 -279 1040 -553 1472h435zM1756 640c0 -278 -38 -570 -101 -812c-44 370 -166 738 -359 1083c-17 202 -53 398 -106 584c-5 21 10 41 31 41h359c28 0 54 -19 61 -46c76 -270 115 -556 115 -850z" />
+    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664" 
+d="M1639 1058c25 -36 32 -83 18 -129l-275 -906c-25 -85 -113 -151 -199 -151h-923c-102 0 -211 81 -248 185c-16 45 -16 89 -2 127c2 20 6 40 7 64c1 16 -8 29 -6 41c4 24 25 41 41 68c30 50 64 131 75 183c5 19 -5 41 0 58c5 19 24 33 34 51c27 46 62 135 67 182
+c2 21 -8 44 -2 60c7 23 29 33 44 53c24 33 64 128 70 181c2 17 -8 34 -5 52c4 19 28 39 44 62c42 62 50 199 177 163l-1 -3c17 4 34 9 51 9h761c47 0 89 -21 114 -56c26 -36 32 -83 18 -130l-274 -906c-47 -154 -73 -188 -200 -188h-869c-13 0 -29 -3 -38 -15
+c-8 -12 -9 -21 -1 -43c20 -58 89 -70 144 -70h923c37 0 80 21 91 57l300 987c6 19 6 39 5 57c23 -9 44 -23 59 -43zM575 1056c-6 -18 4 -32 22 -32h608c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32zM492 800c-6 -18 4 -32 22 -32h608
+c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32z" />
+    <glyph glyph-name="thermometer-three-quarters" unicode="&#xf2c8;" horiz-adv-x="1024" 
+d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v651h128v-651c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
+s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
+" />
+    <glyph glyph-name="transgender" unicode="&#xf224;" horiz-adv-x="1408" 
+d="M1024 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
+h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-302 33 -535 302 -510 618c21 272 237 495 507 526c162 19 312 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64zM576 256c247 0 448 201 448 448s-201 448 -448 448
+s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="cloud-upload" unicode="&#xf0ee;" horiz-adv-x="1920" 
+d="M1280 672c0 8 -3 17 -9 23l-352 352c-6 6 -14 9 -23 9c-8 0 -17 -3 -23 -9l-351 -351c-6 -7 -10 -15 -10 -24c0 -18 14 -32 32 -32h224v-352c0 -17 15 -32 32 -32h192c17 0 32 15 32 32v352h224c18 0 32 15 32 32zM1920 384c0 -212 -172 -384 -384 -384h-1088
+c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
+    <glyph glyph-name="bullseye" unicode="&#xf140;" 
+d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1152 640c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1280 640c0 -283 -229 -512 -512 -512s-512 229 -512 512s229 512 512 512
+s512 -229 512 -512zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="openid" unicode="&#xf19b;" horiz-adv-x="1792" 
+d="M1086 1536v-1536l-272 -128c-460 41 -814 286 -814 583c0 286 330 524 767 577v-172c-286 -50 -496 -212 -496 -405c0 -204 234 -373 543 -412v1360zM1755 954l37 -390l-525 114l147 83c-78 46 -174 80 -280 99v172c185 -22 351 -78 481 -157z" />
+    <glyph glyph-name="repeat" unicode="&#xf01e;" 
+d="M1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l138 138c-94 87 -218 137 -349 137c-282 0 -512 -230 -512 -512s230 -512 512 -512c159 0 306 72 404 199c5 7 14 11 23 12c9 0 18 -3 25 -9l137 -138c12 -11 12 -30 2 -43
+c-146 -176 -362 -277 -591 -277c-423 0 -768 345 -768 768s345 768 768 768c197 0 388 -79 529 -212l130 129c18 19 46 24 70 14c23 -10 39 -33 39 -59z" />
+    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664" 
+d="M1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -26 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73
+l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
+    <glyph glyph-name="users" unicode="&#xf0c0;" horiz-adv-x="1920" 
+d="M593 640c-104 -3 -198 -48 -265 -128h-134c-100 0 -194 48 -194 159c0 81 -3 353 124 353c21 0 125 -85 260 -85c46 0 90 8 133 23c-3 -22 -5 -44 -5 -66c0 -91 29 -181 81 -256zM1664 3c0 -162 -107 -259 -267 -259h-874c-160 0 -267 97 -267 259c0 226 53 573 346 573
+c34 0 158 -139 358 -139s324 139 358 139c293 0 346 -347 346 -573zM640 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1344 896c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384zM1920 671
+c0 -111 -94 -159 -194 -159h-134c-67 80 -161 125 -265 128c52 75 81 165 81 256c0 22 -2 44 -5 66c43 -15 87 -23 133 -23c135 0 239 85 260 85c127 0 124 -272 124 -353zM1792 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256z" />
+    <glyph glyph-name="transgender-alt" unicode="&#xf225;" horiz-adv-x="1664" 
+d="M1280 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
+h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572c0 136 48 261 126 359l-52 53l-101 -111c-12 -13 -32 -14 -45 -3l-48 44c-13 11 -14 32 -2 45l105 115l-111 112v-134c0 -18 -14 -32 -32 -32h-64
+c-18 0 -32 14 -32 32v288c0 35 29 64 64 64h288c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-133l106 -107l86 94c12 13 32 14 45 3l48 -44c13 -11 14 -32 2 -45l-90 -99l57 -56c98 78 223 126 359 126s261 -48 359 -126l255 254h-134c-18 0 -32 14 -32 32v64zM832 256
+c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="chevron-up" unicode="&#xf077;" horiz-adv-x="1612" 
+d="M1593 205l-166 -165c-25 -25 -65 -25 -90 0l-531 531l-531 -531c-25 -25 -65 -25 -90 0l-166 165c-25 25 -25 66 0 91l742 741c25 25 65 25 90 0l742 -741c25 -25 25 -66 0 -91z" />
+    <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1428" 
+d="M1364 486c61 -35 82 -114 47 -175l-64 -110c-35 -61 -114 -82 -175 -47l-266 153v-307c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v307l-266 -153c-61 -35 -140 -14 -175 47l-64 110c-35 61 -14 140 47 175l266 154l-266 154c-61 35 -82 114 -47 175l64 110
+c35 61 114 82 175 47l266 -153v307c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-307l266 153c61 35 140 14 175 -47l64 -110c35 -61 14 -140 -47 -175l-266 -154z" />
+    <glyph glyph-name="plus-circle" unicode="&#xf055;" 
+d="M1216 576v128c0 35 -29 64 -64 64h-256v256c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-256h-256c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h256v-256c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v256h256c35 0 64 29 64 64zM1536 640
+c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
+    <glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="1664" 
+d="M1280 832c0 35 -29 64 -64 64c-17 0 -33 -7 -45 -19l-147 -146v293c0 35 -29 64 -64 64s-64 -29 -64 -64v-293l-147 146c-12 12 -28 19 -45 19c-35 0 -64 -29 -64 -64c0 -17 7 -33 19 -45l256 -256c12 -12 28 -19 45 -19s33 7 45 19l256 256c12 12 19 28 19 45zM640 0
+c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920
+c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
+    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1664" 
+d="M338 829l494 -305l-342 -285l-490 319zM1324 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM490 1418l342 -285l-494 -304l-338 270zM1326 829l338 -271l-489 -319l-343 285zM1175 1418l489 -319l-338 -270l-494 304z" />
+    <glyph glyph-name="debian" unicode="&#xf2ff;" horiz-adv-x="1440" 
+d="M1 954c3 22 -11 29 15 62c-4 -17 -6 -33 -15 -62zM61 1152c0 -18 30 18 8 -31c-40 -28 -3 -12 -8 31zM754 1527c20 7 49 4 70 9c-28 -2 -55 -3 -82 -7l12 -2zM1399 728c-8 -61 -27 -121 -56 -176c26 52 43 108 51 165zM582 550l10 -27c-12 21 -26 42 -33 66
+c7 -14 13 -28 23 -39zM536 548c25 -47 38 -61 56 -96c-25 21 -40 49 -60 76zM1274 762c2 -48 -15 -72 -29 -113l-25 -13c-21 -41 2 -26 -13 -58c-33 -29 -100 -91 -121 -97c-16 0 11 19 14 26c-44 -30 -36 -46 -103 -64l-2 4c-166 -78 -395 76 -392 287
+c-2 -13 -5 -10 -9 -15c-9 108 50 218 149 262c97 48 210 28 279 -37c-38 50 -113 103 -203 98c-88 -1 -171 -57 -198 -118c-45 -28 -49 -109 -69 -124c-26 -194 49 -277 178 -376c20 -14 5 -16 8 -26c-43 20 -82 50 -114 87c17 -25 35 -49 59 -68c-40 14 -93 98 -109 101
+c69 -124 282 -218 393 -172c-51 -2 -117 -1 -175 20c-24 12 -57 39 -51 44c152 -57 308 -43 439 62c33 26 70 70 81 71c-16 -24 2 -12 -10 -33c33 54 -14 22 35 93l18 -25c-7 45 55 99 49 169c14 22 16 -23 1 -73c21 55 5 65 10 110c6 -15 14 -32 18 -48
+c-14 53 14 89 21 120c-7 3 -22 -23 -25 40c0 27 8 14 11 21c-5 3 -19 24 -28 64c6 9 17 -25 25 -26c-5 32 -15 57 -15 81c-25 51 -9 -7 -29 22c-26 82 22 19 25 56c40 -58 63 -147 73 -184c-8 45 -21 89 -37 131c12 -5 -19 93 16 28c-38 138 -161 266 -274 327
+c14 -13 31 -29 25 -31c-56 34 -46 37 -54 51c-46 19 -49 -1 -79 0c-86 46 -103 40 -183 69l4 -17c-57 19 -67 -7 -129 0c-4 3 20 11 39 14c-55 -7 -53 11 -107 -2c13 9 28 15 42 23c-45 -3 -107 -26 -88 -5c-74 -33 -205 -78 -278 -147l-2 15c-34 -40 -147 -121 -156 -173
+l-9 -2c-17 -30 -29 -64 -43 -94c-23 -39 -33 -15 -30 -21c-45 -91 -68 -168 -87 -231c14 -21 1 -123 6 -206c-23 -408 286 -804 624 -896c50 -18 123 -17 186 -19c-74 21 -84 11 -156 36c-52 24 -63 53 -100 85l15 -26c-72 26 -42 31 -101 50l16 20c-23 2 -62 40 -73 61
+l-25 -1c-31 38 -47 65 -46 86l-8 -15c-9 16 -114 142 -60 113c-10 9 -23 15 -37 41l11 13c-26 33 -48 76 -46 90c14 -19 23 -22 32 -25c-65 162 -68 9 -118 165l10 1c-8 12 -13 25 -19 38l5 45c-47 54 -14 232 -7 329c5 39 40 81 66 147l-16 3c31 53 174 214 241 206
+c32 41 -6 1 -12 11c71 74 93 52 141 65c52 31 -45 -13 -20 11c89 23 63 52 180 64c12 -7 -28 -11 -38 -20c75 36 235 28 340 -20c122 -57 259 -225 264 -383l6 -2c-3 -63 10 -135 -12 -202l15 32zM779 1504l-11 -2l11 1v1zM748 1513c53 -2 48 -5 31 -9c3 4 -15 6 -31 9z
+M1079 782c-5 -22 -10 13 -16 16c5 20 20 37 16 -16zM1020 629c18 24 30 51 35 79c-4 -20 -15 -37 -25 -55c-56 -35 -5 21 0 42c-60 -75 -8 -45 -10 -66zM860 589c-30 0 6 -15 45 -21c8 7 21 18 29 25c-24 -6 -49 -6 -74 -4z" />
+    <glyph glyph-name="newspaper-o" unicode="&#xf1ea;" horiz-adv-x="2048" 
+d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960c0 -35 29 -64 64 -64
+s64 29 64 64zM1920 192v1088h-1536v-1088c0 -22 -4 -44 -11 -64h1483c35 0 64 29 64 64zM2048 1408v-1216c0 -106 -86 -192 -192 -192h-1664c-106 0 -192 86 -192 192v1088h256v128h1792z" />
+    <glyph glyph-name="building" unicode="&#xf1ad;" horiz-adv-x="1408" 
+d="M1344 1536c35 0 64 -29 64 -64v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h1280zM512 1248v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 992v-64c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 736v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 480v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32zM384 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 672v64
+c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 1184v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64
+c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 -96v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM896 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z
+M896 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 1184v64c0 18 -14 32 -32 32h-64
+c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64
+c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 1184v64c0 18 -14 32 -32 32
+h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z" />
+    <glyph glyph-name="bitbucket" unicode="&#xf171;" horiz-adv-x="1408" 
+d="M815 677c11 -84 -91 -150 -162 -107c-80 35 -80 162 -2 198c67 41 164 -13 164 -91zM926 698c-18 142 -179 236 -310 177c-83 -37 -139 -125 -135 -218c5 -122 121 -222 243 -211s217 130 202 252zM1165 1240c-44 58 -119 68 -185 79c-187 30 -379 31 -566 -2
+c-62 -10 -132 -21 -171 -77c64 -60 155 -69 237 -79c148 -19 300 -20 448 -1c83 10 175 18 237 80zM1222 205c-28 -98 -12 -230 -116 -287c-179 -99 -396 -110 -593 -75c-104 19 -226 52 -283 150c-25 96 -41 194 -57 292l6 16l18 9c298 -197 715 -197 1014 0
+c47 -14 12 -71 11 -105zM1403 1166c-34 -219 -73 -437 -111 -655c-11 -64 -73 -100 -125 -127c-187 -94 -405 -110 -610 -88c-139 15 -281 52 -394 139c-53 41 -53 111 -63 170c-35 205 -75 410 -100 617c12 90 113 129 188 157c100 37 207 54 313 64c226 22 457 14 676 -50
+c78 -23 162 -55 215 -122c24 -31 16 -70 11 -105z" />
+    <glyph glyph-name="yelp" unicode="&#xf1e9;" horiz-adv-x="1366" 
+d="M688 217v-127c-1 -282 -1 -292 -6 -305c-8 -21 -26 -35 -51 -40c-72 -12 -297 71 -344 127c-10 11 -15 24 -17 36c-1 9 1 18 4 26c5 14 14 25 215 263c0 0 1 0 60 70c20 25 56 33 89 21c33 -13 51 -41 50 -71zM539 468c-2 -35 -22 -61 -52 -70l-120 -39
+c-269 -86 -278 -88 -292 -88c-22 1 -42 14 -54 36c-8 16 -14 43 -17 75c-11 98 2 245 31 291c14 22 34 33 56 32c15 0 27 -6 317 -124c0 0 -1 -1 84 -34c30 -12 49 -43 47 -79zM1365 171c-10 -72 -159 -261 -227 -288c-23 -9 -46 -7 -63 7c-12 9 -24 27 -184 287l-47 77
+c-18 28 -15 64 8 92c22 27 54 36 83 26c0 0 1 -1 119 -40c269 -88 278 -91 289 -100c18 -14 26 -35 22 -61zM693 803c5 -104 -39 -117 -54 -122c-14 -4 -58 -17 -114 71c-368 581 -378 598 -378 598c-5 21 1 44 19 62c55 57 354 141 432 121c25 -6 43 -22 49 -45
+c4 -25 40 -564 46 -685zM1355 695c2 -25 -7 -46 -26 -59c-12 -8 -24 -12 -329 -86c-49 -11 -76 -18 -91 -23l1 2c-30 -8 -64 6 -83 36s-18 63 0 87c0 0 1 1 75 102c164 224 172 235 184 243c19 13 42 13 65 2c65 -31 196 -226 204 -301v-3z" />
+    <glyph glyph-name="neuter" unicode="&#xf22c;" horiz-adv-x="1152" 
+d="M1152 960c0 -296 -224 -540 -512 -572v-612c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v612c-288 32 -512 276 -512 572c0 318 258 576 576 576s576 -258 576 -576zM576 512c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
+    <glyph glyph-name="behance-square" unicode="&#xf1b5;" 
+d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM499 1041h-371v-787h382c143 0 277 68 277 228c0 99 -47 172 -143 200c70 34 107 85 107 164c0 157 -117 195 -252 195zM477 723
+h-176v184h163c62 0 119 -17 119 -90c0 -67 -44 -94 -106 -94zM486 388h-185v217h189c76 0 124 -33 124 -113s-57 -104 -128 -104zM1136 356c-92 0 -140 54 -140 145h411c1 10 1 20 1 30c0 168 -99 309 -278 309c-173 0 -292 -131 -292 -302c0 -178 112 -299 292 -299
+c137 0 225 61 267 191h-138c-15 -48 -76 -74 -123 -74zM1126 722c78 0 117 -47 124 -122h-254c5 75 55 122 130 122zM964 988v-77h319v77h-319z" />
+    <glyph glyph-name="wifi" unicode="&#xf1eb;" horiz-adv-x="1964" 
+d="M982 13c-26 0 -166 140 -166 167c0 49 128 76 166 76s166 -27 166 -76c0 -27 -140 -167 -166 -167zM1252 284c-14 0 -123 100 -270 100c-148 0 -255 -100 -270 -100c-24 0 -169 144 -169 168c0 9 4 17 10 23c107 106 281 165 429 165s322 -59 429 -165
+c6 -6 10 -14 10 -23c0 -24 -145 -168 -169 -168zM1525 556c-8 0 -17 4 -23 8c-165 128 -304 204 -520 204c-302 0 -532 -212 -543 -212c-23 0 -167 144 -167 168c0 8 4 16 10 22c179 179 449 278 700 278s521 -99 700 -278c6 -6 10 -14 10 -22c0 -24 -144 -168 -167 -168z
+M1796 827c-8 0 -16 4 -22 9c-231 203 -480 316 -792 316s-561 -113 -792 -316c-6 -5 -14 -9 -22 -9c-23 0 -168 144 -168 168c0 9 4 17 10 23c253 251 618 390 972 390s719 -139 972 -390c6 -6 10 -14 10 -23c0 -24 -145 -168 -168 -168z" />
+    <glyph glyph-name="youtube" unicode="&#xf167;" horiz-adv-x="1482" 
+d="M944 292v-211c0 -45 -13 -67 -39 -67c-15 0 -30 7 -45 22v301c15 15 30 22 45 22c26 0 39 -23 39 -67zM1282 291v-46h-90v46c0 45 15 68 45 68s45 -23 45 -68zM316 509h107v94h-312v-94h105v-569h100v569zM604 -60h89v494h-89v-378c-20 -28 -39 -42 -57 -42
+c-12 0 -19 7 -21 21c-1 3 -1 14 -1 35v364h-89v-391c0 -35 3 -58 8 -73c8 -25 29 -37 58 -37c32 0 66 20 102 61v-54zM1033 88v197c0 46 -2 79 -9 99c-11 37 -36 56 -71 56c-33 0 -64 -18 -93 -54v217h-89v-663h89v48c30 -37 61 -55 93 -55c35 0 60 19 71 55
+c7 21 9 54 9 100zM1371 98v13h-91c0 -36 -1 -56 -2 -61c-5 -24 -18 -36 -40 -36c-31 0 -46 23 -46 69v87h179v103c0 53 -9 91 -27 116c-26 34 -61 51 -106 51c-46 0 -81 -17 -107 -51c-19 -25 -28 -63 -28 -116v-173c0 -53 10 -92 29 -116c26 -34 61 -51 108 -51
+s84 18 108 53c11 16 19 34 21 54c2 9 2 29 2 58zM763 1011v210c0 46 -13 69 -43 69c-29 0 -43 -23 -43 -69v-210c0 -46 14 -70 43 -70c30 0 43 24 43 70zM1482 260c0 -115 -1 -238 -26 -350c-19 -79 -83 -137 -160 -145c-184 -21 -370 -21 -555 -21s-371 0 -555 21
+c-77 8 -142 66 -160 145c-26 112 -26 235 -26 350c0 116 1 238 26 350c19 79 83 137 161 146c183 20 369 20 554 20s371 0 555 -20c77 -9 142 -67 160 -146c26 -112 26 -234 26 -350zM484 1536h102l-121 -399v-271h-100v271c-9 49 -29 119 -61 212c-22 62 -44 125 -65 187
+h106l71 -263zM854 1203v-175c0 -53 -9 -93 -28 -118c-25 -34 -60 -51 -106 -51c-45 0 -80 17 -105 51c-19 26 -28 65 -28 118v175c0 53 9 92 28 117c25 34 60 51 105 51c46 0 81 -17 106 -51c19 -25 28 -64 28 -117zM1189 1365v-499h-91v55c-36 -42 -70 -62 -103 -62
+c-29 0 -50 12 -59 37c-5 15 -8 39 -8 75v394h91v-367c0 -21 0 -33 1 -35c2 -14 9 -22 21 -22c18 0 37 14 57 43v381h91z" />
+    <glyph glyph-name="angle-double-down" unicode="&#xf103;" horiz-adv-x="998" 
+d="M998 672c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23zM998 1056
+c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
+    <glyph glyph-name="sort-alpha-asc" unicode="&#xf15d;" horiz-adv-x="1629" 
+d="M1159 1128h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
+c18 0 32 -14 32 -32zM1540 -23v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530c-6 -9 -14 -18 -21 -26l-11 -11v-2l14 2c9 2 18 2 30 2h248v119h121zM1629 874v-106h-288v106h75l-47 144h-243
+l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70z" />
+    <glyph glyph-name="area-chart" unicode="&#xf1fe;" horiz-adv-x="2048" 
+d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
+    <glyph glyph-name="dev-to" unicode="&#xf316;" 
+d="M39 1403v0c13 5 121 6 735 5c717 -1 721 -1 734 -9c7 -5 15 -14 20 -21c8 -13 8 -16 8 -739s0 -726 -8 -739c-5 -7 -13 -15 -20 -20c-13 -8 -16 -8 -739 -8s-726 0 -739 8c-7 5 -16 13 -21 20c-8 13 -8 16 -9 731c0 490 0 723 3 733c5 19 18 33 36 39zM404 935
+c-18 4 -53 6 -119 6h-93v-603h84c46 0 96 1 111 3c72 9 131 63 144 132c5 26 5 306 0 332c-6 31 -20 59 -43 83c-25 26 -50 40 -84 47zM897 886v55h-118c-92 0 -121 -2 -133 -6c-20 -7 -42 -30 -47 -50c-3 -11 -4 -89 -3 -254c1 -265 -1 -250 27 -274c20 -17 39 -19 163 -19
+h111v109l-95 1l-96 1l-1 69v69h116v109h-116v136h192v54zM1081 933c-3 8 -4 8 -62 8h-59l3 -10c26 -106 136 -514 143 -528c11 -23 33 -49 49 -57c18 -9 47 -7 67 4c16 9 45 45 50 62c8 25 138 522 138 525s-16 4 -60 3l-58 -1l-52 -198c-28 -109 -52 -199 -53 -202
+s-24 83 -52 190s-52 199 -54 204zM301 639v193l41 -1c37 -2 42 -2 56 -11c28 -18 27 -18 27 -178c0 -164 0 -166 -29 -183c-15 -9 -22 -10 -56 -11l-39 -2v193z" />
+    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408" 
+d="M1280 832c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 832c0 -84 -53 -154 -128 -181v-395c0 -212 -201 -384 -448 -384s-448 172 -448 384v132c-217 27 -384 187 -384 380v512c0 35 29 64 64 64c6 0 11 -1 16 -2c22 39 64 66 112 66
+c71 0 128 -57 128 -128s-57 -128 -128 -128c-23 0 -45 7 -64 18v-402c0 -141 144 -256 320 -256s320 115 320 256v402c-19 -11 -41 -18 -64 -18c-71 0 -128 57 -128 128s57 128 128 128c48 0 90 -27 112 -66c5 1 10 2 16 2c35 0 64 -29 64 -64v-512
+c0 -193 -167 -353 -384 -380v-132c0 -141 144 -256 320 -256s320 115 320 256v395c-75 27 -128 97 -128 181c0 106 86 192 192 192s192 -86 192 -192z" />
+    <glyph glyph-name="step-forward" unicode="&#xf051;" horiz-adv-x="1024" 
+d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678c-3 -7 -7 -13 -13 -19z" />
+    <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1542" 
+d="M1497 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-25 25 -25 65 0 90l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
+  </font>
+</defs></svg>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf
new file mode 100644 (file)
index 0000000..6cf62ef
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.448c34a56d699c29117a.woff2
new file mode 100644 (file)
index 0000000..64539b5
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.89889688147bd7575d63.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.89889688147bd7575d63.svg
new file mode 100644 (file)
index 0000000..94fb549
--- /dev/null
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf
new file mode 100644 (file)
index 0000000..1413fc6
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot
new file mode 100644 (file)
index 0000000..b93a495
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.fa2772327f55d8198301.woff b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.fa2772327f55d8198301.woff
new file mode 100644 (file)
index 0000000..9e61285
Binary files /dev/null and b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/glyphicons-halflings-regular.fa2772327f55d8198301.woff differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/index.html
new file mode 100644 (file)
index 0000000..ceac1e5
--- /dev/null
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <title>Ceph</title>
+
+  <script>
+    document.write('<base href="' + document.location+ '" />');
+  </script>
+
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="icon" type="image/x-icon" href="favicon.ico">
+<link rel="stylesheet" href="styles.f5317b15474518dffebc.css"></head>
+<body>
+  <noscript>
+    <div class="noscript container"
+         ng-if="false">
+      <div class="jumbotron alert alert-danger">
+        <h2 i18n>JavaScript required!</h2>
+        <p i18n>A browser with JavaScript enabled is required in order to use this service.</p>
+        <p i18n>When using Internet Explorer, please check your security settings and add this address to your trusted sites.</p>
+      </div>
+    </div>
+  </noscript>
+
+  <cd-root></cd-root>
+<script type="text/javascript" src="runtime.e449ada3d1974ef4aa64.js"></script><script type="text/javascript" src="polyfills.f31db31652a3fd9f4bca.js"></script><script type="text/javascript" src="scripts.fc88ef4a23399c760d0b.js"></script><script type="text/javascript" src="main.4cca9699be2afd74460d.js"></script></body>
+</html>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.4cca9699be2afd74460d.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/main.4cca9699be2afd74460d.js
new file mode 100644 (file)
index 0000000..8292130
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t},t}()},"+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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n 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"))},"+tJ4":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(t){return function(e){for(var n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.closed||e.complete()}}},"+umK":function(t,e,n){"use strict";function a(){}n.d(e,"a",function(){return a})},"//9w":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".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\u017ees",past:"ma\u014bit %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\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},"/21U":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("isby");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},"/6aS":function(t,e){t.exports='<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\u0144</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</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\u0105dca modu\u0142\xf3w</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Powiadomienia</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\u0119p 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\xf3w NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plik\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dost\u0119p 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\u017cytkownicy</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>Trwa pobieranie danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> dla \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>"/>. Czekaj...\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>Wy\u015bwietlanie wcze\u015bniej buforowanych danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \ndla \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>Nie mo\u017cna za\u0142adowa\u0107 danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> dla\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>"/>. Sprawd\u017a prosz\u0119 zdrowie klastra. \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="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz j\u0119zyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa \u0142adowanie 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>Sprawd\u017a prosz\u0119 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>jak\nskonfigurowa\u0107 i uruchomi\u0107 funkcje monitoringu.\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>Pulpit Grafany nie istnieje. Sprawd\u017a prosz\u0119 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\ndodaj pulpity do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wyb\xf3r 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>B\u0142\u0105d wczytywania danych.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</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\xf3w z domy\u015blnych warto\u015bci przewa\u017cnie nie jest potrzebna.</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\u017a</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="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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>B\u0142\u0119dna sk\u0142adnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN ma nast\u0119puj\u0105c\u0105 notacj\u0119 \u201eiqn. $ Rok-$ miesi\u0105c. $ odwr\xf3conyAdres: $ zdefiniowanaNazwa\u201d</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\u0142ad: 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\u0119cej 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\u0142 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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Wymagane s\u0105 przynajmniej \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bramy.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikowa\u0142 ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Wymagany jest przynajmniej 1 obraz.</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="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\u0107 unikalny.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>U\u017cytkownik</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\u017cytkownik\xf3w musz\u0105 mie\u0107 d\u0142ugo\u015b\u0107 od 8 do 64 znak\xf3w i mog\u0105 zawiera\u0107 jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Has\u0142o</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wsp\xf3lny u\u017cytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wsp\xf3lne has\u0142o</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\u017c\u0105 do grupy. Obrazy b\u0119d\u0105 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grup\u0119</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierd\u017a</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>Jeste\u015b pewny, \u017ce chcesz  \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\xa0 wybrany \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</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\u017cytkownik\xf3w musz\u0105 mie\u0107 d\u0142ugo\u015b\u0107 od 8 do 64 znak\xf3w i \nmog\u0105 zawiera\u0107 jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak skonfigurowa\u0107 i uruchomi\u0107 zarz\u0105dzanie funkcjonalno\u015bciami obiektami docelowymi iSCSI\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dost\u0119pne 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\u0119pne </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie s\u0105 dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u0141adowanie...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dost\u0119pnych 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="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>U\u017cyj 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\xf3ry przechowuje dane obiektowe z RBD</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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwi\u0119kszy\u0107 rozmiar.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pask\xf3w</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostk\u0119 pask\xf3w -- </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\u017c licznik pask\xf3w 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\xf3w jest wi\u0119ksza ni\u017c rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pask\xf3w </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\u017c jednostka pask\xf3w 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\xf3w musi by\u0107 wi\u0119kszy od 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Ca\u0142kowita wydajno\u015b\u0107</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="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\u0142ugi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domy\u015blna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domy\u015blny demon</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Us\u0142ugi</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Warto\u015bci</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>Podana warto\u015b\u0107 jest za wysoka. Nie mo\u017ce by\u0107 wi\u0119ksza ni\u017c \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>Podana warto\u015b\u0107 jest za ma\u0142a. Nie mo\u017ce by\u0107 mniejsza od  \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista host\xf3w</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wej\u015b\u0107</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\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u0141adowanie 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\u017cna za\u0142adowa\u0107 konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj modu\u0142 zarz\u0105dzania</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\u015b\u0107 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\u015b\u0107 musi by\u0107 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>Podana warto\u015b\u0107 jest za wysoka! Musi by\u0107 mniejsza b\u0105d\u017a r\xf3wna  \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>Podana warto\u015b\u0107 jest za niska! Musi by\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna  \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\u015b\u0107 musi by\u0107 liczb\u0105</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\u015b\u0107 musi by\u0107 liczb\u0105 albo dziesi\u0119tn\u0105.</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w ca\u0142ym klastrze</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\u015bci 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>Podana warto\u015b\u0107 jest za wysoka. Nie mo\u017ce by\u0107 wi\u0119ksza ni\u017c  \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>Podana warto\u015b\u0107 jest za ma\u0142a! Nie mo\u017ce by\u0107 mniejsza od \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ponowne wa\u017cenie OSD</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\u015b\u0107 powinna by\u0107 pomi\u0119dzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne wa\u017cenie</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>Szoruj\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> OSD-ki\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\u0142\u0119boko\u015b\u0107} }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Zamierzasz zaaplikowa\u0107  \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> szorowanie na OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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\u0142\u0119boko\u015b\u0107} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-k\xf3w </target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Je\u015bli kontynuujesz \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> b\u0119dzie zaznaczony\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>"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Nie mo\u017cna bezpiecznie zniszczy\u0107 tego OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Je\u015bli kontyuujesz \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>  b\u0119dzie \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>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczeg\xf3\u0142y</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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak nale\u017cy skonfigurowa\u0107 i uruchomi\u0107 zarz\u0105dzanie funkcjami NFS Ganeshy \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\u017cdy klient ma dost\u0119p</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\u0105zkowe 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\u0107 jedn\u0105 albo wi\u0119cej ,rozdzielonych przecinkiem, warto\u015bci </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przyk\u0142ad: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dost\u0119pu</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\xf3w </target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS eksportuje  \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dost\u0119pnego 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\u0119\u0107 Podr\u0119czna</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pami\u0119\u0107 podr\u0119czn\u0105 -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>U\u017cytkownik dost\u0119pu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dost\u0119pnych u\u017cytkownik\xf3w -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz u\u017cytkownika dost\u0119pu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS U\u017cytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dost\u0119pnych klient\xf3w -- </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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpiecze\u0144stwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykiet\u0119 bezpiecze\u0144stwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>\u015acie\u017cka 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>\u015acie\u017cka powinna zaczyna\u0107 si\u0119 z \'/\' i nast\u0119pne mo\u017ce by\u0107 s\u0142owo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog b\u0119dzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u015acie\u017cka</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>\u015acie\u017ck\u0105 mo\u017ce by\u0107 tylko \'/\' albo s\u0142owo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro b\u0119dzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protok\xf3\u0142 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>Alternatywny dost\u0119p do \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>"/>\xa0montuje ( nie musi mie\u0107 poprzedzaj\u0105cego \'/\' )\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\u017ce nie montowa\u0107 podkatalog\xf3w ( np. je\u015bli Tag = foo, klient mo\u017ce nie montowa\u0107 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\u017cywaj\u0105c r\xf3\u017cnych opcji Tagu, ta sama \u015acie\u017cka mo\u017ce by\u0107 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>Pozycja, kt\xf3r\u0105 \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>"/> eksport zajmuje \nw \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>"/> (musi by\u0107 unikatowa). \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\u017cywaj\u0105c r\xf3\u017cnych opcji Pseudo, ta sama \u015acie\u017cka mo\u017ce by\u0107 wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dost\u0119pnych typ\xf3w dost\u0119pu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dost\u0119pu --</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\u017cytkownika ma by\u0107 przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protok\xf3\u0142 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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa mo\u017ce sk\u0142ada\u0107 si\u0119 z alfanumerycznych znak\xf3w, kresek i podkre\u015ble\u0144.</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\u017c u\u017cywana.</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\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawa\u0142ka (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\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwa\u0142o\u015bci (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalno\u015b\u0107  (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\u015b\u0107 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\u0144 Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urz\u0105dzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>kt\xf3rykolwiek</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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</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="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\u017c u\u017cyta.</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="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\xf3j klaster nie obs\u0142uguje tylu PG. Skalkuluj prosz\u0119 potrzebn\u0105 ilo\u015b\u0107 PG.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Mo\u017cesz zwi\u0119kszy\u0107 liczb\u0119 PG na utrworzonym pulu. \nTeraz pul ma \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Obecne ustawienia PG zosta\u0142y policzone dla Ciebie, \npowiniene\u015b upewni\u0107 si\u0119 czy te warto\u015bci Ci odpowiadaj\u0105 przed zatwierdzeniem.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbi\xf3r zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasad\u0119 Crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Zasada nie mo\u017ce by\u0107 u\u017cyta w obecnym klastrze, gdy\u017c ma\nzbyt ma\u0142o OSD-k\xf3w, \u017ceby spe\u0142ni\u0107 minimum OSD-k\xf3w wymaganych przez t\u0119 zasad\u0119.</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Sprecyzowany rozmiar jest poza zakresem. Warto\u015b\u0107 od \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> do \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> jest poprawna.\n        </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="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="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\u015b\u0107 powinna by\u0107 wi\u0119ksza ni\u017c 0</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\u015b\u0107 powinna by\u0107 wi\u0119ksza ni\u017c 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\u015b\u0107 powinna by\u0107 pomi\u0119dzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Nie mo\u017cna stworzy\u0107 pula RBD z \'/\' w nazwie.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Prosz\u0119 zmieni\u0107 nazw\u0119 albo usun\u0105\u0107 \'rbd\' z listy zastosowa\u0144.</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="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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak skonfigurowa\u0107 i i uruchomi\u0107 zarz\u0105dzanie funkcjami Dost\u0119pu obiektowego\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u0141adowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Nie mo\u017cna za\u0142adowa\u0107 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\u015b\u0107 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\u017c jest u\u017cyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>W\u0142a\u015bciciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz u\u017cytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demon\xf3w</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa u\u017cytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazw\u0119 u\u017cytkownika -- </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\u0119pu</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="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-u\u017cytkownik</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\u017cytkownika jest ju\u017c u\u017cyte.</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\u0142ny</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>\u0141adowanie danych u\u017cytkownika...</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\u017cna za\u0142adowa\u0107 danych u\u017cytkownika.</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\u017cytkownika jest ju\u017c u\u017cyte.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pe\u0142ne imi\u0119 </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="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\u017c u\u017cyty.</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="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana warto\u015b\u0107 musi by\u0107 &gt;= 0</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-u\u017cytkownicy</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-u\u017cytkownik\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usu\u0144</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="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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Poka\u017c</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolno\u015bci</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolno\u015bci. </target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit u\u017cytkownika</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="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\xf3w</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="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\u017cytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Has\u0142o 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="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="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, u\u017cytkownik 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>Powr\xf3t do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Strony Logowania\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Zostaniesz wylogowany z Dostastcy To\u017csamo\u015bci , kiedy spr\xf3bujesz si\u0119 zalgowa\u0107. \n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierd\u017a has\u0142o</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzaj\u0105ce has\u0142o nie pokrywa si\u0119 z has\u0142em.</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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</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\u0105\u0107 uprawnienia \u201eodczytu / aktualizacji u\u017cytkownika\u201d od w\u0142asnego u\u017cytkownika.</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\u015bli kontynuujesz, nie b\u0119dziesz m\xf3g\u0142 dodawa\u0107 albo usuwa\u0107 role od u\u017cytkownik\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jeste\u015b pewny, \u017ce chcesz kontynuowa\u0107? </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\u0119pu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Przepraszam, nie mo\u017cemy znale\u017a\u0107 tego czego szukasz.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Usu\u0144 wszystko</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Ostatnie powiadomienia</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Brak zada\u0144 w tle.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Zagadnienia w tle </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\u0105dzanie u\u017cytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany u\u017cytkownik</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>Zalogowany 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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajno\u015bci</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczeg\xf3\u0142y wydajno\u015bci</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\u0142\xf3wna 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="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\xf3w</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, wybierz, 0 {Nie} 1{Tak} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajno\u015bci nie s\u0105 dost\u0119pne</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</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="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\u0144 warto\u015b\u0107 konfiguracji lokalnej. Warto\u015b\u0107 konfiguracji rodzica b\u0119dzie odziedziczona i zostanie u\u017cyta 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\u015b\u0107 wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-k\xf3w)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedost\u0119pne 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="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajno\u015bci</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 niedost\u0119pny: \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="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne warto\u015bci </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>\u0179r\xf3d\u0142o </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\u017ce by\u0107 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\u015bci enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz tak\u017ce </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\u0105dzanie 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\u015b\u0107 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\u015b\u0107 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\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemno\u015b\u0107 rz\u0119du</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="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\u015b\u0107</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>"/> zobacz\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>logi\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> , \u017ceby mie\u0107 wi\u0119cej szczeg\xf3\u0142\xf3w. \n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenie\u015b obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u017beby przenie\u015b\u0107 \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> do kosza, kliknij \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Przenie\u015b obraz\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Opcjonalnie, mo\u017cesz wybra\u0107 dat\u0119 wa\u017cno\u015bci.\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\u0142y format daty. Prosz\u0119 u\u017cywa\u0107 "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\u017c wygas\u0142a. Prosz\u0119 wybra\u0107 przysz\u0142\u0105 dat\u0119 lub zostawi\u0107 pust\u0105.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenie\u015b obraz</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegl\u0105d</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="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>Dost\u0119pne tylko dla obraz\xf3w RBD z  \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/> szybk\u0105 r\xf3\u017cnic\u0105 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> w\u0142\u0105czone\n        </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="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\u0119pny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Ca\u0142kowite 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\xf3wienie</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="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zast\u0119puj\u0119 warto\u015b\u0107 globaln\u0105.</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\u015b\u0107. Dla tego obrazu nie ustawiono \u017cadnej warto\u015bci dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> migawka RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, wybierz, prawda {Zmie\u0144 nazwe} inaczej{Utw\xf3rz} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Migawka\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>ZABEZPIECZONE</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="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz si\u0119 wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usu\u0144 \u015amieci</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Aby usun\u0105\u0107, wybierz jeden albo wszystkie obrazy i kliknij </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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywr\xf3\u0107 obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywr\xf3\u0107</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\u0142y 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>Ten obraz jest chroniony do \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\xa0\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="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\xa0\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\xa0\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>Aby edytowa\u0107 tryb lustrzanydla pula\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>"/>,  wybierz tryb z listy i kliknij\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Zaktualizuj\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\u0107 usuni\u0119ty  przed wy\u0142\u0105czeniem 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 {...}}"/> sparowany pul lustrzany\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> pul \nlustra sparowanych atrybut\xf3w dla pula \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>"/> i kliknij \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Zatwierd\u017a\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\u0107 zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczeg\xf3\u0142y poziom\xf3w pami\u0119ci podr\u0119cznej</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klienci: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\u0119pnych 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\u0119pnych obraz\xf3w. </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\u0119pnych obraz\xf3w. Prosz\u0119 si\u0119 upewni\u0107, \u017ce 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\u0119pnych inicjator\xf3w iSCSI. Prosz\u0119 upewni\u0107 si\u0119, \u017ce dodajesz inicjator iSCSI do obiektu docelowego.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajt\xf3w </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajt\xf3w</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wy\u0142\u0105czony</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\u0144 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Warto\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>G\u0142\u0119bokie sp\u0142aszczenie</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\u0142\u0105czna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiekt\xf3w (wymaga wy\u0142\u0105cznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wy\u0142\u0105cznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Szybka r\xf3\u017cnica (wymaga mapy obiekt\xf3w)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Sp\u0142aszcz</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenie\u015b do kosza</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stw\xf3rz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmie\u0144 nazw\u0119</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="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</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="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywr\xf3\u0107</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usuni\u0119ty 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="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\u015b\u0107</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\u0119z\u0142y</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>U\u017cycie</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="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Warto\u015b\u0107 mo\u017ce by\u0107 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\u0105 tej warto\u015bci z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna by\u0107 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\u0142a 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\u0142ywa 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>Zaktualizowana opcja konfiguracji \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\u0142uga</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna warto\u015b\u0107</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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Zaktualizowane opcje dla modu\u0142u &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>W\u0142\u0105czy\u0107</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wy\u0142\u0105czy\u0107</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne \u0142\u0105czenie, prosz\u0119 czeka\u0107</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="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\xf3re zosta\u0142y oznaczone jako poza, nie b\u0119d\u0105 oznaczone ponownie jako w gdy zostan\u0105 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\u0119d\u0105 automatycznie oznaczone jako poza po konfiguracji interwa\u0142u</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powsta\u0142y </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\u0105 startowa\u0107</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upad\u0142y</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\u017ce monitory nie oznacz\u0105 OSD jako upad\u0142ego. </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\u0142\u0105czone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma g\u0142\u0119bokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>G\u0142\u0119bokie szorowanie jest wy\u0142\u0105czone</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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywr\xf3cono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywr\xf3cenie 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\u017cyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usu\u0144 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\u0142y snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usuni\u0119te</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\u0119cie 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\xf3w 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\u0142ugo\u015b\u0107 log\xf3w PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-k\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj g\u0142\u0119boko</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upad\u0142y</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upad\u0142y</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="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\u015b\u0107</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</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="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="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\xf3w</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Zapis bajt\xf3w</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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Zaznacz 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>Zaznacz  \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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\u015b\u0107 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\u015bpienie wyzdrowienia</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Zaktualizowano pr\u0119dko\u015b\u0107 wyzdrowienia OSD priorytet &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> zosta\u0142 zainicjalizowany w nast\u0119puj\u0105cym OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\u015b\u0107</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>U\u017cyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dost\u0119pny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czy\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Dzia\u0142aj\u0105cy</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrze\u017cenie </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="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\xf3w plik\xf3w</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\u0119pny</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\u0142uga 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\u017cytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plik\xf3w CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczy\u0142o z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczy\u0142o 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\u017cytkownika ma by\u0107 przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dost\u0119pnym demon\xf3w</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Eksport </target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pami\u0119ci podr\u0119cznej</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\xf3wnania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajt\xf3w obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiekt\xf3w docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano \u017cadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osi\u0105gni\u0119to limit zastosowa\u0144 </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\u017ce mie\u0107 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\u0142ugo\u015b\u0107 wynosi 128 znak\xf3w</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</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\xf3r zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajt\xf3w </target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Zaktualizowano wiadro dost\u0119pu obiektowego  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Stworzono wiadro dost\u0119pu obiektowego &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</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>Zaktualizowano u\u017cytkownika dost\u0119pu obiektowego &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Stworzono u\u017cytkownika dost\u0119pu obiektowego&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>u\u017cytkownik</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>u\u017cytkownicy</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Utw\xf3rz rol\u0119  \'\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>Zaktualizuj rol\u0119 \'\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>Usu\u0144 rol\u0119  \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Stw\xf3rz u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj u\u017cytkownika</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\u0142e\u015b automatycznie wylogowany, poniewa\u017c zosta\u0142y 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>Zaktualizowano u\u017cytkownika  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Usuni\u0119to u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Nie uda\u0142o si\u0119 usun\u0105\u0107 u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Jeste\u015b obecnie zalogowany jako&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\u017cdy obiekt jest podzielony na cz\u0119\u015bci fragment\xf3w danych, ka\u017cdy 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\u017cdego obiektu i przechowuj je na r\xf3\u017cnych OSD.\n Liczba fragment\xf3w koduj\u0105cych to r\xf3wnie\u017c liczba OSD, kt\xf3re mog\u0105 zosta\u0107 wy\u0142\u0105czone 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\u0105 i elastyczn\u0105 wtyczk\u0105,\n jest to r\xf3wnie\u017c domy\u015blne 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\u0105 technik\u0105 jest reed_sol_van: wystarczy ustawi\u0107 k\n oraz m. Technika cauchy_good mo\u017ce by\u0107 szybsza, ale musisz wybra\u0107 rozmiar pakietu\n ostro\u017cnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion s\u0105 odpowiednikami RAID6\n w tym sensie, \u017ce mog\u0105 by\u0107 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\u0119dzie wykonywane na pakietach o rozmiarze bajt\xf3w naraz.\n Wyb\xf3r 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\u0105 jerasure, gdy obiekt zakodowany przy u\u017cyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozosta\u0142ych.\n Na przyk\u0142ad, je\u015bli konfiguracja skryptu ma warto\u015b\u0107 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\u015bci lokalnej, aby m\xf3c je odzyska\u0107\n mniej OSD. Na przyk\u0142ad, je\u015bli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzysto\u015bci na ka\u017cde cztery OSD. Gdy jeden OSD zostanie utracone, mo\u017ce to by\u0107\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\u015bci. Na przyk\u0142ad,\n dla k = 4 i m = 2, gdy lokalno\u015b\u0107 = 3 tworzone s\u0105 dwie grupy po trzy. Ka\u017cdy zestaw mo\u017ce\n odzyska\u0107 bez czytania kawa\u0142k\xf3w 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\xf3rym zdefiniowano ka\u017cdy zestaw porcji\n przez l zostan\u0105 zapisane. Na przyk\u0142ad, je\u015bli jest ustawiony na rack, ka\u017cda grupa l porcji b\u0119dzie\n umieszczona w innym raku. S\u0142u\u017cy do utworzenia kroku regu\u0142y CRUSH, takiego jak krok wyboru\n racka. Je\u015bli 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\u0119 ISA. Dzia\u0142a 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\u0119pna w dw\xf3ch formach Reed Solomon.\n Je\u015bli ustawiono reed_sol_van, jest to Vandermonde, je\u015bli 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\u0107 dane bardziej efektywnie ni\u017c 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\u0142k\xf3w parzysto\u015bci, z kt\xf3rych ka\u017cdy zawiera ka\u017cd\u0105 porcj\u0119 danych w swoim zakresie oblicze\u0144. Liczba jest u\u017cywana jako estymator trwa\u0142o\u015bci. Na przyk\u0142ad, je\u015bli c = 2,\n 2 OSD mo\u017cna wy\u0142\u0105czy\u0107 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\u017cyte do pierwszego kroku regu\u0142y CRUSH.\nNa przyk\u0142ad krok jest domy\u015blny.</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\u0119, \u017ce \u017cadne dwie porcje nie znajduj\u0105 si\u0119 w wiadrze z t\u0105 sam\u0105 awari\u0105\n domeny. Na przyk\u0142ad, je\u015bli domena awarii jest hostem, nie zostan\u0105 na niej zapisane dwie porcje\n hosta. S\u0142u\u017cy do utworzenia kroku regu\u0142y 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\u0105dze\u0144 okre\u015blonej klasy\n (np. ssd lub hdd), u\u017cywaj\u0105c nazw klas urz\u0105dze\u0144 zgniataj\u0105cych 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\u0119 katalogu, z kt\xf3rego \u0142adowana 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\u0105 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\u0105 operacje, kt\xf3re nie modyfikuj\u0105 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\u0105 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\u0105ce atrybuty albo katalogi s\u0105 zakazane\xa0</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dost\u0119pu w og\xf3le</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="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\u015blnie)</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\u0144 temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzie\u0144</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzie\u0144 </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\u0105ca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesi\u0105c</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\u0105cu</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\u0119cy</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\u017c\u0105cego 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\u017c\u0105cego 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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano \u017cadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycj\u0119, \u017ceby wybra\u0107 ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osi\u0105gni\u0119to limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tag\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznak\u0119</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dost\u0119pnych pozycji.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jako\u015b\u0107 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\u017c\u0105dany limit IO bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji IO na sekund\u0119.</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\u017c\u0105dany limit odczytu bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji odczytu na sekund\u0119.</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\u017c\u0105dany limit zapisu bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji zapisu na sekund\u0119.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wi\u0105zka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u017b\u0105dana granica serii IO bajt\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wi\u0105zka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u017b\u0105dana 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\u0105zki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u017b\u0105dana granica serii odczytanych bajt\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wi\u0105zki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> \u017b\u0105dana 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\u0105zki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u017b\u0105dana granica serii bajt\xf3w zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wi\u0105zki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u017b\u0105dana 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>Nie powiod\u0142o si\u0119  \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\xf3rz</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usu\u0144</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usuni\u0119ty</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>urz\u0105dzenie blokowe Rados\xa0\'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\xa0\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>migawka RBD  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\xa0\n        </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>tryb lustrzany dla pula \'\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>Lustrzane parowanie dla pula \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nazwa jest ju\u017c u\u017cyta przez  \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>Nazwa jest ju\u017c u\u017cywana przez \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>Nazwa jest ju\u017c u\u017cywana przez  \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/>  zawiera migawk\u0119.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</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>Migawka \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\xa0 musi by\u0107 zabezpieczona.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Sp\u0142aszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Sp\u0142aszcz</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Sp\u0142aszczony</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>Nazwa ju\u017c jest u\u017cywana przez  \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>Nie mo\u017cna zdj\u0105\u0107 zabezpieczenia \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> , poniewa\u017c zawiera pokrewne 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>Nie mo\u017cna usun\u0105\u0107 \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, poniewa\u017c jest zabezpieczony.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</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\u015b</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>Obraz \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'  przenie\u015b do kosza\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\xf3\u0107 </target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywr\xf3cony</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}}"/>\' w \'\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>Nazwa obrazu \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' jest ju\u017c u\u017cywana. \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}}"/>\'\xa0\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszcza\u0107</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczy\u015b\u0107</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="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>Obraz 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>Nie mo\u017cna wy\u0142\u0105czy\u0107 lustrzenia poniewa\u017c zawiera parowanie.</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>pul \'\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>skasuj profil kodu \'\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>docelowy \'\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>'},"/TVo":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("urB8"),n("0M9P"));n("xZld"),e.NodeDraggableDirective=function(){function t(t,e,n){this.element=t,this.nodeDraggableService=e,this.renderer=n,this.disposersForDragListeners=[],this.nodeNativeElement=t.nativeElement}return t.prototype.ngOnInit=function(){this.tree.isStatic()||(this.renderer.setAttribute(this.nodeNativeElement,"draggable","true"),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragenter",this.handleDragEnter.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragover",this.handleDragOver.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragstart",this.handleDragStart.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragleave",this.handleDragLeave.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"drop",this.handleDrop.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragend",this.handleDragEnd.bind(this))))},t.prototype.ngOnDestroy=function(){this.disposersForDragListeners.forEach(function(t){return t()})},t.prototype.handleDragStart=function(e){e.stopPropagation&&e.stopPropagation(),this.nodeDraggableService.captureNode(new r.CapturedNode(this.nodeDraggable,this.tree)),e.dataTransfer.setData("text",t.DATA_TRANSFER_STUB_DATA),e.dataTransfer.effectAllowed="move"},t.prototype.handleDragOver=function(t){t.preventDefault(),t.dataTransfer.dropEffect="move"},t.prototype.handleDragEnter=function(t){t.preventDefault(),this.containsElementAt(t)&&this.addClass("over-drop-target")},t.prototype.handleDragLeave=function(t){this.containsElementAt(t)||this.removeClass("over-drop-target")},t.prototype.handleDrop=function(t){return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),this.removeClass("over-drop-target"),!!this.isDropPossible(t)&&(this.nodeDraggableService.getCapturedNode()?this.notifyThatNodeWasDropped():void 0)},t.prototype.isDropPossible=function(t){var e=this.nodeDraggableService.getCapturedNode();return e&&e.canBeDroppedAt(this.nodeDraggable)&&this.containsElementAt(t)},t.prototype.handleDragEnd=function(t){this.removeClass("over-drop-target"),this.nodeDraggableService.releaseCapturedNode()},t.prototype.containsElementAt=function(t){var e=t.x,n=t.y;return this.nodeNativeElement.contains(document.elementFromPoint(void 0===e?t.clientX:e,void 0===n?t.clientY:n))},t.prototype.addClass=function(t){this.nodeNativeElement.classList.add(t)},t.prototype.removeClass=function(t){this.nodeNativeElement.classList.remove(t)},t.prototype.notifyThatNodeWasDropped=function(){this.nodeDraggableService.fireNodeDragged(this.nodeDraggableService.getCapturedNode(),this.nodeDraggable)},t.DATA_TRANSFER_STUB_DATA="some browsers enable drag-n-drop only when dataTransfer has data",t.decorators=[{type:a.Directive,args:[{selector:"[nodeDraggable]"}]}],t.propDecorators={nodeDraggable:[{type:a.Input}],tree:[{type:a.Input}]},t}()},"/WYv":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})},"/X5v":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".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~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},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}})}()},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("gIcY"),r=n("QFaf"),i=(n("sb0X"),function(){function t(t){this.modalRef=t,this.actionDescription="delete"}return t.prototype.ngOnInit=function(){if(this.deletionForm=new r.a({confirmation:new a.i(!1,[a.A.requiredTrue])}),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")},t.prototype.callSubmitAction=function(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()},t.prototype.hideModal=function(){this.modalRef.hide()},t.prototype.stopLoadingSpinner=function(){this.deletionForm.setErrors({cdSubmitButton:!0})},t}())},"0/uQ":function(t,e,n){"use strict";var a=n("6blF"),r=n("/WYv"),i=n("2ePl"),o=n("xTla"),s=n("En8+"),u=n("IUTb"),c=n("pugT"),l=n("S5XQ"),d=n("u67D"),p=n("JcRv"),f=n("Fxb1");function h(t,e){if(!e)return t instanceof a.a?t:new a.a(Object(f.a)(t));if(null!=t){if(function(t){return t&&"function"==typeof t[o.a]}(t))return function(t,e){return new a.a(e?function(n){var a=new c.a;return a.add(e.schedule(function(){var r=t[o.a]();a.add(r.subscribe({next:function(t){a.add(e.schedule(function(){return n.next(t)}))},error:function(t){a.add(e.schedule(function(){return n.error(t)}))},complete:function(){a.add(e.schedule(function(){return n.complete()}))}}))})),a}:Object(p.a)(t))}(t,e);if(Object(r.a)(t))return function(t,e){return new a.a(e?function(n){var a=new c.a;return a.add(e.schedule(function(){return t.then(function(t){a.add(e.schedule(function(){n.next(t),a.add(e.schedule(function(){return n.complete()}))}))},function(t){a.add(e.schedule(function(){return n.error(t)}))})})),a}:Object(l.a)(t))}(t,e);if(Object(i.a)(t))return Object(u.a)(t,e);if(function(t){return t&&"function"==typeof t[s.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(e?function(n){var a,r=new c.a;return r.add(function(){a&&"function"==typeof a.return&&a.return()}),r.add(e.schedule(function(){a=t[s.a](),r.add(e.schedule(function(){if(!n.closed){var t,e;try{var r=a.next();t=r.value,e=r.done}catch(i){return void n.error(i)}e?n.complete():(n.next(t),this.schedule())}}))})),r}:Object(d.a)(t))}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}n.d(e,"a",function(){return h})},"0M9P":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CapturedNode=function(){function t(t,e){this.anElement=t,this.aTree=e}return t.prototype.canBeDroppedAt=function(t){return!this.sameAs(t)&&!this.contains(t)},t.prototype.contains=function(t){return this.element.nativeElement.contains(t.nativeElement)},t.prototype.sameAs=function(t){return this.element===t},Object.defineProperty(t.prototype,"element",{get:function(){return this.anElement},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tree",{get:function(){return this.aTree},enumerable:!0,configurable:!0}),t}()},"0MID":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("qwkt"),s=n("5tze");n("czA5"),e.DataTableHeaderCellComponent=function(){function t(t){this.cd=t,this.sort=new i.EventEmitter,this.select=new i.EventEmitter,this.columnContextmenu=new i.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}}return Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){return this._allRowsSelected},set:function(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}var i=this.sortDir;return i&&(t+=" sort-active sort-"+i),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return void 0===this.column.headerTemplate?this.column.name:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxable",{get:function(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===o.SelectionType.checkbox},enumerable:!0,configurable:!0}),t.prototype.onContextmenu=function(t){this.columnContextmenu.emit({event:t,column:this.column})},t.prototype.calcSortDir=function(t){var e=this;if(t&&this.column){var n=t.find(function(t){return t.prop===e.column.prop});if(n)return n.dir}},t.prototype.onSort=function(){if(this.column.sortable){var t=s.nextSortDir(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}},t.prototype.calcSortClass=function(t){return t===o.SortDirection.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===o.SortDirection.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"},a([i.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortAscendingIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortDescendingIcon",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerContext",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"allRowsSelected",null),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"headerHeight",void 0),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"sort",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("attr.title"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"name",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-header-cell",template:'\n    <div class="datatable-header-cell-template-wrap">\n      <ng-template\n        *ngIf="isTarget"\n        [ngTemplateOutlet]="targetMarkerTemplate"\n        [ngTemplateOutletContext]="targetMarkerContext">\n      </ng-template>\n      <label\n        *ngIf="isCheckboxable"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="allRowsSelected"\n          (change)="select.emit(!allRowsSelected)"\n        />\n      </label>\n      <span\n        *ngIf="!column.headerTemplate"\n        class="datatable-header-cell-wrapper">\n        <span\n          class="datatable-header-cell-label draggable"\n          (click)="onSort()"\n          [innerHTML]="name">\n        </span>\n      </span>\n      <ng-template\n        *ngIf="column.headerTemplate"\n        [ngTemplateOutlet]="column.headerTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n      <span\n        (click)="onSort()"\n        [class]="sortClass">\n      </span>\n    </div>\n  ',host:{class:"datatable-header-cell"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"0alx":function(t,e,n){"use strict";var a=n("VKeD");e.isIterable=function(t){return t&&"function"==typeof t[a.iterator]}},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},n={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};t.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".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:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(t){return t.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===e&&t>=4||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===e&&t<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":t<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":t<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":t<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}})}(n("wd/R"))},"0tRk":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"})}()},"15JJ":function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("MGBS"),i=n("rPjj"),o=n("zotm"),s=n("67Y/"),u=n("0/uQ");function c(t,e){return"function"==typeof e?function(n){return n.pipe(c(function(n,a){return Object(u.a)(t(n,a)).pipe(Object(s.a)(function(t,r){return e(n,t,a,r)}))}))}:function(e){return e.lift(new l(t))}}var l=function(){function t(t){this.project=t}return t.prototype.call=function(t,e){return e.subscribe(new d(t,this.project))},t}(),d=function(t){function e(e,n){var a=t.call(this,e)||this;return a.project=n,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=this.innerSubscription;a&&a.unsubscribe();var r=new i.a(this,void 0,void 0);this.destination.add(r),this.innerSubscription=Object(o.a)(this,t,e,n,r)},e.prototype._complete=function(){var e=this.innerSubscription;e&&!e.closed||t.prototype._complete.call(this),this.unsubscribe()},e.prototype._unsubscribe=function(){this.innerSubscription=null},e.prototype.notifyComplete=function(e){this.destination.remove(e),this.innerSubscription=null,this.isStopped&&t.prototype._complete.call(this)},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e}(r.a)},"1HVU":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("rdkg"),r=n("CVuo"),i="undefined"!=typeof window?a.getVendorPrefixedName("transform"):void 0,o="undefined"!=typeof window?a.getVendorPrefixedName("backfaceVisibility"):void 0,s="undefined"!=typeof window?!!a.getVendorPrefixedName("transform"):void 0,u="undefined"!=typeof window?!!a.getVendorPrefixedName("perspective"):void 0,c="undefined"!=typeof window?window.navigator.userAgent:"Chrome",l=/Safari\//.test(c)&&!/Chrome\//.test(c);e.translateXY=function(t,e,n){void 0!==i&&s?!l&&u?(t[i]="translate3d("+e+"px, "+n+"px, 0)",t[o]="hidden"):t[r.camelCase(i)]="translate("+e+"px, "+n+"px)":(t.top=n+"px",t.left=e+"px")}},"1Ni5":function(t,e,n){"use strict";n.d(e,"b",function(){return l}),n.d(e,"a",function(){return d});var a=n("gIcY"),r=n("LvDl"),i=n("F/XL"),o=n("gI3B"),s=n("zQHH"),u=n("67Y/"),c=n("t9fZ");function l(t){return null==t||0===t.length}var d=function(){function t(){}return t.email=function(t){return l(t.value)?null:a.A.email(t)},t.ip=function(t){void 0===t&&(t=0);var 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.A.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))},t.number=function(t){return void 0===t&&(t=!0),a.A.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)},t.decimalNumber=function(t){return void 0===t&&(t=!0),a.A.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)},t.requiredIf=function(t,e){var n=!1;return function(a){return!n&&a.parent&&(Object.keys(t).forEach(function(t){a.parent.get(t).valueChanges.subscribe(function(){a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(function(e){return a.parent&&a.parent.get(e).value===t[e]})&&(r.isFunction(e)?e.call(e,a.value):l(a.value))?{required:!0}:null}},t.custom=function(t,e){var n=this;return function(a){var r,i=e.call(n,a.value);return i?((r={})[t]=i,r):null}},t.validateIf=function(t,e,n,r,i){var o=this;void 0===r&&(r=[]),void 0===i&&(i=[]),n=n.concat(r),t.setValidators(function(t){return e.call(o)?a.A.compose(n)(t):r.length>0?a.A.compose(r)(t):null}),i.forEach(function(e){e.valueChanges.subscribe(function(){t.updateValueAndValidity({emitEvent:!1})})})},t.match=function(t,e){return function(n){var a=n.get(t),i=n.get(e);if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){var o=i.errors;r.unset(o,"match"),i.setErrors(r.isEmpty(r.keys(o))?null:o)}return null}},t.unique=function(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=500),function(a){return a.pristine||l(a.value)?Object(i.a)(null):Object(o.a)(n).pipe(Object(s.a)(t.call(e,a.value)),Object(u.a)(function(t){return t?{notUnique:!0}:null}),Object(c.a)(1))}},t.uuid=function(t){void 0===t&&(t=!1);var 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 function(n){return n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}},t}()},"1PfE":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeEditableEventAction=function(t){return t[t.Cancel=0]="Cancel",t}(e.NodeEditableEventAction||{})},"1fDf":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("FFOo");function r(t){for(;t;){var e=t.destination;if(t.closed||t.isStopped)return!1;t=e&&e instanceof a.a?e:null}return!0}},"1rYy":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(t){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(t)},meridiem:function(t){return t<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":t<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":t<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-\u056b\u0576":t+"-\u0580\u0564";default:return t}},week:{dow:1,doy:7}})}()},"1xZ4":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_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\xe7_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\xe0 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\xed %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|\xe8|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"\xe8";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}()},"20UP":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t,this.settings={}}return t.prototype.ifSettingConfigured=function(t,e,n){var a=this,r=this.settings[t];void 0===r?this.http.get(t).subscribe(function(r){a.settings[t]=a.getSettingsValue(r),a.ifSettingConfigured(t,e,n)},function(e){401!==e.status&&(a.settings[t]="")}):""!==r?e(r):n&&n()},t.prototype.disableSetting=function(t){this.settings[t]=""},t.prototype.getSettingsValue=function(t){return t.value||t.instance||""},t.prototype.validateGrafanaDashboardUrl=function(t){return this.http.get("api/grafana/validation/"+t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},"25BL":function(t,e,n){"use strict";var a=n("CcnG"),r=n("M/6F"),i=n("NDi4"),o=n("Ip0R"),s=n("gIcY"),u=n("xtZt"),c=n("lqqz"),l=n("fhFe"),d=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275ted"](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 f(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](8,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](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["\u0275inlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["\u0275inlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["\u0275inlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["\u0275inlineInterpolate"](1,"",n.pagerNextIcon,""))})}var h=n("JxMD"),g=n("dgut"),m=n("Fgil"),b=n("ZYCi"),y=n("0MID"),v=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)},null)}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 S(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function O(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.headerTemplate)},null)}function k(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,T)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,O)),a["\u0275did"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](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 C=n("3MdB"),I=n("M9eX"),R=n("Cc8h"),N=n("ylLw"),D=n("ZYjt"),A=n("tFKq"),E=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function L(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["\u0275nov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["\u0275nov"](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},k,v)),a["\u0275did"](1,671744,[[1,4]],0,C.DraggableDirective,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["\u0275did"](2,4341760,null,0,I.ResizeableDirective,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["\u0275did"](3,147456,null,0,R.LongPressDirective,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["\u0275did"](4,49152,null,0,y.DataTableHeaderCellComponent,[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["\u0275nov"](e,2).resizeEnabled,a["\u0275nov"](e,3).press,a["\u0275nov"](e,3).isLongPress,a["\u0275nov"](e,4).headerHeight,a["\u0275nov"](e,4).columnCssClasses,a["\u0275nov"](e,4).name,a["\u0275nov"](e,4).minWidth,a["\u0275nov"](e,4).maxWidth,a["\u0275nov"](e,4).width)})}function P(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,L)),a["\u0275did"](3,278528,null,0,o.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._styleByGroup[e.context.$implicit.type]),t(e,3,0,e.context.$implicit.columns,n.columnTrackingFn)},function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)})}function M(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](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["\u0275did"](1,1196032,null,1,N.OrderableDirective,[a.KeyValueDiffers,D.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["\u0275qud"](603979776,1,{draggables:1}),(t()(),a["\u0275and"](16777216,null,null,1,null,P)),a["\u0275did"](4,278528,null,0,o.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 q=n("Ahxa"),j=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function z(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,F)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["\u0275and"](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 G(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "," / "]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)})}function Y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,G)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](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 H(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},f,d)),a["\u0275did"](1,49152,null,0,l.DataTablePagerComponent,[],{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 V(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"selected-count":0}),(t()(),a["\u0275and"](16777216,null,null,1,null,z)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Y)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,H)),a["\u0275did"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.selectedMessage);t(e,1,0,"datatable-footer-inner",a),t(e,4,0,n.footerTemplate),t(e,6,0,!n.footerTemplate),t(e,8,0,!n.footerTemplate)},function(t,e){t(e,0,0,e.component.footerHeight)})}var B=n("uKs4"),U=n("PNOi"),W=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function K(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var $=n("YVFZ"),Z=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function X(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 J(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function Q(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function et(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,J)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Q)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,tt)),a["\u0275did"](7,16384,null,0,o.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 nt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function at(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,nt)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](2,{cellContext:0}),(t()(),a["\u0275and"](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 rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,et)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,at)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 it(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function st(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,[[1,3],["cellTemplate",2]],null,1,null,ot)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)},null)}function ut(t){return a["\u0275vid"](2,[a["\u0275qud"](671088640,1,{cellTemplate:0}),(t()(),a["\u0275eld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,X)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,rt)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,it)),a["\u0275did"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,st)),a["\u0275did"](9,16384,null,0,o.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 ct=n("syrc"),lt=n("FO+L"),dt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["\u0275nov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["\u0275nov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r},ut,Z)),a["\u0275did"](1,442368,null,0,$.DataTableBodyCellComponent,[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["\u0275nov"](e,1).columnCssClasses,a["\u0275nov"](e,1).width,a["\u0275nov"](e,1).minWidth,a["\u0275nov"](e,1).maxWidth,a["\u0275nov"](e,1).height)})}function ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,pt)),a["\u0275did"](3,278528,null,0,o.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._groupStyles[e.context.$implicit.type]),t(e,3,0,e.context.$implicit.columns,n.columnTrackingFn)},function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))})}function ht(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,ft)),a["\u0275did"](1,278528,null,0,o.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 gt=n("rLYq"),mt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,ct.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,lt.ScrollbarHelper],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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,bt)),a["\u0275did"](1,16384,null,0,o.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 vt=n("Mfce"),xt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function _t(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,_t)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)},null)}function wt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Tt)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.getGroupHeaderStyle()),t(e,3,0,n.groupHeader&&n.groupHeader.template)},null)}function St(t){return a["\u0275vid"](0,[a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function kt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Ot)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)},null)}function Ct(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,kt)),a["\u0275did"](2,16384,null,0,o.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 It(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,wt)),a["\u0275did"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,St)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ct)),a["\u0275did"](5,16384,null,0,o.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 Rt=n("SfHT"),Nt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function Dt(t){return a["\u0275vid"](2,[a["\u0275ncd"](null,0)],null,null)}var At=n("7F1K"),Et=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function Lt(t){return a["\u0275vid"](2,[a["\u0275ncd"](null,0)],null,null)}var Pt=n("IPm6"),Mt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function qt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"datatable-progress",[],null,null,null,K,W)),a["\u0275did"](1,49152,null,0,U.ProgressBarComponent,[],null,null)],null,null)}function jt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,yt,mt)),a["\u0275did"](1,573440,null,0,gt.DataTableSummaryRowComponent,[],{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 Ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["\u0275nov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,ct.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,lt.ScrollbarHelper],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["\u0275nov"](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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function zt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["\u0275nov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,ct.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,lt.ScrollbarHelper],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["\u0275nov"](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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function Gt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,zt)),a["\u0275did"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)},null)}function Yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"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["\u0275nov"](t,2).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r},It,xt)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275did"](2,311296,null,0,vt.DataTableRowWrapperComponent,[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["\u0275and"](16777216,null,0,1,null,Ft)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["groupedRowsTemplate",2]],0,0,null,Gt))],function(t,e){var n=e.component;t(e,1,0,n.getRowsStyles(e.context.$implicit)),t(e,2,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,4,0,!n.groupedRows,a["\u0275nov"](e,5))},null)}function Ht(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,yt,mt)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275did"](2,573440,null,0,gt.DataTableSummaryRowComponent,[],{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.getBottomSummaryRowStyles()),t(e,2,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)},null)}function Vt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},Dt,Nt)),a["\u0275did"](1,245760,[[1,4]],0,Rt.ScrollerComponent,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["\u0275and"](16777216,null,0,1,null,jt)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Yt)),a["\u0275did"](5,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Ht)),a["\u0275did"](7,16384,null,0,o.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["\u0275nov"](e,1).scrollHeight,a["\u0275nov"](e,1).scrollWidth)})}function Bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 Ut(t){return a["\u0275vid"](2,[a["\u0275qud"](671088640,1,{scroller:0}),(t()(),a["\u0275eld"](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},Lt,Et)),a["\u0275did"](2,49152,[["selector",4]],0,At.DataTableSelectionComponent,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["\u0275and"](16777216,null,0,1,null,qt)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Vt)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Bt)),a["\u0275did"](8,16384,null,0,o.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 Wt=n("3/HP"),Kt=n("nhM1"),$t=n("BARL"),Zt=a["\u0275crt"]({encapsulation:2,styles:[[".ngx-datatable{display:block;overflow:hidden;-webkit-box-pack:center;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:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;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{-webkit-box-align:stretch;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:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:-webkit-box;display:flex}.ngx-datatable .datatable-footer{display:block;width:100%}.ngx-datatable .datatable-footer .datatable-footer-inner{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{-webkit-box-flex:1;flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{-webkit-box-flex:1;flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{-webkit-box-flex:1;flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{-webkit-box-flex:1;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 Xt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},M,E)),a["\u0275did"](1,49152,[[2,4]],0,A.DataTableHeaderComponent,[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["\u0275pid"](131072,o.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["\u0275unv"](e,1,13,a["\u0275nov"](e,2).transform(n._offsetX))])},function(t,e){t(e,0,0,a["\u0275nov"](e,1).headerHeight,a["\u0275nov"](e,1).headerWidth)})}function Jt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},V,j)),a["\u0275did"](1,49152,null,0,q.DataTableFooterComponent,[],{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 Qt(t){return a["\u0275vid"](2,[a["\u0275qud"](402653184,1,{bodyComponent:0}),a["\u0275qud"](671088640,2,{headerComponent:0}),(t()(),a["\u0275eld"](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["\u0275did"](3,212992,null,0,B.VisibilityDirective,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["\u0275and"](16777216,null,null,1,null,Xt)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](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},Ut,Mt)),a["\u0275did"](7,245760,[[1,4]],0,Pt.DataTableBodyComponent,[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["\u0275pid"](131072,o.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,Jt)),a["\u0275did"](10,16384,null,0,o.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["\u0275unv"](e,7,5,a["\u0275nov"](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["\u0275nov"](e,3).isVisible),t(e,6,0,a["\u0275nov"](e,7).bodyWidth,a["\u0275nov"](e,7).bodyHeight)})}var te=n("lUjN"),ee=n("vxfy");n("uIqm"),n.d(e,"a",function(){return ne}),n.d(e,"b",function(){return xe});var ne=a["\u0275crt"]({encapsulation:0,styles:[[".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%]{display:inline-block;float:right;width:auto;height:30px;line-height:28px;position:relative;border-left:1px solid rgba(0,0,0,.09);cursor:pointer;padding:0 8px;text-align:center}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:20px;padding-right:20px;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%]   th.oadatatablecheckbox[_ngcontent-%COMP%]{width:16px}.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%]   .oadatatableactions[_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%]   .clear-input[_ngcontent-%COMP%], .dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .clear-input[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{vertical-align:text-top}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}  .oadatatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .oadatatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .oadatatable .progress-linear .container{background-color:#afd9ee}  .oadatatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .oadatatable .progress-linear .container .bar:before{display:block;position:absolute;content:'';left:-200px;width:200px;height:100%;background-color:#2b99a8;-webkit-animation:3s linear infinite progress-loading;animation:3s linear infinite progress-loading}  .oadatatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f5f5f5),to(#ededed));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)}  .oadatatable .datatable-header .sort-asc,   .oadatatable .datatable-header .sort-desc{color:#2b99a8}  .oadatatable .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}  .oadatatable .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}  .oadatatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:' \\f0dc'}  .oadatatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:' \\f160'}  .oadatatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:' \\f161'}  .oadatatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .oadatatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .oadatatable .datatable-body .datatable-body-row .label{font-size:.9em}  .oadatatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;-webkit-transition-property:background;transition-property:background;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:linear;transition-timing-function:linear}  .oadatatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .oadatatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .oadatatable .datatable-body .datatable-body-row.active,   .oadatatable .datatable-body .datatable-body-row.active:hover{background-color:#d9edf7}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block}  .oadatatable .datatable-footer .page-count,   .oadatatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .oadatatable .datatable-footer .datatable-pager .pager{margin-right:5px!important}  .oadatatable .datatable-footer .datatable-pager .pager li:not(:first-child){margin-left:3px}  .oadatatable .datatable-footer .datatable-pager .pager li>a,   .oadatatable .datatable-footer .datatable-pager .pager li>span{border-radius:3px}  .oadatatable .datatable-footer .datatable-pager .pager .pages>a,   .oadatatable .datatable-footer .datatable-pager .pager .pages>span{display:inline-block;padding:5px 10px;margin-bottom:5px;border:none}  .oadatatable .datatable-footer .datatable-pager .pager .pages a:hover{background-color:#afd9ee}  .oadatatable .datatable-footer .datatable-pager .pager .pages.active>a{background-color:#d9edf7}@-webkit-keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}@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 ae(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Failed to load data."]))],null,null)}function re(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,3,"label",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"input",[["type","checkbox"]],[[8,"name",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["\u0275eld"](3,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](4,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.prop,!e.context.$implicit.isHidden),t(e,4,0,e.context.$implicit.name)})}function ie(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,re)),a["\u0275did"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.columns)},null)}function oe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"a",[],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a},null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-lg fa-refresh"]],[[2,"fa-spin",null]],null,null,null,null))],null,function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)})}function se(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,28,"div",[["class","dataTables_header clearfix form-inline"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","oadatatableactions"]],null,null,null,null,null)),a["\u0275ncd"](null,0),a["\u0275ncd"](null,1),(t()(),a["\u0275eld"](4,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["class","glyphicon glyphicon-search"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275nov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](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["\u0275did"](8,16384,null,0,s.e,[a.Renderer2,a.ElementRef,[2,s.b]],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.e]),a["\u0275did"](10,671744,null,0,s.u,[[8,null],[8,null],[8,null],[6,s.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,s.q,null,[s.u]),a["\u0275did"](12,16384,null,0,s.r,[[4,s.q]],null,null),(t()(),a["\u0275eld"](13,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.updateFilter(!0)&&a),a},null,null)),(t()(),a["\u0275eld"](15,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,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)),(t()(),a["\u0275eld"](18,0,null,null,8,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,16777216,null,null,7,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,u.f,u.f,[]),a["\u0275did"](21,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,c.a,u.a,u.f],null,null),(t()(),a["\u0275eld"](22,0,null,null,2,"a",[["class","btn btn-sm btn-default dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,23).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,23).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,23).onEsc()&&r),r},null,null)),a["\u0275did"](23,147456,null,0,u.g,[u.f,a.ElementRef,u.c],null,null),(t()(),a["\u0275eld"](24,0,null,null,0,"i",[["class","fa fa-lg fa-table"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ie)),a["\u0275did"](26,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,oe)),a["\u0275did"](28,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,10,0,n.search),t(e,21,0),t(e,28,0,n.fetchData.observers.length>0)},function(t,e){var n=e.component;t(e,7,0,a["\u0275nov"](e,12).ngClassUntouched,a["\u0275nov"](e,12).ngClassTouched,a["\u0275nov"](e,12).ngClassPristine,a["\u0275nov"](e,12).ngClassDirty,a["\u0275nov"](e,12).ngClassValid,a["\u0275nov"](e,12).ngClassInvalid,a["\u0275nov"](e,12).ngClassPending),t(e,17,0,n.userConfig.limit),t(e,19,0,a["\u0275nov"](e,21).dropup,a["\u0275nov"](e,21).isOpen,a["\u0275nov"](e,21).isOpen&&a["\u0275nov"](e,21).isBs4),t(e,22,0,!0,a["\u0275nov"](e,23).isDisabled,a["\u0275nov"](e,23).isOpen)})}function ue(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "])),(t()(),a["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["selected"])),(t()(),a["\u0275ted"](-1,null,[" / "]))],null,function(t,e){t(e,1,0,e.parent.context.selectedCount)})}function ce(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "])),(t()(),a["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["found"])),(t()(),a["\u0275ted"](-1,null,[" / "]))],null,function(t,e){t(e,1,0,e.parent.context.rowCount)})}function le(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ue)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ce)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,[" "," "])),(t()(),a["\u0275eld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["total"])),(t()(),a["\u0275eld"](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["\u0275nov"](t.parent,14).onFooterPage(n)&&r),r},f,d)),a["\u0275did"](10,49152,null,0,l.DataTablePagerComponent,[],{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 de(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.context.value)})}function pe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,h.b,h.a)),a["\u0275did"](1,638976,null,0,g.a,[m.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)},null)}function fe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](1,671744,null,0,b.o,[b.l,b.a,o.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["\u0275pad"](2,1),(t()(),a["\u0275ted"](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["\u0275nov"](e,1).target,a["\u0275nov"](e,1).href),t(e,3,0,e.context.value)})}function he(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","fa fa-check fa-fw"]],[[8,"hidden",0]],null,null,null,null))],null,function(t,e){t(e,0,0,!e.context.value)})}function ge(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," /s\n"]))],null,function(t,e){t(e,0,0,e.context.value)})}function me(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null))],null,null)}function be(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["(",")"]))],null,function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)})}function ye(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,me)),a["\u0275did"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](2,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,be)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 ve(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)})}function xe(t){return a["\u0275vid"](2,[a["\u0275qud"](402653184,1,{table:0}),a["\u0275qud"](402653184,2,{tableCellBoldTpl:0}),a["\u0275qud"](402653184,3,{sparklineTpl:0}),a["\u0275qud"](402653184,4,{routerLinkTpl:0}),a["\u0275qud"](402653184,5,{checkIconTpl:0}),a["\u0275qud"](402653184,6,{perSecondTpl:0}),a["\u0275qud"](402653184,7,{executingTpl:0}),a["\u0275qud"](402653184,8,{classAddingTpl:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,ae)),a["\u0275did"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](10,0,null,null,13,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,se)),a["\u0275did"](12,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](13,0,null,null,10,"ngx-datatable",[["class","bootstrap oadatatable 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["\u0275nov"](t,14).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect()&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r},Qt,Zt)),a["\u0275did"](14,5750784,[[1,4],["table",4]],4,Wt.DatatableComponent,[[1,lt.ScrollbarHelper],[1,Kt.DimensionsHelper],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,$t.ColumnChangesService],{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"],rowIdentity:[12,"rowIdentity"],rowClass:[13,"rowClass"]},{select:"select",sort:"sort"}),a["\u0275qud"](603979776,9,{columnTemplates:1}),a["\u0275qud"](335544320,10,{rowDetail:0}),a["\u0275qud"](335544320,11,{groupHeader:0}),a["\u0275qud"](335544320,12,{footer:0}),(t()(),a["\u0275eld"](19,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["\u0275did"](20,16384,[[12,4]],1,te.DatatableFooterDirective,[],null,null),a["\u0275qud"](335544320,13,{template:0}),(t()(),a["\u0275and"](0,[[13,2]],null,1,null,le)),a["\u0275did"](23,16384,null,0,ee.DataTableFooterTemplateDirective,[a.TemplateRef],null,null),a["\u0275ncd"](null,2),(t()(),a["\u0275and"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,de)),(t()(),a["\u0275and"](0,[[3,2],["sparklineTpl",2]],null,0,null,pe)),(t()(),a["\u0275and"](0,[[4,2],["routerLinkTpl",2]],null,0,null,fe)),(t()(),a["\u0275and"](0,[[5,2],["checkIconTpl",2]],null,0,null,he)),(t()(),a["\u0275and"](0,[[6,2],["perSecondTpl",2]],null,0,null,ge)),(t()(),a["\u0275and"](0,[[7,2],["executingTpl",2]],null,0,null,ye)),(t()(),a["\u0275and"](0,[[8,2],["classAddingTpl",2]],null,0,null,ve))],function(t,e){var n=e.component;t(e,9,0,n.loadingError),t(e,12,0,n.toolHeader),t(e,14,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.rowIdentity(),n.getRowClass()])},function(t,e){t(e,13,1,[a["\u0275nov"](e,14).isFixedHeader,a["\u0275nov"](e,14).isFixedRow,a["\u0275nov"](e,14).isVertScroll,a["\u0275nov"](e,14).isVirtualized,a["\u0275nov"](e,14).isHorScroll,a["\u0275nov"](e,14).isSelectable,a["\u0275nov"](e,14).isCheckboxSelection,a["\u0275nov"](e,14).isCellSelection,a["\u0275nov"](e,14).isSingleSelection,a["\u0275nov"](e,14).isMultiSelection,a["\u0275nov"](e,14).isMultiClickSelection])})}},"26FU":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("K9Ia"),i=n("8g8A"),o=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return a.__extends(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return n&&!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new i.a;return this._value},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(r.a)},"2Bdj":function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",function(){return a})},"2EZI":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("gIcY"),i=n("QFaf"),o=n("CcnG"),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.group=function(e,n){void 0===n&&(n=null);var a=t.prototype.group.call(this,e,n);return new i.a(a.controls,a.validator,a.asyncValidator)},e.ngInjectableDef=o.defineInjectable({factory:function(){return new e},token:e,providedIn:"root"}),e}(r.h)},"2UWG":function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3");function i(t){return void 0!==t._view.width}function o(t){var e,n,a,r,o=t._view;if(i(t)){var s=o.width/2;e=o.x-s,n=o.x+s,a=Math.min(o.y,o.base),r=Math.max(o.y,o.base)}else{var u=o.height/2;e=Math.min(o.x,o.base),n=Math.max(o.x,o.base),a=o.y-u,r=o.y+u}return{left:e,top:a,right:n,bottom:r}}a._set("global",{elements:{rectangle:{backgroundColor:a.global.defaultColor,borderColor:a.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),t.exports=r.extend({draw:function(){var t,e,n,a,r,i,o,s=this._chart.ctx,u=this._view,c=u.borderWidth;if(u.horizontal?(n=u.y-u.height/2,a=u.y+u.height/2,r=(e=u.x)>(t=u.base)?1:-1,i=1,o=u.borderSkipped||"left"):(t=u.x-u.width/2,e=u.x+u.width/2,r=1,i=(a=u.base)>(n=u.y)?1:-1,o=u.borderSkipped||"bottom"),c){var l=Math.min(Math.abs(t-e),Math.abs(n-a)),d=(c=c>l?l:c)/2,p=t+("left"!==o?d*r:0),f=e+("right"!==o?-d*r:0),h=n+("top"!==o?d*i:0),g=a+("bottom"!==o?-d*i:0);p!==f&&(n=h,a=g),h!==g&&(t=p,e=f)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=c;var m=[[t,a],[t,n],[e,n],[e,a]],b=["bottom","left","top","right"].indexOf(o,0);function y(t){return m[(b+t)%4]}-1===b&&(b=0);var v=y(0);s.moveTo(v[0],v[1]);for(var x=1;x<4;x++)v=y(x),s.lineTo(v[0],v[1]);s.fill(),c&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var a=o(this);n=t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=o(this);return i(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(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 t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},"2V7f":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("IPm6")),a(n("YVFZ")),a(n("syrc")),a(n("PNOi")),a(n("SfHT")),a(n("Mfce")),a(n("7F1K")),a(n("99TG")),a(n("Fjl2")),a(n("VHo1"))},"2WpN":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("FFOo"),i=n("pugT");function o(t){return function(e){return e.lift(new s(t))}}var s=function(){function t(t){this.callback=t}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.callback))},t}(),u=function(t){function e(e,n){var a=t.call(this,e)||this;return a.add(new i.a(n)),a}return a.__extends(e,t),e}(r.a)},"2ePl":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t}},"2fjn":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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")}}})}()},"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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n 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"))},"3/HP":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG"),s=n("5tze"),u=(n("bpWZ"),n("qwkt")),c=n("2V7f"),l=n("99TG"),d=n("QHrR"),p=n("i3PA"),f=n("fktO"),h=n("FLvf"),g=n("DtyJ");e.DatatableComponent=function(){function t(t,e,n,a,r,i){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=i,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=u.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=u.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.rowIdentity=function(t){return t},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new o.EventEmitter,this.activate=new o.EventEmitter,this.select=new o.EventEmitter,this.sort=new o.EventEmitter,this.page=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.tableContextmenu=new o.EventEmitter(!1),this.treeAction=new o.EventEmitter,this.rowCount=0,this._offsetX=new g.BehaviorSubject(0),this._count=0,this._offset=0,this._subscriptions=[],this.element=a.nativeElement,this.rowDiffer=r.find({}).create()}return Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,t&&(this._internalRows=t.slice()),this.externalSorting||this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"groupRowsBy",{get:function(){return this._groupRowsBy},set:function(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){t&&(this._internalColumns=t.slice(),s.setColumnDefaults(this._internalColumns),this.recalculateColumns()),this._columns=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"limit",{get:function(){return this._limit},set:function(t){this._limit=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)},set:function(t){this._offset=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedHeader",{get:function(){var t=this.headerHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedRow",{get:function(){var t=this.rowHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVertScroll",{get:function(){return this.scrollbarV},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVirtualized",{get:function(){return this.virtualization},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isHorScroll",{get:function(){return this.scrollbarH},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelectable",{get:function(){return void 0!==this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxSelection",{get:function(){return this.selectionType===u.SelectionType.checkbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCellSelection",{get:function(){return this.selectionType===u.SelectionType.cell},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSingleSelection",{get:function(){return this.selectionType===u.SelectionType.single},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiSelection",{get:function(){return this.selectionType===u.SelectionType.multi},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiClickSelection",{get:function(){return this.selectionType===u.SelectionType.multiClick},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnTemplates",{get:function(){return this._columnTemplates},set:function(t){this._columnTemplates=t,this.translateColumns(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){var t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){var e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.recalculate()},t.prototype.ngAfterViewInit=function(){var t=this;this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(function(){t.recalculate(),t.externalPaging&&t.scrollbarV&&t.page.emit({count:t.count,pageSize:t.pageSize,limit:t.limit,offset:0})})},t.prototype.ngAfterContentInit=function(){var t=this;this.columnTemplates.changes.subscribe(function(e){return t.translateColumns(e)}),this.listenForColumnInputChanges()},t.prototype.translateColumns=function(t){if(t){var e=t.toArray();e.length&&(this._internalColumns=s.translateTemplates(e),s.setColumnDefaults(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}},t.prototype.groupArrayBy=function(t,e){var n=new Map;return t.forEach(function(t){var a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,function(t){return{key:t[0],value:t[1]}})},t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=this.rows.slice():this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())},t.prototype.recalculate=function(){this.recalculateDims(),this.recalculateColumns()},t.prototype.onWindowResize=function(){this.recalculate()},t.prototype.recalculateColumns=function(t,e,n){if(void 0===t&&(t=this._internalColumns),void 0===e&&(e=-1),void 0===n&&(n=this.scrollbarH),t){var a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),this.columnMode===u.ColumnMode.force?s.forceFillColumnWidths(t,a,e,n):this.columnMode===u.ColumnMode.flex&&s.adjustColumnWidths(t,a),t}},t.prototype.recalculateDims=function(){var t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){var e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()},t.prototype.recalculatePages=function(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()},t.prototype.onBodyPage=function(t){this.externalPaging&&!this.virtualization||(this.offset=t.offset,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))},t.prototype.onBodyScroll=function(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()},t.prototype.onFooterPage=function(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}))},t.prototype.calcPageSize=function(t){if(void 0===t&&(t=this.rows),this.scrollbarV&&this.virtualization){var e=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(e,0)}return void 0!==this.limit?this.limit:t?t.length:0},t.prototype.calcRowCount=function(t){return void 0===t&&(t=this.rows),this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0},t.prototype.onColumnContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:u.ContextmenuType.header,content:t.column})},t.prototype.onRowContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:u.ContextmenuType.body,content:t.row})},t.prototype.onColumnResize=function(t){var e=t.column,n=t.newValue;if(void 0!==e){var a,r=this._internalColumns.map(function(t,r){return(t=i({},t)).$$id===e.$$id&&(a=r,t.width=n,t.$$oldWidth=n),t});this.recalculateColumns(r,a),this._internalColumns=r,this.resize.emit({column:e,newValue:n})}},t.prototype.onColumnReorder=function(t){var e=t.column,n=t.newValue,a=t.prevValue,r=this._internalColumns.map(function(t){return i({},t)});if(this.swapColumns){var o=r[n];r[n]=e,r[a]=o}else if(n>a){for(var s=r[a],u=a;u<n;u++)r[u]=r[u+1];r[n]=s}else{for(s=r[a],u=a;u>n;u--)r[u]=r[u-1];r[n]=s}this._internalColumns=r,this.reorder.emit({column:e,newValue:n,prevValue:a})},t.prototype.onColumnSort=function(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)},t.prototype.onHeaderSelect=function(t){var e,n;if(this.selectAllRowsOnPage){var a=this.bodyComponent.indexes.first,r=this.bodyComponent.indexes.last,i=this.selected.length===r-a;this.selected=[],i||(e=this.selected).push.apply(e,this._internalRows.slice(a,r))}else i=this.selected.length===this.rows.length,this.selected=[],i||(n=this.selected).push.apply(n,this.rows);this.select.emit({selected:this.selected})},t.prototype.onBodySelect=function(t){this.select.emit(t)},t.prototype.onTreeAction=function(t){var e=this,n=t.row,a=this._rows.findIndex(function(n){return n[e.treeToRelation]===t.row[e.treeToRelation]});this.treeAction.emit({row:n,rowIndex:a})},t.prototype.ngOnDestroy=function(){this._subscriptions.forEach(function(t){return t.unsubscribe()})},t.prototype.listenForColumnInputChanges=function(){var t=this;this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(function(){t.columnTemplates&&t.columnTemplates.notifyOnChanges()}))},t.prototype.sortInternalRows=function(){this._internalRows=s.sortRows(this._internalRows,this._internalColumns,this.sorts)},a([o.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([o.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"rows",null),a([o.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"groupRowsBy",null),a([o.Input(),r("design:type",Array)],t.prototype,"groupedRows",void 0),a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.Input(),r("design:type",String)],t.prototype,"columnMode",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"headerHeight",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"externalSorting",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"limit",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([o.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([o.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"reorderable",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"swapColumns",void 0),a([o.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([o.Input(),r("design:type",Array)],t.prototype,"sorts",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"cssClasses",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"messages",void 0),a([o.Input(),r("design:type",Function)],t.prototype,"rowIdentity",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([o.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([o.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"selectAllRowsOnPage",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeFromRelation",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeToRelation",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([o.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"scroll",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"activate",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"select",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"sort",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"page",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"resize",void 0),a([o.Output(),r("design:type",Object)],t.prototype,"tableContextmenu",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"treeAction",void 0),a([o.HostBinding("class.fixed-header"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isFixedHeader",null),a([o.HostBinding("class.fixed-row"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isFixedRow",null),a([o.HostBinding("class.scroll-vertical"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isVertScroll",null),a([o.HostBinding("class.virtualized"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isVirtualized",null),a([o.HostBinding("class.scroll-horz"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isHorScroll",null),a([o.HostBinding("class.selectable"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isSelectable",null),a([o.HostBinding("class.checkbox-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isCheckboxSelection",null),a([o.HostBinding("class.cell-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isCellSelection",null),a([o.HostBinding("class.single-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isSingleSelection",null),a([o.HostBinding("class.multi-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isMultiSelection",null),a([o.HostBinding("class.multi-click-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isMultiClickSelection",null),a([o.ContentChildren(d.DataTableColumnDirective),r("design:type",o.QueryList),r("design:paramtypes",[o.QueryList])],t.prototype,"columnTemplates",null),a([o.ContentChild(p.DatatableRowDetailDirective),r("design:type",p.DatatableRowDetailDirective)],t.prototype,"rowDetail",void 0),a([o.ContentChild(l.DatatableGroupHeaderDirective),r("design:type",l.DatatableGroupHeaderDirective)],t.prototype,"groupHeader",void 0),a([o.ContentChild(f.DatatableFooterDirective),r("design:type",f.DatatableFooterDirective)],t.prototype,"footer",void 0),a([o.ViewChild(c.DataTableBodyComponent),r("design:type",c.DataTableBodyComponent)],t.prototype,"bodyComponent",void 0),a([o.ViewChild(h.DataTableHeaderComponent),r("design:type",h.DataTableHeaderComponent)],t.prototype,"headerComponent",void 0),a([o.HostListener("window:resize"),s.throttleable(5),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onWindowResize",null),a([o.Component({selector:"ngx-datatable",template:'\n    <div\n      visibilityObserver\n      (visible)="recalculate()">\n      <datatable-header\n        *ngIf="headerHeight"\n        [sorts]="sorts"\n        [sortType]="sortType"\n        [scrollbarH]="scrollbarH"\n        [innerWidth]="_innerWidth"\n        [offsetX]="_offsetX | async"\n        [dealsWithGroup]="groupedRows"\n        [columns]="_internalColumns"\n        [headerHeight]="headerHeight"\n        [reorderable]="reorderable"\n        [targetMarkerTemplate]="targetMarkerTemplate"\n        [sortAscendingIcon]="cssClasses.sortAscending"\n        [sortDescendingIcon]="cssClasses.sortDescending"\n        [allRowsSelected]="allRowsSelected"\n        [selectionType]="selectionType"\n        (sort)="onColumnSort($event)"\n        (resize)="onColumnResize($event)"\n        (reorder)="onColumnReorder($event)"\n        (select)="onHeaderSelect($event)"\n        (columnContextmenu)="onColumnContextmenu($event)">\n      </datatable-header>\n      <datatable-body\n        [groupRowsBy]="groupRowsBy"\n        [groupedRows]="groupedRows"\n        [rows]="_internalRows"\n        [groupExpansionDefault]="groupExpansionDefault"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [virtualization]="virtualization"\n        [loadingIndicator]="loadingIndicator"\n        [externalPaging]="externalPaging"\n        [rowHeight]="rowHeight"\n        [rowCount]="rowCount"\n        [offset]="offset"\n        [trackByProp]="trackByProp"\n        [columns]="_internalColumns"\n        [pageSize]="pageSize"\n        [offsetX]="_offsetX | async"\n        [rowDetail]="rowDetail"\n        [groupHeader]="groupHeader"\n        [selected]="selected"\n        [innerWidth]="_innerWidth"\n        [bodyHeight]="bodyHeight"\n        [selectionType]="selectionType"\n        [emptyMessage]="messages.emptyMessage"\n        [rowIdentity]="rowIdentity"\n        [rowClass]="rowClass"\n        [selectCheck]="selectCheck"\n        [displayCheck]="displayCheck"\n        [summaryRow]="summaryRow"\n        [summaryHeight]="summaryHeight"\n        [summaryPosition]="summaryPosition"\n        (page)="onBodyPage($event)"\n        (activate)="activate.emit($event)"\n        (rowContextmenu)="onRowContextmenu($event)"\n        (select)="onBodySelect($event)"\n        (scroll)="onBodyScroll($event)"\n        (treeAction)="onTreeAction($event)">\n      </datatable-body>\n      <datatable-footer\n        *ngIf="footerHeight"\n        [rowCount]="rowCount"\n        [pageSize]="pageSize"\n        [offset]="offset"\n        [footerHeight]="footerHeight"\n        [footerTemplate]="footer"\n        [totalMessage]="messages.totalMessage"\n        [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n        [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n        [pagerPreviousIcon]="cssClasses.pagerPrevious"\n        [selectedCount]="selected.length"\n        [selectedMessage]="!!selectionType && messages.selectedMessage"\n        [pagerNextIcon]="cssClasses.pagerNext"\n        (page)="onFooterPage($event)">\n      </datatable-footer>\n    </div>\n  ',changeDetection:o.ChangeDetectionStrategy.OnPush,encapsulation:o.ViewEncapsulation.None,styleUrls:["./datatable.component.css"],host:{class:"ngx-datatable"}})],t)}()},"35yf":function(t,e,n){"use strict";n("CDJp")._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+")"}}}}),t.exports=function(t){t.controllers.scatter=t.controllers.line}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924"===e?t<4?t:t+12:"\u0938\u0941\u092c\u0939"===e?t:"\u0926\u094b\u092a\u0939\u0930"===e?t>=10?t:t+12:"\u0936\u093e\u092e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924":t<10?"\u0938\u0941\u092c\u0939":t<17?"\u0926\u094b\u092a\u0939\u0930":t<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(n("wd/R"))},"3MdB":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=n("ahDk");e.DraggableDirective=function(){function t(t){this.dragX=!0,this.dragY=!0,this.dragStart=new i.EventEmitter,this.dragging=new i.EventEmitter,this.dragEnd=new i.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}return t.prototype.ngOnChanges=function(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(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})))},t.prototype.onMousedown=function(t){var e=this;if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;var n={x:t.clientX,y:t.clientY},a=o.fromEvent(document,"mouseup");this.subscription=a.subscribe(function(t){return e.onMouseup(t)});var r=o.fromEvent(document,"mousemove").pipe(s.takeUntil(a)).subscribe(function(t){return e.move(t,n)});this.subscription.add(r),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}},t.prototype.move=function(t,e){if(this.isDragging){var 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})}},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Object)],t.prototype,"dragEventTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"dragModel",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragX",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragY",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragging",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragEnd",void 0),a([i.Directive({selector:"[draggable]"})],t)}()},"3U0i":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="Timeout has occurred",this.name="TimeoutError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"3fWJ":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"4HWh":function(t,e,n){"use strict";var a=n("CcnG"),r=n("OZfm"),i=n("lqqz");n("p4Cf"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return u});var o=a["\u0275crt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],null,function(t,e){t(e,0,0,e.component.html)})}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,[["popoverTpl",2]],null,0,null,s)),(t()(),a["\u0275eld"](1,16777216,null,null,1,"i",[["aria-hidden","true"],["class","fa fa-question-circle"],["container","body"],["placement","bottom"]],null,null,null,null,null)),a["\u0275did"](2,212992,null,0,r.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,r.a,i.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],function(t,e){t(e,2,0,a["\u0275nov"](e,0),"bottom",!0,"body")},null)}},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},n={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};t.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(t){return t.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0ab0\u0abe\u0aa4"===e?t<4?t:t+12:"\u0ab8\u0ab5\u0abe\u0ab0"===e?t:"\u0aac\u0aaa\u0acb\u0ab0"===e?t>=10?t:t+12:"\u0ab8\u0abe\u0a82\u0a9c"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0ab0\u0abe\u0aa4":t<10?"\u0ab8\u0ab5\u0abe\u0ab0":t<17?"\u0aac\u0aaa\u0acb\u0ab0":t<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}})}(n("wd/R"))},"4dOw":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"4fRq":function(t,e){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var a=new Uint8Array(16);t.exports=function(){return n(a),a}}else{var r=new Array(16);t.exports=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),r[e]=t>>>((3&e)<<3)&255;return r}}},"58b6":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("kQXf");e.FoldingType=function(){function t(t){this._cssClass=t}return Object.defineProperty(t.prototype,"cssClass",{get:function(){return this._cssClass},enumerable:!0,configurable:!0}),t.Expanded=new t("node-expanded"),t.Collapsed=new t("node-collapsed"),t.Empty=new t("node-empty"),t.Leaf=new t("node-leaf"),t}(),e.TreeModelSettings=function(){function t(){}return t.merge=function(e,n){var r=a.omit(a.get(n,"settings"),t.NOT_CASCADING_SETTINGS);return a.defaultsDeep({},a.get(e,"settings"),r,{static:!1,leftMenu:!1,rightMenu:!0,isCollapsedOnInit:!1,checked:!1,keepNodesInDOM:!1,selectionAllowed:!0})},t.NOT_CASCADING_SETTINGS=["selectionAllowed"],t}(),e.Ng2TreeSettings=function(){return function(){this.rootIsVisible=!0,this.showCheckboxes=!1,this.enableCheckboxes=!0}}(),e.TreeStatus=function(t){return t[t.New=0]="New",t[t.Modified=1]="Modified",t[t.IsBeingRenamed=2]="IsBeingRenamed",t}(e.TreeStatus||{})},"5ZZ7":function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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),o=e.datasets[0],s=r.data[a].custom||{},u=i.valueAtIndexOrDefault,c=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(o.backgroundColor,a,c.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(o.borderColor,a,c.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(o.borderWidth,a,c.borderWidth),hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,a,r,i=e.index,o=this.chart;for(n=0,a=(o.data.datasets||[]).length;n<a;++n)(r=o.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),t.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:r.Arc,linkScales:i.noop,update:function(t){var e,n,a,r=this,o=r.getDataset(),s=r.getMeta(),u=r.chart.options.startAngle||0,c=r._starts=[],l=r._angles=[];for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=o.data.length;e<n;e++)c[e]=u,a=r._computeAngle(e),l[e]=a,u+=a;i.each(s.data,function(e,n){r.updateElement(e,n,t)})},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=a.elements.arc,i=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max((i-r.borderWidth/2)/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,o=a.getDataset(),s=r.options,u=s.animation,c=r.scale,l=r.data.labels,d=c.xCenter,p=c.yCenter,f=s.startAngle,h=t.hidden?0:c.getDistanceFromCenterForValue(o.data[e]),g=a._starts[e],m=g+(t.hidden?0:a._angles[e]),b=u.animateScale?0:c.getDistanceFromCenterForValue(o.data[e]);i.extend(t,{_datasetIndex:a.index,_index:e,_scale:c,_model:{x:d,y:p,innerRadius:0,outerRadius:n?b:h,startAngle:n&&u.animateRotate?f:g,endAngle:n&&u.animateRotate?f:m,label:i.valueAtIndexOrDefault(l,e,l[e])}});var y=this.chart.options.elements.arc,v=t.custom||{},x=i.valueAtIndexOrDefault,_=t._model;_.backgroundColor=v.backgroundColor?v.backgroundColor:x(o.backgroundColor,e,y.backgroundColor),_.borderColor=v.borderColor?v.borderColor:x(o.borderColor,e,y.borderColor),_.borderWidth=v.borderWidth?v.borderWidth:x(o.borderWidth,e,y.borderWidth),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return i.each(e.data,function(e,a){isNaN(t.data[a])||e.hidden||n++}),n},_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:i.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}})}},"5tze":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("HV4d")),a(n("ae7Z")),a(n("h+PQ")),a(n("CVuo")),a(n("RnPR")),a(n("ohIB")),a(n("rdkg")),a(n("y9Z7")),a(n("1HVU")),a(n("MgB7")),a(n("h6KF")),a(n("GDJm")),a(n("VYA+")),a(n("AqeW")),a(n("FMPj"))},"6+QB":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"60iU":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a,r=n("G5J1"),i=n("F/XL"),o=n("XlPw");a||(a={});var s=function(){function t(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}return t.prototype.observe=function(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()}},t.prototype.do=function(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()}},t.prototype.accept=function(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)},t.prototype.toObservable=function(){switch(this.kind){case"N":return Object(i.a)(this.value);case"E":return Object(o.a)(this.error);case"C":return Object(r.b)()}throw new Error("unexpected notification kind value")},t.createNext=function(e){return void 0!==e?new t("N",e):t.undefinedValueNotification},t.createError=function(e){return new t("E",void 0,e)},t.createComplete=function(){return t.completeNotification},t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t}()},"67Y/":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(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 o(t,e))}}var o=function(){function t(t,e){this.project=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.project,this.thisArg))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.project=n,r.count=0,r.thisArg=a||r,r}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(r.a)},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},n={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};t.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".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:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(t){return"\u179b\u17d2\u1784\u17b6\u1785"===t},meridiem:function(t,e,n){return t<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(t){return t.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/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"))},"6MUB":function(t,e,n){"use strict";var a=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,r){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map(function(r){var i=encodeURIComponent(a(r))+n;return Array.isArray(t[r])?t[r].map(function(t){return i+encodeURIComponent(a(t))}).join(e):i+encodeURIComponent(a(t[r]))}).join(e):r?encodeURIComponent(a(r))+n+encodeURIComponent(a(t)):""}},"6ahw":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("iLxQ"),r=n("DKTb"),i={closed:!0,next:function(t){},error:function(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete:function(){}}},"6blF":function(t,e,n){"use strict";var a=n("1fDf"),r=n("FFOo"),i=n("L/V9"),o=n("6ahw"),s=n("xTla"),u=n("y3By"),c=n("iLxQ");n.d(e,"a",function(){return l});var l=function(){function t(t){this._isScalar=!1,t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var a=this.operator,s=function(t,e,n){if(t){if(t instanceof r.a)return t;if(t[i.a])return t[i.a]()}return t||e||n?new r.a(t,e,n):new r.a(o.a)}(t,e,n);if(s.add(a?a.call(s,this.source):this.source||c.a.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),c.a.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){c.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),Object(a.a)(t)?t.error(e):console.warn(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=d(e))(function(e,a){var r;r=n.subscribe(function(e){try{t(e)}catch(n){a(n),r&&r.unsubscribe()}},a,e)})},t.prototype._subscribe=function(t){var e=this.source;return e&&e.subscribe(t)},t.prototype[s.a]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 0===t.length?this:Object(u.b)(t)(this)},t.prototype.toPromise=function(t){var e=this;return new(t=d(t))(function(t,n){var a;e.subscribe(function(t){return a=t},function(t){return n(t)},function(){return t(a)})})},t.create=function(e){return new t(e)},t}();function d(t){if(t||(t=c.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},"6qA3":function(t,e,n){"use strict";var a=n("Q1FS"),r=n("OAkW"),i=n("Z5tI"),o=n("poJ0"),s=n("ozli"),u=n("yRPT"),c=n("90cg"),l=n("GMZp"),d=n("VKeD"),p=n("zfKp");e.subscribeTo=function(t){if(t instanceof a.Observable)return function(e){return t._isScalar?(e.next(t.value),void e.complete()):t.subscribe(e)};if(t&&"function"==typeof t[p.observable])return s.subscribeToObservable(t);if(u.isArrayLike(t))return r.subscribeToArray(t);if(c.isPromise(t))return i.subscribeToPromise(t);if(t&&"function"==typeof t[d.iterator])return o.subscribeToIterable(t);var e=l.isObject(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.")}},"6rqY":function(t,e,n){"use strict";var a=n("A5uo"),r=n("dpnK"),i=n("CDJp"),o=n("RDha"),s=n("mlr9"),u=n("fELs"),c=n("iM7B"),l=n("VgNv"),d=n("tjFV"),p=n("x8uC");t.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},o.extend(t.prototype,{construct:function(e,n){var a=this;n=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=o.configMerge(i.global,i[t.type],t.options||{}),t}(n);var r=c.acquireContext(e,n),s=r&&r.canvas,u=s&&s.height,l=s&&s.width;a.id=o.uid(),a.ctx=r,a.canvas=s,a.config=n,a.width=l,a.height=u,a.aspectRatio=u?l/u:null,a.options=n.options,a._bufferedRender=!1,a.chart=a,a.controller=a,t.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),r&&s?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return l.notify(t,"beforeInit"),o.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,"afterInit"),t},clear:function(){return o.canvas.clear(this),this},stop:function(){return r.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(o.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:o.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",o.retinaScale(e,n.devicePixelRatio),!t)){var u={width:i,height:s};l.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;o.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),o.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,n=t.options,a=t.scales||{},r=[],i=Object.keys(a).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),o.each(r,function(n){var r=n.options,s=r.id,u=o.valueOrDefault(r.type,n.dtype);e(r.position)!==e(n.dposition)&&(r.position=n.dposition),i[s]=!0;var c=null;if(s in a&&a[s].type===u)(c=a[s]).options=r,c.ctx=t.ctx,c.chart=t;else{var l=d.getScaleConstructor(u);if(!l)return;c=new l({id:s,type:u,options:r,ctx:t.ctx,chart:t}),a[c.id]=c}c.mergeTicksOptions(),n.isDefault&&(t.scale=c)}),o.each(i,function(t,e){t||delete a[e]}),t.scales=a,d.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],a=[];return o.each(e.data.datasets,function(r,i){var o=e.getDatasetMeta(i),s=r.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(i),o=e.getDatasetMeta(i)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(i),o.controller.linkScales();else{var u=t.controllers[o.type];if(void 0===u)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new u(e,i),a.push(o.controller)}},e),a},resetElements:function(){var t=this;o.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var n,a,r=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),a=(n=r).options,o.each(n.scales,function(t){u.removeBox(n,t)}),a=o.configMerge(t.defaults.global,t.defaults[n.config.type],a),n.options=n.config.options=a,n.ensureScalesHaveIDs(),n.buildOrUpdateScales(),n.tooltip._options=a.tooltips,n.tooltip.initialize(),l._invalidate(r),!1!==l.notify(r,"beforeUpdate")){r.tooltip._data=r.data;var i=r.buildOrUpdateControllers();o.each(r.data.datasets,function(t,e){r.getDatasetMeta(e).controller.buildOrUpdateElements()},r),r.updateLayout(),r.options.animation&&r.options.animation.duration&&o.each(i,function(t){t.reset()}),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],l.notify(r,"afterUpdate"),r._bufferedRender?r._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:r.render(e)}},updateLayout:function(){!1!==l.notify(this,"beforeLayout")&&(u.update(this,this.width,this.height),l.notify(this,"afterScaleUpdate"),l.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==l.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);l.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==l.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),l.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=t.duration,i=t.lazy;if(!1!==l.notify(e,"beforeRender")){var s=e.options.animation,u=function(t){l.notify(e,"afterRender"),o.callback(s&&s.onComplete,[t],e)};if(s&&(void 0!==n&&0!==n||void 0===n&&0!==s.duration)){var c=new a({numSteps:(n||s.duration)/16.66,easing:t.easing||s.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,o.easing.effects[e.easing])(a),a,n)},onAnimationProgress:s.onProgress,onAnimationComplete:u});r.addAnimation(e,c,n,i)}else e.draw(),u(new a({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),o.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==l.notify(e,"beforeDraw",[t])&&(o.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),l.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!==l.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);l.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==l.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),l.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==l.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),l.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return s.modes.single(this,t)},getElementsAtEvent:function(t){return s.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return s.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=s.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return s.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 e,n,a=this,r=a.canvas;for(a.stop(),e=0,n=a.data.datasets.length;e<n;++e)a.destroyDatasetMeta(e);r&&(a.unbindEvents(),o.canvas.clear(a),c.releaseContext(a.ctx),a.canvas=null,a.ctx=null),l.notify(a,"destroy"),delete t.instances[a.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new p({_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)};o.each(t.options.events,function(a){c.addEventListener(t,a,n),e[a]=n}),t.options.responsive&&(n=function(){t.resize()},c.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,o.each(e,function(e,n){c.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var a,r,i,o=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[o](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==l.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)),l.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),o.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=!o.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),t.Controller=t}},"6ww4":function(t,e,n){var a=n("uxXc"),r=n("mgIt"),i=function(t){return t instanceof i?t:this instanceof i?(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=r.getRgba(t))?this.setValues("rgb",e):(e=r.getHsla(t))?this.setValues("hsl",e):(e=r.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 i(t);var e};i.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 r.hexString(this.values.rgb)},rgbString:function(){return r.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return r.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return r.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return r.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return r.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return r.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return r.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(),o=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new i,a=this.values,r=n.values;for(var o in a)a.hasOwnProperty(o)&&("[object Array]"===(e={}.toString.call(t=a[o]))?r[o]=t.slice(0):"[object Number]"===e?r[o]=t:console.error("unexpected color value:",t));return n}},i.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},i.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},i.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},i.prototype.setValues=function(t,e){var n,r,i=this.values,o=this.spaces,s=this.maxes,u=1;if(this.valid=!0,"alpha"===t)u=e;else if(e.length)i[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++)i[t][n]=e[t.charAt(n)];u=e.a}else if(void 0!==e[o[t][0]]){var c=o[t];for(n=0;n<t.length;n++)i[t][n]=e[c[n]];u=e.alpha}if(i.alpha=Math.max(0,Math.min(1,void 0===u?i.alpha:u)),"alpha"===t)return!1;for(n=0;n<t.length;n++)r=Math.max(0,Math.min(s[t][n],i[t][n])),i[t][n]=Math.round(r);for(var l in o)l!==t&&(i[l]=a[t][l](i[t]));return!0},i.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)},i.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:n===a[e]?this:(a[e]=n,this.setValues(t,a),this)},"undefined"!=typeof window&&(window.Color=i),t.exports=i},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[t+" minuti",t+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[t+" tunni",t+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[t+" kuu",t+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}n("wd/R").defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".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\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d p\xe4eva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},"7F1K":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=n("qwkt");e.DataTableSelectionComponent=function(){function t(){this.activate=new i.EventEmitter,this.select=new i.EventEmitter}return t.prototype.selectRow=function(t,e,n){var a;if(this.selectEnabled){var r=this.selectionType===s.SelectionType.checkbox,i=this.selectionType===s.SelectionType.multiClick,u=[];u=this.selectionType===s.SelectionType.multi||r||i?t.shiftKey?o.selectRowsBetween([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):o.selectRows(t.ctrlKey||t.metaKey||i||r?this.selected.slice():[],n,this.getRowSelectedIdx.bind(this)):o.selectRows([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(u=u.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),(a=this.selected).push.apply(a,u),this.prevIndex=e,this.select.emit({selected:u})}},t.prototype.onActivate=function(t,e){var n=t.type,a=t.event,r=t.row,i=this.selectionType===s.SelectionType.checkbox;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===o.Keys.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)},t.prototype.onKeyboardFocus=function(t){var e=t.event.keyCode;if(e===o.Keys.up||e===o.Keys.down||e===o.Keys.right||e===o.Keys.left){var n=this.selectionType===s.SelectionType.cell;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}},t.prototype.focusRow=function(t,e){var n=this.getPrevNextRow(t,e);n&&n.focus()},t.prototype.getPrevNextRow=function(t,e){var n=t.parentElement;if(n){var a=void 0;if(e===o.Keys.up?a=n.previousElementSibling:e===o.Keys.down&&(a=n.nextElementSibling),a&&a.children.length)return a.children[0]}},t.prototype.focusCell=function(t,e,n,a){var r;if(n===o.Keys.left)r=t.previousElementSibling;else if(n===o.Keys.right)r=t.nextElementSibling;else if(n===o.Keys.up||n===o.Keys.down){var i=this.getPrevNextRow(e,n);if(i){var s=i.getElementsByClassName("datatable-body-cell");s.length&&(r=s[a])}}r&&r.focus()},t.prototype.getRowSelected=function(t){return this.getRowSelectedIdx(t,this.selected)>-1},t.prototype.getRowSelectedIdx=function(t,e){var n=this;if(!e||!e.length)return-1;var a=this.rowIdentity(t);return e.findIndex(function(t){return n.rowIdentity(t)===a})},a([i.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"selectEnabled",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Component({selector:"datatable-selection",template:"\n    <ng-content></ng-content>\n  ",changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"7O6V":function(t,e,n){"use strict";t.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},"7aV9":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".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 [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(t){return t+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(t){return"\u0db4.\u0dc0."===t||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===t},meridiem:function(t,e,n){return t>11?n?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":n?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}})}()},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},n={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};t.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(t){return t.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0a30\u0a3e\u0a24"===e?t<4?t:t+12:"\u0a38\u0a35\u0a47\u0a30"===e?t:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===e?t>=10?t:t+12:"\u0a38\u0a3c\u0a3e\u0a2e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0a30\u0a3e\u0a24":t<10?"\u0a38\u0a35\u0a47\u0a30":t<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":t<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}})}(n("wd/R"))},"8//i":function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e=a.global,n={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function s(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function u(t){var n=t.options.pointLabels,a=r.valueOrDefault(n.fontSize,e.defaultFontSize),i=r.valueOrDefault(n.fontStyle,e.defaultFontStyle),o=r.valueOrDefault(n.fontFamily,e.defaultFontFamily);return{size:a,style:i,family:o,font:r.fontString(a,i,o)}}function c(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-5,end:e}:{start:e,end:e+n+5}}function l(t){return 0===t||180===t?"center":t<180?"left":"right"}function d(t,e,n,a){if(r.isArray(e))for(var i=n.y,o=1.5*a,s=0;s<e.length;++s)t.fillText(e[s],n.x,i),i+=o;else t.fillText(e,n.x,n.y)}function p(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){return r.isNumber(t)?t:0}var h=t.LinearScaleBase.extend({setDimensions:function(){var t=this,n=t.options,a=n.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=r.min([t.height,t.width]),o=r.valueOrDefault(a.fontSize,e.defaultFontSize);t.drawingArea=n.display?i/2-(o/2+a.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;r.each(e.data.datasets,function(i,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);r.each(i.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()},getTickLimit:function(){var t=this.options.ticks,n=r.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*n)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t;this.options.pointLabels.display?function(t){var e,n,a,i=u(t),o=Math.min(t.height/2,t.width/2),l={r:t.width,l:0,t:t.height,b:0},d={};t.ctx.font=i.font,t._pointLabelSizes=[];var p,f,h,g=s(t);for(e=0;e<g;e++){a=t.getPointPosition(e,o),p=t.ctx,f=i.size,n=r.isArray(h=t.pointLabels[e]||"")?{w:r.longestText(p,p.font,h),h:h.length*f+1.5*(h.length-1)*f}:{w:p.measureText(h).width,h:f},t._pointLabelSizes[e]=n;var m=t.getIndexAngle(e),b=r.toDegrees(m)%360,y=c(b,a.x,n.w,0,180),v=c(b,a.y,n.h,90,270);y.start<l.l&&(l.l=y.start,d.l=m),y.end>l.r&&(l.r=y.end,d.r=m),v.start<l.t&&(l.t=v.start,d.t=m),v.end>l.b&&(l.b=v.end,d.b=m)}t.setReductions(o,l,d)}(this):(t=Math.min(this.height/2,this.width/2),this.drawingArea=Math.round(t),this.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var a=e.l/Math.sin(n.l),r=Math.max(e.r-this.width,0)/Math.sin(n.r),i=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);a=f(a),r=f(r),i=f(i),o=f(o),this.drawingArea=Math.min(Math.round(t-(a+r)/2),Math.round(t-(i+o)/2)),this.setCenterPoint(a,r,i,o)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,o=r.height-a-r.drawingArea;r.xCenter=Math.round((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.round((i+o)/2+r.top)},getIndexAngle:function(t){return t*(2*Math.PI/s(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.round(Math.cos(n)*e)+this.xCenter,y:Math.round(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,n=t.options,a=n.gridLines,i=n.ticks,o=r.valueOrDefault;if(n.display){var c=t.ctx,f=this.getIndexAngle(0),h=o(i.fontSize,e.defaultFontSize),g=o(i.fontStyle,e.defaultFontStyle),m=o(i.fontFamily,e.defaultFontFamily),b=r.fontString(h,g,m);r.each(t.ticks,function(n,u){if(u>0||i.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[u]);if(a.display&&0!==u&&function(t,e,n,a){var i=t.ctx;if(i.strokeStyle=r.valueAtIndexOrDefault(e.color,a-1),i.lineWidth=r.valueAtIndexOrDefault(e.lineWidth,a-1),t.options.gridLines.circular)i.beginPath(),i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),i.closePath(),i.stroke();else{var o=s(t);if(0===o)return;i.beginPath();var u=t.getPointPosition(0,n);i.moveTo(u.x,u.y);for(var c=1;c<o;c++)u=t.getPointPosition(c,n),i.lineTo(u.x,u.y);i.closePath(),i.stroke()}}(t,a,l,u),i.display){var d=o(i.fontColor,e.defaultFontColor);if(c.font=b,c.save(),c.translate(t.xCenter,t.yCenter),c.rotate(f),i.showLabelBackdrop){var p=c.measureText(n).width;c.fillStyle=i.backdropColor,c.fillRect(-p/2-i.backdropPaddingX,-l-h/2-i.backdropPaddingY,p+2*i.backdropPaddingX,h+2*i.backdropPaddingY)}c.textAlign="center",c.textBaseline="middle",c.fillStyle=d,c.fillText(n,0,-l),c.restore()}}}),(n.angleLines.display||n.pointLabels.display)&&function(t){var n=t.ctx,a=t.options,i=a.angleLines,o=a.pointLabels;n.lineWidth=i.lineWidth,n.strokeStyle=i.color;var c=t.getDistanceFromCenterForValue(a.ticks.reverse?t.min:t.max),f=u(t);n.textBaseline="top";for(var h=s(t)-1;h>=0;h--){if(i.display){var g=t.getPointPosition(h,c);n.beginPath(),n.moveTo(t.xCenter,t.yCenter),n.lineTo(g.x,g.y),n.stroke(),n.closePath()}if(o.display){var m=t.getPointPosition(h,c+5),b=r.valueAtIndexOrDefault(o.fontColor,h,e.defaultFontColor);n.font=f.font,n.fillStyle=b;var y=t.getIndexAngle(h),v=r.toDegrees(y);n.textAlign=l(v),p(v,t._pointLabelSizes[h],m),d(n,t.pointLabels[h]||"",m,f.size)}}}(t)}}});i.registerScaleType("radialLinear",h,n)}},"85J/":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t},t}()},"88/t":function(t,e,n){"use strict";n.r(e);var a=n("DtyJ");n.d(e,"Observable",function(){return a.Observable})},"8TtQ":function(t,e,n){"use strict";var a=n("cdu6"),r=n("tjFV");t.exports=function(){var t=a.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.data,r=n.isHorizontal();return a.yLabels&&!r?n.getRightValue(a.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 o=a.getLabels().indexOf(t=n||t);e=-1!==o?o:e}if(a.isHorizontal()){var s=a.width/i,u=s*(e-a.minIndex);return r&&(u+=s/2),a.left+Math.round(u)}var c=a.height/i,l=c*(e-a.minIndex);return r&&(l+=c/2),a.top+Math.round(l)},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}});r.registerScaleType("category",t,{position:"bottom"})}},"8g8A":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"8iEZ":function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnCellDirective=function(){return a([r.Directive({selector:"[ngx-datatable-cell-template]"})],function(t){this.template=t})}()},"8mBD":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},"8xTl":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(){}return t.prototype.transform=function(t){return a.upperFirst(t)},t}()},"909l":function(t,e,n){"use strict";n.d(e,"b",function(){return l}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("IUTb"),i=n("isby"),o=n("FFOo"),s=n("MGBS"),u=n("zotm"),c=n("En8+");function l(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[t.length-1];return"function"==typeof n&&t.pop(),Object(r.a)(t,void 0).lift(new d(n))}var d=function(){function t(t){this.resultSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new p(t,this.resultSelector))},t}(),p=function(t){function e(e,n,a){void 0===a&&(a=Object.create(null));var r=t.call(this,e)||this;return r.iterators=[],r.active=0,r.resultSelector="function"==typeof n?n:null,r.values=a,r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.iterators;Object(i.a)(t)?e.push(new h(t)):e.push("function"==typeof t[c.a]?new f(t[c.a]()):new g(this.destination,this,t))},e.prototype._complete=function(){var t=this.iterators,e=t.length;if(this.unsubscribe(),0!==e){this.active=e;for(var n=0;n<e;n++){var a=t[n];a.stillUnsubscribed?this.destination.add(a.subscribe(a,n)):this.active--}}else this.destination.complete()},e.prototype.notifyInactive=function(){this.active--,0===this.active&&this.destination.complete()},e.prototype.checkIterators=function(){for(var t=this.iterators,e=t.length,n=this.destination,a=0;a<e;a++)if("function"==typeof(o=t[a]).hasValue&&!o.hasValue())return;var r=!1,i=[];for(a=0;a<e;a++){var o,s=(o=t[a]).next();if(o.hasCompleted()&&(r=!0),s.done)return void n.complete();i.push(s.value)}this.resultSelector?this._tryresultSelector(i):n.next(i),r&&n.complete()},e.prototype._tryresultSelector=function(t){var e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(o.a),f=function(){function t(t){this.iterator=t,this.nextResult=t.next()}return t.prototype.hasValue=function(){return!0},t.prototype.next=function(){var t=this.nextResult;return this.nextResult=this.iterator.next(),t},t.prototype.hasCompleted=function(){var t=this.nextResult;return t&&t.done},t}(),h=function(){function t(t){this.array=t,this.index=0,this.length=0,this.length=t.length}return t.prototype[c.a]=function(){return this},t.prototype.next=function(t){var e=this.index++;return e<this.length?{value:this.array[e],done:!1}:{value:null,done:!0}},t.prototype.hasValue=function(){return this.array.length>this.index},t.prototype.hasCompleted=function(){return this.array.length===this.index},t}(),g=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.parent=n,r.observable=a,r.stillUnsubscribed=!0,r.buffer=[],r.isComplete=!1,r}return a.__extends(e,t),e.prototype[c.a]=function(){return this},e.prototype.next=function(){var t=this.buffer;return 0===t.length&&this.isComplete?{value:null,done:!0}:{value:t.shift(),done:!1}},e.prototype.hasValue=function(){return this.buffer.length>0},e.prototype.hasCompleted=function(){return 0===this.buffer.length&&this.isComplete},e.prototype.notifyComplete=function(){this.buffer.length>0?(this.isComplete=!0,this.parent.notifyInactive()):this.destination.complete()},e.prototype.notifyNext=function(t,e,n,a,r){this.buffer.push(e),this.parent.checkIterators()},e.prototype.subscribe=function(t,e){return Object(u.a)(this,this.observable,this,e)},e}(s.a)},"90cg":function(t,e,n){"use strict";e.isPromise=function(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}},"99TG":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("Fjl2");e.DatatableGroupHeaderDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandGroup=function(t){this.toggle.emit({type:"group",value:t})},t.prototype.expandAllGroups=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllGroups=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableGroupHeaderTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-group-header"})],t)}()},"9AGB":function(t,e,n){"use strict";var a=n("w5QO");function r(t){return t?1===t.length?t[0]:function(e){return t.reduce(function(t,e){return e(t)},e)}:a.noop}e.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r(t)},e.pipeFromArray=r},"9GXa":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){this.title="Warning"}}()},"9Kw/":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t){this.i18n=t,this.title=this.i18n("Information")}}()},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},"9Z1F":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("MGBS"),i=n("rPjj"),o=n("zotm");function s(t){return function(e){var n=new u(t),a=e.lift(n);return n.caught=a}}var u=function(){function t(t){this.selector=t}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.selector,this.caught))},t}(),c=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.selector=n,r.caught=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=void 0;try{n=this.selector(e,this.caught)}catch(r){return void t.prototype.error.call(this,r)}this._unsubscribeAndRecycle();var a=new i.a(this,void 0,void 0);this.add(a),Object(o.a)(this,n,void 0,void 0,a)}},e}(r.a)},"9nlD":function(t,e,n){"use strict";n.d(e,"a",function(){return d});var a=n("LvDl"),r=n("26FU"),i=n("mtw6"),o=n("G1I9"),s=n("a0VL"),u=n("ufoC"),c=n("CcnG"),l=n("SZbH"),d=function(){function t(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.queued=[],this.KEY="cdNotifications";var i=localStorage.getItem(this.KEY),s=[];a.isString(i)&&(s=JSON.parse(i,function(t,e){return a.isPlainObject(e)?a.assign(new o.a,e):e})),this.dataSource.next(s)}return t.prototype.removeAll=function(){localStorage.removeItem(this.KEY),this.dataSource.next([])},t.prototype.save=function(t){var e=this.dataSource.getValue();for(e.push(t);e.length>10;)e.shift();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))},t.prototype.show=function(t,e,n,r,i){var s=this;return window.setTimeout(function(){var u;u=a.isFunction(t)?t():a.isObject(t)?t:new o.b(t,e,n,r,i),s.queueToShow(u)},10)},t.prototype.queueToShow=function(t){var e=this;this.cancel(this.queuedTimeoutId),this.queued.find(function(e){return a.isEqual(e,t)})||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(function(){e.showQueued()},500)},t.prototype.showQueued=function(){var t=this;this.getUnifiedTitleQueue().forEach(function(e){var n=new o.a(e);t.save(n),t.showToasty(n)})},t.prototype.getUnifiedTitleQueue=function(){return Object.values(this.queueShiftByTitle()).map(function(t){var e=t[0];return t.length>1&&(e.message="<ul>"+t.map(function(t){return"<li>"+t.message+"</li>"}).join("")+"</ul>"),e})},t.prototype.queueShiftByTitle=function(){for(var t,e={};t=this.queued.shift();)e[t.title]||(e[t.title]=[]),e[t.title].push(t);return e},t.prototype.showToasty=function(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)},t.prototype.renderTimeAndApplicationHtml=function(t){return'<small class="date">'+this.cdDatePipe.transform(t.timestamp)+'</small><i class="pull-right custom-icon '+t.applicationClass+'" title="'+t.application+'"></i>'},t.prototype.notifyTask=function(t,e){var n;return void 0===e&&(e=!0),n=t.success&&e?new o.b(i.a.success,this.taskMessageService.getSuccessTitle(t)):new o.b(i.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),this.show(n)},t.prototype.cancel=function(t){window.clearTimeout(t)},t.prototype.suspendToasties=function(t){this.hideToasties=t},t.ngInjectableDef=c.defineInjectable({factory:function(){return new t(c.inject(l.j),c.inject(u.a),c.inject(s.a))},token:t,providedIn:"root"}),t}()},"9rRi":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","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\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 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\xecos",MM:"%d m\xecosan",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}})}()},"A+xa":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(t){return t+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(t)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(t)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}})}()},A5uo:function(t,e,n){"use strict";var a=n("K2E3");e=t.exports=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),Object.defineProperty(e.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(e.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},AQ68:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},ARl4:function(t,e,n){"use strict";n.d(e,"a",function(){return f}),n.d(e,"b",function(){return z}),n.d(e,"c",function(){return G}),n.d(e,"d",function(){return nt}),n.d(e,"e",function(){return V}),n.d(e,"f",function(){return m}),n.d(e,"g",function(){return ot}),n.d(e,"h",function(){return it}),n.d(e,"i",function(){return lt}),n.d(e,"j",function(){return st}),n.d(e,"k",function(){return ut}),n.d(e,"l",function(){return ct}),n.d(e,"B",function(){return H}),n.d(e,"C",function(){return rt}),n.d(e,"y",function(){return g}),n.d(e,"x",function(){return b}),n.d(e,"w",function(){return j}),n.d(e,"q",function(){return U}),n.d(e,"n",function(){return W}),n.d(e,"u",function(){return K}),n.d(e,"v",function(){return F}),n.d(e,"m",function(){return $}),n.d(e,"A",function(){return Y}),n.d(e,"o",function(){return X}),n.d(e,"z",function(){return B}),n.d(e,"r",function(){return J}),n.d(e,"s",function(){return Q}),n.d(e,"p",function(){return tt}),n.d(e,"t",function(){return et});var a=n("CcnG"),r=n("26FU"),i=n("mrSG"),o=n("VnD/"),s=n("67Y/"),u=n("lHUG"),c=n("MwfX"),l=n("lqqz"),d=(n("gIcY"),n("NJnL")),p=n("rpEJ"),f=function(){return function(){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"}}(),h=function(){function t(){this._customRangesFish=[]}return Object.defineProperty(t.prototype,"minDate",{set:function(t){this._effects.setMinDate(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxDate",{set:function(t){this._effects.setMaxDate(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"daysDisabled",{set:function(t){this._effects.setDaysDisabled(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isDisabled",{set:function(t){this._effects.setDisabled(t)},enumerable:!0,configurable:!0}),t.prototype.setViewMode=function(t){},t.prototype.navigateTo=function(t){},t.prototype.dayHoverHandler=function(t){},t.prototype.weekHoverHandler=function(t){},t.prototype.monthHoverHandler=function(t){},t.prototype.yearHoverHandler=function(t){},t.prototype.daySelectHandler=function(t){},t.prototype.monthSelectHandler=function(t){},t.prototype.yearSelectHandler=function(t){},t.prototype._stopPropagation=function(t){t.stopPropagation()},t}(),g=function(){function t(){}return t.prototype.calculate=function(){return{type:t.CALCULATE}},t.prototype.format=function(){return{type:t.FORMAT}},t.prototype.flag=function(){return{type:t.FLAG}},t.prototype.select=function(e){return{type:t.SELECT,payload:e}},t.prototype.changeViewMode=function(e){return{type:t.CHANGE_VIEWMODE,payload:e}},t.prototype.navigateTo=function(e){return{type:t.NAVIGATE_TO,payload:e}},t.prototype.navigateStep=function(e){return{type:t.NAVIGATE_OFFSET,payload:e}},t.prototype.setOptions=function(e){return{type:t.SET_OPTIONS,payload:e}},t.prototype.selectRange=function(e){return{type:t.SELECT_RANGE,payload:e}},t.prototype.hoverDay=function(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}},t.prototype.minDate=function(e){return{type:t.SET_MIN_DATE,payload:e}},t.prototype.maxDate=function(e){return{type:t.SET_MAX_DATE,payload:e}},t.prototype.daysDisabled=function(e){return{type:t.SET_DAYSDISABLED,payload:e}},t.prototype.isDisabled=function(e){return{type:t.SET_IS_DISABLED,payload:e}},t.prototype.setLocale=function(e){return{type:t.SET_LOCALE,payload:e}},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_IS_DISABLED="[datepicker] set is disabled",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t}(),m=function(){function t(){this._defaultLocale="en",this._locale=new r.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}return Object.defineProperty(t.prototype,"locale",{get:function(){return this._locale},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"localeChange",{get:function(){return this._localeChange},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentLocale",{get:function(){return this._locale.getValue()},enumerable:!0,configurable:!0}),t.prototype.use=function(t){t!==this.currentLocale&&this._locale.next(t)},t}(),b=function(){function t(t,e){this._actions=t,this._localeService=e,this._subs=[]}return t.prototype.init=function(t){return this._store=t,this},t.prototype.setValue=function(t){this._store.dispatch(this._actions.select(t))},t.prototype.setRangeValue=function(t){this._store.dispatch(this._actions.selectRange(t))},t.prototype.setMinDate=function(t){return this._store.dispatch(this._actions.minDate(t)),this},t.prototype.setMaxDate=function(t){return this._store.dispatch(this._actions.maxDate(t)),this},t.prototype.setDaysDisabled=function(t){return this._store.dispatch(this._actions.daysDisabled(t)),this},t.prototype.setDisabled=function(t){return this._store.dispatch(this._actions.isDisabled(t)),this},t.prototype.setOptions=function(t){var e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this},t.prototype.setBindings=function(t){return t.daysCalendar=this._store.select(function(t){return t.flaggedMonths}).pipe(Object(o.a)(function(t){return!!t})),t.monthsCalendar=this._store.select(function(t){return t.flaggedMonthsCalendar}).pipe(Object(o.a)(function(t){return!!t})),t.yearsCalendar=this._store.select(function(t){return t.yearsCalendarFlagged}).pipe(Object(o.a)(function(t){return!!t})),t.viewMode=this._store.select(function(t){return t.view.mode}),t.options=this._store.select(function(t){return t.showWeekNumbers}).pipe(Object(s.a)(function(t){return{showWeekNumbers:t}})),this},t.prototype.setEventHandlers=function(t){var e=this;return t.setViewMode=function(t){e._store.dispatch(e._actions.changeViewMode(t))},t.navigateTo=function(t){e._store.dispatch(e._actions.navigateStep(t.step))},t.dayHoverHandler=function(t){var n=t.cell;n.isOtherMonth||n.isDisabled||(e._store.dispatch(e._actions.hoverDay(t)),n.isHovered=t.isHovered)},t.monthHoverHandler=function(t){t.cell.isHovered=t.isHovered},t.yearHoverHandler=function(t){t.cell.isHovered=t.isHovered},t.monthSelectHandler=function(t){t.isDisabled||e._store.dispatch(e._actions.navigateTo({unit:{month:Object(u.l)(t.date),year:Object(u.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=function(t){t.isDisabled||e._store.dispatch(e._actions.navigateTo({unit:{year:Object(u.j)(t.date)},viewMode:"month"}))},this},t.prototype.registerDatepickerSideEffects=function(){var t=this;return this._subs.push(this._store.select(function(t){return t.view}).subscribe(function(e){t._store.dispatch(t._actions.calculate())})),this._subs.push(this._store.select(function(t){return t.monthsModel}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.format())})),this._subs.push(this._store.select(function(t){return t.formattedMonths}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.selectedDate}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.selectedRange}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.monthsCalendar}).subscribe(function(){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.yearsCalendarModel}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.hoveredDate}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._localeService.localeChange.subscribe(function(e){return t._store.dispatch(t._actions.setLocale(e))})),this},t.prototype.destroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t}(),y={date:new Date,mode:"day"},v=Object.assign(new f,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function x(t,e,n){var a=e&&Object(u.p)(Object(u.d)(t,"month"),e,"day"),r=n&&Object(u.n)(Object(u.F)(t,"month"),n,"day");return a||r}function _(t,e,n){var a=e&&Object(u.p)(Object(u.d)(t,"year"),e,"day"),r=n&&Object(u.n)(Object(u.F)(t,"year"),n,"day");return a||r}function T(t,e){for(var n=t.initialDate,a=new Array(t.height),r=0;r<t.height;r++){a[r]=new Array(t.width);for(var i=0;i<t.width;i++)a[r][i]=e(n),n=Object(u.E)(n,t.shift)}return a}function w(t){var e=Object(u.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return Object(i.__spread)(n.slice(a),n.slice(0,a))}function S(t,e){return!e||t>=e}var O=4,k=3,C={month:1};function I(t,e){var n=Object(u.F)(t,"year");return{months:T({width:k,height:O,initialDate:n,shift:C},function(t){return{date:t,label:Object(u.f)(t,e.monthLabel,e.locale)}}),monthTitle:"",yearTitle:Object(u.f)(t,e.yearTitle,e.locale)}}var R=4,N=4,D=R*N,A=-1*(Math.floor(D/2)-1),E={year:1};function L(t,e){var n=Object(u.E)(t,{year:A}),a=T({width:N,height:R,initialDate:n,shift:E},function(t){return{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[R-1][N-1].date,e.yearTitle,e.locale)}(a,e)}}function P(t,e){switch(void 0===t&&(t=v),e.type){case g.CALCULATE:return function(t){var e,n,a,r,i=t.displayMonths,o=t.view.date;if("day"===t.view.mode){t.monthViewOptions.firstDayOfWeek=Object(u.k)(t.locale).firstDayOfWeek();for(var s=new Array(i),c=0;c<i;c++)s[c]=(e=o,n=t.monthViewOptions,void 0,void 0,r=function(t,e){if(Object(u.t)(t,e.firstDayOfWeek))return t;var n=function(t,e){if(0===e)return t;var n=t-e%7;return n<0?n+7:n}(Object(u.h)(t),e.firstDayOfWeek);return Object(u.E)(t,{day:-n})}(a=Object(u.i)(e),n),{daysMatrix:T({width:n.width,height:n.height,initialDate:r,shift:{day:1}},function(t){return t}),month:a}),o=Object(u.E)(o,{month:1});return Object.assign({},t,{monthsModel:s})}if("month"===t.view.mode){for(var l=new Array(i),d=0;d<i;d++)l[d]=I(o,M(t)),o=Object(u.E)(o,{year:1});return Object.assign({},t,{monthsCalendar:l})}if("year"===t.view.mode){var p=new Array(i);for(d=0;d<i;d++)p[d]=L(o,M(t)),o=Object(u.E)(o,{year:D});return Object.assign({},t,{yearsCalendarModel:p})}return t}(t);case g.FORMAT:return function(t,e){if("day"===t.view.mode){var n=t.monthsModel.map(function(e,n){return 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(function(t){return t[0]?Object(u.f)(t[0],r,i):""})),weekdays:w(e.locale),weeks:t.daysMatrix.map(function(t,a){return{days:t.map(function(t,r){return{date:t,label:Object(u.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}})}})};var a,r,i}(e,M(t),n)});return Object.assign({},t,{formattedMonths:n})}var a=t.displayMonths,r=t.view.date;if("month"===t.view.mode){for(var i=new Array(a),o=0;o<a;o++)i[o]=I(r,M(t)),r=Object(u.E)(r,{year:1});return Object.assign({},t,{monthsCalendar:i})}if("year"===t.view.mode){var s=new Array(a);for(o=0;o<a;o++)s[o]=L(r,M(t)),r=Object(u.E)(r,{year:16});return Object.assign({},t,{yearsCalendarModel:s})}return t}(t);case g.FLAG:return function(t,e){if("day"===t.view.mode){var n=t.formattedMonths.map(function(e,n){return function(t,e){return t.weeks.forEach(function(n){n.days.forEach(function(a,r){var i,o,s,c=!Object(u.v)(a.date,t.month),l=!c&&Object(u.u)(a.date,e.hoveredDate),d=!c&&e.selectedRange&&Object(u.u)(a.date,e.selectedRange[0]),p=!c&&e.selectedRange&&Object(u.u)(a.date,e.selectedRange[1]),f=!c&&Object(u.u)(a.date,e.selectedDate)||d||p,h=!c&&e.selectedRange&&(o=e.selectedRange,s=e.hoveredDate,!(!(i=a.date)||!o[0])&&(o[1]?i>o[0]&&i<=o[1]:!!s&&i>o[0]&&i<=s)),g=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),m=new Date,b=!c&&Object(u.u)(a.date,m),y=Object.assign({},a,{isOtherMonth:c,isHovered:l,isSelected:f,isSelectionStart:d,isSelectionEnd:p,isInRange:h,isDisabled:g,isToday:b});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||(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.E)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=x(Object(u.E)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,monthIndex:n})});return Object.assign({},t,{flaggedMonths:n})}if("month"===t.view.mode){var a=t.monthsCalendar.map(function(e,n){return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach(function(t,e){t.forEach(function(t,n){var i=Object(u.v)(t.date,r.hoveredMonth),o=r.isDisabled||x(t.date,r.minDate,r.maxDate),s=Object.assign(t,{isHovered:i,isDisabled:o});t.isHovered===s.isHovered&&t.isDisabled===s.isDisabled||(a.months[e][n]=s)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=_(Object(u.E)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=_(Object(u.E)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:a})}if("year"===t.view.mode){var r=t.yearsCalendarModel.map(function(e,n){return function(t,e){t.years.forEach(function(n,a){n.forEach(function(n,r){var i=Object(u.w)(n.date,e.hoveredYear),o=e.isDisabled||_(n.date,e.minDate,e.maxDate),s=Object.assign(n,{isHovered:i,isDisabled:o});n.isHovered===s.isHovered&&n.isDisabled===s.isDisabled||(t.years[a][r]=s)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=_(Object(u.E)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);var n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=_(Object(u.E)(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,displayMonths:t.displayMonths,yearIndex:n})});return Object.assign({},t,{yearsCalendarFlagged:r})}return t}(t);case g.NAVIGATE_OFFSET:var n=Object(u.E)(Object(u.F)(t.view.date,"month"),e.payload),a={view:{mode:t.view.mode,date:n}};return Object.assign({},t,a);case g.NAVIGATE_TO:var r=e.payload,i=(n=Object(u.D)(t.view.date,r.unit),void(a=void 0));return a=S(r.viewMode,t.minMode)?{view:{date:n,mode:i=r.viewMode}}:{selectedDate:n,view:{date:n,mode:i=t.view.mode}},Object.assign({},t,a);case g.CHANGE_VIEWMODE:return S(e.payload,t.minMode)?(a={view:{date:n=t.view.date,mode:i=e.payload}},Object.assign({},t,a)):t;case g.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case g.SELECT:return a={selectedDate:e.payload,view:t.view},i=t.view.mode,n=q(e.payload||t.view.date,t.minDate,t.maxDate),a.view={mode:i,date:n},Object.assign({},t,a);case g.SET_OPTIONS:return i=(a=e.payload).minMode?a.minMode:t.view.mode,n=q(Object(u.r)(a.value)&&a.value||Object(u.o)(a.value)&&Object(u.r)(a.value[0])&&a.value[0]||t.view.date,a.minDate,a.maxDate),a.view={mode:i,date:n},a.value&&(Object(u.o)(a.value)&&(a.selectedRange=a.value),a.value instanceof Date&&(a.selectedDate=a.value)),Object.assign({},t,a);case g.SELECT_RANGE:return a={selectedRange:e.payload,view:t.view},i=t.view.mode,n=q(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate),a.view={mode:i,date:n},Object.assign({},t,a);case g.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case g.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case g.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});default:return t}}function M(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function q(t,e,n){var 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}var j=function(t){function e(){var e=new r.a({type:"[datepicker] dispatcher init"}),n=new c.a(v,e,P);return t.call(this,e,P,n)||this}return Object(i.__extends)(e,t),e}(c.b),F=function(t){function e(e,n,r,i){var o=t.call(this)||this;return o._config=e,o._store=n,o._actions=r,o.valueChange=new a.EventEmitter,o._subs=[],o._effects=i,o}return Object(i.__extends)(e,t),Object.defineProperty(e.prototype,"value",{set:function(t){this._effects.setValue(t)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var t=this;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(function(t){return t.selectedDate}).subscribe(function(e){return t.valueChange.emit(e)}))},e.prototype.daySelectHandler=function(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))},e.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._effects.destroy()},e}(h),z=function(){function t(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}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._datepicker.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bsValue",{set:function(t){this._bsValue!==t&&(this._bsValue=t,this.bsValueChange.emit(t))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:function(){return t.show()}}),this.setConfig()},t.prototype.ngOnChanges=function(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.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled))},t.prototype.show=function(){var t=this;this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:f,useValue:this._config}).attach(F).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(function(e){t._datepickerRef.instance.value=e})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(function(e){t.bsValue=e,t.hide()})))},t.prototype.hide=function(){this.isOpen&&this._datepicker.hide();try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.setConfig=function(){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,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})},t.prototype.ngOnDestroy=function(){this._datepicker.dispose()},t}(),G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(i.__extends)(e,t),e}(f),Y=function(t){function e(e,n,a,r){return t.call(this,e,n,a,r)||this}return Object(i.__extends)(e,t),e}(F),H=function(){function t(t,e,n,a,r){var i=this;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(function(t){i._setInputValue(t),i._value!==t&&(i._value=t,i._onChange(t),i._onTouched()),i.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(function(){i._setInputValue(i._value)})}return t.prototype._setInputValue=function(t){var e=t?Object(u.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)},t.prototype.onChange=function(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()},t.prototype.validate=function(t){var 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{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(u.n)(e,this._picker.maxDate,"date"))return{bsDate:{maxDate:this._picker.maxDate}}}},t.prototype.registerOnValidatorChange=function(t){this._validatorChange=t},t.prototype.writeValue=function(t){if(t){var 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.A)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale)}else this._value=null;this._picker.bsValue=this._value},t.prototype.setDisabledState=function(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")},t.prototype.registerOnChange=function(t){this._onChange=t},t.prototype.registerOnTouched=function(t){this._onTouched=t},t.prototype.onBlur=function(){this._onTouched()},t.prototype.hide=function(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()},t}(),V=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.displayMonths=2,e}return Object(i.__extends)(e,t),e}(f),B=function(t){function e(e,n,r,i){var o=t.call(this)||this;return o._config=e,o._store=n,o._actions=r,o.valueChange=new a.EventEmitter,o._rangeStack=[],o._subs=[],o._effects=i,o}return Object(i.__extends)(e,t),Object.defineProperty(e.prototype,"value",{set:function(t){this._effects.setRangeValue(t)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var t=this;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(function(t){return t.selectedRange}).subscribe(function(e){return t.valueChange.emit(e)}))},e.prototype.daySelectHandler=function(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=[]))},e.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._effects.destroy()},e}(h),U=function(){return function(){}}(),W=function(){return function(){}}(),K=function(){return function(){}}(),$=function(){function t(t,e,n){this._config=t,this._elRef=e,this._renderer=n}return t.prototype.ngOnInit=function(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass)},t}(),Z=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}(),X=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}return t.prototype.navTo=function(t){this.onNavigate.emit(t?Z.DOWN:Z.UP)},t.prototype.view=function(t){this.onViewMode.emit(t)},t}(),J=function(){function t(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}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{month:Z.DOWN===t?-1:1}})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t.prototype.selectDay=function(t){this.onSelect.emit(t)},t.prototype.selectWeek=function(t){var e=this;if(this._config.selectWeek)if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)this.onSelect.emit(t.days[0]);else if(0!==t.days.length){var n=t.days.find(function(t){return e._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled});this.onSelect.emit(n)}},t.prototype.weekHoverHandler=function(t,e){var n=this;this._config.selectWeek&&t.days.find(function(t){return n._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled})&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))},t.prototype.hoverDay=function(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})},t}(),Q=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{year:Z.DOWN===t?-1:1}})},t.prototype.viewMonth=function(t){this.onSelect.emit(t)},t.prototype.hoverMonth=function(t,e){this.onHover.emit({cell:t,isHovered:e})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t}(),tt=function(){return function(){this.ampm="ok",this.hours=0,this.minutes=0}}(),et=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{year:(Z.DOWN===t?-1:1)*D}})},t.prototype.viewYear=function(t){this.onSelect.emit(t)},t.prototype.hoverYear=function(t,e){this.onHover.emit({cell:t,isHovered:e})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t}(),nt=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[l.a,d.a,j,g,f,V,G,b,m]}},t}(),at=function(){function t(){}return t.prototype.format=function(t,e,n){return Object(u.f)(t,e,n)},t}(),rt=function(){function t(){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}return Object.defineProperty(t.prototype,"activeDate",{get:function(){return this._activeDate},set:function(t){this._activeDate=t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){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)},t.prototype.ngOnChanges=function(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)},t.prototype.checkIfActiveDateGotUpdated=function(t){if(t&&!t.firstChange){var e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}},t.prototype.setCompareHandler=function(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)},t.prototype.compare=function(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},t.prototype.setRefreshViewHandler=function(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)},t.prototype.refreshView=function(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()},t.prototype.dateFilter=function(t,e){return this.dateFormatter.format(t,e,this.locale)},t.prototype.isActive=function(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)},t.prototype.createDateObject=function(t,e){var 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},t.prototype.split=function(t,e){for(var n=[];t.length>0;)n.push(t.splice(0,e));return n},t.prototype.fixTimeZone=function(t){var e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)},t.prototype.select=function(t,e){void 0===e&&(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()},t.prototype.move=function(t){var e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){var 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)}},t.prototype.toggleMode=function(t){var 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())},t.prototype.getCustomClassForDate=function(t){var e=this;if(!this.customClass)return"";var n=this.customClass.find(function(n){return n.date.valueOf()===t.valueOf()&&n.mode===e.datepickerMode},this);return void 0===n?"":n.clazz},t.prototype.compareDateDisabled=function(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},t.prototype.isDisabled=function(t){var e=this,n=!1;return this.dateDisabled&&this.dateDisabled.forEach(function(a){0===e.compareDateDisabled(a,t)&&(n=!0)}),this.dayDisabled&&(n=n||this.dayDisabled.indexOf(t.getDay())>-1),n||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0},t}(),it=function(){return function(){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}}(),ot=function(){function t(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()}return Object.defineProperty(t.prototype,"activeDate",{get:function(){return this._activeDate||this._now},set:function(t){this._activeDate=t},enumerable:!0,configurable:!0}),t.prototype.configureOptions=function(){Object.assign(this,this.config)},t.prototype.onUpdate=function(t){this.activeDate=t,this.onChange(t)},t.prototype.onSelectionDone=function(t){this.selectionDone.emit(t)},t.prototype.onActiveDateChange=function(t){this.activeDateChange.emit(t)},t.prototype.writeValue=function(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)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t}(),st=function(){function t(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(p.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler(function(){var 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,o=new Date(a.getTime());i>0&&o.setDate(1-i);for(var s=t.getDates(o,42),u=[],c=0;c<42;c++){var l=this.createDateObject(s[c],this.formatDay);l.secondary=s[c].getMonth()!==n,l.uid=this.uniqueId+"-"+c,u[c]=l}t.labels=[];for(var d=0;d<7;d++)t.labels[d]={},t.labels[d].abbr=this.dateFilter(u[d].date,this.formatDayHeader),t.labels[d].full=this.dateFilter(u[d].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(u,7),this.showWeeks){t.weekNumbers=[];for(var p=(11-this.startingDay)%7,f=t.rows.length,h=0;h<f;h++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[h][p].date))}},"day"),this.datePicker.setCompareHandler(function(t,e){var 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()},t.prototype.getDates=function(t,e){for(var n,a=new Array(e),r=new Date(t.getTime()),i=0;i<e;)n=new Date(r.getTime()),n=this.datePicker.fixTimeZone(n),a[i++]=n,r=new Date(n.getFullYear(),n.getMonth(),n.getDate()+1);return a},t.prototype.getISO8601WeekNumber=function(t){var e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));var n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1},t}(),ut=function(){function t(t){this.rows=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(p.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler(function(){for(var e,n=new Array(12),a=this.activeDate.getFullYear(),r=0;r<12;r++)e=new Date(a,r,1),e=this.fixTimeZone(e),n[r]=this.createDateObject(e,this.formatMonth),n[r].uid=this.uniqueId+"-"+r;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(n,t.datePicker.monthColLimit)},"month"),this.datePicker.setCompareHandler(function(t,e){var n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()},"month"),this.datePicker.refreshView()},t}(),ct=function(){function t(t){this.rows=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(p.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler(function(){for(var e,n=new Array(this.yearRange),a=t.getStartingYear(this.activeDate.getFullYear()),r=0;r<this.yearRange;r++)e=new Date(a+r,0,1),e=this.fixTimeZone(e),n[r]=this.createDateObject(e,this.formatYear),n[r].uid=this.uniqueId+"-"+r;t.title=[n[0].label,n[this.yearRange-1].label].join(" - "),t.rows=this.split(n,t.datePicker.yearColLimit)},"year"),this.datePicker.setCompareHandler(function(t,e){return t.getFullYear()-e.getFullYear()},"year"),this.datePicker.refreshView()},t.prototype.getStartingYear=function(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1},t}(),lt=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[it]}},t}()},AWcq:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("yJti"),r=function(){function t(){this.vcs=a.a}return t.prototype.ngOnInit=function(){},t}()},AX6q:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("fELs"),s=i.noop;function u(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}a._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,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return i.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:i.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 c=r.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,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:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=i.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:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.labels,r=e.display,o=t.ctx,s=a.global,c=i.valueOrDefault,l=c(n.fontSize,s.defaultFontSize),d=c(n.fontStyle,s.defaultFontStyle),p=c(n.fontFamily,s.defaultFontFamily),f=i.fontString(l,d,p),h=t.legendHitBoxes=[],g=t.minSize,m=t.isHorizontal();if(m?(g.width=t.maxWidth,g.height=r?10:0):(g.width=r?10:0,g.height=t.maxHeight),r)if(o.font=f,m){var b=t.lineWidths=[0],y=t.legendItems.length?l+n.padding:0;o.textAlign="left",o.textBaseline="top",i.each(t.legendItems,function(e,a){var r=u(n,l)+l/2+o.measureText(e.text).width;b[b.length-1]+r+n.padding>=t.width&&(y+=l+n.padding,b[b.length]=t.left),h[a]={left:0,top:0,width:r,height:l},b[b.length-1]+=r+n.padding}),g.height+=y}else{var v=n.padding,x=t.columnWidths=[],_=n.padding,T=0,w=0,S=l+v;i.each(t.legendItems,function(t,e){var a=u(n,l)+l/2+o.measureText(t.text).width;w+S>g.height&&(_+=T+n.padding,x.push(T),T=0,w=0),T=Math.max(T,a),w+=S,h[e]={left:0,top:0,width:a,height:l}}),_+=T,x.push(T),g.width+=_}t.width=g.width,t.height=g.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,r=a.global,o=r.elements.line,s=t.width,c=t.lineWidths;if(e.display){var l,d=t.ctx,p=i.valueOrDefault,f=p(n.fontColor,r.defaultFontColor),h=p(n.fontSize,r.defaultFontSize),g=p(n.fontStyle,r.defaultFontStyle),m=p(n.fontFamily,r.defaultFontFamily),b=i.fontString(h,g,m);d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=f,d.fillStyle=f,d.font=b;var y=u(n,h),v=t.legendHitBoxes,x=t.isHorizontal();l=x?{x:t.left+(s-c[0])/2,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var _=h+n.padding;i.each(t.legendItems,function(a,u){var f=d.measureText(a.text).width,g=y+h/2+f,m=l.x,b=l.y;x?m+g>=s&&(b=l.y+=_,l.line++,m=l.x=t.left+(s-c[l.line])/2):b+_>t.bottom&&(m=l.x=m+t.columnWidths[l.line]+n.padding,b=l.y=t.top+n.padding,l.line++),function(t,n,a){if(!(isNaN(y)||y<=0)){d.save(),d.fillStyle=p(a.fillStyle,r.defaultColor),d.lineCap=p(a.lineCap,o.borderCapStyle),d.lineDashOffset=p(a.lineDashOffset,o.borderDashOffset),d.lineJoin=p(a.lineJoin,o.borderJoinStyle),d.lineWidth=p(a.lineWidth,o.borderWidth),d.strokeStyle=p(a.strokeStyle,r.defaultColor);var s=0===p(a.lineWidth,o.borderWidth);if(d.setLineDash&&d.setLineDash(p(a.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var u=h*Math.SQRT2/2,c=u/Math.SQRT2;i.canvas.drawPoint(d,a.pointStyle,u,t+c,n+c)}else s||d.strokeRect(t,n,y,h),d.fillRect(t,n,y,h);d.restore()}}(m,b,a),v[u].left=m,v[u].top=b,function(t,e,n,a){var r=h/2,i=y+r+t,o=e+r;d.fillText(n.text,i,o),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(i,o),d.lineTo(i+a,o),d.stroke())}(m,b,a,f),x?l.x+=g+n.padding:l.y+=_})}},handleEvent:function(t){var e=this,n=e.options,a="mouseup"===t.type?"click":t.type,r=!1;if("mousemove"===a){if(!n.onHover)return}else{if("click"!==a)return;if(!n.onClick)return}var i=t.x,o=t.y;if(i>=e.left&&i<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,u=0;u<s.length;++u){var c=s[u];if(i>=c.left&&i<=c.left+c.width&&o>=c.top&&o<=c.top+c.height){if("click"===a){n.onClick.call(e,t.native,e.legendItems[u]),r=!0;break}if("mousemove"===a){n.onHover.call(e,t.native,e.legendItems[u]),r=!0;break}}}return r}});function l(t,e){var n=new c({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.legend=n}t.exports={id:"legend",_element:c,beforeInit:function(t){var e=t.options.legend;e&&l(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(i.mergeIf(e,a.global.legend),n?(o.configure(t,n,e),n.options=e):l(t,e)):n&&(o.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},Ahxa:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("lUjN");e.DataTableFooterComponent=function(){function t(){this.selectedCount=0,this.page=new i.EventEmitter}return Object.defineProperty(t.prototype,"isVisible",{get:function(){return this.rowCount/this.pageSize>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"curPage",{get:function(){return this.offset+1},enumerable:!0,configurable:!0}),a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowCount",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"pageSize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offset",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",o.DatatableFooterDirective)],t.prototype,"footerTemplate",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"selectedCount",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Component({selector:"datatable-footer",template:'\n    <div\n      class="datatable-footer-inner"\n      [ngClass]="{\'selected-count\': selectedMessage}"\n      [style.height.px]="footerHeight">\n      <ng-template\n        *ngIf="footerTemplate"\n        [ngTemplateOutlet]="footerTemplate.template"\n        [ngTemplateOutletContext]="{ \n          rowCount: rowCount, \n          pageSize: pageSize, \n          selectedCount: selectedCount,\n          curPage: curPage,\n          offset: offset\n        }">\n      </ng-template>\n      <div class="page-count" *ngIf="!footerTemplate">\n        <span *ngIf="selectedMessage">\n          {{selectedCount?.toLocaleString()}} {{selectedMessage}} / \n        </span>\n        {{rowCount?.toLocaleString()}} {{totalMessage}}\n      </div>\n      <datatable-pager *ngIf="!footerTemplate"\n        [pagerLeftArrowIcon]="pagerLeftArrowIcon"\n        [pagerRightArrowIcon]="pagerRightArrowIcon"\n        [pagerPreviousIcon]="pagerPreviousIcon"\n        [pagerNextIcon]="pagerNextIcon"\n        [page]="curPage"\n        [size]="pageSize"\n        [count]="rowCount"\n        [hidden]="!isVisible"\n        (change)="page.emit($event)">\n      </datatable-pager>\n    </div>\n  ',host:{class:"datatable-footer"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},AqeW:function(t,e,n){"use strict";function a(t,e){for(var n,a,r,i=[],o=[];(n=document.elementFromPoint(t,e))&&-1===i.indexOf(n)&&null!=n;)i.push(n),o.push({value:n.style.getPropertyValue("pointer-events"),priority:n.style.getPropertyPriority("pointer-events")}),n.style.setProperty("pointer-events","none","important");for(a=o.length;r=o[--a];)i[a].style.setProperty("pointer-events",r.value?r.value:"",r.priority);return i}Object.defineProperty(e,"__esModule",{value:!0}),"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=a),e.elementsFromPoint=a},As3K:function(t,e,n){"use strict";var a=n("TC34");t.exports={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,r,i;return a.isObject(t)?(e=+t.top||0,n=+t.right||0,r=+t.bottom||0,i=+t.left||0):e=n=r=i=+t||0,{top:e,right:n,bottom:r,left:i,height:e+r,width:i+n}},resolve:function(t,e,n){var r,i,o;for(r=0,i=t.length;r<i;++r)if(void 0!==(o=t[r])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==n&&a.isArray(o)&&(o=o[n]),void 0!==o))return o}}},Avrn:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("aexS"),r=n("CcnG"),i=n("ZYCi"),o=function(){function t(t,e){this.router=t,this.authStorageService=e}return t.prototype.canActivate=function(){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"]),!1)},t.prototype.canActivateChild=function(){return this.canActivate()},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(i.l),r.inject(a.a))},token:t,providedIn:"root"}),t}()},AvvY:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===e&&t>=4||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===e||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":t<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":t<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":t<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}})}()},AxiF:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("b7mW"),o=n("G5J1");function s(t){return function(e){return 0===t?Object(o.b)():e.lift(new u(t))}}var u=function(){function t(t){if(this.total=t,this.total<0)throw new i.a}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.total))},t}(),c=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.ring=new Array,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t},e.prototype._complete=function(){var t=this.destination,e=this.count;if(e>0)for(var n=this.count>=this.total?this.total:this.count,a=this.ring,r=0;r<n;r++){var i=e++%n;t.next(a[i])}t.complete()},e}(r.a)},B55N:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ja",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(t){return"\u5348\u5f8c"===t},meridiem:function(t,e,n){return t<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(t){return t.week()<this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(t){return this.week()<t.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";default:return t}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}()},BARL:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG"),i=n("DtyJ");e.ColumnChangesService=function(){function t(){this.columnInputChanges=new i.Subject}return Object.defineProperty(t.prototype,"columnInputChanges$",{get:function(){return this.columnInputChanges.asObservable()},enumerable:!0,configurable:!0}),t.prototype.onInputChange=function(){this.columnInputChanges.next()},a([r.Injectable()],t)}()},BQkM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t+" IOPS"},t}()},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function a(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return e(t)?i+(n||r?"sek\xfandur":"sek\xfandum"):i+"sek\xfanda";case"m":return n?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return e(t)?i+(n||r?"m\xedn\xfatur":"m\xedn\xfatum"):n?i+"m\xedn\xfata":i+"m\xedn\xfatu";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\xf6gum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"m\xe1nu\xf0ur":r?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return e(t)?n?i+"m\xe1nu\xf0ir":i+(r?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):n?i+"m\xe1nu\xf0ur":i+(r?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return n||r?"\xe1r":"\xe1ri";case"yy":return e(t)?i+(n||r?"\xe1r":"\xe1rum"):i+(n||r?"\xe1r":"\xe1ri")}}n("wd/R").defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_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:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:a,ss:a,m:a,mm:a,h:"klukkustund",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}})}()},"BY/9":function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Warnungen</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\xfcr\n          <x id="START_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\xfcr \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\xfcr\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\xfcfen Sie die Clusterintegrit\xe4t.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zur\xfcck</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache ausw\xe4hlen</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 \xdcberwachungsfunktion.\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\xfcgt 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\xfcr Zur\xfccksetzungen</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="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgew\xe4hlt</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</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 \xc4nderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</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\xe4tigen</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="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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</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="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \'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\xe4ndert.</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="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="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzuf\xfcgen</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\xe4ndert.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Mindestens 1 Image ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzuf\xfcgen</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</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\xfcssen zwischen 8 und 64 Zeichen lang sein und\n                        d\xfcrfen 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="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="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator geh\xf6rt 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\xfcgt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzuf\xfcgen</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzuf\xfcgen</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="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\xe4hlten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> m\xf6chten?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</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\xfcssen zwischen 8 und 64 Zeichen lang sein und\n              d\xfcrfen 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\xfcr iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verf\xfcgbare 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\xfcgbar</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zul\xe4ssig.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool ausw\xe4hlen --</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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Gr\xf6\xdfe</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie m\xfcssen die Gr\xf6\xdfe erh\xf6hen.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgr\xf6\xdfe</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\xe4hlen --</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\xf6\xdfer als die Objektgr\xf6\xdfe.</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\xf6\xdfer als 0 sein.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</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="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>Lange 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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</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="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 gro\xdf! Er darf nicht gr\xf6\xdfer 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 klein! 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-Zuordnungsanzeige</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="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Eintr\xe4ge 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="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\xfcltiger 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\xfcltige 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 gro\xdf! 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 klein! Er muss gr\xf6\xdfer 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>Aktualisieren</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\xe4ndert</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 \xdcberwachung</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorit\xe4t</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe4t</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Priorit\xe4tswerte 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 gro\xdf! Er darf nicht gr\xf6\xdfer 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 klein! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>OSD neu gewichten</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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Sie sind dabei, einen \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub auf\n            das OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> anzuwenden.\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> wird markiert als\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>"/>, wenn Sie den Vorgang fortsetzen.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Es ist nicht sicher, das OSD zu vernichten!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> wird\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>"/> , wenn Sie den Vorgang fortsetzen.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrit\xe4t</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\xfcr 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS-Export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzuf\xfcgen</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="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End ausw\xe4hlen --</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\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer ausw\xe4hlen --</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\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client ausw\xe4hlen --</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="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\xfcr \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\xfcrfen keinen f\xfchrenden / 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\xf6nnen Unterverzeichnisse m\xf6glicherweise nicht mounten (d. h. wenn das Tag = foo, kann der Client foo/baz m\xf6glicherweise 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 Tagoptionen verwendet werden, wird derselbe Pfad m\xf6glicherweise 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\xf6glicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verf\xfcgbar --</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\xfchrende Benutzer-ID-Squashing-Art ausw\xe4hlen --</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="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\xe4hlte L\xf6schcode-Profilname wird bereits verwendet.</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\xf6cke (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\xf6\xdfer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenbl\xf6cke f\xfcr 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\xf6\xdfer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitssch\xe4tzung (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\xe4ne</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\xf6\xdfe</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\xe4teklasse</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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzuf\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schlie\xdfen</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\xe4hlte Poolname wird bereits verwendet.</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\xe4hlen --</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\xf6tigt.</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\xf6tigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Sie k\xf6nnen nur die Anzahl der Platzierungsgruppen eines vorhandenen Pools erh\xf6hen.\n                Derzeit hat Ihr Pool \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> Platzierungsgruppen.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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\xfcr die Platzierungsgruppen wurden f\xfcr Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel ausw\xe4hlen --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Die Regel kann im aktuellen Cluster nicht verwendet werden,\n                da es zu wenige OSDs enth\xe4lt, um das von dieser Regel geforderte OSD-Minimum zu erf\xfcllen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Gr\xf6\xdfe</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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\xf6\xdfe liegt au\xdferhalb des Bereichs. G\xfcltige 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="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>L\xf6schcode-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein L\xf6schcode-Profil verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- L\xf6schcode-Profil ausw\xe4hlen --</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-\xdcberschreibungen</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="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 L\xf6schkomprimierungsalgorithmus verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgr\xf6\xdfe</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\xf6\xdfer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgr\xf6\xdfe</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\xf6\xdfer als die minimale Blobgr\xf6\xdfe sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verh\xe4ltnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverh\xe4ltnis</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Es ist nicht m\xf6glich, einen RBD-Pool mit \'/\' im Namen zu erstellen.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\xc4ndern Sie den Namen oder entfernen Sie \'rbd\' aus der Anwendungsliste.</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="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\xfcr das Objektgateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Die Bucket-Daten konnten nicht geladen werden.</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\xfcltig.</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\xe4hlte 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\xe4hlen --</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="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\xe4hlen --</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\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schl\xfcssel</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\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schl\xfcssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschl\xfcssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schl\xfcssel</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\xe4hlte 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\xfcssel</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\xe4hlte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollst\xe4ndiger 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="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine g\xfcltige 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\xe4hlte 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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>L\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schl\xfcssel</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\xfcssel vorhanden.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Bef\xe4higungen</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Bef\xe4higungen vorhanden.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Gr\xf6\xdfe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Gr\xf6\xdfe</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</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="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="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\xfcck. Sie werden vom Identit\xe4tsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort best\xe4tigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbest\xe4tigung stimmt nicht mit dem Passwort \xfcberein.</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\xfcltige E-Mail-Adresse.</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="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\xfcr 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\xf6nnen Sie Benutzerrollen nicht mehr hinzuf\xfcgen 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\xf6chten Sie den Vorgang wirklich fortsetzen?</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\xfcnschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Leider konnte der gew\xfcnschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Alle l\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Neue Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Keine Hintergrundaufgaben vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Hintergrundaufgaben</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>\xdcber</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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</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\xfcr 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>\xc4nderungszeit</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Gr\xf6\xdfe</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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Nein} 1 {Ja} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verf\xfcgbar</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</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="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 \xfcbergeordnete Konfigurationswert \xfcbernommen 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="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\xfcgbar</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="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\xfcgbar: \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>Schreibvorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesevorg\xe4nge</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="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\xe4nge</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\xe4t</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="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\xe4t</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="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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Um \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> in den Papierkorb zu verschieben,\n          klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Image verschieben\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optional k\xf6nnen Sie ein Ablaufdatum ausw\xe4hlen.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz l\xe4uft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCH\xdcTZT</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\xe4hlen Sie ein k\xfcnftiges 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="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\xdcbersicht</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="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\xfcr RBD-Images verf\xfcgbar, 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="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="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>\xdcbergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Pr\xe4fix f\xfcr 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="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung \xfcberschreibt den globalen Wert</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\xfcr diese Option wurde f\xfcr dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD-Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Umbenennen} other {Erstellen} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>GESCH\xdcTZT</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCH\xdcTZT</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\xfchren</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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Zum Bereinigen ein oder alle Images ausw\xe4hlen und klicken</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</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\xfctzt 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\xfctzt 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="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\xfcr Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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\xe4hlen Sie zum Bearbeiten des Spiegelungsmodus f\xfcr den Pool\xa0\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\xa0\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\xfcssen 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\xfcr 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\xfcgen} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> Der Pool\n          Spiegeln Sie Peer-Attribute f\xfcr 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>"/> und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Absenden\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\xfcltig.</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\xfcltig.</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\xfcltig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schl\xfcssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schl\xfcssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schl\xfcssel muss base64-codiert sein.</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="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>R\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xfcgbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verf\xfcgbar.</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\xfcgbar. F\xfcgen 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\xfcgen. F\xfcgen Sie dem Ziel einen Initiator hinzu.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes f\xfcr Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorg\xe4nge</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</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\xfcgen</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\xf6schen</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\xfcssel</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="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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (erfordert Objektzuordnung)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstellen</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Sch\xfctzen</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback f\xfcr RBD-Snapshot</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gel\xf6scht 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="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\xe4t</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</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\xe4ssig, diese Option \xfcber \'ceph config\n      set ...\' festzulegen. Diese Option sollte \xfcber \'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\xe4hrend 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 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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualisierte Optionen f\xfcr Modul &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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>\xd6ffentliche 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="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\xfcrfen 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\xe4lt Lese- und Schreibvorg\xe4nge 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="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\xf6schvorg\xe4nge 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\xfchrte L\xf6schvorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit f\xfcr 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\xfcr die Platzierungsgruppen-Protokolll\xe4nge 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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</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="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\xfcr Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorg\xe4nge</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="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\xe4t</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualisierte OSD-Wiederherstellungsgeschwindigkeits-Priorit\xe4t &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> wurde im folgenden OSD initialisiert: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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 \xfcbernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration \xfcbernommen</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\xfchrende Benutzer-ID-Squashing-Art ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verf\xfcgbar.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</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\xfcr Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter f\xfcr Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes f\xfcr Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte f\xfcr Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugef\xfcgt</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\xe4ssige 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\xe4nge betr\xe4gt 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzuf\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>L\xf6schcode-Profil</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Gr\xf6\xdfe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte \xc4nderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil mit L\xf6schcodierung</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aktualisierter Objektgateway-Bucket &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Erstellter Objektgateway-Bucket &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</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>Aktualisierter Objektgatewaybenutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Erstellter Objektgatewaybenutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Erstellte Rolle \'\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>Aktualisierte Rolle \'\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>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>Gel\xf6schte Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Erstellter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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\xe4ndert 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>Aktualisierter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Gel\xf6schter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Fehler beim L\xf6schen des Benutzers &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Sie sind derzeit angemeldet als &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\xf6cke 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\xf6cke f\xfcr jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenbl\xf6cke entspricht auch der Anzahl der OSDs, die ausfallen k\xf6nnen, 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\xfcr Ceph-Pools mit L\xf6schcodierung.</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\xfcssen jedoch die Paketgr\xf6\xdfe sorgf\xe4ltig\n          ausw\xe4hlen. S\xe4mtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorg\xe4nge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden k\xf6nnen.</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\xfcr Pakete auf Bytes-Gr\xf6\xdfe vorgenommen.\n          Die Auswahl der richtigen Paketgr\xf6\xdfe ist schwierig.\n          In der Jerasure-Dokumentation sind ausf\xfchrliche 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\xf6schcodierung auf mehreren OSDs gespeichert ist,\n          m\xfcssen 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\xfcssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-L\xf6schcode-Modul erstellt lokale Parit\xe4tsdatenbl\xf6cke, um die Wiederherstellung mit weniger OSDs auszuf\xfchren.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zus\xe4tzlicher Parit\xe4tsdatenblock f\xfcr 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\xf6cke in S\xe4tze entsprechend dem Speicherort.\n          Beispielsweise werden f\xfcr \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenbl\xf6cke 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\xf6cken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenbl\xf6cken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise f\xfcr einen Schritt zum Ausw\xe4hlen 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\xfchrt.</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\xe4tsdatenbl\xf6cke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enth\xe4lt.\n          Die Anzahl wird als eine Dauerhaftigkeitssch\xe4tzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          k\xf6nnen 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\xfcr 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\xf6cke in einem Bucket mit derselben Ausfalldom\xe4ne befinden.\n      Wenn die Ausfalldom\xe4ne beispielsweise als Host fungiert, werden keine zwei Datenbl\xf6cke 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\xe4nken Sie mithilfe der Klassennamen f\xfcr Crush-Ger\xe4te in der CRUSH-Zuordnung die Platzierung\n      auf Ger\xe4te 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, \xfcber den das L\xf6schcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>L\xe4sst alle Vorg\xe4nge 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\xe4sst nur Vorg\xe4nge zu, die den Server nicht \xe4ndern</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\xe4sst weder Lese- noch Schreibvorg\xe4nge zu, jedoch alle anderen Vorg\xe4nge</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\xe4sst Lese-/Schreibvorg\xe4nge und andere Vorg\xe4nge nicht zu, die Dateiattribute oder Verzeichnisinhalte \xe4ndern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>L\xe4sst \xfcberhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorit\xe4t ausw\xe4hlen --</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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgew\xe4hlt.</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\xe4hlen 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verf\xfcgbar.</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="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\xfcnschte 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\xfcnschte Limit der E/A-Vorg\xe4nge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit f\xfcr Lesevorg\xe4nge</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\xfcnschte 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\xfcr Lesevorg\xe4nge</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\xfcnschte Limit f\xfcr Lesevorg\xe4nge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit f\xfcr Schreibvorg\xe4nge</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\xfcnschte 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\xfcr Schreibvorg\xe4nge</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\xfcnschte Limit f\xfcr Schreibvorg\xe4nge 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\xfcnschte 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\xfcnschte Blocklimit der E/A-Vorg\xe4nge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block f\xfcr Lesevorg\xe4nge</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\xfcnschte 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\xfcr Lesevorg\xe4nge</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\xfcnschte Blocklimit der Lesevorg\xe4nge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block f\xfcr Schreibvorg\xe4nge</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\xfcnschte 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\xfcr Schreibvorg\xe4nge</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\xfcnschte Blocklimit der Schreibvorg\xe4nge.</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>Fehler bei \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\xfchrt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausf\xfchren</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgef\xfchrt</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gel\xf6scht</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>l\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gel\xf6scht</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="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus f\xfcr 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>Peer f\xfcr Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' spiegeln\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="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\xe4lt 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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</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\xfctzt 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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</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 enthaltener 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>Kann \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> nicht l\xf6schen, da es gesch\xfctzt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgef\xfchrt</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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgef\xfchrt</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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</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\xe4lt.</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>L\xf6schcode-Profil \'\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>'},ByF4:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fo",{months:"januar_februar_mars_apr\xedl_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\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_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:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},C6Ij:function(t,e,n){"use strict";var a=n("CcnG"),r=n("TZo1"),i=n("9Kw/"),o=n("Jm/i"),s=n("Ip0R"),u=n("xbqr"),c=n("9GXa"),l=n("M/6F"),d=n("NDi4");n("AWcq"),n.d(e,"a",function(){return p}),n.d(e,"b",function(){return v});var p=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-info-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[o.a],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Retrieving data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[". Please wait..."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-warning-panel",[],null,null,null,u.b,u.a)),a["\u0275did"](1,49152,null,0,c.a,[],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Displaying previously cached data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,["."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-error-panel",[],null,null,null,l.b,l.a)),a["\u0275did"](1,49152,null,0,d.a,[],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Could not load data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[". Please check the cluster health."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](1,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](3,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](5,16384,null,0,s.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)}},CDJp:function(t,e,n){"use strict";var a=n("RDha");t.exports={_set:function(t,e){return a.merge(this[t]||(this[t]={}),e)}}},CS9Q:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("siIJ"),i=function(t){function e(n,a){void 0===a&&(a=r.a.now);var i=t.call(this,n,function(){return e.delegate&&e.delegate!==i?e.delegate.now():a()})||this;return i.actions=[],i.active=!1,i.scheduled=void 0,i}return a.__extends(e,t),e.prototype.schedule=function(n,a,r){return void 0===a&&(a=0),e.delegate&&e.delegate!==this?e.delegate.schedule(n,a,r):t.prototype.schedule.call(this,n,a,r)},e.prototype.flush=function(t){var e=this.actions;if(this.active)e.push(t);else{var 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}}},e}(r.a)},CVuo:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=function(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()})},e.deCamelCase=function(t){return t.replace(/([A-Z])/g,function(t){return" "+t}).replace(/^./,function(t){return t.toUpperCase()})}},Cc8h:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=n("ahDk");n("czA5"),e.LongPressDirective=function(){function t(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new i.EventEmitter,this.longPressing=new i.EventEmitter,this.longPressEnd=new i.EventEmitter,this.mouseX=0,this.mouseY=0}return Object.defineProperty(t.prototype,"press",{get:function(){return this.pressing},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLongPress",{get:function(){return this.isLongPressing},enumerable:!0,configurable:!0}),t.prototype.onMouseDown=function(t){var e=this;if(1===t.which&&this.pressEnabled&&!t.target.classList.contains("resize-handle")){this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;var n=o.fromEvent(document,"mouseup");this.subscription=n.subscribe(function(t){return e.onMouseup()}),this.timeout=setTimeout(function(){e.isLongPressing=!0,e.longPressStart.emit({event:t,model:e.pressModel}),e.subscription.add(o.fromEvent(document,"mousemove").pipe(s.takeUntil(n)).subscribe(function(t){return e.onMouseMove(t)})),e.loop(t)},this.duration),this.loop(t)}},t.prototype.onMouseMove=function(t){if(this.pressing&&!this.isLongPressing){var e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}},t.prototype.loop=function(t){var e=this;this.isLongPressing&&(this.timeout=setTimeout(function(){e.longPressing.emit({event:t,model:e.pressModel}),e.loop(t)},50))},t.prototype.endPress=function(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})},t.prototype.onMouseup=function(){this.endPress()},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"pressEnabled",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pressModel",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"duration",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressing",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressEnd",void 0),a([i.HostBinding("class.press"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"press",null),a([i.HostBinding("class.longpress"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isLongPress",null),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseDown",null),a([i.Directive({selector:"[long-press]"})],t)}()},CcnG:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_core_core_t",function(){return Xh}),n.d(e,"\u0275angular_packages_core_core_q",function(){return Kh}),n.d(e,"\u0275angular_packages_core_core_r",function(){return $h}),n.d(e,"\u0275angular_packages_core_core_s",function(){return Zh}),n.d(e,"\u0275angular_packages_core_core_h",function(){return $p}),n.d(e,"\u0275angular_packages_core_core_o",function(){return Ih}),n.d(e,"\u0275angular_packages_core_core_p",function(){return Ph}),n.d(e,"\u0275angular_packages_core_core_n",function(){return gh}),n.d(e,"\u0275angular_packages_core_core_m",function(){return hh}),n.d(e,"\u0275angular_packages_core_core_c",function(){return fs}),n.d(e,"\u0275angular_packages_core_core_d",function(){return De}),n.d(e,"\u0275angular_packages_core_core_e",function(){return Hp}),n.d(e,"\u0275angular_packages_core_core_f",function(){return Dp}),n.d(e,"\u0275angular_packages_core_core_g",function(){return qp}),n.d(e,"\u0275angular_packages_core_core_l",function(){return rd}),n.d(e,"\u0275angular_packages_core_core_u",function(){return Sf}),n.d(e,"\u0275angular_packages_core_core_w",function(){return xf}),n.d(e,"\u0275angular_packages_core_core_v",function(){return vf}),n.d(e,"\u0275angular_packages_core_core_z",function(){return wf}),n.d(e,"\u0275angular_packages_core_core_x",function(){return _f}),n.d(e,"\u0275angular_packages_core_core_y",function(){return Tf}),n.d(e,"\u0275angular_packages_core_core_bc",function(){return In}),n.d(e,"\u0275angular_packages_core_core_bj",function(){return f}),n.d(e,"\u0275angular_packages_core_core_bd",function(){return Xe}),n.d(e,"\u0275angular_packages_core_core_be",function(){return Qe}),n.d(e,"\u0275angular_packages_core_core_bf",function(){return bn}),n.d(e,"\u0275angular_packages_core_core_bi",function(){return rr}),n.d(e,"\u0275angular_packages_core_core_bm",function(){return Xt}),n.d(e,"\u0275angular_packages_core_core_i",function(){return du}),n.d(e,"\u0275angular_packages_core_core_j",function(){return pu}),n.d(e,"\u0275angular_packages_core_core_k",function(){return fu}),n.d(e,"\u0275angular_packages_core_core_a",function(){return R}),n.d(e,"\u0275angular_packages_core_core_b",function(){return N}),n.d(e,"\u0275angular_packages_core_core_bk",function(){return c}),n.d(e,"\u0275angular_packages_core_core_ba",function(){return Um}),n.d(e,"\u0275angular_packages_core_core_bb",function(){return ug}),n.d(e,"createPlatform",function(){return Bf}),n.d(e,"assertPlatform",function(){return Wf}),n.d(e,"destroyPlatform",function(){return Kf}),n.d(e,"getPlatform",function(){return $f}),n.d(e,"PlatformRef",function(){return Zf}),n.d(e,"ApplicationRef",function(){return Jf}),n.d(e,"createPlatformFactory",function(){return Uf}),n.d(e,"NgProbeToken",function(){return Vf}),n.d(e,"enableProdMode",function(){return zu}),n.d(e,"isDevMode",function(){return Fu}),n.d(e,"APP_ID",function(){return Kp}),n.d(e,"PACKAGE_ROOT_URL",function(){return ef}),n.d(e,"PLATFORM_INITIALIZER",function(){return Jp}),n.d(e,"PLATFORM_ID",function(){return Qp}),n.d(e,"APP_BOOTSTRAP_LISTENER",function(){return tf}),n.d(e,"APP_INITIALIZER",function(){return Up}),n.d(e,"ApplicationInitStatus",function(){return Wp}),n.d(e,"DebugElement",function(){return Ch}),n.d(e,"DebugNode",function(){return kh}),n.d(e,"asNativeElements",function(){return mh}),n.d(e,"getDebugNode",function(){return Sh}),n.d(e,"Testability",function(){return qf}),n.d(e,"TestabilityRegistry",function(){return jf}),n.d(e,"setTestabilityGetter",function(){return Ff}),n.d(e,"TRANSLATIONS",function(){return Bh}),n.d(e,"TRANSLATIONS_FORMAT",function(){return Uh}),n.d(e,"LOCALE_ID",function(){return Vh}),n.d(e,"MissingTranslationStrategy",function(){return Wh}),n.d(e,"ApplicationModule",function(){return Jh}),n.d(e,"wtfCreateScope",function(){return kf}),n.d(e,"wtfLeave",function(){return Cf}),n.d(e,"wtfStartTimeRange",function(){return If}),n.d(e,"wtfEndTimeRange",function(){return Rf}),n.d(e,"Type",function(){return ud}),n.d(e,"EventEmitter",function(){return hl}),n.d(e,"ErrorHandler",function(){return wp}),n.d(e,"Sanitizer",function(){return Cu}),n.d(e,"SecurityContext",function(){return ku}),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",function(){return D}),n.d(e,"Attribute",function(){return A}),n.d(e,"ContentChild",function(){return P}),n.d(e,"ContentChildren",function(){return L}),n.d(e,"Query",function(){return E}),n.d(e,"ViewChild",function(){return q}),n.d(e,"ViewChildren",function(){return M}),n.d(e,"Component",function(){return Yd}),n.d(e,"Directive",function(){return Gd}),n.d(e,"HostBinding",function(){return Wd}),n.d(e,"HostListener",function(){return Kd}),n.d(e,"Input",function(){return Bd}),n.d(e,"Output",function(){return Ud}),n.d(e,"Pipe",function(){return Hd}),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",function(){return rp}),n.d(e,"NO_ERRORS_SCHEMA",function(){return ip}),n.d(e,"NgModule",function(){return op}),n.d(e,"ViewEncapsulation",function(){return at}),n.d(e,"Version",function(){return Iu}),n.d(e,"VERSION",function(){return Ru}),n.d(e,"defineInjectable",function(){return v}),n.d(e,"defineInjector",function(){return x}),n.d(e,"forwardRef",function(){return X}),n.d(e,"resolveForwardRef",function(){return J}),n.d(e,"Injectable",function(){return hp}),n.d(e,"INJECTOR",function(){return ps}),n.d(e,"Injector",function(){return hs}),n.d(e,"inject",function(){return Ae}),n.d(e,"\u0275inject",function(){return Ae}),n.d(e,"InjectFlags",function(){return Ce}),n.d(e,"ReflectiveInjector",function(){return Yp}),n.d(e,"createInjector",function(){return Ps}),n.d(e,"ResolvedReflectiveFactory",function(){return Lp}),n.d(e,"ReflectiveKey",function(){return Ip}),n.d(e,"InjectionToken",function(){return w}),n.d(e,"Inject",function(){return Te}),n.d(e,"Optional",function(){return we}),n.d(e,"Self",function(){return Se}),n.d(e,"SkipSelf",function(){return Oe}),n.d(e,"Host",function(){return ke}),n.d(e,"NgZone",function(){return Nf}),n.d(e,"\u0275NoopNgZone",function(){return Mf}),n.d(e,"RenderComponentType",function(){return bu}),n.d(e,"Renderer",function(){return vu}),n.d(e,"Renderer2",function(){return wu}),n.d(e,"RendererFactory2",function(){return _u}),n.d(e,"RendererStyleFlags2",function(){return Tu}),n.d(e,"RootRenderer",function(){return xu}),n.d(e,"COMPILER_OPTIONS",function(){return bf}),n.d(e,"Compiler",function(){return mf}),n.d(e,"CompilerFactory",function(){return yf}),n.d(e,"ModuleWithComponentFactories",function(){return af}),n.d(e,"ComponentFactory",function(){return Xs}),n.d(e,"\u0275ComponentFactory",function(){return Xs}),n.d(e,"ComponentRef",function(){return Zs}),n.d(e,"ComponentFactoryResolver",function(){return ru}),n.d(e,"ElementRef",function(){return hu}),n.d(e,"NgModuleFactory",function(){return uu}),n.d(e,"NgModuleRef",function(){return su}),n.d(e,"NgModuleFactoryLoader",function(){return td}),n.d(e,"getModuleFactory",function(){return od}),n.d(e,"QueryList",function(){return th}),n.d(e,"SystemJsNgModuleLoader",function(){return ah}),n.d(e,"SystemJsNgModuleLoaderConfig",function(){return eh}),n.d(e,"TemplateRef",function(){return gl}),n.d(e,"ViewContainerRef",function(){return ih}),n.d(e,"EmbeddedViewRef",function(){return ph}),n.d(e,"ViewRef",function(){return dh}),n.d(e,"ChangeDetectionStrategy",function(){return j}),n.d(e,"ChangeDetectorRef",function(){return uh}),n.d(e,"DefaultIterableDiffer",function(){return Nh}),n.d(e,"IterableDiffers",function(){return jh}),n.d(e,"KeyValueDiffers",function(){return Fh}),n.d(e,"SimpleChange",function(){return la}),n.d(e,"WrappedValue",function(){return ca}),n.d(e,"platformCore",function(){return Hh}),n.d(e,"\u0275ALLOW_MULTIPLE_PLATFORMS",function(){return Hf}),n.d(e,"\u0275APP_ID_RANDOM_PROVIDER",function(){return Zp}),n.d(e,"\u0275defaultIterableDiffers",function(){return Gh}),n.d(e,"\u0275defaultKeyValueDiffers",function(){return Yh}),n.d(e,"\u0275devModeEqual",function(){return ua}),n.d(e,"\u0275isListLikeIterable",function(){return da}),n.d(e,"\u0275ChangeDetectorStatus",function(){return F}),n.d(e,"\u0275isDefaultChangeDetectionStrategy",function(){return z}),n.d(e,"\u0275Console",function(){return nf}),n.d(e,"\u0275getInjectableDef",function(){return _}),n.d(e,"\u0275setCurrentInjector",function(){return Re}),n.d(e,"\u0275APP_ROOT",function(){return Rs}),n.d(e,"\u0275ivyEnabled",function(){return tg}),n.d(e,"\u0275CodegenComponentFactoryResolver",function(){return iu}),n.d(e,"\u0275resolveComponentResources",function(){return Q}),n.d(e,"\u0275ReflectionCapabilities",function(){return fd}),n.d(e,"\u0275RenderDebugInfo",function(){return yu}),n.d(e,"\u0275_sanitizeHtml",function(){return sc}),n.d(e,"\u0275_sanitizeStyle",function(){return Bl}),n.d(e,"\u0275_sanitizeUrl",function(){return Vu}),n.d(e,"\u0275global",function(){return H}),n.d(e,"\u0275looseIdentical",function(){return K}),n.d(e,"\u0275stringify",function(){return $}),n.d(e,"\u0275makeDecorator",function(){return C}),n.d(e,"\u0275isObservable",function(){return Bp}),n.d(e,"\u0275isPromise",function(){return Vp}),n.d(e,"\u0275clearOverrides",function(){return Iy}),n.d(e,"\u0275initServicesIfNeeded",function(){return Hb}),n.d(e,"\u0275overrideComponentView",function(){return Cy}),n.d(e,"\u0275overrideProvider",function(){return ky}),n.d(e,"\u0275NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",function(){return Qm}),n.d(e,"\u0275defineBase",function(){return pt}),n.d(e,"\u0275defineComponent",function(){return st}),n.d(e,"\u0275defineDirective",function(){return ft}),n.d(e,"\u0275definePipe",function(){return ht}),n.d(e,"\u0275defineNgModule",function(){return lt}),n.d(e,"\u0275detectChanges",function(){return mo}),n.d(e,"\u0275renderComponent",function(){return Zo}),n.d(e,"\u0275Render3ComponentFactory",function(){return Pu}),n.d(e,"\u0275Render3ComponentRef",function(){return Mu}),n.d(e,"\u0275directiveInject",function(){return Mo}),n.d(e,"\u0275injectAttribute",function(){return qo}),n.d(e,"\u0275getFactoryOf",function(){return qn}),n.d(e,"\u0275getInheritedFactory",function(){return jn}),n.d(e,"\u0275templateRefExtractor",function(){return Ll}),n.d(e,"\u0275ProvidersFeature",function(){return $s}),n.d(e,"\u0275InheritDefinitionFeature",function(){return as}),n.d(e,"\u0275NgOnChangesFeature",function(){return os}),n.d(e,"\u0275LifecycleHooksFeature",function(){return ts}),n.d(e,"\u0275Render3NgModuleRef",function(){return Wc}),n.d(e,"\u0275markDirty",function(){return xo}),n.d(e,"\u0275NgModuleFactory",function(){return Kc}),n.d(e,"\u0275NO_CHANGE",function(){return ha}),n.d(e,"\u0275container",function(){return no}),n.d(e,"\u0275nextContext",function(){return di}),n.d(e,"\u0275elementStart",function(){return _i}),n.d(e,"\u0275namespaceHTML",function(){return bi}),n.d(e,"\u0275namespaceMathML",function(){return mi}),n.d(e,"\u0275namespaceSVG",function(){return gi}),n.d(e,"\u0275element",function(){return yi}),n.d(e,"\u0275listener",function(){return Ii}),n.d(e,"\u0275text",function(){return Vi}),n.d(e,"\u0275embeddedViewStart",function(){return oo}),n.d(e,"\u0275query",function(){return Al}),n.d(e,"\u0275registerContentQuery",function(){return jo}),n.d(e,"\u0275projection",function(){return lo}),n.d(e,"\u0275bind",function(){return _o}),n.d(e,"\u0275interpolation1",function(){return So}),n.d(e,"\u0275interpolation2",function(){return Oo}),n.d(e,"\u0275interpolation3",function(){return ko}),n.d(e,"\u0275interpolation4",function(){return Co}),n.d(e,"\u0275interpolation5",function(){return Io}),n.d(e,"\u0275interpolation6",function(){return Ro}),n.d(e,"\u0275interpolation7",function(){return No}),n.d(e,"\u0275interpolation8",function(){return Do}),n.d(e,"\u0275interpolationV",function(){return wo}),n.d(e,"\u0275pipeBind1",function(){return sl}),n.d(e,"\u0275pipeBind2",function(){return ul}),n.d(e,"\u0275pipeBind3",function(){return cl}),n.d(e,"\u0275pipeBind4",function(){return ll}),n.d(e,"\u0275pipeBindV",function(){return dl}),n.d(e,"\u0275pureFunction0",function(){return Zc}),n.d(e,"\u0275pureFunction1",function(){return Xc}),n.d(e,"\u0275pureFunction2",function(){return Jc}),n.d(e,"\u0275pureFunction3",function(){return Qc}),n.d(e,"\u0275pureFunction4",function(){return tl}),n.d(e,"\u0275pureFunction5",function(){return el}),n.d(e,"\u0275pureFunction6",function(){return nl}),n.d(e,"\u0275pureFunction7",function(){return al}),n.d(e,"\u0275pureFunction8",function(){return rl}),n.d(e,"\u0275pureFunctionV",function(){return il}),n.d(e,"\u0275getCurrentView",function(){return Go}),n.d(e,"\u0275getHostElement",function(){return ea}),n.d(e,"\u0275restoreView",function(){return Je}),n.d(e,"\u0275containerRefreshStart",function(){return ro}),n.d(e,"\u0275containerRefreshEnd",function(){return io}),n.d(e,"\u0275queryRefresh",function(){return El}),n.d(e,"\u0275loadQueryList",function(){return Lo}),n.d(e,"\u0275elementEnd",function(){return Ri}),n.d(e,"\u0275elementProperty",function(){return Di}),n.d(e,"\u0275componentHostSyntheticProperty",function(){return Ai}),n.d(e,"\u0275projectionDef",function(){return uo}),n.d(e,"\u0275reference",function(){return Eo}),n.d(e,"\u0275enableBindings",function(){return $e}),n.d(e,"\u0275disableBindings",function(){return Ze}),n.d(e,"\u0275allocHostVars",function(){return To}),n.d(e,"\u0275elementAttribute",function(){return Ni}),n.d(e,"\u0275elementContainerStart",function(){return vi}),n.d(e,"\u0275elementContainerEnd",function(){return xi}),n.d(e,"\u0275elementStyling",function(){return ji}),n.d(e,"\u0275elementHostAttrs",function(){return Fi}),n.d(e,"\u0275elementStylingMap",function(){return Hi}),n.d(e,"\u0275elementStyleProp",function(){return Gi}),n.d(e,"\u0275elementStylingApply",function(){return zi}),n.d(e,"\u0275elementClassProp",function(){return Yi}),n.d(e,"\u0275textBinding",function(){return Bi}),n.d(e,"\u0275template",function(){return eo}),n.d(e,"\u0275embeddedViewEnd",function(){return so}),n.d(e,"\u0275store",function(){return Ao}),n.d(e,"\u0275load",function(){return Po}),n.d(e,"\u0275pipe",function(){return ol}),n.d(e,"\u0275whenRendered",function(){return es}),n.d(e,"\u0275i18n",function(){return Pc}),n.d(e,"\u0275i18nAttributes",function(){return Mc}),n.d(e,"\u0275i18nExp",function(){return Fc}),n.d(e,"\u0275i18nStart",function(){return Rc}),n.d(e,"\u0275i18nEnd",function(){return Ac}),n.d(e,"\u0275i18nApply",function(){return zc}),n.d(e,"\u0275i18nPostprocess",function(){return Dc}),n.d(e,"\u0275setClassMetadata",function(){return $c}),n.d(e,"\u0275compileComponent",function(){return Ed}),n.d(e,"\u0275compileDirective",function(){return Ld}),n.d(e,"\u0275compileNgModule",function(){return Sd}),n.d(e,"\u0275compileNgModuleDefs",function(){return Od}),n.d(e,"\u0275patchComponentDefWithScope",function(){return Id}),n.d(e,"\u0275resetCompiledComponents",function(){return kd}),n.d(e,"\u0275compilePipe",function(){return zd}),n.d(e,"\u0275sanitizeHtml",function(){return Ul}),n.d(e,"\u0275sanitizeStyle",function(){return Wl}),n.d(e,"\u0275defaultStyleSanitizer",function(){return Xl}),n.d(e,"\u0275sanitizeScript",function(){return Zl}),n.d(e,"\u0275sanitizeUrl",function(){return Kl}),n.d(e,"\u0275sanitizeResourceUrl",function(){return $l}),n.d(e,"\u0275bypassSanitizationTrustHtml",function(){return ql}),n.d(e,"\u0275bypassSanitizationTrustStyle",function(){return jl}),n.d(e,"\u0275bypassSanitizationTrustScript",function(){return Fl}),n.d(e,"\u0275bypassSanitizationTrustUrl",function(){return zl}),n.d(e,"\u0275bypassSanitizationTrustResourceUrl",function(){return Gl}),n.d(e,"\u0275getLContext",function(){return Fn}),n.d(e,"\u0275bindPlayerFactory",function(){return ar}),n.d(e,"\u0275addPlayer",function(){return Vo}),n.d(e,"\u0275getPlayers",function(){return Bo}),n.d(e,"\u0275compileNgModuleFactory__POST_R3__",function(){return Yf}),n.d(e,"\u0275SWITCH_COMPILE_COMPONENT__POST_R3__",function(){return $d}),n.d(e,"\u0275SWITCH_COMPILE_DIRECTIVE__POST_R3__",function(){return Zd}),n.d(e,"\u0275SWITCH_COMPILE_PIPE__POST_R3__",function(){return Xd}),n.d(e,"\u0275SWITCH_COMPILE_NGMODULE__POST_R3__",function(){return sp}),n.d(e,"\u0275getDebugNode__POST_R3__",function(){return wh}),n.d(e,"\u0275SWITCH_COMPILE_INJECTABLE__POST_R3__",function(){return gp}),n.d(e,"\u0275SWITCH_IVY_ENABLED__POST_R3__",function(){return Qh}),n.d(e,"\u0275SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",function(){return ch}),n.d(e,"\u0275Compiler_compileModuleSync__POST_R3__",function(){return uf}),n.d(e,"\u0275Compiler_compileModuleAsync__POST_R3__",function(){return lf}),n.d(e,"\u0275Compiler_compileModuleAndAllComponentsSync__POST_R3__",function(){return pf}),n.d(e,"\u0275Compiler_compileModuleAndAllComponentsAsync__POST_R3__",function(){return hf}),n.d(e,"\u0275SWITCH_ELEMENT_REF_FACTORY__POST_R3__",function(){return gu}),n.d(e,"\u0275SWITCH_TEMPLATE_REF_FACTORY__POST_R3__",function(){return ml}),n.d(e,"\u0275SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",function(){return oh}),n.d(e,"\u0275SWITCH_RENDERER2_FACTORY__POST_R3__",function(){return Su}),n.d(e,"\u0275getModuleFactory__POST_R3__",function(){return id}),n.d(e,"\u0275publishGlobalUtil",function(){return $o}),n.d(e,"\u0275publishDefaultGlobalUtils",function(){return Ko}),n.d(e,"\u0275SWITCH_INJECTOR_FACTORY__POST_R3__",function(){return gs}),n.d(e,"\u0275registerModuleFactory",function(){return nd}),n.d(e,"\u0275EMPTY_ARRAY",function(){return Zg}),n.d(e,"\u0275EMPTY_MAP",function(){return Xg}),n.d(e,"\u0275and",function(){return Jg}),n.d(e,"\u0275ccf",function(){return ym}),n.d(e,"\u0275cmf",function(){return Ry}),n.d(e,"\u0275crt",function(){return vg}),n.d(e,"\u0275did",function(){return Hm}),n.d(e,"\u0275eld",function(){return Qg}),n.d(e,"\u0275elementEventFullName",function(){return Ng}),n.d(e,"\u0275getComponentViewDefinitionFactory",function(){return vm}),n.d(e,"\u0275inlineInterpolate",function(){return Kg}),n.d(e,"\u0275interpolate",function(){return Wg}),n.d(e,"\u0275mod",function(){return cm}),n.d(e,"\u0275mpd",function(){return um}),n.d(e,"\u0275ncd",function(){return db}),n.d(e,"\u0275nov",function(){return Nm}),n.d(e,"\u0275pid",function(){return Vm}),n.d(e,"\u0275prd",function(){return Bm}),n.d(e,"\u0275pad",function(){return hb}),n.d(e,"\u0275pod",function(){return gb}),n.d(e,"\u0275ppd",function(){return fb}),n.d(e,"\u0275qud",function(){return ob}),n.d(e,"\u0275ted",function(){return bb}),n.d(e,"\u0275unv",function(){return mg}),n.d(e,"\u0275vid",function(){return xb});var a=n("mrSG"),r=n("pugT"),i=n("K9Ia"),o=n("6blF"),s=n("p0ib"),u=n("S1nX");function c(t){for(var e in t)if(t[e]===c)return e;throw Error("Could not find renamed property on target object.")}function l(t,e){for(var n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}var d=c({ngComponentDef:c}),p=c({ngDirectiveDef:c}),f=c({ngInjectableDef:c}),h=c({ngInjectorDef:c}),g=c({ngPipeDef:c}),m=c({ngModuleDef:c}),b=c({ngBaseDef:c}),y=c({__NG_ELEMENT_ID__:c});function v(t){return{providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function x(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function _(t){return t&&t.hasOwnProperty(f)?t[f]:null}function T(t){return t&&t.hasOwnProperty(h)?t[h]:null}var w=function(){function t(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0!==e?v({providedIn:e.providedIn||"root",factory:e.factory}):void 0}return t.prototype.toString=function(){return"InjectionToken "+this._desc},t}(),S="__annotations__",O="__parameters__",k="__prop__metadata__";function C(t,e,n,r,i){var o=I(e);function s(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof s)return o.call.apply(o,Object(a.__spread)([this],e)),this;var u=new((t=s).bind.apply(t,Object(a.__spread)([void 0],e)));return function(t){return i&&i.apply(void 0,Object(a.__spread)([t],e)),(t.hasOwnProperty(S)?t[S]:Object.defineProperty(t,S,{value:[]})[S]).push(u),r&&r(t),t}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function I(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(t){var r=t.apply(void 0,Object(a.__spread)(e));for(var i in r)this[i]=r[i]}}}function R(t,e,n){var r=I(e);function i(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof i)return r.apply(this,e),this;var o=new((t=i).bind.apply(t,Object(a.__spread)([void 0],e)));return s.annotation=o,s;function s(t,e,n){for(var a=t.hasOwnProperty(O)?t[O]:Object.defineProperty(t,O,{value:[]})[O];a.length<=n;)a.push(null);return(a[n]=a[n]||[]).push(o),t}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}function N(t,e,n,r){var i=I(e);function o(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof o)return i.apply(this,e),this;var s=new((t=o).bind.apply(t,Object(a.__spread)([void 0],e)));return function(t,n){var i=t.constructor,o=i.hasOwnProperty(k)?i[k]:Object.defineProperty(i,k,{value:{}})[k];o[n]=o.hasOwnProperty(n)&&o[n]||[],o[n].unshift(s),r&&r.apply(void 0,Object(a.__spread)([t,n],e))}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=t,o.annotationCls=o,o}var D=new w("AnalyzeForEntryComponents"),A=R("Attribute",function(t){return{attributeName:t}}),E=function(){return function(){}}(),L=N("ContentChildren",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!1,isViewQuery:!1,descendants:!1},e)},E),P=N("ContentChild",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!0,isViewQuery:!1,descendants:!0},e)},E),M=N("ViewChildren",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!1,isViewQuery:!0,descendants:!0},e)},E),q=N("ViewChild",function(t,e){return Object(a.__assign)({selector:t,first:!0,isViewQuery:!0,descendants:!0},e)},E),j=function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t}({}),F=function(t){return t[t.CheckOnce=0]="CheckOnce",t[t.Checked=1]="Checked",t[t.CheckAlways=2]="CheckAlways",t[t.Detached=3]="Detached",t[t.Errored=4]="Errored",t[t.Destroyed=5]="Destroyed",t}({});function z(t){return null==t||t===j.Default}var G="undefined"!=typeof window&&window,Y="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,H="undefined"!=typeof global&&global||G||Y,V=Promise.resolve(0),B=null;function U(){if(!B){var t=H.Symbol;if(t&&t.iterator)B=t.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),n=0;n<e.length;++n){var a=e[n];"entries"!==a&&"size"!==a&&Map.prototype[a]===Map.prototype.entries&&(B=a)}}return B}function W(t){"undefined"==typeof Zone?V.then(function(){t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}function K(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function $(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map($).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return""+t.overriddenName;if(t.name)return""+t.name;var e=t.toString();if(null==e)return""+e;var n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}var Z=c({__forward_ref__:c});function X(t){return t.__forward_ref__=X,t.toString=function(){return $(this())},t}function J(t){var e=t;return"function"==typeof e&&e.hasOwnProperty(Z)&&e.__forward_ref__===X?e():t}function Q(t){var e=[],n=new Map;function a(a){var r=n.get(a);if(!r){var i=t(a);n.set(a,r=i.then(nt)),e.push(r)}return r}return tt.forEach(function(t){t.templateUrl&&a(t.templateUrl).then(function(e){t.template=e,t.templateUrl=void 0});var e=t.styleUrls,n=t.styles||(t.styles=[]),r=t.styles.length;e&&e.forEach(function(i,o){n.push(""),a(i).then(function(a){n[r+o]=a,e.splice(e.indexOf(i),1),0==e.length&&(t.styleUrls=void 0)})})}),tt.clear(),Promise.all(e).then(function(){return null})}var tt=new Set;function et(t){return t.templateUrl||t.styleUrls&&t.styleUrls.length}function nt(t){return"string"==typeof t?t:t.text()}var at=function(t){return t[t.Emulated=0]="Emulated",t[t.Native=1]="Native",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t}({}),rt={},it=[],ot=0;function st(t){var 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,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,contentQueriesRefresh:t.contentQueriesRefresh||null,attributes:t.attributes||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||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===j.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||at.Emulated,id:"c",styles:t.styles||it,_:null};return r._=""+{toString:function(){var e=t.directives,n=t.features,i=t.pipes;r.id+=ot++,r.inputs=dt(t.inputs,a),r.outputs=dt(t.outputs),n&&n.forEach(function(t){return t(r)}),r.directiveDefs=e?function(){return("function"==typeof e?e():e).map(ut)}:null,r.pipeDefs=i?function(){return("function"==typeof i?i():i).map(ct)}:null}},r}function ut(t){return gt(t)||mt(t)}function ct(t){return bt(t)}function lt(t){return{type:t.type,bootstrap:t.bootstrap||it,declarations:t.declarations||it,imports:t.imports||it,exports:t.exports||it,transitiveCompileScopes:null}}function dt(t,e){if(null==t)return rt;var n={};for(var a in t)if(t.hasOwnProperty(a)){var r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function pt(t){var e={};return{inputs:dt(t.inputs,e),declaredInputs:e,outputs:dt(t.outputs)}}var ft=st;function ht(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function gt(t){return t[d]||null}function mt(t){return t[p]||null}function bt(t){return t[g]||null}function yt(t,e){var n=t[m]||null;if(!n&&!0===e)throw new Error("Type "+$(t)+" does not have 'ngModuleDef' property.");return n}var vt=0,xt=1,_t=2,Tt=3,wt=4,St=5,Ot=6,kt=7,Ct=8,It=9,Rt=10,Nt=11,Dt=12,At=13,Et=14,Lt=15,Pt=16,Mt=17,qt=18,jt=0,Ft=1,zt=6,Gt=7,Yt=8,Ht="__ngContext__",Vt=8,Bt=8,Ut=9,Wt=-1,Kt=function(){return function(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}(),$t=Kt.prototype;function Zt(t){return"function"==typeof t?t.name||t:"string"==typeof t?t:null==t?"":"object"==typeof t&&"function"==typeof t.type?t.type.name||t.type:""+t}function Xt(t,e){return t[e+qt]}function Jt(t){for(;Array.isArray(t);)t=t[St];return t}function Qt(t,e){return Jt(e[t+qt])}function te(t,e){return Jt(e[t.index])}function ee(t,e){return e[vt].data[t+qt]}function ne(t,e){var n=e[t];return n.length>=qt?n:n[St]}function ae(t){return 0!=(4&t.flags)}function re(t){return 1==(1&t.flags)}function ie(t){return null!==t.template}function oe(t){return Array.isArray(t)&&t.length===Yt}function se(t){return 0!=(128&t[xt])}function ue(t){for(var e=Array.isArray(t)?t:de(t);e&&!(128&e[xt]);)e=e[_t];return e}function ce(t){return ue(t)[It]}function le(t){return t[Ht]}function de(t){var e=le(t);return e?Array.isArray(e)?e:e.lView:null}function pe(t){return t!==Wt}function fe(t){return 32767&t}function he(t){return t>>16}function ge(t,e){for(var n=he(t),a=e;n>0;)a=a[Mt],n--;return a}var me=("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(H);function be(t,e){for(var n=0;n<t.length;n++)e.push(t[n])}function ye(t){for(var e=t[Ot];e&&2===e.type;)e=(t=t[Mt])[Ot];return t}function ve(){var t=H.ng;if(!t||!t.\u0275compilerFacade)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.\u0275compilerFacade}var xe,_e,Te=R("Inject",function(t){return{token:t}}),we=R("Optional"),Se=R("Self"),Oe=R("SkipSelf"),ke=R("Host"),Ce=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}({}),Ie=void 0;function Re(t){var e=Ie;return Ie=t,e}function Ne(t){var e=xe;return xe=t,e}function De(t,e){if(void 0===e&&(e=Ce.Default),void 0===Ie)throw new Error("inject() must be called from an injection context");return null===Ie?Ee(t,void 0,e):Ie.get(t,e&Ce.Optional?null:void 0,e)}function Ae(t,e){return void 0===e&&(e=Ce.Default),(xe||De)(t,e)}function Ee(t,e,n){var a=_(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&Ce.Optional)return null;if(void 0!==e)return e;throw new Error("Injector: NOT_FOUND ["+$(t)+"]")}function Le(t){for(var e=[],n=0;n<t.length;n++){var a=t[n];if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");for(var r=void 0,i=Ce.Default,o=0;o<a.length;o++){var s=a[o];s instanceof we||"Optional"===s.ngMetadataName?i|=Ce.Optional:s instanceof Oe||"SkipSelf"===s.ngMetadataName?i|=Ce.SkipSelf:s instanceof Se||"Self"===s.ngMetadataName?i|=Ce.Self:r=s instanceof Te?s.token:s}e.push(Ae(r,i))}else e.push(Ae(a))}return e}function Pe(t,e,n,a){e&&(a.initHooks||(a.initHooks=[])).push(t,e),n&&((a.initHooks||(a.initHooks=[])).push(t,n),(a.checkHooks||(a.checkHooks=[])).push(t,n))}function Me(t,e){if(t.firstTemplatePass)for(var n=e.directiveStart,a=e.directiveEnd;n<a;n++){var r=t.data[n];qe(r,t,n),je(r,t,n),Fe(r,t,n)}}function qe(t,e,n){t.afterContentInit&&(e.contentHooks||(e.contentHooks=[])).push(n,t.afterContentInit),t.afterContentChecked&&((e.contentHooks||(e.contentHooks=[])).push(n,t.afterContentChecked),(e.contentCheckHooks||(e.contentCheckHooks=[])).push(n,t.afterContentChecked))}function je(t,e,n){t.afterViewInit&&(e.viewHooks||(e.viewHooks=[])).push(n,t.afterViewInit),t.afterViewChecked&&((e.viewHooks||(e.viewHooks=[])).push(n,t.afterViewChecked),(e.viewCheckHooks||(e.viewCheckHooks=[])).push(n,t.afterViewChecked))}function Fe(t,e,n){null!=t.onDestroy&&(e.destroyHooks||(e.destroyHooks=[])).push(n,t.onDestroy)}function ze(t,e,n){!n&&32&t[xt]&&(Ge(t,e.initHooks,e.checkHooks,n),t[xt]&=-33)}function Ge(t,e,n,a){if(!a){var r=2&t[xt]?e:n;r&&Ye(t,r)}}function Ye(t,e){for(var n=0;n<e.length;n+=2)e[n+1].call(t[e[n]])}var He,Ve,Be,Ue,We=null;function Ke(t){We=t}function $e(){He=!0}function Ze(){He=!1}function Xe(){return Ue}function Je(t){on=t}function Qe(){return Ve}function tn(t){Ve=t}function en(t,e){Ve=t,Ue=e}function nn(){return Be}function an(t){Be=t}function rn(t){return void 0===t&&(t=Ue),1==(1&t[xt])}var on=null,sn=!1;function un(){return sn}function cn(t){sn=t}var ln=!0;function dn(){return ln}function pn(t){ln=t}var fn=-1;function hn(){return fn}function gn(t){fn=t}function mn(t,e){var n=Ue;if(t){var a=t[vt];ln=a.firstTemplatePass,fn=a.bindingStartIndex}return Ve=e,Be=!0,Ue=on=t,n}function bn(t){return void 0===t&&(t=1),(on=function(t,e){for(;t>0;)e=e[Mt],t--;return e}(t,on))[It]}function yn(t){var e=Ue[vt];rn(Ue)?Ue[xt]&=-2:(Ge(Ue,e.viewHooks,e.viewCheckHooks,sn),Ue[xt]&=-11,Ue[xt]|=32,Ue[kt]=e.bindingStartIndex),mn(t,null)}var vn=!0;function xn(t){var e=vn;return vn=t,e}var _n=255,Tn=0;function wn(t,e){var n=On(t,e);if(-1!==n)return n;var a=e[vt];a.firstTemplatePass&&(t.injectorIndex=e.length,Sn(a.data,t),Sn(e,null),Sn(a.blueprint,null));var r=kn(t,e),i=fe(r),o=ge(r,e),s=t.injectorIndex;if(pe(r))for(var u=o[vt].data,c=0;c<8;c++)e[s+c]=o[i+c]|u[i+c];return e[s+Bt]=r,s}function Sn(t,e){t.push(0,0,0,0,0,0,0,0,e)}function On(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+Bt]?-1:t.injectorIndex}function kn(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;for(var n=e[Ot],a=1;n&&-1===n.injectorIndex;)n=(e=e[Mt])?e[Ot]:null,a++;return n?n.injectorIndex|a<<16:-1}function Cn(t,e,n){!function(t,e,n){var a="string"!=typeof n?n[y]:n.charCodeAt(0)||0;null==a&&(a=n[y]=Tn++);var r=a&_n,i=1<<r,o=64&r,s=32&r,u=e.data;128&r?o?s?u[t+7]|=i:u[t+6]|=i:s?u[t+5]|=i:u[t+4]|=i:o?s?u[t+3]|=i:u[t+2]|=i:s?u[t+1]|=i:u[t]|=i}(t,e[vt],n)}function In(t,e){var n=t.attrs;if(n)for(var a=0;a<n.length;a+=2){var r=n[a];if(3===r)break;if(r==e)return n[a+1]}return null}function Rn(t,e,n,a,r){if(void 0===a&&(a=Ce.Default),t){var i=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;var e=t[y];return"number"==typeof e?e&_n:e}(n);if("function"==typeof i){var o=Qe(),s=Xe();en(t,e);try{var u=i();if(null!=u||a&Ce.Optional)return u;throw new Error("No provider for "+Zt(n)+"!")}finally{en(o,s)}}else if("number"==typeof i){var c=null,l=On(t,e),d=Wt,p=a&Ce.Host?ye(e)[Ot]:null;for((-1===l||a&Ce.SkipSelf)&&(d=-1===l?kn(t,e):e[l+Bt],Pn(a,!1)?(c=e[vt],l=fe(d),e=ge(d,e)):l=-1);-1!==l;){d=e[l+Bt];var f=e[vt];if(Ln(i,l,f.data)){var h=Dn(l,e,n,c,a,p);if(h!==Nn)return h}Pn(a,e[vt].data[l+Vt]===p)&&Ln(i,l,e)?(c=f,l=fe(d),e=ge(d,e)):l=-1}}}if(a&Ce.Optional&&void 0===r&&(r=null),0==(a&(Ce.Self|Ce.Host))){var g=e[Rt];return g?g.get(n,r,a&Ce.Optional):Ee(n,r,a&Ce.Optional)}if(a&Ce.Optional)return r;throw new Error("NodeInjector: NOT_FOUND ["+Zt(n)+"]")}var Nn={};function Dn(t,e,n,a,r,i){var o=e[vt],s=o.data[t+Vt],u=An(s,e,n,null==a?re(s)&&vn:a!=o&&3===s.type,r&Ce.Host&&i===s);return null!==u?En(o.data,e,u,s):Nn}function An(t,e,n,a,r){for(var i=t.providerIndexes,o=e[vt].data,s=65535&i,u=t.directiveStart,c=i>>16,l=r?s+c:t.directiveEnd,d=a?s:s+c;d<l;d++){var p=o[d];if(d<u&&n===p||d>=u&&p.type===n)return d}if(r){var f=o[u];if(f&&ie(f)&&f.type===n)return u}return null}function En(t,e,n,a){var r,i=e[n];if(null!=(r=i)&&"object"==typeof r&&Object.getPrototypeOf(r)==$t){var o=i;if(o.resolving)throw new Error("Circular dep for "+Zt(t[n]));var s=xn(o.canSeeViewProviders);o.resolving=!0;var u=void 0;o.injectImpl&&(u=Ne(o.injectImpl));var c=Qe(),l=Xe();en(a,e);try{i=e[n]=o.factory(null,t,e,a)}finally{o.injectImpl&&Ne(u),xn(s),o.resolving=!1,en(c,l)}}return i}function Ln(t,e,n){var a=64&t,r=32&t;return!!((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])&1<<t)}function Pn(t,e){return!(t&Ce.Self||t&Ce.Host&&e)}var Mn=function(){function t(t,e){this._tNode=t,this._lView=e}return t.prototype.get=function(t,e){return Rn(this._tNode,this._lView,t,void 0,e)},t}();function qn(t){var e=t,n=gt(e)||mt(e)||bt(e)||_(e)||T(e);return n&&void 0!==n.factory?n.factory:null}function jn(t){var e=qn(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:function(t){return new t}}function Fn(t){var e,n=le(t);if(n){if(Array.isArray(n)){var a=n,r=void 0,i=void 0,o=void 0;if((e=t)&&e.constructor&&e.constructor.ngComponentDef){if(-1==(r=Bn(a,t)))throw new Error("The provided component was not found in the application");i=t}else if(t&&t.constructor&&t.constructor.ngDirectiveDef){if(-1==(r=function(t,e){for(var n=t[vt].firstChild;n;){for(var a=n.directiveEnd,r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Vn(n)}return-1}(a,t)))throw new Error("The provided directive was not found in the application");o=Un(r,a,!1)}else if(-1==(r=Hn(a,t)))return null;var s=le(h=Jt(a[r])),u=s&&!Array.isArray(s)?s:zn(a,r,h);if(i&&void 0===u.component&&(u.component=i,Yn(u.component,u)),o&&void 0===u.directives){u.directives=o;for(var c=0;c<o.length;c++)Yn(o[c],u)}Yn(u.native,u),n=u}}else for(var l=t,d=l;d=d.parentNode;){var p=le(d);if(p){if(a=void 0,!(a=Array.isArray(p)?p:p.lView))return null;var f=Hn(a,l);if(f>=0){var h;Yn(h=Jt(a[f]),u=zn(a,f,h)),n=u;break}}}return n||null}function zn(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Gn(t){var e,n=le(t);if(Array.isArray(n)){var a=Bn(n,t);(r=zn(n,a,(e=ne(a,n))[St])).component=t,Yn(t,r),Yn(r.native,r)}else{var r;e=ne((r=n).nodeIndex,r.lView)}return e}function Yn(t,e){t[Ht]=e}function Hn(t,e){for(var n=t[vt].firstChild;n;){if(te(n,t)===e)return n.index;n=Vn(n)}return-1}function Vn(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 Bn(t,e){var n=t[vt].components;if(n)for(var a=0;a<n.length;a++){var r=n[a];if(ne(r,t)[It]===e)return r}else if(ne(qt,t)[It]===e)return qt;return-1}function Un(t,e,n){var a=e[vt].data[t],r=a.directiveStart;return 0==r?it:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function Wn(t){var e,n,a=na(t);return void 0===a.component&&(a.component=1&(n=(e=a.lView)[vt].data[a.nodeIndex]).flags?e[n.directiveStart]:null),a.component}function Kn(t){return na(t).lView[It]}function $n(t){for(var e=ta(t).lView;e[_t]&&null===e[St];)e=e[_t];return 128&e[xt]?null:e[It]}function Zn(t){return function(t){var e;for(e=Array.isArray(t)?t:de(t);e&&!(128&e[xt]);)e=e[_t];return e}(Array.isArray(t)?t:ta(t).lView)[It]}function Xn(t){return Object(a.__spread)(Zn(t).components)}function Jn(t){var e=ta(t);return new Mn(e.lView[vt].data[e.nodeIndex],e.lView)}function Qn(t){var e=ta(t);return void 0===e.directives&&(e.directives=Un(e.nodeIndex,e.lView,!1)),e.directives||[]}function ta(t,e){void 0===e&&(e=!0);var n=Fn(t);if(!n&&e)throw new Error("Invalid ng target");return n}function ea(t){return Fn(t).native}function na(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return ta(t)}function aa(t){return"boolean"==typeof t.useCapture}function ra(t){var e=na(t).lView,n=e[Ct],a=e[vt].cleanup,r=[];if(a&&n)for(var i=0;i<a.length;){var o=a[i++],s=a[i++];if("string"==typeof o){var u=o,c=Jt(e[s]),l=n[a[i++]],d=a[i++];t==c&&r.push({element:t,name:u,callback:l,useCapture:"boolean"==typeof d?d:!(d>=0)&&null})}}return r.sort(ia),r}function ia(t,e){return t.name==e.name?0:t.name<e.name?-1:1}var oa=/([A-Z])/g;function sa(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function ua(t,e){var n=da(t),a=da(e);return n&&a?function(t,e,n){for(var a=t[U()](),r=e[U()]();;){var i=a.next(),o=r.next();if(i.done&&o.done)return!0;if(i.done||o.done)return!1;if(!n(i.value,o.value))return!1}}(t,e,ua):!(n||!t||"object"!=typeof t&&"function"!=typeof t||a||!e||"object"!=typeof e&&"function"!=typeof e)||K(t,e)}var ca=function(){function t(t){this.wrapped=t}return t.wrap=function(e){return new t(e)},t.unwrap=function(e){return t.isWrapped(e)?e.wrapped:e},t.isWrapped=function(e){return e instanceof t},t}(),la=function(){function t(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}return t.prototype.isFirstChange=function(){return this.firstChange},t}();function da(t){return!!pa(t)&&(Array.isArray(t)||!(t instanceof Map)&&U()in t)}function pa(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function fa(t){throw new Error("Multiple components match node with tagname "+t.tagName)}var ha={};function ga(t,e,n){return t[e]=n}function ma(t,e){return t[e]}function ba(t,e,n){if(t[e]===ha)t[e]=n;else{if(r=n,(a=t[e])!=a&&r!=r||a===r)return!1;t[e]=n}var a,r;return!0}function ya(t,e,n,a){var r=ba(t,e,n);return ba(t,e+1,a)||r}function va(t,e,n,a,r){var i=ya(t,e,n,a);return ba(t,e+2,r)||i}function xa(t,e,n,a,r,i){var o=ya(t,e,n,a);return ya(t,e+2,r,i)||o}var _a="ngProjectAs",Ta=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({});function wa(t){return!!t.listen}var Sa={createRenderer:function(t,e){return document}};function Oa(t,e){return null==t.parent?function(t){var e=t[Ot];return e&&2!==e.type?te(e,t[_t]):null}(e):te(ka(t),e)}function ka(t){for(var e=t.parent;e&&5===e.type;)e=e.parent;return e}function Ca(t,e){if(-1===t.index){var n=e[Lt];return n>-1?e[_t][n]:null}return e[_t][t.parent.index]}function Ia(t,e){var n=Ca(t,e);return n?n[Gt]:null}var Ra=[];function Na(t,e,n,a,r){for(var i=t[vt].node,o=-1,s=t,u=i.child;u;){var c=null;if(3===u.type){Da(e,n,a,te(u,s),r);var l=s[u.index];oe(l)&&Da(e,n,a,l[zt],r)}else if(0===u.type){var d=s[u.index];Da(e,n,a,d[zt],r),a&&(d[Gt]=a),d[Ft].length&&(c=(s=d[Ft][0])[vt].node,r=d[zt])}else if(1===u.type){var p=ye(s),f=p[Ot].projection[u.projection];Ra[++o]=u,Ra[++o]=s,f&&(c=(s=p[_t])[vt].data[f.index])}else c=u.child;if(null===c)for(null===u.next&&2&u.flags&&(s=Ra[o--],u=Ra[o--]),c=u.next;!c;){if(null===(u=u.parent||s[vt].node)||u===i)return null;0===u.type&&(r=(s=s[_t])[u.index][zt]),c=2===u.type&&s[Tt]?(s=s[Tt])[vt].node:u.next}u=c}}function Da(t,e,n,a,r){0===t?wa(e)?e.insertBefore(n,a,r):n.insertBefore(a,r,!0):1===t?wa(e)?e.removeChild(n,a):n.removeChild(a):2===t&&e.destroyNode(a)}function Aa(t,e){return wa(e)?e.createText(Zt(t)):e.createTextNode(Zt(t))}function Ea(t,e,n){var a=Ia(t[vt].node,t);a&&Na(t,e?0:1,t[Dt],a,n)}function La(t,e,n,a,r){var i=e[Ft];a>0&&(i[a-1][Tt]=t),a<i.length?(t[Tt]=i[a],i.splice(a,0,t)):(i.push(t),t[Tt]=null),r>-1&&(t[Lt]=r,t[_t]=n),t[wt]&&t[wt].insertView(a),t[xt]|=16}function Pa(t,e,n){var a=t[Ft],r=a[e];return e>0&&(a[e-1][Tt]=r[Tt]),a.splice(e,1),n||Ea(r,!1),r[wt]&&r[wt].removeView(),r[Lt]=-1,r[_t]=null,r[xt]&=-17,r}function Ma(t,e,n){var a=t[Ft][n];Pa(t,n,!!e.detached),ja(a)}function qa(t){var e=t[vt].childIndex;return-1===e?null:t[e]}function ja(t){var e=t[Dt];wa(e)&&e.destroyNode&&Na(t,2,e,null),function(t){if(-1===t[vt].childIndex)return za(t);for(var e=qa(t);e;){var n=null;if(e.length>=qt?e[vt].childIndex>-1&&(n=qa(e)):e[Ft].length&&(n=e[Ft][0]),null==n){for(;e&&!e[Tt]&&e!==t;)za(e),e=Fa(e,t);za(e||t),n=e&&e[Tt]}e=n}}(t),t[xt]|=64}function Fa(t,e){var n;return t.length>=qt&&(n=t[Ot])&&2===n.type?Ca(n,t):t[_t]===e?null:t[_t]}function za(t){if(t.length>=qt){var e=t;!function(t){var e,n=t[vt];null!=n&&null!=(e=n.destroyHooks)&&Ye(t,e)}(e),(r=(a=e)[vt]&&a[vt].pipeDestroyHooks)&&Ye(a,r),function(t){var e=t[vt].cleanup;if(null!=e){for(var n=t[Ct],a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){var r=n[e[a+2]],i=Jt(t[e[a+1]]),o=e[a+3];"boolean"==typeof o?i.removeEventListener(e[a],r,o):o>=0?n[o]():n[-o].unsubscribe(),a+=2}else"number"==typeof e[a]?(0,n[e[a]])():e[a].call(n[e[a+1]]);t[Ct]=null}}(e);var n=e[Ot];n&&3===n.type&&wa(e[Dt])&&e[Dt].destroy()}var a,r}function Ga(t,e){if(Ya(t,e)){if(se(e))return Va(e[Dt],te(t,e));var n=e[Ot],a=t.parent;return null!=a&&4===a.type&&(t=Ua(a)),null==t.parent&&2===n.type?Ia(n,e):Oa(t,e)}return null}function Ya(t,e){var n,a=t,r=t.parent;return t.parent&&(4===t.parent.type?r=(a=Ua(t)).parent:5===t.parent.type&&(r=(a=ka(a)).parent)),null===r&&(r=e[Ot]),r&&2===r.type?null!=(n=Ca(r,e))&&null!=n[Gt]:null==a.parent||!(3!==a.parent.type||1&a.parent.flags)}function Ha(t,e,n,a){wa(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Va(t,e){return wa(t)?t.parentNode(e):e.parentNode}function Ba(t,e,n){if(void 0===t&&(t=null),null!==t&&Ya(e,n)){var a=n[Dt],r=Oa(e,n),i=e.parent||n[Ot];if(2===i.type){var o=Ca(i,n),s=o[Ft],u=s.indexOf(n);Ha(a,o[Gt],t,Wa(u,s,o[zt]))}else 4===i.type?Ha(a,Ga(e,n),t,r):5===i.type?Ha(a,r,t,te(e.parent,n)):wa(a)?a.appendChild(r,t):r.appendChild(t);return!0}return!1}function Ua(t){for(;null!=t.parent&&4===t.parent.type;)t=t.parent;return t}function Wa(t,e,n){if(t+1<e.length){var a=e[t+1],r=a[Ot];return r.child?te(r.child,a):n}return n}function Ka(t,e,n){if(null!==e&&Ya(t,n)){var a=Oa(t,n),r=n[Dt];return wa(r)?r.removeChild(a,e):a.removeChild(e),!0}return!1}function $a(t,e,n,a){var r=te(t,a);Ba(r,e,n),Yn(r,a);var i=Ga(e,n),o=a[t.index];if(0===t.type){o[Gt]=i;for(var s=o[Ft],u=0;u<s.length;u++)Ea(s[u],!0,o[zt])}else{if(4===t.type)for(var c=t.child;c;)$a(c,e,n,a),c=c.next;oe(o)&&(o[Gt]=i,Ba(o[zt],e,n))}}var Za="ng-template";function Xa(t,e,n){return e===t.tagName&&(n||3===t.type||4===t.type||0===t.type&&e===Za)}function Ja(t,e,n){for(var a,r,i,o,s,u=4,c=t.attrs,l=c?c.indexOf(3):-1,d=!1,p=0;p<e.length;p++){var f=e[p];if("number"!=typeof f){if(!d)if(4&u){if(u=2|1&u,""!==f&&!Xa(t,f,n)||""===f&&1===e.length){if(Qa(u))return!1;d=!0}}else{var h=tr(8&u?"class":f,c);if(-1===h){if(Qa(u))return!1;d=!0;continue}var g,m=8&u?f:e[++p];if(""!==m)if(g=l>-1&&h>l?"":c[h+1],8&u&&(i=(a=g).length,s=(o=a.indexOf(r=m))+r.length,-1===o||o>0&&" "!==a[o-1]||s<i&&" "!==a[s])||2&u&&m!==g){if(Qa(u))return!1;d=!0}}}else{if(!d&&!Qa(u)&&!Qa(f))return!1;if(d&&Qa(f))continue;d=!1,u=f|1&u}}return Qa(u)||d}function Qa(t){return 0==(1&t)}function tr(t,e){if(null===e)return-1;for(var n=!1,a=0;a<e.length;){var r=e[a];if(r===t)return a;0===r?a+=4:(3===r&&(n=!0),a+=n?1:2)}return-1}function er(t,e,n){void 0===n&&(n=!1);for(var a=0;a<e.length;a++)if(Ja(t,e[a],n))return!0;return!1}function nr(t,e,n){for(var a=function(t){var e=t.attrs;if(null!=e){var n=e.indexOf(_a);if(0==(1&n))return e[n+1]}return null}(t),r=0;r<e.length;r++)if(a===n[r]||null===a&&er(t,e[r],!0))return r+1;return 0}function ar(t,e){return new rr(t,e)}var rr=function(){return function(t,e){this.fn=t,this.value=e}}(),ir=function(){function t(){this._players=[]}return t.prototype.flushPlayers=function(){for(var t=0;t<this._players.length;t++){var e=this._players[t];e.parent||0!==e.state||e.play()}this._players.length=0},t.prototype.queuePlayer=function(t){this._players.push(t)},t}(),or="@";function sr(t,e,n,a){return[0,[null,-1,!1,e||null],n||[null],a||[null],[0,0],t||null,null,null,null]}function ur(t,e){for(var n=t,a=e[n],r=e;Array.isArray(a);)r=a,a=a[St];if(s=r,Array.isArray(s)&&"number"==typeof s[0]&&Array.isArray(s[2]))return r;var i,o,s,u=ee(t-qt,e).stylingTemplate;return r!==e&&(n=St),r[n]=u?(i=a,(o=u.slice())[5]=i,o[0]|=32,o):sr(a)}function cr(t){return t[0]===or}function lr(t,e,n,a,r,i){return i=i||n,r?t[r]=a:t.push(a),!!a&&(a.addEventListener(200,function(){var e=t.indexOf(a);e&&(e<t[0]?t[e]=null:t.splice(e,1)),a.destroy()}),(e.playerHandler||(e.playerHandler=new ir)).queuePlayer(a,i),!0)}function dr(t){return t[8]}function pr(t){return t[8]=[5,null,null,null,null]}function fr(t){return!!(8&t.flags)}function hr(t){for(var e=sr(),n=e[3]=[null],a=e[2]=[null],r=-1,i=0;i<t.length;i++){var o=t[i];if("number"==typeof o)r=o;else if(2===r)a.push(o,t[++i]);else if(1===r)n.push(o,!0);else if(3===r)break}return e}function gr(t,e,n){for(var a=1;a<t.length;){if(t[a]===e){var r=t[a+1];return void(null!=r&&0!=r||(t[a+1]=n))}a+=2}t.push(e,n)}function mr(t,e,n,a){for(var r=1;r<n.length;r+=2){var i=n[r+1];i&&(a?xr(t,n[r+0],!0,e,null):vr(t,n[r+0],i,e,null))}}function br(t,e,n,a){for(var r=n;r<a;r+=4)if(zr(t,r)===e)return r;return-1}function yr(t,e,n,a,r){var i=Jr(t,r||null),o=function(t,e,n,a){var r=t[1][4*e+1],i=t[4];return i[r+2+(a?i[r+0]:0)+n]}(t,i,e,a),s=Fr(t,o),u=jr(t,o),c=Xr(t,o),l=n instanceof rr?n.value:n;if($r(u,s,l)&&(!s||(l?i<=c:c===i))){var d=2==(2&u),p=n instanceof rr?new Zr(n,t[5],d?1:2):null,f=p?n.value:n,h=Pr(t,o),g=!1,m=p?h:0;if(Ar(t,p,h)){var b=Er(t,p,h);m=p?b:0,g=!0}if((g||c!==i)&&Lr(t,o,m,i),c!==i){var y=zr(t,o),v=ei(t,i);!function(t,e,n){v&&v(y)?t[e]|=4:t[e]&=-5}(t,o)}Dr(t,o,f);var x=Ir(u),_=Fr(t,x);if(!_||$r(u,_,f)){var T=!1,w=!0;!Wr(f,d)&&Wr(_,d)&&(T=!0,w=!1),_r(t,x,T),_r(t,o,w),ni(t,i,!0),Yr(t,!0)}g&&Hr(t,!0)}}function vr(t,e,n,a,r,i,o){n=r&&n?r(e,n):n,i||o?(i&&i.setValue(e,n),o&&o.setValue(e,n)):n?(n=n.toString(),wa(a)?a.setStyle(t,e,n,Ta.DashCase):t.style.setProperty(e,n)):wa(a)?a.removeStyle(t,e,Ta.DashCase):t.style.removeProperty(e)}function xr(t,e,n,a,r,i){r||i?(r&&r.setValue(e,n),i&&i.setValue(e,n)):n?wa(a)?a.addClass(t,e):t.classList.add(e):wa(a)?a.removeClass(t,e):t.classList.remove(e)}function _r(t,e,n){var a=e>=9?e+0:e;n?t[a]|=1:t[a]&=-2}function Tr(t,e){return 1==(1&t[e>=9?e+0:e])}function wr(t,e){return 2==(2&t[e>=9?e+0:e])}function Sr(t,e){return 4==(4&t[e>=9?e+0:e])}function Or(t,e,n){return 63&t|e<<6|n<<20}function kr(t,e){var n=Cr(e);return(2&e?t[3]:t[2])[n]}function Cr(t){return t>>6&16383}function Ir(t){var e=t>>20&16383;return e>=9?e:-1}function Rr(t){return Ir(t[0])}function Nr(t,e,n){t[e+1]=n}function Dr(t,e,n){t[e+2]=n}function Ar(t,e,n){var a=t[8];if(e){if(!a||0===n)return!0}else if(!a)return!1;return a[n]!==e}function Er(t,e,n){var a=t[8]||pr(t);return n>0?a[n]=e:(a.splice(n=a[0],0,e,null),a[0]+=2),n}function Lr(t,e,n,a){var r=function(t,e){return n<<16|t}(a);t[e+3]=r}function Pr(t,e){return t[e+3]>>16&65535}function Mr(t,e){var n=Pr(t,e);if(n){var a=t[8];if(a)return a[n]}return null}function qr(t,e,n){t[0===e?e:e+0]=n}function jr(t,e){return t[0===e?e:e+0]}function Fr(t,e){return t[e+2]}function zr(t,e){return t[e+1]}function Gr(t){return 16&t[0]}function Yr(t,e){_r(t,0,e)}function Hr(t,e){e?t[0]|=8:t[0]&=-9}function Vr(t,e,n){for(var a=(n||0)+1;a<t.length;a+=4)if(t[a]==e)return a-1;return-1}function Br(t,e,n){var a=Fr(t,e),r=zr(t,e),i=jr(t,e),o=Pr(t,e),s=i,u=jr(t,n),c=Ir(s);c>=0&&qr(t,c,Or(l=jr(t,c),Cr(l),n));var l,d=Ir(u);d>=0&&qr(t,d,Or(l=jr(t,d),Cr(l),e)),Dr(t,e,Fr(t,n)),Nr(t,e,zr(t,n)),qr(t,e,jr(t,n)),Lr(t,e,Pr(t,n),0),Dr(t,n,a),Nr(t,n,r),qr(t,n,i),Lr(t,n,o,0)}function Ur(t,e,n,a,r,i,o,s){var u=e<t.length;t.splice(e,0,1|r|(n?2:0),a,i,0),Lr(t,e,s,o),u&&function(t,n){for(var a=e+4;a<t.length;a+=4){var r=Ir(jr(t,a));if(r>0){var i=Cr(jr(t,r));qr(t,r,Or((Tr(t,r)?1:0)|(wr(t,r)?2:0)|(Sr(t,r)?4:0),i,a))}}}(t)}function Wr(t,e){return e?!!t:null!==t}function Kr(t,e,n,a){var r,i=a&&a(e)?4:0;return n?(i|=2,r=ti(t[3],e)):r=ti(t[2],e),Or(i,r=r>0?r+1:0,0)}function $r(t,e,n){return!(2&t)&&e&&n&&4&t?e.toString()!==n.toString():e!==n}var Zr=function(){function t(t,e,n){this._element=e,this._type=n,this._values={},this._dirty=!1,this._factory=t}return t.prototype.setValue=function(t,e){this._values[t]!==e&&(this._values[t]=e,this._dirty=!0)},t.prototype.buildPlayer=function(t,e){if(this._dirty){var n=this._factory.fn(this._element,this._type,this._values,e,t||null);return this._values={},this._dirty=!1,n}},t}();function Xr(t,e){return 65535&t[e+3]}function Jr(t,e){var n=Qr(t[1],e);return n>0?n/4:0}function Qr(t,e){for(var n=0;n<t.length;n+=4)if(t[n]===e)return n;return-1}function ti(t,e){for(var n=1;n<t.length;n+=2)if(t[n]===e)return n;return-1}function ei(t,e){var n=t[1];return n[4*e+3]||n[3]||null}function ni(t,e,n){t[1][4*e+2]=n}function ai(t){var e=t[6];if(null==e){e="";for(var n=t[3],a=1;a<n.length;a+=2)n[a+1]&&(e+=(e.length?" ":"")+n[a]);t[6]=e}return e}var ri=Promise.resolve(null);function ii(t){var e=t[vt];if(e.firstTemplatePass=!1,pn(!1),!rn(t)){var n=un();ze(t,e,n),function(t){for(var e=qa(t);null!==e;e=e[Tt])if(e.length<qt&&-1===e[jt])for(var n=e,a=0;a<n[Ft].length;a++){var r=n[Ft][a];li(r,r[vt],r[It])}}(t),function(t){if(null!=t.contentQueries)for(var e=0;e<t.contentQueries.length;e+=2){var n=t.contentQueries[e];t.data[n].contentQueriesRefresh(n-qt,t.contentQueries[e+1])}}(e),Ge(t,e.contentHooks,e.contentCheckHooks,n),function(t,e){if(t.expandoInstructions){var n=e[kt]=t.expandoStartIndex;gn(n);for(var a=-1,r=-1,i=0;i<t.expandoInstructions.length;i++){var o=t.expandoInstructions[i];if("number"==typeof o){if(o<=0){r=-o;var s=t.expandoInstructions[++i];a=n+=Ut+s}else n+=o;gn(n)}else null!==o&&(e[kt]=n,o(2,Jt(e[a]),r)),a++}}}(e,t)}!function(t){if(null!=t)for(var e=0;e<t.length;e++)void 0,void 0,16==(16&(n=ne(t[e],Xe()))[xt])&&12&n[xt]&&(function(t){for(var e=t[vt],n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),vo(n,n[It]));var n}(e.components)}function oi(t,e,n,a,r,i,o,s){var u=e.blueprint.slice();return u[xt]=51|a,u[_t]=u[Mt]=t,u[It]=n,u[Nt]=r||t&&t[Nt],u[Dt]=i||t&&t[Dt],u[At]=o||t&&t[At]||null,u[Rt]=s||t&&t[Rt]||null,u}function si(t,e,n,a,r){var i=Xe(),o=i[vt],s=t+qt;i[s]=n;var u=o.data[s];null==u&&(u=o.data[s]=Pi(i,e,s,a,r,null));var c=Qe(),l=nn();return c&&(!l||null!=c.child||null===u.parent&&2!==c.type?l||(c.next=u):c.child=u),null==o.firstChild&&(o.firstChild=u),tn(u),an(!0),u}function ui(t,e){return null==e[vt].node&&(e[vt].node=Pi(e,2,t,null,null,null)),e[Ot]=e[vt].node}function ci(t){var e=t[vt];e.firstTemplatePass&&(e.expandoStartIndex++,e.blueprint.push(null),e.data.push(null),t.push(null))}function li(t,e,n){var a,r=nn(),i=Qe();if(an(!0),tn(null),128&t[xt])go(ce(t));else try{an(!0),tn(null),a=mn(t,t[Ot]),bi(),e.template(fi(t),n),t[vt].firstTemplatePass=!1,pn(!1),ii(t)}finally{yn(a),an(r),tn(i)}}function di(t){return void 0===t&&(t=1),bn(t)}function pi(t,e,n){var a=t[Nt],r=mn(t,t[Ot]),i=!un();try{i&&a.begin&&a.begin(),rn(t)&&(n&&(bi(),n(1,e)),ii(t),t[xt]&=-2),n&&n(2,e),ii(t)}finally{i&&a.end&&a.end(),yn(r)}}function fi(t){return rn(t)?1:2}var hi=null;function gi(){hi="http://www.w3.org/2000/svg"}function mi(){hi="http://www.w3.org/1998/MathML/"}function bi(){hi=null}function yi(t,e,n,a){_i(t,e,n,a),Ri()}function vi(t,e,n){var a=Xe(),r=a[vt],i=a[Dt].createComment("");Ba(i,si(t,4,i,"ng-container",e||null),a),wi(r,a,n),Yn(i,a)}function xi(){var t=Qe(),e=Xe(),n=e[vt];nn()?an(!1):tn(t=t.parent);var a=e[wt];a&&(e[wt]=a.addNode(t)),Me(n,t)}function _i(t,e,n,a){var r,i,o,s=Xe(),u=s[vt],c=Ti(e),l=si(t,3,c,e,n||null);if(n&&(u.firstTemplatePass&&!l.stylingTemplate&&function(t){for(var e=0;e<t.length;e++){var n=t[e];if(1==n||2==n)return!0}return!1}(n)&&(l.stylingTemplate=hr(n)),ki(c,n)),Ba(c,l,s),wi(u,s,a),0===_e&&Yn(c,s),_e++,u.firstTemplatePass){var d=zo(l);d&&d.hasOwnProperty("class")&&(l.flags|=8)}l.stylingTemplate&&0==(8&l.flags)&&(mr(r=c,o=s[Dt],(i=l.stylingTemplate)[3],!0),mr(r,o,i[2],!1))}function Ti(t,e){var n=e||Xe()[Dt];return wa(n)?n.createElement(t,hi):null===hi?n.createElement(t):n.createElementNS(hi,t)}function wi(t,e,n,a){if(void 0===a&&(a=te),He){var r=Qe();dn()&&function(t,e,n,a,r){var i=r?{"":-1}:null;if(n){Xi(a,t.data.length,n.length);for(var o=0;o<n.length;o++)(s=n[o]).providersResolver&&s.providersResolver(s);for(Ui(t,a,n.length),o=0;o<n.length;o++){var s,u=t.data.length;Ji(t,e,s=n[o],s.factory),Zi(t.data.length-1,s,i),Pe(u,s.onInit,s.doCheck,t)}}i&&function(t,e,n){if(e)for(var a=t.localNames=[],r=0;r<e.length;r+=2){var i=n[e[r+1]];if(null==i)throw new Error("Export of name '"+e[r+1]+"' not found!");a.push(e[r],i)}}(a,r,i)}(t,e,function(t,e,n){var a=t.directiveRegistry,r=null;if(a)for(var i=0;i<a.length;i++){var o=a[i];er(n,o.selectors,!1)&&(r||(r=[]),Cn(wn(Qe(),e),e,o.type),ie(o)?(1&n.flags&&fa(n),n.flags=1,r.unshift(o)):r.push(o))}return r}(t,e,r),r,n||null),function(t,e,n){var a=n.directiveStart,r=n.directiveEnd;!dn()&&a<r&&wn(n,e);for(var i=a;i<r;i++){var o=t.data[i];ie(o)&&Qi(e,n,o),Wi(e,En(t.data,e,i,n),o,i)}}(t,e,r),function(t,e,n){for(var a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,o=dn(),s=a;s<r;s++){var u=t.data[s],c=e[s];if(u.hostBindings){var l=i.length;Ke(u),u.hostBindings(1,c,n.index-qt),Ke(null),l===i.length&&o&&i.push(u.hostBindings)}else o&&i.push(null)}}(t,e,r),function(t,e,n){var a=e.localNames;if(a)for(var r=e.index+1,i=0;i<a.length;i+=2){var o=a[i+1],s=-1===o?n(e,t):t[o];t[r++]=s}}(e,r,a)}}function Si(t,e,n,a,r,i){return t.ngPrivateData||(t.ngPrivateData=Oi(-1,t,e,n,a,r,i))}function Oi(t,e,n,a,r,i,o){var s=qt+n,u=s+a,c=function(t,e){var n=new Array(e).fill(null,0,t).fill(ha,t);return n[Lt]=-1,n[kt]=t,n}(s,u);return c[vt]={id:t,blueprint:c,template:e,viewQuery:o,node:null,data:c.slice(),childIndex:-1,bindingStartIndex:s,expandoStartIndex:u,expandoInstructions:null,firstTemplatePass:!0,initHooks:null,checkHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,pipeDestroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null}}function ki(t,e){for(var n=Xe()[Dt],a=wa(n),r=0;r<e.length;){var i=e[r++];if("number"==typeof i){if(0!==i)break;var o=e[r++],s=e[r++],u=e[r++];a?n.setAttribute(t,s,u,o):t.setAttributeNS(o,s,u)}else u=e[r++],i!==_a&&(cr(i)?a&&n.setProperty(t,i,u):a?n.setAttribute(t,i,u):t.setAttribute(i,u))}}function Ci(t,e){var n=t.createRenderer(null,null);return"string"==typeof e?wa(n)?n.selectRootElement(e):n.querySelector(e):e}function Ii(t,e,n){void 0===n&&(n=!1);var a=Xe(),r=Qe(),i=a[vt],o=i.firstTemplatePass&&(i.cleanup||(i.cleanup=[]));if(3===r.type){var s=te(r,a),u=a[Dt],c=(m=Yo(a)).length,l=n;if(wa(u)){var d=u.listen(s,t,e);m.push(e,d),l=c+1}else{var p=function(t){return function(e){!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}(e);s.addEventListener(t,p,n),m.push(p)}o&&o.push(t,r.index,c,l)}void 0===r.outputs&&(r.outputs=qi(r,1));var f,h=r.outputs;if(h&&(f=h[t])){var g=f.length;if(g)for(var m=Yo(a),b=0;b<g;b+=2){var y=a[f[b]][f[b+1]].subscribe(e),v=m.length;m.push(e,y),o&&o.push(t,r.index,v,-(v+1))}}}function Ri(){var t=Qe();nn()?an(!1):tn(t=t.parent);var e=Xe(),n=e[wt];if(n&&(e[wt]=n.addNode(t)),Me(Xe()[vt],t),_e--,fr(t)){var a=ur(t.index,e);Mi(e,t.inputs.class,ai(a))}}function Ni(t,e,n,a){if(n!==ha){var r=Xe(),i=r[Dt],o=Qt(t,r);if(null==n)wa(i)?i.removeAttribute(o,e):o.removeAttribute(e);else{var s=null==a?Zt(n):a(n);wa(i)?i.setAttribute(o,e,s):o.setAttribute(e,s)}}}function Di(t,e,n,a,r){Li(t,e,n,a,r)}function Ai(t,e,n,a,r){Li(t,e,n,a,r,Ei)}function Ei(t,e){return e[t.index][Dt]}function Li(t,e,n,a,r,i){if(n!==ha){var o,s,u=Xe(),c=Qt(t,u),l=ee(t,u);if(!r&&(o=zo(l))&&(s=o[e]))Mi(u,s,n),re(l)&&function(e,n){var a=ne(t+qt,e);4&a[xt]||(a[xt]|=8)}(u);else if(3===l.type){var d=i?i(l,u):u[Dt];n=null!=a?a(n):n,wa(d)?d.setProperty(c,e,n):cr(e)||(c.setProperty?c.setProperty(e,n):c[e]=n)}}}function Pi(t,e,n,a,r,i){var o=Qe(),s=nn()?o:o&&o.parent,u=s&&t&&s!==t[Ot]?s:null;return{type:e,index:n,injectorIndex:u?u.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,flags:0,providerIndexes:0,tagName:a,attrs:r,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:i,next:null,child:null,parent:u,detached:null,stylingTemplate:null,projection:null}}function Mi(t,e,n){for(var a=0;a<e.length;a+=2)t[e[a]][e[a+1]]=n}function qi(t,e){var n=Xe()[vt],a=null,r=t.directiveStart,i=t.directiveEnd;if(i>r)for(var o=0===e,s=n.data,u=r;u<i;u++){var c=s[u],l=o?c.inputs:c.outputs;for(var d in l)if(l.hasOwnProperty(d)){var p=l[d];(a=a||{}).hasOwnProperty(d)?a[d].push(u,p):a[d]=[u,p]}}return a}function ji(t,e,n,a){var r=Qe();r.stylingTemplate||(r.stylingTemplate=sr()),function(t,e,n,a,r,i){if(!(32&t[0])){var o=function(t,e,n){var a,r=t[1],i=t[4].length,o=Qr(r,e);if(-1===o)a=r.length/4,r.push(e,i,!1,n||null);else{if(r[o+1]>=0)return-1;a=o/4,r[o+1]=i,r[o+3]=n||null}return a}(t,e,r);if(-1!==o){var s=t[4],u=s[1],c=s[0],l=4*c,d=9+l,p=d+4*u,f=p+l,h=s.length;s.push(a?a.length:0,n?n.length:0);var g=0,m=[];if(a&&a.length)for(var b=0;b<a.length;b++){var y=a[b];-1==(_=br(t,y,9,d))&&(_=d+g,g+=4,m.push(y)),s.push(_)}var v=[];if(n&&n.length)for(var x=0;x<n.length;x++){var _,T=n[x];-1==(_=br(t,T,d,p))?(_=p+g,g+=4,v.push(T)):_+=4*m.length,s.push(_)}var w=2;if(m.length)for(;w<h;){var S=s[w+0],O=s[w+1];if(O)for(var k=w+2+S,C=k;C<k+O;C++)s[C]+=4*m.length;w+=2+(S+O)}for(var I=v.length+m.length,R=9;R<t.length;R+=4){var N=R>=p,D=R>=(N?f:d),A=jr(t,R),E=Cr(A),L=Ir(A);qr(t,R,Or(A,E,L+=N?D?4*m.length:0:4*I+4*(D?m.length:0)))}for(var P=0;P<4*m.length;P++)t.splice(f,0,null),t.splice(d,0,null),d++,p++,f+=2;for(var M=0;M<4*v.length;M++)t.splice(p,0,null),t.push(null),p++,f++;for(var q=t[3],j=t[2],F=0;F<I;F++){var z=F>=m.length,G=z?F-m.length:F,Y=z?v[G]:m[G],H=void 0,V=void 0;z?(H=f+4*(u+G),V=d+4*(u+G)):(H=p+4*(c+G),V=9+4*(c+G));var B=z?q:j,U=ti(B,Y);-1===U?(U=B.length+1,B.push(Y,!z&&null)):U+=1;var W=Kr(t,Y,z,r||null);qr(t,V,Or(W,U,H)),Nr(t,V,Y),Dr(t,V,null),Lr(t,V,0,o),qr(t,H,Or(W,U,V)),Nr(t,H,Y),Dr(t,H,null),Lr(t,H,0,o)}s[1]=u+v.length,s[0]=c+m.length,qr(t,0,Or(0,0,p)|(i?16:0))}}}(r.stylingTemplate,a||null,t,e,n,fr(r))}function Fi(t,e){var n=Qe();n.stylingTemplate||(n.stylingTemplate=hr(e)),function(t,e,n){var a=t[1];if(-1==Qr(a,n)){a.push(n,-1,!1,null);for(var r=null,i=null,o=-1,s=0;s<e.length;s++){var u=e[s];"number"==typeof u?o=u:1==o?gr(r=r||t[3],u,!0):2==o&&gr(i=i||t[2],u,e[++s])}}}(n.stylingTemplate,e,t)}function zi(t,e){var n=Xe(),a=0!=(2&n[xt]);(function(t,n,a,r,i,o,s){var u=0,c=Jr(t,e||null);if(function(t){return Tr(t,0)}(t)&&function(t,e){return t[1][4*c+2]}(t)){for(var l=8&t[0],d=t[5],p=Rr(t),f=Gr(t),h=!1,g=9;g<t.length;g+=4)if(Tr(t,g)){var m=jr(t,g),b=Xr(t,g);if(c!==b){h=!0;continue}var y=zr(t,g),v=Fr(t,g),x=4&m?ei(t,b):null,_=Mr(t,g),T=!!(2&m),w=!T||!f,S=v;g<p&&!Wr(S,T)&&(S=Fr(t,Ir(m))),T||Wr(S,T)||!w||(S=kr(t,m)),(!r||S)&&(T?xr(d,y,!!S,n,null,_):vr(d,y,S,n,x,null,_)),_r(t,g,!1)}if(l){var O=Array.isArray(a)?ce(a):a,k=dr(t),C=k[0];for(g=1;g<C;g+=2){var I=k[g],R=g+1,N=k[R];if(I){var D=I.buildPlayer(N,r);void 0!==D&&(null!=D&&lr(k,O,d,D,R)&&u++,N&&N.destroy())}else N&&N.destroy()}Hr(t,!1)}ni(t,c,!1),Yr(t,h)}return u})(ur(t+qt,n),n[Dt],n,a)>0&&ho(ce(n),2)}function Gi(t,e,n,a,r){var i=null;null!==n&&(i=a?Zt(n)+a:n),yr(ur(t+qt,Xe()),e,i,!1,r)}function Yi(t,e,n,a){var r=n instanceof rr?n:!!n;yr(ur(t+qt,Xe()),e,r,!0,a)}function Hi(t,e,n,a){if(null!=a)return function(t,e,n,a){throw new Error("unimplemented. Should not be needed by ViewEngine compatibility")}();var r=Xe(),i=ee(t,r),o=ur(t+qt,r);if(fr(i)&&e!==ha){var s=ai(o);Mi(r,i.inputs.class,(s.length?s+" ":"")+e)}else!function(t,e,n,a){n=n||null;var r=Jr(t,null),i=t[5],o=e instanceof rr?new Zr(e,i,1):null,s=n instanceof rr?new Zr(n,i,2):null,u=o?e.value:e,c=s?n.value:n,l=Gr(t)||u===ha||u===t[6],d=c===ha||c===t[7];if(!l||!d){t[6]=u,t[7]=c;var p=it,f=!1,h=!1,g=o?1:0;Ar(t,o,1)&&(Er(t,o,1),h=!0);var m=s?3:0;Ar(t,s,3)&&(Er(t,s,3),h=!0),l||("string"==typeof u?(p=u.split(/\s+/),f=!0):p=u?Object.keys(u):it);for(var b=u||rt,y=c?Object.keys(c):it,v=c||rt,x=y.length,_=!1,T=Rr(t),w=0,S=y.length+p.length;T<t.length&&w<S;){if(!(M=w>=x)&&!d||M&&!l){var O=M?w-x:w,k=M?p[O]:y[O],C=M?!!f||b[k]:v[k],I=M?g:m;if((q=zr(t,T))===k){var R=Fr(t,T),N=jr(t,T);if(Lr(t,T,I,r),$r(N,R,C)){Dr(t,T,C),h=h||!!I;var D=kr(t,N);(null!=R||$r(N,D,C))&&(_r(t,T,!0),_=!0)}}else{var A=Vr(t,k,T);if(A>0){var E=Fr(t,A),L=jr(t,A);Br(t,T,A),$r(L,E,C)&&(D=kr(t,L),Dr(t,T,C),(null!=E||$r(L,D,C))&&(_r(t,T,!0),h=h||!!I,_=!0))}else h=h||!!I,Ur(t,T,M,k,Kr(t,k,M,ei(t,r)),C,r,I),_=!0}}T+=4,w++}for(;T<t.length;)(!(M=2==(2&(N=jr(t,T))))&&!d||M&&!l)&&Wr(R=Fr(t,T),M)&&(_r(t,T,!0),Dr(t,T,null),Lr(t,T,I=M?g:m,r),_=!0),T+=4;for(var P=ei(t,r);w<S;){var M;if(!(M=w>=x)&&!d||M&&!l){O=M?w-x:w;var q=M?p[O]:y[O],j=(R=M?!!f||b[q]:v[q],N=1|Kr(t,q,M,P),I=M?g:m,t.length);t.push(N,q,R,0),Lr(t,j,I,r),_=!0}w++}_&&(Yr(t,!0),ni(t,r,!0)),h&&Hr(t,!0)}}(o,e,n)}function Vi(t,e){var n=Xe(),a=Aa(e,n[Dt]),r=si(t,3,a,null,null);an(!1),Ba(a,r,n)}function Bi(t,e){if(e!==ha){var n=Xe(),a=Qt(t,n),r=n[Dt];wa(r)?r.setValue(a,Zt(e)):a.textContent=Zt(e)}}function Ui(t,e,n){var a=-(e.index-qt),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Wi(t,e,n,a){var r=Qe();Ki(t,r,e,n),r&&r.attrs&&function(t,e,a,i){var o=r.initialInputs;(void 0===o||t>=o.length)&&(o=function(t,e,n){var a=n.initialInputs||(n.initialInputs=[]);a[t]=null;for(var r=n.attrs,i=0;i<r.length;){var o=r[i];if(3===o)break;if(0!==o){var s=e[o],u=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(s,u),i+=2}else i+=4}return a}(t,n.inputs,r));var s=o[t];if(s)for(var u=0;u<s.length;u+=2)e[s[u]]=s[u+1]}(a,e),n.contentQueries&&n.contentQueries(a),ie(n)&&(ne(r.index,t)[It]=e)}function Ki(t,e,n,a){var r=te(e,t);Yn(n,t),r&&Yn(r,t),null!=a.attributes&&3==e.type&&ki(r,a.attributes)}function $i(t){var e=Xe()[vt];(e.components||(e.components=[])).push(t.index)}function Zi(t,e,n){n&&(e.exportAs&&(n[e.exportAs]=t),e.template&&(n[""]=t))}function Xi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Ji(t,e,n,a){t.data.push(n);var r=new Kt(a,ie(n),null);t.blueprint.push(r),e.push(r)}function Qi(t,e,n){var a=te(e,t),r=Si(n.template,n.consts,n.vars,n.directiveDefs,n.pipeDefs,n.viewQuery),i=po(t,e.index,oi(t,r,null,n.onPush?8:4,t[Nt],t[Nt].createRenderer(a,n)));i[Ot]=e,i[St]=t[e.index],t[e.index]=i,dn()&&$i(e)}function to(t,e,n,a,r){return[r?-1:0,[],n,null,null,t,a,Ga(e,n)]}function eo(t,e,n,a,r,i,o,s){var u=Xe(),c=u[vt],l=ao(t,r||null,i||null);dn()&&(l.tViews=Oi(-1,e,n,a,c.directiveRegistry,c.pipeRegistry,null)),wi(c,u,o,s);var d=u[wt],p=Qe();Yn(te(p,u),u),d&&(u[wt]=d.addNode(p)),Me(c,l),an(!1)}function no(t){var e=ao(t,null,null);dn()&&(e.tViews=[]),an(!1)}function ao(t,e,n){var a=Xe(),r=t+qt,i=a[Dt].createComment(""),o=si(t,0,i,e,n),s=a[r]=to(a[r],o,a,i);Ba(i,o,a),po(a,t+qt,s);var u=a[wt];return u&&(s[wt]=u.container()),o}function ro(t){var e=Xe(),n=e[vt];tn(Xt(n.data,t)),an(!0),e[t+qt][jt]=0,ze(e,n,un())}function io(){var t=Qe();nn()?an(!1):tn(t=t.parent);for(var e=Xe()[t.index],n=e[jt];n<e[Ft].length;)Ma(e,t,n)}function oo(t,e,n){var a=Xe(),r=Qe(),i=2===r.type?r.parent:r,o=a[i.index],s=function(t,e,n,a){for(var r=t[Ft],i=n;i<r.length;i++){var o=r[i][vt].id;if(o===a)return r[i];if(!(o<a))break;Ma(t,e,i)}return null}(o,i,o[jt],t);return s?(an(!0),mn(s,s[vt].node)):(s=oi(a,function(t,e,n,a){var r=Xe()[vt],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Oi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null)),i[t]}(t,e,n,i),null,4),o[wt]&&(s[wt]=o[wt].createView()),ui(t,s),mn(s,s[vt].node)),o&&(rn(s)&&La(s,o,a,o[jt],-1),o[jt]++),rn(s)?3:2}function so(){var t=Xe(),e=t[Ot];rn(t)&&(ii(t),t[xt]&=-2),ii(t),yn(t[_t]),tn(e),an(!1)}function uo(t,e){var n=ye(Xe())[Ot];if(!n.projection)for(var a=n.projection=new Array(t?t.length+1:1).fill(null),r=a.slice(),i=n.child;null!==i;){var o=t?nr(i,t,e):0,s=i.next;r[o]?r[o].next=i:(a[o]=i,i.next=null),r[o]=i,i=s}}var co=[];function lo(t,e,n){void 0===e&&(e=0);var a=Xe(),r=si(t,1,null,null,n||null);null===r.projection&&(r.projection=e),an(!1);for(var i=ye(a),o=i[Ot].projection[e],s=i[_t],u=-1;o;){if(1===o.type){var c=ye(s),l=c[Ot].projection[o.projection];if(l){co[++u]=o,co[++u]=s,o=l,s=c[_t];continue}}else o.flags|=2,$a(o,r,a,s);null===o.next&&s!==i[_t]&&(s=co[u--],o=co[u--]),o=o.next}}function po(t,e,n){var a=t[vt],r=dn();return t[Et]?t[Et][Tt]=n:r&&(a.childIndex=e),t[Et]=n,n}function fo(t){for(;t&&!(128&t[xt]);)t[xt]|=8,t=t[_t];t[xt]|=8,ho(t[It],1)}function ho(t,e){var n,a=0===t.flags;t.flags|=e,a&&t.clean==ri&&(t.clean=new Promise(function(t){return n=t}),t.scheduler(function(){if(1&t.flags&&(t.flags&=-2,go(t)),2&t.flags){t.flags&=-3;var e=t.playerHandler;e&&e.flushPlayers()}t.clean=ri,n(null)}))}function go(t){for(var e=0;e<t.components.length;e++){var n=t.components[e];pi(de(n),n)}}function mo(t){bo(Gn(t),t)}function bo(t,e){var n=t[Nt];n.begin&&n.begin(),rn(t)&&vo(t,e),vo(t,e),n.end&&n.end()}function yo(t){go(t[It])}function vo(t,e){var n=t[vt],a=mn(t,t[Ot]),r=n.template,i=n.viewQuery;try{bi(),function(e,n,a){e&&rn(t)&&e(1,a)}(i,0,e),r(fi(t),e),ii(t),function(e,n,a){e&&!rn(t)&&e(2,a)}(i,0,e)}finally{yn(a)}}function xo(t){fo(Gn(t))}function _o(t){var e=Xe();return ba(e,e[kt]++,t)?t:ha}function To(t){if(dn()){var e=Xe(),n=e[vt];!function(t,e,n){var 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,We,t),function(t,e,n){for(var a=0;a<n;a++)e.push(ha),t.blueprint.push(ha),t.data.push(null)}(n,e,t)}}function wo(t){for(var e=!1,n=Xe(),a=n[kt],r=1;r<t.length;r+=2)ba(n,a++,t[r])&&(e=!0);if(n[kt]=a,!e)return ha;var i=t[0];for(r=1;r<t.length;r+=2)i+=Zt(t[r])+t[r+1];return i}function So(t,e,n){var a=Xe(),r=ba(a,a[kt],e);return a[kt]+=1,r?t+Zt(e)+n:ha}function Oo(t,e,n,a,r){var i=Xe(),o=ya(i,i[kt],e,a);return i[kt]+=2,o?t+Zt(e)+n+Zt(a)+r:ha}function ko(t,e,n,a,r,i,o){var s=Xe(),u=va(s,s[kt],e,a,i);return s[kt]+=3,u?t+Zt(e)+n+Zt(a)+r+Zt(i)+o:ha}function Co(t,e,n,a,r,i,o,s,u){var c=Xe(),l=xa(c,c[kt],e,a,i,s);return c[kt]+=4,l?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u:ha}function Io(t,e,n,a,r,i,o,s,u,c,l){var d=Xe(),p=d[kt],f=xa(d,p,e,a,i,s);return f=ba(d,p+4,c)||f,d[kt]+=5,f?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(c)+l:ha}function Ro(t,e,n,a,r,i,o,s,u,c,l,d,p){var f=Xe(),h=f[kt],g=xa(f,h,e,a,i,s);return g=ya(f,h+4,c,d)||g,f[kt]+=6,g?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(c)+l+Zt(d)+p:ha}function No(t,e,n,a,r,i,o,s,u,c,l,d,p,f,h){var g=Xe(),m=g[kt],b=xa(g,m,e,a,i,s);return b=va(g,m+4,c,d,f)||b,g[kt]+=7,b?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(c)+l+Zt(d)+p+Zt(f)+h:ha}function Do(t,e,n,a,r,i,o,s,u,c,l,d,p,f,h,g,m){var b=Xe(),y=b[kt],v=xa(b,y,e,a,i,s);return v=xa(b,y+4,c,d,f,g)||v,b[kt]+=8,v?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(c)+l+Zt(d)+p+Zt(f)+h+Zt(g)+m:ha}function Ao(t,e){var n=Xe(),a=n[vt],r=t+qt;r>=a.data.length&&(a.data[r]=null),n[r]=e}function Eo(t){return Xt(on,t)}function Lo(t){return Xe()[Pt][t]}function Po(t){return Xt(Xe(),t)}function Mo(t,e){return void 0===e&&(e=Ce.Default),t=J(t),Rn(Qe(),Xe(),t,e)}function qo(t){return In(Qe(),t)}function jo(t,e){var n=Xe(),a=n[vt],r=(n[Pt]||(n[Pt]=[])).push(t);if(dn()){var i=a.contentQueries||(a.contentQueries=[]);e!==(a.contentQueries.length?a.contentQueries[a.contentQueries.length-2]:-1)&&i.push(e,r-1)}}var Fo=ri;function zo(t){return t?(void 0===t.inputs&&(t.inputs=qi(t,0)),t.inputs):null}function Go(){return Xe()}function Yo(t){return t[Ct]||(t[Ct]=[])}function Ho(t){return t[vt].cleanup||(t[vt].cleanup=[])}function Vo(t,e){var n=Fn(t);if(n){var a=n.native,r=n.lView,i=function(t,e){if(!(e=e||Fn(a)))return null;var n=ur(e.nodeIndex,e.lView);return dr(n)||pr(n)}(0,n),o=Zn(r);lr(i,o,a,e,0,t),ho(o,2)}}function Bo(t){var e=Fn(t);if(!e)return[];var n=ur(e.nodeIndex,e.lView),a=n?dr(n):null;return a?function(t){for(var e=[],n=t[0],a=2;a<n;a+=2){var r=t[a];r&&e.push(r)}for(a=n;a<t.length;a++)e.push(t[a]);return e}(a):[]}var Uo="ng",Wo=!1;function Ko(){Wo||(Wo=!0,$o("getComponent",Wn),$o("getContext",Kn),$o("getListeners",ra),$o("getViewComponent",$n),$o("getHostElement",ea),$o("getInjector",Jn),$o("getRootComponents",Xn),$o("getDirectives",Qn),$o("getPlayers",Bo),$o("markDirty",xo))}function $o(t,e){if(H){var n=H[Uo];n||(n=H[Uo]={}),n[t]=e}}function Zo(t,e){void 0===e&&(e={});var n=e.rendererFactory||Sa,a=e.sanitizer||null,r=gt(t);r.type!=t&&(r.type=t);var i,o=Ci(n,e.host||r.selectors[0][0]),s=r.onPush?136:132,u=Qo(e.scheduler,e.playerHandler),c=n.createRenderer(o,r),l=oi(null,Oi(-1,null,1,0,null,null,null),u,s,n,c,void 0,e.injector||null),d=mn(l,null);try{n.begin&&n.begin(),i=Jo(Xo(o,r,l,n,c,a),r,l,u,e.hostFeatures||null),ii(l),l[xt]&=-2,ii(l)}finally{yn(d),n.end&&n.end()}return i}function Xo(t,e,n,a,r,i){Be=!1,Ve=null,_e=0,He=!0;var o=n[vt],s=oi(n,Si(e.template,e.consts,e.vars,e.directiveDefs,e.pipeDefs,e.viewQuery),null,e.onPush?8:4,a,r,i),u=si(0,3,t,null,null);return o.firstTemplatePass&&(Cn(wn(u,n),n,e.type),u.flags=1,Xi(u,n.length,1),$i(u)),s[St]=n[qt],s[Ot]=u,n[qt]=s}function Jo(t,e,n,a,r){var i=n[vt],o=function(t,e,n){var a=Qe();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Ui(t,a,1),Ji(t,e,n,n.factory));var r=En(t.data,e,e.length-1,a);return Ki(e,a,r,n),r}(i,n,e);if(a.components.push(o),t[It]=o,r&&r.forEach(function(t){return t(o,e)}),i.firstTemplatePass&&e.hostBindings){var s=Qe();Ke(e),e.hostBindings(1,o,s.index-qt),Ke(null)}return o}function Qo(t,e){return{components:[],scheduler:t||me,clean:Fo,playerHandler:e||null,flags:0}}function ts(t,e){var n=de(t)[vt],a=n.data.length-1;Pe(a,e.onInit,e.doCheck,n),Me(n,{directiveStart:a,directiveEnd:a+1})}function es(t){return function(t){return ue(t)[It]}(t).clean}function ns(t){return"function"==typeof t.template}function as(t){for(var e=Object.getPrototypeOf(t.type.prototype).constructor,n=function(){var n,r,i=void 0;if(ns(t))i=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");i=e.ngDirectiveDef}var o=e.ngBaseDef;if(o||i){var s=t;s.inputs=rs(t.inputs),s.declaredInputs=rs(t.declaredInputs),s.outputs=rs(t.outputs)}if(o&&(l(t.inputs,o.inputs),l(t.declaredInputs,o.declaredInputs),l(t.outputs,o.outputs)),i){var u=t.hostBindings,c=i.hostBindings;if(c&&(t.hostBindings=u?function(t,e,n){c(t,e,n),u(t,e,n)}:c),ns(t)&&ns(i)){var d=t.viewQuery,p=i.viewQuery;p&&(t.viewQuery=d?function(t,e){p(t,e),d(t,e)}:p)}var f=t.contentQueries,h=i.contentQueries;h&&(t.contentQueries=f?function(t){h(t),f(t)}:h);var g=t.contentQueriesRefresh,m=i.contentQueriesRefresh;m&&(t.contentQueriesRefresh=g?function(t,e){m(t,e),g(t,e)}:m),l(t.inputs,i.inputs),l(t.declaredInputs,i.declaredInputs),l(t.outputs,i.outputs),t.afterContentChecked=t.afterContentChecked||i.afterContentChecked,t.afterContentInit=t.afterContentInit||i.afterContentInit,t.afterViewChecked=t.afterViewChecked||i.afterViewChecked,t.afterViewInit=t.afterViewInit||i.afterViewInit,t.doCheck=t.doCheck||i.doCheck,t.onDestroy=t.onDestroy||i.onDestroy,t.onInit=t.onInit||i.onInit;var b=i.features;if(b)try{for(var y=Object(a.__values)(b),v=y.next();!v.done;v=y.next()){var x=v.value;x&&x.ngInherit&&x(t)}}catch(T){n={error:T}}finally{try{v&&!v.done&&(r=y.return)&&r.call(y)}finally{if(n)throw n.error}}return"break"}var _=e.prototype;_&&(t.afterContentChecked=t.afterContentChecked||_.afterContentChecked,t.afterContentInit=t.afterContentInit||_.afterContentInit,t.afterViewChecked=t.afterViewChecked||_.afterViewChecked,t.afterViewInit=t.afterViewInit||_.afterViewInit,t.doCheck=t.doCheck||_.doCheck,t.onDestroy=t.onDestroy||_.onDestroy,t.onInit=t.onInit||_.onInit),e=Object.getPrototypeOf(e)};e&&"break"!==n(););}function rs(t){return t===rt?{}:t===it?[]:t}var is="__ngOnChanges_";function os(t){var e=t.declaredInputs,n=t.inputs,a=t.type.prototype,r=function(t){if(e.hasOwnProperty(t)){for(var r=n[t],i=e[t],o=is+r,s=void 0,u=a;!s&&u&&Object.getPrototypeOf(u)!==Object.getPrototypeOf(Object.prototype);)s=Object.getOwnPropertyDescriptor(u,r),u=Object.getPrototypeOf(u);var c=s&&s.set;Object.defineProperty(a,r,{get:s&&s.get||(c?void 0:function(){return this[o]}),set:function(t){var e=this[is];e||(e={},Object.defineProperty(this,is,{value:e,writable:!0}));var n=!this.hasOwnProperty(o),a=e[i];a?a.currentValue=t:e[i]=new la(this[o],t,n),n?Object.defineProperty(this,o,{value:t,writable:!0}):this[o]=t,c&&c.call(this,t)},configurable:!1})}};for(var i in e)r(i);null!=t.onInit&&(t.onInit=ss(t.onInit)),t.doCheck=ss(t.doCheck)}function ss(t){return function(){var e=this[is];null!=e&&(this.ngOnChanges(e),this[is]=null),t&&t.apply(this)}}function us(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}os.ngInherit=!0;var cs="__source",ls=new Object,ds=ls,ps=new w("INJECTOR"),fs=function(){function t(){}return t.prototype.get=function(t,e){if(void 0===e&&(e=ls),e===ls)throw new Error("NullInjectorError: No provider for "+$(t)+"!");return e},t}(),hs=function(){function t(){}return t.create=function(t,e){return Array.isArray(t)?new Os(t,e):new Os(t.providers,t.parent,t.name||null)},t.THROW_IF_NOT_FOUND=ls,t.NULL=new fs,t.ngInjectableDef=v({providedIn:"any",factory:function(){return Ae(ps)}}),t.__NG_ELEMENT_ID__=function(){return ms()},t}(),gs=function(){return t=Qe(),new Mn(t,Xe());var t},ms=us,bs=function(t){return t},ys=[],vs=bs,xs=function(){return Array.prototype.slice.call(arguments)},_s=c({provide:String,useValue:c}),Ts=hs.NULL,ws=/\n/gm,Ss="\u0275",Os=function(){function t(t,e,n){void 0===e&&(e=Ts),void 0===n&&(n=null),this.parent=e,this.source=n;var a=this._records=new Map;a.set(hs,{token:hs,fn:bs,deps:ys,value:this,useNew:!1}),a.set(ps,{token:ps,fn:bs,deps:ys,value:this,useNew:!1}),function t(e,n){if(n)if((n=J(n))instanceof Array)for(var a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw Is("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw Is("Unexpected provider",n);var r=J(n.provide),i=function(t){var e=function(t){var e=ys,n=t.deps;if(n&&n.length){e=[];for(var a=0;a<n.length;a++){var r=6;if((u=J(n[a]))instanceof Array)for(var i=0,o=u;i<o.length;i++){var s=o[i];s instanceof we||s==we?r|=1:s instanceof Oe||s==Oe?r&=-3:s instanceof Se||s==Se?r&=-5:u=s instanceof Te?s.token:J(s)}e.push({token:u,options:r})}}else if(t.useExisting){var u;e=[{token:u=J(t.useExisting),options:6}]}else if(!(n||_s in t))throw Is("'deps' required",t);return e}(t),n=bs,a=ys,r=!1,i=J(t.provide);if(_s in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=J(t.useClass);else{if("function"!=typeof i)throw Is("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){var o=e.get(r);if(o){if(o.fn!==xs)throw ks(r)}else e.set(r,o={token:n.provide,deps:[],useNew:!1,fn:xs,value:ys});o.deps.push({token:r=n,options:6})}var s=e.get(r);if(s&&s.fn==xs)throw ks(r);e.set(r,i)}}(a,t)}return t.prototype.get=function(t,e,n){void 0===n&&(n=Ce.Default);var r=this._records.get(t);try{return function t(e,n,r,i,o,s){try{return function(e,n,r,i,o,s){var u,c;if(!n||s&Ce.SkipSelf)s&Ce.Self||(c=i.get(e,o,Ce.Default));else{if((c=n.value)==vs)throw Error(Ss+"Circular dependency");if(c===ys){n.value=vs;var l=n.useNew,d=n.fn,p=n.deps,f=ys;if(p.length){f=[];for(var h=0;h<p.length;h++){var g=p[h],m=g.options,b=2&m?r.get(g.token):void 0;f.push(t(g.token,b,r,b||4&m?i:Ts,1&m?null:hs.THROW_IF_NOT_FOUND,Ce.Default))}}n.value=c=l?new((u=d).bind.apply(u,Object(a.__spread)([void 0],f))):d.apply(void 0,f)}}return c}(e,n,r,i,o,s)}catch(u){throw u instanceof Error||(u=new Error(u)),(u.ngTempTokenPath=u.ngTempTokenPath||[]).unshift(e),n&&n.value==vs&&(n.value=ys),u}}(t,r,this._records,this.parent,e,n)}catch(o){var i=o.ngTempTokenPath;throw t[cs]&&i.unshift(t[cs]),o.message=Cs("\n"+o.message,i,this.source),o.ngTokenPath=i,o.ngTempTokenPath=null,o}},t.prototype.toString=function(){var t=[];return this._records.forEach(function(e,n){return t.push($(n))}),"StaticInjector["+t.join(", ")+"]"},t}();function ks(t){return Is("Cannot mix multi providers and regular providers",t)}function Cs(t,e,n){void 0===n&&(n=null),t=t&&"\n"===t.charAt(0)&&t.charAt(1)==Ss?t.substr(2):t;var a=$(e);if(e instanceof Array)a=e.map($).join(" -> ");else if("object"==typeof e){var r=[];for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];r.push(i+":"+("string"==typeof o?JSON.stringify(o):$(o)))}a="{"+r.join(", ")+"}"}return"StaticInjectorError"+(n?"("+n+")":"")+"["+a+"]: "+t.replace(ws,"\n  ")}function Is(t,e){return new Error(Cs(t,e))}var Rs=new w("The presence of this token marks an injector as being the root injector."),Ns={},Ds={},As=[],Es=void 0;function Ls(){return void 0===Es&&(Es=new fs),Es}function Ps(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=null),e=e||Ls(),new Ms(t,n,e)}var Ms=function(){function t(t,e,n){var a=this;this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this.destroyed=!1;var r=[];zs([t],function(t){return a.processInjectorType(t,[],r)}),e&&zs(e,function(n){return a.processProvider(n,t,e)}),this.records.set(ps,Fs(void 0,this)),this.isRootInjector=this.records.has(Rs),this.injectorDefTypes.forEach(function(t){return a.get(t)})}return t.prototype.destroy=function(){this.assertNotDestroyed(),this.destroyed=!0;try{this.onDestroy.forEach(function(t){return t.ngOnDestroy()})}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}},t.prototype.get=function(t,e,n){void 0===e&&(e=ds),void 0===n&&(n=Ce.Default),this.assertNotDestroyed();var a,r=Re(this);try{if(!(n&Ce.SkipSelf)){var i=this.records.get(t);if(void 0===i){var o=("function"==typeof(a=t)||"object"==typeof a&&a instanceof w)&&_(t);o&&this.injectableDefInScope(o)&&(i=Fs(qs(t),Ns),this.records.set(t,i))}if(void 0!==i)return this.hydrate(t,i)}return(n&Ce.Self?Ls():this.parent).get(t,e)}finally{Re(r)}},t.prototype.assertNotDestroyed=function(){if(this.destroyed)throw new Error("Injector has already been destroyed.")},t.prototype.processInjectorType=function(t,e,n){var a=this;if(t=J(t)){var r=T(t),i=null==r&&t.ngModule||void 0,o=void 0===i?t:i,s=-1!==n.indexOf(o),u=void 0!==i&&t.providers||As;if(void 0!==i&&(r=T(i)),null!=r){if(this.injectorDefTypes.add(o),this.records.set(o,Fs(r.factory,Ns)),null!=r.imports&&!s){n.push(o);try{zs(r.imports,function(t){return a.processInjectorType(t,e,n)})}finally{}}var c=r.providers;if(null!=c&&!s){var l=t;zs(c,function(t){return a.processProvider(t,l,c)})}var d=t.ngModule;zs(u,function(t){return a.processProvider(t,d,u)})}}},t.prototype.processProvider=function(t,e,n){var a=Ys(t=J(t))?t:J(t&&t.provide),r=function(t,e,n){var a=js(t,e,n);return Gs(t)?Fs(void 0,t.useValue):Fs(a,Ns)}(t,e,n);if(Ys(t)||!0!==t.multi){var i=this.records.get(a);if(i&&void 0!==i.multi)throw new Error("Mixed multi-provider for "+$(a))}else{var o=this.records.get(a);if(o){if(void 0===o.multi)throw new Error("Mixed multi-provider for "+a+".")}else(o=Fs(void 0,Ns,!0)).factory=function(){return Le(o.multi)},this.records.set(a,o);a=t,o.multi.push(t)}this.records.set(a,r)},t.prototype.hydrate=function(t,e){if(e.value===Ds)throw new Error("Cannot instantiate cyclic dependency! "+$(t));var n;return e.value===Ns&&(e.value=Ds,e.value=e.factory()),"object"==typeof e.value&&e.value&&"object"==typeof(n=e.value)&&null!=n&&n.ngOnDestroy&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value},t.prototype.injectableDefInScope=function(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))},t}();function qs(t){var e=_(t);if(null===e){var n=T(t);if(null!==n)return n.factory;if(t instanceof w)throw new Error("Token "+$(t)+" is missing an ngInjectableDef definition.");if(t instanceof Function){var a=t.length;if(a>0){var r=new Array(a).fill("?");throw new Error("Can't resolve all parameters for "+$(t)+": ("+r.join(", ")+").")}return function(){return new t}}throw new Error("unreachable")}return e.factory}function js(t,e,n){var r,i=void 0;if(Ys(t))return qs(J(t));if(Gs(t))i=function(){return J(t.useValue)};else if((r=t)&&r.useExisting)i=function(){return Ae(J(t.useExisting))};else if(t&&t.useFactory)i=function(){return t.useFactory.apply(t,Object(a.__spread)(Le(t.deps||[])))};else{var o=J(t&&(t.useClass||t.provide));if(!o){var s="";throw e&&n&&(s=" - only instances of Provider and Type are allowed, got: ["+n.map(function(e){return e==t?"?"+t+"?":"..."}).join(", ")+"]"),new Error("Invalid provider for the NgModule '"+$(e)+"'"+s)}if(!t.deps)return qs(o);i=function(){return new(o.bind.apply(o,Object(a.__spread)([void 0],Le(t.deps))))}}return i}function Fs(t,e,n){return void 0===n&&(n=!1),{factory:t,value:e,multi:n?[]:void 0}}function zs(t,e){t.forEach(function(t){return Array.isArray(t)?zs(t,e):e(t)})}function Gs(t){return t&&"object"==typeof t&&_s in t}function Ys(t){return"function"==typeof t}function Hs(t,e,n,a,r){if(t=J(t),Array.isArray(t))for(var i=0;i<t.length;i++)Hs(t[i],e,n,a,r);else{var o=Xe(),s=Ys(t)?t:J(t.provide),u=js(t),c=Qe(),l=65535&c.providerIndexes,d=c.directiveStart,p=c.providerIndexes>>16;if(Ys(t)||!t.multi){var f=new Kt(u,r,Mo),h=Bs(s,e,r?l:l+p,d);-1==h?(Cn(wn(c,o),o,s),e.push(s),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=65536),n.push(f),o.push(f)):(n[h]=f,o[h]=f)}else{var g=Bs(s,e,l+p,d),m=Bs(s,e,l,l+p),b=m>=0&&n[m];r&&!b||!r&&!(g>=0&&n[g])?(Cn(wn(c,o),o,s),f=function(t,e,n,a,r){var i=new Kt(t,n,Mo);return i.multi=[],i.index=e,i.componentProviders=0,Vs(i,r,a&&!n),i}(r?Ws:Us,n.length,r,a,u),!r&&b&&(n[m].providerFactory=f),e.push(s),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=65536),n.push(f),o.push(f)):Vs(n[r?m:g],u,!r&&a),!r&&a&&b&&n[m].componentProviders++}}}function Vs(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Bs(t,e,n,a){for(var r=n;r<a;r++)if(e[r]===t)return r;return-1}function Us(t,e,n,a){return Ks(this.multi,[])}function Ws(t,e,n,a){var r,i=this.multi;if(this.providerFactory){var o=this.providerFactory.componentProviders,s=En(e,n,this.providerFactory.index,a);Ks(i,r=s.slice(0,o));for(var u=o;u<s.length;u++)r.push(s[u])}else Ks(i,r=[]);return r}function Ks(t,e){for(var n=0;n<t.length;n++)e.push((0,t[n])());return e}function $s(t,e){return void 0===e&&(e=[]),function(n){n.providersResolver=function(n){return function(t,e,n){var a=Xe()[vt];if(a.firstTemplatePass){var r=ie(t);Hs(n,a.data,a.blueprint,r,!0),Hs(e,a.data,a.blueprint,r,!1)}}(n,t,e)}}}var Zs=function(){return function(){}}(),Xs=function(){return function(){}}();function Js(t){var e=Error("No component factory found for "+$(t)+". Did you add it to @NgModule.entryComponents?");return e[nu]=t,e}var Qs,tu,eu,nu="ngComponent",au=function(){function t(){}return t.prototype.resolveComponentFactory=function(t){throw Js(t)},t}(),ru=function(){function t(){}return t.NULL=new au,t}(),iu=function(){function t(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(var a=0;a<t.length;a++){var r=t[a];this._factories.set(r.componentType,r)}}return t.prototype.resolveComponentFactory=function(t){var e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Js(t);return new ou(e,this._ngModule)},t}(),ou=function(t){function e(e,n){var a=t.call(this)||this;return a.factory=e,a.ngModule=n,a.selector=e.selector,a.componentType=e.componentType,a.ngContentSelectors=e.ngContentSelectors,a.inputs=e.inputs,a.outputs=e.outputs,a}return Object(a.__extends)(e,t),e.prototype.create=function(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)},e}(Xs),su=function(){return function(){}}(),uu=function(){return function(){}}(),cu=function(){function t(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}return Object.defineProperty(t.prototype,"rootNodes",{get:function(){return null==this._lView[St]?function t(e,n,a){for(var r=n.child;r;)a.push(te(r,e)),4===r.type&&t(e,r,a),r=r.next;return a}(this._lView,this._lView[Ot],[]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._context?this._context:this._lookUpContext()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"destroyed",{get:function(){return 64==(64&this._lView[xt])},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){var t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}ja(this._lView)},t.prototype.onDestroy=function(t){var e,n;n=t,Yo(e=this._lView).push(n),e[vt].firstTemplatePass&&Ho(e).push(e[Ct].length-1,null)},t.prototype.markForCheck=function(){fo(this._lView)},t.prototype.detach=function(){this._lView[xt]&=-17},t.prototype.reattach=function(){this._lView[xt]|=16},t.prototype.detectChanges=function(){bo(this._lView,this.context)},t.prototype.checkNoChanges=function(){!function(t){cn(!0);try{mo(t)}finally{cn(!1)}}(this.context)},t.prototype.attachToViewContainerRef=function(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t},t.prototype.detachFromAppRef=function(){this._appRef=null},t.prototype.attachToAppRef=function(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t},t.prototype._lookUpContext=function(){return this._context=this._lView[_t][this._componentIndex]},t}(),lu=function(t){function e(e){var n=t.call(this,e,null,-1)||this;return n._view=e,n}return Object(a.__extends)(e,t),e.prototype.detectChanges=function(){yo(this._view)},e.prototype.checkNoChanges=function(){!function(t){cn(!0);try{yo(t)}finally{cn(!1)}}(this._view)},Object.defineProperty(e.prototype,"context",{get:function(){return null},enumerable:!0,configurable:!0}),e}(cu);function du(t,e,n){return Qs||(Qs=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(t)),new Qs(te(e,n))}function pu(t,e,n,r){if(tu||(tu=function(t){function e(e,n,a,r,i,o){var s=t.call(this)||this;return s._declarationParentView=e,s.elementRef=n,s._tView=a,s._renderer=r,s._queries=i,s._injectorIndex=o,s}return Object(a.__extends)(e,t),e.prototype.createEmbeddedView=function(t,e,n,a,r){var i=function(t,e,n,a,r,i){var o=nn(),s=Qe();an(!0),tn(null);var u=oi(n,t,e,4);return u[Mt]=n,r&&(u[wt]=r.createView()),ui(-1,u),t.firstTemplatePass&&(t.node.injectorIndex=i),an(o),tn(s),u}(this._tView,t,this._declarationParentView,0,this._queries,this._injectorIndex);e&&La(i,e,a,r,n.index),li(i,this._tView,t);var o=new cu(i,t,-1);return o._tViewNode=i[Ot],o},e}(t)),0===n.type){var i=r[n.index];return new tu(r,du(e,n,r),n.tViews,Xe()[Dt],i[wt],n.injectorIndex)}return null}function fu(t,e,n){if(re(t)){var a=t.directiveStart,r=ne(t.index,e);return new cu(r,n,a)}if(3===t.type){var i=ye(e);return new cu(i,i[It],-1)}return null}var hu=function(){function t(t){this.nativeElement=t}return t.__NG_ELEMENT_ID__=function(){return mu(t)},t}(),gu=function(t){return du(t,Qe(),Xe())},mu=us,bu=function(){return function(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}(),yu=function(){return function(){}}(),vu=function(){return function(){}}(),xu=function(){return function(){}}(),_u=function(){return function(){}}(),Tu=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({}),wu=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return Ou()},t}(),Su=function(){return function(t){var e=Xe()[Dt];if(wa(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}()},Ou=us,ku=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}({}),Cu=function(){return function(){}}(),Iu=function(){return function(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}(),Ru=new Iu("7.2.6"),Nu=function(t){function e(e){var n=t.call(this)||this;return n.ngModule=e,n}return Object(a.__extends)(e,t),e.prototype.resolveComponentFactory=function(t){var e=gt(t);return new Pu(e,this.ngModule)},e}(ru);function Du(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}var Au=new w("ROOT_CONTEXT_TOKEN",{providedIn:"root",factory:function(){return Qo(Ae(Eu))}}),Eu=new w("SCHEDULER_TOKEN",{providedIn:"root",factory:function(){return me}}),Lu={},Pu=function(t){function e(e,n){var a=t.call(this)||this;return a.componentDef=e,a.ngModule=n,a.componentType=e.type,a.selector=e.selectors[0][0],a.ngContentSelectors=[],a}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"inputs",{get:function(){return Du(this.componentDef.inputs)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return Du(this.componentDef.outputs)},enumerable:!0,configurable:!0}),e.prototype.create=function(t,e,n,a){var r=void 0===n,i=(a=a||this.ngModule)?function(t,e){return{get:function(n,a){var r=t.get(n,Lu);return r!==Lu||a===Lu?r:e.get(n,a)}}}(t,a.injector):t,o=i.get(_u,Sa),s=i.get(Cu,null),u=r?Ti(this.selector,o.createRenderer(null,this.componentDef)):Ci(o,n),c=this.componentDef.onPush?136:132,l=r?Qo():i.get(Au),d=o.createRenderer(u,this.componentDef);n&&u&&(wa(d)?d.setAttribute(u,"ng-version",Ru.full):u.setAttribute("ng-version",Ru.full));var p,f,h=oi(null,Oi(-1,null,1,0,null,null,null),l,c,o,d,s,i),g=mn(h,null);try{o.begin&&o.begin();var m=Xo(u,this.componentDef,h,o,d);if(f=ee(0,h),e)for(var b=0,y=h[vt],v=f.projection=[],x=0;x<e.length;x++){for(var _=e[x],T=null,w=null,S=0;S<_.length;S++){y.firstTemplatePass&&(y.expandoStartIndex++,y.blueprint.splice(++b+qt,0,null),y.data.splice(b+qt,0,null),h.splice(b+qt,0,null));var O=si(b,3,_[S],null,null);w?w.next=O:T=O,w=O}v.push(T)}p=Jo(m,this.componentDef,h,l,[ts]),po(h,qt,m),ii(h)}finally{yn(g),o.end&&o.end()}var k=new Mu(this.componentType,p,du(hu,f,h),h,f);return r&&(k.hostView._tViewNode.child=f),k},e}(Xs),Mu=function(t){function e(e,n,a,r,i){var o=t.call(this)||this;return o.location=a,o._rootLView=r,o._tNode=i,o.destroyCbs=[],o.instance=n,o.hostView=o.changeDetectorRef=new lu(r),o.hostView._tViewNode=ui(-1,r),o.componentType=e,o}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"injector",{get:function(){return new Mn(this._tNode,this._rootLView)},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.destroyCbs.forEach(function(t){return t()}),this.destroyCbs=null,this.hostView.destroy()},e.prototype.onDestroy=function(t){this.destroyCbs.push(t)},e}(Zs),qu=!0,ju=!1;function Fu(){return ju=!0,qu}function zu(){if(ju)throw new Error("Cannot enable prod mode after platform setup.");qu=!1}var Gu=function(){function t(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){var e=this.inertDocument.createElement("html");this.inertDocument.appendChild(e),this.inertBodyElement=this.inertDocument.createElement("body"),e.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}return t.prototype.getInertBodyElement_XHR=function(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}var e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);var n=e.response.body;return n.removeChild(n.firstChild),n},t.prototype.getInertBodyElement_DOMParser=function(t){t="<body><remove></remove>"+t+"</body>";try{var e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(n){return null}},t.prototype.getInertBodyElement_InertDocument=function(t){var 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)},t.prototype.stripCustomNsAttrs=function(t){for(var e=t.attributes,n=e.length-1;0<n;n--){var a=e.item(n).name;"xmlns:ns1"!==a&&0!==a.indexOf("ns1:")||t.removeAttribute(a)}for(var r=t.firstChild;r;)r.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(r),r=r.nextSibling},t}(),Yu=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:\/?#]*(?:[\/?#]|$))/gi,Hu=/^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 Vu(t){return(t=String(t)).match(Yu)||t.match(Hu)?t:(Fu()&&console.warn("WARNING: sanitizing unsafe URL value "+t+" (see http://g.co/ng/security#xss)"),"unsafe:"+t)}function Bu(t){return(t=String(t)).split(",").map(function(t){return Vu(t.trim())}).join(", ")}function Uu(t){var e,n,r={};try{for(var i=Object(a.__values)(t.split(",")),o=i.next();!o.done;o=i.next())r[o.value]=!0}catch(s){e={error:s}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return r}function Wu(){for(var t,e,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i={};try{for(var o=Object(a.__values)(n),s=o.next();!s.done;s=o.next()){var u=s.value;for(var c in u)u.hasOwnProperty(c)&&(i[c]=!0)}}catch(l){t={error:l}}finally{try{s&&!s.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return i}var Ku,$u=Uu("area,br,col,hr,img,wbr"),Zu=Uu("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Xu=Uu("rp,rt"),Ju=Wu(Xu,Zu),Qu=Wu($u,Wu(Zu,Uu("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")),Wu(Xu,Uu("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")),Ju),tc=Uu("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),ec=Uu("srcset"),nc=Wu(tc,ec,Uu("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")),ac=function(){function t(){this.sanitizedSomething=!1,this.buf=[]}return t.prototype.sanitizeChildren=function(t){for(var e=t.firstChild,n=!0;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);var a=this.checkClobberedElement(e,e.nextSibling);if(a){e=a;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")},t.prototype.startElement=function(t){var e=t.nodeName.toLowerCase();if(!Qu.hasOwnProperty(e))return this.sanitizedSomething=!0,!1;this.buf.push("<"),this.buf.push(e);for(var n=t.attributes,a=0;a<n.length;a++){var r=n.item(a),i=r.name,o=i.toLowerCase();if(nc.hasOwnProperty(o)){var s=r.value;tc[o]&&(s=Vu(s)),ec[o]&&(s=Bu(s)),this.buf.push(" ",i,'="',oc(s),'"')}else this.sanitizedSomething=!0}return this.buf.push(">"),!0},t.prototype.endElement=function(t){var e=t.nodeName.toLowerCase();Qu.hasOwnProperty(e)&&!$u.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))},t.prototype.chars=function(t){this.buf.push(oc(t))},t.prototype.checkClobberedElement=function(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},t}(),rc=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ic=/([^\#-~ |!])/g;function oc(t){return t.replace(/&/g,"&amp;").replace(rc,function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"}).replace(ic,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function sc(t,e){var n=null;try{Ku=Ku||new Gu(t);var a=e?String(e):"";n=Ku.getInertBodyElement(a);var 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=Ku.getInertBodyElement(a)}while(a!==i);var o=new ac,s=o.sanitizeChildren(uc(n)||n);return Fu()&&o.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),s}finally{if(n)for(var u=uc(n)||n;u.firstChild;)u.removeChild(u.firstChild)}}function uc(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var cc={marker:"element"},lc={marker:"comment"},dc="\ufffd",pc=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,fc=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,hc=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,gc=/\ufffd(\d+):?\d*\ufffd/gi,mc=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,bc=/\[(\ufffd.+?\ufffd?)\]/g,yc=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,vc=/\ufffdI18N_EXP_(ICU(_\d+)?)\ufffd/g;function xc(t){if(!t)return[];var e,n=0,a=[],r=[],i=/[{}]/g;for(i.lastIndex=0;e=i.exec(t);){var o=e.index;if("}"==e[0]){if(a.pop(),0==a.length){var s=t.substring(n,o);pc.test(s)?r.push(_c(s)):s&&r.push(s),n=o+1}}else{if(0==a.length){var u=t.substring(n,o);r.push(u),n=o+1}a.push("{")}}var c=t.substring(n);return""!=c&&r.push(c),r}function _c(t){for(var e=[],n=[],a=1,r=0,i=xc(t=t.replace(pc,function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})),o=0;o<i.length;){var s=i[o++].trim();1===a&&(s=s.replace(/\s*(?:=)?(\w+)\s*/,"$1")),s.length&&e.push(s);var u=xc(i[o++]);u.length&&n.push(u)}return c=e.indexOf("other"),l='Missing key "other" in ICU statement.',c<=-1&&function(t){throw new Error("ASSERTION ERROR: "+t)}(l),{type:a,mainBinding:r,cases:e,values:n};var c,l}function Tc(t){for(var e,n,a="",r=0,i=!1;null!==(e=fc.exec(t));)i?e[0]===dc+"/*"+n+dc&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+t.substr(r)}function wc(t,e,n,a){void 0===a&&(a=null);for(var r=[null,null],i=t.split(gc),o=0,s=0;s<i.length;s++){var u=i[s];if(1&s){var c=parseInt(u,10);r.push(-1-c),o|=Cc(c)}else""!==u&&r.push(u)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=o,r[1]=r.length-2,r}function Sc(t,e){var n;void 0===e&&(e=0),e|=Cc(t.mainBinding);for(var a=0;a<t.values.length;a++)for(var r=t.values[a],i=0;i<r.length;i++){var o=r[i];if("string"==typeof o)for(;n=gc.exec(o);)e|=Cc(parseInt(n[1],10));else e=Sc(o,e)}return e}var Oc=[],kc=-1;function Cc(t){return 1<<Math.min(t,31)}var Ic=[];function Rc(t,e,n){var a=Xe()[vt];Oc[++kc]=t,a.firstTemplatePass&&null===a.data[t+qt]&&function(t,e,n,a){var r=Xe(),i=t.blueprint.length-qt,o=Qe(),s=nn()?Qe():o&&o.parent,u=s&&s!==r[Ot]?s.index-qt:e,c=0;Ic[c]=u;var l=[];e>0&&o!==s&&l.push(o.index<<3|0);for(var d=[],p=[],f=function(t,e){if("number"!=typeof e)return Tc(t);var n=t.indexOf(":"+e+dc)+2+e.toString().length,a=t.search(new RegExp(dc+"\\/\\*\\d+:"+e+dc));return Tc(t.substring(n,a))}(n,a).split(hc),h=0;h<f.length;h++){var g=f[h];if(1&h)if("/"===g.charAt(0)){if("#"===g.charAt(1)){var m=parseInt(g.substr(2),10);u=Ic[--c],l.push(m<<3|5)}}else m=parseInt(g.substr(1),10),l.push(m<<3|0,u<<17|1),"#"===g.charAt(0)&&(Ic[++c]=u=m);else for(var b=g.split(mc),y=0;y<b.length;y++)if(g=b[y],1&y){ci(r);var v=t.blueprint.length-1-qt;l.push(lc,"",u<<17|1);var x=_c(g.substr(1,g.length-2)),_=Sc(x);Hc(p,x,v,v);var T=p.length-1;d.push(Cc(x.mainBinding),3,-1-x.mainBinding,v<<2|2,T,_,2,v<<2|3,T)}else if(""!==g){var w=g.match(gc);ci(r),l.push(w?"":g,u<<17|1),w&&be(wc(g,t.blueprint.length-1-qt),d)}}t.data[e+qt]={vars:t.blueprint.length-qt-i,expandoStartIndex:i,create:l,update:d,icus:p.length?p:null}}(a,t,e,n)}function Nc(t,e,n){var a=Xe();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[Ot]&&(t.parent=e),Ba(te(t,a),t,a);var r=a[t.index];return 0!==t.type&&oe(r)&&Ba(r[zt],t,a),t}function Dc(t,e){var n={},a=t.replace(bc,function(t,e){if(n[e]||(n[e]=e.split("|")),!n[e].length)throw new Error("i18n postprocess: unmatched placeholder - "+e);return n[e].shift()});if(Object.keys(n).some(function(t){return!!n[t].length}))throw new Error("i18n postprocess: unmatched values - "+JSON.stringify(n));return Object.keys(e).length?a=(a=a.replace(yc,function(t,n,a,r,i,o){return e.hasOwnProperty(a)?""+n+e[a]+o:t})).replace(vc,function(t,n){if(e.hasOwnProperty(n)){var a=e[n];if(!a.length)throw new Error("i18n postprocess: unmatched ICU - "+t+" with key: "+n);return a.shift()}return t}):a}function Ac(){!function(t){for(var e=Xe(),n=Oc[kc--],a=t.data[n+qt],r=Qe(),i=Ec(n,a.create,a.expandoStartIndex,e),o=n+1;o<=r.index-qt;o++)-1===i.indexOf(o)&&Lc(o,e)}(Xe()[vt])}function Ec(t,e,n,a){for(var r=Xe()[Dt],i=null,o=null,s=[],u=0;u<e.length;u++){var c=e[u];if("string"==typeof c)o=i,i=si(n++,3,Aa(c,r),null,null),an(!1);else if("number"==typeof c)switch(7&c){case 1:var l=c>>>17,d=void 0;o=Nc(i,d=l===t?a[Ot]:ee(l,a),o),d.next=null;break;case 0:var p=c>>>3;s.push(p),o=i,(i=ee(p,a))&&(tn(i),3===i.type&&an(!0));break;case 5:o=i=ee(c>>>3,a),tn(i),an(!1);break;case 4:Ni(c>>>3,e[++u],e[++u]);break;default:throw new Error('Unable to determine the type of mutate operation for "'+c+'"')}else switch(c){case lc:var f=e[++u],h=r.createComment(f);o=i,i=si(n++,5,h,null,null),Yn(h,a),i.activeCaseIndex=null,an(!1);break;case cc:var g=e[++u];o=i,i=si(n++,3,r.createElement(g),g,null);break;default:throw new Error('Unable to determine the type of mutate operation for "'+c+'"')}}return an(!1),s}function Lc(t,e){var n=ee(t,e);Ka(n,Qt(t,e)||null,e),n.detached=!0;var a=Po(t);if(oe(a)){var r=a;0!==n.type&&Ka(n,r[zt]||null,e),r[Gt]=null}}function Pc(t,e,n){Rc(t,e,n),Ac()}function Mc(t,e){var n=Xe()[vt];n.firstTemplatePass&&null===n.data[t+qt]&&function(t,e,n){for(var a=Qe().index-qt,r=[],i=0;i<n.length;i+=2)for(var o=n[i],s=n[i+1].split(mc),u=0;u<s.length;u++){var c=s[u];1&u||""!==c&&(c.match(gc)?be(wc(c,a,o),r):Ni(a,o,c))}t.data[e+qt]=r}(n,t,e)}var qc=0,jc=0;function Fc(t){t!==ha&&(qc|=1<<jc),jc++}function zc(t){if(jc){var e=Xe(),n=e[vt].data[t+qt],a=void 0,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,o){void 0===o&&(o=!1);for(var s=!1,u=0;u<e.length;u++){var c=e[u],l=e[++u];if(o||c&r)for(var d="",p=u+1;p<=u+l;p++){var f=e[p];if("string"==typeof f)d+=f;else if("number"==typeof f)if(f<0)d+=Zt(i[a-f]);else{var h=f>>>2;switch(3&f){case 1:Ni(h,e[++p],d,e[++p]);break;case 0:Bi(h,d);break;case 2:var g=e[++p],m=n[g],b=ee(h,i);if(null!==b.activeCaseIndex)for(var y=m.remove[b.activeCaseIndex],v=0;v<y.length;v++){var x=y[v];switch(7&x){case 3:Lc(x>>>3,i);break;case 6:var _=ee(y[v+1]>>>3,i).activeCaseIndex;null!==_&&be(n[x>>>3].remove[_],y)}}var T=Yc(m,d);b.activeCaseIndex=-1!==T?T:null,Ec(-1,m.create[T],m.expandoStartIndex,i),s=!0;break;case 3:m=n[g=e[++p]],b=ee(h,i),t(m.update[b.activeCaseIndex],n,a,r,i,s)}}}u+=l}}(a,r,e[kt]-jc-1,qc,e),qc=0,jc=0}}var Gc=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({});function Yc(t,e){var n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:var a=function(t,n){switch(function(t,e){"string"==typeof e&&(e=parseInt(e,10));var n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,o=parseInt(a,10),s=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?Gc.One:Gc.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?Gc.One:Gc.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?Gc.One:Gc.Other;case"ar":return 0===n?Gc.Zero:1===n?Gc.One:2===n?Gc.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?Gc.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?Gc.Many:Gc.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?Gc.One:Gc.Other;case"be":return n%10==1&&n%100!=11?Gc.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?Gc.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?Gc.Many:Gc.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?Gc.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?Gc.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)?Gc.Few:0!==n&&n%1e6==0?Gc.Many:Gc.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||o%10==1&&o%100!=11?Gc.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?Gc.Few:Gc.Other;case"cs":case"sk":return 1===r&&0===i?Gc.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?Gc.Few:0!==i?Gc.Many:Gc.Other;case"cy":return 0===n?Gc.Zero:1===n?Gc.One:2===n?Gc.Two:3===n?Gc.Few:6===n?Gc.Many:Gc.Other;case"da":return 1===n||0!==s&&(0===r||1===r)?Gc.One:Gc.Other;case"dsb":case"hsb":return 0===i&&r%100==1||o%100==1?Gc.One:0===i&&r%100==2||o%100==2?Gc.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4?Gc.Few:Gc.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?Gc.One:Gc.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&&o%10!=4&&o%10!=6&&o%10!=9?Gc.One:Gc.Other;case"ga":return 1===n?Gc.One:2===n?Gc.Two:n===Math.floor(n)&&n>=3&&n<=6?Gc.Few:n===Math.floor(n)&&n>=7&&n<=10?Gc.Many:Gc.Other;case"gd":return 1===n||11===n?Gc.One:2===n||12===n?Gc.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?Gc.Few:Gc.Other;case"gv":return 0===i&&r%10==1?Gc.One:0===i&&r%10==2?Gc.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?Gc.Many:Gc.Other:Gc.Few;case"he":return 1===r&&0===i?Gc.One:2===r&&0===i?Gc.Two:0!==i||n>=0&&n<=10||n%10!=0?Gc.Other:Gc.Many;case"is":return 0===s&&r%10==1&&r%100!=11||0!==s?Gc.One:Gc.Other;case"ksh":return 0===n?Gc.Zero:1===n?Gc.One:Gc.Other;case"kw":case"naq":case"se":case"smn":return 1===n?Gc.One:2===n?Gc.Two:Gc.Other;case"lag":return 0===n?Gc.Zero:0!==r&&1!==r||0===n?Gc.Other:Gc.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)?Gc.Few:0!==o?Gc.Many:Gc.Other:Gc.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&o%100===Math.floor(o%100)&&o%100>=11&&o%100<=19?Gc.Zero:n%10==1&&n%100!=11||2===i&&o%10==1&&o%100!=11||2!==i&&o%10==1?Gc.One:Gc.Other;case"mk":return 0===i&&r%10==1||o%10==1?Gc.One:Gc.Other;case"mt":return 1===n?Gc.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?Gc.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?Gc.Many:Gc.Other;case"pl":return 1===r&&0===i?Gc.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?Gc.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?Gc.Many:Gc.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?Gc.One:Gc.Other;case"ro":return 1===r&&0===i?Gc.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?Gc.Few:Gc.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?Gc.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?Gc.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?Gc.Many:Gc.Other;case"shi":return 0===r||1===n?Gc.One:n===Math.floor(n)&&n>=2&&n<=10?Gc.Few:Gc.Other;case"si":return 0===n||1===n||0===r&&1===o?Gc.One:Gc.Other;case"sl":return 0===i&&r%100==1?Gc.One:0===i&&r%100==2?Gc.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?Gc.Few:Gc.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?Gc.One:Gc.Other;default:return Gc.Other}}("en-US",e)){case Gc.Zero:return"zero";case Gc.One:return"one";case Gc.Two:return"two";case Gc.Few:return"few";case Gc.Many:return"many";default:return"other"}}();-1===(n=t.cases.indexOf(a))&&"other"!==a&&(n=t.cases.indexOf("other"));break;case 0:n=t.cases.indexOf("other")}return n}function Hc(t,e,n,r){for(var i=[],o=[],s=[],u=[],c=[],l=0;l<e.values.length;l++){for(var d=e.values[l],p=[],f=0;f<d.length;f++){var h=d[f];if("string"!=typeof h){var g=p.push(h)-1;d[f]="\x3c!--\ufffd"+g+"\ufffd--\x3e"}}var m=Vc(d.join(""),n,p,t,r);i.push(m.create),o.push(m.remove),s.push(m.update),u.push(m.vars),c.push(m.childIcus)}t.push({type:e.type,vars:u,expandoStartIndex:r+1,childIcus:c,cases:e.cases,create:i,remove:o,update:s});var b=Xe(),y=Math.max.apply(Math,Object(a.__spread)(u));for(l=0;l<y;l++)ci(b)}function Vc(t,e,n,r,i){var o=new Gu(document).getInertBodyElement(t);if(!o)throw new Error("Unable to generate inert body element");var s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,r,i,o,s){if(e){for(var u=[];e;){var c=e.nextSibling,l=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:var d=e,p=d.tagName.toLowerCase();if(Qu.hasOwnProperty(p)){n.create.push(cc,p,r<<17|1);for(var f=d.attributes,h=0;h<f.length;h++){var g=f.item(h),m=g.name.toLowerCase();g.value.match(gc)?nc.hasOwnProperty(m)&&be(tc[m]?wc(g.value,l,g.name,Vu):ec[m]?wc(g.value,l,g.name,Bu):wc(g.value,l,g.name),n.update):n.create.push(l<<3|4,g.name,g.value)}t(e.firstChild,n,l,i,o,s),n.remove.push(l<<3|3)}else n.vars--;break;case Node.TEXT_NODE:var b=e.textContent||"",y=b.match(gc);n.create.push(y?"":b,r<<17|1),n.remove.push(l<<3|3),y&&be(wc(b,l),n.update);break;case Node.COMMENT_NODE:var v=Bc.exec(e.textContent||"");if(v){var x=parseInt(v[1],10);n.create.push(lc,"",r<<17|1),u.push([_=i[x],l])}else n.vars--;break;default:n.vars--}e=c}for(h=0;h<u.length;h++){var _,T=u[h][1];Hc(o,_=u[h][0],T,s+n.vars);var w=o.length-1;n.vars+=Math.max.apply(Math,Object(a.__spread)(o[w].vars)),n.childIcus.push(w);var S=Sc(_);n.update.push(Cc(_.mainBinding),3,-1-_.mainBinding,T<<2|2,w,S,2,T<<2|3,w),n.remove.push(w<<3|6,T<<3|3)}}}((uc(o)||o).firstChild,s,e,n,r,i),s}var Bc=/\ufffd(\d+)\ufffd/,Uc={provide:ru,useClass:Nu,deps:[su]},Wc=function(t){function e(e,n){var a=t.call(this)||this;a._parent=n,a._bootstrapComponents=[],a.injector=a,a.destroyCbs=[];var r=yt(e);return a._bootstrapComponents=r.bootstrap,a._r3Injector=Ps(e,n,[{provide:su,useValue:a},Uc]),a.instance=a.get(e),a}return Object(a.__extends)(e,t),e.prototype.get=function(t,e,n){return void 0===e&&(e=hs.THROW_IF_NOT_FOUND),void 0===n&&(n=Ce.Default),t===hs||t===su||t===ps?this:this._r3Injector.get(t,e,n)},Object.defineProperty(e.prototype,"componentFactoryResolver",{get:function(){return this.get(ru)},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.destroyCbs.forEach(function(t){return t()}),this.destroyCbs=null},e.prototype.onDestroy=function(t){this.destroyCbs.push(t)},e}(su),Kc=function(t){function e(e){var n=t.call(this)||this;return n.moduleType=e,n}return Object(a.__extends)(e,t),e.prototype.create=function(t){return new Wc(this.moduleType,t)},e}(uu);function $c(t,e,n,r){var i,o=t;null!==e&&(void 0!==o.decorators?(i=o.decorators).push.apply(i,Object(a.__spread)(e)):o.decorators=e),null!==n&&(o.ctorParameters=n),null!==r&&(o.propDecorators=void 0!==o.propDecorators?Object(a.__assign)({},o.propDecorators,r):r)}function Zc(t,e,n){var a=hn()+t,r=Xe();return rn()?ga(r,a,n?e.call(n):e()):ma(r,a)}function Xc(t,e,n,a){var r=Xe(),i=hn()+t;return ba(r,i,n)?ga(r,i+1,a?e.call(a,n):e(n)):ma(r,i+1)}function Jc(t,e,n,a,r){var i=hn()+t,o=Xe();return ya(o,i,n,a)?ga(o,i+2,r?e.call(r,n,a):e(n,a)):ma(o,i+2)}function Qc(t,e,n,a,r,i){var o=hn()+t,s=Xe();return va(s,o,n,a,r)?ga(s,o+3,i?e.call(i,n,a,r):e(n,a,r)):ma(s,o+3)}function tl(t,e,n,a,r,i,o){var s=hn()+t,u=Xe();return xa(u,s,n,a,r,i)?ga(u,s+4,o?e.call(o,n,a,r,i):e(n,a,r,i)):ma(u,s+4)}function el(t,e,n,a,r,i,o,s){var u=hn()+t,c=Xe(),l=xa(c,u,n,a,r,i);return ba(c,u+4,o)||l?ga(c,u+5,s?e.call(s,n,a,r,i,o):e(n,a,r,i,o)):ma(c,u+5)}function nl(t,e,n,a,r,i,o,s,u){var c=hn()+t,l=Xe(),d=xa(l,c,n,a,r,i);return ya(l,c+4,o,s)||d?ga(l,c+6,u?e.call(u,n,a,r,i,o,s):e(n,a,r,i,o,s)):ma(l,c+6)}function al(t,e,n,a,r,i,o,s,u,c){var l=hn()+t,d=Xe(),p=xa(d,l,n,a,r,i);return va(d,l+4,o,s,u)||p?ga(d,l+7,c?e.call(c,n,a,r,i,o,s,u):e(n,a,r,i,o,s,u)):ma(d,l+7)}function rl(t,e,n,a,r,i,o,s,u,c,l){var d=hn()+t,p=Xe(),f=xa(p,d,n,a,r,i);return xa(p,d+4,o,s,u,c)||f?ga(p,d+8,l?e.call(l,n,a,r,i,o,s,u,c):e(n,a,r,i,o,s,u,c)):ma(p,d+8)}function il(t,e,n,a){for(var r=hn()+t,i=!1,o=Xe(),s=0;s<n.length;s++)ba(o,r++,n[s])&&(i=!0);return i?ga(o,r,e.apply(a,n)):ma(o,r)}function ol(t,e){var n,a=Xe()[vt],r=t+qt;a.firstTemplatePass?(n=function(t,e){if(e)for(var n=e.length-1;n>=0;n--){var a=e[n];if(t===a.name)return a}throw new Error("The pipe '"+t+"' could not be found!")}(e,a.pipeRegistry),a.data[r]=n,n.onDestroy&&(a.pipeDestroyHooks||(a.pipeDestroyHooks=[])).push(r,n.onDestroy)):n=a.data[r];var i=n.factory(null);return Ao(t,i),i}function sl(t,e,n){var a=Po(t);return fl(pl(t)?Xc(e,a.transform,n,a):a.transform(n))}function ul(t,e,n,a){var r=Po(t);return fl(pl(t)?Jc(e,r.transform,n,a,r):r.transform(n,a))}function cl(t,e,n,a,r){var i=Po(t);return fl(pl(t)?Qc(e,i.transform,n,a,r,i):i.transform(n,a,r))}function ll(t,e,n,a,r,i){var o=Po(t);return fl(pl(t)?tl(e,o.transform,n,a,r,i,o):o.transform(n,a,r,i))}function dl(t,e,n){var a=Po(t);return fl(pl(t)?il(e,a.transform,n,a):a.transform.apply(a,n))}function pl(t){return Xe()[vt].data[t+qt].pure}function fl(t){return ca.isWrapped(t)&&(t=ca.unwrap(t),Xe()[hn()]=ha),t}var hl=function(t){function e(e){void 0===e&&(e=!1);var n=t.call(this)||this;return n.__isAsync=e,n}return Object(a.__extends)(e,t),e.prototype.emit=function(e){t.prototype.next.call(this,e)},e.prototype.subscribe=function(e,n,a){var i,o=function(t){return null},s=function(){return null};e&&"object"==typeof e?(i=this.__isAsync?function(t){setTimeout(function(){return e.next(t)})}:function(t){e.next(t)},e.error&&(o=this.__isAsync?function(t){setTimeout(function(){return e.error(t)})}:function(t){e.error(t)}),e.complete&&(s=this.__isAsync?function(){setTimeout(function(){return e.complete()})}:function(){e.complete()})):(i=this.__isAsync?function(t){setTimeout(function(){return e(t)})}:function(t){e(t)},n&&(o=this.__isAsync?function(t){setTimeout(function(){return n(t)})}:function(t){n(t)}),a&&(s=this.__isAsync?function(){setTimeout(function(){return a()})}:function(){a()}));var u=t.prototype.subscribe.call(this,i,o,s);return e instanceof r.a&&e.add(u),u},e}(i.a),gl=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return bl(t,hu)},t}(),ml=function(t,e){return pu(t,e,Qe(),Xe())},bl=us,yl=function(){function t(t,e,n){this.parent=t,this.shallow=e,this.deep=n}return t.prototype.track=function(t,e,n,a){n?this.deep=Nl(this.deep,t,e,null!=a?a:null):this.shallow=Nl(this.shallow,t,e,null!=a?a:null)},t.prototype.clone=function(){return new t(this,null,this.deep)},t.prototype.container=function(){var e=vl(this.shallow),n=vl(this.deep);return e||n?new t(this,e,n):null},t.prototype.createView=function(){var e=xl(this.shallow),n=xl(this.deep);return e||n?new t(this,e,n):null},t.prototype.insertView=function(t){_l(t,this.shallow),_l(t,this.deep)},t.prototype.addNode=function(t){return Cl(this.deep,t),ae(t)?(Cl(this.shallow,t),t.parent&&ae(t.parent)&&Cl(this.parent.shallow,t),this.parent):(function(t){return null===t.parent||ae(t.parent)}(t)&&Cl(this.shallow,t),this)},t.prototype.removeView=function(){Tl(this.shallow),Tl(this.deep)},t}();function vl(t){for(var e=null;t;){var n=[];t.values.push(n),e={next:e,list:t.list,predicate:t.predicate,values:n,containerValues:null},t=t.next}return e}function xl(t){for(var e=null;t;)e={next:e,list:t.list,predicate:t.predicate,values:[],containerValues:t.values},t=t.next;return e}function _l(t,e){for(;e;)e.containerValues.splice(t,0,e.values),e=e.next}function Tl(t){for(;t;){var e=t.containerValues,n=e.indexOf(t.values);e.splice(n,1)[0].length&&t.list.setDirty(),t=t.next}}function wl(t,e){var n=t.localNames;if(n)for(var a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function Sl(t,e,n){var a=t[y];if("function"==typeof a)return a();var r=An(e,n,t,!1,!1);return null!==r?En(n[vt].data,n,r,e):null}function Ol(t,e,n,a){var r=t[y]();return a?r?Sl(a,e,n):null:r}function kl(t,e,n,a){return n?Sl(n,t,e):a>-1?En(e[vt].data,e,a,t):function(t,e){return 3===t.type||4===t.type?du(hu,t,e):0===t.type?pu(gl,hu,t,e):null}(t,e)}function Cl(t,e){for(var n=Xe();t;){var a=t.predicate,r=a.type;if(r){var i=null;r===gl?i=Ol(r,e,n,a.read):null!==(u=An(e,n,r,!1,!1))&&(i=kl(e,n,a.read,u)),null!==i&&Il(t,i)}else for(var o=a.selector,s=0;s<o.length;s++){var u;null!==(u=wl(e,o[s]))&&null!==(i=kl(e,n,a.read,u))&&Il(t,i)}t=t.next}}function Il(t,e){t.values.push(e),t.list.setDirty()}function Rl(t,e){var n=Array.isArray(t);return{type:n?null:t,selector:n?t:null,read:e}}function Nl(t,e,n,a){return{next:t,list:e,predicate:Rl(n,a),values:e._valuesTree,containerValues:null}}var Dl=function(){function t(){this.dirty=!0,this.changes=new hl,this._values=[],this._valuesTree=[]}return Object.defineProperty(t.prototype,"length",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"first",{get:function(){var t=this._values;return t.length?t[0]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"last",{get:function(){var t=this._values;return t.length?t[t.length-1]:null},enumerable:!0,configurable:!0}),t.prototype.map=function(t){return this._values.map(t)},t.prototype.filter=function(t){return this._values.filter(t)},t.prototype.find=function(t){return this._values.find(t)},t.prototype.reduce=function(t,e){return this._values.reduce(t,e)},t.prototype.forEach=function(t){this._values.forEach(t)},t.prototype.some=function(t){return this._values.some(t)},t.prototype.toArray=function(){return this._values.slice(0)},t.prototype[U()]=function(){return this._values[U()]()},t.prototype.toString=function(){return this._values.toString()},t.prototype.reset=function(t){this._values=function(t){for(var e=[],n=0;n<t.length;){var a=t[n];Array.isArray(a)?a.length>0?(t=a.concat(t.slice(n+1)),n=0):n++:(e.push(a),n++)}return e}(t),this.dirty=!1},t.prototype.notifyOnChanges=function(){this.changes.emit(this)},t.prototype.setDirty=function(){this.dirty=!0},t.prototype.destroy=function(){this.changes.complete(),this.changes.unsubscribe()},t}();function Al(t,e,n,a){var r,i,o,s=new Dl;return(r=yl,i=Xe(),o=i[wt],Ve&&Ve!==i[Ot]&&!ae(Ve)&&(o&&(o=i[wt]=o.clone()),Ve.flags|=4),o||(i[wt]=new r(null,null,null))).track(s,e,n,a),function(t,e,n){var a=Yo(t);a.push(e),t[vt].firstTemplatePass&&Ho(t).push(n,a.length-1)}(Xe(),s,s.destroy),null!=t&&Ao(t,s),s}function El(t){return!!t.dirty&&(t.reset(t._valuesTree),t.notifyOnChanges(),!0)}function Ll(t,e){return pu(gl,hu,t,e)}var Pl="__SANITIZER_TRUSTED_BRAND__";function Ml(t,e){return t instanceof String&&t[Pl]===e}function ql(t){return Yl(t,"Html")}function jl(t){return Yl(t,"Style")}function Fl(t){return Yl(t,"Script")}function zl(t){return Yl(t,"Url")}function Gl(t){return Yl(t,"ResourceUrl")}function Yl(t,e){var n=new String(t);return n[Pl]=e,n}var Hl=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),Vl=/^url\(([^)]+)\)$/;function Bl(t){if(!(t=String(t).trim()))return"";var e=t.match(Vl);return e&&Vu(e[1])===e[1]||t.match(Hl)&&function(t){for(var e=!0,n=!0,a=0;a<t.length;a++){var r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Fu()&&console.warn("WARNING: sanitizing unsafe style value "+t+" (see http://g.co/ng/security#xss)."),"unsafe")}function Ul(t){var e=Jl();return e?e.sanitize(ku.HTML,t)||"":Ml(t,"Html")?t.toString():sc(document,Zt(t))}function Wl(t){var e=Jl();return e?e.sanitize(ku.STYLE,t)||"":Ml(t,"Style")?t.toString():Bl(Zt(t))}function Kl(t){var e=Jl();return e?e.sanitize(ku.URL,t)||"":Ml(t,"Url")?t.toString():Vu(Zt(t))}function $l(t){var e=Jl();if(e)return e.sanitize(ku.RESOURCE_URL,t)||"";if(Ml(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Zl(t){var e=Jl();if(e)return e.sanitize(ku.SCRIPT,t)||"";if(Ml(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}var Xl=function(t,e){return void 0===e?"background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t:Wl(e)};function Jl(){var t=Xe();return t&&t[At]}var Ql={"\u0275defineBase":pt,"\u0275defineComponent":st,"\u0275defineDirective":ft,defineInjectable:v,defineInjector:x,"\u0275defineNgModule":lt,"\u0275definePipe":ht,"\u0275directiveInject":Mo,"\u0275getFactoryOf":qn,"\u0275getInheritedFactory":jn,inject:Ae,"\u0275injectAttribute":qo,"\u0275templateRefExtractor":Ll,"\u0275NgOnChangesFeature":os,"\u0275ProvidersFeature":$s,"\u0275InheritDefinitionFeature":as,"\u0275elementAttribute":Ni,"\u0275bind":_o,"\u0275container":no,"\u0275nextContext":di,"\u0275containerRefreshStart":ro,"\u0275containerRefreshEnd":io,"\u0275loadQueryList":Lo,"\u0275namespaceHTML":bi,"\u0275namespaceMathML":mi,"\u0275namespaceSVG":gi,"\u0275enableBindings":$e,"\u0275disableBindings":Ze,"\u0275allocHostVars":To,"\u0275elementStart":_i,"\u0275elementEnd":Ri,"\u0275element":yi,"\u0275elementContainerStart":vi,"\u0275elementContainerEnd":xi,"\u0275pureFunction0":Zc,"\u0275pureFunction1":Xc,"\u0275pureFunction2":Jc,"\u0275pureFunction3":Qc,"\u0275pureFunction4":tl,"\u0275pureFunction5":el,"\u0275pureFunction6":nl,"\u0275pureFunction7":al,"\u0275pureFunction8":rl,"\u0275pureFunctionV":il,"\u0275getCurrentView":Go,"\u0275restoreView":Je,"\u0275interpolation1":So,"\u0275interpolation2":Oo,"\u0275interpolation3":ko,"\u0275interpolation4":Co,"\u0275interpolation5":Io,"\u0275interpolation6":Ro,"\u0275interpolation7":No,"\u0275interpolation8":Do,"\u0275interpolationV":wo,"\u0275elementClassProp":Yi,"\u0275listener":Ii,"\u0275load":Po,"\u0275projection":lo,"\u0275elementProperty":Di,"\u0275componentHostSyntheticProperty":Ai,"\u0275pipeBind1":sl,"\u0275pipeBind2":ul,"\u0275pipeBind3":cl,"\u0275pipeBind4":ll,"\u0275pipeBindV":dl,"\u0275projectionDef":uo,"\u0275pipe":ol,"\u0275query":Al,"\u0275queryRefresh":El,"\u0275registerContentQuery":jo,"\u0275reference":Eo,"\u0275elementStyling":ji,"\u0275elementHostAttrs":Fi,"\u0275elementStylingMap":Hi,"\u0275elementStyleProp":Gi,"\u0275elementStylingApply":zi,"\u0275template":eo,"\u0275text":Vi,"\u0275textBinding":Bi,"\u0275embeddedViewStart":oo,"\u0275embeddedViewEnd":so,"\u0275i18n":Pc,"\u0275i18nAttributes":Mc,"\u0275i18nExp":Fc,"\u0275i18nStart":Rc,"\u0275i18nEnd":Ac,"\u0275i18nApply":zc,"\u0275i18nPostprocess":Dc,"\u0275sanitizeHtml":Ul,"\u0275sanitizeStyle":Wl,"\u0275defaultStyleSanitizer":Xl,"\u0275sanitizeResourceUrl":$l,"\u0275sanitizeScript":Zl,"\u0275sanitizeUrl":Kl},td=function(){return function(){}}(),ed=new Map;function nd(t,e){var n=ed.get(t);ad(t,n&&n.moduleType),ed.set(t,e)}function ad(t,e){if(e)throw new Error("Duplicate module registered for "+t+" - "+$(e)+" vs "+$(e.name))}function rd(t){var e=ed.get(t);if(!e)throw sd(t);return e}function id(t){var e=ed.get(t);if(!e)throw sd(t);return new Kc(e)}var od=rd;function sd(t){return new Error("No module with ID "+t+" loaded")}var ud=Function;function cd(t){return"function"==typeof t}var ld=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,dd=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,pd=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,fd=function(){function t(t){this._reflect=t||H.Reflect}return t.prototype.isReflectionEnabled=function(){return!0},t.prototype.factory=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new(t.bind.apply(t,Object(a.__spread)([void 0],e)))}},t.prototype._zipTypesAndAnnotations=function(t,e){var n;n=void 0===t?new Array(e.length):new Array(t.length);for(var a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n},t.prototype._ownParameters=function(t,e){var n=t.toString();if(ld.exec(n)||dd.exec(n)&&!pd.exec(n))return null;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;var a=t.ctorParameters;if(a&&a!==e.ctorParameters){var r="function"==typeof a?a():a,i=r.map(function(t){return t&&t.type}),o=r.map(function(t){return t&&hd(t.decorators)});return this._zipTypesAndAnnotations(i,o)}var s=t.hasOwnProperty(O)&&t[O],u=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return u||s?this._zipTypesAndAnnotations(u,s):new Array(t.length).fill(void 0)},t.prototype.parameters=function(t){if(!cd(t))return[];var e=gd(t),n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]},t.prototype._ownAnnotations=function(t,e){if(t.annotations&&t.annotations!==e.annotations){var n=t.annotations;return"function"==typeof n&&n.annotations&&(n=n.annotations),n}return t.decorators&&t.decorators!==e.decorators?hd(t.decorators):t.hasOwnProperty(S)?t[S]:null},t.prototype.annotations=function(t){if(!cd(t))return[];var e=gd(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)},t.prototype._ownPropMetadata=function(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){var n=t.propMetadata;return"function"==typeof n&&n.propMetadata&&(n=n.propMetadata),n}if(t.propDecorators&&t.propDecorators!==e.propDecorators){var a=t.propDecorators,r={};return Object.keys(a).forEach(function(t){r[t]=hd(a[t])}),r}return t.hasOwnProperty(k)?t[k]:null},t.prototype.propMetadata=function(t){if(!cd(t))return{};var e=gd(t),n={};if(e!==Object){var r=this.propMetadata(e);Object.keys(r).forEach(function(t){n[t]=r[t]})}var i=this._ownPropMetadata(t,e);return i&&Object.keys(i).forEach(function(t){var e=[];n.hasOwnProperty(t)&&e.push.apply(e,Object(a.__spread)(n[t])),e.push.apply(e,Object(a.__spread)(i[t])),n[t]=e}),n},t.prototype.hasLifecycleHook=function(t,e){return t instanceof ud&&e in t.prototype},t.prototype.guards=function(t){return{}},t.prototype.getter=function(t){return new Function("o","return o."+t+";")},t.prototype.setter=function(t){return new Function("o","v","return o."+t+" = v;")},t.prototype.method=function(t){return new Function("o","args","if (!o."+t+") throw new Error('\""+t+"\" is undefined');\n        return o."+t+".apply(o, args);")},t.prototype.importUri=function(t){return"object"==typeof t&&t.filePath?t.filePath:"./"+$(t)},t.prototype.resourceUri=function(t){return"./"+$(t)},t.prototype.resolveIdentifier=function(t,e,n,a){return a},t.prototype.resolveEnum=function(t,e){return t[e]},t}();function hd(t){return t?t.map(function(t){var e=t.type.annotationCls,n=t.args?t.args:[];return new(e.bind.apply(e,Object(a.__spread)([void 0],n)))}):[]}function gd(t){var e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}var md=null;function bd(){return md=md||new fd}function yd(t){return vd(bd().parameters(t))}function vd(t){var e=ve();return t.map(function(t){return function(t,e){var 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(var r=0;r<e.length;r++){var i=e[r];if(void 0!==i)if(i instanceof we||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof Oe||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof Se||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof ke||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof Te)n.token=i.token;else if(i instanceof A){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else a(i)}}else a(e);return n}(e,t)})}var xd=[],_d=[],Td=!1;function wd(t){return Array.isArray(t)?t.every(wd):!!J(t)}function Sd(t,e){void 0===e&&(e={}),Od(t,e),function(t,e){_d.push({moduleType:t,ngModule:e})}(t,e)}function Od(t,e){var n,a,r=Nd(e.declarations||xd),i=null;Object.defineProperty(t,m,{configurable:!0,get:function(){return null===i&&(i=ve().compileNgModule(Ql,"ng://"+t.name+"/ngModuleDef.js",{type:t,bootstrap:Nd(e.bootstrap||xd,J),declarations:r.map(J),imports:Nd(e.imports||xd,J).map(Dd),exports:Nd(e.exports||xd,J).map(Dd),emitInline:!0})),i}}),e.id&&(a=t,ad(n=e.id,ed.get(n)),ed.set(n,a));var o=null;Object.defineProperty(t,h,{get:function(){if(null===o){var n={name:t.name,type:t,deps:yd(t),providers:e.providers||xd,imports:[(e.imports||xd).map(J),(e.exports||xd).map(J)]};o=ve().compileInjector(Ql,"ng://"+t.name+"/ngInjectorDef.js",n)}return o},configurable:!1})}function kd(){new Map,new Map,_d.length=0}function Cd(t,e){var n=Nd(e.declarations||xd),a=Rd(t);n.forEach(function(e){e.hasOwnProperty(d)?Id(gt(e),a):e.hasOwnProperty(p)||e.hasOwnProperty(g)||(e.ngSelectorScope=t)})}function Id(t,e){t.directiveDefs=function(){return Array.from(e.compilation.directives).map(function(t){return mt(t)||gt(t)}).filter(function(t){return!!t})},t.pipeDefs=function(){return Array.from(e.compilation.pipes).map(function(t){return bt(t)})}}function Rd(t){if(!Ad(t))throw new Error(t.name+" does not have an ngModuleDef");var e=yt(t);if(null!==e.transitiveCompileScopes)return e.transitiveCompileScopes;var n={compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return e.declarations.forEach(function(t){bt(t)?n.compilation.pipes.add(t):n.compilation.directives.add(t)}),e.imports.forEach(function(t){var e=t;if(!Ad(e))throw new Error("Importing "+e.name+" which does not have an ngModuleDef");var a=Rd(e);a.exported.directives.forEach(function(t){return n.compilation.directives.add(t)}),a.exported.pipes.forEach(function(t){return n.compilation.pipes.add(t)})}),e.exports.forEach(function(t){var e=t;if(Ad(e)){var a=Rd(e);a.exported.directives.forEach(function(t){n.compilation.directives.add(t),n.exported.directives.add(t)}),a.exported.pipes.forEach(function(t){n.compilation.pipes.add(t),n.exported.pipes.add(t)})}else bt(e)?n.exported.pipes.add(e):n.exported.directives.add(e)}),e.transitiveCompileScopes=n,n}function Nd(t,e){var n=[];return t.forEach(function(t){Array.isArray(t)?n.push.apply(n,Object(a.__spread)(Nd(t,e))):n.push(e?e(t):t)}),n}function Dd(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Ad(t){return!!yt(t)}function Ed(t,e){var n=null;!function(t){et(t)&&tt.add(t)}(e),Object.defineProperty(t,d,{get:function(){var r=ve();if(null===n){if(et(e)){var i=["Component '"+Zt(t)+"' is not resolved:"];throw e.templateUrl&&i.push(" - templateUrl: "+Zt(e.templateUrl)),e.styleUrls&&e.styleUrls.length&&i.push(" - styleUrls: "+JSON.stringify(e.styleUrls)),i.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(i.join("\n"))}var o=Object(a.__assign)({},Md(t,e),{template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||it,animations:e.animations,viewQueries:qd(t,bd().propMetadata(t),Fd),directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||at.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(n=r.compileComponent(Ql,"ng://"+Zt(t)+"/template.html",o),function(){if(!Td){Td=!0;try{for(var t=_d.length-1;t>=0;t--){var e=_d[t],n=e.moduleType,a=e.ngModule;a.declarations&&a.declarations.every(wd)&&(_d.splice(t,1),Cd(n,a))}}finally{Td=!1}}}(),void 0!==t.ngSelectorScope){var s=Rd(t.ngSelectorScope);Id(n,s)}}return n},configurable:!1})}function Ld(t,e){var n=null;Object.defineProperty(t,p,{get:function(){if(null===n){var a=Md(t,e);n=ve().compileDirective(Ql,"ng://"+(t&&t.name)+"/ngDirectiveDef.js",a)}return n},configurable:!1})}function Pd(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Md(t,e){var n=bd().propMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:yd(t),host:e.host||rt,propMetadata:n,inputs:e.inputs||it,outputs:e.outputs||it,queries:qd(t,n,jd),lifecycle:{usesOnChanges:void 0!==t.prototype.ngOnChanges},typeSourceSpan:null,usesInheritance:!Pd(t),exportAs:e.exportAs||null,providers:e.providers||null}}function qd(t,e,n){var a=[],r=function(r){e.hasOwnProperty(r)&&e[r].forEach(function(e){if(n(e)){if(!e.selector)throw new Error("Can't construct a query for the property \""+r+'" of "'+Zt(t)+"\" since the query selector wasn't defined.");a.push(function(t,e){return{propertyName:r,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(function(t){return t.trim()}):J(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null};var n}(0,e))}})};for(var i in e)r(i);return a}function jd(t){var e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Fd(t){var e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function zd(t,e){var n=null;Object.defineProperty(t,g,{get:function(){return null===n&&(n=ve().compilePipe(Ql,"ng://"+Zt(t)+"/ngPipeDef.js",{type:t,name:t.name,deps:yd(t),pipeName:e.name,pure:void 0===e.pure||e.pure})),n},configurable:!1})}var Gd=C("Directive",function(t){return void 0===t&&(t={}),t},void 0,void 0,function(t,e){return Qd(t,e)}),Yd=C("Component",function(t){return void 0===t&&(t={}),Object(a.__assign)({changeDetection:j.Default},t)},Gd,void 0,function(t,e){return Jd(t,e)}),Hd=C("Pipe",function(t){return Object(a.__assign)({pure:!0},t)},void 0,void 0,function(t,e){return tp(t,e)}),Vd=function(t){return function(e,n){for(var a=[],r=2;r<arguments.length;r++)a[r-2]=arguments[r];var i=e.constructor;i.hasOwnProperty(b)||function(t){var e=t.constructor,n=e.ngBaseDef,a=e.ngBaseDef={inputs:{},outputs:{},declaredInputs:{}};n&&(l(a.inputs,n.inputs),l(a.outputs,n.outputs),l(a.declaredInputs,n.declaredInputs))}(e),t(i.ngBaseDef)[n]=a[0]}},Bd=N("Input",function(t){return{bindingPropertyName:t}},void 0,Vd(function(t){return t.inputs||{}})),Ud=N("Output",function(t){return{bindingPropertyName:t}},void 0,Vd(function(t){return t.outputs||{}})),Wd=N("HostBinding",function(t){return{hostPropertyName:t}}),Kd=N("HostListener",function(t,e){return{eventName:t,args:e}}),$d=Ed,Zd=Ld,Xd=zd,Jd=us,Qd=us,tp=us,ep=c({provide:String,useValue:c}),np=[];function ap(t,e){if(!e){var n=(c=new fd).parameters(t);return function(){return new(t.bind.apply(t,Object(a.__spread)([void 0],Le(n))))}}if(ep in e){var r=e;return function(){return r.useValue}}if(e.useExisting){var i=e;return function(){return Ae(i.useExisting)}}if(e.useFactory){var o=e;return function(){return o.useFactory.apply(o,Object(a.__spread)(Le(o.deps||np)))}}if(e.useClass){var s=e,u=e.deps;if(!u){var c=new fd;u=c.parameters(t)}return function(){var t;return new((t=s.useClass).bind.apply(t,Object(a.__spread)([void 0],Le(u))))}}var l=e.deps;return l||(c=new fd,l=c.parameters(t)),function(){return new(t.bind.apply(t,Object(a.__spread)([void 0],Le(l))))}}var rp={name:"custom-elements"},ip={name:"no-errors-schema"},op=C("NgModule",function(t){return t},void 0,void 0,function(t,e){return up(t,e)}),sp=Sd,up=function(t,e){var n=e&&e.imports||[];e&&e.exports&&(n=Object(a.__spread)(n,[e.exports])),t.ngInjectorDef=x({factory:ap(t,{useClass:t}),providers:e&&e.providers,imports:n})},cp=c({provide:String,useValue:c});function lp(t){return void 0!==t.useClass}function dp(t){return cp in t}function pp(t){return void 0!==t.useFactory}function fp(t){return void 0!==t.useExisting}var hp=C("Injectable",void 0,void 0,void 0,function(t,e){return mp(t,e)}),gp=function(t,e){var n=null;t.hasOwnProperty(f)||Object.defineProperty(t,f,{get:function(){if(null===n){var a=e||{providedIn:null},r=lp(a)||pp(a)||dp(a)||fp(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:yd(t),userDeps:void 0};if((lp(a)||pp(a))&&void 0!==a.deps&&(i.userDeps=vd(a.deps)),r)if(lp(a))i.useClass=a.useClass;else if(dp(a))i.useValue=a.useValue;else if(pp(a))i.useFactory=a.useFactory;else{if(!fp(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=ve().compileInjectable(Ql,"ng://"+t.name+"/ngInjectableDef.js",i)}return n}})},mp=function(t,e){e&&void 0!==e.providedIn&&!_(t)&&(t.ngInjectableDef=v({providedIn:e.providedIn,factory:ap(t,e)}))},bp="ngDebugContext",yp="ngOriginalError",vp="ngErrorLogger";function xp(t){return t[bp]}function _p(t){return t[yp]}function Tp(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];t.error.apply(t,Object(a.__spread)(e))}var wp=function(){function t(){this._console=console}return t.prototype.handleError=function(t){var e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t[vp]||Tp}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)},t.prototype._findContext=function(t){return t?xp(t)?xp(t):this._findContext(_p(t)):null},t.prototype._findOriginalError=function(t){for(var e=_p(t);e&&_p(e);)e=_p(e);return e},t}();function Sp(t){return t.length>1?" ("+function(t){for(var e=[],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(function(t){return $(t.token)}).join(" -> ")+")":""}function Op(t,e,n,a){var r=[e],i=n(r),o=a?function(t,e){var n=i+" caused by: "+(e instanceof Error?e.message:e),a=Error(n);return a[yp]=e,a}(0,a):Error(i);return o.addKey=kp,o.keys=r,o.injectors=[t],o.constructResolvingMessage=n,o[yp]=a,o}function kp(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function Cp(t,e){for(var n=[],a=0,r=e.length;a<r;a++){var i=e[a];n.push(i&&0!=i.length?i.map($).join(" "):"?")}return Error("Cannot resolve all parameters for '"+$(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+$(t)+"' is decorated with Injectable.")}var Ip=function(){function t(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=$(this.token)}return t.get=function(t){return Rp.get(J(t))},Object.defineProperty(t,"numberOfKeys",{get:function(){return Rp.numberOfKeys},enumerable:!0,configurable:!0}),t}(),Rp=new(function(){function t(){this._allKeys=new Map}return t.prototype.get=function(t){if(t instanceof Ip)return t;if(this._allKeys.has(t))return this._allKeys.get(t);var e=new Ip(t,Ip.numberOfKeys);return this._allKeys.set(t,e),e},Object.defineProperty(t.prototype,"numberOfKeys",{get:function(){return this._allKeys.size},enumerable:!0,configurable:!0}),t}()),Np=new(function(){function t(t){this.reflectionCapabilities=t}return t.prototype.updateCapabilities=function(t){this.reflectionCapabilities=t},t.prototype.factory=function(t){return this.reflectionCapabilities.factory(t)},t.prototype.parameters=function(t){return this.reflectionCapabilities.parameters(t)},t.prototype.annotations=function(t){return this.reflectionCapabilities.annotations(t)},t.prototype.propMetadata=function(t){return this.reflectionCapabilities.propMetadata(t)},t.prototype.hasLifecycleHook=function(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)},t.prototype.getter=function(t){return this.reflectionCapabilities.getter(t)},t.prototype.setter=function(t){return this.reflectionCapabilities.setter(t)},t.prototype.method=function(t){return this.reflectionCapabilities.method(t)},t.prototype.importUri=function(t){return this.reflectionCapabilities.importUri(t)},t.prototype.resourceUri=function(t){return this.reflectionCapabilities.resourceUri(t)},t.prototype.resolveIdentifier=function(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)},t.prototype.resolveEnum=function(t,e){return this.reflectionCapabilities.resolveEnum(t,e)},t}())(new fd),Dp=function(){function t(t,e,n){this.key=t,this.optional=e,this.visibility=n}return t.fromKey=function(e){return new t(e,!1,null)},t}(),Ap=[],Ep=function(){return function(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}(),Lp=function(){return function(t,e){this.factory=t,this.dependencies=e}}();function Pp(t){var e,n;if(t.useClass){var a=J(t.useClass);e=Np.factory(a),n=jp(a)}else t.useExisting?(e=function(t){return t},n=[Dp.fromKey(Ip.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){var n=e.map(function(t){return[t]});return e.map(function(e){return Fp(t,e,n)})}return jp(t)}(t.useFactory,t.deps)):(e=function(){return t.useValue},n=Ap);return new Lp(e,n)}function Mp(t){return new Ep(Ip.get(t.provide),[Pp(t)],t.multi||!1)}function qp(t){var e=function(t,e){for(var n=0;n<t.length;n++){var 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(var i=0;i<a.resolvedFactories.length;i++)r.resolvedFactories.push(a.resolvedFactories[i]);else e.set(a.key.id,a)}else{var o;o=a.multiProvider?new Ep(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,o)}}return e}(function t(e,n){return e.forEach(function(e){if(e instanceof ud)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(Mp),new Map);return Array.from(e.values())}function jp(t){var e=Np.parameters(t);if(!e)return[];if(e.some(function(t){return null==t}))throw Cp(t,e);return e.map(function(n){return Fp(t,n,e)})}function Fp(t,e,n){var a=null,r=!1;if(!Array.isArray(e))return zp(e instanceof Te?e.token:e,r,null);for(var i=null,o=0;o<e.length;++o){var s=e[o];s instanceof ud?a=s:s instanceof Te?a=s.token:s instanceof we?r=!0:s instanceof Se||s instanceof Oe?i=s:s instanceof w&&(a=s)}if(null!=(a=J(a)))return zp(a,r,i);throw Cp(t,n)}function zp(t,e,n){return new Dp(Ip.get(t),e,n)}var Gp=new Object,Yp=function(){function t(){}return t.resolve=function(t){return qp(t)},t.resolveAndCreate=function(e,n){var a=t.resolve(e);return t.fromResolvedProviders(a,n)},t.fromResolvedProviders=function(t,e){return new Hp(t,e)},t}(),Hp=function(){function t(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;var n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(var a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=Gp}return t.prototype.get=function(t,e){return void 0===e&&(e=ds),this._getByKey(Ip.get(t),null,e)},t.prototype.resolveAndCreateChild=function(t){var e=Yp.resolve(t);return this.createChildFromResolved(e)},t.prototype.createChildFromResolved=function(e){var n=new t(e);return n.parent=this,n},t.prototype.resolveAndInstantiate=function(t){return this.instantiateResolved(Yp.resolve([t])[0])},t.prototype.instantiateResolved=function(t){return this._instantiateProvider(t)},t.prototype.getProviderAtIndex=function(t){if(t<0||t>=this._providers.length)throw function(t){return Error("Index "+t+" is out-of-bounds.")}(t);return this._providers[t]},t.prototype._new=function(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Op(this,t.key,function(t){return"Cannot instantiate cyclic dependency!"+Sp(t)});return this._instantiateProvider(t)},t.prototype._getMaxNumberOfObjects=function(){return this.objs.length},t.prototype._instantiateProvider=function(t){if(t.multiProvider){for(var e=new Array(t.resolvedFactories.length),n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])},t.prototype._instantiate=function(t,e){var n,r,i,o=this,s=e.factory;try{n=e.dependencies.map(function(t){return o._getByReflectiveDependency(t)})}catch(u){throw u.addKey&&u.addKey(this,t.key),u}try{r=s.apply(void 0,Object(a.__spread)(n))}catch(u){throw Op(this,t.key,function(t){var e=$(t[0].token);return i.message+": Error during instantiation of "+e+"!"+Sp(t)+"."},i=u)}return r},t.prototype._getByReflectiveDependency=function(t){return this._getByKey(t.key,t.visibility,t.optional?null:ds)},t.prototype._getByKey=function(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof Se?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)},t.prototype._getObjByKeyId=function(t){for(var e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===Gp&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return Gp},t.prototype._throwOrNull=function(t,e){if(e!==ds)return e;throw function(t,e){return Op(t,e,function(t){return"No provider for "+$(t[0].token)+"!"+Sp(t)})}(this,t)},t.prototype._getByKeySelf=function(t,e){var n=this._getObjByKeyId(t.id);return n!==Gp?n:this._throwOrNull(t,e)},t.prototype._getByKeyDefault=function(e,n,a){var r;for(r=a instanceof Oe?this.parent:this;r instanceof t;){var i=r,o=i._getObjByKeyId(e.id);if(o!==Gp)return o;r=i.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)},Object.defineProperty(t.prototype,"displayName",{get:function(){return"ReflectiveInjector(providers: ["+function(t,e){for(var n=new Array(t._providers.length),a=0;a<t._providers.length;++a)n[a]=' "'+t.getProviderAtIndex(a).key.displayName+'" ';return n}(this).join(", ")+"])"},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this.displayName},t.INJECTOR_KEY=Ip.get(hs),t}();function Vp(t){return!!t&&"function"==typeof t.then}function Bp(t){return!!t&&"function"==typeof t.subscribe}var Up=new w("Application Initializer"),Wp=function(){function t(t){var e=this;this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise(function(t,n){e.resolve=t,e.reject=n})}return t.prototype.runInitializers=function(){var t=this;if(!this.initialized){var e=[],n=function(){t.done=!0,t.resolve()};if(this.appInits)for(var a=0;a<this.appInits.length;a++){var r=this.appInits[a]();Vp(r)&&e.push(r)}Promise.all(e).then(function(){n()}).catch(function(e){t.reject(e)}),0===e.length&&n(),this.initialized=!0}},t}(),Kp=new w("AppId");function $p(){return""+Xp()+Xp()+Xp()}var Zp={provide:Kp,useFactory:$p,deps:[]};function Xp(){return String.fromCharCode(97+Math.floor(25*Math.random()))}var Jp=new w("Platform Initializer"),Qp=new w("Platform ID"),tf=new w("appBootstrapListener"),ef=new w("Application Packages Root URL"),nf=function(){function t(){}return t.prototype.log=function(t){console.log(t)},t.prototype.warn=function(t){console.warn(t)},t}(),af=function(){return function(t,e){this.ngModuleFactory=t,this.componentFactories=e}}();function rf(){throw new Error("Runtime compiler is not loaded")}var of,sf,uf=function(t){return new Kc(t)},cf=rf,lf=function(t){return Promise.resolve(uf(t))},df=rf,pf=function(t){return new af(uf(t),[])},ff=rf,hf=function(t){return Promise.resolve(pf(t))},gf=rf,mf=function(){function t(){this.compileModuleSync=cf,this.compileModuleAsync=df,this.compileModuleAndAllComponentsSync=ff,this.compileModuleAndAllComponentsAsync=gf}return t.prototype.clearCache=function(){},t.prototype.clearCacheFor=function(t){},t.prototype.getModuleId=function(t){},t}(),bf=new w("compilerOptions"),yf=function(){return function(){}}();function vf(){var t=H.wtf;return!(!t||!(of=t.trace)||(sf=of.events,0))}function xf(t,e){return void 0===e&&(e=null),sf.createScope(t,e)}function _f(t,e){return of.leaveScope(t,e),e}function Tf(t,e){return of.beginTimeRange(t,e)}function wf(t){of.endTimeRange(t)}var Sf=vf();function Of(t,e){return null}var kf=Sf?xf:function(t,e){return Of},Cf=Sf?_f:function(t,e){return e},If=Sf?Tf:function(t,e){return null},Rf=Sf?wf:function(t){return null},Nf=function(){function t(t){var e,n=t.enableLongStackTrace,a=void 0!==n&&n;if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new hl(!1),this.onMicrotaskEmpty=new hl(!1),this.onStable=new hl(!1),this.onError=new hl(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");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)),a&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:function(t,n,a,r,i,o){try{return Lf(e),t.invokeTask(a,r,i,o)}finally{Pf(e)}},onInvoke:function(t,n,a,r,i,o,s){try{return Lf(e),t.invoke(a,r,i,o,s)}finally{Pf(e)}},onHasTask:function(t,n,a,r){t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,Ef(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:function(t,n,a,r){return t.handleError(a,r),e.runOutsideAngular(function(){return e.onError.emit(r)}),!1}})}return t.isInAngularZone=function(){return!0===Zone.current.get("isAngularZone")},t.assertInAngularZone=function(){if(!t.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")},t.assertNotInAngularZone=function(){if(t.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")},t.prototype.run=function(t,e,n){return this._inner.run(t,e,n)},t.prototype.runTask=function(t,e,n,a){var r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,Af,Df,Df);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}},t.prototype.runGuarded=function(t,e,n){return this._inner.runGuarded(t,e,n)},t.prototype.runOutsideAngular=function(t){return this._outer.run(t)},t}();function Df(){}var Af={};function Ef(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(function(){return t.onStable.emit(null)})}finally{t.isStable=!0}}}function Lf(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Pf(t){t._nesting--,Ef(t)}var Mf=function(){function t(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new hl,this.onMicrotaskEmpty=new hl,this.onStable=new hl,this.onError=new hl}return t.prototype.run=function(t){return t()},t.prototype.runGuarded=function(t){return t()},t.prototype.runOutsideAngular=function(t){return t()},t.prototype.runTask=function(t){return t()},t}(),qf=function(){function t(t){var e=this;this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(function(){e.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}return t.prototype._watchAngularEvents=function(){var t=this;this._ngZone.onUnstable.subscribe({next:function(){t._didWork=!0,t._isZoneStable=!1}}),this._ngZone.runOutsideAngular(function(){t._ngZone.onStable.subscribe({next:function(){Nf.assertNotInAngularZone(),W(function(){t._isZoneStable=!0,t._runCallbacksIfReady()})}})})},t.prototype.increasePendingRequestCount=function(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount},t.prototype.decreasePendingRequestCount=function(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount},t.prototype.isStable=function(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks},t.prototype._runCallbacksIfReady=function(){var t=this;if(this.isStable())W(function(){for(;0!==t._callbacks.length;){var e=t._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(t._didWork)}t._didWork=!1});else{var e=this.getPendingTasks();this._callbacks=this._callbacks.filter(function(t){return!t.updateCb||!t.updateCb(e)||(clearTimeout(t.timeoutId),!1)}),this._didWork=!0}},t.prototype.getPendingTasks=function(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(function(t){return{source:t.source,creationLocation:t.creationLocation,data:t.data}}):[]},t.prototype.addCallback=function(t,e,n){var a=this,r=-1;e&&e>0&&(r=setTimeout(function(){a._callbacks=a._callbacks.filter(function(t){return t.timeoutId!==r}),t(a._didWork,a.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:r,updateCb:n})},t.prototype.whenStable=function(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()},t.prototype.getPendingRequestCount=function(){return this._pendingCount},t.prototype.findProviders=function(t,e,n){return[]},t}(),jf=function(){function t(){this._applications=new Map,Gf.addToWindow(this)}return t.prototype.registerApplication=function(t,e){this._applications.set(t,e)},t.prototype.unregisterApplication=function(t){this._applications.delete(t)},t.prototype.unregisterAllApplications=function(){this._applications.clear()},t.prototype.getTestability=function(t){return this._applications.get(t)||null},t.prototype.getAllTestabilities=function(){return Array.from(this._applications.values())},t.prototype.getAllRootElements=function(){return Array.from(this._applications.keys())},t.prototype.findTestabilityInTree=function(t,e){return void 0===e&&(e=!0),Gf.findTestabilityInTree(this,t,e)},Object(a.__decorate)([Object(a.__metadata)("design:paramtypes",[])],t)}();function Ff(t){Gf=t}var zf,Gf=new(function(){function t(){}return t.prototype.addToWindow=function(t){},t.prototype.findTestabilityInTree=function(t,e,n){return null},t}());function Yf(t,e,n){return Promise.resolve(new Kc(n))}var Hf=new w("AllowMultipleToken"),Vf=function(){return function(t,e){this.name=t,this.token=e}}();function Bf(t){if(zf&&!zf.destroyed&&!zf.injector.get(Hf,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");zf=t.get(Zf);var e=t.get(Jp,null);return e&&e.forEach(function(t){return t()}),zf}function Uf(t,e,n){void 0===n&&(n=[]);var a="Platform: "+e,r=new w(a);return function(e){void 0===e&&(e=[]);var i=$f();if(!i||i.injector.get(Hf,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{var o=n.concat(e).concat({provide:r,useValue:!0});Bf(hs.create({providers:o,name:a}))}return Wf(r)}}function Wf(t){var e=$f();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 Kf(){zf&&!zf.destroyed&&zf.destroy()}function $f(){return zf&&!zf.destroyed?zf:null}var Zf=function(){function t(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}return t.prototype.bootstrapModuleFactory=function(t,e){var n,a=this,r="noop"===(n=e?e.ngZone:void 0)?new Mf:("zone.js"===n?void 0:n)||new Nf({enableLongStackTrace:Fu()}),i=[{provide:Nf,useValue:r}];return r.run(function(){var e=hs.create({providers:i,parent:a.injector,name:t.moduleType.name}),n=t.create(e),o=n.injector.get(wp,null);if(!o)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return n.onDestroy(function(){return Qf(a._modules,n)}),r.runOutsideAngular(function(){return r.onError.subscribe({next:function(t){o.handleError(t)}})}),function(t,e,r){try{var i=((o=n.injector.get(Wp)).runInitializers(),o.donePromise.then(function(){return a._moduleDoBootstrap(n),n}));return Vp(i)?i.catch(function(n){throw e.runOutsideAngular(function(){return t.handleError(n)}),n}):i}catch(s){throw e.runOutsideAngular(function(){return t.handleError(s)}),s}var o}(o,r)})},t.prototype.bootstrapModule=function(t,e){var n=this;void 0===e&&(e=[]);var a=Xf({},e);return function(t,e,n){return t.get(yf).createCompiler([e]).compileModuleAsync(n)}(this.injector,a,t).then(function(t){return n.bootstrapModuleFactory(t,a)})},t.prototype._moduleDoBootstrap=function(t){var e=t.injector.get(Jf);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(function(t){return e.bootstrap(t)});else{if(!t.instance.ngDoBootstrap)throw new Error("The module "+$(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)},t.prototype.onDestroy=function(t){this._destroyListeners.push(t)},Object.defineProperty(t.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(function(t){return t.destroy()}),this._destroyListeners.forEach(function(t){return t()}),this._destroyed=!0},Object.defineProperty(t.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!0,configurable:!0}),t}();function Xf(t,e){return Array.isArray(e)?e.reduce(Xf,t):Object(a.__assign)({},t,e)}var Jf=function(){function t(t,e,n,a,r,i){var c=this;this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Fu(),this._zone.onMicrotaskEmpty.subscribe({next:function(){c._zone.run(function(){c.tick()})}});var l=new o.a(function(t){c._stable=c._zone.isStable&&!c._zone.hasPendingMacrotasks&&!c._zone.hasPendingMicrotasks,c._zone.runOutsideAngular(function(){t.next(c._stable),t.complete()})}),d=new o.a(function(t){var e;c._zone.runOutsideAngular(function(){e=c._zone.onStable.subscribe(function(){Nf.assertNotInAngularZone(),W(function(){c._stable||c._zone.hasPendingMacrotasks||c._zone.hasPendingMicrotasks||(c._stable=!0,t.next(!0))})})});var n=c._zone.onUnstable.subscribe(function(){Nf.assertInAngularZone(),c._stable&&(c._stable=!1,c._zone.runOutsideAngular(function(){t.next(!1)}))});return function(){e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(l,d.pipe(Object(u.a)()))}var e;return e=t,t.prototype.bootstrap=function(t,e){var n,a=this;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.");n=t instanceof Xs?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);var r=n instanceof ou?null:this._injector.get(su),i=n.create(hs.NULL,[],e||n.selector,r);i.onDestroy(function(){a._unloadComponent(i)});var o=i.injector.get(qf,null);return o&&i.injector.get(jf).registerApplication(i.location.nativeElement,o),this._loadComponent(i),Fu()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),i},t.prototype.tick=function(){var t=this;if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");var n=e._tickScope();try{this._runningTick=!0,this._views.forEach(function(t){return t.detectChanges()}),this._enforceNoNewChanges&&this._views.forEach(function(t){return t.checkNoChanges()})}catch(a){this._zone.runOutsideAngular(function(){return t._exceptionHandler.handleError(a)})}finally{this._runningTick=!1,Cf(n)}},t.prototype.attachView=function(t){var e=t;this._views.push(e),e.attachToAppRef(this)},t.prototype.detachView=function(t){var e=t;Qf(this._views,e),e.detachFromAppRef()},t.prototype._loadComponent=function(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(tf,[]).concat(this._bootstrapListeners).forEach(function(e){return e(t)})},t.prototype._unloadComponent=function(t){this.detachView(t.hostView),Qf(this.components,t)},t.prototype.ngOnDestroy=function(){this._views.slice().forEach(function(t){return t.destroy()})},Object.defineProperty(t.prototype,"viewCount",{get:function(){return this._views.length},enumerable:!0,configurable:!0}),t._tickScope=kf("ApplicationRef#tick()"),t}();function Qf(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}var th=function(){function t(){this.dirty=!0,this._results=[],this.changes=new hl,this.length=0}return t.prototype.map=function(t){return this._results.map(t)},t.prototype.filter=function(t){return this._results.filter(t)},t.prototype.find=function(t){return this._results.find(t)},t.prototype.reduce=function(t,e){return this._results.reduce(t,e)},t.prototype.forEach=function(t){this._results.forEach(t)},t.prototype.some=function(t){return this._results.some(t)},t.prototype.toArray=function(){return this._results.slice()},t.prototype[U()]=function(){return this._results[U()]()},t.prototype.toString=function(){return this._results.toString()},t.prototype.reset=function(t){this._results=function t(e){return e.reduce(function(e,n){var a=Array.isArray(n)?t(n):n;return e.concat(a)},[])}(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]},t.prototype.notifyOnChanges=function(){this.changes.emit(this)},t.prototype.setDirty=function(){this.dirty=!0},t.prototype.destroy=function(){this.changes.complete(),this.changes.unsubscribe()},t}(),eh=function(){return function(){}}(),nh={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"},ah=function(){function t(t,e){this._compiler=t,this._config=e||nh}return t.prototype.load=function(t){return this._compiler instanceof mf?this.loadFactory(t):this.loadAndCompile(t)},t.prototype.loadAndCompile=function(t){var e=this,r=Object(a.__read)(t.split("#"),2),i=r[0],o=r[1];return void 0===o&&(o="default"),n("crnd")(i).then(function(t){return t[o]}).then(function(t){return rh(t,i,o)}).then(function(t){return e._compiler.compileModuleAsync(t)})},t.prototype.loadFactory=function(t){var e=Object(a.__read)(t.split("#"),2),r=e[0],i=e[1],o="NgFactory";return void 0===i&&(i="default",o=""),n("crnd")(this._config.factoryPathPrefix+r+this._config.factoryPathSuffix).then(function(t){return t[i+o]}).then(function(t){return rh(t,r,i)})},t}();function rh(t,e,n){if(!t)throw new Error("Cannot find '"+n+"' in '"+e+"'");return t}var ih=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return sh(t,hu)},t}(),oh=function(t,e){return function(t,e,n,r){var i;eu||(eu=function(t){function n(e,n,a){var r=t.call(this)||this;return r._lContainer=e,r._hostTNode=n,r._hostView=a,r._viewRefs=[],r}return Object(a.__extends)(n,t),Object.defineProperty(n.prototype,"element",{get:function(){return du(e,this._hostTNode,this._hostView)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"injector",{get:function(){return new Mn(this._hostTNode,this._hostView)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"parentInjector",{get:function(){var t=kn(this._hostTNode,this._hostView),e=ge(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){for(var a=n.parent.injectorIndex,r=n.parent;null!=r.parent&&a==r.injectorIndex;)r=r.parent;return r}for(var i=he(t),o=e,s=e[Ot];i>1;)s=(o=o[Mt])[Ot],i--;return s}(t,this._hostView,this._hostTNode);return pe(t)&&null!=n?new Mn(n,e):new Mn(null,this._hostView)},enumerable:!0,configurable:!0}),n.prototype.clear=function(){for(;this._lContainer[Ft].length;)this.remove(0)},n.prototype.get=function(t){return this._viewRefs[t]||null},Object.defineProperty(n.prototype,"length",{get:function(){return this._lContainer[Ft].length},enumerable:!0,configurable:!0}),n.prototype.createEmbeddedView=function(t,e,n){var a=this._adjustIndex(n),r=t.createEmbeddedView(e||{},this._lContainer,this._hostTNode,this._hostView,a);return r.attachToViewContainerRef(this),this._viewRefs.splice(a,0,r),r},n.prototype.createComponent=function(t,e,n,a,r){var i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(su,null));var o=t.create(i,a,void 0,r);return this.insert(o.hostView,e),o},n.prototype.insert=function(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var n=t._lView,a=this._adjustIndex(e);return La(n,this._lContainer,this._hostView,a,this._hostTNode.index),Ea(n,!0,Wa(a,this._lContainer[Ft],this._lContainer[zt])),t.attachToViewContainerRef(this),this._viewRefs.splice(a,0,t),t},n.prototype.move=function(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var n=this.indexOf(t);return this.detach(n),this.insert(t,this._adjustIndex(e)),t},n.prototype.indexOf=function(t){return this._viewRefs.indexOf(t)},n.prototype.remove=function(t){var e=this._adjustIndex(t,-1);Ma(this._lContainer,this._hostTNode,e),this._viewRefs.splice(e,1)},n.prototype.detach=function(t){var e=this._adjustIndex(t,-1),n=Pa(this._lContainer,e,!!this._hostTNode.detached);return null!=this._viewRefs.splice(e,1)[0]?new cu(n,n[It],n[Lt]):null},n.prototype._adjustIndex=function(t,e){return void 0===e&&(e=0),null==t?this._lContainer[Ft].length+e:t},n}(t));var o=r[n.index];if(oe(o))(i=o)[jt]=-1;else{var s=r[Dt].createComment("");if(se(r)){var u=r[Dt],c=te(n,r);Ha(u,Va(u,c),s,function(t,e){return wa(t)?t.nextSibling(e):e.nextSibling}(u,c))}else Ba(s,n,r);r[n.index]=i=to(o,n,r,s,!0),po(r,n.index,i)}return new eu(i,n,r)}(t,e,Qe(),Xe())},sh=us,uh=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return lh()},t}(),ch=function(){return fu(Qe(),Xe(),null)},lh=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},dh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(uh),ph=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(dh),fh=function(){return function(t,e){this.name=t,this.callback=e}}(),hh=function(){function t(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof gh&&e.addChild(this)}return Object.defineProperty(t.prototype,"injector",{get:function(){return this._debugContext.injector},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentInstance",{get:function(){return this._debugContext.component},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._debugContext.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){return this._debugContext.references},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){return this._debugContext.providerTokens},enumerable:!0,configurable:!0}),t}(),gh=function(t){function e(e,n,a){var r=t.call(this,e,n,a)||this;return r.properties={},r.attributes={},r.classes={},r.styles={},r.childNodes=[],r.nativeElement=e,r}return Object(a.__extends)(e,t),e.prototype.addChild=function(t){t&&(this.childNodes.push(t),t.parent=this)},e.prototype.removeChild=function(t){var e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))},e.prototype.insertChildrenAfter=function(t,e){var n,r=this,i=this.childNodes.indexOf(t);-1!==i&&((n=this.childNodes).splice.apply(n,Object(a.__spread)([i+1,0],e)),e.forEach(function(e){e.parent&&e.parent.removeChild(e),t.parent=r}))},e.prototype.insertBefore=function(t,e){var 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))},e.prototype.query=function(t){return this.queryAll(t)[0]||null},e.prototype.queryAll=function(t){var e=[];return bh(this,t,e),e},e.prototype.queryAllNodes=function(t){var e=[];return yh(this,t,e),e},Object.defineProperty(e.prototype,"children",{get:function(){return this.childNodes.filter(function(t){return t instanceof e})},enumerable:!0,configurable:!0}),e.prototype.triggerEventHandler=function(t,e){this.listeners.forEach(function(n){n.name==t&&n.callback(e)})},e}(hh);function mh(t){return t.map(function(t){return t.nativeElement})}function bh(t,e,n){t.childNodes.forEach(function(t){t instanceof gh&&(e(t)&&n.push(t),bh(t,e,n))})}function yh(t,e,n){t instanceof gh&&t.childNodes.forEach(function(t){e(t)&&n.push(t),t instanceof gh&&yh(t,e,n)})}var vh=function(){function t(t){this.nativeNode=t}return Object.defineProperty(t.prototype,"parent",{get:function(){var t=this.nativeNode.parentNode;return t?new xh(t):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return Jn(this.nativeNode)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentInstance",{get:function(){var t=this.nativeNode;return t&&Wn(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return Kn(this.nativeNode)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listeners",{get:function(){return ra(this.nativeNode).filter(aa)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){return void 0===(t=ta(this.nativeNode)).localRefs&&(t.localRefs=function(e,n){var a=e[vt].data[t.nodeIndex];if(a&&a.localNames){for(var r={},i=0;i<a.localNames.length;i+=2){var o=a.localNames[i+1];r[a.localNames[i]]=-1===o?te(a,e):e[o]}return r}return null}(t.lView)),t.localRefs||{};var t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){return function(t){var e=ta(t,!1);if(!e)return[];for(var n,a=e.lView[vt],r=a.data[e.nodeIndex],i=[],o=r.directiveEnd,s=65535&r.providerIndexes;s<o;s++){var u=a.data[s];void 0!==(n=u).type&&void 0!==n.template&&void 0!==n.declaredInputs&&(u=u.type),i.push(u)}return i}(this.nativeNode)},enumerable:!0,configurable:!0}),t}(),xh=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"nativeElement",{get:function(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.nativeElement.nodeName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"properties",{get:function(){return ta(this.nativeNode),{}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"attributes",{get:function(){var t={},e=this.nativeElement;if(e)for(var n=e.attributes,a=0;a<n.length;a++){var r=n[a];t[r.name]=r.value}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"classes",{get:function(){var t={},e=this.nativeElement;if(e){var n=na(e),a=n.lView[n.nodeIndex];if(ur(n.nodeIndex,n.lView)){for(var r=9;r<a.length;r+=4)if(wr(a,r)){var i=zr(a,r),o=Fr(a,r);"boolean"==typeof o&&(t[i]=o)}}else{var s=e.classList;for(r=0;r<s.length;r++)t[s[r]]=!0}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"styles",{get:function(){var t={},e=this.nativeElement;if(e){var n=na(e),a=n.lView[n.nodeIndex];if(ur(n.nodeIndex,n.lView)){for(var r=9;r<a.length;r+=4)if(!wr(a,r)){var i=zr(a,r),o=Fr(a,r);null!==o&&(t[i]=o)}}else{var s=e.style;for(r=0;r<s.length;r++){var u=s.item(r);t[u]=s.getPropertyValue(u)}}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"childNodes",{get:function(){for(var t=this.nativeNode.childNodes,e=[],n=0;n<t.length;n++)e.push(wh(t[n]));return e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"children",{get:function(){var t=this.nativeElement;if(!t)return[];for(var e=t.children,n=[],a=0;a<e.length;a++)n.push(wh(e[a]));return n},enumerable:!0,configurable:!0}),e.prototype.query=function(t){return this.queryAll(t)[0]||null},e.prototype.queryAll=function(t){var e=[];return _h(this,t,e,!0),e},e.prototype.queryAllNodes=function(t){var e=[];return _h(this,t,e,!1),e},e.prototype.triggerEventHandler=function(t,e){this.listeners.forEach(function(n){n.name===t&&n.callback(e)})},e}(vh);function _h(t,e,n,a){t instanceof xh&&t.childNodes.forEach(function(t){e(t)&&n.push(t),t instanceof xh&&(a&&!t.nativeElement||_h(t,e,n,a))})}var Th=new Map;function wh(t){return t instanceof Node?t.nodeType==Node.ELEMENT_NODE?new xh(t):new vh(t):null}var Sh=function(t){return Th.get(t)||null};function Oh(t){Th.set(t.nativeNode,t)}var kh=hh,Ch=gh,Ih=function(){function t(){}return t.prototype.supports=function(t){return da(t)},t.prototype.create=function(t){return new Nh(t)},t}(),Rh=function(t,e){return e},Nh=function(){function t(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||Rh}return t.prototype.forEachItem=function(t){var e;for(e=this._itHead;null!==e;e=e._next)t(e)},t.prototype.forEachOperation=function(t){for(var e=this._itHead,n=this._removalsHead,a=0,r=null;e||n;){var i=!n||e&&e.currentIndex<Lh(n,a,r)?e:n,o=Lh(i,a,r),s=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);var u=o-a,c=s-a;if(u!=c){for(var l=0;l<u;l++){var d=l<r.length?r[l]:r[l]=0,p=d+l;c<=p&&p<u&&(r[l]=d+1)}r[i.previousIndex]=c-u}}o!==s&&t(i,o,s)}},t.prototype.forEachPreviousItem=function(t){var e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)},t.prototype.forEachAddedItem=function(t){var e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)},t.prototype.forEachMovedItem=function(t){var e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)},t.prototype.forEachRemovedItem=function(t){var e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)},t.prototype.forEachIdentityChange=function(t){var e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)},t.prototype.diff=function(t){if(null==t&&(t=[]),!da(t))throw new Error("Error trying to diff '"+$(t)+"'. Only arrays and iterables are allowed");return this.check(t)?this:null},t.prototype.onDestroy=function(){},t.prototype.check=function(t){var e=this;this._reset();var n,a,r,i=this._itHead,o=!1;if(Array.isArray(t)){this.length=t.length;for(var s=0;s<this.length;s++)r=this._trackByFn(s,a=t[s]),null!==i&&K(i.trackById,r)?(o&&(i=this._verifyReinsertion(i,a,r,s)),K(i.item,a)||this._addIdentityChange(i,a)):(i=this._mismatch(i,a,r,s),o=!0),i=i._next}else n=0,function(t,e){if(Array.isArray(t))for(var n=0;n<t.length;n++)e(t[n]);else for(var a=t[U()](),r=void 0;!(r=a.next()).done;)e(r.value)}(t,function(t){r=e._trackByFn(n,t),null!==i&&K(i.trackById,r)?(o&&(i=e._verifyReinsertion(i,t,r,n)),K(i.item,t)||e._addIdentityChange(i,t)):(i=e._mismatch(i,t,r,n),o=!0),i=i._next,n++}),this.length=n;return this._truncate(i),this.collection=t,this.isDirty},Object.defineProperty(t.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead},enumerable:!0,configurable:!0}),t.prototype._reset=function(){if(this.isDirty){var t=void 0,e=void 0;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}},t.prototype._mismatch=function(t,e,n,a){var r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(K(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(K(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new Dh(e,n),r,a),t},t.prototype._verifyReinsertion=function(t,e,n,a){var 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},t.prototype._truncate=function(t){for(;null!==t;){var 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)},t.prototype._reinsertAfter=function(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);var 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},t.prototype._moveAfter=function(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t},t.prototype._addAfter=function(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t},t.prototype._insertAfter=function(t,e,n){var 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 Eh),this._linkedRecords.put(t),t.currentIndex=n,t},t.prototype._remove=function(t){return this._addToRemovals(this._unlink(t))},t.prototype._unlink=function(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);var e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t},t.prototype._addToMoves=function(t,e){return t.previousIndex===e?t:(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t,t)},t.prototype._addToRemovals=function(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Eh),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},t.prototype._addIdentityChange=function(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t},t}(),Dh=function(){return function(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}}(),Ah=function(){function t(){this._head=null,this._tail=null}return t.prototype.add=function(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)},t.prototype.get=function(t,e){var n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&K(n.trackById,t))return n;return null},t.prototype.remove=function(t){var 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},t}(),Eh=function(){function t(){this.map=new Map}return t.prototype.put=function(t){var e=t.trackById,n=this.map.get(e);n||(n=new Ah,this.map.set(e,n)),n.add(t)},t.prototype.get=function(t,e){var n=this.map.get(t);return n?n.get(t,e):null},t.prototype.remove=function(t){var e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t},Object.defineProperty(t.prototype,"isEmpty",{get:function(){return 0===this.map.size},enumerable:!0,configurable:!0}),t.prototype.clear=function(){this.map.clear()},t}();function Lh(t,e,n){var a=t.previousIndex;if(null===a)return a;var r=0;return n&&a<n.length&&(r=n[a]),a+e+r}var Ph=function(){function t(){}return t.prototype.supports=function(t){return t instanceof Map||pa(t)},t.prototype.create=function(){return new Mh},t}(),Mh=function(){function t(){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}return Object.defineProperty(t.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead},enumerable:!0,configurable:!0}),t.prototype.forEachItem=function(t){var e;for(e=this._mapHead;null!==e;e=e._next)t(e)},t.prototype.forEachPreviousItem=function(t){var e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)},t.prototype.forEachChangedItem=function(t){var e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)},t.prototype.forEachAddedItem=function(t){var e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)},t.prototype.forEachRemovedItem=function(t){var e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)},t.prototype.diff=function(t){if(t){if(!(t instanceof Map||pa(t)))throw new Error("Error trying to diff '"+$(t)+"'. Only maps and objects are allowed")}else t=new Map;return this.check(t)?this:null},t.prototype.onDestroy=function(){},t.prototype.check=function(t){var e=this;this._reset();var n=this._mapHead;if(this._appendAfter=null,this._forEach(t,function(t,a){if(n&&n.key===a)e._maybeAddToChanges(n,t),e._appendAfter=n,n=n._next;else{var r=e._getOrCreateRecordForKey(a,t);n=e._insertBeforeOrAppend(n,r)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(var a=n;null!==a;a=a._nextRemoved)a===this._mapHead&&(this._mapHead=null),this._records.delete(a.key),a._nextRemoved=a._next,a.previousValue=a.currentValue,a.currentValue=null,a._prev=null,a._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty},t.prototype._insertBeforeOrAppend=function(t,e){if(t){var 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},t.prototype._getOrCreateRecordForKey=function(t,e){if(this._records.has(t)){var n=this._records.get(t);this._maybeAddToChanges(n,e);var a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}var i=new qh(t);return this._records.set(t,i),i.currentValue=e,this._addToAdditions(i),i},t.prototype._reset=function(){if(this.isDirty){var t=void 0;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}},t.prototype._maybeAddToChanges=function(t,e){K(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))},t.prototype._addToAdditions=function(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)},t.prototype._addToChanges=function(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)},t.prototype._forEach=function(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(function(n){return e(t[n],n)})},t}(),qh=function(){return function(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}}(),jh=function(){function t(t){this.factories=t}return t.create=function(e,n){if(null!=n){var a=n.factories.slice();e=e.concat(a)}return new t(e)},t.extend=function(e){return{provide:t,useFactory:function(n){if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new Oe,new we]]}},t.prototype.find=function(t){var e,n=this.factories.find(function(e){return e.supports(t)});if(null!=n)return n;throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+((e=t).name||typeof e)+"'")},t.ngInjectableDef=v({providedIn:"root",factory:function(){return new t([new Ih])}}),t}(),Fh=function(){function t(t){this.factories=t}return t.create=function(e,n){if(n){var a=n.factories.slice();e=e.concat(a)}return new t(e)},t.extend=function(e){return{provide:t,useFactory:function(n){if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new Oe,new we]]}},t.prototype.find=function(t){var e=this.factories.find(function(e){return e.supports(t)});if(e)return e;throw new Error("Cannot find a differ supporting object '"+t+"'")},t.ngInjectableDef=v({providedIn:"root",factory:function(){return new t([new Ph])}}),t}(),zh=[new Ph],Gh=new jh([new Ih]),Yh=new Fh(zh),Hh=Uf(null,"core",[{provide:Qp,useValue:"unknown"},{provide:Zf,deps:[hs]},{provide:jf,deps:[]},{provide:nf,deps:[]}]),Vh=new w("LocaleId"),Bh=new w("Translations"),Uh=new w("TranslationsFormat"),Wh=function(t){return t[t.Error=0]="Error",t[t.Warning=1]="Warning",t[t.Ignore=2]="Ignore",t}({});function Kh(){return Gh}function $h(){return Yh}function Zh(t){return t||"en-US"}var Xh=[{provide:Jf,useClass:Jf,deps:[Nf,nf,hs,wp,ru,Wp]},{provide:Wp,useClass:Wp,deps:[[new we,Up]]},{provide:mf,useClass:mf,deps:[]},Zp,{provide:jh,useFactory:Kh,deps:[]},{provide:Fh,useFactory:$h,deps:[]},{provide:Vh,useFactory:Zh,deps:[[new Te(Vh),new we,new Oe]]}],Jh=function(){return function(t){}}(),Qh=!0,tg=!1;function eg(t,e,n){var a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function ng(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function ag(t,e){return t.nodes[e]}function rg(t,e){return t.nodes[e]}function ig(t,e){return t.nodes[e]}function og(t,e){return t.nodes[e]}function sg(t,e){return t.nodes[e]}var ug=function(){return function(){}}(),cg={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};function lg(t,e,n,a){var 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){var n=new Error(t);return dg(n,e),n}(r,t)}function dg(t,e){t[bp]=e,t[vp]=e.logError.bind(e)}function pg(t){return new Error("ViewDestroyedError: Attempt to use a destroyed view: "+t)}var fg=function(){},hg=new Map;function gg(t){var e=hg.get(t);return e||(e=$(t)+"_"+hg.size,hg.set(t,e)),e}function mg(t,e,n,a){if(ca.isWrapped(a)){a=ca.unwrap(a);var r=t.def.nodes[e].bindingIndex+n,i=ca.unwrap(t.oldValues[r]);t.oldValues[r]=new ca(i)}return a}var bg="$$undefined",yg="$$empty";function vg(t){return{id:bg,styles:t.styles,encapsulation:t.encapsulation,data:t.data}}var xg=0;function _g(t,e,n,a){return!(!(2&t.state)&&K(t.oldValues[e.bindingIndex+n],a))}function Tg(t,e,n,a){return!!_g(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function wg(t,e,n,a){var r=t.oldValues[e.bindingIndex+n];if(1&t.state||!ua(r,a)){var i=e.bindings[n].name;throw lg(cg.createDebugContext(t,e.nodeIndex),i+": "+r,i+": "+a,0!=(1&t.state))}}function Sg(t){for(var e=t;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Og(t,e){for(var n=t;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function kg(t,e,n,a){try{return Sg(33554432&t.def.nodes[e].flags?rg(t,e).componentView:t),cg.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function Cg(t){return t.parent?rg(t.parent,t.parentNodeDef.nodeIndex):null}function Ig(t){return t.parent?t.parentNodeDef.parent:null}function Rg(t,e){switch(201347067&e.flags){case 1:return rg(t,e.nodeIndex).renderElement;case 2:return ag(t,e.nodeIndex).renderText}}function Ng(t,e){return t?t+":"+e:e}function Dg(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function Ag(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function Eg(t){return 1<<t%32}function Lg(t){var e={},n=0,r={};return t&&t.forEach(function(t){var i=Object(a.__read)(t,2),o=i[0],s=i[1];"number"==typeof o?(e[o]=s,n|=Eg(o)):r[o]=s}),{matchedQueries:e,references:r,matchedQueryIds:n}}function Pg(t,e){return t.map(function(t){var n,r,i;return Array.isArray(t)?(i=(n=Object(a.__read)(t,2))[0],r=n[1]):(i=0,r=t),r&&("function"==typeof r||"object"==typeof r)&&e&&Object.defineProperty(r,cs,{value:e,configurable:!0}),{flags:i,token:r,tokenKey:gg(r)}})}function Mg(t,e,n){var a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===at.Native?rg(t,n.renderParent.nodeIndex).renderElement:void 0:e}var qg=new WeakMap;function jg(t){var e=qg.get(t);return e||((e=t(function(){return fg})).factory=t,qg.set(t,e)),e}function Fg(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(Rg(t,t.def.lastRenderRootNode))),zg(t,e,0,t.def.nodes.length-1,n,a,r)}function zg(t,e,n,a,r,i,o){for(var s=n;s<=a;s++){var u=t.def.nodes[s];11&u.flags&&Yg(t,u,e,r,i,o),s+=u.childCount}}function Gg(t,e,n,a,r,i){for(var o=t;o&&!Dg(o);)o=o.parent;for(var s=o.parent,u=Ig(o),c=u.nodeIndex+u.childCount,l=u.nodeIndex+1;l<=c;l++){var d=s.def.nodes[l];d.ngContentIndex===e&&Yg(s,d,n,a,r,i),l+=d.childCount}if(!s.parent){var p=t.root.projectableNodes[e];if(p)for(l=0;l<p.length;l++)Hg(t,p[l],n,a,r,i)}}function Yg(t,e,n,a,r,i){if(8&e.flags)Gg(t,e.ngContent.index,n,a,r,i);else{var o=Rg(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&Hg(t,o,n,a,r,i),32&e.bindingFlags&&Hg(rg(t,e.nodeIndex).componentView,o,n,a,r,i)):Hg(t,o,n,a,r,i),16777216&e.flags)for(var s=rg(t,e.nodeIndex).viewContainer._embeddedViews,u=0;u<s.length;u++)Fg(s[u],n,a,r,i);1&e.flags&&!e.element.name&&zg(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function Hg(t,e,n,a,r,i){var o=t.renderer;switch(n){case 1:o.appendChild(a,e);break;case 2:o.insertBefore(a,e,r);break;case 3:o.removeChild(a,e);break;case 0:i.push(e)}}var Vg=/^:([^:]+):(.+)$/;function Bg(t){if(":"===t[0]){var e=t.match(Vg);return[e[1],e[2]]}return["",t]}function Ug(t){for(var e=0,n=0;n<t.length;n++)e|=t[n].flags;return e}function Wg(t,e){for(var n="",a=0;a<2*t;a+=2)n=n+e[a]+$g(e[a+1]);return n+e[2*t]}function Kg(t,e,n,a,r,i,o,s,u,c,l,d,p,f,h,g,m,b,y,v){switch(t){case 1:return e+$g(n)+a;case 2:return e+$g(n)+a+$g(r)+i;case 3:return e+$g(n)+a+$g(r)+i+$g(o)+s;case 4:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c;case 5:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c+$g(l)+d;case 6:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c+$g(l)+d+$g(p)+f;case 7:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c+$g(l)+d+$g(p)+f+$g(h)+g;case 8:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c+$g(l)+d+$g(p)+f+$g(h)+g+$g(m)+b;case 9:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+c+$g(l)+d+$g(p)+f+$g(h)+g+$g(m)+b+$g(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function $g(t){return null!=t?t.toString():""}var Zg=[],Xg={};function Jg(t,e,n,a,r,i){t|=1;var o=Lg(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:o.matchedQueries,matchedQueryIds:o.matchedQueryIds,references:o.references,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?jg(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||fg},provider:null,text:null,query:null,ngContent:null}}function Qg(t,e,n,r,i,o,s,u,c,l,d,p){var f;void 0===s&&(s=[]),l||(l=fg);var h=Lg(n),g=h.matchedQueries,m=h.references,b=h.matchedQueryIds,y=null,v=null;o&&(y=(f=Object(a.__read)(Bg(o),2))[0],v=f[1]),u=u||[];for(var x=new Array(u.length),_=0;_<u.length;_++){var T=Object(a.__read)(u[_],3),w=T[0],S=T[1],O=T[2],k=Object(a.__read)(Bg(S),2),C=k[0],I=k[1],R=void 0,N=void 0;switch(15&w){case 4:N=O;break;case 1:case 8:R=O}x[_]={flags:w,ns:C,name:I,nonMinifiedName:I,securityContext:R,suffix:N}}c=c||[];var D=new Array(c.length);for(_=0;_<c.length;_++){var A=Object(a.__read)(c[_],2);D[_]={type:0,target:A[0],eventName:A[1],propName:null}}var E=(s=s||[]).map(function(t){var e=Object(a.__read)(t,2),n=e[0],r=e[1],i=Object(a.__read)(Bg(n),2);return[i[0],i[1],r]});return p=function(t){if(t&&t.id===bg){var e=null!=t.encapsulation&&t.encapsulation!==at.None||t.styles.length||Object.keys(t.data).length;t.id=e?"c"+xg++:yg}return t&&t.id===yg&&(t=null),t||null}(p),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:g,matchedQueryIds:b,references:m,ngContentIndex:r,childCount:i,bindings:x,bindingFlags:Ug(x),outputs:D,element:{ns:y,name:v,attrs:E,template:null,componentProvider:null,componentView:d||null,componentRendererType:p,publicProviders:null,allProviders:null,handleEvent:l||fg},provider:null,text:null,query:null,ngContent:null}}function tm(t,e,n){var r,i=n.element,o=t.root.selectorOrNode,s=t.renderer;if(t.parent||!o){r=i.name?s.createElement(i.name,i.ns):s.createComment("");var u=Mg(t,e,n);u&&s.appendChild(u,r)}else r=s.selectRootElement(o,!!i.componentRendererType&&i.componentRendererType.encapsulation===at.ShadowDom);if(i.attrs)for(var c=0;c<i.attrs.length;c++){var l=Object(a.__read)(i.attrs[c],3);s.setAttribute(r,l[1],l[2],l[0])}return r}function em(t,e,n,a){for(var r=0;r<n.outputs.length;r++){var i=n.outputs[r],o=nm(t,n.nodeIndex,Ng(i.target,i.eventName)),s=i.target,u=t;"component"===i.target&&(s=null,u=e);var c=u.renderer.listen(s||a,i.eventName,o);t.disposables[n.outputIndex+r]=c}}function nm(t,e,n){return function(a){return kg(t,e,n,a)}}function am(t,e,n,a){if(!Tg(t,e,n,a))return!1;var r=e.bindings[n],i=rg(t,e.nodeIndex),o=i.renderElement,s=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){var o=e.securityContext,s=o?t.root.sanitizer.sanitize(o,i):i;s=null!=s?s.toString():null;var u=t.renderer;null!=i?u.setAttribute(n,r,s,a):u.removeAttribute(n,r,a)}(t,r,o,r.ns,s,a);break;case 2:!function(t,e,n,a){var r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,o,s,a);break;case 4:!function(t,e,n,a,r){var i=t.root.sanitizer.sanitize(ku.STYLE,r);if(null!=i){i=i.toString();var o=e.suffix;null!=o&&(i+=o)}else i=null;var s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,o,s,a);break;case 8:!function(t,e,n,a,r){var i=e.securityContext,o=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,o)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,o,s,a)}return!0}var rm=new Object,im=gg(hs),om=gg(ps),sm=gg(su);function um(t,e,n,a){return n=J(n),{index:-1,deps:Pg(a,$(e)),flags:t,token:e,value:n}}function cm(t){for(var e={},n=[],a=!1,r=0;r<t.length;r++){var i=t[r];i.token===Rs&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[gg(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function lm(t,e,n){void 0===n&&(n=hs.THROW_IF_NOT_FOUND);var a,r,i=Re(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);var o=e.tokenKey;switch(o){case im:case om:case sm:return t}var s,u=t._def.providersByKey[o];if(u){var c=t._providers[u.index];return void 0===c&&(c=t._providers[u.index]=dm(t,u)),c===rm?void 0:c}if((s=_(e.token))&&(a=t,null!=(r=s).providedIn&&(function(t,e){return t._def.modules.indexOf(r.providedIn)>-1}(a)||"root"===r.providedIn&&a._def.isRoot))){var l=t._providers.length;return t._def.providersByKey[e.tokenKey]={flags:5120,value:s.factory,deps:[],index:l,token:e.token},t._providers[l]=rm,t._providers[l]=dm(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{Re(i)}}function dm(t,e){var n;switch(201347067&e.flags){case 512:n=function(t,e,n){var r=n.length;switch(r){case 0:return new e;case 1:return new e(lm(t,n[0]));case 2:return new e(lm(t,n[0]),lm(t,n[1]));case 3:return new e(lm(t,n[0]),lm(t,n[1]),lm(t,n[2]));default:for(var i=new Array(r),o=0;o<r;o++)i[o]=lm(t,n[o]);return new(e.bind.apply(e,Object(a.__spread)([void 0],i)))}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){var r=n.length;switch(r){case 0:return e();case 1:return e(lm(t,n[0]));case 2:return e(lm(t,n[0]),lm(t,n[1]));case 3:return e(lm(t,n[0]),lm(t,n[1]),lm(t,n[2]));default:for(var i=Array(r),o=0;o<r;o++)i[o]=lm(t,n[o]);return e.apply(void 0,Object(a.__spread)(i))}}(t,e.value,e.deps);break;case 2048:n=lm(t,e.deps[0]);break;case 256:n=e.value}return n===rm||null==n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?rm:n}function pm(t,e){var n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;var a=n[e];return a.viewContainerParent=null,mm(n,e),cg.dirtyParentQueries(a),hm(a),a}function fm(t,e,n){var a=e?Rg(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);Fg(n,2,r,i,void 0)}function hm(t){Fg(t,3,null,null,void 0)}function gm(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function mm(t,e){e>=t.length-1?t.pop():t.splice(e,1)}var bm=new Object;function ym(t,e,n,a,r,i){return new xm(t,e,n,a,r,i)}function vm(t){return t.viewDefFactory}var xm=function(t){function e(e,n,a,r,i,o){var s=t.call(this)||this;return s.selector=e,s.componentType=n,s._inputs=r,s._outputs=i,s.ngContentSelectors=o,s.viewDefFactory=a,s}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"inputs",{get:function(){var t=[],e=this._inputs;for(var n in e)t.push({propName:n,templateName:e[n]});return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){var t=[];for(var e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t},enumerable:!0,configurable:!0}),e.prototype.create=function(t,e,n,a){if(!a)throw new Error("ngModule should be provided");var r=jg(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,o=cg.createRootView(t,e||[],n,r,a,bm),s=ig(o,i).instance;return n&&o.renderer.setAttribute(rg(o,0).renderElement,"ng-version",Ru.full),new _m(o,new Om(o),s)},e}(Xs),_m=function(t){function e(e,n,a){var r=t.call(this)||this;return r._view=e,r._viewRef=n,r._component=a,r._elDef=r._view.def.nodes[0],r.hostView=n,r.changeDetectorRef=n,r.instance=a,r}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"location",{get:function(){return new hu(rg(this._view,this._elDef.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"injector",{get:function(){return new Rm(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"componentType",{get:function(){return this._component.constructor},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this._viewRef.destroy()},e.prototype.onDestroy=function(t){this._viewRef.onDestroy(t)},e}(Zs);function Tm(t,e,n){return new wm(t,e,n)}var wm=function(){function t(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}return Object.defineProperty(t.prototype,"element",{get:function(){return new hu(this._data.renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return new Rm(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentInjector",{get:function(){for(var t=this._view,e=this._elDef.parent;!e&&t;)e=Ig(t),t=t.parent;return t?new Rm(t,e):new Rm(this._view,null)},enumerable:!0,configurable:!0}),t.prototype.clear=function(){for(var t=this._embeddedViews.length-1;t>=0;t--){var e=pm(this._data,t);cg.destroyView(e)}},t.prototype.get=function(t){var e=this._embeddedViews[t];if(e){var n=new Om(e);return n.attachToViewContainerRef(this),n}return null},Object.defineProperty(t.prototype,"length",{get:function(){return this._embeddedViews.length},enumerable:!0,configurable:!0}),t.prototype.createEmbeddedView=function(t,e,n){var a=t.createEmbeddedView(e||{});return this.insert(a,n),a},t.prototype.createComponent=function(t,e,n,a,r){var i=n||this.parentInjector;r||t instanceof ou||(r=i.get(su));var o=t.create(i,a,void 0,r);return this.insert(o.hostView,e),o},t.prototype.insert=function(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var n,a,r,i,o=t;return i=(n=this._data).viewContainer._embeddedViews,null==(a=e)&&(a=i.length),(r=o._view).viewContainerParent=this._view,gm(i,a,r),function(t,e){var n=Cg(e);if(n&&n!==t&&!(16&e.state)){e.state|=16;var a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,n){if(!(4&n.flags)){e.parent.def.nodeFlags|=4,n.flags|=4;for(var a=n.parent;a;)a.childFlags|=4,a=a.parent}}(0,e.parentNodeDef)}}(n,r),cg.dirtyParentQueries(r),fm(n,a>0?i[a-1]:null,r),o.attachToViewContainerRef(this),t},t.prototype.move=function(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var n,a,r,i,o,s=this._embeddedViews.indexOf(t._view);return r=e,o=(i=(n=this._data).viewContainer._embeddedViews)[a=s],mm(i,a),null==r&&(r=i.length),gm(i,r,o),cg.dirtyParentQueries(o),hm(o),fm(n,r>0?i[r-1]:null,o),t},t.prototype.indexOf=function(t){return this._embeddedViews.indexOf(t._view)},t.prototype.remove=function(t){var e=pm(this._data,t);e&&cg.destroyView(e)},t.prototype.detach=function(t){var e=pm(this._data,t);return e?new Om(e):null},t}();function Sm(t){return new Om(t)}var Om=function(){function t(t){this._view=t,this._viewContainerRef=null,this._appRef=null}return Object.defineProperty(t.prototype,"rootNodes",{get:function(){return Fg(this._view,0,void 0,void 0,t=[]),t;var t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"destroyed",{get:function(){return 0!=(128&this._view.state)},enumerable:!0,configurable:!0}),t.prototype.markForCheck=function(){Sg(this._view)},t.prototype.detach=function(){this._view.state&=-5},t.prototype.detectChanges=function(){var t=this._view.root.rendererFactory;t.begin&&t.begin();try{cg.checkAndUpdateView(this._view)}finally{t.end&&t.end()}},t.prototype.checkNoChanges=function(){cg.checkNoChangesView(this._view)},t.prototype.reattach=function(){this._view.state|=4},t.prototype.onDestroy=function(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)},t.prototype.destroy=function(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),cg.destroyView(this._view)},t.prototype.detachFromAppRef=function(){this._appRef=null,hm(this._view),cg.dirtyParentQueries(this._view)},t.prototype.attachToAppRef=function(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t},t.prototype.attachToViewContainerRef=function(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t},t}();function km(t,e){return new Cm(t,e)}var Cm=function(t){function e(e,n){var a=t.call(this)||this;return a._parentView=e,a._def=n,a}return Object(a.__extends)(e,t),e.prototype.createEmbeddedView=function(t){return new Om(cg.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))},Object.defineProperty(e.prototype,"elementRef",{get:function(){return new hu(rg(this._parentView,this._def.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),e}(gl);function Im(t,e){return new Rm(t,e)}var Rm=function(){function t(t,e){this.view=t,this.elDef=e}return t.prototype.get=function(t,e){return void 0===e&&(e=hs.THROW_IF_NOT_FOUND),cg.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:gg(t)},e)},t}();function Nm(t,e){var n=t.def.nodes[e];if(1&n.flags){var a=rg(t,n.nodeIndex);return n.element.template?a.template:a.renderElement}if(2&n.flags)return ag(t,n.nodeIndex).renderText;if(20240&n.flags)return ig(t,n.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+e)}function Dm(t){return new Am(t.renderer)}var Am=function(){function t(t){this.delegate=t}return t.prototype.selectRootElement=function(t){return this.delegate.selectRootElement(t)},t.prototype.createElement=function(t,e){var n=Object(a.__read)(Bg(e),2),r=this.delegate.createElement(n[1],n[0]);return t&&this.delegate.appendChild(t,r),r},t.prototype.createViewRoot=function(t){return t},t.prototype.createTemplateAnchor=function(t){var e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e},t.prototype.createText=function(t,e){var n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n},t.prototype.projectNodes=function(t,e){for(var n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])},t.prototype.attachViewAfter=function(t,e){for(var n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t),r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)},t.prototype.detachView=function(t){for(var e=0;e<t.length;e++){var n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}},t.prototype.destroyView=function(t,e){for(var n=0;n<e.length;n++)this.delegate.destroyNode(e[n])},t.prototype.listen=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.listenGlobal=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.setElementProperty=function(t,e,n){this.delegate.setProperty(t,e,n)},t.prototype.setElementAttribute=function(t,e,n){var r=Object(a.__read)(Bg(e),2),i=r[0],o=r[1];null!=n?this.delegate.setAttribute(t,o,n,i):this.delegate.removeAttribute(t,o,i)},t.prototype.setBindingDebugInfo=function(t,e,n){},t.prototype.setElementClass=function(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)},t.prototype.setElementStyle=function(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)},t.prototype.invokeElementMethod=function(t,e,n){t[e].apply(t,n)},t.prototype.setText=function(t,e){this.delegate.setValue(t,e)},t.prototype.animate=function(){throw new Error("Renderer.animate is no longer supported!")},t}();function Em(t,e,n,a){return new Lm(t,e,n,a)}var Lm=function(){function t(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){for(var e=t._def,n=t._providers=new Array(e.providers.length),a=0;a<e.providers.length;a++){var r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=dm(t,r))}}(this)}return t.prototype.get=function(t,e,n){void 0===e&&(e=hs.THROW_IF_NOT_FOUND),void 0===n&&(n=Ce.Default);var a=0;return n&Ce.SkipSelf?a|=1:n&Ce.Self&&(a|=4),lm(this,{token:t,tokenKey:gg(t),flags:a},e)},Object.defineProperty(t.prototype,"instance",{get:function(){return this.get(this._moduleType)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentFactoryResolver",{get:function(){return this.get(ru)},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._destroyed)throw new Error("The ng module "+$(this.instance.constructor)+" has already been destroyed.");this._destroyed=!0,function(t,e){for(var n=t._def,a=new Set,r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){var i=t._providers[r];if(i&&i!==rm){var o=i.ngOnDestroy;"function"!=typeof o||a.has(i)||(o.apply(i),a.add(i))}}}(this),this._destroyListeners.forEach(function(t){return t()})},t.prototype.onDestroy=function(t){this._destroyListeners.push(t)},t}(),Pm=gg(vu),Mm=gg(wu),qm=gg(hu),jm=gg(ih),Fm=gg(gl),zm=gg(uh),Gm=gg(hs),Ym=gg(ps);function Hm(t,e,n,r,i,o,s,u){var c=[];if(s)for(var l in s){var d=Object(a.__read)(s[l],2);c[d[0]]={flags:8,name:l,nonMinifiedName:d[1],ns:null,securityContext:null,suffix:null}}var p=[];if(u)for(var f in u)p.push({type:1,propName:f,target:null,eventName:u[f]});return Um(t,e|=16384,n,r,i,i,o,c,p)}function Vm(t,e,n){return Um(-1,t|=16,null,0,e,e,n)}function Bm(t,e,n,a,r){return Um(-1,t,e,0,n,a,r)}function Um(t,e,n,a,r,i,o,s,u){var c=Lg(n),l=c.matchedQueries,d=c.references,p=c.matchedQueryIds;u||(u=[]),s||(s=[]),i=J(i);var f=Pg(o,$(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:p,references:d,ngContentIndex:-1,childCount:a,bindings:s,bindingFlags:Ug(s),outputs:u,element:null,provider:{token:r,value:i,deps:f},text:null,query:null,ngContent:null}}function Wm(t,e){return Xm(t,e)}function Km(t,e){for(var n=t;n.parent&&!Dg(n);)n=n.parent;return Jm(n.parent,Ig(n),!0,e.provider.value,e.provider.deps)}function $m(t,e){var n=Jm(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(var a=0;a<e.outputs.length;a++){var r=e.outputs[a],i=n[r.propName];if(!Bp(i))throw new Error("@Output "+r.propName+" not initialized in '"+n.constructor.name+"'.");var o=i.subscribe(Zm(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=o.unsubscribe.bind(o)}return n}function Zm(t,e,n){return function(a){return kg(t,e,n,a)}}function Xm(t,e){var n=(8192&e.flags)>0,r=e.provider;switch(201347067&e.flags){case 512:return Jm(t,e.parent,n,r.value,r.deps);case 1024:return function(t,e,n,r,i){var o=i.length;switch(o){case 0:return r();case 1:return r(tb(t,e,n,i[0]));case 2:return r(tb(t,e,n,i[0]),tb(t,e,n,i[1]));case 3:return r(tb(t,e,n,i[0]),tb(t,e,n,i[1]),tb(t,e,n,i[2]));default:for(var s=Array(o),u=0;u<o;u++)s[u]=tb(t,e,n,i[u]);return r.apply(void 0,Object(a.__spread)(s))}}(t,e.parent,n,r.value,r.deps);case 2048:return tb(t,e.parent,n,r.deps[0]);case 256:return r.value}}function Jm(t,e,n,r,i){var o=i.length;switch(o){case 0:return new r;case 1:return new r(tb(t,e,n,i[0]));case 2:return new r(tb(t,e,n,i[0]),tb(t,e,n,i[1]));case 3:return new r(tb(t,e,n,i[0]),tb(t,e,n,i[1]),tb(t,e,n,i[2]));default:for(var s=new Array(o),u=0;u<o;u++)s[u]=tb(t,e,n,i[u]);return new(r.bind.apply(r,Object(a.__spread)([void 0],s)))}}var Qm={};function tb(t,e,n,a,r){if(void 0===r&&(r=hs.THROW_IF_NOT_FOUND),8&a.flags)return a.token;var i=t;2&a.flags&&(r=null);var o=a.tokenKey;o===zm&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);for(var s=t;s;){if(e)switch(o){case Pm:return Dm(eb(s,e,n));case Mm:return eb(s,e,n).renderer;case qm:return new hu(rg(s,e.nodeIndex).renderElement);case jm:return rg(s,e.nodeIndex).viewContainer;case Fm:if(e.element.template)return rg(s,e.nodeIndex).template;break;case zm:return Sm(eb(s,e,n));case Gm:case Ym:return Im(s,e);default:var u=(n?e.element.allProviders:e.element.publicProviders)[o];if(u){var c=ig(s,u.nodeIndex);return c||(c={instance:Xm(s,u)},s.nodes[u.nodeIndex]=c),c.instance}}n=Dg(s),e=Ig(s),s=s.parent,4&a.flags&&(s=null)}var l=i.root.injector.get(a.token,Qm);return l!==Qm||r===Qm?l:i.root.ngModule.injector.get(a.token,r)}function eb(t,e,n){var a;if(n)a=rg(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!Dg(a);)a=a.parent;return a}function nb(t,e,n,a,r,i){if(32768&n.flags){var o=rg(t,n.parent.nodeIndex).componentView;2&o.def.flags&&(o.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};var s=ca.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new la(s,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function ab(t,e){if(t.def.nodeFlags&e)for(var n=t.def.nodes,a=0,r=0;r<n.length;r++){var i=n[r],o=i.parent;for(!o&&i.flags&e&&ib(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);o&&1&o.flags&&r===o.nodeIndex+o.childCount;)o.directChildFlags&e&&(a=rb(t,o,e,a)),o=o.parent}}function rb(t,e,n,a){for(var r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){var i=t.def.nodes[r];i.flags&n&&ib(t,r,i.flags&n,a++),r+=i.childCount}return a}function ib(t,e,n,a){var r=ig(t,e);if(r){var i=r.instance;i&&(cg.setCurrentNode(t,e),1048576&n&&ng(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&ng(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}}function ob(t,e,n){var a=[];for(var 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:Eg(e),bindings:a},ngContent:null}}function sb(t){for(var e=t.def.nodeMatchedQueries;t.parent&&Ag(t);){var n=t.parentNodeDef;t=t.parent;for(var a=n.nodeIndex+n.childCount,r=0;r<=a;r++)67108864&(i=t.def.nodes[r]).flags&&536870912&i.flags&&(i.query.filterId&e)===i.query.filterId&&sg(t,r).setDirty(),!(1&i.flags&&r+i.childCount<n.nodeIndex)&&67108864&i.childFlags&&536870912&i.childFlags||(r+=i.childCount)}if(134217728&t.def.nodeFlags)for(r=0;r<t.def.nodes.length;r++){var i;134217728&(i=t.def.nodes[r]).flags&&536870912&i.flags&&sg(t,r).setDirty(),r+=i.childCount}}function ub(t,e){var n=sg(t,e.nodeIndex);if(n.dirty){var a,r=void 0;if(67108864&e.flags){var i=e.parent.parent;r=cb(t,i.nodeIndex,i.nodeIndex+i.childCount,e.query,[]),a=ig(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=cb(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);for(var o=e.query.bindings,s=!1,u=0;u<o.length;u++){var c=o[u],l=void 0;switch(c.bindingType){case 0:l=n.first;break;case 1:l=n,s=!0}a[c.propName]=l}s&&n.notifyOnChanges()}}function cb(t,e,n,a,r){for(var i=e;i<=n;i++){var o=t.def.nodes[i],s=o.matchedQueries[a.id];if(null!=s&&r.push(lb(t,o,s)),1&o.flags&&o.element.template&&(o.element.template.nodeMatchedQueries&a.filterId)===a.filterId){var u=rg(t,i);if((o.childMatchedQueries&a.filterId)===a.filterId&&(cb(t,i+1,i+o.childCount,a,r),i+=o.childCount),16777216&o.flags)for(var c=u.viewContainer._embeddedViews,l=0;l<c.length;l++){var d=c[l],p=Cg(d);p&&p===u&&cb(d,0,d.def.nodes.length-1,a,r)}var f=u.template._projectedViews;if(f)for(l=0;l<f.length;l++){var h=f[l];cb(h,0,h.def.nodes.length-1,a,r)}}(o.childMatchedQueries&a.filterId)!==a.filterId&&(i+=o.childCount)}return r}function lb(t,e,n){if(null!=n)switch(n){case 1:return rg(t,e.nodeIndex).renderElement;case 0:return new hu(rg(t,e.nodeIndex).renderElement);case 2:return rg(t,e.nodeIndex).template;case 3:return rg(t,e.nodeIndex).viewContainer;case 4:return ig(t,e.nodeIndex).instance}}function db(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 pb(t,e,n){var a=Mg(t,e,n);a&&Gg(t,n.ngContent.index,1,a,null,void 0)}function fb(t,e){return mb(128,t,new Array(e+1))}function hb(t,e){return mb(32,t,new Array(e))}function gb(t,e){for(var n=Object.keys(e),a=n.length,r=new Array(a),i=0;i<a;i++){var o=n[i];r[e[o]]=o}return mb(64,t,r)}function mb(t,e,n){for(var a=new Array(n.length),r=0;r<n.length;r++){var i=n[r];a[r]={flags:8,name:i,ns:null,nonMinifiedName:i,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:Ug(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function bb(t,e,n){for(var a=new Array(n.length-1),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 yb(t,e,n){var a,r=t.renderer;a=r.createText(n.text.prefix);var i=Mg(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function vb(t,e){return(null!=t?t.toString():"")+e.suffix}function xb(t,e,n,a){for(var r=0,i=0,o=0,s=0,u=0,c=null,l=null,d=!1,p=!1,f=null,h=0;h<e.length;h++){var g=e[h];if(g.nodeIndex=h,g.parent=c,g.bindingIndex=r,g.outputIndex=i,g.renderParent=l,o|=g.flags,u|=g.matchedQueryIds,g.element){var m=g.element;m.publicProviders=c?c.element.publicProviders:Object.create(null),m.allProviders=m.publicProviders,d=!1,p=!1,g.element.template&&(u|=g.element.template.nodeMatchedQueries)}if(Tb(c,g,e.length),r+=g.bindings.length,i+=g.outputs.length,!l&&3&g.flags&&(f=g),20224&g.flags){d||(d=!0,c.element.publicProviders=Object.create(c.element.publicProviders),c.element.allProviders=c.element.publicProviders);var b=0!=(32768&g.flags);0==(8192&g.flags)||b?c.element.publicProviders[gg(g.provider.token)]=g:(p||(p=!0,c.element.allProviders=Object.create(c.element.publicProviders)),c.element.allProviders[gg(g.provider.token)]=g),b&&(c.element.componentProvider=g)}if(c?(c.childFlags|=g.flags,c.directChildFlags|=g.flags,c.childMatchedQueries|=g.matchedQueryIds,g.element&&g.element.template&&(c.childMatchedQueries|=g.element.template.nodeMatchedQueries)):s|=g.flags,g.childCount>0)c=g,_b(g)||(l=g);else for(;c&&h===c.nodeIndex+c.childCount;){var y=c.parent;y&&(y.childFlags|=c.childFlags,y.childMatchedQueries|=c.childMatchedQueries),l=(c=y)&&_b(c)?c.renderParent:c}}return{factory:null,nodeFlags:o,rootNodeFlags:s,nodeMatchedQueries:u,flags:t,nodes:e,updateDirectives:n||fg,updateRenderer:a||fg,handleEvent:function(t,n,a,r){return e[n].element.handleEvent(t,a,r)},bindingCount:r,outputCount:i,lastRenderRootNode:f}}function _b(t){return 0!=(1&t.flags)&&null===t.element.name}function Tb(t,e,n){var 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){var r=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=r&&e.nodeIndex+e.childCount>r)throw new Error("Illegal State: childCount of node leads outside of parent, at index "+e.nodeIndex+"!")}}function wb(t,e,n,a){var r=kb(t.root,t.renderer,t,e,n);return Cb(r,t.component,a),Ib(r),r}function Sb(t,e,n){var a=kb(t,t.renderer,null,null,e);return Cb(a,n,n),Ib(a),a}function Ob(t,e,n,a){var r,i=e.element.componentRendererType;return r=i?t.root.rendererFactory.createRenderer(a,i):t.root.renderer,kb(t.root,r,t,e.element.componentProvider,n)}function kb(t,e,n,a,r){var i=new Array(r.nodes.length),o=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:o,initIndex:-1}}function Cb(t,e,n){t.component=e,t.context=n}function Ib(t){var e;Dg(t)&&(e=rg(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);for(var n=t.def,a=t.nodes,r=0;r<n.nodes.length;r++){var i=n.nodes[r];cg.setCurrentNode(t,r);var o=void 0;switch(201347067&i.flags){case 1:var s=tm(t,e,i),u=void 0;if(33554432&i.flags){var c=jg(i.element.componentView);u=cg.createComponentView(t,i,c,s)}em(t,u,i,s),o={renderElement:s,componentView:u,viewContainer:null,template:i.element.template?km(t,i):void 0},16777216&i.flags&&(o.viewContainer=Tm(t,i,o));break;case 2:o=yb(t,e,i);break;case 512:case 1024:case 2048:case 256:(o=a[r])||4096&i.flags||(o={instance:Wm(t,i)});break;case 16:o={instance:Km(t,i)};break;case 16384:(o=a[r])||(o={instance:$m(t,i)}),32768&i.flags&&Cb(rg(t,i.parent.nodeIndex).componentView,o.instance,o.instance);break;case 32:case 64:case 128:o={value:void 0};break;case 67108864:case 134217728:o=new th;break;case 8:pb(t,e,i),o=void 0}a[r]=o}qb(t,Mb.CreateViewNodes),Gb(t,201326592,268435456,0)}function Rb(t){Ab(t),cg.updateDirectives(t,1),jb(t,Mb.CheckNoChanges),cg.updateRenderer(t,1),qb(t,Mb.CheckNoChanges),t.state&=-97}function Nb(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,eg(t,0,256),Ab(t),cg.updateDirectives(t,0),jb(t,Mb.CheckAndUpdate),Gb(t,67108864,536870912,0);var e=eg(t,256,512);ab(t,2097152|(e?1048576:0)),cg.updateRenderer(t,0),qb(t,Mb.CheckAndUpdate),Gb(t,134217728,536870912,0),ab(t,8388608|((e=eg(t,512,768))?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,eg(t,768,1024)}function Db(t,e,n,r,i,o,s,u,c,l,d,p,f){return 0===n?function(t,e,n,a,r,i,o,s,u,c,l,d){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,o,s,u,c,l,d){var p=e.bindings.length,f=!1;return p>0&&am(t,e,0,n)&&(f=!0),p>1&&am(t,e,1,a)&&(f=!0),p>2&&am(t,e,2,r)&&(f=!0),p>3&&am(t,e,3,i)&&(f=!0),p>4&&am(t,e,4,o)&&(f=!0),p>5&&am(t,e,5,s)&&(f=!0),p>6&&am(t,e,6,u)&&(f=!0),p>7&&am(t,e,7,c)&&(f=!0),p>8&&am(t,e,8,l)&&(f=!0),p>9&&am(t,e,9,d)&&(f=!0),f}(t,e,n,a,r,i,o,s,u,c,l,d);case 2:return function(t,e,n,a,r,i,o,s,u,c,l,d){var p=!1,f=e.bindings,h=f.length;if(h>0&&Tg(t,e,0,n)&&(p=!0),h>1&&Tg(t,e,1,a)&&(p=!0),h>2&&Tg(t,e,2,r)&&(p=!0),h>3&&Tg(t,e,3,i)&&(p=!0),h>4&&Tg(t,e,4,o)&&(p=!0),h>5&&Tg(t,e,5,s)&&(p=!0),h>6&&Tg(t,e,6,u)&&(p=!0),h>7&&Tg(t,e,7,c)&&(p=!0),h>8&&Tg(t,e,8,l)&&(p=!0),h>9&&Tg(t,e,9,d)&&(p=!0),p){var g=e.text.prefix;h>0&&(g+=vb(n,f[0])),h>1&&(g+=vb(a,f[1])),h>2&&(g+=vb(r,f[2])),h>3&&(g+=vb(i,f[3])),h>4&&(g+=vb(o,f[4])),h>5&&(g+=vb(s,f[5])),h>6&&(g+=vb(u,f[6])),h>7&&(g+=vb(c,f[7])),h>8&&(g+=vb(l,f[8])),h>9&&(g+=vb(d,f[9]));var m=ag(t,e.nodeIndex).renderText;t.renderer.setValue(m,g)}return p}(t,e,n,a,r,i,o,s,u,c,l,d);case 16384:return function(t,e,n,a,r,i,o,s,u,c,l,d){var p=ig(t,e.nodeIndex),f=p.instance,h=!1,g=void 0,m=e.bindings.length;return m>0&&_g(t,e,0,n)&&(h=!0,g=nb(t,p,e,0,n,g)),m>1&&_g(t,e,1,a)&&(h=!0,g=nb(t,p,e,1,a,g)),m>2&&_g(t,e,2,r)&&(h=!0,g=nb(t,p,e,2,r,g)),m>3&&_g(t,e,3,i)&&(h=!0,g=nb(t,p,e,3,i,g)),m>4&&_g(t,e,4,o)&&(h=!0,g=nb(t,p,e,4,o,g)),m>5&&_g(t,e,5,s)&&(h=!0,g=nb(t,p,e,5,s,g)),m>6&&_g(t,e,6,u)&&(h=!0,g=nb(t,p,e,6,u,g)),m>7&&_g(t,e,7,c)&&(h=!0,g=nb(t,p,e,7,c,g)),m>8&&_g(t,e,8,l)&&(h=!0,g=nb(t,p,e,8,l,g)),m>9&&_g(t,e,9,d)&&(h=!0,g=nb(t,p,e,9,d,g)),g&&f.ngOnChanges(g),65536&e.flags&&ng(t,256,e.nodeIndex)&&f.ngOnInit(),262144&e.flags&&f.ngDoCheck(),h}(t,e,n,a,r,i,o,s,u,c,l,d);case 32:case 64:case 128:return function(t,e,n,a,r,i,o,s,u,c,l,d){var p=e.bindings,f=!1,h=p.length;if(h>0&&Tg(t,e,0,n)&&(f=!0),h>1&&Tg(t,e,1,a)&&(f=!0),h>2&&Tg(t,e,2,r)&&(f=!0),h>3&&Tg(t,e,3,i)&&(f=!0),h>4&&Tg(t,e,4,o)&&(f=!0),h>5&&Tg(t,e,5,s)&&(f=!0),h>6&&Tg(t,e,6,u)&&(f=!0),h>7&&Tg(t,e,7,c)&&(f=!0),h>8&&Tg(t,e,8,l)&&(f=!0),h>9&&Tg(t,e,9,d)&&(f=!0),f){var g=og(t,e.nodeIndex),m=void 0;switch(201347067&e.flags){case 32:m=new Array(p.length),h>0&&(m[0]=n),h>1&&(m[1]=a),h>2&&(m[2]=r),h>3&&(m[3]=i),h>4&&(m[4]=o),h>5&&(m[5]=s),h>6&&(m[6]=u),h>7&&(m[7]=c),h>8&&(m[8]=l),h>9&&(m[9]=d);break;case 64:m={},h>0&&(m[p[0].name]=n),h>1&&(m[p[1].name]=a),h>2&&(m[p[2].name]=r),h>3&&(m[p[3].name]=i),h>4&&(m[p[4].name]=o),h>5&&(m[p[5].name]=s),h>6&&(m[p[6].name]=u),h>7&&(m[p[7].name]=c),h>8&&(m[p[8].name]=l),h>9&&(m[p[9].name]=d);break;case 128:var b=n;switch(h){case 1:m=b.transform(n);break;case 2:m=b.transform(a);break;case 3:m=b.transform(a,r);break;case 4:m=b.transform(a,r,i);break;case 5:m=b.transform(a,r,i,o);break;case 6:m=b.transform(a,r,i,o,s);break;case 7:m=b.transform(a,r,i,o,s,u);break;case 8:m=b.transform(a,r,i,o,s,u,c);break;case 9:m=b.transform(a,r,i,o,s,u,c,l);break;case 10:m=b.transform(a,r,i,o,s,u,c,l,d)}}g.value=m}return f}(t,e,n,a,r,i,o,s,u,c,l,d);default:throw"unreachable"}}(t,e,r,i,o,s,u,c,l,d,p,f):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){for(var a=!1,r=0;r<n.length;r++)am(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){for(var a=e.bindings,r=!1,i=0;i<n.length;i++)Tg(t,e,i,n[i])&&(r=!0);if(r){var o="";for(i=0;i<n.length;i++)o+=vb(n[i],a[i]);o=e.text.prefix+o;var s=ag(t,e.nodeIndex).renderText;t.renderer.setValue(s,o)}return r}(t,e,n);case 16384:return function(t,e,n){for(var a=ig(t,e.nodeIndex),r=a.instance,i=!1,o=void 0,s=0;s<n.length;s++)_g(t,e,s,n[s])&&(i=!0,o=nb(t,a,e,s,n[s],o));return o&&r.ngOnChanges(o),65536&e.flags&&ng(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){for(var r=e.bindings,i=!1,o=0;o<n.length;o++)Tg(t,e,o,n[o])&&(i=!0);if(i){var s=og(t,e.nodeIndex),u=void 0;switch(201347067&e.flags){case 32:u=n;break;case 64:for(u={},o=0;o<n.length;o++)u[r[o].name]=n[o];break;case 128:var c=n[0],l=n.slice(1);u=c.transform.apply(c,Object(a.__spread)(l))}s.value=u}return i}(t,e,n);default:throw"unreachable"}}(t,e,r)}function Ab(t){var e=t.def;if(4&e.nodeFlags)for(var n=0;n<e.nodes.length;n++){var a=e.nodes[n];if(4&a.flags){var r=rg(t,n).template._projectedViews;if(r)for(var i=0;i<r.length;i++){var o=r[i];o.state|=32,Og(o,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Eb(t,e,n,a,r,i,o,s,u,c,l,d,p){return 0===n?function(t,e,n,a,r,i,o,s,u,c,l,d){var p=e.bindings.length;p>0&&wg(t,e,0,n),p>1&&wg(t,e,1,a),p>2&&wg(t,e,2,r),p>3&&wg(t,e,3,i),p>4&&wg(t,e,4,o),p>5&&wg(t,e,5,s),p>6&&wg(t,e,6,u),p>7&&wg(t,e,7,c),p>8&&wg(t,e,8,l),p>9&&wg(t,e,9,d)}(t,e,a,r,i,o,s,u,c,l,d,p):function(t,e,n){for(var a=0;a<n.length;a++)wg(t,e,a,n[a])}(t,e,a),!1}function Lb(t,e){if(sg(t,e.nodeIndex).dirty)throw lg(cg.createDebugContext(t,e.nodeIndex),"Query "+e.query.id+" not dirty","Query "+e.query.id+" dirty",0!=(1&t.state))}function Pb(t){if(!(128&t.state)){if(jb(t,Mb.Destroy),qb(t,Mb.Destroy),ab(t,131072),t.disposables)for(var e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(16&t.state){var e=Cg(t);if(e){var n=e.template._projectedViews;n&&(mm(n,n.indexOf(t)),cg.dirtyParentQueries(t))}}}(t),t.renderer.destroyNode&&function(t){for(var e=t.def.nodes.length,n=0;n<e;n++){var a=t.def.nodes[n];1&a.flags?t.renderer.destroyNode(rg(t,n).renderElement):2&a.flags?t.renderer.destroyNode(ag(t,n).renderText):(67108864&a.flags||134217728&a.flags)&&sg(t,n).destroy()}}(t),Dg(t)&&t.renderer.destroy(),t.state|=128}}var Mb=function(t){return t[t.CreateViewNodes=0]="CreateViewNodes",t[t.CheckNoChanges=1]="CheckNoChanges",t[t.CheckNoChangesProjectedViews=2]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate=3]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews=4]="CheckAndUpdateProjectedViews",t[t.Destroy=5]="Destroy",t}({});function qb(t,e){var n=t.def;if(33554432&n.nodeFlags)for(var a=0;a<n.nodes.length;a++){var r=n.nodes[a];33554432&r.flags?Fb(rg(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function jb(t,e){var n=t.def;if(16777216&n.nodeFlags)for(var a=0;a<n.nodes.length;a++){var r=n.nodes[a];if(16777216&r.flags)for(var i=rg(t,a).viewContainer._embeddedViews,o=0;o<i.length;o++)Fb(i[o],e);else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function Fb(t,e){var n=t.state;switch(e){case Mb.CheckNoChanges:0==(128&n)&&(12==(12&n)?Rb(t):64&n&&zb(t,Mb.CheckNoChangesProjectedViews));break;case Mb.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Rb(t):64&n&&zb(t,e));break;case Mb.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Nb(t):64&n&&zb(t,Mb.CheckAndUpdateProjectedViews));break;case Mb.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Nb(t):64&n&&zb(t,e));break;case Mb.Destroy:Pb(t);break;case Mb.CreateViewNodes:Ib(t)}}function zb(t,e){jb(t,e),qb(t,e)}function Gb(t,e,n,a){if(t.def.nodeFlags&e&&t.def.nodeFlags&n)for(var r=t.def.nodes.length,i=0;i<r;i++){var o=t.def.nodes[i];if(o.flags&e&&o.flags&n)switch(cg.setCurrentNode(t,o.nodeIndex),a){case 0:ub(t,o);break;case 1:Lb(t,o)}o.childFlags&e&&o.childFlags&n||(i+=o.childCount)}}var Yb=!1;function Hb(){if(!Yb){Yb=!0;var t=Fu()?{setCurrentNode:py,createRootView:Bb,createEmbeddedView:Wb,createComponentView:Kb,createNgModuleRef:$b,overrideProvider:Qb,overrideComponentView:ty,clearOverrides:ey,checkAndUpdateView:iy,checkNoChangesView:oy,destroyView:sy,createDebugContext:function(t,e){return new xy(t,e)},handleEvent:fy,updateDirectives:hy,updateRenderer:gy}:{setCurrentNode:function(){},createRootView:Vb,createEmbeddedView:wb,createComponentView:Ob,createNgModuleRef:Em,overrideProvider:fg,overrideComponentView:fg,clearOverrides:fg,checkAndUpdateView:Nb,checkNoChangesView:Rb,destroyView:Pb,createDebugContext:function(t,e){return new xy(t,e)},handleEvent:function(t,e,n,a){return t.def.handleEvent(t,e,n,a)},updateDirectives:function(t,e){return t.def.updateDirectives(0===e?ay:ry,t)},updateRenderer:function(t,e){return t.def.updateRenderer(0===e?ay:ry,t)}};cg.setCurrentNode=t.setCurrentNode,cg.createRootView=t.createRootView,cg.createEmbeddedView=t.createEmbeddedView,cg.createComponentView=t.createComponentView,cg.createNgModuleRef=t.createNgModuleRef,cg.overrideProvider=t.overrideProvider,cg.overrideComponentView=t.overrideComponentView,cg.clearOverrides=t.clearOverrides,cg.checkAndUpdateView=t.checkAndUpdateView,cg.checkNoChangesView=t.checkNoChangesView,cg.destroyView=t.destroyView,cg.resolveDep=tb,cg.createDebugContext=t.createDebugContext,cg.handleEvent=t.handleEvent,cg.updateDirectives=t.updateDirectives,cg.updateRenderer=t.updateRenderer,cg.dirtyParentQueries=sb}}function Vb(t,e,n,a,r,i){var o=r.injector.get(_u);return Sb(Ub(t,r,o,e,n),a,i)}function Bb(t,e,n,a,r,i){var o=r.injector.get(_u),s=Ub(t,r,new Sy(o),e,n),u=ny(a);return Ty(dy.create,Sb,null,[s,u,i])}function Ub(t,e,n,a,r){var i=e.injector.get(Cu),o=e.injector.get(wp),s=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:s,errorHandler:o}}function Wb(t,e,n,a){var r=ny(n);return Ty(dy.create,wb,null,[t,e,r,a])}function Kb(t,e,n,a){return n=Jb.get(e.element.componentProvider.provider.token)||ny(n),Ty(dy.create,Ob,null,[t,e,n,a])}function $b(t,e,n,a){return Em(t,e,n,function(t){var e=function(t){var e=!1,n=!1;return 0===Zb.size?{hasOverrides:e,hasDeprecatedOverrides:n}:(t.providers.forEach(function(t){var a=Zb.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(function(t){Xb.forEach(function(a,r){_(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})}),{hasOverrides:e,hasDeprecatedOverrides:n})}(t),n=e.hasDeprecatedOverrides;return e.hasOverrides?(function(t){for(var e=0;e<t.providers.length;e++){var a=t.providers[e];n&&(a.flags|=4096);var r=Zb.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=Pg(r.deps),a.value=r.value)}if(Xb.size>0){var i=new Set(t.modules);Xb.forEach(function(e,a){if(i.has(_(a).providedIn)){var r={token:a,flags:e.flags|(n?4096:0),deps:Pg(e.deps),value:e.value,index:t.providers.length};t.providers.push(r),t.providersByKey[gg(a)]=r}})}}(t=t.factory(function(){return fg})),t):t}(a))}var Zb=new Map,Xb=new Map,Jb=new Map;function Qb(t){var e;Zb.set(t.token,t),"function"==typeof t.token&&(e=_(t.token))&&"function"==typeof e.providedIn&&Xb.set(t.token,t)}function ty(t,e){var n=jg(vm(e)),a=jg(n.nodes[0].element.componentView);Jb.set(t,a)}function ey(){Zb.clear(),Xb.clear(),Jb.clear()}function ny(t){if(0===Zb.size)return t;var e=function(t){for(var e=[],n=null,a=0;a<t.nodes.length;a++){var r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&Zb.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(function(){return fg});for(var n=0;n<e.length;n++)a(t,e[n]);return t;function a(t,e){for(var n=e+1;n<t.nodes.length;n++){var a=t.nodes[n];if(1&a.flags)return;if(3840&a.flags){var r=a.provider,i=Zb.get(r.token);i&&(a.flags=-3841&a.flags|i.flags,r.deps=Pg(i.deps),r.value=i.value)}}}}function ay(t,e,n,a,r,i,o,s,u,c,l,d,p){var f=t.def.nodes[e];return Db(t,f,n,a,r,i,o,s,u,c,l,d,p),224&f.flags?og(t,e).value:void 0}function ry(t,e,n,a,r,i,o,s,u,c,l,d,p){var f=t.def.nodes[e];return Eb(t,f,n,a,r,i,o,s,u,c,l,d,p),224&f.flags?og(t,e).value:void 0}function iy(t){return Ty(dy.detectChanges,Nb,null,[t])}function oy(t){return Ty(dy.checkNoChanges,Rb,null,[t])}function sy(t){return Ty(dy.destroy,Pb,null,[t])}var uy,cy,ly,dy=function(t){return t[t.create=0]="create",t[t.detectChanges=1]="detectChanges",t[t.checkNoChanges=2]="checkNoChanges",t[t.destroy=3]="destroy",t[t.handleEvent=4]="handleEvent",t}({});function py(t,e){cy=t,ly=e}function fy(t,e,n,a){return py(t,e),Ty(dy.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function hy(t,e){if(128&t.state)throw pg(dy[uy]);return py(t,yy(t,0)),t.def.updateDirectives(function(t,n,a){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var o=t.def.nodes[n];return 0===e?my(t,o,a,r):by(t,o,a,r),16384&o.flags&&py(t,yy(t,n)),224&o.flags?og(t,o.nodeIndex).value:void 0},t)}function gy(t,e){if(128&t.state)throw pg(dy[uy]);return py(t,vy(t,0)),t.def.updateRenderer(function(t,n,a){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var o=t.def.nodes[n];return 0===e?my(t,o,a,r):by(t,o,a,r),3&o.flags&&py(t,vy(t,n)),224&o.flags?og(t,o.nodeIndex).value:void 0},t)}function my(t,e,n,r){if(Db.apply(void 0,Object(a.__spread)([t,e,n],r))){var i=1===n?r[0]:r;if(16384&e.flags){for(var o={},s=0;s<e.bindings.length;s++){var u=e.bindings[s],c=i[s];8&u.flags&&(o[(f=u.nonMinifiedName,"ng-reflect-"+f.replace(/[$@]/g,"_").replace(oa,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return"-"+t[1].toLowerCase()}))]=sa(c))}var l=e.parent,d=rg(t,l.nodeIndex).renderElement;if(l.element.name)for(var p in o)null!=(c=o[p])?t.renderer.setAttribute(d,p,c):t.renderer.removeAttribute(d,p);else t.renderer.setValue(d,"bindings="+JSON.stringify(o,null,2))}}var f}function by(t,e,n,r){Eb.apply(void 0,Object(a.__spread)([t,e,n],r))}function yy(t,e){for(var n=e;n<t.def.nodes.length;n++){var a=t.def.nodes[n];if(16384&a.flags&&a.bindings&&a.bindings.length)return n}return null}function vy(t,e){for(var n=e;n<t.def.nodes.length;n++){var a=t.def.nodes[n];if(3&a.flags&&a.bindings&&a.bindings.length)return n}return null}var xy=function(){function t(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];for(var n=this.nodeDef,a=t;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=Ig(a),a=a.parent;this.elDef=n,this.elView=a}return Object.defineProperty(t.prototype,"elOrCompView",{get:function(){return rg(this.elView,this.elDef.nodeIndex).componentView||this.view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return Im(this.elView,this.elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"component",{get:function(){return this.elOrCompView.component},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this.elOrCompView.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){var t=[];if(this.elDef)for(var e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){var n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){var t={};if(this.elDef){_y(this.elView,this.elDef,t);for(var e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){var n=this.elView.def.nodes[e];20224&n.flags&&_y(this.elView,n,t),e+=n.childCount}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentRenderElement",{get:function(){var t=function(t){for(;t&&!Dg(t);)t=t.parent;return t.parent?rg(t.parent,Ig(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"renderNode",{get:function(){return 2&this.nodeDef.flags?Rg(this.view,this.nodeDef):Rg(this.elView,this.elDef)},enumerable:!0,configurable:!0}),t.prototype.logError=function(t){for(var e,n,r=[],i=1;i<arguments.length;i++)r[i-1]=arguments[i];2&this.nodeDef.flags?(e=this.view.def,n=this.nodeDef.nodeIndex):(e=this.elView.def,n=this.elDef.nodeIndex);var o=function(t,e){for(var n=-1,a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(e,n),s=-1;e.factory(function(){var e;return++s===o?(e=t.error).bind.apply(e,Object(a.__spread)([t],r)):fg}),s<o&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error.apply(t,Object(a.__spread)(r)))},t}();function _y(t,e,n){for(var a in e.references)n[a]=lb(t,e,e.references[a])}function Ty(t,e,n,a){var r=uy,i=cy,o=ly;try{uy=t;var s=e.apply(n,a);return cy=i,ly=o,uy=r,s}catch(u){if(xp(u)||!cy)throw u;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),dg(t,e),t}(u,wy())}}function wy(){return cy?new xy(cy,ly):null}var Sy=function(){function t(t){this.delegate=t}return t.prototype.createRenderer=function(t,e){return new Oy(this.delegate.createRenderer(t,e))},t.prototype.begin=function(){this.delegate.begin&&this.delegate.begin()},t.prototype.end=function(){this.delegate.end&&this.delegate.end()},t.prototype.whenRenderingDone=function(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)},t}(),Oy=function(){function t(t){this.delegate=t,this.debugContextFactory=wy,this.data=this.delegate.data}return t.prototype.createDebugContext=function(t){return this.debugContextFactory(t)},t.prototype.destroyNode=function(t){!function(t){Th.delete(t.nativeNode)}(Sh(t)),this.delegate.destroyNode&&this.delegate.destroyNode(t)},t.prototype.destroy=function(){this.delegate.destroy()},t.prototype.createElement=function(t,e){var n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){var r=new gh(n,null,a);r.name=t,Oh(r)}return n},t.prototype.createComment=function(t){var e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&Oh(new hh(e,null,n)),e},t.prototype.createText=function(t){var e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&Oh(new hh(e,null,n)),e},t.prototype.appendChild=function(t,e){var n=Sh(t),a=Sh(e);n&&a&&n instanceof gh&&n.addChild(a),this.delegate.appendChild(t,e)},t.prototype.insertBefore=function(t,e,n){var a=Sh(t),r=Sh(e),i=Sh(n);a&&r&&a instanceof gh&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)},t.prototype.removeChild=function(t,e){var n=Sh(t),a=Sh(e);n&&a&&n instanceof gh&&n.removeChild(a),this.delegate.removeChild(t,e)},t.prototype.selectRootElement=function(t,e){var n=this.delegate.selectRootElement(t,e),a=wy();return a&&Oh(new gh(n,null,a)),n},t.prototype.setAttribute=function(t,e,n,a){var r=Sh(t);r&&r instanceof gh&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)},t.prototype.removeAttribute=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)},t.prototype.addClass=function(t,e){var n=Sh(t);n&&n instanceof gh&&(n.classes[e]=!0),this.delegate.addClass(t,e)},t.prototype.removeClass=function(t,e){var n=Sh(t);n&&n instanceof gh&&(n.classes[e]=!1),this.delegate.removeClass(t,e)},t.prototype.setStyle=function(t,e,n,a){var r=Sh(t);r&&r instanceof gh&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)},t.prototype.removeStyle=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)},t.prototype.setProperty=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)},t.prototype.listen=function(t,e,n){if("string"!=typeof t){var a=Sh(t);a&&a.listeners.push(new fh(e,n))}return this.delegate.listen(t,e,n)},t.prototype.parentNode=function(t){return this.delegate.parentNode(t)},t.prototype.nextSibling=function(t){return this.delegate.nextSibling(t)},t.prototype.setValue=function(t,e){return this.delegate.setValue(t,e)},t}();function ky(t){return Hb(),cg.overrideProvider(t)}function Cy(t,e){return Hb(),cg.overrideComponentView(t,e)}function Iy(){return Hb(),cg.clearOverrides()}function Ry(t,e,n){return new Ny(t,e,n)}var Ny=function(t){function e(e,n,a){var r=t.call(this)||this;return r.moduleType=e,r._bootstrapComponents=n,r._ngModuleDefFactory=a,r}return Object(a.__extends)(e,t),e.prototype.create=function(t){Hb();var e=function(t){var e=Array.from(t.providers),n=Array.from(t.modules),a={};for(var r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(jg(this._ngModuleDefFactory));return cg.createNgModuleRef(this.moduleType,t||hs.NULL,this._bootstrapComponents,e)},e}(uu)},ChqD:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}()},CxY0:function(t,e,n){"use strict";var a=n("nYho"),r=n("Nehr");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=v,e.resolve=function(t,e){return v(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?v(t,!1,!0).resolveObject(e):e},e.format=function(t){return r.isString(t)&&(t=v(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var o=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),d=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n("r8II");function v(t,e,n){if(t&&r.isObject(t)&&t instanceof i)return t;var a=new i;return a.parse(t,e,n),a}i.prototype.parse=function(t,e,n){if(!r.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),s=-1!==i&&i<t.indexOf("#")?"?":"#",c=t.split(s);c[0]=c[0].replace(/\\/g,"/");var v=t=c.join(s);if(v=v.trim(),!n&&1===t.split("#").length){var x=u.exec(v);if(x)return this.path=v,this.href=v,this.pathname=x[1],x[2]?(this.search=x[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var _=o.exec(v);if(_){var T=(_=_[0]).toLowerCase();this.protocol=T,v=v.substr(_.length)}if(n||_||v.match(/^\/\/[^@\/]+@[^@\/]+/)){var w="//"===v.substr(0,2);!w||_&&m[_]||(v=v.substr(2),this.slashes=!0)}if(!m[_]&&(w||_&&!b[_])){for(var S,O,k=-1,C=0;C<p.length;C++)-1!==(I=v.indexOf(p[C]))&&(-1===k||I<k)&&(k=I);for(-1!==(O=-1===k?v.lastIndexOf("@"):v.lastIndexOf("@",k))&&(S=v.slice(0,O),v=v.slice(O+1),this.auth=decodeURIComponent(S)),k=-1,C=0;C<d.length;C++){var I;-1!==(I=v.indexOf(d[C]))&&(-1===k||I<k)&&(k=I)}-1===k&&(k=v.length),this.host=v.slice(0,k),v=v.slice(k),this.parseHost(),this.hostname=this.hostname||"";var R="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!R)for(var N=this.hostname.split(/\./),D=(C=0,N.length);C<D;C++){var A=N[C];if(A&&!A.match(f)){for(var E="",L=0,P=A.length;L<P;L++)A.charCodeAt(L)>127?E+="x":E+=A[L];if(!E.match(f)){var M=N.slice(0,C),q=N.slice(C+1),j=A.match(h);j&&(M.push(j[1]),q.unshift(j[2])),q.length&&(v="/"+q.join(".")+v),this.hostname=M.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=a.toASCII(this.hostname)),this.host=(this.hostname||"")+(this.port?":"+this.port:""),this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!g[T])for(C=0,D=l.length;C<D;C++){var F=l[C];if(-1!==v.indexOf(F)){var z=encodeURIComponent(F);z===F&&(z=escape(F)),v=v.split(F).join(z)}}var G=v.indexOf("#");-1!==G&&(this.hash=v.substr(G),v=v.slice(0,G));var Y=v.indexOf("?");return-1!==Y?(this.search=v.substr(Y),this.query=v.substr(Y+1),e&&(this.query=y.parse(this.query)),v=v.slice(0,Y)):e&&(this.search="",this.query={}),v&&(this.pathname=v),b[T]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(this.pathname||"")+(this.search||"")),this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",a=this.hash||"",i=!1,o="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&r.isObject(this.query)&&Object.keys(this.query).length&&(o=y.stringify(this.query));var s=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||b[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),s&&"?"!==s.charAt(0)&&(s="?"+s),e+i+(n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(s=s.replace("#","%23"))+a},i.prototype.resolve=function(t){return this.resolveObject(v(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(r.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var n=new i,a=Object.keys(this),o=0;o<a.length;o++){var s=a[o];n[s]=this[s]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var u=Object.keys(t),c=0;c<u.length;c++){var l=u[c];"protocol"!==l&&(n[l]=t[l])}return b[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!b[t.protocol]){for(var d=Object.keys(t),p=0;p<d.length;p++){var f=d[p];n[f]=t[f]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||m[t.protocol])n.pathname=t.pathname;else{for(var h=(t.pathname||"").split("/");h.length&&!(t.host=h.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),n.pathname=h.join("/")}return n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,(n.pathname||n.search)&&(n.path=(n.pathname||"")+(n.search||"")),n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var g=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),v=y||g||n.host&&t.pathname,x=v,_=n.pathname&&n.pathname.split("/")||[],T=(h=t.pathname&&t.pathname.split("/")||[],n.protocol&&!b[n.protocol]);if(T&&(n.hostname="",n.port=null,n.host&&(""===_[0]?_[0]=n.host:_.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===h[0]?h[0]=t.host:h.unshift(t.host)),t.host=null),v=v&&(""===h[0]||""===_[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,_=h;else if(h.length)_||(_=[]),_.pop(),_=_.concat(h),n.search=t.search,n.query=t.query;else if(!r.isNullOrUndefined(t.search))return T&&(n.hostname=n.host=_.shift(),(C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=C.shift(),n.host=n.hostname=C.shift())),n.search=t.search,n.query=t.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!_.length)return n.pathname=null,n.path=n.search?"/"+n.search:null,n.href=n.format(),n;for(var w=_.slice(-1)[0],S=(n.host||t.host||_.length>1)&&("."===w||".."===w)||""===w,O=0,k=_.length;k>=0;k--)"."===(w=_[k])?_.splice(k,1):".."===w?(_.splice(k,1),O++):O&&(_.splice(k,1),O--);if(!v&&!x)for(;O--;O)_.unshift("..");!v||""===_[0]||_[0]&&"/"===_[0].charAt(0)||_.unshift(""),S&&"/"!==_.join("/").substr(-1)&&_.push("");var C,I=""===_[0]||_[0]&&"/"===_[0].charAt(0);return T&&(n.hostname=n.host=I?"":_.length?_.shift():"",(C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=C.shift(),n.host=n.hostname=C.shift())),(v=v||n.host&&_.length)&&!I&&_.unshift(""),_.length?n.pathname=_.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"D/JM":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},D4zM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t,e){this.elementRef=t,this.renderer=e}return t.prototype.ngOnInit=function(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"icon-prepend"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()},t.prototype.getInputElement=function(){return document.getElementById(this.cdPasswordButton)},t.prototype.update=function(){var 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"))},t.prototype.onClick=function(){var t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()},t}()},DKTb:function(t,e,n){"use strict";function a(t){setTimeout(function(){throw t})}n.d(e,"a",function(){return a})},"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]}n("wd/R").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"}})}()},DNAf:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){return function(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)}}()},DQlY:function(t,e,n){"use strict";n.d(e,"a",function(){return s}),n.d(e,"d",function(){return l}),n.d(e,"c",function(){return d}),n.d(e,"f",function(){return u}),n.d(e,"e",function(){return f}),n.d(e,"b",function(){return p});var a=n("CcnG"),r=n("rpEJ"),i=n("lqqz"),o=n("NJnL"),s=function(){return function(){this.hide=Function,this.setClass=Function}}(),u=function(){return function(){}}(),c={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}},l=function(){function t(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.config=Object.assign({},t)}return t.prototype.ngOnInit=function(){var t=this;this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(function(){t.isShown=!0,t._renderer.addClass(t._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()},t.prototype.onClick=function(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||(this.bsModalService.setDismissReason("backdrop-click"),this.hide())},t.prototype.onEsc=function(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()))},t.prototype.ngOnDestroy=function(){this.isShown&&this.hide()},t.prototype.hide=function(){var t=this;!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(function(){t.isShown=!1,document&&document.body&&1===t.bsModalService.getModalsCount()&&t._renderer.removeClass(document.body,"modal-open"),t.bsModalService.hide(t.level),t.isModalHiding=!1},this.isAnimated?300:0))},t}(),d=function(){function t(t,e){this._isShown=!1,this.element=t,this.renderer=e}return Object.defineProperty(t.prototype,"isAnimated",{get:function(){return this._isAnimated},set:function(t){this._isAnimated=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isShown",{get:function(){return this._isShown},set:function(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"))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0},t}(),p=function(){function t(t,e){this.clf=e,this.config=c,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)}return t.prototype.show=function(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},c,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)},t.prototype.hide=function(t){var e=this;1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(function(){e._hideModal(t),e.removeLoaders(t)},this.config.animated?150:0)},t.prototype._showBackdrop=function(){var 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(d).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))},t.prototype._hideBackdrop=function(){var t=this;this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(function(){return t.removeBackdrop()},this.config.animated?150:0))},t.prototype._showModal=function(t){var e=this.loaders[this.loaders.length-1],n=new s,a=e.provide({provide:u,useValue:this.config}).provide({provide:s,useValue:n}).attach(l).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=function(){a.instance.hide()},n.content=e.getInnerComponent()||null,n.setClass=function(t){a.instance.config.class=t},n},t.prototype._hideModal=function(t){var e=this.loaders[t-1];e&&e.hide()},t.prototype.getModalsCount=function(){return this.modalsCount},t.prototype.setDismissReason=function(t){this.lastDismissReason=t},t.prototype.removeBackdrop=function(){this._backdropLoader.hide(),this.backdropRef=null},t.prototype.checkScrollbar=function(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},t.prototype.setScrollbar=function(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},t.prototype.resetScrollbar=function(){document.body.style.paddingRight=this.originalBodyPadding+"px"},t.prototype.getScrollbarWidth=function(){var t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);var e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e},t.prototype._createLoaders=function(){var 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)},t.prototype.removeLoaders=function(t){this.loaders.splice(t-1,1),this.loaders.forEach(function(t,e){t.instance.level=e+1})},t.prototype.copyEvent=function(t,e){var n=this;t.subscribe(function(){e.emit(n.lastDismissReason)})},t}(),f=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[p,i.a,o.a]}},t}()},DSvg:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("aexS"),r=n("CcnG"),i=n("t/Na"),o=n("ZYCi"),s=n("pL04"),u=function(){function t(t,e,n){this.authStorageService=t,this.http=e,this.router=n}return t.prototype.check=function(t){return this.http.post("api/auth/check",{token:t})},t.prototype.login=function(t){var e=this;return this.http.post("api/auth",t).toPromise().then(function(t){e.authStorageService.set(t.username,t.token,t.permissions)})},t.prototype.logout=function(t){var e=this;return void 0===t&&(t=null),this.http.post("api/auth/logout",null).subscribe(function(n){e.router.navigate(["/logout"],{skipLocationChange:!0}),e.authStorageService.remove(),t&&t(),window.location.replace(n.redirect_url)})},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(a.a),r.inject(i.c),r.inject(o.l))},token:t,providedIn:s.a}),t}()},Da1D:function(t,e,n){"use strict";n.d(e,"a",function(){return o}),n.d(e,"b",function(){return i}),n.d(e,"d",function(){return s}),n.d(e,"c",function(){return r});var a=n("rpEJ"),r=function(){return function(){this.animate=!1,this.max=100}}(),i=function(){function t(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}return Object.defineProperty(t.prototype,"animate",{set:function(t){this._animate=t,this.bars.forEach(function(e){e.animate=t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"striped",{set:function(t){this._striped=t,this.bars.forEach(function(e){e.striped=t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this.isStacked=Array.isArray(t),this._value=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"max",{get:function(){return this._max},set:function(t){this._max=t,this.bars.forEach(function(t){t.recalculatePercentage()})},enumerable:!0,configurable:!0}),t.prototype.addBar=function(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)},t.prototype.removeBar=function(t){this.bars.splice(this.bars.indexOf(t),1)},t}(),o=function(){function t(t){this.percent=0,this.progress=t}return Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"setBarWidth",{get:function(){return this.recalculatePercentage(),this.percent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.progress.addBar(this)},t.prototype.ngOnDestroy=function(){this.progress.removeBar(this)},t.prototype.recalculatePercentage=function(){this.percent=+(this.value/this.progress.max*100).toFixed(2);var t=this.progress.bars.reduce(function(t,e){return t+e.percent},0);t>100&&(this.percent-=t-100)},t}(),s=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[r]}},t}()},Dkky:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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}})}()},Dmvi:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},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:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};t.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_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\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'\u0131nc\u0131";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"))},DtyJ:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("KhEm"),i=n("IxPp"),o=n("xTla"),s=n("K9Ia"),u=n("26FU"),c=n("S5bw"),l=n("svcd"),d=n("KQya"),p=n("T1DM"),f=n("zo3G"),h=n("mrSG"),g=n("h9Dq"),m=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return h.__extends(e,t),e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0?t.prototype.requestAsyncId.call(this,e,n,a):(e.actions.push(this),e.scheduled||(e.scheduled=requestAnimationFrame(function(){return e.flush(null)})))},e.prototype.recycleAsyncId=function(e,n,a){if(void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,a);0===e.actions.length&&(cancelAnimationFrame(n),e.scheduled=void 0)},e}(g.a),b=n("CS9Q"),y=new(function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return h.__extends(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,a=-1,r=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++a<r&&(t=n.shift()));if(this.active=!1,e){for(;++a<r&&(t=n.shift());)t.unsubscribe();throw e}},e}(b.a))(m),v=function(t){function e(e,n){void 0===e&&(e=x),void 0===n&&(n=Number.POSITIVE_INFINITY);var a=t.call(this,e,function(){return a.frame})||this;return a.maxFrames=n,a.frame=0,a.index=-1,a}return h.__extends(e,t),e.prototype.flush=function(){for(var t,e,n=this.actions,a=this.maxFrames;(e=n[0])&&e.delay<=a&&(n.shift(),this.frame=e.delay,!(t=e.execute(e.state,e.delay))););if(t){for(;e=n.shift();)e.unsubscribe();throw t}},e.frameTimeFactor=10,e}(b.a),x=function(t){function e(e,n,a){void 0===a&&(a=e.index+=1);var r=t.call(this,e,n)||this;return r.scheduler=e,r.work=n,r.index=a,r.active=!0,r.index=e.index=a,r}return h.__extends(e,t),e.prototype.schedule=function(n,a){if(void 0===a&&(a=0),!this.id)return t.prototype.schedule.call(this,n,a);this.active=!1;var r=new e(this.scheduler,this.work);return this.add(r),r.schedule(n,a)},e.prototype.requestAsyncId=function(t,n,a){void 0===a&&(a=0),this.delay=t.frame+a;var r=t.actions;return r.push(this),r.sort(e.sortActions),!0},e.prototype.recycleAsyncId=function(t,e,n){void 0===n&&(n=0)},e.prototype._execute=function(e,n){if(!0===this.active)return t.prototype._execute.call(this,e,n)},e.sortActions=function(t,e){return t.delay===e.delay?t.index===e.index?0:t.index>e.index?1:-1:t.delay>e.delay?1:-1},e}(g.a),_=n("siIJ"),T=n("pugT"),w=n("FFOo"),S=n("60iU"),O=n("y3By"),k=n("+umK"),C=n("mChF"),I=n("zrt+"),R=n("b7mW"),N=n("3fWJ"),D=n("8g8A"),A=n("awvh"),E=n("3U0i"),L=n("67Y/"),P=n("1fDf"),M=n("isby"),q=n("nkY7");function j(t,e,n){if(e){if(!Object(q.a)(e))return function(){for(var a=[],r=0;r<arguments.length;r++)a[r]=arguments[r];return j(t,n).apply(void 0,a).pipe(Object(L.a)(function(t){return Object(M.a)(t)?e.apply(void 0,t):e(t)}))};n=e}return function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];var i,o=this,s={context:o,subject:i,callbackFunc:t,scheduler:n};return new a.a(function(a){if(n)return n.schedule(F,0,{args:e,subscriber:a,params:s});if(!i){i=new l.a;try{t.apply(o,e.concat([function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.next(t.length<=1?t[0]:t),i.complete()}]))}catch(r){Object(P.a)(i)?i.error(r):console.warn(r)}}return i.subscribe(a)})}}function F(t){var e=this,n=t.args,a=t.subscriber,r=t.params,i=r.callbackFunc,o=r.context,s=r.scheduler,u=r.subject;if(!u){u=r.subject=new l.a;try{i.apply(o,n.concat([function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e.add(s.schedule(z,0,{value:t.length<=1?t[0]:t,subject:u}))}]))}catch(c){u.error(c)}}this.add(u.subscribe(a))}function z(t){var e=t.subject;e.next(t.value),e.complete()}function G(t,e,n){if(e){if(!Object(q.a)(e))return function(){for(var a=[],r=0;r<arguments.length;r++)a[r]=arguments[r];return G(t,n).apply(void 0,a).pipe(Object(L.a)(function(t){return Object(M.a)(t)?e.apply(void 0,t):e(t)}))};n=e}return function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];var i={subject:void 0,args:e,callbackFunc:t,scheduler:n,context:this};return new a.a(function(a){var r=i.context,o=i.subject;if(n)return n.schedule(Y,0,{params:i,subscriber:a,context:r});if(!o){o=i.subject=new l.a;try{t.apply(r,e.concat([function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.shift();n?o.error(n):(o.next(t.length<=1?t[0]:t),o.complete())}]))}catch(s){Object(P.a)(o)?o.error(s):console.warn(s)}}return o.subscribe(a)})}}function Y(t){var e=this,n=t.params,a=t.subscriber,r=t.context,i=n.callbackFunc,o=n.args,s=n.scheduler,u=n.subject;if(!u){u=n.subject=new l.a;try{i.apply(r,o.concat([function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var a=t.shift();e.add(a?s.schedule(V,0,{err:a,subject:u}):s.schedule(H,0,{value:t.length<=1?t[0]:t,subject:u}))}]))}catch(c){this.add(s.schedule(V,0,{err:c,subject:u}))}}this.add(u.subscribe(a))}function H(t){var e=t.subject;e.next(t.value),e.complete()}function V(t){t.subject.error(t.err)}var B=n("dzgT"),U=n("dEwP"),W=n("lYZG"),K=n("G5J1"),$=n("VNr4"),Z=n("0/uQ"),X=n("2Bdj");function J(t,e,n,r){return Object(X.a)(n)&&(r=n,n=void 0),r?J(t,e,n).pipe(Object(L.a)(function(t){return Object(M.a)(t)?r.apply(void 0,t):r(t)})):new a.a(function(a){!function t(e,n,a,r,i){var o;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){var s=e;e.addEventListener(n,a,i),o=function(){return s.removeEventListener(n,a,i)}}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){var u=e;e.on(n,a),o=function(){return u.off(n,a)}}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){var c=e;e.addListener(n,a),o=function(){return c.removeListener(n,a)}}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(var l=0,d=e.length;l<d;l++)t(e[l],n,a,r,i)}r.add(o)}(t,e,function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)},a,n)})}function Q(t,e,n){return n?Q(t,e).pipe(Object(L.a)(function(t){return Object(M.a)(t)?n.apply(void 0,t):n(t)})):new a.a(function(n){var a,r=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n.next(1===t.length?t[0]:t)};try{a=t(r)}catch(i){return void n.error(i)}if(Object(X.a)(e))return function(){return e(r,a)}})}function tt(t,e,n,r,i){var o,s;return 1==arguments.length?(s=t.initialState,e=t.condition,n=t.iterate,o=t.resultSelector||C.a,i=t.scheduler):void 0===r||Object(q.a)(r)?(s=t,o=C.a,i=r):(s=t,o=r),new a.a(function(t){var a=s;if(i)return i.schedule(et,0,{subscriber:t,iterate:n,condition:e,resultSelector:o,state:a});for(;;){if(e){var r=void 0;try{r=e(a)}catch(c){return void t.error(c)}if(!r){t.complete();break}}var u=void 0;try{u=o(a)}catch(c){return void t.error(c)}if(t.next(u),t.closed)break;try{a=n(a)}catch(c){return void t.error(c)}}})}function et(t){var e=t.subscriber,n=t.condition;if(!e.closed){if(t.needIterate)try{t.state=t.iterate(t.state)}catch(i){return void e.error(i)}else t.needIterate=!0;if(n){var a=void 0;try{a=n(t.state)}catch(i){return void e.error(i)}if(!a)return void e.complete();if(e.closed)return}var r;try{r=t.resultSelector(t.state)}catch(i){return void e.error(i)}if(!e.closed&&(e.next(r),!e.closed))return this.schedule(t)}}function nt(t,e,n){return void 0===e&&(e=K.a),void 0===n&&(n=K.a),Object(W.a)(function(){return t()?e:n})}var at=n("xXU7"),rt=n("p0ib"),it=new a.a(k.a);function ot(){return it}var st=n("F/XL");function ut(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(0===t.length)return K.a;var n=t[0],r=t.slice(1);return 1===t.length&&Object(M.a)(n)?ut.apply(void 0,n):new a.a(function(t){var e=function(){return t.add(ut.apply(void 0,r).subscribe(t))};return Object(Z.a)(n).subscribe({next:function(e){t.next(e)},error:e,complete:e})})}function ct(t,e){return new a.a(e?function(n){var a=Object.keys(t),r=new T.a;return r.add(e.schedule(lt,0,{keys:a,index:0,subscriber:n,subscription:r,obj:t})),r}:function(e){for(var n=Object.keys(t),a=0;a<n.length&&!e.closed;a++){var r=n[a];t.hasOwnProperty(r)&&e.next([r,t[r]])}e.complete()})}function lt(t){var e=t.keys,n=t.index,a=t.subscriber,r=t.subscription,i=t.obj;if(!a.closed)if(n<e.length){var o=e[n];a.next([o,i[o]]),r.add(this.schedule({keys:e,index:n+1,subscriber:a,subscription:r,obj:i}))}else a.complete()}var dt=n("W0Ae");function pt(t,e,n){return void 0===t&&(t=0),new a.a(function(a){void 0===e&&(e=t,t=0);var r=0,i=t;if(n)return n.schedule(ft,0,{index:r,count:e,start:t,subscriber:a});for(;;){if(r++>=e){a.complete();break}if(a.next(i++),a.closed)break}})}function ft(t){var e=t.start,n=t.index,a=t.subscriber;n>=t.count?a.complete():(a.next(e),a.closed||(t.index=n+1,t.start=e+1,this.schedule(t)))}var ht=n("XlPw"),gt=n("gI3B");function mt(t,e){return new a.a(function(n){var a,r;try{a=t()}catch(o){return void n.error(o)}try{r=e(a)}catch(o){return void n.error(o)}var i=(r?Object(Z.a)(r):K.a).subscribe(n);return function(){i.unsubscribe(),a&&a.unsubscribe()}})}var bt=n("909l"),yt=n("iLxQ");n.d(e,"Observable",function(){return a.a}),n.d(e,"ConnectableObservable",function(){return r.a}),n.d(e,"GroupedObservable",function(){return i.a}),n.d(e,"observable",function(){return o.a}),n.d(e,"Subject",function(){return s.a}),n.d(e,"BehaviorSubject",function(){return u.a}),n.d(e,"ReplaySubject",function(){return c.a}),n.d(e,"AsyncSubject",function(){return l.a}),n.d(e,"asapScheduler",function(){return d.a}),n.d(e,"asyncScheduler",function(){return p.a}),n.d(e,"queueScheduler",function(){return f.a}),n.d(e,"animationFrameScheduler",function(){return y}),n.d(e,"VirtualTimeScheduler",function(){return v}),n.d(e,"VirtualAction",function(){return x}),n.d(e,"Scheduler",function(){return _.a}),n.d(e,"Subscription",function(){return T.a}),n.d(e,"Subscriber",function(){return w.a}),n.d(e,"Notification",function(){return S.a}),n.d(e,"pipe",function(){return O.a}),n.d(e,"noop",function(){return k.a}),n.d(e,"identity",function(){return C.a}),n.d(e,"isObservable",function(){return I.a}),n.d(e,"ArgumentOutOfRangeError",function(){return R.a}),n.d(e,"EmptyError",function(){return N.a}),n.d(e,"ObjectUnsubscribedError",function(){return D.a}),n.d(e,"UnsubscriptionError",function(){return A.a}),n.d(e,"TimeoutError",function(){return E.a}),n.d(e,"bindCallback",function(){return j}),n.d(e,"bindNodeCallback",function(){return G}),n.d(e,"combineLatest",function(){return B.b}),n.d(e,"concat",function(){return U.a}),n.d(e,"defer",function(){return W.a}),n.d(e,"empty",function(){return K.b}),n.d(e,"forkJoin",function(){return $.a}),n.d(e,"from",function(){return Z.a}),n.d(e,"fromEvent",function(){return J}),n.d(e,"fromEventPattern",function(){return Q}),n.d(e,"generate",function(){return tt}),n.d(e,"iif",function(){return nt}),n.d(e,"interval",function(){return at.a}),n.d(e,"merge",function(){return rt.a}),n.d(e,"never",function(){return ot}),n.d(e,"of",function(){return st.a}),n.d(e,"onErrorResumeNext",function(){return ut}),n.d(e,"pairs",function(){return ct}),n.d(e,"race",function(){return dt.a}),n.d(e,"range",function(){return pt}),n.d(e,"throwError",function(){return ht.a}),n.d(e,"timer",function(){return gt.a}),n.d(e,"using",function(){return mt}),n.d(e,"zip",function(){return bt.b}),n.d(e,"EMPTY",function(){return K.a}),n.d(e,"NEVER",function(){return it}),n.d(e,"config",function(){return yt.a})},Dwqy:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("wd/R"),r=function(){function t(){}return t.prototype.transform=function(t){return t?a(1e3*t).fromNow():"unknown"},t}()},DxQv:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 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\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},Dysq:function(t,e){t.exports='<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>\u5207\u63db\u5c0e\u89bd</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u5100\u8868\u677f</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u53e2\u96c6</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u4e3b\u6a5f</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f</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>\u7d44\u614b</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH \u5730\u5716</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\u7ba1\u7406\u54e1\u6a21\u7d44</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u8b66\u793a</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u6c60</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u5340\u584a</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u93e1\u50cf</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>\u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u7269\u4ef6\u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u6876</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u8fd4\u56de</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u9078\u53d6\u8a9e\u8a00</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u9762\u677f\u8cc7\u6599...</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528\u76e3\u63a7\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\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 \u5100\u8868\u677f\u4e0d\u5b58\u5728\u3002\u5982\u9700\u4e86\u89e3\n  \u5982\u4f55\u5411 Grafana\xa0\u65b0\u589e\u5100\u8868\u677f\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana \u6642\u9593\u9078\u64c7\u5668</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\u91cd\u8a2d\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u8cc7\u6599\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9078\u53d6\u7684\u6578\u76ee</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u627e\u5230\u7684\u6578\u76ee</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u7e3d\u8a08</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8a2d\u5b9a</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>\u901a\u5e38\u4e0d\u9700\u8981\u8b8a\u66f4\u9019\u4e9b\u53c3\u6578\u7684\u9810\u8a2d\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u652f\u63f4\u5132\u5b58</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u78ba\u8a8d</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u53d6\u6d88</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u9032\u968e\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u76ee\u6a19 IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u6b64\u6b04\u4f4d\u70ba\u5fc5\u586b\u6b04\u4f4d\u3002</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN \u6a21\u5f0f\u932f\u8aa4\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN \u6a21\u5f0f\u61c9\u5982\u4e0b\u6240\u793a\ufe30\u300ciqn.$year-$month.$reversedAddress:$definedName\u300d</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>\u4f8b\u5982\uff1aiqn.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>\u66f4\u591a\u8cc7\u8a0a</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u6b64\u76ee\u6a19\u7684\u9032\u968e\u8a2d\u5b9a\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u5165\u53e3\u7db2\u7ad9</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>\u81f3\u5c11\u9700\u8981\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \u500b\u7269\u4ef6\u9598\u9053\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u65b0\u589e\u5165\u53e3\u7db2\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u6b64\u5f71\u50cf\u7684\u8a2d\u5b9a\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u81f3\u5c11\u9700\u8981 1 \u500b\u5f71\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u65b0\u589e\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \u9a57\u8b49</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u7528\u6236\u7aef IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u555f\u52d5\u5668 IQN \u5fc5\u9808\u552f\u4e00\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u4f7f\u7528\u8005</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>\u4f7f\u7528\u8005\u540d\u7a31\u7684\u9577\u5ea6\u5fc5\u9808\u4ecb\u65bc 8 \u81f3 64 \u500b\u5b57\u5143\u4e4b\u9593\uff0c\u4e26\u4e14\u53ea\u80fd\u5305\u542b\u4ee5\u4e0b\n                        \u5b57\u5143\ufe30\u5b57\u6bcd\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u6216\u300c:\u300d\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u96d9\u5411\u9a57\u8b49\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u96d9\u5411\u9a57\u8b49\u5bc6\u78bc</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>\u555f\u52d5\u5668\u5c6c\u65bc\u7fa4\u7d44\u3002\u5f71\u50cf\u9808\u5728\u7fa4\u7d44\u4e2d\u9032\u884c\u8a2d\u5b9a\u3002 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u672a\u65b0\u589e\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u65b0\u589e\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u65b0\u589e\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u63d0\u4ea4</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>\u78ba\u5b9a\u8981\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u9078\u53d6\u7684\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u55ce\uff1f\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u662f\u7684\uff0c\u6211\u78ba\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u63a2\u67e5\u9a57\u8b49</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>\u4f7f\u7528\u8005\u540d\u7a31\u7684\u9577\u5ea6\u5fc5\u9808\u4ecb\u65bc 8 \u81f3 64 \u500b\u5b57\u5143\u4e4b\u9593\uff0c\u4e26\u4e14\u53ea\u80fd\u5305\u542b\u4ee5\u4e0b\n                        \u5b57\u5143\ufe30\u5b57\u6bcd\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u6216\u300c:\u300d\u3002</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528 iSCSI \u76ee\u6a19\u7ba1\u7406\u529f\u80fd\uff0c\n    \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53ef\u7528\u8cc7\u8a0a\ufe30</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u7121\u6cd5\u4f7f\u7528 iSCSI \u76ee\u6a19</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u4e0d\u5141\u8a31\u4f7f\u7528\u300c/\u300d\u548c\u300c@\u300d\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u6b63\u5728\u8f09\u5165...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684 RBD \u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u9078\u53d6\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u4f7f\u7528\u5c08\u5c6c\u7684\u8cc7\u6599\u6c60</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u8cc7\u6599\u6c60</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>\u5c08\u7528\u65bc\u5132\u5b58 RBD \u7684\u7269\u4ef6\u8cc7\u6599\u7684\u6c60</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u8cc7\u6599\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u4f8b\u5982 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u60a8\u5fc5\u9808\u589e\u52a0\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u529f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u9032\u968e...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u9032\u968e</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u5206\u5272</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u7269\u4ef6\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u5206\u5272\u55ae\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u9078\u53d6\u5206\u5272\u55ae\u4f4d --</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>\u7531\u65bc\u5df2\u5b9a\u7fa9\u5206\u5272\u8a08\u6578\uff0c\u56e0\u6b64\u5fc5\u9808\u586b\u5beb\u6b64\u6b04\u4f4d\uff01</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u5206\u5272\u55ae\u4f4d\u5927\u65bc\u7269\u4ef6\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u5206\u5272\u8a08\u6578</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>\u7531\u65bc\u5df2\u5b9a\u7fa9\u5206\u5272\u55ae\u4f4d\uff0c\u56e0\u6b64\u5fc5\u9808\u586b\u5beb\u6b64\u6b04\u4f4d\uff01</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u5206\u5272\u8a08\u6578\u5fc5\u9808\u5927\u65bc 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u6574\u9ad4\u6548\u80fd</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7de8\u8f2f</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u63cf\u8ff0</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u8a73\u7d30\u63cf\u8ff0</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u9810\u8a2d\u503c</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u7cbe\u9748\u9810\u8a2d\u503c</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u670d\u52d9</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u503c</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u4e0d\u5f97\u5927\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u4e0d\u5f97\u5c0f\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u5132\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH \u5730\u5716\u6aa2\u8996\u5668</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u4e3b\u6a5f\u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u627e\u4e0d\u5230\u9805\u76ee</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u53e2\u96c6\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u7a3d\u6838\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u7d44\u614b...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u7d44\u614b\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u7de8\u8f2f\u7ba1\u7406\u54e1\u6a21\u7d44</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>\u8f38\u5165\u7684\u503c\u4e0d\u662f\u6709\u6548\u7684 UUID\uff0c\u4f8b\u5982 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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u662f\u6709\u6548\u7684  IP \u4f4d\u5740\u3002</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u5fc5\u9808\u5c0f\u65bc\u6216\u7b49\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u70ba\u6578\u5b57\u3002</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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u70ba\u6578\u5b57\u6216\u5c0f\u6578\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u53e2\u96c6 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap \u4fee\u6539\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap \u7248\u672c\u7de8\u865f</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>\u4ef2\u88c1\u6210\u54e1</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u4ef2\u88c1\u6210\u54e1</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u53e2\u96c6\u7bc4\u570d\u7684 OSD \u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \u5fa9\u539f\u512a\u5148\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u512a\u5148\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u81ea\u8a02\u512a\u5148\u7a0b\u5ea6\u503c</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u6b64\u6b04\u4f4d\u70ba\u5fc5\u586b\u6b04\u4f4d\uff01</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u4e0d\u5f97\u5927\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u4e0d\u5f97\u5c0f\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u91cd\u65b0\u8a2d\u5b9a OSD \u7684\u6b0a\u6578</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>\u8a72\u503c\u5fc5\u9808\u4ecb\u65bc 0 \u81f3 1 \u4e4b\u9593\u3002</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u91cd\u65b0\u8a2d\u5b9a\u6b0a\u6578</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 {...}}"/>\u6574\u7406\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 {\u6df1\u5c64} }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\u5373\u5c07\u5c0d OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n            \u5957\u7528\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\u6574\u7406\u3002\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 {\u6df1\u5c64} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u82e5\u7e7c\u7e8c\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  \u5c07\u88ab\u6a19\u793a\u70ba\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD \u4e0d\u5b89\u5168\uff0c\u7121\u6cd5\u640d\u6bc0\uff01</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u82e5\u7e7c\u7e8c\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  \u5c07\u88ab\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8a73\u7d30\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7d71\u8a08\u8cc7\u6599</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528 NFS Ganesha \u7ba1\u7406\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u7528\u6236\u7aef</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u4f55\u7528\u6236\u7aef\u5747\u53ef\u5b58\u53d6</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u586b\u6b04\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\u5fc5\u9808\u5305\u542b\u4e00\u6216\u591a\u500b\u9017\u865f\u5206\u9694\u503c</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b\u5982\ufe30</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u5b58\u53d6\u985e\u578b</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>\u65b0\u589e\u7528\u6236\u7aef</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS \u8f38\u51fa\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u53e2\u96c6 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u9078\u53d6\u53e2\u96c6 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u65b0\u589e\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u5132\u5b58\u5f8c\u7aef</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u9078\u53d6\u5132\u5b58\u5f8c\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u9078\u53d6\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \u4f7f\u7528\u8005 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7528\u6236\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- \u9078\u53d6 cephx \u7528\u6236\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u5b89\u5168\u6a19\u7c64</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u555f\u7528\u5b89\u5168\u6a19\u7c64</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \u8def\u5f91</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>\u8def\u5f91\u5fc5\u9808\u4ee5\u300c/\u300d\u958b\u982d\uff0c\u5f8c\u9762\u53ef\u63a5\u55ae\u8a5e</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u5c07\u5efa\u7acb\u65b0\u76ee\u9304</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u8def\u5f91</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>\u8def\u5f91\u53ea\u80fd\u4ee5\u55ae\u4e00\u300c/\u300d\u6216\u55ae\u8a5e\u958b\u982d</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u5c07\u5efa\u7acb\u65b0\u6876</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \u901a\u8a0a\u5354\u5b9a</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 \u6a19\u8a18</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>\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>"/> \u639b\u63a5\u7684\u5099\u7528\u5b58\u53d6 (\u4e0d\u5f97\u5305\u542b\u524d\u7f6e /)\u3002\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>\u7528\u6236\u7aef\u4e0d\u80fd\u639b\u63a5\u5b50\u76ee\u9304 (\u5373\u5982\u679c\u6a19\u8a18\u70ba foo\uff0c\u5247\u7528\u6236\u7aef\u7121\u6cd5\u639b\u63a5 foo/baz)\u3002</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>\u900f\u904e\u4f7f\u7528\u4e0d\u540c\u6a19\u8a18\u9078\u9805\uff0c\u53ef\u5c07\u540c\u4e00\u8def\u5f91\u8f38\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u865b\u64ec</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>\u6b64\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>"/> \u8f38\u51fa\u5728\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u865b\u64ec\u6a94\u6848\u7cfb\u7d71\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u4e2d\n                                               \u6240\u4f54\u7528\u7684\u4f4d\u7f6e (\u5fc5\u9808\u552f\u4e00)\u3002\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>\u900f\u904e\u4f7f\u7528\u4e0d\u540c\u865b\u64ec\u9078\u9805\uff0c\u53ef\u5c07\u540c\u4e00\u8def\u5f91\u8f38\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u5b58\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u9078\u53d6\u5b58\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684 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>-- \u9078\u53d6\u57f7\u884c\u54ea\u7a2e\u985e\u578b\u7684\u4f7f\u7528\u8005 ID \u533f\u540d\u5b58\u53d6 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u50b3\u8f38\u901a\u8a0a\u5354\u5b9a</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u7a31\u53ea\u80fd\u7531\u82f1\u6578\u5b57\u5143\u3001\u7834\u6298\u865f\u548c\u5e95\u7dda\u7d44\u6210\u3002</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>\u6240\u9078\u7684\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u5916\u639b\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u8cc7\u6599\u5340\u584a (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>\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 2\u3002</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u7de8\u78bc\u5340\u584a (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>\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 1\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u6301\u4e45\u6027\u4f30\u503c (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u672c\u5730\u6027 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH \u6545\u969c\u7db2\u57df</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH \u672c\u5730\u6027</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u6280\u8853</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\u5c01\u5305\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH \u6839</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH \u88dd\u7f6e\u985e\u5225</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u4f55</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u76ee\u9304</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u65b0\u589e</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u95dc\u9589</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u7a31...</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>\u6240\u9078\u7684 Ceph \u6c60\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u6c60\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u9078\u53d6\u6c60\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u653e\u7f6e\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u81f3\u5c11\u9700\u8981\u4e00\u500b\u653e\u7f6e\u7fa4\u7d44\uff01</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>\u60a8\u7684\u53e2\u96c6\u7121\u6cd5\u8655\u7406\u9019\u9ebc\u591a\u7684 PG\u3002\u8acb\u91cd\u65b0\u8a08\u7b97\u6240\u9700\u7684 PG \u6578\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u60a8\u53ea\u80fd\u589e\u52a0\u73fe\u6709\u6c60\u7684 PG \u6578\u91cf\u3002\n                \u76ee\u524d\u60a8\u7684\u6c60\u6709\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> \u500b PG\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u8a08\u7b97\u8aaa\u660e</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u5df2\u70ba\u60a8\u8a08\u7b97\u76ee\u524d\u7684 PG \u8a2d\u5b9a\uff0c\u60a8\n                    \u61c9\u5728\u63d0\u4ea4\u524d\u78ba\u5b9a\u9019\u4e9b\u503c\u7b26\u5408\u60a8\u7684\u9700\u6c42\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH \u898f\u5247\u96c6</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \u9078\u53d6 CRUSH \u898f\u5247 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH \u898f\u5247</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH \u6b65\u9a5f</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u7121\u6cd5\u5728\u76ee\u524d\u7684\u53e2\u96c6\u4e2d\u4f7f\u7528\u6b64\u898f\u5247\uff0c\u56e0\u70ba\u53e2\u96c6\u7684\n                OSD \u6578\u91cf\u904e\u5c11\uff0c\u7121\u6cd5\u6eff\u8db3\u898f\u5247\u6240\u9700\u7684\u6700\u4f4e OSD \u6578\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u8907\u88fd\u5927\u5c0f</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>\u6700\u4f4e\ufe30\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>\u6700\u9ad8\ufe30\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u6307\u5b9a\u7684\u5927\u5c0f\u8d85\u51fa\u4e86\u7bc4\u570d\u3002\u4ecb\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \u81f3\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \u4e4b\u9593\u7684\u503c\u624d\u6709\u6548\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u9078\u53d6\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94 --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \u8986\u5beb</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u58d3\u7e2e</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u6f14\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7cfe\u522a\u58d3\u7e2e\u6f14\u7b97\u6cd5 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob \u6700\u5c0f\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u4f8b\u5982 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u503c\u61c9\u5927\u65bc 0</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob \u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u4f8b\u5982 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>\u503c\u61c9\u5927\u65bc blob \u6700\u5c0f\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u6bd4\u7387</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u58d3\u7e2e\u7387</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>\u503c\u61c9\u4ecb\u65bc 0.0 \u81f3 1.0 \u4e4b\u9593</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u7121\u6cd5\u5efa\u7acb\u540d\u7a31\u4e2d\u5305\u542b\u300c/\u300d\u7684 RBD \u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u8acb\u8b8a\u66f4\u540d\u7a31\u6216\u5c07\u300crbd\u300d\u5f9e\u61c9\u7528\u7a0b\u5f0f\u6e05\u55ae\u4e2d\u79fb\u9664\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u6c60\u6e05\u55ae</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528\u7269\u4ef6\u9598\u9053\u7ba1\u7406\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u6876\u8cc7\u6599...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u6876\u8cc7\u6599\u3002</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>\u8a72\u503c\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u6240\u9078\u7684\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u64c1\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u9078\u53d6\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u7cbe\u9748\u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u9078\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u8a31\u53ef\u6b0a</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u9078\u53d6\u8a31\u53ef\u6b0a --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u4f7f\u7528\u8005\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u9078\u53d6\u4f7f\u7528\u8005\u540d\u7a31 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u81ea\u52d5\u7522\u751f\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u5b58\u53d6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u6a5f\u5bc6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u5b50\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u6240\u9078\u7684\u5b50\u4f7f\u7528\u8005 ID \u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8b80\u53d6\u3001\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u5b8c\u6574</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u81ea\u52d5\u7522\u751f\u6a5f\u5bc6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u4f7f\u7528\u8005\u8cc7\u6599...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u4f7f\u7528\u8005\u8cc7\u6599\u3002</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u6240\u9078\u7684\u4f7f\u7528\u8005 ID \u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u5168\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u6240\u9078\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u6700\u5927\u6876\u6578</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u5b50\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u6c92\u6709\u5b50\u4f7f\u7528\u8005\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u91d1\u9470</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>\u6c92\u6709\u91d1\u9470\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u986f\u793a</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u529f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6c92\u6709\u529f\u80fd\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u4f7f\u7528\u8005\u5b9a\u984d</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u5df2\u555f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u5927\u5c0f\u4e0d\u9650</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u7269\u4ef6\u6578\u4e0d\u9650</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u6876\u5b9a\u984d</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\u6b61\u8fce\u4f7f\u7528 Ceph\uff01</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>\u9700\u8981\u6307\u5b9a\u4f7f\u7528\u8005\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u9700\u8981\u6307\u5b9a\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u767b\u5165</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u63cf\u8ff0...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u8a31\u53ef\u6b0a</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u62b1\u6b49\uff0c\u8a72\u4f7f\u7528\u8005\u4e0d\u5b58\u5728\u65bc Ceph \u4e2d\u3002</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>\u8fd4\u56de\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u767b\u5165\u9801\u9762\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002 \u7576\u60a8\u91cd\u8a66\u767b\u5165\u6642\uff0c\u60a8\u5c07\u5f9e\u8eab\u5206\u63d0\u4f9b\u8005\u767b\u51fa\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u78ba\u8a8d\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u78ba\u8a8d\u7684\u5bc6\u78bc\u8207\u4e4b\u524d\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u7b26\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u89d2\u8272</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>\u60a8\u6b63\u8981\u70ba\u60a8\u81ea\u5df1\u7684\u4f7f\u7528\u8005\u79fb\u9664\u300c\u4f7f\u7528\u8005\u8b80\u53d6/\u5beb\u5165\u300d\u8a31\u53ef\u6b0a\u3002</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>\u82e5\u7e7c\u7e8c\uff0c\u60a8\u5c07\u518d\u4e5f\u7121\u6cd5\u70ba\u4efb\u4f55\u4f7f\u7528\u8005\u65b0\u589e\u6216\u79fb\u9664\u89d2\u8272\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u5df2\u7981\u6b62</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>\u62b1\u6b49\uff0c\u60a8\u7121\u6b0a\u67e5\u770b\u60a8\u8981\u5c0b\u627e\u7684\u5167\u5bb9\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u62b1\u6b49\uff0c\u6211\u5011\u627e\u4e0d\u5230\u60a8\u8981\u5c0b\u627e\u7684\u5167\u5bb9\u3002</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u5168\u90e8\u79fb\u9664</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u8fd1\u7684\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u6c92\u6709\u80cc\u666f\u4efb\u52d9\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u80cc\u666f\u4efb\u52d9</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u8aaa\u660e</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u6587\u4ef6</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>\u95dc\u65bc</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u5100\u8868\u677f\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u4f7f\u7528\u8005\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u767b\u5165\u7684\u4f7f\u7528\u8005</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>\u4ee5\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      \u8eab\u5206\u767b\u5165\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u767b\u51fa</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u6548\u80fd\u8a08\u6578\u5668</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u6548\u80fd\u8a73\u7d30\u8cc7\u6599</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>\u7d22\u5f15\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u653e\u7f6e\u898f\u5247</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\u6700\u5927\u6a19\u8a18\u6578</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u4e3b\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u4fee\u6539\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\u5340\u57df\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u7121\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {\u5426} 1 {\u662f} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u6876\u6578</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u6548\u80fd\u8a08\u6578\u5668</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u5168\u57df</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u6c60</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \u7d44\u614b</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>\u79fb\u9664\u672c\u5730\u7d44\u614b\u503c\u3002\u5c07\u7e7c\u627f\u4e26\u4f7f\u7528\u7236\u7d44\u614b\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u503c\u70ba 0</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\u5c6c\u6027 (OSD \u5730\u5716)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\u7121\u6cd5\u4f7f\u7528\u4e2d\u7e7c\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u4e2d\u7e7c\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u6548\u80fd\u8a08\u6578\u5668</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>\u7121\u6cd5\u4f7f\u7528\u9577\u689d\u5716\ufe30\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>\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8b80\u53d6</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u9577\u689d\u5716</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u76ee\u524d\u7684\u503c</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u6700\u5c0f\u503c</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u6700\u5927\u503c</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u4f86\u6e90</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u5c64\u7d1a</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u53ef\u5728\u57f7\u884c\u6642\u671f\u66f4\u65b0 (\u53ef\u7de8\u8f2f)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u5217\u8209\u503c</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u53e6\u8acb\u53c3\u95b1</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u53e2\u96c6\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\u7ba1\u7406\u54e1\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u7269\u4ef6\u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\u4e2d\u7e7c\u8cc7\u6599\u4f3a\u670d\u5668</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u7528\u6236\u7aef IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u7528\u6236\u7aef\u8f38\u9001\u91cf</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u7528\u6236\u7aef\u8b80\u53d6/\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u5fa9\u539f\u8f38\u9001\u91cf</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u6548\u80fd</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u539f\u59cb\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u7269\u4ef6</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>\u6bcf\u500b OSD \u7684 PG \u6578</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u5982\u9700\u8a73\u7d30\u8cc7\u6599\uff0c\u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u8a18\u9304\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u5c07\u5f71\u50cf\u79fb\u81f3\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u82e5\u8981\u5c07\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \u79fb\u81f3\u5783\u573e\u6876\uff0c\n          \u8acb\u6309\u4e00\u4e0b\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u79fb\u52d5\u5f71\u50cf\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\u6216\u8005\uff0c\u60a8\u53ef\u4ee5\u9078\u53d6\u4e00\u500b\u904e\u671f\u65e5\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u8b77\u7684\u904e\u671f\u65e5\u70ba</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u7121\u4fdd\u8b77</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>\u65e5\u671f\u683c\u5f0f\u932f\u8aa4\u3002\u8acb\u4f7f\u7528\u300cYYYY-MM-DD HH:mm:ss\u300d\u3002</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>\u4fdd\u8b77\u5df2\u904e\u671f\u3002\u8acb\u9078\u53d6\u4e00\u500b\u672a\u4f86\u7684\u65e5\u671f\u6216\u4fdd\u7559\u7a7a\u767d\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u79fb\u52d5\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u7d9c\u89bd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u76ee\u6a19</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>\u50c5\u9069\u7528\u65bc\u5df2\u555f\u7528\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>"/> \u7684 RBD \u5f71\u50cf\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u8cc7\u6599\u6c60</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u5df2\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u5df2\u4f48\u5efa</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\u7e3d\u4f48\u5efa\u6578</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u5206\u5272\u55ae\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u5206\u5272\u8a08\u6578</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u7236</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u5340\u584a\u540d\u7a31\u5b57\u9996</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\u9806\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u6b64\u8a2d\u5b9a\u6703\u8986\u5beb\u5168\u57df\u503c</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>\u6b64\u503c\u70ba\u5168\u57df\u503c\u3002\u672a\u70ba\u6b64\u5f71\u50cf\u8a2d\u5b9a\u6b64\u9078\u9805\u7684\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD \u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {\u91cd\u65b0\u547d\u540d} other {\u5efa\u7acb} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u53d7\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u672a\u53d7\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u60a8\u6b63\u8981\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u6e05\u9664\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u82e5\u8981\u6e05\u9664\uff0c\u8acb\u9078\u53d6\u4e00\u500b\u6216\u5168\u90e8\u5f71\u50cf\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u6c60\ufe30</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u6c60\u540d\u7a31...</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u5168\u90e8</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u56de\u5b58\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u82e5\u8981\u56de\u5b58</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u9375\u5165\u5f71\u50cf\u7684\u65b0\u540d\u7a31\u5e76\u6309\u4e00\u4e0b</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u904e\u671f\u65e5\u70ba</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u8b77\u904e\u671f\u65e5\u70ba</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>\u6b64\u5f71\u50cf\u7684\u4fdd\u8b77\u904e\u671f\u65e5\u70ba\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \u62d3\u64b2</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u6b63\u5728\u540c\u6b65</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u6e96\u5099\u5c31\u7dd2</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u7de8\u8f2f\u6c60\u93e1\u50cf\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u82e5\u8981\u7de8\u8f2f\u6c60\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>"/>\xa0\n          \u7684\u93e1\u50cf\u6a21\u5f0f\uff0c\u8acb\u5f9e\u6e05\u55ae\u4e2d\u9078\u53d6\u4e00\u500b\u65b0\u6a21\u5f0f\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u66f4\u65b0\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\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>\u5728\u505c\u7528\u93e1\u50cf\u4e4b\u524d\uff0c\u5fc5\u9808\u5148\u79fb\u9664\u5c0d\u7b49\u53e2\u96c6\u3002</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  \u6c60\u93e1\u50cf\u5c0d\u7b49\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 {\u7de8\u8f2f} other {\u65b0\u589e} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u6c60\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>"/>\u7684\n          \u93e1\u50cf\u5c0d\u7b49\u5c6c\u6027\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u63d0\u4ea4\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u53e2\u96c6\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u53e2\u96c6\u540d\u7a31\u7121\u6548\u3002</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 \u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u9017\u865f\u5206\u9694\u7684\u4f4d\u5740...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f\u4f4d\u5740\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 \u7de8\u78bc\u7684\u91d1\u9470...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \u91d1\u9470\u5fc5\u9808\u70ba Base64 \u7de8\u78bc\u7684\u91d1\u9470\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u5feb\u53d6\u5c64\u8a73\u7d30\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u968e\u5c64</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u7528\u6236\u7aef\ufe30\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u76ee\u524d</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u5df2\u66f4\u65b0\u63a2\u67e5\u9a57\u8b49</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u5165\u53e3\u7db2\u7ad9\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u5f71\u50cf\u3002</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>\u6c92\u6709\u53ef\u7528\u7684\u5f71\u50cf\u3002\u8acb\u78ba\u5b9a\u70ba\u76ee\u6a19\u65b0\u589e\u4e00\u500b\u5f71\u50cf\u3002</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>\u6c92\u6709\u53ef\u7528\u7684\u555f\u52d5\u5668\u3002\u8acb\u78ba\u5b9a\u70ba\u76ee\u6a19\u65b0\u589e\u4e00\u500b\u555f\u52d5\u5668\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u76ee\u6a19</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u4e3b\u6a5f\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8b80\u53d6\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8b80\u53d6\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u5beb\u5165\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u4f7f\u7528\u4e2d/\u6700\u4f73\u5316\u958b\u59cb\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u4f8b\u9805</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u9032\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u7de8\u8f2f\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u65b0\u589e\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u7de8\u8f2f\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u522a\u9664\u5c0d\u7b49</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>\u672c\u5730\u6578\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>\u9060\u7aef\u6578\u91cf</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u93e1\u50cf\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u503c</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u6df1\u5c64\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u5206\u5c64</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u7368\u4f54\u9396\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\u7269\u4ef6\u5c0d\u61c9 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u8a18\u9304 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u5feb\u901f\u8a08\u7b97\u5dee\u7570 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u79fb\u81f3\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u91cd\u65b0\u547d\u540d</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u53d6\u6d88\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \u5feb\u7167\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u522a\u9664\u4f4d\u7f6e</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>\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u4e3b\u6a5f</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u6839</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u968e\u5c64</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u6d3b\u52d5</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>\u4f7f\u7528\u7387</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u5f85\u547d\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u8a72\u503c\u53ef\u5728\u57f7\u884c\u6642\u671f\u66f4\u65b0\u3002</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>\u7cbe\u9748/\u7528\u6236\u7aef\u4e0d\u6703\u5f9e\u76e3\u63a7\u7a0b\u5f0f\u7d44\u614b\u8cc7\u6599\u5eab\n      \u63d0\u53d6\u6b64\u503c\u3002\u6211\u5011\u4e0d\u5141\u8a31\u900f\u904e\u300cceph config set ...\u300d\n      \u8a2d\u5b9a\u6b64\u9078\u9805\u3002\u61c9\u900f\u904e ceph.conf \u6216\u4f7f\u7528\u6307\u4ee4\u884c\n      \u9032\u884c\u8a2d\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5728\u7cbe\u9748\u555f\u52d5\u671f\u9593\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5f71\u97ff\u53e2\u96c6\u5efa\u7acb\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5f71\u97ff\u7cbe\u9748\u5efa\u7acb\u3002</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>\u5df2\u66f4\u65b0\u7d44\u614b\u9078\u9805\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>\u670d\u52d9</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u76ee\u524d\u7684\u503c</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u53ef\u7de8\u8f2f</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>\u5df2\u66f4\u65b0\u6a21\u7d44\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\u7684\u9078\u9805\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u555f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u6b63\u5728\u91cd\u65b0\u9023\u63a5\uff0c\u8acb\u7a0d\u5019...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u516c\u7528\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u958b\u555f\u7684\u5de5\u4f5c\u968e\u6bb5</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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>\u4e4b\u524d\u6a19\u793a\u70ba out \u7684 OSD \u5728\u555f\u52d5\u6642\u5c07\u4e0d\u6703\u91cd\u65b0\u6a19\u793a\u70ba in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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 \u5728\u8a2d\u5b9a\u7684\u9593\u9694\u904e\u5f8c\u5c07\u4e0d\u6703\u81ea\u52d5\u6a19\u793a\u70ba out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>\u4e0d\u5141\u8a31 OSD \u555f\u52d5</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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>\u5c07\u6703\u5ffd\u7565 OSD \u6545\u969c\u5831\u544a\uff0c\u5982\u6b64\u76e3\u63a7\u7a0b\u5f0f\u4fbf\u4e0d\u6703\u5c07 OSD \u6a19\u793a\u70ba down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u66ab\u505c\u8b80\u53d6\u548c\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u7981\u6b62\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u6574\u7406\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u7981\u6b62\u6df1\u5c64\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u6df1\u5c64\u6574\u7406\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u7981\u6b62\u56de\u586b</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG \u56de\u586b\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u7981\u6b62\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG \u5fa9\u539f\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u6309\u4f4d\u5143\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u4f7f\u7528\u6309\u4f4d\u5143\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u5df2\u6e05\u9664 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD \u5df2\u8f49\u63db snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u5fa9\u539f\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u5728\u5fa9\u539f\u671f\u9593\uff0c\u800c\u975e\u5728\u5efa\u7acb\u4e92\u806f\u6642\u57f7\u884c\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \u8a18\u9304\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u70ba pg \u8a18\u9304\u9577\u5ea6\u8a2d\u5b9a\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\u5df2\u66f4\u65b0 OSD \u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u6df1\u5c64\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u6a19\u793a\u70ba Out</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u6a19\u793a\u70ba In</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="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u6a19\u793a\u70ba Down</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="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u6a19\u793a\u70ba\u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u6a19\u793a</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u5df2\u6a19\u793a\u70ba\u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6e05\u9664</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u640d\u6bc0</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u640d\u6bc0</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u5df2\u640d\u6bc0</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>\u8b80\u53d6\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8b80\u53d6\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u5beb\u5165\u64cd\u4f5c\u6578</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>\u5c07 OSD \u6a19\u793a\u70ba\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>\u6a19\u793a\u70ba\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u56de\u586b\u6578</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u8655\u65bc\u4f7f\u7528\u4e2d\u72c0\u614b\u7684\u6700\u5927\u5fa9\u539f\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u55ae\u6b21\u555f\u52d5\u7684\u6700\u5927\u5fa9\u539f\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u5fa9\u539f\u64cd\u4f5c\u9593\u9694\u7761\u7720\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u81ea\u8a02</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>\u5df2\u66f4\u65b0 OSD \u5fa9\u539f\u901f\u5ea6\u512a\u5148\u7a0b\u5ea6\u300c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\u4ee5\u4e0b OSD \u5df2\u555f\u59cb\u5316\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/>\u64cd\u4f5c\ufe30\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u5de5\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u56b4\u91cd\u6027</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u5df2\u555f\u52d5</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u5df2\u4f7f\u7528</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u53ef\u7528</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u4e7e\u6de8</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u5de5\u4f5c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u672a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u555f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u7121\u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u4f7f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u5f85\u547d</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\u4f7f\u7528\u4e2d\u7684\u7cbe\u9748</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>\u672a\u8a2d\u5b9a NFS Ganesha \u670d\u52d9\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u50b3\u8f38</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\u7e7c\u627f\u81ea\u5168\u57df\u7d44\u614b)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u7e7c\u627f\u81ea\u5168\u57df\u7d44\u614b</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>-- \u9078\u53d6\u57f7\u884c\u54ea\u7a2e\u985e\u578b\u7684\u4f7f\u7528\u8005 ID \u533f\u540d\u5b58\u53d6 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u7cbe\u9748\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u8f38\u51fa</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u5feb\u53d6\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u9010\u51fa\u524d\u81f3\u5c11\u53ef\u7559\u5b58\u7684\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u885d\u6d17\u524d\u81f3\u5c11\u53ef\u7559\u5b58\u7684\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u76ee\u6a19\u6700\u5927\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u76ee\u6a19\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u672a\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u5df2\u9054\u5230\u61c9\u7528\u7a0b\u5f0f\u4e0a\u9650</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>\u4e00\u500b\u6c60\u6700\u591a\u53ea\u80fd\u56db\u500b\u61c9\u7528\u7a0b\u5f0f\u5b9a\u7fa9\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u5141\u8a31\u7684\u5b57\u5143\u70ba\u300c_a-zA-Z0-9\u300d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u6700\u5927\u9577\u5ea6\u70ba 128 \u500b\u5b57\u5143</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u904e\u6ffe\u6216\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u8907\u672c\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u4e0a\u6b21\u8b8a\u66f4\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH \u898f\u5247\u96c6</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u5df2\u66f4\u65b0\u7269\u4ef6\u9598\u9053\u6876\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\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>\u5df2\u5efa\u7acb\u7269\u4ef6\u9598\u9053\u6876\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u6876</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u6876</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>\u5df2\u66f4\u65b0\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\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>\u5df2\u5efa\u7acb\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u7bc4\u570d</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8b80\u53d6</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>\u5df2\u5efa\u7acb\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\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>\u5df2\u66f4\u65b0\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u7cfb\u7d71\u89d2\u8272</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>\u5df2\u522a\u9664\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\n        </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>\u5df2\u5efa\u7acb\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u66f4\u65b0\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7e7c\u7e8c</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>\u60a8\u5df2\u88ab\u81ea\u52d5\u767b\u51fa\uff0c\u56e0\u70ba\u60a8\u7684\u89d2\u8272\u767c\u751f\u4e86\u8b8a\u66f4\u3002</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>\u5df2\u66f4\u65b0\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u5df2\u522a\u9664\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u7121\u6cd5\u522a\u9664\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u60a8\u76ee\u524d\u6b63\u4ee5\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u8eab\u5206\u767b\u5165\u3002\n        </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>\u5404\u7269\u4ef6\u90fd\u88ab\u5206\u5272\u6210\u8cc7\u6599\u5340\u584a\u90e8\u5206\uff0c\u5206\u5225\u5132\u5b58\u65bc\u4e0d\u540c\u7684 OSD\u3002</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>\u904b\u7b97\u5404\u7269\u4ef6\u7684\u7de8\u78bc\u5340\u584a\u5e76\u5c07\u5b83\u5011\u5132\u5b58\u5230\u4e0d\u540c\u7684 OSD\u3002\n      \u7de8\u78bc\u5340\u584a\u7684\u6578\u91cf\u7b49\u540c\u65bc\u5728\u4e0d\u907a\u5931\u8cc7\u6599\u7684\u524d\u63d0\u4e0b\uff0c\u53ef\u505c\u6a5f\u7684 OSD \u6578\u91cf\u3002</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 \u5916\u639b\u7a0b\u5f0f\u662f\u6700\u4e00\u822c\u3001\u6700\u9748\u6d3b\u7684\u5916\u639b\u7a0b\u5f0f\uff0c\n          \u4e5f\u662f Ceph \u7cfe\u522a\u78bc\u6c60\u7684\u9810\u8a2d\u5916\u639b\u7a0b\u5f0f\u3002</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 \u65b9\u6cd5\u66f4\u9748\u6d3b\ufe30\u5b83\u8db3\u4ee5\u8a2d\u5b9a k\n          \u548c m\u3002Cauchy_good \u65b9\u6cd5\u66f4\u5feb\uff0c\u4f46\u60a8\u9700\u8981\u5c0f\u5fc3\u9078\u53d6\u5c01\u5305\u5927\u5c0f\u3002\n          \u6240\u6709 reed_sol_r6_op\u3001liberation\u3001blaum_roth\u3001liber8tion \u90fd\n          \u7b49\u540c\u65bc RAID6\uff0c\u5b83\u5011\u53ea\u80fd\u8a2d\u5b9a\u70ba m=2\u3002</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>\u5c07\u4ee5\u4f4d\u5143\u7d44\u5927\u5c0f\u7684\u5c01\u5305\u70ba\u55ae\u4f4d\u9032\u884c\u7de8\u78bc\u3002\n          \u9078\u53d6\u5408\u9069\u7684\u5c01\u5305\u5927\u5c0f\u5f88\u96e3\u3002\n          Jerasure \u6587\u4ef6\u5305\u542b\u6709\u95dc\u6b64\u4e3b\u984c\u7684\u8a73\u7d30\u8cc7\u8a0a\u3002</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>\u4f7f\u7528 jerasure \u5916\u639b\u7a0b\u5f0f\u6642\uff0c\u82e5\u7cfe\u522a\u78bc\u7269\u4ef6\u5132\u5b58\u65bc\n          \u591a\u500b OSD \u4e0a\uff0c\u5247\u5fa9\u539f\u4e00\u500b\u907a\u5931\u7684 OSD \u6642\u9700\u8981\u8b80\u53d6\u6240\u6709\u5176\u4ed6 OSD\u3002\n          \u4f8b\u5982\uff0c\u82e5 jerasure \u8a2d\u5b9a\u70ba k=8 \u4e14 m=4\uff0c\u5247\u907a\u5931\u4e00\u500b OSD \u5f8c\u9700\u8b80\u53d6\n          \u5176\u4ed6\u5341\u4e00\u500b OSD \u624d\u80fd\u4fee\u5fa9\u3002\n\n          lrc \u7cfe\u522a\u78bc\u5916\u639b\u7a0b\u5f0f\u6703\u5efa\u7acb\u672c\u5730\u540c\u4f4d\u5340\u584a\uff0c\u56e0\u6b64\u53ea\u9700\u8f03\u5c11\u7684 OSD \u5373\n          \u53ef\u5fa9\u539f\u3002\u4f8b\u5982\uff0c\u82e5 lrc \u8a2d\u5b9a\u70ba k=8\u3001m=4 \u4e14 l=4\uff0c\u5b83\u5c07\u70ba\u6bcf\u56db\u500b OSD\n          \u5efa\u7acb\u984d\u5916\u7684\u540c\u4f4d\u5340\u584a\u3002\u9019\u6a23\uff0c\u7576\u4e00\u500b OSD \u907a\u5931\u6642\uff0c\u5b83\u53ea\u9700\u56db\u500b OSD\n          \u5373\u53ef\u5fa9\u539f\uff0c\u800c\u4e0d\u9700\u8981\u5341\u4e00\u500b\u3002</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>\u5c07\u7de8\u78bc\u5340\u584a\u548c\u8cc7\u6599\u5340\u584a\u5206\u7d44\u70ba\u5927\u5c0f\u70ba locality \u7684\u96c6\u5408\u3002\u4f8b\u5982\uff0c\n          k=4 \u4e14 m=2 \u6642\uff0c\u82e5 locality=3\uff0c\u5247\u6703\u5efa\u7acb 2 \u500b\u5927\u5c0f\u70ba 3 \u7684\u7d44\u3002\u9019\u6a23\uff0c\u5404\u7d44\u90fd\u80fd\n          \u81ea\u884c\u5fa9\u539f\uff0c\u800c\u7121\u9700\u5f9e\u53e6\u4e00\u7d44\u8b80\u53d6\u5340\u584a\u3002</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>\u7531 l \u5b9a\u7fa9\u7684\u5340\u584a\u96c6\u5c07\u6309\u54ea\u7a2e CRUSH \u6876\u985e\u578b\u5132\u5b58\u3002\n          \u4f8b\u5982\uff0c\u82e5\u8a2d\u5b9a\u70ba\u6a5f\u67b6\uff0c\u5247\u5404\u7d44 l \u5340\u584a\u5c07\u6703\u88ab\u653e\u7f6e\u5230\u4e0d\u540c\u7684\n          \u6a5f\u67b6\u4e2d\u3002\u8a72\u503c\u7528\u65bc\u5efa\u7acb\u985e\u4f3c step choose rack \u7684 CRUSH\n          \u898f\u5247\u6b65\u9a5f\u3002\u82e5\u672a\u8a2d\u5b9a\uff0c\u5247\u4e0d\u6703\u9032\u884c\u6b64\u985e\u5206\u7d44\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5c01\u5305\u4e86 ISA \u7a0b\u5f0f\u5eab\u3002\u5b83\u53ea\u80fd\u5728 Intel \u8655\u7406\u5668\u4e0a\u57f7\u884c\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5305\u542b\u5169\u7a2e Reed Solomon \u683c\u5f0f\u3002\n          \u82e5\u8a2d\u5b9a\u70ba reed_sol_van\uff0c\u5247\u70ba Vandermonde\u3002\u82e5\u8a2d\u5b9a\u70ba cauchy\uff0c\u5247\u70ba Cauchy\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5c01\u5305\u4e86\u591a\u500b SHEC \u7a0b\u5f0f\u5eab\u3002\n          \u8207 Reed Solomon \u4ee3\u78bc\u76f8\u6bd4\uff0c\u5b83\u80fd\u66f4\u6709\u6548\u5730\u5fa9\u539f\u8cc7\u6599\u3002</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>\u540c\u4f4d\u5340\u584a\u7684\u6578\u91cf\uff0c\u5b83\u5011\u5728\u5404\u81ea\u7684\u8a08\u7b97\u7bc4\u570d\u5167\u5305\u542b\u4e86\n          \u5404\u8cc7\u6599\u5340\u584a\u3002\u8a72\u6578\u503c\u88ab\u7528\u505a\u6301\u4e45\u6027\u4f30\u503c\u3002\u4f8b\u5982\uff0c\u82e5 c=2\uff0c\n          \u5247\u5728\u4e0d\u907a\u5931\u8cc7\u6599\u7684\u524d\u63d0\u4e0b\uff0c\u53ef\u6709 2 \u500b OSD \u505c\u6a5f\u3002</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 \u898f\u5247\u7684\u7b2c\u4e00\u6b65\u6240\u6307\u5411\u7684 CRUSH \u6876\u540d\u7a31\u3002\n      \u4f8b\u5982 step take default\u3002</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>\u78ba\u5b9a\u5169\u500b\u5340\u584a\u4e0d\u6703\u5b58\u5728\u65bc\u540c\u4e00\u6545\u969c\u7db2\u57df\u7684\u6876\u4e2d\u3002\n      \u4f8b\u5982\uff0c\u82e5\u6545\u969c\u7db2\u57df\u70ba\u4e3b\u6a5f\uff0c\u5247\u4e0d\u6703\u6709\u5169\u500b\u5340\u584a\u5132\u5b58\u65bc\u540c\u4e00\u4e3b\u6a5f\u4e2d\u3002\n      \u8a72\u503c\u7528\u65bc\u5efa\u7acb\u985e\u4f3c step chooseleaf host \u7684 CRUSH \u898f\u5247\u6b65\u9a5f\u3002</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>\u4f7f\u7528 CRUSH \u5730\u5716\u4e2d\u7684 crush \u88dd\u7f6e\u985e\u5225\u540d\u7a31\uff0c\n      \u5c07\u653e\u7f6e\u9650\u5236\u65bc\u7279\u5b9a\u985e\u5225\u7684\u88dd\u7f6e (\u4f8b\u5982 ssd \u6216 hdd)\u3002</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>\u8a2d\u5b9a\u7cfe\u522a\u78bc\u5916\u639b\u7a0b\u5f0f\u6240\u5728\u76ee\u9304\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u5141\u8a31\u6240\u6709\u64cd\u4f5c</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>\u50c5\u5141\u8a31\u4e0d\u4fee\u6539\u4f3a\u670d\u5668\u7684\u64cd\u4f5c</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>\u4e0d\u5141\u8a31\u8b80\u53d6\u6216\u5beb\u5165\u64cd\u4f5c\uff0c\u4f46\u662f\u5141\u8a31\u4efb\u4f55\u5176\u4ed6\u64cd\u4f5c</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>\u4e0d\u5141\u8a31\u8b80\u53d6\u3001\u5beb\u5165\u6216\u4efb\u4f55\u53ef\u80fd\u4fee\u6539\u6a94\u6848\u5c6c\u6027\u6216\u76ee\u9304\u5167\u5bb9\u7684\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u5b8c\u5168\u7981\u6b62\u5b58\u53d6</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u9078\u53d6\u512a\u5148\u7a0b\u5ea6 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u904e\u53bb 5 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u904e\u53bb 15 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u904e\u53bb 30 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u904e\u53bb 1 \u5c0f\u6642 (\u9810\u8a2d\u503c)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u904e\u53bb 3 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u904e\u53bb 6 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u904e\u53bb 12 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u904e\u53bb 24 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u5929</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u4eca\u5929\u5230\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u524d\u5929</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u904e\u53bb 2 \u5929</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u4e0a\u9031\u7684\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u4e0a\u9031</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u672c\u9031</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u672c\u9031\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u904e\u53bb 7 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u4e0a\u500b\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u672c\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u672c\u6708\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u904e\u53bb 30 \u5929</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u904e\u53bb 90 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u904e\u53bb 6 \u500b\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u904e\u53bb 1 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u53bb\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u904e\u53bb 2 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u904e\u53bb 5 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u8cc7\u8a0a</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u672a\u9078\u53d6\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u53d6\u6d88\u9078\u53d6\u9805\u76ee\u4ee5\u518d\u6b21\u9078\u53d6</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u5df2\u9054\u5230\u9078\u53d6\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u904e\u6ffe\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u65b0\u589e\u5fbd\u7ae0</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u662f</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u5426</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u670d\u52d9\u54c1\u8cea</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8b80\u53d6 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5167\u8b80\u53d6\u7684\u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8b80\u53d6 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u8b80\u53d6\u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u5beb\u5165 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5167\u5beb\u5165\u7684\u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u5beb\u5165 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5beb\u5165\u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u6307\u5b9a\u7684 IO \u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u6307\u5b9a\u7684 IO \u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8b80\u53d6 BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u6307\u5b9a\u7684\u8b80\u53d6\u7684\u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8b80\u53d6 IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u6307\u5b9a\u7684\u8b80\u53d6\u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u5beb\u5165 BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u6307\u5b9a\u7684\u5beb\u5165\u7684\u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u5beb\u5165 IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u6307\u5b9a\u7684\u5beb\u5165\u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</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>\u7121\u6cd5\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>\u6b63\u5728\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u5df2\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u672a\u77e5\u4efb\u52d9</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u6b63\u5728\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u6b63\u5728\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u5df2\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u6b63\u5728\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u5df2\u522a\u9664</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\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\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 \u5feb\u7167\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u7684\u93e1\u50cf\u6a21\u5f0f\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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u7684\u93e1\u50cf\u5c0d\u7b49\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> \u4f7f\u7528\u3002\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{name}}"/> \u4f7f\u7528\u3002\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> \u4f7f\u7528\u3002\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}}"/> \u5305\u542b\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u6b63\u5728\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u5df2\u514b\u9686</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>\u5fc5\u9808\u4fdd\u8b77\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> \u7684\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u6b63\u5728\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u5df2\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u6b63\u5728\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u5df2\u58d3\u5e73</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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> \u4f7f\u7528\u3002\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>\u7121\u6cd5\u4fdd\u8b77\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u70ba\u5176\u5305\u542b\u5b50\u5f71\u50cf\u3002\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>\u7121\u6cd5\u522a\u9664\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u70ba\u5176\u8655\u65bc\u4fdd\u8b77\u72c0\u614b\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u6b63\u5728\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u5df2\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u6b63\u5728\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u5df2\u79fb\u52d5</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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u5230\u5783\u573e\u6876\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u627e\u4e0d\u5230\u5f71\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u6b63\u5728\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5df2\u9084\u539f</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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d(\u5230\u300c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u300d)\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>\u5f71\u50cf\u540d\u7a31\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u5df2\u5728\u4f7f\u7528\u4e2d\u3002\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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6b63\u5728\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u6240\u6709\u6c60</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>\u5f71\u50cf (\u5f9e\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>\u7121\u6cd5\u505c\u7528\u93e1\u50cf\uff0c\u56e0\u70ba\u5176\u5305\u542b\u5c0d\u7b49\u3002</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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u300d\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>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\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>\u76ee\u6a19\u300c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u300d\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>\n'},Dzi0:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},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:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".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:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"\u0434\u0430\u043d",dd:e.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:e.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",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});var a=function(){function t(){}return t.prototype.transform=function(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""},t}()},EEJc:function(t,e,n){"use strict";var a=n("CcnG"),r=n("ajRT");n.d(e,"b",function(){return i}),n.d(e,"c",function(){return o}),n.d(e,"a",function(){return u});var i=a["\u0275crt"]({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 o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275eld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-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["\u0275eld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),a["\u0275ncd"](null,1)],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-modal",[],null,null,null,o,i)),a["\u0275did"](1,49152,null,0,r.a,[],null,null)],null,null)}var u=a["\u0275ccf"]("cd-modal",r.a,s,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},EOgW:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(t){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===t},meridiem:function(t,e,n){return t<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}()},ES0t:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("CcnG"),r=n("OZfm"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:0,styles:[".bs-popover-top[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-popover-bottom[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      left: 50%;\n      transform: translateX(-50%);\n    }\n    .bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      top: 50%;\n      transform: translateY(-50%);\n    }"],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.component.title)})}function u(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,2,0,e.component.title)},null)}function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null]],null,null,u,o)),a["\u0275did"](1,49152,null,0,r.b,[r.a],null,null)],null,function(t,e){t(e,0,0,"popover in popover-"+a["\u0275nov"](e,1).placement+" bs-popover-"+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).containerClass,!a["\u0275nov"](e,1).isBs3)})}var l=a["\u0275ccf"]("popover-container",r.b,c,{placement:"placement",title:"title"},{},["*"])},EgGo:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("Ip0R"),r=n("sne2"),i=function(){function t(t){this.base=t}return t.concatURLSegments=function(t){return t.reduce(a.Location.joinWithSlash)},t.buildURL=function(e){for(var n=[],a=1;a<arguments.length;a++)n[a-1]=arguments[a];return t.concatURLSegments((e?["/"]:[]).concat(n))},t.prototype.getURL=function(e,n){void 0===n&&(n=!0);for(var a=[],r=2;r<arguments.length;r++)a[r-2]=arguments[r];return t.buildURL.apply(t,[n,this.base,e].concat(a))},t.prototype.getCreate=function(t){return void 0===t&&(t=!0),this.getURL(r.e.CREATE,t)},t.prototype.getCreateFrom=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.CREATE,e,t)},t.prototype.getDelete=function(t){return void 0===t&&(t=!0),this.getURL(r.e.DELETE,t)},t.prototype.getEdit=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.EDIT,e,t)},t.prototype.getUpdate=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.UPDATE,e,t)},t.prototype.getAdd=function(t){return void 0===t&&(t=!0),this.getURL(r.e.ADD,t)},t.prototype.getRemove=function(t){return void 0===t&&(t=!0),this.getURL(r.e.REMOVE,t)},t.prototype.getRecreate=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.RECREATE,e,t)},t}()},"En8+":function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",function(){return r});var r=a()},"F/XL":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("nkY7"),r=n("IUTb"),i=n("G5J1"),o=n("PU8L");function s(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[t.length-1];switch(Object(a.a)(n)?t.pop():n=void 0,t.length){case 0:return Object(i.b)(n);case 1:return n?Object(r.a)(t,n):Object(o.a)(t[0]);default:return Object(r.a)(t,n)}}},F8xH:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG"),i=n("Ip0R"),o=n("Nia1"),s=n("mn2k"),u=n("bpWZ");e.NgxDatatableModule=function(){return a([r.NgModule({imports:[i.CommonModule],providers:[u.ScrollbarHelper,u.DimensionsHelper,u.ColumnChangesService],declarations:[o.DataTableFooterTemplateDirective,s.VisibilityDirective,s.DraggableDirective,s.ResizeableDirective,s.OrderableDirective,s.LongPressDirective,o.ScrollerComponent,o.DatatableComponent,o.DataTableColumnDirective,o.DataTableHeaderComponent,o.DataTableHeaderCellComponent,o.DataTableBodyComponent,o.DataTableFooterComponent,o.DataTablePagerComponent,o.ProgressBarComponent,o.DataTableBodyRowComponent,o.DataTableRowWrapperComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableBodyCellComponent,o.DataTableSelectionComponent,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DatatableFooterDirective,o.DatatableGroupHeaderTemplateDirective,o.DataTableSummaryRowComponent],exports:[o.DatatableComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableColumnDirective,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DataTableFooterTemplateDirective,o.DatatableFooterDirective,o.DataTablePagerComponent,o.DatatableGroupHeaderTemplateDirective]})],function(){})}()},FBEI:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n("O5R2"),n("lZOh"),n("tKjC"),e.noop=function(){}},FFOo:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("2Bdj"),i=n("6ahw"),o=n("pugT"),s=n("L/V9"),u=n("iLxQ"),c=n("DKTb"),l=function(t){function e(n,a,r){var o=t.call(this)||this;switch(o.syncErrorValue=null,o.syncErrorThrown=!1,o.syncErrorThrowable=!1,o.isStopped=!1,arguments.length){case 0:o.destination=i.a;break;case 1:if(!n){o.destination=i.a;break}if("object"==typeof n){n instanceof e?(o.syncErrorThrowable=n.syncErrorThrowable,o.destination=n,n.add(o)):(o.syncErrorThrowable=!0,o.destination=new d(o,n));break}default:o.syncErrorThrowable=!0,o.destination=new d(o,n,a,r)}return o}return a.__extends(e,t),e.prototype[s.a]=function(){return this},e.create=function(t,n,a){var r=new e(t,n,a);return r.syncErrorThrowable=!1,r},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this))},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},e.prototype._unsubscribeAndRecycle=function(){var t=this._parent,e=this._parents;return this._parent=null,this._parents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parent=t,this._parents=e,this},e}(o.a),d=function(t){function e(e,n,a,o){var s,u=t.call(this)||this;u._parentSubscriber=e;var c=u;return Object(r.a)(n)?s=n:n&&(s=n.next,a=n.error,o=n.complete,n!==i.a&&(c=Object.create(n),Object(r.a)(c.unsubscribe)&&u.add(c.unsubscribe.bind(c)),c.unsubscribe=u.unsubscribe.bind(u))),u._context=c,u._next=s,u._error=a,u._complete=o,u}return a.__extends(e,t),e.prototype.next=function(t){if(!this.isStopped&&this._next){var e=this._parentSubscriber;u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}},e.prototype.error=function(t){if(!this.isStopped){var e=this._parentSubscriber,n=u.a.useDeprecatedSynchronousErrorHandling;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(c.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(c.a)(t)}}},e.prototype.complete=function(){var t=this;if(!this.isStopped){var e=this._parentSubscriber;if(this._complete){var n=function(){return t._complete.call(t._context)};u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?(this.__tryOrSetError(e,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},e.prototype.__tryOrUnsub=function(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.a.useDeprecatedSynchronousErrorHandling)throw n;Object(c.a)(n)}},e.prototype.__tryOrSetError=function(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(c.a)(a),!0)}return!1},e.prototype._unsubscribe=function(){var t=this._parentSubscriber;this._context=null,this._parentSubscriber=null,t.unsubscribe()},e}(l)},FLvf:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("tFKq")),a(n("0MID"))},FMPj:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("5tze");e.optionalGetterForProp=function(t){return t&&function(e){return a.getterForProp(t)(e,t)}},e.groupRowsByParents=function(t,e,n){if(e&&n){var a={},i=t.length,o=null;a[0]=new r;for(var s=t.reduce(function(t,e){var a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]),u=0;u<i;u++)a[n(t[u])]=new r(t[u]);for(u=0;u<i;u++){var c=0,l=e((o=a[n(t[u])]).row);l&&s.indexOf(l)>-1&&(c=l),o.parent=a[c],o.row.level=o.parent.row.level+1,o.parent.children.push(o)}var d=[];return a[0].flatten(function(){d=d.concat([this.row])},!0),d}return t};var r=function(){function t(t){void 0===t&&(t=null),t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}return t.prototype.flatten=function(t,e){if("expanded"===this.row.treeStatus)for(var n=0,a=this.children.length;n<a;n++){var r=this.children[n];t.apply(r,Array.prototype.slice.call(arguments,2)),e&&r.flatten.apply(r,arguments)}},t}()},"FO+L":function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");n("ZYjt"),e.ScrollbarHelper=function(){function t(t){this.document=t,this.width=this.getWidth()}return t.prototype.getWidth=function(){var t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);var e=t.offsetWidth;t.style.overflow="scroll";var n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);var a=n.offsetWidth;return t.parentNode.removeChild(t),e-a},a([r.Injectable()],t)}()},FSuO:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("LvDl"),i=n("x38r"),o=(n("a0VL"),n("uIqm"),function(){function t(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.columns=[],this.fetchData=new a.EventEmitter}return t.prototype.ngOnInit=function(){var t=this;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(function(){t.fetchData.emit()}),this.useData()},t.prototype.ngOnChanges=function(){this.useData()},t.prototype.useData=function(){this.data&&(this.tableData=this._makePairs(this.data))},t.prototype._makePairs=function(t){var e=this,n=[];if(t){if(r.isArray(t))n=this._makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");n=this._makePairsFromObject(t)}return n=n.map(function(t){return e._convertValue(t)}).filter(function(t){return t}),r.sortBy(this.renderObjects?this.insertFlattenObjects(n):n,"key")}},t.prototype._makePairsFromArray=function(t){var e=this,n=[],a=t[0];if(r.isArray(a)){if(2!==a.length)throw new Error("Wrong array format: [string, any][]");n=t.map(function(t){return{key:t[0],value:t[1]}})}else r.isObject(a)&&(n=r.has(a,"key")&&r.has(a,"value")?t.slice():t.reduce(function(t,n){return t.concat(e._makePairsFromObject(n))},n));return n},t.prototype._makePairsFromObject=function(t){return Object.keys(t).map(function(e){return{key:e,value:t[e]}})},t.prototype.insertFlattenObjects=function(t){var e=this;return r.flattenDeep(t.map(function(t){var n=t.value,a=r.isObject(n);return!a||r.isEmpty(n)?(a&&(t.value=""),t):e.splitItemIntoItems(t)}))},t.prototype.splitItemIntoItems=function(t){var e=this;return this._makePairs(t.value).map(function(n){return e.appendParentKey&&(n.key=t.key+" "+n.key),n})},t.prototype._convertValue=function(t){r.isArray(t.value)&&(t.value=t.value.map(function(t){return r.isObject(t)?JSON.stringify(t):t}).join(", "));var e=r.isEmpty(t.value)&&!r.isNumber(t.value);if(!(this.hideEmpty&&e||r.isObject(t.value)&&!this.renderObjects))return e&&!this.hideEmpty&&""!==t.value&&(t.value=""),!e&&r.isString(t.value)&&(t.value=this.convertString(t.value)),t},t.prototype.convertString=function(t){return this.isDate(t)&&this.datePipe.transform(t)||t},t.prototype.isDate=function(t){var e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))},t}())},FWf1:function(t,e,n){var a=n("mrSG").__extends,r=n("pshJ"),i=n("GiSu"),o=n("zB/H"),s=n("p//D"),u=n("n3uD"),c=n("MkmW"),l=function(t){function e(n,a,r){var o=t.call(this)||this;switch(o.syncErrorValue=null,o.syncErrorThrown=!1,o.syncErrorThrowable=!1,o.isStopped=!1,arguments.length){case 0:o.destination=i.empty;break;case 1:if(!n){o.destination=i.empty;break}if("object"==typeof n){n instanceof e?(o.syncErrorThrowable=n.syncErrorThrowable,o.destination=n,n.add(o)):(o.syncErrorThrowable=!0,o.destination=new d(o,n));break}default:o.syncErrorThrowable=!0,o.destination=new d(o,n,a,r)}return o}return a(e,t),e.prototype[s.rxSubscriber]=function(){return this},e.create=function(t,n,a){var r=new e(t,n,a);return r.syncErrorThrowable=!1,r},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this))},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},e.prototype._unsubscribeAndRecycle=function(){var t=this._parent,e=this._parents;return this._parent=null,this._parents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parent=t,this._parents=e,this},e}(o.Subscription);e.Subscriber=l;var d=function(t){function e(e,n,a,o){var s,u=t.call(this)||this;u._parentSubscriber=e;var c=u;return r.isFunction(n)?s=n:n&&(s=n.next,a=n.error,o=n.complete,n!==i.empty&&(c=Object.create(n),r.isFunction(c.unsubscribe)&&u.add(c.unsubscribe.bind(c)),c.unsubscribe=u.unsubscribe.bind(u))),u._context=c,u._next=s,u._error=a,u._complete=o,u}return a(e,t),e.prototype.next=function(t){if(!this.isStopped&&this._next){var e=this._parentSubscriber;u.config.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}},e.prototype.error=function(t){if(!this.isStopped){var e=this._parentSubscriber,n=u.config.useDeprecatedSynchronousErrorHandling;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):c.hostReportError(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;c.hostReportError(t)}}},e.prototype.complete=function(){var t=this;if(!this.isStopped){var e=this._parentSubscriber;if(this._complete){var n=function(){return t._complete.call(t._context)};u.config.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?(this.__tryOrSetError(e,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},e.prototype.__tryOrUnsub=function(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.config.useDeprecatedSynchronousErrorHandling)throw n;c.hostReportError(n)}},e.prototype.__tryOrSetError=function(t,e,n){if(!u.config.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return u.config.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(c.hostReportError(a),!0)}return!1},e.prototype._unsubscribe=function(){var t=this._parentSubscriber;this._context=null,this._parentSubscriber=null,t.unsubscribe()},e}(l);e.SafeSubscriber=d},FYBg:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("JZ5S"),n("QG5k")),i=n("TCh0");e.NodeMenuComponent=function(){function t(t,e){this.renderer=t,this.nodeMenuService=e,this.menuItemSelected=new a.EventEmitter,this.availableMenuItems=[{name:"New tag",action:r.NodeMenuItemAction.NewTag,cssClass:"new-tag"},{name:"New folder",action:r.NodeMenuItemAction.NewFolder,cssClass:"new-folder"},{name:"Rename",action:r.NodeMenuItemAction.Rename,cssClass:"rename"},{name:"Remove",action:r.NodeMenuItemAction.Remove,cssClass:"remove"}],this.disposersForGlobalListeners=[]}return t.prototype.ngOnInit=function(){this.availableMenuItems=this.menuItems||this.availableMenuItems,this.disposersForGlobalListeners.push(this.renderer.listen("document","keyup",this.closeMenu.bind(this))),this.disposersForGlobalListeners.push(this.renderer.listen("document","mousedown",this.closeMenu.bind(this)))},t.prototype.ngOnDestroy=function(){this.disposersForGlobalListeners.forEach(function(t){return t()})},t.prototype.onMenuItemSelected=function(t,e){i.isLeftButtonClicked(t)&&(this.menuItemSelected.emit({nodeMenuItemAction:e.action,nodeMenuItemSelected:e.name}),this.nodeMenuService.fireMenuEvent(t.target,r.NodeMenuAction.Close))},t.prototype.closeMenu=function(t){var e=t instanceof MouseEvent,n=this.menuContainer.nativeElement!==t.target&&this.menuContainer.nativeElement.contains(t.target);(e&&!n||i.isEscapePressed(t))&&this.nodeMenuService.fireMenuEvent(t.target,r.NodeMenuAction.Close)},t.decorators=[{type:a.Component,args:[{selector:"node-menu",template:'\n    <div class="node-menu">\n      <ul class="node-menu-content" #menuContainer>\n        <li class="node-menu-item" *ngFor="let menuItem of availableMenuItems"\n          (click)="onMenuItemSelected($event, menuItem)">\n          <div class="node-menu-item-icon {{menuItem.cssClass}}"></div>\n          <span class="node-menu-item-value">{{menuItem.name}}</span>\n        </li>\n      </ul>\n    </div>\n  '}]}],t.propDecorators={menuItemSelected:[{type:a.Output}],menuItems:[{type:a.Input}],menuContainer:[{type:a.ViewChild,args:["menuContainer"]}]},t}()},Fgil:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])},t}()},Fjl2:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DatatableGroupHeaderTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-group-header-template]"})],function(t){this.template=t})}()},Fxb1:function(t,e,n){"use strict";n.d(e,"a",function(){return f});var a=n("6blF"),r=n("+tJ4"),i=n("S5XQ"),o=n("u67D"),s=n("JcRv"),u=n("2ePl"),c=n("/WYv"),l=n("McSo"),d=n("En8+"),p=n("xTla"),f=function(t){if(t instanceof a.a)return function(e){return t._isScalar?(e.next(t.value),void e.complete()):t.subscribe(e)};if(t&&"function"==typeof t[p.a])return Object(s.a)(t);if(Object(u.a)(t))return Object(r.a)(t);if(Object(c.a)(t))return Object(i.a)(t);if(t&&"function"==typeof t[d.a])return Object(o.a)(t);var 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.")}},G0Q6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),t.exports=function(t){function e(t,e){return i.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,update:function(t){var n,a,r,o=this,s=o.getMeta(),u=s.dataset,c=s.data||[],l=o.chart.options,d=l.elements.line,p=o.getScaleForId(s.yAxisID),f=o.getDataset(),h=e(f,l);for(h&&(r=u.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),u._scale=p,u._datasetIndex=o.index,u._children=c,u._model={spanGaps:f.spanGaps?f.spanGaps:l.spanGaps,tension:r.tension?r.tension:i.valueOrDefault(f.lineTension,d.tension),backgroundColor:r.backgroundColor?r.backgroundColor:f.backgroundColor||d.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:f.borderWidth||d.borderWidth,borderColor:r.borderColor?r.borderColor:f.borderColor||d.borderColor,borderCapStyle:r.borderCapStyle?r.borderCapStyle:f.borderCapStyle||d.borderCapStyle,borderDash:r.borderDash?r.borderDash:f.borderDash||d.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:f.borderDashOffset||d.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:f.borderJoinStyle||d.borderJoinStyle,fill:r.fill?r.fill:void 0!==f.fill?f.fill:d.fill,steppedLine:r.steppedLine?r.steppedLine:i.valueOrDefault(f.steppedLine,d.stepped),cubicInterpolationMode:r.cubicInterpolationMode?r.cubicInterpolationMode:i.valueOrDefault(f.cubicInterpolationMode,d.cubicInterpolationMode)},u.pivot()),n=0,a=c.length;n<a;++n)o.updateElement(c[n],n,t);for(h&&0!==u._model.tension&&o.updateBezierControlPoints(),n=0,a=c.length;n<a;++n)c[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,a=this.getDataset(),r=t.custom||{};return r.backgroundColor?n=r.backgroundColor:a.pointBackgroundColor?n=i.valueAtIndexOrDefault(a.pointBackgroundColor,e,n):a.backgroundColor&&(n=a.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,a=this.getDataset(),r=t.custom||{};return r.borderColor?n=r.borderColor:a.pointBorderColor?n=i.valueAtIndexOrDefault(a.pointBorderColor,e,n):a.borderColor&&(n=a.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,a=this.getDataset(),r=t.custom||{};return isNaN(r.borderWidth)?!isNaN(a.pointBorderWidth)||i.isArray(a.pointBorderWidth)?n=i.valueAtIndexOrDefault(a.pointBorderWidth,e,n):isNaN(a.borderWidth)||(n=a.borderWidth):n=r.borderWidth,n},getPointRotation:function(t,e){var n=this.chart.options.elements.point.rotation,a=this.getDataset(),r=t.custom||{};return isNaN(r.rotation)?isNaN(a.pointRotation)&&!i.isArray(a.pointRotation)||(n=i.valueAtIndexOrDefault(a.pointRotation,e,n)):n=r.rotation,n},updateElement:function(t,e,n){var a,r,o=this,s=o.getMeta(),u=t.custom||{},c=o.getDataset(),l=o.index,d=c.data[e],p=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),h=o.chart.options.elements.point;void 0!==c.radius&&void 0===c.pointRadius&&(c.pointRadius=c.radius),void 0!==c.hitRadius&&void 0===c.pointHitRadius&&(c.pointHitRadius=c.hitRadius),a=f.getPixelForValue("object"==typeof d?d:NaN,e,l),r=n?p.getBasePixel():o.calculatePointY(d,e,l),t._xScale=f,t._yScale=p,t._datasetIndex=l,t._index=e,t._model={x:a,y:r,skip:u.skip||isNaN(a)||isNaN(r),radius:u.radius||i.valueAtIndexOrDefault(c.pointRadius,e,h.radius),pointStyle:u.pointStyle||i.valueAtIndexOrDefault(c.pointStyle,e,h.pointStyle),rotation:o.getPointRotation(t,e),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:u.hitRadius||i.valueAtIndexOrDefault(c.pointHitRadius,e,h.hitRadius)}},calculatePointY:function(t,e,n){var a,r,i,o=this.chart,s=this.getMeta(),u=this.getScaleForId(s.yAxisID),c=0,l=0;if(u.options.stacked){for(a=0;a<n;a++)if(r=o.data.datasets[a],"line"===(i=o.getDatasetMeta(a)).type&&i.yAxisID===u.id&&o.isDatasetVisible(a)){var d=Number(u.getRightValue(r.data[e]));d<0?l+=d||0:c+=d||0}var p=Number(u.getRightValue(t));return u.getPixelForValue(p<0?l+p:c+p)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),o=this.chart.chartArea,s=r.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}if(r.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),"monotone"===r.dataset._model.cubicInterpolationMode)i.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=i.splineCurve(i.previousItem(s,t)._model,n,i.nextItem(s,t)._model,r.dataset._model.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(n=s[t]._model).controlPointPreviousX=u(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=u(n.controlPointPreviousY,o.top,o.bottom),n.controlPointNextX=u(n.controlPointNextX,o.left,o.right),n.controlPointNextY=u(n.controlPointNextY,o.top,o.bottom)},draw:function(){var t,n=this.chart,a=this.getMeta(),r=a.data||[],o=n.chartArea,s=r.length,u=0;for(e(this.getDataset(),n.options)&&(i.canvas.clipArea(n.ctx,{left:o.left,right:o.right,top:o.top-(t=(a.dataset._model.borderWidth||0)/2),bottom:o.bottom+t}),a.dataset.draw(),i.canvas.unclipArea(n.ctx));u<s;++u)r[u].draw(o)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth,radius:r.radius},r.backgroundColor=a.hoverBackgroundColor||i.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,i.getHoverColor(r.backgroundColor)),r.borderColor=a.hoverBorderColor||i.valueAtIndexOrDefault(e.pointHoverBorderColor,n,i.getHoverColor(r.borderColor)),r.borderWidth=a.hoverBorderWidth||i.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,r.borderWidth),r.radius=a.hoverRadius||i.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius)}})}},G0Uy:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_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\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},G1I9:function(t,e,n){"use strict";n.d(e,"b",function(){return i}),n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("mtw6"),i=function(){return function(t,e,n,a,i){void 0===t&&(t=r.a.info),void 0===i&&(i="Ceph"),this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}(),o=function(t){function e(e){void 0===e&&(e=new i);var n=t.call(this,e.type,e.title,e.message,e.options,e.application)||this;return n.config=e,n.textClasses=["text-danger","text-info","text-success"],n.iconClasses=["fa-exclamation-triangle","fa-info","fa-check"],delete n.config,n.timestamp=(new Date).toJSON(),n.iconClass=n.iconClasses[n.type],n.textClass=n.textClasses[n.type],n}return a.__extends(e,t),e}(i)},G5J1:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var a=n("6blF"),r=new a.a(function(t){return t.complete()});function i(t){return t?function(t){return new a.a(function(e){return t.schedule(function(){return e.complete()})})}(t):r}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},GDJm:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RowHeightCache=function(){function t(){this.treeArray=[]}return t.prototype.clearCache=function(){this.treeArray=[]},t.prototype.initCache=function(t){var e=t.rows,n=t.rowHeight,a=t.detailRowHeight,r=t.externalVirtual,i=t.rowCount,o=t.rowIndexes,s=t.rowExpansions,u="function"==typeof n,c="function"==typeof a;if(!u&&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(!c&&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.");var l=r?i:e.length;this.treeArray=new Array(l);for(var d=0;d<l;++d)this.treeArray[d]=0;for(d=0;d<l;++d){var p=e[d],f=n;u&&(f=n(p));var h=s.get(p);p&&1===h&&(f+=c?a(p,o.get(p)):a),this.update(d,f)}},t.prototype.getRowIndex=function(t){return 0===t?0:this.calcRowIndex(t)},t.prototype.update=function(t,e){if(!this.treeArray.length)throw new Error("Update at index "+t+" with value "+e+" failed:\n        Row Height cache not initialized.");var n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1},t.prototype.query=function(t){if(!this.treeArray.length)throw new Error("query at index "+t+" failed: Fenwick tree array not initialized.");var e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e},t.prototype.queryBetween=function(t,e){return this.query(e)-this.query(t-1)},t.prototype.calcRowIndex=function(t){if(!this.treeArray.length)return 0;for(var e=-1,n=this.treeArray.length,a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){var r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1},t}()},GMZp:function(t,e,n){"use strict";e.isObject=function(t){return null!==t&&"object"==typeof t}},GgAd:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.ngOnChanges=function(){this.usedPercentage=Math.round(this.usedBytes/this.totalBytes*100),this.freePercentage=100-this.usedPercentage,this.freeBytes=this.totalBytes-this.usedBytes},t}()},Gi3i:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("FFOo"),i=n("T1DM");function o(t,e){return void 0===e&&(e=i.a),function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){this.dueTime=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.dueTime,this.scheduler))},t}(),u=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.dueTime=n,r.scheduler=a,r.debouncedSubscription=null,r.lastValue=null,r.hasValue=!1,r}return a.__extends(e,t),e.prototype._next=function(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(c,this.dueTime,this))},e.prototype._complete=function(){this.debouncedNext(),this.destination.complete()},e.prototype.debouncedNext=function(){if(this.clearDebounce(),this.hasValue){var t=this.lastValue;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}},e.prototype.clearDebounce=function(){var t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)},e}(r.a);function c(t){t.debouncedNext()}},GiSu:function(t,e,n){"use strict";var a=n("n3uD"),r=n("MkmW");e.empty={closed:!0,next:function(t){},error:function(t){if(a.config.useDeprecatedSynchronousErrorHandling)throw t;r.hostReportError(t)},complete:function(){}}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===n?e?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:e?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[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])}n("wd/R").defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:e,mm:e,h:e,hh:e,d:"\u0434\u0437\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u044b":t<12?"\u0440\u0430\u043d\u0456\u0446\u044b":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,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+"-\u044b":t+"-\u0456";case"D":return t+"-\u0433\u0430";default:return t}},week:{dow:1,doy:7}})}()},"HHO+":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("58b6"),n("58b6")),i=n("xZld"),o=n("lJMN"),s=(n("JZ5S"),n("QG5k")),u=n("1PfE"),c=(n("Tff5"),n("TCh0")),l=n("kQXf");e.TreeInternalComponent=function(){function t(t,e,n){this.nodeMenuService=t,this.treeService=e,this.nodeElementRef=n,this.isSelected=!1,this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1,this.isReadOnly=!1,this.subscriptions=[]}return t.prototype.ngAfterViewInit=function(){this.tree.checked&&!this.tree.firstCheckedFired&&(this.tree.firstCheckedFired=!0,this.treeService.fireNodeChecked(this.tree))},t.prototype.ngOnInit=function(){var t=this,e=l.get(this.tree,"node.id","");e&&(this.controller=new o.TreeController(this),this.treeService.setController(e,this.controller)),this.settings=this.settings||new r.Ng2TreeSettings,this.isReadOnly=!l.get(this.settings,"enableCheckboxes",!0),this.tree.isRoot()&&!1===this.settings.rootIsVisible&&this.tree.disableCollapseOnInit(),this.subscriptions.push(this.nodeMenuService.hideMenuStream(this.nodeElementRef).subscribe(function(){t.isRightMenuVisible=!1,t.isLeftMenuVisible=!1})),this.subscriptions.push(this.treeService.unselectStream(this.tree).subscribe(function(){return t.isSelected=!1})),this.subscriptions.push(this.treeService.draggedStream(this.tree,this.nodeElementRef).subscribe(function(e){t.tree.hasSibling(e.captured.tree)?t.swapWithSibling(e.captured.tree,t.tree):t.tree.isBranch()?t.moveNodeToThisTreeAndRemoveFromPreviousOne(e,t.tree):t.moveNodeToParentTreeAndRemoveFromPreviousOne(e,t.tree)})),this.subscriptions.push(this.treeService.nodeChecked$.merge(this.treeService.nodeUnchecked$).filter(function(e){return t.eventContainsId(e)&&t.tree.hasChild(e.node)}).subscribe(function(e){return t.updateCheckboxState()}))},t.prototype.ngOnChanges=function(t){this.controller=new o.TreeController(this)},t.prototype.ngOnDestroy=function(){l.get(this.tree,"node.id","")&&this.treeService.deleteController(this.tree.node.id),this.subscriptions.forEach(function(t){return t&&t.unsubscribe()})},t.prototype.swapWithSibling=function(t,e){e.swapWithSibling(t),this.treeService.fireNodeMoved(t,t.parent)},t.prototype.moveNodeToThisTreeAndRemoveFromPreviousOne=function(t,e){this.treeService.fireNodeRemoved(t.captured.tree);var n=e.addChild(t.captured.tree);this.treeService.fireNodeMoved(n,t.captured.tree.parent)},t.prototype.moveNodeToParentTreeAndRemoveFromPreviousOne=function(t,e){this.treeService.fireNodeRemoved(t.captured.tree);var n=e.addSibling(t.captured.tree,e.positionInParent);this.treeService.fireNodeMoved(n,t.captured.tree.parent)},t.prototype.onNodeSelected=function(t){this.tree.selectionAllowed&&c.isLeftButtonClicked(t)&&(this.isSelected=!0,this.treeService.fireNodeSelected(this.tree))},t.prototype.onNodeUnselected=function(t){this.tree.selectionAllowed&&c.isLeftButtonClicked(t)&&(this.isSelected=!1,this.treeService.fireNodeUnselected(this.tree))},t.prototype.showRightMenu=function(t){this.tree.hasRightMenu()&&(c.isRightButtonClicked(t)&&(this.isRightMenuVisible=!this.isRightMenuVisible,this.nodeMenuService.hideMenuForAllNodesExcept(this.nodeElementRef)),t.preventDefault())},t.prototype.showLeftMenu=function(t){this.tree.hasLeftMenu()&&c.isLeftButtonClicked(t)&&(this.isLeftMenuVisible=!this.isLeftMenuVisible,this.nodeMenuService.hideMenuForAllNodesExcept(this.nodeElementRef),this.isLeftMenuVisible&&t.preventDefault())},t.prototype.onMenuItemSelected=function(t){switch(t.nodeMenuItemAction){case s.NodeMenuItemAction.NewTag:case s.NodeMenuItemAction.NewFolder:this.onNewSelected(t);break;case s.NodeMenuItemAction.Rename:this.onRenameSelected();break;case s.NodeMenuItemAction.Remove:this.onRemoveSelected();break;case s.NodeMenuItemAction.Custom:this.onCustomSelected(),this.treeService.fireMenuItemSelected(this.tree,t.nodeMenuItemSelected);break;default:throw new Error("Chosen menu item doesn't exist")}},t.prototype.onNewSelected=function(t){this.tree.createNode(t.nodeMenuItemAction===s.NodeMenuItemAction.NewFolder),this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onRenameSelected=function(){this.tree.markAsBeingRenamed(),this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onRemoveSelected=function(){this.treeService.deleteController(l.get(this.tree,"node.id","")),this.treeService.fireNodeRemoved(this.tree)},t.prototype.onCustomSelected=function(){this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onSwitchFoldingType=function(){this.tree.switchFoldingType(),this.treeService.fireNodeSwitchFoldingType(this.tree)},t.prototype.applyNewValue=function(t){if((t.action===u.NodeEditableEventAction.Cancel||this.tree.isNew())&&i.Tree.isValueEmpty(t.value))return this.treeService.fireNodeRemoved(this.tree);if(this.tree.isNew()&&(this.tree.value=t.value,this.treeService.fireNodeCreated(this.tree)),this.tree.isBeingRenamed()){var e=this.tree.value;this.tree.value=t.value,this.treeService.fireNodeRenamed(e,this.tree)}this.tree.markAsModified()},t.prototype.shouldShowInputForTreeValue=function(){return this.tree.isNew()||this.tree.isBeingRenamed()},t.prototype.isRootHidden=function(){return this.tree.isRoot()&&!this.settings.rootIsVisible},t.prototype.hasCustomMenu=function(){return this.tree.hasCustomMenu()},t.prototype.switchNodeCheckStatus=function(){this.tree.checked?this.onNodeUnchecked():this.onNodeChecked()},t.prototype.onNodeChecked=function(){this.checkboxElementRef&&(this.checkboxElementRef.nativeElement.indeterminate=!1,this.treeService.fireNodeChecked(this.tree),this.executeOnChildController(function(t){return t.check()}),this.tree.checked=!0)},t.prototype.onNodeUnchecked=function(){this.checkboxElementRef&&(this.checkboxElementRef.nativeElement.indeterminate=!1,this.treeService.fireNodeUnchecked(this.tree),this.executeOnChildController(function(t){return t.uncheck()}),this.tree.checked=!1)},t.prototype.executeOnChildController=function(t){var e=this;this.tree.hasLoadedChildern()&&this.tree.children.forEach(function(n){var a=e.treeService.getController(n.id);l.isNil(a)||t(a)})},t.prototype.updateCheckboxState=function(){var t=this;setTimeout(function(){var e=t.tree.checkedChildrenAmount();0===e?(t.checkboxElementRef.nativeElement.indeterminate=!1,t.tree.checked=!1,t.treeService.fireNodeUnchecked(t.tree)):e===t.tree.loadedChildrenAmount()?(t.checkboxElementRef.nativeElement.indeterminate=!1,t.tree.checked=!0,t.treeService.fireNodeChecked(t.tree)):(t.tree.checked=!1,t.checkboxElementRef.nativeElement.indeterminate=!0,t.treeService.fireNodeIndetermined(t.tree))})},t.prototype.eventContainsId=function(t){return!!t.node.id||(console.warn('"Node with checkbox" feature requires a unique id assigned to every node, please consider to add it.'),!1)},t.decorators=[{type:a.Component,args:[{selector:"tree-internal",template:'\n  <ul class="tree" *ngIf="tree" [ngClass]="{rootless: isRootHidden()}">\n    <li>\n      <div class="value-container"\n        [ngClass]="{rootless: isRootHidden()}"\n        [class.selected]="isSelected"\n        (contextmenu)="showRightMenu($event)"\n        [nodeDraggable]="nodeElementRef"\n        [tree]="tree">\n\n        <div class="folding" (click)="onSwitchFoldingType()" [ngClass]="tree.foldingCssClass"></div>\n\n        <div class="node-checkbox" *ngIf="settings.showCheckboxes">\n        <input checkbox  type="checkbox" [disabled]="isReadOnly" [checked]="this.tree.checked" (change)="switchNodeCheckStatus()" #checkbox />\n         </div>\n\n        <div class="node-value"\n          *ngIf="!shouldShowInputForTreeValue()"\n          [class.node-selected]="isSelected"\n          (click)="onNodeSelected($event)">\n            <div *ngIf="tree.nodeTemplate" class="node-template" [innerHTML]="tree.nodeTemplate | safeHtml"></div>\n            <span *ngIf="!template" class="node-name" [innerHTML]="tree.value | safeHtml"></span>\n            <span class="loading-children" *ngIf="tree.childrenAreBeingLoaded()"></span>\n            <ng-template [ngTemplateOutlet]="template" [ngTemplateOutletContext]="{ $implicit: tree.node }"></ng-template>\n        </div>\n\n        <input type="text" class="node-value"\n           *ngIf="shouldShowInputForTreeValue()"\n           [nodeEditable]="tree.value"\n           (valueChanged)="applyNewValue($event)"/>\n\n        <div class="node-left-menu" *ngIf="tree.hasLeftMenu()" (click)="showLeftMenu($event)" [innerHTML]="tree.leftMenuTemplate">\n        </div>\n        <node-menu *ngIf="tree.hasLeftMenu() && isLeftMenuVisible && !hasCustomMenu()"\n          (menuItemSelected)="onMenuItemSelected($event)">\n        </node-menu>\n      </div>\n\n      <node-menu *ngIf="isRightMenuVisible && !hasCustomMenu()"\n           (menuItemSelected)="onMenuItemSelected($event)">\n      </node-menu>\n\n      <node-menu *ngIf="hasCustomMenu() && (isRightMenuVisible || isLeftMenuVisible)"\n           [menuItems]="tree.menuItems"\n           (menuItemSelected)="onMenuItemSelected($event)">\n      </node-menu>\n\n      <div *ngIf="tree.keepNodesInDOM()" [ngStyle]="{\'display\': tree.isNodeExpanded() ? \'block\' : \'none\'}">\n        <tree-internal *ngFor="let child of tree.childrenAsync | async" [tree]="child" [template]="template" [settings]="settings"></tree-internal>\n      </div>\n      <ng-template [ngIf]="tree.isNodeExpanded() && !tree.keepNodesInDOM()">\n        <tree-internal *ngFor="let child of tree.childrenAsync | async" [tree]="child" [template]="template" [settings]="settings"></tree-internal>\n      </ng-template>\n    </li>\n  </ul>\n  '}]}],t.propDecorators={tree:[{type:a.Input}],settings:[{type:a.Input}],template:[{type:a.Input}],checkboxElementRef:[{type:a.ViewChild,args:["checkbox"]}]},t}()},HJBe:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t){return void 0===t&&(t=null),function(e){return e.lift(new o(t))}}var o=function(){function t(t){this.defaultValue=t}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.defaultValue))},t}(),s=function(t){function e(e,n){var a=t.call(this,e)||this;return a.defaultValue=n,a.isEmpty=!0,a}return a.__extends(e,t),e.prototype._next=function(t){this.isEmpty=!1,this.destination.next(t)},e.prototype._complete=function(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()},e}(r.a)},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:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},r=function(t){return function(e,r,i,o){var s=n(e),u=a[t][n(e)];return 2===s&&(u=u[r?0:1]),u.replace(/%d/i,e)}},i=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %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(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},HV4d:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.id=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}},HZF8:function(t,e,n){"use strict";var a=n("zfKp");e.isInteropObservable=function(t){return t&&"function"==typeof t[a.observable]}},Hg4g:function(t,e){t.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},I2ZF:function(t,e){for(var n=[],a=0;a<256;++a)n[a]=(a+256).toString(16).substr(1);t.exports=function(t,e){var a=e||0;return[n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]]].join("")}},IBtZ:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".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:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(t)?t.replace(/\u10d8$/,"\u10e8\u10d8"):t+"\u10e8\u10d8"},past:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(t)?t.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(t)?t.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(t){return 0===t?t:1===t?t+"-\u10da\u10d8":t<20||t<=100&&t%20==0||t%100==0?"\u10db\u10d4-"+t:t+"-\u10d4"},week:{dow:1,doy:7}})}()},ILDN:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.double="double"}(e.ClickType||(e.ClickType={}))},IPm6:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=(n("qwkt"),n("SfHT"));e.DataTableBodyComponent=function(){function t(t){var e=this;this.cd=t,this.selected=[],this.scroll=new i.EventEmitter,this.page=new i.EventEmitter,this.activate=new i.EventEmitter,this.select=new i.EventEmitter,this.detailToggle=new i.EventEmitter,this.rowContextmenu=new i.EventEmitter(!1),this.treeAction=new i.EventEmitter,this.rowHeightsCache=new o.RowHeightCache,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=new Map,this.getDetailRowHeight=function(t,n){if(!e.rowDetail)return 0;var a=e.rowDetail.rowHeight;return"function"==typeof a?a(t,n):a},this.rowTrackingFn=(function(t,e){var n=this.getRowIndex(e);return this.trackByProp?n+"-"+this.trackByProp:n}).bind(this)}return Object.defineProperty(t.prototype,"pageSize",{get:function(){return this._pageSize},set:function(t){this._pageSize=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,this.rowExpansions.clear(),this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=o.columnsByPin(t);this.columnGroupWidths=o.columnGroupWidths(e,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return this._offset},set:function(t){this._offset=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowCount",{get:function(){return this._rowCount},set:function(t){this._rowCount=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyHeight",{get:function(){return this._bodyHeight},set:function(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectEnabled",{get:function(){return!!this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollHeight",{get:function(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(function(e){var n=e.type,a=e.value;"row"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(function(e){var n=e.type,a=e.value;"group"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()}))},t.prototype.ngOnDestroy=function(){this.rowDetail&&this.listener.unsubscribe(),this.groupHeader&&this.listener.unsubscribe()},t.prototype.updateOffsetY=function(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))},t.prototype.onBodyScroll=function(t){var 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()},t.prototype.updatePage=function(t){var 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})},t.prototype.updateRows=function(){var t=this.indexes,e=t.last,n=t.first,a=0,r=[];if(this.rowIndexes.clear(),this.groupedRows)for(;n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++;else for(;n<e&&n<this.rowCount;){var i=this.rows[n];i&&(this.rowIndexes.set(i,n),r[a]=i),a++,n++}this.temp=r},t.prototype.getRowHeight=function(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight},t.prototype.getGroupHeight=function(t){var e=0;if(t.value)for(var n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e},t.prototype.getRowAndDetailHeight=function(t){var e=this.getRowHeight(t);return 1===this.rowExpansions.get(t)&&(e+=this.getDetailRowHeight(t)),e},t.prototype.getRowsStyles=function(t){var e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){var n=0;if(this.groupedRows){var a=t[t.length-1];n=a?this.getRowIndex(a):0}else n=this.getRowIndex(t);var r=this.rowHeightsCache.query(n-1);o.translateXY(e,0,r)}return e},t.prototype.getBottomSummaryRowStyles=function(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;var t={position:"absolute"},e=this.rowHeightsCache.query(this.rows.length-1);return o.translateXY(t,0,e),t},t.prototype.hideIndicator=function(){var t=this;setTimeout(function(){return t.loadingIndicator=!1},500)},t.prototype.updateIndexes=function(){var t=0,e=0;if(this.scrollbarV)if(this.virtualization){var 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}},t.prototype.refreshRowHeightCache=function(){!this.scrollbarV||this.scrollbarV&&!this.virtualization||(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length&&this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:this.rowExpansions}))},t.prototype.getAdjustedViewPortIndex=function(){var t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t},t.prototype.toggleRowExpansion=function(t){var e=this.getAdjustedViewPortIndex(),n=this.rowExpansions.get(t);if(this.scrollbarV&&this.virtualization){var a=this.getDetailRowHeight(t)*(n?-1:1),r=this.getRowIndex(t);this.rowHeightsCache.update(r,a)}n=n^=1,this.rowExpansions.set(t,n),this.detailToggle.emit({rows:[t],currentIndex:e})},t.prototype.toggleAllRows=function(t){this.rowExpansions.clear();for(var e=t?1:0,n=this.getAdjustedViewPortIndex(),a=0,r=this.rows;a<r.length;a++)this.rowExpansions.set(r[a],e);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:n})},t.prototype.recalcLayout=function(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.stylesByGroup=function(t){var e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n),0)}return a},t.prototype.getRowExpanded=function(t){if(0===this.rowExpansions.size&&this.groupExpansionDefault)for(var e=0,n=this.groupedRows;e<n.length;e++)this.rowExpansions.set(n[e],1);return 1===this.rowExpansions.get(t)},t.prototype.getRowIndex=function(t){return this.rowIndexes.get(t)||0},t.prototype.onTreeAction=function(t){this.treeAction.emit({row:t})},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",String)],t.prototype,"emptyMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",String)],t.prototype,"groupRowsBy",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([i.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"pageSize",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"rows",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowCount",null),a([i.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"bodyWidth",null),a([i.Input(),i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"bodyHeight",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"detailToggle",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild(s.ScrollerComponent),r("design:type",s.ScrollerComponent)],t.prototype,"scroller",void 0),a([i.Component({selector:"datatable-body",template:'\n    <datatable-selection\n      #selector\n      [selected]="selected"\n      [rows]="rows"\n      [selectCheck]="selectCheck"\n      [selectEnabled]="selectEnabled"\n      [selectionType]="selectionType"\n      [rowIdentity]="rowIdentity"\n      (select)="select.emit($event)"\n      (activate)="activate.emit($event)">\n      <datatable-progress\n        *ngIf="loadingIndicator">\n      </datatable-progress>\n      <datatable-scroller\n        *ngIf="rows?.length"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [scrollHeight]="scrollHeight"\n        [scrollWidth]="columnGroupWidths?.total"\n        (scroll)="onBodyScroll($event)">\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'top\'"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n        <datatable-row-wrapper\n          [groupedRows]="groupedRows"\n          *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn;"\n          [innerWidth]="innerWidth"\n          [ngStyle]="getRowsStyles(group)"\n          [rowDetail]="rowDetail"\n          [groupHeader]="groupHeader"\n          [offsetX]="offsetX"\n          [detailRowHeight]="getDetailRowHeight(group[i],i)"\n          [row]="group"\n          [expanded]="getRowExpanded(group)"\n          [rowIndex]="getRowIndex(group[i])"\n          (rowContextmenu)="rowContextmenu.emit($event)">\n          <datatable-body-row\n            *ngIf="!groupedRows; else groupedRowsTemplate"\n            tabindex="-1"\n            [isSelected]="selector.getRowSelected(group)"\n            [innerWidth]="innerWidth"\n            [offsetX]="offsetX"\n            [columns]="columns"\n            [rowHeight]="getRowHeight(group)"\n            [row]="group"\n            [rowIndex]="getRowIndex(group)"\n            [expanded]="getRowExpanded(group)"\n            [rowClass]="rowClass"\n            [displayCheck]="displayCheck"\n            [treeStatus]="group.treeStatus"\n            (treeAction)="onTreeAction(group)"\n            (activate)="selector.onActivate($event, indexes.first + i)">\n          </datatable-body-row>\n          <ng-template #groupedRowsTemplate>\n            <datatable-body-row\n              *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn;"\n              tabindex="-1"\n              [isSelected]="selector.getRowSelected(row)"\n              [innerWidth]="innerWidth"\n              [offsetX]="offsetX"\n              [columns]="columns"\n              [rowHeight]="getRowHeight(row)"\n              [row]="row"\n              [group]="group.value"\n              [rowIndex]="getRowIndex(row)"\n              [expanded]="getRowExpanded(row)"\n              [rowClass]="rowClass"\n              (activate)="selector.onActivate($event, i)">\n            </datatable-body-row>\n          </ng-template>\n        </datatable-row-wrapper>\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'bottom\'"\n          [ngStyle]="getBottomSummaryRowStyles()"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n      </datatable-scroller>\n      <div\n        class="empty-row"\n        *ngIf="!rows?.length && !loadingIndicator"\n        [innerHTML]="emptyMessage">\n      </div>\n    </datatable-selection>\n  ',changeDetection:i.ChangeDetectionStrategy.OnPush,host:{class:"datatable-body"}})],t)}()},IUTb:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("pugT"),i=n("+tJ4");function o(t,e){return new a.a(e?function(n){var a=new r.a,i=0;return a.add(e.schedule(function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()})),a}:Object(i.a)(t))}},IZUe:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(t){this.elementRef=t}return t.prototype.ngAfterViewInit=function(){var t=this.elementRef.nativeElement;a.isFunction(t.focus)&&t.focus()},t}()},Ip0R:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_common_common_e",function(){return Xt}),n.d(e,"\u0275angular_packages_common_common_d",function(){return B}),n.d(e,"\u0275angular_packages_common_common_a",function(){return Rt}),n.d(e,"\u0275angular_packages_common_common_b",function(){return Et}),n.d(e,"\u0275angular_packages_common_common_g",function(){return _e}),n.d(e,"\u0275angular_packages_common_common_f",function(){return He}),n.d(e,"\u0275registerLocaleData",function(){return m}),n.d(e,"registerLocaleData",function(){return m}),n.d(e,"formatDate",function(){return et}),n.d(e,"formatCurrency",function(){return St}),n.d(e,"formatNumber",function(){return kt}),n.d(e,"formatPercent",function(){return Ot}),n.d(e,"NgLocaleLocalization",function(){return At}),n.d(e,"NgLocalization",function(){return Nt}),n.d(e,"Plural",function(){return v}),n.d(e,"NumberFormatStyle",function(){return y}),n.d(e,"FormStyle",function(){return x}),n.d(e,"TranslationWidth",function(){return _}),n.d(e,"FormatWidth",function(){return T}),n.d(e,"NumberSymbol",function(){return w}),n.d(e,"WeekDay",function(){return S}),n.d(e,"getNumberOfCurrencyDigits",function(){return K}),n.d(e,"getCurrencySymbol",function(){return U}),n.d(e,"getLocaleDayPeriods",function(){return k}),n.d(e,"getLocaleDayNames",function(){return C}),n.d(e,"getLocaleMonthNames",function(){return I}),n.d(e,"getLocaleId",function(){return O}),n.d(e,"getLocaleEraNames",function(){return R}),n.d(e,"getLocaleWeekEndRange",function(){return D}),n.d(e,"getLocaleFirstDayOfWeek",function(){return N}),n.d(e,"getLocaleDateFormat",function(){return A}),n.d(e,"getLocaleDateTimeFormat",function(){return L}),n.d(e,"getLocaleExtraDayPeriodRules",function(){return G}),n.d(e,"getLocaleExtraDayPeriods",function(){return Y}),n.d(e,"getLocalePluralCase",function(){return F}),n.d(e,"getLocaleTimeFormat",function(){return E}),n.d(e,"getLocaleNumberSymbol",function(){return P}),n.d(e,"getLocaleNumberFormat",function(){return M}),n.d(e,"getLocaleCurrencyName",function(){return j}),n.d(e,"getLocaleCurrencySymbol",function(){return q}),n.d(e,"\u0275parseCookieValue",function(){return Lt}),n.d(e,"CommonModule",function(){return Ve}),n.d(e,"DeprecatedI18NPipesModule",function(){return Be}),n.d(e,"NgClass",function(){return Pt}),n.d(e,"NgForOf",function(){return jt}),n.d(e,"NgForOfContext",function(){return qt}),n.d(e,"NgIf",function(){return zt}),n.d(e,"NgIfContext",function(){return Gt}),n.d(e,"NgPlural",function(){return Wt}),n.d(e,"NgPluralCase",function(){return Kt}),n.d(e,"NgStyle",function(){return $t}),n.d(e,"NgSwitch",function(){return Vt}),n.d(e,"NgSwitchCase",function(){return Bt}),n.d(e,"NgSwitchDefault",function(){return Ut}),n.d(e,"NgTemplateOutlet",function(){return Zt}),n.d(e,"NgComponentOutlet",function(){return Mt}),n.d(e,"DOCUMENT",function(){return Ue}),n.d(e,"AsyncPipe",function(){return Oe}),n.d(e,"DatePipe",function(){return Ne}),n.d(e,"I18nPluralPipe",function(){return Ae}),n.d(e,"I18nSelectPipe",function(){return Ee}),n.d(e,"JsonPipe",function(){return Le}),n.d(e,"LowerCasePipe",function(){return ke}),n.d(e,"CurrencyPipe",function(){return Fe}),n.d(e,"DecimalPipe",function(){return qe}),n.d(e,"PercentPipe",function(){return je}),n.d(e,"SlicePipe",function(){return Ye}),n.d(e,"UpperCasePipe",function(){return Re}),n.d(e,"TitleCasePipe",function(){return Ie}),n.d(e,"KeyValuePipe",function(){return Pe}),n.d(e,"DeprecatedDatePipe",function(){return ge}),n.d(e,"DeprecatedCurrencyPipe",function(){return xe}),n.d(e,"DeprecatedDecimalPipe",function(){return ye}),n.d(e,"DeprecatedPercentPipe",function(){return ve}),n.d(e,"\u0275PLATFORM_BROWSER_ID",function(){return We}),n.d(e,"\u0275PLATFORM_SERVER_ID",function(){return Ke}),n.d(e,"\u0275PLATFORM_WORKER_APP_ID",function(){return $e}),n.d(e,"\u0275PLATFORM_WORKER_UI_ID",function(){return Ze}),n.d(e,"isPlatformBrowser",function(){return Xe}),n.d(e,"isPlatformServer",function(){return Je}),n.d(e,"isPlatformWorkerApp",function(){return Qe}),n.d(e,"isPlatformWorkerUi",function(){return tn}),n.d(e,"VERSION",function(){return en}),n.d(e,"ViewportScroller",function(){return nn}),n.d(e,"\u0275NullViewportScroller",function(){return rn}),n.d(e,"PlatformLocation",function(){return i}),n.d(e,"LOCATION_INITIALIZED",function(){return o}),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 p}),n.d(e,"Location",function(){return c});var a=n("CcnG"),r=n("mrSG"),i=function(){return function(){}}(),o=new a.InjectionToken("Location Initialized"),s=function(){return function(){}}(),u=new a.InjectionToken("appBaseHref"),c=function(){function t(t){var n=this;this._subject=new a.EventEmitter,this._platformStrategy=t;var r=this._platformStrategy.getBaseHref();this._baseHref=e.stripTrailingSlash(l(r)),this._platformStrategy.onPopState(function(t){n._subject.emit({url:n.path(!0),pop:!0,state:t.state,type:t.type})})}var e;return e=t,t.prototype.path=function(t){return void 0===t&&(t=!1),this.normalize(this._platformStrategy.path(t))},t.prototype.isCurrentPathEqualTo=function(t,n){return void 0===n&&(n=""),this.path()==this.normalize(t+e.normalizeQueryParams(n))},t.prototype.normalize=function(t){return e.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,l(t)))},t.prototype.prepareExternalUrl=function(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)},t.prototype.go=function(t,e,n){void 0===e&&(e=""),void 0===n&&(n=null),this._platformStrategy.pushState(n,"",t,e)},t.prototype.replaceState=function(t,e,n){void 0===e&&(e=""),void 0===n&&(n=null),this._platformStrategy.replaceState(n,"",t,e)},t.prototype.forward=function(){this._platformStrategy.forward()},t.prototype.back=function(){this._platformStrategy.back()},t.prototype.subscribe=function(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})},t.normalizeQueryParams=function(t){return t&&"?"!==t[0]?"?"+t:t},t.joinWithSlash=function(t,e){if(0==t.length)return e;if(0==e.length)return t;var n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e},t.stripTrailingSlash=function(t){var e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)},t}();function l(t){return t.replace(/\/index.html$/,"")}var d=function(t){function e(e,n){var a=t.call(this)||this;return a._platformLocation=e,a._baseHref="",null!=n&&(a._baseHref=n),a}return Object(r.__extends)(e,t),e.prototype.onPopState=function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)},e.prototype.getBaseHref=function(){return this._baseHref},e.prototype.path=function(t){void 0===t&&(t=!1);var e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e},e.prototype.prepareExternalUrl=function(t){var e=c.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e},e.prototype.pushState=function(t,e,n,a){var r=this.prepareExternalUrl(n+c.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)},e.prototype.replaceState=function(t,e,n,a){var r=this.prepareExternalUrl(n+c.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)},e.prototype.forward=function(){this._platformLocation.forward()},e.prototype.back=function(){this._platformLocation.back()},e}(s),p=function(t){function e(e,n){var a=t.call(this)||this;if(a._platformLocation=e,null==n&&(n=a._platformLocation.getBaseHrefFromDOM()),null==n)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.");return a._baseHref=n,a}return Object(r.__extends)(e,t),e.prototype.onPopState=function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)},e.prototype.getBaseHref=function(){return this._baseHref},e.prototype.prepareExternalUrl=function(t){return c.joinWithSlash(this._baseHref,t)},e.prototype.path=function(t){void 0===t&&(t=!1);var e=this._platformLocation.pathname+c.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?""+e+n:e},e.prototype.pushState=function(t,e,n,a){var r=this.prepareExternalUrl(n+c.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)},e.prototype.replaceState=function(t,e,n,a){var r=this.prepareExternalUrl(n+c.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)},e.prototype.forward=function(){this._platformLocation.forward()},e.prototype.back=function(){this._platformLocation.back()},e}(s),f=void 0,h=["en",[["a","p"],["AM","PM"],f],[["AM","PM"],f,f],[["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"]],f,[["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"]],f,[["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}",f,"{1} 'at' {0}",f],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##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}],g={};function m(t,e,n){"string"!=typeof e&&(n=e,e=t[0]),e=e.toLowerCase().replace(/_/g,"-"),g[e]=t,n&&(g[e][19]=n)}var b={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,"\u09f3"],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,"\u0440.",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\xa5","\xa5"],COP:[void 0,"$",0],CRC:[void 0,"\u20a1",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"K\u010d",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E\xa3"],ESP:[void 0,"\u20a7",0],EUR:["\u20ac"],FJD:[void 0,"$"],FKP:[void 0,"\xa3"],GBP:["\xa3"],GEL:[void 0,"\u20be"],GIP:[void 0,"\xa3"],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:["\u20aa"],INR:["\u20b9"],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:["\xa5",void 0,0],KHR:[void 0,"\u17db"],KMF:[void 0,"CF",0],KPW:[void 0,"\u20a9",0],KRW:["\u20a9",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"\u20b8"],LAK:[void 0,"\u20ad",0],LBP:[void 0,"L\xa3",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,"\u20ae",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"\u20a6"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"\u20b1"],PKR:[void 0,"Rs",0],PLN:[void 0,"z\u0142"],PYG:[void 0,"\u20b2",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"\u20bd"],RUR:[void 0,"\u0440."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"\xa3"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"\xa3"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"\xa3",0],THB:[void 0,"\u0e3f"],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,"\u20ba"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"\u20b4"],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:["\u20ab",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]},y=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}({}),v=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({}),x=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}({}),_=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}({}),T=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}({}),w=function(t){return t[t.Decimal=0]="Decimal",t[t.Group=1]="Group",t[t.List=2]="List",t[t.PercentSign=3]="PercentSign",t[t.PlusSign=4]="PlusSign",t[t.MinusSign=5]="MinusSign",t[t.Exponential=6]="Exponential",t[t.SuperscriptingExponent=7]="SuperscriptingExponent",t[t.PerMille=8]="PerMille",t[t[1/0]=9]="Infinity",t[t.NaN=10]="NaN",t[t.TimeSeparator=11]="TimeSeparator",t[t.CurrencyDecimal=12]="CurrencyDecimal",t[t.CurrencyGroup=13]="CurrencyGroup",t}({}),S=function(t){return t[t.Sunday=0]="Sunday",t[t.Monday=1]="Monday",t[t.Tuesday=2]="Tuesday",t[t.Wednesday=3]="Wednesday",t[t.Thursday=4]="Thursday",t[t.Friday=5]="Friday",t[t.Saturday=6]="Saturday",t}({});function O(t){return B(t)[0]}function k(t,e,n){var a=B(t),r=H([a[1],a[2]],e);return H(r,n)}function C(t,e,n){var a=B(t),r=H([a[3],a[4]],e);return H(r,n)}function I(t,e,n){var a=B(t),r=H([a[5],a[6]],e);return H(r,n)}function R(t,e){return H(B(t)[7],e)}function N(t){return B(t)[8]}function D(t){return B(t)[9]}function A(t,e){return H(B(t)[10],e)}function E(t,e){return H(B(t)[11],e)}function L(t,e){return H(B(t)[12],e)}function P(t,e){var n=B(t),a=n[13][e];if(void 0===a){if(e===w.CurrencyDecimal)return n[13][w.Decimal];if(e===w.CurrencyGroup)return n[13][w.Group]}return a}function M(t,e){return B(t)[14][e]}function q(t){return B(t)[15]||null}function j(t){return B(t)[16]||null}function F(t){return B(t)[18]}function z(t){if(!t[19])throw new Error('Missing extra locale data for the locale "'+t[0]+'". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.')}function G(t){var e=B(t);return z(e),(e[19][2]||[]).map(function(t){return"string"==typeof t?V(t):[V(t[0]),V(t[1])]})}function Y(t,e,n){var a=B(t);z(a);var r=H([a[19][0],a[19][1]],e)||[];return H(r,n)||[]}function H(t,e){for(var n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function V(t){var e=Object(r.__read)(t.split(":"),2);return{hours:+e[0],minutes:+e[1]}}function B(t){var e=t.toLowerCase().replace(/_/g,"-"),n=g[e];if(n)return n;var a=e.split("-")[0];if(n=g[a])return n;if("en"===a)return h;throw new Error('Missing locale data for the locale "'+t+'".')}function U(t,e,n){void 0===n&&(n="en");var a=function(t){return B(t)[17]}(n)[t]||b[t]||[],r=a[1];return"narrow"===e&&"string"==typeof r?r:a[0]||t}var W=2;function K(t){var e,n=b[t];return n&&(e=n[2]),"number"==typeof e?e:W}var $=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Z={},X=/((?:[^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]*)/,J=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}({}),Q=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}({}),tt=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}({});function et(t,e,n,a){var i=function(t){if(ft(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();var e,n=parseFloat(t);if(!isNaN(t-n))return new Date(n);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){var a=Object(r.__read)(t.split("-").map(function(t){return+t}),3);return new Date(a[0],a[1]-1,a[2])}if(e=t.match($))return pt(e)}var i=new Date(t);if(!ft(i))throw new Error('Unable to convert "'+t+'" into a date');return i}(t);e=function t(e,n){var a=O(e);if(Z[a]=Z[a]||{},Z[a][n])return Z[a][n];var r="";switch(n){case"shortDate":r=A(e,T.Short);break;case"mediumDate":r=A(e,T.Medium);break;case"longDate":r=A(e,T.Long);break;case"fullDate":r=A(e,T.Full);break;case"shortTime":r=E(e,T.Short);break;case"mediumTime":r=E(e,T.Medium);break;case"longTime":r=E(e,T.Long);break;case"fullTime":r=E(e,T.Full);break;case"short":var i=t(e,"shortTime"),o=t(e,"shortDate");r=nt(L(e,T.Short),[i,o]);break;case"medium":var s=t(e,"mediumTime"),u=t(e,"mediumDate");r=nt(L(e,T.Medium),[s,u]);break;case"long":var c=t(e,"longTime"),l=t(e,"longDate");r=nt(L(e,T.Long),[c,l]);break;case"full":var d=t(e,"fullTime"),p=t(e,"fullDate");r=nt(L(e,T.Full),[d,p])}return r&&(Z[a][n]=r),r}(n,e)||e;for(var o,s=[];e;){if(!(o=X.exec(e))){s.push(e);break}var u=(s=s.concat(o.slice(1))).pop();if(!u)break;e=u}var c=i.getTimezoneOffset();a&&(c=dt(a,c),i=function(t,e,n){var a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(dt(e,a)-a))}(i,a));var l="";return s.forEach(function(t){var e=function(t){if(lt[t])return lt[t];var e;switch(t){case"G":case"GG":case"GGG":e=it(tt.Eras,_.Abbreviated);break;case"GGGG":e=it(tt.Eras,_.Wide);break;case"GGGGG":e=it(tt.Eras,_.Narrow);break;case"y":e=rt(Q.FullYear,1,0,!1,!0);break;case"yy":e=rt(Q.FullYear,2,0,!0,!0);break;case"yyy":e=rt(Q.FullYear,3,0,!1,!0);break;case"yyyy":e=rt(Q.FullYear,4,0,!1,!0);break;case"M":case"L":e=rt(Q.Month,1,1);break;case"MM":case"LL":e=rt(Q.Month,2,1);break;case"MMM":e=it(tt.Months,_.Abbreviated);break;case"MMMM":e=it(tt.Months,_.Wide);break;case"MMMMM":e=it(tt.Months,_.Narrow);break;case"LLL":e=it(tt.Months,_.Abbreviated,x.Standalone);break;case"LLLL":e=it(tt.Months,_.Wide,x.Standalone);break;case"LLLLL":e=it(tt.Months,_.Narrow,x.Standalone);break;case"w":e=ct(1);break;case"ww":e=ct(2);break;case"W":e=ct(1,!0);break;case"d":e=rt(Q.Date,1);break;case"dd":e=rt(Q.Date,2);break;case"E":case"EE":case"EEE":e=it(tt.Days,_.Abbreviated);break;case"EEEE":e=it(tt.Days,_.Wide);break;case"EEEEE":e=it(tt.Days,_.Narrow);break;case"EEEEEE":e=it(tt.Days,_.Short);break;case"a":case"aa":case"aaa":e=it(tt.DayPeriods,_.Abbreviated);break;case"aaaa":e=it(tt.DayPeriods,_.Wide);break;case"aaaaa":e=it(tt.DayPeriods,_.Narrow);break;case"b":case"bb":case"bbb":e=it(tt.DayPeriods,_.Abbreviated,x.Standalone,!0);break;case"bbbb":e=it(tt.DayPeriods,_.Wide,x.Standalone,!0);break;case"bbbbb":e=it(tt.DayPeriods,_.Narrow,x.Standalone,!0);break;case"B":case"BB":case"BBB":e=it(tt.DayPeriods,_.Abbreviated,x.Format,!0);break;case"BBBB":e=it(tt.DayPeriods,_.Wide,x.Format,!0);break;case"BBBBB":e=it(tt.DayPeriods,_.Narrow,x.Format,!0);break;case"h":e=rt(Q.Hours,1,-12);break;case"hh":e=rt(Q.Hours,2,-12);break;case"H":e=rt(Q.Hours,1);break;case"HH":e=rt(Q.Hours,2);break;case"m":e=rt(Q.Minutes,1);break;case"mm":e=rt(Q.Minutes,2);break;case"s":e=rt(Q.Seconds,1);break;case"ss":e=rt(Q.Seconds,2);break;case"S":e=rt(Q.FractionalSeconds,1);break;case"SS":e=rt(Q.FractionalSeconds,2);break;case"SSS":e=rt(Q.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=ot(J.Short);break;case"ZZZZZ":e=ot(J.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=ot(J.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=ot(J.Long);break;default:return null}return lt[t]=e,e}(t);l+=e?e(i,n,c):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}function nt(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(t,n){return null!=e&&n in e?e[n]:t})),t}function at(t,e,n,a,r){void 0===n&&(n="-");var i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));for(var o=String(t);o.length<e;)o="0"+o;return a&&(o=o.substr(o.length-e)),i+o}function rt(t,e,n,a,r){return void 0===n&&(n=0),void 0===a&&(a=!1),void 0===r&&(r=!1),function(i,o){var s,u=function(t,e){switch(t){case Q.FullYear:return e.getFullYear();case Q.Month:return e.getMonth();case Q.Date:return e.getDate();case Q.Hours:return e.getHours();case Q.Minutes:return e.getMinutes();case Q.Seconds:return e.getSeconds();case Q.FractionalSeconds:return e.getMilliseconds();case Q.Day:return e.getDay();default:throw new Error('Unknown DateType value "'+t+'".')}}(t,i);if((n>0||u>-n)&&(u+=n),t===Q.Hours)0===u&&-12===n&&(u=12);else if(t===Q.FractionalSeconds)return s=e,at(u,3).substr(0,s);var c=P(o,w.MinusSign);return at(u,e,c,a,r)}}function it(t,e,n,a){return void 0===n&&(n=x.Format),void 0===a&&(a=!1),function(r,i){return function(t,e,n,a,r,i){switch(n){case tt.Months:return I(e,r,a)[t.getMonth()];case tt.Days:return C(e,r,a)[t.getDay()];case tt.DayPeriods:var o=t.getHours(),s=t.getMinutes();if(i){var u,c=G(e),l=Y(e,r,a);if(c.forEach(function(t,e){if(Array.isArray(t)){var n=t[0],a=t[1],r=a.hours;o>=n.hours&&s>=n.minutes&&(o<r||o===r&&s<a.minutes)&&(u=l[e])}else t.hours===o&&t.minutes===s&&(u=l[e])}),u)return u}return k(e,r,a)[o<12?0:1];case tt.Eras:return R(e,a)[t.getFullYear()<=0?0:1];default:throw new Error("unexpected translation type "+n)}}(r,i,t,e,n,a)}}function ot(t){return function(e,n,a){var r=-1*a,i=P(n,w.MinusSign),o=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case J.Short:return(r>=0?"+":"")+at(o,2,i)+at(Math.abs(r%60),2,i);case J.ShortGMT:return"GMT"+(r>=0?"+":"")+at(o,1,i);case J.Long:return"GMT"+(r>=0?"+":"")+at(o,2,i)+":"+at(Math.abs(r%60),2,i);case J.Extended:return 0===a?"Z":(r>=0?"+":"")+at(o,2,i)+":"+at(Math.abs(r%60),2,i);default:throw new Error('Unknown zone width "'+t+'"')}}}var st=0,ut=4;function ct(t,e){return void 0===e&&(e=!1),function(n,a){var r,i,o,s;if(e){var u=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,c=n.getDate();r=1+Math.floor((c+u)/7)}else{var l=(o=n.getFullYear(),s=new Date(o,st,1).getDay(),new Date(o,0,1+(s<=ut?ut:ut+7)-s)),d=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(ut-i.getDay()))).getTime()-l.getTime();r=1+Math.round(d/6048e5)}return at(r,t,P(a,w.MinusSign))}}var lt={};function dt(t,e){t=t.replace(/:/g,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function pt(t){var e=new Date(0),n=0,a=0,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]));var o=Number(t[4]||0)-n,s=Number(t[5]||0)-a,u=Number(t[6]||0),c=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,o,s,u,c),e}function ft(t){return t instanceof Date&&!isNaN(t.valueOf())}var ht=/^(\d+)?\.((\d+)(-(\d+))?)?$/,gt=22,mt=".",bt="0",yt=";",vt=",",xt="#",_t="\xa4",Tt="%";function wt(t,e,n,a,r,i,o){void 0===o&&(o=!1);var s="",u=!1;if(isFinite(t)){var c=function(e){var n,a,r,i,o,s=Math.abs(t)+"",u=0;for((a=s.indexOf(mt))>-1&&(s=s.replace(mt,"")),(r=s.search(/e/i))>0?(a<0&&(a=r),a+=+s.slice(r+1),s=s.substring(0,r)):a<0&&(a=s.length),r=0;s.charAt(r)===bt;r++);if(r===(o=s.length))n=[0],a=1;else{for(o--;s.charAt(o)===bt;)o--;for(a-=r,n=[],i=0;r<=o;r++,i++)n[i]=Number(s.charAt(r))}return a>gt&&(n=n.splice(0,gt-1),u=a-1,a=1),{digits:n,exponent:u,integerLen:a}}();o&&(c=function(t){if(0===t.digits[0])return t;var 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}(c));var l=e.minInt,d=e.minFrac,p=e.maxFrac;if(i){var f=i.match(ht);if(null===f)throw new Error(i+" is not a valid digit info");var h=f[1],g=f[3],m=f[5];null!=h&&(l=It(h)),null!=g&&(d=It(g)),null!=m?p=It(m):null!=g&&d>p&&(p=d)}!function(t,e,n){if(e>n)throw new Error("The minimum number of digits after fraction ("+e+") is higher than the maximum ("+n+").");var a=t.digits,r=a.length-t.integerLen,i=Math.min(Math.max(e,r),n),o=i+t.integerLen,s=a[o];if(o>0){a.splice(Math.max(t.integerLen,o));for(var u=o;u<a.length;u++)a[u]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,o=i+1),a[0]=0;for(var c=1;c<o;c++)a[c]=0}if(s>=5)if(o-1<0){for(var l=0;l>o;l--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[o-1]++;for(;r<Math.max(0,i);r++)a.push(0);var d=0!==i,p=e+t.integerLen,f=a.reduceRight(function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,d&&(0===a[n]&&n>=p?a.pop():d=!1),e>=10?1:0},0);f&&(a.unshift(f),t.integerLen++)}(c,d,p);var b=c.digits,y=c.integerLen,v=c.exponent,x=[];for(u=b.every(function(t){return!t});y<l;y++)b.unshift(0);for(;y<0;y++)b.unshift(0);y>0?x=b.splice(y,b.length):(x=b,b=[0]);var _=[];for(b.length>=e.lgSize&&_.unshift(b.splice(-e.lgSize,b.length).join(""));b.length>e.gSize;)_.unshift(b.splice(-e.gSize,b.length).join(""));b.length&&_.unshift(b.join("")),s=_.join(P(n,a)),x.length&&(s+=P(n,r)+x.join("")),v&&(s+=P(n,w.Exponential)+"+"+v)}else s=P(n,w.Infinity);return t<0&&!u?e.negPre+s+e.negSuf:e.posPre+s+e.posSuf}function St(t,e,n,a,r){var i=Ct(M(e,y.Currency),P(e,w.MinusSign));return i.minFrac=K(a),i.maxFrac=i.minFrac,wt(t,i,e,w.CurrencyGroup,w.CurrencyDecimal,r).replace(_t,n).replace(_t,"")}function Ot(t,e,n){return wt(t,Ct(M(e,y.Percent),P(e,w.MinusSign)),e,w.Group,w.Decimal,n,!0).replace(new RegExp(Tt,"g"),P(e,w.PercentSign))}function kt(t,e,n){return wt(t,Ct(M(e,y.Decimal),P(e,w.MinusSign)),e,w.Group,w.Decimal,n)}function Ct(t,e){void 0===e&&(e="-");var n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(yt),r=a[0],i=a[1],o=-1!==r.indexOf(mt)?r.split(mt):[r.substring(0,r.lastIndexOf(bt)+1),r.substring(r.lastIndexOf(bt)+1)],s=o[0],u=o[1]||"";n.posPre=s.substr(0,s.indexOf(xt));for(var c=0;c<u.length;c++){var l=u.charAt(c);l===bt?n.minFrac=n.maxFrac=c+1:l===xt?n.maxFrac=c+1:n.posSuf+=l}var d=s.split(vt);if(n.gSize=d[1]?d[1].length:0,n.lgSize=d[2]||d[1]?(d[2]||d[1]).length:0,i){var p=r.length-n.posPre.length-n.posSuf.length,f=i.indexOf(xt);n.negPre=i.substr(0,f).replace(/'/g,""),n.negSuf=i.substr(f+p).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function It(t){var e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}var Rt=new a.InjectionToken("UseV4Plurals"),Nt=function(){return function(){}}();function Dt(t,e,n,a){var 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+'"')}var At=function(t){function e(e,n){var a=t.call(this)||this;return a.locale=e,a.deprecatedPluralFn=n,a}return Object(r.__extends)(e,t),e.prototype.getPluralCategory=function(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):F(e||this.locale)(t)){case v.Zero:return"zero";case v.One:return"one";case v.Two:return"two";case v.Few:return"few";case v.Many:return"many";default:return"other"}},e}(Nt);function Et(t,e){"string"==typeof e&&(e=parseInt(e,10));var n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,o=parseInt(a,10),s=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?v.One:v.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?v.One:v.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?v.One:v.Other;case"ar":return 0===n?v.Zero:1===n?v.One:2===n?v.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?v.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?v.Many:v.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?v.One:v.Other;case"be":return n%10==1&&n%100!=11?v.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?v.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?v.Many:v.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?v.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?v.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)?v.Few:0!==n&&n%1e6==0?v.Many:v.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||o%10==1&&o%100!=11?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?v.Few:v.Other;case"cs":case"sk":return 1===r&&0===i?v.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?v.Few:0!==i?v.Many:v.Other;case"cy":return 0===n?v.Zero:1===n?v.One:2===n?v.Two:3===n?v.Few:6===n?v.Many:v.Other;case"da":return 1===n||0!==s&&(0===r||1===r)?v.One:v.Other;case"dsb":case"hsb":return 0===i&&r%100==1||o%100==1?v.One:0===i&&r%100==2||o%100==2?v.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4?v.Few:v.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?v.One:v.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&&o%10!=4&&o%10!=6&&o%10!=9?v.One:v.Other;case"ga":return 1===n?v.One:2===n?v.Two:n===Math.floor(n)&&n>=3&&n<=6?v.Few:n===Math.floor(n)&&n>=7&&n<=10?v.Many:v.Other;case"gd":return 1===n||11===n?v.One:2===n||12===n?v.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?v.Few:v.Other;case"gv":return 0===i&&r%10==1?v.One:0===i&&r%10==2?v.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?v.Many:v.Other:v.Few;case"he":return 1===r&&0===i?v.One:2===r&&0===i?v.Two:0!==i||n>=0&&n<=10||n%10!=0?v.Other:v.Many;case"is":return 0===s&&r%10==1&&r%100!=11||0!==s?v.One:v.Other;case"ksh":return 0===n?v.Zero:1===n?v.One:v.Other;case"kw":case"naq":case"se":case"smn":return 1===n?v.One:2===n?v.Two:v.Other;case"lag":return 0===n?v.Zero:0!==r&&1!==r||0===n?v.Other:v.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)?v.Few:0!==o?v.Many:v.Other:v.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&o%100===Math.floor(o%100)&&o%100>=11&&o%100<=19?v.Zero:n%10==1&&n%100!=11||2===i&&o%10==1&&o%100!=11||2!==i&&o%10==1?v.One:v.Other;case"mk":return 0===i&&r%10==1||o%10==1?v.One:v.Other;case"mt":return 1===n?v.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?v.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?v.Many:v.Other;case"pl":return 1===r&&0===i?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?v.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?v.Many:v.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?v.One:v.Other;case"ro":return 1===r&&0===i?v.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?v.Few:v.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?v.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?v.Many:v.Other;case"shi":return 0===r||1===n?v.One:n===Math.floor(n)&&n>=2&&n<=10?v.Few:v.Other;case"si":return 0===n||1===n||0===r&&1===o?v.One:v.Other;case"sl":return 0===i&&r%100==1?v.One:0===i&&r%100==2?v.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?v.Few:v.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?v.One:v.Other;default:return v.Other}}function Lt(t,e){var n,a;e=encodeURIComponent(e);try{for(var i=Object(r.__values)(t.split(";")),o=i.next();!o.done;o=i.next()){var s=o.value,u=s.indexOf("="),c=Object(r.__read)(-1==u?[s,""]:[s.slice(0,u),s.slice(u+1)],2),l=c[1];if(c[0].trim()===e)return decodeURIComponent(l)}}catch(d){n={error:d}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return null}var Pt=function(){function t(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}return Object.defineProperty(t.prototype,"klass",{set:function(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClass",{set:function(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["\u0275isListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._iterableDiffer){var t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){var e=this._keyValueDiffer.diff(this._rawClass);e&&this._applyKeyValueChanges(e)}},t.prototype._applyKeyValueChanges=function(t){var e=this;t.forEachAddedItem(function(t){return e._toggleClass(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e._toggleClass(t.key,t.currentValue)}),t.forEachRemovedItem(function(t){t.previousValue&&e._toggleClass(t.key,!1)})},t.prototype._applyIterableChanges=function(t){var e=this;t.forEachAddedItem(function(t){if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+Object(a["\u0275stringify"])(t.item));e._toggleClass(t.item,!0)}),t.forEachRemovedItem(function(t){return e._toggleClass(t.item,!1)})},t.prototype._applyClasses=function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach(function(t){return e._toggleClass(t,!0)}):Object.keys(t).forEach(function(n){return e._toggleClass(n,!!t[n])}))},t.prototype._removeClasses=function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach(function(t){return e._toggleClass(t,!1)}):Object.keys(t).forEach(function(t){return e._toggleClass(t,!1)}))},t.prototype._toggleClass=function(t,e){var n=this;(t=t.trim())&&t.split(/\s+/g).forEach(function(t){e?n._renderer.addClass(n._ngEl.nativeElement,t):n._renderer.removeClass(n._ngEl.nativeElement,t)})},t}(),Mt=function(){function t(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}return t.prototype.ngOnChanges=function(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){var e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){var n=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(n.injector)}else this._moduleRef=null;var r=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(r,this._viewContainerRef.length,e,this.ngComponentOutletContent)}},t.prototype.ngOnDestroy=function(){this._moduleRef&&this._moduleRef.destroy()},t}(),qt=function(){function t(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}return Object.defineProperty(t.prototype,"first",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"last",{get:function(){return this.index===this.count-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"even",{get:function(){return this.index%2==0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"odd",{get:function(){return!this.even},enumerable:!0,configurable:!0}),t}(),jt=function(){function t(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}return Object.defineProperty(t.prototype,"ngForOf",{set:function(t){this._ngForOf=t,this._ngForOfDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngForTrackBy",{get:function(){return this._trackByFn},set:function(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},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngForTemplate",{set:function(t){t&&(this._template=t)},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._ngForOfDirty){this._ngForOfDirty=!1;var t=this._ngForOf;if(!this._differ&&t)try{this._differ=this._differs.find(t).create(this.ngForTrackBy)}catch(a){throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+((e=t).name||typeof e)+"'. NgFor only supports binding to Iterables such as Arrays.")}}var e;if(this._differ){var n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}},t.prototype._applyChanges=function(t){var e=this,n=[];t.forEachOperation(function(t,a,r){if(null==t.previousIndex){var i=e._viewContainer.createEmbeddedView(e._template,new qt(null,e._ngForOf,-1,-1),r),o=new Ft(t,i);n.push(o)}else null==r?e._viewContainer.remove(a):(i=e._viewContainer.get(a),e._viewContainer.move(i,r),o=new Ft(t,i),n.push(o))});for(var a=0;a<n.length;a++)this._perViewChange(n[a].view,n[a].record);a=0;for(var r=this._viewContainer.length;a<r;a++){var i=this._viewContainer.get(a);i.context.index=a,i.context.count=r,i.context.ngForOf=this._ngForOf}t.forEachIdentityChange(function(t){e._viewContainer.get(t.currentIndex).context.$implicit=t.item})},t.prototype._perViewChange=function(t,e){t.context.$implicit=e.item},t.ngTemplateContextGuard=function(t,e){return!0},t}(),Ft=function(){return function(t,e){this.record=t,this.view=e}}(),zt=function(){function t(t,e){this._viewContainer=t,this._context=new Gt,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}return Object.defineProperty(t.prototype,"ngIf",{set:function(t){this._context.$implicit=this._context.ngIf=t,this._updateView()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngIfThen",{set:function(t){Yt("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngIfElse",{set:function(t){Yt("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()},enumerable:!0,configurable:!0}),t.prototype._updateView=function(){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)))},t.ngTemplateGuard_ngIf=function(t,e){return!0},t}(),Gt=function(){return function(){this.$implicit=null,this.ngIf=null}}();function Yt(t,e){if(e&&!e.createEmbeddedView)throw new Error(t+" must be a TemplateRef, but received '"+Object(a["\u0275stringify"])(e)+"'.")}var Ht=function(){function t(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}return t.prototype.create=function(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)},t.prototype.destroy=function(){this._created=!1,this._viewContainerRef.clear()},t.prototype.enforceState=function(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()},t}(),Vt=function(){function t(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}return Object.defineProperty(t.prototype,"ngSwitch",{set:function(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)},enumerable:!0,configurable:!0}),t.prototype._addCase=function(){return this._caseCount++},t.prototype._addDefault=function(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)},t.prototype._matchCase=function(t){var 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},t.prototype._updateDefaultCases=function(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(var e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}},t}(),Bt=function(){function t(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Ht(t,e)}return t.prototype.ngDoCheck=function(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))},t}(),Ut=function(){return function(t,e,n){n._addDefault(new Ht(t,e))}}(),Wt=function(){function t(t){this._localization=t,this._caseViews={}}return Object.defineProperty(t.prototype,"ngPlural",{set:function(t){this._switchValue=t,this._updateView()},enumerable:!0,configurable:!0}),t.prototype.addCase=function(t,e){this._caseViews[t]=e},t.prototype._updateView=function(){this._clearViews();var t=Object.keys(this._caseViews),e=Dt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])},t.prototype._clearViews=function(){this._activeView&&this._activeView.destroy()},t.prototype._activateView=function(t){t&&(this._activeView=t,this._activeView.create())},t}(),Kt=function(){return function(t,e,n,a){this.value=t;var r=!isNaN(Number(t));a.addCase(r?"="+t:t,new Ht(n,e))}}(),$t=function(){function t(t,e,n){this._differs=t,this._ngEl=e,this._renderer=n}return Object.defineProperty(t.prototype,"ngStyle",{set:function(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._differ){var t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}},t.prototype._applyChanges=function(t){var e=this;t.forEachRemovedItem(function(t){return e._setStyle(t.key,null)}),t.forEachAddedItem(function(t){return e._setStyle(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e._setStyle(t.key,t.currentValue)})},t.prototype._setStyle=function(t,e){var n=Object(r.__read)(t.split("."),2),a=n[0],i=n[1];null!=(e=null!=e&&i?""+e+i:e)?this._renderer.setStyle(this._ngEl.nativeElement,a,e):this._renderer.removeStyle(this._ngEl.nativeElement,a)},t}(),Zt=function(){function t(t){this._viewContainerRef=t}return t.prototype.ngOnChanges=function(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)},t.prototype._shouldRecreateView=function(t){var e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)},t.prototype._hasContextShapeChanged=function(t){var e,n,a=Object.keys(t.previousValue||{}),i=Object.keys(t.currentValue||{});if(a.length===i.length){try{for(var o=Object(r.__values)(i),s=o.next();!s.done;s=o.next())if(-1===a.indexOf(s.value))return!0}catch(u){e={error:u}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return!1}return!0},t.prototype._updateExistingContext=function(t){var e,n;try{for(var a=Object(r.__values)(Object.keys(t)),i=a.next();!i.done;i=a.next()){var o=i.value;this._viewRef.context[o]=this.ngTemplateOutletContext[o]}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},t}(),Xt=[Pt,Mt,jt,zt,Zt,$t,Vt,Bt,Ut,Wt,Kt];function Jt(t,e){return Error("InvalidPipeArgument: '"+e+"' for pipe '"+Object(a["\u0275stringify"])(t)+"'")}var Qt=function(){function t(){}return t.format=function(t,e,n,a){void 0===a&&(a={});var r=a.currency,i=a.currencyAsSymbol,o=void 0!==i&&i,s={minimumIntegerDigits:a.minimumIntegerDigits,minimumFractionDigits:a.minimumFractionDigits,maximumFractionDigits:a.maximumFractionDigits,style:y[n].toLowerCase()};return n==y.Currency&&(s.currency="string"==typeof r?r:void 0,s.currencyDisplay=o?"symbol":"code"),new Intl.NumberFormat(e,s).format(t)},t}(),te=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,ee={yMMMdjms:pe(de([ce("year",1),le("month",3),ce("day",1),ce("hour",1),ce("minute",1),ce("second",1)])),yMdjm:pe(de([ce("year",1),ce("month",1),ce("day",1),ce("hour",1),ce("minute",1)])),yMMMMEEEEd:pe(de([ce("year",1),le("month",4),le("weekday",4),ce("day",1)])),yMMMMd:pe(de([ce("year",1),le("month",4),ce("day",1)])),yMMMd:pe(de([ce("year",1),le("month",3),ce("day",1)])),yMd:pe(de([ce("year",1),ce("month",1),ce("day",1)])),jms:pe(de([ce("hour",1),ce("second",1),ce("minute",1)])),jm:pe(de([ce("hour",1),ce("minute",1)]))},ne={yyyy:pe(ce("year",4)),yy:pe(ce("year",2)),y:pe(ce("year",1)),MMMM:pe(le("month",4)),MMM:pe(le("month",3)),MM:pe(ce("month",2)),M:pe(ce("month",1)),LLLL:pe(le("month",4)),L:pe(le("month",1)),dd:pe(ce("day",2)),d:pe(ce("day",1)),HH:ae(ie(pe(ue(ce("hour",2),!1)))),H:ie(pe(ue(ce("hour",1),!1))),hh:ae(ie(pe(ue(ce("hour",2),!0)))),h:ie(pe(ue(ce("hour",1),!0))),jj:pe(ce("hour",2)),j:pe(ce("hour",1)),mm:ae(pe(ce("minute",2))),m:pe(ce("minute",1)),ss:ae(pe(ce("second",2))),s:pe(ce("second",1)),sss:pe(ce("second",3)),EEEE:pe(le("weekday",4)),EEE:pe(le("weekday",3)),EE:pe(le("weekday",2)),E:pe(le("weekday",1)),a:re(pe(ue(ce("hour",1),!0))),Z:se("short"),z:se("long"),ww:pe({}),w:pe({}),G:pe(le("era",1)),GG:pe(le("era",2)),GGG:pe(le("era",3)),GGGG:pe(le("era",4))};function ae(t){return function(e,n){var a=t(e,n);return 1==a.length?"0"+a:a}}function re(t){return function(e,n){return t(e,n).split(" ")[1]}}function ie(t){return function(e,n){return t(e,n).split(" ")[0]}}function oe(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function se(t){var e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){var a=oe(t,n,e);return a?a.substring(3):""}}function ue(t,e){return t.hour12=e,t}function ce(t,e){var n={};return n[t]=2===e?"2-digit":"numeric",n}function le(t,e){var n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function de(t){return t.reduce(function(t,e){return Object(r.__assign)({},t,e)},{})}function pe(t){return function(e,n){return oe(e,n,t)}}var fe=new Map,he=function(){function t(){}return t.format=function(t,e,n){return function(t,e,n){var a=ee[t];if(a)return a(e,n);var r=t,i=fe.get(r);if(!i){i=[];var o=void 0;te.exec(t);for(var s=t;s;)(o=te.exec(s))?s=(i=i.concat(o.slice(1))).pop():(i.push(s),s=null);fe.set(r,i)}return i.reduce(function(t,a){var r=ne[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)},t}(),ge=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){if(void 0===n&&(n="mediumDate"),null==t||""===t||t!=t)return null;var a;if("string"==typeof t&&(t=t.trim()),me(t))a=t;else if(isNaN(t-parseFloat(t)))if("string"==typeof t&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){var i=Object(r.__read)(t.split("-").map(function(t){return parseInt(t,10)}),3);a=new Date(i[0],i[1]-1,i[2])}else a=new Date(t);else a=new Date(parseFloat(t));if(!me(a)){var o=void 0;if("string"!=typeof t||!(o=t.match($)))throw Jt(e,t);a=pt(o)}return he.format(a,this._locale,e._ALIASES[n]||n)},t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t}();function me(t){return t instanceof Date&&!isNaN(t.valueOf())}function be(t,e,n,a,r,i,o){if(void 0===i&&(i=null),void 0===o&&(o=!1),null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw Jt(t,n);var s,u,c;if(a!==y.Currency&&(s=1,u=0,c=3),r){var l=r.match(ht);if(null===l)throw new Error(r+" is not a valid digit info for number pipes");null!=l[1]&&(s=It(l[1])),null!=l[3]&&(u=It(l[3])),null!=l[5]&&(c=It(l[5]))}return Qt.format(n,e,a,{minimumIntegerDigits:s,minimumFractionDigits:u,maximumFractionDigits:c,currency:i,currencyAsSymbol:o})}var ye=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){return be(e,this._locale,t,y.Decimal,n)},t}(),ve=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){return be(e,this._locale,t,y.Percent,n)},t}(),xe=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r){return void 0===n&&(n="USD"),void 0===a&&(a=!1),be(e,this._locale,t,y.Currency,r,n,a)},t}(),_e=[ye,ve,xe,ge],Te=function(){function t(){}return t.prototype.createSubscription=function(t,e){return t.subscribe({next:e,error:function(t){throw t}})},t.prototype.dispose=function(t){t.unsubscribe()},t.prototype.onDestroy=function(t){t.unsubscribe()},t}(),we=new(function(){function t(){}return t.prototype.createSubscription=function(t,e){return t.then(e,function(t){throw t})},t.prototype.dispose=function(t){},t.prototype.onDestroy=function(t){},t}()),Se=new Te,Oe=function(){function t(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}var e;return e=t,t.prototype.ngOnDestroy=function(){this._subscription&&this._dispose()},t.prototype.transform=function(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):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)},t.prototype._subscribe=function(t){var e=this;this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,function(n){return e._updateLatestValue(t,n)})},t.prototype._selectStrategy=function(t){if(Object(a["\u0275isPromise"])(t))return we;if(Object(a["\u0275isObservable"])(t))return Se;throw Jt(e,t)},t.prototype._dispose=function(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null},t.prototype._updateLatestValue=function(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())},t}(),ke=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.toLowerCase()},t}(),Ce=/(?:[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,Ie=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.replace(Ce,function(t){return t[0].toUpperCase()+t.substr(1).toLowerCase()})},t}(),Re=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.toUpperCase()},t}(),Ne=function(){function t(t){this.locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r){if(void 0===n&&(n="mediumDate"),null==t||""===t||t!=t)return null;try{return et(t,n,r||this.locale,a)}catch(i){throw Jt(e,i.message)}},t}(),De=/#/g,Ae=function(){function t(t){this._localization=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(null==t)return"";if("object"!=typeof n||null===n)throw Jt(e,n);return n[Dt(t,Object.keys(n),this._localization,a)].replace(De,t.toString())},t}(),Ee=function(){function t(){}var e;return e=t,t.prototype.transform=function(t,n){if(null==t)return"";if("object"!=typeof n||"string"!=typeof t)throw Jt(e,n);return n.hasOwnProperty(t)?n[t]:n.hasOwnProperty("other")?n.other:""},t}(),Le=function(){function t(){}return t.prototype.transform=function(t){return JSON.stringify(t,null,2)},t}(),Pe=function(){function t(t){this.differs=t,this.keyValues=[]}return t.prototype.transform=function(t,e){var n=this;if(void 0===e&&(e=Me),!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());var a=this.differ.diff(t);return a&&(this.keyValues=[],a.forEachItem(function(t){n.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues},t}();function Me(t,e){var 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;var r=String(n),i=String(a);return r==i?0:r<i?-1:1}var qe=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(ze(t))return null;a=a||this._locale;try{return kt(Ge(t),a,n)}catch(r){throw Jt(e,r.message)}},t}(),je=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(ze(t))return null;a=a||this._locale;try{return Ot(Ge(t),a,n)}catch(r){throw Jt(e,r.message)}},t}(),Fe=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r,i){if(void 0===a&&(a="symbol"),ze(t))return null;i=i||this._locale,"boolean"==typeof a&&(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".'),a=a?"symbol":"code");var o=n||"USD";"code"!==a&&(o="symbol"===a||"symbol-narrow"===a?U(o,"symbol"===a?"wide":"narrow",i):a);try{return St(Ge(t),i,o,n,r)}catch(s){throw Jt(e,s.message)}},t}();function ze(t){return null==t||""===t||t!=t}function Ge(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}var Ye=function(){function t(){}var e;return e=t,t.prototype.transform=function(t,n,a){if(null==t)return t;if(!this.supports(t))throw Jt(e,t);return t.slice(n,a)},t.prototype.supports=function(t){return"string"==typeof t||Array.isArray(t)},t}(),He=[Oe,Re,ke,Le,Ye,qe,je,Ie,Fe,Ne,Ae,Ee,Pe],Ve=function(){return function(){}}(),Be=function(){return function(){}}(),Ue=new a.InjectionToken("DocumentToken"),We="browser",Ke="server",$e="browserWorkerApp",Ze="browserWorkerUi";function Xe(t){return t===We}function Je(t){return t===Ke}function Qe(t){return t===$e}function tn(t){return t===Ze}var en=new a.Version("7.2.6"),nn=function(){function t(){}return t.ngInjectableDef=Object(a.defineInjectable)({providedIn:"root",factory:function(){return new an(Object(a.inject)(Ue),window)}}),t}(),an=function(){function t(t,e){this.document=t,this.window=e,this.offset=function(){return[0,0]}}return t.prototype.setOffset=function(t){this.offset=Array.isArray(t)?function(){return t}:t},t.prototype.getScrollPosition=function(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]},t.prototype.scrollToPosition=function(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])},t.prototype.scrollToAnchor=function(t){if(this.supportScrollRestoration()){var e=this.document.querySelector("#"+t);if(e)return void this.scrollToElement(e);var n=this.document.querySelector("[name='"+t+"']");if(n)return void this.scrollToElement(n)}},t.prototype.setHistoryScrollRestoration=function(t){if(this.supportScrollRestoration()){var e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}},t.prototype.scrollToElement=function(t){var 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])},t.prototype.supportScrollRestoration=function(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}},t}(),rn=function(){function t(){}return t.prototype.setOffset=function(t){},t.prototype.getScrollPosition=function(){return[0,0]},t.prototype.scrollToPosition=function(t){},t.prototype.scrollToAnchor=function(t){},t.prototype.setHistoryScrollRestoration=function(t){},t}()},"Ivi+":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\uc77c";case"M":return t+"\uc6d4";case"w":case"W":return t+"\uc8fc";default:return t}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(t){return"\uc624\ud6c4"===t},meridiem:function(t,e,n){return t<12?"\uc624\uc804":"\uc624\ud6c4"}})}()},IxPp:function(t,e,n){"use strict";n.d(e,"b",function(){return u}),n.d(e,"a",function(){return p});var a=n("mrSG"),r=n("FFOo"),i=n("pugT"),o=n("6blF"),s=n("K9Ia");function u(t,e,n,a){return function(r){return r.lift(new c(t,e,n,a))}}var c=function(){function t(t,e,n,a){this.keySelector=t,this.elementSelector=e,this.durationSelector=n,this.subjectSelector=a}return t.prototype.call=function(t,e){return e.subscribe(new l(t,this.keySelector,this.elementSelector,this.durationSelector,this.subjectSelector))},t}(),l=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.keySelector=n,o.elementSelector=a,o.durationSelector=r,o.subjectSelector=i,o.groups=null,o.attemptedToUnsubscribe=!1,o.count=0,o}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.keySelector(t)}catch(n){return void this.error(n)}this._group(t,e)},e.prototype._group=function(t,e){var n=this.groups;n||(n=this.groups=new Map);var a,r=n.get(e);if(this.elementSelector)try{a=this.elementSelector(t)}catch(u){this.error(u)}else a=t;if(!r){r=this.subjectSelector?this.subjectSelector():new s.a,n.set(e,r);var i=new p(e,r,this);if(this.destination.next(i),this.durationSelector){var o=void 0;try{o=this.durationSelector(new p(e,r))}catch(u){return void this.error(u)}this.add(o.subscribe(new d(e,r,this)))}}r.closed||r.next(a)},e.prototype._error=function(t){var e=this.groups;e&&(e.forEach(function(e,n){e.error(t)}),e.clear()),this.destination.error(t)},e.prototype._complete=function(){var t=this.groups;t&&(t.forEach(function(t,e){t.complete()}),t.clear()),this.destination.complete()},e.prototype.removeGroup=function(t){this.groups.delete(t)},e.prototype.unsubscribe=function(){this.closed||(this.attemptedToUnsubscribe=!0,0===this.count&&t.prototype.unsubscribe.call(this))},e}(r.a),d=function(t){function e(e,n,a){var r=t.call(this,n)||this;return r.key=e,r.group=n,r.parent=a,r}return a.__extends(e,t),e.prototype._next=function(t){this.complete()},e.prototype._unsubscribe=function(){var t=this.parent,e=this.key;this.key=this.parent=null,t&&t.removeGroup(e)},e}(r.a),p=function(t){function e(e,n,a){var r=t.call(this)||this;return r.key=e,r.groupSubject=n,r.refCountSubscription=a,r}return a.__extends(e,t),e.prototype._subscribe=function(t){var e=new i.a,n=this.refCountSubscription,a=this.groupSubject;return n&&!n.closed&&e.add(new f(n)),e.add(a.subscribe(t)),e},e}(o.a),f=function(t){function e(e){var n=t.call(this)||this;return n.parent=e,e.count++,n}return a.__extends(e,t),e.prototype.unsubscribe=function(){var e=this.parent;e.closed||this.closed||(t.prototype.unsubscribe.call(this),e.count-=1,0===e.count&&e.attemptedToUnsubscribe&&e.unsubscribe())},e}(i.a)},IzCI:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(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"])},t}()},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".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:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(t){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(t)},meridiem:function(t,e,n){return t<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},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")}}n("wd/R").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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] 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}})}()},JZ5S:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("buEt"),i=n("QG5k");e.NodeMenuService=function(){function t(){this.nodeMenuEvents$=new r.Subject}return t.prototype.fireMenuEvent=function(t,e){this.nodeMenuEvents$.next({sender:t,action:e})},t.prototype.hideMenuStream=function(t){return this.nodeMenuEvents$.filter(function(e){return t.nativeElement!==e.sender}).filter(function(t){return t.action===i.NodeMenuAction.Close})},t.prototype.hideMenuForAllNodesExcept=function(t){this.nodeMenuEvents$.next({sender:t.nativeElement,action:i.NodeMenuAction.Close})},t.decorators=[{type:a.Injectable}],t}()},JcRv:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("xTla"),r=function(t){return function(e){var n=t[a.a]();if("function"!=typeof n.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return n.subscribe(e)}}},"Jm/i":function(t,e,n){"use strict";n.d(e,"a",function(){return On}),n.d(e,"b",function(){return Sn});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitText(this,e)},t}(),s=function(){function t(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}return t.prototype.visit=function(t,e){return t.visitExpansion(this,e)},t}(),u=function(){function t(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}return t.prototype.visit=function(t,e){return t.visitExpansionCase(this,e)},t}(),c=function(){function t(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}return t.prototype.visit=function(t,e){return t.visitAttribute(this,e)},t}(),l=function(){function t(t,e,n,a,r,i){void 0===r&&(r=null),void 0===i&&(i=null),this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}return t.prototype.visit=function(t,e){return t.visitElement(this,e)},t}(),d=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitComment(this,e)},t}();function p(t,e,n){void 0===n&&(n=null);var a=[],r=t.visit?function(e){return t.visit(e,n)||e.visit(t,n)}:function(e){return e.visit(t,n)};return e.forEach(function(t){var e=r(t);e&&a.push(e)}),a}var f=function(){return function(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}]:[]}}(),h=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitText(this,e)},t}(),g=function(){function t(t,e){this.children=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitContainer(this,e)},t}(),m=function(){function t(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}return t.prototype.visit=function(t,e){return t.visitIcu(this,e)},t}(),b=function(){function t(t,e,n,a,r,i,o){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=o}return t.prototype.visit=function(t,e){return t.visitTagPlaceholder(this,e)},t}(),y=function(){function t(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}return t.prototype.visit=function(t,e){return t.visitPlaceholder(this,e)},t}(),v=function(){function t(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}return t.prototype.visit=function(t,e){return t.visitIcuPlaceholder(this,e)},t}(),x=function(){function t(){}return t.prototype.visitText=function(t,e){},t.prototype.visitContainer=function(t,e){var n=this;t.children.forEach(function(t){return t.visit(n)})},t.prototype.visitIcu=function(t,e){var n=this;Object.keys(t.cases).forEach(function(e){t.cases[e].visit(n)})},t.prototype.visitTagPlaceholder=function(t,e){var n=this;t.children.forEach(function(t){return t.visit(n)})},t.prototype.visitPlaceholder=function(t,e){},t.prototype.visitIcuPlaceholder=function(t,e){},t}(),_=function(){function t(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}return t.prototype.toString=function(){return null!=this.offset?this.line+":"+this.col:""},t.prototype.getContext=function(t,e){var n=this.file.content,a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);for(var r=a,i=0,o=0;i<t&&a>0&&(i++,"\n"!==n[--a]||++o!==e););for(i=0,o=0;i<t&&r<n.length-1&&(i++,"\n"!==n[++r]||++o!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null},t}(),T=function(){return function(t,e){void 0===e&&(e=""),this.content=t,this.url=e}}(),w=function(){function t(t,e,n){void 0===n&&(n=null),this.start=t,this.end=e,this.details=n}return t.prototype.toString=function(){return this.start.file.content.substring(this.start.offset,this.end.offset)},t}(),S=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}(),O=function(){function t(t,e,n){void 0===n&&(n=S.ERROR),this.span=t,this.msg=e,this.level=n}return t.prototype.contextualMessage=function(){var t=this.span.start.getContext(100,3);return t?' ("'+t.before+"["+S[this.level]+" ->]"+t.after+'")':""},t.prototype.toString=function(){var t=this.span.details?", "+this.span.details:"";return""+this.msg+this.contextualMessage()+": "+this.span.start+t},t}(),k=function(t){function e(e,n){return t.call(this,e,n)||this}return Object(a.__extends)(e,t),e}(O);function C(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}var I=new(function(){return function(t,e){this.start=t,this.end=e}}())("{{","}}"),R=0,N=9,D=10,A=11,E=12,L=13,P=32,M=34,q=36,j=39,F=43,z=45,G=47,Y=59,H=61,V=62,B=48,U=57,W=65,K=70,$=90,Z=95,X=97,J=102,Q=110,tt=114,et=116,nt=118,at=122,rt=123,it=160;function ot(t){return t>=N&&t<=P||t===it}function st(t){return B<=t&&t<=U}function ut(t){return t>=X&&t<=at||t>=W&&t<=$}var ct=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 lt(t){if(":"!==t[0])return[null,t];var 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 dt(t){return null===t?null:lt(t)[0]}function pt(t,e){return t?":"+t+":"+e:e}var ft={Aacute:"\xc1",aacute:"\xe1",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",AElig:"\xc6",aelig:"\xe6",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",Alpha:"\u0391",alpha:"\u03b1",amp:"&",and:"\u2227",ang:"\u2220",apos:"'",Aring:"\xc5",aring:"\xe5",asymp:"\u2248",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",bdquo:"\u201e",Beta:"\u0392",beta:"\u03b2",brvbar:"\xa6",bull:"\u2022",cap:"\u2229",Ccedil:"\xc7",ccedil:"\xe7",cedil:"\xb8",cent:"\xa2",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",clubs:"\u2663",cong:"\u2245",copy:"\xa9",crarr:"\u21b5",cup:"\u222a",curren:"\xa4",dagger:"\u2020",Dagger:"\u2021",darr:"\u2193",dArr:"\u21d3",deg:"\xb0",Delta:"\u0394",delta:"\u03b4",diams:"\u2666",divide:"\xf7",Eacute:"\xc9",eacute:"\xe9",Ecirc:"\xca",ecirc:"\xea",Egrave:"\xc8",egrave:"\xe8",empty:"\u2205",emsp:"\u2003",ensp:"\u2002",Epsilon:"\u0395",epsilon:"\u03b5",equiv:"\u2261",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",exist:"\u2203",fnof:"\u0192",forall:"\u2200",frac12:"\xbd",frac14:"\xbc",frac34:"\xbe",frasl:"\u2044",Gamma:"\u0393",gamma:"\u03b3",ge:"\u2265",gt:">",harr:"\u2194",hArr:"\u21d4",hearts:"\u2665",hellip:"\u2026",Iacute:"\xcd",iacute:"\xed",Icirc:"\xce",icirc:"\xee",iexcl:"\xa1",Igrave:"\xcc",igrave:"\xec",image:"\u2111",infin:"\u221e",int:"\u222b",Iota:"\u0399",iota:"\u03b9",iquest:"\xbf",isin:"\u2208",Iuml:"\xcf",iuml:"\xef",Kappa:"\u039a",kappa:"\u03ba",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",laquo:"\xab",larr:"\u2190",lArr:"\u21d0",lceil:"\u2308",ldquo:"\u201c",le:"\u2264",lfloor:"\u230a",lowast:"\u2217",loz:"\u25ca",lrm:"\u200e",lsaquo:"\u2039",lsquo:"\u2018",lt:"<",macr:"\xaf",mdash:"\u2014",micro:"\xb5",middot:"\xb7",minus:"\u2212",Mu:"\u039c",mu:"\u03bc",nabla:"\u2207",nbsp:"\xa0",ndash:"\u2013",ne:"\u2260",ni:"\u220b",not:"\xac",notin:"\u2209",nsub:"\u2284",Ntilde:"\xd1",ntilde:"\xf1",Nu:"\u039d",nu:"\u03bd",Oacute:"\xd3",oacute:"\xf3",Ocirc:"\xd4",ocirc:"\xf4",OElig:"\u0152",oelig:"\u0153",Ograve:"\xd2",ograve:"\xf2",oline:"\u203e",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",oplus:"\u2295",or:"\u2228",ordf:"\xaa",ordm:"\xba",Oslash:"\xd8",oslash:"\xf8",Otilde:"\xd5",otilde:"\xf5",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",para:"\xb6",permil:"\u2030",perp:"\u22a5",Phi:"\u03a6",phi:"\u03c6",Pi:"\u03a0",pi:"\u03c0",piv:"\u03d6",plusmn:"\xb1",pound:"\xa3",prime:"\u2032",Prime:"\u2033",prod:"\u220f",prop:"\u221d",Psi:"\u03a8",psi:"\u03c8",quot:'"',radic:"\u221a",rang:"\u27e9",raquo:"\xbb",rarr:"\u2192",rArr:"\u21d2",rceil:"\u2309",rdquo:"\u201d",real:"\u211c",reg:"\xae",rfloor:"\u230b",Rho:"\u03a1",rho:"\u03c1",rlm:"\u200f",rsaquo:"\u203a",rsquo:"\u2019",sbquo:"\u201a",Scaron:"\u0160",scaron:"\u0161",sdot:"\u22c5",sect:"\xa7",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sim:"\u223c",spades:"\u2660",sub:"\u2282",sube:"\u2286",sum:"\u2211",sup:"\u2283",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",supe:"\u2287",szlig:"\xdf",Tau:"\u03a4",tau:"\u03c4",there4:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thinsp:"\u2009",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",times:"\xd7",trade:"\u2122",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",uArr:"\u21d1",Ucirc:"\xdb",ucirc:"\xfb",Ugrave:"\xd9",ugrave:"\xf9",uml:"\xa8",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",Uuml:"\xdc",uuml:"\xfc",weierp:"\u2118",Xi:"\u039e",xi:"\u03be",Yacute:"\xdd",yacute:"\xfd",yen:"\xa5",yuml:"\xff",Yuml:"\u0178",Zeta:"\u0396",zeta:"\u03b6",zwj:"\u200d",zwnj:"\u200c",ngsp:"\ue500"},ht=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}(),gt=function(){return function(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}(),mt=function(t){function e(e,n,a){var r=t.call(this,a,e)||this;return r.tokenType=n,r}return Object(a.__extends)(e,t),e}(O),bt=function(){return function(t,e){this.tokens=t,this.errors=e}}(),yt=/\r\n?/g;function vt(t){return'Unexpected character "'+(t===R?"EOF":String.fromCharCode(t))+'"'}function xt(t){return'Unknown entity "'+t+'" - use the "&#<decimal>;" or  "&#x<hex>;" syntax'}var _t=function(){return function(t){this.error=t}}(),Tt=function(){function t(t,e,n,a){void 0===a&&(a=I),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()}return t.prototype._processCarriageReturns=function(t){return t.replace(yt,"\n")},t.prototype.tokenize=function(){for(;this._peek!==R;){var t=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(t):this._attemptCharCode(z)?this._consumeComment(t):this._consumeDocType(t):this._attemptCharCode(G)?this._consumeTagClose(t):this._consumeTagOpen(t):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(e){if(!(e instanceof _t))throw e;this.errors.push(e.error)}}return this._beginToken(ht.EOF),this._endToken([]),new bt(function(t){for(var e=[],n=void 0,a=0;a<t.length;a++){var r=t[a];n&&n.type===ht.TEXT&&r.type===ht.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):e.push(n=r)}return e}(this.tokens),this.errors)},t.prototype._tokenizeExpansionForm=function(){if(Ct(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if(((t=this._peek)===H||ut(t)||st(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},t.prototype._getLocation=function(){return new _(this._file,this._index,this._line,this._column)},t.prototype._getSpan=function(t,e){return void 0===t&&(t=this._getLocation()),void 0===e&&(e=this._getLocation()),new w(t,e)},t.prototype._beginToken=function(t,e){void 0===e&&(e=this._getLocation()),this._currentTokenStart=e,this._currentTokenType=t},t.prototype._endToken=function(t,e){void 0===e&&(e=this._getLocation());var n=new gt(this._currentTokenType,t,new w(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n},t.prototype._createError=function(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');var n=new mt(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new _t(n)},t.prototype._advance=function(){if(this._index>=this._length)throw this._createError(vt(R),this._getSpan());this._peek===D?(this._line++,this._column=0):this._peek!==D&&this._peek!==L&&this._column++,this._index++,this._peek=this._index>=this._length?R:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?R:this._input.charCodeAt(this._index+1)},t.prototype._attemptCharCode=function(t){return this._peek===t&&(this._advance(),!0)},t.prototype._attemptCharCodeCaseInsensitive=function(t){return e=t,It(this._peek)===It(e)&&(this._advance(),!0);var e},t.prototype._requireCharCode=function(t){var e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(vt(this._peek),this._getSpan(e,e))},t.prototype._attemptStr=function(t){var e=t.length;if(this._index+e>this._length)return!1;for(var n=this._savePosition(),a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0},t.prototype._attemptStrCaseInsensitive=function(t){for(var e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0},t.prototype._requireStr=function(t){var e=this._getLocation();if(!this._attemptStr(t))throw this._createError(vt(this._peek),this._getSpan(e))},t.prototype._attemptCharCodeUntilFn=function(t){for(;!t(this._peek);)this._advance()},t.prototype._requireCharCodeUntilFn=function(t,e){var n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(vt(this._peek),this._getSpan(n,n))},t.prototype._attemptUntilChar=function(t){for(;this._peek!==t;)this._advance()},t.prototype._readChar=function(t){if(t&&38===this._peek)return this._decodeEntity();var e=this._index;return this._advance(),this._input[e]},t.prototype._decodeEntity=function(){var t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){var e=this._savePosition();if(this._attemptCharCodeUntilFn(kt),this._peek!==Y)return this._restorePosition(e),"&";this._advance();var n=this._input.substring(t.offset+1,this._index-1),a=ft[n];if(!a)throw this._createError(xt(n),this._getSpan(t));return a}var r=this._attemptCharCode(120)||this._attemptCharCode(88),i=this._getLocation().offset;if(this._attemptCharCodeUntilFn(Ot),this._peek!==Y)throw this._createError(vt(this._peek),this._getSpan());this._advance();var o=this._input.substring(i,this._index-1);try{var s=parseInt(o,r?16:10);return String.fromCharCode(s)}catch(c){var u=this._input.substring(t.offset+1,this._index-1);throw this._createError(xt(u),this._getSpan(t))}},t.prototype._consumeRawText=function(t,e,n){var a,r=this._getLocation();this._beginToken(t?ht.ESCAPABLE_RAW_TEXT:ht.RAW_TEXT,r);for(var i=[];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)},t.prototype._consumeComment=function(t){var e=this;this._beginToken(ht.COMMENT_START,t),this._requireCharCode(z),this._endToken([]);var n=this._consumeRawText(!1,z,function(){return e._attemptStr("->")});this._beginToken(ht.COMMENT_END,n.sourceSpan.end),this._endToken([])},t.prototype._consumeCdata=function(t){var e=this;this._beginToken(ht.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);var n=this._consumeRawText(!1,93,function(){return e._attemptStr("]>")});this._beginToken(ht.CDATA_END,n.sourceSpan.end),this._endToken([])},t.prototype._consumeDocType=function(t){this._beginToken(ht.DOC_TYPE,t),this._attemptUntilChar(V),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])},t.prototype._consumePrefixAndName=function(){for(var t,e,n=this._index,a=null;58!==this._peek&&!(((t=this._peek)<X||at<t)&&(t<W||$<t)&&(t<B||t>U));)this._advance();return 58===this._peek?(this._advance(),a=this._input.substring(n,this._index-1),e=this._index):e=n,this._requireCharCodeUntilFn(St,this._index===e?1:0),[a,this._input.substring(e,this._index)]},t.prototype._consumeTagOpen=function(t){var e,n,a=this._savePosition();try{if(!ut(this._peek))throw this._createError(vt(this._peek),this._getSpan());var r=this._index;for(this._consumeTagOpenStart(t),n=(e=this._input.substring(r,this._index)).toLowerCase(),this._attemptCharCodeUntilFn(wt);this._peek!==G&&this._peek!==V;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(wt),this._attemptCharCode(H)&&(this._attemptCharCodeUntilFn(wt),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(wt);this._consumeTagOpenEnd()}catch(o){if(o instanceof _t)return this._restorePosition(a),this._beginToken(ht.TEXT,t),void this._endToken(["<"]);throw o}var i=this._getTagDefinition(e).contentType;i===ct.RAW_TEXT?this._consumeRawTextWithTagClose(n,!1):i===ct.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(n,!0)},t.prototype._consumeRawTextWithTagClose=function(t,e){var n=this,a=this._consumeRawText(e,60,function(){return!!n._attemptCharCode(G)&&(n._attemptCharCodeUntilFn(wt),!!n._attemptStrCaseInsensitive(t)&&(n._attemptCharCodeUntilFn(wt),n._attemptCharCode(V)))});this._beginToken(ht.TAG_CLOSE,a.sourceSpan.end),this._endToken([null,t])},t.prototype._consumeTagOpenStart=function(t){this._beginToken(ht.TAG_OPEN_START,t);var e=this._consumePrefixAndName();this._endToken(e)},t.prototype._consumeAttributeName=function(){this._beginToken(ht.ATTR_NAME);var t=this._consumePrefixAndName();this._endToken(t)},t.prototype._consumeAttributeValue=function(){var t;if(this._beginToken(ht.ATTR_VALUE),this._peek===j||this._peek===M){var e=this._peek;this._advance();for(var n=[];this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{var a=this._index;this._requireCharCodeUntilFn(St,1),t=this._input.substring(a,this._index)}this._endToken([this._processCarriageReturns(t)])},t.prototype._consumeTagOpenEnd=function(){var t=this._attemptCharCode(G)?ht.TAG_OPEN_END_VOID:ht.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(V),this._endToken([])},t.prototype._consumeTagClose=function(t){this._beginToken(ht.TAG_CLOSE,t),this._attemptCharCodeUntilFn(wt);var e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(wt),this._requireCharCode(V),this._endToken(e)},t.prototype._consumeExpansionFormStart=function(){this._beginToken(ht.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(rt),this._endToken([]),this._expansionCaseStack.push(ht.EXPANSION_FORM_START),this._beginToken(ht.RAW_TEXT,this._getLocation());var t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(wt),this._beginToken(ht.RAW_TEXT,this._getLocation());var e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(wt)},t.prototype._consumeExpansionCaseStart=function(){this._beginToken(ht.EXPANSION_CASE_VALUE,this._getLocation());var t=this._readUntil(rt).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._beginToken(ht.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(rt),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._expansionCaseStack.push(ht.EXPANSION_CASE_EXP_START)},t.prototype._consumeExpansionCaseEnd=function(){this._beginToken(ht.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._expansionCaseStack.pop()},t.prototype._consumeExpansionFormEnd=function(){this._beginToken(ht.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()},t.prototype._consumeText=function(){var t=this._getLocation();this._beginToken(ht.TEXT,t);var 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(""))])},t.prototype._isTextEnd=function(){if(60===this._peek||this._peek===R)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if(Ct(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1},t.prototype._savePosition=function(){return[this._peek,this._index,this._column,this._line,this.tokens.length]},t.prototype._readUntil=function(t){var e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)},t.prototype._restorePosition=function(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];var e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))},t.prototype._isInExpansionCase=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===ht.EXPANSION_CASE_EXP_START},t.prototype._isInExpansionForm=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===ht.EXPANSION_FORM_START},t}();function wt(t){return!ot(t)||t===R}function St(t){return ot(t)||t===V||t===G||t===j||t===M||t===H}function Ot(t){return t===Y||t===R||!function(t){return t>=X&&t<=J||t>=W&&t<=K||st(t)}(t)}function kt(t){return t===Y||t===R||!ut(t)}function Ct(t,e,n){var a=!!n&&t.indexOf(n.start,e)===e;return t.charCodeAt(e)===rt&&!a}function It(t){return t>=X&&t<=at?t-X+W:t}var Rt=function(t){function e(e,n,a){var r=t.call(this,n,a)||this;return r.elementName=e,r}return Object(a.__extends)(e,t),e.create=function(t,n,a){return new e(t,n,a)},e}(O),Nt=function(){return function(t,e){this.rootNodes=t,this.errors=e}}(),Dt=function(){function t(t){this.getTagDefinition=t}return t.prototype.parse=function(t,e,n,a){void 0===n&&(n=!1),void 0===a&&(a=I);var r=function(t,e,n,a,r){return void 0===a&&(a=!1),void 0===r&&(r=I),new Tt(new T(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new At(r.tokens,this.getTagDefinition).build();return new Nt(i.rootNodes,r.errors.concat(i.errors))},t}(),At=function(){function t(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}return t.prototype.build=function(){for(;this._peek.type!==ht.EOF;)this._peek.type===ht.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===ht.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===ht.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===ht.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===ht.TEXT||this._peek.type===ht.RAW_TEXT||this._peek.type===ht.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===ht.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Nt(this._rootNodes,this._errors)},t.prototype._advance=function(){var t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t},t.prototype._advanceIf=function(t){return this._peek.type===t?this._advance():null},t.prototype._consumeCdata=function(t){this._consumeText(this._advance()),this._advanceIf(ht.CDATA_END)},t.prototype._consumeComment=function(t){var e=this._advanceIf(ht.RAW_TEXT);this._advanceIf(ht.COMMENT_END);var n=null!==e?e.parts[0].trim():null;this._addToParent(new d(n,t.sourceSpan))},t.prototype._consumeExpansion=function(t){for(var e=this._advance(),n=this._advance(),a=[];this._peek.type===ht.EXPANSION_CASE_VALUE;){var r=this._parseExpansionCase();if(!r)return;a.push(r)}if(this._peek.type===ht.EXPANSION_FORM_END){var i=new w(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,i,e.sourceSpan)),this._advance()}else this._errors.push(Rt.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."))},t.prototype._parseExpansionCase=function(){var e=this._advance();if(this._peek.type!==ht.EXPANSION_CASE_EXP_START)return this._errors.push(Rt.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;var n=this._advance(),a=this._collectExpansionExpTokens(n);if(!a)return null;var r=this._advance();a.push(new gt(ht.EOF,[],r.sourceSpan));var i=new t(a,this.getTagDefinition).build();if(i.errors.length>0)return this._errors=this._errors.concat(i.errors),null;var o=new w(e.sourceSpan.start,r.sourceSpan.end),s=new w(n.sourceSpan.start,r.sourceSpan.end);return new u(e.parts[0],i.rootNodes,o,e.sourceSpan,s)},t.prototype._collectExpansionExpTokens=function(t){for(var e=[],n=[ht.EXPANSION_CASE_EXP_START];;){if(this._peek.type!==ht.EXPANSION_FORM_START&&this._peek.type!==ht.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===ht.EXPANSION_CASE_EXP_END){if(!Et(n,ht.EXPANSION_CASE_EXP_START))return this._errors.push(Rt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===ht.EXPANSION_FORM_END){if(!Et(n,ht.EXPANSION_FORM_START))return this._errors.push(Rt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===ht.EOF)return this._errors.push(Rt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}},t.prototype._consumeText=function(t){var e=t.parts[0];if(e.length>0&&"\n"===e[0]){var n=this._getParentElement();null!==n&&0===n.children.length&&this.getTagDefinition(n.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new o(e,t.sourceSpan))},t.prototype._closeVoidElement=function(){var t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()},t.prototype._consumeStartTag=function(t){for(var e=t.parts[0],n=t.parts[1],a=[];this._peek.type===ht.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));var r=this._getElementFullName(e,n,this._getParentElement()),i=!1;if(this._peek.type===ht.TAG_OPEN_END_VOID){this._advance(),i=!0;var o=this.getTagDefinition(r);o.canSelfClose||null!==dt(r)||o.isVoid||this._errors.push(Rt.create(r,t.sourceSpan,'Only void and foreign elements can be self closed "'+t.parts[1]+'"'))}else this._peek.type===ht.TAG_OPEN_END&&(this._advance(),i=!1);var s=new w(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)},t.prototype._pushElement=function(t){var e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();var n=this.getTagDefinition(t.name),a=this._getParentElementSkippingContainers(),r=a.parent,i=a.container;if(r&&n.requireExtraParent(r.name)){var o=new l(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(r,i,o)}this._addToParent(t),this._elementStack.push(t)},t.prototype._consumeEndTag=function(t){var 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(Rt.create(e,t.sourceSpan,'Void elements do not have end tags "'+t.parts[1]+'"')):this._popElement(e)||this._errors.push(Rt.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'))},t.prototype._popElement=function(t){for(var e=this._elementStack.length-1;e>=0;e--){var 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},t.prototype._consumeAttr=function(t){var e=pt(t.parts[0],t.parts[1]),n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===ht.ATTR_VALUE){var i=this._advance();a=i.parts[0],n=i.sourceSpan.end,r=i.sourceSpan}return new c(e,a,new w(t.sourceSpan.start,n),r)},t.prototype._getParentElement=function(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null},t.prototype._getParentElementSkippingContainers=function(){for(var t=null,e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==lt(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}},t.prototype._addToParent=function(t){var e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)},t.prototype._insertBeforeContainer=function(t,e,n){if(e){if(t){var 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)},t.prototype._getElementFullName=function(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=dt(n.name)),pt(t,e)},t}();function Et(t,e){return t.length>0&&t[t.length-1]===e}var Lt=new(function(){function t(){this.closedByParent=!1,this.contentType=ct.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}return t.prototype.requireExtraParent=function(t){return!1},t.prototype.isClosedByChild=function(t){return!1},t}());function Pt(t){return Lt}var Mt=function(){function t(t){var e=void 0===t?{}:t,n=e.closedByChildren,a=e.requiredParents,r=e.implicitNamespacePrefix,i=e.contentType,o=void 0===i?ct.PARSABLE_DATA:i,s=e.closedByParent,u=void 0!==s&&s,c=e.isVoid,l=void 0!==c&&c,d=e.ignoreFirstLf,p=void 0!==d&&d,f=this;this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,n&&n.length>0&&n.forEach(function(t){return f.closedByChildren[t]=!0}),this.isVoid=l,this.closedByParent=u||l,a&&a.length>0&&(this.requiredParents={},this.parentToAdd=a[0],a.forEach(function(t){return f.requiredParents[t]=!0})),this.implicitNamespacePrefix=r||null,this.contentType=o,this.ignoreFirstLf=p}return t.prototype.requireExtraParent=function(t){if(!this.requiredParents)return!1;if(!t)return!0;var e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]},t.prototype.isClosedByChild=function(t){return this.isVoid||t.toLowerCase()in this.closedByChildren},t}(),qt={base:new Mt({isVoid:!0}),meta:new Mt({isVoid:!0}),area:new Mt({isVoid:!0}),embed:new Mt({isVoid:!0}),link:new Mt({isVoid:!0}),img:new Mt({isVoid:!0}),input:new Mt({isVoid:!0}),param:new Mt({isVoid:!0}),hr:new Mt({isVoid:!0}),br:new Mt({isVoid:!0}),source:new Mt({isVoid:!0}),track:new Mt({isVoid:!0}),wbr:new Mt({isVoid:!0}),p:new Mt({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 Mt({closedByChildren:["tbody","tfoot"]}),tbody:new Mt({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new Mt({closedByChildren:["tbody"],closedByParent:!0}),tr:new Mt({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new Mt({closedByChildren:["td","th"],closedByParent:!0}),th:new Mt({closedByChildren:["td","th"],closedByParent:!0}),col:new Mt({requiredParents:["colgroup"],isVoid:!0}),svg:new Mt({implicitNamespacePrefix:"svg"}),math:new Mt({implicitNamespacePrefix:"math"}),li:new Mt({closedByChildren:["li"],closedByParent:!0}),dt:new Mt({closedByChildren:["dt","dd"]}),dd:new Mt({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new Mt({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new Mt({closedByChildren:["optgroup"],closedByParent:!0}),option:new Mt({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new Mt({ignoreFirstLf:!0}),listing:new Mt({ignoreFirstLf:!0}),style:new Mt({contentType:ct.RAW_TEXT}),script:new Mt({contentType:ct.RAW_TEXT}),title:new Mt({contentType:ct.ESCAPABLE_RAW_TEXT}),textarea:new Mt({contentType:ct.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},jt=new Mt;function Ft(t){return qt[t.toLowerCase()]||jt}var zt=function(t){function e(e,n){var a=t.call(this)||this;return a.mapName=n,a.internalToPublic={},a.publicToNextId={},a.publicToInternal={},e.nodes.forEach(function(t){return t.visit(a)}),a}return Object(a.__extends)(e,t),e.prototype.toPublicName=function(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null},e.prototype.toInternalName=function(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null},e.prototype.visitText=function(t,e){return null},e.prototype.visitTagPlaceholder=function(e,n){this.visitPlaceholderName(e.startName),t.prototype.visitTagPlaceholder.call(this,e,n),this.visitPlaceholderName(e.closeName)},e.prototype.visitPlaceholder=function(t,e){this.visitPlaceholderName(t.name)},e.prototype.visitIcuPlaceholder=function(t,e){this.visitPlaceholderName(t.name)},e.prototype.visitPlaceholderName=function(t){if(t&&!this.internalToPublic.hasOwnProperty(t)){var e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){var n=this.publicToNextId[e];this.publicToNextId[e]=n+1,e=e+"_"+n}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}},e}(x),Gt=new r.I18nSelectPipe,Yt=function(){function t(t,e){this.params=e,this.i18nPluralPipe=new r.I18nPluralPipe(new r.NgLocaleLocalization(t))}return t.prototype.visitElement=function(t,e){return Ft(t.name).isVoid?"<"+t.name+this.serializeNodes(t.attrs," ")+"/>":"<"+t.name+this.serializeNodes(t.attrs," ")+">"+this.serializeNodes(t.children)+"</"+t.name+">"},t.prototype.visitAttribute=function(t,e){return t.name+'="'+t.value+'"'},t.prototype.visitText=function(t,e){return t.value},t.prototype.visitComment=function(t,e){return"\x3c!--"+t.value+"--\x3e"},t.prototype.visitExpansion=function(t,e){var n=this,a={};switch(t.cases.forEach(function(t){return a[t.value]=n.serializeNodes(t.expression)}),t.type){case"select":return Gt.transform(this.params[t.switchValue]||"",a);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],a)}throw new Error('Unknown expansion type "'+t.type+'"')},t.prototype.visitExpansionCase=function(t,e){return" "+t.value+" {"+this.serializeNodes(t.expression)+"}"},t.prototype.serializeNodes=function(t,e){var n=this;return void 0===e&&(e=""),0===t.length?"":e+t.map(function(t){return t.visit(n,null)}).join(e)},t}();function Ht(t){return t.id||function(t){var e,n,r=se(t),i=function(t,e){for(var n=Array(t.length+3>>>2),a=0;a<n.length;a++)n[a]=ae(t,4*a,e);return n}(r,Xt.Big),o=8*r.length,s=new Array(80),u=Object(a.__read)([1732584193,4023233417,2562383102,271733878,3285377520],5),c=u[0],l=u[1],d=u[2],p=u[3],f=u[4];i[o>>5]|=128<<24-o%32,i[15+(o+64>>9<<4)]=o;for(var h=0;h<i.length;h+=16){for(var g=Object(a.__read)([c,l,d,p,f],5),m=g[0],b=g[1],y=g[2],v=g[3],x=g[4],_=0;_<80;_++){s[_]=_<16?i[h+_]:ee(s[_-3]^s[_-8]^s[_-14]^s[_-16],1);var T=Object(a.__read)(Wt(_,l,d,p),2),w=T[0],S=T[1],O=[ee(c,5),w,f,S,s[_]].reduce(Jt);f=(e=Object(a.__read)([p,d,ee(l,30),c,O],5))[0],p=e[1],d=e[2],l=e[3],c=e[4]}c=(n=Object(a.__read)([Jt(c,m),Jt(l,b),Jt(d,y),Jt(p,v),Jt(f,x)],5))[0],l=n[1],d=n[2],p=n[3],f=n[4]}return function(t){for(var e="",n=0;n<t.length;n++){var a=ne(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(re([c,l,d,p,f]))}((e=t.nodes,e.map(function(t){return t.visit(Bt,null)})).join("")+"["+t.meaning+"]");var e}var Vt=function(){function t(){}return t.prototype.visitText=function(t,e){return t.value},t.prototype.visitContainer=function(t,e){var n=this;return"["+t.children.map(function(t){return t.visit(n)}).join(", ")+"]"},t.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+t.expression+", "+t.type+", "+a.join(", ")+"}"},t.prototype.visitTagPlaceholder=function(t,e){var n=this;return t.isVoid?'<ph tag name="'+t.startName+'"/>':'<ph tag name="'+t.startName+'">'+t.children.map(function(t){return t.visit(n)}).join(", ")+'</ph name="'+t.closeName+'">'},t.prototype.visitPlaceholder=function(t,e){return t.value?'<ph name="'+t.name+'">'+t.value+"</ph>":'<ph name="'+t.name+'"/>'},t.prototype.visitIcuPlaceholder=function(t,e){return'<ph icu name="'+t.name+'">'+t.value.visit(this)+"</ph>"},t}(),Bt=new Vt,Ut=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+t.type+", "+a.join(", ")+"}"},e}(Vt);function Wt(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 Kt(t){var e=se(t),n=Object(a.__read)([$t(e,0),$t(e,102072)],2),r=n[0],i=n[1];return 0!==r||0!==i&&1!==i||(r^=319790063,i^=-1801410264),[r,i]}function $t(t,e){var n,r,i=Object(a.__read)([2654435769,2654435769],2),o=i[0],s=i[1],u=t.length;for(n=0;n+12<=u;n+=12)o=Jt(o,ae(t,n,Xt.Little)),s=Jt(s,ae(t,n+4,Xt.Little)),e=Jt(e,ae(t,n+8,Xt.Little)),o=(r=Object(a.__read)(Zt([o,s,e]),3))[0],s=r[1],e=r[2];return o=Jt(o,ae(t,n,Xt.Little)),s=Jt(s,ae(t,n+4,Xt.Little)),e=Jt(e,u),Zt([o,s,e=Jt(e,ae(t,n+8,Xt.Little)<<8)])[2]}function Zt(t){var e=Object(a.__read)(t,3),n=e[0],r=e[1],i=e[2];return n=te(n,r),n=te(n,i),n^=i>>>13,r=te(r,i),r=te(r,n),r^=n<<8,i=te(i,n),i=te(i,r),i^=r>>>13,n=te(n,r),n=te(n,i),n^=i>>>12,r=te(r,i),r=te(r,n),r^=n<<16,i=te(i,n),i=te(i,r),i^=r>>>5,n=te(n,r),n=te(n,i),n^=i>>>3,r=te(r,i),r=te(r,n),r^=n<<10,i=te(i,n),i=te(i,r),[n,r,i^=r>>>15]}var Xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function Jt(t,e){return Qt(t,e)[1]}function Qt(t,e){var n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function te(t,e){var n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function ee(t,e){return t<<e|t>>>32-e}function ne(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function ae(t,e,n){var a=0;if(n===Xt.Big)for(var r=0;r<4;r++)a+=ne(t,e+r)<<24-8*r;else for(r=0;r<4;r++)a+=ne(t,e+r)<<8*r;return a}function re(t){return t.reduce(function(t,e){return t+function(t){for(var e="",n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e)},"")}function ie(t,e){for(var n="",a=Math.max(t.length,e.length),r=0,i=0;r<a||i;r++){var o=i+ +(t[r]||0)+ +(e[r]||0);o>=10?(i=1,n+=o-10):(i=0,n+=o)}return n}function oe(t,e){for(var n="",a=e;0!==t;t>>>=1)1&t&&(n=ie(n,a)),a=ie(a,a);return n}function se(t){for(var e="",n=0;n<t.length;n++){var a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){var r=t.charCodeAt(n+1);r>=56320&&r<=57343&&(n++,a=(a-55296<<10)+r-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 ue(t){var e=(new le).parse(t),n=e.msgIdToHtml,r=e.errors,i={},o=new de;if(Object.keys(n).forEach(function(t){var e=o.convert(n[t]),s=e.i18nNodes,u=e.errors;r.push.apply(r,Object(a.__spread)(u)),i[t]=s}),r.length)throw new Error("xliff parse errors:\n"+r.join("\n"));return i}var ce=Ht,le=function(){function t(){}return t.prototype.parse=function(t){this._unitMlString=null,this._msgIdToHtml={};var e=new Dt(Pt).parse(t,"",!1);return this._errors=e.errors,p(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;this._msgIdToHtml.hasOwnProperty(a)?this._addError(t,"Duplicated translations for msg "+a):(p(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[a]=this._unitMlString:this._addError(t,"Message "+a+" misses a translation"))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=r;break;case"file":p(this,t.children,null);break;default:p(this,t.children,null)}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}(),de=function(){function t(){}return t.prototype.convert=function(t){var e=new Dt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:p(this,e.rootNodes),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitElement=function(t,e){if("x"===t.name){var n=t.attrs.find(function(t){return"id"===t.name});if(n)return new y("",n.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null},t.prototype.visitExpansion=function(t,e){var n={};return p(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:p(this,t.expression)}},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}();function pe(t){var e=(new he).parse(t),n=e.msgIdToHtml,r=e.errors,i={},o=new ge;if(Object.keys(n).forEach(function(t){var e=o.convert(n[t]),s=e.i18nNodes,u=e.errors;r.push.apply(r,Object(a.__spread)(u)),i[t]=s}),r.length)throw new Error("xliff2 parse errors:\n"+r.join("\n"));return i}var fe=function(t){if(t.id)return t.id;var e=new Ut;return function(t,e){var n,r=Object(a.__read)(Kt(t),2),i=r[0],o=r[1];if(e){var s=Object(a.__read)(Kt(e),2),u=s[0],c=s[1];i=(n=Object(a.__read)(function(t,e){var n=Object(a.__read)(t,2),r=n[0],i=n[1],o=Object(a.__read)(e,2),s=o[0],u=o[1],c=Object(a.__read)(Qt(i,u),2),l=c[0],d=c[1];return[Jt(Jt(r,s),l),d]}(function(t,e){var n=Object(a.__read)(t,2),r=n[0],i=n[1];return[r<<1|i>>>31,i<<1|r>>>31]}([i,o]),[u,c]),2))[0],o=n[1]}return function(t){for(var e="",n="1",a=t.length-1;a>=0;a--)e=ie(e,oe(ne(t,a),n)),n=oe(256,n);return e.split("").reverse().join("")}(re([2147483647&i,o]))}(t.nodes.map(function(t){return t.visit(e,null)}).join(""),t.meaning)},he=function(){function t(){}return t.prototype.parse=function(t){this._unitMlString=null,this._msgIdToHtml={};var e=new Dt(Pt).parse(t,"",!1);return this._errors=e.errors,p(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"unit":this._unitMlString=null;var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;this._msgIdToHtml.hasOwnProperty(a)?this._addError(t,"Duplicated translations for msg "+a):(p(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[a]=this._unitMlString:this._addError(t,"Message "+a+" misses a translation"))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=r;break;case"xliff":var i=t.attrs.find(function(t){return"version"===t.name});if(i){var o=i.value;"2.0"!==o?this._addError(t,"The XLIFF file version "+o+" is not compatible with XLIFF 2.0 serializer"):p(this,t.children,null)}break;default:p(this,t.children,null)}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}(),ge=function(){function t(){}return t.prototype.convert=function(t){var e=new Dt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat.apply([],Object(a.__spread)(p(this,e.rootNodes))),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitElement=function(t,e){var n=this;switch(t.name){case"ph":var r=t.attrs.find(function(t){return"equiv"===t.name});if(r)return[new y("",r.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":var i=t.attrs.find(function(t){return"equivStart"===t.name}),o=t.attrs.find(function(t){return"equivEnd"===t.name});if(i){if(o){var s=i.value,u=o.value,c=[];return c.concat.apply(c,Object(a.__spread)([new y("",s,t.sourceSpan)],t.children.map(function(t){return t.visit(n,null)}),[new y("",u,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},t.prototype.visitExpansion=function(t,e){var n={};return p(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:[].concat.apply([],Object(a.__spread)(p(this,t.expression)))}},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}();function me(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function be(t){var e=(new xe).parse(t),n=e.msgIdToHtml,a=e.errors;if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));var r={},i=new _e;return Object.keys(n).forEach(function(t){var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:function(){var r=function(){var e=i.convert(n[t]),a=e.i18nNodes,r=e.errors;if(r.length)throw new Error("xtb parse errors:\n"+r.join("\n"));return a}();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:function(t){throw new Error("Could not overwrite an XTB translation")}})}),r}var ye=Ht,ve=function(t){return new zt(t,me)},xe=function(){function t(){}return t.prototype.parse=function(t){this._bundleDepth=0,this._msgIdToHtml={};var e=new Dt(Pt).parse(t,"",!1);return this._errors=e.errors,p(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),p(this,t.children,null),this._bundleDepth--;break;case"translation":var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;if(this._msgIdToHtml.hasOwnProperty(a))this._addError(t,"Duplicated translations for msg "+a);else{var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[a]=r}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}(),_e=function(){function t(){}return t.prototype.convert=function(t){var e=new Dt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:p(this,e.rootNodes),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitExpansion=function(t,e){var n={};return p(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:p(this,t.expression)}},t.prototype.visitElement=function(t,e){if("ph"===t.name){var n=t.attrs.find(function(t){return"name"===t.name});if(n)return new y("",n.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}(),Te=function(){return function(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message="Parser Error: "+t+" "+n+" ["+e+"] in "+a}}(),we=function(){return function(t,e){this.start=t,this.end=e}}(),Se=function(){function t(t){this.span=t}return t.prototype.visit=function(t,e){return void 0===e&&(e=null),null},t.prototype.toString=function(){return"AST"},t}(),Oe=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.prefix=n,i.uninterpretedExpression=a,i.location=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitQuote(this,e)},e.prototype.toString=function(){return"Quote"},e}(Se),ke=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){void 0===e&&(e=null)},e}(Se),Ce=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitImplicitReceiver(this,e)},e}(Se),Ie=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expressions=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitChain(this,e)},e}(Se),Re=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.condition=n,i.trueExp=a,i.falseExp=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitConditional(this,e)},e}(Se),Ne=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.receiver=n,r.name=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPropertyRead(this,e)},e}(Se),De=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.value=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPropertyWrite(this,e)},e}(Se),Ae=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.receiver=n,r.name=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitSafePropertyRead(this,e)},e}(Se),Ee=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.obj=n,r.key=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitKeyedRead(this,e)},e}(Se),Le=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.obj=n,i.key=a,i.value=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitKeyedWrite(this,e)},e}(Se),Pe=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.exp=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPipe(this,e)},e}(Se),Me=function(t){function e(e,n){var a=t.call(this,e)||this;return a.value=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralPrimitive(this,e)},e}(Se),qe=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expressions=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralArray(this,e)},e}(Se),je=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keys=n,r.values=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralMap(this,e)},e}(Se),Fe=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.strings=n,r.expressions=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitInterpolation(this,e)},e}(Se),ze=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.operation=n,i.left=a,i.right=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitBinary(this,e)},e}(Se),Ge=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expression=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPrefixNot(this,e)},e}(Se),Ye=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expression=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitNonNullAssert(this,e)},e}(Se),He=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitMethodCall(this,e)},e}(Se),Ve=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitSafeMethodCall(this,e)},e}(Se),Be=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.target=n,r.args=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitFunctionCall(this,e)},e}(Se),Ue=function(t){function e(e,n,a,r){var i=t.call(this,new we(0,null==n?0:n.length))||this;return i.ast=e,i.source=n,i.location=a,i.errors=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),this.ast.visit(t,e)},e.prototype.toString=function(){return this.source+" in "+this.location},e}(Se),We=function(){return function(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}(),Ke=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}(),$e=["var","let","as","null","undefined","true","false","if","else","this"],Ze=function(){function t(){}return t.prototype.tokenize=function(t){for(var e=new en(t),n=[],a=e.scanToken();null!=a;)n.push(a),a=e.scanToken();return n},t}(),Xe=function(){function t(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}return t.prototype.isCharacter=function(t){return this.type===Ke.Character&&this.numValue===t},t.prototype.isNumber=function(){return this.type===Ke.Number},t.prototype.isString=function(){return this.type===Ke.String},t.prototype.isOperator=function(t){return this.type===Ke.Operator&&this.strValue===t},t.prototype.isIdentifier=function(){return this.type===Ke.Identifier},t.prototype.isKeyword=function(){return this.type===Ke.Keyword},t.prototype.isKeywordLet=function(){return this.type===Ke.Keyword&&"let"===this.strValue},t.prototype.isKeywordAs=function(){return this.type===Ke.Keyword&&"as"===this.strValue},t.prototype.isKeywordNull=function(){return this.type===Ke.Keyword&&"null"===this.strValue},t.prototype.isKeywordUndefined=function(){return this.type===Ke.Keyword&&"undefined"===this.strValue},t.prototype.isKeywordTrue=function(){return this.type===Ke.Keyword&&"true"===this.strValue},t.prototype.isKeywordFalse=function(){return this.type===Ke.Keyword&&"false"===this.strValue},t.prototype.isKeywordThis=function(){return this.type===Ke.Keyword&&"this"===this.strValue},t.prototype.isError=function(){return this.type===Ke.Error},t.prototype.toNumber=function(){return this.type===Ke.Number?this.numValue:-1},t.prototype.toString=function(){switch(this.type){case Ke.Character:case Ke.Identifier:case Ke.Keyword:case Ke.Operator:case Ke.String:case Ke.Error:return this.strValue;case Ke.Number:return this.numValue.toString();default:return null}},t}();function Je(t,e){return new Xe(t,Ke.Character,e,String.fromCharCode(e))}function Qe(t,e){return new Xe(t,Ke.Operator,0,e)}var tn=new Xe(-1,Ke.Character,0,""),en=function(){function t(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}return t.prototype.advance=function(){this.peek=++this.index>=this.length?R:this.input.charCodeAt(this.index)},t.prototype.scanToken=function(){for(var t=this.input,e=this.length,n=this.peek,a=this.index;n<=P;){if(++a>=e){n=R;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(nn(n))return this.scanIdentifier();if(st(n))return this.scanNumber(a);var r=a;switch(n){case 46:return this.advance(),st(this.peek)?this.scanNumber(r):Je(r,46);case 40:case 41:case rt:case 125:case 91:case 93:case 44:case 58:case Y:return this.scanCharacter(r,n);case j:case M:return this.scanString();case 35:case F:case z:case 42:case G:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case V:return this.scanComplexOperator(r,String.fromCharCode(n),H,"=");case 33:case H:return this.scanComplexOperator(r,String.fromCharCode(n),H,"=",H,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case it:for(;ot(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error("Unexpected character ["+String.fromCharCode(n)+"]",0)},t.prototype.scanCharacter=function(t,e){return this.advance(),Je(t,e)},t.prototype.scanOperator=function(t,e){return this.advance(),Qe(t,e)},t.prototype.scanComplexOperator=function(t,e,n,a,r,i){this.advance();var o=e;return this.peek===n&&(this.advance(),o+=a),null!=r&&this.peek===r&&(this.advance(),o+=i),Qe(t,o)},t.prototype.scanIdentifier=function(){var t=this.index;for(this.advance();an(this.peek);)this.advance();var e=this.input.substring(t,this.index);return $e.indexOf(e)>-1?new Xe(t,Ke.Keyword,0,e):new Xe(t,Ke.Identifier,0,e)},t.prototype.scanNumber=function(t){var e,n=this.index===t;for(this.advance();;){if(st(this.peek));else if(46===this.peek)n=!1;else{if(101!==(e=this.peek)&&69!==e)break;if(this.advance(),rn(this.peek)&&this.advance(),!st(this.peek))return this.error("Invalid exponent",-1);n=!1}this.advance()}var a=this.input.substring(t,this.index),r=n?function(t){var 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,Ke.Number,r,"")},t.prototype.scanString=function(){var t=this.index,e=this.peek;this.advance();for(var n="",a=this.index,r=this.input;this.peek!==e;)if(92===this.peek){n+=r.substring(a,this.index),this.advance();var i=void 0;if(this.peek=this.peek,117===this.peek){var o=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(o))return this.error("Invalid unicode escape [\\u"+o+"]",0);i=parseInt(o,16);for(var s=0;s<5;s++)this.advance()}else i=on(this.peek),this.advance();n+=String.fromCharCode(i),a=this.index}else{if(this.peek===R)return this.error("Unterminated quote",0);this.advance()}var u=r.substring(a,this.index);return this.advance(),new Xe(t,Ke.String,0,n+u)},t.prototype.error=function(t,e){var n=this.index+e;return function(t,e){return new Xe(n,Ke.Error,0,e)}(0,"Lexer Error: "+t+" at column "+n+" in expression ["+this.input+"]")},t}();function nn(t){return X<=t&&t<=at||W<=t&&t<=$||t===Z||t===q}function an(t){return ut(t)||st(t)||t===Z||t===q}function rn(t){return t===z||t===F}function on(t){switch(t){case Q:return D;case J:return E;case tt:return L;case et:return N;case nt:return A;default:return t}}var sn=function(){return function(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}(),un=function(){return function(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}();function cn(t){var e=C(t.start)+"([\\s\\S]*?)"+C(t.end);return new RegExp(e,"g")}var ln=function(){function t(t){this._lexer=t,this.errors=[]}return t.prototype.parseAction=function(t,e,n){void 0===n&&(n=I),this._checkNoInterpolation(t,e,n);var a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new dn(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new Ue(i,t,e,this.errors)},t.prototype.parseBinding=function(t,e,n){void 0===n&&(n=I);var a=this._parseBindingAst(t,e,n);return new Ue(a,t,e,this.errors)},t.prototype.parseSimpleBinding=function(t,e,n){void 0===n&&(n=I);var a=this._parseBindingAst(t,e,n),r=pn.check(a);return r.length>0&&this._reportError("Host binding expression cannot contain "+r.join(" "),t,e),new Ue(a,t,e,this.errors)},t.prototype._reportError=function(t,e,n,a){this.errors.push(new Te(t,e,n,a))},t.prototype._parseBindingAst=function(t,e,n){var a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);var r=this._stripComments(t),i=this._lexer.tokenize(r);return new dn(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()},t.prototype._parseQuote=function(t,e){if(null===t)return null;var n=t.indexOf(":");if(-1===n)return null;var a=t.substring(0,n).trim();if(!function(t){if(0===a.length)return!1;var e=new en(a);if(!nn(e.peek))return!1;for(e.advance();e.peek!==R;){if(!an(e.peek))return!1;e.advance()}return!0}())return null;var r=t.substring(n+1);return new Oe(new we(0,t.length),a,r,e)},t.prototype.parseTemplateBindings=function(t,e,n){var r=this._lexer.tokenize(e);if(t){var i=this._lexer.tokenize(t).map(function(t){return t.index=0,t});r.unshift.apply(r,Object(a.__spread)(i))}return new dn(e,n,r,e.length,!1,this.errors,0).parseTemplateBindings()},t.prototype.parseInterpolation=function(t,e,n){void 0===n&&(n=I);var a=this.splitInterpolation(t,e,n);if(null===a)return null;for(var r=[],i=0;i<a.expressions.length;++i){var o=a.expressions[i],s=this._stripComments(o),u=this._lexer.tokenize(s),c=new dn(t,e,u,s.length,!1,this.errors,a.offsets[i]+(o.length-s.length)).parseChain();r.push(c)}return new Ue(new Fe(new we(0,null===t?0:t.length),a.strings,r),t,e,this.errors)},t.prototype.splitInterpolation=function(t,e,n){void 0===n&&(n=I);var a=cn(n),r=t.split(a);if(r.length<=1)return null;for(var i=[],o=[],s=[],u=0,c=0;c<r.length;c++){var l=r[c];c%2==0?(i.push(l),u+=l.length):l.trim().length>0?(u+=n.start.length,o.push(l),s.push(u),u+=l.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,"at column "+this._findInterpolationErrorColumn(r,c,n)+" in",e),o.push("$implict"),s.push(u))}return new sn(i,o,s)},t.prototype.wrapLiteralPrimitive=function(t,e){return new Ue(new Me(new we(0,null===t?0:t.length),t),t,e,this.errors)},t.prototype._stripComments=function(t){var e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t},t.prototype._commentStart=function(t){for(var e,n=null,a=0;a<t.length-1;a++){var r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(r===G&&i===G&&null===n)return a;n===r?n=null:null===n&&((e=r)===j||e===M||96===e)&&(n=r)}return null},t.prototype._checkNoInterpolation=function(t,e,n){var a=cn(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)},t.prototype._findInterpolationErrorColumn=function(t,e,n){for(var a="",r=0;r<e;r++)a+=r%2==0?t[r]:""+n.start+t[r]+n.end;return a.length},t}(),dn=function(){function t(t,e,n,a,r,i,o){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=o,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}return t.prototype.peek=function(t){var e=this.index+t;return e<this.tokens.length?this.tokens[e]:tn},Object.defineProperty(t.prototype,"next",{get:function(){return this.peek(0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputIndex",{get:function(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset},enumerable:!0,configurable:!0}),t.prototype.span=function(t){return new we(t,this.inputIndex)},t.prototype.advance=function(){this.index++},t.prototype.optionalCharacter=function(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)},t.prototype.peekKeywordLet=function(){return this.next.isKeywordLet()},t.prototype.peekKeywordAs=function(){return this.next.isKeywordAs()},t.prototype.expectCharacter=function(t){this.optionalCharacter(t)||this.error("Missing expected "+String.fromCharCode(t))},t.prototype.optionalOperator=function(t){return!!this.next.isOperator(t)&&(this.advance(),!0)},t.prototype.expectOperator=function(t){this.optionalOperator(t)||this.error("Missing expected operator "+t)},t.prototype.expectIdentifierOrKeyword=function(){var t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error("Unexpected token "+t+", expected identifier or keyword"),"")},t.prototype.expectIdentifierOrKeywordOrString=function(){var t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error("Unexpected token "+t+", expected identifier, keyword, or string"),"")},t.prototype.parseChain=function(){for(var t=[],e=this.inputIndex;this.index<this.tokens.length;){var n=this.parsePipe();if(t.push(n),this.optionalCharacter(Y))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(Y););else this.index<this.tokens.length&&this.error("Unexpected token '"+this.next+"'")}return 0===t.length?new ke(this.span(e)):1===t.length?t[0]:new Ie(this.span(e),t)},t.prototype.parsePipe=function(){var t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{for(var e=this.expectIdentifierOrKeyword(),n=[];this.optionalCharacter(58);)n.push(this.parseExpression());t=new Pe(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t},t.prototype.parseExpression=function(){return this.parseConditional()},t.prototype.parseConditional=function(){var t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){var n=this.parsePipe(),a=void 0;if(this.optionalCharacter(58))a=this.parsePipe();else{var r=this.input.substring(t,this.inputIndex);this.error("Conditional expression "+r+" requires all 3 expressions"),a=new ke(this.span(t))}return new Re(this.span(t),e,n,a)}return e},t.prototype.parseLogicalOr=function(){for(var t=this.parseLogicalAnd();this.optionalOperator("||");){var e=this.parseLogicalAnd();t=new ze(this.span(t.span.start),"||",t,e)}return t},t.prototype.parseLogicalAnd=function(){for(var t=this.parseEquality();this.optionalOperator("&&");){var e=this.parseEquality();t=new ze(this.span(t.span.start),"&&",t,e)}return t},t.prototype.parseEquality=function(){for(var t=this.parseRelational();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();var n=this.parseRelational();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseRelational=function(){for(var t=this.parseAdditive();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();var n=this.parseAdditive();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseAdditive=function(){for(var t=this.parseMultiplicative();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"+":case"-":this.advance();var n=this.parseMultiplicative();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseMultiplicative=function(){for(var t=this.parsePrefix();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();var n=this.parsePrefix();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parsePrefix=function(){if(this.next.type===Ke.Operator){var t=this.inputIndex,e=this.next.strValue,n=void 0;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new ze(this.span(t),e,new Me(new we(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new Ge(this.span(t),n)}}return this.parseCallChain()},t.prototype.parseCallChain=function(){for(var t=this.parsePrimary();;)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++;var e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){var n=this.parseConditional();t=new Le(this.span(t.span.start),t,e,n)}else t=new Ee(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;var a=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new Be(this.span(t.span.start),t,a)}else{if(!this.optionalOperator("!"))return t;t=new Ye(this.span(t.span.start),t)}},t.prototype.parsePrimary=function(){var t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;var e=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),e}if(this.next.isKeywordNull())return this.advance(),new Me(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new Me(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new Me(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new Me(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new Ce(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;var n=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new qe(this.span(t),n)}if(this.next.isCharacter(rt))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new Ce(this.span(t)),!1);if(this.next.isNumber()){var a=this.next.toNumber();return this.advance(),new Me(this.span(t),a)}if(this.next.isString()){var r=this.next.toString();return this.advance(),new Me(this.span(t),r)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: "+this.input),new ke(this.span(t))):(this.error("Unexpected token "+this.next),new ke(this.span(t)))},t.prototype.parseExpressionList=function(t){var e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e},t.prototype.parseLiteralMap=function(){var t=[],e=[],n=this.inputIndex;if(this.expectCharacter(rt),!this.optionalCharacter(125)){this.rbracesExpected++;do{var a=this.next.isString(),r=this.expectIdentifierOrKeywordOrString();t.push({key:r,quoted:a}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new je(this.span(n),t,e)},t.prototype.parseAccessMemberOrMethodCall=function(t,e){void 0===e&&(e=!1);var n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;var r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;var i=this.span(n);return e?new Ve(i,t,a,r):new He(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new ke(this.span(n))):new Ae(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new ke(this.span(n));var o=this.parseConditional();return new De(this.span(n),t,a,o)}return new Ne(this.span(n),t,a)},t.prototype.parseCallArguments=function(){if(this.next.isCharacter(41))return[];var t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t},t.prototype.expectTemplateBindingKey=function(){var t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),(e=this.optionalOperator("-"))&&(t+="-")}while(e);return t.toString()},t.prototype.parseTemplateBindings=function(){for(var t=[],e=null;this.index<this.tokens.length;){var n=this.inputIndex,a=this.peekKeywordLet();a&&this.advance();var r=this.expectTemplateBindingKey(),i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);var o=null,s=null;if(a)o=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs()){var u=this.inputIndex;this.advance(),o=r,i=this.expectTemplateBindingKey(),a=!0}else if(this.next!==tn&&!this.peekKeywordLet()){var c=this.inputIndex,l=this.parsePipe(),d=this.input.substring(c-this.offset,this.inputIndex-this.offset);s=new Ue(l,d,this.location,this.errors)}if(t.push(new We(this.span(n),i,a,o,s)),this.peekKeywordAs()&&!a){u=this.inputIndex,this.advance();var p=this.expectTemplateBindingKey();t.push(new We(this.span(u),p,!0,i,null))}this.optionalCharacter(Y)||this.optionalCharacter(44)}return new un(t,[],this.errors)},t.prototype.error=function(t,e){void 0===e&&(e=null),this.errors.push(new Te(t,this.input,this.locationText(e),this.location)),this.skip()},t.prototype.locationText=function(t){return void 0===t&&(t=null),null===t&&(t=this.index),t<this.tokens.length?"at column "+(this.tokens[t].index+1)+" in":"at the end of the expression"},t.prototype.skip=function(){for(var t=this.next;this.index<this.tokens.length&&!t.isCharacter(Y)&&(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 Te(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next},t}(),pn=function(){function t(){this.errors=[]}return t.check=function(e){var n=new t;return e.visit(n),n.errors},t.prototype.visitImplicitReceiver=function(t,e){},t.prototype.visitInterpolation=function(t,e){},t.prototype.visitLiteralPrimitive=function(t,e){},t.prototype.visitPropertyRead=function(t,e){},t.prototype.visitPropertyWrite=function(t,e){},t.prototype.visitSafePropertyRead=function(t,e){},t.prototype.visitMethodCall=function(t,e){},t.prototype.visitSafeMethodCall=function(t,e){},t.prototype.visitFunctionCall=function(t,e){},t.prototype.visitLiteralArray=function(t,e){this.visitAll(t.expressions)},t.prototype.visitLiteralMap=function(t,e){this.visitAll(t.values)},t.prototype.visitBinary=function(t,e){},t.prototype.visitPrefixNot=function(t,e){},t.prototype.visitNonNullAssert=function(t,e){},t.prototype.visitConditional=function(t,e){},t.prototype.visitPipe=function(t,e){this.errors.push("pipes")},t.prototype.visitKeyedRead=function(t,e){},t.prototype.visitKeyedWrite=function(t,e){},t.prototype.visitAll=function(t){var e=this;return t.map(function(t){return t.visit(e)})},t.prototype.visitChain=function(t,e){},t.prototype.visitQuote=function(t,e){},t}(),fn={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"},hn=function(){function t(){this._placeHolderNameCounts={},this._signatureToName={}}return t.prototype.getStartTagPlaceholderName=function(t,e,n){var a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];var r=t.toUpperCase(),i=fn[r]||"TAG_"+r,o=this._generateUniqueName(n?i:"START_"+i);return this._signatureToName[a]=o,o},t.prototype.getCloseTagPlaceholderName=function(t){var e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];var n=t.toUpperCase(),a=this._generateUniqueName("CLOSE_"+(fn[n]||"TAG_"+n));return this._signatureToName[e]=a,a},t.prototype.getPlaceholderName=function(t,e){var n=t.toUpperCase(),a="PH: "+n+"="+e;if(this._signatureToName[a])return this._signatureToName[a];var r=this._generateUniqueName(n);return this._signatureToName[a]=r,r},t.prototype.getUniquePlaceholder=function(t){return this._generateUniqueName(t.toUpperCase())},t.prototype._hashTag=function(t,e,n){return"<"+t+Object.keys(e).sort().map(function(t){return" "+t+"="+e[t]}).join("")+(n?"/>":"></"+t+">")},t.prototype._hashClosingTag=function(t){return this._hashTag("/"+t,{},!1)},t.prototype._generateUniqueName=function(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;var e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,t+"_"+e},t}(),gn=new ln(new Ze),mn=function(){function t(t,e){this._expressionParser=t,this._interpolationConfig=e}return t.prototype.toI18nMessage=function(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new hn,this._placeholderToContent={},this._placeholderToMessage={};var r=p(this,t,{});return new f(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)},t.prototype.visitElement=function(t,e){var n=p(this,t.children),a={};t.attrs.forEach(function(t){a[t.name]=t.value});var r=Ft(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";var o="";return r||(o=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[o]="</"+t.name+">"),new b(t.name,a,i,o,n,r,t.sourceSpan)},t.prototype.visitAttribute=function(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)},t.prototype.visitText=function(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)},t.prototype.visitComment=function(t,e){return null},t.prototype.visitExpansion=function(e,n){var a=this;this._icuDepth++;var r={},i=new m(e.switchValue,e.type,r,e.sourceSpan);if(e.cases.forEach(function(t){r[t.value]=new g(t.expression.map(function(t){return t.visit(a,{})}),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){var o=this._placeholderRegistry.getUniquePlaceholder("VAR_"+e.type);return i.expressionPlaceholder=o,this._placeholderToContent[o]=e.switchValue,i}var s=this._placeholderRegistry.getPlaceholderName("ICU",e.sourceSpan.toString()),u=new t(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[s]=u.toI18nMessage([e],"","",""),new v(i,s,e.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){throw new Error("Unreachable code")},t.prototype._visitTextWithInterpolation=function(t,e){var n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);for(var a=[],r=new g(a,e),i=this._interpolationConfig,o=i.start,s=i.end,u=0;u<n.strings.length-1;u++){var c=n.expressions[u],l=c.split(bn)[2]||"INTERPOLATION",d=this._placeholderRegistry.getPlaceholderName(l,c);n.strings[u].length&&a.push(new h(n.strings[u],e)),a.push(new y(c,d,e)),this._placeholderToContent[d]=o+c+s}var p=n.strings.length-1;return n.strings[p].length&&a.push(new h(n.strings[p],e)),r},t}(),bn=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g,yn=function(t){function e(e){void 0===e&&(e=I);var n=t.call(this,Ft)||this;return n.interpolationConfig=e,n}return Object(a.__extends)(e,t),e.prototype.parse=function(e,n,a){return void 0===a&&(a=!1),t.prototype.parse.call(this,e,n,a,this.interpolationConfig)},e.prototype.extractMessages=function(t){var e=new wn(["wrapper"]),n=new l("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)},e.prototype.mergeTranslations=function(t,e,n,a,r){void 0===r&&(r=[]);var i=new wn(r),o=new l("wrapper",[],t,void 0,void 0,void 0);return i.merge(o,e,this.interpolationConfig,n,a)},e}(Dt),vn=function(){return function(t,e){this.messages=t,this.errors=e}}(),xn=function(){function t(t,e,n,a,r,i){void 0===t&&(t={}),this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new _n(t,e,r,a,n,i)}return t.load=function(e,n,a,r,i,o,s){return void 0===s&&(s=I),new t(i(e,n),function(t){return a(t)},s,o,function(t){return r(t)},console)},t.prototype.get=function(t,e){var n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes},t.prototype.has=function(t){return this.digest(t)in this.i18nNodesByMsgId},t}(),_n=function(){function t(t,e,n,a,r,i){void 0===t&&(t={}),this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}return t.prototype.convert=function(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);var n=this.convertToText(t),r=t.nodes[0].sourceSpan.start.file.url,i=(new yn).parse(n,r,!0);return{nodes:i.rootNodes,errors:Object(a.__spread)(this._errors,i.errors)}},t.prototype.visitText=function(t,e){return t.value},t.prototype.visitContainer=function(t,e){var n=this;return t.children.map(function(t){return t.visit(n)}).join("")},t.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+(this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression)+", "+t.type+", "+a.join(" ")+"}"},t.prototype.visitPlaceholder=function(t,e){var 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+'"'),"")},t.prototype.visitTagPlaceholder=function(t,e){var n=this,a=""+t.tag,r=Object.keys(t.attrs).map(function(e){return e+'="'+t.attrs[e]+'"'}).join(" ");return t.isVoid?"<"+a+" "+r+"/>":"<"+a+" "+r+">"+t.children.map(function(t){return t.visit(n)}).join("")+"</"+a+">"},t.prototype.visitIcuPlaceholder=function(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])},t.prototype.convertToText=function(t){var e,n=this,a=this._digest(t),r=this._mapperFactory?this._mapperFactory(t):null;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(a)?(e=this._i18nNodesByMsgId[a],this._mapper=function(t){return r?r.toInternalName(t):t}):(this._missingTranslationStrategy===i.MissingTranslationStrategy.Error?this._addError(t.nodes[0],'Missing translation for message "'+a+'"'):this._console&&this._missingTranslationStrategy===i.MissingTranslationStrategy.Warning&&this._console.warn('Missing translation for message "'+a+'"'),e=t.nodes,this._mapper=function(t){return t});var o=e.map(function(t){return t.visit(n)}).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,o},t.prototype.convertToValue=function(t){var e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t},t.prototype._addError=function(t,e){this._errors.push(new k(t.sourceSpan,e))},t}(),Tn=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}(),wn=function(){function t(t){void 0===t&&(t=[]),this._implicitTags=t,this.blockChildren=[]}return t.prototype.extract=function(t,e){return this.init(Tn.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new vn(this.messages,this.errors)},t.prototype.merge=function(t,e,n,a,r){void 0===r&&(r={}),this.init(Tn.Merge,n,a),this.translations=e,this.metadata=r;var i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Nt(i.children,this.errors)},t.prototype.visitExpansionCase=function(t,e){var n=p(this,t.expression,e);if(this.mode===Tn.Merge)return new u(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)},t.prototype.visitExpansion=function(t,e){this.mayBeAddBlockChildren(t);var n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);var a=p(this,t.cases,e);return this.mode===Tn.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t},t.prototype.visitComment=function(t,e){},t.prototype.visitText=function(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t},t.prototype.visitElement=function(t,e){var n=this;this.mayBeAddBlockChildren(t),this.depth++;var a=this.inI18nNode,r=this.inImplicitNode,i=[],o=void 0,s=t.attrs.find(function(t){return"i18n"===t.name})||null,u=this._implicitTags.some(function(e){return t.name===e})&&!this.inIcu&&!this.isInTranslatableSection,c=!r&&u;if(this.inImplicitNode=r||u,this.isInTranslatableSection||this.inIcu)(s||c)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Tn.Extract&&p(this,t.children);else{if(s||c){this.inI18nNode=!0;var d=this.addMessage(t.children,this.metadata);o=this.translateMessage(t,d)}if(this.mode===Tn.Extract){var f=s||c;f&&this.openTranslatableSection(t),p(this,t.children),f&&this._closeTranslatableSection(t,t.children)}}return this.mode===Tn.Merge&&(o||t.children).forEach(function(t){var a=t.visit(n,e);a&&!n.isInTranslatableSection&&(i=i.concat(a))}),this.depth--,this.inI18nNode=a,this.inImplicitNode=r,this.mode===Tn.Merge?new l(t.name,[],i,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null},t.prototype.visitAttribute=function(t,e){throw new Error("unreachable code")},t.prototype.init=function(t,e,n){void 0===n&&(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){var e=new mn(gn,t);return function(t,n,a,r){return e.toI18nMessage(t,n,a,r)}}(e),this.params=n},t.prototype.addMessage=function(t,e){var n=void 0===e?{}:e,a=n.meaning,r=n.description,i=n.id;if(0===t.length||1===t.length&&t[0]instanceof c&&!t[0].value)return null;var o=this.createI18nMessage(t,void 0===a?"":a,void 0===r?"":r,void 0===i?"":i);return this.messages.push(o),o},t.prototype.translateMessage=function(t,e){if(e&&this.mode===Tn.Merge){var n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,'Translation unavailable for message id="'+this.translations.digest(e)+'"')}return[]},t.prototype.mayBeAddBlockChildren=function(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)},t.prototype.openTranslatableSection=function(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length},Object.defineProperty(t.prototype,"isInTranslatableSection",{get:function(){return void 0!==this.msgCountAtSectionStart},enumerable:!0,configurable:!0}),t.prototype._closeTranslatableSection=function(t,e){if(this.isInTranslatableSection){var n=this.msgCountAtSectionStart;if(1===e.reduce(function(t,e){return t+(e instanceof d?0:1)},0))for(var a=this.messages.length-1;a>=n;a--){var r=this.messages[a].nodes;if(!(1===r.length&&r[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}else this._reportError(t,"Unexpected section end")},t.prototype._reportError=function(t,e){this.errors.push(new k(t.sourceSpan,e))},t}(),Sn=new i.InjectionToken("MissingTranslationStrategy"),On=function(){return function(t,e,n,a){var r,o;void 0===a&&(a=i.MissingTranslationStrategy.Warning);var s=function(t){return null};switch(t=(t||"xlf").toLowerCase()){case"xtb":r=be,o=ye,s=ve;break;case"xliff2":case"xlf2":r=pe,o=fe;break;case"xliff":case"xlf":r=ue,o=ce;break;default:throw new Error("Unknown translations format "+t)}var u=new yn,c=xn.load(e,"i18n",o,s,r,a);return function(t,e){void 0===e&&(e={});var a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);var i=u.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(function(t){return t.visit(new Yt(e,n),null)})}(u.mergeTranslations(i.rootNodes,c,e,r,["wrapper"]).rootNodes,n,e).join("")}}}()},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_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,o){var s=t+" ";return 1===t?s+n(0,e,i[0],o):e?s+(a(t)?r(i)[1]:r(i)[0]):o?s+r(i)[1]:s+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_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\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".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:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(t,e,n,a){return e?"kelios sekund\u0117s":a?"keli\u0173 sekund\u017ei\u0173":"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("CcnG"),r=n("Ip0R"),i=n("xdbM");n("dgut"),n("Fgil"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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 s(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{chartCanvasRef:0}),a["\u0275qud"](402653184,2,{chartTooltipRef:0}),(t()(),a["\u0275eld"](2,0,null,null,5,"div",[["class","chart-container"]],null,null,null,null,null)),a["\u0275did"](3,278528,null,0,r.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275eld"](4,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["\u0275did"](5,737280,null,0,i.BaseChartDirective,[a.ElementRef],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["\u0275eld"](6,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,0,"table",[],null,null,null,null,null))],function(t,e){var n=e.component;t(e,3,0,n.style),t(e,5,0,n.datasets,n.labels,n.options,"line",n.colors)},null)}},"K/tc":function(t,e,n){!function(t){"use strict";n("wd/R").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\xf4re 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}})}()},K2E3:function(t,e,n){"use strict";var a=n("6ww4"),r=n("RDha"),i=function(t){r.extend(this,t),this.initialize.apply(this,arguments)};r.extend(i.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=r.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,r=e._start,i=e._view;return n&&1!==t?(i||(i=e._view={}),r||(r=e._start={}),function(t,e,n,r){var i,o,s,u,c,l,d,p,f,h=Object.keys(n);for(i=0,o=h.length;i<o;++i)if(l=n[s=h[i]],e.hasOwnProperty(s)||(e[s]=l),(u=e[s])!==l&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=u),(d=typeof l)==typeof(c=t[s]))if("string"===d){if((p=a(c)).valid&&(f=a(l)).valid){e[s]=f.mix(p,r).rgbString();continue}}else if("number"===d&&isFinite(c)&&isFinite(l)){e[s]=c+(l-c)*r;continue}e[s]=l}}(r,i,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return r.isNumber(this._model.x)&&r.isNumber(this._model.y)}}),i.extend=r.inherits,t.exports=i},K9Ia:function(t,e,n){"use strict";n.d(e,"b",function(){return l}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("6blF"),i=n("FFOo"),o=n("pugT"),s=n("8g8A"),u=n("uMaO"),c=n("L/V9"),l=function(t){function e(e){var n=t.call(this,e)||this;return n.destination=e,n}return a.__extends(e,t),e}(i.a),d=function(t){function e(){var e=t.call(this)||this;return e.observers=[],e.closed=!1,e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return a.__extends(e,t),e.prototype[c.a]=function(){return new l(this)},e.prototype.lift=function(t){var e=new p(this,this);return e.operator=t,e},e.prototype.next=function(t){if(this.closed)throw new s.a;if(!this.isStopped)for(var e=this.observers,n=e.length,a=e.slice(),r=0;r<n;r++)a[r].next(t)},e.prototype.error=function(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;for(var e=this.observers,n=e.length,a=e.slice(),r=0;r<n;r++)a[r].error(t);this.observers.length=0},e.prototype.complete=function(){if(this.closed)throw new s.a;this.isStopped=!0;for(var t=this.observers,e=t.length,n=t.slice(),a=0;a<e;a++)n[a].complete();this.observers.length=0},e.prototype.unsubscribe=function(){this.isStopped=!0,this.closed=!0,this.observers=null},e.prototype._trySubscribe=function(e){if(this.closed)throw new s.a;return t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),o.a.EMPTY):this.isStopped?(t.complete(),o.a.EMPTY):(this.observers.push(t),new u.a(this,t))},e.prototype.asObservable=function(){var t=new r.a;return t.source=this,t},e.create=function(t,e){return new p(t,e)},e}(r.a),p=function(t){function e(e,n){var a=t.call(this)||this;return a.destination=e,a.source=n,a}return a.__extends(e,t),e.prototype.next=function(t){var e=this.destination;e&&e.next&&e.next(t)},e.prototype.error=function(t){var e=this.destination;e&&e.error&&this.destination.error(t)},e.prototype.complete=function(){var t=this.destination;t&&t.complete&&this.destination.complete()},e.prototype._subscribe=function(t){return this.source?this.source.subscribe(t):o.a.EMPTY},e}(d)},KAQS:function(t,e,n){"use strict";var a=n("RDha");t.exports=function(t){var e=["push","pop","shift","splice","unshift"];function n(t,n){var a=t._chartjs;if(a){var r=a.listeners,i=r.indexOf(n);-1!==i&&r.splice(i,1),r.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},a.extend(t.DatasetController.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]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(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,r,i=this,o=i.getDataset(),s=o.data||(o.data=[]);i._data!==s&&(i._data&&n(i._data,i),r=i,(t=s)._chartjs?t._chartjs.listeners.push(r):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[r]}}),e.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),r=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),i=r.apply(this,e);return a.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),i}})})),i._data=s),i.resyncElements()},update:a.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){a.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,r=t.custom||{},i=a.valueAtIndexOrDefault,o=a.getHoverColor,s=t._model;t.$previousStyle={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth},s.backgroundColor=r.hoverBackgroundColor?r.hoverBackgroundColor:i(e.hoverBackgroundColor,n,o(s.backgroundColor)),s.borderColor=r.hoverBorderColor?r.hoverBorderColor:i(e.hoverBorderColor,n,o(s.borderColor)),s.borderWidth=r.hoverBorderWidth?r.hoverBorderWidth:i(e.hoverBorderWidth,n,s.borderWidth)},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(){this.insertElements(this.getDataset().data.length-1,arguments.length)},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.DatasetController.extend=a.inherits}},KQya:function(t,e,n){"use strict";var a=n("mrSG"),r=1,i={},o=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return a.__extends(e,t),e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0?t.prototype.requestAsyncId.call(this,e,n,a):(e.actions.push(this),e.scheduled||(e.scheduled=(o=e.flush.bind(e,null),s=r++,i[s]=o,Promise.resolve().then(function(){return function(t){var e=i[t];e&&e()}(s)}),s)));var o,s},e.prototype.recycleAsyncId=function(e,n,a){if(void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,a);0===e.actions.length&&(delete i[n],e.scheduled=void 0)},e}(n("h9Dq").a),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,a=-1,r=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++a<r&&(t=n.shift()));if(this.active=!1,e){for(;++a<r&&(t=n.shift());)t.unsubscribe();throw e}},e}(n("CS9Q").a);n.d(e,"a",function(){return u});var u=new s(o)},KSF8:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".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\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] 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\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n r\u1ed3i l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}()},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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [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("CcnG");n("Z21x"),n("Ip0R"),n("sne2"),n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var r=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["\xa0\n"])),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-sm btn-default 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["\u0275ted"](2,null,[" ","\n"]))],null,function(t,e){t(e,2,0,e.component.name)})}},KhEm:function(t,e,n){"use strict";n.d(e,"a",function(){return u}),n.d(e,"b",function(){return l});var a=n("mrSG"),r=n("K9Ia"),i=n("6blF"),o=(n("FFOo"),n("pugT")),s=n("yGWI"),u=function(t){function e(e,n){var a=t.call(this)||this;return a.source=e,a.subjectFactory=n,a._refCount=0,a._isComplete=!1,a}return a.__extends(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype.connect=function(){var t=this._connection;return t||(this._isComplete=!1,(t=this._connection=new o.a).add(this.source.subscribe(new d(this.getSubject(),this))),t.closed?(this._connection=null,t=o.a.EMPTY):this._connection=t),t},e.prototype.refCount=function(){return Object(s.a)()(this)},e}(i.a),c=u.prototype,l={operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:c._subscribe},_isComplete:{value:c._isComplete,writable:!0},getSubject:{value:c.getSubject},connect:{value:c.connect},refCount:{value:c.refCount}},d=function(t){function e(e,n){var a=t.call(this,e)||this;return a.connectable=n,a}return a.__extends(e,t),e.prototype._error=function(e){this._unsubscribe(),t.prototype._error.call(this,e)},e.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}},e}(r.b)},"L/V9":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()},L5sC:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnCellTreeToggle=function(){return a([r.Directive({selector:"[ngx-datatable-tree-toggle]"})],function(t){this.template=t})}()},LBXl:function(t,e,n){"use strict";function a(t){return Error.call(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(t,e){return e+1+") "+t.toString()}).join("\n  "):"",this.name="UnsubscriptionError",this.errors=t,this}a.prototype=Object.create(Error.prototype),e.UnsubscriptionError=a},LceX:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return d}),n.d(e,"c",function(){return i}),n.d(e,"d",function(){return o}),n.d(e,"e",function(){return s}),n.d(e,"f",function(){return u}),n.d(e,"g",function(){return c}),n.d(e,"h",function(){return l});var a=n("sne2"),r=(n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX"),function(){return function(){}}()),i={breadcrumbs:"Users"},o={breadcrumbs:a.a.CREATE},s={breadcrumbs:a.a.EDIT},u={breadcrumbs:"Roles"},c={breadcrumbs:a.a.CREATE},l={breadcrumbs:a.a.EDIT},d=function(){return function(){}}()},Loxo:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".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:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}})}()},LvDl:function(t,e,n){(function(t){var a;(function(){var r,i=200,o="Expected a function",s="__lodash_placeholder__",u=1,c=2,l=4,d=1,p=2,f=1,h=2,g=4,m=8,b=16,y=32,v=64,x=128,_=256,T=512,w=800,S=16,O=1/0,k=9007199254740991,C=1.7976931348623157e308,I=NaN,R=4294967295,N=R-1,D=R>>>1,A=[["ary",x],["bind",f],["bindKey",h],["curry",m],["curryRight",b],["flip",T],["partial",y],["partialRight",v],["rearg",_]],E="[object Arguments]",L="[object Array]",P="[object AsyncFunction]",M="[object Boolean]",q="[object Date]",j="[object DOMException]",F="[object Error]",z="[object Function]",G="[object GeneratorFunction]",Y="[object Map]",H="[object Number]",V="[object Null]",B="[object Object]",U="[object Proxy]",W="[object RegExp]",K="[object Set]",$="[object String]",Z="[object Symbol]",X="[object Undefined]",J="[object WeakMap]",Q="[object ArrayBuffer]",tt="[object DataView]",et="[object Float32Array]",nt="[object Float64Array]",at="[object Int8Array]",rt="[object Int16Array]",it="[object Int32Array]",ot="[object Uint8Array]",st="[object Uint8ClampedArray]",ut="[object Uint16Array]",ct="[object Uint32Array]",lt=/\b__p \+= '';/g,dt=/\b(__p \+=) '' \+/g,pt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,ft=/&(?:amp|lt|gt|quot|#39);/g,ht=/[&<>"']/g,gt=RegExp(ft.source),mt=RegExp(ht.source),bt=/<%-([\s\S]+?)%>/g,yt=/<%([\s\S]+?)%>/g,vt=/<%=([\s\S]+?)%>/g,xt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_t=/^\w*$/,Tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wt=/[\\^$.*+?()[\]{}|]/g,St=RegExp(wt.source),Ot=/^\s+|\s+$/g,kt=/^\s+/,Ct=/\s+$/,It=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Rt=/\{\n\/\* \[wrapped with (.+)\] \*/,Nt=/,? & /,Dt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/\\(\\)?/g,Et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Lt=/\w*$/,Pt=/^[-+]0x[0-9a-f]+$/i,Mt=/^0b[01]+$/i,qt=/^\[object .+?Constructor\]$/,jt=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,zt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Gt=/($^)/,Yt=/['\n\r\u2028\u2029\\]/g,Ht="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Vt="\\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",Bt="["+Vt+"]",Ut="["+Ht+"]",Wt="\\d+",Kt="[a-z\\xdf-\\xf6\\xf8-\\xff]",$t="[^\\ud800-\\udfff"+Vt+Wt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",Zt="\\ud83c[\\udffb-\\udfff]",Xt="[^\\ud800-\\udfff]",Jt="(?:\\ud83c[\\udde6-\\uddff]){2}",Qt="[\\ud800-\\udbff][\\udc00-\\udfff]",te="[A-Z\\xc0-\\xd6\\xd8-\\xde]",ee="(?:"+Kt+"|"+$t+")",ne="(?:"+te+"|"+$t+")",ae="(?:"+Ut+"|"+Zt+")?",re="[\\ufe0e\\ufe0f]?"+ae+"(?:\\u200d(?:"+[Xt,Jt,Qt].join("|")+")[\\ufe0e\\ufe0f]?"+ae+")*",ie="(?:"+["[\\u2700-\\u27bf]",Jt,Qt].join("|")+")"+re,oe="(?:"+[Xt+Ut+"?",Ut,Jt,Qt,"[\\ud800-\\udfff]"].join("|")+")",se=RegExp("['\u2019]","g"),ue=RegExp(Ut,"g"),ce=RegExp(Zt+"(?="+Zt+")|"+oe+re,"g"),le=RegExp([te+"?"+Kt+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[Bt,te,"$"].join("|")+")",ne+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[Bt,te+ee,"$"].join("|")+")",te+"?"+ee+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",te+"+(?:['\u2019](?: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_])",Wt,ie].join("|"),"g"),de=RegExp("[\\u200d\\ud800-\\udfff"+Ht+"\\ufe0e\\ufe0f]"),pe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,fe=["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"],he=-1,ge={};ge[et]=ge[nt]=ge[at]=ge[rt]=ge[it]=ge[ot]=ge[st]=ge[ut]=ge[ct]=!0,ge[E]=ge[L]=ge[Q]=ge[M]=ge[tt]=ge[q]=ge[F]=ge[z]=ge[Y]=ge[H]=ge[B]=ge[W]=ge[K]=ge[$]=ge[J]=!1;var me={};me[E]=me[L]=me[Q]=me[tt]=me[M]=me[q]=me[et]=me[nt]=me[at]=me[rt]=me[it]=me[Y]=me[H]=me[B]=me[W]=me[K]=me[$]=me[Z]=me[ot]=me[st]=me[ut]=me[ct]=!0,me[F]=me[z]=me[J]=!1;var be={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ye=parseFloat,ve=parseInt,xe="object"==typeof global&&global&&global.Object===Object&&global,_e="object"==typeof self&&self&&self.Object===Object&&self,Te=xe||_e||Function("return this")(),we=e&&!e.nodeType&&e,Se=we&&"object"==typeof t&&t&&!t.nodeType&&t,Oe=Se&&Se.exports===we,ke=Oe&&xe.process,Ce=function(){try{return Se&&Se.require&&Se.require("util").types||ke&&ke.binding&&ke.binding("util")}catch(t){}}(),Ie=Ce&&Ce.isArrayBuffer,Re=Ce&&Ce.isDate,Ne=Ce&&Ce.isMap,De=Ce&&Ce.isRegExp,Ae=Ce&&Ce.isSet,Ee=Ce&&Ce.isTypedArray;function Le(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 Pe(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var o=t[r];e(a,o,n(o),t)}return a}function Me(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function qe(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 je(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var o=t[n];e(o,n,t)&&(i[r++]=o)}return i}function Fe(t,e){return!(null==t||!t.length)&&$e(t,e,0)>-1}function ze(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 Ge(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 Ye(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function He(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 Ve(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 Be(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 Ue=Qe("length");function We(t,e,n){var a;return n(t,function(t,n,r){if(e(t,n,r))return a=n,!1}),a}function Ke(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 $e(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):Ke(t,Xe,n)}function Ze(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 Je(t,e){var n=null==t?0:t.length;return n?nn(t,e)/n:I}function Qe(t){return function(e){return null==e?r:e[t]}}function tn(t){return function(e){return null==t?r:t[e]}}function en(t,e,n,a,r){return r(t,function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)}),n}function nn(t,e){for(var n,a=-1,i=t.length;++a<i;){var o=e(t[a]);o!==r&&(n=n===r?o:n+o)}return n}function an(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function rn(t){return function(e){return t(e)}}function on(t,e){return Ge(e,function(e){return t[e]})}function sn(t,e){return t.has(e)}function un(t,e){for(var n=-1,a=t.length;++n<a&&$e(e,t[n],0)>-1;);return n}function cn(t,e){for(var n=t.length;n--&&$e(e,t[n],0)>-1;);return n}var ln=tn({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),dn=tn({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function pn(t){return"\\"+be[t]}function fn(t){return de.test(t)}function hn(t){var e=-1,n=Array(t.size);return t.forEach(function(t,a){n[++e]=[a,t]}),n}function gn(t,e){return function(n){return t(e(n))}}function mn(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var o=t[n];o!==e&&o!==s||(t[n]=s,i[r++]=n)}return i}function bn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function yn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function vn(t){return fn(t)?function(t){for(var e=ce.lastIndex=0;ce.test(t);)++e;return e}(t):Ue(t)}function xn(t){return fn(t)?function(t){return t.match(ce)||[]}(t):function(t){return t.split("")}(t)}var _n=tn({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),Tn=function t(e){var n,a=(e=null==e?Te:Tn.defaults(Te.Object(),e,Tn.pick(Te,fe))).Array,Ht=e.Date,Vt=e.Error,Bt=e.Function,Ut=e.Math,Wt=e.Object,Kt=e.RegExp,$t=e.String,Zt=e.TypeError,Xt=a.prototype,Jt=Wt.prototype,Qt=e["__core-js_shared__"],te=Bt.prototype.toString,ee=Jt.hasOwnProperty,ne=0,ae=(n=/[^.]+$/.exec(Qt&&Qt.keys&&Qt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",re=Jt.toString,ie=te.call(Wt),oe=Te._,ce=Kt("^"+te.call(ee).replace(wt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),de=Oe?e.Buffer:r,be=e.Symbol,xe=e.Uint8Array,_e=de?de.allocUnsafe:r,we=gn(Wt.getPrototypeOf,Wt),Se=Wt.create,ke=Jt.propertyIsEnumerable,Ce=Xt.splice,Ue=be?be.isConcatSpreadable:r,tn=be?be.iterator:r,wn=be?be.toStringTag:r,Sn=function(){try{var t=Ti(Wt,"defineProperty");return t({},"",{}),t}catch(e){}}(),On=e.clearTimeout!==Te.clearTimeout&&e.clearTimeout,kn=Ht&&Ht.now!==Te.Date.now&&Ht.now,Cn=e.setTimeout!==Te.setTimeout&&e.setTimeout,In=Ut.ceil,Rn=Ut.floor,Nn=Wt.getOwnPropertySymbols,Dn=de?de.isBuffer:r,An=e.isFinite,En=Xt.join,Ln=gn(Wt.keys,Wt),Pn=Ut.max,Mn=Ut.min,qn=Ht.now,jn=e.parseInt,Fn=Ut.random,zn=Xt.reverse,Gn=Ti(e,"DataView"),Yn=Ti(e,"Map"),Hn=Ti(e,"Promise"),Vn=Ti(e,"Set"),Bn=Ti(e,"WeakMap"),Un=Ti(Wt,"create"),Wn=Bn&&new Bn,Kn={},$n=Ki(Gn),Zn=Ki(Yn),Xn=Ki(Hn),Jn=Ki(Vn),Qn=Ki(Bn),ta=be?be.prototype:r,ea=ta?ta.valueOf:r,na=ta?ta.toString:r;function aa(t){if(ps(t)&&!es(t)&&!(t instanceof sa)){if(t instanceof oa)return t;if(ee.call(t,"__wrapped__"))return $i(t)}return new oa(t)}var ra=function(){function t(){}return function(e){if(!ds(e))return{};if(Se)return Se(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function ia(){}function oa(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function sa(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=R,this.__views__=[]}function ua(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 ca(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 la(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 da(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new la;++e<n;)this.add(t[e])}function pa(t){var e=this.__data__=new ca(t);this.size=e.size}function fa(t,e){var n=es(t),a=!n&&ts(t),r=!n&&!a&&is(t),i=!n&&!a&&!r&&xs(t),o=n||a||r||i,s=o?an(t.length,$t):[],u=s.length;for(var c in t)!e&&!ee.call(t,c)||o&&("length"==c||r&&("offset"==c||"parent"==c)||i&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Ri(c,u))||s.push(c);return s}function ha(t){var e=t.length;return e?t[ur(0,e-1)]:r}function ga(t,e,n){(n===r||Xo(t[e],n))&&(n!==r||e in t)||xa(t,e,n)}function ma(t,e,n){var a=t[e];ee.call(t,e)&&Xo(a,n)&&(n!==r||e in t)||xa(t,e,n)}function ba(t,e){for(var n=t.length;n--;)if(Xo(t[n][0],e))return n;return-1}function ya(t,e,n,a){return Ca(t,function(t,r,i){e(a,t,n(t),i)}),a}function va(t,e){return t&&Gr(e,Ys(e),t)}function xa(t,e,n){"__proto__"==e&&Sn?Sn(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function _a(t,e){for(var n=-1,i=e.length,o=a(i),s=null==t;++n<i;)o[n]=s?r:qs(t,e[n]);return o}function Ta(t,e,n){return t==t&&(n!==r&&(t=t<=n?t:n),e!==r&&(t=t>=e?t:e)),t}function wa(t,e,n,a,i,o){var s,d=e&u,p=e&c,f=e&l;if(n&&(s=i?n(t,a,i,o):n(t)),s!==r)return s;if(!ds(t))return t;var h=es(t);if(h){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&ee.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!d)return zr(t,s)}else{var g=Oi(t),m=g==z||g==G;if(is(t))return Lr(t,d);if(g==B||g==E||m&&!i){if(s=p||m?{}:Ci(t),!d)return p?function(t,e){return Gr(t,Si(t),e)}(t,function(e,n){return e&&Gr(t,Hs(t),e)}(s)):function(t,e){return Gr(t,wi(t),e)}(t,va(s,t))}else{if(!me[g])return i?t:{};s=function(t,e,n){var a,r,i=t.constructor;switch(e){case Q:return Pr(t);case M:case q:return new i(+t);case tt:return function(t,e){var n=e?Pr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case et:case nt:case at:case rt:case it:case ot:case st:case ut:case ct:return Mr(t,n);case Y:return new i;case H:case $:return new i(t);case W:return(r=new(a=t).constructor(a.source,Lt.exec(a))).lastIndex=a.lastIndex,r;case K:return new i;case Z:return ea?Wt(ea.call(t)):{}}}(t,g,d)}}o||(o=new pa);var b=o.get(t);if(b)return b;o.set(t,s),bs(t)?t.forEach(function(a){s.add(wa(a,e,n,a,t,o))}):fs(t)&&t.forEach(function(a,r){s.set(r,wa(a,e,n,r,t,o))});var y=h?r:(f?p?gi:hi:p?Hs:Ys)(t);return Me(y||t,function(a,r){y&&(a=t[r=a]),ma(s,r,wa(a,e,n,r,t,o))}),s}function Sa(t,e,n){var a=n.length;if(null==t)return!a;for(t=Wt(t);a--;){var i=n[a],o=t[i];if(o===r&&!(i in t)||!(0,e[i])(o))return!1}return!0}function Oa(t,e,n){if("function"!=typeof t)throw new Zt(o);return Gi(function(){t.apply(r,n)},e)}function ka(t,e,n,a){var r=-1,o=Fe,s=!0,u=t.length,c=[],l=e.length;if(!u)return c;n&&(e=Ge(e,rn(n))),a?(o=ze,s=!1):e.length>=i&&(o=sn,s=!1,e=new da(e));t:for(;++r<u;){var d=t[r],p=null==n?d:n(d);if(d=a||0!==d?d:0,s&&p==p){for(var f=l;f--;)if(e[f]===p)continue t;c.push(d)}else o(e,p,a)||c.push(d)}return c}aa.templateSettings={escape:bt,evaluate:yt,interpolate:vt,variable:"",imports:{_:aa}},(aa.prototype=ia.prototype).constructor=aa,(oa.prototype=ra(ia.prototype)).constructor=oa,(sa.prototype=ra(ia.prototype)).constructor=sa,ua.prototype.clear=function(){this.__data__=Un?Un(null):{},this.size=0},ua.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},ua.prototype.get=function(t){var e=this.__data__;if(Un){var n=e[t];return"__lodash_hash_undefined__"===n?r:n}return ee.call(e,t)?e[t]:r},ua.prototype.has=function(t){var e=this.__data__;return Un?e[t]!==r:ee.call(e,t)},ua.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Un&&e===r?"__lodash_hash_undefined__":e,this},ca.prototype.clear=function(){this.__data__=[],this.size=0},ca.prototype.delete=function(t){var e=this.__data__,n=ba(e,t);return!(n<0||(n==e.length-1?e.pop():Ce.call(e,n,1),--this.size,0))},ca.prototype.get=function(t){var e=this.__data__,n=ba(e,t);return n<0?r:e[n][1]},ca.prototype.has=function(t){return ba(this.__data__,t)>-1},ca.prototype.set=function(t,e){var n=this.__data__,a=ba(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},la.prototype.clear=function(){this.size=0,this.__data__={hash:new ua,map:new(Yn||ca),string:new ua}},la.prototype.delete=function(t){var e=xi(this,t).delete(t);return this.size-=e?1:0,e},la.prototype.get=function(t){return xi(this,t).get(t)},la.prototype.has=function(t){return xi(this,t).has(t)},la.prototype.set=function(t,e){var n=xi(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},da.prototype.add=da.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},da.prototype.has=function(t){return this.__data__.has(t)},pa.prototype.clear=function(){this.__data__=new ca,this.size=0},pa.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},pa.prototype.get=function(t){return this.__data__.get(t)},pa.prototype.has=function(t){return this.__data__.has(t)},pa.prototype.set=function(t,e){var n=this.__data__;if(n instanceof ca){var a=n.__data__;if(!Yn||a.length<i-1)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new la(a)}return n.set(t,e),this.size=n.size,this};var Ca=Vr(Pa),Ia=Vr(Ma,!0);function Ra(t,e){var n=!0;return Ca(t,function(t,a,r){return n=!!e(t,a,r)}),n}function Na(t,e,n){for(var a=-1,i=t.length;++a<i;){var o=t[a],s=e(o);if(null!=s&&(u===r?s==s&&!vs(s):n(s,u)))var u=s,c=o}return c}function Da(t,e){var n=[];return Ca(t,function(t,a,r){e(t,a,r)&&n.push(t)}),n}function Aa(t,e,n,a,r){var i=-1,o=t.length;for(n||(n=Ii),r||(r=[]);++i<o;){var s=t[i];e>0&&n(s)?e>1?Aa(s,e-1,n,a,r):Ye(r,s):a||(r[r.length]=s)}return r}var Ea=Br(),La=Br(!0);function Pa(t,e){return t&&Ea(t,e,Ys)}function Ma(t,e){return t&&La(t,e,Ys)}function qa(t,e){return je(e,function(e){return us(t[e])})}function ja(t,e){for(var n=0,a=(e=Nr(e,t)).length;null!=t&&n<a;)t=t[Wi(e[n++])];return n&&n==a?t:r}function Fa(t,e,n){var a=e(t);return es(t)?a:Ye(a,n(t))}function za(t){return null==t?t===r?X:V:wn&&wn in Wt(t)?function(t){var e=ee.call(t,wn),n=t[wn];try{t[wn]=r;var a=!0}catch(o){}var i=re.call(t);return a&&(e?t[wn]=n:delete t[wn]),i}(t):function(t){return re.call(t)}(t)}function Ga(t,e){return t>e}function Ya(t,e){return null!=t&&ee.call(t,e)}function Ha(t,e){return null!=t&&e in Wt(t)}function Va(t,e,n){for(var i=n?ze:Fe,o=t[0].length,s=t.length,u=s,c=a(s),l=1/0,d=[];u--;){var p=t[u];u&&e&&(p=Ge(p,rn(e))),l=Mn(p.length,l),c[u]=!n&&(e||o>=120&&p.length>=120)?new da(u&&p):r}p=t[0];var f=-1,h=c[0];t:for(;++f<o&&d.length<l;){var g=p[f],m=e?e(g):g;if(g=n||0!==g?g:0,!(h?sn(h,m):i(d,m,n))){for(u=s;--u;){var b=c[u];if(!(b?sn(b,m):i(t[u],m,n)))continue t}h&&h.push(m),d.push(g)}}return d}function Ba(t,e,n){var a=null==(t=ji(t,e=Nr(e,t)))?t:t[Wi(oo(e))];return null==a?r:Le(a,t,n)}function Ua(t){return ps(t)&&za(t)==E}function Wa(t,e,n,a,i){return t===e||(null==t||null==e||!ps(t)&&!ps(e)?t!=t&&e!=e:function(t,e,n,a,i,o){var s=es(t),u=es(e),c=s?L:Oi(t),l=u?L:Oi(e),f=(c=c==E?B:c)==B,h=(l=l==E?B:l)==B,g=c==l;if(g&&is(t)){if(!is(e))return!1;s=!0,f=!1}if(g&&!f)return o||(o=new pa),s||xs(t)?pi(t,e,n,a,i,o):function(t,e,n,a,r,i,o){switch(c){case tt:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case Q:return!(t.byteLength!=e.byteLength||!i(new xe(t),new xe(e)));case M:case q:case H:return Xo(+t,+e);case F:return t.name==e.name&&t.message==e.message;case W:case $:return t==e+"";case Y:var s=hn;case K:if(s||(s=bn),t.size!=e.size&&!(a&d))return!1;var u=o.get(t);if(u)return u==e;a|=p,o.set(t,e);var l=pi(s(t),s(e),a,r,i,o);return o.delete(t),l;case Z:if(ea)return ea.call(t)==ea.call(e)}return!1}(t,e,0,n,a,i,o);if(!(n&d)){var m=f&&ee.call(t,"__wrapped__"),b=h&&ee.call(e,"__wrapped__");if(m||b){var y=m?t.value():t,v=b?e.value():e;return o||(o=new pa),i(y,v,n,a,o)}}return!!g&&(o||(o=new pa),function(t,e,n,a,i,o){var s=n&d,u=hi(t),c=u.length;if(c!=hi(e).length&&!s)return!1;for(var l=c;l--;){var p=u[l];if(!(s?p in e:ee.call(e,p)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var h=!0;o.set(t,e),o.set(e,t);for(var g=s;++l<c;){var m=t[p=u[l]],b=e[p];if(a)var y=s?a(b,m,p,e,t,o):a(m,b,p,t,e,o);if(!(y===r?m===b||i(m,b,n,a,o):y)){h=!1;break}g||(g="constructor"==p)}if(h&&!g){var v=t.constructor,x=e.constructor;v!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof x&&x instanceof x)&&(h=!1)}return o.delete(t),o.delete(e),h}(t,e,n,a,i,o))}(t,e,n,a,Wa,i))}function Ka(t,e,n,a){var i=n.length,o=i,s=!a;if(null==t)return!o;for(t=Wt(t);i--;){var u=n[i];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++i<o;){var c=(u=n[i])[0],l=t[c],f=u[1];if(s&&u[2]){if(l===r&&!(c in t))return!1}else{var h=new pa;if(a)var g=a(l,f,c,t,e,h);if(!(g===r?Wa(f,l,d|p,a,h):g))return!1}}return!0}function $a(t){return!(!ds(t)||(e=t,ae&&ae in e))&&(us(t)?ce:qt).test(Ki(t));var e}function Za(t){return"function"==typeof t?t:null==t?hu:"object"==typeof t?es(t)?er(t[0],t[1]):tr(t):wu(t)}function Xa(t){if(!Li(t))return Ln(t);var e=[];for(var n in Wt(t))ee.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Ja(t,e){return t<e}function Qa(t,e){var n=-1,r=as(t)?a(t.length):[];return Ca(t,function(t,a,i){r[++n]=e(t,a,i)}),r}function tr(t){var e=_i(t);return 1==e.length&&e[0][2]?Mi(e[0][0],e[0][1]):function(n){return n===t||Ka(n,t,e)}}function er(t,e){return Di(t)&&Pi(e)?Mi(Wi(t),e):function(n){var a=qs(n,t);return a===r&&a===e?js(n,t):Wa(e,a,d|p)}}function nr(t,e,n,a,i){t!==e&&Ea(e,function(o,s){if(i||(i=new pa),ds(o))!function(t,e,n,a,i,o,s){var u=Fi(t,n),c=Fi(e,n),l=s.get(c);if(l)ga(t,n,l);else{var d=o?o(u,c,n+"",t,e,s):r,p=d===r;if(p){var f=es(c),h=!f&&is(c),g=!f&&!h&&xs(c);d=c,f||h||g?es(u)?d=u:rs(u)?d=zr(u):h?(p=!1,d=Lr(c,!0)):g?(p=!1,d=Mr(c,!0)):d=[]:gs(c)||ts(c)?(d=u,ts(u)?d=Is(u):ds(u)&&!us(u)||(d=Ci(c))):p=!1}p&&(s.set(c,d),i(d,c,a,o,s),s.delete(c)),ga(t,n,d)}}(t,e,s,n,nr,a,i);else{var u=a?a(Fi(t,s),o,s+"",t,e,i):r;u===r&&(u=o),ga(t,s,u)}},Hs)}function ar(t,e){var n=t.length;if(n)return Ri(e+=e<0?n:0,n)?t[e]:r}function rr(t,e,n){var a=-1;return e=Ge(e.length?e:[hu],rn(vi())),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,o=r.length,s=n.length;++a<o;){var u=qr(r[a],i[a]);if(u)return a>=s?u:u*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)});a--;)t[a]=t[a].value;return t}(Qa(t,function(t,n,r){return{criteria:Ge(e,function(e){return e(t)}),index:++a,value:t}}))}function ir(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var o=e[a],s=ja(t,o);n(s,o)&&dr(i,Nr(o,t),s)}return i}function or(t,e,n,a){var r=a?Ze:$e,i=-1,o=e.length,s=t;for(t===e&&(e=zr(e)),n&&(s=Ge(t,rn(n)));++i<o;)for(var u=0,c=e[i],l=n?n(c):c;(u=r(s,l,u,a))>-1;)s!==t&&Ce.call(s,u,1),Ce.call(t,u,1);return t}function sr(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)?Ce.call(t,r,1):Tr(t,r)}}return t}function ur(t,e){return t+Rn(Fn()*(e-t+1))}function cr(t,e){var n="";if(!t||e<1||e>k)return n;do{e%2&&(n+=t),(e=Rn(e/2))&&(t+=t)}while(e);return n}function lr(t,e){return Yi(qi(t,e,hu),t+"")}function dr(t,e,n,a){if(!ds(t))return t;for(var i=-1,o=(e=Nr(e,t)).length,s=o-1,u=t;null!=u&&++i<o;){var c=Wi(e[i]),l=n;if(i!=s){var d=u[c];(l=a?a(d,c,u):r)===r&&(l=ds(d)?d:Ri(e[i+1])?[]:{})}ma(u,c,l),u=u[c]}return t}var pr=Wn?function(t,e){return Wn.set(t,e),t}:hu,fr=Sn?function(t,e){return Sn(t,"toString",{configurable:!0,enumerable:!1,value:du(e),writable:!0})}:hu;function hr(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 o=a(i);++r<i;)o[r]=t[r+e];return o}function gr(t,e){var n;return Ca(t,function(t,a,r){return!(n=e(t,a,r))}),!!n}function mr(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=D){for(;a<r;){var i=a+r>>>1,o=t[i];null!==o&&!vs(o)&&(n?o<=e:o<e)?a=i+1:r=i}return r}return br(t,e,hu,n)}function br(t,e,n,a){e=n(e);for(var i=0,o=null==t?0:t.length,s=e!=e,u=null===e,c=vs(e),l=e===r;i<o;){var d=Rn((i+o)/2),p=n(t[d]),f=p!==r,h=null===p,g=p==p,m=vs(p);if(s)var b=a||g;else b=l?g&&(a||f):u?g&&f&&(a||!h):c?g&&f&&!h&&(a||!m):!h&&!m&&(a?p<=e:p<e);b?i=d+1:o=d}return Mn(o,N)}function yr(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var o=t[n],s=e?e(o):o;if(!n||!Xo(s,u)){var u=s;i[r++]=0===o?0:o}}return i}function vr(t){return"number"==typeof t?t:vs(t)?I:+t}function xr(t){if("string"==typeof t)return t;if(es(t))return Ge(t,xr)+"";if(vs(t))return na?na.call(t):"";var e=t+"";return"0"==e&&1/t==-O?"-0":e}function _r(t,e,n){var a=-1,r=Fe,o=t.length,s=!0,u=[],c=u;if(n)s=!1,r=ze;else if(o>=i){var l=e?null:oi(t);if(l)return bn(l);s=!1,r=sn,c=new da}else c=e?[]:u;t:for(;++a<o;){var d=t[a],p=e?e(d):d;if(d=n||0!==d?d:0,s&&p==p){for(var f=c.length;f--;)if(c[f]===p)continue t;e&&c.push(p),u.push(d)}else r(c,p,n)||(c!==u&&c.push(p),u.push(d))}return u}function Tr(t,e){return null==(t=ji(t,e=Nr(e,t)))||delete t[Wi(oo(e))]}function wr(t,e,n,a){return dr(t,e,n(ja(t,e)),a)}function Sr(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?hr(t,a?0:i,a?i+1:r):hr(t,a?i+1:0,a?r:i)}function Or(t,e){var n=t;return n instanceof sa&&(n=n.value()),He(e,function(t,e){return e.func.apply(e.thisArg,Ye([t],e.args))},n)}function kr(t,e,n){var r=t.length;if(r<2)return r?_r(t[0]):[];for(var i=-1,o=a(r);++i<r;)for(var s=t[i],u=-1;++u<r;)u!=i&&(o[i]=ka(o[i]||s,t[u],e,n));return _r(Aa(o,1),e,n)}function Cr(t,e,n){for(var a=-1,i=t.length,o=e.length,s={};++a<i;)n(s,t[a],a<o?e[a]:r);return s}function Ir(t){return rs(t)?t:[]}function Rr(t){return"function"==typeof t?t:hu}function Nr(t,e){return es(t)?t:Di(t,e)?[t]:Ui(Rs(t))}var Dr=lr;function Ar(t,e,n){var a=t.length;return n=n===r?a:n,!e&&n>=a?t:hr(t,e,n)}var Er=On||function(t){return Te.clearTimeout(t)};function Lr(t,e){if(e)return t.slice();var n=t.length,a=_e?_e(n):new t.constructor(n);return t.copy(a),a}function Pr(t){var e=new t.constructor(t.byteLength);return new xe(e).set(new xe(t)),e}function Mr(t,e){var n=e?Pr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function qr(t,e){if(t!==e){var n=t!==r,a=null===t,i=t==t,o=vs(t),s=e!==r,u=null===e,c=e==e,l=vs(e);if(!u&&!l&&!o&&t>e||o&&s&&c&&!u&&!l||a&&s&&c||!n&&c||!i)return 1;if(!a&&!o&&!l&&t<e||l&&n&&i&&!a&&!o||u&&n&&i||!s&&i||!c)return-1}return 0}function jr(t,e,n,r){for(var i=-1,o=t.length,s=n.length,u=-1,c=e.length,l=Pn(o-s,0),d=a(c+l),p=!r;++u<c;)d[u]=e[u];for(;++i<s;)(p||i<o)&&(d[n[i]]=t[i]);for(;l--;)d[u++]=t[i++];return d}function Fr(t,e,n,r){for(var i=-1,o=t.length,s=-1,u=n.length,c=-1,l=e.length,d=Pn(o-u,0),p=a(d+l),f=!r;++i<d;)p[i]=t[i];for(var h=i;++c<l;)p[h+c]=e[c];for(;++s<u;)(f||i<o)&&(p[h+n[s]]=t[i++]);return p}function zr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function Gr(t,e,n,a){var i=!n;n||(n={});for(var o=-1,s=e.length;++o<s;){var u=e[o],c=a?a(n[u],t[u],u,n,t):r;c===r&&(c=t[u]),i?xa(n,u,c):ma(n,u,c)}return n}function Yr(t,e){return function(n,a){var r=es(n)?Pe:ya,i=e?e():{};return r(n,t,vi(a,2),i)}}function Hr(t){return lr(function(e,n){var a=-1,i=n.length,o=i>1?n[i-1]:r,s=i>2?n[2]:r;for(o=t.length>3&&"function"==typeof o?(i--,o):r,s&&Ni(n[0],n[1],s)&&(o=i<3?r:o,i=1),e=Wt(e);++a<i;){var u=n[a];u&&t(e,u,a,o)}return e})}function Vr(t,e){return function(n,a){if(null==n)return n;if(!as(n))return t(n,a);for(var r=n.length,i=e?r:-1,o=Wt(n);(e?i--:++i<r)&&!1!==a(o[i],i,o););return n}}function Br(t){return function(e,n,a){for(var r=-1,i=Wt(e),o=a(e),s=o.length;s--;){var u=o[t?s:++r];if(!1===n(i[u],u,i))break}return e}}function Ur(t){return function(e){var n=fn(e=Rs(e))?xn(e):r,a=n?n[0]:e.charAt(0),i=n?Ar(n,1).join(""):e.slice(1);return a[t]()+i}}function Wr(t){return function(e){return He(uu(tu(e).replace(se,"")),t,"")}}function Kr(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=ra(t.prototype),a=t.apply(n,e);return ds(a)?a:n}}function $r(t){return function(e,n,a){var i=Wt(e);if(!as(e)){var o=vi(n,3);e=Ys(e),n=function(t){return o(i[t],t,i)}}var s=t(e,n,a);return s>-1?i[o?e[s]:s]:r}}function Zr(t){return fi(function(e){var n=e.length,a=n,i=oa.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new Zt(o);if(i&&!u&&"wrapper"==bi(s))var u=new oa([],!0)}for(a=u?a:n;++a<n;){var c=bi(s=e[a]),l="wrapper"==c?mi(s):r;u=l&&Ai(l[0])&&l[1]==(x|m|y|_)&&!l[4].length&&1==l[9]?u[bi(l[0])].apply(u,l[3]):1==s.length&&Ai(s)?u[c]():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 Xr(t,e,n,i,o,s,u,c,l,d){var p=e&x,g=e&f,y=e&h,v=e&(m|b),_=e&T,w=y?r:Kr(t);return function f(){for(var h=arguments.length,m=a(h),b=h;b--;)m[b]=arguments[b];if(v)var x=yi(f),T=function(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}(m,x);if(i&&(m=jr(m,i,o,v)),s&&(m=Fr(m,s,u,v)),h-=T,v&&h<d){var S=mn(m,x);return ri(t,e,Xr,f.placeholder,n,m,S,c,l,d-h)}var O=g?n:this,k=y?O[t]:t;return h=m.length,c?m=function(t,e){for(var n=t.length,a=Mn(e.length,n),i=zr(t);a--;){var o=e[a];t[a]=Ri(o,n)?i[o]:r}return t}(m,c):_&&h>1&&m.reverse(),p&&l<h&&(m.length=l),this&&this!==Te&&this instanceof f&&(k=w||Kr(k)),k.apply(O,m)}}function Jr(t,e){return function(n,a){return function(t,e,n,a){return Pa(t,function(t,r,i){e(a,n(t),r,i)}),a}(n,t,e(a),{})}}function Qr(t,e){return function(n,a){var i;if(n===r&&a===r)return e;if(n!==r&&(i=n),a!==r){if(i===r)return a;"string"==typeof n||"string"==typeof a?(n=xr(n),a=xr(a)):(n=vr(n),a=vr(a)),i=t(n,a)}return i}}function ti(t){return fi(function(e){return e=Ge(e,rn(vi())),lr(function(n){var a=this;return t(e,function(t){return Le(t,a,n)})})})}function ei(t,e){var n=(e=e===r?" ":xr(e)).length;if(n<2)return n?cr(e,t):e;var a=cr(e,In(t/vn(e)));return fn(e)?Ar(xn(a),0,t).join(""):a.slice(0,t)}function ni(t){return function(e,n,i){return i&&"number"!=typeof i&&Ni(e,n,i)&&(n=i=r),e=Ss(e),n===r?(n=e,e=0):n=Ss(n),function(t,e,n,r){for(var i=-1,o=Pn(In((e-t)/(n||1)),0),s=a(o);o--;)s[r?o:++i]=t,t+=n;return s}(e,n,i=i===r?e<n?1:-1:Ss(i),t)}}function ai(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Cs(e),n=Cs(n)),t(e,n)}}function ri(t,e,n,a,i,o,s,u,c,l){var d=e&m;e|=d?y:v,(e&=~(d?v:y))&g||(e&=~(f|h));var p=[t,e,i,d?o:r,d?s:r,d?r:o,d?r:s,u,c,l],b=n.apply(r,p);return Ai(t)&&zi(b,p),b.placeholder=a,Hi(b,t,e)}function ii(t){var e=Ut[t];return function(t,n){if(t=Cs(t),(n=null==n?0:Mn(Os(n),292))&&An(t)){var a=(Rs(t)+"e").split("e");return+((a=(Rs(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var oi=Vn&&1/bn(new Vn([,-0]))[1]==O?function(t){return new Vn(t)}:vu;function si(t){return function(e){var n=Oi(e);return n==Y?hn(e):n==K?yn(e):function(t,e){return Ge(e,function(e){return[e,t[e]]})}(e,t(e))}}function ui(t,e,n,i,u,c,l,d){var p=e&h;if(!p&&"function"!=typeof t)throw new Zt(o);var T=i?i.length:0;if(T||(e&=~(y|v),i=u=r),l=l===r?l:Pn(Os(l),0),d=d===r?d:Os(d),T-=u?u.length:0,e&v){var w=i,S=u;i=u=r}var O=p?r:mi(t),k=[t,e,n,i,u,w,S,c,l,d];if(O&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<(f|h|x)||a==x&&n==m||a==x&&n==_&&t[7].length<=e[8]||a==(x|_)&&e[7].length<=e[8]&&n==m))return t;a&f&&(t[2]=e[2],r|=n&f?0:g);var i=e[3];if(i){var o=t[3];t[3]=o?jr(o,i,e[4]):i,t[4]=o?mn(t[3],s):e[4]}(i=e[5])&&(t[5]=(o=t[5])?Fr(o,i,e[6]):i,t[6]=o?mn(t[5],s):e[6]),(i=e[7])&&(t[7]=i),a&x&&(t[8]=null==t[8]?e[8]:Mn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(k,O),t=k[0],e=k[1],n=k[2],i=k[3],u=k[4],!(d=k[9]=k[9]===r?p?0:t.length:Pn(k[9]-T,0))&&e&(m|b)&&(e&=~(m|b)),e&&e!=f)C=e==m||e==b?function(t,e,n){var i=Kr(t);return function o(){for(var s=arguments.length,u=a(s),c=s,l=yi(o);c--;)u[c]=arguments[c];var d=s<3&&u[0]!==l&&u[s-1]!==l?[]:mn(u,l);return(s-=d.length)<n?ri(t,e,Xr,o.placeholder,r,u,d,r,r,n-s):Le(this&&this!==Te&&this instanceof o?i:t,this,u)}}(t,e,d):e!=y&&e!=(f|y)||u.length?Xr.apply(r,k):function(t,e,n,r){var i=e&f,o=Kr(t);return function e(){for(var s=-1,u=arguments.length,c=-1,l=r.length,d=a(l+u),p=this&&this!==Te&&this instanceof e?o:t;++c<l;)d[c]=r[c];for(;u--;)d[c++]=arguments[++s];return Le(p,i?n:this,d)}}(t,e,n,i);else var C=function(t,e,n){var a=e&f,r=Kr(t);return function e(){return(this&&this!==Te&&this instanceof e?r:t).apply(a?n:this,arguments)}}(t,e,n);return Hi((O?pr:zi)(C,k),t,e)}function ci(t,e,n,a){return t===r||Xo(t,Jt[n])&&!ee.call(a,n)?e:t}function li(t,e,n,a,i,o){return ds(t)&&ds(e)&&(o.set(e,t),nr(t,e,r,li,o),o.delete(e)),t}function di(t){return gs(t)?r:t}function pi(t,e,n,a,i,o){var s=n&d,u=t.length,c=e.length;if(u!=c&&!(s&&c>u))return!1;var l=o.get(t);if(l&&o.get(e))return l==e;var f=-1,h=!0,g=n&p?new da:r;for(o.set(t,e),o.set(e,t);++f<u;){var m=t[f],b=e[f];if(a)var y=s?a(b,m,f,e,t,o):a(m,b,f,t,e,o);if(y!==r){if(y)continue;h=!1;break}if(g){if(!Be(e,function(t,e){if(!sn(g,e)&&(m===t||i(m,t,n,a,o)))return g.push(e)})){h=!1;break}}else if(m!==b&&!i(m,b,n,a,o)){h=!1;break}}return o.delete(t),o.delete(e),h}function fi(t){return Yi(qi(t,r,eo),t+"")}function hi(t){return Fa(t,Ys,wi)}function gi(t){return Fa(t,Hs,Si)}var mi=Wn?function(t){return Wn.get(t)}:vu;function bi(t){for(var e=t.name+"",n=Kn[e],a=ee.call(Kn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function yi(t){return(ee.call(aa,"placeholder")?aa:t).placeholder}function vi(){var t=aa.iteratee||gu;return t=t===gu?Za:t,arguments.length?t(arguments[0],arguments[1]):t}function xi(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 _i(t){for(var e=Ys(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,Pi(r)]}return e}function Ti(t,e){var n=function(t,e){return null==t?r:t[e]}(t,e);return $a(n)?n:r}var wi=Nn?function(t){return null==t?[]:(t=Wt(t),je(Nn(t),function(e){return ke.call(t,e)}))}:ku,Si=Nn?function(t){for(var e=[];t;)Ye(e,wi(t)),t=we(t);return e}:ku,Oi=za;function ki(t,e,n){for(var a=-1,r=(e=Nr(e,t)).length,i=!1;++a<r;){var o=Wi(e[a]);if(!(i=null!=t&&n(t,o)))break;t=t[o]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&ls(r)&&Ri(o,r)&&(es(t)||ts(t))}function Ci(t){return"function"!=typeof t.constructor||Li(t)?{}:ra(we(t))}function Ii(t){return es(t)||ts(t)||!!(Ue&&t&&t[Ue])}function Ri(t,e){var n=typeof t;return!!(e=null==e?k:e)&&("number"==n||"symbol"!=n&&Ft.test(t))&&t>-1&&t%1==0&&t<e}function Ni(t,e,n){if(!ds(n))return!1;var a=typeof e;return!!("number"==a?as(n)&&Ri(e,n.length):"string"==a&&e in n)&&Xo(n[e],t)}function Di(t,e){if(es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!vs(t))||_t.test(t)||!xt.test(t)||null!=e&&t in Wt(e)}function Ai(t){var e=bi(t),n=aa[e];if("function"!=typeof n||!(e in sa.prototype))return!1;if(t===n)return!0;var a=mi(n);return!!a&&t===a[0]}(Gn&&Oi(new Gn(new ArrayBuffer(1)))!=tt||Yn&&Oi(new Yn)!=Y||Hn&&"[object Promise]"!=Oi(Hn.resolve())||Vn&&Oi(new Vn)!=K||Bn&&Oi(new Bn)!=J)&&(Oi=function(t){var e=za(t),n=e==B?t.constructor:r,a=n?Ki(n):"";if(a)switch(a){case $n:return tt;case Zn:return Y;case Xn:return"[object Promise]";case Jn:return K;case Qn:return J}return e});var Ei=Qt?us:Cu;function Li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Jt)}function Pi(t){return t==t&&!ds(t)}function Mi(t,e){return function(n){return null!=n&&n[t]===e&&(e!==r||t in Wt(n))}}function qi(t,e,n){return e=Pn(e===r?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Pn(r.length-e,0),s=a(o);++i<o;)s[i]=r[e+i];i=-1;for(var u=a(e+1);++i<e;)u[i]=r[i];return u[e]=n(s),Le(t,this,u)}}function ji(t,e){return e.length<2?t:ja(t,hr(e,0,-1))}function Fi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var zi=Vi(pr),Gi=Cn||function(t,e){return Te.setTimeout(t,e)},Yi=Vi(fr);function Hi(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(It,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return Me(A,function(n){var a="_."+n[0];e&n[1]&&!Fe(t,a)&&t.push(a)}),t.sort()}(function(t){var e=t.match(Rt);return e?e[1].split(Nt):[]}(a),n)))}function Vi(t){var e=0,n=0;return function(){var a=qn(),i=S-(a-n);if(n=a,i>0){if(++e>=w)return arguments[0]}else e=0;return t.apply(r,arguments)}}function Bi(t,e){var n=-1,a=t.length,i=a-1;for(e=e===r?a:e;++n<e;){var o=ur(n,i),s=t[o];t[o]=t[n],t[n]=s}return t.length=e,t}var Ui=function(t){var e=Bo(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Tt,function(t,n,a,r){e.push(a?r.replace(At,"$1"):n||t)}),e},function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}();function Wi(t){if("string"==typeof t||vs(t))return t;var e=t+"";return"0"==e&&1/t==-O?"-0":e}function Ki(t){if(null!=t){try{return te.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function $i(t){if(t instanceof sa)return t.clone();var e=new oa(t.__wrapped__,t.__chain__);return e.__actions__=zr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Zi=lr(function(t,e){return rs(t)?ka(t,Aa(e,1,rs,!0)):[]}),Xi=lr(function(t,e){var n=oo(e);return rs(n)&&(n=r),rs(t)?ka(t,Aa(e,1,rs,!0),vi(n,2)):[]}),Ji=lr(function(t,e){var n=oo(e);return rs(n)&&(n=r),rs(t)?ka(t,Aa(e,1,rs,!0),r,n):[]});function Qi(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:Os(n);return r<0&&(r=Pn(a+r,0)),Ke(t,vi(e,3),r)}function to(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var i=a-1;return n!==r&&(i=Os(n),i=n<0?Pn(a+i,0):Mn(i,a-1)),Ke(t,vi(e,3),i,!0)}function eo(t){return null!=t&&t.length?Aa(t,1):[]}function no(t){return t&&t.length?t[0]:r}var ao=lr(function(t){var e=Ge(t,Ir);return e.length&&e[0]===t[0]?Va(e):[]}),ro=lr(function(t){var e=oo(t),n=Ge(t,Ir);return e===oo(n)?e=r:n.pop(),n.length&&n[0]===t[0]?Va(n,vi(e,2)):[]}),io=lr(function(t){var e=oo(t),n=Ge(t,Ir);return(e="function"==typeof e?e:r)&&n.pop(),n.length&&n[0]===t[0]?Va(n,r,e):[]});function oo(t){var e=null==t?0:t.length;return e?t[e-1]:r}var so=lr(uo);function uo(t,e){return t&&t.length&&e&&e.length?or(t,e):t}var co=fi(function(t,e){var n=null==t?0:t.length,a=_a(t,e);return sr(t,Ge(e,function(t){return Ri(t,n)?+t:t}).sort(qr)),a});function lo(t){return null==t?t:zn.call(t)}var po=lr(function(t){return _r(Aa(t,1,rs,!0))}),fo=lr(function(t){var e=oo(t);return rs(e)&&(e=r),_r(Aa(t,1,rs,!0),vi(e,2))}),ho=lr(function(t){var e=oo(t);return e="function"==typeof e?e:r,_r(Aa(t,1,rs,!0),r,e)});function go(t){if(!t||!t.length)return[];var e=0;return t=je(t,function(t){if(rs(t))return e=Pn(t.length,e),!0}),an(e,function(e){return Ge(t,Qe(e))})}function mo(t,e){if(!t||!t.length)return[];var n=go(t);return null==e?n:Ge(n,function(t){return Le(e,r,t)})}var bo=lr(function(t,e){return rs(t)?ka(t,e):[]}),yo=lr(function(t){return kr(je(t,rs))}),vo=lr(function(t){var e=oo(t);return rs(e)&&(e=r),kr(je(t,rs),vi(e,2))}),xo=lr(function(t){var e=oo(t);return e="function"==typeof e?e:r,kr(je(t,rs),r,e)}),_o=lr(go),To=lr(function(t){var e=t.length,n=e>1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,mo(t,n)});function wo(t){var e=aa(t);return e.__chain__=!0,e}function So(t,e){return e(t)}var Oo=fi(function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,i=function(e){return _a(e,t)};return!(e>1||this.__actions__.length)&&a instanceof sa&&Ri(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:So,args:[i],thisArg:r}),new oa(a,this.__chain__).thru(function(t){return e&&!t.length&&t.push(r),t})):this.thru(i)}),ko=Yr(function(t,e,n){ee.call(t,n)?++t[n]:xa(t,n,1)}),Co=$r(Qi),Io=$r(to);function Ro(t,e){return(es(t)?Me:Ca)(t,vi(e,3))}function No(t,e){return(es(t)?function(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}:Ia)(t,vi(e,3))}var Do=Yr(function(t,e,n){ee.call(t,n)?t[n].push(e):xa(t,n,[e])}),Ao=lr(function(t,e,n){var r=-1,i="function"==typeof e,o=as(t)?a(t.length):[];return Ca(t,function(t){o[++r]=i?Le(e,t,n):Ba(t,e,n)}),o}),Eo=Yr(function(t,e,n){xa(t,n,e)});function Lo(t,e){return(es(t)?Ge:Qa)(t,vi(e,3))}var Po=Yr(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),Mo=lr(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ni(t,e[0],e[1])?e=[]:n>2&&Ni(e[0],e[1],e[2])&&(e=[e[0]]),rr(t,Aa(e,1),[])}),qo=kn||function(){return Te.Date.now()};function jo(t,e,n){return e=n?r:e,ui(t,x,r,r,r,r,e=t&&null==e?t.length:e)}function Fo(t,e){var n;if("function"!=typeof e)throw new Zt(o);return t=Os(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var zo=lr(function(t,e,n){var a=f;if(n.length){var r=mn(n,yi(zo));a|=y}return ui(t,a,e,n,r)}),Go=lr(function(t,e,n){var a=f|h;if(n.length){var r=mn(n,yi(Go));a|=y}return ui(e,a,t,n,r)});function Yo(t,e,n){var a,i,s,u,c,l,d=0,p=!1,f=!1,h=!0;if("function"!=typeof t)throw new Zt(o);function g(e){var n=a,o=i;return a=i=r,d=e,u=t.apply(o,n)}function m(t){var n=t-l;return l===r||n>=e||n<0||f&&t-d>=s}function b(){var t=qo();if(m(t))return y(t);c=Gi(b,function(t){var n=e-(t-l);return f?Mn(n,s-(t-d)):n}(t))}function y(t){return c=r,h&&a?g(t):(a=i=r,u)}function v(){var t=qo(),n=m(t);if(a=arguments,i=this,l=t,n){if(c===r)return function(t){return d=t,c=Gi(b,e),p?g(t):u}(l);if(f)return Er(c),c=Gi(b,e),g(l)}return c===r&&(c=Gi(b,e)),u}return e=Cs(e)||0,ds(n)&&(p=!!n.leading,s=(f="maxWait"in n)?Pn(Cs(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){c!==r&&Er(c),d=0,a=l=i=c=r},v.flush=function(){return c===r?u:y(qo())},v}var Ho=lr(function(t,e){return Oa(t,1,e)}),Vo=lr(function(t,e,n){return Oa(t,Cs(e)||0,n)});function Bo(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Zt(o);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 o=t.apply(this,a);return n.cache=i.set(r,o)||i,o};return n.cache=new(Bo.Cache||la),n}function Uo(t){if("function"!=typeof t)throw new Zt(o);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)}}Bo.Cache=la;var Wo=Dr(function(t,e){var n=(e=1==e.length&&es(e[0])?Ge(e[0],rn(vi())):Ge(Aa(e,1),rn(vi()))).length;return lr(function(a){for(var r=-1,i=Mn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return Le(t,this,a)})}),Ko=lr(function(t,e){var n=mn(e,yi(Ko));return ui(t,y,r,e,n)}),$o=lr(function(t,e){var n=mn(e,yi($o));return ui(t,v,r,e,n)}),Zo=fi(function(t,e){return ui(t,_,r,r,r,e)});function Xo(t,e){return t===e||t!=t&&e!=e}var Jo=ai(Ga),Qo=ai(function(t,e){return t>=e}),ts=Ua(function(){return arguments}())?Ua:function(t){return ps(t)&&ee.call(t,"callee")&&!ke.call(t,"callee")},es=a.isArray,ns=Ie?rn(Ie):function(t){return ps(t)&&za(t)==Q};function as(t){return null!=t&&ls(t.length)&&!us(t)}function rs(t){return ps(t)&&as(t)}var is=Dn||Cu,os=Re?rn(Re):function(t){return ps(t)&&za(t)==q};function ss(t){if(!ps(t))return!1;var e=za(t);return e==F||e==j||"string"==typeof t.message&&"string"==typeof t.name&&!gs(t)}function us(t){if(!ds(t))return!1;var e=za(t);return e==z||e==G||e==P||e==U}function cs(t){return"number"==typeof t&&t==Os(t)}function ls(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=k}function ds(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ps(t){return null!=t&&"object"==typeof t}var fs=Ne?rn(Ne):function(t){return ps(t)&&Oi(t)==Y};function hs(t){return"number"==typeof t||ps(t)&&za(t)==H}function gs(t){if(!ps(t)||za(t)!=B)return!1;var e=we(t);if(null===e)return!0;var n=ee.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&te.call(n)==ie}var ms=De?rn(De):function(t){return ps(t)&&za(t)==W},bs=Ae?rn(Ae):function(t){return ps(t)&&Oi(t)==K};function ys(t){return"string"==typeof t||!es(t)&&ps(t)&&za(t)==$}function vs(t){return"symbol"==typeof t||ps(t)&&za(t)==Z}var xs=Ee?rn(Ee):function(t){return ps(t)&&ls(t.length)&&!!ge[za(t)]},_s=ai(Ja),Ts=ai(function(t,e){return t<=e});function ws(t){if(!t)return[];if(as(t))return ys(t)?xn(t):zr(t);if(tn&&t[tn])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[tn]());var e=Oi(t);return(e==Y?hn:e==K?bn:Xs)(t)}function Ss(t){return t?(t=Cs(t))===O||t===-O?(t<0?-1:1)*C:t==t?t:0:0===t?t:0}function Os(t){var e=Ss(t),n=e%1;return e==e?n?e-n:e:0}function ks(t){return t?Ta(Os(t),0,R):0}function Cs(t){if("number"==typeof t)return t;if(vs(t))return I;if(ds(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ds(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Ot,"");var n=Mt.test(t);return n||jt.test(t)?ve(t.slice(2),n?2:8):Pt.test(t)?I:+t}function Is(t){return Gr(t,Hs(t))}function Rs(t){return null==t?"":xr(t)}var Ns=Hr(function(t,e){if(Li(e)||as(e))Gr(e,Ys(e),t);else for(var n in e)ee.call(e,n)&&ma(t,n,e[n])}),Ds=Hr(function(t,e){Gr(e,Hs(e),t)}),As=Hr(function(t,e,n,a){Gr(e,Hs(e),t,a)}),Es=Hr(function(t,e,n,a){Gr(e,Ys(e),t,a)}),Ls=fi(_a),Ps=lr(function(t,e){t=Wt(t);var n=-1,a=e.length,i=a>2?e[2]:r;for(i&&Ni(e[0],e[1],i)&&(a=1);++n<a;)for(var o=e[n],s=Hs(o),u=-1,c=s.length;++u<c;){var l=s[u],d=t[l];(d===r||Xo(d,Jt[l])&&!ee.call(t,l))&&(t[l]=o[l])}return t}),Ms=lr(function(t){return t.push(r,li),Le(Bs,r,t)});function qs(t,e,n){var a=null==t?r:ja(t,e);return a===r?n:a}function js(t,e){return null!=t&&ki(t,e,Ha)}var Fs=Jr(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=re.call(e)),t[e]=n},du(hu)),zs=Jr(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=re.call(e)),ee.call(t,e)?t[e].push(n):t[e]=[n]},vi),Gs=lr(Ba);function Ys(t){return as(t)?fa(t):Xa(t)}function Hs(t){return as(t)?fa(t,!0):function(t){if(!ds(t))return function(t){var e=[];if(null!=t)for(var n in Wt(t))e.push(n);return e}(t);var e=Li(t),n=[];for(var a in t)("constructor"!=a||!e&&ee.call(t,a))&&n.push(a);return n}(t)}var Vs=Hr(function(t,e,n){nr(t,e,n)}),Bs=Hr(function(t,e,n,a){nr(t,e,n,a)}),Us=fi(function(t,e){var n={};if(null==t)return n;var a=!1;e=Ge(e,function(e){return e=Nr(e,t),a||(a=e.length>1),e}),Gr(t,gi(t),n),a&&(n=wa(n,u|c|l,di));for(var r=e.length;r--;)Tr(n,e[r]);return n}),Ws=fi(function(t,e){return null==t?{}:function(t,e){return ir(t,e,function(e,n){return js(t,n)})}(t,e)});function Ks(t,e){if(null==t)return{};var n=Ge(gi(t),function(t){return[t]});return e=vi(e),ir(t,n,function(t,n){return e(t,n[0])})}var $s=si(Ys),Zs=si(Hs);function Xs(t){return null==t?[]:on(t,Ys(t))}var Js=Wr(function(t,e,n){return e=e.toLowerCase(),t+(n?Qs(e):e)});function Qs(t){return su(Rs(t).toLowerCase())}function tu(t){return(t=Rs(t))&&t.replace(zt,ln).replace(ue,"")}var eu=Wr(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),nu=Wr(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),au=Ur("toLowerCase"),ru=Wr(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),iu=Wr(function(t,e,n){return t+(n?" ":"")+su(e)}),ou=Wr(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),su=Ur("toUpperCase");function uu(t,e,n){return t=Rs(t),(e=n?r:e)===r?function(t){return pe.test(t)}(t)?function(t){return t.match(le)||[]}(t):function(t){return t.match(Dt)||[]}(t):t.match(e)||[]}var cu=lr(function(t,e){try{return Le(t,r,e)}catch(n){return ss(n)?n:new Vt(n)}}),lu=fi(function(t,e){return Me(e,function(e){e=Wi(e),xa(t,e,zo(t[e],t))}),t});function du(t){return function(){return t}}var pu=Zr(),fu=Zr(!0);function hu(t){return t}function gu(t){return Za("function"==typeof t?t:wa(t,u))}var mu=lr(function(t,e){return function(n){return Ba(n,t,e)}}),bu=lr(function(t,e){return function(n){return Ba(t,n,e)}});function yu(t,e,n){var a=Ys(e),r=qa(e,a);null!=n||ds(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=qa(e,Ys(e)));var i=!(ds(n)&&"chain"in n&&!n.chain),o=us(t);return Me(r,function(n){var a=e[n];t[n]=a,o&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__);return(n.__actions__=zr(this.__actions__)).push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,Ye([this.value()],arguments))})}),t}function vu(){}var xu=ti(Ge),_u=ti(qe),Tu=ti(Be);function wu(t){return Di(t)?Qe(Wi(t)):function(t){return function(e){return ja(e,t)}}(t)}var Su=ni(),Ou=ni(!0);function ku(){return[]}function Cu(){return!1}var Iu,Ru=Qr(function(t,e){return t+e},0),Nu=ii("ceil"),Du=Qr(function(t,e){return t/e},1),Au=ii("floor"),Eu=Qr(function(t,e){return t*e},1),Lu=ii("round"),Pu=Qr(function(t,e){return t-e},0);return aa.after=function(t,e){if("function"!=typeof e)throw new Zt(o);return t=Os(t),function(){if(--t<1)return e.apply(this,arguments)}},aa.ary=jo,aa.assign=Ns,aa.assignIn=Ds,aa.assignInWith=As,aa.assignWith=Es,aa.at=Ls,aa.before=Fo,aa.bind=zo,aa.bindAll=lu,aa.bindKey=Go,aa.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return es(t)?t:[t]},aa.chain=wo,aa.chunk=function(t,e,n){e=(n?Ni(t,e,n):e===r)?1:Pn(Os(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,u=a(In(i/e));o<i;)u[s++]=hr(t,o,o+=e);return u},aa.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},aa.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 Ye(es(n)?zr(n):[n],Aa(e,1))},aa.cond=function(t){var e=null==t?0:t.length,n=vi();return t=e?Ge(t,function(t){if("function"!=typeof t[1])throw new Zt(o);return[n(t[0]),t[1]]}):[],lr(function(n){for(var a=-1;++a<e;){var r=t[a];if(Le(r[0],this,n))return Le(r[1],this,n)}})},aa.conforms=function(t){return function(t){var e=Ys(t);return function(n){return Sa(n,t,e)}}(wa(t,u))},aa.constant=du,aa.countBy=ko,aa.create=function(t,e){var n=ra(t);return null==e?n:va(n,e)},aa.curry=function t(e,n,a){var i=ui(e,m,r,r,r,r,r,n=a?r:n);return i.placeholder=t.placeholder,i},aa.curryRight=function t(e,n,a){var i=ui(e,b,r,r,r,r,r,n=a?r:n);return i.placeholder=t.placeholder,i},aa.debounce=Yo,aa.defaults=Ps,aa.defaultsDeep=Ms,aa.defer=Ho,aa.delay=Vo,aa.difference=Zi,aa.differenceBy=Xi,aa.differenceWith=Ji,aa.drop=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,(e=n||e===r?1:Os(e))<0?0:e,a):[]},aa.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,0,(e=a-(e=n||e===r?1:Os(e)))<0?0:e):[]},aa.dropRightWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!0,!0):[]},aa.dropWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!0):[]},aa.fill=function(t,e,n,a){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Ni(t,e,n)&&(n=0,a=i),function(t,e,n,a){var i=t.length;for((n=Os(n))<0&&(n=-n>i?0:i+n),(a=a===r||a>i?i:Os(a))<0&&(a+=i),a=n>a?0:ks(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},aa.filter=function(t,e){return(es(t)?je:Da)(t,vi(e,3))},aa.flatMap=function(t,e){return Aa(Lo(t,e),1)},aa.flatMapDeep=function(t,e){return Aa(Lo(t,e),O)},aa.flatMapDepth=function(t,e,n){return n=n===r?1:Os(n),Aa(Lo(t,e),n)},aa.flatten=eo,aa.flattenDeep=function(t){return null!=t&&t.length?Aa(t,O):[]},aa.flattenDepth=function(t,e){return null!=t&&t.length?Aa(t,e=e===r?1:Os(e)):[]},aa.flip=function(t){return ui(t,T)},aa.flow=pu,aa.flowRight=fu,aa.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},aa.functions=function(t){return null==t?[]:qa(t,Ys(t))},aa.functionsIn=function(t){return null==t?[]:qa(t,Hs(t))},aa.groupBy=Do,aa.initial=function(t){return null!=t&&t.length?hr(t,0,-1):[]},aa.intersection=ao,aa.intersectionBy=ro,aa.intersectionWith=io,aa.invert=Fs,aa.invertBy=zs,aa.invokeMap=Ao,aa.iteratee=gu,aa.keyBy=Eo,aa.keys=Ys,aa.keysIn=Hs,aa.map=Lo,aa.mapKeys=function(t,e){var n={};return e=vi(e,3),Pa(t,function(t,a,r){xa(n,e(t,a,r),t)}),n},aa.mapValues=function(t,e){var n={};return e=vi(e,3),Pa(t,function(t,a,r){xa(n,a,e(t,a,r))}),n},aa.matches=function(t){return tr(wa(t,u))},aa.matchesProperty=function(t,e){return er(t,wa(e,u))},aa.memoize=Bo,aa.merge=Vs,aa.mergeWith=Bs,aa.method=mu,aa.methodOf=bu,aa.mixin=yu,aa.negate=Uo,aa.nthArg=function(t){return t=Os(t),lr(function(e){return ar(e,t)})},aa.omit=Us,aa.omitBy=function(t,e){return Ks(t,Uo(vi(e)))},aa.once=function(t){return Fo(2,t)},aa.orderBy=function(t,e,n,a){return null==t?[]:(es(e)||(e=null==e?[]:[e]),es(n=a?r:n)||(n=null==n?[]:[n]),rr(t,e,n))},aa.over=xu,aa.overArgs=Wo,aa.overEvery=_u,aa.overSome=Tu,aa.partial=Ko,aa.partialRight=$o,aa.partition=Po,aa.pick=Ws,aa.pickBy=Ks,aa.property=wu,aa.propertyOf=function(t){return function(e){return null==t?r:ja(t,e)}},aa.pull=so,aa.pullAll=uo,aa.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?or(t,e,vi(n,2)):t},aa.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?or(t,e,r,n):t},aa.pullAt=co,aa.range=Su,aa.rangeRight=Ou,aa.rearg=Zo,aa.reject=function(t,e){return(es(t)?je:Da)(t,Uo(vi(e,3)))},aa.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=vi(e,3);++a<i;){var o=t[a];e(o,a,t)&&(n.push(o),r.push(a))}return sr(t,r),n},aa.rest=function(t,e){if("function"!=typeof t)throw new Zt(o);return lr(t,e=e===r?e:Os(e))},aa.reverse=lo,aa.sampleSize=function(t,e,n){return e=(n?Ni(t,e,n):e===r)?1:Os(e),(es(t)?function(t,e){return Bi(zr(t),Ta(e,0,t.length))}:function(t,e){var n=Xs(t);return Bi(n,Ta(e,0,n.length))})(t,e)},aa.set=function(t,e,n){return null==t?t:dr(t,e,n)},aa.setWith=function(t,e,n,a){return a="function"==typeof a?a:r,null==t?t:dr(t,e,n,a)},aa.shuffle=function(t){return(es(t)?function(t){return Bi(zr(t))}:function(t){return Bi(Xs(t))})(t)},aa.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&Ni(t,e,n)?(e=0,n=a):(e=null==e?0:Os(e),n=n===r?a:Os(n)),hr(t,e,n)):[]},aa.sortBy=Mo,aa.sortedUniq=function(t){return t&&t.length?yr(t):[]},aa.sortedUniqBy=function(t,e){return t&&t.length?yr(t,vi(e,2)):[]},aa.split=function(t,e,n){return n&&"number"!=typeof n&&Ni(t,e,n)&&(e=n=r),(n=n===r?R:n>>>0)?(t=Rs(t))&&("string"==typeof e||null!=e&&!ms(e))&&!(e=xr(e))&&fn(t)?Ar(xn(t),0,n):t.split(e,n):[]},aa.spread=function(t,e){if("function"!=typeof t)throw new Zt(o);return e=null==e?0:Pn(Os(e),0),lr(function(n){var a=n[e],r=Ar(n,0,e);return a&&Ye(r,a),Le(t,this,r)})},aa.tail=function(t){var e=null==t?0:t.length;return e?hr(t,1,e):[]},aa.take=function(t,e,n){return t&&t.length?hr(t,0,(e=n||e===r?1:Os(e))<0?0:e):[]},aa.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,(e=a-(e=n||e===r?1:Os(e)))<0?0:e,a):[]},aa.takeRightWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!1,!0):[]},aa.takeWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3)):[]},aa.tap=function(t,e){return e(t),t},aa.throttle=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new Zt(o);return ds(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),Yo(t,e,{leading:a,maxWait:e,trailing:r})},aa.thru=So,aa.toArray=ws,aa.toPairs=$s,aa.toPairsIn=Zs,aa.toPath=function(t){return es(t)?Ge(t,Wi):vs(t)?[t]:zr(Ui(Rs(t)))},aa.toPlainObject=Is,aa.transform=function(t,e,n){var a=es(t),r=a||is(t)||xs(t);if(e=vi(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:ds(t)&&us(i)?ra(we(t)):{}}return(r?Me:Pa)(t,function(t,a,r){return e(n,t,a,r)}),n},aa.unary=function(t){return jo(t,1)},aa.union=po,aa.unionBy=fo,aa.unionWith=ho,aa.uniq=function(t){return t&&t.length?_r(t):[]},aa.uniqBy=function(t,e){return t&&t.length?_r(t,vi(e,2)):[]},aa.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?_r(t,r,e):[]},aa.unset=function(t,e){return null==t||Tr(t,e)},aa.unzip=go,aa.unzipWith=mo,aa.update=function(t,e,n){return null==t?t:wr(t,e,Rr(n))},aa.updateWith=function(t,e,n,a){return a="function"==typeof a?a:r,null==t?t:wr(t,e,Rr(n),a)},aa.values=Xs,aa.valuesIn=function(t){return null==t?[]:on(t,Hs(t))},aa.without=bo,aa.words=uu,aa.wrap=function(t,e){return Ko(Rr(e),t)},aa.xor=yo,aa.xorBy=vo,aa.xorWith=xo,aa.zip=_o,aa.zipObject=function(t,e){return Cr(t||[],e||[],ma)},aa.zipObjectDeep=function(t,e){return Cr(t||[],e||[],dr)},aa.zipWith=To,aa.entries=$s,aa.entriesIn=Zs,aa.extend=Ds,aa.extendWith=As,yu(aa,aa),aa.add=Ru,aa.attempt=cu,aa.camelCase=Js,aa.capitalize=Qs,aa.ceil=Nu,aa.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=Cs(n))==n?n:0),e!==r&&(e=(e=Cs(e))==e?e:0),Ta(Cs(t),e,n)},aa.clone=function(t){return wa(t,l)},aa.cloneDeep=function(t){return wa(t,u|l)},aa.cloneDeepWith=function(t,e){return wa(t,u|l,e="function"==typeof e?e:r)},aa.cloneWith=function(t,e){return wa(t,l,e="function"==typeof e?e:r)},aa.conformsTo=function(t,e){return null==e||Sa(t,e,Ys(e))},aa.deburr=tu,aa.defaultTo=function(t,e){return null==t||t!=t?e:t},aa.divide=Du,aa.endsWith=function(t,e,n){t=Rs(t),e=xr(e);var a=t.length,i=n=n===r?a:Ta(Os(n),0,a);return(n-=e.length)>=0&&t.slice(n,i)==e},aa.eq=Xo,aa.escape=function(t){return(t=Rs(t))&&mt.test(t)?t.replace(ht,dn):t},aa.escapeRegExp=function(t){return(t=Rs(t))&&St.test(t)?t.replace(wt,"\\$&"):t},aa.every=function(t,e,n){var a=es(t)?qe:Ra;return n&&Ni(t,e,n)&&(e=r),a(t,vi(e,3))},aa.find=Co,aa.findIndex=Qi,aa.findKey=function(t,e){return We(t,vi(e,3),Pa)},aa.findLast=Io,aa.findLastIndex=to,aa.findLastKey=function(t,e){return We(t,vi(e,3),Ma)},aa.floor=Au,aa.forEach=Ro,aa.forEachRight=No,aa.forIn=function(t,e){return null==t?t:Ea(t,vi(e,3),Hs)},aa.forInRight=function(t,e){return null==t?t:La(t,vi(e,3),Hs)},aa.forOwn=function(t,e){return t&&Pa(t,vi(e,3))},aa.forOwnRight=function(t,e){return t&&Ma(t,vi(e,3))},aa.get=qs,aa.gt=Jo,aa.gte=Qo,aa.has=function(t,e){return null!=t&&ki(t,e,Ya)},aa.hasIn=js,aa.head=no,aa.identity=hu,aa.includes=function(t,e,n,a){t=as(t)?t:Xs(t),n=n&&!a?Os(n):0;var r=t.length;return n<0&&(n=Pn(r+n,0)),ys(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&$e(t,e,n)>-1},aa.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:Os(n);return r<0&&(r=Pn(a+r,0)),$e(t,e,r)},aa.inRange=function(t,e,n){return e=Ss(e),n===r?(n=e,e=0):n=Ss(n),function(t,e,n){return t>=Mn(e,n)&&t<Pn(e,n)}(t=Cs(t),e,n)},aa.invoke=Gs,aa.isArguments=ts,aa.isArray=es,aa.isArrayBuffer=ns,aa.isArrayLike=as,aa.isArrayLikeObject=rs,aa.isBoolean=function(t){return!0===t||!1===t||ps(t)&&za(t)==M},aa.isBuffer=is,aa.isDate=os,aa.isElement=function(t){return ps(t)&&1===t.nodeType&&!gs(t)},aa.isEmpty=function(t){if(null==t)return!0;if(as(t)&&(es(t)||"string"==typeof t||"function"==typeof t.splice||is(t)||xs(t)||ts(t)))return!t.length;var e=Oi(t);if(e==Y||e==K)return!t.size;if(Li(t))return!Xa(t).length;for(var n in t)if(ee.call(t,n))return!1;return!0},aa.isEqual=function(t,e){return Wa(t,e)},aa.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:r)?n(t,e):r;return a===r?Wa(t,e,r,n):!!a},aa.isError=ss,aa.isFinite=function(t){return"number"==typeof t&&An(t)},aa.isFunction=us,aa.isInteger=cs,aa.isLength=ls,aa.isMap=fs,aa.isMatch=function(t,e){return t===e||Ka(t,e,_i(e))},aa.isMatchWith=function(t,e,n){return n="function"==typeof n?n:r,Ka(t,e,_i(e),n)},aa.isNaN=function(t){return hs(t)&&t!=+t},aa.isNative=function(t){if(Ei(t))throw new Vt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return $a(t)},aa.isNil=function(t){return null==t},aa.isNull=function(t){return null===t},aa.isNumber=hs,aa.isObject=ds,aa.isObjectLike=ps,aa.isPlainObject=gs,aa.isRegExp=ms,aa.isSafeInteger=function(t){return cs(t)&&t>=-k&&t<=k},aa.isSet=bs,aa.isString=ys,aa.isSymbol=vs,aa.isTypedArray=xs,aa.isUndefined=function(t){return t===r},aa.isWeakMap=function(t){return ps(t)&&Oi(t)==J},aa.isWeakSet=function(t){return ps(t)&&"[object WeakSet]"==za(t)},aa.join=function(t,e){return null==t?"":En.call(t,e)},aa.kebabCase=eu,aa.last=oo,aa.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var i=a;return n!==r&&(i=(i=Os(n))<0?Pn(a+i,0):Mn(i,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,i):Ke(t,Xe,i,!0)},aa.lowerCase=nu,aa.lowerFirst=au,aa.lt=_s,aa.lte=Ts,aa.max=function(t){return t&&t.length?Na(t,hu,Ga):r},aa.maxBy=function(t,e){return t&&t.length?Na(t,vi(e,2),Ga):r},aa.mean=function(t){return Je(t,hu)},aa.meanBy=function(t,e){return Je(t,vi(e,2))},aa.min=function(t){return t&&t.length?Na(t,hu,Ja):r},aa.minBy=function(t,e){return t&&t.length?Na(t,vi(e,2),Ja):r},aa.stubArray=ku,aa.stubFalse=Cu,aa.stubObject=function(){return{}},aa.stubString=function(){return""},aa.stubTrue=function(){return!0},aa.multiply=Eu,aa.nth=function(t,e){return t&&t.length?ar(t,Os(e)):r},aa.noConflict=function(){return Te._===this&&(Te._=oe),this},aa.noop=vu,aa.now=qo,aa.pad=function(t,e,n){t=Rs(t);var a=(e=Os(e))?vn(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return ei(Rn(r),n)+t+ei(In(r),n)},aa.padEnd=function(t,e,n){t=Rs(t);var a=(e=Os(e))?vn(t):0;return e&&a<e?t+ei(e-a,n):t},aa.padStart=function(t,e,n){t=Rs(t);var a=(e=Os(e))?vn(t):0;return e&&a<e?ei(e-a,n)+t:t},aa.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),jn(Rs(t).replace(kt,""),e||0)},aa.random=function(t,e,n){if(n&&"boolean"!=typeof n&&Ni(t,e,n)&&(e=n=r),n===r&&("boolean"==typeof e?(n=e,e=r):"boolean"==typeof t&&(n=t,t=r)),t===r&&e===r?(t=0,e=1):(t=Ss(t),e===r?(e=t,t=0):e=Ss(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var i=Fn();return Mn(t+i*(e-t+ye("1e-"+((i+"").length-1))),e)}return ur(t,e)},aa.reduce=function(t,e,n){var a=es(t)?He:en,r=arguments.length<3;return a(t,vi(e,4),n,r,Ca)},aa.reduceRight=function(t,e,n){var a=es(t)?Ve:en,r=arguments.length<3;return a(t,vi(e,4),n,r,Ia)},aa.repeat=function(t,e,n){return e=(n?Ni(t,e,n):e===r)?1:Os(e),cr(Rs(t),e)},aa.replace=function(){var t=arguments,e=Rs(t[0]);return t.length<3?e:e.replace(t[1],t[2])},aa.result=function(t,e,n){var a=-1,i=(e=Nr(e,t)).length;for(i||(i=1,t=r);++a<i;){var o=null==t?r:t[Wi(e[a])];o===r&&(a=i,o=n),t=us(o)?o.call(t):o}return t},aa.round=Lu,aa.runInContext=t,aa.sample=function(t){return(es(t)?ha:function(t){return ha(Xs(t))})(t)},aa.size=function(t){if(null==t)return 0;if(as(t))return ys(t)?vn(t):t.length;var e=Oi(t);return e==Y||e==K?t.size:Xa(t).length},aa.snakeCase=ru,aa.some=function(t,e,n){var a=es(t)?Be:gr;return n&&Ni(t,e,n)&&(e=r),a(t,vi(e,3))},aa.sortedIndex=function(t,e){return mr(t,e)},aa.sortedIndexBy=function(t,e,n){return br(t,e,vi(n,2))},aa.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=mr(t,e);if(a<n&&Xo(t[a],e))return a}return-1},aa.sortedLastIndex=function(t,e){return mr(t,e,!0)},aa.sortedLastIndexBy=function(t,e,n){return br(t,e,vi(n,2),!0)},aa.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=mr(t,e,!0)-1;if(Xo(t[n],e))return n}return-1},aa.startCase=iu,aa.startsWith=function(t,e,n){return t=Rs(t),n=null==n?0:Ta(Os(n),0,t.length),e=xr(e),t.slice(n,n+e.length)==e},aa.subtract=Pu,aa.sum=function(t){return t&&t.length?nn(t,hu):0},aa.sumBy=function(t,e){return t&&t.length?nn(t,vi(e,2)):0},aa.template=function(t,e,n){var a=aa.templateSettings;n&&Ni(t,e,n)&&(e=r),t=Rs(t),e=As({},e,a,ci);var i,o,s=As({},e.imports,a.imports,ci),u=Ys(s),c=on(s,u),l=0,d=e.interpolate||Gt,p="__p += '",f=Kt((e.escape||Gt).source+"|"+d.source+"|"+(d===vt?Et:Gt).source+"|"+(e.evaluate||Gt).source+"|$","g"),h="//# sourceURL="+(ee.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++he+"]")+"\n";t.replace(f,function(e,n,a,r,s,u){return a||(a=r),p+=t.slice(l,u).replace(Yt,pn),n&&(i=!0,p+="' +\n__e("+n+") +\n'"),s&&(o=!0,p+="';\n"+s+";\n__p += '"),a&&(p+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),l=u+e.length,e}),p+="';\n";var g=ee.call(e,"variable")&&e.variable;g||(p="with (obj) {\n"+p+"\n}\n"),p=(o?p.replace(lt,""):p).replace(dt,"$1").replace(pt,"$1;"),p="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var m=cu(function(){return Bt(u,h+"return "+p).apply(r,c)});if(m.source=p,ss(m))throw m;return m},aa.times=function(t,e){if((t=Os(t))<1||t>k)return[];var n=R,a=Mn(t,R);e=vi(e),t-=R;for(var r=an(a,e);++n<t;)e(n);return r},aa.toFinite=Ss,aa.toInteger=Os,aa.toLength=ks,aa.toLower=function(t){return Rs(t).toLowerCase()},aa.toNumber=Cs,aa.toSafeInteger=function(t){return t?Ta(Os(t),-k,k):0===t?t:0},aa.toString=Rs,aa.toUpper=function(t){return Rs(t).toUpperCase()},aa.trim=function(t,e,n){if((t=Rs(t))&&(n||e===r))return t.replace(Ot,"");if(!t||!(e=xr(e)))return t;var a=xn(t),i=xn(e);return Ar(a,un(a,i),cn(a,i)+1).join("")},aa.trimEnd=function(t,e,n){if((t=Rs(t))&&(n||e===r))return t.replace(Ct,"");if(!t||!(e=xr(e)))return t;var a=xn(t);return Ar(a,0,cn(a,xn(e))+1).join("")},aa.trimStart=function(t,e,n){if((t=Rs(t))&&(n||e===r))return t.replace(kt,"");if(!t||!(e=xr(e)))return t;var a=xn(t);return Ar(a,un(a,xn(e))).join("")},aa.truncate=function(t,e){var n=30,a="...";if(ds(e)){var i="separator"in e?e.separator:i;n="length"in e?Os(e.length):n,a="omission"in e?xr(e.omission):a}var o=(t=Rs(t)).length;if(fn(t)){var s=xn(t);o=s.length}if(n>=o)return t;var u=n-vn(a);if(u<1)return a;var c=s?Ar(s,0,u).join(""):t.slice(0,u);if(i===r)return c+a;if(s&&(u+=c.length-u),ms(i)){if(t.slice(u).search(i)){var l,d=c;for(i.global||(i=Kt(i.source,Rs(Lt.exec(i))+"g")),i.lastIndex=0;l=i.exec(d);)var p=l.index;c=c.slice(0,p===r?u:p)}}else if(t.indexOf(xr(i),u)!=u){var f=c.lastIndexOf(i);f>-1&&(c=c.slice(0,f))}return c+a},aa.unescape=function(t){return(t=Rs(t))&&gt.test(t)?t.replace(ft,_n):t},aa.uniqueId=function(t){var e=++ne;return Rs(t)+e},aa.upperCase=ou,aa.upperFirst=su,aa.each=Ro,aa.eachRight=No,aa.first=no,yu(aa,(Iu={},Pa(aa,function(t,e){ee.call(aa.prototype,e)||(Iu[e]=t)}),Iu),{chain:!1}),aa.VERSION="4.17.14",Me(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){aa[t].placeholder=aa}),Me(["drop","take"],function(t,e){sa.prototype[t]=function(n){n=n===r?1:Pn(Os(n),0);var a=this.__filtered__&&!e?new sa(this):this.clone();return a.__filtered__?a.__takeCount__=Mn(n,a.__takeCount__):a.__views__.push({size:Mn(n,R),type:t+(a.__dir__<0?"Right":"")}),a},sa.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),Me(["filter","map","takeWhile"],function(t,e){var n=e+1,a=1==n||3==n;sa.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:vi(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}}),Me(["head","last"],function(t,e){var n="take"+(e?"Right":"");sa.prototype[t]=function(){return this[n](1).value()[0]}}),Me(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");sa.prototype[t]=function(){return this.__filtered__?new sa(this):this[n](1)}}),sa.prototype.compact=function(){return this.filter(hu)},sa.prototype.find=function(t){return this.filter(t).head()},sa.prototype.findLast=function(t){return this.reverse().find(t)},sa.prototype.invokeMap=lr(function(t,e){return"function"==typeof t?new sa(this):this.map(function(n){return Ba(n,t,e)})}),sa.prototype.reject=function(t){return this.filter(Uo(vi(t)))},sa.prototype.slice=function(t,e){t=Os(t);var n=this;return n.__filtered__&&(t>0||e<0)?new sa(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=Os(e))<0?n.dropRight(-e):n.take(e-t)),n)},sa.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},sa.prototype.toArray=function(){return this.take(R)},Pa(sa.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),i=aa[a?"take"+("last"==e?"Right":""):e],o=a||/^find/.test(e);i&&(aa.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof sa,c=s[0],l=u||es(e),d=function(t){var e=i.apply(aa,Ye([t],s));return a&&p?e[0]:e};l&&n&&"function"==typeof c&&1!=c.length&&(u=l=!1);var p=this.__chain__,f=o&&!p,h=u&&!this.__actions__.length;if(!o&&l){e=h?e:new sa(this);var g=t.apply(e,s);return g.__actions__.push({func:So,args:[d],thisArg:r}),new oa(g,p)}return f&&h?t.apply(this,s):(g=this.thru(d),f?a?g.value()[0]:g.value():g)})}),Me(["pop","push","shift","sort","splice","unshift"],function(t){var e=Xt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);aa.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)})}}),Pa(sa.prototype,function(t,e){var n=aa[e];if(n){var a=n.name+"";ee.call(Kn,a)||(Kn[a]=[]),Kn[a].push({name:e,func:n})}}),Kn[Xr(r,h).name]=[{name:"wrapper",func:r}],sa.prototype.clone=function(){var t=new sa(this.__wrapped__);return t.__actions__=zr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=zr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=zr(this.__views__),t},sa.prototype.reverse=function(){if(this.__filtered__){var t=new sa(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},sa.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],o=i.size;switch(i.type){case"drop":t+=o;break;case"dropRight":e-=o;break;case"take":e=Mn(e,t+o);break;case"takeRight":t=Pn(t,e-o)}}return{start:t,end:e}}(0,r,this.__views__),o=i.start,s=i.end,u=s-o,c=a?s:o-1,l=this.__iteratees__,d=l.length,p=0,f=Mn(u,this.__takeCount__);if(!n||!a&&r==u&&f==u)return Or(t,this.__actions__);var h=[];t:for(;u--&&p<f;){for(var g=-1,m=t[c+=e];++g<d;){var b=l[g],y=b.type,v=(0,b.iteratee)(m);if(2==y)m=v;else if(!v){if(1==y)continue t;break t}}h[p++]=m}return h},aa.prototype.at=Oo,aa.prototype.chain=function(){return wo(this)},aa.prototype.commit=function(){return new oa(this.value(),this.__chain__)},aa.prototype.next=function(){this.__values__===r&&(this.__values__=ws(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},aa.prototype.plant=function(t){for(var e,n=this;n instanceof ia;){var a=$i(n);a.__index__=0,a.__values__=r,e?i.__wrapped__=a:e=a;var i=a;n=n.__wrapped__}return i.__wrapped__=t,e},aa.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof sa){var e=t;return this.__actions__.length&&(e=new sa(this)),(e=e.reverse()).__actions__.push({func:So,args:[lo],thisArg:r}),new oa(e,this.__chain__)}return this.thru(lo)},aa.prototype.toJSON=aa.prototype.valueOf=aa.prototype.value=function(){return Or(this.__wrapped__,this.__actions__)},aa.prototype.first=aa.prototype.head,tn&&(aa.prototype[tn]=function(){return this}),aa}();Te._=Tn,(a=(function(){return Tn}).call(e,n,e,t))===r||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},Lwhh:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnHeaderDirective=function(){return a([r.Directive({selector:"[ngx-datatable-header-template]"})],function(t){this.template=t})}()},"M/6F":function(t,e,n){"use strict";var a=n("CcnG"),r=n("IZUe"),i=n("MdoF"),o=n("lTVp"),s=n("Ip0R");n("NDi4"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return l});var u=a["\u0275crt"]({encapsulation:0,styles:[[".error-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.error-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-sm btn-default 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["\u0275did"](2,4210688,null,0,r.a,[a.ElementRef],null,null),(t()(),a["\u0275ted"](-1,null,["Back"]))],null,null)}function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","danger"]],null,null,null,i.c,i.b)),a["\u0275did"](1,114688,null,0,o.a,[o.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","error-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-times-circle alert-danger"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","error-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","error-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](16777216,null,null,1,null,c)),a["\u0275did"](13,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"danger"),t(e,13,0,n.backAction.observers.length>0)},function(t,e){t(e,8,0,e.component.title)})}},M9eX:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=(n("czA5"),n("ahDk"));e.ResizeableDirective=function(){function t(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new i.EventEmitter,this.resizing=!1,this.element=t.nativeElement}return t.prototype.ngAfterViewInit=function(){var t=this.renderer,e=t.createElement("span");t.addClass(e,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,e)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))},t.prototype.onMousedown=function(t){var e=this,n=t.target.classList.contains("resize-handle"),a=this.element.clientWidth,r=t.screenX;if(n){t.stopPropagation(),this.resizing=!0;var i=o.fromEvent(document,"mouseup");this.subscription=i.subscribe(function(t){return e.onMouseup()});var u=o.fromEvent(document,"mousemove").pipe(s.takeUntil(i)).subscribe(function(t){return e.move(t,a,r)});this.subscription.add(u)}},t.prototype.move=function(t,e,n){var a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeEnabled",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"resize",void 0),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMousedown",null),a([i.Directive({selector:"[resizeable]",host:{"[class.resizeable]":"resizeEnabled"}})],t)}()},MGBS:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyError=function(t,e){this.destination.error(t)},e.prototype.notifyComplete=function(t){this.destination.complete()},e}(n("FFOo").a)},MaEZ:function(t,e){t.exports='<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\xfdt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>P\u0159ehled</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</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\xed</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\xe1vy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Z\xe1znamy ud\xe1lost\xed</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>V\xfdstrahy</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\xed</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\xe9 syst\xe9my</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektov\xe1 br\xe1na</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy slu\u017eeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>U\u017eivatel\xe9</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>N\xe1doby</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\xedsk\xe1vaj\xed 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>"/>. \u010cekejte\u2026\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\xed se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipam\u011bti\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\u0159\xed se na\u010d\xedst 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\xed klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zp\u011bt</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\u010d\xedt\xe1n\xed \xfadaj\u016f panelu\u2026</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\xe9dn\u011bte 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\xe1n\xed.\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\u0159ehled neexistuje. Pod\xedvejte 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\u0159idat p\u0159ehledy do Grafany.\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>Resetovat nastaven\xed</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepoda\u0159ilo na\u010d\xedst</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybr\xe1no</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastaven\xed</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\u011bnit tyto parametry z jejich v\xfdchoz\xedch hodnot obvykle nen\xed pot\u0159eba.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokro\u010dil\xe1 nastaven\xed</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN c\xedle</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je t\u0159eba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nem\xe1 spr\xe1vn\xfd form\xe1t.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN m\xe1 n\xe1sleduj\xedc\xed formu z\xe1pisu \u201eiqn.$rok-$m\u011bs\xedc.$adresaObr\xe1cen\u011b:$ur\u010den\xfdN\xe1zev\'</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\u0159\xedklad: 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\u0161\xed 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\xedl m\xe1 zm\u011bn\u011bn\xe1 pokro\u010dil\xe1 nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Port\xe1ly</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\u0159eba alespo\u0148 \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>P\u0159idat port\xe1l</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz m\xe1 zm\u011bn\u011bn\xe1 nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Je t\u0159eba alespo\u0148 1 obraz.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>P\u0159idat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ov\u011b\u0159ov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inici\xe1tory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inici\xe1tor</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\u0159eba, aby se IQN inici\xe1toru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>U\u017eivatele</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\u0159eba, aby u\u017eivatelsk\xe1 jm\xe9na m\u011bla d\xe9lku 8 a\u017e 64 znak\u016f a\n                        mohou obsahovat pouze p\xedsmena a znaky \u201e.\u201c, \u201e@\u201c, \u201e-\u201c, \u201e_\u201c nebo \u201e:\u201c.</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="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>U\u017eivatel pro vz\xe1jemn\xe9 ov\u011b\u0159en\xed</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vz\xe1jemn\xe9 ov\u011b\u0159en\xed</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\xe1tor spad\xe1 do skupiny. Obrazy budou nastaveny ve skupin\u011b.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nep\u0159id\xe1ny \u017e\xe1dn\xe9 polo\u017eky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>P\u0159idat inici\xe1tor</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>N\xe1zev</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>P\u0159idat skupinu</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="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 ozna\u010den\xe9 \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ov\u011b\u0159ov\xe1n\xed pro objevov\xe1n\xed</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>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="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\xedvejte 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\xe1vy iSCSI c\xedl\u016f.\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\xedl nen\xed k dispozici</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u201e/\u201c a \u201e@\u201c nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Na\u010d\xedt\xe1n\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u017d\xe1dn\xe9 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="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Pou\u017e\xedt vyhrazen\xfd datov\xfd fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datov\xfd 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\xfd fond kter\xfd uchov\xe1v\xe1 objektov\xe1 data RBD.</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u017d\xe1dn\xe9 fondy k dispozici --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>nap\u0159. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je t\u0159eba zv\u011bt\u0161it.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokro\u010dil\xe9\u2026</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokro\u010dil\xe9</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Prou\u017ekov\xe1n\xed</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="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka prou\u017eku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku prou\u017eku --</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\u0159eba vyplnit, proto\u017ee je definov\xe1n po\u010det prou\u017ek\u016f!</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\u017eku je vy\u0161\u0161\xed ne\u017e velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Po\u010det prou\u017ek\u016f</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\u0159eba vyplnit, proto\u017ee je definov\xe1na jednotka prou\u017eku!</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\u0159eba, aby po\u010det prou\u017ek\u016f byl v\u011bt\u0161\xed ne\u017e nula.</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Ko\u0161</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celkov\xe1 v\xfdkonnost</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="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\u011bj\u0161\xed popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>V\xfdchoz\xed</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>V\xfdchoz\xed pro proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Slu\u017eby</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="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\xe1 hodnota je p\u0159\xedli\u0161 vysok\xe1! Nem\u016f\u017ee b\xfdt vy\u0161\u0161\xed ne\u017e \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\xe1 hodnota je p\u0159\xedli\u0161 n\xedzk\xe1! Nem\u016f\u017ee b\xfdt ni\u017e\u0161\xed ne\u017e \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\u017eit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohl\xed\u017ee\u010d CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam stroj\u016f</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny \u017e\xe1dn\xe9 polo\u017eky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Z\xe1znamy ud\xe1lost\xed v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditn\xed z\xe1znamy ud\xe1lost\xed</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Na\u010d\xedt\xe1n\xed nastaven\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastaven\xed se nepoda\u0159ilo na\u010d\xedst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul spr\xe1vy</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\xe1 hodnota nen\xed platn\xe9 UUID, nap\u0159.: 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\u0159eba, aby zadan\xe1 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>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>Je t\u0159eba, aby zadan\xe1 hodnota byla \u010d\xedslo.</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\u0159eba, aby zadan\xe1 hodnota byla \u010d\xedslo nebo des\xedtkov\xe9.</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\u016f zm\u011bn\u011bna</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\xf3rum spojen\xed</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kv\xf3rum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vy\u017eadov\xe1no spojen\xed</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vy\u017eadov\xe1no monitor\u016f</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kv\xf3ru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nen\xed v kv\xf3ru</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>P\u0159\xedznaky OSD pro cel\xfd klastr</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnoven\xed 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\u0159izp\u016fsobit 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\u0159eba 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\xe1 hodnota je p\u0159\xedli\u0161 vysok\xe1, je t\u0159eba, aby nebyla vy\u0161\u0161\xed ne\u017e \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\xe1 hodnota je p\u0159\xedli\u0161 n\xedzk\xe1! Je t\u0159eba, aby byla ni\u017e\u0161\xed ne\u017e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Znovu vyv\xe1\u017eit OSD</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\u0159eba, 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\xe1\u017eit</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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Chyst\xe1te se pou\u017e\xedt kontrolu na\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Pokud budete pokra\u010dovat, \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\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>"/> bude ozna\u010deno\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD nen\xed mo\u017en\xe9 bezpe\u010dn\u011b zlikvidovat!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Pokud budete pokra\u010dovat,\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> bude \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>"/>.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrav\xed</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\u011b nastaven\xed a zapnut\xed funkce spr\xe1vy NFS Ganesha nahl\xe9dn\u011bte 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\u0159istupovat m\u016f\u017ee libovoln\xfd 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\u017eadovan\xe1 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\u0159eba, aby obsahovalo jednu nebo v\xedce \u010d\xe1rkou odd\u011blovan\xfdch hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Nap\u0159\xedklad:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ p\u0159\xedstupu</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\u0159idat klienty</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u017d\xe1dn\xfd 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\u0159idat proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podp\u016frn\xe1 vrstva \xfalo\u017ei\u0161t\u011b</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podp\u016frnou vrstvu \xfalo\u017ei\u0161t\u011b --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>U\u017eivatel objektov\xe9 br\xe1ny</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u017d\xe1dn\xed u\u017eivatel\xe9 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\u017eivatele br\xe1ny objekt\u016f --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. u\u017eivatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u017d\xe1dn\xed 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\xe1zev CephFS</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Security Label</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Enable security label</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis um\xedst\u011bn\xed 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\u0159eba, aby popis um\xedst\u011bn\xed za\u010d\xednal na \u201e/\u201c, za kter\xfdm n\xe1sleduje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvo\u0159ena nov\xe1 slo\u017eka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis um\xedst\u011bn\xed</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\xedst\u011bn\xed m\u016f\u017ee b\xfdt pouze jedin\xe9 \u201e/\u201c 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\u0159ena nov\xe1 n\xe1doba</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 \u0161t\xedtek</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\xed p\u0159\xedstup 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\u0159ipojen\xed (nem\u016f\u017ee za\u010d\xednat 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>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not 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>By using different Tag options, the same Path may be exported multiple times.</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>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u017d\xe1dn\xfd typ p\u0159\xedstupu 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\u0159\xedstupu --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No squash available --</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>--Select what kind of user id squashing is performed --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportn\xed 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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>N\xe1zev m\u016f\u017ee b\xfdt tvo\u0159en pouze p\xedsmeny a \u010d\xedslicemi, d\xe1le je\u0161t\u011b spojovn\xedky a podtr\u017e\xedtky.</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\xfd n\xe1zev pro profil mazac\xedho k\xf3du je u\u017e pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Z\xe1suvn\xfd 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\u0159eba, aby bylo 2 a v\xedce.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky k\xf3dov\xe1n\xed (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\u0159eba, aby bylo 1 a v\xedce.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadov\xe1n\xed odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Um\xedst\u011bn\xed (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dom\xe9na selh\xe1n\xed 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>\u017d\xe1dn\xe9</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\u0159en crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>T\u0159\xedda crush za\u0159\xedzen\xed</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovoln\xe9</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Slo\u017eka</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>P\u0159idat</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zav\u0159\xedt</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>N\xe1zev\u2026</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\xfd n\xe1zev pro Ceph fond je u\u017e pou\u017e\xedv\xe1n.</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="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny um\xedst\u011bn\xed</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\u0159eba alespo\u0148 jedn\xe9 skupiny um\xedst\u011bn\xed!</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\xe1\u0161 klastr nem\u016f\u017ee obslou\u017eit tolik skupin um\xedst\u011bn\xed. P\u0159epo\u010d\xedtejte pot\u0159ebn\xe9 mno\u017estv\xed skupin um\xedst\u011bn\xed.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>U existuj\xedc\xedho fondu je mo\u017en\xe9 po\u010det skupin um\xedst\u011bn\xed pouze zvy\u0161ovat.\n                Nyn\xed m\xe1 v\xe1\u0161 fond \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> skupin.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>N\xe1pov\u011bda k v\xfdpo\u010dtu</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</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="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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Pravidlo nem\u016f\u017ee b\xfdt uplatn\u011bno na st\xe1vaj\xedc\xed klastr proto\u017ee m\xe1\n                p\u0159\xedli\u0161 m\xe1lo OSD aby splnil minimum OSD vy\u017eadovan\xfdch t\xedmto pravidlem.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovan\xe1 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\xe9n\u011b: \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\xedce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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\xe1 velikost je mimo rozsah. Platn\xe9 hodnoty jsou od \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> do \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazac\xedho k\xf3du</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u017d\xe1dn\xfd profil mazac\xedho k\xf3du --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazac\xedho k\xf3du --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>P\u0159\xedznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC p\u0159ebit\xed</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="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\u017eim</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>-- \u017d\xe1dn\xfd algoritmus komprese maz\xe1n\xed --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minim\xe1ln\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>nap\u0159. 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\u011bla b\xfdt vy\u0161\u0161\xed ne\u017e nula</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvy\u0161\u0161\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>nap\u0159. 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\u011bla b\xfdt vy\u0161\u0161\xed ne\u017e nejni\u017e\u0161\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Pom\u011br</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresn\xed pom\u011br</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\u011bla b\xfdt z rozmez\xed 0.0 a\u017e 1.0</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Nen\xed mo\u017en\xe9 vytvo\u0159it RBD fond, kter\xfd m\xe1 v n\xe1zvu \u201e/\u201c.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Zm\u011b\u0148te n\xe1zev nebo ze seznamu pou\u017eit\xed odeberte \u201erbd\u201c</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fond\u016f</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\xedvejte 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\xe1vy br\xe1ny objekt\u016f.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Na\u010d\xedt\xe1n\xed dat n\xe1doby\u2026</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Data n\xe1doby se nepoda\u0159ilo na\u010d\xedst.</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\xed platn\xe1.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolen\xfd n\xe1zev u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastn\xedk</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat u\u017eivatele --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam proces\u016f slu\u017eeb</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\xe1vn\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat opr\xe1vn\u011bn\xed --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>U\u017eivatelsk\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat u\u017eivatelsk\xe9 jm\xe9no --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvo\u0159it kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>P\u0159\xedstupov\xfd kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajn\xfd kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>D\xedl\u010d\xed u\u017eivatel</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\xfd identifik\xe1tor d\xedl\u010d\xedho u\u017eivatele u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u010d\xedst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pln\xe9</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvo\u0159it tajemstv\xed</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Na\u010d\xedt\xe1n\xed \xfadaj\u016f u\u017eivatele\u2026</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\xdadaje u\u017eivatele se nepoda\u0159ilo na\u010d\xedst.</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\xfd identif. u\u017eivatele u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Cel\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailov\xe1 adresa</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\xed platn\xe1 e-mailov\xe1 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\xe1 e-mailov\xe1 adresa u\u017e je pou\u017e\xedv\xe1na.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejv\xfd\u0161e n\xe1dob</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\u0159eba, aby zadan\xe1 hodnota byla 0 a vy\u0161\u0161\xed.</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>D\xedl\u010d\xed u\u017eivatel\xe9</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde \u017e\xe1dn\xed d\xedl\u010d\xed u\u017eivatel\xe9.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kl\xed\u010de</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 \u017e\xe1dn\xe9 kl\xed\u010de.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</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="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde \u017e\xe1dn\xe9 schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kv\xf3ta u\u017eivatele</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="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezen\xe1 velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvy\u0161\u0161\xed velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezen\xe9 objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejv\xfd\u0161e objekt\u016f</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kv\xf3ta n\xe1doby</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>V\xedtejte 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\u0159eba vyplnit u\u017eivatelsk\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je t\u0159eba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>P\u0159ihl\xe1sit</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis\u2026</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Opr\xe1vn\u011bn\xed</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\xe1m l\xedto, u\u017eivatel 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\xe1tit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\u0159ihla\u0161ovac\xed str\xe1nku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhl\xe1\u0161eni od poskytovatele identity kdy\u017e se pokus\xedte znovu p\u0159ihl\xe1sit.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzen\xed zad\xe1n\xed 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\xe1n\xed hesla se neshoduj\xed.</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\xfd e-mail.</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="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chyst\xe1te se odebrat opr\xe1vn\u011bn\xed \u201eu\u017eivatel \u010d\xedst/aktualizovat\u201c sv\xe9mu vlastn\xedmu \xfa\u010dtu.</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\u010dovat, nebudete nad\xe1le schopn\xed p\u0159id\xe1vat nebo nebo odeb\xedrat role \u017e\xe1dn\xe9mu z u\u017eivatel\u016f.</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\u010dovat?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odep\u0159eno</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\xe1me se, ale nem\xe1te opr\xe1vn\u011bn\xed zobrazit to, po \u010dem se  poohl\xed\u017e\xedte.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Omlouv\xe1me se, nepoda\u0159ilo se naj\xedt to, po \u010dem se poohl\xed\u017e\xedte</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Odebrat v\u0161e</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Ned\xe1vn\xe1 ozn\xe1men\xed</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Nejsou zde \u017e\xe1dn\xe9 \xfalohy na pozad\xed.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\xdalohy na pozad\xed</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>N\xe1pov\u011bda</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\u010dn\xed program. rozhran\xed</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\xed p\u0159ehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Spr\xe1va u\u017eivatel\u016f</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>P\u0159ihl\xe1\u0161en\xfd u\u017eivatel</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\u0159ihl\xe1\u0161eni 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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhl\xe1sit</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010de</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o v\xfdkonnosti</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\u0159\xedku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo um\xedst\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Ozna\u010dova\u010d</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvy\u0161\u0161\xed ozna\u010dova\u010d</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\xed verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okam\u017eik \xfapravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinaz\xf3ny</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvy\u0161\u0161\xed 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\xfd\u0161e objekt\u016f</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Syst\xe9m</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejv\xfd\u0161e n\xe1dob</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010de nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Glob\xe1ln\xed</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastaven\xed 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\xedstn\xedmu nastaven\xed. Nam\xedsto n\xed bude pou\u017eita hodnota nad\u0159azen\xe9ho nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minim\xe1ln\xed hodnota je 0</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="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010d</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\xed 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\xe1pisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u010cten\xed</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="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>St\xe1vaj\xedc\xed 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>\xdarove\u0148</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je mo\u017en\xe9 aktualizovat za provozu (upraviteln\xe9)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u0160t\xedtky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vy\u010d\xedslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz tak\xe9</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\u017eby spr\xe1vy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektov\xe9 br\xe1ny</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\xe1ny</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/v\xfdst. 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>\u010cten\xed/z\xe1pis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotaven\xed</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\xfdkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Hol\xe1 kapacita</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="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin um\xedst\u011bn\xed na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny um\xedst\u011bn\xed</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\u0161\xed 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\xe1znamech ud\xe1lost\xed\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>P\u0159esunout obraz do ko\u0161e</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Pro p\u0159esunut\xed \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> do ko\u0161e,\n          klikn\u011bte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>P\u0159esunout obraz\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Voliteln\u011b je mo\u017en\xe9 zvolit datum skon\u010den\xed platnosti.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skon\u010d\xed v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHR\xc1N\u011aNO</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\xfd form\xe1t data. Pou\u017eijte \u201eRRRR-MM-DD HH:mm:ss\u201c.</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\u017e skon\u010dila. Zvolte budouc\xed datum nebo nevypl\u0148ujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>P\u0159esunout obraz</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>P\u0159ehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>C\xedle</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\xfdm \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="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datov\xfd fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvo\u0159eno</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytov\xe1no</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>Celkem poskytov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Prou\u017ekovac\xed jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Po\u010det prou\u017ekov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nad\u0159azen\xe9</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>P\u0159edpona n\xe1zvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Po\u0159ad\xed</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycen\xe9 stavy</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastaven\xed p\u0159ebije glob\xe1ln\xed hodnotu</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\xe1ln\xed hodnota. Pro tento obraz nebyla u t\xe9to volby nastavena \u017e\xe1dn\xe1 hodnota.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD zachycen\xfd stav\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, vybrat, skute\u010dn\xe9 {Rename} ostatn\xed {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> zachycen\xfd stav\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHR\xc1N\u011aNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHR\xc1N\u011aNO</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chyst\xe1te se vr\xe1tit zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat ko\u0161</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Pro vy\u010di\u0161t\u011bn\xed, vyberte jeden nebo v\u0161echny obrazy a klikn\u011bte na</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\xe1zev fondu\u2026</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>V\u0161e</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\xed</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\xfd n\xe1zev pro obraz a klikn\u011bte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nov\xfd n\xe1zev</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skon\u010dila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chr\xe1n\u011bno 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\xe1n\u011bn 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="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>probl\xe9my</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\u0159ipraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit re\u017eim zrcadlen\xed fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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 \xfapravu re\u017eimu zrcadlen\xed pro fond\xa0\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\xfd re\u017eim a klikn\u011bte na\xa0\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\u0159ed vypnut\xedm zrcadlen\xed je t\u0159eba odebrat klastry-prot\u011bj\u0161ky.</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\u011bj\u0161ek zrcadlen\xed 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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> atributy\n          prot\u011bj\u0161ku zrcadlen\xed 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>"/> a klikn\u011bte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Odeslat\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\xe1zev klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>N\xe1zev klastru nen\xed platn\xfd</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. \u2026</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\xed platn\xfd.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitor\u016f</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u010c\xe1rkou odd\u011blovan\xe9 adresy\u2026</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\xed platn\xe1.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Kl\xed\u010d v base64 k\xf3dov\xe1n\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je t\u0159eba, aby CephX kl\xed\u010d byl v k\xf3dov\xe1n\xed base64.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupn\xedch mezipam\u011bti</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocen\xed</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klienti: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>St\xe1vaj\xedc\xed</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizov\xe1no ov\u011b\u0159ov\xe1n\xed pro objevov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 port\xe1ly.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 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 \u017e\xe1dn\xe9 obrazy. Ov\u011b\u0159te, \u017ee jste c\xedli p\u0159idali 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 \u017e\xe1dn\xe9 inici\xe1tory. Ov\u011b\u0159te, \u017ee jste c\xedli p\u0159idali inici\xe1tor.</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>C\xedl</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>N\xe1zev stroje</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajt\u016f \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajt\u016f z\xe1pis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operac\xed/s \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operac\xed/s z\xe1pis</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\xe9m</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="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</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="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit re\u017eim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>P\u0159idat prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedouc\xed</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Po\u010det m\xedstn\xedch</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Po\u010det vzd\xe1len\xfdch</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kl\xed\u010d</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="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hlubok\xe9 zplo\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstven\xed</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>V\xfdhradn\xed z\xe1mek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objekt\u016f (vy\u017eaduje v\xfdhradn\xed z\xe1mek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u017durn\xe1lov\xe1n\xed (vy\u017eaduje v\xfdhradn\xed z\xe1mek)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Rychl\xe9 porovn\xe1n\xed (vy\u017eaduje mapu objekt\u016f)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kop\xedrovat</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zplo\u0161tit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>P\u0159esunout do ko\u0161e</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvo\u0159it</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>P\u0159ejmenovat</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochr\xe1nit</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zru\u0161it ochranu</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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vr\xe1cen\xed zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vr\xe1cen\xed zachycen\xe9ho stavu RBD zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycen\xfd stav RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smaz\xe1no 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\u0159en</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocen\xed</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces slu\u017eby</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\u017eek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzl\u016f</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Vyu\u017eit\xed</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy slu\u017eeb v pohotovosti</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\u017en\xe9 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\u017eeb / klienti nez\xedsk\xe1vaj\xed tuto hodnotu\n      z datab\xe1ze nastaven\xed monitoru. Nen\xed umo\u017en\u011bno nastavit tuto volbu\n      prost\u0159ednictv\xedm \u201eceph config set \u2026\'. Tato volba by m\u011bla b\xfdt nastavena\n      z p\u0159\xedkazov\xe9ho \u0159\xe1dku.</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\xed pouze p\u0159i spou\u0161t\u011bn\xed procesu slu\u017eby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivn\xed pouze vytv\xe1\u0159en\xed klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivn\xed pouze vytvo\u0159en\xed procesu slu\u017eby.</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\xe1na volba nastaven\xed \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\u017eba</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>St\xe1vaj\xedc\xed hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upraviteln\xe9</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\xe1na volba pro modul \u201e\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201c\n        </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="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Op\u011btovn\xe9 p\u0159ipojov\xe1n\xed, \u010dekejte\u2026</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Ve\u0159ejn\xe1 adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otev\u0159en\xe9 relace</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Po\u010det 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\xe9 byly d\u0159\xedve odzna\u010deny nebudou ozna\u010deny nazp\u011bt kdy\u017e spust\xed</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Po\u010det 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\u010deny po nastaven\xe9m intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Po\u010det aktivn\xedch</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD nen\xed dovoleno spu\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Po\u010det neaktivn\xedch</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\xe1\u0161en\xed o selh\xe1n\xed OSD jsou ignorov\xe1ny, jako nap\u0159\xedklad \u017ee monitory OSD neozna\u010d\xed jako nedostupn\xe9</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 \u010dten\xed a z\xe1pisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u017d\xe1dn\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnut\xe1</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u017d\xe1dn\xe1 hloubkov\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubkov\xe1 kontrola je vypnut\xe1</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u017d\xe1dn\xe9 zasyp\xe1v\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasyp\xe1v\xe1n\xed skupin um\xedst\u011bn\xed je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u017d\xe1dn\xe9 obnoven\xed</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovov\xe1n\xed skupin um\xedst\u011bn\xed je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitov\xe9 t\u0159\xedd\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>T\u0159\xeddit podle bit\u016f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vy\u010di\u0161t\u011bn\xe9 slo\u017eky zachycen\xfdch stav\u016f</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD maj\xed p\u0159eveden\xe9 sady zachycen\xfdch stav\u016f</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smaz\xe1no p\u0159i zotavov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Maz\xe1n\xed proveden\xe1 p\u0159i obnovov\xe1n\xed nam\xedsto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nep\u0159ekro\u010diteln\xfd limit z\xe1znamu ud\xe1lost\xed 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\u0159ekro\u010diteln\xfd limit na d\xe9lku z\xe1znamu ud\xe1lost\xed v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizov\xe1ny OSD p\u0159\xedznaky</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubkov\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odzna\u010dit</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Ozna\u010dit</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnit\u0159</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Ozna\u010dit</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupn\xe9</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Ozna\u010dit ztracen\xe9</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zna\u010dka</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\u010deno jako ztracen\xe9</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vy\u010distit</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vy\u010di\u0161t\u011bno</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="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\xe1no</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny um\xedst\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>P\u0159e\u010dteno bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Zaps\xe1no bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operac\xed/s \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operac\xed/s z\xe1pis</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\u010dit 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\u010dit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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>Recovery Sleep</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>U\u017eivatelsky ur\u010den\xe9</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\xe1na rychlost zotaven\xed OSD \u201e\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> bylo inicializov\xe1no v n\xe1sleduj\xedc\xedm OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\xdaloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Z\xe1va\u017enost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zah\xe1jeno</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Pou\u017eito</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>\u010cist\xe9</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracuj\xedc\xed</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nezn\xe1m\xe9</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivn\xed</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u017e\xe1dn\xe9 souborov\xe9 syst\xe9my</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivn\xed</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>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivn\xed proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kv\xf3rum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Slu\u017eba NFS Ganesha nen\xed 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\u017eivatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborov\xfd syst\xe9m CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(p\u0159evzato z glob\xe1ln\xedho nastaven\xed)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>p\u0159evzato z glob\xe1ln\xedho nastaven\xed</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>-- Select what kind of user id squashing is performed --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 procesy slu\u017eeb.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Re\u017eim mezipam\u011bti</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\xfd\u0161e bajt\u016f c\xedle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejv\xfd\u0161e objekt\u016f c\xedle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla p\u0159id\xe1na \u017e\xe1dn\xe1 aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosa\u017een limit aplikac\xed</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\u016f\u017ee m\xedt nejv\xfd\u0161e \u010dty\u0159i definice aplikac\xed.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Pou\u017eiteln\xe9 znaky \u201e_a-zA-Z0-9\u201c</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvy\u0161\u0161\xed d\xe9lka je 128 znak\u016f</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo p\u0159idat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>P\u0159idat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazac\xedho k\xf3du</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\u011bj\u0161\xed zm\u011bna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Maz\xe1n\xedm k\xf3dovan\xfd 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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zaps\xe1no bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aktualizov\xe1na n\xe1doba objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201c\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\u0159ena n\xe1doba objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>n\xe1doba</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>n\xe1doby</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\xe1n u\u017eivatel objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201c\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\u0159en u\u017eivatel objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>u\u017eivatel</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>u\u017eivatel\xe9</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>\u010cten\xed</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\u0159ena role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\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\xe1na role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Syst\xe9mov\xe1 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\xe1na role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\n        </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\u0159en u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat u\u017eivatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokra\u010dovat</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\xe1\u0161eni proto\u017ee va\u0161e role byly zm\u011bn\u011bny.</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\xe1n u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\xe1n u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\u0159ilo se smazat u\u017eivatele \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\xed jste p\u0159ihl\xe1\u0161en\xed jako \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c.\n        </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\u017ed\xfd objekt je rozd\u011blen v \u010d\xe1stech shluk\u016f dat, ka\u017ed\xe9 ulo\u017een\xe9 na jin\xe9m 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\u010d\xedtat k\xf3dovac\xed shluky pro ka\u017ed\xfd objekt a ukl\xe1dat je na r\u016fzn\xfdch OSD.\n      Po\u010det k\xf3dovac\xedch shluk\u016f je tak\xe9 po\u010det OSD, kter\xe9 mohou vypadnou, ani\u017e dojde ke ztr\xe1t\u011b 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\xe1suvn\xfd modul jerasure je nejobecn\u011bj\u0161\xed a nejp\u0159izp\u016fsobiv\u011bj\u0161\xed,\n je tak\xe9 v\xfdchoz\xed pro Ceph fondy k\xf3dovan\xe9 maz\xe1n\xedm.</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>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.</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\xe1suvn\xfd 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>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.</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>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.</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\xe1zev crush n\xe1doby slou\u017e\xedc\xed jako prvn\xed krok CRUSH pravidla.\n Nap\u0159\xedklad krok vz\xedt v\xfdchoz\xed.</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>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.</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\xedst\u011bn\xed na za\u0159\xedzen\xed ur\u010dit\xe9 t\u0159\xeddy\n      (nap\u0159., ssd nebo hdd), pomoc\xed n\xe1zvu crush t\u0159\xeddy za\u0159\xedzen\xed v  CRUSH map\u011b.</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\u017eku ze kter\xe9 na\u010d\xedtat z\xe1suvn\xfd modul mazac\xedho k\xf3du.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umo\u017enit v\u0161echny 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\u017enit pouze operace kter\xe9 neuprav\xed 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\u017e\u0148uje operace \u010dten\xed \u010di z\xe1pisu, ale umo\u017e\u0148uje ostatn\xed</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\u017e\u0148uje \u010dten\xed, z\xe1pis nebo jinou operaci kter\xe1 upravuje atributy        souboru nebo obsah slo\u017eky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumo\u017enit v\u016fbec \u017e\xe1dn\xfd p\u0159\xedstup</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\xedzk\xe1</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysok\xe1</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynul\xfdch 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynul\xfdch 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynul\xfdch 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynul\xe1 1 hodina (v\xfdchoz\xed)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynul\xe9 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynul\xfdch 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynul\xfdch 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynul\xfdch 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>V\u010dera</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\u010derej\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynul\xe9 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\xfd t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>P\u0159edchoz\xed t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento t\xfdden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynul\xfdch 7 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>P\u0159edchoz\xed m\u011bs\xedc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento m\u011bs\xedc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento m\u011bs\xedc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynul\xfdch 30 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynul\xfdch 90 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynul\xfdch 6 m\u011bs\xedc\u016f</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynul\xfd 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>P\u0159edchoz\xed 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\xe9 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynul\xfdch 5 let</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="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybr\xe1ny \u017e\xe1dn\xe9 polo\u017eky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby polo\u017eku bylo mo\u017en\xe9 znovu vybrat, je t\u0159eba nejprve zru\u0161it jej\xed v\xfdb\u011br</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosa\u017een limit v\xfdb\u011bru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat \u0161t\xedtky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>P\u0159idat 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 \u017e\xe1dn\xe9 polo\u017eky.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita slu\u017eby</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>Po\u017eadovan\xfd limit vst./v\xfdstup. bajt\u016f za sekundu.</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>Po\u017eadovan\xfd limit vst./v\xfdstup. operac\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Read BPS Limit</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\u017eadovan\xfd limit \u010dten\xed bajt\u016f za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Read IOPS Limit</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\u017eadovan\xfd limit operac\xed \u010dten\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Write BPS Limit</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\u017eadovan\xfd limit z\xe1pisu bajt\u016f za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Write IOPS Limit</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\u017eadovan\xfd limit operac\xed \u010dten\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS d\xe1vka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>The desired burst limit of IO bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky vst./v\xfdstup. operac\xed.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Read BPS Burst</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky bajt\u016f \u010dten\xed.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Read IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky \u010dten\xed bajt\u016f.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Write BPS Burst</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Po\u017eadovan\xfd limit bajt\u016f d\xe1vky z\xe1pisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Write IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky operace z\xe1pisu.</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\u0159ilo 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\xe1v\xe1 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\xe1no</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>nezn\xe1m\xfd \xfakol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytv\xe1\u0159\xed se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvo\u0159it</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Ma\u017ee se</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="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smaz\xe1no</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\xfd stav \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\n        </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\u017eim zrcadlen\xed pro fond \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\u011bj\u0161ek zrcadlen\xed pro fond \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\xe1zev u\u017e je pou\u017e\xedv\xe1n \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\xe1zev u\u017e je pou\u017e\xedv\xe1n \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\xe1zev u\u017e je pou\u017e\xedv\xe1n \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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\xe9 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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonov\xe1no</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\u0159eba, aby zachycen\xfd stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chr\xe1n\u011bn\xfd.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kop\xedruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkop\xedrovat</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkop\xedrov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zplo\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zplo\u0161tit</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zplo\u0161t\u011bno</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\xe1zev u\u017e je pou\u017e\xedv\xe1n 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\xed mo\u017en\xe9 zru\u0161it ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, proto\u017ee obsahuje pod\u0159\xedzen\xe9 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\xed mo\u017en\xe9 smazat, proto\u017ee je chr\xe1n\u011bn\xe9.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vz\xedt zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>P\u0159esouv\xe1 se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>p\u0159esunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>P\u0159esunuto</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c do ko\u0161e\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se neda\u0159\xed naj\xedt.</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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c do \u201e\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u201c\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\xe1zev \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c u\u017e je pou\u017e\xedv\xe1n pro jin\xfd 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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u010cist\xed se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vy\u010distit</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vy\u010di\u0161t\u011bno</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>v\u0161echny 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\xed nelze vypnout proto\u017ee obsahuje prot\u011bj\u0161ek.</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u201c\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\xedho k\xf3du \u201e\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201c\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\xedl \u201e\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u201c\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>'},McSo:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",function(){return a})},MdoF:function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"c",function(){return c}),n.d(e,"a",function(){return d});var a=n("CcnG"),r=n("lTVp"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),(t()(),a["\u0275eld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Close"]))],null,null)}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["role","alert"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"alert alert-"+n.type,n.classes),t(e,3,0,n.dismissible)},null)}function c(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,u)),a["\u0275did"](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 l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"alert",[],null,null,null,c,o)),a["\u0275did"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}var d=a["\u0275ccf"]("alert,bs-alert",r.a,l,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},Mfce:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");n("czA5"),e.DataTableRowWrapperComponent=function(){function t(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new i.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()}return Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())},t.prototype.onContextmenu=function(t){this.rowContextmenu.emit({event:t,row:this.row})},t.prototype.getGroupHeaderStyle=function(){var t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t},a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"detailRowHeight",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-row-wrapper",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div \n      *ngIf="groupHeader && groupHeader.template"\n      class="datatable-group-header"\n      [ngStyle]="getGroupHeaderStyle()">\n      <ng-template\n        *ngIf="groupHeader && groupHeader.template"\n        [ngTemplateOutlet]="groupHeader.template"\n        [ngTemplateOutletContext]="groupContext">\n      </ng-template>\n    </div>\n    <ng-content \n      *ngIf="(groupHeader && groupHeader.template && expanded) || \n             (!groupHeader || !groupHeader.template)">\n    </ng-content>\n    <div\n      *ngIf="rowDetail && rowDetail.template && expanded"\n      [style.height.px]="detailRowHeight"\n      class="datatable-row-detail">\n      <ng-template\n        *ngIf="rowDetail && rowDetail.template"\n        [ngTemplateOutlet]="rowDetail.template"\n        [ngTemplateOutletContext]="rowContext">\n      </ng-template>\n    </div>\n  ',host:{class:"datatable-row-wrapper"}})],t)}()},MgB7:function(t,e,n){"use strict";function a(t,e,n){var a,r,i;n=n||{};var o=null,s=0;function u(){s=!1===n.leading?0:+new Date,o=null,i=t.apply(a,r)}return function(){var c=+new Date;s||!1!==n.leading||(s=c);var l=e-(c-s);return a=this,r=arguments,l<=0?(clearTimeout(o),o=null,s=c,i=t.apply(a,r)):o||!1===n.trailing||(o=setTimeout(u,l)),i}}Object.defineProperty(e,"__esModule",{value:!0}),e.throttle=a,e.throttleable=function(t,e){return function(n,r,i){return{configurable:!0,enumerable:i.enumerable,get:function(){return Object.defineProperty(this,r,{configurable:!0,enumerable:i.enumerable,value:a(i.value,t,e)}),this[r]}}}}},MkmW:function(t,e,n){"use strict";e.hostReportError=function(t){setTimeout(function(){throw t})}},MuvH:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.getConfigData=function(){return this.http.get("api/cluster_conf/")},t.prototype.get=function(t){return this.http.get("api/cluster_conf/"+t)},t.prototype.filter=function(t){return this.http.get("api/cluster_conf/filter?names="+t.join(","))},t.prototype.create=function(t){return this.http.post("api/cluster_conf/",t)},t.prototype.delete=function(t,e){return this.http.delete("api/cluster_conf/"+t+"?section="+e)},t.prototype.bulkCreate=function(t){return this.http.put("api/cluster_conf/",t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},MwfX:function(t,e,n){"use strict";n.d(e,"a",function(){return d}),n.d(e,"b",function(){return p});var a=n("mrSG"),r=n("zo3G"),i=n("26FU"),o=n("6blF"),s=n("mZXl"),u=n("dC0D"),c=n("67Y/"),l=n("ad02"),d=function(t){function e(e,n,a){var i=t.call(this,e)||this;return n.pipe(Object(s.b)(r.a)).pipe(Object(u.a)(function(t,e){return e?a(t,e):t},e)).subscribe(function(t){return i.next(t)}),i}return Object(a.__extends)(e,t),e}(i.a),p=function(t){function e(e,n,a){var r=t.call(this)||this;return r._dispatcher=e,r._reducer=n,r.source=a,r}return Object(a.__extends)(e,t),e.prototype.select=function(t){return this.source.pipe(Object(c.a)(t)).pipe(Object(l.a)())},e.prototype.lift=function(t){var n=new e(this._dispatcher,this._reducer,this);return n.operator=t,n},e.prototype.dispatch=function(t){this._dispatcher.next(t)},e.prototype.next=function(t){this._dispatcher.next(t)},e.prototype.error=function(t){this._dispatcher.error(t)},e.prototype.complete=function(){},e}(o.a)},Mxhz:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/user")},t.prototype.delete=function(t){return this.http.delete("api/user/"+t)},t.prototype.get=function(t){return this.http.get("api/user/"+t)},t.prototype.create=function(t){return this.http.post("api/user",t)},t.prototype.update=function(t){return this.http.put("api/user/"+t.username,t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},NDi4:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("CcnG"),r=function(){return function(){this.title="Error",this.backAction=new a.EventEmitter}}()},NEZu:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(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}return t.prototype.customTooltips=function(t){var e=this;if(0!==t.opacity){if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){var n=t.title||[],a=t.body.map(function(t){return t.lines}),r="<thead>";n.forEach(function(t){r+="<tr><th>"+e.getTitle(t)+"</th></tr>"}),r+="</thead><tbody>",a.forEach(function(n,a){var i=t.labelColors[a],o="background:"+(e.customColors.backgroundColor||i.backgroundColor);o+="; border-color:"+(e.customColors.borderColor||i.borderColor),r+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+(o+="; border-width: 2px")+'"></span>'+e.getBody(n)+"</td></tr>"}),r+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=r}var i=this.chartEl.offsetTop,o=this.chartEl.offsetLeft;if(this.checkOffset){var s=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-s<0?this.tooltipEl.classList.add("transform-left"):t.caretX+s>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,o),this.tooltipEl.style.top=this.getStyleTop(t,i),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"}else this.tooltipEl.style.opacity=0},t.prototype.getBody=function(t){return t},t.prototype.getTitle=function(t){return t},t}()},NJnL:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("CcnG"),r=new(function(){function t(){}return t.prototype.position=function(t,e){var n;void 0===e&&(e=!0);var a={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(t,"position")){var r=t.getBoundingClientRect();n={width:r.width,height:r.height,top:r.top,bottom:r.bottom,left:r.left,right:r.right}}else{var i=this.offsetParent(t);n=this.offset(t,!1),i!==document.documentElement&&(a=this.offset(i,!1)),a.top+=i.clientTop,a.left+=i.clientLeft}return n.top-=a.top,n.bottom-=a.top,n.left-=a.left,n.right-=a.left,e&&(n.top=Math.round(n.top),n.bottom=Math.round(n.bottom),n.left=Math.round(n.left),n.right=Math.round(n.right)),n},t.prototype.offset=function(t,e){void 0===e&&(e=!0);var n=t.getBoundingClientRect(),a=window.pageYOffset-document.documentElement.clientTop,r=window.pageXOffset-document.documentElement.clientLeft,i={height:n.height||t.offsetHeight,width:n.width||t.offsetWidth,top:n.top+a,bottom:n.bottom+a,left:n.left+r,right:n.right+r};return e&&(i.height=Math.round(i.height),i.width=Math.round(i.width),i.top=Math.round(i.top),i.bottom=Math.round(i.bottom),i.left=Math.round(i.left),i.right=Math.round(i.right)),i},t.prototype.positionElements=function(t,e,n,a){var r=a?this.offset(t,!1):this.position(t,!1),i=this.getAllStyles(e),o=e.getBoundingClientRect(),s=n.split(" ")[0]||"top",u=n.split(" ")[1]||"center",c={height:o.height||e.offsetHeight,width:o.width||e.offsetWidth,top:0,bottom:o.height||e.offsetHeight,left:0,right:o.width||e.offsetWidth},l={top:r.top,center:r.top+r.height/2-c.height/2,bottom:r.top+r.height},d={left:r.left,center:r.left+r.width/2-c.width/2,right:r.left+r.width};if("auto"===s){var p=this.autoPosition(c,r,e,u);p||(p=this.autoPosition(c,r,e)),p&&(s=p),e.classList.add(s)}switch(s){case"top":c.top=r.top-(c.height+parseFloat(i.marginBottom)),c.bottom+=r.top-c.height,c.left=d[u],c.right+=d[u];break;case"bottom":c.top=l[s],c.bottom+=l[s],c.left=d[u],c.right+=d[u];break;case"left":c.top=l[u],c.bottom+=l[u],c.left=r.left-(c.width+parseFloat(i.marginRight)),c.right+=r.left-c.width;break;case"right":c.top=l[u],c.bottom+=l[u],c.left=d[s],c.right+=d[s]}return c.top=Math.round(c.top),c.bottom=Math.round(c.bottom),c.left=Math.round(c.left),c.right=Math.round(c.right),c},t.prototype.autoPosition=function(t,e,n,a){return(!a||"right"===a)&&t.left+e.left-t.width<0?"right":(!a||"top"===a)&&t.bottom+e.bottom+t.height>window.innerHeight?"top":(!a||"bottom"===a)&&t.top+e.top-t.height<0?"bottom":(!a||"left"===a)&&t.right+e.right+t.width>window.innerWidth?"left":null},t.prototype.getAllStyles=function(t){return window.getComputedStyle(t)},t.prototype.getStyle=function(t,e){return this.getAllStyles(t)[e]},t.prototype.isStaticPositioned=function(t){return"static"===(this.getStyle(t,"position")||"static")},t.prototype.offsetParent=function(t){for(var e=t.offsetParent||document.documentElement;e&&e!==document.documentElement&&this.isStaticPositioned(e);)e=e.offsetParent;return e||document.documentElement},t}()),i=function(){function t(){}return t.prototype.position=function(t){var e=t.element,n=t.attachment,a=t.appendToBody;!function(t,e,a,i){var o=r.positionElements(t,e,n,i);e.style.top=o.top+"px",e.style.left=o.left+"px"}(o(t.target),o(e),0,a)},t}();function o(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},NUGo:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("ZYCi"),o=n("xtZt"),s=n("lqqz");n("S7zO"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return g});var u=a["\u0275crt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"button",[["class","btn btn-sm btn-primary"],["type","button"]],null,[[null,"click"]],function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["\u0275nov"](t,4).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r},null,null)),a["\u0275did"](2,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](3,{disabled:0}),a["\u0275did"](4,16384,null,0,i.m,[i.l,i.a,[8,null],a.Renderer2,a.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""]))],function(t,e){var n=e.component,a=t(e,3,0,n.disableSelectionAction(e.context.ngIf));t(e,2,0,"btn btn-sm btn-primary",a),t(e,4,0,n.useRouterLink(e.context.ngIf))},function(t,e){t(e,5,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.ngIf.icon,"")),t(e,7,0,e.context.ngIf.name)})}function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.component.onlyDropDown)})}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"button",[["class","btn btn-sm btn-primary dropdown-toggle dropdown-toggle-split"],["dropdownToggle",""],["type","button"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,1).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,1).onEsc()&&r),r},null,null)),a["\u0275did"](1,147456,null,0,o.g,[o.f,a.ElementRef,o.c],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,l)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](4,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](6,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.onlyDropDown),t(e,6,0,!n.onlyDropDown)},function(t,e){t(e,0,0,!0,a["\u0275nov"](e,1).isDisabled,a["\u0275nov"](e,1).isOpen)})}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,7,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"title",0]],null,null,null,null)),a["\u0275did"](2,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](3,{disabled:0}),(t()(),a["\u0275eld"](4,0,null,null,4,"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["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r},null,null)),a["\u0275did"](5,671744,null,0,i.o,[i.l,i.a,r.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,["",""]))],function(t,e){var n=e.component,r=a["\u0275inlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),i=t(e,3,0,n.disableSelectionAction(e.context.$implicit));t(e,2,0,r,i),t(e,5,0,n.useRouterLink(e.context.$implicit))},function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"",e.component.useDisableDesc(e.context.$implicit),"")),t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href),t(e,6,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.$implicit.icon,"")),t(e,8,0,e.context.$implicit.name)})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](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 g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,o.f,o.f,[]),a["\u0275did"](2,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a,o.f],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,c)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](8,16384,null,0,o.d,[o.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["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4)})}},Nehr:function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},Nia1:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("3/HP")),a(n("FLvf")),a(n("2V7f")),a(n("fktO")),a(n("QHrR")),a(n("i3PA"))},O5R2:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("VnD/");a.a.prototype.filter=function(t,e){return Object(r.a)(t,e)(this)}},OAkW:function(t,e,n){"use strict";e.subscribeToArray=function(t){return function(e){for(var n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.closed||e.complete()}}},ODdm:function(t,e,n){"use strict";t.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},OIYi:function(t,e,n){!function(t){"use strict";n("wd/R").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")}})}()},OLbh:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("gIcY"),r=function(){function t(t){this.modalRef=t,this.boundCancel=this.cancel.bind(this),this.confirmationForm=new a.k({})}return t.prototype.ngOnInit=function(){this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData},t.prototype.cancel=function(){this.modalRef.hide(),this.onCancel&&this.onCancel()},t.prototype.stopLoadingSpinner=function(){this.confirmationForm.setErrors({cdSubmitButton:!0})},t}()},"OWV/":function(t,e){t.exports='<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\xe7\xe3o</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</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\xe7\xe3o</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\xf3dulos 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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertas</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\xe1rios</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>Recuperando dados\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> de\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>"/>. Aguarde...\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>Exibindo dados armazenados em cache anteriormente\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  para \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>N\xe3o foi poss\xedvel carregar os dados\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> de\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  Verifique a sa\xfade do cluster.\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="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>Consulte a\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre como\n  configurar e habilitar a funcionalidade de monitoramento.\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>O Painel de Controle do Grafana n\xe3o existe. Consulte a\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre como\n  adicionar pain\xe9is de controle ao Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Hor\xe1rio do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configura\xe7\xf5es</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="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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configura\xe7\xf5es</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\xe3o costuma ser necess\xe1rio mudar o valor padr\xe3o destes par\xe2metros.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configura\xe7\xf5es Avan\xe7adas</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo \xe9 obrigat\xf3rio.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padr\xe3o incorreto.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Um IQN tem a seguinte nota\xe7\xe3o \'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\xe7\xf5es</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\xe7\xf5es avan\xe7adas 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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Pelo menos \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways s\xe3o necess\xe1rios.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configura\xe7\xf5es modificadas.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Pelo menos 1 imagem \xe9 necess\xe1ria.</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\xe7\xe3o ACL</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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usu\xe1rio</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\xe1rio 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="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usu\xe1rio M\xfatuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha M\xfatua</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\xe3o 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</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>Deseja realmente \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> o(a) \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> selecionado(a)?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autentica\xe7\xe3o de Descoberta</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\xe1rio devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento de Destinos iSCSI.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informa\xe7\xf5es dispon\xedveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI n\xe3o dispon\xedveis</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' n\xe3o s\xe3o permitidos.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- N\xe3o h\xe1 pools de RBD dispon\xedveis --</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="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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- N\xe3o h\xe1 pools de dados dispon\xedveis --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Voc\xea precisa aumentar o tamanho.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avan\xe7ado...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avan\xe7ado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribui\xe7\xe3o</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="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribui\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribui\xe7\xe3o --</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 \xe9 obrigat\xf3rio porque o total de distribui\xe7\xf5es 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\xe7\xe3o \xe9 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\xe7\xf5es</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 \xe9 obrigat\xf3rio porque a unidade de distribui\xe7\xe3o 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\xe7\xf5es deve ser maior do que 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</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="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descri\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descri\xe7\xe3o extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padr\xe3o</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padr\xe3o do daemon</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servi\xe7os</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="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>O valor inserido \xe9 muito alto! Ele n\xe3o pode ser maior do que \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>O valor inserido \xe9 muito baixo! Ele n\xe3o deve ser menor do que \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</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="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configura\xe7\xe3o...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar a configura\xe7\xe3o.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar m\xf3dulo 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\xe3o \xe9 um UUID v\xe1lido. 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\xe7o IP v\xe1lido.</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>O valor inserido \xe9 muito alto! Ele deve ser menor ou igual a \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>O valor inserido \xe9 muito baixo! Ele deve ser maior ou igual a \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\xfamero.</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\xfamero 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>\xe9poca 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\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigat\xf3rio</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\xe3o est\xe1 no Quorum</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="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recupera\xe7\xe3o 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 \xe9 obrigat\xf3rio!</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>O valor inserido \xe9 muito alto! Ele n\xe3o pode ser maior do que \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>O valor inserido \xe9 muito baixo! Ele n\xe3o deve ser menor do que \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Reponderar OSD</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>Remo\xe7\xe3o de OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Voc\xea est\xe1 prestes a aplicar uma \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>remo\xe7\xe3o ao\n            OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> ser\xe1 marcado como\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>"/> se voc\xea continuar.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>N\xe3o \xe9 seguro destruir o OSD!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> ser\xe1\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>"/> se voc\xea continuar.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Sa\xfade</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estat\xedsticas</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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento do NFS Ganesha.\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\xe7os</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigat\xf3rio</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\xedrgula</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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Exporta\xe7\xe3o do NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- N\xe3o h\xe1 clusters dispon\xedveis --</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="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\xe1rio do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- N\xe3o h\xe1 usu\xe1rios dispon\xedveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usu\xe1rio 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\xe1rio do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- N\xe3o h\xe1 clientes dispon\xedveis --</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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>R\xf3tulo de Seguran\xe7a</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar r\xf3tulo de seguran\xe7a</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\xe7ar 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\xf3rio ser\xe1 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\xe1 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>Acesso alternativo \xe0s montagens do \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>"/> (n\xe3o deve ter / \xe0 esquerda).\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\xe3o podem montar subdiret\xf3rios (ou seja, se Tag = foo, o cliente n\xe3o poder\xe1 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\xe7\xf5es diferentes de Tag, o mesmo Caminho pode ser exportado v\xe1rias 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>A posi\xe7\xe3o que esta exporta\xe7\xe3o de \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>"/> ocupa\n                no \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>"/> (deve ser exclusiva).\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\xe7\xf5es diferentes de Pseudo, o mesmo Caminho pode ser exportado v\xe1rias vezes.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- N\xe3o h\xe1 tipos de acesso dispon\xedveis --</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="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- N\xe3o h\xe1 squashes dispon\xedveis --</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\xe1rio ser\xe1 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="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\xe9ricos, tra\xe7os 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\xf3digo de elimina\xe7\xe3o escolhido j\xe1 est\xe1 em uso.</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\xe7\xe3o (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\xednio 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\xe9cnica</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\xf3rio</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="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</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\xe1 est\xe1 em uso.</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="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 \xe9 necess\xe1rio!</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\xe3o pode processar tantos PGs. Recalcule a quantidade de PG necess\xe1ria.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Apenas \xe9 poss\xedvel aumentar o n\xfamero de PGs de um pool existente.\n                No momento, seu pool tem \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no c\xe1lculo</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>As configura\xe7\xf5es de PGs atuais foram calculadas para voc\xea. Verifique\n                    se os valores atendem \xe0s suas necessidades antes de enviar.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Imposs\xedvel usar a regra no cluster atual porque ela tem\n                poucos OSDs para atender ao OSD m\xednimo necess\xe1rio para esta regra.</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>M\xednimo: \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>M\xe1ximo: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>O tamanho especificado est\xe1 fora da faixa. Um valor de\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> a \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \xe9 v\xe1lido.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do c\xf3digo de elimina\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- N\xe3o h\xe1 perfis de c\xf3digo de elimina\xe7\xe3o dispon\xedveis --</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\xf3digo de elimina\xe7\xe3o --</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\xe7\xf5es 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="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compacta\xe7\xe3o</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\xe3o h\xe1 algoritmos de compacta\xe7\xe3o de elimina\xe7\xe3o dispon\xedveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho m\xednimo 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="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho m\xe1ximo 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\xednimo 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\xe7\xe3o</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Imposs\xedvel criar um pool de RBD com \'/\' no nome.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Altere o nome ou remova o \'rbd\' da lista de aplicativos.</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="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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento do Gateway de Objetos.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar os 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\xe3o \xe9 v\xe1lido.</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\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriet\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usu\xe1rio --</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="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\xe3o</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permiss\xe3o --</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="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usu\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usu\xe1rio --</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="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusu\xe1rio</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\xe1rio escolhido j\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, grava\xe7\xe3o</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\xe1rio...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar os dados do usu\xe1rio.</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\xe1rio escolhido j\xe1 est\xe1 em uso.</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\xe7o de e-mail</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\xe3o \xe9 um endere\xe7o de e-mail v\xe1lido.</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\xe7o de e-mail escolhido j\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>M\xe1x. de compartimentos</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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusu\xe1rios</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>N\xe3o h\xe1 subusu\xe1rios.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</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\xe3o h\xe1 chaves.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</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="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>N\xe3o h\xe1 recursos.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usu\xe1rio</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="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\xe1x.</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\xe1x. de objetos</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="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\xe1rio \xe9 obrigat\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha \xe9 obrigat\xf3ria</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="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descri\xe7\xe3o...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permiss\xf5es</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\xe1rio n\xe3o 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>Retorne \xe0 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\xe1gina de Login\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Seu logout ser\xe1 efetuado do Provedor de Identidade quando voc\xea repetir o login.\n        </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\xe7\xe3o de senha n\xe3o corresponde \xe0 senha.</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\xe1lido.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Fun\xe7\xf5es</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\xea est\xe1 prestes a remover as permiss\xf5es de "leitura/atualiza\xe7\xe3o de usu\xe1rio" do seu pr\xf3prio usu\xe1rio.</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\xea continuar, n\xe3o poder\xe1 mais adicionar ou remover fun\xe7\xf5es de nenhum usu\xe1rio.</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="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\xea n\xe3o tem permiss\xe3o para ver o que est\xe1 procurando.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>N\xe3o foi poss\xedvel localizar o que voc\xea est\xe1 procurando</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Remover tudo</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifica\xe7\xf5es Recentes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>N\xe3o h\xe1 tarefas em segundo plano.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tarefas em Segundo Plano</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\xe7\xe3o</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\xe7\xf5es 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\xe1rios</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usu\xe1rio 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>Efetuar login como\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</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 \xedndice</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\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Vers\xe3o</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Vers\xe3o master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hor\xe1rio da modifica\xe7\xe3o</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho m\xe1ximo</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\xe1ximo de objetos</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {N\xe3o} 1 {Sim} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>M\xe1ximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho n\xe3o dispon\xedveis</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</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="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configura\xe7\xe3o 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\xe7\xe3o local. No lugar dele, o valor de configura\xe7\xe3o pai ser\xe1 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\xednimo \xe9 0</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\xe3o dispon\xedveis</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="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>Histograma n\xe3o dispon\xedvel: \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\xe7\xf5es</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="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\xedn.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>M\xe1x.</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\xedvel</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\xe7\xe3o (edit\xe1vel)</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\xe9m</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\xe7\xe3o do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remo\xe7\xe3o</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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</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>"/> Consulte os \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Registros\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> para obter mais detalhes.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Para mover \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> para o lixo,\n          clique em \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mover Imagem\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Se preferir, escolha uma data de vencimento.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da prote\xe7\xe3o em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>N\xc3O 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\xe7\xe3o j\xe1 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="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Vis\xe3o 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="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>Dispon\xedvel apenas para imagens RBD com \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>diff r\xe1pido\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> habilitado\n        </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="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\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribui\xe7\xf5es</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\xe2neos</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configura\xe7\xe3o substitui o valor 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 \xe9 o valor global. Nenhum valor para esta op\xe7\xe3o foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Instant\xe2neo do RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renomear} other {Criar} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Instant\xe2neo\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>N\xc3O PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Voc\xea est\xe1 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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Para purgar, selecione uma ou Todas as imagens e clique em</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</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\xe9</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>Esta imagem est\xe1 protegida at\xe9 \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="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\xa0\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\xa0\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>Para editar o modo de espelho do pool\xa0\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>"/>, selecione o novo modo na lista e clique em\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Atualizar\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  peer de espelho do pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> os atributos\n          de peer de espelho do 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>"/> e clique em \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Enviar\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\xe3o \xe9 v\xe1lido.</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\xe3o \xe9 v\xe1lido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endere\xe7os do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endere\xe7os delimitados por v\xedrgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endere\xe7o de monitoria n\xe3o \xe9 v\xe1lido.</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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posi\xe7\xf5es</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clientes: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xe7\xe3o 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\xe3o h\xe1 portais dispon\xedveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>N\xe3o h\xe1 imagens dispon\xedveis.</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\xe3o h\xe1 imagens dispon\xedveis. 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\xe3o h\xe1 iniciadores dispon\xedveis. Adicione um iniciador ao destino.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</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\xe7\xe3o</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\xe7\xe3o</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\xe2ncia</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edi\xe7\xe3o</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\xba Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N\xba 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</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\xe7\xe3o 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\xe1rio (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Diff r\xe1pido (requer mapa de objetos)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar prote\xe7\xe3o</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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instant\xe2neo do RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instant\xe2neo do RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Exclu\xeddo \xe0(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\xe3o</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="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posi\xe7\xe3o</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\xc9 poss\xedvel atualizar o valor em temo de execu\xe7\xe3o.</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\xe3o extraem este valor do\n      banco de dados de configura\xe7\xe3o do monitor. A configura\xe7\xe3o desta op\xe7\xe3o n\xe3o \xe9 permitida por meio de \'ceph config\n      set ...\'. Essa op\xe7\xe3o 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\xe7\xe3o entra em vigor apenas durante a inicializa\xe7\xe3o 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\xe7\xe3o afeta apenas a cria\xe7\xe3o 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\xe7\xe3o afeta apenas a cria\xe7\xe3o 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>Op\xe7\xe3o de configura\xe7\xe3o \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> atualizada\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servi\xe7o</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\xe1vel</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>Op\xe7\xf5es atualizadas para o m\xf3dulo &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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\xe7o P\xfablico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sess\xf5es Abertas</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>N\xe3o 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\xe1 foram marcados como sa\xedda n\xe3o ser\xe3o 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\xe3o Sa\xedda</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\xe3o ser\xe3o automaticamente marcados como sa\xedda ap\xf3s o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>N\xe3o 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\xe3o podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>N\xe3o 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\xf3rios de falha de OSD est\xe3o sendo ignorados, portanto, os monitores n\xe3o marcar\xe3o 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\xe7\xf5es</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remo\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remo\xe7\xe3o desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remo\xe7\xe3o Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remo\xe7\xe3o 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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupera\xe7\xe3o de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classifica\xe7\xe3o Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classifica\xe7\xe3o 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\xf5es de Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclus\xf5es realizadas durante a recupera\xe7\xe3o, e n\xe3o o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite F\xedsico 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\xedsico 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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remo\xe7\xe3o Profunda</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Sa\xedda</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sa\xedda</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</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\xeddo</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Bytes de grava\xe7\xe3o</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\xe7\xe3o</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>Marcar OSD como \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>Marcar como \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>M\xe1x. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>M\xe1x. Recupera\xe7\xe3o Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>M\xe1x. Recupera\xe7\xe3o Inicializa\xe7\xe3o \xdanica</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspens\xe3o de Recupera\xe7\xe3o</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Prioridade de velocidade de recupera\xe7\xe3o de OSD &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot atualizada;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> foi inicializado no seguinte OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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\xe7o NFS Ganesha n\xe3o est\xe1 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\xe1rio 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\xe7\xe3o global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configura\xe7\xe3o 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\xe1rio ser\xe1 executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>N\xe3o h\xe1 daemons dispon\xedveis.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Exportar</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\xedn. Expuls\xe3o</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo M\xedn. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>M\xe1x. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>M\xe1x. 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\xe9 quatro defini\xe7\xf5es 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\xe1ximo 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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de c\xf3digo de elimina\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da R\xe9plica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\xdaltima Altera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Elimina\xe7\xe3o</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de grava\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Compartimento do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; atualizado\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>Compartimento do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; criado\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</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>Usu\xe1rio do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot; atualizado\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>Usu\xe1rio do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot; criado\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usu\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usu\xe1rios</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' criada\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>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' atualizada\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Fun\xe7\xe3o 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>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' exclu\xedda\n        </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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; criado\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usu\xe1rio</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\xea foi automaticamente desconectado porque suas fun\xe7\xf5es 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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; atualizado\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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; exclu\xeddo\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>Falha ao excluir o usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>No momento, voc\xea est\xe1 conectado como &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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 \xe9 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\xe7\xe3o de cada objeto e armazene-os em diferentes OSDs.\n      O n\xfamero de pacotes de codifica\xe7\xe3o \xe9 tamb\xe9m o n\xfamero 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 \xe9 o mais gen\xe9rico e flex\xedvel,\n          al\xe9m de ser o padr\xe3o para pools codificados para elimina\xe7\xe3o 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\xe9cnica mais flex\xedvel \xe9 reed_sol_van: ela \xe9 suficiente para definir k\n          e m. A t\xe9cnica cauchy_good pode ser mais r\xe1pida, mas voc\xea precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion s\xe3o equivalentes ao RAID6\n          no sentido de que s\xf3 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\xe7\xe3o ser\xe1 feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo \xe9 dif\xedcil.\n          A documenta\xe7\xe3o do jerasure cont\xe9m informa\xe7\xf5es completas sobre este t\xf3pico.</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\xe7\xe3o \xe9 armazenado em\n          v\xe1rios OSDs, a recupera\xe7\xe3o ap\xf3s 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\xe1 a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de c\xf3digo de elimina\xe7\xe3o 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\xe1\n          um pacote de paridade adicional para cada quatro OSDs. Quando um \xfanico OSD \xe9 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\xe7\xe3o 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\xeas s\xe3o 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\xe1 armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l ser\xe1\n          colocado em um rack diferente. Isso \xe9 usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso n\xe3o for definido, esse tipo de agrupamento n\xe3o ser\xe1 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 \xe9 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\xe1 Vandermonde, se cauchy for definido, ele ser\xe1 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\xfaltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais efici\xeancia do que os c\xf3digos 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\xfamero de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de c\xe1lculo. O n\xfamero \xe9 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\xe3o.</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\xe3o h\xe1 dois pacotes em um compartimento com o mesmo dom\xednio de\n      falha. Por exemplo, se o dom\xednio de falha for um host, n\xe3o armazene dois pacotes no mesmo\n      host. Isso \xe9 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\xedfica\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\xf3rio do qual o plug-in de c\xf3digo de elimina\xe7\xe3o \xe9 carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as opera\xe7\xf5es</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\xe7\xf5es que n\xe3o 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\xe3o permite opera\xe7\xf5es de leitura ou grava\xe7\xe3o, mas permite qualquer outra opera\xe7\xe3o</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\xe3o permite leitura, grava\xe7\xe3o ou qualquer opera\xe7\xe3o que modifica os atributos do arquivo ou o conte\xfado do diret\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\xe3o 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="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\xdaltimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\xdaltimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\xdaltimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\xdaltima 1 hora (Padr\xe3o)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\xdaltimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\xdaltimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\xdaltimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\xdaltimas 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\xe9 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>\xdaltimos 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\xe9 agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\xdaltimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>M\xeas anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este m\xeas</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>At\xe9 agora neste m\xeas</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\xdaltimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\xdaltimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\xdaltimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\xdaltimo 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\xe9 agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\xdaltimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\xdaltimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informa\xe7\xf5es</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\xe7\xe3o 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\xe3o h\xe1 itens dispon\xedveis.</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\xe3o</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Servi\xe7o</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\xe7\xf5es 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\xe7\xf5es 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\xe7\xe3o</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\xe7\xe3o 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\xe7\xe3o</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\xe7\xf5es por segundo de grava\xe7\xe3o desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermit\xeancia 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\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermit\xeancia 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\xe7\xf5es de E/S de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermit\xeancia 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\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermit\xeancia 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\xe7\xf5es de leitura de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermit\xeancia de BPS de Grava\xe7\xe3o</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\xe7\xe3o de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermit\xeancia de IOPS de Grava\xe7\xe3o</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\xe7\xf5es de grava\xe7\xe3o de intermit\xeancia 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>Falha ao \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Exclu\xeddo</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>Instant\xe2neo do RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>modo de espelho para o 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>espelhar peer para o pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nome j\xe1 foi usado por \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>Nome j\xe1 foi usado por \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>Nome j\xe1 foi usado por \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> cont\xe9m instant\xe2neos.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</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>O instant\xe2neo de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> deve ser protegido.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</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>Nome j\xe1 foi usado por \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>Imposs\xedvel cancelar a prote\xe7\xe3o de \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque h\xe1 imagens filho.\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>Imposs\xedvel excluir \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque est\xe1 protegido.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</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>imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' para jogar no lixo\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem n\xe3o 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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</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>imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' para \'\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>Nome da imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' j\xe1 est\xe1 em uso.\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>imagem \'\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</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>imagens de \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\xedvel desabilitar espelhamento porque ele cont\xe9m um peer.</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>perfil de c\xf3digo de elimina\xe7\xe3o \'\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>destino \'\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>'},OXbD:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=a.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}a._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),t.exports=r.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:s,inXRange:s,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._model,r=this._chart.ctx,s=e.pointStyle,u=e.rotation,c=e.radius,l=e.x,d=e.y;e.skip||(void 0===t||n.x>=t.left&&1.01*t.right>=n.x&&n.y>=t.top&&1.01*t.bottom>=n.y)&&(r.strokeStyle=e.borderColor||o,r.lineWidth=i.valueOrDefault(e.borderWidth,a.global.elements.point.borderWidth),r.fillStyle=e.backgroundColor||o,i.canvas.drawPoint(r,s,c,l,d,u))}})},OZfm:function(t,e,n){"use strict";n.d(e,"c",function(){return u}),n.d(e,"d",function(){return c}),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var a=n("rpEJ"),r=n("lqqz"),i=n("NJnL"),o=function(){return function(){this.placement="top",this.triggers="click",this.outsideClick=!1}}(),s=function(){function t(t){Object.assign(this,t)}return Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),t}(),u=function(){function t(t,e,n,a,r){this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(t,n,e).provide({provide:o,useValue:a}),Object.assign(this,a),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&t.nativeElement.addEventListener("click",function(){try{t.nativeElement.focus()}catch(e){return}})}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._popover.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),t.prototype.show=function(){!this._popover.isShown&&this.popover&&(this._popover.attach(s).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.isOpen=!0)},t.prototype.hide=function(){this.isOpen&&(this._popover.hide(),this.isOpen=!1)},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.ngOnInit=function(){var t=this;this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:function(){return t.show()}}))},t.prototype.ngOnDestroy=function(){this._popover.dispose()},t}(),c=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[o,r.a,i.a]}},t}()},Oaa7:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":r="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":r="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":r="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":r="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":r="%d \u0924\u093e\u0938";break;case"d":r="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":r="%d \u0926\u093f\u0935\u0938";break;case"M":r="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":r="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":r="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":r="%d \u0935\u0930\u094d\u0937\u0947"}else switch(n){case"s":r="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":r="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":r="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":r="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":r="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":r="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":r="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":r="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":r="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":r="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":r="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":r="%d \u0935\u0930\u094d\u0937\u093e\u0902"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",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(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924\u094d\u0930\u0940|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924\u094d\u0930\u0940"===e?t<4?t:t+12:"\u0938\u0915\u093e\u0933\u0940"===e?t:"\u0926\u0941\u092a\u093e\u0930\u0940"===e?t>=10?t:t+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924\u094d\u0930\u0940":t<10?"\u0938\u0915\u093e\u0933\u0940":t<17?"\u0926\u0941\u092a\u093e\u0930\u0940":t<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}})}(n("wd/R"))},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924\u093f"===e?t<4?t:t+12:"\u092c\u093f\u0939\u093e\u0928"===e?t:"\u0926\u093f\u0909\u0901\u0938\u094b"===e?t>=10?t:t+12:"\u0938\u093e\u0901\u091d"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"\u0930\u093e\u0924\u093f":t<12?"\u092c\u093f\u0939\u093e\u0928":t<16?"\u0926\u093f\u0909\u0901\u0938\u094b":t<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}})}(n("wd/R"))},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};t.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".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:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0448\u0430\u0431"===e?t<4?t:t+12:"\u0441\u0443\u0431\u04b3"===e?t:"\u0440\u04ef\u0437"===e?t>=11?t:t+12:"\u0431\u0435\u0433\u043e\u04b3"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0448\u0430\u0431":t<11?"\u0441\u0443\u0431\u04b3":t<16?"\u0440\u04ef\u0437":t<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},P6uZ:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("3fWJ"),r=n("VnD/"),i=n("t9fZ"),o=n("HJBe"),s=n("tNVB"),u=n("mChF");function c(t,e){var n=arguments.length>=2;return function(c){return c.pipe(t?Object(r.a)(function(e,n){return t(e,n,c)}):u.a,Object(i.a)(1),n?Object(o.a)(e):Object(s.a)(function(){return new a.a}))}}},P8lu:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var a=n("mrSG"),r=n("t/Na"),i=n("LvDl"),o=n("VNr4"),s=n("F/XL"),u=n("psW0"),c=n("xTzq"),l=n("CcnG"),d=n("pL04"),p=function(){function t(t){this.http=t,this.url="api/rgw/user"}return t.prototype.list=function(){var t=this;return this.enumerate().pipe(Object(u.a)(function(e){return e.length>0?Object(o.a)(e.map(function(e){return t.get(e)})):Object(s.a)([])}))},t.prototype.enumerate=function(){return this.http.get(this.url)},t.prototype.enumerateEmail=function(){return this.http.get(this.url+"/get_emails")},t.prototype.get=function(t){return this.http.get(this.url+"/"+t)},t.prototype.getQuota=function(t){return this.http.get(this.url+"/"+t+"/quota")},t.prototype.create=function(t){var e=new r.h;return i.keys(t).forEach(function(n){e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})},t.prototype.update=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.put(this.url+"/"+t,null,{params:n})},t.prototype.updateQuota=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.put(this.url+"/"+t+"/quota",null,{params:n})},t.prototype.delete=function(t){return this.http.delete(this.url+"/"+t)},t.prototype.createSubuser=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.post(this.url+"/"+t+"/subuser",null,{params:n})},t.prototype.deleteSubuser=function(t,e){return this.http.delete(this.url+"/"+t+"/subuser/"+e)},t.prototype.addCapability=function(t,e,n){var a=new r.h;return a=(a=a.append("type",e)).append("perm",n),this.http.post(this.url+"/"+t+"/capability",null,{params:a})},t.prototype.deleteCapability=function(t,e,n){var a=new r.h;return a=(a=a.append("type",e)).append("perm",n),this.http.delete(this.url+"/"+t+"/capability",{params:a})},t.prototype.addS3Key=function(t,e){var n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.post(this.url+"/"+t+"/key",null,{params:n})},t.prototype.deleteS3Key=function(t,e){var n=new r.h;return n=(n=n.append("key_type","s3")).append("access_key",e),this.http.delete(this.url+"/"+t+"/key",{params:n})},t.prototype.exists=function(t){return this.enumerate().pipe(Object(u.a)(function(e){var n=i.indexOf(e,t);return Object(s.a)(-1!==n)}))},t.prototype.emailExists=function(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(u.a)(function(e){var n=i.indexOf(e,t);return Object(s.a)(-1!==n)}))},t.ngInjectableDef=l.defineInjectable({factory:function(){return new t(l.inject(r.c))},token:t,providedIn:d.a}),t=a.__decorate([c.a,a.__metadata("design:paramtypes",[r.c])],t)}()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),n="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),a=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],r=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function o(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"p\xe1r sekund":"p\xe1r 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\xed"):r+"dny";case"M":return e||a?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return e||a?r+(i(t)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):r+"m\u011bs\xedci";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|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},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});var a=function(){return function(){}}()},"PEr+":function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("EEJc"),o=n("ajRT"),s=n("gIcY"),u=n("IZUe"),c=n("gp3X"),l=n("sb0X"),d=n("KVJa"),p=n("Z21x"),f=n("sne2"),h=n("0+/T"),g=n("DQlY");n.d(e,"a",function(){return I});var m=a["\u0275crt"]({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%]   .checkbox[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["Are you sure that you want to "," "])),a["\u0275ppd"](2,1),(t()(),a["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](4,null,["",""])),(t()(),a["\u0275ted"](-1,null,["?"]))],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,1,0,t(e,2,0,a["\u0275nov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r),t(e,4,0,n.itemNames[0])})}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["Are you sure that you want to "," the selected items?"])),a["\u0275ppd"](2,1),(t()(),a["\u0275eld"](3,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](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["\u0275unv"](e,1,0,t(e,2,0,a["\u0275nov"](e.parent.parent,0),n.actionDescription));t(e,1,0,r)})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,v)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["manyNames",2]],null,0,null,_))],function(t,e){t(e,2,0,1===e.component.itemNames.length,a["\u0275nov"](e,3))},null)}function w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["Are you sure that you want to "," the selected ","?"])),a["\u0275ppd"](2,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,1,0,t(e,2,0,a["\u0275nov"](e.parent,0),n.actionDescription));t(e,1,0,r,n.itemDescription)})}function S(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function O(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," ","\n"])),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)})}function k(t){return a["\u0275vid"](0,[a["\u0275pid"](0,r.LowerCasePipe,[]),a["\u0275pid"](0,r.TitleCasePipe,[]),a["\u0275qud"](402653184,1,{submitButton:0}),(t()(),a["\u0275eld"](3,0,null,null,37,"cd-modal",[],null,null,null,i.c,i.b)),a["\u0275did"](4,49152,[["modal",4]],0,o.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](8,0,null,1,32,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,31,"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["\u0275nov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,11).onReset()&&r),r},null,null)),a["\u0275did"](10,16384,null,0,s.D,[],null,null),a["\u0275did"](11,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,s.d,null,[s.l]),a["\u0275did"](13,16384,null,0,s.s,[[4,s.d]],null,null),(t()(),a["\u0275eld"](14,0,null,null,19,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](16,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](17,0,null,null,16,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,T)),a["\u0275did"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["noNames",2]],null,0,null,w)),(t()(),a["\u0275eld"](21,0,null,null,12,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](22,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](23,{"has-error":0}),(t()(),a["\u0275eld"](24,0,null,null,9,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,26).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,26).onTouched()&&r),r},null,null)),a["\u0275did"](26,16384,null,0,s.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.c]),a["\u0275did"](28,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,s.q,null,[s.j]),a["\u0275did"](30,16384,null,0,s.r,[[4,s.q]],null,null),a["\u0275did"](31,4210688,null,0,u.a,[a.ElementRef],null,null),(t()(),a["\u0275eld"](32,0,null,null,1,"label",[["for","confirmation"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Yes, I am sure."])),(t()(),a["\u0275eld"](34,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](35,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},c.b,c.a)),a["\u0275did"](36,114688,[[1,4],["submitButton",4]],0,l.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275and"](16777216,null,0,1,null,S)),a["\u0275did"](38,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](39,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),a["\u0275did"](40,49152,null,0,p.a,[r.Location,f.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["\u0275and"](0,[["deletionHeading",2]],null,0,null,O))],function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["\u0275nov"](e,41)),t(e,11,0,n.deletionForm),t(e,16,0,n.bodyContext,n.bodyTemplate),t(e,19,0,n.itemNames,a["\u0275nov"](e,20));var r=t(e,23,0,n.deletionForm.showError("confirmation",a["\u0275nov"](e,11)));t(e,22,0,"form-group",r),t(e,28,0,"confirmation"),t(e,36,0,n.deletionForm),t(e,38,0,a["\u0275nov"](e,41)),t(e,40,0,"Cancel",n.modalRef.hide)},function(t,e){t(e,9,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending),t(e,25,0,a["\u0275nov"](e,30).ngClassUntouched,a["\u0275nov"](e,30).ngClassTouched,a["\u0275nov"](e,30).ngClassPristine,a["\u0275nov"](e,30).ngClassDirty,a["\u0275nov"](e,30).ngClassValid,a["\u0275nov"](e,30).ngClassInvalid,a["\u0275nov"](e,30).ngClassPending)})}function C(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,k,m)),a["\u0275did"](1,114688,null,0,h.a,[g.a],null,null)],function(t,e){t(e,1,0)},null)}var I=a["\u0275ccf"]("cd-deletion-modal",h.a,C,{},{},[])},PNOi:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.ProgressBarComponent=function(){return a([r.Component({selector:"datatable-progress",template:'\n    <div class="progress-linear" role="progressbar">\n      <div class="container">\n        <div class="bar"></div>\n      </div>\n    </div>\n  ',changeDetection:r.ChangeDetectionStrategy.OnPush})],function(){})}()},PU8L:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t){var e=new a.a(function(e){e.next(t),e.complete()});return e._isScalar=!0,e.value=t,e}},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},n={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};t.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".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:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(t){return t+"\u0bb5\u0ba4\u0bc1"},preparse:function(t){return t.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(t,e,n){return t<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":t<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":t<10?" \u0b95\u0bbe\u0bb2\u0bc8":t<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":t<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":t<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(t,e){return 12===t&&(t=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===e?t<2?t:t+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===e||"\u0b95\u0bbe\u0bb2\u0bc8"===e?t:"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},Phjn:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("psW0");function r(t,e){return Object(a.a)(t,e,1)}},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},n={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};t.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".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:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(t){return t.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===e?t<4?t:t+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===e?t:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===e?t>=10?t:t+12:"\u0cb8\u0c82\u0c9c\u0cc6"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":t<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":t<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":t<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(t){return t+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}})}(n("wd/R"))},Q1FS:function(t,e,n){"use strict";var a=n("yx2s"),r=n("Xwq/"),i=n("zfKp"),o=n("9AGB"),s=n("n3uD");function u(t){if(t||(t=s.config.Promise||Promise),!t)throw new Error("no Promise impl found");return t}e.Observable=function(){function t(t){this._isScalar=!1,t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var a=this.operator,i=r.toSubscriber(t,e,n);if(i.add(a?a.call(i,this.source):this.source||s.config.useDeprecatedSynchronousErrorHandling&&!i.syncErrorThrowable?this._subscribe(i):this._trySubscribe(i)),s.config.useDeprecatedSynchronousErrorHandling&&i.syncErrorThrowable&&(i.syncErrorThrowable=!1,i.syncErrorThrown))throw i.syncErrorValue;return i},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){s.config.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),a.canReportError(t)?t.error(e):console.warn(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=u(e))(function(e,a){var r;r=n.subscribe(function(e){try{t(e)}catch(n){a(n),r&&r.unsubscribe()}},a,e)})},t.prototype._subscribe=function(t){var e=this.source;return e&&e.subscribe(t)},t.prototype[i.observable]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 0===t.length?this:o.pipeFromArray(t)(this)},t.prototype.toPromise=function(t){var e=this;return new(t=u(t))(function(t,n){var a;e.subscribe(function(t){return a=t},function(t){return n(t)},function(){return t(a)})})},t.create=function(e){return new t(e)},t}()},Q3dv:function(t,e){t.exports='<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>\ub124\ube44\uac8c\uc774\uc158 \uc804\ud658</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\ud604\ud669\ud310</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\ud074\ub7ec\uc2a4\ud130</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\ud638\uc2a4\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\ubaa8\ub2c8\ud130\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>\uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>\ud06c\ub7ec\uc26c\ub9f5</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\uba54\ub2c8\uc800 \ubaa8\ub4c8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\uacbd\uace0\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\ud480\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\ube14\ub7ed</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\uc774\ubbf8\uc9c0\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\ubbf8\ub7ec\ub9c1</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>\ud30c\uc77c\uc2dc\uc2a4\ud15c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\uc624\ube0c\uc81d\ud2b8\uac8c\uc774\ud2b8\uc6e8\uc774</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\ubc84\ud0b7\ub4e4</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\ub4a4\ub85c</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\uc5b8\uc5b4\uc120\ud0dd</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\ud328\ub110 \ub370\uc774\ud0c0 \ub85c\ub529 \uc911...</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>\uadf8\ub77c\ud30c\ub098 \ud0c0\uc784 \ud53d\ucee4</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\uc124\uc815 \ucd08\uae30\ud654</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\ub370\uc774\ud0c0 \ub85c\ub529 \uc2e4\ud3d0</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\uc120\ud0dd\ub41c</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\ubc1c\uacac\ub41c</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\uc804\uccb4</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\uc124\uc815\ub4e4</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>\uae30\ubcf8\uc124\uc815 \uac12\ub4e4\ub85c \ubd80\ud130 \uc778\uc790\ub97c \ubcc0\uacbd\ud558\ub294 \uac83\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\ubc31\uc2a4\ud1a0\uc5b4</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\ud655\uc778</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\ucde8\uc18c</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\uace0\uae09\uc124\uc815\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\ud0c0\uac9f IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc801\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN\uc774 \uc798\ubabb\ub41c \ud328\ud134\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc9c0\uc815\uaddc\uce59\uc774 \uc788\uc2b5\ub2c8\ub2e4.\n\'iqn.$\ub144-$\ub2ec.$\ub4a4\uc9d1\uc5b4\uc9c4\uc8fc\uc18c:$\uc815\uc758\ub41c\uc774\ub984\'</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\uc608\ub97c\ub4e4\uba74: 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>\ucd94\uac00 \uc815\ubcf4</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\uc774 \ud0c0\uac9f\uc740 \uace0\uae09\uc124\uc815\ub4e4\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\ud3ec\ud138</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>\uc801\uc5b4\ub3c4\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4\uc744 \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\ud3ec\ud138 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\uc774 \uc774\ubbf8\uc9c0\ub294 \uc124\uc815\ub4e4\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4. </target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\uc801\uc5b4\ub3c4 1 \uc774\ubbf8\uc9c0\ub294 \ud544\uc218\uc801\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\uc774\ubbf8\uc9c0 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \uc778\uc99d</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\uac1c\uc2dc\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\uac1c\uc2dc\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\uac1c\uc2dc\uc790 IQN\uc740 \uc720\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\uc0ac\uc6a9\uc790</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc740 8~64\uc790\uae4c\uc9c0 \uae38\uc774\uc758 \ubb38\uc790\ub4e4\uc744 \uac00\uc838\uc57c \ud558\uba70 \uadf8\ub9ac\uace0, \uc624\uc9c1 , \'.\', \'@\', \'-\', \'_\', \':\' \ub4f1\uc758 \ud2b9\uc218 \ubb38\uc790\ub4e4\ub9cc \ud3ec\ud568\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\uc554\ud638</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\uacf5\ub3d9 \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\uacf5\ud1b5 \uc554\ud638</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>\uac1c\uc2dc\uc790\ub294 \ud558\ub098\uc758 \uadf8\ub8f9\uc5d0 \uc18d\ud574\uc57c \ud558\uace0, \uc774\ubbf8\uc9c0\ub294 \uadf8\ub8f9\uc548\uc5d0\uc11c \uc124\uc815\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\ucd94\uac00\ub41c \uc544\uc774\ud15c\ub4e4\uc774 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\uac8c\uc2dc\uc790 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\uadf8\ub8f9\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\uadf8\ub8f9\ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\uc81c\ucd9c</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>\uc120\ud0dd\ub41c\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\ub85c\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> \uc744 \ud558\ub294 \uac83\uc774 \ud655\uc2e4\ud569\ub2c8\uae4c?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\uc608, \ud655\uc2e4\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\uc778\uc99d \ud0d0\uc0c9</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc740 8~64\uc790\uae4c\uc9c0 \uae38\uc774\uc758 \ubb38\uc790\ub4e4\uc744 \uac00\uc838\uc57c \ud558\uba70 \uadf8\ub9ac\uace0, \uc624\uc9c1 , \'.\', \'@\', \'-\', \'_\', \':\' \ub4f1\uc758 \ud2b9\uc218 \ubb38\uc790\ub4e4\ub9cc\uc744 \ud3ec\ud568\uac00\ub2a5\ud569\ub2c8\ub2e4.</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>iSCSI \ud0c0\uac9f\ub4e4 \uad00\ub9ac \uae30\ub2a5\ub4e4\uc744 \uc124\uc815\ud558\uace0 \ucf1c\uae30\uc704\ud574\uc11c\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\ubb38\uc11c\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \ubd80\ubd84\uc744 \ucc38\uc870\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\uc774\uc6a9\uac00\ub2a5\ud55c \uc815\ubcf4:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI \ud0c0\uac9f\uc774 \uc774\uc6a9 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' \uc640 \'@\' \ubb38\uc790\ub294 \uc0ac\uc6a9\ubd88\uac00\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\ub85c\ub529\uc911...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c rbd\ud480 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \ud480 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\uc804\uc6a9 \ub370\uc774\ud0c0 \ud480\ub4e4\uc744 \uc0ac\uc6a9\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\ub370\uc774\ud0c0 \ud480</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\uc758 \uac1d\uccb4-\ub370\uc774\ud0c0\ub97c \uc800\uc7a5\ud558\uace0 \uc788\ub294 \uc804\uc6a9 \ud480</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c \ub370\uc774\ud0c0\ud480 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\uc608., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\uc0ac\uc774\uc988\ub97c \uc99d\uac00\uc2dc\ucf1c\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\ud2b9\uc9d5\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\uc790\uc138\ud55c \uc635\uc158...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\uc790\uc138\ud55c</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\uac1d\uccb4\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704 \uc120\ud0dd --</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>\ubd84\uc0b0\uc800\uc7a5 \uac1c\uc218\uac00 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc785\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704\ub294 \uac1d\uccb4\ud06c\uae30\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5 \uac2f\uc218</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>\ubd84\uc0b0\uc800\uc7a5 \ub2e8\uc704\uac00 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc785\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5 \uac2f\uc218\ub294 \ubc18\ub4dc\uc2dc 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\ud734\uc9c0\ud1b5</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\ud1b5\ud569 \uc131\ub2a5\uce58</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\ud3b8\uc9d1</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\uc790\uc138\ud55c \uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\uae30\ubcf8\uac12</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\ub370\ubaa8 \uae30\ubcf8\uac12</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\uc11c\ube44\uc2a4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\uac12\ub4e4</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>\uc785\ub825\uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> \ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4.! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> \uc791\uc544\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\uc800\uc7a5\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>\ud06c\ub7ec\uc26c\ub9f5 \ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\ud638\uc2a4\ud2b8 \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\ud56d\ubaa9\ub4e4\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\uac10\uc0ac \ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\uc124\uc815 \ub85c\ub529 \uc911</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\uc124\uc815\uc744 \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\uad00\ub9ac\ubaa8\ub4c8 \ud3b8\uc9d1\ud558\uae30</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>\uc785\ub825\ub41c \uac12\uc774 \uc720\ud6a8\ud55c UUID\uac00 \uc544\ub2d9\ub2c8\ub2e4, \uc608.: 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>\uc785\ub825\ub41c \uac12\uc740 \uc720\ud6a8\ud55c IP\uc8fc\uc18c \uc5ec\uc57c \ud569\ub2c8\ub2e4.</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>\uc785\ub825\uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740 \ubc18\ub4dc\uc2dc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> \uc791\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc740 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uc22b\uc790\ub97c \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.</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>\uc785\ub825 \ub41c \uac12\uc740 \uc22b\uc790 \ub610\ub294 \uc2ed\uc9c4\uc218\uc5ec\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\uac31\uc2e0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>\ubaac\ub9f5 \ubcc0\uacbd\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>\ubaac\ub9f5 \ubcc0\uacbd\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>\uc815\uc871\uc218 \uc77c\uce58\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>\uc815\uc871\uc218 \ubaa8\ub2c8\ud130\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>\uc694\uad6c\ub418\ub294 \uc77c\uce58\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>\uc694\uad6c\ub418\ub294 \ubaa8\ub2c8\ud130\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>\uc815\uc871\uc218\uc5d0 \ud3ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\uc815\uc871\uc218 \ubbf8\ud3ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\ud074\ub7ec\uc2a4\ud130-\uc218\uc900\uc758 OSD \ud50c\ub808\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \ubcf5\uad6c \uc6b0\uc120\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\uc6b0\uc120\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\uc6b0\uc120 \uc21c\uc704 \uac12 \ub9de\ucda4 \uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\uc774 \ud544\ub4dc\ub294 \uc694\uad6c\ub429\ub2c8\ub2e4!</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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\ubcf4\ub2e4 \ud06c\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4..\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\ubcf4\ub2e4 \uc791\uc544\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>OSD \uc7ac-\uc870\uc815</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>\uac12\uc740 0\uacfc 1\uc0ac\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\uc7ac-\uc870\uc815</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\ub4e4\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> \uccad\uc18c\ud558\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 1 {\uae4a\uc774 } }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\uc744 \uccad\uc18c\ud558\uae30 \uc704\ud574, \ub2f9\uc2e0\uc740\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\uc744 \uc801\uc6a9\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 1 {\uae4a\uc774 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\uacc4\uc18d\uc9c4\ud589\ud558\uba74\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> \ub294\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>"/> \ub85c \ud45c\uc2dc\ub429\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD\ub294 \ud30c\uad34\ud558\uae30\uc5d0 \uc548\uc804\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\uacc4\uc18d\uc9c4\ud589\ud558\uba74\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> \ub294\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>"/> \uac00 \ub420 \uac83\uc785\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\uc138\ubd80\uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\uac74\uac15\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\ud1b5\uacc4\ub4e4</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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\ubaa8\ub4e0 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc811\uadfc\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\uc8fc\uc18c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\ud544\uc218 \uc785\ub825\ub780</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\ubc18\ub4dc\uc2dc \ud558\ub098 \uc774\uc0c1\uc758 \uc27c\ud45c\ub85c \uad6c\ubd84 \ub41c \uac12\uc744 \ud3ec\ud568\ud574\uc57c \ud568</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\uc608\ub97c\ub4e4\uba74:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\uc811\uadfc\ud615\ud0dc</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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/> NFS \ub0b4\ubcf4\ub0b4\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5 \ud074\ub7ec\uc2a4\ud130 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \ud074\ub7ec\uc2a4\ud130 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\ub370\ubaac \ucd94\uac00\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\uc2a4\ud1a0\ub9ac\uc9c0 \ubc31\uc5d4\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \uc2a4\ud1a0\ub9ac\uc9c0 \ubc31\uc5d4\ub4dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\uac1d\uccb4 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \uc0ac\uc6a9\uc790\ub4e4 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \uac1d\uccb4 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \uc0ac\uc6a9\uc790 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \ud074\ub77c\uc774\uc5b8\ud2b8 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx \ud074\ub77c\uc774\uc5b8\ud2b8 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\ubcf4\uc548 \ub808\uc774\ube14</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\ubcf4\uc548 \ub808\uc774\ube14 \uc0ac\uc6a9</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \uacbd\ub85c</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>\uacbd\ub85c\ub294 \'/\'\ub85c \uc2dc\uc791\ud574\uc57c\ud558\uba70 \uadf8 \ub4a4\uc5d0 \ub2e8\uc5b4\uac00 \uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\uc0c8\ub85c\uc6b4 \ub514\ub809\ud1a0\ub9ac\uac00 \ub9cc\ub4e4\uc5b4 \uc9c8 \uac83\uc785\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\uacbd\ub85c</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>\uacbd\ub85c\ub294 \ud558\ub098\uc758 \'/\' \ub610\ub294 \ud558\ub098\uc758 \ub2e8\uc5b4 \uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\uc0c8\ub85c\uc6b4 \ubc84\ud0b7\uc774 \ub9cc\ub4e4\uc5b4 \uc9c8 \uac83\uc785\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \ud504\ub85c\ud1a0\ucf5c</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 \ud0dc\ud06c</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>\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>"/> \ub9c8\uc6b4\ud2b8\ub4e4\uc744 \uc704\ud55c \ub300\uccb4 \uc811\uadfc (/\uac00 \uc55e\uc5d0 \uc640\uc57c \ud568).\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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \ud558\uc704 \ub514\ub809\ud1a0\ub9ac\ub97c \ub9c8\uc6b4\ud2b8 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 (\uc989, Tag = foo \uc778 \uacbd\uc6b0 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 foo / baz\ub97c \ub9c8\uc6b4\ud2b8\ud558\uc9c0 \ubabb\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4).</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>\ub2e4\ub978 \ud0dc\uadf8 \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \uac19\uc740 \uacbd\ub85c\ub97c \uc5ec\ub7ec \ubc88 \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ub2e4\ub978 Pseudo \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ub3d9\uc77c\ud55c \uacbd\ub85c\ub97c \uc5ec\ub7ec \ubc88 \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \uc811\uadfc\ud615\ud0dc \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \uc811\uadfc\ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c squash \uc5c6\uc74c --</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>-- \uc5b4\ub5a4 \uc885\ub958\uc758 \uc0ac\uc6a9\uc790 ID \uc2a4\ucffc\uc2dc\uac00 \uc218\ud589\ub418\ub294\uc9c0 \uc120\ud0dd\ud558\uc138\uc694 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\uc804\uc1a1\ud504\ub85c\ud1a0\ucf5c</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\uc774\ub984\uc740 \uc601\uc22b\uc790, \ub300\uc2dc \ubc0f \ubc11\uc904\ub85c\ub9cc \uad6c\uc131 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\uc120\ud0dd\ud55c Erasure Code \ud504\ub85c\ud30c\uc77c \uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\ud50c\ub7ec\uadf8\uc778</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\ub370\uc774\ud130 \ub369\uc5b4\ub9ac\ub4e4 (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>\ubc18\ub4dc\uc2dc 2\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\ucf54\ub529 \ub369\uc5b4\ub9ac\ub4e4 (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>\ubc18\ub4dc\uc2dc 1\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\ub0b4\uad6c\uc131 \ud3c9\uac00(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\uc9c0\uc5ed (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>\ud06c\ub7ec\uc26c \uc2e4\ud328 \ub3c4\uba54\uc778</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>\ud06c\ub7ec\uc26c \uc9c0\uc5ed</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\uae30\uc220</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\ud328\ud0b7\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>\ud06c\ub7ec\uc26c\ub8e8\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>\ud06c\ub7ec\uc26c \uc7a5\uce58 \ud074\ub798\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\ubaa8\ub4e0</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\ub514\ub809\ud1a0\ub9ac</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\ub2eb\uae30</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\uc774\ub984...</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>\uc120\ud0dd\ud55c Ceph \ud480\uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\ud480 \ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \ud480 \ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\uac8c\uc7ac\uc704\uce58 \uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uac8c\uc7ac\uc704\uce58 \uadf8\ub8f9\uc774 \ud544\uc694\ud568!</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>\ud074\ub7ec\uc2a4\ud130\ub294 \uc774 \ub9ce\uc740 PG\ub4e4\ub97c \ucc98\ub9ac \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud544\uc694\ud55c PG \uc591\uc744 \ub2e4\uc2dc \uacc4\uc0b0\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\uae30\uc874 \ud480\uc758 PG\ub4e4\uc758 \uc22b\uc790\ub97c \ub298\ub9b4 \uc218\ub9cc \uc788\uc2b5\ub2c8\ub2e4.\n\ud604\uc7ac \ud480\uc740\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PG\ub4e4\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\uacc4\uc0b0 \ub3c4\uc6c0\ub9d0</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\ud604\uc7ac\uc758 PG\ub4e4 \uc124\uc815\ub4e4\uc774 \ub2f9\uc2e0\uc744 \uc704\ud574 \uacc4\uc0b0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n\ub2f9\uc2e0\uc740 \uc81c\ucd9c\ud558\uae30 \uc804\uc5d0 \ub2f9\uc2e0\uc758 \uc694\uad6c\uc5d0 \uc801\ud569\ud55c \uac12\uc778\uc9c0\ub97c \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0\uc14b</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \ud06c\ub7ec\uc26c \ub8f0 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>\ud06c\ub7ec\uc26c \ub2e8\uacc4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\uc774 \ub8f0\uc5d0 \uc758\ud558\uc5ec \ucd5c\uc18c\ub85c \ud544\uc694\ub85c \ud558\ub294 OSD\ubcf4\ub2e4 \uc801\uc740 OSD\ub97c \uac00\uc9c0\uace0 \uc788\uae30\ub54c\ubb38\uc5d0 \uc774 \ub8f0\uc740 \ud604\uc7ac\uc758 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\ubcf5\uc81c\ub418\ub294 \ud06c\uae30</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>\ucd5c\uc18c:\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>\ucd5c\ub300:\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\uc9c0\uc815\ub41c \ud06c\uae30\ub294 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \uc5d0\uc11c\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \uc0ac\uc774\uc758 \uac12\uc774 \uc720\ud6a8\ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c Erasure Code \ud504\ub85c\ud30c\uc77c \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \ud55c\uac1c\uc758 Erasure Code \ud504\ub85c\ud30c\uc77c \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\ud50c\ub808\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \ub36e\uc5b4\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\uc555\ucd95</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\uc591\uc2dd</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\uc54c\uace0\ub9ac\uc998</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c Erasure \uc555\ucd95\uc54c\uace0\ub9ac\uc998 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>\ucd5c\uc18c blob \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\uc608) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\uac12\uc740 0\ubcf4\ub2e4 \ucee4\uc57c\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>\ucd5c\ub300 blob \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\uc608) 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>\uac12\uc740 \ucd5c\uc18c blob \ud06c\uae30\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\ube44\uc728</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\uc555\ucd95\uc728</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>\uac12\uc740 0.0\uacfc 1.0 \uc0ac\uc774 \uc5ec\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\uc774\ub984\uc5d0 \'/\'\uac00 \ud3ec\ud568 \ub41c RBD \ud480\uc744 \uc0dd\uc131 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\uc774\ub984\uc744 \ubcc0\uacbd\ud558\uac70\ub098 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \ubaa9\ub85d\uc5d0\uc11c \'rbd\'\ub97c \uc81c\uac70\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\ud480 \ubaa9\ub85d\ub4e4</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> \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad00\ub9ac\uae30\ub2a5\ub4e4\uc744 \uc5b4\ub5bb\uac8c \uc124\uc815\ud558\uace0 \ucf1c\ub294\uc9c0\uc5d0 \ub300\ud574\n\ubb38\uc11c\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\uc0c1\uc758\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> \ubd80\ubd84\uc744 \ucc38\uc870\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\ubc84\ud0b7\ub370\uc774\ud0c0 \uc801\uc7ac \uc911</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\ubc84\ud0b7 \ub370\uc774\ud0c0\ub97c \uc801\uc7ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>\uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\uc18c\uc720\uc790</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \uc0ac\uc6a9\uc790 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\ub370\ubaac \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\uad8c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \uad8c\ud55c \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\uc0ac\uc6a9\uc790\uba85</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \uc0ac\uc6a9\uc790\uba85 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\uc790\ub3d9\uc0dd\uc131\ub41c \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\uc811\uadfc \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\ube44\ubc00 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \ubcf4\uc870\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\uc77d\uae30, \uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\uac00\ub4dd\ucc2c</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>\uc2a4\uc704\ud504\ud2b8 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\uc790\ub3d9\uc0dd\uc120\ub41c \ube44\ubc00</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\uc0ac\uc6a9\uc790 \ub370\uc774\ud0c0 \uc801\uc7ac \uc911...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\uc0ac\uc6a9\uc790 \ub370\uc774\ud0c0\ub97c \uc801\uc7ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\uc120\ud0dd\ub41c \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\uc804\uccb4 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\uc774\uac83\uc740 \uc720\ud6a8\ud55c \uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c\uac00 \uc544\ub2d9\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\ucd5c\ub300 \ubc84\ud0b7\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\uc785\ub825\ub41c \uac12\uc740 \ubc18\ub4dc\uc2dc 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\uc720\uc608\ub418\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\ud0a4\ub4e4</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>\ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>\uc2a4\uc704\ud504\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\ub2a5\ub825\uce58\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\ub2a5\ub825\uce58\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\uc0ac\uc6a9\uc790 \ud560\ub2f9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\uc774\uc6a9\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\ubb34\uc81c\ud55c \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\ucd5c\ub300 \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\ubb34\uc81c\ud55c \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\ucd5c\ub300 \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\ubc84\ud0b7 \ud560\ub2f9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph \uc0ac\uc6a9\uc744 \ud658\uc601\ud569\ub2c8\ub2e4.</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc774 \ud544\uc694\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\uc554\ud638\uac00 \ud544\uc694\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\ub85c\uadf8\uc778</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\uc138\ubd80\uc124\uba85...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\uad8c\ud55c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\ubbf8\uc548\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 Ceph\ub0b4\uc5d0 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</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="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\uc554\ud638 \ud655\uc778</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\uc554\ud638 \ud655\uc778\uc774 \uc554\ud638\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\uc804\uc790\uc6b0\ud3b8</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\uc720\ud6a8\ud558\uc9c0\uc54a\ub294 \uc804\uc790\uc6b0\ud3b8.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\uc5ed\ud560\ub4e4</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>\ub2f9\uc2e0\uc758 \uc0ac\uc6a9\uc790\ub85c\ubd80\ud130 "\uc0ac\uc6a9\uc790 \uc77d\uae30 / \uc5c5\ub370\uc774\ud2b8"\uad8c\ud55c\uc744 \uc81c\uac70\ud558\ub824\uace0\ud569\ub2c8\ub2e4.</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>\uacc4\uc18d\ud558\uba74 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc5ed\ud560\uc744 \ucd94\uac00\ud558\uac70\ub098 \uc81c\uac70 \ud560 \uc218 \uc5c6\uac8c\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\uacc4\uc18d \uc9c4\ud589\ud558\uae30\ub97c \uc6d0\ud558\uc2ed\ub2c8\uae4c?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\uae08\uc9c0\ub428</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>\ubbf8\uc548\ud569\ub2c8\ub2e4. \ub2f9\uc2e0\uc774 \uc694\uccad\ud560 \uac83\uc744 \uc5f4\ub78c\ud558\ub294 \uac83\uc774 \ud5c8\ub77d\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\ubbf8\uc548\ud569\ub2c8\ub2e4. \ub2f9\uc2e0\uc774 \uc694\uccad\ud560 \uac83\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\ubaa8\ub4e0 \uac83 \uc81c\uac70</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\ucd5c\uadfc \uc54c\ub9bc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\ub3c4\uc6c0\ub9d0</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\ubb38\uc11c</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>\ub300\ud558\uc5ec</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\ub300\uc26c\ubcf4\ub4dc \uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\uc0ac\uc6a9\uc790 \uad00\ub9ac</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\ub85c\uadf8\uc778\ub41c \uc0ac\uc6a9\uc790</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>\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\ub85c\uc368 \uc2b9\uc778\ub428\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\ub85c\uadf8\uc544\uc6c3</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\uc131\ub2a5 \uc138\ubd80\uc815\ubcf4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>\uc0c9\uc778\ud615\uc2dd</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\uc704\uce58\uaddc\uce59</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\ucd5c\ub300 \ub9c8\ucee4</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\ub9c8\uc2a4\ud130 \ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\uc218\uc815\ub41c \uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\uc81c\ub85c\uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\ucd5c\ub300 \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\ubb34\uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\ucd5c\ub300 \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\uc2dc\uc2a4\ud15c</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 0 {\uc544\ub2c8\uc624} 1 {\uc608} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\ucd5c\ub300 \ubc84\ud0b7\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130\ub4e4\uc744 \uc0ac\uc6a9 \ud560 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\uae00\ub85c\ubc8c</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\uc774\ubbf8\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\ud480</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \uc124\uc815\ub4e4</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>\ub85c\uceec \uad6c\uc131 \uac12\uc744 \uc81c\uac70\ud558\uc2ed\uc2dc\uc624. \uc0c1\uc704 \uad6c\uc131 \uac12\uc740 \uacc4\uc2b9\ub418\uace0 \ub300\uc2e0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\ucd5c\uc18c\uac12\uc740 0\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\uc18d\uc131\ub4e4 (OSD \ub9f5)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130</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>\ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c:\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>\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\uc77d\uae30</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\ud788\uc2a4\ud1a0\uadf8\ub7a8</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\ud604\uc7ac \uac12\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\ucd5c\uc18c</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\ucd5c\ub300</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\uc18c\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\uc218\uc900</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\uc218\ud589\uc2dc\uac04\uc5d0 \uac31\uc2e0\uac00\ub2a5\ud568(\ud3b8\uc9d1\uac00\ub2a5)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\ud14c\ud06c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\uc5f4\uac70\ud615 \uac12\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\ucd94\uac00\ub85c \ub354\ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\uad00\ub9ac\uc790 \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0 \uc11c\ubc84\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 \ucc98\ub9ac\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 \uc77d\uae30/\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\ubcf5\uad6c \ucc98\ub9ac\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\uc138\uc815\uc791\uc5c5</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\uc131\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\uc6d0\uc2dc\uc6a9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\uc624\ube0c\uc81d\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD\ub2f9 PG\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \uc0c1\ud0dc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\uc6a9\ub7c9</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>"/> \ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \uc704\ud574\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\ub85c\uadf8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \ubcf4\uc2ed\uc2dc\uc624.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\uc774\ubbf8\uc9c0\ub97c \ud734\uc9c0\ud1b5\uc5d0 \uc774\ub3d9</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\ud734\uc9c0\ud1b5\uc73c\ub85c\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \uc62e\uae30\uae30 \uc704\ud574,\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uc120\ud0dd,\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \uc774\ubbf8\uc9c0 \uc62e\uae30\uc138\uc694. \uc120\ud0dd\uc801\uc73c\ub85c, \ud3d0\uae30\ub0a0\uc9dc\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\ubcf4\ud638\uac00 \ub9cc\ub8cc\ub418\ub294 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\ubcf4\ud638\ub418\uc9c0 \uc54a\uc74c</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>\ub0a0\uc9dc \ud615\uc2dd \uc624\ub958. "YYYY-MM-DD HH:mm:ss" \ud615\uc2dd\uc73c\ub85c \uc9c0\uc815\ud558\uc138\uc694.</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>\ubcf4\ud638\uae30\uac04\uc774 \uc774\ubbf8 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub354 \ubbf8\ub798\uc758 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uac70\ub098 \uacf5\ub780\uc73c\ub85c \ub0a8\uaca8\ub450\uc138\uc694.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\uc774\ubbf8\uc9c0 \uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\uac1c\uad00</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\ud0c0\uac9f\ub4e4</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>\uc624\uc9c1\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>"/> \uc124\uc815\ub41c RBD \uc774\ubbf8\uc9c0\ub4e4\uacfc \ud568\uaed8 \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\ub370\uc774\ud0c0 \ud480</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\uc0dd\uc131\ub41c</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\uc900\ube44\ub41c</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\uc774\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\uc900\ube44\ub41c \ucd1d\uacc4</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\uc2a4\ud2b8\ub77c\uc774\ud551 \ub2e8\uc704</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\uc2a4\ud2b8\ub77c\uc774\ud551 \ud69f\uc218</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\uc0c1\uc704</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\ube14\ub85d \uc774\ub984 \uc811\ub450\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\uc21c\uc11c</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\uc2a4\ub0c5\uc0bf</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\uc774 \uc124\uc815\uc740 \uc804\uc5ed \uac12\uc744 \ub36e\uc5b4\uc501\ub2c8\ub2e4.</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>\uc774\uac83\uc740 \uc804\uc5ed \uac12\uc785\ub2c8\ub2e4. \uc774 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud574 \uc774 \uc635\uc158\uc758 \uac12\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD \uc2a4\ub0c5\uc0f7\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> \uc2a4\ub0c5\uc0f7\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\ubcf4\ud638\ub428</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\ubcf4\ud638\uc548\ub428</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\ub864\ubc31\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\ud734\uc9c0\ud1b5 \ube44\uc6b0\uae30</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\ube44\uc6b0\uae30 \uc704\ud574, \ud558\ub098 \ub610\ub294 \ubaa8\ub4e0 \uc774\ubbf8\uc9c0\ub4e4\uc744 \uc120\ud0dd\ud558\uace0 \ud074\ub9ad\ud558\uc138\uc694.</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\ud480:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\ud480 \uc774\ub984:</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\ubaa8\ub4e0</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\uc774\ubbf8\uc9c0 \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\ubcf5\uad6c\ub97c \uc704\ud574</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\uc774\ubbf8\uc9c0\ub4e4\uc758 \uc0c8\ub85c\uc6b4 \uc774\ub984\uc744 \uc785\ub825\ud558\uace0 \ud074\ub9ad\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\uc0c8\ub85c\uc6b4 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\ud3d0\uae30\ub420</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\uae4c\uc9c0 \ubcf4\ud638\ub428</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>\uc774 \uc774\ubbf8\uc9c0\ub294\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\uae4c\uc9c0 \ubcf4\ud638\ub429\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \ud1a0\ud3f4\ub85c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\uc774\uc288\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\ub3d9\uae30\ud654\uc911</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\uc900\ube44\ub428</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\ud480 \ubbf8\ub7ec\ubaa8\ub4dc\ub97c \ud3b8\uc9d1\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\ud480\uc744 \uc704\ud55c \ubbf8\ub7ec\ubaa8\ub4dc\ub97c \ud3b8\uc9d1\ud558\uae30 \uc704\ud574\xa0\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>"/>, \uadf8 \ubaa9\ub85d\uc73c\ub85c \ubd80\ud130 \uc0c8\ub85c\uc6b4 \ubaa8\ub4dc\ub97c \uc120\ud0dd\ud558\uace0, \ud074\ub9ad\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uac31\uc2e0\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>\uc0c1\ub300\ubc29 \ud074\ub7ec\uc2a4\ud130\ub4e4\uc740 \ubbf8\ub7ec\ub97c \ub2e8\uc808\ud558\uae30 \uc804\uc5d0 \ubc18\ub4dc\uc2dc \uc81c\uac70\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.</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  \ud480 \ubbf8\ub7ec \uc0c1\ub300\ubc29\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> \ud480\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>"/> \ud480\uc744 \uc704\ud558\uc5ec \uc0c1\ub300\ubc29 \uc18d\uc131 \ubbf8\ub7ec\ud558\uace0,\n          \uc120\ud0dd\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>  \uc81c\ucd9c\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>\ud074\ub7ec\uc2a4\ud130 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \uc774\ub984\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX \uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX \uc544\uc774\ub514...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX \uc544\uc774\ub514\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\ubaa8\ub2c8\ud130 \uc8fc\uc18c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\ucf64\ub9c8\ub85c \ubd84\ub9ac\ub41c \uc8fc\uc18c\ub4e4...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\ubaa8\ub2c8\ud130 \uc8fc\uc18c\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64\ub85c \uc778\ucf54\ub529 \ub41c \ud0a4 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \ud0a4\ub294 \ubc18\ub4dc\uc2dc base64\ub85c \uc778\ucf54\ub4dc \ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\ucf00\uc26c \uacc4\uce35\ub4e4 \uc0c1\uc138\uc124\uba85\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\ud604\uc7ac</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\uc5c5\ub370\uc774\ud2b8\ub41c \uac80\uc0c9 \uc778\uc99d</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \ud3ec\ud0c8\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \uc774\ubbf8\uc9c0\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</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>\uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uc774\ubbf8\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc0c1\uc5d0 \uc774\ubbf8\uc9c0\ub97c \ucd94\uac00\ud588\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.</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>\uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uac1c\uc2dc\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc0c1\uc5d0 \uac1c\uc2dc\uc790\ub97c \ucd94\uac00\ud588\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\ud0c0\uac9f</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\ud638\uc2a4\ud2b8\uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\uc77d\uc740 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\uc77d\uae30 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\uc4f0\uae30 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O \uc774\ub798\ub85c</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\uc778\uc2a4\ud0c4\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\uc774\uc288</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\uc9c4\ud589\uc911</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\uc124\uc815\ud574\uc81c\ub428</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\ud3b8\uc9d1\ubaa8\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\uc0c1\ub300\ubc29 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\uc0c1\ub300\ubc29 \ud3b8\uc9d1</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\uc0c1\ub300\ubc29 \uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>\ub9ac\ub354</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># \ub85c\uceec</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># \uc6d0\uaca9</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\uc0c1\ub300\ubc29 \ubbf8\ub7ec</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\ud0a4</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\uac12</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\ub525 \ud328\ud134</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\uacc4\uce35\ud654</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\ubc30\ud0c0\uc801\uc778 \ub77d</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\uc624\ud504\uc81d\ud2b8-\ub9f5(\ubc30\ud0c0\uc801\uc778-\ub77d\uc744 \uc694\uad6c\ud55c\ub2e4)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\uc800\ub110\ub9c1(\ubc30\ud0c1\uc801\uc778-\ub77d\uc744 \uc694\uad6c\ud569\ub2c8\ub2e4.)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (\uc624\ube0c\uc81d\ud2b8-\ub9f5\uc744 \uc694\uad6c\ud568)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\ubcf5\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\ub2e8\uc870\ub85c\uc6c0</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\ud734\uc9c0\ud1b5\uc73c\ub85c \uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\ub9cc\ub4e4\uae30</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\uc774\ub984\ubcc0\uacbd</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\ubcf4\ud638</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\ubcf4\ud638\uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\ubcf5\uc81c</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \uc2a4\ub0c5\uc0f7 \ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \uc2a4\ub0c5\uc0f7</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\ubcf5\uad6c</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\uc0ad\uc81c\ub420 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>\ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\ud638\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\ub8e8\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\ub370\ubaac</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\ud65c\ub3d9</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>\ub374\ud2b8\ub9ac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>\uc544\uc774\ub178\ub4dc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>\uc0ac\uc6a9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\ub300\uae30 \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\uc774 \uac12\uc740 \ub7f0\ud0c0\uc784\uc5d0 \uc5c5\ub370\uc774\ud2b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ub370\ubaac\ub4e4 / \ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4\uc740 \ubaa8\ub2c8\ud130 \uad6c\uc131 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\uc774 \uac12\uc744 \uac00\uc838 \uc624\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \'ceph config set ...\'\uc744 \ud1b5\ud574\uc774 \uc635\uc158\uc744 \uc124\uc815\ud558\ub294 \uac83\uc740 \ud5c8\ub77d\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \uc635\uc158\uc740 ceph.conf \ub610\ub294 \uba85\ub839 \uc904\uc744 \ud1b5\ud574 \uad6c\uc131\ud574\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\uc635\uc158\uc740 \ub370\ubaac \uc2dc\uc791 \uc911\uc5d0 \ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\uc635\uc158\uc740 \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131\ud560 \ub54c \ub9cc \uc601\ud5a5\uc744 \uc90d\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\uc635\uc158\uc740 \ub370\ubaac \uc0dd\uc131\ud560 \ub54c\ub9cc \uc601\ud5a5\uc744\uc90d\ub2c8\ub2e4.</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>\uac31\uc2e0\ub41c \uc124\uc815 \uc635\uc158\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>\uc11c\ube44\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\ud604\uc7ac\uac12</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\ud3b8\uc9d1\uac00\ub2a5</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>\ubaa8\ub4c8\uc744 \uc704\ud574 \uac31\uc2e0\ub41c \uc635\uc158\ub4e4 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\uc0ac\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\uc7ac-\uc811\uc18d \uc911, \uae30\ub2e4\ub824 \uc8fc\uc138\uc694...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\uacf5\uac1c \uc8fc\uc18c</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\uc5f4\ub9b0 \uc138\uc158\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\ub4e4\uc5b4\uc62c \uc218 \uc5c6\ub294</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>\uc774\uc804\uc5d0 \ub9c8\ud06c \uc544\uc6c3 \ub41c OSD\ub294 \uc2dc\uc791\uc2dc \ub2e4\uc2dc \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\ub098\uac08 \uc218 \uc5c6\ub294</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\ub4e4\uc740 \uad6c\uc131\ub41c \uac04\uaca9 \ud6c4\uc5d0\ub294 \uc790\ub3d9\uc73c\ub85c \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\uc0b4\uc544\ub098\uc9c0 \uc54a\ub294</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD\ub294 \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\uc8fd\uc77c \uc218 \uc5c6\ub294</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>\ubaa8\ub2c8\ud130\uac00 OSD\ub4e4\uc758 \ub2e4\uc6b4\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\ub3c4\ub85d OSD \uc7a5\uc560 \ubcf4\uace0\uc11c\uac00 \ubb34\uc2dc\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\uba48\ucd9c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\uc77d\uae30\uc640 \uc4f0\uae30\ub97c \uba48\ucda4</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\uc2a4\ud06c\ub7ec\ube59 \uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\uc2a4\ud06c\ub7ec\ube59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\ub525 \uc2a4\ud06c\ub7fd \uc548\ub428</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\ub525 \uc2a4\ud06c\ub7ec\ube59\uc774 \ube44\ud65c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\ubc31\ud544 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG\ub4e4\uc758 \ubc31\ud544\uc774 \uc77c\uc2dc\uc911\uc9c0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\ubcf5\uad6c \uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG\ub4e4\uc758 \ubcf5\uad6c\uac00 \uc77c\uc2dc\uc911\uc9c0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\ube44\ud2b8\ub2e8\uc704 \uc815\ub82c</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\ube44\ud2b8\ub2e8\uc704 \uc815\ub82c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\uc644\uc804\uc0ad\uc81c\ub41c \uc2a4\ub0c5\ub514\ub809\ud1a0\ub9ac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD\ub4e4\uc774 \ubcc0\ud654\ub41c \uc2a4\ub0c5\uc14b\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\uc0ad\uc81c\ub41c \ubcf5\uad6c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\ud53c\uc5b4\ub9c1 \ub300\uc2e0 \ubcf5\uad6c \uc911\uc5d0 \uc218\ud589\ub41c \uc0ad\uc81c\ubb3c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \ub85c\uadf8 \ud558\ub4dc \ud55c\uacc4</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 \ub85c\uadf8 \uae38\uc774\uc5d0 \ud558\ub4dc \ud55c\uacc4\ub97c \ub123\uc73c\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\uac31\uc2e0\ub41c OSD \ud50c\ub798\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\ub525 \uc2a4\ud06c\ub7fd</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\uc544\uc6c3 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\uc544\uc6c3</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\uc778 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\uc778</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\ub2e4\uc6b4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\ub2e4\uc6b4</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\uc190\uc2e4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \uc190\uc2e4</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\uc190\uc2e4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\uc644\uc804\uc81c\uac70</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\uc644\uc804\uc81c\uac70\ub41c</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\ud30c\uad34\ub41c</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>\uc77d\uc740 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\uc4f0\uae30\ub41c \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\uc77d\uae30 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\uc4f0\uae30 ops</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>\ud45c\uc2dc\ub41c 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>\ud45c\uc2dc\ub41c\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\ucd5c\ub300 \ubc31\ud544\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\ucd5c\ub300 \ud65c\uc131\ud654\ub97c \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\ucd5c\ub300 \ub2e8\uc77c \uc2dc\uc791\uc744 \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\uc7a0\uc790\uae30\ub97c \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\ucee4\uc2a4\ud140</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>\uac31\uc2e0\ub41c OSD \ubcf5\uad6c \uc18d\ub3c4 \uc6b0\uc120\uc21c\uc704 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \uc740 \ub2e4\uc74c\uc758 OSD\ub4e4 \uc548\uc5d0 \ucd08\uae30\ud654\ub428:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\uc77c</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\uc2ec\uac01\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\uc2dc\uc791\ub41c</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\uc0ac\uc6a9\ub41c</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\uc774\uc6a9\uac00\ub2a5:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\uae68\ub057\ud55c</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\uc815\uc0c1\ub3d9\uc791\uc911</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\uacbd\uace0</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\uc54c\ub824\uc9c0\uc9c0 \uc54a\uc740</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\uc815\uc0c1</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\ud30c\uc77c\uc2dc\uc2a4\ud15c\ub4e4 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\ud65c\uc131\ud654\ub41c</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\ub300\uae30\uc911\uc778</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\uc774\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\ud65c\uc131\ud654\ub41c \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>\uc815\uc871\uc218</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 \uc11c\ube44\uc2a4\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc74c</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\uc804\uc1a1</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \ud30c\uc77c\uc2dc\uc2a4\ud15c</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\uc804\uc5ed \uad6c\uc131\uc5d0\uc11c \uc0c1\uc18d)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\uc804\uc5ed \uad6c\uc131\uc5d0\uc11c \uc0c1\uc18d</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>- \uc5b4\ub5a4 \uc885\ub958\uc758 \uc0ac\uc6a9\uc790 ID \uc2a4\ucffc\uc2dc\uac00 \uc218\ud589\ub418\ub294\uc9c0 \uc120\ud0dd -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \ub370\ubaac\uc774 \uc5c6\uc74d\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\ub0b4\ubcf4\ub0b4\uae30</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\uce90\uc26c\ubaa8\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\ucd5c\uc18c \ud1f4\uac70 \uc5f0\ub839</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\ucd5c\uc18c \ud50c\ub7ec\uc2dc \uc5f0\ub839</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\ubaa9\ud45c \ucd5c\ub300 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\ubaa9\ud45c \ucd5c\ub300 \uc624\ube0c\uc81d\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\ucd94\uac00\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud568</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>\ud558\ub098\uc758 \ud480\uc740 \uc624\uc9c1 \ub124\uac1c\uc758 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc815\uc758\ub4e4\uc744 \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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\' \ubb38\uc790\ub4e4\ub9cc \ud5c8\ub77d\ub428</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\ucd5c\ub300 \uae38\uc774\ub294 128\uae00\uc790\uc774\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\ud544\ud130 \ub610\ub294 \ucd94\uac00\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure \ucf54\ub4dc \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\ubcf5\uc81c \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\ub9c8\uc9c0\ub9c9 \ubcc0\uacbd</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure \ucf54\ub4dc\ud654\ub41c \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0\uc14b</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\uc4f0\uc5ec\uc9c4 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\uac31\uc2e0\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc5b4 \ubc84\ud0b7 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>\uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubc84\ud0b7 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\ubc84\ud0b7</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\ubc84\ud0b7\ub4e4</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>\uac31\uc2e0\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>\uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\uc0ac\uc6a9\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\ubc94\uc704</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\uc77d\uae30</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>\uc0dd\uc131\ub41c \ub864  \'\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>\uac31\uc2e0\ub41c \ub864  \'\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>\uc2dc\uc2a4\ud15c \ub864</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>\uc0ad\uc81c\ub41c \ub864  \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>\uc0dd\uc131\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\uac31\uc2e0\ub41c \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\uacc4\uc18d</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>\ub2f9\uc2e0\uc758 \ub864\ub4e4\uc774 \ubcc0\uacbd\ub418\uc5b4 \ub2f9\uc2e0\uc740 \uc790\ub3d9\uc801\uc73c\ub85c \ub85c\uadf8\uc544\uc6c3\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</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>\uac31\uc2e0\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\uc0ad\uc81c\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\uc0ac\uc6a9\uc790 \uc0ad\uc81c\uac00 \uc2e4\ud3d0\ub41c &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\ub2f9\uc2e0\uc740 \ud604\uc7ac  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; \ub85c \ub85c\uadf8\uc778\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n        </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>\uac01\uac01\uc758 \uc624\ube0c\uc81d\ud2b8\ub4e4\uc740 \ub370\uc774\ud0c0-\uccad\ud06c \ubd80\ubd84\ub4e4\ub85c \ubd84\ub9ac\ub418\uc5b4, \uac01\uae30 \ub2e4\ub978 OSD\uc5d0 \ubcf4\uad00\ub429\ub2c8\ub2e4.</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>\uac01 \uc624\ube0c\uc81d\ud2b8\ub4e4\uc5d0 \ub300\ud55c \ucf54\ub529 \uccad\ud06c\ub97c \uacc4\uc0b0\ud558\uace0 \uc11c\ub85c \ub2e4\ub978 OSD\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.\n\ucf54\ub529\ub41c \uccad\ud06c\uc758 \uc218\ub294 \ub370\uc774\ud130 \uc190\uc2e4\uc5c6\uc774 \uc791\ub3d9\uc911\uc9c0 \ub418\uc5b4 \uc9c8 \uc218\uc788\ub294 OSD\uc758 \uc22b\uc790\uc774\uae30\ub3c4\ud569\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 \uac00\uc7a5 \uc77c\ubc18\uc801\uc774\uace0 \uc720\uc5f0\ud55c \ud50c\ub7ec\uadf8\uc778\uc73c\ub85c,\n\ub610\ud55c Ceph erasure \ucf54\ub4dc \ud480\uc758 \uae30\ubcf8\uac12\uc774\uae30\ub3c4\ud569\ub2c8\ub2e4.</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>\ubcf4\ub2e4 \uc720\uc5f0\ud55c \uae30\uc220\uc740 reed_sol_van\uc785\ub2c8\ub2e4 : k\uc640 m\uc744 \uc124\uc815\ud558\uba74 \ucda9\ubd84\ud569\ub2c8\ub2e4.\ncauchy_good \uae30\uc220\uc740 \ube60\ub97c \uc218 \uc788\uc9c0\ub9cc \ud328\ud0b7\ud06c\uae30\ub97c \uc8fc\uc758\uae4a\uac8c \uc120\ud0dd\ud574\uc57c\ud569\ub2c8\ub2e4.\nreed_sol_r6_op, liberation, blaum_roth, liber8tion\uc740 \ubaa8\ub450 m = 2\ub85c\ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc5d0\uc11c RAID-6\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4.</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>\uc778\ucf54\ub529\uc740 \ud55c\ubc88\uc5d0 \ubc14\uc774\ud2b8\ub4e4 \ud06c\uae30\uc758 \ud328\ud0b7\uc5d0 \ub300\ud574 \uc218\ud589\ub429\ub2c8\ub2e4. \uc62c\ubc14\ub978 \ud328\ud0b7 \ud06c\uae30\ub97c \uc120\ud0dd\ud558\ub294 \uac83\uc740 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. jerasure \ubb38\uc11c\uc5d0\ub294\uc774 \uc8fc\uc81c\uc5d0 \ub300\ud55c \uad11\ubc94\uc704\ud55c \uc815\ubcf4\uac00 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 \uc0ad\uc81c \ub41c \ucf54\ub529 \ub41c \uac1d\uccb4\uac00 \uc5ec\ub7ec OSD\uc5d0 \uc800\uc7a5 \ub420 \ub54c \ud558\ub098\uc758 OSD\uac00 \uc190\uc2e4\ub418\ub294 \uac83\uc744 \ubcf5\uad6c\ud558\ub824\uba74 \ub2e4\ub978 \ubaa8\ub4e0 OSD\ub97c \uc77d\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 jerasure\uac00 k = 8 \ubc0f m = 4\ub85c \uad6c\uc131\ub418\uc5b4\uc788\ub294 \uacbd\uc6b0 \ud558\ub098\uc758 OSD\ub97c \uc783\uc5b4 \ubc84\ub9ac\uba74 11 \uba85\uc758 \ub2e4\ub978 \uc0ac\ub78c\ub4e4\uc774 \uc218\ub9ac\ud574\uc57c\ud569\ub2c8\ub2e4.\nlrc erasure code plugin\uc740 \uc801\uc740 \uc591\uc758 OSD\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcf5\uad6c \ud560 \uc218 \uc788\ub3c4\ub85d \ub85c\uceec \ud328\ub9ac\ud2f0 \uccad\ud06c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, lrc\uac00 k = 8, m = 4 \ubc0f l = 4\ub85c \uad6c\uc131\ub41c \uacbd\uc6b0 4 \uac1c\uc758 OSD\ub9c8\ub2e4 \ucd94\uac00 \ud328\ub9ac\ud2f0 \ub369\uc5b4\ub9ac\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \ub2e8\uc77c OSD\uac00 \uc190\uc2e4\ub418\uba74 11 \uac1c \ub300\uc2e0 4 \uac1c\uc758 OSD\ub9cc\uc73c\ub85c \ubcf5\uad6c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ucf54\ub529 \ubc0f \ub370\uc774\ud130 \uccad\ud06c\ub97c \ud06c\uae30 \uc9c0\uc5ed \uc9d1\ud569\uc73c\ub85c \uadf8\ub8f9\ud654\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, k = 4 \ubc0f m = 2\uc5d0 \ub300\ud574, \uc9c0\uc5ed\uc131 = 3 \uc77c \ub54c \ub450 \uac1c\uc758 \uc138 \uadf8\ub8f9\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uac01 \uc138\ud2b8\ub294 \ub2e4\ub978 \uc138\ud2b8\uc758 \uccad\ud06c\ub97c \uc77d\uc9c0 \uc54a\uace0\ub3c4 \ubcf5\uad6c \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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\ub85c \uc815\uc758 \ub41c \uac01 \uccad\ud06c \uc9d1\ud569\uc774 \uc800\uc7a5\ub418\ub294 \ud06c\ub7ec\uc2dc \ubc84\ud0b7\uc758 \uc720\ud615\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub799\uc73c\ub85c \uc124\uc815\ud558\uba74 l \uac1c\uc758 \uccad\ud06c \uadf8\ub8f9\uc774 \uac01\uac01 \ub2e4\ub978 \ub799\uc5d0 \ubc30\uce58\ub429\ub2c8\ub2e4.\n\ub799 \uc120\ud0dd \ub2e8\uacc4\uc640 \uac19\uc740 CRUSH \uaddc\uce59 \ub2e8\uacc4\ub97c \ub9cc\ub4dc\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74, \uadf8\ub7ec\ud55c \uadf8\ub8f9\ud654\uac00 \uc218\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 ISA \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucea1\uc290\ud654\ud569\ub2c8\ub2e4. \uc778\ud154 \ud504\ub85c\uc138\uc11c\uc5d0\uc11c\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 \ub450 \uac1c\uc758 \ub9ac\ub4dc \uc194\ub85c\ubaac \ud615\uc2dd\uc73c\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4.\nreed_sol_van\uc774 \uc124\uc815\ub418\uba74 Vandermonde, cauchy\uac00 \uc124\uc815\ub418\uba74 Cauchy\uc785\ub2c8\ub2e4.</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\uc740 \ub2e4\uc911 SHEC \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucea1\uc290\ud654\ud569\ub2c8\ub2e4.\n\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0 ceph\uac00 \ub9ac\ub4dc \uc194\ub85c\ubaac \ucf54\ub4dc\ubcf4\ub2e4 \ub354 \ud6a8\uc728\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubcf5\uad6c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\uac01 \ub370\uc774\ud130 \uccad\ud06c\uac00 \uacc4\uc0b0 \ubc94\uc704\uc5d0 \ud3ec\ud568\ub418\ub294 \ud328\ub9ac\ud2f0 \uccad\ud06c\uc758 \uc218\uc785\ub2c8\ub2e4. \uc774 \uc218\uce58\ub294 \ub0b4\uad6c\uc131 \uce21\uc815\uae30\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, c = 2 \uc778 \uacbd\uc6b0 2 \uac1c\uc758 OSD\uac00 \ub370\uc774\ud130 \uc190\uc2e4\uc5c6\uc774 \uc911\ub2e8 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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 \uaddc\uce59\uc758 \uccab \ubc88\uc9f8 \ub2e8\uacc4\uc5d0 \uc0ac\uc6a9 \ub41c \ud06c\ub7ec\uc2dc \ubc84\ud0b7\uc758 \uc774\ub984\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 step\uc740 \uae30\ubcf8\uac12\uc744 \ucde8\ud569\ub2c8\ub2e4.</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>\ub3d9\uc77c\ud55c \uc2e4\ud328 \ub3c4\uba54\uc778\uc744 \uac00\uc9c4 \uc591\ub3d9\uc774\uc5d0 \ub450 \uac1c\uc758 \uccad\ud06c\uac00 \uc5c6\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. \uc608\ub97c \ub4e4\uc5b4 \uc2e4\ud328 \ub3c4\uba54\uc778\uc774 \ud638\uc2a4\ud2b8 \uc778 \uacbd\uc6b0 \ub450 \uac1c\uc758 \uccad\ud06c\uac00 \ub3d9\uc77c\ud55c \ud638\uc2a4\ud2b8\uc5d0 \uc800\uc7a5\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \ub2e8\uacc4\ub294 \ub9ac\ud504 \ud638\uc2a4\ud2b8\ub97c \uc120\ud0dd\ud558\ub294 \ub2e8\uacc4\uc640 \uac19\uc740 CRUSH \uaddc\uce59 \ub2e8\uacc4\ub97c \ub9cc\ub4dc\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</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\uc9c0\ub3c4\uc5d0\uc11c \ud06c\ub798\uc2dc \uc7a5\uce58 \ud074\ub798\uc2a4 \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud2b9\uc815 \ud074\ub798\uc2a4 (\uc608 : ssd \ub610\ub294 hdd)\uc758 \uc7a5\uce58\ub85c \ubc30\uce58\ub97c \uc81c\ud55c\ud569\ub2c8\ub2e4.</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>\uc0ad\uc81c \ucf54\ub4dc \ud50c\ub7ec\uadf8\uc778\uc774\ub85c\ub4dc\ub418\ub294 \ub514\ub809\ud1a0\ub9ac \uc774\ub984\uc744 \uc124\uc815\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\ubaa8\ub4e0 \uc791\uc5c5\ub4e4 \ud5c8\uc6a9</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>\uc624\uc9c1 \uc11c\ubc84\ub97c \uc218\uc815\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\ub4e4\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4.</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>\uc77d\uae30\uc640 \uc4f0\uae30 \uc791\uc5c5\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc9c0\ub9cc, \uadf8\uc678 \ubaa8\ub4e0 \uc791\uc5c5\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.</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>\ud30c\uc77c\uc758 \uc18d\uc131\uacfc \ub514\ub809\ud1a0\ub9ac \ub0b4\uc6a9\uc744 \ubcc0\uacbd\ud558\ub294 \uc77d\uae30, \uc4f0\uae30 \ub610\ub294 \uc5b4\ub5a0\ud55c \uc791\uc5c5\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\uc804\ud600 \uc5b4\ub5a0\ud55c \uc811\uadfc\ub3c4 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \uc6b0\uc120\uc21c\uc704 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\ub0ae\uc74c</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\ub192\uc74c</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\ub9c8\uc9c0\ub9c9 5\ubd84</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\uc9c0\ub09c 15\ubd84</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\uc9c0\ub09c 30\ubd84</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\uc9c0\ub09c 1\uc2dc\uac04(\uae30\ubcf8)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\uc9c0\ub09c 3\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\uc9c0\ub09c 6\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\uc9c0\ub09c 12\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\uc9c0\ub09c 24\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\uc5b4\uc81c</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\uc624\ub298</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\uc624\ub298 \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\uadf8\uc800\uaed8</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\uc9c0\ub09c 2\uc77c</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\uc774\ubc88 \uc8fc \ub9c8\uc9c0\ub9c9\ub0a0</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\uc804\uc8fc</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\uc774\ubc88\uc8fc</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\uc774\ubc88\uc8fc \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\uc9c0\ub09c 7\uc77c</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\uc9c0\ub09c \ub2ec</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\uc774\ubc88 \ub2ec</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\uc774\ubc88 \ub2ec \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\uc9c0\ub09c 30\uc77c</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\uc9c0\ub09c 90\uc77c</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\uc9c0\ub09c 6\uac1c\uc6d4</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\uc9c0\ub09c 1\ub144</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\uc804\ub144\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\uae08\ub144\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\uae08\ub144 \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\uc9c0\ub09c 2\ub144</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\uc9c0\ub09c 5\ub144</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\uc815\ubcf4</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\uc120\ud0dd\ub41c \uc544\uc774\ud15c \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\ub2e4\uc2dc \uc120\ud0dd\ud558\uae30 \uc704\ud574 \uc544\uc774\ud15c \uc120\ud0dd\uc744 \ucde8\uc18c</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\uc120\ud0dd \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\ud544\ud130 \ud14c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\ubca0\ucc0c \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \uc544\uc774\ud15c \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\uc608</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\uc544\ub2c8\uc624</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\uc11c\ube44\uc2a4 \ub7c9</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \ud55c\uacc4</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 IO \ubc14\uc774\ud2b8 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 IO \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\uc77d\uae30 BPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc77d\uae30 \ubc14\uc774\uc2a4 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\uc77d\uae30 IOPS \ud55c\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc77d\uae30 \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\uc4f0\uae30 BPS \ud55c\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc4f0\uae30 \ubc14\uc774\ud2b8 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\uc4f0\uae30 IOPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc4f0\uae30 \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 IO \ubc14\uc774\ud2b8 \ud55c\ub3c4 \uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\uc6d0\ud558\ub294 IO \uc791\uc5c5\uc758 \ubc84\uc2a4\ud2b8 \ud55c\uacc4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\uc77d\uae30 BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\uc6d0\ud558\ub294 \uc77d\uae30 \ubc84\uc2a4\ud2b8 \ud55c\uacc4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\uc77d\uae30 IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\uc6d0\ud558\ub294 \uc77d\uae30 \uc791\uc5c5\uc758 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\uc4f0\uae30 BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\uc758 \uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\uc4f0\uae30 IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\uc758 \uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4.</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/> \uc758 \uc2e4\ud3d0\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\uc218\ud589\uc911</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\uc218\ud589</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\uc218\ud589\ub41c</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\uc54c\ub824\uc9c0\uc9c0 \uc54a\ub294 \uc791\uc5c5</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\uc0dd\uc131\ud558\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\uc0dd\uc131</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\uac31\uc2e0 \uc911</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\uac31\uc2e0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\uac31\uc2e0\ub41c</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\uc0ad\uc81c \uc911</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\uc0ad\uc81c\ub3d4</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 \uc2a4\ub0c5\uc0bf  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>\ud480  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc744 \uc704\ud55c \ubbf8\ub7ec\ubaa8\ub4dc\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>\ud480 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \ubbf8\ub7ec \uc0c1\ub300\ubc29\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>\uc774\ub984\uc740\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\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>\uc774\ub984\uc740\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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>\uc774\ub984\uc774\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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}}"/> \uc774 \ud3ec\ud568\ub41c \uc2a4\ub0c5\uc0bf\ub4e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\ubcf5\uc81c\uc911</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\ubcf5\uc81c</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\ubcf5\uc81c\ub41c</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>\ubc18\ub4dc\uc2dc\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\uc758 \uc2a4\ub0c5\uc0bf\uc740 \ubcf4\ud638\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\ubcf5\uc0ac\uc911</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\ubcf5\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\ubcf5\uc0ac\ub41c</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\ud3c9\ud3c9\ud558\uac8c \ud558\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\ud3c9\ud3c9\ud568</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\ud3c9\ud3c9\ud558\uac8c \ub428</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>\uc774\ub984\uc774\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9 \uc911.\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>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uc744 \ubcf4\ud638\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 \uadf8\uac83\uc740 \uc790\uc2dd \uc774\ubbf8\uc9c0\ub4e4\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4,\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}}"/> \uc744 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 \uadf8\uac83\uc740 \ubcf4\ud638\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\ub864\ubc31 \uc911</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\ub864\ubc31\ub428</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\uc62e\uae30\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\uc62e\uaca8\uc9d0</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>\uc774\ubbf8\uc9c0 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \ubc84\ub9ac\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\uc774\ubbf8\uc9c0\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\ubcf5\uad6c\uc911</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\ubcf5\uad6c</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\ubcf5\uad6c\ub428</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>\uc774\ubbf8\uc9c0 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc744 \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' \ub85c\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>\uc774\ubbf8\uc9c0 \uc774\ub984 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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>\uc774\ubbf8\uc9c0 \'\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>\uc644\uc804\uc0ad\uc81c \uc911</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\uc644\uc804\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\uc644\uc804\uc0ad\uc81c\ub428</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\ubaa8\ub4e0 \ud480\ub4e4</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\ub85c \ubd80\ud130\uc758 \uc774\ubbf8\uc9c0\ub4e4\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>\ud53c\uc5b4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ubbf8\ub7ec\ub9c1\uc744 \ube44\ud65c\uc131\ud654 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</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>\ud480 \'\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 \ucf54\ub4dc \ud504\ub85c\ud30c\uc77c \'\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>\ud0c0\uae43  \'\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>\n'},QC43:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("XFyV"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null)),a["\u0275ncd"](0,0)],function(t,e){t(e,1,0,"info")},null)}},QFaf:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n,a){var r=t.call(this,e,n,a)||this;return r.controls=e,r}return a.__extends(e,t),e.prototype.get=function(t){var e=this._get(t);if(!e)throw new Error("Control '"+t+"' could not be found!");return e},e.prototype._get=function(n){return t.prototype.get.call(this,n)||Object.values(this.controls).filter(function(t){return t.get}).map(function(t){return t instanceof e?t._get(n):t.get(n)}).find(function(t){return Boolean(t)})},e.prototype.getValue=function(t){return this.get(t).value},e.prototype.silentSet=function(t,e){this.get(t).setValue(e,{emitEvent:!1})},e.prototype.showError=function(t,e,n){var a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)},e}(n("gIcY").k)},QG5k:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeMenuItemAction=function(t){return t[t.NewFolder=0]="NewFolder",t[t.NewTag=1]="NewTag",t[t.Rename=2]="Rename",t[t.Remove=3]="Remove",t[t.Custom=4]="Custom",t}(e.NodeMenuItemAction||{}),e.NodeMenuAction=function(t){return t[t.Close=0]="Close",t}(e.NodeMenuAction||{})},QGcS:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeDraggableEvent=function(){return function(t,e){this.captured=t,this.target=e}}()},QHrR:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("Y0Co")),a(n("Lwhh")),a(n("8iEZ")),a(n("L5sC"))},QTAa:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("t/zF").a)},Qexa:function(t,e,n){"use strict";t.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},Qgas:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("dC0D"),r=n("AxiF"),i=n("HJBe"),o=n("y3By");function s(t,e){return arguments.length>=2?function(n){return Object(o.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(o.a)(Object(a.a)(function(e,n,a){return t(e,n,a+1)}),Object(r.a)(1))(e)}}},Qj4J:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}})}()},"R+r5":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("Qgas");function r(t,e,n){return 0===n?[e]:(t.push(e),t)}function i(){return Object(a.a)(r,[])}},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 a(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 a(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return a(t)}return a(t/=1e3)}n("wd/R").defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_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\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_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\xebschter 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 a(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return a(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\xe9int",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},RCHg:function(t,e,n){"use strict";var a=n("wd/R");a="function"==typeof a?a:window.moment;var r=n("CDJp"),i=n("RDha"),o=n("cdu6"),s=n("tjFV"),u=Number.MIN_SAFE_INTEGER||-9007199254740991,c=Number.MAX_SAFE_INTEGER||9007199254740991,l={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}},d=Object.keys(l);function p(t,e){return t-e}function f(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 h(t,e,n,a){var r=function(t,e,n){for(var a,r,i,o=0,s=t.length-1;o>=0&&o<=s;){if(i=t[a=o+s>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)o=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};s=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],o=r.lo?r.hi?r.hi:t[t.length-1]:t[1],s=o[e]-i[e];return i[a]+(o[a]-i[a])*(s?(n-i[e])/s:0)}function g(t,e){var n=e.parser,r=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof r?a(t,r):(t instanceof a||(t=a(t)),t.isValid()?t:"function"==typeof r?r(t):t)}function m(t,e){if(i.isNullOrUndef(t))return null;var n=e.options.time,a=g(e.getRightValue(t),n);return a.isValid()?(n.round&&a.startOf(n.round),a.valueOf()):null}function b(t){for(var e=d.indexOf(t)+1,n=d.length;e<n;++e)if(l[d[e]].common)return d[e]}t.exports=function(){var t=o.extend({initialize:function(){if(!a)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),o.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),o.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),o.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,r,o,s,l=this,d=l.chart,h=l.options.time,g=h.unit||"day",b=c,y=u,v=[],x=[],_=[];for(t=0,n=d.data.labels.length;t<n;++t)_.push(m(d.data.labels[t],l));for(t=0,n=(d.data.datasets||[]).length;t<n;++t)if(d.isDatasetVisible(t))if(i.isObject((o=d.data.datasets[t].data)[0]))for(x[t]=[],e=0,r=o.length;e<r;++e)s=m(o[e],l),v.push(s),x[t][e]=s;else v.push.apply(v,_),x[t]=_.slice(0);else x[t]=[];_.length&&(_=f(_).sort(p),b=Math.min(b,_[0]),y=Math.max(y,_[_.length-1])),v.length&&(v=f(v).sort(p),b=Math.min(b,v[0]),y=Math.max(y,v[v.length-1])),b=m(h.min,l)||b,y=m(h.max,l)||y,b=b===c?+a().startOf(g):b,y=y===u?+a().endOf(g)+1:y,l.min=Math.min(b,y),l.max=Math.max(b+1,y),l._horizontal=l.isHorizontal(),l._table=[],l._timestamps={data:v,datasets:x,labels:_}},buildTicks:function(){var t,e,n,r=this,o=r.min,s=r.max,u=r.options,p=u.time,f=[],y=[];switch(u.ticks.source){case"data":f=r._timestamps.data;break;case"labels":f=r._timestamps.labels;break;case"auto":default:f=function(t,e,n,r){var o,s=r.time,u=s.unit||function(t,e,n,a){var r,i,o=d.length;for(r=d.indexOf(s.minUnit);r<o-1;++r)if((i=l[d[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:c)*i.size))<=a)return d[r];return d[o-1]}(0,t,e,n),p=b(u),f=i.valueOrDefault(s.stepSize,s.unitStepSize),h="week"===u&&s.isoWeekday,g=r.ticks.major.enabled,m=l[u],y=a(t),v=a(e),x=[];for(f||(f=function(t,e,n,a){var r,i,o,s=e-t,c=l[u],d=c.size,p=c.steps;if(!p)return Math.ceil(s/(a*d));for(r=0,i=p.length;r<i&&(o=p[r],!(Math.ceil(s/(d*o))<=a));++r);return o}(t,e,0,n)),h&&(y=y.isoWeekday(h),v=v.isoWeekday(h)),y=y.startOf(h?"day":u),(v=v.startOf(h?"day":u))<e&&v.add(1,u),o=a(y),g&&p&&!h&&!s.round&&(o.startOf(p),o.add(~~((y-o)/(m.size*f))*f,u));o<v;o.add(f,u))x.push(+o);return x.push(+o),x}(o,s,r.getLabelCapacity(o),u)}for("ticks"===u.bounds&&f.length&&(o=f[0],s=f[f.length-1]),o=m(p.min,r)||o,s=m(p.max,r)||s,t=0,e=f.length;t<e;++t)(n=f[t])>=o&&n<=s&&y.push(n);return r.min=o,r.max=s,r._unit=p.unit||function(t,e,n,i){var o,s,u=a.duration(a(r.max).diff(a(n)));for(o=d.length-1;o>=d.indexOf(e);o--)if(l[s=d[o]].common&&u.as(s)>=t.length)return s;return d[e?d.indexOf(e):0]}(y,p.minUnit,r.min),r._majorUnit=b(r._unit),r._table=function(t,e,n,a){if("linear"===u.distribution||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,o,s,c,l=[],d=[e];for(r=0,i=t.length;r<i;++r)(s=t[r])>e&&s<n&&d.push(s);for(d.push(n),r=0,i=d.length;r<i;++r)c=d[r+1],s=d[r],void 0!==(o=d[r-1])&&void 0!==c&&Math.round((c+o)/2)===s||l.push({time:s,pos:r/(i-1)});return l}(r._timestamps.data,o,s),r._offsets=function(t,e,n,a,r){var i,o=0,s=0;return r.offset&&e.length&&(r.time.min||(i=e[0],o=(h(t,"time",e.length>1?e[1]:a,"pos")-h(t,"time",i,"pos"))/2),r.time.max||(i=e.length>1?e[e.length-2]:n,s=(h(t,"time",e[e.length-1],"pos")-h(t,"time",i,"pos"))/2)),{left:o,right:s}}(r._table,y,o,s,u),r._labelFormat=function(t,e){var n,a,r,i=t.length;for(n=0;n<i;n++){if(0!==(a=g(t[n],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===a.second()&&0===a.minute()&&0===a.hour()||(r=!0)}return r?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(r._timestamps.data,p),function(t,e){var n,r,i,o,s=[];for(n=0,r=t.length;n<r;++n)i=t[n],o=!!e&&i===+a(i).startOf(e),s.push({value:i,major:o});return s}(y,r._majorUnit)},getLabelForIndex:function(t,e){var n=this.chart.data,a=this.options.time,r=n.labels&&t<n.labels.length?n.labels[t]:"",o=n.datasets[e].data[t];return i.isObject(o)&&(r=this.getRightValue(o)),a.tooltipFormat?g(r,a).format(a.tooltipFormat):"string"==typeof r?r:g(r,a).format(this._labelFormat)},tickFormatFunction:function(t,e,n,a){var r=this.options,o=t.valueOf(),s=r.time.displayFormats,u=s[this._unit],c=this._majorUnit,l=s[c],d=t.clone().startOf(c).valueOf(),p=r.ticks.major,f=p.enabled&&c&&l&&o===d,h=t.format(a||(f?l:u)),g=f?p:r.ticks.minor,m=i.valueOrDefault(g.callback,g.userCallback);return m?m(h,e,n):h},convertTicksToLabels:function(t){var e,n,r=[];for(e=0,n=t.length;e<n;++e)r.push(this.tickFormatFunction(a(t[e].value),e,t));return r},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,a=e._horizontal?e.left:e.top,r=h(e._table,"time",t,"pos");return a+n*(e._offsets.left+r)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=m(t,this)),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,r=h(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,"time");return a(r)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=i.toRadians(e.maxRotation),o=Math.cos(a),s=Math.sin(a);return n*o+i.valueOrDefault(e.fontSize,r.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,r=e.tickFormatFunction(a(t),0,[],n),i=e.getLabelWidth(r),o=e.isHorizontal()?e.width:e.height,s=Math.floor(o/i);return s>0?s:1}});s.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{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"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},RDha:function(t,e,n){"use strict";t.exports=n("TC34"),t.exports.easing=n("u0Op"),t.exports.canvas=n("Sfow"),t.exports.options=n("As3K")},RnPR:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Keys=function(t){return t[t.up=38]="up",t[t.down=40]="down",t[t.return=13]="return",t[t.escape=27]="escape",t[t.left=37]="left",t[t.right=39]="right",t}(e.Keys||{})},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){var e=a[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},S1nX:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("xlPZ"),r=n("yGWI"),i=n("K9Ia");function o(){return new i.a}function s(){return function(t){return Object(r.a)()(Object(a.a)(o)(t))}}},"S3/U":function(t,e,n){"use strict";t.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},S5XQ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("DKTb"),r=function(t){return function(e){return t.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,a.a),e}}},S5bw:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("K9Ia"),i=n("zo3G"),o=n("pugT"),s=n("mZXl"),u=n("8g8A"),c=n("uMaO"),l=function(t){function e(e,n,a){void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=Number.POSITIVE_INFINITY);var r=t.call(this)||this;return r.scheduler=a,r._events=[],r._infiniteTimeWindow=!1,r._bufferSize=e<1?1:e,r._windowTime=n<1?1:n,n===Number.POSITIVE_INFINITY?(r._infiniteTimeWindow=!0,r.next=r.nextInfiniteTimeWindow):r.next=r.nextTimeWindow,r}return a.__extends(e,t),e.prototype.nextInfiniteTimeWindow=function(e){var n=this._events;n.push(e),n.length>this._bufferSize&&n.shift(),t.prototype.next.call(this,e)},e.prototype.nextTimeWindow=function(e){this._events.push(new d(this._getNow(),e)),this._trimBufferThenGetEvents(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){var e,n=this._infiniteTimeWindow,a=n?this._events:this._trimBufferThenGetEvents(),r=this.scheduler,i=a.length;if(this.closed)throw new u.a;if(this.isStopped||this.hasError?e=o.a.EMPTY:(this.observers.push(t),e=new c.a(this,t)),r&&t.add(t=new s.a(t,r)),n)for(var l=0;l<i&&!t.closed;l++)t.next(a[l]);else for(l=0;l<i&&!t.closed;l++)t.next(a[l].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),e},e.prototype._getNow=function(){return(this.scheduler||i.a).now()},e.prototype._trimBufferThenGetEvents=function(){for(var t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length,i=0;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a},e}(r.a),d=function(){return function(t,e){this.time=t,this.value=e}}()},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")}}n("wd/R").defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] 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}})}()},S7Ns:function(t,e,n){"use strict";t.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},S7zO:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=(n("vCyI"),n("jKX/"),function(){function t(){this.dropDownActions=[]}return t.prototype.ngOnInit=function(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()},t.prototype.toClassName=function(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()},t.prototype.removeActionsWithNoPermissions=function(){var t=this;if(this.permission){var e=Object.keys(this.permission).filter(function(e){return t.permission[e]});this.tableActions=this.tableActions.filter(function(t){return e.includes(t.permission)})}else this.tableActions=[]},t.prototype.updateDropDownActions=function(){var t=this;this.dropDownActions=this.tableActions.filter(function(e){return e.visible?e.visible(t.selection):e})},t.prototype.getCurrentButton=function(){var t=this;if(!this.onlyDropDown){var e=this.dropDownActions.find(function(e){return t.showableAction(e)});return!e&&this.dropDownActions.length>0&&(e=this.dropDownActions[0]),e}},t.prototype.showableAction=function(t){var e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a},t.prototype.useRouterLink=function(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()},t.prototype.disableSelectionAction=function(t){var e=t.permission,n=t.disable;if(n)return Boolean(n(this.selection));var a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(e)&&(!a||a.cdExecuting))},t.prototype.showDropDownActions=function(){return this.updateDropDownActions(),this.dropDownActions.length>1},t.prototype.useClickAction=function(t){return!this.disableSelectionAction(t)&&t.click&&t.click()},t.prototype.useDisableDesc=function(t){return t.disableDesc&&t.disableDesc()},t}())},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return encodeURIComponent(t)},t}()},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:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};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\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".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\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(t){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gec\u0259":t<12?"s\u0259h\u0259r":t<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(t){if(0===t)return t+"-\u0131nc\u0131";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"))},STEd:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n("FBEI");var a=n("CcnG"),r=n("xtUU"),i=n("HHO+"),o=n("Ip0R"),s=n("/TVo"),u=n("urB8"),c=n("ty8c"),l=n("FYBg"),d=n("JZ5S"),p=n("Tff5"),f=n("VUo1");e.TreeModule=function(){function t(){}return t.decorators=[{type:a.NgModule,args:[{imports:[o.CommonModule],declarations:[s.NodeDraggableDirective,r.TreeComponent,c.NodeEditableDirective,l.NodeMenuComponent,i.TreeInternalComponent,f.SafeHtmlPipe],exports:[r.TreeComponent],providers:[u.NodeDraggableService,d.NodeMenuService,p.TreeService]}]}],t}()},SXH0:function(t,e){t.exports='<?xml version="1.0" encoding="UTF-8"?>\n<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">\n  <file source-language="en-US" datatype="plaintext" original="ng2.template" target-language="en-US">\n    <body>\n      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">\n        <source>Toggle navigation</source>\n        <target state="translated">Toggle navigation</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target state="translated">Dashboard</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n      </trans-unit><trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target state="translated">Cluster</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">21</context>\n        </context-group>\n      </trans-unit><trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target state="translated">Hosts</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">81</context>\n        </context-group>\n      </trans-unit><trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target state="translated">Monitors</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target state="translated">OSDs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n      </trans-unit><trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target state="translated">Configuration</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">78</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">125</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n      </trans-unit><trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target state="translated">CRUSH map</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">85</context>\n        </context-group>\n      </trans-unit><trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target state="translated">Manager modules</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n      </trans-unit><trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target state="translated">Logs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">99</context>\n        </context-group>\n      </trans-unit><trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target state="translated">Alerts</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">105</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">\n        <source>Silences</source>\n        <target state="translated">Silences</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">111</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target state="translated">Pools</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">121</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">186</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n      </trans-unit><trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target state="translated">Block</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">135</context>\n        </context-group>\n      </trans-unit><trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target state="translated">Images</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">144</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>\n          <context context-type="linenumber">21</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi/iscsi.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">120</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">363</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">502</context>\n        </context-group>\n      </trans-unit><trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target state="translated">Mirroring</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">152</context>\n        </context-group>\n      </trans-unit><trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">\n        <source>iSCSI</source>\n        <target state="translated">iSCSI</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">164</context>\n        </context-group>\n      </trans-unit><trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">\n        <source>NFS</source>\n        <target state="translated">NFS</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">174</context>\n        </context-group>\n      </trans-unit><trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target state="translated">Filesystems</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">182</context>\n        </context-group>\n      </trans-unit><trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target state="translated">Object Gateway</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">193</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-list/nfs-list.component.html</context>\n          <context context-type="linenumber">27</context>\n        </context-group>\n      </trans-unit><trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target state="translated">Daemons</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">202</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">53</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target state="translated">Users</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">208</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-tabs/user-tabs.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target state="translated">Buckets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>\n          <context context-type="linenumber">214</context>\n        </context-group>\n      </trans-unit><trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">\n        <source>Retrieving data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for\n  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>. Please wait...</source>\n        <target state="translated">Retrieving data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for\n  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>. Please wait...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">\n        <source>Displaying previously cached data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>\n  for <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.</source>\n        <target state="translated">Displaying previously cached data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>\n  for <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">\n        <source>Could not load data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for\n  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.\n  Please check the cluster health.</source>\n        <target state="translated">Could not load data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for\n  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.\n  Please check the cluster health.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n      </trans-unit><trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target state="translated">Back</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/error-panel/error-panel.component.html</context>\n          <context context-type="linenumber">27</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">118</context>\n        </context-group>\n      </trans-unit><trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target state="translated">Select a Language</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/language-selector/language-selector.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target state="translated">Loading panel data...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">\n        <source>Please consult the\n  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to\n  configure and enable the monitoring functionality.</source>\n        <target state="translated">Please consult the\n  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to\n  configure and enable the monitoring functionality.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><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="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to\n  add dashboards to Grafana.</source>\n        <target state="translated">Grafana Dashboard doesn\'t exist. Please refer to\n  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to\n  add dashboards to Grafana.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>\n          <context context-type="linenumber">11</context>\n        </context-group>\n      </trans-unit><trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target state="translated">Grafana Time Picker</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target state="translated">Reset Settings</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n      </trans-unit><trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">\n        <source>Refresh</source>\n        <target state="translated">Refresh</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/refresh-selector/refresh-selector.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><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 state="translated">Remove the custom configuration value. The default configuration will be inherited and used instead.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">\n        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.</source>\n        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n      </trans-unit><trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">\n        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.</source>\n        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>\n          <context context-type="linenumber">67</context>\n        </context-group>\n      </trans-unit><trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target state="translated">Failed to load data.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target state="translated">selected</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>\n          <context context-type="linenumber">112</context>\n        </context-group>\n        <note priority="1" from="description">X selected</note>\n      </trans-unit><trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target state="translated">found</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>\n          <context context-type="linenumber">115</context>\n        </context-group>\n        <note priority="1" from="description">X found</note>\n      </trans-unit><trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target state="translated">total</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>\n          <context context-type="linenumber">118</context>\n        </context-group>\n        <note priority="1" from="description">X total</note>\n      </trans-unit><trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target state="translated">Edit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">236</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">375</context>\n        </context-group>\n      </trans-unit><trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target state="translated">Name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">445</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">21</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n      </trans-unit><trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target state="translated">Description</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target state="translated">Long description</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target state="translated">Default</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n      </trans-unit><trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target state="translated">Daemon default</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">74</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n      </trans-unit><trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target state="translated">Services</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">68</context>\n        </context-group>\n      </trans-unit><trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target state="translated">Values</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">101</context>\n        </context-group>\n      </trans-unit><trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">\n        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.</source>\n        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">139</context>\n        </context-group>\n      </trans-unit><trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">\n        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.</source>\n        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">142</context>\n        </context-group>\n      </trans-unit><trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target state="translated">Save</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>\n          <context context-type="linenumber">154</context>\n        </context-group>\n      </trans-unit><trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target state="translated">CRUSH map viewer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/crushmap/crushmap.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target state="translated">Hosts List</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/hosts/hosts.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target state="translated">Overall Performance</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/hosts/hosts.component.html</context>\n          <context context-type="linenumber">29</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-list/pool-list.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n      </trans-unit><trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target state="translated">No entries found</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">31</context>\n        </context-group>\n      </trans-unit><trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target state="translated">Cluster Logs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target state="translated">Audit Logs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">21</context>\n        </context-group>\n      </trans-unit><trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">\n        <source>Priority:</source>\n        <target state="translated">Priority:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">41</context>\n        </context-group>\n      </trans-unit><trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">\n        <source>Keyword:</source>\n        <target state="translated">Keyword:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">\n        <source>Date:</source>\n        <target state="translated">Date:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">70</context>\n        </context-group>\n      </trans-unit><trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">\n        <source>Datepicker</source>\n        <target state="translated">Datepicker</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">75</context>\n        </context-group>\n      </trans-unit><trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">\n        <source>Time range:</source>\n        <target state="translated">Time range:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>\n          <context context-type="linenumber">91</context>\n        </context-group>\n      </trans-unit><trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target state="translated">Loading configuration...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target state="translated">The configuration could not be loaded.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">4</context>\n        </context-group>\n      </trans-unit><trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target state="translated">Edit Manager module</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><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 state="translated">The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">62</context>\n        </context-group>\n      </trans-unit><trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">\n        <source>The entered value needs to be a valid IP address.</source>\n        <target state="translated">The entered value needs to be a valid IP address.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">65</context>\n        </context-group>\n      </trans-unit><trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target state="translated">This field is required.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">100</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">31</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">61</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">84</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">119</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">94</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">154</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">178</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">36</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">43</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">231</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">253</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">288</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">313</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">348</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">36</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">58</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">58</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">96</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">131</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">83</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">132</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">63</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">167</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">199</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">450</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">487</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">543</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">580</context>\n        </context-group>\n      </trans-unit><trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">\n        <source>The entered value is too high! It must be lower or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.</source>\n        <target state="translated">The entered value is too high! It must be lower or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">82</context>\n        </context-group>\n      </trans-unit><trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">\n        <source>The entered value is too low! It must be greater or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.</source>\n        <target state="translated">The entered value is too low! It must be greater or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">85</context>\n        </context-group>\n      </trans-unit><trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">\n        <source>The entered value needs to be a number.</source>\n        <target state="translated">The entered value needs to be a number.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n      </trans-unit><trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">\n        <source>The entered value needs to be a number or decimal.</source>\n        <target state="translated">The entered value needs to be a number or decimal.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">103</context>\n        </context-group>\n      </trans-unit><trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target state="translated">Update</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>\n          <context context-type="linenumber">113</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">41</context>\n        </context-group>\n      </trans-unit><trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target state="translated">Status</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">4</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target state="translated">Cluster ID</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n      </trans-unit><trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target state="translated">monmap modified</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n      </trans-unit><trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target state="translated">monmap epoch</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n      </trans-unit><trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target state="translated">quorum con</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">24</context>\n        </context-group>\n      </trans-unit><trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target state="translated">quorum mon</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">29</context>\n        </context-group>\n      </trans-unit><trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target state="translated">required con</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n      </trans-unit><trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target state="translated">required mon</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n      </trans-unit><trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target state="translated">In Quorum</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target state="translated">Not In Quorum</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>\n          <context context-type="linenumber">54</context>\n        </context-group>\n      </trans-unit><trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target state="translated">Cancel</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/confirmation-modal/confirmation-modal.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">90</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">136</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">43</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>\n          <context context-type="linenumber">52</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>\n          <context context-type="linenumber">55</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">43</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">108</context>\n        </context-group>\n      </trans-unit><trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">\n        <source>Are you sure that you want to <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?</source>\n        <target state="translated">Are you sure that you want to <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target state="translated">Yes, I am sure.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target state="translated">Cluster-wide OSD Flags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target state="translated">Submit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">21</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">515</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">134</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">106</context>\n        </context-group>\n      </trans-unit><trans-unit id="formTitle" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">58</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">211</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">11</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">17</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n        <note priority="1" from="description">Example: Create Pool</note>\n        <note priority="1" from="meaning">form title</note>\n      </trans-unit><trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target state="translated">Advanced...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">213</context>\n        </context-group>\n      </trans-unit><trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">\n        <source>Advanced configuration options</source>\n        <target state="translated">Advanced configuration options</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="formActionButton" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">81</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">149</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">311</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">563</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">327</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">455</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">141</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">81</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">143</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">595</context>\n        </context-group>\n        <note priority="1" from="description">Example: Create Pool</note>\n        <note priority="1" from="meaning">form action button</note>\n      </trans-unit><trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target state="translated">OSD Recovery Priority</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target state="translated">Priority</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n      </trans-unit><trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target state="translated">Customize priority values</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">44</context>\n        </context-group>\n      </trans-unit><trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target state="translated">This field is required!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">67</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">83</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">104</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">126</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">146</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">167</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">67</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">91</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">117</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">165</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">68</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">93</context>\n        </context-group>\n      </trans-unit><trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ attr.value.patternHelpText }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ attr.value.patternHelpText }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n      </trans-unit><trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">\n        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.</source>\n        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">75</context>\n        </context-group>\n      </trans-unit><trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">\n        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.</source>\n        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n      </trans-unit><trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target state="translated">Reweight OSD</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">\n        <source>The value needs to be between 0 and 1.</source>\n        <target state="translated">The value needs to be between 0 and 1.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target state="translated">Reweight</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>\n          <context context-type="linenumber">30</context>\n        </context-group>\n      </trans-unit><trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">\n        <source>OSDs <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub</source>\n        <target state="translated">OSDs <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target state="translated">{VAR_SELECT, select, 1 {Deep } }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>.</source>\n        <target state="translated">You are about to apply a <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target state="translated">{VAR_SELECT, select, 1 {deep } }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target state="translated">OSDs List</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be marked\n  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</source>\n        <target state="translated"><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be marked\n  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>\n          <context context-type="linenumber">82</context>\n        </context-group>\n      </trans-unit><trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target state="translated">The OSD is not safe to destroy!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>\n          <context context-type="linenumber">91</context>\n        </context-group>\n      </trans-unit><trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be\n  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</source>\n        <target state="translated"><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be\n  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>\n          <context context-type="linenumber">93</context>\n        </context-group>\n      </trans-unit><trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target state="translated">Details</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/alert-list/alert-list.component.html</context>\n          <context context-type="linenumber">17</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-list/silence-list.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-details/role-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-details/mgr-module-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-details/nfs-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">\n        <source>Matcher</source>\n        <target state="translated">Matcher</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">\n        <source>-- Select an attribute to match against --</source>\n        <target state="translated">-- Select an attribute to match against --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">31</context>\n        </context-group>\n      </trans-unit><trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target state="translated">Value</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">\n        <source>Use regular expression</source>\n        <target state="translated">Use regular expression</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">80</context>\n        </context-group>\n      </trans-unit><trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>\n        <target state="translated">{VAR_SELECT, select, 1 {Update} other {Add} }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">90</context>\n        </context-group>\n      </trans-unit><trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target state="translated">Close</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>\n          <context context-type="linenumber">93</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target state="translated">Delete</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">40</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">243</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">297</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">382</context>\n        </context-group>\n      </trans-unit><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 state="translated">Editing a silence will expire the old silence and recreate it as a new silence</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">62</context>\n        </context-group>\n      </trans-unit><trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">\n        <source>Creator</source>\n        <target state="translated">Creator</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n      </trans-unit><trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">\n        <source>Comment</source>\n        <target state="translated">Comment</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n      </trans-unit><trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">\n        <source>Start time</source>\n        <target state="translated">Start time</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">113</context>\n        </context-group>\n      </trans-unit><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 state="translated">If the start time lies in the past the creation time will be used</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">114</context>\n        </context-group>\n      </trans-unit><trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">\n        <source>Duration</source>\n        <target state="translated">Duration</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">135</context>\n        </context-group>\n      </trans-unit><trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">\n        <source>End time</source>\n        <target state="translated">End time</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">155</context>\n        </context-group>\n      </trans-unit><trans-unit id="dbe739ec8c99a0132e326067ffec9c0ee06b2655" datatype="html">\n        <source>Matchers<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>*<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></source>\n        <target state="translated">Matchers<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>*<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">173</context>\n        </context-group>\n      </trans-unit><trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">\n        <source>A silence requires at least one matcher</source>\n        <target state="translated">A silence requires at least one matcher</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">177</context>\n        </context-group>\n      </trans-unit><trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">\n        <source>Add matcher</source>\n        <target state="translated">Add matcher</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>\n          <context context-type="linenumber">191</context>\n        </context-group>\n      </trans-unit><trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target state="translated">Health</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/dashboard/dashboard.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target state="translated">Statistics</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/dashboard/dashboard.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n      </trans-unit><trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">\n        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n  on how to configure and enable the NFS Ganesha management functionality.</source>\n        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n  on how to configure and enable the NFS Ganesha management functionality.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-501/nfs-501.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target state="translated">Clients</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target state="translated">Any client can access</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">11</context>\n        </context-group>\n      </trans-unit><trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target state="translated">Addresses</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n      </trans-unit><trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target state="translated">Required field</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">44</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">118</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">151</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">183</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">216</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">253</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">277</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">309</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">349</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">396</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">434</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">466</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">498</context>\n        </context-group>\n      </trans-unit><trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target state="translated">Must contain one or more comma-separated values</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">45</context>\n        </context-group>\n      </trans-unit><trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target state="translated">For example:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n      </trans-unit><trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target state="translated">Access Type</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">408</context>\n        </context-group>\n      </trans-unit><trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target state="translated">Squash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">78</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">443</context>\n        </context-group>\n      </trans-unit><trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target state="translated">Add clients</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>\n          <context context-type="linenumber">99</context>\n        </context-group>\n      </trans-unit><trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/></source>\n        <target state="translated">NFS export <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n      </trans-unit><trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target state="translated">Loading...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">106</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">139</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">171</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">204</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">418</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">453</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">82</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">142</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">59</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">186</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">210</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">218</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">341</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">83</context>\n        </context-group>\n      </trans-unit><trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target state="translated">-- No cluster available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n      </trans-unit><trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target state="translated">-- Select the cluster --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">38</context>\n        </context-group>\n      </trans-unit><trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target state="translated">Add daemon</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">81</context>\n        </context-group>\n      </trans-unit><trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target state="translated">Storage Backend</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">95</context>\n        </context-group>\n      </trans-unit><trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target state="translated">-- No data pools available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">109</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">145</context>\n        </context-group>\n      </trans-unit><trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target state="translated">-- Select the storage backend --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">112</context>\n        </context-group>\n      </trans-unit><trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target state="translated">Object Gateway User</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">128</context>\n        </context-group>\n      </trans-unit><trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target state="translated">-- No users available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">142</context>\n        </context-group>\n      </trans-unit><trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target state="translated">-- Select the object gateway user --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">145</context>\n        </context-group>\n      </trans-unit><trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target state="translated">CephFS User ID</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">161</context>\n        </context-group>\n      </trans-unit><trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target state="translated">-- No clients available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">174</context>\n        </context-group>\n      </trans-unit><trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target state="translated">-- Select the cephx client --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">177</context>\n        </context-group>\n      </trans-unit><trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target state="translated">CephFS Name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">193</context>\n        </context-group>\n      </trans-unit><trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">\n        <source>-- No CephFS filesystem available --</source>\n        <target state="translated">-- No CephFS filesystem available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">207</context>\n        </context-group>\n      </trans-unit><trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">\n        <source>-- Select the CephFS filesystem --</source>\n        <target state="translated">-- Select the CephFS filesystem --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">210</context>\n        </context-group>\n      </trans-unit><trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target state="translated">Security Label</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">227</context>\n        </context-group>\n      </trans-unit><trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target state="translated">Enable security label</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">239</context>\n        </context-group>\n      </trans-unit><trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target state="translated">CephFS Path</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">263</context>\n        </context-group>\n      </trans-unit><trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">\n        <source>Path need to start with a \'/\' and can be followed by a word</source>\n        <target state="translated">Path need to start with a \'/\' and can be followed by a word</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">281</context>\n        </context-group>\n      </trans-unit><trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target state="translated">New directory will be created</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">284</context>\n        </context-group>\n      </trans-unit><trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target state="translated">Path</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">294</context>\n        </context-group>\n      </trans-unit><trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">\n        <source>Path can only be a single \'/\' or a word</source>\n        <target state="translated">Path can only be a single \'/\' or a word</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">313</context>\n        </context-group>\n      </trans-unit><trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target state="translated">New bucket will be created</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">317</context>\n        </context-group>\n      </trans-unit><trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target state="translated">NFS Protocol</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">326</context>\n        </context-group>\n      </trans-unit><trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">\n        <source>NFSv3</source>\n        <target state="translated">NFSv3</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">336</context>\n        </context-group>\n      </trans-unit><trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">\n        <source>NFSv4</source>\n        <target state="translated">NFSv4</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">344</context>\n        </context-group>\n      </trans-unit><trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">\n        <source>NFS Tag</source>\n        <target state="translated">NFS Tag</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">358</context>\n        </context-group>\n      </trans-unit><trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">\n        <source>Alternative access for <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v3<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> mounts (it must not have a leading /).</source>\n        <target state="translated">Alternative access for <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v3<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> mounts (it must not have a leading /).</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">360</context>\n        </context-group>\n      </trans-unit><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 state="translated">Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">361</context>\n        </context-group>\n      </trans-unit><trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">\n        <source>By using different Tag options, the same Path may be exported multiple times.</source>\n        <target state="translated">By using different Tag options, the same Path may be exported multiple times.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">362</context>\n        </context-group>\n      </trans-unit><trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target state="translated">Pseudo</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">380</context>\n        </context-group>\n      </trans-unit><trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">\n        <source>The position that this <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v4<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> export occupies\n                in the <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Pseudo FS<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> (it must be unique).</source>\n        <target state="translated">The position that this <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v4<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> export occupies\n                in the <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Pseudo FS<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> (it must be unique).</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">383</context>\n        </context-group>\n      </trans-unit><trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">\n        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>\n        <target state="translated">By using different Pseudo options, the same Path may be exported multiple times.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">385</context>\n        </context-group>\n      </trans-unit><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 state="translated">Pseudo needs to start with a \'/\' and can\'t contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">399</context>\n        </context-group>\n      </trans-unit><trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target state="translated">-- No access type available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">421</context>\n        </context-group>\n      </trans-unit><trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target state="translated">-- Select the access type --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">424</context>\n        </context-group>\n      </trans-unit><trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target state="translated">-- No squash available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">456</context>\n        </context-group>\n      </trans-unit><trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">\n        <source>--Select what kind of user id squashing is performed --</source>\n        <target state="translated">--Select what kind of user id squashing is performed --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">459</context>\n        </context-group>\n      </trans-unit><trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target state="translated">Transport Protocol</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">475</context>\n        </context-group>\n      </trans-unit><trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">\n        <source>UDP</source>\n        <target state="translated">UDP</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">485</context>\n        </context-group>\n      </trans-unit><trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">\n        <source>TCP</source>\n        <target state="translated">TCP</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>\n          <context context-type="linenumber">493</context>\n        </context-group>\n      </trans-unit><trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">\n        <source>CephFS</source>\n        <target state="translated">CephFS</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-list/nfs-list.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target state="translated">Welcome to Ceph!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <note priority="1" from="description">The welcome message on the login page</note>\n      </trans-unit><trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">\n        <source>Username is required</source>\n        <target state="translated">Username is required</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n      </trans-unit><trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target state="translated">Password is required</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>\n          <context context-type="linenumber">58</context>\n        </context-group>\n      </trans-unit><trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target state="translated">Login</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n      </trans-unit><trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target state="translated">Sorry, the user does not exist in Ceph.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/sso/sso-not-found/sso-not-found.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">\n        <source>Return to <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Login Page<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. You\'ll be logged out from the Identity Provider when you retry logging in.</source>\n        <target state="translated">Return to <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Login Page<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. You\'ll be logged out from the Identity Provider when you retry logging in.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/sso/sso-not-found/sso-not-found.component.html</context>\n          <context context-type="linenumber">4</context>\n        </context-group>\n      </trans-unit><trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target state="translated">Forbidden</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/forbidden/forbidden.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">\n        <source>Sorry, you are not allowed to see what you were looking for.</source>\n        <target state="translated">Sorry, you are not allowed to see what you were looking for.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/forbidden/forbidden.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target state="translated">Sorry, we could not find what you were looking for</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/not-found/not-found.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target state="translated">Remove all</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target state="translated">Recent Notifications</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>\n          <context context-type="linenumber">56</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>\n          <context context-type="linenumber">53</context>\n        </context-group>\n      </trans-unit><trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target state="translated">There are no background tasks.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n      </trans-unit><trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target state="translated">Background Tasks</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>\n          <context context-type="linenumber">83</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n      </trans-unit><trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target state="translated">Help</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n      </trans-unit><trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target state="translated">Documentation</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n      </trans-unit><trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">\n        <source>API</source>\n        <target state="translated">API</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">\n        <source>About</source>\n        <target state="translated">About</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n      </trans-unit><trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target state="translated">Dashboard Settings</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target state="translated">User management</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target state="translated">Logged in user</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">\n        <source>Signed in as\n      <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ username }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/></source>\n        <target state="translated">Signed in as\n      <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ username }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n      </trans-unit><trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target state="translated">Sign out</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>\n          <context context-type="linenumber">27</context>\n        </context-group>\n      </trans-unit><trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target state="translated">Name...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">27</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">52</context>\n        </context-group>\n      </trans-unit><trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target state="translated">The chosen name is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n      </trans-unit><trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target state="translated">Description...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target state="translated">Permissions</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>\n          <context context-type="linenumber">61</context>\n        </context-group>\n      </trans-unit><trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target state="translated">Roles</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-tabs/user-tabs.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">132</context>\n        </context-group>\n      </trans-unit><trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target state="translated">Username</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target state="translated">Password</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">267</context>\n        </context-group>\n      </trans-unit><trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target state="translated">Confirm password</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">70</context>\n        </context-group>\n      </trans-unit><trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target state="translated">Password confirmation doesn\'t match the password.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">91</context>\n        </context-group>\n      </trans-unit><trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target state="translated">Full name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">99</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target state="translated">Email</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">115</context>\n        </context-group>\n      </trans-unit><trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target state="translated">Invalid email.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">126</context>\n        </context-group>\n      </trans-unit><trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target state="translated">You are about to remove "user read / update" permissions from your own user.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">158</context>\n        </context-group>\n      </trans-unit><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 state="translated">If you continue, you will no longer be able to add or remove roles from any user.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">160</context>\n        </context-group>\n      </trans-unit><trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target state="translated">Are you sure you want to continue?</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>\n          <context context-type="linenumber">162</context>\n        </context-group>\n      </trans-unit><trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target state="translated">Performance counters not available</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/performance-counter/table-performance-counter/table-performance-counter.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n      </trans-unit><trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target state="translated">Attributes (OSD map)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target state="translated">Metadata not available</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target state="translated">Metadata</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n      </trans-unit><trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target state="translated">Performance counter</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">\n        <source>Histogram not available: <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/></source>\n        <target state="translated">Histogram not available: <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">\n        <source>Writes</source>\n        <target state="translated">Writes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n      </trans-unit><trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target state="translated">Reads</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">38</context>\n        </context-group>\n      </trans-unit><trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target state="translated">Histogram</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target state="translated">Performance Details</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/hosts/host-details/host-details.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n      </trans-unit><trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target state="translated">Current values</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n      </trans-unit><trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target state="translated">Type</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n      </trans-unit><trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target state="translated">Min</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n      </trans-unit><trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target state="translated">Max</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">52</context>\n        </context-group>\n      </trans-unit><trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target state="translated">Flags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">270</context>\n        </context-group>\n      </trans-unit><trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target state="translated">Source</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">77</context>\n        </context-group>\n      </trans-unit><trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target state="translated">Level</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">82</context>\n        </context-group>\n      </trans-unit><trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target state="translated">Can be updated at runtime (editable)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">87</context>\n        </context-group>\n      </trans-unit><trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target state="translated">Tags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n      </trans-unit><trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target state="translated">Enum values</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">97</context>\n        </context-group>\n      </trans-unit><trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target state="translated">See also</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n      </trans-unit><trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target state="translated">Cluster Status</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target state="translated">Manager Daemons</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">69</context>\n        </context-group>\n      </trans-unit><trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target state="translated">Object Gateways</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">90</context>\n        </context-group>\n      </trans-unit><trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target state="translated">Metadata Servers</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">98</context>\n        </context-group>\n      </trans-unit><trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target state="translated">iSCSI Gateways</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">109</context>\n        </context-group>\n      </trans-unit><trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target state="translated">Client IOPS</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">125</context>\n        </context-group>\n      </trans-unit><trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target state="translated">Client Throughput</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">134</context>\n        </context-group>\n      </trans-unit><trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target state="translated">Client Read/Write</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">143</context>\n        </context-group>\n      </trans-unit><trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target state="translated">Recovery Throughput</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">158</context>\n        </context-group>\n      </trans-unit><trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target state="translated">Scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">167</context>\n        </context-group>\n      </trans-unit><trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target state="translated">Performance</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">119</context>\n        </context-group>\n      </trans-unit><trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target state="translated">Raw Capacity</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">196</context>\n        </context-group>\n      </trans-unit><trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target state="translated">Objects</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">209</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">38</context>\n        </context-group>\n      </trans-unit><trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target state="translated">PGs per OSD</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">221</context>\n        </context-group>\n      </trans-unit><trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target state="translated">PG Status</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">230</context>\n        </context-group>\n      </trans-unit><trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target state="translated">Capacity</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">178</context>\n        </context-group>\n      </trans-unit><trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">\n        <source><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/><x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> See <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Logs<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more details.</source>\n        <target state="translated"><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/><x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> See <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Logs<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more details.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>\n          <context context-type="linenumber">263</context>\n        </context-group>\n      </trans-unit><trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target state="translated">Ranks</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">\n        <source>MDS performance counters</source>\n        <target state="translated">MDS performance counters</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/></source>\n        <target state="translated">Clients: <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n      </trans-unit><trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">\n        <source>Clients (<x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)</source>\n        <target state="translated">Clients (<x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/nfs/nfs-details/nfs-details.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n      </trans-unit><trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target state="translated">Move an image to trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/<x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> to trash,\n          click <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Move Image<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>. Optionally, you can pick an expiration date.</source>\n        <target state="translated">To move <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/<x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> to trash,\n          click <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Move Image<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>. Optionally, you can pick an expiration date.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n      </trans-unit><trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target state="translated">Protection expires at</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target state="translated">NOT PROTECTED</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">\n        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>\n        <target state="translated">Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">29</context>\n        </context-group>\n      </trans-unit><trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">\n        <source>Protection has already expired. Please pick a future date or leave it empty.</source>\n        <target state="translated">Protection has already expired. Please pick a future date or leave it empty.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">32</context>\n        </context-group>\n      </trans-unit><trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target state="translated">Move Image</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>\n          <context context-type="linenumber">40</context>\n        </context-group>\n      </trans-unit><trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">\n        <source>Gateways</source>\n        <target state="translated">Gateways</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi/iscsi.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target state="translated">Overview</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-tabs/iscsi-tabs.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target state="translated">Targets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-tabs/iscsi-tabs.component.html</context>\n          <context context-type="linenumber">7</context>\n        </context-group>\n      </trans-unit><trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target state="translated">Discovery Authentication</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target state="translated">User</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">17</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">245</context>\n        </context-group>\n      </trans-unit><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 state="translated">Usernames must have a length of 8 to 64 characters and\n              can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">29</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n      </trans-unit><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 state="translated">Passwords must have a length of 12 to 16 characters\n              and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n      </trans-unit><trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target state="translated">Mutual User</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">74</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">303</context>\n        </context-group>\n      </trans-unit><trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target state="translated">Mutual Password</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">98</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">327</context>\n        </context-group>\n      </trans-unit><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 state="translated">Passwords must have a length of 12 to 16 characters and\n              can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>\n          <context context-type="linenumber">123</context>\n        </context-group>\n      </trans-unit><trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">\n        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n    on how to configure and enable the iSCSI Targets management functionality.</source>\n        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n    on how to configure and enable the iSCSI Targets management functionality.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>\n          <context context-type="linenumber">6</context>\n        </context-group>\n      </trans-unit><trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target state="translated">Available information:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>\n          <context context-type="linenumber">12</context>\n        </context-group>\n      </trans-unit><trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target state="translated">iSCSI Targets not available</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>\n          <context context-type="linenumber">4</context>\n        </context-group>\n      </trans-unit><trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">\n        <source>Discovery authentication</source>\n        <target state="translated">Discovery authentication</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n      </trans-unit><trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">\n        <source>Only available for RBD images with <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>fast-diff<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> enabled</source>\n        <target state="translated">Only available for RBD images with <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>fast-diff<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> enabled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target state="translated">Pool</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target state="translated">Data Pool</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n      </trans-unit><trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target state="translated">Created</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target state="translated">Size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">163</context>\n        </context-group>\n      </trans-unit><trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target state="translated">Object size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">43</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">229</context>\n        </context-group>\n      </trans-unit><trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target state="translated">Features</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">191</context>\n        </context-group>\n      </trans-unit><trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target state="translated">Provisioned</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n      </trans-unit><trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target state="translated">N/A</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">63</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">78</context>\n        </context-group>\n      </trans-unit><trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target state="translated">Total provisioned</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n      </trans-unit><trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target state="translated">Striping unit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">87</context>\n        </context-group>\n      </trans-unit><trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target state="translated">Striping count</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n      </trans-unit><trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target state="translated">Parent</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">97</context>\n        </context-group>\n      </trans-unit><trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target state="translated">Block name prefix</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">107</context>\n        </context-group>\n      </trans-unit><trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target state="translated">Order</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">112</context>\n        </context-group>\n      </trans-unit><trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target state="translated">Snapshots</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">119</context>\n        </context-group>\n      </trans-unit><trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target state="translated">Image</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">135</context>\n        </context-group>\n      </trans-unit><trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target state="translated">This setting overrides the global value</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">135</context>\n        </context-group>\n      </trans-unit><trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target state="translated">Global</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">137</context>\n        </context-group>\n      </trans-unit><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 state="translated">This is the global value. No value for this option has been set for this image.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>\n          <context context-type="linenumber">137</context>\n        </context-group>\n      </trans-unit><trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from</source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n      </trans-unit><trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target state="translated">\'/\' and \'@\' are not allowed.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">52</context>\n        </context-group>\n      </trans-unit><trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target state="translated">-- No rbd pools available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">85</context>\n        </context-group>\n      </trans-unit><trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target state="translated">-- Select a pool --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">88</context>\n        </context-group>\n      </trans-unit><trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target state="translated">Use a dedicated data pool</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">108</context>\n        </context-group>\n      </trans-unit><trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target state="translated">Data pool</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">119</context>\n        </context-group>\n      </trans-unit><trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">\n        <source>Dedicated pool that stores the object-data of the RBD.</source>\n        <target state="translated">Dedicated pool that stores the object-data of the RBD.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">123</context>\n        </context-group>\n      </trans-unit><trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target state="translated">e.g., 10GiB</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">173</context>\n        </context-group>\n      </trans-unit><trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target state="translated">You have to increase the size.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">181</context>\n        </context-group>\n      </trans-unit><trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target state="translated">Advanced</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">219</context>\n        </context-group>\n      </trans-unit><trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target state="translated">Striping</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">222</context>\n        </context-group>\n      </trans-unit><trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target state="translated">Stripe unit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">246</context>\n        </context-group>\n      </trans-unit><trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target state="translated">-- Select stripe unit --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">257</context>\n        </context-group>\n      </trans-unit><trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">\n        <source>This field is required because stripe count is defined!</source>\n        <target state="translated">This field is required because stripe count is defined!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">263</context>\n        </context-group>\n      </trans-unit><trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target state="translated">Stripe unit is greater than object size.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">266</context>\n        </context-group>\n      </trans-unit><trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target state="translated">Stripe count</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">275</context>\n        </context-group>\n      </trans-unit><trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">\n        <source>This field is required because stripe unit is defined!</source>\n        <target state="translated">This field is required because stripe unit is defined!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">288</context>\n        </context-group>\n      </trans-unit><trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target state="translated">Stripe count must be greater than 0.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>\n          <context context-type="linenumber">291</context>\n        </context-group>\n      </trans-unit><trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot</source>\n        <target state="translated"><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target state="translated">{VAR_SELECT, select, true {Rename} other {Create} }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n      </trans-unit><trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot</source>\n        <target state="translated"><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n      </trans-unit><trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target state="translated">PROTECTED</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>\n          <context context-type="linenumber">17</context>\n        </context-group>\n      </trans-unit><trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target state="translated">UNPROTECTED</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target state="translated">You are about to rollback</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target state="translated">Purge Trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">41</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>\n          <context context-type="linenumber">25</context>\n        </context-group>\n      </trans-unit><trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target state="translated">To purge, select one or All images and click</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target state="translated">Pool:</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n      </trans-unit><trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target state="translated">Pool name...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n      </trans-unit><trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target state="translated">All</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>\n          <context context-type="linenumber">30</context>\n        </context-group>\n      </trans-unit><trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target state="translated">Restore Image</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">40</context>\n        </context-group>\n      </trans-unit><trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target state="translated">To restore</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target state="translated">type the image\'s new name and click</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target state="translated">New Name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n      </trans-unit><trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target state="translated">Expired at</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n      </trans-unit><trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target state="translated">Protected until</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n      </trans-unit><trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">\n        <source>This image is protected until <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.</source>\n        <target state="translated">This image is protected until <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n      </trans-unit><trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target state="translated">Trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>\n          <context context-type="linenumber">8</context>\n        </context-group>\n      </trans-unit><trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target state="translated">iSCSI Topology</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-details/iscsi-target-details.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target state="translated">Settings</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">\n        <source>Changing these parameters from their default values is usually not necessary.</source>\n        <target state="translated">Changing these parameters from their default values is usually not necessary.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>\n          <context context-type="linenumber">10</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target state="translated">Backstore</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>\n          <context context-type="linenumber">16</context>\n        </context-group>\n      </trans-unit><trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target state="translated">Confirm</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>\n          <context context-type="linenumber">50</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>\n          <context context-type="linenumber">53</context>\n        </context-group>\n      </trans-unit><trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target state="translated">Advanced Settings</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target state="translated">Target IQN</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target state="translated">IQN has wrong pattern.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">235</context>\n        </context-group>\n      </trans-unit><trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target state="translated">An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">\n        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>\n        <target state="translated">For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">53</context>\n        </context-group>\n      </trans-unit><trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">\n        <source>More information</source>\n        <target state="translated">More information</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">57</context>\n        </context-group>\n      </trans-unit><trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target state="translated">This target has modified advanced settings.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">62</context>\n        </context-group>\n      </trans-unit><trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target state="translated">Portals</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n      </trans-unit><trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.</source>\n        <target state="translated">At least <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">96</context>\n        </context-group>\n      </trans-unit><trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target state="translated">Add portal</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">106</context>\n        </context-group>\n      </trans-unit><trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">\n        <source>Backstore: <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>.\xa0</source>\n        <target state="translated">Backstore: <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>.\xa0</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">147</context>\n        </context-group>\n      </trans-unit><trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target state="translated">This image has modified settings.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">150</context>\n        </context-group>\n      </trans-unit><trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target state="translated">At least 1 image is required.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">156</context>\n        </context-group>\n      </trans-unit><trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target state="translated">Add image</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">166</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">393</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">529</context>\n        </context-group>\n      </trans-unit><trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target state="translated">ACL authentication</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">184</context>\n        </context-group>\n      </trans-unit><trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target state="translated">Initiators</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">196</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">460</context>\n        </context-group>\n      </trans-unit><trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target state="translated">Initiator</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">203</context>\n        </context-group>\n      </trans-unit><trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target state="translated">Client IQN</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">216</context>\n        </context-group>\n      </trans-unit><trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target state="translated">Initiator IQN needs to be unique.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">227</context>\n        </context-group>\n      </trans-unit><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 state="translated">Usernames must have a length of 8 to 64 characters and\n                        can only contain letters, \'.\', \'@\', \'-\', \'_\' or \':\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">257</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">317</context>\n        </context-group>\n      </trans-unit><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 state="translated">Passwords must have a length of 12 to 16 characters\n                        and can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">292</context>\n        </context-group>\n      </trans-unit><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 state="translated">Passwords must have a length of 12 to 16 characters and\n                        can only contain letters, \'@\', \'-\', \'_\' or \'/\'.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">352</context>\n        </context-group>\n      </trans-unit><trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target state="translated">Initiator belongs to a group. Images will be configure in the group.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">383</context>\n        </context-group>\n      </trans-unit><trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target state="translated">No items added.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">406</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">544</context>\n        </context-group>\n      </trans-unit><trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target state="translated">Add initiator</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">411</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">488</context>\n        </context-group>\n      </trans-unit><trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target state="translated">Groups</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">426</context>\n        </context-group>\n      </trans-unit><trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target state="translated">Group</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">433</context>\n        </context-group>\n      </trans-unit><trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target state="translated">Add group</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>\n          <context context-type="linenumber">549</context>\n        </context-group>\n      </trans-unit><trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ value | titlecase }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ value | titlecase }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>\n          <context context-type="linenumber">15</context>\n        </context-group>\n      </trans-unit><trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target state="translated">RBD Configuration</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><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 state="translated">Remove the local configuration value. The parent configuration value will be inherited and used instead.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n      </trans-unit><trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target state="translated">The mininum value is 0</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n      </trans-unit><trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target state="translated">Issues</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target state="translated">Syncing</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>\n          <context context-type="linenumber">11</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>\n          <context context-type="linenumber">38</context>\n        </context-group>\n      </trans-unit><trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target state="translated">Ready</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>\n          <context context-type="linenumber">20</context>\n        </context-group>\n      </trans-unit><trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target state="translated">Edit pool mirror mode</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>, select a new mode from the list and click\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Update<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</source>\n        <target state="translated">To edit the mirror mode for pool\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>, select a new mode from the list and click\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Update<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target state="translated">Mode</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">22</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">314</context>\n        </context-group>\n      </trans-unit><trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">\n        <source>Peer clusters must be removed prior to disabling mirror.</source>\n        <target state="translated">Peer clusters must be removed prior to disabling mirror.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n      </trans-unit><trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">\n        <source><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer</source>\n        <target state="translated"><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>\n  pool mirror peer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">\n        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>\n        <target state="translated">{VAR_SELECT, select, edit {Edit} other {Add} }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n      </trans-unit><trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" datatype="html">\n        <source><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Submit<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</source>\n        <target state="translated"><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool\n          mirror peer attributes for pool <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> and click \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Submit<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">14</context>\n        </context-group>\n      </trans-unit><trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target state="translated">Cluster Name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n      </trans-unit><trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target state="translated">The cluster name is not valid.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">39</context>\n        </context-group>\n      </trans-unit><trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target state="translated">CephX ID</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">46</context>\n        </context-group>\n      </trans-unit><trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target state="translated">CephX ID...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target state="translated">The CephX ID is not valid.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">61</context>\n        </context-group>\n      </trans-unit><trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target state="translated">Monitor Addresses</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">68</context>\n        </context-group>\n      </trans-unit><trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target state="translated">Comma-delimited addresses...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n      </trans-unit><trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target state="translated">The monitory address is not valid.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n      </trans-unit><trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target state="translated">CephX Key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">86</context>\n        </context-group>\n      </trans-unit><trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target state="translated">Base64-encoded key...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">90</context>\n        </context-group>\n      </trans-unit><trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target state="translated">CephX key must be base64 encoded.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>\n          <context context-type="linenumber">97</context>\n        </context-group>\n      </trans-unit><trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target state="translated">Pools List</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-list/pool-list.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target state="translated">The name can only consist of alphanumeric characters, dashes and underscores.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n      </trans-unit><trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">\n        <source>The chosen erasure code profile name is already in use.</source>\n        <target state="translated">The chosen erasure code profile name is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">40</context>\n        </context-group>\n      </trans-unit><trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target state="translated">Plugin</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">47</context>\n        </context-group>\n      </trans-unit><trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target state="translated">Data chunks (k)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">75</context>\n        </context-group>\n      </trans-unit><trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">\n        <source>Must be equal to or greater than 2.</source>\n        <target state="translated">Must be equal to or greater than 2.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">94</context>\n        </context-group>\n      </trans-unit><trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target state="translated">Coding chunks (m)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n      </trans-unit><trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">\n        <source>Must be equal to or greater than 1.</source>\n        <target state="translated">Must be equal to or greater than 1.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">120</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">142</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">168</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">261</context>\n        </context-group>\n      </trans-unit><trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target state="translated">Durability estimator (c)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">129</context>\n        </context-group>\n      </trans-unit><trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target state="translated">Locality (l)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">151</context>\n        </context-group>\n      </trans-unit><trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target state="translated">Crush failure domain</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">175</context>\n        </context-group>\n      </trans-unit><trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target state="translated">Crush Locality</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">199</context>\n        </context-group>\n      </trans-unit><trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target state="translated">None</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">213</context>\n        </context-group>\n      </trans-unit><trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target state="translated">Technique</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">226</context>\n        </context-group>\n      </trans-unit><trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target state="translated">Packetsize</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">248</context>\n        </context-group>\n      </trans-unit><trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target state="translated">Crush root</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">269</context>\n        </context-group>\n      </trans-unit><trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target state="translated">Crush device class</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">286</context>\n        </context-group>\n      </trans-unit><trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target state="translated">any</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">296</context>\n        </context-group>\n      </trans-unit><trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target state="translated">Directory</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>\n          <context context-type="linenumber">308</context>\n        </context-group>\n      </trans-unit><trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">\n        <source>The chosen Ceph pool name is already in use.</source>\n        <target state="translated">The chosen Ceph pool name is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n      </trans-unit><trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target state="translated">Pool type</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">51</context>\n        </context-group>\n      </trans-unit><trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target state="translated">-- Select a pool type --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n      </trans-unit><trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target state="translated">Placement groups</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">78</context>\n        </context-group>\n      </trans-unit><trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target state="translated">At least one placement group is needed!</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">96</context>\n        </context-group>\n      </trans-unit><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 state="translated">Your cluster can\'t handle this many PGs. Please recalculate the PG amount needed.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">99</context>\n        </context-group>\n      </trans-unit><trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.</source>\n        <target state="translated">You can only increase the number of PGs of an existing pool.\n                Currently your pool has <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n      </trans-unit><trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target state="translated">Calculation help</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">107</context>\n        </context-group>\n      </trans-unit><trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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 state="translated">The current PGs settings were calculated for you, you\n                    should make sure the values suit your needs before submit.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">111</context>\n        </context-group>\n      </trans-unit><trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target state="translated">Crush ruleset</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">122</context>\n        </context-group>\n      </trans-unit><trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target state="translated">-- Select a crush rule --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">130</context>\n        </context-group>\n      </trans-unit><trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target state="translated">Crush rule</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">151</context>\n        </context-group>\n      </trans-unit><trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target state="translated">Crush steps</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">157</context>\n        </context-group>\n      </trans-unit><trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target state="translated">The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">168</context>\n        </context-group>\n      </trans-unit><trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target state="translated">Replicated size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">179</context>\n        </context-group>\n      </trans-unit><trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">\n        <source>Minimum: <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/></source>\n        <target state="translated">Minimum: <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">193</context>\n        </context-group>\n      </trans-unit><trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">\n        <source>Maximum: <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/></source>\n        <target state="translated">Maximum: <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">194</context>\n        </context-group>\n      </trans-unit><trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" datatype="html">\n        <source>The size specified is out of range. A value from\n                    <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.</source>\n        <target state="translated">The size specified is out of range. A value from\n                    <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">199</context>\n        </context-group>\n      </trans-unit><trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target state="translated">Erasure code profile</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">209</context>\n        </context-group>\n      </trans-unit><trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target state="translated">-- No erasure code profile available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">221</context>\n        </context-group>\n      </trans-unit><trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target state="translated">-- Select an erasure code profile --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">224</context>\n        </context-group>\n      </trans-unit><trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target state="translated">EC Overwrites</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">278</context>\n        </context-group>\n      </trans-unit><trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target state="translated">Applications</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">289</context>\n        </context-group>\n      </trans-unit><trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target state="translated">Compression</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">308</context>\n        </context-group>\n      </trans-unit><trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target state="translated">Algorithm</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">333</context>\n        </context-group>\n      </trans-unit><trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target state="translated">-- No erasure compression algorithm available --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">344</context>\n        </context-group>\n      </trans-unit><trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target state="translated">Minimum blob size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">358</context>\n        </context-group>\n      </trans-unit><trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target state="translated">e.g., 128KiB</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">367</context>\n        </context-group>\n      </trans-unit><trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target state="translated">Value should be greater than 0</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">372</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">397</context>\n        </context-group>\n      </trans-unit><trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">\n        <source>Value should be less than the maximum blob size</source>\n        <target state="translated">Value should be less than the maximum blob size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">375</context>\n        </context-group>\n      </trans-unit><trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target state="translated">Maximum blob size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">384</context>\n        </context-group>\n      </trans-unit><trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target state="translated">e.g., 512KiB</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">392</context>\n        </context-group>\n      </trans-unit><trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">\n        <source>Value should be greater than the minimum blob size</source>\n        <target state="translated">Value should be greater than the minimum blob size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">400</context>\n        </context-group>\n      </trans-unit><trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target state="translated">Ratio</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">409</context>\n        </context-group>\n      </trans-unit><trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target state="translated">Compression ratio</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">420</context>\n        </context-group>\n      </trans-unit><trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">\n        <source>Value should be between 0.0 and 1.0</source>\n        <target state="translated">Value should be between 0.0 and 1.0</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">423</context>\n        </context-group>\n      </trans-unit><trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target state="translated">It\'s not possible to create an RBD pool with \'/\' in the name.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">443</context>\n        </context-group>\n      </trans-unit><trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target state="translated">Please change the name or remove \'rbd\' from the applications list.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>\n          <context context-type="linenumber">445</context>\n        </context-group>\n      </trans-unit><trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target state="translated">Cache Tiers Details</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>\n          <context context-type="linenumber">27</context>\n        </context-group>\n      </trans-unit><trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">\n        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n  on how to configure and enable the Object Gateway management functionality.</source>\n        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>\n  on how to configure and enable the Object Gateway management functionality.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-501/rgw-501.component.html</context>\n          <context context-type="linenumber">3</context>\n        </context-group>\n      </trans-unit><trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target state="translated">Daemons List</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target state="translated">Performance Counters</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>\n          <context context-type="linenumber">9</context>\n        </context-group>\n      </trans-unit><trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target state="translated">Loading bucket data...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target state="translated">The bucket data could not be loaded.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target state="translated">Id</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">26</context>\n        </context-group>\n      </trans-unit><trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target state="translated">The value is not valid.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">61</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">453</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">546</context>\n        </context-group>\n      </trans-unit><trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target state="translated">Owner</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">73</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">18</context>\n        </context-group>\n      </trans-unit><trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target state="translated">-- Select a user --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>\n          <context context-type="linenumber">86</context>\n        </context-group>\n      </trans-unit><trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target state="translated">ID</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">13</context>\n        </context-group>\n      </trans-unit><trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target state="translated">Index type</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">23</context>\n        </context-group>\n      </trans-unit><trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target state="translated">Placement rule</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">28</context>\n        </context-group>\n      </trans-unit><trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target state="translated">Marker</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">33</context>\n        </context-group>\n      </trans-unit><trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target state="translated">Maximum marker</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">38</context>\n        </context-group>\n      </trans-unit><trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target state="translated">Version</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">43</context>\n        </context-group>\n      </trans-unit><trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target state="translated">Master version</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">48</context>\n        </context-group>\n      </trans-unit><trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target state="translated">Modification time</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">53</context>\n        </context-group>\n      </trans-unit><trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target state="translated">Zonegroup</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">58</context>\n        </context-group>\n      </trans-unit><trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target state="translated">Bucket quota</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">66</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">97</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">497</context>\n        </context-group>\n      </trans-unit><trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target state="translated">Enabled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">66</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">102</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">414</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">507</context>\n        </context-group>\n      </trans-unit><trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target state="translated">Maximum size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">76</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">107</context>\n        </context-group>\n      </trans-unit><trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target state="translated">Unlimited</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">90</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">74</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">85</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">110</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">121</context>\n        </context-group>\n      </trans-unit><trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target state="translated">Maximum objects</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>\n          <context context-type="linenumber">87</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">82</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">118</context>\n        </context-group>\n      </trans-unit><trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target state="translated">-- Select a username --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">41</context>\n        </context-group>\n      </trans-unit><trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target state="translated">Auto-generate key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">60</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">134</context>\n        </context-group>\n      </trans-unit><trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target state="translated">Access key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">145</context>\n        </context-group>\n      </trans-unit><trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target state="translated">Secret key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>\n          <context context-type="linenumber">106</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>\n          <context context-type="linenumber">34</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">110</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">177</context>\n        </context-group>\n      </trans-unit><trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target state="translated">Email address</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">19</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">72</context>\n        </context-group>\n      </trans-unit><trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target state="translated">Suspended</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">24</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">117</context>\n        </context-group>\n      </trans-unit><trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target state="translated">System</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">29</context>\n        </context-group>\n      </trans-unit><trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target state="translated">{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">31</context>\n        </context-group>\n      </trans-unit><trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target state="translated">Maximum buckets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">35</context>\n        </context-group>\n      </trans-unit><trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target state="translated">Subusers</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">40</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">206</context>\n        </context-group>\n      </trans-unit><trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target state="translated">Capabilities</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">49</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">353</context>\n        </context-group>\n      </trans-unit><trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target state="translated">User quota</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">61</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">404</context>\n        </context-group>\n      </trans-unit><trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target state="translated">Show</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">149</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">290</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">340</context>\n        </context-group>\n      </trans-unit><trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target state="translated">Keys</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>\n          <context context-type="linenumber">134</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">265</context>\n        </context-group>\n      </trans-unit><trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target state="translated">-- Select a type --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">41</context>\n        </context-group>\n      </trans-unit><trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target state="translated">Permission</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">56</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">63</context>\n        </context-group>\n      </trans-unit><trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target state="translated">-- Select a permission --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>\n          <context context-type="linenumber">64</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">71</context>\n        </context-group>\n      </trans-unit><trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target state="translated">Subuser</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">37</context>\n        </context-group>\n      </trans-unit><trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target state="translated">The chosen subuser ID is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">54</context>\n        </context-group>\n      </trans-unit><trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target state="translated">read, write</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">77</context>\n        </context-group>\n      </trans-unit><trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target state="translated">full</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">79</context>\n        </context-group>\n      </trans-unit><trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target state="translated">Swift key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">89</context>\n        </context-group>\n      </trans-unit><trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target state="translated">Auto-generate secret</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>\n          <context context-type="linenumber">99</context>\n        </context-group>\n      </trans-unit><trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target state="translated">Loading user data...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">2</context>\n        </context-group>\n      </trans-unit><trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target state="translated">The user data could not be loaded.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">5</context>\n        </context-group>\n      </trans-unit><trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target state="translated">The chosen user ID is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">42</context>\n        </context-group>\n      </trans-unit><trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target state="translated">This is not a valid email address.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">80</context>\n        </context-group>\n      </trans-unit><trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target state="translated">The chosen email address is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">83</context>\n        </context-group>\n      </trans-unit><trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target state="translated">Max. buckets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">92</context>\n        </context-group>\n      </trans-unit><trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target state="translated">The entered value must be &gt;= 0.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">105</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">490</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">583</context>\n        </context-group>\n      </trans-unit><trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target state="translated">S3 key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">124</context>\n        </context-group>\n      </trans-unit><trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target state="translated">There are no subusers.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">212</context>\n        </context-group>\n      </trans-unit><trans-unit id="8c49635e3672c82d9cf3b416a0d1a03460191699" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">257</context>\n        </context-group>\n      </trans-unit><trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">\n        <source>S3</source>\n        <target state="translated">S3</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">269</context>\n        </context-group>\n      </trans-unit><trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">\n        <source>There are no keys.</source>\n        <target state="translated">There are no keys.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">274</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">324</context>\n        </context-group>\n      </trans-unit><trans-unit id="8b1d0beb2246fd01d9b25400bf9c67cbd532baee" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">311</context>\n        </context-group>\n      </trans-unit><trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target state="translated">Swift</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">319</context>\n        </context-group>\n      </trans-unit><trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target state="translated">There are no capabilities.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">359</context>\n        </context-group>\n      </trans-unit><trans-unit id="af26a69a40b3a5477a7d062756a44c8d91f988a4" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">396</context>\n        </context-group>\n      </trans-unit><trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target state="translated">Unlimited size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">428</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">521</context>\n        </context-group>\n      </trans-unit><trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target state="translated">Max. size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">439</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">532</context>\n        </context-group>\n      </trans-unit><trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target state="translated">Unlimited objects</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">466</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">559</context>\n        </context-group>\n      </trans-unit><trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target state="translated">Max. objects</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">477</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>\n          <context context-type="linenumber">570</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target state="translated">Current</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target state="translated">Updated discovery authentication</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target state="translated">There are no portals available.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target state="translated">There are no images available.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">There are no images available. Please make sure you add an image to the target.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">There are no initiators available. Please make sure you add an initiator to the target.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">\n        <source>target</source>\n        <target state="translated">target</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target state="translated">Add</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-list/nfs-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target state="translated">Target</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">\n        <source># Sessions</source>\n        <target state="translated"># Sessions</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target state="translated">State</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">\n        <source># Targets</source>\n        <target state="translated"># Targets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target state="translated">Read Bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target state="translated">Write Bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target state="translated">Read Ops</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target state="translated">Write Ops</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target state="translated">A/O Since</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target state="translated">Instance</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/daemon-list/daemon-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target state="translated">Hostname</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/daemon-list/daemon-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/hosts/hosts.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target state="translated">Issue</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target state="translated">Progress</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target state="translated">Disabled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target state="translated">Edit Mode</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target state="translated">Add Peer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target state="translated">Edit Peer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target state="translated">Delete Peer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target state="translated">Leader</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target state="translated"># Local</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target state="translated"># Remote</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target state="translated">mirror peer</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target state="translated">Key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">\n        <source>RBD</source>\n        <target state="translated">RBD</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target state="translated">Deep flatten</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target state="translated">Layering</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target state="translated">Exclusive lock</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target state="translated">Object map (requires exclusive-lock)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target state="translated">Journaling (requires exclusive-lock)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">\n        <source>Fast diff (interlocked with object-map)</source>\n        <target state="translated">Fast diff (interlocked with object-map)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target state="translated">Copy</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target state="translated">Flatten</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target state="translated">Move to Trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target state="translated">Create</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target state="translated">Rename</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target state="translated">Protect</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target state="translated">Unprotect</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target state="translated">Clone</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target state="translated">Rollback</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target state="translated">RBD snapshot rollback</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target state="translated">RBD snapshot</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target state="translated">Restore</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target state="translated">Deleted At</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target state="translated">id</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target state="translated">type</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target state="translated">state</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target state="translated">version</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target state="translated">Host</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target state="translated">root</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target state="translated">Rank</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target state="translated">Daemon</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target state="translated">Activity</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target state="translated">Dentries</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target state="translated">Inodes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target state="translated">Usage</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target state="translated">Standby daemons</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target state="translated">The value can be updated at runtime.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target state="translated">Option takes effect only during daemon startup.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target state="translated">Option only affects cluster creation.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target state="translated">Option only affects daemon creation.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">\n        <source>Updated config option <x id="INTERPOLATION" equiv-text="{{name}}"/></source>\n        <target state="translated">Updated config option <x id="INTERPOLATION" equiv-text="{{name}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-form/configuration-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target state="translated">Service</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target state="translated">Current value</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target state="translated">Editable</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "<x id="INTERPOLATION" equiv-text="{{name}}"/>".</source>\n        <target state="translated">Updated options for module "<x id="INTERPOLATION" equiv-text="{{name}}"/>".</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target state="translated">Enable</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target state="translated">Disable</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target state="translated">Reconnecting, please wait ...</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target state="translated">Public Address</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target state="translated">Open Sessions</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target state="translated">No In</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">OSDs that were previously marked out will not be marked back in when they start</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target state="translated">No Out</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">OSDs will not automatically be marked out after the configured interval</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target state="translated">No Up</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target state="translated">OSDs are not allowed to start</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target state="translated">No Down</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">OSD failure reports are being ignored, such that the monitors will not mark OSDs down</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target state="translated">Pause</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target state="translated">Pauses reads and writes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target state="translated">No Scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target state="translated">Scrubbing is disabled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target state="translated">No Deep Scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target state="translated">Deep Scrubbing is disabled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target state="translated">No Backfill</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target state="translated">Backfilling of PGs is suspended</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target state="translated">No Recover</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target state="translated">Recovery of PGs is suspended</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target state="translated">Bitwise Sort</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target state="translated">Use bitwise sort</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target state="translated">Purged Snapdirs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target state="translated">OSDs have converted snapsets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target state="translated">Recovery Deletes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target state="translated">Deletes performed during recovery instead of peering</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target state="translated">PG Log Hard Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target state="translated">Puts a hard limit on pg log length</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target state="translated">Updated OSD Flags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target state="translated">Deep Scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target state="translated">Mark Out</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target state="translated">out</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target state="translated">Mark In</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target state="translated">in</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target state="translated">Mark Down</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target state="translated">down</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target state="translated">Mark Lost</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target state="translated">Mark</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target state="translated">OSD lost</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target state="translated">marked lost</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target state="translated">Purge</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target state="translated">OSD</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target state="translated">purged</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target state="translated">Destroy</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target state="translated">destroy</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target state="translated">destroyed</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="43be3b1a806ff6b7eda5f9530b0595c081d2ad0f" datatype="html">\n        <source>Cluster-wide Flags</source>\n        <target state="translated">Cluster-wide Flags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a1334f5ad3090d59be02f4add0f3e98c8697c504" datatype="html">\n        <source>Cluster-wide Recovery Priority</source>\n        <target state="translated">Cluster-wide Recovery Priority</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">\n        <source>PG scrub</source>\n        <target state="translated">PG scrub</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target state="translated">PGs</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target state="translated">Read bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target state="translated">Writes bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target state="translated">Read ops</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target state="translated">Write ops</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD <x id="INTERPOLATION" equiv-text="{{markAction}}"/></source>\n        <target state="translated">Mark OSD <x id="INTERPOLATION" equiv-text="{{markAction}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">\n        <source>Mark <x id="INTERPOLATION" equiv-text="{{markAction}}"/></source>\n        <target state="translated">Mark <x id="INTERPOLATION" equiv-text="{{markAction}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">\n        <source>PG scrub options</source>\n        <target state="translated">PG scrub options</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">\n        <source>Updated PG scrub options</source>\n        <target state="translated">Updated PG scrub options</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target state="translated">Max Backfills</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target state="translated">Recovery Max Active</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target state="translated">Recovery Max Single Start</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target state="translated">Recovery Sleep</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target state="translated">Custom</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "<x id="INTERPOLATION" equiv-text="{{value}}"/>"</source>\n        <target state="translated">Updated OSD recovery speed priority "<x id="INTERPOLATION" equiv-text="{{value}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: <x id="INTERPOLATION_1" equiv-text="{{id}}"/></source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: <x id="INTERPOLATION_1" equiv-text="{{id}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1edb8e46b0fac57c5feb3d7d3585afc0122d5481" datatype="html">\n        <source>Create silence</source>\n        <target state="translated">Create silence</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target state="translated">Job</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target state="translated">Severity</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target state="translated">Started</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">\n        <source>URL</source>\n        <target state="translated">URL</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">\n        <source>silence</source>\n        <target state="translated">silence</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">\n        <source>Attribute name</source>\n        <target state="translated">Attribute name</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">\n        <source>Regular expression</source>\n        <target state="translated">Regular expression</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Please add your Prometheus host to the dashboard configuration and refresh the page</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">\n        <source>Created by</source>\n        <target state="translated">Created by</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target state="translated">Updated</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">\n        <source>Ends</source>\n        <target state="translated">Ends</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">\n        <source>Silence</source>\n        <target state="translated">Silence</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target state="translated">Used</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target state="translated">Avail.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target state="translated">Clean</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target state="translated">Working</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target state="translated">Warning</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target state="translated">Unknown</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">\n        <source>Healthy</source>\n        <target state="translated">Healthy</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">\n        <source>Misplaced</source>\n        <target state="translated">Misplaced</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">\n        <source>Degraded</source>\n        <target state="translated">Degraded</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">\n        <source>Unfound</source>\n        <target state="translated">Unfound</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">\n        <source>replicas</source>\n        <target state="translated">replicas</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target state="translated">up</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target state="translated">no filesystems</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target state="translated">active</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target state="translated">standby</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target state="translated">n/a</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target state="translated">active daemon</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target state="translated">quorum</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/dashboard/mon-summary.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target state="translated">The NFS Ganesha service is not configured.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-501/nfs-501.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target state="translated">Transport</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target state="translated">CephFS User</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target state="translated">CephFS Filesystem</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target state="translated">(inherited from global config)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target state="translated">inherited from global config</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">\n        <source>-- Select what kind of user id squashing is performed --</source>\n        <target state="translated">-- Select what kind of user id squashing is performed --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target state="translated">There are no daemons available.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form/nfs-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target state="translated">Export</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/nfs/nfs-list/nfs-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">\n        <source>EC Profile</source>\n        <target state="translated">EC Profile</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target state="translated">Cache Mode</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target state="translated">Min Evict Age</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target state="translated">Min Flush Age</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target state="translated">Target Max Bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target state="translated">Target Max Objects</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target state="translated">No applications added</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target state="translated">Applications limit reached</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">A pool can only have up to four applications definitions.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target state="translated">Allowed characters \'_a-zA-Z0-9\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target state="translated">Maximum length is 128 characters</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target state="translated">Filter or add applications</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target state="translated">Add application</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">\n        <source>pool</source>\n        <target state="translated">pool</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target state="translated">erasure code profile</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target state="translated">Replica Size</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target state="translated">Last Change</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target state="translated">Erasure Coded Profile</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target state="translated">Crush Ruleset</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target state="translated">Write bytes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target state="translated">bucket</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</source>\n        <target state="translated">Updated Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">\n        <source>Created Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</source>\n        <target state="translated">Created Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target state="translated">buckets</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">\n        <source>capability</source>\n        <target state="translated">capability</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target state="translated">user</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">\n        <source>subuser</source>\n        <target state="translated">subuser</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">\n        <source>S3 Key</source>\n        <target state="translated">S3 Key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">\n        <source>Updated Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</source>\n        <target state="translated">Updated Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">\n        <source>Created Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</source>\n        <target state="translated">Created Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target state="translated">users</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">\n        <source>Swift Key</source>\n        <target state="translated">Swift Key</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target state="translated">Scope</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target state="translated">Read</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">\n        <source>role</source>\n        <target state="translated">role</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</source>\n        <target state="translated">Created role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">\n        <source>Updated role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</source>\n        <target state="translated">Updated role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target state="translated">System Role</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-list/role-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">\n        <source>Deleted role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</source>\n        <target state="translated">Deleted role \'<x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/role-list/role-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">\n        <source>Created user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>\n        <target state="translated">Created user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target state="translated">Update user</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target state="translated">Continue</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">You were automatically logged out because your roles have been changed.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">\n        <source>Updated user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>\n        <target state="translated">Updated user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">\n        <source>Deleted user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>\n        <target state="translated">Deleted user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">\n        <source>Failed to delete user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>\n        <target state="translated">Failed to delete user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">\n        <source>You are currently logged in as "<x id="INTERPOLATION" equiv-text="{{username}}"/>".</source>\n        <target state="translated">You are currently logged in as "<x id="INTERPOLATION" equiv-text="{{username}}"/>".</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Each object is split in data-chunks parts, each stored on a different OSD.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">The jerasure plugin is the most generic and flexible plugin,\n          it is also the default for Ceph erasure coded pools.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">The isa plugin encapsulates the ISA library. It only runs on Intel processors.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">The shec plugin encapsulates the multiple SHEC library.\n          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">The name of the crush bucket used for the first step of the CRUSH rule.\n      For instance step take default.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">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.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Restrict placement to devices of a specific class\n      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Set the directory name from which the erasure code plugin is loaded.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target state="translated">Allows all operations</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">\n        <source>Allows only operations that do not modify the server</source>\n        <target state="translated">Allows only operations that do not modify the server</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Does not allow read or write operations, but allows any other operation</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Does not allow read, write, or any operation that modifies file        attributes or directory content</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target state="translated">Allows no access at all</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target state="translated">-- Select the priority --</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target state="translated">Low</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target state="translated">High</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target state="translated">Last 5 minutes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target state="translated">Last 15 minutes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target state="translated">Last 30 minutes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target state="translated">Last 1 hour (Default)</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target state="translated">Last 3 hours</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target state="translated">Last 6 hours</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target state="translated">Last 12 hours</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target state="translated">Last 24 hours</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target state="translated">Yesterday</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target state="translated">Today</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target state="translated">Today so far</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target state="translated">Day before yesterday</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target state="translated">Last 2 days</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target state="translated">This day last week</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target state="translated">Previous week</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target state="translated">This week</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target state="translated">This week so far</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target state="translated">Last 7 days</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target state="translated">Previous month</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target state="translated">This month</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target state="translated">This month so far</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target state="translated">Last 30 days</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target state="translated">Last 90 days</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target state="translated">Last 6 months</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target state="translated">Last 1 year</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target state="translated">Previous year</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target state="translated">This year</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target state="translated">This year so far</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target state="translated">Last 2 years</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target state="translated">Last 5 years</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target state="translated">Information</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/info-panel/info-panel.component.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target state="translated">No items selected.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target state="translated">Deselect item to select again</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target state="translated">Selection limit reached</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target state="translated">Filter tags</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target state="translated">Add badge</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target state="translated">There are no items available.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">\n        <source>Remove</source>\n        <target state="translated">Remove</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">\n        <source>Recreate</source>\n        <target state="translated">Recreate</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">\n        <source>Expire</source>\n        <target state="translated">Expire</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target state="translated">Deleted</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">\n        <source>Added</source>\n        <target state="translated">Added</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">\n        <source>Removed</source>\n        <target state="translated">Removed</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">\n        <source>Edited</source>\n        <target state="translated">Edited</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">\n        <source>Canceled</source>\n        <target state="translated">Canceled</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target state="translated">Cloned</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target state="translated">Copied</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">\n        <source>Showed</source>\n        <target state="translated">Showed</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">\n        <source>Moved to Trash</source>\n        <target state="translated">Moved to Trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">\n        <source>Unprotected</source>\n        <target state="translated">Unprotected</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">\n        <source>Recreated</source>\n        <target state="translated">Recreated</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">\n        <source>Expired</source>\n        <target state="translated">Expired</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target state="translated">Yes</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/pipes/boolean-text.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target state="translated">No</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/pipes/boolean-text.pipe.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\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 state="translated">Your matcher seems to match no currently defined rule or active alert.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">\n        <source>no active alerts</source>\n        <target state="translated">no active alerts</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">\n        <source>1 active alert</source>\n        <target state="translated">1 active alert</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts</source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">\n        <source>Matches 1 rule</source>\n        <target state="translated">Matches 1 rule</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">\n        <source>Matches <x id="INTERPOLATION" equiv-text="{{n}}"/> rules</source>\n        <target state="translated">Matches <x id="INTERPOLATION" equiv-text="{{n}}"/> rules</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{rules}}"/> with <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.</source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{rules}}"/> with <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target state="translated">Quality of Service</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target state="translated">BPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target state="translated">The desired limit of IO bytes per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target state="translated">IOPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target state="translated">The desired limit of IO operations per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target state="translated">Read BPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target state="translated">The desired limit of read bytes per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target state="translated">Read IOPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target state="translated">The desired limit of read operations per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target state="translated">Write BPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target state="translated">The desired limit of write bytes per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target state="translated">Write IOPS Limit</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target state="translated">The desired limit of write operations per second.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target state="translated">BPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target state="translated">The desired burst limit of IO bytes.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target state="translated">IOPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target state="translated">The desired burst limit of IO operations.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target state="translated">Read BPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target state="translated">The desired burst limit of read bytes.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target state="translated">Read IOPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target state="translated">The desired burst limit of read operations.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target state="translated">Write BPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target state="translated">The desired burst limit of write bytes.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target state="translated">Write IOPS Burst</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target state="translated">The desired burst limit of write operations.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">\n        <source>Failed to <x id="INTERPOLATION" equiv-text="{{failure}}"/> <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/></source>\n        <target state="translated">Failed to <x id="INTERPOLATION" equiv-text="{{failure}}"/><x id="INTERPOLATION_1" equiv-text="{{metadata}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target state="translated">Executing</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target state="translated">execute</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target state="translated">Executed</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target state="translated">unknown task</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target state="translated">Creating</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target state="translated">create</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target state="translated">Updating</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target state="translated">update</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target state="translated">Deleting</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target state="translated">delete</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">\n        <source>RBD \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</source>\n        <target state="translated">RBD \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">\n        <source>RBD snapshot \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</source>\n        <target state="translated">RBD snapshot \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</source>\n        <target state="translated">mirror mode for pool \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">\n        <source>mirror peer for pool \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</source>\n        <target state="translated">mirror peer for pool \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">\n        <source>all dashboards</source>\n        <target state="translated">all dashboards</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">\n        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.</source>\n        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">\n        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{name}}"/>.</source>\n        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{name}}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">\n        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.</source>\n        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">\n        <source><x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.</source>\n        <target state="translated"><x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target state="translated">Cloning</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target state="translated">clone</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">\n        <source>Snapshot of <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.</source>\n        <target state="translated">Snapshot of <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target state="translated">Copying</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target state="translated">copy</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target state="translated">Flattening</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target state="translated">flatten</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target state="translated">Flattened</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">\n        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.</source>\n        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">\n        <source>Cannot unprotect <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.</source>\n        <target state="translated">Cannot unprotect <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">\n        <source>Cannot delete <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.</source>\n        <target state="translated">Cannot delete <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it\'s protected.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target state="translated">Rolling back</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target state="translated">rollback</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target state="translated">Rolled back</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target state="translated">Moving</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target state="translated">move</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target state="translated">Moved</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">\n        <source>image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash</source>\n        <target state="translated">image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' to trash</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target state="translated">Could not find image.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target state="translated">Restoring</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target state="translated">restore</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target state="translated">Restored</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">\n        <source>image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'<x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'</source>\n        <target state="translated">image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' into \'<x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">\n        <source>Image name \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.</source>\n        <target state="translated">Image name \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\' is already in use.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">\n        <source>image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</source>\n        <target state="translated">image \'<x id="INTERPOLATION" equiv-text="{{id}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target state="translated">Purging</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target state="translated">purge</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target state="translated">Purged</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target state="translated">all pools</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">\n        <source>images from <x id="INTERPOLATION" equiv-text="{{message}}"/></source>\n        <target state="translated">images from <x id="INTERPOLATION" equiv-text="{{message}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">\n        <source>Cannot disable mirroring because it contains a peer.</source>\n        <target state="translated">Cannot disable mirroring because it contains a peer.</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">\n        <source>pool \'<x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'</source>\n        <target state="translated">pool \'<x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">\n        <source>erasure code profile \'<x id="INTERPOLATION" equiv-text="{{name}}"/>\'</source>\n        <target state="translated">erasure code profile \'<x id="INTERPOLATION" equiv-text="{{name}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">\n        <source>target \'<x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'</source>\n        <target state="translated">target \'<x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\'</target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">\n        <source>NFS <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/></source>\n        <target state="translated">NFS <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/></target>\n        <context-group purpose="location">\n          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>\n          <context context-type="linenumber">1</context>\n        </context-group>\n      </trans-unit>\n    </body>\n  </file>\n</xliff>\n'},SZbH:function(t,e,n){"use strict";n.d(e,"d",function(){return u}),n.d(e,"c",function(){return x}),n.d(e,"j",function(){return v}),n.d(e,"g",function(){return c}),n.d(e,"b",function(){return d}),n.d(e,"a",function(){return _}),n.d(e,"i",function(){return T}),n.d(e,"h",function(){return w}),n.d(e,"e",function(){return S}),n.d(e,"f",function(){return k});var a=n("ZYjt"),r=n("K9Ia"),i=n("mrSG"),o=n("Ip0R"),s=n("CcnG"),u=function(){return function(){}}(),c=function(){function t(t,e,n,a,i,o){var s=this;this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=o,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(function(){s._onAction.complete(),s._onTap.complete()})}return t.prototype.triggerTap=function(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()},t.prototype.onTap=function(){return this._onTap.asObservable()},t.prototype.triggerAction=function(t){this._onAction.next(t)},t.prototype.onAction=function(){return this._onAction.asObservable()},t}(),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 s.InjectionToken("ToastConfig"),p=function(){function t(t,e){this.component=t,this.injector=e}return t.prototype.attach=function(t,e){return this._attachedHost=t,t.attach(this,e)},t.prototype.detach=function(){var t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()},Object.defineProperty(t.prototype,"isAttached",{get:function(){return null!=this._attachedHost},enumerable:!0,configurable:!0}),t.prototype.setAttachedHost=function(t){this._attachedHost=t},t}(),f=function(t){function e(e,n,a){var r=t.call(this)||this;return r._hostDomElement=e,r._componentFactoryResolver=n,r._appRef=a,r}return Object(i.__extends)(e,t),e.prototype.attachComponentPortal=function(t,e){var n,a=this,r=this._componentFactoryResolver.resolveComponentFactory(t.component);return n=r.create(t.injector),this._appRef.attachView(n.hostView),this.setDisposeFn(function(){a._appRef.detachView(n.hostView),n.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(n),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(n)),n},e.prototype._getComponentRootNode=function(t){return t.hostView.rootNodes[0]},e}(function(){function t(){}return t.prototype.attach=function(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)},t.prototype.detach=function(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)},t.prototype.setDisposeFn=function(t){this._disposeFn=t},t}()),h=function(){function t(t){this._document=t}return t.prototype.ngOnDestroy=function(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)},t.prototype.getContainerElement=function(){return this._containerElement||this._createContainer(),this._containerElement},t.prototype._createContainer=function(){var t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(o.DOCUMENT))},token:t,providedIn:"root"}),t}(),g=function(){function t(t){this._portalHost=t}return t.prototype.attach=function(t,e){return void 0===e&&(e=!0),this._portalHost.attach(t,e)},t.prototype.detach=function(){return this._portalHost.detach()},t}(),m=function(){function t(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}return t.prototype.create=function(t,e){return this._createOverlayRef(this.getPaneElement(t,e))},t.prototype.getPaneElement=function(t,e){return void 0===t&&(t=""),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]},t.prototype._createPaneElement=function(t,e){var 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},t.prototype._createPortalHost=function(t){return new f(t,this._componentFactoryResolver,this._appRef)},t.prototype._createOverlayRef=function(t){return new g(this._createPortalHost(t))},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(h),Object(s.inject)(s.ComponentFactoryResolver),Object(s.inject)(s.ApplicationRef),Object(s.inject)(o.DOCUMENT))},token:t,providedIn:"root"}),t}(),b=function(){function t(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}return t.prototype.manualClose=function(){this._manualClose.next(),this._manualClose.complete()},t.prototype.manualClosed=function(){return this._manualClose.asObservable()},t.prototype.timeoutReset=function(){return this._resetTimeout.asObservable()},t.prototype.countDuplicate=function(){return this._countDuplicate.asObservable()},t.prototype.close=function(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()},t.prototype.afterClosed=function(){return this._afterClosed.asObservable()},t.prototype.isInactive=function(){return this._activate.isStopped},t.prototype.activate=function(){this._activate.next(),this._activate.complete()},t.prototype.afterActivate=function(){return this._activate.asObservable()},t.prototype.onDuplicate=function(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)},t}(),y=function(){function t(t,e){this._toastPackage=t,this._parentInjector=e}return t.prototype.get=function(t,e,n){return t===c?this._toastPackage:this._parentInjector.get(t,e,n)},t}(),v=function(){function t(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(i.__assign)({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object(i.__assign)({},t.default.iconClasses,t.config.iconClasses))}return t.prototype.show=function(t,e,n,a){return void 0===n&&(n={}),void 0===a&&(a=""),this._preBuildNotification(a,t,e,this.applyConfig(n))},t.prototype.success=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))},t.prototype.error=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))},t.prototype.info=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))},t.prototype.warning=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))},t.prototype.clear=function(t){var e,n;try{for(var a=Object(i.__values)(this.toasts),r=a.next();!r.done;r=a.next()){var o=r.value;if(void 0!==t){if(o.toastId===t)return void o.toastRef.manualClose()}else o.toastRef.manualClose()}}catch(s){e={error:s}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},t.prototype.remove=function(t){var 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]){var n=this.toasts[this.currentlyActive].toastRef;n.isInactive()||(this.currentlyActive=this.currentlyActive+1,n.activate())}return!0},t.prototype.findDuplicate=function(t,e,n){for(var a=0;a<this.toasts.length;a++){var r=this.toasts[a];if(r.message===t)return r.toastRef.onDuplicate(e,n),r}return null},t.prototype.applyConfig=function(t){return void 0===t&&(t={}),Object(i.__assign)({},this.toastrConfig,t)},t.prototype._findToast=function(t){for(var e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null},t.prototype._preBuildNotification=function(t,e,n,a){var r=this;return a.onActivateTick?this.ngZone.run(function(){return r._buildNotification(t,e,n,a)}):this._buildNotification(t,e,n,a)},t.prototype._buildNotification=function(t,e,n,a){var r=this;if(!a.toastComponent)throw new Error("toastComponent required");var i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;var o=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(o=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));var u=this.overlay.create(a.positionClass,this.overlayContainer);this.index=this.index+1;var l=e;e&&a.enableHtml&&(l=this.sanitizer.sanitize(s.SecurityContext.HTML,e));var d=new b(u),f=new c(this.index,a,l,n,t,d),h=new y(f,this._injector),g=new p(a.toastComponent,h),m=u.attach(g,this.toastrConfig.newestOnTop);d.componentInstance=m._component;var v={toastId:this.index,message:e||"",toastRef:d,onShown:d.afterActivate(),onHidden:d.afterClosed(),onTap:f.onTap(),onAction:f.onAction(),portal:m};return o||setTimeout(function(){v.toastRef.activate(),r.currentlyActive=r.currentlyActive+1}),this.toasts.push(v),v},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(d),Object(s.inject)(m),Object(s.inject)(s.INJECTOR),Object(s.inject)(a.DomSanitizer),Object(s.inject)(s.NgZone))},token:t,providedIn:"root"}),t}(),x=function(){function t(t,e,n){var a=this;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(function(){a.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(function(){a.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(function(){a.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(function(t){a.duplicatesCount=t})}return Object.defineProperty(t.prototype,"displayStyle",{get:function(){return"inactive"===this.state.value?"none":"inherit"},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)},t.prototype.activateToast=function(){var t=this;this.state=Object(i.__assign)({},this.state,{value:"active"}),!this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(function(){return t.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(function(){return t.updateProgress()},10))},t.prototype.updateProgress=function(){if(0!==this.width&&100!==this.width&&this.options.timeOut){var 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)}},t.prototype.resetTimeout=function(){var t=this;clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object(i.__assign)({},this.state,{value:"active"}),this.outsideTimeout(function(){return t.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(function(){return t.updateProgress()},10)},t.prototype.remove=function(){var t=this;"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object(i.__assign)({},this.state,{value:"removed"}),this.outsideTimeout(function(){return t.toastrService.remove(t.toastPackage.toastId)},+this.toastPackage.config.easeTime))},t.prototype.tapToast=function(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())},t.prototype.stickAround=function(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)},t.prototype.delayedHideToast=function(){var t=this;this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state.value||(this.outsideTimeout(function(){return t.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(function(){return t.updateProgress()},10))},t.prototype.outsideTimeout=function(t,e){var n=this;this.ngZone?this.ngZone.runOutsideAngular(function(){return n.timeout=setTimeout(function(){return n.runInsideAngular(t)},e)}):this.timeout=setTimeout(function(){return t()},e)},t.prototype.outsideInterval=function(t,e){var n=this;this.ngZone?this.ngZone.runOutsideAngular(function(){return n.intervalId=setInterval(function(){return n.runInsideAngular(t)},e)}):this.intervalId=setInterval(function(){return t()},e)},t.prototype.runInsideAngular=function(t){this.ngZone?this.ngZone.run(function(){return t()}):t()},t}(),_=Object(i.__assign)({},l,{toastComponent:x}),T=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:d,useValue:{default:_,config:e}}]}},t}(),w=function(){function t(){}return t.forRoot=function(t){return void 0===t&&(t={}),{ngModule:T,providers:[{provide:d,useValue:{default:l,config:t}}]}},t}(),S=function(){function t(t,e,n){var a=this;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(function(){a.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(function(){a.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(function(){a.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(function(t){a.duplicatesCount=t})}return Object.defineProperty(t.prototype,"displayStyle",{get:function(){return"inactive"===this.state?"none":"inherit"},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)},t.prototype.activateToast=function(){var t=this;this.state="active",!this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(function(){t.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(function(){return t.updateProgress()},10))),this.options.onActivateTick&&this.appRef.tick()},t.prototype.updateProgress=function(){if(0!==this.width&&100!==this.width&&this.options.timeOut){var 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)}},t.prototype.resetTimeout=function(){var t=this;clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(function(){return t.remove()},this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(function(){return t.updateProgress()},10))},t.prototype.remove=function(){var t=this;"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(function(){return t.toastrService.remove(t.toastPackage.toastId)}))},t.prototype.tapToast=function(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())},t.prototype.stickAround=function(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)},t.prototype.delayedHideToast=function(){var t=this;this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state||(this.timeout=setTimeout(function(){return t.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(function(){return t.updateProgress()},10)))},t}(),O=Object(i.__assign)({},l,{toastComponent:S}),k=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:d,useValue:{default:O,config:e}}]}},t}()},SatO:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}()},SfHT:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.ScrollerComponent=function(){function t(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new i.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this.element=e.nativeElement}return t.prototype.ngOnInit=function(){if(this.scrollbarV||this.scrollbarH){var t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this.parentElement.addEventListener("scroll",this.onScrolled.bind(this))}},t.prototype.ngOnDestroy=function(){(this.scrollbarV||this.scrollbarH)&&this.parentElement.removeEventListener("scroll",this.onScrolled.bind(this))},t.prototype.setOffset=function(t){this.parentElement&&(this.parentElement.scrollTop=t)},t.prototype.onScrolled=function(t){var e=this,n=t.currentTarget;requestAnimationFrame(function(){e.scrollYPos=n.scrollTop,e.scrollXPos=n.scrollLeft,e.updateOffset()})},t.prototype.updateOffset=function(){var 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},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollHeight",void 0),a([i.HostBinding("style.width.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Component({selector:"datatable-scroller",template:"\n    <ng-content></ng-content>\n  ",host:{class:"datatable-scroll"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},Sfow:function(t,e,n){"use strict";var a=n("TC34");e=t.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var o=Math.min(i,r/2-1e-7,a/2-1e-7);t.moveTo(e+o,n),t.lineTo(e+a-o,n),t.arcTo(e+a,n,e+a,n+o,o),t.lineTo(e+a,n+r-o),t.arcTo(e+a,n+r,e+a-o,n+r,o),t.lineTo(e+o,n+r),t.arcTo(e,n+r,e,n+r-o,o),t.lineTo(e,n+o),t.arcTo(e,n,e+o,n,o),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var o,s,u,c,l,d;if(i=i||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(t.save(),t.translate(a,r),t.rotate(i*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,n,0,2*Math.PI),t.closePath();break;case"triangle":l=(s=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,l/3),t.lineTo(s/2,l/3),t.lineTo(0,-2*l/3),t.closePath();break;case"rect":d=1/Math.SQRT2*n,t.rect(-d,-d,2*d,2*d);break;case"rectRounded":var p=n/Math.SQRT2,f=Math.SQRT2*n;this.roundedRect(t,-p,-p,f,f,.425*n);break;case"rectRot":d=1/Math.SQRT2*n,t.moveTo(-d,0),t.lineTo(0,d),t.lineTo(d,0),t.lineTo(0,-d),t.closePath();break;case"cross":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0);break;case"crossRot":u=Math.cos(Math.PI/4)*n,c=Math.sin(Math.PI/4)*n,t.moveTo(-u,-c),t.lineTo(u,c),t.moveTo(-u,c),t.lineTo(u,-c);break;case"star":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0),u=Math.cos(Math.PI/4)*n,c=Math.sin(Math.PI/4)*n,t.moveTo(-u,-c),t.lineTo(u,c),t.moveTo(-u,c),t.lineTo(u,-c);break;case"line":t.moveTo(-n,0),t.lineTo(n,0);break;case"dash":t.moveTo(0,0),t.lineTo(n,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},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){if(n.steppedLine)return"after"===n.steppedLine&&!a||"after"!==n.steppedLine&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);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)}},a.clear=e.clear,a.drawRoundedRectangle=function(t){t.beginPath(),e.roundedRect.apply(e,arguments)}},SgmB:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("F/XL"),r=n("psW0"),i=n("CcnG"),o=n("t/Na"),s=n("pL04"),u=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/role")},t.prototype.delete=function(t){return this.http.delete("api/role/"+t)},t.prototype.get=function(t){return this.http.get("api/role/"+t)},t.prototype.create=function(t){return this.http.post("api/role",t)},t.prototype.update=function(t){return this.http.put("api/role/"+t.name,t)},t.prototype.exists=function(t){return this.list().pipe(Object(r.a)(function(e){var n=e.some(function(e){return e.name===t});return Object(a.a)(n)}))},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.c))},token:t,providedIn:s.a}),t}()},SjWX:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){return function(t,e,n){this.name=t,this.version=e,this.os=n}}();e.BrowserInfo=a;var r=function(){return function(t){this.version=t,this.name="node",this.os=process.platform}}();e.NodeInfo=r;var i=function(){return function(){this.bot=!0,this.name="bot",this.version=null,this.os=null}}();e.BotInfo=i;var o=3,s=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["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/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],u=[["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/],["Search Bot",/(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves\/Teoma)|(ia_archiver)/]];function c(t){var e=""!==t&&s.reduce(function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]},!1);if(!e)return null;var n=e[0],r=e[1];if("searchbot"===n)return new i;var u=r[1]&&r[1].split(/[._]/).slice(0,3);return u?u.length<o&&(u=u.concat(function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(o-u.length))):u=[],new a(n,u.join("."),l(t))}function l(t){for(var e=0,n=u.length;e<n;e++){var a=u[e],r=a[0];if(a[1].test(t))return r}return null}function d(){return"undefined"!=typeof process&&process.version?new r(process.version.slice(1)):null}e.detect=function(){return"undefined"!=typeof navigator?c(navigator.userAgent):d()},e.parseUserAgent=c,e.detectOS=l,e.getNodeVersion=d},T016:function(t,e,n){"use strict";t.exports={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]}},T1DM:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("h9Dq"),r=new(n("CS9Q").a)(a.a)},TC34:function(t,e,n){"use strict";var a,r={noop:function(){},uid:(a=0,function(){return a++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return r.valueOrDefault(r.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 i,o,s;if(r.isArray(t))if(o=t.length,a)for(i=o-1;i>=0;i--)e.call(n,t[i],i);else for(i=0;i<o;i++)e.call(n,t[i],i);else if(r.isObject(t))for(o=(s=Object.keys(t)).length,i=0;i<o;i++)e.call(n,t[s[i]],s[i])},arrayEquals:function(t,e){var n,a,i,o;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(o=e[n],(i=t[n])instanceof Array&&o instanceof Array){if(!r.arrayEquals(i,o))return!1}else if(i!==o)return!1;return!0},clone:function(t){if(r.isArray(t))return t.map(r.clone);if(r.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,i=0;i<a;++i)e[n[i]]=r.clone(t[n[i]]);return e}return t},_merger:function(t,e,n,a){var i=e[t],o=n[t];r.isObject(i)&&r.isObject(o)?r.merge(i,o,a):e[t]=r.clone(o)},_mergerIf:function(t,e,n){var a=e[t],i=n[t];r.isObject(a)&&r.isObject(i)?r.mergeIf(a,i):e.hasOwnProperty(t)||(e[t]=r.clone(i))},merge:function(t,e,n){var a,i,o,s,u,c=r.isArray(e)?e:[e],l=c.length;if(!r.isObject(t))return t;for(a=(n=n||{}).merger||r._merger,i=0;i<l;++i)if(r.isObject(e=c[i]))for(u=0,s=(o=Object.keys(e)).length;u<s;++u)a(o[u],t,e,n);return t},mergeIf:function(t,e){return r.merge(t,e,{merger:r._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)r.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=r.inherits,t&&r.extend(n.prototype,t),n.__super__=e.prototype,n}};t.exports=r,r.callCallback=r.callback,r.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},r.getValueOrDefault=r.valueOrDefault,r.getValueAtIndexOrDefault=r.valueAtIndexOrDefault},TCh0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=e.Keys=function(t){return t[t.Escape=27]="Escape",t}(e.Keys||{}),r=e.MouseButtons=function(t){return t[t.Left=0]="Left",t[t.Right=2]="Right",t}(e.MouseButtons||{});e.isLeftButtonClicked=function(t){return t.button===r.Left},e.isRightButtonClicked=function(t){return t.button===r.Right},e.isEscapePressed=function(t){return t.keyCode===a.Escape}},TYzs:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var 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")},t}()},TZo1:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("9Kw/"),n("Jm/i"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[".info-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.info-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","info-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-info-circle alert-info"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","info-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","info-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,1,0,"info")},function(t,e){t(e,8,0,e.component.title)})}},Tff5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("VE89"),r=n("buEt"),i=n("CcnG"),o=(n("urB8"),n("kQXf"));e.TreeService=function(){function t(t){this.nodeDraggableService=t,this.nodeMoved$=new r.Subject,this.nodeRemoved$=new r.Subject,this.nodeRenamed$=new r.Subject,this.nodeCreated$=new r.Subject,this.nodeSelected$=new r.Subject,this.nodeUnselected$=new r.Subject,this.nodeExpanded$=new r.Subject,this.nodeCollapsed$=new r.Subject,this.menuItemSelected$=new r.Subject,this.loadNextLevel$=new r.Subject,this.nodeChecked$=new r.Subject,this.nodeUnchecked$=new r.Subject,this.nodeIndetermined$=new r.Subject,this.controllers=new Map,this.nodeRemoved$.subscribe(function(t){return t.node.removeItselfFromParent()})}return t.prototype.unselectStream=function(t){return this.nodeSelected$.filter(function(e){return t!==e.node})},t.prototype.fireNodeRemoved=function(t){this.nodeRemoved$.next(new a.NodeRemovedEvent(t,t.positionInParent))},t.prototype.fireNodeCreated=function(t){this.nodeCreated$.next(new a.NodeCreatedEvent(t))},t.prototype.fireNodeSelected=function(t){this.nodeSelected$.next(new a.NodeSelectedEvent(t))},t.prototype.fireNodeUnselected=function(t){this.nodeUnselected$.next(new a.NodeUnselectedEvent(t))},t.prototype.fireNodeRenamed=function(t,e){this.nodeRenamed$.next(new a.NodeRenamedEvent(e,t,e.value))},t.prototype.fireNodeMoved=function(t,e){this.nodeMoved$.next(new a.NodeMovedEvent(t,e))},t.prototype.fireMenuItemSelected=function(t,e){this.menuItemSelected$.next(new a.MenuItemSelectedEvent(t,e))},t.prototype.fireNodeSwitchFoldingType=function(t){t.isNodeExpanded()?(this.fireNodeExpanded(t),this.shouldFireLoadNextLevel(t)&&this.fireLoadNextLevel(t)):t.isNodeCollapsed()&&this.fireNodeCollapsed(t)},t.prototype.fireNodeExpanded=function(t){this.nodeExpanded$.next(new a.NodeExpandedEvent(t))},t.prototype.fireNodeCollapsed=function(t){this.nodeCollapsed$.next(new a.NodeCollapsedEvent(t))},t.prototype.fireLoadNextLevel=function(t){this.loadNextLevel$.next(new a.LoadNextLevelEvent(t))},t.prototype.fireNodeChecked=function(t){this.nodeChecked$.next(new a.NodeCheckedEvent(t))},t.prototype.fireNodeUnchecked=function(t){this.nodeUnchecked$.next(new a.NodeUncheckedEvent(t))},t.prototype.draggedStream=function(t,e){return this.nodeDraggableService.draggableNodeEvents$.filter(function(t){return t.target===e}).filter(function(e){return!e.captured.tree.hasChild(t)})},t.prototype.setController=function(t,e){this.controllers.set(t,e)},t.prototype.deleteController=function(t){this.controllers.has(t)&&this.controllers.delete(t)},t.prototype.getController=function(t){return this.controllers.has(t)?this.controllers.get(t):null},t.prototype.hasController=function(t){return this.controllers.has(t)},t.prototype.shouldFireLoadNextLevel=function(t){var e=t.node.emitLoadNextLevel&&!t.node.loadChildren&&!t.childrenAreBeingLoaded()&&o.isEmpty(t.children);return e&&t.loadingChildrenRequested(),e},t.prototype.fireNodeIndetermined=function(t){this.nodeIndetermined$.next(new a.NodeIndeterminedEvent(t))},t.decorators=[{type:i.Injectable}],t}()},Txjg:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("Zn8D");function r(){return Object(a.a)(1)}},UDhR:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},UReH:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DatatableRowDetailTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-row-detail-template]"})],function(t){this.template=t})}()},USCx:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","M\xe9itheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deaireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean\xe1","Feab","M\xe1rt","Aibr","Beal","M\xe9it","I\xfail","L\xfana","Me\xe1n","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Satharn"],weekdaysShort:["Dom","Lua","M\xe1i","C\xe9a","D\xe9a","hAo","Sat"],weekdaysMin:["Do","Lu","M\xe1","Ce","D\xe9","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\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xed",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}})}()},UpQW:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],a=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];n("wd/R").defineLocale("ur",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}()},UqmZ:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=a.global;a._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),t.exports=r.extend({draw:function(){var t,e,n,a,r=this._view,s=this._chart.ctx,u=r.spanGaps,c=this._children.slice(),l=o.elements.line,d=-1;for(this._loop&&c.length&&c.push(c[0]),s.save(),s.lineCap=r.borderCapStyle||l.borderCapStyle,s.setLineDash&&s.setLineDash(r.borderDash||l.borderDash),s.lineDashOffset=r.borderDashOffset||l.borderDashOffset,s.lineJoin=r.borderJoinStyle||l.borderJoinStyle,s.lineWidth=r.borderWidth||l.borderWidth,s.strokeStyle=r.borderColor||o.defaultColor,s.beginPath(),d=-1,t=0;t<c.length;++t)e=c[t],n=i.previousItem(c,t),a=e._view,0===t?a.skip||(s.moveTo(a.x,a.y),d=t):(n=-1===d?n:c[d],a.skip||(d!==t-1&&!u||-1===d?s.moveTo(a.x,a.y):i.canvas.lineTo(s,n._view,e._view),d=t));s.stroke(),s.restore()}})},Ur1D:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"V/fk":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},V2x9:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_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}})}()},V3my:function(t,e,n){"use strict";var a,r=n("gIcY"),i=n("LvDl"),o=(n("DSvg"),n("SgmB"),n("Mxhz"),n("OLbh")),s=n("DNAf"),u=(n("sne2"),n("mtw6")),c=n("QFaf"),l=n("1Ni5");n("aexS"),n("9nlD"),function(t){t.editing="editing"}(a||(a={}));var d=function(){return function(){}}();n.d(e,"a",function(){return p});var p=function(){function t(t,e,n,r,i,o,u,c,l,d){this.authService=t,this.authStorageService=e,this.route=n,this.router=r,this.modalService=i,this.roleService=o,this.userService=u,this.notificationService=c,this.i18n=l,this.actionLabels=d,this.userFormMode=a,this.messages=new s.a({empty:"There are no roles."},this.i18n),this.resource=this.i18n("user"),this.createForm(),this.messages=new s.a({empty:"There are no roles."},this.i18n)}return t.prototype.createForm=function(){this.userForm=new c.a({username:new r.i("",{validators:[r.A.required]}),name:new r.i(""),password:new r.i("",{validators:[]}),confirmpassword:new r.i("",{updateOn:"blur",validators:[]}),email:new r.i("",{validators:[r.A.email]}),roles:new r.i([])},{validators:[l.a.match("password","confirmpassword")]})},t.prototype.ngOnInit=function(){var t=this;this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.roleService.list().subscribe(function(e){t.allRoles=i.map(e,function(t){return t.enabled=!0,t})}),this.mode===this.userFormMode.editing&&this.initEdit()},t.prototype.initEdit=function(){var t=this;this.disableForEdit(),this.route.params.subscribe(function(e){t.userService.get(e.username).subscribe(function(e){t.response=i.cloneDeep(e),t.setResponse(e)})})},t.prototype.disableForEdit=function(){this.userForm.get("username").disable()},t.prototype.setResponse=function(t){var e=this;["username","name","email","roles"].forEach(function(n){return e.userForm.get(n).setValue(t[n])})},t.prototype.getRequest=function(){var t=this,e=new d;return["username","password","name","email","roles"].forEach(function(n){return e[n]=t.userForm.get(n).value}),e},t.prototype.createAction=function(){var t=this,e=this.getRequest();this.userService.create(e).subscribe(function(){t.notificationService.show(u.a.success,t.i18n('Created user "{{username}}"',{username:e.username})),t.router.navigate(["/user-management/users"])},function(){t.userForm.setErrors({cdSubmitButton:!0})})},t.prototype.editAction=function(){var t=this;if(this.isUserRemovingNeededRolePermissions()){var e={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:function(){t.modalRef.hide(),t.doEditAction()},onCancel:function(){t.userForm.setErrors({cdSubmitButton:!0}),t.userForm.get("roles").reset(t.userForm.get("roles").value)}};this.modalRef=this.modalService.show(o.a,{initialState:e})}else this.doEditAction()},t.prototype.isCurrentUser=function(){return this.authStorageService.getUsername()===this.userForm.getValue("username")},t.prototype.isUserChangingRoles=function(){return this.isCurrentUser()&&this.response&&!i.isEqual(this.response.roles,this.userForm.getValue("roles"))},t.prototype.isUserRemovingNeededRolePermissions=function(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))},t.prototype.hasUserReadUpdatePermissions=function(t){void 0===t&&(t=[]);for(var e=function(e){if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){var n=e.scopes_permissions.user;return{value:["read","update"].every(function(t){return-1!==n.indexOf(t)})}}},n=0,a=this.allRoles;n<a.length;n++){var r=e(a[n]);if("object"==typeof r)return r.value}return!1},t.prototype.doEditAction=function(){var t=this,e=this.getRequest();this.userService.update(e).subscribe(function(){t.isUserChangingRoles()?t.authService.logout(function(){t.notificationService.show(u.a.info,t.i18n("You were automatically logged out because your roles have been changed."))}):(t.notificationService.show(u.a.success,t.i18n('Updated user "{{username}}"',{username:e.username})),t.router.navigate(["/user-management/users"]))},function(){t.userForm.setErrors({cdSubmitButton:!0})})},t.prototype.submit=function(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()},t}()},VE89:function(t,e,n){var a=n("mrSG").__extends;Object.defineProperty(e,"__esModule",{value:!0});var r=function(){return function(t){this.node=t}}();e.NodeEvent=r,e.NodeSelectedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeUnselectedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r);var i=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r);e.NodeDestructiveEvent=i,e.NodeMovedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.previousParent=n,a}return a(e,t),e}(i),e.NodeRemovedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.lastIndex=n,a}return a(e,t),e}(i),e.NodeCreatedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(i),e.NodeRenamedEvent=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.oldValue=n,r.newValue=a,r}return a(e,t),e}(i),e.NodeExpandedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeCollapsedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.MenuItemSelectedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.selectedItem=n,a}return a(e,t),e}(r),e.LoadNextLevelEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeCheckedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeUncheckedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeIndeterminedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r)},VHo1:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}(n("rLYq"))},VKeD:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}e.getSymbolIterator=a,e.iterator=a(),e.$$iterator=e.iterator},VNr4:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("6blF"),i=n("isby"),o=n("G5J1"),s=n("zotm"),u=n("MGBS"),c=n("67Y/");function l(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return"function"==typeof e[e.length-1]&&(t=e.pop()),1===e.length&&Object(i.a)(e[0])&&(e=e[0]),0===e.length?o.a:t?l(e).pipe(Object(c.a)(function(e){return t.apply(void 0,e)})):new r.a(function(t){return new d(t,e)})}var d=function(t){function e(e,n){var a=t.call(this,e)||this;a.sources=n,a.completed=0,a.haveValues=0;var r=n.length;a.values=new Array(r);for(var i=0;i<r;i++){var o=n[i],u=Object(s.a)(a,o,null,i);u&&a.add(u)}return a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values[n]=e,r._hasValue||(r._hasValue=!0,this.haveValues++)},e.prototype.notifyComplete=function(t){var e=this.destination,n=this.haveValues,a=this.values,r=a.length;t._hasValue?(this.completed++,this.completed===r&&(n===r&&e.next(a),e.complete())):e.complete()},e}(u.a)},VTlA:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("mSOc"),n("ufoC");var a=function(){function t(t,e){this.taskMessageService=t,this.summaryService=e}return t.prototype.init=function(t,e,n,a,r,i,o){var s=this;this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=o||{},this.summaryDataSubscription=this.summaryService.subscribe(function(t){t&&s.getUpdate().subscribe(function(e){s.updateData(e,t.executing_tasks.filter(s.taskFilter))},s.onFetchError)},this.onFetchError)},t.prototype.updateData=function(t,e){var n=this,a=this.preProcessing?this.preProcessing(t):t;this.addMissing(a,e),a.forEach(function(t){var a=e.filter(function(e){return n.itemFilter(t,e)});t.cdExecuting=n.getTaskAction(a)}),this.setList(a)},t.prototype.addMissing=function(t,e){var n=this,a=this.builders.default||{};e.forEach(function(e){var r=t.find(function(t){return n.itemFilter(t,e)}),i=n.builders[e.name];r||!i&&!a||t.push(i?i(e.metadata):a(e))})},t.prototype.getTaskAction=function(t){var e=this;if(0!==t.length)return t.map(function(t){var n=t.progress?" "+t.progress+"%":"";return e.taskMessageService.getRunningText(t)+"..."+n}).join(", ")},t.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},t}()},VUo1:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG");n("ZYjt"),e.SafeHtmlPipe=function(){function t(t){this.sanitizer=t}return t.prototype.transform=function(t){return this.sanitizer.bypassSecurityTrustHtml(t)},t.decorators=[{type:a.Pipe,args:[{name:"safeHtml"}]}],t}()},VXsX:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("LvDl"),r=n("mSOc"),i=n("CcnG"),o=function(){return function(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}(),s=function(){function t(t){var e=this;this.subscriptions=[],t.subscribe(function(t){if(t)for(var n=t.executing_tasks,a=t.finished_tasks,r=[],i=0,o=e.subscriptions;i<o.length;i++){var s=o[i],u=e._getTask(s,a),c=e._getTask(s,n);null!==u&&null===c&&s.onTaskFinished(u),null!==c&&r.push(s),e.subscriptions=r}})}return t.prototype.subscribe=function(t,e,n){this.subscriptions.push(new o(t,e,n))},t.prototype._getTask=function(t,e){for(var n=0,r=e;n<r.length;n++){var i=r[n];if(i.name===t.name&&a.isEqual(i.metadata,t.metadata))return i}return null},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(r.a))},token:t,providedIn:"root"}),t}()},"VYA+":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CVuo"),r=n("HV4d"),i=n("h+PQ");function o(t){return null==t}e.setColumnDefaults=function(t){if(t)for(var e=!1,n=0,s=t;n<s.length;n++){var u=s[n];u.$$id||(u.$$id=r.id()),o(u.prop)&&u.name&&(u.prop=a.camelCase(u.name)),u.$$valueGetter||(u.$$valueGetter=i.getterForProp(u.prop)),!o(u.prop)&&o(u.name)&&(u.name=a.deCamelCase(String(u.prop))),o(u.prop)&&o(u.name)&&(u.name=""),u.hasOwnProperty("resizeable")||(u.resizeable=!0),u.hasOwnProperty("sortable")||(u.sortable=!0),u.hasOwnProperty("draggable")||(u.draggable=!0),u.hasOwnProperty("canAutoResize")||(u.canAutoResize=!0),u.hasOwnProperty("width")||(u.width=150),u.hasOwnProperty("isTreeColumn")&&u.isTreeColumn&&!e?e=!0:u.isTreeColumn=!1}},e.isNullOrUndefined=o,e.translateTemplates=function(t){for(var e=[],n=0,a=t;n<a.length;n++){for(var r=a[n],i={},o=0,s=Object.getOwnPropertyNames(r);o<s.length;o++){var u=s[o];i[u]=r[u]}r.headerTemplate&&(i.headerTemplate=r.headerTemplate),r.cellTemplate&&(i.cellTemplate=r.cellTemplate),r.summaryFunc&&(i.summaryFunc=r.summaryFunc),r.summaryTemplate&&(i.summaryTemplate=r.summaryTemplate),e.push(i)}return e}},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}})}(n("wd/R"))},VgNv:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha");a._set("global",{plugins:{}}),t.exports={_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,o,s,u=this.descriptors(t),c=u.length;for(a=0;a<c;++a)if("function"==typeof(s=(i=(r=u[a]).plugin)[e])&&((o=[t].concat(n||[])).push(r.options),!1===s.apply(i,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],i=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=r.clone(a.global.plugins[e])),n.push(t),i.push({plugin:t,options:o||{}}))}}),e.descriptors=i,e.id=this._cacheId,i},_invalidate:function(t){delete t.$plugins}}},Vhfg:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("67Y/"),r=n("ej+x"),i=n("CcnG"),o=n("ZYCi"),s=function(){function t(t,e){this.router=t,this.featureToggles=e}return t.prototype.canActivate=function(t){var e=this;return this.featureToggles.get().pipe(Object(a.a)(function(n){return!1!==n[t.routeConfig.path]||(e.router.navigate(["404"]),!1)}))},t.prototype.canActivateChild=function(t){return this.canActivate(t.parent)},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.l),i.inject(r.a))},token:t,providedIn:"root"}),t}()},"VnD/":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e))}}var o=function(){function t(t,e){this.predicate=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.thisArg=a,r.count=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)},e}(r.a)},W0Ae:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("mrSG"),r=n("isby"),i=n("IUTb"),o=n("MGBS"),s=n("zotm");function u(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(1===t.length){if(!Object(r.a)(t[0]))return t[0];t=t[0]}return Object(i.a)(t,void 0).lift(new c)}var c=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new l(t))},t}(),l=function(t){function e(e){var n=t.call(this,e)||this;return n.hasFirst=!1,n.observables=[],n.subscriptions=[],n}return a.__extends(e,t),e.prototype._next=function(t){this.observables.push(t)},e.prototype._complete=function(){var t=this.observables,e=t.length;if(0===e)this.destination.complete();else{for(var n=0;n<e&&!this.hasFirst;n++){var a=t[n],r=Object(s.a)(this,a,a,n);this.subscriptions&&this.subscriptions.push(r),this.add(r)}this.observables=null}},e.prototype.notifyNext=function(t,e,n,a,r){if(!this.hasFirst){this.hasFirst=!0;for(var i=0;i<this.subscriptions.length;i++)if(i!==n){var o=this.subscriptions[i];o.unsubscribe(),this.remove(o)}this.subscriptions=null}this.destination.next(e)},e}(o.a)},WOoz:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.asc="asc",t.desc="desc"}(e.SortDirection||(e.SortDirection={}))},WYrj:function(t,e,n){!function(t){"use strict";var e=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],a=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];n("wd/R").defineLocale("dv",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".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:/\u0789\u0786|\u0789\u078a/,isPM:function(t){return"\u0789\u078a"===t},meridiem:function(t,e,n){return t<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:7,doy:12}})}()},WiuZ:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("eajB"),o=n("lqqz"),s=n("gIcY"),u=n("OZfm");n("wnGv"),n("Jm/i"),n.d(e,"a",function(){return c}),n.d(e,"b",function(){return T});var c=a["\u0275crt"]({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 l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block text-center"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])})}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,l)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["\u0275nov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))},null)}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-check"]],null,null,null,null,null))],null,null)}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"small",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,[" ","\xa0 "]))],null,function(t,e){t(e,3,0,e.parent.context.$implicit.description)})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"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["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"help-block disabled":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[" \xa0 "])),(t()(),a["\u0275eld"](7,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](10,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,1,0,"select-menu-item",a),t(e,5,0,e.context.$implicit.selected),t(e,10,0,e.context.$implicit.description)},function(t,e){t(e,8,0,e.context.$implicit.name)})}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","select-menu-item"]],null,[[null,"click"]],function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.addCustomOption(r.filter.value)&&a),a},null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-tag"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" \xa0 "])),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["\u0275ted"](5,null,[" "," '","' "]))],null,function(t,e){var n=e.component;t(e,5,0,n.messages.add,n.filter.value)})}function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,2,"span",[["class","help-block text-center text-warning"]],[[1,"aria-describedby",0]],null,null,null,null)),a["\u0275did"](1,212992,null,0,i.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,o.a,i.a],{tooltip:[0,"tooltip"]},null),(t()(),a["\u0275ted"](2,null,[" "," "])),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,1).ariaDescribedby),t(e,2,0,n.messages.selectionLimit.text)})}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","has-warning"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](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 y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"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["\u0275nov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,2).onReset()&&r),r},null,null)),a["\u0275did"](1,16384,null,0,s.D,[],null,null),a["\u0275did"](2,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,s.d,null,[s.l]),a["\u0275did"](4,16384,null,0,s.s,[[4,s.d]],null,null),(t()(),a["\u0275eld"](5,0,null,null,10,"div",[],null,null,null,null,null)),a["\u0275did"](6,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pod"](7,{"has-error":0}),(t()(),a["\u0275eld"](8,0,null,null,5,"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]],[[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["\u0275nov"](t,9)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r},null,null)),a["\u0275did"](9,16384,null,0,s.e,[a.Renderer2,a.ElementRef,[2,s.b]],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.e]),a["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,s.q,null,[s.j]),a["\u0275did"](13,16384,null,0,s.r,[[4,s.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](17,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0,n.form);var r=t(e,7,0,n.form.showError("filter",a["\u0275nov"](e,2)));t(e,6,0,r),t(e,11,0,"filter"),t(e,15,0,n.Object.keys(n.messages.customValidations)),t(e,17,0,n.filteredOptions),t(e,19,0,n.isCreatable()),t(e,21,0,n.data.length===n.selectionLimit)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,4).ngClassUntouched,a["\u0275nov"](e,4).ngClassTouched,a["\u0275nov"](e,4).ngClassPristine,a["\u0275nov"](e,4).ngClassDirty,a["\u0275nov"](e,4).ngClassValid,a["\u0275nov"](e,4).ngClassInvalid,a["\u0275nov"](e,4).ngClassPending),t(e,8,0,n.messages.filter,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,3,"a",[["class","select-menu-edit"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275did"](2,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,u.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,"select-menu-edit",e.component.elemClass),t(e,2,0,a["\u0275nov"](e.parent,0),"bottom","true","body")},null)}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","\n"]))],null,function(t,e){t(e,1,0,e.component.messages.empty)})}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","\n"]))],null,function(t,e){t(e,1,0,e.component.messages.noOptions)})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,[["popTemplate",2]],null,0,null,y)),(t()(),a["\u0275and"](16777216,null,null,1,null,v)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](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.options.length>0),t(e,4,0,0===n.data.length&&n.options.length>0),t(e,6,0,0===n.options.length)},null)}},WxRl:function(t,e,n){!function(t){"use strict";var e="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return r+(a||e)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" \xf3ra":" \xf3r\xe1ja");case"hh":return r+(a||e?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" h\xf3nap":" h\xf3napja");case"MM":return r+(a||e?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(a||e?" \xe9v":" \xe9ve");case"yy":return r+(a||e?" \xe9v":" \xe9ve")}return""}function a(t){return(t?"":"[m\xfalt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_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\xfalva",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"))},WyAD:function(t,e,n){var a=n("yPMN")();a.helpers=n("RDha"),n("nDWh")(a),a.Animation=n("A5uo"),a.animationService=n("dpnK"),a.defaults=n("CDJp"),a.Element=n("K2E3"),a.elements=n("vvH+"),a.Interaction=n("mlr9"),a.layouts=n("fELs"),a.platform=n("iM7B"),a.plugins=n("VgNv"),a.Scale=n("cdu6"),a.scaleService=n("tjFV"),a.Ticks=n("g8vO"),a.Tooltip=n("x8uC"),n("6rqY")(a),n("KAQS")(a),n("paOr")(a),n("8TtQ")(a),n("YSsK")(a),n("Y4Rb")(a),n("8//i")(a),n("RCHg")(a),n("ZANz")(a),n("bidN")(a),n("XQh+")(a),n("G0Q6")(a),n("5ZZ7")(a),n("aB2c")(a),n("35yf")(a),n("ODdm")(a),n("Qexa")(a),n("S7Ns")(a),n("7O6V")(a),n("qzaf")(a),n("iYGd")(a),n("S3/U")(a);var r=n("jXIB");for(var i in r)r.hasOwnProperty(i)&&a.plugins.register(r[i]);a.platform.initialize(),t.exports=a,"undefined"!=typeof window&&(window.Chart=a),a.Legend=r.legend._element,a.Title=r.title._element,a.pluginService=a.plugins,a.PluginBase=a.Element.extend({}),a.canvasHelpers=a.helpers.canvas,a.layoutService=a.layouts},X709:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".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\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra 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\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})}()},X8CM:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha");a._set("global",{elements:{arc:{backgroundColor:a.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),t.exports=r.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=i.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,o=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&&o>=n.innerRadius&&o<=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=this._chart.ctx,e=this._view,n=e.startAngle,a=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,a),t.arc(e.x,e.y,e.innerRadius,a,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},XDpg:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u5468";default:return t}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}})}()},XFyV:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},XLvN:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".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:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===e?t<4?t:t+12:"\u0c09\u0c26\u0c2f\u0c02"===e?t:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===e?t>=10?t:t+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":t<10?"\u0c09\u0c26\u0c2f\u0c02":t<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":t<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}})}()},"XQh+":function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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),o=e.datasets[0],s=r.data[a],u=s&&s.custom||{},c=i.valueAtIndexOrDefault,l=t.options.elements.arc;return{text:n,fillStyle:u.backgroundColor?u.backgroundColor:c(o.backgroundColor,a,l.backgroundColor),strokeStyle:u.borderColor?u.borderColor:c(o.borderColor,a,l.borderColor),lineWidth:u.borderWidth?u.borderWidth:c(o.borderWidth,a,l.borderWidth),hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,a,r,i=e.index,o=this.chart;for(n=0,a=(o.data.datasets||[]).length;n<a;++n)(r=o.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);o.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 i.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}}),a._set("pie",i.clone(a.doughnut)),a._set("pie",{cutoutPercentage:0}),t.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:r.Arc,linkScales:i.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=this,n=e.chart,a=n.chartArea,r=n.options,o=r.elements.arc,s=a.right-a.left-o.borderWidth,u=a.bottom-a.top-o.borderWidth,c=Math.min(s,u),l={x:0,y:0},d=e.getMeta(),p=r.cutoutPercentage,f=r.circumference;if(f<2*Math.PI){var h=r.rotation%(2*Math.PI),g=(h+=2*Math.PI*(h>=Math.PI?-1:h<-Math.PI?1:0))+f,m={x:Math.cos(h),y:Math.sin(h)},b={x:Math.cos(g),y:Math.sin(g)},y=h<=0&&g>=0||h<=2*Math.PI&&2*Math.PI<=g,v=h<=.5*Math.PI&&.5*Math.PI<=g||h<=2.5*Math.PI&&2.5*Math.PI<=g,x=h<=-Math.PI&&-Math.PI<=g||h<=Math.PI&&Math.PI<=g,_=h<=.5*-Math.PI&&.5*-Math.PI<=g||h<=1.5*Math.PI&&1.5*Math.PI<=g,T=p/100,w={x:x?-1:Math.min(m.x*(m.x<0?1:T),b.x*(b.x<0?1:T)),y:_?-1:Math.min(m.y*(m.y<0?1:T),b.y*(b.y<0?1:T))},S={x:y?1:Math.max(m.x*(m.x>0?1:T),b.x*(b.x>0?1:T)),y:v?1:Math.max(m.y*(m.y>0?1:T),b.y*(b.y>0?1:T))},O={width:.5*(S.x-w.x),height:.5*(S.y-w.y)};c=Math.min(s/O.width,u/O.height),l={x:-.5*(S.x+w.x),y:-.5*(S.y+w.y)}}n.borderWidth=e.getMaxBorderWidth(d.data),n.outerRadius=Math.max((c-n.borderWidth)/2,0),n.innerRadius=Math.max(p?n.outerRadius/100*p:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=l.x*n.outerRadius,n.offsetY=l.y*n.outerRadius,d.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),i.each(d.data,function(n,a){e.updateElement(n,a,t)})},updateElement:function(t,e,n){var a=this,r=a.chart,o=r.chartArea,s=r.options,u=s.animation,c=(o.left+o.right)/2,l=(o.top+o.bottom)/2,d=s.rotation,p=s.rotation,f=a.getDataset(),h=n&&u.animateRotate?0:t.hidden?0:a.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI));i.extend(t,{_datasetIndex:a.index,_index:e,_model:{x:c+r.offsetX,y:l+r.offsetY,startAngle:d,endAngle:p,circumference:h,outerRadius:n&&u.animateScale?0:a.outerRadius,innerRadius:n&&u.animateScale?0:a.innerRadius,label:(0,i.valueAtIndexOrDefault)(f.label,e,r.data.labels[e])}});var g=t._model,m=t.custom||{},b=i.valueAtIndexOrDefault,y=this.chart.options.elements.arc;g.backgroundColor=m.backgroundColor?m.backgroundColor:b(f.backgroundColor,e,y.backgroundColor),g.borderColor=m.borderColor?m.borderColor:b(f.borderColor,e,y.borderColor),g.borderWidth=m.borderWidth?m.borderWidth:b(f.borderWidth,e,y.borderWidth),n&&u.animateRotate||(g.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,g.endAngle=g.startAngle+g.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return i.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){for(var e,n,a=0,r=this.index,i=t.length,o=0;o<i;o++)a=(n=t[o]._chart?t[o]._chart.config.data.datasets[r].hoverBorderWidth:0)>(a=(e=t[o]._model?t[o]._model.borderWidth:0)>a?e:a)?n:a;return a}})}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("eajB"),i=(n("Ip0R"),a["\u0275crt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs-tooltip-top[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-tooltip-bottom[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      left: 50%;\n      transform: translateX(-50%);\n    }\n    .bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      top: 50%;\n      transform: translateY(-50%);\n    }"],data:{}}));function o(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[1,"id",0]],null,null,o,i)),a["\u0275did"](1,4243456,null,0,r.b,[r.a],null,null)],null,function(t,e){t(e,0,0,"tooltip in tooltip-"+a["\u0275nov"](e,1).placement+" bs-tooltip-"+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).containerClass,!a["\u0275nov"](e,1).isBs3,a["\u0275nov"](e,1).id)})}var u=a["\u0275ccf"]("bs-tooltip-container",r.b,s,{},{},["*"])},XlPw:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t,e){return new a.a(e?function(n){return e.schedule(i,0,{error:t,subscriber:n})}:function(e){return e.error(t)})}function i(t){t.subscriber.error(t.error)}},"Xwq/":function(t,e,n){"use strict";var a=n("FWf1"),r=n("p//D"),i=n("GiSu");e.toSubscriber=function(t,e,n){if(t){if(t instanceof a.Subscriber)return t;if(t[r.rxSubscriber])return t[r.rxSubscriber]()}return t||e||n?new a.Subscriber(t,e,n):new a.Subscriber(i.empty)}},Y0Co:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("Lwhh"),s=n("8iEZ"),u=n("L5sC");n("BARL"),e.DataTableColumnDirective=function(){function t(t){this.columnChangesService=t,this.isFirstChange=!0}return t.prototype.ngOnChanges=function(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()},a([i.Input(),r("design:type",String)],t.prototype,"name",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"prop",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenLeft",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenRight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"flexGrow",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"comparator",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pipe",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"sortable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"draggable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"canAutoResize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"width",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"checkboxable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"headerCheckboxable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"headerClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"cellClass",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTreeColumn",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"treeLevelIndent",void 0),a([i.Input(),r("design:type",Function)],t.prototype,"summaryFunc",void 0),a([i.Input(),r("design:type",i.TemplateRef)],t.prototype,"summaryTemplate",void 0),a([i.Input(),i.ContentChild(s.DataTableColumnCellDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"cellTemplate",void 0),a([i.Input(),i.ContentChild(o.DataTableColumnHeaderDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"headerTemplate",void 0),a([i.Input(),i.ContentChild(u.DataTableColumnCellTreeToggle,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"treeToggleTemplate",void 0),a([i.Directive({selector:"ngx-datatable-column"})],t)}()},Y4Rb:function(t,e,n){"use strict";var a=n("RDha"),r=n("cdu6"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.logarithmic}},n=r.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,r=n.data.datasets,i=t.isHorizontal();function o(e){return i?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&&a.each(r,function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(a)&&void 0!==a.stack&&(s=!0)}}),e.stacked||s){var u={};a.each(r,function(r,i){var s=n.getDatasetMeta(i),c=[s.type,void 0===e.stacked&&void 0===s.stack?i:"",s.stack].join(".");n.isDatasetVisible(i)&&o(s)&&(void 0===u[c]&&(u[c]=[]),a.each(r.data,function(e,n){var a=u[c],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)}))}),a.each(u,function(e){if(e.length>0){var n=a.min(e),r=a.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?r:Math.max(t.max,r)}})}else a.each(r,function(e,r){var i=n.getDatasetMeta(r);n.isDatasetVisible(r)&&o(i)&&a.each(e.data,function(e,n){var a=+t.getRightValue(e);isNaN(a)||i.data[n].hidden||a<0||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a: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,n=a.valueOrDefault;t.min=n(e.min,t.min),t.max=n(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(a.log10(t.min))-1),t.max=Math.pow(10,Math.floor(a.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(a.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(a.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(a.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),r=t.ticks=function(t,e){var n,r,i=[],o=a.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(a.log10(e.min)))),u=Math.floor(a.log10(e.max)),c=Math.ceil(e.max/Math.pow(10,u));0===s?(n=Math.floor(a.log10(e.minNotZero)),r=Math.floor(e.minNotZero/Math.pow(10,n)),i.push(s),s=r*Math.pow(10,n)):(n=Math.floor(a.log10(s)),r=Math.floor(s/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{i.push(s),10==++r&&(r=1,l=++n>=0?1:l),s=Math.round(r*Math.pow(10,n)*l)/l}while(n<u||n===u&&r<c);var d=o(t.max,s);return i.push(d),i}({min:e.min,max:e.max},t);t.max=a.max(r),t.min=a.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(),r.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(a.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var n,r,i,o,s,u=this,c=u.options.ticks.reverse,l=a.log10,d=u._getFirstTickValue(u.minNotZero),p=0;return e=+u.getRightValue(e),c?(i=u.end,o=u.start,s=-1):(i=u.start,o=u.end,s=1),u.isHorizontal()?(n=u.width,r=c?u.right:u.left):(n=u.height,s*=-1,r=c?u.top:u.bottom),e!==i&&(0===i&&(n-=p=a.getValueOrDefault(u.options.ticks.fontSize,t.defaults.global.defaultFontSize),i=d),0!==e&&(p+=n/(l(o)-l(i))*(l(e)-l(i))),r+=s*p),r},getValueForPixel:function(e){var n,r,i,o,s=this,u=s.options.ticks.reverse,c=a.log10,l=s._getFirstTickValue(s.minNotZero);if(u?(r=s.end,i=s.start):(r=s.start,i=s.end),s.isHorizontal()?(n=s.width,o=u?s.right-e:e-s.left):(n=s.height,o=u?e-s.top:s.bottom-e),o!==r){if(0===r){var d=a.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=d,n-=d,r=l}o*=c(i)-c(r),o/=n,o=Math.pow(10,c(r)+o)}return o}});i.registerScaleType("logarithmic",n,e)}},YAQW:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return s}),n.d(e,"d",function(){return o}),n.d(e,"e",function(){return i}),n.d(e,"c",function(){return u});var a=n("CcnG"),r=function(){function t(t){this.viewRef=t}return Object.defineProperty(t.prototype,"ngTransclude",{get:function(){return this._ngTransclude},set:function(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)},enumerable:!0,configurable:!0}),t}(),i=function(){return function(){this.type="tabs"}}(),o=function(){function t(t,e){this.renderer=e,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}return Object.defineProperty(t.prototype,"vertical",{get:function(){return this._vertical},set:function(t){this._vertical=t,this.setClassMap()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"justified",{get:function(){return this._justified},set:function(t){this._justified=t,this.setClassMap()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this._type},set:function(t){this._type=t,this.setClassMap()},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.isDestroyed=!0},t.prototype.addTab=function(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active},t.prototype.removeTab=function(t,e){void 0===e&&(e={reselect:!0,emit:!0});var n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){var a=this.getClosestTabIndex(n);this.tabs[a].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)}},t.prototype.getClosestTabIndex=function(t){var e=this.tabs.length;if(!e)return-1;for(var n=1;n<=e;n+=1){var a=t-n,r=t+n;if(this.tabs[a]&&!this.tabs[a].disabled)return a;if(this.tabs[r]&&!this.tabs[r].disabled)return r}return-1},t.prototype.hasAvailableTabs=function(t){var e=this.tabs.length;if(!e)return!1;for(var n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1},t.prototype.setClassMap=function(){var t;this.classMap=((t={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified})["nav-"+this.type]=!0,t)},t}(),s=function(){function t(t,e,n){this.elementRef=e,this.renderer=n,this.select=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.tabset=t,this.tabset.addTab(this)}return Object.defineProperty(t.prototype,"customClass",{get:function(){return this._customClass},set:function(t){var e=this;this.customClass&&this.customClass.split(" ").forEach(function(t){e.renderer.removeClass(e.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(function(t){e.renderer.addClass(e.elementRef.nativeElement,t)})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._active},set:function(t){var e=this;this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.select.emit(this),this.tabset.tabs.forEach(function(t){t!==e&&(t.active=!1)})))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.removable=this.removable},t.prototype.ngOnDestroy=function(){this.tabset.removeTab(this,{reselect:!1,emit:!1})},t}(),u=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[i]}},t}()},YRex:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===e||"\u0633\u06d5\u06be\u06d5\u0631"===e||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===e?t:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===e||"\u0643\u06d5\u0686"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":a<900?"\u0633\u06d5\u06be\u06d5\u0631":a<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":a<1230?"\u0686\u06c8\u0634":a<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return t+"-\u06be\u06d5\u067e\u062a\u06d5";default:return t}},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:7}})}()},YSsK:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,i=t.isHorizontal();function o(e){return i?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&r.each(a,function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(a)&&void 0!==a.stack&&(s=!0)}}),e.stacked||s){var u={};r.each(a,function(a,i){var s=n.getDatasetMeta(i),c=[s.type,void 0===e.stacked&&void 0===s.stack?i:"",s.stack].join(".");void 0===u[c]&&(u[c]={positiveValues:[],negativeValues:[]});var l=u[c].positiveValues,d=u[c].negativeValues;n.isDatasetVisible(i)&&o(s)&&r.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)})}),r.each(u,function(e){var n=e.positiveValues.concat(e.negativeValues),a=r.min(n),i=r.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?i:Math.max(t.max,i)})}else r.each(a,function(e,a){var i=n.getDatasetMeta(a);n.isDatasetVisible(a)&&o(i)&&r.each(e.data,function(e,n){var a=+t.getRightValue(e);isNaN(a)||i.data[n].hidden||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a: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()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=r.valueOrDefault(e.fontSize,a.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},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])}});i.registerScaleType("linear",n,e)}},YVFZ:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=n("qwkt");n("czA5"),e.DataTableBodyCellComponent=function(){function t(t,e){this.cd=e,this.activate=new i.EventEmitter,this.treeAction=new i.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}return Object.defineProperty(t.prototype,"group",{get:function(){return this._group},set:function(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowHeight",{get:function(){return this._rowHeight},set:function(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this._isSelected},set:function(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"row",{get:function(){return this._row},set:function(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"treeStatus",{get:function(){return this._treeStatus},set:function(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var 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)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===s.SortDirection.asc&&(t+=" sort-asc"),this.sortDir===s.SortDirection.desc&&(t+=" sort-desc"),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){var t=this.rowHeight;return isNaN(t)?t:t+"px"},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.checkValueUpdates()},t.prototype.ngOnDestroy=function(){this.cellTemplate&&this.cellTemplate.clear()},t.prototype.checkValueUpdates=function(){var t="";if(this.row&&this.column){var 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())},t.prototype.onFocus=function(){this.isFocused=!0},t.prototype.onBlur=function(){this.isFocused=!1},t.prototype.onClick=function(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})},t.prototype.onDblClick=function(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})},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.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}))},t.prototype.onCheckboxChange=function(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"})},t.prototype.calcSortDir=function(t){var e=this;if(t){var n=t.find(function(t){return t.prop===e.column.prop});return n?n.dir:void 0}},t.prototype.stripHtml=function(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t},t.prototype.onTreeAction=function(){this.treeAction.emit(this.row)},t.prototype.calcLeftMargin=function(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0},a([i.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"group",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowHeight",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"isSelected",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"row",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"treeStatus",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild("cellTemplate",{read:i.ViewContainerRef}),r("design:type",i.ViewContainerRef)],t.prototype,"cellTemplate",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"height",null),a([i.HostListener("focus"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onFocus",null),a([i.HostListener("blur"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onBlur",null),a([i.HostListener("click",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onClick",null),a([i.HostListener("dblclick",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onDblClick",null),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.Component({selector:"datatable-body-cell",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div class="datatable-body-cell-label"\n      [style.margin-left.px]="calcLeftMargin(column, row)">\n      <label\n        *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="isSelected"\n          (click)="onCheckboxChange($event)"\n        />\n      </label>\n      <ng-container *ngIf="column.isTreeColumn">\n        <button *ngIf="!column.treeToggleTemplate"\n          class="datatable-tree-button"\n          [disabled]="treeStatus===\'disabled\'"\n          (click)="onTreeAction()">\n          <span>\n            <i *ngIf="treeStatus===\'loading\'"\n              class="icon datatable-icon-collapse"></i>\n            <i *ngIf="treeStatus===\'collapsed\'"\n              class="icon datatable-icon-up"></i>\n            <i *ngIf="treeStatus===\'expanded\' ||\n                      treeStatus===\'disabled\'"\n              class="icon datatable-icon-down"></i>\n          </span>\n        </button>\n        <ng-template *ngIf="column.treeToggleTemplate"\n          [ngTemplateOutlet]="column.treeToggleTemplate"\n          [ngTemplateOutletContext]="{ cellContext: cellContext }">\n        </ng-template>\n      </ng-container>\n\n      <span\n        *ngIf="!column.cellTemplate"\n        [title]="sanitizedValue"\n        [innerHTML]="value">\n      </span>\n      <ng-template #cellTemplate\n        *ngIf="column.cellTemplate"\n        [ngTemplateOutlet]="column.cellTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n    </div>\n  '})],t)}()},YcCt:function(t,e,n){"use strict";function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,r){n=n||"=";var i={};if("string"!=typeof t||0===t.length)return i;var o=/\+/g;t=t.split(e=e||"&");var s=1e3;r&&"number"==typeof r.maxKeys&&(s=r.maxKeys);var u=t.length;s>0&&u>s&&(u=s);for(var c=0;c<u;++c){var l,d,p,f,h=t[c].replace(o,"%20"),g=h.indexOf(n);g>=0?(l=h.substr(0,g),d=h.substr(g+1)):(l=h,d=""),p=decodeURIComponent(l),f=decodeURIComponent(d),a(i,p)?Array.isArray(i[p])?i[p].push(f):i[p]=[i[p],f]:i[p]=f}return i}},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}},Z21x:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("sne2");var a=function(){return function(t,e){var n=this;this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=function(){return n.location.back()}}}()},Z4QM:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],a=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];n("wd/R").defineLocale("sd",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}()},Z5tI:function(t,e,n){"use strict";var a=n("MkmW");e.subscribeToPromise=function(t){return function(e){return t.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,a.hostReportError),e}}},ZAMP:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},ZANz:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),a._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),t.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:r.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.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.chart,o=a.getMeta(),s=a.getDataset(),u=t.custom||{},c=r.options.elements.rectangle;t._xScale=a.getScaleForId(o.xAxisID),t._yScale=a.getScaleForId(o.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={datasetLabel:s.label,label:r.data.labels[e],borderSkipped:u.borderSkipped?u.borderSkipped:c.borderSkipped,backgroundColor:u.backgroundColor?u.backgroundColor:i.valueAtIndexOrDefault(s.backgroundColor,e,c.backgroundColor),borderColor:u.borderColor?u.borderColor:i.valueAtIndexOrDefault(s.borderColor,e,c.borderColor),borderWidth:u.borderWidth?u.borderWidth:i.valueAtIndexOrDefault(s.borderWidth,e,c.borderWidth)},a.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a.getValueScale(),o=i.getBasePixel(),s=i.isHorizontal(),u=a._ruler||a.getRuler(),c=a.calculateBarValuePixels(a.index,e),l=a.calculateBarIndexPixels(a.index,e,u);r.horizontal=s,r.base=n?o:c.base,r.x=s?n?o:c.head:l.center,r.y=s?l.center:n?o:c.head,r.height=s?l.size:void 0,r.width=s?void 0:l.size},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())},_getStacks:function(t){var e,n,a=this.chart,r=this.getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,o=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===o.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===o.indexOf(n.stack)))&&o.push(n.stack);return o},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,o=n.isHorizontal(),s=o?n.left:n.top,u=s+(o?n.width:n.height),c=[];for(t=0,e=this.getMeta().data.length;t<e;++t)c.push(n.getPixelForValue(null,t,r));return{min:i.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(r=1,i=e.length;r<i;++r)o=Math.min(o,e[r]-e[r-1]);for(r=0,i=s.length;r<i;++r)a=t.getPixelForTick(r),o=r>0?Math.min(o,a-n):o,n=a;return o}(n,c):-1,pixels:c,start:s,end:u,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,o,s,u=this.chart,c=this.getMeta(),l=this.getValueScale(),d=u.data.datasets,p=l.getRightValue(d[t].data[e]),f=l.options.stacked,h=c.stack,g=0;if(f||void 0===f&&void 0!==h)for(n=0;n<t;++n)(a=u.getDatasetMeta(n)).bar&&a.stack===h&&a.controller.getValueScaleId()===l.id&&u.isDatasetVisible(n)&&(r=l.getRightValue(d[n].data[e]),(p<0&&r<0||p>=0&&r>0)&&(g+=r));return i=l.getPixelForValue(g),{size:s=((o=l.getPixelForValue(g+p))-i)/2,base:i,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a=e.pixels,r=a[t],i=t>0?a[t-1]:null,o=t<a.length-1?a[t+1]:null,s=n.categoryPercentage;return null===i&&(i=r-(null===o?e.end-r:o-r)),null===o&&(o=r+r-i),{chunk:(o-i)/2*s/e.stackCount,ratio:n.barPercentage,start:r-(r-i)/2*s}}(e,n,a):function(t,e,n){var a,r,o=n.barThickness,s=e.stackCount,u=e.pixels[t];return i.isNullOrUndef(o)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=o*s,r=1),{chunk:a/s,ratio:r,start:u-a/2}}(e,n,a),o=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*o+r.chunk/2,u=Math.min(i.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,o=0;for(i.canvas.clipArea(t.ctx,t.chartArea);o<r;++o)isNaN(e.getRightValue(a.data[o]))||n[o].draw();i.canvas.unclipArea(t.ctx)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},ZDA6:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("ui-api/scope")},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 s}),n.d(e,"b",function(){return o}),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("mtw6")),i=n("vCyI"),o=(n("nSDx"),n("aexS"),n("9nlD"),new(n("EgGo").a)("user-management/users")),s=function(){function t(t,e,n,a,r,o,s,u){var c=this;this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=o,this.urlBuilder=s,this.actionLabels=u,this.selection=new i.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return c.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return c.selection.first()&&c.urlBuilder.getEdit(c.selection.first().username)},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return c.deleteUserModal()},name:this.actionLabels.DELETE}]}return t.prototype.ngOnInit=function(){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}]},t.prototype.getUsers=function(){var t=this;this.userService.list().subscribe(function(e){t.users=e})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteUser=function(t){var e=this;this.userService.delete(t).subscribe(function(){e.getUsers(),e.modalRef.hide(),e.notificationService.show(r.a.success,e.i18n('Deleted user "{{username}}"',{username:t}))},function(){e.modalRef.content.stopLoadingSpinner()})},t.prototype.deleteUserModal=function(){var t=this,e=this.authStorageService.getUsername(),n=this.selection.first().username;e!==n?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",itemNames:[n],submitAction:function(){return t.deleteUser(n)}}}):this.notificationService.show(r.a.error,this.i18n('Failed to delete user "{{username}}"',{username:n}),this.i18n('You are currently logged in as "{{username}}".',{username:n}))},t}()},ZYCi:function(t,e,n){"use strict";n.d(e,"v",function(){return fn}),n.d(e,"C",function(){return wn}),n.d(e,"x",function(){return bn}),n.d(e,"D",function(){return Sn}),n.d(e,"E",function(){return On}),n.d(e,"z",function(){return vn}),n.d(e,"y",function(){return yn}),n.d(e,"B",function(){return Tn}),n.d(e,"w",function(){return gn}),n.d(e,"A",function(){return _n}),n.d(e,"F",function(){return dn}),n.d(e,"m",function(){return Je}),n.d(e,"o",function(){return Qe}),n.d(e,"n",function(){return en}),n.d(e,"q",function(){return rn}),n.d(e,"d",function(){return P}),n.d(e,"k",function(){return Ye}),n.d(e,"l",function(){return Xe}),n.d(e,"j",function(){return Ve}),n.d(e,"h",function(){return pn}),n.d(e,"i",function(){return kn}),n.d(e,"p",function(){return mn}),n.d(e,"b",function(){return an}),n.d(e,"e",function(){return cn}),n.d(e,"f",function(){return un}),n.d(e,"g",function(){return sn}),n.d(e,"r",function(){return ln}),n.d(e,"a",function(){return Gt}),n.d(e,"s",function(){return Ue}),n.d(e,"c",function(){return xt}),n.d(e,"t",function(){return vt}),n.d(e,"u",function(){return Z});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=n("F/XL"),s=n("0/uQ"),u=n("26FU"),c=n("6blF"),l=n("3fWJ"),d=n("dzgT"),p=n("lYZG"),f=n("K9Ia"),h=n("G5J1"),g=n("67Y/"),m=n("Txjg"),b=n("w1EH"),y=n("9Z1F"),v=n("P6uZ"),x=n("psW0"),_=n("zAZS"),T=n("15JJ"),w=n("t9fZ"),S=n("p0Sj"),O=n("dC0D"),k=n("VnD/"),C=n("Phjn"),I=n("Qgas"),R=n("xMyE"),N=n("2WpN"),D=n("Zn8D"),A=n("ZYjt"),E=function(){return function(t,e){this.id=t,this.url=e}}(),L=function(t){function e(e,n,a,r){void 0===a&&(a="imperative"),void 0===r&&(r=null);var i=t.call(this,e,n)||this;return i.navigationTrigger=a,i.restoredState=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationStart(id: "+this.id+", url: '"+this.url+"')"},e}(E),P=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.urlAfterRedirects=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"')"},e}(E),M=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.reason=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationCancel(id: "+this.id+", url: '"+this.url+"')"},e}(E),q=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.error=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationError(id: "+this.id+", url: '"+this.url+"', error: "+this.error+")"},e}(E),j=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"RoutesRecognized(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),F=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"GuardsCheckStart(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),z=function(t){function e(e,n,a,r,i){var o=t.call(this,e,n)||this;return o.urlAfterRedirects=a,o.state=r,o.shouldActivate=i,o}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"GuardsCheckEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+", shouldActivate: "+this.shouldActivate+")"},e}(E),G=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"ResolveStart(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),Y=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"ResolveEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),H=function(){function t(t){this.route=t}return t.prototype.toString=function(){return"RouteConfigLoadStart(path: "+this.route.path+")"},t}(),V=function(){function t(t){this.route=t}return t.prototype.toString=function(){return"RouteConfigLoadEnd(path: "+this.route.path+")"},t}(),B=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ChildActivationStart(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),U=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ChildActivationEnd(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),W=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ActivationStart(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),K=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ActivationEnd(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),$=function(){function t(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}return t.prototype.toString=function(){return"Scroll(anchor: '"+this.anchor+"', position: '"+(this.position?this.position[0]+", "+this.position[1]:null)+"')"},t}(),Z=function(){return function(){}}(),X="primary",J=function(){function t(t){this.params=t||{}}return t.prototype.has=function(t){return this.params.hasOwnProperty(t)},t.prototype.get=function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e[0]:e}return null},t.prototype.getAll=function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e:[e]}return[]},Object.defineProperty(t.prototype,"keys",{get:function(){return Object.keys(this.params)},enumerable:!0,configurable:!0}),t}();function Q(t){return new J(t)}var tt="ngNavigationCancelingError";function et(t){var e=Error("NavigationCancelingError: "+t);return e[tt]=!0,e}function nt(t,e,n){var a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;for(var r={},i=0;i<a.length;i++){var o=a[i],s=t[i];if(o.startsWith(":"))r[o.substring(1)]=s;else if(o!==s.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}var at=function(){return function(t,e){this.routes=t,this.module=e}}();function rt(t,e){void 0===e&&(e="");for(var n=0;n<t.length;n++){var a=t[n];it(a,ot(e,a))}}function it(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&&t.outlet!==X)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&&rt(t.children,e)}function ot(t,e){return e?t||e.path?t&&!e.path?t+"/":!t&&e.path?e.path:t+"/"+e.path:"":t}function st(t){var e=t.children&&t.children.map(st),n=e?Object(a.__assign)({},t,{children:e}):Object(a.__assign)({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&n.outlet!==X&&(n.component=Z),n}function ut(t,e){var n,a=Object.keys(t),r=Object.keys(e);if(a.length!=r.length)return!1;for(var i=0;i<a.length;i++)if(t[n=a[i]]!==e[n])return!1;return!0}function ct(t){return Array.prototype.concat.apply([],t)}function lt(t){return t.length>0?t[t.length-1]:null}function dt(t,e){for(var n in t)t.hasOwnProperty(n)&&e(t[n],n)}function pt(t){return Object(i["\u0275isObservable"])(t)?t:Object(i["\u0275isPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(o.a)(t)}function ft(t,e,n){return n?function(t,e){return ut(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!bt(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(var 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(function(n){return 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!!bt(o=n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!bt(n.segments,r))return!1;for(var i in a.children){if(!n.children[i])return!1;if(!t(n.children[i],a.children[i]))return!1}return!0}var o=r.slice(0,n.segments.length),s=r.slice(n.segments.length);return!!bt(n.segments,o)&&!!n.children[X]&&e(n.children[X],a,s)}(e,n,n.segments)}(t.root,e.root)}var ht=function(){function t(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}return Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=Q(this.queryParams)),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return _t.serialize(this)},t}(),gt=function(){function t(t,e){var n=this;this.segments=t,this.children=e,this.parent=null,dt(e,function(t,e){return t.parent=n})}return t.prototype.hasChildren=function(){return this.numberOfChildren>0},Object.defineProperty(t.prototype,"numberOfChildren",{get:function(){return Object.keys(this.children).length},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return Tt(this)},t}(),mt=function(){function t(t,e){this.path=t,this.parameters=e}return Object.defineProperty(t.prototype,"parameterMap",{get:function(){return this._parameterMap||(this._parameterMap=Q(this.parameters)),this._parameterMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return It(this)},t}();function bt(t,e){return t.length===e.length&&t.every(function(t,n){return t.path===e[n].path})}function yt(t,e){var n=[];return dt(t.children,function(t,a){a===X&&(n=n.concat(e(t,a)))}),dt(t.children,function(t,a){a!==X&&(n=n.concat(e(t,a)))}),n}var vt=function(){return function(){}}(),xt=function(){function t(){}return t.prototype.parse=function(t){var e=new Et(t);return new ht(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())},t.prototype.serialize=function(t){var e,n;return"/"+function t(e,n){if(!e.hasChildren())return Tt(e);if(n){var a=e.children[X]?t(e.children[X],!1):"",r=[];return dt(e.children,function(e,n){n!==X&&r.push(n+":"+t(e,!1))}),r.length>0?a+"("+r.join("//")+")":a}var i=yt(e,function(n,a){return a===X?[t(e.children[X],!1)]:[a+":"+t(n,!1)]});return Tt(e)+"/("+i.join("//")+")"}(t.root,!0)+(e=t.queryParams,(n=Object.keys(e).map(function(t){var n=e[t];return Array.isArray(n)?n.map(function(e){return St(t)+"="+St(e)}).join("&"):St(t)+"="+St(n)})).length?"?"+n.join("&"):"")+("string"==typeof t.fragment?"#"+encodeURI(t.fragment):"")},t}(),_t=new xt;function Tt(t){return t.segments.map(function(t){return It(t)}).join("/")}function wt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function St(t){return wt(t).replace(/%3B/gi,";")}function Ot(t){return wt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function kt(t){return decodeURIComponent(t)}function Ct(t){return kt(t.replace(/\+/g,"%20"))}function It(t){return""+Ot(t.path)+(e=t.parameters,Object.keys(e).map(function(t){return";"+Ot(t)+"="+Ot(e[t])}).join(""));var e}var Rt=/^[^\/()?;=#]+/;function Nt(t){var e=t.match(Rt);return e?e[0]:""}var Dt=/^[^=?&#]+/,At=/^[^?&#]+/,Et=function(){function t(t){this.url=t,this.remaining=t}return t.prototype.parseRootSegment=function(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new gt([],{}):new gt([],this.parseChildren())},t.prototype.parseQueryParams=function(){var t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t},t.prototype.parseFragment=function(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null},t.prototype.parseChildren=function(){if(""===this.remaining)return{};this.consumeOptional("/");var t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());var e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));var n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n[X]=new gt(t,e)),n},t.prototype.parseSegment=function(){var t=Nt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error("Empty path url segment cannot have parameters: '"+this.remaining+"'.");return this.capture(t),new mt(kt(t),this.parseMatrixParams())},t.prototype.parseMatrixParams=function(){for(var t={};this.consumeOptional(";");)this.parseParam(t);return t},t.prototype.parseParam=function(t){var e=Nt(this.remaining);if(e){this.capture(e);var n="";if(this.consumeOptional("=")){var a=Nt(this.remaining);a&&this.capture(n=a)}t[kt(e)]=kt(n)}},t.prototype.parseQueryParam=function(t){var e,n=(e=this.remaining.match(Dt))?e[0]:"";if(n){this.capture(n);var a="";if(this.consumeOptional("=")){var r=function(t){var e=t.match(At);return e?e[0]:""}(this.remaining);r&&this.capture(a=r)}var i=Ct(n),o=Ct(a);if(t.hasOwnProperty(i)){var s=t[i];Array.isArray(s)||(t[i]=s=[s]),s.push(o)}else t[i]=o}},t.prototype.parseParens=function(t){var e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){var n=Nt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error("Cannot parse url '"+this.url+"'");var r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r=X);var i=this.parseChildren();e[r]=1===Object.keys(i).length?i[X]:new gt([],i),this.consumeOptional("//")}return e},t.prototype.peekStartsWith=function(t){return this.remaining.startsWith(t)},t.prototype.consumeOptional=function(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)},t.prototype.capture=function(t){if(!this.consumeOptional(t))throw new Error('Expected "'+t+'".')},t}(),Lt=function(){function t(t){this._root=t}return Object.defineProperty(t.prototype,"root",{get:function(){return this._root.value},enumerable:!0,configurable:!0}),t.prototype.parent=function(t){var e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null},t.prototype.children=function(t){var e=Pt(t,this._root);return e?e.children.map(function(t){return t.value}):[]},t.prototype.firstChild=function(t){var e=Pt(t,this._root);return e&&e.children.length>0?e.children[0].value:null},t.prototype.siblings=function(t){var e=Mt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(function(t){return t.value}).filter(function(e){return e!==t})},t.prototype.pathFromRoot=function(t){return Mt(t,this._root).map(function(t){return t.value})},t}();function Pt(t,e){var n,r;if(t===e.value)return e;try{for(var i=Object(a.__values)(e.children),o=i.next();!o.done;o=i.next()){var s=Pt(t,o.value);if(s)return s}}catch(u){n={error:u}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null}function Mt(t,e){var n,r;if(t===e.value)return[e];try{for(var i=Object(a.__values)(e.children),o=i.next();!o.done;o=i.next()){var s=Mt(t,o.value);if(s.length)return s.unshift(e),s}}catch(u){n={error:u}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return[]}var qt=function(){function t(t,e){this.value=t,this.children=e}return t.prototype.toString=function(){return"TreeNode("+this.value+")"},t}();function jt(t){var e={};return t&&t.children.forEach(function(t){return e[t.value.outlet]=t}),e}var Ft=function(t){function e(e,n){var a=t.call(this,e)||this;return a.snapshot=n,Bt(a,e),a}return Object(a.__extends)(e,t),e.prototype.toString=function(){return this.snapshot.toString()},e}(Lt);function zt(t,e){var n=function(t,e){var n=new Ht([],{},{},"",{},X,e,null,t.root,-1,{});return new Vt("",new qt(n,[]))}(t,e),a=new u.a([new mt("",{})]),r=new u.a({}),i=new u.a({}),o=new u.a({}),s=new u.a(""),c=new Gt(a,r,o,s,i,X,e,n.root);return c.snapshot=n.root,new Ft(new qt(c,[]),n)}var Gt=function(){function t(t,e,n,a,r,i,o,s){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=o,this._futureSnapshot=s}return Object.defineProperty(t.prototype,"routeConfig",{get:function(){return this._futureSnapshot.routeConfig},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMap",{get:function(){return this._paramMap||(this._paramMap=this.params.pipe(Object(g.a)(function(t){return Q(t)}))),this._paramMap},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(g.a)(function(t){return Q(t)}))),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this.snapshot?this.snapshot.toString():"Future("+this._futureSnapshot+")"},t}();function Yt(t,e){void 0===e&&(e="emptyOnly");var n=t.pathFromRoot,r=0;if("always"!==e)for(r=n.length-1;r>=1;){var i=n[r],o=n[r-1];if(i.routeConfig&&""===i.routeConfig.path)r--;else{if(o.component)break;r--}}return function(t){return t.reduce(function(t,e){return{params:Object(a.__assign)({},t.params,e.params),data:Object(a.__assign)({},t.data,e.data),resolve:Object(a.__assign)({},t.resolve,e._resolvedData)}},{params:{},data:{},resolve:{}})}(n.slice(r))}var Ht=function(){function t(t,e,n,a,r,i,o,s,u,c,l){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=o,this.routeConfig=s,this._urlSegment=u,this._lastPathIndex=c,this._resolve=l}return Object.defineProperty(t.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMap",{get:function(){return this._paramMap||(this._paramMap=Q(this.params)),this._paramMap},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=Q(this.queryParams)),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"Route(url:'"+this.url.map(function(t){return t.toString()}).join("/")+"', path:'"+(this.routeConfig?this.routeConfig.path:"")+"')"},t}(),Vt=function(t){function e(e,n){var a=t.call(this,n)||this;return a.url=e,Bt(a,n),a}return Object(a.__extends)(e,t),e.prototype.toString=function(){return Ut(this._root)},e}(Lt);function Bt(t,e){e.value._routerState=t,e.children.forEach(function(e){return Bt(t,e)})}function Ut(t){var e=t.children.length>0?" { "+t.children.map(Ut).join(", ")+" } ":"";return""+t.value+e}function Wt(t){if(t.snapshot){var e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,ut(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),ut(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(var n=0;n<t.length;++n)if(!ut(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),ut(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function Kt(t,e){var n,a;return ut(t.params,e.params)&&bt(n=t.url,a=e.url)&&n.every(function(t,e){return ut(t.parameters,a[e].parameters)})&&!(!t.parent!=!e.parent)&&(!t.parent||Kt(t.parent,e.parent))}function $t(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Zt(t,e,n,a,r){var i={};return a&&dt(a,function(t,e){i[e]=Array.isArray(t)?t.map(function(t){return""+t}):""+t}),new ht(n.root===t?e:function t(e,n,a){var r={};return dt(e.children,function(e,i){r[i]=e===n?a:t(e,n,a)}),new gt(e.segments,r)}(n.root,t,e),i,r)}var Xt=function(){function t(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&$t(n[0]))throw new Error("Root segment cannot have matrix parameters");var a=n.find(function(t){return"object"==typeof t&&null!=t&&t.outlets});if(a&&a!==lt(n))throw new Error("{outlets:{}} has to be the last command")}return t.prototype.toRoot=function(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]},t}(),Jt=function(){return function(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}();function Qt(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets[X]:""+t}function te(t,e,n){if(t||(t=new gt([],{})),0===t.segments.length&&t.hasChildren())return ee(t,e,n);var a=function(t,e,n){for(var a=0,r=e,i={match:!1,pathIndex:0,commandIndex:0};r<t.segments.length;){if(a>=n.length)return i;var o=t.segments[r],s=Qt(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(!ie(s,u,o))return i;a+=2}else{if(!ie(s,{},o))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){var i=new gt(t.segments.slice(0,a.pathIndex),{});return i.children[X]=new gt(t.segments.slice(a.pathIndex),t.children),ee(i,0,r)}return a.match&&0===r.length?new gt(t.segments,{}):a.match&&!t.hasChildren()?ne(t,e,n):a.match?ee(t,0,r):ne(t,e,n)}function ee(t,e,n){if(0===n.length)return new gt(t.segments,{});var a=function(t){var e,n;return"object"!=typeof t[0]?((e={})[X]=t,e):void 0===t[0].outlets?((n={})[X]=t,n):t[0].outlets}(n),r={};return dt(a,function(n,a){null!==n&&(r[a]=te(t.children[a],e,n))}),dt(t.children,function(t,e){void 0===a[e]&&(r[e]=t)}),new gt(t.segments,r)}function ne(t,e,n){for(var a=t.segments.slice(0,e),r=0;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){var i=ae(n[r].outlets);return new gt(a,i)}if(0===r&&$t(n[0]))a.push(new mt(t.segments[e].path,n[0])),r++;else{var o=Qt(n[r]),s=r<n.length-1?n[r+1]:null;o&&s&&$t(s)?(a.push(new mt(o,re(s))),r+=2):(a.push(new mt(o,{})),r++)}}return new gt(a,{})}function ae(t){var e={};return dt(t,function(t,n){null!==t&&(e[n]=ne(new gt([],{}),0,t))}),e}function re(t){var e={};return dt(t,function(t,n){return e[n]=""+t}),e}function ie(t,e,n){return t==n.path&&ut(e,n.parameters)}var oe=function(){function t(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}return t.prototype.activate=function(t){var e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Wt(this.futureState.root),this.activateChildRoutes(e,n,t)},t.prototype.deactivateChildRoutes=function(t,e,n){var a=this,r=jt(e);t.children.forEach(function(t){var e=t.value.outlet;a.deactivateRoutes(t,r[e],n),delete r[e]}),dt(r,function(t,e){a.deactivateRouteAndItsChildren(t,n)})},t.prototype.deactivateRoutes=function(t,e,n){var a=t.value,r=e?e.value:null;if(a===r)if(a.component){var i=n.getContext(a.outlet);i&&this.deactivateChildRoutes(t,e,i.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)},t.prototype.deactivateRouteAndItsChildren=function(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)},t.prototype.detachAndStoreRouteSubtree=function(t,e){var n=e.getContext(t.value.outlet);if(n&&n.outlet){var a=n.outlet.detach(),r=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:a,route:t,contexts:r})}},t.prototype.deactivateRouteAndOutlet=function(t,e){var n=this,a=e.getContext(t.value.outlet);if(a){var r=jt(t),i=t.value.component?a.children:e;dt(r,function(t,e){return n.deactivateRouteAndItsChildren(t,i)}),a.outlet&&(a.outlet.deactivate(),a.children.onOutletDeactivated())}},t.prototype.activateChildRoutes=function(t,e,n){var a=this,r=jt(e);t.children.forEach(function(t){a.activateRoutes(t,r[t.value.outlet],n),a.forwardEvent(new K(t.value.snapshot))}),t.children.length&&this.forwardEvent(new U(t.value.snapshot))},t.prototype.activateRoutes=function(t,e,n){var a=t.value,r=e?e.value:null;if(Wt(a),a===r)if(a.component){var i=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,i.children)}else this.activateChildRoutes(t,e,n);else if(a.component)if(i=n.getOrCreateContext(a.outlet),this.routeReuseStrategy.shouldAttach(a.snapshot)){var o=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),i.children.onOutletReAttached(o.contexts),i.attachRef=o.componentRef,i.route=o.route.value,i.outlet&&i.outlet.attach(o.componentRef,o.route.value),se(o.route)}else{var s=function(t){for(var e=a.snapshot.parent;e;e=e.parent){var n=e.routeConfig;if(n&&n._loadedConfig)return n._loadedConfig;if(n&&n.component)return null}return null}(),u=s?s.module.componentFactoryResolver:null;i.attachRef=null,i.route=a,i.resolver=u,i.outlet&&i.outlet.activateWith(a,u),this.activateChildRoutes(t,null,i.children)}else this.activateChildRoutes(t,null,n)},t}();function se(t){Wt(t.value),t.children.forEach(se)}function ue(t){return"function"==typeof t}function ce(t){return t instanceof ht}var le=function(){return function(t){this.segmentGroup=t||null}}(),de=function(){return function(t){this.urlTree=t}}();function pe(t){return new c.a(function(e){return e.error(new le(t))})}function fe(t){return new c.a(function(e){return e.error(new de(t))})}function he(t){return new c.a(function(e){return e.error(new Error("Only absolute redirects can have named outlets. redirectTo: '"+t+"'"))})}var ge=function(){function t(t,e,n,a,r){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=r,this.allowRedirects=!0,this.ngModule=t.get(i.NgModuleRef)}return t.prototype.apply=function(){var t=this;return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,X).pipe(Object(g.a)(function(e){return t.createUrlTree(e,t.urlTree.queryParams,t.urlTree.fragment)})).pipe(Object(y.a)(function(e){if(e instanceof de)return t.allowRedirects=!1,t.match(e.urlTree);if(e instanceof le)throw t.noMatchError(e);throw e}))},t.prototype.match=function(t){var e=this;return this.expandSegmentGroup(this.ngModule,this.config,t.root,X).pipe(Object(g.a)(function(n){return e.createUrlTree(n,t.queryParams,t.fragment)})).pipe(Object(y.a)(function(t){if(t instanceof le)throw e.noMatchError(t);throw t}))},t.prototype.noMatchError=function(t){return new Error("Cannot match any routes. URL Segment: '"+t.segmentGroup+"'")},t.prototype.createUrlTree=function(t,e,n){var a,r=t.segments.length>0?new gt([],((a={})[X]=t,a)):t;return new ht(r,e,n)},t.prototype.expandSegmentGroup=function(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(g.a)(function(t){return new gt([],t)})):this.expandSegment(t,n,e,n.segments,a,!0)},t.prototype.expandChildren=function(t,e,n){var a=this;return function(n,r){if(0===Object.keys(n).length)return Object(o.a)({});var i=[],s=[],u={};return dt(n,function(n,r){var o,c,l=(o=r,c=n,a.expandSegmentGroup(t,e,c,o)).pipe(Object(g.a)(function(t){return u[r]=t}));r===X?i.push(l):s.push(l)}),o.a.apply(null,i.concat(s)).pipe(Object(m.a)(),Object(b.a)(),Object(g.a)(function(){return u}))}(n.children)},t.prototype.expandSegment=function(t,e,n,r,i,s){var u=this;return o.a.apply(void 0,Object(a.__spread)(n)).pipe(Object(g.a)(function(a){return u.expandSegmentAgainstRoute(t,e,n,a,r,i,s).pipe(Object(y.a)(function(t){if(t instanceof le)return Object(o.a)(null);throw t}))}),Object(m.a)(),Object(v.a)(function(t){return!!t}),Object(y.a)(function(t,n){if(t instanceof l.a||"EmptyError"===t.name){if(u.noLeftoversInUrl(e,r,i))return Object(o.a)(new gt([],{}));throw new le(e)}throw t}))},t.prototype.noLeftoversInUrl=function(t,e,n){return 0===e.length&&!t.children[n]},t.prototype.expandSegmentAgainstRoute=function(t,e,n,a,r,i,o){return ve(a)!==i?pe(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):o&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):pe(e)},t.prototype.expandSegmentAgainstRouteUsingRedirect=function(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)},t.prototype.expandWildCardWithParamsAgainstRouteUsingRedirect=function(t,e,n,a){var r=this,i=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?fe(i):this.lineralizeSegments(n,i).pipe(Object(x.a)(function(n){var i=new gt(n,{});return r.expandSegment(t,i,e,n,a,!1)}))},t.prototype.expandRegularSegmentAgainstRouteUsingRedirect=function(t,e,n,a,r,i){var o=this,s=me(e,a,r),u=s.consumedSegments,c=s.lastChild,l=s.positionalParamSegments;if(!s.matched)return pe(e);var d=this.applyRedirectCommands(u,a.redirectTo,l);return a.redirectTo.startsWith("/")?fe(d):this.lineralizeSegments(a,d).pipe(Object(x.a)(function(a){return o.expandSegment(t,e,n,a.concat(r.slice(c)),i,!1)}))},t.prototype.matchSegmentAgainstRoute=function(t,e,n,r){var i=this;if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(g.a)(function(t){return n._loadedConfig=t,new gt(r,{})})):Object(o.a)(new gt(r,{}));var s=me(e,n,r),u=s.consumedSegments,c=s.lastChild;if(!s.matched)return pe(e);var l=r.slice(c);return this.getChildConfig(t,n,r).pipe(Object(x.a)(function(t){var n=t.module,r=t.routes,s=function(t,e,n,r){return n.length>0&&function(t,e,n){return r.some(function(n){return ye(t,e,n)&&ve(n)!==X})}(t,n)?{segmentGroup:be(new gt(e,function(t,e){var n,r,i={};i[X]=e;try{for(var o=Object(a.__values)(t),s=o.next();!s.done;s=o.next()){var u=s.value;""===u.path&&ve(u)!==X&&(i[ve(u)]=new gt([],{}))}}catch(c){n={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i}(r,new gt(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return r.some(function(n){return ye(t,e,n)})}(t,n)?{segmentGroup:be(new gt(t.segments,function(t,e,n,r){var i,o,s={};try{for(var u=Object(a.__values)(n),c=u.next();!c.done;c=u.next()){var l=c.value;ye(t,e,l)&&!r[ve(l)]&&(s[ve(l)]=new gt([],{}))}}catch(d){i={error:d}}finally{try{c&&!c.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}return Object(a.__assign)({},r,s)}(t,n,r,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,u,l,r),c=s.segmentGroup,d=s.slicedSegments;return 0===d.length&&c.hasChildren()?i.expandChildren(n,r,c).pipe(Object(g.a)(function(t){return new gt(u,t)})):0===r.length&&0===d.length?Object(o.a)(new gt(u,{})):i.expandSegment(n,c,r,d,X,!0).pipe(Object(g.a)(function(t){return new gt(u.concat(t.segments),t.children)}))}))},t.prototype.getChildConfig=function(t,e,n){var a=this;return e.children?Object(o.a)(new at(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(o.a)(e._loadedConfig):function(t,e,n){var a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(g.a)(function(a){var r,i=t.get(a);if(function(t){return t&&ue(t.canLoad)}(i))r=i.canLoad(e,n);else{if(!ue(i))throw new Error("Invalid CanLoad guard");r=i(e,n)}return pt(r)})).pipe(Object(m.a)(),Object(_.a)(function(t){return!0===t})):Object(o.a)(!0)}(t.injector,e,n).pipe(Object(x.a)(function(n){return n?a.configLoader.load(t.injector,e).pipe(Object(g.a)(function(t){return e._loadedConfig=t,t})):function(t){return new c.a(function(e){return e.error(et("Cannot load children because the guard of the route \"path: '"+t.path+"'\" returned false"))})}(e)})):Object(o.a)(new at([],t))},t.prototype.lineralizeSegments=function(t,e){for(var n=[],a=e.root;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(o.a)(n);if(a.numberOfChildren>1||!a.children[X])return he(t.redirectTo);a=a.children[X]}},t.prototype.applyRedirectCommands=function(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)},t.prototype.applyRedirectCreatreUrlTree=function(t,e,n,a){var r=this.createSegmentGroup(t,e.root,n,a);return new ht(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)},t.prototype.createQueryParams=function(t,e){var n={};return dt(t,function(t,a){if("string"==typeof t&&t.startsWith(":")){var r=t.substring(1);n[a]=e[r]}else n[a]=t}),n},t.prototype.createSegmentGroup=function(t,e,n,a){var r=this,i=this.createSegments(t,e.segments,n,a),o={};return dt(e.children,function(e,i){o[i]=r.createSegmentGroup(t,e,n,a)}),new gt(i,o)},t.prototype.createSegments=function(t,e,n,a){var r=this;return e.map(function(e){return e.path.startsWith(":")?r.findPosParam(t,e,a):r.findOrReturn(e,n)})},t.prototype.findPosParam=function(t,e,n){var a=n[e.path.substring(1)];if(!a)throw new Error("Cannot redirect to '"+t+"'. Cannot find '"+e.path+"'.");return a},t.prototype.findOrReturn=function(t,e){var n,r,i=0;try{for(var o=Object(a.__values)(e),s=o.next();!s.done;s=o.next()){var u=s.value;if(u.path===t.path)return e.splice(i),u;i++}}catch(c){n={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return t},t}();function me(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:{}};var a=(e.matcher||nt)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function be(t){if(1===t.numberOfChildren&&t.children[X]){var e=t.children[X];return new gt(t.segments.concat(e.segments),e.children)}return t}function ye(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function ve(t){return t.outlet||X}var xe=function(){return function(t){this.path=t,this.route=this.path[this.path.length-1]}}(),_e=function(){return function(t,e){this.component=t,this.route=e}}();function Te(t,e,n){var a=function(t){if(!t)return null;for(var e=t.parent;e;e=e.parent){var n=e.routeConfig;if(n&&n._loadedConfig)return n._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function we(t,e,n,a,r){void 0===r&&(r={canDeactivateChecks:[],canActivateChecks:[]});var i=jt(e);return t.children.forEach(function(t){!function(t,e,n,a,r){void 0===r&&(r={canDeactivateChecks:[],canActivateChecks:[]});var i=t.value,o=e?e.value:null,s=n?n.getContext(t.value.outlet):null;if(o&&i.routeConfig===o.routeConfig){var u=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!bt(t.url,e.url);case"pathParamsOrQueryParamsChange":return!bt(t.url,e.url)||!ut(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Kt(t,e)||!ut(t.queryParams,e.queryParams);case"paramsChange":default:return!Kt(t,e)}}(o,i,i.routeConfig.runGuardsAndResolvers);u?r.canActivateChecks.push(new xe(a)):(i.data=o.data,i._resolvedData=o._resolvedData),we(t,e,i.component?s?s.children:null:n,a,r),u&&r.canDeactivateChecks.push(new _e(s&&s.outlet&&s.outlet.component||null,o))}else o&&Se(e,s,r),r.canActivateChecks.push(new xe(a)),we(t,null,i.component?s?s.children:null:n,a,r)}(t,i[t.value.outlet],n,a.concat([t.value]),r),delete i[t.value.outlet]}),dt(i,function(t,e){return Se(t,n.getContext(e),r)}),r}function Se(t,e,n){var a=jt(t),r=t.value;dt(a,function(t,a){Se(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new _e(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}var Oe=Symbol("INITIAL_VALUE");function ke(){return Object(T.a)(function(t){return d.b.apply(void 0,Object(a.__spread)(t.map(function(t){return t.pipe(Object(w.a)(1),Object(S.a)(Oe))}))).pipe(Object(O.a)(function(t,e){var n=!1;return e.reduce(function(t,a,r){if(t!==Oe)return t;if(a===Oe&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||ce(a))return a}return t},t)},Oe),Object(k.a)(function(t){return t!==Oe}),Object(g.a)(function(t){return ce(t)?t:!0===t}),Object(w.a)(1))})}function Ce(t,e){return null!==t&&e&&e(new W(t)),Object(o.a)(!0)}function Ie(t,e){return null!==t&&e&&e(new B(t)),Object(o.a)(!0)}function Re(t,e,n){var a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(o.a)(!0);var r=a.map(function(a){return Object(p.a)(function(){var r,i=Te(a,e,n);if(function(t){return t&&ue(t.canActivate)}(i))r=pt(i.canActivate(e,t));else{if(!ue(i))throw new Error("Invalid CanActivate guard");r=pt(i(e,t))}return r.pipe(Object(v.a)())})});return Object(o.a)(r).pipe(ke())}function Ne(t,e,n){var a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(function(t){return function(t){var e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)}).filter(function(t){return null!==t}).map(function(e){return Object(p.a)(function(){var r=e.guards.map(function(r){var i,o=Te(r,e.node,n);if(function(t){return t&&ue(t.canActivateChild)}(o))i=pt(o.canActivateChild(a,t));else{if(!ue(o))throw new Error("Invalid CanActivateChild guard");i=pt(o(a,t))}return i.pipe(Object(v.a)())});return Object(o.a)(r).pipe(ke())})});return Object(o.a)(r).pipe(ke())}var De=function(){return function(){}}(),Ae=function(){function t(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}return t.prototype.recognize=function(){try{var t=Pe(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,X),n=new Ht([],Object.freeze({}),Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,{},X,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new qt(n,e),i=new Vt(this.url,r);return this.inheritParamsAndData(i._root),Object(o.a)(i)}catch(s){return new c.a(function(t){return t.error(s)})}},t.prototype.inheritParamsAndData=function(t){var e=this,n=t.value,a=Yt(n,this.paramsInheritanceStrategy);n.params=Object.freeze(a.params),n.data=Object.freeze(a.data),t.children.forEach(function(t){return e.inheritParamsAndData(t)})},t.prototype.processSegmentGroup=function(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)},t.prototype.processChildren=function(t,e){var n,a=this,r=yt(e,function(e,n){return a.processSegmentGroup(t,e,n)});return n={},r.forEach(function(t){var e=n[t.value.outlet];if(e){var a=e.url.map(function(t){return t.toString()}).join("/"),r=t.value.url.map(function(t){return t.toString()}).join("/");throw new Error("Two segments cannot have the same outlet name: '"+a+"' and '"+r+"'.")}n[t.value.outlet]=t.value}),r.sort(function(t,e){return t.value.outlet===X?-1:e.value.outlet===X?1:t.value.outlet.localeCompare(e.value.outlet)}),r},t.prototype.processSegment=function(t,e,n,r){var i,o;try{for(var s=Object(a.__values)(t),u=s.next();!u.done;u=s.next()){var c=u.value;try{return this.processSegmentAgainstRoute(c,e,n,r)}catch(l){if(!(l instanceof De))throw l}}}catch(d){i={error:d}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}if(this.noLeftoversInUrl(e,n,r))return[];throw new De},t.prototype.noLeftoversInUrl=function(t,e,n){return 0===e.length&&!t.children[n]},t.prototype.processSegmentAgainstRoute=function(t,e,n,r){if(t.redirectTo)throw new De;if((t.outlet||X)!==r)throw new De;var i,o=[],s=[];if("**"===t.path){var u=n.length>0?lt(n).parameters:{};i=new Ht(n,u,Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,je(t),r,t.component,t,Ee(e),Le(e)+n.length,Fe(t))}else{var c=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new De;return{consumedSegments:[],lastChild:0,parameters:{}}}var r=(e.matcher||nt)(n,t,e);if(!r)throw new De;var i={};dt(r.posParams,function(t,e){i[e]=t.path});var o=r.consumed.length>0?Object(a.__assign)({},i,r.consumed[r.consumed.length-1].parameters):i;return{consumedSegments:r.consumed,lastChild:r.consumed.length,parameters:o}}(e,t,n);o=c.consumedSegments,s=n.slice(c.lastChild),i=new Ht(o,c.parameters,Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,je(t),r,t.component,t,Ee(e),Le(e)+o.length,Fe(t))}var l=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),d=Pe(e,o,s,l,this.relativeLinkResolution),p=d.segmentGroup,f=d.slicedSegments;if(0===f.length&&p.hasChildren()){var h=this.processChildren(l,p);return[new qt(i,h)]}if(0===l.length&&0===f.length)return[new qt(i,[])];var g=this.processSegment(l,p,f,X);return[new qt(i,g)]},t}();function Ee(t){for(var e=t;e._sourceSegment;)e=e._sourceSegment;return e}function Le(t){for(var e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;e._sourceSegment;)n+=(e=e._sourceSegment)._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Pe(t,e,n,r,i){if(n.length>0&&function(t,e,n){return r.some(function(n){return Me(t,e,n)&&qe(n)!==X})}(t,n)){var o=new gt(e,function(t,e,n,r){var i,o,s={};s[X]=r,r._sourceSegment=t,r._segmentIndexShift=e.length;try{for(var u=Object(a.__values)(n),c=u.next();!c.done;c=u.next()){var l=c.value;if(""===l.path&&qe(l)!==X){var d=new gt([],{});d._sourceSegment=t,d._segmentIndexShift=e.length,s[qe(l)]=d}}}catch(p){i={error:p}}finally{try{c&&!c.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}return s}(t,e,r,new gt(n,t.children)));return o._sourceSegment=t,o._segmentIndexShift=e.length,{segmentGroup:o,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return r.some(function(n){return Me(t,e,n)})}(t,n)){var s=new gt(t.segments,function(t,e,n,r,i,o){var s,u,c={};try{for(var l=Object(a.__values)(r),d=l.next();!d.done;d=l.next()){var p=d.value;if(Me(t,n,p)&&!i[qe(p)]){var f=new gt([],{});f._sourceSegment=t,f._segmentIndexShift="legacy"===o?t.segments.length:e.length,c[qe(p)]=f}}}catch(h){s={error:h}}finally{try{d&&!d.done&&(u=l.return)&&u.call(l)}finally{if(s)throw s.error}}return Object(a.__assign)({},i,c)}(t,e,n,r,t.children,i));return s._sourceSegment=t,s._segmentIndexShift=e.length,{segmentGroup:s,slicedSegments:n}}var u=new gt(t.segments,t.children);return u._sourceSegment=t,u._segmentIndexShift=e.length,{segmentGroup:u,slicedSegments:n}}function Me(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function qe(t){return t.outlet||X}function je(t){return t.data||{}}function Fe(t){return t.resolve||{}}function ze(t,e,n,a){var r=Te(t,e,a);return pt(r.resolve?r.resolve(e,n):r(e,n))}function Ge(t){return function(e){return e.pipe(Object(T.a)(function(e){var n=t(e);return n?Object(s.a)(n).pipe(Object(g.a)(function(){return e})):Object(s.a)([e])}))}}var Ye=function(){return function(){}}(),He=function(){function t(){}return t.prototype.shouldDetach=function(t){return!1},t.prototype.store=function(t,e){},t.prototype.shouldAttach=function(t){return!1},t.prototype.retrieve=function(t){return null},t.prototype.shouldReuseRoute=function(t,e){return t.routeConfig===e.routeConfig},t}(),Ve=new i.InjectionToken("ROUTES"),Be=function(){function t(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}return t.prototype.load=function(t,e){var n=this;return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(g.a)(function(a){n.onLoadEndListener&&n.onLoadEndListener(e);var r=a.create(t);return new at(ct(r.injector.get(Ve)).map(st),r)}))},t.prototype.loadModuleFactory=function(t){var e=this;return"string"==typeof t?Object(s.a)(this.loader.load(t)):pt(t()).pipe(Object(x.a)(function(t){return t instanceof i.NgModuleFactory?Object(o.a)(t):Object(s.a)(e.compiler.compileModuleAsync(t))}))},t}(),Ue=function(){return function(){}}(),We=function(){function t(){}return t.prototype.shouldProcessUrl=function(t){return!0},t.prototype.extract=function(t){return t},t.prototype.merge=function(t,e){return t},t}();function Ke(t){throw t}function $e(t,e,n){return e.parse("/")}function Ze(t,e){return Object(o.a)(null)}var Xe=function(){function t(t,e,n,a,r,o,s,c){var l=this;this.rootComponentType=t,this.urlSerializer=e,this.rootContexts=n,this.location=a,this.config=c,this.lastSuccessfulNavigation=null,this.currentNavigation=null,this.navigationId=0,this.isNgZoneEnabled=!1,this.events=new f.a,this.errorHandler=Ke,this.malformedUriErrorHandler=$e,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:Ze,afterPreactivation:Ze},this.urlHandlingStrategy=new We,this.routeReuseStrategy=new He,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=r.get(i.NgModuleRef),this.console=r.get(i["\u0275Console"]);var d=r.get(i.NgZone);this.isNgZoneEnabled=d instanceof i.NgZone,this.resetConfig(c),this.currentUrlTree=new ht(new gt([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Be(o,s,function(t){return l.triggerEvent(new H(t))},function(t){return l.triggerEvent(new V(t))}),this.routerState=zt(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()}return t.prototype.setupNavigations=function(t){var e=this,n=this.events;return t.pipe(Object(k.a)(function(t){return 0!==t.id}),Object(g.a)(function(t){return Object(a.__assign)({},t,{extractedUrl:e.urlHandlingStrategy.extract(t.rawUrl)})}),Object(R.a)(function(t){e.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:e.lastSuccessfulNavigation?Object(a.__assign)({},e.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(T.a)(function(t){var r,i,c,l=!1,d=!1;return Object(o.a)(t).pipe(Object(T.a)(function(t){var r,i,s,u,c=!e.navigated||t.extractedUrl.toString()!==e.browserUrlTree.toString();if(("reload"===e.onSameUrlNavigation||c)&&e.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(o.a)(t).pipe(Object(T.a)(function(t){var a=e.transitions.getValue();return n.next(new L(t.id,e.serializeUrl(t.extractedUrl),t.source,t.restoredState)),a!==e.transitions.getValue()?h.a:[t]}),Object(T.a)(function(t){return Promise.resolve(t)}),(r=e.ngModule.injector,i=e.configLoader,s=e.urlSerializer,u=e.config,function(t){return t.pipe(Object(T.a)(function(t){return function(e,n,a,r,i){return new ge(e,n,a,t.extractedUrl,i).apply()}(r,i,s,0,u).pipe(Object(g.a)(function(e){return Object(a.__assign)({},t,{urlAfterRedirects:e})}))}))}),Object(R.a)(function(t){e.currentNavigation=Object(a.__assign)({},e.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,n,r,i,o){return function(r){return r.pipe(Object(x.a)(function(r){return function(t,e,n,a,r,i){return void 0===r&&(r="emptyOnly"),void 0===i&&(i="legacy"),new Ae(t,e,n,a,r,i).recognize()}(t,n,r.urlAfterRedirects,(s=r.urlAfterRedirects,e.serializeUrl(s)),i,o).pipe(Object(g.a)(function(t){return Object(a.__assign)({},r,{targetSnapshot:t})}));var s}))}}(e.rootComponentType,e.config,0,e.paramsInheritanceStrategy,e.relativeLinkResolution),Object(R.a)(function(t){"eager"===e.urlUpdateStrategy&&(t.extras.skipLocationChange||e.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id),e.browserUrlTree=t.urlAfterRedirects)}),Object(R.a)(function(t){var a=new j(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);n.next(a)}));if(c&&e.rawUrlTree&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){var l=t.extractedUrl,d=t.source,p=t.restoredState,f=t.extras,m=new L(t.id,e.serializeUrl(l),d,p);n.next(m);var b=zt(l,e.rootComponentType).snapshot;return Object(o.a)(Object(a.__assign)({},t,{targetSnapshot:b,urlAfterRedirects:l,extras:Object(a.__assign)({},f,{skipLocationChange:!1,replaceUrl:!1})}))}return e.rawUrlTree=t.rawUrl,t.resolve(null),h.a}),Ge(function(t){var n=t.extras;return e.hooks.beforePreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})}),Object(R.a)(function(t){var n=new F(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}),Object(g.a)(function(t){return Object(a.__assign)({},t,{guards:(n=t.targetSnapshot,r=t.currentSnapshot,i=e.rootContexts,o=n._root,we(o,r?r._root:null,i,[o.value]))});var n,r,i,o}),function(t,e){return function(n){return n.pipe(Object(x.a)(function(n){var r=n.targetSnapshot,i=n.currentSnapshot,u=n.guards,c=u.canActivateChecks,l=u.canDeactivateChecks;return 0===l.length&&0===c.length?Object(o.a)(Object(a.__assign)({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(x.a)(function(t){return function(t,e,n,a,r){var i=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!i||0===i.length)return Object(o.a)(!0);var s=i.map(function(i){var o,s=Te(i,e,r);if(function(t){return t&&ue(t.canDeactivate)}(s))o=pt(s.canDeactivate(t,e,n,a));else{if(!ue(s))throw new Error("Invalid CanDeactivate guard");o=pt(s(t,e,n,a))}return o.pipe(Object(v.a)())});return Object(o.a)(s).pipe(ke())}(t.component,t.route,n,e,a)}),Object(v.a)(function(t){return!0!==t},!0))}(l,r,i,t).pipe(Object(x.a)(function(n){return n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(C.a)(function(e){return Object(s.a)([Ie(e.route.parent,a),Ce(e.route,a),Ne(t,e.path,n),Re(t,e.route,n)]).pipe(Object(m.a)(),Object(v.a)(function(t){return!0!==t},!0))}),Object(v.a)(function(t){return!0!==t},!0))}(r,c,t,e):Object(o.a)(n)}),Object(g.a)(function(t){return Object(a.__assign)({},n,{guardsResult:t})}))}))}}(e.ngModule.injector,function(t){return e.triggerEvent(t)}),Object(R.a)(function(t){if(ce(t.guardsResult)){var n=et('Redirecting to "'+e.serializeUrl(t.guardsResult)+'"');throw n.url=t.guardsResult,n}}),Object(R.a)(function(t){var n=new z(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);e.triggerEvent(n)}),Object(k.a)(function(t){if(!t.guardsResult){e.resetUrlToCurrentUrlTree();var a=new M(t.id,e.serializeUrl(t.extractedUrl),"");return n.next(a),t.resolve(!1),!1}return!0}),Ge(function(t){if(t.guards.canActivateChecks.length)return Object(o.a)(t).pipe(Object(R.a)(function(t){var n=new G(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}),(n=e.paramsInheritanceStrategy,r=e.ngModule.injector,function(t){return t.pipe(Object(x.a)(function(t){var e=t.targetSnapshot,i=t.guards.canActivateChecks;return i.length?Object(s.a)(i).pipe(Object(C.a)(function(t){return function(t,n,r,i){return function(t,e,n,a){var r=Object.keys(t);if(0===r.length)return Object(o.a)({});if(1===r.length){var i=r[0];return ze(t[i],e,n,a).pipe(Object(g.a)(function(t){var e;return(e={})[i]=t,e}))}var u={};return Object(s.a)(r).pipe(Object(x.a)(function(r){return ze(t[r],e,n,a).pipe(Object(g.a)(function(t){return u[r]=t,t}))})).pipe(Object(b.a)(),Object(g.a)(function(){return u}))}(t._resolve,t,e,i).pipe(Object(g.a)(function(e){return t._resolvedData=e,t.data=Object(a.__assign)({},t.data,Yt(t,r).resolve),null}))}(t.route,0,n,r)}),Object(I.a)(function(t,e){return t}),Object(g.a)(function(e){return t})):Object(o.a)(t)}))}),Object(R.a)(function(t){var n=new Y(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}));var n,r}),Ge(function(t){var n=t.extras;return e.hooks.afterPreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})}),Object(g.a)(function(t){var n,r,i,o=(i=function t(e,n,r){if(r&&e.shouldReuseRoute(n.value,r.value.snapshot)){(l=r.value)._futureSnapshot=n.value;var i=function(e,n,r){return n.children.map(function(n){var i,o;try{for(var s=Object(a.__values)(r.children),u=s.next();!u.done;u=s.next()){var c=u.value;if(e.shouldReuseRoute(c.value.snapshot,n.value))return t(e,n,c)}}catch(l){i={error:l}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return t(e,n)})}(e,n,r);return new qt(l,i)}var o=e.retrieve(n.value);if(o){var s=o.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(var a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,s),s}var c,l=new Gt(new u.a((c=n.value).url),new u.a(c.params),new u.a(c.queryParams),new u.a(c.fragment),new u.a(c.data),c.outlet,c.component,c);return i=n.children.map(function(n){return t(e,n)}),new qt(l,i)}(e.routeReuseStrategy,(n=t.targetSnapshot)._root,(r=t.currentRouterState)?r._root:void 0),new Ft(i,n));return Object(a.__assign)({},t,{targetRouterState:o})}),Object(R.a)(function(t){e.currentUrlTree=t.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(e.currentUrlTree,t.rawUrl),e.routerState=t.targetRouterState,"deferred"===e.urlUpdateStrategy&&(t.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),e.browserUrlTree=t.urlAfterRedirects)}),(r=e.rootContexts,i=e.routeReuseStrategy,c=function(t){return e.triggerEvent(t)},Object(g.a)(function(t){return new oe(i,t.targetRouterState,t.currentRouterState,c).activate(r),t})),Object(R.a)({next:function(){l=!0},complete:function(){l=!0}}),Object(N.a)(function(){if(!l&&!d){e.resetUrlToCurrentUrlTree();var a=new M(t.id,e.serializeUrl(t.extractedUrl),"Navigation ID "+t.id+" is not equal to the current navigation id "+e.navigationId);n.next(a),t.resolve(!1)}e.currentNavigation=null}),Object(y.a)(function(a){if(d=!0,(s=a)&&s[tt]){var r=ce(a.url);r||(e.navigated=!0,e.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));var i=new M(t.id,e.serializeUrl(t.extractedUrl),a.message);n.next(i),t.resolve(!1),r&&e.navigateByUrl(a.url)}else{e.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);var o=new q(t.id,e.serializeUrl(t.extractedUrl),a);n.next(o);try{t.resolve(e.errorHandler(a))}catch(u){t.reject(u)}}var s;return h.a}))}))},t.prototype.resetRootComponentType=function(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType},t.prototype.getTransition=function(){return this.transitions.value},t.prototype.setTransition=function(t){this.transitions.next(Object(a.__assign)({},this.getTransition(),t))},t.prototype.initialNavigation=function(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})},t.prototype.setUpLocationChangeListener=function(){var t=this;this.locationSubscription||(this.locationSubscription=this.location.subscribe(function(e){var n=t.parseUrl(e.url),a="popstate"===e.type?"popstate":"hashchange",r=e.state&&e.state.navigationId?e.state:null;setTimeout(function(){t.scheduleNavigation(n,a,r,{replaceUrl:!0})},0)}))},Object.defineProperty(t.prototype,"url",{get:function(){return this.serializeUrl(this.currentUrlTree)},enumerable:!0,configurable:!0}),t.prototype.getCurrentNavigation=function(){return this.currentNavigation},t.prototype.triggerEvent=function(t){this.events.next(t)},t.prototype.resetConfig=function(t){rt(t),this.config=t.map(st),this.navigated=!1,this.lastSuccessfulId=-1},t.prototype.ngOnDestroy=function(){this.dispose()},t.prototype.dispose=function(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)},t.prototype.createUrlTree=function(t,e){void 0===e&&(e={});var n=e.relativeTo,r=e.queryParams,o=e.fragment,s=e.preserveQueryParams,u=e.queryParamsHandling,c=e.preserveFragment;Object(i.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");var l=n||this.routerState.root,d=c?this.currentUrlTree.fragment:o,p=null;if(u)switch(u){case"merge":p=Object(a.__assign)({},this.currentUrlTree.queryParams,r);break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=r||null}else p=s?this.currentUrlTree.queryParams:r||null;return null!==p&&(p=this.removeEmptyProps(p)),function(t,e,n,r,i){if(0===n.length)return Zt(e.root,e.root,e,r,i);var o=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new Xt(!0,0,t);var e=0,n=!1,r=t.reduce(function(t,r,i){if("object"==typeof r&&null!=r){if(r.outlets){var o={};return dt(r.outlets,function(t,e){o[e]="string"==typeof t?t.split("/"):t}),Object(a.__spread)(t,[{outlets:o}])}if(r.segmentPath)return Object(a.__spread)(t,[r.segmentPath])}return"string"!=typeof r?Object(a.__spread)(t,[r]):0===i?(r.split("/").forEach(function(a,r){0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):Object(a.__spread)(t,[r])},[]);return new Xt(n,e,r)}(n);if(o.toRoot())return Zt(e.root,new gt([],{}),e,r,i);var s=function(t,n,a){if(t.isAbsolute)return new Jt(e.root,!0,0);if(-1===a.snapshot._lastPathIndex)return new Jt(a.snapshot._urlSegment,!0,0);var r=$t(t.commands[0])?0:1;return function(e,n,i){for(var o=a.snapshot._urlSegment,s=a.snapshot._lastPathIndex+r,u=t.numberOfDoubleDots;u>s;){if(u-=s,!(o=o.parent))throw new Error("Invalid number of '../'");s=o.segments.length}return new Jt(o,!1,s-u)}()}(o,0,t),u=s.processChildren?ee(s.segmentGroup,s.index,o.commands):te(s.segmentGroup,s.index,o.commands);return Zt(s.segmentGroup,u,e,r,i)}(l,this.currentUrlTree,t,p,d)},t.prototype.navigateByUrl=function(t,e){void 0===e&&(e={skipLocationChange:!1}),Object(i.isDevMode)()&&this.isNgZoneEnabled&&!i.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");var n=ce(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)},t.prototype.navigate=function(t,e){return void 0===e&&(e={skipLocationChange:!1}),function(t){for(var e=0;e<t.length;e++){var 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)},t.prototype.serializeUrl=function(t){return this.urlSerializer.serialize(t)},t.prototype.parseUrl=function(t){var e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e},t.prototype.isActive=function(t,e){if(ce(t))return ft(this.currentUrlTree,t,e);var n=this.parseUrl(t);return ft(this.currentUrlTree,n,e)},t.prototype.removeEmptyProps=function(t){return Object.keys(t).reduce(function(e,n){var a=t[n];return null!=a&&(e[n]=a),e},{})},t.prototype.processNavigations=function(){var t=this;this.navigations.subscribe(function(e){t.navigated=!0,t.lastSuccessfulId=e.id,t.events.next(new P(e.id,t.serializeUrl(e.extractedUrl),t.serializeUrl(t.currentUrlTree))),t.lastSuccessfulNavigation=t.currentNavigation,t.currentNavigation=null,e.resolve(!0)},function(e){t.console.warn("Unhandled Navigation Error: ")})},t.prototype.scheduleNavigation=function(t,e,n,a){var 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);var i=null,o=null,s=new Promise(function(t,e){i=t,o=e}),u=++this.navigationId;return this.setTransition({id:u,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:o,promise:s,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),s.catch(function(t){return Promise.reject(t)})},t.prototype.setBrowserUrl=function(t,e,n,r){var i=this.urlSerializer.serialize(t);r=r||{},this.location.isCurrentPathEqualTo(i)||e?this.location.replaceState(i,"",Object(a.__assign)({},r,{navigationId:n})):this.location.go(i,"",Object(a.__assign)({},r,{navigationId:n}))},t.prototype.resetStateAndUrl=function(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()},t.prototype.resetUrlToCurrentUrlTree=function(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})},t}(),Je=function(){function t(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}return Object.defineProperty(t.prototype,"routerLink",{set:function(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"preserveQueryParams",{set:function(t){Object(i.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t},enumerable:!0,configurable:!0}),t.prototype.onClick=function(){var t={skipLocationChange:tn(this.skipLocationChange),replaceUrl:tn(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0},Object.defineProperty(t.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:tn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:tn(this.preserveFragment)})},enumerable:!0,configurable:!0}),t}(),Qe=function(){function t(t,e,n){var a=this;this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(function(t){t instanceof P&&a.updateTargetUrlAndHref()})}return Object.defineProperty(t.prototype,"routerLink",{set:function(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"preserveQueryParams",{set:function(t){Object(i.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(t){this.updateTargetUrlAndHref()},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.onClick=function(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;var r={skipLocationChange:tn(this.skipLocationChange),replaceUrl:tn(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1},t.prototype.updateTargetUrlAndHref=function(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))},Object.defineProperty(t.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:tn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:tn(this.preserveFragment)})},enumerable:!0,configurable:!0}),Object(a.__decorate)([Object(i.HostBinding)("attr.target"),Object(i.Input)(),Object(a.__metadata)("design:type",String)],t.prototype,"target",void 0),t}();function tn(t){return""===t||!!t}var en=function(){function t(t,e,n,a){var r=this;this.router=t,this.element=e,this.renderer=n,this.cdr=a,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(function(t){t instanceof P&&r.update()})}return t.prototype.ngAfterContentInit=function(){var t=this;this.links.changes.subscribe(function(e){return t.update()}),this.linksWithHrefs.changes.subscribe(function(e){return t.update()}),this.update()},Object.defineProperty(t.prototype,"routerLinkActive",{set:function(t){var e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(function(t){return!!t})},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(t){this.update()},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.update=function(){var t=this;this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(function(){var e=t.hasActiveLinks();t.isActive!==e&&(t.isActive=e,t.classes.forEach(function(n){e?t.renderer.addClass(t.element.nativeElement,n):t.renderer.removeClass(t.element.nativeElement,n)}))})},t.prototype.isLinkActive=function(t){var e=this;return function(n){return t.isActive(n.urlTree,e.routerLinkActiveOptions.exact)}},t.prototype.hasActiveLinks=function(){return this.links.some(this.isLinkActive(this.router))||this.linksWithHrefs.some(this.isLinkActive(this.router))},t}(),nn=function(){return function(){this.outlet=null,this.route=null,this.resolver=null,this.children=new an,this.attachRef=null}}(),an=function(){function t(){this.contexts=new Map}return t.prototype.onChildOutletCreated=function(t,e){var n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)},t.prototype.onChildOutletDestroyed=function(t){var e=this.getContext(t);e&&(e.outlet=null)},t.prototype.onOutletDeactivated=function(){var t=this.contexts;return this.contexts=new Map,t},t.prototype.onOutletReAttached=function(t){this.contexts=t},t.prototype.getOrCreateContext=function(t){var e=this.getContext(t);return e||(e=new nn,this.contexts.set(t,e)),e},t.prototype.getContext=function(t){return this.contexts.get(t)||null},t}(),rn=function(){function t(t,e,n,a,r){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=r,this.activated=null,this._activatedRoute=null,this.activateEvents=new i.EventEmitter,this.deactivateEvents=new i.EventEmitter,this.name=a||X,t.onChildOutletCreated(this.name,this)}return t.prototype.ngOnDestroy=function(){this.parentContexts.onChildOutletDestroyed(this.name)},t.prototype.ngOnInit=function(){if(!this.activated){var t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}},Object.defineProperty(t.prototype,"isActivated",{get:function(){return!!this.activated},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"component",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedRoute",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedRouteData",{get:function(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}},enumerable:!0,configurable:!0}),t.prototype.detach=function(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();var t=this.activated;return this.activated=null,this._activatedRoute=null,t},t.prototype.attach=function(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)},t.prototype.deactivate=function(){if(this.activated){var t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}},t.prototype.activateWith=function(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;var n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new on(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)},t}(),on=function(){function t(t,e,n){this.route=t,this.childContexts=e,this.parent=n}return t.prototype.get=function(t,e){return t===Gt?this.route:t===an?this.childContexts:this.parent.get(t,e)},t}(),sn=function(){return function(){}}(),un=function(){function t(){}return t.prototype.preload=function(t,e){return e().pipe(Object(y.a)(function(){return Object(o.a)(null)}))},t}(),cn=function(){function t(){}return t.prototype.preload=function(t,e){return Object(o.a)(null)},t}(),ln=function(){function t(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Be(e,n,function(e){return t.triggerEvent(new H(e))},function(e){return t.triggerEvent(new V(e))})}return t.prototype.setUpPreloading=function(){var t=this;this.subscription=this.router.events.pipe(Object(k.a)(function(t){return t instanceof P}),Object(C.a)(function(){return t.preload()})).subscribe(function(){})},t.prototype.preload=function(){var t=this.injector.get(i.NgModuleRef);return this.processRoutes(t,this.router.config)},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.processRoutes=function(t,e){var n,r,i=[];try{for(var o=Object(a.__values)(e),u=o.next();!u.done;u=o.next()){var c=u.value;if(c.loadChildren&&!c.canLoad&&c._loadedConfig){var l=c._loadedConfig;i.push(this.processRoutes(l.module,l.routes))}else c.loadChildren&&!c.canLoad?i.push(this.preloadConfig(t,c)):c.children&&i.push(this.processRoutes(t,c.children))}}catch(d){n={error:d}}finally{try{u&&!u.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return Object(s.a)(i).pipe(Object(D.a)(),Object(g.a)(function(t){}))},t.prototype.preloadConfig=function(t,e){var n=this;return this.preloadingStrategy.preload(e,function(){return n.loader.load(t.injector,e).pipe(Object(x.a)(function(t){return e._loadedConfig=t,n.processRoutes(t.module,t.routes)}))})},t}(),dn=function(){function t(t,e,n){void 0===n&&(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"}return t.prototype.init=function(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()},t.prototype.createScrollEvents=function(){var t=this;return this.router.events.subscribe(function(e){e instanceof L?(t.store[t.lastId]=t.viewportScroller.getScrollPosition(),t.lastSource=e.navigationTrigger,t.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof P&&(t.lastId=e.id,t.scheduleScrollEvent(e,t.router.parseUrl(e.urlAfterRedirects).fragment))})},t.prototype.consumeScrollEvents=function(){var t=this;return this.router.events.subscribe(function(e){e instanceof $&&(e.position?"top"===t.options.scrollPositionRestoration?t.viewportScroller.scrollToPosition([0,0]):"enabled"===t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===t.options.anchorScrolling?t.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition([0,0]))})},t.prototype.scheduleScrollEvent=function(t,e){this.router.triggerEvent(new $(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))},t.prototype.ngOnDestroy=function(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()},t}(),pn=new i.InjectionToken("ROUTER_CONFIGURATION"),fn=new i.InjectionToken("ROUTER_FORROOT_GUARD"),hn=[r.Location,{provide:vt,useClass:xt},{provide:Xe,useFactory:_n,deps:[i.ApplicationRef,vt,an,r.Location,i.Injector,i.NgModuleFactoryLoader,i.Compiler,Ve,pn,[Ue,new i.Optional],[Ye,new i.Optional]]},an,{provide:Gt,useFactory:Tn,deps:[Xe]},{provide:i.NgModuleFactoryLoader,useClass:i.SystemJsNgModuleLoader},ln,cn,un,{provide:pn,useValue:{enableTracing:!1}}];function gn(){return new i.NgProbeToken("Router",Xe)}var mn=function(){function t(t,e){}var e;return e=t,t.forRoot=function(t,n){return{ngModule:e,providers:[hn,xn(t),{provide:fn,useFactory:vn,deps:[[Xe,new i.Optional,new i.SkipSelf]]},{provide:pn,useValue:n||{}},{provide:r.LocationStrategy,useFactory:yn,deps:[r.PlatformLocation,[new i.Inject(r.APP_BASE_HREF),new i.Optional],pn]},{provide:dn,useFactory:bn,deps:[Xe,r.ViewportScroller,pn]},{provide:sn,useExisting:n&&n.preloadingStrategy?n.preloadingStrategy:cn},{provide:i.NgProbeToken,multi:!0,useFactory:gn},[wn,{provide:i.APP_INITIALIZER,multi:!0,useFactory:Sn,deps:[wn]},{provide:kn,useFactory:On,deps:[wn]},{provide:i.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:kn}]]}},t.forChild=function(t){return{ngModule:e,providers:[xn(t)]}},t}();function bn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new dn(t,e,n)}function yn(t,e,n){return void 0===n&&(n={}),n.useHash?new r.HashLocationStrategy(t,e):new r.PathLocationStrategy(t,e)}function vn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function xn(t){return[{provide:i.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Ve,multi:!0,useValue:t}]}function _n(t,e,n,a,r,i,o,s,u,c,l){void 0===u&&(u={});var d=new Xe(null,e,n,a,r,i,o,ct(s));if(c&&(d.urlHandlingStrategy=c),l&&(d.routeReuseStrategy=l),u.errorHandler&&(d.errorHandler=u.errorHandler),u.malformedUriErrorHandler&&(d.malformedUriErrorHandler=u.malformedUriErrorHandler),u.enableTracing){var p=Object(A["\u0275getDOM"])();d.events.subscribe(function(t){p.logGroup("Router Event: "+t.constructor.name),p.log(t.toString()),p.log(t),p.logGroupEnd()})}return u.onSameUrlNavigation&&(d.onSameUrlNavigation=u.onSameUrlNavigation),u.paramsInheritanceStrategy&&(d.paramsInheritanceStrategy=u.paramsInheritanceStrategy),u.urlUpdateStrategy&&(d.urlUpdateStrategy=u.urlUpdateStrategy),u.relativeLinkResolution&&(d.relativeLinkResolution=u.relativeLinkResolution),d}function Tn(t){return t.routerState.root}var wn=function(){function t(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new f.a}return t.prototype.appInitializer=function(){var t=this;return this.injector.get(r.LOCATION_INITIALIZED,Promise.resolve(null)).then(function(){var e=null,n=new Promise(function(t){return e=t}),a=t.injector.get(Xe),r=t.injector.get(pn);if(t.isLegacyDisabled(r)||t.isLegacyEnabled(r))e(!0);else if("disabled"===r.initialNavigation)a.setUpLocationChangeListener(),e(!0);else{if("enabled"!==r.initialNavigation)throw new Error("Invalid initialNavigation options: '"+r.initialNavigation+"'");a.hooks.afterPreactivation=function(){return t.initNavigation?Object(o.a)(null):(t.initNavigation=!0,e(!0),t.resultOfPreactivationDone)},a.initialNavigation()}return n})},t.prototype.bootstrapListener=function(t){var e=this.injector.get(pn),n=this.injector.get(ln),a=this.injector.get(dn),r=this.injector.get(Xe),o=this.injector.get(i.ApplicationRef);t===o.components[0]&&(this.isLegacyEnabled(e)?r.initialNavigation():this.isLegacyDisabled(e)&&r.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),r.resetRootComponentType(o.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())},t.prototype.isLegacyEnabled=function(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation},t.prototype.isLegacyDisabled=function(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation},t}();function Sn(t){return t.appInitializer.bind(t)}function On(t){return t.bootstrapListener.bind(t)}var kn=new i.InjectionToken("Router Initializer")},ZYjt:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_c",function(){return It}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_b",function(){return Ct}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_a",function(){return kt}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_k",function(){return d}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_d",function(){return Nt}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_i",function(){return w}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_h",function(){return T}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_e",function(){return At}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_f",function(){return Ht}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_j",function(){return N}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_g",function(){return L}),n.d(e,"BrowserModule",function(){return Rt}),n.d(e,"platformBrowser",function(){return St}),n.d(e,"Meta",function(){return Dt}),n.d(e,"Title",function(){return Et}),n.d(e,"disableDebugTools",function(){return Ft}),n.d(e,"enableDebugTools",function(){return jt}),n.d(e,"BrowserTransferStateModule",function(){return Vt}),n.d(e,"TransferState",function(){return Yt}),n.d(e,"makeStateKey",function(){return Gt}),n.d(e,"By",function(){return Bt}),n.d(e,"DOCUMENT",function(){return y}),n.d(e,"EVENT_MANAGER_PLUGINS",function(){return A}),n.d(e,"EventManager",function(){return E}),n.d(e,"HAMMER_GESTURE_CONFIG",function(){return st}),n.d(e,"HAMMER_LOADER",function(){return ut}),n.d(e,"HammerGestureConfig",function(){return ct}),n.d(e,"DomSanitizer",function(){return ht}),n.d(e,"VERSION",function(){return Ut}),n.d(e,"\u0275BROWSER_SANITIZATION_PROVIDERS",function(){return wt}),n.d(e,"\u0275INTERNAL_BROWSER_PLATFORM_PROVIDERS",function(){return Tt}),n.d(e,"\u0275initDomAdapter",function(){return Ot}),n.d(e,"\u0275BrowserDomAdapter",function(){return m}),n.d(e,"\u0275BrowserPlatformLocation",function(){return x}),n.d(e,"\u0275TRANSITION_ID",function(){return _}),n.d(e,"\u0275BrowserGetTestability",function(){return S}),n.d(e,"\u0275escapeHtml",function(){return zt}),n.d(e,"\u0275ELEMENT_PROBE_PROVIDERS",function(){return D}),n.d(e,"\u0275DomAdapter",function(){return l}),n.d(e,"\u0275getDOM",function(){return s}),n.d(e,"\u0275setRootDomAdapter",function(){return u}),n.d(e,"\u0275DomRendererFactory2",function(){return B}),n.d(e,"\u0275NAMESPACE_URIS",function(){return q}),n.d(e,"\u0275flattenStyles",function(){return H}),n.d(e,"\u0275shimContentAttribute",function(){return G}),n.d(e,"\u0275shimHostAttribute",function(){return Y}),n.d(e,"\u0275DomEventsPlugin",function(){return it}),n.d(e,"\u0275HammerGesturesPlugin",function(){return lt}),n.d(e,"\u0275KeyEventsPlugin",function(){return ft}),n.d(e,"\u0275DomSharedStylesHost",function(){return M}),n.d(e,"\u0275SharedStylesHost",function(){return P}),n.d(e,"\u0275DomSanitizerImpl",function(){return gt});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=null;function s(){return o}function u(t){o||(o=t)}var c,l=function(){function t(){this.resourceLoaderType=null}return Object.defineProperty(t.prototype,"attrToPropMap",{get:function(){return this._attrToPropMap},set:function(t){this._attrToPropMap=t},enumerable:!0,configurable:!0}),t}(),d=function(t){function e(){var e=t.call(this)||this;e._animationPrefix=null,e._transitionEnd=null;try{var n=e.createElement("div",document);if(null!=e.getStyle(n,"animationName"))e._animationPrefix="";else for(var a=["Webkit","Moz","O","ms"],r=0;r<a.length;r++)if(null!=e.getStyle(n,a[r]+"AnimationName")){e._animationPrefix="-"+a[r].toLowerCase()+"-";break}var i={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(i).forEach(function(t){null!=e.getStyle(n,t)&&(e._transitionEnd=i[t])})}catch(o){e._animationPrefix=null,e._transitionEnd=null}return e}return Object(a.__extends)(e,t),e.prototype.getDistributedNodes=function(t){return t.getDistributedNodes()},e.prototype.resolveAndSetHref=function(t,e,n){t.href=null==n?e:e+"/../"+n},e.prototype.supportsDOMEvents=function(){return!0},e.prototype.supportsNativeShadowDOM=function(){return"function"==typeof document.body.createShadowRoot},e.prototype.getAnimationPrefix=function(){return this._animationPrefix?this._animationPrefix:""},e.prototype.getTransitionEnd=function(){return this._transitionEnd?this._transitionEnd:""},e.prototype.supportsAnimation=function(){return null!=this._animationPrefix&&null!=this._transitionEnd},e}(l),p={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},f={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},h={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"};i["\u0275global"].Node&&(c=i["\u0275global"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))});var g,m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.parse=function(t){throw new Error("parse not implemented")},e.makeCurrent=function(){u(new e)},e.prototype.hasProperty=function(t,e){return e in t},e.prototype.setProperty=function(t,e,n){t[e]=n},e.prototype.getProperty=function(t,e){return t[e]},e.prototype.invoke=function(t,e,n){var r;(r=t)[e].apply(r,Object(a.__spread)(n))},e.prototype.logError=function(t){window.console&&(console.error?console.error(t):console.log(t))},e.prototype.log=function(t){window.console&&window.console.log&&window.console.log(t)},e.prototype.logGroup=function(t){window.console&&window.console.group&&window.console.group(t)},e.prototype.logGroupEnd=function(){window.console&&window.console.groupEnd&&window.console.groupEnd()},Object.defineProperty(e.prototype,"attrToPropMap",{get:function(){return p},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return c.call(t,e)},e.prototype.querySelector=function(t,e){return t.querySelector(e)},e.prototype.querySelectorAll=function(t,e){return t.querySelectorAll(e)},e.prototype.on=function(t,e,n){t.addEventListener(e,n,!1)},e.prototype.onAndCancel=function(t,e,n){return t.addEventListener(e,n,!1),function(){t.removeEventListener(e,n,!1)}},e.prototype.dispatchEvent=function(t,e){t.dispatchEvent(e)},e.prototype.createMouseEvent=function(t){var e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e},e.prototype.createEvent=function(t){var e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e},e.prototype.preventDefault=function(t){t.preventDefault(),t.returnValue=!1},e.prototype.isPrevented=function(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue},e.prototype.getInnerHTML=function(t){return t.innerHTML},e.prototype.getTemplateContent=function(t){return"content"in t&&this.isTemplateElement(t)?t.content:null},e.prototype.getOuterHTML=function(t){return t.outerHTML},e.prototype.nodeName=function(t){return t.nodeName},e.prototype.nodeValue=function(t){return t.nodeValue},e.prototype.type=function(t){return t.type},e.prototype.content=function(t){return this.hasProperty(t,"content")?t.content:t},e.prototype.firstChild=function(t){return t.firstChild},e.prototype.nextSibling=function(t){return t.nextSibling},e.prototype.parentElement=function(t){return t.parentNode},e.prototype.childNodes=function(t){return t.childNodes},e.prototype.childNodesAsList=function(t){for(var e=t.childNodes,n=new Array(e.length),a=0;a<e.length;a++)n[a]=e[a];return n},e.prototype.clearNodes=function(t){for(;t.firstChild;)t.removeChild(t.firstChild)},e.prototype.appendChild=function(t,e){t.appendChild(e)},e.prototype.removeChild=function(t,e){t.removeChild(e)},e.prototype.replaceChild=function(t,e,n){t.replaceChild(e,n)},e.prototype.remove=function(t){return t.parentNode&&t.parentNode.removeChild(t),t},e.prototype.insertBefore=function(t,e,n){t.insertBefore(n,e)},e.prototype.insertAllBefore=function(t,e,n){n.forEach(function(n){return t.insertBefore(n,e)})},e.prototype.insertAfter=function(t,e,n){t.insertBefore(n,e.nextSibling)},e.prototype.setInnerHTML=function(t,e){t.innerHTML=e},e.prototype.getText=function(t){return t.textContent},e.prototype.setText=function(t,e){t.textContent=e},e.prototype.getValue=function(t){return t.value},e.prototype.setValue=function(t,e){t.value=e},e.prototype.getChecked=function(t){return t.checked},e.prototype.setChecked=function(t,e){t.checked=e},e.prototype.createComment=function(t){return this.getDefaultDocument().createComment(t)},e.prototype.createTemplate=function(t){var e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e},e.prototype.createElement=function(t,e){return(e=e||this.getDefaultDocument()).createElement(t)},e.prototype.createElementNS=function(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)},e.prototype.createTextNode=function(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)},e.prototype.createScriptTag=function(t,e,n){var a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a},e.prototype.createStyleElement=function(t,e){var n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n},e.prototype.createShadowRoot=function(t){return t.createShadowRoot()},e.prototype.getShadowRoot=function(t){return t.shadowRoot},e.prototype.getHost=function(t){return t.host},e.prototype.clone=function(t){return t.cloneNode(!0)},e.prototype.getElementsByClassName=function(t,e){return t.getElementsByClassName(e)},e.prototype.getElementsByTagName=function(t,e){return t.getElementsByTagName(e)},e.prototype.classList=function(t){return Array.prototype.slice.call(t.classList,0)},e.prototype.addClass=function(t,e){t.classList.add(e)},e.prototype.removeClass=function(t,e){t.classList.remove(e)},e.prototype.hasClass=function(t,e){return t.classList.contains(e)},e.prototype.setStyle=function(t,e,n){t.style[e]=n},e.prototype.removeStyle=function(t,e){t.style[e]=""},e.prototype.getStyle=function(t,e){return t.style[e]},e.prototype.hasStyle=function(t,e,n){var a=this.getStyle(t,e)||"";return n?a==n:a.length>0},e.prototype.tagName=function(t){return t.tagName},e.prototype.attributeMap=function(t){for(var e=new Map,n=t.attributes,a=0;a<n.length;a++){var r=n.item(a);e.set(r.name,r.value)}return e},e.prototype.hasAttribute=function(t,e){return t.hasAttribute(e)},e.prototype.hasAttributeNS=function(t,e,n){return t.hasAttributeNS(e,n)},e.prototype.getAttribute=function(t,e){return t.getAttribute(e)},e.prototype.getAttributeNS=function(t,e,n){return t.getAttributeNS(e,n)},e.prototype.setAttribute=function(t,e,n){t.setAttribute(e,n)},e.prototype.setAttributeNS=function(t,e,n,a){t.setAttributeNS(e,n,a)},e.prototype.removeAttribute=function(t,e){t.removeAttribute(e)},e.prototype.removeAttributeNS=function(t,e,n){t.removeAttributeNS(e,n)},e.prototype.templateAwareRoot=function(t){return this.isTemplateElement(t)?this.content(t):t},e.prototype.createHtmlDocument=function(){return document.implementation.createHTMLDocument("fakeTitle")},e.prototype.getDefaultDocument=function(){return document},e.prototype.getBoundingClientRect=function(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}},e.prototype.getTitle=function(t){return t.title},e.prototype.setTitle=function(t,e){t.title=e||""},e.prototype.elementMatches=function(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))},e.prototype.isTemplateElement=function(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName},e.prototype.isTextNode=function(t){return t.nodeType===Node.TEXT_NODE},e.prototype.isCommentNode=function(t){return t.nodeType===Node.COMMENT_NODE},e.prototype.isElementNode=function(t){return t.nodeType===Node.ELEMENT_NODE},e.prototype.hasShadowRoot=function(t){return null!=t.shadowRoot&&t instanceof HTMLElement},e.prototype.isShadowRoot=function(t){return t instanceof DocumentFragment},e.prototype.importIntoDoc=function(t){return document.importNode(this.templateAwareRoot(t),!0)},e.prototype.adoptNode=function(t){return document.adoptNode(t)},e.prototype.getHref=function(t){return t.getAttribute("href")},e.prototype.getEventKey=function(t){var e=t.key;if(null==e){if(null==(e=t.keyIdentifier))return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&h.hasOwnProperty(e)&&(e=h[e]))}return f[e]||e},e.prototype.getGlobalEventTarget=function(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null},e.prototype.getHistory=function(){return window.history},e.prototype.getLocation=function(){return window.location},e.prototype.getBaseHref=function(t){var e,n=b||(b=document.querySelector("base"))?b.getAttribute("href"):null;return null==n?null:(e=n,g||(g=document.createElement("a")),g.setAttribute("href",e),"/"===g.pathname.charAt(0)?g.pathname:"/"+g.pathname)},e.prototype.resetBaseElement=function(){b=null},e.prototype.getUserAgent=function(){return window.navigator.userAgent},e.prototype.setData=function(t,e,n){this.setAttribute(t,"data-"+e,n)},e.prototype.getData=function(t,e){return this.getAttribute(t,"data-"+e)},e.prototype.getComputedStyle=function(t){return getComputedStyle(t)},e.prototype.supportsWebAnimation=function(){return"function"==typeof Element.prototype.animate},e.prototype.performanceNow=function(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()},e.prototype.supportsCookies=function(){return!0},e.prototype.getCookie=function(t){return Object(r["\u0275parseCookieValue"])(document.cookie,t)},e.prototype.setCookie=function(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)},e}(d),b=null,y=r.DOCUMENT;function v(){return!!window.history.pushState}var x=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n._init(),n}return Object(a.__extends)(e,t),e.prototype._init=function(){this.location=s().getLocation(),this._history=s().getHistory()},e.prototype.getBaseHrefFromDOM=function(){return s().getBaseHref(this._doc)},e.prototype.onPopState=function(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)},e.prototype.onHashChange=function(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)},Object.defineProperty(e.prototype,"pathname",{get:function(){return this.location.pathname},set:function(t){this.location.pathname=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"search",{get:function(){return this.location.search},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hash",{get:function(){return this.location.hash},enumerable:!0,configurable:!0}),e.prototype.pushState=function(t,e,n){v()?this._history.pushState(t,e,n):this.location.hash=n},e.prototype.replaceState=function(t,e,n){v()?this._history.replaceState(t,e,n):this.location.hash=n},e.prototype.forward=function(){this._history.forward()},e.prototype.back=function(){this._history.back()},Object(a.__decorate)([Object(a.__param)(0,Object(i.Inject)(y)),Object(a.__metadata)("design:paramtypes",[Object])],e)}(r.PlatformLocation),_=new i.InjectionToken("TRANSITION_ID");function T(t,e,n){return function(){n.get(i.ApplicationInitStatus).donePromise.then(function(){var n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(function(e){return n.getAttribute(e,"ng-transition")===t}).forEach(function(t){return n.remove(t)})})}}var w=[{provide:i.APP_INITIALIZER,useFactory:T,deps:[_,y,i.Injector],multi:!0}],S=function(){function t(){}return t.init=function(){Object(i.setTestabilityGetter)(new t)},t.prototype.addToWindow=function(t){i["\u0275global"].getAngularTestability=function(e,n){void 0===n&&(n=!0);var a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},i["\u0275global"].getAllAngularTestabilities=function(){return t.getAllTestabilities()},i["\u0275global"].getAllAngularRootElements=function(){return t.getAllRootElements()},i["\u0275global"].frameworkStabilizers||(i["\u0275global"].frameworkStabilizers=[]),i["\u0275global"].frameworkStabilizers.push(function(t){var e=i["\u0275global"].getAllAngularTestabilities(),n=e.length,a=!1,r=function(e){a=a||e,0==--n&&t(a)};e.forEach(function(t){t.whenStable(r)})})},t.prototype.findTestabilityInTree=function(t,e,n){if(null==e)return null;var 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},t}();function O(t,e){"undefined"!=typeof COMPILED&&COMPILED||((i["\u0275global"].ng=i["\u0275global"].ng||{})[t]=e)}var k={ApplicationRef:i.ApplicationRef,NgZone:i.NgZone},C="probe",I="coreTokens";function R(t){return Object(i.getDebugNode)(t)}function N(t){return O(C,R),O(I,Object(a.__assign)({},k,(t||[]).reduce(function(t,e){return t[e.name]=e.token,t},{}))),function(){return R}}var D=[{provide:i.APP_INITIALIZER,useFactory:N,deps:[[i.NgProbeToken,new i.Optional]],multi:!0}],A=new i.InjectionToken("EventManagerPlugins"),E=function(){function t(t,e){var n=this;this._zone=e,this._eventNameToPlugin=new Map,t.forEach(function(t){return t.manager=n}),this._plugins=t.slice().reverse()}return t.prototype.addEventListener=function(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)},t.prototype.addGlobalEventListener=function(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)},t.prototype.getZone=function(){return this._zone},t.prototype._findPluginFor=function(t){var e=this._eventNameToPlugin.get(t);if(e)return e;for(var n=this._plugins,a=0;a<n.length;a++){var r=n[a];if(r.supports(t))return this._eventNameToPlugin.set(t,r),r}throw new Error("No event manager plugin found for event "+t)},t}(),L=function(){function t(t){this._doc=t}return t.prototype.addGlobalEventListener=function(t,e,n){var a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error("Unsupported event target "+a+" for event "+e);return this.addEventListener(a,e,n)},t}(),P=function(){function t(){this._stylesSet=new Set}return t.prototype.addStyles=function(t){var e=this,n=new Set;t.forEach(function(t){e._stylesSet.has(t)||(e._stylesSet.add(t),n.add(t))}),this.onStylesAdded(n)},t.prototype.onStylesAdded=function(t){},t.prototype.getAllStyles=function(){return Array.from(this._stylesSet)},t}(),M=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n._hostNodes=new Set,n._styleNodes=new Set,n._hostNodes.add(e.head),n}return Object(a.__extends)(e,t),e.prototype._addStylesToHost=function(t,e){var n=this;t.forEach(function(t){var a=n._doc.createElement("style");a.textContent=t,n._styleNodes.add(e.appendChild(a))})},e.prototype.addHost=function(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)},e.prototype.removeHost=function(t){this._hostNodes.delete(t)},e.prototype.onStylesAdded=function(t){var e=this;this._hostNodes.forEach(function(n){return e._addStylesToHost(t,n)})},e.prototype.ngOnDestroy=function(){this._styleNodes.forEach(function(t){return s().remove(t)})},e}(P),q={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/"},j=/%COMP%/g,F="_nghost-%COMP%",z="_ngcontent-%COMP%";function G(t){return z.replace(j,t)}function Y(t){return F.replace(j,t)}function H(t,e,n){for(var a=0;a<e.length;a++){var r=e[a];Array.isArray(r)?H(t,r,n):(r=r.replace(j,t),n.push(r))}return n}function V(t){return function(e){!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}var B=function(){function t(t,e){this.eventManager=t,this.sharedStylesHost=e,this.rendererByCompId=new Map,this.defaultRenderer=new U(t)}return t.prototype.createRenderer=function(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case i.ViewEncapsulation.Emulated:var n=this.rendererByCompId.get(e.id);return n||(n=new Z(this.eventManager,this.sharedStylesHost,e),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n;case i.ViewEncapsulation.Native:case i.ViewEncapsulation.ShadowDom:return new X(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){var a=H(e.id,e.styles,[]);this.sharedStylesHost.addStyles(a),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}},t.prototype.begin=function(){},t.prototype.end=function(){},t}(),U=function(){function t(t){this.eventManager=t,this.data=Object.create(null)}return t.prototype.destroy=function(){},t.prototype.createElement=function(t,e){return e?document.createElementNS(q[e],t):document.createElement(t)},t.prototype.createComment=function(t){return document.createComment(t)},t.prototype.createText=function(t){return document.createTextNode(t)},t.prototype.appendChild=function(t,e){t.appendChild(e)},t.prototype.insertBefore=function(t,e,n){t&&t.insertBefore(e,n)},t.prototype.removeChild=function(t,e){t&&t.removeChild(e)},t.prototype.selectRootElement=function(t,e){var 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},t.prototype.parentNode=function(t){return t.parentNode},t.prototype.nextSibling=function(t){return t.nextSibling},t.prototype.setAttribute=function(t,e,n,a){if(a){e=a+":"+e;var r=q[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)},t.prototype.removeAttribute=function(t,e,n){if(n){var a=q[n];a?t.removeAttributeNS(a,e):t.removeAttribute(n+":"+e)}else t.removeAttribute(e)},t.prototype.addClass=function(t,e){t.classList.add(e)},t.prototype.removeClass=function(t,e){t.classList.remove(e)},t.prototype.setStyle=function(t,e,n,a){a&i.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&i.RendererStyleFlags2.Important?"important":""):t.style[e]=n},t.prototype.removeStyle=function(t,e,n){n&i.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""},t.prototype.setProperty=function(t,e,n){K(e,"property"),t[e]=n},t.prototype.setValue=function(t,e){t.nodeValue=e},t.prototype.listen=function(t,e,n){return K(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,V(n)):this.eventManager.addEventListener(t,e,V(n))},t}(),W="@".charCodeAt(0);function K(t,e){if(t.charCodeAt(0)===W)throw new Error("Found the synthetic "+e+" "+t+'. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.')}var $,Z=function(t){function e(e,n,a){var r=t.call(this,e)||this;r.component=a;var i=H(a.id,a.styles,[]);return n.addStyles(i),r.contentAttr=G(a.id),r.hostAttr=Y(a.id),r}return Object(a.__extends)(e,t),e.prototype.applyToHost=function(e){t.prototype.setAttribute.call(this,e,this.hostAttr,"")},e.prototype.createElement=function(e,n){var a=t.prototype.createElement.call(this,e,n);return t.prototype.setAttribute.call(this,a,this.contentAttr,""),a},e}(U),X=function(t){function e(e,n,a,r){var o=t.call(this,e)||this;o.sharedStylesHost=n,o.hostEl=a,o.component=r,o.shadowRoot=r.encapsulation===i.ViewEncapsulation.ShadowDom?a.attachShadow({mode:"open"}):a.createShadowRoot(),o.sharedStylesHost.addHost(o.shadowRoot);for(var s=H(r.id,r.styles,[]),u=0;u<s.length;u++){var c=document.createElement("style");c.textContent=s[u],o.shadowRoot.appendChild(c)}return o}return Object(a.__extends)(e,t),e.prototype.nodeOrShadowRoot=function(t){return t===this.hostEl?this.shadowRoot:t},e.prototype.destroy=function(){this.sharedStylesHost.removeHost(this.shadowRoot)},e.prototype.appendChild=function(e,n){return t.prototype.appendChild.call(this,this.nodeOrShadowRoot(e),n)},e.prototype.insertBefore=function(e,n,a){return t.prototype.insertBefore.call(this,this.nodeOrShadowRoot(e),n,a)},e.prototype.removeChild=function(e,n){return t.prototype.removeChild.call(this,this.nodeOrShadowRoot(e),n)},e.prototype.parentNode=function(e){return this.nodeOrShadowRoot(t.prototype.parentNode.call(this,this.nodeOrShadowRoot(e)))},e}(U),J="undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t},Q=J("addEventListener"),tt=J("removeEventListener"),et={},nt="__zone_symbol__propagationStopped";"undefined"!=typeof Zone&&Zone[J("BLACK_LISTED_EVENTS")]&&($={});var at=function(t){return!!$&&$.hasOwnProperty(t)},rt=function(t){var e=et[t.type];if(e){var n=this[e];if(n){var a=[t];if(1===n.length)return(o=n[0]).zone!==Zone.current?o.zone.run(o.handler,this,a):o.handler.apply(this,a);for(var r=n.slice(),i=0;i<r.length&&!0!==t[nt];i++){var o;(o=r[i]).zone!==Zone.current?o.zone.run(o.handler,this,a):o.handler.apply(this,a)}}}},it=function(t){function e(e,n,a){var i=t.call(this,e)||this;return i.ngZone=n,a&&Object(r.isPlatformServer)(a)||i.patchEvent(),i}return Object(a.__extends)(e,t),e.prototype.patchEvent=function(){if("undefined"!=typeof Event&&Event&&Event.prototype&&!Event.prototype.__zone_symbol__stopImmediatePropagation){var t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[nt]=!0),t&&t.apply(this,arguments)}}},e.prototype.supports=function(t){return!0},e.prototype.addEventListener=function(t,e,n){var a=this,r=n;if(!t[Q]||i.NgZone.isInAngularZone()&&!at(e))t.addEventListener(e,r,!1);else{var o=et[e];o||(o=et[e]=J("ANGULAR"+e+"FALSE"));var s=t[o],u=s&&s.length>0;s||(s=t[o]=[]);var c=at(e)?Zone.root:Zone.current;if(0===s.length)s.push({zone:c,handler:r});else{for(var l=!1,d=0;d<s.length;d++)if(s[d].handler===r){l=!0;break}l||s.push({zone:c,handler:r})}u||t[Q](e,rt,!1)}return function(){return a.removeEventListener(t,e,r)}},e.prototype.removeEventListener=function(t,e,n){var a=t[tt];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);var r=et[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);for(var o=!1,s=0;s<i.length;s++)if(i[s].handler===n){o=!0,i.splice(s,1);break}o?0===i.length&&a.apply(t,[e,rt,!1]):t.removeEventListener.apply(t,[e,n,!1])},e}(L),ot={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},st=new i.InjectionToken("HammerGestureConfig"),ut=new i.InjectionToken("HammerLoader"),ct=function(){function t(){this.events=[],this.overrides={}}return t.prototype.buildHammer=function(t){var e=new Hammer(t,this.options);for(var n in e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0}),this.overrides)e.get(n).set(this.overrides[n]);return e},t}(),lt=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i._config=n,i.console=a,i.loader=r,i}return Object(a.__extends)(e,t),e.prototype.supports=function(t){return!(!ot.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))},e.prototype.addEventListener=function(t,e,n){var a=this,r=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){var i=!1,o=function(){i=!0};return this.loader().then(function(){if(!window.Hammer)return a.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(o=function(){});i||(o=a.addEventListener(t,e,n))}).catch(function(){a.console.warn('The "'+e+'" event cannot be bound because the custom Hammer.JS loader failed.'),o=function(){}}),function(){o()}}return r.runOutsideAngular(function(){var i=a._config.buildHammer(t),o=function(t){r.runGuarded(function(){n(t)})};return i.on(e,o),function(){i.off(e,o),"function"==typeof i.destroy&&i.destroy()}})},e.prototype.isCustomEvent=function(t){return this._config.events.indexOf(t)>-1},e}(L),dt=["alt","control","meta","shift"],pt={alt:function(t){return t.altKey},control:function(t){return t.ctrlKey},meta:function(t){return t.metaKey},shift:function(t){return t.shiftKey}},ft=function(t){function e(e){return t.call(this,e)||this}var n;return Object(a.__extends)(e,t),n=e,e.prototype.supports=function(t){return null!=n.parseEventName(t)},e.prototype.addEventListener=function(t,e,a){var r=n.parseEventName(e),i=n.eventCallback(r.fullKey,a,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return s().onAndCancel(t,r.domEventName,i)})},e.parseEventName=function(t){var e=t.toLowerCase().split("."),a=e.shift();if(0===e.length||"keydown"!==a&&"keyup"!==a)return null;var r=n._normalizeKey(e.pop()),i="";if(dt.forEach(function(t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),i+=t+".")}),i+=r,0!=e.length||0===r.length)return null;var o={};return o.domEventName=a,o.fullKey=i,o},e.getEventFullKey=function(t){var e="",n=s().getEventKey(t);return" "===(n=n.toLowerCase())?n="space":"."===n&&(n="dot"),dt.forEach(function(a){a!=n&&(0,pt[a])(t)&&(e+=a+".")}),e+=n},e.eventCallback=function(t,e,a){return function(r){n.getEventFullKey(r)===t&&a.runGuarded(function(){return e(r)})}},e._normalizeKey=function(t){switch(t){case"esc":return"escape";default:return t}},e}(L),ht=function(){return function(){}}(),gt=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n}return Object(a.__extends)(e,t),e.prototype.sanitize=function(t,e){if(null==e)return null;switch(t){case i.SecurityContext.NONE:return e;case i.SecurityContext.HTML:return e instanceof bt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(i["\u0275_sanitizeHtml"])(this._doc,String(e)));case i.SecurityContext.STYLE:return e instanceof yt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(i["\u0275_sanitizeStyle"])(e));case i.SecurityContext.SCRIPT:if(e instanceof vt)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case i.SecurityContext.URL:return e instanceof _t||e instanceof xt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(i["\u0275_sanitizeUrl"])(String(e)));case i.SecurityContext.RESOURCE_URL:if(e instanceof _t)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)")}},e.prototype.checkNotSafeValue=function(t,e){if(t instanceof mt)throw new Error("Required a safe "+e+", got a "+t.getTypeName()+" (see http://g.co/ng/security#xss)")},e.prototype.bypassSecurityTrustHtml=function(t){return new bt(t)},e.prototype.bypassSecurityTrustStyle=function(t){return new yt(t)},e.prototype.bypassSecurityTrustScript=function(t){return new vt(t)},e.prototype.bypassSecurityTrustUrl=function(t){return new xt(t)},e.prototype.bypassSecurityTrustResourceUrl=function(t){return new _t(t)},e}(ht),mt=function(){function t(t){this.changingThisBreaksApplicationSecurity=t}return t.prototype.toString=function(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"},t}(),bt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"HTML"},e}(mt),yt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"Style"},e}(mt),vt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"Script"},e}(mt),xt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"URL"},e}(mt),_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"ResourceURL"},e}(mt),Tt=[{provide:i.PLATFORM_ID,useValue:r["\u0275PLATFORM_BROWSER_ID"]},{provide:i.PLATFORM_INITIALIZER,useValue:Ot,multi:!0},{provide:r.PlatformLocation,useClass:x,deps:[y]},{provide:y,useFactory:Ct,deps:[]}],wt=[{provide:i.Sanitizer,useExisting:ht},{provide:ht,useClass:gt,deps:[y]}],St=Object(i.createPlatformFactory)(i.platformCore,"browser",Tt);function Ot(){m.makeCurrent(),S.init()}function kt(){return new i.ErrorHandler}function Ct(){return document}var It=[wt,{provide:i["\u0275APP_ROOT"],useValue:!0},{provide:i.ErrorHandler,useFactory:kt,deps:[]},{provide:A,useClass:it,multi:!0,deps:[y,i.NgZone,i.PLATFORM_ID]},{provide:A,useClass:ft,multi:!0,deps:[y]},{provide:A,useClass:lt,multi:!0,deps:[y,st,i["\u0275Console"],[new i.Optional,ut]]},{provide:st,useClass:ct,deps:[]},{provide:B,useClass:B,deps:[E,M]},{provide:i.RendererFactory2,useExisting:B},{provide:P,useExisting:M},{provide:M,useClass:M,deps:[y]},{provide:i.Testability,useClass:i.Testability,deps:[i.NgZone]},{provide:E,useClass:E,deps:[A,i.NgZone]},D],Rt=function(){function t(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.")}var e;return e=t,t.withServerTransition=function(t){return{ngModule:e,providers:[{provide:i.APP_ID,useValue:t.appId},{provide:_,useExisting:i.APP_ID},w]}},t}();function Nt(){return new Dt(Object(i.inject)(y))}var Dt=function(){function t(t){this._doc=t,this._dom=s()}return t.prototype.addTag=function(t,e){return void 0===e&&(e=!1),t?this._getOrCreateElement(t,e):null},t.prototype.addTags=function(t,e){var n=this;return void 0===e&&(e=!1),t?t.reduce(function(t,a){return a&&t.push(n._getOrCreateElement(a,e)),t},[]):[]},t.prototype.getTag=function(t){return t&&this._dom.querySelector(this._doc,"meta["+t+"]")||null},t.prototype.getTags=function(t){if(!t)return[];var e=this._dom.querySelectorAll(this._doc,"meta["+t+"]");return e?[].slice.call(e):[]},t.prototype.updateTag=function(t,e){if(!t)return null;e=e||this._parseSelector(t);var n=this.getTag(e);return n?this._setMetaElementAttributes(t,n):this._getOrCreateElement(t,!0)},t.prototype.removeTag=function(t){this.removeTagElement(this.getTag(t))},t.prototype.removeTagElement=function(t){t&&this._dom.remove(t)},t.prototype._getOrCreateElement=function(t,e){if(void 0===e&&(e=!1),!e){var n=this._parseSelector(t),a=this.getTag(n);if(a&&this._containsAttributes(t,a))return a}var r=this._dom.createElement("meta");this._setMetaElementAttributes(t,r);var i=this._dom.getElementsByTagName(this._doc,"head")[0];return this._dom.appendChild(i,r),r},t.prototype._setMetaElementAttributes=function(t,e){var n=this;return Object.keys(t).forEach(function(a){return n._dom.setAttribute(e,a,t[a])}),e},t.prototype._parseSelector=function(t){var e=t.name?"name":"property";return e+'="'+t[e]+'"'},t.prototype._containsAttributes=function(t,e){var n=this;return Object.keys(t).every(function(a){return n._dom.getAttribute(e,a)===t[a]})},t.ngInjectableDef=Object(i.defineInjectable)({factory:Nt,token:t,providedIn:"root"}),t}();function At(){return new Et(Object(i.inject)(y))}var Et=function(){function t(t){this._doc=t}return t.prototype.getTitle=function(){return s().getTitle(this._doc)},t.prototype.setTitle=function(t){s().setTitle(this._doc,t)},t.ngInjectableDef=Object(i.defineInjectable)({factory:At,token:t,providedIn:"root"}),t}(),Lt="undefined"!=typeof window&&window||{},Pt=function(){return function(t,e){this.msPerTick=t,this.numTicks=e}}(),Mt=function(){function t(t){this.appRef=t.injector.get(i.ApplicationRef)}return t.prototype.timeChangeDetection=function(t){var e=t&&t.record,n=null!=Lt.console.profile;e&&n&&Lt.console.profile("Change Detection");for(var a=s().performanceNow(),r=0;r<5||s().performanceNow()-a<500;)this.appRef.tick(),r++;var i=s().performanceNow();e&&n&&Lt.console.profileEnd("Change Detection");var o=(i-a)/r;return Lt.console.log("ran "+r+" change detection cycles"),Lt.console.log(o.toFixed(2)+" ms per check"),new Pt(o,r)},t}(),qt="profiler";function jt(t){return O(qt,new Mt(t)),t}function Ft(){O(qt,null)}function zt(t){var e={"&":"&a;",'"':"&q;","'":"&s;","<":"&l;",">":"&g;"};return t.replace(/[&"'<>]/g,function(t){return e[t]})}function Gt(t){return t}var Yt=function(){function t(){this.store={},this.onSerializeCallbacks={}}var e;return e=t,t.init=function(t){var n=new e;return n.store=t,n},t.prototype.get=function(t,e){return void 0!==this.store[t]?this.store[t]:e},t.prototype.set=function(t,e){this.store[t]=e},t.prototype.remove=function(t){delete this.store[t]},t.prototype.hasKey=function(t){return this.store.hasOwnProperty(t)},t.prototype.onSerialize=function(t,e){this.onSerializeCallbacks[t]=e},t.prototype.toJson=function(){for(var t in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(t))try{this.store[t]=this.onSerializeCallbacks[t]()}catch(e){console.warn("Exception in onSerialize callback: ",e)}return JSON.stringify(this.store)},t}();function Ht(t,e){var n,a=t.getElementById(e+"-state"),r={};if(a&&a.textContent)try{r=JSON.parse((n={"&a;":"&","&q;":'"',"&s;":"'","&l;":"<","&g;":">"},a.textContent.replace(/&[^;]+;/g,function(t){return n[t]})))}catch(i){console.warn("Exception while restoring TransferState for app "+e,i)}return Yt.init(r)}var Vt=function(){return function(){}}(),Bt=function(){function t(){}return t.all=function(){return function(t){return!0}},t.css=function(t){return function(e){return null!=e.nativeElement&&s().elementMatches(e.nativeElement,t)}},t.directive=function(t){return function(e){return-1!==e.providerTokens.indexOf(t)}},t}(),Ut=new i.Version("7.2.6")},Zduo:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_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\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %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}})}()},Zn8D:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("psW0"),r=n("mChF");function i(t){return void 0===t&&(t=Number.POSITIVE_INFINITY),Object(a.a)(r.a,t)}},a0VL:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t){this.datePipe=t}return t.prototype.transform=function(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")},t}()},a278:function(t,e,n){"use strict";var a=n("CcnG"),r=n("QC43"),i=n("XFyV"),o=n("TZo1"),s=n("9Kw/"),u=n("Jm/i"),c=n("gIcY"),l=n("Ip0R");n("insk"),n("mSOc"),n("ZYjt"),n("20UP"),n("+0ag"),n.d(e,"a",function(){return d}),n.d(e,"b",function(){return b});var d=a["\u0275crt"]({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}.timepicker[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{display:inline-block}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-size:1.05em;padding:5px!important}button[_ngcontent-%COMP%]{margin-bottom:10px;margin-left:10px;float:right}button[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{font-size:14px;padding:2px}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Loading panel data..."]))],null,null)}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[u.a],null,null),(t()(),a["\u0275ted"](-1,0,["Please consult the "])),(t()(),a["\u0275eld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["documentation"])),(t()(),a["\u0275ted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],null,function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[u.a],null,null),(t()(),a["\u0275ted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["\u0275eld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["documentation"])),(t()(),a["\u0275ted"](-1,0,[" on how to add dashboards to Grafana."]))],null,function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,c.v,[a.ElementRef,a.Renderer2,[2,c.z]],{ngValue:[0,"ngValue"]},null),a["\u0275did"](2,147456,null,0,c.G,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["\u0275ted"](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 m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,20,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,15,"div",[["class","col-md-12 timepicker"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,2,"label",[["class","control-label col-sm-1"],["for","timepicker-control"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Grafana Time Picker"])),(t()(),a["\u0275eld"](5,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,7,"select",[["class","form-control "],["id","timepicker"],["name","timepicker-control"]],[[2,"ng-untouched",null],[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["\u0275nov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r},null,null)),a["\u0275did"](7,16384,null,0,c.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,c.p,function(t){return[t]},[c.z]),a["\u0275did"](9,671744,null,0,c.u,[[8,null],[8,null],[8,null],[6,c.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,c.q,null,[c.u]),a["\u0275did"](11,16384,null,0,c.r,[[4,c.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](13,278528,null,0,l.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](14,0,null,null,1,"button",[["class","btn btn-sm"],["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["\u0275eld"](15,0,null,null,0,"i",[["class","fa fa-undo"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,2,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,[["iframe",1]],null,1,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["\u0275did"](20,278528,null,0,l.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],function(t,e){var n=e.component;t(e,9,0,"timepicker-control",n.time),t(e,13,0,n.grafanaTimes),t(e,20,0,"grafana",n.panelStyle)},function(t,e){var n=e.component;t(e,6,0,a["\u0275nov"](e,11).ngClassUntouched,a["\u0275nov"](e,11).ngClassTouched,a["\u0275nov"](e,11).ngClassPristine,a["\u0275nov"](e,11).ngClassDirty,a["\u0275nov"](e,11).ngClassValid,a["\u0275nov"](e,11).ngClassInvalid,a["\u0275nov"](e,11).ngClassPending),t(e,19,0,n.grafanaSrc)})}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](1,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](3,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](5,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](7,16384,null,0,l.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("CcnG"),r=n("EEJc"),i=n("ajRT"),o=n("gIcY"),s=n("Ip0R"),u=n("gp3X"),c=n("sb0X"),l=n("KVJa"),d=n("Z21x"),p=n("sne2"),f=n("OLbh"),h=n("DQlY");n.d(e,"a",function(){return v});var g=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,19,"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["\u0275did"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,["",""])),(t()(),a["\u0275eld"](4,0,null,1,15,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,14,"form",[["class","form-horizontal"],["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["\u0275nov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,7).onReset()&&r),r},null,null)),a["\u0275did"](6,16384,null,0,o.D,[],null,null),a["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,o.d,null,[o.l]),a["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(t()(),a["\u0275eld"](10,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](12,540672,null,0,s.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](13,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](15,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},u.b,u.a)),a["\u0275did"](16,114688,null,0,c.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](17,0,[" "," "])),(t()(),a["\u0275eld"](18,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,l.b,l.a)),a["\u0275did"](19,49152,null,0,d.a,[s.Location,p.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,12,0,n.bodyContext,n.bodyTpl),t(e,16,0,n.confirmationForm),t(e,19,0,"Cancel",n.boundCancel)},function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending),t(e,17,0,n.buttonText)})}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,b,g)),a["\u0275did"](1,114688,null,0,f.a,[h.a],null,null)],function(t,e){t(e,1,0)},null)}var v=a["\u0275ccf"]("cd-confirmation-modal",f.a,y,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t,e,n,a){void 0===a&&(a=!0),this.selected=t,this.name=e,this.description=n,this.enabled=a}}()},aB2c:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),t.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,linkScales:i.noop,update:function(t){var e=this,n=e.getMeta(),a=n.data,r=n.dataset.custom||{},o=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:i.valueOrDefault(o.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:o.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:o.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:o.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),i.each(a,function(n,a){e.updateElement(n,a,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var a=this,r=t.custom||{},o=a.getDataset(),s=a.chart.scale,u=a.chart.options.elements.point,c=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),i.extend(t,{_datasetIndex:a.index,_index:e,_scale:s,_model:{x:n?s.xCenter:c.x,y:n?s.yCenter:c.y,tension:r.tension?r.tension:i.valueOrDefault(o.lineTension,a.chart.options.elements.line.tension),radius:r.radius?r.radius:i.valueAtIndexOrDefault(o.pointRadius,e,u.radius),backgroundColor:r.backgroundColor?r.backgroundColor:i.valueAtIndexOrDefault(o.pointBackgroundColor,e,u.backgroundColor),borderColor:r.borderColor?r.borderColor:i.valueAtIndexOrDefault(o.pointBorderColor,e,u.borderColor),borderWidth:r.borderWidth?r.borderWidth:i.valueAtIndexOrDefault(o.pointBorderWidth,e,u.borderWidth),pointStyle:r.pointStyle?r.pointStyle:i.valueAtIndexOrDefault(o.pointStyle,e,u.pointStyle),rotation:r.rotation?r.rotation:i.valueAtIndexOrDefault(o.pointRotation,e,u.rotation),hitRadius:r.hitRadius?r.hitRadius:i.valueAtIndexOrDefault(o.pointHitRadius,e,u.hitRadius)}}),t._model.skip=r.skip?r.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();i.each(e.data,function(n,a){var r=n._model,o=i.splineCurve(i.previousItem(e.data,a,!0)._model,r,i.nextItem(e.data,a,!0)._model,r.tension);r.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),r.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),r.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),r.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},a=t._index,r=t._model;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth,radius:r.radius},r.radius=n.hoverRadius?n.hoverRadius:i.valueAtIndexOrDefault(e.pointHoverRadius,a,this.chart.options.elements.point.hoverRadius),r.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:i.valueAtIndexOrDefault(e.pointHoverBackgroundColor,a,i.getHoverColor(r.backgroundColor)),r.borderColor=n.hoverBorderColor?n.hoverBorderColor:i.valueAtIndexOrDefault(e.pointHoverBorderColor,a,i.getHoverColor(r.borderColor)),r.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:i.valueAtIndexOrDefault(e.pointHoverBorderWidth,a,r.borderWidth)}})}},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)}n("wd/R").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\xf9",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\xf1|vet)/,ordinal:function(t){return t+(1===t?"a\xf1":"vet")},week:{dow:1,doy:4}})}()},aIsn:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_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\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".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\u0113kona ruarua",ss:"%d h\u0113kona",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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},aQkU:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".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:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}()},aTeT:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi"}(e.SortType||(e.SortType={}))},aXbf:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("LvDl"),r=n("CcnG"),i=function(){function t(){}return t.prototype.format_number=function(t,e,n,r){if(void 0===r&&(r=1),a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";var i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;var o=a.round(t/Math.pow(e,i),r).toString();return""===o?"-":(""!==n[i]&&(o=o+" "+n[i]),o)},t.prototype.toBytes=function(t,e){void 0===e&&(e=null);var 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;var i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)},t.prototype.toMilliseconds=function(t){var e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0},t.prototype.toIops=function(t){var e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}()},ad02:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e))}}var o=function(){function t(t,e){this.compare=t,this.keySelector=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.compare,this.keySelector))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keySelector=a,r.hasKey=!1,"function"==typeof n&&(r.compare=n),r}return a.__extends(e,t),e.prototype.compare=function(t,e){return t===e},e.prototype._next=function(t){var e;try{var n=this.keySelector;e=n?n(t):t}catch(r){return this.destination.error(r)}var a=!1;if(this.hasKey)try{a=(0,this.compare)(this.key,e)}catch(r){return this.destination.error(r)}else this.hasKey=!0;a||(this.key=e,this.destination.next(t))},e}(r.a)},ae7Z:function(t,e,n){"use strict";function a(t){var e={left:[],center:[],right:[]};if(t)for(var n=0,a=t;n<a.length;n++){var r=a[n];r.frozenLeft?e.left.push(r):r.frozenRight?e.right.push(r):e.center.push(r)}return e}function r(t,e){var n=0;if(t)for(var a=0,r=t;a<r.length;a++){var i=r[a];n+=parseFloat(e&&i[e]?i[e]:i.width)}return n}Object.defineProperty(e,"__esModule",{value:!0}),e.columnsByPin=a,e.columnGroupWidths=function(t,e){return{left:r(t.left),center:r(t.center),right:r(t.right),total:Math.floor(r(e))}},e.columnTotalWidth=r,e.columnsTotalWidth=function(t,e){for(var n=0,a=0,r=t;a<r.length;a++){var i=r[a];n+=e&&i[e]?i[e]:i.width}return n},e.columnsByPinArr=function(t){var e=[],n=a(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}},aexS:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("jKX/"),r=n("CcnG"),i=function(){function t(){}return t.prototype.set=function(t,e,n){void 0===n&&(n={}),localStorage.setItem("dashboard_username",t),localStorage.setItem("access_token",e),localStorage.setItem("dashboard_permissions",JSON.stringify(new a.a(n)))},t.prototype.remove=function(){localStorage.removeItem("access_token"),localStorage.removeItem("dashboard_username")},t.prototype.getToken=function(){return localStorage.getItem("access_token")},t.prototype.isLoggedIn=function(){return null!==localStorage.getItem("dashboard_username")},t.prototype.getUsername=function(){return localStorage.getItem("dashboard_username")},t.prototype.getPermissions=function(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new a.a({})))},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}()},ahDk:function(t,e,n){"use strict";n.r(e);var a=n("mrSG"),r=n("MGBS"),i=n("zotm");function o(t){return function(e){return e.lift(new s(t))}}var s=function(){function t(t){this.durationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.durationSelector))},t}(),u=function(t){function e(e,n){var a=t.call(this,e)||this;return a.durationSelector=n,a.hasValue=!1,a}return a.__extends(e,t),e.prototype._next=function(t){if(this.value=t,this.hasValue=!0,!this.throttled){var e=void 0;try{e=(0,this.durationSelector)(t)}catch(a){return this.destination.error(a)}var n=Object(i.a)(this,e);!n||n.closed?this.clearThrottle():this.add(this.throttled=n)}},e.prototype.clearThrottle=function(){var t=this.value,e=this.hasValue,n=this.throttled;n&&(this.remove(n),this.throttled=null,n.unsubscribe()),e&&(this.value=null,this.hasValue=!1,this.destination.next(t))},e.prototype.notifyNext=function(t,e,n,a){this.clearThrottle()},e.prototype.notifyComplete=function(){this.clearThrottle()},e}(r.a),c=n("T1DM"),l=n("gI3B");function d(t,e){return void 0===e&&(e=c.a),o(function(){return Object(l.a)(t,e)})}function p(t){return function(e){return e.lift(new f(t))}}var f=function(){function t(t){this.closingNotifier=t}return t.prototype.call=function(t,e){return e.subscribe(new h(t,this.closingNotifier))},t}(),h=function(t){function e(e,n){var a=t.call(this,e)||this;return a.buffer=[],a.add(Object(i.a)(a,n)),a}return a.__extends(e,t),e.prototype._next=function(t){this.buffer.push(t)},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.buffer;this.buffer=[],this.destination.next(i)},e}(r.a),g=n("FFOo");function m(t,e){return void 0===e&&(e=null),function(n){return n.lift(new b(t,e))}}var b=function(){function t(t,e){this.bufferSize=t,this.startBufferEvery=e,this.subscriberClass=e&&t!==e?v:y}return t.prototype.call=function(t,e){return e.subscribe(new this.subscriberClass(t,this.bufferSize,this.startBufferEvery))},t}(),y=function(t){function e(e,n){var a=t.call(this,e)||this;return a.bufferSize=n,a.buffer=[],a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.buffer;e.push(t),e.length==this.bufferSize&&(this.destination.next(e),this.buffer=[])},e.prototype._complete=function(){var e=this.buffer;e.length>0&&this.destination.next(e),t.prototype._complete.call(this)},e}(g.a),v=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.bufferSize=n,r.startBufferEvery=a,r.buffers=[],r.count=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.bufferSize,n=this.startBufferEvery,a=this.buffers,r=this.count;this.count++,r%n==0&&a.push([]);for(var i=a.length;i--;){var o=a[i];o.push(t),o.length===e&&(a.splice(i,1),this.destination.next(o))}},e.prototype._complete=function(){for(var e=this.buffers,n=this.destination;e.length>0;){var a=e.shift();a.length>0&&n.next(a)}t.prototype._complete.call(this)},e}(g.a),x=n("nkY7");function _(t){var e=arguments.length,n=c.a;Object(x.a)(arguments[arguments.length-1])&&(n=arguments[arguments.length-1],e--);var a=null;e>=2&&(a=arguments[1]);var r=Number.POSITIVE_INFINITY;return e>=3&&(r=arguments[2]),function(e){return e.lift(new T(t,a,r,n))}}var T=function(){function t(t,e,n,a){this.bufferTimeSpan=t,this.bufferCreationInterval=e,this.maxBufferSize=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new S(t,this.bufferTimeSpan,this.bufferCreationInterval,this.maxBufferSize,this.scheduler))},t}(),w=function(){return function(){this.buffer=[]}}(),S=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;o.bufferTimeSpan=n,o.bufferCreationInterval=a,o.maxBufferSize=r,o.scheduler=i,o.contexts=[];var s=o.openContext();if(o.timespanOnly=null==a||a<0,o.timespanOnly)o.add(s.closeAction=i.schedule(O,n,{subscriber:o,context:s,bufferTimeSpan:n}));else{var u={bufferTimeSpan:n,bufferCreationInterval:a,subscriber:o,scheduler:i};o.add(s.closeAction=i.schedule(C,n,{subscriber:o,context:s})),o.add(i.schedule(k,a,u))}return o}return a.__extends(e,t),e.prototype._next=function(t){for(var e,n=this.contexts,a=n.length,r=0;r<a;r++){var i=n[r],o=i.buffer;o.push(t),o.length==this.maxBufferSize&&(e=i)}e&&this.onBufferFull(e)},e.prototype._error=function(e){this.contexts.length=0,t.prototype._error.call(this,e)},e.prototype._complete=function(){for(var e=this.contexts,n=this.destination;e.length>0;){var a=e.shift();n.next(a.buffer)}t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){this.contexts=null},e.prototype.onBufferFull=function(t){this.closeContext(t);var e=t.closeAction;if(e.unsubscribe(),this.remove(e),!this.closed&&this.timespanOnly){t=this.openContext();var n=this.bufferTimeSpan;this.add(t.closeAction=this.scheduler.schedule(O,n,{subscriber:this,context:t,bufferTimeSpan:n}))}},e.prototype.openContext=function(){var t=new w;return this.contexts.push(t),t},e.prototype.closeContext=function(t){this.destination.next(t.buffer);var e=this.contexts;(e?e.indexOf(t):-1)>=0&&e.splice(e.indexOf(t),1)},e}(g.a);function O(t){var e=t.subscriber,n=t.context;n&&e.closeContext(n),e.closed||(t.context=e.openContext(),t.context.closeAction=this.schedule(t,t.bufferTimeSpan))}function k(t){var e=t.bufferCreationInterval,n=t.bufferTimeSpan,a=t.subscriber,r=t.scheduler,i=a.openContext();a.closed||(a.add(i.closeAction=r.schedule(C,n,{subscriber:a,context:i})),this.schedule(t,e))}function C(t){t.subscriber.closeContext(t.context)}var I=n("pugT");function R(t,e){return function(n){return n.lift(new N(t,e))}}var N=function(){function t(t,e){this.openings=t,this.closingSelector=e}return t.prototype.call=function(t,e){return e.subscribe(new D(t,this.openings,this.closingSelector))},t}(),D=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.openings=n,r.closingSelector=a,r.contexts=[],r.add(Object(i.a)(r,n)),r}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.contexts,n=e.length,a=0;a<n;a++)e[a].buffer.push(t)},e.prototype._error=function(e){for(var n=this.contexts;n.length>0;){var a=n.shift();a.subscription.unsubscribe(),a.buffer=null,a.subscription=null}this.contexts=null,t.prototype._error.call(this,e)},e.prototype._complete=function(){for(var e=this.contexts;e.length>0;){var n=e.shift();this.destination.next(n.buffer),n.subscription.unsubscribe(),n.buffer=null,n.subscription=null}this.contexts=null,t.prototype._complete.call(this)},e.prototype.notifyNext=function(t,e,n,a,r){t?this.closeBuffer(t):this.openBuffer(e)},e.prototype.notifyComplete=function(t){this.closeBuffer(t.context)},e.prototype.openBuffer=function(t){try{var e=this.closingSelector.call(this,t);e&&this.trySubscribe(e)}catch(n){this._error(n)}},e.prototype.closeBuffer=function(t){var e=this.contexts;if(e&&t){var n=t.subscription;this.destination.next(t.buffer),e.splice(e.indexOf(t),1),this.remove(n),n.unsubscribe()}},e.prototype.trySubscribe=function(t){var e=this.contexts,n=new I.a,a={buffer:[],subscription:n};e.push(a);var r=Object(i.a)(this,t,a);!r||r.closed?this.closeBuffer(a):(r.context=a,this.add(r),n.add(r))},e}(r.a);function A(t){return function(e){return e.lift(new E(t))}}var E=function(){function t(t){this.closingSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new L(t,this.closingSelector))},t}(),L=function(t){function e(e,n){var a=t.call(this,e)||this;return a.closingSelector=n,a.subscribing=!1,a.openBuffer(),a}return a.__extends(e,t),e.prototype._next=function(t){this.buffer.push(t)},e.prototype._complete=function(){var e=this.buffer;e&&this.destination.next(e),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){this.buffer=null,this.subscribing=!1},e.prototype.notifyNext=function(t,e,n,a,r){this.openBuffer()},e.prototype.notifyComplete=function(){this.subscribing?this.complete():this.openBuffer()},e.prototype.openBuffer=function(){var t,e=this.closingSubscription;e&&(this.remove(e),e.unsubscribe()),this.buffer&&this.destination.next(this.buffer),this.buffer=[];try{t=(0,this.closingSelector)()}catch(n){return this.error(n)}e=new I.a,this.closingSubscription=e,this.add(e),this.subscribing=!0,e.add(Object(i.a)(this,t)),this.subscribing=!1},e}(r.a),P=n("9Z1F"),M=n("dzgT");function q(t){return function(e){return e.lift(new M.a(t))}}var j=n("isby"),F=n("0/uQ");function z(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=null;return"function"==typeof t[t.length-1]&&(n=t.pop()),1===t.length&&Object(j.a)(t[0])&&(t=t[0].slice()),function(e){return e.lift.call(Object(F.a)([e].concat(t)),new M.a(n))}}var G=n("wbK0"),Y=n("Txjg"),H=n("Phjn");function V(t,e){return Object(H.a)(function(){return t},e)}function B(t){return function(e){return e.lift(new U(t,e))}}var U=function(){function t(t,e){this.predicate=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new W(t,this.predicate,this.source))},t}(),W=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.source=a,r.count=0,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.predicate?this._tryPredicate(t):this.count++},e.prototype._tryPredicate=function(t){var e;try{e=this.predicate(t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e&&this.count++},e.prototype._complete=function(){this.destination.next(this.count),this.destination.complete()},e}(g.a);function K(t){return function(e){return e.lift(new $(t))}}var $=function(){function t(t){this.durationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new Z(t,this.durationSelector))},t}(),Z=function(t){function e(e,n){var a=t.call(this,e)||this;return a.durationSelector=n,a.hasValue=!1,a.durationSubscription=null,a}return a.__extends(e,t),e.prototype._next=function(t){try{var e=this.durationSelector.call(this,t);e&&this._tryNext(t,e)}catch(n){this.destination.error(n)}},e.prototype._complete=function(){this.emitValue(),this.destination.complete()},e.prototype._tryNext=function(t,e){var n=this.durationSubscription;this.value=t,this.hasValue=!0,n&&(n.unsubscribe(),this.remove(n)),(n=Object(i.a)(this,e))&&!n.closed&&this.add(this.durationSubscription=n)},e.prototype.notifyNext=function(t,e,n,a,r){this.emitValue()},e.prototype.notifyComplete=function(){this.emitValue()},e.prototype.emitValue=function(){if(this.hasValue){var e=this.value,n=this.durationSubscription;n&&(this.durationSubscription=null,n.unsubscribe(),this.remove(n)),this.value=null,this.hasValue=!1,t.prototype._next.call(this,e)}},e}(r.a),X=n("Gi3i"),J=n("HJBe");function Q(t){return t instanceof Date&&!isNaN(+t)}var tt=n("60iU");function et(t,e){void 0===e&&(e=c.a);var n=Q(t)?+t-e.now():Math.abs(t);return function(t){return t.lift(new nt(n,e))}}var nt=function(){function t(t,e){this.delay=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new at(t,this.delay,this.scheduler))},t}(),at=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.delay=n,r.scheduler=a,r.queue=[],r.active=!1,r.errored=!1,r}return a.__extends(e,t),e.dispatch=function(t){for(var e=t.source,n=e.queue,a=t.scheduler,r=t.destination;n.length>0&&n[0].time-a.now()<=0;)n.shift().notification.observe(r);if(n.length>0){var i=Math.max(0,n[0].time-a.now());this.schedule(t,i)}else this.unsubscribe(),e.active=!1},e.prototype._schedule=function(t){this.active=!0,this.destination.add(t.schedule(e.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))},e.prototype.scheduleNotification=function(t){if(!0!==this.errored){var e=this.scheduler,n=new rt(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}},e.prototype._next=function(t){this.scheduleNotification(tt.a.createNext(t))},e.prototype._error=function(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.scheduleNotification(tt.a.createComplete()),this.unsubscribe()},e}(g.a),rt=function(){return function(t,e){this.time=t,this.notification=e}}(),it=n("6blF");function ot(t,e){return e?function(n){return new ct(n,e).lift(new st(t))}:function(e){return e.lift(new st(t))}}var st=function(){function t(t){this.delayDurationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new ut(t,this.delayDurationSelector))},t}(),ut=function(t){function e(e,n){var a=t.call(this,e)||this;return a.delayDurationSelector=n,a.completed=!1,a.delayNotifierSubscriptions=[],a.index=0,a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(t),this.removeSubscription(r),this.tryComplete()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){var e=this.removeSubscription(t);e&&this.destination.next(e),this.tryComplete()},e.prototype._next=function(t){var e=this.index++;try{var n=this.delayDurationSelector(t,e);n&&this.tryDelay(n,t)}catch(a){this.destination.error(a)}},e.prototype._complete=function(){this.completed=!0,this.tryComplete(),this.unsubscribe()},e.prototype.removeSubscription=function(t){t.unsubscribe();var e=this.delayNotifierSubscriptions.indexOf(t);return-1!==e&&this.delayNotifierSubscriptions.splice(e,1),t.outerValue},e.prototype.tryDelay=function(t,e){var n=Object(i.a)(this,t,e);n&&!n.closed&&(this.destination.add(n),this.delayNotifierSubscriptions.push(n))},e.prototype.tryComplete=function(){this.completed&&0===this.delayNotifierSubscriptions.length&&this.destination.complete()},e}(r.a),ct=function(t){function e(e,n){var a=t.call(this)||this;return a.source=e,a.subscriptionDelay=n,a}return a.__extends(e,t),e.prototype._subscribe=function(t){this.subscriptionDelay.subscribe(new lt(t,this.source))},e}(it.a),lt=function(t){function e(e,n){var a=t.call(this)||this;return a.parent=e,a.source=n,a.sourceSubscribed=!1,a}return a.__extends(e,t),e.prototype._next=function(t){this.subscribeToSource()},e.prototype._error=function(t){this.unsubscribe(),this.parent.error(t)},e.prototype._complete=function(){this.unsubscribe(),this.subscribeToSource()},e.prototype.subscribeToSource=function(){this.sourceSubscribed||(this.sourceSubscribed=!0,this.unsubscribe(),this.source.subscribe(this.parent))},e}(g.a);function dt(){return function(t){return t.lift(new pt)}}var pt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new ft(t))},t}(),ft=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype._next=function(t){t.observe(this.destination)},e}(g.a),ht=n("ou9H"),gt=n("ad02");function mt(t,e){return Object(gt.a)(function(n,a){return e?e(n[t],a[t]):n[t]===a[t]})}var bt=n("b7mW"),yt=n("VnD/"),vt=n("tNVB"),xt=n("t9fZ");function _t(t,e){if(t<0)throw new bt.a;var n=arguments.length>=2;return function(a){return a.pipe(Object(yt.a)(function(e,n){return n===t}),Object(xt.a)(1),n?Object(J.a)(e):Object(vt.a)(function(){return new bt.a}))}}var Tt=n("IUTb"),wt=n("PU8L"),St=n("G5J1"),Ot=n("dEwP");function kt(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n=t[t.length-1];Object(x.a)(n)?t.pop():n=null;var a=t.length;return 1!==a||n?a>0?Object(Ot.a)(e,Object(Tt.a)(t,n)):Object(Ot.a)(e,Object(St.b)(n)):Object(Ot.a)(e,Object(wt.a)(t[0]))}}var Ct=n("zAZS");function It(){return function(t){return t.lift(new Rt)}}var Rt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Nt(t))},t}(),Nt=function(t){function e(e){var n=t.call(this,e)||this;return n.hasCompleted=!1,n.hasSubscription=!1,n}return a.__extends(e,t),e.prototype._next=function(t){this.hasSubscription||(this.hasSubscription=!0,this.add(Object(i.a)(this,t)))},e.prototype._complete=function(){this.hasCompleted=!0,this.hasSubscription||this.destination.complete()},e.prototype.notifyComplete=function(t){this.remove(t),this.hasSubscription=!1,this.hasCompleted&&this.destination.complete()},e}(r.a),Dt=n("rPjj"),At=n("67Y/");function Et(t,e){return e?function(n){return n.pipe(Et(function(n,a){return Object(F.a)(t(n,a)).pipe(Object(At.a)(function(t,r){return e(n,t,a,r)}))}))}:function(e){return e.lift(new Lt(t))}}var Lt=function(){function t(t){this.project=t}return t.prototype.call=function(t,e){return e.subscribe(new Pt(t,this.project))},t}(),Pt=function(t){function e(e,n){var a=t.call(this,e)||this;return a.project=n,a.hasSubscription=!1,a.hasCompleted=!1,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){this.hasSubscription||this.tryNext(t)},e.prototype.tryNext=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.hasSubscription=!0,this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=new Dt.a(this,void 0,void 0);this.destination.add(a),Object(i.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,this.hasSubscription||this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyError=function(t){this.destination.error(t)},e.prototype.notifyComplete=function(t){this.destination.remove(t),this.hasSubscription=!1,this.hasCompleted&&this.destination.complete()},e}(r.a);function Mt(t,e,n){return void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=void 0),e=(e||0)<1?Number.POSITIVE_INFINITY:e,function(a){return a.lift(new qt(t,e,n))}}var qt=function(){function t(t,e,n){this.project=t,this.concurrent=e,this.scheduler=n}return t.prototype.call=function(t,e){return e.subscribe(new jt(t,this.project,this.concurrent,this.scheduler))},t}(),jt=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.project=n,i.concurrent=a,i.scheduler=r,i.index=0,i.active=0,i.hasCompleted=!1,a<Number.POSITIVE_INFINITY&&(i.buffer=[]),i}return a.__extends(e,t),e.dispatch=function(t){t.subscriber.subscribeToProjection(t.result,t.value,t.index)},e.prototype._next=function(t){var n=this.destination;if(n.closed)this._complete();else{var a=this.index++;if(this.active<this.concurrent){n.next(t);try{var r=(0,this.project)(t,a);this.scheduler?this.destination.add(this.scheduler.schedule(e.dispatch,0,{subscriber:this,result:r,value:t,index:a})):this.subscribeToProjection(r,t,a)}catch(i){n.error(i)}}else this.buffer.push(t)}},e.prototype.subscribeToProjection=function(t,e,n){this.active++,this.destination.add(Object(i.a)(this,t,e,n))},e.prototype._complete=function(){this.hasCompleted=!0,this.hasCompleted&&0===this.active&&this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this._next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.destination.remove(t),this.active--,e&&e.length>0&&this._next(e.shift()),this.hasCompleted&&0===this.active&&this.destination.complete()},e}(r.a),Ft=n("2WpN");function zt(t,e){if("function"!=typeof t)throw new TypeError("predicate is not a function");return function(n){return n.lift(new Gt(t,n,!1,e))}}var Gt=function(){function t(t,e,n,a){this.predicate=t,this.source=e,this.yieldIndex=n,this.thisArg=a}return t.prototype.call=function(t,e){return e.subscribe(new Yt(t,this.predicate,this.source,this.yieldIndex,this.thisArg))},t}(),Yt=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.predicate=n,o.source=a,o.yieldIndex=r,o.thisArg=i,o.index=0,o}return a.__extends(e,t),e.prototype.notifyComplete=function(t){var e=this.destination;e.next(t),e.complete(),this.unsubscribe()},e.prototype._next=function(t){var e=this.predicate,n=this.thisArg,a=this.index++;try{e.call(n||this,t,a,this.source)&&this.notifyComplete(this.yieldIndex?a:t)}catch(r){this.destination.error(r)}},e.prototype._complete=function(){this.notifyComplete(this.yieldIndex?-1:void 0)},e}(g.a);function Ht(t,e){return function(n){return n.lift(new Gt(t,n,!0,e))}}var Vt=n("P6uZ"),Bt=n("IxPp");function Ut(){return function(t){return t.lift(new Wt)}}var Wt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Kt(t))},t}(),Kt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype._next=function(t){},e}(g.a);function $t(){return function(t){return t.lift(new Zt)}}var Zt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Xt(t))},t}(),Xt=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.notifyComplete=function(t){var e=this.destination;e.next(t),e.complete()},e.prototype._next=function(t){this.notifyComplete(!1)},e.prototype._complete=function(){this.notifyComplete(!0)},e}(g.a),Jt=n("w1EH");function Qt(t){return function(e){return e.lift(new te(t))}}var te=function(){function t(t){this.value=t}return t.prototype.call=function(t,e){return e.subscribe(new ee(t,this.value))},t}(),ee=function(t){function e(e,n){var a=t.call(this,e)||this;return a.value=n,a}return a.__extends(e,t),e.prototype._next=function(t){this.destination.next(this.value)},e}(g.a);function ne(){return function(t){return t.lift(new ae)}}var ae=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new re(t))},t}(),re=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype._next=function(t){this.destination.next(tt.a.createNext(t))},e.prototype._error=function(t){var e=this.destination;e.next(tt.a.createError(t)),e.complete()},e.prototype._complete=function(){var t=this.destination;t.next(tt.a.createComplete()),t.complete()},e}(g.a),ie=n("Qgas");function oe(t){var e="function"==typeof t?function(e,n){return t(e,n)>0?e:n}:function(t,e){return t>e?t:e};return Object(ie.a)(e)}var se=n("p0ib");function ue(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(se.a.apply(void 0,[e].concat(t)))}}var ce=n("Zn8D"),le=n("psW0");function de(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"function"==typeof e?Object(le.a)(function(){return t},e,n):("number"==typeof e&&(n=e),Object(le.a)(function(){return t},n))}function pe(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),function(a){return a.lift(new fe(t,e,n))}}var fe=function(){function t(t,e,n){this.accumulator=t,this.seed=e,this.concurrent=n}return t.prototype.call=function(t,e){return e.subscribe(new he(t,this.accumulator,this.seed,this.concurrent))},t}(),he=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.accumulator=n,i.acc=a,i.concurrent=r,i.hasValue=!1,i.hasCompleted=!1,i.buffer=[],i.active=0,i.index=0,i}return a.__extends(e,t),e.prototype._next=function(t){if(this.active<this.concurrent){var e=this.index++,n=this.destination,a=void 0;try{a=(0,this.accumulator)(this.acc,t,e)}catch(r){return n.error(r)}this.active++,this._innerSub(a,t,e)}else this.buffer.push(t)},e.prototype._innerSub=function(t,e,n){var a=new Dt.a(this,void 0,void 0);this.destination.add(a),Object(i.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&(!1===this.hasValue&&this.destination.next(this.acc),this.destination.complete()),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.destination;this.acc=e,this.hasValue=!0,i.next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.destination.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&(!1===this.hasValue&&this.destination.next(this.acc),this.destination.complete())},e}(r.a);function ge(t){var e="function"==typeof t?function(e,n){return t(e,n)<0?e:n}:function(t,e){return t<e?t:e};return Object(ie.a)(e)}var me=n("xlPZ"),be=n("mZXl");function ye(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 1===t.length&&Object(j.a)(t[0])&&(t=t[0]),function(e){return e.lift(new ve(t))}}var ve=function(){function t(t){this.nextSources=t}return t.prototype.call=function(t,e){return e.subscribe(new xe(t,this.nextSources))},t}(),xe=function(t){function e(e,n){var a=t.call(this,e)||this;return a.destination=e,a.nextSources=n,a}return a.__extends(e,t),e.prototype.notifyError=function(t,e){this.subscribeToNextSource()},e.prototype.notifyComplete=function(t){this.subscribeToNextSource()},e.prototype._error=function(t){this.subscribeToNextSource(),this.unsubscribe()},e.prototype._complete=function(){this.subscribeToNextSource(),this.unsubscribe()},e.prototype.subscribeToNextSource=function(){var t=this.nextSources.shift();if(t){var e=new Dt.a(this,void 0,void 0);this.destination.add(e),Object(i.a)(this,t,void 0,void 0,e)}else this.destination.complete()},e}(r.a);function _e(){return function(t){return t.lift(new Te)}}var Te=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new we(t))},t}(),we=function(t){function e(e){var n=t.call(this,e)||this;return n.hasPrev=!1,n}return a.__extends(e,t),e.prototype._next=function(t){this.hasPrev?this.destination.next([this.prev,t]):this.hasPrev=!0,this.prev=t},e}(g.a);function Se(t,e){function n(){return!n.pred.apply(n.thisArg,arguments)}return n.pred=t,n.thisArg=e,n}function Oe(t,e){return function(n){return[Object(yt.a)(t,e)(n),Object(yt.a)(Se(t,e))(n)]}}function ke(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(0===n)throw new Error("list of properties cannot be empty.");return function(e){return Object(At.a)(function(t,e){return function(n){for(var a=n,r=0;r<e;r++){var i=a[t[r]];if(void 0===i)return;a=i}return a}}(t,n))(e)}}var Ce=n("K9Ia");function Ie(t){return t?Object(me.a)(function(){return new Ce.a},t):Object(me.a)(new Ce.a)}var Re=n("26FU");function Ne(t){return function(e){return Object(me.a)(new Re.a(t))(e)}}var De=n("svcd");function Ae(){return function(t){return Object(me.a)(new De.a)(t)}}var Ee=n("S5bw");function Le(t,e,n,a){n&&"function"!=typeof n&&(a=n);var r="function"==typeof n?n:void 0,i=new Ee.a(t,e,a);return function(t){return Object(me.a)(function(){return i},r)(t)}}var Pe=n("W0Ae");function Me(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return 1===t.length&&Object(j.a)(t[0])&&(t=t[0]),e.lift.call(Pe.a.apply(void 0,[e].concat(t)))}}function qe(t){return void 0===t&&(t=-1),function(e){return 0===t?Object(St.b)():e.lift(new je(t<0?-1:t-1,e))}}var je=function(){function t(t,e){this.count=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Fe(t,this.count,this.source))},t}(),Fe=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.count=n,r.source=a,r}return a.__extends(e,t),e.prototype.complete=function(){if(!this.isStopped){var e=this.source,n=this.count;if(0===n)return t.prototype.complete.call(this);n>-1&&(this.count=n-1),e.subscribe(this._unsubscribeAndRecycle())}},e}(g.a);function ze(t){return function(e){return e.lift(new Ge(t))}}var Ge=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){return e.subscribe(new Ye(t,this.notifier,e))},t}(),Ye=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.notifier=n,r.source=a,r.sourceIsBeingSubscribedTo=!0,r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.sourceIsBeingSubscribedTo=!0,this.source.subscribe(this)},e.prototype.notifyComplete=function(e){if(!1===this.sourceIsBeingSubscribedTo)return t.prototype.complete.call(this)},e.prototype.complete=function(){if(this.sourceIsBeingSubscribedTo=!1,!this.isStopped){if(this.retries||this.subscribeToRetries(),!this.retriesSubscription||this.retriesSubscription.closed)return t.prototype.complete.call(this);this._unsubscribeAndRecycle(),this.notifications.next()}},e.prototype._unsubscribe=function(){var t=this.notifications,e=this.retriesSubscription;t&&(t.unsubscribe(),this.notifications=null),e&&(e.unsubscribe(),this.retriesSubscription=null),this.retries=null},e.prototype._unsubscribeAndRecycle=function(){var e=this._unsubscribe;return this._unsubscribe=null,t.prototype._unsubscribeAndRecycle.call(this),this._unsubscribe=e,this},e.prototype.subscribeToRetries=function(){var e;this.notifications=new Ce.a;try{e=(0,this.notifier)(this.notifications)}catch(n){return t.prototype.complete.call(this)}this.retries=e,this.retriesSubscription=Object(i.a)(this,e)},e}(r.a);function He(t){return void 0===t&&(t=-1),function(e){return e.lift(new Ve(t,e))}}var Ve=function(){function t(t,e){this.count=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Be(t,this.count,this.source))},t}(),Be=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.count=n,r.source=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=this.source,a=this.count;if(0===a)return t.prototype.error.call(this,e);a>-1&&(this.count=a-1),n.subscribe(this._unsubscribeAndRecycle())}},e}(g.a);function Ue(t){return function(e){return e.lift(new We(t,e))}}var We=function(){function t(t,e){this.notifier=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Ke(t,this.notifier,this.source))},t}(),Ke=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.notifier=n,r.source=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=this.errors,a=this.retries,r=this.retriesSubscription;if(a)this.errors=null,this.retriesSubscription=null;else{n=new Ce.a;try{a=(0,this.notifier)(n)}catch(o){return t.prototype.error.call(this,o)}r=Object(i.a)(this,a)}this._unsubscribeAndRecycle(),this.errors=n,this.retries=a,this.retriesSubscription=r,n.next(e)}},e.prototype._unsubscribe=function(){var t=this.errors,e=this.retriesSubscription;t&&(t.unsubscribe(),this.errors=null),e&&(e.unsubscribe(),this.retriesSubscription=null),this.retries=null},e.prototype.notifyNext=function(t,e,n,a,r){var i=this._unsubscribe;this._unsubscribe=null,this._unsubscribeAndRecycle(),this._unsubscribe=i,this.source.subscribe(this)},e}(r.a),$e=n("yGWI");function Ze(t){return function(e){return e.lift(new Xe(t))}}var Xe=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){var n=new Je(t),a=e.subscribe(n);return a.add(Object(i.a)(n,this.notifier)),a},t}(),Je=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasValue=!1,e}return a.__extends(e,t),e.prototype._next=function(t){this.value=t,this.hasValue=!0},e.prototype.notifyNext=function(t,e,n,a,r){this.emitValue()},e.prototype.notifyComplete=function(){this.emitValue()},e.prototype.emitValue=function(){this.hasValue&&(this.hasValue=!1,this.destination.next(this.value))},e}(r.a);function Qe(t,e){return void 0===e&&(e=c.a),function(n){return n.lift(new tn(t,e))}}var tn=function(){function t(t,e){this.period=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new en(t,this.period,this.scheduler))},t}(),en=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.period=n,r.scheduler=a,r.hasValue=!1,r.add(a.schedule(nn,n,{subscriber:r,period:n})),r}return a.__extends(e,t),e.prototype._next=function(t){this.lastValue=t,this.hasValue=!0},e.prototype.notifyNext=function(){this.hasValue&&(this.hasValue=!1,this.destination.next(this.lastValue))},e}(g.a);function nn(t){var e=t.period;t.subscriber.notifyNext(),this.schedule(t,e)}var an=n("dC0D");function rn(t,e){return function(n){return n.lift(new on(t,e))}}var on=function(){function t(t,e){this.compareTo=t,this.comparator=e}return t.prototype.call=function(t,e){return e.subscribe(new sn(t,this.compareTo,this.comparator))},t}(),sn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.compareTo=n,r.comparator=a,r._a=[],r._b=[],r._oneComplete=!1,r.destination.add(n.subscribe(new un(e,r))),r}return a.__extends(e,t),e.prototype._next=function(t){this._oneComplete&&0===this._b.length?this.emit(!1):(this._a.push(t),this.checkValues())},e.prototype._complete=function(){this._oneComplete?this.emit(0===this._a.length&&0===this._b.length):this._oneComplete=!0,this.unsubscribe()},e.prototype.checkValues=function(){for(var t=this._a,e=this._b,n=this.comparator;t.length>0&&e.length>0;){var a=t.shift(),r=e.shift(),i=!1;try{i=n?n(a,r):a===r}catch(o){this.destination.error(o)}i||this.emit(!1)}},e.prototype.emit=function(t){var e=this.destination;e.next(t),e.complete()},e.prototype.nextB=function(t){this._oneComplete&&0===this._a.length?this.emit(!1):(this._b.push(t),this.checkValues())},e.prototype.completeB=function(){this._oneComplete?this.emit(0===this._a.length&&0===this._b.length):this._oneComplete=!0},e}(g.a),un=function(t){function e(e,n){var a=t.call(this,e)||this;return a.parent=n,a}return a.__extends(e,t),e.prototype._next=function(t){this.parent.nextB(t)},e.prototype._error=function(t){this.parent.error(t),this.unsubscribe()},e.prototype._complete=function(){this.parent.completeB(),this.unsubscribe()},e}(g.a),cn=n("S1nX"),ln=n("klSw"),dn=n("3fWJ");function pn(t){return function(e){return e.lift(new fn(t,e))}}var fn=function(){function t(t,e){this.predicate=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new hn(t,this.predicate,this.source))},t}(),hn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.source=a,r.seenValue=!1,r.index=0,r}return a.__extends(e,t),e.prototype.applySingleValue=function(t){this.seenValue?this.destination.error("Sequence contains more than one element"):(this.seenValue=!0,this.singleValue=t)},e.prototype._next=function(t){var e=this.index++;this.predicate?this.tryNext(t,e):this.applySingleValue(t)},e.prototype.tryNext=function(t,e){try{this.predicate(t,e,this.source)&&this.applySingleValue(t)}catch(n){this.destination.error(n)}},e.prototype._complete=function(){var t=this.destination;this.index>0?(t.next(this.seenValue?this.singleValue:void 0),t.complete()):t.error(new dn.a)},e}(g.a);function gn(t){return function(e){return e.lift(new mn(t))}}var mn=function(){function t(t){this.total=t}return t.prototype.call=function(t,e){return e.subscribe(new bn(t,this.total))},t}(),bn=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){++this.count>this.total&&this.destination.next(t)},e}(g.a);function yn(t){return function(e){return e.lift(new vn(t))}}var vn=function(){function t(t){if(this._skipCount=t,this._skipCount<0)throw new bt.a}return t.prototype.call=function(t,e){return e.subscribe(0===this._skipCount?new g.a(t):new xn(t,this._skipCount))},t}(),xn=function(t){function e(e,n){var a=t.call(this,e)||this;return a._skipCount=n,a._count=0,a._ring=new Array(n),a}return a.__extends(e,t),e.prototype._next=function(t){var e=this._skipCount,n=this._count++;if(n<e)this._ring[n]=t;else{var a=n%e,r=this._ring,i=r[a];r[a]=t,this.destination.next(i)}},e}(g.a);function _n(t){return function(e){return e.lift(new Tn(t))}}var Tn=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){return e.subscribe(new wn(t,this.notifier))},t}(),wn=function(t){function e(e,n){var a=t.call(this,e)||this;a.hasValue=!1;var r=new Dt.a(a,void 0,void 0);return a.add(r),a.innerSubscription=r,Object(i.a)(a,n,void 0,void 0,r),a}return a.__extends(e,t),e.prototype._next=function(e){this.hasValue&&t.prototype._next.call(this,e)},e.prototype.notifyNext=function(t,e,n,a,r){this.hasValue=!0,this.innerSubscription&&this.innerSubscription.unsubscribe()},e.prototype.notifyComplete=function(){},e}(r.a);function Sn(t){return function(e){return e.lift(new On(t))}}var On=function(){function t(t){this.predicate=t}return t.prototype.call=function(t,e){return e.subscribe(new kn(t,this.predicate))},t}(),kn=function(t){function e(e,n){var a=t.call(this,e)||this;return a.predicate=n,a.skipping=!0,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.destination;this.skipping&&this.tryCallPredicate(t),this.skipping||e.next(t)},e.prototype.tryCallPredicate=function(t){try{var e=this.predicate(t,this.index++);this.skipping=Boolean(e)}catch(n){this.destination.error(n)}},e}(g.a),Cn=n("p0Sj"),In=n("KQya"),Rn=n("/21U"),Nn=function(t){function e(e,n,a){void 0===n&&(n=0),void 0===a&&(a=In.a);var r=t.call(this)||this;return r.source=e,r.delayTime=n,r.scheduler=a,(!Object(Rn.a)(n)||n<0)&&(r.delayTime=0),a&&"function"==typeof a.schedule||(r.scheduler=In.a),r}return a.__extends(e,t),e.create=function(t,n,a){return void 0===n&&(n=0),void 0===a&&(a=In.a),new e(t,n,a)},e.dispatch=function(t){return this.add(t.source.subscribe(t.subscriber))},e.prototype._subscribe=function(t){return this.scheduler.schedule(e.dispatch,this.delayTime,{source:this.source,subscriber:t})},e}(it.a);function Dn(t,e){return void 0===e&&(e=0),function(n){return n.lift(new An(t,e))}}var An=function(){function t(t,e){this.scheduler=t,this.delay=e}return t.prototype.call=function(t,e){return new Nn(e,this.delay,this.scheduler).subscribe(t)},t}(),En=n("15JJ"),Ln=n("mChF");function Pn(){return Object(En.a)(Ln.a)}var Mn=n("zQHH"),qn=n("AxiF");function jn(t){return function(e){return e.lift(new Fn(t))}}var Fn=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){var n=new zn(t),a=Object(i.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n},t}(),zn=function(t){function e(e){var n=t.call(this,e)||this;return n.seenValue=!1,n}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.seenValue=!0,this.complete()},e.prototype.notifyComplete=function(){},e}(r.a);function Gn(t,e){return void 0===e&&(e=!1),function(n){return n.lift(new Yn(t,e))}}var Yn=function(){function t(t,e){this.predicate=t,this.inclusive=e}return t.prototype.call=function(t,e){return e.subscribe(new Hn(t,this.predicate,this.inclusive))},t}(),Hn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.inclusive=a,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e,n=this.destination;try{e=this.predicate(t,this.index++)}catch(a){return void n.error(a)}this.nextOrComplete(t,e)},e.prototype.nextOrComplete=function(t,e){var n=this.destination;Boolean(e)?n.next(t):(this.inclusive&&n.next(t),n.complete())},e}(g.a),Vn=n("xMyE"),Bn={leading:!0,trailing:!1};function Un(t,e){return void 0===e&&(e=Bn),function(n){return n.lift(new Wn(t,e.leading,e.trailing))}}var Wn=function(){function t(t,e,n){this.durationSelector=t,this.leading=e,this.trailing=n}return t.prototype.call=function(t,e){return e.subscribe(new Kn(t,this.durationSelector,this.leading,this.trailing))},t}(),Kn=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.destination=e,i.durationSelector=n,i._leading=a,i._trailing=r,i._hasValue=!1,i}return a.__extends(e,t),e.prototype._next=function(t){this._hasValue=!0,this._sendValue=t,this._throttled||(this._leading?this.send():this.throttle(t))},e.prototype.send=function(){var t=this._sendValue;this._hasValue&&(this.destination.next(t),this.throttle(t)),this._hasValue=!1,this._sendValue=null},e.prototype.throttle=function(t){var e=this.tryDurationSelector(t);e&&this.add(this._throttled=Object(i.a)(this,e))},e.prototype.tryDurationSelector=function(t){try{return this.durationSelector(t)}catch(e){return this.destination.error(e),null}},e.prototype.throttlingDone=function(){var t=this._throttled,e=this._trailing;t&&t.unsubscribe(),this._throttled=null,e&&this.send()},e.prototype.notifyNext=function(t,e,n,a,r){this.throttlingDone()},e.prototype.notifyComplete=function(){this.throttlingDone()},e}(r.a);function $n(t,e,n){return void 0===e&&(e=c.a),void 0===n&&(n=Bn),function(a){return a.lift(new Zn(t,e,n.leading,n.trailing))}}var Zn=function(){function t(t,e,n,a){this.duration=t,this.scheduler=e,this.leading=n,this.trailing=a}return t.prototype.call=function(t,e){return e.subscribe(new Xn(t,this.duration,this.scheduler,this.leading,this.trailing))},t}(),Xn=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.duration=n,o.scheduler=a,o.leading=r,o.trailing=i,o._hasTrailingValue=!1,o._trailingValue=null,o}return a.__extends(e,t),e.prototype._next=function(t){this.throttled?this.trailing&&(this._trailingValue=t,this._hasTrailingValue=!0):(this.add(this.throttled=this.scheduler.schedule(Jn,this.duration,{subscriber:this})),this.leading&&this.destination.next(t))},e.prototype._complete=function(){this._hasTrailingValue?(this.destination.next(this._trailingValue),this.destination.complete()):this.destination.complete()},e.prototype.clearThrottle=function(){var t=this.throttled;t&&(this.trailing&&this._hasTrailingValue&&(this.destination.next(this._trailingValue),this._trailingValue=null,this._hasTrailingValue=!1),t.unsubscribe(),this.remove(t),this.throttled=null)},e}(g.a);function Jn(t){t.subscriber.clearThrottle()}var Qn=n("lYZG");function ta(t){return void 0===t&&(t=c.a),function(e){return Object(Qn.a)(function(){return e.pipe(Object(an.a)(function(e,n){var a=e.current;return{value:n,current:t.now(),last:a}},{current:t.now(),value:void 0,last:void 0}),Object(At.a)(function(t){return new ea(t.value,t.current-t.last)}))})}}var ea=function(){return function(t,e){this.value=t,this.interval=e}}(),na=n("3U0i");function aa(t,e,n){return void 0===n&&(n=c.a),function(a){var r=Q(t),i=r?+t-n.now():Math.abs(t);return a.lift(new ra(i,r,e,n))}}var ra=function(){function t(t,e,n,a){this.waitFor=t,this.absoluteTimeout=e,this.withObservable=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new ia(t,this.absoluteTimeout,this.waitFor,this.withObservable,this.scheduler))},t}(),ia=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.absoluteTimeout=n,o.waitFor=a,o.withObservable=r,o.scheduler=i,o.action=null,o.scheduleTimeout(),o}return a.__extends(e,t),e.dispatchTimeout=function(t){var e=t.withObservable;t._unsubscribeAndRecycle(),t.add(Object(i.a)(t,e))},e.prototype.scheduleTimeout=function(){var t=this.action;t?this.action=t.schedule(this,this.waitFor):this.add(this.action=this.scheduler.schedule(e.dispatchTimeout,this.waitFor,this))},e.prototype._next=function(e){this.absoluteTimeout||this.scheduleTimeout(),t.prototype._next.call(this,e)},e.prototype._unsubscribe=function(){this.action=null,this.scheduler=null,this.withObservable=null},e}(r.a),oa=n("XlPw");function sa(t,e){return void 0===e&&(e=c.a),aa(t,Object(oa.a)(new na.a),e)}function ua(t){return void 0===t&&(t=c.a),Object(At.a)(function(e){return new ca(e,t.now())})}var ca=function(){return function(t,e){this.value=t,this.timestamp=e}}(),la=n("R+r5");function da(t){return function(e){return e.lift(new pa(t))}}var pa=function(){function t(t){this.windowBoundaries=t}return t.prototype.call=function(t,e){var n=new fa(t),a=e.subscribe(n);return a.closed||n.add(Object(i.a)(n,this.windowBoundaries)),a},t}(),fa=function(t){function e(e){var n=t.call(this,e)||this;return n.window=new Ce.a,e.next(n.window),n}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.openWindow()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){this._complete()},e.prototype._next=function(t){this.window.next(t)},e.prototype._error=function(t){this.window.error(t),this.destination.error(t)},e.prototype._complete=function(){this.window.complete(),this.destination.complete()},e.prototype._unsubscribe=function(){this.window=null},e.prototype.openWindow=function(){var t=this.window;t&&t.complete();var e=this.destination,n=this.window=new Ce.a;e.next(n)},e}(r.a);function ha(t,e){return void 0===e&&(e=0),function(n){return n.lift(new ga(t,e))}}var ga=function(){function t(t,e){this.windowSize=t,this.startWindowEvery=e}return t.prototype.call=function(t,e){return e.subscribe(new ma(t,this.windowSize,this.startWindowEvery))},t}(),ma=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.destination=e,r.windowSize=n,r.startWindowEvery=a,r.windows=[new Ce.a],r.count=0,e.next(r.windows[0]),r}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.startWindowEvery>0?this.startWindowEvery:this.windowSize,n=this.destination,a=this.windowSize,r=this.windows,i=r.length,o=0;o<i&&!this.closed;o++)r[o].next(t);var s=this.count-a+1;if(s>=0&&s%e==0&&!this.closed&&r.shift().complete(),++this.count%e==0&&!this.closed){var u=new Ce.a;r.push(u),n.next(u)}},e.prototype._error=function(t){var e=this.windows;if(e)for(;e.length>0&&!this.closed;)e.shift().error(t);this.destination.error(t)},e.prototype._complete=function(){var t=this.windows;if(t)for(;t.length>0&&!this.closed;)t.shift().complete();this.destination.complete()},e.prototype._unsubscribe=function(){this.count=0,this.windows=null},e}(g.a);function ba(t){var e=c.a,n=null,a=Number.POSITIVE_INFINITY;return Object(x.a)(arguments[3])&&(e=arguments[3]),Object(x.a)(arguments[2])?e=arguments[2]:Object(Rn.a)(arguments[2])&&(a=arguments[2]),Object(x.a)(arguments[1])?e=arguments[1]:Object(Rn.a)(arguments[1])&&(n=arguments[1]),function(r){return r.lift(new ya(t,n,a,e))}}var ya=function(){function t(t,e,n,a){this.windowTimeSpan=t,this.windowCreationInterval=e,this.maxWindowSize=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new xa(t,this.windowTimeSpan,this.windowCreationInterval,this.maxWindowSize,this.scheduler))},t}(),va=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._numberOfNextedValues=0,e}return a.__extends(e,t),e.prototype.next=function(e){this._numberOfNextedValues++,t.prototype.next.call(this,e)},Object.defineProperty(e.prototype,"numberOfNextedValues",{get:function(){return this._numberOfNextedValues},enumerable:!0,configurable:!0}),e}(Ce.a),xa=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;o.destination=e,o.windowTimeSpan=n,o.windowCreationInterval=a,o.maxWindowSize=r,o.scheduler=i,o.windows=[];var s=o.openWindow();if(null!==a&&a>=0){var u={windowTimeSpan:n,windowCreationInterval:a,subscriber:o,scheduler:i};o.add(i.schedule(wa,n,{subscriber:o,window:s,context:null})),o.add(i.schedule(Ta,a,u))}else o.add(i.schedule(_a,n,{subscriber:o,window:s,windowTimeSpan:n}));return o}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.windows,n=e.length,a=0;a<n;a++){var r=e[a];r.closed||(r.next(t),r.numberOfNextedValues>=this.maxWindowSize&&this.closeWindow(r))}},e.prototype._error=function(t){for(var e=this.windows;e.length>0;)e.shift().error(t);this.destination.error(t)},e.prototype._complete=function(){for(var t=this.windows;t.length>0;){var e=t.shift();e.closed||e.complete()}this.destination.complete()},e.prototype.openWindow=function(){var t=new va;return this.windows.push(t),this.destination.next(t),t},e.prototype.closeWindow=function(t){t.complete();var e=this.windows;e.splice(e.indexOf(t),1)},e}(g.a);function _a(t){var e=t.subscriber,n=t.windowTimeSpan,a=t.window;a&&e.closeWindow(a),t.window=e.openWindow(),this.schedule(t,n)}function Ta(t){var e=t.windowTimeSpan,n=t.subscriber,a=t.scheduler,r=t.windowCreationInterval,i=n.openWindow(),o={action:this,subscription:null};o.subscription=a.schedule(wa,e,{subscriber:n,window:i,context:o}),this.add(o.subscription),this.schedule(t,r)}function wa(t){var e=t.subscriber,n=t.window,a=t.context;a&&a.action&&a.subscription&&a.action.remove(a.subscription),e.closeWindow(n)}function Sa(t,e){return function(n){return n.lift(new Oa(t,e))}}var Oa=function(){function t(t,e){this.openings=t,this.closingSelector=e}return t.prototype.call=function(t,e){return e.subscribe(new ka(t,this.openings,this.closingSelector))},t}(),ka=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.openings=n,r.closingSelector=a,r.contexts=[],r.add(r.openSubscription=Object(i.a)(r,n,n)),r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.contexts;if(e)for(var n=e.length,a=0;a<n;a++)e[a].window.next(t)},e.prototype._error=function(e){var n=this.contexts;if(this.contexts=null,n)for(var a=n.length,r=-1;++r<a;){var i=n[r];i.window.error(e),i.subscription.unsubscribe()}t.prototype._error.call(this,e)},e.prototype._complete=function(){var e=this.contexts;if(this.contexts=null,e)for(var n=e.length,a=-1;++a<n;){var r=e[a];r.window.complete(),r.subscription.unsubscribe()}t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.contexts;if(this.contexts=null,t)for(var e=t.length,n=-1;++n<e;){var a=t[n];a.window.unsubscribe(),a.subscription.unsubscribe()}},e.prototype.notifyNext=function(t,e,n,a,r){if(t===this.openings){var o=void 0;try{o=(0,this.closingSelector)(e)}catch(d){return this.error(d)}var s=new Ce.a,u=new I.a,c={window:s,subscription:u};this.contexts.push(c);var l=Object(i.a)(this,o,c);l.closed?this.closeWindow(this.contexts.length-1):(l.context=c,u.add(l)),this.destination.next(s)}else this.closeWindow(this.contexts.indexOf(t))},e.prototype.notifyError=function(t){this.error(t)},e.prototype.notifyComplete=function(t){t!==this.openSubscription&&this.closeWindow(this.contexts.indexOf(t.context))},e.prototype.closeWindow=function(t){if(-1!==t){var e=this.contexts,n=e[t],a=n.window,r=n.subscription;e.splice(t,1),a.complete(),r.unsubscribe()}},e}(r.a);function Ca(t){return function(e){return e.lift(new Ia(t))}}var Ia=function(){function t(t){this.closingSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new Ra(t,this.closingSelector))},t}(),Ra=function(t){function e(e,n){var a=t.call(this,e)||this;return a.destination=e,a.closingSelector=n,a.openWindow(),a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.openWindow(r)},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){this.openWindow(t)},e.prototype._next=function(t){this.window.next(t)},e.prototype._error=function(t){this.window.error(t),this.destination.error(t),this.unsubscribeClosingNotification()},e.prototype._complete=function(){this.window.complete(),this.destination.complete(),this.unsubscribeClosingNotification()},e.prototype.unsubscribeClosingNotification=function(){this.closingNotification&&this.closingNotification.unsubscribe()},e.prototype.openWindow=function(t){void 0===t&&(t=null),t&&(this.remove(t),t.unsubscribe());var e=this.window;e&&e.complete();var n,a=this.window=new Ce.a;this.destination.next(a);try{n=(0,this.closingSelector)()}catch(r){return this.destination.error(r),void this.window.error(r)}this.add(this.closingNotification=Object(i.a)(this,n))},e}(r.a);function Na(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n;return"function"==typeof t[t.length-1]&&(n=t.pop()),e.lift(new Da(t,n))}}var Da=function(){function t(t,e){this.observables=t,this.project=e}return t.prototype.call=function(t,e){return e.subscribe(new Aa(t,this.observables,this.project))},t}(),Aa=function(t){function e(e,n,a){var r=t.call(this,e)||this;r.observables=n,r.project=a,r.toRespond=[];var o=n.length;r.values=new Array(o);for(var s=0;s<o;s++)r.toRespond.push(s);for(s=0;s<o;s++){var u=n[s];r.add(Object(i.a)(r,u,u,s))}return r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values[n]=e;var i=this.toRespond;if(i.length>0){var o=i.indexOf(n);-1!==o&&i.splice(o,1)}},e.prototype.notifyComplete=function(){},e.prototype._next=function(t){if(0===this.toRespond.length){var e=[t].concat(this.values);this.project?this._tryProject(e):this.destination.next(e)}},e.prototype._tryProject=function(t){var e;try{e=this.project.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(r.a),Ea=n("909l");function La(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(Ea.b.apply(void 0,[e].concat(t)))}}function Pa(t){return function(e){return e.lift(new Ea.a(t))}}n.d(e,"audit",function(){return o}),n.d(e,"auditTime",function(){return d}),n.d(e,"buffer",function(){return p}),n.d(e,"bufferCount",function(){return m}),n.d(e,"bufferTime",function(){return _}),n.d(e,"bufferToggle",function(){return R}),n.d(e,"bufferWhen",function(){return A}),n.d(e,"catchError",function(){return P.a}),n.d(e,"combineAll",function(){return q}),n.d(e,"combineLatest",function(){return z}),n.d(e,"concat",function(){return G.a}),n.d(e,"concatAll",function(){return Y.a}),n.d(e,"concatMap",function(){return H.a}),n.d(e,"concatMapTo",function(){return V}),n.d(e,"count",function(){return B}),n.d(e,"debounce",function(){return K}),n.d(e,"debounceTime",function(){return X.a}),n.d(e,"defaultIfEmpty",function(){return J.a}),n.d(e,"delay",function(){return et}),n.d(e,"delayWhen",function(){return ot}),n.d(e,"dematerialize",function(){return dt}),n.d(e,"distinct",function(){return ht.a}),n.d(e,"distinctUntilChanged",function(){return gt.a}),n.d(e,"distinctUntilKeyChanged",function(){return mt}),n.d(e,"elementAt",function(){return _t}),n.d(e,"endWith",function(){return kt}),n.d(e,"every",function(){return Ct.a}),n.d(e,"exhaust",function(){return It}),n.d(e,"exhaustMap",function(){return Et}),n.d(e,"expand",function(){return Mt}),n.d(e,"filter",function(){return yt.a}),n.d(e,"finalize",function(){return Ft.a}),n.d(e,"find",function(){return zt}),n.d(e,"findIndex",function(){return Ht}),n.d(e,"first",function(){return Vt.a}),n.d(e,"groupBy",function(){return Bt.b}),n.d(e,"ignoreElements",function(){return Ut}),n.d(e,"isEmpty",function(){return $t}),n.d(e,"last",function(){return Jt.a}),n.d(e,"map",function(){return At.a}),n.d(e,"mapTo",function(){return Qt}),n.d(e,"materialize",function(){return ne}),n.d(e,"max",function(){return oe}),n.d(e,"merge",function(){return ue}),n.d(e,"mergeAll",function(){return ce.a}),n.d(e,"mergeMap",function(){return le.a}),n.d(e,"flatMap",function(){return le.a}),n.d(e,"mergeMapTo",function(){return de}),n.d(e,"mergeScan",function(){return pe}),n.d(e,"min",function(){return ge}),n.d(e,"multicast",function(){return me.a}),n.d(e,"observeOn",function(){return be.b}),n.d(e,"onErrorResumeNext",function(){return ye}),n.d(e,"pairwise",function(){return _e}),n.d(e,"partition",function(){return Oe}),n.d(e,"pluck",function(){return ke}),n.d(e,"publish",function(){return Ie}),n.d(e,"publishBehavior",function(){return Ne}),n.d(e,"publishLast",function(){return Ae}),n.d(e,"publishReplay",function(){return Le}),n.d(e,"race",function(){return Me}),n.d(e,"reduce",function(){return ie.a}),n.d(e,"repeat",function(){return qe}),n.d(e,"repeatWhen",function(){return ze}),n.d(e,"retry",function(){return He}),n.d(e,"retryWhen",function(){return Ue}),n.d(e,"refCount",function(){return $e.a}),n.d(e,"sample",function(){return Ze}),n.d(e,"sampleTime",function(){return Qe}),n.d(e,"scan",function(){return an.a}),n.d(e,"sequenceEqual",function(){return rn}),n.d(e,"share",function(){return cn.a}),n.d(e,"shareReplay",function(){return ln.a}),n.d(e,"single",function(){return pn}),n.d(e,"skip",function(){return gn}),n.d(e,"skipLast",function(){return yn}),n.d(e,"skipUntil",function(){return _n}),n.d(e,"skipWhile",function(){return Sn}),n.d(e,"startWith",function(){return Cn.a}),n.d(e,"subscribeOn",function(){return Dn}),n.d(e,"switchAll",function(){return Pn}),n.d(e,"switchMap",function(){return En.a}),n.d(e,"switchMapTo",function(){return Mn.a}),n.d(e,"take",function(){return xt.a}),n.d(e,"takeLast",function(){return qn.a}),n.d(e,"takeUntil",function(){return jn}),n.d(e,"takeWhile",function(){return Gn}),n.d(e,"tap",function(){return Vn.a}),n.d(e,"throttle",function(){return Un}),n.d(e,"throttleTime",function(){return $n}),n.d(e,"throwIfEmpty",function(){return vt.a}),n.d(e,"timeInterval",function(){return ta}),n.d(e,"timeout",function(){return sa}),n.d(e,"timeoutWith",function(){return aa}),n.d(e,"timestamp",function(){return ua}),n.d(e,"toArray",function(){return la.a}),n.d(e,"window",function(){return da}),n.d(e,"windowCount",function(){return ha}),n.d(e,"windowTime",function(){return ba}),n.d(e,"windowToggle",function(){return Sa}),n.d(e,"windowWhen",function(){return Ca}),n.d(e,"withLatestFrom",function(){return Na}),n.d(e,"zip",function(){return La}),n.d(e,"zipAll",function(){return Pa})},ajRT:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("CcnG"),r=function(){function t(){this.hide=new a.EventEmitter}return t.prototype.close=function(){this.modalRef&&this.modalRef.hide(),this.hide.emit()},t}()},atuK:function(t,e,n){"use strict";n.d(e,"a",function(){return Z}),n.d(e,"b",function(){return ct}),n.d(e,"c",function(){return Tt});var a=n("CcnG"),r=n("ARl4"),i=n("Ip0R");n("gIcY");var o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](2,[(t()(),a["\u0275ted"](0,null,["",""]))],null,function(t,e){t(e,0,0,e.component.day.label)})}var u=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.component.title)})}var l=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"button",[["class","current"]],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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.component.calendar.monthTitle)})}function p(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,2,"button",[["class","previous"]],[[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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\u2039"])),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275eld"](7,0,null,null,2,"button",[["class","current"]],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["\u0275eld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](9,null,["",""])),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275eld"](11,0,null,null,2,"button",[["class","next"]],[[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["\u0275eld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\u203a"]))],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 f=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"button",[["class","bs-decrease"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["-"])),(t()(),a["\u0275eld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"button",[["class","bs-increase"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["+"])),(t()(),a["\u0275eld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,1,"button",[["class","bs-decrease"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["-"])),(t()(),a["\u0275eld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,1,"button",[["class","bs-increase"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["+"])),(t()(),a["\u0275eld"](13,0,null,null,2,"button",[["class","switch-time-format"]],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,[""," "])),(t()(),a["\u0275eld"](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 g=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,c,u)),a["\u0275did"](1,49152,null,0,r.n,[],{title:[0,"title"]},null)],function(t,e){t(e,1,0,"hey there")},null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,h,f)),a["\u0275did"](1,49152,null,0,r.p,[],null,null)],null,null)}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["\u0275ncd"](null,1),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](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 v=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[""," "]))],null,function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275ted"](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 w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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},s,o)),a["\u0275did"](2,114688,null,0,r.m,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["\u0275ted"](3,null,["",""]))],function(t,e){t(e,2,0,e.context.$implicit)},function(t,e){t(e,1,0,a["\u0275nov"](e,2).day.isDisabled,a["\u0275nov"](e,2).day.isHovered,a["\u0275nov"](e,2).day.isOtherMonth,a["\u0275nov"](e,2).day.isOtherMonthHovered,a["\u0275nov"](e,2).day.isInRange,a["\u0275nov"](e,2).day.isSelectionStart,a["\u0275nov"](e,2).day.isSelectionEnd,a["\u0275nov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)})}function S(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,T)),a["\u0275did"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](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 O(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},p,l)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](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 k=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function C(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,2,0,e.context.$implicit.label)})}function I(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,C)),a["\u0275did"](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 R(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},p,l)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,I)),a["\u0275did"](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 N=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function D(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,2,0,e.context.$implicit.label)})}function A(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,D)),a["\u0275did"](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 E(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},p,l)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,A)),a["\u0275did"](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)}var L=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function P(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"button",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.context.$implicit.label)})}function M(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"button",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Custom Range"]))],null,null)}function q(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,P)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,M)),a["\u0275did"](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 j=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function z(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,F)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function G(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},R,k)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function Y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,G)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function H(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,N)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function V(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,H)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function B(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function U(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,q,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function W(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,z)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Y)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,V)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,B)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,U)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function K(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,W)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function $(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["role","dialog"],["style","position: absolute; display: block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},K,j)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.v,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var Z=a["\u0275ccf"]("bs-datepicker-container",r.v,$,{},{},[]),X=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function J(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function Q(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,J)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},R,k)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function et(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,tt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function nt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,N)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function at(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,nt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function it(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,q,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,Q)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,et)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,at)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,rt)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,it)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function st(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,ot)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function ut(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["role","dialog"],["style","position: absolute; display: block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},st,X)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.z,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var ct=a["\u0275ccf"]("bs-daterangepicker-container",r.z,ut,{},{},[]),lt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function dt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,dt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},R,k)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function ht(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,ft)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function gt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,N)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function mt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,gt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,q,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function vt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,pt)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ht)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,mt)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,bt)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,yt)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function xt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,vt)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function _t(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-datepicker-inline-container",[["style","display: inline-block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},xt,lt)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.A,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var Tt=a["\u0275ccf"]("bs-datepicker-inline-container",r.A,_t,{},{},[])},awvh:function(t,e,n){"use strict";function a(t){return Error.call(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(t,e){return e+1+") "+t.toString()}).join("\n  "):"",this.name="UnsubscriptionError",this.errors=t,this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},b1Dy:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},b5OY:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("pxLl");var a=function(){function t(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}return t.prototype.ngOnInit=function(){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}]},t.prototype.getCounters=function(t){var e=this;this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(function(t){e.counters=t},function(n){404===n.status?(n.preventDefault(),e.counters=null):t.error()})},t}()},b7mW:function(t,e,n){"use strict";function a(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},bOMt:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5r 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\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};t.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".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:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,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";n("wd/R").defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}()},bidN:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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+")"}}}}),t.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:r.Point,update:function(t){var e=this,n=e.getMeta();i.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||{},o=a.getScaleForId(r.xAxisID),s=a.getScaleForId(r.yAxisID),u=a._resolveElementOptions(t,e),c=a.getDataset().data[e],l=a.index,d=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof c?c:NaN,e,l),p=n?s.getBasePixel():s.getPixelForValue(c,e,l);t._xScale=o,t._yScale=s,t._options=u,t._datasetIndex=l,t._index=e,t._model={backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,hitRadius:u.hitRadius,pointStyle:u.pointStyle,rotation:u.rotation,radius:n?0:u.radius,skip:i.skip||isNaN(d)||isNaN(p),x:d,y:p},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=i.valueOrDefault(n.hoverBackgroundColor,i.getHoverColor(n.backgroundColor)),e.borderColor=i.valueOrDefault(n.hoverBorderColor,i.getHoverColor(n.borderColor)),e.borderWidth=i.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,o=this.chart,s=o.data.datasets[this.index],u=t.custom||{},c=o.options.elements.point,l=i.options.resolve,d=s.data[e],p={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=h.length;n<a;++n)p[r=h[n]]=l([u[r],s[r],c[r]],f,e);return p.radius=l([u.radius,d?d.r:void 0,s.radius,c.radius],f,e),p}})}},bpWZ:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("FO+L")),a(n("nhM1")),a(n("BARL"))},bpih:function(t,e,n){!function(t){"use strict";n("wd/R").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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},buEt:function(t,e,n){"use strict";n.r(e);var a=n("DtyJ");n.d(e,"Subject",function(){return a.Subject})},bxKX:function(t,e,n){!function(t){"use strict";n("wd/R").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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},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:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",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"))},cdu6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("g8vO");function s(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function u(t,e,n){var a=t.getPixelForTick(e);return n&&(a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}function c(t,e,n){return i.isArray(e)?i.longestText(t,n,e):t.measureText(e).width}function l(t){var e=i.valueOrDefault,n=a.global,r=e(t.fontSize,n.defaultFontSize),o=e(t.fontStyle,n.defaultFontStyle),s=e(t.fontFamily,n.defaultFontFamily);return{size:r,style:o,family:s,font:i.fontString(r,o,s)}}function d(t){return i.options.toLineHeight(i.valueOrDefault(t.lineHeight,1.2),i.valueOrDefault(t.fontSize,a.global.defaultFontSize))}a._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:"",lineHeight:1.2,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:o.formatters.values,minor:{},major:{}}}),t.exports=r.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(){i.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,o,s,u,c,l=this;for(l.beforeUpdate(),l.maxWidth=t,l.maxHeight=e,l.margins=i.extend({left:0,right:0,top:0,bottom:0},n),l.longestTextCache=l.longestTextCache||{},l.beforeSetDimensions(),l.setDimensions(),l.afterSetDimensions(),l.beforeDataLimits(),l.determineDataLimits(),l.afterDataLimits(),l.beforeBuildTicks(),u=l.buildTicks()||[],l.afterBuildTicks(),l.beforeTickToLabelConversion(),o=l.convertTicksToLabels(u)||l.ticks,l.afterTickToLabelConversion(),l.ticks=o,a=0,r=o.length;a<r;++a)s=o[a],(c=u[a])?c.label=s:u.push(c={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(){i.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){i.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(){i.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){i.callback(this.options.beforeDataLimits,[this])},determineDataLimits:i.noop,afterDataLimits:function(){i.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){i.callback(this.options.beforeBuildTicks,[this])},buildTicks:i.noop,afterBuildTicks:function(){i.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){i.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){i.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){i.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=s(t._ticks),r=l(n);e.font=r.font;var o=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var u,c=i.longestText(e,r.font,a,t.longestTextCache),d=c,p=t.getPixelForTick(1)-t.getPixelForTick(0)-6;d>p&&o<n.maxRotation;){var f=i.toRadians(o);if(u=Math.cos(f),Math.sin(f)*c>t.maxHeight){o--;break}o++,d=u*c}t.labelRotation=o},afterCalculateTickRotation:function(){i.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=s(t._ticks),a=t.options,r=a.ticks,o=a.scaleLabel,u=a.gridLines,p=a.display,f=t.isHorizontal(),h=l(r),g=a.gridLines.tickMarkLength;if(e.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:p&&u.drawTicks?g:0,e.height=f?p&&u.drawTicks?g:0:t.maxHeight,o.display&&p){var m=d(o)+i.options.toPadding(o.padding).height;f?e.height+=m:e.width+=m}if(r.display&&p){var b=i.longestText(t.ctx,h.font,n,t.longestTextCache),y=i.numberOfLabelLines(n),v=.5*h.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=b;var _=i.toRadians(t.labelRotation),T=Math.cos(_),w=Math.sin(_);e.height=Math.min(t.maxHeight,e.height+(w*b+h.size*y+v*(y-1)+v)+x),t.ctx.font=h.font;var S=c(t.ctx,n[0],h.font),O=c(t.ctx,n[n.length-1],h.font);0!==t.labelRotation?(t.paddingLeft="bottom"===a.position?T*S+3:T*v+3,t.paddingRight="bottom"===a.position?T*v+3:T*O+3):(t.paddingLeft=S/2+3,t.paddingRight=O/2+3)}else r.mirror?b=0:b+=x+v,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=h.size/2,t.paddingBottom=h.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(){i.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(i.isNullOrUndef(t))return NaN;if("number"==typeof t&&!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:i.noop,getPixelForValue:i.noop,getValueForPixel:i.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+Math.round(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+Math.round((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,r,o=this,s=o.isHorizontal(),u=o.options.ticks.minor,c=t.length,l=i.toRadians(o.labelRotation),d=Math.cos(l),p=o.longestLabelWidth*d,f=[];for(u.maxTicksLimit&&(r=u.maxTicksLimit),s&&(e=!1,(p+u.autoSkipPadding)*c>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((p+u.autoSkipPadding)*c/(o.width-(o.paddingLeft+o.paddingRight)))),r&&c>r&&(e=Math.max(e,Math.floor(c/r)))),n=0;n<c;n++)a=t[n],(e>1&&n%e>0||n%e==0&&n+e>=c)&&n!==c-1&&delete a.label,f.push(a);return f},draw:function(t){var e=this,n=e.options;if(n.display){var r=e.ctx,o=a.global,s=n.ticks.minor,c=n.ticks.major||s,p=n.gridLines,f=n.scaleLabel,h=0!==e.labelRotation,g=e.isHorizontal(),m=s.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),b=i.valueOrDefault(s.fontColor,o.defaultFontColor),y=l(s),v=i.valueOrDefault(c.fontColor,o.defaultFontColor),x=l(c),_=p.drawTicks?p.tickMarkLength:0,T=i.valueOrDefault(f.fontColor,o.defaultFontColor),w=l(f),S=i.options.toPadding(f.padding),O=i.toRadians(e.labelRotation),k=[],C=e.options.gridLines.lineWidth,I="right"===n.position?e.left:e.right-C-_,R="right"===n.position?e.left+_:e.right,N="bottom"===n.position?e.top+C:e.bottom-_-C,D="bottom"===n.position?e.top+C+_:e.bottom+C;if(i.each(m,function(a,r){if(!i.isNullOrUndef(a.label)){var c,l,d,f,b,y,v,x,T,w,S,A,E,L,P=a.label;r===e.zeroLineIndex&&n.offset===p.offsetGridLines?(c=p.zeroLineWidth,l=p.zeroLineColor,d=p.zeroLineBorderDash,f=p.zeroLineBorderDashOffset):(c=i.valueAtIndexOrDefault(p.lineWidth,r),l=i.valueAtIndexOrDefault(p.color,r),d=i.valueOrDefault(p.borderDash,o.borderDash),f=i.valueOrDefault(p.borderDashOffset,o.borderDashOffset));var M="middle",q="middle",j=s.padding;if(g){var F=_+j;"bottom"===n.position?(q=h?"middle":"top",M=h?"right":"center",L=e.top+F):(q=h?"middle":"bottom",M=h?"left":"center",L=e.bottom-F);var z=u(e,r,p.offsetGridLines&&m.length>1);z<e.left&&(l="rgba(0,0,0,0)"),z+=i.aliasPixel(c),E=e.getPixelForTick(r)+s.labelOffset,b=v=T=S=z,y=N,x=D,w=t.top,A=t.bottom+C}else{var G,Y="left"===n.position;s.mirror?(M=Y?"left":"right",G=j):(M=Y?"right":"left",G=_+j),E=Y?e.right-G:e.left+G;var H=u(e,r,p.offsetGridLines&&m.length>1);H<e.top&&(l="rgba(0,0,0,0)"),H+=i.aliasPixel(c),L=e.getPixelForTick(r)+s.labelOffset,b=I,v=R,T=t.left,S=t.right+C,y=x=w=A=H}k.push({tx1:b,ty1:y,tx2:v,ty2:x,x1:T,y1:w,x2:S,y2:A,labelX:E,labelY:L,glWidth:c,glColor:l,glBorderDash:d,glBorderDashOffset:f,rotation:-1*O,label:P,major:a.major,textBaseline:q,textAlign:M})}}),i.each(k,function(t){if(p.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),p.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),p.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),s.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?x.font:y.font,r.fillStyle=t.major?v:b,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var n=t.label;if(i.isArray(n))for(var a=n.length,o=1.5*y.size,u=e.isHorizontal()?0:-o*(a-1)/2,c=0;c<a;++c)r.fillText(""+n[c],0,u),u+=o;else r.fillText(n,0,0);r.restore()}}),f.display){var A,E,L=0,P=d(f)/2;if(g)A=e.left+(e.right-e.left)/2,E="bottom"===n.position?e.bottom-P-S.bottom:e.top+P+S.top;else{var M="left"===n.position;A=M?e.left+P+S.top:e.right-P-S.top,E=e.top+(e.bottom-e.top)/2,L=M?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(A,E),r.rotate(L),r.textAlign="center",r.textBaseline="middle",r.fillStyle=T,r.font=w.font,r.fillText(f.labelString,0,0),r.restore()}if(p.drawBorder){r.lineWidth=i.valueAtIndexOrDefault(p.lineWidth,0),r.strokeStyle=i.valueAtIndexOrDefault(p.color,0);var q=e.left,j=e.right+C,F=e.top,z=e.bottom+C,G=i.aliasPixel(r.lineWidth);g?(F=z="top"===n.position?e.bottom:e.top,F+=G,z+=G):(q=j="left"===n.position?e.right:e.left,q+=G,j+=G),r.beginPath(),r.moveTo(q,F),r.lineTo(j,z),r.stroke()}}}})},crnd:function(t,e,n){var a={"./ceph/block/block.module.ngfactory":["J6Oi",2,0,7],"./ceph/pool/pool.module.ngfactory":["nOaW",2,0,8],"./ceph/rgw/rgw.module.ngfactory":["Znkk",0,6],"./core/auth/auth.module.ngfactory":["DY6s",0,9]};function r(t){var e=a[t];return e?Promise.all(e.slice(1).map(n.e)).then(function(){return n(e[0])}):Promise.resolve().then(function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e})}r.keys=function(){return Object.keys(a)},r.id="crnd",t.exports=r},csGn:function(t,e){t.exports='<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\xf3n</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\xfaster</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</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\xf3n</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\xf3dulos 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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertas</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\xe1genes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicaci\xf3n</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>Obteniendo datos \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\npara \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>"/>. Espere.\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>Mostrando datos guardados previamente en cach\xe9\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\npara \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>No se han podido cargar los datos\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> para\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>"/>.\nConsulte el estado del cl\xfaster.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atr\xe1s</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>Consulte la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre c\xf3mo\nconfigurar y habilitar la supervisi\xf3n.\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>No existe la consola de Grafana. Consulte la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre c\xf3mo\n  a\xf1adir consolas a 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="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="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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</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\xe1metros.</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almac\xe9n</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</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\xf3n err\xf3neo.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Los IQN tienen esta notaci\xf3n: 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\xe1s informaci\xf3n</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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Se requieren al menos \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> puertas de enlace.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>A\xf1adir portal</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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Se requiere al menos 1 imagen.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>A\xf1adir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticaci\xf3n de ACL</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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contrase\xf1a</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\xf1a mutua</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\xe1genes se configurar\xe1n 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\xf1adido ning\xfan elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>A\xf1adir 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>A\xf1adir grupo</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="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>\xbfSeguro que quiere \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> el elemento \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> seleccionado?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>S\xed, seguro.</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticaci\xf3n de descubrimiento</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="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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de destinos iSCSI.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informaci\xf3n 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="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="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ning\xfan 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="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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ning\xfan repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tama\xf1o</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tama\xf1o.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Caracter\xedsticas</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="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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tama\xf1o del objeto</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartici\xf3n</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartici\xf3n --</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\xf3n.</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\xf3n es mayor que el tama\xf1o del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartici\xf3n</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\xf3n.</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\xf3n debe ser mayor que 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</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="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripci\xf3n larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opci\xf3n 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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</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="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>El valor introducido es demasiado alto. No debe ser mayor que \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>El valor introducido es demasiado bajo. No debe ser menor que \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditor\xeda</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuraci\xf3n...</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\xf3n.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>M\xf3dulo del gestor de edici\xf3n</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\xe1lido, 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\xf3n IP v\xe1lida.</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>El valor introducido es demasiado alto. Debe ser menor o igual que \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>El valor introducido es demasiado bajo. Debe ser mayor o igual que \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\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\xfamero.</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\xfamero 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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisi\xf3n modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>\xc9poca de mapa de supervisi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>qu\xf3rum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>qu\xf3rum 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\xf3rum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin qu\xf3rum</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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperaci\xf3n 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>El valor introducido es demasiado alto. No debe ser mayor que \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>El valor introducido es demasiado bajo. No debe ser menor que \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Reequilibrar peso de OSD</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>\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Depuraci\xf3n de OSDs\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Se dispone a aplicar una \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>depuraci\xf3n\n            al OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Si contin\xfaa, el \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  se marcar\xe1 \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>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>No es seguro destruir el OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Si contin\xfaa, el \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  se \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>"/>.\n        </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="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\xedsticas</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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de NFS Ganesha.\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\xf1adir clientes</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Exportaci\xf3n NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ning\xfan cl\xfaster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el cl\xfaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>A\xf1adir 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="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\xfan 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\xfan 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="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\xe1 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\xe1 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>Acceso alternativo para montajes \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>"/> (no debe empezar con /).\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>La posici\xf3n que ocupa esta exportaci\xf3n \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>"/>\n                en \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>"/> (debe ser exclusiva).\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="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ning\xfan 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="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducci\xf3n 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\xf3n 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="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\xe9ricos, 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\xf3digo de borrado que ha elegido ya est\xe1 en uso.</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\xf3digo (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\xf3n (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\xf3n 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\xe9cnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tama\xf1o del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Ra\xedz 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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>A\xf1adir</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="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\xe1 en uso.</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="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocaci\xf3n</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\xf3n.</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\xfaster no puede gestionar tantos grupos de colocaci\xf3n. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Solo puede aumentar el n\xfamero de grupos de colocaci\xf3n de un repositorio que ya exista.\n                El repositorio actual tiene \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> grupos de colocaci\xf3n.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el c\xe1lculo</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>El n\xfamero grupos de colocaci\xf3n actual se ha calculado\n\xa0 autom\xe1ticamente. Debe asegurarse de que sirve para sus necesidades antes de enviar.</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="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="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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>La regla no se puede usar en el cl\xfaster actual, ya que\n no tiene suficientes OSD que cumplan el m\xednimo requerido.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tama\xf1o 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>M\xednimo: \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>M\xe1ximo: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>El tama\xf1o especificado est\xe1 fuera del intervalo. Los valores v\xe1lidos\n                    son del \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> al \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de c\xf3digo 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\xfan perfil de c\xf3digo 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\xf3digo de borrado --</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\xf3digos 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="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresi\xf3n</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\xfan algoritmo de compresi\xf3n de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tama\xf1o de Blob m\xednimo</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="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tama\xf1o de Blob m\xe1ximo</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\xf1o de Blob m\xednimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relaci\xf3n de compresi\xf3n</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>No es posible crear un repositorio RBD con el nombre "/".</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Cambie el nombre o elimine "rbd" de la lista de aplicaciones.</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="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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de Object Gateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>No es posible cargar los 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\xe1lido.</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\xe1 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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</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="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\xe1 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\xe1 en uso.</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\xf3n de correo electr\xf3nico</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\xf3n no es v\xe1lida.</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\xf3n de correo electr\xf3nico que ha elegido ya est\xe1 en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>M\xe1x. papeleras</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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ning\xfan subusuario.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</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="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</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="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tama\xf1o ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tama\xf1o m\xe1x.</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\xe1x.</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="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\xa1Bienvenidos 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\xf1a 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="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripci\xf3n...</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="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>Vuelva a la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\xe1gina de entrada\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Saldr\xe1 del proveedor de identidad cuando vuelva a intentar entrar a la sesi\xf3n.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contrase\xf1a</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\xf1as no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electr\xf3nico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electr\xf3nico no v\xe1lido.</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="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\xf3n 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\xfaa, no podr\xe1 a\xf1adir ni eliminar funciones en ning\xfan usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\xbfSeguro que desea continuar?</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="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Lo sentimos. No se encuentra lo que busca</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Eliminar todo</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notificaciones recientes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>No hay tareas en segundo plano.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tareas en segundo plano</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\xf3n</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\xf3n 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>Ha entrado como\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</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 \xedndice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocaci\xf3n</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\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi\xf3n maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificaci\xf3n</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tama\xf1o m\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin l\xedmite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>N\xfamero m\xe1ximo de objetos</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {S\xed} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>N\xfamero m\xe1ximo de papeleras</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\xe1n disponibles</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</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="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuraci\xf3n 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\xf3n local. Se heredar\xe1 y usar\xe1 en su lugar el valor de configuraci\xf3n 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\xednimo es 0</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\xe1n 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="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>El histograma no est\xe1 disponible: \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="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\xedn.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>M\xe1x.</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\xf3n (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\xe9ase tambi\xe9n</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del cl\xfaster</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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuraci\xf3n</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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocaci\xf3n 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\xf3n</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>"/> Consulte la secci\xf3n \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Registros\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> para obtener m\xe1s datos.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Para mover \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> a la papelera,\n          haga clic en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mover imagen\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Opcionalmente, puede seleccionar una fecha de caducidad.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protecci\xf3n caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCI\xd3N</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\xf3neo. 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\xf3n ya ha caducado. Seleccione una fecha del futuro o deje el campo vac\xedo.</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="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="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>Solo disponible para im\xe1genes RBD con \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>"/> habilitado\n        </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="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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartici\xf3n</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\xe1neas</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="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\xfan valor para esta opci\xf3n para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instant\xe1nea RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renombrar} other {Crear} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instant\xe1nea\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CON PROTECCI\xd3N</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCI\xd3N</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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Para limpiar, seleccione una imagen, o todas las im\xe1genes, y haga clic en</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar im\xe1genes</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\xf3 a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protecci\xf3n 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>Esta imagen est\xe1 protegida hasta el \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\xeda iSCSI</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\xf3n de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Para editar el modo de duplicaci\xf3n del repositorio\xa0\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>"/>, seleccione un modo nuevo en la lista y haga clic\xa0\n          en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Actualizar\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\xfasteres de par deben eliminarse antes de inhabilitar la duplicaci\xf3n.</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 {...}}"/>\nduplicar par de repositorio\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\xf1adir} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> los atributos del par\n          de duplicaci\xf3n del respositorio \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>"/> y haga clic en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Enviar\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\xfaster</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\xfaster no es v\xe1lido.</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\xe1lido.</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\xf3n del monitor no es v\xe1lida.</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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de cach\xe9</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clientes: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xf3n 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\xfan 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\xfarese de a\xf1adir 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\xfan iniciador disponible. Aseg\xfarese de a\xf1adir un iniciador al destino.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</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\xf1adir 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\xedder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.\xba locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.\xba 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Diferencias r\xe1pidas (requiere mapa de objetos)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversi\xf3n de instant\xe1nea RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instant\xe1nea RBD</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="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\xf3n</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\xedz</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificaci\xf3n</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</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\xf3n.</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\xf3n del monitor. No se recomienda definir esta opci\xf3n con "ceph config\n      set ...". Esta opci\xf3n se debe configurar mediante ceph.conf o a trav\xe9s\n      de la l\xednea 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\xf3n 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\xf3n solo afecta a la creaci\xf3n del cl\xfaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opci\xf3n solo afecta a la creaci\xf3n 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>Opci\xf3n de configuraci\xf3n actualizada \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opciones actualizadas para el m\xf3dulo \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </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="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\xf3n p\xfablica</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="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\xe1n 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\xe1n autom\xe1ticamente despu\xe9s 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\xe1n 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\xf3n est\xe1 inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuraci\xf3n profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuraci\xf3n profunda est\xe1 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\xf3n de grupos de colocaci\xf3n se suspende</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\xf3n de los grupos de colocaci\xf3n 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\xf3n</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\xf3n, 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\xedmite estricto de registro del grupo de colocaci\xf3n</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\xedmite estricto para la longitud del registro del grupo de colocaci\xf3n</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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuraci\xf3n profunda</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</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="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocaci\xf3n</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Marcar 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>Marcar \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>N\xfamero m\xe1ximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>M\xe1ximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>M\xe1ximo de recuperaciones de inicio \xfanico</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperaci\xf3n</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Prioridad de velocidad de recuperaci\xf3n de OSD actualizada \n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> se ha inicializado en el siguiente OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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>Borrar</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="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\xf3rum</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\xe1 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\xf3n 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\xf3n 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\xf3n 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\xfan daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Exportar</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de cach\xe9</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antig\xfcedad m\xednima de expulsi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antig\xfcedad m\xednima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>N\xfamero m\xe1ximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>N\xfamero m\xe1ximo 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\xf1adido ninguna aplicaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el l\xedmite 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\xe1xima 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\xf1adir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>A\xf1adir aplicaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de c\xf3digo de borrado</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tama\xf1o de r\xe9plica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\xdaltimo cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de c\xf3digo 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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Papelera de Object Gateway actualizada "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\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>Papelera de Object Gateway creada "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</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>Usuario de Object Gateway actualizado "\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>Usuario de Object Gateway creado "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\xc1mbito</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Se ha creado la funci\xf3n \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>Se ha actualizado la funci\xf3n \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\xf3n 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>Se ha suprimido la funci\xf3n \n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\n        </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>Se ha creado el usuario \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\xf3n se ha cerrado autom\xe1ticamente 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>Se ha actualizado el usuario \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>Se ha suprimido el usuario \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>Error al suprimir el usuario \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>Ha entrado a la sesi\xf3n como \n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\n        </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\xf3digo para cada objeto y las almacena en distintos OSD.\n      El n\xfamero de porciones de c\xf3digo es tambi\xe9n el n\xfamero 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\xe1s gen\xe9rico y flexible,\n          y tambi\xe9n el complemento por defecto para los repositorios de c\xf3digo 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\xe9cnica m\xe1s flexible es reed_sol_van: basta con definir k y m.\n          La t\xe9cnica cauchy_good puede ser m\xe1s r\xe1pida, pero hay que elegir con cuidado el tama\xf1o\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\xf3n se realizar\xe1 seg\xfan el tama\xf1o de los paquetes de bytes de uno en uno.\n          Elegir el tama\xf1o correcto es dif\xedcil.\n          La documentaci\xf3n de jerasure incluye informaci\xf3n 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\xf3digo de borrado se almacena\n          en varios OSD, para recuperarse de la p\xe9rdida de un OSD es necesario leer de todos los dem\xe1s.\n          Por ejemplo, si jerasure est\xe1 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\xf3digo de borrado lrc crea porciones de paridad local para poder realizar la recuperaci\xf3n con\n          menos OSDs. Por ejemplo, is lrc est\xe1 configurado con k=8, m=4 y l=4, crear\xe1\n          una porci\xf3n 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\xf3digo y de datos en localizaciones de conjuntos de tama\xf1o. 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\xe1 cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocar\xe1 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\xe1s eficiente que los c\xf3digos 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\xfamero de porciones de paridad. Cada uno de ellas incluye cada porci\xf3n de datos\n           en su intervalo de c\xe1lculo. El n\xfamero 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\xfarese 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\xf3n 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\xe1 el complemento de c\xf3digo 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\xed 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\xfan 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="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\xdaltimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\xdaltimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\xdaltimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\xdaltima hora (opci\xf3n por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\xdaltimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\xdaltimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\xdaltimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\xdaltimas 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 \xfaltimos 2 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este d\xeda 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 \xfaltimos 7 d\xedas</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 \xfaltimos 30 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los \xfaltimos 90 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los \xfaltimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El \xfaltimo a\xf1o</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El a\xf1o pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este a\xf1o</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este a\xf1o hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los \xfaltimos 2 a\xf1os</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los \xfaltimos 5 a\xf1os</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ning\xfan 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\xedmite de selecci\xf3n</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\xf1adir 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\xfan elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>S\xed</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="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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xe1faga 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\xedmite deseado de r\xe1faga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga 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\xe1faga 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\xedmite deseado de r\xe1faga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga 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>Error al \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</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="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>Instant\xe1nea RBD \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </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>modo de duplicaci\xf3n para repositorio \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>par de duplicaci\xf3n para repositorio \n          <x id="INTERPOLATION" equiv-text="{{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          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> ya est\xe1 usando el nombre.\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          <x id="INTERPOLATION" equiv-text="{{name}}"/> ya est\xe1 usando el nombre.\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          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> ya est\xe1 usando el nombre.\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}}"/> contiene instant\xe1neas.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</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>La instant\xe1nea de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> debe estar protegida.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</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          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> ya est\xe1 usando el nombre.\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>No es posible desproteger \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque contiene im\xe1genes hijas.\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>No es posible suprimir \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque est\xe1 protegido.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</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>la imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> a la papelera\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</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>la imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> en \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>El nombre de imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> ya est\xe1 en uso.\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>la imagen \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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</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>im\xe1genes de \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\xf3n porque contiene un par</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>repositorio \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>perfil de c\xf3digo de borrado \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>destino \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>'},czA5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MouseEvent=("undefined"!=typeof window&&window||global).MouseEvent,e.KeyboardEvent=("undefined"!=typeof window&&window||global).KeyboardEvent,e.Event=("undefined"!=typeof window&&window||global).Event},czMo:function(t,e,n){!function(t){"use strict";n("wd/R").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")}})}()},"d+Og":function(t,e,n){"use strict";var a=n("LvDl"),r=function(){function t(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}return t.prototype.isValidType=function(){return t.VALID_CATEGORIES.includes(this.type)},t.prototype.setTypeStates=function(){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=[]}},t.VALID_CATEGORIES=[t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown"],t}(),i=n("CcnG"),o=n("kJI8");n.d(e,"a",function(){return s});var s=function(){function t(){this.categories=this.createCategories()}return t.prototype.getAllTypes=function(){return r.VALID_CATEGORIES},t.prototype.getTypeByStates=function(t){var e=this,n=this.getPgStatesFromText(t);if(0===n.length)return r.CATEGORY_UNKNOWN;var i=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(function(t){return a.intersection(e.categories[t].states,n).length}));if(i[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;var o=i[r.CATEGORY_WORKING];return n.length>i[r.CATEGORY_CLEAN]+o?r.CATEGORY_UNKNOWN:o?r.CATEGORY_WORKING:r.CATEGORY_CLEAN},t.prototype.createCategories=function(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(function(t){return new r(t)}))},t.prototype.getPgStatesFromText=function(t){var e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t},token:t,providedIn:o.a}),t}()},dC0D:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){var n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new o(t,e,n))}}var o=function(){function t(t,e,n){void 0===n&&(n=!1),this.accumulator=t,this.seed=e,this.hasSeed=n}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))},t}(),s=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.accumulator=n,i._seed=a,i.hasSeed=r,i.index=0,i}return a.__extends(e,t),Object.defineProperty(e.prototype,"seed",{get:function(){return this._seed},set:function(t){this.hasSeed=!0,this._seed=t},enumerable:!0,configurable:!0}),e.prototype._next=function(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.accumulator(this.seed,t,n)}catch(a){this.destination.error(a)}this.seed=e,this.destination.next(e)},e}(r.a)},dEH0:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t+" ms"},t}()},dEwP:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("F/XL"),r=n("Txjg");function i(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Object(r.a)()(a.a.apply(void 0,t))}},dNwA:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},dgut:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("NEZu"),r=(n("Fgil"),function(){function t(t){var e=this;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:function(t){return e.isBinary?e.dimlessBinaryPipe.transform(t.yLabel):t.yLabel}}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}return t.prototype.ngOnInit=function(){var t=new a.a(this.chartCanvasRef,this.chartTooltipRef,function(t,e){return e+t.caretX+"px"},function(t){return t.caretY-t.height-t.yPadding-5+"px"});t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=function(e){t.customTooltips(e)}},t.prototype.ngOnChanges=function(t){this.datasets[0].data=t.data.currentValue,this.labels=Array(t.data.currentValue.length).slice()},t}())},dpnK:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha");a._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:r.noop,onComplete:r.noop}}),t.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,a){var r,i,o=this.animations;for(e.chart=t,a||(t.animating=!0),r=0,i=o.length;r<i;++r)if(o[r].chart===t)return void(o[r]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=r.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=r.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var a=Date.now();t.dropFrames+=(a-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,a=this.animations,i=0;i<a.length;)n=(e=a[i]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),r.callback(e.render,[n,e],n),r.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(r.callback(e.onAnimationComplete,[e],n),n.animating=!1,a.splice(i,1)):++i}}},dzgT:function(t,e,n){"use strict";n.d(e,"b",function(){return l}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("nkY7"),i=n("isby"),o=n("MGBS"),s=n("zotm"),u=n("IUTb"),c={};function l(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=null,a=null;return Object(r.a)(t[t.length-1])&&(a=t.pop()),"function"==typeof t[t.length-1]&&(n=t.pop()),1===t.length&&Object(i.a)(t[0])&&(t=t[0]),Object(u.a)(t,a).lift(new d(n))}var d=function(){function t(t){this.resultSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new p(t,this.resultSelector))},t}(),p=function(t){function e(e,n){var a=t.call(this,e)||this;return a.resultSelector=n,a.active=0,a.values=[],a.observables=[],a}return a.__extends(e,t),e.prototype._next=function(t){this.values.push(c),this.observables.push(t)},e.prototype._complete=function(){var t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(var n=0;n<e;n++){var a=t[n];this.add(Object(s.a)(this,a,a,n))}}},e.prototype.notifyComplete=function(t){0==(this.active-=1)&&this.destination.complete()},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.values,o=this.toRespond?i[n]===c?--this.toRespond:this.toRespond:0;i[n]=e,0===o&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))},e.prototype._tryResultSelector=function(t){var e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(o.a)},"e+ae":function(t,e,n){!function(t){"use strict";var e="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),n="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_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\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sek\xfand"):i+"sekundami";case"m":return e?"min\xfata":r?"min\xfatu":"min\xfatou";case"mm":return e||r?i+(a(t)?"min\xfaty":"min\xfat"):i+"min\xfatami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hod\xedn"):i+"hodinami";case"d":return e||r?"de\u0148":"d\u0148om";case"dd":return e||r?i+(a(t)?"dni":"dn\xed"):i+"d\u0148ami";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\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_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\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa 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"))},e2pG:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("VKeD"),o=n("poJ0");e.fromIterable=function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.Observable(e?function(n){var a,o=new r.Subscription;return o.add(function(){a&&"function"==typeof a.return&&a.return()}),o.add(e.schedule(function(){a=t[i.iterator](),o.add(e.schedule(function(){if(!n.closed){var t,e;try{var r=a.next();t=r.value,e=r.done}catch(i){return void n.error(i)}e?n.complete():(n.next(t),this.schedule())}}))})),o}:o.subscribeToIterable(t))}},eTJe:function(t,e,n){"use strict";var a,r=n("gIcY"),i=n("LvDl"),o=n("VNr4"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),u=n("QFaf"),c=n("1Ni5");n("9nlD"),function(t){t.editing="editing"}(a||(a={}));var l=function(){return function(){}}();n.d(e,"a",function(){return d});var d=function(){function t(t,e,n,r,i,o,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=r,this.notificationService=i,this.i18n=o,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=a,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}return t.prototype.createForm=function(){this.roleForm=new u.a({name:new r.i("",{validators:[r.A.required],asyncValidators:[c.a.unique(this.roleService.exists,this.roleService)]}),description:new r.i(""),scopes_permissions:new r.i({})})},t.prototype.ngOnInit=function(){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()},t.prototype.initCreate=function(){var t=this;this.scopeService.list().subscribe(function(e){t.scopes=e,t.roleForm.get("scopes_permissions").setValue({})})},t.prototype.initEdit=function(){var t=this;this.roleForm.get("name").disable(),this.route.params.subscribe(function(e){var n=[];n.push(t.scopeService.list()),n.push(t.roleService.get(e.name)),Object(o.a)(n).subscribe(function(e){t.scopes=e[0],["name","description","scopes_permissions"].forEach(function(n){return t.roleForm.get(n).setValue(e[1][n])})})})},t.prototype.listenToChanges=function(){var t=this;this.roleForm.get("scopes_permissions").valueChanges.subscribe(function(e){var n=[];i.each(t.scopes,function(t){var a={read:!1,create:!1,update:!1,delete:!1};a.scope=t,t in e&&i.each(e[t],function(t){a[t]=!0}),n.push(a)}),t.scopes_permissions=n})},t.prototype.isRowChecked=function(t){var e=i.find(this.scopes_permissions,function(e){return e.scope===t});return!i.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete},t.prototype.isHeaderChecked=function(t){var e=this,n=[t];return"scope"===t&&(n=["read","create","update","delete"]),n.every(function(t){return e.scopes_permissions.every(function(e){return e[t]})})},t.prototype.onClickCellCheckbox=function(t,e,n){void 0===n&&(n=null);var a=i.cloneDeep(this.roleForm.getValue("scopes_permissions")),r=[e];"scope"===e&&(r=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!i.isEqual(r.sort(),i.intersection(a[t],r).sort())?a[t]=i.union(a[t],r):(a[t]=i.difference(a[t],r),i.isEmpty(a[t])&&i.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)},t.prototype.onClickHeaderCheckbox=function(t,e){var n=this,a=i.cloneDeep(this.roleForm.getValue("scopes_permissions")),r=[t];"scope"===t&&(r=["read","create","update","delete"]),i.each(r,function(t){i.each(n.scopes,function(n){e.target.checked?a[n]=i.union(a[n],[t]):(a[n]=i.difference(a[n],[t]),i.isEmpty(a[n])&&i.unset(a,n))})}),this.roleForm.get("scopes_permissions").setValue(a)},t.prototype.getRequest=function(){var t=this,e=new l;return["name","description","scopes_permissions"].forEach(function(n){return e[n]=t.roleForm.get(n).value}),e},t.prototype.createAction=function(){var t=this,e=this.getRequest();this.roleService.create(e).subscribe(function(){t.notificationService.show(s.a.success,t.i18n("Created role '{{role_name}}'",{role_name:e.name})),t.router.navigate(["/user-management/roles"])},function(){t.roleForm.setErrors({cdSubmitButton:!0})})},t.prototype.editAction=function(){var t=this,e=this.getRequest();this.roleService.update(e).subscribe(function(){t.notificationService.show(s.a.success,t.i18n("Updated role '{{role_name}}'",{role_name:e.name})),t.router.navigate(["/user-management/roles"])},function(){t.roleForm.setErrors({cdSubmitButton:!0})})},t.prototype.submit=function(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()},t}()},eajB:function(t,e,n){"use strict";n.d(e,"b",function(){return l}),n.d(e,"c",function(){return p}),n.d(e,"d",function(){return f}),n.d(e,"a",function(){return c});var a=n("CcnG"),r=n("rpEJ"),i=n("mrSG"),o=n("lqqz"),s=n("gI3B"),u=n("NJnL"),c=function(){return function(){this.placement="top",this.triggers="hover focus",this.delay=0}}(),l=function(){function t(t){Object.assign(this,t)}return Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(r.d)()},enumerable:!0,configurable:!0}),t.prototype.ngAfterViewInit=function(){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)},t}(),d=0,p=function(){function t(t,e,n,r,i){this._renderer=e,this._elementRef=n,this.tooltipId=d++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.ariaDescribedby="tooltip-"+this.tooltipId,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=r.createLoader(this._elementRef,t,this._renderer).provide({provide:c,useValue:i}),Object.assign(this,i),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._tooltip.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"htmlContent",{set:function(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_placement",{set:function(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_isOpen",{get:function(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen},set:function(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_enable",{get:function(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled},set:function(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_appendToBody",{get:function(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container},set:function(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_popupClass",{set:function(t){Object(r.i)("tooltipClass deprecated")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipContext",{set:function(t){Object(r.i)("tooltipContext deprecated")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipPopupDelay",{set:function(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipTrigger",{get:function(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers},set:function(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._tooltip.listen({triggers:this.triggers,show:function(){return t.show()}}),this.tooltipChange.subscribe(function(e){e||t._tooltip.hide()})},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.show=function(){var t=this;if(!(this.isOpen||this.isDisabled||this._delayTimeoutId)&&this.tooltip){var e=function(){t._delayTimeoutId&&(t._delayTimeoutId=void 0),t._tooltip.attach(l).to(t.container).position({attachment:t.placement}).show({content:t.tooltip,placement:t.placement,containerClass:t.containerClass,id:t.ariaDescribedby})},n=function(){t._tooltipCancelShowFn&&t._tooltipCancelShowFn()};if(this.delay){var a=Object(s.a)(this.delay).subscribe(function(){e(),n()});if(this.triggers){var i=Object(r.f)(this.triggers);this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,i[0].close,function(){a.unsubscribe(),n()})}}else e()}},t.prototype.hide=function(){var t=this;this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(function(){t._tooltip.hide()},this.tooltipFadeDuration))},t.prototype.ngOnDestroy=function(){this._tooltip.dispose()},Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t}(),f=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[c,o.a,u.a]}},t}()},eipH:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("zfKp"),o=n("ozli");e.fromObservable=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription;return a.add(e.schedule(function(){var r=t[i.observable]();a.add(r.subscribe({next:function(t){a.add(e.schedule(function(){return n.next(t)}))},error:function(t){a.add(e.schedule(function(){return n.error(t)}))},complete:function(){a.add(e.schedule(function(){return n.complete()}))}}))})),a}:o.subscribeToObservable(t))}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("gI3B"),r=n("psW0"),i=n("klSw"),o=n("CcnG"),s=n("t/Na"),u=function(){function t(t){var e=this;this.http=t,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=2e4,this.featureToggleMap$=Object(a.a)(0,this.REFRESH_INTERVAL).pipe(Object(r.a)(function(){return e.http.get(e.API_URL)}),Object(i.a)(1))}return t.prototype.get=function(){return this.featureToggleMap$},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(s.c))},token:t,providedIn:"root"}),t}()},ejVf:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.standard="standard",t.flex="flex",t.force="force"}(e.ColumnMode||(e.ColumnMode={}))},fB8H:function(t,e){t.exports='<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>\u5207\u6362\u5bfc\u822a</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u4eea\u8868\u76d8</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u96c6\u7fa4</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u4e3b\u673a</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="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>\u914d\u7f6e\u9879</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH \u7d22\u5f15</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager \u6269\u5c55\u6a21\u5757</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u5757\u8bbe\u5907</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u955c\u50cf</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>\u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u5bf9\u8c61\u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u5b58\u50a8\u6876</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>\u5173\u4e8e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \u7684\u6570\u636e\uff0c\u6b63\u4e3a\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>"/>\u83b7\u53d6\u4e2d\uff0c\u8bf7\u7a0d\u5019...\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>\u5173\u4e8e\u4e4b\u524d\u7f13\u5b58\u7684\u6570\u636e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\uff0c\u6b63\u4e3a\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>"/>\u663e\u793a\u3002\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>\u5173\u4e8e\u6570\u636e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \uff0c\u65e0\u6cd5\u4e3a\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>"/>\u52a0\u8f7d\u3002\n  \u8bf7\u68c0\u67e5\u96c6\u7fa4\u7684\u5065\u5eb7\u72b6\u51b5\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u8fd4\u56de</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u8bf7\u9009\u62e9\u8bed\u8a00</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u9762\u677f\u7684\u76f8\u5173\u6570\u636e\u2026</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u4ee5\u53ca\u6253\u5f00\u76d1\u63a7\u529f\u80fd\uff0c\n\u8bf7\u53c2\u9605\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\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>\u65e0 Grafana \u4eea\u8868\u76d8\u3002\u5173\u4e8e\u5982\u4f55\u4e3a Grafana \u6dfb\u52a0\n\u4eea\u8868\u76d8\uff0c\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana \u65f6\u95f4\u9009\u62e9\u5de5\u5177</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\u91cd\u65b0\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u65e0\u6cd5\u52a0\u8f7d\u6570\u636e\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9009\u4e2d\u4e2a\u6570</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u547d\u4e2d\u4e2a\u6570</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u603b\u6570</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8bbe\u7f6e</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>\u901a\u5e38\u65e0\u987b\u6539\u53d8\u8fd9\u4e9b\u9ed8\u8ba4\u53c2\u6570\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u540e\u5907\u5b58\u50a8</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u786e\u8ba4</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u53d6\u6d88</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u76ee\u6807\u9650\u5b9a\u540d</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u8bf7\u586b\u5199\u6b64\u680f\u76ee\uff01</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN \u683c\u5f0f\u9519\u8bef\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN \u5e94\u7531\u4ee5\u4e0b\u683c\u5f0f\u6784\u6210\uff1a\u201ciqn.$year-$month.$reversedAddress:$definedName\u201d</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>\u4f8b\u5982\uff1aiqn.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>\u66f4\u591a\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u6b64\u76ee\u6807\u7684\u9ad8\u7ea7\u8bbe\u7f6e\u9879\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u7aef\u53e3</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>\u81f3\u5c11\u9700\u8981 \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \u4e2a\u7f51\u5173\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u6dfb\u52a0\u7aef\u53e3</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u6b64\u6620\u50cf\u7684\u8bbe\u7f6e\u9879\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u81f3\u5c11\u9700\u8981 1 \u4e2a\u6620\u50cf\uff01</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u6dfb\u52a0\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \u8eab\u4efd\u9a8c\u8bc1</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u5ba2\u6237\u7aef IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u6388\u6743\u4eba IQN \u5fc5\u987b\u552f\u4e00\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u7528\u6237</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>\u7528\u6237\u540d\u957f\u5ea6\u5fc5\u987b\u5728 8 \u5230 64 \u4e2a\u5b57\u7b26\u4e4b\u95f4\uff0c\u4e14\u53ea\u80fd\u5305\u542b\n\u4ee5\u4e0b\u5b57\u7b26\uff1a\u82f1\u6587\u5b57\u6bcd\u3001\u201c.\u201d\u3001\u201c@\u201d\u3001\u201c-\u201d\u3001\u201c_\u201d\u6216\u201c:\u201d\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u4e92\u8ba4\u8bc1\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u4e92\u8ba4\u8bc1\u5bc6\u7801</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>\u6388\u6743\u4eba\u5c5e\u4e8e\u7fa4\u7ec4\u3002\u6620\u50cf\u987b\u5728\u7fa4\u7ec4\u4e2d\u8fdb\u884c\u8bbe\u7f6e\u3002</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u65e0\u9879\u76ee\u6dfb\u52a0\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u6dfb\u52a0\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u6dfb\u52a0\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u63d0\u4ea4</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>\u60a8\u786e\u5b9a\u8981\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u9009\u4e2d\u7684\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u5417\uff1f\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u662f\u7684\uff0c\u6211\u786e\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u53d1\u73b0\u8eab\u4efd\u9a8c\u8bc1</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>\u7528\u6237\u540d\u957f\u5ea6\u5fc5\u987b\u5728 8 \u5230 64 \u4e2a\u5b57\u7b26\u4e4b\u95f4\uff0c\u4e14\u53ea\u80fd\u5305\u542b\n\u4ee5\u4e0b\u5b57\u7b26\uff1a\u82f1\u6587\u5b57\u6bcd\u3001\u201c.\u201d\u3001\u201c@\u201d\u3001\u201c-\u201d\u3001\u201c_\u201d\u6216\u201c:\u201d\u3002</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528 iSCSI \u76ee\u6807\u7ba1\u7406\u529f\u80fd\uff0c\n\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53ef\u7528\u4fe1\u606f\uff1a</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u65e0\u53ef\u7528 iSCSI \u76ee\u6807</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u4e0d\u5141\u8bb8\u4f7f\u7528\u201c/\u201d\u548c\u201c@\u201d\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u2026</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684 RBD \u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u4f7f\u7528\u4e00\u4e2a\u4e13\u7528\u7684\u6570\u636e\u6c60</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u6570\u636e\u6c60</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>\u4e3a\u4fdd\u5b58 RBD \u7684\u5bf9\u8c61\u6570\u636e\u5355\u72ec\u5206\u914d\u7684\u5b58\u50a8\u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684\u6570\u636e\u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u5982 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u60a8\u9700\u8981\u8bbe\u7f6e\u5927\u4e00\u4e9b\u7684\u5bb9\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u7279\u6027</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e\u2026</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u6761\u5e26</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u5bf9\u8c61\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u6761\u5e26\u5355\u5143\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u9009\u62e9\u6761\u5e26\u5355\u5143\u5927\u5c0f --</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>\u56e0\u4e3a\u8bbe\u7f6e\u4e86\u6761\u5e26\u4e2a\u6570\uff0c\u6240\u4ee5\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u9009\u7684\uff01</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u6761\u5e26\u5355\u5143\u5927\u5c0f\u8d85\u8fc7\u4e86\u5bf9\u8c61\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u6761\u5e26\u4e2a\u6570</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>\u56e0\u4e3a\u8bbe\u7f6e\u4e86\u6761\u5e26\u5355\u5143\u5927\u5c0f\uff0c\u6240\u4ee5\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u9009\u7684\uff01</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u6761\u5e26\u7684\u4e2a\u6570\u5fc5\u987b\u5927\u4e8e 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u603b\u4f53\u6027\u80fd</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7f16\u8f91</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u89e3\u91ca</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u66f4\u8be6\u5c3d\u7684\u89e3\u91ca</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u7f3a\u7701\u503c</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b\u7684\u7f3a\u7701\u503c</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u5bf9\u5e94\u7684\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u53ef\u9009\u503c</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>\u8bbe\u7f6e\u7684\u503c\u592a\u5927\u4e86\uff01\u5e94\u4f4e\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3002\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>\u8bbe\u7f6e\u7684\u503c\u592a\u5c0f\u4e86\uff01\u4e0d\u80fd\u4f4e\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u4fdd\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>\u68c0\u67e5 CRUSH \u7d22\u5f15\u56fe</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u4e3b\u673a\u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u65e0\u6cd5\u627e\u5230\u76f8\u5173\u6761\u76ee</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u96c6\u7fa4\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u5ba1\u8ba1\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u76f8\u5173\u914d\u7f6e\u4fe1\u606f...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u914d\u7f6e\u4fe1\u606f\u65e0\u6cd5\u52a0\u8f7d\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u7f16\u8f91 Manager \u6269\u5c55\u6a21\u5757</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>\u8f93\u5165\u503c\u4e0d\u662f\u6709\u6548\u7684 UUID\uff0c\u5982\uff1a67dcac9f-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>\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e2a\u6709\u6548\u7684 IP \u5730\u5740\u3002</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>\u8f93\u5165\u503c\u8fc7\u5927\uff01\u5fc5\u987b\u5c0f\u4e8e\u6216\u7b49\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u3002\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>\u8f93\u5165\u503c\u8fc7\u5c0f\uff01\u5fc5\u987b\u5927\u4e8e\u6216\u7b49\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u3002\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>\u8f93\u5165\u987b\u4e3a\u6570\u5b57\u3002</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>\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e00\u4e2a\u6d6e\u70b9\u6570\u6216\u8005\u5341\u8fdb\u5236\u6574\u6570\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u96c6\u7fa4 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap \u4fee\u6539\u65f6\u95f4</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>\u4ef2\u88c1\u6210\u5458</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u4ef2\u88c1\u6210\u5458</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u96c6\u7fa4\u8303\u56f4\u7684 OSD \u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \u6062\u590d\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u81ea\u5b9a\u4e49\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u586b\u7684\uff01</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>\u8f93\u5165\u503c\u8fc7\u5927\uff01\u4e0d\u80fd\u5927\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3002\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>\u8f93\u5165\u503c\u8fc7\u5c0f\uff01\u4e0d\u80fd\u5c0f\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u91cd\u65b0\u8bbe\u7f6e OSD \u7684\u6743\u91cd</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>\u6743\u91cd\u503c\u5fc5\u987b\u5728 0 \u548c 1 \u4e4b\u95f4</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u91cd\u8bbe\u6743\u91cd</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 {...}}"/>\u6d17\u5237\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 {\u6df1\u5ea6}}</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\u5373\u5c06\u5bf9 OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u6267\u884c\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> \u6d17\u5237\u3002\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 {\u6df1\u5ea6} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u5982\u679c\u7ee7\u7eed\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n\u5c06\u88ab\u6807\u8bb0\u4e3a\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD \u4e0d\u5b89\u5168\uff0c\u65e0\u6cd5\u9500\u6bc1\uff01</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u5982\u679c\u7ee7\u7eed\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n\u5c06\u88ab\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8be6\u60c5</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u5065\u5eb7\u72b6\u51b5</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7edf\u8ba1\u6570\u636e</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528 NFS Ganesha \u7ba1\u7406\u529f\u80fd\uff0c\n\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u5ba2\u6237\u7aef</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u4f55\u5ba2\u6237\u7aef\u5747\u53ef\u8bbf\u95ee</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u586b\u9879</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\u5fc5\u987b\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u9017\u53f7\u5206\u9694\u503c</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b\u5982\uff1a</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u8bbf\u95ee\u7c7b\u578b</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>\u6dfb\u52a0\u5ba2\u6237\u7aef</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS \u5bfc\u51fa \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u65e0\u53ef\u7528\u96c6\u7fa4 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u96c6\u7fa4 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u6dfb\u52a0\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u5b58\u50a8\u540e\u7aef</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u540e\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u5bf9\u8c61\u7f51\u5173\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u65e0\u53ef\u9009\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5bf9\u8c61\u7f51\u5173\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \u7528\u6237 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u65e0\u53ef\u7528\u5ba2\u6237\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- \u8bf7\u9009\u62e9 cephx \u5ba2\u6237\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u5b89\u5168\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u542f\u7528\u5b89\u5168\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \u8def\u5f84</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>\u8def\u5f84\u9700\u4ee5\u201c/\u201d\u5f00\u5934\uff0c\u540e\u9762\u53ef\u8ddf\u5355\u8bcd</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u5c06\u521b\u5efa\u65b0\u6587\u4ef6\u5939</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u8def\u5f84</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>\u8def\u5f84\u53ea\u80fd\u662f\u5355\u4e2a\u201c/\u201d\u6216\u5355\u8bcd</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u5c06\u521b\u5efa\u65b0\u7684\u6876</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \u534f\u8bae</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 \u6807\u7b7e</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>\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>"/> \u88c5\u5165\u7684\u5907\u7528\u8bbf\u95ee\uff08\u4e0d\u5f97\u5305\u542b\u524d\u7f6e /\uff09\u3002\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>\u5ba2\u6237\u7aef\u4e0d\u80fd\u88c5\u5165\u5b50\u76ee\u5f55\uff08\u5373\u5982\u679c\u6807\u8bb0\u4e3a foo\uff0c\u5219\u5ba2\u6237\u7aef\u65e0\u6cd5\u88c5\u5165 foo/baz\uff09\u3002</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>\u901a\u8fc7\u4f7f\u7528\u4e0d\u540c\u6807\u8bb0\u9009\u9879\uff0c\u53ef\u5c06\u540c\u4e00\u8def\u5f84\u5bfc\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u4f2a</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>\u6b64 \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>"/> \u5bfc\u51fa\u5728\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u4f2a\u6587\u4ef6\u7cfb\u7edf\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u4e2d\n                                       \u6240\u5360\u7528\u7684\u4f4d\u7f6e\uff08\u5fc5\u987b\u552f\u4e00\uff09\u3002\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>\u901a\u8fc7\u4f7f\u7528\u4e0d\u540c\u4f2a\u9009\u9879\uff0c\u53ef\u5c06\u540c\u4e00\u8def\u5f84\u5bfc\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684\u8bbf\u95ee\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u9009\u62e9\u8bbf\u95ee\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684 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>-- \u9009\u62e9\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u7528\u6237 ID \u533f\u540d\u8bbf\u95ee --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u4f20\u8f93\u534f\u8bae</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u79f0\u53ea\u80fd\u7531\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u77ed\u5212\u7ebf\u548c\u4e0b\u5212\u7ebf\u7ec4\u6210\u3002</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>\u6b64\u7ea0\u5220\u7801\u914d\u7f6e\u540d\u79f0\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u7ea0\u5220\u7801\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u6570\u636e\u5757 (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>\u5fc5\u987b\u5927\u4e8e\u7b49\u4e8e 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u6821\u9a8c\u5757 (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>\u5fc5\u987b\u5927\u4e8e\u7b49\u4e8e 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u6301\u4e45\u56e0\u5b50 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u5c40\u90e8\u6027\u56e0\u5b50 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH \u6545\u969c\u57df</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH \u5c40\u90e8\u6027</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u65e0</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u7b97\u6cd5</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 \u6839</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH \u8bbe\u5907\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u610f</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u76ee\u5f55</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u6dfb\u52a0</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u5173\u95ed</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u79f0\u2026</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>\u6b64 Ceph \u5b58\u50a8\u6c60\u540d\u79f0\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u5b58\u50a8\u6c60\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u6c60\u7684\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u5f52\u7f6e\u7ec4 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u81f3\u5c11\u9700\u8981\u4e00\u4e2a\u5f52\u7f6e\u7ec4\uff01</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>\u60a8\u7684\u96c6\u7fa4\u6ca1\u6cd5\u652f\u6301\u8fd9\u4e48\u591a\u7684 PG\u3002\u8bf7\u91cd\u65b0\u8ba1\u7b97\u9700\u8981\u7684 PG \u4e2a\u6570\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u60a8\u53ea\u80fd\u589e\u52a0\u5b58\u50a8\u6c60\u7684 PG \u4e2a\u6570\u3002\n\u76ee\u524d\u60a8\u7684\u5b58\u50a8\u6c60\u6709 \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> \u4e2a PG\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u5728\u7ebf PG \u8ba1\u7b97\u5668</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u5df2\u6839\u636e\u5f53\u524d\u60c5\u51b5\u4e3a\u60a8\u63a8\u7b97\u51fa\u4e86 PG \u7684\u8bbe\u7f6e\uff0c\u60a8\n\u6700\u597d\u5728\u63d0\u4ea4\u4e4b\u524d\u786e\u8ba4\u8fd9\u4e9b\u8bbe\u7f6e\u662f\u5408\u9002\u7684\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH \u7b97\u6cd5\u89c4\u5219\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \u9009\u62e9 CRUSH \u89c4\u5219 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH \u89c4\u5219</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH \u6b65\u9aa4</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u5f53\u524d\u7684\u96c6\u7fa4\u65e0\u6cd5\u4f7f\u7528\u8be5\u89c4\u5219\uff0c\u56e0\u4e3a\u96c6\u7fa4\u7684 OSD \u4e2a\u6570\u8fc7\u5c11\uff0c\n   \u65e0\u6cd5\u6ee1\u8db3\u89c4\u5219\u6240\u9700\u7684\u6700\u4f4e OSD \u6570\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u526f\u672c\u4e2a\u6570</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>\u6700\u4f4e\uff1a\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>\u6700\u9ad8\uff1a\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u8bbe\u7f6e\u7684\u8d85\u8fc7\u4e86\u9650\u5236\u3002\u8bbe\u7f6e\u503c\u5e94\u8be5\u5728\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \u548c \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \u4e2d\u95f4\u4e3a\u5b9c.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u65e0\u7ea0\u5220\u7801\u914d\u7f6e\u53ef\u9009 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7ea0\u5220\u7801\u914d\u7f6e --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \u91cd\u5199 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u5e94\u7528\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u538b\u7f29</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u65e0\u53ef\u7528\u7684\u7ea0\u5220\u7801\u538b\u7f29\u7b97\u6cd5 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob \u5927\u5c0f\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u6bd4\u5982 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u53d6\u503c\u5fc5\u987b\u5927\u4e8e 0</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob \u5927\u5c0f\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u5982 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>\u53d6\u503c\u5fc5\u987b\u5927\u4e8e blob \u5927\u5c0f\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u6bd4\u4f8b</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u538b\u7f29\u7387</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>\u53d6\u503c\u5fc5\u987b\u5728 0.0 \u548c 1.0 \u4e4b\u95f4</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u65e0\u6cd5\u65b0\u5efa\u540d\u5b57\u4e2d\u6709\u201c/\u201d\u7684 RBD \u5b58\u50a8\u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u8bf7\u91cd\u65b0\u547d\u540d\uff0c\u6216\u8005\u628a\u5b58\u50a8\u6c60\u7684\u201crbd\u201d\u5e94\u7528\u6807\u8bb0\u53bb\u6389\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u5b58\u50a8\u6c60\u5217\u8868</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528\u5bf9\u8c61\u7f51\u5173\u7684\u529f\u80fd\uff0c\n  \u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u5b58\u50a8\u6876\u6570\u636e\u2026</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u5b58\u50a8\u6876\u6570\u636e\u65e0\u6cd5\u52a0\u8f7d\u3002</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>\u8f93\u5165\u503c\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u6240\u9009\u540d\u79f0\u5df2\u7ecf\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u6240\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b\u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u8bf7\u9009\u62e9\u6743\u9650\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u7528\u6237\u540d</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u8bf7\u9009\u62e9\u7528\u6237\u540d --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u81ea\u52a8\u751f\u6210\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u8bbf\u95ee\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u79d8\u5bc6\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u5b50\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u6240\u9009\u7684\u5b50\u7528\u6237 ID \u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8bfb\u3001\u5199</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u5168\u90e8</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u81ea\u52a8\u751f\u6210\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u7528\u6237\u6570\u636e\u2026</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u7528\u6237\u6570\u636e\u65e0\u6cd5\u52a0\u8f7d\u3002 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u6240\u9009\u7684\u7528\u6237 ID \u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u5168\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u90ae\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u65e0\u6548\u7684\u90ae\u7bb1\u5730\u5740\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u6b64\u90ae\u7bb1\u5730\u5740\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u5b58\u50a8\u6876\u4e2a\u6570\u7684\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\u8bbe\u7f6e\u7684\u503c\u5fc5\u987b &gt;= 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u51bb\u7ed3</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u5b50\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u6ca1\u6709\u5b50\u7528\u6237\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u5bc6\u94a5</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>\u6ca1\u6709\u4efb\u4f55\u5bc6\u94a5\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u663e\u793a</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u7528\u6237\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6743\u9650\u4e3a\u7a7a\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u7528\u6237\u914d\u989d</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u5f00\u542f</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u7a7a\u95f4\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u7a7a\u95f4\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u5bf9\u8c61\u4e2a\u6570\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u5bf9\u8c61\u4e2a\u6570\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u5b58\u50a8\u6876\u914d\u989d</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\u6b22\u8fce\u4f7f\u7528 Ceph\uff01</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>\u8bf7\u8f93\u5165\u7528\u6237\u540d</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u8bf7\u8f93\u5165\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u767b\u5f55</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u63cf\u8ff0\u2026</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u62b1\u6b49\uff0c\u6b64\u7528\u6237\u4e0d\u5b58\u5728\u3002</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>\u8fd4\u56de\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u767b\u5f55\u9875\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\u60a8\u5c06\u5728\u91cd\u65b0\u767b\u5f55\u65f6\u4ece\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u6ce8\u9500\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u786e\u8ba4\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u5bc6\u7801\u548c\u4e4b\u524d\u7684\u8f93\u5165\u4e0d\u5339\u914d\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u90ae\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u90ae\u7bb1\u5730\u5740\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u89d2\u8272</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>\u60a8\u5373\u5c06\u53d6\u6d88\u60a8\u81ea\u5df1\u7528\u6237\u7684 "user read / update" \u6743\u9650\u3002</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>\u5982\u679c\u60a8\u7ee7\u7eed\u7684\u8bdd\uff0c\u60a8\u4ee5\u540e\u5c31\u6ca1\u529e\u6cd5\u4e3a\u5176\u4ed6\u7528\u6237\u6dfb\u52a0\u6216\u8005\u5220\u9664\u89d2\u8272\u4e86\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u60a8\u786e\u5b9e\u8981\u7ee7\u7eed\u5417\uff1f</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u7981\u6b62\u8bbf\u95ee</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>\u62b1\u6b49\uff0c\u60a8\u65e0\u6743\u8bbf\u95ee\u8fd9\u4e2a\u9875\u9762\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u62b1\u6b49\uff0c\u6211\u4eec\u627e\u4e0d\u5230\u60a8\u8981\u770b\u7684\u4e1c\u897f\u3002</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u5168\u90e8\u5df2\u8bfb</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u65b0\u7684\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u6ca1\u6709\u540e\u53f0\u4efb\u52a1\u6b63\u5728\u6267\u884c\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u540e\u53f0\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u5e2e\u52a9</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u6587\u6863</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>\u5173\u4e8e</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u4eea\u8868\u76d8\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u7528\u6237\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u767b\u5f55\u7684\u7528\u6237</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>\u4ee5\u7528\u6237\u540d \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\u8fdb\u884c\u767b\u5f55\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u767b\u51fa</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u6027\u80fd\u8ba1\u6570\u5668</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u6027\u80fd\u8be6\u60c5</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>\u7d22\u5f15\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u5f52\u7f6e\u89c4\u5219</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u6807\u8bc6</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>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u4e3b\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u4fee\u6539\u65f6\u95f4</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u5bf9\u8c61\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {\u5426} 1 {\u662f} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u5b58\u50a8\u6876\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u65e0\u6cd5\u8bfb\u53d6\u6027\u80fd\u8ba1\u6570\u5668</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u5168\u5c40</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \u914d\u7f6e</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>\u5220\u9664\u672c\u5730\u7684\u914d\u7f6e\u9879\uff0c\u6539\u7528\u66f4\u9ad8\u4f5c\u7528\u57df\u7684\u914d\u7f6e\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u503c\u4e3a 0</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>\u5143\u6570\u636e\u4e0d\u53ef\u7528</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u76f8\u5173\u5143\u6570\u636e</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u6027\u80fd\u8ba1\u6570\u5668</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>\u76f4\u65b9\u56fe\u4e0d\u53ef\u7528\uff1a\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>\u5199\u5165\u8bf7\u6c42</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8bfb\u53d6\u8bf7\u6c42</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u76f4\u65b9\u56fe</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u5f53\u524d\u503c</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u6765\u6e90</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u7ea7\u522b</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u53ef\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\uff08\u53ef\u7f16\u8f91\uff09</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u53ef\u9009\u9879</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u53c2\u89c1</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u96c6\u7fa4\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager \u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u5bf9\u8c61\u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata \u670d\u52a1\u5668</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u5ba2\u6237\u7aef IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u5ba2\u6237\u7aef\u541e\u5410\u91cf</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u5ba2\u6237\u7aef\u8bfb/\u5199</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u6062\u590d\u541e\u5410\u91cf</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u6027\u80fd</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u57fa\u672c\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u5bf9\u8c61\u6570</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>\u6bcf\u4e2a OSD \u7684 PG \u6570</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u67e5\u770b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u65e5\u5fd7\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u4ee5\u83b7\u5f97\u66f4\u591a\u7ec6\u8282\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u5c06\u6620\u50cf\u79fb\u81f3\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u8981\u5c06 \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u79fb\u81f3\u56de\u6536\u7ad9\uff0c\n          \u8bf7\u70b9\u51fb \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u79fb\u52a8\u6620\u50cf\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\u6b64\u5916\uff0c\u53ef\u9009\u62e9\u8bbe\u7f6e\u4e00\u4e2a\u8fc7\u671f\u65f6\u95f4\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u62a4\u671f\u4e00\u76f4\u5230</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u65e0\u4fdd\u62a4</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>\u65e5\u671f\u683c\u5f0f\u6709\u95ee\u9898\u3002\u8bf7\u4f7f\u7528\u201cYYYY-MM-DD HH:mm:ss\u201d\u3002</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>\u4fdd\u62a4\u671f\u9650\u5df2\u7ecf\u8fc7\u4e86\u3002\u8bf7\u8bbe\u7f6e\u4e00\u4e2a\u5c06\u6765\u7684\u65e5\u671f\uff0c\u6216\u8005\u6e05\u7a7a\u4e0d\u586b\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u79fb\u52a8\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u6982\u89c8</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u76ee\u6807</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>\u53ea\u5bf9\u542f\u52a8\u4e86 \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>"/> \u529f\u80fd\u7684 RBD \u6620\u50cf\u53ef\u7528\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u6570\u636e\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u4f9b\u7ed9\u5bb9\u91cf</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>\u603b\u4f9b\u7ed9\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u6761\u5e26\u5355\u5143</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u6761\u5e26\u4e2a\u6570</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u7236\u8282\u70b9</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u5757\u5b58\u50a8\u540d\u5b57\u524d\u7f00</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>\u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u6b64\u8bbe\u7f6e\u4f1a\u8986\u76d6\u5168\u5c40\u503c</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>\u8be5\u503c\u4e3a\u5168\u5c40\u503c\u3002\u6ca1\u6709\u4e3a\u6b64\u6620\u50cf\u8bbe\u7f6e\u6b64\u9009\u9879\u7684\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>RBD \u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {\u6539\u540d} other {\u521b\u5efa} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u53d7\u4fdd\u62a4\u7684</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u65e0\u4fdd\u62a4\u7684</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u60a8\u5373\u5c06\u8fdb\u884c\u56de\u6eda\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u6e05\u7a7a\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u8981\u5f7b\u5e95\u6e05\u7a7a\u7684\u8bdd\uff0c\u8bf7\u9009\u62e9\u5355\u4e2a\u6216\u6240\u6709\u7684\u6620\u50cf\uff0c\u7136\u540e\u70b9\u51fb</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u5b58\u50a8\u6c60\uff1a</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u5b58\u50a8\u6c60\u540d\u79f0\u2026</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u5168\u9009</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u6062\u590d\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u8981\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u8f93\u5165\u6620\u50cf\u7684\u65b0\u540d\u79f0\uff0c\u5e76\u70b9\u51fb</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u8fc7\u671f\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u62a4\u671f\u9650</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>\u4e00\u76f4\u5230\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\uff0c\u8be5\u6620\u50cf\u90fd\u4f1a\u53d7\u4fdd\u62a4\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \u7ed3\u6784\u56fe</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u95ee\u9898</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u6b63\u5728\u540c\u6b65</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u5df2\u5c31\u7eea</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u7f16\u8f91\u5b58\u50a8\u6c60\u955c\u50cf\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u8981\u7f16\u8f91\u5b58\u50a8\u6c60\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>"/>\xa0\n          \u7684\u955c\u50cf\u6a21\u5f0f\uff0c\u8bf7\u4ece\u5217\u8868\u4e2d\u9009\u62e9\u4e00\u9879\uff0c\u5e76\u70b9\u51fb\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u66f4\u65b0\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\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>\u5728\u7981\u7528\u955c\u50cf\u529f\u80fd\u524d\u5fc5\u987b\u5148\u79fb\u9664\u540c\u4f34\u96c6\u7fa4\u3002</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\u5b58\u50a8\u6c60\u955c\u50cf\u540c\u4f34\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 {\u7f16\u8f91} other {\u6dfb\u52a0} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u5b58\u50a8\u6c60\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>"/>\n         \u7684\u5b58\u50a8\u6c60\u955c\u50cf\u540c\u4f34\u5c5e\u6027\uff0c\u5e76\u70b9\u51fb\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u63d0\u4ea4\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u96c6\u7fa4\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u96c6\u7fa4\u540d\u79f0\u65e0\u6548\u3002</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 \u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor \u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u9017\u53f7\u5206\u5272\u7684\u5730\u5740...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor \u5730\u5740\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 \u7f16\u7801\u7684\u5bc6\u94a5...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \u5bc6\u94a5\u5fc5\u987b\u662f base64 \u7f16\u7801\u7684\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u7f13\u5b58\u5c42\u8be6\u7ec6\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u6392\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u5ba2\u6237\u7aef\uff1a\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u5f53\u524d</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u5df2\u66f4\u65b0\u53d1\u73b0\u8eab\u4efd\u9a8c\u8bc1</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u65e0\u53ef\u7528\u7aef\u53e3\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u65e0\u53ef\u7528\u6620\u50cf\u3002</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>\u65e0\u53ef\u7528\u6620\u50cf\u3002\u8bf7\u786e\u4fdd\u4e3a\u76ee\u6807\u6dfb\u52a0\u4e00\u4e2a\u6620\u50cf\u3002</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>\u65e0\u53ef\u7528\u6388\u6743\u4eba\u3002\u8bf7\u786e\u4fdd\u4e3a\u76ee\u6807\u6dfb\u52a0\u4e00\u4e2a\u6388\u6743\u4eba\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u76ee\u6807</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u4e3b\u673a\u540d</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8bfb\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8bfb\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u5199\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u6d3b\u52a8/\u4f18\u5316\u81ea</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u5b9e\u4f8b</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u95ee\u9898</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u8fdb\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u7981\u7528</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u7f16\u8f91\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u6dfb\u52a0 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u7f16\u8f91 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u5220\u9664 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># \u672c\u5730</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># \u8fdc\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u955c\u50cf peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u503c</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u5b8c\u5168\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u5206\u5c42</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u4e92\u65a5\u9501</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map\uff08\u8981\u6c42\u4e92\u65a5\u9501\u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u65e5\u5fd7\uff08\u8981\u6c42\u4e92\u65a5\u9501\u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u5feb\u901f diff\uff08\u8981\u6c42 object map \u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u79fb\u81f3\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u65b0\u5efa</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u91cd\u547d\u540d</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u62a4</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u89e3\u9664\u4fdd\u62a4</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \u5feb\u7167\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u5b9a\u70b9\u5220\u9664</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>\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u4e3b\u673a</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u6839</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u6392\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u6d3b\u8dc3\u5ea6</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>\u4f7f\u7528\u7387</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u5907\u7528\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u8be5\u503c\u53ef\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\u3002</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>\u670d\u52a1\u5668\u6216\u5ba2\u6237\u7aef\u4e0d\u4f1a\u4e3b\u52a8\u4ece monitor \u7684\u914d\u7f6e\u6570\u636e\u5e93\u8bfb\u53d6\u8fd9\u4e2a\u914d\u7f6e\u3002\n \u6240\u4ee5\u4e0d\u80fd\u7528\u201cceph config set ...\u201d\u8bbe\u7f6e\u5b83\u3002\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7\n ceph.conf \u6216\u8005\u7528\u547d\u4ee4\u884c\u8fdb\u884c\u914d\u7f6e\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u6709\u5728\u670d\u52a1\u542f\u52a8\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u5728\u521b\u5efa\u96c6\u7fa4\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u5728\u670d\u52a1\u521b\u5efa\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</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>\u5df2\u66f4\u65b0\u914d\u7f6e\u9009\u9879\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>\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u5f53\u524d\u503c</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u53ef\u7f16\u8f91</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>\u5df2\u66f4\u65b0\u6269\u5c55\u6a21\u5757\u201c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201d\u7684\u9009\u9879\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u542f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u7981\u7528</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u6b63\u5728\u91cd\u65b0\u8fde\u63a5\uff0c\u8bf7\u7a0d\u5019\u2026</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u5916\u90e8\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u6d3b\u52a8\u4f1a\u8bdd</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u7981\u6b62\u52a0\u5165</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>\u4e4b\u524d\u88ab\u9664\u540d\u7684 OSD \u5728\u542f\u52a8\u4e4b\u540e\uff0c\u4e0d\u4f1a\u88ab\u52a0\u5165\u96c6\u7fa4</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u7981\u6b62\u9664\u540d</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>\u5728\u53d1\u73b0 OSD \u6ca1\u6709\u54cd\u5e94\u4e4b\u540e\u4e00\u6bb5\u65f6\u95f4\uff0c\u8be5 OSD \u4f1a\u88ab\u8e22\u51fa\u96c6\u7fa4\u3002\u8be5\u6807\u5fd7\u4f1a\u7981\u6b62\u8fd9\u4e2a\u529f\u80fd\u3002</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u7981\u6b62\u542f\u7528</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>\u4e0d\u5141\u8bb8 OSD \u542f\u52a8</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u7981\u6b62\u505c\u7528</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>\u5f53\u524d\u4e0d\u53d7\u7406\u5bf9 OSD \u7684\u5931\u6548\u62a5\u544a\uff0c\u56e0\u800c monitor \u4e0d\u4f1a\u505c\u7528 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u6682\u505c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u6682\u505c\u8bfb\u5199</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u7981\u6b62\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u6d17\u5237\u5df2\u7981\u6b62</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u7981\u6b62\u6df1\u5c42\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u6df1\u5c42\u6d17\u5237\u5df2\u7981\u6b62</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u7981\u6b62\u56de\u586b</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG \u56de\u586b\u5df2\u63a8\u8fdf</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u7981\u6b62\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG \u6062\u590d\u5df2\u63a8\u8fdf</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u9010\u4f4d\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u4f7f\u7528\u9010\u4f4d\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u8001\u7248\u672c\u7684\u5feb\u7167\u5df2\u5168\u90e8\u5347\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD \u4e0a\u7684\u5feb\u7167\u5df2\u5168\u90e8\u8f6c\u6362\u5b8c\u6bd5</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u5728\u6062\u590d\u65f6\u8fdb\u884c\u5220\u9664\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u5728\u6062\u590d\u65f6\uff0c\u800c\u975e\u5bf9\u9f50\u9636\u6bb5\u8fdb\u884c\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \u65e5\u5fd7\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u4e3a pg \u65e5\u5fd7\u957f\u5ea6\u6dfb\u52a0\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\u5df2\u66f4\u65b0 OSD \u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u6df1\u5c42\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u6807\u8bb0\u4e3a\u5df2\u9664\u540d</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\u9664\u540d</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u6807\u8bb0\u4e3a\u52a0\u5165</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\u52a0\u5165</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u6807\u8bb0\u4e3a\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u6807\u8bb0\u4e3a\u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u5df2\u6807\u8bb0\u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6e05\u9664</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u9500\u6bc1</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u9500\u6bc1</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u5df2\u9500\u6bc1</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>\u8bfb\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8bfb\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u5199\u8bf7\u6c42\u6570</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>\u6807\u8bb0 OSD \u4e3a\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>\u6807\u8bb0\u4e3a\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u56de\u586b\u91cf</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u6700\u5927\u6d3b\u8dc3\u6062\u590d\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u6700\u5927\u5355\u6b21\u6062\u590d\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u6062\u590d/\u56de\u586b\u64cd\u4f5c\u95f4\u9694\u7761\u7720\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u81ea\u5b9a\u4e49</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>\u5df2\u66f4\u65b0 OSD \u6062\u590d\u901f\u5ea6\u4f18\u5148\u7ea7\u201c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\u5982\u4e0b OSD \u5df2\u7ecf\u542f\u52a8\u4e86\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \u64cd\u4f5c\uff1a\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u4e25\u91cd\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u5df2\u542f\u52a8</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u5df2\u4f7f\u7528</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u7a7a\u95f2</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u6b63\u5e38</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u8fd0\u884c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u62a5</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u672a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u542f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u65e0\u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u5de5\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u5f85\u673a</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>\u5de5\u4f5c\u7684\u5b88\u62a4\u8fdb\u7a0b</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 \u670d\u52a1\u7684\u914d\u7f6e\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u4f20\u8f93</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>\uff08\u7ee7\u627f\u81ea\u5168\u5c40\u914d\u7f6e\uff09</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u7ee7\u627f\u81ea\u5168\u5c40\u914d\u7f6e</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>-- \u9009\u62e9\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u7528\u6237 ID \u533f\u540d\u8bbf\u95ee --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u6ca1\u6709\u53ef\u7528\u7684\u5b88\u62a4\u8fdb\u7a0b\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u5bfc\u51fa</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u7f13\u5b58\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u6700\u5c11\u5ef6\u8fdf\u8d76\u51fa\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u6700\u5c11\u5ef6\u8fdf\u5237\u56de\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u76ee\u6807\u5668\u6700\u5927\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u76ee\u6807\u5668\u6700\u5927\u5bf9\u8c61\u6570</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u8fd8\u6ca1\u6709\u4efb\u4f55\u5e94\u7528\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u5e94\u7528\u6807\u8bb0\u5230\u4e86\u4e0a\u9650</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>\u4e00\u4e2a\u5b58\u50a8\u6c60\u6700\u591a\u80fd\u6709\u56db\u4e2a\u5e94\u7528\u6807\u8bb0\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u53ef\u7528\u7684\u5b57\u7b26\u4e3a\u201c_a-zA-Z0-9\u201d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u957f\u5ea6\u9650\u5236\u4e3a 128 \u4e2a\u5b57\u7b26</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u6dfb\u52a0\u5e94\u7528\u6807\u8bb0\u6216\u6839\u636e\u5176\u8fdb\u884c\u7b5b\u9009</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u6dfb\u52a0\u5e94\u7528\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u526f\u672c\u4e2a\u6570</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u6700\u540e\u4fee\u6539\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH \u89c4\u5219\u96c6</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u5df2\u66f4\u65b0\u5bf9\u8c61\u7f51\u5173\u5b58\u50a8\u6876\u201c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201d\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>\u5df2\u521b\u5efa\u5bf9\u8c61\u7f51\u5173\u5b58\u50a8\u6876\u201c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u5b58\u50a8\u6876</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u5b58\u50a8\u6876</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>\u5df2\u66f4\u65b0\u5bf9\u8c61\u7f51\u5173\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201d\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>\u5df2\u521b\u5efa\u5bf9\u8c61\u7f51\u5173\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u4f5c\u7528\u8303\u56f4</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8bfb\u6743\u9650</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>\u65b0\u5efa\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\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>\u66f4\u65b0\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u7cfb\u7edf\u89d2\u8272</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>\u5df2\u5220\u9664\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\n        </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>\u5df2\u65b0\u5efa\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u66f4\u65b0\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7ee7\u7eed</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>\u60a8\u88ab\u81ea\u52a8\u767b\u51fa\uff0c\u56e0\u4e3a\u60a8\u7684\u89d2\u8272\u6709\u4e86\u53d8\u52a8\u3002</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>\u5df2\u66f4\u65b0\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\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>\u5df2\u5220\u9664\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\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>\u5220\u9664\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\u5931\u8d25\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>\u60a8\u5f53\u524d\u5728\u7528\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\u7684\u8eab\u4efd\u767b\u5f55\u3002\n        </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> \u5404\u5bf9\u8c61\u90fd\u88ab\u5206\u5272\u4e3a\u6570\u636e\u5757\uff0c\u5206\u522b\u5b58\u50a8\u4e8e\u4e0d\u540c OSD \u3002</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>\u8ba1\u7b97\u5404\u5bf9\u8c61\u7684\u7f16\u7801\u5757\u3001\u5e76\u5b58\u50a8\u4e8e\u4e0d\u540c OSD \u3002\n\u7f16\u7801\u5757\u7684\u6570\u91cf\u7b49\u540c\u4e8e\u5728\u4e0d\u4e22\u6570\u636e\u7684\u524d\u63d0\u4e0b\u5141\u8bb8\u540c\u65f6\u5931\u6548\u7684 OSD \u6570\u91cf\u3002</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 \u63d2\u4ef6\u662f\u6700\u901a\u7528\u3001\u6700\u7075\u6d3b\u7684\u63d2\u4ef6\uff0c\n\u4e5f\u662f Ceph \u7ea0\u5220\u7801\u5b58\u50a8\u6c60\u7684\u9ed8\u8ba4\u63d2\u4ef6\u3002</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 \u6280\u672f\u66f4\u7075\u6d3b\uff1a\u5b83\u8db3\u4ee5\u8bbe\u7f6e k \u548c m \u503c\u3002 \ncauchy_good \u6280\u672f\u66f4\u5feb\uff0c\u4f46\u4f60\u5f97\u8c28\u614e\u5730\u9009\u62e9 packetsize \u503c\u3002\nreed_sol_r6_op \u3001 liberation \u3001 blaum_roth \u3001 liber8tion \u90fd\u662f\u4e0e RAID6 \u7b49\u4ef7\u7684\u6280\u672f\uff0c\n\u5b83\u4eec\u53ea\u80fd\u914d\u7f6e\u4e3a m=2 \u3002</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> \u4ee5 bytes \u5927\u5c0f\u7684\u5305\u4e3a\u5355\u4f4d\u8fdb\u884c\u7f16\u7801\u3002\n\u786e\u5b9a\u5408\u9002\u7684\u5305\u5c3a\u5bf8\u5f88\u96be\uff0c \njerasure \u6587\u6863\u5bf9\u6b64\u6709\u5f88\u8be6\u7ec6\u7684\u63cf\u8ff0\u3002</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>\u7528 jerasure \u63d2\u4ef6\u65f6\uff0c\u7ea0\u5220\u7801\u7f16\u7801\u7684\u5bf9\u8c61\u5b58\u50a8\u5728\u591a\u4e2a OSD \u4e0a\uff0c\n\u4e22\u5931\u4e00\u4e2a OSD \u7684\u6062\u590d\u8fc7\u7a0b\u9700\u8bfb\u53d6\u6240\u6709\u5176\u4ed6\u7684 OSD \u3002\n\u6bd4\u5982 jerasure \u7684\u914d\u7f6e\u4e3a k=8 \u4e14 m=4 \uff0c\u4e22\u5931\u4e00\u4e2a OSD \u540e\u9700\u8bfb\u53d6\u5176\u4ed6 11 \u4e2a OSD \u624d\u80fd\u6062\u590d\u3002\n\nlrc \u7ea0\u5220\u7801\u63d2\u4ef6\u521b\u5efa\u7684\u662f\u5c40\u90e8\u6821\u9a8c\u5757\uff0c\u8fd9\u6837\u53ea\u9700\u8f83\u5c11\u7684 OSD \u5373\u53ef\u6062\u590d\u3002\n\u6bd4\u5982 lrc \u7684\u914d\u7f6e\u4e3a k=8 \u3001 m=4 \u4e14 l=4 \uff0c\u5b83\u5c06\u4e3a\u6bcf\u56db\u4e2a OSD \u521b\u5efa\u989d\u5916\u7684\u6821\u9a8c\u5757\uff0c\n\u5f53\u4e00\u4e2a OSD \u4e22\u5931\u65f6\uff0c\u5b83\u53ea\u9700\u56db\u4e2a OSD \u5373\u53ef\u6062\u590d\uff0c\u800c\u4e0d\u9700\u8981\u5341\u4e00\u4e2a\u3002</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>\u628a\u7f16\u7801\u5757\u548c\u6570\u636e\u5757\u5206\u7ec4\u4e3a\u5927\u5c0f\u4e3a locality \u7684\u96c6\u5408\u3002\n\u6bd4\u5982\uff0c k=4 \u4e14 m=2 \u65f6\uff0c\u82e5\u8bbe\u7f6e locality=3 \uff0c\u5c06\u4f1a\u5206\u7ec4\u4e3a\u5927\u5c0f\u4e3a\u4e09\u7684\u4e24\u7ec4\uff0c\n\u8fd9\u6837\u5404\u7ec4\u90fd\u80fd\u81ea\u884c\u6062\u590d\uff0c\u65e0\u9700\u4ece\u53e6\u4e00\u7ec4\u8bfb\u6570\u636e\u5757\u3002</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>\u7531 l \u5b9a\u4e49\u7684\u5757\u96c6\u5408\u5c06\u6309\u54ea\u79cd crush \u6876\u7c7b\u578b\u5b58\u50a8\u3002\n\u6bd4\u5982\uff0c\u82e5\u8bbe\u7f6e\u4e3a rack \uff0c\u5927\u5c0f\u4e3a l \u5757\u7684\u5404\u7ec4\u5c06\u88ab\u5b58\u5165\u4e0d\u540c\u7684\u673a\u67b6\uff0c\n\u6b64\u503c\u4f1a\u88ab\u7528\u4e8e\u521b\u5efa\u7c7b\u4f3c step choose rack \u7684\u89c4\u5219\u96c6\u3002\n\u5982\u679c\u6ca1\u8bbe\u7f6e\uff0c\u5c31\u4e0d\u4f1a\u8fd9\u6837\u5206\u7ec4\u3002</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 \u63d2\u4ef6\u5c01\u88c5\u4e86 ISA \u5e93\u3002\u5b83\u53ea\u80fd\u8fd0\u884c\u5728 Intel \u5904\u7406\u5668\u4e0a\u3002</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 \u63d2\u4ef6\u5305\u542b\u4e24\u79cd Reed Solomon \u7f16\u7801\u5f62\u5f0f\u3002\n\u8bbe\u7f6e\u4e3a reed_sol_van \u8868\u793a\u7528 Vandermonde \u7b97\u6cd5\uff0c\u8bbe\u7f6e\u4e3a cauchy \u8868\u793a\u7528 Cauchy \u7b97\u6cd5\u3002</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 \u63d2\u4ef6\u5c01\u88c5\u4e86 multiple SHEC \u5e93\u3002\n\u4e0e Reed Solomon \u7f16\u7801\u76f8\u6bd4\uff0c\u5b83\u80fd\u4f7f Ceph \u66f4\u9ad8\u6548\u5730\u6062\u590d\u6570\u636e\u3002</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> \u5947\u5076\u6821\u9a8c\u5757\u6570\u91cf\uff0c\u5b83\u4eec\u5728\u5404\u81ea\u7684\u8ba1\u7b97\u8303\u56f4\u5185\u5305\u542b\u4e86\u5404\u6570\u636e\u5757\u3002\n\u6b64\u6570\u503c\u88ab\u7528\u4f5c\u6301\u4e45\u6027\u4f30\u503c\u3002\n\u4f8b\u5982\uff0c\u5047\u8bbe c=2 \uff0c\u5c31\u662f\u8bf4\u4e0d\u4e1f\u6570\u636e\u7684\u60c5\u51b5\u4e0b\u53ef\u635f\u5931 2 \u4e2a OSD \u3002</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>\u89c4\u5219\u96c6\u7b2c\u4e00\u6b65\u6240\u6307\u5411\u7684 CRUSH \u6876\u4e4b\u540d\uff0c\n\u5982 step take default \u3002</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>\u786e\u4fdd\u4e24\u4e2a\u7f16\u7801\u5757\u4e0d\u4f1a\u5b58\u5728\u4e8e\u540c\u4e00\u6545\u969c\u57df\u7684\u6876\u91cc\u9762\u3002\n\u6bd4\u5982\uff0c\u5047\u8bbe\u6545\u969c\u57df\u662f host \uff0c\u5c31\u4e0d\u4f1a\u6709\u4e24\u4e2a\u7f16\u7801\u5757\u5b58\u50a8\u5230\u540c\u4e00\u4e3b\u673a\uff1b\n\u6b64\u503c\u7528\u4e8e\u5728\u89c4\u5219\u96c6\u4e2d\u521b\u5efa\u7c7b\u4f3c step chooseleaf host \u7684\u6b65\u9aa4\u3002</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>\u4f7f\u7528 CRUSH \u7d22\u5f15\u4e2d\u7684 crush \u8bbe\u5907\u7c7b\u540d\uff0c\n\u5c06\u5f52\u7f6e\u9650\u5236\u4e8e\u7279\u5b9a\u7c7b\u7684\u8bbe\u5907\uff08\u4f8b\u5982\uff0cssd \u6216 hdd\uff09\u3002</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>\u8bbe\u7f6e\u7ea0\u5220\u7801\u63d2\u4ef6\u6240\u5728\u76ee\u5f55\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u5141\u8bb8\u6240\u6709\u64cd\u4f5c</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>\u53ea\u5141\u8bb8\u4e0d\u4fee\u6539\u670d\u52a1\u5668\u7aef\u6570\u636e\u7684\u64cd\u4f5c</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>\u7981\u6b62\u8bfb\u5199\uff0c\u4f46\u662f\u5141\u8bb8\u5176\u4ed6\u7684\u64cd\u4f5c</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>\u7981\u6b62\u8bfb\u3001\u5199\u4ee5\u53ca\u4efb\u4f55\u53ef\u80fd\u4fee\u6539\u6587\u4ef6\u5185\u5bb9\u7684\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u5b8c\u5168\u7981\u6b62\u8bbf\u95ee</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u9009\u62e9\u4f18\u5148\u7ea7 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u8fc7\u53bb 5 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u8fc7\u53bb 15 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u8fc7\u53bb 30 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u8fc7\u53bb 1 \u5c0f\u65f6\uff08\u9ed8\u8ba4\uff09</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u8fc7\u53bb 3 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u8fc7\u53bb 6 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u8fc7\u53bb 12 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u8fc7\u53bb 24 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u5929</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u4eca\u5929\u5230\u73b0\u5728\u4e3a\u6b62</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u524d\u5929</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u8fc7\u53bb 2 \u5929</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u4e0a\u5468\u7684\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u4e0a\u4e2a\u661f\u671f</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u672c\u5468</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u672c\u5468\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u8fc7\u53bb 7 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u4e0a\u4e2a\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u5f53\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u672c\u6708\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u8fc7\u53bb 30 \u5929</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u8fc7\u53bb 90 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u8fc7\u53bb 6 \u4e2a\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u8fc7\u53bb 1 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u53bb\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u8fc7\u53bb 2 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u8fc7\u53bb 5 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u65e0\u9009\u4e2d\u9879\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u53d6\u6d88\u9009\u62e9</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u8fbe\u5230\u9009\u62e9\u9879\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u8fc7\u6ee4\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u6dfb\u52a0 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u65e0\u53ef\u9009\u9879\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u662f</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u5426</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u670d\u52a1\u8d28\u91cf (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8bfb BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5185\u8bfb\u53d6\u7684\u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8bfb IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u8bfb\u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u5199 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5185\u5199\u5165\u7684\u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u5199 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5199\u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u6307\u5b9a\u7684 IO \u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u6307\u5b9a\u7684 IO \u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8bfb BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u6307\u5b9a\u7684\u8bfb\u53d6\u7684\u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8bfb IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u6307\u5b9a\u7684\u8bfb\u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u5199 BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u6307\u5b9a\u7684\u5199\u5165\u7684\u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u5199 IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u6307\u5b9a\u7684\u5199\u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\u5931\u8d25\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\u6b63\u5728\u6267\u884c</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u6267\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u6267\u884c\u5b8c\u6bd5</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u672a\u77e5\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u6b63\u5728\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u6b63\u5728\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u66f4\u65b0\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u6b63\u5728\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u5220\u9664\u5b8c\u6210</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\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\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 \u5feb\u7167\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\n        </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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u7684\u955c\u50cf\u6a21\u5f0f\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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u7684\u955c\u50cf\u540c\u4f34\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u4f7f\u7528\u3002\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u4f7f\u7528\u3002\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u4f7f\u7528\u3002\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}}"/>\u5305\u542b\u6709\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u6b63\u5728\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u514b\u9686\u5b8c\u6210</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>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u7684\u5feb\u7167\u5fc5\u987b\u5904\u4e8e\u53d7\u4fdd\u62a4\u72b6\u6001\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u6b63\u5728\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u590d\u5236\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u6b63\u5728\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u5c55\u5f00\u5b8c\u6210</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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u4f7f\u7528\u3002\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>\u65e0\u6cd5\u53bb\u6389\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u7684\u4fdd\u62a4\u72b6\u6001\uff0c\u56e0\u4e3a\u5b83\u6709\u5b50\u6620\u50cf\u3002\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>\u65e0\u6cd5\u5220\u9664\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u4e3a\u5b83\u5904\u4e8e\u53d7\u4fdd\u62a4\u72b6\u6001\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u6b63\u5728\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u56de\u6eda\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u6b63\u5728\u628a</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u628a</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u5df2\u7ecf\u628a</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>\u6620\u50cf\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u79fb\u81f3\u56de\u6536\u7ad9\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u65e0\u6cd5\u627e\u5230\u6620\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u6b63\u5728\u628a</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u628a</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5df2\u7ecf\u628a</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>\u6620\u50cf\u4ece\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u6062\u590d\u5230\u201c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u201d\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>\u6620\u50cf\u540d\u79f0\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u5df2\u88ab\u4f7f\u7528\u3002\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>\u6620\u50cf\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6b63\u5728\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u6240\u6709\u5b58\u50a8\u6c60</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\u91cc\u7684\u6620\u50cf\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>\u56e0\u4e3a\u5305\u542b\u540c\u4f34\u96c6\u7fa4\uff0c\u65e0\u6cd5\u7981\u7528\u955c\u50cf\u529f\u80fd</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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u201d\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>\u7ea0\u5220\u7801\u914d\u7f6e\u201c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201d\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>\u76ee\u6807\u5668\u201c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u201d\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>'},fELs:function(t,e,n){"use strict";var a=n("RDha");function r(t,e){return a.where(t,function(t){return t.position===e})}function i(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_})}t.exports={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,o=0;o<i;++o)n.hasOwnProperty(a=r[o])&&(e[a]=n[a])},update:function(t,e,n){if(t){var o=a.options.toPadding((t.options.layout||{}).padding),s=o.left,u=o.right,c=o.top,l=o.bottom,d=r(t.boxes,"left"),p=r(t.boxes,"right"),f=r(t.boxes,"top"),h=r(t.boxes,"bottom"),g=r(t.boxes,"chartArea");i(d,!0),i(p,!1),i(f,!0),i(h,!1);var m=e-s-u,b=n-c-l,y=(e-m/2)/(d.length+p.length),v=(n-b/2)/(f.length+h.length),x=m,_=b,T=[];a.each(d.concat(p,f,h),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:x,v),_-=e.height):(e=t.update(y,_),x-=e.width),T.push({horizontal:n,minSize:e,box:t})});var w=0,S=0,O=0,k=0;a.each(f.concat(h),function(t){if(t.getPadding){var e=t.getPadding();w=Math.max(w,e.left),S=Math.max(S,e.right)}}),a.each(d.concat(p),function(t){if(t.getPadding){var e=t.getPadding();O=Math.max(O,e.top),k=Math.max(k,e.bottom)}});var C=s,I=u,R=c,N=l;a.each(d.concat(p),q),a.each(d,function(t){C+=t.width}),a.each(p,function(t){I+=t.width}),a.each(f.concat(h),q),a.each(f,function(t){R+=t.height}),a.each(h,function(t){N+=t.height}),a.each(d.concat(p),function(t){var e=a.findNextWhere(T,function(e){return e.box===t});e&&t.update(e.minSize.width,_,{left:0,right:0,top:R,bottom:N})}),C=s,I=u,R=c,N=l,a.each(d,function(t){C+=t.width}),a.each(p,function(t){I+=t.width}),a.each(f,function(t){R+=t.height}),a.each(h,function(t){N+=t.height});var D=Math.max(w-C,0);C+=D,I+=Math.max(S-I,0);var A=Math.max(O-R,0);R+=A,N+=Math.max(k-N,0);var E=n-R-N,L=e-C-I;L===x&&E===_||(a.each(d,function(t){t.height=E}),a.each(p,function(t){t.height=E}),a.each(f,function(t){t.fullWidth||(t.width=L)}),a.each(h,function(t){t.fullWidth||(t.width=L)}),_=E,x=L);var P=s+D,M=c+A;a.each(d.concat(f),j),P+=x,M+=_,a.each(p,j),a.each(h,j),t.chartArea={left:C,top:R,right:C+x,bottom:R+_},a.each(g,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 q(t){var e=a.findNextWhere(T,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(C,w),right:Math.max(I,S),top:0,bottom:0};t.update(t.fullWidth?m:x,b/2,n)}else t.update(e.minSize.width,_)}function j(t){t.isHorizontal()?(t.left=t.fullWidth?s:C,t.right=t.fullWidth?e-u:C+x,t.top=M,t.bottom=M+t.height,M=t.bottom):(t.left=P,t.right=P+t.width,t.top=R,t.bottom=R+_,P=t.right)}}}},fhFe:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.DataTablePagerComponent=function(){function t(){this.change=new i.EventEmitter,this._count=0,this._page=1,this._size=0}return Object.defineProperty(t.prototype,"size",{get:function(){return this._size},set:function(t){this._size=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"page",{get:function(){return this._page},set:function(t){this._page=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalPages",{get:function(){var t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)},enumerable:!0,configurable:!0}),t.prototype.canPrevious=function(){return this.page>1},t.prototype.canNext=function(){return this.page<this.totalPages},t.prototype.prevPage=function(){this.selectPage(this.page-1)},t.prototype.nextPage=function(){this.selectPage(this.page+1)},t.prototype.selectPage=function(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))},t.prototype.calcPages=function(t){var e=[],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(var r=n;r<=a;r++)e.push({number:r,text:r});return e},a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"size",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"page",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"change",void 0),a([i.Component({selector:"datatable-pager",template:'\n    <ul class="pager">\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to first page"\n          href="javascript:void(0)"\n          (click)="selectPage(1)">\n          <i class="{{pagerPreviousIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to previous page"\n          href="javascript:void(0)"\n          (click)="prevPage()">\n          <i class="{{pagerLeftArrowIcon}}"></i>\n        </a>\n      </li>\n      <li\n        role="button"\n        [attr.aria-label]="\'page \' + pg.number"\n        class="pages"\n        *ngFor="let pg of pages"\n        [class.active]="pg.number === page">\n        <a\n          href="javascript:void(0)"\n          (click)="selectPage(pg.number)">\n          {{pg.text}}\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to next page"\n          href="javascript:void(0)"\n          (click)="nextPage()">\n          <i class="{{pagerRightArrowIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to last page"\n          href="javascript:void(0)"\n          (click)="selectPage(totalPages)">\n          <i class="{{pagerNextIcon}}"></i>\n        </a>\n      </li>\n    </ul>\n  ',host:{class:"datatable-pager"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},fktO:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("Ahxa")),a(n("fhFe")),a(n("lUjN")),a(n("vxfy"))},fzPg:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".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:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}})}()},g8vO:function(t,e,n){"use strict";var a=n("RDha");t.exports={formatters:{values:function(t){return a.isArray(t)?t:""+t},linear:function(t,e,n){var r=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(r)>1&&t!==Math.floor(t)&&(r=t-Math.floor(t));var i=a.log10(Math.abs(r)),o="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=a.log10(Math.abs(t));o=t.toExponential(Math.floor(s)-Math.floor(i))}else{var u=-1*Math.floor(i);u=Math.max(Math.min(u,20),0),o=t.toFixed(u)}else o="0";return o},logarithmic:function(t,e,n){var r=t/Math.pow(10,Math.floor(a.log10(t)));return 0===t?"0":1===r||2===r||5===r||0===e||e===n.length-1?t.toExponential():""}}}},gI3B:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("6blF"),r=n("T1DM"),i=n("/21U"),o=n("nkY7");function s(t,e,n){void 0===t&&(t=0);var s=-1;return Object(i.a)(e)?s=Number(e)<1?1:Number(e):Object(o.a)(e)&&(n=e),Object(o.a)(n)||(n=r.a),new a.a(function(e){var a=Object(i.a)(t)?t:+t-n.now();return n.schedule(u,a,{index:0,period:s,subscriber:e})})}function u(t){var e=t.index,n=t.period,a=t.subscriber;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},gIcY:function(t,e,n){"use strict";n.d(e,"B",function(){return kt}),n.d(e,"D",function(){return Ot}),n.d(e,"C",function(){return S}),n.d(e,"E",function(){return C}),n.d(e,"F",function(){return bt}),n.d(e,"G",function(){return F}),n.d(e,"c",function(){return v}),n.d(e,"d",function(){return l}),n.d(e,"p",function(){return y}),n.d(e,"b",function(){return x}),n.d(e,"e",function(){return _}),n.d(e,"q",function(){return k}),n.d(e,"r",function(){return et}),n.d(e,"s",function(){return nt}),n.d(e,"t",function(){return dt}),n.d(e,"u",function(){return mt}),n.d(e,"w",function(){return I}),n.d(e,"j",function(){return Tt}),n.d(e,"l",function(){return yt}),n.d(e,"g",function(){return xt}),n.d(e,"m",function(){return vt}),n.d(e,"v",function(){return M}),n.d(e,"z",function(){return P}),n.d(e,"y",function(){return wt}),n.d(e,"h",function(){return St}),n.d(e,"a",function(){return ot}),n.d(e,"f",function(){return ct}),n.d(e,"i",function(){return st}),n.d(e,"k",function(){return ut}),n.d(e,"o",function(){return p}),n.d(e,"A",function(){return h}),n.d(e,"n",function(){return Ct}),n.d(e,"x",function(){return It});var a=n("mrSG"),r=n("CcnG"),i=n("VNr4"),o=n("0/uQ"),s=n("67Y/"),u=n("ZYjt"),c=function(){function t(){}return Object.defineProperty(t.prototype,"value",{get:function(){return this.control?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valid",{get:function(){return this.control?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"invalid",{get:function(){return this.control?this.control.invalid:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pending",{get:function(){return this.control?this.control.pending:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this.control?this.control.disabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.control?this.control.enabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.control?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pristine",{get:function(){return this.control?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dirty",{get:function(){return this.control?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"touched",{get:function(){return this.control?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"status",{get:function(){return this.control?this.control.status:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"untouched",{get:function(){return this.control?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"statusChanges",{get:function(){return this.control?this.control.statusChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valueChanges",{get:function(){return this.control?this.control.valueChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),t.prototype.reset=function(t){void 0===t&&(t=void 0),this.control&&this.control.reset(t)},t.prototype.hasError=function(t,e){return!!this.control&&this.control.hasError(t,e)},t.prototype.getError=function(t,e){return this.control?this.control.getError(t,e):null},t}(),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),e}(c);function d(t){return null==t||0===t.length}var p=new r.InjectionToken("NgValidators"),f=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[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])?)*$/,h=function(){function t(){}return t.min=function(t){return function(e){if(d(e.value)||d(t))return null;var n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}},t.max=function(t){return function(e){if(d(e.value)||d(t))return null;var n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}},t.required=function(t){return d(t.value)?{required:!0}:null},t.requiredTrue=function(t){return!0===t.value?null:{required:!0}},t.email=function(t){return d(t.value)?null:f.test(t.value)?null:{email:!0}},t.minLength=function(t){return function(e){if(d(e.value))return null;var n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}},t.maxLength=function(t){return function(e){var n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}},t.pattern=function(e){return e?("string"==typeof e?(a="","^"!==e.charAt(0)&&(a+="^"),a+=e,"$"!==e.charAt(e.length-1)&&(a+="$"),n=new RegExp(a)):(a=e.toString(),n=e),function(t){if(d(t.value))return null;var e=t.value;return n.test(e)?null:{pattern:{requiredPattern:a,actualValue:e}}}):t.nullValidator;var n,a},t.nullValidator=function(t){return null},t.compose=function(t){if(!t)return null;var e=t.filter(g);return 0==e.length?null:function(t){return b(function(t,n){return e.map(function(e){return e(t)})}(t))}},t.composeAsync=function(t){if(!t)return null;var e=t.filter(g);return 0==e.length?null:function(t){var n=function(t,n){return e.map(function(e){return e(t)})}(t).map(m);return Object(i.a)(n).pipe(Object(s.a)(b))}},t}();function g(t){return null!=t}function m(t){var e=Object(r["\u0275isPromise"])(t)?Object(o.a)(t):t;if(!Object(r["\u0275isObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function b(t){var e=t.reduce(function(t,e){return null!=e?Object(a.__assign)({},t,e):t},{});return 0===Object.keys(e).length?null:e}var y=new r.InjectionToken("NgValueAccessor"),v=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}(),x=new r.InjectionToken("CompositionEventMode"),_=function(){function t(t,e,n){var a;this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=function(t){},this.onTouched=function(){},this._composing=!1,null==this._compositionMode&&(this._compositionMode=(a=Object(u["\u0275getDOM"])()?Object(u["\u0275getDOM"])().getUserAgent():"",!/android (\d+)/.test(a.toLowerCase())))}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._handleInput=function(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)},t.prototype._compositionStart=function(){this._composing=!0},t.prototype._compositionEnd=function(t){this._composing=!1,this._compositionMode&&this.onChange(t)},t}();function T(t){return t.validate?function(e){return t.validate(e)}:t}function w(t){return t.validate?function(e){return t.validate(e)}:t}var S=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)},t.prototype.registerOnChange=function(t){this.onChange=function(e){t(""==e?null:parseFloat(e))}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}();function O(){throw new Error("unimplemented")}var k=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._parent=null,e.name=null,e.valueAccessor=null,e._rawValidators=[],e._rawAsyncValidators=[],e}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"validator",{get:function(){return O()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return O()},enumerable:!0,configurable:!0}),e}(c),C=function(){function t(){this._accessors=[]}return t.prototype.add=function(t,e){this._accessors.push([t,e])},t.prototype.remove=function(t){for(var e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)},t.prototype.select=function(t){var e=this;this._accessors.forEach(function(n){e._isSameGroup(n,t)&&n[1]!==t&&n[1].fireUncheck(t.value)})},t.prototype._isSameGroup=function(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name},t}(),I=function(){function t(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=function(){},this.onTouched=function(){}}return t.prototype.ngOnInit=function(){this._control=this._injector.get(k),this._checkName(),this._registry.add(this._control,this)},t.prototype.ngOnDestroy=function(){this._registry.remove(this)},t.prototype.writeValue=function(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)},t.prototype.registerOnChange=function(t){var e=this;this._fn=t,this.onChange=function(){t(e.value),e._registry.select(e)}},t.prototype.fireUncheck=function(t){this.writeValue(t)},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},t.prototype._throwNameError=function(){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    ')},t}(),R=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))},t.prototype.registerOnChange=function(t){this.onChange=function(e){t(""==e?null:parseFloat(e))}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}(),N='\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    });',D='\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    });',A='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>',E=function(){function t(){}return t.controlParentException=function(){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      "+N)},t.ngModelGroupException=function(){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        '+D+"\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        "+A)},t.missingFormException=function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+N)},t.groupParentException=function(){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      "+D)},t.arrayParentException=function(){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    });')},t.disabledAttrWarning=function(){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    ")},t.ngModelWarning=function(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    ")},t}();function L(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object"),(t+": "+e).slice(0,50))}var P=function(){function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=function(t){},this.onTouched=function(){},this._compareWith=r["\u0275looseIdentical"]}return Object.defineProperty(t.prototype,"compareWith",{set:function(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){this.value=t;var e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=L(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)},t.prototype.registerOnChange=function(t){var e=this;this.onChange=function(n){e.value=e._getOptionValue(n),t(e.value)}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._registerOption=function(){return(this._idCounter++).toString()},t.prototype._getOptionId=function(t){var e,n;try{for(var r=Object(a.__values)(Array.from(this._optionMap.keys())),i=r.next();!i.done;i=r.next()){var o=i.value;if(this._compareWith(this._optionMap.get(o),t))return o}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},t.prototype._getOptionValue=function(t){var e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t},t}(),M=function(){function t(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(t.prototype,"ngValue",{set:function(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(L(this.id,t)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),t.prototype._setElementValue=function(t){this._renderer.setProperty(this._element.nativeElement,"value",t)},t.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},t}();function q(t,e){return null==t?""+e:("string"==typeof e&&(e="'"+e+"'"),e&&"object"==typeof e&&(e="Object"),(t+": "+e).slice(0,50))}var j=function(){function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=function(t){},this.onTouched=function(){},this._compareWith=r["\u0275looseIdentical"]}return Object.defineProperty(t.prototype,"compareWith",{set:function(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){var e,n=this;if(this.value=t,Array.isArray(t)){var a=t.map(function(t){return n._getOptionId(t)});e=function(t,e){t._setSelected(a.indexOf(e.toString())>-1)}}else e=function(t,e){t._setSelected(!1)};this._optionMap.forEach(e)},t.prototype.registerOnChange=function(t){var e=this;this.onChange=function(n){var a=[];if(n.hasOwnProperty("selectedOptions"))for(var r=n.selectedOptions,i=0;i<r.length;i++){var o=r.item(i),s=e._getOptionValue(o.value);a.push(s)}else for(r=n.options,i=0;i<r.length;i++)(o=r.item(i)).selected&&(s=e._getOptionValue(o.value),a.push(s));e.value=a,t(a)}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._registerOption=function(t){var e=(this._idCounter++).toString();return this._optionMap.set(e,t),e},t.prototype._getOptionId=function(t){var e,n;try{for(var r=Object(a.__values)(Array.from(this._optionMap.keys())),i=r.next();!i.done;i=r.next()){var o=i.value;if(this._compareWith(this._optionMap.get(o)._value,t))return o}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},t.prototype._getOptionValue=function(t){var e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t},t}(),F=function(){function t(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}return Object.defineProperty(t.prototype,"ngValue",{set:function(t){null!=this._select&&(this._value=t,this._setElementValue(q(this.id,t)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this._select?(this._value=t,this._setElementValue(q(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)},enumerable:!0,configurable:!0}),t.prototype._setElementValue=function(t){this._renderer.setProperty(this._element.nativeElement,"value",t)},t.prototype._setSelected=function(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)},t.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},t}();function z(t,e){return Object(a.__spread)(e.path,[t])}function G(t,e){t||B(e,"Cannot find control with"),e.valueAccessor||B(e,"No value accessor for form control with"),t.validator=h.compose([t.validator,e.validator]),t.asyncValidator=h.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(function(n){t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&Y(t,e)})}(t,e),function(t,e){t.registerOnChange(function(t,n){e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(function(){t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&Y(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(function(t){e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(function(){return t.updateValueAndValidity()})}),e._rawAsyncValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(function(){return t.updateValueAndValidity()})})}function Y(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function H(t,e){null==t&&B(e,"Cannot find control with"),t.validator=h.compose([t.validator,e.validator]),t.asyncValidator=h.composeAsync([t.asyncValidator,e.asyncValidator])}function V(t){return B(t,"There is no FormControl instance attached to form control element with")}function B(t,e){var 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?h.compose(t.map(T)):null}function W(t){return null!=t?h.composeAsync(t.map(w)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;var n=t.model;return!!n.isFirstChange()||!Object(r["\u0275looseIdentical"])(e,n.currentValue)}var $=[v,R,S,P,j,I];function Z(t,e){t._syncPendingControls(),e.forEach(function(t){var e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function X(t,e){if(!e)return null;Array.isArray(e)||B(t,"Value accessor was not provided as an array for form control with");var n=void 0,a=void 0,r=void 0;return e.forEach(function(e){var i;e.constructor===_?n=e:(i=e,$.some(function(t){return i.constructor===t})?(a&&B(t,"More than one built-in value accessor matches form control with"),a=e):(r&&B(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(B(t,"No valid value accessor for form control with"),null)}function J(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(e.prototype,"control",{get:function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._asyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){},e}(l),tt=function(){function t(t){this._cd=t}return Object.defineProperty(t.prototype,"ngClassUntouched",{get:function(){return!!this._cd.control&&this._cd.control.untouched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassTouched",{get:function(){return!!this._cd.control&&this._cd.control.touched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassPristine",{get:function(){return!!this._cd.control&&this._cd.control.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassDirty",{get:function(){return!!this._cd.control&&this._cd.control.dirty},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassValid",{get:function(){return!!this._cd.control&&this._cd.control.valid},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassInvalid",{get:function(){return!!this._cd.control&&this._cd.control.invalid},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassPending",{get:function(){return!!this._cd.control&&this._cd.control.pending},enumerable:!0,configurable:!0}),t}(),et=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),e}(tt),nt=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),e}(tt);function at(t){var e=it(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function rt(t,e){var n=it(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function it(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}var ot=function(){function t(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valid",{get:function(){return"VALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"invalid",{get:function(){return"INVALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pending",{get:function(){return"PENDING"==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return"DISABLED"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return"DISABLED"!==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"untouched",{get:function(){return!this.touched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"updateOn",{get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"},enumerable:!0,configurable:!0}),t.prototype.setValidators=function(t){this.validator=at(t)},t.prototype.setAsyncValidators=function(t){this.asyncValidator=rt(t)},t.prototype.clearValidators=function(){this.validator=null},t.prototype.clearAsyncValidators=function(){this.asyncValidator=null},t.prototype.markAsTouched=function(t){void 0===t&&(t={}),this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)},t.prototype.markAsUntouched=function(t){void 0===t&&(t={}),this.touched=!1,this._pendingTouched=!1,this._forEachChild(function(t){t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)},t.prototype.markAsDirty=function(t){void 0===t&&(t={}),this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)},t.prototype.markAsPristine=function(t){void 0===t&&(t={}),this.pristine=!0,this._pendingDirty=!1,this._forEachChild(function(t){t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)},t.prototype.markAsPending=function(t){void 0===t&&(t={}),this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)},t.prototype.disable=function(t){void 0===t&&(t={}),this.status="DISABLED",this.errors=null,this._forEachChild(function(e){e.disable(Object(a.__assign)({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(t),this._onDisabledChange.forEach(function(t){return t(!0)})},t.prototype.enable=function(t){void 0===t&&(t={}),this.status="VALID",this._forEachChild(function(e){e.enable(Object(a.__assign)({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(t),this._onDisabledChange.forEach(function(t){return t(!1)})},t.prototype._updateAncestors=function(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),this._parent._updatePristine(),this._parent._updateTouched())},t.prototype.setParent=function(t){this._parent=t},t.prototype.updateValueAndValidity=function(t){void 0===t&&(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)},t.prototype._updateTreeValidity=function(t){void 0===t&&(t={emitEvent:!0}),this._forEachChild(function(e){return e._updateTreeValidity(t)}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})},t.prototype._setInitialStatus=function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"},t.prototype._runValidator=function(){return this.validator?this.validator(this):null},t.prototype._runAsyncValidator=function(t){var e=this;if(this.asyncValidator){this.status="PENDING";var n=m(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(function(n){return e.setErrors(n,{emitEvent:t})})}},t.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},t.prototype.setErrors=function(t,e){void 0===e&&(e={}),this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)},t.prototype.get=function(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(function(t,e){return t instanceof ut?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof ct&&t.at(e)||null},t))}(this,t)},t.prototype.getError=function(t,e){var n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null},t.prototype.hasError=function(t,e){return!!this.getError(t,e)},Object.defineProperty(t.prototype,"root",{get:function(){for(var t=this;t._parent;)t=t._parent;return t},enumerable:!0,configurable:!0}),t.prototype._updateControlsErrors=function(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)},t.prototype._initObservables=function(){this.valueChanges=new r.EventEmitter,this.statusChanges=new r.EventEmitter},t.prototype._calculateStatus=function(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"},t.prototype._anyControlsHaveStatus=function(t){return this._anyControls(function(e){return e.status===t})},t.prototype._anyControlsDirty=function(){return this._anyControls(function(t){return t.dirty})},t.prototype._anyControlsTouched=function(){return this._anyControls(function(t){return t.touched})},t.prototype._updatePristine=function(t){void 0===t&&(t={}),this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)},t.prototype._updateTouched=function(t){void 0===t&&(t={}),this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)},t.prototype._isBoxedValue=function(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t},t.prototype._registerOnCollectionChange=function(t){this._onCollectionChange=t},t.prototype._setUpdateStrategy=function(t){it(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)},t}(),st=function(t){function e(e,n,a){void 0===e&&(e=null);var r=t.call(this,at(n),rt(a,n))||this;return r._onChange=[],r._applyFormState(e),r._setUpdateStrategy(n),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r._initObservables(),r}return Object(a.__extends)(e,t),e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(function(t){return t(n.value,!1!==e.emitViewToModelChange)}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){void 0===e&&(e={}),this.setValue(t,e)},e.prototype.reset=function(t,e){void 0===t&&(t=null),void 0===e&&(e={}),this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1},e.prototype._updateValue=function(){},e.prototype._anyControls=function(t){return!1},e.prototype._allControlsDisabled=function(){return this.disabled},e.prototype.registerOnChange=function(t){this._onChange.push(t)},e.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},e.prototype.registerOnDisabledChange=function(t){this._onDisabledChange.push(t)},e.prototype._forEachChild=function(t){},e.prototype._syncPendingControls=function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))},e.prototype._applyFormState=function(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},e}(ot),ut=function(t){function e(e,n,a){var r=t.call(this,at(n),rt(a,n))||this;return r.controls=e,r._initObservables(),r._setUpdateStrategy(n),r._setUpControls(),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r}return Object(a.__extends)(e,t),e.prototype.registerControl=function(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)},e.prototype.addControl=function(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.removeControl=function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.setControl=function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.contains=function(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled},e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this._checkAllValuesPresent(t),Object.keys(t).forEach(function(a){n._throwIfControlMissing(a),n.controls[a].setValue(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){var n=this;void 0===e&&(e={}),Object.keys(t).forEach(function(a){n.controls[a]&&n.controls[a].patchValue(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.reset=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this._forEachChild(function(n,a){n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e),this._updatePristine(e),this._updateTouched(e)},e.prototype.getRawValue=function(){return this._reduceChildren({},function(t,e,n){return t[n]=e instanceof st?e.value:e.getRawValue(),t})},e.prototype._syncPendingControls=function(){var t=this._reduceChildren(!1,function(t,e){return!!e._syncPendingControls()||t});return t&&this.updateValueAndValidity({onlySelf:!0}),t},e.prototype._throwIfControlMissing=function(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+".")},e.prototype._forEachChild=function(t){var e=this;Object.keys(this.controls).forEach(function(n){return t(e.controls[n],n)})},e.prototype._setUpControls=function(){var t=this;this._forEachChild(function(e){e.setParent(t),e._registerOnCollectionChange(t._onCollectionChange)})},e.prototype._updateValue=function(){this.value=this._reduceValue()},e.prototype._anyControls=function(t){var e=this,n=!1;return this._forEachChild(function(a,r){n=n||e.contains(r)&&t(a)}),n},e.prototype._reduceValue=function(){var t=this;return this._reduceChildren({},function(e,n,a){return(n.enabled||t.disabled)&&(e[a]=n.value),e})},e.prototype._reduceChildren=function(t,e){var n=t;return this._forEachChild(function(t,a){n=e(n,t,a)}),n},e.prototype._allControlsDisabled=function(){var t,e;try{for(var n=Object(a.__values)(Object.keys(this.controls)),r=n.next();!r.done;r=n.next())if(this.controls[r.value].enabled)return!1}catch(i){t={error:i}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}return Object.keys(this.controls).length>0||this.disabled},e.prototype._checkAllValuesPresent=function(t){this._forEachChild(function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control with name: '"+n+"'.")})},e}(ot),ct=function(t){function e(e,n,a){var r=t.call(this,at(n),rt(a,n))||this;return r.controls=e,r._initObservables(),r._setUpdateStrategy(n),r._setUpControls(),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r}return Object(a.__extends)(e,t),e.prototype.at=function(t){return this.controls[t]},e.prototype.push=function(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.insert=function(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()},e.prototype.removeAt=function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),this.controls.splice(t,1),this.updateValueAndValidity()},e.prototype.setControl=function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(e.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this._checkAllValuesPresent(t),t.forEach(function(t,a){n._throwIfControlMissing(a),n.at(a).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){var n=this;void 0===e&&(e={}),t.forEach(function(t,a){n.at(a)&&n.at(a).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.reset=function(t,e){void 0===t&&(t=[]),void 0===e&&(e={}),this._forEachChild(function(n,a){n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e),this._updatePristine(e),this._updateTouched(e)},e.prototype.getRawValue=function(){return this.controls.map(function(t){return t instanceof st?t.value:t.getRawValue()})},e.prototype._syncPendingControls=function(){var t=this.controls.reduce(function(t,e){return!!e._syncPendingControls()||t},!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t},e.prototype._throwIfControlMissing=function(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)},e.prototype._forEachChild=function(t){this.controls.forEach(function(e,n){t(e,n)})},e.prototype._updateValue=function(){var t=this;this.value=this.controls.filter(function(e){return e.enabled||t.disabled}).map(function(t){return t.value})},e.prototype._anyControls=function(t){return this.controls.some(function(e){return e.enabled&&t(e)})},e.prototype._setUpControls=function(){var t=this;this._forEachChild(function(e){return t._registerControl(e)})},e.prototype._checkAllValuesPresent=function(t){this._forEachChild(function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control at index: "+n+".")})},e.prototype._allControlsDisabled=function(){var t,e;try{for(var n=Object(a.__values)(this.controls),r=n.next();!r.done;r=n.next())if(r.value.enabled)return!1}catch(i){t={error:i}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}return this.controls.length>0||this.disabled},e.prototype._registerControl=function(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)},e}(ot),lt=Promise.resolve(null),dt=function(t){function e(e,n){var a=t.call(this)||this;return a.submitted=!1,a._directives=[],a.ngSubmit=new r.EventEmitter,a.form=new ut({},U(e),W(n)),a}return Object(a.__extends)(e,t),e.prototype.ngAfterViewInit=function(){this._setUpdateStrategy()},Object.defineProperty(e.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),e.prototype.addControl=function(t){var e=this;lt.then(function(){var n=e._findContainer(t.path);t.control=n.registerControl(t.name,t.control),G(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),e._directives.push(t)})},e.prototype.getControl=function(t){return this.form.get(t.path)},e.prototype.removeControl=function(t){var e=this;lt.then(function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name),J(e._directives,t)})},e.prototype.addFormGroup=function(t){var e=this;lt.then(function(){var n=e._findContainer(t.path),a=new ut({});H(a,t),n.registerControl(t.name,a),a.updateValueAndValidity({emitEvent:!1})})},e.prototype.removeFormGroup=function(t){var e=this;lt.then(function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name)})},e.prototype.getFormGroup=function(t){return this.form.get(t.path)},e.prototype.updateModel=function(t,e){var n=this;lt.then(function(){n.form.get(t.path).setValue(e)})},e.prototype.setValue=function(t){this.control.setValue(t)},e.prototype.onSubmit=function(t){return this.submitted=!0,Z(this.form,this._directives),this.ngSubmit.emit(t),!1},e.prototype.onReset=function(){this.resetForm()},e.prototype.resetForm=function(t){void 0===t&&(t=void 0),this.form.reset(t),this.submitted=!1},e.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)},e.prototype._findContainer=function(t){return t.pop(),t.length?this.form.get(t):this.form},e}(l),pt=function(){function t(){}return t.modelParentException=function(){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      '+N+'\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  ')},t.formGroupNameException=function(){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      "+D+"\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      "+A)},t.missingNameException=function(){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}">')},t.modelGroupParentException=function(){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      "+D+"\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      "+A)},t.ngFormWarning=function(){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    ")},t}(),ft=new r.InjectionToken("NgFormSelectorWarning"),ht=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}var n;return Object(a.__extends)(e,t),n=e,e.prototype._checkParentType=function(){this._parent instanceof n||this._parent instanceof dt||pt.modelGroupParentException()},e}(Q),gt=Promise.resolve(null),mt=function(t){function e(e,n,a,i){var o=t.call(this)||this;return o.control=new st,o._registered=!1,o.update=new r.EventEmitter,o._parent=e,o._rawValidators=n||[],o._rawAsyncValidators=a||[],o.valueAccessor=X(o,i),o}return Object(a.__extends)(e,t),e.prototype.ngOnChanges=function(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)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(e.prototype,"path",{get:function(){return this._parent?z(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),e.prototype.viewToModelUpdate=function(t){this.viewModel=t,this.update.emit(t)},e.prototype._setUpControl=function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},e.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)},e.prototype._isStandalone=function(){return!this._parent||!(!this.options||!this.options.standalone)},e.prototype._setUpStandalone=function(){G(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})},e.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},e.prototype._checkParentType=function(){!(this._parent instanceof ht)&&this._parent instanceof Q?pt.formGroupNameException():this._parent instanceof ht||this._parent instanceof dt||pt.modelParentException()},e.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||pt.missingNameException()},e.prototype._updateValue=function(t){var e=this;gt.then(function(){e.control.setValue(t,{emitViewToModelChange:!1})})},e.prototype._updateDisabled=function(t){var e=this,n=t.isDisabled.currentValue,a=""===n||n&&"false"!==n;gt.then(function(){a&&!e.control.disabled?e.control.disable():!a&&e.control.disabled&&e.control.enable()})},e}(k),bt=new r.InjectionToken("NgModelWithFormControlWarning"),yt=function(t){function e(e,n){var a=t.call(this)||this;return a._validators=e,a._asyncValidators=n,a.submitted=!1,a.directives=[],a.form=null,a.ngSubmit=new r.EventEmitter,a}return Object(a.__extends)(e,t),e.prototype.ngOnChanges=function(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())},Object.defineProperty(e.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),e.prototype.addControl=function(t){var e=this.form.get(t.path);return G(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e},e.prototype.getControl=function(t){return this.form.get(t.path)},e.prototype.removeControl=function(t){J(this.directives,t)},e.prototype.addFormGroup=function(t){var e=this.form.get(t.path);H(e,t),e.updateValueAndValidity({emitEvent:!1})},e.prototype.removeFormGroup=function(t){},e.prototype.getFormGroup=function(t){return this.form.get(t.path)},e.prototype.addFormArray=function(t){var e=this.form.get(t.path);H(e,t),e.updateValueAndValidity({emitEvent:!1})},e.prototype.removeFormArray=function(t){},e.prototype.getFormArray=function(t){return this.form.get(t.path)},e.prototype.updateModel=function(t,e){this.form.get(t.path).setValue(e)},e.prototype.onSubmit=function(t){return this.submitted=!0,Z(this.form,this.directives),this.ngSubmit.emit(t),!1},e.prototype.onReset=function(){this.resetForm()},e.prototype.resetForm=function(t){void 0===t&&(t=void 0),this.form.reset(t),this.submitted=!1},e.prototype._updateDomValue=function(){var t=this;this.directives.forEach(function(e){var n=t.form.get(e.path);e.control!==n&&(function(t,e){e.valueAccessor.registerOnChange(function(){return V(e)}),e.valueAccessor.registerOnTouched(function(){return V(e)}),e._rawValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(e.control,e),n&&G(n,e),e.control=n)}),this.form._updateTreeValidity({emitEvent:!1})},e.prototype._updateRegistrations=function(){var t=this;this.form._registerOnCollectionChange(function(){return t._updateDomValue()}),this._oldForm&&this._oldForm._registerOnCollectionChange(function(){}),this._oldForm=this.form},e.prototype._updateValidators=function(){var t=U(this._validators);this.form.validator=h.compose([this.form.validator,t]);var e=W(this._asyncValidators);this.form.asyncValidator=h.composeAsync([this.form.asyncValidator,e])},e.prototype._checkFormPresent=function(){this.form||E.missingFormException()},e}(l),vt=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}return Object(a.__extends)(e,t),e.prototype._checkParentType=function(){_t(this._parent)&&E.groupParentException()},e}(Q),xt=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}return Object(a.__extends)(e,t),e.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormArray(this)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormArray(this)},Object.defineProperty(e.prototype,"control",{get:function(){return this.formDirective.getFormArray(this)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._asyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){_t(this._parent)&&E.arrayParentException()},e}(l);function _t(t){return!(t instanceof vt||t instanceof yt||t instanceof xt)}var Tt=function(t){function e(e,n,a,i,o){var s=t.call(this)||this;return s._ngModelWarningConfig=o,s._added=!1,s.update=new r.EventEmitter,s._ngModelWarningSent=!1,s._parent=e,s._rawValidators=n||[],s._rawAsyncValidators=a||[],s.valueAccessor=X(s,i),s}var n;return Object(a.__extends)(e,t),n=e,Object.defineProperty(e.prototype,"isDisabled",{set:function(t){E.disabledAttrWarning()},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(t){var e,a;this._added||this._setUpControl(),K(t,this.viewModel)&&("formControlName",e=n,this,a=this._ngModelWarningConfig,Object(r.isDevMode)()&&"never"!==a&&((null!==a&&"once"!==a||e._ngModelWarningSentOnce)&&("always"!==a||this._ngModelWarningSent)||(E.ngModelWarning("formControlName"),e._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},e.prototype.viewToModelUpdate=function(t){this.viewModel=t,this.update.emit(t)},Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){!(this._parent instanceof vt)&&this._parent instanceof Q?E.ngModelGroupException():this._parent instanceof vt||this._parent instanceof yt||this._parent instanceof xt||E.controlParentException()},e.prototype._setUpControl=function(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0},e._ngModelWarningSentOnce=!1,e}(k),wt=function(){function t(){}return Object.defineProperty(t.prototype,"required",{get:function(){return this._required},set:function(t){this._required=null!=t&&!1!==t&&""+t!="false",this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),t.prototype.validate=function(t){return this.required?h.required(t):null},t.prototype.registerOnValidatorChange=function(t){this._onChange=t},t}(),St=function(){function t(){}return t.prototype.group=function(t,e){void 0===e&&(e=null);var n=this._reduceControls(t),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 ut(n,{asyncValidators:r,updateOn:i,validators:a})},t.prototype.control=function(t,e,n){return new st(t,e,n)},t.prototype.array=function(t,e,n){var a=this,r=t.map(function(t){return a._createControl(t)});return new ct(r,e,n)},t.prototype._reduceControls=function(t){var e=this,n={};return Object.keys(t).forEach(function(a){n[a]=e._createControl(t[a])}),n},t.prototype._createControl=function(t){return t instanceof st||t instanceof ut||t instanceof ct?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)},t}(),Ot=function(){return function(){}}(),kt=function(){return function(){}}(),Ct=function(){function t(){}var e;return e=t,t.withConfig=function(t){return{ngModule:e,providers:[{provide:ft,useValue:t.warnOnDeprecatedNgFormSelector}]}},t}(),It=function(){function t(){}var e;return e=t,t.withConfig=function(t){return{ngModule:e,providers:[{provide:bt,useValue:t.warnOnNgModelWithFormControl}]}},t}()},gTqA:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("90cg"),i=n("yRPT"),o=n("HZF8"),s=n("0alx"),u=n("zzsZ"),c=n("m12A"),l=n("e2pG"),d=n("eipH"),p=n("6qA3");e.from=function(t,e){if(!e)return t instanceof a.Observable?t:new a.Observable(p.subscribeTo(t));if(null!=t){if(o.isInteropObservable(t))return d.fromObservable(t,e);if(r.isPromise(t))return c.fromPromise(t,e);if(i.isArrayLike(t))return u.fromArray(t,e);if(s.isIterable(t)||"string"==typeof t)return l.fromIterable(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}},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")}}n("wd/R").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_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_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\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %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}})}()},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),n=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var o="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":o=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":o=i?"tunnin":"tuntia";break;case"d":return i?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":o=i?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return i?"kuukauden":"kuukausi";case"MM":o=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":o=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+o}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_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\xe4n\xe4\xe4n] [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\xe4\xe4st\xe4",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:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};t.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}})}(n("wd/R"))},gp3X:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R");n("sb0X"),n.d(e,"a",function(){return i}),n.d(e,"b",function(){return s});var i=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null))],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"button",[["class","btn btn-sm btn-primary 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["\u0275ncd"](null,0),(t()(),a["\u0275and"](16777216,null,null,1,null,o)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,3,0,e.component.loading)},function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)})}},"h+PQ":function(t,e,n){"use strict";function a(){return""}function r(t,e){if(null==t)return"";if(!t||null==e)return t;var n=t[e];return null==n?"":n}function i(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];return null==n?"":n}function o(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];if(void 0!==n)return n;n=t;var a=e.split(".");if(a.length)for(var r=0;r<a.length;r++)if(null==(n=n[a[r]]))return"";return n}Object.defineProperty(e,"__esModule",{value:!0}),e.emptyStringGetter=a,e.getterForProp=function(t){return null==t?a:"number"==typeof t?r:-1!==t.indexOf(".")?o:i},e.numericIndexGetter=r,e.shallowValueGetter=i,e.deepValueGetter=o},h6KF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("qwkt"),r=n("h+PQ");function i(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}e.nextSortDir=function(t,e){return t===a.SortType.single?e===a.SortDirection.asc?a.SortDirection.desc:a.SortDirection.asc:e?e===a.SortDirection.asc?a.SortDirection.desc:void 0:a.SortDirection.asc},e.orderByComparator=i,e.sortRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return t.slice();var o=new Map;t.forEach(function(t,e){return o.set(t,e)});var s=t.slice(),u=e.reduce(function(t,e){return e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t},{}),c=n.map(function(t){var e=t.prop;return{prop:e,dir:t.dir,valueGetter:r.getterForProp(e),compareFn:u[e]||i}});return s.sort(function(t,e){for(var n=0,r=c;n<r.length;n++){var i=r[n],s=i.prop,u=i.valueGetter,l=u(t,s),d=u(e,s),p=i.dir!==a.SortDirection.desc?i.compareFn(l,d,t,e,i.dir):-i.compareFn(l,d,t,e,i.dir);if(0!==p)return p}return o.has(t)&&o.has(e)?o.get(t)<o.get(e)?-1:1:0})}},h9Dq:function(t,e,n){"use strict";var a=n("mrSG"),r=function(t){function e(e,n){return t.call(this)||this}return a.__extends(e,t),e.prototype.schedule=function(t,e){return void 0===e&&(e=0),this},e}(n("pugT").a);n.d(e,"a",function(){return i});var i=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a.pending=!1,a}return a.__extends(e,t),e.prototype.schedule=function(t,e){if(void 0===e&&(e=0),this.closed)return this;this.state=t;var 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},e.prototype.requestAsyncId=function(t,e,n){return void 0===n&&(n=0),setInterval(t.flush.bind(t,this),n)},e.prototype.recycleAsyncId=function(t,e,n){if(void 0===n&&(n=0),null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)},e.prototype.execute=function(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},e.prototype._execute=function(t,e){var 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},e.prototype._unsubscribe=function(){var 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},e}(r)},hHou:function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Avvisi</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>Recupero dati\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> per\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>"/>. Attendere...\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>Visualizzazione dei dati memorizzati in precedenza nella cache\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  per \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>Impossibile caricare i dati\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> per\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  Verificare lo stato del cluster.\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="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>Consultare la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> su come\n  configurare e abilitare la funzionalit\xe0 di monitoraggio.\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>Il dashboard di Grafana non esiste. Consultare la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> su come\n  aggiungere dashboard a 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non \xe8 stato possibile caricare i dati.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</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 \xe8 necessario modificare questi parametri rispetto ai valori di default.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo \xe8 obbligatorio.</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="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Un IQN contiene la notazione seguente \'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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Gateway richiesti: almeno \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/>.\n        </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="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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\xc8 richiesta almeno 1 immagine.</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</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="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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</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>Si \xe8 sicuri di voler \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> l\'elemento \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> selezionato?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>S\xec.</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="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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    su come configurare e abilitare la funzionalit\xe0 di gestione delle destinazioni iSCSI.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</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="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="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="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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\xc8 necessario aumentare le dimensioni.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit\xe0 di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unit\xe0 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 \xe8 obbligatorio perch\xe9 \xe8 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\xe0 di striping \xe8 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 \xe8 obbligatorio perch\xe9 \xe8 specificata l\'unit\xe0 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="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</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="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</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="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>Il valore immesso \xe8 troppo alto. Non deve essere maggiore di \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>Il valore immesso \xe8 troppo basso. Non deve essere minore di \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</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="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 \xe8 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>Il valore immesso \xe8 troppo alto. Deve essere minore o uguale a \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>Il valore immesso \xe8 troppo basso. Deve essere maggiore o uguale a \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="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="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorit\xe0 di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe0</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorit\xe0</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo \xe8 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>Il valore immesso \xe8 troppo alto. Non deve essere maggiore di \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>Il valore immesso \xe8 troppo basso. Non deve essere minore di \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ripesa OSD</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>Pulitura degli \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>OSD\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Si sta per eseguire una \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>pulitura\n            dell\'OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> viene contrassegnato\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>"/> se si procede.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Non \xe8 sicuro eliminare definitivamente l\'OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> viene\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>"/> se si procede.\n        </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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  su come configurare e abilitare la funzionalit\xe0 di gestione di NFS Ganesha.\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\xf2 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\xf9 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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Esportazione NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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="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="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\xf2 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\xf2 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>Accesso alternativo per montaggi \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>"/> (non deve contenere una / iniziale).\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\xf2 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, \xe8 possibile esportare pi\xf9 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>La posizione che occupa l\'esportazione \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>"/>\n                nello \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>"/> (deve essere univoca).\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, \xe8 possibile esportare pi\xf9 volte lo stesso percorso.</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="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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome pu\xf2 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 \xe8 gi\xe0 in uso.</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\xe0 (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\xe0 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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</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="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 \xe8 gi\xe0 in uso.</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="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>\xc8 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\xf2 gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\xc8 possibile aumentare il numero dei gruppi di posizionamento solo di un pool esistente.\n               Attualmente il pool contiene \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> gruppi di posizionamento.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Sono state calcolate le impostazioni dei gruppi di posizionamento attuali;\n                    prima di inviare, assicurarsi che i valori soddisfino le proprie esigenze.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Non \xe8 possibile utilizzare la regola nel cluster attuale perch\xe9 il numero degli\n                OSD che contiene \xe8 troppo basso e non soddisfa il numero minimo di OSD richiesto da questa regola.</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>Minime: \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>Massime: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Le dimensioni specificate non sono comprese nell\'intervallo. L\'intervallo valido \xe8 da\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="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="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="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\xe0</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="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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Non \xe8 possibile creare un pool RBD con una \'/\' nel nome.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Modificare il nome o rimuovere \'rbd\' dall\'elenco delle applicazioni.</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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  su come configurare e abilitare la funzionalit\xe0 di gestione di Object Gateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Impossibile caricare i dati del 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>Il valore non \xe8 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 \xe8 gi\xe0 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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</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="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 \xe8 gi\xe0 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 \xe8 gi\xe0 in uso.</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="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non \xe8 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 \xe8 gi\xe0 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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacit\xe0</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacit\xe0.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</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="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="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>Tornale alla \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Pagina di login\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Si viene disconnessi dal Provider di identit\xe0\n quando si riprova a eseguire il login.\n        </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="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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</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 \xe8 pi\xf9 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="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 \xe8 consentito visualizzare ci\xf2 che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Spiacenti, impossibile trovare ci\xf2 che si stava cercando</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Rimuovi tutto</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifiche recenti</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Non esistono task in background.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Task in background</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>Connesso come\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</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="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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</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="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="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</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\xe0 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 \xe8 0</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="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>Istogramma non disponibile: \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="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\xf2 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\xe0 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\xe0 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\xe0 di base</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="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\xe0</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>"/> Vedere \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Log\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> per ulteriori informazioni.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Per spostare \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> nel cestino,\n          fare clic su \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Sposta immagine\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Facoltativamente, \xe8 possibile selezionare una data di scadenza.\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 \xe8 gi\xe0 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="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="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>Disponibile solo per le immagini RDB con \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>"/> abilitata\n        </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="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\xe0 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="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="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 \xe8 il valore globale. Nessun valore di opzione \xe8 stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTETTO</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="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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Per eliminare definitivamente, selezionare una o tutte le immagini e fare clic su</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</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>Questa immagine \xe8 protetta fino alle \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="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\xe0 speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Per modificare la modalit\xe0 speculare per il pool\xa0\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>"/>, selezionare una nuova modalit\xe0 dall\'elenco e fare clic su\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aggiorna\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>\xc8 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  peer copia speculare del pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> gli attributi peer della\n          copia speculare per il 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>"/> e fare clic su \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Invia\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 \xe8 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 \xe8 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 \xe8 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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Client: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\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="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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalit\xe0 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (richiede la mappa degli oggetti)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</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="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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\xc8 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 \xe8 consentito impostare questa opzione tramite \'ceph config\n      set ...\'. \xc8 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>Aggiornata opzione di configurazione \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opzioni aggiornate per il modulo &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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="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 \xe8 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="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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</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="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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Contrassegna 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>Contrassegna \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</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>Aggiornata la priorit\xe0 della velocit\xe0 di recupero dell\'OSD &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \xe8 stato inizializzato dall\'OSD seguente: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\xe0</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="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="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 \xe8 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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Esportazione</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalit\xe0 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\xf2 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 \xe8 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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aggiornato compartimento Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Creato compartimento Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</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>Aggiornato utente Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Creato utente Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Creato ruolo \'\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>Aggiornato ruolo \'\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>Eliminato ruolo \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Creato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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 \xe8 stati automaticamente disconnessi perch\xe9 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>Aggiornato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Eliminato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Impossibile eliminare l\'utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Si \xe8 attualmente connessi come &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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 \xe8 suddiviso in porzioni di dati, ciascuna delle quali \xe8 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 \xe8 anche il numero degli OSD che \xe8 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 \xe8 il plugin pi\xf9 generico e flessibile,\n          ed \xe8 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\xf9 flessibile \xe8 reed_sol_van: \xe8 sufficiente impostare k\n          ed m. La tecnica cauchy_good pu\xf2 essere pi\xf9 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 \xe8 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          \xc8 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\xf9 OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure \xe8 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\xe0 locali che \xe8 possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc \xe8 configurato con k=8, m=4 e l=4, crea\n          una porzione di parit\xe0 aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, \xe8 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\xe0 dimensione. Ad esempio,\n          per k=4 e m=2, se localit\xe0=3 vengono creati due gruppi su tre. \xc8 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 \xe8 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 \xe8 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 \xe8 disponibile in due formati Reed Solomon.\n          Se \xe8 impostato reed_sol_van, il formato \xe8 Vandermonde, se \xe8 impostato cauchy, il formato \xe8 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\xf9 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\xe0, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilit\xe0. Ad esempio, se c=2,\n          \xe8 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 \xe8 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\xe0 --</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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</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="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>S\xec</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualit\xe0 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>Non \xe8 stato possibile \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</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="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>Snapshot RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>modalit\xe0 speculare per il 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>peer della copia speculare per il pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Il nome \xe8 gi\xe0 utilizzato da \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>Il nome \xe8 gi\xe0 utilizzato da \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>Il nome \xe8 gi\xe0 utilizzato da \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> contiene snapshot.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</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>La snapshot di \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> deve essere protetta.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</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>Il nome \xe8 gi\xe0 utilizzato da \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>Impossibile rimuovere la protezione da \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> perch\xe9 contiene immagini figlio.\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>Impossibile eliminare \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> perch\xe9 \xe8 protetto.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</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>immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' nel cestino\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</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>immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\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>Il nome dell\'immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \xe8 gi\xe0 in uso.\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>immagine \'\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato 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>Immagini da \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\xe9 contiene un peer.</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>profilo del codice di cancellazione \'\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>destinazione \'\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>'},hKrs:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".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:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}()},honF:function(t,e,n){!function(t){"use strict";var e={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},n={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};t.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".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:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(t){return t.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/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"))},i3PA:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("jvuA")),a(n("UReH"))},iEDd:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".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()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},iExv:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t,e,n){return void 0===e&&(e=this.i18n("Yes")),void 0===n&&(n=this.i18n("No")),Boolean(t)?e:n},t}()},iLxQ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=!1,r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},iM7B:function(t,e,n){"use strict";var a=n("RDha"),r=n("Hg4g"),i=n("q8Fl");t.exports=a.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},i._enabled?i:r)},iYGd:function(t,e,n){"use strict";t.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},ihYY: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 o}),n.d(e,"f",function(){return s}),n.d(e,"d",function(){return c}),n.d(e,"h",function(){return d}),n.d(e,"g",function(){return l});var a=function(){return function(){}}(),r=function(){return function(){}}(),i="*";function o(t,e){return void 0===e&&(e=null),{type:2,steps:t,options:e}}function s(t){return{type:6,styles:t,offset:null}}function u(t){Promise.resolve(null).then(t)}var c=function(){function t(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.hasStarted=function(){return this._started},t.prototype.init=function(){},t.prototype.play=function(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0},t.prototype.triggerMicrotask=function(){var t=this;u(function(){return t._onFinish()})},t.prototype._onStart=function(){this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[]},t.prototype.pause=function(){},t.prototype.restart=function(){},t.prototype.finish=function(){this._onFinish()},t.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.reset=function(){},t.prototype.setPosition=function(t){},t.prototype.getPosition=function(){return 0},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),l=function(){function t(t){var e=this;this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;var n=0,a=0,r=0,i=this.players.length;0==i?u(function(){return e._onFinish()}):this.players.forEach(function(t){t.onDone(function(){++n==i&&e._onFinish()}),t.onDestroy(function(){++a==i&&e._onDestroy()}),t.onStart(function(){++r==i&&e._onStart()})}),this.totalTime=this.players.reduce(function(t,e){return Math.max(t,e.totalTime)},0)}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.init=function(){this.players.forEach(function(t){return t.init()})},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype._onStart=function(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[])},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.hasStarted=function(){return this._started},t.prototype.play=function(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(function(t){return t.play()})},t.prototype.pause=function(){this.players.forEach(function(t){return t.pause()})},t.prototype.restart=function(){this.players.forEach(function(t){return t.restart()})},t.prototype.finish=function(){this._onFinish(),this.players.forEach(function(t){return t.finish()})},t.prototype.destroy=function(){this._onDestroy()},t.prototype._onDestroy=function(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(function(t){return t.destroy()}),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.reset=function(){this.players.forEach(function(t){return t.reset()}),this._destroyed=!1,this._finished=!1,this._started=!1},t.prototype.setPosition=function(t){var e=t*this.totalTime;this.players.forEach(function(t){var n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})},t.prototype.getPosition=function(){var t=0;return this.players.forEach(function(e){var n=e.getPosition();t=Math.min(n,t)}),t},t.prototype.beforeDestroy=function(){this.players.forEach(function(t){t.beforeDestroy&&t.beforeDestroy()})},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),d="!"},insk:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("+0ag"),n("mSOc"),n("20UP");var a=function(){function t(t,e,n,a,r){this.summaryService=t,this.sanitizer=e,this.settingsService=n,this.cephReleaseNamePipe=a,this.i18n=r,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,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"),value:"from=now%2Fd&to=now%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"),value:"from=now%2Fw&to=now%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"),value:"from=now%2FM&to=now%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"),value:"from=now%2Fy&to=now%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"}]}return t.prototype.ngOnInit=function(){var t=this;this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three"};var e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards",setTimeout(function(){e.unsubscribe()},0)}});this.settingsService.ifSettingConfigured("api/grafana/url",function(e){t.grafanaExist=!0,t.loading=!1,t.baseUrl=e+"/d/",t.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]},t.prototype.getFrame=function(){var t=this;this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(function(e){return t.dashboardExist=200===e}),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)},t.prototype.onTimepickerChange=function(){this.grafanaExist&&this.getFrame()},t.prototype.reset=function(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()},t.prototype.ngOnChanges=function(){this.grafanaExist&&this.getFrame()},t}()},isby:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=Array.isArray||function(t){return t&&"number"==typeof t.length}},iutN:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("xtZt"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["\u0275ncd"](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 s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,o,i)),a["\u0275did"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef],null,null)],null,null)}var u=a["\u0275ccf"]("bs-dropdown-container",r.b,s,{},{},["*"])},j8L6:function(t,e,n){"use strict";var a=n("CcnG"),r=n("25BL"),i=n("uIqm"),o=n("xbqr"),s=n("9GXa"),u=n("o4+5"),c=n("aXbf"),l=n("Ip0R");n("b5OY"),n("pxLl"),n("Jm/i"),n.d(e,"a",function(){return d}),n.d(e,"b",function(){return g});var d=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," "," "])),a["\u0275ppd"](1,1)],null,function(t,e){var n=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)})}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275did"](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["\u0275and"](0,[[1,2],["valueTpl",2]],null,0,null,p))],function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)},null)}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Performance counters not available"]))],null,null)}function g(t){return a["\u0275vid"](0,[a["\u0275pid"](0,u.a,[c.a]),a["\u0275qud"](671088640,1,{valueTpl:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](3,16384,null,0,l.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["warning",2]],null,0,null,h))],function(t,e){t(e,3,0,e.component.counters,a["\u0275nov"](e,4))},null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=function(){return function(t){void 0===t&&(t=[]);var e=this;["read","create","update","delete"].forEach(function(n){return e[n]=t.includes(n)})}}(),r=function(){return function(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"])}}()},jUeY:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".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:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(t,e,n){return t>11?n?"\u03bc\u03bc":"\u039c\u039c":n?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(t){return"\u03bc"===(t+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/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:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] 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?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}})}()},jVdC:function(t,e,n){!function(t){"use strict";var e="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_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\u0119";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzin\u0119";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesi\u0105ce":"miesi\u0119cy");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\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] 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\u0144",dd:"%d dni",M:"miesi\u0105c",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jXIB:function(t,e,n){"use strict";t.exports={},t.exports.filler=n("vpM6"),t.exports.legend=n("AX6q"),t.exports.title=n("mjYD")},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},n={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};t.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".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:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(t){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(t)},meridiem:function(t,e,n){return t<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/[\u06f0-\u06f9]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"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:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},i=function(t){return function(e,n,i,o){var s=a(e),u=r[t][a(e)];return 2===s&&(u=u[n?0:1]),u.replace(/%d/i,e)}},o=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar",{months:o,monthsShort:o,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %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(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},jvuA:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("UReH");e.DatatableRowDetailDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandRow=function(t){this.toggle.emit({type:"row",value:t})},t.prototype.expandAllRows=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllRows=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableRowDetailTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-row-detail"})],t)}()},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},n={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};t.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(t){return t.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u09b0\u09be\u09a4"===e&&t>=4||"\u09a6\u09c1\u09aa\u09c1\u09b0"===e&&t<5||"\u09ac\u09bf\u0995\u09be\u09b2"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u09b0\u09be\u09a4":t<10?"\u09b8\u0995\u09be\u09b2":t<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":t<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(n("wd/R"))},kJI8:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},kOpN:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}()},kQXf:function(t,e,n){"use strict";function a(t){return"string"==typeof t?!/\S/.test(t):Array.isArray(t)?0===t.length:i(t)}function r(t,e){return!i(t)&&t.indexOf(e)>-1}function i(t){return null==t}Object.defineProperty(e,"__esModule",{value:!0}),e.isEmpty=a,e.trim=function(t){return i(t)?"":t.trim()},e.has=function(t,e){return t&&"object"==typeof t&&t.hasOwnProperty(e)},e.isFunction=function(t){return"function"==typeof t},e.get=function(t,e,n){for(var a=t,r=0,o=e.split(".");r<o.length;r++){var s=o[r];if(!a||!Reflect.has(a,s))return n;a=a[s]}return i(a)||a===t?n:a},e.omit=function(t,e){if(!t)return t;var n="string"==typeof e?[e]:e;return Object.keys(t).reduce(function(e,a){return r(n,a)?e:Object.assign(e,((i={})[a]=t[a],i));var i},{})},e.size=function(t){return a(t)?0:t.length},e.once=function(t){var e;return function(){for(var n=[],a=0;a<arguments.length;a++)n[a]=arguments[a];return t&&(e=t.apply(null,n),t=null),e}},e.defaultsDeep=function t(e){for(var n=[],a=1;a<arguments.length;a++)n[a-1]=arguments[a];return[e].concat(n).reduce(function(e,n){return n?(Object.keys(n).forEach(function(a){i(e[a])?e[a]=n[a]:"object"!=typeof e[a]||Array.isArray(e[a])||(e[a]=t(e[a],n[a]))}),e):e},{})},e.includes=r,e.isNil=i},klSw:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("S5bw");function r(t,e,n){var r;return r=t&&"object"==typeof t?t:{bufferSize:t,windowTime:e,refCount:!1,scheduler:n},function(t){return t.lift((s=void 0===(o=(e=r).bufferSize)?Number.POSITIVE_INFINITY:o,c=void 0===(u=e.windowTime)?Number.POSITIVE_INFINITY:u,l=e.refCount,d=e.scheduler,p=0,f=!1,h=!1,function(t){p++,n&&!f||(f=!1,n=new a.a(s,c,d),i=t.subscribe({next:function(t){n.next(t)},error:function(t){f=!0,n.error(t)},complete:function(){h=!0,n.complete()}}));var e=n.subscribe(this);this.add(function(){p--,e.unsubscribe(),i&&!h&&l&&0===p&&(i.unsubscribe(),i=void 0,n=void 0)})}));var e,n,i,o,s,u,c,l,d,p,f,h}}},"kn/O":function(t,e,n){"use strict";n.d(e,"a",function(){return d});var a=n("6blF"),r=n("mtw6"),i=n("QTAa"),o=n("9nlD"),s=n("mSOc"),u=n("VXsX"),c=n("ufoC"),l=n("CcnG"),d=function(){function t(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}return t.prototype.wrapTaskAroundCall=function(t){var e=this,n=t.task,r=t.call;return new a.a(function(t){r.subscribe(function(t){202===t.status?e._handleExecutingTasks(n):(e.summaryService.refresh(),n.success=!0,e.notificationService.notifyTask(n))},function(e){n.success=!1,n.exception=e.error,t.error(e)},function(){t.complete()})})},t.prototype._handleExecutingTasks=function(t){var e=this;this.notificationService.show(r.a.info,this.taskMessageService.getRunningTitle(t));var n=new i.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,function(t){e.notificationService.notifyTask(t)})},t.ngInjectableDef=l.defineInjectable({factory:function(){return new t(l.inject(o.a),l.inject(s.a),l.inject(c.a),l.inject(u.a))},token:t,providedIn:"root"}),t}()},kvvV:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("t/zF").a)},l5ep:function(t,e,n){!function(t){"use strict";n("wd/R").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 \xf4l",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}})}()},lHUG: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 o(t){return t&&t.getTime&&!isNaN(t.getTime())}function s(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function d(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function p(t){return void 0===t}function f(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"h",function(){return j}),n.d(e,"t",function(){return H}),n.d(e,"w",function(){return B}),n.d(e,"u",function(){return U}),n.d(e,"v",function(){return V}),n.d(e,"j",function(){return G}),n.d(e,"i",function(){return Y}),n.d(e,"l",function(){return z}),n.d(e,"A",function(){return qe}),n.d(e,"f",function(){return Re}),n.d(e,"k",function(){return ue}),n.d(e,"c",function(){return se}),n.d(e,"n",function(){return Fe}),n.d(e,"p",function(){return ze}),n.d(e,"s",function(){return Ge}),n.d(e,"o",function(){return c}),n.d(e,"r",function(){return o}),n.d(e,"q",function(){return i}),n.d(e,"E",function(){return St}),n.d(e,"D",function(){return Ot}),n.d(e,"d",function(){return Dt}),n.d(e,"F",function(){return Nt}),n.d(e,"a",function(){return nn}),n.d(e,"b",function(){return rn}),n.d(e,"e",function(){return ln}),n.d(e,"g",function(){return dn}),n.d(e,"m",function(){return pn}),n.d(e,"x",function(){return fn}),n.d(e,"y",function(){return hn}),n.d(e,"z",function(){return gn}),n.d(e,"B",function(){return xn}),n.d(e,"C",function(){return _n}),n.d(e,"G",function(){return Tn});var h={},g={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function m(t,e){var n=t.toLowerCase(),a=t;n in g&&(a=g[n]),h[n]=h[n+"s"]=h[e]=a}function b(t){return r(t)?h[t]||h[t.toLowerCase()]:void 0}var y=0,v=1,x=2,_=3,T=4,w=5,S=6,O=7,k=8;function C(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 I={},R={},N=/(\[[^\[]*\])|(\\)?([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 D(t,e,n,a){t&&(R[t]=a),e&&(R[e[0]]=function(){return C(a.apply(null,arguments),e[1],e[2])}),n&&(R[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function A(t,e,n){var a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function E(t,e,n,a,r,i,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===a&&(a=0),void 0===r&&(r=0),void 0===i&&(i=0),void 0===o&&(o=0);var s=new Date(t,e,n,a,r,i,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}function L(t,e){return void 0===e&&(e=!1),e?t.getUTCHours():t.getHours()}function P(t,e){return void 0===e&&(e=!1),e?t.getUTCMinutes():t.getMinutes()}function M(t,e){return void 0===e&&(e=!1),e?t.getUTCSeconds():t.getSeconds()}function q(t,e){return void 0===e&&(e=!1),e?t.getUTCMilliseconds():t.getMilliseconds()}function j(t,e){return void 0===e&&(e=!1),e?t.getUTCDay():t.getDay()}function F(t,e){return void 0===e&&(e=!1),e?t.getUTCDate():t.getDate()}function z(t,e){return void 0===e&&(e=!1),e?t.getUTCMonth():t.getMonth()}function G(t,e){return void 0===e&&(e=!1),e?t.getUTCFullYear():t.getFullYear()}function Y(t){return E(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function H(t,e){return t.getDay()===e}function V(t,e){return!(!t||!e)&&B(t,e)&&z(t)===z(e)}function B(t,e){return!(!t||!e)&&G(t)===G(e)}function U(t,e){return!(!t||!e)&&B(t,e)&&V(t,e)&&F(t)===F(e)}var W=/\d/,K=/\d\d/,$=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,Q=/\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+/,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,st=/[+-]?\d+(\.\d{1,3})?/,ut=/[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,ct={};function lt(t,e,n){ct[t]=s(e)?e:function(t,a){return t&&n?n:e}}function dt(t,e){return l(ct,t)?ct[t](!1,e):new RegExp(pt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,a,r){return e||n||a||r})))}function pt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function ht(t,e){var n=r(t)?[t]:t,a=e;if(u(e)&&(a=function(t,n,a){return n[e]=f(t),a}),c(n)&&s(a)){var i=void 0;for(i=0;i<n.length;i++)ft[n[i]]=a}}function gt(t,e){ht(t,function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)})}function mt(t,e,n){return null!=e&&l(ft,t)&&ft[t](e,n._a,n,t),n}function bt(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 yt(t,e){return G(t,e.isUTC).toString()}function vt(t){return f(t)+(f(t)>68?1900:2e3)}function xt(t){return _t(t)?366:365}function _t(t){return t%4==0&&t%100!=0||t%400==0}function Tt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return 1===n?_t(t+(e-n)/12)?29:28:31-n%7%2}var wt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function St(t,e){var n=Object.assign({},wt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0),i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,Tt(a,r))),E(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function Ot(t,e){return E(kt(t.getFullYear(),e.year),kt(t.getMonth(),e.month),kt(t.getDate(),e.day),kt(t.getHours(),e.hour),kt(t.getMinutes(),e.minute),kt(t.getSeconds(),e.seconds),kt(t.getMilliseconds(),e.milliseconds))}function kt(t,e){return u(e)?e:t}function Ct(t,e,n){var a=Math.min(F(t),Tt(G(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function It(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function Rt(t){return new Date(t.getTime())}function Nt(t,e,n){var a,i=Rt(t);switch(e){case"year":Ct(i,0,n);case"quarter":case"month":It(i,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(i,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(i,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(i,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(i,0,n)}return"week"===e&&(void 0===(a={isUTC:n})&&(a={}),We(i,0-Xe(i,a.locale,a.isUTC),"day")),"isoWeek"===e&&function(t,e,n){void 0===n&&(n={});var a,i=(void 0===(a=n.locale)&&(a=ue()),r(1)?a.weekdaysParse(1)%7||7:u(1)&&isNaN(1)?null:1);$e(t,Ze(t)%7?i:i-7)}(i),"quarter"===e&&Ct(i,3*Math.floor(z(i,n)/3),n),i}function Dt(t,e,n){var a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Ke(t,Ve(1,"milliseconds"),-1,a)}(We(Nt(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function At(t,e){var n=+Nt(t,"day",e),a=+Nt(t,"year",e);return Math.round((n-a)/864e5)+1}function Et(t,e,n){var a=e-n+7;return-(A(t,0,a).getUTCDay()-e+7)%7+a-1}function Lt(t,e,n,a){var r,i,o=Et(G(t,a),e,n),s=Math.floor((At(t,a)-o-1)/7)+1;return s<1?r=s+Pt(i=G(t,a)-1,e,n):s>Pt(G(t,a),e,n)?(r=s-Pt(G(t,a),e,n),i=G(t,a)+1):(i=G(t,a),r=s),{week:r,year:i}}function Pt(t,e,n){var a=Et(t,e,n),r=Et(t+1,e,n);return(xt(t)-a+r)/7}var Mt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,qt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),jt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ft="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Yt={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"},Ht=ut,Vt=ut,Bt=function(){function t(t){t&&this.set(t)}return t.prototype.set=function(t){var e;for(e in t)if(t.hasOwnProperty(e)){var n=t[e];this[s(n)?e:"_"+e]=n}this._config=t},t.prototype.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return s(a)?a.call(null,e,n):a},t.prototype.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])},Object.defineProperty(t.prototype,"invalidDate",{get:function(){return this._invalidDate},set:function(t){this._invalidDate=t},enumerable:!0,configurable:!0}),t.prototype.ordinal=function(t,e){return this._ordinal.replace("%d",t.toString(10))},t.prototype.preparse=function(t){return t},t.prototype.postformat=function(t){return t},t.prototype.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return s(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))},t.prototype.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return s(n)?n(e):n.replace(/%s/i,e)},t.prototype.months=function(t,e,n){if(void 0===n&&(n=!1),!t)return c(this._months)?this._months:this._months.standalone;if(c(this._months))return this._months[z(t,n)];var a=(this._months.isFormat||Mt).test(e)?"format":"standalone";return this._months[a][z(t,n)]},t.prototype.monthsShort=function(t,e,n){if(void 0===n&&(n=!1),!t)return c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(c(this._monthsShort))return this._monthsShort[z(t,n)];var a=Mt.test(e)?"format":"standalone";return this._monthsShort[a][z(t,n)]},t.prototype.monthsParse=function(t,e,n){var 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]){var o=this.months(a,"",!0).replace(".",""),s=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp("^"+o+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+s+"$","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}},t.prototype.monthsRegex=function(t){return this._monthsParseExact?(l(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},t.prototype.monthsShortRegex=function(t){return this._monthsParseExact?(l(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=Ht),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},t.prototype.week=function(t,e){return Lt(t,this._week.dow,this._week.doy,e).week},t.prototype.firstDayOfWeek=function(){return this._week.dow},t.prototype.firstDayOfYear=function(){return this._week.doy},t.prototype.weekdays=function(t,e,n){if(!t)return c(this._weekdays)?this._weekdays:this._weekdays.standalone;if(c(this._weekdays))return this._weekdays[j(t,n)];var a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][j(t,n)]},t.prototype.weekdaysMin=function(t,e,n){return t?this._weekdaysMin[j(t,n)]:this._weekdaysMin},t.prototype.weekdaysShort=function(t,e,n){return t?this._weekdaysShort[j(t,n)]:this._weekdaysShort},t.prototype.weekdaysParse=function(t,e,n){var 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++){var i=$e(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")),!(c(this._fullWeekdaysParse)&&c(this._shortWeekdaysParse)&&c(this._minWeekdaysParse)&&c(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}},t.prototype.weekdaysRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=ut),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},t.prototype.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},t.prototype.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ut),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},t.prototype.isPM=function(t){return"p"===t.toLowerCase().charAt(0)},t.prototype.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},t.prototype.formatLongDate=function(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Yt;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])},t.prototype.handleMonthStrictParse=function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=new Date(2e3,a),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=this._shortMonthsParse.indexOf(o))?r:null:-1!==(r=this._longMonthsParse.indexOf(o))?r:null:"MMM"===e?-1!==(r=this._shortMonthsParse.indexOf(o))?r:-1!==(r=this._longMonthsParse.indexOf(o))?r:null:-1!==(r=this._longMonthsParse.indexOf(o))?r:-1!==(r=this._shortMonthsParse.indexOf(o))?r:null},t.prototype.handleWeekStrictParse=function(t,e,n){var a,r=t.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];var i=void 0;for(i=0;i<7;++i){var o=$e(new Date(Date.UTC(2e3,1)),i,null,!0);this._minWeekdaysParse[i]=this.weekdaysMin(o).toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(o).toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(o,"").toLocaleLowerCase()}}if(c(this._weekdaysParse)&&c(this._shortWeekdaysParse)&&c(this._minWeekdaysParse))return n?"dddd"===e?-1!==(a=this._weekdaysParse.indexOf(r))?a:null:"ddd"===e?-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:null:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:"dddd"===e?-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:"ddd"===e?-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:null},t.prototype.computeMonthsParse=function(){var t,e,n=[],a=[],r=[];for(e=0;e<12;e++)t=new Date(2e3,e),n.push(this.monthsShort(t,"")),a.push(this.months(t,"")),r.push(this.months(t,"")),r.push(this.monthsShort(t,""));for(n.sort(Ut),a.sort(Ut),r.sort(Ut),e=0;e<12;e++)n[e]=pt(n[e]),a[e]=pt(a[e]);for(e=0;e<24;e++)r[e]=pt(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")},t.prototype.computeWeekdaysParse=function(){var t,e=[],n=[],a=[],r=[];for(t=0;t<7;t++){var i=$e(new Date(Date.UTC(2e3,1)),t,null,!0),o=this.weekdaysMin(i),s=this.weekdaysShort(i),u=this.weekdays(i);e.push(o),n.push(s),a.push(u),r.push(o),r.push(s),r.push(u)}for(e.sort(Ut),n.sort(Ut),a.sort(Ut),r.sort(Ut),t=0;t<7;t++)n[t]=pt(n[t]),a[t]=pt(a[t]),r[t]=pt(r[t]);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+e.join("|")+")","i")},t}();function Ut(t,e){return e.length-t.length}var Wt={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:Yt,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:qt,monthsShort:jt,week:{dow:0,doy:6},weekdays:Ft,weekdaysMin:Gt,weekdaysShort:zt,meridiemParse:/[ap]\.?m?\.?/i};function Kt(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&f(t[a])!==f(e[a]))&&o++;return o+i}function $t(t,e){D(null,[t,t.length,!1],null,e)}function Zt(t,e){return Jt(t,e.locale).toString()}function Xt(t){return Qt(t).toString()}function Jt(t,e,n){return void 0===e&&(e=ue()),Lt(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Qt(t,e){return Lt(t,1,4,e).year}function te(t,e){D(t,null,null,function(t,n){var a=function(t,e){return void 0===e&&(e={}),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+C(~~(a/60),2)+e+C(~~a%60,2)})}var ee,ne=/([\+\-]|\d\d)/gi,ae={},re={};function ie(t){return t?t.toLowerCase().replace("_","-"):t}function oe(t,e){var n;return t&&(p(e)?n=ue(t):r(t)&&(n=se(t,e)),n&&(ee=n)),ee&&ee._abbr}function se(t,e){if(null===e)return delete ae[t],ee=ue("en"),null;if(e){var n=Wt;if(e.abbr=t,null!=e.parentLocale){if(null==ae[e.parentLocale])return re[e.parentLocale]||(re[e.parentLocale]=[]),re[e.parentLocale].push({name:t,config:e}),null;n=ae[e.parentLocale]._config}return ae[t]=new Bt(function(t,e){var n,a=Object.assign({},t);for(var r in e)l(e,r)&&(d(t[r])&&d(e[r])?(a[r]={},Object.assign(a[r],t[r]),Object.assign(a[r],e[r])):null!=e[r]?a[r]=e[r]:delete a[r]);for(n in t)l(t,n)&&!l(e,n)&&d(t[n])&&(a[n]=Object.assign({},a[n]));return a}(n,e)),re[t]&&re[t].forEach(function(t){se(t.name,t.config)}),oe(t),ae[t]}}function ue(t){return ae.en||(oe("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===f(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),D("w",["ww",2,!1],"wo",function(t,e){return function(t,e,n){return void 0===e&&(e=ue()),e.week(t,void 0)}(t,e.locale).toString(10)}),D("W",["WW",2,!1],"Wo",function(t){return function(t,e){return Lt(t,1,4,void 0).week}(t).toString(10)}),m("week","w"),m("isoWeek","W"),lt("w",J),lt("ww",J,K),lt("W",J),lt("WW",J,K),gt(["w","ww","W","WW"],function(t,e,n,a){return e[a.substr(0,1)]=f(t),n}),D(null,["gg",2,!1],null,function(t,e){return(Jt(t,e.locale)%100).toString()}),D(null,["GG",2,!1],null,function(t){return(Qt(t)%100).toString()}),$t("gggg",Zt),$t("ggggg",Zt),$t("GGGG",Xt),$t("GGGGG",Xt),m("weekYear","gg"),m("isoWeekYear","GG"),lt("G",it),lt("g",it),lt("GG",J,K),lt("gg",J,K),lt("GGGG",nt,Z),lt("gggg",nt,Z),lt("GGGGG",at,X),lt("ggggg",at,X),gt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,a){return e[a.substr(0,2)]=f(t),n}),gt(["gg","GG"],function(t,e,n,a){return e[a]=vt(t),n}),D("Y",null,null,function(t,e){var n=G(t,e.isUTC);return n<=9999?n.toString(10):"+"+n}),D(null,["YY",2,!1],null,function(t,e){return(G(t,e.isUTC)%100).toString(10)}),D(null,["YYYY",4,!1],null,yt),D(null,["YYYYY",5,!1],null,yt),D(null,["YYYYYY",6,!0],null,yt),m("year","y"),lt("Y",it),lt("YY",J,K),lt("YYYY",nt,Z),lt("YYYYY",at,X),lt("YYYYYY",at,X),ht(["YYYYY","YYYYYY"],y),ht("YYYY",function(t,e,n){return e[y]=2===t.length?vt(t):f(t),n}),ht("YY",function(t,e,n){return e[y]=vt(t),n}),ht("Y",function(t,e,n){return e[y]=parseInt(t,10),n}),D("z",null,null,function(t,e){return e.isUTC?"UTC":""}),D("zz",null,null,function(t,e){return e.isUTC?"Coordinated Universal Time":""}),D("X",null,null,function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)}),D("x",null,null,function(t){return t.valueOf().toString(10)}),lt("x",it),lt("X",st),ht("X",function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n}),ht("x",function(t,e,n){return n._d=new Date(f(t)),n}),D("s",["ss",2,!1],null,function(t,e){return M(t,e.isUTC).toString(10)}),m("second","s"),lt("s",J),lt("ss",J,K),ht(["s","ss"],w),D("Q",null,"Qo",function(t,e){return function(t,e){return void 0===e&&(e=!1),Math.ceil((z(t,e)+1)/3)}(t,e.isUTC).toString(10)}),m("quarter","Q"),lt("Q",W),ht("Q",function(t,e,n){return e[v]=3*(f(t)-1),n}),te("Z",":"),te("ZZ",""),lt("Z",ot),lt("ZZ",ot),ht(["Z","ZZ"],function(t,e,n){return n._useUTC=!0,n._tzm=function(e,n){var a=(t||"").match(ot);if(null===a)return null;var r=a[a.length-1].match(ne)||["-","0","0"],i=60*parseInt(r[1],10)+f(r[2]);return 0===i?0:"+"===r[0]?i:-i}(),n}),D("M",["MM",2,!1],"Mo",function(t,e){return(z(t,e.isUTC)+1).toString(10)}),D("MMM",null,null,function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)}),D("MMMM",null,null,function(t,e){return e.locale.months(t,e.format,e.isUTC)}),m("month","M"),lt("M",J),lt("MM",J,K),lt("MMM",function(t,e){return e.monthsShortRegex(t)}),lt("MMMM",function(t,e){return e.monthsRegex(t)}),ht(["M","MM"],function(t,e,n){return e[v]=f(t)-1,n}),ht(["MMM","MMMM"],function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[v]=r:bt(n).invalidMonth=!!t,n}),D("m",["mm",2,!1],null,function(t,e){return P(t,e.isUTC).toString(10)}),m("minute","m"),lt("m",J),lt("mm",J,K),ht(["m","mm"],T),function(){var t;for(D("S",null,null,function(t,e){return(~~(q(t,e.isUTC)/100)).toString(10)}),D(null,["SS",2,!1],null,function(t,e){return(~~(q(t,e.isUTC)/10)).toString(10)}),D(null,["SSS",3,!1],null,function(t,e){return q(t,e.isUTC).toString(10)}),D(null,["SSSS",4,!1],null,function(t,e){return(10*q(t,e.isUTC)).toString(10)}),D(null,["SSSSS",5,!1],null,function(t,e){return(100*q(t,e.isUTC)).toString(10)}),D(null,["SSSSSS",6,!1],null,function(t,e){return(1e3*q(t,e.isUTC)).toString(10)}),D(null,["SSSSSSS",7,!1],null,function(t,e){return(1e4*q(t,e.isUTC)).toString(10)}),D(null,["SSSSSSSS",8,!1],null,function(t,e){return(1e5*q(t,e.isUTC)).toString(10)}),D(null,["SSSSSSSSS",9,!1],null,function(t,e){return(1e6*q(t,e.isUTC)).toString(10)}),m("millisecond","ms"),lt("S",et,W),lt("SS",et,K),lt("SSS",et,$),t="SSSS";t.length<=9;t+="S")lt(t,rt);function e(t,e,n){return e[S]=f(1e3*parseFloat("0."+t)),n}for(t="S";t.length<=9;t+="S")ht(t,e)}(),function(){function t(t,e){return L(t,e)%12||12}function e(t,e){D(t,null,null,function(t,n){return n.locale.meridiem(L(t,n.isUTC),P(t,n.isUTC),e)})}function n(t,e){return e._meridiemParse}D("H",["HH",2,!1],null,function(t,e){return L(t,e.isUTC).toString(10)}),D("h",["hh",2,!1],null,function(e,n){return t(e,n.isUTC).toString(10)}),D("k",["kk",2,!1],null,function(t,e){return function(t,n){return L(t,e.isUTC)||24}(t).toString(10)}),D("hmm",null,null,function(e,n){return""+t(e,n.isUTC)+C(P(e,n.isUTC),2)}),D("hmmss",null,null,function(e,n){return""+t(e,n.isUTC)+C(P(e,n.isUTC),2)+C(M(e,n.isUTC),2)}),D("Hmm",null,null,function(t,e){return""+L(t,e.isUTC)+C(P(t,e.isUTC),2)}),D("Hmmss",null,null,function(t,e){return""+L(t,e.isUTC)+C(P(t,e.isUTC),2)+C(M(t,e.isUTC),2)}),e("a",!0),e("A",!1),m("hour","h"),lt("a",n),lt("A",n),lt("H",J),lt("h",J),lt("k",J),lt("HH",J,K),lt("hh",J,K),lt("kk",J,K),lt("hmm",Q),lt("hmmss",tt),lt("Hmm",Q),lt("Hmmss",tt),ht(["H","HH"],_),ht(["k","kk"],function(t,e,n){var a=f(t);return e[_]=24===a?0:a,n}),ht(["a","A"],function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n}),ht(["h","hh"],function(t,e,n){return e[_]=f(t),bt(n).bigHour=!0,n}),ht("hmm",function(t,e,n){var a=t.length-2;return e[_]=f(t.substr(0,a)),e[T]=f(t.substr(a)),bt(n).bigHour=!0,n}),ht("hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;return e[_]=f(t.substr(0,a)),e[T]=f(t.substr(a,2)),e[w]=f(t.substr(r)),bt(n).bigHour=!0,n}),ht("Hmm",function(t,e,n){var a=t.length-2;return e[_]=f(t.substr(0,a)),e[T]=f(t.substr(a)),n}),ht("Hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;return e[_]=f(t.substr(0,a)),e[T]=f(t.substr(a,2)),e[w]=f(t.substr(r)),n})}(),D("DDD",["DDDD",3,!1],"DDDo",function(t){return At(t).toString(10)}),m("dayOfYear","DDD"),lt("DDD",et),lt("DDDD",$),ht(["DDD","DDDD"],function(t,e,n){return n._dayOfYear=f(t),n}),D("d",null,"do",function(t,e){return j(t,e.isUTC).toString(10)}),D("dd",null,null,function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)}),D("ddd",null,null,function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)}),D("dddd",null,null,function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)}),D("e",null,null,function(t,e){return Xe(t,e.locale,e.isUTC).toString(10)}),D("E",null,null,function(t,e){return function(t,n){return j(t,e.isUTC)||7}(t).toString(10)}),m("day","d"),m("weekday","e"),m("isoWeekday","E"),lt("d",J),lt("e",J),lt("E",J),lt("dd",function(t,e){return e.weekdaysMinRegex(t)}),lt("ddd",function(t,e){return e.weekdaysShortRegex(t)}),lt("dddd",function(t,e){return e.weekdaysRegex(t)}),gt(["dd","ddd","dddd"],function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:bt(n).invalidWeekday=!!t,n}),gt(["d","e","E"],function(t,e,n,a){return e[a]=f(t),n}),D("D",["DD",2,!1],"Do",function(t,e){return F(t,e.isUTC).toString(10)}),m("date","D"),lt("D",J),lt("DD",J,K),lt("Do",function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse}),ht(["D","DD"],x),ht("Do",function(t,e,n){return e[x]=f(t.match(J)[0]),n})),t?function(t){for(var e,n,a=0;a<t.length;){var r=ie(t[a]).split("-"),i=r.length;for(e=(e=ie(t[a+1]))?e.split("-"):null;i>0;){if(o=r.slice(0,i).join("-"),ae[o]||console.error('Khronos locale error: please load locale "'+o+'" before using it'),n=ae[o])return n;if(e&&e.length>=i&&Kt(r,e,!0)>=i-1)break;i--}a++}var o;return null}(c(t)?t:[t]):ee}var ce=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],le=ce.reduce(function(t,e){return t[e]=!0,t},{});function de(t){return t<0?Math.floor(t):Math.ceil(t)}function pe(t){return 4800*t/146097}function fe(t){return 146097*t/4800}var he=Math.round,ge=function(){function t(t,e){void 0===e&&(e={}),this._data={},this._locale=ue(),this._locale=e&&e._locale||ue();var n=t.year||0,r=t.quarter||0,i=t.month||0,o=t.week||0,s=t.day||0,u=t.hours||0,c=t.minutes||0,l=t.seconds||0,d=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(function(e){return e in le&&null===t[e]||isNaN(t[e])}))return!1;for(var e=!1,n=0;n<ce.length;++n)if(t[ce[n]]){if(e)return!1;t[ce[n]]!==f(t[ce[n]])&&(e=!0)}return!0}(t),this._milliseconds=+d+1e3*l+60*c*1e3+1e3*u*60*60,this._days=+s+7*o,this._months=+i+3*r+12*n,function(t){var e=t._milliseconds,n=t._days,r=t._months,i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*de(fe(r)+n),n=0,r=0),i.milliseconds=e%1e3;var o=a(e/1e3);i.seconds=o%60;var s=a(o/60);i.minutes=s%60;var u=a(s/60);i.hours=u%24,n+=a(u/24);var c=a(pe(n));r+=c,n-=de(fe(c));var l=a(r/12);return r%=12,i.day=n,i.month=r,i.year=l,t}(this)}return t.prototype.isValid=function(){return this._isValid},t.prototype.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=he(a.as("s")),i=he(a.as("m")),o=he(a.as("h")),s=he(a.as("d")),u=he(a.as("M")),c=he(a.as("y")),l=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||o<=1&&["h"]||o<22&&["hh",o]||s<=1&&["d"]||s<26&&["dd",s]||u<=1&&["M"]||u<11&&["MM",u]||c<=1&&["y"]||["yy",c];return(function(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}).apply(null,[l[0],l[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},t.prototype.localeData=function(){return this._locale},t.prototype.locale=function(t){return t?(this._locale=ue(t)||this._locale,this):this._locale._abbr},t.prototype.abs=function(){var 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},t.prototype.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds,r=b(t);if("month"===r||"year"===r)return n=this._months+pe(e=this._days+a/864e5),"month"===r?n:n/12;switch(e=this._days+Math.round(fe(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)}},t.prototype.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*f(this._months/12):NaN},t}();function me(t){if(null==t._isValid){var e=bt(t),n=Array.prototype.some.call(e.parsedDateParts,function(t){return null!=t}),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 be(t,e){return t._d=new Date(NaN),Object.assign(bt(t),e||{userInvalidated:!0}),t}var ye=/^\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)?)?$/,ve=/^\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)?)?$/,xe=/Z|[+-]\d\d(?::?\d\d)?/,_e=[["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]],Te=[["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/]],we=/^\/?Date\((\-?\d+)/i,Se={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},Oe=/^(?:(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 ke(t){if(!r(t._i))return t;var e,n,a,i,o,s,u=t._i,c=ye.exec(u)||ve.exec(u);if(!c)return t._isValid=!1,t;for(o=0,s=_e.length;o<s;o++)if(_e[o][1].exec(c[1])){n=_e[o][0],e=!1!==_e[o][2];break}if(null==n)return t._isValid=!1,t;if(c[3]){for(o=0,s=Te.length;o<s;o++)if(Te[o][1].exec(c[3])){a=(c[2]||" ")+Te[o][0];break}if(null==a)return t._isValid=!1,t}if(!e&&null!=a)return t._isValid=!1,t;if(c[4]){if(!xe.exec(c[4]))return t._isValid=!1,t;i="Z"}return t._f=n+(a||"")+(i||""),Me(t)}function Ce(t){var e=parseInt(t,10);return e<=49?e+2e3:e}function Ie(t){if(!r(t._i))return t;var e=Oe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);var n,a,i,o,s,u,c=(n=e[3],a=e[2],i=e[5],o=e[6],s=e[7],u=[Ce(e[4]),jt.indexOf(n),parseInt(a,10),parseInt(i,10),parseInt(o,10)],s&&u.push(parseInt(s,10)),u);return function(t,e,n){return!t||zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(bt(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],c,t)?(t._a=c,t._tzm=function(t,n,a){if(t)return Se[t];if(e[9])return 0;var r=parseInt(e[10],10),i=r%100;return(r-i)/100*60+i}(e[8]),t._d=A.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),bt(t).rfc2822=!0,t):t}function Re(t,e,n,a,r){void 0===r&&(r=0);var i=ue(n||"en");if(!i)throw new Error('Locale "'+n+'" is not defined, please add it with "defineLocale(...)"');var u=function(t,e,n,a,r){if(void 0===r&&(r=0),!o(t))return n.invalidDate;var i=Ne(e,n);return I[i]=I[i]||function(t){for(var e=t.match(N),n=e.length,a=new Array(n),r=0;r<n;r++)a[r]=R[e[r]]?R[e[r]]:(i=e[r]).match(/\[[\s\S]/)?i.replace(/^\[|\]$/g,""):i.replace(/\\/g,"");var i;return function(e,r,i,o){void 0===o&&(o=0);for(var u="",c=0;c<n;c++)u+=s(a[c])?a[c].call(null,e,{format:t,locale:r,isUTC:i,offset:o}):a[c];return u}}(i),I[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return u?i.postformat(u):u}function Ne(t,e){var n=t,a=5,r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=function(t){return 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 De(t,e,n){return null!=t?t:null!=e?e:n}function Ae(t){var e,n,a,r,i,o=[];if(t._d)return t;for(a=function(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[x]&&null==t._a[v]&&function(t){var e,n,a,r,i,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,o=4,n=De(e.GG,t._a[y],Lt(new Date,1,4).year),a=De(e.W,1),((r=De(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,o=t._locale._week.doy;var c=Lt(new Date,i,o);n=De(e.gg,t._a[y],c.year),a=De(e.w,c.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Pt(n,i,o)?bt(t)._overflowWeeks=!0:null!=u?bt(t)._overflowWeekday=!0:(s=function(t,e,n,a,r){var i,o,s=1+7*(e-1)+(7+n-a)%7+Et(t,a,r);return s<=0?o=xt(i=t-1)+s:s>xt(t)?(i=t+1,o=s-xt(t)):(i=t,o=s),{year:i,dayOfYear:o}}(n,a,r,i,o),t._a[y]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(i=De(t._a[y],a[y]),(t._dayOfYear>xt(i)||0===t._dayOfYear)&&(bt(t)._overflowDayOfYear=!0),n=new Date(Date.UTC(i,0,t._dayOfYear)),t._a[v]=n.getUTCMonth(),t._a[x]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=a[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];return 24===t._a[_]&&0===t._a[T]&&0===t._a[w]&&0===t._a[S]&&(t._nextDay=!0,t._a[_]=0),t._d=(t._useUTC?A:E).apply(null,o),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[_]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(bt(t).weekdayMismatch=!0),t}function Ee(t){var e,n=t._a;return n&&-2===bt(t).overflow&&(e=n[v]<0||n[v]>11?v:n[x]<1||n[x]>Tt(n[y],n[v])?x:n[_]<0||n[_]>24||24===n[_]&&(0!==n[T]||0!==n[w]||0!==n[S])?_:n[T]<0||n[T]>59?T:n[w]<0||n[w]>59?w:n[S]<0||n[S]>999?S:-1,bt(t)._overflowDayOfYear&&(e<y||e>x)&&(e=x),bt(t)._overflowWeeks&&-1===e&&(e=O),bt(t)._overflowWeekday&&-1===e&&(e=k),bt(t).overflow=e),t}var Le="ISO_8601",Pe="RFC_2822";function Me(t){if(t._f===Le)return ke(t);if(t._f===Pe)return Ie(t);if(t._a=[],bt(t).empty=!0,c(t._f)||!t._i&&0!==t._i)return t;var e,n,a,r,i=t._i.toString(),o=0,s=i.length,u=Ne(t._f,t._locale).match(N)||[];for(e=0;e<u.length;e++)(a=(i.match(dt(n=u[e],t._locale))||[])[0])&&((r=i.substr(0,i.indexOf(a))).length>0&&bt(t).unusedInput.push(r),i=i.slice(i.indexOf(a)+a.length),o+=a.length),R[n]?(a?bt(t).empty=!1:bt(t).unusedTokens.push(n),mt(n,a,t)):t._strict&&!a&&bt(t).unusedTokens.push(n);return bt(t).charsLeftOver=s-o,i.length>0&&bt(t).unusedInput.push(i),t._a[_]<=12&&!0===bt(t).bigHour&&t._a[_]>0&&(bt(t).bigHour=void 0),bt(t).parsedDateParts=t._a.slice(0),bt(t).meridiem=t._meridiem,t._a[_]=function(e,n,a){var r=t._a[_];if(null==a)return r;if(null!=e.meridiemHour)return e.meridiemHour(r,a);if(null==e.isPM)return r;var i=e.isPM(a);return i&&r<12&&(r+=12),i||12!==r||(r=0),r}(t._locale,0,t._meridiem),Ae(t),Ee(t)}function qe(t,e,n,a,o){return i(t)?t:function(t,e,n,a,o){var s={},f=t;return(d(f)&&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}(f)||c(f)&&0===f.length)&&(f=void 0),s._useUTC=s._isUTC=o,s._l=n,s._i=f,s._f=e,s._strict=a,function(t){var e=Ee(function(t){var e=t._i,n=t._f;return t._locale=t._locale||ue(t._l),null===e||void 0===n&&""===e?be(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=Rt(e),t):(c(n)?function(t){var e,n,a,r,i;if(!t._f||0===t._f.length)return bt(t).invalidFormat=!0,be(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],Me(e),me(e)&&(r+=bt(e).charsLeftOver,r+=10*bt(e).unusedTokens.length,bt(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Me(t):function(t){var e=t._i;if(p(e))t._d=new Date;else if(i(e))t._d=Rt(e);else if(r(e))!function(t){if(!r(t._i))return t;var e=we.exec(t._i);null!==e?t._d=new Date(+e[1]):(ke(t),!1!==t._isValid||(delete t._isValid,Ie(t),!1!==t._isValid||(delete t._isValid,be(t))))}(t);else if(c(e)&&e.length){var n=e.slice(0);t._a=n.map(function(t){return r(t)?parseInt(t,10):t}),Ae(t)}else if(d(e))!function(t){if(t._d)return t;var e=t._i;if(d(e)){var n=function(t){var e,n,a={};for(n in t)l(t,n)&&(e=b(n))&&(a[e]=t[n]);return a}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(function(t){return r(t)?parseInt(t,10):t})}Ae(t)}(t);else{if(!u(e))return be(t);t._d=new Date(e)}}(t),me(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),me(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(s)}(t,e,n,a,o)._d}function je(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Fe(t,e,n){return void 0===n&&(n="milliseconds"),!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<Nt(t,n).valueOf())}function ze(t,e,n){return void 0===n&&(n="milliseconds"),!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Dt(t,n).valueOf()<e.valueOf())}function Ge(t,e){return!(void 0===e||!e||!e.length)&&e.some(function(e){return e===t.getDay()})}var Ye=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,He=/^(-|\+)?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,n){void 0===n&&(n={});var a=function(t,e){if(null==t)return{};if(t instanceof ge)return{milliseconds:t._milliseconds,day:t._days,month:t._months};var n;if(u(t))return e?((n={})[e]=t,n):{milliseconds:t};if(r(t)){var a=Ye.exec(t);if(a){var i="-"===a[1]?-1:1;return{year:0,day:f(a[x])*i,hours:f(a[_])*i,minutes:f(a[T])*i,seconds:f(a[w])*i,milliseconds:f(je(1e3*f(a[S])))*i}}if(a=He.exec(t))return{year:Be(a[2],i="-"===a[1]?-1:1),month:Be(a[3],i),week:Be(a[4],i),day:Be(a[5],i),hours:Be(a[6],i),minutes:Be(a[7],i),seconds:Be(a[8],i)}}if(d(t)&&("from"in t||"to"in t)){var s=function(t,e){if(!o(t)||!o(e))return{milliseconds:0,months:0};var n,a=function(t,e,n){if(void 0===n&&(n={}),!n._isUTC)return t;var a=Rt(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 ze(t,a)?n=Ue(t,a):((n=Ue(a,t)).milliseconds=-n.milliseconds,n.months=-n.months),n}(qe(t.from),qe(t.to));return{milliseconds:s.milliseconds,month:s.months}}return t}(t,e);return new ge(a,n)}function Be(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ue(t,e){var n={milliseconds:0,months:0};return n.months=z(e)-z(t)+12*(G(e)-G(t)),Fe(We(Rt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+We(Rt(t),n.months,"month"),n}function We(t,e,n,a){return Ke(t,Ve(e,n),1,a)}function Ke(t,e,n,a){var r=e._milliseconds,i=je(e._days),o=je(e._months);return o&&Ct(t,z(t,a)+o*n,a),i&&It(t,F(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),Rt(t)}function $e(t,e,n,a){void 0===n&&(n=ue());var i=j(t,a);return We(t,function(t,e){if(!r(t))return t;var n=parseInt(t,10);if(!isNaN(n))return n;var a=e.weekdaysParse(t);return u(a)?a:null}(e,n)-i,"day")}function Ze(t,e){return j(t,e)}function Xe(t,e,n){return void 0===e&&(e=ue()),(j(t,n)+7-e.firstDayOfWeek())%7}var Je="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),Qe="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");function tn(t){return t>1&&t<5&&1!=~~(t/10)}function en(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return e||a?r+(tn(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(tn(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(tn(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(tn(t)?"dny":"dn\xed"):r+"dny";case"M":return e||a?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return e||a?r+(tn(t)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):r+"m\u011bs\xedci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(tn(t)?"roky":"let"):r+"lety"}}var nn={abbr:"cs",months:Je,monthsShort:Qe,monthsParse:function(t,e){var n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Je,Qe),shortMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(Qe),longMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(Je),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(t){switch(Ze(t)){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(t){switch(Ze(t)){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:en,ss:en,m:en,mm:en,h:en,hh:en,d:en,dd:en,M:en,MM:en,y:en,yy:en},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function an(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]}var rn={abbr:"de",months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:an,mm:"%d Minuten",h:an,hh:"%d Stunden",d:an,dd:an,M:an,MM:an,y:an,yy:an},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},on="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),sn="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),un=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],cn=/^(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,ln={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,e,n){return t?/-MMM-/.test(e)?sn[z(t,n)]:on[z(t,n)]:on},monthsRegex:cn,monthsShortRegex:cn,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:un,longMonthsParse:un,shortMonthsParse:un,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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(t){return"[hoy a la"+(1!==L(t)?"s":"")+"] LT"},nextDay:function(t){return"[ma\xf1ana a la"+(1!==L(t)?"s":"")+"] LT"},nextWeek:function(t){return"dddd [a la"+(1!==L(t)?"s":"")+"] LT"},lastDay:function(t){return"[ayer a la"+(1!==L(t)?"s":"")+"] LT"},lastWeek:function(t){return"[el] dddd [pasado a la"+(1!==L(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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}},dn={abbr:"fr",months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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){var 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}},pn={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: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}},fn={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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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(t){switch(Ze(t)){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.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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}},hn={abbr:"ja",months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5 HH:mm dddd"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(t){return"\u5348\u5f8c"===t},meridiem:function(t,e,n){return t<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";default:return t.toString(10)}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}},gn={abbr:"ko",months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\uc77c";case"M":return t+"\uc6d4";case"w":case"W":return t+"\uc8fc";default:return t.toString(10)}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(t){return"\uc624\ud6c4"===t},meridiem:function(t,e,n){return t<12?"\uc624\uc804":"\uc624\ud6c4"}},mn="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),bn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function yn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function vn(t,e,n){var a=t+" ";switch(n){case"ss":return a+(yn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minut\u0119";case"mm":return a+(yn(t)?"minuty":"minut");case"h":return e?"godzina":"godzin\u0119";case"hh":return a+(yn(t)?"godziny":"godzin");case"MM":return a+(yn(t)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return a+(yn(t)?"lata":"lat")}}var xn={abbr:"pl",months:function(t,e,n){return t?""===e?"("+bn[z(t,n)]+"|"+mn[z(t,n)]+")":/D MMMM/.test(e)?bn[z(t,n)]:mn[z(t,n)]:mn},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(t){switch(Ze(t)){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 5:return"[W pi\u0105tek o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(t){switch(Ze(t)){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 4:return"[W zesz\u0142\u0105 czwartek o] LT";case 5:return"[W zesz\u0142\u0105 pi\u0105tek o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:vn,m:vn,mm:vn,h:vn,hh:vn,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:vn,y:"rok",yy:vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},_n={abbr:"pt-br",months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(t){return 0===Ze(t)||6===Ze(t)?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"},Tn={abbr:"zh-cn",months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(t,e){var n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"\u65e5";case"M":return n+"\u6708";case"w":case"W":return n+"\u5468";default:return n.toString()}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}},lJMN:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("QG5k"),r=n("TCh0"),i=n("kQXf");e.TreeController=function(){function t(t){this.component=t,this.tree=this.component.tree,this.treeService=this.component.treeService}return t.prototype.select=function(){this.isSelected()||this.component.onNodeSelected({button:r.MouseButtons.Left})},t.prototype.unselect=function(){this.isSelected()&&this.component.onNodeUnselected({button:r.MouseButtons.Left})},t.prototype.isSelected=function(){return this.component.isSelected},t.prototype.expand=function(){this.isCollapsed()&&this.component.onSwitchFoldingType()},t.prototype.expandToParent=function(t){var e=this;if(void 0===t&&(t=this.tree),t){var n=this.treeService.getController(t.id);n&&requestAnimationFrame(function(){n.expand(),e.expandToParent(t.parent)})}},t.prototype.isExpanded=function(){return this.tree.isNodeExpanded()},t.prototype.collapse=function(){this.isExpanded()&&this.component.onSwitchFoldingType()},t.prototype.isCollapsed=function(){return this.tree.isNodeCollapsed()},t.prototype.toTreeModel=function(){return this.tree.toTreeModel()},t.prototype.rename=function(t){this.tree.markAsBeingRenamed(),this.component.applyNewValue({type:"keyup",value:t})},t.prototype.remove=function(){this.component.onMenuItemSelected({nodeMenuItemAction:a.NodeMenuItemAction.Remove})},t.prototype.addChild=function(t){if(!this.tree.hasDeferredChildren()||this.tree.childrenWereLoaded()){var e=this.tree.createNode(Array.isArray(t.children),t);this.treeService.fireNodeCreated(e)}},t.prototype.addChildAsync=function(t){if(this.tree.hasDeferredChildren()&&!this.tree.childrenWereLoaded())return Promise.reject(new Error("This node loads its children asynchronously, hence child cannot be added this way"));var e=this.tree.createNode(Array.isArray(t.children),t);return this.treeService.fireNodeCreated(e),new Promise(function(t){setTimeout(function(){t(e)})})},t.prototype.changeNodeId=function(t){if(!t)throw Error("You should supply an id!");if(this.treeService.hasController(t))throw Error("Controller already exists for the given id: "+t);this.treeService.deleteController(this.tree.id),this.tree.id=t,this.treeService.setController(this.tree.id,this)},t.prototype.reloadChildren=function(){this.tree.reloadChildren()},t.prototype.setChildren=function(t){this.tree.isLeaf()||this.tree.setChildren(t)},t.prototype.startRenaming=function(){this.tree.markAsBeingRenamed()},t.prototype.check=function(){this.component.onNodeChecked()},t.prototype.uncheck=function(){this.component.onNodeUnchecked()},t.prototype.isChecked=function(){return this.tree.checked},t.prototype.isIndetermined=function(){return i.get(this.component,"checkboxElementRef.nativeElement.indeterminate")},t.prototype.allowSelection=function(){this.tree.selectionAllowed=!0},t.prototype.forbidSelection=function(){this.tree.selectionAllowed=!1},t.prototype.isSelectionAllowed=function(){return this.tree.selectionAllowed},t}()},lTVp:function(t,e,n){"use strict";n.d(e,"a",function(){return s}),n.d(e,"c",function(){return u}),n.d(e,"b",function(){return o});var a=n("CcnG"),r=n("mrSG"),i=n("rpEJ"),o=function(){return function(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}(),s=function(){function t(t,e){var n=this;this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new a.EventEmitter,this.onClosed=new a.EventEmitter,this.classes="",this.dismissibleChange=new a.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(function(t){n.classes=n.dismissible?"alert-dismissible":"",n.changeDetection.markForCheck()})}return t.prototype.ngOnInit=function(){var t=this;this.dismissOnTimeout&&setTimeout(function(){return t.close()},parseInt(this.dismissOnTimeout,10))},t.prototype.close=function(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))},Object(r.__decorate)([Object(i.a)(),Object(r.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t}(),u=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[o]}},t}()},lUjN:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("vxfy");e.DatatableFooterDirective=function(){function t(){}return a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),i.ContentChild(o.DataTableFooterTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Directive({selector:"ngx-datatable-footer"})],t)}()},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[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 a=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];n("wd/R").defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0447\u0430\u0441",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0438":t<12?"\u0443\u0442\u0440\u0430":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-\u0439";case"D":return t+"-\u0433\u043e";case"w":case"W":return t+"-\u044f";default:return t}},week:{dow:1,doy:4}})}()},lYZG:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("0/uQ"),i=n("G5J1");function o(t){return new a.a(function(e){var n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(r.a)(n):Object(i.b)()).subscribe(e)})}},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return t+(e?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return t+(e?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return t+(e?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return t+(e?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return t+(e?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return t+(e?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return t}}n("wd/R").defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(t){return"\u04ae\u0425"===t},meridiem:function(t,e,n){return t<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",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} \u04e9\u0434\u04e9\u0440/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" \u04e9\u0434\u04e9\u0440";default:return t}}})}()},lZOh:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("F/XL");a.a.of=r.a},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};t.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".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:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},lmqd:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi",t.multiClick="multiClick",t.cell="cell",t.checkbox="checkbox"}(e.SelectionType||(e.SelectionType={}))},lqqz:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("CcnG"),r=n("rpEJ"),i=function(){return function(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}(),o=function(){function t(t,e,n,r,i,o,s,u){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=o,this._applicationRef=s,this._posService=u,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._listenOpts={},this._globalListener=Function.prototype}return Object.defineProperty(t.prototype,"isShown",{get:function(){return!this._isHiding&&!!this._componentRef},enumerable:!0,configurable:!0}),t.prototype.attach=function(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this},t.prototype.to=function(t){return this.container=t||this.container,this},t.prototype.position=function(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this},t.prototype.provide=function(t){return this._providers.push(t),this},t.prototype.show=function(t){if(void 0===t&&(t={}),this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);var 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),"body"===this.container&&"undefined"!=typeof document&&document.querySelector(this.container).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},t.prototype.hide=function(){if(!this._componentRef)return this;this.onBeforeHide.emit(this._componentRef.instance);var 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},t.prototype.toggle=function(){this.isShown?this.hide():this.show()},t.prototype.dispose=function(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()},t.prototype.listen=function(t){var e=this;this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;var n=this._listenOpts.hide=function(){return t.hide?t.hide():void e.hide()},a=this._listenOpts.show=function(n){t.show?t.show(n):e.show(n),n()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:a,hide:n,toggle:function(t){e.isShown?n():a(t)}}),this},t.prototype._removeGlobalListener=function(){this._globalListener&&(this._globalListener(),this._globalListener=null)},t.prototype.attachInline=function(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this},t.prototype._registerOutsideClick=function(){var t=this;if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){var e=this._componentRef.location.nativeElement;setTimeout(function(){t._globalListener=Object(r.h)(t._renderer,{targets:[e,t._elementRef.nativeElement],outsideClick:t._listenOpts.outsideClick,hide:function(){return t._listenOpts.hide()}})})}if(this._listenOpts.outsideEsc){var n=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[n,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:function(){return t._listenOpts.hide()}})}}},t.prototype.getInnerComponent=function(){return this._innerComponent},t.prototype._subscribePositioning=function(){var t=this;!this._zoneSubscription&&this.attachment&&(this._zoneSubscription=this._ngZone.onStable.subscribe(function(){t._componentRef&&t._posService.position({element:t._componentRef.location,target:t._elementRef,attachment:t.attachment,appendToBody:"body"===t.container})}))},t.prototype._unsubscribePositioning=function(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)},t.prototype._getContentRef=function(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){var r=this._viewContainerRef.createEmbeddedView(t,e);return r.markForCheck(),new i([r.rootNodes],r)}var o=t.createEmbeddedView({});return this._applicationRef.attachView(o),new i([o.rootNodes],o)}if("function"==typeof t){var s=this._componentFactoryResolver.resolveComponentFactory(t),u=a.Injector.create({providers:this._providers,parent:this._injector}),c=s.create(u);return Object.assign(c.instance,n),this._applicationRef.attachView(c.hostView),new i([[c.location.nativeElement]],c.hostView,c)}return new i([[this._renderer.createText(""+t)]])},t}(),s=function(){function t(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}return t.prototype.createLoader=function(t,e,n){return new o(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)},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]}n("wd/R").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\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".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\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:e,m:"un minut",mm:e,h:"o or\u0103",hh:e,d:"o zi",dd:e,M:"o lun\u0103",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}()},m12A:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("Z5tI");e.fromPromise=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription;return a.add(e.schedule(function(){return t.then(function(t){a.add(e.schedule(function(){n.next(t),a.add(e.schedule(function(){return n.complete()}))}))},function(t){a.add(e.schedule(function(){return n.error(t)}))})})),a}:i.subscribeToPromise(t))}},mChF:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",function(){return a})},mSOc:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("LvDl"),r=n("26FU"),i=n("CcnG"),o=n("t/Na"),s=n("ZYCi"),u=function(){function t(t,e,n){this.http=t,this.router=e,this.ngZone=n,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable(),this.enablePolling()}return t.prototype.enablePolling=function(){var t=this;this.refresh(),this.ngZone.runOutsideAngular(function(){t.polling=window.setInterval(function(){t.ngZone.run(function(){t.refresh()})},5e3)})},t.prototype.refresh=function(){var t=this;"/login"!==this.router.url&&this.http.get("api/summary").subscribe(function(e){t.summaryDataSource.next(e)})},t.prototype.getCurrentSummary=function(){return this.summaryDataSource.getValue()},t.prototype.subscribe=function(t,e){return this.summaryData$.subscribe(t,e)},t.prototype.addRunningTask=function(t){var e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(function(e){return e.name===t.name&&a.isEqual(e.metadata,t.metadata)})||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.c),i.inject(s.l),i.inject(i.NgZone))},token:t,providedIn:"root"}),t}()},mZXl:function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"a",function(){return u});var a=n("mrSG"),r=n("FFOo"),i=n("60iU");function o(t,e){return void 0===e&&(e=0),function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){void 0===e&&(e=0),this.scheduler=t,this.delay=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.scheduler,this.delay))},t}(),u=function(t){function e(e,n,a){void 0===a&&(a=0);var r=t.call(this,e)||this;return r.scheduler=n,r.delay=a,r}return a.__extends(e,t),e.dispatch=function(t){t.notification.observe(t.destination),this.unsubscribe()},e.prototype.scheduleMessage=function(t){this.destination.add(this.scheduler.schedule(e.dispatch,this.delay,new c(t,this.destination)))},e.prototype._next=function(t){this.scheduleMessage(i.a.createNext(t))},e.prototype._error=function(t){this.scheduleMessage(i.a.createError(t)),this.unsubscribe()},e.prototype._complete=function(){this.scheduleMessage(i.a.createComplete()),this.unsubscribe()},e}(r.a),c=function(){return function(t,e){this.notification=t,this.destination=e}}()},mbIT:function(t,e,n){"use strict";e.isArray=Array.isArray||function(t){return t&&"number"==typeof t.length}},mgIt:function(t,e,n){var a=n("T016");function r(t){if(t){var e=[0,0,0],n=1,r=t.match(/^#([a-fA-F0-9]{3,4})$/i),i="";if(r){i=(r=r[1])[3];for(var o=0;o<e.length;o++)e[o]=parseInt(r[o]+r[o],16);i&&(n=Math.round(parseInt(i+i,16)/255*100)/100)}else if(r=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){for(i=r[2],r=r[1],o=0;o<e.length;o++)e[o]=parseInt(r.slice(2*o,2*o+2),16);i&&(n=Math.round(parseInt(i,16)/255*100)/100)}else if(r=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=parseInt(r[o+1]);n=parseFloat(r[4])}else if(r=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=Math.round(2.55*parseFloat(r[o+1]));n=parseFloat(r[4])}else if(r=t.match(/(\w+)/)){if("transparent"==r[1])return[0,0,0,0];if(!(e=a[r[1]]))return}for(o=0;o<e.length;o++)e[o]=l(e[o],0,255);return n=n||0==n?l(n,0,1):1,e[3]=n,e}}function i(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[l(parseInt(e[1]),0,360),l(parseFloat(e[2]),0,100),l(parseFloat(e[3]),0,100),l(isNaN(n)?1:n,0,1)]}}}function o(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[l(parseInt(e[1]),0,360),l(parseFloat(e[2]),0,100),l(parseFloat(e[3]),0,100),l(isNaN(n)?1:n,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function u(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 c(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function l(t,e,n){return Math.min(Math.max(e,t),n)}function d(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}t.exports={getRgba:r,getHsla:i,getRgb:function(t){var e=r(t);return e&&e.slice(0,3)},getHsl:function(t){var e=i(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=r(t);return e?e[3]:(e=i(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t,e){return e=void 0!==e&&3===t.length?e:t[3],"#"+d(t[0])+d(t[1])+d(t[2])+(e>=0&&e<1?d(Math.round(255*e)):"")},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){return e<1||t[3]&&t[3]<1?u(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:u,hslString:function(t,e){return e<1||t[3]&&t[3]<1?c(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:c,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 p[t.slice(0,3)]}};var p={};for(var f in a)p[a[f]]=f},mjYD:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("fELs"),s=i.noop;a._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var u=r.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,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:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.display,r=(0,i.valueOrDefault)(e.fontSize,a.global.defaultFontSize),o=t.minSize,s=i.isArray(e.text)?e.text.length:1,u=i.options.toLineHeight(e.lineHeight,r),c=n?s*u+2*e.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=c):(o.width=c,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=i.valueOrDefault,r=t.options,o=a.global;if(r.display){var s,u,c,l=n(r.fontSize,o.defaultFontSize),d=n(r.fontStyle,o.defaultFontStyle),p=n(r.fontFamily,o.defaultFontFamily),f=i.fontString(l,d,p),h=i.options.toLineHeight(r.lineHeight,l),g=h/2+r.padding,m=0,b=t.top,y=t.left,v=t.bottom,x=t.right;e.fillStyle=n(r.fontColor,o.defaultFontColor),e.font=f,t.isHorizontal()?(u=y+(x-y)/2,c=b+g,s=x-y):(u="left"===r.position?y+g:x-g,c=b+(v-b)/2,s=v-b,m=Math.PI*("left"===r.position?-.5:.5)),e.save(),e.translate(u,c),e.rotate(m),e.textAlign="center",e.textBaseline="middle";var _=r.text;if(i.isArray(_))for(var T=0,w=0;w<_.length;++w)e.fillText(_[w],0,T,s),T+=h;else e.fillText(_,0,0,s);e.restore()}}});function c(t,e){var n=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.titleBlock=n}t.exports={id:"title",_element:u,beforeInit:function(t){var e=t.options.title;e&&c(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(i.mergeIf(e,a.global.title),n?(o.configure(t,n,e),n.options=e):c(t,e)):n&&(o.removeBox(t,n),delete t.titleBlock)}}},mlr9:function(t,e,n){"use strict";var a=n("RDha");function r(t,e){return t.native?{x:t.x,y:t.y}:a.getRelativePosition(t,e)}function i(t,e){var n,a,r,i,o;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,o=(n=t.getDatasetMeta(a)).data.length;r<o;++r){var s=n.data[r];s._view.skip||e(s)}}function o(t,e){var n=[];return i(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function s(t,e,n,a){var r=Number.POSITIVE_INFINITY,o=[];return i(t,function(t){if(!n||t.inRange(e.x,e.y)){var i=t.getCenterPoint(),s=a(e,i);s<r?(o=[t],r=s):s===r&&o.push(t)}}),o}function u(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 c(t,e,n){var a=r(e,t);n.axis=n.axis||"x";var i=u(n.axis),c=n.intersect?o(t,a):s(t,a,!1,i),l=[];return c.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[c[0]._index];a&&!a._view.skip&&l.push(a)}}),l):[]}t.exports={modes:{single:function(t,e){var n=r(e,t),a=[];return i(t,function(t){if(t.inRange(n.x,n.y))return a.push(t),a}),a.slice(0,1)},label:c,index:c,dataset:function(t,e,n){var a=r(e,t);n.axis=n.axis||"xy";var i=u(n.axis),c=n.intersect?o(t,a):s(t,a,!1,i);return c.length>0&&(c=t.getDatasetMeta(c[0]._datasetIndex).data),c},"x-axis":function(t,e){return c(t,e,{intersect:!1})},point:function(t,e){return o(t,r(e,t))},nearest:function(t,e,n){var a=r(e,t);n.axis=n.axis||"xy";var i=u(n.axis),o=s(t,a,n.intersect,i);return o.length>1&&o.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),o.slice(0,1)},x:function(t,e,n){var a=r(e,t),o=[],s=!1;return i(t,function(t){t.inXRange(a.x)&&o.push(t),t.inRange(a.x,a.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var a=r(e,t),o=[],s=!1;return i(t,function(t){t.inYRange(a.y)&&o.push(t),t.inRange(a.x,a.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o}}}},mn2k:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("3MdB")),a(n("Cc8h")),a(n("ylLw")),a(n("M9eX")),a(n("uKs4"))},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 o}),n.d(e,"__decorate",function(){return s}),n.d(e,"__param",function(){return u}),n.d(e,"__metadata",function(){return c}),n.d(e,"__awaiter",function(){return l}),n.d(e,"__generator",function(){return d}),n.d(e,"__exportStar",function(){return p}),n.d(e,"__values",function(){return f}),n.d(e,"__read",function(){return h}),n.d(e,"__spread",function(){return g}),n.d(e,"__await",function(){return m}),n.d(e,"__asyncGenerator",function(){return b}),n.d(e,"__asyncDelegator",function(){return y}),n.d(e,"__asyncValues",function(){return v}),n.d(e,"__makeTemplateObject",function(){return x}),n.d(e,"__importStar",function(){return _}),n.d(e,"__importDefault",function(){return T});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 o(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&&(n[a[r]]=t[a[r]])}return n}function s(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o}function u(t,e){return function(n,a){e(n,a,t)}}function c(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function l(t,e,n,a){return new(n||(n=Promise))(function(r,i){function o(t){try{u(a.next(t))}catch(e){i(e)}}function s(t){try{u(a.throw(t))}catch(e){i(e)}}function u(t){t.done?r(t.value):new n(function(e){e(t.value)}).then(o,s)}u((a=a.apply(t,e||[])).next())})}function d(t,e){var n,a,r,i,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;o;)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 o.label++,{value:i[1],done:!1};case 5:o.label++,a=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(r=(r=o.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){o.label=i[1];break}if(6===i[0]&&o.label<r[1]){o.label=r[1],r=i;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(i);break}r[2]&&o.ops.pop(),o.trys.pop();continue}i=e.call(t,o)}catch(s){i=[6,s],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function p(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function f(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function h(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)o.push(a.value)}catch(s){r={error:s}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o}function g(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(h(arguments[e]));return t}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function b(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a;function o(t){r[t]&&(a[t]=function(e){return new Promise(function(n,a){i.push([t,e,n,a])>1||s(t,e)})})}function s(t,e){try{(n=r[t](e)).value instanceof m?Promise.resolve(n.value.v).then(u,c):l(i[0][2],n)}catch(a){l(i[0][3],a)}var n}function u(t){s("next",t)}function c(t){s("throw",t)}function l(t,e){t(e),i.shift(),i.length&&s(i[0][0],i[0][1])}}function y(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 v(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=f(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 x(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function _(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 T(t){return t&&t.__esModule?t:{default:t}}},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 c}),n.d(e,"b",function(){return u});var a=n("VNr4"),r=(n("SgmB"),n("ZDA6"),n("0+/T")),i=(n("sne2"),n("x38r")),o=n("mtw6"),s=n("vCyI"),u=(n("nSDx"),n("aexS"),n("9nlD"),new(n("EgGo").a)("user-management/roles")),c=function(){function t(t,e,n,a,r,i,o,u,c){var l=this;this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=o,this.urlBuilder=u,this.actionLabels=c,this.selection=new s.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return l.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",disable:function(){return!l.selection.hasSingleSelection||l.selection.first().system},routerLink:function(){return l.selection.first()&&l.urlBuilder.getEdit(l.selection.first().name)},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",disable:function(){return!l.selection.hasSingleSelection||l.selection.first().system},click:function(){return l.deleteRoleModal()},name:this.actionLabels.DELETE}]}return t.prototype.ngOnInit=function(){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:i.a.checkIcon}]},t.prototype.getRoles=function(){var t=this;Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(function(e){t.roles=e[0],t.scopes=e[1]})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteRole=function(t){var e=this;this.roleService.delete(t).subscribe(function(){e.getRoles(),e.modalRef.hide(),e.notificationService.show(o.a.success,e.i18n("Deleted role '{{role_name}}'",{role_name:t}))},function(){e.modalRef.content.stopLoadingSpinner()})},t.prototype.deleteRoleModal=function(){var t=this,e=this.selection.first().name;this.modalRef=this.modalService.show(r.a,{initialState:{itemDescription:"Role",itemNames:[e],submitAction:function(){return t.deleteRole(e)}}})},t}()},n1nk:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.header="header",t.body="body"}(e.ContextmenuType||(e.ContextmenuType={}))},n3uD:function(t,e,n){"use strict";var a=!1;e.config={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},nDWh:function(t,e,n){"use strict";var a=n("6ww4"),r=n("CDJp"),i=n("RDha"),o=n("tjFV");t.exports=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 o=document.defaultView,s=i._getParentNode(n),u=o.getComputedStyle(n)[a],c=o.getComputedStyle(s)[a],l=e(u),d=e(c),p=Number.POSITIVE_INFINITY;return l||d?Math.min(l?t(u,n,r):p,d?t(c,s,r):p):"none"}i.configMerge=function(){return i.merge(i.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,a){var r=e[t]||{},s=n[t];"scales"===t?e[t]=i.scaleMerge(r,s):"scale"===t?e[t]=i.merge(r,[o.getScaleDefaults(s.type),s]):i._merger(t,e,n,a)}})},i.scaleMerge=function(){return i.merge(i.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,s,u,c=n[t].length;for(e[t]||(e[t]=[]),r=0;r<c;++r)s=i.valueOrDefault((u=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),i.merge(e[t][r],!e[t][r].type||u.type&&u.type!==e[t][r].type?[o.getScaleDefaults(s),u]:u)}else i._merger(t,e,n,a)}})},i.where=function(t,e){if(i.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return i.each(t,function(t){e(t)&&n.push(t)}),n},i.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},i.findNextWhere=function(t,e,n){i.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},i.findPreviousWhere=function(t,e,n){i.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},i.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.almostEquals=function(t,e,n){return Math.abs(t-e)<n},i.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},i.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},i.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},i.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},i.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},i.toRadians=function(t){return t*(Math.PI/180)},i.toDegrees=function(t){return t*(180/Math.PI)},i.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}},i.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},i.aliasPixel=function(t){return t%2==0?0:.5},i.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),u=Math.sqrt(Math.pow(o.x-i.x,2)+Math.pow(o.y-i.y,2)),c=s/(s+u),l=u/(s+u),d=a*(c=isNaN(c)?0:c),p=a*(l=isNaN(l)?0:l);return{previous:{x:i.x-d*(o.x-r.x),y:i.y-d*(o.y-r.y)},next:{x:i.x+p*(o.x-r.x),y:i.y+p*(o.y-r.y)}}},i.EPSILON=Number.EPSILON||1e-14,i.splineCurveMonotone=function(t){var e,n,a,r,o,s,u,c,l,d=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),p=d.length;for(e=0;e<p;++e)if(!(a=d[e]).model.skip){if(n=e>0?d[e-1]:null,(r=e<p-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<p-1;++e)r=d[e+1],(a=d[e]).model.skip||r.model.skip||(i.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(o=a.mK/a.deltaK,s=r.mK/a.deltaK,(c=Math.pow(o,2)+Math.pow(s,2))<=9||(u=3/Math.sqrt(c),a.mK=o*u*a.deltaK,r.mK=s*u*a.deltaK)));for(e=0;e<p;++e)(a=d[e]).model.skip||(r=e<p-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))},i.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]},i.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},i.niceNum=function(t,e){var n=Math.floor(i.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)},i.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)},i.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,o=t.target||t.srcElement,s=o.getBoundingClientRect(),u=r.touches;u&&u.length>0?(n=u[0].clientX,a=u[0].clientY):(n=r.clientX,a=r.clientY);var c=parseFloat(i.getStyle(o,"padding-left")),l=parseFloat(i.getStyle(o,"padding-top")),d=parseFloat(i.getStyle(o,"padding-right")),p=parseFloat(i.getStyle(o,"padding-bottom")),f=s.bottom-s.top-l-p;return{x:n=Math.round((n-s.left-c)/(s.right-s.left-c-d)*o.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-l)/f*o.height/e.currentDevicePixelRatio)}},i.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},i.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},i._calculatePadding=function(t,e,n){return(e=i.getStyle(t,e)).indexOf("%")>-1?n/parseInt(e,10):parseInt(e,10)},i._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},i.getMaximumWidth=function(t){var e=i._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-i._calculatePadding(e,"padding-left",n)-i._calculatePadding(e,"padding-right",n),r=i.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},i.getMaximumHeight=function(t){var e=i._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-i._calculatePadding(e,"padding-top",n)-i._calculatePadding(e,"padding-bottom",n),r=i.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},i.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},i.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")}},i.fontString=function(t,e,n){return e+" "+t+"px "+n},i.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},o=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},o=a.garbageCollect=[],a.font=e),t.font=e;var s=0;i.each(n,function(e){null!=e&&!0!==i.isArray(e)?s=i.measureText(t,r,o,s,e):i.isArray(e)&&i.each(e,function(e){null==e||i.isArray(e)||(s=i.measureText(t,r,o,s,e))})});var u=o.length/2;if(u>n.length){for(var c=0;c<u;c++)delete r[o[c]];o.splice(0,u)}return s},i.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},i.numberOfLabelLines=function(t){var e=1;return i.each(t,function(t){i.isArray(t)&&t.length>e&&(e=t.length)}),e},i.color=a?function(t){return t instanceof CanvasGradient&&(t=r.global.defaultColor),a(t)}:function(t){return console.error("Color.js not found!"),t},i.getHoverColor=function(t){return t instanceof CanvasPattern?t:i.color(t).saturate(.5).darken(.1).rgbString()}}},nSDx:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(){}return t.prototype.transform=function(t){return a.isUndefined(t)||a.isNull(t)?"-":t},t}()},nYho:function(t,e,n){(function(t){var a;!function(r){"object"==typeof global&&global;var i,o=2147483647,s=36,u=1,c=26,l=38,d=700,p=72,f=128,h="-",g=/^xn--/,m=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=s-u,x=Math.floor,_=String.fromCharCode;function T(t){throw RangeError(y[t])}function w(t,e){for(var n=t.length,a=[];n--;)a[n]=e(t[n]);return a}function S(t,e){var n=t.split("@"),a="";return n.length>1&&(a=n[0]+"@",t=n[1]),a+w((t=t.replace(b,".")).split("."),e).join(".")}function O(t){for(var e,n,a=[],r=0,i=t.length;r<i;)(e=t.charCodeAt(r++))>=55296&&e<=56319&&r<i?56320==(64512&(n=t.charCodeAt(r++)))?a.push(((1023&e)<<10)+(1023&n)+65536):(a.push(e),r--):a.push(e);return a}function k(t){return w(t,function(t){var e="";return t>65535&&(e+=_((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+_(t)}).join("")}function C(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function I(t,e,n){var a=0;for(t=n?x(t/d):t>>1,t+=x(t/e);t>v*c>>1;a+=s)t=x(t/v);return x(a+(v+1)*t/(t+l))}function R(t){var e,n,a,r,i,l,d,g,m,b,y,v=[],_=t.length,w=0,S=f,O=p;for((n=t.lastIndexOf(h))<0&&(n=0),a=0;a<n;++a)t.charCodeAt(a)>=128&&T("not-basic"),v.push(t.charCodeAt(a));for(r=n>0?n+1:0;r<_;){for(i=w,l=1,d=s;r>=_&&T("invalid-input"),((g=(y=t.charCodeAt(r++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:s)>=s||g>x((o-w)/l))&&T("overflow"),w+=g*l,!(g<(m=d<=O?u:d>=O+c?c:d-O));d+=s)l>x(o/(b=s-m))&&T("overflow"),l*=b;O=I(w-i,e=v.length+1,0==i),x(w/e)>o-S&&T("overflow"),S+=x(w/e),w%=e,v.splice(w++,0,S)}return k(v)}function N(t){var e,n,a,r,i,l,d,g,m,b,y,v,w,S,k,R=[];for(v=(t=O(t)).length,e=f,n=0,i=p,l=0;l<v;++l)(y=t[l])<128&&R.push(_(y));for(a=r=R.length,r&&R.push(h);a<v;){for(d=o,l=0;l<v;++l)(y=t[l])>=e&&y<d&&(d=y);for(d-e>x((o-n)/(w=a+1))&&T("overflow"),n+=(d-e)*w,e=d,l=0;l<v;++l)if((y=t[l])<e&&++n>o&&T("overflow"),y==e){for(g=n,m=s;!(g<(b=m<=i?u:m>=i+c?c:m-i));m+=s)R.push(_(C(b+(k=g-b)%(S=s-b),0))),g=x(k/S);R.push(_(C(g,0))),i=I(n,w,a==r),n=0,++a}++n,++e}return R.join("")}i={version:"1.3.2",ucs2:{decode:O,encode:k},decode:R,encode:N,toASCII:function(t){return S(t,function(t){return m.test(t)?"xn--"+N(t):t})},toUnicode:function(t){return S(t,function(t){return g.test(t)?R(t.slice(4).toLowerCase()):t})}},void 0===(a=(function(){return i}).call(e,n,e,t))||(t.exports=a)}()}).call(this,n("YuTi")(t))},nhM1:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DimensionsHelper=function(){function t(){}return t.prototype.getDimensions=function(t){return t.getBoundingClientRect()},a([r.Injectable()],t)}()},nkY7:function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",function(){return a})},nmKl:function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Peringatan</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>Menerima data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> untuk \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>"/>. Mohon tunggu...\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>Menampilkan data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> sebelumnya \nuntuk \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>Gagal memuat data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> untuk\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>"/>.\nMohon periksa kesehatan klaster.\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="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>Silakan merujuk ke\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> tentang\ncara mengonfigurasi dan mengaktifkan fungsi pemantauan.\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>Dasbor Grafana tidak ada. Mohon merujuk ke\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> tentang cara\nmenambahkan dasbor ke 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</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="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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</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="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="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Suatu IQN memiliki notasi seperti ini \'iqn.$tahun-$bulan.$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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Dibutuhkan min \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gerbang/gateway.\n        </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="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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Dibutuhkan minimal 1 image.</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</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="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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</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>Anda yakin ingin \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> dari \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</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="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>Mohon cek ke \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan mengaktifkan fungsi manajemen iSCSI Target.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</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="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="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="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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</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="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="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</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="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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</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="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</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="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</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="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>Nilai yang dimasukkan terlalu tinggi! Tidak boleh lebih besar dari \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>Nilai yang dimasukkan terlalu rendah! Tidak boleh lebih rendah dari \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</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="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>Nilai yang dimasukkan terlalu tinggi! Harus lebih kecil atau sama dengan \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>Nilai yang dimasukkan terlalu rendah! Harus lebih besar atau sama dengan \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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</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>Nilai yang dimasukkan terlalu tinggi! Tidak boleh lebih tinggi dari \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>Nilai yang dimasukkan terlalu rendah! Tidak boleh lebih rendah dari \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ubah bobot OSD</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>OSD \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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Anda akan menerapkan\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> scrub pada\nOSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> akan ditandai\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>"/> jika ingin melanjutkan.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD tidak aman untuk dihancurkan!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> akan\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>"/> jika ingin melanjutkan.\n        </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="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>Mohon periksa \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan aktfikan fungsi manajemen NFS Ganesha.\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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Ekspor NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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="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="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>Alternatif akses untuk mount \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFSv3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (tidak boleh diawali /).\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>Posisi dari \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>"/> yang diekspor ini menempati \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>"/> (ini harus unik).\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="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="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="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="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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</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="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="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="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="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Anda hanya dapat menambahkan nilai PG dari pool yang ada.\nSaat ini pool Anda memiliki \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PG.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Pengaturan PG saat ini telah dihitung untuk Anda, Anda\nharus memastikan nilai tersebut sesuai kebutuhan sebelum mengajukan.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Aturan crush tidak dapat digunakan di klaster ini karena\njumlah OSD terlalu sedikit untuk memenuhi syarat minimal OSD untuk aturan ini.</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>Maksimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Ukuran yang dimasukkan di luar jangkauan. Nilai yang valid\ndari \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> hingga \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </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="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="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="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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Tidak boleh membuat pool RBD dengan nama yang mengandung \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Mohon ganti atau hapus \'rbd\' dari daftar aplikasi.</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="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>Silakan cek kembali \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan mengaktifkan fungsi manajemen Gerbang Objek.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Buket data tidak dapat dimuat.</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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</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="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="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="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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</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="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</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="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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</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="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="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>Kembali ke Halaman Masuk \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Anda akan dikeluarkan dari Penyedia Identitas saat Anda mencoba masuk.\n        </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="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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</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="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="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Maaf, kami tidak dapat menemukan yang Anda cari</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Hapus semua</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifikasi terkini</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Tidak ada tugas latar belakang.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tugas Latar Belakang</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>Masuk sebagai\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</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="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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Tidak} 1 {Ya} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</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="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="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="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 tidak tersedia: \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="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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</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>"/> Lihat \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> Log untuk detil lainnya.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Untuk pindahkan \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> ke tempat sampah,\ntekan \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Pindah Image \n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Anda juga dapat memilih tanggal kedaluwarsa.\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="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="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>Hanya tersedia untuk image RBD dengan \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>"/> yang diaktifkan.\n        </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="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="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="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="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Ganti nama} other {Buat} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>DIPROTEKSI</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="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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Untuk menghapus, pilih satu atau Semua image dan pilih</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</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>Image ini diproteksi hingga \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="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\xa0\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\xa0\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>Untuk mengubah mode pencerminan pool\xa0\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>"/>, pilih mode baru dari daftar dan klik\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Perbarui\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 {...}}"/>\nmitra pencerminan pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> pool\natribut mitra pencerminan untuk 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>"/> dan klik \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Kirim\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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klien: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\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="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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (butuh peta-objek)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</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="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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</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>Perbarui opsi konfigurasi \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opsi diperbarui untuk modul &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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="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="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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</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="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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Tandai 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>Tandai \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</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>Piroritas &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot; kecepatan pemulihan OSD diperbarui.\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> telah diinisialisasi pada OSD berikut: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Ekspor</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Buket Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; diperbarui\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>Buat buket Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</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>Perbarui pengguna Gerbang Objek &amp;quot\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>;&amp;quot;\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>Buat pengguna Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' dibuat\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>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' diperbarui\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>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' dihapus\n        </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>Pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; dibuat\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>Perbarui pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Hapus pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Gagal menghapus pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Saat ini Anda masuk sebagai &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</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="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="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>Gagal untuk \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</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="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>Snapshot RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>mode pencerminan untuk 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>mitra pencerminan untuk pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nama telah digunakan oleh \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>Nama telah digunakan oleh \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>Nama telah digunakan oleh \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> berisi snapshot.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</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 \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> harus diproteksi.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</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>Nama telah digunakan oleh \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>Tidak dapat menghapus proteksi \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> karena mengandung child image.\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>Tidak dapat menghapus \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> karena diproteksi.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</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}}"/>\' ke tempat sampah\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</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}}"/>\' ke \'\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>Nama image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' sudah digunakan.\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</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>image dari \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="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>profil erasure code \'\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>'},nuQ0:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("ty8c"),o=n("FYBg"),s=n("JZ5S"),u=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"li",[["class","node-menu-item"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onMenuItemSelected(n,t.context.$implicit)&&a),a},null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"div",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"span",[["class","node-menu-item-value"]],null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,["",""]))],null,function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"node-menu-item-icon ",e.context.$implicit.cssClass,"")),t(e,3,0,e.context.$implicit.name)})}function l(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{menuContainer:0}),(t()(),a["\u0275eld"](1,0,null,null,3,"div",[["class","node-menu"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,[[1,0],["menuContainer",1]],null,2,"ul",[["class","node-menu-content"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,c)),a["\u0275did"](4,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,4,0,e.component.availableMenuItems)},null)}var d=n("HHO+"),p=n("Tff5"),f=n("/TVo"),h=n("urB8"),g=n("VUo1"),m=n("ZYjt"),b=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","node-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,[[1,0],["checkbox",1]],null,0,"input",[["checkbox",""],["type","checkbox"]],[[8,"disabled",0],[8,"checked",0]],[[null,"change"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.switchNodeCheckStatus()&&a),a},null,null))],null,function(t,e){var n=e.component;t(e,1,0,n.isReadOnly,n.tree.checked)})}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","node-template"]],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent.parent,0),n.tree.nodeTemplate));t(e,0,0,r)})}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent.parent,0),n.tree.value));t(e,0,0,r)})}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","loading-children"]],null,null,null,null,null))],null,null)}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","node-value"]],[[2,"node-selected",null]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onNodeSelected(n)&&a),a},null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,v)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,2,null,T)),a["\u0275did"](8,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](9,{$implicit:0})],function(t,e){var n=e.component;t(e,2,0,n.tree.nodeTemplate),t(e,4,0,!n.template),t(e,6,0,n.tree.childrenAreBeingLoaded());var a=t(e,9,0,n.tree.node);t(e,8,0,a,n.template)},function(t,e){t(e,0,0,e.component.isSelected)})}function S(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"input",[["class","node-value"],["type","text"]],null,[[null,"valueChanged"],[null,"keyup.enter"],[null,"blur"],[null,"keyup.esc"]],function(t,e,n){var r=!0,i=t.component;return"keyup.enter"===e&&(r=!1!==a["\u0275nov"](t,1).applyNewValue(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).applyNewValueByLoosingFocus(n.target.value)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,1).cancelEditing()&&r),"valueChanged"===e&&(r=!1!==i.applyNewValue(n)&&r),r},null,null)),a["\u0275did"](1,81920,null,0,i.NodeEditableDirective,[a.Renderer2,a.ElementRef],{nodeValue:[0,"nodeValue"]},{valueChanged:"valueChanged"})],function(t,e){t(e,1,0,e.component.tree.value)},null)}function O(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","node-left-menu"]],[[8,"innerHTML",1]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showLeftMenu(n)&&a),a},null,null))],null,function(t,e){t(e,0,0,e.component.tree.leftMenuTemplate)})}function k(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},l,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],null,{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0)},null)}function C(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},l,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],null,{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0)},null)}function I(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},l,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],{menuItems:[0,"menuItems"]},{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0,e.component.tree.menuItems)},null)}function R(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](1,4964352,null,0,d.TreeInternalComponent,[s.NodeMenuService,p.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,n.settings,n.template)},null)}function N(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275pod"](2,{display:0}),(t()(),a["\u0275and"](16777216,null,null,2,null,R)),a["\u0275did"](4,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,r.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component,r=t(e,2,0,n.tree.isNodeExpanded()?"block":"none");t(e,1,0,r),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.tree.childrenAsync)))},null)}function D(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](1,4964352,null,0,d.TreeInternalComponent,[s.NodeMenuService,p.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,n.settings,n.template)},null)}function A(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,D)),a["\u0275did"](1,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,r.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.tree.childrenAsync)))},null)}function E(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,27,"ul",[["class","tree"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{rootless:0}),(t()(),a["\u0275eld"](3,0,null,null,24,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,15,"div",[["class","value-container"]],[[2,"selected",null]],[[null,"contextmenu"]],function(t,e,n){var a=!0;return"contextmenu"===e&&(a=!1!==t.component.showRightMenu(n)&&a),a},null,null)),a["\u0275did"](5,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](6,{rootless:0}),a["\u0275did"](7,212992,null,0,f.NodeDraggableDirective,[a.ElementRef,h.NodeDraggableService,a.Renderer2],{nodeDraggable:[0,"nodeDraggable"],tree:[1,"tree"]},null),(t()(),a["\u0275eld"](8,0,null,null,1,"div",[["class","folding"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSwitchFoldingType()&&a),a},null,null)),a["\u0275did"](9,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](13,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](15,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,O)),a["\u0275did"](17,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,k)),a["\u0275did"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,C)),a["\u0275did"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,I)),a["\u0275did"](23,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,N)),a["\u0275did"](25,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,A)),a["\u0275did"](27,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.isRootHidden());t(e,1,0,"tree",a);var r=t(e,6,0,n.isRootHidden());t(e,5,0,"value-container",r),t(e,7,0,n.nodeElementRef,n.tree),t(e,9,0,"folding",n.tree.foldingCssClass),t(e,11,0,n.settings.showCheckboxes),t(e,13,0,!n.shouldShowInputForTreeValue()),t(e,15,0,n.shouldShowInputForTreeValue()),t(e,17,0,n.tree.hasLeftMenu()),t(e,19,0,n.tree.hasLeftMenu()&&n.isLeftMenuVisible&&!n.hasCustomMenu()),t(e,21,0,n.isRightMenuVisible&&!n.hasCustomMenu()),t(e,23,0,n.hasCustomMenu()&&(n.isRightMenuVisible||n.isLeftMenuVisible)),t(e,25,0,n.tree.keepNodesInDOM()),t(e,27,0,n.tree.isNodeExpanded()&&!n.tree.keepNodesInDOM())},function(t,e){t(e,4,0,e.component.isSelected)})}function L(t){return a["\u0275vid"](0,[a["\u0275pid"](0,g.SafeHtmlPipe,[m.DomSanitizer]),a["\u0275qud"](671088640,1,{checkboxElementRef:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,E)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,3,0,e.component.tree)},null)}n("xtUU"),n.d(e,"a",function(){return P}),n.d(e,"b",function(){return M});var P=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function M(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{rootComponent:0}),(t()(),a["\u0275eld"](1,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](2,4964352,[[1,4],["rootComponent",4]],0,d.TreeInternalComponent,[s.NodeMenuService,p.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,2,0,n.tree,n.settings,n.template)},null)}},nyYc:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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}})}()},o1bE:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}})}()},"o4+5":function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])},t}()},obpP:function(t,e){t.exports='<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\xe9sactiver 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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertes</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>R\xe9serves</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\xe8mes 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>R\xe9cup\xe9ration des donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pour\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>"/>. Veuillez patienter...\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>Affichage des donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pr\xe9c\xe9demment mises en cache\n  pour \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>Impossible de charger les donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pour\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  Veuillez v\xe9rifier l\'\xe9tat de sant\xe9 de la grappe.\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="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>S\xe9lectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des donn\xe9es 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>Veuillez consulter la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> relative \xe0\n  la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de surveillance.\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>Le tableau de bord Grafana n\'existe pas. Veuillez consulter\n  la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> relative \xe0\n  l\'ajout de tableaux de bord \xe0 Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>S\xe9lecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>R\xe9initialiser les param\xe8tres</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\xc9chec du chargement des donn\xe9es.</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>s\xe9lectionn\xe9(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\xe9(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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Param\xe8tres</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\xe9n\xe9ralement pas n\xe9cessaire de modifier ces param\xe8tres par d\xe9faut.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Param\xe8tres avanc\xe9s</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Mod\xe8le IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Un IQN est associ\xe9 \xe0 la notation \'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\xe8tres avanc\xe9s de cette cible ont \xe9t\xe9 modifi\xe9s.</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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Au moins \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> passerelles sont n\xe9cessaires.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des param\xe8tres avanc\xe9s de cette image ont \xe9t\xe9 modifi\xe9s.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Au moins 1 image est requise.</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="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 \xeatre unique.</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="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\xe8res et\n                        ne peuvent contenir que des lettres et les caract\xe8res \'.\', \'@\', \'-\', \'_\' 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="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="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient \xe0 un groupe dans lequel les images seront configur\xe9es.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun \xe9l\xe9ment ajout\xe9.</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</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>Voulez-vous vraiment \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> l\'\xe9l\xe9ment  s\xe9lectionn\xe9 \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la d\xe9couverte</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\xe8res et\n                        ne peuvent contenir que des lettres et les caract\xe8res \'.\', \'@\', \'-\', \'_\' ou \':\'.</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\nrelative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion des cibles iSCSI.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caract\xe8res \'/\' et \'@\' ne sont pas autoris\xe9s.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune r\xe9serve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- S\xe9lectionner une r\xe9serve --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une r\xe9serve de donn\xe9es d\xe9di\xe9e</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>R\xe9serve de donn\xe9es</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\xe9serve d\xe9di\xe9e qui stocke les donn\xe9es objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune r\xe9serve de donn\xe9es disponible --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</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="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalit\xe9s</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanc\xe9...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanc\xe9</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit\xe9 de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- S\xe9lectionner une unit\xe9 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\xe9fini.</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\xe9 de segmentation est sup\xe9rieure \xe0 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\xe9 de segmentation est d\xe9finie.</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 \xeatre sup\xe9rieur \xe0 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</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="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\xe9faut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par d\xe9faut du daemon</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="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle ne peut pas \xeatre sup\xe9rieure \xe0 \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>La valeur entr\xe9e est trop faible ! Elle ne peut pas \xeatre inf\xe9rieure \xe0 \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'h\xf4tes</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entr\xe9e trouv\xe9e</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="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 \xeatre charg\xe9e.</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\xe9e 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\xe9e doit \xeatre 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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle doit \xeatre inf\xe9rieure ou \xe9gale \xe0 \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>La valeur entr\xe9e est trop faible ! Elle doit \xeatre sup\xe9rieure ou \xe9gale \xe0 \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\xe9e doit \xeatre 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\xe9e doit \xeatre un nombre ou une valeur d\xe9cimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise \xe0 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\xe9</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD \xe0 l\'\xe9chelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorit\xe9 de r\xe9cup\xe9ration des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe9</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorit\xe9</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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle ne peut pas \xeatre sup\xe9rieure \xe0 \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>La valeur entr\xe9e est trop faible ! Elle ne peut pas \xeatre inf\xe9rieure \xe0 \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>R\xe9\xe9valuer l\'OSD</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 \xeatre comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>R\xe9\xe9valuer</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>Nettoyage des \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>OSD\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Vous \xeates sur le point d\'appliquer un nettoyage \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\n            \xe0 l\'OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>L\'\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> sera marqu\xe9\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>"/> si vous continuez.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>L\'OSD ne peut pas \xeatre d\xe9truit de fa\xe7on s\xe9curis\xe9e !</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> sera\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>"/> si vous continuez.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>D\xe9tails</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Sant\xe9</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  relative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion du 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>Acc\xe8s 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\xe9par\xe9es 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\xe8s</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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Export NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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\xe9lectionner 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="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- S\xe9lectionner 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\xe9lectionner 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\xe9lectionner 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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libell\xe9 de s\xe9curit\xe9</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libell\xe9 de s\xe9curit\xe9</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 \xeatre 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\xe9pertoire sera cr\xe9\xe9</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 \xeatre constitu\xe9 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\xe9\xe9</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>Autre chemin d\'acc\xe8s aux montages \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>"/> (doit commencer par /).\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\xe9pertoires (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\xe9rentes options de balise, il est possible d\'exporter plusieurs fois le m\xeame 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>Position occup\xe9e par cet export \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>"/>\n                dans le \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>syst\xe8me de fichiers Pseudo\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (doit \xeatre 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\xe9rentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le m\xeame chemin.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'acc\xe8s disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- S\xe9lectionner le type d\'acc\xe8s --</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\xe9lectionnez le type de squash d\'ID utilisateur qui est effectu\xe9 --</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit \xeatre exclusivement compos\xe9 de caract\xe8res alphanum\xe9riques, 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\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</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\xe9es (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 \xeatre \xe9gal ou sup\xe9rieur \xe0 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 \xeatre \xe9gal ou sup\xe9rieur \xe0 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilit\xe9 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localit\xe9 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de d\xe9faillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localit\xe9 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\xe9riph\xe9rique 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\xe9pertoire</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="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</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\xe9serve Ceph s\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de r\xe9serve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- S\xe9lectionner un type de r\xe9serve --</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\xe9cessaire.</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\xe9rer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements n\xe9cessaires.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Vous pouvez uniquement augmenter le nombre de groupes de placements d\'une r\xe9serve existante.\n                Votre r\xe9serve contient actuellement \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> groupes de placements.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Les param\xe8tres actuels des groupes de placements ont \xe9t\xe9 calcul\xe9s pour vous.\nV\xe9rifiez que les valeurs correspondent \xe0 vos besoins avant de les soumettre.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de r\xe8gles Crush</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- S\xe9lectionner une r\xe8gle crush --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>R\xe8gle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>\xc9tapes Crush</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>La r\xe8gle ne peut pas \xeatre utilis\xe9e dans la grappe active, car celle-ci\n comporte un nombre d\'OSD inf\xe9rieur au nombre d\'OSD minimum requis par cette r\xe8gle.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de r\xe9plication</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>La taille sp\xe9cifi\xe9e est en dehors de la plage. Une valeur comprise entre\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> et \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> est valide.\n        </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\xe9lectionner un profil de code d\'effacement --</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>\xc9crasements 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="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 \xeatre sup\xe9rieure \xe0 0</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 \xeatre sup\xe9rieure \xe0 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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Il n\'est pas possible de cr\xe9er une r\xe9serve RBD dont le nom contient \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Modifiez le nom ou supprimez \'rbd\' de la liste des applications.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des r\xe9serves</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  relative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion Object Gateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des donn\xe9es de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Les donn\xe9es du compartiment n\'ont pas pu \xeatre charg\xe9es.</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\xe9lectionn\xe9 est d\xe9j\xe0 en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propri\xe9taire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- S\xe9lectionner un utilisateur --</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="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\xe9lectionner 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\xe9lectionner une autorisation --</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="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\xe9lectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>G\xe9n\xe9rer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'acc\xe8s</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secr\xe8te</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\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, \xe9crire</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\xe9 Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>G\xe9n\xe9rer 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\xe9s utilisateur\u2026</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\xe9s utilisateur n\'ont pas pu \xeatre charg\xe9es.</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\xe9cifi\xe9 est d\xe9j\xe0 utilis\xe9.</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 \xe9lectronique</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 \xe9lectronique 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 \xe9lectronique sp\xe9cifi\xe9e est d\xe9j\xe0 utilis\xe9e.</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="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit \xeatre &gt;= 0.</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</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="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</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="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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalit\xe9s</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\xe9.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activ\xe9</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimit\xe9e</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\xe9s</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</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="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="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>D\xe9sol\xe9, 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>Retournez \xe0 la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>page de connexion\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Vous serez d\xe9connect\xe9 du fournisseur d\'identit\xe9 lorsque vous tenterez de vous reconnecter.\n        </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="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse \xe9lectronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse \xe9lectronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>R\xf4les</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 \xeates sur le point de supprimer les autorisations "lecture/mise \xe0 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\xf4les 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="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\xe9sol\xe9, vous n\'\xeates pas autoris\xe9 \xe0 voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>D\xe9sol\xe9s, nous ne parvenons pas \xe0 trouver ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Tout supprimer</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifications r\xe9centes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Il n\'y a aucune t\xe2che en arri\xe8re-plan.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>T\xe2ches en arri\xe8re-plan</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>\xc0 propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Param\xe8tres 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\xe9</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>Connect\xe9 en tant que\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se d\xe9connecter</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>D\xe9tails des performances</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\xe8gle 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="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\xe9</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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Syst\xe8me</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Non} 1 {Oui} }</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="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="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>R\xe9serve</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\xe9rit\xe9e et utilis\xe9e \xe0 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="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\xe9tadonn\xe9es non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>M\xe9tadonn\xe9es</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>Histogramme non disponible : \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>\xc9critures</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="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 \xe0 jour possible lors de l\'ex\xe9cution (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\'\xe9num\xe9nation</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\xe9tadonn\xe9es</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\xe9bit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/\xc9critures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>D\xe9bit de r\xe9cup\xe9ration</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\xe9 brute</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="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\xe9</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>"/> Consultez les \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>journaux\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> pour plus d\'informations.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>D\xe9placer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Pour d\xe9placer \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> vers la corbeille,\n          cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>D\xe9placer une image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Vous pouvez \xe9galement s\xe9lectionner une date d\'expiration.\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\xc9G\xc9</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\xe9j\xe0 expir\xe9. Veuillez s\xe9lectionner une date ult\xe9rieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>D\xe9placer une image</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Pr\xe9sentation</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="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>Disponible uniquement pour les images RBD pour lesquelles \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>"/> est activ\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>R\xe9serve de donn\xe9es</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Cr\xe9\xe9</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionn\xe9</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\xe9 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\xe9fixe 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\xe9s</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce param\xe8tre remplace la valeur 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>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a \xe9t\xe9 d\xe9finie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instantan\xe9 RDB \n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renommer} other {Cr\xe9er} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instantan\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROT\xc9G\xc9</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROT\xc9G\xc9</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous \xeates sur le point de revenir \xe0 l\'\xe9tat 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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Pour purger, s\xe9lectionner une image ou toutes, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>R\xe9serve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la r\xe9serve...</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="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>Cette image est prot\xe9g\xe9e jusqu\'au \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="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probl\xe8mes</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\xeat</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\xe9serve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Pour modifier le mode de mise en miroir de la r\xe9serve\xa0\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>"/>, s\xe9lectionnez un nouveau mode dans la liste, puis cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mettre \xe0 jour\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 \xeatre supprim\xe9es avant de d\xe9sactiver 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  homologue de mise en miroir de la r\xe9serve\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> les attributs\n          de mise en miroir de la r\xe9serve \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>"/> et cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Soumettre\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\xe9par\xe9es 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 \xeatre cod\xe9e en base64.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>D\xe9tails des niveaux de mise en cache</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clients : \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xe9couverte mise \xe0 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 \xe0 ajouter une image \xe0 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 \xe0 ajouter un initiateur \xe0 la cible.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'h\xf4te</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\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op\xe9rations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op\xe9rations d\'\xe9criture</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\xe8me</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\xc9tat</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>D\xe9sactiv\xe9</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'\xe9dition</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 \xe0 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</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\xe9cessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (n\xe9cessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (n\xe9cessite object-map)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>D\xe9placer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Cr\xe9er</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Prot\xe9ger</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour \xe0 l\'\xe9tat initial de l\'instantan\xe9 RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantan\xe9 RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprim\xe9 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>\xe9tat</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\xf4te</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="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\xe9</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</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 \xeatre mise \xe0 jour au moment de l\'ex\xe9cution.</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\xa0 la base de donn\xe9es de configuration de Monitor. Nous n\'autorisons pas le r\xe9glage de cette option via \'ceph config\n\xa0 set ...\'. Cette option doit \xeatre configur\xe9e via ceph.conf ou via\n\xa0 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\xe9marrage 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\xe9ation 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\xe9ation 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>Option de configuration mise \xe0 jour \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Options mises \xe0 jour pour le module &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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\xe9sactiver</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours\u2026 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="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentr\xe9s</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 \xe9t\xe9 marqu\xe9s comme sortis ne seront pas marqu\xe9s comme rentr\xe9s \xe0 leur d\xe9marrage.</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\xe9s automatiquement comme sortis apr\xe8s l\'intervalle configur\xe9.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas d\xe9marr\xe9s</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\xe9s \xe0 d\xe9marrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arr\xeat\xe9s</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\xe9faillance des OSD sont ignor\xe9s, de sorte que les moniteurs ne marquent pas les OSD comme \xe9tant arr\xeat\xe9s.</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 \xe9critures</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\xe9sactiv\xe9</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\xe9sactiv\xe9</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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de r\xe9cup\xe9ration</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La r\xe9cup\xe9ration 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\xe9es</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\xe9cup\xe9rations</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\xe9es 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 \xe0 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 \xe0 jour</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="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentr\xe9</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentr\xe9</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arr\xeat\xe9</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arr\xeat\xe9</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="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\xe9 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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purg\xe9</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>D\xe9truire</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>d\xe9truire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>d\xe9truit</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Octets d\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op\xe9rations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op\xe9rations d\'\xe9criture</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>Marquer l\'OSD comme \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>Marquer comme \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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\xe9cup\xe9rations 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\xe9marrages uniques de r\xe9cup\xe9rations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la r\xe9cup\xe9ration</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalis\xe9</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>Priorit\xe9 de la vitesse de r\xe9cup\xe9ration des OSD&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;  mise \xe0 jour\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> a \xe9t\xe9 initialis\xe9(e) sur l\'OSD suivant : \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\xe9</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>D\xe9marr\xe9</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilis\xe9</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\xe9</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="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>op\xe9rationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun syst\xe8me 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\xe9.</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\xe8me de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(h\xe9rit\xe9 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\xe9rit\xe9 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\xe9lectionner le type de squashing d\'ID utilisateur effectu\xe9 --</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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</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>\xc2ge \xe9vict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\xc2ge 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\xe9e</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\xe9serve peut avoir quatre d\xe9finitions 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\xe8re autoris\xe9s \'_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\xe8res.</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la r\xe9plique</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\xe8gles Crush</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Compartiment Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; mis \xe0 jour\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>Compartiment Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; cr\xe9\xe9\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</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>Utilisateur Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; mis \xe0 jour\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>Utilisateur Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; cr\xe9\xe9\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>P\xe9rim\xe8tre</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' cr\xe9\xe9\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>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' mis \xe0 jour\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>R\xf4le syst\xe8me</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>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' supprim\xe9\n        </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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; cr\xe9\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre \xe0 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 \xe9t\xe9 automatiquement d\xe9connect\xe9, car vos r\xf4les ont chang\xe9.</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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; mis \xe0 jour\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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; supprim\xe9\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>\xc9chec de la suppression de l\'utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Vous \xeates connect\xe9 en tant que &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\xe9 en parties de blocs de donn\xe9es, chacune \xe9tant stock\xe9e sur un OSD diff\xe9rent.</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\xe9rents OSD.\n Le nombre de blocs de codage correspond \xe9galement au nombre d\'OSD qui peuvent \xeatre arr\xeat\xe9s sans perdre de donn\xe9es.</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\xe9n\xe9rique et le plus flexible,\n\xa0 c\'est aussi la valeur par d\xe9faut des r\xe9serves cod\xe9es \xe0 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\xe9finir k\n et m. La technique cauchy_good peut \xeatre plus rapide, mais vous devez choisir la taille du paquet\n avec pr\xe9caution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des \xe9quivalents RAID6\n en ce sens qu\'ils ne peuvent \xeatre configur\xe9s 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\xa0 Choisir la bonne taille de paquet est difficile.\n\xa0 La documentation de jerasure contient de nombreuses informations \xe0 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\xe9 \xe0 effacement est stock\xe9 sur\n plusieurs OSD, la r\xe9cup\xe9ration \xe0 la suite de la perte d\'un OSD n\xe9cessite la lecture de tous les autres.\n Par exemple, si jerasure est configur\xe9 avec k=8 et m=4, la perte d\'un OSD n\xe9cessite de lire\n les onze autres pour pouvoir effectuer une r\xe9paration.\n\n Le plugin de code d\'effacement lrc cr\xe9e des blocs de parit\xe9 locale pour permettre la r\xe9cup\xe9ration avec\n moins d\'OSD. Par exemple, si lrc est configur\xe9 avec k=8, m=4 et l=4,\n un bloc de parit\xe9 suppl\xe9mentaire est cr\xe9\xe9 pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut \xeatre\n r\xe9cup\xe9r\xe9 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\xe9es et de codage en ensembles de localit\xe9 de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont cr\xe9\xe9s. Chaque ensemble peut\n \xeatre r\xe9cup\xe9r\xe9 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\xe9fini\n par I sera stock\xe9. Par exemple, s\'il est r\xe9gl\xe9 sur rack, chaque groupe de blocs I sera\n plac\xe9 dans un rack diff\xe9rent. Il est utilis\xe9 pour cr\xe9er une \xe9tape de la r\xe8gle CRUSH telle que l\'\xe9tape de choix\n d\'un rack. S\'il n\'est pas d\xe9fini, aucun regroupement de ce type n\'est effectu\xe9.</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\xe8que 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\xe9sente sous deux formes Reed Solomon.\n Si reed_sol_van est d\xe9fini, il \xe9quivaut \xe0 Vandermonde. Si cauchy est configur\xe9, il \xe9quivaut \xe0 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\xe8que SHEC multiple.\n Il permet \xe0 Ceph de r\xe9cup\xe9rer les donn\xe9es 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\xe9, chacun incluant chaque bloc de donn\xe9es dans sa\n plage de calcul. Ce nombre est utilis\xe9 comme estimateur de durabilit\xe9. Par exemple, si c=2,\n 2 OSD peuvent \xeatre arr\xeat\xe9s sans perte de donn\xe9es.</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\xe9 pour la premi\xe8re \xe9tape de la r\xe8gle CRUSH.\n Par exemple, l\'\xe9tape de d\xe9finition des valeurs par d\xe9faut.</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\xe9rifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le m\xeame domaine de\n d\xe9faillance. Par exemple, si le domaine de d\xe9faillance est un h\xf4te, deux blocs ne seront pas stock\xe9s sur le m\xeame\n h\xf4te. Cette option est utilis\xe9e pour cr\xe9er une \xe9tape de la r\xe8gle 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\xe9riph\xe9riques d\'une classe sp\xe9cifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de p\xe9riph\xe9riques 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\xe9finissez le nom du r\xe9pertoire \xe0 partir duquel le plug-in de code d\'effacement est charg\xe9.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les op\xe9rations</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\xe9rations 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\xe9rations de lecture ou d\'\xe9criture, 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\'\xe9criture ni aucune autre op\xe9ration modifiant les attributs d\'un fichier ou le contenu d\'un r\xe9pertoire.</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\xe8s</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- S\xe9lectionner la priorit\xe9 --</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>\xc9lev\xe9e</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La derni\xe8re heure (par d\xe9faut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 derni\xe8res 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\xe9but de la journ\xe9e</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\xe8re</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\xe9but 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\xe9but 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\xe9e \xe9coul\xe9e</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'ann\xe9e derni\xe8re</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette ann\xe9e</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le d\xe9but de l\'ann\xe9e</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 derni\xe8res ann\xe9es</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 derni\xe8res ann\xe9es</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="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun \xe9l\xe9ment s\xe9lectionn\xe9.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>D\xe9s\xe9lectionnez l\'\xe9l\xe9ment pour le s\xe9lectionner \xe0 nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de s\xe9lection 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 \xe9l\xe9ment disponible.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualit\xe9 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\xe9e 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\xe9e d\'op\xe9rations 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\xe9e 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\xe9e d\'op\xe9rations 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 \xe9criture</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\xe9e d\'\xe9criture 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 \xe9criture</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\xe9e d\'op\xe9rations d\'\xe9criture 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\xe9e.</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\xe9rations E/S souhait\xe9e.</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\xe9rations 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 \xe9criture</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\xe9e.</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 \xe9criture</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\xe9rations d\'\xe9criture souhait\xe9e.</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>Impossible de \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\xe9cution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ex\xe9cuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ex\xe9cut\xe9</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>t\xe2che inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de cr\xe9ation</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>cr\xe9er</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise \xe0 jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre \xe0 jour</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis \xe0 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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprim\xe9</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>Instantan\xe9 RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>mode miroir pour la r\xe9serve \'\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>mettre en miroir l\'homologue pour la r\xe9serve \'\n          <x id="INTERPOLATION" equiv-text="{{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>Le nom est d\xe9j\xe0 utilis\xe9 par \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>Le nom est d\xe9j\xe0 utilis\xe9 par \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>Le nom est d\xe9j\xe0 utilis\xe9 par \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> contient des instantan\xe9s.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clon\xe9</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>L\'instantan\xe9 de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> doit \xeatre prot\xe9g\xe9.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copi\xe9</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</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>Nom d\xe9j\xe0 utilis\xe9 par \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>Impossible d\'annuler la protection de \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> , car cet \xe9l\xe9ment contient des images enfants.\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>Impossible de supprimer \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, car cet \xe9l\xe9ment est prot\xe9g\xe9.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>r\xe9tablir l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>R\xe9tabli \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de d\xe9placement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>d\xe9placer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>D\xe9plac\xe9</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}}"/>\' d\xe9plac\xe9e vers la corbeille\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaur\xe9</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}}"/>\' vers \'\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>Le nom d\'image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' est d\xe9j\xe0 utilis\xe9.\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purg\xe9</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les r\xe9serves</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 de \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\xe9sactiver la mise en miroir, car l\'\xe9l\xe9ment contient un homologue.</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>r\xe9serve \'\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 de code d\'effacement \'\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>cible \'\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>'},ohIB:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("ae7Z");function r(t){for(var e=0,n=0,a=t;n<a.length;n++)e+=a[n].flexGrow||0;return e}function i(t,e){for(var n=0,a=e;n<a.length;n++){var r=t.indexOf(a[n]);t.splice(r,1)}}function o(t,e){void 0===e&&(e=300);for(var n=0,a=0,r=t;a<r.length;a++)n+=r[a].width||e;return n}e.getTotalFlexGrow=r,e.adjustColumnWidths=function(t,e){var n=a.columnsTotalWidth(t),i=r(t),o=a.columnsByPin(t);n!==e&&function(t,e,n){for(var a in t)for(var r=0,i=t[a];r<i.length;r++)(d=i[r]).canAutoResize?d.width=0:(e-=d.width,n-=d.flexGrow?d.flexGrow:0);var o={},s=e;do{var u=s/n;for(var a in s=0,t)for(var c=0,l=t[a];c<l.length;c++){var d;if((d=l[c]).canAutoResize&&!o[d.prop]){var p=d.width+d.flexGrow*u;void 0!==d.minWidth&&p<d.minWidth?(s+=p-d.minWidth,d.width=d.minWidth,o[d.prop]=!0):d.width=p}}}while(0!==s)}(o,e,i)},e.forceFillColumnWidths=function(t,e,n,a,r){void 0===r&&(r=300);for(var s=t.slice(n+1,t.length).filter(function(t){return!1!==t.canAutoResize}),u=0,c=s;u<c.length;u++)(b=c[u]).$$oldWidth||(b.$$oldWidth=b.width);var l=0,d=!1,p=o(t,r),f=e-p,h=[];do{l=f/s.length,d=p>=e;for(var g=0,m=s;g<m.length;g++){var b=m[g];if(d&&a)b.width=b.$$oldWidth||b.width||r;else{var y=(b.width||r)+l;b.minWidth&&y<b.minWidth?(b.width=b.minWidth,h.push(b)):b.maxWidth&&y>b.maxWidth?(b.width=b.maxWidth,h.push(b)):b.width=y}b.width=Math.max(0,b.width)}f=e-(p=o(t)),i(s,h)}while(f>0&&0!==s.length)}},ou9H:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("MGBS"),i=n("zotm");function o(t,e){return function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){this.keySelector=t,this.flushes=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.keySelector,this.flushes))},t}(),u=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keySelector=n,r.values=new Set,a&&r.add(Object(i.a)(r,a)),r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values.clear()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype._next=function(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)},e.prototype._useKeySelector=function(t){var e,n=this.destination;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)},e.prototype._finalizeNext=function(t,e){var n=this.values;n.has(t)||(n.add(t),this.destination.next(e))},e}(r.a)},ozli:function(t,e,n){"use strict";var a=n("zfKp");e.subscribeToObservable=function(t){return function(e){var n=t[a.observable]();if("function"!=typeof n.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return n.subscribe(e)}}},"p//D":function(t,e,n){"use strict";e.rxSubscriber="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random(),e.$$rxSubscriber=e.rxSubscriber},"p/rL":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_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\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}()},p0Sj:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("IUTb"),r=n("PU8L"),i=n("G5J1"),o=n("dEwP"),s=n("nkY7");function u(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n=t[t.length-1];Object(s.a)(n)?t.pop():n=null;var u=t.length;return 1!==u||n?u>0?Object(o.a)(Object(a.a)(t,n),e):Object(o.a)(Object(i.b)(n),e):Object(o.a)(Object(r.a)(t[0]),e)}}},p0ib:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("6blF"),r=n("nkY7"),i=n("Zn8D"),o=n("IUTb");function s(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=Number.POSITIVE_INFINITY,s=null,u=t[t.length-1];return Object(r.a)(u)?(s=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(n=t.pop())):"number"==typeof u&&(n=t.pop()),null===s&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(n)(Object(o.a)(t,s))}},p4Cf:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},pKUh:function(t,e,n){"use strict";n.d(e,"a",function(){return o}),n.d(e,"b",function(){return c});var a=n("CcnG"),r=n("YAQW"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275ted"](-1,null,[" \u274c"]))],null,null)}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"li",[],[[2,"active",null],[2,"disabled",null]],null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](2,2),(t()(),a["\u0275eld"](3,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(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["\u0275eld"](4,16777216,null,null,2,"span",[],null,null,null,null,null)),a["\u0275did"](5,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["\u0275ted"](6,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,"nav-item",e.context.$implicit.customClass||"");t(e,1,0,n),t(e,5,0,e.context.$implicit.headingRef),t(e,8,0,e.context.$implicit.removable)},function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,3,0,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,6,0,e.context.$implicit.heading)})}function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"ul",[["class","nav"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a},null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,u)),a["\u0275did"](3,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"nav",n.classMap),t(e,3,0,n.tabs)},null)}},pL04:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},pMnS:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("ZYCi"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["\u0275did"](1,212992,null,0,r.q,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"ng-component",[],null,null,null,o,i)),a["\u0275did"](1,49152,null,0,r.u,[],null,null)],null,null)}var u=a["\u0275ccf"]("ng-component",r.u,s,{},{},[])},paOr:function(t,e,n){"use strict";var a=n("RDha"),r=n("cdu6");t.exports=function(t){var e=a.noop;t.LinearScaleBase=r.extend({getRightValue:function(t){return"string"==typeof t?+t:r.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=a.sign(t.min),r=a.sign(t.max);n<0&&r<0?t.max=0:n>0&&r>0&&(t.min=0)}var i=void 0!==e.min||void 0!==e.suggestedMin,o=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)),i!==o&&t.min>=t.max&&(i?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:a.valueOrDefault(e.fixedStepSize,e.stepSize)},i=t.ticks=function(t,e){var n,r,i,o=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var s=a.niceNum(e.max-e.min,!1);i=a.niceNum(s/(t.maxTicks-1),!0),void 0!==(r=t.precision)&&(n=Math.pow(10,r),i=Math.ceil(i*n)/n)}var u=Math.floor(e.min/i)*i,c=Math.ceil(e.max/i)*i;a.isNullOrUndef(t.min)||a.isNullOrUndef(t.max)||!t.stepSize||a.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(u=t.min,c=t.max);var l=(c-u)/i;l=a.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l),r=1,i<1&&(r=Math.pow(10,1-Math.floor(a.log10(i))),u=Math.round(u*r)/r,c=Math.round(c*r)/r),o.push(void 0!==t.min?t.min:u);for(var d=1;d<l;++d)o.push(Math.round((u+d*i)*r)/r);return o.push(void 0!==t.max?t.max:c),o}(r,t);t.handleDirectionalChanges(),t.max=a.max(i),t.min=a.min(i),e.reverse?(i.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),r.prototype.convertTicksToLabels.call(t)}})}},poJ0:function(t,e,n){"use strict";var a=n("VKeD");e.subscribeToIterable=function(t){return function(e){for(var n=t[a.iterator]();;){var r=n.next();if(r.done){e.complete();break}if(e.next(r.value),e.closed)break}return"function"==typeof n.return&&e.add(function(){n.return&&n.return()}),e}}},psW0:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("zotm"),i=n("MGBS"),o=n("rPjj"),s=n("67Y/"),u=n("0/uQ");function c(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"function"==typeof e?function(a){return a.pipe(c(function(n,a){return Object(u.a)(t(n,a)).pipe(Object(s.a)(function(t,r){return e(n,t,a,r)}))},n))}:("number"==typeof e&&(n=e),function(e){return e.lift(new l(t,n))})}var l=function(){function t(t,e){void 0===e&&(e=Number.POSITIVE_INFINITY),this.project=t,this.concurrent=e}return t.prototype.call=function(t,e){return e.subscribe(new d(t,this.project,this.concurrent))},t}(),d=function(t){function e(e,n,a){void 0===a&&(a=Number.POSITIVE_INFINITY);var r=t.call(this,e)||this;return r.project=n,r.concurrent=a,r.hasCompleted=!1,r.buffer=[],r.active=0,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=new o.a(this,void 0,void 0);this.destination.add(a),Object(r.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},e}(i.a)},pshJ:function(t,e,n){"use strict";e.isFunction=function(t){return"function"==typeof t}},pugT:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("isby"),r=n("McSo"),i=n("2Bdj"),o=n("awvh"),s=function(){function t(t){this.closed=!1,this._parent=null,this._parents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}var e;return t.prototype.unsubscribe=function(){var t,e=!1;if(!this.closed){var n=this._parent,s=this._parents,c=this._unsubscribe,l=this._subscriptions;this.closed=!0,this._parent=null,this._parents=null,this._subscriptions=null;for(var d=-1,p=s?s.length:0;n;)n.remove(this),n=++d<p&&s[d]||null;if(Object(i.a)(c))try{c.call(this)}catch(h){e=!0,t=h instanceof o.a?u(h.errors):[h]}if(Object(a.a)(l))for(d=-1,p=l.length;++d<p;){var f=l[d];if(Object(r.a)(f))try{f.unsubscribe()}catch(h){e=!0,t=t||[],h instanceof o.a?t=t.concat(u(h.errors)):t.push(h)}}if(e)throw new o.a(t)}},t.prototype.add=function(e){var n=e;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)){var a=n;(n=new t)._subscriptions=[a]}break;default:if(!e)return t.EMPTY;throw new Error("unrecognized teardown "+e+" added to Subscription.")}if(n._addParent(this)){var r=this._subscriptions;r?r.push(n):this._subscriptions=[n]}return n},t.prototype.remove=function(t){var e=this._subscriptions;if(e){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}},t.prototype._addParent=function(t){var e=this._parent,n=this._parents;return e!==t&&(e?n?-1===n.indexOf(t)&&(n.push(t),!0):(this._parents=[t],!0):(this._parent=t,!0))},t.EMPTY=((e=new t).closed=!0,e),t}();function u(t){return t.reduce(function(t,e){return t.concat(e instanceof o.a?e.errors:e)},[])}},pxLl:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("t/Na"),i=n("F/XL"),o=n("psW0"),s=n("xTzq"),u=n("CcnG"),c=n("pL04"),l=function(){function t(t){this.http=t,this.url="api/perf_counters"}return t.prototype.list=function(){return this.http.get(this.url)},t.prototype.get=function(t,e){return this.http.get(this.url+"/"+t+"/"+e).pipe(Object(o.a)(function(t){return Object(i.a)(t.counters)}))},t.ngInjectableDef=u.defineInjectable({factory:function(){return new t(u.inject(r.c))},token:t,providedIn:c.a}),t=a.__decorate([s.a,a.__metadata("design:paramtypes",[r.c])],t)}()},q8Fl:function(t,e,n){"use strict";var a=n("RDha"),r=["animationstart","webkitAnimationStart"],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function o(t,e){var n=a.getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?Number(r[1]):void 0}var s=!!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 u(t,e,n){t.addEventListener(e,n,s)}function c(t,e,n){t.removeEventListener(e,n,s)}function l(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}}t.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,n="from{opacity:0.99}to{opacity:1}";t="@-webkit-keyframes chartjs-render-animation{"+n+"}@keyframes chartjs-render-animation{"+n+"}.chartjs-render-monitor{-webkit-animation:chartjs-render-animation 0.001s;animation:chartjs-render-animation 0.001s;}",e=this._style||document.createElement("style"),this._style||(this._style=e,t="/* Chart.js */\n"+t,e.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(e)),e.appendChild(document.createTextNode(t))},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 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=o(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=o(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 r=n[t];a.isNullOrUndef(r)?e.removeAttribute(t):e.setAttribute(t,r)}),a.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var o=t.canvas;if("resize"!==e){var s=n.$chartjs||(n.$chartjs={});u(o,e,(s.proxies||(s.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=i[t.type]||t.type,r=a.getRelativePosition(t,e);return l(n,e,r.x,r.y,t)}(e,t))})}else!function(t,e,n){var i,o,s,c,d=t.$chartjs||(t.$chartjs={}),p=d.resizer=function(t){var e=document.createElement("div"),n="chartjs-size-monitor",a="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=a,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+a+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+a+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var r=e.childNodes[0],i=e.childNodes[1];e._reset=function(){r.scrollLeft=1e6,r.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var o=function(){e._reset(),t()};return u(r,"scroll",o.bind(r,"expand")),u(i,"scroll",o.bind(i,"shrink")),e}((i=function(){if(d.resizer)return e(l("resize",n))},s=!1,c=[],function(){c=Array.prototype.slice.call(arguments),o=o||this,s||(s=!0,a.requestAnimFrame.call(window,function(){s=!1,i.apply(o,c)}))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),i=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};a.each(r,function(e){u(t,e,i)}),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,function(){if(d.resizer){var e=t.parentNode;e&&e!==p.parentNode&&e.insertBefore(p,e.firstChild),p._reset()}})}(o,n,t)},removeEventListener:function(t,e,n){var i,o,s,u=t.canvas;if("resize"!==e){var l=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];l&&c(u,e,l)}else s=(o=(i=u).$chartjs||{}).resizer,delete o.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(a.each(r,function(e){c(t,e,n)}),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(i),s&&s.parentNode&&s.parentNode.removeChild(s)}},a.addEvent=u,a.removeEvent=c},qwkt:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("ejVf")),a(n("aTeT")),a(n("WOoz")),a(n("lmqd")),a(n("ILDN")),a(n("n1nk"))},qzaf:function(t,e,n){"use strict";t.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},r8II:function(t,e,n){"use strict";e.decode=e.parse=n("YcCt"),e.encode=e.stringify=n("6MUB")},rLYq:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG");function s(t){var e=t.filter(function(t){return!!t});return e.length?e.some(function(t){return"number"!=typeof t})?null:e.reduce(function(t,e){return t+e}):null}function u(t){return null}e.DataTableSummaryRowComponent=function(){function t(){this.summaryRow={}}return t.prototype.ngOnChanges=function(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())},t.prototype.updateInternalColumns=function(){this._internalColumns=this.columns.map(function(t){return i({},t,{cellTemplate:t.summaryTemplate})})},t.prototype.updateValues=function(){var t=this;this.summaryRow={},this.columns.filter(function(t){return!t.summaryTemplate}).forEach(function(e){var n=t.rows.map(function(t){return t[e.prop]}),a=t.getSummaryFunction(e);t.summaryRow[e.prop]=e.pipe?e.pipe.transform(a(n)):a(n)})},t.prototype.getSummaryFunction=function(t){return void 0===t.summaryFunc?s:null===t.summaryFunc?u:t.summaryFunc},a([o.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([o.Input(),r("design:type",Array)],t.prototype,"columns",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([o.Component({selector:"datatable-summary-row",template:'\n  <datatable-body-row\n    *ngIf="summaryRow && _internalColumns"\n    tabindex="-1"\n    [innerWidth]="innerWidth"\n    [offsetX]="offsetX"\n    [columns]="_internalColumns"\n    [rowHeight]="rowHeight"\n    [row]="summaryRow"\n    [rowIndex]="-1">\n  </datatable-body-row>\n  ',host:{class:"datatable-summary-row"}})],t)}()},rPjj:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n,a){var r=t.call(this)||this;return r.parent=e,r.outerValue=n,r.outerIndex=a,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)},e.prototype._error=function(t){this.parent.notifyError(t,this),this.unsubscribe()},e.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},e}(n("FFOo").a)},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?e?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:e?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[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 a(t){return function(){return t+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}n("wd/R").defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(t,e){var n={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(e)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:a("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:a("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:a("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:a("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return a("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:e,y:"\u0440\u0456\u043a",yy:e},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0456":t<12?"\u0440\u0430\u043d\u043a\u0443":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-\u0439";case"D":return t+"-\u0433\u043e";default:return t}},week:{dow:1,doy:7}})}()},rdkg:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CVuo"),r={},i="undefined"!=typeof document?document.createElement("div").style:void 0,o=function(){var 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};e.\u02750=o;var s=o();e.getVendorPrefixedName=function(t){var e=a.camelCase(t);return r[e]||(void 0!==s&&void 0!==i[s.css+t]?r[e]=s.css+t:void 0!==i[t]&&(r[e]=t)),r[e]}},rpEJ:function(t,e,n){"use strict";n.d(e,"d",function(){return f}),n.d(e,"e",function(){return s}),n.d(e,"h",function(){return u}),n.d(e,"g",function(){return c}),n.d(e,"a",function(){return h}),n.d(e,"b",function(){return g}),n.d(e,"j",function(){return d}),n.d(e,"c",function(){return p}),n.d(e,"i",function(){return y}),n.d(e,"f",function(){return o});var a=n("CcnG"),r=function(){function t(t,e){this.open=t,this.close=e||t}return t.prototype.isManual=function(){return"manual"===this.open||"manual"===this.close},t}(),i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function o(t,e){void 0===e&&(e=i);var n=(t||"").trim();if(0===n.length)return[];var a=n.split(/\s+/).map(function(t){return t.split(":")}).map(function(t){var n=e[t[0]]||t;return new r(n[0],n[1])}),o=a.filter(function(t){return t.isManual()});if(o.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===o.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function s(t,e){var n=o(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;var r=[],i=[],s=function(){i.forEach(function(t){return r.push(t())}),i.length=0};return n.forEach(function(n){var o=n.open===n.close,u=o?e.toggle:e.show;o||i.push(function(){return t.listen(a,n.close,e.hide)}),r.push(t.listen(a,n.open,function(){return u(s)}))}),function(){r.forEach(function(t){return t()})}}function u(t,e){return e.outsideClick?t.listen("document","click",function(t){e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(function(e){return e.contains(t.target)})||e.hide()}):Function.prototype}function c(t,e){return e.outsideEsc?t.listen("document","keyup.esc",function(t){e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(function(e){return e.contains(t.target)})||e.hide()}):Function.prototype}var l,d="undefined"!=typeof window&&window||{},p=d.document;function f(){return void 0===d||(void 0===d.__theme?l?"bs3"===l:"bs3"===(l=function(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==d.__theme)}function h(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){var a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}var g=function(){function t(){}return t.reflow=function(t){},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=d),e.getComputedStyle(t)},t}(),m={},b="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||b||t in m||(m[t]=!0,console.warn(t))}},"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]}n("wd/R").defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_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}})}()},sLuX:function(t,e,n){"use strict";var a=n("CcnG"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{table:0}),(t()(),a["\u0275eld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["\u0275did"](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)}},sb0X:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("gIcY"),i=n("LvDl"),o=function(){function t(t){this.elRef=t,this.type="submit",this.submitAction=new a.EventEmitter,this.disabled=!1,this.loading=!1}return t.prototype.ngOnInit=function(){var t=this;this.form.statusChanges.subscribe(function(){i.has(t.form.errors,"cdSubmitButton")&&(t.loading=!1,i.unset(t.form.errors,"cdSubmitButton"),t.form instanceof r.a&&t.form.updateValueAndValidity())})},t.prototype.submit=function(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())},t.prototype.focusButton=function(){this.elRef.nativeElement.offsetParent.querySelector('button[type="'+this.type+'"]').focus()},t.prototype.focusInvalid=function(){var t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()},t}()},siIJ:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(e,n){void 0===n&&(n=t.now),this.SchedulerAction=e,this.now=n}return t.prototype.schedule=function(t,e,n){return void 0===e&&(e=0),new this.SchedulerAction(this,t).schedule(n,e)},t.now=function(){return Date.now()},t}()},sne2:function(t,e,n){"use strict";n.d(e,"c",function(){return s}),n.d(e,"e",function(){return a}),n.d(e,"a",function(){return r}),n.d(e,"b",function(){return u}),n.d(e,"d",function(){return c});var a,r,i=n("CcnG"),o=n("Jm/i"),s=function(){function t(){}return t.organization="ceph",t.projectName="Ceph Manager Dashboard",t.license="Free software (LGPL 2.1).",t}();!function(t){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"}(a||(a={})),function(t){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.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire"}(r||(r={}));var u=function(){function t(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.REMOVE=this.i18n("Remove"),this.EDIT=this.i18n("Edit"),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.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.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}return t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.a))},token:t,providedIn:"root"}),t}(),c=function(){function t(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.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}return t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.a))},token:t,providedIn:"root"}),t}()},sp3z:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".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:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(t){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===t},meridiem:function(t,e,n){return t<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(t){return"\u0e97\u0eb5\u0ec8"+t}})}()},svcd:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("K9Ia"),i=n("pugT"),o=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.value=null,e.hasNext=!1,e.hasCompleted=!1,e}return a.__extends(e,t),e.prototype._subscribe=function(e){return this.hasError?(e.error(this.thrownError),i.a.EMPTY):this.hasCompleted&&this.hasNext?(e.next(this.value),e.complete(),i.a.EMPTY):t.prototype._subscribe.call(this,e)},e.prototype.next=function(t){this.hasCompleted||(this.value=t,this.hasNext=!0)},e.prototype.error=function(e){this.hasCompleted||t.prototype.error.call(this,e)},e.prototype.complete=function(){this.hasCompleted=!0,this.hasNext&&t.prototype.next.call(this,this.value),t.prototype.complete.call(this)},e}(r.a)},syrc:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze");n("bpWZ"),n("czA5"),e.DataTableBodyRowComponent=function(){function t(t,e,n,a){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new i.EventEmitter,this.treeAction=new i.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=a.nativeElement,this._rowDiffer=t.find({}).create()}return Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._columns){var e=o.columnsByPin(this._columns);this._columnGroupWidths=o.columnGroupWidths(e,e)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cssClass",{get:function(){var 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){var e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnsTotalWidths",{get:function(){return this._columnGroupWidths.total},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()},t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.buildStylesByGroup=function(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n+this.scrollbarHelper.width),0)}return a},t.prototype.onActivate=function(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))},t.prototype.onMouseenter=function(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})},t.prototype.recalculateColumns=function(t){void 0===t&&(t=this.columns),this._columns=t;var e=o.columnsByPin(this._columns);this._columnsByPin=o.columnsByPinArr(this._columns),this._columnGroupWidths=o.columnGroupWidths(e,this._columns)},t.prototype.onTreeAction=function(){this.treeAction.emit()},a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([i.Input(),r("design:type",Boolean)],t.prototype,"expanded",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"group",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isSelected",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowIndex",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"treeStatus",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"cssClass",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([i.HostBinding("style.width.px"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"columnsTotalWidths",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.HostListener("mouseenter",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseenter",null),a([i.Component({selector:"datatable-body-row",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div\n      *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups"\n      class="datatable-row-{{colGroup.type}} datatable-row-group"\n      [ngStyle]="_groupStyles[colGroup.type]">\n      <datatable-body-cell\n        *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn"\n        tabindex="-1"\n        [row]="row"\n        [group]="group"\n        [expanded]="expanded"\n        [isSelected]="isSelected"\n        [rowIndex]="rowIndex"\n        [column]="column"\n        [rowHeight]="rowHeight"\n        [displayCheck]="displayCheck"\n        [treeStatus]="treeStatus"\n        (activate)="onActivate($event, ii)"\n        (treeAction)="onTreeAction()">\n      </datatable-body-cell>\n    </div>\n  '})],t)}()},"t/Na":function(t,e,n){"use strict";n.d(e,"m",function(){return E}),n.d(e,"p",function(){return j}),n.d(e,"q",function(){return F}),n.d(e,"n",function(){return P}),n.d(e,"o",function(){return M}),n.d(e,"b",function(){return p}),n.d(e,"g",function(){return d}),n.d(e,"c",function(){return C}),n.d(e,"a",function(){return R}),n.d(e,"d",function(){return Y}),n.d(e,"e",function(){return G}),n.d(e,"l",function(){return z}),n.d(e,"h",function(){return m}),n.d(e,"f",function(){return O}),n.d(e,"i",function(){return L}),n.d(e,"k",function(){return A}),n.d(e,"j",function(){return q});var a=n("mrSG"),r=n("CcnG"),i=n("F/XL"),o=n("6blF"),s=n("Phjn"),u=n("VnD/"),c=n("67Y/"),l=n("Ip0R"),d=function(){return function(){}}(),p=function(){return function(){}}(),f=function(){function t(t){var e=this;this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?function(){e.headers=new Map,t.split("\n").forEach(function(t){var n=t.indexOf(":");if(n>0){var a=t.slice(0,n),r=a.toLowerCase(),i=t.slice(n+1).trim();e.maybeSetNormalizedName(a,r),e.headers.has(r)?e.headers.get(r).push(i):e.headers.set(r,[i])}})}:function(){e.headers=new Map,Object.keys(t).forEach(function(n){var a=t[n],r=n.toLowerCase();"string"==typeof a&&(a=[a]),a.length>0&&(e.headers.set(r,a),e.maybeSetNormalizedName(n,r))})}:this.headers=new Map}return t.prototype.has=function(t){return this.init(),this.headers.has(t.toLowerCase())},t.prototype.get=function(t){this.init();var e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null},t.prototype.keys=function(){return this.init(),Array.from(this.normalizedNames.values())},t.prototype.getAll=function(t){return this.init(),this.headers.get(t.toLowerCase())||null},t.prototype.append=function(t,e){return this.clone({name:t,value:e,op:"a"})},t.prototype.set=function(t,e){return this.clone({name:t,value:e,op:"s"})},t.prototype.delete=function(t,e){return this.clone({name:t,value:e,op:"d"})},t.prototype.maybeSetNormalizedName=function(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)},t.prototype.init=function(){var e=this;this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(function(t){return e.applyUpdate(t)}),this.lazyUpdate=null))},t.prototype.copyFrom=function(t){var e=this;t.init(),Array.from(t.headers.keys()).forEach(function(n){e.headers.set(n,t.headers.get(n)),e.normalizedNames.set(n,t.normalizedNames.get(n))})},t.prototype.clone=function(e){var n=new t;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([e]),n},t.prototype.applyUpdate=function(t){var e=t.name.toLowerCase();switch(t.op){case"a":case"s":var n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);var r=("a"===t.op?this.headers.get(e):void 0)||[];r.push.apply(r,Object(a.__spread)(n)),this.headers.set(e,r);break;case"d":var i=t.value;if(i){var o=this.headers.get(e);if(!o)return;0===(o=o.filter(function(t){return-1===i.indexOf(t)})).length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,o)}else this.headers.delete(e),this.normalizedNames.delete(e)}},t.prototype.forEach=function(t){var e=this;this.init(),Array.from(this.normalizedNames.keys()).forEach(function(n){return t(e.normalizedNames.get(n),e.headers.get(n))})},t}(),h=function(){function t(){}return t.prototype.encodeKey=function(t){return g(t)},t.prototype.encodeValue=function(t){return g(t)},t.prototype.decodeKey=function(t){return decodeURIComponent(t)},t.prototype.decodeValue=function(t){return decodeURIComponent(t)},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,"/")}var m=function(){function t(t){void 0===t&&(t={});var e,n,r,i=this;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=(e=t.fromString,n=this.encoder,r=new Map,e.length>0&&e.split("&").forEach(function(t){var e=t.indexOf("="),i=Object(a.__read)(-1==e?[n.decodeKey(t),""]:[n.decodeKey(t.slice(0,e)),n.decodeValue(t.slice(e+1))],2),o=i[0],s=i[1],u=r.get(o)||[];u.push(s),r.set(o,u)}),r)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(function(e){var n=t.fromObject[e];i.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}return t.prototype.has=function(t){return this.init(),this.map.has(t)},t.prototype.get=function(t){this.init();var e=this.map.get(t);return e?e[0]:null},t.prototype.getAll=function(t){return this.init(),this.map.get(t)||null},t.prototype.keys=function(){return this.init(),Array.from(this.map.keys())},t.prototype.append=function(t,e){return this.clone({param:t,value:e,op:"a"})},t.prototype.set=function(t,e){return this.clone({param:t,value:e,op:"s"})},t.prototype.delete=function(t,e){return this.clone({param:t,value:e,op:"d"})},t.prototype.toString=function(){var t=this;return this.init(),this.keys().map(function(e){var n=t.encoder.encodeKey(e);return t.map.get(e).map(function(e){return n+"="+t.encoder.encodeValue(e)}).join("&")}).join("&")},t.prototype.clone=function(e){var n=new t({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat([e]),n},t.prototype.init=function(){var t=this;null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(function(e){return t.map.set(e,t.cloneFrom.map.get(e))}),this.updates.forEach(function(e){switch(e.op){case"a":case"s":var n=("a"===e.op?t.map.get(e.param):void 0)||[];n.push(e.value),t.map.set(e.param,n);break;case"d":if(void 0===e.value){t.map.delete(e.param);break}var a=t.map.get(e.param)||[],r=a.indexOf(e.value);-1!==r&&a.splice(r,1),a.length>0?t.map.set(e.param,a):t.map.delete(e.param)}}),this.cloneFrom=null)},t}();function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function y(t){return"undefined"!=typeof Blob&&t instanceof Blob}function v(t){return"undefined"!=typeof FormData&&t instanceof FormData}var x=function(){function t(t,e,n,a){var 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){var i=this.params.toString();if(0===i.length)this.urlWithParams=e;else{var o=e.indexOf("?");this.urlWithParams=e+(-1===o?"?":o<e.length-1?"&":"")+i}}else this.params=new m,this.urlWithParams=e}return t.prototype.serializeBody=function(){return null===this.body?null:b(this.body)||y(this.body)||v(this.body)||"string"==typeof this.body?this.body:this.body instanceof m?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()},t.prototype.detectContentTypeHeader=function(){return null===this.body?null:v(this.body)?null:y(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof m?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null},t.prototype.clone=function(e){void 0===e&&(e={});var n=e.method||this.method,a=e.url||this.url,r=e.responseType||this.responseType,i=void 0!==e.body?e.body:this.body,o=void 0!==e.withCredentials?e.withCredentials:this.withCredentials,s=void 0!==e.reportProgress?e.reportProgress:this.reportProgress,u=e.headers||this.headers,c=e.params||this.params;return void 0!==e.setHeaders&&(u=Object.keys(e.setHeaders).reduce(function(t,n){return t.set(n,e.setHeaders[n])},u)),e.setParams&&(c=Object.keys(e.setParams).reduce(function(t,n){return t.set(n,e.setParams[n])},c)),new t(n,a,i,{params:c,headers:u,reportProgress:s,responseType:r,withCredentials:o})},t}(),_=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}({}),T=function(){return function(t,e,n){void 0===e&&(e=200),void 0===n&&(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}}(),w=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;return n.type=_.ResponseHeader,n}return Object(a.__extends)(e,t),e.prototype.clone=function(t){return void 0===t&&(t={}),new e({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})},e}(T),S=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;return n.type=_.Response,n.body=void 0!==e.body?e.body:null,n}return Object(a.__extends)(e,t),e.prototype.clone=function(t){return void 0===t&&(t={}),new e({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})},e}(T),O=function(t){function e(e){var n=t.call(this,e,0,"Unknown Error")||this;return n.name="HttpErrorResponse",n.ok=!1,n.message=n.status>=200&&n.status<300?"Http failure during parsing for "+(e.url||"(unknown url)"):"Http failure response for "+(e.url||"(unknown url)")+": "+e.status+" "+e.statusText,n.error=e.error||null,n}return Object(a.__extends)(e,t),e}(T);function k(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}var C=function(){function t(t){this.handler=t}return t.prototype.request=function(t,e,n){var a,r=this;if(void 0===n&&(n={}),t instanceof x)a=t;else{var o;o=n.headers instanceof f?n.headers:new f(n.headers);var l=void 0;n.params&&(l=n.params instanceof m?n.params:new m({fromObject:n.params})),a=new x(t,e,void 0!==n.body?n.body:null,{headers:o,params:l,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}var d=Object(i.a)(a).pipe(Object(s.a)(function(t){return r.handler.handle(t)}));if(t instanceof x||"events"===n.observe)return d;var p=d.pipe(Object(u.a)(function(t){return t instanceof S}));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return p.pipe(Object(c.a)(function(t){if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return p.pipe(Object(c.a)(function(t){if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return p.pipe(Object(c.a)(function(t){if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return p.pipe(Object(c.a)(function(t){return t.body}))}case"response":return p;default:throw new Error("Unreachable: unhandled observe type "+n.observe+"}")}},t.prototype.delete=function(t,e){return void 0===e&&(e={}),this.request("DELETE",t,e)},t.prototype.get=function(t,e){return void 0===e&&(e={}),this.request("GET",t,e)},t.prototype.head=function(t,e){return void 0===e&&(e={}),this.request("HEAD",t,e)},t.prototype.jsonp=function(t,e){return this.request("JSONP",t,{params:(new m).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})},t.prototype.options=function(t,e){return void 0===e&&(e={}),this.request("OPTIONS",t,e)},t.prototype.patch=function(t,e,n){return void 0===n&&(n={}),this.request("PATCH",t,k(n,e))},t.prototype.post=function(t,e,n){return void 0===n&&(n={}),this.request("POST",t,k(n,e))},t.prototype.put=function(t,e,n){return void 0===n&&(n={}),this.request("PUT",t,k(n,e))},t}(),I=function(){function t(t,e){this.next=t,this.interceptor=e}return t.prototype.handle=function(t){return this.interceptor.intercept(t,this.next)},t}(),R=new r.InjectionToken("HTTP_INTERCEPTORS"),N=function(){function t(){}return t.prototype.intercept=function(t,e){return e.handle(t)},t}(),D=/^\)\]\}',?\n/,A=function(){return function(){}}(),E=function(){function t(){}return t.prototype.build=function(){return new XMLHttpRequest},t}(),L=function(){function t(t){this.xhrFactory=t}return t.prototype.handle=function(t){var e=this;if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new o.a(function(n){var a=e.xhrFactory.build();if(a.open(t.method,t.urlWithParams),t.withCredentials&&(a.withCredentials=!0),t.headers.forEach(function(t,e){return a.setRequestHeader(t,e.join(","))}),t.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){var r=t.detectContentTypeHeader();null!==r&&a.setRequestHeader("Content-Type",r)}if(t.responseType){var i=t.responseType.toLowerCase();a.responseType="json"!==i?i:"text"}var o=t.serializeBody(),s=null,u=function(){if(null!==s)return s;var e=1223===a.status?204:a.status,n=a.statusText||"OK",r=new f(a.getAllResponseHeaders()),i=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(a)||t.url;return s=new w({headers:r,status:e,statusText:n,url:i})},c=function(){var e=u(),r=e.headers,i=e.status,o=e.statusText,s=e.url,c=null;204!==i&&(c=void 0===a.response?a.responseText:a.response),0===i&&(i=c?200:0);var l=i>=200&&i<300;if("json"===t.responseType&&"string"==typeof c){var d=c;c=c.replace(D,"");try{c=""!==c?JSON.parse(c):null}catch(p){c=d,l&&(l=!1,c={error:p,text:c})}}l?(n.next(new S({body:c,headers:r,status:i,statusText:o,url:s||void 0})),n.complete()):n.error(new O({error:c,headers:r,status:i,statusText:o,url:s||void 0}))},l=function(t){var e=u().url,r=new O({error:t,status:a.status||0,statusText:a.statusText||"Unknown Error",url:e||void 0});n.error(r)},d=!1,p=function(e){d||(n.next(u()),d=!0);var r={type:_.DownloadProgress,loaded:e.loaded};e.lengthComputable&&(r.total=e.total),"text"===t.responseType&&a.responseText&&(r.partialText=a.responseText),n.next(r)},h=function(t){var e={type:_.UploadProgress,loaded:t.loaded};t.lengthComputable&&(e.total=t.total),n.next(e)};return a.addEventListener("load",c),a.addEventListener("error",l),t.reportProgress&&(a.addEventListener("progress",p),null!==o&&a.upload&&a.upload.addEventListener("progress",h)),a.send(o),n.next({type:_.Sent}),function(){a.removeEventListener("error",l),a.removeEventListener("load",c),t.reportProgress&&(a.removeEventListener("progress",p),null!==o&&a.upload&&a.upload.removeEventListener("progress",h)),a.abort()}})},t}(),P=new r.InjectionToken("XSRF_COOKIE_NAME"),M=new r.InjectionToken("XSRF_HEADER_NAME"),q=function(){return function(){}}(),j=function(){function t(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}return t.prototype.getToken=function(){if("server"===this.platform)return null;var t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=Object(l["\u0275parseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken},t}(),F=function(){function t(t,e){this.tokenService=t,this.headerName=e}return t.prototype.intercept=function(t,e){var n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);var 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)},t}(),z=function(){function t(t,e){this.backend=t,this.injector=e,this.chain=null}return t.prototype.handle=function(t){if(null===this.chain){var e=this.injector.get(R,[]);this.chain=e.reduceRight(function(t,e){return new I(t,e)},this.backend)}return this.chain.handle(t)},t}(),G=function(){function t(){}var e;return e=t,t.disable=function(){return{ngModule:e,providers:[{provide:F,useClass:N}]}},t.withOptions=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[t.cookieName?{provide:P,useValue:t.cookieName}:[],t.headerName?{provide:M,useValue:t.headerName}:[]]}},t}(),Y=function(){return function(){}}()},"t/zF":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t,e){this.name=t,this.metadata=e}}()},t1N5:function(t,e){function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,o=Math.min(a,r,i),s=Math.max(a,r,i),u=s-o;return s==o?e=0:a==s?e=(r-i)/u:r==s?e=2+(i-a)/u:i==s&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?u/(s+o):u/(2-s-o)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],o=Math.min(a,r,i),s=Math.max(a,r,i),u=s-o;return n=0==s?0:u/s*1e3/10,s==o?e=0:a==s?e=(r-i)/u:r==s?e=2+(i-a)/u:i==s&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/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 o(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 s(t){return S[JSON.stringify(t)]}function u(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 c(t){var e=u(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 l(t){var e,n,a,r,i,o=t[0]/360,s=t[1]/100,u=t[2]/100;if(0==s)return[i=255*u,i,i];e=2*u-(n=u<.5?u*(1+s):u+s-u*s),r=[0,0,0];for(var c=0;c<3;c++)(a=o+1/3*-(c-1))<0&&a++,a>1&&a--,r[c]=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 d(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),o=255*a*(1-n),s=255*a*(1-n*i),u=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,u,o];case 1:return[s,a,o];case 2:return[o,a,u];case 3:return[o,s,a];case 4:return[u,o,a];case 5:return[a,o,s]}}function p(t){var e,n,a,i,o=t[0]/360,s=t[1]/100,u=t[2]/100,c=s+u;switch(c>1&&(s/=c,u/=c),a=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(a=1-a),i=s+a*((n=1-u)-s),e){default:case 6:case 0:r=n,g=i,b=s;break;case 1:r=i,g=n,b=s;break;case 2:r=s,g=n,b=i;break;case 3:r=s,g=i,b=n;break;case 4:r=i,g=s,b=n;break;case 5:r=n,g=s,b=i}return[255*r,255*g,255*b]}function f(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 h(t){var e,n,a,r=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*r+1.8758*i+.0415*o,a=.0557*r+-.204*i+1.057*o,e=(e=3.2406*r+-1.5372*i+-.4986*o)>.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],o=t[1],s=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*(o/500+r-16/116)/7.787:95.047*Math.pow(o/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-s/200-16/116)/7.787:108.883*Math.pow(r-s/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 h(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]}t.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:u,rgb2lab:c,rgb2lch:function(t){return v(c(t))},hsl2rgb:l,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(l(t))},hsl2cmyk:function(t){return o(l(t))},hsl2keyword:function(t){return s(l(t))},hsv2rgb:d,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(d(t))},hsv2cmyk:function(t){return o(d(t))},hsv2keyword:function(t){return s(d(t))},hwb2rgb:p,hwb2hsl:function(t){return n(p(t))},hwb2hsv:function(t){return a(p(t))},hwb2cmyk:function(t){return o(p(t))},hwb2keyword:function(t){return s(p(t))},cmyk2rgb:f,cmyk2hsl:function(t){return n(f(t))},cmyk2hsv:function(t){return a(f(t))},cmyk2hwb:function(t){return i(f(t))},cmyk2keyword:function(t){return s(f(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 o(T(t))},keyword2lab:function(t){return c(T(t))},keyword2xyz:function(t){return u(T(t))},xyz2rgb:h,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))}};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]},S={};for(var O in w)S[JSON.stringify(w[O])]=O},t9fZ:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("b7mW"),o=n("G5J1");function s(t){return function(e){return 0===t?Object(o.b)():e.lift(new u(t))}}var u=function(){function t(t){if(this.total=t,this.total<0)throw new i.a}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.total))},t}(),c=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))},e}(r.a)},tAZD:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##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}]})},tFKq:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG"),s=n("qwkt"),u=n("5tze");e.DataTableHeaderComponent=function(){function t(t){this.cd=t,this.sort=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.select=new o.EventEmitter,this.columnContextmenu=new o.EventEmitter(!1),this._styleByGroup={left:{},center:{},right:{}}}return Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._innerWidth=t,this._columns){var e=u.columnsByPin(this._columns);this._columnGroupWidths=u.columnGroupWidths(e,this._columns),this.setStylesByGroup()}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerHeight",{get:function(){return this._headerHeight},set:function(t){this._headerHeight="auto"!==t?t+"px":t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=u.columnsByPin(t);this._columnsByPin=u.columnsByPinArr(t),this._columnGroupWidths=u.columnGroupWidths(e,t),this.setStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.setStylesByGroup()},enumerable:!0,configurable:!0}),t.prototype.onLongPressStart=function(t){var e=t.event;t.model.dragging=!0,this.dragEventTarget=e},t.prototype.onLongPressEnd=function(t){var e=this,n=t.model;this.dragEventTarget=t.event,setTimeout(function(){var t=e._columns.find(function(t){return t.$$id===n.$$id});t&&(t.dragging=!1)},5)},Object.defineProperty(t.prototype,"headerWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.onColumnResized=function(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})},t.prototype.onColumnReordered=function(t){var e=t.prevIndex,n=t.newIndex,a=t.model,r=this.getColumn(n);r.isTarget=!1,r.targetMarkerContext=void 0,this.reorder.emit({column:a,prevValue:e,newValue:n})},t.prototype.onTargetChanged=function(t){var e=t.prevIndex,n=t.newIndex,a=t.initialIndex;if(e||0===e){var r=this.getColumn(e);r.isTarget=!1,r.targetMarkerContext=void 0}if(n||0===n){var i=this.getColumn(n);i.isTarget=!0,a!==n&&(i.targetMarkerContext={class:"targetMarker ".concat(a>n?"dragFromRight":"dragFromLeft")})}},t.prototype.getColumn=function(t){var e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];var n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]},t.prototype.onSort=function(t){var e=t.column,n=t.prevValue,a=t.newValue;if(!e.dragging){var r=this.calcNewSorts(e,n,a);this.sort.emit({sorts:r,column:e,prevValue:n,newValue:a})}},t.prototype.calcNewSorts=function(t,e,n){var a=0;this.sorts||(this.sorts=[]);var r=this.sorts.map(function(e,n){return(e=i({},e)).prop===t.prop&&(a=n),e});return void 0===n?r.splice(a,1):e?r[a].dir=n:(this.sortType===s.SortType.single&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r},t.prototype.setStylesByGroup=function(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.cd.detectChanges()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?u.translateXY(n,-1*this.offsetX,0):"right"===t&&u.translateXY(n,-1*(e.total-this.innerWidth),0),n},a([o.Input(),r("design:type",Object)],t.prototype,"sortAscendingIcon",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"sortDescendingIcon",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"dealsWithGroup",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([o.Input(),r("design:type",Array)],t.prototype,"sorts",void 0),a([o.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"allRowsSelected",void 0),a([o.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"reorderable",void 0),a([o.HostBinding("style.height"),o.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"headerHeight",null),a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"sort",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"resize",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"select",void 0),a([o.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([o.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"headerWidth",null),a([o.Component({selector:"datatable-header",template:'\n    <div\n      orderable\n      (reorder)="onColumnReordered($event)"\n      (targetChanged)="onTargetChanged($event)"\n      [style.width.px]="_columnGroupWidths.total"\n      class="datatable-header-inner">\n      <div\n        *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups"\n        [class]="\'datatable-row-\' + colGroup.type"\n        [ngStyle]="_styleByGroup[colGroup.type]">\n        <datatable-header-cell\n          *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn"\n          resizeable\n          [resizeEnabled]="column.resizeable"\n          (resize)="onColumnResized($event, column)"\n          long-press\n          [pressModel]="column"\n          [pressEnabled]="reorderable && column.draggable"\n          (longPressStart)="onLongPressStart($event)"\n          (longPressEnd)="onLongPressEnd($event)"\n          draggable\n          [dragX]="reorderable && column.draggable && column.dragging"\n          [dragY]="false"\n          [dragModel]="column"\n          [dragEventTarget]="dragEventTarget"\n          [headerHeight]="headerHeight"\n          [isTarget]="column.isTarget"\n          [targetMarkerTemplate]="targetMarkerTemplate"\n          [targetMarkerContext]="column.targetMarkerContext"\n          [column]="column"\n          [sortType]="sortType"\n          [sorts]="sorts"\n          [selectionType]="selectionType"\n          [sortAscendingIcon]="sortAscendingIcon"\n          [sortDescendingIcon]="sortDescendingIcon"\n          [allRowsSelected]="allRowsSelected"\n          (sort)="onSort($event)"\n          (select)="select.emit($event)"\n          (columnContextmenu)="columnContextmenu.emit($event)">\n        </datatable-header-cell>\n      </div>\n    </div>\n  ',host:{class:"datatable-header"},changeDetection:o.ChangeDetectionStrategy.OnPush})],t)}()},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]}n("wd/R").defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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}})}()},tKjC:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("p0ib");a.a.prototype.merge=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.lift.call(r.a.apply(void 0,[this].concat(t)))}},tNVB:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("xMyE"),r=n("3fWJ"),i=function(t){return void 0===t&&(t=o),Object(a.a)({hasValue:!1,next:function(){this.hasValue=!0},complete:function(){if(!this.hasValue)throw t()}})};function o(){return new r.a}},tT3J:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".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\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}()},tUCv:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},tjFV:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("fELs");t.exports={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=r.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?r.merge({},[a.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=r.extend(this.defaults[t],e))},addScalesToLayout:function(t){r.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,i.addBox(t,e)})}}},ty8c:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("1PfE");e.NodeEditableDirective=function(){function t(t,e){this.renderer=t,this.elementRef=e,this.valueChanged=new a.EventEmitter(!1)}return t.prototype.ngOnInit=function(){var t=this.elementRef.nativeElement;t&&t.focus(),this.renderer.setProperty(t,"value",this.nodeValue)},t.prototype.applyNewValue=function(t){this.valueChanged.emit({type:"keyup",value:t})},t.prototype.applyNewValueByLoosingFocus=function(t){this.valueChanged.emit({type:"blur",value:t})},t.prototype.cancelEditing=function(){this.valueChanged.emit({type:"keyup",value:this.nodeValue,action:r.NodeEditableEventAction.Cancel})},t.decorators=[{type:a.Directive,args:[{selector:"[nodeEditable]"}]}],t.propDecorators={nodeValue:[{type:a.Input,args:["nodeEditable"]}],valueChanged:[{type:a.Output}],applyNewValue:[{type:a.HostListener,args:["keyup.enter",["$event.target.value"]]}],applyNewValueByLoosingFocus:[{type:a.HostListener,args:["blur",["$event.target.value"]]}],cancelEditing:[{type:a.HostListener,args:["keyup.esc"]}]},t}()},u0Op:function(t,e,n){"use strict";var a=n("TC34"),r={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-r.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*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};t.exports={effects:r},a.easingEffects=r},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]}n("wd/R").defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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}})}()},u67D:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("En8+"),r=function(t){return function(e){for(var n=t[a.a]();;){var r=n.next();if(r.done){e.complete();break}if(e.next(r.value),e.closed)break}return"function"==typeof n.return&&e.add(function(){n.return&&n.return()}),e}}},uEye:function(t,e,n){!function(t){"use strict";n("wd/R").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\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".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\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] 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\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},uIqm:function(t,e,n){"use strict";var a=n("CcnG"),r=n("y9jh"),i=n("LvDl"),o=n("gI3B"),s=n("6blF"),u=n("x38r"),c=function(){return function(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}(),l=n("vCyI");n.d(e,"a",function(){return d});var d=function(){function t(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.toolHeader=!0,this.header=!0,this.footer=!0,this.limit=10,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.autoSave=!0,this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.selection=new l.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:"i fa fa-angle-double-left",pagerRightArrow:"i fa fa-angle-double-right",pagerPrevious:"i fa fa-angle-left",pagerNext:"i fa fa-angle-right"},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1}return t.prototype.ngOnInit=function(){var t=this;if(window.addEventListener("mouseenter",function(t){t.stopPropagation()},!0),this._addTemplates(),!this.sorts){var e=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(e?this.identifier:this.columns[0].prop+""),e||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(function(e){e.cellTransformation&&(e.cellTemplate=t.cellTemplates[e.cellTransformation]),e.flexGrow||(e.flexGrow=e.prop+""===t.identifier?1:2),e.resizeable||(e.resizeable=!1)}),this.filterHiddenColumns(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(function(){t.reloadSubscriber=Object(o.a)(0,t.autoReload).subscribe(function(){t.ngZone.run(function(){return t.reloadData()})})}):this.reloadData()},t.prototype.initUserConfig=function(){var t=this;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(function(e,n){e.isHidden=t.userConfig.columns[n].isHidden}):this.updateUserColumns()},t.prototype._calculateUniqueTableName=function(t){var e=function(t){if(!i.isString(t))return 0;for(var e=0,n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce(function(t,n,a){return(e(n.prop)+e(n.name))*(a+1)+t},0).toString()},t.prototype._loadUserConfig=function(){var t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))},t.prototype._initUserConfigAutoSave=function(){var t=s.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))},t.prototype._initUserConfigProxy=function(t){this.userConfig=new Proxy(this.userConfig,{set:function(e,n,a){return e[n]=a,t.next(e),!0}})},t.prototype._saveUserConfig=function(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))},t.prototype.updateUserColumns=function(){this.userConfig.columns=this.columns.map(function(t){return{prop:t.prop,name:t.name,isHidden:!!t.isHidden}})},t.prototype.filterHiddenColumns=function(){this.tableColumns=this.columns.filter(function(t){return!t.isHidden})},t.prototype.ngOnDestroy=function(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()},t.prototype.ngAfterContentChecked=function(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate())},t.prototype._addTemplates=function(){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},t.prototype.useCustomClass=function(t){if(!this.customCss)throw new Error("Custom classes are not set!");var e=Object.keys(this.customCss),n=Object.values(this.customCss).map(function(n,a){return(i.isFunction(n)&&n(t)||n===t)&&e[a]}).filter(function(t){return t}).join(" ");return i.isEmpty(n)?void 0:n},t.prototype.ngOnChanges=function(){this.useData()},t.prototype.setLimit=function(t){var e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)},t.prototype.reloadData=function(){var t=this;if(!this.updating){this.loadingError=!1;var e=new c(function(){t.loadingError=e.errorConfig.displayError,e.errorConfig.resetData&&(t.data=[]),t.useData()});this.fetchData.emit(e),this.updating=!0}},t.prototype.refreshBtn=function(){this.loadingIndicator=!0,this.reloadData()},t.prototype.rowIdentity=function(){var t=this;return function(e){var n=e[t.identifier];if(i.isUndefined(n))throw new Error('Wrong identifier "'+t.identifier+'" -> "'+n+'"');return n}},t.prototype.useData=function(){this.data&&(this.search.length>0?this.updateFilter():this.rows=this.data.slice(),this.reset(),this.updateSelected())},t.prototype.reset=function(){this.loadingIndicator=!1,this.updating=!1},t.prototype.updateSelected=function(){var t=this;if("never"!==this.updateSelectionOnRefresh){var e=[];this.selection.selected.forEach(function(n){for(var a=0,r=t.data;a<r.length;a++){var i=r[a];n[t.identifier]===i[t.identifier]&&e.push(i)}}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,e)||(this.selection.selected=e,this.onSelect())}},t.prototype.onSelect=function(){this.selection.update(),this.updateSelection.emit(i.clone(this.selection))},t.prototype.toggleColumn=function(t){var e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,function(t){return t.prop===e}).isHidden=n,this.updateColumns())},t.prototype.updateColumns=function(){this.updateUserColumns(),this.filterHiddenColumns();var t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,function(e){return e.prop===t})||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop),this.table.onColumnSort({sorts:this.userConfig.sorts})),this.table.recalculate(),this.cdRef.detectChanges()},t.prototype.createSortingDefinition=function(t){return[{prop:t,dir:r.SortDirection.asc}]},t.prototype.changeSorting=function(t){this.userConfig.sorts=t.sorts},t.prototype.updateFilter=function(t){void 0===t&&(t=!1),t&&(this.search="");var e=this.search.toLowerCase().replace(/,/g,""),n=this.columns.filter(function(t){return t.cellTransformation!==u.a.sparkline});e.match(/['"][^'"]+['"]/)&&(e=e.replace(/['"][^'"]+['"]/g,function(t){return t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+")})),this.rows=this.subSearch(this.data,e.split(" ").filter(function(t){return t.length>0}),n),this.table.offset=0},t.prototype.subSearch=function(t,e,n){if(0===e.length||0===t.length)return t;var a=e.pop().replace("+"," ").split(":"),r=n.slice();return 2===a.length&&(n=r.filter(function(t){return-1!==t.name.toLowerCase().indexOf(a[0])})),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)},t.prototype.basicDataSearch=function(t,e,n){return 0===t.length?e:e.filter(function(e){return n.filter(function(n){var a=i.get(e,n.prop);return i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),!i.isUndefined(a)&&!i.isNull(a)&&(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),-1!==a.toLowerCase().indexOf(t))}).length>0})},t.prototype.getRowClass=function(){var t=this;return function(){return{clickable:!i.isUndefined(t.selectionType)}}},t}()},uKs4:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.VisibilityDirective=function(){function t(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new i.EventEmitter}return t.prototype.ngOnInit=function(){this.runCheck()},t.prototype.ngOnDestroy=function(){clearTimeout(this.timeout)},t.prototype.onVisibilityChange=function(){var t=this;this.zone.run(function(){t.isVisible=!0,t.visible.emit(!0)})},t.prototype.runCheck=function(){var t=this,e=function(){var n=t.element.nativeElement;n.offsetHeight&&n.offsetWidth?(clearTimeout(t.timeout),t.onVisibilityChange()):(clearTimeout(t.timeout),t.zone.runOutsideAngular(function(){t.timeout=setTimeout(function(){return e()},50)}))};this.timeout=setTimeout(function(){return e()})},a([i.HostBinding("class.visible"),r("design:type",Boolean)],t.prototype,"isVisible",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"visible",void 0),a([i.Directive({selector:"[visibilityObserver]"})],t)}()},uMaO:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n){var a=t.call(this)||this;return a.subject=e,a.subscriber=n,a.closed=!1,a}return a.__extends(e,t),e.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var t=this.subject,e=t.observers;if(this.subject=null,e&&0!==e.length&&!t.isStopped&&!t.closed){var n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},e}(n("pugT").a)},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".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\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_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:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(t,e){return e?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},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});var a=function(){function t(){}return t.prototype.transform=function(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}},t}()},ufoC:function(t,e,n){"use strict";var a;!function(t){t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User"}(a||(a={}));var r=n("CcnG"),i=n("Jm/i");n.d(e,"a",function(){return u});var o=function(){return function(t,e,n){this.running=t,this.failure=e,this.success=n}}(),s=function(){function t(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||function(){return{}}}return t.prototype.failure=function(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})},t.prototype.running=function(t){return this.operation.running+" "+this.involves(t)},t.prototype.success=function(t){return this.operation.success+" "+this.involves(t)},t}(),u=function(){function t(t){var e=this;this.i18n=t,this.defaultMessage=this.newTaskMessage(new o(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),function(t){return t&&(a[t.component]||t.component)||e.i18n("unknown task")},function(){return{}}),this.commonOperations={create:new o(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new o(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted"))},this.rbd={default:function(t){return e.i18n("RBD '{{id}}'",{id:t.pool_name+"/"+t.image_name})},child:function(t){return e.i18n("RBD '{{id}}'",{id:t.child_pool_name+"/"+t.child_image_name})},destination:function(t){return e.i18n("RBD '{{id}}'",{id:t.dest_pool_name+"/"+t.dest_image_name})},snapshot:function(t){return e.i18n("RBD snapshot '{{id}}'",{id:t.pool_name+"/"+t.image_name+"@"+t.snapshot_name})}},this.rbd_mirroring={pool:function(t){return e.i18n("mirror mode for pool '{{id}}'",{id:""+t.pool_name})},pool_peer:function(t){return e.i18n("mirror peer for pool '{{id}}'",{id:""+t.pool_name})}},this.grafana={update_dashboards:function(){return e.i18n("all dashboards")}},this.messages={"pool/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.pool(t)},function(t){return{17:e.i18n("Name is already used by {{pool_name}}.",{pool_name:e.pool(t)})}}),"pool/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.pool(t)},function(t){return{17:e.i18n("Name is already used by {{pool_name}}.",{pool_name:e.pool(t)})}}),"pool/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.pool(t)}),"ecp/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.ecp(t)},function(t){return{17:e.i18n("Name is already used by {{name}}.",{name:e.ecp(t)})}}),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.ecp(t)}),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.default,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.default(t)})}}),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.default(t)})}}),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,function(t){return{39:e.i18n("{{rbd_name}} contains snapshots.",{rbd_name:e.rbd.default(t)})}}),"rbd/clone":this.newTaskMessage(new o(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.child(t)}),22:e.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:e.rbd.child(t)})}}),"rbd/copy":this.newTaskMessage(new o(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.destination(t)})}}),"rbd/flatten":this.newTaskMessage(new o(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,function(t){return{17:e.i18n("Name is already used by {{snap_name}}.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,function(t){return{16:e.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,function(t){return{16:e.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/rollback":this.newTaskMessage(new o(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new o(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),function(t){return e.i18n("image '{{id}}' to trash",{id:t.pool_name+"/"+t.image_name})},function(){return{2:e.i18n("Could not find image.")}}),"rbd/trash/restore":this.newTaskMessage(new o(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),function(t){return e.i18n("image '{{id}}' into '{{new_id}}'",{id:t.pool_name+"@"+t.image_id,new_id:t.pool_name+"/"+t.new_image_name})},function(t){return{17:e.i18n("Image name '{{id}}' is already in use.",{id:t.pool_name+"/"+t.new_image_name})}}),"rbd/trash/remove":this.newTaskMessage(new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),function(t){return e.i18n("image '{{id}}'",{id:t.pool_name+"/"+t.image_name+"@"+t.image_id})}),"rbd/trash/purge":this.newTaskMessage(new o(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),function(t){var n=e.i18n("all pools");return t.pool_name&&(n="'"+t.pool_name+"'"),e.i18n("images from {{message}}",{message:n})}),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,function(){return{16:e.i18n("Cannot disable mirroring because it contains a peer.")}}),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,function(){return{}}),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,function(){return{}}),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,function(){return{}}),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.iscsiTarget(t)}),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.iscsiTarget(t)}),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.iscsiTarget(t)}),"nfs/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.nfs(t)}),"nfs/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.nfs(t)}),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.nfs(t)}),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,function(){return{}})}}return t.prototype.newTaskMessage=function(t,e,n){return new s(this.i18n,t,e,n)},t.prototype.pool=function(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})},t.prototype.ecp=function(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})},t.prototype.iscsiTarget=function(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})},t.prototype.nfs=function(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:"'"+t.cluster_id+":"+(t.export_id?t.export_id:t.path)+"'"})},t.prototype._getTaskTitle=function(t){return this.messages[t.name]||this.defaultMessage},t.prototype.getSuccessTitle=function(t){return this._getTaskTitle(t).success(t.metadata)},t.prototype.getErrorMessage=function(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail},t.prototype.getErrorTitle=function(t){return this._getTaskTitle(t).failure(t.metadata)},t.prototype.getRunningTitle=function(t){return this._getTaskTitle(t).running(t.metadata)},t.prototype.getRunningText=function(t){return this._getTaskTitle(t).operation.running},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(i.a))},token:t,providedIn:"root"}),t}()},uhwM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t.join(", ")},t}()},urB8:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("buEt"),i=n("QGcS");e.NodeDraggableService=function(){function t(){this.draggableNodeEvents$=new r.Subject}return t.prototype.fireNodeDragged=function(t,e){t.tree&&!t.tree.isStatic()&&this.draggableNodeEvents$.next(new i.NodeDraggableEvent(t,e))},t.prototype.captureNode=function(t){this.capturedNode=t},t.prototype.getCapturedNode=function(){return this.capturedNode},t.prototype.releaseCapturedNode=function(){this.capturedNode=null},t.decorators=[{type:a.Injectable}],t}()},uxXc:function(t,e,n){var a=n("t1N5"),r=function(){return new c};for(var i in a){r[i+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),a[t](e)}}(i);var o=/(\w+)2(\w+)/.exec(i),s=o[1],u=o[2];(r[s]=r[s]||{})[u]=r[i]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=a[t](e);if("string"==typeof n||void 0===n)return n;for(var r=0;r<n.length;r++)n[r]=Math.round(n[r]);return n}}(i)}var c=function(){this.convs={}};c.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))},c.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},c.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=r[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){c.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),t.exports=r},vCyI:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){this.selected=[],this.update()}return t.prototype.update=function(){this.hasSelection=this.selected.length>0,this.hasSingleSelection=1===this.selected.length,this.hasMultiSelection=this.selected.length>1},t.prototype.first=function(){return this.hasSelection?this.selected[0]:null},t}()},vOVK:function(t,e,n){var a={"./messages.cs.xlf":"MaEZ","./messages.de-DE.xlf":"BY/9","./messages.en-US.xlf":"SXH0","./messages.es-ES.xlf":"csGn","./messages.fr-FR.xlf":"obpP","./messages.id-ID.xlf":"nmKl","./messages.it-IT.xlf":"hHou","./messages.ja-JP.xlf":"waXJ","./messages.ko-KR.xlf":"Q3dv","./messages.pl-PL.xlf":"/6aS","./messages.pt-BR.xlf":"OWV/","./messages.zh-CN.xlf":"fB8H","./messages.zh-TW.xlf":"Dysq"};function r(t){var e=i(t);return n(e)}function i(t){var e=a[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="vOVK"},vpM6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("global",{plugins:{filler:{propagate:!0}}});var o={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 s(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 u(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("number"==typeof i&&isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function c(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 l(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),o[n](t))}function d(t){return t&&!t.skip}function p(t,e,n,a,r){var o;if(a&&r){for(t.moveTo(e[0].x,e[0].y),o=1;o<a;++o)i.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(n[r-1].x,n[r-1].y),o=r-1;o>0;--o)i.canvas.lineTo(t,n[o],n[o-1],!0)}}t.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,i,o,d=(t.data.datasets||[]).length,p=e.propagate,f=[];for(a=0;a<d;++a)o=null,(i=(n=t.getDatasetMeta(a)).dataset)&&i._model&&i instanceof r.Line&&(o={visible:t.isDatasetVisible(a),fill:s(i,a,d),chart:t,el:i}),n.$filler=o,f.push(o);for(a=0;a<d;++a)(o=f[a])&&(o.fill=c(f,a,p),o.boundary=u(o),o.mapper=l(o))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var r=t.ctx,o=n.el,s=o._view,u=o._children||[],c=n.mapper,l=s.backgroundColor||a.global.defaultColor;c&&l&&u.length&&(i.canvas.clipArea(r,t.chartArea),function(t,e,n,a,r,i){var o,s,u,c,l,f,h,g=e.length,m=a.spanGaps,b=[],y=[],v=0,x=0;for(t.beginPath(),o=0,s=g+!!i;o<s;++o)l=n(c=e[u=o%g]._view,u,a),f=d(c),h=d(l),f&&h?(v=b.push(c),x=y.push(l)):v&&x&&(m?(f&&b.push(c),h&&y.push(l)):(p(t,b,y,v,x),v=x=0,b=[],y=[]));p(t,b,y,v,x),t.closePath(),t.fillStyle=r,t.fill()}(r,u,c,s,l,o._loop),i.canvas.unclipArea(r))}}}},"vvH+":function(t,e,n){"use strict";t.exports={},t.exports.Arc=n("X8CM"),t.exports.Line=n("UqmZ"),t.exports.Point=n("OXbD"),t.exports.Rectangle=n("2UWG")},vxfy:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableFooterTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-footer-template]"})],function(t){this.template=t})}()},w1EH:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("3fWJ"),r=n("VnD/"),i=n("AxiF"),o=n("tNVB"),s=n("HJBe"),u=n("mChF");function c(t,e){var n=arguments.length>=2;return function(c){return c.pipe(t?Object(r.a)(function(e,n){return t(e,n,c)}):u.a,Object(i.a)(1),n?Object(s.a)(e):Object(o.a)(function(){return new a.a}))}}},w5QO:function(t,e,n){"use strict";e.noop=function(){}},wQk9:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".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:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}()},waXJ:function(t,e){t.exports='<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>\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306e\u5207\u308a\u66ff\u3048</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u30af\u30e9\u30b9\u30bf</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u30db\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\u30e2\u30cb\u30bf\u30fc</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>\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH\u30de\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30e2\u30b8\u30e5\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u30a2\u30e9\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u30d6\u30ed\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u30a4\u30e1\u30fc\u30b8</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u30df\u30e9\u30fc\u30ea\u30f3\u30b0</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>\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u30d0\u30b1\u30c3\u30c8</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u623b\u308b</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u8a00\u8a9e\u306e\u9078\u629e</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u30d1\u30cd\u30eb\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</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>\u76e3\u8996\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\n\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\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\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u305b\u3093\u3002\nGrafana\u306b\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\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>\u8a2d\u5b9a\u306e\u30ea\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9078\u629e\u6e08\u307f</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u691c\u51fa\u6e08\u307f</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u5408\u8a08</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8a2d\u5b9a</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>\u901a\u5e38\u306f\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304b\u3089\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u30d0\u30c3\u30af\u30b9\u30c8\u30a2</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u78ba\u8a8d</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u30ad\u30e3\u30f3\u30bb\u30eb</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u8a73\u7d30\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN\u306f\u300ciqn.$year-$month.$reversedAddress:$definedName\u300d\u3068\u3044\u3046\u5f62\u5f0f\u3067\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</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>\u4f8b: 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>\u8a73\u7d30\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8a73\u7d30\u8a2d\u5b9a\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u30dd\u30fc\u30bf\u30eb</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>\u5c11\u306a\u304f\u3068\u3082\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/>\u53f0\u306e\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u30dd\u30fc\u30bf\u30eb\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u8a2d\u5b9a\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL\u8a8d\u8a3c</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bfIQN\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u30e6\u30fc\u30b6</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>\u30e6\u30fc\u30b6\u540d\u306f8\uff5e64\u6587\u5b57\u306e\u9577\u3055\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\n\u82f1\u5b57\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u3001\u307e\u305f\u306f\u300c:\u300d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u76f8\u4e92\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u76f8\u4e92\u30d1\u30b9\u30ef\u30fc\u30c9</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>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306f\u3044\u305a\u308c\u304b\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u5c5e\u3057\u307e\u3059\u3002\u30a4\u30e1\u30fc\u30b8\u306f\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u524d</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u30b0\u30eb\u30fc\u30d7\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u9001\u4fe1</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>\u9078\u629e\u3055\u308c\u305f\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u3092\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u306f\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u691c\u51fa\u8a8d\u8a3c</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>\u30e6\u30fc\u30b6\u540d\u306f8\uff5e64\u6587\u5b57\u306e\u9577\u3055\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\n\u82f1\u5b57\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u3001\u307e\u305f\u306f\u300c:\u300d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>iSCSI\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53d6\u5f97\u53ef\u80fd\u306a\u60c5\u5831:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306aiSCSI\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u300c/\u300d\u3068\u300c@\u300d\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306arbd\u30d7\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u30d7\u30fc\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u5c02\u7528\u306e\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb</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\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c7\u30fc\u30bf\u3092\u4fdd\u7ba1\u3059\u308b\u305f\u3081\u306e\u5c02\u7528\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u4f8b: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u30b5\u30a4\u30ba\u3092\u5927\u304d\u304f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u6a5f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u8a73\u7d30...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</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>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b5\u30a4\u30ba\u3088\u308a\u5927\u304d\u3044\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570</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>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570\u306f0\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u3054\u307f\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u8aac\u660e</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u9577\u3044\u8aac\u660e</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u30c7\u30d5\u30a9\u30eb\u30c8</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u306e\u30c7\u30d5\u30a9\u30eb\u30c8</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u30b5\u30fc\u30d3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u5024</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3088\u308a\u5c0f\u3055\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u4fdd\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH\u30de\u30c3\u30d7\u30d3\u30e5\u30fc\u30a2</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u30db\u30b9\u30c8\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u30a8\u30f3\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u76e3\u67fb\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u7de8\u96c6</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aUUID\u3067\u306f\u3042\u308a\u307e\u305b\u3093(\u6709\u52b9\u306aUUID\u306e\u4f8b: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)\u3002</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>\u6709\u52b9\u306aIP\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u4ee5\u4e0b\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u4ee5\u4e0a\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\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>\u6570\u5b57\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u6570\u5b57\u307e\u305f\u306f\u5c0f\u6570\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u30af\u30e9\u30b9\u30bfID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap\u30a8\u30dd\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>\u5b9a\u6570con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>\u5b9a\u6570mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>\u5fc5\u9808\u306econ</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>\u5fc5\u9808\u306emon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>\u5b9a\u6570\u5185</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u5b9a\u6570\u5185</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u5168\u4f53\u306eOSD\u30d5\u30e9\u30b0</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD\u56de\u5fa9\u512a\u5148\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u512a\u5148\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u512a\u5148\u5ea6\u5024\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3088\u308a\u5c0f\u3055\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u518d\u91cd\u307f\u3065\u3051OSD</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>\u5024\u306f0\u30681\u306e\u9593\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u518d\u91cd\u307f\u3065\u3051</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 {...}}"/>\u30b9\u30af\u30e9\u30d6\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\u30b9\u30af\u30e9\u30d6\u3092OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306b\n\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\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\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306f\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>"/>\u3068\u30de\u30fc\u30af\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>\u3053\u306eOSD\u3092\u5b89\u5168\u306b\u7834\u68c4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306f\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>"/>\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u30d8\u30eb\u30b9</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7d71\u8a08\u60c5\u5831</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>NFS Ganesha\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u610f\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u9808\u30d5\u30a3\u30fc\u30eb\u30c9</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\u3064\u4ee5\u4e0a\u306e\u30ab\u30f3\u30de\u533a\u5207\u308a\u5024\u3092\u542b\u3093\u3067\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>\u30b9\u30ab\u30c3\u30b7\u30e5</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30af\u30e9\u30b9\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u30af\u30e9\u30b9\u30bf\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30e6\u30fc\u30b6\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS\u30e6\u30fc\u30b6ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS\u540d</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e9\u30d9\u30eb</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e9\u30d9\u30eb\u306e\u6709\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS\u30d1\u30b9</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>\u30d1\u30b9\u306f\u300c/\u300d\u3067\u59cb\u307e\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u306e\u5f8c\u308d\u306b1\u3064\u306e\u5358\u8a9e\u3092\u914d\u7f6e\u3067\u304d\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u30d1\u30b9</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>\u30d1\u30b9\u306f\u5358\u4e00\u306e\u300c/\u300d\u307e\u305f\u306f1\u3064\u306e\u5358\u8a9e\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u65b0\u3057\u3044\u30d0\u30b1\u30c3\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS\u30d7\u30ed\u30c8\u30b3\u30eb</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\u30bf\u30b0</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>\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>"/>\u30de\u30a6\u30f3\u30c8\u306e\u4ee3\u66ff\u30a2\u30af\u30bb\u30b9(\u5148\u982d\u306b\u300c/\u300d\u304c\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093)\u3002\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>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u305b\u3093(\u305f\u3068\u3048\u3070\u3001\uff3b\u30bf\u30b0\uff3d = foo\u306e\u5834\u5408\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306ffoo/baz\u3092\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u305b\u3093)\u3002</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>\u7570\u306a\u308b\uff3b\u30bf\u30b0\uff3d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u540c\u3058\u30d1\u30b9\u3092\u8907\u6570\u56de\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u7591\u4f3c</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>\u3053\u306e\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>"/>\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u304c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u7591\u4f3cFS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u5185\u3067\n\u5360\u6709\u3059\u308b\u4f4d\u7f6e(\u3053\u306e\u4f4d\u7f6e\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059)\u3002\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>\u7570\u306a\u308b\uff3b\u7591\u4f3c\uff3d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u540c\u3058\u30d1\u30b9\u3092\u8907\u6570\u56de\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30b9\u30ab\u30c3\u30b7\u30e5\u304c\u3042\u308a\u307e\u305b\u3093 --</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>-- \u5b9f\u884c\u3055\u308c\u308b\u30e6\u30fc\u30b6ID\u30b9\u30ab\u30c3\u30b7\u30e5\u64cd\u4f5c\u306e\u7a2e\u985e\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u524d\u306f\u82f1\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u3001\u304a\u3088\u3073\u4e0b\u7dda\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u9078\u629e\u3055\u308c\u305f\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u30d7\u30e9\u30b0\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af(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\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af(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\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u8010\u4e45\u6027\u63a8\u5b9a\u5b50(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u5730\u57df(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush\u5730\u57df</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u6280\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush\u30eb\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush\u30c7\u30d0\u30a4\u30b9\u30af\u30e9\u30b9</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u610f</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u9589\u3058\u308b</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u524d...</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>\u9078\u629e\u3055\u308c\u305fCeph\u30d7\u30fc\u30eb\u540d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u30d7\u30fc\u30eb\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u30d7\u30fc\u30eb\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002</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>\u3054\u4f7f\u7528\u306e\u30af\u30e9\u30b9\u30bf\u306f\u3053\u308c\u3060\u3051\u591a\u6570\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u5fc5\u8981\u306a\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u3092\u518d\u8a08\u7b97\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u65e2\u5b58\u30d7\u30fc\u30eb\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u306e\u307f\u3092\u5897\u3084\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\u73fe\u5728\u30d7\u30fc\u30eb\u306b\u306f\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/>\u500b\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u8a08\u7b97\u306e\u30d8\u30eb\u30d7</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u73fe\u5728\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u8a2d\u5b9a\u306f\u81ea\u52d5\u7684\u306b\u8a08\u7b97\u3055\u308c\u305f\u305f\u3081\u3001\n\u9001\u4fe1\u524d\u306b\u3001\u3053\u308c\u3089\u306e\u5024\u304c\u30cb\u30fc\u30ba\u306b\u5408\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush\u30eb\u30fc\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush\u30eb\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush\u30b9\u30c6\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u73fe\u5728\u306e\u30af\u30e9\u30b9\u30bf\u5185\u306eOSD\u6570\u306f\u3053\u306e\u30eb\u30fc\u30eb\u3067\u8981\u6c42\u3055\u308c\u308b\u6700\u5c0fOSD\u6570\u3092\u4e0b\u56de\u3063\u3066\u3044\u308b\u305f\u3081\u3001\n\u3053\u306e\u30eb\u30fc\u30eb\u3092\u73fe\u5728\u306e\u30af\u30e9\u30b9\u30bf\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u8907\u88fd\u3055\u308c\u305f\u30b5\u30a4\u30ba</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>\u6700\u5c0f:\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>\u6700\u5927:\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30a4\u30ba\u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002\n\u6709\u52b9\u306a\u5024\u306e\u7bc4\u56f2\u306f\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\uff5e\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>\u3067\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u30d5\u30e9\u30b0</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC\u306e\u4e0a\u66f8\u304d</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u5727\u7e2e</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u30e2\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30ec\u30a4\u30b8\u30e3\u5727\u7e2e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>\u6700\u5c0fblob\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u4f8b: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u5024\u306f0\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>\u6700\u5927blob\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u4f8b: 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>\u5024\u306f\u6700\u5c0fblob\u30b5\u30a4\u30ba\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u7387</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u5727\u7e2e\u7387</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>\u5024\u306f0.0\uff5e1.0\u306e\u9593\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u540d\u524d\u306b\u300c/\u300d\u304c\u542b\u307e\u308c\u305fRBD\u30d7\u30fc\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u540d\u524d\u3092\u5909\u66f4\u3059\u308b\u304b\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ea\u30b9\u30c8\u304b\u3089\u300crbd\u300d\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u30d7\u30fc\u30eb\u30ea\u30b9\u30c8</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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</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>\u3053\u306e\u5024\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u540d\u524d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u6240\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u30e6\u30fc\u30b6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u8a31\u53ef</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u8a31\u53ef\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u30e6\u30fc\u30b6\u540d</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u30e6\u30fc\u30b6\u540d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u30ad\u30fc\u306e\u81ea\u52d5\u751f\u6210</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u79d8\u5bc6\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u30b5\u30d6\u30e6\u30fc\u30b6ID\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8aad\u307f\u53d6\u308a\u3001\u66f8\u304d\u8fbc\u307f</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u30d5\u30eb</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>\u30b9\u30a6\u30a3\u30d5\u30c8\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u79d8\u5bc6\u306e\u81ea\u52d5\u751f\u6210</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u30e6\u30fc\u30b6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u30e6\u30fc\u30b6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u30e6\u30fc\u30b6ID\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u6c0f\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u3053\u308c\u306f\u6709\u52b9\u306a\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0\u4ee5\u4e0a\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u4e2d\u65ad\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6\u304c\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u30ad\u30fc</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>\u30ad\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u8868\u793a</target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>\u30b9\u30a6\u30a3\u30d5\u30c8</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u6a5f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6a5f\u80fd\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u30e6\u30fc\u30b6\u30af\u30a9\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u6709\u52b9\u5316\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u7121\u5236\u9650\u306e\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u6700\u5927\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u7121\u5236\u9650\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30af\u30a9\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph\u306b\u3088\u3046\u3053\u305d!</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>\u30e6\u30fc\u30b6\u540d\u306f\u5fc5\u9808\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u30ed\u30b0\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u8aac\u660e...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u8a31\u53ef</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u3053\u306e\u30e6\u30fc\u30b6\u306fCeph\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002</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>\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\uff3b\u30ed\u30b0\u30a4\u30f3\uff3d\u30da\u30fc\u30b8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u306b\u623b\u308a\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3\u3092\u518d\u8a66\u884c\u3059\u308b\u3068\u3001Identity Provider\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u78ba\u8a8d\u5165\u529b</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u78ba\u8a8d\u5165\u529b\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u96fb\u5b50\u30e1\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u7121\u52b9\u306a\u96fb\u5b50\u30e1\u30fc\u30eb\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u5f79\u5272</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>\u81ea\u8eab\u306e\u30e6\u30fc\u30b6\u304b\u3089\u300cuser read / update\u300d\u3068\u3044\u3046\u8a31\u53ef\u3092\u524a\u9664\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002</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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\u3069\u306e\u30e6\u30fc\u30b6\u306e\u5f79\u5272\u3082\u8ffd\u52a0\u304a\u3088\u3073\u524a\u9664\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u7981\u6b62</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>\u691c\u7d22\u3057\u3066\u3044\u305f\u5185\u5bb9\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u691c\u7d22\u3057\u3066\u3044\u305f\u5185\u5bb9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u3059\u3079\u3066\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u8fd1\u306e\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u30d8\u30eb\u30d7</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8</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>\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u30e6\u30fc\u30b6\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u30ed\u30b0\u30a4\u30f3\u6e08\u307f\u30e6\u30fc\u30b6</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>\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\u3068\u3057\u3066\u30b5\u30a4\u30f3\u30a4\u30f3\u6e08\u307f\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u30b5\u30a4\u30f3\u30a2\u30a6\u30c8</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u8a73\u7d30</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>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u914d\u7f6e\u30eb\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u30de\u30fc\u30ab\u30fc</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\u6700\u5927\u30de\u30fc\u30ab\u30fc</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u30de\u30b9\u30bf\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u5909\u66f4\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\u30be\u30fc\u30f3\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u7121\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u30b0\u30ed\u30fc\u30d0\u30eb</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD\u8a2d\u5b9a</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>\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u5024\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u89aa\u8a2d\u5b9a\u5024\u304c\u7d99\u627f\u3055\u308c\u3066\u4ee3\u308f\u308a\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u5024\u306f0\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\u5c5e\u6027(OSD\u30de\u30c3\u30d7)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf</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>\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093:\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>\u66f8\u304d\u8fbc\u307f\u56de\u6570</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8aad\u307f\u53d6\u308a\u56de\u6570</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u73fe\u884c\u5024</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u6700\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u6700\u5927</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u30bd\u30fc\u30b9</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u30ec\u30d9\u30eb</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u5b9f\u884c\u6642\u306b\u66f4\u65b0\u3067\u304d\u307e\u3059(\u7de8\u96c6\u53ef\u80fd)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u30bf\u30b0</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u5217\u6319\u5024</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u95a2\u9023\u9805\u76ee</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u306e\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf\u30b5\u30fc\u30d0</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u56de\u5fa9\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u30b9\u30af\u30e9\u30d6</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u672a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6642\u306e\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD\u3042\u305f\u308a\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u6570</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u300c\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30ed\u30b0\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u3092\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b\u306b\u306f\u3001\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u30a4\u30e1\u30fc\u30b8\u306e\u79fb\u52d5\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u5e0c\u671b\u306b\u5fdc\u3058\u3066\u3001\u5931\u52b9\u65e5\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u8b77\u306e\u5931\u52b9\u65e5</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u4fdd\u8b77\u3055\u308c\u3066\u3044\u307e\u305b\u3093</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>\u65e5\u4ed8\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u300cYYYY-MM-DD HH:mm:ss\u300d\u3068\u3044\u3046\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002</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>\u4fdd\u8b77\u306f\u3059\u3067\u306b\u5931\u52b9\u3057\u3066\u3044\u307e\u3059\u3002\u5c06\u6765\u306e\u65e5\u4ed8\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u65e5\u4ed8\u3092\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u6982\u8981</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8</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>\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>"/>\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308bRBD\u30a4\u30e1\u30fc\u30b8\u306e\u307f\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u4f5c\u6210\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u6e08\u307f\u5408\u8a08</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0\u5358\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0\u6570</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u89aa</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u30d6\u30ed\u30c3\u30af\u540d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\u9806\u756a</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u3053\u306e\u8a2d\u5b9a\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5024\u3088\u308a\u3082\u512a\u5148\u3055\u308c\u307e\u3059</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>\u3053\u308c\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5024\u3067\u3059\u3002\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u3064\u3044\u3066\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5024\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u4fdd\u8b77\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u672a\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u3054\u307f\u7bb1\u3092\u7a7a\u306b\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u7a7a\u306b\u3059\u308b\u306b\u306f\u30011\u3064\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u9078\u629e\u3057\u3066\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u30d7\u30fc\u30eb:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u30d7\u30fc\u30eb\u540d...</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u3059\u3079\u3066</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u5fa9\u5143\u3059\u308b\u306b\u306f</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u3057\u3044\u540d\u524d</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u5931\u52b9\u65e5</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u8b77\u306e\u7d42\u4e86\u65e5</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>\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\u307e\u3067\u4fdd\u8b77\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI\u30c8\u30dd\u30ed\u30b8</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u540c\u671f\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u6e96\u5099\u5b8c\u4e86</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u30d7\u30fc\u30eb\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u30d7\u30fc\u30eb\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>"/>\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u306b\u306f\u3001\n\u30ea\u30b9\u30c8\u304b\u3089\u65b0\u3057\u3044\u30e2\u30fc\u30c9\u3092\u9078\u629e\u3057\u3066\u3001\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u66f4\u65b0\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\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>\u30df\u30e9\u30fc\u3092\u7121\u52b9\u306b\u3059\u308b\u524d\u306b\u3001\u30d4\u30a2\u30af\u30e9\u30b9\u30bf\u3092\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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\u30d7\u30fc\u30eb\u306e\u30df\u30e9\u30fc\u30d4\u30a2\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u30d7\u30fc\u30eb\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>"/>\n\u306e\u30d7\u30fc\u30eb\u30df\u30e9\u30fc\u30d4\u30a2\u5c5e\u6027\u3001\u304a\u3088\u3073\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u9001\u4fe1\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u540d</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u3053\u306e\u30af\u30e9\u30b9\u30bf\u540d\u306f\u7121\u52b9\u3067\u3059\u3002</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>\u3053\u306eCephX ID\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\u30e2\u30cb\u30bf\u30fc\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u30ab\u30f3\u30de\u533a\u5207\u308a\u30a2\u30c9\u30ec\u30b9...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\u3053\u306e\u8b66\u544a\u30a2\u30c9\u30ec\u30b9\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30ad\u30fc...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX\u30ad\u30fc\u306fbase64\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u30ad\u30e3\u30c3\u30b7\u30e5\u5c64\u306e\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u30e9\u30f3\u30af</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u6570:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u73fe\u5728</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u691c\u51fa\u8a8d\u8a3c\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30dd\u30fc\u30bf\u30eb\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30e1\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002</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>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30e1\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</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>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u30db\u30b9\u30c8\u540d</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u6b21\u306e\u65e5\u4ed8\u4ee5\u964d\u306eA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72b6\u614b</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u9032\u6357</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u7121\u52b9\u5316\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u30e2\u30fc\u30c9\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u30d4\u30a2\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u30d4\u30a2\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u30d4\u30a2\u306e\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>\u30ea\u30fc\u30c0\u30fc</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#\u30ed\u30fc\u30ab\u30eb</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#\u30ea\u30e2\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u30df\u30e9\u30fc\u30d4\u30a2</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u5024</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u968e\u5c64\u5316</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u6392\u4ed6\u30ed\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30de\u30c3\u30d7(\u6392\u4ed6\u30ed\u30c3\u30af\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u30b8\u30e3\u30fc\u30ca\u30ea\u30f3\u30b0(\u6392\u4ed6\u30ed\u30c3\u30af\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u9ad8\u901f\u5fae\u5206(\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30de\u30c3\u30d7\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u30b3\u30d4\u30fc</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u4f5c\u6210</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u540d\u524d\u306e\u5909\u66f4</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u4fdd\u8b77\u89e3\u9664</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u524a\u9664\u65e5\u6642</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>\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72b6\u614b</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u30db\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u30eb\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u30e9\u30f3\u30af</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>d\u30a8\u30f3\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i\u30ce\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>\u4f7f\u7528\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u30b9\u30bf\u30f3\u30d0\u30a4\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u3053\u306e\u5024\u306f\u5b9f\u884c\u6642\u306b\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002</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>\u30c7\u30fc\u30e2\u30f3/\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3053\u306e\u5024\u3092\u30e2\u30cb\u30bf\u30fc\u8a2d\u5b9a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3057\u307e\u305b\u3093\u3002\n\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u300cceph config set ...\u300d\u3092\u901a\u3058\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306f\u7981\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001ceph.conf\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u901a\u3058\u3066\n\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30c7\u30fc\u30e2\u30f3\u59cb\u52d5\u6642\u306e\u307f\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30af\u30e9\u30b9\u30bf\u306e\u4f5c\u6210\u306e\u307f\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30c7\u30fc\u30e2\u30f3\u306e\u4f5c\u6210\u306e\u307f\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002</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>\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>\u30b5\u30fc\u30d3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u73fe\u884c\u5024</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u7de8\u96c6\u53ef\u80fd</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>\u30e2\u30b8\u30e5\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u6709\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u7121\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u518d\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u958b\u59cb</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u30a4\u30f3\u306a\u3057</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>\u4ee5\u524d\u306b\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u305fOSD\u306f\u3001\u305d\u308c\u3089\u306e\u59cb\u52d5\u6642\u306b\u30a4\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u30a2\u30a6\u30c8\u306a\u3057</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\u306f\u3001\u8a2d\u5b9a\u6e08\u307f\u306e\u9593\u9694\u304c\u7d4c\u904e\u3057\u305f\u5f8c\u306b\u81ea\u52d5\u7684\u306b\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u30a2\u30c3\u30d7\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD\u3092\u59cb\u52d5\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u30c0\u30a6\u30f3\u306a\u3057</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\u306e\u969c\u5bb3\u30ec\u30dd\u30fc\u30c8\u306f\u7121\u8996\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001OSD\u306f\u30e2\u30cb\u30bf\u30fc\u306b\u3088\u3063\u3066\u30c0\u30a6\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u4e00\u6642\u505c\u6b62</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u3068\u66f8\u304d\u8fbc\u307f\u3092\u4e00\u6642\u505c\u6b62\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u30b9\u30af\u30e9\u30d6\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u30b9\u30af\u30e9\u30d6\u51e6\u7406\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6\u51e6\u7406\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u56de\u5fa9\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u56de\u5fa9\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u30bd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u30bd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u6d88\u53bb\u3055\u308c\u305f\u30b9\u30ca\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD\u306b\u3088\u3063\u3066\u30b9\u30ca\u30c3\u30d7\u30bb\u30c3\u30c8\u304c\u5909\u63db\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u56de\u5fa9\u306e\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u30d4\u30a2\u30ea\u30f3\u30b0\u306e\u4ee3\u308f\u308a\u306b\u56de\u5fa9\u6642\u306b\u524a\u9664\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u30ed\u30b0\u306e\u30cf\u30fc\u30c9\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u30ed\u30b0\u9577\u306e\u30cf\u30fc\u30c9\u5236\u9650\u3092\u9069\u7528\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSD\u30d5\u30e9\u30b0\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\u30a2\u30a6\u30c8</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u30a4\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u30c0\u30a6\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\u30c0\u30a6\u30f3</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u55aa\u5931\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>\u55aa\u5931\u3057\u305fOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u55aa\u5931\u3068\u3057\u3066\u30de\u30fc\u30af\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6d88\u53bb</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u6d88\u53bb\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u7834\u68c4</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u7834\u68c4</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u7834\u68c4\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u6570</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570</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}}"/>\u3092\u30de\u30fc\u30af\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}}"/>\u3092\u30de\u30fc\u30af\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u6570</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u56de\u5fa9\u6700\u5927\u30a2\u30af\u30c6\u30a3\u30d6</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u56de\u5fa9\u6700\u5927\u5358\u4e00\u59cb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u56de\u5fa9\u30b9\u30ea\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u30ab\u30b9\u30bf\u30e0</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>OSD\u306e\u56de\u5fa9\u901f\u5ea6\u512a\u5148\u5ea6\u300c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/>\u306f\u6b21\u306eOSD\u3067\u521d\u671f\u5316\u3055\u308c\u307e\u3057\u305f:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u30b8\u30e7\u30d6</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u91cd\u5927\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u59cb\u52d5\u6e08\u307f</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u4f7f\u7528\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u30af\u30ea\u30fc\u30f3</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u52d5\u4f5c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u4e0d\u660e</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u30a2\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d6</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u30b9\u30bf\u30f3\u30d0\u30a4</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d6\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>\u5b9a\u6570</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\u30b5\u30fc\u30d3\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u304b\u3089\u7d99\u627f)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u304b\u3089\u7d99\u627f\u3055\u308c\u307e\u3057\u305f</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>-- \u5b9f\u884c\u3055\u308c\u308b\u30e6\u30fc\u30b6ID\u30b9\u30ab\u30c3\u30b7\u30e5\u64cd\u4f5c\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30c7\u30fc\u30e2\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u30a8\u30af\u30b9\u30dd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u30ad\u30e3\u30c3\u30b7\u30e5\u30e2\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u9000\u53bb\u307e\u3067\u306e\u6700\u5c0f\u7d4c\u904e\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u6d88\u53bb\u307e\u3067\u306e\u6700\u5c0f\u7d4c\u904e\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6700\u5927\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u6570\u306e\u4e0a\u9650\u306b\u9054\u3057\u307e\u3057\u305f</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\u3064\u306e\u30d7\u30fc\u30eb\u306f\u6700\u5927\u30674\u3064\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5b9a\u7fa9\u3057\u304b\u4fdd\u6709\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u6587\u5b57\u300c_a-zA-Z0-9\u300d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u6700\u5927\u9577\u306f128\u6587\u5b57\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u307e\u305f\u306f\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u30ec\u30d7\u30ea\u30ab\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u6700\u5f8c\u306e\u5909\u66f4</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30d0\u30b1\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30d0\u30b1\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u30d0\u30b1\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u6570</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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u30e6\u30fc\u30b6\u6570</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u7bc4\u56f2</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8aad\u307f\u53d6\u308a</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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u30b7\u30b9\u30c6\u30e0\u5f79\u5272</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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u524a\u9664\u3057\u307e\u3057\u305f\n        </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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u30e6\u30fc\u30b6\u306e\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7d9a\u884c</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>\u3053\u306e\u30e6\u30fc\u30b6\u306e\u5f79\u5272\u304c\u5909\u66f4\u3055\u308c\u305f\u305f\u3081\u3001\u3053\u306e\u30e6\u30fc\u30b6\u306f\u81ea\u52d5\u7684\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u3055\u308c\u307e\u3057\u305f\u3002</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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u524a\u9664\u3057\u307e\u3057\u305f\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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\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>\u73fe\u5728\u3053\u306e\u30e6\u30fc\u30b6\u306f\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3068\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u307e\u3059\u3002\n        </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>\u5404\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u30d1\u30fc\u30c8\u306b\u5206\u5272\u3055\u308c\u3066\u304a\u308a\u3001\u305d\u308c\u305e\u308c\u306e\u30d1\u30fc\u30c8\u306f\u7570\u306a\u308bOSD\u306b\u4fdd\u7ba1\u3055\u308c\u3066\u3044\u307e\u3059\u3002</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>\u5404\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u3092\u8a08\u7b97\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u30c1\u30e3\u30f3\u30af\u3092\u5225\u3005\u306eOSD\u306b\u4fdd\u7ba1\u3057\u307e\u3059\u3002\n\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u306e\u6570\u306f\u3001\u30c7\u30fc\u30bf\u3092\u5931\u3046\u3053\u3068\u306a\u304f\u30c0\u30a6\u30f3\u72b6\u614b\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u308bOSD\u306e\u6570\u3067\u3082\u3042\u308a\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u6700\u3082\u6c4e\u7528\u7684\u3067\u67d4\u8edf\u6027\u306e\u9ad8\u3044\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u3059\u3002\n\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u3001Ceph\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30d7\u30fc\u30eb\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3082\u3042\u308a\u307e\u3059\u3002</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>\u3055\u3089\u306b\u67d4\u8edf\u6027\u306e\u9ad8\u3044\u6280\u6cd5\u306freed_sol_van\u3067\u3059\u3002k\u3068m\u3092\n\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002\ncauchy_good\u6280\u6cd5\u306f\u3088\u308a\u9ad8\u901f\u3068\u306a\u308a\u5f97\u307e\u3059\u304c\u3001\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u614e\u91cd\u306b\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\nreed_sol_r6_op\u3001liberation\u3001blaum_roth\u3001liber8tion\u306f\u3059\u3079\u3066\u3001\nm=2\u3092\u4f7f\u7528\u3057\u305f\u8a2d\u5b9a\u306e\u307f\u304c\u53ef\u80fd\u3068\u3044\u3046\u610f\u5473\u3067RAID6\u3068\u540c\u7b49\u3067\u3059\u3002</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>\u30a8\u30f3\u30b3\u30fc\u30c9\u306f\u30d0\u30a4\u30c8\u30b5\u30a4\u30ba\u306e\u30d1\u30b1\u30c3\u30c8\u7fa4\u306b\u5bfe\u3057\u3066\u540c\u6642\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\n\u9069\u5207\u306a\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3059\u3002\njerasure\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u306f\u3053\u306e\u30c8\u30d4\u30c3\u30af\u306b\u95a2\u3059\u308b\u8a73\u7d30\u306a\u60c5\u5831\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306eOSD\u306b\u4fdd\u7ba1\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\n1\u3064\u306eOSD\u306e\u55aa\u5931\u304b\u3089\u56de\u5fa9\u3059\u308b\u306b\u306f\u3001\u4ed6\u306e\u3059\u3079\u3066\u306eOSD\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001k=8\u304a\u3088\u3073m=4\u3092\u4f7f\u7528\u3057\u3066jerasure\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30011\u3064\u306eOSD\u304c\u5931\u308f\u308c\u305f\u5834\u5408\u3001\n\u4fee\u5fa9\u306e\u305f\u3081\u306b\u306f\u4ed6\u306e11\u500b\u306eOSD\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\n\nlrc\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u3001\u3053\u308c\u3088\u308a\u5c11\u306a\u3044OSD\u3092\u4f7f\u7528\u3057\u305f\u56de\u5fa9\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306b\u3001\n\u30ed\u30fc\u30ab\u30eb\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001lrc\u304ck=8\u3001m=4\u3001\u304a\u3088\u3073l=4\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\nlrc\u306f\u30014\u3064\u306eOSD\u3054\u3068\u306b1\u3064\u306e\u8ffd\u52a0\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u30021\u3064\u306eOSD\u304c\u5931\u308f\u308c\u305f\u5834\u5408\u306f\u3001\n11\u500b\u306e\u4ee3\u308f\u308a\u306b4\u3064\u306eOSD\u306e\u307f\u3092\u4f7f\u7528\u3057\u3066\u305d\u306eOSD\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u3068\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u3092\u30b5\u30a4\u30ba\u5730\u57df\u306e\u8907\u6570\u30bb\u30c3\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u5206\u3051\u3057\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001k=4\u304a\u3088\u3073m=2\u306e\u5834\u5408\u306b\u3001\uff3b\u5730\u57df\uff3d=3\u306e\u5834\u5408\u306f\u30013\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304b\u3089\u306a\u308b\u30b0\u30eb\u30fc\u30d7\u304c2\u3064\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\n\u5404\u30bb\u30c3\u30c8\u306f\u3001\u5225\u306e\u30bb\u30c3\u30c8\u304b\u3089\u30c1\u30e3\u30f3\u30af\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u306a\u304f\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u306e\u5404\u30bb\u30c3\u30c8\u304c\u4fdd\u7ba1\u3055\u308c\u308bCrush\u30d0\u30b1\u30c3\u30c8\u306e\u30bf\u30a4\u30d7\u3002\n\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u304c\u30e9\u30c3\u30af\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30011\u306e\u30c1\u30e3\u30f3\u30af\u306e\u5404\u30b0\u30eb\u30fc\u30d7\u306f\u7570\u306a\u308b\u30e9\u30c3\u30af\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002\n\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u3092\u4f7f\u7528\u3057\u3066\u3001\u300c\u30e9\u30c3\u30af\u306e\u9078\u629e\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069\u306eCRUSH\u30eb\u30fc\u30eb\u30b9\u30c6\u30c3\u30d7\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\n\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u30b0\u30eb\u30fc\u30d7\u5206\u3051\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306fISA\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u306fIntel\u30d7\u30ed\u30bb\u30c3\u30b5\u4e0a\u306e\u307f\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f2\u3064\u306e\u30ea\u30fc\u30c9\u30bd\u30ed\u30e2\u30f3\u5f62\u5f0f\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002reed_sol_van\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001Vandermonde\u3067\u3042\u308a\u3001cauchy\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001Cauchy\u3067\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u8907\u6570\u306eSHEC\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\n\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001ceph\u306f\u30ea\u30fc\u30c9\u30bd\u30ed\u30e2\u30f3\u30b3\u30fc\u30c9\u3088\u308a\u52b9\u7387\u7684\u306b\u30c7\u30fc\u30bf\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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>\u305d\u308c\u305e\u308c\u304c\u5404\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u3092\u5404\u81ea\u306e\u8a08\u7b97\u7bc4\u56f2\u5185\u306b\u542b\u3093\u3067\u3044\u308b\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u306e\u6570\u3002\n\u3053\u306e\u6570\u306f\u3001\u8010\u4e45\u6027\u63a8\u5b9a\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001c=2\u306e\u5834\u5408\u306f\u3001\u30c7\u30fc\u30bf\u3092\u5931\u3046\u3053\u3068\u306a\u304f2\u3064\u306eOSD\u304c\u30c0\u30a6\u30f3\u72b6\u614b\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</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\u30eb\u30fc\u30eb\u306e\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7(\u300c\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u4f7f\u7528\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069)\u7528\u306b\n\u4f7f\u7528\u3055\u308c\u308bCrush\u30d0\u30b1\u30c3\u30c8\u306e\u540d\u524d\u3002</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>\u540c\u3058\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3\u306e\u5358\u4e00\u30d0\u30b1\u30c3\u30c8\u5185\u306b2\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304c\u914d\u7f6e\u3055\u308c\u308b\u3053\u3068\u3092\u9632\u6b62\u3057\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3\u304c\u30db\u30b9\u30c8\u3067\u3042\u308b\u5834\u5408\u306f\u30012\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304c\u540c\u3058\u30db\u30b9\u30c8\u306b\u4fdd\u7ba1\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u300c\u30ea\u30fc\u30d5\u30db\u30b9\u30c8\u306e\u9078\u629e\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069\u306eCRUSH\u30eb\u30fc\u30eb\u30b9\u30c6\u30c3\u30d7\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002</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\u30de\u30c3\u30d7\u5185\u3067Crush\u30c7\u30d0\u30a4\u30b9\u30af\u30e9\u30b9\u540d\u3092\u4f7f\u7528\u3057\u3066\u3001\u914d\u7f6e\u5148\u3092\u7279\u5b9a\u30af\u30e9\u30b9(ssd\u3084hdd\u306a\u3069)\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u307f\u306b\u5236\u9650\u3057\u307e\u3059\u3002</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>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u8aad\u307f\u8fbc\u307f\u5143\u3068\u306a\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u3059\u3079\u3066\u306e\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u30b5\u30fc\u30d0\u306b\u5909\u66f4\u3092\u52a0\u3048\u306a\u3044\u64cd\u4f5c\u306e\u307f\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u305b\u3093\u304c\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u3001\u304a\u3088\u3073\u30d5\u30a1\u30a4\u30eb\u5c5e\u6027\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u5bb9\u3092\u5909\u66f4\u3059\u308b\u3069\u306e\u64cd\u4f5c\u3082\u8a31\u53ef\u3057\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u3092\u4e00\u5207\u8a31\u53ef\u3057\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u512a\u5148\u5ea6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u76f4\u524d\u306e5\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u76f4\u524d\u306e15\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u76f4\u524d\u306e30\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u76f4\u524d\u306e1\u6642\u9593(\u30c7\u30d5\u30a9\u30eb\u30c8)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u76f4\u524d\u306e3\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u76f4\u524d\u306e6\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u76f4\u524d\u306e12\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u76f4\u524d\u306e24\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u65e5</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u672c\u65e5</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u672c\u65e5\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u4e00\u6628\u65e5</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u904e\u53bb2\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u5148\u9031\u306e\u540c\u3058\u66dc\u65e5</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u524d\u9031</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u4eca\u9031</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u4eca\u9031\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u904e\u53bb7\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u524d\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u4eca\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u4eca\u6708\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u904e\u53bb30\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u904e\u53bb90\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u904e\u53bb6\u30ab\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u904e\u53bb1\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u524d\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u904e\u53bb2\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u904e\u53bb5\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u89e3\u9664\u3057\u3066\u518d\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u9078\u629e\u306e\u4e0a\u9650\u306b\u9054\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u30bf\u30b0\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u30d0\u30c3\u30b8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u306f\u3044</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u3044\u3044\u3048</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u30b5\u30fc\u30d3\u30b9\u54c1\u8cea</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u5165\u51fa\u529b\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u5165\u51fa\u529b\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8aad\u307f\u53d6\u308aBPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8aad\u307f\u53d6\u308aIOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u66f8\u304d\u8fbc\u307fBPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u66f8\u304d\u8fbc\u307fIOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u5165\u51fa\u529b\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u5165\u51fa\u529b\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8aad\u307f\u53d6\u308aBPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8aad\u307f\u53d6\u308aIOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u66f8\u304d\u8fbc\u307fBPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u66f8\u304d\u8fbc\u307fIOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\u5b9f\u884c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u5b9f\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u5b9f\u884c\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u4e0d\u660e\u306a\u30bf\u30b9\u30af</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u4f5c\u6210\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u4f5c\u6210</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u66f4\u65b0\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u66f4\u65b0\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u524a\u9664\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u524a\u9664\u6e08\u307f</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\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\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\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306e\u30df\u30e9\u30fc\u30d4\u30a2\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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}}"/>\u306b\u306f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u8907\u88fd\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u8907\u88fd\u6e08\u307f</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>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306f\u4fdd\u8b77\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u30b3\u30d4\u30fc\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u30b3\u30d4\u30fc</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u30b3\u30d4\u30fc\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316\u6e08\u307f</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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u306f\u5b50\u30a4\u30e1\u30fc\u30b8\u3092\u542b\u3093\u3067\u3044\u308b\u305f\u3081\u4fdd\u8b77\u89e3\u9664\u3067\u304d\u307e\u305b\u3093\u3002\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}}"/>\u306f\u4fdd\u8b77\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u79fb\u52d5\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u79fb\u52d5\u6e08\u307f</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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u3092\u3054\u307f\u7bb1\u306b\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u5fa9\u5143\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5fa9\u5143\u6e08\u307f</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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u3092\u300c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u300d\u306b\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>\u30a4\u30e1\u30fc\u30b8\u540d\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6d88\u53bb\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6d88\u53bb</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u6d88\u53bb\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u3059\u3079\u3066\u306e\u30d7\u30fc\u30eb</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\u304b\u3089\u306e\u30a4\u30e1\u30fc\u30b8\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>\u30d4\u30a2\u3092\u542b\u3093\u3067\u3044\u308b\u305f\u3081\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002</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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u300d\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>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\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>\u30bf\u30fc\u30b2\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u300d\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>\n'},wbK0:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("dEwP");function r(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(a.a.apply(void 0,[e].concat(t)))}}},"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 o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function p(t,e){for(var n in e)d(e,n)&&(t[n]=e[n]);return d(e,"toString")&&(t.toString=e.toString),d(e,"valueOf")&&(t.valueOf=e.valueOf),t}function f(t,e,n,a){return Ne(t,e,n,a,!0).utc()}function h(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 g(t){if(null==t._isValid){var e=h(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 m(t){var e=f(NaN);return null!=t?p(h(e),t):h(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 b=r.momentProperties=[];function y(t,e){var n,a,r;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=h(e)),s(e._locale)||(t._locale=e._locale),b.length>0)for(n=0;n<b.length;n++)s(r=e[a=b[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 S(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&w(t[a])!==w(e[a]))&&o++;return o+i}function O(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function k(t,e){var n=!0;return p(function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],o=0;o<arguments.length;o++){if(a="","object"==typeof arguments[o]){for(var s in a+="\n["+o+"] ",arguments[0])a+=s+": "+arguments[0][s]+", ";a=a.slice(0,-2)}else a=arguments[o];i.push(a)}O(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)},e)}var C,I={};function R(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),I[t]||(O(e),I[t]=!0)}function N(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function D(t,e){var n,a=p({},t);for(n in e)d(e,n)&&(o(t[n])&&o(e[n])?(a[n]={},p(a[n],t[n]),p(a[n],e[n])):null!=e[n]?a[n]=e[n]:delete a[n]);for(n in t)d(t,n)&&!d(e,n)&&o(t[n])&&(a[n]=p({},a[n]));return a}function A(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,C=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)d(t,e)&&n.push(e);return n};var E={};function L(t,e){var n=t.toLowerCase();E[n]=E[n+"s"]=E[e]=t}function P(t){return"string"==typeof t?E[t]||E[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)d(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 z=/(\[[^\[]*\])|(\\)?([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,Y={},H={};function V(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(H[t]=r),e&&(H[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(H[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function B(t,e){return t.isValid()?(e=U(e,t.localeData()),Y[e]=Y[e]||function(t){var e,n,a,r=t.match(z);for(e=0,n=r.length;e<n;e++)r[e]=H[r[e]]?H[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+=N(r[a])?r[a].call(e,t):r[a];return i}}(e),Y[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}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,Q=/\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+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[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,ct={};function lt(t,e,n){ct[t]=N(e)?e:function(t,a){return t&&n?n:e}}function dt(t,e){return d(ct,t)?ct[t](e._strict,e._locale):new RegExp(pt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,a,r){return e||n||a||r})))}function pt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function ht(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),u(e)&&(a=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)ft[t[n]]=a}function gt(t,e){ht(t,function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)})}function mt(t,e,n){null!=e&&d(ft,t)&&ft[t](e,n._a,n,t)}var bt=0,yt=1,vt=2,xt=3,_t=4,Tt=5,wt=6,St=7,Ot=8;function kt(t){return Ct(t)?366:365}function Ct(t){return t%4==0&&t%100!=0||t%400==0}V("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),V(0,["YY",2],0,function(){return this.year()%100}),V(0,["YYYY",4],0,"year"),V(0,["YYYYY",5],0,"year"),V(0,["YYYYYY",6,!0],0,"year"),L("year","y"),j("year",1),lt("Y",it),lt("YY",J,K),lt("YYYY",nt,Z),lt("YYYYY",at,X),lt("YYYYYY",at,X),ht(["YYYYY","YYYYYY"],bt),ht("YYYY",function(t,e){e[bt]=2===t.length?r.parseTwoDigitYear(t):w(t)}),ht("YY",function(t,e){e[bt]=r.parseTwoDigitYear(t)}),ht("Y",function(t,e){e[bt]=parseInt(t,10)}),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var It,Rt=Nt("FullYear",!0);function Nt(t,e){return function(n){return null!=n?(At(this,t,n),r.updateOffset(this,e),this):Dt(this,t)}}function Dt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function At(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&Ct(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Et(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Et(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?Ct(t)?29:28:31-n%7%2}It=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},V("M",["MM",2],"Mo",function(){return this.month()+1}),V("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),V("MMMM",0,0,function(t){return this.localeData().months(this,t)}),L("month","M"),j("month",8),lt("M",J),lt("MM",J,K),lt("MMM",function(t,e){return e.monthsShortRegex(t)}),lt("MMMM",function(t,e){return e.monthsRegex(t)}),ht(["M","MM"],function(t,e){e[yt]=w(t)-1}),ht(["MMM","MMMM"],function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[yt]=r:h(n).invalidMonth=t});var Lt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Mt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function qt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Et(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function jt(t){return null!=t?(qt(this,t),r.updateOffset(this,!0),this):Dt(this,"Month")}var Ft=ut,zt=ut;function Gt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=f([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]=pt(a[e]),r[e]=pt(r[e]);for(e=0;e<24;e++)i[e]=pt(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 Yt(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 Ht(t,e,n){var a=7+e-n;return-(7+Yt(t,0,a).getUTCDay()-e)%7+a-1}function Vt(t,e,n,a,r){var i,o,s=1+7*(e-1)+(7+n-a)%7+Ht(t,a,r);return s<=0?o=kt(i=t-1)+s:s>kt(t)?(i=t+1,o=s-kt(t)):(i=t,o=s),{year:i,dayOfYear:o}}function Bt(t,e,n){var a,r,i=Ht(t.year(),e,n),o=Math.floor((t.dayOfYear()-i-1)/7)+1;return o<1?a=o+Ut(r=t.year()-1,e,n):o>Ut(t.year(),e,n)?(a=o-Ut(t.year(),e,n),r=t.year()+1):(r=t.year(),a=o),{week:a,year:r}}function Ut(t,e,n){var a=Ht(t,e,n),r=Ht(t+1,e,n);return(kt(t)-a+r)/7}function Wt(t,e){return t.slice(e,7).concat(t.slice(0,e))}V("w",["ww",2],"wo","week"),V("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),j("week",5),j("isoWeek",5),lt("w",J),lt("ww",J,K),lt("W",J),lt("WW",J,K),gt(["w","ww","W","WW"],function(t,e,n,a){e[a.substr(0,1)]=w(t)}),V("d",0,"do","day"),V("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),V("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),V("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),V("e",0,0,"weekday"),V("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),lt("d",J),lt("e",J),lt("E",J),lt("dd",function(t,e){return e.weekdaysMinRegex(t)}),lt("ddd",function(t,e){return e.weekdaysShortRegex(t)}),lt("dddd",function(t,e){return e.weekdaysRegex(t)}),gt(["dd","ddd","dddd"],function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:h(n).invalidWeekday=t}),gt(["d","e","E"],function(t,e,n,a){e[a]=w(t)});var Kt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$t="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Zt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=ut,Jt=ut,Qt=ut;function te(){function t(t,e){return e.length-t.length}var e,n,a,r,i,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),o.push(a),s.push(r),u.push(i),c.push(a),c.push(r),c.push(i);for(o.sort(t),s.sort(t),u.sort(t),c.sort(t),e=0;e<7;e++)s[e]=pt(s[e]),u[e]=pt(u[e]),c[e]=pt(c[e]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function ee(){return this.hours()%12||12}function ne(t,e){V(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ae(t,e){return e._meridiemParse}V("H",["HH",2],0,"hour"),V("h",["hh",2],0,ee),V("k",["kk",2],0,function(){return this.hours()||24}),V("hmm",0,0,function(){return""+ee.apply(this)+F(this.minutes(),2)}),V("hmmss",0,0,function(){return""+ee.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),V("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),V("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),ne("a",!0),ne("A",!1),L("hour","h"),j("hour",13),lt("a",ae),lt("A",ae),lt("H",J),lt("h",J),lt("k",J),lt("HH",J,K),lt("hh",J,K),lt("kk",J,K),lt("hmm",Q),lt("hmmss",tt),lt("Hmm",Q),lt("Hmmss",tt),ht(["H","HH"],xt),ht(["k","kk"],function(t,e,n){var a=w(t);e[xt]=24===a?0:a}),ht(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),ht(["h","hh"],function(t,e,n){e[xt]=w(t),h(n).bigHour=!0}),ht("hmm",function(t,e,n){var a=t.length-2;e[xt]=w(t.substr(0,a)),e[_t]=w(t.substr(a)),h(n).bigHour=!0}),ht("hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;e[xt]=w(t.substr(0,a)),e[_t]=w(t.substr(a,2)),e[Tt]=w(t.substr(r)),h(n).bigHour=!0}),ht("Hmm",function(t,e,n){var a=t.length-2;e[xt]=w(t.substr(0,a)),e[_t]=w(t.substr(a))}),ht("Hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;e[xt]=w(t.substr(0,a)),e[_t]=w(t.substr(a,2)),e[Tt]=w(t.substr(r))});var re,ie=Nt("Hours",!0),oe={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:Pt,monthsShort:Mt,week:{dow:0,doy:6},weekdays:Kt,weekdaysMin:Zt,weekdaysShort:$t,meridiemParse:/[ap]\.?m?\.?/i},se={},ue={};function ce(t){return t?t.toLowerCase().replace("_","-"):t}function le(e){var a=null;if(!se[e]&&void 0!==t&&t&&t.exports)try{a=re._abbr,n("RnhZ")("./"+e),de(a)}catch(r){}return se[e]}function de(t,e){var n;return t&&((n=s(e)?fe(t):pe(t,e))?re=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),re._abbr}function pe(t,e){if(null!==e){var n,a=oe;if(e.abbr=t,null!=se[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=se[t]._config;else if(null!=e.parentLocale)if(null!=se[e.parentLocale])a=se[e.parentLocale]._config;else{if(null==(n=le(e.parentLocale)))return ue[e.parentLocale]||(ue[e.parentLocale]=[]),ue[e.parentLocale].push({name:t,config:e}),null;a=n._config}return se[t]=new A(D(a,e)),ue[t]&&ue[t].forEach(function(t){pe(t.name,t.config)}),de(t),se[t]}return delete se[t],null}function fe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return re;if(!i(t)){if(e=le(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=ce(t[i]).split("-")).length,n=(n=ce(t[i+1]))?n.split("-"):null;e>0;){if(a=le(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&S(r,n,!0)>=e-1)break;e--}i++}return re}(t)}function he(t){var e,n=t._a;return n&&-2===h(t).overflow&&(e=n[yt]<0||n[yt]>11?yt:n[vt]<1||n[vt]>Et(n[bt],n[yt])?vt:n[xt]<0||n[xt]>24||24===n[xt]&&(0!==n[_t]||0!==n[Tt]||0!==n[wt])?xt:n[_t]<0||n[_t]>59?_t:n[Tt]<0||n[Tt]>59?Tt:n[wt]<0||n[wt]>999?wt:-1,h(t)._overflowDayOfYear&&(e<bt||e>vt)&&(e=vt),h(t)._overflowWeeks&&-1===e&&(e=St),h(t)._overflowWeekday&&-1===e&&(e=Ot),h(t).overflow=e),t}function ge(t,e,n){return null!=t?t:null!=e?e:n}function me(t){var e,n,a,i,o,s=[];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[vt]&&null==t._a[yt]&&function(t){var e,n,a,r,i,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,o=4,n=ge(e.GG,t._a[bt],Bt(De(),1,4).year),a=ge(e.W,1),((r=ge(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,o=t._locale._week.doy;var c=Bt(De(),i,o);n=ge(e.gg,t._a[bt],c.year),a=ge(e.w,c.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Ut(n,i,o)?h(t)._overflowWeeks=!0:null!=u?h(t)._overflowWeekday=!0:(s=Vt(n,a,r,i,o),t._a[bt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ge(t._a[bt],a[bt]),(t._dayOfYear>kt(o)||0===t._dayOfYear)&&(h(t)._overflowDayOfYear=!0),n=Yt(o,0,t._dayOfYear),t._a[yt]=n.getUTCMonth(),t._a[vt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=a[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[xt]&&0===t._a[_t]&&0===t._a[Tt]&&0===t._a[wt]&&(t._nextDay=!0,t._a[xt]=0),t._d=(t._useUTC?Yt:function(t,e,n,a,r,i,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,a,r,i,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,a,r,i,o),s}).apply(null,s),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(h(t).weekdayMismatch=!0)}}var be=/^\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)?)?$/,ye=/^\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)?)?$/,ve=/Z|[+-]\d\d(?::?\d\d)?/,xe=[["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}/]],_e=[["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/]],Te=/^\/?Date\((\-?\d+)/i;function we(t){var e,n,a,r,i,o,s=t._i,u=be.exec(s)||ye.exec(s);if(u){for(h(t).iso=!0,e=0,n=xe.length;e<n;e++)if(xe[e][1].exec(u[1])){r=xe[e][0],a=!1!==xe[e][2];break}if(null==r)return void(t._isValid=!1);if(u[3]){for(e=0,n=_e.length;e<n;e++)if(_e[e][1].exec(u[3])){i=(u[2]||" ")+_e[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(u[4]){if(!ve.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=r+(i||"")+(o||""),Ie(t)}else t._isValid=!1}var Se=/^(?:(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 Oe(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var ke={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ce(t){var e,n,a,r,i,o,s=Se.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(s){var u=(e=s[3],n=s[2],a=s[5],r=s[6],i=s[7],o=[Oe(s[4]),Mt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&o.push(parseInt(i,10)),o);if(!function(t,e,n){return!t||$t.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(h(n).weekdayMismatch=!0,n._isValid=!1,!1)}(s[1],u,t))return;t._a=u,t._tzm=function(t,e,n){if(t)return ke[t];if(s[9])return 0;var a=parseInt(s[10],10),r=a%100;return(a-r)/100*60+r}(s[8]),t._d=Yt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),h(t).rfc2822=!0}else t._isValid=!1}function Ie(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],h(t).empty=!0;var e,n,a,i,o,s=""+t._i,u=s.length,c=0;for(a=U(t._f,t._locale).match(z)||[],e=0;e<a.length;e++)(n=(s.match(dt(i=a[e],t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&h(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),c+=n.length),H[i]?(n?h(t).empty=!1:h(t).unusedTokens.push(i),mt(i,n,t)):t._strict&&!n&&h(t).unusedTokens.push(i);h(t).charsLeftOver=u-c,s.length>0&&h(t).unusedInput.push(s),t._a[xt]<=12&&!0===h(t).bigHour&&t._a[xt]>0&&(h(t).bigHour=void 0),h(t).parsedDateParts=t._a.slice(0),h(t).meridiem=t._meridiem,t._a[xt]=(l=t._locale,d=t._a[xt],null==(p=t._meridiem)?d:null!=l.meridiemHour?l.meridiemHour(d,p):null!=l.isPM?((f=l.isPM(p))&&d<12&&(d+=12),f||12!==d||(d=0),d):d),me(t),he(t)}else Ce(t);else we(t);var l,d,p,f}function Re(t){var e=t._i,n=t._f;return t._locale=t._locale||fe(t._l),null===e||void 0===n&&""===e?m({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(he(e)):(c(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return h(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],Ie(e),g(e)&&(i+=h(e).charsLeftOver,i+=10*h(e).unusedTokens.length,h(e).score=i,(null==a||i<a)&&(a=i,n=e));p(t,n||e)}(t):n?Ie(t):function(t){var e=t._i;s(e)?t._d=new Date(r.now()):c(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=Te.exec(t._i);null===e?(we(t),!1===t._isValid&&(delete t._isValid,Ce(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=l(e.slice(0),function(t){return parseInt(t,10)}),me(t)):o(e)?function(t){if(!t._d){var e=M(t._i);t._a=l([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),me(t)}}(t):u(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),g(t)||(t._d=null),t))}function Ne(t,e,n,a,r){var s,u={};return!0!==n&&!1!==n||(a=n,n=void 0),(o(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),u._isAMomentObject=!0,u._useUTC=u._isUTC=r,u._l=n,u._i=t,u._f=e,u._strict=a,(s=new x(he(Re(u))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function De(t,e,n,a){return Ne(t,e,n,a,!1)}r.createFromInputFallback=k("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 Ae=k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:m()}),Ee=k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=De.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:m()});function Le(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return De();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Pe=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Me(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,u=e.minute||0,c=e.second||0,l=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===It.call(Pe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Pe.length;++a)if(t[Pe[a]]){if(n)return!1;parseFloat(t[Pe[a]])!==w(t[Pe[a]])&&(n=!0)}return!0}(e),this._milliseconds=+l+1e3*c+6e4*u+1e3*s*60*60,this._days=+o+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=fe(),this._bubble()}function qe(t){return t instanceof Me}function je(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Fe(t,e){V(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)})}Fe("Z",":"),Fe("ZZ",""),lt("Z",st),lt("ZZ",st),ht(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Ge(st,t)});var ze=/([\+\-]|\d\d)/gi;function Ge(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(ze)||["-",0,0],r=60*a[1]+w(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Ye(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(_(t)||c(t)?t.valueOf():De(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):De(t).local()}function He(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ve(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Be=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function We(t,e){var n,a,r,i,o,s,c=t,l=null;return qe(t)?c={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(c={},e?c[e]=t:c.milliseconds=t):(l=Be.exec(t))?(n="-"===l[1]?-1:1,c={y:0,d:w(l[vt])*n,h:w(l[xt])*n,m:w(l[_t])*n,s:w(l[Tt])*n,ms:w(je(1e3*l[wt]))*n}):(l=Ue.exec(t))?c={y:Ke(l[2],n="-"===l[1]?-1:1),M:Ke(l[3],n),w:Ke(l[4],n),d:Ke(l[5],n),h:Ke(l[6],n),m:Ke(l[7],n),s:Ke(l[8],n)}:null==c?c={}:"object"==typeof c&&("from"in c||"to"in c)&&(i=De(c.from),o=De(c.to),r=i.isValid()&&o.isValid()?(o=Ye(o,i),i.isBefore(o)?s=$e(i,o):((s=$e(o,i)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(c={}).ms=r.milliseconds,c.M=r.months),a=new Me(c),qe(t)&&d(t,"_locale")&&(a._locale=t._locale),a}function Ke(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function $e(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),Xe(this,We(n="string"==typeof n?+n:n,a),t),this}}function Xe(t,e,n,a){var i=e._milliseconds,o=je(e._days),s=je(e._months);t.isValid()&&(a=null==a||a,s&&qt(t,Dt(t,"Month")+s*n),o&&At(t,"Date",Dt(t,"Date")+o*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,o||s))}We.fn=Me.prototype,We.invalid=function(){return We(NaN)};var Je=Ze(1,"add"),Qe=Ze(-1,"subtract");function tn(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 en(t){var e;return void 0===t?this._locale._abbr:(null!=(e=fe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var nn=k("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 an(){return this._locale}var rn=126227808e5;function on(t,e){return(t%e+e)%e}function sn(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-rn:new Date(t,e,n).valueOf()}function un(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-rn:Date.UTC(t,e,n)}function cn(t,e){V(0,[t,t.length],0,e)}function ln(t,e,n,a,r){var i;return null==t?Bt(this,a,r).year:(e>(i=Ut(t,a,r))&&(e=i),(function(t,e,n,a,r){var i=Vt(t,e,n,a,r),o=Yt(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}).call(this,t,e,n,a,r))}V(0,["gg",2],0,function(){return this.weekYear()%100}),V(0,["GG",2],0,function(){return this.isoWeekYear()%100}),cn("gggg","weekYear"),cn("ggggg","weekYear"),cn("GGGG","isoWeekYear"),cn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),j("weekYear",1),j("isoWeekYear",1),lt("G",it),lt("g",it),lt("GG",J,K),lt("gg",J,K),lt("GGGG",nt,Z),lt("gggg",nt,Z),lt("GGGGG",at,X),lt("ggggg",at,X),gt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,a){e[a.substr(0,2)]=w(t)}),gt(["gg","GG"],function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)}),V("Q",0,"Qo","quarter"),L("quarter","Q"),j("quarter",7),lt("Q",W),ht("Q",function(t,e){e[yt]=3*(w(t)-1)}),V("D",["DD",2],"Do","date"),L("date","D"),j("date",9),lt("D",J),lt("DD",J,K),lt("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),ht(["D","DD"],vt),ht("Do",function(t,e){e[vt]=w(t.match(J)[0])});var dn=Nt("Date",!0);V("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),j("dayOfYear",4),lt("DDD",et),lt("DDDD",$),ht(["DDD","DDDD"],function(t,e,n){n._dayOfYear=w(t)}),V("m",["mm",2],0,"minute"),L("minute","m"),j("minute",14),lt("m",J),lt("mm",J,K),ht(["m","mm"],_t);var pn=Nt("Minutes",!1);V("s",["ss",2],0,"second"),L("second","s"),j("second",15),lt("s",J),lt("ss",J,K),ht(["s","ss"],Tt);var fn,hn=Nt("Seconds",!1);for(V("S",0,0,function(){return~~(this.millisecond()/100)}),V(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),V(0,["SSS",3],0,"millisecond"),V(0,["SSSS",4],0,function(){return 10*this.millisecond()}),V(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),V(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),V(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),V(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),V(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),j("millisecond",16),lt("S",et,W),lt("SS",et,K),lt("SSS",et,$),fn="SSSS";fn.length<=9;fn+="S")lt(fn,rt);function gn(t,e){e[wt]=w(1e3*("0."+t))}for(fn="S";fn.length<=9;fn+="S")ht(fn,gn);var mn=Nt("Milliseconds",!1);V("z",0,0,"zoneAbbr"),V("zz",0,0,"zoneName");var bn=x.prototype;function yn(t){return t}bn.add=Je,bn.calendar=function(t,e){var n=t||De(),a=Ye(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",o=e&&(N(e[i])?e[i].call(this,n):e[i]);return this.format(o||this.localeData().calendar(i,this,De(n)))},bn.clone=function(){return new x(this)},bn.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=Ye(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=tn(this,a)/12;break;case"month":i=tn(this,a);break;case"quarter":i=tn(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)},bn.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?un:sn;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-on(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-on(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-on(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},bn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=B(this,t);return this.localeData().postformat(e)},bn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||De(t).isValid())?We({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bn.fromNow=function(t){return this.from(De(),t)},bn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||De(t).isValid())?We({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bn.toNow=function(t){return this.to(De(),t)},bn.get=function(t){return N(this[t=P(t)])?this[t]():this},bn.invalidAt=function(){return h(this).overflow},bn.isAfter=function(t,e){var n=_(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},bn.isBefore=function(t,e){var n=_(t)?t:De(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},bn.isBetween=function(t,e,n,a){var r=_(t)?t:De(t),i=_(e)?e:De(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))},bn.isSame=function(t,e){var n,a=_(t)?t:De(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()))},bn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},bn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},bn.isValid=function(){return g(this)},bn.lang=nn,bn.locale=en,bn.localeData=an,bn.max=Ee,bn.min=Ae,bn.parsingFlags=function(){return p({},h(this))},bn.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(N(this[t=P(t)]))return this[t](e);return this},bn.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?un:sn;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-=on(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=on(e,6e4);break;case"second":e=this._d.valueOf(),e-=on(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},bn.subtract=Qe,bn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},bn.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()}},bn.toDate=function(){return new Date(this.valueOf())},bn.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?B(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):N(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",B(n,"Z")):B(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},bn.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+'[")]')},bn.toJSON=function(){return this.isValid()?this.toISOString():null},bn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},bn.unix=function(){return Math.floor(this.valueOf()/1e3)},bn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},bn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},bn.year=Rt,bn.isLeapYear=function(){return Ct(this.year())},bn.weekYear=function(t){return ln.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},bn.isoWeekYear=function(t){return ln.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},bn.quarter=bn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},bn.month=jt,bn.daysInMonth=function(){return Et(this.year(),this.month())},bn.week=bn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},bn.isoWeek=bn.isoWeeks=function(t){var e=Bt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},bn.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},bn.isoWeeksInYear=function(){return Ut(this.year(),1,4)},bn.date=dn,bn.day=bn.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},bn.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")},bn.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},bn.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")},bn.hour=bn.hours=ie,bn.minute=bn.minutes=pn,bn.second=bn.seconds=hn,bn.millisecond=bn.milliseconds=mn,bn.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=Ge(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=He(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Xe(this,We(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:He(this)},bn.utc=function(t){return this.utcOffset(0,t)},bn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(He(this),"m")),this},bn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ge(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},bn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?De(t).utcOffset():0,(this.utcOffset()-t)%60==0)},bn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},bn.isLocal=function(){return!!this.isValid()&&!this._isUTC},bn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},bn.isUtc=Ve,bn.isUTC=Ve,bn.zoneAbbr=function(){return this._isUTC?"UTC":""},bn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},bn.dates=k("dates accessor is deprecated. Use date instead.",dn),bn.months=k("months accessor is deprecated. Use month instead",jt),bn.years=k("years accessor is deprecated. Use year instead",Rt),bn.zone=k("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()}),bn.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Re(t))._a){var e=t._isUTC?f(t._a):De(t._a);this._isDSTShifted=this.isValid()&&S(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var vn=A.prototype;function xn(t,e,n,a){var r=fe(),i=f().set(a,e);return r[n](i,t)}function _n(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return xn(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=xn(t,a,n,"month");return r}function Tn(t,e,n,a){"boolean"==typeof t?(u(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,u(e)&&(n=e,e=void 0),e=e||"");var r,i=fe(),o=t?i._week.dow:0;if(null!=n)return xn(e,(n+o)%7,a,"day");var s=[];for(r=0;r<7;r++)s[r]=xn(e,(r+o)%7,a,"day");return s}vn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return N(a)?a.call(e,n):a},vn.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])},vn.invalidDate=function(){return this._invalidDate},vn.ordinal=function(t){return this._ordinal.replace("%d",t)},vn.preparse=yn,vn.postformat=yn,vn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return N(r)?r(t,e,n,a):r.replace(/%d/i,t)},vn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return N(n)?n(e):n.replace(/%s/i,e)},vn.set=function(t){var e,n;for(n in t)N(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)},vn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Lt).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},vn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Lt.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},vn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return(function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=f([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=It.call(this._shortMonthsParse,o))?r:null:-1!==(r=It.call(this._longMonthsParse,o))?r:null:"MMM"===e?-1!==(r=It.call(this._shortMonthsParse,o))?r:-1!==(r=It.call(this._longMonthsParse,o))?r:null:-1!==(r=It.call(this._longMonthsParse,o))?r:-1!==(r=It.call(this._shortMonthsParse,o))?r:null}).call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=f([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}},vn.monthsRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Gt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=zt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},vn.monthsShortRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Gt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Ft),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},vn.week=function(t){return Bt(t,this._week.dow,this._week.doy).week},vn.firstDayOfYear=function(){return this._week.doy},vn.firstDayOfWeek=function(){return this._week.dow},vn.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?Wt(n,this._week.dow):t?n[t.day()]:n},vn.weekdaysMin=function(t){return!0===t?Wt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},vn.weekdaysShort=function(t){return!0===t?Wt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},vn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return(function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=f([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=It.call(this._weekdaysParse,o))?r:null:"ddd"===e?-1!==(r=It.call(this._shortWeekdaysParse,o))?r:null:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:"dddd"===e?-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._shortWeekdaysParse,o))?r:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:"ddd"===e?-1!==(r=It.call(this._shortWeekdaysParse,o))?r:-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:-1!==(r=It.call(this._minWeekdaysParse,o))?r:-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._shortWeekdaysParse,o))?r:null}).call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=f([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}},vn.weekdaysRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},vn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},vn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Qt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},vn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},vn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},de("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=k("moment.lang is deprecated. Use moment.locale instead.",de),r.langData=k("moment.langData is deprecated. Use moment.localeData instead.",fe);var wn=Math.abs;function Sn(t,e,n,a){var r=We(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function On(t){return t<0?Math.floor(t):Math.ceil(t)}function kn(t){return 4800*t/146097}function Cn(t){return 146097*t/4800}function In(t){return function(){return this.as(t)}}var Rn=In("ms"),Nn=In("s"),Dn=In("m"),An=In("h"),En=In("d"),Ln=In("w"),Pn=In("M"),Mn=In("Q"),qn=In("y");function jn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Fn=jn("milliseconds"),zn=jn("seconds"),Gn=jn("minutes"),Yn=jn("hours"),Hn=jn("days"),Vn=jn("months"),Bn=jn("years"),Un=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,M:11},Kn=Math.abs;function $n(t){return(t>0)-(t<0)||+t}function Zn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Kn(this._milliseconds)/1e3,a=Kn(this._days),r=Kn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),o=r%=12,s=a,u=e,c=t,l=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var p=d<0?"-":"",f=$n(this._months)!==$n(d)?"-":"",h=$n(this._days)!==$n(d)?"-":"",g=$n(this._milliseconds)!==$n(d)?"-":"";return p+"P"+(i?f+i+"Y":"")+(o?f+o+"M":"")+(s?h+s+"D":"")+(u||c||l?"T":"")+(u?g+u+"H":"")+(c?g+c+"M":"")+(l?g+l+"S":"")}var Xn=Me.prototype;return Xn.isValid=function(){return this._isValid},Xn.abs=function(){var t=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),t.milliseconds=wn(t.milliseconds),t.seconds=wn(t.seconds),t.minutes=wn(t.minutes),t.hours=wn(t.hours),t.months=wn(t.months),t.years=wn(t.years),this},Xn.add=function(t,e){return Sn(this,t,e,1)},Xn.subtract=function(t,e){return Sn(this,t,e,-1)},Xn.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+kn(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(Cn(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)}},Xn.asMilliseconds=Rn,Xn.asSeconds=Nn,Xn.asMinutes=Dn,Xn.asHours=An,Xn.asDays=En,Xn.asWeeks=Ln,Xn.asMonths=Pn,Xn.asQuarters=Mn,Xn.asYears=qn,Xn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Xn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,o=this._days,s=this._months,u=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*On(Cn(s)+o),o=0,s=0),u.milliseconds=i%1e3,t=T(i/1e3),u.seconds=t%60,e=T(t/60),u.minutes=e%60,n=T(e/60),u.hours=n%24,o+=T(n/24),s+=r=T(kn(o)),o-=On(Cn(r)),a=T(s/12),s%=12,u.days=o,u.months=s,u.years=a,this},Xn.clone=function(){return We(this)},Xn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Xn.milliseconds=Fn,Xn.seconds=zn,Xn.minutes=Gn,Xn.hours=Yn,Xn.days=Hn,Xn.weeks=function(){return T(this.days()/7)},Xn.months=Vn,Xn.years=Bn,Xn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=We(t).abs(),r=Un(a.as("s")),i=Un(a.as("m")),o=Un(a.as("h")),s=Un(a.as("d")),u=Un(a.as("M")),c=Un(a.as("y")),l=r<=Wn.ss&&["s",r]||r<Wn.s&&["ss",r]||i<=1&&["m"]||i<Wn.m&&["mm",i]||o<=1&&["h"]||o<Wn.h&&["hh",o]||s<=1&&["d"]||s<Wn.d&&["dd",s]||u<=1&&["M"]||u<Wn.M&&["MM",u]||c<=1&&["y"]||["yy",c];return l[2]=e,l[3]=+t>0,l[4]=n,(function(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}).apply(null,l)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Xn.toISOString=Zn,Xn.toString=Zn,Xn.toJSON=Zn,Xn.locale=en,Xn.localeData=an,Xn.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Zn),Xn.lang=nn,V("X",0,0,"unix"),V("x",0,0,"valueOf"),lt("x",it),lt("X",/[+-]?\d+(\.\d{1,3})?/),ht("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),ht("x",function(t,e,n){n._d=new Date(w(t))}),r.version="2.24.0",e=De,r.fn=bn,r.min=function(){return Le("isBefore",[].slice.call(arguments,0))},r.max=function(){return Le("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(t){return De(1e3*t)},r.months=function(t,e){return _n(t,e,"months")},r.isDate=c,r.locale=de,r.invalid=m,r.duration=We,r.isMoment=_,r.weekdays=function(t,e,n){return Tn(t,e,n,"weekdays")},r.parseZone=function(){return De.apply(null,arguments).parseZone()},r.localeData=fe,r.isDuration=qe,r.monthsShort=function(t,e){return _n(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return Tn(t,e,n,"weekdaysMin")},r.defineLocale=pe,r.updateLocale=function(t,e){if(null!=e){var n,a,r=oe;null!=(a=le(t))&&(r=a._config),(n=new A(e=D(r,e))).parentLocale=se[t],se[t]=n,de(t)}else null!=se[t]&&(null!=se[t].parentLocale?se[t]=se[t].parentLocale:null!=se[t]&&delete se[t]);return se[t]},r.locales=function(){return C(se)},r.weekdaysShort=function(t,e,n){return Tn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Un:"function"==typeof t&&(Un=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Wn[t]&&(void 0===e?Wn[t]:(Wn[t]=e,"s"===t&&(Wn.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=bn,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))},wnGv:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("CcnG"),r=n("gIcY"),i=n("LvDl"),o=n("QFaf"),s=n("DNAf"),u=n("a96k"),c=function(){function t(t){this.i18n=t,this.data=[],this.options=[],this.messages=new s.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[]}return t.prototype.ngOnInit=function(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()},t.prototype.initFilter=function(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new o.a({filter:this.filter}),this.filteredOptions=(this.options||[]).slice()},t.prototype.initMissingOptions=function(){var t=this,e=this.options.map(function(t){return t.name});this.data.filter(function(t){return-1===e.indexOf(t)}).forEach(function(e){return t.addOption(e)}),this.forceOptionsToReflectData()},t.prototype.addOption=function(t){this.options.push(new u.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(function(e){return e.name===t}))},t.prototype.triggerSelection=function(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))},t.prototype.updateOptions=function(){var t=this;this.data.splice(0,this.data.length),this.options.forEach(function(e){e.selected&&t.data.push(e.name)}),this.updateFilter()},t.prototype.updateFilter=function(){var t=this;this.filteredOptions=this.options.filter(function(e){return e.name.includes(t.filter.value)})},t.prototype.forceOptionsToReflectData=function(){var t=this;this.options.forEach(function(e){-1!==t.data.indexOf(e.name)&&(e.selected=!0)})},t.prototype.ngOnChanges=function(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()},t.prototype.selectOption=function(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())},t.prototype.addCustomOption=function(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())},t.prototype.isCreatable=function(){var t=this;return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(function(e){return e.name!==t.filter.value})},t.prototype.resetFilter=function(){this.filter.setValue(""),this.updateFilter()},t.prototype.removeItem=function(t){this.triggerSelection(this.options.find(function(e){return e.name===t&&e.selected}))},t}()},x38r:function(t,e,n){"use strict";var a;n.d(e,"a",function(){return a}),function(t){t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding"}(a||(a={}))},x6pH:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]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:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(t){return 2===t?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":t+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(t){return 2===t?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":t+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(t){return 2===t?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":t+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(t){return 2===t?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":t%10==0&&10!==t?t+" \u05e9\u05e0\u05d4":t+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(t){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(t)},meridiem:function(t,e,n){return t<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":t<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":t<12?n?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":t<18?n?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}})}()},x8uC:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha");a._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:i.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:i.noop,beforeBody:i.noop,beforeLabel:i.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+t.yLabel},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:i.noop,afterBody:i.noop,beforeFooter:i.noop,footer:i.noop,afterFooter:i.noop}}});var o={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 o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();a+=s.x,r+=s.y,++i}}return{x:Math.round(a/i),y:Math.round(r/i)}},nearest:function(t,e){var n,a,r,o=e.x,s=e.y,u=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var c=t[n];if(c&&c.hasValue()){var l=c.getCenterPoint(),d=i.distanceBetweenPoints(e,l);d<u&&(u=d,r=c)}}if(r){var p=r.tooltipPosition();o=p.x,s=p.y}return{x:o,y:s}}};function s(t,e){var n=i.color(t);return n.alpha(e*n.alpha()).rgbaString()}function u(t,e){return e&&(i.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function c(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function l(t){var e=a.global,n=i.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(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 d(t){return u([],c(t))}(t.exports=r.extend({initialize:function(){this._model=l(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),a=t.afterTitle.apply(this,arguments),r=[];return r=u(r,c(e)),r=u(r,c(n)),u(r,c(a))},getBeforeBody:function(){return d(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return i.each(t,function(t){var i={before:[],lines:[],after:[]};u(i.before,c(a.beforeLabel.call(n,t,e))),u(i.lines,a.label.call(n,t,e)),u(i.after,c(a.afterLabel.call(n,t,e))),r.push(i)}),r},getAfterBody:function(){return d(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),a=t.afterFooter.apply(this,arguments),r=[];return r=u(r,c(e)),r=u(r,c(n)),u(r,c(a))},update:function(t){var e,n,a,r,s,u,c,d=this,p=d._options,f=d._model,h=d._model=l(p),g=d._active,m=d._data,b={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},v={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(g.length){h.opacity=1;var _=[],T=[];x=o[p.position].call(d,g,d._eventPosition);var w=[];for(e=0,n=g.length;e<n;++e)w.push((r=void 0,s=void 0,s=(a=g[e])._yScale||a._scale,u=a._index,c=a._datasetIndex,{xLabel:(r=a._xScale)?r.getLabelForIndex(u,c):"",yLabel:s?s.getLabelForIndex(u,c):"",index:u,datasetIndex:c,x:a._model.x,y:a._model.y}));p.filter&&(w=w.filter(function(t){return p.filter(t,m)})),p.itemSort&&(w=w.sort(function(t,e){return p.itemSort(t,e,m)})),i.each(w,function(t){_.push(p.callbacks.labelColor.call(d,t,d._chart)),T.push(p.callbacks.labelTextColor.call(d,t,d._chart))}),h.title=d.getTitle(w,m),h.beforeBody=d.getBeforeBody(w,m),h.body=d.getBody(w,m),h.afterBody=d.getAfterBody(w,m),h.footer=d.getFooter(w,m),h.x=Math.round(x.x),h.y=Math.round(x.y),h.caretPadding=p.caretPadding,h.labelColors=_,h.labelTextColors=T,h.dataPoints=w,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0),u=e.title.length,c=e.footer.length,l=e.titleFontSize,d=e.bodyFontSize,p=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+=c?e.footerMarginTop:0,a+=c*p,a+=c?(c-1)*e.footerSpacing:0;var f=0,h=function(t){r=Math.max(r,n.measureText(t).width+f)};return n.font=i.fontString(l,e._titleFontStyle,e._titleFontFamily),i.each(e.title,h),n.font=i.fontString(d,e._bodyFontStyle,e._bodyFontFamily),i.each(e.beforeBody.concat(e.afterBody),h),f=e.displayColors?d+2:0,i.each(o,function(t){i.each(t.before,h),i.each(t.lines,h),i.each(t.after,h)}),f=0,n.font=i.fontString(p,e._footerFontStyle,e._footerFontFamily),i.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,h),y=function(t,e,n,a){var r=t.x,i=t.y,o=t.caretPadding,s=n.xAlign,u=n.yAlign,c=t.caretSize+o,l=t.cornerRadius+o;return"right"===s?r-=e.width:"center"===s&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===u?i+=c:i-="bottom"===u?e.height+c:e.height/2,"center"===u?"left"===s?r+=c:"right"===s&&(r-=c):"left"===s?r-=l:"right"===s&&(r+=l),{x:r,y:i}}(h,v,b=function(t,e){var n,a,r,i,o,s=t._model,u=t._chart,c=t._chart.chartArea,l="center",d="center";s.y<e.height?d="top":s.y>u.height-e.height&&(d="bottom");var p=(c.left+c.right)/2,f=(c.top+c.bottom)/2;"center"===d?(n=function(t){return t<=p},a=function(t){return t>p}):(n=function(t){return t<=e.width/2},a=function(t){return t>=u.width-e.width/2}),r=function(t){return t+e.width+s.caretSize+s.caretPadding>u.width},i=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(l="left",r(s.x)&&(l="center",d=o(s.y))):a(s.x)&&(l="right",i(s.x)&&(l="center",d=o(s.y)));var h=t._options;return{xAlign:h.xAlign?h.xAlign:l,yAlign:h.yAlign?h.yAlign:d}}(this,v),d._chart)}else h.opacity=0;return h.xAlign=b.xAlign,h.yAlign=b.yAlign,h.x=y.x,h.y=y.y,h.width=v.width,h.height=v.height,h.caretX=x.x,h.caretY=x.y,d._model=h,t&&p.custom&&p.custom.call(d,h),d},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,o,s,u,c=n.caretSize,l=n.cornerRadius,d=n.xAlign,p=n.yAlign,f=t.x,h=t.y,g=e.width,m=e.height;if("center"===p)s=h+m/2,"left"===d?(r=(a=f)-c,i=a,o=s+c,u=s-c):(r=(a=f+g)+c,i=a,o=s-c,u=s+c);else if("left"===d?(a=(r=f+l+c)-c,i=r+c):"right"===d?(a=(r=f+g-l-c)-c,i=r+c):(a=(r=n.caretX)-c,i=r+c),"top"===p)s=(o=h)-c,u=o;else{s=(o=h+m)+c,u=o;var b=i;i=a,a=b}return{x1:a,x2:r,x3:i,y1:o,y2:s,y3:u}},drawTitle:function(t,e,n,a){var r=e.title;if(r.length){n.textAlign=e._titleAlign,n.textBaseline="top";var o,u,c=e.titleFontSize,l=e.titleSpacing;for(n.fillStyle=s(e.titleFontColor,a),n.font=i.fontString(c,e._titleFontStyle,e._titleFontFamily),o=0,u=r.length;o<u;++o)n.fillText(r[o],t.x,t.y),t.y+=c+l,o+1===r.length&&(t.y+=e.titleMarginBottom-l)}},drawBody:function(t,e,n,a){var r=e.bodyFontSize,o=e.bodySpacing,u=e.body;n.textAlign=e._bodyAlign,n.textBaseline="top",n.font=i.fontString(r,e._bodyFontStyle,e._bodyFontFamily);var c=0,l=function(e){n.fillText(e,t.x+c,t.y),t.y+=r+o};n.fillStyle=s(e.bodyFontColor,a),i.each(e.beforeBody,l);var d=e.displayColors;c=d?r+2:0,i.each(u,function(o,u){var c=s(e.labelTextColors[u],a);n.fillStyle=c,i.each(o.before,l),i.each(o.lines,function(i){d&&(n.fillStyle=s(e.legendColorBackground,a),n.fillRect(t.x,t.y,r,r),n.lineWidth=1,n.strokeStyle=s(e.labelColors[u].borderColor,a),n.strokeRect(t.x,t.y,r,r),n.fillStyle=s(e.labelColors[u].backgroundColor,a),n.fillRect(t.x+1,t.y+1,r-2,r-2),n.fillStyle=c),l(i)}),i.each(o.after,l)}),c=0,i.each(e.afterBody,l),t.y-=o},drawFooter:function(t,e,n,a){var r=e.footer;r.length&&(t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=s(e.footerFontColor,a),n.font=i.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),i.each(r,function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,n,a,r){n.fillStyle=s(e.backgroundColor,r),n.strokeStyle=s(e.borderColor,r),n.lineWidth=e.borderWidth;var i=e.xAlign,o=e.yAlign,u=t.x,c=t.y,l=a.width,d=a.height,p=e.cornerRadius;n.beginPath(),n.moveTo(u+p,c),"top"===o&&this.drawCaret(t,a),n.lineTo(u+l-p,c),n.quadraticCurveTo(u+l,c,u+l,c+p),"center"===o&&"right"===i&&this.drawCaret(t,a),n.lineTo(u+l,c+d-p),n.quadraticCurveTo(u+l,c+d,u+l-p,c+d),"bottom"===o&&this.drawCaret(t,a),n.lineTo(u+p,c+d),n.quadraticCurveTo(u,c+d,u,c+d-p),"center"===o&&"left"===i&&this.drawCaret(t,a),n.lineTo(u,c+p),n.quadraticCurveTo(u,c,u+p,c),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)&&(this.drawBackground(a,e,t,n,r),a.x+=e.xPadding,a.y+=e.yPadding,this.drawTitle(a,e,t,r),this.drawBody(a,e,t,r),this.drawFooter(a,e,t,r))}},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=!i.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}})).positioners=o},xMyE:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("+umK"),o=n("2Bdj");function s(t,e,n){return function(a){return a.lift(new u(t,e,n))}}var u=function(){function t(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.nextOrObserver,this.error,this.complete))},t}(),c=function(t){function e(e,n,a,r){var s=t.call(this,e)||this;return s._tapNext=i.a,s._tapError=i.a,s._tapComplete=i.a,s._tapError=a||i.a,s._tapComplete=r||i.a,Object(o.a)(n)?(s._context=s,s._tapNext=n):n&&(s._context=n,s._tapNext=n.next||i.a,s._tapError=n.error||i.a,s._tapComplete=n.complete||i.a),s}return a.__extends(e,t),e.prototype._next=function(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)},e.prototype._error=function(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)},e.prototype._complete=function(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()},e}(r.a)},xSw7:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Fgil"),i=n("aXbf"),o=n("eajB"),s=n("lqqz");n("GgAd"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return l});var u=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,14,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Used:\xa0"])),(t()(),a["\u0275eld"](5,0,null,null,3,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[" ",""])),a["\u0275ppd"](8,1),(t()(),a["\u0275eld"](9,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Free:\xa0"])),(t()(),a["\u0275eld"](12,0,null,null,3,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,["",""])),a["\u0275ppd"](15,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,7,0,t(e,8,0,a["\u0275nov"](e.parent,0),n.usedBytes));t(e,7,0,r);var i=a["\u0275unv"](e,14,0,t(e,15,0,a["\u0275nov"](e.parent,0),n.freeBytes));t(e,14,0,i)})}function l(t){return a["\u0275vid"](0,[a["\u0275pid"](0,r.a,[i.a]),(t()(),a["\u0275and"](0,[["usageTooltipTpl",2]],null,0,null,c)),(t()(),a["\u0275eld"](2,16777216,null,null,5,"div",[["class","progress oaprogress"],["data-placement","left"]],[[1,"aria-describedby",0]],null,null,null,null)),a["\u0275did"](3,212992,null,0,o.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,s.a,o.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["\u0275eld"](4,0,null,null,2,"div",[["class","progress-bar progress-bar-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,["","%"])),(t()(),a["\u0275eld"](7,0,null,null,0,"div",[["class","progress-bar progress-bar-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],function(t,e){t(e,3,0,a["\u0275nov"](e,1),"left")},function(t,e){var n=e.component;t(e,2,0,a["\u0275nov"](e,3).ariaDescribedby),t(e,4,0,n.usedPercentage+"%"),t(e,6,0,n.usedPercentage),t(e,7,0,n.freePercentage+"%")})}},xTla:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a="function"==typeof Symbol&&Symbol.observable||"@@observable"},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(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];switch(t.length){case 1:return(function(t){for(var e=0,n=Object.keys(t.prototype);e<n.length;e++){var a=n[e],r=Object.getOwnPropertyDescriptor(t.prototype,a);r.value instanceof Function&&(o(t.prototype,a,r),Object.defineProperty(t.prototype,a,r))}}).apply(this,t);case 3:return o.apply(this,t);default:throw new Error}}function i(t,e,n){var a="__ignore_"+e;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function o(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));var r=n.value;n.value=function(){for(var n=t["__ignore_"+e]||[],i=[],o=0;o<arguments.length;o++)i[o]=a.isString(arguments[o])&&-1===n.indexOf(o)?encodeURIComponent(arguments[o]):arguments[o];return r.apply(this,i)}}},xXU7:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("T1DM"),i=n("/21U");function o(t,e){return void 0===t&&(t=0),void 0===e&&(e=r.a),(!Object(i.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=r.a),new a.a(function(n){return n.add(e.schedule(s,t,{subscriber:n,counter:0,period:t})),n})}function s(t){var e=t.subscriber,n=t.counter,a=t.period;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}},xZld:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("kQXf"),r=n("88/t"),i=n("58b6"),o=n("xk4V"),s=function(t){return t[t.NotStarted=0]="NotStarted",t[t.Loading=1]="Loading",t[t.Completed=2]="Completed",t}({});e.Tree=function(){function t(e,n,i){void 0===n&&(n=null),void 0===i&&(i=!1);var o=this;this._childrenLoadingState=s.NotStarted,this._childrenAsyncOnce=a.once(function(){return new r.Observable(function(e){setTimeout(function(){o._childrenLoadingState=s.Loading,o._loadChildren(function(n){o._children=(n||[]).map(function(e){return new t(e,o)}),o._childrenLoadingState=s.Completed,e.next(o.children),e.complete()})})})}),this.buildTreeFromModel(e,n,i||Array.isArray(e.children))}return t.isValueEmpty=function(t){return a.isEmpty(a.trim(t))},t.isRenamable=function(t){return a.has(t,"setName")&&a.isFunction(t.setName)&&a.has(t,"toString")&&a.isFunction(t.toString)&&t.toString!==Object.toString},t.cloneTreeShallow=function(e){var n=new t(Object.assign({},e.node));return n._children=e._children,n},t.applyNewValueToRenamable=function(t,e){var n=Object.assign({},t);return n.setName(e),n},t.prototype.buildTreeFromModel=function(e,n,r){var o=this;this.parent=n,this.node=Object.assign(a.omit(e,"children"),{settings:i.TreeModelSettings.merge(e,a.get(n,"node"))},{emitLoadNextLevel:!0===e.emitLoadNextLevel}),a.isFunction(this.node.loadChildren)?this._loadChildren=this.node.loadChildren:a.get(e,"children",[]).forEach(function(e,n){o._addChild(new t(e,o),n)}),Array.isArray(this._children)||(this._children=this.node.loadChildren||r?[]:null)},t.prototype.hasDeferredChildren=function(){return"function"==typeof this._loadChildren},t.prototype.loadingChildrenRequested=function(){this._childrenLoadingState=s.Loading},t.prototype.childrenAreBeingLoaded=function(){return this._childrenLoadingState===s.Loading},t.prototype.childrenWereLoaded=function(){return this._childrenLoadingState===s.Completed},t.prototype.canLoadChildren=function(){return this._childrenLoadingState===s.NotStarted&&this.foldingType===i.FoldingType.Expanded&&!!this._loadChildren},t.prototype.childrenShouldBeLoaded=function(){return!(this.childrenWereLoaded()||!this._loadChildren&&!0!==this.node.emitLoadNextLevel)},Object.defineProperty(t.prototype,"children",{get:function(){return this._children},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenAsync",{get:function(){return this.canLoadChildren()?this._childrenAsyncOnce():r.Observable.of(this.children)},enumerable:!0,configurable:!0}),t.prototype.reloadChildren=function(){var e=this;this.childrenShouldBeLoaded()&&(this._childrenLoadingState=s.Loading,this._loadChildren(function(n){e._children=n&&n.map(function(n){return new t(n,e)}),e._childrenLoadingState=s.Completed}))},t.prototype.setChildren=function(e){var n=this;this._children=e&&e.map(function(e){return new t(e,n)}),this.childrenShouldBeLoaded()&&(this._childrenLoadingState=s.Completed)},t.prototype.createNode=function(e,n){void 0===n&&(n={value:""});var a=new t(n,this,e);return n.id||a.markAsNew(),a.id=a.id||o(),!this.childrenShouldBeLoaded()||this.childrenAreBeingLoaded()||this.childrenWereLoaded()?this.isLeaf()?this.addSibling(a):this.addChild(a):null},Object.defineProperty(t.prototype,"value",{get:function(){return this.node.value},set:function(e){if("string"==typeof e||t.isRenamable(e)){var n=""+e;this.node.value=t.isRenamable(this.value)?t.applyNewValueToRenamable(this.value,n):t.isValueEmpty(n)?this.node.value:n}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checked",{get:function(){return!!a.get(this.node.settings,"checked")},set:function(t){this.node.settings=Object.assign({},this.node.settings,{checked:t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checkedChildren",{get:function(){return this.hasLoadedChildern()?this.children.filter(function(t){return t.checked}):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectionAllowed",{get:function(){var t=a.get(this.node.settings,"selectionAllowed");return!!a.isNil(t)||!!t},set:function(t){this.node.settings=Object.assign({},this.node.settings,{selectionAllowed:t})},enumerable:!0,configurable:!0}),t.prototype.hasLoadedChildern=function(){return!a.isEmpty(this.children)},t.prototype.loadedChildrenAmount=function(){return a.size(this.children)},t.prototype.checkedChildrenAmount=function(){return a.size(this.checkedChildren)},t.prototype.addSibling=function(t,e){return Array.isArray(a.get(this.parent,"children"))?this.parent.addChild(t,e):null},t.prototype.addChild=function(e,n){var a=this._addChild(t.cloneTreeShallow(e),n);return this._setFoldingType(),this.isNodeCollapsed()&&this.switchFoldingType(),a},t.prototype._addChild=function(t,e){return void 0===e&&(e=a.size(this._children)||0),t.parent=this,Array.isArray(this._children)?this._children.splice(e,0,t):this._children=[t],t},t.prototype.swapWithSibling=function(t){if(this.hasSibling(t)){var e=this.positionInParent;this.parent._children[t.positionInParent]=this,this.parent._children[e]=t}},Object.defineProperty(t.prototype,"positionInParent",{get:function(){return this.isRoot()?-1:this.parent.children?this.parent.children.indexOf(this):-1},enumerable:!0,configurable:!0}),t.prototype.isStatic=function(){return a.get(this.node.settings,"static",!1)},t.prototype.hasLeftMenu=function(){return!a.get(this.node.settings,"static",!1)&&a.get(this.node.settings,"leftMenu",!1)},t.prototype.hasRightMenu=function(){return!a.get(this.node.settings,"static",!1)&&a.get(this.node.settings,"rightMenu",!1)},t.prototype.isLeaf=function(){return!this.isBranch()},Object.defineProperty(t.prototype,"menuItems",{get:function(){return a.get(this.node.settings,"menuItems")},enumerable:!0,configurable:!0}),t.prototype.hasCustomMenu=function(){return!this.isStatic()&&!!a.get(this.node.settings,"menuItems",!1)},t.prototype.isBranch=function(){return!0===this.node.emitLoadNextLevel||Array.isArray(this._children)},t.prototype.hasChildren=function(){return!a.isEmpty(this._children)||this.childrenShouldBeLoaded()},t.prototype.isRoot=function(){return a.isNil(this.parent)},t.prototype.hasSibling=function(t){return!this.isRoot()&&a.includes(this.parent.children,t)},t.prototype.hasChild=function(t){return a.includes(this._children,t)},t.prototype.removeChild=function(t){if(this.hasChildren()){var e=this._children.findIndex(function(e){return e===t});e>=0&&this._children.splice(e,1),this._setFoldingType()}},t.prototype.removeItselfFromParent=function(){this.parent&&this.parent.removeChild(this)},t.prototype.switchFoldingType=function(){!this.isLeaf()&&this.hasChildren()&&(this.disableCollapseOnInit(),this.node._foldingType=this.isNodeExpanded()?i.FoldingType.Collapsed:i.FoldingType.Expanded)},t.prototype.isNodeExpanded=function(){return this.foldingType===i.FoldingType.Expanded},t.prototype.isNodeCollapsed=function(){return this.foldingType===i.FoldingType.Collapsed},t.prototype._setFoldingType=function(){this.node._foldingType=this.childrenShouldBeLoaded()?i.FoldingType.Collapsed:this._children&&!a.isEmpty(this._children)?this.isCollapsedOnInit()?i.FoldingType.Collapsed:i.FoldingType.Expanded:Array.isArray(this._children)?i.FoldingType.Empty:i.FoldingType.Leaf},Object.defineProperty(t.prototype,"foldingType",{get:function(){return this.node._foldingType||this._setFoldingType(),this.node._foldingType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"foldingCssClass",{get:function(){return this.getCssClassesFromSettings()||this.foldingType.cssClass},enumerable:!0,configurable:!0}),t.prototype.getCssClassesFromSettings=function(){return this.node._foldingType||this._setFoldingType(),a.get(this.node.settings,this.node._foldingType===i.FoldingType.Collapsed?"cssClasses.collapsed":this.node._foldingType===i.FoldingType.Expanded?"cssClasses.expanded":this.node._foldingType===i.FoldingType.Empty?"cssClasses.empty":"cssClasses.leaf",null)},Object.defineProperty(t.prototype,"nodeTemplate",{get:function(){return this.getTemplateFromSettings()},enumerable:!0,configurable:!0}),t.prototype.getTemplateFromSettings=function(){return this.isLeaf()?a.get(this.node.settings,"templates.leaf",""):a.get(this.node.settings,"templates.node","")},Object.defineProperty(t.prototype,"leftMenuTemplate",{get:function(){return this.hasLeftMenu()?a.get(this.node.settings,"templates.leftMenu","<span></span>"):""},enumerable:!0,configurable:!0}),t.prototype.disableCollapseOnInit=function(){this.node.settings&&(this.node.settings.isCollapsedOnInit=!1)},t.prototype.isCollapsedOnInit=function(){return!!a.get(this.node.settings,"isCollapsedOnInit")},t.prototype.keepNodesInDOM=function(){return a.get(this.node.settings,"keepNodesInDOM")},t.prototype.isNew=function(){return this.node._status===i.TreeStatus.New},Object.defineProperty(t.prototype,"id",{get:function(){return a.get(this.node,"id")},set:function(t){this.node.id=t},enumerable:!0,configurable:!0}),t.prototype.markAsNew=function(){this.node._status=i.TreeStatus.New},t.prototype.isBeingRenamed=function(){return this.node._status===i.TreeStatus.IsBeingRenamed},t.prototype.markAsBeingRenamed=function(){this.node._status=i.TreeStatus.IsBeingRenamed},t.prototype.isModified=function(){return this.node._status===i.TreeStatus.Modified},t.prototype.markAsModified=function(){this.node._status=i.TreeStatus.Modified},t.prototype.toTreeModel=function(){var t=a.defaultsDeep(this.isLeaf()?{}:{children:[]},this.node);return this.children&&this.children.forEach(function(e){t.children.push(e.toTreeModel())}),t},t}()},xbqr:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("9GXa"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[".warning-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.warning-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","warning"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","warning-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-warning alert-warning"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","warning-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","warning-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,1,0,"warning")},function(t,e){t(e,8,0,e.component.title)})}},xdbM:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=n("CcnG"),o=n("WyAD"),s=function(){function t(t){this.labels=[],this.options={},this.chartClick=new i.EventEmitter,this.chartHover=new i.EventEmitter,this.initFlag=!1,this.element=t}return t.prototype.ngOnInit=function(){this.ctx=this.element.nativeElement.getContext("2d"),this.cvs=this.element.nativeElement,this.initFlag=!0,(this.data||this.datasets)&&this.refresh()},t.prototype.ngOnChanges=function(t){this.initFlag&&(t.hasOwnProperty("data")||t.hasOwnProperty("datasets")?(this.updateChartData(t.data?t.data.currentValue:t.datasets.currentValue),this.chart.update()):this.refresh())},t.prototype.ngOnDestroy=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.getChartBuilder=function(t){var e=this,n=this.getDatasets(),a=Object.assign({},this.options);return!1===this.legend&&(a.legend={display:!1}),a.hover=a.hover||{},a.hover.onHover||(a.hover.onHover=function(t){t&&!t.length||e.chartHover.emit({active:t})}),a.onClick||(a.onClick=function(t,n){e.chartClick.emit({event:t,active:n})}),new o.Chart(t,{type:this.chartType,data:{labels:this.labels,datasets:n},options:a})},t.prototype.updateChartData=function(t){Array.isArray(t[0].data)?this.chart.data.datasets.forEach(function(e,n){e.data=t[n].data,t[n].label&&(e.label=t[n].label)}):this.chart.data.datasets[0].data=t},t.prototype.getDatasets=function(){var t=this,e=void 0;if((!this.datasets||!this.datasets.length&&this.data&&this.data.length)&&(e=Array.isArray(this.data[0])?this.data.map(function(e,n){return{data:e,label:t.labels[n]||"Label "+n}}):[{data:this.data,label:"Label 0"}]),(this.datasets&&this.datasets.length||e&&e.length)&&(e=(this.datasets||e).map(function(e,n){var a=Object.assign({},e);return t.colors&&t.colors.length?Object.assign(a,t.colors[n]):Object.assign(a,function(t,e,n){return"pie"===t||"doughnut"===t?{backgroundColor:(a=p(n)).map(function(t){return u(t,.6)}),borderColor:a.map(function(){return"#fff"}),pointBackgroundColor:a.map(function(t){return u(t,1)}),pointBorderColor:a.map(function(){return"#fff"}),pointHoverBackgroundColor:a.map(function(t){return u(t,1)}),pointHoverBorderColor:a.map(function(t){return u(t,1)})}:"polarArea"===t?function(t){return{backgroundColor:t.map(function(t){return u(t,.6)}),borderColor:t.map(function(t){return u(t,1)}),hoverBackgroundColor:t.map(function(t){return u(t,.8)}),hoverBorderColor:t.map(function(t){return u(t,1)})}}(p(n)):"line"===t||"radar"===t?function(t){return{backgroundColor:u(t,.4),borderColor:u(t,1),pointBackgroundColor:u(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:u(t,.8)}}(d(e)):"bar"===t||"horizontalBar"===t?function(t){return{backgroundColor:u(t,.6),borderColor:u(t,1),hoverBackgroundColor:u(t,.8),hoverBorderColor:u(t,1)}}(d(e)):d(e);var a}(t.chartType,n,a.data.length)),a})),!e)throw new Error("ng-charts configuration error,\n      data or datasets field are required to render char "+this.chartType);return e},t.prototype.refresh=function(){this.ngOnDestroy(),this.chart=this.getChartBuilder(this.ctx)},t.defaultColors=[[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]],t}();function u(t,e){return"rgba("+t.concat(e).join(",")+")"}function c(t,e){return Math.floor(Math.random()*(e-t+1))+t}function l(){return[c(0,255),c(0,255),c(0,255)]}function d(t){return s.defaultColors[t]||l()}function p(t){for(var e=new Array(t),n=0;n<t;n++)e[n]=s.defaultColors[n]||l();return e}a([i.Input(),r("design:type",Array)],s.prototype,"data",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"datasets",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"labels",void 0),a([i.Input(),r("design:type",Object)],s.prototype,"options",void 0),a([i.Input(),r("design:type",String)],s.prototype,"chartType",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"colors",void 0),a([i.Input(),r("design:type",Boolean)],s.prototype,"legend",void 0),a([i.Output(),r("design:type",i.EventEmitter)],s.prototype,"chartClick",void 0),a([i.Output(),r("design:type",i.EventEmitter)],s.prototype,"chartHover",void 0),s=a([i.Directive({selector:"canvas[baseChart]",exportAs:"base-chart"})],s),e.BaseChartDirective=s;var f=function(){return function(){}}();f=a([i.NgModule({declarations:[s],exports:[s],imports:[]})],f),e.ChartsModule=f},xk4V:function(t,e,n){var a=n("4fRq"),r=n("I2ZF");t.exports=function(t,e,n){var i=e&&n||0;"string"==typeof t&&(e="binary"===t?new Array(16):null,t=null);var o=(t=t||{}).random||(t.rng||a)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e)for(var s=0;s<16;++s)e[i+s]=o[s];return e||r(o)}},xlPZ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("KhEm");function r(t,e){return function(n){var r;if(r="function"==typeof t?t:function(){return t},"function"==typeof e)return n.lift(new i(r,e));var o=Object.create(n,a.b);return o.source=n,o.subjectFactory=r,o}}var i=function(){function t(t,e){this.subjectFactory=t,this.selector=e}return t.prototype.call=function(t,e){var n=this.selector,a=this.subjectFactory(),r=n(a).subscribe(t);return r.add(e.subscribe(a)),r},t}()},xtUU:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("Tff5"),i=(n("58b6"),n("xZld"));e.TreeComponent=function(){function t(t){this.treeService=t,this.nodeCreated=new a.EventEmitter,this.nodeRemoved=new a.EventEmitter,this.nodeRenamed=new a.EventEmitter,this.nodeSelected=new a.EventEmitter,this.nodeUnselected=new a.EventEmitter,this.nodeMoved=new a.EventEmitter,this.nodeExpanded=new a.EventEmitter,this.nodeCollapsed=new a.EventEmitter,this.loadNextLevel=new a.EventEmitter,this.nodeChecked=new a.EventEmitter,this.nodeUnchecked=new a.EventEmitter,this.menuItemSelected=new a.EventEmitter,this.subscriptions=[]}return t.prototype.ngOnChanges=function(e){this.tree=this.treeModel?new i.Tree(this.treeModel):t.EMPTY_TREE},t.prototype.ngOnInit=function(){var t=this;this.subscriptions.push(this.treeService.nodeRemoved$.subscribe(function(e){t.nodeRemoved.emit(e)})),this.subscriptions.push(this.treeService.nodeRenamed$.subscribe(function(e){t.nodeRenamed.emit(e)})),this.subscriptions.push(this.treeService.nodeCreated$.subscribe(function(e){t.nodeCreated.emit(e)})),this.subscriptions.push(this.treeService.nodeSelected$.subscribe(function(e){t.nodeSelected.emit(e)})),this.subscriptions.push(this.treeService.nodeUnselected$.subscribe(function(e){t.nodeUnselected.emit(e)})),this.subscriptions.push(this.treeService.nodeMoved$.subscribe(function(e){t.nodeMoved.emit(e)})),this.subscriptions.push(this.treeService.nodeExpanded$.subscribe(function(e){t.nodeExpanded.emit(e)})),this.subscriptions.push(this.treeService.nodeCollapsed$.subscribe(function(e){t.nodeCollapsed.emit(e)})),this.subscriptions.push(this.treeService.menuItemSelected$.subscribe(function(e){t.menuItemSelected.emit(e)})),this.subscriptions.push(this.treeService.loadNextLevel$.subscribe(function(e){t.loadNextLevel.emit(e)})),this.subscriptions.push(this.treeService.nodeChecked$.subscribe(function(e){t.nodeChecked.emit(e)})),this.subscriptions.push(this.treeService.nodeUnchecked$.subscribe(function(e){t.nodeUnchecked.emit(e)}))},t.prototype.getController=function(){return this.rootComponent.controller},t.prototype.getControllerByNodeId=function(t){return this.treeService.getController(t)},t.prototype.ngOnDestroy=function(){this.subscriptions.forEach(function(t){return t&&t.unsubscribe()})},t.EMPTY_TREE=new i.Tree({value:""}),t.decorators=[{type:a.Component,args:[{selector:"tree",template:'<tree-internal #rootComponent [tree]="tree" [settings]="settings" [template]="template"></tree-internal>',providers:[r.TreeService]}]}],t.propDecorators={treeModel:[{type:a.Input,args:["tree"]}],settings:[{type:a.Input}],nodeCreated:[{type:a.Output}],nodeRemoved:[{type:a.Output}],nodeRenamed:[{type:a.Output}],nodeSelected:[{type:a.Output}],nodeUnselected:[{type:a.Output}],nodeMoved:[{type:a.Output}],nodeExpanded:[{type:a.Output}],nodeCollapsed:[{type:a.Output}],loadNextLevel:[{type:a.Output}],nodeChecked:[{type:a.Output}],nodeUnchecked:[{type:a.Output}],menuItemSelected:[{type:a.Output}],rootComponent:[{type:a.ViewChild,args:["rootComponent"]}],template:[{type:a.ContentChild,args:[a.TemplateRef]}]},t}()},xtZt:function(t,e,n){"use strict";n.d(e,"c",function(){return p}),n.d(e,"d",function(){return f}),n.d(e,"g",function(){return h}),n.d(e,"b",function(){return d}),n.d(e,"f",function(){return l}),n.d(e,"a",function(){return c}),n.d(e,"e",function(){return g});var a=n("CcnG"),r=n("rpEJ"),i=n("mrSG"),o=n("VnD/"),s=n("lqqz"),u=n("NJnL"),c=function(){return function(){this.autoClose=!0,this.insideClick=!1}}(),l=function(){return function(){var t=this;this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(function(e){t.resolveDropdownMenu=e})}}(),d=function(){function t(t,e,n,a){var i=this;this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._subscription=t.isOpenChange.subscribe(function(t){i.isOpen=t;var e=i._element.nativeElement.querySelector(".dropdown-menu");e&&!Object(r.d)()&&(i._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(i._renderer.setStyle(e,"left","auto"),i._renderer.setStyle(e,"right","0")),"up"===i.direction&&(i._renderer.setStyle(e,"top","auto"),i._renderer.setStyle(e,"transform","translateY(-101%)"))),i.cd.markForCheck(),i.cd.detectChanges()})}return Object.defineProperty(t.prototype,"direction",{get:function(){return this._state.direction},enumerable:!0,configurable:!0}),t.prototype._contains=function(t){return this._element.nativeElement.contains(t)},t.prototype.ngOnDestroy=function(){this._subscription.unsubscribe()},t}(),p=function(){function t(t,e,n,a,r,i){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._config=r,this._state=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:l,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}return Object.defineProperty(t.prototype,"autoClose",{get:function(){return this._state.autoClose},set:function(t){this._state.autoClose=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"insideClick",{get:function(){return this._state.insideClick},set:function(t){this._state.insideClick=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isDisabled",{get:function(){return this._isDisabled},set:function(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._showInline?this._isInlineOpen:this._dropdown.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(r.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_showInline",{get:function(){return!this.container},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:function(){return t.show()}}),this._subscriptions.push(this._state.toggleClick.subscribe(function(e){return t.toggle(e)})),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(o.a)(function(t){return t})).subscribe(function(e){return t.hide()})))},t.prototype.show=function(){var t=this;if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(function(e){t._dropdown.attachInline(e.viewContainer,e.templateRef),t._inlinedMenu=t._dropdown._inlineViewRef,t.addBs4Polyfills()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),void this._state.isOpenChange.emit(!0)):void this._state.dropdownMenu.then(function(e){var n=t.dropup||void 0!==t.dropup&&t.dropup;t._state.direction=n?"up":"down";var a=t.placement||(n?"top left":"bottom left");t._dropdown.attach(d).to(t.container).position({attachment:a}).show({content:e.templateRef,placement:a}),t._state.isOpenChange.emit(!0)}).catch()},t.prototype.hide=function(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))},t.prototype.toggle=function(t){return this.isOpen||!t?this.hide():this.show()},t.prototype._contains=function(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)},t.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._dropdown.dispose()},t.prototype.addBs4Polyfills=function(){Object(r.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())},t.prototype.addShowClass=function(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")},t.prototype.removeShowClass=function(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")},t.prototype.checkRightAlignment=function(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){var 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")}},t.prototype.addDropupStyles=function(){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"))},t.prototype.removeDropupStyles=function(){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"))},t}(),f=function(){return function(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}(),h=function(){function t(t,e,n){var a=this;this._state=t,this._element=e,this.dropdown=n,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(function(t){return a.isOpen=t})),this._subscriptions.push(this._state.isDisabledChange.subscribe(function(t){return a.isDisabled=t||null}))}return t.prototype.onClick=function(){this.isDisabled||this._state.toggleClick.emit(!0)},t.prototype.onDocumentClick=function(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)},t.prototype.onEsc=function(){this._state.autoClose&&this._state.toggleClick.emit(!1)},t.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t}(),g=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[s.a,u.a,l,{provide:c,useValue:e||{autoClose:!0,insideClick:!1}}]}},t}()},y3By:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var a=n("+umK");function r(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce(function(t,e){return e(t)},e)}:a.a}},y9Z7:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.selectRows=function(t,e,n){var a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t},e.selectRowsBetween=function(t,e,n,a,r){for(var i=n<a,o=0;o<e.length;o++){var s;s=i?{start:n,end:a}:{start:a,end:n+1},(i&&o<=a&&o>=n||!i&&o>=a&&o<=n)&&o>=s.start&&o<=s.end&&t.push(e[o])}return t}},y9jh:function(t,e,n){var a;"undefined"!=typeof self&&self,a=function(t,e,n,a,r){return function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.ts")}({"./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./node_modules/sass-loader/lib/loader.js??ref--3-4!./src/components/datatable.component.scss":function(t,e,n){(t.exports=n("./node_modules/css-loader/lib/css-base.js")(!1)).push([t.i,".ngx-datatable {\n  display: block;\n  overflow: hidden;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  position: relative;\n  -webkit-transform: translate3d(0, 0, 0);\n  /**\n   * Vertical Scrolling Adjustments\n   */\n  /**\n   * Horizontal Scrolling Adjustments\n   */\n  /**\n   * Fixed Header Height Adjustments\n   */\n  /**\n   * Fixed row height adjustments\n   */\n  /**\n   * Shared Styles\n   */\n  /**\n   * Header Styles\n   */\n  /**\n   * Body Styles\n   */\n  /**\n   * Footer Styles\n   */ }\n  .ngx-datatable [hidden] {\n    display: none !important; }\n  .ngx-datatable *, .ngx-datatable *:before, .ngx-datatable *:after {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box; }\n  .ngx-datatable.scroll-vertical .datatable-body {\n    overflow-y: auto; }\n  .ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper {\n    position: absolute; }\n  .ngx-datatable.scroll-horz .datatable-body {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n  .ngx-datatable.fixed-header .datatable-header .datatable-header-inner {\n    white-space: nowrap; }\n    .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis; }\n  .ngx-datatable.fixed-row .datatable-scroll {\n    white-space: nowrap; }\n    .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row {\n      white-space: nowrap; }\n      .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell {\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis; }\n      .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell {\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis; }\n  .ngx-datatable .datatable-body-row,\n  .ngx-datatable .datatable-row-center,\n  .ngx-datatable .datatable-header-inner {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n    -ms-flex-flow: row;\n    -o-flex-flow: row;\n    flex-flow: row; }\n  .ngx-datatable .datatable-body-cell,\n  .ngx-datatable .datatable-header-cell {\n    overflow-x: hidden;\n    vertical-align: top;\n    display: inline-block;\n    line-height: 1.625; }\n    .ngx-datatable .datatable-body-cell:focus,\n    .ngx-datatable .datatable-header-cell:focus {\n      outline: none; }\n  .ngx-datatable .datatable-row-left,\n  .ngx-datatable .datatable-row-right {\n    z-index: 9; }\n  .ngx-datatable .datatable-row-left,\n  .ngx-datatable .datatable-row-center,\n  .ngx-datatable .datatable-row-group,\n  .ngx-datatable .datatable-row-right {\n    position: relative; }\n  .ngx-datatable .datatable-header {\n    display: block;\n    overflow: hidden; }\n    .ngx-datatable .datatable-header .datatable-header-inner {\n      -webkit-box-align: stretch;\n          -ms-flex-align: stretch;\n              align-items: stretch;\n      -webkit-align-items: stretch; }\n    .ngx-datatable .datatable-header .datatable-header-cell {\n      position: relative;\n      display: inline-block; }\n      .ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper {\n        cursor: pointer; }\n      .ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper {\n        cursor: move; }\n      .ngx-datatable .datatable-header .datatable-header-cell .sort-btn {\n        line-height: 100%;\n        vertical-align: middle;\n        display: inline-block;\n        cursor: pointer; }\n      .ngx-datatable .datatable-header .datatable-header-cell .resize-handle, .ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable {\n        display: inline-block;\n        position: absolute;\n        right: 0;\n        top: 0;\n        bottom: 0;\n        width: 5px;\n        padding: 0 4px;\n        visibility: hidden; }\n      .ngx-datatable .datatable-header .datatable-header-cell .resize-handle {\n        cursor: ew-resize; }\n      .ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle {\n        visibility: visible; }\n      .ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable {\n        visibility: visible; }\n      .ngx-datatable .datatable-header .datatable-header-cell .targetMarker {\n        position: absolute;\n        top: 0;\n        bottom: 0; }\n        .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft {\n          right: 0; }\n        .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight {\n          left: 0; }\n      .ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap {\n        height: inherit; }\n  .ngx-datatable .datatable-body {\n    position: relative;\n    z-index: 10;\n    display: block; }\n    .ngx-datatable .datatable-body .datatable-scroll {\n      display: inline-block; }\n    .ngx-datatable .datatable-body .datatable-row-detail {\n      overflow-y: hidden; }\n    .ngx-datatable .datatable-body .datatable-row-wrapper {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-orient: vertical;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n      flex-direction: column; }\n    .ngx-datatable .datatable-body .datatable-body-row {\n      outline: none; }\n      .ngx-datatable .datatable-body .datatable-body-row > div {\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex; }\n  .ngx-datatable .datatable-footer {\n    display: block;\n    width: 100%; }\n    .ngx-datatable .datatable-footer .datatable-footer-inner {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-align: center;\n          -ms-flex-align: center;\n              align-items: center;\n      width: 100%; }\n    .ngx-datatable .datatable-footer .selected-count .page-count {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 40%;\n              flex: 1 1 40%; }\n    .ngx-datatable .datatable-footer .selected-count .datatable-pager {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 60%;\n              flex: 1 1 60%; }\n    .ngx-datatable .datatable-footer .page-count {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 20%;\n              flex: 1 1 20%; }\n    .ngx-datatable .datatable-footer .datatable-pager {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 80%;\n              flex: 1 1 80%;\n      text-align: right; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager,\n      .ngx-datatable .datatable-footer .datatable-pager .pager li {\n        padding: 0;\n        margin: 0;\n        display: inline-block;\n        list-style: none; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li, .ngx-datatable .datatable-footer .datatable-pager .pager li a {\n        outline: none; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li a {\n        cursor: pointer;\n        display: inline-block; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {\n        cursor: not-allowed; }\n",""])},"./node_modules/css-loader/lib/css-base.js":function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",a=t[3];if(!a)return n;if(e&&"function"==typeof btoa){var r="/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */",i=a.sources.map(function(t){return"/*# sourceURL="+a.sourceRoot+t+" */"});return[n].concat(i).concat([r]).join("\n")}return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var a={},r=0;r<this.length;r++){var i=this[r][0];"number"==typeof i&&(a[i]=!0)}for(r=0;r<t.length;r++){var o=t[r];"number"==typeof o[0]&&a[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),e.push(o))}},e}},"./node_modules/webpack/buildin/global.js":function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(a){"object"==typeof window&&(n=window)}t.exports=n},"./src/components/body/body-cell.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=n("./src/types/index.ts");n("./src/events.ts"),e.DataTableBodyCellComponent=function(){function t(t,e){this.cd=e,this.activate=new i.EventEmitter,this.treeAction=new i.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}return Object.defineProperty(t.prototype,"group",{get:function(){return this._group},set:function(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowHeight",{get:function(){return this._rowHeight},set:function(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this._isSelected},set:function(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"row",{get:function(){return this._row},set:function(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"treeStatus",{get:function(){return this._treeStatus},set:function(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var 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)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===s.SortDirection.asc&&(t+=" sort-asc"),this.sortDir===s.SortDirection.desc&&(t+=" sort-desc"),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){var t=this.rowHeight;return isNaN(t)?t:t+"px"},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.checkValueUpdates()},t.prototype.ngOnDestroy=function(){this.cellTemplate&&this.cellTemplate.clear()},t.prototype.checkValueUpdates=function(){var t="";if(this.row&&this.column){var 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())},t.prototype.onFocus=function(){this.isFocused=!0},t.prototype.onBlur=function(){this.isFocused=!1},t.prototype.onClick=function(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})},t.prototype.onDblClick=function(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})},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.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}))},t.prototype.onCheckboxChange=function(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"})},t.prototype.calcSortDir=function(t){var e=this;if(t){var n=t.find(function(t){return t.prop===e.column.prop});return n?n.dir:void 0}},t.prototype.stripHtml=function(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t},t.prototype.onTreeAction=function(){this.treeAction.emit(this.row)},t.prototype.calcLeftMargin=function(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0},a([i.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"group",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowHeight",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"isSelected",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"row",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"treeStatus",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild("cellTemplate",{read:i.ViewContainerRef}),r("design:type",i.ViewContainerRef)],t.prototype,"cellTemplate",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"height",null),a([i.HostListener("focus"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onFocus",null),a([i.HostListener("blur"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onBlur",null),a([i.HostListener("click",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onClick",null),a([i.HostListener("dblclick",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onDblClick",null),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.Component({selector:"datatable-body-cell",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div class="datatable-body-cell-label"\n      [style.margin-left.px]="calcLeftMargin(column, row)">\n      <label\n        *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="isSelected"\n          (click)="onCheckboxChange($event)"\n        />\n      </label>\n      <ng-container *ngIf="column.isTreeColumn">\n        <button *ngIf="!column.treeToggleTemplate"\n          class="datatable-tree-button"\n          [disabled]="treeStatus===\'disabled\'"\n          (click)="onTreeAction()">\n          <span>\n            <i *ngIf="treeStatus===\'loading\'"\n              class="icon datatable-icon-collapse"></i>\n            <i *ngIf="treeStatus===\'collapsed\'"\n              class="icon datatable-icon-up"></i>\n            <i *ngIf="treeStatus===\'expanded\' ||\n                      treeStatus===\'disabled\'"\n              class="icon datatable-icon-down"></i>\n          </span>\n        </button>\n        <ng-template *ngIf="column.treeToggleTemplate"\n          [ngTemplateOutlet]="column.treeToggleTemplate"\n          [ngTemplateOutletContext]="{ cellContext: cellContext }">\n        </ng-template>\n      </ng-container>\n\n      <span\n        *ngIf="!column.cellTemplate"\n        [title]="sanitizedValue"\n        [innerHTML]="value">\n      </span>\n      <ng-template #cellTemplate\n        *ngIf="column.cellTemplate"\n        [ngTemplateOutlet]="column.cellTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n    </div>\n  '}),r("design:paramtypes",[i.ElementRef,i.ChangeDetectorRef])],t)}()},"./src/components/body/body-group-header-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DatatableGroupHeaderTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-group-header-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/body/body-group-header.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/body/body-group-header-template.directive.ts");e.DatatableGroupHeaderDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandGroup=function(t){this.toggle.emit({type:"group",value:t})},t.prototype.expandAllGroups=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllGroups=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableGroupHeaderTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-group-header"})],t)}()},"./src/components/body/body-row-wrapper.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");n("./src/events.ts"),e.DataTableRowWrapperComponent=function(){function t(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new i.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()}return Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())},t.prototype.onContextmenu=function(t){this.rowContextmenu.emit({event:t,row:this.row})},t.prototype.getGroupHeaderStyle=function(){var t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t},a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"detailRowHeight",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-row-wrapper",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div \n      *ngIf="groupHeader && groupHeader.template"\n      class="datatable-group-header"\n      [ngStyle]="getGroupHeaderStyle()">\n      <ng-template\n        *ngIf="groupHeader && groupHeader.template"\n        [ngTemplateOutlet]="groupHeader.template"\n        [ngTemplateOutletContext]="groupContext">\n      </ng-template>\n    </div>\n    <ng-content \n      *ngIf="(groupHeader && groupHeader.template && expanded) || \n             (!groupHeader || !groupHeader.template)">\n    </ng-content>\n    <div\n      *ngIf="rowDetail && rowDetail.template && expanded"\n      [style.height.px]="detailRowHeight"\n      class="datatable-row-detail">\n      <ng-template\n        *ngIf="rowDetail && rowDetail.template"\n        [ngTemplateOutlet]="rowDetail.template"\n        [ngTemplateOutletContext]="rowContext">\n      </ng-template>\n    </div>\n  ',host:{class:"datatable-row-wrapper"}}),r("design:paramtypes",[i.ChangeDetectorRef,i.KeyValueDiffers])],t)}()},"./src/components/body/body-row.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/utils/index.ts"),u=n("./src/services/index.ts");n("./src/events.ts"),e.DataTableBodyRowComponent=function(){function t(t,e,n,a){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new o.EventEmitter,this.treeAction=new o.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=a.nativeElement,this._rowDiffer=t.find({}).create()}return Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._columns){var e=s.columnsByPin(this._columns);this._columnGroupWidths=s.columnGroupWidths(e,e)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cssClass",{get:function(){var 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){var e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnsTotalWidths",{get:function(){return this._columnGroupWidths.total},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()},t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.buildStylesByGroup=function(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)s.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);s.translateXY(a,-1*(e.total-r-n+this.scrollbarHelper.width),0)}return a},t.prototype.onActivate=function(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===s.Keys.return||e===s.Keys.down||e===s.Keys.up||e===s.Keys.left||e===s.Keys.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))},t.prototype.onMouseenter=function(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})},t.prototype.recalculateColumns=function(t){void 0===t&&(t=this.columns),this._columns=t;var e=s.columnsByPin(this._columns);this._columnsByPin=s.columnsByPinArr(this._columns),this._columnGroupWidths=s.columnGroupWidths(e,this._columns)},t.prototype.onTreeAction=function(){this.treeAction.emit()},a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([o.Input(),r("design:type",Boolean)],t.prototype,"expanded",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"group",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"isSelected",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowIndex",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeStatus",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([o.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"cssClass",null),a([o.HostBinding("style.height.px"),o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.HostBinding("style.width.px"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"columnsTotalWidths",null),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"activate",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"treeAction",void 0),a([o.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([o.HostListener("mouseenter",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseenter",null),a([o.Component({selector:"datatable-body-row",changeDetection:o.ChangeDetectionStrategy.OnPush,template:'\n    <div\n      *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups"\n      class="datatable-row-{{colGroup.type}} datatable-row-group"\n      [ngStyle]="_groupStyles[colGroup.type]">\n      <datatable-body-cell\n        *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn"\n        tabindex="-1"\n        [row]="row"\n        [group]="group"\n        [expanded]="expanded"\n        [isSelected]="isSelected"\n        [rowIndex]="rowIndex"\n        [column]="column"\n        [rowHeight]="rowHeight"\n        [displayCheck]="displayCheck"\n        [treeStatus]="treeStatus"\n        (activate)="onActivate($event, ii)"\n        (treeAction)="onTreeAction()">\n      </datatable-body-cell>\n    </div>\n  '}),i(1,o.SkipSelf()),r("design:paramtypes",[o.KeyValueDiffers,u.ScrollbarHelper,o.ChangeDetectorRef,o.ElementRef])],t)}()},"./src/components/body/body.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=(n("./src/types/index.ts"),n("./src/components/body/scroller.component.ts"));e.DataTableBodyComponent=function(){function t(t){var e=this;this.cd=t,this.selected=[],this.scroll=new i.EventEmitter,this.page=new i.EventEmitter,this.activate=new i.EventEmitter,this.select=new i.EventEmitter,this.detailToggle=new i.EventEmitter,this.rowContextmenu=new i.EventEmitter(!1),this.treeAction=new i.EventEmitter,this.rowHeightsCache=new o.RowHeightCache,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=new Map,this.getDetailRowHeight=function(t,n){if(!e.rowDetail)return 0;var a=e.rowDetail.rowHeight;return"function"==typeof a?a(t,n):a},this.rowTrackingFn=(function(t,e){var n=this.getRowIndex(e);return this.trackByProp?n+"-"+this.trackByProp:n}).bind(this)}return Object.defineProperty(t.prototype,"pageSize",{get:function(){return this._pageSize},set:function(t){this._pageSize=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,this.rowExpansions.clear(),this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=o.columnsByPin(t);this.columnGroupWidths=o.columnGroupWidths(e,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return this._offset},set:function(t){this._offset=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowCount",{get:function(){return this._rowCount},set:function(t){this._rowCount=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyHeight",{get:function(){return this._bodyHeight},set:function(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectEnabled",{get:function(){return!!this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollHeight",{get:function(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(function(e){var n=e.type,a=e.value;"row"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(function(e){var n=e.type,a=e.value;"group"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()}))},t.prototype.ngOnDestroy=function(){this.rowDetail&&this.listener.unsubscribe(),this.groupHeader&&this.listener.unsubscribe()},t.prototype.updateOffsetY=function(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))},t.prototype.onBodyScroll=function(t){var 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()},t.prototype.updatePage=function(t){var 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})},t.prototype.updateRows=function(){var t=this.indexes,e=t.last,n=t.first,a=0,r=[];if(this.rowIndexes.clear(),this.groupedRows)for(;n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++;else for(;n<e&&n<this.rowCount;){var i=this.rows[n];i&&(this.rowIndexes.set(i,n),r[a]=i),a++,n++}this.temp=r},t.prototype.getRowHeight=function(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight},t.prototype.getGroupHeight=function(t){var e=0;if(t.value)for(var n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e},t.prototype.getRowAndDetailHeight=function(t){var e=this.getRowHeight(t);return 1===this.rowExpansions.get(t)&&(e+=this.getDetailRowHeight(t)),e},t.prototype.getRowsStyles=function(t){var e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){var n=0;if(this.groupedRows){var a=t[t.length-1];n=a?this.getRowIndex(a):0}else n=this.getRowIndex(t);var r=this.rowHeightsCache.query(n-1);o.translateXY(e,0,r)}return e},t.prototype.getBottomSummaryRowStyles=function(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;var t={position:"absolute"},e=this.rowHeightsCache.query(this.rows.length-1);return o.translateXY(t,0,e),t},t.prototype.hideIndicator=function(){var t=this;setTimeout(function(){return t.loadingIndicator=!1},500)},t.prototype.updateIndexes=function(){var t=0,e=0;if(this.scrollbarV)if(this.virtualization){var 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}},t.prototype.refreshRowHeightCache=function(){!this.scrollbarV||this.scrollbarV&&!this.virtualization||(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length&&this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:this.rowExpansions}))},t.prototype.getAdjustedViewPortIndex=function(){var t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t},t.prototype.toggleRowExpansion=function(t){var e=this.getAdjustedViewPortIndex(),n=this.rowExpansions.get(t);if(this.scrollbarV&&this.virtualization){var a=this.getDetailRowHeight(t)*(n?-1:1),r=this.getRowIndex(t);this.rowHeightsCache.update(r,a)}n=n^=1,this.rowExpansions.set(t,n),this.detailToggle.emit({rows:[t],currentIndex:e})},t.prototype.toggleAllRows=function(t){this.rowExpansions.clear();for(var e=t?1:0,n=this.getAdjustedViewPortIndex(),a=0,r=this.rows;a<r.length;a++)this.rowExpansions.set(r[a],e);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:n})},t.prototype.recalcLayout=function(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.stylesByGroup=function(t){var e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n),0)}return a},t.prototype.getRowExpanded=function(t){if(0===this.rowExpansions.size&&this.groupExpansionDefault)for(var e=0,n=this.groupedRows;e<n.length;e++)this.rowExpansions.set(n[e],1);return 1===this.rowExpansions.get(t)},t.prototype.getRowIndex=function(t){return this.rowIndexes.get(t)||0},t.prototype.onTreeAction=function(t){this.treeAction.emit({row:t})},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",String)],t.prototype,"emptyMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",String)],t.prototype,"groupRowsBy",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([i.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"pageSize",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"rows",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowCount",null),a([i.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"bodyWidth",null),a([i.Input(),i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"bodyHeight",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"detailToggle",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild(s.ScrollerComponent),r("design:type",s.ScrollerComponent)],t.prototype,"scroller",void 0),a([i.Component({selector:"datatable-body",template:'\n    <datatable-selection\n      #selector\n      [selected]="selected"\n      [rows]="rows"\n      [selectCheck]="selectCheck"\n      [selectEnabled]="selectEnabled"\n      [selectionType]="selectionType"\n      [rowIdentity]="rowIdentity"\n      (select)="select.emit($event)"\n      (activate)="activate.emit($event)">\n      <datatable-progress\n        *ngIf="loadingIndicator">\n      </datatable-progress>\n      <datatable-scroller\n        *ngIf="rows?.length"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [scrollHeight]="scrollHeight"\n        [scrollWidth]="columnGroupWidths?.total"\n        (scroll)="onBodyScroll($event)">\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'top\'"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n        <datatable-row-wrapper\n          [groupedRows]="groupedRows"\n          *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn;"\n          [innerWidth]="innerWidth"\n          [ngStyle]="getRowsStyles(group)"\n          [rowDetail]="rowDetail"\n          [groupHeader]="groupHeader"\n          [offsetX]="offsetX"\n          [detailRowHeight]="getDetailRowHeight(group[i],i)"\n          [row]="group"\n          [expanded]="getRowExpanded(group)"\n          [rowIndex]="getRowIndex(group[i])"\n          (rowContextmenu)="rowContextmenu.emit($event)">\n          <datatable-body-row\n            *ngIf="!groupedRows; else groupedRowsTemplate"\n            tabindex="-1"\n            [isSelected]="selector.getRowSelected(group)"\n            [innerWidth]="innerWidth"\n            [offsetX]="offsetX"\n            [columns]="columns"\n            [rowHeight]="getRowHeight(group)"\n            [row]="group"\n            [rowIndex]="getRowIndex(group)"\n            [expanded]="getRowExpanded(group)"\n            [rowClass]="rowClass"\n            [displayCheck]="displayCheck"\n            [treeStatus]="group.treeStatus"\n            (treeAction)="onTreeAction(group)"\n            (activate)="selector.onActivate($event, indexes.first + i)">\n          </datatable-body-row>\n          <ng-template #groupedRowsTemplate>\n            <datatable-body-row\n              *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn;"\n              tabindex="-1"\n              [isSelected]="selector.getRowSelected(row)"\n              [innerWidth]="innerWidth"\n              [offsetX]="offsetX"\n              [columns]="columns"\n              [rowHeight]="getRowHeight(row)"\n              [row]="row"\n              [group]="group.value"\n              [rowIndex]="getRowIndex(row)"\n              [expanded]="getRowExpanded(row)"\n              [rowClass]="rowClass"\n              (activate)="selector.onActivate($event, i)">\n            </datatable-body-row>\n          </ng-template>\n        </datatable-row-wrapper>\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'bottom\'"\n          [ngStyle]="getBottomSummaryRowStyles()"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n      </datatable-scroller>\n      <div\n        class="empty-row"\n        *ngIf="!rows?.length && !loadingIndicator"\n        [innerHTML]="emptyMessage">\n      </div>\n    </datatable-selection>\n  ',changeDetection:i.ChangeDetectionStrategy.OnPush,host:{class:"datatable-body"}}),r("design:paramtypes",[i.ChangeDetectorRef])],t)}()},"./src/components/body/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/body/body.component.ts")),a(n("./src/components/body/body-cell.component.ts")),a(n("./src/components/body/body-row.component.ts")),a(n("./src/components/body/progress-bar.component.ts")),a(n("./src/components/body/scroller.component.ts")),a(n("./src/components/body/body-row-wrapper.component.ts")),a(n("./src/components/body/selection.component.ts")),a(n("./src/components/body/body-group-header.directive.ts")),a(n("./src/components/body/body-group-header-template.directive.ts")),a(n("./src/components/body/summary/index.ts"))},"./src/components/body/progress-bar.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core");e.ProgressBarComponent=function(){return a([r.Component({selector:"datatable-progress",template:'\n    <div class="progress-linear" role="progressbar">\n      <div class="container">\n        <div class="bar"></div>\n      </div>\n    </div>\n  ',changeDetection:r.ChangeDetectionStrategy.OnPush})],function(){})}()},"./src/components/body/scroller.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.ScrollerComponent=function(){function t(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new i.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this.element=e.nativeElement}return t.prototype.ngOnInit=function(){if(this.scrollbarV||this.scrollbarH){var t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this.parentElement.addEventListener("scroll",this.onScrolled.bind(this))}},t.prototype.ngOnDestroy=function(){(this.scrollbarV||this.scrollbarH)&&this.parentElement.removeEventListener("scroll",this.onScrolled.bind(this))},t.prototype.setOffset=function(t){this.parentElement&&(this.parentElement.scrollTop=t)},t.prototype.onScrolled=function(t){var e=this,n=t.currentTarget;requestAnimationFrame(function(){e.scrollYPos=n.scrollTop,e.scrollXPos=n.scrollLeft,e.updateOffset()})},t.prototype.updateOffset=function(){var 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},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollHeight",void 0),a([i.HostBinding("style.width.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Component({selector:"datatable-scroller",template:"\n    <ng-content></ng-content>\n  ",host:{class:"datatable-scroll"},changeDetection:i.ChangeDetectionStrategy.OnPush}),r("design:paramtypes",[i.NgZone,i.ElementRef,i.Renderer2])],t)}()},"./src/components/body/selection.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=n("./src/types/index.ts");e.DataTableSelectionComponent=function(){function t(){this.activate=new i.EventEmitter,this.select=new i.EventEmitter}return t.prototype.selectRow=function(t,e,n){var a;if(this.selectEnabled){var r=this.selectionType===s.SelectionType.checkbox,i=this.selectionType===s.SelectionType.multiClick,u=[];u=this.selectionType===s.SelectionType.multi||r||i?t.shiftKey?o.selectRowsBetween([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):o.selectRows(t.ctrlKey||t.metaKey||i||r?this.selected.slice():[],n,this.getRowSelectedIdx.bind(this)):o.selectRows([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(u=u.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),(a=this.selected).push.apply(a,u),this.prevIndex=e,this.select.emit({selected:u})}},t.prototype.onActivate=function(t,e){var n=t.type,a=t.event,r=t.row,i=this.selectionType===s.SelectionType.checkbox;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===o.Keys.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)},t.prototype.onKeyboardFocus=function(t){var e=t.event.keyCode;if(e===o.Keys.up||e===o.Keys.down||e===o.Keys.right||e===o.Keys.left){var n=this.selectionType===s.SelectionType.cell;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}},t.prototype.focusRow=function(t,e){var n=this.getPrevNextRow(t,e);n&&n.focus()},t.prototype.getPrevNextRow=function(t,e){var n=t.parentElement;if(n){var a=void 0;if(e===o.Keys.up?a=n.previousElementSibling:e===o.Keys.down&&(a=n.nextElementSibling),a&&a.children.length)return a.children[0]}},t.prototype.focusCell=function(t,e,n,a){var r;if(n===o.Keys.left)r=t.previousElementSibling;else if(n===o.Keys.right)r=t.nextElementSibling;else if(n===o.Keys.up||n===o.Keys.down){var i=this.getPrevNextRow(e,n);if(i){var s=i.getElementsByClassName("datatable-body-cell");s.length&&(r=s[a])}}r&&r.focus()},t.prototype.getRowSelected=function(t){return this.getRowSelectedIdx(t,this.selected)>-1},t.prototype.getRowSelectedIdx=function(t,e){var n=this;if(!e||!e.length)return-1;var a=this.rowIdentity(t);return e.findIndex(function(t){return n.rowIdentity(t)===a})},a([i.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"selectEnabled",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Component({selector:"datatable-selection",template:"\n    <ng-content></ng-content>\n  ",changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/body/summary/index.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}(n("./src/components/body/summary/summary-row.component.ts"))},"./src/components/body/summary/summary-row.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core");function s(t){var e=t.filter(function(t){return!!t});return e.length?e.some(function(t){return"number"!=typeof t})?null:e.reduce(function(t,e){return t+e}):null}function u(t){return null}e.DataTableSummaryRowComponent=function(){function t(){this.summaryRow={}}return t.prototype.ngOnChanges=function(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())},t.prototype.updateInternalColumns=function(){this._internalColumns=this.columns.map(function(t){return a({},t,{cellTemplate:t.summaryTemplate})})},t.prototype.updateValues=function(){var t=this;this.summaryRow={},this.columns.filter(function(t){return!t.summaryTemplate}).forEach(function(e){var n=t.rows.map(function(t){return t[e.prop]}),a=t.getSummaryFunction(e);t.summaryRow[e.prop]=e.pipe?e.pipe.transform(a(n)):a(n)})},t.prototype.getSummaryFunction=function(t){return void 0===t.summaryFunc?s:null===t.summaryFunc?u:t.summaryFunc},r([o.Input(),i("design:type",Array)],t.prototype,"rows",void 0),r([o.Input(),i("design:type",Array)],t.prototype,"columns",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"rowHeight",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"offsetX",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"innerWidth",void 0),r([o.Component({selector:"datatable-summary-row",template:'\n  <datatable-body-row\n    *ngIf="summaryRow && _internalColumns"\n    tabindex="-1"\n    [innerWidth]="innerWidth"\n    [offsetX]="offsetX"\n    [columns]="_internalColumns"\n    [rowHeight]="rowHeight"\n    [row]="summaryRow"\n    [rowIndex]="-1">\n  </datatable-body-row>\n  ',host:{class:"datatable-summary-row"}})],t)}()},"./src/components/columns/column-cell.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnCellDirective=function(){return a([i.Directive({selector:"[ngx-datatable-cell-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/columns/column-header.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnHeaderDirective=function(){return a([i.Directive({selector:"[ngx-datatable-header-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/columns/column.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/columns/column-header.directive.ts"),s=n("./src/components/columns/column-cell.directive.ts"),u=n("./src/components/columns/tree.directive.ts"),c=n("./src/services/column-changes.service.ts");e.DataTableColumnDirective=function(){function t(t){this.columnChangesService=t,this.isFirstChange=!0}return t.prototype.ngOnChanges=function(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()},a([i.Input(),r("design:type",String)],t.prototype,"name",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"prop",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenLeft",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenRight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"flexGrow",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"comparator",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pipe",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"sortable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"draggable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"canAutoResize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"width",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"checkboxable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"headerCheckboxable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"headerClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"cellClass",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTreeColumn",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"treeLevelIndent",void 0),a([i.Input(),r("design:type",Function)],t.prototype,"summaryFunc",void 0),a([i.Input(),r("design:type",i.TemplateRef)],t.prototype,"summaryTemplate",void 0),a([i.Input(),i.ContentChild(s.DataTableColumnCellDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"cellTemplate",void 0),a([i.Input(),i.ContentChild(o.DataTableColumnHeaderDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"headerTemplate",void 0),a([i.Input(),i.ContentChild(u.DataTableColumnCellTreeToggle,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"treeToggleTemplate",void 0),a([i.Directive({selector:"ngx-datatable-column"}),r("design:paramtypes",[c.ColumnChangesService])],t)}()},"./src/components/columns/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/columns/column.directive.ts")),a(n("./src/components/columns/column-header.directive.ts")),a(n("./src/components/columns/column-cell.directive.ts")),a(n("./src/components/columns/tree.directive.ts"))},"./src/components/columns/tree.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnCellTreeToggle=function(){return a([i.Directive({selector:"[ngx-datatable-tree-toggle]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/datatable.component.scss":function(t,e,n){var a=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./node_modules/sass-loader/lib/loader.js??ref--3-4!./src/components/datatable.component.scss");t.exports="string"==typeof a?a:a.toString()},"./src/components/datatable.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var s=n("@angular/core"),u=n("./src/utils/index.ts"),c=n("./src/services/index.ts"),l=n("./src/types/index.ts"),d=n("./src/components/body/index.ts"),p=n("./src/components/body/body-group-header.directive.ts"),f=n("./src/components/columns/index.ts"),h=n("./src/components/row-detail/index.ts"),g=n("./src/components/footer/index.ts"),m=n("./src/components/header/index.ts"),b=n("rxjs");e.DatatableComponent=function(){function t(t,e,n,a,r,i){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=i,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=l.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=l.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.rowIdentity=function(t){return t},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new s.EventEmitter,this.activate=new s.EventEmitter,this.select=new s.EventEmitter,this.sort=new s.EventEmitter,this.page=new s.EventEmitter,this.reorder=new s.EventEmitter,this.resize=new s.EventEmitter,this.tableContextmenu=new s.EventEmitter(!1),this.treeAction=new s.EventEmitter,this.rowCount=0,this._offsetX=new b.BehaviorSubject(0),this._count=0,this._offset=0,this._subscriptions=[],this.element=a.nativeElement,this.rowDiffer=r.find({}).create()}return Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,t&&(this._internalRows=t.slice()),this.externalSorting||this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"groupRowsBy",{get:function(){return this._groupRowsBy},set:function(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){t&&(this._internalColumns=t.slice(),u.setColumnDefaults(this._internalColumns),this.recalculateColumns()),this._columns=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"limit",{get:function(){return this._limit},set:function(t){this._limit=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)},set:function(t){this._offset=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedHeader",{get:function(){var t=this.headerHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedRow",{get:function(){var t=this.rowHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVertScroll",{get:function(){return this.scrollbarV},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVirtualized",{get:function(){return this.virtualization},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isHorScroll",{get:function(){return this.scrollbarH},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelectable",{get:function(){return void 0!==this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxSelection",{get:function(){return this.selectionType===l.SelectionType.checkbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCellSelection",{get:function(){return this.selectionType===l.SelectionType.cell},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSingleSelection",{get:function(){return this.selectionType===l.SelectionType.single},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiSelection",{get:function(){return this.selectionType===l.SelectionType.multi},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiClickSelection",{get:function(){return this.selectionType===l.SelectionType.multiClick},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnTemplates",{get:function(){return this._columnTemplates},set:function(t){this._columnTemplates=t,this.translateColumns(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){var t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){var e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.recalculate()},t.prototype.ngAfterViewInit=function(){var t=this;this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(function(){t.recalculate(),t.externalPaging&&t.scrollbarV&&t.page.emit({count:t.count,pageSize:t.pageSize,limit:t.limit,offset:0})})},t.prototype.ngAfterContentInit=function(){var t=this;this.columnTemplates.changes.subscribe(function(e){return t.translateColumns(e)}),this.listenForColumnInputChanges()},t.prototype.translateColumns=function(t){if(t){var e=t.toArray();e.length&&(this._internalColumns=u.translateTemplates(e),u.setColumnDefaults(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}},t.prototype.groupArrayBy=function(t,e){var n=new Map;return t.forEach(function(t){var a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,function(t){return{key:t[0],value:t[1]}})},t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=this.rows.slice():this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())},t.prototype.recalculate=function(){this.recalculateDims(),this.recalculateColumns()},t.prototype.onWindowResize=function(){this.recalculate()},t.prototype.recalculateColumns=function(t,e,n){if(void 0===t&&(t=this._internalColumns),void 0===e&&(e=-1),void 0===n&&(n=this.scrollbarH),t){var a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),this.columnMode===l.ColumnMode.force?u.forceFillColumnWidths(t,a,e,n):this.columnMode===l.ColumnMode.flex&&u.adjustColumnWidths(t,a),t}},t.prototype.recalculateDims=function(){var t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){var e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()},t.prototype.recalculatePages=function(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()},t.prototype.onBodyPage=function(t){this.externalPaging&&!this.virtualization||(this.offset=t.offset,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))},t.prototype.onBodyScroll=function(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()},t.prototype.onFooterPage=function(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}))},t.prototype.calcPageSize=function(t){if(void 0===t&&(t=this.rows),this.scrollbarV&&this.virtualization){var e=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(e,0)}return void 0!==this.limit?this.limit:t?t.length:0},t.prototype.calcRowCount=function(t){return void 0===t&&(t=this.rows),this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0},t.prototype.onColumnContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:l.ContextmenuType.header,content:t.column})},t.prototype.onRowContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:l.ContextmenuType.body,content:t.row})},t.prototype.onColumnResize=function(t){var e=t.column,n=t.newValue;if(void 0!==e){var r,i=this._internalColumns.map(function(t,i){return(t=a({},t)).$$id===e.$$id&&(r=i,t.width=n,t.$$oldWidth=n),t});this.recalculateColumns(i,r),this._internalColumns=i,this.resize.emit({column:e,newValue:n})}},t.prototype.onColumnReorder=function(t){var e=t.column,n=t.newValue,r=t.prevValue,i=this._internalColumns.map(function(t){return a({},t)});if(this.swapColumns){var o=i[n];i[n]=e,i[r]=o}else if(n>r){for(var s=i[r],u=r;u<n;u++)i[u]=i[u+1];i[n]=s}else{for(s=i[r],u=r;u>n;u--)i[u]=i[u-1];i[n]=s}this._internalColumns=i,this.reorder.emit({column:e,newValue:n,prevValue:r})},t.prototype.onColumnSort=function(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)},t.prototype.onHeaderSelect=function(t){var e,n;if(this.selectAllRowsOnPage){var a=this.bodyComponent.indexes.first,r=this.bodyComponent.indexes.last,i=this.selected.length===r-a;this.selected=[],i||(e=this.selected).push.apply(e,this._internalRows.slice(a,r))}else i=this.selected.length===this.rows.length,this.selected=[],i||(n=this.selected).push.apply(n,this.rows);this.select.emit({selected:this.selected})},t.prototype.onBodySelect=function(t){this.select.emit(t)},t.prototype.onTreeAction=function(t){var e=this,n=t.row,a=this._rows.findIndex(function(n){return n[e.treeToRelation]===t.row[e.treeToRelation]});this.treeAction.emit({row:n,rowIndex:a})},t.prototype.ngOnDestroy=function(){this._subscriptions.forEach(function(t){return t.unsubscribe()})},t.prototype.listenForColumnInputChanges=function(){var t=this;this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(function(){t.columnTemplates&&t.columnTemplates.notifyOnChanges()}))},t.prototype.sortInternalRows=function(){this._internalRows=u.sortRows(this._internalRows,this._internalColumns,this.sorts)},r([s.Input(),i("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),r([s.Input(),i("design:type",Object),i("design:paramtypes",[Object])],t.prototype,"rows",null),r([s.Input(),i("design:type",String),i("design:paramtypes",[String])],t.prototype,"groupRowsBy",null),r([s.Input(),i("design:type",Array)],t.prototype,"groupedRows",void 0),r([s.Input(),i("design:type",Array),i("design:paramtypes",[Array])],t.prototype,"columns",null),r([s.Input(),i("design:type",Array)],t.prototype,"selected",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"scrollbarV",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"scrollbarH",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"rowHeight",void 0),r([s.Input(),i("design:type",String)],t.prototype,"columnMode",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"headerHeight",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"footerHeight",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"externalPaging",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"externalSorting",void 0),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"limit",null),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"count",null),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"offset",null),r([s.Input(),i("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),r([s.Input(),i("design:type",String)],t.prototype,"selectionType",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"reorderable",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"swapColumns",void 0),r([s.Input(),i("design:type",String)],t.prototype,"sortType",void 0),r([s.Input(),i("design:type",Array)],t.prototype,"sorts",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"cssClasses",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"messages",void 0),r([s.Input(),i("design:type",Function)],t.prototype,"rowIdentity",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"rowClass",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"selectCheck",void 0),r([s.Input(),i("design:type",Function)],t.prototype,"displayCheck",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),r([s.Input(),i("design:type",String)],t.prototype,"trackByProp",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"selectAllRowsOnPage",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"virtualization",void 0),r([s.Input(),i("design:type",String)],t.prototype,"treeFromRelation",void 0),r([s.Input(),i("design:type",String)],t.prototype,"treeToRelation",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"summaryRow",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"summaryHeight",void 0),r([s.Input(),i("design:type",String)],t.prototype,"summaryPosition",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"scroll",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"activate",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"select",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"sort",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"page",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"reorder",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"resize",void 0),r([s.Output(),i("design:type",Object)],t.prototype,"tableContextmenu",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"treeAction",void 0),r([s.HostBinding("class.fixed-header"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isFixedHeader",null),r([s.HostBinding("class.fixed-row"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isFixedRow",null),r([s.HostBinding("class.scroll-vertical"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isVertScroll",null),r([s.HostBinding("class.virtualized"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isVirtualized",null),r([s.HostBinding("class.scroll-horz"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isHorScroll",null),r([s.HostBinding("class.selectable"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isSelectable",null),r([s.HostBinding("class.checkbox-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isCheckboxSelection",null),r([s.HostBinding("class.cell-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isCellSelection",null),r([s.HostBinding("class.single-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isSingleSelection",null),r([s.HostBinding("class.multi-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isMultiSelection",null),r([s.HostBinding("class.multi-click-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isMultiClickSelection",null),r([s.ContentChildren(f.DataTableColumnDirective),i("design:type",s.QueryList),i("design:paramtypes",[s.QueryList])],t.prototype,"columnTemplates",null),r([s.ContentChild(h.DatatableRowDetailDirective),i("design:type",h.DatatableRowDetailDirective)],t.prototype,"rowDetail",void 0),r([s.ContentChild(p.DatatableGroupHeaderDirective),i("design:type",p.DatatableGroupHeaderDirective)],t.prototype,"groupHeader",void 0),r([s.ContentChild(g.DatatableFooterDirective),i("design:type",g.DatatableFooterDirective)],t.prototype,"footer",void 0),r([s.ViewChild(d.DataTableBodyComponent),i("design:type",d.DataTableBodyComponent)],t.prototype,"bodyComponent",void 0),r([s.ViewChild(m.DataTableHeaderComponent),i("design:type",m.DataTableHeaderComponent)],t.prototype,"headerComponent",void 0),r([s.HostListener("window:resize"),u.throttleable(5),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],t.prototype,"onWindowResize",null),r([s.Component({selector:"ngx-datatable",template:'\n    <div\n      visibilityObserver\n      (visible)="recalculate()">\n      <datatable-header\n        *ngIf="headerHeight"\n        [sorts]="sorts"\n        [sortType]="sortType"\n        [scrollbarH]="scrollbarH"\n        [innerWidth]="_innerWidth"\n        [offsetX]="_offsetX | async"\n        [dealsWithGroup]="groupedRows"\n        [columns]="_internalColumns"\n        [headerHeight]="headerHeight"\n        [reorderable]="reorderable"\n        [targetMarkerTemplate]="targetMarkerTemplate"\n        [sortAscendingIcon]="cssClasses.sortAscending"\n        [sortDescendingIcon]="cssClasses.sortDescending"\n        [allRowsSelected]="allRowsSelected"\n        [selectionType]="selectionType"\n        (sort)="onColumnSort($event)"\n        (resize)="onColumnResize($event)"\n        (reorder)="onColumnReorder($event)"\n        (select)="onHeaderSelect($event)"\n        (columnContextmenu)="onColumnContextmenu($event)">\n      </datatable-header>\n      <datatable-body\n        [groupRowsBy]="groupRowsBy"\n        [groupedRows]="groupedRows"\n        [rows]="_internalRows"\n        [groupExpansionDefault]="groupExpansionDefault"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [virtualization]="virtualization"\n        [loadingIndicator]="loadingIndicator"\n        [externalPaging]="externalPaging"\n        [rowHeight]="rowHeight"\n        [rowCount]="rowCount"\n        [offset]="offset"\n        [trackByProp]="trackByProp"\n        [columns]="_internalColumns"\n        [pageSize]="pageSize"\n        [offsetX]="_offsetX | async"\n        [rowDetail]="rowDetail"\n        [groupHeader]="groupHeader"\n        [selected]="selected"\n        [innerWidth]="_innerWidth"\n        [bodyHeight]="bodyHeight"\n        [selectionType]="selectionType"\n        [emptyMessage]="messages.emptyMessage"\n        [rowIdentity]="rowIdentity"\n        [rowClass]="rowClass"\n        [selectCheck]="selectCheck"\n        [displayCheck]="displayCheck"\n        [summaryRow]="summaryRow"\n        [summaryHeight]="summaryHeight"\n        [summaryPosition]="summaryPosition"\n        (page)="onBodyPage($event)"\n        (activate)="activate.emit($event)"\n        (rowContextmenu)="onRowContextmenu($event)"\n        (select)="onBodySelect($event)"\n        (scroll)="onBodyScroll($event)"\n        (treeAction)="onTreeAction($event)">\n      </datatable-body>\n      <datatable-footer\n        *ngIf="footerHeight"\n        [rowCount]="rowCount"\n        [pageSize]="pageSize"\n        [offset]="offset"\n        [footerHeight]="footerHeight"\n        [footerTemplate]="footer"\n        [totalMessage]="messages.totalMessage"\n        [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n        [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n        [pagerPreviousIcon]="cssClasses.pagerPrevious"\n        [selectedCount]="selected.length"\n        [selectedMessage]="!!selectionType && messages.selectedMessage"\n        [pagerNextIcon]="cssClasses.pagerNext"\n        (page)="onFooterPage($event)">\n      </datatable-footer>\n    </div>\n  ',changeDetection:s.ChangeDetectionStrategy.OnPush,encapsulation:s.ViewEncapsulation.None,styles:[n("./src/components/datatable.component.scss")],host:{class:"ngx-datatable"}}),o(0,s.SkipSelf()),o(1,s.SkipSelf()),i("design:paramtypes",[c.ScrollbarHelper,c.DimensionsHelper,s.ChangeDetectorRef,s.ElementRef,s.KeyValueDiffers,c.ColumnChangesService])],t)}()},"./src/components/footer/footer-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableFooterTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-footer-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/footer/footer.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/footer/footer.directive.ts");e.DataTableFooterComponent=function(){function t(){this.selectedCount=0,this.page=new i.EventEmitter}return Object.defineProperty(t.prototype,"isVisible",{get:function(){return this.rowCount/this.pageSize>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"curPage",{get:function(){return this.offset+1},enumerable:!0,configurable:!0}),a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowCount",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"pageSize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offset",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",o.DatatableFooterDirective)],t.prototype,"footerTemplate",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"selectedCount",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Component({selector:"datatable-footer",template:'\n    <div\n      class="datatable-footer-inner"\n      [ngClass]="{\'selected-count\': selectedMessage}"\n      [style.height.px]="footerHeight">\n      <ng-template\n        *ngIf="footerTemplate"\n        [ngTemplateOutlet]="footerTemplate.template"\n        [ngTemplateOutletContext]="{ \n          rowCount: rowCount, \n          pageSize: pageSize, \n          selectedCount: selectedCount,\n          curPage: curPage,\n          offset: offset\n        }">\n      </ng-template>\n      <div class="page-count" *ngIf="!footerTemplate">\n        <span *ngIf="selectedMessage">\n          {{selectedCount?.toLocaleString()}} {{selectedMessage}} / \n        </span>\n        {{rowCount?.toLocaleString()}} {{totalMessage}}\n      </div>\n      <datatable-pager *ngIf="!footerTemplate"\n        [pagerLeftArrowIcon]="pagerLeftArrowIcon"\n        [pagerRightArrowIcon]="pagerRightArrowIcon"\n        [pagerPreviousIcon]="pagerPreviousIcon"\n        [pagerNextIcon]="pagerNextIcon"\n        [page]="curPage"\n        [size]="pageSize"\n        [count]="rowCount"\n        [hidden]="!isVisible"\n        (change)="page.emit($event)">\n      </datatable-pager>\n    </div>\n  ',host:{class:"datatable-footer"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/footer/footer.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/footer/footer-template.directive.ts");e.DatatableFooterDirective=function(){function t(){}return a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),i.ContentChild(o.DataTableFooterTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Directive({selector:"ngx-datatable-footer"})],t)}()},"./src/components/footer/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/footer/footer.component.ts")),a(n("./src/components/footer/pager.component.ts")),a(n("./src/components/footer/footer.directive.ts")),a(n("./src/components/footer/footer-template.directive.ts"))},"./src/components/footer/pager.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTablePagerComponent=function(){function t(){this.change=new i.EventEmitter,this._count=0,this._page=1,this._size=0}return Object.defineProperty(t.prototype,"size",{get:function(){return this._size},set:function(t){this._size=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"page",{get:function(){return this._page},set:function(t){this._page=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalPages",{get:function(){var t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)},enumerable:!0,configurable:!0}),t.prototype.canPrevious=function(){return this.page>1},t.prototype.canNext=function(){return this.page<this.totalPages},t.prototype.prevPage=function(){this.selectPage(this.page-1)},t.prototype.nextPage=function(){this.selectPage(this.page+1)},t.prototype.selectPage=function(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))},t.prototype.calcPages=function(t){var e=[],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(var r=n;r<=a;r++)e.push({number:r,text:r});return e},a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"size",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"page",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"change",void 0),a([i.Component({selector:"datatable-pager",template:'\n    <ul class="pager">\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to first page"\n          href="javascript:void(0)"\n          (click)="selectPage(1)">\n          <i class="{{pagerPreviousIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to previous page"\n          href="javascript:void(0)"\n          (click)="prevPage()">\n          <i class="{{pagerLeftArrowIcon}}"></i>\n        </a>\n      </li>\n      <li\n        role="button"\n        [attr.aria-label]="\'page \' + pg.number"\n        class="pages"\n        *ngFor="let pg of pages"\n        [class.active]="pg.number === page">\n        <a\n          href="javascript:void(0)"\n          (click)="selectPage(pg.number)">\n          {{pg.text}}\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to next page"\n          href="javascript:void(0)"\n          (click)="nextPage()">\n          <i class="{{pagerRightArrowIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to last page"\n          href="javascript:void(0)"\n          (click)="selectPage(totalPages)">\n          <i class="{{pagerNextIcon}}"></i>\n        </a>\n      </li>\n    </ul>\n  ',host:{class:"datatable-pager"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/header/header-cell.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/types/index.ts"),s=n("./src/utils/index.ts");n("./src/events.ts"),e.DataTableHeaderCellComponent=function(){function t(t){this.cd=t,this.sort=new i.EventEmitter,this.select=new i.EventEmitter,this.columnContextmenu=new i.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}}return Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){return this._allRowsSelected},set:function(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}var i=this.sortDir;return i&&(t+=" sort-active sort-"+i),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return void 0===this.column.headerTemplate?this.column.name:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxable",{get:function(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===o.SelectionType.checkbox},enumerable:!0,configurable:!0}),t.prototype.onContextmenu=function(t){this.columnContextmenu.emit({event:t,column:this.column})},t.prototype.calcSortDir=function(t){var e=this;if(t&&this.column){var n=t.find(function(t){return t.prop===e.column.prop});if(n)return n.dir}},t.prototype.onSort=function(){if(this.column.sortable){var t=s.nextSortDir(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}},t.prototype.calcSortClass=function(t){return t===o.SortDirection.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===o.SortDirection.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"},a([i.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortAscendingIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortDescendingIcon",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerContext",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"allRowsSelected",null),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"headerHeight",void 0),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"sort",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("attr.title"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"name",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-header-cell",template:'\n    <div class="datatable-header-cell-template-wrap">\n      <ng-template\n        *ngIf="isTarget"\n        [ngTemplateOutlet]="targetMarkerTemplate"\n        [ngTemplateOutletContext]="targetMarkerContext">\n      </ng-template>\n      <label\n        *ngIf="isCheckboxable"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="allRowsSelected"\n          (change)="select.emit(!allRowsSelected)"\n        />\n      </label>\n      <span\n        *ngIf="!column.headerTemplate"\n        class="datatable-header-cell-wrapper">\n        <span\n          class="datatable-header-cell-label draggable"\n          (click)="onSort()"\n          [innerHTML]="name">\n        </span>\n      </span>\n      <ng-template\n        *ngIf="column.headerTemplate"\n        [ngTemplateOutlet]="column.headerTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n      <span\n        (click)="onSort()"\n        [class]="sortClass">\n      </span>\n    </div>\n  ',host:{class:"datatable-header-cell"},changeDetection:i.ChangeDetectionStrategy.OnPush}),r("design:paramtypes",[i.ChangeDetectorRef])],t)}()},"./src/components/header/header.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/types/index.ts"),u=n("./src/utils/index.ts");e.DataTableHeaderComponent=function(){function t(t){this.cd=t,this.sort=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.select=new o.EventEmitter,this.columnContextmenu=new o.EventEmitter(!1),this._styleByGroup={left:{},center:{},right:{}}}return Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._innerWidth=t,this._columns){var e=u.columnsByPin(this._columns);this._columnGroupWidths=u.columnGroupWidths(e,this._columns),this.setStylesByGroup()}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerHeight",{get:function(){return this._headerHeight},set:function(t){this._headerHeight="auto"!==t?t+"px":t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=u.columnsByPin(t);this._columnsByPin=u.columnsByPinArr(t),this._columnGroupWidths=u.columnGroupWidths(e,t),this.setStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.setStylesByGroup()},enumerable:!0,configurable:!0}),t.prototype.onLongPressStart=function(t){var e=t.event;t.model.dragging=!0,this.dragEventTarget=e},t.prototype.onLongPressEnd=function(t){var e=this,n=t.model;this.dragEventTarget=t.event,setTimeout(function(){var t=e._columns.find(function(t){return t.$$id===n.$$id});t&&(t.dragging=!1)},5)},Object.defineProperty(t.prototype,"headerWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.onColumnResized=function(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})},t.prototype.onColumnReordered=function(t){var e=t.prevIndex,n=t.newIndex,a=t.model,r=this.getColumn(n);r.isTarget=!1,r.targetMarkerContext=void 0,this.reorder.emit({column:a,prevValue:e,newValue:n})},t.prototype.onTargetChanged=function(t){var e=t.prevIndex,n=t.newIndex,a=t.initialIndex;if(e||0===e){var r=this.getColumn(e);r.isTarget=!1,r.targetMarkerContext=void 0}if(n||0===n){var i=this.getColumn(n);i.isTarget=!0,a!==n&&(i.targetMarkerContext={class:"targetMarker ".concat(a>n?"dragFromRight":"dragFromLeft")})}},t.prototype.getColumn=function(t){var e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];var n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]},t.prototype.onSort=function(t){var e=t.column,n=t.prevValue,a=t.newValue;if(!e.dragging){var r=this.calcNewSorts(e,n,a);this.sort.emit({sorts:r,column:e,prevValue:n,newValue:a})}},t.prototype.calcNewSorts=function(t,e,n){var r=0;this.sorts||(this.sorts=[]);var i=this.sorts.map(function(e,n){return(e=a({},e)).prop===t.prop&&(r=n),e});return void 0===n?i.splice(r,1):e?i[r].dir=n:(this.sortType===s.SortType.single&&i.splice(0,this.sorts.length),i.push({dir:n,prop:t.prop})),i},t.prototype.setStylesByGroup=function(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.cd.detectChanges()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?u.translateXY(n,-1*this.offsetX,0):"right"===t&&u.translateXY(n,-1*(e.total-this.innerWidth),0),n},r([o.Input(),i("design:type",Object)],t.prototype,"sortAscendingIcon",void 0),r([o.Input(),i("design:type",Object)],t.prototype,"sortDescendingIcon",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"scrollbarH",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"dealsWithGroup",void 0),r([o.Input(),i("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),r([o.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"innerWidth",null),r([o.Input(),i("design:type",Array)],t.prototype,"sorts",void 0),r([o.Input(),i("design:type",String)],t.prototype,"sortType",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"allRowsSelected",void 0),r([o.Input(),i("design:type",String)],t.prototype,"selectionType",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"reorderable",void 0),r([o.HostBinding("style.height"),o.Input(),i("design:type",Object),i("design:paramtypes",[Object])],t.prototype,"headerHeight",null),r([o.Input(),i("design:type",Array),i("design:paramtypes",[Array])],t.prototype,"columns",null),r([o.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"offsetX",null),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"sort",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"resize",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"select",void 0),r([o.Output(),i("design:type",Object)],t.prototype,"columnContextmenu",void 0),r([o.HostBinding("style.width"),i("design:type",String),i("design:paramtypes",[])],t.prototype,"headerWidth",null),r([o.Component({selector:"datatable-header",template:'\n    <div\n      orderable\n      (reorder)="onColumnReordered($event)"\n      (targetChanged)="onTargetChanged($event)"\n      [style.width.px]="_columnGroupWidths.total"\n      class="datatable-header-inner">\n      <div\n        *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups"\n        [class]="\'datatable-row-\' + colGroup.type"\n        [ngStyle]="_styleByGroup[colGroup.type]">\n        <datatable-header-cell\n          *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn"\n          resizeable\n          [resizeEnabled]="column.resizeable"\n          (resize)="onColumnResized($event, column)"\n          long-press\n          [pressModel]="column"\n          [pressEnabled]="reorderable && column.draggable"\n          (longPressStart)="onLongPressStart($event)"\n          (longPressEnd)="onLongPressEnd($event)"\n          draggable\n          [dragX]="reorderable && column.draggable && column.dragging"\n          [dragY]="false"\n          [dragModel]="column"\n          [dragEventTarget]="dragEventTarget"\n          [headerHeight]="headerHeight"\n          [isTarget]="column.isTarget"\n          [targetMarkerTemplate]="targetMarkerTemplate"\n          [targetMarkerContext]="column.targetMarkerContext"\n          [column]="column"\n          [sortType]="sortType"\n          [sorts]="sorts"\n          [selectionType]="selectionType"\n          [sortAscendingIcon]="sortAscendingIcon"\n          [sortDescendingIcon]="sortDescendingIcon"\n          [allRowsSelected]="allRowsSelected"\n          (sort)="onSort($event)"\n          (select)="select.emit($event)"\n          (columnContextmenu)="columnContextmenu.emit($event)">\n        </datatable-header-cell>\n      </div>\n    </div>\n  ',host:{class:"datatable-header"},changeDetection:o.ChangeDetectionStrategy.OnPush}),i("design:paramtypes",[o.ChangeDetectorRef])],t)}()},"./src/components/header/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/header/header.component.ts")),a(n("./src/components/header/header-cell.component.ts"))},"./src/components/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/datatable.component.ts")),a(n("./src/components/header/index.ts")),a(n("./src/components/body/index.ts")),a(n("./src/components/footer/index.ts")),a(n("./src/components/columns/index.ts")),a(n("./src/components/row-detail/index.ts"))},"./src/components/row-detail/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/row-detail/row-detail.directive.ts")),a(n("./src/components/row-detail/row-detail-template.directive.ts"))},"./src/components/row-detail/row-detail-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DatatableRowDetailTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-row-detail-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/row-detail/row-detail.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/row-detail/row-detail-template.directive.ts");e.DatatableRowDetailDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandRow=function(t){this.toggle.emit({type:"row",value:t})},t.prototype.expandAllRows=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllRows=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableRowDetailTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-row-detail"})],t)}()},"./src/datatable.module.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core"),i=n("@angular/common"),o=n("./src/components/index.ts"),s=n("./src/directives/index.ts"),u=n("./src/services/index.ts");e.NgxDatatableModule=function(){return a([r.NgModule({imports:[i.CommonModule],providers:[u.ScrollbarHelper,u.DimensionsHelper,u.ColumnChangesService],declarations:[o.DataTableFooterTemplateDirective,s.VisibilityDirective,s.DraggableDirective,s.ResizeableDirective,s.OrderableDirective,s.LongPressDirective,o.ScrollerComponent,o.DatatableComponent,o.DataTableColumnDirective,o.DataTableHeaderComponent,o.DataTableHeaderCellComponent,o.DataTableBodyComponent,o.DataTableFooterComponent,o.DataTablePagerComponent,o.ProgressBarComponent,o.DataTableBodyRowComponent,o.DataTableRowWrapperComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableBodyCellComponent,o.DataTableSelectionComponent,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DatatableFooterDirective,o.DatatableGroupHeaderTemplateDirective,o.DataTableSummaryRowComponent],exports:[o.DatatableComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableColumnDirective,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DataTableFooterTemplateDirective,o.DatatableFooterDirective,o.DataTablePagerComponent,o.DatatableGroupHeaderTemplateDirective]})],function(){})}()},"./src/directives/draggable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=n("rxjs/operators");e.DraggableDirective=function(){function t(t){this.dragX=!0,this.dragY=!0,this.dragStart=new i.EventEmitter,this.dragging=new i.EventEmitter,this.dragEnd=new i.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}return t.prototype.ngOnChanges=function(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(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})))},t.prototype.onMousedown=function(t){var e=this;if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;var n={x:t.clientX,y:t.clientY},a=o.fromEvent(document,"mouseup");this.subscription=a.subscribe(function(t){return e.onMouseup(t)});var r=o.fromEvent(document,"mousemove").pipe(s.takeUntil(a)).subscribe(function(t){return e.move(t,n)});this.subscription.add(r),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}},t.prototype.move=function(t,e){if(this.isDragging){var 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})}},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Object)],t.prototype,"dragEventTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"dragModel",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragX",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragY",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragging",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragEnd",void 0),a([i.Directive({selector:"[draggable]"}),r("design:paramtypes",[i.ElementRef])],t)}()},"./src/directives/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/directives/draggable.directive.ts")),a(n("./src/directives/long-press.directive.ts")),a(n("./src/directives/orderable.directive.ts")),a(n("./src/directives/resizeable.directive.ts")),a(n("./src/directives/visibility.directive.ts"))},"./src/directives/long-press.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=n("rxjs/operators");n("./src/events.ts"),e.LongPressDirective=function(){function t(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new i.EventEmitter,this.longPressing=new i.EventEmitter,this.longPressEnd=new i.EventEmitter,this.mouseX=0,this.mouseY=0}return Object.defineProperty(t.prototype,"press",{get:function(){return this.pressing},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLongPress",{get:function(){return this.isLongPressing},enumerable:!0,configurable:!0}),t.prototype.onMouseDown=function(t){var e=this;if(1===t.which&&this.pressEnabled&&!t.target.classList.contains("resize-handle")){this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;var n=o.fromEvent(document,"mouseup");this.subscription=n.subscribe(function(t){return e.onMouseup()}),this.timeout=setTimeout(function(){e.isLongPressing=!0,e.longPressStart.emit({event:t,model:e.pressModel}),e.subscription.add(o.fromEvent(document,"mousemove").pipe(s.takeUntil(n)).subscribe(function(t){return e.onMouseMove(t)})),e.loop(t)},this.duration),this.loop(t)}},t.prototype.onMouseMove=function(t){if(this.pressing&&!this.isLongPressing){var e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}},t.prototype.loop=function(t){var e=this;this.isLongPressing&&(this.timeout=setTimeout(function(){e.longPressing.emit({event:t,model:e.pressModel}),e.loop(t)},50))},t.prototype.endPress=function(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})},t.prototype.onMouseup=function(){this.endPress()},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"pressEnabled",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pressModel",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"duration",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressing",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressEnd",void 0),a([i.HostBinding("class.press"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"press",null),a([i.HostBinding("class.longpress"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isLongPress",null),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseDown",null),a([i.Directive({selector:"[long-press]"})],t)}()},"./src/directives/orderable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/directives/draggable.directive.ts"),u=n("@angular/platform-browser");e.OrderableDirective=function(){function t(t,e){this.document=e,this.reorder=new o.EventEmitter,this.targetChanged=new o.EventEmitter,this.differ=t.find({}).create()}return t.prototype.ngAfterContentInit=function(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))},t.prototype.ngOnDestroy=function(){this.draggables.forEach(function(t){t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})},t.prototype.updateSubscriptions=function(){var t=this,e=this.differ.diff(this.createMapDiffs());if(e){var n=function(t){var e=t.previousValue;e&&(e.dragStart.unsubscribe(),e.dragging.unsubscribe(),e.dragEnd.unsubscribe())};e.forEachAddedItem((function(e){var a=e.currentValue;n({previousValue:e.previousValue}),a&&(a.dragStart.subscribe(t.onDragStart.bind(t)),a.dragging.subscribe(t.onDragging.bind(t)),a.dragEnd.subscribe(t.onDragEnd.bind(t)))}).bind(this)),e.forEachRemovedItem(n.bind(this))}},t.prototype.onDragStart=function(){this.positions={};for(var t=0,e=0,n=this.draggables.toArray();e<n.length;e++){var a=n[e],r=a.element,i=parseInt(r.offsetLeft.toString(),0);this.positions[a.dragModel.prop]={left:i,right:i+parseInt(r.offsetWidth.toString(),0),index:t++,element:r}}},t.prototype.onDragging=function(t){var e=t.model,n=this.positions[e.prop],a=this.isTarget(e,t.event);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)},t.prototype.onDragEnd=function(t){var e=t.element,n=t.model,a=this.positions[n.prop],r=this.isTarget(n,t.event);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:n}),this.lastDraggingIndex=void 0,e.style.left="auto"},t.prototype.isTarget=function(t,e){var n=0,a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY),r=function(e){var r=i.positions[e];if(t.prop!==e&&a.find(function(t){return t===r.element}))return{value:{pos:r,i:n}};n++},i=this;for(var o in this.positions){var s=r(o);if("object"==typeof s)return s.value}},t.prototype.createMapDiffs=function(){return this.draggables.toArray().reduce(function(t,e){return t[e.dragModel.$$id]=e,t},{})},a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"targetChanged",void 0),a([o.ContentChildren(s.DraggableDirective,{descendants:!0}),r("design:type",o.QueryList)],t.prototype,"draggables",void 0),a([o.Directive({selector:"[orderable]"}),i(1,o.Inject(u.DOCUMENT)),r("design:paramtypes",[o.KeyValueDiffers,Object])],t)}()},"./src/directives/resizeable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=(n("./src/events.ts"),n("rxjs/operators"));e.ResizeableDirective=function(){function t(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new i.EventEmitter,this.resizing=!1,this.element=t.nativeElement}return t.prototype.ngAfterViewInit=function(){var t=this.renderer,e=t.createElement("span");t.addClass(e,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,e)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))},t.prototype.onMousedown=function(t){var e=this,n=t.target.classList.contains("resize-handle"),a=this.element.clientWidth,r=t.screenX;if(n){t.stopPropagation(),this.resizing=!0;var i=o.fromEvent(document,"mouseup");this.subscription=i.subscribe(function(t){return e.onMouseup()});var u=o.fromEvent(document,"mousemove").pipe(s.takeUntil(i)).subscribe(function(t){return e.move(t,a,r)});this.subscription.add(u)}},t.prototype.move=function(t,e,n){var a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeEnabled",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"resize",void 0),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMousedown",null),a([i.Directive({selector:"[resizeable]",host:{"[class.resizeable]":"resizeEnabled"}}),r("design:paramtypes",[i.ElementRef,i.Renderer2])],t)}()},"./src/directives/visibility.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.VisibilityDirective=function(){function t(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new i.EventEmitter}return t.prototype.ngOnInit=function(){this.runCheck()},t.prototype.ngOnDestroy=function(){clearTimeout(this.timeout)},t.prototype.onVisibilityChange=function(){var t=this;this.zone.run(function(){t.isVisible=!0,t.visible.emit(!0)})},t.prototype.runCheck=function(){var t=this,e=function(){var n=t.element.nativeElement;n.offsetHeight&&n.offsetWidth?(clearTimeout(t.timeout),t.onVisibilityChange()):(clearTimeout(t.timeout),t.zone.runOutsideAngular(function(){t.timeout=setTimeout(function(){return e()},50)}))};this.timeout=setTimeout(function(){return e()})},a([i.HostBinding("class.visible"),r("design:type",Boolean)],t.prototype,"isVisible",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"visible",void 0),a([i.Directive({selector:"[visibilityObserver]"}),r("design:paramtypes",[i.ElementRef,i.NgZone])],t)}()},"./src/events.ts":function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.MouseEvent=("undefined"!=typeof window&&window||t).MouseEvent,e.KeyboardEvent=("undefined"!=typeof window&&window||t).KeyboardEvent,e.Event=("undefined"!=typeof window&&window||t).Event}).call(e,n("./node_modules/webpack/buildin/global.js"))},"./src/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/datatable.module.ts")),a(n("./src/types/index.ts")),a(n("./src/components/index.ts")),a(n("./src/services/index.ts"))},"./src/services/column-changes.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core"),i=n("rxjs");e.ColumnChangesService=function(){function t(){this.columnInputChanges=new i.Subject}return Object.defineProperty(t.prototype,"columnInputChanges$",{get:function(){return this.columnInputChanges.asObservable()},enumerable:!0,configurable:!0}),t.prototype.onInputChange=function(){this.columnInputChanges.next()},a([r.Injectable()],t)}()},"./src/services/dimensions-helper.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core");e.DimensionsHelper=function(){function t(){}return t.prototype.getDimensions=function(t){return t.getBoundingClientRect()},a([r.Injectable()],t)}()},"./src/services/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/services/scrollbar-helper.service.ts")),a(n("./src/services/dimensions-helper.service.ts")),a(n("./src/services/column-changes.service.ts"))},"./src/services/scrollbar-helper.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("@angular/platform-browser");e.ScrollbarHelper=function(){function t(t){this.document=t,this.width=this.getWidth()}return t.prototype.getWidth=function(){var t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);var e=t.offsetWidth;t.style.overflow="scroll";var n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);var a=n.offsetWidth;return t.parentNode.removeChild(t),e-a},a([o.Injectable(),i(0,o.Inject(s.DOCUMENT)),r("design:paramtypes",[Object])],t)}()},"./src/types/click.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.double="double"}(e.ClickType||(e.ClickType={}))},"./src/types/column-mode.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.standard="standard",t.flex="flex",t.force="force"}(e.ColumnMode||(e.ColumnMode={}))},"./src/types/contextmenu.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.header="header",t.body="body"}(e.ContextmenuType||(e.ContextmenuType={}))},"./src/types/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/types/column-mode.type.ts")),a(n("./src/types/sort.type.ts")),a(n("./src/types/sort-direction.type.ts")),a(n("./src/types/selection.type.ts")),a(n("./src/types/click.type.ts")),a(n("./src/types/contextmenu.type.ts"))},"./src/types/selection.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi",t.multiClick="multiClick",t.cell="cell",t.checkbox="checkbox"}(e.SelectionType||(e.SelectionType={}))},"./src/types/sort-direction.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.asc="asc",t.desc="desc"}(e.SortDirection||(e.SortDirection={}))},"./src/types/sort.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi"}(e.SortType||(e.SortType={}))},"./src/utils/camel-case.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=function(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()})},e.deCamelCase=function(t){return t.replace(/([A-Z])/g,function(t){return" "+t}).replace(/^./,function(t){return t.toUpperCase()})}},"./src/utils/column-helper.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/camel-case.ts"),r=n("./src/utils/id.ts"),i=n("./src/utils/column-prop-getters.ts");function o(t){return null==t}e.setColumnDefaults=function(t){if(t)for(var e=!1,n=0,s=t;n<s.length;n++){var u=s[n];u.$$id||(u.$$id=r.id()),o(u.prop)&&u.name&&(u.prop=a.camelCase(u.name)),u.$$valueGetter||(u.$$valueGetter=i.getterForProp(u.prop)),!o(u.prop)&&o(u.name)&&(u.name=a.deCamelCase(String(u.prop))),o(u.prop)&&o(u.name)&&(u.name=""),u.hasOwnProperty("resizeable")||(u.resizeable=!0),u.hasOwnProperty("sortable")||(u.sortable=!0),u.hasOwnProperty("draggable")||(u.draggable=!0),u.hasOwnProperty("canAutoResize")||(u.canAutoResize=!0),u.hasOwnProperty("width")||(u.width=150),u.hasOwnProperty("isTreeColumn")&&u.isTreeColumn&&!e?e=!0:u.isTreeColumn=!1}},e.isNullOrUndefined=o,e.translateTemplates=function(t){for(var e=[],n=0,a=t;n<a.length;n++){for(var r=a[n],i={},o=0,s=Object.getOwnPropertyNames(r);o<s.length;o++){var u=s[o];i[u]=r[u]}r.headerTemplate&&(i.headerTemplate=r.headerTemplate),r.cellTemplate&&(i.cellTemplate=r.cellTemplate),r.summaryFunc&&(i.summaryFunc=r.summaryFunc),r.summaryTemplate&&(i.summaryTemplate=r.summaryTemplate),e.push(i)}return e}},"./src/utils/column-prop-getters.ts":function(t,e,n){"use strict";function a(){return""}function r(t,e){if(null==t)return"";if(!t||null==e)return t;var n=t[e];return null==n?"":n}function i(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];return null==n?"":n}function o(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];if(void 0!==n)return n;n=t;var a=e.split(".");if(a.length)for(var r=0;r<a.length;r++)if(null==(n=n[a[r]]))return"";return n}Object.defineProperty(e,"__esModule",{value:!0}),e.emptyStringGetter=a,e.getterForProp=function(t){return null==t?a:"number"==typeof t?r:-1!==t.indexOf(".")?o:i},e.numericIndexGetter=r,e.shallowValueGetter=i,e.deepValueGetter=o},"./src/utils/column.ts":function(t,e,n){"use strict";function a(t){var e={left:[],center:[],right:[]};if(t)for(var n=0,a=t;n<a.length;n++){var r=a[n];r.frozenLeft?e.left.push(r):r.frozenRight?e.right.push(r):e.center.push(r)}return e}function r(t,e){var n=0;if(t)for(var a=0,r=t;a<r.length;a++){var i=r[a];n+=parseFloat(e&&i[e]?i[e]:i.width)}return n}Object.defineProperty(e,"__esModule",{value:!0}),e.columnsByPin=a,e.columnGroupWidths=function(t,e){return{left:r(t.left),center:r(t.center),right:r(t.right),total:Math.floor(r(e))}},e.columnTotalWidth=r,e.columnsTotalWidth=function(t,e){for(var n=0,a=0,r=t;a<r.length;a++){var i=r[a];n+=e&&i[e]?i[e]:i.width}return n},e.columnsByPinArr=function(t){var e=[],n=a(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}},"./src/utils/elm-from-point.ts":function(t,e,n){"use strict";function a(t,e){for(var n,a,r,i=[],o=[];(n=document.elementFromPoint(t,e))&&-1===i.indexOf(n)&&null!=n;)i.push(n),o.push({value:n.style.getPropertyValue("pointer-events"),priority:n.style.getPropertyPriority("pointer-events")}),n.style.setProperty("pointer-events","none","important");for(a=o.length;r=o[--a];)i[a].style.setProperty("pointer-events",r.value?r.value:"",r.priority);return i}Object.defineProperty(e,"__esModule",{value:!0}),"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=a),e.elementsFromPoint=a},"./src/utils/id.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.id=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}},"./src/utils/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/utils/id.ts")),a(n("./src/utils/column.ts")),a(n("./src/utils/column-prop-getters.ts")),a(n("./src/utils/camel-case.ts")),a(n("./src/utils/keys.ts")),a(n("./src/utils/math.ts")),a(n("./src/utils/prefixes.ts")),a(n("./src/utils/selection.ts")),a(n("./src/utils/translate.ts")),a(n("./src/utils/throttle.ts")),a(n("./src/utils/sort.ts")),a(n("./src/utils/row-height-cache.ts")),a(n("./src/utils/column-helper.ts")),a(n("./src/utils/elm-from-point.ts")),a(n("./src/utils/tree.ts"))},"./src/utils/keys.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Keys=function(t){return t[t.up=38]="up",t[t.down=40]="down",t[t.return=13]="return",t[t.escape=27]="escape",t[t.left=37]="left",t[t.right=39]="right",t}(e.Keys||{})},"./src/utils/math.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/column.ts");function r(t){for(var e=0,n=0,a=t;n<a.length;n++)e+=a[n].flexGrow||0;return e}function i(t,e){for(var n=0,a=e;n<a.length;n++){var r=t.indexOf(a[n]);t.splice(r,1)}}function o(t,e){void 0===e&&(e=300);for(var n=0,a=0,r=t;a<r.length;a++)n+=r[a].width||e;return n}e.getTotalFlexGrow=r,e.adjustColumnWidths=function(t,e){var n=a.columnsTotalWidth(t),i=r(t),o=a.columnsByPin(t);n!==e&&function(t,e,n){for(var a in t)for(var r=0,i=t[a];r<i.length;r++)(d=i[r]).canAutoResize?d.width=0:(e-=d.width,n-=d.flexGrow?d.flexGrow:0);var o={},s=e;do{var u=s/n;for(var a in s=0,t)for(var c=0,l=t[a];c<l.length;c++){var d;if((d=l[c]).canAutoResize&&!o[d.prop]){var p=d.width+d.flexGrow*u;void 0!==d.minWidth&&p<d.minWidth?(s+=p-d.minWidth,d.width=d.minWidth,o[d.prop]=!0):d.width=p}}}while(0!==s)}(o,e,i)},e.forceFillColumnWidths=function(t,e,n,a,r){void 0===r&&(r=300);for(var s=t.slice(n+1,t.length).filter(function(t){return!1!==t.canAutoResize}),u=0,c=s;u<c.length;u++)(b=c[u]).$$oldWidth||(b.$$oldWidth=b.width);var l=0,d=!1,p=o(t,r),f=e-p,h=[];do{l=f/s.length,d=p>=e;for(var g=0,m=s;g<m.length;g++){var b=m[g];if(d&&a)b.width=b.$$oldWidth||b.width||r;else{var y=(b.width||r)+l;b.minWidth&&y<b.minWidth?(b.width=b.minWidth,h.push(b)):b.maxWidth&&y>b.maxWidth?(b.width=b.maxWidth,h.push(b)):b.width=y}b.width=Math.max(0,b.width)}f=e-(p=o(t)),i(s,h)}while(f>0&&0!==s.length)}},"./src/utils/prefixes.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a,r,i,o,s=n("./src/utils/camel-case.ts"),u={},c="undefined"!=typeof document?document.createElement("div").style:void 0,l=(o=void 0!==(i=null!==(r=void 0!==(a="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0)?Array.prototype.slice.call(a).join("").match(/-(moz|webkit|ms)-/):null)?r[1]:void 0)?"WebKit|Moz|MS|O".match(new RegExp("("+i+")","i"))[1]:void 0)?{dom:o,lowercase:i,css:"-"+i+"-",js:i[0].toUpperCase()+i.substr(1)}:void 0;e.getVendorPrefixedName=function(t){var e=s.camelCase(t);return u[e]||(void 0!==l&&void 0!==c[l.css+t]?u[e]=l.css+t:void 0!==c[t]&&(u[e]=t)),u[e]}},"./src/utils/row-height-cache.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RowHeightCache=function(){function t(){this.treeArray=[]}return t.prototype.clearCache=function(){this.treeArray=[]},t.prototype.initCache=function(t){var e=t.rows,n=t.rowHeight,a=t.detailRowHeight,r=t.externalVirtual,i=t.rowCount,o=t.rowIndexes,s=t.rowExpansions,u="function"==typeof n,c="function"==typeof a;if(!u&&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(!c&&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.");var l=r?i:e.length;this.treeArray=new Array(l);for(var d=0;d<l;++d)this.treeArray[d]=0;for(d=0;d<l;++d){var p=e[d],f=n;u&&(f=n(p));var h=s.get(p);p&&1===h&&(f+=c?a(p,o.get(p)):a),this.update(d,f)}},t.prototype.getRowIndex=function(t){return 0===t?0:this.calcRowIndex(t)},t.prototype.update=function(t,e){if(!this.treeArray.length)throw new Error("Update at index "+t+" with value "+e+" failed:\n        Row Height cache not initialized.");var n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1},t.prototype.query=function(t){if(!this.treeArray.length)throw new Error("query at index "+t+" failed: Fenwick tree array not initialized.");var e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e},t.prototype.queryBetween=function(t,e){return this.query(e)-this.query(t-1)},t.prototype.calcRowIndex=function(t){if(!this.treeArray.length)return 0;for(var e=-1,n=this.treeArray.length,a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){var r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1},t}()},"./src/utils/selection.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.selectRows=function(t,e,n){var a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t},e.selectRowsBetween=function(t,e,n,a,r){for(var i=n<a,o=0;o<e.length;o++){var s;s=i?{start:n,end:a}:{start:a,end:n+1},(i&&o<=a&&o>=n||!i&&o>=a&&o<=n)&&o>=s.start&&o<=s.end&&t.push(e[o])}return t}},"./src/utils/sort.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/types/index.ts"),r=n("./src/utils/column-prop-getters.ts");function i(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}e.nextSortDir=function(t,e){return t===a.SortType.single?e===a.SortDirection.asc?a.SortDirection.desc:a.SortDirection.asc:e?e===a.SortDirection.asc?a.SortDirection.desc:void 0:a.SortDirection.asc},e.orderByComparator=i,e.sortRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return t.slice();var o=new Map;t.forEach(function(t,e){return o.set(t,e)});var s=t.slice(),u=e.reduce(function(t,e){return e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t},{}),c=n.map(function(t){var e=t.prop;return{prop:e,dir:t.dir,valueGetter:r.getterForProp(e),compareFn:u[e]||i}});return s.sort(function(t,e){for(var n=0,r=c;n<r.length;n++){var i=r[n],s=i.prop,u=i.valueGetter,l=u(t,s),d=u(e,s),p=i.dir!==a.SortDirection.desc?i.compareFn(l,d,t,e,i.dir):-i.compareFn(l,d,t,e,i.dir);if(0!==p)return p}return o.has(t)&&o.has(e)?o.get(t)<o.get(e)?-1:1:0})}},"./src/utils/throttle.ts":function(t,e,n){"use strict";function a(t,e,n){var a,r,i;n=n||{};var o=null,s=0;function u(){s=!1===n.leading?0:+new Date,o=null,i=t.apply(a,r)}return function(){var c=+new Date;s||!1!==n.leading||(s=c);var l=e-(c-s);return a=this,r=arguments,l<=0?(clearTimeout(o),o=null,s=c,i=t.apply(a,r)):o||!1===n.trailing||(o=setTimeout(u,l)),i}}Object.defineProperty(e,"__esModule",{value:!0}),e.throttle=a,e.throttleable=function(t,e){return function(n,r,i){return{configurable:!0,enumerable:i.enumerable,get:function(){return Object.defineProperty(this,r,{configurable:!0,enumerable:i.enumerable,value:a(i.value,t,e)}),this[r]}}}}},"./src/utils/translate.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/prefixes.ts"),r=n("./src/utils/camel-case.ts"),i="undefined"!=typeof window?a.getVendorPrefixedName("transform"):void 0,o="undefined"!=typeof window?a.getVendorPrefixedName("backfaceVisibility"):void 0,s="undefined"!=typeof window?!!a.getVendorPrefixedName("transform"):void 0,u="undefined"!=typeof window?!!a.getVendorPrefixedName("perspective"):void 0,c="undefined"!=typeof window?window.navigator.userAgent:"Chrome",l=/Safari\//.test(c)&&!/Chrome\//.test(c);e.translateXY=function(t,e,n){void 0!==i&&s?!l&&u?(t[i]="translate3d("+e+"px, "+n+"px, 0)",t[o]="hidden"):t[r.camelCase(i)]="translate("+e+"px, "+n+"px)":(t.top=n+"px",t.left=e+"px")}},"./src/utils/tree.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/index.ts");e.optionalGetterForProp=function(t){return t&&function(e){return a.getterForProp(t)(e,t)}},e.groupRowsByParents=function(t,e,n){if(e&&n){var a={},i=t.length,o=null;a[0]=new r;for(var s=t.reduce(function(t,e){var a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]),u=0;u<i;u++)a[n(t[u])]=new r(t[u]);for(u=0;u<i;u++){var c=0,l=e((o=a[n(t[u])]).row);l&&s.indexOf(l)>-1&&(c=l),o.parent=a[c],o.row.level=o.parent.row.level+1,o.parent.children.push(o)}var d=[];return a[0].flatten(function(){d=d.concat([this.row])},!0),d}return t};var r=function(){function t(t){void 0===t&&(t=null),t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}return t.prototype.flatten=function(t,e){if("expanded"===this.row.treeStatus)for(var n=0,a=this.children.length;n<a;n++){var r=this.children[n];t.apply(r,Array.prototype.slice.call(arguments,2)),e&&r.flatten.apply(r,arguments)}},t}()},"@angular/common":function(e,n){e.exports=t},"@angular/core":function(t,n){t.exports=e},"@angular/platform-browser":function(t,e){t.exports=n},rxjs:function(t,e){t.exports=a},"rxjs/operators":function(t,e){t.exports=r}})},t.exports=a(n("Ip0R"),n("CcnG"),n("ZYjt"),n("DtyJ"),n("ahDk"))},yGOH:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},yGWI:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(){return function(t){return t.lift(new o(t))}}var o=function(){function t(t){this.connectable=t}return t.prototype.call=function(t,e){var n=this.connectable;n._refCount++;var a=new s(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r},t}(),s=function(t){function e(e,n){var a=t.call(this,e)||this;return a.connectable=n,a}return a.__extends(e,t),e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._refCount;if(e<=0)this.connection=null;else if(t._refCount=e-1,e>1)this.connection=null;else{var n=this.connection,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}else this.connection=null},e}(r.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}({})},yPMN:function(t,e,n){"use strict";n("CDJp")._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),t.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},yPMs:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_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\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},yRPT:function(t,e,n){"use strict";e.isArrayLike=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t}},ylLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("3MdB");n("ZYjt"),e.OrderableDirective=function(){function t(t,e){this.document=e,this.reorder=new i.EventEmitter,this.targetChanged=new i.EventEmitter,this.differ=t.find({}).create()}return t.prototype.ngAfterContentInit=function(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))},t.prototype.ngOnDestroy=function(){this.draggables.forEach(function(t){t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})},t.prototype.updateSubscriptions=function(){var t=this,e=this.differ.diff(this.createMapDiffs());if(e){var n=function(t){var e=t.previousValue;e&&(e.dragStart.unsubscribe(),e.dragging.unsubscribe(),e.dragEnd.unsubscribe())};e.forEachAddedItem((function(e){var a=e.currentValue;n({previousValue:e.previousValue}),a&&(a.dragStart.subscribe(t.onDragStart.bind(t)),a.dragging.subscribe(t.onDragging.bind(t)),a.dragEnd.subscribe(t.onDragEnd.bind(t)))}).bind(this)),e.forEachRemovedItem(n.bind(this))}},t.prototype.onDragStart=function(){this.positions={};for(var t=0,e=0,n=this.draggables.toArray();e<n.length;e++){var a=n[e],r=a.element,i=parseInt(r.offsetLeft.toString(),0);this.positions[a.dragModel.prop]={left:i,right:i+parseInt(r.offsetWidth.toString(),0),index:t++,element:r}}},t.prototype.onDragging=function(t){var e=t.model,n=this.positions[e.prop],a=this.isTarget(e,t.event);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)},t.prototype.onDragEnd=function(t){var e=t.element,n=t.model,a=this.positions[n.prop],r=this.isTarget(n,t.event);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:n}),this.lastDraggingIndex=void 0,e.style.left="auto"},t.prototype.isTarget=function(t,e){var n=0,a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY),r=function(e){var r=i.positions[e];if(t.prop!==e&&a.find(function(t){return t===r.element}))return{value:{pos:r,i:n}};n++},i=this;for(var o in this.positions){var s=r(o);if("object"==typeof s)return s.value}},t.prototype.createMapDiffs=function(){return this.draggables.toArray().reduce(function(t,e){return t[e.dragModel.$$id]=e,t},{})},a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"reorder",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"targetChanged",void 0),a([i.ContentChildren(o.DraggableDirective,{descendants:!0}),r("design:type",i.QueryList)],t.prototype,"draggables",void 0),a([i.Directive({selector:"[orderable]"})],t)}()},yx2s:function(t,e,n){"use strict";var a=n("FWf1");e.canReportError=function(t){for(;t;){var e=t.destination;if(t.closed||t.isStopped)return!1;t=e&&e instanceof a.Subscriber?e:null}return!0}},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\xedut","'iens m\xedut"],mm:[t+" m\xeduts",t+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[t+" \xfeoras",t+" \xfeoras"],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?r[n][0]:e?r[n][0]:r[n][1]}n("wd/R").defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".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 \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] 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}})}()},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa\u2019_cha\u2019_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\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".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\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] 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\u2019":-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\u2019 tup",mm:n,h:"wa\u2019 rep",hh:n,d:"wa\u2019 jaj",dd:n,M:"wa\u2019 jar",MM:n,y:"wa\u2019 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 u}),n.d(e,"a",function(){return p});var a=n("CcnG"),r=n("DQlY"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],null,function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))})}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"click"],["window","keydown.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["\u0275nov"](t,1).onEsc(n)&&r),r},o,i)),a["\u0275did"](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 u=a["\u0275ccf"]("modal-container",r.d,s,{},{},["*"]),c=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function l(t){return a["\u0275vid"](0,[],null,null)}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,l,c)),a["\u0275did"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],function(t,e){t(e,1,0)},null)}var p=a["\u0275ccf"]("bs-modal-backdrop",r.c,d,{},{},[])},zAZS:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e,n))}}var o=function(){function t(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg,this.source))},t}(),s=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.predicate=n,i.thisArg=a,i.source=r,i.index=0,i.thisArg=a||i,i}return a.__extends(e,t),e.prototype.notifyComplete=function(t){this.destination.next(t),this.destination.complete()},e.prototype._next=function(t){var 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)},e.prototype._complete=function(){this.notifyComplete(!0)},e}(r.a)},"zB/H":function(t,e,n){"use strict";var a=n("mbIT"),r=n("GMZp"),i=n("pshJ"),o=n("LBXl");function s(t){return t.reduce(function(t,e){return t.concat(e instanceof o.UnsubscriptionError?e.errors:e)},[])}e.Subscription=function(){function t(t){this.closed=!1,this._parent=null,this._parents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}var e;return t.prototype.unsubscribe=function(){var t,e=!1;if(!this.closed){var n=this._parent,u=this._parents,c=this._unsubscribe,l=this._subscriptions;this.closed=!0,this._parent=null,this._parents=null,this._subscriptions=null;for(var d=-1,p=u?u.length:0;n;)n.remove(this),n=++d<p&&u[d]||null;if(i.isFunction(c))try{c.call(this)}catch(h){e=!0,t=h instanceof o.UnsubscriptionError?s(h.errors):[h]}if(a.isArray(l))for(d=-1,p=l.length;++d<p;){var f=l[d];if(r.isObject(f))try{f.unsubscribe()}catch(h){e=!0,t=t||[],h instanceof o.UnsubscriptionError?t=t.concat(s(h.errors)):t.push(h)}}if(e)throw new o.UnsubscriptionError(t)}},t.prototype.add=function(e){var n=e;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)){var a=n;(n=new t)._subscriptions=[a]}break;default:if(!e)return t.EMPTY;throw new Error("unrecognized teardown "+e+" added to Subscription.")}if(n._addParent(this)){var r=this._subscriptions;r?r.push(n):this._subscriptions=[n]}return n},t.prototype.remove=function(t){var e=this._subscriptions;if(e){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}},t.prototype._addParent=function(t){var e=this._parent,n=this._parents;return e!==t&&(e?n?-1===n.indexOf(t)&&(n.push(t),!0):(this._parents=[t],!0):(this._parent=t,!0))},t.EMPTY=((e=new t).closed=!0,e),t}()},zQHH:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("15JJ");function r(t,e){return e?Object(a.a)(function(){return t},e):Object(a.a)(function(){return t})}},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("tAZD"),r=n.n(a),i=n("Ip0R"),o=n("CcnG");function s(){return localStorage.getItem("access_token")}var u=function(t){t=t||"en-US";try{return n("vOVK")("./messages."+t+".xlf")}catch(e){return[]}},c=function(){return function(){}}(),l=n("eajB"),d=n("aexS"),p=function(){return Object.assign(new l.a,{container:"body"})},f=function(){function t(t,e){this.authStorageService=t,this.router=e,this.title="cd"}return t.prototype.isLoginActive=function(){return"/login"===this.router.url||!this.authStorageService.isLoggedIn()},t.prototype.isDashboardPage=function(){return"/dashboard"===this.router.url},t}(),h=n("mrSG"),g=n("S5bw"),m=function(){function t(){}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t}(),b="block-ui-main",y=function(){function t(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new g.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}return t.prototype.getSettings=function(){return this.blockUISettings},t.prototype.updateSettings=function(t){void 0===t&&(t={}),this.blockUISettings=Object(h.__assign)({},this.blockUISettings,t)},t.prototype.decorate=function(t){void 0===t&&(t=b);var e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,m.START,t),update:this.dispatch(this.blockUISubject,m.UPDATE,t),stop:this.dispatch(this.blockUISubject,m.STOP,t),reset:this.dispatch(this.blockUISubject,m.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,m.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e},t.prototype.observe=function(){return this.blockUIObservable},t.prototype.blockUIMiddleware=function(t){var e=t.name,n=null;switch(t.action){case m.START:n=!0;break;case m.STOP:case m.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)},t.prototype.dispatch=function(t,e,n){return void 0===n&&(n=b),function(a){t.next({name:n,action:e,message:a})}},t}(),v=function(){function t(t){this.blockUI=t}return t.prototype.ngOnInit=function(){this.name=this.name||b,this.template=this.template||this.blockUI.blockUISettings.template},t}(),x=function(){function t(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name=b,this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}return t.prototype.ngOnInit=function(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())},t.prototype.ngAfterViewInit=function(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof o.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{var t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(e){console.error("ng-block-ui:",e)}},t.prototype.ngAfterViewChecked=function(){this.changeDetectionRef.detectChanges()},t.prototype.subscribeToBlockUI=function(t){var e=this;return t.subscribe(function(t){return e.onDispatchedEvent(t)})},t.prototype.onDispatchedEvent=function(t){switch(t.action){case m.START:this.onStart(t);break;case m.STOP:this.onStop(t);break;case m.UPDATE:this.onUpdate(t);break;case m.RESET:this.onReset();break;case m.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}},t.prototype.onStart=function(t){var e=this,n=t.message;if(t.name===this.name){var a=this.delayStart||this.settings.delayStart||0;a?(null===this.state.startTimeout&&(this.state.startTimeout=setTimeout(function(){e.showBlock(n)},a)),this.state.blockCount++):this.showBlock(n),this.updateInstanceBlockCount()}},t.prototype.onStop=function(t){var e=this;if(t.name===this.name){if(this.state.blockCount>1)this.state.blockCount--;else if(this.active){var n=this.delayStop||this.settings.delayStop||0;n?null===this.state.stopTimeout&&(this.state.stopTimeout=setTimeout(function(){e.hideBlock()},n)):this.hideBlock()}else this.clearState();this.updateInstanceBlockCount()}},t.prototype.onReset=function(){this.hideBlock()},t.prototype.onUpdate=function(t){var e=t.message;t.name===this.name&&(this.active=!0,this.message=e||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.changeDetectionRef.detectChanges())},t.prototype.showBlock=function(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.changeDetectionRef.detectChanges()},t.prototype.hideBlock=function(){this.clearState(),this.active=!1,this.changeDetectionRef.detectChanges()},t.prototype.clearState=function(){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()},t.prototype.updateBlockTemplate=function(t){this.templateCompRef&&this.templateCompRef instanceof o.ComponentRef&&(this.templateCompRef.instance.message=t)},t.prototype.onUnsubscribe=function(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()},t.prototype.updateInstanceBlockCount=function(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)},t.prototype.ngOnDestroy=function(){this.onUnsubscribe(this.name)},t}(),_=function(){function t(t){this.blockUIInstance=t}return t.prototype.start=function(t,e){this.dispatch(t,m.START,e)},t.prototype.stop=function(t){this.dispatch(t,m.STOP)},t.prototype.unsubscribe=function(t){this.dispatch(t,m.UNSUBSCRIBE)},t.prototype.isActive=function(t){void 0===t&&(t=null);var e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(function(t){return e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive})},t.prototype.dispatch=function(t,e,n){var a=this;void 0===t&&(t=[]),this.toArray(t).forEach(function(t){return a.blockUIInstance.decorate(t)[e](n)})},t.prototype.toArray=function(t){return void 0===t&&(t=[]),"string"==typeof t?[t]:t},t}(),T=new y,w=new o.InjectionToken("BlockUIModuleSettings");function S(t){return T.updateSettings(t),T}var O=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:w,useValue:e},{provide:y,useFactory:S,deps:[w]},_]}},t}(),k=o["\u0275crt"]({encapsulation:2,styles:[],data:{}});function C(t){return o["\u0275vid"](0,[o["\u0275ncd"](null,0),(t()(),o["\u0275eld"](1,0,null,null,1,"block-ui-content",[],null,null,null,P,N)),o["\u0275did"](2,12828672,null,0,x,[y,o.ComponentFactoryResolver,o.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 I(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"block-ui",[],null,null,null,C,k)),o["\u0275did"](1,114688,null,0,v,[y],null,null)],function(t,e){t(e,1,0)},null)}var R=o["\u0275ccf"]("block-ui",v,I,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),N=o["\u0275crt"]({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 D(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)})}function A(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,D)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)},null)}function E(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](0,null,null,0))],null,null)}function L(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,[[1,3],["templateOutlet",2]],null,0,null,E)),(t()(),o["\u0275and"](0,null,null,0))],null,null)}function P(t){return o["\u0275vid"](0,[o["\u0275qud"](671088640,1,{templateOutlet:0}),(t()(),o["\u0275eld"](1,0,null,null,6,"div",[],null,null,null,null,null)),o["\u0275did"](2,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](3,{active:0}),(t()(),o["\u0275and"](16777216,null,null,1,null,A)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,L)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=o["\u0275inlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),r=t(e,3,0,n.active);t(e,2,0,a,r),t(e,5,0,!n.templateCmp),t(e,7,0,n.templateCmp)},null)}function M(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"block-ui-content",[],null,null,null,P,N)),o["\u0275did"](1,12828672,null,0,x,[y,o.ComponentFactoryResolver,o.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}var q=o["\u0275ccf"]("block-ui-content",x,M,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),j=n("SZbH"),F=o["\u0275crt"]({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 z(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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()(),o["\u0275eld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xd7"]))],null,null)}function G(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["[","]"]))],null,function(t,e){t(e,1,0,e.component.duplicatesCount+1)})}function Y(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "])),(t()(),o["\u0275and"](16777216,null,null,1,null,G)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 H(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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 V(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),o["\u0275ted"](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 B(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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 U(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,z)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Y)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,H)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,V)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,B)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 W(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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!==o["\u0275nov"](t,1).tapToast()&&a),"mouseenter"===e&&(a=!1!==o["\u0275nov"](t,1).stickAround()&&a),"mouseleave"===e&&(a=!1!==o["\u0275nov"](t,1).delayedHideToast()&&a),a},U,F)),o["\u0275did"](1,180224,null,0,j.c,[j.j,j.g,o.NgZone],null,null)],null,function(t,e){t(e,0,0,o["\u0275nov"](e,1).toastClasses,o["\u0275nov"](e,1).state,o["\u0275nov"](e,1).displayStyle)})}var K=o["\u0275ccf"]("[toast-component]",j.c,W,{},{},[]),$=n("pMnS"),Z=n("pKUh"),X=n("YAQW"),J=n("OZfm"),Q=n("lqqz"),tt=n("ZYCi"),et=function(){return function(){this.cardClass=""}}(),nt=o["\u0275crt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{border:.5px solid #ddd;border-radius:3px;background-color:#fff;box-shadow:0 1px 1px rgba(3,3,3,.175);margin:0 auto 20px;padding:0 20px;width:auto;height:auto;min-height:6vw;position:relative;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-title[_ngcontent-%COMP%]{margin:1.1vw 0;padding:0}.card-body[_ngcontent-%COMP%]{text-align:center;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.content-chart[_ngcontent-%COMP%]{margin-top:-.7vw;position:unset;top:unset;left:unset;-webkit-transform:unset;transform:unset}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;-webkit-transform:unset;transform:unset}.text-area-size-2[_ngcontent-%COMP%]{margin-right:-50%;-webkit-transform:translate(-50%,-20%);transform:translate(-50%,-20%)}.text-area-size-3[_ngcontent-%COMP%]{margin-right:-50%;-webkit-transform:translate(-50%,-40%);transform:translate(-50%,-40%)}.content-highlight[_ngcontent-%COMP%]{font-weight:700}.card-medium[_ngcontent-%COMP%]{min-height:12vw}.scroll[_ngcontent-%COMP%]{max-height:18vw;overflow-y:auto}.text-monospace[_ngcontent-%COMP%]{font-size:12px;font-family:monospace;text-align:left}@media (max-width:1599px){.card[_ngcontent-%COMP%]{min-height:7.8vw}.card-medium[_ngcontent-%COMP%]{min-height:14.4vw}}@media (max-width:calc(1200px - 1px)){.card-medium[_ngcontent-%COMP%]{min-height:18vw}.content-chart[_ngcontent-%COMP%]{margin-top:-.6vw}}@media (max-width:calc(992px - 1px)){.card[_ngcontent-%COMP%]{min-height:12vw}.content-chart[_ngcontent-%COMP%]{margin-top:-.3vw}}@media (max-width:calc(992px - 1px)) and (min-width:768px){.card-medium[_ngcontent-%COMP%]{min-height:26.4vw}}@media (max-width:599px){.card[_ngcontent-%COMP%]{min-height:18vw}}@media (max-width:319px){.card[_ngcontent-%COMP%]{min-height:24vw}}"]],data:{}});function at(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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!==o["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](1,671744,null,0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](2,null,["",""]))],function(t,e){t(e,1,0,e.component.link)},function(t,e){var n=e.component;t(e,0,0,o["\u0275nov"](e,1).target,o["\u0275nov"](e,1).href),t(e,2,0,n.cardTitle)})}function rt(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](0,null,[" "," "]))],null,function(t,e){t(e,0,0,e.component.cardTitle)})}function it(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"div",[["class","card"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),o["\u0275eld"](2,0,null,null,3,"div",[["class","card-title"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,at)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),o["\u0275and"](0,[["noLinkTitle",2]],null,0,null,rt)),(t()(),o["\u0275eld"](6,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),o["\u0275did"](7,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"card",n.cardClass),t(e,4,0,n.link,o["\u0275nov"](e,5)),t(e,7,0,"card-body",n.contentClass)},null)}var ot=function(){return function(){}}(),st=o["\u0275crt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;padding:0;font-size:21px}"]],data:{}});function ut(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[["class","info-group-title"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ","\n"])),o["\u0275ncd"](null,0)],null,function(t,e){t(e,1,0,e.component.groupTitle)})}var ct,lt=n("xdbM"),dt=n("WyAD"),pt=n("LvDl"),ft=n("NEZu"),ht=n("Fgil"),gt=n("o4+5");!function(t){t.DEFAULT_RED="#ff7592",t.DEFAULT_BLUE="#1d699d",t.DEFAULT_ORANGE="#ffa500",t.DEFAULT_MAGENTA="#564d65",t.DEFAULT_GREEN="#00bb00"}(ct||(ct={}));var mt=function(){function t(t,e){var n=this;this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new o.EventEmitter,this.chartConfig={chartType:"pie",dataset:[{label:null,borderWidth:0}],options:{legend:{display:!0,position:"right",labels:{usePointStyle:!0},onClick:function(t,e){n.onLegendClick(t,e)}},animation:{duration:0},tooltips:{enabled:!1},title:{display:!1}}},this.hiddenSlices=[]}return t.prototype.ngOnInit=function(){var t=this;dt.pluginService.register({beforeDraw:function(t){if(t.options.center_text){var e=t.chart.width,n=t.chart.height,a=t.chart.ctx;a.restore();var r=(n/114).toFixed(2);a.font=r+"em sans-serif",a.textBaseline="middle";var i=t.options.center_text,o=Math.round((e-a.measureText(i).width)/2);a.fillText(i,o,n/2),a.save()}}});var e=new ft.a(this.chartCanvasRef,this.chartTooltipRef,function(t,e){return e+t.caretX+"px"},function(t,e){return e+t.caretY-t.height-10+"px"});e.getBody=function(e){return t.getChartTooltipBody(e)},this.chartConfig.options.tooltips.custom=function(t){e.customTooltips(t)},this.chartConfig.colors=[{backgroundColor:[ct.DEFAULT_RED,ct.DEFAULT_BLUE,ct.DEFAULT_ORANGE,ct.DEFAULT_GREEN,ct.DEFAULT_MAGENTA]}],pt.merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])},t.prototype.ngOnChanges=function(){this.prepareFn.emit([this.chartConfig,this.data]),this.hideSlices(),this.setChartSliceBorderWidth()},t.prototype.getChartTooltipBody=function(t){var 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(": "))},t.prototype.setChartSliceBorderWidth=function(){var t=0;pt.forEach(this.chartConfig.dataset[0].data,function(e){e>0&&(t+=1)}),this.chartConfig.dataset[0].borderWidth=t>1?1:0},t.prototype.onLegendClick=function(t,e){t.stopPropagation(),this.hiddenSlices[e.index]=!e.hidden,this.ngOnChanges()},t.prototype.hideSlices=function(){var t=this;pt.forEach(this.chartConfig.dataset[0].data,function(e,n){t.hiddenSlices[n]&&(t.chartConfig.dataset[0].data[n]=void 0)})},t}(),bt=o["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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: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 yt(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{chartCanvasRef:0}),o["\u0275qud"](402653184,2,{chartTooltipRef:0}),(t()(),o["\u0275eld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),o["\u0275did"](4,737280,null,0,lt.BaseChartDirective,[o.ElementRef],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),o["\u0275eld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),o["\u0275eld"](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)},null)}var vt=function(){function t(){}return t.prototype.transform=function(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null},t}(),xt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){return t?t.monmap.mons.length.toString()+" ("+this.i18n("quorum")+" "+t.quorum.join(", ")+")":""},t}(),_t=n("Jm/i"),Tt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e=0,n=0;pt.each(t.osds,function(t){t.in&&e++,t.up&&n++});var 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:""});var r=t.osds.length-n,i=n-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});var o=r>0?r+" "+this.i18n("down"):"",s=r>0&&i>0?", ":"",u=i>0?i+" "+this.i18n("out"):"";a.push({content:""+o+s+u,class:"card-text-error"})}return a},t}(),wt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e=this.i18n("n/a"),n=pt.isUndefined(t.active_name)?"":this.i18n("active daemon")+": "+t.active_name;n.length>0&&(e="1");var a=t.standbys.length,r=[{content:e+" "+this.i18n("active"),class:"mgr-active-name",titleText:n}];return r.push({content:"",class:"card-text-line-break",titleText:""}),r.push({content:a+" "+this.i18n("standby"),class:"",titleText:""}),r},t}(),St=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e="",n="",a=0,r=0,i=0;pt.each(t.standbys,function(){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"):(pt.each(t.filesystems,function(t){pt.each(t.mdsmap.info,function(t){"up:standby-replay"===t.state?i+=1:r+=1})}),e=r+" "+this.i18n("active"),n=a+i+" "+this.i18n("standby"));var o=[{content:e,class:""}];return n&&(o.push({content:"",class:"card-text-line-break"}),o.push({content:n,class:""})),o},t}(),Ot=function(){function t(){}return t.prototype.transform=function(t,e){return pt.round(t,e)},t}(),kt=n("aXbf"),Ct=n("DtyJ"),It=n("t/Na"),Rt=n("pL04"),Nt=function(){function t(t){this.http=t}return t.prototype.getFullHealth=function(){return this.http.get("api/health/full")},t.prototype.getMinimalHealth=function(){return this.http.get("api/health/minimal")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Dt=n("ej+x"),At=n("26FU"),Et=n("xXU7"),Lt=function(){function t(){this.intervalDataSource=new At.a(null),this.intervalData$=this.intervalDataSource.asObservable();var t=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(t)}return t.prototype.setRefreshInterval=function(t){var e=this;this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.intervalSubscription=Object(Et.a)(this.intervalTime).subscribe(function(){return e.intervalDataSource.next(e.intervalTime)})},t.prototype.getRefreshInterval=function(){return this.intervalTime},t.prototype.ngOnDestroy=function(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),Pt=n("d+Og"),Mt=function(){function t(t,e,n,a,r,i,o,s){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=o,this.dimless=s,this.interval=new Ct.Subscription,this.rawCapacityChartConfig={options:{title:{display:!0,position:"bottom"}}},this.objectsChartConfig={options:{title:{display:!0,position:"bottom"}},colors:[{backgroundColor:[ct.DEFAULT_GREEN,ct.DEFAULT_MAGENTA,ct.DEFAULT_ORANGE,ct.DEFAULT_RED]}]},this.pgStatusChartConfig={colors:[{backgroundColor:[ct.DEFAULT_GREEN,ct.DEFAULT_BLUE,ct.DEFAULT_ORANGE,ct.DEFAULT_RED]}]},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}return t.prototype.ngOnInit=function(){var t=this;this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(function(){t.getHealth()})},t.prototype.ngOnDestroy=function(){this.interval.unsubscribe()},t.prototype.getHealth=function(){var t=this;this.healthService.getMinimalHealth().subscribe(function(e){t.healthData=e})},t.prototype.prepareReadWriteRatio=function(t){var e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(this.i18n("Writes")+" ("+this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)+"%)"),n.push(this.healthData.client_perf.write_op_per_sec),e.push(this.i18n("Reads")+" ("+this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)+"%)"),n.push(this.healthData.client_perf.read_op_per_sec),t.dataset[0].data=n,t.labels=e},t.prototype.prepareRawUsage=function(t,e){var 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=[e.df.stats.total_used_raw_bytes,e.df.stats.total_avail_bytes],t.labels=[this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)+" "+this.i18n("Used")+" ("+a+"%)",this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)+" "+this.i18n("Avail.")+" ("+n+"%)"],t.options.title.text=this.dimlessBinary.transform(e.df.stats.total_bytes)+" "+this.i18n("total")},t.prototype.preparePgStatus=function(t,e){var n=this,a={},r=0;pt.forEach(e.pg_info.statuses,function(t,e){var i=n.pgCategoryService.getTypeByStates(e);pt.isUndefined(a[i])&&(a[i]=0),a[i]+=t,r+=t}),t.dataset[0].data=this.pgCategoryService.getAllTypes().map(function(t){return a[t]}),t.labels=[this.i18n("Clean")+" ("+this.calcPercentage(a.clean,r)+"%)",this.i18n("Working")+" ("+this.calcPercentage(a.working,r)+"%)",this.i18n("Warning")+" ("+this.calcPercentage(a.warning,r)+"%)",this.i18n("Unknown")+" ("+this.calcPercentage(a.unknown,r)+"%)"]},t.prototype.prepareObjects=function(t,e){var n=e.pg_info.object_stats.num_object_copies,a=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;t.labels=[this.i18n("Healthy")+" ("+this.calcPercentage(a,n)+"%)",this.i18n("Misplaced")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n)+"%)",this.i18n("Degraded")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n)+"%)",this.i18n("Unfound")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n)+"%)"],t.dataset[0].data=[a,e.pg_info.object_stats.num_objects_misplaced,e.pg_info.object_stats.num_objects_degraded,e.pg_info.object_stats.num_objects_unfound],t.options.title.text=this.dimless.transform(e.pg_info.object_stats.num_objects)+" "+this.i18n("total")+" ("+this.dimless.transform(n)+" "+this.i18n("replicas")+")",t.options.maintainAspectRatio=window.innerWidth>=375},t.prototype.isClientReadWriteChartShowable=function(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0},t.prototype.calcPercentage=function(t,e){return pt.isNumber(t)&&pt.isNumber(e)&&0!==e?Math.round(t/e*100):0},t}(),qt=o["\u0275crt"]({encapsulation:0,styles:[["cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}.cd-container-flex[_ngcontent-%COMP%]{margin:0;padding:0;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:justify;justify-content:space-between}.cd-col-5[_ngcontent-%COMP%]{width:20%}@media (max-width:1599px){.cd-col-5[_ngcontent-%COMP%]{width:25%}}@media (max-width:calc(1200px - 1px)){.cd-col-5[_ngcontent-%COMP%]{width:33%}}@media (max-width:calc(992px - 1px)){.cd-col-5[_ngcontent-%COMP%]{width:50%}}@media (max-width:calc(768px - 1px)){cd-info-card[_ngcontent-%COMP%]{padding:0}.cd-col-5[_ngcontent-%COMP%]{width:100%}}.info-group[_ngcontent-%COMP%]{margin:0;padding:0}  .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}.mgr-active-name[_ngcontent-%COMP%]:hover{cursor:pointer}"]],data:{}});function jt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ft(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,3,"span",[],null,null,null,null,null)),o["\u0275did"](2,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null),o["\u0275ppd"](3,1),(t()(),o["\u0275ted"](4,null,["",""])),(t()(),o["\u0275ted"](5,null,[": "," "]))],function(t,e){var n=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,2,0,n)},function(t,e){t(e,4,0,e.context.$implicit.type),t(e,5,0,e.context.$implicit.summary.message)})}function zt(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,jt)),o["\u0275did"](1,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),o["\u0275eld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ft)),o["\u0275did"](4,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,1,0,o["\u0275nov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)},null)}function Gt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),o["\u0275and"](0,[["healthChecks",2]],null,0,null,zt)),(t()(),o["\u0275eld"](2,16777216,null,null,4,"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!==o["\u0275nov"](t,5).toggle()&&a),a},null,null)),o["\u0275did"](3,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null),o["\u0275ppd"](4,1),o["\u0275did"](5,212992,[["healthChecksTarget",4]],0,J.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,J.a,Q.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),o["\u0275ted"](6,null,[" "," "])),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){var n=e.component,a=o["\u0275unv"](e,3,0,t(e,4,0,o["\u0275nov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,a),t(e,5,0,o["\u0275nov"](e,1),"bottom","","body","info-card-popover-cluster-status")},function(t,e){t(e,6,0,e.component.healthData.health.status)})}function Yt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,3,"div",[],null,null,null,null,null)),o["\u0275did"](2,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null),o["\u0275ppd"](3,1),(t()(),o["\u0275ted"](4,null,[" "," "]))],function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,2,0,a)},function(t,e){t(e,4,0,e.component.healthData.health.status)})}function Ht(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","col-sm-6 col-md-4 col-lg-3"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Gt)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Yt)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Cluster Status",(null==n.healthData.health?null:null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0?"content-highlight text-area-size-2":"content-highlight"),t(e,3,0,(null==n.healthData.health?null: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 Vt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,a)})}function Bt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),o["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,2,0,e.context.$implicit.content)})}function Ut(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","col-sm-6 col-md-4 col-lg-3"],["link","/osd"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Bt)),o["\u0275did"](3,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,1,0,"OSDs","/osd",(5==e.context.ngIf.length?"text-area-size-3":"text-area-size-2")+" content-highlight"),t(e,3,0,e.context.ngIf)},null)}function Wt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],[[8,"title",0]],null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),o["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,2,0,e.context.$implicit.content)})}function Kt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Manager Daemons"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-highlight text-area-size-2"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),o["\u0275and"](16777216,null,0,2,null,Wt)),o["\u0275did"](3,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275ppd"](4,1)],function(t,e){var n=e.component;t(e,1,0,"Manager Daemons","content-highlight text-area-size-2");var a=o["\u0275unv"](e,3,0,t(e,4,0,o["\u0275nov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,a)},null)}function $t(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/hosts"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"Hosts","/hosts","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.hosts)})}function Zt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/rgw/daemon"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.rgw)})}function Xt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),o["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,2,0,e.context.$implicit.content)})}function Jt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","col-sm-6 col-md-4 col-lg-3"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Xt)),o["\u0275did"](3,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.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 Qt(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/block/iscsi"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"iSCSI Gateways","/block/iscsi","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.iscsi_daemons)})}function te(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,19,"cd-info-group",[["class","row info-group"],["groupTitle","Status"]],null,null,null,ut,st)),o["\u0275did"](1,49152,null,0,ot,[],{groupTitle:[0,"groupTitle"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Ht)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Vt)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,2,null,Ut)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275ppd"](8,1),(t()(),o["\u0275and"](16777216,null,0,1,null,Kt)),o["\u0275did"](10,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,$t)),o["\u0275did"](12,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Zt)),o["\u0275did"](14,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,2,null,Jt)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275ppd"](17,1),(t()(),o["\u0275and"](16777216,null,0,1,null,Qt)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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,n.healthData.mon_status);var a=o["\u0275unv"](e,7,0,t(e,8,0,o["\u0275nov"](e.parent.parent,2),n.healthData.osd_map));t(e,7,0,a),t(e,10,0,n.healthData.mgr_map),t(e,12,0,null!=n.healthData.hosts),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var r=o["\u0275unv"](e,16,0,t(e,17,0,o["\u0275nov"](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 ee(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client IOPS"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,2)],function(t,e){t(e,1,0,"Client IOPS","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,5),n.healthData.client_perf.read_op_per_sec+n.healthData.client_perf.write_op_per_sec,1));t(e,2,0,a)})}function ne(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client Throughput"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Client Throughput","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,6),n.healthData.client_perf.read_bytes_sec+n.healthData.client_perf.write_bytes_sec))+"/s";t(e,2,0,a)})}function ae(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,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},yt,bt)),o["\u0275did"](1,638976,null,0,mt,[ht.a,gt.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],function(t,e){t(e,1,0,e.component.healthData)},null)}function re(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" N/A "]))],null,null)}function ie(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client Read/Write"],["class","cd-col-5"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,ae)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,re)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Client Read/Write","card-medium",n.isClientReadWriteChartShowable()?"content-chart":"content-medium content-highlight"),t(e,3,0,n.isClientReadWriteChartShowable()),t(e,5,0,!n.isClientReadWriteChartShowable())},null)}function oe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Recovery Throughput"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Recovery Throughput","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,a)})}function se(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Scrub"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "]))],function(t,e){t(e,1,0,"Scrub","card-medium","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.scrub_status)})}function ue(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,12,"cd-info-group",[["class","row info-group"],["groupTitle","Performance"]],null,null,null,ut,st)),o["\u0275did"](1,49152,null,0,ot,[],{groupTitle:[0,"groupTitle"]},null),(t()(),o["\u0275eld"](2,0,null,0,10,"div",[["class","cd-container-flex"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ee)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ne)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ie)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,oe)),o["\u0275did"](10,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,se)),o["\u0275did"](12,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,4,0,n.healthData.client_perf),t(e,6,0,n.healthData.client_perf),t(e,8,0,n.healthData.client_perf),t(e,10,0,n.healthData.client_perf),t(e,12,0,n.healthData.scrub_status)},null)}function ce(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Pools"],["class","cd-col-5"],["contentClass","content-medium content-highlight"],["link","/pool"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],cardClass:[2,"cardClass"],contentClass:[3,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "]))],function(t,e){t(e,1,0,"Pools","/pool","card-medium","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.pools.length)})}function le(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Raw Capacity"],["class","cd-col-5"],["contentClass","content-chart"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275eld"](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},yt,bt)),o["\u0275did"](3,638976,null,0,mt,[ht.a,gt.a],{data:[0,"data"],config:[1,"config"],showLabelAsTooltip:[2,"showLabelAsTooltip"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","card-medium","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)},null)}function de(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Objects"],["class","cd-col-5"],["contentClass","content-chart"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275eld"](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},yt,bt)),o["\u0275did"](3,638976,null,0,mt,[ht.a,gt.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"Objects","card-medium","content-chart"),t(e,3,0,n.healthData,n.objectsChartConfig)},null)}function pe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","PGs per OSD"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"PGs per OSD","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,7),n.healthData.pg_info.pgs_per_osd));t(e,2,0,a)})}function fe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function he(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ",": "," "]))],null,function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)})}function ge(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,fe)),o["\u0275did"](1,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),o["\u0275eld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,he)),o["\u0275did"](4,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.KeyValuePipe,[o.KeyValueDiffers])],function(t,e){var n=e.component;t(e,1,0,o["\u0275nov"](e.parent.parent.parent,7)),t(e,4,0,o["\u0275unv"](e,4,0,o["\u0275nov"](e,5).transform(n.healthData.pg_info.statuses)))},null)}function me(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"cd-info-card",[["cardClass","card-medium"],["cardTitle","PG Status"],["class","cd-col-5"],["contentClass","content-chart"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).toggle()&&a),a},it,nt)),o["\u0275did"](1,49152,null,0,et,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),o["\u0275and"](0,[["pgStatus",2]],0,0,null,ge)),(t()(),o["\u0275eld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),o["\u0275did"](5,212992,[["pgStatusTarget",4]],0,J.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,J.a,Q.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),o["\u0275eld"](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},yt,bt)),o["\u0275did"](7,638976,null,0,mt,[ht.a,gt.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"PG Status","card-medium","content-chart"),t(e,5,0,o["\u0275nov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)},null)}function be(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,12,"cd-info-group",[["class","row info-group"],["groupTitle","Capacity"]],null,null,null,ut,st)),o["\u0275did"](1,49152,null,0,ot,[],{groupTitle:[0,"groupTitle"]},null),(t()(),o["\u0275eld"](2,0,null,0,10,"div",[["class","cd-container-flex"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ce)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,le)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,de)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,pe)),o["\u0275did"](10,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,me)),o["\u0275did"](12,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,4,0,n.healthData.pools),t(e,6,0,n.healthData.df),t(e,8,0,null!=(null==n.healthData.pg_info?null:null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,10,0,n.healthData.pg_info),t(e,12,0,n.healthData.pg_info)},null)}function ye(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,6,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-info-circle"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" See "])),(t()(),o["\u0275eld"](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!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,null,0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Logs"])),(t()(),o["\u0275ted"](-1,null,[" for more details."]))],function(t,e){t(e,5,0,"/logs")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function ve(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,ye)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.permissions.log.read)},null)}function xe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,te)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ue)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,be)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,[["logsLink",2]],null,0,null,ve))],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.client_perf||n.healthData.scrub_status),t(e,6,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info)},null)}function _e(t){return o["\u0275vid"](0,[o["\u0275pid"](0,vt,[]),o["\u0275pid"](0,xt,[_t.a]),o["\u0275pid"](0,Tt,[_t.a]),o["\u0275pid"](0,wt,[_t.a]),o["\u0275pid"](0,St,[_t.a]),o["\u0275pid"](0,Ot,[]),o["\u0275pid"](0,ht.a,[kt.a]),o["\u0275pid"](0,gt.a,[kt.a]),(t()(),o["\u0275and"](16777216,null,null,2,null,xe)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275pid"](131072,i.AsyncPipe,[o.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,9,0,o["\u0275unv"](e,9,0,o["\u0275nov"](e,10).transform(n.healthData&&n.enabledFeature$)))},null)}var Te=n("gIcY"),we=function(){function t(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)}return t.prototype.ngOnInit=function(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3},t.prototype.changeRefreshInterval=function(t){this.refreshIntervalService.setRefreshInterval(t)},t}(),Se=o["\u0275crt"]({encapsulation:0,styles:[[".refresh-selector[_ngcontent-%COMP%]{padding:0;float:right;margin-right:60px}.refresh-selector[_ngcontent-%COMP%]   *[_ngcontent-%COMP%]{padding:0;box-sizing:border-box}.refresh-selector[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{padding:10px 10px 0 0;text-align:right;margin:0}@media (min-width:500px) and (max-width:767px){.refresh-selector[_ngcontent-%COMP%]{width:24vw}}@media (min-width:1200px){.refresh-selector[_ngcontent-%COMP%]{width:12vw}}@media (min-width:1400px){.refresh-selector[_ngcontent-%COMP%]{width:10vw}}"]],data:{}});function Oe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 ke(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,12,"div",[["class","col-xs-5 col-sm-2 refresh-selector"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,2,"label",[["class","control-label col-xs-5 col-sm-5"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Refresh"])),(t()(),o["\u0275eld"](5,0,null,null,8,"div",[["class","col-xs-7 col-sm-7"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,7,"select",[["class","form-control"],["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]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,7).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,7).onTouched()&&a),"change"===e&&(a=!1!==r.changeRefreshInterval(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.selectedInterval=n)&&a),a},null,null)),o["\u0275did"](7,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](9,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](11,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Oe)),o["\u0275did"](13,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,9,0,"refreshInterval",n.selectedInterval),t(e,13,0,n.intervalKeys)},function(t,e){t(e,6,0,o["\u0275nov"](e,11).ngClassUntouched,o["\u0275nov"](e,11).ngClassTouched,o["\u0275nov"](e,11).ngClassPristine,o["\u0275nov"](e,11).ngClassDirty,o["\u0275nov"](e,11).ngClassValid,o["\u0275nov"](e,11).ngClassInvalid,o["\u0275nov"](e,11).ngClassPending)})}var Ce=function(){function t(){this.hasGrafana=!1}return t.prototype.ngOnInit=function(){},t}(),Ie=o["\u0275crt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function Re(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-health",[],null,null,null,_e,qt)),o["\u0275did"](5,245760,null,0,Mt,[Nt,_t.a,d.a,Pt.a,Dt.a,Lt,ht.a,gt.a],null,null),(t()(),o["\u0275eld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](7,212992,null,0,X.b,[X.d,o.ElementRef,o.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,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,6,0,o["\u0275nov"](e,7).id,o["\u0275nov"](e,7).active,o["\u0275nov"](e,7).addClass)})}function Ne(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-health",[],null,null,null,_e,qt)),o["\u0275did"](1,245760,null,0,Mt,[Nt,_t.a,d.a,Pt.a,Dt.a,Lt,ht.a,gt.a],null,null)],function(t,e){t(e,1,0)},null)}function De(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,ke,Se)),o["\u0275did"](2,114688,null,0,we,[Lt],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Re)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ne)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 Ae(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,De,Ie)),o["\u0275did"](1,114688,null,0,Ce,[],null,null)],function(t,e){t(e,1,0)},null)}var Ee=o["\u0275ccf"]("cd-dashboard",Ce,Ae,{},{},[]),Le=n("a278"),Pe=n("insk"),Me=n("mSOc"),qe=n("ZYjt"),je=n("20UP"),Fe=n("+0ag"),ze=n("25BL"),Ge=n("uIqm"),Ye=n("vCyI"),He=function(){function t(t){this.authStorageService=t,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.host=this.selection.first())},t}(),Ve=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Be(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","rtOg0AiWz"]],null,null,null,Le.b,Le.a)),o["\u0275did"](5,638976,null,0,Pe.a,[Me.a,qe.DomSanitizer,je.a,Fe.a,_t.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(t,e){var n=e.component;t(e,3,0,"Performance Details"),t(e,5,0,"host-details?var-ceph_hosts="+n.host.hostname,"three","rtOg0AiWz")},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass)})}function Ue(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Be)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.selection.hasSingleSelection&&n.grafanaPermission.read)},null)}var We=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/host").toPromise().then(function(t){return t})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Ke=n("85J/"),$e=function(){function t(t,e,n,a){this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.i18n=a,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new Ye.a,this.permissions=this.authStorageService.getPermissions()}return t.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.getHosts=function(t){var e=this;if(!this.isLoadingHosts){var n={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().then(function(t){t.map(function(t){return t.services.map(function(t){t.cdLink="/perf_counters/"+t.type+"/"+encodeURIComponent(t.id);var a=e.permissions[n[t.type]];return t.canRead=!!a&&a.read,t}),t}),e.hosts=t,e.isLoadingHosts=!1}).catch(function(){e.isLoadingHosts=!1,t.error()})}},t}(),Ze=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Xe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](1,671744,null,0,tt.o,[tt.l,tt.a,i.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),o["\u0275pad"](2,1),(t()(),o["\u0275ted"](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,o["\u0275nov"](e,1).target,o["\u0275nov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)})}function Je(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ","."," "]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)})}function Qe(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"span",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Xe)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Je)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275ted"](5,null,[" "," "]))],function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead)},function(t,e){t(e,5,0,e.context.last?"":", ")})}function tn(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Qe)),o["\u0275did"](1,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function en(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](1,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,Le.b,Le.a)),o["\u0275did"](3,638976,null,0,Pe.a,[Me.a,qe.DomSanitizer,je.a,Fe.a,_t.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,o["\u0275nov"](e,1).id,o["\u0275nov"](e,1).active,o["\u0275nov"](e,1).addClass)})}function nn(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{servicesTpl:0}),(t()(),o["\u0275eld"](1,0,null,null,10,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](2,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](3,0,null,0,6,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](4,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](5,0,null,null,4,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](6,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),o["\u0275and"](0,[[1,2],["servicesTpl",2]],null,0,null,tn)),(t()(),o["\u0275eld"](8,0,null,2,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,Ue,Ve)),o["\u0275did"](9,573440,null,0,He,[d.a],{selection:[0,"selection"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,en)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,4,0,"Hosts List"),t(e,6,0,n.hosts,n.columns,"flex","single"),t(e,9,0,n.selection),t(e,11,0,n.permissions.grafana.read)},function(t,e){t(e,1,0,o["\u0275nov"](e,2).clazz),t(e,3,0,o["\u0275nov"](e,4).id,o["\u0275nov"](e,4).active,o["\u0275nov"](e,4).addClass)})}function an(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-hosts",[],null,null,null,nn,Ze)),o["\u0275did"](1,114688,null,0,$e,[d.a,We,Ke.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var rn=o["\u0275ccf"]("cd-hosts",$e,an,{},{},[]),on=function(){function t(t){this.http=t}return t.prototype.getMonitor=function(){return this.http.get("api/monitor")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),sn=n("x38r"),un=function(){function t(t,e){this.monitorService=t,this.i18n=e,this.sparklineStyle={height:"30px",width:"50%"},this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:sn.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:sn.a.sparkline}],data:[]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:sn.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}],data:[]}}return t.prototype.refresh=function(){var t=this;this.monitorService.getMonitor().subscribe(function(e){e.in_quorum.map(function(t){return t.cdOpenSessions=t.stats.num_sessions.map(function(t){return t[1]}),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t}),e.out_quorum.map(function(t){return t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t}),t.inQuorum.data=e.in_quorum.slice(),t.notInQuorum.data=e.out_quorum.slice(),t.mon_status=e.mon_status})},t}(),cn=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ln(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,36,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,35,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Cluster ID"])),(t()(),o["\u0275eld"](5,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](6,null,["",""])),(t()(),o["\u0275eld"](7,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["monmap modified"])),(t()(),o["\u0275eld"](10,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](11,null,["",""])),(t()(),o["\u0275eld"](12,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["monmap epoch"])),(t()(),o["\u0275eld"](15,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](16,null,["",""])),(t()(),o["\u0275eld"](17,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](18,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["quorum con"])),(t()(),o["\u0275eld"](20,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](21,null,["",""])),(t()(),o["\u0275eld"](22,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](23,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["quorum mon"])),(t()(),o["\u0275eld"](25,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](26,null,["",""])),(t()(),o["\u0275eld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["required con"])),(t()(),o["\u0275eld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](31,null,["",""])),(t()(),o["\u0275eld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["required mon"])),(t()(),o["\u0275eld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](36,null,["",""]))],null,function(t,e){var n=e.component;t(e,6,0,n.mon_status.monmap.fsid),t(e,11,0,n.mon_status.monmap.modified),t(e,16,0,n.mon_status.monmap.epoch),t(e,21,0,n.mon_status.features.quorum_con),t(e,26,0,n.mon_status.features.quorum_mon),t(e,31,0,n.mon_status.features.required_con),t(e,36,0,n.mon_status.features.required_mon)})}function dn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-4"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Status"])),(t()(),o["\u0275and"](16777216,null,null,1,null,ln)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](7,0,null,null,8,"div",[["class","col-md-8"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,1,"legend",[["class","in-quorum"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["In Quorum"])),(t()(),o["\u0275eld"](10,0,null,null,1,"cd-table",[],null,null,null,ze.b,ze.a)),o["\u0275did"](11,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),o["\u0275eld"](12,0,null,null,1,"legend",[["class","in-quorum"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Not In Quorum"])),(t()(),o["\u0275eld"](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},ze.b,ze.a)),o["\u0275did"](15,2867200,null,0,Ge.a,[o.NgZone,o.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 pn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-monitor",[],null,null,null,dn,cn)),o["\u0275did"](1,49152,null,0,un,[on,_t.a],null,null)],null,null)}var fn=o["\u0275ccf"]("cd-monitor",un,pn,{},{},[]),hn=n("xtZt"),gn=n("xSw7"),mn=n("GgAd"),bn=n("xbqr"),yn=n("9GXa"),vn=n("NUGo"),xn=n("S7zO"),_n=n("sLuX"),Tn=n("FSuO"),wn=n("a0VL"),Sn=n("j8L6"),On=n("b5OY"),kn=n("pxLl"),Cn=function(){function t(){this.last={}}return t.prototype.ngOnChanges=function(){this.render()},t.prototype.hexdigits=function(t){var e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e},t.prototype.hexcolor=function(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)},t.prototype.render=function(){var t=this;if(this.histogram){var e=0;pt.each(this.histogram.values,function(n,a){pt.each(n,function(n,r){e=Math.max(e,t.last&&t.last[a]&&t.last[a][r]?n-t.last[a][r]:n)})}),this.valuesStyle=this.histogram.values.map(function(n,a){return n.map(function(n,r){var i=e?(t.last&&t.last[a]&&t.last[a][r]?n-t.last[a][r]:n)/e:0;return{backgroundColor:t.hexcolor(1-i,i,0)}})}),this.last=this.histogram.values}},t}(),In=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Rn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[["style","width: 10px; height: 10px;"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null)],function(t,e){t(e,1,0,e.context.$implicit)},null)}function Nn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"tr",[["style","height: 10px;"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Rn)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.context.$implicit)},null)}function Dn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"table",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Nn)),o["\u0275did"](3,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,3,0,e.component.valuesStyle)},null)}var An=function(){function t(t,e){this.http=t,this.i18n=e,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}}]}}return t.prototype.getList=function(){return this.http.get(""+this.path)},t.prototype.getDetails=function(t){return this.http.get(this.path+"/"+t)},t.prototype.scrub=function(t,e){return this.http.post(this.path+"/"+t+"/scrub?deep="+e,null)},t.prototype.getFlags=function(){return this.http.get(this.path+"/flags")},t.prototype.updateFlags=function(t){return this.http.put(this.path+"/flags",{flags:t})},t.prototype.markOut=function(t){return this.http.post(this.path+"/"+t+"/mark_out",null)},t.prototype.markIn=function(t){return this.http.post(this.path+"/"+t+"/mark_in",null)},t.prototype.markDown=function(t){return this.http.post(this.path+"/"+t+"/mark_down",null)},t.prototype.reweight=function(t,e){return this.http.post(this.path+"/"+t+"/reweight",{weight:e})},t.prototype.markLost=function(t){return this.http.post(this.path+"/"+t+"/mark_lost",null)},t.prototype.purge=function(t){return this.http.post(this.path+"/"+t+"/purge",null)},t.prototype.destroy=function(t){return this.http.post(this.path+"/"+t+"/destroy",null)},t.prototype.safeToDestroy=function(t){return this.http.get(this.path+"/"+t+"/safe_to_destroy")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c),o.inject(_t.a))},token:t,providedIn:Rt.a}),t}(),En=function(){function t(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.osd={loaded:!1},this.selection.hasSelection&&(this.osd=this.selection.first(),this.refresh())},t.prototype.refresh=function(){var t=this;this.osdService.getDetails(this.osd.id).subscribe(function(e){t.osd.details=e,t.osd.histogram_failed="",pt.isObject(e.histogram)||(t.osd.histogram_failed=e.histogram,t.osd.details.histogram=void 0),t.osd.loaded=!0})},t}(),Ln=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Pn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](1,638976,null,0,Tn.a,[wn.a],{data:[0,"data"]},null)],function(t,e){t(e,1,0,e.component.osd.details.osd_map)},null)}function Mn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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},_n.b,_n.a)),o["\u0275did"](1,638976,null,0,Tn.a,[wn.a],{data:[0,"data"]},{fetchData:"fetchData"})],function(t,e){t(e,1,0,e.component.osd.details.osd_metadata)},null)}function qn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,bn.b,bn.a)),o["\u0275did"](1,49152,null,0,yn.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["Metadata not available"]))],null,null)}function jn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,Sn.b,Sn.a)),o["\u0275did"](1,114688,null,0,On.a,[kn.a,_t.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],function(t,e){t(e,1,0,"osd",e.component.osd.id)},null)}function Fn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,bn.b,bn.a)),o["\u0275did"](1,49152,null,0,yn.a,[],null,null),(t()(),o["\u0275ted"](2,0,["Histogram not available: ",""]))],null,function(t,e){t(e,2,0,e.component.osd.histogram_failed)})}function zn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Writes"])),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,Dn,In)),o["\u0275did"](5,573440,null,0,Cn,[],{histogram:[0,"histogram"]},null),(t()(),o["\u0275eld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Reads"])),(t()(),o["\u0275eld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,Dn,In)),o["\u0275did"](10,573440,null,0,Cn,[],{histogram:[0,"histogram"]},null)],function(t,e){var n=e.component;t(e,5,0,n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)},null)}function Gn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](1,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","GrafanaStyles.two"],["uid","CrAHE0iZz"]],null,null,null,Le.b,Le.a)),o["\u0275did"](3,638976,null,0,Pe.a,[Me.a,qe.DomSanitizer,je.a,Fe.a,_t.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,"GrafanaStyles.two","CrAHE0iZz")},function(t,e){t(e,0,0,o["\u0275nov"](e,1).id,o["\u0275nov"](e,1).active,o["\u0275nov"](e,1).addClass)})}function Yn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,22,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Pn)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](6,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](7,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Mn)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),o["\u0275and"](0,[["noMetaData",2]],null,0,null,qn)),(t()(),o["\u0275eld"](11,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](12,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,jn)),o["\u0275did"](14,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](15,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](16,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Fn)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,zn)),o["\u0275did"](20,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Gn)),o["\u0275did"](22,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,"Attributes (OSD map)"),t(e,5,0,n.osd.loaded),t(e,7,0,"Metadata"),t(e,9,0,n.osd.loaded&&n.osd.details.osd_metadata,o["\u0275nov"](e,10)),t(e,12,0,"Performance counter"),t(e,14,0,n.osd.loaded),t(e,16,0,"Histogram"),t(e,18,0,n.osd.loaded&&n.osd.histogram_failed),t(e,20,0,n.osd.loaded&&n.osd.details.histogram),t(e,22,0,n.grafanaPermission.read)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,6,0,o["\u0275nov"](e,7).id,o["\u0275nov"](e,7).active,o["\u0275nov"](e,7).addClass),t(e,11,0,o["\u0275nov"](e,12).id,o["\u0275nov"](e,12).active,o["\u0275nov"](e,12).addClass),t(e,15,0,o["\u0275nov"](e,16).id,o["\u0275nov"](e,16).active,o["\u0275nov"](e,16).addClass)})}function Hn(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Yn)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.selection.hasSingleSelection)},null)}function Vn(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,Hn,Ln)),o["\u0275did"](1,573440,null,0,En,[An,d.a],null,null)],null,null)}var Bn=o["\u0275ccf"]("cd-osd-details",En,Vn,{selection:"selection"},{},[]),Un=n("OLbh"),Wn=n("0+/T"),Kn=n("sne2"),$n=n("mtw6"),Zn=n("9nlD"),Xn=function(){function t(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new Te.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")},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()}return t.prototype.ngOnInit=function(){var t=this;this.osdService.getFlags().subscribe(function(e){e.forEach(function(e){t.allFlags[e]?t.allFlags[e].value=!0:t.unknownFlags.push(e)}),t.flags=pt.toArray(t.allFlags)})},t.prototype.submitAction=function(){var t=this,e=this.flags.filter(function(t){return t.value}).map(function(t){return t.code}).concat(this.unknownFlags);this.osdService.updateFlags(e).subscribe(function(){t.notificationService.show($n.a.success,t.i18n("Updated OSD Flags")),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),Jn=n("VNr4"),Qn=n("MuvH"),ta=n("QFaf"),ea=n("1Ni5"),na=function(){function t(){}return t.getType=function(t){var e=pt.find(this.knownTypes,function(e){return e.name===t});if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')},t.getTypeValidators=function(e){var n=t.getType(e.type);if("bool"!==n.name&&"str"!==n.name){var a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push(Te.A.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push(Te.A.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push(Te.A.min(n.defaultMin))),a.validators.push("float"===e.type?ea.a.decimalNumber():ea.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[ea.a.ip()]:"uuid"===e.type&&(a.validators=[ea.a.uuid()]),a}},t.getTypeStep=function(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){var n=e.toString().split(".");return Math.pow(10,-n[1].length)}return.1}},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}(),aa=function(){function t(t){this.configService=t,this.optionNames=[],this.optionsForm=new ta.a({}),this.optionsFormDir=new Te.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.options=[],this.optionsFormGroup=new ta.a({})}return t.optionNameToText=function(t){var e=["mon","mgr","osd","mds","client"];return t.split("_").filter(function(t,n){return 0!==n||!e.includes(t)}).map(function(t){return t.charAt(0).toUpperCase()+t.substring(1)}).join(" ")},t.prototype.ngOnInit=function(){this.createForm(),this.loadStoredData()},t.prototype.createForm=function(){var t=this;this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(function(e){t.optionsFormGroup.addControl(e,new Te.i(null))})},t.prototype.getStep=function(t,e){return na.getTypeStep(t,e)},t.prototype.loadStoredData=function(){var e=this;this.configService.filter(this.optionNames).subscribe(function(n){e.options=n.map(function(n){var a=e.optionsForm.get(n.name),r=na.getTypeValidators(n);return n.additionalTypeInfo=na.getType(n.type),n.text=t.optionNameToText(n.name),n.value=pt.find(n.value,function(t){return"osd"===t.section}),n.value&&a.setValue("bool"===n.additionalTypeInfo.name?"true"===n.value.value:n.value.value),r&&(n.patternHelpText=r.patternHelpText,"max"in r&&""!==r.max&&(n.maxValue=r.max),"min"in r&&""!==r.min&&(n.minValue=r.min),a.setValidators(r.validators)),n})})},t.prototype.saveValues=function(){var t=this,e={};return this.optionNames.forEach(function(n){var a=t.optionsForm.getValue(n);null!==a&&""!==a&&(e[n]={section:"osd",value:a})}),this.configService.bulkCreate({options:e})},t.prototype.resetValue=function(t){var e=this;this.configService.delete(t,"osd").subscribe(function(){e.optionsForm.get(t).reset()})},t}(),ra=function(){function 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_op_queue_mclock_scrub_lim","osd_op_queue_mclock_scrub_res","osd_op_queue_mclock_scrub_wgt","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}(),ia=function(){function t(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=ra.basicOptions,this.advancedOptions=ra.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new ta.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}return t.prototype.submitAction=function(){var t=this,e=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&e.push(this.advancedOptionsValues.saveValues()),Object(Jn.a)(e).subscribe(function(){t.notificationService.show($n.a.success,t.i18n("Updated PG scrub options")),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),oa=function(){function t(t,e,n,a,r,i){var o=this;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 ta.a({priority:new Te.i(null,{validators:[Te.A.required]}),customizePriority:new Te.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(function(t){o.osdRecvSpeedForm.addControl(t,new Te.i(null,{validators:[Te.A.required]}))})}return t.prototype.ngOnInit=function(){var t=this;this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(function(e){var n=t.getCurrentValues(e);t.detectPriority(n.values,function(e){t.setPriority(e)}),t.setDescription(n.configOptions),t.setValidators(n.configOptions)})},t.prototype.detectPriority=function(t,e){var n=pt.find(this.priorities,function(e){return pt.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])},t.prototype.getCurrentValues=function(t){var e={values:{},configOptions:[]};return t.forEach(function(t){e.configOptions.push(t),"value"in t?t.value.forEach(function(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},t.prototype.setDescription=function(t){var e=this;t.forEach(function(t){""!==t.desc&&(e.priorityAttrs[t.name].desc=t.desc)})},t.prototype.setPriority=function(t){var e=this,n=pt.find(this.priorities,function(t){return"custom"===t.name});"custom"===t.name?n||this.priorities.push(t):n&&this.priorities.splice(this.priorities.indexOf(n),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(function(t){e.osdRecvSpeedForm.controls[t[0]].setValue(t[1])})},t.prototype.setValidators=function(t){var e=this;t.forEach(function(t){var n=na.getTypeValidators(t);n?(n.validators.push(Te.A.required),"max"in n&&""!==n.max&&(e.priorityAttrs[t.name].maxValue=n.max),"min"in n&&""!==n.min&&(e.priorityAttrs[t.name].minValue=n.min),e.priorityAttrs[t.name].patternHelpText=n.patternHelpText,e.osdRecvSpeedForm.controls[t.name].setValidators(n.validators)):e.osdRecvSpeedForm.controls[t.name].setValidators(Te.A.required)})},t.prototype.onCustomizePriorityChange=function(){var t=this,e={};if(Object.keys(this.priorityAttrs).forEach(function(n){e[n]=t.osdRecvSpeedForm.getValue(n)}),this.osdRecvSpeedForm.getValue("customizePriority")){var n={name:"custom",text:this.i18n("Custom"),values:e};this.setPriority(n)}else this.detectPriority(e,function(e){t.setPriority(e)})},t.prototype.onPriorityChange=function(t){var e=pt.find(this.priorities,function(e){return e.name===t})||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)},t.prototype.submitAction=function(){var t=this,e={};Object.keys(this.priorityAttrs).forEach(function(n){e[n]={section:"osd",value:t.osdRecvSpeedForm.getValue(n)}}),this.configService.bulkCreate({options:e}).subscribe(function(){t.notificationService.show($n.a.success,t.i18n('Updated OSD recovery speed priority "{{value}}"',{value:t.osdRecvSpeedForm.getValue("priority")})),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),sa=n("2EZI"),ua=function(){function t(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}return Object.defineProperty(t.prototype,"weight",{get:function(){return this.reweightForm.get("weight")},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[Te.A.required,Te.A.max(1),Te.A.min(0)])})},t.prototype.reweight=function(){var t=this;this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(function(){return t.bsModalRef.hide()})},t}(),ca=function(){function t(t,e,n,a){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.selected=[]}return t.prototype.ngOnInit=function(){this.scrubForm=new Te.k({})},t.prototype.scrub=function(){var t=this,e=this.selected[0].id;this.osdService.scrub(e,this.deep).subscribe(function(){t.notificationService.show($n.a.success,t.i18n("{{operation}} was initialized in the following OSD: {{id}}",{operation:t.deep?"Deep scrub":"Scrub",id:e})),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),la=function(){function t(t,e,n,a,r,i){var o=this;this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.actionLabels=i,this.osds=[],this.selection=new Ye.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.actionLabels.SCRUB,permission:"update",icon:"fa-stethoscope",click:function(){return o.scrubAction(!1)},disable:function(){return!o.hasOsdSelected}},{name:this.actionLabels.DEEP_SCRUB,permission:"update",icon:"fa-cog",click:function(){return o.scrubAction(!0)},disable:function(){return!o.hasOsdSelected}},{name:this.actionLabels.REWEIGHT,permission:"update",click:function(){return o.reweight()},disable:function(){return!o.hasOsdSelected},icon:"fa-balance-scale"},{name:this.actionLabels.MARK_OUT,permission:"update",click:function(){return o.showConfirmationModal(o.i18n("out"),o.osdService.markOut)},disable:function(){return o.isNotSelectedOrInState("out")},icon:"fa-arrow-left"},{name:this.actionLabels.MARK_IN,permission:"update",click:function(){return o.showConfirmationModal(o.i18n("in"),o.osdService.markIn)},disable:function(){return o.isNotSelectedOrInState("in")},icon:"fa-arrow-right"},{name:this.actionLabels.MARK_DOWN,permission:"update",click:function(){return o.showConfirmationModal(o.i18n("down"),o.osdService.markDown)},disable:function(){return o.isNotSelectedOrInState("down")},icon:"fa-arrow-down"},{name:this.actionLabels.MARK_LOST,permission:"delete",click:function(){return o.showCriticalConfirmationModal(o.i18n("Mark"),o.i18n("OSD lost"),o.i18n("marked lost"),o.osdService.markLost)},disable:function(){return o.isNotSelectedOrInState("up")},icon:"fa-unlink"},{name:this.actionLabels.PURGE,permission:"delete",click:function(){return o.showCriticalConfirmationModal(o.i18n("Purge"),o.i18n("OSD"),o.i18n("purged"),o.osdService.purge)},disable:function(){return o.isNotSelectedOrInState("up")},icon:"fa-eraser"},{name:this.actionLabels.DESTROY,permission:"delete",click:function(){return o.showCriticalConfirmationModal(o.i18n("destroy"),o.i18n("OSD"),o.i18n("destroyed"),o.osdService.destroy)},disable:function(){return o.isNotSelectedOrInState("up")},icon:"fa-remove"}],this.advancedTableActions=[{name:this.i18n("Cluster-wide Flags"),icon:"fa-flag",click:function(){return o.configureFlagsAction()},permission:this.permissions.osd.read},{name:this.i18n("Cluster-wide Recovery Priority"),icon:"fa-cog",click:function(){return o.configureQosParamsAction()},permission:this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:"fa-stethoscope",click:function(){return o.configurePgScrubAction()},permission:this.permissions.configOpt.read}]}return t.collectStates=function(t){return[t.in?"in":"out",t.up?"up":"down"]},t.prototype.ngOnInit=function(){this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),cellTransformation:sn.a.bold},{prop:"collectedStates",name:this.i18n("Status"),cellTemplate:this.statusColor},{prop:"stats.numpg",name:this.i18n("PGs")},{prop:"stats.stat_bytes",name:this.i18n("Size"),pipe:this.dimlessBinaryPipe},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:sn.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Writes bytes"),cellTransformation:sn.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:sn.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:sn.a.perSecond}],this.removeActionsWithNoPermissions()},Object.defineProperty(t.prototype,"hasOsdSelected",{get:function(){if(this.selection.hasSelection){var t=this.selection.first().id;return!!this.osds.filter(function(e){return e.id===t}).pop()}return!1},enumerable:!0,configurable:!0}),t.prototype.updateSelection=function(t){this.selection=t},t.prototype.isNotSelectedOrInState=function(t){if(!this.hasOsdSelected)return!0;var e=this.selection.first().id,n=this.osds.filter(function(t){return t.id===e}).pop();if(!n)return!0;switch(t){case"in":return 1===n.in;case"out":return 1!==n.in;case"down":return 1!==n.up;case"up":return 1===n.up}},t.prototype.getOsdList=function(){var e=this;this.osdService.getList().subscribe(function(n){e.osds=n.map(function(e){return e.collectedStates=t.collectStates(e),e.stats_history.out_bytes=e.stats_history.op_out_bytes.map(function(t){return t[1]}),e.stats_history.in_bytes=e.stats_history.op_in_bytes.map(function(t){return t[1]}),e.stats.usage=e.stats.stat_bytes_used/e.stats.stat_bytes,e.cdIsBinary=!0,e})})},t.prototype.scrubAction=function(t){this.hasOsdSelected&&(this.bsModalRef=this.modalService.show(ca,{initialState:{selected:this.tableComponent.selection.selected,deep:t}}))},t.prototype.configureFlagsAction=function(){this.bsModalRef=this.modalService.show(Xn,{})},t.prototype.showConfirmationModal=function(t,e){var n=this;this.bsModalRef=this.modalService.show(Un.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:function(){e.call(n.osdService,n.selection.first().id).subscribe(function(){return n.bsModalRef.hide()})}}})},t.prototype.reweight=function(){var t=this,e=this.osds.filter(function(e){return e.id===t.selection.first().id}).pop();this.modalService.show(ua,{initialState:{currentWeight:e.weight,osdId:e.id}})},t.prototype.showCriticalConfirmationModal=function(t,e,n,a){var r=this;this.osdService.safeToDestroy(this.selection.first().id).subscribe(function(i){var o=r.modalService.show(Wn.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:r.criticalConfirmationTpl,bodyContext:{result:i,actionDescription:n},submitAction:function(){a.call(r.osdService,r.selection.first().id).subscribe(function(){return o.hide()})}}})})},t.prototype.configureQosParamsAction=function(){this.bsModalRef=this.modalService.show(oa,{})},t.prototype.configurePgScrubAction=function(){this.bsModalRef=this.modalService.show(ia,{class:"modal-lg"})},t.prototype.removeActionsWithNoPermissions=function(){this.advancedTableActions=this.permissions?this.advancedTableActions.filter(function(t){return t.permission}):[]},t}(),da=n("DQlY"),pa=o["\u0275crt"]({encapsulation:0,styles:[[".caret.caret-black[_ngcontent-%COMP%]{color:#000}"]],data:{}});function fa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"button",[["class","btn btn-sm btn-default dropdown-toggle dropdown-toggle-split"],["dropdownToggle",""],["type","button"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,1).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,1).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,1).onEsc()&&a),a},null,null)),o["\u0275did"](1,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](2,0,null,null,0,"span",[["class","caret caret-black"]],null,null,null,null,null))],null,function(t,e){t(e,0,0,!0,o["\u0275nov"](e,1).isDisabled,o["\u0275nov"](e,1).isOpen)})}function ha(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.context.$implicit.click()&&a),a},null,null)),(t()(),o["\u0275eld"](3,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](5,null,["",""]))],null,function(t,e){t(e,3,0,o["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.$implicit.icon,"")),t(e,5,0,e.context.$implicit.name)})}function ga(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,ha)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.SlicePipe,[])],function(t,e){var n=e.component;t(e,2,0,o["\u0275unv"](e,2,0,o["\u0275nov"](e,3).transform(n.advancedTableActions,1)))},null)}function ma(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,10,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),(t()(),o["\u0275eld"](3,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label tc_configureCluster"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.advancedTableActions[0].click()&&a),a},null,null)),(t()(),o["\u0275eld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](6,null,["",""])),(t()(),o["\u0275and"](16777216,null,null,1,null,fa)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ga)),o["\u0275did"](10,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.advancedTableActions.length>1)},function(t,e){var n=e.component;t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,4,0,o["\u0275inlineInterpolate"](1,"fa fa-fw ",n.advancedTableActions[0].icon,"")),t(e,6,0,n.advancedTableActions[0].name)})}function ba(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0"]))],null,null)}function ya(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),o["\u0275did"](2,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pad"](3,2),o["\u0275pad"](4,2),o["\u0275pod"](5,{"label-success":0,"label-danger":1}),(t()(),o["\u0275ted"](6,null,["",""])),(t()(),o["\u0275and"](16777216,null,null,1,null,ba)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.context.$implicit),t(e,4,0,"down","out").includes(e.context.$implicit));t(e,2,0,"label",n),t(e,8,0,!e.context.last)},function(t,e){t(e,6,0,e.context.$implicit)})}function va(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,ya)),o["\u0275did"](1,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function xa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,gn.b,gn.a)),o["\u0275did"](1,573440,null,0,mn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)},null)}function _a(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](1,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","lo02I1Aiz"]],null,null,null,Le.b,Le.a)),o["\u0275did"](3,638976,null,0,Pe.a,[Me.a,qe.DomSanitizer,je.a,Fe.a,_t.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?","three","lo02I1Aiz")},function(t,e){t(e,0,0,o["\u0275nov"](e,1).id,o["\u0275nov"](e,1).active,o["\u0275nov"](e,1).addClass)})}function Ta(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["OSD ",""])),(t()(),o["\u0275ted"](-1,null,[" will be marked "])),(t()(),o["\u0275eld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](5,null,["",""])),(t()(),o["\u0275ted"](-1,null,[" if you proceed."]))],null,function(t,e){t(e,2,0,e.component.selection.first().id),t(e,5,0,e.context.markActionDescription)})}function wa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"div",[["class","danger"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"cd-warning-panel",[],null,null,null,bn.b,bn.a)),o["\u0275did"](2,49152,null,0,yn.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["The OSD is not safe to destroy!"]))],null,null)}function Sa(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,wa)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](2,0,null,null,6,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](4,null,["OSD ",""])),(t()(),o["\u0275ted"](-1,null,[" will be "])),(t()(),o["\u0275eld"](6,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,["",""])),(t()(),o["\u0275ted"](-1,null,[" if you proceed."]))],function(t,e){t(e,1,0,!e.context.result.is_safe_to_destroy)},function(t,e){t(e,4,0,e.component.selection.first().id),t(e,7,0,e.context.actionDescription)})}function Oa(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{statusColor:0}),o["\u0275qud"](402653184,2,{osdUsageTpl:0}),o["\u0275qud"](402653184,3,{markOsdConfirmationTpl:0}),o["\u0275qud"](402653184,4,{criticalConfirmationTpl:0}),o["\u0275qud"](402653184,5,{tableComponent:0}),o["\u0275qud"](402653184,6,{reweightBodyTpl:0}),o["\u0275qud"](402653184,7,{safeToDestroyBodyTpl:0}),(t()(),o["\u0275eld"](7,0,null,null,16,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](8,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](9,0,null,0,12,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](10,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](11,0,null,null,8,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](12,2867200,[[5,4]],0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"],updateSelectionOnRefresh:[3,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](13,0,null,0,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,vn.b,vn.a)),o["\u0275did"](15,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ma)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,2,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,Hn,Ln)),o["\u0275did"](19,573440,null,0,En,[An,d.a],{selection:[0,"selection"]},null),(t()(),o["\u0275and"](0,[[1,2],["statusColor",2]],null,0,null,va)),(t()(),o["\u0275and"](0,[[2,2],["osdUsageTpl",2]],null,0,null,xa)),(t()(),o["\u0275and"](16777216,null,0,1,null,_a)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,[[3,2],["markOsdConfirmationTpl",2]],null,0,null,Ta)),(t()(),o["\u0275and"](0,[[4,2],["criticalConfirmationTpl",2]],null,0,null,Sa))],function(t,e){var n=e.component;t(e,10,0,"OSDs List"),t(e,12,0,n.osds,n.columns,"single","never"),t(e,15,0,n.permissions.osd,n.selection,n.tableActions),t(e,17,0,n.advancedTableActions.length>0),t(e,19,0,n.selection),t(e,23,0,n.permissions.grafana.read)},function(t,e){t(e,7,0,o["\u0275nov"](e,8).clazz),t(e,9,0,o["\u0275nov"](e,10).id,o["\u0275nov"](e,10).active,o["\u0275nov"](e,10).addClass)})}function ka(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-list",[],null,null,null,Oa,pa)),o["\u0275did"](1,114688,null,0,la,[d.a,An,ht.a,da.b,_t.a,Kn.b],null,null)],function(t,e){t(e,1,0)},null)}var Ca=o["\u0275ccf"]("cd-osd-list",la,ka,{},{},[]),Ia=function(){function t(){}return t.prototype.transform=function(t,e){return t.filter(function(t){var n=!0;return e.forEach(function(e){if(e.value)return(n=n&&e.applyFilter(t,e.value))?void 0:n}),n})},t}(),Ra=n("iExv"),Na=function(){function t(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.")}}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.selectedItem.services=pt.split(this.selectedItem.services,","))},t}(),Da=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Aa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ",": ","",""])),(t()(),o["\u0275eld"](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 Ea(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,2,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(t()(),o["\u0275ted"](3,null,["",""])),o["\u0275ppd"](4,1)],null,function(t,e){t(e,1,0,o["\u0275inlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=o["\u0275unv"](e,3,0,t(e,4,0,o["\u0275nov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)})}function La(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function Pa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Name"])),(t()(),o["\u0275eld"](9,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](10,null,["",""])),(t()(),o["\u0275eld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Description"])),(t()(),o["\u0275eld"](14,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](15,null,["",""])),(t()(),o["\u0275eld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Long description"])),(t()(),o["\u0275eld"](19,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](20,null,["",""])),(t()(),o["\u0275eld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](22,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Current values"])),(t()(),o["\u0275eld"](24,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Aa)),o["\u0275did"](26,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](28,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Default"])),(t()(),o["\u0275eld"](30,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](31,null,["",""])),(t()(),o["\u0275eld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](33,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Daemon default"])),(t()(),o["\u0275eld"](35,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](36,null,["",""])),(t()(),o["\u0275eld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](38,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Type"])),(t()(),o["\u0275eld"](40,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](41,null,["",""])),(t()(),o["\u0275eld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](43,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Min"])),(t()(),o["\u0275eld"](45,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](46,null,["",""])),(t()(),o["\u0275eld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](48,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Max"])),(t()(),o["\u0275eld"](50,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](51,null,["",""])),(t()(),o["\u0275eld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](53,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Flags"])),(t()(),o["\u0275eld"](55,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ea)),o["\u0275did"](57,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](59,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Services"])),(t()(),o["\u0275eld"](61,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,La)),o["\u0275did"](63,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](65,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Source"])),(t()(),o["\u0275eld"](67,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](68,null,["",""])),(t()(),o["\u0275eld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](70,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Level"])),(t()(),o["\u0275eld"](72,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](73,null,["",""])),(t()(),o["\u0275eld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](75,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),o["\u0275eld"](77,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](78,null,["",""])),o["\u0275ppd"](79,1),(t()(),o["\u0275eld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](81,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Tags"])),(t()(),o["\u0275eld"](83,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](84,null,["",""])),(t()(),o["\u0275eld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](86,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Enum values"])),(t()(),o["\u0275eld"](88,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](89,null,["",""])),(t()(),o["\u0275eld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](91,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["See also"])),(t()(),o["\u0275eld"](93,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](94,null,["",""]))],function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selectedItem.value),t(e,57,0,n.selectedItem.flags),t(e,63,0,n.selectedItem.services)},function(t,e){var n=e.component;t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,10,0,n.selectedItem.name),t(e,15,0,n.selectedItem.desc),t(e,20,0,n.selectedItem.long_desc),t(e,31,0,n.selectedItem.default),t(e,36,0,n.selectedItem.daemon_default),t(e,41,0,n.selectedItem.type),t(e,46,0,n.selectedItem.min),t(e,51,0,n.selectedItem.max),t(e,68,0,n.selectedItem.source),t(e,73,0,n.selectedItem.level);var a=o["\u0275unv"](e,78,0,t(e,79,0,o["\u0275nov"](e.parent,1),n.selectedItem.can_update_at_runtime));t(e,78,0,a),t(e,84,0,n.selectedItem.tags),t(e,89,0,n.selectedItem.enum_values),t(e,94,0,n.selectedItem.see_also)})}function Ma(t){return o["\u0275vid"](0,[o["\u0275pid"](0,i.UpperCasePipe,[]),o["\u0275pid"](0,Ra.a,[_t.a]),(t()(),o["\u0275and"](16777216,null,null,1,null,Pa)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,null==n.selection?null:n.selection.hasSingleSelection)},null)}var qa=function(){function t(t,e,n,a){var r=this;this.authStorageService=t,this.configurationService=e,this.i18n=n,this.actionLabels=a,this.data=[],this.selection=new Ye.a,this.filters=[{label:this.i18n("Level"),prop:"level",initValue:"basic",value:"basic",options:["basic","advanced","dev"],applyFilter:function(t,e){var n=function(t){return t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev",t}({});return n[t.level]<=n[e]}},{label:this.i18n("Service"),prop:"services",initValue:"any",value:"any",options:["any","mon","mgr","osd","mds","common","mds_client","rgw"],applyFilter:function(t,e){return"any"===e||t.services.includes(e)}},{label:this.i18n("Source"),prop:"source",initValue:"any",value:"any",options:["any","mon"],applyFilter:function(t,e){return"any"===e||!!t.hasOwnProperty("source")&&t.source.includes(e)}}],this.permission=this.authStorageService.getPermissions().configOpt,this.tableActions=[{permission:"update",icon:"fa-pencil",routerLink:function(){return"/configuration/edit/"+(r.selection.first()&&""+encodeURIComponent(r.selection.first().name))},name:this.actionLabels.EDIT,disable:function(){return!r.isEditable(r.selection)}}]}return t.prototype.ngOnInit=function(){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:sn.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.getConfigurationList=function(t){var e=this;this.configurationService.getConfigData().subscribe(function(t){e.data=t},function(){t.error()})},t.prototype.updateFilter=function(){this.data=this.data.slice()},t.prototype.resetFilter=function(){this.filters.forEach(function(t){t.value=t.initValue}),this.data=this.data.slice()},t.prototype.isEditable=function(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime},t}(),ja=o["\u0275crt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function Fa(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],null,null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],null,null),(t()(),o["\u0275ted"](3,null,["",""]))],null,function(t,e){t(e,3,0,e.context.$implicit)})}function za(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[["class","form-group filter"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",": "])),(t()(),o["\u0275eld"](3,0,null,null,7,"select",[["class","form-control input-sm"]],[[2,"ng-untouched",null],[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 a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,4).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,4).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(t.context.$implicit.value=n)&&a),"ngModelChange"===e&&(a=!1!==r.updateFilter()&&a),a},null,null)),o["\u0275did"](4,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](6,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](8,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Fa)),o["\u0275did"](10,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,6,0,e.context.$implicit.value),t(e,10,0,e.context.$implicit.options)},function(t,e){t(e,2,0,e.context.$implicit.label),t(e,3,0,o["\u0275nov"](e,8).ngClassUntouched,o["\u0275nov"](e,8).ngClassTouched,o["\u0275nov"](e,8).ngClassPristine,o["\u0275nov"](e,8).ngClassDirty,o["\u0275nov"](e,8).ngClassValid,o["\u0275nov"](e,8).ngClassInvalid,o["\u0275nov"](e,8).ngClassPending)})}function Ga(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ",": ","",""])),(t()(),o["\u0275eld"](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 Ya(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ga)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.parent.context.value)},null)}function Ha(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Ya)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function Va(t){return o["\u0275vid"](0,[o["\u0275pid"](0,Ia,[]),o["\u0275qud"](402653184,1,{confValTpl:0}),o["\u0275qud"](402653184,2,{confFlagTpl:0}),(t()(),o["\u0275eld"](3,0,null,null,12,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](4,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),o["\u0275ppd"](5,2),(t()(),o["\u0275eld"](6,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,vn.b,vn.a)),o["\u0275did"](7,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275eld"](8,0,null,1,5,"div",[["class","table-filters"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,za)),o["\u0275did"](10,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](11,0,null,null,2,"a",[["class","fa-stack"],["title","Reset filters"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetFilter()&&a),a},null,null)),(t()(),o["\u0275eld"](12,0,null,null,0,"i",[["class","fa fa-filter fa-stack-2x"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,0,"i",[["class","fa fa-times fa-stack-1x"],["style","margin-left: 8px; margin-top: 5px;"]],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,2,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,Ma,Da)),o["\u0275did"](15,573440,null,0,Na,[_t.a],{selection:[0,"selection"]},null),(t()(),o["\u0275and"](0,[[1,2],["confValTpl",2]],null,0,null,Ha))],function(t,e){var n=e.component,a=o["\u0275unv"](e,4,0,t(e,5,0,o["\u0275nov"](e,0),n.data,n.filters));t(e,4,0,a,n.columns,"single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,10,0,n.filters),t(e,15,0,n.selection)},null)}function Ba(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-configuration",[],null,null,null,Va,ja)),o["\u0275did"](1,114688,null,0,qa,[d.a,Qn.a,_t.a,Kn.b],null,null)],function(t,e){t(e,1,0)},null)}var Ua=o["\u0275ccf"]("cd-configuration",qa,Ba,{},{},[]),Wa=n("gp3X"),Ka=n("sb0X"),$a=n("KVJa"),Za=n("Z21x"),Xa=function(){return function(){this.value=[]}}(),Ja=function(){function t(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()}return t.prototype.createForm=function(){var t={name:new Te.i({value:null}),desc:new Te.i({value:null}),long_desc:new Te.i({value:null}),values:new Te.k({}),default:new Te.i({value:null}),daemon_default:new Te.i({value:null}),services:new Te.i([])};this.availSections.forEach(function(e){t.values.addControl(e,new Te.i(null))}),this.configForm=new ta.a(t)},t.prototype.ngOnInit=function(){var t=this;this.route.params.subscribe(function(e){t.configService.get(e.name).subscribe(function(e){t.setResponse(e)})})},t.prototype.getValidators=function(t){var e=na.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},t.prototype.getStep=function(t,e){return na.getTypeStep(t,e)},t.prototype.setResponse=function(t){var e=this;this.response=t;var n=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(function(t){var n;n="true"===t.value||"false"!==t.value&&t.value,e.configForm.get("values").get(t.section).setValue(n)}),this.availSections.forEach(function(t){e.configForm.get("values").get(t).setValidators(n)});var a=na.getType(t.type);this.type=a.name,this.inputType=a.inputType,this.humanReadableType=a.humanReadable},t.prototype.createRequest=function(){var t=this,e=[];if(this.availSections.forEach(function(n){var a=t.configForm.getValue(n);a&&e.push({section:n,value:a})}),!pt.isEqual(this.response.value,e)){var n=new Xa;return n.name=this.configForm.getValue("name"),n.value=e,n}return null},t.prototype.submit=function(){var t=this,e=this.createRequest();e&&this.configService.create(e).subscribe(function(){t.notificationService.show($n.a.success,t.i18n("Updated config option {{name}}",{name:e.name})),t.router.navigate(["/configuration"])},function(){t.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])},t}(),Qa=o["\u0275crt"]({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 tr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Description"])),(t()(),o["\u0275eld"](3,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,5)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,5).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](7,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](9,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275ted"](-1,null,["            "]))],function(t,e){t(e,7,0,"desc")},function(t,e){t(e,4,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending)})}function er(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Long description"])),(t()(),o["\u0275eld"](3,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,5)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,5).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](7,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](9,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275ted"](-1,null,["            "]))],function(t,e){t(e,7,0,"long_desc")},function(t,e){t(e,4,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending)})}function nr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Default"])),(t()(),o["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,5)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,5).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](7,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](9,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){t(e,7,0,"default")},function(t,e){t(e,4,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending)})}function ar(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Daemon default"])),(t()(),o["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,5)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,5).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,5)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](7,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](9,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){t(e,7,0,"daemon_default")},function(t,e){t(e,4,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending)})}function rr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary"]],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function ir(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Services"])),(t()(),o["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,rr)),o["\u0275did"](5,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.configForm.getValue("services"))},null)}function or(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,4).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,4).onTouched()&&a),a},null,null)),o["\u0275did"](4,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](6,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](8,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](9,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](10,null,[""," "]))],function(t,e){t(e,6,0,e.parent.context.$implicit)},function(t,e){t(e,3,0,e.parent.context.$implicit,o["\u0275nov"](e,8).ngClassUntouched,o["\u0275nov"](e,8).ngClassTouched,o["\u0275nov"](e,8).ngClassPristine,o["\u0275nov"](e,8).ngClassDirty,o["\u0275nov"](e,8).ngClassValid,o["\u0275nov"](e,8).ngClassInvalid,o["\u0275nov"](e,8).ngClassPending),t(e,9,0,e.parent.context.$implicit),t(e,10,0,e.parent.context.$implicit)})}function sr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.patternHelpText)})}function ur(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.patternHelpText)})}function cr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 lr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 dr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](4,null,[""," "])),(t()(),o["\u0275eld"](5,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,7)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,7).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,7)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,7)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](7,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](9,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](11,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,sr)),o["\u0275did"](13,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ur)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,cr)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,lr)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.configForm.showError(e.parent.context.$implicit,o["\u0275nov"](e.parent.parent,3)));t(e,1,0,"form-group",a),t(e,9,0,e.parent.context.$implicit),t(e,13,0,n.configForm.showError(e.parent.context.$implicit,o["\u0275nov"](e.parent.parent,3),"pattern")),t(e,15,0,n.configForm.showError(e.parent.context.$implicit,o["\u0275nov"](e.parent.parent,3),"invalidUuid")),t(e,17,0,n.configForm.showError(e.parent.context.$implicit,o["\u0275nov"](e.parent.parent,3),"max")),t(e,19,0,n.configForm.showError(e.parent.context.$implicit,o["\u0275nov"](e.parent.parent,3),"min"))},function(t,e){var n=e.component;t(e,3,0,e.parent.context.$implicit),t(e,4,0,e.parent.context.$implicit),t(e,6,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),o["\u0275nov"](e,11).ngClassUntouched,o["\u0275nov"](e,11).ngClassTouched,o["\u0275nov"](e,11).ngClassPristine,o["\u0275nov"](e,11).ngClassDirty,o["\u0275nov"](e,11).ngClassValid,o["\u0275nov"](e,11).ngClassInvalid,o["\u0275nov"](e,11).ngClassPending])})}function pr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,or)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,dr)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,2,0,"bool"===n.type),t(e,4,0,"bool"!==n.type)},null)}function fr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,48,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,47,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,3).onReset()&&a),a},null,null)),o["\u0275did"](2,16384,null,0,Te.D,[],null,null),o["\u0275did"](3,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](5,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](6,0,null,null,42,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Edit"])),(t()(),o["\u0275ted"](11,null,[" "," "])),(t()(),o["\u0275eld"](12,0,null,null,28,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Name"])),(t()(),o["\u0275eld"](16,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,18)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,18).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,18)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,18)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](18,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](20,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](22,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,tr)),o["\u0275did"](24,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,er)),o["\u0275did"](26,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,nr)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ar)),o["\u0275did"](30,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ir)),o["\u0275did"](32,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](33,0,null,null,7,"div",[["class","col-sm-12"],["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)),o["\u0275did"](34,212992,null,0,Te.m,[[3,Te.d],[8,null],[8,null]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.m]),o["\u0275did"](36,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](37,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Values"])),(t()(),o["\u0275and"](16777216,null,null,1,null,pr)),o["\u0275did"](40,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](41,0,null,null,7,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](42,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275eld"](43,0,null,null,3,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a},Wa.b,Wa.a)),o["\u0275did"](44,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),o["\u0275eld"](45,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Save"])),(t()(),o["\u0275eld"](47,0,null,null,1,"cd-back-button",[],null,null,null,$a.b,$a.a)),o["\u0275did"](48,49152,null,0,Za.a,[i.Location,Kn.b],null,null)],function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,20,0,"name"),t(e,24,0,n.configForm.getValue("desc")),t(e,26,0,n.configForm.getValue("long_desc")),t(e,28,0,""!==n.configForm.getValue("default")),t(e,30,0,""!==n.configForm.getValue("daemon_default")),t(e,32,0,n.configForm.getValue("services").length>0),t(e,34,0,"values"),t(e,40,0,n.availSections),t(e,44,0,o["\u0275nov"](e,3),"button")},function(t,e){var n=e.component;t(e,1,0,o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,17,0,o["\u0275nov"](e,22).ngClassUntouched,o["\u0275nov"](e,22).ngClassTouched,o["\u0275nov"](e,22).ngClassPristine,o["\u0275nov"](e,22).ngClassDirty,o["\u0275nov"](e,22).ngClassValid,o["\u0275nov"](e,22).ngClassInvalid,o["\u0275nov"](e,22).ngClassPending),t(e,33,0,o["\u0275nov"](e,36).ngClassUntouched,o["\u0275nov"](e,36).ngClassTouched,o["\u0275nov"](e,36).ngClassPristine,o["\u0275nov"](e,36).ngClassDirty,o["\u0275nov"](e,36).ngClassValid,o["\u0275nov"](e,36).ngClassInvalid,o["\u0275nov"](e,36).ngClassPending)})}function hr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,fr,Qa)),o["\u0275did"](1,114688,null,0,Ja,[tt.a,tt.l,Qn.a,Zn.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var gr=o["\u0275ccf"]("cd-configuration-form",Ja,hr,{},{},[]),mr=n("nuQ0"),br=n("Tff5"),yr=n("urB8"),vr=n("xtUU"),xr=function(){function t(t){this.healthService=t,this.metadataKeyMap={}}return t.prototype.ngOnInit=function(){var t=this;this.healthService.getFullHealth().subscribe(function(e){t.tree=t._abstractTreeData(e)})},t.prototype._abstractTreeData=function(t){var e=this,n=t.osd_map.tree.nodes||[],a={};if(0===n.length)return{value:"No nodes!",settings:{static:!0}};var r=[];return n.reverse().forEach(function(t){"root"===t.type&&r.push(t.id),a[t.id]=e.generateTreeLeaf(t,a)}),{value:"CRUSH map",children:r.map(function(t){return a[t]})}},t.prototype.generateTreeLeaf=function(t,e){var n=t.id;this.metadataKeyMap[n]=t;var a={static:!0},r=t.name+" ("+t.type+")",i=t.status,o=[];return t.children?(t.children.sort().forEach(function(t){o.push(e[t])}),{value:r,status:i,settings:a,id:n,children:o}):{value:r,status:i,settings:a,id:n}},t.prototype.onNodeSelected=function(t){var e=this.metadataKeyMap[t.node.id],n=e.name,a=e.type,r=h.__rest(e,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"},t}(),_r=o["\u0275crt"]({encapsulation:0,styles:[["tree-internal .tree li{cursor:pointer}  tree-internal .tree .node-value{color:#2b99a8;border-radius:5px}  tree-internal .tree .node-selected{background-color:#d9edf7;color:#212121}  tree-internal .tree .node-value:hover{color:#212121}  tree-internal .tree .node-value:after{height:0}"]],data:{}});function Tr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pad"](2,2),o["\u0275pad"](3,2),o["\u0275pod"](4,{"label-success":0,"label-danger":1}),(t()(),o["\u0275ted"](5,null,["",""])),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0"])),(t()(),o["\u0275eld"](8,0,null,null,0,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null))],function(t,e){var n=t(e,4,0,t(e,2,0,"in","up").includes(e.context.$implicit.status),t(e,3,0,"down","out").includes(e.context.$implicit.status));t(e,1,0,"label",n)},function(t,e){t(e,5,0,e.context.$implicit.status),t(e,8,0,e.context.$implicit.value)})}function wr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",""])),(t()(),o["\u0275eld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](4,638976,null,0,Tn.a,[wn.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 Sr(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,16,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,15,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,14,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,3,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,2,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CRUSH map viewer"])),(t()(),o["\u0275eld"](7,0,null,null,9,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,6,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,5,"tree",[],null,[[null,"nodeSelected"]],function(t,e,n){var a=!0;return"nodeSelected"===e&&(a=!1!==t.component.onNodeSelected(n)&&a),a},mr.b,mr.a)),o["\u0275prd"](512,null,br.TreeService,br.TreeService,[yr.NodeDraggableService]),o["\u0275did"](11,770048,null,1,vr.TreeComponent,[br.TreeService],{treeModel:[0,"treeModel"],settings:[1,"settings"]},{nodeSelected:"nodeSelected"}),o["\u0275qud"](335544320,1,{template:0}),o["\u0275pod"](13,{rootIsVisible:0}),(t()(),o["\u0275and"](0,[[1,2]],null,0,null,Tr)),(t()(),o["\u0275and"](16777216,null,null,1,null,wr)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=n.tree,r=t(e,13,0,!1);t(e,11,0,a,r),t(e,16,0,n.metadata)},null)}function Or(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,Sr,_r)),o["\u0275did"](1,114688,null,0,xr,[Nt],null,null)],function(t,e){t(e,1,0)},null)}var kr=o["\u0275ccf"]("cd-crushmap",xr,Or,{},{},[]),Cr=n("ARl4"),Ir=n("MwfX"),Rr=function(){function t(){}return t.prototype.writeValue=function(e){return{type:t.WRITE_VALUE,payload:e}},t.prototype.changeHours=function(e){return{type:t.CHANGE_HOURS,payload:e}},t.prototype.changeMinutes=function(e){return{type:t.CHANGE_MINUTES,payload:e}},t.prototype.changeSeconds=function(e){return{type:t.CHANGE_SECONDS,payload:e}},t.prototype.setTime=function(e){return{type:t.SET_TIME_UNIT,payload:e}},t.prototype.updateControls=function(e){return{type:t.UPDATE_CONTROLS,payload:e}},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}(),Nr=10,Dr=24,Ar=12,Er=60,Lr=60;function Pr(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||Pr(new Date(t)))}function Mr(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function qr(t){return"number"==typeof t?t:parseInt(t,Nr)}function jr(t,e){void 0===e&&(e=!1);var n=qr(t);return isNaN(n)||n<0||n>(e?Ar:Dr)?NaN:n}function Fr(t){var e=qr(t);return isNaN(e)||e<0||e>Er?NaN:e}function zr(t){var e=qr(t);return isNaN(e)||e<0||e>Lr?NaN:e}function Gr(t){return"string"==typeof t?new Date(t):t}function Yr(t,e){if(!t)return Yr(Hr(new Date,0,0,0),e);var n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n=(n+qr(e.hour))%Dr)<0&&(n+=Dr),e.minute&&(a+=qr(e.minute)),e.seconds&&(r+=qr(e.seconds)),Hr(t,n,a,r)}function Hr(t,e,n,a){return new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds())}function Vr(t){var e=t.toString();return e.length>1?e:"0"+e}function Br(t,e){return!isNaN(jr(t,e))}function Ur(t){return!isNaN(Fr(t))}function Wr(t){return!isNaN(zr(t))}function Kr(t,e,n,a){return void 0===e&&(e="0"),void 0===n&&(n="0"),Br(t,a)&&Ur(e)&&Wr(n)}function $r(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 Zr(t){return{hourStep:t.hourStep,minuteStep:t.minuteStep,secondsStep:t.secondsStep,readonlyInput:t.readonlyInput,disabled:t.disabled,mousewheel:t.mousewheel,arrowkeys:t.arrowkeys,showSpinners:t.showSpinners,showMeridian:t.showMeridian,showSeconds:t.showSeconds,meridians:t.meridians,min:t.min,max:t.max}}var Xr=function(){return function(){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}}(),Jr={value:null,config:new Xr,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Qr(t,e){switch(void 0===t&&(t=Jr),e.type){case Rr.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case Rr.CHANGE_HOURS:if(!$r(t.config,e.payload)||(d=t.controls,!(l=e.payload).step||l.step>0&&!d.canIncrementHours||l.step<0&&!d.canDecrementHours))return t;var n=Yr(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||Mr(t.config,n)?Object.assign({},t,{value:n}):t;case Rr.CHANGE_MINUTES:return $r(t.config,e.payload)&&function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls)?(n=Yr(t.value,{minute:e.payload.step}),!t.config.max&&!t.config.min||Mr(t.config,n)?Object.assign({},t,{value:n}):t):t;case Rr.CHANGE_SECONDS:return $r(t.config,e.payload)&&function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls)?(n=Yr(t.value,{seconds:e.payload.step}),!t.config.max&&!t.config.min||Mr(t.config,n)?Object.assign({},t,{value:n}):t):t;case Rr.SET_TIME_UNIT:return $r(t.config)?(i=t.value,s=jr((o=e.payload).hour),u=Fr(o.minute),c=zr(o.seconds)||0,o.isPM&&(s+=Ar),n=i?isNaN(s)||isNaN(u)?i:Hr(i,s,u,c):isNaN(s)||isNaN(u)?i:Hr(new Date,s,u,c),Object.assign({},t,{value:n})):t;case Rr.UPDATE_CONTROLS:var a=function(t,e){var n=e.min,a=e.max,r=e.hourStep,i=e.minuteStep,o=e.secondsStep,s=e.showSeconds,u={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return u;if(a){var c=Yr(t,{hour:r});if(u.canIncrementHours=a>c,!u.canIncrementHours){var l=Yr(t,{minute:i});u.canIncrementMinutes=s?a>l:a>=l}if(!u.canIncrementMinutes){var d=Yr(t,{seconds:o});u.canIncrementSeconds=a>=d}t.getHours()<12&&(u.canToggleMeridian=Yr(t,{hour:12})<a)}return n&&(c=Yr(t,{hour:-r}),u.canDecrementHours=n<c,u.canDecrementHours||(l=Yr(t,{minute:-i}),u.canDecrementMinutes=s?n<l:n<=l),u.canDecrementMinutes||(d=Yr(t,{seconds:-o}),u.canDecrementSeconds=n<=d),t.getHours()>=12&&(u.canToggleMeridian=Yr(t,{hour:-12})>n)),u}(t.value,e.payload),r={value:t.value,config:e.payload,controls:a};return t.config.showMeridian!==r.config.showMeridian&&t.value&&(r.value=new Date(t.value)),Object.assign({},t,r);default:return t}var i,o,s,u,c,l,d}var ti=function(t){function e(){var e=new At.a({type:"[mini-ngrx] dispatcher init"}),n=new Ir.a(Jr,e,Qr);return t.call(this,e,Qr,n)||this}return Object(h.__extends)(e,t),e}(Ir.b),ei=function(){function t(t,e,n,a){var r=this;this._cd=e,this._store=n,this._timepickerActions=a,this.isValid=new o.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(function(t){return t.value}).subscribe(function(t){r._renderTime(t),r.onChange(t),r._store.dispatch(r._timepickerActions.updateControls(Zr(r)))}),n.select(function(t){return t.controls}).subscribe(function(t){r.isValid.emit(Kr(r.hours,r.minutes,r.seconds,r.isPM())),Object.assign(r,t),e.markForCheck()})}return Object.defineProperty(t.prototype,"isSpinnersVisible",{get:function(){return this.showSpinners&&!this.readonlyInput},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isEditable",{get:function(){return!(this.readonlyInput||this.disabled)},enumerable:!0,configurable:!0}),t.prototype.resetValidation=function(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1},t.prototype.isPM=function(){return this.showMeridian&&this.meridian===this.meridians[1]},t.prototype.prevDef=function(t){t.preventDefault()},t.prototype.wheelSign=function(t){return-1*Math.sign(t.deltaY)},t.prototype.ngOnChanges=function(t){this._store.dispatch(this._timepickerActions.updateControls(Zr(this)))},t.prototype.changeHours=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))},t.prototype.changeMinutes=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))},t.prototype.changeSeconds=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))},t.prototype.updateHours=function(t){if(this.resetValidation(),this.hours=t,!Br(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.updateMinutes=function(t){if(this.resetValidation(),this.minutes=t,!Ur(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.updateSeconds=function(t){if(this.resetValidation(),this.seconds=t,!Wr(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.isValidLimit=function(){return t={hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},e=this.max,n=this.min,a=Yr(new Date,t),!(e&&a>e||n&&a<n);var t,e,n,a},t.prototype._updateTime=function(){if(!Kr(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()}))},t.prototype.toggleMeridian=function(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))},t.prototype.writeValue=function(t){Pr(t)?this._store.dispatch(this._timepickerActions.writeValue(Gr(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this.disabled=t,this._cd.markForCheck()},t.prototype.ngOnDestroy=function(){this.timepickerSub.unsubscribe()},t.prototype._renderTime=function(t){if(!Pr(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);var e=Gr(t),n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],0==(n%=12)&&(n=12)),this.hours=Vr(n),this.minutes=Vr(e.getMinutes()),this.seconds=Vr(e.getUTCSeconds())},t}(),ni=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[Xr,Rr,ti]}},t}(),ai=o["\u0275crt"]({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    }\n  "],data:{}});function ri(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function ii(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](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 oi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0"]))],null,null)}function si(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](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 ui(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function ci(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function li(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0:\xa0"]))],null,null)}function di(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","MM"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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.readonlyInput,n.disabled,n.minutes)})}function pi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0:\xa0"]))],null,null)}function fi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","SS"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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.readonlyInput,n.disabled,n.seconds)})}function hi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function gi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275ted"](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 mi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function bi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](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 yi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0"]))],null,null)}function vi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](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 xi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function _i(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function Ti(t){return o["\u0275vid"](2,[(t()(),o["\u0275eld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ri)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ii)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,oi)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,si)),o["\u0275did"](13,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ui)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ci)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),o["\u0275eld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","HH"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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()(),o["\u0275and"](16777216,null,null,1,null,li)),o["\u0275did"](22,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,di)),o["\u0275did"](24,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,pi)),o["\u0275did"](26,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,fi)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,hi)),o["\u0275did"](30,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,gi)),o["\u0275did"](32,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),o["\u0275eld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275eld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,mi)),o["\u0275did"](38,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,bi)),o["\u0275did"](40,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,yi)),o["\u0275did"](42,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,vi)),o["\u0275did"](44,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,xi)),o["\u0275did"](46,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,_i)),o["\u0275did"](48,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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.readonlyInput,n.disabled,n.hours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)})}var wi=n("E2fk"),Si=function(){function t(t){this.http=t}return t.prototype.getLogs=function(){return this.http.get("api/logs/all")},t.prototype.validateDashboardUrl=function(t){return this.http.get("api/grafana/validation/"+t)},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Oi=function(){function t(t){this.logsService=t,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)}return t.prototype.ngOnInit=function(){var t=this;this.getInfo(),this.interval=window.setInterval(function(){t.getInfo()},5e3)},t.prototype.ngOnDestroy=function(){clearInterval(this.interval)},t.prototype.getInfo=function(){var t=this;this.logsService.getLogs().subscribe(function(e){t.contentData=e,t.filterLogs()})},t.prototype.abstractfilters=function(){var t,e=this.priority,n=this.search.toLowerCase().replace(/,/g,"");if(this.selectedDate){var a=this.selectedDate.getMonth()+1,r=this.selectedDate.getDate();t=this.selectedDate.getFullYear().toString()+"-"+(a<=9?"0"+a:""+a)+"-"+(r<=9?"0"+r:""+r)}else t="";return{priority:e,key:n,yearMonthDay:t,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)}},t.prototype.filterExecutor=function(t,e){return t.filter(function(t){var n,a,r=parseInt(t.stamp.slice(11,13),10),i=parseInt(t.stamp.slice(14,16),10);return n=e.yearMonthDay?e.yearMonthDay:t.stamp,a=60*r+i,t.priority===("All"===e.priority?t.priority:e.priority)&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(n)&&a>=e.sTime&&a<=e.eTime})},t.prototype.filterLogs=function(){var t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)},t.prototype.clearSearchKey=function(){this.search="",this.filterLogs()},t.prototype.clearDate=function(){this.selectedDate=null,this.filterLogs()},t}(),ki=o["\u0275crt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace;color:#000}.well[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:-webkit-box;display:flex}.well[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.well[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.well[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.well[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.well[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.well[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.well[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td .bs-timepicker-field{width:3.5rem;font-size:1rem;padding:4px 6px}  timepicker table tbody tr td .btn{font-size:1rem}.log-filters[_ngcontent-%COMP%]{margin-bottom:5px;padding:0 30px}.log-filters[_ngcontent-%COMP%]   *[_ngcontent-%COMP%]{box-sizing:border-box}.log-filters[_ngcontent-%COMP%]   .filter-box[_ngcontent-%COMP%]{margin:0;padding:0 15px 5px 0;display:-webkit-box;display:flex;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center}.log-filters[_ngcontent-%COMP%]   .filter-box[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{padding-top:5px;padding-right:5px}@media (max-width:991px){.log-filters[_ngcontent-%COMP%]   .time-box[_ngcontent-%COMP%]{margin-top:20px}}@media (min-width:1200px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:28vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:20vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:16vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:14vw}}@media (min-width:1400px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:24vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:18vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:14vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:12vw}}@media (min-width:1600px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:22vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:16vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:12vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:10vw}}@media (min-width:1800px){.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:14vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:11vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:9vw}}"]],data:{}});function Ci(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ii(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"p",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",""])),(t()(),o["\u0275eld"](3,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),o["\u0275ppd"](4,1),(t()(),o["\u0275ted"](5,null,["",""])),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.stamp);var n=o["\u0275inlineInterpolate"](1,"priority ",o["\u0275unv"](e,3,0,t(e,4,0,o["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.priority)),"");t(e,3,0,n),t(e,5,0,e.context.$implicit.priority),t(e,7,0,e.context.$implicit.message)})}function Ri(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ii)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.clog)},null)}function Ni(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["No entries found"]))],null,null)}function Di(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"p",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,["",""])),(t()(),o["\u0275eld"](3,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),o["\u0275ppd"](4,1),(t()(),o["\u0275ted"](5,null,["",""])),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.stamp);var n=o["\u0275inlineInterpolate"](1,"priority ",o["\u0275unv"](e,3,0,t(e,4,0,o["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.priority)),"");t(e,3,0,n),t(e,5,0,e.context.$implicit.priority),t(e,7,0,e.context.$implicit.message)})}function Ai(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Di)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.audit_log)},null)}function Ei(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["No entries found"]))],null,null)}function Li(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,18,"div",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ci)),o["\u0275did"](2,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),o["\u0275eld"](3,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](4,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](5,0,null,0,6,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](6,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](7,0,null,null,4,"div",[["class","well"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ri)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ni)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](12,0,null,0,6,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](13,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](14,0,null,null,4,"div",[["class","well"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ai)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ei)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,2,0,o["\u0275nov"](e.parent,3)),t(e,6,0,"Cluster Logs"),t(e,9,0,n.clog),t(e,11,0,0===n.contentData.clog.length),t(e,13,0,"Audit Logs"),t(e,16,0,n.audit_log),t(e,18,0,0===n.contentData.audit_log.length)},function(t,e){t(e,3,0,o["\u0275nov"](e,4).clazz),t(e,5,0,o["\u0275nov"](e,6).id,o["\u0275nov"](e,6).active,o["\u0275nov"](e,6).addClass),t(e,12,0,o["\u0275nov"](e,13).id,o["\u0275nov"](e,13).active,o["\u0275nov"](e,13).addClass)})}function Pi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["class","form-control"]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Mi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,62,"div",[["class","row log-filters"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,10,"div",[["class","col-xs-4 col-md-2 cd-col-1 filter-box"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Priority:"])),(t()(),o["\u0275eld"](4,0,null,null,7,"select",[["class","form-control"]],[[2,"ng-untouched",null],[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 a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,5).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,5).onTouched()&&a),"ngModelChange"===e&&(a=!1!==(r.priority=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](7,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](9,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Pi)),o["\u0275did"](11,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](12,0,null,null,14,"div",[["class","col-xs-4 col-md-3 cd-col-3 filter-box"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Keyword:"])),(t()(),o["\u0275eld"](15,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](16,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,0,"i",[["class","glyphicon glyphicon-search"]],null,null,null,null,null)),(t()(),o["\u0275eld"](18,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 a=!0,r=t.component;return"input"===e&&(a=!1!==o["\u0275nov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.search=n)&&a),"keyup"===e&&(a=!1!==r.filterLogs()&&a),a},null,null)),o["\u0275did"](19,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](21,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](23,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](24,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](25,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["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()(),o["\u0275eld"](26,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),o["\u0275eld"](27,0,null,null,15,"div",[["class","col-xs-4 col-md-3 cd-col-2 filter-box"]],null,null,null,null,null)),(t()(),o["\u0275eld"](28,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Date:"])),(t()(),o["\u0275eld"](30,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](31,16777216,null,null,8,"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]],[[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!==o["\u0275nov"](t,32)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,32).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,32)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,32)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,34).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,34).hide()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,34).onBlur()&&a),"ngModelChange"===e&&(a=!1!==(r.selectedDate=n)&&a),"ngModelChange"===e&&(a=!1!==r.filterLogs()&&a),a},null,null)),o["\u0275did"](32,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](33,737280,null,0,Cr.b,[Cr.a,o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a],{bsConfig:[0,"bsConfig"]},null),o["\u0275did"](34,16384,null,0,Cr.B,[Cr.b,Cr.f,o.Renderer2,o.ElementRef,o.ChangeDetectorRef],null,null),o["\u0275prd"](1024,null,Te.o,function(t){return[t]},[Cr.B]),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Cr.B]),o["\u0275did"](37,671744,null,0,Te.u,[[8,null],[6,Te.o],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](39,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](40,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](41,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["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()(),o["\u0275eld"](42,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),o["\u0275eld"](43,0,null,null,0,"div",[["class","clearfix visible-xs-block"]],null,null,null,null,null)),(t()(),o["\u0275eld"](44,0,null,null,18,"div",[["class","col-xs-8 col-md-4 cd-col-4 filter-box time-box"]],null,null,null,null,null)),(t()(),o["\u0275eld"](45,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Time range:"])),(t()(),o["\u0275eld"](47,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},Ti,ai)),o["\u0275prd"](512,null,ti,ti,[]),o["\u0275did"](49,704512,null,0,ei,[Xr,o.ChangeDetectorRef,ti,Rr],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[ei]),o["\u0275did"](51,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](53,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](54,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xa0\u2014\xa0"])),(t()(),o["\u0275eld"](56,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},Ti,ai)),o["\u0275prd"](512,null,ti,ti,[]),o["\u0275did"](58,704512,null,0,ei,[Xr,o.ChangeDetectorRef,ti,Rr],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[ei]),o["\u0275did"](60,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](62,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){var n=e.component;t(e,7,0,n.priority),t(e,11,0,n.prioritys),t(e,21,0,n.search),t(e,33,0,n.bsConfig),t(e,37,0,n.selectedDate),t(e,49,0,1,n.showSpinners,!1),t(e,51,0,n.startTime),t(e,58,0,1,n.showSpinners,!1),t(e,60,0,n.endTime)},function(t,e){t(e,4,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending),t(e,18,0,o["\u0275nov"](e,23).ngClassUntouched,o["\u0275nov"](e,23).ngClassTouched,o["\u0275nov"](e,23).ngClassPristine,o["\u0275nov"](e,23).ngClassDirty,o["\u0275nov"](e,23).ngClassValid,o["\u0275nov"](e,23).ngClassInvalid,o["\u0275nov"](e,23).ngClassPending),t(e,31,0,o["\u0275nov"](e,39).ngClassUntouched,o["\u0275nov"](e,39).ngClassTouched,o["\u0275nov"](e,39).ngClassPristine,o["\u0275nov"](e,39).ngClassDirty,o["\u0275nov"](e,39).ngClassValid,o["\u0275nov"](e,39).ngClassInvalid,o["\u0275nov"](e,39).ngClassPending),t(e,47,0,o["\u0275nov"](e,53).ngClassUntouched,o["\u0275nov"](e,53).ngClassTouched,o["\u0275nov"](e,53).ngClassPristine,o["\u0275nov"](e,53).ngClassDirty,o["\u0275nov"](e,53).ngClassValid,o["\u0275nov"](e,53).ngClassInvalid,o["\u0275nov"](e,53).ngClassPending),t(e,56,0,o["\u0275nov"](e,62).ngClassUntouched,o["\u0275nov"](e,62).ngClassTouched,o["\u0275nov"](e,62).ngClassPristine,o["\u0275nov"](e,62).ngClassDirty,o["\u0275nov"](e,62).ngClassValid,o["\u0275nov"](e,62).ngClassInvalid,o["\u0275nov"](e,62).ngClassPending)})}function qi(t){return o["\u0275vid"](0,[o["\u0275pid"](0,wi.a,[]),(t()(),o["\u0275and"](16777216,null,null,1,null,Li)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,[["logFiltersTpl",2]],null,0,null,Mi))],function(t,e){t(e,2,0,e.component.contentData)},null)}function ji(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-logs",[],null,null,null,qi,ki)),o["\u0275did"](1,245760,null,0,Oi,[Si],null,null)],function(t,e){t(e,1,0)},null)}var Fi=o["\u0275ccf"]("cd-logs",Oi,ji,{},{},[]),zi=function(){function t(t){this.router=t,this.url=this.router.url}return t.prototype.navigateTo=function(t){this.router.navigate([t])},t}(),Gi=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Yi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,1,"tab",[["heading","Alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(t,e,n){var a=!0;return"select"===e&&(a=!1!==t.component.navigateTo("/alerts")&&a),a},null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(t()(),o["\u0275eld"](4,0,null,0,1,"tab",[["heading","Silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(t,e,n){var a=!0;return"select"===e&&(a=!1!==t.component.navigateTo("/silence")&&a),a},null,null)),o["\u0275did"](5,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(t,e){var n=e.component;t(e,3,0,"Alerts","/alerts"===n.url),t(e,5,0,"Silences","/silence"===n.url)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,4,0,o["\u0275nov"](e,5).id,o["\u0275nov"](e,5).active,o["\u0275nov"](e,5).addClass)})}var Hi,Vi=n("EgGo");!function(t){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-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-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.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 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.width="fa fa-fw",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"}(Hi||(Hi={}));var Bi=function(){function t(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"}}return t.prototype.ifAlertmanagerConfigured=function(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)},t.prototype.disableAlertmanagerConfig=function(){this.settingsService.disableSetting(this.settingsKey.alertmanager)},t.prototype.ifPrometheusConfigured=function(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)},t.prototype.disablePrometheusConfig=function(){this.settingsService.disableSetting(this.settingsKey.prometheus)},t.prototype.getAlerts=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL,{params:t})},t.prototype.getSilences=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL+"/silences",{params:t})},t.prototype.getRules=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL+"/rules",{params:t})},t.prototype.setSilence=function(t){return this.http.post(this.baseURL+"/silence",t,{observe:"response"})},t.prototype.expireSilence=function(t){return this.http.delete(this.baseURL+"/silence/"+t,{observe:"response"})},t.prototype.getNotifications=function(t){return this.http.get(this.baseURL+"/notifications?from="+(t&&t.id?t.id:"last"))},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c),o.inject(je.a))},token:t,providedIn:Rt.a}),t}(),Ui=n("G1I9"),Wi=function(){function t(t){this.notificationService=t}return t.prototype.sendNotifications=function(t){var e=this;t.forEach(function(t){return e.notificationService.show(t)})},t.prototype.convertToCustomAlerts=function(t){var e=this;return pt.uniqWith(t.map(function(t){return{status:pt.isObject(t.status)?t.status.state:e.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,summary:t.annotations.summary,fingerprint:pt.isObject(t.status)&&t.fingerprint}}),pt.isEqual)},t.prototype.getPrometheusNotificationStatus=function(t){var e=t.status;return"firing"===e?"active":e},t.prototype.convertAlertToNotification=function(t){return new Ui.b(this.formatType(t.status),t.name+" ("+t.status+")",this.appendSourceLink(t,t.summary),void 0,"Prometheus")},t.prototype.formatType=function(t){return $n.a[pt.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},function(e){return e.includes(t)})]},t.prototype.appendSourceLink=function(t,e){return e+' <a href="'+t.url+'" target="_blank"><i class="fa fa-line-chart"></i></a>'},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(Zn.a))},token:t,providedIn:"root"}),t}(),Ki=function(){function t(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[]}return t.prototype.refresh=function(){var t=this;this.prometheusService.ifAlertmanagerConfigured(function(){t.prometheusService.getAlerts().subscribe(function(e){return t.handleAlerts(e)},function(e){[404,504].includes(e.status)&&t.prometheusService.disableAlertmanagerConfig()})})},t.prototype.handleAlerts=function(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.alerts=t,this.canAlertsBeNotified=!0},t.prototype.notifyOnAlertChanges=function(t,e){var n=this,a=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(function(t){return n.alertFormatter.convertAlertToNotification(t)});this.alertFormatter.sendNotifications(a)},t.prototype.getChangedAlerts=function(t,e){return pt.differenceWith(t,e,pt.isEqual).concat(this.getVanishedAlerts(t,e))},t.prototype.getVanishedAlerts=function(t,e){return pt.differenceWith(e,t,function(t,e){return t.fingerprint===e.fingerprint}).map(function(t){return t.status="resolved",t})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(Wi),o.inject(Bi))},token:t,providedIn:"root"}),t}(),$i=new Vi.a("silence"),Zi=function(){function t(t,e,n,a,r){var i=this;this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new Ye.a,this.icons=Hi,this.customCss={"label label-danger":"active","label label-warning":"unprocessed","label label-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:function(t){return t.hasSingleSelection},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting},icon:Hi.add,routerLink:function(){return i.urlBuilder.getCreateFrom(i.selection.first().fingerprint)},name:this.i18n("Create silence")}]}return t.prototype.ngOnInit=function(){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:sn.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]},t.prototype.updateSelection=function(t){this.selection=t},t}(),Xi=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Ji(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](5,638976,null,0,Tn.a,[wn.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,3,0,"Details"),t(e,5,0,n.selection.first(),!1,!0,!1,!0,n.customCss)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass)})}function Qi(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-line-chart"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" Source"]))],null,function(t,e){t(e,0,0,e.context.value)})}function to(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{externalLinkTpl:0}),(t()(),o["\u0275eld"](1,0,null,null,1,"cd-prometheus-tabs",[],null,null,null,Yi,Gi)),o["\u0275did"](2,49152,null,0,zi,[tt.l],null,null),(t()(),o["\u0275eld"](3,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"updateSelection"]],function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](4,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"],customCss:[5,"customCss"]},{updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,vn.b,vn.a)),o["\u0275did"](6,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275and"](16777216,null,2,1,null,Ji)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,[[1,2],["externalLinkTpl",2]],null,0,null,Qi))],function(t,e){var n=e.component;t(e,4,0,n.prometheusAlertService.alerts,n.columns,"fingerprint",!0,"single",n.customCss),t(e,6,0,n.permission,n.selection,n.tableActions),t(e,8,0,n.selection.hasSingleSelection)},null)}function eo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-prometheus-list",[],null,null,null,to,Xi)),o["\u0275prd"](256,null,Vi.a,$i,[]),o["\u0275did"](2,114688,null,0,Zi,[d.a,Ki,Vi.a,_t.a,wn.a],null,null)],function(t,e){t(e,2,0)},null)}var no=o["\u0275ccf"]("cd-prometheus-list",Zi,eo,{},{},[]),ao=n("y9jh"),ro=n("6blF"),io=new Vi.a("silence"),oo=function(){function t(t,e,n,a,r,i,o,s,u){this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=o,this.actionLabels=s,this.succeededLabels=u,this.silences=[],this.selection=new Ye.a,this.customCss={"label label-danger":"active","label label-warning":"pending","label label-default":"expired"},this.sorts=[{prop:"endsAt",dir:ao.SortDirection.desc}],this.permission=this.authStorageService.getPermissions().prometheus}return t.prototype.ngOnInit=function(){var t=this,e=function(t){return t.first()&&"expired"===t.first().status.state};this.tableActions=[{permission:"create",icon:Hi.add,routerLink:function(){return t.urlBuilder.getCreate()},canBePrimary:function(t){return!t.hasSingleSelection},name:this.actionLabels.CREATE},{permission:"create",canBePrimary:function(t){return t.hasSingleSelection&&e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&e(t)||!e(t)},icon:Hi.copy,routerLink:function(){return t.urlBuilder.getRecreate(t.selection.first().id)},name:this.actionLabels.RECREATE},{permission:"update",icon:Hi.edit,canBePrimary:function(t){return t.hasSingleSelection&&!e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!e(t)||e(t)},routerLink:function(){return t.urlBuilder.getEdit(t.selection.first().id)},name:this.actionLabels.EDIT},{permission:"delete",icon:Hi.trash,canBePrimary:function(t){return t.hasSingleSelection&&!e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||e(t)},click:function(){return t.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:sn.a.classAdding}]},t.prototype.refresh=function(){var t=this;this.prometheusService.ifAlertmanagerConfigured(function(){t.prometheusService.getSilences().subscribe(function(e){t.silences=e},function(){t.prometheusService.disableAlertmanagerConfig()})})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.expireSilence=function(){var t=this,e=this.selection.first().id,n=this.i18n("Silence");this.modalRef=this.modalService.show(Wn.a,{initialState:{itemDescription:n,itemNames:[e],actionDescription:this.actionLabels.EXPIRE,submitActionObservable:function(){return new ro.a(function(a){t.prometheusService.expireSilence(e).subscribe(function(){t.notificationService.show($n.a.success,t.succeededLabels.EXPIRED+" "+n+" "+e,void 0,void 0,"Prometheus")},function(t){t.application="Prometheus",a.error(t)},function(){a.complete(),t.refresh()})})}}})},t}(),so=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function uo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](5,638976,null,0,Tn.a,[wn.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,3,0,"Details"),t(e,5,0,n.selection.first(),!1,!0,!1,!0,n.customCss)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass)})}function co(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-prometheus-tabs",[],null,null,null,Yi,Gi)),o["\u0275did"](1,49152,null,0,zi,[tt.l],null,null),(t()(),o["\u0275eld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](3,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"],customCss:[5,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,vn.b,vn.a)),o["\u0275did"](5,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275and"](16777216,null,2,1,null,uo)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,n.silences,n.columns,n.sorts,!0,"single",n.customCss),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.selection.hasSingleSelection)},null)}function lo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,co,so)),o["\u0275prd"](256,null,Vi.a,io,[]),o["\u0275did"](2,114688,null,0,oo,[d.a,_t.a,wn.a,Bi,da.b,Zn.a,Vi.a,Kn.b,Kn.d],null,null)],function(t,e){t(e,2,0)},null)}var po=o["\u0275ccf"]("cd-silences-list",oo,lo,{},{},[]),fo=n("4HWh"),ho=n("p4Cf"),go=n("8xTl"),mo=function(){function t(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}return t.prototype.singleMatch=function(t,e){return this.multiMatch([t],e)},t.prototype.multiMatch=function(t,e){var n=this;if(!t.some(function(t){return t.isRegex}))return t.forEach(function(t){e=n.getMatchedRules(t,e)}),this.describeMatch(e)},t.prototype.getMatchedRules=function(t,e){var n=this.getAttributePath(t.name);return e.filter(function(e){return pt.get(e,n)===t.value})},t.prototype.describeMatch=function(t){var e=0;return t.forEach(function(t){return e+=t.alerts.length}),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}},t.prototype.getAttributePath=function(t){return this.valueAttributePath[t]},t.prototype.getMatchText=function(t,e){var 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},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(_t.a))},token:t,providedIn:"root"}),t}(),bo=function(){function t(){}return t.prototype.calculateDuration=function(t,e){var n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r},t.prototype.getDuration=function(t){var e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=function(t,e){return t?t+e:t};return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(function(t){return t}).join(" ")},t.prototype.calculateDate=function(t,e,n){var a=+t;if(!pt.isNaN(a)){var r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}},t.prototype.getDurationMs=function(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))},t.prototype.getNumbersFromString=function(t,e){var n=t.match(new RegExp("[0-9 ]+"+e,"i"));return n?parseInt(n,10):0},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),yo=function(){function t(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new o.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}return t.prototype.createForm=function(){this.form=this.formBuilder.group({name:[null,[Te.A.required]],value:[{value:null,disabled:!0},[Te.A.required]],isRegex:new Te.i(!1)})},t.prototype.subscribeToChanges=function(){var t=this;this.form.get("name").valueChanges.subscribe(function(e){null!==e?(t.setPossibleValues(e),t.form.get("value").enable()):t.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(function(e){var n=t.form.value;n.value=e,t.matcherMatch=t.silenceMatcher.singleMatch(n,t.rules)})},t.prototype.setPossibleValues=function(t){var e=this;this.possibleValues=pt.sortedUniq(this.rules.map(function(n){return pt.get(n,e.silenceMatcher.getAttributePath(t))}).filter(function(t){return t}))},t.prototype.preFillControls=function(t){this.form.setValue(t)},t.prototype.onSubmit=function(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()},t}(),vo=function(){function t(t,e,n,a,r,i,o,s,u,c,l,d){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=o,this.timeDiff=s,this.bsModalService=u,this.silenceMatcher=c,this.actionLabels=l,this.succeededLabels=d,this.icons=Hi,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()}return t.prototype.init=function(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()},t.prototype.chooseMode=function(){this.edit=this.router.url.startsWith("/silence/edit"),this.recreate=this.router.url.startsWith("/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE},t.prototype.authenticate=function(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])},t.prototype.createForm=function(){var t=this;this.form=this.formBuilder.group({startsAt:[null,[Te.A.required]],duration:["2h",[Te.A.min(1)]],endsAt:[null,[Te.A.required]],createdBy:[this.authStorageService.getUsername(),[Te.A.required]],comment:[null,[Te.A.required]]},{validators:ea.a.custom("matcherRequired",function(){return 0===t.matchers.length})})},t.prototype.setupDates=function(){var t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()},t.prototype.updateDate=function(t){var e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)},t.prototype.subscribeDateChanges=function(){var t=this;this.form.get("startsAt").valueChanges.subscribe(function(){t.onDateChange()}),this.form.get("duration").valueChanges.subscribe(function(){t.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(function(){t.onDateChange(!0)})},t.prototype.onDateChange=function(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)},t.prototype.updateDuration=function(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))},t.prototype.getData=function(){this.getRules(),this.getModeSpecificData()},t.prototype.getRules=function(){var t=this;this.prometheusService.ifPrometheusConfigured(function(){return t.prometheusService.getRules().subscribe(function(e){return t.rules=e},function(){t.prometheusService.disablePrometheusConfig(),t.rules=[]})},function(){t.rules=[],t.notificationService.show($n.a.info,t.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})},t.prototype.getModeSpecificData=function(){var t=this;this.route.params.subscribe(function(e){e.id&&(t.edit||t.recreate?t.prometheusService.getSilences(e).subscribe(function(e){t.fillFormWithSilence(e[0])}):t.prometheusService.getAlerts(e).subscribe(function(e){t.fillFormByAlert(e[0])}))})},t.prototype.fillFormWithSilence=function(t){var e=this;this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(function(n){return e.form.silentSet(n,new Date(t[n]))}),this.updateDuration()),["createdBy","comment"].forEach(function(n){return e.form.silentSet(n,t[n])}),this.matchers=t.matchers,this.validateMatchers()},t.prototype.validateMatchers=function(){var t=this;this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(function(){return t.validateMatchers()},100)},t.prototype.fillFormByAlert=function(t){var e=this,n=t.labels;Object.keys(n).forEach(function(t){return e.setMatcher({name:t,value:n[t],isRegex:!1})})},t.prototype.setMatcher=function(t,e){pt.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()},t.prototype.showMatcherModal=function(t){var e=this,n=this.bsModalService.show(yo),a=n.content;a.rules=this.rules,pt.isNumber(t)&&(a.editMode=!0,a.preFillControls(this.matchers[t])),n.content.submitAction.subscribe(function(n){e.setMatcher(n,t)})},t.prototype.deleteMatcher=function(t){this.matchers.splice(t,1),this.validateMatchers()},t.prototype.submit=function(){var t=this;this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(function(e){t.router.navigate(["/silence"]),t.notificationService.show($n.a.success,t.getNotificationTile(e.body.silenceId),void 0,void 0,"Prometheus")},function(){return t.form.setErrors({cdSubmitButton:!0})})},t.prototype.getSubmitData=function(){var 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},t.prototype.getNotificationTile=function(t){return(this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED)+" "+this.resource+" "+t},t}(),xo=o["\u0275crt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function _o(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0]],null,null,null,null))],null,function(t,e){t(e,1,0,o["\u0275inlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])})}function To(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null))],null,function(t,e){t(e,2,0,o["\u0275inlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])})}function wo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,16777216,null,null,4,"span",[["class","input-group-addon"]],[[1,"aria-describedby",0]],null,null,null,null)),o["\u0275did"](2,212992,null,0,l.c,[o.ViewContainerRef,o.Renderer2,o.ElementRef,Q.a,l.a],{tooltip:[0,"tooltip"]},null),(t()(),o["\u0275eld"](3,0,null,null,2,"i",[["class","icon-prepend"]],null,null,null,null,null)),o["\u0275did"](4,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pad"](5,1),(t()(),o["\u0275and"](16777216,null,null,1,null,_o)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,To)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0,e.context.$implicit.tooltip);var n=t(e,5,0,e.context.$implicit.icon);t(e,4,0,"icon-prepend",n),t(e,7,0,"isRegex"!==e.context.$implicit.attribute),t(e,9,0,"isRegex"===e.context.$implicit.attribute)},function(t,e){t(e,1,0,o["\u0275nov"](e,2).ariaDescribedby)})}function So(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,wo)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](3,0,null,null,10,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,16777216,null,null,4,"button",[["class","btn btn-default"],["tooltip","Edit"],["type","button"]],[[8,"id",0],[1,"aria-describedby",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)),o["\u0275did"](5,212992,null,0,l.c,[o.ViewContainerRef,o.Renderer2,o.ElementRef,Q.a,l.a],{tooltip:[0,"tooltip"]},null),(t()(),o["\u0275eld"](6,0,null,null,2,"i",[],null,null,null,null,null)),o["\u0275did"](7,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pad"](8,1),(t()(),o["\u0275eld"](9,16777216,null,null,4,"button",[["class","btn btn-default"],["tooltip","Delete"],["type","button"]],[[8,"id",0],[1,"aria-describedby",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)),o["\u0275did"](10,212992,null,0,l.c,[o.ViewContainerRef,o.Renderer2,o.ElementRef,Q.a,l.a],{tooltip:[0,"tooltip"]},null),(t()(),o["\u0275eld"](11,0,null,null,2,"i",[],null,null,null,null,null)),o["\u0275did"](12,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pad"](13,1),(t()(),o["\u0275eld"](14,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,8,0,n.icons.edit);t(e,7,0,a),t(e,10,0,"Delete");var r=t(e,13,0,n.icons.trash);t(e,12,0,r)},function(t,e){t(e,4,0,o["\u0275inlineInterpolate"](1,"matcher-edit-",e.context.index,""),o["\u0275nov"](e,5).ariaDescribedby),t(e,9,0,o["\u0275inlineInterpolate"](1,"matcher-delete-",e.context.index,""),o["\u0275nov"](e,10).ariaDescribedby)})}function Oo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](1,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function ko(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Co(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Io(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Ro(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function No(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Do(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"h5",[],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pod"](2,{"text-warning":0,"text-danger":1}),(t()(),o["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["A silence requires at least one matcher"]))],function(t,e){var n=t(e,2,0,!o["\u0275nov"](e.parent,6).submitted,o["\u0275nov"](e.parent,6).submitted);t(e,1,0,n)},null)}function Ao(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Eo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,Ao)),o["\u0275did"](2,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),o["\u0275pod"](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,o["\u0275nov"](e.parent,2))},null)}function Lo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275ted"](2,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,0,0,o["\u0275inlineInterpolate"](1,"col-sm-offset-3 col-sm-9 ",n.matcherMatch.cssClass,"")),t(e,1,0,o["\u0275inlineInterpolate"](1,"help-block ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)})}function Po(t){return o["\u0275vid"](0,[o["\u0275pid"](0,i.TitleCasePipe,[]),o["\u0275pid"](0,go.a,[]),(t()(),o["\u0275and"](0,[["matcherTpl",2]],null,0,null,So)),(t()(),o["\u0275eld"](3,0,null,null,135,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,134,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,6).onReset()&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.D,[],null,null),o["\u0275did"](6,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](8,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](9,0,null,null,129,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,7,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,6,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](13,null,["","",""])),o["\u0275ppd"](14,1),o["\u0275ppd"](15,1),(t()(),o["\u0275and"](16777216,null,null,1,null,Oo)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,null,111,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](20,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](21,{"has-error":0}),(t()(),o["\u0275eld"](22,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","created-by"]],null,null,null,null,null)),(t()(),o["\u0275eld"](23,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Creator"])),(t()(),o["\u0275eld"](25,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](26,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](27,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,28)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,28).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,28)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,28)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](28,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](30,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](32,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,ko)),o["\u0275did"](34,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](35,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](36,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](37,{"has-error":0}),(t()(),o["\u0275eld"](38,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","comment"]],null,null,null,null,null)),(t()(),o["\u0275eld"](39,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Comment"])),(t()(),o["\u0275eld"](41,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](42,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](43,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,44)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,44).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,44)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,44)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](44,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](46,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](48,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275ted"](-1,null,["            "])),(t()(),o["\u0275and"](16777216,null,null,1,null,Co)),o["\u0275did"](51,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](52,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](53,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](54,{"has-error":0}),(t()(),o["\u0275eld"](55,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","starts-at"]],null,null,null,null,null)),(t()(),o["\u0275eld"](56,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Start time"])),(t()(),o["\u0275eld"](58,0,null,null,2,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](59,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),o["\u0275eld"](61,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](62,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](63,16777216,null,null,8,"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]],[[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!==o["\u0275nov"](t,64)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,64).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,64)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,64)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,66).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,66).hide()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,66).onBlur()&&a),a},null,null)),o["\u0275did"](64,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](65,737280,null,0,Cr.b,[Cr.a,o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a],{bsConfig:[0,"bsConfig"]},null),o["\u0275did"](66,16384,null,0,Cr.B,[Cr.b,Cr.f,o.Renderer2,o.ElementRef,o.ChangeDetectorRef],null,null),o["\u0275prd"](1024,null,Te.o,function(t){return[t]},[Cr.B]),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Cr.B]),o["\u0275did"](69,671744,null,0,Te.j,[[3,Te.d],[6,Te.o],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](71,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Io)),o["\u0275did"](73,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](74,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](75,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](76,{"has-error":0}),(t()(),o["\u0275eld"](77,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","duration"]],null,null,null,null,null)),(t()(),o["\u0275eld"](78,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Duration"])),(t()(),o["\u0275eld"](80,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](81,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](82,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,83)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,83).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,83)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,83)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](83,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](85,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](87,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ro)),o["\u0275did"](89,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](90,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](91,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](92,{"has-error":0}),(t()(),o["\u0275eld"](93,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","ends-at"]],null,null,null,null,null)),(t()(),o["\u0275eld"](94,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["End time"])),(t()(),o["\u0275eld"](96,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](97,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](98,16777216,null,null,8,"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]],[[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!==o["\u0275nov"](t,99)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,99).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,99)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,99)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,101).onChange(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,101).hide()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,101).onBlur()&&a),a},null,null)),o["\u0275did"](99,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](100,737280,null,0,Cr.b,[Cr.a,o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a],{bsConfig:[0,"bsConfig"]},null),o["\u0275did"](101,16384,null,0,Cr.B,[Cr.b,Cr.f,o.Renderer2,o.ElementRef,o.ChangeDetectorRef],null,null),o["\u0275prd"](1024,null,Te.o,function(t){return[t]},[Cr.B]),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Cr.B]),o["\u0275did"](104,671744,null,0,Te.j,[[3,Te.d],[6,Te.o],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](106,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,No)),o["\u0275did"](108,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](109,0,null,null,20,"fieldset",[],null,null,null,null,null)),(t()(),o["\u0275eld"](110,0,null,null,3,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Matchers"])),(t()(),o["\u0275eld"](112,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["*"])),(t()(),o["\u0275eld"](114,0,null,null,13,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Do)),o["\u0275did"](116,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Eo)),o["\u0275did"](118,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](119,0,null,null,8,"span",[["class","form-control no-border"]],null,null,null,null,null)),(t()(),o["\u0275eld"](120,0,null,null,7,"button",[["class","btn btn-sm btn-default btn-label pull-right"],["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)),o["\u0275did"](121,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](122,{"btn-warning":0}),(t()(),o["\u0275eld"](123,0,null,null,2,"i",[],null,null,null,null,null)),o["\u0275did"](124,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pad"](125,2),(t()(),o["\u0275eld"](126,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Add matcher"])),(t()(),o["\u0275and"](16777216,null,null,1,null,Lo)),o["\u0275did"](129,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](130,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](131,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275eld"](132,0,null,null,4,"cd-submit-button",[["id","submit"],["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a},Wa.b,Wa.a)),o["\u0275did"](133,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](134,0,["","",""])),o["\u0275ppd"](135,1),o["\u0275ppd"](136,1),(t()(),o["\u0275eld"](137,0,null,null,1,"cd-back-button",[],null,null,null,$a.b,$a.a)),o["\u0275did"](138,49152,null,0,Za.a,[i.Location,Kn.b],null,null)],function(t,e){var n=e.component;t(e,6,0,n.form),t(e,17,0,n.edit);var a=t(e,21,0,n.form.showError("createdBy",o["\u0275nov"](e,6)));t(e,20,0,"form-group",a),t(e,30,0,"createdBy"),t(e,34,0,n.form.showError("createdBy",o["\u0275nov"](e,6),"required"));var r=t(e,37,0,n.form.showError("comment",o["\u0275nov"](e,6)));t(e,36,0,"form-group",r),t(e,46,0,"comment"),t(e,51,0,n.form.showError("comment",o["\u0275nov"](e,6),"required"));var i=t(e,54,0,n.form.showError("startsAt",o["\u0275nov"](e,6)));t(e,53,0,"form-group",i),t(e,65,0,n.bsConfig),t(e,69,0,"startsAt"),t(e,73,0,n.form.showError("startsAt",o["\u0275nov"](e,6),"required"));var s=t(e,76,0,n.form.showError("duration",o["\u0275nov"](e,6)));t(e,75,0,"form-group",s),t(e,85,0,"duration"),t(e,89,0,n.form.showError("duration",o["\u0275nov"](e,6),"required"));var u=t(e,92,0,n.form.showError("endsAt",o["\u0275nov"](e,6)));t(e,91,0,"form-group",u),t(e,100,0,n.bsConfig),t(e,104,0,"endsAt"),t(e,108,0,n.form.showError("endsAt",o["\u0275nov"](e,6),"required")),t(e,116,0,0===n.matchers.length),t(e,118,0,n.matchers);var c=t(e,122,0,o["\u0275nov"](e,6).submitted&&0===n.matchers.length);t(e,121,0,"btn btn-sm btn-default btn-label pull-right",c);var l=t(e,125,0,n.icons.width,n.icons.add);t(e,124,0,l),t(e,129,0,n.matchers.length&&n.matcherMatch),t(e,133,0,o["\u0275nov"](e,6),"button")},function(t,e){var n=e.component;t(e,4,0,o["\u0275nov"](e,8).ngClassUntouched,o["\u0275nov"](e,8).ngClassTouched,o["\u0275nov"](e,8).ngClassPristine,o["\u0275nov"](e,8).ngClassDirty,o["\u0275nov"](e,8).ngClassValid,o["\u0275nov"](e,8).ngClassInvalid,o["\u0275nov"](e,8).ngClassPending);var a=o["\u0275unv"](e,13,0,t(e,14,0,o["\u0275nov"](e,0),n.action)),r=o["\u0275unv"](e,13,1,t(e,15,0,o["\u0275nov"](e,1),n.resource));t(e,13,0,a,r),t(e,27,0,o["\u0275nov"](e,32).ngClassUntouched,o["\u0275nov"](e,32).ngClassTouched,o["\u0275nov"](e,32).ngClassPristine,o["\u0275nov"](e,32).ngClassDirty,o["\u0275nov"](e,32).ngClassValid,o["\u0275nov"](e,32).ngClassInvalid,o["\u0275nov"](e,32).ngClassPending),t(e,43,0,o["\u0275nov"](e,48).ngClassUntouched,o["\u0275nov"](e,48).ngClassTouched,o["\u0275nov"](e,48).ngClassPristine,o["\u0275nov"](e,48).ngClassDirty,o["\u0275nov"](e,48).ngClassValid,o["\u0275nov"](e,48).ngClassInvalid,o["\u0275nov"](e,48).ngClassPending),t(e,63,0,o["\u0275nov"](e,71).ngClassUntouched,o["\u0275nov"](e,71).ngClassTouched,o["\u0275nov"](e,71).ngClassPristine,o["\u0275nov"](e,71).ngClassDirty,o["\u0275nov"](e,71).ngClassValid,o["\u0275nov"](e,71).ngClassInvalid,o["\u0275nov"](e,71).ngClassPending),t(e,82,0,o["\u0275nov"](e,87).ngClassUntouched,o["\u0275nov"](e,87).ngClassTouched,o["\u0275nov"](e,87).ngClassPristine,o["\u0275nov"](e,87).ngClassDirty,o["\u0275nov"](e,87).ngClassValid,o["\u0275nov"](e,87).ngClassInvalid,o["\u0275nov"](e,87).ngClassPending),t(e,98,0,o["\u0275nov"](e,106).ngClassUntouched,o["\u0275nov"](e,106).ngClassTouched,o["\u0275nov"](e,106).ngClassPristine,o["\u0275nov"](e,106).ngClassDirty,o["\u0275nov"](e,106).ngClassValid,o["\u0275nov"](e,106).ngClassInvalid,o["\u0275nov"](e,106).ngClassPending);var i=o["\u0275unv"](e,134,0,t(e,135,0,o["\u0275nov"](e,0),n.action)),s=o["\u0275unv"](e,134,1,t(e,136,0,o["\u0275nov"](e,1),n.resource));t(e,134,0,i,s)})}function Mo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,Po,xo)),o["\u0275did"](1,49152,null,0,vo,[_t.a,tt.l,d.a,sa.a,Bi,Zn.a,tt.a,bo,da.b,mo,Kn.b,Kn.d],null,null)],null,null)}var qo=o["\u0275ccf"]("cd-prometheus-form",vo,Mo,{},{},[]),jo=function(){function t(e){var n=this;this.route=e,this.route.queryParams.subscribe(function(e){n.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(function(t){n.serviceId=decodeURIComponent(t.id),n.serviceType=t.type})}return t.defaultFromLink="/hosts",t}(),Fo=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function zo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",".",""])),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,Sn.b,Sn.a)),o["\u0275did"](3,114688,null,0,On.a,[kn.a,_t.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 Go(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,zo,Fo)),o["\u0275did"](1,49152,null,0,jo,[tt.a],null,null)],null,null)}var Yo=o["\u0275ccf"]("cd-performance-counter",jo,Go,{},{},[]),Ho=function(){function t(t){this.http=t,this.url="api/mgr/module"}return t.prototype.list=function(){return this.http.get(""+this.url)},t.prototype.getConfig=function(t){return this.http.get(this.url+"/"+t)},t.prototype.updateConfig=function(t,e){return this.http.put(this.url+"/"+t,{config:e})},t.prototype.enable=function(t){return this.http.post(this.url+"/"+t+"/enable",null)},t.prototype.disable=function(t){return this.http.post(this.url+"/"+t+"/disable",null)},t.prototype.getOptions=function(t){return this.http.get(this.url+"/"+t+"/options")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Vo=function(){function t(t){this.mgrModuleService=t}return t.prototype.ngOnChanges=function(){var t=this;if(this.selection.hasSelection){var e=this.selection.first();this.mgrModuleService.getConfig(e.name).subscribe(function(e){t.module_config=e})}},t}(),Bo=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Uo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](5,638976,null,0,Tn.a,[wn.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,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass)})}function Wo(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Uo)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.selection.hasSingleSelection)},null)}var Ko=n("gI3B"),$o=function(){function t(t,e,n,a){var r=this;this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new Ye.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:sn.a.checkIcon}],this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:function(){return!r.selection.hasSelection||0===Object.values(r.selection.first().options).length},routerLink:function(){return"/mgr-modules/edit/"+(r.selection.first()&&encodeURIComponent(r.selection.first().name))},icon:"fa-pencil"},{name:this.i18n("Enable"),permission:"update",click:function(){return r.updateModuleState()},disable:function(){return r.isTableActionDisabled("enabled")},icon:"fa-play"},{name:this.i18n("Disable"),permission:"update",click:function(){return r.updateModuleState()},disable:function(){return r.isTableActionDisabled("disabled")},icon:"fa-stop"}]}return t.prototype.getModuleList=function(t){var e=this;this.mgrModuleService.list().subscribe(function(t){e.modules=t},function(){t.error()})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.isTableActionDisabled=function(t){if(!this.selection.hasSelection)return!0;if("dashboard"===this.selection.first().name)return!0;switch(t){case"enabled":return this.selection.first().enabled;case"disabled":return!this.selection.first().enabled}},t.prototype.updateModuleState=function(){var t=this;if(this.selection.hasSelection){var e=function(){Object(Ko.a)(2e3).subscribe(function(){t.mgrModuleService.list().subscribe(function(){t.notificationService.suspendToasties(!1),t.blockUI.stop(),t.table.refreshBtn()},function(){e()})})},n=this.selection.first();(n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name)).subscribe(function(){},function(){t.notificationService.suspendToasties(!0),t.blockUI.start(t.i18n("Reconnecting, please wait ...")),e()})}},h.__decorate([function(t,e,n){t[e]=T.decorate(void 0)},h.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t}(),Zo=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Xo(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{table:0}),(t()(),o["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a},ze.b,ze.a)),o["\u0275did"](2,2867200,[[1,4],["table",4]],0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,vn.b,vn.a)),o["\u0275did"](4,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275eld"](5,0,null,2,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,Wo,Bo)),o["\u0275did"](6,573440,null,0,Vo,[Ho],{selection:[0,"selection"]},null)],function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.selection)},null)}function Jo(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,Xo,Zo)),o["\u0275did"](1,49152,null,0,$o,[d.a,Ho,Zn.a,_t.a],null,null)],null,null)}var Qo=o["\u0275ccf"]("cd-mgr-module-list",$o,Jo,{},{},[]),ts=n("QC43"),es=n("XFyV"),ns=n("M/6F"),as=n("NDi4"),rs=function(){function t(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=[]}return t.prototype.ngOnInit=function(){var t=this;this.route.params.subscribe(function(e){t.moduleName=decodeURIComponent(e.name),t.loading=!0;var n=[];n.push(t.mgrModuleService.getOptions(t.moduleName)),n.push(t.mgrModuleService.getConfig(t.moduleName)),Object(Jn.a)(n).subscribe(function(e){t.loading=!1,t.moduleOptions=e[0],t.createForm(),t.mgrModuleForm.setValue(e[1])},function(e){t.error=e})},function(e){t.error=e})},t.prototype.getValidators=function(t){var e=[];switch(t.type){case"addr":e.push(ea.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(ea.a.number()),e.push(Te.A.required),pt.isNumber(t.min)&&e.push(Te.A.min(t.min)),pt.isNumber(t.max)&&e.push(Te.A.max(t.max));break;case"str":pt.isNumber(t.min)&&e.push(Te.A.minLength(t.min)),pt.isNumber(t.max)&&e.push(Te.A.maxLength(t.max));break;case"float":e.push(Te.A.required),e.push(ea.a.decimalNumber());break;case"uuid":e.push(ea.a.uuid())}return e},t.prototype.createForm=function(){var t=this,e={};pt.forEach(this.moduleOptions,function(n){e[n.name]=[n.default_value,t.getValidators(n)]}),this.mgrModuleForm=this.formBuilder.group(e)},t.prototype.goToListView=function(){this.router.navigate(["/mgr-modules"])},t.prototype.onSubmit=function(){var t=this;if(this.mgrModuleForm.pristine)this.goToListView();else{var e={};pt.forEach(this.moduleOptions,function(n){var a=t.mgrModuleForm.get(n.name);a.dirty&&a.valid&&(e[n.name]=a.value)}),this.mgrModuleService.updateConfig(this.moduleName,e).subscribe(function(){t.notificationService.show($n.a.success,t.i18n('Updated options for module "{{name}}".',{name:t.moduleName})),t.goToListView()},function(){t.mgrModuleForm.setErrors({cdSubmitButton:!0})})}},t}(),is=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function os(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,ts.b,ts.a)),o["\u0275did"](1,49152,null,0,es.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["Loading configuration..."]))],null,null)}function ss(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,null,null,ns.b,ns.a)),o["\u0275did"](1,49152,null,0,as.a,[],null,null),(t()(),o["\u0275ted"](-1,0,["The configuration could not be loaded."]))],null,null)}function us(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](1,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](2,0,[" "," "])),o["\u0275ppd"](3,1)],null,function(t,e){var n=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)})}function cs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,7,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,3).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,3).onTouched()&&a),a},null,null)),o["\u0275did"](3,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](5,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](7,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](8,0,null,null,0,"label",[],[[8,"htmlFor",0]],null,null,null,null))],function(t,e){t(e,5,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))},function(t,e){t(e,2,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),o["\u0275nov"](e,7).ngClassUntouched,o["\u0275nov"](e,7).ngClassTouched,o["\u0275nov"](e,7).ngClassPristine,o["\u0275nov"](e,7).ngClassDirty,o["\u0275nov"](e,7).ngClassValid,o["\u0275nov"](e,7).ngClassInvalid,o["\u0275nov"](e,7).ngClassPending),t(e,8,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))})}function ls(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,1)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](1,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](3,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](5,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){t(e,3,0,o["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))},function(t,e){t(e,0,0,o["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending)})}function ds(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{ngValue:[0,"ngValue"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),o["\u0275ted"](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 ps(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,7,"select",[["class","form-control"]],[[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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,1).onTouched()&&a),a},null,null)),o["\u0275did"](1,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](3,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](5,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,ds)),o["\u0275did"](7,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,3,0,o["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,e.parent.parent.context.$implicit.value.enum_allowed)},function(t,e){t(e,0,0,o["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending)})}function fs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function hs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function gs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ls)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ps)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,fs)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,hs)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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,o["\u0275nov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"pattern"))},null)}function ms(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required."]))],null,null)}function bs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 ys(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 vs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The entered value needs to be a number."]))],null,null)}function xs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,15,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,3).onTouched()&&a),a},null,null)),o["\u0275did"](2,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](3,16384,null,0,Te.C,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Te.C]),o["\u0275did"](5,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](7,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,ms)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,bs)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ys)),o["\u0275did"](13,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,vs)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,5,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"required")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"max")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"min")),t(e,15,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"pattern"))},function(t,e){t(e,1,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),o["\u0275nov"](e,7).ngClassUntouched,o["\u0275nov"](e,7).ngClassTouched,o["\u0275nov"](e,7).ngClassPristine,o["\u0275nov"](e,7).ngClassDirty,o["\u0275nov"](e,7).ngClassValid,o["\u0275nov"](e,7).ngClassInvalid,o["\u0275nov"](e,7).ngClassPending)})}function _s(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Ts(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function ws(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,11,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,2)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,2).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,2)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,2)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,3).onChange(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,3).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,3).onTouched()&&a),a},null,null)),o["\u0275did"](2,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](3,16384,null,0,Te.C,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Te.C]),o["\u0275did"](5,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](7,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,_s)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ts)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,5,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"required")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,o["\u0275nov"](e.parent.parent,3),"pattern"))},function(t,e){t(e,1,0,o["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),o["\u0275nov"](e,7).ngClassUntouched,o["\u0275nov"](e,7).ngClassTouched,o["\u0275nov"](e,7).ngClassPristine,o["\u0275nov"](e,7).ngClassDirty,o["\u0275nov"](e,7).ngClassValid,o["\u0275nov"](e,7).ngClassInvalid,o["\u0275nov"](e,7).ngClassPending)})}function Ss(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](4,null,[" "," "])),(t()(),o["\u0275and"](16777216,null,null,1,null,us)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,cs)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,2,null,gs)),o["\u0275did"](10,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275pad"](11,3),(t()(),o["\u0275and"](16777216,null,null,2,null,xs)),o["\u0275did"](13,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275pad"](14,4),(t()(),o["\u0275and"](16777216,null,null,1,null,ws)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,e.component.mgrModuleForm.showError(e.context.$implicit.value.name,o["\u0275nov"](e.parent,3)));t(e,1,0,"form-group",n),t(e,6,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,8,0,"bool"===e.context.$implicit.value.type);var a=t(e,11,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,10,0,a);var r=t(e,14,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,13,0,r),t(e,16,0,"float"===e.context.$implicit.value.type)},function(t,e){t(e,3,0,o["\u0275inlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,4,0,e.context.$implicit.value.name)})}function Os(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,22,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,21,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,3).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,3).onReset()&&a),a},null,null)),o["\u0275did"](2,16384,null,0,Te.D,[],null,null),o["\u0275did"](3,540672,[["frm",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](5,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](6,0,null,null,16,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,2,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,1,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Edit Manager module"])),(t()(),o["\u0275eld"](10,0,null,null,3,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,Ss)),o["\u0275did"](12,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.KeyValuePipe,[o.KeyValueDiffers]),(t()(),o["\u0275eld"](14,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275eld"](16,0,null,null,3,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a},Wa.b,Wa.a)),o["\u0275did"](17,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),o["\u0275eld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Update"])),(t()(),o["\u0275eld"](20,0,null,null,2,"button",[["class","btn btn-sm btn-default"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,21).onClick()&&a),a},null,null)),o["\u0275did"](21,16384,null,0,tt.m,[tt.l,tt.a,[8,null],o.Renderer2,o.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Back"]))],function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,12,0,o["\u0275unv"](e,12,0,o["\u0275nov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm,"button"),t(e,21,0,"/mgr-modules")},function(t,e){t(e,1,0,o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending)})}function ks(t){return o["\u0275vid"](0,[o["\u0275pid"](0,go.a,[]),(t()(),o["\u0275and"](16777216,null,null,1,null,os)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ss)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Os)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 Cs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,ks,is)),o["\u0275did"](1,114688,null,0,rs,[tt.a,tt.l,sa.a,Ho,Zn.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var Is=o["\u0275ccf"]("cd-mgr-module-form",rs,Cs,{},{},[]),Rs=n("wd/R"),Ns=function(){function t(){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:function(t,e){var n=0;if(t.length>0){var a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n.toString()}}}},chartType:"line"}}return t.prototype.ngOnInit=function(){pt.isUndefined(this.mdsCounter)||(this.setChartTooltip(),this.updateChart())},t.prototype.ngOnChanges=function(){pt.isUndefined(this.mdsCounter)||this.updateChart()},t.prototype.setChartTooltip=function(){var t=new ft.a(this.chartCanvas,this.chartTooltip,function(t){return t.caretX+"px"},function(t){return t.caretY-t.height-23+"px"});t.getTitle=function(t){return Rs(t,"x").format("LTS")},t.checkOffset=!0,pt.merge(this.chart,{options:{title:{text:this.mdsCounter.name},tooltips:{custom:function(e){return t.customTooltips(e)}}}})},t.prototype.updateChart=function(){var t=[{data:this.convertTimeSeries(this.mdsCounter[this.lhsCounter])},{data:this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])}];pt.merge(this.chart,{datasets:t}),this.chart.datasets=this.chart.datasets.slice()},t.prototype.convertTimeSeries=function(t){var e=[];return pt.each(t,function(t){e.push({x:1e3*t[0],y:t[1]})}),e.shift(),e},t.prototype.deltaTimeSeries=function(t){var e,n=t[0],a=[];for(e=1;e<t.length;e++){var r=t[e];a.push({x:1e3*r[0],y:(r[1]-n[1])/(r[0]-n[0])}),n=r}return a},t}(),Ds=o["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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 As(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{chartCanvas:0}),o["\u0275qud"](402653184,2,{chartTooltip:0}),(t()(),o["\u0275eld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),o["\u0275did"](4,737280,null,0,lt.BaseChartDirective,[o.ElementRef],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),o["\u0275eld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),o["\u0275eld"](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)}var Es=n("C6Ij"),Ls=n("AWcq"),Ps=function(){function t(t){this.http=t,this.baseURL="api/cephfs"}return t.prototype.list=function(){return this.http.get(""+this.baseURL)},t.prototype.getCephfs=function(t){return this.http.get(this.baseURL+"/"+t)},t.prototype.getClients=function(t){return this.http.get(this.baseURL+"/"+t+"/clients")},t.prototype.getMdsCounters=function(t){return this.http.get(this.baseURL+"/"+t+"/mds_counters")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Ms=n("yJti"),qs=function(){function t(t,e){this.cephfsService=t,this.i18n=e}return t.prototype.ngOnInit=function(){this.clients={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")}],data:[]},this.clients.data=[],this.viewCacheStatus=Ms.a.ValueNone},t.prototype.refresh=function(){var t=this;this.cephfsService.getClients(this.id).subscribe(function(e){t.viewCacheStatus=e.status,t.clients.data=e.data})},t}(),js=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Fs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,Es.b,Es.a)),o["\u0275did"](1,114688,null,0,Ls.a,[],{status:[0,"status"]},null),(t()(),o["\u0275eld"](2,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},ze.b,ze.a)),o["\u0275did"](3,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],function(t,e){var n=e.component;t(e,1,0,n.viewCacheStatus),t(e,3,0,n.clients.data,n.clients.columns)},null)}var zs=function(){function t(t,e,n,a,r){this.authStorageService=t,this.cephfsService=e,this.dimlessBinary=n,this.dimless=a,this.i18n=r,this.standbys=[],this.mdsCounters={},this.objectValues=Object.values,this.clientsSelect=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.grafanaId=Object.values(this.selectedItem.mdsmap.info)[0].name,this.id!==this.selectedItem.id&&(this.id=this.selectedItem.id,this.ranks.data=[],this.pools.data=[],this.standbys=[],this.mdsCounters={}))},t.prototype.ngOnInit=function(){this.ranks={columns:[{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}],data:[]},this.pools={columns:[{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:function(t,e,n,a){var r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}],data:[]}},t.prototype.refresh=function(){var t=this;this.cephfsService.getCephfs(this.id).subscribe(function(e){t.ranks.data=e.cephfs.ranks,t.pools.data=e.cephfs.pools,t.pools.data.forEach(function(t){t.size=t.used+t.avail}),t.standbys=[{key:t.i18n("Standby daemons"),value:e.standbys.map(function(t){return t.name}).join(", ")}],t.name=e.cephfs.name,t.clientCount=e.cephfs.client_count}),this.cephfsService.getMdsCounters(this.id).subscribe(function(e){pt.each(t.mdsCounters,function(n,a){void 0===e[a]&&delete t.mdsCounters[a]}),pt.each(e,function(e,n){e.name=n,t.mdsCounters[n]=e})})},t.prototype.trackByFn=function(t,e){return e.name},t}(),Gs=o["\u0275crt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function Ys(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,As,Ds)),o["\u0275did"](3,638976,null,0,Ns,[],{mdsCounter:[0,"mdsCounter"]},null)],function(t,e){t(e,3,0,e.context.$implicit)},null)}function Hs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-cephfs-clients",[],null,null,null,Fs,js)),o["\u0275did"](1,114688,null,0,qs,[Ps,_t.a],{id:[0,"id"]},null)],function(t,e){t(e,1,0,e.component.id)},null)}function Vs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](1,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,Le.b,Le.a)),o["\u0275did"](3,638976,null,0,Pe.a,[Me.a,qe.DomSanitizer,je.a,Fe.a,_t.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,o["\u0275nov"](e,1).id,o["\u0275nov"](e,1).active,o["\u0275nov"](e,1).addClass)})}function Bs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,26,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,18,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,12,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,6,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Ranks"])),(t()(),o["\u0275eld"](8,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},ze.b,ze.a)),o["\u0275did"](9,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},{fetchData:"fetchData"}),(t()(),o["\u0275eld"](10,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](11,638976,null,0,Tn.a,[wn.a],{data:[0,"data"]},null),(t()(),o["\u0275eld"](12,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Pools"])),(t()(),o["\u0275eld"](15,0,null,null,1,"cd-table",[],null,null,null,ze.b,ze.a)),o["\u0275did"](16,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),o["\u0275eld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["MDS performance counters"])),(t()(),o["\u0275and"](16777216,null,null,1,null,Ys)),o["\u0275did"](20,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),o["\u0275eld"](21,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"],[null,"deselect"]],function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=0!=(r.clientsSelect=!0)&&a),"deselect"===e&&(a=0!=(r.clientsSelect=!1)&&a),a},null,null)),o["\u0275did"](22,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},{select:"select",deselect:"deselect"}),(t()(),o["\u0275and"](16777216,null,null,1,null,Hs)),o["\u0275did"](24,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,0,1,null,Vs)),o["\u0275did"](26,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,9,0,n.ranks.data,n.ranks.columns,!1),t(e,11,0,n.standbys),t(e,16,0,n.pools.data,n.pools.columns,!1),t(e,20,0,n.objectValues(n.mdsCounters),n.trackByFn),t(e,22,0,o["\u0275inlineInterpolate"](1,"Clients: ",n.clientCount,"")),t(e,24,0,n.clientsSelect),t(e,26,0,n.grafanaPermission.read)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,21,0,o["\u0275nov"](e,22).id,o["\u0275nov"](e,22).active,o["\u0275nov"](e,22).addClass)})}function Us(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,gn.b,gn.a)),o["\u0275did"](1,573440,null,0,mn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)},null)}function Ws(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](0,null,[" ",": "," /s\n"])),o["\u0275ppd"](1,1)],null,function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",a=o["\u0275unv"](e,0,1,t(e,1,0,o["\u0275nov"](e.parent,0),e.context.value));t(e,0,0,n,a)})}function Ks(t){return o["\u0275vid"](0,[o["\u0275pid"](0,gt.a,[kt.a]),o["\u0275qud"](402653184,1,{poolUsageTpl:0}),o["\u0275qud"](402653184,2,{activityTmpl:0}),(t()(),o["\u0275and"](16777216,null,null,1,null,Bs)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,[[1,2],["poolUsageTpl",2]],null,0,null,Us)),(t()(),o["\u0275and"](0,[[2,2],["activityTmpl",2]],null,0,null,Ws))],function(t,e){t(e,4,0,e.component.selectedItem)},null)}var $s=function(){function t(t,e){this.cephfsService=t,this.i18n=e,this.filesystems=[],this.selection=new Ye.a}return t.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1}]},t.prototype.loadFilesystems=function(t){var e=this;this.cephfsService.list().subscribe(function(t){e.filesystems=t},function(){t.error()})},t.prototype.updateSelection=function(t){this.selection=t},t}(),Zs=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Xs(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](1,2867200,null,0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](2,0,null,2,1,"cd-cephfs-detail",[["cdTableDetail",""]],null,null,null,Ks,Gs)),o["\u0275did"](3,638976,null,0,zs,[d.a,Ps,ht.a,gt.a,_t.a],{selection:[0,"selection"]},null)],function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex","id","true","single"),t(e,3,0,n.selection)},null)}function Js(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,Xs,Zs)),o["\u0275did"](1,114688,null,0,$s,[Ps,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var Qs=o["\u0275ccf"]("cd-cephfs-list",$s,Js,{},{},[]),tu=n("TZo1"),eu=n("9Kw/"),nu=function(){function t(t,e,n,a){this.route=t,this.summaryService=e,this.cephReleaseNamePipe=n,this.i18n=a,this.message=this.i18n("The NFS Ganesha service is not configured.")}return t.prototype.ngOnInit=function(){var t=this,e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard",setTimeout(function(){e.unsubscribe()},0)}});this.routeParamsSubscribe=this.route.params.subscribe(function(e){t.message=e.message})},t.prototype.ngOnDestroy=function(){this.routeParamsSubscribe.unsubscribe()},t}(),au=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ru(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"cd-info-panel",[],null,null,null,tu.b,tu.a)),o["\u0275did"](1,49152,null,0,eu.a,[_t.a],null,null),(t()(),o["\u0275ted"](2,0,[" ",""])),(t()(),o["\u0275eld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Please consult the "])),(t()(),o["\u0275eld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["documentation"])),(t()(),o["\u0275ted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],null,function(t,e){var n=e.component;t(e,2,0,n.message),t(e,6,0,o["\u0275inlineInterpolate"](1,"",n.docsUrl,""))})}function iu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,ru,au)),o["\u0275did"](1,245760,null,0,nu,[tt.a,Me.a,Fe.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var ou=o["\u0275ccf"]("cd-nfs-501",nu,iu,{},{},[]),su=function(){function t(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}]}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),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(function(t){return"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))},t}(),uu=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function cu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,Z.b,Z.a)),o["\u0275did"](1,180224,null,0,X.d,[X.e,o.Renderer2],null,null),(t()(),o["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](3,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,_n.b,_n.a)),o["\u0275did"](5,638976,null,0,Tn.a,[wn.a],{data:[0,"data"]},null),(t()(),o["\u0275eld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),o["\u0275did"](7,212992,null,0,X.b,[X.d,o.ElementRef,o.Renderer2],{heading:[0,"heading"]},null),(t()(),o["\u0275eld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,ze.b,ze.a)),o["\u0275did"](9,2867200,[["table",4]],0,Ge.a,[o.NgZone,o.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,o["\u0275inlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")},function(t,e){t(e,0,0,o["\u0275nov"](e,1).clazz),t(e,2,0,o["\u0275nov"](e,3).id,o["\u0275nov"](e,3).active,o["\u0275nov"](e,3).addClass),t(e,6,0,o["\u0275nov"](e,7).id,o["\u0275nov"](e,7).active,o["\u0275nov"](e,7).addClass)})}function lu(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,cu)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,null==n.selection?null:n.selection.hasSingleSelection)},null)}var du=n("VTlA"),pu=n("ufoC"),fu=function(){function t(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"]}return t.prototype.list=function(){return this.http.get(this.apiPath+"/export")},t.prototype.get=function(t,e){return this.http.get(this.apiPath+"/export/"+t+"/"+e)},t.prototype.create=function(t){return this.http.post(this.apiPath+"/export",t,{observe:"response"})},t.prototype.update=function(t,e,n){return this.http.put(this.apiPath+"/export/"+t+"/"+e,n,{observe:"response"})},t.prototype.delete=function(t,e){return this.http.delete(this.apiPath+"/export/"+t+"/"+e,{observe:"response"})},t.prototype.lsDir=function(t){return this.http.get(this.uiApiPath+"/lsdir?root_dir="+t)},t.prototype.buckets=function(t){return this.http.get(this.uiApiPath+"/rgw/buckets?user_id="+t)},t.prototype.clients=function(){return this.http.get(this.uiApiPath+"/cephx/clients")},t.prototype.fsals=function(){return this.http.get(this.uiApiPath+"/fsals")},t.prototype.filesystems=function(){return this.http.get(this.uiApiPath+"/cephfs/filesystems")},t.prototype.daemon=function(){return this.http.get(this.apiPath+"/daemon")},t.prototype.start=function(t){return this.http.put(this.apiPath+"/service/"+t+"/start",null,{observe:"response"})},t.prototype.stop=function(t){return this.http.put(this.apiPath+"/service/"+t+"/stop",null,{observe:"response"})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c),o.inject(_t.a))},token:t,providedIn:Rt.a}),t}(),hu=n("kvvV"),gu=n("kn/O"),mu=function(){function t(t,e,n,a,r,i,o){var s=this;this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.actionLabels=o,this.selection=new Ye.a,this.isDefaultCluster=!1,this.builders={"nfs/create":function(t){return{path:t.path,cluster_id:t.cluster_id,fsal:t.fsal}}},this.permission=this.authStorageService.getPermissions().nfs,this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return"/nfs/create"},canBePrimary:function(t){return!t.hasSingleSelection},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return"/nfs/edit/"+(s.selection.first()&&encodeURI(s.selection.first().cluster_id)+"/"+encodeURI(s.selection.first().export_id))},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return s.deleteNfsModal()},name:this.actionLabels.DELETE}]}return t.prototype.ngOnInit=function(){var t=this;this.columns=[{name:this.i18n("Path"),prop:"path",flexGrow:2,cellTransformation:sn.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(function(e){var n=pt(e).map(function(t){return t.cluster_id}).uniq().value();t.isDefaultCluster=1===n.length&&"_default_"===n[0],t.columns[2].isHidden=t.isDefaultCluster,t.table&&t.table.updateColumns(),t.taskListService.init(function(){return t.nfsService.list()},function(e){return t.prepareResponse(e)},function(e){return t.exports=e},function(){return t.onFetchError()},t.taskFilter,t.itemFilter,t.builders)},function(){t.onFetchError()})},t.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},t.prototype.prepareResponse=function(t){var e=[];return t.forEach(function(t){t.id=t.cluster_id+":"+t.export_id,t.state="LOADING",e=e.concat(t)}),e},t.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatus={status:Ms.a.ValueException}},t.prototype.itemFilter=function(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id},t.prototype.taskFilter=function(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteNfsModal=function(){var t=this,e=this.selection.first().cluster_id,n=this.selection.first().export_id;this.modalRef=this.modalService.show(Wn.a,{initialState:{itemDescription:this.i18n("NFS export"),itemNames:[e+":"+n],submitActionObservable:function(){return t.taskWrapper.wrapTaskAroundCall({task:new hu.a("nfs/delete",{cluster_id:e,export_id:n}),call:t.nfsService.delete(e,n)})}}})},t}(),bu=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function yu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CephFS"]))],null,null)}function vu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Object Gateway"]))],null,null)}function xu(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,yu)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,vu)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](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 _u(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{nfsState:0}),o["\u0275qud"](402653184,2,{nfsFsal:0}),o["\u0275qud"](402653184,3,{table:0}),(t()(),o["\u0275eld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a},ze.b,ze.a)),o["\u0275did"](4,2867200,[[3,4],["table",4]],0,Ge.a,[o.NgZone,o.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),o["\u0275eld"](5,0,null,0,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,vn.b,vn.a)),o["\u0275did"](7,114688,null,0,xn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),o["\u0275eld"](8,0,null,2,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,lu,uu)),o["\u0275did"](9,573440,null,0,su,[_t.a],{selection:[0,"selection"]},null),(t()(),o["\u0275and"](0,[[2,2],["nfsFsal",2]],null,0,null,xu))],function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex","id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.selection)},null)}function Tu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,_u,bu)),o["\u0275prd"](131584,null,du.a,du.a,[pu.a,Me.a]),o["\u0275did"](2,245760,null,0,mu,[d.a,_t.a,da.b,fu,du.a,gu.a,Kn.b],null,null)],function(t,e){t(e,2,0)},null)}var wu=o["\u0275ccf"]("cd-nfs-list",mu,Tu,{},{},[]),Su=n("rpEJ"),Ou=n("zrt+"),ku=n("0/uQ"),Cu=n("Gi3i"),Iu=n("15JJ"),Ru=n("psW0"),Nu=n("VnD/"),Du=n("R+r5"),Au=n("NJnL"),Eu={"\xc1":"A","\u0102":"A","\u1eae":"A","\u1eb6":"A","\u1eb0":"A","\u1eb2":"A","\u1eb4":"A","\u01cd":"A","\xc2":"A","\u1ea4":"A","\u1eac":"A","\u1ea6":"A","\u1ea8":"A","\u1eaa":"A","\xc4":"A","\u01de":"A","\u0226":"A","\u01e0":"A","\u1ea0":"A","\u0200":"A","\xc0":"A","\u1ea2":"A","\u0202":"A","\u0100":"A","\u0104":"A","\xc5":"A","\u01fa":"A","\u1e00":"A","\u023a":"A","\xc3":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u1e02":"B","\u1e04":"B","\u0181":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0106":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0108":"C","\u010a":"C","\u0187":"C","\u023b":"C","\u010e":"D","\u1e10":"D","\u1e12":"D","\u1e0a":"D","\u1e0c":"D","\u018a":"D","\u1e0e":"D","\u01f2":"D","\u01c5":"D","\u0110":"D","\u018b":"D","\u01f1":"DZ","\u01c4":"DZ","\xc9":"E","\u0114":"E","\u011a":"E","\u0228":"E","\u1e1c":"E","\xca":"E","\u1ebe":"E","\u1ec6":"E","\u1ec0":"E","\u1ec2":"E","\u1ec4":"E","\u1e18":"E","\xcb":"E","\u0116":"E","\u1eb8":"E","\u0204":"E","\xc8":"E","\u1eba":"E","\u0206":"E","\u0112":"E","\u1e16":"E","\u1e14":"E","\u0118":"E","\u0246":"E","\u1ebc":"E","\u1e1a":"E","\ua76a":"ET","\u1e1e":"F","\u0191":"F","\u01f4":"G","\u011e":"G","\u01e6":"G","\u0122":"G","\u011c":"G","\u0120":"G","\u0193":"G","\u1e20":"G","\u01e4":"G","\u1e2a":"H","\u021e":"H","\u1e28":"H","\u0124":"H","\u2c67":"H","\u1e26":"H","\u1e22":"H","\u1e24":"H","\u0126":"H","\xcd":"I","\u012c":"I","\u01cf":"I","\xce":"I","\xcf":"I","\u1e2e":"I","\u0130":"I","\u1eca":"I","\u0208":"I","\xcc":"I","\u1ec8":"I","\u020a":"I","\u012a":"I","\u012e":"I","\u0197":"I","\u0128":"I","\u1e2c":"I","\ua779":"D","\ua77b":"F","\ua77d":"G","\ua782":"R","\ua784":"S","\ua786":"T","\ua76c":"IS","\u0134":"J","\u0248":"J","\u1e30":"K","\u01e8":"K","\u0136":"K","\u2c69":"K","\ua742":"K","\u1e32":"K","\u0198":"K","\u1e34":"K","\ua740":"K","\ua744":"K","\u0139":"L","\u023d":"L","\u013d":"L","\u013b":"L","\u1e3c":"L","\u1e36":"L","\u1e38":"L","\u2c60":"L","\ua748":"L","\u1e3a":"L","\u013f":"L","\u2c62":"L","\u01c8":"L","\u0141":"L","\u01c7":"LJ","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u0143":"N","\u0147":"N","\u0145":"N","\u1e4a":"N","\u1e44":"N","\u1e46":"N","\u01f8":"N","\u019d":"N","\u1e48":"N","\u0220":"N","\u01cb":"N","\xd1":"N","\u01ca":"NJ","\xd3":"O","\u014e":"O","\u01d1":"O","\xd4":"O","\u1ed0":"O","\u1ed8":"O","\u1ed2":"O","\u1ed4":"O","\u1ed6":"O","\xd6":"O","\u022a":"O","\u022e":"O","\u0230":"O","\u1ecc":"O","\u0150":"O","\u020c":"O","\xd2":"O","\u1ece":"O","\u01a0":"O","\u1eda":"O","\u1ee2":"O","\u1edc":"O","\u1ede":"O","\u1ee0":"O","\u020e":"O","\ua74a":"O","\ua74c":"O","\u014c":"O","\u1e52":"O","\u1e50":"O","\u019f":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\xd5":"O","\u1e4c":"O","\u1e4e":"O","\u022c":"O","\u01a2":"OI","\ua74e":"OO","\u0190":"E","\u0186":"O","\u0222":"OU","\u1e54":"P","\u1e56":"P","\ua752":"P","\u01a4":"P","\ua754":"P","\u2c63":"P","\ua750":"P","\ua758":"Q","\ua756":"Q","\u0154":"R","\u0158":"R","\u0156":"R","\u1e58":"R","\u1e5a":"R","\u1e5c":"R","\u0210":"R","\u0212":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua73e":"C","\u018e":"E","\u015a":"S","\u1e64":"S","\u0160":"S","\u1e66":"S","\u015e":"S","\u015c":"S","\u0218":"S","\u1e60":"S","\u1e62":"S","\u1e68":"S","\u0164":"T","\u0162":"T","\u1e70":"T","\u021a":"T","\u023e":"T","\u1e6a":"T","\u1e6c":"T","\u01ac":"T","\u1e6e":"T","\u01ae":"T","\u0166":"T","\u2c6f":"A","\ua780":"L","\u019c":"M","\u0245":"V","\ua728":"TZ","\xda":"U","\u016c":"U","\u01d3":"U","\xdb":"U","\u1e76":"U","\xdc":"U","\u01d7":"U","\u01d9":"U","\u01db":"U","\u01d5":"U","\u1e72":"U","\u1ee4":"U","\u0170":"U","\u0214":"U","\xd9":"U","\u1ee6":"U","\u01af":"U","\u1ee8":"U","\u1ef0":"U","\u1eea":"U","\u1eec":"U","\u1eee":"U","\u0216":"U","\u016a":"U","\u1e7a":"U","\u0172":"U","\u016e":"U","\u0168":"U","\u1e78":"U","\u1e74":"U","\ua75e":"V","\u1e7e":"V","\u01b2":"V","\u1e7c":"V","\ua760":"VY","\u1e82":"W","\u0174":"W","\u1e84":"W","\u1e86":"W","\u1e88":"W","\u1e80":"W","\u2c72":"W","\u1e8c":"X","\u1e8a":"X","\xdd":"Y","\u0176":"Y","\u0178":"Y","\u1e8e":"Y","\u1ef4":"Y","\u1ef2":"Y","\u01b3":"Y","\u1ef6":"Y","\u1efe":"Y","\u0232":"Y","\u024e":"Y","\u1ef8":"Y","\u0179":"Z","\u017d":"Z","\u1e90":"Z","\u2c6b":"Z","\u017b":"Z","\u1e92":"Z","\u0224":"Z","\u1e94":"Z","\u01b5":"Z","\u0132":"IJ","\u0152":"OE","\u1d00":"A","\u1d01":"AE","\u0299":"B","\u1d03":"B","\u1d04":"C","\u1d05":"D","\u1d07":"E","\ua730":"F","\u0262":"G","\u029b":"G","\u029c":"H","\u026a":"I","\u0281":"R","\u1d0a":"J","\u1d0b":"K","\u029f":"L","\u1d0c":"L","\u1d0d":"M","\u0274":"N","\u1d0f":"O","\u0276":"OE","\u1d10":"O","\u1d15":"OU","\u1d18":"P","\u0280":"R","\u1d0e":"N","\u1d19":"R","\ua731":"S","\u1d1b":"T","\u2c7b":"E","\u1d1a":"R","\u1d1c":"U","\u1d20":"V","\u1d21":"W","\u028f":"Y","\u1d22":"Z","\xe1":"a","\u0103":"a","\u1eaf":"a","\u1eb7":"a","\u1eb1":"a","\u1eb3":"a","\u1eb5":"a","\u01ce":"a","\xe2":"a","\u1ea5":"a","\u1ead":"a","\u1ea7":"a","\u1ea9":"a","\u1eab":"a","\xe4":"a","\u01df":"a","\u0227":"a","\u01e1":"a","\u1ea1":"a","\u0201":"a","\xe0":"a","\u1ea3":"a","\u0203":"a","\u0101":"a","\u0105":"a","\u1d8f":"a","\u1e9a":"a","\xe5":"a","\u01fb":"a","\u1e01":"a","\u2c65":"a","\xe3":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u1e03":"b","\u1e05":"b","\u0253":"b","\u1e07":"b","\u1d6c":"b","\u1d80":"b","\u0180":"b","\u0183":"b","\u0275":"o","\u0107":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0109":"c","\u0255":"c","\u010b":"c","\u0188":"c","\u023c":"c","\u010f":"d","\u1e11":"d","\u1e13":"d","\u0221":"d","\u1e0b":"d","\u1e0d":"d","\u0257":"d","\u1d91":"d","\u1e0f":"d","\u1d6d":"d","\u1d81":"d","\u0111":"d","\u0256":"d","\u018c":"d","\u0131":"i","\u0237":"j","\u025f":"j","\u0284":"j","\u01f3":"dz","\u01c6":"dz","\xe9":"e","\u0115":"e","\u011b":"e","\u0229":"e","\u1e1d":"e","\xea":"e","\u1ebf":"e","\u1ec7":"e","\u1ec1":"e","\u1ec3":"e","\u1ec5":"e","\u1e19":"e","\xeb":"e","\u0117":"e","\u1eb9":"e","\u0205":"e","\xe8":"e","\u1ebb":"e","\u0207":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u2c78":"e","\u0119":"e","\u1d92":"e","\u0247":"e","\u1ebd":"e","\u1e1b":"e","\ua76b":"et","\u1e1f":"f","\u0192":"f","\u1d6e":"f","\u1d82":"f","\u01f5":"g","\u011f":"g","\u01e7":"g","\u0123":"g","\u011d":"g","\u0121":"g","\u0260":"g","\u1e21":"g","\u1d83":"g","\u01e5":"g","\u1e2b":"h","\u021f":"h","\u1e29":"h","\u0125":"h","\u2c68":"h","\u1e27":"h","\u1e23":"h","\u1e25":"h","\u0266":"h","\u1e96":"h","\u0127":"h","\u0195":"hv","\xed":"i","\u012d":"i","\u01d0":"i","\xee":"i","\xef":"i","\u1e2f":"i","\u1ecb":"i","\u0209":"i","\xec":"i","\u1ec9":"i","\u020b":"i","\u012b":"i","\u012f":"i","\u1d96":"i","\u0268":"i","\u0129":"i","\u1e2d":"i","\ua77a":"d","\ua77c":"f","\u1d79":"g","\ua783":"r","\ua785":"s","\ua787":"t","\ua76d":"is","\u01f0":"j","\u0135":"j","\u029d":"j","\u0249":"j","\u1e31":"k","\u01e9":"k","\u0137":"k","\u2c6a":"k","\ua743":"k","\u1e33":"k","\u0199":"k","\u1e35":"k","\u1d84":"k","\ua741":"k","\ua745":"k","\u013a":"l","\u019a":"l","\u026c":"l","\u013e":"l","\u013c":"l","\u1e3d":"l","\u0234":"l","\u1e37":"l","\u1e39":"l","\u2c61":"l","\ua749":"l","\u1e3b":"l","\u0140":"l","\u026b":"l","\u1d85":"l","\u026d":"l","\u0142":"l","\u01c9":"lj","\u017f":"s","\u1e9c":"s","\u1e9b":"s","\u1e9d":"s","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u1d6f":"m","\u1d86":"m","\u0144":"n","\u0148":"n","\u0146":"n","\u1e4b":"n","\u0235":"n","\u1e45":"n","\u1e47":"n","\u01f9":"n","\u0272":"n","\u1e49":"n","\u019e":"n","\u1d70":"n","\u1d87":"n","\u0273":"n","\xf1":"n","\u01cc":"nj","\xf3":"o","\u014f":"o","\u01d2":"o","\xf4":"o","\u1ed1":"o","\u1ed9":"o","\u1ed3":"o","\u1ed5":"o","\u1ed7":"o","\xf6":"o","\u022b":"o","\u022f":"o","\u0231":"o","\u1ecd":"o","\u0151":"o","\u020d":"o","\xf2":"o","\u1ecf":"o","\u01a1":"o","\u1edb":"o","\u1ee3":"o","\u1edd":"o","\u1edf":"o","\u1ee1":"o","\u020f":"o","\ua74b":"o","\ua74d":"o","\u2c7a":"o","\u014d":"o","\u1e53":"o","\u1e51":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\xf5":"o","\u1e4d":"o","\u1e4f":"o","\u022d":"o","\u01a3":"oi","\ua74f":"oo","\u025b":"e","\u1d93":"e","\u0254":"o","\u1d97":"o","\u0223":"ou","\u1e55":"p","\u1e57":"p","\ua753":"p","\u01a5":"p","\u1d71":"p","\u1d88":"p","\ua755":"p","\u1d7d":"p","\ua751":"p","\ua759":"q","\u02a0":"q","\u024b":"q","\ua757":"q","\u0155":"r","\u0159":"r","\u0157":"r","\u1e59":"r","\u1e5b":"r","\u1e5d":"r","\u0211":"r","\u027e":"r","\u1d73":"r","\u0213":"r","\u1e5f":"r","\u027c":"r","\u1d72":"r","\u1d89":"r","\u024d":"r","\u027d":"r","\u2184":"c","\ua73f":"c","\u0258":"e","\u027f":"r","\u015b":"s","\u1e65":"s","\u0161":"s","\u1e67":"s","\u015f":"s","\u015d":"s","\u0219":"s","\u1e61":"s","\u1e63":"s","\u1e69":"s","\u0282":"s","\u1d74":"s","\u1d8a":"s","\u023f":"s","\u0261":"g","\u1d11":"o","\u1d13":"o","\u1d1d":"u","\u0165":"t","\u0163":"t","\u1e71":"t","\u021b":"t","\u0236":"t","\u1e97":"t","\u2c66":"t","\u1e6b":"t","\u1e6d":"t","\u01ad":"t","\u1e6f":"t","\u1d75":"t","\u01ab":"t","\u0288":"t","\u0167":"t","\u1d7a":"th","\u0250":"a","\u1d02":"ae","\u01dd":"e","\u1d77":"g","\u0265":"h","\u02ae":"h","\u02af":"h","\u1d09":"i","\u029e":"k","\ua781":"l","\u026f":"m","\u0270":"m","\u1d14":"oe","\u0279":"r","\u027b":"r","\u027a":"r","\u2c79":"r","\u0287":"t","\u028c":"v","\u028d":"w","\u028e":"y","\ua729":"tz","\xfa":"u","\u016d":"u","\u01d4":"u","\xfb":"u","\u1e77":"u","\xfc":"u","\u01d8":"u","\u01da":"u","\u01dc":"u","\u01d6":"u","\u1e73":"u","\u1ee5":"u","\u0171":"u","\u0215":"u","\xf9":"u","\u1ee7":"u","\u01b0":"u","\u1ee9":"u","\u1ef1":"u","\u1eeb":"u","\u1eed":"u","\u1eef":"u","\u0217":"u","\u016b":"u","\u1e7b":"u","\u0173":"u","\u1d99":"u","\u016f":"u","\u0169":"u","\u1e79":"u","\u1e75":"u","\u1d6b":"ue","\ua778":"um","\u2c74":"v","\ua75f":"v","\u1e7f":"v","\u028b":"v","\u1d8c":"v","\u2c71":"v","\u1e7d":"v","\ua761":"vy","\u1e83":"w","\u0175":"w","\u1e85":"w","\u1e87":"w","\u1e89":"w","\u1e81":"w","\u2c73":"w","\u1e98":"w","\u1e8d":"x","\u1e8b":"x","\u1d8d":"x","\xfd":"y","\u0177":"y","\xff":"y","\u1e8f":"y","\u1ef5":"y","\u1ef3":"y","\u01b4":"y","\u1ef7":"y","\u1eff":"y","\u0233":"y","\u1e99":"y","\u024f":"y","\u1ef9":"y","\u017a":"z","\u017e":"z","\u1e91":"z","\u0291":"z","\u2c6c":"z","\u017c":"z","\u1e93":"z","\u0225":"z","\u1e95":"z","\u1d76":"z","\u1d8e":"z","\u0290":"z","\u01b6":"z","\u0240":"z","\ufb00":"ff","\ufb03":"ffi","\ufb04":"ffl","\ufb01":"fi","\ufb02":"fl","\u0133":"ij","\u0153":"oe","\ufb06":"st","\u2090":"a","\u2091":"e","\u1d62":"i","\u2c7c":"j","\u2092":"o","\u1d63":"r","\u1d64":"u","\u1d65":"v","\u2093":"x"},Lu=function(){function t(t,e,n){void 0===e&&(e=t),void 0===n&&(n=!1),this.item=t,this.value=e,this.header=n}return t.prototype.isHeader=function(){return this.header},t.prototype.toString=function(){return this.value},t}();function Pu(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,function(t){return Eu[t]||t}):""}function Mu(t,e,n){void 0===e&&(e=" "),void 0===n&&(n="");for(var a,r=t.split(new RegExp("(?:["+n+"])([^"+n+"]+)(?:["+n+"])|([^"+e+"]+)","g")),i=[],o=r.length,s=new RegExp("["+n+"]+","g"),u=0;u<o;u+=1)(a=r[u])&&a.length&&a!==e&&i.push(a.replace(s,""));return i}function qu(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();var n,a,r=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");try{for(var i=Object(h.__values)(r),o=i.next();!o.done;o=i.next()){var s=o.value;s in t&&(t=t[s])}}catch(u){n={error:u}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return t?t.toString():""}var ju=function(){function t(t,e){this.renderer=e,this.isFocused=!1,this._matches=[],this.isScrolledIntoView=function(t){var e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.element=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(Su.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._active},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"matches",{get:function(){return this._matches},set:function(t){var e=this;this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(function(){e.setScrollableMode()}),this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"optionsListTemplate",{get:function(){return this.parent?this.parent.optionsListTemplate:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"typeaheadScrollable",{get:function(){return!!this.parent&&this.parent.typeaheadScrollable},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"typeaheadOptionsInScrollableView",{get:function(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"itemTemplate",{get:function(){return this.parent?this.parent.typeaheadItemTemplate:void 0},enumerable:!0,configurable:!0}),t.prototype.selectActiveMatch=function(){this.selectMatch(this._active)},t.prototype.prevActiveMatch=function(){var 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)},t.prototype.nextActiveMatch=function(){var 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)},t.prototype.selectActive=function(t){this.isFocused=!0,this._active=t},t.prototype.highlight=function(t,e){var n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?Pu(r):r).toLowerCase();if("object"==typeof e)for(var o=e.length,s=0;s<o;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},t.prototype.focusLost=function(){this.isFocused=!1},t.prototype.isActive=function(t){return this._active===t},t.prototype.selectMatch=function(t,e){var n=this;return void 0===e&&(e=void 0),e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(function(){return n.parent.typeaheadOnSelect.emit(t)},0),!1},t.prototype.setScrollableMode=function(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){var t=Su.b.getStyles(this.ulElement.nativeElement),e=Su.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")},t.prototype.scrollPrevious=function(t){if(0!==t){if(this.liElements){var e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()},t.prototype.scrollNext=function(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){var 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))}},t.prototype.scrollToBottom=function(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight},t.prototype.scrollToTop=function(){this.ulElement.nativeElement.scrollTop=0},t}(),Fu=function(){return function(){this.hideResultsOnBlur=!0}}(),zu=function(){function t(t,e,n,a,r,i,s){this.ngControl=t,this.element=e,this.renderer=a,this.changeDetection=s,this.typeaheadMinLength=void 0,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadLoading=new o.EventEmitter,this.typeaheadNoResults=new o.EventEmitter,this.typeaheadOnSelect=new o.EventEmitter,this.typeaheadOnBlur=new o.EventEmitter,this.dropup=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new o.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=i.createLoader(e,n,a).provide({provide:Fu,useValue:r}),Object.assign(this,{typeaheadHideResultsOnBlur:r.hideResultsOnBlur})}return t.prototype.ngOnInit=function(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||Object(Ou.a)(this.typeahead)||(this.typeaheadAsync=!1),Object(Ou.a)(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()},t.prototype.onInput=function(t){var 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())},t.prototype.onChange=function(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}},t.prototype.onFocus=function(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))},t.prototype.onBlur=function(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)},t.prototype.onKeydown=function(t){if(this._container){if(13!==t.keyCode&&"Enter"!==t.key)return 9===t.keyCode||"Tab"===t.key?(t.preventDefault(),void this._container.selectActiveMatch()):void 0;t.preventDefault()}},t.prototype.changeModel=function(t){var e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()},Object.defineProperty(t.prototype,"matches",{get:function(){return this._matches},enumerable:!0,configurable:!0}),t.prototype.show=function(){var t=this;this._typeahead.attach(ju).to(this.container).position({attachment:(this.dropup?"top":"bottom")+" left"}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",function(e){0===t.typeaheadMinLength&&t.element.nativeElement.contains(e.target)||t.typeaheadHideResultsOnBlur&&!t.element.nativeElement.contains(e.target)&&t.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;var e=(this.typeaheadLatinize?Pu(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Mu(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,this._container.matches=this._matches,this.element.nativeElement.focus()},t.prototype.hide=function(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)},t.prototype.onOutsideClick=function(){this._container&&!this._container.isFocused&&this.hide()},t.prototype.ngOnDestroy=function(){try{for(var t=Object(h.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._typeahead.dispose()},t.prototype.asyncActions=function(){var t=this;this._subscriptions.push(this.keyUpEventEmitter.pipe(Object(Cu.a)(this.typeaheadWaitMs),Object(Iu.a)(function(){return t.typeahead})).subscribe(function(e){t.finalizeAsyncCall(e)}))},t.prototype.syncActions=function(){var t=this;this._subscriptions.push(this.keyUpEventEmitter.pipe(Object(Cu.a)(this.typeaheadWaitMs),Object(Ru.a)(function(e){var n=t.normalizeQuery(e);return Object(ku.a)(t.typeahead).pipe(Object(Nu.a)(function(e){return e&&t.testMatch(t.normalizeOption(e),n)}),Object(Du.a)())})).subscribe(function(e){t.finalizeAsyncCall(e)}))},t.prototype.normalizeOption=function(t){var e=qu(t,this.typeaheadOptionField);return(this.typeaheadLatinize?Pu(e):e).toLowerCase()},t.prototype.normalizeQuery=function(t){var e=(this.typeaheadLatinize?Pu(t):t).toString().toLowerCase();return this.typeaheadSingleWords?Mu(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e},t.prototype.testMatch=function(t,e){var n;if("object"==typeof e){n=e.length;for(var 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},t.prototype.finalizeAsyncCall=function(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){var e=((this.typeaheadLatinize?Pu(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?Mu(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,this._container.matches=this._matches}else this.show();else this.hide()},t.prototype.prepareMatches=function(t){var e=this,n=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){var a=[];n.map(function(t){return qu(t,e.typeaheadGroupField)}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){a.push(new Lu(t,t,!0)),a=a.concat(n.filter(function(n){return qu(n,e.typeaheadGroupField)===t}).map(function(t){return new Lu(t,qu(t,e.typeaheadOptionField))}))}),this._matches=a}else this._matches=n.map(function(t){return new Lu(t,qu(t,e.typeaheadOptionField))})},t.prototype.hasMatches=function(){return this._matches.length>0},t}(),Gu=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[Q.a,Au.a,Fu]}},t}(),Yu=n("WiuZ"),Hu=n("wnGv"),Vu=n("TYzs"),Bu=function(){function t(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType}return t.prototype.getNoAccessTypeDescr=function(){return this.form.getValue("access_type")?this.form.getValue("access_type")+" "+this.i18n("(inherited from global config)"):this.i18n("-- Select the access type --")},t.prototype.getAccessTypeHelp=function(t){var e=this,n=this.nfsAccessType.find(function(n){return e.getValue(t,"access_type")===n.value});return pt.isObjectLike(n)?n.help:""},t.prototype.getNoSquashDescr=function(){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 --")},t.prototype.addClient=function(){var t=this.form.get("clients"),e=new ta.a({addresses:new Te.i("",{validators:[Te.A.required,Te.A.pattern("(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)([ ,]{1,2}(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?))*")]}),access_type:new Te.i(""),squash:new Te.i("")});return t.push(e),e},t.prototype.removeClient=function(t){this.form.get("clients").removeAt(t)},t.prototype.showError=function(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)},t.prototype.getValue=function(t,e){return this.form.get("clients").at(t).getValue(e)},t.prototype.resolveModel=function(t){var e=this;pt.forEach(t,function(t){e.addClient().patchValue(t)})},t.prototype.trackByFn=function(t){return t},t}(),Uu=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Wu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border text-muted"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Any client can access"]))],null,null)}function Ku(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function $u(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),o["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["For example:"])),(t()(),o["\u0275ted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function Zu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Xu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))})}function Ju(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Qu(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,62,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,61,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),o["\u0275did"](2,212992,null,0,Te.m,[[3,Te.d],[8,null],[8,null]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.m]),o["\u0275did"](4,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](5,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,4,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,[""," "])),o["\u0275ppd"](8,1),(t()(),o["\u0275eld"](9,0,null,null,1,"span",[["class","pull-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()(),o["\u0275ted"](-1,null,["\xd7"])),(t()(),o["\u0275eld"](11,0,null,null,51,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](13,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](14,{"has-error":0}),(t()(),o["\u0275eld"](15,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","addresses"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Addresses"])),(t()(),o["\u0275eld"](17,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](18,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](19,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](21,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](23,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](24,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ku)),o["\u0275did"](26,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,$u)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](29,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](30,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","access_type"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Access Type"])),(t()(),o["\u0275eld"](32,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](33,0,null,null,11,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,34).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,34).onTouched()&&a),a},null,null)),o["\u0275did"](34,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](36,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](38,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](39,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](40,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](41,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](42,null,["",""])),(t()(),o["\u0275and"](16777216,null,null,1,null,Zu)),o["\u0275did"](44,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Xu)),o["\u0275did"](46,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](47,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](48,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","squash"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Squash"])),(t()(),o["\u0275eld"](50,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](51,0,null,null,11,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,52).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,52).onTouched()&&a),a},null,null)),o["\u0275did"](52,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](54,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](56,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](57,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](58,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](59,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](60,null,["",""])),(t()(),o["\u0275and"](16777216,null,null,1,null,Ju)),o["\u0275did"](62,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,2,0,e.context.index);var a=t(e,14,0,n.showError(e.context.index,"addresses",o["\u0275nov"](e.parent,5)));t(e,13,0,"form-group",a),t(e,21,0,"addresses"),t(e,26,0,n.showError(e.context.index,"addresses",o["\u0275nov"](e.parent,5),"required")),t(e,28,0,n.showError(e.context.index,"addresses",o["\u0275nov"](e.parent,5),"pattern")),t(e,36,0,"access_type"),t(e,40,0,""),t(e,41,0,""),t(e,44,0,n.nfsAccessType),t(e,46,0,n.getValue(e.context.index,"access_type")),t(e,54,0,"squash"),t(e,58,0,""),t(e,59,0,""),t(e,62,0,n.nfsSquash)},function(t,e){var n=e.component;t(e,1,0,o["\u0275nov"](e,4).ngClassUntouched,o["\u0275nov"](e,4).ngClassTouched,o["\u0275nov"](e,4).ngClassPristine,o["\u0275nov"](e,4).ngClassDirty,o["\u0275nov"](e,4).ngClassValid,o["\u0275nov"](e,4).ngClassInvalid,o["\u0275nov"](e,4).ngClassPending);var a=o["\u0275unv"](e,7,0,t(e,8,0,o["\u0275nov"](e.parent,0),e.context.index+1));t(e,7,0,a),t(e,18,0,o["\u0275nov"](e,23).ngClassUntouched,o["\u0275nov"](e,23).ngClassTouched,o["\u0275nov"](e,23).ngClassPristine,o["\u0275nov"](e,23).ngClassDirty,o["\u0275nov"](e,23).ngClassValid,o["\u0275nov"](e,23).ngClassInvalid,o["\u0275nov"](e,23).ngClassPending),t(e,33,0,o["\u0275nov"](e,38).ngClassUntouched,o["\u0275nov"](e,38).ngClassTouched,o["\u0275nov"](e,38).ngClassPristine,o["\u0275nov"](e,38).ngClassDirty,o["\u0275nov"](e,38).ngClassValid,o["\u0275nov"](e,38).ngClassInvalid,o["\u0275nov"](e,38).ngClassPending),t(e,42,0,n.getNoAccessTypeDescr()),t(e,51,0,o["\u0275nov"](e,56).ngClassUntouched,o["\u0275nov"](e,56).ngClassTouched,o["\u0275nov"](e,56).ngClassPristine,o["\u0275nov"](e,56).ngClassDirty,o["\u0275nov"](e,56).ngClassValid,o["\u0275nov"](e,56).ngClassInvalid,o["\u0275nov"](e,56).ngClassPending),t(e,60,0,n.getNoSquashDescr())})}function tc(t){return o["\u0275vid"](0,[o["\u0275pid"](0,Vu.a,[]),(t()(),o["\u0275eld"](1,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Clients"])),(t()(),o["\u0275eld"](4,0,null,null,17,"div",[["class","col-sm-9"]],[[2,"ng-untouched",null],[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!==o["\u0275nov"](t,5).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,5).onReset()&&a),a},null,null)),o["\u0275did"](5,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](7,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Wu)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](10,0,null,null,5,null,null,null,null,null,null,null)),o["\u0275did"](11,212992,null,0,Te.g,[[3,Te.d],[8,null],[8,null]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.g]),o["\u0275did"](13,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Qu)),o["\u0275did"](15,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),o["\u0275eld"](16,0,null,null,4,"span",[["class","form-control no-border"]],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,3,"button",[["class","btn btn-default btn-label pull-right"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a},null,null)),(t()(),o["\u0275eld"](18,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Add clients"])),(t()(),o["\u0275eld"](21,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){var n=e.component;t(e,5,0,n.form),t(e,9,0,0===n.form.get("clients").value.length),t(e,11,0,"clients"),t(e,15,0,n.form.get("clients").value,n.trackByFn)},function(t,e){t(e,4,0,o["\u0275nov"](e,7).ngClassUntouched,o["\u0275nov"](e,7).ngClassTouched,o["\u0275nov"](e,7).ngClassPristine,o["\u0275nov"](e,7).ngClassDirty,o["\u0275nov"](e,7).ngClassValid,o["\u0275nov"](e,7).ngClassInvalid,o["\u0275nov"](e,7).ngClassPending)})}var ec=n("F/XL"),nc=n("67Y/"),ac=n("P8lu"),rc=n("DNAf"),ic=n("a96k"),oc=function(){function t(t,e,n,a,r,i,o,s,u,c,l,d){var p=this;this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.summaryservice=o,this.cephReleaseNamePipe=s,this.taskWrapper=u,this.cdRef=c,this.i18n=l,this.actionLabels=d,this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},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 rc.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=ro.a.create(function(t){t.next(p.nfsForm.getValue("path"))}).pipe(Object(Ru.a)(function(t){return p.getPathTypeahead(t)}),Object(nc.a)(function(t){return t.paths})),this.bucketDataSource=ro.a.create(function(t){t.next(p.nfsForm.getValue("path"))}).pipe(Object(Ru.a)(function(t){return p.getBucketTypeahead(t)})),this.permission=this.authStorageService.getPermissions().pool,this.resource=this.i18n("NFS export"),this.createForm()}return t.prototype.ngOnInit=function(){var t=this,e=[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(function(n){t.cluster_id=decodeURIComponent(n.cluster_id),t.export_id=decodeURIComponent(n.export_id),e.push(t.nfsService.get(t.cluster_id,t.export_id)),t.getData(e)})):(this.action=this.actionLabels.CREATE,this.getData(e));var n=this.summaryservice.getCurrentSummary(),a=this.cephReleaseNamePipe.transform(n.version);this.docsUrl="http://docs.ceph.com/docs/"+a+"/radosgw/nfs/"},t.prototype.getData=function(t){var e=this;Object(Jn.a)(t).subscribe(function(t){e.resolveDaemons(t[0]),e.resolvefsals(t[1]),e.resolveClients(t[2]),e.resolveFilesystems(t[3]),t[4]&&e.resolveModel(t[4])})},t.prototype.createForm=function(){this.nfsForm=new ta.a({cluster_id:new Te.i("",{validators:[Te.A.required]}),daemons:new Te.i([]),fsal:new ta.a({name:new Te.i("",{validators:[Te.A.required]}),user_id:new Te.i("",{validators:[ea.a.requiredIf({name:"CEPH"})]}),fs_name:new Te.i("",{validators:[ea.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new Te.i("",{validators:[ea.a.requiredIf({name:"RGW"})]})}),path:new Te.i(""),protocolNfsv3:new Te.i(!0,{validators:[ea.a.requiredIf({protocolNfsv4:!1},function(t){return!t})]}),protocolNfsv4:new Te.i(!0,{validators:[ea.a.requiredIf({protocolNfsv3:!1},function(t){return!t})]}),tag:new Te.i(""),pseudo:new Te.i("",{validators:[ea.a.requiredIf({protocolNfsv4:!0}),Te.A.pattern("^/[^><|&()]*$")]}),access_type:new Te.i("RW",{validators:[Te.A.required]}),squash:new Te.i("",{validators:[Te.A.required]}),transportUDP:new Te.i(!0,{validators:[ea.a.requiredIf({transportTCP:!1},function(t){return!t})]}),transportTCP:new Te.i(!0,{validators:[ea.a.requiredIf({transportUDP:!1},function(t){return!t})]}),clients:this.formBuilder.array([]),security_label:new Te.i(!1),sec_label_xattr:new Te.i("security.selinux",ea.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})},t.prototype.resolveModel=function(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.daemonsSelections=pt.map(this.allDaemons[t.cluster_id],function(e){return new ic.a(-1!==t.daemons.indexOf(e),e,"")}),this.daemonsSelections=this.daemonsSelections.slice(),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(function(t){var e="";t.addresses.forEach(function(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)},t.prototype.resolveDaemons=function(t){var e=this;t=pt.sortBy(t,["daemon_id"]),this.allClusters=pt(t).map(function(t){return t.cluster_id}).sortedUniq().value(),pt.forEach(this.allClusters,function(t){e.allDaemons[t]=[]}),pt.forEach(t,function(t){e.allDaemons[t.cluster_id].push(t.daemon_id)});var n=pt.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=n&&"_default_"===this.allClusters[0],n&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0]}),this.onClusterChange())},t.prototype.resolvefsals=function(t){var e=this;t.forEach(function(t){var n=e.nfsService.nfsFsal.find(function(e){return t===e.value});pt.isObjectLike(n)&&(e.allFsals.push(n),"RGW"===n.value&&e.rgwUserService.list().subscribe(function(t){t.forEach(function(t){0===t.suspended&&t.keys.length>0&&e.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&pt.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})},t.prototype.resolveClients=function(t){this.allCephxClients=t},t.prototype.resolveFilesystems=function(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})},t.prototype.fsalChangeHandler=function(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo(),access_type:this._updateAccessType()}),this.setPathValidation(),this.cdRef.detectChanges()},t.prototype.accessTypeChangeHandler=function(){var t=this.nfsForm.getValue("name"),e=this.nfsForm.getValue("access_type");this.defaultAccessType[t]=e},t.prototype.setPathValidation=function(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([Te.A.required,Te.A.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([Te.A.required,Te.A.pattern("^/[^><|&()?]*$")])},t.prototype.rgwUserIdChangeHandler=function(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})},t.prototype.getAccessTypeHelp=function(t){var e=this.nfsAccessType.find(function(e){if(t===e.value)return e});return pt.isObjectLike(e)?e.help:""},t.prototype.getId=function(){return pt.isString(this.nfsForm.getValue("cluster_id"))&&pt.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""},t.prototype.getPathTypeahead=function(t){return pt.isString(t)&&"/"!==t?this.nfsService.lsDir(t):Object(ec.a)([])},t.prototype.pathChangeHandler=function(){var t=this;this.nfsForm.patchValue({pseudo:this._generatePseudo()});var e=this.nfsForm.getValue("path");this.getPathTypeahead(e).subscribe(function(n){t.isNewDirectory="/"!==e&&-1===n.paths.indexOf(e)})},t.prototype.bucketChangeHandler=function(){var t=this;this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});var e=this.nfsForm.getValue("path");this.getBucketTypeahead(e).subscribe(function(n){t.isNewBucket=""!==e&&-1===n.indexOf(e)})},t.prototype.getBucketTypeahead=function(t){var e=this.nfsForm.getValue("rgw_user_id");return pt.isString(e)&&pt.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(ec.a)([])},t.prototype._generateTag=function(){var 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},t.prototype._generatePseudo=function(){var 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",pt.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&pt.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),pt.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t},t.prototype._updateAccessType=function(){var t=this.nfsForm.getValue("name"),e=this.defaultAccessType[t];return e||(e="RW"),e},t.prototype.onClusterChange=function(){var t=this.nfsForm.getValue("cluster_id");this.daemonsSelections=pt.map(this.allDaemons[t],function(t){return new ic.a(!1,t,"")}),this.daemonsSelections=this.daemonsSelections.slice(),this.nfsForm.patchValue({daemons:[]})},t.prototype.removeDaemon=function(t,e){this.daemonsSelections.forEach(function(t){t.name===e&&(t.selected=!1)});var n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1},t.prototype.onDaemonSelection=function(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))},t.prototype.submitAction=function(){var t=this,e=this._buildRequest();this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new hu.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 hu.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}).subscribe(void 0,function(){return t.nfsForm.setErrors({cdSubmitButton:!0})},function(){return t.router.navigate(["/nfs"])})},t.prototype._buildRequest=function(){var t=pt.cloneDeep(this.nfsForm.value);return(pt.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(function(e){e.addresses=pt.isString(e.addresses)?pt(e.addresses).split(/[ ,]+/).uniq().filter(function(t){return""!==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},t}(),sc=o["\u0275crt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function uc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function cc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No cluster available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function lc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the cluster --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function dc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 pc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function fc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","cluster_id"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Cluster"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),"change"===e&&(a=!1!==r.onClusterChange()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,uc)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,cc)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,lc)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,dc)),o["\u0275did"](21,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,pc)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("cluster_id",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"cluster_id"),t(e,15,0,null===n.allClusters),t(e,17,0,null!==n.allClusters&&0===n.allClusters.length),t(e,19,0,null!==n.allClusters&&n.allClusters.length>0),t(e,21,0,n.allClusters),t(e,23,0,n.nfsForm.showError("cluster_id",o["\u0275nov"](e.parent,6),"required"))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function hc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.context.index,t.context.$implicit)&&a),a},null,null)),(t()(),o["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function gc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function mc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No data pools available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function bc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the storage backend --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function yc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 vc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function xc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function _c(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No users available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Tc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the object gateway user --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function wc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Sc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Oc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Object Gateway User"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,xc)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,_c)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Tc)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,wc)),o["\u0275did"](21,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Sc)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("rgw_user_id",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"rgw_user_id"),t(e,15,0,null===n.allRgwUsers),t(e,17,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,19,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,21,0,n.allRgwUsers),t(e,23,0,n.nfsForm.showError("rgw_user_id",o["\u0275nov"](e.parent,6),"required"))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function kc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Cc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No clients available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Ic(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the cephx client --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Rc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Nc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Dc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","user_id"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CephFS User ID"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,kc)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Cc)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ic)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Rc)),o["\u0275did"](21,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Nc)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("user_id",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"user_id"),t(e,15,0,null===n.allCephxClients),t(e,17,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,19,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,21,0,n.allCephxClients),t(e,23,0,n.nfsForm.showError("user_id",o["\u0275nov"](e.parent,6),"required"))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function Ac(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Ec(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No CephFS filesystem available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Lc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the CephFS filesystem --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Pc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Mc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function qc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","fs_name"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CephFS Name"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,9).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),"change"===e&&(a=!1!==r.rgwUserIdChangeHandler()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ac)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ec)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Lc)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Pc)),o["\u0275did"](21,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Mc)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("fs_name",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"fs_name"),t(e,15,0,null===n.allFsNames),t(e,17,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,19,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,21,0,n.allFsNames),t(e,23,0,n.nfsForm.showError("fs_name",o["\u0275nov"](e.parent,6),"required"))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function jc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Fc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,1)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,1).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,1)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,1)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](1,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](3,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](5,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){t(e,3,0,"sec_label_xattr")},function(t,e){t(e,0,0,o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending)})}function zc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Gc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,4,"label",[["class","col-sm-3 control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Security Label"])),(t()(),o["\u0275and"](16777216,null,null,1,null,jc)),o["\u0275did"](7,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,11).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,11).onTouched()&&a),a},null,null)),o["\u0275did"](11,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](13,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](15,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](16,0,null,null,1,"label",[["for","security_label"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Enable security label"])),(t()(),o["\u0275eld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Fc)),o["\u0275did"](20,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,zc)),o["\u0275did"](22,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("security_label",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,7,0,n.nfsForm.getValue("security_label")),t(e,13,0,"security_label"),t(e,20,0,n.nfsForm.getValue("security_label")),t(e,22,0,n.nfsForm.showError("sec_label_xattr",o["\u0275nov"](e.parent,6),"required"))},function(t,e){t(e,10,0,o["\u0275nov"](e,15).ngClassUntouched,o["\u0275nov"](e,15).ngClassTouched,o["\u0275nov"](e,15).ngClassPristine,o["\u0275nov"](e,15).ngClassDirty,o["\u0275nov"](e,15).ngClassValid,o["\u0275nov"](e,15).ngClassInvalid,o["\u0275nov"](e,15).ngClassPending)})}function Yc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Hc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function Vc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["New directory will be created"]))],null,null)}function Bc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","path"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CephFS Path"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,16777216,null,null,6,"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]],[[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!==o["\u0275nov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,9)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==o["\u0275nov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==o["\u0275nov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==o["\u0275nov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==o["\u0275nov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.pathChangeHandler()&&a),"blur"===e&&(a=!1!==r.pathChangeHandler()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),o["\u0275did"](14,212992,null,0,zu,[Te.q,o.ElementRef,o.ViewContainerRef,o.Renderer2,Fu,Q.a,o.ChangeDetectorRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),(t()(),o["\u0275and"](16777216,null,null,1,null,Yc)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Hc)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Vc)),o["\u0275did"](20,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"path"),t(e,14,0,n.pathDataSource),t(e,16,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6),"pattern")),t(e,20,0,n.isNewDirectory&&!n.nfsForm.showError("path",o["\u0275nov"](e.parent,6)))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function Uc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Wc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function Kc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["New bucket will be created"]))],null,null)}function $c(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","path"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Path"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,16777216,null,null,6,"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]],[[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!==o["\u0275nov"](t,9)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,9).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,9)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,9)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,14).onInput(n)&&a),"keyup"===e&&(a=!1!==o["\u0275nov"](t,14).onChange(n)&&a),"click"===e&&(a=!1!==o["\u0275nov"](t,14).onFocus()&&a),"focus"===e&&(a=!1!==o["\u0275nov"](t,14).onFocus()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,14).onBlur()&&a),"keydown"===e&&(a=!1!==o["\u0275nov"](t,14).onKeydown(n)&&a),"typeaheadOnSelect"===e&&(a=!1!==r.bucketChangeHandler()&&a),"blur"===e&&(a=!1!==r.bucketChangeHandler()&&a),a},null,null)),o["\u0275did"](9,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](11,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](13,16384,null,0,Te.r,[[4,Te.q]],null,null),o["\u0275did"](14,212992,null,0,zu,[Te.q,o.ElementRef,o.ViewContainerRef,o.Renderer2,Fu,Q.a,o.ChangeDetectorRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),(t()(),o["\u0275and"](16777216,null,null,1,null,Uc)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Wc)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Kc)),o["\u0275did"](20,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,11,0,"path"),t(e,14,0,n.bucketDataSource),t(e,16,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6),"required")),t(e,18,0,n.nfsForm.showError("path",o["\u0275nov"](e.parent,6),"pattern")),t(e,20,0,n.isNewBucket&&!n.nfsForm.showError("path",o["\u0275nov"](e.parent,6)))},function(t,e){t(e,8,0,o["\u0275nov"](e,13).ngClassUntouched,o["\u0275nov"](e,13).ngClassTouched,o["\u0275nov"](e,13).ngClassPristine,o["\u0275nov"](e,13).ngClassDirty,o["\u0275nov"](e,13).ngClassValid,o["\u0275nov"](e,13).ngClassInvalid,o["\u0275nov"](e,13).ngClassPending)})}function Zc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Xc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,13,"label",[["class","col-sm-3 control-label"],["for","tag"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFS Tag"])),(t()(),o["\u0275eld"](4,0,null,null,10,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](5,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275eld"](6,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Alternative access for "])),(t()(),o["\u0275eld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFS v3"])),(t()(),o["\u0275ted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),o["\u0275eld"](11,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),o["\u0275eld"](13,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),o["\u0275eld"](15,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](16,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,17)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,17).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,17)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,17)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](17,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](19,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](21,16384,null,0,Te.r,[[4,Te.q]],null,null)],function(t,e){t(e,19,0,"tag")},function(t,e){t(e,16,0,o["\u0275nov"](e,21).ngClassUntouched,o["\u0275nov"](e,21).ngClassTouched,o["\u0275nov"](e,21).ngClassPristine,o["\u0275nov"](e,21).ngClassDirty,o["\u0275nov"](e,21).ngClassValid,o["\u0275nov"](e,21).ngClassInvalid,o["\u0275nov"](e,21).ngClassPending)})}function Jc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function Qc(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function tl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,29,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,15,"label",[["class","col-sm-3 control-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Pseudo"])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,11,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](8,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275eld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The position that this "])),(t()(),o["\u0275eld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFS v4"])),(t()(),o["\u0275ted"](-1,null,[" export occupies in the "])),(t()(),o["\u0275eld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Pseudo FS"])),(t()(),o["\u0275ted"](-1,null,[" (it must be unique)."])),(t()(),o["\u0275eld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),o["\u0275eld"](19,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](20,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,21)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,21).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,21)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,21)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](21,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](23,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](25,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Jc)),o["\u0275did"](27,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Qc)),o["\u0275did"](29,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.nfsForm.showError("pseudo",o["\u0275nov"](e.parent,6)));t(e,1,0,"form-group",a),t(e,23,0,"pseudo"),t(e,27,0,n.nfsForm.showError("pseudo",o["\u0275nov"](e.parent,6),"required")),t(e,29,0,n.nfsForm.showError("pseudo",o["\u0275nov"](e.parent,6),"pattern"))},function(t,e){t(e,20,0,o["\u0275nov"](e,25).ngClassUntouched,o["\u0275nov"](e,25).ngClassTouched,o["\u0275nov"](e,25).ngClassPristine,o["\u0275nov"](e,25).ngClassDirty,o["\u0275nov"](e,25).ngClassValid,o["\u0275nov"](e,25).ngClassInvalid,o["\u0275nov"](e,25).ngClassPending)})}function el(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function nl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No access type available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function al(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select the access type --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function rl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 il(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))})}function ol(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"span",[["class","text-warning"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-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()(),o["\u0275eld"](2,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" documentation"])),(t()(),o["\u0275ted"](-1,null,[" for details before enabling write access."]))],null,function(t,e){t(e,2,0,o["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function sl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function ul(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function cl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["-- No squash available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function ll(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](-1,null,["--Select what kind of user id squashing is performed --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function dl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 pl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function fl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Required field"]))],null,null)}function hl(t){return o["\u0275vid"](0,[o["\u0275pid"](0,i.TitleCasePipe,[]),o["\u0275pid"](0,go.a,[]),o["\u0275qud"](402653184,1,{nfsClients:0}),(t()(),o["\u0275eld"](3,0,null,null,194,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,193,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,6).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,6).onReset()&&a),a},null,null)),o["\u0275did"](5,16384,null,0,Te.D,[],null,null),o["\u0275did"](6,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](8,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](9,0,null,null,188,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),o["\u0275ted"](12,null,["","",""])),o["\u0275ppd"](13,1),o["\u0275ppd"](14,1),(t()(),o["\u0275eld"](15,0,null,null,173,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,fc)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](19,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](20,{"has-error":0}),(t()(),o["\u0275eld"](21,0,null,null,2,"label",[["class","col-sm-3 control-label"],["for","daemons"]],null,null,null,null,null)),(t()(),o["\u0275eld"](22,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Daemons"])),(t()(),o["\u0275eld"](24,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,hc)),o["\u0275did"](26,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](27,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](28,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),o["\u0275eld"](29,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a},Yu.b,Yu.a)),o["\u0275did"](30,638976,null,0,Hu.a,[_t.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),o["\u0275eld"](31,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(t()(),o["\u0275eld"](32,0,null,0,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Add daemon"])),(t()(),o["\u0275eld"](34,0,null,null,33,"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)),o["\u0275did"](35,212992,null,0,Te.m,[[3,Te.d],[8,null],[8,null]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.m]),o["\u0275did"](37,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](38,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](39,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](40,{"has-error":0}),(t()(),o["\u0275eld"](41,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","name"]],null,null,null,null,null)),(t()(),o["\u0275eld"](42,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Storage Backend"])),(t()(),o["\u0275eld"](44,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](45,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](46,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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,47).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,47).onTouched()&&a),"change"===e&&(a=!1!==r.fsalChangeHandler()&&a),a},null,null)),o["\u0275did"](47,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](49,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](51,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,gc)),o["\u0275did"](53,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,mc)),o["\u0275did"](55,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,bc)),o["\u0275did"](57,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,yc)),o["\u0275did"](59,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,vc)),o["\u0275did"](61,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Oc)),o["\u0275did"](63,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Dc)),o["\u0275did"](65,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,qc)),o["\u0275did"](67,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Gc)),o["\u0275did"](69,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Bc)),o["\u0275did"](71,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,$c)),o["\u0275did"](73,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](74,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](75,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](76,{"has-error":0}),(t()(),o["\u0275eld"](77,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","protocols"]],null,null,null,null,null)),(t()(),o["\u0275eld"](78,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFS Protocol"])),(t()(),o["\u0275eld"](80,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](81,0,null,null,20,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](82,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](83,0,null,null,5,"input",[["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,84).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,84).onTouched()&&a),a},null,null)),o["\u0275did"](84,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](86,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](88,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](89,0,null,null,1,"label",[["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFSv3"])),(t()(),o["\u0275eld"](91,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](92,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,93).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,93).onTouched()&&a),a},null,null)),o["\u0275did"](93,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](95,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](97,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](98,0,null,null,1,"label",[["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["NFSv4"])),(t()(),o["\u0275and"](16777216,null,null,1,null,Zc)),o["\u0275did"](101,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Xc)),o["\u0275did"](103,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,tl)),o["\u0275did"](105,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](106,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](107,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](108,{"has-error":0}),(t()(),o["\u0275eld"](109,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","access_type"]],null,null,null,null,null)),(t()(),o["\u0275eld"](110,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Access Type"])),(t()(),o["\u0275eld"](112,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](113,0,null,null,20,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](114,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,115).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,115).onTouched()&&a),"change"===e&&(a=!1!==r.accessTypeChangeHandler()&&a),a},null,null)),o["\u0275did"](115,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](117,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](119,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,el)),o["\u0275did"](121,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,nl)),o["\u0275did"](123,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,al)),o["\u0275did"](125,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,rl)),o["\u0275did"](127,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,il)),o["\u0275did"](129,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ol)),o["\u0275did"](131,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,sl)),o["\u0275did"](133,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](134,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](135,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](136,{"has-error":0}),(t()(),o["\u0275eld"](137,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","squash"]],null,null,null,null,null)),(t()(),o["\u0275eld"](138,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Squash"])),(t()(),o["\u0275eld"](140,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](141,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](142,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,143).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,143).onTouched()&&a),a},null,null)),o["\u0275did"](143,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](145,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](147,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,ul)),o["\u0275did"](149,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,cl)),o["\u0275did"](151,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ll)),o["\u0275did"](153,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,dl)),o["\u0275did"](155,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,pl)),o["\u0275did"](157,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](158,0,null,null,28,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](159,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](160,{"has-error":0}),(t()(),o["\u0275eld"](161,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","transports"]],null,null,null,null,null)),(t()(),o["\u0275eld"](162,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Transport Protocol"])),(t()(),o["\u0275eld"](164,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](165,0,null,null,21,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](166,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](167,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,168).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,168).onTouched()&&a),a},null,null)),o["\u0275did"](168,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](170,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](172,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](173,0,null,null,1,"label",[["for","transportUDP"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["UDP"])),(t()(),o["\u0275eld"](175,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](176,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,177).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,177).onTouched()&&a),a},null,null)),o["\u0275did"](177,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](179,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](181,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](182,0,null,null,1,"label",[["for","transportTCP"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["TCP"])),(t()(),o["\u0275and"](16777216,null,null,1,null,fl)),o["\u0275did"](185,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](186,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](187,0,null,null,1,"cd-nfs-form-client",[],null,null,null,tc,Uu)),o["\u0275did"](188,49152,[[1,4],["nfsClients",4]],0,Bu,[fu,_t.a],{form:[0,"form"]},null),(t()(),o["\u0275eld"](189,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](190,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275eld"](191,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a},Wa.b,Wa.a)),o["\u0275did"](192,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](193,0,["","",""])),o["\u0275ppd"](194,1),o["\u0275ppd"](195,1),(t()(),o["\u0275eld"](196,0,null,null,1,"cd-back-button",[],null,null,null,$a.b,$a.a)),o["\u0275did"](197,49152,null,0,Za.a,[i.Location,Kn.b],null,null)],function(t,e){var n=e.component;t(e,6,0,n.nfsForm),t(e,17,0,!n.isDefaultCluster);var a=t(e,20,0,n.nfsForm.showError("daemons",o["\u0275nov"](e,6)));t(e,19,0,"form-group",a),t(e,26,0,n.nfsForm.getValue("daemons")),t(e,30,0,"btn btn-default pull-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages),t(e,35,0,"fsal");var r=t(e,40,0,n.nfsForm.showError("name",o["\u0275nov"](e,6)));t(e,39,0,"form-group",r),t(e,49,0,"name"),t(e,53,0,null===n.allFsals),t(e,55,0,null!==n.allFsals&&0===n.allFsals.length),t(e,57,0,null!==n.allFsals&&n.allFsals.length>0),t(e,59,0,n.allFsals),t(e,61,0,n.nfsForm.showError("name",o["\u0275nov"](e,6),"required")),t(e,63,0,"RGW"===n.nfsForm.getValue("name")),t(e,65,0,"CEPH"===n.nfsForm.getValue("name")),t(e,67,0,"CEPH"===n.nfsForm.getValue("name")),t(e,69,0,"CEPH"===n.nfsForm.getValue("name")),t(e,71,0,"CEPH"===n.nfsForm.getValue("name")),t(e,73,0,"RGW"===n.nfsForm.getValue("name"));var i=t(e,76,0,n.nfsForm.showError("protocolNfsv3",o["\u0275nov"](e,6))||n.nfsForm.showError("protocolNfsv4",o["\u0275nov"](e,6)));t(e,75,0,"form-group",i),t(e,86,0,"protocolNfsv3"),t(e,95,0,"protocolNfsv4"),t(e,101,0,n.nfsForm.showError("protocolNfsv3",o["\u0275nov"](e,6),"required")||n.nfsForm.showError("protocolNfsv4",o["\u0275nov"](e,6),"required")),t(e,103,0,n.nfsForm.getValue("protocolNfsv3")),t(e,105,0,n.nfsForm.getValue("protocolNfsv4"));var s=t(e,108,0,n.nfsForm.showError("access_type",o["\u0275nov"](e,6)));t(e,107,0,"form-group",s),t(e,117,0,"access_type"),t(e,121,0,null===n.nfsAccessType),t(e,123,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,125,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,127,0,n.nfsAccessType),t(e,129,0,n.nfsForm.getValue("access_type")),t(e,131,0,"RW"===n.nfsForm.getValue("access_type")&&"RGW"===n.nfsForm.getValue("name")),t(e,133,0,n.nfsForm.showError("access_type",o["\u0275nov"](e,6),"required"));var u=t(e,136,0,n.nfsForm.showError("squash",o["\u0275nov"](e,6)));t(e,135,0,"form-group",u),t(e,145,0,"squash"),t(e,149,0,null===n.nfsSquash),t(e,151,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,153,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,155,0,n.nfsSquash),t(e,157,0,n.nfsForm.showError("squash",o["\u0275nov"](e,6),"required"));var c=t(e,160,0,n.nfsForm.showError("transportUDP",o["\u0275nov"](e,6))||n.nfsForm.showError("transportTCP",o["\u0275nov"](e,6)));t(e,159,0,"form-group",c),t(e,170,0,"transportUDP"),t(e,179,0,"transportTCP"),t(e,185,0,n.nfsForm.showError("transportUDP",o["\u0275nov"](e,6),"required")||n.nfsForm.showError("transportTCP",o["\u0275nov"](e,6),"required")),t(e,188,0,n.nfsForm),t(e,192,0,o["\u0275nov"](e,6),"button")},function(t,e){var n=e.component;t(e,4,0,o["\u0275nov"](e,8).ngClassUntouched,o["\u0275nov"](e,8).ngClassTouched,o["\u0275nov"](e,8).ngClassPristine,o["\u0275nov"](e,8).ngClassDirty,o["\u0275nov"](e,8).ngClassValid,o["\u0275nov"](e,8).ngClassInvalid,o["\u0275nov"](e,8).ngClassPending);var a=o["\u0275unv"](e,12,0,t(e,13,0,o["\u0275nov"](e,0),n.action)),r=o["\u0275unv"](e,12,1,t(e,14,0,o["\u0275nov"](e,1),n.resource));t(e,12,0,a,r),t(e,34,0,o["\u0275nov"](e,37).ngClassUntouched,o["\u0275nov"](e,37).ngClassTouched,o["\u0275nov"](e,37).ngClassPristine,o["\u0275nov"](e,37).ngClassDirty,o["\u0275nov"](e,37).ngClassValid,o["\u0275nov"](e,37).ngClassInvalid,o["\u0275nov"](e,37).ngClassPending),t(e,46,0,o["\u0275nov"](e,51).ngClassUntouched,o["\u0275nov"](e,51).ngClassTouched,o["\u0275nov"](e,51).ngClassPristine,o["\u0275nov"](e,51).ngClassDirty,o["\u0275nov"](e,51).ngClassValid,o["\u0275nov"](e,51).ngClassInvalid,o["\u0275nov"](e,51).ngClassPending),t(e,83,0,o["\u0275nov"](e,88).ngClassUntouched,o["\u0275nov"](e,88).ngClassTouched,o["\u0275nov"](e,88).ngClassPristine,o["\u0275nov"](e,88).ngClassDirty,o["\u0275nov"](e,88).ngClassValid,o["\u0275nov"](e,88).ngClassInvalid,o["\u0275nov"](e,88).ngClassPending),t(e,92,0,o["\u0275nov"](e,97).ngClassUntouched,o["\u0275nov"](e,97).ngClassTouched,o["\u0275nov"](e,97).ngClassPristine,o["\u0275nov"](e,97).ngClassDirty,o["\u0275nov"](e,97).ngClassValid,o["\u0275nov"](e,97).ngClassInvalid,o["\u0275nov"](e,97).ngClassPending),t(e,114,0,o["\u0275nov"](e,119).ngClassUntouched,o["\u0275nov"](e,119).ngClassTouched,o["\u0275nov"](e,119).ngClassPristine,o["\u0275nov"](e,119).ngClassDirty,o["\u0275nov"](e,119).ngClassValid,o["\u0275nov"](e,119).ngClassInvalid,o["\u0275nov"](e,119).ngClassPending),t(e,142,0,o["\u0275nov"](e,147).ngClassUntouched,o["\u0275nov"](e,147).ngClassTouched,o["\u0275nov"](e,147).ngClassPristine,o["\u0275nov"](e,147).ngClassDirty,o["\u0275nov"](e,147).ngClassValid,o["\u0275nov"](e,147).ngClassInvalid,o["\u0275nov"](e,147).ngClassPending),t(e,167,0,o["\u0275nov"](e,172).ngClassUntouched,o["\u0275nov"](e,172).ngClassTouched,o["\u0275nov"](e,172).ngClassPristine,o["\u0275nov"](e,172).ngClassDirty,o["\u0275nov"](e,172).ngClassValid,o["\u0275nov"](e,172).ngClassInvalid,o["\u0275nov"](e,172).ngClassPending),t(e,176,0,o["\u0275nov"](e,181).ngClassUntouched,o["\u0275nov"](e,181).ngClassTouched,o["\u0275nov"](e,181).ngClassPristine,o["\u0275nov"](e,181).ngClassDirty,o["\u0275nov"](e,181).ngClassValid,o["\u0275nov"](e,181).ngClassInvalid,o["\u0275nov"](e,181).ngClassPending);var i=o["\u0275unv"](e,193,0,t(e,194,0,o["\u0275nov"](e,0),n.action)),s=o["\u0275unv"](e,193,1,t(e,195,0,o["\u0275nov"](e,1),n.resource));t(e,193,0,i,s)})}function gl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,hl,sc)),o["\u0275did"](1,114688,null,0,oc,[d.a,fu,tt.a,tt.l,ac.a,sa.a,Me.a,Fe.a,gu.a,o.ChangeDetectorRef,_t.a,Kn.b],null,null)],function(t,e){t(e,1,0)},null)}var ml=o["\u0275ccf"]("cd-nfs-form",oc,gl,{},{},[]),bl=function(){return function(){this.logoutUrl=window.location.origin+"/auth/saml2/slo"}}(),yl=o["\u0275crt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function vl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,16,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,15,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),o["\u0275eld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Return to "])),(t()(),o["\u0275eld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Login Page"])),(t()(),o["\u0275ted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),o["\u0275eld"](9,0,null,null,0,"img",[["class","img-responsive center-block img-rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[' "'])),(t()(),o["\u0275eld"](12,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Nautilus Octopus"])),(t()(),o["\u0275ted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),o["\u0275eld"](15,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CC BY 2.0"]))],null,function(t,e){t(e,6,0,e.component.logoutUrl)})}function xl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,vl,yl)),o["\u0275did"](1,49152,null,0,bl,[],null,null)],null,null)}var _l,Tl=o["\u0275ccf"]("cd-sso-not-found",bl,xl,{},{},[]),wl=n("lHUG"),Sl=function(){function t(t,e){this.http=t,this.localeId=e}return t.prototype.getLocale=function(){return this.localeId||"en-US"},t.prototype.setLocale=function(t){document.cookie="cd-lang="+t},t.prototype.getLanguages=function(){return this.http.get("ui-api/langs")},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c),o.inject(o.LOCALE_ID))},token:t,providedIn:"root"}),t}();!function(t){t.cs="\u010ce\u0161tina",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Espa\xf1ol",t["fr-FR"]="Fran\xe7ais",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="\u65e5\u672c\u8a9e",t["ko-KR"]="\ud55c\uad6d\uc5b4",t["pl-PL"]="Polski",t["pt-BR"]="Portugu\xeas",t["zh-CN"]="\u4e2d\u6587 (\u7b80\u4f53)",t["zh-TW"]="\u4e2d\u6587 (\u7e41\u9ad4\uff09"}(_l||(_l={}));var Ol={cs:wl.a,de:wl.b,es:wl.e,fr:wl.g,id:wl.m,it:wl.x,ja:wl.y,ko:wl.z,pl:wl.B,pt:wl.C,zh:wl.G},kl=function(){function t(t,e){this.localeService=t,this.languageService=e,this.isDropdown=!0,this.supportedLanguages=_l}return t.prototype.ngOnInit=function(){var t=this;this.selectedLanguage=this.languageService.getLocale(),this.defineUsedLanguage(),this.languageService.getLanguages().subscribe(function(e){t.supportedLanguages=pt.pick(t.supportedLanguages,e)})},t.prototype.defineUsedLanguage=function(){var t=this.selectedLanguage.slice(0,2);t in Ol&&(Object(wl.c)(t,Ol[t]),this.localeService.use(t))},t.prototype.reloadWindow=function(){window.location.reload()},t.prototype.changeLanguage=function(t){this.languageService.setLocale(t),this.reloadWindow()},t}(),Cl=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Il(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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()(),o["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.value)})}function Rl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,Il)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.KeyValuePipe,[o.KeyValueDiffers])],function(t,e){var n=e.component;t(e,2,0,o["\u0275unv"](e,2,0,o["\u0275nov"](e,3).transform(n.supportedLanguages)))},null)}function Nl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,8,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),(t()(),o["\u0275eld"](3,0,null,null,3,"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"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,4).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,4).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,4).onEsc()&&a),a},null,null)),o["\u0275did"](4,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275ted"](5,null,[" "," "])),(t()(),o["\u0275eld"](6,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Rl)),o["\u0275did"](8,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0)},function(t,e){var n=e.component;t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,3,0,!0,o["\u0275nov"](e,4).isDisabled,o["\u0275nov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])})}function Dl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Al(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"select",[["class","form-control"]],[[2,"ng-untouched",null],[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,"change"],[null,"ngModelChange"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,1).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](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)),o["\u0275did"](1,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](3,671744,null,0,Te.u,[[8,null],[8,null],[8,null],[6,Te.p]],{model:[0,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](5,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,2,null,Dl)),o["\u0275did"](7,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.KeyValuePipe,[o.KeyValueDiffers])],function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,7,0,o["\u0275unv"](e,7,0,o["\u0275nov"](e,8).transform(n.supportedLanguages)))},function(t,e){t(e,0,0,o["\u0275nov"](e,5).ngClassUntouched,o["\u0275nov"](e,5).ngClassTouched,o["\u0275nov"](e,5).ngClassPristine,o["\u0275nov"](e,5).ngClassDirty,o["\u0275nov"](e,5).ngClassValid,o["\u0275nov"](e,5).ngClassInvalid,o["\u0275nov"](e,5).ngClassPending)})}function El(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Nl)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Al)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 Ll=n("IZUe"),Pl=n("D4zM"),Ml=n("DSvg"),ql=function(){return function(){}}(),jl=function(){function t(t,e,n,a){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.router=a,this.model=new ql,this.isLoginActive=!1}return t.prototype.ngOnInit=function(){var t=this;if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{for(var e=this.bsModalService.getModalsCount(),n=1;n<=e;n++)this.bsModalService.hide(n);var a=null;if(-1!==window.location.hash.indexOf("access_token=")){a=window.location.hash.split("access_token=")[1];var r=window.location.toString();window.history.replaceState({},document.title,r.split("?")[0])}this.authService.check(a).subscribe(function(e){e.login_url?"#/login"===e.login_url?t.isLoginActive=!0:window.location.replace(e.login_url):(t.authStorageService.set(e.username,a,e.permissions),t.router.navigate([""]))})}},t.prototype.login=function(){var t=this;this.authService.login(this.model).then(function(){t.router.navigate([""])})},t}(),Fl=o["\u0275crt"]({encapsulation:0,styles:[[".login{height:100%}  .login .row{color:#fff;background-color:#374249}  .login h1{margin-top:0;margin-bottom:30px}  .login .btn-password,   .login .form-control{color:#fff;background-color:#555}  .login .btn-password:focus{outline-color:#2b99a8}  .login .checkbox-primary input[type=checkbox]:checked+label::before,   .login .checkbox-primary input[type=radio]:checked+label::before{background-color:#2b99a8;border-color:#2b99a8}"]],data:{}});function zl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Username is required"]))],null,null)}function Gl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"div",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Password is required"]))],null,null)}function Yl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,46,"div",[["class","login"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,45,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"div",[["class","col-sm-6 hidden-xs"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,0,"img",[["alt","Ceph"],["class","pull-right"],["src","assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,42,"div",[["class","col-xs-10 col-sm-4 col-lg-3 col-xs-offset-1 col-sm-offset-0 col-md-offset-0 col-lg-offset-0"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Welcome to Ceph!"])),(t()(),o["\u0275eld"](7,0,null,null,39,"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!==o["\u0275nov"](t,9).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,9).onReset()&&a),"ngSubmit"===e&&(a=!1!==r.login()&&a),a},null,null)),o["\u0275did"](8,16384,null,0,Te.D,[],null,null),o["\u0275did"](9,4210688,[["loginForm",4]],0,Te.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),o["\u0275prd"](2048,null,Te.d,null,[Te.t]),o["\u0275did"](11,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](12,0,null,null,2,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,1,"cd-language-selector",[],null,null,null,El,Cl)),o["\u0275did"](14,114688,null,0,kl,[Cr.f,Sl],{isDropdown:[0,"isDropdown"]},null),(t()(),o["\u0275eld"](15,0,null,null,13,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),o["\u0275did"](16,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](17,{"has-error":0}),(t()(),o["\u0275eld"](18,0,null,null,8,"input",[["autofocus",""],["class","form-control"],["name","username"],["placeholder","Enter your username..."],["required",""],["type","text"]],[[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]],[[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!==o["\u0275nov"](t,19)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,19).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,19)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.username=n)&&a),a},null,null)),o["\u0275did"](19,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](20,16384,null,0,Te.y,[],{required:[0,"required"]},null),o["\u0275prd"](1024,null,Te.o,function(t){return[t]},[Te.y]),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](23,671744,[["username",4]],0,Te.u,[[2,Te.d],[6,Te.o],[8,null],[6,Te.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](25,16384,null,0,Te.r,[[4,Te.q]],null,null),o["\u0275did"](26,4210688,null,0,Ll.a,[o.ElementRef],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,zl)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](29,0,null,null,16,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),o["\u0275did"](30,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](31,{"has-error":0}),(t()(),o["\u0275eld"](32,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](33,0,null,null,7,"input",[["class","form-control"],["id","password"],["name","password"],["placeholder","Enter your password..."],["required",""],["type","password"]],[[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]],[[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!==o["\u0275nov"](t,34)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,34).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,34)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,34)._compositionEnd(n.target.value)&&a),"ngModelChange"===e&&(a=!1!==(r.model.password=n)&&a),a},null,null)),o["\u0275did"](34,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](35,16384,null,0,Te.y,[],{required:[0,"required"]},null),o["\u0275prd"](1024,null,Te.o,function(t){return[t]},[Te.y]),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](38,671744,[["password",4]],0,Te.u,[[2,Te.d],[6,Te.o],[8,null],[6,Te.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),o["\u0275prd"](2048,null,Te.q,null,[Te.u]),o["\u0275did"](40,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](41,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](42,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default btn-password"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,43).onClick()&&a),a},null,null)),o["\u0275did"](43,81920,null,0,Pl.a,[o.ElementRef,o.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Gl)),o["\u0275did"](45,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](46,0,null,null,0,"input",[["class","btn btn-primary btn-block"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null))],function(t,e){var n=e.component;t(e,14,0,!1);var a=t(e,17,0,(o["\u0275nov"](e,9).submitted||o["\u0275nov"](e,23).dirty)&&o["\u0275nov"](e,23).invalid);t(e,16,0,"form-group has-feedback",a),t(e,20,0,""),t(e,23,0,"username",n.model.username),t(e,28,0,(o["\u0275nov"](e,9).submitted||o["\u0275nov"](e,23).dirty)&&o["\u0275nov"](e,23).invalid);var r=t(e,31,0,(o["\u0275nov"](e,9).submitted||o["\u0275nov"](e,38).dirty)&&o["\u0275nov"](e,38).invalid);t(e,30,0,"form-group has-feedback",r),t(e,35,0,""),t(e,38,0,"password",n.model.password),t(e,43,0,"password"),t(e,45,0,(o["\u0275nov"](e,9).submitted||o["\u0275nov"](e,38).dirty)&&o["\u0275nov"](e,38).invalid)},function(t,e){t(e,7,0,o["\u0275nov"](e,11).ngClassUntouched,o["\u0275nov"](e,11).ngClassTouched,o["\u0275nov"](e,11).ngClassPristine,o["\u0275nov"](e,11).ngClassDirty,o["\u0275nov"](e,11).ngClassValid,o["\u0275nov"](e,11).ngClassInvalid,o["\u0275nov"](e,11).ngClassPending),t(e,18,0,o["\u0275nov"](e,20).required?"":null,o["\u0275nov"](e,25).ngClassUntouched,o["\u0275nov"](e,25).ngClassTouched,o["\u0275nov"](e,25).ngClassPristine,o["\u0275nov"](e,25).ngClassDirty,o["\u0275nov"](e,25).ngClassValid,o["\u0275nov"](e,25).ngClassInvalid,o["\u0275nov"](e,25).ngClassPending),t(e,33,0,o["\u0275nov"](e,35).required?"":null,o["\u0275nov"](e,40).ngClassUntouched,o["\u0275nov"](e,40).ngClassTouched,o["\u0275nov"](e,40).ngClassPristine,o["\u0275nov"](e,40).ngClassDirty,o["\u0275nov"](e,40).ngClassValid,o["\u0275nov"](e,40).ngClassInvalid,o["\u0275nov"](e,40).ngClassPending),t(e,46,0,o["\u0275nov"](e,9).invalid)})}function Hl(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Yl)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.isLoginActive)},null)}function Vl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-login",[],null,null,null,Hl,Fl)),o["\u0275did"](1,114688,null,0,jl,[Ml.a,d.a,da.b,tt.l],null,null)],function(t,e){t(e,1,0)},null)}var Bl=o["\u0275ccf"]("cd-login",jl,Vl,{},{},[]),Ul=function(){return function(){}}(),Wl=o["\u0275crt"]({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 Kl(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Forbidden"])),(t()(),o["\u0275eld"](4,0,null,null,0,"i",[["class","fa fa-lock text-danger"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Sorry, you are not allowed to see what you were looking for."]))],null,null)}function $l(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,Kl,Wl)),o["\u0275did"](1,49152,null,0,Ul,[],null,null)],null,null)}var Zl=o["\u0275ccf"]("cd-forbidden",Ul,$l,{},{},[]),Xl=function(){return function(){}}(),Jl=o["\u0275crt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Ql(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,10,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Sorry, we could not find what you were looking for"])),(t()(),o["\u0275eld"](4,0,null,null,0,"img",[["class","img-responsive center-block img-rounded"],["src","assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[' "'])),(t()(),o["\u0275eld"](7,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Nautilus Octopus"])),(t()(),o["\u0275ted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),o["\u0275eld"](10,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["CC BY 2.0"]))],null,null)}function td(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-not-found",[],null,null,null,Ql,Jl)),o["\u0275did"](1,49152,null,0,Xl,[],null,null)],null,null)}var ed=o["\u0275ccf"]("cd-not-found",Xl,td,{},{},[]),nd=n("iutN"),ad=n("ES0t"),rd=n("MdoF"),id=n("Xg1U"),od=n("z5nN"),sd=n("EEJc"),ud=n("PEr+"),cd=n("a40w"),ld=n("SjWX"),dd=n("Mxhz"),pd=function(){function t(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}return t.prototype.ngOnInit=function(){var t=this;this.copyright="Copyright(c) 2019 Ceph contributors.",this.projectConstants=Kn.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(function(e){if(e){var n=e.version.replace("ceph version ","").split(" ");t.hostAddr=e.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),t.versionNumber=n[0],t.versionHash=n[1],t.versionName=n.slice(2,n.length).join(" ")}})},t.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},t.prototype.setVariables=function(){var t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(function(e){t.role=e.roles});var e=Object(ld.detect)();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},t}(),fd=o["\u0275crt"]({encapsulation:0,styles:[[".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-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.modal-footer[_ngcontent-%COMP%]{border-top:none;padding:15px 80px 35px}h2[_ngcontent-%COMP%]{font-size:3em}.ceph-logo[_ngcontent-%COMP%]{width:10%}.list-unstyled[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{margin-top:5px}.modal-body[_ngcontent-%COMP%]{margin-top:0;padding-top:0}.modal-body[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{margin-top:0}"]],data:{}});function hd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-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()(),o["\u0275eld"](2,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xd7"])),(t()(),o["\u0275eld"](4,0,null,null,45,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,2,"h2",[],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),o["\u0275ted"](7,null,[" "," "])),(t()(),o["\u0275eld"](8,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](10,null,["",""])),(t()(),o["\u0275eld"](11,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Version"])),(t()(),o["\u0275eld"](14,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275ted"](15,null,[" "," "," "])),(t()(),o["\u0275eld"](16,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275ted"](17,null,[" "," "])),(t()(),o["\u0275eld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,30,"ul",[["class","list-unstyled"]],null,null,null,null,null)),(t()(),o["\u0275eld"](20,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](21,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Ceph Manager"])),(t()(),o["\u0275eld"](23,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](24,null,["",""])),(t()(),o["\u0275eld"](25,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](26,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["User"])),(t()(),o["\u0275eld"](28,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](29,null,["",""])),(t()(),o["\u0275eld"](30,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](31,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["User Role"])),(t()(),o["\u0275eld"](33,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](34,null,["",""])),(t()(),o["\u0275eld"](35,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](36,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Browser"])),(t()(),o["\u0275eld"](38,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](39,null,["",""])),(t()(),o["\u0275eld"](40,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](41,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Browser Version"])),(t()(),o["\u0275eld"](43,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](44,null,["",""])),(t()(),o["\u0275eld"](45,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](46,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Browser OS"])),(t()(),o["\u0275eld"](48,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),o["\u0275ted"](49,null,["",""])),(t()(),o["\u0275eld"](50,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](51,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),o["\u0275ted"](52,null,[" "," "," "]))],null,function(t,e){var n=e.component;t(e,6,0,o["\u0275inlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,7,0,n.projectConstants.organization),t(e,10,0,n.projectConstants.projectName),t(e,15,0,n.versionNumber,n.versionHash),t(e,17,0,n.versionName),t(e,24,0,n.hostAddr),t(e,29,0,n.modalVariables.user),t(e,34,0,n.modalVariables.role),t(e,39,0,n.modalVariables.browserName),t(e,44,0,n.modalVariables.browserVersion),t(e,49,0,n.modalVariables.browserOS),t(e,52,0,n.copyright,n.projectConstants.license)})}function gd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-about",[],null,null,null,hd,fd)),o["\u0275did"](1,245760,null,0,pd,[da.a,Me.a,dd.a,d.a],null,null)],function(t,e){t(e,1,0)},null)}var md=o["\u0275ccf"]("cd-about",pd,gd,{},{},[]),bd=n("atuK"),yd=o["\u0275crt"]({encapsulation:2,styles:[],data:{}});function vd(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](0,null,null,0))],null,null)}function xd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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 _d(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit)})}function Td(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](0,null,null,0))],null,null)}function wd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[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()(),o["\u0275eld"](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()(),o["\u0275and"](16777216,null,null,2,null,Td)),o["\u0275did"](3,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),o["\u0275pod"](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||o["\u0275nov"](e.parent.parent.parent,5))},function(t,e){t(e,0,0,e.component.isActive(e.parent.context.$implicit))})}function Sd(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,_d)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,wd)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](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 Od(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Sd)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.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 kd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit)})}function Cd(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](0,null,null,0))],null,null)}function Id(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[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()(),o["\u0275and"](16777216,null,null,2,null,Cd)),o["\u0275did"](2,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),o["\u0275pod"](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||o["\u0275nov"](e.parent.parent.parent,5))},function(t,e){t(e,0,0,e.component.isActive(e.parent.context.$implicit))})}function Rd(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,kd)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Id)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](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 Nd(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Rd)),o["\u0275did"](1,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.matches)},null)}function Dd(t){return o["\u0275vid"](0,[o["\u0275qud"](671088640,1,{ulElement:0}),o["\u0275qud"](671088640,2,{liElements:1}),(t()(),o["\u0275and"](16777216,null,null,2,null,vd)),o["\u0275did"](3,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),o["\u0275pod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),o["\u0275and"](0,[["bsItemTemplate",2]],null,0,null,xd)),(t()(),o["\u0275and"](0,[["bs3Template",2]],null,0,null,Od)),(t()(),o["\u0275and"](0,[["bs4Template",2]],null,0,null,Nd))],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||o["\u0275nov"](e,n.isBs4?7:6))},null)}function Ad(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"overflow-y",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!==o["\u0275nov"](t,1).focusLost()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,1).focusLost()&&a),a},Dd,yd)),o["\u0275did"](1,49152,null,0,ju,[o.ElementRef,o.Renderer2],null,null)],null,function(t,e){t(e,0,0,o["\u0275nov"](e,1).isBs4,o["\u0275nov"](e,1).isBs4&&o["\u0275nov"](e,1).needScrollbar?"scroll":"visible",o["\u0275nov"](e,1).isBs4&&o["\u0275nov"](e,1).needScrollbar?o["\u0275nov"](e,1).guiHeight:"auto",o["\u0275nov"](e,1).typeaheadScrollable?"hidden":"visible",o["\u0275nov"](e,1).dropup)})}var Ed=o["\u0275ccf"]("typeahead-container",ju,Ad,{},{},[]),Ld=n("ajRT"),Pd=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Md(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](-1,null,["Deep "]))],null,null)}function qd(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](-1,null,["deep "]))],null,null)}function jd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,10,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,9,"p",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["You are about to apply a "])),(t()(),o["\u0275eld"](3,0,null,null,3,null,null,null,null,null,null,null)),o["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,qd)),o["\u0275did"](6,278528,null,0,i.NgSwitchCase,[o.ViewContainerRef,o.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),o["\u0275ted"](-1,null,["scrub to the OSD "])),(t()(),o["\u0275eld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](9,null,["",""])),(t()(),o["\u0275ted"](-1,null,["."]))],function(t,e){t(e,4,0,e.component.deep),t(e,6,0,"1")},function(t,e){t(e,9,0,e.component.selected[0].id)})}function Fd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,23,"cd-modal",[],null,null,null,sd.c,sd.b)),o["\u0275did"](1,49152,null,0,Ld.a,[],{modalRef:[0,"modalRef"]},null),(t()(),o["\u0275eld"](2,0,null,0,6,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["OSDs "])),(t()(),o["\u0275eld"](4,0,null,null,3,null,null,null,null,null,null,null)),o["\u0275did"](5,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Md)),o["\u0275did"](7,278528,null,0,i.NgSwitchCase,[o.ViewContainerRef,o.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),o["\u0275ted"](-1,null,["Scrub"])),(t()(),o["\u0275eld"](9,0,null,1,14,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,13,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,12).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,12).onReset()&&a),a},null,null)),o["\u0275did"](11,16384,null,0,Te.D,[],null,null),o["\u0275did"](12,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](14,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](15,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,jd)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,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},Wa.b,Wa.a)),o["\u0275did"](20,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](-1,0,["Submit"])),(t()(),o["\u0275eld"](22,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$a.b,$a.a)),o["\u0275did"](23,49152,null,0,Za.a,[i.Location,Kn.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,5,0,n.deep),t(e,7,0,"1"),t(e,12,0,n.scrubForm),t(e,17,0,1===n.selected.length),t(e,20,0,n.scrubForm),t(e,23,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,10,0,o["\u0275nov"](e,14).ngClassUntouched,o["\u0275nov"](e,14).ngClassTouched,o["\u0275nov"](e,14).ngClassPristine,o["\u0275nov"](e,14).ngClassDirty,o["\u0275nov"](e,14).ngClassValid,o["\u0275nov"](e,14).ngClassInvalid,o["\u0275nov"](e,14).ngClassPending)})}function zd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,Fd,Pd)),o["\u0275did"](1,114688,null,0,ca,[da.a,An,Zn.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var Gd=o["\u0275ccf"]("cd-osd-scrub-modal",ca,zd,{},{},[]),Yd=o["\u0275crt"]({encapsulation:0,styles:[[".osd-modal[_ngcontent-%COMP%]   .oa-hr-small[_ngcontent-%COMP%]{margin:5px}"]],data:{}});function Hd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"hr",[["class","oa-hr-small"]],null,null,null,null,null))],null,null)}function Vd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,9,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0]],[[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)),(t()(),o["\u0275eld"](2,0,null,null,5,"label",[["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](4,null,["",""])),(t()(),o["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,["",""])),(t()(),o["\u0275and"](16777216,null,null,1,null,Hd)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,9,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),t(e,2,0,e.context.$implicit.code),t(e,4,0,e.context.$implicit.name),t(e,7,0,e.context.$implicit.description)})}function Bd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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},Wa.b,Wa.a)),o["\u0275did"](1,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](-1,0,["Submit"]))],function(t,e){t(e,1,0,e.component.osdFlagsForm)},null)}function Ud(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,18,"cd-modal",[],null,null,null,sd.c,sd.b)),o["\u0275did"](1,49152,null,0,Ld.a,[],{modalRef:[0,"modalRef"]},null),(t()(),o["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),o["\u0275eld"](4,0,null,1,14,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,13,"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!==o["\u0275nov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,7).onReset()&&a),a},null,null)),o["\u0275did"](6,16384,null,0,Te.D,[],null,null),o["\u0275did"](7,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](9,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](10,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Vd)),o["\u0275did"](12,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275eld"](13,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Bd)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](17,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$a.b,$a.a)),o["\u0275did"](18,49152,null,0,Za.a,[i.Location,Kn.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.osdFlagsForm),t(e,12,0,n.flags),t(e,16,0,n.permissions.osd.update),t(e,18,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,5,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending)})}function Wd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,Ud,Yd)),o["\u0275did"](1,114688,null,0,Xn,[da.a,d.a,An,Zn.a,_t.a],null,null)],function(t,e){t(e,1,0)},null)}var Kd=o["\u0275ccf"]("cd-osd-flags-modal",Xn,Wd,{},{},[]),$d=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Zd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 Xd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Jd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](1,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](2,0,["",""]))],null,function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)})}function Qd(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function tp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function ep(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)})}function np(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 ap(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 rp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,5,"label",[["class","control-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](4,null,[""," "])),(t()(),o["\u0275and"](16777216,null,null,1,null,Jd)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Qd)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](9,0,null,null,15,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,11)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,11).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,11)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,11)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,12).onChange(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,12).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,12).onTouched()&&a),a},null,null)),o["\u0275did"](11,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](12,16384,null,0,Te.C,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Te.C]),o["\u0275did"](14,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](16,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,tp)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ep)),o["\u0275did"](20,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,np)),o["\u0275did"](22,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,ap)),o["\u0275did"](24,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,o["\u0275nov"](e.parent,7)));t(e,1,0,"form-group",a),t(e,6,0,e.context.$implicit.value.desc),t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority")),t(e,14,0,e.context.$implicit.key),t(e,18,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,o["\u0275nov"](e.parent,7),"required")),t(e,20,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,o["\u0275nov"](e.parent,7),"pattern")),t(e,22,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,o["\u0275nov"](e.parent,7),"max")),t(e,24,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,o["\u0275nov"](e.parent,7),"min"))},function(t,e){var n=e.component;t(e,3,0,e.context.$implicit.key),t(e,4,0,e.context.$implicit.value.text),t(e,10,0,e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),o["\u0275nov"](e,16).ngClassUntouched,o["\u0275nov"](e,16).ngClassTouched,o["\u0275nov"](e,16).ngClassPristine,o["\u0275nov"](e,16).ngClassDirty,o["\u0275nov"](e,16).ngClassValid,o["\u0275nov"](e,16).ngClassInvalid,o["\u0275nov"](e,16).ngClassPending)})}function ip(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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},Wa.b,Wa.a)),o["\u0275did"](1,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](-1,0,["Submit"]))],function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)},null)}function op(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,48,"cd-modal",[],null,null,null,sd.c,sd.b)),o["\u0275did"](1,49152,null,0,Ld.a,[],{modalRef:[0,"modalRef"]},null),(t()(),o["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["OSD Recovery Priority"])),(t()(),o["\u0275eld"](4,0,null,1,44,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,43,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,7).onReset()&&a),a},null,null)),o["\u0275did"](6,16384,null,0,Te.D,[],null,null),o["\u0275did"](7,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](9,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](10,0,null,null,32,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](12,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](13,{"has-error":0}),(t()(),o["\u0275eld"](14,0,null,null,3,"label",[["class","control-label col-sm-6"],["for","priority"]],null,null,null,null,null)),(t()(),o["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Priority"])),(t()(),o["\u0275eld"](17,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](18,0,null,null,10,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,7,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,20).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,20).onTouched()&&a),"change"===e&&(a=!1!==r.onPriorityChange(n.target.value)&&a),a},null,null)),o["\u0275did"](20,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](22,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](24,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Zd)),o["\u0275did"](26,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Xd)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](29,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](30,0,null,null,9,"div",[["class","col-sm-offset-6 col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](31,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](32,0,null,null,5,"input",[["formControlName","customizePriority"],["id","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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0,r=t.component;return"change"===e&&(a=!1!==o["\u0275nov"](t,33).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,33).onTouched()&&a),"change"===e&&(a=!1!==r.onCustomizePriorityChange()&&a),a},null,null)),o["\u0275did"](33,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](35,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](37,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](38,0,null,null,1,"label",[["for","customizePriority"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Customize priority values"])),(t()(),o["\u0275and"](16777216,null,null,2,null,rp)),o["\u0275did"](41,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),o["\u0275pid"](0,i.KeyValuePipe,[o.KeyValueDiffers]),(t()(),o["\u0275eld"](43,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](44,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ip)),o["\u0275did"](46,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](47,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$a.b,$a.a)),o["\u0275did"](48,49152,null,0,Za.a,[i.Location,Kn.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.osdRecvSpeedForm);var a=t(e,13,0,n.osdRecvSpeedForm.showError("priority",o["\u0275nov"](e,7)));t(e,12,0,"form-group",a),t(e,22,0,"priority"),t(e,26,0,n.priorities),t(e,28,0,n.osdRecvSpeedForm.showError("priority",o["\u0275nov"](e,7),"required")),t(e,35,0,"customizePriority"),t(e,41,0,o["\u0275unv"](e,41,0,o["\u0275nov"](e,42).transform(n.priorityAttrs))),t(e,46,0,n.permissions.configOpt.update),t(e,48,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,5,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending),t(e,19,0,o["\u0275nov"](e,24).ngClassUntouched,o["\u0275nov"](e,24).ngClassTouched,o["\u0275nov"](e,24).ngClassPristine,o["\u0275nov"](e,24).ngClassDirty,o["\u0275nov"](e,24).ngClassValid,o["\u0275nov"](e,24).ngClassInvalid,o["\u0275nov"](e,24).ngClassPending),t(e,32,0,o["\u0275nov"](e,37).ngClassUntouched,o["\u0275nov"](e,37).ngClassTouched,o["\u0275nov"](e,37).ngClassPristine,o["\u0275nov"](e,37).ngClassDirty,o["\u0275nov"](e,37).ngClassValid,o["\u0275nov"](e,37).ngClassInvalid,o["\u0275nov"](e,37).ngClassPending)})}function sp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,op,$d)),o["\u0275did"](1,114688,null,0,oa,[da.a,d.a,Qn.a,Zn.a,_t.a,An],null,null)],function(t,e){t(e,1,0)},null)}var up=o["\u0275ccf"]("cd-osd-recv-speed-modal",oa,sp,{},{},[]),cp=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function lp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required."]))],null,null)}function dp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function pp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,lp)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,dp)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 fp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,31,"cd-modal",[],null,null,null,sd.c,sd.b)),o["\u0275did"](1,49152,null,0,Ld.a,[],{modalRef:[0,"modalRef"]},null),(t()(),o["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Reweight OSD"])),(t()(),o["\u0275eld"](4,0,null,1,27,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,26,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,7).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,7).onReset()&&a),a},null,null)),o["\u0275did"](6,16384,null,0,Te.D,[],null,null),o["\u0275did"](7,540672,null,0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](9,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](10,0,null,null,15,"div",[["class","modal-body"]],null,null,null,null,null)),o["\u0275did"](11,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](12,{"has-error":0}),(t()(),o["\u0275eld"](13,0,null,null,12,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,null,1,"label",[["class","col-sm-2 control-label"],["for","weight"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Weight"])),(t()(),o["\u0275eld"](16,0,null,null,9,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,18)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,18).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,18)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,18)._compositionEnd(n.target.value)&&a),"change"===e&&(a=!1!==o["\u0275nov"](t,19).onChange(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,19).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,19).onTouched()&&a),a},null,null)),o["\u0275did"](18,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275did"](19,16384,null,0,Te.C,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t,e){return[t,e]},[Te.e,Te.C]),o["\u0275did"](21,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](23,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,pp)),o["\u0275did"](25,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](27,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},Wa.b,Wa.a)),o["\u0275did"](28,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](-1,0,["Reweight"])),(t()(),o["\u0275eld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,$a.b,$a.a)),o["\u0275did"](31,49152,null,0,Za.a,[i.Location,Kn.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);var a=t(e,12,0,n.weight.errors);t(e,11,0,"modal-body",a),t(e,21,0,"weight"),t(e,25,0,n.weight.errors),t(e,28,0,n.reweightForm,n.reweightForm.invalid),t(e,31,0,"Cancel",n.bsModalRef.hide)},function(t,e){var n=e.component;t(e,5,0,o["\u0275nov"](e,9).ngClassUntouched,o["\u0275nov"](e,9).ngClassTouched,o["\u0275nov"](e,9).ngClassPristine,o["\u0275nov"](e,9).ngClassDirty,o["\u0275nov"](e,9).ngClassValid,o["\u0275nov"](e,9).ngClassInvalid,o["\u0275nov"](e,9).ngClassPending),t(e,17,0,n.currentWeight,o["\u0275nov"](e,23).ngClassUntouched,o["\u0275nov"](e,23).ngClassTouched,o["\u0275nov"](e,23).ngClassPristine,o["\u0275nov"](e,23).ngClassDirty,o["\u0275nov"](e,23).ngClassValid,o["\u0275nov"](e,23).ngClassInvalid,o["\u0275nov"](e,23).ngClassPending)})}function hp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,fp,cp)),o["\u0275did"](1,114688,null,0,ua,[da.a,An,sa.a],null,null)],function(t,e){t(e,1,0)},null)}var gp=o["\u0275ccf"]("cd-osd-reweight-modal",ua,hp,{},{},[]),mp=o["\u0275crt"]({encapsulation:0,styles:[["hr[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:5px}.control-label[_ngcontent-%COMP%]{text-align:left}.checkbox-primary[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:23px;height:15px;margin-left:0;cursor:pointer}.checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:auto}.checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:after, .checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:before{margin-left:0}.form-group[_ngcontent-%COMP%]   .col-sm-6[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function bp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](1,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](2,0,[" ",""]))],null,function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)})}function yp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,6,"label",[["class","col-sm-6 control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](4,null,[" "," "])),(t()(),o["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,[" "," "])),(t()(),o["\u0275and"](16777216,null,null,1,null,bp)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](10,0,null,null,7,"div",[["class","col-sm-6 checkbox-primary checkbox"]],null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,12).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,12).onTouched()&&a),a},null,null)),o["\u0275did"](12,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](14,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](16,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](17,0,null,null,0,"label",[],null,null,null,null,null))],function(t,e){var n=e.component,a=t(e,2,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir));t(e,1,0,"form-group",a),t(e,9,0,e.parent.context.$implicit.long_desc),t(e,14,0,e.parent.context.$implicit.name)},function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.text),t(e,7,0,e.parent.context.$implicit.desc),t(e,11,0,e.parent.context.$implicit.name,o["\u0275nov"](e,16).ngClassUntouched,o["\u0275nov"](e,16).ngClassTouched,o["\u0275nov"](e,16).ngClassPristine,o["\u0275nov"](e,16).ngClassDirty,o["\u0275nov"](e,16).ngClassValid,o["\u0275nov"](e,16).ngClassInvalid,o["\u0275nov"](e,16).ngClassPending)})}function vp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,fo.b,fo.a)),o["\u0275did"](1,49152,null,0,ho.a,[],null,null),(t()(),o["\u0275ted"](2,0,[" ",""]))],null,function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)})}function xp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-default"],["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()(),o["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-eraser"]],null,null,null,null,null))],null,null)}function _p(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ",""]))],null,function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)})}function Tp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" ",""]))],null,function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)})}function wp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 Sp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](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 Op(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{"has-error":0}),(t()(),o["\u0275eld"](3,0,null,null,6,"label",[["class","col-sm-6 control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),o["\u0275ted"](4,null,[""," "])),(t()(),o["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,[" "," "])),(t()(),o["\u0275and"](16777216,null,null,1,null,vp)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](10,0,null,null,17,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,8,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var a=!0;return"input"===e&&(a=!1!==o["\u0275nov"](t,13)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,13).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,13)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,13)._compositionEnd(n.target.value)&&a),a},null,null)),o["\u0275did"](13,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](15,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](17,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,xp)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,_p)),o["\u0275did"](21,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Tp)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,wp)),o["\u0275did"](25,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Sp)),o["\u0275did"](27,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir));t(e,1,0,"form-group",a),t(e,9,0,e.parent.context.$implicit.long_desc),t(e,15,0,e.parent.context.$implicit.name),t(e,19,0,n.optionsFormShowReset),t(e,21,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,23,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,25,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,27,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))},function(t,e){var n=e.component;t(e,3,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.text),t(e,7,0,e.parent.context.$implicit.desc),t(e,12,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)),o["\u0275nov"](e,17).ngClassUntouched,o["\u0275nov"](e,17).ngClassTouched,o["\u0275nov"](e,17).ngClassPristine,o["\u0275nov"](e,17).ngClassDirty,o["\u0275nov"](e,17).ngClassValid,o["\u0275nov"](e,17).ngClassInvalid,o["\u0275nov"](e,17).ngClassPending])})}function kp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,"hr",[],null,null,null,null,null))],null,null)}function Cp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,yp)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Op)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,kp)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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 Ip(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"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!==o["\u0275nov"](t,1).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,1).onReset()&&a),a},null,null)),o["\u0275did"](1,540672,null,0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](3,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275and"](16777216,null,null,1,null,Cp)),o["\u0275did"](5,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,5,0,n.options)},function(t,e){t(e,0,0,o["\u0275nov"](e,3).ngClassUntouched,o["\u0275nov"](e,3).ngClassTouched,o["\u0275nov"](e,3).ngClassPristine,o["\u0275nov"](e,3).ngClassDirty,o["\u0275nov"](e,3).ngClassValid,o["\u0275nov"](e,3).ngClassInvalid,o["\u0275nov"](e,3).ngClassPending)})}var Rp=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Np(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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()(),o["\u0275ted"](-1,null,["Advanced..."]))],null,null)}function Dp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Advanced configuration options"])),(t()(),o["\u0275eld"](3,0,null,null,1,"cd-config-option",[],null,null,null,Ip,mp)),o["\u0275did"](4,114688,[[2,4],["advancedOptionsValues",4]],0,aa,[Qn.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,o["\u0275nov"](e.parent,13),"advancedFormGroup")},null)}function Ap(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a},Wa.b,Wa.a)),o["\u0275did"](1,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),o["\u0275ted"](2,0,["","",""])),o["\u0275ppd"](3,1),o["\u0275ppd"](4,1)],function(t,e){t(e,1,0,e.component.osdPgScrubForm,"button")},function(t,e){var n=e.component,a=o["\u0275unv"](e,2,0,t(e,3,0,o["\u0275nov"](e.parent,0),n.action)),r=o["\u0275unv"](e,2,1,t(e,4,0,o["\u0275nov"](e.parent,1),n.resource));t(e,2,0,a,r)})}function Ep(t){return o["\u0275vid"](0,[o["\u0275pid"](0,i.TitleCasePipe,[]),o["\u0275pid"](0,go.a,[]),o["\u0275qud"](402653184,1,{basicOptionsValues:0}),o["\u0275qud"](671088640,2,{advancedOptionsValues:0}),(t()(),o["\u0275eld"](4,0,null,null,26,"cd-modal",[],null,null,null,sd.c,sd.b)),o["\u0275did"](5,49152,null,0,Ld.a,[],{modalRef:[0,"modalRef"]},null),(t()(),o["\u0275eld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](7,null,["","",""])),o["\u0275ppd"](8,1),o["\u0275ppd"](9,1),(t()(),o["\u0275eld"](10,0,null,1,20,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](11,0,null,null,19,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,13).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,13).onReset()&&a),a},null,null)),o["\u0275did"](12,16384,null,0,Te.D,[],null,null),o["\u0275did"](13,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](15,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](16,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,1,"cd-config-option",[],null,null,null,Ip,mp)),o["\u0275did"](18,114688,[[1,4],["basicOptionsValues",4]],0,aa,[Qn.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),o["\u0275eld"](19,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),o["\u0275eld"](20,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Np)),o["\u0275did"](22,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Dp)),o["\u0275did"](24,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](25,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](26,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ap)),o["\u0275did"](28,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](29,0,null,null,1,"cd-back-button",[],null,null,null,$a.b,$a.a)),o["\u0275did"](30,49152,null,0,Za.a,[i.Location,Kn.b],{back:[0,"back"]},null)],function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,13,0,n.osdPgScrubForm),t(e,18,0,n.basicOptions,n.osdPgScrubForm,o["\u0275nov"](e,13),"basicFormGroup"),t(e,22,0,!n.advancedEnabled),t(e,24,0,n.advancedEnabled),t(e,28,0,n.permissions.configOpt.update),t(e,30,0,n.bsModalRef.hide)},function(t,e){var n=e.component,a=o["\u0275unv"](e,7,0,t(e,8,0,o["\u0275nov"](e,0),n.action)),r=o["\u0275unv"](e,7,1,t(e,9,0,o["\u0275nov"](e,1),n.resource));t(e,7,0,a,r),t(e,11,0,o["\u0275nov"](e,15).ngClassUntouched,o["\u0275nov"](e,15).ngClassTouched,o["\u0275nov"](e,15).ngClassPristine,o["\u0275nov"](e,15).ngClassDirty,o["\u0275nov"](e,15).ngClassValid,o["\u0275nov"](e,15).ngClassInvalid,o["\u0275nov"](e,15).ngClassPending)})}function Lp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,Ep,Rp)),o["\u0275did"](1,49152,null,0,ia,[da.a,d.a,Zn.a,_t.a,Kn.b],null,null)],null,null)}var Pp=o["\u0275ccf"]("cd-osd-pg-scrub-modal",ia,Lp,{},{},[]),Mp=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function qp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](1,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{value:[0,"value"]},null),o["\u0275did"](2,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),o["\u0275ted"](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 jp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function Fp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function zp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),o["\u0275ted"](2,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,0,0,o["\u0275inlineInterpolate"](1,"col-sm-offset-3 col-sm-9 ",n.matcherMatch.cssClass,"")),t(e,1,0,o["\u0275inlineInterpolate"](1,"help-block ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)})}function Gp(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](-1,null,["Update"]))],null,null)}function Yp(t){return o["\u0275vid"](0,[(t()(),o["\u0275ted"](-1,null,["Add"]))],null,null)}function Hp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Matcher"])),(t()(),o["\u0275eld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.bsModalRef.hide()&&a),a},null,null)),(t()(),o["\u0275eld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["\xd7"])),(t()(),o["\u0275eld"](6,0,null,null,70,"form",[["class","form-horizontal"],["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!==o["\u0275nov"](t,8).onSubmit(n)&&a),"reset"===e&&(a=!1!==o["\u0275nov"](t,8).onReset()&&a),a},null,null)),o["\u0275did"](7,16384,null,0,Te.D,[],null,null),o["\u0275did"](8,540672,[["formDir",4]],0,Te.l,[[8,null],[8,null]],{form:[0,"form"]},null),o["\u0275prd"](2048,null,Te.d,null,[Te.l]),o["\u0275did"](10,16384,null,0,Te.s,[[4,Te.d]],null,null),(t()(),o["\u0275eld"](11,0,null,null,53,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](13,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](14,{"has-error":0}),(t()(),o["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(t()(),o["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Name"])),(t()(),o["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](20,0,null,null,11,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,21).onChange(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,21).onTouched()&&a),a},null,null)),o["\u0275did"](21,16384,null,0,Te.z,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.z]),o["\u0275did"](23,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](25,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](26,0,null,null,3,"option",[],null,null,null,null,null)),o["\u0275did"](27,147456,null,0,Te.v,[o.ElementRef,o.Renderer2,[2,Te.z]],{ngValue:[0,"ngValue"]},null),o["\u0275did"](28,147456,null,0,Te.G,[o.ElementRef,o.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),o["\u0275ted"](-1,null,["-- Select an attribute to match against --"])),(t()(),o["\u0275and"](16777216,null,null,1,null,qp)),o["\u0275did"](31,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,jp)),o["\u0275did"](33,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](34,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),o["\u0275did"](35,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](36,{"has-error":0}),(t()(),o["\u0275eld"](37,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","value"]],null,null,null,null,null)),(t()(),o["\u0275eld"](38,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Value"])),(t()(),o["\u0275eld"](40,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),o["\u0275eld"](41,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](42,16777216,null,null,6,"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]],[[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!==o["\u0275nov"](t,43)._handleInput(n.target.value)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,43).onTouched()&&a),"compositionstart"===e&&(a=!1!==o["\u0275nov"](t,43)._compositionStart()&&a),"compositionend"===e&&(a=!1!==o["\u0275nov"](t,43)._compositionEnd(n.target.value)&&a),"input"===e&&(a=!1!==o["\u0275nov"](t,48).onInput(n)&&a),"keyup"===e&&(a=!1!==o["\u0275nov"](t,48).onChange(n)&&a),"click"===e&&(a=!1!==o["\u0275nov"](t,48).onFocus()&&a),"focus"===e&&(a=!1!==o["\u0275nov"](t,48).onFocus()&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,48).onBlur()&&a),"keydown"===e&&(a=!1!==o["\u0275nov"](t,48).onKeydown(n)&&a),a},null,null)),o["\u0275did"](43,16384,null,0,Te.e,[o.Renderer2,o.ElementRef,[2,Te.b]],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.e]),o["\u0275did"](45,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](47,16384,null,0,Te.r,[[4,Te.q]],null,null),o["\u0275did"](48,212992,null,0,zu,[Te.q,o.ElementRef,o.ViewContainerRef,o.Renderer2,Fu,Q.a,o.ChangeDetectorRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Fp)),o["\u0275did"](50,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,zp)),o["\u0275did"](52,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](53,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](54,0,null,null,10,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),o["\u0275eld"](55,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),o["\u0275eld"](56,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](57,0,null,null,5,"input",[["formControlName","isRegex"],["id","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]],[[null,"change"],[null,"blur"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==o["\u0275nov"](t,58).onChange(n.target.checked)&&a),"blur"===e&&(a=!1!==o["\u0275nov"](t,58).onTouched()&&a),a},null,null)),o["\u0275did"](58,16384,null,0,Te.c,[o.Renderer2,o.ElementRef],null,null),o["\u0275prd"](1024,null,Te.p,function(t){return[t]},[Te.c]),o["\u0275did"](60,671744,null,0,Te.j,[[3,Te.d],[8,null],[8,null],[6,Te.p],[2,Te.F]],{name:[0,"name"]},null),o["\u0275prd"](2048,null,Te.q,null,[Te.j]),o["\u0275did"](62,16384,null,0,Te.r,[[4,Te.q]],null,null),(t()(),o["\u0275eld"](63,0,null,null,1,"label",[["for","is-regex"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Use regular expression"])),(t()(),o["\u0275eld"](65,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),o["\u0275eld"](66,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},Wa.b,Wa.a)),o["\u0275did"](67,114688,null,0,Ka.a,[o.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),o["\u0275eld"](68,0,null,0,6,null,null,null,null,null,null,null)),(t()(),o["\u0275eld"](69,0,null,null,5,null,null,null,null,null,null,null)),o["\u0275did"](70,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Gp)),o["\u0275did"](72,278528,null,0,i.NgSwitchCase,[o.ViewContainerRef,o.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Yp)),o["\u0275did"](74,16384,null,0,i.NgSwitchDefault,[o.ViewContainerRef,o.TemplateRef,i.NgSwitch],null,null),(t()(),o["\u0275eld"](75,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,$a.b,$a.a)),o["\u0275did"](76,49152,null,0,Za.a,[i.Location,Kn.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,8,0,n.form);var a=t(e,14,0,n.form.showError("name",o["\u0275nov"](e,8)));t(e,13,0,"form-group",a),t(e,23,0,"name"),t(e,27,0,null),t(e,28,0,null),t(e,31,0,n.nameAttributes),t(e,33,0,n.form.showError("name",o["\u0275nov"](e,8),"required"));var r=t(e,36,0,n.form.showError("value",o["\u0275nov"](e,8)));t(e,35,0,"form-group",r),t(e,45,0,"value"),t(e,48,0,n.possibleValues,0),t(e,50,0,n.form.showError("value",o["\u0275nov"](e,8),"required")),t(e,52,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,60,0,"isRegex"),t(e,67,0,n.form),t(e,70,0,n.editMode),t(e,72,0,"1"),t(e,76,0,"Close",n.bsModalRef.hide)},function(t,e){t(e,6,0,o["\u0275nov"](e,10).ngClassUntouched,o["\u0275nov"](e,10).ngClassTouched,o["\u0275nov"](e,10).ngClassPristine,o["\u0275nov"](e,10).ngClassDirty,o["\u0275nov"](e,10).ngClassValid,o["\u0275nov"](e,10).ngClassInvalid,o["\u0275nov"](e,10).ngClassPending),t(e,20,0,o["\u0275nov"](e,25).ngClassUntouched,o["\u0275nov"](e,25).ngClassTouched,o["\u0275nov"](e,25).ngClassPristine,o["\u0275nov"](e,25).ngClassDirty,o["\u0275nov"](e,25).ngClassValid,o["\u0275nov"](e,25).ngClassInvalid,o["\u0275nov"](e,25).ngClassPending),t(e,42,0,o["\u0275nov"](e,47).ngClassUntouched,o["\u0275nov"](e,47).ngClassTouched,o["\u0275nov"](e,47).ngClassPristine,o["\u0275nov"](e,47).ngClassDirty,o["\u0275nov"](e,47).ngClassValid,o["\u0275nov"](e,47).ngClassInvalid,o["\u0275nov"](e,47).ngClassPending),t(e,57,0,o["\u0275nov"](e,62).ngClassUntouched,o["\u0275nov"](e,62).ngClassTouched,o["\u0275nov"](e,62).ngClassPristine,o["\u0275nov"](e,62).ngClassDirty,o["\u0275nov"](e,62).ngClassValid,o["\u0275nov"](e,62).ngClassInvalid,o["\u0275nov"](e,62).ngClassPending)})}function Vp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,Hp,Mp)),o["\u0275did"](1,49152,null,0,yo,[sa.a,mo,da.a],null,null)],null,null)}var Bp=o["\u0275ccf"]("cd-silence-matcher-modal",yo,Vp,{},{submitAction:"submitAction"},[]),Up=function(){function t(t,e){this._el=t,this._renderer=e,this.collapsed=new o.EventEmitter,this.expanded=new o.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1}return Object.defineProperty(t.prototype,"collapse",{get:function(){return this.isExpanded},set:function(t){this.isExpanded=t,this.toggle()},enumerable:!0,configurable:!0}),t.prototype.toggle=function(){this.isExpanded?this.hide():this.show()},t.prototype.hide=function(){this.isCollapse=!1,this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapse=!0,this.isCollapsing=!1,this.display="none",this.collapsed.emit(this)},t.prototype.show=function(){this.isCollapse=!1,this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.display="block",this.isCollapse=!0,this.isCollapsing=!1,this._renderer.setStyle(this._el.nativeElement,"overflow","visible"),this._renderer.setStyle(this._el.nativeElement,"height","auto"),this.expanded.emit(this)},t}(),Wp=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}(),Kp=function(){function t(t,e){this.summaryService=t,this.taskMessageService=e,this.executingTasks=[],this.finishedTasks=[],this.icon="fa-hourglass-o"}return t.prototype.ngOnInit=function(){var t=this;this.summaryService.subscribe(function(e){e&&(t._handleTasks(e.executing_tasks,e.finished_tasks),t._setIcon(e.executing_tasks.length))})},t.prototype._handleTasks=function(t,e){for(var n=0,a=t;n<a.length;n++){var r=a[n];r.description=this.taskMessageService.getRunningTitle(r)}for(var i=0,o=e;i<o.length;i++){var s=o[i];!1===s.success?(s.description=this.taskMessageService.getErrorTitle(s),s.errorMessage=this.taskMessageService.getErrorMessage(s)):s.description=this.taskMessageService.getSuccessTitle(s)}this.executingTasks=t,this.finishedTasks=e},t.prototype._setIcon=function(t){this.icon="fa-hourglass-"+["o","start","half","end"][t>0?1:0]},t}(),$p=o["\u0275crt"]({encapsulation:0,styles:[[".popover-content{padding:.5em;height:auto;max-height:70vh;overflow-x:hidden}  .popover{min-width:276px!important}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.message[_ngcontent-%COMP%]{padding:10px 16px;color:#474544;font-size:12px}table[_ngcontent-%COMP%]{width:252px;margin:5px 12px 5px 5px;font-size:12px;color:#474544}.icon-col[_ngcontent-%COMP%]{width:50px;font-size:10px}.date[_ngcontent-%COMP%]{color:#555}hr[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0}"]],data:{}});function Zp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"td",[["class","text-right italic"],["nowrap",""]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](2,null,[""," %"]))],null,function(t,e){t(e,2,0,e.parent.context.$implicit.progress)})}function Xp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,18,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,16,"table",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,15,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,3,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,2,"span",[["class","fa-stack fa-2x text-info"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-spinner fa-spin"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,2,"td",[["colspan","3"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](10,null,["",""])),(t()(),o["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,3,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,2,"small",[["class","date"]],null,null,null,null,null)),(t()(),o["\u0275ted"](14,null,["",""])),o["\u0275ppd"](15,1),(t()(),o["\u0275and"](16777216,null,null,1,null,Zp)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](18,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){t(e,17,0,e.context.$implicit.progress)},function(t,e){t(e,10,0,e.context.$implicit.description);var n=o["\u0275unv"](e,14,0,t(e,15,0,o["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.begin_time));t(e,14,0,n)})}function Jp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"div",[["class","separator"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["EXECUTING"])),(t()(),o["\u0275eld"](3,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Xp)),o["\u0275did"](5,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.executingTasks)},null)}function Qp(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"span",[["class","fa-stack fa-2x text-success"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-check"]],null,null,null,null,null))],null,null)}function tf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,2,"span",[["class","fa-stack fa-2x text-danger"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-exclamation-triangle"]],null,null,null,null,null))],null,null)}function ef(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[["class","text-danger"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.errorMessage)})}function nf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,22,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,20,"table",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,19,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,8,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,4,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Qp)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,tf)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](9,0,null,null,2,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](11,null,["",""])),(t()(),o["\u0275eld"](12,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,0,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](14,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ef)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](17,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](18,0,null,null,3,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,2,"small",[["class","date"]],null,null,null,null,null)),(t()(),o["\u0275ted"](20,null,["",""])),o["\u0275ppd"](21,1),(t()(),o["\u0275eld"](22,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){t(e,6,0,!e.context.$implicit.errorMessage),t(e,8,0,e.context.$implicit.errorMessage),t(e,16,0,e.context.$implicit.errorMessage)},function(t,e){t(e,11,0,e.context.$implicit.description);var n=o["\u0275unv"](e,20,0,t(e,21,0,o["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.end_time));t(e,20,0,n)})}function af(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"div",[["class","separator"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["FINISHED"])),(t()(),o["\u0275eld"](3,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,nf)),o["\u0275did"](5,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.finishedTasks)},null)}function rf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["There are no background tasks."]))],null,null)}function of(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Jp)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,af)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,rf)),o["\u0275did"](5,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.executingTasks.length>0),t(e,3,0,n.finishedTasks.length>0),t(e,5,0,0===n.executingTasks.length&&0===n.finishedTasks.length)},null)}function sf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,[" (",")"]))],null,function(t,e){t(e,1,0,e.component.executingTasks.length)})}function uf(t){return o["\u0275vid"](0,[o["\u0275pid"](0,wn.a,[i.DatePipe]),(t()(),o["\u0275and"](0,[["popTemplate",2]],null,0,null,of)),(t()(),o["\u0275eld"](2,16777216,null,null,7,"a",[["container","body"],["outsideClick","true"],["placement","bottom"],["title","Background Tasks"]],null,null,null,null,null)),o["\u0275did"](3,212992,null,0,J.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,J.a,Q.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),(t()(),o["\u0275eld"](4,0,null,null,1,"i",[["class","fa fa-fw"]],null,null,null,null,null)),o["\u0275did"](5,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Background Tasks"])),(t()(),o["\u0275and"](16777216,null,null,1,null,sf)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,o["\u0275nov"](e,1),"bottom","true","body"),t(e,5,0,"fa fa-fw",n.icon),t(e,9,0,n.executingTasks.length>0)},null)}var cf=function(){function t(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}return t.prototype.refresh=function(){var t=this;this.backendFailure||this.prometheusService.getNotifications(pt.last(this.notifications)).subscribe(function(e){return t.handleNotifications(e)},function(){return t.backendFailure=!0})},t.prototype.handleNotifications=function(t){var e=this;0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(pt.flatten(t.map(function(t){return e.formatNotification(t)}))),this.notifications=this.notifications.concat(t))},t.prototype.formatNotification=function(t){var e=this;return this.alertFormatter.convertToCustomAlerts(t.alerts).map(function(t){return e.alertFormatter.convertAlertToNotification(t)})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(Wi),o.inject(Bi))},token:t,providedIn:"root"}),t}(),lf=function(){function t(t,e,n,a,r){this.notificationService=t,this.prometheusNotificationService=e,this.authStorageService=n,this.prometheusAlertService=a,this.ngZone=r,this.notifications=[]}return t.prototype.ngOnDestroy=function(){window.clearInterval(this.interval)},t.prototype.ngOnInit=function(){var t=this;this.authStorageService.getPermissions().prometheus.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(function(){t.interval=window.setInterval(function(){t.ngZone.run(function(){t.triggerPrometheusAlerts()})},5e3)})),this.notificationService.data$.subscribe(function(e){t.notifications=pt.orderBy(e,["timestamp"],["desc"])})},t.prototype.triggerPrometheusAlerts=function(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()},t.prototype.removeAll=function(){this.notificationService.removeAll()},t}(),df=o["\u0275crt"]({encapsulation:0,styles:[[".popover-content{padding:.5em;height:auto;max-height:70vh;overflow-x:hidden}  .popover{min-width:276px!important}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.message[_ngcontent-%COMP%]{padding:10px 16px;color:#474544;font-size:12px}table[_ngcontent-%COMP%]{width:252px;margin:5px 12px 5px 5px;font-size:12px;color:#474544}.icon-col[_ngcontent-%COMP%]{width:50px;font-size:10px}.date[_ngcontent-%COMP%]{color:#555}hr[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0}"]],data:{}});function pf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,19,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,17,"table",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,16,"tbody",[],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,11,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,7,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,6,"span",[],null,null,null,null,null)),o["\u0275did"](6,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pad"](7,2),(t()(),o["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,2,"i",[],null,null,null,null,null)),o["\u0275did"](10,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngClass:[0,"ngClass"]},null),o["\u0275pad"](11,2),(t()(),o["\u0275eld"](12,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),o["\u0275eld"](13,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](14,null,["",""])),(t()(),o["\u0275eld"](15,0,null,null,1,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](16,0,null,null,0,"td",[],[[8,"innerHTML",1]],null,null,null,null)),(t()(),o["\u0275eld"](17,0,null,null,1,"tr",[],null,null,null,null,null)),(t()(),o["\u0275eld"](18,0,null,null,0,"td",[],[[8,"innerHTML",1]],null,null,null,null)),(t()(),o["\u0275eld"](19,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){var n=t(e,7,0,"fa-stack fa-2x",e.context.$implicit.textClass);t(e,6,0,n);var a=t(e,11,0,"fa fa-stack-1x fa-inverse",e.context.$implicit.iconClass);t(e,10,0,a)},function(t,e){var n=e.component;t(e,14,0,e.context.$implicit.title),t(e,16,0,e.context.$implicit.message),t(e,18,0,n.notificationService.renderTimeAndApplicationHtml(e.context.$implicit))})}function ff(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"button",[["class","btn btn-default btn-sm btn-block"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeAll()&&a),a},null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-trash-o"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" \xa0 "])),(t()(),o["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Remove all"])),(t()(),o["\u0275eld"](6,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,pf)),o["\u0275did"](8,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,8,0,e.component.notifications)},null)}function hf(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,ff)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.notifications.length>0)},null)}function gf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,[" There are no notifications. "]))],null,null)}function mf(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,gf)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,0===e.component.notifications.length)},null)}function bf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function yf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function vf(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,bf)),o["\u0275did"](1,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,yf)),o["\u0275did"](3,540672,null,0,i.NgTemplateOutlet,[o.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,o["\u0275nov"](e.parent,0)),t(e,3,0,o["\u0275nov"](e.parent,1))},null)}function xf(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](0,[["notificationsTpl",2]],null,0,null,hf)),(t()(),o["\u0275and"](0,[["emptyTpl",2]],null,0,null,mf)),(t()(),o["\u0275and"](0,[["popTpl",2]],null,0,null,vf)),(t()(),o["\u0275eld"](3,16777216,null,null,4,"a",[["container","body"],["outsideClick","true"],["placement","bottom"],["title","Recent Notifications"]],null,null,null,null,null)),o["\u0275did"](4,212992,null,0,J.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,J.a,Q.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),(t()(),o["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-bell"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Recent Notifications"]))],function(t,e){t(e,4,0,o["\u0275nov"](e,2),"bottom","true","body")},null)}var _f=function(){function t(t,e,n,a){this.summaryService=t,this.cephReleaseNamePipe=e,this.modalService=n,this.authStorageService=a}return t.prototype.ngOnInit=function(){var t=this,e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/",setTimeout(function(){e.unsubscribe()},0)}})},t.prototype.openAboutModal=function(){this.modalRef=this.modalService.show(pd)},t.prototype.goToApiDocs=function(){this.docsFormElement.nativeElement.children[0].value=this.authStorageService.getToken(),this.docsFormElement.nativeElement.submit()},t}(),Tf=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function wf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,11,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),o["\u0275did"](3,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](4,{disabled:0}),(t()(),o["\u0275ted"](-1,null,["Documentation"])),(t()(),o["\u0275eld"](6,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](7,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.goToApiDocs()&&a),a},null,null)),(t()(),o["\u0275ted"](-1,null,["API"])),(t()(),o["\u0275eld"](9,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](10,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()(),o["\u0275ted"](-1,null,["About"]))],function(t,e){var n=t(e,4,0,!e.component.docsUrl);t(e,3,0,"dropdown-item",n)},function(t,e){t(e,2,0,o["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function Sf(t){return o["\u0275vid"](0,[o["\u0275qud"](402653184,1,{docsFormElement:0}),(t()(),o["\u0275eld"](1,0,[[1,0],["docsForm",1]],null,1,"form",[["action","/docs"],["method","post"],["target","_blank"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,0,"input",[["name","token"],["type","hidden"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](5,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),(t()(),o["\u0275eld"](6,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,7).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,7).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,7).onEsc()&&a),a},null,null)),o["\u0275did"](7,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-fw fa-question-circle-o"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Help"])),(t()(),o["\u0275eld"](11,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,wf)),o["\u0275did"](13,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null)],function(t,e){t(e,5,0)},function(t,e){t(e,3,0,o["\u0275nov"](e,5).dropup,o["\u0275nov"](e,5).isOpen,o["\u0275nov"](e,5).isOpen&&o["\u0275nov"](e,5).isBs4),t(e,6,0,!0,o["\u0275nov"](e,7).isDisabled,o["\u0275nov"](e,7).isOpen)})}var Of=function(){function t(t){this.authStorageService=t,this.userPermission=this.authStorageService.getPermissions().user}return t.prototype.ngOnInit=function(){},t}(),kf=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Cf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](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!==o["\u0275nov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](2,671744,null,0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["User management"]))],function(t,e){t(e,2,0,"/user-management")},function(t,e){t(e,1,0,o["\u0275nov"](e,2).target,o["\u0275nov"](e,2).href)})}function If(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Cf)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,2,0,e.component.userPermission.read)},null)}function Rf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),(t()(),o["\u0275eld"](3,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,4).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,4).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,4).onEsc()&&a),a},null,null)),o["\u0275did"](4,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-cog"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Dashboard Settings"])),(t()(),o["\u0275eld"](8,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,If)),o["\u0275did"](10,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0)},function(t,e){t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,3,0,!0,o["\u0275nov"](e,4).isDisabled,o["\u0275nov"](e,4).isOpen)})}function Nf(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,Rf)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.userPermission.read)},null)}var Df=function(){function t(t,e){this.authStorageService=t,this.authService=e}return t.prototype.ngOnInit=function(){this.username=this.authStorageService.getUsername()},t.prototype.logout=function(){this.authService.logout()},t}(),Af=o["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Ef(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,11,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Signed in as "])),(t()(),o["\u0275eld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),o["\u0275ted"](5,null,["",""])),(t()(),o["\u0275eld"](6,0,null,null,0,"li",[["class","divider dropdown-divider"]],null,null,null,null,null)),(t()(),o["\u0275eld"](7,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),o["\u0275eld"](8,0,null,null,3,"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()(),o["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-sign-out fa-fw"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Sign out"]))],null,function(t,e){t(e,5,0,e.component.username)})}function Lf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),(t()(),o["\u0275eld"](3,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,4).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,4).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,4).onEsc()&&a),a},null,null)),o["\u0275did"](4,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-user"]],null,null,null,null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Logged in user"])),(t()(),o["\u0275eld"](8,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Ef)),o["\u0275did"](10,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null)],function(t,e){t(e,2,0)},function(t,e){t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,3,0,!0,o["\u0275nov"](e,4).isDisabled,o["\u0275nov"](e,4).isOpen)})}var Pf=function(){function t(t,e,n,a){this.authStorageService=t,this.prometheusService=e,this.summaryService=n,this.featureToggles=a,this.isCollapsed=!0,this.prometheusConfigured=!1,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}return t.prototype.ngOnInit=function(){var t=this;this.summaryService.subscribe(function(e){e&&(t.summaryData=e)}),this.prometheusService.ifAlertmanagerConfigured(function(){return t.prometheusConfigured=!0})},t.prototype.blockHealthColor=function(){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"}}},t}(),Mf=o["\u0275crt"]({encapsulation:0,styles:[[".navbar-main{margin-bottom:0;background:#374249;border:0;border-radius:0;border-top:4px solid #2b99a8;font-size:1.2em}  .navbar-main .navbar-header{display:-webkit-box;display:flex;float:none}  .navbar-main .navbar-brand,   .navbar-main .navbar-brand:hover{color:#eee;height:auto;margin:15px 0 15px 20px;padding:0;-webkit-align-self:flex-start;align-self:flex-start}  .navbar-main .navbar-brand>img{height:25px}  .navbar-main .navbar-toggle{margin-left:auto;border:0}  .navbar-main .navbar-toggle:focus,   .navbar-main .navbar-toggle:hover{background-color:transparent;outline:0}  .navbar-main .navbar-toggle .icon-bar{background-color:#eee}  .navbar-main .navbar-toggle:focus .icon-bar,   .navbar-main .navbar-toggle:hover .icon-bar{box-shadow:0 0 3px #fff}  .navbar-main .navbar-collapse{padding:0}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>ul>li>.dropdown-item{font-size:12px}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a,   .navbar-main .navbar-nav>li>.oa-navbar>a,   .navbar-main .navbar-nav>li>a{color:#eee;line-height:1;padding:10px 18px;position:relative;display:block;text-decoration:none}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:focus,   .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>li>.oa-navbar>a:focus,   .navbar-main .navbar-nav>li>.oa-navbar>a:hover,   .navbar-main .navbar-nav>li>a:focus,   .navbar-main .navbar-nav>li>a:hover{color:#eee}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown].open>a,   .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>li>.oa-navbar>a:hover,   .navbar-main .navbar-nav>li>a:hover{background-color:#2b99a8}  .navbar-main .navbar-nav>li a.dropdown-toggle span.caret{margin-left:5px}  .navbar-main .navbar-nav>.open>.oa-navbar>[dropdown]>a,   .navbar-main .navbar-nav>.open>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>.open>.oa-navbar>a,   .navbar-main .navbar-nav>.open>.oa-navbar>a:focus,   .navbar-main .navbar-nav>.open>.oa-navbar>a:hover,   .navbar-main .navbar-nav>.open>.oa-navbar>li>a:focus,   .navbar-main .navbar-nav>.open>a,   .navbar-main .navbar-nav>.open>a:focus,   .navbar-main .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .navbar-main .navbar-primary>li>a{border:0}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{color:#eee;background-color:#2b99a8;border:0}  .navbar-main .navbar-utility .fa,   .navbar-main .navbar-utility a{font-size:1.1em}  .navbar-main .navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .navbar-main .navbar-utility>li>.open>a,   .navbar-main .navbar-utility>li>.open>a:focus,   .navbar-main .navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .navbar-main .navbar-primary>li>a{border-bottom:4px solid transparent}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{background-color:transparent;border-bottom:4px solid #2b99a8}  .navbar-main .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}}@media (max-width:calc(768px - 1px)){  .navbar-main .navbar-nav{margin:0}  .navbar-main .navbar-nav .fa{margin-right:.5em}  .navbar-main .navbar-collapse,   .navbar-main .navbar-form{border-color:#eee}  .navbar-main .navbar-collapse{padding:0}  .navbar-main .navbar-nav .open .dropdown-menu{padding-top:0;padding-bottom:0;background-color:#2b99a8}  .navbar-main .navbar-nav .open .dropdown-menu .dropdown-header,   .navbar-main .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px}  .navbar-main .navbar-nav .open .dropdown-menu>li>a{color:#eee}  .navbar-main .navbar-nav .open .dropdown-menu>.active>a{color:#eee;background-color:#2b99a8}  .navbar-main .navbar-nav>li>a:hover{background-color:#2b99a8}  .navbar-main .navbar-utility{border-top:1px solid #eee}  .navbar-main .navbar-utility a{font-size:1em}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{background-color:#2b99a8}}"]],data:{}});function qf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,5,{links:1}),o["\u0275qud"](603979776,6,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[6,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Hosts"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function jf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,7,{links:1}),o["\u0275qud"](603979776,8,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[8,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Monitors"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Ff(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,9,{links:1}),o["\u0275qud"](603979776,10,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[10,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["OSDs"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function zf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,11,{links:1}),o["\u0275qud"](603979776,12,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[12,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Configuration"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Gf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,13,{links:1}),o["\u0275qud"](603979776,14,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[14,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-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,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Yf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,15,{links:1}),o["\u0275qud"](603979776,16,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[16,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-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,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Hf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,17,{links:1}),o["\u0275qud"](603979776,18,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[18,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Logs"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Vf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_prometheus"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,19,{links:1}),o["\u0275qud"](603979776,20,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/alerts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[20,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Alerts"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/alerts")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Bf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_prometheus"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,21,{links:1}),o["\u0275qud"](603979776,22,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/silence"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[22,4],[4,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Silences"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/silence")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Uf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,18,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,qf)),o["\u0275did"](2,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,jf)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Ff)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,zf)),o["\u0275did"](8,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Gf)),o["\u0275did"](10,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Yf)),o["\u0275did"](12,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Hf)),o["\u0275did"](14,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Vf)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Bf)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,2,0,n.permissions.hosts.read),t(e,4,0,n.permissions.monitor.read),t(e,6,0,n.permissions.osd.read),t(e,8,0,n.permissions.configOpt.read),t(e,10,0,n.permissions.hosts.read&&n.permissions.osd.read),t(e,12,0,n.permissions.configOpt.read),t(e,14,0,n.permissions.log.read),t(e,16,0,n.prometheusConfigured&&n.permissions.prometheus.read),t(e,18,0,n.prometheusConfigured&&n.permissions.prometheus.read)},null)}function Wf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,12,"li",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),o["\u0275did"](3,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,3,{links:1}),o["\u0275qud"](603979776,4,{linksWithHrefs:1}),(t()(),o["\u0275eld"](6,0,null,null,4,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,7).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,7).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,7).onEsc()&&a),a},null,null)),o["\u0275did"](7,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Cluster"])),(t()(),o["\u0275eld"](10,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,Uf)),o["\u0275did"](12,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0),t(e,3,0,"active")},function(t,e){t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,6,0,!0,o["\u0275nov"](e,7).isDisabled,o["\u0275nov"](e,7).isOpen)})}function Kf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,23,{links:1}),o["\u0275qud"](603979776,24,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[24,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Pools"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function $f(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,27,{links:1}),o["\u0275qud"](603979776,28,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[28,4],[26,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Images"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Zf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"small",[["class","label label-warning"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)})}function Xf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"small",[["class","label label-danger"]],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)})}function Jf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,29,{links:1}),o["\u0275qud"](603979776,30,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[30,4],[26,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275eld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Mirroring"])),(t()(),o["\u0275and"](16777216,null,null,1,null,Zf)),o["\u0275did"](9,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Xf)),o["\u0275did"](11,16384,null,0,i.NgIf,[o.ViewContainerRef,o.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:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function Qf(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,31,{links:1}),o["\u0275qud"](603979776,32,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[32,4],[26,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["iSCSI"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function th(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,18,"li",[["class","dropdown tc_menuitem tc_menuitem_block"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),o["\u0275did"](3,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,25,{links:1}),o["\u0275qud"](603979776,26,{linksWithHrefs:1}),(t()(),o["\u0275eld"](6,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,8).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,8).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,8).onEsc()&&a),a},null,null)),o["\u0275did"](7,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null),o["\u0275did"](8,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Block"])),(t()(),o["\u0275eld"](11,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275eld"](12,0,null,null,6,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,$f)),o["\u0275did"](14,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Jf)),o["\u0275did"](16,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Qf)),o["\u0275did"](18,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0),t(e,3,0,"active"),t(e,7,0,n.blockHealthColor()),t(e,14,0,e.parent.context.ngIf.rbd&&n.permissions.rbdImage.read),t(e,16,0,e.parent.context.ngIf.mirroring&&n.permissions.rbdMirroring.read),t(e,18,0,e.parent.context.ngIf.iscsi&&n.permissions.iscsi.read)},function(t,e){t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,6,0,!0,o["\u0275nov"](e,8).isDisabled,o["\u0275nov"](e,8).isOpen)})}function eh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,33,{links:1}),o["\u0275qud"](603979776,34,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[34,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["NFS"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function nh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_cephs"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](1,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,35,{links:1}),o["\u0275qud"](603979776,36,{linksWithHrefs:1}),(t()(),o["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](5,671744,[[36,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Filesystems"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")},function(t,e){t(e,4,0,o["\u0275nov"](e,5).target,o["\u0275nov"](e,5).href)})}function ah(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,21,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),o["\u0275eld"](1,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](2,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,39,{links:1}),o["\u0275qud"](603979776,40,{linksWithHrefs:1}),(t()(),o["\u0275eld"](5,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](6,671744,[[40,4],[38,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Daemons"])),(t()(),o["\u0275eld"](8,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](9,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,41,{links:1}),o["\u0275qud"](603979776,42,{linksWithHrefs:1}),(t()(),o["\u0275eld"](12,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,13).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](13,671744,[[42,4],[38,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Users"])),(t()(),o["\u0275eld"](15,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](16,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,43,{links:1}),o["\u0275qud"](603979776,44,{linksWithHrefs:1}),(t()(),o["\u0275eld"](19,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,20).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](20,671744,[[44,4],[38,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](-1,null,["Buckets"]))],function(t,e){t(e,2,0,"active"),t(e,6,0,"/rgw/daemon"),t(e,9,0,"active"),t(e,13,0,"/rgw/user"),t(e,16,0,"active"),t(e,20,0,"/rgw/bucket")},function(t,e){t(e,5,0,o["\u0275nov"](e,6).target,o["\u0275nov"](e,6).href),t(e,12,0,o["\u0275nov"](e,13).target,o["\u0275nov"](e,13).href),t(e,19,0,o["\u0275nov"](e,20).target,o["\u0275nov"](e,20).href)})}function rh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,16777216,null,null,12,"li",[["class","dropdown tc_menuitem tc_menuitem_rgw"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),o["\u0275prd"](512,null,hn.f,hn.f,[]),o["\u0275did"](2,212992,null,0,hn.c,[o.ElementRef,o.Renderer2,o.ViewContainerRef,Q.a,hn.a,hn.f],null,null),o["\u0275did"](3,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,37,{links:1}),o["\u0275qud"](603979776,38,{linksWithHrefs:1}),(t()(),o["\u0275eld"](6,0,null,null,4,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,7).onClick()&&a),"document:click"===e&&(a=!1!==o["\u0275nov"](t,7).onDocumentClick(n)&&a),"keyup.esc"===e&&(a=!1!==o["\u0275nov"](t,7).onEsc()&&a),a},null,null)),o["\u0275did"](7,147456,null,0,hn.g,[hn.f,o.ElementRef,hn.c],null,null),(t()(),o["\u0275eld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Object Gateway"])),(t()(),o["\u0275eld"](10,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,ah)),o["\u0275did"](12,16384,null,0,hn.d,[hn.f,o.ViewContainerRef,o.TemplateRef],null,null),(t()(),o["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0),t(e,3,0,"active")},function(t,e){t(e,0,0,o["\u0275nov"](e,2).dropup,o["\u0275nov"](e,2).isOpen,o["\u0275nov"](e,2).isOpen&&o["\u0275nov"](e,2).isBs4),t(e,6,0,!0,o["\u0275nov"](e,7).isDisabled,o["\u0275nov"](e,7).isOpen)})}function ih(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,44,"div",[["class","collapse navbar-collapse"],["id","bs-example-navbar-collapse-1"]],[[2,"collapse",null],[4,"display",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),o["\u0275did"](1,16384,null,0,Up,[o.ElementRef,o.Renderer2],{collapse:[0,"collapse"]},null),(t()(),o["\u0275eld"](2,0,null,null,23,"ul",[["class","nav navbar-nav navbar-primary"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,10,"li",[["class","tc_menuitem tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),o["\u0275did"](4,1720320,null,2,tt.n,[tt.l,o.ElementRef,o.Renderer2,o.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),o["\u0275qud"](603979776,1,{links:1}),o["\u0275qud"](603979776,2,{linksWithHrefs:1}),(t()(),o["\u0275eld"](7,0,null,null,6,"a",[["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==o["\u0275nov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](8,671744,[[2,4]],0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275eld"](9,0,null,null,2,"i",[["class","fa fa-heartbeat fa-fw"]],null,null,null,null,null)),o["\u0275did"](10,278528,null,0,i.NgStyle,[o.KeyValueDiffers,o.ElementRef,o.Renderer2],{ngStyle:[0,"ngStyle"]},null),o["\u0275ppd"](11,1),(t()(),o["\u0275eld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Dashboard"])),(t()(),o["\u0275and"](16777216,null,null,1,null,Wf)),o["\u0275did"](15,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,Kf)),o["\u0275did"](17,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,th)),o["\u0275did"](19,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,eh)),o["\u0275did"](21,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,nh)),o["\u0275did"](23,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,rh)),o["\u0275did"](25,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](26,0,null,null,18,"ul",[["class","nav navbar-nav navbar-utility"]],null,null,null,null,null)),(t()(),o["\u0275eld"](27,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](28,0,null,null,1,"cd-language-selector",[["class","oa-navbar"]],null,null,null,El,Cl)),o["\u0275did"](29,114688,null,0,kl,[Cr.f,Sl],null,null),(t()(),o["\u0275eld"](30,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](31,0,null,null,1,"cd-task-manager",[["class","oa-navbar"]],null,null,null,uf,$p)),o["\u0275did"](32,114688,null,0,Kp,[Me.a,pu.a],null,null),(t()(),o["\u0275eld"](33,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](34,0,null,null,1,"cd-notifications",[["class","oa-navbar"]],null,null,null,xf,df)),o["\u0275did"](35,245760,null,0,lf,[Zn.a,cf,d.a,Ki,o.NgZone],null,null),(t()(),o["\u0275eld"](36,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](37,0,null,null,1,"cd-dashboard-help",[["class","oa-navbar"]],null,null,null,Sf,Tf)),o["\u0275did"](38,114688,null,0,_f,[Me.a,Fe.a,da.b,d.a],null,null),(t()(),o["\u0275eld"](39,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](40,0,null,null,1,"cd-administration",[["class","oa-navbar"]],null,null,null,Nf,kf)),o["\u0275did"](41,114688,null,0,Of,[d.a],null,null),(t()(),o["\u0275eld"](42,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),o["\u0275eld"](43,0,null,null,1,"cd-identity",[["class","oa-navbar"]],null,null,null,Lf,Af)),o["\u0275did"](44,114688,null,0,Df,[d.a,Ml.a],null,null)],function(t,e){var n=e.component;t(e,1,0,n.isCollapsed),t(e,4,0,"active"),t(e,8,0,"/dashboard");var a=o["\u0275unv"](e,10,0,t(e,11,0,o["\u0275nov"](e.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,10,0,a),t(e,15,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read),t(e,17,0,n.permissions.pool.read),t(e,19,0,(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)&&(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)),t(e,21,0,null==n.permissions?null:null==n.permissions.nfs?null:n.permissions.nfs.read),t(e,23,0,e.context.ngIf.cephfs&&n.permissions.cephfs.read),t(e,25,0,e.context.ngIf.rgw&&n.permissions.rgw.read),t(e,29,0),t(e,32,0),t(e,35,0),t(e,38,0),t(e,41,0),t(e,44,0)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).isCollapse,o["\u0275nov"](e,1).display,o["\u0275nov"](e,1).isExpanded,o["\u0275nov"](e,1).isExpanded,o["\u0275nov"](e,1).isExpanded,o["\u0275nov"](e,1).isCollapsed,o["\u0275nov"](e,1).isCollapsing),t(e,7,0,o["\u0275nov"](e,8).target,o["\u0275nov"](e,8).href)})}function oh(t){return o["\u0275vid"](0,[o["\u0275pid"](0,vt,[]),(t()(),o["\u0275eld"](1,0,null,null,12,"nav",[["class","navbar navbar-default navbar-main"]],null,null,null,null,null)),(t()(),o["\u0275eld"](2,0,null,null,8,"div",[["class","navbar-header tc_logo_component"]],null,null,null,null,null)),(t()(),o["\u0275eld"](3,0,null,null,1,"a",[["class","navbar-brand"],["href","#"]],null,null,null,null,null)),(t()(),o["\u0275eld"](4,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),o["\u0275eld"](5,0,null,null,5,"button",[["class","navbar-toggle collapsed"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.isCollapsed=!r.isCollapsed)&&a),a},null,null)),(t()(),o["\u0275eld"](6,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),o["\u0275ted"](-1,null,["Toggle navigation"])),(t()(),o["\u0275eld"](8,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),o["\u0275eld"](9,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),o["\u0275eld"](10,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,2,null,ih)),o["\u0275did"](12,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),o["\u0275pid"](131072,i.AsyncPipe,[o.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,12,0,o["\u0275unv"](e,12,0,o["\u0275nov"](e,13).transform(n.enabledFeature$)))},null)}var sh=n("ou9H"),uh=n("P6uZ"),ch=n("wbK0"),lh=function(){function t(){}return t.prototype.resolve=function(t){var 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(ec.a)(a)},t.prototype.getFullPath=function(t){return t.pathFromRoot.reduce(function(t,e){return t+e.url.reduce(function(t,e){return t+"/"+e.path},"")},"")},t}(),dh=function(){function t(t,e){var n=this;this.router=t,this.injector=e,this.crumbs=[],this.defaultResolver=new lh,this.subscription=this.router.events.pipe(Object(Nu.a)(function(t){return t instanceof tt.d})).subscribe(function(){n._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(Ru.a)(function(t){return t}),Object(sh.a)(function(t){return t.text}),Object(Du.a)(),Object(Ru.a)(function(t){var e=n.postProcess(t);return n.wrapIntoObservable(e).pipe(Object(uh.a)())})).subscribe(function(t){n.crumbs=t})})}return t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype._resolveCrumbs=function(t){var e,n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){var a=(n.breadcrumbs.prototype instanceof lh?this.injector.get(n.breadcrumbs):this.defaultResolver).resolve(t);e=this.wrapIntoObservable(a).pipe(Object(uh.a)())}else e=Object(ec.a)([]);return t.firstChild&&(e=e.pipe(Object(ch.a)(this._resolveCrumbs(t.firstChild)))),e},t.prototype.postProcess=function(t){var e=[];return t.forEach(function(t){var n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(var a=0;a<n.length-1;a++)e.push({text:n[a],path:null})}e.push(t)}),e},t.prototype.isPromise=function(t){return t&&"function"==typeof t.then},t.prototype.wrapIntoObservable=function(t){return t instanceof ro.a?t:this.isPromise(t)?Object(ku.a)(Promise.resolve(t)):Object(ec.a)(t)},t}(),ph=o["\u0275crt"]({encapsulation:0,styles:[[".breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:'\\f101'}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}"]],data:{}});function fh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](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!==o["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&a),a},null,null)),o["\u0275did"](1,671744,null,0,tt.o,[tt.l,tt.a,i.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),o["\u0275ted"](2,null,["",""]))],function(t,e){t(e,1,0,e.parent.context.$implicit.path)},function(t,e){t(e,0,0,o["\u0275nov"](e,1).target,o["\u0275nov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)})}function hh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),o["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.text)})}function gh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,6,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),o["\u0275did"](1,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](2,{active:0}),(t()(),o["\u0275and"](16777216,null,null,1,null,fh)),o["\u0275did"](4,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275and"](16777216,null,null,1,null,hh)),o["\u0275did"](6,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,e.context.last);t(e,1,0,"breadcrumb-item",n),t(e,4,0,!e.context.last&&null!==e.context.$implicit.path),t(e,6,0,e.context.last||null===e.context.$implicit.path)},null)}function mh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),o["\u0275and"](16777216,null,null,1,null,gh)),o["\u0275did"](2,278528,null,0,i.NgForOf,[o.ViewContainerRef,o.TemplateRef,o.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.crumbs)},null)}function bh(t){return o["\u0275vid"](0,[(t()(),o["\u0275and"](16777216,null,null,1,null,mh)),o["\u0275did"](1,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.crumbs.length)},null)}var yh=o["\u0275crt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}  #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 vh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,1,"cd-navigation",[],null,null,null,oh,Mf)),o["\u0275did"](1,114688,null,0,Pf,[d.a,Bi,Me.a,Dt.a],null,null)],function(t,e){t(e,1,0)},null)}function xh(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,12,"block-ui",[],null,null,null,C,k)),o["\u0275did"](1,114688,null,0,v,[y],null,null),(t()(),o["\u0275and"](16777216,null,0,1,null,vh)),o["\u0275did"](3,16384,null,0,i.NgIf,[o.ViewContainerRef,o.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),o["\u0275eld"](4,0,null,0,6,"div",[["class","container-fluid"]],null,null,null,null,null)),o["\u0275did"](5,278528,null,0,i.NgClass,[o.IterableDiffers,o.KeyValueDiffers,o.ElementRef,o.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),o["\u0275pod"](6,{"full-height":0,dashboard:1}),(t()(),o["\u0275eld"](7,0,null,null,1,"cd-breadcrumbs",[],null,null,null,bh,ph)),o["\u0275did"](8,180224,null,0,dh,[tt.l,o.Injector],null,null),(t()(),o["\u0275eld"](9,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),o["\u0275did"](10,212992,null,0,tt.q,[tt.b,o.ViewContainerRef,o.ComponentFactoryResolver,[8,null],o.ChangeDetectorRef],null,null),(t()(),o["\u0275eld"](11,0,null,0,1,"block-ui",[],null,null,null,C,k)),o["\u0275did"](12,114688,null,0,v,[y],null,null)],function(t,e){var n=e.component;t(e,1,0),t(e,3,0,!n.isLoginActive());var a=t(e,6,0,n.isLoginActive(),n.isDashboardPage());t(e,5,0,"container-fluid",a),t(e,10,0),t(e,12,0)},null)}function _h(t){return o["\u0275vid"](0,[(t()(),o["\u0275eld"](0,0,null,null,2,"cd-root",[],null,null,null,xh,yh)),o["\u0275prd"](5120,null,l.a,p,[]),o["\u0275did"](2,49152,null,0,f,[d.a,tt.l],null,null)],null,null)}var Th=o["\u0275ccf"]("cd-root",f,_h,{},{},[]),wh=new o.InjectionToken("JWT_OPTIONS"),Sh=function(){function t(t){void 0===t&&(t=null),this.tokenGetter=t&&t.tokenGetter||function(){}}return t.prototype.urlBase64Decode=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}return this.b64DecodeUnicode(e)},t.prototype.b64decode=function(t){var e="";if((t=String(t).replace(/=+$/,"")).length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var n=0,a=void 0,r=void 0,i=0;r=t.charAt(i++);~r&&(a=n%4?64*a+r:r,n++%4)?e+=String.fromCharCode(255&a>>(-2*n&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return e},t.prototype.b64DecodeUnicode=function(t){return decodeURIComponent(Array.prototype.map.call(this.b64decode(t),function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)}).join(""))},t.prototype.decodeToken=function(t){if(void 0===t&&(t=this.tokenGetter()),null===t)return null;var e=t.split(".");if(3!==e.length)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");var n=this.urlBase64Decode(e[1]);if(!n)throw new Error("Cannot decode the token.");return JSON.parse(n)},t.prototype.getTokenExpirationDate=function(t){var e;if(void 0===t&&(t=this.tokenGetter()),!(e=this.decodeToken(t)).hasOwnProperty("exp"))return null;var n=new Date(0);return n.setUTCSeconds(e.exp),n},t.prototype.isTokenExpired=function(t,e){if(void 0===t&&(t=this.tokenGetter()),null===t||""===t)return!0;var n=this.getTokenExpirationDate(t);return e=e||0,null===n||!(n.valueOf()>(new Date).valueOf()+1e3*e)},t}(),Oh=n("gTqA"),kh=n("CxY0"),Ch=function(){function t(t,e){this.jwtHelper=e,this.tokenGetter=t.tokenGetter,this.headerName=t.headerName||"Authorization",this.authScheme=t.authScheme||""===t.authScheme?t.authScheme:"Bearer ",this.whitelistedDomains=t.whitelistedDomains||[],this.blacklistedRoutes=t.blacklistedRoutes||[],this.throwNoTokenError=t.throwNoTokenError||!1,this.skipWhenExpired=t.skipWhenExpired}return t.prototype.isWhitelistedDomain=function(t){var e=Object(kh.parse)(t.url,!1,!0);return null===e.host||this.whitelistedDomains.findIndex(function(t){return"string"==typeof t?t===e.host:t instanceof RegExp&&t.test(e.host)})>-1},t.prototype.isBlacklistedRoute=function(t){var e=t.url;return this.blacklistedRoutes.findIndex(function(t){return"string"==typeof t?t===e:t instanceof RegExp&&t.test(e)})>-1},t.prototype.handleInterception=function(t,e,n){var a,r=!1;if(!t&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");return this.skipWhenExpired&&(r=!t||this.jwtHelper.isTokenExpired(t)),t&&r&&this.skipWhenExpired?e=e.clone():t&&this.isWhitelistedDomain(e)&&!this.isBlacklistedRoute(e)&&(e=e.clone({setHeaders:(a={},a[this.headerName]=""+this.authScheme+t,a)})),n.handle(e)},t.prototype.intercept=function(t,e){var n=this,a=this.tokenGetter();return a instanceof Promise?Object(Oh.from)(a).pipe(Object(Ru.a)(function(a){return n.handleInterception(a,t,e)})):this.handleInterception(a,t,e)},t}(),Ih=n("XlPw"),Rh=n("9Z1F"),Nh=function(){function t(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}return t.prototype.intercept=function(t,e){var n=this;return e.handle(t).pipe(Object(Rh.a)(function(t){if(t instanceof It.f){var e;switch(t.status){case 400:var a=new hu.a,r=t.error.task;pt.isPlainObject(r)?(r.metadata.component=r.metadata.component||t.error.component,a.name=r.name,a.metadata=r.metadata):a.metadata=t.error,a.success=!1,a.exception=t.error,e=n.notificationService.notifyTask(a);break;case 401:n.authStorageService.remove(),n.router.navigate(["/login"]);break;case 403:n.router.navigate(["/403"]);break;default:e=n.prepareNotification(t)}t.preventDefault=function(){n.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(Ih.a)(t)}))},t.prototype.prepareNotification=function(t){return this.notificationService.show(function(){var e="";return pt.isPlainObject(t.error)&&pt.isString(t.error.detail)?e=t.error.detail:pt.isString(t.error)?e=t.error:pt.isString(t.message)&&(e=t.message),new Ui.b($n.a.error,t.status+" - "+t.statusText,e,void 0,t.application)})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(tt.l),o.inject(d.a),o.inject(Zn.a))},token:t,providedIn:"root"}),t}(),Dh=n("ihYY");function Ah(){return"undefined"!=typeof process}function Eh(t){switch(t.length){case 0:return new Dh.d;case 1:return t[0];default:return new Dh.g(t)}}function Lh(t,e,n,a,r,i){void 0===r&&(r={}),void 0===i&&(i={});var o=[],s=[],u=-1,c=null;if(a.forEach(function(t){var n=t.offset,a=n==u,l=a&&c||{};Object.keys(t).forEach(function(n){var a=n,s=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,o),s){case Dh.h:s=r[n];break;case Dh.a:s=i[n];break;default:s=e.normalizeStyleValue(n,a,s,o)}l[a]=s}),a||s.push(l),c=l,u=n}),o.length)throw new Error("Unable to animate due to the following errors:\n - "+o.join("\n - "));return s}function Ph(t,e,n,a){switch(e){case"start":t.onStart(function(){return a(n&&Mh(n,"start",t))});break;case"done":t.onDone(function(){return a(n&&Mh(n,"done",t))});break;case"destroy":t.onDestroy(function(){return a(n&&Mh(n,"destroy",t))})}}function Mh(t,e,n){var a=n.totalTime,r=qh(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 qh(t,e,n,a,r,i,o){return void 0===r&&(r=""),void 0===i&&(i=0),{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!o}}function jh(t,e,n){var a;return t instanceof Map?(a=t.get(e))||t.set(e,a=n):(a=t[e])||(a=t[e]=n),a}function Fh(t){var e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}var zh=function(t,e){return!1},Gh=function(t,e){return!1},Yh=function(t,e,n){return[]},Hh=Ah();if(Hh||"undefined"!=typeof Element){if(zh=function(t,e){return t.contains(e)},Hh||Element.prototype.matches)Gh=function(t,e){return t.matches(e)};else{var Vh=Element.prototype,Bh=Vh.matchesSelector||Vh.mozMatchesSelector||Vh.msMatchesSelector||Vh.oMatchesSelector||Vh.webkitMatchesSelector;Bh&&(Gh=function(t,e){return Bh.apply(t,[e])})}Yh=function(t,e,n){var a=[];if(n)a.push.apply(a,Object(h.__spread)(t.querySelectorAll(e)));else{var r=t.querySelector(e);r&&a.push(r)}return a}}var Uh=null,Wh=!1;function Kh(t){Uh||(Uh=("undefined"!=typeof document?document.body:null)||{},Wh=!!Uh.style&&"WebkitAppearance"in Uh.style);var e=!0;return Uh.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&!(e=t in Uh.style)&&Wh&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in Uh.style),e}var $h=Gh,Zh=zh,Xh=Yh;function Jh(t){var e={};return Object.keys(t).forEach(function(n){var a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}var Qh=function(){function t(){}return t.prototype.validateStyleProperty=function(t){return Kh(t)},t.prototype.matchesElement=function(t,e){return $h(t,e)},t.prototype.containsElement=function(t,e){return Zh(t,e)},t.prototype.query=function(t,e,n){return Xh(t,e,n)},t.prototype.computeStyle=function(t,e,n){return n||""},t.prototype.animate=function(t,e,n,a,r,i,o){return void 0===i&&(i=[]),new Dh.d(n,a)},t}(),tg=function(){function t(){}return t.NOOP=new Qh,t}(),eg=1e3;function ng(t){if("number"==typeof t)return t;var e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:ag(parseFloat(e[1]),e[2])}function ag(t,e){switch(e){case"s":return t*eg;default:return t}}function rg(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){var a,r=0,i="";if("string"==typeof t){var o=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===o)return e.push('The provided timing value "'+t+'" is invalid.'),{duration:0,delay:0,easing:""};a=ag(parseFloat(o[1]),o[2]);var s=o[3];null!=s&&(r=ag(parseFloat(s),o[4]));var u=o[5];u&&(i=u)}else a=t;if(!n){var c=!1,l=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),c=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),c=!0),c&&e.splice(l,0,'The provided timing value "'+t+'" is invalid.')}return{duration:a,delay:r,easing:i}}(t,e,n)}function ig(t,e){return void 0===e&&(e={}),Object.keys(t).forEach(function(n){e[n]=t[n]}),e}function og(t,e,n){if(void 0===n&&(n={}),e)for(var a in t)n[a]=t[a];else ig(t,n);return n}function sg(t,e,n){return n?e+":"+n+";":""}function ug(t){for(var e="",n=0;n<t.style.length;n++)e+=sg(0,a=t.style.item(n),t.style.getPropertyValue(a));for(var a in t.style)t.style.hasOwnProperty(a)&&!a.startsWith("_")&&(e+=sg(0,a.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[a]));t.setAttribute("style",e)}function cg(t,e){t.style&&(Object.keys(e).forEach(function(n){var a=bg(n);t.style[a]=e[n]}),Ah()&&ug(t))}function lg(t,e){t.style&&(Object.keys(e).forEach(function(e){var n=bg(e);t.style[n]=""}),Ah()&&ug(t))}function dg(t){return Array.isArray(t)?1==t.length?t[0]:Object(Dh.e)(t):t}var pg=new RegExp("{{\\s*(.+?)\\s*}}","g");function fg(t){var e=[];if("string"==typeof t){for(var n=t.toString(),a=void 0;a=pg.exec(n);)e.push(a[1]);pg.lastIndex=0}return e}function hg(t,e,n){var a=t.toString(),r=a.replace(pg,function(t,a){var 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 gg(t){for(var e=[],n=t.next();!n.done;)e.push(n.value),n=t.next();return e}var mg=/-+([a-z0-9])/g;function bg(t){return t.replace(mg,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return t[1].toUpperCase()})}function yg(t,e){return 0===t||0===e}function vg(t,e,n){var a=Object.keys(n);if(a.length&&e.length){var r=e[0],i=[];if(a.forEach(function(t){r.hasOwnProperty(t)||i.push(t),r[t]=n[t]}),i.length)for(var o=function(){var n=e[s];i.forEach(function(e){n[e]=_g(t,e)})},s=1;s<e.length;s++)o()}return e}function xg(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 _g(t,e){return window.getComputedStyle(t)[e]}var Tg="*",wg=new Set(["true","1"]),Sg=new Set(["false","0"]);function Og(t,e){var n=wg.has(t)||Sg.has(t),a=wg.has(e)||Sg.has(e);return function(r,i){var o=t==Tg||t==r,s=e==Tg||e==i;return!o&&n&&"boolean"==typeof r&&(o=r?wg.has(t):Sg.has(t)),!s&&a&&"boolean"==typeof i&&(s=i?wg.has(e):Sg.has(e)),o&&s}}var kg=new RegExp("s*:selfs*,?","g");function Cg(t,e,n){return new Ig(t).build(e,n)}var Ig=function(){function t(t){this._driver=t}return t.prototype.build=function(t,e){var n=new Rg(e);return this._resetContextStyleTimingState(n),xg(this,dg(t),n)},t.prototype._resetContextStyleTimingState=function(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0},t.prototype.visitTrigger=function(t,e){var n=this,a=e.queryCount=0,r=e.depCount=0,i=[],o=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(function(t){if(n._resetContextStyleTimingState(e),0==t.type){var s=t,u=s.name;u.toString().split(/\s*,\s*/).forEach(function(t){s.name=t,i.push(n.visitState(s,e))}),s.name=u}else if(1==t.type){var c=n.visitTransition(t,e);a+=c.queryCount,r+=c.depCount,o.push(c)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:i,transitions:o,queryCount:a,depCount:r,options:null}},t.prototype.visitState=function(t,e){var n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){var r=new Set,i=a||{};if(n.styles.forEach(function(t){if(Ng(t)){var e=t;Object.keys(e).forEach(function(t){fg(e[t]).forEach(function(t){i.hasOwnProperty(t)||r.add(t)})})}}),r.size){var o=gg(r.values());e.errors.push('state("'+t.name+'", ...) must define default values for all the following style substitutions: '+o.join(", "))}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}},t.prototype.visitTransition=function(t,e){e.queryCount=0,e.depCount=0;var n,a,r,i=xg(this,dg(t.animation),e);return{type:1,matchers:(n=t.expr,a=e.errors,r=[],"string"==typeof n?n.split(/\s*,\s*/).forEach(function(t){return function(t,e,n){if(":"==t[0]){var a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return function(t,e){return parseFloat(e)>parseFloat(t)};case":decrement":return function(t,e){return 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}var r=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==r||r.length<4)return n.push('The provided transition expression "'+t+'" is not supported'),e;var i=r[1],o=r[2],s=r[3];e.push(Og(i,s)),"<"!=o[0]||i==Tg&&s==Tg||e.push(Og(s,i))}(t,r,a)}):r.push(n),r),animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Dg(t.options)}},t.prototype.visitSequence=function(t,e){var n=this;return{type:2,steps:t.steps.map(function(t){return xg(n,t,e)}),options:Dg(t.options)}},t.prototype.visitGroup=function(t,e){var n=this,a=e.currentTime,r=0,i=t.steps.map(function(t){e.currentTime=a;var i=xg(n,t,e);return r=Math.max(r,e.currentTime),i});return e.currentTime=r,{type:3,steps:i,options:Dg(t.options)}},t.prototype.visitAnimate=function(t,e){var n,a=function(t,e){var n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return Ag(rg(t,e).duration,0,"");var a=t;if(a.split(/\s+/).some(function(t){return"{"==t.charAt(0)&&"{"==t.charAt(1)})){var r=Ag(0,0,"");return r.dynamic=!0,r.strValue=a,r}return Ag((n=n||rg(a,e)).duration,n.delay,n.easing)}(t.timings,e.errors);e.currentAnimateTimings=a;var r=t.styles?t.styles:Object(Dh.f)({});if(5==r.type)n=this.visitKeyframes(r,e);else{var i=t.styles,o=!1;if(!i){o=!0;var s={};a.easing&&(s.easing=a.easing),i=Object(Dh.f)(s)}e.currentTime+=a.duration+a.delay;var u=this.visitStyle(i,e);u.isEmptyStep=o,n=u}return e.currentAnimateTimings=null,{type:4,timings:a,style:n,options:null}},t.prototype.visitStyle=function(t,e){var n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n},t.prototype._makeStyleAst=function(t,e){var n=[];Array.isArray(t.styles)?t.styles.forEach(function(t){"string"==typeof t?t==Dh.a?n.push(t):e.errors.push("The provided style string value "+t+" is not allowed."):n.push(t)}):n.push(t.styles);var a=!1,r=null;return n.forEach(function(t){if(Ng(t)){var e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(var i in e)if(e[i].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}},t.prototype._validateStyleAst=function(t,e){var n=this,a=e.currentAnimateTimings,r=e.currentTime,i=e.currentTime;a&&i>0&&(i-=a.duration+a.delay),t.styles.forEach(function(t){"string"!=typeof t&&Object.keys(t).forEach(function(a){if(n._driver.validateStyleProperty(a)){var o,s,u,c=e.collectedStyles[e.currentQuerySelector],l=c[a],d=!0;l&&(i!=r&&i>=l.startTime&&r<=l.endTime&&(e.errors.push('The CSS property "'+a+'" that exists between the times of "'+l.startTime+'ms" and "'+l.endTime+'ms" is also being animated in a parallel animation between the times of "'+i+'ms" and "'+r+'ms"'),d=!1),i=l.startTime),d&&(c[a]={startTime:i,endTime:r}),e.options&&(o=e.errors,s=e.options.params||{},(u=fg(t[a])).length&&u.forEach(function(t){s.hasOwnProperty(t)||o.push("Unable to resolve the local animation param "+t+" in the given list of values")}))}else e.errors.push('The provided animation property "'+a+'" is not a supported CSS property for animations')})})},t.prototype.visitKeyframes=function(t,e){var n=this,a={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),a;var r=0,i=[],o=!1,s=!1,u=0,c=t.steps.map(function(t){var a=n._makeStyleAst(t,e),c=null!=a.offset?a.offset:function(t){if("string"==typeof t)return null;var e=null;if(Array.isArray(t))t.forEach(function(t){if(Ng(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}});else if(Ng(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}return e}(a.styles),l=0;return null!=c&&(r++,l=a.offset=c),s=s||l<0||l>1,o=o||l<u,u=l,i.push(l),a});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),o&&e.errors.push("Please ensure that all keyframe offsets are in order");var l=t.steps.length,d=0;r>0&&r<l?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==r&&(d=1/(l-1));var p=l-1,f=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return c.forEach(function(t,r){var o=d>0?r==p?1:d*r:i[r],s=o*g;e.currentTime=f+h.delay+s,h.duration=s,n._validateStyleAst(t,e),t.offset=o,a.styles.push(t)}),a},t.prototype.visitReference=function(t,e){return{type:8,animation:xg(this,dg(t.animation),e),options:Dg(t.options)}},t.prototype.visitAnimateChild=function(t,e){return e.depCount++,{type:9,options:Dg(t.options)}},t.prototype.visitAnimateRef=function(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:Dg(t.options)}},t.prototype.visitQuery=function(t,e){var n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;var r=Object(h.__read)(function(t){var e=!!t.split(/\s*,\s*/).find(function(t){return":self"==t});return e&&(t=t.replace(kg,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,function(t){return".ng-trigger-"+t.substr(1)}).replace(/:animating/g,".ng-animating"),e]}(t.selector),2),i=r[0],o=r[1];e.currentQuerySelector=n.length?n+" "+i:i,jh(e.collectedStyles,e.currentQuerySelector,{});var s=xg(this,dg(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:i,limit:a.limit||0,optional:!!a.optional,includeSelf:o,animation:s,originalSelector:t.selector,options:Dg(t.options)}},t.prototype.visitStagger=function(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");var n="full"===t.timings?{duration:0,delay:0,easing:"full"}:rg(t.timings,e.errors,!0);return{type:12,animation:xg(this,dg(t.animation),e),timings:n,options:null}},t}(),Rg=function(){return function(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 Ng(t){return!Array.isArray(t)&&"object"==typeof t}function Dg(t){var e;return t?(t=ig(t)).params&&(t.params=(e=t.params)?ig(e):null):t={},t}function Ag(t,e,n){return{duration:t,delay:e,easing:n}}function Eg(t,e,n,a,r,i,o,s){return void 0===o&&(o=null),void 0===s&&(s=!1),{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:o,subTimeline:s}}var Lg=function(){function t(){this._map=new Map}return t.prototype.consume=function(t){var e=this._map.get(t);return e?this._map.delete(t):e=[],e},t.prototype.append=function(t,e){var n=this._map.get(t);n||this._map.set(t,n=[]),n.push.apply(n,Object(h.__spread)(e))},t.prototype.has=function(t){return this._map.has(t)},t.prototype.clear=function(){this._map.clear()},t}(),Pg=new RegExp(":enter","g"),Mg=new RegExp(":leave","g");function qg(t,e,n,a,r,i,o,s,u,c){return void 0===i&&(i={}),void 0===o&&(o={}),void 0===c&&(c=[]),(new jg).buildKeyframes(t,e,n,a,r,i,o,s,u,c)}var jg=function(){function t(){}return t.prototype.buildKeyframes=function(t,e,n,a,r,i,o,s,u,c){void 0===c&&(c=[]),u=u||new Lg;var l=new zg(t,e,u,a,r,c,[]);l.options=s,l.currentTimeline.setStyles([i],null,l.errors,s),xg(this,n,l);var d=l.timelines.filter(function(t){return t.containsAnimation()});if(d.length&&Object.keys(o).length){var p=d[d.length-1];p.allowOnlyTimelineStyles()||p.setStyles([o],null,l.errors,s)}return d.length?d.map(function(t){return t.buildKeyframes()}):[Eg(e,[],[],[],0,0,"",!1)]},t.prototype.visitTrigger=function(t,e){},t.prototype.visitState=function(t,e){},t.prototype.visitTransition=function(t,e){},t.prototype.visitAnimateChild=function(t,e){var n=e.subInstructions.consume(e.element);if(n){var a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t},t.prototype.visitAnimateRef=function(t,e){var n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t},t.prototype._visitSubInstructions=function(t,e,n){var a=e.currentTimeline.currentTime,r=null!=n.duration?ng(n.duration):null,i=null!=n.delay?ng(n.delay):null;return 0!==r&&t.forEach(function(t){var n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a},t.prototype.visitReference=function(t,e){e.updateOptions(t.options,!0),xg(this,t.animation,e),e.previousNode=t},t.prototype.visitSequence=function(t,e){var n=this,a=e.subContextCount,r=e,i=t.options;if(i&&(i.params||i.delay)&&((r=e.createSubContext(i)).transformIntoNewTimeline(),null!=i.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Fg);var o=ng(i.delay);r.delayNextStep(o)}t.steps.length&&(t.steps.forEach(function(t){return xg(n,t,r)}),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>a&&r.transformIntoNewTimeline()),e.previousNode=t},t.prototype.visitGroup=function(t,e){var n=this,a=[],r=e.currentTimeline.currentTime,i=t.options&&t.options.delay?ng(t.options.delay):0;t.steps.forEach(function(o){var s=e.createSubContext(t.options);i&&s.delayNextStep(i),xg(n,o,s),r=Math.max(r,s.currentTimeline.currentTime),a.push(s.currentTimeline)}),a.forEach(function(t){return e.currentTimeline.mergeTimelineCollectedStyles(t)}),e.transformIntoNewTimeline(r),e.previousNode=t},t.prototype._visitTiming=function(t,e){if(t.dynamic){var n=t.strValue;return rg(e.params?hg(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}},t.prototype.visitAnimate=function(t,e){var n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());var 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},t.prototype.visitStyle=function(t,e){var n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();var r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t},t.prototype.visitKeyframes=function(t,e){var n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(function(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},t.prototype.visitQuery=function(t,e){var n=this,a=e.currentTimeline.currentTime,r=t.options||{},i=r.delay?ng(r.delay):0;i&&(6===e.previousNode.type||0==a&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Fg);var o=a,s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=s.length;var u=null;s.forEach(function(a,r){e.currentQueryIndex=r;var s=e.createSubContext(t.options,a);i&&s.delayNextStep(i),a===e.element&&(u=s.currentTimeline),xg(n,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),o=Math.max(o,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(o),u&&(e.currentTimeline.mergeTimelineCollectedStyles(u),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t},t.prototype.visitStagger=function(t,e){var n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),o=i*(e.currentQueryTotal-1),s=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":s=o-s;break;case"full":s=n.currentStaggerTime}var u=e.currentTimeline;s&&u.delayNextStep(s);var c=u.currentTime;xg(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-c+(a.startTime-n.currentTimeline.startTime)},t}(),Fg={},zg=function(){function t(t,e,n,a,r,i,o,s){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=o,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Fg,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=s||new Gg(this._driver,e,0),o.push(this.currentTimeline)}return Object.defineProperty(t.prototype,"params",{get:function(){return this.options.params},enumerable:!0,configurable:!0}),t.prototype.updateOptions=function(t,e){var n=this;if(t){var a=t,r=this.options;null!=a.duration&&(r.duration=ng(a.duration)),null!=a.delay&&(r.delay=ng(a.delay));var i=a.params;if(i){var o=r.params;o||(o=this.options.params={}),Object.keys(i).forEach(function(t){e&&o.hasOwnProperty(t)||(o[t]=hg(i[t],o,n.errors))})}}},t.prototype._copyOptions=function(){var t={};if(this.options){var e=this.options.params;if(e){var n=t.params={};Object.keys(e).forEach(function(t){n[t]=e[t]})}}return t},t.prototype.createSubContext=function(e,n,a){void 0===e&&(e=null);var r=n||this.element,i=new t(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,a||0));return i.previousNode=this.previousNode,i.currentAnimateTimings=this.currentAnimateTimings,i.options=this._copyOptions(),i.updateOptions(e),i.currentQueryIndex=this.currentQueryIndex,i.currentQueryTotal=this.currentQueryTotal,i.parentContext=this,this.subContextCount++,i},t.prototype.transformIntoNewTimeline=function(t){return this.previousNode=Fg,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline},t.prototype.appendInstructionToTimeline=function(t,e,n){var a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new Yg(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a},t.prototype.incrementTime=function(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)},t.prototype.delayNextStep=function(t){t>0&&this.currentTimeline.delayNextStep(t)},t.prototype.invokeQuery=function(t,e,n,a,r,i){var o=[];if(a&&o.push(this.element),t.length>0){t=(t=t.replace(Pg,"."+this._enterClassName)).replace(Mg,"."+this._leaveClassName);var s=this._driver.query(this.element,t,1!=n);0!==n&&(s=n<0?s.slice(s.length+n,s.length):s.slice(0,n)),o.push.apply(o,Object(h.__spread)(s))}return r||0!=o.length||i.push('`query("'+e+'")` returned zero elements. (Use `query("'+e+'", { optional: true })` if you wish to allow this.)'),o},t}(),Gg=function(){function t(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()}return t.prototype.containsAnimation=function(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}},t.prototype.getCurrentStyleProperties=function(){return Object.keys(this._currentKeyframe)},Object.defineProperty(t.prototype,"currentTime",{get:function(){return this.startTime+this.duration},enumerable:!0,configurable:!0}),t.prototype.delayNextStep=function(t){var e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t},t.prototype.fork=function(e,n){return this.applyStylesToKeyframe(),new t(this._driver,e,n||this.currentTime,this._elementTimelineStylesLookup)},t.prototype._loadKeyframe=function(){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))},t.prototype.forwardFrame=function(){this.duration+=1,this._loadKeyframe()},t.prototype.forwardTime=function(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()},t.prototype._updateStyle=function(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}},t.prototype.allowOnlyTimelineStyles=function(){return this._currentEmptyStepKeyframe!==this._currentKeyframe},t.prototype.applyEmptyStep=function(t){var e=this;t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(function(t){e._backFill[t]=e._globalTimelineStyles[t]||Dh.a,e._currentKeyframe[t]=Dh.a}),this._currentEmptyStepKeyframe=this._currentKeyframe},t.prototype.setStyles=function(t,e,n,a){var r=this;e&&(this._previousKeyframe.easing=e);var i=a&&a.params||{},o=function(t,e){var n,a={};return t.forEach(function(t){"*"===t?(n=n||Object.keys(e)).forEach(function(t){a[t]=Dh.a}):og(t,!1,a)}),a}(t,this._globalTimelineStyles);Object.keys(o).forEach(function(t){var e=hg(o[t],i,n);r._pendingStyles[t]=e,r._localTimelineStyles.hasOwnProperty(t)||(r._backFill[t]=r._globalTimelineStyles.hasOwnProperty(t)?r._globalTimelineStyles[t]:Dh.a),r._updateStyle(t,e)})},t.prototype.applyStylesToKeyframe=function(){var t=this,e=this._pendingStyles,n=Object.keys(e);0!=n.length&&(this._pendingStyles={},n.forEach(function(n){t._currentKeyframe[n]=e[n]}),Object.keys(this._localTimelineStyles).forEach(function(e){t._currentKeyframe.hasOwnProperty(e)||(t._currentKeyframe[e]=t._localTimelineStyles[e])}))},t.prototype.snapshotCurrentStyles=function(){var t=this;Object.keys(this._localTimelineStyles).forEach(function(e){var n=t._localTimelineStyles[e];t._pendingStyles[e]=n,t._updateStyle(e,n)})},t.prototype.getFinalKeyframe=function(){return this._keyframes.get(this.duration)},Object.defineProperty(t.prototype,"properties",{get:function(){var t=[];for(var e in this._currentKeyframe)t.push(e);return t},enumerable:!0,configurable:!0}),t.prototype.mergeTimelineCollectedStyles=function(t){var e=this;Object.keys(t._styleSummary).forEach(function(n){var a=e._styleSummary[n],r=t._styleSummary[n];(!a||r.time>a.time)&&e._updateStyle(n,r.value)})},t.prototype.buildKeyframes=function(){var t=this;this.applyStylesToKeyframe();var e=new Set,n=new Set,a=1===this._keyframes.size&&0===this.duration,r=[];this._keyframes.forEach(function(i,o){var s=og(i,!0);Object.keys(s).forEach(function(t){var a=s[t];a==Dh.h?e.add(t):a==Dh.a&&n.add(t)}),a||(s.offset=o/t.duration),r.push(s)});var i=e.size?gg(e.values()):[],o=n.size?gg(n.values()):[];if(a){var s=r[0],u=ig(s);s.offset=0,u.offset=1,r=[s,u]}return Eg(this.element,r,i,o,this.duration,this.startTime,this.easing,!1)},t}(),Yg=function(t){function e(e,n,a,r,i,o,s){void 0===s&&(s=!1);var u=t.call(this,e,n,o.delay)||this;return u.element=n,u.keyframes=a,u.preStyleProps=r,u.postStyleProps=i,u._stretchStartingKeyframe=s,u.timings={duration:o.duration,delay:o.delay,easing:o.easing},u}return Object(h.__extends)(e,t),e.prototype.containsAnimation=function(){return this.keyframes.length>1},e.prototype.buildKeyframes=function(){var t=this.keyframes,e=this.timings,n=e.delay,a=e.duration,r=e.easing;if(this._stretchStartingKeyframe&&n){var i=[],o=a+n,s=n/o,u=og(t[0],!1);u.offset=0,i.push(u);var c=og(t[0],!1);c.offset=Hg(s),i.push(c);for(var l=t.length-1,d=1;d<=l;d++){var p=og(t[d],!1);p.offset=Hg((n+p.offset*a)/o),i.push(p)}a=o,n=0,r="",t=i}return Eg(this.element,t,this.preStyleProps,this.postStyleProps,a,n,r,!0)},e}(Gg);function Hg(t,e){void 0===e&&(e=3);var n=Math.pow(10,e-1);return Math.round(t*n)/n}var Vg=function(){return function(){}}(),Bg=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(h.__extends)(e,t),e.prototype.normalizePropertyName=function(t,e){return bg(t)},e.prototype.normalizeStyleValue=function(t,e,n,a){var r="",i=n.toString().trim();if(Ug[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{var o=n.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&0==o[1].length&&a.push("Please provide a CSS unit value for "+t+":"+n)}return i+r},e}(Vg),Ug=Wg("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 Wg(t){var e={};return t.forEach(function(t){return e[t]=!0}),e}function Kg(t,e,n,a,r,i,o,s,u,c,l,d,p){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:o,timelines:s,queriedElements:u,preStyleProps:c,postStyleProps:l,totalTime:d,errors:p}}var $g={},Zg=function(){function t(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}return t.prototype.match=function(t,e,n,a){return function(t,e,n,a,r){return t.some(function(t){return t(e,n,a,r)})}(this.ast.matchers,t,e,n,a)},t.prototype.buildStyles=function(t,e,n){var a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i},t.prototype.build=function(t,e,n,a,r,i,o,s,u,c){var l=[],d=this.ast.options&&this.ast.options.params||$g,p=this.buildStyles(n,o&&o.params||$g,l),f=s&&s.params||$g,g=this.buildStyles(a,f,l),m=new Set,b=new Map,y=new Map,v="void"===a,x={params:Object(h.__assign)({},d,f)},_=c?[]:qg(t,e,this.ast.animation,r,i,p,g,x,u,l),T=0;if(_.forEach(function(t){T=Math.max(t.duration+t.delay,T)}),l.length)return Kg(e,this._triggerName,n,a,v,p,g,[],[],b,y,T,l);_.forEach(function(t){var n=t.element,a=jh(b,n,{});t.preStyleProps.forEach(function(t){return a[t]=!0});var r=jh(y,n,{});t.postStyleProps.forEach(function(t){return r[t]=!0}),n!==e&&m.add(n)});var w=gg(m.values());return Kg(e,this._triggerName,n,a,v,p,g,_,w,b,y,T)},t}(),Xg=function(){function t(t,e){this.styles=t,this.defaultParams=e}return t.prototype.buildStyles=function(t,e){var n={},a=ig(this.defaultParams);return Object.keys(t).forEach(function(e){var n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(function(t){if("string"!=typeof t){var r=t;Object.keys(r).forEach(function(t){var i=r[t];i.length>1&&(i=hg(i,a,e)),n[t]=i})}}),n},t}(),Jg=function(){function t(t,e){var n=this;this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(function(t){n.states[t.name]=new Xg(t.style,t.options&&t.options.params||{})}),Qg(this.states,"true","1"),Qg(this.states,"false","0"),e.transitions.forEach(function(e){n.transitionFactories.push(new Zg(t,e,n.states))}),this.fallbackTransition=new Zg(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[function(t,e){return!0}],options:null,queryCount:0,depCount:0},this.states)}return Object.defineProperty(t.prototype,"containsQueries",{get:function(){return this.ast.queryCount>0},enumerable:!0,configurable:!0}),t.prototype.matchTransition=function(t,e,n,a){return this.transitionFactories.find(function(r){return r.match(t,e,n,a)})||null},t.prototype.matchStyles=function(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)},t}();function Qg(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}var tm=new Lg,em=function(){function t(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}return t.prototype.register=function(t,e){var n=[],a=Cg(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},t.prototype._buildPlayer=function(t,e,n){var a=t.element,r=Lh(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)},t.prototype.create=function(t,e,n){var a=this;void 0===n&&(n={});var r,i=[],o=this._animations[t],s=new Map;if(o?(r=qg(this._driver,e,o,"ng-enter","ng-leave",{},{},n,tm,i)).forEach(function(t){var e=jh(s,t.element,{});t.postStyleProps.forEach(function(t){return e[t]=null})}):(i.push("The requested animation doesn't exist or has already been destroyed"),r=[]),i.length)throw new Error("Unable to create the animation due to the following errors: "+i.join("\n"));s.forEach(function(t,e){Object.keys(t).forEach(function(n){t[n]=a._driver.computeStyle(e,n,Dh.a)})});var u=Eh(r.map(function(t){var e=s.get(t.element);return a._buildPlayer(t,{},e)}));return this._playersById[t]=u,u.onDestroy(function(){return a.destroy(t)}),this.players.push(u),u},t.prototype.destroy=function(t){var e=this._getPlayer(t);e.destroy(),delete this._playersById[t];var n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)},t.prototype._getPlayer=function(t){var e=this._playersById[t];if(!e)throw new Error("Unable to find the timeline player referenced by "+t);return e},t.prototype.listen=function(t,e,n,a){var r=qh(e,"","","");return Ph(this._getPlayer(t),n,r,a),function(){}},t.prototype.command=function(t,e,n,a){if("register"!=n)if("create"!=n){var 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)}}else this.create(t,e,a[0]||{});else this.register(t,a[0])},t}(),nm=[],am={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},rm={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},im="__ng_removed",om=function(){function t(t,e){void 0===e&&(e=""),this.namespaceId=e;var n=t&&t.hasOwnProperty("value");if(this.value=function(t){return null!=t?t:null}(n?t.value:t),n){var a=ig(t);delete a.value,this.options=a}else this.options={};this.options.params||(this.options.params={})}return Object.defineProperty(t.prototype,"params",{get:function(){return this.options.params},enumerable:!0,configurable:!0}),t.prototype.absorbOptions=function(t){var e=t.params;if(e){var n=this.options.params;Object.keys(e).forEach(function(t){null==n[t]&&(n[t]=e[t])})}},t}(),sm=new om("void"),um=function(){function t(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,mm(e,this._hostClassName)}return t.prototype.listen=function(t,e,n,a){var r,i=this;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 o=jh(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};o.push(s);var u=jh(this._engine.statesByElement,t,{});return u.hasOwnProperty(e)||(mm(t,"ng-trigger"),mm(t,"ng-trigger-"+e),u[e]=sm),function(){i._engine.afterFlush(function(){var t=o.indexOf(s);t>=0&&o.splice(t,1),i._triggers[e]||delete u[e]})}},t.prototype.register=function(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)},t.prototype._getTrigger=function(t){var e=this._triggers[t];if(!e)throw new Error('The provided animation trigger "'+t+'" has not been registered!');return e},t.prototype.trigger=function(t,e,n,a){var r=this;void 0===a&&(a=!0);var i=this._getTrigger(e),o=new lm(this.id,e,t),s=this._engine.statesByElement.get(t);s||(mm(t,"ng-trigger"),mm(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));var u=s[e],c=new om(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&u&&c.absorbOptions(u.options),s[e]=c,u||(u=sm),"void"===c.value||u.value!==c.value){var l=jh(this._engine.playersByElement,t,[]);l.forEach(function(t){t.namespaceId==r.id&&t.triggerName==e&&t.queued&&t.destroy()});var d=i.matchTransition(u.value,c.value,t,c.params),p=!1;if(!d){if(!a)return;d=i.fallbackTransition,p=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:d,fromState:u,toState:c,player:o,isFallbackTransition:p}),p||(mm(t,"ng-animate-queued"),o.onStart(function(){bm(t,"ng-animate-queued")})),o.onDone(function(){var e=r.players.indexOf(o);e>=0&&r.players.splice(e,1);var n=r._engine.playersByElement.get(t);if(n){var a=n.indexOf(o);a>=0&&n.splice(a,1)}}),this.players.push(o),l.push(o),o}if(!function(t,e){var n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(!e.hasOwnProperty(i)||t[i]!==e[i])return!1}return!0}(u.params,c.params)){var f=[],h=i.matchStyles(u.value,u.params,f),g=i.matchStyles(c.value,c.params,f);f.length?this._engine.reportError(f):this._engine.afterFlush(function(){lg(t,h),cg(t,g)})}},t.prototype.deregister=function(t){var e=this;delete this._triggers[t],this._engine.statesByElement.forEach(function(e,n){delete e[t]}),this._elementListeners.forEach(function(n,a){e._elementListeners.set(a,n.filter(function(e){return e.name!=t}))})},t.prototype.clearElementCache=function(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);var e=this._engine.playersByElement.get(t);e&&(e.forEach(function(t){return t.destroy()}),this._engine.playersByElement.delete(t))},t.prototype._signalRemovalForInnerTriggers=function(t,e,n){var a=this;void 0===n&&(n=!1),this._engine.driver.query(t,".ng-trigger",!0).forEach(function(t){if(!t[im]){var n=a._engine.fetchNamespacesByElement(t);n.size?n.forEach(function(n){return n.triggerLeaveAnimation(t,e,!1,!0)}):a.clearElementCache(t)}})},t.prototype.triggerLeaveAnimation=function(t,e,n,a){var r=this,i=this._engine.statesByElement.get(t);if(i){var o=[];if(Object.keys(i).forEach(function(e){if(r._triggers[e]){var n=r.trigger(t,e,"void",a);n&&o.push(n)}}),o.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&Eh(o).onDone(function(){return r._engine.processLeaveNode(t)}),!0}return!1},t.prototype.prepareLeaveAnimationListeners=function(t){var e=this,n=this._elementListeners.get(t);if(n){var a=new Set;n.forEach(function(n){var r=n.name;if(!a.has(r)){a.add(r);var i=e._triggers[r].fallbackTransition,o=e._engine.statesByElement.get(t)[r]||sm,s=new om("void"),u=new lm(e.id,r,t);e._engine.totalQueuedPlayers++,e._queue.push({element:t,triggerName:r,transition:i,fromState:o,toState:s,player:u,isFallbackTransition:!0})}})}},t.prototype.removeNode=function(t,e){var n=this,a=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),!this.triggerLeaveAnimation(t,e,!0)){var r=!1;if(a.totalAnimations){var i=a.players.length?a.playersByQueriedElement.get(t):[];if(i&&i.length)r=!0;else for(var o=t;o=o.parentNode;)if(a.statesByElement.get(o)){r=!0;break}}this.prepareLeaveAnimationListeners(t),r?a.markElementAsRemoved(this.id,t,!1,e):(a.afterFlush(function(){return n.clearElementCache(t)}),a.destroyInnerAnimations(t),a._onRemovalComplete(t,e))}},t.prototype.insertNode=function(t,e){mm(t,this._hostClassName)},t.prototype.drainQueuedTransitions=function(t){var e=this,n=[];return this._queue.forEach(function(a){var r=a.player;if(!r.destroyed){var i=a.element,o=e._elementListeners.get(i);o&&o.forEach(function(e){if(e.name==a.triggerName){var n=qh(i,a.triggerName,a.fromState.value,a.toState.value);n._data=t,Ph(a.player,e.phase,n,e.callback)}}),r.markedForDestroy?e._engine.afterFlush(function(){r.destroy()}):n.push(a)}}),this._queue=[],n.sort(function(t,n){var a=t.transition.ast.depCount,r=n.transition.ast.depCount;return 0==a||0==r?a-r:e._engine.driver.containsElement(t.element,n.element)?1:-1})},t.prototype.destroy=function(t){this.players.forEach(function(t){return t.destroy()}),this._signalRemovalForInnerTriggers(this.hostElement,t)},t.prototype.elementContainsData=function(t){var e=!1;return this._elementListeners.has(t)&&(e=!0),!!this._queue.find(function(e){return e.element===t})||e},t}(),cm=function(){function t(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=function(t,e){}}return t.prototype._onRemovalComplete=function(t,e){this.onRemovalComplete(t,e)},Object.defineProperty(t.prototype,"queuedPlayers",{get:function(){var t=[];return this._namespaceList.forEach(function(e){e.players.forEach(function(e){e.queued&&t.push(e)})}),t},enumerable:!0,configurable:!0}),t.prototype.createNamespace=function(t,e){var n=new um(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n},t.prototype._balanceNamespaceList=function(t,e){var n=this._namespaceList.length-1;if(n>=0){for(var a=!1,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},t.prototype.register=function(t,e){var n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n},t.prototype.registerTrigger=function(t,e,n){var a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++},t.prototype.destroy=function(t,e){var n=this;if(t){var a=this._fetchNamespace(t);this.afterFlush(function(){n.namespacesByHostElement.delete(a.hostElement),delete n._namespaceLookup[t];var e=n._namespaceList.indexOf(a);e>=0&&n._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(function(){return a.destroy(e)})}},t.prototype._fetchNamespace=function(t){return this._namespaceLookup[t]},t.prototype.fetchNamespacesByElement=function(t){var e=new Set,n=this.statesByElement.get(t);if(n)for(var a=Object.keys(n),r=0;r<a.length;r++){var i=n[a[r]].namespaceId;if(i){var o=this._fetchNamespace(i);o&&e.add(o)}}return e},t.prototype.trigger=function(t,e,n,a){if(dm(e)){var r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1},t.prototype.insertNode=function(t,e,n,a){if(dm(e)){var r=e[im];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;var i=this.collectedLeaveElements.indexOf(e);i>=0&&this.collectedLeaveElements.splice(i,1)}if(t){var o=this._fetchNamespace(t);o&&o.insertNode(e,n)}a&&this.collectEnterElement(e)}},t.prototype.collectEnterElement=function(t){this.collectedEnterElements.push(t)},t.prototype.markElementAsDisabled=function(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),mm(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),bm(t,"ng-animate-disabled"))},t.prototype.removeNode=function(t,e,n){if(dm(e)){var a=t?this._fetchNamespace(t):null;a?a.removeNode(e,n):this.markElementAsRemoved(t,e,!1,n)}else this._onRemovalComplete(e,n)},t.prototype.markElementAsRemoved=function(t,e,n,a){this.collectedLeaveElements.push(e),e[im]={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}},t.prototype.listen=function(t,e,n,a,r){return dm(e)?this._fetchNamespace(t).listen(e,n,a,r):function(){}},t.prototype._buildInstruction=function(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)},t.prototype.destroyInnerAnimations=function(t){var e=this,n=this.driver.query(t,".ng-trigger",!0);n.forEach(function(t){return e.destroyActiveAnimationsForElement(t)}),0!=this.playersByQueriedElement.size&&(n=this.driver.query(t,".ng-animating",!0)).forEach(function(t){return e.finishActiveQueriedAnimationOnElement(t)})},t.prototype.destroyActiveAnimationsForElement=function(t){var e=this.playersByElement.get(t);e&&e.forEach(function(t){t.queued?t.markedForDestroy=!0:t.destroy()})},t.prototype.finishActiveQueriedAnimationOnElement=function(t){var e=this.playersByQueriedElement.get(t);e&&e.forEach(function(t){return t.finish()})},t.prototype.whenRenderingDone=function(){var t=this;return new Promise(function(e){if(t.players.length)return Eh(t.players).onDone(function(){return e()});e()})},t.prototype.processLeaveNode=function(t){var e=this,n=t[im];if(n&&n.setForRemoval){if(t[im]=am,n.namespaceId){this.destroyInnerAnimations(t);var a=this._fetchNamespace(n.namespaceId);a&&a.clearElementCache(t)}this._onRemovalComplete(t,n.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(function(t){e.markElementAsDisabled(t,!1)})},t.prototype.flush=function(t){var e=this;void 0===t&&(t=-1);var n=[];if(this.newHostElements.size&&(this.newHostElements.forEach(function(t,n){return e._balanceNamespaceList(t,n)}),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(var a=0;a<this.collectedEnterElements.length;a++)mm(this.collectedEnterElements[a],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){var r=[];try{n=this._flushAnimations(r,t)}finally{for(a=0;a<r.length;a++)r[a]()}}else for(a=0;a<this.collectedLeaveElements.length;a++)this.processLeaveNode(this.collectedLeaveElements[a]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(function(t){return t()}),this._flushFns=[],this._whenQuietFns.length){var i=this._whenQuietFns;this._whenQuietFns=[],n.length?Eh(n).onDone(function(){i.forEach(function(t){return t()})}):i.forEach(function(t){return t()})}},t.prototype.reportError=function(t){throw new Error("Unable to process animations due to the following failed trigger transitions\n "+t.join("\n"))},t.prototype._flushAnimations=function(t,e){var n=this,a=new Lg,r=[],i=new Map,o=[],s=new Map,u=new Map,c=new Map,l=new Set;this.disabledNodes.forEach(function(t){l.add(t);for(var e=n.driver.query(t,".ng-animate-queued",!0),a=0;a<e.length;a++)l.add(e[a])});var d=this.bodyNode,p=Array.from(this.statesByElement.keys()),f=hm(p,this.collectedEnterElements),g=new Map,m=0;f.forEach(function(t,e){var n="ng-enter"+m++;g.set(e,n),t.forEach(function(t){return mm(t,n)})});for(var b=[],y=new Set,v=new Set,x=0;x<this.collectedLeaveElements.length;x++)(q=(M=this.collectedLeaveElements[x])[im])&&q.setForRemoval&&(b.push(M),y.add(M),q.hasAnimation?this.driver.query(M,".ng-star-inserted",!0).forEach(function(t){return y.add(t)}):v.add(M));var _=new Map,T=hm(p,Array.from(y));T.forEach(function(t,e){var n="ng-leave"+m++;_.set(e,n),t.forEach(function(t){return mm(t,n)})}),t.push(function(){f.forEach(function(t,e){var n=g.get(e);t.forEach(function(t){return bm(t,n)})}),T.forEach(function(t,e){var n=_.get(e);t.forEach(function(t){return bm(t,n)})}),b.forEach(function(t){n.processLeaveNode(t)})});for(var w=[],S=[],O=this._namespaceList.length-1;O>=0;O--)this._namespaceList[O].drainQueuedTransitions(e).forEach(function(t){var e=t.player,i=t.element;if(w.push(e),n.collectedEnterElements.length){var l=i[im];if(l&&l.setForMove)return void e.destroy()}var p=!d||!n.driver.containsElement(d,i),f=_.get(i),h=g.get(i),m=n._buildInstruction(t,a,h,f,p);if(m.errors&&m.errors.length)S.push(m);else{if(p)return e.onStart(function(){return lg(i,m.fromStyles)}),e.onDestroy(function(){return cg(i,m.toStyles)}),void r.push(e);if(t.isFallbackTransition)return e.onStart(function(){return lg(i,m.fromStyles)}),e.onDestroy(function(){return cg(i,m.toStyles)}),void r.push(e);m.timelines.forEach(function(t){return t.stretchStartingKeyframe=!0}),a.append(i,m.timelines),o.push({instruction:m,player:e,element:i}),m.queriedElements.forEach(function(t){return jh(s,t,[]).push(e)}),m.preStyleProps.forEach(function(t,e){var n=Object.keys(t);if(n.length){var a=u.get(e);a||u.set(e,a=new Set),n.forEach(function(t){return a.add(t)})}}),m.postStyleProps.forEach(function(t,e){var n=Object.keys(t),a=c.get(e);a||c.set(e,a=new Set),n.forEach(function(t){return a.add(t)})})}});if(S.length){var k=[];S.forEach(function(t){k.push("@"+t.triggerName+" has failed due to:\n"),t.errors.forEach(function(t){return k.push("- "+t+"\n")})}),w.forEach(function(t){return t.destroy()}),this.reportError(k)}var C=new Map,I=new Map;o.forEach(function(t){var e=t.element;a.has(e)&&(I.set(e,e),n._beforeAnimationBuild(t.player.namespaceId,t.instruction,C))}),r.forEach(function(t){var e=t.element;n._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(function(t){jh(C,e,[]).push(t),t.destroy()})});var R=b.filter(function(t){return vm(t,u,c)}),N=new Map;fm(N,this.driver,v,c,Dh.a).forEach(function(t){vm(t,u,c)&&R.push(t)});var D=new Map;f.forEach(function(t,e){fm(D,n.driver,new Set(t),u,Dh.h)}),R.forEach(function(t){var e=N.get(t),n=D.get(t);N.set(t,Object(h.__assign)({},e,n))});var A=[],E=[],L={};o.forEach(function(t){var e=t.element,o=t.player,s=t.instruction;if(a.has(e)){if(l.has(e))return o.onDestroy(function(){return cg(e,s.toStyles)}),o.disabled=!0,o.overrideTotalTime(s.totalTime),void r.push(o);var u=L;if(I.size>1){for(var c=e,d=[];c=c.parentNode;){var p=I.get(c);if(p){u=p;break}d.push(c)}d.forEach(function(t){return I.set(t,u)})}var f=n._buildAnimation(o.namespaceId,s,C,i,D,N);if(o.setRealPlayer(f),u===L)A.push(o);else{var h=n.playersByElement.get(u);h&&h.length&&(o.parentPlayer=Eh(h)),r.push(o)}}else lg(e,s.fromStyles),o.onDestroy(function(){return cg(e,s.toStyles)}),E.push(o),l.has(e)&&r.push(o)}),E.forEach(function(t){var e=i.get(t.element);if(e&&e.length){var n=Eh(e);t.setRealPlayer(n)}}),r.forEach(function(t){t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(var P=0;P<b.length;P++){var M,q=(M=b[P])[im];if(bm(M,"ng-leave"),!q||!q.hasAnimation){var j=[];if(s.size){var F=s.get(M);F&&F.length&&j.push.apply(j,Object(h.__spread)(F));for(var z=this.driver.query(M,".ng-animating",!0),G=0;G<z.length;G++){var Y=s.get(z[G]);Y&&Y.length&&j.push.apply(j,Object(h.__spread)(Y))}}var H=j.filter(function(t){return!t.destroyed});H.length?ym(this,M,H):this.processLeaveNode(M)}}return b.length=0,A.forEach(function(t){n.players.push(t),t.onDone(function(){t.destroy();var e=n.players.indexOf(t);n.players.splice(e,1)}),t.play()}),A},t.prototype.elementContainsData=function(t,e){var n=!1,a=e[im];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},t.prototype.afterFlush=function(t){this._flushFns.push(t)},t.prototype.afterFlushAnimationsDone=function(t){this._whenQuietFns.push(t)},t.prototype._getPreviousPlayers=function(t,e,n,a,r){var i=[];if(e){var o=this.playersByQueriedElement.get(t);o&&(i=o)}else{var s=this.playersByElement.get(t);if(s){var u=!r||"void"==r;s.forEach(function(t){t.queued||(u||t.triggerName==a)&&i.push(t)})}}return(n||a)&&(i=i.filter(function(t){return!(n&&n!=t.namespaceId||a&&a!=t.triggerName)})),i},t.prototype._beforeAnimationBuild=function(t,e,n){var a,r,i=e.element,o=e.isRemovalTransition?void 0:t,s=e.isRemovalTransition?void 0:e.triggerName,u=function(t){var a=t.element,r=a!==i,u=jh(n,a,[]);c._getPreviousPlayers(a,r,o,s,e.toState).forEach(function(t){var e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),u.push(t)})},c=this;try{for(var l=Object(h.__values)(e.timelines),d=l.next();!d.done;d=l.next())u(d.value)}catch(p){a={error:p}}finally{try{d&&!d.done&&(r=l.return)&&r.call(l)}finally{if(a)throw a.error}}lg(i,e.fromStyles)},t.prototype._buildAnimation=function(t,e,n,a,r,i){var o=this,s=e.triggerName,u=e.element,c=[],l=new Set,d=new Set,p=e.timelines.map(function(e){var p=e.element;l.add(p);var f=p[im];if(f&&f.removedBeforeQueried)return new Dh.d(e.duration,e.delay);var h,g,m=p!==u,b=(h=(n.get(p)||nm).map(function(t){return t.getRealPlayer()}),g=[],function t(e,n){for(var a=0;a<e.length;a++){var r=e[a];r instanceof Dh.g?t(r.players,n):n.push(r)}}(h,g),g).filter(function(t){return!!t.element&&t.element===p}),y=r.get(p),v=i.get(p),x=Lh(0,o._normalizer,0,e.keyframes,y,v),_=o._buildPlayer(e,x,b);if(e.subTimeline&&a&&d.add(p),m){var T=new lm(t,s,p);T.setRealPlayer(_),c.push(T)}return _});c.forEach(function(t){jh(o.playersByQueriedElement,t.element,[]).push(t),t.onDone(function(){return function(t,e,n){var a;if(t instanceof Map){if(a=t.get(e)){if(a.length){var r=a.indexOf(n);a.splice(r,1)}0==a.length&&t.delete(e)}}else(a=t[e])&&(a.length&&(r=a.indexOf(n),a.splice(r,1)),0==a.length&&delete t[e]);return a}(o.playersByQueriedElement,t.element,t)})}),l.forEach(function(t){return mm(t,"ng-animating")});var f=Eh(p);return f.onDestroy(function(){l.forEach(function(t){return bm(t,"ng-animating")}),cg(u,e.toStyles)}),d.forEach(function(t){jh(a,t,[]).push(f)}),f},t.prototype._buildPlayer=function(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new Dh.d(t.duration,t.delay)},t}(),lm=function(){function t(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new Dh.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}return t.prototype.setRealPlayer=function(t){var e=this;this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(function(n){e._queuedCallbacks[n].forEach(function(e){return Ph(t,n,void 0,e)})}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)},t.prototype.getRealPlayer=function(){return this._player},t.prototype.overrideTotalTime=function(t){this.totalTime=t},t.prototype.syncPlayerEvents=function(t){var e=this,n=this._player;n.triggerCallback&&t.onStart(function(){return n.triggerCallback("start")}),t.onDone(function(){return e.finish()}),t.onDestroy(function(){return e.destroy()})},t.prototype._queueEvent=function(t,e){jh(this._queuedCallbacks,t,[]).push(e)},t.prototype.onDone=function(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)},t.prototype.onStart=function(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)},t.prototype.onDestroy=function(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)},t.prototype.init=function(){this._player.init()},t.prototype.hasStarted=function(){return!this.queued&&this._player.hasStarted()},t.prototype.play=function(){!this.queued&&this._player.play()},t.prototype.pause=function(){!this.queued&&this._player.pause()},t.prototype.restart=function(){!this.queued&&this._player.restart()},t.prototype.finish=function(){this._player.finish()},t.prototype.destroy=function(){this.destroyed=!0,this._player.destroy()},t.prototype.reset=function(){!this.queued&&this._player.reset()},t.prototype.setPosition=function(t){this.queued||this._player.setPosition(t)},t.prototype.getPosition=function(){return this.queued?0:this._player.getPosition()},t.prototype.triggerCallback=function(t){var e=this._player;e.triggerCallback&&e.triggerCallback(t)},t}();function dm(t){return t&&1===t.nodeType}function pm(t,e){var n=t.style.display;return t.style.display=null!=e?e:"none",n}function fm(t,e,n,a,r){var i=[];n.forEach(function(t){return i.push(pm(t))});var o=[];a.forEach(function(n,a){var i={};n.forEach(function(t){var n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a[im]=rm,o.push(a))}),t.set(a,i)});var s=0;return n.forEach(function(t){return pm(t,i[s++])}),o}function hm(t,e){var n=new Map;if(t.forEach(function(t){return n.set(t,[])}),0==e.length)return n;var a=new Set(e),r=new Map;return e.forEach(function(t){var e=function t(e){if(!e)return 1;var i=r.get(e);if(i)return i;var o=e.parentNode;return i=n.has(o)?o:a.has(o)?1:t(o),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}var gm="$$classes";function mm(t,e){if(t.classList)t.classList.add(e);else{var n=t[gm];n||(n=t[gm]={}),n[e]=!0}}function bm(t,e){if(t.classList)t.classList.remove(e);else{var n=t[gm];n&&delete n[e]}}function ym(t,e,n){Eh(n).onDone(function(){return t.processLeaveNode(e)})}function vm(t,e,n){var a=n.get(t);if(!a)return!1;var r=e.get(t);return r?a.forEach(function(t){return r.add(t)}):e.set(t,a),n.delete(t),!0}var xm=function(){function t(t,e,n){var a=this;this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=function(t,e){},this._transitionEngine=new cm(t,e,n),this._timelineEngine=new em(t,e,n),this._transitionEngine.onRemovalComplete=function(t,e){return a.onRemovalComplete(t,e)}}return t.prototype.registerTrigger=function(t,e,n,a,r){var i=t+"-"+a,o=this._triggerCache[i];if(!o){var s=[],u=Cg(this._driver,r,s);if(s.length)throw new Error('The animation trigger "'+a+'" has failed to build due to the following errors:\n - '+s.join("\n - "));o=function(t,e){return new Jg(t,e)}(a,u),this._triggerCache[i]=o}this._transitionEngine.registerTrigger(e,a,o)},t.prototype.register=function(t,e){this._transitionEngine.register(t,e)},t.prototype.destroy=function(t,e){this._transitionEngine.destroy(t,e)},t.prototype.onInsert=function(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)},t.prototype.onRemove=function(t,e,n){this._transitionEngine.removeNode(t,e,n)},t.prototype.disableAnimations=function(t,e){this._transitionEngine.markElementAsDisabled(t,e)},t.prototype.process=function(t,e,n,a){if("@"==n.charAt(0)){var r=Object(h.__read)(Fh(n),2);this._timelineEngine.command(r[0],e,r[1],a)}else this._transitionEngine.trigger(t,e,n,a)},t.prototype.listen=function(t,e,n,a,r){if("@"==n.charAt(0)){var i=Object(h.__read)(Fh(n),2);return this._timelineEngine.listen(i[0],e,i[1],r)}return this._transitionEngine.listen(t,e,n,a,r)},t.prototype.flush=function(t){void 0===t&&(t=-1),this._transitionEngine.flush(t)},Object.defineProperty(t.prototype,"players",{get:function(){return this._transitionEngine.players.concat(this._timelineEngine.players)},enumerable:!0,configurable:!0}),t.prototype.whenRenderingDone=function(){return this._transitionEngine.whenRenderingDone()},t}(),_m="animation",Tm="animationend",wm=function(){function t(t,e,n,a,r,i,o){var s=this;this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=o,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=function(t){return s._handleCallback(t)}}return t.prototype.apply=function(){var t,e,n;e=this._duration+"ms "+this._easing+" "+this._delay+"ms 1 normal "+this._fillMode+" "+this._name,(n=Rm(t=this._element,"").trim()).length&&(function(t,e){for(var n=0;n<t.length;n++)","===t.charAt(n)&&0}(n),e=n+", "+e),Im(t,"",e),Cm(this._element,this._eventFn,!1),this._startTime=Date.now()},t.prototype.pause=function(){Sm(this._element,this._name,"paused")},t.prototype.resume=function(){Sm(this._element,this._name,"running")},t.prototype.setPosition=function(t){var e=Om(this._element,this._name);this._position=t*this._duration,Im(this._element,"Delay","-"+this._position+"ms",e)},t.prototype.getPosition=function(){return this._position},t.prototype._handleCallback=function(t){var 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()},t.prototype.finish=function(){this._finished||(this._finished=!0,this._onDoneFn(),Cm(this._element,this._eventFn,!0))},t.prototype.destroy=function(){var t,e,n,a;this._destroyed||(this._destroyed=!0,this.finish(),e=this._name,(a=km(n=Rm(t=this._element,"").split(","),e))>=0&&(n.splice(a,1),Im(t,"",n.join(","))))},t}();function Sm(t,e,n){Im(t,"PlayState",n,Om(t,e))}function Om(t,e){var n=Rm(t,"");return n.indexOf(",")>0?km(n.split(","),e):km([n],e)}function km(t,e){for(var n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function Cm(t,e,n){n?t.removeEventListener(Tm,e):t.addEventListener(Tm,e)}function Im(t,e,n,a){var r=_m+e;if(null!=a){var i=t.style[r];if(i.length){var o=i.split(",");o[a]=n,n=o.join(",")}}t.style[r]=n}function Rm(t,e){return t.style[_m+e]}var Nm="linear",Dm=function(){function t(t,e,n,a,r,i,o){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=o,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||Nm,this.totalTime=a+r,this._buildStyler()}return t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.destroy=function(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype._flushDoneFns=function(){this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[]},t.prototype._flushStartFns=function(){this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[]},t.prototype.finish=function(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._flushDoneFns())},t.prototype.setPosition=function(t){this._styler.setPosition(t)},t.prototype.getPosition=function(){return this._styler.getPosition()},t.prototype.hasStarted=function(){return this._state>=2},t.prototype.init=function(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())},t.prototype.play=function(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2),this._styler.resume()},t.prototype.pause=function(){this.init(),this._styler.pause()},t.prototype.restart=function(){this.reset(),this.play()},t.prototype.reset=function(){this._styler.destroy(),this._buildStyler(),this._styler.apply()},t.prototype._buildStyler=function(){var t=this;this._styler=new wm(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",function(){return t.finish()})},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t.prototype.beforeDestroy=function(){var t=this;this.init();var e={};if(this.hasStarted()){var n=this._state>=3;Object.keys(this._finalStyles).forEach(function(a){"offset"!=a&&(e[a]=n?t._finalStyles[a]:_g(t.element,a))})}this.currentSnapshot=e},t}(),Am=function(t){function e(e,n){var a=t.call(this)||this;return a.element=e,a._startingStyles={},a.__initialized=!1,a._styles=Jh(n),a}return Object(h.__extends)(e,t),e.prototype.init=function(){var e=this;!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(function(t){e._startingStyles[t]=e.element.style[t]}),t.prototype.init.call(this))},e.prototype.play=function(){var e=this;this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(function(t){return e.element.style.setProperty(t,e._styles[t])}),t.prototype.play.call(this))},e.prototype.destroy=function(){var e=this;this._startingStyles&&(Object.keys(this._startingStyles).forEach(function(t){var n=e._startingStyles[t];n?e.element.style.setProperty(t,n):e.element.style.removeProperty(t)}),this._startingStyles=null,t.prototype.destroy.call(this))},e}(Dh.d),Em=function(){function t(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}return t.prototype.validateStyleProperty=function(t){return Kh(t)},t.prototype.matchesElement=function(t,e){return $h(t,e)},t.prototype.containsElement=function(t,e){return Zh(t,e)},t.prototype.query=function(t,e,n){return Xh(t,e,n)},t.prototype.computeStyle=function(t,e,n){return window.getComputedStyle(t)[e]},t.prototype.buildKeyframeElement=function(t,e,n){n=n.map(function(t){return Jh(t)});var a="@keyframes "+e+" {\n",r="";n.forEach(function(t){r=" ";var e=parseFloat(t.offset);a+=""+r+100*e+"% {\n",r+=" ",Object.keys(t).forEach(function(e){var 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";var i=document.createElement("style");return i.innerHTML=a,i},t.prototype.animate=function(t,e,n,a,r,i,o){void 0===i&&(i=[]),o&&this._notifyFaultyScrubber();var s=i.filter(function(t){return t instanceof Dm}),u={};yg(n,a)&&s.forEach(function(t){var e=t.currentSnapshot;Object.keys(e).forEach(function(t){return u[t]=e[t]})});var c=function(t){var e={};return t&&(Array.isArray(t)?t:[t]).forEach(function(t){Object.keys(t).forEach(function(n){"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=vg(t,e,u));if(0==n)return new Am(t,c);var l="gen_css_kf_"+this._count++,d=this.buildKeyframeElement(t,l,e);document.querySelector("head").appendChild(d);var p=new Dm(t,e,l,n,a,r,c);return p.onDestroy(function(){var t;(t=d).parentNode.removeChild(t)}),p},t.prototype._notifyFaultyScrubber=function(){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)},t}(),Lm=function(){function t(t,e,n){this.element=t,this.keyframes=e,this.options=n,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}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.init=function(){this._buildPlayer(),this._preparePlayerBeforeStart()},t.prototype._buildPlayer=function(){var t=this;if(!this._initialized){this._initialized=!0;var e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:{},this.domPlayer.addEventListener("finish",function(){return t._onFinish()})}},t.prototype._preparePlayerBeforeStart=function(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()},t.prototype._triggerWebAnimation=function(t,e,n){return t.animate(e,n)},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.play=function(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[],this._started=!0),this.domPlayer.play()},t.prototype.pause=function(){this.init(),this.domPlayer.pause()},t.prototype.finish=function(){this.init(),this._onFinish(),this.domPlayer.finish()},t.prototype.reset=function(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1},t.prototype._resetDomPlayerState=function(){this.domPlayer&&this.domPlayer.cancel()},t.prototype.restart=function(){this.reset(),this.play()},t.prototype.hasStarted=function(){return this._started},t.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.setPosition=function(t){this.domPlayer.currentTime=t*this.time},t.prototype.getPosition=function(){return this.domPlayer.currentTime/this.time},Object.defineProperty(t.prototype,"totalTime",{get:function(){return this._delay+this._duration},enumerable:!0,configurable:!0}),t.prototype.beforeDestroy=function(){var t=this,e={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(function(n){"offset"!=n&&(e[n]=t._finished?t._finalKeyframe[n]:_g(t.element,n))}),this.currentSnapshot=e},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),Pm=function(){function t(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(Mm().toString()),this._cssKeyframesDriver=new Em}return t.prototype.validateStyleProperty=function(t){return Kh(t)},t.prototype.matchesElement=function(t,e){return $h(t,e)},t.prototype.containsElement=function(t,e){return Zh(t,e)},t.prototype.query=function(t,e,n){return Xh(t,e,n)},t.prototype.computeStyle=function(t,e,n){return window.getComputedStyle(t)[e]},t.prototype.overrideWebAnimationsSupport=function(t){this._isNativeImpl=t},t.prototype.animate=function(t,e,n,a,r,i,o){if(void 0===i&&(i=[]),!o&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);var s={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(s.easing=r);var u={},c=i.filter(function(t){return t instanceof Lm});return yg(n,a)&&c.forEach(function(t){var e=t.currentSnapshot;Object.keys(e).forEach(function(t){return u[t]=e[t]})}),e=vg(t,e=e.map(function(t){return og(t,!1)}),u),new Lm(t,e,s)},t}();function Mm(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}var qm=function(t){function e(e,n){var a=t.call(this)||this;return a._nextAnimationId=0,a._renderer=e.createRenderer(n.body,{id:"0",encapsulation:o.ViewEncapsulation.None,styles:[],data:{animation:[]}}),a}return Object(h.__extends)(e,t),e.prototype.build=function(t){var e=this._nextAnimationId.toString();this._nextAnimationId++;var n=Array.isArray(t)?Object(Dh.e)(t):t;return zm(this._renderer,null,e,"register",[n]),new jm(e,this._renderer)},e}(Dh.b),jm=function(t){function e(e,n){var a=t.call(this)||this;return a._id=e,a._renderer=n,a}return Object(h.__extends)(e,t),e.prototype.create=function(t,e){return new Fm(this._id,t,e||{},this._renderer)},e}(Dh.c),Fm=function(){function t(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)}return t.prototype._listen=function(t,e){return this._renderer.listen(this.element,"@@"+this.id+":"+t,e)},t.prototype._command=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return zm(this._renderer,this.element,this.id,t,e)},t.prototype.onDone=function(t){this._listen("done",t)},t.prototype.onStart=function(t){this._listen("start",t)},t.prototype.onDestroy=function(t){this._listen("destroy",t)},t.prototype.init=function(){this._command("init")},t.prototype.hasStarted=function(){return this._started},t.prototype.play=function(){this._command("play"),this._started=!0},t.prototype.pause=function(){this._command("pause")},t.prototype.restart=function(){this._command("restart")},t.prototype.finish=function(){this._command("finish")},t.prototype.destroy=function(){this._command("destroy")},t.prototype.reset=function(){this._command("reset")},t.prototype.setPosition=function(t){this._command("setPosition",t)},t.prototype.getPosition=function(){return 0},t}();function zm(t,e,n,a,r){return t.setProperty(e,"@@"+n+":"+a,r)}var Gm=function(){function t(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=function(t,e){e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}return t.prototype.createRenderer=function(t,e){var n=this,a=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){var r=this._rendererCache.get(a);return r||(r=new Ym("",a,this.engine),this._rendererCache.set(a,r)),r}var i=e.id,o=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(o,t),e.data.animation.forEach(function(e){return n.engine.registerTrigger(i,o,t,e.name,e)}),new Hm(this,o,a,this.engine)},t.prototype.begin=function(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()},t.prototype._scheduleCountTask=function(){var t=this;this.promise.then(function(){t._microtaskId++})},t.prototype.scheduleListenerCallback=function(t,e,n){var a=this;t>=0&&t<this._microtaskId?this._zone.run(function(){return e(n)}):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(function(){a._zone.run(function(){a._animationCallbacksBuffer.forEach(function(t){var e=Object(h.__read)(t,2);(0,e[0])(e[1])}),a._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))},t.prototype.end=function(){var t=this;this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(function(){t._scheduleCountTask(),t.engine.flush(t._microtaskId)}),this.delegate.end&&this.delegate.end()},t.prototype.whenRenderingDone=function(){return this.engine.whenRenderingDone()},t}(),Ym=function(){function t(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?function(t){return e.destroyNode(t)}:null}return Object.defineProperty(t.prototype,"data",{get:function(){return this.delegate.data},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()},t.prototype.createElement=function(t,e){return this.delegate.createElement(t,e)},t.prototype.createComment=function(t){return this.delegate.createComment(t)},t.prototype.createText=function(t){return this.delegate.createText(t)},t.prototype.appendChild=function(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)},t.prototype.insertBefore=function(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)},t.prototype.removeChild=function(t,e){this.engine.onRemove(this.namespaceId,e,this.delegate)},t.prototype.selectRootElement=function(t,e){return this.delegate.selectRootElement(t,e)},t.prototype.parentNode=function(t){return this.delegate.parentNode(t)},t.prototype.nextSibling=function(t){return this.delegate.nextSibling(t)},t.prototype.setAttribute=function(t,e,n,a){this.delegate.setAttribute(t,e,n,a)},t.prototype.removeAttribute=function(t,e,n){this.delegate.removeAttribute(t,e,n)},t.prototype.addClass=function(t,e){this.delegate.addClass(t,e)},t.prototype.removeClass=function(t,e){this.delegate.removeClass(t,e)},t.prototype.setStyle=function(t,e,n,a){this.delegate.setStyle(t,e,n,a)},t.prototype.removeStyle=function(t,e,n){this.delegate.removeStyle(t,e,n)},t.prototype.setProperty=function(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)},t.prototype.setValue=function(t,e){this.delegate.setValue(t,e)},t.prototype.listen=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.disableAnimations=function(t,e){this.engine.disableAnimations(t,e)},t}(),Hm=function(t){function e(e,n,a,r){var i=t.call(this,n,a,r)||this;return i.factory=e,i.namespaceId=n,i}return Object(h.__extends)(e,t),e.prototype.setProperty=function(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)},e.prototype.listen=function(t,e,n){var a,r,i,o=this;if("@"==e.charAt(0)){var s=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t),u=e.substr(1),c="";return"@"!=u.charAt(0)&&(u=(a=Object(h.__read)((r=u,i=r.indexOf("."),[r.substring(0,i),r.substr(i+1)]),2))[0],c=a[1]),this.engine.listen(this.namespaceId,s,u,c,function(t){o.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)},e}(Ym),Vm=function(t){function e(e,n,a){return t.call(this,e.body,n,a)||this}return Object(h.__extends)(e,t),e}(xm);function Bm(){return"function"==typeof Mm()?new Pm:new Em}function Um(){return new Bg}function Wm(t,e,n){return new Gm(t,e,n)}var Km=new o.InjectionToken("AnimationModuleType"),$m=function(){return function(){}}(),Zm=n("Avrn"),Xm=n("Vhfg"),Jm=function(){function t(t,e){this.http=t,this.router=e}return t.prototype.canActivate=function(t){return this.doCheck(t)},t.prototype.canActivateChild=function(t){return this.doCheck(t)},t.prototype.doCheck=function(e){var n=this;if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(ec.a)(!0);var a=e.data.moduleStatusGuardConfig;return this.http.get("api/"+a.apiPath+"/status").pipe(Object(nc.a)(function(t){return t.available||n.router.navigate([a.redirectTo,t.message||""]),t.available}),Object(Rh.a)(function(){return n.router.navigate([a.redirectTo]),Object(ec.a)(!1)}))},t.WHITELIST=["501"],t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c),o.inject(tt.l))},token:t,providedIn:"root"}),t}(),Qm=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return h.__extends(e,t),e.prototype.resolve=function(t){var e=[],n=t.queryParams.fromLink||null,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},e}(lh),tb=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return h.__extends(e,t),e.prototype.resolve=function(t){var e=t.params.name;return[{text:pt.startCase(e),path:e}]},e}(lh),eb={breadcrumbs:"Cluster/Hosts"},nb={breadcrumbs:"Cluster/Monitors"},ab={breadcrumbs:"Cluster/OSDs"},rb={breadcrumbs:"Cluster/Configuration"},ib={breadcrumbs:Kn.a.EDIT},ob={breadcrumbs:"Cluster/CRUSH map"},sb={breadcrumbs:"Cluster/Logs"},ub={breadcrumbs:"Cluster/Alerts"},cb={breadcrumbs:"Cluster/Silences"},lb={breadcrumbs:Kn.a.CREATE},db={breadcrumbs:Kn.a.CREATE},pb={breadcrumbs:Kn.a.EDIT},fb={breadcrumbs:Kn.a.RECREATE},hb={breadcrumbs:Qm},gb={breadcrumbs:"Cluster/Manager modules"},mb={breadcrumbs:tb},bb={breadcrumbs:"Pools"},yb={breadcrumbs:!0,text:"Block",path:null},vb={breadcrumbs:"Filesystems"},xb={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},_b={breadcrumbs:"User management",path:null},Tb={breadcrumbs:"NFS"},wb={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},Sb={breadcrumbs:Kn.a.CREATE},Ob={breadcrumbs:Kn.a.EDIT},kb=function(){return function(){}}(),Cb=n("IzCI"),Ib=n("Dwqy"),Rb=n("uYzU"),Nb=n("uhwM"),Db=n("nSDx"),Ab=n("SB+Q"),Eb=n("BQkM"),Lb=n("dEH0"),Pb=n("lTVp"),Mb=n("FO+L"),qb=n("nhM1"),jb=n("BARL"),Fb=n("JZ5S"),zb=n("Da1D"),Gb=function(){return function(){this.closeOthers=!1}}(),Yb=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[Gb]}},t}(),Hb=function(){function t(t){this.http=t}return t.prototype.jsError=function(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(It.c))},token:t,providedIn:Rt.a}),t}(),Vb=function(){function t(t){this.injector=t}return t.prototype.handleError=function(t){var e=this.injector.get(Hb),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t},t}(),Bb=n("9Xeq"),Ub=n("yGOH"),Wb=n("V/fk"),Kb=n("F8xH"),$b=n("ChqD"),Zb=n("PCNd"),Xb=n("LceX"),Jb=function(){return function(){}}(),Qb=function(){return function(){}}(),ty=n("G6Q+"),ey=n("STEd"),ny=function(){return function(){}}(),ay=function(){return function(){}}(),ry=n("kJI8"),iy=function(){return function(){}}(),oy=function(){return function(){}}(),sy=function(){return function(){}}(),uy=function(){return function(){}}(),cy=function(){function t(t){if(t)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:It.a,useClass:Ch,multi:!0},e.jwtOptionsProvider||{provide:wh,useValue:e.config},Sh]}},t}(),ly=o["\u0275cmf"](c,[f],function(t){return o["\u0275mod"]([o["\u0275mpd"](512,o.ComponentFactoryResolver,o["\u0275CodegenComponentFactoryResolver"],[[8,[R,q,K,$.a,Ee,rn,fn,Ca,Ua,gr,kr,Fi,no,po,qo,Yo,Qo,Is,Qs,ou,wu,ml,Tl,Bl,Zl,ed,nd.a,ad.a,rd.a,id.a,od.a,od.b,sd.a,ud.a,cd.a,md,bd.a,bd.b,bd.c,Ed,Bn,Gd,Kd,up,gp,Pp,Bp,Th]],[3,o.ComponentFactoryResolver],o.NgModuleRef]),o["\u0275mpd"](4608,It.j,It.p,[i.DOCUMENT,o.PLATFORM_ID,It.n]),o["\u0275mpd"](4608,It.q,It.q,[It.j,It.o]),o["\u0275mpd"](4608,Sh,Sh,[wh]),o["\u0275mpd"](4608,d.a,d.a,[]),o["\u0275mpd"](5120,It.a,function(t,e,n,a,r,i){return[t,new Ch(e,n),new Nh(a,r,i)]},[It.q,wh,Sh,tt.l,d.a,Zn.a]),o["\u0275mpd"](4608,It.m,It.m,[]),o["\u0275mpd"](6144,It.k,null,[It.m]),o["\u0275mpd"](4608,It.i,It.i,[It.k]),o["\u0275mpd"](6144,It.b,null,[It.i]),o["\u0275mpd"](4608,It.g,It.l,[It.b,o.Injector]),o["\u0275mpd"](4608,It.c,It.c,[It.g]),o["\u0275mpd"](4352,o.LOCALE_ID,"en-US",[]),o["\u0275mpd"](4608,i.NgLocalization,i.NgLocaleLocalization,[o.LOCALE_ID,[2,i["\u0275angular_packages_common_common_a"]]]),o["\u0275mpd"](5120,o.APP_ID,o["\u0275angular_packages_core_core_h"],[]),o["\u0275mpd"](5120,o.IterableDiffers,o["\u0275angular_packages_core_core_q"],[]),o["\u0275mpd"](5120,o.KeyValueDiffers,o["\u0275angular_packages_core_core_r"],[]),o["\u0275mpd"](4608,qe.DomSanitizer,qe["\u0275DomSanitizerImpl"],[i.DOCUMENT]),o["\u0275mpd"](6144,o.Sanitizer,null,[qe.DomSanitizer]),o["\u0275mpd"](4608,qe.HAMMER_GESTURE_CONFIG,qe.HammerGestureConfig,[]),o["\u0275mpd"](5120,qe.EVENT_MANAGER_PLUGINS,function(t,e,n,a,r,i,o,s){return[new qe["\u0275DomEventsPlugin"](t,e,n),new qe["\u0275KeyEventsPlugin"](a),new qe["\u0275HammerGesturesPlugin"](r,i,o,s)]},[i.DOCUMENT,o.NgZone,o.PLATFORM_ID,i.DOCUMENT,i.DOCUMENT,qe.HAMMER_GESTURE_CONFIG,o["\u0275Console"],[2,qe.HAMMER_LOADER]]),o["\u0275mpd"](4608,qe.EventManager,qe.EventManager,[qe.EVENT_MANAGER_PLUGINS,o.NgZone]),o["\u0275mpd"](135680,qe["\u0275DomSharedStylesHost"],qe["\u0275DomSharedStylesHost"],[i.DOCUMENT]),o["\u0275mpd"](4608,qe["\u0275DomRendererFactory2"],qe["\u0275DomRendererFactory2"],[qe.EventManager,qe["\u0275DomSharedStylesHost"]]),o["\u0275mpd"](5120,tg,Bm,[]),o["\u0275mpd"](5120,Vg,Um,[]),o["\u0275mpd"](4608,xm,Vm,[i.DOCUMENT,tg,Vg]),o["\u0275mpd"](5120,o.RendererFactory2,Wm,[qe["\u0275DomRendererFactory2"],xm,o.NgZone]),o["\u0275mpd"](6144,qe["\u0275SharedStylesHost"],null,[qe["\u0275DomSharedStylesHost"]]),o["\u0275mpd"](4608,o.Testability,o.Testability,[o.NgZone]),o["\u0275mpd"](4608,Dh.b,qm,[o.RendererFactory2,qe.DOCUMENT]),o["\u0275mpd"](5120,tt.a,tt.B,[tt.l]),o["\u0275mpd"](4608,tt.f,tt.f,[]),o["\u0275mpd"](6144,tt.g,null,[tt.f]),o["\u0275mpd"](135680,tt.r,tt.r,[tt.l,o.NgModuleFactoryLoader,o.Compiler,o.Injector,tt.g]),o["\u0275mpd"](4608,tt.e,tt.e,[]),o["\u0275mpd"](5120,tt.F,tt.x,[tt.l,i.ViewportScroller,tt.h]),o["\u0275mpd"](5120,tt.i,tt.E,[tt.C]),o["\u0275mpd"](5120,o.APP_BOOTSTRAP_LISTENER,function(t){return[t]},[tt.i]),o["\u0275mpd"](4608,tb,tb,[]),o["\u0275mpd"](4608,Qm,Qm,[]),o["\u0275mpd"](4608,Te.E,Te.E,[]),o["\u0275mpd"](4608,Te.h,Te.h,[]),o["\u0275mpd"](5120,o.TRANSLATIONS,u,[o.LOCALE_ID]),o["\u0275mpd"](4608,_t.a,_t.a,[o.TRANSLATIONS_FORMAT,o.TRANSLATIONS,o.LOCALE_ID,[2,_t.b]]),o["\u0275mpd"](4608,Ra.a,Ra.a,[_t.a]),o["\u0275mpd"](4608,i.DatePipe,i.DatePipe,[o.LOCALE_ID]),o["\u0275mpd"](4608,Ke.a,Ke.a,[]),o["\u0275mpd"](4608,Fe.a,Fe.a,[]),o["\u0275mpd"](4608,kt.a,kt.a,[]),o["\u0275mpd"](4608,ht.a,ht.a,[kt.a]),o["\u0275mpd"](4608,Cb.a,Cb.a,[kt.a]),o["\u0275mpd"](4608,gt.a,gt.a,[kt.a]),o["\u0275mpd"](4608,Ib.a,Ib.a,[]),o["\u0275mpd"](4608,Rb.a,Rb.a,[]),o["\u0275mpd"](4608,Nb.a,Nb.a,[]),o["\u0275mpd"](4608,wi.a,wi.a,[]),o["\u0275mpd"](4608,wn.a,wn.a,[i.DatePipe]),o["\u0275mpd"](4608,Db.a,Db.a,[]),o["\u0275mpd"](4608,Ab.a,Ab.a,[]),o["\u0275mpd"](4608,Vu.a,Vu.a,[]),o["\u0275mpd"](4608,Eb.a,Eb.a,[]),o["\u0275mpd"](4608,Lb.a,Lb.a,[]),o["\u0275mpd"](4608,go.a,go.a,[]),o["\u0275mpd"](4608,Pb.b,Pb.b,[]),o["\u0275mpd"](4608,J.a,J.a,[]),o["\u0275mpd"](4608,Au.a,Au.a,[]),o["\u0275mpd"](4608,Q.a,Q.a,[o.ComponentFactoryResolver,o.NgZone,o.Injector,Au.a,o.ApplicationRef]),o["\u0275mpd"](4608,l.a,l.a,[]),o["\u0275mpd"](4608,da.b,da.b,[o.RendererFactory2,Q.a]),o["\u0275mpd"](4608,Mb.ScrollbarHelper,Mb.ScrollbarHelper,[qe.DOCUMENT]),o["\u0275mpd"](4608,qb.DimensionsHelper,qb.DimensionsHelper,[]),o["\u0275mpd"](4608,jb.ColumnChangesService,jb.ColumnChangesService,[]),o["\u0275mpd"](4608,hn.f,hn.f,[]),o["\u0275mpd"](4608,Zm.a,Zm.a,[tt.l,d.a]),o["\u0275mpd"](4608,X.e,X.e,[]),o["\u0275mpd"](4608,yr.NodeDraggableService,yr.NodeDraggableService,[]),o["\u0275mpd"](4608,Fb.NodeMenuService,Fb.NodeMenuService,[]),o["\u0275mpd"](4608,br.TreeService,br.TreeService,[yr.NodeDraggableService]),o["\u0275mpd"](4608,Cr.w,Cr.w,[]),o["\u0275mpd"](4608,Cr.y,Cr.y,[]),o["\u0275mpd"](4608,Cr.a,Cr.a,[]),o["\u0275mpd"](4608,Cr.e,Cr.e,[]),o["\u0275mpd"](4608,Cr.c,Cr.c,[]),o["\u0275mpd"](4608,Cr.f,Cr.f,[]),o["\u0275mpd"](4608,Cr.x,Cr.x,[Cr.y,Cr.f]),o["\u0275mpd"](4608,Fu,Fu,[]),o["\u0275mpd"](4608,Xr,Xr,[]),o["\u0275mpd"](4608,Rr,Rr,[]),o["\u0275mpd"](4608,ti,ti,[]),o["\u0275mpd"](4608,zb.c,zb.c,[]),o["\u0275mpd"](5120,y,S,[w]),o["\u0275mpd"](4608,_,_,[y]),o["\u0275mpd"](4608,Gb,Gb,[]),o["\u0275mpd"](1073742336,It.e,It.e,[]),o["\u0275mpd"](1073742336,It.d,It.d,[]),o["\u0275mpd"](1073742336,i.CommonModule,i.CommonModule,[]),o["\u0275mpd"](1073742336,O,O,[]),o["\u0275mpd"](512,o.ErrorHandler,Vb,[o.Injector]),o["\u0275mpd"](1024,o.NgProbeToken,function(){return[tt.w()]},[]),o["\u0275mpd"](512,tt.C,tt.C,[o.Injector]),o["\u0275mpd"](1024,o.APP_INITIALIZER,function(t,e){return[qe["\u0275angular_packages_platform_browser_platform_browser_j"](t),tt.D(e)]},[[2,o.NgProbeToken],tt.C]),o["\u0275mpd"](512,o.ApplicationInitStatus,o.ApplicationInitStatus,[[2,o.APP_INITIALIZER]]),o["\u0275mpd"](131584,o.ApplicationRef,o.ApplicationRef,[o.NgZone,o["\u0275Console"],o.Injector,o.ErrorHandler,o.ComponentFactoryResolver,o.ApplicationInitStatus]),o["\u0275mpd"](1073742336,o.ApplicationModule,o.ApplicationModule,[o.ApplicationRef]),o["\u0275mpd"](1073742336,qe.BrowserModule,qe.BrowserModule,[[3,qe.BrowserModule]]),o["\u0275mpd"](1073742336,$m,$m,[]),o["\u0275mpd"](1073742336,j.i,j.i,[]),o["\u0275mpd"](1024,tt.v,tt.z,[[3,tt.l]]),o["\u0275mpd"](512,tt.t,tt.c,[]),o["\u0275mpd"](512,tt.b,tt.b,[]),o["\u0275mpd"](256,tt.h,{useHash:!0,preloadingStrategy:tt.f},[]),o["\u0275mpd"](1024,i.LocationStrategy,tt.y,[i.PlatformLocation,[2,i.APP_BASE_HREF],tt.h]),o["\u0275mpd"](512,i.Location,i.Location,[i.LocationStrategy]),o["\u0275mpd"](512,o.Compiler,o.Compiler,[]),o["\u0275mpd"](512,o.NgModuleFactoryLoader,o.SystemJsNgModuleLoader,[o.Compiler,[2,o.SystemJsNgModuleLoaderConfig]]),o["\u0275mpd"](1024,tt.j,function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"dashboard",component:Ce,canActivate:[Zm.a]},{path:"hosts",component:$e,canActivate:[Zm.a],data:eb},{path:"monitor",component:un,canActivate:[Zm.a],data:nb},{path:"osd",canActivate:[Zm.a],canActivateChild:[Zm.a],data:ab,children:[{path:"",component:la}]},{path:"configuration",data:rb,children:[{path:"",component:qa},{path:"edit/:name",component:Ja,data:ib}]},{path:"crush-map",component:xr,canActivate:[Zm.a],data:ob},{path:"logs",component:Oi,canActivate:[Zm.a],data:sb},{path:"alerts",component:Zi,canActivate:[Zm.a],data:ub},{path:"silence",canActivate:[Zm.a],data:cb,children:[{path:"",component:oo},{path:"create",component:vo,data:lb},{path:"create/:id",component:vo,data:db},{path:"edit/:id",component:vo,data:pb},{path:"recreate/:id",component:vo,data:fb}]},{path:"perf_counters/:type/:id",component:jo,canActivate:[Zm.a],data:hb},{path:"mgr-modules",canActivate:[Zm.a],canActivateChild:[Zm.a],data:gb,children:[{path:"",component:$o},{path:"edit/:name",component:rs,data:mb}]},{path:"pool",canActivate:[Zm.a],canActivateChild:[Zm.a],data:bb,loadChildren:"./ceph/pool/pool.module#RoutedPoolModule"},{path:"block",canActivateChild:[Zm.a],canActivate:[Zm.a],data:yb,loadChildren:"./ceph/block/block.module#RoutedBlockModule"},{path:"cephfs",component:$s,canActivate:[Xm.a,Zm.a],data:vb},{path:"rgw",canActivateChild:[Xm.a,Jm,Zm.a],data:xb,loadChildren:"./ceph/rgw/rgw.module#RoutedRgwModule"},{path:"user-management",canActivate:[Zm.a],canActivateChild:[Zm.a],data:_b,loadChildren:"./core/auth/auth.module#RoutedAuthModule"},{path:"nfs/501/:message",component:nu,canActivate:[Zm.a],data:Tb},{path:"nfs",canActivate:[Zm.a],canActivateChild:[Zm.a,Jm],data:wb,children:[{path:"",component:mu},{path:"create",component:oc,data:Sb},{path:"edit/:cluster_id/:export_id",component:oc,data:Ob}]},{path:"sso/404",component:bl},{path:"login",component:jl},{path:"logout",children:[]},{path:"403",component:Ul},{path:"404",component:Xl},{path:"**",redirectTo:"/404"}]]},[]),o["\u0275mpd"](1024,tt.l,tt.A,[o.ApplicationRef,tt.t,tt.b,i.Location,o.Injector,o.NgModuleFactoryLoader,o.Compiler,tt.j,tt.h,[2,tt.s],[2,tt.k]]),o["\u0275mpd"](1073742336,tt.p,tt.p,[[2,tt.v],[2,tt.l]]),o["\u0275mpd"](1073742336,kb,kb,[]),o["\u0275mpd"](1073742336,hn.e,hn.e,[]),o["\u0275mpd"](1073742336,Te.B,Te.B,[]),o["\u0275mpd"](1073742336,Te.n,Te.n,[]),o["\u0275mpd"](1073742336,J.d,J.d,[]),o["\u0275mpd"](1073742336,Te.x,Te.x,[]),o["\u0275mpd"](1073742336,Bb.a,Bb.a,[]),o["\u0275mpd"](1073742336,Pb.c,Pb.c,[]),o["\u0275mpd"](1073742336,l.d,l.d,[]),o["\u0275mpd"](1073742336,lt.ChartsModule,lt.ChartsModule,[]),o["\u0275mpd"](1073742336,da.e,da.e,[]),o["\u0275mpd"](1073742336,Ub.a,Ub.a,[]),o["\u0275mpd"](1073742336,Wb.a,Wb.a,[]),o["\u0275mpd"](1073742336,Kb.NgxDatatableModule,Kb.NgxDatatableModule,[]),o["\u0275mpd"](1073742336,$b.a,$b.a,[]),o["\u0275mpd"](1073742336,Rt.a,Rt.a,[]),o["\u0275mpd"](1073742336,Zb.a,Zb.a,[]),o["\u0275mpd"](1073742336,X.c,X.c,[]),o["\u0275mpd"](1073742336,Xb.a,Xb.a,[]),o["\u0275mpd"](1073742336,Wp,Wp,[]),o["\u0275mpd"](1073742336,Jb,Jb,[]),o["\u0275mpd"](1073742336,Qb,Qb,[]),o["\u0275mpd"](1073742336,ty.a,ty.a,[]),o["\u0275mpd"](1073742336,Cr.d,Cr.d,[]),o["\u0275mpd"](1073742336,ey.TreeModule,ey.TreeModule,[]),o["\u0275mpd"](1073742336,ny,ny,[]),o["\u0275mpd"](1073742336,Gu,Gu,[]),o["\u0275mpd"](1073742336,ni,ni,[]),o["\u0275mpd"](1073742336,ay,ay,[]),o["\u0275mpd"](1073742336,ry.a,ry.a,[]),o["\u0275mpd"](1073742336,iy,iy,[]),o["\u0275mpd"](1073742336,zb.d,zb.d,[]),o["\u0275mpd"](1073742336,oy,oy,[]),o["\u0275mpd"](1073742336,sy,sy,[]),o["\u0275mpd"](1073742336,uy,uy,[]),o["\u0275mpd"](1073742336,Yb,Yb,[]),o["\u0275mpd"](1073742336,cy,cy,[[3,cy]]),o["\u0275mpd"](1073742336,c,c,[]),o["\u0275mpd"](256,It.n,"XSRF-TOKEN",[]),o["\u0275mpd"](256,It.o,"X-XSRF-TOKEN",[]),o["\u0275mpd"](256,wh,{tokenGetter:s},[]),o["\u0275mpd"](256,o["\u0275APP_ROOT"],!0,[]),o["\u0275mpd"](256,Km,"BrowserAnimations",[]),o["\u0275mpd"](256,o.TRANSLATIONS_FORMAT,"xlf",[]),o["\u0275mpd"](256,hn.a,{autoClose:!0,insideClick:!1},[]),o["\u0275mpd"](256,w,{},[]),o["\u0275mpd"](256,j.b,{default:j.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[])])});i.registerLocaleData(r.a),Object(o.enableProdMode)(),qe.platformBrowser().bootstrapModuleFactory(ly).catch(function(t){return console.log(t)})},zavE:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},zfKp:function(t,e,n){"use strict";e.observable="function"==typeof Symbol&&Symbol.observable||"@@observable"},zo3G:function(t,e,n){"use strict";var a=n("mrSG"),r=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return a.__extends(e,t),e.prototype.schedule=function(e,n){return void 0===n&&(n=0),n>0?t.prototype.schedule.call(this,e,n):(this.delay=n,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,n){return n>0||this.closed?t.prototype.execute.call(this,e,n):this._execute(e,n)},e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0?t.prototype.requestAsyncId.call(this,e,n,a):e.flush(this)},e}(n("h9Dq").a),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("CS9Q").a);n.d(e,"a",function(){return o});var o=new i(r)},zotm:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("rPjj"),r=n("Fxb1");function i(t,e,n,i,o){if(void 0===o&&(o=new a.a(t,n,i)),!o.closed)return Object(r.a)(e)(o)}},"zrt+":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t){return!!t&&(t instanceof a.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}},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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [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"))},zzsZ:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("OAkW");e.fromArray=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription,i=0;return a.add(e.schedule(function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()})),a}:i.subscribeToArray(t))}}},[[0,1]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.f31db31652a3fd9f4bca.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/polyfills.f31db31652a3fd9f4bca.js
new file mode 100644 (file)
index 0000000..6b77d72
--- /dev/null
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+auO":function(t,e,n){var r=n("XKFU"),o=n("lvtm");r(r.S,"Math",{cbrt:function(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},"+lvF":function(t,e,n){t.exports=n("VTer")("native-function-to-string",Function.toString)},"+oPb":function(t,e,n){"use strict";n("OGtf")("blink",function(t){return function(){return t(this,"blink","","")}})},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/8Fb":function(t,e,n){var r=n("XKFU"),o=n("UExd")(!0);r(r.S,"Object",{entries:function(t){return o(t)}})},"/KAi":function(t,e,n){var r=n("XKFU"),o=n("dyZX").isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&o(t)}})},"/SS/":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{setPrototypeOf:n("i5dc").set})},"/e88":function(t,e){t.exports="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},"/uf1":function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("2OiF"),a=n("hswa");n("nh4g")&&r(r.P+n("xbSm"),"Object",{__defineSetter__:function(t,e){a.f(o(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0E+W":function(t,e,n){n("elZq")("Array")},"0LDn":function(t,e,n){"use strict";n("OGtf")("italics",function(t){return function(){return t(this,"i","","")}})},"0TWp":function(t,e,n){!function(){"use strict";!function(t){var e=t.performance;function n(t){e&&e.mark&&e.mark(t)}function r(t,n){e&&e.measure&&e.measure(t,n)}n("Zone");var o=!0===t.__zone_symbol__forceDuplicateZoneCheck;if(t.Zone){if(o||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}var i,a=function(){function e(t,e){this._parent=t,this._name=e?e.name||"unnamed":"<root>",this._properties=e&&e.properties||{},this._zoneDelegate=new c(this,this._parent&&this._parent._zoneDelegate,e)}return e.assertZonePatched=function(){if(t.Promise!==F.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(e,"root",{get:function(){for(var t=e.current;t.parent;)t=t.parent;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"current",{get:function(){return P.zone},enumerable:!0,configurable:!0}),Object.defineProperty(e,"currentTask",{get:function(){return j},enumerable:!0,configurable:!0}),e.__load_patch=function(i,a){if(F.hasOwnProperty(i)){if(o)throw Error("Already loaded patch: "+i)}else if(!t["__Zone_disable_"+i]){var u="Zone:"+i;n(u),F[i]=a(t,e,O),r(u,u)}},Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(t){var e=this.getZoneWith(t);if(e)return e._properties[t]},e.prototype.getZoneWith=function(t){for(var e=this;e;){if(e._properties.hasOwnProperty(t))return e;e=e._parent}return null},e.prototype.fork=function(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)},e.prototype.wrap=function(t,e){if("function"!=typeof t)throw new Error("Expecting function got: "+t);var n=this._zoneDelegate.intercept(this,t,e),r=this;return function(){return r.runGuarded(n,this,arguments,e)}},e.prototype.run=function(t,e,n,r){P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,t,e,n,r)}finally{P=P.parent}},e.prototype.runGuarded=function(t,e,n,r){void 0===e&&(e=null),P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,t,e,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{P=P.parent}},e.prototype.runTask=function(t,e,n){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");if(t.state!==m||t.type!==E&&t.type!==T){var r=t.state!=k;r&&t._transitionTo(k,_),t.runCount++;var o=j;j=t,P={parent:P,zone:this};try{t.type==T&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,e,n)}catch(i){if(this._zoneDelegate.handleError(this,i))throw i}}finally{t.state!==m&&t.state!==x&&(t.type==E||t.data&&t.data.isPeriodic?r&&t._transitionTo(_,k):(t.runCount=0,this._updateTaskCount(t,-1),r&&t._transitionTo(m,k,m))),P=P.parent,j=o}}},e.prototype.scheduleTask=function(t){if(t.zone&&t.zone!==this)for(var e=this;e;){if(e===t.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+t.zone.name);e=e.parent}t._transitionTo(b,m);var n=[];t._zoneDelegates=n,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(r){throw t._transitionTo(x,b,m),this._zoneDelegate.handleError(this,r),r}return t._zoneDelegates===n&&this._updateTaskCount(t,1),t.state==b&&t._transitionTo(_,b),t},e.prototype.scheduleMicroTask=function(t,e,n,r){return this.scheduleTask(new s(w,t,e,n,r,void 0))},e.prototype.scheduleMacroTask=function(t,e,n,r,o){return this.scheduleTask(new s(T,t,e,n,r,o))},e.prototype.scheduleEventTask=function(t,e,n,r,o){return this.scheduleTask(new s(E,t,e,n,r,o))},e.prototype.cancelTask=function(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");t._transitionTo(S,_,k);try{this._zoneDelegate.cancelTask(this,t)}catch(e){throw t._transitionTo(x,S),this._zoneDelegate.handleError(this,e),e}return this._updateTaskCount(t,-1),t._transitionTo(m,S),t.runCount=0,t},e.prototype._updateTaskCount=function(t,e){var n=t._zoneDelegates;-1==e&&(t._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(t.type,e)},e.__symbol__=I,e}(),u={name:"",onHasTask:function(t,e,n,r){return t.hasTask(n,r)},onScheduleTask:function(t,e,n,r){return t.scheduleTask(n,r)},onInvokeTask:function(t,e,n,r,o,i){return t.invokeTask(n,r,o,i)},onCancelTask:function(t,e,n,r){return t.cancelTask(n,r)}},c=function(){function t(t,e,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=t,this._parentDelegate=e,this._forkZS=n&&(n&&n.onFork?n:e._forkZS),this._forkDlgt=n&&(n.onFork?e:e._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:e.zone),this._interceptZS=n&&(n.onIntercept?n:e._interceptZS),this._interceptDlgt=n&&(n.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:e.zone),this._invokeZS=n&&(n.onInvoke?n:e._invokeZS),this._invokeDlgt=n&&(n.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:e.zone),this._handleErrorZS=n&&(n.onHandleError?n:e._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:e.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:e._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:e.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:e._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:e.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:e._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:e.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask;(r||e&&e._hasTaskZS)&&(this._hasTaskZS=r?n:u,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=t,n.onScheduleTask||(this._scheduleTaskZS=u,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=u,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=u,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this.zone))}return t.prototype.fork=function(t,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,t,e):new a(t,e)},t.prototype.intercept=function(t,e,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,t,e,n):e},t.prototype.invoke=function(t,e,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,t,e,n,r,o):e.apply(n,r)},t.prototype.handleError=function(t,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,t,e)},t.prototype.scheduleTask=function(t,e){var n=e;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),(n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,t,e))||(n=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=w)throw new Error("Task is missing scheduleFn.");d(e)}return n},t.prototype.invokeTask=function(t,e,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,t,e,n,r):e.callback.apply(n,r)},t.prototype.cancelTask=function(t,e){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,t,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");n=e.cancelFn(e)}return n},t.prototype.hasTask=function(t,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,t,e)}catch(n){this.handleError(t,n)}},t.prototype._updateTaskCount=function(t,e){var n=this._taskCounts,r=n[t],o=n[t]=r+e;if(o<0)throw new Error("More tasks executed then were scheduled.");0!=r&&0!=o||this.hasTask(this.zone,{microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:t})},t}(),s=function(){function e(n,r,o,i,a,u){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=n,this.source=r,this.data=i,this.scheduleFn=a,this.cancelFn=u,this.callback=o;var c=this;this.invoke=n===E&&i&&i.useG?e.invokeTask:function(){return e.invokeTask.call(t,c,this,arguments)}}return e.invokeTask=function(t,e,n){t||(t=this),M++;try{return t.runCount++,t.zone.runTask(t,e,n)}finally{1==M&&g(),M--}},Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(m,b)},e.prototype._transitionTo=function(t,e,n){if(this._state!==e&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+t+"', expecting state '"+e+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=t,t==m&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},e}(),f=I("setTimeout"),l=I("Promise"),h=I("then"),p=[],v=!1;function d(e){if(0===M&&0===p.length)if(i||t[l]&&(i=t[l].resolve(0)),i){var n=i[h];n||(n=i.then),n.call(i,g)}else t[f](g,0);e&&p.push(e)}function g(){if(!v){for(v=!0;p.length;){var t=p;p=[];for(var e=0;e<t.length;e++){var n=t[e];try{n.zone.runTask(n,null,null)}catch(r){O.onUnhandledError(r)}}}O.microtaskDrainDone(),v=!1}}var y={name:"NO ZONE"},m="notScheduled",b="scheduling",_="scheduled",k="running",S="canceling",x="unknown",w="microTask",T="macroTask",E="eventTask",F={},O={symbol:I,currentZoneFrame:function(){return P},onUnhandledError:D,microtaskDrainDone:D,scheduleMicroTask:d,showUncaughtError:function(){return!a[I("ignoreConsoleErrorUncaughtError")]},patchEventTarget:function(){return[]},patchOnProperties:D,patchMethod:function(){return D},bindArguments:function(){return[]},patchThen:function(){return D},setNativePromise:function(t){t&&"function"==typeof t.resolve&&(i=t.resolve(0))}},P={parent:null,zone:new a(null,null)},j=null,M=0;function D(){}function I(t){return"__zone_symbol__"+t}r("Zone","Zone"),t.Zone=a}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global);var t=function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}};Zone.__load_patch("ZoneAwarePromise",function(e,n,r){var o=Object.getOwnPropertyDescriptor,i=Object.defineProperty,a=r.symbol,u=[],c=a("Promise"),s=a("then"),f="__creationTrace__";r.onUnhandledError=function(t){if(r.showUncaughtError()){var e=t&&t.rejection;e?console.error("Unhandled Promise rejection:",e instanceof Error?e.message:e,"; Zone:",t.zone.name,"; Task:",t.task&&t.task.source,"; Value:",e,e instanceof Error?e.stack:void 0):console.error(t)}},r.microtaskDrainDone=function(){for(;u.length;)for(var t=function(){var t=u.shift();try{t.zone.runGuarded(function(){throw t})}catch(e){h(e)}};u.length;)t()};var l=a("unhandledPromiseRejectionHandler");function h(t){r.onUnhandledError(t);try{var e=n[l];e&&"function"==typeof e&&e.call(this,t)}catch(o){}}function p(t){return t&&t.then}function v(t){return t}function d(t){return A.reject(t)}var g=a("state"),y=a("value"),m=a("finally"),b=a("parentPromiseValue"),_=a("parentPromiseState"),k="Promise.then",S=null,x=!0,w=!1,T=0;function E(t,e){return function(n){try{j(t,e,n)}catch(r){j(t,!1,r)}}}var F=function(){var t=!1;return function(e){return function(){t||(t=!0,e.apply(null,arguments))}}},O="Promise resolved with itself",P=a("currentTaskTrace");function j(t,e,o){var a,c=F();if(t===o)throw new TypeError(O);if(t[g]===S){var s=null;try{"object"!=typeof o&&"function"!=typeof o||(s=o&&o.then)}catch(d){return c(function(){j(t,!1,d)})(),t}if(e!==w&&o instanceof A&&o.hasOwnProperty(g)&&o.hasOwnProperty(y)&&o[g]!==S)D(o),j(t,o[g],o[y]);else if(e!==w&&"function"==typeof s)try{s.call(o,c(E(t,e)),c(E(t,!1)))}catch(d){c(function(){j(t,!1,d)})()}else{t[g]=e;var l=t[y];if(t[y]=o,t[m]===m&&e===x&&(t[g]=t[_],t[y]=t[b]),e===w&&o instanceof Error){var h=n.currentTask&&n.currentTask.data&&n.currentTask.data[f];h&&i(o,P,{configurable:!0,enumerable:!1,writable:!0,value:h})}for(var p=0;p<l.length;)I(t,l[p++],l[p++],l[p++],l[p++]);if(0==l.length&&e==w){t[g]=T;try{throw new Error("Uncaught (in promise): "+((a=o)&&a.toString===Object.prototype.toString?(a.constructor&&a.constructor.name||"")+": "+JSON.stringify(a):a?a.toString():Object.prototype.toString.call(a))+(o&&o.stack?"\n"+o.stack:""))}catch(d){var v=d;v.rejection=o,v.promise=t,v.zone=n.current,v.task=n.currentTask,u.push(v),r.scheduleMicroTask()}}}}return t}var M=a("rejectionHandledHandler");function D(t){if(t[g]===T){try{var e=n[M];e&&"function"==typeof e&&e.call(this,{rejection:t[y],promise:t})}catch(o){}t[g]=w;for(var r=0;r<u.length;r++)t===u[r].promise&&u.splice(r,1)}}function I(t,e,n,r,o){D(t);var i=t[g],a=i?"function"==typeof r?r:v:"function"==typeof o?o:d;e.scheduleMicroTask(k,function(){try{var r=t[y],o=n&&m===n[m];o&&(n[b]=r,n[_]=i);var u=e.run(a,void 0,o&&a!==d&&a!==v?[]:[r]);j(n,!0,u)}catch(c){j(n,!1,c)}},n)}var A=function(){function e(t){if(!(this instanceof e))throw new Error("Must be an instanceof Promise.");this[g]=S,this[y]=[];try{t&&t(E(this,x),E(this,w))}catch(n){j(this,!1,n)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(t){return j(new this(null),x,t)},e.reject=function(t){return j(new this(null),w,t)},e.race=function(e){var n,r,o,i,a=new this(function(t,e){o=t,i=e});function u(t){a&&(a=o(t))}function c(t){a&&(a=i(t))}try{for(var s=t(e),f=s.next();!f.done;f=s.next()){var l=f.value;p(l)||(l=this.resolve(l)),l.then(u,c)}}catch(h){n={error:h}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return a},e.all=function(e){var n,r,o,i,a=new this(function(t,e){o=t,i=e}),u=2,c=0,s=[],f=function(t){p(t)||(t=l.resolve(t));var e=c;t.then(function(t){s[e]=t,0==--u&&o(s)},i),u++,c++},l=this;try{for(var h=t(e),v=h.next();!v.done;v=h.next())f(v.value)}catch(d){n={error:d}}finally{try{v&&!v.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}return 0==(u-=2)&&o(s),a},e.prototype.then=function(t,e){var r=new this.constructor(null),o=n.current;return this[g]==S?this[y].push(o,r,t,e):I(this,o,r,t,e),r},e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(t){var e=new this.constructor(null);e[m]=m;var r=n.current;return this[g]==S?this[y].push(r,e,t,t):I(this,r,e,t,t),e},e}();A.resolve=A.resolve,A.reject=A.reject,A.race=A.race,A.all=A.all;var U=e[c]=e.Promise,X=n.__symbol__("ZoneAwarePromise"),Z=o(e,"Promise");Z&&!Z.configurable||(Z&&delete Z.writable,Z&&delete Z.value,Z||(Z={configurable:!0,enumerable:!0}),Z.get=function(){return e[X]?e[X]:e[c]},Z.set=function(t){t===A?e[X]=t:(e[c]=t,t.prototype[s]||C(t),r.setNativePromise(t))},i(e,"Promise",Z)),e.Promise=A;var K=a("thenPatched");function C(t){var e=t.prototype,n=o(e,"then");if(!n||!1!==n.writable&&n.configurable){var r=e.then;e[s]=r,t.prototype.then=function(t,e){var n=this;return new A(function(t,e){r.call(n,t,e)}).then(t,e)},t[K]=!0}}return r.patchThen=C,U&&C(U),Promise[n.__symbol__("uncaughtPromiseErrors")]=u,A}),Zone.__load_patch("fetch",function(t,e,n){var r=t.fetch,o=t.Promise,i=n.symbol("thenPatched"),a=n.symbol("fetchTaskScheduling"),u=n.symbol("fetchTaskAborting");if("function"==typeof r){var c=t.AbortController,s="function"==typeof c,f=null;s&&(t.AbortController=function(){var t=new c;return t.signal.abortController=t,t},f=n.patchMethod(c.prototype,"abort",function(t){return function(e,n){return e.task?e.task.zone.cancelTask(e.task):t.apply(e,n)}}));var l=function(){};t.fetch=function(){var t=this,c=Array.prototype.slice.call(arguments),h=c.length>1?c[1]:null,p=h&&h.signal;return new Promise(function(h,v){var d=e.current.scheduleMacroTask("fetch",l,c,function(){var u,s=e.current;try{s[a]=!0,u=r.apply(t,c)}catch(l){return void v(l)}finally{s[a]=!1}if(!(u instanceof o)){var f=u.constructor;f[i]||n.patchThen(f)}u.then(function(t){"notScheduled"!==d.state&&d.invoke(),h(t)},function(t){"notScheduled"!==d.state&&d.invoke(),v(t)})},function(){if(s)if(p&&p.abortController&&!p.aborted&&"function"==typeof p.abortController.abort&&f)try{e.current[u]=!0,f.call(p.abortController)}finally{e.current[u]=!1}else v("cancel fetch need a AbortController.signal");else v("No AbortController supported, can not cancel fetch")});p&&p.abortController&&(p.abortController.task=d)})}}});var e=Object.getOwnPropertyDescriptor,n=Object.defineProperty,r=Object.getPrototypeOf,o=Object.create,i=Array.prototype.slice,a="addEventListener",u="removeEventListener",c=Zone.__symbol__(a),s=Zone.__symbol__(u),f="true",l="false",h="__zone_symbol__";function p(t,e){return Zone.current.wrap(t,e)}function v(t,e,n,r,o){return Zone.current.scheduleMacroTask(t,e,n,r,o)}var d=Zone.__symbol__,g="undefined"!=typeof window,y=g?window:void 0,m=g&&y||"object"==typeof self&&self||global,b="removeAttribute",_=[null];function k(t,e){for(var n=t.length-1;n>=0;n--)"function"==typeof t[n]&&(t[n]=p(t[n],e+"_"+n));return t}function S(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&void 0===t.set)}var x="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,w=!("nw"in m)&&void 0!==m.process&&"[object process]"==={}.toString.call(m.process),T=!w&&!x&&!(!g||!y.HTMLElement),E=void 0!==m.process&&"[object process]"==={}.toString.call(m.process)&&!x&&!(!g||!y.HTMLElement),F={},O=function(t){if(t=t||m.event){var e=F[t.type];e||(e=F[t.type]=d("ON_PROPERTY"+t.type));var n,r=this||t.target||m,o=r[e];return T&&r===y&&"error"===t.type?!0===(n=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error))&&t.preventDefault():null==(n=o&&o.apply(this,arguments))||n||t.preventDefault(),n}};function P(t,r,o){var i=e(t,r);if(!i&&o&&e(o,r)&&(i={enumerable:!0,configurable:!0}),i&&i.configurable){var a=d("on"+r+"patched");if(!t.hasOwnProperty(a)||!t[a]){delete i.writable,delete i.value;var u=i.get,c=i.set,s=r.substr(2),f=F[s];f||(f=F[s]=d("ON_PROPERTY"+s)),i.set=function(e){var n=this;n||t!==m||(n=m),n&&(n[f]&&n.removeEventListener(s,O),c&&c.apply(n,_),"function"==typeof e?(n[f]=e,n.addEventListener(s,O,!1)):n[f]=null)},i.get=function(){var e=this;if(e||t!==m||(e=m),!e)return null;var n=e[f];if(n)return n;if(u){var o=u&&u.call(this);if(o)return i.set.call(this,o),"function"==typeof e[b]&&e.removeAttribute(r),o}return null},n(t,r,i),t[a]=!0}}}function j(t,e,n){if(e)for(var r=0;r<e.length;r++)P(t,"on"+e[r],n);else{var o=[];for(var i in t)"on"==i.substr(0,2)&&o.push(i);for(var a=0;a<o.length;a++)P(t,o[a],n)}}var M=d("originalInstance");function D(t){var e=m[t];if(e){m[d(t)]=e,m[t]=function(){var n=k(arguments,t);switch(n.length){case 0:this[M]=new e;break;case 1:this[M]=new e(n[0]);break;case 2:this[M]=new e(n[0],n[1]);break;case 3:this[M]=new e(n[0],n[1],n[2]);break;case 4:this[M]=new e(n[0],n[1],n[2],n[3]);break;default:throw new Error("Arg list too long.")}},U(m[t],e);var r,o=new e(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||function(e){"function"==typeof o[e]?m[t].prototype[e]=function(){return this[M][e].apply(this[M],arguments)}:n(m[t].prototype,e,{set:function(n){"function"==typeof n?(this[M][e]=p(n,t+"."+e),U(this[M][e],n)):this[M][e]=n},get:function(){return this[M][e]}})}(r);for(r in e)"prototype"!==r&&e.hasOwnProperty(r)&&(m[t][r]=e[r])}}var I=!1;function A(t,n,o){for(var i=t;i&&!i.hasOwnProperty(n);)i=r(i);!i&&t[n]&&(i=t);var a,u,c=d(n),s=null;if(i&&!(s=i[c])&&(s=i[c]=i[n],S(i&&e(i,n)))){var f=o(s,c,n);i[n]=function(){return f(this,arguments)},U(i[n],s),I&&(a=s,u=i[n],"function"==typeof Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(a).forEach(function(t){var e=Object.getOwnPropertyDescriptor(a,t);Object.defineProperty(u,t,{get:function(){return a[t]},set:function(n){(!e||e.writable&&"function"==typeof e.set)&&(a[t]=n)},enumerable:!e||e.enumerable,configurable:!e||e.configurable})}))}return s}function U(t,e){t[d("OriginalDelegate")]=e}var X=!1,Z=!1;function K(){try{var t=y.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch(e){}return!1}function C(){if(X)return Z;X=!0;try{var t=y.navigator.userAgent;return-1===t.indexOf("MSIE ")&&-1===t.indexOf("Trident/")&&-1===t.indexOf("Edge/")||(Z=!0),Z}catch(e){}}Zone.__load_patch("toString",function(t){var e=Function.prototype.toString,n=d("OriginalDelegate"),r=d("Promise"),o=d("Error"),i=function(){if("function"==typeof this){var i=this[n];if(i)return"function"==typeof i?e.apply(this[n],arguments):Object.prototype.toString.call(i);if(this===Promise){var a=t[r];if(a)return e.apply(a,arguments)}if(this===Error){var u=t[o];if(u)return e.apply(u,arguments)}}return e.apply(this,arguments)};i[n]=e,Function.prototype.toString=i;var a=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":a.apply(this,arguments)}});var L=!1;if("undefined"!=typeof window)try{var R=Object.defineProperty({},"passive",{get:function(){L=!0}});window.addEventListener("test",R,R),window.removeEventListener("test",R,R)}catch(mt){L=!1}var z={useG:!0},N={},q={},V=/^__zone_symbol__(\w+)(true|false)$/,G="__zone_symbol__propagationStopped";function H(t,e,n){var o=n&&n.add||a,i=n&&n.rm||u,c=n&&n.listeners||"eventListeners",s=n&&n.rmAll||"removeAllListeners",p=d(o),v="."+o+":",g="prependListener",y="."+g+":",m=function(t,e,n){if(!t.isRemoved){var r=t.callback;"object"==typeof r&&r.handleEvent&&(t.callback=function(t){return r.handleEvent(t)},t.originalDelegate=r),t.invoke(t,e,[n]);var o=t.options;o&&"object"==typeof o&&o.once&&e[i].call(e,n.type,t.originalDelegate?t.originalDelegate:t.callback,o)}},b=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[N[e.type][l]];if(r)if(1===r.length)m(r[0],n,e);else for(var o=r.slice(),i=0;i<o.length&&(!e||!0!==e[G]);i++)m(o[i],n,e)}},_=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[N[e.type][f]];if(r)if(1===r.length)m(r[0],n,e);else for(var o=r.slice(),i=0;i<o.length&&(!e||!0!==e[G]);i++)m(o[i],n,e)}};function k(e,n){if(!e)return!1;var a=!0;n&&void 0!==n.useG&&(a=n.useG);var u=n&&n.vh,m=!0;n&&void 0!==n.chkDup&&(m=n.chkDup);var k=!1;n&&void 0!==n.rt&&(k=n.rt);for(var S=e;S&&!S.hasOwnProperty(o);)S=r(S);if(!S&&e[o]&&(S=e),!S)return!1;if(S[p])return!1;var x,T=n&&n.eventNameToString,E={},F=S[p]=S[o],O=S[d(i)]=S[i],P=S[d(c)]=S[c],j=S[d(s)]=S[s];function M(t){L||"boolean"==typeof E.options||null==E.options||(t.options=!!E.options.capture,E.options=t.options)}n&&n.prepend&&(x=S[d(n.prepend)]=S[n.prepend]);var D=a?function(t){if(!E.isExisting)return M(t),F.call(E.target,E.eventName,E.capture?_:b,E.options)}:function(t){return M(t),F.call(E.target,E.eventName,t.invoke,E.options)},I=a?function(t){if(!t.isRemoved){var e=N[t.eventName],n=void 0;e&&(n=e[t.capture?f:l]);var r=n&&t.target[n];if(r)for(var o=0;o<r.length;o++)if(r[o]===t){r.splice(o,1),t.isRemoved=!0,0===r.length&&(t.allRemoved=!0,t.target[n]=null);break}}if(t.allRemoved)return O.call(t.target,t.eventName,t.capture?_:b,t.options)}:function(t){return O.call(t.target,t.eventName,t.invoke,t.options)},A=n&&n.diff?n.diff:function(t,e){var n=typeof e;return"function"===n&&t.callback===e||"object"===n&&t.originalDelegate===e},X=Zone[Zone.__symbol__("BLACK_LISTED_EVENTS")],Z=function(e,n,r,o,i,c){return void 0===i&&(i=!1),void 0===c&&(c=!1),function(){var s=this||t,p=arguments[0],v=arguments[1];if(!v)return e.apply(this,arguments);if(w&&"uncaughtException"===p)return e.apply(this,arguments);var d=!1;if("function"!=typeof v){if(!v.handleEvent)return e.apply(this,arguments);d=!0}if(!u||u(e,v,s,arguments)){var g,y=arguments[2];if(X)for(var b=0;b<X.length;b++)if(p===X[b])return e.apply(this,arguments);var _=!1;void 0===y?g=!1:!0===y?g=!0:!1===y?g=!1:(g=!!y&&!!y.capture,_=!!y&&!!y.once);var k,S=Zone.current,x=N[p];if(x)k=x[g?f:l];else{var F=(T?T(p):p)+l,O=(T?T(p):p)+f,P=h+F,j=h+O;N[p]={},N[p][l]=P,N[p][f]=j,k=g?j:P}var M,D=s[k],I=!1;if(D){if(I=!0,m)for(b=0;b<D.length;b++)if(A(D[b],v))return}else D=s[k]=[];var U=s.constructor.name,Z=q[U];Z&&(M=Z[p]),M||(M=U+n+(T?T(p):p)),E.options=y,_&&(E.options.once=!1),E.target=s,E.capture=g,E.eventName=p,E.isExisting=I;var K=a?z:void 0;K&&(K.taskData=E);var C=S.scheduleEventTask(M,v,K,r,o);return E.target=null,K&&(K.taskData=null),_&&(y.once=!0),(L||"boolean"!=typeof C.options)&&(C.options=y),C.target=s,C.capture=g,C.eventName=p,d&&(C.originalDelegate=v),c?D.unshift(C):D.push(C),i?s:void 0}}};return S[o]=Z(F,v,D,I,k),x&&(S[g]=Z(x,y,function(t){return x.call(E.target,E.eventName,t.invoke,E.options)},I,k,!0)),S[i]=function(){var e,n=this||t,r=arguments[0],o=arguments[2];e=void 0!==o&&(!0===o||!1!==o&&!!o&&!!o.capture);var i=arguments[1];if(!i)return O.apply(this,arguments);if(!u||u(O,i,n,arguments)){var a,c=N[r];c&&(a=c[e?f:l]);var s=a&&n[a];if(s)for(var h=0;h<s.length;h++){var p=s[h];if(A(p,i))return s.splice(h,1),p.isRemoved=!0,0===s.length&&(p.allRemoved=!0,n[a]=null),p.zone.cancelTask(p),k?n:void 0}return O.apply(this,arguments)}},S[c]=function(){for(var e=arguments[0],n=[],r=W(this||t,T?T(e):e),o=0;o<r.length;o++){var i=r[o];n.push(i.originalDelegate?i.originalDelegate:i.callback)}return n},S[s]=function(){var e=this||t,n=arguments[0];if(n){var r=N[n];if(r){var o=e[r[l]],a=e[r[f]];if(o){var u=o.slice();for(p=0;p<u.length;p++)this[i].call(this,n,(c=u[p]).originalDelegate?c.originalDelegate:c.callback,c.options)}if(a)for(u=a.slice(),p=0;p<u.length;p++){var c;this[i].call(this,n,(c=u[p]).originalDelegate?c.originalDelegate:c.callback,c.options)}}}else{for(var h=Object.keys(e),p=0;p<h.length;p++){var v=V.exec(h[p]),d=v&&v[1];d&&"removeListener"!==d&&this[s].call(this,d)}this[s].call(this,"removeListener")}if(k)return this},U(S[o],F),U(S[i],O),j&&U(S[s],j),P&&U(S[c],P),!0}for(var S=[],x=0;x<e.length;x++)S[x]=k(e[x],n);return S}function W(t,e){var n=[];for(var r in t){var o=V.exec(r),i=o&&o[1];if(i&&(!e||i===e)){var a=t[r];if(a)for(var u=0;u<a.length;u++)n.push(a[u])}}return n}var Y=d("zoneTask");function B(t,e,n,r){var o=null,i=null;n+=r;var a={};function u(e){var n=e.data;return n.args[0]=function(){try{e.invoke.apply(this,arguments)}finally{e.data&&e.data.isPeriodic||("number"==typeof n.handleId?delete a[n.handleId]:n.handleId&&(n.handleId[Y]=null))}},n.handleId=o.apply(t,n.args),e}function c(t){return i(t.data.handleId)}o=A(t,e+=r,function(n){return function(o,i){if("function"==typeof i[0]){var s=v(e,i[0],{isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?i[1]||0:void 0,args:i},u,c);if(!s)return s;var f=s.data.handleId;return"number"==typeof f?a[f]=s:f&&(f[Y]=s),f&&f.ref&&f.unref&&"function"==typeof f.ref&&"function"==typeof f.unref&&(s.ref=f.ref.bind(f),s.unref=f.unref.bind(f)),"number"==typeof f||f?f:s}return n.apply(t,i)}}),i=A(t,n,function(e){return function(n,r){var o,i=r[0];"number"==typeof i?o=a[i]:(o=i&&i[Y])||(o=i),o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&("number"==typeof i?delete a[i]:i&&(i[Y]=null),o.zone.cancelTask(o)):e.apply(t,r)}})}var J=Object[d("defineProperty")]=Object.defineProperty,Q=Object[d("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,$=Object.create,tt=d("unconfigurables");function et(t,e){return t&&t[tt]&&t[tt][e]}function nt(t,e,n){return Object.isFrozen(n)||(n.configurable=!0),n.configurable||(t[tt]||Object.isFrozen(t)||J(t,tt,{writable:!0,value:{}}),t[tt]&&(t[tt][e]=!0)),n}function rt(t,e,n,r){try{return J(t,e,n)}catch(i){if(!n.configurable)throw i;void 0===r?delete n.configurable:n.configurable=r;try{return J(t,e,n)}catch(i){var o=null;try{o=JSON.stringify(n)}catch(i){o=n.toString()}console.log("Attempting to configure '"+e+"' with descriptor '"+o+"' on object '"+t+"' and got error, giving up: "+i)}}}var ot=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplyconnected","vrdisplaydisconnected","vrdisplaypresentchange"],it=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],at=["load"],ut=["blur","error","focus","load","resize","scroll","messageerror"],ct=["bounce","finish","start"],st=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],ft=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],lt=["close","error","open","message"],ht=["error","message"],pt=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],ot,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function vt(t,e,n,r){t&&j(t,function(t,e,n){if(!n||0===n.length)return e;var r=n.filter(function(e){return e.target===t});if(!r||0===r.length)return e;var o=r[0].ignoreProperties;return e.filter(function(t){return-1===o.indexOf(t)})}(t,e,n),r)}function dt(t,c){if(!w||E){var s="undefined"!=typeof WebSocket;if(function(){if((T||E)&&!e(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var t=e(Element.prototype,"onclick");if(t&&!t.configurable)return!1}var r=XMLHttpRequest.prototype,o=e(r,"onreadystatechange");if(o){n(r,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var i=!!(u=new XMLHttpRequest).onreadystatechange;return n(r,"onreadystatechange",o||{}),i}var a=d("fake");n(r,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return this[a]},set:function(t){this[a]=t}});var u,c=function(){};return(u=new XMLHttpRequest).onreadystatechange=c,i=u[a]===c,u.onreadystatechange=null,i}()){var f=c.__Zone_ignore_on_properties;if(T){var l=window,h=K?[{target:l,ignoreProperties:["error"]}]:[];vt(l,pt.concat(["messageerror"]),f?f.concat(h):f,r(l)),vt(Document.prototype,pt,f),void 0!==l.SVGElement&&vt(l.SVGElement.prototype,pt,f),vt(Element.prototype,pt,f),vt(HTMLElement.prototype,pt,f),vt(HTMLMediaElement.prototype,it,f),vt(HTMLFrameSetElement.prototype,ot.concat(ut),f),vt(HTMLBodyElement.prototype,ot.concat(ut),f),vt(HTMLFrameElement.prototype,at,f),vt(HTMLIFrameElement.prototype,at,f);var v=l.HTMLMarqueeElement;v&&vt(v.prototype,ct,f);var g=l.Worker;g&&vt(g.prototype,ht,f)}vt(XMLHttpRequest.prototype,st,f);var y=c.XMLHttpRequestEventTarget;y&&vt(y&&y.prototype,st,f),"undefined"!=typeof IDBIndex&&(vt(IDBIndex.prototype,ft,f),vt(IDBRequest.prototype,ft,f),vt(IDBOpenDBRequest.prototype,ft,f),vt(IDBDatabase.prototype,ft,f),vt(IDBTransaction.prototype,ft,f),vt(IDBCursor.prototype,ft,f)),s&&vt(WebSocket.prototype,lt,f)}else!function(){for(var t=function(t){var e=pt[t],n="on"+e;self.addEventListener(e,function(t){var e,r,o=t.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][gt]&&((e=p(o[n],r))[gt]=o[n],o[n]=e),o=o.parentElement},!0)},e=0;e<pt.length;e++)t(e)}(),D("XMLHttpRequest"),s&&function(t,n){var r=n.WebSocket;n.EventTarget||H(n,[r.prototype]),n.WebSocket=function(t,n){var c,s,f=arguments.length>1?new r(t,n):new r(t),l=e(f,"onmessage");return l&&!1===l.configurable?(c=o(f),s=f,[a,u,"send","close"].forEach(function(t){c[t]=function(){var e=i.call(arguments);if(t===a||t===u){var n=e.length>0?e[0]:void 0;if(n){var r=Zone.__symbol__("ON_PROPERTY"+n);f[r]=c[r]}}return f[t].apply(f,e)}})):c=f,j(c,["close","error","message","open"],s),c};var c=n.WebSocket;for(var s in r)c[s]=r[s]}(0,c)}}var gt=d("unbound");function yt(t,n,r,o){var i=Zone.__symbol__(r);if(!t[i]){var a=t[i]=t[r];t[r]=function(i,u,c){return u&&u.prototype&&o.forEach(function(t){var o,i,a,c,s=n+"."+r+"::"+t,f=u.prototype;if(f.hasOwnProperty(t)){var l=e(f,t);l&&l.value?(l.value=p(l.value,s),c=(a=l).configurable,rt(o=u.prototype,i=t,a=nt(o,i,a),c)):f[t]&&(f[t]=p(f[t],s))}else f[t]&&(f[t]=p(f[t],s))}),a.call(t,i,u,c)},U(t[r],a)}}Zone.__load_patch("util",function(t,e,n){n.patchOnProperties=j,n.patchMethod=A,n.bindArguments=k}),Zone.__load_patch("timers",function(t){B(t,"set","clear","Timeout"),B(t,"set","clear","Interval"),B(t,"set","clear","Immediate")}),Zone.__load_patch("requestAnimationFrame",function(t){B(t,"request","cancel","AnimationFrame"),B(t,"mozRequest","mozCancel","AnimationFrame"),B(t,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",function(t,e){for(var n=["alert","prompt","confirm"],r=0;r<n.length;r++)A(t,n[r],function(n,r,o){return function(r,i){return e.current.run(n,t,i,o)}})}),Zone.__load_patch("EventTarget",function(t,e,n){var r=e.__symbol__("BLACK_LISTED_EVENTS");t[r]&&(e[r]=t[r]),function(t,e){!function(t,e){var n=t.Event;n&&n.prototype&&e.patchMethod(n.prototype,"stopImmediatePropagation",function(t){return function(e,n){e[G]=!0,t&&t.apply(e,n)}})}(t,e)}(t,n),function(t,e){var n="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",r="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),o=[],i=t.wtf,a=n.split(",");i?o=a.map(function(t){return"HTML"+t+"Element"}).concat(r):t.EventTarget?o.push("EventTarget"):o=r;for(var u=t.__Zone_disable_IE_check||!1,c=t.__Zone_enable_cross_context_check||!1,s=C(),p="function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }",v=0;v<pt.length;v++){var d=h+((_=pt[v])+l),g=h+(_+f);N[_]={},N[_][l]=d,N[_][f]=g}for(v=0;v<n.length;v++)for(var y=a[v],m=q[y]={},b=0;b<pt.length;b++){var _;m[_=pt[b]]=y+".addEventListener:"+_}var k=[];for(v=0;v<o.length;v++){var S=t[o[v]];k.push(S&&S.prototype)}H(t,k,{vh:function(t,e,n,r){if(!u&&s){if(c)try{var o;if("[object FunctionWrapper]"===(o=e.toString())||o==p)return t.apply(n,r),!1}catch(i){return t.apply(n,r),!1}else if("[object FunctionWrapper]"===(o=e.toString())||o==p)return t.apply(n,r),!1}else if(c)try{e.toString()}catch(i){return t.apply(n,r),!1}return!0}}),e.patchEventTarget=H}(t,n);var o=t.XMLHttpRequestEventTarget;o&&o.prototype&&n.patchEventTarget(t,[o.prototype]),D("MutationObserver"),D("WebKitMutationObserver"),D("IntersectionObserver"),D("FileReader")}),Zone.__load_patch("on_property",function(t,e,n){dt(0,t),Object.defineProperty=function(t,e,n){if(et(t,e))throw new TypeError("Cannot assign to read only property '"+e+"' of "+t);var r=n.configurable;return"prototype"!==e&&(n=nt(t,e,n)),rt(t,e,n,r)},Object.defineProperties=function(t,e){return Object.keys(e).forEach(function(n){Object.defineProperty(t,n,e[n])}),t},Object.create=function(t,e){return"object"!=typeof e||Object.isFrozen(e)||Object.keys(e).forEach(function(n){e[n]=nt(t,n,e[n])}),$(t,e)},Object.getOwnPropertyDescriptor=function(t,e){var n=Q(t,e);return n&&et(t,e)&&(n.configurable=!1),n}}),Zone.__load_patch("customElements",function(t,e,n){(T||E)&&"registerElement"in t.document&&yt(document,"Document","registerElement",["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"]),(T||E)&&"customElements"in t&&yt(t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}),Zone.__load_patch("canvas",function(t){var e=t.HTMLCanvasElement;void 0!==e&&e.prototype&&e.prototype.toBlob&&function(t,n,r){var o=null;function i(t){var e=t.data;return e.args[e.cbIdx]=function(){t.invoke.apply(this,arguments)},o.apply(e.target,e.args),t}o=A(e.prototype,"toBlob",function(t){return function(e,n){var r=function(t,e){return{name:"HTMLCanvasElement.toBlob",target:t,cbIdx:0,args:e}}(e,n);return r.cbIdx>=0&&"function"==typeof n[r.cbIdx]?v(r.name,n[r.cbIdx],r,i):t.apply(e,n)}})}()}),Zone.__load_patch("XHR",function(t,e){!function(f){var l=XMLHttpRequest.prototype,h=l[c],p=l[s];if(!h){var g=t.XMLHttpRequestEventTarget;if(g){var y=g.prototype;h=y[c],p=y[s]}}var m="readystatechange",b="scheduled";function _(t){var e=t.data,r=e.target;r[i]=!1,r[u]=!1;var a=r[o];h||(h=r[c],p=r[s]),a&&p.call(r,m,a);var f=r[o]=function(){if(r.readyState===r.DONE)if(!e.aborted&&r[i]&&t.state===b){var n=r.__zone_symbol__loadfalse;if(n&&n.length>0){var o=t.invoke;t.invoke=function(){for(var n=r.__zone_symbol__loadfalse,i=0;i<n.length;i++)n[i]===t&&n.splice(i,1);e.aborted||t.state!==b||o.call(t)},n.push(t)}else t.invoke()}else e.aborted||!1!==r[i]||(r[u]=!0)};return h.call(r,m,f),r[n]||(r[n]=t),E.apply(r,e.args),r[i]=!0,t}function k(){}function S(t){var e=t.data;return e.aborted=!0,F.apply(e.target,e.args)}var x=A(l,"open",function(){return function(t,e){return t[r]=0==e[2],t[a]=e[1],x.apply(t,e)}}),w=d("fetchTaskAborting"),T=d("fetchTaskScheduling"),E=A(l,"send",function(){return function(t,n){if(!0===e.current[T])return E.apply(t,n);if(t[r])return E.apply(t,n);var o={target:t,url:t[a],isPeriodic:!1,args:n,aborted:!1},i=v("XMLHttpRequest.send",k,o,_,S);t&&!0===t[u]&&!o.aborted&&i.state===b&&i.invoke()}}),F=A(l,"abort",function(){return function(t,r){var o=t[n];if(o&&"string"==typeof o.type){if(null==o.cancelFn||o.data&&o.data.aborted)return;o.zone.cancelTask(o)}else if(!0===e.current[w])return F.apply(t,r)}})}();var n=d("xhrTask"),r=d("xhrSync"),o=d("xhrListener"),i=d("xhrScheduled"),a=d("xhrURL"),u=d("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",function(t){t.navigator&&t.navigator.geolocation&&function(t,n){for(var r=t.constructor.name,o=function(o){var i=n[o],a=t[i];if(a){if(!S(e(t,i)))return"continue";t[i]=function(t){var e=function(){return t.apply(this,k(arguments,r+"."+i))};return U(e,t),e}(a)}},i=0;i<n.length;i++)o(i)}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",function(t,e){function n(e){return function(n){W(t,e).forEach(function(r){var o=t.PromiseRejectionEvent;if(o){var i=new o(e,{promise:n.promise,reason:n.rejection});r.invoke(i)}})}}t.PromiseRejectionEvent&&(e[d("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),e[d("rejectionHandledHandler")]=n("rejectionhandled"))})}()},"0l/t":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(2);r(r.P+r.F*!n("LyE8")([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},"0mN4":function(t,e,n){"use strict";n("OGtf")("fixed",function(t){return function(){return t(this,"tt","","")}})},"0sh+":function(t,e,n){var r=n("quPj"),o=n("vhPU");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},1:function(t,e,n){t.exports=n("hN/g")},"11IZ":function(t,e,n){var r=n("dyZX").parseFloat,o=n("qncB").trim;t.exports=1/r(n("/e88")+"-0")!=-1/0?function(t){var e=o(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},"1MBn":function(t,e,n){var r=n("DVgA"),o=n("JiEa"),i=n("UqcF");t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),c=i.f,s=0;u.length>s;)c.call(t,a=u[s++])&&e.push(a);return e}},"1TsA":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},"1sa7":function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},"25dN":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{is:n("g6HL")})},"2OiF":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,e,n){var r=n("XKFU");r(r.P,"Function",{bind:n("8MEG")})},"2atp":function(t,e,n){var r=n("XKFU"),o=Math.atanh;r(r.S+r.F*!(o&&1/o(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},"4A4+":function(t,e,n){n("2Spj"),n("f3/d"),n("IXt9"),t.exports=n("g3g5").Function},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),o=n("XKFU"),i=n("KroJ"),a=n("3Lyj"),u=n("Z6vF"),c=n("SlkY"),s=n("9gX7"),f=n("0/R4"),l=n("eeVq"),h=n("XMVh"),p=n("fyDq"),v=n("Xbzi");t.exports=function(t,e,n,d,g,y){var m=r[t],b=m,_=g?"set":"add",k=b&&b.prototype,S={},x=function(t){var e=k[t];i(k,t,"delete"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(y||k.forEach&&!l(function(){(new b).entries().next()}))){var w=new b,T=w[_](y?{}:-0,1)!=w,E=l(function(){w.has(1)}),F=h(function(t){new b(t)}),O=!y&&l(function(){for(var t=new b,e=5;e--;)t[_](e,e);return!t.has(-0)});F||((b=e(function(e,n){s(e,b,t);var r=v(new m,e,b);return null!=n&&c(n,g,r[_],r),r})).prototype=k,k.constructor=b),(E||O)&&(x("delete"),x("has"),g&&x("get")),(O||T)&&x(_),y&&k.clear&&delete k.clear}else b=d.getConstructor(e,t,g,_),a(b.prototype,n),u.NEED=!0;return p(b,t),S[t]=b,o(o.G+o.W+o.F*(b!=m),S),y||d.setStrong(b,t,g),b}},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"5Pf0":function(t,e,n){var r=n("S/j/"),o=n("OP3Y");n("Xtr8")("getPrototypeOf",function(){return function(t){return o(r(t))}})},"69bn":function(t,e,n){var r=n("y3w9"),o=n("2OiF"),i=n("K0xU")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},"6AQ9":function(t,e,n){"use strict";var r=n("XKFU"),o=n("8a7r");r(r.S+r.F*n("eeVq")(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)o(n,t,arguments[t++]);return n.length=e,n}})},"6FMO":function(t,e,n){var r=n("0/R4"),o=n("EWmC"),i=n("K0xU")("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},"7h0T":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isNaN:function(t){return t!=t}})},"8+KV":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(0),i=n("LyE8")([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(t){return o(this,t,arguments[1])}})},"84bF":function(t,e,n){"use strict";n("OGtf")("small",function(t){return function(){return t(this,"small","","")}})},"8MEG":function(t,e,n){"use strict";var r=n("2OiF"),o=n("0/R4"),i=n("MfQN"),a=[].slice,u={};t.exports=Function.bind||function(t){var e=r(this),n=a.call(arguments,1),c=function(){var r=n.concat(a.call(arguments));return this instanceof c?function(t,e,n){if(!(e in u)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";u[e]=Function("F,a","return new F("+r.join(",")+")")}return u[e](t,n)}(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(c.prototype=e.prototype),c}},"8a7r":function(t,e,n){"use strict";var r=n("hswa"),o=n("RjD/");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},"91GP":function(t,e,n){var r=n("XKFU");r(r.S+r.F,"Object",{assign:n("czNK")})},"99sg":function(t,e,n){n("ioFf"),n("hHhE"),n("HAE/"),n("WLL4"),n("mYba"),n("5Pf0"),n("RW0V"),n("JduL"),n("DW2E"),n("z2o2"),n("mura"),n("Zshi"),n("V/DX"),n("FlsD"),n("91GP"),n("25dN"),n("/SS/"),n("Btvt"),t.exports=n("g3g5").Object},"9AAn":function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(o(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(o(this,"Map"),0===t?0:t,e)}},r,!0)},"9P93":function(t,e,n){var r=n("XKFU"),o=Math.imul;r(r.S+r.F*n("eeVq")(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},"9VmF":function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".startsWith;r(r.P+r.F*n("UUeW")("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},A2zW:function(t,e,n){"use strict";var r=n("XKFU"),o=n("RYi7"),i=n("vvmO"),a=n("l0Rn"),u=1..toFixed,c=Math.floor,s=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,e){for(var n=-1,r=e;++n<6;)s[n]=(r+=t*s[n])%1e7,r=c(r/1e7)},h=function(t){for(var e=6,n=0;--e>=0;)s[e]=c((n+=s[e])/t),n=n%t*1e7},p=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==s[t]){var n=String(s[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e},v=function(t,e,n){return 0===e?n:e%2==1?v(t,e-1,n*t):v(t*t,e/2,n)};r(r.P+r.F*(!!u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n("eeVq")(function(){u.call({})})),"Number",{toFixed:function(t){var e,n,r,u,c=i(this,f),s=o(t),d="",g="0";if(s<0||s>20)throw RangeError(f);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(d="-",c=-c),c>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*v(2,69,1))-69)<0?c*v(2,-e,1):c/v(2,e,1),n*=4503599627370496,(e=52-e)>0){for(l(0,n),r=s;r>=7;)l(1e7,0),r-=7;for(l(v(10,r,1),0),r=e-1;r>=23;)h(1<<23),r-=23;h(1<<r),l(1,1),h(2),g=p()}else l(0,n),l(1<<-e,0),g=p()+a.call("0",s);return s>0?d+((u=g.length)<=s?"0."+a.call("0",s-u)+g:g.slice(0,u-s)+"."+g.slice(u-s)):d+g}})},A5AN:function(t,e,n){"use strict";var r=n("AvRE")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),o=n("XKFU"),i=n("KroJ"),a=n("Mukb"),u=n("hPIQ"),c=n("QaDb"),s=n("fyDq"),f=n("OP3Y"),l=n("K0xU")("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,v,d,g,y){c(n,e,v);var m,b,_,k=function(t){if(!h&&t in T)return T[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",x="values"==d,w=!1,T=t.prototype,E=T[l]||T["@@iterator"]||d&&T[d],F=E||k(d),O=d?x?k("entries"):F:void 0,P="Array"==e&&T.entries||E;if(P&&(_=f(P.call(new t)))!==Object.prototype&&_.next&&(s(_,S,!0),r||"function"==typeof _[l]||a(_,l,p)),x&&E&&"values"!==E.name&&(w=!0,F=function(){return E.call(this)}),r&&!y||!h&&!w&&T[l]||a(T,l,F),u[e]=F,u[S]=p,d)if(m={values:x?F:k("values"),keys:g?F:k("keys"),entries:O},y)for(b in m)b in T||i(T,b,m[b]);else o(o.P+o.F*(h||w),e,m);return m}},AphP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT");r(r.P+r.F*n("eeVq")(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=o(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},AvRE:function(t,e,n){var r=n("RYi7"),o=n("vhPU");t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},BC7C:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{fround:n("kcoS")})},"BJ/l":function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log1p:n("1sa7")})},BP8U:function(t,e,n){var r=n("XKFU"),o=n("PKUr");r(r.S+r.F*(Number.parseInt!=o),"Number",{parseInt:o})},Btvt:function(t,e,n){"use strict";var r=n("I8a+"),o={};o[n("K0xU")("toStringTag")]="z",o+""!="[object z]"&&n("KroJ")(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},"C/va":function(t,e,n){"use strict";var r=n("y3w9");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},CkkT:function(t,e,n){var r=n("m0Pp"),o=n("Ymqv"),i=n("S/j/"),a=n("ne8i"),u=n("zRwo");t.exports=function(t,e){var n=1==t,c=2==t,s=3==t,f=4==t,l=6==t,h=5==t||l,p=e||u;return function(e,u,v){for(var d,g,y=i(e),m=o(y),b=r(u,v,3),_=a(m.length),k=0,S=n?p(e,_):c?p(e,0):void 0;_>k;k++)if((h||k in m)&&(g=b(d=m[k],k,y),t))if(n)S[k]=g;else if(g)switch(t){case 3:return!0;case 5:return d;case 6:return k;case 2:S.push(d)}else if(f)return!1;return l?-1:s||f?f:S}}},CuTL:function(t,e,n){n("fyVe"),n("U2t9"),n("2atp"),n("+auO"),n("MtdB"),n("Jcmo"),n("nzyx"),n("BC7C"),n("x8ZO"),n("9P93"),n("eHKK"),n("BJ/l"),n("pp/T"),n("CyHz"),n("bBoP"),n("x8Yj"),n("hLT2"),t.exports=n("g3g5").Math},CyHz:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{sign:n("lvtm")})},DNiP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduce,!0),"Array",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},DVgA:function(t,e,n){var r=n("zhAb"),o=n("4R4u");t.exports=Object.keys||function(t){return r(t,o)}},DW2E:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("freeze",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},EK0E:function(t,e,n){"use strict";var r,o=n("dyZX"),i=n("CkkT")(0),a=n("KroJ"),u=n("Z6vF"),c=n("czNK"),s=n("ZD67"),f=n("0/R4"),l=n("s5qY"),h=n("s5qY"),p=!o.ActiveXObject&&"ActiveXObject"in o,v=u.getWeak,d=Object.isExtensible,g=s.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},m={get:function(t){if(f(t)){var e=v(t);return!0===e?g(l(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(l(this,"WeakMap"),t,e)}},b=t.exports=n("4LiD")("WeakMap",y,m,s,!0,!0);h&&p&&(c((r=s.getConstructor(y,"WeakMap")).prototype,m),u.NEED=!0,i(["delete","has","get","set"],function(t){var e=b.prototype,n=e[t];a(e,t,function(e,o){if(f(e)&&!d(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)})}))},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),o=n("RjD/"),i=n("aCFj"),a=n("apmT"),u=n("aagx"),c=n("xpql"),s=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?s:function(t,e){if(t=i(t),e=a(e,!0),c)try{return s(t,e)}catch(n){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},FEjr:function(t,e,n){"use strict";n("OGtf")("strike",function(t){return function(){return t(this,"strike","","")}})},FJW5:function(t,e,n){var r=n("hswa"),o=n("y3w9"),i=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,c=0;u>c;)r.f(t,n=a[c++],e[n]);return t}},FLlr:function(t,e,n){var r=n("XKFU");r(r.P,"String",{repeat:n("l0Rn")})},FlsD:function(t,e,n){var r=n("0/R4");n("Xtr8")("isExtensible",function(t){return function(e){return!!r(e)&&(!t||t(e))}})},GNAe:function(t,e,n){var r=n("XKFU"),o=n("PKUr");r(r.G+r.F*(parseInt!=o),{parseInt:o})},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},"HAE/":function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperty:n("hswa").f})},HEwt:function(t,e,n){"use strict";var r=n("m0Pp"),o=n("XKFU"),i=n("S/j/"),a=n("H6hf"),u=n("M6Qj"),c=n("ne8i"),s=n("8a7r"),f=n("J+6e");o(o.S+o.F*!n("XMVh")(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,l,h=i(t),p="function"==typeof this?this:Array,v=arguments.length,d=v>1?arguments[1]:void 0,g=void 0!==d,y=0,m=f(h);if(g&&(d=r(d,v>2?arguments[2]:void 0,2)),null==m||p==Array&&u(m))for(n=new p(e=c(h.length));e>y;y++)s(n,y,g?d(h[y],y):h[y]);else for(l=m.call(h),n=new p;!(o=l.next()).done;y++)s(n,y,g?a(l,d,[o.value,y],!0):o.value);return n.length=y,n}})},I78e:function(t,e,n){"use strict";var r=n("XKFU"),o=n("+rLv"),i=n("LZWt"),a=n("d/Gc"),u=n("ne8i"),c=[].slice;r(r.P+r.F*n("eeVq")(function(){o&&c.call(o)}),"Array",{slice:function(t,e){var n=u(this.length),r=i(this);if(e=void 0===e?n:e,"Array"==r)return c.call(this,t,e);for(var o=a(t,n),s=a(e,n),f=u(s-o),l=new Array(f),h=0;h<f;h++)l[h]="String"==r?this.charAt(o+h):this[o+h];return l}})},"I8a+":function(t,e,n){var r=n("LZWt"),o=n("K0xU")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=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=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},INYr:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(6),i="findIndex",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")(i)},"IU+Z":function(t,e,n){"use strict";n("sMXx");var r=n("KroJ"),o=n("Mukb"),i=n("eeVq"),a=n("vhPU"),u=n("K0xU"),c=n("Ugos"),s=u("species"),f=!i(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),l=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var h=u(t),p=!i(function(){var e={};return e[h]=function(){return 7},7!=""[t](e)}),v=p?!i(function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[h](""),!e}):void 0;if(!p||!v||"replace"===t&&!f||"split"===t&&!l){var d=/./[h],g=n(a,h,""[t],function(t,e,n,r,o){return e.exec===c?p&&!o?{done:!0,value:d.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),y=g[1];r(String.prototype,t,g[0]),o(RegExp.prototype,h,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},IXt9:function(t,e,n){"use strict";var r=n("0/R4"),o=n("OP3Y"),i=n("K0xU")("hasInstance"),a=Function.prototype;i in a||n("hswa").f(a,i,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=o(t);)if(this.prototype===t)return!0;return!1}})},Iw71:function(t,e,n){var r=n("0/R4"),o=n("dyZX").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"J+6e":function(t,e,n){var r=n("I8a+"),o=n("K0xU")("iterator"),i=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},JCqj:function(t,e,n){"use strict";n("OGtf")("sup",function(t){return function(){return t(this,"sup","","")}})},Jcmo:function(t,e,n){var r=n("XKFU"),o=Math.exp;r(r.S,"Math",{cosh:function(t){return(o(t=+t)+o(-t))/2}})},JduL:function(t,e,n){n("Xtr8")("getOwnPropertyNames",function(){return n("e7yV").f})},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},K0xU:function(t,e,n){var r=n("VTer")("wks"),o=n("ylqs"),i=n("dyZX").Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},KKXr:function(t,e,n){"use strict";var r=n("quPj"),o=n("y3w9"),i=n("69bn"),a=n("A5AN"),u=n("ne8i"),c=n("Xxuz"),s=n("Ugos"),f=n("eeVq"),l=Math.min,h=[].push,p=!f(function(){RegExp(4294967295,"y")});n("IU+Z")("split",2,function(t,e,n,f){var v;return v="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(o,t,e);for(var i,a,u,c=[],f=0,l=void 0===e?4294967295:e>>>0,p=new RegExp(t.source,(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":"")+"g");(i=s.call(p,o))&&!((a=p.lastIndex)>f&&(c.push(o.slice(f,i.index)),i.length>1&&i.index<o.length&&h.apply(c,i.slice(1)),u=i[0].length,f=a,c.length>=l));)p.lastIndex===i.index&&p.lastIndex++;return f===o.length?!u&&p.test("")||c.push(""):c.push(o.slice(f)),c.length>l?c.slice(0,l):c}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var o=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):v.call(String(o),n,r)},function(t,e){var r=f(v,t,this,e,v!==n);if(r.done)return r.value;var s=o(t),h=String(this),d=i(s,RegExp),g=s.unicode,y=new d(p?s:"^(?:"+s.source+")",(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(p?"y":"g")),m=void 0===e?4294967295:e>>>0;if(0===m)return[];if(0===h.length)return null===c(y,h)?[h]:[];for(var b=0,_=0,k=[];_<h.length;){y.lastIndex=p?_:0;var S,x=c(y,p?h:h.slice(_));if(null===x||(S=l(u(y.lastIndex+(p?0:_)),h.length))===b)_=a(h,_,g);else{if(k.push(h.slice(b,_)),k.length===m)return k;for(var w=1;w<=x.length-1;w++)if(k.push(x[w]),k.length===m)return k;_=b=S}}return k.push(h.slice(b)),k}]})},KroJ:function(t,e,n){var r=n("dyZX"),o=n("Mukb"),i=n("aagx"),a=n("ylqs")("src"),u=n("+lvF"),c=(""+u).split("toString");n("g3g5").inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:u?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||u.call(this)})},Kuth:function(t,e,n){var r=n("y3w9"),o=n("FJW5"),i=n("4R4u"),a=n("YTvA")("IE_PROTO"),u=function(){},c=function(){var t,e=n("Iw71")("iframe"),r=i.length;for(e.style.display="none",n("+rLv").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=r(t),n=new u,u.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},L9s1:function(t,e,n){"use strict";var r=n("XKFU"),o=n("0sh+");r(r.P+r.F*n("UUeW")("includes"),"String",{includes:function(t){return!!~o(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},LK8F:function(t,e,n){var r=n("XKFU");r(r.S,"Array",{isArray:n("EWmC")})},LQAc:function(t,e){t.exports=!1},LVwc:function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},LZWt:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},Ljet:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},Lmuc:function(t,e,n){n("xfY5"),n("A2zW"),n("VKir"),n("Ljet"),n("/KAi"),n("fN96"),n("7h0T"),n("sbF8"),n("h/M4"),n("knhD"),n("XfKG"),n("BP8U"),t.exports=n("g3g5").Number},LyE8:function(t,e,n){"use strict";var r=n("eeVq");t.exports=function(t,e){return!!t&&r(function(){e?t.call(null,function(){},1):t.call(null)})}},M6Qj:function(t,e,n){var r=n("hPIQ"),o=n("K0xU")("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},MfQN:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},MtdB:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},Mukb:function(t,e,n){var r=n("hswa"),o=n("RjD/");t.exports=n("nh4g")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},N8g3:function(t,e,n){e.f=n("K0xU")},Nr18:function(t,e,n){"use strict";var r=n("S/j/"),o=n("d/Gc"),i=n("ne8i");t.exports=function(t){for(var e=r(this),n=i(e.length),a=arguments.length,u=o(a>1?arguments[1]:void 0,n),c=a>2?arguments[2]:void 0,s=void 0===c?n:o(c,n);s>u;)e[u++]=t;return e}},Nz9U:function(t,e,n){"use strict";var r=n("XKFU"),o=n("aCFj"),i=[].join;r(r.P+r.F*(n("Ymqv")!=Object||!n("LyE8")(i)),"Array",{join:function(t){return i.call(o(this),void 0===t?",":t)}})},OEbY:function(t,e,n){n("nh4g")&&"g"!=/./g.flags&&n("hswa").f(RegExp.prototype,"flags",{configurable:!0,get:n("C/va")})},OG14:function(t,e,n){"use strict";var r=n("y3w9"),o=n("g6HL"),i=n("Xxuz");n("IU+Z")("search",1,function(t,e,n,a){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var u=r(t),c=String(this),s=u.lastIndex;o(s,0)||(u.lastIndex=0);var f=i(u,c);return o(u.lastIndex,s)||(u.lastIndex=s),null===f?-1:f.index}]})},OGtf:function(t,e,n){var r=n("XKFU"),o=n("eeVq"),i=n("vhPU"),a=/"/g,u=function(t,e,n,r){var o=String(i(t)),u="<"+e;return""!==n&&(u+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),u+">"+o+"</"+e+">"};t.exports=function(t,e){var n={};n[t]=e(u),r(r.P+r.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},OP3Y:function(t,e,n){var r=n("aagx"),o=n("S/j/"),i=n("YTvA")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},OnI7:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("LQAc"),a=n("N8g3"),u=n("hswa").f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},Oyvg:function(t,e,n){var r=n("dyZX"),o=n("Xbzi"),i=n("hswa").f,a=n("kJMx").f,u=n("quPj"),c=n("C/va"),s=r.RegExp,f=s,l=s.prototype,h=/a/g,p=/a/g,v=new s(h)!==h;if(n("nh4g")&&(!v||n("eeVq")(function(){return p[n("K0xU")("match")]=!1,s(h)!=h||s(p)==p||"/a/i"!=s(h,"i")}))){s=function(t,e){var n=this instanceof s,r=u(t),i=void 0===e;return!n&&r&&t.constructor===s&&i?t:o(v?new f(r&&!i?t.source:t,e):f((r=t instanceof s)?t.source:t,r&&i?c.call(t):e),n?this:l,s)};for(var d=function(t){t in s||i(s,t,{configurable:!0,get:function(){return f[t]},set:function(e){f[t]=e}})},g=a(f),y=0;g.length>y;)d(g[y++]);l.constructor=s,s.prototype=l,n("KroJ")(r,"RegExp",s)}n("elZq")("RegExp")},PKUr:function(t,e,n){var r=n("dyZX").parseInt,o=n("qncB").trim,i=n("/e88"),a=/^[-+]?0[xX]/;t.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(t,e){var n=o(String(t),3);return r(n,e>>>0||(a.test(n)?16:10))}:r},QaDb:function(t,e,n){"use strict";var r=n("Kuth"),o=n("RjD/"),i=n("fyDq"),a={};n("Mukb")(a,n("K0xU")("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},RQRG:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("2OiF"),a=n("hswa");n("nh4g")&&r(r.P+n("xbSm"),"Object",{__defineGetter__:function(t,e){a.f(o(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},RW0V:function(t,e,n){var r=n("S/j/"),o=n("DVgA");n("Xtr8")("keys",function(){return function(t){return o(r(t))}})},RYi7:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"RjD/":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"S/j/":function(t,e,n){var r=n("vhPU");t.exports=function(t){return Object(r(t))}},SMB2:function(t,e,n){"use strict";n("OGtf")("bold",function(t){return function(){return t(this,"b","","")}})},SPin:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduceRight,!0),"Array",{reduceRight:function(t){return o(this,t,arguments.length,arguments[1],!0)}})},SRfc:function(t,e,n){"use strict";var r=n("y3w9"),o=n("ne8i"),i=n("A5AN"),a=n("Xxuz");n("IU+Z")("match",1,function(t,e,n,u){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=u(n,t,this);if(e.done)return e.value;var c=r(t),s=String(this);if(!c.global)return a(c,s);var f=c.unicode;c.lastIndex=0;for(var l,h=[],p=0;null!==(l=a(c,s));){var v=String(l[0]);h[p]=v,""===v&&(c.lastIndex=i(s,o(c.lastIndex),f)),p++}return 0===p?null:h}]})},SlkY:function(t,e,n){var r=n("m0Pp"),o=n("H6hf"),i=n("M6Qj"),a=n("y3w9"),u=n("ne8i"),c=n("J+6e"),s={},f={};(e=t.exports=function(t,e,n,l,h){var p,v,d,g,y=h?function(){return t}:c(t),m=r(n,l,e?2:1),b=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(i(y)){for(p=u(t.length);p>b;b++)if((g=e?m(a(v=t[b])[0],v[1]):m(t[b]))===s||g===f)return g}else for(d=y.call(t);!(v=d.next()).done;)if((g=o(d,m,v.value,e))===s||g===f)return g}).BREAK=s,e.RETURN=f},T39b:function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(o(this,"Set"),t=0===t?0:t,t)}},r)},Tze0:function(t,e,n){"use strict";n("qncB")("trim",function(t){return function(){return t(this,3)}})},U2t9:function(t,e,n){var r=n("XKFU"),o=Math.asinh;r(r.S+r.F*!(o&&1/o(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},UExd:function(t,e,n){var r=n("DVgA"),o=n("aCFj"),i=n("UqcF").f;t.exports=function(t){return function(e){for(var n,a=o(e),u=r(a),c=u.length,s=0,f=[];c>s;)i.call(a,n=u[s++])&&f.push(t?[n,a[n]]:a[n]);return f}}},UUeW:function(t,e,n){var r=n("K0xU")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},Ugos:function(t,e,n){"use strict";var r,o,i=n("C/va"),a=RegExp.prototype.exec,u=String.prototype.replace,c=a,s=(o=/b*/g,a.call(r=/a/,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=void 0!==/()??/.exec("")[1];(s||f)&&(c=function(t){var e,n,r,o,c=this;return f&&(n=new RegExp("^"+c.source+"$(?!\\s)",i.call(c))),s&&(e=c.lastIndex),r=a.call(c,t),s&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),f&&r&&r.length>1&&u.call(r[0],n,function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)}),r}),t.exports=c},UqcF:function(t,e){e.f={}.propertyIsEnumerable},"V+eJ":function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n("LyE8")(i)),"Array",{indexOf:function(t){return a?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},"V/DX":function(t,e,n){var r=n("0/R4");n("Xtr8")("isSealed",function(t){return function(e){return!r(e)||!!t&&t(e)}})},"V5/Y":function(t,e,n){n("VpUO"),n("eI33"),n("Tze0"),n("XfO3"),n("oDIu"),n("rvZc"),n("L9s1"),n("FLlr"),n("9VmF"),n("hEkN"),n("nIY7"),n("+oPb"),n("SMB2"),n("0mN4"),n("bDcW"),n("nsiH"),n("0LDn"),n("tUrg"),n("84bF"),n("FEjr"),n("Zz4T"),n("JCqj"),n("SRfc"),n("pIFo"),n("OG14"),n("KKXr"),t.exports=n("g3g5").String},VKir:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eeVq"),i=n("vvmO"),a=1..toPrecision;r(r.P+r.F*(o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},VTer:function(t,e,n){var r=n("g3g5"),o=n("dyZX"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("LQAc")?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},VXxg:function(t,e,n){n("Btvt"),n("XfO3"),n("rGqo"),n("T39b"),t.exports=n("g3g5").Set},Vd3H:function(t,e,n){"use strict";var r=n("XKFU"),o=n("2OiF"),i=n("S/j/"),a=n("eeVq"),u=[].sort,c=[1,2,3];r(r.P+r.F*(a(function(){c.sort(void 0)})||!a(function(){c.sort(null)})||!n("LyE8")(u)),"Array",{sort:function(t){return void 0===t?u.call(i(this)):u.call(i(this),o(t))}})},VpUO:function(t,e,n){var r=n("XKFU"),o=n("d/Gc"),i=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],o(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?i(e):i(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},WLL4:function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperties:n("FJW5")})},XKFU:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("Mukb"),a=n("KroJ"),u=n("m0Pp"),c=function(t,e,n){var s,f,l,h,p=t&c.F,v=t&c.G,d=t&c.P,g=t&c.B,y=v?r:t&c.S?r[e]||(r[e]={}):(r[e]||{}).prototype,m=v?o:o[e]||(o[e]={}),b=m.prototype||(m.prototype={});for(s in v&&(n=e),n)l=((f=!p&&y&&void 0!==y[s])?y:n)[s],h=g&&f?u(l,r):d&&"function"==typeof l?u(Function.call,l):l,y&&a(y,s,l,t&c.U),m[s]!=l&&i(m,s,h),d&&b[s]!=l&&(b[s]=l)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},XMVh:function(t,e,n){var r=n("K0xU")("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],u=i[r]();u.next=function(){return{done:n=!0}},i[r]=function(){return u},t(i)}catch(a){}return n}},Xbzi:function(t,e,n){var r=n("0/R4"),o=n("i5dc").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},XfKG:function(t,e,n){var r=n("XKFU"),o=n("11IZ");r(r.S+r.F*(Number.parseFloat!=o),"Number",{parseFloat:o})},XfO3:function(t,e,n){"use strict";var r=n("AvRE")(!0);n("Afnz")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},Xtr8:function(t,e,n){var r=n("XKFU"),o=n("g3g5"),i=n("eeVq");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},Xxuz:function(t,e,n){"use strict";var r=n("I8a+"),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},YJVH:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(4);r(r.P+r.F*!n("LyE8")([].every,!0),"Array",{every:function(t){return o(this,t,arguments[1])}})},YTvA:function(t,e,n){var r=n("VTer")("keys"),o=n("ylqs");t.exports=function(t){return r[t]||(r[t]=o(t))}},Ymqv:function(t,e,n){var r=n("LZWt");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},Z6vF:function(t,e,n){var r=n("ylqs")("meta"),o=n("0/R4"),i=n("aagx"),a=n("hswa").f,u=0,c=Object.isExtensible||function(){return!0},s=!n("eeVq")(function(){return c(Object.preventExtensions({}))}),f=function(t){a(t,r,{value:{i:"O"+ ++u,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[r].w},onFreeze:function(t){return s&&l.NEED&&c(t)&&!i(t,r)&&f(t),t}}},ZD67:function(t,e,n){"use strict";var r=n("3Lyj"),o=n("Z6vF").getWeak,i=n("y3w9"),a=n("0/R4"),u=n("9gX7"),c=n("SlkY"),s=n("CkkT"),f=n("aagx"),l=n("s5qY"),h=s(5),p=s(6),v=0,d=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return h(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=p(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var s=t(function(t,r){u(t,s,e,"_i"),t._t=e,t._i=v++,t._l=void 0,null!=r&&c(r,n,t[i],t)});return r(s.prototype,{delete:function(t){if(!a(t))return!1;var n=o(t);return!0===n?d(l(this,e)).delete(t):n&&f(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=o(t);return!0===n?d(l(this,e)).has(t):n&&f(n,this._i)}}),s},def:function(t,e,n){var r=o(i(e),!0);return!0===r?d(t).set(e,n):r[t._i]=n,t},ufstore:d}},"ZNX/":function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT"),a=n("OP3Y"),u=n("EemH").f;n("nh4g")&&r(r.P+n("xbSm"),"Object",{__lookupSetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=u(n,r))return e.set}while(n=a(n))}})},Zshi:function(t,e,n){var r=n("0/R4");n("Xtr8")("isFrozen",function(t){return function(e){return!r(e)||!!t&&t(e)}})},Zz4T:function(t,e,n){"use strict";n("OGtf")("sub",function(t){return function(){return t(this,"sub","","")}})},a0L2:function(t,e,n){n("jm62"),n("hhXQ"),n("/8Fb"),n("RQRG"),n("/uf1"),n("uaHG"),n("ZNX/"),t.exports=n("g3g5").Object},a1Th:function(t,e,n){"use strict";n("OEbY");var r=n("y3w9"),o=n("C/va"),i=n("nh4g"),a=/./.toString,u=function(t){n("KroJ")(RegExp.prototype,"toString",t,!0)};n("eeVq")(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?u(function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)}):"toString"!=a.name&&u(function(){return a.call(this)})},aCFj:function(t,e,n){var r=n("Ymqv"),o=n("vhPU");t.exports=function(t){return r(o(t))}},aagx:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},apmT:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},bBoP:function(t,e,n){var r=n("XKFU"),o=n("LVwc"),i=Math.exp;r(r.S+r.F*n("eeVq")(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},bDcW:function(t,e,n){"use strict";n("OGtf")("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},bHtr:function(t,e,n){var r=n("XKFU");r(r.P,"Array",{fill:n("Nr18")}),n("nGyu")("fill")},bWfx:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(1);r(r.P+r.F*!n("LyE8")([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},czNK:function(t,e,n){"use strict";var r=n("DVgA"),o=n("JiEa"),i=n("UqcF"),a=n("S/j/"),u=n("Ymqv"),c=Object.assign;t.exports=!c||n("eeVq")(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r})?function(t,e){for(var n=a(t),c=arguments.length,s=1,f=o.f,l=i.f;c>s;)for(var h,p=u(arguments[s++]),v=f?r(p).concat(f(p)):r(p),d=v.length,g=0;d>g;)l.call(p,h=v[g++])&&(n[h]=p[h]);return n}:c},"d/Gc":function(t,e,n){var r=n("RYi7"),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},"dE+T":function(t,e,n){var r=n("XKFU");r(r.P,"Array",{copyWithin:n("upKx")}),n("nGyu")("copyWithin")},dQfE:function(t,e,n){n("XfO3"),n("LK8F"),n("HEwt"),n("6AQ9"),n("Nz9U"),n("I78e"),n("Vd3H"),n("8+KV"),n("bWfx"),n("0l/t"),n("dZ+Y"),n("YJVH"),n("DNiP"),n("SPin"),n("V+eJ"),n("mGWK"),n("dE+T"),n("bHtr"),n("dRSK"),n("INYr"),n("0E+W"),n("yt8O"),t.exports=n("g3g5").Array},dRSK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(5),i=!0;"find"in[]&&Array(1).find(function(){i=!1}),r(r.P+r.F*i,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("find")},"dZ+Y":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(3);r(r.P+r.F*!n("LyE8")([].some,!0),"Array",{some:function(t){return o(this,t,arguments[1])}})},dyZX:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},e7yV:function(t,e,n){var r=n("aCFj"),o=n("kJMx").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(e){return a.slice()}}(t):o(r(t))}},eHKK:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},eI33:function(t,e,n){var r=n("XKFU"),o=n("aCFj"),i=n("ne8i");r(r.S,"String",{raw:function(t){for(var e=o(t.raw),n=i(e.length),r=arguments.length,a=[],u=0;n>u;)a.push(String(e[u++])),u<r&&a.push(String(arguments[u]));return a.join("")}})},eM6i:function(t,e,n){var r=n("XKFU");r(r.S,"Date",{now:function(){return(new Date).getTime()}})},eeVq:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},elZq:function(t,e,n){"use strict";var r=n("dyZX"),o=n("hswa"),i=n("nh4g"),a=n("K0xU")("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},eyMr:function(t,e,n){var r=n("2OiF"),o=n("S/j/"),i=n("Ymqv"),a=n("ne8i");t.exports=function(t,e,n,u,c){r(e);var s=o(t),f=i(s),l=a(s.length),h=c?l-1:0,p=c?-1:1;if(n<2)for(;;){if(h in f){u=f[h],h+=p;break}if(h+=p,c?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;c?h>=0:l>h;h+=p)h in f&&(u=e(u,f[h],h,s));return u}},"f3/d":function(t,e,n){var r=n("hswa").f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n("nh4g")&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},fN96:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isInteger:n("nBIS")})},fyDq:function(t,e,n){var r=n("hswa").f,o=n("aagx"),i=n("K0xU")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},fyVe:function(t,e,n){var r=n("XKFU"),o=n("1sa7"),i=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},g3g5:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},g4EE:function(t,e,n){"use strict";var r=n("y3w9"),o=n("apmT");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return o(r(this),"number"!=t)}},g6HL:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},"h/M4":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},h7Nl:function(t,e,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n("KroJ")(r,"toString",function(){var t=i.call(this);return t==t?o.call(this):"Invalid Date"})},hEkN:function(t,e,n){"use strict";n("OGtf")("anchor",function(t){return function(e){return t(this,"a","name",e)}})},hHhE:function(t,e,n){var r=n("XKFU");r(r.S,"Object",{create:n("Kuth")})},hLT2:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},"hN/g":function(t,e,n){"use strict";n.r(e),n("dQfE"),n("nx1v"),n("4A4+"),n("qKs0"),n("CuTL"),n("Lmuc"),n("99sg"),n("ifmr"),n("oka+"),n("rfyP"),n("VXxg"),n("V5/Y"),n("vqGA"),n("hYbK"),n("a0L2"),n("0TWp")},hPIQ:function(t,e){t.exports={}},hYbK:function(t,e,n){n("Btvt"),n("yt8O"),n("EK0E"),t.exports=n("g3g5").WeakMap},hhXQ:function(t,e,n){var r=n("XKFU"),o=n("UExd")(!1);r(r.S,"Object",{values:function(t){return o(t)}})},hswa:function(t,e,n){var r=n("y3w9"),o=n("xpql"),i=n("apmT"),a=Object.defineProperty;e.f=n("nh4g")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(u){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},i5dc:function(t,e,n){var r=n("0/R4"),o=n("y3w9"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n("m0Pp")(Function.call,n("EemH").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},ifmr:function(t,e,n){n("tyy+"),t.exports=n("g3g5").parseFloat},ioFf:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("nh4g"),a=n("XKFU"),u=n("KroJ"),c=n("Z6vF").KEY,s=n("eeVq"),f=n("VTer"),l=n("fyDq"),h=n("ylqs"),p=n("K0xU"),v=n("N8g3"),d=n("OnI7"),g=n("1MBn"),y=n("EWmC"),m=n("y3w9"),b=n("0/R4"),_=n("aCFj"),k=n("apmT"),S=n("RjD/"),x=n("Kuth"),w=n("e7yV"),T=n("EemH"),E=n("hswa"),F=n("DVgA"),O=T.f,P=E.f,j=w.f,M=r.Symbol,D=r.JSON,I=D&&D.stringify,A=p("_hidden"),U=p("toPrimitive"),X={}.propertyIsEnumerable,Z=f("symbol-registry"),K=f("symbols"),C=f("op-symbols"),L=Object.prototype,R="function"==typeof M,z=r.QObject,N=!z||!z.prototype||!z.prototype.findChild,q=i&&s(function(){return 7!=x(P({},"a",{get:function(){return P(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=O(L,e);r&&delete L[e],P(t,e,n),r&&t!==L&&P(L,e,r)}:P,V=function(t){var e=K[t]=x(M.prototype);return e._k=t,e},G=R&&"symbol"==typeof M.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof M},H=function(t,e,n){return t===L&&H(C,e,n),m(t),e=k(e,!0),m(n),o(K,e)?(n.enumerable?(o(t,A)&&t[A][e]&&(t[A][e]=!1),n=x(n,{enumerable:S(0,!1)})):(o(t,A)||P(t,A,S(1,{})),t[A][e]=!0),q(t,e,n)):P(t,e,n)},W=function(t,e){m(t);for(var n,r=g(e=_(e)),o=0,i=r.length;i>o;)H(t,n=r[o++],e[n]);return t},Y=function(t){var e=X.call(this,t=k(t,!0));return!(this===L&&o(K,t)&&!o(C,t))&&(!(e||!o(this,t)||!o(K,t)||o(this,A)&&this[A][t])||e)},B=function(t,e){if(t=_(t),e=k(e,!0),t!==L||!o(K,e)||o(C,e)){var n=O(t,e);return!n||!o(K,e)||o(t,A)&&t[A][e]||(n.enumerable=!0),n}},J=function(t){for(var e,n=j(_(t)),r=[],i=0;n.length>i;)o(K,e=n[i++])||e==A||e==c||r.push(e);return r},Q=function(t){for(var e,n=t===L,r=j(n?C:_(t)),i=[],a=0;r.length>a;)!o(K,e=r[a++])||n&&!o(L,e)||i.push(K[e]);return i};R||(u((M=function(){if(this instanceof M)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),e=function(n){this===L&&e.call(C,n),o(this,A)&&o(this[A],t)&&(this[A][t]=!1),q(this,t,S(1,n))};return i&&N&&q(L,t,{configurable:!0,set:e}),V(t)}).prototype,"toString",function(){return this._k}),T.f=B,E.f=H,n("kJMx").f=w.f=J,n("UqcF").f=Y,n("JiEa").f=Q,i&&!n("LQAc")&&u(L,"propertyIsEnumerable",Y,!0),v.f=function(t){return V(p(t))}),a(a.G+a.W+a.F*!R,{Symbol:M});for(var $="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;$.length>tt;)p($[tt++]);for(var et=F(p.store),nt=0;et.length>nt;)d(et[nt++]);a(a.S+a.F*!R,"Symbol",{for:function(t){return o(Z,t+="")?Z[t]:Z[t]=M(t)},keyFor:function(t){if(!G(t))throw TypeError(t+" is not a symbol!");for(var e in Z)if(Z[e]===t)return e},useSetter:function(){N=!0},useSimple:function(){N=!1}}),a(a.S+a.F*!R,"Object",{create:function(t,e){return void 0===e?x(t):W(x(t),e)},defineProperty:H,defineProperties:W,getOwnPropertyDescriptor:B,getOwnPropertyNames:J,getOwnPropertySymbols:Q}),D&&a(a.S+a.F*(!R||s(function(){var t=M();return"[null]"!=I([t])||"{}"!=I({a:t})||"{}"!=I(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!G(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!G(e))return e}),r[1]=e,I.apply(D,r)}}),M.prototype[U]||n("Mukb")(M.prototype,U,M.prototype.valueOf),l(M,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},jm62:function(t,e,n){var r=n("XKFU"),o=n("mQtv"),i=n("aCFj"),a=n("EemH"),u=n("8a7r");r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,r=i(t),c=a.f,s=o(r),f={},l=0;s.length>l;)void 0!==(n=c(r,e=s[l++]))&&u(f,e,n);return f}})},jqX0:function(t,e,n){var r=n("XKFU"),o=n("jtBr");r(r.P+r.F*(Date.prototype.toISOString!==o),"Date",{toISOString:o})},jtBr:function(t,e,n){"use strict";var r=n("eeVq"),o=Date.prototype.getTime,i=Date.prototype.toISOString,a=function(t){return t>9?t:"0"+t};t.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!r(function(){i.call(new Date(NaN))})?function(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}:i},kJMx:function(t,e,n){var r=n("zhAb"),o=n("4R4u").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},kcoS:function(t,e,n){var r=n("lvtm"),o=Math.pow,i=o(2,-52),a=o(2,-23),u=o(2,127)*(2-a),c=o(2,-126);t.exports=Math.fround||function(t){var e,n,o=Math.abs(t),s=r(t);return o<c?s*(o/c/a+1/i-1/i)*c*a:(n=(e=(1+a/i)*o)-(e-o))>u||n!=n?s*(1/0):s*n}},knhD:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},l0Rn:function(t,e,n){"use strict";var r=n("RYi7"),o=n("vhPU");t.exports=function(t){var e=String(o(this)),n="",i=r(t);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},lvtm:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},m0Pp:function(t,e,n){var r=n("2OiF");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},mGWK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("aCFj"),i=n("RYi7"),a=n("ne8i"),u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0;r(r.P+r.F*(c||!n("LyE8")(u)),"Array",{lastIndexOf:function(t){if(c)return u.apply(this,arguments)||0;var e=o(this),n=a(e.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,i(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}})},mQtv:function(t,e,n){var r=n("kJMx"),o=n("JiEa"),i=n("y3w9"),a=n("dyZX").Reflect;t.exports=a&&a.ownKeys||function(t){var e=r.f(i(t)),n=o.f;return n?e.concat(n(t)):e}},mYba:function(t,e,n){var r=n("aCFj"),o=n("EemH").f;n("Xtr8")("getOwnPropertyDescriptor",function(){return function(t,e){return o(r(t),e)}})},mura:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("preventExtensions",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},nBIS:function(t,e,n){var r=n("0/R4"),o=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&o(t)===t}},nGyu:function(t,e,n){var r=n("K0xU")("unscopables"),o=Array.prototype;null==o[r]&&n("Mukb")(o,r,{}),t.exports=function(t){o[r][t]=!0}},nIY7:function(t,e,n){"use strict";n("OGtf")("big",function(t){return function(){return t(this,"big","","")}})},ne8i:function(t,e,n){var r=n("RYi7"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},nh4g:function(t,e,n){t.exports=!n("eeVq")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},nsiH:function(t,e,n){"use strict";n("OGtf")("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},nx1v:function(t,e,n){n("eM6i"),n("AphP"),n("jqX0"),n("h7Nl"),n("yM4b"),t.exports=Date},nzyx:function(t,e,n){var r=n("XKFU"),o=n("LVwc");r(r.S+r.F*(o!=Math.expm1),"Math",{expm1:o})},oDIu:function(t,e,n){"use strict";var r=n("XKFU"),o=n("AvRE")(!1);r(r.P,"String",{codePointAt:function(t){return o(this,t)}})},"oka+":function(t,e,n){n("GNAe"),t.exports=n("g3g5").parseInt},pIFo:function(t,e,n){"use strict";var r=n("y3w9"),o=n("S/j/"),i=n("ne8i"),a=n("RYi7"),u=n("A5AN"),c=n("Xxuz"),s=Math.max,f=Math.min,l=Math.floor,h=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;n("IU+Z")("replace",2,function(t,e,n,v){return[function(r,o){var i=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=v(n,t,this,e);if(o.done)return o.value;var l=r(t),h=String(this),p="function"==typeof e;p||(e=String(e));var g=l.global;if(g){var y=l.unicode;l.lastIndex=0}for(var m=[];;){var b=c(l,h);if(null===b)break;if(m.push(b),!g)break;""===String(b[0])&&(l.lastIndex=u(h,i(l.lastIndex),y))}for(var _,k="",S=0,x=0;x<m.length;x++){b=m[x];for(var w=String(b[0]),T=s(f(a(b.index),h.length),0),E=[],F=1;F<b.length;F++)E.push(void 0===(_=b[F])?_:String(_));var O=b.groups;if(p){var P=[w].concat(E,T,h);void 0!==O&&P.push(O);var j=String(e.apply(void 0,P))}else j=d(w,h,T,E,O,e);T>=S&&(k+=h.slice(S,T)+j,S=T+w.length)}return k+h.slice(S)}];function d(t,e,r,i,a,u){var c=r+t.length,s=i.length,f=p;return void 0!==a&&(a=o(a),f=h),n.call(u,f,function(n,o){var u;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":u=a[o.slice(1,-1)];break;default:var f=+o;if(0===f)return n;if(f>s){var h=l(f/10);return 0===h?n:h<=s?void 0===i[h-1]?o.charAt(1):i[h-1]+o.charAt(1):n}u=i[f-1]}return void 0===u?"":u})}})},"pp/T":function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},qKs0:function(t,e,n){n("Btvt"),n("XfO3"),n("rGqo"),n("9AAn"),t.exports=n("g3g5").Map},qncB:function(t,e,n){var r=n("XKFU"),o=n("vhPU"),i=n("eeVq"),a=n("/e88"),u="["+a+"]",c=RegExp("^"+u+u+"*"),s=RegExp(u+u+"*$"),f=function(t,e,n){var o={},u=i(function(){return!!a[t]()||"\u200b\x85"!="\u200b\x85"[t]()}),c=o[t]=u?e(l):a[t];n&&(o[n]=c),r(r.P+r.F*u,"String",o)},l=f.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(s,"")),t};t.exports=f},quPj:function(t,e,n){var r=n("0/R4"),o=n("LZWt"),i=n("K0xU")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},rGqo:function(t,e,n){for(var r=n("yt8O"),o=n("DVgA"),i=n("KroJ"),a=n("dyZX"),u=n("Mukb"),c=n("hPIQ"),s=n("K0xU"),f=s("iterator"),l=s("toStringTag"),h=c.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(p),d=0;d<v.length;d++){var g,y=v[d],m=p[y],b=a[y],_=b&&b.prototype;if(_&&(_[f]||u(_,f,h),_[l]||u(_,l,y),c[y]=h,m))for(g in r)_[g]||i(_,g,r[g],!0)}},rfyP:function(t,e,n){n("Oyvg"),n("sMXx"),n("a1Th"),n("OEbY"),n("SRfc"),n("pIFo"),n("OG14"),n("KKXr"),t.exports=n("g3g5").RegExp},rvZc:function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".endsWith;r(r.P+r.F*n("UUeW")("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),u=void 0===n?r:Math.min(o(n),r),c=String(t);return a?a.call(e,c,u):e.slice(u-c.length,u)===c}})},s5qY:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},sMXx:function(t,e,n){"use strict";var r=n("Ugos");n("XKFU")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},sbF8:function(t,e,n){var r=n("XKFU"),o=n("nBIS"),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return o(t)&&i(t)<=9007199254740991}})},tUrg:function(t,e,n){"use strict";n("OGtf")("link",function(t){return function(e){return t(this,"a","href",e)}})},"tyy+":function(t,e,n){var r=n("XKFU"),o=n("11IZ");r(r.G+r.F*(parseFloat!=o),{parseFloat:o})},uaHG:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT"),a=n("OP3Y"),u=n("EemH").f;n("nh4g")&&r(r.P+n("xbSm"),"Object",{__lookupGetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=u(n,r))return e.get}while(n=a(n))}})},upKx:function(t,e,n){"use strict";var r=n("S/j/"),o=n("d/Gc"),i=n("ne8i");t.exports=[].copyWithin||function(t,e){var n=r(this),a=i(n.length),u=o(t,a),c=o(e,a),s=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===s?a:o(s,a))-c,a-u),l=1;for(c<u&&u<c+f&&(l=-1,c+=f-1,u+=f-1);f-- >0;)c in n?n[u]=n[c]:delete n[u],u+=l,c+=l;return n}},vhPU:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},vqGA:function(t,e,n){n("ioFf"),n("Btvt"),t.exports=n("g3g5").Symbol},vvmO:function(t,e,n){var r=n("LZWt");t.exports=function(t,e){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(e);return+t}},w2a5:function(t,e,n){var r=n("aCFj"),o=n("ne8i"),i=n("d/Gc");t.exports=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},wmvG:function(t,e,n){"use strict";var r=n("hswa").f,o=n("Kuth"),i=n("3Lyj"),a=n("m0Pp"),u=n("9gX7"),c=n("SlkY"),s=n("Afnz"),f=n("1TsA"),l=n("elZq"),h=n("nh4g"),p=n("Z6vF").fastKey,v=n("s5qY"),d=h?"_s":"size",g=function(t,e){var n,r=p(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var f=t(function(t,r){u(t,f,e,"_i"),t._t=e,t._i=o(null),t._f=void 0,t._l=void 0,t[d]=0,null!=r&&c(r,n,t[s],t)});return i(f.prototype,{clear:function(){for(var t=v(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[d]=0},delete:function(t){var n=v(this,e),r=g(n,t);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[d]--}return!!r},forEach:function(t){v(this,e);for(var n,r=a(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(v(this,e),t)}}),h&&r(f.prototype,"size",{get:function(){return v(this,e)[d]}}),f},def:function(t,e,n){var r,o,i=g(t,e);return i?i.v=n:(t._l=i={i:o=p(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[d]++,"F"!==o&&(t._i[o]=i)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,function(t,n){this._t=v(t,e),this._k=n,this._l=void 0},function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?f(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,f(1))},n?"entries":"values",!n,!0),l(e)}}},x8Yj:function(t,e,n){var r=n("XKFU"),o=n("LVwc"),i=Math.exp;r(r.S,"Math",{tanh:function(t){var e=o(t=+t),n=o(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},x8ZO:function(t,e,n){var r=n("XKFU"),o=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,i=0,a=0,u=arguments.length,c=0;a<u;)c<(n=o(arguments[a++]))?(i=i*(r=c/n)*r+1,c=n):i+=n>0?(r=n/c)*r:n;return c===1/0?1/0:c*Math.sqrt(i)}})},xbSm:function(t,e,n){"use strict";t.exports=n("LQAc")||!n("eeVq")(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete n("dyZX")[t]})},xfY5:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("LZWt"),a=n("Xbzi"),u=n("apmT"),c=n("eeVq"),s=n("kJMx").f,f=n("EemH").f,l=n("hswa").f,h=n("qncB").trim,p=r.Number,v=p,d=p.prototype,g="Number"==i(n("Kuth")(d)),y="trim"in String.prototype,m=function(t){var e=u(t,!1);if("string"==typeof e&&e.length>2){var n,r,o,i=(e=y?e.trim():h(e,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var a,c=e.slice(2),s=0,f=c.length;s<f;s++)if((a=c.charCodeAt(s))<48||a>o)return NaN;return parseInt(c,r)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(g?c(function(){d.valueOf.call(n)}):"Number"!=i(n))?a(new v(m(e)),n,p):m(e)};for(var b,_=n("nh4g")?s(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;_.length>k;k++)o(v,b=_[k])&&!o(p,b)&&l(p,b,f(v,b));p.prototype=d,d.constructor=p,n("KroJ")(r,"Number",p)}},xpql:function(t,e,n){t.exports=!n("nh4g")&&!n("eeVq")(function(){return 7!=Object.defineProperty(n("Iw71")("div"),"a",{get:function(){return 7}}).a})},y3w9:function(t,e,n){var r=n("0/R4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},yM4b:function(t,e,n){var r=n("K0xU")("toPrimitive"),o=Date.prototype;r in o||n("Mukb")(o,r,n("g4EE"))},ylqs:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},yt8O:function(t,e,n){"use strict";var r=n("nGyu"),o=n("1TsA"),i=n("hPIQ"),a=n("aCFj");t.exports=n("Afnz")(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},z2o2:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("seal",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},zRwo:function(t,e,n){var r=n("6FMO");t.exports=function(t,e){return new(r(t))(e)}},zhAb:function(t,e,n){var r=n("aagx"),o=n("aCFj"),i=n("w2a5")(!1),a=n("YTvA")("IE_PROTO");t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)n!=a&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}}},[[1,1]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/prometheus_logo.074db273ef932a67d91b.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/prometheus_logo.074db273ef932a67d91b.svg
new file mode 100644 (file)
index 0000000..5c51f66
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="115.333px"
+   height="114px"
+   viewBox="0 0 115.333 114"
+   enable-background="new 0 0 115.333 114"
+   xml:space="preserve"
+   sodipodi:docname="prometheus_logo_orange.svg"
+   inkscape:version="0.92.1 r15371"><metadata
+     id="metadata4495"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs4493" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1484"
+     inkscape:window-height="886"
+     id="namedview4491"
+     showgrid="false"
+     inkscape:zoom="5.2784901"
+     inkscape:cx="60.603667"
+     inkscape:cy="60.329656"
+     inkscape:window-x="54"
+     inkscape:window-y="7"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><g
+     id="Layer_2" /><path
+     style="fill:#e6522c;fill-opacity:1"
+     inkscape:connector-curvature="0"
+     id="path4486"
+     d="M 56.667,0.667 C 25.372,0.667 0,26.036 0,57.332 c 0,31.295 25.372,56.666 56.667,56.666 31.295,0 56.666,-25.371 56.666,-56.666 0,-31.296 -25.372,-56.665 -56.666,-56.665 z m 0,106.055 c -8.904,0 -16.123,-5.948 -16.123,-13.283 H 72.79 c 0,7.334 -7.219,13.283 -16.123,13.283 z M 83.297,89.04 H 30.034 V 79.382 H 83.298 V 89.04 Z M 83.106,74.411 H 30.186 C 30.01,74.208 29.83,74.008 29.66,73.802 24.208,67.182 22.924,63.726 21.677,60.204 c -0.021,-0.116 6.611,1.355 11.314,2.413 0,0 2.42,0.56 5.958,1.205 -3.397,-3.982 -5.414,-9.044 -5.414,-14.218 0,-11.359 8.712,-21.285 5.569,-29.308 3.059,0.249 6.331,6.456 6.552,16.161 3.252,-4.494 4.613,-12.701 4.613,-17.733 0,-5.21 3.433,-11.262 6.867,-11.469 -3.061,5.045 0.793,9.37 4.219,20.099 1.285,4.03 1.121,10.812 2.113,15.113 C 63.797,33.534 65.333,20.5 71,16 c -2.5,5.667 0.37,12.758 2.333,16.167 3.167,5.5 5.087,9.667 5.087,17.548 0,5.284 -1.951,10.259 -5.242,14.148 3.742,-0.702 6.326,-1.335 6.326,-1.335 l 12.152,-2.371 c 10e-4,-10e-4 -1.765,7.261 -8.55,14.254 z" /></svg>
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.e449ada3d1974ef4aa64.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/runtime.e449ada3d1974ef4aa64.js
new file mode 100644 (file)
index 0000000..b0ca328
--- /dev/null
@@ -0,0 +1 @@
+!function(e){function r(r){for(var n,c,i=r[0],a=r[1],f=r[2],p=0,s=[];p<i.length;p++)o[c=i[p]]&&s.push(o[c][0]),o[c]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(l&&l(r);s.length;)s.shift()();return u.push.apply(u,f||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++)0!==o[t[i]]&&(n=!1);n&&(u.splice(r--,1),e=c(c.s=t[0]))}return e}var n={},o={1:0},u=[];function c(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise(function(r,n){t=o[e]=[r,n]});r.push(t[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.src=function(e){return c.p+""+({0:"common"}[e]||e)+"."+{0:"8a53d98b04768bd15706",2:"03f9acb8077098945447",6:"3d63c004c315603efec1",7:"05e89b87dac0b3fdcc5c",8:"4a6a002d073ab0275cb2",9:"383a20140e10eb51367c"}[e]+".js"}(e),u=function(r){i.onerror=i.onload=null,clearTimeout(a);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src,c=new Error("Loading chunk "+e+" failed.\n("+n+": "+u+")");c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var a=setTimeout(function(){u({type:"timeout",target:i})},12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(r)},c.m=e,c.c=n,c.d=function(e,r,t){c.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,r){if(1&r&&(e=c(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(c.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)c.d(t,n,(function(r){return e[r]}).bind(null,n));return t},c.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(r,"a",r),r},c.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},c.p="",c.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var f=0;f<i.length;f++)r(i[f]);var l=a;t()}([]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/scripts.fc88ef4a23399c760d0b.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/scripts.fc88ef4a23399c760d0b.js
new file mode 100644 (file)
index 0000000..1aa39bb
--- /dev/null
@@ -0,0 +1 @@
+!function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}(function(){return function t(e,n,i){function a(o,s){if(!n[o]){if(!e[o]){var l="function"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[o]={exports:{}};e[o][0].call(d.exports,function(t){return a(e[o][1][t]||t)},d,d.exports,t,e,n,i)}return n[o].exports}for(var r="function"==typeof require&&require,o=0;o<i.length;o++)a(i[o]);return a}({1:[function(t,e,n){var i=t(5);function a(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3})$/i);if(a){a=a[1];for(var r=0;r<e.length;r++)e[r]=parseInt(a[r]+a[r],16)}else if(a=t.match(/^#([a-fA-F0-9]{6})$/i))for(a=a[1],r=0;r<e.length;r++)e[r]=parseInt(a.slice(2*r,2*r+2),16);else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(r=0;r<e.length;r++)e[r]=parseInt(a[r+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(r=0;r<e.length;r++)e[r]=Math.round(2.55*parseFloat(a[r+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=i[a[1]]))return}for(r=0;r<e.length;r++)e[r]=d(e[r],0,255);return n=n||0==n?d(n,0,1):1,e[3]=n,e}}function r(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[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function o(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[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(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 u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function d(t,e,n){return Math.min(Math.max(e,t),n)}function h(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}e.exports={getRgba:a,getHsla:r,getRgb:function(t){var e=a(t);return e&&e.slice(0,3)},getHsl:function(t){var e=r(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=a(t);return e?e[3]:(e=r(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+h(t[0])+h(t[1])+h(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:l,hslString:function(t,e){return e<1||t[3]&&t[3]<1?u(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:u,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 c[t.slice(0,3)]}};var c={};for(var f in i)c[i[f]]=f},{5:5}],2:[function(t,e,n){var i=t(4),a=t(1),r=function(t){return t instanceof r?t:this instanceof r?(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=a.getRgba(t))?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.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 r(t);var e};r.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 a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.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 i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.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,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new r,i=this.values,a=n.values;for(var o in i)i.hasOwnProperty(o)&&("[object Array]"===(e={}.toString.call(t=i[o]))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return n}},r.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},r.prototype.setValues=function(t,e){var n,a,r=this.values,o=this.spaces,s=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)r[t]=e.slice(0,t.length),l=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)];l=e.a}else if(void 0!==e[o[t][0]]){var u=o[t];for(n=0;n<t.length;n++)r[t][n]=e[u[n]];l=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===l?r.alpha:l)),"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 d in o)d!==t&&(r[d]=i[t][d](r[t]));return!0},r.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)},r.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=r),e.exports=r},{1:1,4:4}],3:[function(t,e,n){function i(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]}function a(t){var e,n,i=t[0],a=t[1],r=t[2],o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return n=0==s?0:l/s*1e3/10,s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/255*1e3/10]}function o(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],1/255*Math.min(e,Math.min(n,a))*100,100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function s(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=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*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e=u(t),n=e[0],i=e[1],a=e[2];return i/=100,a/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function h(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,a[u]=255*(r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e);return a}function c(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}}function f(t){var e,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),i=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(i=1-i),a=s+i*((n=1-l)-s),e){default:case 6:case 0:r=n,g=a,b=s;break;case 1:r=a,g=n,b=s;break;case 2:r=s,g=n,b=a;break;case 3:r=s,g=a,b=n;break;case 4:r=a,g=s,b=n;break;case 5:r=n,g=s,b=a}return[255*r,255*g,255*b]}function m(t){var e=t[1]/100,n=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-i)+i)),255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i))]}function p(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.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,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]}function v(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=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-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]}function y(t){var e,n,i,a,r=t[0],o=t[1],s=t[2];return r<=8?a=(n=100*r/903.3)/100*7.787+16/116:(n=100*Math.pow((r+16)/116,3),a=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),n,i=i/108.883<=.008859?i=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]}function _(t){return p(y(t))}function k(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 w(t){return M[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:h,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 o(h(t))},hsl2cmyk:function(t){return s(h(t))},hsl2keyword:function(t){return l(h(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,i=t[1]/100,a=t[2]/100;return e=i*a,[t[0],100*(e=(e/=(n=(2-i)*a)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return o(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return l(c(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:m,cmyk2hsl:function(t){return i(m(t))},cmyk2hsv:function(t){return a(m(t))},cmyk2hwb:function(t){return o(m(t))},cmyk2keyword:function(t){return l(m(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:p,xyz2lab:v,xyz2lch:function(t){return x(v(t))},lab2xyz:y,lab2rgb:_,lab2lch:x,lch2lab:k,lch2xyz:function(t){return y(k(t))},lch2rgb:function(t){return _(k(t))}};var M={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]},S={};for(var D in M)S[JSON.stringify(M[D])]=D},{}],4:[function(t,e,n){var i=t(3),a=function(){return new u};for(var r in i){a[r+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(r);var o=/(\w+)2(\w+)/.exec(r),s=o[1],l=o[2];(a[s]=a[s]||{})[l]=a[r]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(r)}var u=function(){this.convs={}};u.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))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=a[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{3:3}],5:[function(t,e,n){"use strict";e.exports={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]}},{}],6:[function(t,e,n){var i;i=function(){"use strict";var n,i;function a(){return n.apply(null,arguments)}function r(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,i=[];for(n=0;n<t.length;++n)i.push(e(t[n],n));return i}function h(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t,e){for(var n in e)h(e,n)&&(t[n]=e[n]);return h(e,"toString")&&(t.toString=e.toString),h(e,"valueOf")&&(t.valueOf=e.valueOf),t}function f(t,e,n,i){return Te(t,e,n,i,!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 m(t){if(null==t._isValid){var e=g(t),n=i.call(e.parsedDateParts,function(t){return null!=t}),a=!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&&(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 p(t){var e=f(NaN);return null!=t?c(g(e),t):g(e).userInvalidated=!0,e}i=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i<n;i++)if(i in e&&t.call(this,e[i],i,e))return!0;return!1};var v=a.momentProperties=[];function y(t,e){var n,i,a;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=g(e)),s(e._locale)||(t._locale=e._locale),v.length>0)for(n=0;n<v.length;n++)s(a=e[i=v[n]])||(t[i]=a);return t}var b=!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===b&&(b=!0,a.updateOffset(this),b=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function k(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=k(e)),n}function M(t,e,n){var i,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&w(t[i])!==w(e[i]))&&o++;return o+r}function S(t){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function D(t,e){var n=!0;return c(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,t),n){for(var i,r=[],o=0;o<arguments.length;o++){if(i="","object"==typeof arguments[o]){for(var s in i+="\n["+o+"] ",arguments[0])i+=s+": "+arguments[0][s]+", ";i=i.slice(0,-2)}else i=arguments[o];r.push(i)}S(t+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)},e)}var C,P={};function T(t,e){null!=a.deprecationHandler&&a.deprecationHandler(t,e),P[t]||(S(e),P[t]=!0)}function O(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function I(t,e){var n,i=c({},t);for(n in e)h(e,n)&&(o(t[n])&&o(e[n])?(i[n]={},c(i[n],t[n]),c(i[n],e[n])):null!=e[n]?i[n]=e[n]:delete i[n]);for(n in t)h(t,n)&&!h(e,n)&&o(t[n])&&(i[n]=c({},i[n]));return i}function A(t){null!=t&&this.set(t)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,C=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)h(t,e)&&n.push(e);return n};var F={};function R(t,e){var n=t.toLowerCase();F[n]=F[n+"s"]=F[e]=t}function L(t){return"string"==typeof t?F[t]||F[t.toLowerCase()]:void 0}function Y(t){var e,n,i={};for(n in t)h(t,n)&&(e=L(n))&&(i[e]=t[n]);return i}var W={};function N(t,e){W[t]=e}function z(t,e,n){var i=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-i.length)).toString().substr(1)+i}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,H=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},E={};function j(t,e,n,i){var a=i;"string"==typeof i&&(a=function(){return this[i]()}),t&&(E[t]=a),e&&(E[e[0]]=function(){return z(a.apply(this,arguments),e[1],e[2])}),n&&(E[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=G(e,t.localeData()),B[e]=B[e]||function(t){var e,n,i,a=t.match(V);for(e=0,n=a.length;e<n;e++)a[e]=E[a[e]]?E[a[e]]:(i=a[e]).match(/\[[\s\S]/)?i.replace(/^\[|\]$/g,""):i.replace(/\\/g,"");return function(e){var i,r="";for(i=0;i<n;i++)r+=O(a[i])?a[i].call(e,t):a[i];return r}}(e),B[e](t)):t.localeData().invalidDate()}function G(t,e){var n=5;function i(t){return e.longDateFormat(t)||t}for(H.lastIndex=0;n>=0&&H.test(t);)t=t.replace(H,i),H.lastIndex=0,n-=1;return t}var q=/\d/,Z=/\d\d/,$=/\d{3}/,X=/\d{4}/,J=/[+-]?\d{6}/,K=/\d\d?/,Q=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,it=/[+-]?\d{1,6}/,at=/\d+/,rt=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,lt=/[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,ut={};function dt(t,e,n){ut[t]=O(e)?e:function(t,i){return t&&n?n:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ct(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,a){return e||n||i||a})))}function ct(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function gt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),l(e)&&(i=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)ft[t[n]]=i}function mt(t,e){gt(t,function(t,n,i,a){i._w=i._w||{},e(t,i._w,i,a)})}function pt(t,e,n){null!=e&&h(ft,t)&&ft[t](e,n._a,n,t)}var vt=0,yt=1,bt=2,xt=3,_t=4,kt=5,wt=6,Mt=7,St=8;function Dt(t){return Ct(t)?366:365}function Ct(t){return t%4==0&&t%100!=0||t%400==0}j("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),j(0,["YY",2],0,function(){return this.year()%100}),j(0,["YYYY",4],0,"year"),j(0,["YYYYY",5],0,"year"),j(0,["YYYYYY",6,!0],0,"year"),R("year","y"),N("year",1),dt("Y",rt),dt("YY",K,Z),dt("YYYY",nt,X),dt("YYYYY",it,J),dt("YYYYYY",it,J),gt(["YYYYY","YYYYYY"],vt),gt("YYYY",function(t,e){e[vt]=2===t.length?a.parseTwoDigitYear(t):w(t)}),gt("YY",function(t,e){e[vt]=a.parseTwoDigitYear(t)}),gt("Y",function(t,e){e[vt]=parseInt(t,10)}),a.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var Pt,Tt=Ot("FullYear",!0);function Ot(t,e){return function(n){return null!=n?(At(this,t,n),a.updateOffset(this,e),this):It(this,t)}}function It(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function At(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&Ct(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Ft(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Ft(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?Ct(t)?29:28:31-n%7%2}Pt=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},j("M",["MM",2],"Mo",function(){return this.month()+1}),j("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),j("MMMM",0,0,function(t){return this.localeData().months(this,t)}),R("month","M"),N("month",8),dt("M",K),dt("MM",K,Z),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[yt]=w(t)-1}),gt(["MMM","MMMM"],function(t,e,n,i){var a=n._locale.monthsParse(t,i,n._strict);null!=a?e[yt]=a:g(n).invalidMonth=t});var Rt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Lt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Yt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Wt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!l(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Ft(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Nt(t){return null!=t?(Wt(this,t),a.updateOffset(this,!0),this):It(this,"Month")}var zt=lt,Vt=lt;function Ht(){function t(t,e){return e.length-t.length}var e,n,i=[],a=[],r=[];for(e=0;e<12;e++)n=f([2e3,e]),i.push(this.monthsShort(n,"")),a.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(i.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)i[e]=ct(i[e]),a[e]=ct(a[e]);for(e=0;e<24;e++)r[e]=ct(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Bt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Et(t,e,n){var i=7+e-n;return-(7+Bt(t,0,i).getUTCDay()-e)%7+i-1}function jt(t,e,n,i,a){var r,o,s=1+7*(e-1)+(7+n-i)%7+Et(t,i,a);return s<=0?o=Dt(r=t-1)+s:s>Dt(t)?(r=t+1,o=s-Dt(t)):(r=t,o=s),{year:r,dayOfYear:o}}function Ut(t,e,n){var i,a,r=Et(t.year(),e,n),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?i=o+Gt(a=t.year()-1,e,n):o>Gt(t.year(),e,n)?(i=o-Gt(t.year(),e,n),a=t.year()+1):(a=t.year(),i=o),{week:i,year:a}}function Gt(t,e,n){var i=Et(t,e,n),a=Et(t+1,e,n);return(Dt(t)-i+a)/7}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),R("week","w"),R("isoWeek","W"),N("week",5),N("isoWeek",5),dt("w",K),dt("ww",K,Z),dt("W",K),dt("WW",K,Z),mt(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=w(t)}),j("d",0,"do","day"),j("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),j("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),j("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),R("day","d"),R("weekday","e"),R("isoWeekday","E"),N("day",11),N("weekday",11),N("isoWeekday",11),dt("d",K),dt("e",K),dt("E",K),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)}),mt(["dd","ddd","dddd"],function(t,e,n,i){var a=n._locale.weekdaysParse(t,i,n._strict);null!=a?e.d=a:g(n).invalidWeekday=t}),mt(["d","e","E"],function(t,e,n,i){e[i]=w(t)});var qt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$t="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=lt,Jt=lt,Kt=lt;function Qt(){function t(t,e){return e.length-t.length}var e,n,i,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),i=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(i),s.push(a),l.push(r),u.push(i),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ct(s[e]),l[e]=ct(l[e]),u[e]=ct(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function te(){return this.hours()%12||12}function ee(t,e){j(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ne(t,e){return e._meridiemParse}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,te),j("k",["kk",2],0,function(){return this.hours()||24}),j("hmm",0,0,function(){return""+te.apply(this)+z(this.minutes(),2)}),j("hmmss",0,0,function(){return""+te.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),j("Hmm",0,0,function(){return""+this.hours()+z(this.minutes(),2)}),j("Hmmss",0,0,function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),ee("a",!0),ee("A",!1),R("hour","h"),N("hour",13),dt("a",ne),dt("A",ne),dt("H",K),dt("h",K),dt("k",K),dt("HH",K,Z),dt("hh",K,Z),dt("kk",K,Z),dt("hmm",Q),dt("hmmss",tt),dt("Hmm",Q),dt("Hmmss",tt),gt(["H","HH"],xt),gt(["k","kk"],function(t,e,n){var i=w(t);e[xt]=24===i?0:i}),gt(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),gt(["h","hh"],function(t,e,n){e[xt]=w(t),g(n).bigHour=!0}),gt("hmm",function(t,e,n){var i=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i)),g(n).bigHour=!0}),gt("hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i,2)),e[kt]=w(t.substr(a)),g(n).bigHour=!0}),gt("Hmm",function(t,e,n){var i=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i))}),gt("Hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i,2)),e[kt]=w(t.substr(a))});var ie,ae=Ot("Hours",!0),re={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:Lt,monthsShort:Yt,week:{dow:0,doy:6},weekdays:qt,weekdaysMin:$t,weekdaysShort:Zt,meridiemParse:/[ap]\.?m?\.?/i},oe={},se={};function le(t){return t?t.toLowerCase().replace("_","-"):t}function ue(n){var i=null;if(!oe[n]&&void 0!==e&&e&&e.exports)try{i=ie._abbr,t("./locale/"+n),de(i)}catch(a){}return oe[n]}function de(t,e){var n;return t&&((n=s(e)?ce(t):he(t,e))?ie=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ie._abbr}function he(t,e){if(null!==e){var n,i=re;if(e.abbr=t,null!=oe[t])T("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."),i=oe[t]._config;else if(null!=e.parentLocale)if(null!=oe[e.parentLocale])i=oe[e.parentLocale]._config;else{if(null==(n=ue(e.parentLocale)))return se[e.parentLocale]||(se[e.parentLocale]=[]),se[e.parentLocale].push({name:t,config:e}),null;i=n._config}return oe[t]=new A(I(i,e)),se[t]&&se[t].forEach(function(t){he(t.name,t.config)}),de(t),oe[t]}return delete oe[t],null}function ce(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ie;if(!r(t)){if(e=ue(t))return e;t=[t]}return function(t){for(var e,n,i,a,r=0;r<t.length;){for(e=(a=le(t[r]).split("-")).length,n=(n=le(t[r+1]))?n.split("-"):null;e>0;){if(i=ue(a.slice(0,e).join("-")))return i;if(n&&n.length>=e&&M(a,n,!0)>=e-1)break;e--}r++}return ie}(t)}function fe(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[yt]<0||n[yt]>11?yt:n[bt]<1||n[bt]>Ft(n[vt],n[yt])?bt:n[xt]<0||n[xt]>24||24===n[xt]&&(0!==n[_t]||0!==n[kt]||0!==n[wt])?xt:n[_t]<0||n[_t]>59?_t:n[kt]<0||n[kt]>59?kt:n[wt]<0||n[wt]>999?wt:-1,g(t)._overflowDayOfYear&&(e<vt||e>bt)&&(e=bt),g(t)._overflowWeeks&&-1===e&&(e=Mt),g(t)._overflowWeekday&&-1===e&&(e=St),g(t).overflow=e),t}function ge(t,e,n){return null!=t?t:null!=e?e:n}function me(t){var e,n,i,r,o,s=[];if(!t._d){for(i=function(t){var e=new Date(a.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[bt]&&null==t._a[yt]&&function(t){var e,n,i,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,n=ge(e.GG,t._a[vt],Ut(Oe(),1,4).year),i=ge(e.W,1),((a=ge(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=Ut(Oe(),r,o);n=ge(e.gg,t._a[vt],u.year),i=ge(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}i<1||i>Gt(n,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=jt(n,i,a,r,o),t._a[vt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ge(t._a[vt],i[vt]),(t._dayOfYear>Dt(o)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Bt(o,0,t._dayOfYear),t._a[yt]=n.getUTCMonth(),t._a[bt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[xt]&&0===t._a[_t]&&0===t._a[kt]&&0===t._a[wt]&&(t._nextDay=!0,t._a[xt]=0),t._d=(t._useUTC?Bt:function(t,e,n,i,a,r,o){var s=new Date(t,e,n,i,a,r,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(g(t).weekdayMismatch=!0)}}var pe=/^\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)?)?$/,ve=/^\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)?)?$/,ye=/Z|[+-]\d\d(?::?\d\d)?/,be=[["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}/]],xe=[["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/]],_e=/^\/?Date\((\-?\d+)/i;function ke(t){var e,n,i,a,r,o,s=t._i,l=pe.exec(s)||ve.exec(s);if(l){for(g(t).iso=!0,e=0,n=be.length;e<n;e++)if(be[e][1].exec(l[1])){a=be[e][0],i=!1!==be[e][2];break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,n=xe.length;e<n;e++)if(xe[e][1].exec(l[3])){r=(l[2]||" ")+xe[e][0];break}if(null==r)return void(t._isValid=!1)}if(!i&&null!=r)return void(t._isValid=!1);if(l[4]){if(!ye.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=a+(r||"")+(o||""),Ce(t)}else t._isValid=!1}var we=/^(?:(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 Me(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var Se={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function De(t){var e,n,i,a,r,o,s=we.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(s){var l=(e=s[3],n=s[2],i=s[5],a=s[6],r=s[7],o=[Me(s[4]),Yt.indexOf(e),parseInt(n,10),parseInt(i,10),parseInt(a,10)],r&&o.push(parseInt(r,10)),o);if(!function(t,e,n){return!t||Zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(s[1],l,t))return;t._a=l,t._tzm=function(t,e,n){if(t)return Se[t];if(s[9])return 0;var i=parseInt(s[10],10),a=i%100;return(i-a)/100*60+a}(s[8]),t._d=Bt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function Ce(t){if(t._f!==a.ISO_8601)if(t._f!==a.RFC_2822){t._a=[],g(t).empty=!0;var e,n,i,r,o,s=""+t._i,l=s.length,u=0;for(i=G(t._f,t._locale).match(V)||[],e=0;e<i.length;e++)(n=(s.match(ht(r=i[e],t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&g(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),E[r]?(n?g(t).empty=!1:g(t).unusedTokens.push(r),pt(r,n,t)):t._strict&&!n&&g(t).unusedTokens.push(r);g(t).charsLeftOver=l-u,s.length>0&&g(t).unusedInput.push(s),t._a[xt]<=12&&!0===g(t).bigHour&&t._a[xt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[xt]=(d=t._locale,h=t._a[xt],null==(c=t._meridiem)?h:null!=d.meridiemHour?d.meridiemHour(h,c):null!=d.isPM?((f=d.isPM(c))&&h<12&&(h+=12),f||12!==h||(h=0),h):h),me(t),fe(t)}else De(t);else ke(t);var d,h,c,f}function Pe(t){var e=t._i,n=t._f;return t._locale=t._locale||ce(t._l),null===e||void 0===n&&""===e?p({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(fe(e)):(u(e)?t._d=e:r(n)?function(t){var e,n,i,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)r=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],Ce(e),m(e)&&(r+=g(e).charsLeftOver,r+=10*g(e).unusedTokens.length,g(e).score=r,(null==i||r<i)&&(i=r,n=e));c(t,n||e)}(t):n?Ce(t):function(t){var e=t._i;s(e)?t._d=new Date(a.now()):u(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=_e.exec(t._i);null===e?(ke(t),!1===t._isValid&&(delete t._isValid,De(t),!1===t._isValid&&(delete t._isValid,a.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):r(e)?(t._a=d(e.slice(0),function(t){return parseInt(t,10)}),me(t)):o(e)?function(t){if(!t._d){var e=Y(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)}),me(t)}}(t):l(e)?t._d=new Date(e):a.createFromInputFallback(t)}(t),m(t)||(t._d=null),t))}function Te(t,e,n,i,a){var s,l={};return!0!==n&&!1!==n||(i=n,n=void 0),(o(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)||r(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=a,l._l=n,l._i=t,l._f=e,l._strict=i,(s=new x(fe(Pe(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Oe(t,e,n,i){return Te(t,e,n,i,!1)}a.createFromInputFallback=D("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":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Ie=D("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:p()}),Ae=D("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:p()});function Fe(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Oe();for(n=e[0],i=1;i<e.length;++i)e[i].isValid()&&!e[i][t](n)||(n=e[i]);return n}var Re=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Le(t){var e=Y(t),n=e.year||0,i=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===Pt.call(Re,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,i=0;i<Re.length;++i)if(t[Re[i]]){if(n)return!1;parseFloat(t[Re[i]])!==w(t[Re[i]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*i+12*n,this._data={},this._locale=ce(),this._bubble()}function Ye(t){return t instanceof Le}function We(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ne(t,e){j(t,0,0,function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+z(~~(t/60),2)+e+z(~~t%60,2)})}Ne("Z",":"),Ne("ZZ",""),dt("Z",st),dt("ZZ",st),gt(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Ve(st,t)});var ze=/([\+\-]|\d\d)/gi;function Ve(t,e){var n=(e||"").match(t);if(null===n)return null;var i=((n[n.length-1]||[])+"").match(ze)||["-",0,0],a=60*i[1]+w(i[2]);return 0===a?0:"+"===i[0]?a:-a}function He(t,e){var n,i;return e._isUTC?(n=e.clone(),i=(_(t)||u(t)?t.valueOf():Oe(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),a.updateOffset(n,!1),n):Oe(t).local()}function Be(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ee(){return!!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ge(t,e){var n,i,a,r,o,s,u=t,d=null;return Ye(t)?u={ms:t._milliseconds,d:t._days,M:t._months}:l(t)?(u={},e?u[e]=t:u.milliseconds=t):(d=je.exec(t))?(n="-"===d[1]?-1:1,u={y:0,d:w(d[bt])*n,h:w(d[xt])*n,m:w(d[_t])*n,s:w(d[kt])*n,ms:w(We(1e3*d[wt]))*n}):(d=Ue.exec(t))?u={y:qe(d[2],n="-"===d[1]?-1:1),M:qe(d[3],n),w:qe(d[4],n),d:qe(d[5],n),h:qe(d[6],n),m:qe(d[7],n),s:qe(d[8],n)}:null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(r=Oe(u.from),o=Oe(u.to),a=r.isValid()&&o.isValid()?(o=He(o,r),r.isBefore(o)?s=Ze(r,o):((s=Ze(o,r)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(u={}).ms=a.milliseconds,u.M=a.months),i=new Le(u),Ye(t)&&h(t,"_locale")&&(i._locale=t._locale),i}function qe(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ze(t,e){var n={milliseconds:0,months:0};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 $e(t,e){return function(n,i){var a;return null===i||isNaN(+i)||(T(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."),a=n,n=i,i=a),Xe(this,Ge(n="string"==typeof n?+n:n,i),t),this}}function Xe(t,e,n,i){var r=e._milliseconds,o=We(e._days),s=We(e._months);t.isValid()&&(i=null==i||i,s&&Wt(t,It(t,"Month")+s*n),o&&At(t,"Date",It(t,"Date")+o*n),r&&t._d.setTime(t._d.valueOf()+r*n),i&&a.updateOffset(t,o||s))}Ge.fn=Le.prototype,Ge.invalid=function(){return Ge(NaN)};var Je=$e(1,"add"),Ke=$e(-1,"subtract");function Qe(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(n,"months");return-(n+(e-i<0?(e-i)/(i-t.clone().add(n-1,"months")):(e-i)/(t.clone().add(n+1,"months")-i)))||0}function tn(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ce(t))&&(this._locale=e),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var en=D("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 nn(){return this._locale}function an(t,e){j(0,[t,t.length],0,e)}function rn(t,e,n,i,a){var r;return null==t?Ut(this,i,a).year:(e>(r=Gt(t,i,a))&&(e=r),(function(t,e,n,i,a){var r=jt(t,e,n,i,a),o=Bt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}).call(this,t,e,n,i,a))}j(0,["gg",2],0,function(){return this.weekYear()%100}),j(0,["GG",2],0,function(){return this.isoWeekYear()%100}),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),R("weekYear","gg"),R("isoWeekYear","GG"),N("weekYear",1),N("isoWeekYear",1),dt("G",rt),dt("g",rt),dt("GG",K,Z),dt("gg",K,Z),dt("GGGG",nt,X),dt("gggg",nt,X),dt("GGGGG",it,J),dt("ggggg",it,J),mt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=w(t)}),mt(["gg","GG"],function(t,e,n,i){e[i]=a.parseTwoDigitYear(t)}),j("Q",0,"Qo","quarter"),R("quarter","Q"),N("quarter",7),dt("Q",q),gt("Q",function(t,e){e[yt]=3*(w(t)-1)}),j("D",["DD",2],"Do","date"),R("date","D"),N("date",9),dt("D",K),dt("DD",K,Z),dt("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),gt(["D","DD"],bt),gt("Do",function(t,e){e[bt]=w(t.match(K)[0])});var on=Ot("Date",!0);j("DDD",["DDDD",3],"DDDo","dayOfYear"),R("dayOfYear","DDD"),N("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],function(t,e,n){n._dayOfYear=w(t)}),j("m",["mm",2],0,"minute"),R("minute","m"),N("minute",14),dt("m",K),dt("mm",K,Z),gt(["m","mm"],_t);var sn=Ot("Minutes",!1);j("s",["ss",2],0,"second"),R("second","s"),N("second",15),dt("s",K),dt("ss",K,Z),gt(["s","ss"],kt);var ln,un=Ot("Seconds",!1);for(j("S",0,0,function(){return~~(this.millisecond()/100)}),j(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,function(){return 10*this.millisecond()}),j(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),j(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),j(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),j(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),j(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),R("millisecond","ms"),N("millisecond",16),dt("S",et,q),dt("SS",et,Z),dt("SSS",et,$),ln="SSSS";ln.length<=9;ln+="S")dt(ln,at);function dn(t,e){e[wt]=w(1e3*("0."+t))}for(ln="S";ln.length<=9;ln+="S")gt(ln,dn);var hn=Ot("Milliseconds",!1);j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var cn=x.prototype;function fn(t){return t}cn.add=Je,cn.calendar=function(t,e){var n=t||Oe(),i=He(n,this).startOf("day"),r=a.calendarFormat(this,i)||"sameElse",o=e&&(O(e[r])?e[r].call(this,n):e[r]);return this.format(o||this.localeData().calendar(r,this,Oe(n)))},cn.clone=function(){return new x(this)},cn.diff=function(t,e,n){var i,a,r;if(!this.isValid())return NaN;if(!(i=He(t,this)).isValid())return NaN;switch(a=6e4*(i.utcOffset()-this.utcOffset()),e=L(e)){case"year":r=Qe(this,i)/12;break;case"month":r=Qe(this,i);break;case"quarter":r=Qe(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-a)/864e5;break;case"week":r=(this-i-a)/6048e5;break;default:r=this-i}return n?r:k(r)},cn.endOf=function(t){return void 0===(t=L(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))},cn.format=function(t){t||(t=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},cn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ge({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.fromNow=function(t){return this.from(Oe(),t)},cn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ge({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.toNow=function(t){return this.to(Oe(),t)},cn.get=function(t){return O(this[t=L(t)])?this[t]():this},cn.invalidAt=function(){return g(this).overflow},cn.isAfter=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(s(e)?"millisecond":e))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},cn.isBefore=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(s(e)?"millisecond":e))?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},cn.isBetween=function(t,e,n,i){return("("===(i=i||"()")[0]?this.isAfter(t,n):!this.isBefore(t,n))&&(")"===i[1]?this.isBefore(e,n):!this.isAfter(e,n))},cn.isSame=function(t,e){var n,i=_(t)?t:Oe(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=L(e||"millisecond"))?this.valueOf()===i.valueOf():(n=i.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},cn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},cn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},cn.isValid=function(){return m(this)},cn.lang=en,cn.locale=tn,cn.localeData=nn,cn.max=Ae,cn.min=Ie,cn.parsingFlags=function(){return c({},g(this))},cn.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:W[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}(t=Y(t)),i=0;i<n.length;i++)this[n[i].unit](t[n[i].unit]);else if(O(this[t=L(t)]))return this[t](e);return this},cn.startOf=function(t){switch(t=L(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},cn.subtract=Ke,cn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},cn.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()}},cn.toDate=function(){return new Date(this.valueOf())},cn.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?U(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},cn.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+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},cn.toJSON=function(){return this.isValid()?this.toISOString():null},cn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},cn.unix=function(){return Math.floor(this.valueOf()/1e3)},cn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},cn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},cn.year=Tt,cn.isLeapYear=function(){return Ct(this.year())},cn.weekYear=function(t){return rn.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},cn.isoWeekYear=function(t){return rn.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},cn.quarter=cn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},cn.month=Nt,cn.daysInMonth=function(){return Ft(this.year(),this.month())},cn.week=cn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},cn.isoWeek=cn.isoWeeks=function(t){var e=Ut(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},cn.weeksInYear=function(){var t=this.localeData()._week;return Gt(this.year(),t.dow,t.doy)},cn.isoWeeksInYear=function(){return Gt(this.year(),1,4)},cn.date=on,cn.day=cn.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},cn.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")},cn.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},cn.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")},cn.hour=cn.hours=ae,cn.minute=cn.minutes=sn,cn.second=cn.seconds=un,cn.millisecond=cn.milliseconds=hn,cn.utcOffset=function(t,e,n){var i,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Ve(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Be(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==t&&(!e||this._changeInProgress?Xe(this,Ge(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Be(this)},cn.utc=function(t){return this.utcOffset(0,t)},cn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Be(this),"m")),this},cn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ve(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},cn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Oe(t).utcOffset():0,(this.utcOffset()-t)%60==0)},cn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},cn.isLocal=function(){return!!this.isValid()&&!this._isUTC},cn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},cn.isUtc=Ee,cn.isUTC=Ee,cn.zoneAbbr=function(){return this._isUTC?"UTC":""},cn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},cn.dates=D("dates accessor is deprecated. Use date instead.",on),cn.months=D("months accessor is deprecated. Use month instead",Nt),cn.years=D("years accessor is deprecated. Use year instead",Tt),cn.zone=D("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()}),cn.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Pe(t))._a){var e=t._isUTC?f(t._a):Oe(t._a);this._isDSTShifted=this.isValid()&&M(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var gn=A.prototype;function mn(t,e,n,i){var a=ce(),r=f().set(i,e);return a[n](r,t)}function pn(t,e,n){if(l(t)&&(e=t,t=void 0),t=t||"",null!=e)return mn(t,e,n,"month");var i,a=[];for(i=0;i<12;i++)a[i]=mn(t,i,n,"month");return a}function vn(t,e,n,i){"boolean"==typeof t?(l(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,l(e)&&(n=e,e=void 0),e=e||"");var a,r=ce(),o=t?r._week.dow:0;if(null!=n)return mn(e,(n+o)%7,i,"day");var s=[];for(a=0;a<7;a++)s[a]=mn(e,(a+o)%7,i,"day");return s}gn.calendar=function(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return O(i)?i.call(e,n):i},gn.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])},gn.invalidDate=function(){return this._invalidDate},gn.ordinal=function(t){return this._ordinal.replace("%d",t)},gn.preparse=fn,gn.postformat=fn,gn.relativeTime=function(t,e,n,i){var a=this._relativeTime[n];return O(a)?a(t,e,n,i):a.replace(/%d/i,t)},gn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return O(n)?n(e):n.replace(/%s/i,e)},gn.set=function(t){var e,n;for(n in t)O(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)},gn.months=function(t,e){return t?r(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Rt).test(e)?"format":"standalone"][t.month()]:r(this._months)?this._months:this._months.standalone},gn.monthsShort=function(t,e){return t?r(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Rt.test(e)?"format":"standalone"][t.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},gn.monthsParse=function(t,e,n){var i,a,r;if(this._monthsParseExact)return(function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=f([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(a=Pt.call(this._shortMonthsParse,o))?a:null:-1!==(a=Pt.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=Pt.call(this._shortMonthsParse,o))?a:-1!==(a=Pt.call(this._longMonthsParse,o))?a:null:-1!==(a=Pt.call(this._longMonthsParse,o))?a:-1!==(a=Pt.call(this._shortMonthsParse,o))?a:null}).call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=f([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),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}},gn.monthsRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},gn.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=zt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},gn.week=function(t){return Ut(t,this._week.dow,this._week.doy).week},gn.firstDayOfYear=function(){return this._week.doy},gn.firstDayOfWeek=function(){return this._week.dow},gn.weekdays=function(t,e){return t?r(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:r(this._weekdays)?this._weekdays:this._weekdays.standalone},gn.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},gn.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},gn.weekdaysParse=function(t,e,n){var i,a,r;if(this._weekdaysParseExact)return(function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=f([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null}).call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(a=f([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}},gn.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},gn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},gn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Kt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},gn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},gn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},de("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")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",de),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ce);var yn=Math.abs;function bn(t,e,n,i){var a=Ge(e,n);return t._milliseconds+=i*a._milliseconds,t._days+=i*a._days,t._months+=i*a._months,t._bubble()}function xn(t){return t<0?Math.floor(t):Math.ceil(t)}function _n(t){return 4800*t/146097}function kn(t){return 146097*t/4800}function wn(t){return function(){return this.as(t)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),Cn=wn("h"),Pn=wn("d"),Tn=wn("w"),On=wn("M"),In=wn("y");function An(t){return function(){return this.isValid()?this._data[t]:NaN}}var Fn=An("milliseconds"),Rn=An("seconds"),Ln=An("minutes"),Yn=An("hours"),Wn=An("days"),Nn=An("months"),zn=An("years"),Vn=Math.round,Hn={ss:44,s:45,m:45,h:22,d:26,M:11},Bn=Math.abs;function En(t){return(t>0)-(t<0)||+t}function jn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Bn(this._milliseconds)/1e3,i=Bn(this._days),a=Bn(this._months);t=k(n/60),e=k(t/60),n%=60,t%=60;var r=k(a/12),o=a%=12,s=i,l=e,u=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=En(this._months)!==En(h)?"-":"",g=En(this._days)!==En(h)?"-":"",m=En(this._milliseconds)!==En(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(o?f+o+"M":"")+(s?g+s+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var Un=Le.prototype;return Un.isValid=function(){return this._isValid},Un.abs=function(){var t=this._data;return this._milliseconds=yn(this._milliseconds),this._days=yn(this._days),this._months=yn(this._months),t.milliseconds=yn(t.milliseconds),t.seconds=yn(t.seconds),t.minutes=yn(t.minutes),t.hours=yn(t.hours),t.months=yn(t.months),t.years=yn(t.years),this},Un.add=function(t,e){return bn(this,t,e,1)},Un.subtract=function(t,e){return bn(this,t,e,-1)},Un.as=function(t){if(!this.isValid())return NaN;var e,n,i=this._milliseconds;if("month"===(t=L(t))||"year"===t)return n=this._months+_n(e=this._days+i/864e5),"month"===t?n:n/12;switch(e=this._days+Math.round(kn(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}},Un.asMilliseconds=Mn,Un.asSeconds=Sn,Un.asMinutes=Dn,Un.asHours=Cn,Un.asDays=Pn,Un.asWeeks=Tn,Un.asMonths=On,Un.asYears=In,Un.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Un._bubble=function(){var t,e,n,i,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*xn(kn(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=k(r/1e3),l.seconds=t%60,e=k(t/60),l.minutes=e%60,n=k(e/60),l.hours=n%24,o+=k(n/24),s+=a=k(_n(o)),o-=xn(kn(a)),i=k(s/12),s%=12,l.days=o,l.months=s,l.years=i,this},Un.clone=function(){return Ge(this)},Un.get=function(t){return t=L(t),this.isValid()?this[t+"s"]():NaN},Un.milliseconds=Fn,Un.seconds=Rn,Un.minutes=Ln,Un.hours=Yn,Un.days=Wn,Un.weeks=function(){return k(this.days()/7)},Un.months=Nn,Un.years=zn,Un.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var i=Ge(t).abs(),a=Vn(i.as("s")),r=Vn(i.as("m")),o=Vn(i.as("h")),s=Vn(i.as("d")),l=Vn(i.as("M")),u=Vn(i.as("y")),d=a<=Hn.ss&&["s",a]||a<Hn.s&&["ss",a]||r<=1&&["m"]||r<Hn.m&&["mm",r]||o<=1&&["h"]||o<Hn.h&&["hh",o]||s<=1&&["d"]||s<Hn.d&&["dd",s]||l<=1&&["M"]||l<Hn.M&&["MM",l]||u<=1&&["y"]||["yy",u];return d[2]=e,d[3]=+t>0,d[4]=n,(function(t,e,n,i,a){return a.relativeTime(e||1,!!n,t,i)}).apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Un.toISOString=jn,Un.toString=jn,Un.toJSON=jn,Un.locale=tn,Un.localeData=nn,Un.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",jn),Un.lang=en,j("X",0,0,"unix"),j("x",0,0,"valueOf"),dt("x",rt),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))}),a.version="2.22.2",n=Oe,a.fn=cn,a.min=function(){return Fe("isBefore",[].slice.call(arguments,0))},a.max=function(){return Fe("isAfter",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=f,a.unix=function(t){return Oe(1e3*t)},a.months=function(t,e){return pn(t,e,"months")},a.isDate=u,a.locale=de,a.invalid=p,a.duration=Ge,a.isMoment=_,a.weekdays=function(t,e,n){return vn(t,e,n,"weekdays")},a.parseZone=function(){return Oe.apply(null,arguments).parseZone()},a.localeData=ce,a.isDuration=Ye,a.monthsShort=function(t,e){return pn(t,e,"monthsShort")},a.weekdaysMin=function(t,e,n){return vn(t,e,n,"weekdaysMin")},a.defineLocale=he,a.updateLocale=function(t,e){if(null!=e){var n,i,a=re;null!=(i=ue(t))&&(a=i._config),(n=new A(e=I(a,e))).parentLocale=oe[t],oe[t]=n,de(t)}else null!=oe[t]&&(null!=oe[t].parentLocale?oe[t]=oe[t].parentLocale:null!=oe[t]&&delete oe[t]);return oe[t]},a.locales=function(){return C(oe)},a.weekdaysShort=function(t,e,n){return vn(t,e,n,"weekdaysShort")},a.normalizeUnits=L,a.relativeTimeRounding=function(t){return void 0===t?Vn:"function"==typeof t&&(Vn=t,!0)},a.relativeTimeThreshold=function(t,e){return void 0!==Hn[t]&&(void 0===e?Hn[t]:(Hn[t]=e,"s"===t&&(Hn.ss=e-1),!0))},a.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"},a.prototype=cn,a.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:"YYYY-[W]WW",MONTH:"YYYY-MM"},a},"object"==typeof n&&void 0!==e?e.exports=i():this.moment=i()},{}],7:[function(t,e,n){var i=t(30)();i.helpers=t(46),t(28)(i),i.Animation=t(22),i.animationService=t(23),i.defaults=t(26),i.Element=t(27),i.elements=t(41),i.Interaction=t(29),i.layouts=t(31),i.platform=t(49),i.plugins=t(32),i.Scale=t(33),i.scaleService=t(34),i.Ticks=t(35),i.Tooltip=t(36),t(24)(i),t(25)(i),t(56)(i),t(54)(i),t(55)(i),t(57)(i),t(58)(i),t(59)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=t(50);for(var r in a)a.hasOwnProperty(r)&&i.plugins.register(a[r]);i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.Chart=i),i.Legend=a.legend._element,i.Title=a.title._element,i.pluginService=i.plugins,i.PluginBase=i.Element.extend({}),i.canvasHelpers=i.helpers.canvas,i.layoutService=i.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,41:41,46:46,49:49,50:50,54:54,55:55,56:56,57:57,58:58,59:59,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e<n;++e)this.updateElement(i[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,o=i.getMeta(),s=i.getDataset(),l=t.custom||{},u=a.options.elements.rectangle;t._xScale=i.getScaleForId(o.xAxisID),t._yScale=i.getScaleForId(o.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:s.label,label:a.data.labels[e],borderSkipped:l.borderSkipped?l.borderSkipped:u.borderSkipped,backgroundColor:l.backgroundColor?l.backgroundColor:r.valueAtIndexOrDefault(s.backgroundColor,e,u.backgroundColor),borderColor:l.borderColor?l.borderColor:r.valueAtIndexOrDefault(s.borderColor,e,u.borderColor),borderWidth:l.borderWidth?l.borderWidth:r.valueAtIndexOrDefault(s.borderWidth,e,u.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,r=i.getValueScale(),o=r.getBasePixel(),s=r.isHorizontal(),l=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,l);a.horizontal=s,a.base=n?o:u.base,a.x=s?n?o:u.head:d.center,a.y=s?d.center:n?o:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},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())},_getStacks:function(t){var e,n,i=this.chart,a=this.getIndexScale().options.stacked,r=void 0===t?i.data.datasets.length:t+1,o=[];for(e=0;e<r;++e)(n=i.getDatasetMeta(e)).bar&&i.isDatasetVisible(e)&&(!1===a||!0===a&&-1===o.indexOf(n.stack)||void 0===a&&(void 0===n.stack||-1===o.indexOf(n.stack)))&&o.push(n.stack);return o},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),i=void 0!==e?n.indexOf(e):-1;return-1===i?n.length-1:i},getRuler:function(){var t,e,n=this.getIndexScale(),i=this.getStackCount(),a=this.index,o=n.isHorizontal(),s=o?n.left:n.top,l=s+(o?n.width:n.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(n.getPixelForValue(null,t,a));return{min:r.isNullOrUndef(n.options.barThickness)?function(t,e){var n,i,a,r,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,r=e.length;a<r;++a)o=Math.min(o,e[a]-e[a-1]);for(a=0,r=s.length;a<r;++a)i=t.getPixelForTick(a),o=a>0?Math.min(o,i-n):o,n=i;return o}(n,u):-1,pixels:u,start:s,end:l,stackCount:i,scale:n}},calculateBarValuePixels:function(t,e){var n,i,a,r,o,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),h=l.data.datasets,c=d.getRightValue(h[t].data[e]),f=d.options.stacked,g=u.stack,m=0;if(f||void 0===f&&void 0!==g)for(n=0;n<t;++n)(i=l.getDatasetMeta(n)).bar&&i.stack===g&&i.controller.getValueScaleId()===d.id&&l.isDatasetVisible(n)&&(a=d.getRightValue(h[n].data[e]),(c<0&&a<0||c>=0&&a>0)&&(m+=a));return r=d.getPixelForValue(m),{size:s=((o=d.getPixelForValue(m+c))-r)/2,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var i=n.scale.options,a="flex"===i.barThickness?function(t,e,n){var i=e.pixels,a=i[t],r=t>0?i[t-1]:null,o=t<i.length-1?i[t+1]:null,s=n.categoryPercentage;return null===r&&(r=a-(null===o?e.end-a:o-a)),null===o&&(o=a+a-r),{chunk:(o-r)/2*s/e.stackCount,ratio:n.barPercentage,start:a-(a-r)/2*s}}(e,n,i):function(t,e,n){var i,a,o=n.barThickness,s=e.stackCount,l=e.pixels[t];return r.isNullOrUndef(o)?(i=e.min*n.categoryPercentage,a=n.barPercentage):(i=o*s,a=1),{chunk:i/s,ratio:a,start:l-i/2}}(e,n,i),o=this.getStackIndex(t,this.getMeta().stack),s=a.start+a.chunk*o+a.chunk/2,l=Math.min(r.valueOrDefault(i.maxBarThickness,1/0),a.chunk*a.ratio);return{base:s-l/2,head:s+l/2,center:s,size:l}},draw:function(){var t=this.chart,e=this.getValueScale(),n=this.getMeta().data,i=this.getDataset(),a=n.length,o=0;for(r.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(i.data[o]))||n[o].draw();r.canvas.unclipArea(t.ctx)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{26:26,41:41,46:46}],16:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,n=e.getMeta();r.each(n.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),r=t.custom||{},o=i.getScaleForId(a.xAxisID),s=i.getScaleForId(a.yAxisID),l=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,h=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,d),c=n?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:n?0:l.radius,skip:r.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=r.valueOrDefault(n.hoverBackgroundColor,r.getHoverColor(n.backgroundColor)),e.borderColor=r.valueOrDefault(n.hoverBorderColor,r.getHoverColor(n.borderColor)),e.borderWidth=r.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,i,a,o=this.chart,s=o.data.datasets[this.index],l=t.custom||{},u=o.options.elements.point,d=r.options.resolve,h=s.data[e],c={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},g=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,i=g.length;n<i;++n)c[a=g[n]]=d([l[a],s[a],u[a]],f,e);return c.radius=d([l.radius,h?h.r:void 0,s.radius,u.radius],f,e),c}})}},{26:26,41:41,46:46}],17:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),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,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i],l=s&&s.custom||{},u=r.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,i,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,i,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,i,d.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.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],i=": "+e.datasets[t.datasetIndex].data[t.index];return r.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",r.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.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=this,n=e.chart,i=n.chartArea,a=n.options,o=a.elements.arc,s=i.right-i.left-o.borderWidth,l=i.bottom-i.top-o.borderWidth,u=Math.min(s,l),d={x:0,y:0},h=e.getMeta(),c=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),m=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,p={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(m),y:Math.sin(m)},y=g<=0&&m>=0||g<=2*Math.PI&&2*Math.PI<=m,b=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,x=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,_=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,k=c/100,w={x:x?-1:Math.min(p.x*(p.x<0?1:k),v.x*(v.x<0?1:k)),y:_?-1:Math.min(p.y*(p.y<0?1:k),v.y*(v.y<0?1:k))},M={x:y?1:Math.max(p.x*(p.x>0?1:k),v.x*(v.x>0?1:k)),y:b?1:Math.max(p.y*(p.y>0?1:k),v.y*(v.y>0?1:k))},S={width:.5*(M.x-w.x),height:.5*(M.y-w.y)};u=Math.min(s/S.width,l/S.height),d={x:-.5*(M.x+w.x),y:-.5*(M.y+w.y)}}n.borderWidth=e.getMaxBorderWidth(h.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(c?n.outerRadius/100*c:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,h.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),r.each(h.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,o=a.chartArea,s=a.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,h=s.rotation,c=s.rotation,f=i.getDataset(),g=n&&l.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI));r.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:h,endAngle:c,circumference:g,outerRadius:n&&l.animateScale?0:i.outerRadius,innerRadius:n&&l.animateScale?0:i.innerRadius,label:(0,r.valueAtIndexOrDefault)(f.label,e,a.data.labels[e])}});var m=t._model,p=t.custom||{},v=r.valueAtIndexOrDefault,y=this.chart.options.elements.arc;m.backgroundColor=p.backgroundColor?p.backgroundColor:v(f.backgroundColor,e,y.backgroundColor),m.borderColor=p.borderColor?p.borderColor:v(f.borderColor,e,y.borderColor),m.borderWidth=p.borderWidth?p.borderWidth:v(f.borderWidth,e,y.borderWidth),n&&l.animateRotate||(m.startAngle=0===e?s.rotation:i.getMeta().data[e-1]._model.endAngle,m.endAngle=m.startAngle+m.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return r.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,r=t.length,o=0;o<r;o++)i=(n=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0)>(i=(e=t[o]._model?t[o]._model.borderWidth:0)>i?e:i)?n:i;return i}})}},{26:26,41:41,46:46}],18:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return r.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,h=d.elements.line,c=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=c,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:r.valueOrDefault(f.lineTension,h.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||h.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||h.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||h.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||h.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||h.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||h.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||h.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:h.fill,steppedLine:a.steppedLine?a.steppedLine:r.valueOrDefault(f.steppedLine,h.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:r.valueOrDefault(f.cubicInterpolationMode,h.cubicInterpolationMode)},l.pivot()),n=0,i=u.length;n<i;++n)o.updateElement(u[n],n,t);for(g&&0!==l._model.tension&&o.updateBezierControlPoints(),n=0,i=u.length;n<i;++n)u[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=r.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=r.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||r.isArray(i.pointBorderWidth)?n=r.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},getPointRotation:function(t,e){var n=this.chart.options.elements.point.rotation,i=this.getDataset(),a=t.custom||{};return isNaN(a.rotation)?isNaN(i.pointRotation)&&!r.isArray(i.pointRotation)||(n=r.valueAtIndexOrDefault(i.pointRotation,e,n)):n=a.rotation,n},updateElement:function(t,e,n){var i,a,o=this,s=o.getMeta(),l=t.custom||{},u=o.getDataset(),d=o.index,h=u.data[e],c=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),g=o.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),i=f.getPixelForValue("object"==typeof h?h:NaN,e,d),a=n?c.getBasePixel():o.calculatePointY(h,e,d),t._xScale=f,t._yScale=c,t._datasetIndex=d,t._index=e,t._model={x:i,y:a,skip:l.skip||isNaN(i)||isNaN(a),radius:l.radius||r.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:l.pointStyle||r.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),rotation:o.getPointRotation(t,e),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:l.hitRadius||r.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,r,o=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(i=0;i<n;i++)if(a=o.data.datasets[i],"line"===(r=o.getDatasetMeta(i)).type&&r.yAxisID===l.id&&o.isDatasetVisible(i)){var h=Number(l.getRightValue(a.data[e]));h<0?d+=h||0:u+=h||0}var c=Number(l.getRightValue(t));return l.getPixelForValue(c<0?d+c:u+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,i,a=this.getMeta(),o=this.chart.chartArea,s=a.data||[];function l(t,e,n){return Math.max(Math.min(t,n),e)}if(a.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),"monotone"===a.dataset._model.cubicInterpolationMode)r.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)n=s[t]._model,i=r.splineCurve(r.previousItem(s,t)._model,n,r.nextItem(s,t)._model,a.dataset._model.tension),n.controlPointPreviousX=i.previous.x,n.controlPointPreviousY=i.previous.y,n.controlPointNextX=i.next.x,n.controlPointNextY=i.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(n=s[t]._model).controlPointPreviousX=l(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=l(n.controlPointPreviousY,o.top,o.bottom),n.controlPointNextX=l(n.controlPointNextX,o.left,o.right),n.controlPointNextY=l(n.controlPointNextY,o.top,o.bottom)},draw:function(){var t,n=this.chart,i=this.getMeta(),a=i.data||[],o=n.chartArea,s=a.length,l=0;for(e(this.getDataset(),n.options)&&(r.canvas.clipArea(n.ctx,{left:o.left,right:o.right,top:o.top-(t=(i.dataset._model.borderWidth||0)/2),bottom:o.bottom+t}),i.dataset.draw(),r.canvas.unclipArea(n.ctx));l<s;++l)a[l].draw(o)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.backgroundColor=i.hoverBackgroundColor||r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,r.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||r.valueAtIndexOrDefault(e.pointHoverBorderColor,n,r.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||r.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth),a.radius=i.hoverRadius||r.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius)}})}},{26:26,41:41,46:46}],19:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),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,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i].custom||{},l=r.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,i,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,i,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,i,u.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,update:function(t){var e,n,i,a=this,o=a.getDataset(),s=a.getMeta(),l=a.chart.options.startAngle||0,u=a._starts=[],d=a._angles=[];for(a._updateRadius(),s.count=a.countVisibleElements(),e=0,n=o.data.length;e<n;e++)u[e]=l,i=a._computeAngle(e),d[e]=i,l+=i;r.each(s.data,function(e,n){a.updateElement(e,n,t)})},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,i=e.options,a=i.elements.arc,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max((r-a.borderWidth/2)/2,0),e.innerRadius=Math.max(i.cutoutPercentage?e.outerRadius/100*i.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 i=this,a=i.chart,o=i.getDataset(),s=a.options,l=s.animation,u=a.scale,d=a.data.labels,h=u.xCenter,c=u.yCenter,f=s.startAngle,g=t.hidden?0:u.getDistanceFromCenterForValue(o.data[e]),m=i._starts[e],p=m+(t.hidden?0:i._angles[e]),v=l.animateScale?0:u.getDistanceFromCenterForValue(o.data[e]);r.extend(t,{_datasetIndex:i.index,_index:e,_scale:u,_model:{x:h,y:c,innerRadius:0,outerRadius:n?v:g,startAngle:n&&l.animateRotate?f:m,endAngle:n&&l.animateRotate?f:p,label:r.valueAtIndexOrDefault(d,e,d[e])}});var y=this.chart.options.elements.arc,b=t.custom||{},x=r.valueAtIndexOrDefault,_=t._model;_.backgroundColor=b.backgroundColor?b.backgroundColor:x(o.backgroundColor,e,y.backgroundColor),_.borderColor=b.borderColor?b.borderColor:x(o.borderColor,e,y.borderColor),_.borderWidth=b.borderWidth?b.borderWidth:x(o.borderWidth,e,y.borderWidth),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return r.each(e.data,function(e,i){isNaN(t.data[i])||e.hidden||n++}),n},_computeAngle:function(t){var e=this,n=this.getMeta().count,i=e.getDataset(),a=e.getMeta();return isNaN(i.data[t])||a.data[t].hidden?0:r.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:i,datasetIndex:e.index},t)}})}},{26:26,41:41,46:46}],20:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:r.noop,update:function(t){var e=this,n=e.getMeta(),i=n.data,a=n.dataset.custom||{},o=e.getDataset(),s=e.chart.options.elements.line,l=e.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),r.extend(n.dataset,{_datasetIndex:e.index,_scale:l,_children:i,_loop:!0,_model:{tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,s.tension),backgroundColor:a.backgroundColor?a.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:o.borderWidth||s.borderWidth,borderColor:a.borderColor?a.borderColor:o.borderColor||s.borderColor,fill:a.fill?a.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:a.borderCapStyle?a.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:a.borderDash?a.borderDash:o.borderDash||s.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),r.each(i,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},o=i.getDataset(),s=i.chart.scale,l=i.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),r.extend(t,{_datasetIndex:i.index,_index:e,_scale:s,_model:{x:n?s.xCenter:u.x,y:n?s.yCenter:u.y,tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:r.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:r.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:r.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:r.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:r.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),rotation:a.rotation?a.rotation:r.valueAtIndexOrDefault(o.pointRotation,e,l.rotation),hitRadius:a.hitRadius?a.hitRadius:r.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();r.each(e.data,function(n,i){var a=n._model,o=r.splineCurve(r.previousItem(e.data,i,!0)._model,a,r.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.radius=n.hoverRadius?n.hoverRadius:r.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:r.valueAtIndexOrDefault(e.pointHoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:r.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)}})}},{26:26,41:41,46:46}],21:[function(t,e,n){"use strict";t(26)._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+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{26:26}],22:[function(t,e,n){"use strict";var i=t(27);n=e.exports=i.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),Object.defineProperty(n.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(n.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},{27:27}],23:[function(t,e,n){"use strict";var i=t(26),a=t(46);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:a.noop,onComplete:a.noop}}),e.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,r,o=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,r=o.length;a<r;++a)if(o[a].chart===t)return void(o[a]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=a.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=a.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,r=0;r<i.length;)n=(e=i[r]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),a.callback(e.render,[n,e],n),a.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(a.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(r,1)):++r}}},{26:26,46:46}],24:[function(t,e,n){"use strict";var i=t(22),a=t(23),r=t(26),o=t(46),s=t(29),l=t(31),u=t(49),d=t(32),h=t(34),c=t(36);e.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},o.extend(t.prototype,{construct:function(e,n){var i=this;n=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=o.configMerge(r.global,r[t.type],t.options||{}),t}(n);var a=u.acquireContext(e,n),s=a&&a.canvas,l=s&&s.height,d=s&&s.width;i.id=o.uid(),i.ctx=a,i.canvas=s,i.config=n,i.width=d,i.height=l,i.aspectRatio=l?d/l:null,i.options=n.options,i._bufferedRender=!1,i.chart=i,i.controller=i,t.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),a&&s?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return d.notify(t,"beforeInit"),o.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),d.notify(t,"afterInit"),t},clear:function(){return o.canvas.clear(this),this},stop:function(){return a.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(o.getMaximumWidth(i))),s=Math.max(0,Math.floor(a?r/a:o.getMaximumHeight(i)));if((e.width!==r||e.height!==s)&&(i.width=e.width=r,i.height=e.height=s,i.style.width=r+"px",i.style.height=s+"px",o.retinaScale(e,n.devicePixelRatio),!t)){var l={width:r,height:s};d.notify(e,"resize",[l]),e.options.onResize&&e.options.onResize(e,l),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;o.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),o.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,n=t.options,i=t.scales||{},a=[],r=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(a=a.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&a.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),o.each(a,function(n){var a=n.options,s=a.id,l=o.valueOrDefault(a.type,n.dtype);e(a.position)!==e(n.dposition)&&(a.position=n.dposition),r[s]=!0;var u=null;if(s in i&&i[s].type===l)(u=i[s]).options=a,u.ctx=t.ctx,u.chart=t;else{var d=h.getScaleConstructor(l);if(!d)return;u=new d({id:s,type:l,options:a,ctx:t.ctx,chart:t}),i[u.id]=u}u.mergeTicksOptions(),n.isDefault&&(t.scale=u)}),o.each(r,function(t,e){t||delete i[e]}),t.scales=i,h.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return o.each(e.data.datasets,function(a,r){var o=e.getDatasetMeta(r),s=a.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(r),o=e.getDatasetMeta(r)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(r),o.controller.linkScales();else{var l=t.controllers[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(e,r),i.push(o.controller)}},e),i},resetElements:function(){var t=this;o.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var n,i,a=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),i=(n=a).options,o.each(n.scales,function(t){l.removeBox(n,t)}),i=o.configMerge(t.defaults.global,t.defaults[n.config.type],i),n.options=n.config.options=i,n.ensureScalesHaveIDs(),n.buildOrUpdateScales(),n.tooltip._options=i.tooltips,n.tooltip.initialize(),d._invalidate(a),!1!==d.notify(a,"beforeUpdate")){a.tooltip._data=a.data;var r=a.buildOrUpdateControllers();o.each(a.data.datasets,function(t,e){a.getDatasetMeta(e).controller.buildOrUpdateElements()},a),a.updateLayout(),a.options.animation&&a.options.animation.duration&&o.each(r,function(t){t.reset()}),a.updateDatasets(),a.tooltip.initialize(),a.lastActive=[],d.notify(a,"afterUpdate"),a._bufferedRender?a._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:a.render(e)}},updateLayout:function(){!1!==d.notify(this,"beforeLayout")&&(l.update(this,this.width,this.height),d.notify(this,"afterScaleUpdate"),d.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==d.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);d.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==d.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),d.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=t.duration,r=t.lazy;if(!1!==d.notify(e,"beforeRender")){var s=e.options.animation,l=function(t){d.notify(e,"afterRender"),o.callback(s&&s.onComplete,[t],e)};if(s&&(void 0!==n&&0!==n||void 0===n&&0!==s.duration)){var u=new i({numSteps:(n||s.duration)/16.66,easing:t.easing||s.easing,render:function(t,e){var n=e.currentStep,i=n/e.numSteps;t.draw((0,o.easing.effects[e.easing])(i),i,n)},onAnimationProgress:s.onProgress,onAnimationComplete:l});a.addAnimation(e,u,n,r)}else e.draw(),l(new i({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),o.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==d.notify(e,"beforeDraw",[t])&&(o.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),d.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!==d.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);d.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),i={meta:n,index:t,easingValue:e};!1!==d.notify(this,"beforeDatasetDraw",[i])&&(n.controller.draw(e),d.notify(this,"afterDatasetDraw",[i]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==d.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),d.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return s.modes.single(this,t)},getElementsAtEvent:function(t){return s.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return s.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=s.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return s.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],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var e,n,i=this,a=i.canvas;for(i.stop(),e=0,n=i.data.datasets.length;e<n;++e)i.destroyDatasetMeta(e);a&&(i.unbindEvents(),o.canvas.clear(i),u.releaseContext(i.ctx),i.canvas=null,i.ctx=null),d.notify(i,"destroy"),delete t.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new c({_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)};o.each(t.options.events,function(i){u.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},u.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,o.each(e,function(e,n){u.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,r,o=n?"setHoverStyle":"removeHoverStyle";for(a=0,r=t.length;a<r;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[o](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==d.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);n&&(i=n._start?n.handleEvent(t):i|n.handleEvent(t)),d.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!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,i=n.options||{},a=i.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,a.mode,a),o.callback(i.onHover||i.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||i.onClick&&i.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,a.mode,!1),n.active.length&&a.mode&&n.updateHoverStyle(n.active,a.mode,!0),e=!o.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),t.Controller=t}},{22:22,23:23,26:26,29:29,31:31,32:32,34:34,36:36,46:46,49:49}],25:[function(t,e,n){"use strict";var i=t(46);e.exports=function(t){var e=["push","pop","shift","splice","unshift"];function n(t,n){var i=t._chartjs;if(i){var a=i.listeners,r=a.indexOf(n);-1!==r&&a.splice(r,1),a.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.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]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(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(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;t<e;++t)a[t]=a[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,a,r=this,o=r.getDataset(),s=o.data||(o.data=[]);r._data!==s&&(r._data&&n(r._data,r),a=r,(t=s)._chartjs?t._chartjs.listeners.push(a):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[a]}}),e.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 i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),r}})})),r._data=s),r.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t){i.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=i.valueAtIndexOrDefault,o=i.getHoverColor,s=t._model;t.$previousStyle={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth},s.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:r(e.hoverBackgroundColor,n,o(s.backgroundColor)),s.borderColor=a.hoverBorderColor?a.hoverBorderColor:r(e.hoverBorderColor,n,o(s.borderColor)),s.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:r(e.hoverBorderWidth,n,s.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,i=e.length;i<n?t.data.splice(i,n-i):i>n&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},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.DatasetController.extend=i.inherits}},{46:46}],26:[function(t,e,n){"use strict";var i=t(46);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{46:46}],27:[function(t,e,n){"use strict";var i=t(2),a=t(46),r=function(t){a.extend(this,t),this.initialize.apply(this,arguments)};a.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=a.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,o,s,l,u,d,h,c,f,g=Object.keys(n);for(r=0,o=g.length;r<o;++r)if(d=n[s=g[r]],e.hasOwnProperty(s)||(e[s]=d),(l=e[s])!==d&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=l),(h=typeof d)==typeof(u=t[s]))if("string"===h){if((c=i(u)).valid&&(f=i(d)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if("number"===h&&isFinite(u)&&isFinite(d)){e[s]=u+(d-u)*a;continue}e[s]=d}}(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 a.isNumber(this._model.x)&&a.isNumber(this._model.y)}}),r.extend=a.inherits,e.exports=r},{2:2,46:46}],28:[function(t,e,n){"use strict";var i=t(2),a=t(26),r=t(46),o=t(34);e.exports=function(){function t(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function e(t){return null!=t&&"none"!==t}function n(n,i,a){var o=document.defaultView,s=r._getParentNode(n),l=o.getComputedStyle(n)[i],u=o.getComputedStyle(s)[i],d=e(l),h=e(u),c=Number.POSITIVE_INFINITY;return d||h?Math.min(d?t(l,n,a):c,h?t(u,s,a):c):"none"}r.configMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){var a=e[t]||{},s=n[t];"scales"===t?e[t]=r.scaleMerge(a,s):"scale"===t?e[t]=r.merge(a,[o.getScaleDefaults(s.type),s]):r._merger(t,e,n,i)}})},r.scaleMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,s,l,u=n[t].length;for(e[t]||(e[t]=[]),a=0;a<u;++a)s=r.valueOrDefault((l=n[t][a]).type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),r.merge(e[t][a],!e[t][a].type||l.type&&l.type!==e[t][a].type?[o.getScaleDefaults(s),l]:l)}else r._merger(t,e,n,i)}})},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return r.each(t,function(t){e(t)&&n.push(t)}),n},r.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 i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},r.findNextWhere=function(t,e,n){r.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},r.findPreviousWhere=function(t,e,n){r.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,n){return Math.abs(t-e)<n},r.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},r.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},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2==0?0:.5},r.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,n,i,a,o,s,l,u,d,h=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),c=h.length;for(e=0;e<c;++e)if(!(i=h[e]).model.skip){if(n=e>0?h[e-1]:null,(a=e<c-1?h[e+1]:null)&&!a.model.skip){var f=a.model.x-i.model.x;i.deltaK=0!==f?(a.model.y-i.model.y)/f:0}i.mK=!n||n.model.skip?i.deltaK:!a||a.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?0:(n.deltaK+i.deltaK)/2}for(e=0;e<c-1;++e)a=h[e+1],(i=h[e]).model.skip||a.model.skip||(r.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(o=i.mK/i.deltaK,s=a.mK/i.deltaK,(u=Math.pow(o,2)+Math.pow(s,2))<=9||(l=3/Math.sqrt(u),i.mK=o*l*i.deltaK,a.mK=s*l*i.deltaK)));for(e=0;e<c;++e)(i=h[e]).model.skip||(a=e<c-1?h[e+1]:null,(n=e>0?h[e-1]:null)&&!n.model.skip&&(i.model.controlPointPreviousX=i.model.x-(d=(i.model.x-n.model.x)/3),i.model.controlPointPreviousY=i.model.y-d*i.mK),a&&!a.model.skip&&(i.model.controlPointNextX=i.model.x+(d=(a.model.x-i.model.x)/3),i.model.controlPointNextY=i.model.y+d*i.mK))},r.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]},r.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var n=Math.floor(r.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},r.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)},r.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,o=t.target||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(n=l[0].clientX,i=l[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(r.getStyle(o,"padding-left")),d=parseFloat(r.getStyle(o,"padding-top")),h=parseFloat(r.getStyle(o,"padding-right")),c=parseFloat(r.getStyle(o,"padding-bottom")),f=s.bottom-s.top-d-c;return{x:n=Math.round((n-s.left-u)/(s.right-s.left-u-h)*o.width/e.currentDevicePixelRatio),y:i=Math.round((i-s.top-d)/f*o.height/e.currentDevicePixelRatio)}},r.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},r.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},r._calculatePadding=function(t,e,n){return(e=r.getStyle(t,e)).indexOf("%")>-1?n/parseInt(e,10):parseInt(e,10)},r._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},r.getMaximumWidth=function(t){var e=r._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-r._calculatePadding(e,"padding-left",n)-r._calculatePadding(e,"padding-right",n),a=r.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},r.getMaximumHeight=function(t){var e=r._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-r._calculatePadding(e,"padding-top",n)-r._calculatePadding(e,"padding-bottom",n),a=r.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},r.fontString=function(t,e,n){return e+" "+t+"px "+n},r.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},o=i.garbageCollect=[],i.font=e),t.font=e;var s=0;r.each(n,function(e){null!=e&&!0!==r.isArray(e)?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){null==e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>n.length){for(var u=0;u<l;u++)delete a[o[u]];o.splice(0,l)}return s},r.measureText=function(t,e,n,i,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,n.push(a)),r>i&&(i=r),i},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,26:26,34:34,46:46}],29:[function(t,e,n){"use strict";var i=t(46);function a(t,e){return t.native?{x:t.x,y:t.y}:i.getRelativePosition(t,e)}function r(t,e){var n,i,a,r,o;for(i=0,r=t.data.datasets.length;i<r;++i)if(t.isDatasetVisible(i))for(a=0,o=(n=t.getDatasetMeta(i)).data.length;a<o;++a){var s=n.data[a];s._view.skip||e(s)}}function o(t,e){var n=[];return r(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function s(t,e,n,i){var a=Number.POSITIVE_INFINITY,o=[];return r(t,function(t){if(!n||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=i(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function l(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,i){var a=e?Math.abs(t.x-i.x):0,r=n?Math.abs(t.y-i.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(r,2))}}function u(t,e,n){var i=a(e,t);n.axis=n.axis||"x";var r=l(n.axis),u=n.intersect?o(t,i):s(t,i,!1,r),d=[];return u.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n).data[u[0]._index];i&&!i._view.skip&&d.push(i)}}),d):[]}e.exports={modes:{single:function(t,e){var n=a(e,t),i=[];return r(t,function(t){if(t.inRange(n.x,n.y))return i.push(t),i}),i.slice(0,1)},label:u,index:u,dataset:function(t,e,n){var i=a(e,t);n.axis=n.axis||"xy";var r=l(n.axis),u=n.intersect?o(t,i):s(t,i,!1,r);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return o(t,a(e,t))},nearest:function(t,e,n){var i=a(e,t);n.axis=n.axis||"xy";var r=l(n.axis),o=s(t,i,n.intersect,r);return o.length>1&&o.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),o.slice(0,1)},x:function(t,e,n){var i=a(e,t),o=[],s=!1;return r(t,function(t){t.inXRange(i.x)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var i=a(e,t),o=[],s=!1;return r(t,function(t){t.inYRange(i.y)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o}}}},{46:46}],30:[function(t,e,n){"use strict";t(26)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{26:26}],31:[function(t,e,n){"use strict";var i=t(46);function a(t,e){return i.where(t,function(t){return t.position===e})}function r(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={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 i,a=["fullWidth","position","weight"],r=a.length,o=0;o<r;++o)n.hasOwnProperty(i=a[o])&&(e[i]=n[i])},update:function(t,e,n){if(t){var o=i.options.toPadding((t.options.layout||{}).padding),s=o.left,l=o.right,u=o.top,d=o.bottom,h=a(t.boxes,"left"),c=a(t.boxes,"right"),f=a(t.boxes,"top"),g=a(t.boxes,"bottom"),m=a(t.boxes,"chartArea");r(h,!0),r(c,!1),r(f,!0),r(g,!1);var p=e-s-l,v=n-u-d,y=(e-p/2)/(h.length+c.length),b=(n-v/2)/(f.length+g.length),x=p,_=v,k=[];i.each(h.concat(c,f,g),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?p:x,b),_-=e.height):(e=t.update(y,_),x-=e.width),k.push({horizontal:n,minSize:e,box:t})});var w=0,M=0,S=0,D=0;i.each(f.concat(g),function(t){if(t.getPadding){var e=t.getPadding();w=Math.max(w,e.left),M=Math.max(M,e.right)}}),i.each(h.concat(c),function(t){if(t.getPadding){var e=t.getPadding();S=Math.max(S,e.top),D=Math.max(D,e.bottom)}});var C=s,P=l,T=u,O=d;i.each(h.concat(c),W),i.each(h,function(t){C+=t.width}),i.each(c,function(t){P+=t.width}),i.each(f.concat(g),W),i.each(f,function(t){T+=t.height}),i.each(g,function(t){O+=t.height}),i.each(h.concat(c),function(t){var e=i.findNextWhere(k,function(e){return e.box===t});e&&t.update(e.minSize.width,_,{left:0,right:0,top:T,bottom:O})}),C=s,P=l,T=u,O=d,i.each(h,function(t){C+=t.width}),i.each(c,function(t){P+=t.width}),i.each(f,function(t){T+=t.height}),i.each(g,function(t){O+=t.height});var I=Math.max(w-C,0);C+=I,P+=Math.max(M-P,0);var A=Math.max(S-T,0);T+=A,O+=Math.max(D-O,0);var F=n-T-O,R=e-C-P;R===x&&F===_||(i.each(h,function(t){t.height=F}),i.each(c,function(t){t.height=F}),i.each(f,function(t){t.fullWidth||(t.width=R)}),i.each(g,function(t){t.fullWidth||(t.width=R)}),_=F,x=R);var L=s+I,Y=u+A;i.each(h.concat(f),N),L+=x,Y+=_,i.each(c,N),i.each(g,N),t.chartArea={left:C,top:T,right:C+x,bottom:T+_},i.each(m,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 W(t){var e=i.findNextWhere(k,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(C,w),right:Math.max(P,M),top:0,bottom:0};t.update(t.fullWidth?p:x,v/2,n)}else t.update(e.minSize.width,_)}function N(t){t.isHorizontal()?(t.left=t.fullWidth?s:C,t.right=t.fullWidth?e-l:C+x,t.top=Y,t.bottom=Y+t.height,Y=t.bottom):(t.left=L,t.right=L+t.width,t.top=T,t.bottom=T+_,L=t.right)}}}},{46:46}],32:[function(t,e,n){"use strict";var i=t(26),a=t(46);i._set("global",{plugins:{}}),e.exports={_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 i,a,r,o,s,l=this.descriptors(t),u=l.length;for(i=0;i<u;++i)if("function"==typeof(s=(r=(a=l[i]).plugin)[e])&&((o=[t].concat(n||[])).push(a.options),!1===s.apply(r,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],r=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=a.clone(i.global.plugins[e])),n.push(t),r.push({plugin:t,options:o||{}}))}}),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}}},{26:26,46:46}],33:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(35);function s(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function l(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}function u(t,e,n){return r.isArray(e)?r.longestText(t,n,e):t.measureText(e).width}function d(t){var e=r.valueOrDefault,n=i.global,a=e(t.fontSize,n.defaultFontSize),o=e(t.fontStyle,n.defaultFontStyle),s=e(t.fontFamily,n.defaultFontFamily);return{size:a,style:o,family:s,font:r.fontString(a,o,s)}}function h(t){return r.options.toLineHeight(r.valueOrDefault(t.lineHeight,1.2),r.valueOrDefault(t.fontSize,i.global.defaultFontSize))}i._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:"",lineHeight:1.2,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:o.formatters.values,minor:{},major:{}}}),e.exports=a.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(){r.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,o,s,l,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=r.extend({left:0,right:0,top:0,bottom:0},n),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),l=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(l)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,i=0,a=o.length;i<a;++i)s=o[i],(u=l[i])?u.label=s:l.push(u={label:s,major:!1});return d._ticks=l,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){r.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){r.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(){r.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){r.callback(this.options.beforeDataLimits,[this])},determineDataLimits:r.noop,afterDataLimits:function(){r.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){r.callback(this.options.beforeBuildTicks,[this])},buildTicks:r.noop,afterBuildTicks:function(){r.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){r.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){r.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){r.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,i=s(t._ticks),a=d(n);e.font=a.font;var o=n.minRotation||0;if(i.length&&t.options.display&&t.isHorizontal())for(var l,u=r.longestText(e,a.font,i,t.longestTextCache),h=u,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;h>c&&o<n.maxRotation;){var f=r.toRadians(o);if(l=Math.cos(f),Math.sin(f)*u>t.maxHeight){o--;break}o++,h=l*u}t.labelRotation=o},afterCalculateTickRotation:function(){r.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){r.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=s(t._ticks),i=t.options,a=i.ticks,o=i.scaleLabel,l=i.gridLines,c=i.display,f=t.isHorizontal(),g=d(a),m=i.gridLines.tickMarkLength;if(e.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:c&&l.drawTicks?m:0,e.height=f?c&&l.drawTicks?m:0:t.maxHeight,o.display&&c){var p=h(o)+r.options.toPadding(o.padding).height;f?e.height+=p:e.width+=p}if(a.display&&c){var v=r.longestText(t.ctx,g.font,n,t.longestTextCache),y=r.numberOfLabelLines(n),b=.5*g.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var _=r.toRadians(t.labelRotation),k=Math.cos(_),w=Math.sin(_);e.height=Math.min(t.maxHeight,e.height+(w*v+g.size*y+b*(y-1)+b)+x),t.ctx.font=g.font;var M=u(t.ctx,n[0],g.font),S=u(t.ctx,n[n.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===i.position?k*M+3:k*b+3,t.paddingRight="bottom"===i.position?k*b+3:k*S+3):(t.paddingLeft=M/2+3,t.paddingRight=S/2+3)}else a.mirror?v=0:v+=x+b,e.width=Math.min(t.maxWidth,e.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.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(){r.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(r.isNullOrUndef(t))return NaN;if("number"==typeof t&&!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:r.noop,getPixelForValue:r.noop,getValueForPixel:r.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;return n&&(a+=i/2),e.left+Math.round(a)+(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+Math.round((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,i,a,o=this,s=o.isHorizontal(),l=o.options.ticks.minor,u=t.length,d=r.toRadians(o.labelRotation),h=Math.cos(d),c=o.longestLabelWidth*h,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(c+l.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+l.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n<u;n++)i=t[n],(e>1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,n=e.options;if(n.display){var a=e.ctx,o=i.global,s=n.ticks.minor,u=n.ticks.major||s,c=n.gridLines,f=n.scaleLabel,g=0!==e.labelRotation,m=e.isHorizontal(),p=s.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=r.valueOrDefault(s.fontColor,o.defaultFontColor),y=d(s),b=r.valueOrDefault(u.fontColor,o.defaultFontColor),x=d(u),_=c.drawTicks?c.tickMarkLength:0,k=r.valueOrDefault(f.fontColor,o.defaultFontColor),w=d(f),M=r.options.toPadding(f.padding),S=r.toRadians(e.labelRotation),D=[],C=e.options.gridLines.lineWidth,P="right"===n.position?e.left:e.right-C-_,T="right"===n.position?e.left+_:e.right,O="bottom"===n.position?e.top+C:e.bottom-_-C,I="bottom"===n.position?e.top+C+_:e.bottom+C;if(r.each(p,function(i,a){if(!r.isNullOrUndef(i.label)){var u,d,h,f,v,y,b,x,k,w,M,A,F,R,L=i.label;a===e.zeroLineIndex&&n.offset===c.offsetGridLines?(u=c.zeroLineWidth,d=c.zeroLineColor,h=c.zeroLineBorderDash,f=c.zeroLineBorderDashOffset):(u=r.valueAtIndexOrDefault(c.lineWidth,a),d=r.valueAtIndexOrDefault(c.color,a),h=r.valueOrDefault(c.borderDash,o.borderDash),f=r.valueOrDefault(c.borderDashOffset,o.borderDashOffset));var Y="middle",W="middle",N=s.padding;if(m){var z=_+N;"bottom"===n.position?(W=g?"middle":"top",Y=g?"right":"center",R=e.top+z):(W=g?"middle":"bottom",Y=g?"left":"center",R=e.bottom-z);var V=l(e,a,c.offsetGridLines&&p.length>1);V<e.left&&(d="rgba(0,0,0,0)"),V+=r.aliasPixel(u),F=e.getPixelForTick(a)+s.labelOffset,v=b=k=M=V,y=O,x=I,w=t.top,A=t.bottom+C}else{var H,B="left"===n.position;s.mirror?(Y=B?"left":"right",H=N):(Y=B?"right":"left",H=_+N),F=B?e.right-H:e.left+H;var E=l(e,a,c.offsetGridLines&&p.length>1);E<e.top&&(d="rgba(0,0,0,0)"),E+=r.aliasPixel(u),R=e.getPixelForTick(a)+s.labelOffset,v=P,b=T,k=t.left,M=t.right+C,y=x=w=A=E}D.push({tx1:v,ty1:y,tx2:b,ty2:x,x1:k,y1:w,x2:M,y2:A,labelX:F,labelY:R,glWidth:u,glColor:d,glBorderDash:h,glBorderDashOffset:f,rotation:-1*S,label:L,major:i.major,textBaseline:W,textAlign:Y})}}),r.each(D,function(t){if(c.display&&(a.save(),a.lineWidth=t.glWidth,a.strokeStyle=t.glColor,a.setLineDash&&(a.setLineDash(t.glBorderDash),a.lineDashOffset=t.glBorderDashOffset),a.beginPath(),c.drawTicks&&(a.moveTo(t.tx1,t.ty1),a.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(a.moveTo(t.x1,t.y1),a.lineTo(t.x2,t.y2)),a.stroke(),a.restore()),s.display){a.save(),a.translate(t.labelX,t.labelY),a.rotate(t.rotation),a.font=t.major?x.font:y.font,a.fillStyle=t.major?b:v,a.textBaseline=t.textBaseline,a.textAlign=t.textAlign;var n=t.label;if(r.isArray(n))for(var i=n.length,o=1.5*y.size,l=e.isHorizontal()?0:-o*(i-1)/2,u=0;u<i;++u)a.fillText(""+n[u],0,l),l+=o;else a.fillText(n,0,0);a.restore()}}),f.display){var A,F,R=0,L=h(f)/2;if(m)A=e.left+(e.right-e.left)/2,F="bottom"===n.position?e.bottom-L-M.bottom:e.top+L+M.top;else{var Y="left"===n.position;A=Y?e.left+L+M.top:e.right-L-M.top,F=e.top+(e.bottom-e.top)/2,R=Y?-.5*Math.PI:.5*Math.PI}a.save(),a.translate(A,F),a.rotate(R),a.textAlign="center",a.textBaseline="middle",a.fillStyle=k,a.font=w.font,a.fillText(f.labelString,0,0),a.restore()}if(c.drawBorder){a.lineWidth=r.valueAtIndexOrDefault(c.lineWidth,0),a.strokeStyle=r.valueAtIndexOrDefault(c.color,0);var W=e.left,N=e.right+C,z=e.top,V=e.bottom+C,H=r.aliasPixel(a.lineWidth);m?(z=V="top"===n.position?e.bottom:e.top,z+=H,V+=H):(W=N="left"===n.position?e.right:e.left,W+=H,N+=H),a.beginPath(),a.moveTo(W,z),a.lineTo(N,V),a.stroke()}}}})},{26:26,27:27,35:35,46:46}],34:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(31);e.exports={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(t){a.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,r.addBox(t,e)})}}},{26:26,31:31,46:46}],35:[function(t,e,n){"use strict";var i=t(46);e.exports={formatters:{values:function(t){return i.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=i.log10(Math.abs(a)),o="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=i.log10(Math.abs(t));o=t.toExponential(Math.floor(s)-Math.floor(r))}else{var l=-1*Math.floor(r);l=Math.max(Math.min(l,20),0),o=t.toFixed(l)}else o="0";return o},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{46:46}],36:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46);i._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:r.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var r=t[0];r.xLabel?n=r.xLabel:a>0&&r.index<a&&(n=i[r.index])}return n},afterTitle:r.noop,beforeBody:r.noop,beforeLabel:r.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+t.yLabel},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:r.noop,afterBody:r.noop,beforeFooter:r.noop,footer:r.noop,afterFooter:r.noop}}});var o={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,r=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();i+=s.x,a+=s.y,++r}}return{x:Math.round(i/r),y:Math.round(a/r)}},nearest:function(t,e){var n,i,a,o=e.x,s=e.y,l=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),h=r.distanceBetweenPoints(e,d);h<l&&(l=h,a=u)}}if(a){var c=a.tooltipPosition();o=c.x,s=c.y}return{x:o,y:s}}};function s(t,e){var n=r.color(t);return n.alpha(e*n.alpha()).rgbaString()}function l(t,e){return e&&(r.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function u(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function d(t){var e=i.global,n=r.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(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 h(t){return l([],u(t))}(e.exports=a.extend({initialize:function(){this._model=d(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),i=t.afterTitle.apply(this,arguments),a=[];return a=l(a,u(e)),a=l(a,u(n)),l(a,u(i))},getBeforeBody:function(){return h(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return r.each(t,function(t){var r={before:[],lines:[],after:[]};l(r.before,u(i.beforeLabel.call(n,t,e))),l(r.lines,i.label.call(n,t,e)),l(r.after,u(i.afterLabel.call(n,t,e))),a.push(r)}),a},getAfterBody:function(){return h(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),i=t.afterFooter.apply(this,arguments),a=[];return a=l(a,u(e)),a=l(a,u(n)),l(a,u(i))},update:function(t){var e,n,i,a,s,l,u,h=this,c=h._options,f=h._model,g=h._model=d(c),m=h._active,p=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},b={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(m.length){g.opacity=1;var _=[],k=[];x=o[c.position].call(h,m,h._eventPosition);var w=[];for(e=0,n=m.length;e<n;++e)w.push((a=void 0,s=void 0,s=(i=m[e])._yScale||i._scale,l=i._index,u=i._datasetIndex,{xLabel:(a=i._xScale)?a.getLabelForIndex(l,u):"",yLabel:s?s.getLabelForIndex(l,u):"",index:l,datasetIndex:u,x:i._model.x,y:i._model.y}));c.filter&&(w=w.filter(function(t){return c.filter(t,p)})),c.itemSort&&(w=w.sort(function(t,e){return c.itemSort(t,e,p)})),r.each(w,function(t){_.push(c.callbacks.labelColor.call(h,t,h._chart)),k.push(c.callbacks.labelTextColor.call(h,t,h._chart))}),g.title=h.getTitle(w,p),g.beforeBody=h.getBeforeBody(w,p),g.body=h.getBody(w,p),g.afterBody=h.getAfterBody(w,p),g.footer=h.getFooter(w,p),g.x=Math.round(x.x),g.y=Math.round(x.y),g.caretPadding=c.caretPadding,g.labelColors=_,g.labelTextColors=k,g.dataPoints=w,b=function(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0),l=e.title.length,u=e.footer.length,d=e.titleFontSize,h=e.bodyFontSize,c=e.footerFontSize;i+=l*d,i+=l?(l-1)*e.titleSpacing:0,i+=l?e.titleMarginBottom:0,i+=(s+=e.beforeBody.length+e.afterBody.length)*h,i+=s?(s-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*c,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=r.fontString(d,e._titleFontStyle,e._titleFontFamily),r.each(e.title,g),n.font=r.fontString(h,e._bodyFontStyle,e._bodyFontFamily),r.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?h+2:0,r.each(o,function(t){r.each(t.before,g),r.each(t.lines,g),r.each(t.after,g)}),f=0,n.font=r.fontString(c,e._footerFontStyle,e._footerFontFamily),r.each(e.footer,g),{width:a+=2*e.xPadding,height:i}}(this,g),y=function(t,e,n,i){var a=t.x,r=t.y,o=t.caretPadding,s=n.xAlign,l=n.yAlign,u=t.caretSize+o,d=t.cornerRadius+o;return"right"===s?a-=e.width:"center"===s&&((a-=e.width/2)+e.width>i.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===l?r+=u:r-="bottom"===l?e.height+u:e.height/2,"center"===l?"left"===s?a+=u:"right"===s&&(a-=u):"left"===s?a-=d:"right"===s&&(a+=d),{x:a,y:r}}(g,b,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,b),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=y.x,g.y=y.y,g.width=b.width,g.height=b.height,g.caretX=x.x,g.caretY=x.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this.getCaretPosition(t,e,this._view);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if("center"===c)s=g+p/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+m)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+m-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n,i){var a=e.title;if(a.length){n.textAlign=e._titleAlign,n.textBaseline="top";var o,l,u=e.titleFontSize,d=e.titleSpacing;for(n.fillStyle=s(e.titleFontColor,i),n.font=r.fontString(u,e._titleFontStyle,e._titleFontFamily),o=0,l=a.length;o<l;++o)n.fillText(a[o],t.x,t.y),t.y+=u+d,o+1===a.length&&(t.y+=e.titleMarginBottom-d)}},drawBody:function(t,e,n,i){var a=e.bodyFontSize,o=e.bodySpacing,l=e.body;n.textAlign=e._bodyAlign,n.textBaseline="top",n.font=r.fontString(a,e._bodyFontStyle,e._bodyFontFamily);var u=0,d=function(e){n.fillText(e,t.x+u,t.y),t.y+=a+o};n.fillStyle=s(e.bodyFontColor,i),r.each(e.beforeBody,d);var h=e.displayColors;u=h?a+2:0,r.each(l,function(o,l){var u=s(e.labelTextColors[l],i);n.fillStyle=u,r.each(o.before,d),r.each(o.lines,function(r){h&&(n.fillStyle=s(e.legendColorBackground,i),n.fillRect(t.x,t.y,a,a),n.lineWidth=1,n.strokeStyle=s(e.labelColors[l].borderColor,i),n.strokeRect(t.x,t.y,a,a),n.fillStyle=s(e.labelColors[l].backgroundColor,i),n.fillRect(t.x+1,t.y+1,a-2,a-2),n.fillStyle=u),d(r)}),r.each(o.after,d)}),u=0,r.each(e.afterBody,d),t.y-=o},drawFooter:function(t,e,n,i){var a=e.footer;a.length&&(t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=s(e.footerFontColor,i),n.font=r.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),r.each(a,function(i){n.fillText(i,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,n,i,a){n.fillStyle=s(e.backgroundColor,a),n.strokeStyle=s(e.borderColor,a),n.lineWidth=e.borderWidth;var r=e.xAlign,o=e.yAlign,l=t.x,u=t.y,d=i.width,h=i.height,c=e.cornerRadius;n.beginPath(),n.moveTo(l+c,u),"top"===o&&this.drawCaret(t,i),n.lineTo(l+d-c,u),n.quadraticCurveTo(l+d,u,l+d,u+c),"center"===o&&"right"===r&&this.drawCaret(t,i),n.lineTo(l+d,u+h-c),n.quadraticCurveTo(l+d,u+h,l+d-c,u+h),"bottom"===o&&this.drawCaret(t,i),n.lineTo(l+c,u+h),n.quadraticCurveTo(l,u+h,l,u+h-c),"center"===o&&"left"===r&&this.drawCaret(t,i),n.lineTo(l,u+c),n.quadraticCurveTo(l,u,l+c,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},i={x:e.x,y:e.y},a=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)&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,i.mode,i),(e=!r.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}})).positioners=o},{26:26,27:27,46:46}],37:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.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 i=r.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,o=i.distance,s=n.startAngle,l=n.endAngle;l<s;)l+=2*Math.PI;for(;a>l;)a-=2*Math.PI;for(;a<s;)a+=2*Math.PI;return a>=s&&a<=l&&o>=n.innerRadius&&o<=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=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=o.elements.line,h=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||o.defaultColor,s.beginPath(),h=-1,t=0;t<u.length;++t)e=u[t],n=r.previousItem(u,t),i=e._view,0===t?i.skip||(s.moveTo(i.x,i.y),h=t):(n=-1===h?n:u[h],i.skip||(h!==t-1&&!l||-1===h?s.moveTo(i.x,i.y):r.canvas.lineTo(s,n._view,e._view),h=t));s.stroke(),s.restore()}})},{26:26,27:27,46:46}],39:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=i.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}i._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=a.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:s,inXRange:s,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._model,a=this._chart.ctx,s=e.pointStyle,l=e.rotation,u=e.radius,d=e.x,h=e.y;e.skip||(void 0===t||n.x>=t.left&&1.01*t.right>=n.x&&n.y>=t.top&&1.01*t.bottom>=n.y)&&(a.strokeStyle=e.borderColor||o,a.lineWidth=r.valueOrDefault(e.borderWidth,i.global.elements.point.borderWidth),a.fillStyle=e.backgroundColor||o,r.canvas.drawPoint(a,s,u,d,h,l))}})},{26:26,27:27,46:46}],40:[function(t,e,n){"use strict";var i=t(26),a=t(27);function r(t){return void 0!==t._view.width}function o(t){var e,n,i,a,o=t._view;if(r(t)){var s=o.width/2;e=o.x-s,n=o.x+s,i=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var l=o.height/2;e=Math.min(o.x,o.base),n=Math.max(o.x,o.base),i=o.y-l,a=o.y+l}return{left:e,top:i,right:n,bottom:a}}i._set("global",{elements:{rectangle:{backgroundColor:i.global.defaultColor,borderColor:i.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a,r,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(l.horizontal?(n=l.y-l.height/2,i=l.y+l.height/2,a=(e=l.x)>(t=l.base)?1:-1,r=1,o=l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,a=1,r=(i=l.base)>(n=l.y)?1:-1,o=l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(n-i)),h=(u=u>d?d:u)/2,c=t+("left"!==o?h*a:0),f=e+("right"!==o?-h*a:0),g=n+("top"!==o?h*r:0),m=i+("bottom"!==o?-h*r:0);c!==f&&(n=g,i=m),g!==m&&(t=c,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var p=[[t,i],[t,n],[e,n],[e,i]],v=["bottom","left","top","right"].indexOf(o,0);function y(t){return p[(v+t)%4]}-1===v&&(v=0);var b=y(0);s.moveTo(b[0],b[1]);for(var x=1;x<4;x++)b=y(x),s.lineTo(b[0],b[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=o(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=o(this);return r(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return r(this)?(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 t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,n){"use strict";var i=t(43);n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2-1e-7,i/2-1e-7);t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.arcTo(e+i,n,e+i,n+o,o),t.lineTo(e+i,n+a-o),t.arcTo(e+i,n+a,e+i-o,n+a,o),t.lineTo(e+o,n+a),t.arcTo(e,n+a,e,n+a-o,o),t.lineTo(e,n+o),t.arcTo(e,n,e+o,n,o),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a,r){var o,s,l,u,d,h;if(r=r||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(t.save(),t.translate(i,a),t.rotate(r*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,n,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":h=1/Math.SQRT2*n,t.rect(-h,-h,2*h,2*h);break;case"rectRounded":var c=n/Math.SQRT2,f=Math.SQRT2*n;this.roundedRect(t,-c,-c,f,f,.425*n);break;case"rectRot":h=1/Math.SQRT2*n,t.moveTo(-h,0),t.lineTo(0,h),t.lineTo(h,0),t.lineTo(0,-h),t.closePath();break;case"cross":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0);break;case"crossRot":l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0),l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-n,0),t.lineTo(n,0);break;case"dash":t.moveTo(0,0),t.lineTo(n,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},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,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments)}},{43:43}],43:[function(t,e,n){"use strict";var i,a={noop:function(){},uid:(i=0,function(){return i++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return a.valueOrDefault(a.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,i){var r,o,s;if(a.isArray(t))if(o=t.length,i)for(r=o-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<o;r++)e.call(n,t[r],r);else if(a.isObject(t))for(o=(s=Object.keys(t)).length,r=0;r<o;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,i,r,o;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(o=e[n],(r=t[n])instanceof Array&&o instanceof Array){if(!a.arrayEquals(r,o))return!1}else if(r!==o)return!1;return!0},clone:function(t){if(a.isArray(t))return t.map(a.clone);if(a.isObject(t)){for(var e={},n=Object.keys(t),i=n.length,r=0;r<i;++r)e[n[r]]=a.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,i){var r=e[t],o=n[t];a.isObject(r)&&a.isObject(o)?a.merge(r,o,i):e[t]=a.clone(o)},_mergerIf:function(t,e,n){var i=e[t],r=n[t];a.isObject(i)&&a.isObject(r)?a.mergeIf(i,r):e.hasOwnProperty(t)||(e[t]=a.clone(r))},merge:function(t,e,n){var i,r,o,s,l,u=a.isArray(e)?e:[e],d=u.length;if(!a.isObject(t))return t;for(i=(n=n||{}).merger||a._merger,r=0;r<d;++r)if(a.isObject(e=u[r]))for(l=0,s=(o=Object.keys(e)).length;l<s;++l)i(o[l],t,e,n);return t},mergeIf:function(t,e){return a.merge(t,e,{merger:a._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,i=arguments.length;n<i;++n)a.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)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=a.inherits,t&&a.extend(n.prototype,t),n.__super__=e.prototype,n}};e.exports=a,a.callCallback=a.callback,a.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},a.getValueOrDefault=a.valueOrDefault,a.getValueAtIndexOrDefault=a.valueAtIndexOrDefault},{}],44:[function(t,e,n){"use strict";var i=t(43),a={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,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*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-a.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*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{43:43}],45:[function(t,e,n){"use strict";var i=t(43);e.exports={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 i.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}},resolve:function(t,e,n){var a,r,o;for(a=0,r=t.length;a<r;++a)if(void 0!==(o=t[a])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==n&&i.isArray(o)&&(o=o[n]),void 0!==o))return o}}},{43:43}],46:[function(t,e,n){"use strict";e.exports=t(43),e.exports.easing=t(44),e.exports.canvas=t(42),e.exports.options=t(45)},{42:42,43:43,44:44,45:45}],47:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],48:[function(t,e,n){"use strict";var i=t(46),a=["animationstart","webkitAnimationStart"],r={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function o(t,e){var n=i.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var s=!!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 l(t,e,n){t.addEventListener(e,n,s)}function u(t,e,n){t.removeEventListener(e,n,s)}function d(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,n="from{opacity:0.99}to{opacity:1}";t="@-webkit-keyframes chartjs-render-animation{"+n+"}@keyframes chartjs-render-animation{"+n+"}.chartjs-render-monitor{-webkit-animation:chartjs-render-animation 0.001s;animation:chartjs-render-animation 0.001s;}",e=this._style||document.createElement("style"),this._style||(this._style=e,t="/* Chart.js */\n"+t,e.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(e)),e.appendChild(document.createTextNode(t))},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 n&&n.canvas===t?(function(t,e){var n=t.style,i=t.getAttribute("height"),a=t.getAttribute("width");if(t.$chartjs={initial:{height:i,width:a,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===a||""===a){var r=o(t,"width");void 0!==r&&(t.width=r)}if(null===i||""===i)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=o(t,"height");void 0!==r&&(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];i.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),i.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var o=t.canvas;if("resize"!==e){var s=n.$chartjs||(n.$chartjs={});l(o,e,(s.proxies||(s.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=r[t.type]||t.type,a=i.getRelativePosition(t,e);return d(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var r,o,s,u,h=t.$chartjs||(t.$chartjs={}),c=h.resizer=function(t){var e=document.createElement("div"),n="chartjs-size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var o=function(){e._reset(),t()};return l(a,"scroll",o.bind(a,"expand")),l(r,"scroll",o.bind(r,"shrink")),e}((r=function(){if(h.resizer)return e(d("resize",n))},s=!1,u=[],function(){u=Array.prototype.slice.call(arguments),o=o||this,s||(s=!0,i.requestAnimFrame.call(window,function(){s=!1,r.apply(o,u)}))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),r=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};i.each(a,function(e){l(t,e,r)}),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,function(){if(h.resizer){var e=t.parentNode;e&&e!==c.parentNode&&e.insertBefore(c,e.firstChild),c._reset()}})}(o,n,t)},removeEventListener:function(t,e,n){var r,o,s,l=t.canvas;if("resize"!==e){var d=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];d&&u(l,e,d)}else s=(o=(r=l).$chartjs||{}).resizer,delete o.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(i.each(a,function(e){u(t,e,n)}),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(r),s&&s.parentNode&&s.parentNode.removeChild(s)}},i.addEvent=l,i.removeEvent=u},{46:46}],49:[function(t,e,n){"use strict";var i=t(46),a=t(47),r=t(48);e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r._enabled?r:a)},{46:46,47:47,48:48}],50:[function(t,e,n){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("global",{plugins:{filler:{propagate:!0}}});var o={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e<r&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};function s(t,e,n){var i,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return"origin";if(i=parseFloat(r,10),isFinite(i)&&Math.floor(i)===i)return"-"!==r[0]&&"+"!==r[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function l(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?r=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?r=n.scaleZero:i.getBasePosition?r=i.getBasePosition():i.getBasePixel&&(r=i.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if("number"==typeof r&&isFinite(r))return{x:(e=i.isHorizontal())?r:null,y:e?null:r}}return null}function u(t,e,n){var i,a=t[e].fill,r=[e];if(!n)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;r.push(a),a=i.fill}return!1}function d(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),o[n](t))}function h(t){return t&&!t.skip}function c(t,e,n,i,a){var o;if(i&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<i;++o)r.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(n[a-1].x,n[a-1].y),o=a-1;o>0;--o)r.canvas.lineTo(t,n[o],n[o-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,i,r,o,h=(t.data.datasets||[]).length,c=e.propagate,f=[];for(i=0;i<h;++i)o=null,(r=(n=t.getDatasetMeta(i)).dataset)&&r._model&&r instanceof a.Line&&(o={visible:t.isDatasetVisible(i),fill:s(r,i,h),chart:t,el:r}),n.$filler=o,f.push(o);for(i=0;i<h;++i)(o=f[i])&&(o.fill=u(f,i,c),o.boundary=l(o),o.mapper=d(o))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,o=n.el,s=o._view,l=o._children||[],u=n.mapper,d=s.backgroundColor||i.global.defaultColor;u&&d&&l.length&&(r.canvas.clipArea(a,t.chartArea),function(t,e,n,i,a,r){var o,s,l,u,d,f,g,m=e.length,p=i.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,s=m+!!r;o<s;++o)d=n(u=e[l=o%m]._view,l,i),f=h(u),g=h(d),f&&g?(b=v.push(u),x=y.push(d)):b&&x&&(p?(f&&v.push(u),g&&y.push(d)):(c(t,v,y,b,x),b=x=0,v=[],y=[]));c(t,v,y,b,x),t.closePath(),t.fillStyle=a,t.fill()}(a,l,u,s,d,o._loop),r.canvas.unclipArea(a))}}}},{26:26,41:41,46:46}],52:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(31),s=r.noop;function l(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return r.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:r.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 u=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=r.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:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,o=t.ctx,s=i.global,u=r.valueOrDefault,d=u(n.fontSize,s.defaultFontSize),h=u(n.fontStyle,s.defaultFontStyle),c=u(n.fontFamily,s.defaultFontFamily),f=r.fontString(d,h,c),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=a?10:0):(m.width=a?10:0,m.height=t.maxHeight),a)if(o.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+n.padding:0;o.textAlign="left",o.textBaseline="top",r.each(t.legendItems,function(e,i){var a=l(n,d)+d/2+o.measureText(e.text).width;v[v.length-1]+a+n.padding>=t.width&&(y+=d+n.padding,v[v.length]=t.left),g[i]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+n.padding}),m.height+=y}else{var b=n.padding,x=t.columnWidths=[],_=n.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,e){var i=l(n,d)+d/2+o.measureText(t.text).width;w+M>m.height&&(_+=k+n.padding,x.push(k),k=0,w=0),k=Math.max(k,i),w+=M,g[e]={left:0,top:0,width:i,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=i.global,o=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,h=t.ctx,c=r.valueOrDefault,f=c(n.fontColor,a.defaultFontColor),g=c(n.fontSize,a.defaultFontSize),m=c(n.fontStyle,a.defaultFontStyle),p=c(n.fontFamily,a.defaultFontFamily),v=r.fontString(g,m,p);h.textAlign="left",h.textBaseline="middle",h.lineWidth=.5,h.strokeStyle=f,h.fillStyle=f,h.font=v;var y=l(n,g),b=t.legendHitBoxes,x=t.isHorizontal();d=x?{x:t.left+(s-u[0])/2,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var _=g+n.padding;r.each(t.legendItems,function(i,l){var f=h.measureText(i.text).width,m=y+g/2+f,p=d.x,v=d.y;x?p+m>=s&&(v=d.y+=_,d.line++,p=d.x=t.left+(s-u[d.line])/2):v+_>t.bottom&&(p=d.x=p+t.columnWidths[d.line]+n.padding,v=d.y=t.top+n.padding,d.line++),function(t,n,i){if(!(isNaN(y)||y<=0)){h.save(),h.fillStyle=c(i.fillStyle,a.defaultColor),h.lineCap=c(i.lineCap,o.borderCapStyle),h.lineDashOffset=c(i.lineDashOffset,o.borderDashOffset),h.lineJoin=c(i.lineJoin,o.borderJoinStyle),h.lineWidth=c(i.lineWidth,o.borderWidth),h.strokeStyle=c(i.strokeStyle,a.defaultColor);var s=0===c(i.lineWidth,o.borderWidth);if(h.setLineDash&&h.setLineDash(c(i.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2;r.canvas.drawPoint(h,i.pointStyle,l,t+u,n+u)}else s||h.strokeRect(t,n,y,g),h.fillRect(t,n,y,g);h.restore()}}(p,v,i),b[l].left=p,b[l].top=v,function(t,e,n,i){var a=g/2,r=y+a+t,o=e+a;h.fillText(n.text,r,o),n.hidden&&(h.beginPath(),h.lineWidth=2,h.moveTo(r,o),h.lineTo(r+i,o),h.stroke())}(p,v,i,f),x?d.x+=m+n.padding:d.y+=_})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var n=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.legend=n}e.exports={id:"legend",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(r.mergeIf(e,i.global.legend),n?(o.configure(t,n,e),n.options=e):d(t,e)):n&&(o.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(31),s=r.noop;i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var l=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.display,a=(0,r.valueOrDefault)(e.fontSize,i.global.defaultFontSize),o=t.minSize,s=r.isArray(e.text)?e.text.length:1,l=r.options.toLineHeight(e.lineHeight,a),u=n?s*l+2*e.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=u):(o.width=u,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=r.valueOrDefault,a=t.options,o=i.global;if(a.display){var s,l,u,d=n(a.fontSize,o.defaultFontSize),h=n(a.fontStyle,o.defaultFontStyle),c=n(a.fontFamily,o.defaultFontFamily),f=r.fontString(d,h,c),g=r.options.toLineHeight(a.lineHeight,d),m=g/2+a.padding,p=0,v=t.top,y=t.left,b=t.bottom,x=t.right;e.fillStyle=n(a.fontColor,o.defaultFontColor),e.font=f,t.isHorizontal()?(l=y+(x-y)/2,u=v+m,s=x-y):(l="left"===a.position?y+m:x-m,u=v+(b-v)/2,s=b-v,p=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(p),e.textAlign="center",e.textBaseline="middle";var _=a.text;if(r.isArray(_))for(var k=0,w=0;w<_.length;++w)e.fillText(_[w],0,k,s),k+=g;else e.fillText(_,0,0,s);e.restore()}}});function u(t,e){var n=new l({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.titleBlock=n}e.exports={id:"title",_element:l,beforeInit:function(t){var e=t.options.title;e&&u(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(r.mergeIf(e,i.global.title),n?(o.configure(t,n,e),n.options=e):u(t,e)):n&&(o.removeBox(t,n),delete t.titleBlock)}}},{26:26,27:27,31:31,46:46}],54:[function(t,e,n){"use strict";var i=t(33),a=t(34);e.exports=function(){var t=i.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,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,r=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(null!=t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var o=i.getLabels().indexOf(t=n||t);e=-1!==o?o:e}if(i.isHorizontal()){var s=i.width/r,l=s*(e-i.minIndex);return a&&(l+=s/2),i.left+Math.round(l)}var u=i.height/r,d=u*(e-i.minIndex);return a&&(d+=u/2),i.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),r=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=r/2),(t<=0?0:Math.round(t/r))+e.minIndex},getBasePixel:function(){return this.bottom}});a.registerScaleType("category",t,{position:"bottom"})}},{33:33,34:34}],55:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(34),o=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,i=n.data.datasets,r=t.isHorizontal();function o(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&&a.each(i,function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}}),e.stacked||s){var l={};a.each(i,function(i,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,h=l[u].negativeValues;n.isDatasetVisible(r)&&o(s)&&a.each(i.data,function(n,i){var a=+t.getRightValue(n);isNaN(a)||s.data[i].hidden||(d[i]=d[i]||0,h[i]=h[i]||0,e.relativePoints?d[i]=100:a<0?h[i]+=a:d[i]+=a)})}),a.each(l,function(e){var n=e.positiveValues.concat(e.negativeValues),i=a.min(n),r=a.max(n);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?r:Math.max(t.max,r)})}else a.each(i,function(e,i){var r=n.getDatasetMeta(i);n.isDatasetVisible(i)&&o(r)&&a.each(e.data,function(e,n){var i=+t.getRightValue(e);isNaN(i)||r.data[n].hidden||(null===t.min?t.min=i:i<t.min&&(t.min=i),null===t.max?t.max=i:i>t.max&&(t.max=i))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=a.valueOrDefault(e.fontSize,i.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},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,i=+e.getRightValue(t),a=e.end-n;return e.isHorizontal()?e.left+e.width/a*(i-n):e.bottom-e.height/a*(i-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])}});r.registerScaleType("linear",n,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,n){"use strict";var i=t(46),a=t(33);e.exports=function(t){var e=i.noop;t.LinearScaleBase=a.extend({getRightValue:function(t){return"string"==typeof t?+t:a.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.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,o=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!==o&&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:e,handleDirectionalChanges:e,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:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,o=[];if(t.stepSize&&t.stepSize>0)r=t.stepSize;else{var s=i.niceNum(e.max-e.min,!1);r=i.niceNum(s/(t.maxTicks-1),!0),void 0!==(a=t.precision)&&(n=Math.pow(10,a),r=Math.ceil(r*n)/n)}var l=Math.floor(e.min/r)*r,u=Math.ceil(e.max/r)*r;i.isNullOrUndef(t.min)||i.isNullOrUndef(t.max)||!t.stepSize||i.almostWhole((t.max-t.min)/t.stepSize,r/1e3)&&(l=t.min,u=t.max);var d=(u-l)/r;d=i.almostEquals(d,Math.round(d),r/1e3)?Math.round(d):Math.ceil(d),a=1,r<1&&(a=Math.pow(10,1-Math.floor(i.log10(r))),l=Math.round(l*a)/a,u=Math.round(u*a)/a),o.push(void 0!==t.min?t.min:l);for(var h=1;h<d;++h)o.push(Math.round((l+h*r)*a)/a);return o.push(void 0!==t.max?t.max:u),o}(a,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.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),a.prototype.convertTicksToLabels.call(t)}})}},{33:33,46:46}],57:[function(t,e,n){"use strict";var i=t(46),a=t(33),r=t(34),o=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.logarithmic}},n=a.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function o(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&&i.each(a,function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}}),e.stacked||s){var l={};i.each(a,function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&o(s)&&(void 0===l[u]&&(l[u]=[]),i.each(a.data,function(e,n){var i=l[u],a=+t.getRightValue(e);isNaN(a)||s.data[n].hidden||a<0||(i[n]=i[n]||0,i[n]+=a)}))}),i.each(l,function(e){if(e.length>0){var n=i.min(e),a=i.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 i.each(a,function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&o(r)&&i.each(e.data,function(e,n){var i=+t.getRightValue(e);isNaN(i)||r.data[n].hidden||i<0||(null===t.min?t.min=i:i<t.min&&(t.min=i),null===t.max?t.max=i:i>t.max&&(t.max=i),0!==i&&(null===t.minNotZero||i<t.minNotZero)&&(t.minNotZero=i))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,n=i.valueOrDefault;t.min=n(e.min,t.min),t.max=n(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(i.log10(t.min))-1),t.max=Math.pow(10,Math.floor(i.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(i.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(i.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(i.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a=t.ticks=function(t,e){var n,a,r=[],o=i.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),l=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(n=Math.floor(i.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(s),s=a*Math.pow(10,n)):(n=Math.floor(i.log10(s)),a=Math.floor(s/Math.pow(10,n)));var d=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(s),10==++a&&(a=1,d=++n>=0?1:d),s=Math.round(a*Math.pow(10,n)*d)/d}while(n<l||n===l&&a<u);var h=o(t.max,s);return r.push(h),r}({min:e.min,max:e.max},t);t.max=i.max(a),t.min=i.min(a),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),a.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(i.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var n,a,r,o,s,l=this,u=l.options.ticks.reverse,d=i.log10,h=l._getFirstTickValue(l.minNotZero),c=0;return e=+l.getRightValue(e),u?(r=l.end,o=l.start,s=-1):(r=l.start,o=l.end,s=1),l.isHorizontal()?(n=l.width,a=u?l.right:l.left):(n=l.height,s*=-1,a=u?l.top:l.bottom),e!==r&&(0===r&&(n-=c=i.getValueOrDefault(l.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=h),0!==e&&(c+=n/(d(o)-d(r))*(d(e)-d(r))),a+=s*c),a},getValueForPixel:function(e){var n,a,r,o,s=this,l=s.options.ticks.reverse,u=i.log10,d=s._getFirstTickValue(s.minNotZero);if(l?(a=s.end,r=s.start):(a=s.start,r=s.end),s.isHorizontal()?(n=s.width,o=l?s.right-e:e-s.left):(n=s.height,o=l?e-s.top:s.bottom-e),o!==a){if(0===a){var h=i.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=h,n-=h,a=d}o*=u(r)-u(a),o/=n,o=Math.pow(10,u(a)+o)}return o}});r.registerScaleType("logarithmic",n,e)}},{33:33,34:34,35:35,46:46}],58:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(34),o=t(35);e.exports=function(t){var e=i.global,n={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function s(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function l(t){var n=t.options.pointLabels,i=a.valueOrDefault(n.fontSize,e.defaultFontSize),r=a.valueOrDefault(n.fontStyle,e.defaultFontStyle),o=a.valueOrDefault(n.fontFamily,e.defaultFontFamily);return{size:i,style:r,family:o,font:a.fontString(i,r,o)}}function u(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function h(t,e,n,i){if(a.isArray(e))for(var r=n.y,o=1.5*i,s=0;s<e.length;++s)t.fillText(e[s],n.x,r),r+=o;else t.fillText(e,n.x,n.y)}function c(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){return a.isNumber(t)?t:0}var g=t.LinearScaleBase.extend({setDimensions:function(){var t=this,n=t.options,i=n.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var r=a.min([t.height,t.width]),o=a.valueOrDefault(i.fontSize,e.defaultFontSize);t.drawingArea=n.display?r/2-(o/2+i.backdropPaddingY):r/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(r,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);a.each(r.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||s.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,n=a.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*n)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t;this.options.pointLabels.display?function(t){var e,n,i,r=l(t),o=Math.min(t.height/2,t.width/2),d={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=r.font,t._pointLabelSizes=[];var c,f,g,m=s(t);for(e=0;e<m;e++){i=t.getPointPosition(e,o),c=t.ctx,f=r.size,n=a.isArray(g=t.pointLabels[e]||"")?{w:a.longestText(c,c.font,g),h:g.length*f+1.5*(g.length-1)*f}:{w:c.measureText(g).width,h:f},t._pointLabelSizes[e]=n;var p=t.getIndexAngle(e),v=a.toDegrees(p)%360,y=u(v,i.x,n.w,0,180),b=u(v,i.y,n.h,90,270);y.start<d.l&&(d.l=y.start,h.l=p),y.end>d.r&&(d.r=y.end,h.r=p),b.start<d.t&&(d.t=b.start,h.t=p),b.end>d.b&&(d.b=b.end,h.b=p)}t.setReductions(o,d,h)}(this):(t=Math.min(this.height/2,this.width/2),this.drawingArea=Math.round(t),this.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var i=e.l/Math.sin(n.l),a=Math.max(e.r-this.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);i=f(i),a=f(a),r=f(r),o=f(o),this.drawingArea=Math.min(Math.round(t-(i+a)/2),Math.round(t-(r+o)/2)),this.setCenterPoint(i,a,r,o)},setCenterPoint:function(t,e,n,i){var a=this,r=n+a.drawingArea,o=a.height-i-a.drawingArea;a.xCenter=Math.round((t+a.drawingArea+(a.width-e-a.drawingArea))/2+a.left),a.yCenter=Math.round((r+o)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/s(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.round(Math.cos(n)*e)+this.xCenter,y:Math.round(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,n=t.options,i=n.gridLines,r=n.ticks,o=a.valueOrDefault;if(n.display){var u=t.ctx,f=this.getIndexAngle(0),g=o(r.fontSize,e.defaultFontSize),m=o(r.fontStyle,e.defaultFontStyle),p=o(r.fontFamily,e.defaultFontFamily),v=a.fontString(g,m,p);a.each(t.ticks,function(n,l){if(l>0||r.reverse){var d=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]);if(i.display&&0!==l&&function(t,e,n,i){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(e.color,i-1),r.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,i-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),r.closePath(),r.stroke();else{var o=s(t);if(0===o)return;r.beginPath();var l=t.getPointPosition(0,n);r.moveTo(l.x,l.y);for(var u=1;u<o;u++)l=t.getPointPosition(u,n),r.lineTo(l.x,l.y);r.closePath(),r.stroke()}}(t,i,d,l),r.display){var h=o(r.fontColor,e.defaultFontColor);if(u.font=v,u.save(),u.translate(t.xCenter,t.yCenter),u.rotate(f),r.showLabelBackdrop){var c=u.measureText(n).width;u.fillStyle=r.backdropColor,u.fillRect(-c/2-r.backdropPaddingX,-d-g/2-r.backdropPaddingY,c+2*r.backdropPaddingX,g+2*r.backdropPaddingY)}u.textAlign="center",u.textBaseline="middle",u.fillStyle=h,u.fillText(n,0,-d),u.restore()}}}),(n.angleLines.display||n.pointLabels.display)&&function(t){var n=t.ctx,i=t.options,r=i.angleLines,o=i.pointLabels;n.lineWidth=r.lineWidth,n.strokeStyle=r.color;var u=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),f=l(t);n.textBaseline="top";for(var g=s(t)-1;g>=0;g--){if(r.display){var m=t.getPointPosition(g,u);n.beginPath(),n.moveTo(t.xCenter,t.yCenter),n.lineTo(m.x,m.y),n.stroke(),n.closePath()}if(o.display){var p=t.getPointPosition(g,u+5),v=a.valueAtIndexOrDefault(o.fontColor,g,e.defaultFontColor);n.font=f.font,n.fillStyle=v;var y=t.getIndexAngle(g),b=a.toDegrees(y);n.textAlign=d(b),c(b,t._pointLabelSizes[g],p),h(n,t.pointLabels[g]||"",p,f.size)}}}(t)}}});r.registerScaleType("radialLinear",g,n)}},{26:26,34:34,35:35,46:46}],59:[function(t,e,n){"use strict";var i=t(6);i="function"==typeof i?i:window.moment;var a=t(26),r=t(46),o=t(33),s=t(34),l=Number.MIN_SAFE_INTEGER||-9007199254740991,u=Number.MAX_SAFE_INTEGER||9007199254740991,d={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}},h=Object.keys(d);function c(t,e){return t-e}function f(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,r.push(i));return r}function g(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(r=t[i=o+s>>1],!(a=t[i-1]||null))return{lo:null,hi:r};if(r[e]<n)o=i+1;else{if(!(a[e]>n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e];return r[i]+(o[i]-r[i])*(s?(n-r[e])/s:0)}function m(t,e){var n=e.parser,a=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof a?i(t,a):(t instanceof i||(t=i(t)),t.isValid()?t:"function"==typeof a?a(t):t)}function p(t,e){if(r.isNullOrUndef(t))return null;var n=e.options.time,i=m(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function v(t){for(var e=h.indexOf(t)+1,n=h.length;e<n;++e)if(d[h[e]].common)return h[e]}e.exports=function(){var t=o.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),o.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),o.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),o.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,o,s,d=this,h=d.chart,g=d.options.time,m=g.unit||"day",v=u,y=l,b=[],x=[],_=[];for(t=0,n=h.data.labels.length;t<n;++t)_.push(p(h.data.labels[t],d));for(t=0,n=(h.data.datasets||[]).length;t<n;++t)if(h.isDatasetVisible(t))if(r.isObject((o=h.data.datasets[t].data)[0]))for(x[t]=[],e=0,a=o.length;e<a;++e)s=p(o[e],d),b.push(s),x[t][e]=s;else b.push.apply(b,_),x[t]=_.slice(0);else x[t]=[];_.length&&(_=f(_).sort(c),v=Math.min(v,_[0]),y=Math.max(y,_[_.length-1])),b.length&&(b=f(b).sort(c),v=Math.min(v,b[0]),y=Math.max(y,b[b.length-1])),v=p(g.min,d)||v,y=p(g.max,d)||y,v=v===u?+i().startOf(m):v,y=y===l?+i().endOf(m)+1:y,d.min=Math.min(v,y),d.max=Math.max(v+1,y),d._horizontal=d.isHorizontal(),d._table=[],d._timestamps={data:b,datasets:x,labels:_}},buildTicks:function(){var t,e,n,a=this,o=a.min,s=a.max,l=a.options,c=l.time,f=[],y=[];switch(l.ticks.source){case"data":f=a._timestamps.data;break;case"labels":f=a._timestamps.labels;break;case"auto":default:f=function(t,e,n,a){var o,s=a.time,l=s.unit||function(t,e,n,i){var a,r,o=h.length;for(a=h.indexOf(s.minUnit);a<o-1;++a)if((r=d[h[a]]).common&&Math.ceil((n-e)/((r.steps?r.steps[r.steps.length-1]:u)*r.size))<=i)return h[a];return h[o-1]}(0,t,e,n),c=v(l),f=r.valueOrDefault(s.stepSize,s.unitStepSize),g="week"===l&&s.isoWeekday,m=a.ticks.major.enabled,p=d[l],y=i(t),b=i(e),x=[];for(f||(f=function(t,e,n,i){var a,r,o,s=e-t,u=d[l],h=u.size,c=u.steps;if(!c)return Math.ceil(s/(i*h));for(a=0,r=c.length;a<r&&(o=c[a],!(Math.ceil(s/(h*o))<=i));++a);return o}(t,e,0,n)),g&&(y=y.isoWeekday(g),b=b.isoWeekday(g)),y=y.startOf(g?"day":l),(b=b.startOf(g?"day":l))<e&&b.add(1,l),o=i(y),m&&c&&!g&&!s.round&&(o.startOf(c),o.add(~~((y-o)/(p.size*f))*f,l));o<b;o.add(f,l))x.push(+o);return x.push(+o),x}(o,s,a.getLabelCapacity(o),l)}for("ticks"===l.bounds&&f.length&&(o=f[0],s=f[f.length-1]),o=p(c.min,a)||o,s=p(c.max,a)||s,t=0,e=f.length;t<e;++t)(n=f[t])>=o&&n<=s&&y.push(n);return a.min=o,a.max=s,a._unit=c.unit||function(t,e,n,r){var o,s,l=i.duration(i(a.max).diff(i(n)));for(o=h.length-1;o>=h.indexOf(e);o--)if(d[s=h[o]].common&&l.as(s)>=t.length)return s;return h[e?h.indexOf(e):0]}(y,c.minUnit,a.min),a._majorUnit=v(a._unit),a._table=function(t,e,n,i){if("linear"===l.distribution||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,r,o,s,u,d=[],h=[e];for(a=0,r=t.length;a<r;++a)(s=t[a])>e&&s<n&&h.push(s);for(h.push(n),a=0,r=h.length;a<r;++a)u=h[a+1],s=h[a],void 0!==(o=h[a-1])&&void 0!==u&&Math.round((u+o)/2)===s||d.push({time:s,pos:a/(r-1)});return d}(a._timestamps.data,o,s),a._offsets=function(t,e,n,i,a){var r,o=0,s=0;return a.offset&&e.length&&(a.time.min||(r=e[0],o=(g(t,"time",e.length>1?e[1]:i,"pos")-g(t,"time",r,"pos"))/2),a.time.max||(r=e.length>1?e[e.length-2]:n,s=(g(t,"time",e[e.length-1],"pos")-g(t,"time",r,"pos"))/2)),{left:o,right:s}}(a._table,y,o,s,l),a._labelFormat=function(t,e){var n,i,a,r=t.length;for(n=0;n<r;n++){if(0!==(i=m(t[n],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===i.second()&&0===i.minute()&&0===i.hour()||(a=!0)}return a?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(a._timestamps.data,c),function(t,e){var n,a,r,o,s=[];for(n=0,a=t.length;n<a;++n)r=t[n],o=!!e&&r===+i(r).startOf(e),s.push({value:r,major:o});return s}(y,a._majorUnit)},getLabelForIndex:function(t,e){var n=this.chart.data,i=this.options.time,a=n.labels&&t<n.labels.length?n.labels[t]:"",o=n.datasets[e].data[t];return r.isObject(o)&&(a=this.getRightValue(o)),i.tooltipFormat?m(a,i).format(i.tooltipFormat):"string"==typeof a?a:m(a,i).format(this._labelFormat)},tickFormatFunction:function(t,e,n,i){var a=this.options,o=t.valueOf(),s=a.time.displayFormats,l=s[this._unit],u=this._majorUnit,d=s[u],h=t.clone().startOf(u).valueOf(),c=a.ticks.major,f=c.enabled&&u&&d&&o===h,g=t.format(i||(f?d:l)),m=f?c:a.ticks.minor,p=r.valueOrDefault(m.callback,m.userCallback);return p?p(g,e,n):g},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(i(t[e].value),e,t));return a},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=g(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=null;if(void 0!==e&&void 0!==n&&(i=this._timestamps.datasets[n][e]),null===i&&(i=p(t,this)),null!==i)return this.getPixelForOffset(i)},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=g(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,"time");return i(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,i=r.toRadians(e.maxRotation),o=Math.cos(i),s=Math.sin(i);return n*o+r.valueOrDefault(e.fontSize,a.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,a=e.tickFormatFunction(i(t),0,[],n),r=e.getLabelWidth(a),o=e.isHorizontal()?e.width:e.height,s=Math.floor(o/r);return s>0?s:1}});s.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{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"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{26:26,33:33,34:34,46:46,6:6}]},{},[7])(7)});
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.f5317b15474518dffebc.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/en-US/styles.f5317b15474518dffebc.css
new file mode 100644 (file)
index 0000000..c33da46
--- /dev/null
@@ -0,0 +1,27 @@
+.toast-center-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'/%3E%3C/svg%3E")}.toast-error{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'/%3E%3C/svg%3E")}.toast-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3E%3C/svg%3E")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512' width='576' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'/%3E%3C/svg%3E");background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width:240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(glyphicons-halflings-regular.f4769f9bdb7466be6508.eot);src:url(glyphicons-halflings-regular.f4769f9bdb7466be6508.eot?#iefix) format("embedded-opentype"),url(glyphicons-halflings-regular.448c34a56d699c29117a.woff2) format("woff2"),url(glyphicons-halflings-regular.fa2772327f55d8198301.woff) format("woff"),url(glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf) format("truetype"),url(glyphicons-halflings-regular.89889688147bd7575d63.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:.2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{box-sizing:content-box;height:0;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{overflow:auto;display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{border-collapse:collapse;border-spacing:0;background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px;outline:0}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}.navbar-toggle{display:none}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}.navbar-text{float:left;margin-right:15px;margin-left:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:2s linear infinite progress-bar-stripes;animation:2s linear infinite progress-bar-stripes}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;text-align:center;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:left .6s ease-in-out;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*!
+Fork Awesome 1.1.6
+License - https://forkaweso.me/Fork-Awesome/license
+
+Copyright 2018 Dave Gandy & Fork Awesome
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.1.6);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.1.6) format('embedded-opentype'),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.1.6) format('woff2'),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.1.6) format('woff'),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.1.6) format('truetype'),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.1.6#forkawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-asterisk:before{content:"\f069"}.fa-bell-o:before{content:"\f0f3"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-bell:before{content:"\f0a2"}.fa-cutlery:before,.fa-utensils:before{content:"\f0f5"}.fa-gbp:before,.fa-pound:before{content:"\f154"}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:"\f161"}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f1b1"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-cc:before,.fa-closed-captioning:before{content:"\f20a"}.fa-diamond:before,.fa-gem:before{content:"\f219"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-gnupg:before{content:"\f30d"}.fa-php:before{content:"\f30e"}.fa-ffmpeg:before{content:"\f30f"}.fa-joplin:before{content:"\f310"}.fa-syncthing:before{content:"\f311"}.fa-inkscape:before{content:"\f312"}.fa-matrix-org:before{content:"\f313"}.fa-pixelfed:before{content:"\f314"}.fa-bootstrap:before{content:"\f315"}.fa-dev-to:before{content:"\f316"}.fa-hashnode:before{content:"\f317"}.fa-jirafeau:before{content:"\f318"}.fa-emby:before{content:"\f319"}.fa-wikidata:before{content:"\f31a"}.fa-gimp:before{content:"\f31b"}.fa-c:before{content:"\f31c"}.fa-digitalocean:before{content:"\f31d"}.fa-att:before{content:"\f31e"}.fa-gitea:before{content:"\f31f"}.fa-file-epub:before{content:"\f321"}.fa-python:before{content:"\f322"}.fa-archlinux:before{content:"\f323"}.fa-pleroma:before{content:"\f324"}.fa-unsplash:before{content:"\f325"}.fa-hackster:before{content:"\f326"}.fa-spell-check:before{content:"\f327"}.fa-moon:before{content:"\f328"}.fa-sun:before{content:"\f329"}.fa-f-droid:before{content:"\f32a"}.fa-biometric:before{content:"\f32b"}.checkbox{padding-left:20px}.checkbox label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px}.checkbox label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{display:inline-block;position:absolute;width:16px;height:16px;left:0;top:0;margin-left:-20px;padding-left:3px;padding-top:1px;font-size:11px;color:#555}.checkbox input[type=checkbox],.checkbox input[type=radio]{opacity:0;z-index:1}.checkbox input[type=checkbox]:focus+label::before,.checkbox input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.checkbox input[type=checkbox]:checked+label::after,.checkbox input[type=radio]:checked+label::after{font-family:FontAwesome;content:"\f00c"}.checkbox input[type=checkbox]:indeterminate+label::after,.checkbox input[type=radio]:indeterminate+label::after{display:block;content:"";width:10px;height:3px;background-color:#555;border-radius:2px;margin-left:-16.5px;margin-top:7px}.checkbox input[type=checkbox]:disabled+label,.checkbox input[type=radio]:disabled+label{opacity:.65}.checkbox input[type=checkbox]:disabled+label::before,.checkbox input[type=radio]:disabled+label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.checkbox.checkbox-inline{margin-top:0}.checkbox-primary input[type=checkbox]:checked+label::before,.checkbox-primary input[type=radio]:checked+label::before{background-color:#337ab7;border-color:#337ab7}.checkbox-primary input[type=checkbox]:checked+label::after,.checkbox-primary input[type=radio]:checked+label::after{color:#fff}.checkbox-danger input[type=checkbox]:checked+label::before,.checkbox-danger input[type=radio]:checked+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:checked+label::after,.checkbox-danger input[type=radio]:checked+label::after{color:#fff}.checkbox-info input[type=checkbox]:checked+label::before,.checkbox-info input[type=radio]:checked+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:checked+label::after,.checkbox-info input[type=radio]:checked+label::after{color:#fff}.checkbox-warning input[type=checkbox]:checked+label::before,.checkbox-warning input[type=radio]:checked+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:checked+label::after,.checkbox-warning input[type=radio]:checked+label::after{color:#fff}.checkbox-success input[type=checkbox]:checked+label::before,.checkbox-success input[type=radio]:checked+label::before{background-color:#5cb85c;border-color:#5cb85c}.checkbox-success input[type=checkbox]:checked+label::after,.checkbox-success input[type=radio]:checked+label::after{color:#fff}.checkbox-primary input[type=checkbox]:indeterminate+label::before,.checkbox-primary input[type=radio]:indeterminate+label::before{background-color:#337ab7;border-color:#337ab7}.checkbox-primary input[type=checkbox]:indeterminate+label::after,.checkbox-primary input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-danger input[type=checkbox]:indeterminate+label::before,.checkbox-danger input[type=radio]:indeterminate+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:indeterminate+label::after,.checkbox-danger input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-info input[type=checkbox]:indeterminate+label::before,.checkbox-info input[type=radio]:indeterminate+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:indeterminate+label::after,.checkbox-info input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-warning input[type=checkbox]:indeterminate+label::before,.checkbox-warning input[type=radio]:indeterminate+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:indeterminate+label::after,.checkbox-warning input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-success input[type=checkbox]:indeterminate+label::before,.checkbox-success input[type=radio]:indeterminate+label::before{background-color:#5cb85c;border-color:#5cb85c}.checkbox-success input[type=checkbox]:indeterminate+label::after,.checkbox-success input[type=radio]:indeterminate+label::after{background-color:#fff}.radio{padding-left:20px}.radio label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px}.radio label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.radio label::after{display:inline-block;position:absolute;content:" ";width:11px;height:11px;left:3px;top:3px;margin-left:-20px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);transform:scale(0,0);-webkit-transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33),-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33)}.radio input[type=radio]{opacity:0;z-index:1}.radio input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.radio input[type=radio]:checked+label::after{-webkit-transform:scale(1,1);transform:scale(1,1)}.radio input[type=radio]:disabled+label{opacity:.65}.radio input[type=radio]:disabled+label::before{cursor:not-allowed}.radio.radio-inline{margin-top:0}.radio-primary input[type=radio]+label::after{background-color:#337ab7}.radio-primary input[type=radio]:checked+label::before{border-color:#337ab7}.radio-primary input[type=radio]:checked+label::after{background-color:#337ab7}.radio-danger input[type=radio]+label::after{background-color:#d9534f}.radio-danger input[type=radio]:checked+label::before{border-color:#d9534f}.radio-danger input[type=radio]:checked+label::after{background-color:#d9534f}.radio-info input[type=radio]+label::after{background-color:#5bc0de}.radio-info input[type=radio]:checked+label::before{border-color:#5bc0de}.radio-info input[type=radio]:checked+label::after{background-color:#5bc0de}.radio-warning input[type=radio]+label::after{background-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::before{border-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::after{background-color:#f0ad4e}.radio-success input[type=radio]+label::after{background-color:#5cb85c}.radio-success input[type=radio]:checked+label::before{border-color:#5cb85c}.radio-success input[type=radio]:checked+label::after{background-color:#5cb85c}input[type=checkbox].styled:checked+label:after,input[type=radio].styled:checked+label:after{font-family:FontAwesome;content:"\f00c"}input[type=checkbox] .styled:checked+label::after,input[type=checkbox] .styled:checked+label::before,input[type=radio] .styled:checked+label::after,input[type=radio] .styled:checked+label::before{color:#fff}.bs-datepicker{display:-webkit-box;display:flex;-webkit-box-align:stretch;align-items:stretch;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;background:#fff;box-shadow:0 0 10px 0 #aaa;position:relative;z-index:1}.bs-datepicker:after{clear:both;content:'';display:block}.bs-datepicker bs-day-picker{float:left}.bs-datepicker button:active,.bs-datepicker button:focus,.bs-datepicker button:hover,.bs-datepicker input:active,.bs-datepicker input:focus,.bs-datepicker input:hover,.bs-datepicker-btns button:active,.bs-datepicker-btns button:focus,.bs-datepicker-btns button:hover,.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:focus{outline:0}.bs-datepicker-head{min-width:270px;height:50px;padding:10px;border-radius:3px 3px 0 0;text-align:justify}.bs-datepicker-head:after{content:"";display:inline-block;vertical-align:top;width:100%}.bs-datepicker-head button{display:inline-block;vertical-align:top;padding:0;height:30px;line-height:30px;border:0;background:0 0;text-align:center;cursor:pointer;color:#fff;-webkit-transition:.3s;transition:.3s}.bs-datepicker-head button[disabled],.bs-datepicker-head button[disabled]:active,.bs-datepicker-head button[disabled]:hover{background:rgba(221,221,221,.3);color:#f5f5f5;cursor:not-allowed}.bs-datepicker-head button.next,.bs-datepicker-head button.previous{border-radius:50%;width:30px;height:30px}.bs-datepicker-head button.next span,.bs-datepicker-head button.previous span{font-size:28px;line-height:1;display:inline-block;position:relative;height:100%;width:100%;border-radius:50%}.bs-datepicker-head button.current{border-radius:15px;max-width:155px;padding:0 13px}.bs-datepicker-head button:hover{background-color:rgba(0,0,0,.1)}.bs-datepicker-head button:active{background-color:rgba(0,0,0,.2)}.bs-datepicker-body{padding:10px;border-radius:0 0 3px 3px;min-height:232px;min-width:278px;border:1px solid #e9edf0}.bs-datepicker-body .days.weeks{position:relative;z-index:1}.bs-datepicker-body table{width:100%;border-collapse:separate;border-spacing:0}.bs-datepicker-body table th{font-size:13px;color:#9aaec1;font-weight:400;text-align:center}.bs-datepicker-body table td{color:#54708b;text-align:center;position:relative;padding:0}.bs-datepicker-body table td span{display:block;margin:0 auto;font-size:13px;border-radius:50%;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker-body table td:not(.disabled):not(.week) span:not(.disabled):not(.is-other-month){cursor:pointer}.bs-datepicker-body table td span.is-highlighted:not(.disabled):not(.selected),.bs-datepicker-body table td.is-highlighted:not(.disabled):not(.selected) span{background-color:#e9edf0;-webkit-transition:none;transition:0s}.bs-datepicker-body table td span.is-active-other-month:not(.disabled):not(.selected),.bs-datepicker-body table td.is-active-other-month:not(.disabled):not(.selected) span{background-color:#e9edf0;-webkit-transition:none;transition:0s;cursor:pointer}.bs-datepicker-body table td span.disabled,.bs-datepicker-body table td.disabled span{color:#9aaec1}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff}.bs-datepicker-body table td span.is-other-month,.bs-datepicker-body table td.is-other-month span{color:rgba(0,0,0,.25)}.bs-datepicker-body table td.active{position:relative}.bs-datepicker-body table td.active.select-start:before{left:35%}.bs-datepicker-body table td.active.select-end:before{left:-85%}.bs-datepicker-body table td span.active.select-end:after,.bs-datepicker-body table td span.active.select-start:after,.bs-datepicker-body table td.active.select-end span:after,.bs-datepicker-body table td.active.select-start span:after{content:"";display:block;position:absolute;z-index:-1;width:100%;height:100%;-webkit-transition:.3s;transition:.3s;top:0;border-radius:50%}.bs-datepicker-body table td span:before,.bs-datepicker-body table td:before{content:"";display:block;position:absolute;z-index:-1;top:6px;bottom:6px;left:-2px;right:-2px;box-sizing:content-box;background:0 0}.bs-datepicker-body table td.active.select-start+td.active:before{left:-20%}.bs-datepicker-body table td:last-child.active:before{border-radius:0 3px 3px 0;width:125%;left:-25%}.bs-datepicker-body table td span[class*=select-],.bs-datepicker-body table td[class*=select-] span{border-radius:50%;color:#fff}.bs-datepicker-body table.days span.active:not(.select-start):before,.bs-datepicker-body table.days span.in-range:not(.select-start):before,.bs-datepicker-body table.days td.active:not(.select-start):before,.bs-datepicker-body table.days td.in-range:not(.select-start):before{background:#e9edf0}.bs-datepicker-body table.days span{width:32px;height:32px;line-height:32px}.bs-datepicker-body table.days span.select-start{z-index:2}.bs-datepicker-body table.days span.in-range.select-end:before,.bs-datepicker-body table.days span.is-highlighted.in-range:before{background:0 0;right:0;left:0}.bs-datepicker-body table.days td.active+td.is-highlighted:before,.bs-datepicker-body table.days td.active+td.select-end:before,.bs-datepicker-body table.days td.in-range+td.is-highlighted:before,.bs-datepicker-body table.days td.in-range+td.select-end:before,.bs-datepicker-body table.days td.select-start+td.is-highlighted:before,.bs-datepicker-body table.days td.select-start+td.select-end:before{background:#e9edf0;width:100%}.bs-datepicker-body table.weeks tr td:nth-child(2).active:before{border-radius:3px 0 0 3px;left:0;width:100%}.bs-datepicker-body table:not(.weeks) tr td:first-child:before{border-radius:3px 0 0 3px}.bs-datepicker-body table.years td span{width:46px;height:46px;line-height:45px;margin:0 auto}.bs-datepicker-body table.years tr:not(:last-child) td span{margin-bottom:8px}.bs-datepicker-body table.months td{height:52px}.bs-datepicker-body table.months td span{padding:6px;border-radius:15px}.bs-datepicker .current-timedate{color:#54708b;font-size:15px;text-align:center;height:30px;line-height:30px;border-radius:20px;border:1px solid #e9edf0;margin-bottom:10px;cursor:pointer;text-transform:uppercase;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker .current-timedate span:not(:empty):before{content:"";width:15px;height:16px;display:inline-block;margin-right:4px;vertical-align:text-bottom;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAABMklEQVQoU9VTwW3CQBCcOUgBtEBKSAukAnBKME+wFCAlYIhk8sQlxFABtJAScAsuAPBEewYcxCP8ouxrPDsza61uiVN1o6RNHD4htSCmq49RfO71BvMJqBBkITRf1kmUW49nQRC9h1I5AZlBClaL8aP1fKgOOxCx8aSLs+Q19eZuNO8QmPqJRtDFguy7OAcDbJPs+/BKVPDIPrvD2ZJgWAmVe7O0rI0Vqs1seyWUXpuJoppYCa5L+U++NpNPkr5OE2oMdARsb3gykJT5ydZcL8Z9Ww60nxg2LhjON9li9OwXZzo+xLbp3nC2s9CL2RrueGyVrgwNm8HpsCzZ9EEW6kqXlo1GQe03FzP/7W8Hl0dBtu7Bf7zt6mIwvX1RvzDCm7+q3mAW0Dl/GPdUCeXrZLT9BrDrGkm4qlPvAAAAAElFTkSuQmCC)}.bs-datepicker-multiple{border-radius:4px 0 0 4px}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-left:10px}.bs-datepicker-multiple .bs-datepicker{box-shadow:none;position:relative}.bs-datepicker-multiple .bs-datepicker:not(:last-child){padding-right:10px}.bs-datepicker-multiple .bs-datepicker+.bs-datepicker:after{content:"";display:block;width:14px;height:10px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAA1ElEQVQoU42RsQrCUAxF77VuDu7O4oMWW//BURBBpZvgKk4uIrjoqKOTf+DopIO4uYggtFTfw3+pkQqCW1/G5J7kJiFy4m5MxUlxAzgIPHX+lzMPzupRYlYgxiR7vqsOP8YKzsTx0yxFMCUZ+q7aZzlr+OvgoWcAFyAHgat2jLWu48252DdqAihDJGSSJNUUxYmQjs3+hPQBlAh2rG2LCOPnaw3IiGDX99TRCs7ASJsNhUOA7d/LcuHvRG22FIZvsNXw1MX6VZExCilOQKEfeLXr/10+aC9Ho7arh7oAAAAASUVORK5CYII=);position:absolute;top:25px;left:-8px}.bs-datepicker-multiple .bs-datepicker .left{float:left}.bs-datepicker-multiple .bs-datepicker .right{float:right}.bs-datepicker-container{padding:15px}.bs-datepicker .bs-media-container{display:-webkit-box;display:flex}@media (max-width:768px){.bs-datepicker .bs-media-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}.bs-datepicker-custom-range{padding:15px;background:#eee}.bs-datepicker-predefined-btns button{width:100%;display:block;height:30px;background-color:#9aaec1;border-radius:4px;color:#fff;border:0;margin-bottom:10px;padding:0 18px;text-align:left;-webkit-transition:.3s;transition:.3s}.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:hover{background-color:#54708b}.bs-datepicker-buttons{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;padding-top:10px;border-top:1px solid #e9edf0}.bs-datepicker-buttons .btn-default{margin-left:10px}.bs-timepicker-container{padding:10px 0}.bs-timepicker-label{color:#54708b;margin-bottom:10px}.bs-timepicker-controls{display:inline-block;vertical-align:top;margin-right:10px}.bs-timepicker-controls button{width:20px;height:20px;border-radius:50%;border:0;background-color:#e9edf0;color:#54708b;font-size:16px;font-weight:700;vertical-align:middle;line-height:0;padding:0;-webkit-transition:.3s;transition:.3s}.bs-timepicker-controls button:hover{background-color:#d5dadd}.bs-timepicker-controls input{width:35px;height:25px;border-radius:13px;text-align:center;border:1px solid #e9edf0}.bs-timepicker .switch-time-format{text-transform:uppercase;min-width:54px;height:25px;border-radius:20px;border:1px solid #e9edf0;background:#fff;color:#54708b;font-size:13px}.bs-timepicker .switch-time-format img{vertical-align:initial;margin-left:4px}bs-datepicker-container,bs-daterangepicker-container{z-index:1080}@media (max-width:768px){.bs-datepicker-multiple{display:-webkit-box;display:flex}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-top:10px;margin-left:0}}.theme-default .bs-datepicker-body table td span.selected,.theme-default .bs-datepicker-body table td span[class*=select-]:after,.theme-default .bs-datepicker-body table td.selected span,.theme-default .bs-datepicker-body table td[class*=select-] span:after,.theme-default .bs-datepicker-head{background-color:#777}.theme-default .bs-datepicker-body table td.week span{color:#777}.theme-default .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#777;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td[class*=select-] span:after,.theme-green .bs-datepicker-head{background-color:#5cb85c}.theme-green .bs-datepicker-body table td.week span{color:#5cb85c}.theme-green .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5cb85c;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-blue .bs-datepicker-body table td span.selected,.theme-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-blue .bs-datepicker-body table td.selected span,.theme-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-blue .bs-datepicker-head{background-color:#5bc0de}.theme-blue .bs-datepicker-body table td.week span{color:#5bc0de}.theme-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5bc0de;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-dark-blue .bs-datepicker-body table td span.selected,.theme-dark-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-dark-blue .bs-datepicker-body table td.selected span,.theme-dark-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-dark-blue .bs-datepicker-head{background-color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.week span{color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#337ab7;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-red .bs-datepicker-body table td span.selected,.theme-red .bs-datepicker-body table td span[class*=select-]:after,.theme-red .bs-datepicker-body table td.selected span,.theme-red .bs-datepicker-body table td[class*=select-] span:after,.theme-red .bs-datepicker-head{background-color:#d9534f}.theme-red .bs-datepicker-body table td.week span{color:#d9534f}.theme-red .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#d9534f;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-orange .bs-datepicker-body table td span.selected,.theme-orange .bs-datepicker-body table td span[class*=select-]:after,.theme-orange .bs-datepicker-body table td.selected span,.theme-orange .bs-datepicker-body table td[class*=select-] span:after,.theme-orange .bs-datepicker-head{background-color:#f0ad4e}.theme-orange .bs-datepicker-body table td.week span{color:#f0ad4e}.theme-orange .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#f0ad4e;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}/*!
+Fork Awesome 1.1.6
+License - https://forkaweso.me/Fork-Awesome/license
+
+Copyright 2018 Dave Gandy & Fork Awesome
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.0.11);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.0.11) format("embedded-opentype"),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.0.11) format("woff2"),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.0.11) format("woff"),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.0.11) format("truetype"),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.0.11#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.form-group>.col-sm-12>.control-label>span.required,.form-group>.control-label>span.required{display:inline-block;font:14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.form-group>.col-sm-12>.control-label>span.fa-pull-left.required,.form-group>.control-label>span.fa-pull-left.required{margin-right:.3em}.fa.fa-pull-right,.form-group>.col-sm-12>.control-label>span.fa-pull-right.required,.form-group>.control-label>span.fa-pull-right.required{margin-left:.3em}.fa.pull-left,.form-group>.col-sm-12>.control-label>span.pull-left.required,.form-group>.control-label>span.pull-left.required{margin-right:.3em}.fa.pull-right,.form-group>.col-sm-12>.control-label>span.pull-right.required,.form-group>.control-label>span.pull-right.required{margin-left:.3em}.fa-spin{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before,.form-group>.col-sm-12>.control-label>span.required:before,.form-group>.control-label>span.required:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-globe-e:before{content:"\f304"}.fa-globe-w:before{content:"\f305"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-awesome:before,.fa-fork-circle:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-scuttlebutt:before,.fa-ssb:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.fa-freedombox:before{content:"\f2fd"}.fa-facebook-messenger:before{content:"\f2fe"}.fa-debian:before{content:"\f2ff"}.fa-mastodon-square:before{content:"\f300"}.fa-tipeee:before{content:"\f301"}.fa-react:before{content:"\f302"}.fa-dogmazic:before{content:"\f303"}.fa-zotero:before{content:"\f309"}.fa-nodejs:before{content:"\f308"}.fa-nextcloud:before{content:"\f306"}.fa-nextcloud-square:before{content:"\f307"}.fa-hackaday:before{content:"\f30a"}.fa-laravel:before{content:"\f30b"}.fa-signalapp:before{content:"\f30c"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-width:23vw;max-height:20vh}.info-card-popover-cluster-status .popover-body{max-width:100%;max-height:19vh;font-size:12px}@media (max-width:calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width:calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width:calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{cursor:pointer;padding:7px;border:1px solid #efefef;border-radius:3px}.info-card-content-clickable:hover{border-color:#d1d1d1;background-color:#f3f3f3}html{-webkit-tap-highlight-color:transparent;background-color:#fff}body,html{width:100%;height:100%;font-size:12px}a{text-decoration:none;color:#2b99a8;cursor:pointer}a:focus,a:hover{text-decoration:underline;color:#474544}h1{letter-spacing:-1px;font-size:2em}h2{letter-spacing:-1px;font-size:1.833em}h3{display:block;font-size:1.583em;font-weight:400}h4{font-size:1.5em;line-height:normal}option{font-weight:400;font-style:normal}.checkbox input[type=checkbox]:checked+label:after{font-family:ForkAwesome}.full-height{height:100%}.vertical-align{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.loading{position:absolute;top:50%;left:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-right{text-align:right}.text-monospace{font-family:monospace}.btn-primary{color:#eee;background-color:#ef5c55;border-color:#ef5c55;border-radius:1.875rem}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#eee;background-color:#f38984;border-color:#f38984}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#f38984;border-color:#f38984}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#ef5c55;border-color:#ef5c55}.btn-primary .badge{color:#2b99a8;background-color:#eee}.btn-primary .caret{color:#eee}.btn-default{border-radius:1.875rem}.form-group .btn-default{border-radius:4px}.btn-group>.btn>i.fa,button.btn.btn-label>i.fa{padding-right:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu>li>a{color:#474544;cursor:pointer}.dropdown-menu>li>a>i.fa{padding-right:5px}.dropdown-menu>.active>a{color:#eee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.divider{cursor:auto}.container,.container-fluid{padding-left:30px;padding-right:30px}.row{margin-left:-30px;margin-right:-30px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{padding-left:30px;padding-right:30px}.caret{color:#fff}.progress-bar{background-image:none!important}.progress-bar-info{background-color:#2b99a8}.progress-bar-freespace{background-color:#d1d1d1}.oaprogress{position:relative;margin-bottom:0}.oaprogress div.progress-bar{position:static}.oaprogress span{position:absolute;display:block;width:100%;color:#000;font-weight:400}tags-input .tags{border-radius:4px;border:1px solid #d1d1d1;box-shadow:inset 0 1px 1px rgba(0,0,0,.09)}.panel .accordion-title,uib-accordion .panel-title{font-size:14px!important}.panel-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable{cursor:pointer}.has-error .has-error-btn,.has-error .has-error-btn:disabled:hover{background-color:#f2dede;border-color:#a94442}.noscript{padding-top:5em}.noscript p{color:#777}.form-group>.col-sm-12>.control-label>span.required,.form-group>.control-label>span.required,.required{color:#a94442}.form-group>.col-sm-12.form-group>.control-label>span.required,.form-group>.col-sm-12>.control-label>span.required,.form-group>.control-label>span.required{font-size:6px;padding-left:4px;vertical-align:text-top}.form-control{display:table-cell}.form-control:focus{border-color:rgba(43,153,168,.8);outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px 2px rgba(43,153,168,.5)}.modal-footer button.btn:not(:first-child),.panel-footer button.btn:not(:first-child){margin-left:5px}.margin-right-sm{margin-right:10px}.nav-tabs{margin-bottom:15px}.ceph-icon{background:url(Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png)}.prometheus-icon{background:url(prometheus_logo.074db273ef932a67d91b.svg)}.custom-icon{padding:10px;margin-right:1em;background-clip:padding-box;background-size:contain;background-repeat:no-repeat}.toast-message .custom-icon{filter:brightness(0) invert(1);-webkit-filter:brightness(0) invert(1);-moz-filter:brightness(0) invert(1);-o-filter:brightness(0) invert(1);-ms-filter:brightness(0) invert(1)}.block-ui-wrapper{background:rgba(0,0,0,.7)!important}h3.page-header{margin-left:1em;margin-top:1em;border-color:#f0f0f0}.tooltip-wide .tooltip-inner{width:400px}.tooltip-inner{background-color:#fff;border:1px solid grey;color:#333;font-size:1.1em}.toast-message>ul{padding-left:1em;margin:0}.node-menu{position:relative;width:150px}.node-menu .node-menu-content{width:100%;padding:5px;position:absolute;border:1px solid #bdbdbd;border-radius:5%;box-shadow:0 0 5px #bdbdbd;background-color:#eee;color:#212121;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;z-index:999}.node-menu .node-menu-content li.node-menu-item{list-style:none;padding:3px}.node-menu .node-menu-content .node-menu-item:hover{border-radius:5%;opacity:unset;cursor:pointer;background-color:#bdbdbd;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon{display:inline-block;width:16px}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.new-tag:before{content:'\25CF'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.new-folder:before{content:'\25B6'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.rename:before{content:'\270E'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.remove:before{content:'\2716'}.node-menu .node-menu-content .node-menu-item .node-menu-item-value{margin-left:5px}tree-internal ul{padding:3px 0 3px 25px}tree-internal li{padding:0;margin:0;list-style:none}tree-internal .over-drop-target{border:4px solid #757575;-webkit-transition:padding .2s ease-out;transition:padding .2s ease-out;padding:5px;border-radius:5%}tree-internal .tree{box-sizing:border-box;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}tree-internal .tree li{list-style:none;cursor:default}tree-internal .tree li div{display:inline-block;box-sizing:border-box}tree-internal .tree .node-value{display:inline-block;color:#212121}tree-internal .tree .node-value:after{display:block;width:0;height:2px;background-color:#212121;content:'';-webkit-transition:width .3s;transition:width .3s}tree-internal .tree .node-value:hover:after{width:100%}tree-internal .tree .node-left-menu{display:inline-block;height:100%;width:auto}tree-internal .tree .node-left-menu span:before{content:'\2026';color:#757575}tree-internal .tree .node-selected:after{width:100%}tree-internal .tree .folding{width:25px;display:inline-block;line-height:1px;padding:0 5px;font-weight:700}tree-internal .tree .folding.node-collapsed{cursor:pointer}tree-internal .tree .folding.node-collapsed:before{content:'\25B6';color:#757575}tree-internal .tree .folding.node-expanded{cursor:pointer}tree-internal .tree .folding.node-expanded:before{content:'\25BC';color:#757575}tree-internal .tree .folding.node-empty{color:#212121;text-align:center;font-size:.89em}tree-internal .tree .folding.node-empty:before{content:'\25B6';color:#757575}tree-internal .tree .folding.node-leaf{color:#212121;text-align:center;font-size:.89em}tree-internal .tree .folding.node-leaf:before{content:'\25CF';color:#757575}tree-internal ul.rootless{padding:0}tree-internal div.rootless{display:none!important}tree-internal .loading-children:after{content:' loading ...';color:#6a1b9a;font-style:italic;font-size:.9em;-webkit-animation-name:loading-children;animation-name:loading-children;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes loading-children{0%{color:#f3e5f5}12.5%{color:#e1bee7}25%{color:#ce93d8}37.5%{color:#ba68c8}50%{color:#ab47bc}62.5%{color:#9c27b0}75%{color:#8e24aa}87.5%{color:#7b1fa2}100%{color:#6a1b9a}}@keyframes loading-children{0%{color:#f3e5f5}12.5%{color:#e1bee7}25%{color:#ce93d8}37.5%{color:#ba68c8}50%{color:#ab47bc}62.5%{color:#9c27b0}75%{color:#8e24aa}87.5%{color:#7b1fa2}100%{color:#6a1b9a}}
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/favicon.ico b/ceph/src/pybind/mgr/dashboard/frontend/dist/favicon.ico
deleted file mode 100644 (file)
index 90e538b..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/favicon.ico and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.35e77a38ca9d85c4e897.eot b/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.35e77a38ca9d85c4e897.eot
deleted file mode 100644 (file)
index b96d208..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.35e77a38ca9d85c4e897.eot and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 b/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2
deleted file mode 100644 (file)
index f3520b5..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.3a9e014c2469ffa65a0e.woff2 and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff b/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff
deleted file mode 100644 (file)
index 477da44..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.78dcc9c4999659b8026a.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.78dcc9c4999659b8026a.svg
deleted file mode 100644 (file)
index e997204..0000000
+++ /dev/null
@@ -1,2849 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<!--
-2019-2-18: Created with FontForge (http://fontforge.org)
--->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
-<metadata>
-Created by FontForge 20180321 at Mon Feb 18 18:29:30 2019
- By Julien Deswaef
-The Fork Awesome font is licensed under the SIL OFL 1.1 (http://scripts.sil.org/OFL). Fork Awesome is a fork based of off Font Awesome 4.7.0 by Dave Gandy. More info on licenses at https://forkawesome.github.io
-</metadata>
-<defs>
-<font id="forkawesome" horiz-adv-x="1536" >
-  <font-face 
-    font-family="forkawesome"
-    font-weight="400"
-    font-stretch="normal"
-    units-per-em="1792"
-    panose-1="2 0 5 3 0 0 0 0 0 0"
-    ascent="1536"
-    descent="-256"
-    bbox="-0.653061 -264 2304.01 1538"
-    underline-thickness="89.6"
-    underline-position="-179.2"
-    unicode-range="U+0020-F32B"
-  />
-    <missing-glyph />
-    <glyph glyph-name="space" unicode=" " horiz-adv-x="200" 
- />
-    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1830" 
-d="M572 137l-50 -50c-13 -13 -33 -13 -46 0l-466 466c-13 13 -13 33 0 46l466 466c13 13 33 13 46 0l50 -50c13 -13 13 -33 0 -46l-393 -393l393 -393c13 -13 13 -33 0 -46zM1163 1204l-373 -1291c-5 -17 -23 -27 -39 -22l-62 17c-17 5 -27 23 -22 40l373 1291
-c5 17 23 27 39 22l62 -17c17 -5 27 -23 22 -40zM1820 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46z" />
-    <glyph glyph-name="chevron-circle-right" unicode="&#xf138;" 
-d="M717 141l454 454c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l307 -307l-307 -307c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
-s768 -344 768 -768z" />
-    <glyph glyph-name="crosshairs" unicode="&#xf05b;" 
-d="M1197 512h-109c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h109c-43 144 -157 258 -301 301v-109c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v109c-144 -43 -258 -157 -301 -301h109c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-109c43 -144 157 -258 301 -301
-v109c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-109c144 43 258 157 301 301zM1536 704v-128c0 -35 -29 -64 -64 -64h-143c-49 -215 -218 -384 -433 -433v-143c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v143c-215 49 -384 218 -433 433h-143c-35 0 -64 29 -64 64v128
-c0 35 29 64 64 64h143c49 215 218 384 433 433v143c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-143c215 -49 384 -218 433 -433h143c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="gg" unicode="&#xf260;" horiz-adv-x="1920" 
-d="M672 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1248 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
-    <glyph glyph-name="wpforms" unicode="&#xf298;" 
-d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240c0 11 -9 20 -20 20h-32l-378 -256l-210 171l-210 -171l-378 256h-32c-11 0 -20 -9 -20 -20v-1240
-c0 -11 9 -20 20 -20h1240c11 0 20 9 20 20zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240c0 -82 -66 -148 -148 -148h-1240c-82 0 -148 66 -148 148v1240c0 82 66 148 148 148h1240c82 0 148 -66 148 -148z" />
-    <glyph glyph-name="angle-double-left" unicode="&#xf100;" horiz-adv-x="966" 
-d="M582 160c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23zM966 160
-c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23s-4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792" 
-d="M256 224v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 608v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM256 992v-192c0 -17 -15 -32 -32 -32h-192
-c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM256 1376v-192c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v192
-c0 17 15 32 32 32h192c17 0 32 -15 32 -32zM1792 608v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344
-c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1344c17 0 32 -15 32 -32z" />
-    <glyph glyph-name="archlinux" unicode="&#xf323;" horiz-adv-x="1794" 
-d="M897 1538c164 -386 203 -504 682 -1397c-61 36 -138 70 -247 98c158 -81 236 -156 310 -214c47 -87 97 -179 152 -281c-281 162 -499 263 -702 303c7 31 11 64 12 98c5 182 -83 337 -195 347s-207 -131 -212 -313v-9c0 -43 4 -84 13 -122c-205 -39 -426 -140 -710 -304
-c362 650 540 989 654 1226c60 -50 139 -99 256 -147c-109 76 -175 143 -230 201c89 190 137 318 217 514z" />
-    <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792" 
-d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 288v-192c0 -53 -43 -96 -96 -96h-320
-c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
-h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1152 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192
-c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="angle-left" unicode="&#xf104;" horiz-adv-x="582" 
-d="M582 992c0 -8 -4 -17 -10 -23l-393 -393l393 -393c6 -6 10 -15 10 -23s-4 -17 -10 -23l-50 -50c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -14 10 -23z" />
-    <glyph glyph-name="recycle" unicode="&#xf1b8;" horiz-adv-x="1760" 
-d="M820 367l-15 -368l-2 -22l-420 29c-52 4 -95 53 -114 97c-40 93 12 203 42 292c0 0 77 -12 509 -28zM433 953l180 -379l-147 92c-225 -257 -246 -448 -246 -448l-190 357c-39 58 -4 121 -4 121s35 63 114 188l-140 86zM1664 436l-188 -359c-26 -65 -98 -71 -98 -71
-s-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173c339 -41 509 50 509 50zM879 1360c0 0 -47 -62 -265 -435l-317 187l-19 12l225 356c28 44 91 60 140 55c100 -9 172 -106 236 -175zM1534 1053l212 -363c27 -45 11 -108 -15 -150c-54 -84 -174 -104 -264 -129
-c0 0 -34 71 -265 436l313 195zM1391 1279l142 83l-220 -373l-419 20l151 86c-120 319 -279 429 -279 429l405 -1c70 6 108 -54 108 -54s39 -61 112 -190z" />
-    <glyph glyph-name="file-code-o" unicode="&#xf1c9;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM480 768c11 14 31 17 45 6l51 -38c14 -11 17 -31 6 -45l-182 -243l182 -243c11 -14 8 -34 -6 -45l-51 -38c-14 -11 -34 -8 -45 6l-226 301c-8 11 -8 27 0 38zM1282 467c8 -11 8 -27 0 -38l-226 -301c-11 -14 -31 -17 -45 -6l-51 38c-14 11 -17 31 -6 45
-l182 243l-182 243c-11 14 -8 34 6 45l51 38c14 11 34 8 45 -6zM662 6c-18 3 -29 20 -26 37l138 831c3 18 20 29 37 26l63 -10c18 -3 29 -20 26 -37l-138 -831c-3 -18 -20 -29 -37 -26z" />
-    <glyph glyph-name="thumb-tack" unicode="&#xf08d;" horiz-adv-x="1152" 
-d="M480 672v448c0 18 -14 32 -32 32s-32 -14 -32 -32v-448c0 -18 14 -32 32 -32s32 14 32 32zM1152 320c0 -35 -29 -64 -64 -64h-429l-51 -483c-2 -16 -15 -29 -31 -29h-1c-16 0 -29 11 -32 27l-76 485h-404c-35 0 -64 29 -64 64c0 164 124 320 256 320v512
-c-70 0 -128 58 -128 128s58 128 128 128h640c70 0 128 -58 128 -128s-58 -128 -128 -128v-512c132 0 256 -156 256 -320z" />
-    <glyph glyph-name="fax" unicode="&#xf1ac;" horiz-adv-x="1792" 
-d="M288 1152c88 0 160 -72 160 -160v-1088c0 -88 -72 -160 -160 -160h-128c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h128zM1664 989c76 -44 128 -127 128 -221v-768c0 -141 -115 -256 -256 -256h-864c-88 0 -160 72 -160 160v1536c0 53 43 96 96 96h672
-c53 0 127 -31 164 -68l152 -152c37 -37 68 -111 68 -164v-163zM928 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM928 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128
-c18 0 32 14 32 32zM928 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 0v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 256v128
-c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1184 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 0v128c0 18 -14 32 -32 32h-128
-c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 256v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1440 512v128c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-128
-c0 -18 14 -32 32 -32h128c18 0 32 14 32 32zM1536 896v256h-160c-53 0 -96 43 -96 96v160h-640v-512h896z" />
-    <glyph glyph-name="xing-square" unicode="&#xf169;" 
-d="M685 771c0 0 0 1 -126 222c-10 16 -24 34 -52 34h-184c-12 0 -21 -4 -26 -11c-5 -8 -4 -19 1 -29l125 -216v-1l-196 -346c-6 -10 -5 -20 0 -28s13 -13 24 -13h185c27 0 41 19 50 36c192 339 199 352 199 352zM1309 1268c-5 8 -13 12 -24 12h-187c-27 0 -39 -17 -49 -35
-c-398 -706 -411 -729 -411 -729s0 -1 262 -481c9 -16 23 -35 52 -35h184c11 0 20 4 25 12s5 18 -1 28l-260 476v1l409 723c5 10 5 20 0 28zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
-c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="google-plus-official" unicode="&#xf2b3;" 
-d="M917 631c0 22 -2 43 -6 64h-362v-132h217c-16 -106 -116 -165 -217 -165c-133 0 -239 110 -239 242s106 242 239 242c56 0 112 -19 153 -59l104 101c-71 66 -160 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110
-h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="quora" unicode="&#xf2c4;" horiz-adv-x="1734" 
-d="M1226 749c0 417 -130 631 -435 631c-300 0 -430 -214 -430 -631c0 -415 130 -627 430 -627c48 0 91 5 131 17c-62 122 -135 245 -277 245c-27 0 -54 -4 -79 -16l-49 97c59 51 154 91 276 91c191 0 288 -92 366 -209c45 100 67 235 67 402zM1616 117h117
-c7 -72 -29 -373 -356 -373c-198 0 -302 115 -381 249c-65 -18 -135 -27 -205 -27c-400 0 -791 319 -791 783c0 468 392 787 791 787c407 0 794 -317 794 -787c0 -262 -122 -475 -299 -612c57 -86 116 -143 198 -143c90 0 126 69 132 123z" />
-    <glyph glyph-name="archive-org" unicode="&#xf2fc;" horiz-adv-x="1506" 
-d="M1459 1344l-27 -53h-1385l-24 53l717 189zM1430 1237v-140h-1380v140h1380zM1257 442c-3 65 -4 124 -3 178c0 25 1 61 3 108s3 77 3 91c1 22 3 57 5 104s4 82 5 107c0 1 1 3 1 7v10c47 10 93 10 138 0c21 -325 21 -630 0 -916c-41 -11 -82 -12 -123 -1c-6 1 -10 2 -11 2
-s-3 2 -3 3s-1 4 -1 9c-3 34 -6 90 -10 165zM80 369v0c-1 9 -1 22 -1 38c0 5 -1 11 -1 21s-1 17 -1 22c0 26 0 45 -1 57v219c2 38 3 68 3 88c2 32 3 56 3 71c1 7 1 15 1 26c0 3 1 9 1 17s1 14 1 18c0 7 0 10 1 12c0 12 0 22 1 28c0 11 1 20 2 27c0 11 0 19 1 24c0 4 2 6 7 7
-c29 10 61 13 96 8c11 -2 22 -5 32 -9c2 0 3 -2 3 -6c2 -42 4 -74 6 -97c1 -20 2 -50 3 -90s2 -69 2 -88s1 -47 1 -85s1 -66 2 -84c-3 -131 -4 -199 -4 -206c-1 -47 -3 -112 -7 -194c-2 -27 -3 -47 -3 -60c0 -3 -2 -5 -6 -6c-28 -9 -59 -11 -94 -8c-4 1 -10 3 -18 5
-s-12 4 -14 5c-4 0 -6 1 -6 4c0 12 0 21 -1 26c0 4 -1 8 -1 14s-1 10 -1 13c0 9 0 15 -1 20c0 6 -1 13 -1 24v25c-1 6 -2 14 -2 25s0 19 -1 25c0 17 -1 30 -2 40v24zM464 255v0v25s-1 19 -1 25c-1 10 -1 23 -1 40c-1 5 -2 13 -2 24c0 16 0 29 -1 38v43c-1 13 -2 32 -2 57v29
-s-1 21 -1 27v102c0 27 0 47 1 61c0 18 1 48 3 88c0 17 1 40 3 71c0 11 0 20 1 26c0 15 1 27 2 35v12c0 4 1 9 1 15v13s1 7 2 13s1 10 1 14l2 24c0 4 1 6 5 7c30 10 62 13 96 8c11 -2 22 -5 32 -9c4 0 6 -2 6 -6l4 -97l4 -178c2 -78 3 -135 3 -169c0 -24 -1 -59 -1 -104
-s-1 -79 -2 -102c-1 -47 -3 -112 -7 -194c0 -13 -1 -33 -3 -60c0 -3 -2 -5 -7 -6c-26 -10 -57 -12 -92 -8c-4 0 -7 1 -11 2s-8 3 -13 4s-8 3 -10 4c-2 0 -3 1 -3 4c-1 7 -1 15 -1 26c-1 7 -2 16 -2 27c-2 4 -3 10 -3 20zM1046 961v0c1 -26 3 -63 4 -114s2 -89 2 -114
-c2 -67 3 -113 3 -140c0 -22 -1 -53 -1 -95s-1 -73 -2 -94c-1 -45 -3 -111 -7 -199c-1 -8 -2 -20 -2 -36s0 -28 -1 -36c0 -3 -2 -5 -7 -6c-27 -9 -58 -11 -93 -8c-5 1 -12 2 -20 5s-12 5 -13 5c-3 0 -5 1 -5 5c0 12 0 31 -2 56s-4 45 -5 58c0 15 -1 40 -2 73s-2 59 -3 77
-c0 13 -1 33 -2 60s-1 47 -1 60v68c-1 46 -1 69 0 70c1 55 3 136 7 242c2 48 4 94 8 139c0 4 2 6 6 7c29 10 61 13 95 8c12 -2 23 -5 33 -9c3 0 4 -2 4 -6zM60 -18v98h1390v-98h-1390zM0 -128v73h1506v-73h-1506z" />
-    <glyph glyph-name="volume-up" unicode="&#xf028;" horiz-adv-x="1664" 
-d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
-c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235zM1408 640c0 -203 -122 -392 -310 -471c-8 -3 -17 -5 -25 -5c-36 0 -65 29 -65 64c0 28 16 47 39 59c27 14 52 26 76 44c99 72 157 187 157 309s-58 237 -157 309
-c-24 18 -49 30 -76 44c-23 12 -39 31 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c188 -79 310 -268 310 -471zM1664 640c0 -307 -183 -585 -465 -706c-8 -3 -17 -5 -26 -5c-35 0 -64 29 -64 64c0 29 15 45 39 59c14 8 30 13 45 21c28 15 56 32 82 51c164 121 261 312 261 516
-s-97 395 -261 516c-26 19 -54 36 -82 51c-15 8 -31 13 -45 21c-24 14 -39 30 -39 59c0 35 29 64 64 64c9 0 18 -2 26 -5c282 -121 465 -399 465 -706z" />
-    <glyph glyph-name="spoon" unicode="&#xf1b1;" horiz-adv-x="640" 
-d="M640 1008c0 -200 -87 -331 -209 -379l45 -821c2 -35 -25 -64 -60 -64h-192c-35 0 -62 29 -60 64l45 821c-122 48 -209 179 -209 379c0 256 143 528 320 528s320 -272 320 -528z" />
-    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="864" 
-d="M864 1524v-264h-157c-123 0 -146 -59 -146 -144v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218c0 253 155 391 381 391c108 0 201 -8 228 -12z" />
-    <glyph glyph-name="universal-access" unicode="&#xf29a;" horiz-adv-x="1792" 
-d="M1374 879c-8 34 -42 55 -77 47c-143 -34 -273 -62 -401 -62s-258 28 -401 62c-35 8 -69 -13 -77 -47c-8 -35 13 -69 47 -77c106 -25 205 -47 303 -58c-4 -338 -41 -432 -83 -540l-9 -21c-13 -33 4 -70 37 -83c7 -3 15 -4 23 -4c26 0 50 15 60 41l8 20
-c28 72 54 139 71 259h42c17 -120 43 -187 71 -259l8 -20c10 -26 34 -41 60 -41c8 0 16 1 23 4c33 13 50 50 37 83l-9 21c-42 108 -79 202 -83 540c98 11 197 33 303 58c34 8 55 42 47 77zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
-s128 57 128 128zM1600 640c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704s704 -315 704 -704zM896 1408c-423 0 -768 -345 -768 -768s345 -768 768 -768s768 345 768 768s-345 768 -768 768zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896
-s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="cloud-download" unicode="&#xf0ed;" horiz-adv-x="1920" 
-d="M1280 608c0 18 -14 32 -32 32h-224v352c0 17 -15 32 -32 32h-192c-17 0 -32 -15 -32 -32v-352h-224c-18 0 -32 -15 -32 -32c0 -8 3 -17 9 -23l352 -352c6 -6 14 -9 23 -9c8 0 17 3 23 9l351 351c6 7 10 15 10 24zM1920 384c0 -212 -172 -384 -384 -384h-1088
-c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
-    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664" 
-d="M458 653c-42 92 -74 214 -74 371h-256v-96c0 -98 133 -234 330 -275zM1536 928v96h-256c0 -157 -32 -279 -74 -371c197 41 330 177 330 275zM1664 1056v-128c0 -190 -230 -400 -542 -415c-40 -51 -77 -81 -95 -95c-53 -48 -67 -98 -67 -162s32 -128 128 -128
-s192 -64 192 -160v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 96 96 160 192 160s128 64 128 128s-14 114 -67 162c-18 14 -55 44 -95 95c-312 15 -542 225 -542 415v128c0 53 43 96 96 96h288v96c0 88 72 160 160 160h576c88 0 160 -72 160 -160v-96h288
-c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="caret-up" unicode="&#xf0d8;" horiz-adv-x="1024" 
-d="M1024 320c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1637" 
-d="M1163 955l293 293l-107 107l-293 -293zM1610 1248c0 -17 -6 -33 -18 -45l-1286 -1286c-12 -12 -28 -18 -45 -18s-33 6 -45 18l-198 198c-12 12 -18 28 -18 45s6 33 18 45l1286 1286c12 12 28 18 45 18s33 -6 45 -18l198 -198c12 -12 18 -28 18 -45zM259 1438l98 -30
-l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM609 1276l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1539 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM899 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
-    <glyph glyph-name="hourglass-o" unicode="&#xf250;" 
-d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-202 -76 -406 -343 -406 -708h1024c0 365 -204 632 -406 708c-25 9 -42 33 -42 60
-s17 51 42 60z" />
-    <glyph glyph-name="balance-scale" unicode="&#xf24e;" horiz-adv-x="2176" 
-d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280c-19 -54 -63 -98 -117 -117v-1291h608c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1344c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h608v1291c-54 19 -98 63 -117 117h-491c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h491c27 75 97 128 181 128s154 -53 181 -128h491c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-491zM1088 1264c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM2176 384c0 -206 -285 -288 -448 -288s-448 82 -448 288
-c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735zM896 384c0 -206 -285 -288 -448 -288s-448 82 -448 288c0 39 349 657 392 735c11 20 33 33 56 33s45 -13 56 -33c43 -78 392 -696 392 -735z" />
-    <glyph glyph-name="upload" unicode="&#xf093;" horiz-adv-x="1664" 
-d="M1280 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 288v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h427c27 -74 98 -128 181 -128
-h256c83 0 154 54 181 128h427c53 0 96 -43 96 -96zM1339 936c-10 -24 -33 -40 -59 -40h-256v-448c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v448h-256c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l448 448c12 13 29 19 45 19s33 -6 45 -19l448 -448
-c19 -18 24 -46 14 -69z" />
-    <glyph glyph-name="magnet" unicode="&#xf076;" 
-d="M1536 704v-128c0 -408 -323 -704 -768 -704s-768 296 -768 704v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-128c0 -183 213 -192 256 -192s256 9 256 192v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM512 1344v-384c0 -35 -29 -64 -64 -64h-384
-c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64zM1536 1344v-384c0 -35 -29 -64 -64 -64h-384c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h384c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="adjust" unicode="&#xf042;" 
-d="M768 96v1088c-300 0 -544 -244 -544 -544s244 -544 544 -544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="subway" unicode="&#xf239;" 
-d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM288 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160
-s72 -160 160 -160zM704 768v512h-544v-512h544zM1248 224c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM1408 768v512h-576v-512h576z" />
-    <glyph glyph-name="unslpash" unicode="&#xf325;" 
-d="M1052 728h484v-856h-1536v856h484v-428h568v428zM484 1408h568v-428h-568v428z" />
-    <glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="1612" 
-d="M1593 728l-742 -741c-25 -25 -65 -25 -90 0l-742 741c-25 25 -25 66 0 91l166 165c25 25 65 25 90 0l531 -531l531 531c25 25 65 25 90 0l166 -165c25 -25 25 -66 0 -91z" />
-    <glyph glyph-name="location-arrow" unicode="&#xf124;" horiz-adv-x="1408" 
-d="M1401 1187l-640 -1280c-11 -22 -33 -35 -57 -35c-5 0 -10 1 -15 2c-29 7 -49 32 -49 62v576h-576c-30 0 -55 20 -62 49s7 59 33 72l1280 640c9 5 19 7 29 7c17 0 33 -6 45 -19c20 -19 25 -49 12 -74z" />
-    <glyph glyph-name="check-circle" unicode="&#xf058;" 
-d="M1284 802c0 17 -6 34 -18 46l-91 90c-12 12 -28 19 -45 19s-33 -7 -45 -19l-408 -407l-226 226c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -90c-12 -12 -18 -29 -18 -46s6 -33 18 -45l362 -362c12 -12 29 -19 45 -19c17 0 34 7 46 19l543 543c12 12 18 28 18 45z
-M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="arrow-down" unicode="&#xf063;" horiz-adv-x="1558" 
-d="M1558 704c0 -34 -14 -67 -37 -90l-651 -652c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-651 652c-24 23 -38 56 -38 90s14 67 38 91l74 75c24 23 57 37 91 37s67 -14 90 -37l294 -294v704c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-704l294 294c23 23 56 37 90 37
-s67 -14 91 -37l75 -75c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="bicycle" unicode="&#xf206;" horiz-adv-x="2304" 
-d="M762 384h-314c-53 0 -83 60 -51 102l188 251c-42 20 -88 31 -137 31c-176 0 -320 -144 -320 -320s144 -320 320 -320c155 0 284 110 314 256zM576 512h186c-12 56 -38 107 -75 148zM1056 512l288 384h-480l-99 -132c67 -66 112 -154 126 -252h165zM2176 448
-c0 176 -144 320 -320 320c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320s320 144 320 320zM2304 448c0 -247 -201 -448 -448 -448s-448 201 -448 448
-c0 132 58 251 149 333l-65 98l-353 -469c-12 -17 -31 -26 -51 -26h-197c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c78 0 151 -20 215 -55l137 183h-224c-35 0 -64 29 -64 64s29 64 64 64h384v-128h435l-85 128h-222c-35 0 -64 29 -64 64
-s29 64 64 64h256c21 0 41 -11 53 -28l267 -400c58 28 123 44 192 44c247 0 448 -201 448 -448z" />
-    <glyph glyph-name="instagram" unicode="&#xf16d;" 
-d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1162 640c0 -218 -176 -394 -394 -394s-394 176 -394 394s176 394 394 394s394 -176 394 -394zM1270 1050c0 -51 -41 -92 -92 -92s-92 41 -92 92s41 92 92 92s92 -41 92 -92z
-M768 1270c-112 0 -352 9 -453 -31c-35 -14 -61 -31 -88 -58s-44 -53 -58 -88c-40 -101 -31 -341 -31 -453s-9 -352 31 -453c14 -35 31 -61 58 -88s53 -44 88 -58c101 -40 341 -31 453 -31s352 -9 453 31c35 14 61 31 88 58s44 53 58 88c40 101 31 341 31 453s9 352 -31 453
-c-14 35 -31 61 -58 88s-53 44 -88 58c-101 40 -341 31 -453 31zM1536 640c0 -106 1 -211 -5 -317c-6 -123 -34 -232 -124 -322s-199 -118 -322 -124c-106 -6 -211 -5 -317 -5s-211 -1 -317 5c-123 6 -232 34 -322 124s-118 199 -124 322c-6 106 -5 211 -5 317s-1 211 5 317
-c6 123 34 232 124 322s199 118 322 124c106 6 211 5 317 5s211 1 317 -5c123 -6 232 -34 322 -124s118 -199 124 -322c6 -106 5 -211 5 -317z" />
-    <glyph glyph-name="caret-square-o-up" unicode="&#xf151;" 
-d="M1145 419c-11 -22 -33 -35 -57 -35h-640c-24 0 -46 13 -57 35c-11 21 -9 47 5 66l320 448c12 17 31 27 52 27s40 -10 52 -27l320 -448c14 -19 16 -45 5 -66zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960c17 0 32 15 32 32
-zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664" 
-d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v224h-864c-18 0 -32 14 -32 32v864h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224v224c0 18 14 32 32 32h192
-c18 0 32 -14 32 -32v-224h851l246 247c13 12 33 12 46 0c12 -13 12 -33 0 -46l-247 -246v-851h224c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="external-link" unicode="&#xf08e;" horiz-adv-x="1792" 
-d="M1408 608v-320c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v320c0 18 14 32 32 32
-h64c18 0 32 -14 32 -32zM1792 1472v-512c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-176 176l-652 -652c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l652 652l-176 176c-12 12 -19 28 -19 45c0 35 29 64 64 64h512c35 0 64 -29 64 -64z
-" />
-    <glyph glyph-name="arrow-circle-down" unicode="&#xf0ab;" 
-d="M1284 639c0 17 -6 33 -18 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-189 -189v502c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-502l-189 189c-12 12 -28 19 -45 19s-33 -7 -45 -19l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l362 -362l91 -91
-c12 -12 28 -18 45 -18s33 6 45 18l91 91l362 362c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="font-awesome" unicode="&#xf2b4;" horiz-adv-x="1499" 
-d="M1499 1024v-839c0 -31 -20 -54 -49 -62c-107 -32 -227 -52 -338 -52c-150 0 -277 59 -443 59c-123 0 -250 -20 -370 -48v-338h-160v1368c-84 33 -139 115 -139 205c0 121 98 219 219 219s219 -98 219 -219c0 -90 -55 -172 -139 -205v-68c112 26 228 44 343 44
-c66 0 132 -5 198 -15c86 -13 173 -43 261 -43c55 0 111 7 165 18c41 8 135 40 169 40c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="paper-plane" unicode="&#xf1d8;" horiz-adv-x="1792" 
-d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-453 185l-242 -295c-12 -15 -30 -23 -49 -23c-7 0 -15 1 -22 4c-25 9 -42 33 -42 60v349l864 1059l-1069 -925l-395 162c-23 9 -38 30 -40 55
-c-1 24 11 47 32 59l1664 960c10 6 21 9 32 9c13 0 26 -4 36 -11z" />
-    <glyph glyph-name="meanpath" unicode="&#xf20c;" 
-d="M1311 694v-114c0 -32 -19 -52 -51 -52h-202c-32 0 -52 20 -52 52v114c0 32 20 52 52 52h202c32 0 51 -20 51 -52zM821 464v250c0 71 -47 118 -118 118h-133c-45 0 -78 -19 -96 -52c-18 33 -51 52 -96 52h-130c-70 0 -118 -47 -118 -118v-250c0 -15 7 -22 21 -22h55
-c15 0 22 7 22 22v230c0 32 19 52 52 52h94c32 0 52 -20 52 -52v-230c0 -15 6 -22 21 -22h54c15 0 22 7 22 22v230c0 32 20 52 52 52h97c32 0 51 -20 51 -52v-230c0 -15 7 -22 22 -22h55c14 0 21 7 21 22zM1410 560v154c0 71 -48 118 -119 118h-264c-71 0 -119 -47 -119 -118
-v-410c0 -15 8 -21 22 -21h55c15 0 21 6 21 21v180c19 -26 49 -42 94 -42h191c71 0 119 48 119 118zM1536 1176v-1072c0 -128 -104 -232 -232 -232h-1072c-128 0 -232 104 -232 232v1072c0 128 104 232 232 232h1072c128 0 232 -104 232 -232z" />
-    <glyph glyph-name="long-arrow-left" unicode="&#xf177;" horiz-adv-x="1728" 
-d="M1728 736v-192c0 -18 -14 -32 -32 -32h-1248v-224c0 -13 -7 -24 -19 -29s-25 -3 -35 5l-384 350c-6 6 -10 14 -10 23s4 18 10 24l384 354c10 9 23 11 35 6c11 -5 19 -16 19 -29v-224h1248c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="download" unicode="&#xf019;" horiz-adv-x="1664" 
-d="M1280 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 416v-320c0 -53 -43 -96 -96 -96h-1472c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h465l135 -136
-c37 -36 85 -56 136 -56s99 20 136 56l136 136h464c53 0 96 -43 96 -96zM1339 985c10 -24 5 -52 -14 -70l-448 -448c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-448 448c-19 18 -24 46 -14 70c10 23 33 39 59 39h256v448c0 35 29 64 64 64h256c35 0 64 -29 64 -64v-448h256
-c26 0 49 -16 59 -39z" />
-    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408" 
-d="M555 15c44 -19 92 -32 140 -32c228 0 376 91 376 335c0 62 -8 127 -41 180c-93 150 -227 158 -388 158c-30 0 -73 0 -101 -10c0 -106 -1 -212 -1 -317c0 -69 -9 -256 15 -314zM541 761c36 -6 73 -7 109 -7c206 0 353 58 353 289c0 195 -173 262 -340 262
-c-44 0 -87 -6 -130 -13c0 -101 8 -202 8 -303c0 -53 -1 -106 -1 -159c0 -23 0 -46 1 -69zM0 -128l2 94c64 16 129 17 191 43c35 59 30 163 30 230c0 22 2 978 -22 1025c-15 29 -162 36 -195 40l-4 83c238 4 476 21 713 21c45 0 91 -1 136 -1c226 0 475 -108 475 -368
-c0 -179 -136 -246 -277 -310c190 -43 359 -172 359 -382c0 -344 -313 -458 -606 -458c-88 0 -176 6 -264 6c-179 0 -360 -16 -538 -23z" />
-    <glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="1024" 
-d="M1024 832c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="chevron-left" unicode="&#xf053;" horiz-adv-x="1036" 
-d="M1017 1235l-531 -531l531 -531c25 -25 25 -65 0 -90l-166 -166c-25 -25 -65 -25 -90 0l-742 742c-25 25 -25 65 0 90l742 742c25 25 65 25 90 0l166 -166c25 -25 25 -65 0 -90z" />
-    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1152" 
-d="M1152 960c0 -296 -224 -540 -512 -572v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619
-c22 272 238 495 508 525c348 39 642 -232 642 -572zM128 960c0 -247 201 -448 448 -448s448 201 448 448s-201 448 -448 448s-448 -201 -448 -448z" />
-    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664" 
-d="M725 977l-170 -450c99 -1 198 -4 297 -4c19 0 38 1 57 2c-52 152 -113 307 -184 452zM0 -128l2 79c94 29 196 9 238 117l237 616l280 724h128c4 -7 8 -14 11 -21l205 -480c75 -177 144 -356 220 -532c45 -104 80 -211 130 -313c7 -16 21 -46 35 -57
-c33 -26 125 -32 172 -50c3 -19 6 -38 6 -57c0 -9 -1 -17 -1 -26c-127 0 -254 16 -381 16c-131 0 -262 -11 -393 -15c0 26 1 52 4 78l131 28c27 6 80 13 80 50c0 36 -129 333 -145 374l-450 2c-26 -58 -127 -320 -127 -358c0 -77 147 -80 204 -88c1 -19 1 -38 1 -58
-c0 -9 -1 -18 -2 -27c-116 0 -233 20 -349 20c-14 0 -34 -6 -48 -8c-63 -11 -125 -14 -188 -14z" />
-    <glyph glyph-name="pinterest" unicode="&#xf0d2;" 
-d="M1536 640c0 -424 -344 -768 -768 -768c-76 0 -148 11 -218 32c29 46 62 105 78 164c0 0 9 34 54 211c26 -51 104 -96 187 -96c247 0 415 225 415 527c0 227 -193 440 -487 440c-364 0 -548 -262 -548 -480c0 -132 50 -250 157 -294c17 -7 33 0 38 20c4 13 12 47 16 61
-c5 20 3 26 -11 43c-31 37 -51 84 -51 151c0 194 145 368 378 368c206 0 320 -126 320 -295c0 -221 -98 -408 -244 -408c-80 0 -140 66 -121 148c23 97 68 202 68 272c0 63 -34 116 -104 116c-82 0 -148 -85 -148 -199c0 0 0 -73 25 -122c-84 -356 -99 -418 -99 -418
-c-14 -58 -15 -123 -13 -177c-271 119 -460 389 -460 704c0 424 344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="sun" unicode="&#xf329;" horiz-adv-x="1707" 
-d="M1706 363c-3 -10 -11 -17 -20 -20l-292 -96v-306c0 -10 -5 -20 -13 -26c-9 -6 -19 -8 -29 -4l-292 94l-180 -248c-6 -8 -16 -13 -26 -13s-20 5 -26 13l-180 248l-292 -94c-10 -4 -20 -2 -29 4c-8 6 -13 16 -13 26v306l-292 96c-9 3 -17 10 -20 20s-2 21 4 29l180 248
-l-180 248c-6 9 -7 19 -4 29s11 17 20 20l292 96v306c0 10 5 20 13 26c9 6 19 8 29 4l292 -94l180 248c12 16 40 16 52 0l180 -248l292 94c10 4 20 2 29 -4c8 -6 13 -16 13 -26v-306l292 -96c9 -3 17 -10 20 -20s2 -20 -4 -29l-180 -248l180 -248c6 -8 7 -19 4 -29z" />
-    <glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="1664" 
-d="M1216 832c0 35 -29 64 -64 64h-128v128c0 35 -29 64 -64 64s-64 -29 -64 -64v-128h-128c-35 0 -64 -29 -64 -64s29 -64 64 -64h128v-128c0 -35 29 -64 64 -64s64 29 64 64v128h128c35 0 64 29 64 64zM640 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
-s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64
-c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="folder-open-o" unicode="&#xf115;" horiz-adv-x="1909" 
-d="M1781 605c0 28 -31 35 -53 35h-1088c-53 0 -123 -33 -157 -74l-294 -363c-9 -12 -18 -25 -18 -40c0 -28 31 -35 53 -35h1088c53 0 123 33 157 75l294 363c9 11 18 24 18 39zM640 768h768v160c0 53 -43 96 -96 96h-576c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320
-c-53 0 -96 -43 -96 -96v-853l256 315c58 71 165 122 256 122zM1909 605c0 -44 -19 -86 -46 -120l-295 -363c-57 -70 -166 -122 -256 -122h-1088c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224v-160h192
-c68 0 136 -31 166 -95c10 -21 15 -44 15 -68z" />
-    <glyph glyph-name="tachometer" unicode="&#xf0e4;" horiz-adv-x="1792" 
-d="M384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM576 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1004 351l101 382c8 34 -12 69 -46 78s-69 -12 -78 -46l-101 -382
-c-79 -6 -148 -61 -170 -142c-27 -103 35 -208 137 -235c103 -27 208 35 235 137c21 81 -13 163 -78 208zM1664 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 1024c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128
-s128 57 128 128zM1472 832c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1792 384c0 -172 -49 -338 -141 -483c-12 -18 -32 -29 -54 -29h-1402c-22 0 -42 11 -54 29c-92 144 -141 311 -141 483c0 494 402 896 896 896s896 -402 896 -896z
-" />
-    <glyph glyph-name="creative-commons" unicode="&#xf25e;" horiz-adv-x="1792" 
-d="M605 303c-200 0 -344 142 -344 337c0 192 147 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -55 56 -138 56c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11
-c10 -2 20 -8 24 -17l45 -82c7 -11 5 -26 -3 -36c-4 -4 -93 -104 -257 -104zM1235 303c-200 0 -344 142 -344 337c0 192 148 337 344 337c159 0 240 -92 243 -96c9 -11 10 -27 2 -39l-53 -78c-5 -8 -14 -13 -24 -14s-19 3 -26 10c0 0 -54 56 -138 56
-c-99 0 -170 -73 -170 -175c0 -103 73 -177 174 -177c92 0 155 67 156 67c7 8 17 12 27 11c11 -2 20 -8 25 -17l45 -82c6 -11 4 -26 -4 -36c-4 -4 -92 -104 -257 -104zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM896 1536
-c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896z" />
-    <glyph glyph-name="clipboard" unicode="&#xf0ea;" horiz-adv-x="1792" 
-d="M768 -128h896v640h-416c-53 0 -96 43 -96 96v416h-384v-1152zM1024 1312v64c0 17 -15 32 -32 32h-704c-17 0 -32 -15 -32 -32v-64c0 -17 15 -32 32 -32h704c17 0 32 15 32 32zM1280 640h299l-299 299v-299zM1792 512v-672c0 -53 -43 -96 -96 -96h-960
-c-53 0 -96 43 -96 96v160h-544c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1088c53 0 96 -43 96 -96v-328c13 -8 25 -17 36 -28l408 -408c38 -38 68 -111 68 -164z" />
-    <glyph glyph-name="eercast" unicode="&#xf2da;" horiz-adv-x="1719" 
-d="M1304 752c35 54 -6 191 -128 272c-121 81 -276 75 -312 21c-35 -53 40 -19 177 -70c226 -84 228 -277 263 -223zM1667 178c-283 -696 -1558 -520 -1531 383c3 115 35 192 68 302c-211 -864 966 -1367 1449 -685c18 25 23 23 14 0zM1428 627c0 -283 -228 -513 -509 -513
-s-509 230 -509 513s228 513 509 513s509 -230 509 -513zM1715 915c-356 808 -1826 510 -1663 -589c-338 1101 1055 1606 1570 822c42 -64 90 -176 93 -233zM1653 573c17 338 -217 569 -533 656c-5 0 -27 9 14 13c772 -26 800 -1260 -41 -1274c274 76 543 266 560 605z" />
-    <glyph glyph-name="bar-chart" unicode="&#xf080;" horiz-adv-x="2048" 
-d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
-    <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792" 
-d="M1792 416c0 -140 -70 -323 -127 -451c-11 -23 -22 -55 -37 -76c-7 -10 -14 -17 -28 -17c-20 0 -32 16 -32 35c0 16 4 34 5 50c3 41 5 82 5 123c0 477 -283 560 -714 560h-224v-256c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-512 512c-12 12 -19 28 -19 45s7 33 19 45
-l512 512c12 12 28 19 45 19c35 0 64 -29 64 -64v-256h224c328 0 736 -58 875 -403c42 -106 53 -221 53 -333z" />
-    <glyph glyph-name="hourglass-half" unicode="&#xf252;" 
-d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -146 33 -275 85 -384h854c52 109 85 238 85 384zM1223 192c-74 193 -207 330 -340 384h-230c-133 -54 -266 -191 -340 -384h910z" />
-    <glyph glyph-name="microchip" unicode="&#xf2db;" 
-d="M192 256v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 512v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 768v-128h-112c-9 0 -16 7 -16 16v16
-h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1024v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16h48v16c0 9 7 16 16 16h112zM192 1280v-128h-112c-9 0 -16 7 -16 16v16h-48c-9 0 -16 7 -16 16v32c0 9 7 16 16 16
-h48v16c0 9 7 16 16 16h112zM1280 1440v-1472c0 -53 -43 -96 -96 -96h-832c-53 0 -96 43 -96 96v1472c0 53 43 96 96 96h832c53 0 96 -43 96 -96zM1536 208v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z
-M1536 464v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 720v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 976v-32
-c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16zM1536 1232v-32c0 -9 -7 -16 -16 -16h-48v-16c0 -9 -7 -16 -16 -16h-112v128h112c9 0 16 -7 16 -16v-16h48c9 0 16 -7 16 -16z" />
-    <glyph glyph-name="graduation-cap" unicode="&#xf19d;" horiz-adv-x="2304" 
-d="M1774 700l18 -316c8 -141 -287 -256 -640 -256s-648 115 -640 256l18 316l574 -181c16 -5 32 -7 48 -7s32 2 48 7zM2304 1024c0 -14 -9 -26 -22 -31l-1120 -352c-4 -1 -7 -1 -10 -1s-6 0 -10 1l-652 206c-57 -45 -97 -155 -105 -290c38 -22 63 -62 63 -109
-c0 -45 -23 -84 -58 -107l58 -433c1 -9 -2 -18 -8 -25s-15 -11 -24 -11h-192c-9 0 -18 4 -24 11s-9 16 -8 25l58 433c-35 23 -58 62 -58 107c0 48 27 89 65 111c6 117 36 243 98 330l-333 104c-13 5 -22 17 -22 31s9 26 22 31l1120 352c4 1 7 1 10 1s6 0 10 -1l1120 -352
-c13 -5 22 -17 22 -31z" />
-    <glyph glyph-name="info-circle" unicode="&#xf05a;" 
-d="M1024 160v160c0 18 -14 32 -32 32h-96v512c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h96v-320h-96c-18 0 -32 -14 -32 -32v-160c0 -18 14 -32 32 -32h448c18 0 32 14 32 32zM896 1056v160c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
-v-160c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="2176" 
-d="M0 1404h128v-1532h-128v1532zM2048 1408h128v-1536h-128v1536zM256 1408h128v-1280h-128v1280zM512 1408h256v-1280h-256v1280zM1280 1408h256v-1280h-256v1280zM1792 1408h128v-1280h-128v1280zM1024 1408h128v-1280h-128v1280zM256 0h128v-128h-128v128zM512 0h128
-v-128h-128v128zM768 0h128v-128h-128v128zM1024 0h128v-128h-128v128zM1280 0h128v-128h-128v128zM1536 0h128v-128h-128v128zM1792 0h128v-128h-128v128z" />
-    <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792" 
-d="M1792 352v-192c0 -17 -15 -32 -32 -32h-1376v-192c0 -17 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 320c-6 6 -9 14 -9 22c0 9 3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -14 32 -32v-192h1376c17 0 32 -14 32 -32zM1792 896c0 -8 -3 -17 -9 -23l-320 -320
-c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-1376c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1376v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
-    <glyph glyph-name="hand-o-up" unicode="&#xf0a6;" 
-d="M1280 -64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 700c0 113 -46 189 -167 189c-19 0 -38 -2 -56 -5c-23 42 -80 65 -126 65c-24 0 -48 -6 -69 -18c-32 34 -72 53 -119 53c-32 0 -79 -14 -103 -35v331c0 69 -59 128 -128 128
-c-68 0 -128 -61 -128 -128v-576c-63 0 -128 96 -256 96c-96 0 -128 -75 -128 -160c0 -28 116 -79 139 -90c22 -12 44 -24 65 -37c53 -33 99 -71 145 -112c73 -64 163 -135 163 -241v-32h640v32c0 175 128 346 128 540zM1536 705c0 -112 -31 -218 -69 -322
-c-22 -61 -59 -160 -59 -223v-288c0 -71 -57 -128 -128 -128h-640c-71 0 -128 57 -128 128v288c0 48 -86 116 -119 145c-41 36 -82 70 -129 100c-93 58 -264 101 -264 235c0 159 87 288 256 288c44 0 87 -7 128 -22v374c0 138 117 256 255 256c140 0 257 -116 257 -256v-169
-c42 -3 82 -16 119 -37c14 2 29 3 43 3c64 0 128 -21 178 -60c189 2 300 -127 300 -312z" />
-    <glyph glyph-name="pause" unicode="&#xf04c;" 
-d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64zM640 1344v-1408c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h512c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="github-square" unicode="&#xf092;" 
-d="M519 336c2 3 1 9 -3 13c-5 4 -11 5 -14 2c-2 -3 -1 -9 3 -13c5 -4 11 -5 14 -2zM491 377c-3 4 -8 6 -12 4c-3 -2 -3 -8 0 -12c4 -5 9 -7 12 -5s3 8 0 13zM450 417c1 2 -1 6 -5 8c-3 1 -7 1 -8 -2c-2 -3 0 -6 4 -8c4 -1 8 -1 9 2zM471 394c2 2 2 7 -2 10c-3 4 -8 5 -10 3
-c-3 -3 -2 -7 1 -11c3 -3 8 -5 11 -2zM557 319c1 4 -3 9 -9 11s-11 0 -13 -4c-1 -4 3 -9 9 -11s11 0 13 4zM599 316c0 4 -5 8 -12 8c-6 0 -10 -4 -10 -8s5 -8 11 -8s11 4 11 8zM638 323c-1 4 -7 6 -13 5s-10 -5 -9 -9s6 -7 12 -6s10 6 10 10zM1280 640
-c0 283 -229 512 -512 512s-512 -229 -512 -512c0 -226 147 -418 350 -486c26 -5 35 11 35 25c0 12 0 52 -1 95c0 0 -142 -31 -172 61c0 0 -23 59 -57 74c0 0 -46 32 4 32c0 0 50 -4 78 -53c45 -79 120 -56 149 -43c5 33 18 56 33 69c-114 13 -234 57 -234 253
-c0 56 20 101 53 137c-5 13 -23 65 5 136c43 13 141 -53 141 -53c41 12 84 17 128 17s87 -5 128 -17c0 0 98 66 141 53c28 -71 10 -123 5 -136c33 -36 53 -81 53 -137c0 -197 -120 -240 -234 -253c18 -16 35 -47 35 -95c0 -68 -1 -123 -1 -140c0 -14 9 -30 35 -25
-c203 68 350 260 350 486zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664" 
-d="M1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -70 -58 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704
-c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
-    <glyph glyph-name="mixcloud" unicode="&#xf289;" horiz-adv-x="2304" 
-d="M1645 438c0 80 -51 148 -121 175c-5 -31 -13 -62 -23 -92c-10 -32 -40 -52 -72 -52c-8 0 -16 1 -24 3c-41 14 -62 57 -49 97c15 46 23 94 23 143c0 250 -204 454 -455 454c-180 0 -342 -107 -414 -267c70 -18 135 -54 188 -106c30 -30 30 -79 0 -109s-79 -30 -109 0
-c-48 48 -112 75 -180 75c-141 0 -256 -114 -256 -255s115 -255 256 -255h1046c105 0 190 85 190 189zM1798 438c0 -189 -154 -342 -343 -342h-1046c-226 0 -409 183 -409 408c0 205 152 374 349 403c83 244 314 412 575 412c315 0 575 -241 605 -548
-c153 -33 269 -170 269 -333zM2048 438c0 -114 -33 -224 -97 -319c-15 -22 -39 -33 -64 -33c-15 0 -30 4 -43 13c-35 23 -44 71 -20 106c47 69 71 149 71 233c0 83 -24 164 -71 233c-24 35 -15 82 20 106s83 14 107 -21c64 -94 97 -204 97 -318zM2304 438
-c0 -159 -46 -312 -134 -443c-15 -22 -39 -34 -64 -34c-14 0 -29 4 -42 13c-35 24 -45 71 -21 106c70 106 108 230 108 358s-38 252 -108 357c-24 35 -14 83 21 106c35 24 82 15 106 -21c88 -130 134 -283 134 -442z" />
-    <glyph glyph-name="snowflake-o" unicode="&#xf2dc;" horiz-adv-x="1570" 
-d="M1519 419l-167 -33l186 -107c30 -17 41 -57 23 -87s-57 -41 -87 -23l-186 106l55 -160c28 -80 -94 -121 -121 -42l-102 300l-271 156v-313l208 -238c56 -63 -41 -148 -96 -84l-112 128v-214c0 -35 -29 -64 -64 -64s-64 29 -64 64v214l-112 -128c-55 -64 -152 21 -96 84
-l208 238v313l-271 -156l-102 -300c-27 -79 -149 -38 -121 42l55 160l-186 -106c-30 -18 -69 -7 -87 23s-7 70 23 87l186 107l-167 33c-83 17 -58 142 25 126l310 -62l271 157l-271 157l-310 -62c-4 -1 -9 -1 -13 -1c-76 0 -87 112 -12 127l167 33l-186 107
-c-30 17 -41 57 -23 87c18 31 57 41 87 23l186 -106l-55 160c-28 80 94 121 121 42l102 -300l271 -156v313l-208 238c-56 63 41 148 96 84l112 -128v214c0 35 29 64 64 64s64 -29 64 -64v-214l112 128c55 64 152 -21 96 -84l-208 -238v-313l271 156l102 300
-c27 79 149 38 121 -42l-55 -160l186 106c30 18 69 7 87 -23s7 -70 -23 -87l-186 -107l167 -33c75 -15 64 -127 -12 -127c-4 0 -9 0 -13 1l-310 62l-271 -157l271 -157l310 62c83 16 108 -109 25 -126z" />
-    <glyph glyph-name="flask" unicode="&#xf0c3;" horiz-adv-x="1458" 
-d="M1424 88c75 -119 22 -216 -119 -216h-1152c-141 0 -194 97 -119 216l503 793v399h-64c-35 0 -64 29 -64 64s29 64 64 64h512c35 0 64 -29 64 -64s-29 -64 -64 -64h-64v-399zM645 813l-272 -429h712l-272 429l-20 31v436h-128v-436z" />
-    <glyph glyph-name="pinterest-square" unicode="&#xf0d3;" 
-d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-725c33 47 87 128 108 210c0 0 9 34 53 209c27 -51 104 -95 186 -95c244 0 410 223 410 521c0 225 -191 435 -481 435c-361 0 -543 -259 -543 -475c0 -130 50 -246 156 -290c17 -7 33 0 38 19
-c3 13 11 47 15 61c5 19 3 26 -11 42c-30 37 -50 83 -50 150c0 192 144 363 374 363c204 0 316 -124 316 -291c0 -219 -97 -404 -241 -404c-79 0 -139 66 -120 147c23 96 67 200 67 269c0 62 -33 114 -102 114c-81 0 -146 -84 -146 -196c0 0 0 -72 24 -121
-c-83 -352 -98 -414 -98 -414c-22 -92 -13 -199 -7 -254h-183c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960z" />
-    <glyph glyph-name="fast-backward" unicode="&#xf049;" horiz-adv-x="1792" 
-d="M1747 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678
-c3 7 7 13 13 19l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
-    <glyph glyph-name="volume-control-phone" unicode="&#xf2a0;" horiz-adv-x="1408" 
-d="M617 -153c0 -34 -90 -84 -119 -95c-15 -6 -30 -8 -45 -8c-33 0 -66 9 -98 18c-164 49 -203 149 -268 290c-70 151 -87 295 -87 460s17 309 87 460c65 141 104 241 268 290c32 9 65 18 98 18c15 0 30 -2 45 -8c29 -11 119 -61 119 -95c0 -24 -53 -194 -64 -234
-c-6 -25 -8 -66 -27 -84c-13 -12 -34 -14 -51 -14c-47 0 -94 11 -141 11c-14 0 -35 -1 -47 -11c-16 -13 -24 -58 -30 -78c-24 -83 -37 -168 -37 -255s13 -172 37 -255c6 -20 14 -65 30 -78c12 -10 33 -11 47 -11c47 0 94 11 141 11c17 0 38 -2 51 -14c19 -18 21 -59 27 -84
-c11 -40 64 -210 64 -234zM776 760c-17 0 -33 7 -45 19c-25 25 -26 66 0 91c24 24 37 56 37 90s-13 66 -37 91c-26 25 -25 65 0 90s65 25 90 0c48 -48 75 -113 75 -181s-27 -133 -75 -181c-13 -12 -29 -19 -45 -19zM957 579c-17 0 -33 6 -45 19c-25 25 -25 65 0 90
-c72 73 112 169 112 272s-40 199 -112 272c-25 25 -25 65 0 90s65 25 90 0c97 -97 150 -225 150 -362s-53 -265 -150 -362c-12 -13 -29 -19 -45 -19zM1138 398c-17 0 -33 6 -45 19c-25 25 -25 65 0 90c120 121 187 282 187 453s-67 332 -187 453c-25 25 -25 65 0 90
-s65 25 90 0c145 -145 225 -338 225 -543s-80 -398 -225 -543c-12 -13 -29 -19 -45 -19z" />
-    <glyph glyph-name="biometric" unicode="&#xf32b;" horiz-adv-x="2304" 
-d="M1419 640c0 -147 -120 -267 -267 -267s-267 120 -267 267s120 267 267 267s267 -120 267 -267zM0 1222h2304v-521h-769c-29 185 -190 327 -383 327s-354 -142 -383 -327h-769v521zM0 579h769c29 -185 190 -327 383 -327s354 142 383 327h769v-521h-2304v521z" />
-    <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792" 
-d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 832v-256c0 -35 -29 -64 -64 -64h-1664
-c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-256c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="1792" 
-d="M903 -256c-386 0 -693 226 -834 549c-158 359 -32 934 249 1188l-11 -281c14 18 121 23 138 0c58 111 245 194 395 197c-57 -48 -189 -223 -178 -312c73 -23 185 -24 244 -28c18 -10 15 -71 -21 -121c0 0 -47 -65 -174 -88l15 -189l-139 67c-45 -114 63 -215 175 -196
-c124 21 168 102 255 97c86 -5 120 -53 109 -98c0 0 -14 -54 -107 -45c-79 -125 -184 -180 -354 -165c258 -214 606 -20 694 155c88 174 11 433 -77 506c104 -45 176 -91 214 -192c20 224 -83 478 -267 627c346 -101 557 -369 563 -797s-379 -874 -889 -874z" />
-    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1393" 
-d="M1393 321c-25 -79 -65 -163 -123 -250c-86 -131 -172 -196 -257 -196c-34 0 -80 11 -140 32c-59 22 -110 32 -151 32c-40 0 -88 -11 -142 -33c-55 -23 -99 -34 -132 -34c-103 0 -202 87 -301 259c-97 172 -147 339 -147 503c0 153 38 277 113 374c75 96 169 144 284 144
-c49 0 107 -10 177 -30c69 -20 115 -30 138 -30c29 0 77 11 143 34c66 22 124 34 173 34c80 0 151 -22 213 -65c35 -24 70 -58 104 -100c-52 -44 -90 -83 -114 -118c-43 -62 -65 -131 -65 -207c0 -82 23 -157 69 -223s99 -108 158 -126zM1017 1494c0 -41 -10 -87 -29 -136
-c-20 -50 -51 -96 -93 -138c-36 -36 -72 -60 -108 -72c-23 -7 -57 -13 -104 -17c2 99 28 185 78 257s134 121 250 148c2 -9 4 -16 5 -22c0 -7 1 -13 1 -20z" />
-    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920" 
-d="M832 448v128c0 18 -14 32 -32 32h-192v192c0 18 -14 32 -32 32h-128c-18 0 -32 -14 -32 -32v-192h-192c-18 0 -32 -14 -32 -32v-128c0 -18 14 -32 32 -32h192v-192c0 -18 14 -32 32 -32h128c18 0 32 14 32 32v192h192c18 0 32 14 32 32zM1408 384c0 71 -57 128 -128 128
-s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1664 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1920 512c0 -283 -229 -512 -512 -512c-130 0 -248 49 -338 128h-220c-90 -79 -208 -128 -338 -128c-283 0 -512 229 -512 512
-s229 512 512 512h896c283 0 512 -229 512 -512z" />
-    <glyph glyph-name="cc-stripe" unicode="&#xf1f5;" horiz-adv-x="2304" 
-d="M1597 633c0 -46 -7 -81 -21 -106c-12 -22 -31 -35 -52 -35c-15 0 -29 3 -41 9v224c26 27 49 30 57 30c38 0 57 -42 57 -122zM2035 669h-110c4 67 22 98 56 98s52 -32 54 -98zM476 534c0 84 -51 119 -134 149c-44 16 -68 29 -68 49c0 17 14 26 38 26c46 0 92 -17 124 -33
-l18 112c-25 12 -77 32 -149 32c-51 0 -93 -13 -123 -38c-32 -26 -48 -64 -48 -109c0 -82 50 -118 132 -147c52 -19 70 -32 70 -53c0 -20 -17 -31 -48 -31c-38 0 -101 19 -142 43l-18 -113c35 -20 100 -41 168 -41c54 0 98 13 129 37c34 27 51 66 51 117zM771 749l19 111h-96
-v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219c0 -57 15 -96 44 -120c25 -20 61 -30 111 -30c39 0 62 7 79 11v118c-9 -2 -30 -7 -44 -7c-29 0 -42 16 -42 50v197h77zM1087 724v139c-10 2 -19 3 -28 3c-42 0 -76 -22 -89 -62l-10 56h-131v-471h150v306c19 23 46 31 82 31
-c8 0 16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638c0 80 -15 141 -45 179c-27 35 -64 52 -111 52c-43 0 -81 -18 -117 -56l-8 47h-132v-645l150 25v151c23 -7 47 -11 68 -11c37 0 92 10 134 56c41 44 61 112 61 202zM1278 986c0 44 -35 79 -79 79s-79 -35 -79 -79
-s35 -80 79 -80s79 36 79 80zM2176 629c0 75 -16 134 -48 176c-33 42 -82 64 -144 64c-128 0 -207 -94 -207 -246c0 -84 21 -148 63 -188c37 -37 91 -55 161 -55c64 0 123 15 160 40l-16 103c-37 -20 -80 -31 -128 -31c-29 0 -49 6 -63 19c-16 13 -25 35 -28 66h248
-c1 7 2 41 2 52zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="quote-left" unicode="&#xf10d;" horiz-adv-x="1664" 
-d="M768 576v-384c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192zM1664 576v-384
-c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v704c0 282 230 512 512 512h64c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-64c-141 0 -256 -115 -256 -256v-32c0 -53 43 -96 96 -96h224c106 0 192 -86 192 -192z" />
-    <glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="2039" 
-d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1781 320l249 -249c6 -6 9 -14 9 -23c0 -8 -3 -16 -9 -22l-136 -136c-6 -6 -14 -9 -22 -9c-9 0 -17 3 -23 9l-249 249l-249 -249c-6 -6 -14 -9 -23 -9c-8 0 -16 3 -22 9
-l-136 136c-6 6 -9 14 -9 22c0 9 3 17 9 23l249 249l-249 249c-6 6 -9 14 -9 23c0 8 3 16 9 22l136 136c6 6 14 9 22 9c9 0 17 -3 23 -9l249 -249l249 249c6 6 14 9 23 9c8 0 16 -3 22 -9l136 -136c6 -6 9 -14 9 -22c0 -9 -3 -17 -9 -23zM1283 320l-181 -181
-c-24 -24 -37 -57 -37 -91c0 -33 13 -66 37 -90l83 -83c-14 -2 -29 -3 -44 -3h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c96 -76 194 -122 319 -122s223 46 319 122c12 10 23 17 39 17c19 0 38 -2 57 -6c-33 -32 -54 -58 -54 -106
-c0 -34 13 -67 37 -91z" />
-    <glyph glyph-name="plus-square-o" unicode="&#xf196;" horiz-adv-x="1408" 
-d="M1152 736v-64c0 -18 -14 -32 -32 -32h-352v-352c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v352h-352c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h352v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-352h352c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160
-h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="eye-slash" unicode="&#xf070;" horiz-adv-x="1792" 
-d="M555 201l78 141c-116 84 -185 219 -185 362c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c104 -161 251 -296 427 -375zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304c0 -26 22 -48 48 -48s48 22 48 48c0 115 94 208 208 208c26 0 48 22 48 48z
-M1307 1151c0 -2 0 -7 -1 -9c-211 -377 -420 -756 -631 -1133l-49 -89c-6 -10 -17 -16 -28 -16c-18 0 -113 58 -134 70c-10 6 -16 16 -16 28c0 16 34 70 44 87c-194 88 -357 238 -472 418c-13 20 -20 44 -20 69c0 24 7 49 20 69c198 304 507 507 876 507c60 0 121 -6 180 -17
-l54 97c6 10 16 16 28 16c18 0 112 -58 133 -70c10 -6 16 -16 16 -27zM1344 704c0 -186 -115 -352 -288 -418l280 502c5 -28 8 -56 8 -84zM1792 576c0 -26 -7 -47 -20 -69c-31 -51 -70 -100 -109 -145c-196 -225 -466 -362 -767 -362l74 132c291 25 538 202 694 444
-c-74 115 -169 216 -282 294l63 112c124 -83 249 -208 327 -337c13 -22 20 -43 20 -69z" />
-    <glyph glyph-name="trello" unicode="&#xf181;" 
-d="M704 192v1024c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-1024c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1376 576v640c0 18 -14 32 -32 32h-480c-18 0 -32 -14 -32 -32v-640c0 -18 14 -32 32 -32h480c18 0 32 14 32 32zM1536 1344v-1408c0 -35 -29 -64 -64 -64
-h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="dribbble" unicode="&#xf17d;" 
-d="M1024 36c-10 58 -48 258 -140 498c-1 0 -3 -1 -4 -1c0 0 -389 -136 -515 -410c-6 5 -15 11 -15 11c114 -93 259 -150 418 -150c91 0 177 19 256 52zM839 643c-16 37 -34 74 -53 111c-338 -101 -662 -93 -673 -93c-1 -7 -1 -14 -1 -21c0 -168 64 -322 168 -438
-c179 319 533 433 533 433c9 3 18 5 26 8zM732 855c-114 202 -235 366 -244 378c-183 -86 -319 -255 -362 -458c17 0 291 -3 606 80zM1416 536c-14 4 -197 62 -409 29c86 -237 121 -430 128 -469c147 99 251 257 281 440zM611 1277c-1 0 -1 0 -2 -1c0 0 1 1 2 1zM1201 1132
-c-115 102 -267 164 -433 164c-53 0 -105 -7 -155 -19c10 -13 134 -176 246 -382c247 92 340 234 342 237zM1424 647c-2 155 -57 298 -149 410c-2 -2 -107 -154 -366 -260c15 -31 30 -63 44 -95c5 -11 9 -23 14 -34c226 29 449 -20 457 -21zM1536 640
-c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="user-secret" unicode="&#xf21b;" horiz-adv-x="1408" 
-d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010c-1 2 -2 4 -4 6c-9 7 -81 8 -96 8c-57 0 -111 -8 -167 -19c-7 -2 -14 -2 -21 -2s-14 0 -21 2c-56 11 -110 19 -167 19c-15 0 -87 -1 -96 -8c-2 -2 -3 -4 -4 -6c1 -9 2 -18 4 -27
-c6 -8 11 -5 15 -17c26 -71 38 -126 128 -126c129 0 93 119 135 119h12c42 0 6 -119 135 -119c90 0 102 55 128 126c4 12 9 9 15 17c2 9 3 18 4 27zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 181 32 455 218 545l-90 220h214
-c-14 41 -22 84 -22 128c0 11 1 22 2 32c-39 8 -194 40 -194 96c0 59 170 91 210 99c21 75 71 189 122 248c20 23 45 37 76 37c60 0 108 -62 168 -62s108 62 168 62c31 0 56 -14 76 -37c51 -59 101 -173 122 -248c40 -8 210 -40 210 -99c0 -56 -155 -88 -194 -96
-c5 -54 -2 -108 -20 -160h214l-82 -225c179 -93 210 -362 210 -540z" />
-    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920" 
-d="M1920 384c0 -212 -172 -384 -384 -384h-1088c-247 0 -448 201 -448 448c0 179 106 334 258 405c-1 14 -2 29 -2 43c0 283 229 512 512 512c214 0 397 -131 474 -318c44 39 102 62 166 62c141 0 256 -115 256 -256c0 -51 -15 -98 -41 -138c170 -40 297 -192 297 -374z" />
-    <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="932" 
-d="M932 351c0 -204 -146 -365 -358 -400v-175c0 -18 -14 -32 -32 -32h-135c-17 0 -32 14 -32 32v175c-234 33 -362 173 -367 179c-10 12 -11 29 -2 41l103 135c5 7 14 11 23 12s18 -2 24 -9c2 -1 142 -135 319 -135c98 0 204 52 204 165c0 96 -118 143 -253 197
-c-180 71 -404 161 -404 412c0 184 144 336 353 376v180c0 18 15 32 32 32h135c18 0 32 -14 32 -32v-176c203 -23 311 -133 315 -137c10 -11 12 -26 5 -38l-81 -146c-5 -9 -13 -15 -23 -16c-10 -2 -19 1 -27 7c-1 1 -122 108 -272 108c-127 0 -215 -63 -215 -154
-c0 -106 122 -153 264 -208c184 -71 392 -152 392 -393z" />
-    <glyph glyph-name="eye" unicode="&#xf06e;" horiz-adv-x="1792" 
-d="M1664 576c-95 147 -225 273 -381 353c40 -68 61 -146 61 -225c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 79 21 157 61 225c-156 -80 -286 -206 -381 -353c171 -264 447 -448 768 -448s597 184 768 448zM944 960c0 26 -22 48 -48 48c-167 0 -304 -137 -304 -304
-c0 -26 22 -48 48 -48s48 22 48 48c0 114 94 208 208 208c26 0 48 22 48 48zM1792 576c0 -25 -8 -48 -20 -69c-184 -303 -521 -507 -876 -507s-692 205 -876 507c-12 21 -20 44 -20 69s8 48 20 69c184 302 521 507 876 507s692 -205 876 -507c12 -21 20 -44 20 -69z" />
-    <glyph glyph-name="usb" unicode="&#xf287;" horiz-adv-x="2304" 
-d="M2288 731c10 -5 16 -16 16 -27s-6 -22 -16 -27l-320 -192c-5 -3 -10 -5 -16 -5c-5 0 -11 1 -16 4c-10 6 -16 16 -16 28v128h-858c32 -50 59 -109 83 -165c48 -108 97 -219 167 -219h96v96c0 18 14 32 32 32h320c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-320
-c-18 0 -32 14 -32 32v96h-96c-153 0 -222 157 -284 295c-47 107 -96 217 -164 217h-360c-29 -110 -129 -192 -248 -192c-141 0 -256 115 -256 256s115 256 256 256c119 0 219 -82 248 -192h104c68 0 117 110 164 217c62 138 131 295 284 295h107c27 75 97 128 181 128
-c106 0 192 -86 192 -192s-86 -192 -192 -192c-84 0 -154 53 -181 128h-107c-70 0 -119 -111 -167 -219c-24 -56 -51 -115 -83 -165h1114v128c0 12 6 22 16 28s23 5 32 -1z" />
-    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
-d="M1376 640l138 -135c19 -18 26 -45 20 -70c-7 -25 -27 -45 -52 -51l-188 -48l53 -186c7 -25 0 -52 -19 -70c-18 -19 -45 -26 -70 -19l-186 53l-48 -188c-6 -25 -26 -45 -51 -52c-6 -1 -13 -2 -19 -2c-19 0 -38 8 -51 22l-135 138l-135 -138c-18 -19 -45 -26 -70 -20
-c-26 7 -45 27 -51 52l-48 188l-186 -53c-25 -7 -52 0 -70 19c-19 18 -26 45 -19 70l53 186l-188 48c-25 6 -45 26 -52 51c-6 25 1 52 20 70l138 135l-138 135c-19 18 -26 45 -20 70c7 25 27 45 52 51l188 48l-53 186c-7 25 0 52 19 70c18 19 45 26 70 19l186 -53l48 188
-c6 25 26 45 51 51c25 7 52 0 70 -19l135 -139l135 139c18 19 44 26 70 19c25 -6 45 -26 51 -51l48 -188l186 53c25 7 52 0 70 -19c19 -18 26 -45 19 -70l-53 -186l188 -48c25 -6 45 -26 52 -51c6 -25 -1 -52 -20 -70z" />
-    <glyph glyph-name="500px" unicode="&#xf26e;" horiz-adv-x="1394" 
-d="M1387 -11l-6 -6c-75 -75 -162 -134 -259 -175c-101 -42 -207 -64 -317 -64s-217 22 -317 64c-97 41 -185 100 -259 175c-75 74 -134 161 -175 258c-25 61 -45 124 -54 189c-4 28 35 34 48 36c31 5 52 3 56 -20c1 -1 1 -2 1 -4c4 -20 14 -80 46 -159
-c33 -82 84 -158 152 -226c65 -65 141 -116 226 -152c87 -37 180 -56 276 -56c95 0 188 19 276 56c84 36 160 87 225 152l6 6c7 7 15 9 25 6c9 -2 20 -10 33 -22c32 -33 25 -49 17 -58zM915 604l-66 -66l63 -63c7 -7 20 -22 -7 -49c-11 -11 -22 -17 -32 -17
-c-7 0 -13 3 -19 10l-62 61l-66 -66c-2 -2 -7 -5 -15 -5c-9 0 -20 5 -31 16l-2 2c-7 6 -18 17 -18 29c0 6 3 11 8 17l66 65l-66 66c-11 11 -6 25 14 45c12 12 22 18 31 18c5 0 9 -2 13 -5l65 -66l65 65c11 11 29 6 48 -13c12 -12 25 -29 11 -44zM1386 547
-c0 -79 -16 -156 -46 -228c-30 -70 -72 -132 -126 -186s-117 -96 -187 -126c-72 -31 -149 -46 -228 -46s-156 15 -228 46c-70 30 -133 72 -187 126s-96 116 -125 186c-6 13 -15 38 -15 40h-1c-9 28 31 40 43 44c29 9 51 13 60 -12c24 -64 61 -126 97 -167h1v341
-c2 84 37 169 102 232c67 66 157 103 253 103c196 0 355 -158 355 -352c0 -196 -160 -355 -355 -355c-39 0 -68 3 -112 16c-5 2 -28 12 -13 61c4 13 16 51 44 43c2 0 51 -12 77 -12c139 0 248 108 248 246c0 65 -26 126 -72 171c-46 46 -108 71 -175 71
-c-69 0 -132 -28 -178 -80c-40 -45 -64 -105 -64 -160v-413c72 -44 155 -67 242 -67c128 0 252 51 341 140c90 90 140 211 140 338c0 128 -50 248 -141 339c-90 90 -210 140 -339 140s-250 -50 -340 -140c-1 -1 -58 -60 -77 -87l-2 -2c-12 -17 -23 -33 -73 -22
-c-25 6 -52 21 -52 43v680c0 18 14 38 38 38h877c30 0 30 -42 30 -55c0 -14 0 -55 -30 -55h-811v-483h1c56 59 153 121 210 145c71 30 151 46 231 46c79 0 156 -15 228 -46c70 -30 133 -72 187 -126s96 -116 126 -186c30 -73 46 -149 46 -229zM1355 1128
-c19 -17 6 -35 -13 -57c-12 -12 -25 -26 -39 -26c-6 0 -11 2 -16 7c-72 62 -137 104 -207 133c-87 38 -180 56 -276 56c-85 0 -178 -17 -262 -49c-26 -10 -40 24 -45 37c-6 16 -9 29 -8 38c2 10 7 17 16 20c82 36 194 57 299 57c109 0 216 -22 316 -64
-c92 -39 167 -87 235 -152z" />
-    <glyph glyph-name="liberapay-square" unicode="&#xf2e8;" horiz-adv-x="1533" 
-d="M148 1404h1236c82 0 149 -66 149 -148v-1236c0 -82 -67 -148 -149 -148h-1236c-82 0 -148 66 -148 148v1236c0 82 66 148 148 148zM736 1150v0l-161 -25l-133 -553c-8 -33 -12 -64 -12 -93s6 -54 18 -76s32 -40 60 -53s68 -19 117 -19l31 128c-18 1 -32 4 -42 9
-s-18 12 -22 20s-5 17 -5 27s1 23 4 35zM985 902v0c-42 0 -80 -3 -116 -10s-67 -14 -95 -22l-174 -722h155l47 189c24 -4 47 -6 71 -6c49 0 94 8 135 25s76 41 106 72s52 67 69 109s25 88 25 139c0 31 -4 61 -13 88s-22 51 -40 72c-18 20 -41 36 -69 48s-62 18 -101 18z
-M965 772v0c33 0 56 -11 69 -32s20 -46 20 -76c0 -31 -4 -59 -13 -84s-21 -47 -37 -65s-34 -32 -56 -42s-47 -15 -74 -15c-17 0 -32 1 -44 4l73 303c19 4 40 7 62 7z" />
-    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1192" 
-d="M956 1102l37 194c7 32 -17 57 -44 57h-712c-32 0 -54 -29 -54 -54v-1101c0 -3 3 -4 6 -1c262 315 291 352 291 352c30 35 42 41 86 41h239c33 0 52 28 55 44s31 162 37 191s-21 59 -48 59h-294c-39 0 -67 28 -67 67v42c0 39 28 66 67 66h346c24 0 51 22 55 43zM1183 1324
-c-37 -180 -148 -749 -158 -790c-12 -47 -30 -129 -144 -129h-271c-11 0 -12 1 -22 -10c0 0 -7 -8 -426 -494c-33 -38 -87 -31 -107 -23s-55 32 -55 98v1410c0 58 36 150 158 150h888c130 0 165 -74 137 -212zM1183 1324l-158 -790c10 41 121 610 158 790z" />
-    <glyph glyph-name="music" unicode="&#xf001;" 
-d="M1536 1312v-1120c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v537l-768 -237v-709c0 -141 -211 -192 -320 -192s-320 51 -320 192s211 192 320 192c66 0 132 -12 192 -39v967c0 42 28 79 68 92l832 256c9 3 18 4 28 4
-c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="wpexplorer" unicode="&#xf2de;" horiz-adv-x="1792" 
-d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640c0 432 -352 784 -784 784s-784 -352 -784 -784
-s352 -784 784 -784s784 352 784 784zM1792 640c0 -494 -402 -896 -896 -896s-896 402 -896 896s402 896 896 896s896 -402 896 -896z" />
-    <glyph glyph-name="gg-circle" unicode="&#xf261;" horiz-adv-x="1792" 
-d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640c0 -495 -401 -896 -896 -896
-s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024" 
-d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19
-s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="pencil" unicode="&#xf040;" horiz-adv-x="1515" 
-d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928c0 13 -9 22 -22 22c-6 0 -12 -2 -17 -7l-542 -542c-5 -5 -7 -11 -7 -17c0 -13 9 -22 22 -22c6 0 12 2 17 7l542 542c5 5 7 11 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024c0 -34 -14 -67 -37 -90
-l-166 -166l-416 416l166 165c23 24 56 38 90 38s67 -14 91 -38l235 -234c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="bookmark-o" unicode="&#xf097;" horiz-adv-x="1280" 
-d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9
-c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
-    <glyph glyph-name="diamond" unicode="&#xf219;" horiz-adv-x="2048" 
-d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512c19 -24 17 -59 -4 -82l-960 -1024c-12 -13 -29 -20 -47 -20
-s-35 7 -47 20l-960 1024c-21 23 -23 58 -4 82l384 512c12 17 31 26 51 26h1152c20 0 39 -9 51 -26z" />
-    <glyph glyph-name="share" unicode="&#xf064;" horiz-adv-x="1792" 
-d="M1792 896c0 -17 -7 -33 -19 -45l-512 -512c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v256h-224c-431 0 -714 -83 -714 -560c0 -41 2 -82 5 -123c1 -16 5 -34 5 -50c0 -19 -12 -35 -32 -35c-14 0 -21 7 -28 17c-15 21 -26 53 -37 76c-57 128 -127 311 -127 451
-c0 112 11 227 53 333c139 345 547 403 875 403h224v256c0 35 29 64 64 64c17 0 33 -7 45 -19l512 -512c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="envelope" unicode="&#xf0e0;" horiz-adv-x="1792" 
-d="M1792 826v-794c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v794c30 -33 64 -62 101 -87c166 -113 334 -226 497 -345c84 -62 188 -138 297 -138h2c109 0 213 76 297 138c163 118 331 232 498 345c36 25 70 54 100 87zM1792 1120c0 -112 -83 -213 -171 -274
-c-156 -108 -313 -216 -468 -325c-65 -45 -175 -137 -256 -137h-2c-81 0 -191 92 -256 137c-155 109 -312 217 -467 325c-71 48 -172 161 -172 252c0 98 53 182 160 182h1472c87 0 160 -72 160 -160z" />
-    <glyph glyph-name="yahoo" unicode="&#xf19e;" horiz-adv-x="1318" 
-d="M750 579l13 -707c-34 6 -69 11 -105 11c-35 0 -70 -5 -105 -11l13 707c-186 321 -361 648 -566 957c35 -9 71 -15 108 -15s75 7 111 15c140 -248 292 -489 439 -733c148 242 305 483 439 733c35 -9 71 -14 107 -14c38 0 77 5 114 14c-80 -110 -146 -230 -215 -347
-c-119 -203 -236 -406 -353 -610z" />
-    <glyph glyph-name="window-restore" unicode="&#xf2d2;" horiz-adv-x="2048" 
-d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96c88 0 160 -72 160 -160v-352zM2048 1376v-960c0 -88 -72 -160 -160 -160h-608v-352c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h608v352c0 88 72 160 160 160h960
-c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1606" 
-d="M1606 1350c0 -29 -23 -58 -43 -78l-632 -632v-768h320c35 0 64 -29 64 -64s-29 -64 -64 -64h-896c-35 0 -64 29 -64 64s29 64 64 64h320v768l-632 632c-20 20 -43 49 -43 78c0 49 62 58 99 58h1408c37 0 99 -9 99 -58z" />
-    <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1728" 
-d="M256 1280c0 -46 -25 -87 -64 -110v-1266c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v1266c-39 23 -64 64 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -37 -23 -51 -52 -66c-113 -61 -238 -116 -369 -116c-184 0 -272 140 -490 140
-c-159 0 -326 -72 -464 -146c-11 -6 -21 -9 -33 -9c-35 0 -64 29 -64 64v742c0 24 12 41 31 55c24 16 53 30 79 43c126 64 279 120 421 120c157 0 280 -52 419 -117c28 -14 57 -19 88 -19c157 0 326 136 370 136c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="train" unicode="&#xf238;" 
-d="M1088 1536c247 0 448 -143 448 -320v-896c0 -173 -191 -313 -431 -319l213 -202c21 -20 7 -55 -22 -55h-1056c-29 0 -43 35 -22 55l213 202c-240 6 -431 146 -431 319v896c0 177 201 320 448 320h640zM768 192c106 0 192 86 192 192s-86 192 -192 192s-192 -86 -192 -192
-s86 -192 192 -192zM1344 768v512h-1152v-512h1152z" />
-    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792" 
-d="M1664 896c71 0 128 -57 128 -128s-57 -128 -128 -128v-384c0 -70 -58 -128 -128 -128c-178 148 -465 351 -812 380c-119 -40 -160 -179 -82 -259c-70 -115 20 -196 126 -279c-62 -122 -320 -124 -412 -39c-58 178 -144 356 -74 581h-122c-88 0 -160 72 -160 160v192
-c0 88 72 160 160 160h480c384 0 704 224 896 384c70 0 128 -58 128 -128v-384zM1536 292v954c-261 -200 -514 -315 -768 -343v-270c254 -28 507 -141 768 -341z" />
-    <glyph glyph-name="pause-circle-o" unicode="&#xf28c;" 
-d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM864 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576
-c0 -18 -14 -32 -32 -32h-192zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-192z" />
-    <glyph glyph-name="snapchat-ghost" unicode="&#xf2ac;" horiz-adv-x="1634" 
-d="M833 1408c180 2 329 -99 404 -261c23 -49 27 -125 27 -179c0 -64 -5 -127 -9 -191c8 -4 19 -7 28 -7c36 0 66 27 102 27c34 0 83 -24 83 -64c0 -96 -201 -78 -201 -162c0 -15 6 -29 12 -43c48 -105 139 -206 247 -251c26 -11 52 -17 80 -23c18 -4 28 -17 28 -35
-c0 -68 -173 -96 -219 -103c-20 -31 -5 -104 -58 -104c-41 0 -82 13 -126 13c-21 0 -42 -1 -62 -5c-119 -20 -159 -148 -354 -148c-188 0 -233 128 -349 148c-21 4 -42 5 -63 5c-45 0 -88 -15 -124 -15c-56 0 -39 74 -60 106c-46 7 -219 35 -219 103c0 18 10 31 28 35
-c28 6 54 12 80 23c107 44 200 146 247 251c6 14 12 28 12 43c0 84 -202 68 -202 161c0 39 46 64 81 64c31 0 62 -26 101 -26c11 0 22 2 32 7c-4 63 -9 126 -9 190c0 54 4 131 27 180c88 190 237 259 436 261z" />
-    <glyph glyph-name="folder" unicode="&#xf07b;" horiz-adv-x="1664" 
-d="M1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="outdent" unicode="&#xf03b;" horiz-adv-x="1792" 
-d="M384 992v-576c0 -17 -15 -32 -32 -32c-8 0 -17 3 -23 9l-288 288c-6 6 -9 15 -9 23s3 17 9 23l288 288c6 6 15 9 23 9c17 0 32 -15 32 -32zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32zM1792 608
-v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32h-1728
-c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
-    <glyph glyph-name="stumbleupon" unicode="&#xf1a4;" horiz-adv-x="1920" 
-d="M1062 824v118c0 56 -46 102 -102 102s-102 -46 -102 -102v-612c0 -234 -194 -423 -429 -423c-237 0 -429 192 -429 429v266h328v-262c0 -57 46 -102 102 -102s102 45 102 102v620c0 229 196 413 428 413c233 0 428 -185 428 -416v-136l-195 -58zM1592 602h328v-266
-c0 -237 -192 -429 -429 -429c-236 0 -429 190 -429 425v268l131 -61l195 58v-270c0 -56 46 -101 102 -101s102 45 102 101v275z" />
-    <glyph glyph-name="address-card" unicode="&#xf2bb;" horiz-adv-x="2048" 
-d="M1024 405c0 155 -38 327 -196 327c-49 -28 -115 -76 -188 -76s-139 48 -188 76c-158 0 -196 -172 -196 -327c0 -87 57 -149 128 -149h512c71 0 128 62 128 149zM867 925c0 125 -102 227 -227 227s-227 -102 -227 -227c0 -126 102 -227 227 -227s227 101 227 227z
-M1792 416v64c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1792 676v56c0 20 -16 36 -36 36h-568c-20 0 -36 -16 -36 -36v-56c0 -20 16 -36 36 -36h568c20 0 36 16 36 36zM1792 928v64c0 18 -14 32 -32 32h-576
-c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-352v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-768v96c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-96h-352c-88 0 -160 72 -160 160
-v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="i-cursor" unicode="&#xf246;" horiz-adv-x="896" 
-d="M832 1408c-212 0 -320 -75 -320 -224v-416h128v-128h-128v-544c0 -149 108 -224 320 -224h64v-128h-64c-180 0 -312 52 -384 146c-72 -94 -204 -146 -384 -146h-64v128h64c212 0 320 75 320 224v544h-128v128h128v416c0 149 -108 224 -320 224h-64v128h64
-c180 0 312 -52 384 -146c72 94 204 146 384 146h64v-128h-64z" />
-    <glyph glyph-name="car" unicode="&#xf1b9;" horiz-adv-x="2048" 
-d="M480 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM516 768h1016l-89 357c-3 11 -23 27 -35 27h-768c-12 0 -32 -16 -35 -27zM1888 448c0 88 -72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160s160 72 160 160zM2048 544v-384
-c0 -18 -14 -32 -32 -32h-96v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-1024v-128c0 -106 -86 -192 -192 -192s-192 86 -192 192v128h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419c31 126 153 221 283 221h768c130 0 252 -95 283 -221
-l105 -419h28c124 0 224 -100 224 -224z" />
-    <glyph glyph-name="file-excel-o" unicode="&#xf1c3;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM429 106h68l194 283l-189 272h-68v107h290v-107h-76l106 -159c8 -9 13 -16 17 -23c2 -3 4 -6 5 -10h2c0 -1 9 14 21 33l103 159h-74v107h279v-107h-67l-195 -282l192 -273h68v-106h-291v106h76l-107 161c-7 10 -13 16 -17 24c-2 3 -4 6 -5 10h-2
-c-3 0 -9 -15 -21 -34l-103 -161h75v-106h-281v106z" />
-    <glyph glyph-name="arrow-circle-o-left" unicode="&#xf190;" 
-d="M1152 736v-192c0 -17 -15 -32 -32 -32h-352v-192c0 -18 -14 -32 -32 -32c-9 0 -17 4 -24 10l-319 319c-6 6 -9 15 -9 23s3 17 9 23l320 320c6 6 15 9 23 9c17 0 32 -15 32 -32v-192h352c17 0 32 -15 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
-s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="1254" 
-d="M1254 1347v-73c0 -34 -27 -93 -61 -93c-17 0 -37 3 -54 -1c-16 -4 -28 -15 -32 -31c-5 -19 -3 -43 -3 -64v-1152c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v1218h-143v-1218c0 -34 -27 -61 -61 -61h-108c-34 0 -61 27 -61 61v496c-97 8 -180 28 -245 59
-c-84 39 -148 99 -192 179c-42 77 -64 164 -64 259c0 111 30 207 88 286c59 79 129 132 209 159c75 25 233 37 417 37h479c34 0 61 -27 61 -61z" />
-    <glyph glyph-name="y-combinator" unicode="&#xf23b;" 
-d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
-    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024" 
-d="M1024 832v-416c0 -53 -43 -96 -96 -96s-96 43 -96 96v352h-64v-912c0 -62 -50 -112 -112 -112s-112 50 -112 112v464h-64v-464c0 -62 -50 -112 -112 -112s-112 50 -112 112v912h-64v-352c0 -53 -43 -96 -96 -96s-96 43 -96 96v416c0 106 86 192 192 192h640
-c106 0 192 -86 192 -192zM736 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
-    <glyph glyph-name="history" unicode="&#xf1da;" 
-d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
-c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768zM896 928v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64
-c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="h-square" unicode="&#xf0fd;" 
-d="M1280 192v896c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-512v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-896c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h512v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792" 
-d="M896 -128c-16 0 -32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468c0 -240 -220 -441 -229 -450l-623 -600c-12 -12 -28 -18 -44 -18z" />
-    <glyph glyph-name="sort-amount-desc" unicode="&#xf161;" horiz-adv-x="1760" 
-d="M1184 -32v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
-c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1376 480v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448c18 0 32 -14 32 -32zM1568 992v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640
-c18 0 32 -14 32 -32zM1760 1504v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="search-plus" unicode="&#xf00e;" horiz-adv-x="1664" 
-d="M1024 736v-64c0 -17 -15 -32 -32 -32h-224v-224c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v224h-224c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h224v224c0 17 15 32 32 32h64c17 0 32 -15 32 -32v-224h224c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448
-s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343
-c23 -23 37 -56 37 -90z" />
-    <glyph glyph-name="life-ring" unicode="&#xf1cd;" horiz-adv-x="1792" 
-d="M896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM896 1408c-130 0 -253 -33 -361 -90l194 -194c53 18 109 28 167 28c59 0 114 -10 167 -28l194 194c-108 57 -231 90 -361 90zM218 279l194 194c-18 53 -28 109 -28 167
-c0 59 10 114 28 167l-194 194c-57 -108 -90 -231 -90 -361s33 -253 90 -361zM896 -128c130 0 253 33 361 90l-194 194c-53 -18 -108 -28 -167 -28c-58 0 -114 10 -167 28l-194 -194c108 -57 231 -90 361 -90zM896 256c212 0 384 172 384 384s-172 384 -384 384
-s-384 -172 -384 -384s172 -384 384 -384zM1380 473l194 -194c57 108 90 231 90 361s-33 253 -90 361l-194 -194c18 -53 28 -109 28 -167s-10 -114 -28 -167z" />
-    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152" 
-d="M320 768h512v192c0 141 -115 256 -256 256s-256 -115 -256 -256v-192zM1152 672v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v192c0 246 202 448 448 448s448 -202 448 -448v-192h32c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="git-square" unicode="&#xf1d2;" 
-d="M582 228c0 -54 -49 -66 -93 -66c-43 0 -107 7 -107 63c0 55 54 64 98 64c42 0 102 -7 102 -61zM546 694c0 -50 -20 -85 -74 -85c-55 0 -77 32 -77 84s20 90 77 90c51 0 74 -42 74 -89zM712 769v125c-43 -16 -89 -29 -135 -29c-33 19 -71 29 -110 29
-c-114 0 -204 -84 -204 -200c0 -62 41 -148 103 -169v-3c-32 -14 -38 -53 -38 -85c0 -33 12 -60 41 -77v-3c-68 -22 -113 -65 -113 -139c0 -127 121 -163 227 -163c128 0 224 47 224 188c0 100 -91 130 -174 145c-28 5 -76 25 -76 60c0 33 18 47 49 52c102 20 167 99 167 204
-c0 18 -4 35 -10 52c16 4 33 8 49 13zM771 350h137c-2 27 -2 55 -2 82v387c0 23 0 46 2 69h-137c3 -23 3 -48 3 -71v-392c0 -25 0 -50 -3 -75zM1280 366v121c-20 -14 -44 -21 -68 -21c-45 0 -53 45 -53 82v225h52c18 0 35 -2 53 -2v117h-105c0 34 -2 68 3 102h-140
-c3 -18 4 -36 4 -55v-47h-60v-117c12 1 24 3 37 3c7 0 15 -1 23 -1v-2h-2v-217c0 -108 16 -212 148 -212c37 0 75 6 108 24zM924 1072c0 47 -35 91 -84 91s-85 -43 -85 -91c0 -47 37 -89 85 -89s84 43 84 89zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
-c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="mouse-pointer" unicode="&#xf245;" horiz-adv-x="1152" 
-d="M1133 493c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-382l201 -476c14 -33 -2 -70 -34 -84l-177 -75c-33 -14 -70 2 -84 34l-191 452l-312 -312c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v1504c0 26 16 49 40 59c7 3 16 5 24 5
-c17 0 33 -6 45 -19z" />
-    <glyph glyph-name="sign-in" unicode="&#xf090;" 
-d="M1184 640c0 -17 -7 -33 -19 -45l-544 -544c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45zM1536 992v-704c0 -159 -129 -288 -288 -288
-h-320c-17 0 -32 15 -32 32c0 28 -13 96 32 96h320c88 0 160 72 160 160v704c0 88 -72 160 -160 160h-288c-25 0 -64 -5 -64 32c0 28 -13 96 32 96h320c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="odnoklassniki-square" unicode="&#xf264;" 
-d="M927 956c0 -88 -71 -159 -159 -159s-159 71 -159 159s71 159 159 159s159 -71 159 -159zM1141 593c-18 36 -69 67 -136 14c0 0 -91 -72 -237 -72s-237 72 -237 72c-67 53 -118 22 -136 -14c-32 -64 4 -95 85 -148c69 -44 165 -61 226 -67l-51 -52
-c-72 -72 -142 -142 -191 -190c-29 -29 -29 -76 0 -105l9 -9c29 -29 76 -29 105 0l191 191c72 -73 142 -143 191 -191c29 -29 76 -29 105 0l9 9c29 29 29 76 0 105l-191 190l-52 52c62 6 156 23 225 67c81 53 117 84 85 148zM1092 956c0 179 -145 324 -324 324
-s-324 -145 -324 -324s145 -324 324 -324s324 145 324 324zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="tag" unicode="&#xf02b;" horiz-adv-x="1515" 
-d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
-l715 -714c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="align-justify" unicode="&#xf039;" horiz-adv-x="1792" 
-d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 960v-128
-c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="hospital-o" unicode="&#xf0f8;" horiz-adv-x="1408" 
-d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
-c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
-c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64
-c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
-c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1152h-256v-32c0 -53 -43 -96 -96 -96h-448c-53 0 -96 43 -96 96v32h-256v-1152h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM896 1056v320c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-96h-128v96
-c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h64c17 0 32 15 32 32v96h128v-96c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1408 1088v-1280c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1280c0 35 29 64 64 64h320v288c0 53 43 96 96 96
-h448c53 0 96 -43 96 -96v-288h320c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="chevron-circle-down" unicode="&#xf13a;" 
-d="M813 237l454 454c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-307 -307l-307 307c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
-" />
-    <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408" 
-d="M1403 1241c10 -24 5 -52 -14 -70l-493 -493v-742c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-256 256c-12 12 -19 28 -19 45v486l-493 493c-19 18 -24 46 -14 70c10 23 33 39 59 39h1280c26 0 49 -16 59 -39z" />
-    <glyph glyph-name="google-plus" unicode="&#xf0d5;" horiz-adv-x="2304" 
-d="M1437 623c0 -419 -281 -716 -704 -716c-405 0 -733 328 -733 733s328 733 733 733c198 0 363 -72 491 -192l-199 -191c-54 52 -149 113 -292 113c-250 0 -454 -207 -454 -463s204 -463 454 -463c290 0 399 209 416 316h-416v252h692c7 -37 12 -74 12 -122zM2304 745v-210
-h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
-    <glyph glyph-name="sticky-note-o" unicode="&#xf24a;" 
-d="M1400 256h-248v-248c17 6 34 15 41 22l185 185c7 7 16 24 22 41zM1120 384h288v896h-1280v-1280h896v288c0 53 43 96 96 96zM1536 1312v-1024c0 -53 -31 -127 -68 -164l-184 -184c-37 -37 -111 -68 -164 -68h-1024c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344
-c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="fonticons" unicode="&#xf280;" 
-d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925c41 0 57 -15 56 -79l174 21c0 153 -105 181 -222 181c-174 0 -265 -70 -265 -240v-72h-96v-128h76
-c10 0 20 0 20 -8v-382c0 -19 -5 -25 -23 -27l-73 -7v-88h448v86l-149 14c-18 2 -11 5 -11 25v387h191l38 128h-231c-10 0 2 7 2 15v80c0 60 2 94 65 94zM1248 96v86l-54 9c-19 3 -10 5 -10 25v520h-275l-23 -101l83 -22c13 -4 23 -13 23 -27v-370c0 -19 -8 -23 -26 -25
-l-70 -9v-86h352z" />
-    <glyph glyph-name="comments-o" unicode="&#xf0e6;" horiz-adv-x="1792" 
-d="M704 1152c-312 0 -576 -176 -576 -384c0 -110 74 -216 202 -290l97 -56l-35 -84c21 12 42 25 62 39l44 31l53 -10c50 -9 101 -14 153 -14c312 0 576 176 576 384s-264 384 -576 384zM704 1280c389 0 704 -229 704 -512s-315 -512 -704 -512c-61 0 -120 6 -176 16
-c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512zM1526 111c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29
-c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466c0 52 -8 103 -23 152c169 -93 279 -241 279 -408c0 -163 -104 -307 -266 -401z" />
-    <glyph glyph-name="lastfm" unicode="&#xf202;" horiz-adv-x="1792" 
-d="M1292 832c0 -6 8 -34 10 -41c27 -82 90 -99 165 -120c167 -47 325 -136 325 -332c0 -199 -166 -339 -360 -339c-322 0 -422 394 -515 634c-77 198 -158 314 -381 314c-198 0 -372 -190 -372 -385c0 -207 155 -399 370 -399c95 0 194 20 258 95c31 35 61 73 83 116
-l84 -152c-11 -25 -27 -49 -44 -70l1 -1c-101 -117 -239 -152 -388 -152c-302 0 -528 267 -528 561c0 285 248 550 536 550c478 0 502 -414 664 -747c44 -92 119 -200 233 -200c104 0 196 67 196 177c0 238 -437 76 -499 467c-2 11 -3 22 -3 33c0 148 139 275 286 270
-c88 -3 141 -6 211 -68h-1c27 -25 47 -59 68 -88l-129 -99c-15 28 -29 51 -54 70v1c-24 22 -67 21 -97 21c-65 0 -119 -49 -119 -116z" />
-    <glyph glyph-name="peertube" unicode="&#xf2e4;" horiz-adv-x="1350" 
-d="M0 1536l675 -450l-675 -450v900zM675 1086l675 -450l-675 -450v900zM0 636l675 -450l-675 -450v900z" />
-    <glyph glyph-name="pagelines" unicode="&#xf18c;" horiz-adv-x="1402" 
-d="M1402 433c-201 -499 -683 -197 -683 -197c-148 -299 -392 -491 -674 -492c-25 0 -45 20 -45 45s20 44 45 44c235 1 440 156 574 402c-150 -58 -433 -102 -590 300c398 164 581 -41 651 -166c36 89 62 186 79 291c0 0 -510 -80 -546 358c435 175 557 -280 557 -280
-c6 61 12 192 12 195c0 0 -388 269 -139 603c455 -157 224 -593 224 -593c2 -6 2 -87 0 -122c0 0 165 325 498 210c-15 -489 -518 -388 -518 -388c-16 -100 -41 -195 -73 -283c0 0 303 335 628 73z" />
-    <glyph glyph-name="credit-card-alt" unicode="&#xf283;" horiz-adv-x="2304" 
-d="M0 32v608h2304v-608c0 -88 -72 -160 -160 -160h-1984c-88 0 -160 72 -160 160zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408c88 0 160 -72 160 -160v-224h-2304v224c0 88 72 160 160 160h1984z" />
-    <glyph glyph-name="file-word-o" unicode="&#xf1c2;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM233 768h300v-107h-90l99 -438c4 -16 6 -33 7 -46l2 -21h4l4 21c3 13 4 30 8 46l144 545h114l144 -545c4 -16 6 -33 9 -46c1 -7 3 -15 3 -21h4l2 21c1 13 3 30 7 46l99 438h-90v107h300v-107h-70l-164 -661h-159l-128 485c-5 16 -6 32 -9 46l-3 24h-4
-c0 -8 -1 -16 -2 -24c-2 -16 -5 -31 -10 -46l-128 -485h-159l-164 661h-70v107z" />
-    <glyph glyph-name="map" unicode="&#xf279;" horiz-adv-x="1792" 
-d="M512 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM1760 1536c17 0 32 -15 32 -32v-1472c0 -12 -7 -23 -17 -28l-480 -256c-5 -3 -10 -4 -15 -4
-c-17 0 -32 15 -32 32v1472c0 12 7 23 17 28l480 256c5 3 10 4 15 4zM640 1536c5 0 10 -1 14 -3l512 -256c11 -6 18 -17 18 -29v-1472c0 -17 -15 -32 -32 -32c-5 0 -10 1 -14 3l-512 256c-11 6 -18 17 -18 29v1472c0 17 15 32 32 32z" />
-    <glyph glyph-name="object-ungroup" unicode="&#xf248;" horiz-adv-x="2304" 
-d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
-v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
-    <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792" 
-d="M640 1280h512v128h-512v-128zM1792 640v-480c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v480h672v-160c0 -35 29 -64 64 -64h320c35 0 64 29 64 64v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384c0 88 72 160 160 160h352v160
-c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h352c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="weixin" unicode="&#xf1d7;" horiz-adv-x="2048" 
-d="M580 1075c0 55 -36 91 -91 91c-54 0 -109 -36 -109 -91c0 -54 55 -90 109 -90c55 0 91 36 91 90zM1323 568c0 36 -36 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c55 0 91 36 91 73zM1087 1075c0 55 -36 91 -90 91c-55 0 -109 -36 -109 -91
-c0 -54 54 -90 109 -90c54 0 90 36 90 90zM1722 568c0 36 -37 72 -91 72c-36 0 -72 -36 -72 -72c0 -37 36 -73 72 -73c54 0 91 36 91 73zM1456 965c-23 3 -46 4 -70 4c-344 0 -616 -257 -616 -573c0 -53 8 -104 23 -152c-23 -2 -45 -3 -68 -3c-91 0 -163 18 -254 36
-l-253 -127l72 218c-181 127 -290 291 -290 490c0 345 326 616 725 616c356 0 669 -217 731 -509zM2048 404c0 -163 -108 -308 -254 -417l55 -181l-199 109c-73 -18 -146 -37 -218 -37c-345 0 -616 236 -616 526s271 526 616 526c326 0 616 -236 616 -526z" />
-    <glyph glyph-name="stop" unicode="&#xf04d;" 
-d="M1536 1344v-1408c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="clone" unicode="&#xf24d;" horiz-adv-x="1792" 
-d="M1664 -96v1088c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32zM1792 992v-1088c0 -88 -72 -160 -160 -160h-1088c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160zM1408 1376v-160
-h-128v160c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32v-1088c0 -17 15 -32 32 -32h160v-128h-160c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1088c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="thermometer-full" unicode="&#xf2c7;" horiz-adv-x="1024" 
-d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v907h128v-907c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
-s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
-" />
-    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1402" 
-d="M1376 1376c64 -64 0 -224 -96 -320l-161 -161l160 -696c3 -12 -2 -25 -12 -33l-128 -96c-5 -4 -12 -6 -19 -6c-2 0 -4 0 -7 1c-9 2 -17 7 -21 16l-279 508l-259 -259l53 -194c3 -11 0 -22 -8 -31l-96 -96c-6 -6 -15 -9 -23 -9h-2c-10 1 -18 5 -24 13l-189 252l-252 189
-c-8 5 -12 14 -13 23s3 18 9 25l96 97c6 6 15 9 23 9c3 0 6 0 8 -1l194 -53l259 259l-508 279c-9 5 -15 14 -17 24c-1 9 2 20 9 27l128 128c8 7 20 11 30 8l665 -159l160 160c96 96 256 160 320 96z" />
-    <glyph glyph-name="check-square" unicode="&#xf14a;" 
-d="M685 237l614 614c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-467 -467l-211 211c-25 25 -65 25 -90 0l-102 -102c-25 -25 -25 -65 0 -90l358 -358c25 -25 65 -25 90 0zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
-c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="window-maximize" unicode="&#xf2d0;" horiz-adv-x="1792" 
-d="M256 128h1280v768h-1280v-768zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="github" unicode="&#xf09b;" 
-d="M768 1408c424 0 768 -344 768 -768c0 -339 -220 -627 -525 -729c-39 -7 -53 17 -53 37c0 25 1 108 1 211c0 72 -24 118 -52 142c171 19 351 84 351 379c0 84 -30 152 -79 206c8 20 34 98 -8 204c-64 20 -211 -79 -211 -79c-61 17 -127 26 -192 26s-131 -9 -192 -26
-c0 0 -147 99 -211 79c-42 -106 -16 -184 -8 -204c-49 -54 -79 -122 -79 -206c0 -294 179 -360 350 -379c-22 -20 -42 -54 -49 -103c-44 -20 -156 -54 -223 64c-42 73 -118 79 -118 79c-75 1 -5 -47 -5 -47c50 -23 85 -112 85 -112c45 -137 259 -91 259 -91
-c0 -64 1 -124 1 -143c0 -20 -14 -44 -53 -37c-305 102 -525 390 -525 729c0 424 344 768 768 768zM291 305c-2 -4 -8 -5 -13 -2c-6 3 -9 8 -7 12c2 3 7 4 13 2c6 -3 9 -8 7 -12zM322 271c-4 -4 -11 -2 -16 3c-5 6 -6 13 -2 16c4 4 11 2 16 -3c5 -6 6 -13 2 -16zM352 226
-c-4 -3 -12 0 -17 7s-5 15 0 18c5 4 13 1 17 -6c5 -7 5 -15 0 -19zM394 184c-4 -5 -13 -4 -20 3c-7 6 -9 15 -4 19c4 5 13 4 20 -3c6 -6 8 -15 4 -19zM451 159c-2 -6 -11 -9 -19 -6c-9 2 -15 9 -13 15s11 9 19 7c9 -3 15 -10 13 -16zM514 154c0 -6 -7 -11 -16 -11
-c-10 -1 -17 4 -17 11c0 6 7 11 16 11c9 1 17 -4 17 -11zM572 164c1 -6 -5 -12 -14 -14s-17 2 -18 8c-1 7 5 13 14 15c9 1 17 -3 18 -9z" />
-    <glyph glyph-name="mastodon" unicode="&#xf2e1;" 
-d="M1503 425c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 44 -330 44c0 -18 1 -35 3 -51c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -136s-105 -56 -292 -66c-103 -6 -230 3 -379 42c-323 85 -379 430 -388 779c-3 104 -1 201 -1 283
-c0 357 235 462 235 462c118 54 320 77 531 79h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446zM1260 843c0 88 -22 160 -68 211c-47 52 -107 79 -183 79c-88 0 -154 -34 -198 -101l-43 -72l-43 72c-44 67 -110 101 -198 101c-76 0 -136 -27 -183 -79
-c-45 -52 -68 -123 -68 -211v-432h171v420c0 88 38 133 112 133c82 0 124 -54 124 -159v-229h170v229c0 105 42 159 124 159c74 0 112 -45 112 -133v-420h171v432v0z" />
-    <glyph glyph-name="envelope-open" unicode="&#xf2b6;" horiz-adv-x="1792" 
-d="M1792 882v-978c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v978c0 9 4 18 11 24c105 92 106 103 628 484c63 46 174 146 257 146s195 -101 257 -146c522 -381 523 -392 628 -484c7 -6 11 -15 11 -24zM1228 297c156 113 265 192 345 252c14 10 17 30 6 44
-l-38 52c-11 14 -31 17 -45 6c-79 -58 -187 -138 -343 -250c-62 -45 -174 -145 -257 -145s-195 100 -257 145c-156 113 -264 192 -343 250c-14 11 -34 8 -45 -6l-38 -52c-11 -14 -8 -34 6 -44c80 -60 189 -139 345 -252c78 -56 201 -169 332 -169c132 0 258 115 332 169z" />
-    <glyph glyph-name="step-backward" unicode="&#xf048;" horiz-adv-x="1024" 
-d="M979 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-678c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v1408c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-678c3 7 7 13 13 19z" />
-    <glyph glyph-name="wheelchair" unicode="&#xf193;" horiz-adv-x="1629" 
-d="M1023 349l102 -204c-77 -238 -299 -401 -549 -401c-317 0 -576 259 -576 576c0 242 152 458 379 541l17 -131c-163 -72 -268 -232 -268 -410c0 -247 201 -448 448 -448c257 0 465 220 447 477zM1571 249l58 -114l-256 -128c-9 -5 -19 -7 -29 -7c-24 0 -47 14 -57 35
-l-239 477h-472c-32 0 -60 25 -64 57l-96 779c-1 10 3 32 6 42c19 69 83 114 154 114c88 0 160 -72 160 -160c0 -91 -80 -169 -172 -159l37 -289h423v-128h-407l16 -128h455c24 0 47 -14 57 -35l228 -455z" />
-    <glyph glyph-name="bootstrap" unicode="&#xf315;" 
-d="M256 1408h1024c141 0 256 -115 256 -256v-1024c0 -141 -115 -256 -256 -256h-1024c-141 0 -256 115 -256 256v1024c0 141 115 256 256 256zM494 1020v-795h310c169 0 270 83 270 223c0 106 -69 182 -177 196v4c77 14 137 91 137 174c0 119 -93 198 -229 198h-311z
-M593 933h190c97 0 150 -44 150 -123c0 -86 -64 -133 -181 -133h-159v256zM593 592v0h187c127 0 192 -47 192 -139s-63 -141 -183 -141h-196v280z" />
-    <glyph glyph-name="cutlery" unicode="&#xf0f5;" horiz-adv-x="1408" 
-d="M640 1472v-640c0 -81 -52 -154 -128 -181v-779c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v779c-76 27 -128 100 -128 181v640c0 35 29 64 64 64s64 -29 64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64v-416
-c0 -35 29 -64 64 -64s64 29 64 64v416c0 35 29 64 64 64s64 -29 64 -64zM1408 1472v-1600c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v512h-224c-17 0 -32 15 -32 32v800c0 176 144 320 320 320h256c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="microphone-slash" unicode="&#xf131;" horiz-adv-x="1382" 
-d="M258 591l-101 -101c-27 66 -42 138 -42 214v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -39 6 -77 15 -113zM1372 1193l-361 -361v-128c0 -176 -144 -320 -320 -320c-38 0 -75 7 -109 19l-96 -96c61 -32 131 -51 205 -51c247 0 448 201 448 448v128c0 35 29 64 64 64
-s64 -29 64 -64v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-85 9 -165 38 -235 81l-254 -254c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l1234 1234c13 13 33 13 46 0l82 -82
-c13 -13 13 -33 0 -46zM992 1325l-621 -621v512c0 176 144 320 320 320c138 0 256 -89 301 -211z" />
-    <glyph glyph-name="user-plus" unicode="&#xf234;" horiz-adv-x="2048" 
-d="M704 640c-212 0 -384 172 -384 384s172 384 384 384s384 -172 384 -384s-172 -384 -384 -384zM1664 512h352c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-352v-352c0 -17 -15 -32 -32 -32h-192c-17 0 -32 15 -32 32v352h-352c-17 0 -32 15 -32 32v192
-c0 17 15 32 32 32h352v352c0 17 15 32 32 32h192c17 0 32 -15 32 -32v-352zM928 288c0 -70 58 -128 128 -128h256v-238c-49 -36 -111 -50 -171 -50h-874c-160 0 -267 96 -267 259c0 226 53 573 346 573c16 0 27 -7 39 -17c98 -75 193 -122 319 -122s221 47 319 122
-c12 10 23 17 39 17c85 0 160 -32 217 -96h-223c-70 0 -128 -58 -128 -128v-192z" />
-    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1728" 
-d="M576 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM192 640h384v256h-158c-4 0 -19 -6 -22 -9l-195 -195c-3 -3 -9 -18 -9 -22v-30zM1472 128c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1728 1216
-v-1024c0 -74 -78 -64 -128 -64c0 -141 -115 -256 -256 -256s-256 115 -256 256h-384c0 -141 -115 -256 -256 -256s-256 115 -256 256h-64c-50 0 -128 -10 -128 64c0 35 29 64 64 64v320c0 71 -10 150 45 205l198 198c25 25 73 45 109 45h160v192c0 35 29 64 64 64h1024
-c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1641" 
-d="M363 64c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1007 484l-682 -682c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-106 108c-24 23 -38 56 -38 90s14 67 38 91l681 681c52 -131 157 -236 288 -288zM1641 919c0 -33 -12 -74 -23 -106
-c-63 -178 -234 -301 -423 -301c-247 0 -448 201 -448 448s201 448 448 448c73 0 168 -22 229 -63c10 -7 16 -16 16 -28c0 -11 -7 -22 -16 -28l-293 -169v-224l193 -107c33 19 265 165 285 165s32 -15 32 -35z" />
-    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1856" 
-d="M576 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM192 640h384v256h-158c-6 -1 -17 -5 -22 -9l-195 -195c-3 -5 -8 -16 -9 -22v-30zM1472 128c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1600 800
-v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM1856 1344v-1152c0 -35 -29 -64 -64 -64h-192
-c0 -141 -114 -256 -256 -256c-141 0 -256 115 -256 256h-384c0 -141 -114 -256 -256 -256s-256 115 -256 256h-128c-35 0 -64 29 -64 64s29 64 64 64v416c0 35 20 84 45 109l198 198c25 25 74 45 109 45h160v320c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="cc-visa" unicode="&#xf1f0;" horiz-adv-x="2304" 
-d="M1975 546h-138s14 37 66 179c-1 -1 14 37 22 61l12 -55c31 -153 38 -185 38 -185zM531 611l-58 295c-8 41 -39 54 -75 54h-268l-2 -13c184 -47 335 -147 403 -336zM710 960l-162 -438l-17 89c-35 93 -120 179 -216 218l135 -510h175l261 641h-176zM849 318h166l104 642
-h-166zM1617 944c-33 13 -85 27 -149 27c-164 0 -279 -87 -280 -212c-1 -92 82 -143 145 -174c65 -31 86 -52 86 -80c0 -43 -52 -62 -99 -62c-67 0 -103 8 -156 33l-22 11l-23 -144c39 -18 110 -34 185 -34c174 -1 287 86 289 219c0 73 -45 128 -140 174
-c-58 29 -93 50 -93 80c0 27 30 55 95 55c54 1 94 -10 124 -24l15 -8zM2042 960h-128c-40 0 -70 -12 -87 -54l-246 -588h174c28 79 35 96 35 96h212s5 -22 20 -96h154zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
-h2048c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="superscript" unicode="&#xf12b;" horiz-adv-x="1529" 
-d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
-l-184 -267l204 -296h109zM1529 846v-206h-514l-3 27c-2 14 -4 33 -4 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-38 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 33 103 65 188 65c145 0 246 -85 246 -218c0 -240 -332 -260 -346 -403
-h232v80h126z" />
-    <glyph glyph-name="pixelfed" unicode="&#xf314;" 
-d="M768 -128c-424 0 -768 344 -768 768s344 768 768 768s768 -344 768 -768s-344 -768 -768 -768zM707 472h141c133 0 240 105 240 234s-107 234 -240 234h-203c-77 0 -139 -60 -139 -135v-525z" />
-    <glyph glyph-name="tty" unicode="&#xf1e4;" horiz-adv-x="1792" 
-d="M448 224v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM256 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM832 224v-192c0 -18 -14 -32 -32 -32h-192
-c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM66 768c-37 0 -66 29 -66 65v129h514v-129c0 -36 -29 -65 -65 -65h-383zM1216 224v-192
-c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1600 224v-192c0 -18 -14 -32 -32 -32h-192
-c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1016v-13h-514v10c0 37 -32 104 -382 102c-350 -1 -382 -65 -382 -102v-10h-514v13
-c0 67 120 392 896 392c775 0 896 -325 896 -392zM1792 608v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 962v-129c0 -36 -29 -65 -65 -65h-384c-36 0 -65 29 -65 65v129h514z" />
-    <glyph glyph-name="linode" unicode="&#xf2b8;" horiz-adv-x="1494" 
-d="M309 1l202 -214l-34 236l-216 213zM535 -225l274 218l-11 245l-300 -215zM224 413l227 -213l-48 327l-245 204zM474 189l317 214l-14 324l-352 -200zM822 178l95 -80l-2 239l-103 79c0 -8 4 -22 -4 -28l-78 -52l85 -70c10 -8 7 -76 7 -88zM117 930l256 -200l-68 465
-l-279 173zM1152 267l15 234l-230 -164l2 -240zM396 722l373 194l-19 441l-423 -163zM1249 357l20 233l-226 142l-2 -105l144 -95c3 -2 5 -6 4 -9l-7 -119zM1440 496l30 222l-179 -128l-20 -228zM1252 329l-71 49l-8 -117c0 -3 -1 -6 -4 -8l-234 -187c-4 -3 -10 -3 -14 0
-l-98 83l7 -161c0 -3 -1 -6 -4 -8l-293 -234c-2 -1 -4 -2 -6 -2c-3 1 -6 1 -8 3l-228 242c-5 5 -54 252 -59 277c-1 4 2 9 5 11l61 37c-12 11 -93 82 -95 92l-72 351c-1 4 1 9 6 12l94 45c-16 12 -132 96 -135 108l-96 466c-1 6 2 11 7 13l433 135c2 0 5 0 8 -1l317 -153
-c3 -2 6 -6 6 -9l20 -463c0 -4 -2 -8 -6 -10l-118 -61l126 -85c3 -1 5 -5 5 -8l5 -123l121 74c3 2 8 2 11 0l84 -56l3 110c0 3 2 7 5 9l206 126c4 2 8 2 11 0l245 -135c2 -2 4 -4 5 -7c2 -7 -31 -232 -34 -255c0 -3 -2 -6 -4 -7l-191 -153c-4 -3 -9 -3 -13 0z" />
-    <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280" 
-d="M1088 576v640h-448v-1137c51 27 133 74 213 137c107 84 235 215 235 360zM1280 1344v-768c0 -421 -589 -687 -614 -698c-8 -4 -17 -6 -26 -6s-18 2 -26 6c-25 11 -614 277 -614 698v768c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="user-md" unicode="&#xf0f0;" horiz-adv-x="1408" 
-d="M384 192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1408 131c0 -163 -107 -259 -267 -259h-874c-160 0 -267 96 -267 259c0 199 40 513 278 565c-16 -38 -22 -79 -22 -120v-203c-77 -27 -128 -100 -128 -181c0 -106 86 -192 192 -192
-s192 86 192 192c0 81 -52 154 -128 181v203c0 33 3 66 25 93c84 -66 188 -104 295 -104s211 38 295 104c22 -27 25 -60 25 -93v-64c-141 0 -256 -115 -256 -256v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 70 58 128 128 128
-s128 -58 128 -128v-89c-20 -18 -32 -44 -32 -71c0 -53 43 -96 96 -96s96 43 96 96c0 27 -12 53 -32 71v89c0 91 -49 176 -128 221c0 73 7 151 -22 219c238 -52 278 -366 278 -565zM1088 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
-s384 -172 384 -384z" />
-    <glyph glyph-name="xmpp" unicode="&#xf2f9;" horiz-adv-x="1542" 
-d="M1536 1314c47 -398 -206 -904 -657 -1199c122 -101 261 -177 414 -216v-27c-165 14 -320 59 -461 128l-30 15l-1 1l-6 3c-11 6 -30 16 -41 22c-94 -51 -193 -90 -297 -116c-68 -19 -139 -33 -211 -42v28c145 37 279 107 396 201c-426 296 -682 805 -637 1192l93 -33v0
-l273 -81c-1 -16 -1 -32 -1 -49c0 -296 147 -656 394 -917c254 262 406 628 406 929c0 17 0 33 -1 49l274 81z" />
-    <glyph glyph-name="moon-o" unicode="&#xf186;" horiz-adv-x="1471" 
-d="M1262 233c-36 -6 -73 -9 -110 -9c-371 0 -672 301 -672 672c0 127 37 251 104 357c-266 -79 -456 -323 -456 -613c0 -353 287 -640 640 -640c193 0 374 88 494 233zM1465 318c-125 -271 -399 -446 -697 -446c-423 0 -768 345 -768 768c0 415 325 752 739 767
-c28 1 51 -15 61 -39c11 -25 4 -54 -15 -72c-114 -104 -177 -246 -177 -400c0 -300 244 -544 544 -544c79 0 155 17 228 51c25 11 53 6 72 -13s24 -48 13 -72z" />
-    <glyph glyph-name="pie-chart" unicode="&#xf200;" horiz-adv-x="1728" 
-d="M768 646l546 -546c-139 -141 -333 -228 -546 -228c-424 0 -768 344 -768 768s344 768 768 768v-762zM955 640h773c0 -213 -87 -407 -228 -546zM1664 768h-768v768c424 0 768 -344 768 -768z" />
-    <glyph glyph-name="align-left" unicode="&#xf036;" horiz-adv-x="1792" 
-d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1664 960v-128
-c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="motorcycle" unicode="&#xf21c;" horiz-adv-x="2304" 
-d="M2301 500c32 -281 -197 -517 -476 -499c-214 14 -392 185 -414 399c-16 152 44 289 146 381l-71 107c-126 -105 -206 -262 -206 -438c0 -36 -28 -66 -64 -66h-325c-31 -217 -217 -384 -443 -384c-247 0 -448 201 -448 448s201 448 448 448c53 0 104 -10 152 -27l24 45
-c-77 69 -178 110 -304 110h-64c-35 0 -64 29 -64 64s29 64 64 64h128c224 0 338 -92 384 -128h627l-85 128h-222c-39 0 -70 35 -63 75c5 31 35 53 66 53h253c21 0 41 -11 53 -28l70 -105l114 114c12 12 29 19 46 19h101c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-179
-l115 -172c81 39 175 55 275 36c191 -35 340 -195 362 -388zM448 128c155 0 284 110 314 256h-314c-22 0 -43 12 -55 31c-11 19 -12 43 -1 63l147 277c-29 8 -59 13 -91 13c-176 0 -320 -144 -320 -320s144 -320 320 -320zM1856 128c176 0 320 144 320 320s-144 320 -320 320
-c-43 0 -83 -9 -121 -24l174 -260c20 -30 12 -70 -17 -89c-11 -8 -24 -11 -36 -11c-21 0 -41 10 -53 29l-174 260c-57 -58 -93 -137 -93 -225c0 -176 144 -320 320 -320z" />
-    <glyph glyph-name="nextcloud-square" unicode="&#xf307;" 
-d="M257 1408h1022c142 0 257 -115 257 -257v-1022c0 -142 -115 -257 -257 -257h-1022c-142 0 -257 115 -257 257v1022c0 142 115 257 257 257zM772 969v0c-145 0 -268 -98 -307 -230c-34 69 -105 118 -187 118c-114 0 -208 -94 -208 -208s94 -207 208 -207
-c82 0 153 48 187 117c39 -132 162 -230 307 -230s267 98 306 230c34 -69 105 -117 187 -117c114 0 208 93 208 207s-94 208 -208 208c-82 0 -153 -49 -187 -118c-39 132 -161 230 -306 230zM772 846v0c106 0 196 -88 196 -197s-87 -196 -196 -196s-197 87 -197 196
-s88 197 197 197zM278 733c47 0 84 -37 84 -84s-37 -84 -84 -84s-84 37 -84 84s37 84 84 84zM1265 733c47 0 84 -37 84 -84s-37 -84 -84 -84s-84 37 -84 84s37 84 84 84z" />
-    <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1685" 
-d="M970 1084l316 -316l-572 -572l-316 316zM760 105l618 618c25 25 25 65 0 90l-362 362c-24 24 -66 24 -90 0l-618 -618c-25 -25 -25 -65 0 -90l362 -362c12 -12 27 -18 44 -18s34 6 46 18zM1648 742l-906 -908c-50 -49 -133 -49 -182 0l-126 126c75 75 75 197 0 272
-s-197 75 -272 0l-124 126c-50 49 -50 131 0 181l906 906c49 50 132 50 182 0l124 -125c-75 -75 -75 -197 0 -272s197 -75 272 0l126 -125c49 -50 49 -132 0 -181z" />
-    <glyph glyph-name="battery-half" unicode="&#xf242;" horiz-adv-x="2304" 
-d="M256 256v768h896v-768h-896zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
-c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
-    <glyph glyph-name="spotify" unicode="&#xf1bc;" 
-d="M1127 326c0 28 -11 39 -30 51c-129 77 -279 115 -447 115c-98 0 -192 -13 -287 -34c-23 -5 -42 -20 -42 -52c0 -25 19 -49 49 -49c9 0 25 5 37 8c78 16 160 27 243 27c147 0 286 -36 397 -103c12 -7 20 -11 33 -11c25 0 47 20 47 48zM1223 541c0 27 -10 46 -35 61
-c-153 91 -347 141 -548 141c-129 0 -217 -18 -303 -42c-32 -9 -48 -31 -48 -64s27 -60 60 -60c14 0 22 4 37 8c70 19 154 33 251 33c190 0 363 -50 488 -124c11 -6 22 -13 38 -13c34 0 60 27 60 60zM1331 789c0 37 -16 56 -40 70c-173 101 -410 148 -636 148
-c-133 0 -255 -15 -364 -47c-28 -8 -54 -32 -54 -74c0 -41 31 -73 72 -73c15 0 29 5 40 8c97 27 202 37 307 37c208 0 424 -46 563 -129c14 -8 24 -12 40 -12c38 0 72 30 72 72zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
-" />
-    <glyph glyph-name="dot-circle-o" unicode="&#xf192;" 
-d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
-s768 -344 768 -768z" />
-    <glyph glyph-name="facebook-square" unicode="&#xf082;" 
-d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-188v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-532c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
-h960z" />
-    <glyph glyph-name="facebook-messenger" unicode="&#xf2fe;" horiz-adv-x="1520" 
-d="M760 1408c420 0 760 -318 760 -711c0 -476 -490 -817 -978 -681l-260 -144v272c-556 420 -235 1264 478 1264zM841 455l415 440l-379 -209l-197 204l-415 -441l379 210z" />
-    <glyph glyph-name="angle-up" unicode="&#xf106;" horiz-adv-x="998" 
-d="M998 352c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="glide" unicode="&#xf2a5;" 
-d="M866 1021c0 -32 -7 -63 -13 -94c-21 -100 -41 -200 -62 -300c-3 -14 -3 -14 -18 -15c-10 -1 -21 -2 -31 -2c-86 0 -110 93 -110 163c0 104 41 243 138 298c16 8 33 14 51 14c41 0 45 -30 45 -64zM1352 597c0 18 -74 135 -91 142c-8 3 -25 8 -34 8
-c-82 0 -156 -37 -226 -77l-2 2c16 107 52 202 52 313c0 159 -85 233 -242 233c-23 0 -46 -3 -68 -6c-197 -35 -317 -260 -317 -445c0 -196 113 -304 308 -304c4 0 25 2 25 -3c0 -2 0 -3 -1 -5c-4 -38 -16 -80 -26 -117c-15 -55 -67 -150 -134 -150c-29 0 -42 20 -42 47
-c0 87 100 139 102 144c0 4 -5 8 -7 10c-31 28 -82 51 -124 51c-76 0 -117 -122 -117 -184c0 -116 73 -196 190 -196c173 0 299 182 338 332c11 44 19 89 30 133c2 9 5 13 14 18c71 36 146 60 227 60c44 0 83 -8 127 -18c1 -1 3 -1 4 -1c6 0 14 7 14 13zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="gitea" unicode="&#xf31f;" horiz-adv-x="2066" 
-d="M366 1280v0c62 0 120 -8 160 -8v0v0c329 -18 502 -29 699 -29l1 -363l53 -27v390c171 2 371 11 709 29v0h1c15 0 28 -7 38 -17s18 -25 24 -43c12 -36 16 -85 15 -143c-3 -117 -30 -272 -75 -427s-107 -311 -182 -431s-163 -204 -259 -211h-615c-75 8 -156 85 -224 169
-c-34 42 -64 87 -87 126c-21 36 -35 66 -41 88c-82 2 -219 15 -341 80c-125 67 -233 191 -242 414c-6 143 45 245 118 310s167 93 248 93zM388 1107v0c-90 -1 -147 -29 -180 -71c-36 -44 -46 -104 -38 -164c14 -113 61 -183 126 -229c62 -44 143 -65 231 -78
-c-70 193 -106 325 -128 542h-11zM1118 893c-34 0 -66 -19 -82 -51l-172 -353c-22 -45 -3 -99 42 -121l354 -172c45 -22 99 -3 121 42l171 354c22 45 3 99 -42 121l-249 121l-45 -93c5 -5 10 -14 12 -20c2 -5 3 -13 3 -19v-4c30 -14 54 -25 74 -36c30 -17 52 -34 59 -62
-s-1 -57 -17 -95c-12 -29 -29 -65 -51 -111c4 -5 9 -13 11 -19c2 -5 4 -13 4 -19c0 -22 -17 -46 -38 -54c-5 -2 -14 -4 -20 -4c-22 0 -46 17 -54 38c-2 5 -3 14 -3 20c0 22 17 46 38 54c5 2 14 3 19 3h2c22 46 41 82 52 109c15 36 18 55 15 66s-13 20 -39 35
-c-18 10 -41 22 -71 36c-4 -4 -13 -9 -19 -11c-5 -2 -14 -3 -19 -3h-6l-77 -158c5 -5 12 -14 14 -21c2 -5 3 -13 3 -19c0 -22 -17 -46 -38 -54c-5 -2 -13 -4 -19 -4c-22 0 -46 17 -54 38c-2 5 -3 14 -3 20c0 22 16 46 37 54c5 2 15 3 20 3l79 162c-3 4 -8 11 -10 16
-s-3 14 -3 20c0 22 17 46 38 54c5 2 14 3 19 3h1l46 94l-64 31c-13 6 -26 9 -39 9z" />
-    <glyph glyph-name="f-droid" unicode="&#xf32a;" horiz-adv-x="1676" 
-d="M47 1526v0c12 0 29 -8 36 -18l127 -164c10 3 27 6 37 6v0h1182v0c10 0 27 -3 37 -6l127 164c7 9 22 17 34 18h2h3c24 -1 44 -22 44 -46c0 -9 -4 -22 -10 -29l-133 -172c4 -11 7 -29 7 -40v0v-258c0 -61 -50 -111 -111 -111h-1182c-61 0 -111 50 -111 111v258v0
-c0 11 3 29 7 40l-133 172c-6 7 -10 20 -10 29c0 26 20 46 46 46h1zM482 1212v0c-69 0 -125 -56 -125 -125v0c0 -69 56 -125 125 -125v0c69 0 125 56 125 125v0c0 69 -56 125 -125 125v0zM1203 1212c-69 0 -125 -56 -125 -125v0c0 -69 56 -125 125 -125s125 56 125 125v0
-c0 69 -56 125 -125 125zM247 833h1182c61 0 111 -50 111 -111v-739c0 -61 -50 -111 -111 -111h-1182c-61 0 -111 50 -111 111v739c0 61 50 111 111 111zM838 740v0c-214 0 -388 -174 -388 -388s174 -388 388 -388s388 174 388 388s-174 388 -388 388zM838 670v0
-c176 0 318 -142 318 -318s-142 -317 -318 -317s-318 141 -318 317s142 318 318 318zM838 583v0c-106 0 -197 -72 -223 -171h119c20 36 59 61 104 61c67 0 120 -54 120 -121s-53 -120 -120 -120c-48 0 -89 28 -108 69h-117c24 -102 116 -180 225 -180c127 0 231 104 231 231
-s-104 231 -231 231z" />
-    <glyph glyph-name="shopping-basket" unicode="&#xf291;" horiz-adv-x="2048" 
-d="M1920 768c71 0 128 -57 128 -128s-57 -128 -128 -128h-15l-115 -662c-11 -61 -64 -106 -126 -106h-1280c-62 0 -115 45 -126 106l-115 662h-15c-71 0 -128 57 -128 128s57 128 128 128h1792zM485 -32c35 3 62 34 59 69l-32 416c-3 35 -34 62 -69 59s-62 -34 -59 -69
-l32 -416c3 -33 31 -59 64 -59h5zM896 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1280 32v416c0 35 -29 64 -64 64s-64 -29 -64 -64v-416c0 -35 29 -64 64 -64s64 29 64 64zM1632 27l32 416c3 35 -24 66 -59 69s-66 -24 -69 -59
-l-32 -416c-3 -35 24 -66 59 -69h5c33 0 61 26 64 59zM476 1244l-93 -412h-132l101 441c26 117 129 199 249 199h167c0 35 29 64 64 64h384c35 0 64 -29 64 -64h167c120 0 223 -82 249 -199l101 -441h-132l-93 412c-14 59 -65 100 -125 100h-167c0 -35 -29 -64 -64 -64h-384
-c-35 0 -64 29 -64 64h-167c-60 0 -111 -41 -125 -100z" />
-    <glyph glyph-name="user-o" unicode="&#xf2c0;" 
-d="M1201 752c141 -41 335 -180 335 -635c0 -206 -153 -373 -341 -373h-854c-188 0 -341 167 -341 373c0 455 194 594 335 635c-50 79 -79 172 -79 272c0 282 230 512 512 512s512 -230 512 -512c0 -100 -29 -193 -79 -272zM768 1408c-212 0 -384 -172 -384 -384
-s172 -384 384 -384s384 172 384 384s-172 384 -384 384zM1195 -128c117 0 213 109 213 245c0 315 -106 512 -304 522c-90 -79 -207 -127 -336 -127s-246 48 -336 127c-198 -10 -304 -207 -304 -522c0 -136 96 -245 213 -245h854z" />
-    <glyph glyph-name="paperclip" unicode="&#xf0c6;" horiz-adv-x="1400" 
-d="M1400 151c0 -156 -119 -275 -275 -275c-88 0 -173 38 -235 100l-777 776c-71 72 -113 170 -113 271c0 212 167 381 379 381c102 0 200 -41 273 -113l605 -606c6 -6 10 -14 10 -22c0 -21 -56 -77 -77 -77c-9 0 -17 4 -23 10l-606 607c-48 47 -113 77 -181 77
-c-142 0 -252 -115 -252 -256c0 -68 28 -133 76 -181l776 -777c38 -38 91 -63 145 -63c85 0 148 63 148 148c0 55 -25 107 -63 145l-581 581c-16 15 -38 24 -60 24c-38 0 -67 -28 -67 -67c0 -22 10 -43 25 -59l410 -410c6 -6 10 -14 10 -22c0 -21 -57 -78 -78 -78
-c-8 0 -16 4 -22 10l-410 410c-40 39 -63 94 -63 149c0 110 86 196 196 196c56 0 110 -23 149 -63l581 -581c63 -62 100 -147 100 -235z" />
-    <glyph glyph-name="deviantart" unicode="&#xf1bd;" horiz-adv-x="1024" 
-d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273c-1 0 -28 -28 -30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273c1 0 28 28 30 30h301v-303z" />
-    <glyph glyph-name="file-audio-o" unicode="&#xf1c7;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM620 686c12 -5 20 -17 20 -30v-544c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-166 167h-131c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h131l166 167c10 9 23 12 35 7zM1037 -3c-14 0 -28 5 -40 15c-28 22 -32 62 -9 90
-c65 80 100 178 100 282s-35 202 -100 282c-23 28 -19 68 9 91c27 22 68 18 90 -10c83 -102 129 -231 129 -363s-46 -261 -129 -363c-13 -16 -31 -24 -50 -24zM826 145c-15 0 -31 6 -44 17c-25 24 -27 65 -2 91c33 36 52 82 52 131s-19 95 -52 131c-25 26 -23 67 2 91
-c26 24 67 23 91 -3c56 -60 87 -137 87 -219s-31 -159 -87 -219c-13 -13 -30 -20 -47 -20z" />
-    <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1012" 
-d="M976 229l35 -159c4 -16 -5 -32 -20 -37c-4 -1 -97 -33 -217 -33c-312 0 -563 188 -647 482h-95c-18 0 -32 15 -32 32v113c0 17 14 32 32 32h66c-1 32 -1 70 1 105h-67c-18 0 -32 14 -32 32v114c0 18 14 32 32 32h98c89 280 345 466 644 466c104 0 190 -22 194 -23
-c8 -2 15 -8 20 -15c4 -7 5 -16 3 -24l-43 -159c-4 -17 -21 -27 -38 -22c-1 0 -69 17 -140 17c-168 0 -309 -91 -376 -240h468c10 0 19 -4 25 -12c6 -7 9 -17 7 -26l-24 -114c-3 -15 -16 -26 -32 -26h-488c-3 -32 -2 -66 0 -105h459c10 0 19 -5 25 -12c6 -8 8 -18 6 -27
-l-24 -112c-3 -15 -16 -26 -31 -26h-387c64 -156 208 -254 378 -254c87 0 158 24 159 24c8 3 18 2 26 -2c8 -5 13 -13 15 -21z" />
-    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1856" 
-d="M1664 896c0 106 -86 192 -192 192h-64v-384h64c106 0 192 86 192 192zM0 128h1792c0 -141 -115 -256 -256 -256h-1280c-141 0 -256 115 -256 256zM1856 896c0 -212 -172 -384 -384 -384h-64v-32c0 -123 -101 -224 -224 -224h-704c-123 0 -224 101 -224 224v736
-c0 35 29 64 64 64h1152c212 0 384 -172 384 -384z" />
-    <glyph glyph-name="university" unicode="&#xf19c;" horiz-adv-x="1920" 
-d="M960 1536l960 -384v-128h-128c0 -35 -31 -64 -69 -64h-1526c-38 0 -69 29 -69 64h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59c38 0 69 -29 69 -64v-64h-1664v64c0 35 31 64 69 64h59v768zM1851 -64c38 0 69 -29 69 -64v-128
-h-1920v128c0 35 31 64 69 64h1782z" />
-    <glyph glyph-name="times-circle-o" unicode="&#xf05c;" 
-d="M1097 457l-146 -146c-13 -13 -33 -13 -46 0l-137 137l-137 -137c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l137 137l-137 137c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l137 -137l137 137c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-137 -137
-l137 -137c13 -13 13 -33 0 -46zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="python" unicode="&#xf322;" 
-d="M759 1416v0c63 0 129 -4 193 -15c101 -17 185 -92 185 -192v-353c0 -103 -82 -188 -185 -188h-370c-126 0 -232 -108 -232 -230v-170h-127c-108 0 -171 78 -197 188c-36 147 -34 236 0 377c29 123 124 188 232 188h509v47h-370v141c0 107 28 164 185 192
-c53 9 114 15 177 15zM558 1303c-38 0 -69 -32 -69 -71s31 -70 69 -70s70 31 70 70s-32 71 -70 71zM1183 1021h139c108 0 159 -81 186 -188c37 -149 39 -261 0 -377c-37 -113 -78 -188 -186 -188h-555v-47h370v-141c0 -107 -92 -161 -185 -188c-140 -41 -253 -34 -370 0
-c-98 29 -185 88 -185 188v353c0 102 84 188 185 188h370c123 0 231 107 231 235v165zM975 127v0c-38 0 -69 -31 -69 -70s31 -71 69 -71s70 32 70 71s-32 70 -70 70zM1389 366c0 -17 -70 -30 -156 -30s-156 13 -156 30s70 30 156 30s156 -13 156 -30z" />
-    <glyph glyph-name="internet-explorer" unicode="&#xf26b;" horiz-adv-x="1792" 
-d="M1792 599c0 -35 -2 -70 -7 -104h-1151c0 -199 175 -343 367 -343c130 0 255 64 322 177h423c-114 -321 -419 -536 -759 -536c-123 0 -246 29 -356 83c-112 -57 -269 -116 -394 -116c-168 0 -237 103 -237 263c0 93 20 186 45 275c16 58 80 176 109 229
-c123 223 285 437 475 606c-153 -66 -319 -232 -427 -354c84 366 410 625 785 625c15 0 30 0 45 -1c124 57 297 117 433 117c162 0 301 -62 301 -245c0 -96 -37 -200 -75 -286c66 -119 101 -254 101 -390zM1722 1239c0 112 -80 181 -190 181c-84 0 -179 -34 -254 -70
-c162 -63 301 -179 393 -327c25 66 51 146 51 216zM128 2c0 -116 69 -179 183 -179c89 0 188 40 266 83c-163 96 -289 249 -351 428c-46 -96 -98 -224 -98 -332zM632 715h728c-7 193 -177 332 -364 332c-188 0 -357 -139 -364 -332z" />
-    <glyph glyph-name="file-video-o" unicode="&#xf1c8;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM768 768c70 0 128 -58 128 -128v-384c0 -70 -58 -128 -128 -128h-384c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h384zM1260 766c12 -5 20 -17 20 -30v-576c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -17 3 -23 9l-265 266v90l265 266
-c6 6 15 9 23 9c4 0 8 -1 12 -2z" />
-    <glyph glyph-name="angle-double-right" unicode="&#xf101;" horiz-adv-x="966" 
-d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM966 576c0 -8 -4 -17 -10 -23
-l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="safari" unicode="&#xf267;" horiz-adv-x="1792" 
-d="M949 643c0 -33 -23 -64 -58 -64c-33 0 -64 24 -64 58c0 33 24 64 59 64c32 0 63 -23 63 -58zM964 585l350 581c-47 -44 -485 -447 -497 -468l-349 -580c46 43 485 448 496 467zM1611 640c0 -131 -36 -260 -104 -371c-10 5 -52 35 -60 35c-7 0 -13 -6 -13 -13
-c0 -13 47 -37 59 -44c-99 -150 -252 -258 -426 -301l-16 67c-1 9 -7 10 -15 10c-7 0 -11 -10 -10 -15l16 -68c-48 -10 -97 -15 -146 -15c-131 0 -260 37 -372 105c6 10 44 65 44 73c0 7 -6 13 -13 13c-14 0 -44 -60 -53 -72c-151 100 -260 255 -302 432l69 15
-c8 2 10 8 10 15s-10 11 -16 10l-68 -15c-9 46 -14 92 -14 139c0 134 38 266 109 379c10 -6 58 -39 66 -39c7 0 13 5 13 12c0 14 -53 41 -65 49c102 149 257 256 433 296l15 -67c2 -8 8 -10 15 -10s11 10 10 16l-15 66c44 8 89 13 134 13c134 0 265 -38 379 -109
-c-7 -10 -39 -57 -39 -65c0 -7 5 -13 12 -13c14 0 41 52 48 64c148 -100 254 -253 295 -427l-56 -12c-9 -2 -10 -8 -10 -16c0 -7 10 -11 15 -10l57 13c9 -46 14 -93 14 -140zM1696 640c0 442 -358 800 -800 800s-800 -358 -800 -800s358 -800 800 -800s800 358 800 800z
-M1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="commenting-o" unicode="&#xf27b;" horiz-adv-x="1792" 
-d="M640 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1024 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128z
-M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
-c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -287 896 -640z" />
-    <glyph glyph-name="snowdrift" unicode="&#xf2f1;" horiz-adv-x="1448" 
-d="M1007 384c104 116 30 287 -165 383c7 -6 44 24 83 67s65 84 58 90c-195 96 -438 80 -542 -36s-30 -287 165 -383c-7 6 -44 -24 -83 -67s-65 -84 -58 -90c195 -96 438 -80 542 36zM103 1188v0c228 253 760 288 1188 78c15 -14 -42 -101 -127 -196s-167 -161 -182 -147
-c428 -210 591 -585 363 -839c-228 -253 -760 -288 -1188 -78c-15 14 42 101 127 196s167 161 182 147c-428 210 -591 585 -363 839z" />
-    <glyph glyph-name="black-tie" unicode="&#xf27e;" 
-d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
-    <glyph glyph-name="youtube-play" unicode="&#xf16a;" horiz-adv-x="1792" 
-d="M711 408l484 250l-484 253v-503zM896 1270c377 0 627 -18 627 -18c35 -4 112 -4 180 -76c0 0 55 -54 71 -178c19 -145 18 -290 18 -290v-136s1 -145 -18 -290c-16 -123 -71 -178 -71 -178c-68 -71 -145 -71 -180 -75c0 0 -250 -19 -627 -19c-466 4 -609 18 -609 18
-c-40 7 -130 5 -198 76c0 0 -55 55 -71 178c-19 145 -18 290 -18 290v136s-1 145 18 290c16 124 71 178 71 178c68 72 145 72 180 76c0 0 250 18 627 18z" />
-    <glyph glyph-name="modx" unicode="&#xf285;" horiz-adv-x="1728" 
-d="M1395 827l-614 386l92 151h855zM373 562l-184 116v858l1183 -743zM1392 697l147 -95v-858l-532 335zM1355 718l-500 -802h-855l356 571z" />
-    <glyph glyph-name="caret-square-o-right" unicode="&#xf152;" 
-d="M1088 640c0 -21 -10 -40 -27 -52l-448 -320c-19 -14 -45 -16 -66 -5c-22 11 -35 33 -35 57v640c0 24 13 46 35 57c21 11 47 9 66 -5l448 -320c17 -12 27 -31 27 -52zM1280 160v960c0 18 -14 32 -32 32h-960c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h960
-c18 0 32 14 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="gitlab" unicode="&#xf296;" horiz-adv-x="1793" 
-d="M104 830l792 -1015l-868 630c-24 18 -34 49 -25 77zM566 830h660l-330 -1015zM368 1442l198 -612h-462l198 612c11 31 55 31 66 0zM1688 830l101 -308c9 -28 -1 -59 -25 -77l-868 -630zM1688 830h-462l198 612c11 31 55 31 66 0z" />
-    <glyph glyph-name="arrows" unicode="&#xf047;" horiz-adv-x="1792" 
-d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-384v-384h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v384h-384
-v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h384v384h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256c12 12 28 19 45 19s33 -7 45 -19l256 -256
-c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-128v-384h384v128c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="refresh" unicode="&#xf021;" 
-d="M1511 480c0 -2 0 -5 -1 -7c-85 -354 -377 -601 -746 -601c-195 0 -384 77 -526 212l-129 -129c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v448c0 35 29 64 64 64h448c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-137 -137c94 -88 219 -138 348 -138
-c178 0 343 92 436 244c24 39 36 77 53 117c5 14 15 23 30 23h192c18 0 32 -15 32 -32zM1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64c0 17 7 33 19 45l138 138c-95 88 -220 137 -349 137c-178 0 -343 -92 -436 -244c-24 -39 -36 -77 -53 -117
-c-5 -14 -15 -23 -30 -23h-199c-18 0 -32 15 -32 32v7c86 355 381 601 750 601c196 0 387 -78 529 -212l130 129c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="file-o" unicode="&#xf016;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280z" />
-    <glyph glyph-name="battery-three-quarters" unicode="&#xf241;" horiz-adv-x="2304" 
-d="M256 256v768h1280v-768h-1280zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32
-h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
-    <glyph glyph-name="reddit-alien" unicode="&#xf281;" horiz-adv-x="1792" 
-d="M1792 690c0 -78 -44 -145 -109 -178c8 -31 12 -63 12 -96c0 -316 -357 -572 -797 -572c-439 0 -796 256 -796 572c0 32 4 64 11 94c-67 33 -113 101 -113 180c0 110 89 199 199 199c57 0 108 -24 145 -63c135 94 315 155 515 162l116 521c4 18 23 30 41 26l369 -81
-c24 48 75 82 133 82c83 0 150 -67 150 -149c0 -83 -67 -150 -150 -150c-82 0 -149 67 -149 149l-334 74l-104 -472c201 -6 383 -66 519 -160c36 38 87 61 143 61c110 0 199 -89 199 -199zM418 491c0 -83 67 -150 149 -150c83 0 150 67 150 150c0 82 -67 149 -150 149
-c-82 0 -149 -67 -149 -149zM1228 136c15 15 15 37 0 52c-14 14 -37 14 -51 0c-60 -61 -189 -82 -281 -82s-221 21 -281 82c-14 14 -37 14 -51 0c-15 -14 -15 -37 0 -52c95 -95 278 -102 332 -102s237 7 332 102zM1225 341c82 0 149 67 149 150c0 82 -67 149 -149 149
-c-83 0 -150 -67 -150 -149c0 -83 67 -150 150 -150z" />
-    <glyph glyph-name="square" unicode="&#xf0c8;" 
-d="M1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="ellipsis-v" unicode="&#xf142;" horiz-adv-x="384" 
-d="M384 288v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM384 1312v-192c0 -53 -43 -96 -96 -96h-192
-c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="glide-g" unicode="&#xf2a6;" horiz-adv-x="1461" 
-d="M707 1231c0 53 -5 99 -69 99c-27 0 -54 -9 -78 -23c-151 -83 -213 -298 -213 -460c0 -108 37 -252 169 -252c30 0 68 -8 76 27c32 154 64 309 96 463c10 48 19 97 19 146zM1461 575c0 -10 -13 -20 -23 -20l-6 1c-68 10 -128 28 -197 28c-125 0 -240 -37 -351 -93
-c-14 -7 -17 -13 -21 -27c-18 -68 -30 -138 -47 -206c-60 -233 -255 -514 -522 -514c-182 0 -294 124 -294 303c0 97 63 286 180 286c41 0 202 -53 203 -95c-2 -8 -157 -88 -157 -223c0 -41 20 -73 65 -73c159 0 232 290 248 412v9c0 8 -32 4 -38 4c-301 0 -477 168 -477 471
-c0 286 186 635 491 688c35 6 70 9 106 9c242 0 374 -113 374 -360c0 -167 -57 -321 -81 -484l3 -3c108 61 222 119 350 119c13 0 41 -8 53 -13c26 -10 141 -191 141 -219z" />
-    <glyph glyph-name="globe" unicode="&#xf0ac;" 
-d="M768 1404c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM737 1186v0c-18 0 -40 -7 -58 -7c-27 0 -61 12 -81 0s-18 -37 -27 -55s-28 -34 -28 -54s19 -36 28 -54s2 -47 27 -54s54 36 81 54s69 32 81 54s0 36 0 54s16 39 0 55
-c-5 5 -14 7 -23 7zM491 1178h-6s-44 -8 -76 -13c-136 -92 -261 -300 -278 -464c23 -12 46 -22 60 -36c27 -27 83 -27 88 -56s-24 -62 -33 -80s-31 -31 -27 -54s36 -36 54 -54s37 -22 54 -54s20 -98 27 -135c9 -47 23 -85 44 -118c27 -19 72 -44 102 -58c10 28 10 93 16 122
-c7 37 13 109 27 135s19 19 28 28s18 15 28 28s17 34 26 52s30 31 26 53s-36 37 -54 55s-29 39 -55 54s-73 18 -101 25s-127 12 -129 13c-2 0 -1 -6 -7 2s-2 39 -2 57s11 34 24 66c13 18 5 10 25 24c10 9 43 -44 57 -44s-3 91 6 100c36 36 128 98 128 136s-37 36 -55 54
-s-46 -30 -111 -30s76 103 85 112s23 17 27 27s0 18 0 27s12 22 8 25c-2 1 -4 1 -6 1zM1212 1096c-62 -8 -139 -10 -182 -26c-45 -17 -54 -36 -81 -54s-67 -28 -81 -54s0 -54 0 -81s-26 -68 0 -82s55 37 82 55s63 64 81 54s6 -7 0 -27s-51 -41 -52 -81s102 -73 68 -126
-s-188 46 -232 17s-19 -54 -28 -81s-37 -52 -27 -81s52 -34 81 -54s81 -56 82 -58s20 -99 27 -135c14 -73 -27 -199 76 -231c31 14 78 41 106 60c13 34 24 72 35 94c22 44 71 123 80 161s0 37 0 55s7 30 0 54s-36 54 -54 81s-34 64 -54 81s-46 18 -54 27s-4 8 -4 13
-s-4 7 5 14s34 8 54 0s36 -36 54 -54s25 -51 54 -54s54 36 81 54c25 17 52 56 76 55c-12 131 -98 312 -193 404z" />
-    <glyph glyph-name="hashnode" unicode="&#xf317;" 
-d="M246 1408h1044c136 0 246 -110 246 -246v-1044c0 -136 -110 -246 -246 -246h-1044c-136 0 -246 110 -246 246v1044c0 136 110 246 246 246zM1153 23v0c87 1 158 71 162 158s-62 162 -149 171l-315 556c-46 83 -135 78 -167 -39c-28 -111 -20 -216 -28 -342
-c0 -1 -1 -2 -2 -2s-2 1 -2 1l-281 560c20 16 37 50 37 75c0 52 -41 93 -93 93s-94 -41 -94 -93s42 -93 94 -93c4 0 7 1 11 1c118 -304 250 -659 297 -741c32 -78 141 -53 144 31l12 444c0 3 3 3 4 1l226 -537c-11 -20 -21 -55 -21 -78v-1c0 -91 74 -165 165 -165z" />
-    <glyph glyph-name="comment-o" unicode="&#xf0e5;" horiz-adv-x="1792" 
-d="M896 1152c-416 0 -768 -234 -768 -512c0 -149 100 -291 273 -389l87 -50l-27 -96c-19 -71 -44 -126 -70 -172c101 42 193 99 275 171l43 38l57 -6c43 -5 87 -8 130 -8c416 0 768 234 768 512s-352 512 -768 512zM1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8
-c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22h-5c-20 0 -38 16 -43 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 354 401 640 896 640s896 -286 896 -640z" />
-    <glyph glyph-name="bluetooth" unicode="&#xf293;" horiz-adv-x="1322" 
-d="M734 483l148 -148l-149 -149zM733 1094l149 -149l-148 -148zM603 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1322 640c0 -710 -270 -896 -661 -896s-661 186 -661 896s270 896 661 896s661 -186 661 -896z
-" />
-    <glyph glyph-name="hand-pointer-o" unicode="&#xf25a;" horiz-adv-x="1664" 
-d="M640 1408c-71 0 -128 -57 -128 -128v-896l-151 202c-25 33 -65 54 -107 54c-70 0 -126 -59 -126 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h718c29 0 55 20 62 48l92 368c16 64 24 129 24 194v217c0 53 -41 101 -96 101c-53 0 -96 -43 -96 -96h-32v61
-c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-64h-32v90c0 72 -55 134 -128 134c-71 0 -128 -57 -128 -128v-96h-32v570c0 72 -55 134 -128 134zM640 1536c143 0 256 -120 256 -262v-220c11 1 21 2 32 2c65 0 126 -25 173 -69c31 14 65 21 99 21c72 0 139 -32 184 -87
-c19 5 37 7 56 7c126 0 224 -105 224 -229v-217c0 -75 -9 -151 -28 -225l-92 -368c-21 -85 -98 -145 -186 -145h-718c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 140 114 256 254 256c46 0 91 -12 130 -35v547c0 141 115 256 256 256zM768 128h-32v384h32
-v-384zM1024 128h-32v384h32v-384zM1280 128h-32v384h32v-384z" />
-    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664" 
-d="M1664 960v-256c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-192h96c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h672v192c0 247 201 448 448 448
-s448 -201 448 -448z" />
-    <glyph glyph-name="quote-right" unicode="&#xf10e;" horiz-adv-x="1664" 
-d="M768 1216v-704c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192zM1664 1216v-704
-c0 -282 -230 -512 -512 -512h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64c141 0 256 115 256 256v32c0 53 -43 96 -96 96h-224c-106 0 -192 86 -192 192v384c0 106 86 192 192 192h384c106 0 192 -86 192 -192z" />
-    <glyph glyph-name="arrow-left" unicode="&#xf060;" horiz-adv-x="1472" 
-d="M1472 640v-128c0 -68 -45 -128 -117 -128h-704l293 -294c24 -23 38 -56 38 -90s-14 -67 -38 -90l-75 -76c-23 -23 -56 -37 -90 -37s-67 14 -91 37l-651 652c-23 23 -37 56 -37 90s14 67 37 91l651 650c24 24 57 38 91 38s66 -14 90 -38l75 -74c24 -24 38 -57 38 -91
-s-14 -67 -38 -91l-293 -293h704c72 0 117 -60 117 -128z" />
-    <glyph glyph-name="scissors" unicode="&#xf0c4;" horiz-adv-x="1792" 
-d="M960 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1260 576l507 -398c18 -13 27 -35 25 -56c-3 -22 -16 -41 -35 -51l-128 -64c-9 -5 -19 -7 -29 -7c-11 0 -22 3 -31 8l-690 387l-110 -66c-4 -2 -8 -4 -12 -5c9 -31 13 -64 10 -97
-c-9 -103 -78 -201 -188 -271c-85 -54 -183 -84 -277 -84c-90 0 -166 27 -222 78c-57 53 -86 129 -79 207c9 102 78 201 187 271c85 54 184 84 278 84c56 0 107 -11 151 -31c6 9 13 16 22 22l122 73l-122 73c-9 6 -16 13 -22 22c-44 -20 -95 -31 -151 -31
-c-94 0 -193 30 -278 84c-109 70 -178 169 -187 271c-7 78 22 154 79 206c56 52 132 79 222 79c94 0 192 -30 277 -84c110 -69 179 -168 188 -271c3 -33 -1 -66 -10 -97c4 -1 8 -3 12 -5l110 -66l690 387c9 5 20 8 31 8c10 0 20 -2 29 -7l128 -64c19 -10 32 -29 35 -51
-c2 -21 -7 -43 -25 -56zM579 836c61 56 23 157 -85 225c-61 39 -132 59 -192 59c-46 0 -87 -12 -113 -36c-61 -56 -23 -157 85 -225c61 -39 131 -59 192 -59c46 0 87 12 113 36zM494 91c108 68 146 169 85 225c-26 24 -67 36 -113 36c-61 0 -131 -20 -192 -59
-c-108 -68 -146 -169 -85 -225c26 -24 67 -36 113 -36c60 0 131 20 192 59zM672 704l96 -58v11c0 23 13 44 33 56l14 8l-79 47l-26 -26c-8 -8 -14 -16 -22 -23c-3 -3 -5 -4 -7 -6zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8c2 -3 4 -4 7 -6
-c8 -8 14 -16 22 -24l26 -26zM1600 64l128 64l-520 408l-177 -138c-3 -4 -8 -5 -13 -7z" />
-    <glyph glyph-name="ellipsis-h" unicode="&#xf141;" horiz-adv-x="1408" 
-d="M384 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM896 800v-192c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96zM1408 800v-192c0 -53 -43 -96 -96 -96h-192
-c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h192c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="scribd" unicode="&#xf28a;" horiz-adv-x="1464" 
-d="M1464 -13c0 -119 -96 -216 -216 -216s-217 97 -217 216c0 120 97 217 217 217s216 -97 216 -217zM1231 268c-152 -20 -270 -150 -270 -308c0 -49 12 -97 33 -138c-90 -48 -212 -78 -379 -78c-532 0 -615 376 -615 426c0 51 30 218 218 218s214 -161 214 -194
-c0 0 0 -34 -23 -81c64 -60 215 -60 215 -60c151 0 265 74 265 184c0 111 -128 165 -420 302c-292 138 -402 239 -402 490c0 252 168 507 587 507s577 -235 577 -396s-137 -201 -188 -201c-50 0 -235 -17 -235 261c-33 37 -177 37 -177 37c-145 0 -209 -110 -209 -177
-c0 -68 27 -152 329 -252c463 -154 480 -355 480 -540z" />
-    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="444" 
-d="M414 288v-224c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v224c0 35 29 64 64 64h256c35 0 64 -29 64 -64zM444 1344l-28 -768c-1 -35 -31 -64 -66 -64h-256c-35 0 -65 29 -66 64l-28 768c-1 35 27 64 62 64h320c35 0 63 -29 62 -64z" />
-    <glyph glyph-name="try" unicode="&#xf195;" horiz-adv-x="1152" 
-d="M1152 704c0 -388 -316 -704 -704 -704h-160c-18 0 -32 14 -32 32v611l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71v93l-215 -66c-3 -1 -6 -1 -9 -1c-7 0 -13 2 -19 6c-8 6 -13 16 -13 26v128c0 14 9 26 23 31l233 71
-v250c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-181l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-93l375 116c9 3 20 1 28 -5s13 -16 13 -26v-128c0 -14 -9 -26 -23 -31l-393 -121v-487c250 17 448 225 448 479c0 18 14 32 32 32h160
-c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="assistive-listening-systems" unicode="&#xf2a2;" horiz-adv-x="1792" 
-d="M128 -192c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM320 0c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM365 365l256 -256l-90 -90l-256 256zM704 384c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64z
-M1411 704c0 -166 -78 -255 -146 -334c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64
-s-64 29 -64 64c0 318 258 576 576 576s576 -258 576 -576zM896 576c0 -35 -29 -64 -64 -64s-64 29 -64 64s29 64 64 64s64 -29 64 -64zM1184 704c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 124 -100 224 -224 224c-123 0 -224 -100 -224 -224c0 -35 -29 -64 -64 -64
-s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352zM1578 993c13 -33 -4 -70 -37 -83c-7 -3 -15 -4 -23 -4c-25 0 -50 15 -59 41c-45 117 -123 219 -224 295c-28 21 -34 61 -13 89c22 28 62 34 90 13c120 -90 212 -212 266 -351zM1788 1074c12 -33 -4 -70 -37 -83
-c-8 -3 -15 -4 -23 -4c-26 0 -50 15 -60 41c-60 156 -163 292 -297 393c-29 21 -34 61 -13 89c21 29 61 34 89 13c154 -115 272 -271 341 -449z" />
-    <glyph glyph-name="flag-o" unicode="&#xf11d;" horiz-adv-x="1728" 
-d="M1600 491v616c-80 -43 -192 -91 -306 -91c-53 0 -102 10 -145 32c-107 53 -223 104 -362 104c-129 0 -287 -63 -403 -127v-599c132 61 300 113 433 113c154 0 254 -51 361 -104l28 -14c28 -14 62 -22 101 -22c111 0 231 59 293 92zM256 1280c0 -47 -26 -88 -64 -110
-v-1266c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14
-c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2
-c19 -12 31 -33 31 -55z" />
-    <glyph glyph-name="wikipedia-w" unicode="&#xf266;" horiz-adv-x="2304" 
-d="M1494 -103l-295 695c-117 -229 -246 -468 -357 -695c-1 -1 -54 0 -54 1c-169 395 -346 787 -515 1183c-41 96 -178 252 -272 251c0 11 -1 36 -1 51h583v-50c-69 -4 -190 -48 -156 -123c79 -179 373 -865 452 -1039c54 107 208 393 271 514c-50 102 -211 482 -262 576
-c-35 64 -130 70 -201 71v50l513 -1v-47c-70 -2 -137 -28 -106 -94c68 -144 110 -245 173 -377c20 39 125 250 173 363c32 74 -14 103 -139 106c1 13 0 37 1 49c160 1 400 1 443 2v-49c-81 -3 -165 -46 -209 -114l-213 -442c23 -58 228 -514 249 -564l441 1017
-c-31 83 -131 101 -170 102v50l460 -4l1 -2l-1 -44c-101 -3 -162 -57 -201 -145c-90 -208 -372 -864 -559 -1291h-49z" />
-    <glyph glyph-name="battery-quarter" unicode="&#xf243;" horiz-adv-x="2304" 
-d="M256 256v768h512v-768h-512zM2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856
-c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
-    <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664" 
-d="M384 0h896v256h-896v-256zM384 640h896v384h-160c-53 0 -96 43 -96 96v160h-640v-640zM1536 576c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 576v-416c0 -17 -15 -32 -32 -32h-224v-160c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v160
-h-224c-17 0 -32 15 -32 32v416c0 105 87 192 192 192h64v544c0 53 43 96 96 96h672c53 0 126 -30 164 -68l152 -152c38 -38 68 -111 68 -164v-256h64c105 0 192 -87 192 -192z" />
-    <glyph glyph-name="tipeee" unicode="&#xf301;" horiz-adv-x="2304" 
-d="M116 1259h2072c64 0 116 -52 116 -116v-1006c0 -64 -52 -116 -116 -116h-2072c-64 0 -116 52 -116 116v1006c0 64 52 116 116 116zM756 1006v0c-59 0 -90 -47 -90 -85c0 -40 37 -84 90 -84c59 0 92 38 92 84c0 38 -34 85 -92 85zM1672 966v-159l45 -211h110l45 211v159
-h-200zM534 925l-154 -49v-77h-45v-109h45v-148c3 -107 7 -176 132 -176c19 0 77 6 102 16v107c-16 -7 -42 -14 -53 -14c-33 0 -27 39 -27 67v148h80v109h-80v126zM1212 806v0c-50 0 -85 -24 -101 -36l-14 29h-192v-111h35v-368h-35v-109h250v109h-45v85c6 -5 40 -33 109 -33
-c108 0 190 82 190 215c0 119 -67 219 -197 219zM643 799v-109h35v-199h-35v-110h234v110h-40v308h-194zM1169 688v0c37 0 61 -53 61 -103c0 -64 -25 -104 -60 -104c-32 0 -60 43 -60 100c-3 66 26 107 59 107zM1764 555c-60 0 -95 -47 -95 -89c0 -43 41 -86 95 -86
-c61 0 99 39 99 86c0 48 -40 89 -99 89z" />
-    <glyph glyph-name="check-circle-o" unicode="&#xf05d;" 
-d="M1171 723l-422 -422c-25 -25 -65 -25 -90 0l-294 294c-25 25 -25 65 0 90l102 102c25 25 65 25 90 0l147 -147l275 275c25 25 65 25 90 0l102 -102c25 -25 25 -65 0 -90zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544z
-M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="level-up" unicode="&#xf148;" horiz-adv-x="1024" 
-d="M1018 933c-11 -23 -33 -37 -58 -37h-192v-864c0 -18 -14 -32 -32 -32h-704c-12 0 -24 7 -29 18c-5 12 -4 25 4 35l160 192c6 7 16 11 25 11h320v640h-192c-25 0 -47 14 -58 37c-10 22 -7 49 9 68l320 384c24 29 74 29 98 0l320 -384c16 -19 20 -46 9 -68z" />
-    <glyph glyph-name="houzz" unicode="&#xf27c;" horiz-adv-x="1024" 
-d="M512 345l512 295v-591l-512 -296v592zM0 640l512 -295l-512 -296v591zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
-    <glyph glyph-name="lemon-o" unicode="&#xf094;" horiz-adv-x="1535" 
-d="M1407 710c0 47 -9 170 -25 210c-19 48 -30 75 -30 129c0 46 10 91 10 136c0 19 -1 39 -10 55c-4 1 -9 1 -13 1c-39 0 -78 -9 -117 -9c-119 0 -232 48 -351 48c-93 0 -183 -35 -269 -69c-68 -27 -143 -59 -202 -103c-202 -153 -272 -433 -272 -674c0 -81 25 -160 25 -241
-c0 -46 -22 -88 -22 -132c0 -28 16 -51 46 -51c49 0 96 22 146 22c114 0 225 -31 339 -31c89 0 201 7 284 36c263 93 461 397 461 673zM1535 712c0 -333 -231 -684 -547 -796c-99 -35 -222 -44 -326 -44c-114 0 -226 29 -339 29c-48 0 -96 -29 -146 -29
-c-99 0 -174 89 -174 184c0 47 22 89 22 135c0 81 -25 160 -25 242c0 284 87 598 323 777c68 52 153 89 232 120c102 41 205 78 316 78c119 0 232 -48 349 -48c38 0 76 10 115 10c114 0 155 -81 155 -185c0 -45 -10 -91 -10 -136c0 -36 9 -50 21 -82c23 -58 34 -191 34 -255z
-" />
-    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664" 
-d="M896 708v-580c0 -139 -117 -256 -256 -256s-256 117 -256 256c0 35 29 64 64 64s64 -29 64 -64c0 -67 61 -128 128 -128s128 61 128 128v580c21 7 42 11 64 11s43 -4 64 -11zM1664 681c0 -17 -15 -32 -32 -32c-9 0 -16 4 -23 10c-58 54 -112 92 -195 92
-c-95 0 -177 -59 -231 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -28 -17c-14 0 -22 6 -29 17c-11 17 -20 35 -32 52c-54 75 -135 134 -230 134s-176 -59 -230 -134c-12 -17 -21 -35 -32 -52c-7 -11 -15 -17 -29 -17c-13 0 -21 6 -28 17c-11 17 -20 35 -32 52
-c-54 75 -136 134 -231 134c-83 0 -137 -38 -195 -92c-7 -6 -14 -10 -23 -10c-17 0 -32 15 -32 32c0 3 0 5 1 7c92 378 457 592 831 592c372 0 741 -214 831 -592c1 -2 1 -4 1 -7zM896 1408v-98c-21 1 -43 2 -64 2s-43 -1 -64 -2v98c0 35 29 64 64 64s64 -29 64 -64z" />
-    <glyph glyph-name="bell-o" unicode="&#xf0a2;" horiz-adv-x="1664" 
-d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM1664 128c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128
-c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441c0 -483 172 -707 320 -832z" />
-    <glyph glyph-name="shaarli" unicode="&#xf2f5;" horiz-adv-x="1651" 
-d="M878 1408c161 0 254 -160 278 -479h66c287 -44 429 -135 426 -273c24 -163 -80 -238 -312 -226c178 -156 241 -302 191 -437c-39 -108 -133 -143 -282 -107c-164 82 -281 176 -349 282h-43c-64 -188 -188 -282 -372 -282h-64c-153 47 -209 140 -166 278l80 221h-23
-c-225 32 -326 131 -305 298c6 153 160 231 462 233c84 9 119 36 105 80c0 275 103 412 308 412zM830 1182c-56 4 -83 -72 -82 -227l-5 -128c-5 -64 -25 -96 -61 -96l-360 -20c-56 -2 -85 -25 -85 -69c0 -43 31 -65 92 -68c211 11 310 -4 296 -43l-64 -137
-c-108 -163 -135 -258 -80 -287c73 -44 176 70 310 342c32 29 59 29 80 0c94 -100 171 -182 232 -246c62 -64 113 -83 151 -57c46 49 33 101 -37 157c-68 58 -146 137 -234 237c-9 33 -8 50 6 50c298 -20 441 -1 429 57c9 64 -121 96 -388 96c-41 -8 -74 2 -100 29v224
-c0 125 -30 186 -89 184c-3 1 -8 2 -11 2v0z" />
-    <glyph glyph-name="cc-diners-club" unicode="&#xf24c;" horiz-adv-x="2304" 
-d="M858 295v693c-139 -54 -238 -189 -238 -347s99 -293 238 -346zM1362 641c0 158 -99 293 -238 347v-694c139 54 238 189 238 347zM1577 641c0 -323 -262 -586 -586 -586c-323 0 -586 263 -586 586c0 324 263 586 586 586c324 0 586 -262 586 -586zM1960 634
-c0 382 -319 646 -669 646h-301c-354 0 -646 -264 -646 -646c0 -349 292 -634 646 -634h301c350 0 669 285 669 634zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="undo" unicode="&#xf0e2;" 
-d="M1536 640c0 -423 -345 -768 -768 -768c-229 0 -445 101 -591 277c-10 13 -9 32 2 43l137 138c7 6 16 9 25 9c9 -1 18 -5 23 -12c98 -127 245 -199 404 -199c282 0 512 230 512 512s-230 512 -512 512c-131 0 -255 -50 -348 -137l137 -138c19 -18 24 -46 14 -69
-c-10 -24 -33 -40 -59 -40h-448c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l130 -129c141 133 332 212 529 212c423 0 768 -345 768 -768z" />
-    <glyph glyph-name="rebel" unicode="&#xf1d0;" horiz-adv-x="1756" 
-d="M0 662c10 286 156 550 421 724c1 0 7 2 4 -3c-21 -20 -402 -469 -51 -818c180 -179 325 -9 325 -9c139 181 -2 455 -2 455c-36 90 -165 145 -165 145l104 115c88 -38 156 -140 156 -140c3 107 -79 222 -79 222l161 183l160 -181c-74 -104 -79 -226 -79 -226
-c50 83 157 142 157 142l103 -115c-99 -32 -164 -144 -164 -144c-57 -103 -98 -323 2 -460c117 -161 317 10 317 10c371 332 -38 813 -38 813c-22 20 3 10 3 10c181 -132 414 -305 420 -740c7 -526 -361 -901 -876 -901c-503 0 -894 420 -879 918z" />
-    <glyph glyph-name="codiepie" unicode="&#xf284;" horiz-adv-x="1723" 
-d="M1584 246l-218 111c-98 -160 -272 -258 -460 -258c-298 0 -539 241 -539 538c0 298 241 539 539 539c175 0 339 -85 440 -229l215 125c-147 226 -396 361 -665 361c-438 0 -793 -355 -793 -793s355 -793 793 -793c284 0 547 152 688 399zM1030 643l693 -352
-c-152 -332 -457 -547 -827 -547c-495 0 -896 401 -896 896s401 896 896 896c352 0 642 -194 806 -500zM1543 640h-39v-160h-96v352h136c111 0 121 -192 -1 -192z" />
-    <glyph glyph-name="soundcloud" unicode="&#xf1be;" horiz-adv-x="2304" 
-d="M784 164c-1 -13 -11 -23 -24 -23c-12 0 -22 10 -23 23l-14 241l14 523c0 13 11 24 23 24c13 0 23 -11 24 -24l16 -523zM1080 193l-1 -24c0 -8 -3 -15 -9 -20c-5 -5 -12 -9 -20 -9c-9 0 -17 4 -23 11c-4 5 -6 11 -6 17v1c-11 235 -11 236 -11 236l10 579l1 6
-c0 10 5 19 13 24c5 3 10 5 16 5s11 -2 16 -5c8 -5 13 -14 13 -24l12 -586zM35 533l20 -128l-20 -126c-1 -5 -4 -9 -9 -9s-8 4 -9 9l-17 126l17 128c1 5 4 9 9 9s8 -4 9 -9zM121 612l26 -207l-26 -203c-1 -5 -5 -9 -10 -9s-9 4 -9 10l-23 202l23 207c0 5 4 9 9 9s9 -4 10 -9z
-M401 159zM213 650l25 -245l-25 -237c0 -6 -5 -11 -11 -11s-11 5 -12 11l-21 237l21 245c1 7 6 12 12 12s11 -5 11 -12zM307 657l23 -252l-23 -244c-1 -8 -7 -13 -14 -13s-13 5 -13 13l-21 244l21 252c0 8 6 13 13 13s13 -5 14 -13zM401 639l21 -234l-21 -246
-c-1 -9 -8 -16 -16 -16s-15 7 -15 16l-20 246l20 234c0 8 7 15 15 15s15 -7 16 -15zM784 164zM495 785l21 -380l-21 -246c0 -10 -8 -18 -17 -18c-10 0 -17 8 -18 18l-18 246l18 380c1 10 8 18 18 18c9 0 17 -8 17 -18zM589 871l19 -468l-19 -244c0 -11 -9 -19 -19 -19
-c-11 0 -19 8 -20 19l-16 244l16 468c1 11 9 19 20 19c10 0 19 -8 19 -19zM687 911l18 -506l-18 -242c-1 -12 -10 -21 -22 -21c-11 0 -20 9 -21 21l-16 242l16 506c0 12 10 22 21 22c12 0 21 -10 22 -22zM1079 169zM881 915l15 -510l-15 -239c0 -14 -11 -25 -25 -25
-s-24 11 -25 25l-14 239l14 510c0 14 11 25 25 25s25 -11 25 -25zM980 896l14 -492l-14 -236c0 -15 -12 -27 -27 -27s-27 12 -28 27l-12 236l12 492c1 16 13 28 28 28s26 -12 27 -28zM1192 404l-14 -231c0 -17 -14 -31 -31 -31s-31 14 -32 31l-6 114l-6 117l12 636v3
-c1 9 5 18 12 24c5 4 12 7 20 7c5 0 11 -2 15 -5c9 -5 15 -15 16 -26zM2304 423c0 -156 -127 -282 -283 -282h-786c-17 2 -31 15 -31 33v899c0 17 6 25 28 33c55 22 117 34 181 34c261 0 475 -200 498 -455c34 14 71 22 110 22c156 0 283 -127 283 -284z" />
-    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152" 
-d="M1152 832v-128c0 -296 -224 -540 -512 -572v-132h256c35 0 64 -29 64 -64s-29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h256v132c-288 32 -512 276 -512 572v128c0 35 29 64 64 64s64 -29 64 -64v-128c0 -247 201 -448 448 -448s448 201 448 448v128
-c0 35 29 64 64 64s64 -29 64 -64zM896 1216v-512c0 -176 -144 -320 -320 -320s-320 144 -320 320v512c0 176 144 320 320 320s320 -144 320 -320z" />
-    <glyph glyph-name="laravel" unicode="&#xf30b;" horiz-adv-x="1870" 
-d="M1863 682v0c13 -14 10 -25 -13 -31c-20 -6 -203 -54 -255 -68c76 -101 219 -294 231 -312c17 -25 2 -32 -23 -42s-571 -207 -608 -218c-48 -14 -69 -21 -100 22c-23 33 -149 259 -211 371c-117 -30 -330 -86 -392 -101c-60 -14 -86 22 -96 44s-365 786 -387 839
-c-23 53 2 62 24 64s335 28 376 30s44 -8 62 -34l450 -753l566 136c-31 44 -173 246 -187 265c-15 22 0 32 25 36s242 41 261 44s33 9 63 -27s201 -251 214 -265zM834 472c7 1 10 5 3 18s-422 729 -422 729c-4 7 -3 9 -13 9s-305 -27 -310 -27s-5 -8 0 -18s380 -783 382 -789
-s2 -8 19 -4s334 81 341 82zM1728 304c-5 8 -178 244 -187 258s-13 10 -27 6l-552 -143s169 -293 182 -312s21 -17 31 -13s531 179 547 185s11 11 6 19zM1763 696c13 3 22 7 16 14s-149 189 -159 203s-18 12 -27 10c-8 -2 -196 -36 -208 -38s-8 -8 -3 -15l166 -227
-s202 50 215 53z" />
-    <glyph glyph-name="indent" unicode="&#xf03c;" horiz-adv-x="1792" 
-d="M352 704c0 -8 -3 -17 -9 -23l-288 -288c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v576c0 17 15 32 32 32c8 0 17 -3 23 -9l288 -288c6 -6 9 -15 9 -23zM1792 224v-192c0 -17 -15 -32 -32 -32h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z
-M1792 608v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 992v-192c0 -17 -15 -32 -32 -32h-1088c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1088c17 0 32 -15 32 -32zM1792 1376v-192c0 -17 -15 -32 -32 -32
-h-1728c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1728c17 0 32 -15 32 -32z" />
-    <glyph glyph-name="address-card-o" unicode="&#xf2bc;" horiz-adv-x="2048" 
-d="M1024 405c0 -87 -57 -149 -128 -149h-512c-71 0 -128 62 -128 149c0 155 38 327 196 327c49 -28 115 -76 188 -76s139 48 188 76c158 0 196 -172 196 -327zM867 925c0 -126 -102 -227 -227 -227s-227 101 -227 227c0 125 102 227 227 227s227 -102 227 -227zM1792 480
-v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1792 732v-56c0 -20 -16 -36 -36 -36h-568c-20 0 -36 16 -36 36v56c0 20 16 36 36 36h568c20 0 36 -16 36 -36zM1792 992v-64c0 -18 -14 -32 -32 -32h-576
-c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM1920 32v1216c0 17 -15 32 -32 32h-1728c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h352v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h768v96c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-96h352
-c17 0 32 15 32 32zM2048 1248v-1216c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="language" unicode="&#xf1ab;" 
-d="M654 458c-2 -7 -51 16 -64 21c-13 6 -72 39 -87 49s-72 57 -79 60c-36 -55 -82 -120 -134 -181c-18 -21 -72 -89 -105 -110c-5 -3 -34 -6 -38 -4c16 12 62 69 82 92c25 29 144 195 164 233c21 38 84 164 87 176c-10 1 -89 -26 -110 -33c-20 -6 -75 -19 -79 -22
-c-4 -4 -1 -16 -3 -20s-20 -13 -31 -15c-10 -3 -33 -4 -47 0c-13 3 -25 16 -28 21c0 0 -4 6 -5 23c12 4 32 5 54 11s76 22 105 32s85 31 102 35c18 3 63 33 87 41s41 18 42 13s0 -27 -1 -33c-1 -5 -49 -99 -56 -114c-4 -8 -32 -61 -77 -131c16 -7 50 -21 64 -28
-c17 -8 136 -58 142 -60s17 -48 15 -56zM449 944c3 -17 -2 -24 -4 -28c-10 -19 -35 -32 -50 -38s-40 -12 -60 -12c-9 1 -27 4 -49 26c-12 13 -21 48 -17 44s33 -8 46 -5s44 12 58 16c15 5 45 13 55 14c10 0 18 -4 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032
-l-694 -233v-1031zM1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66c-81 -52 -181 -92 -276 -108c-29 -6 -62 -12 -91 -12h-84c-106 0 -299 63 -383 124c-6 5 -8 9 -8 16c0 11 8 19 18 19
-c9 0 56 -29 69 -35c90 -45 216 -86 317 -86c125 0 210 16 324 65c33 15 62 34 93 51zM1536 1050v-1079c-773 246 -774 246 -774 246c-16 -7 -733 -249 -743 -249c-8 0 -15 5 -18 13c0 1 -1 2 -1 3v1078c1 3 2 8 4 10c6 7 14 9 20 11c3 1 64 21 149 50v384l558 -198
-c7 2 629 217 638 217c11 0 20 -8 20 -21v-418z" />
-    <glyph glyph-name="circle-thin" unicode="&#xf1db;" 
-d="M768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="drupal" unicode="&#xf1a9;" 
-d="M1167 -50c-2 7 -8 17 -24 5c-34 -25 -110 -56 -218 -56s-159 23 -193 49c-5 4 -3 4 -13 4c-11 0 -17 -5 -26 -12c-8 -7 -12 -24 0 -36c74 -68 198 -62 289 -54c92 9 170 63 178 71c12 12 9 22 7 29zM1128 65c-7 17 -19 47 -39 61c-20 13 -49 15 -76 15s-42 2 -71 -10
-s-59 -39 -78 -56s-22 -30 -12 -44c10 -13 21 -5 49 19c29 23 48 44 107 44s69 -22 81 -44s13 -25 25 -19c14 7 21 17 14 34zM1483 346c0 52 -23 140 -108 140c-80 0 -242 -166 -327 -167c-99 -2 -236 196 -434 194c-156 -1 -279 -125 -281 -257c-1 -74 23 -129 74 -164
-c34 -23 65 -37 166 -37c168 0 381 208 479 205c78 -3 199 -194 260 -198c48 -4 73 18 114 77c40 60 57 154 57 207zM1536 506c0 -448 -354 -744 -761 -744c-408 0 -775 321 -775 758c0 436 340 638 403 671c75 40 129 61 214 129c42 33 77 81 88 198
-c61 -73 134 -158 186 -193c85 -56 170 -78 259 -134c54 -33 386 -236 386 -685z" />
-    <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664" 
-d="M1664 650c0 -109 -20 -215 -60 -314l-20 -49l-185 -33c-29 -109 -128 -190 -247 -190v-32c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-32c96 0 179 -53 223 -131l68 12c19 62 29 126 29 193c0 302 -299 566 -640 566
-s-640 -264 -640 -566c0 -67 10 -131 29 -193l68 -12c44 78 127 131 223 131v32c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v32c-119 0 -218 81 -247 190l-185 33l-20 49c-40 99 -60 205 -60 314c0 411 381 758 832 758
-s832 -347 832 -758z" />
-    <glyph glyph-name="cc-mastercard" unicode="&#xf1f1;" horiz-adv-x="2304" 
-d="M1119 1195c-83 55 -181 85 -281 85c-281 0 -509 -228 -509 -508c0 -281 228 -509 509 -509c100 0 198 30 281 85c-268 218 -266 629 0 847zM1152 1171c-258 -203 -259 -597 0 -799c259 202 258 596 0 799zM1185 1195c265 -218 269 -630 0 -847c83 -55 182 -85 281 -85
-c281 0 509 228 509 509c0 280 -228 508 -509 508c-100 0 -198 -30 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17zM1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-5v3h5v-1zM1947 7h3l-4 5c2 0 2 1 3 1c1 1 1 2 1 3s0 2 -1 3c-1 0 -2 1 -4 1h-6
-v-13h3v5h1zM685 75c0 24 15 43 41 43c24 0 40 -19 40 -43c0 -25 -16 -43 -40 -43c-26 0 -41 19 -41 43zM1158 119c19 0 32 -11 35 -32h-70c3 19 15 32 35 32zM1514 75c0 24 15 43 40 43s41 -19 41 -43c0 -25 -16 -43 -41 -43s-40 19 -40 43zM1786 75c0 24 16 43 41 43
-c24 0 41 -19 41 -43c0 -25 -17 -43 -41 -43c-25 0 -41 19 -41 43zM1944 3c-1 0 -2 0 -4 1c-1 0 -2 1 -3 2s-2 2 -2 3c-1 2 -1 3 -1 4c0 2 0 3 1 4c0 2 1 3 2 4s2 1 3 2c2 1 3 1 4 1c2 0 3 0 4 -1c2 -1 3 -1 4 -2s1 -2 2 -4c0 -1 1 -2 1 -4c0 -1 -1 -2 -1 -4
-c-1 -1 -1 -2 -2 -3s-2 -2 -4 -2c-1 -1 -2 -1 -4 -1zM599 7h30v85c0 32 -21 53 -54 54c-17 0 -35 -5 -47 -24c-9 15 -24 24 -45 24c-14 0 -28 -5 -39 -20v16h-30v-135h30v75c0 24 13 36 33 36s30 -13 30 -36v-75h29v75c0 24 14 36 33 36c20 0 30 -13 30 -36v-75zM765 7h29
-v135h-29v-16c-10 12 -24 20 -43 20c-38 0 -67 -30 -67 -71s29 -71 67 -71c19 0 33 7 43 20v-17zM943 48c0 24 -18 36 -47 40l-14 2c-13 2 -23 5 -23 14s9 15 25 15c18 0 34 -6 43 -11l12 24c-14 9 -33 14 -55 14c-34 0 -56 -17 -56 -44c0 -22 16 -35 47 -39l13 -2
-c17 -3 24 -7 24 -14c0 -11 -11 -17 -31 -17s-35 7 -45 14l-13 -23c16 -11 36 -17 58 -17c39 0 62 18 62 44zM1073 14l-8 25c-9 -5 -18 -7 -26 -7c-15 0 -19 9 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61c0 -31 12 -50 47 -50c12 0 27 4 36 10zM1159 146
-c-39 0 -67 -29 -67 -71c0 -43 29 -71 69 -71c20 0 39 5 55 19l-14 22c-11 -9 -26 -15 -39 -15c-19 0 -36 9 -41 33h101v12c0 42 -26 71 -64 71zM1318 146c-17 0 -28 -8 -35 -20v16h-30v-135h30v76c0 22 9 35 29 35c6 0 12 -1 18 -4l9 28c-7 3 -15 4 -21 4zM1348 75
-c0 -41 28 -71 72 -71c20 0 34 4 48 16l-14 24c-11 -8 -22 -13 -35 -12c-24 0 -41 17 -41 43s17 43 41 43c13 0 24 -4 35 -12l14 24c-14 11 -28 16 -48 16c-44 0 -72 -30 -72 -71zM1593 7h30v135h-30v-16c-9 12 -23 20 -42 20c-38 0 -68 -30 -68 -71s30 -71 68 -71
-c19 0 33 7 42 20v-17zM1726 146c-17 0 -28 -8 -35 -20v16h-29v-135h29v76c0 22 10 35 29 35c6 0 12 -1 18 -4l9 28c-6 3 -15 4 -21 4zM1866 7h29v190h-29v-71c-9 12 -23 20 -43 20c-37 0 -67 -30 -67 -71s30 -71 67 -71c20 0 34 7 43 20v-17zM1944 27c-1 0 -3 -1 -5 -1
-c-2 -1 -3 -2 -4 -3c-2 -1 -3 -3 -3 -4c-1 -2 -1 -4 -1 -6c0 -1 0 -3 1 -5c0 -1 1 -3 3 -4c1 -1 2 -2 4 -3s4 -1 5 -1c2 0 4 0 6 1c1 1 3 2 4 3s2 3 3 4c1 2 1 4 1 5c0 2 0 4 -1 6c-1 1 -2 3 -3 4s-3 2 -4 3c-2 0 -4 1 -6 1zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048
-c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="times" unicode="&#xf00d;" horiz-adv-x="1188" 
-d="M1188 214c0 -25 -10 -50 -28 -68l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-294 294l-294 -294c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136c-18 18 -28 43 -28 68s10 50 28 68l294 294l-294 294c-18 18 -28 43 -28 68s10 50 28 68l136 136
-c18 18 43 28 68 28s50 -10 68 -28l294 -294l294 294c18 18 43 28 68 28s50 -10 68 -28l136 -136c18 -18 28 -43 28 -68s-10 -50 -28 -68l-294 -294l294 -294c18 -18 28 -43 28 -68z" />
-    <glyph glyph-name="buysellads" unicode="&#xf20d;" 
-d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960c0 -158 -130 -288 -288 -288h-960c-158 0 -288 130 -288 288v960c0 158 130 288 288 288h960c158 0 288 -130 288 -288z" />
-    <glyph glyph-name="diaspora" unicode="&#xf2e5;" horiz-adv-x="1581" 
-d="M1005 -16c-42 59 -111 155 -153 214c-41 57 -75 102 -77 102s-66 -87 -152 -205c-82 -113 -150 -205 -151 -205c-2 0 -296 207 -297 209c0 1 65 99 147 217s149 217 149 219c0 4 -27 14 -234 83c-129 43 -235 78 -237 79s10 41 52 174c30 95 56 174 57 175
-s112 -35 248 -80s249 -81 250 -81s2 2 3 5s2 118 3 257s2 254 3 255c1 2 40 2 180 2c98 0 179 0 180 -1c2 -1 4 -78 8 -249c7 -281 9 -285 13 -285c2 0 109 36 239 80s236 79 237 78c3 -3 109 -350 108 -351s-109 -37 -241 -82c-181 -61 -240 -82 -240 -85
-c0 -2 62 -95 141 -211c78 -114 141 -208 141 -209c-1 -2 -293 -217 -295 -217c-1 0 -38 50 -82 112z" />
-    <glyph glyph-name="att" unicode="&#xf31e;" 
-d="M768 1407v0c144 0 278 -39 393 -108c31 -19 46 -30 46 -48c0 -73 -206 -150 -472 -150c-268 0 -419 70 -419 135c0 22 19 39 54 60c116 71 253 111 398 111zM273 1226v0c1 0 0 -1 -1 -2c-22 -27 -31 -53 -31 -79c0 -72 57 -185 362 -185c416 0 677 151 677 236
-c0 7 -2 13 -5 18c-1 1 0 2 1 1c25 -23 48 -46 73 -74c38 -43 53 -66 53 -104c0 -107 -166 -228 -539 -228c-350 0 -725 108 -725 257c0 10 10 28 25 47c32 41 68 78 108 112c1 0 2 1 2 1zM1456 979v0s1 0 1 -1c18 -36 40 -89 51 -133c10 -40 10 -69 2 -97
-c-43 -152 -307 -235 -646 -235c-556 0 -794 160 -841 260c-6 12 -7 20 -4 37c7 39 32 114 55 159c1 1 1 1 1 0c-4 -15 -6 -30 -6 -45c0 -153 253 -274 557 -274c281 0 837 129 830 328v1zM1534 683v0s1 -1 1 -2c1 -13 1 -25 1 -41c0 -67 -9 -146 -28 -190
-c-26 -61 -154 -248 -714 -248c-411 0 -649 139 -744 238c-21 22 -36 49 -39 67c-7 36 -11 91 -11 133c0 2 2 2 2 0c34 -125 219 -308 612 -308c413 0 891 200 919 350c0 1 1 1 1 1zM1482 360v0c1 0 1 -1 1 -2c-13 -33 -30 -67 -47 -96c-29 -50 -61 -86 -95 -114
-c-124 -102 -332 -154 -521 -154c-359 0 -649 111 -745 315c-1 2 0 2 1 1c103 -149 366 -227 610 -227c345 0 679 106 795 276c0 1 1 1 1 1zM1274 64v0c1 0 1 -1 0 -2c-135 -118 -312 -190 -506 -190c-177 0 -341 60 -471 161c-1 1 -1 3 1 2c84 -47 234 -100 470 -100
-c272 0 444 89 505 129h1z" />
-    <glyph glyph-name="sort-asc" unicode="&#xf0de;" horiz-adv-x="1024" 
-d="M1024 832c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64c0 17 7 33 19 45l448 448c12 12 28 19 45 19s33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="1879" 
-d="M1879 584c0 -24 -15 -48 -31 -66l-336 -396c-58 -68 -176 -122 -264 -122h-1088c-36 0 -87 11 -87 56c0 24 15 48 31 66l336 396c58 68 176 122 264 122h1088c36 0 87 -11 87 -56zM1536 928v-160h-832c-125 0 -280 -71 -361 -167l-337 -396l-5 -6c0 8 -1 17 -1 25v960
-c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h544c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="heartbeat" unicode="&#xf21e;" horiz-adv-x="1792" 
-d="M1280 512h305c-12 -13 -20 -20 -22 -22l-623 -600c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-2 1 -10 8 -21 20h369c29 0 55 20 62 48l70 281l190 -667c8 -27 33 -46 62 -46c28 0 53 19 61 46l146 485l56 -112c11 -21 33 -35 57 -35zM1792 940
-c0 -115 -50 -220 -103 -300h-369l-111 221c-11 23 -37 37 -62 35c-27 -3 -49 -20 -56 -46l-129 -430l-196 686c-8 27 -33 46 -63 46c-29 0 -54 -20 -61 -48l-116 -464h-423c-53 80 -103 185 -103 300c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216
-c299 0 478 -175 478 -468z" />
-    <glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="1330" 
-d="M327 1225c-86 0 -156 70 -156 156c0 85 70 155 156 155s155 -70 155 -155c0 -86 -69 -156 -155 -156zM878 583c0 -108 -115 -84 -141 -40l-367 438c-16 26 -28 14 -28 14s-7 -8 4 -21l122 -139l1 -354c-86 -250 -161 -457 -161 -457c-47 -134 -86 -250 -120 -266
-c-41 -21 -71 -16 -103 -1c-42 19 -54 70 -51 100c0 0 2 16 197 618l5 416l-85 -164l35 -222c13 -84 -58 -95 -58 -95c-68 -11 -82 68 -82 70l-46 299c210 379 211 381 211 381c16 24 52 34 113 34c54 0 88 -16 107 -40l424 -521c6 -4 10 -10 14 -17l3 -3l-1 -1
-c5 -9 7 -19 7 -29zM475 433c96 -255 182 -448 182 -448c29 -74 79 -180 6 -222c-72 -42 -130 7 -146 41h-1c-3 8 -6 16 -8 25l-124 351zM1299 -159c21 -33 39 -57 28 -64c-19 -12 -25 23 -46 57c0 0 -113 171 -423 661c6 -2 17 7 17 7s11 9 11 17
-c308 -503 413 -678 413 -678z" />
-    <glyph glyph-name="arrows-v" unicode="&#xf07d;" horiz-adv-x="640" 
-d="M640 1216c0 -35 -29 -64 -64 -64h-128v-1024h128c35 0 64 -29 64 -64c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-256 256c-12 12 -19 28 -19 45c0 35 29 64 64 64h128v1024h-128c-35 0 -64 29 -64 64c0 17 7 33 19 45l256 256
-c12 12 28 19 45 19s33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="phone-square" unicode="&#xf098;" 
-d="M1280 343c0 5 0 11 -2 16c-6 18 -152 92 -180 108c-19 11 -42 33 -65 33c-44 0 -109 -131 -148 -131c-20 0 -45 18 -63 28c-132 74 -223 165 -297 297c-10 18 -28 43 -28 63c0 39 131 104 131 148c0 23 -22 46 -33 65c-16 28 -90 174 -108 180c-5 2 -11 2 -16 2
-c-26 0 -77 -12 -101 -22c-66 -30 -114 -156 -114 -225c0 -67 27 -128 50 -190c80 -219 318 -457 537 -537c62 -23 123 -50 190 -50c69 0 195 48 225 114c10 24 22 75 22 101zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
-c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="text-height" unicode="&#xf034;" horiz-adv-x="1789" 
-d="M1744 128c44 0 58 -28 31 -63l-126 -162c-27 -35 -71 -35 -98 0l-126 162c-27 35 -13 63 31 63h80v1024h-80c-44 0 -58 28 -31 63l126 162c27 35 71 35 98 0l126 -162c27 -35 13 -63 -31 -63h-80v-1024h80zM81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4
-c72 0 143 -1 215 -1h293c40 0 63 -9 90 29l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -35 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -31 155 -33 157c-21 26 -44 21 -75 21c-91 0 -186 4 -276 -7c-5 -44 -9 -91 -8 -136c1 -281 4 -562 4 -843
-c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9c38 61 175 62 238 99c22 49 19 320 19 383c0 202 -6 404 -6 606v117c0 18 4 90 -8 104
-c-14 15 -145 12 -162 12c-37 0 -144 -17 -173 -38c-48 -33 -48 -233 -108 -237c-18 11 -43 27 -56 44v383z" />
-    <glyph glyph-name="linkedin-square" unicode="&#xf08c;" 
-d="M237 122h231v694h-231v-694zM483 1030c-1 68 -50 120 -129 120s-131 -52 -131 -120c0 -66 50 -120 128 -120h1c81 0 131 54 131 120zM1068 122h231v398c0 213 -114 312 -266 312c-124 0 -179 -69 -209 -117h2v101h-231s3 -65 0 -694h231v388c0 20 1 41 7 56
-c17 41 55 84 119 84c83 0 116 -63 116 -157v-371zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="delicious" unicode="&#xf1a5;" 
-d="M1472 160v480h-704v704h-480c-124 0 -224 -100 -224 -224v-480h704v-704h480c124 0 224 100 224 224zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="qrcode" unicode="&#xf029;" 
-d="M0 1408h768v-704h-128v576h-512v-512h640v-128h-768v768zM0 -128v640h640v-640h-576v128h448v384h-384v-512h-128zM896 768v640h640v-640h-576v128h448v384h-384v-512h-128zM256 1152h256v-256h-256v256zM1152 1152h128v-128h-128v128zM256 256h128v-128h-128v128z
-M768 512h128v-128h-128v128zM1152 384h128v-128h-128v128zM1152 128h128v-128h-128v128zM1024 640h384v-256h-128v128h-256v128zM1536 256v-384h-256v128h128v256h128zM1024 384v-256h-256v128h128v128h128zM768 0h384v-128h-384v128z" />
-    <glyph glyph-name="arrows-h" unicode="&#xf07e;" horiz-adv-x="1792" 
-d="M1792 640c0 -17 -7 -33 -19 -45l-256 -256c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v128h-1024v-128c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-256 256c-12 12 -19 28 -19 45s7 33 19 45l256 256c12 12 28 19 45 19c35 0 64 -29 64 -64v-128h1024v128
-c0 35 29 64 64 64c17 0 33 -7 45 -19l256 -256c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="mercury" unicode="&#xf223;" horiz-adv-x="1152" 
-d="M830 1220c190 -94 322 -290 322 -516c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572
-c0 226 132 422 322 516c-105 61 -187 157 -228 273c-8 21 8 43 30 43h69c13 0 24 -8 29 -20c58 -139 195 -236 354 -236s296 97 354 236c5 12 16 20 37 20h61c22 0 38 -22 30 -43c-41 -116 -123 -212 -228 -273zM576 256c247 0 448 201 448 448s-201 448 -448 448
-s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="text-width" unicode="&#xf035;" 
-d="M81 1407l54 -27c7 -3 190 -5 211 -5c88 0 176 4 264 4c265 0 533 6 798 -3c22 -1 43 13 56 31l42 1c9 0 19 -1 28 -1c2 -112 2 -224 2 -336c0 -36 1 -74 -5 -109c-22 -8 -45 -15 -68 -18c-23 40 -39 84 -54 128c-7 20 -32 155 -33 157c-7 9 -16 15 -27 19
-c-8 3 -56 2 -66 2c-123 0 -265 7 -386 -7c-5 -44 -9 -91 -8 -136l1 -152v52c1 -163 3 -325 3 -487c0 -77 -12 -158 10 -232c76 -39 166 -45 244 -80c2 -16 5 -33 5 -50c0 -9 -1 -19 -3 -29l-34 -1c-142 -4 -282 18 -425 18c-101 0 -202 -18 -303 -18c-1 17 -3 35 -3 52v9
-c38 61 175 62 238 99c25 56 18 529 18 617c0 14 -5 29 -5 44c0 41 7 276 -8 293c-14 15 -145 12 -162 12c-42 0 -277 -22 -301 -38c-47 -31 -48 -232 -108 -237c-18 11 -43 27 -56 44v383zM1310 125c35 0 168 -119 195 -140c15 -12 26 -29 26 -49s-11 -37 -26 -49
-c-27 -21 -160 -140 -195 -140c-46 0 -30 107 -30 125h-1024c0 -18 16 -125 -30 -125c-35 0 -168 119 -195 140c-15 12 -26 29 -26 49s11 37 26 49c27 21 160 140 195 140c46 0 30 -107 30 -125h1024c0 18 -16 125 30 125z" />
-    <glyph glyph-name="envelope-o" unicode="&#xf003;" horiz-adv-x="1792" 
-d="M1664 32v768c-21 -24 -44 -46 -69 -66c-143 -110 -287 -222 -426 -338c-75 -63 -168 -140 -272 -140h-2c-104 0 -197 77 -272 140c-139 116 -283 228 -426 338c-25 20 -48 42 -69 66v-768c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1664 1083c0 25 6 69 -32 69h-1472
-c-17 0 -32 -15 -32 -32c0 -114 57 -213 147 -284c134 -105 268 -211 401 -317c53 -43 149 -135 219 -135h2c70 0 166 92 219 135c133 106 267 212 401 317c65 51 147 162 147 247zM1792 1120v-1088c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088
-c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="rss-square" unicode="&#xf143;" 
-d="M512 256c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM863 162c-17 310 -263 556 -573 573c-9 1 -18 -3 -24 -9s-10 -14 -10 -23v-128c0 -17 13 -31 30 -32c205 -15 370 -180 385 -385c1 -17 15 -30 32 -30h128c9 0 17 4 23 10
-s10 15 9 24zM1247 161c-17 520 -438 941 -958 958c-10 1 -17 -2 -23 -9c-6 -6 -10 -14 -10 -23v-128c0 -17 14 -31 31 -32c415 -15 753 -353 768 -768c1 -17 15 -31 32 -31h128c9 0 17 4 23 10c7 6 10 14 9 23zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
-c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280" 
-d="M1164 1408c15 0 30 -3 44 -9c44 -17 72 -58 72 -103v-1289c0 -45 -28 -86 -72 -103c-14 -6 -29 -8 -44 -8c-31 0 -60 11 -83 32l-441 424l-441 -424c-23 -21 -52 -33 -83 -33c-15 0 -30 3 -44 9c-44 17 -72 58 -72 103v1289c0 45 28 86 72 103c14 6 29 9 44 9h1048z" />
-    <glyph glyph-name="behance" unicode="&#xf1b4;" horiz-adv-x="2048" 
-d="M1848 1197v-124h-511v124h511zM1596 771c-120 0 -200 -75 -208 -195h408c-11 121 -74 195 -200 195zM1612 186c76 0 174 41 198 119h221c-68 -209 -209 -307 -427 -307c-288 0 -467 195 -467 479c0 274 189 483 467 483c286 0 444 -225 444 -495c0 -16 -1 -32 -2 -47
-h-658c0 -146 77 -232 224 -232zM277 236h296c113 0 205 40 205 167c0 129 -77 180 -199 180h-302v-347zM277 773h281c99 0 169 43 169 150c0 116 -90 144 -190 144h-260v-294zM0 1282h594c216 0 403 -61 403 -312c0 -127 -59 -209 -172 -263c155 -44 230 -161 230 -319
-c0 -256 -215 -366 -444 -366h-611v1260z" />
-    <glyph glyph-name="wpbeginner" unicode="&#xf297;" horiz-adv-x="1792" 
-d="M384 704h160v224h-160v-224zM1221 372v92c-86 -30 -157 -37 -243 -38c-193 -1 -364 79 -480 169l1 -96c109 -99 276 -177 484 -176c87 0 169 18 238 49zM640 704h640v224h-640v-224zM1792 736c0 -127 -36 -247 -99 -352c56 -64 89 -143 89 -229
-c0 -209 -198 -379 -443 -379c-166 0 -310 78 -386 193c-19 -1 -38 -1 -57 -1s-38 0 -57 1c-76 -115 -220 -193 -386 -193c-245 0 -443 170 -443 379c0 86 33 165 89 229c-63 105 -99 225 -99 352c0 424 401 768 896 768s896 -344 896 -768z" />
-    <glyph glyph-name="star-half-o" unicode="&#xf123;" horiz-adv-x="1664" 
-d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500c7 -44 -9 -70 -40 -70c-11 0 -25 4 -40 12l-449 236l-449 -236c-15 -8 -29 -12 -40 -12c-31 0 -47 26 -40 70l86 500l-364 354c-43 43 -29 85 31 94
-l502 73l225 455c13 27 31 41 49 41s35 -14 49 -41l225 -455l502 -73c60 -9 74 -51 30 -94z" />
-    <glyph glyph-name="keyboard-o" unicode="&#xf11c;" horiz-adv-x="1920" 
-d="M384 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM512 624v-96c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h224c9 0 16 -7 16 -16zM384 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96
-c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 368v-96c0 -9 -7 -16 -16 -16h-864c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h864c9 0 16 -7 16 -16zM768 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM640 880v-96
-c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1024 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM896 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96
-c9 0 16 -7 16 -16zM1280 624v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 368v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1152 880v-96c0 -9 -7 -16 -16 -16h-96
-c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1408 880v-96c0 -9 -7 -16 -16 -16h-96c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h96c9 0 16 -7 16 -16zM1664 880v-352c0 -9 -7 -16 -16 -16h-224c-9 0 -16 7 -16 16v96c0 9 7 16 16 16h112v240c0 9 7 16 16 16h96
-c9 0 16 -7 16 -16zM1792 128v896h-1664v-896h1664zM1920 1024v-896c0 -71 -57 -128 -128 -128h-1664c-71 0 -128 57 -128 128v896c0 71 57 128 128 128h1664c71 0 128 -57 128 -128z" />
-    <glyph glyph-name="minus-circle" unicode="&#xf056;" 
-d="M1216 576v128c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="hand-o-down" unicode="&#xf0a7;" 
-d="M1408 576c0 199 -128 369 -128 544v32h-640v-32c0 -106 -90 -177 -163 -241c-46 -41 -92 -79 -145 -112c-22 -14 -45 -26 -68 -38s-136 -62 -136 -89c0 -85 32 -160 128 -160c128 0 193 96 256 96v-576c0 -67 60 -128 128 -128c69 0 128 59 128 128v331
-c26 -20 70 -35 103 -35c47 0 87 19 119 53c21 -12 45 -18 69 -18c46 0 103 23 126 65c18 -3 37 -4 56 -4c118 0 167 73 167 184zM1280 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1536 580c0 -184 -104 -318 -295 -317l-5 1
-c-50 -40 -114 -61 -178 -61c-14 0 -29 1 -43 3c-34 -19 -80 -33 -119 -37v-169c0 -140 -117 -256 -257 -256c-138 0 -255 118 -255 256v374c-39 -16 -86 -22 -128 -22c-168 0 -256 129 -256 288c0 134 171 177 264 235c47 30 88 64 129 100c33 29 119 97 119 145v288
-c0 71 57 128 128 128h640c71 0 128 -57 128 -128v-288c0 -63 37 -162 59 -223c37 -102 69 -207 69 -317z" />
-    <glyph glyph-name="sort-numeric-asc" unicode="&#xf162;" horiz-adv-x="1454" 
-d="M1314 223c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
-c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1454 165c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244
-c0 138 106 251 253 251c159 0 287 -130 287 -347zM1424 882v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
-    <glyph glyph-name="share-alt" unicode="&#xf1e0;" 
-d="M1216 512c177 0 320 -143 320 -320s-143 -320 -320 -320s-320 143 -320 320c0 11 1 23 2 34l-360 180c-57 -53 -134 -86 -218 -86c-177 0 -320 143 -320 320s143 320 320 320c84 0 161 -33 218 -86l360 180c-1 11 -2 23 -2 34c0 177 143 320 320 320s320 -143 320 -320
-s-143 -320 -320 -320c-84 0 -161 33 -218 86l-360 -180c1 -11 2 -23 2 -34s-1 -23 -2 -34l360 -180c57 53 134 86 218 86z" />
-    <glyph glyph-name="shirtsinbulk" unicode="&#xf214;" 
-d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
-l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
-v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
-M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
-v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265c-172 0 -313 140 -313 313c0 172 141 313 313 313c173 0 313 -141 313 -313c0 -173 -140 -313 -313 -313zM595 646c0 -152 266 -41 266 -130c0 -45 -82 -49 -112 -49c-42 0 -102 9 -123 51h-3l-31 -63
-c51 -32 100 -42 162 -42c67 0 175 20 175 107c0 165 -269 56 -269 130c0 45 71 51 102 51c37 0 100 -11 122 -45h3l30 58c-52 21 -94 41 -152 41c-69 0 -170 -22 -170 -109z" />
-    <glyph glyph-name="viacoin" unicode="&#xf237;" 
-d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
-    <glyph glyph-name="dogmazic" unicode="&#xf303;" 
-d="M768 1404c423 0 768 -343 768 -766s-345 -766 -768 -766s-768 343 -768 766s345 766 768 766zM768 1302c-368 0 -666 -297 -666 -664s298 -664 666 -664s666 297 666 664s-298 664 -666 664zM768 1223c668 3 845 -918 212 -1148c-52 -19 -148 -29 -165 -17
-c-9 6 6 111 30 214c20 88 28 84 -78 37c-49 -22 -92 -40 -96 -41c-5 -1 -23 23 -60 78c-32 48 -54 78 -55 74s-21 -73 -44 -154c-50 -177 -38 -165 -111 -110c-452 340 -218 1052 351 1067h16zM803 1137c-251 0 -505 -261 -415 -458c14 -31 19 -30 9 1
-c-66 214 206 464 458 420c281 -49 436 -423 255 -613c-49 -51 -21 -53 31 -2c184 181 17 586 -267 645c-23 5 -47 7 -71 7zM435 998c-2 0 -6 0 -10 -1c-132 -18 -189 -193 -96 -296c27 -30 30 -29 22 5c-18 75 7 167 69 258c19 28 24 34 15 34zM805 958
-c-12 0 -35 -27 -35 -44c0 -20 -7 -22 -25 -6c-42 37 -123 53 -167 34c-14 -6 -14 -5 6 -8c61 -8 101 -75 69 -117c-27 -36 -40 -72 -44 -123c-4 -61 -30 -81 -51 -39c-27 54 10 135 62 135c11 0 0 8 -15 11c-89 17 -142 -140 -56 -167c14 -4 6 -11 -14 -11
-c-24 0 -48 11 -69 31c-23 22 -10 -6 24 -53c12 -16 57 -84 101 -150c94 -139 89 -132 95 -129c3 1 61 28 131 60s144 64 166 72c40 15 83 37 79 41c-1 1 -6 0 -11 -3c-24 -13 -80 -2 -98 18c-9 10 -9 9 15 9c97 0 121 145 28 173c-16 5 -18 7 -20 26c-1 11 -4 26 -5 33
-c-5 33 78 59 121 37c19 -10 15 0 -9 21c-37 33 -64 43 -119 43c-70 0 -77 6 -56 49c9 19 10 23 4 24c-10 2 -23 -11 -30 -29c-5 -15 -13 -20 -19 -11c-2 3 1 12 6 20c11 17 12 30 3 30c-8 0 -17 -11 -27 -30c-4 -8 -10 -15 -12 -15c-6 0 -4 18 3 31c4 6 6 16 6 20
-c0 16 -22 -2 -32 -25c-5 -12 -13 -22 -16 -22c-9 0 -7 12 6 37c6 13 10 24 9 25s-2 2 -4 2zM1242 756c-5 0 -5 -16 -5 -59c0 -100 -23 -174 -72 -226c-26 -27 -19 -29 32 -6c106 48 136 192 58 280c-6 7 -10 11 -13 11zM982 689c3 0 6 -3 10 -8c39 -45 25 -117 -28 -144
-c-24 -12 -28 -11 -37 8c-8 16 -8 16 3 28c16 17 34 55 40 86c4 21 8 30 12 30zM680 537c10 0 20 -8 21 -22c2 -25 -16 -39 -36 -27v0c-11 6 -11 32 1 43c4 4 9 6 14 6zM778 509c10 0 19 -11 19 -28c0 -22 -23 -33 -38 -18c-10 10 -9 27 2 38c6 6 12 8 17 8z" />
-    <glyph glyph-name="digg" unicode="&#xf1a6;" horiz-adv-x="2048" 
-d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968h205v-697h-205v697zM614 1254h205v-204h-205v204zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
-v-369h123z" />
-    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408" 
-d="M384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 69c1 -18 -5 -35 -17 -48c-12 -14 -29 -21 -47 -21h-135c-33 0 -60 25 -63 58c-29 305 -271 547 -576 576c-33 3 -58 30 -58 63v135c0 18 7 35 21 47c11 11 27 17 43 17h5
-c213 -17 414 -110 565 -262c152 -151 245 -352 262 -565zM1408 67c1 -17 -5 -34 -18 -47c-12 -13 -28 -20 -46 -20h-143c-34 0 -62 26 -64 60c-33 581 -496 1044 -1077 1078c-34 2 -60 30 -60 63v143c0 18 7 34 20 46c12 12 28 18 44 18h3c350 -18 679 -165 927 -414
-c249 -248 396 -577 414 -927z" />
-    <glyph glyph-name="television" unicode="&#xf26c;" horiz-adv-x="1920" 
-d="M1792 288v960c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1248v-960c0 -88 -72 -160 -160 -160h-736v-128h352c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h352v128h-736c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="ffmpeg" unicode="&#xf30f;" 
-d="M1158 323v179l-530 -527l-628 53l1010 1100l-167 -10l-730 -810v688l69 83l-169 -10v185l591 50l-325 -379v-161l483 553l774 66l-1134 -1194l149 -8l824 849v-806l-92 -87l234 -14v-223l-731 62z" />
-    <glyph glyph-name="folder-o" unicode="&#xf114;" horiz-adv-x="1664" 
-d="M1536 224v704c0 53 -43 96 -96 96h-704c-53 0 -96 43 -96 96v64c0 53 -43 96 -96 96h-320c-53 0 -96 -43 -96 -96v-960c0 -53 43 -96 96 -96h1216c53 0 96 43 96 96zM1664 928v-704c0 -123 -101 -224 -224 -224h-1216c-123 0 -224 101 -224 224v960
-c0 123 101 224 224 224h320c123 0 224 -101 224 -224v-32h672c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="bed" unicode="&#xf236;" horiz-adv-x="2048" 
-d="M256 512h1728c35 0 64 -29 64 -64v-448h-256v256h-1536v-256h-256v1216c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-704zM832 832c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM2048 576h-1152v384c0 35 29 64 64 64h704
-c212 0 384 -172 384 -384v-64z" />
-    <glyph glyph-name="caret-square-o-down" unicode="&#xf150;" 
-d="M1145 861c11 -21 9 -47 -5 -66l-320 -448c-12 -17 -31 -27 -52 -27s-40 10 -52 27l-320 448c-14 19 -16 45 -5 66c11 22 33 35 57 35h640c24 0 46 -13 57 -35zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
-c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="shower" unicode="&#xf2cc;" horiz-adv-x="1920" 
-d="M1433 1287c13 -13 13 -33 0 -46l-626 -626c-13 -13 -33 -13 -46 0l-82 82c-13 13 -13 33 0 46l44 44c-97 122 -109 289 -35 422c-46 44 -108 71 -176 71c-141 0 -256 -115 -256 -256v-1280h-256v1280c0 282 230 512 512 512c144 0 274 -60 367 -156
-c126 51 272 32 382 -55l44 44c13 13 33 13 46 0zM1344 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1600 896c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1856 1024c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64
-s29 64 64 64zM1216 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1408 832c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64zM1728 896c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 768c35 0 64 -29 64 -64
-s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 640c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64s-29 -64 -64 -64zM1600 768c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 512c-35 0 -64 29 -64 64s29 64 64 64s64 -29 64 -64
-s-29 -64 -64 -64zM1472 640c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1344 512c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1216 384
-c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM1088 256c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" />
-    <glyph glyph-name="paper-plane-o" unicode="&#xf1d9;" horiz-adv-x="1792" 
-d="M1764 1525c21 -15 31 -39 27 -64l-256 -1536c-3 -19 -15 -35 -32 -45c-9 -5 -20 -8 -31 -8c-8 0 -16 2 -24 5l-527 215l-298 -327c-12 -14 -29 -21 -47 -21c-8 0 -16 1 -23 4c-25 10 -41 34 -41 60v452l-472 193c-23 9 -38 30 -40 55c-2 24 11 47 32 59l1664 960
-c21 13 48 12 68 -2zM1422 26l221 1323l-1434 -827l336 -137l863 639l-478 -797z" />
-    <glyph glyph-name="circle-o-notch" unicode="&#xf1ce;" horiz-adv-x="1728" 
-d="M1728 640c0 -477 -387 -864 -864 -864s-864 387 -864 864c0 434 320 793 736 855v-228c-292 -59 -512 -318 -512 -627c0 -353 287 -640 640 -640s640 287 640 640c0 309 -220 568 -512 627v228c416 -62 736 -421 736 -855z" />
-    <glyph glyph-name="gnupg" unicode="&#xf30d;" horiz-adv-x="1156" 
-d="M0 667h81v244c0 274 223 497 497 497s497 -223 497 -497v-242c-1 -1 -3 -1 -4 -2v0l-1 -1v0v0v0h-1v-1v0v0v0h-1v0v0v-1v0h-1v0v0v0l-1 -1v0v0h-1v0l-1 -1v0v0v0v0l-1 -1v0v0v0h-1v0v0v0l-1 -1v0v0v0v0v0h-1v0v-1v0v0v0v0h-1v0v0v0l-2 -1v0v0l-1 -1v0h-1v0v-1v0v0v0h-1v0
-v0v0v0h-1v-1h-1l-1 -1h-1v-1l-2 -1h-1l-1 -1v0l-3 -1l-1 -1l-1 -1h-1l-1 -1l-1 -1h-1l-4 -2v0l-1 -1h-1v-1h-2l-3 -2l-1 -1c-1 -1 -3 -1 -4 -2h-1v0l-2 -2h-1h-1l-1 -1v0l-2 -1v0l-2 -1h-1l-1 -1c-1 -1 -3 -1 -4 -2l-1 -1c-2 -1 -3 -1 -5 -2v0l-4 -2l-2 -1
-c-2 -1 -3 -2 -5 -3v0c-99 -47 -257 -97 -557 -119c-215 -15 -346 -110 -431 -224v390v0zM310 667h536v244c0 148 -120 268 -268 268s-268 -120 -268 -268v-244zM1004 628c-1 -1 -4 -1 -5 -2zM803 1288c-64 38 -138 60 -218 60c-218 0 -398 -164 -422 -376
-c64 200 251 345 472 345c59 0 116 -10 168 -29v0zM1156 573v-701h-989c109 61 190 54 325 50c183 -6 385 71 485 173s-9 24 -122 -5s-330 -31 -476 7c459 -6 637 142 739 275s-44 24 -138 -22s-258 -79 -439 -55c273 1 482 137 615 278v0z" />
-    <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792" 
-d="M1280 416v192c0 18 -14 32 -32 32h-224v224c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-224h-224c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h224v-224c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v224h224c18 0 32 14 32 32zM640 1152h512v128h-512v-128z
-M256 1152v-1280h-32c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h32zM1440 1152v-1280h-1088v1280h160v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h160zM1792 928v-832c0 -123 -101 -224 -224 -224h-32v1280h32c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="toggle-off" unicode="&#xf204;" horiz-adv-x="2048" 
-d="M1152 640c0 282 -230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512s512 230 512 512zM1920 640c0 282 -230 512 -512 512h-386c156 -117 258 -303 258 -512s-102 -395 -258 -512h386c282 0 512 230 512 512zM2048 640c0 -353 -287 -640 -640 -640h-768
-c-353 0 -640 287 -640 640s287 640 640 640h768c353 0 640 -287 640 -640z" />
-    <glyph glyph-name="calendar-minus-o" unicode="&#xf272;" horiz-adv-x="1664" 
-d="M1152 416v-64c0 -18 -14 -32 -32 -32h-576c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h576c18 0 32 -14 32 -32zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088
-v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96
-c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="id-badge" unicode="&#xf2c1;" horiz-adv-x="1280" 
-d="M1024 278c0 -86 -57 -150 -128 -150h-512c-71 0 -128 64 -128 150c0 156 39 329 196 329c49 -46 115 -75 188 -75s139 29 188 75c157 0 196 -173 196 -329zM870 797c0 -126 -103 -227 -230 -227s-230 101 -230 227c0 125 103 227 230 227s230 -102 230 -227zM1152 -96
-v1376h-1024v-1376c0 -17 15 -32 32 -32h960c17 0 32 15 32 32zM1280 1376v-1472c0 -88 -72 -160 -160 -160h-960c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h352v-96c0 -18 14 -32 32 -32h192c18 0 32 14 32 32v96h352c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="tencent-weibo" unicode="&#xf1d5;" horiz-adv-x="1166" 
-d="M785 964c0 -106 -87 -193 -193 -193c-41 0 -79 13 -111 35c-36 -39 -76 -88 -115 -146c-163 -245 -232 -534 -202 -859c2 -29 -19 -54 -47 -57h-5c-26 0 -49 20 -52 47c-39 438 100 748 223 931c45 67 90 121 132 165c-11 24 -16 50 -16 77c0 107 86 193 193 193
-c106 0 193 -86 193 -193zM1166 953c0 -321 -261 -582 -583 -582c-44 0 -88 5 -131 14c-28 7 -45 35 -39 63c7 27 34 45 62 39c35 -9 72 -13 108 -13c264 0 479 215 479 479s-215 479 -479 479s-479 -215 -479 -479c0 -77 18 -150 52 -218c13 -26 3 -57 -22 -70
-c-26 -13 -57 -3 -70 23c-42 81 -64 173 -64 265c0 322 262 583 583 583c322 0 583 -261 583 -583z" />
-    <glyph glyph-name="file-archive-o" unicode="&#xf1c6;" 
-d="M640 1152h-128v128h128v-128zM768 1024h-128v128h128v-128zM640 896h-128v128h128v-128zM768 768h-128v128h128v-128zM1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68z
-M1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416h-128v-128h-128v128h-512v-1536h1280zM781 593c85 -287 107 -349 107 -349c5 -17 8 -34 8 -52c0 -111 -108 -192 -256 -192s-256 81 -256 192
-c0 18 3 35 8 52c0 0 21 62 120 396v128h128v-128h79c29 0 54 -19 62 -47zM640 128c71 0 128 29 128 64s-57 64 -128 64s-128 -29 -128 -64s57 -64 128 -64z" />
-    <glyph glyph-name="yoast" unicode="&#xf2b1;" horiz-adv-x="1664" 
-d="M339 1318h691l-26 -72h-665c-147 0 -267 -121 -267 -268v-771c0 -126 90 -237 214 -263c32 -7 65 -5 98 -5v-72h-45c-187 0 -339 153 -339 340v771c0 187 152 340 339 340zM1190 1536h247l-482 -1294c-90 -240 -199 -490 -495 -498v195c111 18 182 79 220 182
-c13 34 20 69 20 105s-7 72 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795c16 24 33 47 45 73h678v1038c0 114 -72 216 -179 254l25 67c136 -46 226 -178 226 -321z" />
-    <glyph glyph-name="share-alt-square" unicode="&#xf1e1;" 
-d="M1280 341c0 118 -96 214 -213 214c-56 0 -107 -22 -145 -58l-241 120c1 8 2 15 2 23s-1 15 -2 23l241 120c38 -36 89 -58 145 -58c117 0 213 96 213 214c0 117 -96 213 -213 213c-118 0 -214 -96 -214 -213c0 -8 1 -15 2 -23l-241 -120c-38 35 -89 57 -145 57
-c-117 0 -213 -95 -213 -213s96 -213 213 -213c56 0 107 22 145 57l241 -120c-1 -8 -2 -15 -2 -23c0 -117 96 -213 214 -213c117 0 213 96 213 213zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
-c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="imdb" unicode="&#xf2d8;" 
-d="M922 739v-182c0 -36 7 -69 -38 -68v309c44 0 38 -23 38 -59zM1238 643v-121c0 -20 6 -53 -23 -53c-6 0 -11 3 -14 9c-8 19 -4 163 -4 165c0 14 -4 47 18 47c27 0 23 -27 23 -47zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221c-10 74 -20 148 -32 221h-158
-v-472h107v312l45 -312h76l43 319v-319zM1039 712c0 30 1 62 -5 90c-16 83 -116 77 -181 77h-91v-472c318 0 277 -22 277 305zM1356 515v133c0 64 -3 111 -82 111c-33 0 -55 -10 -77 -34v154h-117v-472h110l7 30c21 -25 44 -36 77 -36c73 0 82 56 82 114zM1536 1248v-1216
-c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1216c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="snapchat-square" unicode="&#xf2ad;" 
-d="M1280 388c0 14 -8 24 -22 27c-91 19 -160 83 -198 167c-4 8 -7 16 -7 25c0 45 124 36 124 100c0 27 -33 44 -57 44c-22 0 -40 -16 -63 -16c-4 0 -8 1 -12 2c3 38 5 77 5 115c0 34 -2 82 -17 114c-48 104 -140 165 -255 165c-125 0 -220 -47 -275 -165
-c-15 -32 -18 -80 -18 -115c0 -38 3 -76 6 -114c-5 -1 -10 -2 -15 -2c-22 0 -41 16 -62 16c-25 0 -55 -17 -55 -45c0 -62 124 -54 124 -99c0 -9 -3 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -47 106 -64 138 -69c9 -24 5 -66 40 -66
-c26 0 51 10 77 10c106 0 134 -95 256 -95c127 0 151 95 258 95c26 0 52 -9 78 -9c34 0 31 42 39 65c32 5 138 22 138 69zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="spell-check" unicode="&#xf327;" horiz-adv-x="2049" 
-d="M2049 700c0 -25 -10 -50 -28 -68l-724 -724l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136l-362 362c-18 18 -28 43 -28 68s10 50 28 68l136 136c18 18 43 28 68 28s50 -10 68 -28l294 -295l656 657c18 18 43 28 68 28s50 -10 68 -28l136 -136
-c18 -18 28 -43 28 -68zM0 880v73h48l158 454h111l158 -454h49v-73h-199v73h52l-32 98h-167l-32 -98h52v-73h-198zM200 1127h122l-49 149c-2 8 -5 16 -6 23c-1 8 -3 15 -3 18l-1 5h-2c-1 -13 -5 -29 -10 -46zM569 880v73h63v381h-63v73h242c40 0 72 -5 95 -14
-c24 -9 44 -25 58 -47c15 -21 22 -46 22 -75c0 -25 -6 -47 -17 -67s-28 -35 -48 -46v-1c28 -8 50 -24 64 -47s22 -49 22 -78c0 -35 -10 -65 -30 -91s-45 -43 -75 -52c-21 -6 -47 -9 -79 -9h-254zM730 1192h92c20 0 37 6 48 18c11 13 17 30 17 51c0 29 -10 49 -30 60
-c-11 5 -27 8 -46 8h-81v-137zM730 958h98c15 0 27 2 37 6c13 5 25 15 32 28c7 14 11 29 11 46c0 23 -7 41 -21 55c-13 14 -32 22 -56 22h-101v-157zM1131 950c-52 53 -78 118 -78 196s26 142 78 193s116 77 193 77c18 0 39 -2 60 -5c22 -3 44 -9 67 -16s41 -18 56 -33
-s23 -32 23 -51v-72h-88v41c0 12 -7 23 -20 31s-29 14 -45 17s-32 5 -48 5c-51 0 -94 -17 -127 -51c-33 -33 -49 -77 -49 -132c0 -59 17 -106 51 -142s78 -54 130 -54c14 0 29 2 45 4s31 8 46 16s23 19 23 32v41h89v-72c0 -18 -7 -35 -22 -49c-14 -14 -33 -26 -56 -33
-c-22 -7 -45 -13 -67 -16c-22 -4 -44 -6 -64 -6c-79 0 -145 27 -197 79v0z" />
-    <glyph glyph-name="building-o" unicode="&#xf0f7;" horiz-adv-x="1408" 
-d="M384 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 480v-64c0 -17 -15 -32 -32 -32h-64
-c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 224v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64
-c17 0 32 -15 32 -32zM896 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 992v-64
-c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 480v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 736v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64
-c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 736
-v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM640 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32
-v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1152 992v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32z
-M1152 1248v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM896 -128h384v1536h-1152v-1536h384v224c0 17 15 32 32 32h320c17 0 32 -15 32 -32v-224zM1408 1472v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64
-v1664c0 35 29 64 64 64h1280c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="sort-alpha-desc" unicode="&#xf15e;" horiz-adv-x="1629" 
-d="M1159 104h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
-c18 0 32 -14 32 -32zM1629 -150v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1540 1001v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530
-c-6 -9 -14 -18 -21 -26l-11 -10v-3l14 3c9 1 18 1 30 1h248v119h121z" />
-    <glyph glyph-name="map-signs" unicode="&#xf277;" horiz-adv-x="1718" 
-d="M1708 1239c13 -13 13 -33 0 -46l-141 -141c-18 -18 -43 -28 -68 -28h-1344c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h576v64c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-64h512c25 0 50 -10 68 -28zM731 320h256v-512c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64
-v512zM1563 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-1344c-25 0 -50 10 -68 28l-141 141c-13 13 -13 33 0 46l141 141c18 18 43 28 68 28h512v192h256v-192h576z" />
-    <glyph glyph-name="long-arrow-right" unicode="&#xf178;" horiz-adv-x="1728" 
-d="M1728 643c0 -9 -4 -18 -10 -24l-384 -354c-10 -9 -23 -11 -35 -6c-11 5 -19 16 -19 29v224h-1248c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h1248v224c0 13 7 24 19 29s25 3 35 -5l384 -350c6 -6 10 -14 10 -23z" />
-    <glyph glyph-name="first-order" unicode="&#xf2b0;" 
-d="M1322 640c0 -26 -1 -51 -5 -76l-236 14l224 -78c-13 -51 -33 -98 -58 -141l-214 103l177 -158c-30 -41 -66 -77 -107 -108l-157 178l103 -215c-43 -26 -90 -45 -140 -59l-79 228l14 -240c-25 -4 -50 -6 -76 -6c-25 0 -51 2 -76 6l14 238l-78 -226c-50 13 -97 33 -140 59
-l103 215l-157 -178c-41 30 -77 67 -108 108l178 158l-214 -104c-25 44 -45 91 -58 141l224 79l-237 -14c-3 25 -5 50 -5 76s2 52 5 77l238 -14l-225 79c13 50 33 97 58 140l214 -104l-177 159c31 41 67 77 107 108l158 -178l-103 215c43 25 90 45 140 58l77 -224l-13 236
-c24 4 50 6 75 6c26 0 51 -2 76 -6l-14 -237l78 225c50 -13 97 -33 140 -59l-103 -214l158 178c40 -31 76 -67 107 -108l-177 -159l213 104c26 -43 45 -91 58 -141l-224 -78l237 14c4 -25 5 -51 5 -77zM1352 640c0 325 -262 588 -584 588c-323 0 -584 -263 -584 -588
-c0 -324 261 -587 584 -587c322 0 584 263 584 587zM1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
-    <glyph glyph-name="calendar-check-o" unicode="&#xf274;" horiz-adv-x="1664" 
-d="M1303 572l-512 -512c-13 -12 -33 -12 -46 0l-288 288c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l220 -220l444 444c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288
-c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96
-c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="id-card" unicode="&#xf2c2;" horiz-adv-x="2048" 
-d="M896 324c0 132 -32 284 -164 284c-40 -40 -95 -64 -156 -64s-116 24 -156 64c-132 0 -164 -152 -164 -284c0 -73 48 -132 107 -132h426c59 0 107 59 107 132zM768 768c0 106 -86 192 -192 192s-192 -86 -192 -192s86 -192 192 -192s192 86 192 192zM1792 288v64
-c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1408 544v64c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1792 544v64c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32
-v-64c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1792 800v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM128 1152h1792v96c0 18 -14 32 -32 32h-1728c-18 0 -32 -14 -32 -32v-96zM2048 1248v-1216
-c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="globe-w" unicode="&#xf305;" 
-d="M768 1404c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM924 1238v0c-3 0 -6 -1 -7 -1c-2 0 -153 -25 -208 -34s-156 -30 -201 -34s-46 0 -69 0c-7 0 -14 1 -21 2c-65 -43 -152 -132 -193 -198c0 -4 2 -7 6 -11c12 -12 46 0 69 0
-s59 8 69 0s1 -7 2 -9s-16 -108 -7 -144s10 -88 33 -129s110 -63 145 -98s106 -34 112 -71s-30 -79 -42 -102s-40 -40 -35 -69s46 -47 69 -70s47 -29 69 -69s25 -125 35 -173c2 -9 5 -22 7 -31c3 0 8 -1 11 -1c57 0 146 15 200 33c6 41 13 83 24 103c18 33 24 24 36 36
-s23 18 35 35s23 46 34 68s38 38 33 67s-47 47 -70 70s-35 50 -69 69s-94 24 -130 33s-163 15 -165 16s0 -8 -8 2s-3 50 -3 73s13 44 30 85c17 23 7 12 33 31c13 12 55 -57 73 -57s-4 117 7 128c46 46 163 125 163 174s-46 46 -69 69s-60 -39 -143 -39s97 131 109 143
-s30 22 35 35s0 23 0 34s14 28 9 32c-2 2 -5 2 -8 2zM1041 1214v0c-6 -14 -7 -31 -14 -45c-12 -23 -35 -43 -35 -69s23 -46 35 -69s1 -60 34 -69s69 46 104 69c21 14 50 26 72 40c-46 50 -134 114 -196 143z" />
-    <glyph glyph-name="github-alt" unicode="&#xf113;" horiz-adv-x="1664" 
-d="M640 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1280 320c0 -73 -38 -192 -128 -192s-128 119 -128 192s38 192 128 192s128 -119 128 -192zM1440 320c0 153 -93 288 -256 288c-66 0 -129 -12 -195 -21
-c-52 -8 -104 -11 -157 -11s-105 3 -157 11c-65 9 -129 21 -195 21c-163 0 -256 -135 -256 -288c0 -306 280 -353 524 -353h168c244 0 524 47 524 353zM1664 496c0 -111 -11 -229 -61 -331c-132 -267 -495 -293 -755 -293c-264 0 -649 23 -786 293c-51 101 -62 220 -62 331
-c0 146 40 284 136 396c-18 55 -27 113 -27 170c0 75 17 150 51 218c158 0 259 -69 379 -163c101 24 205 35 309 35c94 0 189 -10 280 -32c119 93 220 160 376 160c34 -68 51 -143 51 -218c0 -57 -9 -114 -27 -168c96 -113 136 -252 136 -398z" />
-    <glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="1664" 
-d="M831 863c21 0 41 -6 59 -18l222 -148c41 -27 78 -60 110 -97l146 -170c25 -29 36 -68 29 -106l-72 -413c-8 -42 -42 -74 -85 -79l-527 -56l-352 -32h-9c-52 0 -96 42 -96 96c0 50 42 90 92 96l260 32h-448c-55 0 -99 46 -96 101c3 52 49 91 101 91l442 1l-521 64
-c-54 6 -93 55 -85 110c8 48 52 80 100 80h10l481 -60l-351 94c-50 13 -88 59 -80 110c8 48 49 81 95 81c7 0 13 -1 20 -2l448 -96l217 -37c2 0 4 -1 6 -1c30 0 45 41 18 59l-186 125c-46 31 -57 93 -24 137c18 25 47 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
-l-238 262c-2 2 -3 5 -5 7c-31 41 -24 101 19 134c40 31 97 21 132 -16l142 -147c-3 -3 -6 -5 -9 -8c-21 -29 -29 -64 -23 -99c6 -34 26 -65 55 -85zM1648 1115l15 -266c3 -49 -1 -99 -11 -147l-48 -219c-8 -38 -32 -69 -67 -87l-106 -54c1 40 -12 78 -39 109l-146 170
-c-34 39 -73 74 -117 103l-222 148c-22 15 -48 23 -76 23c-34 0 -65 -14 -88 -37l-235 312c-33 44 -23 106 23 137c43 30 102 16 134 -26l266 -352l-262 455c-28 47 -12 108 37 134c46 24 104 5 130 -40l241 -420l-136 337c-19 48 -6 106 40 130c49 26 109 5 132 -45
-l193 -415l101 -196c16 -31 63 -18 61 16l-12 224c-3 55 40 101 95 102c52 0 94 -44 97 -96z" />
-    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1407" 
-d="M1384 609l-1328 -738c-31 -17 -56 -2 -56 33v1472c0 35 25 50 56 33l1328 -738c31 -17 31 -45 0 -62z" />
-    <glyph glyph-name="heart-o" unicode="&#xf08a;" horiz-adv-x="1792" 
-d="M1664 940c0 281 -190 340 -350 340c-149 0 -317 -161 -369 -223c-24 -29 -74 -29 -98 0c-52 62 -220 223 -369 223c-160 0 -350 -59 -350 -340c0 -183 185 -353 187 -355l581 -560l580 559c3 3 188 173 188 356zM1792 940c0 -240 -220 -441 -229 -450l-623 -600
-c-12 -12 -28 -18 -44 -18s-32 6 -44 18l-624 602c-8 7 -228 208 -228 448c0 293 179 468 478 468c175 0 339 -138 418 -216c79 78 243 216 418 216c299 0 478 -175 478 -468z" />
-    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792" 
-d="M675 252c28 46 13 99 -34 119c-45 19 -105 -1 -133 -45c-29 -45 -15 -98 30 -119c46 -21 108 -1 137 45zM769 373c10 18 4 38 -14 45c-18 6 -40 -2 -50 -19c-10 -18 -5 -37 13 -45c18 -7 41 1 51 19zM943 266c-60 -136 -234 -210 -382 -162c-143 46 -203 187 -141 314
-c62 124 221 194 362 158c147 -38 221 -176 161 -310zM1255 426c-19 195 -275 329 -572 300c-297 -30 -521 -211 -502 -406s275 -329 572 -300c297 30 521 211 502 406zM1563 422c0 -225 -324 -508 -811 -508c-372 0 -752 180 -752 477c0 155 98 334 267 503
-c226 226 489 328 588 229c44 -43 48 -119 20 -209c-14 -46 43 -20 43 -21c182 77 341 81 399 -2c31 -44 28 -106 0 -178c-13 -33 4 -38 29 -46c103 -32 217 -109 217 -245zM1489 1046c57 -63 73 -150 48 -226c-10 -31 -43 -48 -74 -38s-48 43 -38 74c12 38 4 80 -24 111
-s-69 43 -107 35c-32 -7 -64 13 -70 45c-7 32 13 63 45 70c78 17 163 -7 220 -71zM1670 1209c118 -130 149 -308 99 -464c-12 -36 -50 -56 -86 -44s-56 50 -45 86c36 111 14 238 -70 330c-84 93 -207 128 -321 104c-37 -8 -74 16 -82 53s16 73 53 81c161 34 334 -15 452 -146
-z" />
-    <glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="998" 
-d="M998 800c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="cc-jcb" unicode="&#xf24b;" horiz-adv-x="2304" 
-d="M1951 538c0 -36 -24 -62 -54 -68c-4 -1 -13 -2 -18 -2h-153v140h153c5 0 14 -1 18 -2c30 -6 54 -33 54 -68zM1933 751c0 -35 -24 -58 -53 -63c-3 -1 -10 -1 -15 -1h-139v129h139c5 0 12 -1 15 -1c29 -5 53 -29 53 -64zM728 587v308h-228v-308c0 -75 -51 -131 -143 -131
-c-78 0 -155 23 -229 59v-112c120 -33 272 -33 272 -33c254 0 328 97 328 217zM1442 403v113c-52 -27 -118 -53 -200 -59c-144 -11 -230 59 -230 183s86 194 230 183c82 -6 147 -31 200 -58v112c-107 27 -208 31 -208 31c-352 16 -452 -123 -452 -268s100 -284 452 -268
-c0 0 101 4 208 31zM2176 518c0 74 -66 122 -152 128v3c78 11 121 62 121 121c0 76 -63 120 -148 124c-6 0 -17 1 -26 1h-455v-510h491c97 0 169 52 169 133zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h2048
-c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="compress" unicode="&#xf066;" horiz-adv-x="1510" 
-d="M755 576v-448c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64zM1510 1248
-c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="pencil-square-o" unicode="&#xf044;" horiz-adv-x="1784" 
-d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072c-9 9 -24 8 -33 -1l-350 -350c-9 -9 -10 -24 -1 -33s24 -8 33 1l350 350c9 9 10 24 1 33zM1408 478v-190c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832
-c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-9 -9 -21 -12 -32 -8c-15 4 -30 6 -45 6h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v126c0 8 3 16 9 22l64 64c10 10 23 12 35 7s20 -16 20 -29zM1312 1216
-l288 -288l-672 -672h-288v288zM1756 1084l-92 -92l-288 288l92 92c37 37 99 37 136 0l152 -152c37 -37 37 -99 0 -136z" />
-    <glyph glyph-name="google-plus-square" unicode="&#xf0d4;" 
-d="M917 631c0 25 -3 45 -6 64h-362v-132h217c-8 -56 -65 -165 -217 -165c-132 0 -239 108 -239 242s107 242 239 242c74 0 124 -31 153 -59l104 101c-67 62 -154 100 -257 100c-213 0 -384 -172 -384 -384s171 -384 384 -384c221 0 368 156 368 375zM1262 585h109v110h-109
-v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="keybase" unicode="&#xf2f4;" horiz-adv-x="1547" 
-d="M146 -80c-13 28 -30 67 -39 87l-13 38l-44 -49l-44 -48l-4 92c-7 131 4 267 26 363c50 214 208 408 411 511l45 21l-10 33c-7 17 -14 55 -16 79l-4 46l-46 4c-70 7 -107 26 -131 76c-13 26 -13 31 -9 101c4 92 12 111 40 142c35 39 59 45 146 41c63 -4 77 -6 105 -19
-c17 -9 33 -18 35 -18s22 24 46 57l41 59l26 -15c15 -9 33 -20 42 -24l15 -9l-13 -33c-7 -17 -16 -48 -18 -63l-4 -31l37 -4c133 -13 234 -94 271 -216c11 -39 11 -116 0 -153c-11 -35 -11 -37 -2 -37c15 0 118 -51 159 -77c81 -52 175 -143 227 -222
-c98 -146 140 -306 123 -481c-9 -105 -29 -187 -64 -268l-13 -31h-109l26 52c28 57 50 136 61 206c7 48 10 179 3 203l-5 15l-28 -31c-70 -76 -172 -98 -310 -61c-118 31 -167 37 -278 37c-85 0 -113 -2 -159 -13c-127 -28 -217 -69 -341 -159c-46 -33 -83 -59 -85 -59
-s4 22 13 50s24 74 33 105l17 55l-19 -20c-11 -11 -42 -42 -68 -70l-46 -50l11 -42c13 -55 44 -122 77 -172c13 -22 24 -40 24 -42s-26 -2 -57 -2h-57zM338 449c105 111 190 200 192 200c2 -2 -8 -35 -19 -72c-72 -227 -87 -271 -85 -273c0 0 26 9 54 20
-c186 81 402 92 631 31c103 -26 142 -26 192 0c28 15 40 23 53 45c24 37 26 90 11 138c-37 105 -182 240 -317 299c-70 31 -74 30 -89 15l-14 -13l57 -69c31 -37 64 -79 68 -90c13 -26 15 -68 2 -94c-17 -37 -70 -64 -111 -55c-17 4 -25 3 -42 -10c-48 -35 -100 -26 -144 26
-c-35 39 -44 59 -46 98c0 20 -7 43 -11 52c-7 13 -8 28 -8 48l2 31l-29 7c-39 11 -85 32 -111 52c-13 9 -24 17 -28 17s-33 -13 -64 -28c-212 -109 -349 -312 -371 -541c-2 -22 -4 -51 -6 -62l-3 -19l24 24c11 11 107 112 212 223zM904 610c20 15 37 28 41 28
-c2 0 9 -6 16 -15c11 -17 30 -17 39 -2c7 11 7 13 -122 170c-76 94 -92 110 -103 110c-26 -2 -19 -23 22 -73l39 -48l-22 -17c-24 -22 -26 -26 -11 -39c11 -11 13 -9 35 6l24 15l16 -13c9 -7 13 -17 13 -19c0 -4 -17 -20 -37 -37c-20 -15 -35 -34 -35 -38c0 -7 10 -24 30 -48
-c7 -13 18 -8 55 20zM679 920c13 39 56 70 100 70c24 0 59 -20 83 -46l22 -26l20 24c55 61 61 147 17 221c-33 55 -94 87 -179 96c-46 4 -57 8 -81 32l-17 18l-9 -13c-17 -26 -54 -111 -65 -144c-15 -50 -9 -129 11 -168c20 -37 72 -88 87 -81c2 -2 7 6 11 17zM484 1217
-c4 11 16 39 27 61s19 44 19 51c0 20 -21 28 -80 32c-52 4 -57 3 -68 -8c-9 -9 -13 -20 -13 -35c0 -13 -3 -37 -5 -57c-4 -46 2 -54 48 -61c68 -4 65 -5 72 17zM417 1270c0 37 4 41 35 41h28v-61h-61v20h-2zM554 -4c-13 13 -17 22 -17 44c0 41 24 66 63 66
-c37 0 64 -27 64 -64c0 -39 -25 -61 -66 -63c-22 0 -31 4 -44 17zM976 -10c-50 39 -24 116 39 116c39 0 61 -25 63 -66c0 -24 -2 -31 -17 -44s-22 -17 -44 -17c-20 0 -32 4 -41 11z" />
-    <glyph glyph-name="angle-right" unicode="&#xf105;" horiz-adv-x="582" 
-d="M582 576c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 14 -10 23c0 8 4 17 10 23l393 393l-393 393c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="forumbee" unicode="&#xf211;" 
-d="M934 1386c-423 -161 -756 -499 -914 -923c-13 58 -20 117 -20 176c0 423 342 766 765 766c57 0 114 -7 169 -19zM1203 1267c62 -43 117 -95 164 -155c-518 -151 -923 -558 -1071 -1077c-59 46 -112 100 -155 162c149 514 549 918 1062 1070zM470 -67
-c154 475 526 849 999 1006c27 -62 45 -128 54 -195c-390 -160 -700 -472 -859 -863c-67 9 -132 26 -194 52zM1536 -125c-124 32 -247 70 -367 115c-88 -55 -187 -92 -290 -107c146 273 371 499 643 646c-14 -100 -49 -198 -101 -284c45 -121 83 -245 115 -370z" />
-    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538" 
-d="M14 557l710 710c25 25 65 25 90 0l710 -710c25 -25 16 -45 -19 -45h-1472c-35 0 -44 20 -19 45zM1473 0h-1408c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1408c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64z" />
-    <glyph glyph-name="mobile" unicode="&#xf10b;" horiz-adv-x="768" 
-d="M464 128c0 44 -36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80s80 36 80 80zM672 288v704c0 17 -15 32 -32 32h-512c-17 0 -32 -15 -32 -32v-704c0 -17 15 -32 32 -32h512c17 0 32 15 32 32zM480 1136c0 9 -7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160
-c9 0 16 7 16 16zM768 1152v-1024c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v1024c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="hourglass-end" unicode="&#xf253;" 
-d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM874 700c202 76 406 343 406 708h-1024c0 -365 204 -632 406 -708c25 -9 42 -33 42 -60s-17 -51 -42 -60c-86 -32 -173 -100 -244 -196h700c-71 96 -158 164 -244 196c-25 9 -42 33 -42 60
-s17 51 42 60z" />
-    <glyph glyph-name="trash-o" unicode="&#xf014;" horiz-adv-x="1408" 
-d="M512 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM768 800v-576c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1024 800v-576c0 -18 -14 -32 -32 -32h-64
-c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1152 76v948h-896v-948c0 -48 27 -76 32 -76h832c5 0 32 28 32 76zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948
-c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="star-o" unicode="&#xf006;" horiz-adv-x="1664" 
-d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -27 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12
-c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
-    <glyph glyph-name="floppy-o" unicode="&#xf0c7;" 
-d="M384 0h768v384h-768v-384zM1280 0h128v896c0 19 -17 60 -30 73l-281 281c-14 14 -53 30 -73 30v-416c0 -53 -43 -96 -96 -96h-576c-53 0 -96 43 -96 96v416h-128v-1280h128v416c0 53 43 96 96 96h832c53 0 96 -43 96 -96v-416zM896 928v320c0 17 -15 32 -32 32h-192
-c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h192c17 0 32 15 32 32zM1536 896v-928c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h928c53 0 126 -30 164 -68l280 -280c38 -38 68 -111 68 -164z" />
-    <glyph glyph-name="file-powerpoint-o" unicode="&#xf1c4;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM416 106h92v555h-92v107h368c46 0 92 -4 130 -19c83 -35 137 -119 137 -228s-56 -202 -146 -233c-36 -13 -75 -15 -118 -15h-137v-167h93v-106h-327v106zM769 386c31 0 57 5 78 15c42 21 62 64 62 120c0 53 -20 94 -56 115c-21 12 -48 18 -83 18h-120v-268
-h119z" />
-    <glyph glyph-name="cc-discover" unicode="&#xf1f2;" horiz-adv-x="2304" 
-d="M313 759c0 -32 -13 -63 -36 -84c-20 -18 -47 -26 -89 -26h-17v220h17c42 0 68 -7 89 -27c23 -20 36 -51 36 -83zM2089 824c0 -34 -22 -52 -64 -52h-19v101h20c41 0 63 -17 63 -49zM380 759c0 98 -73 167 -179 167h-95v-333h95c50 0 87 11 119 38c38 32 60 79 60 128z
-M410 593h65v333h-65v-333zM730 694c0 53 -22 77 -96 104c-39 14 -50 24 -50 42c0 21 20 37 48 37c20 0 36 -8 53 -27l34 44c-28 25 -62 37 -98 37c-59 0 -104 -41 -104 -95c0 -46 21 -70 82 -92c25 -9 38 -14 45 -19c13 -8 19 -20 19 -34c0 -27 -21 -47 -50 -47
-c-31 0 -56 15 -71 44l-42 -40c30 -44 66 -64 115 -64c68 0 115 45 115 110zM1008 604v77c-26 -26 -49 -37 -78 -37c-66 0 -112 48 -112 115c0 64 48 115 109 115c31 0 54 -11 81 -38v77c-28 14 -52 20 -80 20c-98 0 -177 -77 -177 -174c0 -98 77 -174 176 -174
-c28 0 52 5 81 19zM2240 0v527c-160 -100 -723 -420 -1633 -591h1569c35 0 64 29 64 64zM1389 757c0 100 -81 181 -181 181s-181 -81 -181 -181s81 -181 181 -181s181 81 181 181zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56
-h-115v74h119v57h-184v-333zM2105 593h80l-105 140c49 10 76 43 76 94c0 63 -43 99 -118 99h-97v-333h65v133h9zM2304 1274v-1268c0 -74 -59 -134 -132 -134h-2040c-73 0 -132 60 -132 134v1268c0 74 59 134 132 134h2040c73 0 132 -60 132 -134z" />
-    <glyph glyph-name="bomb" unicode="&#xf1e2;" horiz-adv-x="1792" 
-d="M571 947c-13 33 -50 48 -83 35c-144 -58 -260 -174 -318 -318c-13 -33 2 -70 35 -83c8 -3 16 -5 24 -5c26 0 49 15 60 40c45 112 135 202 247 247c33 14 49 51 35 84zM1513 1303l46 -46l-244 -243l68 -68c25 -25 25 -66 0 -91l-64 -64c56 -101 89 -218 89 -343
-c0 -389 -315 -704 -704 -704s-704 315 -704 704s315 704 704 704c125 0 242 -33 343 -89l64 64c25 25 66 25 91 0l68 -68zM1521 1359c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10l-91 90c-12 13 -12 33 0 46c13 12 33 12 46 0l90 -91c13 -12 13 -33 0 -45zM1751 1129
-c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-90 91c-13 12 -13 33 0 45c12 13 33 13 45 0l91 -90c12 -13 12 -33 0 -46zM1792 1312c0 -18 -14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96c18 0 32 -14 32 -32zM1600 1504v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96
-c0 18 14 32 32 32s32 -14 32 -32zM1751 1449l-91 -90c-6 -6 -14 -10 -22 -10c-9 0 -17 4 -23 10c-13 12 -13 33 0 45l90 91c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
-    <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792" 
-d="M666 1055c-56 -86 -97 -179 -137 -273c-58 121 -122 242 -273 242h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c178 0 309 -83 410 -225zM1792 256c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192c-297 0 -480 -35 -665 225
-c55 86 96 179 136 273c58 -121 122 -242 273 -242h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1792 1152c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 14 -32 32v192h-256c-133 0 -196 -91 -252 -199
-c-29 -56 -54 -114 -78 -171c-111 -258 -241 -526 -566 -526h-224c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h224c133 0 196 91 252 199c29 56 54 114 78 171c111 258 241 526 566 526h256v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23z" />
-    <glyph glyph-name="fire-extinguisher" unicode="&#xf134;" horiz-adv-x="1408" 
-d="M512 1344c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 1376v-320c0 -10 -4 -19 -12 -25c-6 -5 -13 -7 -20 -7c-2 0 -4 0 -7 1l-448 96c-14 3 -25 16 -25 31h-256v-102c146 -30 256 -159 256 -314v-800c0 -35 -29 -64 -64 -64h-512
-c-35 0 -64 29 -64 64v800c0 143 94 265 224 305v111h-32c-212 0 -326 -219 -327 -221c-11 -22 -34 -35 -57 -35c-10 0 -20 2 -29 7c-31 16 -44 54 -28 86c5 10 105 204 306 269c-15 25 -25 54 -25 86c0 88 72 160 160 160s160 -72 160 -160c0 -23 -5 -44 -14 -64h302
-c0 15 11 28 25 31l448 96c3 1 5 1 7 1c7 0 14 -2 20 -7c8 -6 12 -15 12 -25z" />
-    <glyph glyph-name="gnu-social" unicode="&#xf2e7;" horiz-adv-x="1513" 
-d="M218 1404v0h1077c121 0 218 -97 218 -218v-873c0 -121 -97 -218 -218 -218h-118c-80 -349 -645 -351 -645 -351s334 104 335 351h-649c-121 0 -218 97 -218 218v873c0 121 97 218 218 218zM532 1229c-35 -5 -114 -89 -114 -150c0 -49 -3 -127 70 -167
-c-69 -67 -82 -163 -81 -247c2 -154 67 -382 357 -397s352 214 352 360h-305l50 -134l89 5s17 -107 -174 -100c-122 5 -200 68 -200 249s22 211 193 218s203 -139 203 -139l142 -3s-11 107 -93 188c73 40 72 118 69 167c-2 47 -102 169 -125 148s39 -41 34 -143
-c-2 -45 11 -79 -75 -79c-57 0 -33 51 -105 51c-43 0 -59 -28 -65 -50c-6 22 -21 50 -64 50c-72 0 -49 -51 -106 -51c-86 0 -72 34 -74 79c-5 102 56 122 33 143c-1 1 -3 2 -5 2h-6z" />
-    <glyph glyph-name="pencil-square" unicode="&#xf14b;" 
-d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818c8 -7 6 -21 -3 -30l-291 -291c-9 -9 -23 -11 -30 -3c-8 7 -6 21 3 30l291 291c9 9 23 11 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92c37 37 37 99 0 136l-152 152c-37 37 -99 37 -136 0
-l-92 -92zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="reddit-square" unicode="&#xf1a2;" 
-d="M939 407c7 -7 7 -19 0 -26c-49 -49 -143 -53 -171 -53s-122 4 -171 53c-7 7 -7 19 0 26c7 8 19 8 26 0c31 -31 98 -42 145 -42s114 11 145 42c7 8 19 8 26 0zM676 563c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1014 563
-c0 -42 -35 -77 -77 -77s-77 35 -77 77c0 43 35 77 77 77s77 -34 77 -77zM1229 666c0 56 -46 102 -103 102c-28 0 -54 -12 -73 -31c-70 48 -164 79 -267 82l54 243l171 -39c1 -42 35 -76 77 -76s77 35 77 77s-35 77 -77 77c-30 0 -56 -17 -69 -43l-189 42
-c-10 3 -19 -4 -21 -13l-60 -268c-103 -4 -196 -35 -265 -83c-19 20 -45 32 -74 32c-57 0 -103 -46 -103 -102c0 -41 24 -76 58 -93c-3 -15 -5 -32 -5 -48c0 -163 183 -295 409 -295s410 132 410 295c0 17 -2 33 -6 49c33 17 56 52 56 92zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="arrow-circle-o-down" unicode="&#xf01a;" 
-d="M1120 608c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v352c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-352h192c18 0 32 -14 32 -32zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
-s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="576" 
-d="M576 1088v-896c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-448 448c-12 12 -19 28 -19 45s7 33 19 45l448 448c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="camera-retro" unicode="&#xf083;" horiz-adv-x="1792" 
-d="M928 704c0 18 -14 32 -32 32c-88 0 -160 -72 -160 -160c0 -18 14 -32 32 -32s32 14 32 32c0 53 43 96 96 96c18 0 32 14 32 32zM1152 574c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM128 0h1536v128h-1536v-128zM1280 574
-c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM256 1216h384v128h-384v-128zM128 1024h1536v256h-828l-64 -128h-644v-128zM1792 1280v-1280c0 -71 -57 -128 -128 -128h-1536c-71 0 -128 57 -128 128v1280c0 71 57 128 128 128h1536
-c71 0 128 -57 128 -128z" />
-    <glyph glyph-name="thumbs-o-up" unicode="&#xf087;" 
-d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 768c0 68 -61 128 -128 128h-352c0 117 96 202 96 320c0 117 -23 192 -160 192c-64 -65 -31 -218 -128 -320c-28 -29 -52 -60 -77 -91c-45 -58 -164 -229 -243 -229h-32v-640h32
-c56 0 148 -36 202 -55c110 -38 224 -73 342 -73h121c113 0 192 45 192 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103c47 1 75 91 75 128zM1536 769c0 -58 -17 -115 -49 -163c6 -22 9 -46 9 -69
-c0 -50 -13 -100 -38 -144c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300h-129c-142 0 -274 42 -406 88c-29 10 -110 40 -138 40h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h274c39 26 107 116 137 155c34 44 69 87 107 128
-c60 64 28 222 128 320c24 23 56 37 90 37c104 0 204 -37 253 -134c31 -61 35 -119 35 -186c0 -70 -18 -130 -48 -192h176c138 0 256 -117 256 -255z" />
-    <glyph glyph-name="product-hunt" unicode="&#xf288;" horiz-adv-x="1792" 
-d="M1150 774c0 -74 -60 -134 -135 -134h-253v269h253c75 0 135 -60 135 -135zM1329 774c0 174 -140 314 -314 314h-433v-896h180v269h253c174 0 314 140 314 313zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="etsy" unicode="&#xf2d7;" 
-d="M518 1353v-655c232 -2 354 10 354 10c94 3 108 27 130 119l33 142h103l-14 -322l7 -319h-103l-29 127c-21 95 -62 118 -129 119c0 0 -86 8 -352 8v-556c0 -104 57 -153 177 -153h357c120 0 228 12 302 183l93 216h89c-7 -43 -55 -440 -62 -528c-329 12 -470 12 -470 12
-h-628l-376 -12v102l127 25c89 17 116 43 117 116c6 242 8 643 8 643s3 402 -8 645c-3 83 -28 103 -117 120l-127 24v102l376 -12h702s139 0 374 27c-14 -153 -31 -506 -31 -506h-93l-32 124c-39 155 -91 238 -187 238h-548c-41 0 -43 -14 -43 -39z" />
-    <glyph glyph-name="copyright" unicode="&#xf1f9;" 
-d="M1150 462v-109c0 -141 -225 -193 -366 -193c-274 0 -480 209 -480 485c0 271 204 475 475 475c99 0 358 -35 358 -194v-109c0 -9 -7 -16 -16 -16h-118c-9 0 -16 7 -16 16v70c0 63 -121 92 -203 92c-187 0 -317 -135 -317 -329c0 -201 136 -348 325 -348
-c72 0 208 27 208 90v70c0 9 7 16 15 16h119c8 0 16 -7 16 -16zM768 1280c-353 0 -640 -287 -640 -640s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="pleroma" unicode="&#xf324;" horiz-adv-x="961" 
-d="M120 1408h262v-1536h-382v1416c0 66 54 120 120 120zM575 1408h386v-648c0 -66 -53 -120 -119 -120v0h-267v768zM575 254h386v-262c0 -66 -53 -120 -119 -120v0h-267v382z" />
-    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1651" 
-d="M572 553l-466 -466c-13 -13 -33 -13 -46 0l-50 50c-13 13 -13 33 0 46l393 393l-393 393c-13 13 -13 33 0 46l50 50c13 13 33 13 46 0l466 -466c13 -13 13 -33 0 -46zM1651 96v-64c0 -18 -14 -32 -32 -32h-960c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h960
-c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="twitter-square" unicode="&#xf081;" 
-d="M1280 926c-38 -17 -78 -28 -121 -34c44 26 77 68 93 117c-41 -24 -86 -42 -134 -51c-38 41 -93 66 -153 66c-116 0 -210 -94 -210 -210c0 -16 1 -33 5 -48c-175 9 -330 92 -434 220c-18 -31 -29 -68 -29 -106c0 -73 34 -137 91 -175c-35 1 -68 11 -100 26v-2
-c0 -102 77 -187 173 -206c-18 -5 -32 -8 -51 -8c-13 0 -26 2 -39 4c27 -83 104 -144 196 -146c-72 -56 -162 -90 -261 -90c-17 0 -34 1 -50 3c93 -59 203 -94 322 -94c386 0 598 320 598 598c0 9 0 18 -1 27c41 29 77 66 105 109zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="shopping-bag" unicode="&#xf290;" horiz-adv-x="1793" 
-d="M1757 128l35 -313c2 -18 -4 -36 -16 -50c-12 -13 -30 -21 -48 -21h-1664c-18 0 -36 8 -48 21c-12 14 -18 32 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775c4 32 31 57 64 57h256v-128c0 -71 57 -128 128 -128s128 57 128 128v128h384v-128c0 -71 57 -128 128 -128
-s128 57 128 128v128h256c33 0 60 -25 64 -57zM1280 1152v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 141 -115 256 -256 256s-256 -115 -256 -256v-256c0 -35 -29 -64 -64 -64s-64 29 -64 64v256c0 212 172 384 384 384s384 -172 384 -384z" />
-    <glyph glyph-name="stop-circle" unicode="&#xf28d;" 
-d="M1088 352v576c0 18 -14 32 -32 32h-576c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h576c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="telegram" unicode="&#xf2c6;" horiz-adv-x="1792" 
-d="M1189 229l147 693c13 61 -22 85 -62 70l-864 -333c-59 -23 -58 -56 -10 -71l221 -69l513 323c24 16 46 7 28 -9l-415 -375l-16 -228c23 0 33 10 45 22l108 104l224 -165c41 -23 70 -11 81 38zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896
-s896 -401 896 -896z" />
-    <glyph glyph-name="circle" unicode="&#xf111;" 
-d="M1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664" 
-d="M160 0h608v1152h-640v-1120c0 -17 15 -32 32 -32zM1536 32v1120h-640v-1152h608c17 0 32 15 32 32zM1664 1248v-1216c0 -88 -72 -160 -160 -160h-1344c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="zotero" unicode="&#xf309;" horiz-adv-x="1330" 
-d="M662 -127l-662 310v924l662 301l668 -301v-924zM314 152h723v221l-63 78h-275l338 379v218l-63 78h-601l-59 -82v-214h377l-352 -379l-25 -97v-202z" />
-    <glyph glyph-name="sign-out" unicode="&#xf08b;" horiz-adv-x="1568" 
-d="M640 96c0 -28 13 -96 -32 -96h-320c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h320c17 0 32 -15 32 -32c0 -28 13 -96 -32 -96h-320c-88 0 -160 -72 -160 -160v-704c0 -88 72 -160 160 -160h288c25 0 64 5 64 -32zM1568 640c0 -17 -7 -33 -19 -45l-544 -544
-c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v288h-448c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h448v288c0 35 29 64 64 64c17 0 33 -7 45 -19l544 -544c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="cube" unicode="&#xf1b2;" horiz-adv-x="1664" 
-d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768c0 -47 -26 -90 -67 -112l-704 -384c-19 -11 -40 -16 -61 -16s-42 5 -61 16l-704 384c-41 22 -67 65 -67 112v768c0 54 34 102 84 120l704 256c14 5 29 8 44 8s30 -3 44 -8
-l704 -256c50 -18 84 -66 84 -120z" />
-    <glyph glyph-name="mars-stroke-v" unicode="&#xf22a;" horiz-adv-x="1152" 
-d="M640 892c288 -32 512 -276 512 -572c0 -340 -294 -611 -642 -572c-270 30 -486 253 -508 525c-25 317 207 586 510 619v132h-160c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h160v165l-92 -92c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l202 201c25 25 65 25 90 0
-l202 -201c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-92 92v-165h160c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-160v-132zM576 -128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="file-text" unicode="&#xf15c;" 
-d="M1468 1060c10 -10 19 -22 28 -36h-472v472c14 -9 26 -18 36 -28zM992 896h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544c0 -53 43 -96 96 -96zM1152 160v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64
-c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-704c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h704c18 0 32 14 32 32z" />
-    <glyph glyph-name="amazon" unicode="&#xf270;" horiz-adv-x="1736" 
-d="M1523 60c30 15 53 -8 22 -48s-280 -268 -698 -268s-738 286 -836 404c-27 31 4 45 22 33c293 -178 751 -471 1490 -121zM1730 175c15 -20 0 -108 -26 -172c-26 -63 -64 -107 -85 -124c-22 -18 -38 -11 -26 15s77 186 51 220c-26 33 -148 17 -192 13c-43 -4 -52 -8 -56 1
-c-9 23 87 62 150 70c63 7 164 3 184 -23zM1336 618c0 -110 129 -211 129 -211l-227 -224c-89 84 -156 154 -156 154c-10 10 -18 22 -25 33c-181 -283 -734 -265 -734 173c0 408 483 463 678 470v127c0 27 10 150 -142 150c0 0 -152 0 -217 -198l-294 27
-c0 197 187 417 539 417c351 0 449 -228 449 -329v-589zM664 597c0 -203 337 -251 337 69v162c-135 -4 -337 -42 -337 -231z" />
-    <glyph glyph-name="smile-o" unicode="&#xf118;" 
-d="M1134 461c-50 -161 -197 -269 -366 -269s-316 108 -366 269c-11 34 8 69 42 80c33 11 69 -8 80 -42c33 -107 132 -179 244 -179s211 72 244 179c11 34 47 53 81 42c33 -11 52 -46 41 -80zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
-s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
-s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="compass" unicode="&#xf14e;" 
-d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="address-book" unicode="&#xf2b9;" horiz-adv-x="1664" 
-d="M1201 298c0 177 -43 374 -221 374c-55 -32 -130 -87 -212 -87s-157 55 -212 87c-178 0 -221 -197 -221 -374c0 -99 65 -170 145 -170h576c80 0 145 71 145 170zM1028 892c0 144 -117 260 -260 260s-260 -116 -260 -260c0 -143 117 -259 260 -259s260 116 260 259z
-M1664 352v-192c0 -18 -14 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160v-224h96c18 0 32 -14 32 -32v-192c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32v-192
-c0 -18 -14 -32 -32 -32h-96v-128h96c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="list-ol" unicode="&#xf0cb;" horiz-adv-x="1777" 
-d="M366 -84c0 -110 -86 -172 -190 -172c-63 0 -127 21 -172 66l57 88c27 -25 68 -45 106 -45c35 0 72 17 72 57c0 56 -64 59 -105 56l-26 56c36 46 69 97 112 136v1c-32 0 -65 -2 -97 -2v-53h-106v152h333v-88l-95 -115c67 -16 111 -68 111 -137zM368 543v-159h-362
-c-3 18 -6 36 -6 54c0 185 226 213 226 297c0 34 -21 52 -54 52c-35 0 -64 -30 -81 -58l-85 59c33 69 101 108 177 108c93 0 173 -55 173 -154c0 -148 -217 -181 -220 -259h127v60h105zM1777 224v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32
-h1216c17 0 32 -14 32 -32zM369 1123v-99h-335v99h107c0 81 1 162 1 243v12h-2c-11 -22 -31 -37 -50 -54l-71 76l136 127h106v-404h108zM1777 736v-192c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 18 14 32 32 32h1216c17 0 32 -14 32 -32zM1777 1248v-192
-c0 -17 -15 -32 -32 -32h-1216c-18 0 -32 15 -32 32v192c0 17 14 32 32 32h1216c17 0 32 -15 32 -32z" />
-    <glyph glyph-name="stumbleupon-circle" unicode="&#xf1a3;" 
-d="M866 697l90 27v62c0 106 -90 191 -196 191s-196 -84 -196 -190v-283c0 -26 -21 -47 -47 -47s-46 21 -46 47v120h-151v-122c0 -109 88 -196 197 -196c107 0 196 86 196 193v280c0 26 21 47 47 47c25 0 46 -21 46 -47v-54zM1199 502v122h-150v-126c0 -26 -21 -47 -47 -47
-c-25 0 -46 21 -46 47v123l-90 -26l-60 28v-123c0 -107 89 -194 197 -194s196 87 196 196zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="slack" unicode="&#xf198;" 
-d="M837 508l-205 69l66 197l205 -68zM979 1344c528 -158 651 -387 493 -915s-387 -651 -915 -493s-651 387 -493 915s387 651 915 493zM1256 671v0c13 41 -9 87 -51 101l-99 34l34 103c13 42 -8 88 -50 101c-47 13 -88 -14 -101 -51l-34 -103l-206 69l35 103
-c13 42 -9 88 -51 101c-47 13 -87 -13 -100 -50l-35 -104c-100 33 -111 39 -126 37c-32 -1 -63 -22 -74 -54c-13 -42 8 -88 50 -101l100 -33l-66 -198c-100 33 -112 39 -127 37c-32 -1 -63 -23 -74 -55c-13 -42 9 -87 51 -100l99 -34l-34 -103c-13 -42 8 -88 50 -101
-s88 9 101 51l34 103l206 -69l-35 -103c-13 -42 9 -88 51 -101s87 8 100 50l35 104l99 -34c42 -13 88 9 101 51s-8 88 -50 101l-100 33l66 198l100 -34c42 -13 88 9 101 51z" />
-    <glyph glyph-name="qq" unicode="&#xf1d6;" horiz-adv-x="1756" 
-d="M252 730c-7 17 -8 34 -8 52c0 28 18 73 35 94c-1 26 10 79 30 96c0 185 143 418 310 498c103 49 211 66 324 66c88 0 184 -21 266 -55c235 -99 288 -283 338 -518l1 -5c29 -44 55 -96 55 -150c0 -27 -18 -54 -18 -78c0 -2 6 -10 7 -12c86 -127 164 -265 164 -423
-c0 -35 -19 -157 -75 -157c-39 0 -82 95 -96 121c-1 1 -2 1 -3 1l-5 -4c-32 -83 -67 -161 -132 -223c57 -55 149 -50 166 -145c-5 -11 -3 -23 -11 -34c-57 -86 -210 -97 -302 -97c-122 0 -221 32 -336 66c-24 7 -60 3 -86 6c-61 -67 -210 -85 -296 -85c-76 0 -370 5 -370 135
-c0 56 12 72 51 108c31 6 54 23 90 25c5 0 9 1 14 2c1 1 2 1 2 4l-2 3c-69 16 -166 190 -181 262l-5 3c-7 0 -10 -15 -12 -20c-22 -51 -74 -106 -132 -112h-1c-8 0 -5 8 -11 10c-14 33 -23 63 -23 100c0 200 96 348 252 466z" />
-    <glyph glyph-name="audio-description" unicode="&#xf29e;" horiz-adv-x="2304" 
-d="M504 542h171l-1 265zM1530 641c0 111 -64 193 -197 193h-54v-388h52c125 0 199 91 199 195zM956 1018l1 -756c0 -19 -15 -34 -33 -34h-216c-18 0 -33 15 -33 34v62h-291l-55 -81c-6 -9 -17 -15 -28 -15h-267c-28 0 -44 31 -27 53l556 757c6 9 16 14 27 14h332
-c19 0 34 -15 34 -34zM1783 641c0 -263 -192 -413 -450 -413h-270c-19 0 -34 15 -34 34v756c0 19 15 34 34 34h268c260 0 452 -148 452 -411zM1939 640c0 0 4 -260 -148 -413h-51c136 162 139 414 139 414s2 198 -135 410h43c148 -169 152 -411 152 -411zM2123 640
-c0 0 4 -260 -149 -413h-51c136 162 139 414 139 414s2 198 -134 410h43c148 -169 152 -411 152 -411zM2304 640c0 0 4 -260 -148 -413h-51c135 162 138 414 138 414s2 198 -134 410h43c148 -169 152 -411 152 -411z" />
-    <glyph glyph-name="stop-circle-o" unicode="&#xf28e;" 
-d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM768 96c300 0 544 244 544 544s-244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544zM480 320c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h576c18 0 32 -14 32 -32v-576
-c0 -18 -14 -32 -32 -32h-576z" />
-    <glyph glyph-name="grav" unicode="&#xf2d6;" horiz-adv-x="1794" 
-d="M1291 1060c-32 36 -84 -25 -56 -58c27 -33 116 -9 56 58zM895 814c-11 -11 -28 -11 -38 0c-11 10 -11 27 0 37c10 11 27 11 38 0c10 -10 10 -27 0 -37zM1060 740l-35 -35c-16 -17 -43 -17 -60 0l-38 38c-16 17 -16 43 0 60l35 35c16 16 43 16 60 0l38 -39
-c16 -16 16 -43 0 -59zM951 870c-10 -10 -27 -10 -38 0c-10 11 -10 28 0 38c11 11 28 11 38 0c11 -10 11 -27 0 -38zM1354 968c-45 -85 -163 -120 -235 -69c-72 52 -122 156 -43 246c78 90 147 62 216 -3c43 -41 106 -90 62 -174zM1555 486c9 58 -74 60 -92 93
-c-49 87 -100 133 -197 110c42 29 85 22 85 22c1 23 0 47 -34 90c14 45 1 81 1 81c56 31 97 88 105 156c13 112 -68 214 -180 227c-80 9 -158 -28 -196 -93c-84 -145 5 -256 81 -294c-52 5 -124 43 -145 124c-24 93 10 180 32 222c0 0 -16 21 -29 32c0 0 -50 0 -89 -19
-c43 55 91 52 91 52c0 23 -2 54 -13 78c-20 41 -90 47 -117 -15c1 3 2 5 4 7c-18 -43 -4 -202 61 -315c-9 -5 -33 -22 -47 -36c-78 -35 -203 -218 -203 -218c-102 -39 -280 -184 -256 -288c1 -11 5 -20 11 -27c-10 -8 -20 -18 -30 -30c-43 -50 -19 -127 64 -88
-c57 26 108 73 132 110c0 0 -21 18 -60 16c100 24 125 34 168 33c29 -14 29 124 29 124c0 53 -8 112 -40 150c45 -44 105 -118 101 -219c-3 -66 -55 -83 -55 -83c-33 -60 -156 -238 -110 -383c0 0 -35 54 -37 80c-63 -70 -169 -189 -90 -233c96 -53 394 320 457 514
-c125 75 200 171 231 235c80 -159 346 -343 367 -215zM1794 640c0 -495 -402 -896 -897 -896s-897 401 -897 896s402 896 897 896s897 -401 897 -896z" />
-    <glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="1919" 
-d="M1901 621c25 -25 25 -65 0 -90l-294 -294c-12 -13 -33 -13 -45 0l-45 45c-13 12 -13 33 0 45l185 185h-294v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-132c-32 -288 -276 -512 -572 -512c-340 0 -611 294 -572 642c30 270 253 486 525 508
-c317 25 586 -207 619 -510h132v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224h294l-185 185c-13 12 -13 33 0 45l45 45c12 13 33 13 45 0zM576 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1020" 
-d="M1020 399v-367c0 -18 -14 -32 -32 -32h-956c-18 0 -32 14 -32 32v150c0 17 14 32 32 32h97v383h-95c-18 0 -32 14 -32 32v131c0 18 14 32 32 32h95v223c0 228 184 393 438 393c200 0 329 -120 335 -125c12 -11 13 -30 3 -43l-103 -127c-6 -7 -13 -11 -22 -12
-c-8 -1 -17 2 -23 7c-1 1 -87 69 -188 69c-113 0 -189 -68 -189 -170v-215h305c18 0 32 -14 32 -32v-131c0 -18 -14 -32 -32 -32h-305v-379h414v181c0 18 14 32 32 32h162c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="shaarli-o" unicode="&#xf2f6;" horiz-adv-x="1630" 
-d="M859 1408v0c107 0 210 -67 264 -160c40 -69 61 -156 75 -252c115 -20 212 -47 288 -96c78 -50 134 -137 140 -229l3 -20c7 -91 -25 -191 -100 -245c-18 -13 -36 -22 -55 -30c11 -19 25 -36 34 -56c37 -84 43 -181 12 -267v-1h-1c-26 -70 -82 -133 -154 -160
-s-147 -24 -224 -5c-9 3 -17 5 -25 10c-94 47 -174 101 -239 162c-25 -34 -53 -66 -86 -91c-75 -57 -168 -84 -266 -84c-31 0 -62 -4 -90 5c-82 25 -155 68 -199 141s-44 164 -20 243l1 3l1 3l21 58c-57 19 -109 45 -151 86c-67 66 -95 165 -86 259h-1c0 1 1 2 1 3v7h1
-c8 100 75 193 165 238c87 43 192 57 317 60c6 109 27 206 84 283c66 89 177 135 290 135zM859 1288c-173 0 -260 -116 -260 -348c12 -37 -17 -59 -88 -67c-255 -1 -386 -66 -391 -196c-18 -141 68 -226 258 -253h19l-67 -186c-36 -117 11 -195 141 -235h53
-c155 0 260 80 314 239h37c58 -90 155 -170 294 -239c126 -31 206 -1 239 90c42 114 -12 238 -162 370c196 -10 285 53 264 190c3 117 -118 194 -360 231h-56c-21 269 -99 404 -235 404zM819 1097v0c3 0 6 0 9 -1c50 1 76 -51 76 -156v-188c22 -23 49 -31 84 -25
-c226 0 335 -27 327 -81c10 -49 -110 -65 -361 -48c-12 0 -14 -15 -6 -43c74 -85 140 -151 198 -200c59 -47 69 -92 31 -133c-32 -22 -74 -5 -127 49c-51 54 -117 122 -197 207c-18 24 -40 24 -67 0c-113 -230 -200 -325 -262 -288c-46 24 -23 105 68 242l54 116
-c12 33 -72 45 -250 36c-51 3 -77 22 -77 58c0 37 24 57 71 58l304 17c31 0 48 27 52 81l4 107c-1 131 22 195 69 192z" />
-    <glyph glyph-name="ban" unicode="&#xf05e;" 
-d="M1312 643c0 109 -32 210 -87 295l-754 -753c86 -56 188 -89 297 -89c300 0 544 245 544 547zM313 344l755 754c-86 58 -189 91 -300 91c-300 0 -544 -245 -544 -546c0 -111 33 -213 89 -299zM1536 643c0 -426 -344 -771 -768 -771s-768 345 -768 771
-c0 425 344 770 768 770s768 -345 768 -770z" />
-    <glyph glyph-name="fighter-jet" unicode="&#xf0fb;" horiz-adv-x="1920" 
-d="M1920 576c0 0 0 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69c35 0 64 -7 64 -16s-29 -16 -64 -16h-320v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h320c35 0 64 -7 64 -16
-s-29 -16 -64 -16h-69l293 -352h64l224 -64l352 -32c288 -64 288 -96 288 -96z" />
-    <glyph glyph-name="space-shuttle" unicode="&#xf197;" horiz-adv-x="2176" 
-d="M620 416c-69 -40 -163 -64 -268 -64h-128v64h-64c-18 0 -32 36 -32 80c0 18 3 35 7 49c-77 2 -135 15 -135 31s58 29 135 31c-4 14 -7 31 -7 49c0 44 14 80 32 80h64v64h128c105 0 199 -24 268 -64h1113c74 -13 141 -24 187 -32c192 -32 256 -96 256 -128
-s-64 -96 -256 -128c-46 -8 -113 -19 -187 -32h-1113zM1739 668c32 -22 53 -55 53 -92s-21 -70 -53 -92l81 -30c41 29 68 73 68 122s-27 93 -68 122zM625 400h1015s-217 -38 -456 -80c-128 0 -224 -96 -224 -96l-288 -288s-97 -64 -160 -64h-96l-93 464h29
-c102 0 199 23 273 64zM352 816h-29l93 464h96c65 0 128 -32 160 -64l288 -288s96 -96 224 -96c239 -42 456 -80 456 -80h-1015c-74 41 -171 64 -273 64z" />
-    <glyph glyph-name="matrix-org" unicode="&#xf313;" 
-d="M40 1373v-1466h106v-35h-146v1536h146v-35h-106zM491 908v-74h2c20 28 44 51 72 66c28 16 60 23 96 23c35 0 66 -7 95 -20s50 -37 65 -71c16 24 38 46 66 64s61 27 99 27c29 0 56 -4 81 -11s45 -18 63 -34s31 -35 41 -60s15 -56 15 -91v-367h-150v311c0 18 -1 36 -2 52
-s-6 30 -12 42s-16 22 -28 29s-29 10 -50 10s-38 -4 -51 -12s-24 -19 -31 -32s-13 -27 -15 -44s-4 -34 -4 -51v-305h-150v307c0 16 0 33 -1 49s-4 30 -9 44c-5 13 -15 24 -27 32s-31 12 -55 12c-7 0 -16 -2 -28 -5s-23 -9 -34 -18s-20 -21 -28 -38s-11 -38 -11 -65v-318h-151
-v548h142zM1496 -93v1466h-106v35h146v-1536h-146v35h106z" />
-    <glyph glyph-name="steam" unicode="&#xf1b6;" horiz-adv-x="1792" 
-d="M1582 954c0 -135 -110 -244 -244 -244c-135 0 -244 109 -244 244s109 244 244 244c134 0 244 -109 244 -244zM812 212c0 139 -111 250 -250 250c-18 0 -36 -2 -54 -6l104 -42c102 -41 152 -156 111 -258s-157 -152 -259 -110c-41 16 -82 33 -123 49
-c42 -79 125 -133 221 -133c139 0 250 111 250 250zM1642 953c0 168 -137 305 -305 305c-169 0 -306 -137 -306 -305c0 -169 137 -305 306 -305c168 0 305 136 305 305zM1792 953c0 -252 -204 -455 -455 -455l-437 -319c-16 -172 -162 -307 -338 -307
-c-162 0 -299 115 -332 268l-230 92v429l389 -157c51 31 110 48 173 48c12 0 24 -1 35 -2l284 407c2 249 206 451 456 451c251 0 455 -204 455 -455z" />
-    <glyph glyph-name="bars" unicode="&#xf0c9;" 
-d="M1536 192v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 704v-128c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1536 1216v-128
-c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="lightbulb-o" unicode="&#xf0eb;" horiz-adv-x="1024" 
-d="M736 960c0 -17 -15 -32 -32 -32s-32 15 -32 32c0 69 -107 96 -160 96c-17 0 -32 15 -32 32s15 32 32 32c93 0 224 -49 224 -160zM896 960c0 200 -203 320 -384 320s-384 -120 -384 -320c0 -64 26 -131 68 -180c19 -22 41 -43 61 -66c71 -85 131 -185 141 -298h228
-c10 113 70 213 141 298c20 23 42 44 61 66c42 49 68 116 68 180zM1024 960c0 -103 -34 -192 -103 -268s-160 -183 -168 -290c29 -17 47 -49 47 -82c0 -24 -9 -47 -25 -64c16 -17 25 -40 25 -64c0 -33 -17 -63 -45 -81c8 -14 13 -31 13 -47c0 -65 -51 -96 -109 -96
-c-26 -58 -84 -96 -147 -96s-121 38 -147 96c-58 0 -109 31 -109 96c0 16 5 33 13 47c-28 18 -45 48 -45 81c0 24 9 47 25 64c-16 17 -25 40 -25 64c0 33 18 65 47 82c-8 107 -99 214 -168 290s-103 165 -103 268c0 272 259 448 512 448s512 -176 512 -448z" />
-    <glyph glyph-name="map-pin" unicode="&#xf276;" horiz-adv-x="1024" 
-d="M512 448c44 0 87 5 128 15v-655c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v655c41 -10 84 -15 128 -15zM512 1536c283 0 512 -229 512 -512s-229 -512 -512 -512s-512 229 -512 512s229 512 512 512zM512 1312c18 0 32 14 32 32s-14 32 -32 32
-c-194 0 -352 -158 -352 -352c0 -18 14 -32 32 -32s32 14 32 32c0 159 129 288 288 288z" />
-    <glyph glyph-name="circle-o" unicode="&#xf10c;" 
-d="M768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="contao" unicode="&#xf26d;" horiz-adv-x="1748" 
-d="M116 1408h197c-47 -43 -89 -93 -126 -149c-155 -239 -92 -501 -32 -783c49 -229 90 -447 233 -604h-272c-64 0 -116 52 -116 116v1304c0 64 52 116 116 116zM1324 1408h308c64 0 116 -52 116 -116v-1304c0 -64 -52 -116 -116 -116h-178c132 131 207 321 196 565
-l-469 -101c-6 -111 -44 -218 -196 -250c-85 -18 -155 2 -199 40c-54 46 -97 106 -169 448c-73 343 -58 415 -28 479c25 52 81 100 165 118c153 32 231 -51 282 -150l468 100c-46 118 -107 214 -180 287z" />
-    <glyph glyph-name="vine" unicode="&#xf1ca;" horiz-adv-x="1458" 
-d="M1458 709v-198c-70 -16 -140 -23 -198 -23c-140 -294 -391 -546 -475 -593c-53 -30 -103 -32 -162 3c-103 62 -493 382 -623 1388h283c71 -604 245 -914 436 -1146c106 106 208 247 287 406c-189 96 -304 307 -304 553c0 249 143 437 388 437c238 0 368 -148 368 -403
-c0 -95 -20 -203 -58 -286c0 0 -176 -35 -241 78c13 43 31 117 31 184c0 119 -43 177 -108 177c-69 0 -117 -65 -117 -190c0 -255 162 -401 372 -401c37 0 79 4 121 14z" />
-    <glyph glyph-name="align-center" unicode="&#xf037;" horiz-adv-x="1792" 
-d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1408 576v-128c0 -35 -29 -64 -64 -64h-896c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h896c35 0 64 -29 64 -64zM1664 960v-128c0 -35 -29 -64 -64 -64
-h-1408c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1280 1344v-128c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h640c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1202" 
-d="M1111 896c13 -133 -43 -213 -131 -258c146 -35 238 -122 220 -317c-23 -243 -203 -308 -461 -322v-255h-154v251c-39 0 -80 0 -122 1v-252h-154v255c-36 0 -72 1 -109 1h-200l31 183c113 -2 111 0 111 0c43 0 55 31 58 51v402h16c-6 1 -12 1 -16 1v287
-c-6 32 -26 68 -89 68c0 0 2 2 -111 0v164l212 -1c31 0 64 0 97 1v252h154v-247c41 1 82 2 122 2v245h154v-252c198 -17 355 -78 372 -260zM896 351c0 198 -326 169 -430 169v-338c104 0 430 -22 430 169zM825 827c0 181 -272 154 -359 154v-307c87 0 359 -20 359 153z" />
-    <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664" 
-d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
-M512 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288c0 17 -15 32 -32 32h-64c-17 0 -32 -15 -32 -32v-288
-c0 -17 15 -32 32 -32h64c17 0 32 15 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128
-c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920" 
-d="M1280 32c0 -17 -15 -32 -32 -32h-960c-37 0 -32 39 -32 64v576h-192c-35 0 -64 29 -64 64c0 15 5 30 15 41l320 384c12 14 30 22 49 22s37 -8 49 -22l320 -384c10 -11 15 -26 15 -41c0 -35 -29 -64 -64 -64h-192v-384h576c9 0 19 -4 25 -11l160 -192c4 -6 7 -14 7 -21z
-M1920 448c0 -15 -5 -30 -15 -41l-320 -384c-12 -14 -30 -23 -49 -23s-37 9 -49 23l-320 384c-10 11 -15 26 -15 41c0 35 29 64 64 64h192v384h-576c-9 0 -19 4 -25 12l-160 192c-4 5 -7 13 -7 20c0 17 15 32 32 32h960c37 0 32 -39 32 -64v-576h192c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="hourglass" unicode="&#xf254;" 
-d="M1504 -64c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472zM130 0c19 337 294 518 478 640c-184 122 -459 303 -478 640h1276c-19 -337 -294 -518 -478 -640c184 -122 459 -303 478 -640h-1276zM1504 1536
-c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v128c0 18 14 32 32 32h1472z" />
-    <glyph glyph-name="paint-brush" unicode="&#xf1fc;" horiz-adv-x="1790" 
-d="M1615 1536c91 0 175 -68 175 -163c0 -53 -21 -104 -45 -151c-78 -148 -340 -637 -465 -752c-61 -57 -133 -91 -218 -91c-169 0 -307 144 -307 312c0 80 33 158 92 212l638 579c35 32 81 54 130 54zM706 502c52 -101 147 -177 257 -206l1 -71c6 -285 -192 -481 -478 -481
-c-339 0 -486 270 -486 577c37 -25 166 -128 208 -128c25 0 46 14 55 37c85 222 218 262 443 272z" />
-    <glyph glyph-name="viadeo-square" unicode="&#xf2aa;" 
-d="M1050 495c0 50 -9 100 -28 147c-26 -16 -55 -28 -85 -34c16 -36 22 -75 22 -114c0 -154 -114 -280 -270 -280c-157 0 -271 126 -271 280c0 151 115 284 271 284c34 0 67 -6 98 -19c3 30 13 60 27 87c-40 14 -82 21 -125 21c-207 0 -361 -167 -361 -372s155 -367 361 -367
-s361 163 361 367zM872 850c25 -72 38 -148 38 -225c0 -173 -71 -317 -219 -411h-10c-14 0 -28 1 -42 3c199 76 235 377 235 562c0 23 0 47 -2 71zM872 850c-5 97 -60 247 -142 302c56 -95 106 -197 142 -302zM1207 955c0 61 -15 123 -51 174c-24 -51 -69 -94 -124 -109
-c-79 -22 -149 -59 -149 -153c0 -27 9 -54 24 -77c95 22 196 92 236 182c-6 -80 -155 -177 -213 -209c29 -29 67 -52 110 -52c73 0 125 65 150 127c12 30 17 86 17 117zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288
-h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1899" 
-d="M448 1088c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1515 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-715 716c-51 50 -91 147 -91 218v416c0 70 58 128 128 128h416c71 0 168 -40 219 -91
-l715 -714c23 -24 37 -57 37 -91zM1899 512c0 -34 -14 -67 -37 -90l-491 -492c-24 -23 -57 -37 -91 -37c-52 0 -78 24 -112 59l470 470c23 23 37 56 37 90s-14 67 -37 91l-715 714c-51 51 -148 91 -219 91h224c71 0 168 -40 219 -91l715 -714c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="minus-square-o" unicode="&#xf147;" horiz-adv-x="1408" 
-d="M1152 736v-64c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1280 288v832c0 88 -72 160 -160 160h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160zM1408 1120v-832
-c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="user-circle" unicode="&#xf2bd;" horiz-adv-x="1792" 
-d="M1523 197c-26 187 -102 353 -272 376c-88 -96 -215 -157 -355 -157s-267 61 -355 157c-170 -23 -246 -189 -272 -376c139 -196 368 -325 627 -325s488 129 627 325zM1280 896c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1792 640
-c0 -493 -400 -896 -896 -896c-495 0 -896 402 -896 896c0 495 401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="thumbs-o-down" unicode="&#xf088;" 
-d="M256 1088c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 512c0 37 -28 127 -75 128c21 24 35 71 35 103c0 47 -19 87 -53 119c12 21 18 45 18 69c0 46 -23 103 -65 126c3 18 5 37 5 56c0 117 -74 167 -185 167h-128c-118 0 -232 -35 -342 -73
-c-54 -19 -146 -55 -202 -55h-32v-640h32c79 0 198 -171 243 -229c25 -31 49 -62 77 -91c97 -102 64 -255 128 -320c137 0 160 75 160 192c0 118 -96 203 -96 320h352c67 0 128 60 128 128zM1536 511c0 -138 -118 -255 -256 -255h-176c30 -62 48 -122 48 -192
-c0 -66 -4 -126 -35 -186c-49 -97 -149 -134 -253 -134c-34 0 -66 14 -90 37c-100 98 -69 256 -128 321c-38 40 -73 83 -107 127c-30 39 -98 129 -137 155h-274c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c28 0 109 30 138 40c144 50 269 88 423 88h112
-c182 0 313 -108 312 -295v-5c39 -50 60 -114 60 -178c0 -14 -1 -29 -3 -43c25 -44 38 -94 38 -144c0 -23 -3 -47 -9 -69c32 -48 49 -105 49 -163z" />
-    <glyph glyph-name="subscript" unicode="&#xf12c;" horiz-adv-x="1531" 
-d="M892 167v-167h-248l-159 252l-24 42c-6 7 -9 14 -11 21h-3c-2 -7 -6 -14 -9 -21c-6 -12 -15 -28 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228c9 -14 16 -29 23 -42c6 -7 9 -14 11 -21h3c2 7 6 14 11 21l25 42l140 228h257v-168h-125
-l-184 -267l204 -296h109zM1531 -50v-206h-514l-4 27c-1 15 -3 33 -3 46c0 273 350 296 350 441c0 52 -47 87 -100 87c-39 0 -72 -18 -97 -39c-13 -11 -25 -25 -36 -38l-105 92c18 25 38 46 63 66c42 34 103 65 188 65c145 0 246 -85 246 -218c0 -239 -332 -259 -346 -403
-h232v80h126z" />
-    <glyph glyph-name="flickr" unicode="&#xf16e;" 
-d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM698 640c0 117 -95 212 -212 212s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212zM1262 640c0 117 -95 212 -212 212
-s-212 -95 -212 -212s95 -212 212 -212s212 95 212 212z" />
-    <glyph glyph-name="cc-amex" unicode="&#xf1f3;" horiz-adv-x="2304" 
-d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453c0 24 -18 33 -40 33h-84v-69h83c23 0 41 11 41 36zM1475 457c0 25 -22 29 -42 29h-82v-61h81c22 0 43 5 43 32zM1197 923c0 25 -22 29 -42 29h-82v-60h81
-c22 0 43 5 43 31zM1656 854h89l-44 108zM699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453c0 -109 -119 -91 -193 -91v-91h-126l-80 90l-83 -90h-256v271h260l80 -89l82 89h207
-c61 0 109 -21 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229c0 -73 -59 -134 -132 -134h-2040c-73 0 -132 61 -132 134v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1c9 0 10 -7 10 -14v-86h279v23
-c65 -34 154 -23 222 -23l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249c-37 0 -76 -4 -109 -22v22h-172v-22c-20 18 -47 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391c0 73 59 134 132 134h2040c73 0 132 -61 132 -134
-v-678h-120c-28 0 -58 -5 -81 -22v22h-177c-25 0 -59 -4 -78 -22v22h-316v-22c-24 17 -59 22 -87 22h-209v-22c-21 20 -64 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21c30 0 61 1 90 13v-102h174v99h8c10 0 12 -1 12 -12v-87h529c29 0 65 6 88 24
-v-24h168c32 0 66 3 95 17zM1546 469c0 -30 -16 -60 -46 -72c36 -13 43 -37 43 -72v-54h-65v45c0 46 -15 54 -58 54h-69v-99h-65v271h154c51 0 106 -9 106 -73zM1269 936c0 -31 -17 -61 -46 -73c37 -13 43 -36 43 -72v-53h-65c-1 58 14 98 -58 98h-70v-98h-64v271l153 -1
-c52 0 107 -8 107 -72zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357c0 -64 -44 -86 -102 -86h-126v58h126c16 0 34 4 34 25c0 58 -167 -22 -167 107c0 55 42 81 92 81h130v-57h-119c-17 0 -36 -3 -36 -25
-c0 -59 168 27 168 -103zM2304 407v-101c-19 -28 -56 -35 -88 -35h-125v58h125c16 0 33 5 33 25c0 57 -167 -22 -167 107c0 55 43 81 93 81h129v-57h-118c-18 0 -36 -3 -36 -25c0 -48 113 1 154 -53zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75
-c-89 0 -129 46 -129 133c0 91 41 138 133 138h63v-59c-68 1 -130 16 -130 -77c0 -46 11 -78 63 -78h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
-    <glyph glyph-name="reddit" unicode="&#xf1a1;" horiz-adv-x="1792" 
-d="M1095 369c9 -9 9 -23 0 -31c-57 -57 -167 -62 -199 -62s-142 5 -199 62c-9 8 -9 22 0 31c8 8 22 8 30 0c36 -37 114 -49 169 -49s132 12 169 49c8 8 22 8 30 0zM788 550c0 -49 -40 -89 -89 -89c-50 0 -90 40 -90 89c0 50 40 90 90 90c49 0 89 -40 89 -90zM1183 550
-c0 -49 -40 -89 -90 -89c-49 0 -89 40 -89 89c0 50 40 90 89 90c50 0 90 -40 90 -90zM1434 670c0 66 -54 119 -120 119c-34 0 -64 -14 -86 -36c-81 56 -190 92 -311 96l63 283l200 -45c0 -49 40 -89 89 -89c50 0 90 41 90 90s-40 90 -90 90c-35 0 -65 -21 -80 -50l-221 49
-c-11 3 -22 -5 -25 -16l-69 -312c-120 -5 -228 -41 -309 -97c-22 23 -53 37 -87 37c-66 0 -120 -53 -120 -119c0 -48 28 -88 68 -108c-4 -18 -6 -37 -6 -56c0 -190 214 -344 477 -344c264 0 478 154 478 344c0 19 -2 39 -7 57c39 20 66 60 66 107zM1792 640
-c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="times-circle" unicode="&#xf057;" 
-d="M1149 414c0 17 -7 33 -19 45l-181 181l181 181c12 12 19 28 19 45s-7 34 -19 46l-90 90c-12 12 -29 19 -46 19s-33 -7 -45 -19l-181 -181l-181 181c-12 12 -28 19 -45 19s-34 -7 -46 -19l-90 -90c-12 -12 -19 -29 -19 -46s7 -33 19 -45l181 -181l-181 -181
-c-12 -12 -19 -28 -19 -45s7 -34 19 -46l90 -90c12 -12 29 -19 46 -19s33 7 45 19l181 181l181 -181c12 -12 28 -19 45 -19s34 7 46 19l90 90c12 12 19 29 19 46zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="2304" 
-d="M651 539c0 -52 -42 -94 -93 -94c-52 0 -94 42 -94 94c0 51 42 93 94 93c51 0 93 -42 93 -93zM1805 540c0 -52 -42 -94 -94 -94s-94 42 -94 94s42 93 94 93s94 -41 94 -93zM765 539c0 106 -87 193 -193 193c-107 0 -193 -87 -193 -193c0 -107 86 -193 193 -193
-c106 0 193 86 193 193zM1918 540c0 106 -86 193 -193 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 193 86 193 193zM850 539c0 -154 -124 -279 -278 -279s-279 125 -279 279c0 153 125 278 279 278s278 -125 278 -278zM2004 540
-c0 -154 -125 -278 -279 -278c-153 0 -278 124 -278 278s125 278 278 278c154 0 279 -124 279 -278zM1040 537c0 255 -207 462 -462 462c-254 0 -461 -207 -461 -462s207 -462 461 -462c255 0 462 207 462 462zM1708 1110c-165 72 -351 111 -556 111s-409 -39 -573 -110
-c317 -1 573 -257 573 -574c0 311 247 564 556 573zM2187 537c0 255 -206 462 -461 462s-462 -207 -462 -462s207 -462 462 -462s461 207 461 462zM1921 1103h383c-60 -70 -104 -164 -115 -229c69 -95 110 -211 110 -337c0 -317 -257 -573 -573 -573c-180 0 -340 82 -445 211
-c0 0 -47 -56 -129 -179c-14 29 -85 130 -128 180c-105 -130 -266 -212 -446 -212c-316 0 -573 256 -573 573c0 126 41 242 110 337c-11 65 -55 159 -115 229h365c196 131 481 213 787 213s573 -82 769 -213z" />
-    <glyph glyph-name="sort-amount-asc" unicode="&#xf160;" horiz-adv-x="1760" 
-d="M704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1760 -32v-192c0 -18 -14 -32 -32 -32h-832c-18 0 -32 14 -32 32
-v192c0 18 14 32 32 32h832c18 0 32 -14 32 -32zM1568 480v-192c0 -18 -14 -32 -32 -32h-640c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h640c18 0 32 -14 32 -32zM1376 992v-192c0 -18 -14 -32 -32 -32h-448c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h448
-c18 0 32 -14 32 -32zM1184 1504v-192c0 -18 -14 -32 -32 -32h-256c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h256c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="renren" unicode="&#xf18b;" 
-d="M1133 -34c-109 -60 -234 -94 -368 -94c-133 0 -258 34 -367 94c177 112 320 281 367 479c48 -198 191 -367 368 -479zM638 1394v-485c0 -342 -189 -636 -457 -766c-113 134 -181 306 -181 495c0 380 276 695 638 756zM1536 638c0 -189 -68 -361 -181 -495
-c-268 130 -457 424 -457 766v485c362 -61 638 -376 638 -756z" />
-    <glyph glyph-name="key-modern" unicode="&#xf2f7;" horiz-adv-x="1792" 
-d="M546 1536v0c139 1 278 -52 383 -158c142 -141 187 -343 137 -525l726 -726v-319c0 -35 -29 -64 -64 -64h-300l-45 45l135 226l-46 45l-225 -135l-45 46l134 225l-45 45l-225 -134l-46 45l135 225l-45 46l-243 -139l-186 186c-182 -50 -382 -5 -524 136
-c-211 212 -209 556 4 770c107 106 246 159 385 160zM405 1290v0c-41 0 -82 -16 -113 -47c-63 -63 -63 -163 0 -226s164 -63 227 0s63 163 0 226c-31 31 -73 47 -114 47z" />
-    <glyph glyph-name="arrow-circle-o-right" unicode="&#xf18e;" 
-d="M1152 640c0 -8 -3 -17 -9 -23l-320 -320c-6 -6 -15 -9 -23 -9c-17 0 -32 15 -32 32v192h-352c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h352v192c0 18 14 32 32 32c9 0 17 -4 24 -10l319 -319c6 -6 9 -15 9 -23zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544
-s244 -544 544 -544s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="pinterest-p" unicode="&#xf231;" horiz-adv-x="1280" 
-d="M0 939c0 369 338 597 680 597c314 0 600 -216 600 -547c0 -311 -159 -656 -513 -656c-84 0 -190 42 -231 120c-76 -301 -70 -346 -238 -576l-14 -5l-9 10c-6 63 -15 125 -15 188c0 204 94 499 140 697c-25 51 -32 113 -32 169c0 101 70 229 184 229
-c84 0 129 -64 129 -143c0 -130 -88 -252 -88 -378c0 -86 71 -146 154 -146c230 0 301 332 301 509c0 237 -168 366 -395 366c-264 0 -468 -190 -468 -458c0 -129 79 -195 79 -226c0 -26 -19 -118 -52 -118c-5 0 -12 2 -17 3c-143 43 -195 234 -195 365z" />
-    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408" 
-d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
-    <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1683" 
-d="M832 1024c0 106 -86 192 -192 192s-192 -86 -192 -192c0 -29 7 -57 19 -83c-26 12 -54 19 -83 19c-106 0 -192 -86 -192 -192s86 -192 192 -192s192 86 192 192c0 29 -7 57 -19 83c26 -12 54 -19 83 -19c106 0 192 86 192 192zM1683 320c0 -23 -92 -115 -115 -115
-c-26 0 -107 94 -128 115l-96 -96l220 -220c18 -18 28 -43 28 -68c0 -56 -64 -120 -120 -120c-25 0 -50 10 -68 28l-671 671c-105 -78 -233 -131 -365 -131c-218 0 -368 151 -368 368c0 328 328 656 656 656c217 0 368 -150 368 -368c0 -132 -53 -260 -131 -365l355 -355
-l96 96c-21 21 -115 102 -115 128c0 23 92 115 115 115c8 0 17 -4 23 -10c37 -37 316 -300 316 -329z" />
-    <glyph glyph-name="syncthing" unicode="&#xf311;" 
-d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM774 1254c-337 0 -611 -274 -611 -611c0 -10 0 -28 1 -38c-17 -10 -32 -23 -42 -41c-33 -56 -14 -128 41 -161c18 -10 37 -15 56 -16c97 -210 309 -355 555 -355
-c108 0 210 28 298 78c16 -11 35 -19 56 -21c65 -5 122 42 129 107v10c0 14 -5 36 -11 49c87 105 139 241 139 388c0 57 -8 112 -23 164c14 13 25 30 32 49c21 61 -12 128 -73 149c-12 4 -26 6 -38 6v0c-6 0 -15 0 -21 -1c-112 148 -289 244 -488 244zM774 1175v0
-c171 0 323 -79 420 -204c-10 -11 -17 -24 -22 -39c-9 -27 -8 -55 1 -80l-224 -186c-18 11 -39 16 -60 16c-22 0 -44 -5 -63 -18c-26 -16 -43 -42 -50 -70l-447 -41c-10 21 -25 39 -46 52c-13 8 -27 12 -41 14c0 8 -1 16 -1 24c0 295 238 532 533 532zM1224 792
-c6 -3 15 -7 21 -9c15 -5 29 -8 44 -7c11 -43 17 -87 17 -133c0 -125 -42 -240 -114 -331c-13 7 -28 11 -43 13c-15 1 -28 0 -42 -4l-122 175c23 32 29 73 15 110zM783 516c2 -4 5 -11 8 -15c29 -44 81 -63 129 -50l122 -175c-12 -16 -19 -37 -21 -59v-9c0 -10 2 -26 5 -35
-c-75 -40 -161 -63 -252 -63c-211 0 -394 123 -480 301c10 8 24 22 30 33c5 8 11 22 13 31z" />
-    <glyph glyph-name="picture-o" unicode="&#xf03e;" horiz-adv-x="1920" 
-d="M640 960c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600c-17 0 -32 -15 -32 -32v-1216c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32v1216c0 17 -15 32 -32 32z
-M1920 1248v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="list-alt" unicode="&#xf022;" horiz-adv-x="1792" 
-d="M384 352v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 608v-64c0 -17 -15 -32 -32 -32h-64c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM384 864v-64c0 -17 -15 -32 -32 -32h-64
-c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h64c17 0 32 -15 32 -32zM1536 352v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1536 608v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960
-c17 0 32 -15 32 -32zM1536 864v-64c0 -17 -15 -32 -32 -32h-960c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h960c17 0 32 -15 32 -32zM1664 160v832c0 17 -15 32 -32 32h-1472c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 1248v-1088
-c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="fort-awesome" unicode="&#xf286;" horiz-adv-x="1664" 
-d="M640 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1152 528v224c0 9 -7 16 -16 16h-96c-9 0 -16 -7 -16 -16v-224c0 -9 7 -16 16 -16h96c9 0 16 7 16 16zM1664 496v-752h-640v320c0 106 -86 192 -192 192
-s-192 -86 -192 -192v-320h-640v752c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v624c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112c0 21 28 16 41 16v391c-19 9 -32 29 -32 50c0 30 25 55 55 55s55 -25 55 -55
-c0 -21 -13 -41 -32 -50v-17c27 6 55 10 83 10c41 0 80 -15 114 -15c31 0 66 15 84 15c9 0 16 -7 16 -16v-210c0 -24 -81 -28 -97 -28c-37 0 -72 15 -110 15c-30 0 -61 -5 -90 -12v-133c13 0 41 5 41 -16v-112h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-112h128v112
-c0 9 7 16 16 16h96c9 0 16 -7 16 -16v-624h128v112c0 9 7 16 16 16h96c9 0 16 -7 16 -16z" />
-    <glyph glyph-name="c" unicode="&#xf31c;" horiz-adv-x="1404" 
-d="M996 819c0 0 -23 211 -232 217s-317 -157 -317 -392s119 -423 323 -423s226 235 226 235l391 -24s22 -211 -141 -373s-364 -188 -504 -187s-334 -2 -522 190s-220 379 -220 563s36 427 259 611c152 125 306 172 460 172c643 0 685 -593 685 -593l-408 4v0z" />
-    <glyph glyph-name="commenting" unicode="&#xf27a;" horiz-adv-x="1792" 
-d="M640 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1024 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 640c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128z
-M1792 640c0 -354 -401 -640 -896 -640c-73 0 -144 6 -211 18c-114 -114 -263 -192 -435 -229c-27 -5 -56 -10 -86 -13c-16 -2 -31 9 -35 24c-4 16 8 26 20 37c63 59 138 106 164 317c-191 117 -313 291 -313 486c0 354 401 640 896 640s896 -286 896 -640z" />
-    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152" 
-d="M640 128c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1024 288v960c0 17 -15 32 -32 32h-832c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h832c17 0 32 15 32 32zM1152 1248v-1088c0 -88 -72 -160 -160 -160h-832c-88 0 -160 72 -160 160v1088
-c0 88 72 160 160 160h832c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="credit-card" unicode="&#xf09d;" horiz-adv-x="1920" 
-d="M1760 1408c88 0 160 -72 160 -160v-1216c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1600zM160 1280c-17 0 -32 -15 -32 -32v-224h1664v224c0 17 -15 32 -32 32h-1600zM1760 0c17 0 32 15 32 32v608h-1664v-608
-c0 -17 15 -32 32 -32h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408" 
-d="M1408 800v-192c0 -53 -43 -96 -96 -96h-1216c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h1216c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="unlock-alt" unicode="&#xf13e;" horiz-adv-x="1152" 
-d="M1056 768c53 0 96 -43 96 -96v-576c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v576c0 53 43 96 96 96h32v320c0 247 201 448 448 448s448 -201 448 -448c0 -35 -29 -64 -64 -64h-64c-35 0 -64 29 -64 64c0 141 -115 256 -256 256s-256 -115 -256 -256v-320h736z
-" />
-    <glyph glyph-name="ils" unicode="&#xf20b;" horiz-adv-x="1376" 
-d="M992 912v-496c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v496c0 150 -122 272 -272 272h-272v-1152c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v1344c0 18 14 32 32 32h464c274 0 496 -222 496 -496zM1376 1376v-880c0 -274 -222 -496 -496 -496h-464
-c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h160c18 0 32 -14 32 -32v-768h272c150 0 272 122 272 272v880c0 18 14 32 32 32h160c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="cog" unicode="&#xf013;" 
-d="M1024 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1536 749v-222c0 -15 -12 -33 -28 -36l-185 -28c-11 -32 -23 -62 -39 -91c34 -49 70 -93 107 -138c6 -7 10 -16 10 -25s-3 -16 -9 -23c-24 -32 -159 -179 -193 -179
-c-9 0 -18 4 -26 9l-138 108c-29 -15 -60 -28 -91 -38c-7 -61 -13 -126 -29 -186c-4 -16 -18 -28 -36 -28h-222c-18 0 -34 13 -36 30l-28 184c-31 10 -61 22 -90 37l-141 -107c-7 -6 -16 -9 -25 -9s-18 4 -25 11c-53 48 -123 110 -165 168c-5 7 -7 15 -7 23c0 9 3 16 8 23
-c34 46 71 90 105 137c-17 32 -31 65 -41 99l-183 27c-17 3 -29 19 -29 36v222c0 15 12 33 27 36l186 28c10 32 23 62 39 92c-34 48 -70 93 -107 138c-6 7 -10 15 -10 24s4 16 9 23c24 33 159 179 193 179c9 0 18 -4 26 -10l138 -107c29 15 60 28 91 38c7 61 13 126 29 186
-c4 16 18 28 36 28h222c18 0 34 -13 36 -30l28 -184c31 -10 61 -22 90 -37l142 107c6 6 15 9 24 9s18 -4 25 -10c53 -49 123 -111 165 -170c5 -6 7 -14 7 -22c0 -9 -3 -16 -8 -23c-34 -46 -71 -90 -105 -137c17 -32 31 -65 41 -98l183 -28c17 -3 29 -19 29 -36z" />
-    <glyph glyph-name="arrow-right" unicode="&#xf061;" horiz-adv-x="1472" 
-d="M1472 576c0 -34 -13 -67 -37 -91l-651 -651c-24 -23 -57 -37 -91 -37s-66 14 -90 37l-75 75c-24 24 -38 57 -38 91s14 67 38 91l293 293h-704c-72 0 -117 60 -117 128v128c0 68 45 128 117 128h704l-293 294c-24 23 -38 56 -38 90s14 67 38 90l75 75c24 24 56 38 90 38
-s67 -14 91 -38l651 -651c24 -23 37 -56 37 -90z" />
-    <glyph glyph-name="cc-paypal" unicode="&#xf1f4;" horiz-adv-x="2304" 
-d="M745 630c0 -49 -39 -86 -88 -86c-37 0 -64 21 -64 60c0 49 38 88 87 88c37 0 65 -23 65 -62zM1530 779c0 -60 -36 -72 -88 -72l-32 -1l17 107c1 7 6 11 13 11h18c34 0 72 -2 72 -45zM1881 630c0 -49 -39 -86 -87 -86c-37 0 -65 21 -65 60c0 49 38 88 87 88
-c37 0 65 -23 65 -62zM513 801c0 84 -65 112 -139 112h-160c-10 0 -20 -8 -21 -19l-65 -408c-1 -8 5 -16 13 -16h76c11 0 21 8 22 19l18 110c4 29 53 19 72 19c114 0 184 68 184 183zM822 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-23 34 -57 40 -95 40
-c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c36 0 81 16 106 44c-2 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM1269 752c0 7 -6 14 -13 14h-77c-7 0 -14 -4 -18 -10l-106 -156l-44 150c-3 9 -12 16 -22 16h-75c-7 0 -13 -7 -13 -14
-c0 -5 78 -231 85 -252c-11 -15 -82 -108 -82 -120c0 -7 6 -13 13 -13h77c7 0 14 4 18 10l255 368c2 2 2 4 2 7zM1649 801c0 84 -65 112 -139 112h-159c-11 0 -21 -8 -22 -19l-65 -408c-1 -8 5 -16 13 -16h82c8 0 14 6 16 13l18 116c4 29 53 19 72 19c114 0 184 68 184 183z
-M1958 489l41 261c1 8 -5 16 -13 16h-76c-15 0 -16 -22 -17 -33c-22 34 -56 40 -95 40c-98 0 -173 -86 -173 -181c0 -78 49 -129 127 -129c37 0 82 16 106 44c-1 -6 -4 -15 -4 -21c0 -9 4 -16 13 -16h69c11 0 20 8 22 19zM2176 898v1c0 8 -6 14 -13 14h-74
-c-6 0 -12 -5 -13 -11l-65 -416l-1 -2c0 -7 6 -14 14 -14h66c10 0 20 8 21 19zM392 764c-8 -51 -42 -57 -86 -57l-33 -1l17 107c1 7 7 11 13 11h19c45 0 79 -6 70 -60zM2304 1280v-1280c0 -70 -58 -128 -128 -128h-2048c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128
-h2048c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="birthday-cake" unicode="&#xf1fd;" horiz-adv-x="1792" 
-d="M1792 128v-384h-1792v384c98 0 150 44 191 79c34 30 57 49 108 49s73 -19 108 -49c41 -35 92 -79 191 -79c98 0 149 44 191 79c34 30 56 49 107 49s74 -19 108 -49c41 -35 93 -79 191 -79s150 44 191 79c34 30 57 49 108 49c50 0 73 -19 107 -49c41 -35 93 -79 191 -79z
-M1792 448v-192c-51 0 -73 19 -108 49c-41 35 -92 79 -190 79c-99 0 -150 -44 -191 -79c-35 -30 -57 -49 -108 -49s-74 19 -108 49c-41 35 -92 79 -191 79c-98 0 -149 -44 -191 -79c-34 -30 -56 -49 -107 -49s-74 19 -108 49c-41 35 -93 79 -191 79c-99 0 -150 -44 -191 -79
-c-34 -30 -57 -49 -108 -49v192c0 106 86 192 192 192h64v448h256v-448h256v448h256v-448h256v448h256v-448h64c106 0 192 -86 192 -192zM512 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1024 1312
-c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224zM1536 1312c0 -106 -57 -160 -128 -160s-128 57 -128 128c0 124 128 92 128 256c48 0 128 -118 128 -224z" />
-    <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792" 
-d="M1792 640c0 -354 -401 -640 -896 -640c-49 0 -98 3 -145 8c-131 -116 -287 -198 -460 -242c-36 -10 -75 -17 -114 -22c-22 -2 -43 14 -48 38v1c-5 25 12 40 27 58c63 71 135 131 182 298c-206 117 -338 298 -338 501c0 353 401 640 896 640s896 -286 896 -640z" />
-    <glyph glyph-name="bell" unicode="&#xf0f3;" horiz-adv-x="1664" 
-d="M848 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM182 128h1300c-179 202 -266 476 -266 832c0 129 -122 320 -384 320s-384 -191 -384 -320c0 -356 -87 -630 -266 -832zM1664 128
-c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-256 115 -256 256h-448c-70 0 -128 58 -128 128c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c265 -39 424 -249 424 -441
-c0 -483 172 -707 320 -832z" />
-    <glyph glyph-name="cc" unicode="&#xf20a;" horiz-adv-x="2048" 
-d="M785 528h207c-19 -211 -140 -339 -313 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-203c-7 85 -49 134 -117 134c-75 0 -120 -80 -120 -238c0 -115 20 -223 129 -223c69 0 101 60 109 139zM1497 528h206
-c-19 -211 -139 -339 -312 -339c-216 0 -347 166 -347 432c0 264 144 429 326 429c200 0 312 -124 329 -334h-204c-6 85 -49 134 -116 134c-75 0 -120 -80 -120 -238c0 -115 19 -223 128 -223c69 0 102 60 110 139zM1856 647c0 268 -14 384 -76 468c-13 17 -34 28 -51 40
-c-63 46 -356 63 -697 63s-648 -17 -710 -63c-18 -13 -40 -23 -53 -40c-62 -83 -75 -200 -75 -468c0 -269 14 -385 75 -468c14 -19 35 -27 53 -41c62 -46 369 -65 710 -65s634 18 697 65c17 13 39 21 51 41c63 82 76 199 76 468zM2048 1408v-1536h-2048v1536h2048z" />
-    <glyph glyph-name="get-pocket" unicode="&#xf265;" horiz-adv-x="1720" 
-d="M1565 1408c87 0 155 -70 155 -156v-519c0 -479 -383 -861 -859 -861c-478 0 -861 382 -861 861v519c0 85 71 156 156 156h1409zM861 344c30 0 60 12 82 33l404 388c23 22 37 53 37 85c0 65 -53 118 -118 118c-31 0 -60 -12 -82 -33l-323 -310l-323 310
-c-22 21 -51 33 -81 33c-65 0 -118 -53 -118 -118c0 -32 13 -63 36 -85l405 -388c21 -21 51 -33 81 -33z" />
-    <glyph glyph-name="bell-slash-o" unicode="&#xf1f7;" horiz-adv-x="2019" 
-d="M1026 -160c0 9 -7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176c9 0 16 7 16 16zM489 315l877 760c-50 105 -166 205 -356 205c-262 0 -384 -191 -384 -320c0 -256 -45 -470 -137 -645zM1842 128c0 -70 -58 -128 -128 -128
-h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255l149 129h757c-111 125 -186 277 -227 459l111 97c51 -298 182 -458 298 -556zM1928 1520l84 -96c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66
-c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240l418 363c13 11 34 10 45 -4z" />
-    <glyph glyph-name="header" unicode="&#xf1dc;" horiz-adv-x="1668" 
-d="M1620 -128c-88 0 -177 7 -266 7c-88 0 -176 -7 -264 -7c-34 0 -50 37 -50 66c0 89 100 51 152 85c33 21 33 105 33 140l-1 391c0 11 0 21 -1 31c-16 5 -34 4 -50 4h-675c-17 0 -35 1 -51 -4c-1 -10 -1 -20 -1 -31l-1 -371c0 -38 0 -142 37 -164c52 -32 170 13 170 -77
-c0 -30 -14 -70 -49 -70c-93 0 -186 7 -278 7c-85 0 -170 -7 -255 -7c-33 0 -48 38 -48 66c0 87 92 51 141 85c32 22 33 108 33 143l-1 57v813c0 48 7 202 -38 229c-50 31 -157 -17 -157 73c0 29 13 70 48 70c92 0 185 -7 277 -7c84 0 169 7 253 7c36 0 50 -40 50 -70
-c0 -86 -99 -44 -148 -75c-35 -21 -35 -124 -35 -160l1 -320c0 -11 0 -21 1 -32c13 -3 26 -3 39 -3h699c12 0 25 0 38 3c1 11 1 21 1 32l1 320c0 37 0 139 -35 160c-50 30 -150 -10 -150 75c0 30 14 70 50 70c88 0 176 -7 264 -7c86 0 172 7 258 7c36 0 50 -40 50 -70
-c0 -87 -103 -43 -153 -74c-34 -22 -35 -125 -35 -161l1 -943c0 -33 2 -120 34 -140c51 -32 159 9 159 -78c0 -29 -13 -70 -48 -70z" />
-    <glyph glyph-name="bluetooth-b" unicode="&#xf294;" horiz-adv-x="944" 
-d="M556 113l173 172l-173 172v-344zM556 823l173 172l-173 172v-344zM588 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
-    <glyph glyph-name="linux" unicode="&#xf17c;" horiz-adv-x="1523" 
-d="M657 1125c-20 -2 -13 -20 -24 -20c-10 -1 -8 22 24 20zM744 1111c-10 -3 -11 16 -29 11c29 13 39 -7 29 -11zM393 684c-9 3 -7 -15 -16 -29c-7 -13 -25 -23 -11 -25c5 -1 19 11 25 25c5 17 10 26 2 29zM1248 325c0 18 -39 35 -55 42c27 90 15 126 -3 211
-c-14 64 -73 151 -119 178c12 -10 34 -39 57 -83c40 -75 80 -186 54 -278c-10 -36 -34 -41 -50 -42c-70 -8 -29 84 -58 209c-33 140 -67 150 -75 161c-41 182 -86 164 -99 232c-11 61 53 111 -34 128c-27 5 -65 32 -80 34s-23 101 33 104c55 4 65 -62 55 -88
-c-16 -26 1 -36 28 -27c22 7 8 65 13 73c-14 84 -49 96 -85 103c-138 -11 -76 -163 -90 -149c-20 21 -78 2 -78 15c1 78 -25 123 -61 124c-40 1 -56 -55 -58 -87c-3 -30 17 -93 32 -88c10 3 27 23 9 22c-9 0 -23 22 -25 48c-1 26 9 52 43 51c39 -1 39 -79 35 -82
-c-13 -9 -29 -26 -31 -29c-13 -21 -38 -27 -48 -36c-17 -18 -21 -38 -8 -45c46 -26 31 -56 95 -58c42 -2 73 6 102 15c22 7 93 22 108 48c7 11 15 11 20 8c10 -5 12 -24 -13 -30c-35 -10 -70 -29 -102 -41c-31 -13 -41 -18 -70 -23c-66 -12 -115 24 -71 -19
-c15 -14 29 -23 67 -22c84 3 177 104 186 59c2 -10 -26 -22 -48 -33c-78 -38 -133 -114 -183 -88c-45 24 -90 135 -89 85c1 -77 -101 -145 -54 -233c-31 -8 -100 -155 -110 -231c-6 -44 4 -98 -7 -128c-15 -44 -83 42 -61 147c4 18 0 22 -5 13c-27 -49 -12 -118 10 -166
-c9 -21 32 -30 49 -48c35 -40 173 -142 197 -167c31 -29 22 -97 -42 -104c33 -62 65 -68 64 -169c38 20 23 64 7 92c-11 20 -25 29 -22 34c2 3 22 20 33 7c34 -38 98 -45 166 -36c69 8 143 32 177 87c16 26 27 35 34 30c8 -4 11 -22 10 -52c-1 -32 -14 -65 -23 -92
-c-9 -31 -12 -52 18 -53c8 56 24 111 28 167c5 64 -41 182 9 241c13 16 29 18 51 18c3 80 126 74 167 41zM620 1152c4 25 -8 43 -14 45c-12 3 -10 -15 -4 -13c4 0 9 -6 7 -15c-2 -12 -1 -20 8 -20c1 0 3 0 3 3zM1039 955c-4 19 -18 12 -34 22c-19 12 -23 32 -30 25
-c-21 -23 26 -71 46 -75c12 -2 21 14 18 28zM861 1168c1 24 -20 36 -25 35c-13 -1 -9 -7 -3 -9c8 -2 16 -16 18 -31c0 -2 10 2 10 5zM915 1401c1 5 -12 11 -21 18c-8 8 -16 15 -24 15c-20 -2 -10 -23 -13 -33c-4 -11 -19 -20 -9 -28c9 -7 15 11 34 18c5 2 28 -1 33 10z
-M1480 60c123 -76 -46 -139 -119 -176c-57 -29 -133 -93 -161 -120c-21 -20 -108 -30 -157 -5c-57 29 -27 75 -115 78c-44 1 -87 1 -130 1c-38 -1 -76 -3 -115 -4c-132 -3 -145 -88 -230 -85c-58 2 -131 48 -257 74c-88 18 -173 23 -191 62s22 83 25 121c3 51 -38 120 -8 146
-c26 23 81 6 117 26c38 22 54 39 54 86c14 -48 -1 -87 -32 -106c-19 -12 -54 -18 -83 -15c-23 2 -37 -1 -43 -10c-9 -11 -6 -31 5 -57s24 -43 22 -75c-1 -32 -37 -70 -31 -97c2 -10 12 -19 37 -26c40 -11 113 -22 184 -39c79 -20 161 -56 212 -49c152 21 65 184 41 223
-c-129 202 -214 334 -282 282c-17 -14 -18 34 -17 53c3 66 36 90 56 141c38 97 67 208 125 265c43 56 111 147 124 195c-11 104 -14 214 -16 310c-2 103 14 193 130 256c28 15 65 21 104 21c69 1 146 -19 195 -55c78 -58 127 -181 121 -269c-4 -69 8 -140 30 -214
-c26 -87 67 -148 133 -218c79 -84 141 -249 159 -354c16 -98 -6 -159 -27 -162c-32 -5 -52 -106 -152 -102c-64 3 -70 41 -88 74c-29 51 -58 35 -69 -19c-6 -27 -2 -67 7 -97c18 -63 12 -122 1 -195c-21 -138 97 -164 176 -98c78 65 95 75 193 109c149 51 99 96 19 123
-c-72 24 -75 145 -49 168c6 -130 74 -149 102 -167z" />
-    <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664" 
-d="M512 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 160v192c0 18 -14 32 -32 32h-320
-c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM512 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192
-c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 160v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1024 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32z
-M1536 544v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1536 928v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM1664 1248v-1088c0 -88 -72 -160 -160 -160
-h-1344c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1344c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="handshake-o" unicode="&#xf2b5;" horiz-adv-x="2304" 
-d="M192 384c84 0 84 128 0 128s-84 -128 0 -128zM1665 442c-79 103 -156 208 -246 302l-125 -140c-110 -125 -307 -122 -414 6c-76 92 -76 224 2 315l177 206c-62 32 -137 21 -204 21c-59 0 -116 -24 -158 -66l-158 -158h-155v-544c44 0 84 6 119 -28l297 -292
-c61 -59 140 -111 227 -111c45 0 93 15 125 47c75 -26 162 16 185 93c48 -4 92 11 127 44c23 21 53 63 50 96c9 -9 31 -10 43 -10c119 0 181 125 108 219zM1824 384h96v512h-93l-157 180c-42 48 -105 76 -169 76h-167c-56 0 -110 -25 -146 -67l-209 -243
-c-37 -44 -37 -106 -1 -150c57 -68 162 -69 221 -3l193 218c46 51 130 3 109 -62c38 -44 79 -87 116 -131c50 -62 98 -127 147 -190c31 -40 54 -88 60 -140zM2112 384c84 0 84 128 0 128s-84 -128 0 -128zM2304 960v-640c0 -35 -29 -64 -64 -64h-434
-c-36 -87 -115 -145 -207 -158c-43 -63 -109 -111 -183 -127c-55 -70 -144 -112 -233 -106c-165 -93 -351 -12 -474 109l-287 282h-358c-35 0 -64 29 -64 64v672c0 35 29 64 64 64h421c116 116 196 224 370 224h117c65 0 128 -20 181 -56c53 36 116 56 181 56h167
-c190 0 269 -124 384 -256h355c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1664" 
-d="M462 142c0 -70 -57 -128 -128 -128c-70 0 -128 58 -128 128c0 71 58 128 128 128c71 0 128 -57 128 -128zM960 -64c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM256 640c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
-s128 -57 128 -128zM1458 142c0 -70 -58 -128 -128 -128c-71 0 -128 58 -128 128c0 71 57 128 128 128c70 0 128 -57 128 -128zM494 1138c0 -88 -72 -160 -160 -160s-160 72 -160 160s72 160 160 160s160 -72 160 -160zM1664 640c0 -71 -57 -128 -128 -128s-128 57 -128 128
-s57 128 128 128s128 -57 128 -128zM1024 1344c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1554 1138c0 -124 -101 -224 -224 -224c-124 0 -224 100 -224 224c0 123 100 224 224 224c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="snapchat" unicode="&#xf2ab;" 
-d="M1279 388c0 14 -8 24 -22 27c-91 20 -160 83 -198 167c-3 8 -7 16 -7 25c0 45 125 36 125 100c0 27 -33 44 -57 44c-23 0 -41 -16 -63 -16c-4 0 -8 1 -12 2c2 38 5 76 5 114c0 35 -2 83 -17 114c-48 104 -141 165 -255 165c-125 0 -220 -46 -275 -165
-c-15 -31 -17 -79 -17 -114c0 -38 3 -76 5 -114c-4 -2 -9 -2 -14 -2c-23 0 -41 15 -62 15c-25 0 -56 -16 -56 -44c0 -62 125 -54 125 -99c0 -9 -4 -17 -7 -25c-39 -84 -106 -147 -198 -167c-14 -3 -22 -13 -22 -27c0 -46 106 -63 137 -68c9 -24 5 -66 41 -66c25 0 50 9 77 9
-c105 0 133 -95 255 -95c127 0 151 95 257 95c27 0 52 -8 78 -8c35 0 31 42 40 65c31 5 137 22 137 68zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024" 
-d="M512 384c0 25 -8 49 -20 69c-13 20 -66 88 -87 155c-3 11 -13 16 -21 16s-18 -5 -21 -16c-21 -67 -74 -135 -87 -155c-12 -20 -20 -44 -20 -69c0 -71 57 -128 128 -128s128 57 128 128zM1024 512c0 -283 -229 -512 -512 -512s-512 229 -512 512c0 101 31 195 81 275
-c51 80 265 351 346 621c13 43 53 64 85 64s73 -21 85 -64c81 -270 295 -541 346 -621s81 -174 81 -275z" />
-    <glyph glyph-name="connectdevelop" unicode="&#xf20e;" horiz-adv-x="2048" 
-d="M2048 641c0 -28 -20 -51 -46 -56l-205 -356c2 -6 3 -12 3 -18c0 -27 -19 -50 -45 -55l-193 -337c2 -5 3 -10 3 -16c0 -31 -25 -57 -57 -57c-16 0 -31 7 -41 18h-400c-10 -12 -26 -20 -43 -20s-33 8 -43 20h-399c-10 -12 -25 -20 -43 -20c-31 0 -57 25 -57 57
-c0 7 2 14 4 20l-193 335c-26 5 -45 28 -45 55c0 7 1 12 3 18l-206 356c-26 6 -45 29 -45 56c0 28 20 51 47 56l199 344c0 2 -1 4 -1 6c0 23 14 42 34 51l209 363c-2 5 -4 12 -4 18c0 32 26 57 57 57c18 0 33 -8 44 -21h396c10 13 25 21 43 21s33 -8 43 -21h398
-c11 13 26 21 44 21c31 0 57 -25 57 -57c0 -6 -2 -12 -4 -18l207 -358c30 -1 55 -26 55 -56c0 -10 -3 -19 -7 -27l187 -324c25 -5 44 -28 44 -55zM1063 -158h389l-342 354h-143l-342 -354h360c10 9 24 16 39 16s29 -7 39 -16zM112 654c1 -4 1 -8 1 -13s0 -10 -2 -15l208 -360
-c5 -1 10 -4 15 -6l188 199v347l-187 194c-9 -6 -19 -9 -29 -10zM986 1438h-388l190 -200l554 200h-280c-10 -10 -23 -16 -38 -16s-28 6 -38 16zM1689 226c1 4 3 8 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427
-l333 -343c4 2 8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6c9 -3 16 -7 22 -13zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177c2 -4 4 -8 5 -12zM358 1051c0 -1 1 -3 1 -4c0 -11 -3 -21 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314
-l-223 236zM556 1425l-4 -8v-264l205 74l-191 201c-3 -1 -6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018c-5 8 -8 18 -8 29v2
-l-216 376c-5 1 -9 3 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82zM1729 266l207 361c-1 5 -2 9 -2 14c0 6 2 11 3 16l-171 296l-129 -612l77 -82c5 3 10 5 15 7z" />
-    <glyph glyph-name="chrome" unicode="&#xf268;" horiz-adv-x="1792" 
-d="M893 1536c153 1 309 -38 451 -120c157 -91 276 -222 352 -372l-742 39c-210 12 -410 -106 -479 -304l-276 424c172 214 430 332 694 333zM146 1131l337 -663c95 -187 296 -301 504 -262l-230 -451c-429 66 -757 437 -757 885c0 181 54 350 146 491zM1732 962
-c157 -404 0 -874 -388 -1098c-157 -91 -330 -128 -498 -119l405 623c115 177 113 408 -24 568zM896 942c167 0 302 -135 302 -302s-135 -302 -302 -302s-302 135 -302 302s135 302 302 302z" />
-    <glyph glyph-name="trademark" unicode="&#xf25c;" horiz-adv-x="1972" 
-d="M857 992v-117c0 -17 -15 -31 -32 -31h-298v-812c0 -18 -14 -32 -31 -32h-135c-18 0 -32 14 -32 32v812h-297c-18 0 -32 14 -32 31v117c0 18 14 32 32 32h793c17 0 32 -14 32 -32zM1895 995l77 -961c1 -9 -2 -17 -8 -24c-6 -6 -14 -10 -23 -10h-134c-16 0 -30 13 -31 29
-l-46 588l-189 -425c-5 -12 -16 -19 -29 -19h-120c-12 0 -23 7 -29 19l-188 427l-45 -590c-1 -16 -15 -29 -31 -29h-135c-9 0 -17 4 -23 10c-6 7 -9 15 -9 24l78 961c1 16 15 29 31 29h142c13 0 24 -8 29 -19l220 -520c7 -16 14 -34 20 -51c7 17 13 35 20 51l221 520
-c5 11 16 19 29 19h141c17 0 31 -13 32 -29z" />
-    <glyph glyph-name="align-right" unicode="&#xf038;" horiz-adv-x="1792" 
-d="M1792 192v-128c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1664c35 0 64 -29 64 -64zM1792 576v-128c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1280c35 0 64 -29 64 -64zM1792 960v-128
-c0 -35 -29 -64 -64 -64h-1536c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1536c35 0 64 -29 64 -64zM1792 1344v-128c0 -35 -29 -64 -64 -64h-1152c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h1152c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="1792" 
-d="M1070 358l306 564h-654l-306 -564h654zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="long-arrow-down" unicode="&#xf175;" horiz-adv-x="767" 
-d="M765 237c5 -12 3 -25 -5 -35l-350 -384c-6 -6 -14 -10 -23 -10s-18 4 -24 10l-355 384c-8 10 -10 23 -5 35c5 11 16 19 29 19h224v1248c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1248h224c13 0 24 -7 29 -19z" />
-    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1600" 
-d="M576 640v384h-256v-256c0 -71 57 -128 128 -128h128zM1600 192v-192h-1152v192l128 192h-128c-212 0 -384 172 -384 384v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
-    <glyph glyph-name="th-list" unicode="&#xf00b;" horiz-adv-x="1792" 
-d="M512 288v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM512 800v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 288v-192c0 -53 -43 -96 -96 -96h-960
-c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96zM512 1312v-192c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h320c53 0 96 -43 96 -96zM1792 800v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96
-h960c53 0 96 -43 96 -96zM1792 1312v-192c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h960c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="eraser" unicode="&#xf12d;" horiz-adv-x="1920" 
-d="M896 128l336 384h-768l-336 -384h768zM1909 1205c20 -46 12 -99 -21 -137l-896 -1024c-24 -28 -59 -44 -96 -44h-768c-50 0 -96 29 -117 75c-20 46 -12 99 21 137l896 1024c24 28 59 44 96 44h768c50 0 96 -29 117 -75z" />
-    <glyph glyph-name="codepen" unicode="&#xf1cb;" horiz-adv-x="1792" 
-d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
-c0 -25 -13 -50 -34 -64l-819 -546c-13 -8 -28 -13 -43 -13s-30 5 -43 13l-819 546c-21 14 -34 39 -34 64v546c0 25 13 50 34 64l819 546c13 8 28 13 43 13s30 -5 43 -13l819 -546c21 -14 34 -39 34 -64z" />
-    <glyph glyph-name="slideshare" unicode="&#xf1e7;" horiz-adv-x="1758" 
-d="M856 796c0 -111 -97 -202 -216 -202s-216 91 -216 202c0 112 97 202 216 202s216 -90 216 -202zM1358 796c0 -111 -96 -202 -216 -202c-119 0 -216 91 -216 202c0 112 97 202 216 202c120 0 216 -90 216 -202zM1583 616v667c0 115 -37 160 -143 160h-1112
-c-111 0 -142 -38 -142 -160v-673c237 -124 440 -102 551 -98c47 1 77 -8 95 -27c3 -3 6 -6 10 -9c21 -20 41 -36 61 -51c4 55 35 90 118 87c113 -5 321 -27 562 104zM1746 621c-64 -79 -186 -176 -372 -252c197 -671 -481 -778 -470 -434c0 -6 -1 185 -1 327
-c-15 3 -30 7 -48 11c0 -143 -1 -344 -1 -338c11 -344 -667 -237 -470 434c-186 76 -308 173 -372 252c-32 48 3 99 56 62c7 -5 15 -10 22 -15v694c0 96 72 174 161 174h1257c89 0 161 -78 161 -174v-694l21 15c53 37 88 -14 56 -62z" />
-    <glyph glyph-name="square-o" unicode="&#xf096;" horiz-adv-x="1408" 
-d="M1120 1280h-832c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v832c0 88 -72 160 -160 160zM1408 1120v-832c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="hourglass-start" unicode="&#xf251;" 
-d="M1408 1408c0 -370 -177 -638 -373 -768c196 -130 373 -398 373 -768h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96c0 370 177 638 373 768c-196 130 -373 398 -373 768h-96c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h1472c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96zM1280 1408h-1024c0 -44 3 -87 9 -128h1006c6 41 9 84 9 128zM1280 -128c0 359 -198 624 -397 704h-230c-199 -80 -397 -345 -397 -704h1024z" />
-    <glyph glyph-name="superpowers" unicode="&#xf2dd;" horiz-adv-x="1792" 
-d="M1473 607c18 320 -227 585 -544 604c-315 19 -594 -221 -612 -538c-18 -320 227 -585 545 -604c315 -19 594 220 611 538zM1792 1536l-349 -348c159 -155 245 -371 231 -593c-22 -372 -308 -669 -675 -719l-999 -132l347 347c-159 155 -244 371 -231 593
-c23 373 308 670 676 720c333 44 667 88 1000 132z" />
-    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408" 
-d="M1408 -160v-64c0 -17 -15 -32 -32 -32h-1344c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h1344c17 0 32 -15 32 -32zM1152 896c0 -383 -448 -417 -448 -672c0 -70 35 -163 67 -224l-4 1l1 -1c-276 127 -512 302 -512 640c0 383 448 417 448 672c0 70 -35 163 -66 224l3 -1
-l-1 1c276 -127 512 -302 512 -640z" />
-    <glyph glyph-name="sellsy" unicode="&#xf213;" horiz-adv-x="2048" 
-d="M1500 165v733c0 28 -23 51 -50 51h-93c-27 0 -50 -23 -50 -51v-733c0 -27 23 -50 50 -50h93c27 0 50 23 50 50zM1216 165v531c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-531c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM924 165v429c0 27 -23 50 -50 50h-101
-c-27 0 -50 -23 -50 -50v-429c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM632 165v362c0 27 -23 50 -50 50h-101c-27 0 -50 -23 -50 -50v-362c0 -27 23 -50 50 -50h101c27 0 50 23 50 50zM2048 311c0 -222 -181 -402 -402 -402h-1244c-221 0 -402 180 -402 402
-c0 155 91 297 231 363c-7 24 -10 49 -10 73c0 151 123 274 274 274c66 0 130 -24 180 -67c60 244 280 417 532 417c302 0 548 -246 548 -548c0 -41 -4 -82 -14 -122c180 -44 307 -206 307 -390z" />
-    <glyph glyph-name="fast-forward" unicode="&#xf050;" horiz-adv-x="1792" 
-d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678
-c-3 -7 -7 -13 -13 -19l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
-    <glyph glyph-name="bell-slash" unicode="&#xf1f6;" horiz-adv-x="2019" 
-d="M1544 684c51 -298 182 -458 298 -556c0 -70 -58 -128 -128 -128h-448c0 -141 -115 -256 -256 -256s-255 114 -256 255zM1010 -176c9 0 16 7 16 16s-7 16 -16 16c-79 0 -144 65 -144 144c0 9 -7 16 -16 16s-16 -7 -16 -16c0 -97 79 -176 176 -176zM2012 1424
-c11 -14 10 -34 -3 -46l-1872 -1622c-13 -11 -34 -10 -45 4l-84 96c-11 14 -10 34 3 45l186 161c-12 20 -19 42 -19 66c148 125 320 349 320 832c0 192 159 402 424 441c-5 12 -8 25 -8 39c0 53 43 96 96 96s96 -43 96 -96c0 -14 -3 -27 -8 -39c172 -25 299 -122 367 -240
-l418 363c13 11 34 10 45 -4z" />
-    <glyph glyph-name="cubes" unicode="&#xf1b3;" horiz-adv-x="2176" 
-d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416
-c0 -48 -27 -93 -71 -114l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-3 1 -5 2 -7 4c-2 -2 -4 -3 -7 -4l-448 -224c-18 -10 -37 -14 -57 -14s-39 4 -57 14l-448 224c-44 21 -71 66 -71 114v416c0 51 31 97 78 118l434 186v400c0 51 31 97 78 118l448 192
-c16 7 33 10 50 10s34 -3 50 -10l448 -192c47 -21 78 -67 78 -118v-400l434 -186c48 -21 78 -67 78 -118z" />
-    <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898" 
-d="M898 1066v-102c0 -18 -14 -32 -32 -32h-168c-31 -192 -178 -317 -405 -344c149 -159 308 -351 459 -536c8 -9 10 -23 4 -34c-5 -11 -16 -18 -29 -18h-195c-10 0 -19 4 -25 12c-161 193 -309 370 -498 571c-6 6 -9 14 -9 22v127c0 17 14 32 32 32h112
-c176 0 286 59 315 168h-427c-18 0 -32 14 -32 32v102c0 18 14 32 32 32h413c-38 75 -128 113 -268 113h-145c-18 0 -32 15 -32 32v133c0 18 14 32 32 32h832c18 0 32 -14 32 -32v-102c0 -18 -14 -32 -32 -32h-233c32 -41 53 -89 64 -144h171c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="hashtag" unicode="&#xf292;" horiz-adv-x="1728" 
-d="M959 512l64 256h-254l-64 -256h254zM1727 1016l-56 -224c-4 -14 -16 -24 -31 -24h-327l-64 -256h311c10 0 19 -5 25 -12c6 -8 9 -18 6 -28l-56 -224c-3 -14 -16 -24 -31 -24h-327l-81 -328c-4 -14 -17 -24 -31 -24h-224c-10 0 -20 5 -26 12c-6 8 -8 18 -6 28l78 312h-254
-l-81 -328c-4 -14 -17 -24 -31 -24h-225c-9 0 -19 5 -25 12c-6 8 -8 18 -6 28l78 312h-311c-10 0 -19 5 -25 12c-6 8 -8 18 -6 28l56 224c4 14 16 24 31 24h327l64 256h-311c-10 0 -19 5 -25 12c-6 8 -9 18 -6 28l56 224c3 14 16 24 31 24h327l81 328c4 14 17 24 32 24h224
-c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h254l81 328c4 14 17 24 32 24h224c9 0 19 -5 25 -12c6 -8 8 -18 6 -28l-78 -312h311c10 0 19 -5 25 -12c6 -8 8 -18 6 -28z" />
-    <glyph glyph-name="file-text-o" unicode="&#xf0f6;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM384 736c0 18 14 32 32 32h704c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64zM1120 512c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704zM1120 256c18 0 32 -14 32 -32
-v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704z" />
-    <glyph glyph-name="nextcloud" unicode="&#xf306;" horiz-adv-x="1792" 
-d="M896 1049c225 0 409 -184 409 -409s-184 -409 -409 -409s-409 184 -409 409s184 409 409 409zM896 891c-139 0 -251 -112 -251 -251s112 -251 251 -251s251 112 251 251s-112 251 -251 251zM265 905c146 0 265 -119 265 -265s-119 -265 -265 -265s-265 119 -265 265
-s119 265 265 265zM265 748c-60 0 -107 -48 -107 -108s47 -108 107 -108s108 48 108 108s-48 108 -108 108zM1527 905c146 0 265 -119 265 -265s-119 -265 -265 -265s-265 119 -265 265s119 265 265 265zM1527 748c-60 0 -108 -48 -108 -108s48 -108 108 -108s107 48 107 108
-s-47 108 -107 108z" />
-    <glyph glyph-name="hand-o-left" unicode="&#xf0a5;" horiz-adv-x="1792" 
-d="M1376 128h32v640h-32c-106 0 -177 90 -241 163c-41 46 -79 92 -112 145c-14 22 -26 45 -38 68s-62 136 -89 136c-85 0 -160 -32 -160 -128c0 -128 96 -193 96 -256h-576c-67 0 -128 -60 -128 -128c0 -69 59 -128 128 -128h331c-21 -24 -35 -71 -35 -103
-c0 -47 19 -87 53 -119c-12 -21 -18 -45 -18 -69c0 -46 23 -103 65 -126c-3 -18 -4 -37 -4 -56c0 -118 73 -167 184 -167c199 0 369 128 544 128zM1664 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 768v-640c0 -71 -57 -128 -128 -128h-288
-c-63 0 -162 -37 -223 -59c-102 -37 -207 -69 -317 -69c-184 0 -318 104 -317 295l1 5c-40 50 -61 114 -61 178c0 14 1 29 3 43c-21 37 -34 77 -37 119h-169c-140 0 -256 117 -256 257c0 138 118 255 256 255h374c-15 41 -22 84 -22 128c0 169 129 256 288 256
-c134 0 177 -171 235 -264c30 -47 64 -88 100 -129c29 -33 97 -119 145 -119h288c71 0 128 -57 128 -128z" />
-    <glyph glyph-name="vimeo" unicode="&#xf27d;" horiz-adv-x="1628" 
-d="M1627 1018c-7 -158 -118 -375 -332 -651c-222 -287 -408 -431 -562 -431c-95 0 -175 88 -240 263c-44 160 -88 321 -132 482c-48 175 -101 262 -157 262c-12 0 -54 -25 -127 -76l-77 98c80 71 159 143 238 212c106 94 187 141 241 146c127 12 204 -74 234 -259
-c31 -200 54 -325 66 -373c37 -166 76 -249 120 -249c34 0 85 53 154 161c68 108 104 190 109 246c9 93 -27 139 -109 139c-39 0 -79 -9 -121 -26c80 262 233 389 459 382c167 -5 246 -114 236 -326z" />
-    <glyph glyph-name="mastodon-alt" unicode="&#xf2e2;" 
-d="M766 1408h5c211 -2 413 -25 531 -79c0 0 234 -105 234 -462c0 0 3 -263 -33 -446c-23 -116 -202 -243 -408 -268c-108 -13 -214 -25 -327 -20c-185 8 -330 45 -330 45c0 -18 1 -36 3 -52c24 -182 181 -193 329 -198c150 -5 284 37 284 37l6 -135s-105 -57 -292 -67
-c-103 -6 -230 3 -379 42c-323 85 -380 430 -388 779c-3 104 -1 201 -1 283c0 357 235 462 235 462c118 54 320 77 531 79v0zM350 839c-64 0 -115 -52 -115 -116s51 -115 115 -115s116 51 116 115s-52 116 -116 116v0zM768 839c-64 0 -116 -52 -116 -116s52 -115 116 -115
-s116 51 116 115s-52 116 -116 116v0zM1186 839c-64 0 -116 -52 -116 -116s52 -115 116 -115s115 51 115 115s-51 116 -115 116v0z" />
-    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792" 
-d="M1760 640c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1728zM483 704c-19 24 -36 51 -51 80c-32 65 -48 128 -48 188c0 122 45 224 134 309s220 127 393 127c38 0 93 -7 167 -19c44 -8 103 -24 177 -48
-c7 -26 14 -66 21 -118c9 -79 14 -140 14 -183c0 -14 -2 -29 -5 -45l-12 -3l-84 6l-14 2c-34 101 -69 169 -103 205c-59 61 -130 91 -210 91c-76 0 -137 -20 -182 -59s-67 -88 -67 -146c0 -49 22 -95 66 -140s137 -88 279 -129c48 -14 105 -36 173 -66c36 -17 68 -34 95 -52
-h-743zM990 448h411c5 -28 7 -59 7 -92c0 -72 -13 -143 -41 -212c-15 -37 -38 -71 -71 -104c-24 -23 -60 -50 -109 -81c-50 -30 -100 -53 -153 -66c-53 -14 -120 -21 -203 -21c-55 0 -121 2 -195 23l-140 40c-39 11 -62 20 -72 28c-4 4 -8 11 -8 22v13c0 8 2 60 -2 156
-c-2 50 2 85 2 105v44l102 2c37 -85 54 -136 65 -154c24 -39 51 -70 80 -94s64 -43 105 -57c40 -15 85 -22 132 -22c42 0 89 9 139 27c51 17 92 46 122 86c31 40 47 83 47 129c0 56 -27 108 -81 157c-22 19 -68 43 -137 71z" />
-    <glyph glyph-name="ravelry" unicode="&#xf2d9;" horiz-adv-x="2080" 
-d="M1095 -197c-4 1 -7 2 -11 4c0 0 -329 193 -440 505c-37 6 -115 24 -175 37c87 -283 329 -499 626 -546zM454 409l168 -28c-57 171 -64 366 -64 366c-67 -65 -103 -154 -121 -224c3 -39 8 -77 17 -114zM564 1018c-31 -46 -56 -96 -77 -148c33 35 60 58 74 68
-c-2 30 3 80 3 80zM2001 584c0 436 -352 790 -784 790c-200 0 -382 -76 -521 -201c-21 -41 -35 -93 -45 -160c213 181 593 136 593 136c95 -4 84 -88 83 -114c-346 29 -516 -70 -684 -213c0 0 33 -320 109 -450c438 -20 771 218 771 218c42 30 79 33 87 -19
-c6 -42 9 -99 -39 -121c-146 -68 -307 -111 -467 -134c-104 -15 -162 -19 -317 -16c148 -344 518 -438 518 -438c116 -19 204 -4 263 15c256 130 433 398 433 707zM2075 621c-7 -68 -18 -147 -40 -212c-90 -267 -215 -441 -500 -600c-26 -18 -54 -35 -82 -44
-c-51 -18 -106 -22 -163 -16c-24 -2 -48 -3 -73 -3c-381 0 -703 260 -800 615c-3 0 -6 1 -9 1c-23 -180 110 -423 110 -423s8 -12 54 -82c-255 135 -262 533 -262 533c-61 23 -273 95 -310 154c0 0 166 -91 309 -109c-1 1 2 32 2 32c9 122 51 217 94 290
-c28 137 90 261 176 365c15 62 39 136 81 214c18 34 35 56 81 77c304 142 604 178 912 18c295 -154 455 -476 420 -810z" />
-    <glyph glyph-name="code-fork" unicode="&#xf126;" horiz-adv-x="1024" 
-d="M288 64c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM288 1216c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM928 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1024 1088c0 -71 -39 -133 -96 -166
-c-3 -361 -259 -441 -429 -495c-159 -50 -211 -74 -211 -171v-26c57 -33 96 -95 96 -166c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 71 39 133 96 166v820c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192c0 -71 -39 -133 -96 -166v-497
-c51 25 105 42 154 57c186 59 292 103 294 312c-57 33 -96 95 -96 166c0 106 86 192 192 192s192 -86 192 -192z" />
-    <glyph glyph-name="hand-o-right" unicode="&#xf0a4;" horiz-adv-x="1792" 
-d="M256 192c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1664 768c0 68 -61 128 -128 128h-576c0 63 96 128 96 256c0 96 -75 128 -160 128c-28 0 -79 -116 -90 -139c-12 -22 -24 -44 -37 -65c-33 -53 -71 -99 -112 -145c-64 -73 -135 -163 -241 -163
-h-32v-640h32c175 0 346 -128 540 -128c112 0 189 47 189 167c0 19 -2 38 -5 56c42 23 65 80 65 126c0 24 -6 48 -18 69c34 32 53 72 53 119c0 32 -14 79 -35 103h331c69 0 128 59 128 128zM1792 769c0 -140 -116 -257 -256 -257h-169c-3 -42 -16 -82 -37 -119
-c2 -14 3 -29 3 -43c0 -64 -21 -128 -60 -178c2 -189 -127 -300 -312 -300c-112 0 -218 31 -322 69c-61 22 -160 59 -223 59h-288c-71 0 -128 57 -128 128v640c0 71 57 128 128 128h288c48 0 116 86 145 119c36 41 70 82 100 129c58 93 101 264 235 264
-c159 0 288 -87 288 -256c0 -44 -7 -87 -22 -128h374c138 0 256 -117 256 -255z" />
-    <glyph glyph-name="object-group" unicode="&#xf247;" horiz-adv-x="2048" 
-d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
-h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
-    <glyph glyph-name="wikidata" unicode="&#xf31a;" horiz-adv-x="2048" 
-d="M0 1264h76v-1264h-76v1264zM152 1264h227v-1264h-227v1264zM455 1264h228v-1264h-228v1264zM759 1264h75v-1264h-75v1264zM910 1264h76v-1264h-76v1264zM1820 1264h76v-1264h-76v1264zM1972 1264h76v-1264h-76v1264zM1062 1264h227v-1264h-227v1264zM1365 1264h76v-1264
-h-76v1264zM1517 1264h228v-1264h-228v1264z" />
-    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792" 
-d="M960 1280c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1792 352v-352c0 -13 -8 -25 -20 -30c-4 -1 -8 -2 -12 -2c-8 0 -16 3 -23 9l-93 93c-157 -189 -439 -310 -748 -310s-591 121 -748 310l-93 -93c-6 -6 -15 -9 -23 -9c-4 0 -8 1 -12 2
-c-12 5 -20 17 -20 30v352c0 18 14 32 32 32h352c13 0 25 -8 30 -20s2 -25 -7 -35l-100 -100c90 -121 263 -209 461 -236v647h-192c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h192v163c-76 44 -128 126 -128 221c0 141 115 256 256 256s256 -115 256 -256
-c0 -95 -52 -177 -128 -221v-163h192c35 0 64 -29 64 -64v-128c0 -35 -29 -64 -64 -64h-192v-647c198 27 371 115 461 236l-100 100c-9 10 -12 23 -7 35s17 20 30 20h352c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="meh-o" unicode="&#xf11a;" 
-d="M1152 448c0 -35 -29 -64 -64 -64h-640c-35 0 -64 29 -64 64s29 64 64 64h640c35 0 64 -29 64 -64zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
-s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="file-image-o" unicode="&#xf1c5;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512c-106 0 -192 86 -192 192s86 192 192 192s192 -86 192 -192s-86 -192 -192 -192z" />
-    <glyph glyph-name="liberapay" unicode="&#xf2e9;" horiz-adv-x="1191" 
-d="M468 1404v0l-222 -918c-4 -19 -6 -37 -7 -53s3 -30 9 -42s18 -23 33 -30s36 -12 64 -14l-48 -196c-75 0 -134 9 -177 29s-74 47 -93 81s-28 73 -27 117s6 91 18 141l203 847zM849 1025v0c60 0 111 -9 154 -27s78 -44 106 -75s49 -68 62 -110s20 -86 20 -134h-1
-c0 -78 -12 -149 -38 -213s-61 -120 -106 -167s-99 -83 -162 -109s-133 -39 -207 -39c-36 0 -72 3 -108 9l-72 -288h-236l265 1103c42 13 91 24 146 34s113 16 177 16zM819 825v0c-34 0 -66 -3 -96 -9l-111 -464c18 -4 40 -7 67 -7c41 0 79 8 113 23s63 37 87 65
-s43 61 56 100s20 81 20 128c0 46 -11 84 -31 116s-55 48 -105 48z" />
-    <glyph glyph-name="nodejs" unicode="&#xf308;" 
-d="M768 -225c-24 0 -46 6 -67 17l-211 126c-32 17 -17 24 -7 27c43 14 51 18 96 43c5 3 11 1 16 -2l162 -97c6 -3 14 -3 19 0l634 367c6 3 10 10 10 18v733c0 8 -4 14 -10 17l-634 366c-6 3 -14 3 -19 0l-635 -366c-6 -3 -9 -11 -9 -17v-733c0 -6 3 -15 9 -18l174 -100
-c94 -48 152 8 152 64v723c0 10 8 19 19 19h82c10 0 19 -8 19 -19v-723c0 -126 -69 -199 -188 -199c-37 0 -65 0 -146 40l-167 95c-41 24 -67 68 -67 116v733c0 48 26 92 67 116l634 368c40 22 94 22 134 0l634 -368c41 -24 67 -68 67 -116v-733c0 -48 -26 -92 -67 -116
-l-634 -367c-21 -10 -45 -14 -67 -14zM964 279c-278 0 -336 127 -336 235c0 10 8 19 19 19h83c10 0 17 -6 17 -16c13 -84 49 -125 218 -125c134 0 191 29 191 101c0 41 -16 72 -224 93c-173 17 -282 56 -282 194c0 129 109 205 290 205c204 0 303 -70 316 -223
-c0 -5 -2 -9 -5 -14c-3 -3 -7 -7 -12 -7h-83c-8 0 -16 7 -18 15c-19 87 -68 116 -198 116c-146 0 -164 -51 -164 -89c0 -46 21 -61 218 -86c196 -25 288 -62 288 -199c-2 -140 -116 -219 -318 -219z" />
-    <glyph glyph-name="calculator" unicode="&#xf1ec;" horiz-adv-x="1664" 
-d="M384 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 0c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 0
-c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 384c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM384 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1152 384
-c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM768 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 0v384c0 70 -58 128 -128 128s-128 -58 -128 -128v-384c0 -70 58 -128 128 -128s128 58 128 128z
-M1152 768c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1536 1088v256c0 35 -29 64 -64 64h-1280c-35 0 -64 -29 -64 -64v-256c0 -35 29 -64 64 -64h1280c35 0 64 29 64 64zM1536 768c0 71 -57 128 -128 128s-128 -57 -128 -128
-s57 -128 128 -128s128 57 128 128zM1664 1408v-1536c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1536c0 70 58 128 128 128h1408c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1921" 
-d="M1918 1016c15 -41 -32 -137 -150 -294c-194 -258 -215 -234 -55 -383c154 -143 186 -212 191 -221c0 0 64 -112 -71 -113l-256 -4c-55 -11 -128 39 -128 39c-96 66 -186 237 -256 215c0 0 -72 -23 -70 -177c1 -33 -15 -51 -15 -51s-18 -19 -53 -22h-115
-c-253 -16 -476 217 -476 217s-244 252 -458 755c-14 33 1 49 1 49s15 19 57 19l274 2c26 -4 44 -18 44 -18s16 -11 24 -32c45 -112 103 -214 103 -214c100 -206 168 -241 207 -220c0 0 51 31 40 280c-4 90 -29 131 -29 131c-23 31 -66 40 -85 43c-15 2 10 38 43 54
-c49 24 136 25 239 24c81 -1 104 -6 135 -13c95 -23 63 -111 63 -323c0 -68 -13 -163 36 -194c21 -14 73 -2 201 216c0 0 60 104 107 225c8 22 25 31 25 31s16 9 38 6l288 2c87 11 101 -29 101 -29z" />
-    <glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="1078" 
-d="M539 629c-250 0 -454 203 -454 453c0 251 204 454 454 454s454 -203 454 -454c0 -250 -204 -453 -454 -453zM539 1306c-123 0 -223 -100 -223 -224c0 -123 100 -223 223 -223s223 100 223 223c0 124 -100 224 -223 224zM1062 574c44 -90 -6 -133 -120 -207
-c-96 -61 -228 -85 -315 -94l73 -72l267 -267c40 -41 40 -107 0 -147l-12 -13c-41 -40 -107 -40 -148 0c-67 68 -165 166 -267 268l-267 -268c-41 -40 -107 -40 -147 0l-12 13c-41 40 -41 106 0 147c68 68 165 166 267 267l72 72c-86 9 -220 32 -317 94
-c-114 74 -164 117 -120 207c26 51 97 94 191 20c0 0 127 -101 332 -101s332 101 332 101c94 74 165 31 191 -20z" />
-    <glyph glyph-name="linkedin" unicode="&#xf0e1;" 
-d="M349 911v-991h-330v991h330zM370 1217c1 -95 -71 -171 -186 -171h-2c-111 0 -182 76 -182 171c0 97 74 171 186 171c113 0 183 -74 184 -171zM1536 488v-568h-329v530c0 133 -48 224 -167 224c-91 0 -145 -61 -169 -120c-8 -22 -11 -51 -11 -81v-553h-329
-c4 898 0 991 0 991h329v-144h-2c43 68 121 167 299 167c217 0 379 -142 379 -446z" />
-    <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1026" 
-d="M603 0h-172c-18 0 -32 14 -32 32v330h-288c-18 0 -32 14 -32 32v103c0 18 14 32 32 32h288v85h-288c-18 0 -32 14 -32 32v104c0 17 14 32 32 32h214l-321 578c-5 10 -5 22 0 32c6 10 17 16 28 16h194c12 0 23 -7 29 -18l215 -425c24 -47 40 -87 56 -125
-c17 43 39 85 58 129l191 420c5 12 17 19 29 19h191c11 0 21 -6 27 -16c6 -9 6 -21 1 -31l-313 -579h215c18 0 32 -15 32 -32v-104c0 -18 -14 -32 -32 -32h-290v-85h290c18 0 32 -14 32 -32v-103c0 -18 -14 -32 -32 -32h-290v-330c0 -18 -15 -32 -32 -32z" />
-    <glyph glyph-name="skype" unicode="&#xf17e;" 
-d="M1173 473c0 174 -169 234 -311 266l-104 24c-76 18 -133 31 -133 89c0 53 56 77 144 77c157 0 160 -115 257 -115c65 0 104 51 104 109c0 115 -191 190 -380 190c-173 0 -374 -75 -374 -278c0 -168 112 -228 258 -263l146 -36c89 -22 144 -32 144 -96
-c0 -51 -57 -90 -145 -90c-185 0 -195 154 -302 154c-70 0 -101 -50 -101 -105c0 -123 188 -223 413 -223c188 0 384 94 384 297zM1536 256c0 -212 -172 -384 -384 -384c-88 0 -169 30 -234 80c-48 -10 -99 -16 -150 -16c-389 0 -704 315 -704 704c0 51 6 102 16 150
-c-50 65 -80 146 -80 234c0 212 172 384 384 384c88 0 169 -30 234 -80c48 10 99 16 150 16c389 0 704 -315 704 -704c0 -51 -6 -102 -16 -150c50 -65 80 -146 80 -234z" />
-    <glyph glyph-name="envelope-square" unicode="&#xf199;" 
-d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM1280 352v436c-19 -21 -40 -40 -64 -55c-94 -62 -191 -120 -284 -184c-47 -33 -105 -69 -164 -69s-117 36 -164 69
-c-93 64 -191 121 -284 185c-23 15 -41 37 -64 54v-436c0 -53 43 -96 96 -96h832c53 0 96 43 96 96zM1280 925c0 54 -40 99 -96 99h-832c-53 0 -96 -43 -96 -96c0 -54 56 -113 98 -141c88 -59 179 -114 267 -172c38 -25 101 -71 147 -71s109 46 147 71c89 58 178 115 267 174
-c39 26 98 86 98 136z" />
-    <glyph glyph-name="question-circle-o" unicode="&#xf29c;" 
-d="M880 336v-160c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v160c0 18 14 32 32 32h160c18 0 32 -14 32 -32zM1136 832c0 -142 -99 -198 -172 -239c-52 -30 -84 -49 -84 -81v-32c0 -18 -14 -32 -32 -32h-160c-18 0 -32 14 -32 32v68c0 123 88 162 159 194
-c60 28 97 47 97 92c0 58 -73 101 -139 101c-35 0 -72 -11 -95 -27c-22 -15 -43 -37 -80 -83c-6 -8 -15 -12 -25 -12c-7 0 -14 2 -19 6l-108 82c-13 10 -16 29 -7 43c82 129 197 192 349 192c164 0 348 -130 348 -304zM768 1280c-353 0 -640 -287 -640 -640
-s287 -640 640 -640s640 287 640 640s-287 640 -640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="ship" unicode="&#xf21a;" horiz-adv-x="2010" 
-d="M1792 -19c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83
-l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83c25 25 65 25 90 0l83 -83l83 83
-c25 25 65 25 90 0l83 -83zM218 19c-25 -25 -65 -25 -90 0l-128 128l90 90l83 -82l83 82c25 25 65 25 90 0l83 -82l64 64v293l-210 314c-23 35 -7 83 33 97l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58c40 -14 56 -62 33 -97l-210 -314v-293l19 18
-c25 25 65 25 90 0l83 -82l83 82c25 25 65 25 90 0l128 -128l-90 -90l-83 83l-83 -83c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83l-83 -83
-c-25 -25 -65 -25 -90 0l-83 83l-83 -83c-25 -25 -65 -25 -90 0l-83 83zM621 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
-    <glyph glyph-name="gimp" unicode="&#xf31b;" horiz-adv-x="1792" 
-d="M1760 1453c243 -1827 -975 -1550 -1432 -1186c28 4 55 13 78 30c50 38 74 102 73 173s-25 150 -73 220c-6 9 -13 17 -20 25l26 588s159 -366 481 -358c674 18 794 417 867 508zM612 937c-97 0 -177 -85 -177 -193s80 -194 177 -194c16 0 31 4 46 8
-c-67 3 -122 62 -122 133v0c0 73 57 133 127 133v0c56 0 112 -47 124 -104c1 8 2 16 2 24c0 108 -80 193 -177 193zM1031 928v0c-119 0 -216 -102 -216 -228s97 -227 216 -227c45 0 87 14 122 39c-17 -8 -47 -15 -66 -15c-90 0 -162 77 -162 171v0c0 94 72 170 162 170
-c75 0 147 -63 160 -141v3c0 126 -97 228 -216 228zM158 822v0c79 -2 166 -58 227 -146c46 -67 70 -141 70 -206s-21 -121 -64 -153s-100 -37 -158 -16s-118 67 -164 134s-69 141 -69 206s21 121 64 153c26 20 58 29 94 28zM1042 804c-42 0 -76 -36 -76 -80v0
-c0 -44 34 -80 76 -80s76 36 76 80v0c0 44 -34 80 -76 80zM615 787c-28 0 -50 -23 -50 -52v0v0c0 -29 22 -53 50 -53s50 24 50 53v0v0c0 29 -22 52 -50 52zM130 770c-47 0 -85 -47 -85 -106v0c0 -59 38 -107 85 -107s84 48 84 107v0c0 59 -37 106 -84 106zM1202 468
-c0 0 44 -38 69 -72c-96 -78 -261 -141 -583 -73c163 -60 300 -88 406 -81c-64 -22 -146 -39 -250 -44c233 -23 407 22 468 117c16 -18 32 -49 47 -89c10 69 36 101 -4 155s-153 87 -153 87z" />
-    <glyph glyph-name="dashcube" unicode="&#xf210;" horiz-adv-x="1408" 
-d="M0 856c0 173 138 322 314 322h742l352 358v-1470c0 -174 -138 -322 -314 -322h-780c-176 0 -314 148 -314 322v790zM1232 102l-176 180v425c0 61 -49 112 -110 112h-484c-61 0 -110 -51 -110 -112v-492c0 -61 49 -113 110 -113h770z" />
-    <glyph glyph-name="optin-monster" unicode="&#xf23c;" horiz-adv-x="2132" 
-d="M396 -139c-10 -21 -39 -50 -64 -60c-35 -12 -78 11 -80 35c-2 31 75 87 108 93c32 6 47 -42 36 -68zM1737 -139c-11 26 4 74 35 68c33 -6 111 -62 108 -93c-1 -24 -45 -47 -79 -35c-26 10 -55 39 -64 60zM1785 -30c-21 43 15 121 70 114c58 -6 183 -94 183 -160
-c0 -43 -58 -72 -119 -55c-45 12 -116 65 -134 101zM346 -30c-18 -36 -88 -89 -133 -101c-61 -17 -119 12 -119 55c0 66 125 154 183 160c55 7 91 -71 69 -114zM1076 1094c106 0 192 -80 192 -179s-86 -179 -192 -179s-191 80 -191 179c0 15 2 28 5 42c16 -25 46 -43 80 -43
-c51 0 92 38 92 85c0 37 -26 69 -61 80c23 10 49 15 76 15h-1zM1380 1312c-132 145 -301 177 -466 87c93 208 452 180 466 -87zM2130 73c5 -7 -1 -25 -11 -42c4 -13 7 -26 7 -40c3 -117 -164 -237 -272 -241c-64 -3 -128 31 -158 87c-420 -15 -840 -18 -1259 0
-c-31 -56 -95 -89 -159 -87c-107 4 -274 124 -272 241c1 14 3 27 7 40c-10 17 -16 35 -11 42c4 6 17 6 31 1c12 19 26 35 41 51c-4 17 -4 32 2 38c7 6 23 4 39 -4c17 12 37 24 59 34c0 18 5 32 13 37c12 6 33 2 51 -16c21 3 42 3 61 -2c13 -3 26 -10 38 -19v73
-c-6 0 -11 0 -18 2c-65 12 -136 57 -152 132c-6 25 -6 52 0 81c12 50 55 79 93 95c3 22 30 52 55 59c28 7 46 -17 52 -38h13c18 -2 47 -6 60 -23c2 -2 4 -5 5 -7c20 2 41 5 61 7c-9 7 -19 13 -30 17c-19 33 -51 41 -91 43c0 3 0 6 1 10c-73 2 -163 21 -203 66
-c-46 51 -54 138 -45 204c8 65 35 140 90 179c31 21 80 3 84 -36c2 -17 5 -75 21 -84c18 -9 47 -13 76 -12c30 29 62 54 98 74c-55 5 -107 -6 -162 -14l47 46c46 44 107 82 163 111c87 44 185 77 282 86c-69 29 -148 44 -221 61c283 60 646 82 904 -139
-c67 -57 120 -134 158 -222c41 -5 93 -6 121 9h1c16 9 19 66 21 84c4 38 53 57 84 35c55 -39 82 -114 91 -178c8 -66 1 -153 -46 -204c-40 -45 -127 -65 -199 -67v-10c-41 -1 -75 -9 -95 -43c-11 -4 -21 -10 -31 -17c21 -2 42 -5 62 -7c1 3 3 6 5 8c14 16 43 21 60 23h13
-c6 20 25 44 52 38s52 -37 55 -59c40 -16 82 -45 93 -95c7 -30 6 -56 1 -81c-17 -75 -88 -121 -153 -132c-5 -1 -12 -2 -17 -2c0 -25 0 -49 -1 -73c12 9 24 16 38 19c19 5 40 5 61 2c18 18 40 22 51 16c8 -5 14 -19 14 -37c21 -10 42 -22 59 -34c16 8 31 10 38 4
-c6 -6 7 -21 2 -38c15 -16 30 -33 41 -51c14 5 26 5 31 -1zM1855 1025c0 -23 -5 -43 -9 -54c64 -25 97 -82 112 -132c4 39 -10 146 -51 189c-27 27 -52 19 -52 -3zM1777 925c48 -58 63 -154 47 -233c40 8 76 23 97 45c7 8 14 18 18 28c-4 79 -38 158 -110 181
-c-12 -12 -34 -18 -52 -21zM1740 921c-14 0 -30 0 -44 1c28 -76 46 -158 53 -239c13 0 28 1 43 3c22 90 -1 191 -52 235zM176 839c15 50 48 107 112 132c-4 11 -9 31 -9 54c0 22 -26 30 -52 3c-42 -43 -55 -150 -51 -189zM212 737c21 -23 57 -37 97 -45c-16 79 -1 175 47 233
-c-18 3 -40 9 -52 21c-72 -23 -105 -102 -110 -181c5 -10 11 -20 18 -28zM389 683c9 82 34 162 73 235c-19 -4 -37 -11 -55 -18l-45 -19v1c-27 -52 -37 -127 -20 -196c17 -2 32 -3 47 -3zM1352 644c13 -66 18 -132 28 -198c4 -23 11 -28 33 -17c59 30 84 145 85 211
-c-48 3 -97 3 -146 4zM1070 1285c-155 0 -282 -126 -282 -281c0 -156 127 -282 282 -282s282 126 282 282c0 155 -127 281 -282 281zM1298 646c-70 1 -141 1 -211 0v1c-1 -19 1 -141 16 -152c41 -20 146 -17 189 -4c20 6 9 137 6 155zM1030 447c17 9 9 168 5 199v1
-c-72 -1 -143 -1 -214 -3c-7 -34 -17 -181 7 -191c48 -21 154 -19 202 -6zM636 636c-20 -73 1 -167 82 -203c20 -9 32 -9 36 16c7 32 9 136 18 193c-45 -1 -91 -3 -136 -6zM509 510c2 -18 -14 -29 -34 -36c162 -174 343 -317 577 -394c250 71 428 222 604 396
-c-18 7 -32 19 -30 34c1 4 2 6 3 9v1v-1c-33 3 -66 7 -98 10c-35 -122 -133 -196 -173 -117c-10 19 -13 43 -17 62c-14 -31 -49 -30 -91 -33c-49 -4 -117 -5 -163 11c-11 -48 -41 -48 -99 -53c-52 -5 -180 -15 -203 40c-4 -106 -130 -37 -167 26c-12 21 -20 42 -26 65
-c-29 -3 -58 -6 -87 -10c2 -3 3 -7 4 -10zM425 -118c2 9 3 19 3 30c-21 86 -69 184 -124 200c-83 25 -255 -87 -245 -202c47 -72 148 -132 219 -135c66 -3 133 41 147 107zM428 53c12 -33 24 -77 27 -119c124 72 256 132 392 174c-143 76 -252 177 -360 285
-c-8 -5 -19 -9 -29 -13c-1 -3 -1 -6 -2 -9c17 -10 29 -22 22 -37c-8 -15 -32 -28 -56 -34c-8 -10 -19 -18 -29 -24h-1c-1 -50 -1 -100 1 -150c14 -25 26 -51 35 -73zM497 -113c382 -15 764 -13 1145 0c-136 79 -274 153 -428 196c-51 -23 -103 -42 -156 -57
-c-8 -3 -8 -3 -16 0c-44 14 -86 30 -129 49c-149 -43 -286 -108 -416 -188h-1v-1c1 0 1 0 1 1zM1681 -67c3 42 16 87 28 120c8 22 19 47 33 71l-1 -1c2 51 3 102 3 153c-11 6 -21 15 -30 25c-24 5 -48 19 -56 33c-7 15 5 28 22 38c-1 2 -2 6 -2 9c-11 3 -20 7 -28 12
-c-117 -109 -242 -210 -383 -284c144 -43 281 -104 414 -176zM2073 -90c11 115 -161 227 -245 202c-54 -16 -103 -114 -124 -200c0 -11 1 -21 3 -30c14 -66 81 -110 147 -107c71 3 172 63 219 135z" />
-    <glyph glyph-name="paw" unicode="&#xf1b0;" horiz-adv-x="1664" 
-d="M780 1064c0 -112 -58 -245 -187 -245c-162 0 -260 204 -260 344c0 112 58 245 187 245c163 0 260 -204 260 -344zM438 581c0 -97 -51 -198 -161 -198c-160 0 -277 196 -277 341c0 97 52 199 161 199c160 0 277 -197 277 -342zM832 608c245 0 576 -353 576 -589
-c0 -127 -104 -147 -206 -147c-134 0 -242 90 -370 90c-134 0 -248 -89 -393 -89c-97 0 -183 33 -183 146c0 237 331 589 576 589zM1071 819c-129 0 -187 133 -187 245c0 140 97 344 260 344c129 0 187 -133 187 -245c0 -140 -98 -344 -260 -344zM1503 923
-c109 0 161 -102 161 -199c0 -145 -117 -341 -277 -341c-110 0 -161 101 -161 198c0 145 117 342 277 342z" />
-    <glyph glyph-name="venus-double" unicode="&#xf226;" horiz-adv-x="1792" 
-d="M1790 1007c25 -317 -207 -586 -510 -619v-260h224c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-512v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h224v260c-303 33 -535 302 -510 619c22 275 243 500 517 526c140 14 271 -23 377 -94c106 71 237 108 377 94c274 -26 495 -251 517 -526zM896 647c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM576 512
-c79 0 153 21 218 57c-96 103 -154 240 -154 391s59 288 154 391c-65 36 -139 57 -218 57c-247 0 -448 -201 -448 -448s201 -448 448 -448zM1152 128v260c-94 10 -181 44 -256 94c-75 -50 -162 -84 -256 -94v-260h512zM1216 512c247 0 448 201 448 448s-201 448 -448 448
-c-79 0 -153 -21 -218 -57c95 -103 154 -240 154 -391s-58 -288 -154 -391c65 -36 139 -57 218 -57z" />
-    <glyph glyph-name="calendar-times-o" unicode="&#xf273;" horiz-adv-x="1664" 
-d="M1111 151l-46 -46c-12 -12 -32 -12 -45 0l-188 189l-188 -189c-13 -12 -33 -12 -45 0l-46 46c-12 12 -12 32 0 45l189 188l-189 188c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l188 -188l188 188c13 12 33 12 45 0l46 -46c12 -12 12 -32 0 -45l-188 -188l188 -188
-c12 -13 12 -33 0 -45zM128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64
-c18 0 32 14 32 32zM1664 1152v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z
-" />
-    <glyph glyph-name="address-book-o" unicode="&#xf2ba;" horiz-adv-x="1664" 
-d="M1028 892c0 -143 -117 -259 -260 -259s-260 116 -260 259c0 144 117 260 260 260s260 -116 260 -260zM980 672c191 0 221 -227 221 -374c0 -84 -53 -170 -145 -170h-576c-92 0 -145 86 -145 170c0 141 30 374 216 374h5c66 -39 133 -87 212 -87s146 48 212 87zM1664 928
-c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-128h96c17 0 32 -15 32 -32v-192c0 -17 -15 -32 -32 -32h-96v-224c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v1472c0 88 72 160 160 160h1216c88 0 160 -72 160 -160
-v-224h96c17 0 32 -15 32 -32v-192zM1408 -96v1472c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-1472c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32z" />
-    <glyph glyph-name="check" unicode="&#xf00c;" horiz-adv-x="1550" 
-d="M1550 970c0 -25 -10 -50 -28 -68l-724 -724l-136 -136c-18 -18 -43 -28 -68 -28s-50 10 -68 28l-136 136l-362 362c-18 18 -28 43 -28 68s10 50 28 68l136 136c18 18 43 28 68 28s50 -10 68 -28l294 -295l656 657c18 18 43 28 68 28s50 -10 68 -28l136 -136
-c18 -18 28 -43 28 -68z" />
-    <glyph glyph-name="meetup" unicode="&#xf2e0;" horiz-adv-x="1847" 
-d="M1297 302c-11 72 -143 16 -151 95c-11 112 153 354 140 448c-12 84 -68 102 -117 103c-47 1 -59 -7 -75 -16c-10 -6 -23 -17 -41 1c-22 21 -39 41 -68 45c-43 7 -62 -7 -93 -34c-12 -10 -42 -45 -70 -32c-12 6 -54 27 -84 40c-57 25 -140 -16 -170 -70
-c-45 -80 -133 -396 -146 -438c-30 -93 38 -170 129 -165c39 2 64 16 89 61c14 26 146 377 156 394c7 12 31 28 51 18c20 -11 24 -33 21 -53c-4 -34 -98 -248 -101 -272c-12 -80 94 -93 135 -14c13 25 160 324 173 344c15 22 26 29 41 28c11 0 29 -3 25 -38
-c-5 -33 -123 -253 -136 -307c-16 -72 23 -145 87 -177c40 -20 219 -55 205 39zM346 86c4 -20 -8 -39 -28 -43c-19 -4 -38 8 -42 28c-4 19 8 39 27 43s39 -8 43 -28zM916 -177c16 -23 10 -54 -12 -70c-23 -16 -54 -10 -70 13c-15 23 -9 54 13 70c23 16 54 10 69 -13zM140 635
-c-24 -36 -72 -45 -107 -20c-35 24 -44 73 -20 108c24 36 72 45 107 21c35 -25 44 -73 20 -109zM1430 -42c25 -37 16 -88 -21 -114c-37 -25 -87 -16 -112 21s-16 88 20 114c37 26 87 16 113 -21zM1542 562c92 -151 53 -350 -92 -452c-61 -43 -130 -62 -199 -60
-c-42 -165 -243 -226 -368 -114c-4 -3 -9 -6 -13 -10c-137 -95 -323 -61 -418 78c-34 50 -51 107 -53 164c-229 38 -315 329 -144 489c-99 164 2 376 187 402c88 232 377 342 573 190c236 78 477 -103 458 -354c144 -44 185 -234 69 -333zM418 1222c18 -27 12 -64 -15 -83
-c-26 -18 -63 -12 -81 15s-12 64 15 83c26 18 63 12 81 -15zM577 1503c5 -22 -9 -44 -31 -49s-44 9 -49 32c-4 22 10 44 32 49s44 -9 48 -32zM1763 555c6 -27 -11 -53 -37 -58c-26 -6 -52 11 -57 37c-6 27 11 53 37 59c26 5 52 -12 57 -38zM1099 1448c21 -36 10 -84 -27 -106
-c-36 -22 -83 -10 -104 26c-22 37 -10 85 26 107s83 10 105 -27zM1845 792c5 -20 -8 -39 -27 -44c-20 -4 -39 9 -43 28c-4 20 8 40 28 44c19 4 38 -8 42 -28zM1654 1033c20 -30 13 -71 -16 -92c-30 -20 -71 -13 -91 17s-13 71 17 92c29 21 70 13 90 -17z" />
-    <glyph glyph-name="sliders" unicode="&#xf1de;" 
-d="M352 128v-128h-352v128h352zM704 256c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280c35 0 64 -29 64 -64v-256
-c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1216 768c35 0 64 -29 64 -64v-256c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
-    <glyph glyph-name="file-pdf-o" unicode="&#xf1c1;" 
-d="M1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416
-h-768v-1536h1280zM894 465c25 -20 53 -38 84 -56c42 5 81 7 117 7c67 0 152 -8 177 -49c7 -10 13 -28 2 -52c-1 -1 -2 -3 -3 -4v-1c-3 -18 -18 -38 -71 -38c-64 0 -161 29 -245 73c-139 -15 -285 -46 -392 -83c-103 -176 -182 -262 -242 -262c-10 0 -19 2 -28 7l-24 12
-c-3 1 -4 3 -6 5c-5 5 -9 16 -6 36c10 46 64 123 188 188c8 5 18 2 23 -6c1 -1 2 -3 2 -4c31 51 67 116 107 197c45 90 80 178 104 262c-32 109 -42 221 -24 287c7 25 22 40 42 40h22c15 0 27 -5 35 -15c12 -14 15 -36 9 -68c-1 -3 -2 -6 -4 -8c1 -3 1 -5 1 -8v-30
-c-1 -63 -2 -123 -14 -192c35 -105 87 -190 146 -238zM318 54c30 14 73 57 137 158c-75 -58 -122 -124 -137 -158zM716 974c-10 -28 -10 -76 -2 -132c3 16 5 31 7 44c2 17 5 31 7 43c1 3 2 5 4 8c-1 1 -1 3 -2 5c-1 18 -7 29 -13 36c0 -2 -1 -3 -1 -4zM592 313
-c88 35 186 63 284 81c-10 8 -20 15 -29 23c-49 43 -93 103 -127 176c-19 -61 -47 -126 -83 -197c-15 -28 -30 -56 -45 -83zM1238 329c-5 5 -31 24 -140 24c49 -18 94 -28 124 -28c9 0 14 0 18 1c0 1 -1 2 -2 3z" />
-    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408" 
-d="M493 1053c22 0 39 18 39 39s-17 39 -39 39c-21 0 -38 -18 -38 -39s17 -39 38 -39zM915 1053c21 0 38 18 38 39s-17 39 -38 39c-22 0 -39 -18 -39 -39s17 -39 39 -39zM103 869c56 0 102 -46 102 -102v-430c0 -57 -45 -103 -102 -103s-103 46 -103 103v430
-c0 56 46 102 103 102zM1163 850v-666c0 -61 -49 -110 -109 -110h-75v-227c0 -57 -46 -103 -103 -103s-103 46 -103 103v227h-138v-227c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103l-1 227h-74c-61 0 -110 49 -110 110v666h918zM931 1255c140 -72 235 -210 235 -369
-h-925c0 159 95 297 236 369l-71 131c-4 7 -2 16 5 20c7 3 16 1 20 -6l72 -132c61 27 129 42 201 42s140 -15 201 -42l72 132c4 7 13 9 20 6c7 -4 9 -13 5 -20zM1408 767v-430c0 -57 -46 -103 -103 -103c-56 0 -102 46 -102 103v430c0 57 46 102 102 102
-c57 0 103 -45 103 -102z" />
-    <glyph glyph-name="hubzilla" unicode="&#xf2eb;" horiz-adv-x="1587" 
-d="M1349 1363c86 -43 165 -125 207 -213c16 -40 34 -78 30 -170c-3 -83 -8 -115 -34 -170c-68 -146 -203 -243 -356 -253l-83 -6l-29 -115c-24 -96 -27 -129 -27 -129c28 -29 91 -47 117 -115c36 -69 32 -168 -14 -225c-75 -93 -187 -121 -286 -70c-90 47 -136 164 -108 266
-c7 26 -2 34 -109 104l-116 77l-43 -35c-203 -162 -499 -19 -498 242c0 168 133 299 304 298c86 0 138 -20 202 -78l47 -42l104 53l105 51l-11 37c-16 55 -12 176 7 238c21 74 87 166 150 212c128 94 302 111 441 43v0zM580 413l233 -160s71 60 167 68l60 254
-s-185 59 -237 189l-217 -102s52 -128 -6 -248v-1z" />
-    <glyph glyph-name="stack-exchange" unicode="&#xf18d;" horiz-adv-x="1238" 
-d="M1238 283v-66c0 -113 -88 -204 -196 -204h-57l-260 -269v269h-529c-108 0 -196 91 -196 204v66h1238zM1238 609v-255h-1238v255h1238zM1238 937v-255h-1238v255h1238zM1238 1077v-67h-1238v67c0 112 88 203 196 203h846c108 0 196 -91 196 -203z" />
-    <glyph glyph-name="twitch" unicode="&#xf1e8;" horiz-adv-x="1592" 
-d="M796 1102v-434h-145v434h145zM1194 1102v-434h-145v434h145zM1194 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1592 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
-    <glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="576" 
-d="M576 640c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19c-35 0 -64 29 -64 64v896c0 35 29 64 64 64c17 0 33 -7 45 -19l448 -448c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="tree" unicode="&#xf1bb;" horiz-adv-x="1472" 
-d="M1472 64c0 -35 -29 -64 -64 -64h-462c3 -64 11 -131 11 -196c0 -33 -27 -60 -61 -60h-320c-34 0 -61 27 -61 60c0 65 8 132 11 196h-462c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-229c-35 0 -64 29 -64 64c0 17 7 33 19 45l402 403h-197c-35 0 -64 29 -64 64
-c0 17 7 33 19 45l384 384c12 12 28 19 45 19s33 -7 45 -19l384 -384c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-197l402 -403c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-229l402 -403c12 -12 19 -28 19 -45z" />
-    <glyph glyph-name="friendica" unicode="&#xf2e6;" horiz-adv-x="1520" 
-d="M0 1128c0 152 123 276 274 276h973c151 0 273 -124 273 -276v-980c0 -152 -122 -276 -273 -276h-973c-151 0 -274 124 -274 276v980zM1247 1343h-244v-368h-486v-310l485 3l1 -367h-486v-368h730c118 0 212 95 212 215v980c0 120 -94 215 -212 215z" />
-    <glyph glyph-name="gratipay" unicode="&#xf184;" 
-d="M773 234l350 473c27 37 59 156 -43 223c-86 56 -168 13 -211 -37c-16 -18 -44 -40 -96 -40s-79 22 -95 40c-43 50 -125 93 -212 37c-101 -67 -69 -186 -42 -223zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="map-marker" unicode="&#xf041;" horiz-adv-x="1024" 
-d="M768 896c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1024 896c0 -61 -7 -124 -33 -179l-364 -774c-21 -44 -67 -71 -115 -71s-94 27 -114 71l-365 774c-26 55 -33 118 -33 179c0 283 229 512 512 512s512 -229 512 -512z" />
-    <glyph glyph-name="globe-e" unicode="&#xf304;" 
-d="M768 1404c204 0 399 -81 543 -225s225 -339 225 -543s-81 -399 -225 -543s-339 -225 -543 -225s-399 81 -543 225s-225 339 -225 543s81 399 225 543s339 225 543 225zM863 1165h-1h-6c-78 -1 -136 -19 -204 -29s-157 -10 -205 -29s-58 -39 -87 -58s-72 -30 -87 -58
-s0 -58 0 -87s-28 -73 0 -88s58 39 87 58s68 70 88 59s6 -8 0 -29s-54 -44 -56 -87s110 -78 73 -135c-37 -56 -202 50 -250 18s-19 -58 -29 -87s-40 -57 -29 -88s55 -37 87 -58s87 -59 88 -62s21 -106 29 -145c6 -34 3 -78 4 -120c44 -36 123 -82 176 -102
-c21 41 37 107 53 139c24 48 77 133 87 174s0 39 0 58s8 32 0 58s-40 58 -59 87s-37 69 -58 88s-49 19 -58 29s-4 9 -4 14s-5 8 5 15s36 9 58 0s39 -39 58 -58s27 -55 58 -58s58 39 87 58c29 20 74 35 107 -22c8 -16 43 -35 68 -35s22 42 30 58s24 37 48 41s28 -14 44 -30
-s30 -69 53 -69s22 43 30 59c15 34 6 65 57 116c19 19 50 29 57 57s-21 62 -29 86s-28 63 -28 88c0 21 27 25 63 44c-24 30 -67 73 -97 97c-22 1 -41 2 -55 4c-69 8 -176 29 -253 29zM1251 411c-32 1 -70 -43 -105 -60c-39 -19 -100 -32 -116 -59s0 -39 0 -58s-14 -44 0 -58
-s38 0 58 0s37 9 59 0c12 -5 23 -17 33 -29c40 34 96 98 125 142c-5 11 -10 21 -14 32c-10 29 5 74 -29 88c-4 2 -7 2 -11 2z" />
-    <glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="2303" 
-d="M1032 576c-35 1 -68 21 -84 55c-22 45 -66 73 -116 73c-71 0 -128 -57 -128 -128c0 -34 12 -67 36 -89l10 -8c22 -20 51 -31 82 -31c50 0 94 28 116 73c16 34 49 54 84 55zM1600 704c0 34 -12 67 -36 89l-10 8c-22 20 -51 31 -82 31c-50 0 -94 -28 -116 -73
-c-16 -34 -49 -54 -84 -55c35 -1 68 -21 84 -55c22 -45 66 -73 116 -73c71 0 128 57 128 128zM1174 925c-23 -47 -81 -67 -128 -44c-42 21 -87 31 -134 31c-35 0 -68 -6 -99 -17c6 0 13 1 19 1c123 0 236 -72 289 -183c23 -48 2 -105 -46 -128c-12 -6 -25 -9 -39 -9
-c14 0 27 -3 39 -9c48 -23 69 -80 46 -128c-53 -111 -166 -183 -289 -183h-6c-15 2 -29 3 -44 4l-290 27l-239 -120c-10 -5 -19 -7 -29 -7c-23 0 -46 13 -57 35l-160 320c-15 31 -4 68 25 85l209 119l148 267c23 206 125 395 287 528c41 34 102 28 135 -13
-c34 -41 28 -101 -13 -135c-45 -38 -85 -81 -117 -128c78 53 168 89 267 101c53 7 101 -30 107 -83c7 -53 -30 -101 -83 -107c-58 -7 -112 -27 -159 -55c32 7 65 10 99 10c76 0 150 -17 218 -50c48 -24 68 -81 44 -129zM2137 1085l160 -320c15 -31 4 -68 -25 -85l-209 -119
-l-148 -267c-23 -206 -125 -395 -287 -528c-18 -15 -40 -22 -61 -22c-28 0 -55 12 -74 35c-34 41 -28 101 13 135c45 38 85 81 117 128c-78 -53 -168 -89 -267 -101c-4 -1 -8 -1 -12 -1c-48 0 -89 36 -95 84c-7 53 30 101 83 107c58 7 112 27 159 55c-32 -7 -65 -10 -99 -10
-c-76 0 -150 17 -218 50c-48 24 -68 81 -44 129c23 47 81 67 128 44c42 -21 87 -31 134 -31c35 0 68 6 99 17c-6 0 -13 -1 -19 -1c-123 0 -236 72 -289 183c-23 48 -2 105 46 128c12 6 25 9 39 9c-14 0 -27 3 -39 9c-48 23 -69 80 -46 128c53 111 166 183 289 183h7
-c14 -2 28 -3 42 -4l291 -27l239 120c10 5 19 7 29 7c23 0 46 -13 57 -35z" />
-    <glyph glyph-name="binoculars" unicode="&#xf1e5;" horiz-adv-x="1792" 
-d="M704 1216v-768c0 -35 -29 -64 -64 -64v-576c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v512l249 873c4 14 17 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v576c-35 0 -64 29 -64 64v768h424
-c14 0 27 -9 31 -23zM736 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32zM1408 1504v-224h-352v224c0 18 14 32 32 32h288c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="sticky-note" unicode="&#xf249;" 
-d="M1024 288v-416h-928c-53 0 -96 43 -96 96v1344c0 53 43 96 96 96h1344c53 0 96 -43 96 -96v-928h-416c-53 0 -96 -43 -96 -96zM1152 256h381c-9 -48 -35 -102 -65 -132l-184 -184c-30 -30 -84 -56 -132 -65v381z" />
-    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280" 
-d="M1280 137c0 -146 -96 -265 -213 -265h-854c-117 0 -213 119 -213 265c0 263 65 567 327 567c81 -79 191 -128 313 -128s232 49 313 128c262 0 327 -304 327 -567zM1024 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
-    <glyph glyph-name="php" unicode="&#xf30e;" horiz-adv-x="2299" 
-d="M1149 1245c635 0 1150 -271 1150 -605s-515 -605 -1150 -605s-1149 271 -1149 605s514 605 1149 605zM1049 1081l-130 -627h125l74 359l100 -1c32 0 52 -6 62 -18s12 -33 6 -62l-58 -278h126l61 291c13 65 4 109 -27 132c-30 23 -77 36 -138 37h-111l35 167h-125z
-M478 914v0l-129 -625h126l34 165h108c37 0 73 5 107 13s66 27 96 57c25 24 44 50 58 80s24 60 28 91c11 67 1 121 -31 160s-84 58 -155 59h-242zM1549 914l-130 -625h126l34 165h109c37 0 72 5 106 13s67 27 97 57c25 24 43 50 57 80s24 60 28 91c11 67 1 121 -31 160
-s-84 58 -155 59h-241zM623 815v0c48 1 88 -4 120 -13s43 -45 32 -106c-13 -73 -38 -115 -77 -127s-87 -18 -145 -17h-12c-3 0 -8 1 -11 1l54 261h18c7 0 14 0 21 1zM1693 815v0c48 1 88 -4 120 -13s44 -45 33 -106c-13 -73 -39 -115 -78 -127s-87 -18 -145 -17h-12
-c-3 0 -8 1 -11 1l54 261h18c7 0 14 0 21 1z" />
-    <glyph glyph-name="ioxhost" unicode="&#xf208;" horiz-adv-x="2048" 
-d="M1463 704c0 -47 -38 -86 -86 -86h-702c-48 0 -86 39 -86 86s38 86 86 86h702c48 0 86 -39 86 -86zM1677 704c0 59 -8 115 -23 170h-982c-48 0 -86 38 -86 85c0 48 38 86 86 86h908c-115 187 -321 311 -555 311c-360 0 -653 -292 -653 -652c0 -59 8 -115 23 -170h982
-c48 0 86 -38 86 -85c0 -48 -38 -86 -86 -86h-908c115 -187 321 -311 556 -311c359 0 652 292 652 652zM2048 959c0 -47 -38 -85 -86 -85h-131c11 -55 17 -112 17 -170c0 -454 -369 -824 -823 -824c-333 0 -620 198 -750 483h-189c-48 0 -86 38 -86 86c0 47 38 85 86 85h132
-c-11 55 -17 112 -17 170c0 454 369 824 824 824c332 0 619 -198 749 -483h188c48 0 86 -38 86 -86z" />
-    <glyph glyph-name="expand" unicode="&#xf065;" 
-d="M755 480c0 -8 -4 -17 -10 -23l-332 -332l144 -144c12 -12 19 -28 19 -45c0 -35 -29 -64 -64 -64h-448c-35 0 -64 29 -64 64v448c0 35 29 64 64 64c17 0 33 -7 45 -19l144 -144l332 332c6 6 15 10 23 10s17 -4 23 -10l114 -114c6 -6 10 -15 10 -23zM1536 1344v-448
-c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-144 144l-332 -332c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-114 114c-6 6 -10 15 -10 23s4 17 10 23l332 332l-144 144c-12 12 -19 28 -19 45c0 35 29 64 64 64h448c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="discord-alt" unicode="&#xf2ef;" 
-d="M559 1212v0l13 -16c-237 -68 -346 -172 -346 -172s29 16 78 38c141 62 252 79 298 83c8 1 15 3 23 3c80 11 170 13 265 2c125 -14 259 -51 396 -126c0 0 -103 99 -327 167l18 21s181 4 370 -138c0 0 189 -343 189 -766c0 0 -111 -191 -402 -200c0 0 -48 56 -87 106
-c172 49 238 157 238 157c-54 -35 -105 -61 -151 -78c-66 -28 -129 -45 -191 -56c-126 -24 -242 -17 -341 1c-75 14 -139 36 -193 57c-30 12 -63 26 -96 44c-4 3 -8 4 -12 7c-3 1 -4 3 -5 4c-24 13 -37 22 -37 22s63 -105 230 -155c-39 -50 -88 -109 -88 -109
-c-291 9 -401 200 -401 200c0 423 189 766 189 766c189 142 370 138 370 138zM522 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146c1 80 -59 146 -134 146zM1002 722v0c-75 0 -134 -66 -134 -146s60 -146 134 -146c75 0 134 66 134 146
-s-59 146 -134 146z" />
-    <glyph glyph-name="bitbucket-square" unicode="&#xf172;" 
-d="M848 666c0 57 -70 96 -118 67c-57 -27 -57 -119 1 -143c52 -31 125 16 117 76zM928 682c11 -88 -58 -174 -146 -182s-171 64 -175 153c-3 66 38 130 98 157c94 42 210 -26 223 -128zM1100 1073c-44 -45 -111 -51 -170 -58c-107 -14 -216 -13 -324 0
-c-59 8 -124 15 -170 58c28 40 78 48 123 55c135 24 273 23 408 1c48 -7 102 -15 133 -56zM1142 327c0 24 25 65 -9 75c-215 -142 -515 -142 -731 0l-12 -6l-5 -12c12 -70 23 -141 41 -210c41 -71 129 -95 204 -108c142 -26 299 -18 428 53c75 42 63 137 84 208zM1272 1020
-c4 24 9 53 -8 75c-38 48 -98 71 -155 88c-158 46 -325 52 -487 36c-77 -7 -154 -20 -226 -46c-54 -21 -127 -49 -136 -113c18 -150 47 -297 72 -446c8 -42 8 -92 46 -122c81 -62 184 -89 284 -100c148 -16 305 -5 440 63c38 20 82 46 90 92c28 157 55 314 80 473zM1536 1120
-v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="hand-paper-o" unicode="&#xf256;" horiz-adv-x="1632" 
-d="M880 1408c-62 0 -112 -50 -112 -112v-656h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-784l-154 205c-24 32 -62 51 -102 51c-71 0 -128 -58 -128 -128c0 -28 9 -55 26 -77l384 -512c24 -32 62 -51 102 -51h688c46 0 86 33 95 78l76 405c3 19 5 39 5 59v498
-c0 62 -50 112 -112 112s-112 -50 -112 -112v-272h-32v528c0 62 -50 112 -112 112s-112 -50 -112 -112v-528h-32v656c0 62 -50 112 -112 112zM880 1536c90 0 173 -51 214 -132c14 3 28 4 42 4c132 0 240 -108 240 -240v-17c139 8 256 -99 256 -239v-498c0 -28 -3 -56 -8 -83
-l-76 -404c-19 -106 -112 -183 -220 -183h-688c-80 0 -157 39 -205 102l-384 512c-33 44 -51 99 -51 154c0 141 114 256 256 256c42 0 93 -10 128 -34v434c0 132 108 240 240 240c14 0 28 -1 42 -4c41 81 124 132 214 132z" />
-    <glyph glyph-name="database" unicode="&#xf1c0;" 
-d="M768 768c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 0c301 0 603 54 768 170v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 384c301 0 603 54 768 170
-v-170c0 -141 -344 -256 -768 -256s-768 115 -768 256v170c165 -116 467 -170 768 -170zM768 1536c424 0 768 -115 768 -256v-128c0 -141 -344 -256 -768 -256s-768 115 -768 256v128c0 141 344 256 768 256z" />
-    <glyph glyph-name="jirafeau" unicode="&#xf318;" 
-d="M1459 1408c43 0 77 -34 77 -77v-1382c0 -43 -34 -77 -77 -77h-923c18 109 27 134 50 210c31 103 92 108 92 108c49 11 74 31 224 -36s270 -72 270 -72v0c15 -19 71 -80 137 -85c90 -7 128 19 128 19s31 91 -38 176s-336 376 -343 403c0 0 -40 47 -69 58s-119 63 -135 130
-s-42 168 -33 215s22 152 -32 130s-31 -74 -40 -137s-52 -190 -112 -190c0 0 -87 150 -145 132s-108 -181 -63 -275c0 0 -210 -295 -393 -772c-20 14 -34 37 -34 63v1382c0 43 34 77 77 77h1382z" />
-    <glyph glyph-name="user-circle-o" unicode="&#xf2be;" horiz-adv-x="1792" 
-d="M896 1536c495 0 896 -401 896 -896c0 -492 -399 -896 -896 -896c-496 0 -896 403 -896 896c0 495 401 896 896 896zM1515 185c93 128 149 285 149 455c0 423 -345 768 -768 768s-768 -345 -768 -768c0 -170 56 -327 149 -455c36 179 123 327 306 327
-c81 -79 191 -128 313 -128s232 49 313 128c183 0 270 -148 306 -327zM1280 832c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384z" />
-    <glyph glyph-name="hacker-news" unicode="&#xf1d4;" 
-d="M809 532l266 499h-112l-157 -312s-24 -48 -44 -92c-19 46 -42 92 -42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="edge" unicode="&#xf282;" horiz-adv-x="1654" 
-d="M0 741h1c52 414 335 796 841 795c307 0 560 -144 708 -409c76 -137 104 -283 104 -442v-188h-1125c5 -464 682 -448 974 -244v-377c-171 -103 -557 -192 -858 -77c-255 98 -433 363 -436 621c-4 333 165 554 436 680c-57 -72 -101 -150 -124 -285h635
-c37 379 -359 379 -359 379c-374 -13 -644 -231 -797 -453z" />
-    <glyph glyph-name="calendar-plus-o" unicode="&#xf271;" horiz-adv-x="1664" 
-d="M1536 1280c70 0 128 -58 128 -128v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128zM1152 1376v-288
-c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM384 1376v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM1536 -128v1024h-1408v-1024h1408zM896 448h224
-c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-224v-224c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v224h-224c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v224c0 18 14 32 32 32h64c18 0 32 -14 32 -32v-224z" />
-    <glyph glyph-name="hand-lizard-o" unicode="&#xf258;" horiz-adv-x="2048" 
-d="M1151 1536c81 0 159 -39 207 -105l572 -781c77 -104 118 -229 118 -359v-355c0 -106 -86 -192 -192 -192h-384c-106 0 -192 86 -192 192v177l-286 143h-546c-106 0 -192 86 -192 192v32c0 159 129 288 288 288h420l42 128h-686c-133 0 -244 102 -255 234
-c-42 51 -65 116 -65 182v32c0 106 86 192 192 192h959zM1920 -64v355c0 101 -33 202 -93 284l-573 781c-24 32 -62 52 -103 52h-959c-35 0 -64 -29 -64 -64c0 -53 1 -90 36 -133c13 41 50 69 92 69h832v-32h-832c-35 0 -64 -29 -64 -64c0 -19 -1 -39 3 -58
-c11 -59 65 -102 125 -102h731c53 0 96 -43 96 -96c0 -10 -2 -21 -5 -30l-64 -192c-13 -39 -50 -66 -91 -66h-443c-88 0 -160 -72 -160 -160v-32c0 -35 29 -64 64 -64h561c10 0 20 -2 29 -7l317 -158c32 -17 53 -50 53 -86v-197c0 -35 29 -64 64 -64h384c35 0 64 29 64 64z
-" />
-    <glyph glyph-name="digitalocean" unicode="&#xf31d;" horiz-adv-x="1535" 
-d="M245 169h-191v190h191v-190zM473 -59h-228v228h228v-228zM769 465v-296h-296v296h296zM768 -128v298c315 0 559 312 438 644c-44 123 -142 221 -265 265c-332 120 -644 -123 -644 -438h-297c0 502 485 894 1012 729c230 -72 414 -255 485 -485
-c165 -527 -226 -1013 -729 -1013z" />
-    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408" 
-d="M597 869c0 0 -10 -17 -257 -456c-13 -22 -30 -46 -65 -46h-239c-14 0 -25 7 -31 17s-7 23 0 36l253 448c1 0 1 0 0 1l-161 279c-7 13 -8 27 -1 37c6 10 18 15 32 15h239c36 0 54 -24 66 -45c163 -285 164 -286 164 -286zM1403 1511c7 -10 7 -24 0 -37l-528 -934
-c-1 0 -1 -1 0 -1l336 -615c7 -13 7 -27 1 -37c-7 -10 -18 -15 -32 -15h-239c-36 0 -55 24 -66 45c-339 621 -339 622 -339 622s17 30 531 942c13 23 28 45 64 45h241c14 0 25 -5 31 -15z" />
-    <glyph glyph-name="youtube-square" unicode="&#xf166;" 
-d="M919 233v157c0 33 -10 50 -29 50c-11 0 -22 -5 -33 -16v-224c11 -11 22 -16 33 -16c19 0 29 16 29 49zM1103 355h66v34c0 34 -11 51 -33 51s-33 -17 -33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40c-26 -30 -51 -45 -76 -45
-c-21 0 -36 9 -42 28c-4 11 -6 28 -6 54v290h66v-270c0 -15 0 -24 1 -26c1 -10 6 -15 15 -15c14 0 27 10 42 31v280h67zM985 384v-146c0 -33 -2 -58 -7 -73c-8 -28 -26 -42 -53 -42c-23 0 -46 14 -68 41v-36h-67v493h67v-161c21 26 44 40 68 40c27 0 45 -14 53 -42
-c5 -15 7 -39 7 -74zM1236 255v-9c0 -22 -1 -36 -2 -43c-2 -15 -7 -28 -15 -40c-18 -27 -46 -40 -80 -40c-35 0 -62 13 -81 38c-14 18 -21 47 -21 86v129c0 39 6 67 20 86c19 25 46 38 80 38c33 0 60 -13 78 -38c14 -19 21 -47 21 -86v-76h-133v-65c0 -34 11 -51 34 -51
-c16 0 26 9 30 26c0 4 1 19 1 45h68zM785 1079v-156c0 -34 -11 -51 -32 -51c-22 0 -32 17 -32 51v156c0 34 10 52 32 52c21 0 32 -18 32 -52zM1318 366c0 86 0 177 -19 260c-14 59 -62 102 -119 108c-136 15 -274 15 -412 15c-137 0 -275 0 -411 -15
-c-58 -6 -106 -49 -119 -108c-19 -83 -20 -174 -20 -260c0 -85 0 -176 20 -260c13 -58 61 -101 118 -108c137 -15 275 -15 412 -15s275 0 412 15c57 7 105 50 118 108c20 84 20 175 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78c15 -46 32 -92 47 -138
-c24 -70 39 -122 46 -158v-201h74v201zM852 936v130c0 39 -7 68 -21 87c-19 25 -45 38 -78 38c-34 0 -60 -13 -78 -38c-14 -19 -21 -48 -21 -87v-130c0 -39 7 -68 21 -87c18 -25 44 -38 78 -38c33 0 59 13 78 38c14 18 21 48 21 87zM1033 816h67v370h-67v-283
-c-15 -21 -29 -31 -42 -31c-9 0 -15 5 -16 16c-1 2 -1 10 -1 26v272h-67v-293c0 -26 2 -43 6 -55c7 -18 22 -27 43 -27c25 0 50 15 77 45v-40zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960
-c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="taxi" unicode="&#xf1ba;" horiz-adv-x="2048" 
-d="M1824 640c124 0 224 -100 224 -224v-384c0 -18 -14 -32 -32 -32h-96v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-1024v-64c0 -106 -86 -192 -192 -192s-192 86 -192 192v64h-96c-18 0 -32 14 -32 32v384c0 124 100 224 224 224h28l105 419
-c31 126 153 221 283 221h128v224c0 18 14 32 32 32h448c18 0 32 -14 32 -32v-224h128c130 0 252 -95 283 -221l105 -419h28zM320 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM516 640h1016l-89 357c-3 11 -23 27 -35 27h-768
-c-12 0 -32 -16 -35 -27zM1728 160c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160z" />
-    <glyph glyph-name="sort-desc" unicode="&#xf0dd;" horiz-adv-x="1024" 
-d="M1024 448c0 -17 -7 -33 -19 -45l-448 -448c-12 -12 -28 -19 -45 -19s-33 7 -45 19l-448 448c-12 12 -19 28 -19 45c0 35 29 64 64 64h896c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1632" 
-d="M1408 1088c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1632 1376c0 -332 -92 -553 -329 -791c-58 -57 -124 -116 -195 -176l-20 -379c-1 -10 -7 -20 -16 -26l-384 -224c-5 -3 -10 -4 -16 -4c-8 0 -16 3 -23 9l-64 64c-8 9 -11 21 -8 32l85 276
-l-281 281l-276 -85c-3 -1 -6 -1 -9 -1c-8 0 -17 3 -23 9l-64 64c-10 11 -12 27 -5 39l224 384c6 9 16 15 26 16l379 20c60 71 119 137 176 195c250 249 441 329 789 329c18 0 34 -14 34 -32z" />
-    <glyph glyph-name="discord" unicode="&#xf2ee;" 
-d="M180 1516v0h1176c99 0 180 -81 180 -181v-1575l-189 167l-106 98l-112 105l46 -163h-995c-99 0 -180 81 -180 181v1187c0 100 81 181 180 181zM634 1107c0 0 -121 3 -247 -92c0 0 -126 -229 -126 -512c0 0 73 -128 267 -134c0 0 33 40 59 73c-111 33 -153 104 -153 104
-s8 -6 24 -15c1 -1 2 -2 4 -3c3 -2 5 -2 8 -4c22 -12 44 -22 64 -30c36 -14 79 -28 129 -38c66 -12 143 -17 227 -1c41 7 83 20 127 38c31 11 65 28 101 52c0 0 -44 -73 -159 -105c26 -33 58 -71 58 -71c194 6 269 134 269 134c0 283 -127 512 -127 512
-c-126 95 -246 92 -246 92l-12 -14c149 -46 218 -112 218 -112c-91 50 -181 75 -264 85c-63 7 -123 5 -177 -2c-5 0 -10 -1 -15 -2c-31 -3 -106 -14 -200 -55c-32 -15 -51 -26 -51 -26s72 69 230 115zM609 779c50 0 91 -43 90 -97c0 -54 -40 -98 -90 -98c-49 0 -89 44 -89 98
-s39 97 89 97zM930 779c50 0 89 -43 89 -97s-39 -98 -89 -98c-49 0 -90 44 -90 98s40 97 90 97z" />
-    <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920" 
-d="M768 384h384v96h-128v448h-114l-148 -137l77 -80c24 21 39 32 55 57h2v-288h-128v-96zM1280 640c0 -182 -110 -416 -320 -416s-320 234 -320 416s110 416 320 416s320 -234 320 -416zM1792 384v512c-141 0 -256 115 -256 256h-1152c0 -141 -115 -256 -256 -256v-512
-c141 0 256 -115 256 -256h1152c0 141 115 256 256 256zM1920 1216v-1152c0 -35 -29 -64 -64 -64h-1792c-35 0 -64 29 -64 64v1152c0 35 29 64 64 64h1792c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920" 
-d="M416 256c-88 0 -160 72 -160 160v704c0 88 72 160 160 160h1088c88 0 160 -72 160 -160v-704c0 -88 -72 -160 -160 -160h-1088zM384 1120v-704c0 -17 15 -32 32 -32h1088c17 0 32 15 32 32v704c0 17 -15 32 -32 32h-1088c-17 0 -32 -15 -32 -32zM1760 192h160v-96
-c0 -53 -72 -96 -160 -96h-1600c-88 0 -160 43 -160 96v96h1760zM1040 96c9 0 16 7 16 16s-7 16 -16 16h-160c-9 0 -16 -7 -16 -16s7 -16 16 -16h160z" />
-    <glyph glyph-name="arrows-alt" unicode="&#xf0b2;" 
-d="M1283 995l-355 -355l355 -355l144 144c18 19 46 24 70 14c23 -10 39 -33 39 -59v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l144 144l-355 355l-355 -355l144 -144c19 -18 24 -46 14 -69c-10 -24 -33 -40 -59 -40h-448
-c-35 0 -64 29 -64 64v448c0 26 16 49 40 59c23 10 51 5 69 -14l144 -144l355 355l-355 355l-144 -144c-12 -12 -28 -19 -45 -19c-8 0 -17 2 -24 5c-24 10 -40 33 -40 59v448c0 35 29 64 64 64h448c26 0 49 -16 59 -40c10 -23 5 -51 -14 -69l-144 -144l355 -355l355 355
-l-144 144c-19 18 -24 46 -14 69c10 24 33 40 59 40h448c35 0 64 -29 64 -64v-448c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 7 -45 19z" />
-    <glyph glyph-name="thermometer-empty" unicode="&#xf2cb;" horiz-adv-x="1024" 
-d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 105 85 192 192 192s192 -88 192 -192zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320s320 143 320 320zM896 192
-c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
-    <glyph glyph-name="underline" unicode="&#xf0cd;" 
-d="M48 1313c-18 1 -33 1 -45 4l-3 88c13 1 26 1 40 1c35 0 73 -1 112 -4c94 -5 150 -7 166 -7c57 0 113 1 168 3c54 2 103 4 146 5c42 0 71 1 86 2l-1 -14l2 -64v-9c-40 -6 -81 -9 -124 -9c-40 0 -66 -8 -79 -25c-9 -10 -13 -54 -13 -132c0 -24 1 -43 1 -58l1 -229l14 -280
-c4 -81 20 -148 51 -202c23 -39 55 -70 96 -92c60 -32 119 -47 177 -47c68 0 132 9 191 28c35 11 68 27 99 51c31 23 53 44 65 64c26 40 43 79 53 114c14 49 21 125 21 229c0 179 -13 184 -28 410l-4 59c-3 43 -10 73 -24 88c-22 23 -48 35 -77 34l-100 -2l-14 3l2 86h84
-l205 -10c68 -3 133 3 196 10l18 -2c4 -25 6 -42 6 -51s-2 -19 -4 -31c-27 -7 -55 -12 -84 -13c-47 -7 -74 -12 -79 -17c-9 -9 -15 -22 -15 -41c0 -13 2 -33 3 -58c0 0 8 -18 22 -396c5 -151 -5 -253 -15 -304s-24 -92 -41 -122c-26 -44 -64 -85 -112 -123
-c-49 -37 -109 -67 -182 -89s-158 -33 -255 -33c-110 0 -205 15 -284 46s-139 72 -179 122s-68 115 -83 195c-11 55 -16 134 -16 237v333c0 126 -6 197 -17 213c-16 23 -65 37 -147 39zM1536 -96c0 -18 -14 -32 -32 -32h-1472c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h1472
-c18 0 32 -14 32 -32v-64z" />
-    <glyph glyph-name="sun-o" unicode="&#xf185;" horiz-adv-x="1707" 
-d="M1430 640c0 318 -258 576 -576 576s-576 -258 -576 -576s258 -576 576 -576s576 258 576 576zM1706 363c-3 -10 -11 -17 -20 -20l-292 -96v-306c0 -10 -5 -20 -13 -26c-9 -6 -19 -8 -29 -4l-292 94l-180 -248c-6 -8 -16 -13 -26 -13s-20 5 -26 13l-180 248l-292 -94
-c-10 -4 -20 -2 -29 4c-8 6 -13 16 -13 26v306l-292 96c-9 3 -17 10 -20 20s-2 21 4 29l180 248l-180 248c-6 9 -7 19 -4 29s11 17 20 20l292 96v306c0 10 5 20 13 26c9 6 19 8 29 4l292 -94l180 248c12 16 40 16 52 0l180 -248l292 94c10 4 20 2 29 -4c8 -6 13 -16 13 -26
-v-306l292 -96c9 -3 17 -10 20 -20s2 -20 -4 -29l-180 -248l180 -248c6 -8 7 -19 4 -29z" />
-    <glyph glyph-name="activitypub" unicode="&#xf2f2;" horiz-adv-x="2032" 
-d="M924 1280v-1280l-185 107v853l-739 -427v214zM1109 1280l923 -533v-214l-923 -533v213l739 427l-739 427v213zM1109 853l369 -213l-369 -213v426zM554 640v-427l-369 214z" />
-    <glyph glyph-name="play-circle" unicode="&#xf144;" 
-d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM1152 585c20 11 32 32 32 55s-12 44 -32 55l-544 320c-19 12 -44 12 -64 1c-20 -12 -32 -33 -32 -56v-640c0 -23 12 -44 32 -56c10 -5 21 -8 32 -8s22 3 32 9z" />
-    <glyph glyph-name="share-square-o" unicode="&#xf045;" horiz-adv-x="1664" 
-d="M1408 547v-259c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h255c17 0 32 -14 32 -32c0 -16 -11 -29 -26 -32c-50 -17 -95 -37 -133 -60c-5 -2 -10 -4 -16 -4h-112c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832
-c88 0 160 72 160 160v214c0 12 7 23 18 29c20 9 38 22 54 37c9 9 23 13 35 8s21 -16 21 -29zM1645 1043l-384 -384c-12 -13 -28 -19 -45 -19c-8 0 -17 2 -25 5c-23 10 -39 33 -39 59v192h-160c-220 0 -360 -42 -438 -131c-81 -93 -105 -243 -74 -473c2 -14 -7 -28 -20 -34
-c-4 -1 -8 -2 -12 -2c-10 0 -20 5 -26 13c-7 10 -166 235 -166 435c0 268 84 576 736 576h160v192c0 26 16 49 39 59c8 3 17 5 25 5c17 0 33 -7 45 -19l384 -384c25 -25 25 -65 0 -90z" />
-    <glyph glyph-name="street-view" unicode="&#xf21d;" horiz-adv-x="1408" 
-d="M1408 0c0 -176 -365 -256 -704 -256s-704 80 -704 256c0 136 203 200 373 229c35 6 68 -17 74 -52s-17 -68 -52 -74c-206 -36 -264 -92 -267 -104c10 -34 202 -127 576 -127s566 93 576 129c-3 10 -61 66 -267 102c-35 6 -58 39 -52 74s39 58 74 52
-c170 -29 373 -93 373 -229zM1024 896v-384c0 -35 -29 -64 -64 -64h-64v-384c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v384h-64c-35 0 -64 29 -64 64v384c0 71 57 128 128 128h384c71 0 128 -57 128 -128zM928 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224
-s100 224 224 224s224 -100 224 -224z" />
-    <glyph glyph-name="arrow-circle-up" unicode="&#xf0aa;" 
-d="M1284 641c0 17 -6 33 -18 45l-362 362l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91l-362 -362c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91c12 -12 28 -18 45 -18s33 6 45 18l189 189v-502c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v502l189 -189
-c12 -12 28 -19 45 -19s33 7 45 19l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="podcast" unicode="&#xf2ce;" 
-d="M994 344c0 -66 -7 -132 -17 -197c-15 -104 -30 -211 -55 -313c-18 -73 -86 -90 -152 -90s-134 17 -152 90c-25 102 -40 209 -55 313c-10 65 -17 131 -17 197c0 135 109 168 224 168s224 -33 224 -168zM1536 768c0 -324 -200 -601 -484 -714c-11 -4 -23 6 -21 18
-c3 21 6 43 10 66c2 16 4 32 6 47c1 6 4 10 9 12c208 106 352 322 352 571c0 365 -306 659 -675 639c-338 -18 -607 -306 -605 -644c2 -249 147 -464 356 -568c5 -2 8 -7 9 -12c2 -14 4 -29 6 -45c4 -24 7 -46 11 -68c2 -12 -11 -22 -22 -17c-297 116 -504 412 -487 753
-c19 387 331 704 718 728c446 28 817 -326 817 -766zM994 800c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224zM1282 768c0 -165 -79 -313 -200 -406c-10 -8 -24 -1 -26 12c-3 28 -11 61 -29 92c-4 6 -3 14 3 20c76 70 124 170 124 282
-c0 226 -197 407 -428 382c-177 -20 -321 -166 -338 -344c-13 -126 37 -242 122 -320c6 -6 7 -14 3 -20c-18 -31 -26 -64 -29 -93c-2 -12 -16 -19 -26 -11c-124 96 -203 247 -200 417c6 266 222 488 487 500c294 14 537 -220 537 -511z" />
-    <glyph glyph-name="hackster" unicode="&#xf326;" 
-d="M768 -128c-424 0 -768 344 -768 768s344 768 768 768s768 -344 768 -768s-344 -768 -768 -768zM517 887c-10 -3 -17 -13 -17 -23s8 -18 18 -18h113c17 0 31 14 31 31v9c0 3 0 5 -1 8c-4 16 -22 26 -38 22zM661 739v59v5c-2 9 -12 13 -21 11l-325 -88c-5 -1 -9 -7 -9 -12
-s4 -9 9 -9h151c17 0 31 -14 31 -31v-86c0 -9 8 -17 17 -17h324c17 0 31 -13 31 -30v-59v-5c2 -9 12 -13 21 -11l325 88c5 1 9 7 9 12s-4 9 -9 9h-152c-17 0 -30 14 -30 31v85c0 9 -8 17 -17 17h-324c-17 0 -31 14 -31 31v0zM891 989c-13 -4 -23 -16 -23 -30v-176
-c0 -17 14 -31 31 -31h101c17 0 30 14 30 31v203v0c0 2 0 6 -1 8c-4 16 -21 26 -37 22zM1013 386c10 3 17 13 17 23s-8 19 -18 19h-113c-17 0 -31 -14 -31 -31v-9c0 -3 0 -5 1 -8c4 -16 22 -26 38 -22zM639 285c13 4 23 16 23 30v176c0 17 -14 30 -31 30h-101
-c-17 0 -30 -13 -30 -30v-204c0 -3 0 -5 1 -8c4 -16 21 -25 37 -21z" />
-    <glyph glyph-name="plus-square" unicode="&#xf0fe;" 
-d="M1280 576v128c0 35 -29 64 -64 64h-320v320c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-320h-320c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h320v-320c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v320h320c35 0 64 29 64 64zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920" 
-d="M1792 544v832c0 17 -15 32 -32 32h-1600c-17 0 -32 -15 -32 -32v-832c0 -17 15 -32 32 -32h1600c17 0 32 15 32 32zM1920 1376v-1088c0 -88 -72 -160 -160 -160h-544c0 -85 64 -157 64 -192s-29 -64 -64 -64h-512c-35 0 -64 29 -64 64c0 37 64 105 64 192h-544
-c-88 0 -160 72 -160 160v1088c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="expeditedssl" unicode="&#xf23e;" horiz-adv-x="1792" 
-d="M896 1472c-459 0 -832 -373 -832 -832s373 -832 832 -832s832 373 832 832s-373 832 -832 832zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM496 704c9 0 16 -7 16 -16v-480c0 -9 -7 -16 -16 -16h-32c-9 0 -16 7 -16 16
-v480c0 9 7 16 16 16h32zM896 640c71 0 128 -57 128 -128c0 -47 -26 -88 -64 -110v-114c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v114c-38 22 -64 63 -64 110c0 71 57 128 128 128zM896 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768
-s344 768 768 768zM544 928v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 124 100 224 224 224s224 -100 224 -224v-96c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v96c0 194 -158 352 -352 352s-352 -158 -352 -352zM1408 192v512c0 35 -29 64 -64 64h-896
-c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h896c35 0 64 29 64 64z" />
-    <glyph glyph-name="toggle-on" unicode="&#xf205;" horiz-adv-x="2048" 
-d="M0 640c0 353 287 640 640 640h768c353 0 640 -287 640 -640s-287 -640 -640 -640h-768c-353 0 -640 287 -640 640zM1408 128c282 0 512 230 512 512s-230 512 -512 512s-512 -230 -512 -512s230 -512 512 -512z" />
-    <glyph glyph-name="minus-square" unicode="&#xf146;" 
-d="M1280 576v128c0 35 -29 64 -64 64h-896c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h896c35 0 64 29 64 64zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="adn" unicode="&#xf170;" 
-d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="whatsapp" unicode="&#xf232;" 
-d="M985 562c17 0 180 -85 187 -97c2 -5 2 -11 2 -15c0 -25 -8 -53 -17 -76c-23 -56 -116 -92 -173 -92c-48 0 -147 42 -190 62c-143 65 -232 176 -318 303c-38 56 -72 125 -71 194v8c2 66 26 113 74 158c15 14 31 22 52 22c12 0 24 -3 37 -3c27 0 32 -8 42 -34
-c7 -17 58 -153 58 -163c0 -38 -69 -81 -69 -104c0 -5 2 -10 5 -15c22 -47 64 -101 102 -137c46 -44 95 -73 151 -101c7 -4 14 -7 22 -7c30 0 80 97 106 97zM782 32c346 0 628 282 628 628s-282 628 -628 628s-628 -282 -628 -628c0 -132 42 -261 120 -368l-79 -233l242 77
-c102 -67 223 -104 345 -104zM782 1414c416 0 754 -338 754 -754s-338 -754 -754 -754c-127 0 -253 32 -365 94l-417 -134l136 405c-71 117 -108 252 -108 389c0 416 338 754 754 754z" />
-    <glyph glyph-name="puzzle-piece" unicode="&#xf12e;" horiz-adv-x="1664" 
-d="M1664 438c0 -103 -59 -189 -168 -189c-122 0 -154 111 -264 111c-80 0 -110 -50 -110 -124c0 -78 32 -153 31 -230v-5c-11 0 -22 0 -33 -1c-103 -10 -207 -30 -311 -30c-71 0 -145 28 -145 110c0 110 111 142 111 264c0 109 -86 168 -189 168c-105 0 -202 -58 -202 -173
-c0 -127 97 -182 97 -251c0 -35 -22 -66 -46 -89c-31 -29 -75 -35 -117 -35c-82 0 -164 11 -245 24c-18 3 -37 5 -55 8l-13 2c-2 1 -5 1 -5 2v1024c4 -3 63 -10 73 -12c81 -13 163 -24 245 -24c42 0 86 6 117 35c24 23 46 54 46 89c0 69 -97 124 -97 251
-c0 115 97 173 203 173c102 0 188 -59 188 -168c0 -122 -111 -154 -111 -264c0 -82 74 -110 145 -110c115 0 229 26 343 32v-2c-3 -4 -10 -63 -12 -73c-13 -81 -24 -163 -24 -245c0 -42 6 -86 35 -117c23 -24 54 -46 89 -46c69 0 124 97 251 97c115 0 173 -97 173 -202z" />
-    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1768" 
-d="M263 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
-    <glyph glyph-name="skyatlas" unicode="&#xf216;" horiz-adv-x="2048" 
-d="M1430 953c0 0 -1 1 0 0zM1690 749c194 0 358 -145 358 -343c0 -211 -168 -366 -376 -366c-531 0 -629 799 -1151 799c-202 0 -349 -129 -349 -336c0 -214 160 -343 367 -343c136 0 291 57 401 136c18 13 54 52 73 52s35 -16 35 -35c0 -25 -42 -61 -60 -77
-c-131 -114 -321 -196 -495 -196c-267 0 -493 189 -493 464s216 477 489 477c593 0 712 -787 1158 -787c134 0 235 87 235 224c0 127 -98 223 -224 223c-56 0 -112 -37 -150 -37c-27 0 -51 23 -51 50c0 37 17 76 17 116c0 213 -163 367 -374 367c-170 0 -256 -118 -284 -118
-c-20 0 -36 16 -36 36c0 18 13 33 25 46c81 92 207 140 329 140c254 0 445 -187 445 -441c0 -22 -1 -44 -4 -66c38 10 77 15 115 15z" />
-    <glyph glyph-name="level-down" unicode="&#xf149;" horiz-adv-x="1024" 
-d="M32 1280h704c18 0 32 -15 32 -33v-863h192c25 0 47 -15 58 -37c11 -23 7 -50 -9 -69l-320 -384c-24 -29 -74 -29 -98 0l-320 384c-16 19 -19 46 -9 69c11 22 33 37 58 37h192v640h-320c-9 0 -18 4 -25 11l-160 192c-8 9 -9 23 -4 34s17 19 29 19z" />
-    <glyph glyph-name="stack-overflow" unicode="&#xf16c;" horiz-adv-x="1514" 
-d="M1278 -96v480h160v-640h-1438v640h160v-480h1118zM336 428l33 157l783 -165l-33 -156zM439 802l67 146l725 -339l-67 -145zM640 1158l102 123l614 -513l-102 -123zM1037 1536l477 -641l-128 -96l-477 641zM319 65v159h800v-159h-800z" />
-    <glyph glyph-name="check-square-o" unicode="&#xf046;" horiz-adv-x="1663" 
-d="M1408 606v-318c0 -159 -129 -288 -288 -288h-832c-159 0 -288 129 -288 288v832c0 159 129 288 288 288h832c40 0 80 -8 117 -25c9 -4 16 -13 18 -23c2 -11 -1 -21 -9 -29l-49 -49c-6 -6 -15 -10 -23 -10c-3 0 -6 1 -9 2c-15 4 -30 6 -45 6h-832
-c-88 0 -160 -72 -160 -160v-832c0 -88 72 -160 160 -160h832c88 0 160 72 160 160v254c0 8 3 16 9 22l64 64c7 7 15 10 23 10c4 0 8 -1 12 -3c12 -5 20 -16 20 -29zM1639 1095l-814 -814c-32 -32 -82 -32 -114 0l-430 430c-32 32 -32 82 0 114l110 110c32 32 82 32 114 0
-l263 -263l647 647c32 32 82 32 114 0l110 -110c32 -32 32 -82 0 -114z" />
-    <glyph glyph-name="emby" unicode="&#xf319;" horiz-adv-x="1534" 
-d="M474 224l-62 -62l-412 415l356 356l-60 61l414 414l355 -355l58 57l411 -414l-352 -352l58 -58l-414 -414zM1091 633l-496 291v-578z" />
-    <glyph glyph-name="hand-spock-o" unicode="&#xf259;" horiz-adv-x="1920" 
-d="M459 -256c-103 0 -192 70 -217 170l-101 401c-8 35 -13 72 -13 108c0 23 0 45 -5 67l-116 477c-5 19 -7 38 -7 57c0 124 94 226 217 239c22 113 119 193 235 193c111 0 207 -76 233 -184l83 -348l103 428c26 108 122 184 233 184c119 0 217 -86 236 -202
-c123 -14 212 -118 212 -241c0 -19 -3 -39 -7 -59l-123 -512c80 60 138 118 243 118c139 0 255 -113 255 -253c0 -84 -41 -162 -107 -212l-507 -380c-44 -33 -98 -51 -153 -51h-694zM1104 1408c-51 0 -96 -36 -108 -86l-164 -682h-127l-145 602c-12 50 -57 86 -108 86
-c-64 0 -112 -51 -112 -113c0 -10 1 -19 3 -28l132 -547h-26l-99 408c-12 49 -57 88 -109 88c-62 0 -113 -50 -113 -112c0 -9 1 -18 3 -26l116 -478c14 -58 4 -116 19 -174l100 -401c11 -43 49 -73 93 -73h694c27 0 54 9 76 26l507 379c34 26 56 67 56 110
-c0 70 -58 125 -127 125c-28 0 -55 -9 -77 -26l-307 -230v227c0 8 129 538 139 581c2 9 4 19 4 29c0 62 -47 115 -111 115c-52 0 -97 -36 -109 -86l-116 -482h-26l150 624c2 9 3 19 3 28c0 63 -46 116 -111 116z" />
-    <glyph glyph-name="scuttlebutt" unicode="&#xf2ea;" horiz-adv-x="1709" 
-d="M760 -126c-31 4 -114 28 -131 38c-5 3 -12 10 -16 16l-8 10l-7 -5c-14 -9 -14 -9 -151 60c-70 36 -134 68 -141 71c-21 10 -30 25 -45 74c-5 17 -6 19 -12 21c-18 7 -84 50 -121 78c-27 21 -66 60 -70 70c-10 25 -31 91 -37 112c-18 60 -21 88 -21 178c0 60 0 68 4 76
-c5 11 24 29 46 43c29 19 128 68 192 96l8 4l-4 8c-3 5 -16 24 -29 42l-24 33h-10c-21 1 -28 3 -48 16s-21 13 -39 41c-56 87 -91 163 -95 205c-4 46 23 129 52 160c9 9 17 16 28 22c16 8 17 8 40 8c19 0 25 -1 35 -5c27 -11 44 -29 49 -50c2 -11 2 -17 -1 -43
-c-9 -68 -1 -127 21 -163c4 -6 16 -19 28 -29c19 -17 38 -37 38 -43c0 -7 4 -1 11 15c9 23 70 138 78 148l5 8l-2 25c-8 86 -8 113 0 139c5 18 16 33 31 39c26 12 96 16 121 8c15 -5 28 -14 35 -26c5 -7 6 -12 7 -27l1 -18l52 8c71 11 95 16 116 24c26 10 38 13 57 13
-c29 0 45 -6 104 -37c137 -72 176 -97 219 -139c24 -23 28 -31 49 -73c17 -34 19 -37 38 -57l20 -21l23 6c28 8 37 8 49 2c10 -5 22 -21 22 -29c0 -2 4 -9 9 -16c7 -10 24 -34 39 -58c0 0 6 1 12 3c13 5 27 6 38 1c4 -2 17 -10 28 -19c11 -8 20 -15 21 -15s12 -7 25 -15
-c13 -9 27 -17 32 -18s14 -6 20 -9c13 -8 27 -10 64 -13c15 -1 31 -4 35 -5c18 -5 46 -31 55 -51c8 -18 5 -43 -9 -65c-4 -6 -18 -21 -30 -33s-23 -23 -24 -26s1 -24 4 -47c8 -67 4 -101 -13 -127c-8 -12 -29 -26 -59 -40c-13 -6 -24 -13 -27 -15s-8 -14 -12 -26
-c-9 -26 -17 -44 -26 -54c-8 -10 -10 -18 -13 -57c-4 -53 -10 -71 -37 -99c-20 -21 -37 -29 -70 -39c-11 -3 -49 -16 -85 -28c-35 -12 -66 -22 -68 -22s-6 -5 -9 -11c-14 -25 -33 -48 -63 -75c-48 -43 -116 -83 -163 -97c-9 -3 -16 -7 -24 -14c-43 -38 -88 -56 -154 -62
-c-28 -2 -42 -3 -63 0zM820 -67c13 1 31 5 41 7c18 4 49 17 49 20c0 1 -9 6 -20 12s-37 22 -56 36c-70 48 -117 94 -124 121c-9 35 -9 157 1 321c2 29 3 52 2 53c-3 3 -131 99 -131 99c-2 -2 -20 -148 -25 -210c-5 -54 -7 -145 -4 -170c3 -21 10 -46 32 -105
-c24 -66 44 -109 63 -139l9 -14l26 -8c44 -15 83 -25 104 -25c5 0 20 1 33 2zM559 26c-15 35 -29 69 -47 122c-14 40 -15 45 -17 70c-6 75 4 212 26 365c4 29 7 55 7 57c0 3 -11 12 -33 28c-30 22 -50 32 -58 32c-5 0 -83 -100 -120 -153c-34 -49 -63 -103 -68 -122
-c-2 -10 42 -188 64 -258c16 -52 -1 -38 137 -108l120 -60s-5 12 -11 27zM988 8c27 8 80 38 113 63c21 16 45 38 44 39c-1 0 -24 -2 -51 -6c-28 -4 -58 -7 -68 -7c-45 0 -82 18 -99 48c-8 14 -22 51 -31 82c-7 24 -8 30 -9 64c-1 30 -3 43 -7 59c-6 22 -18 48 -26 55
-c-9 8 -48 36 -57 40c-5 2 -13 7 -18 10l-9 6l-1 -10c-4 -31 -7 -124 -7 -206c0 -107 -2 -99 22 -123c49 -49 155 -116 185 -117c4 0 13 1 19 3zM1086 191c27 4 59 9 71 11c31 6 92 24 138 41c22 8 49 17 61 20c39 11 51 21 55 44c1 8 2 8 -3 7c-48 -15 -87 -22 -143 -24
-c-94 -4 -148 8 -226 46c-23 12 -57 33 -74 47c-5 4 -9 7 -9 7s3 -13 6 -27c5 -20 7 -33 8 -62c2 -39 6 -57 22 -97c6 -14 7 -16 13 -18c12 -4 31 -2 81 5zM232 241c-1 2 -10 37 -20 78s-19 77 -20 79c-4 8 -3 30 3 48c18 54 75 143 164 253c11 13 19 25 19 26
-c0 3 -40 24 -53 27c-7 2 -20 6 -27 9c-13 5 -14 5 -22 1c-4 -2 -28 -13 -53 -24c-76 -34 -138 -68 -159 -84l-7 -5l1 -71c1 -78 3 -88 17 -138c6 -20 26 -79 36 -106c3 -8 33 -36 58 -55c20 -15 62 -42 64 -42c0 0 0 2 -1 4v0zM1306 380c32 4 65 11 87 20c16 7 40 20 47 27
-c5 5 12 18 11 20l-24 -2c-44 -4 -92 -5 -118 -2c-32 3 -55 10 -86 26c-59 29 -105 72 -127 117c-11 23 -13 31 -13 52c0 63 43 117 183 229c22 17 40 32 41 33c0 1 -7 14 -17 29l-18 28l-11 2c-11 2 -13 2 -44 -8c-41 -14 -52 -16 -104 -22c-23 -2 -48 -7 -55 -9
-c-17 -5 -40 -21 -57 -39c-19 -20 -75 -92 -90 -116c-19 -29 -19 -33 -11 -52c4 -9 13 -27 20 -41s16 -33 20 -43c6 -16 9 -25 23 -88c7 -34 14 -49 32 -69c31 -33 75 -60 131 -80c49 -17 105 -20 180 -12zM889 488c0 0 -1 6 -3 12s-6 26 -10 44c-8 41 -14 58 -29 86
-c-16 31 -34 71 -37 83c-3 14 1 37 9 58c10 24 35 62 74 111c54 68 87 98 126 115c19 8 40 13 80 17c18 2 35 4 38 5c5 1 5 1 -2 9c-11 13 -23 33 -36 62c-10 22 -16 31 -26 42c-29 31 -63 54 -150 100c-35 18 -68 36 -73 39c-14 9 -36 17 -46 17c-5 0 -19 -4 -31 -9
-c-25 -10 -61 -17 -144 -30c-29 -5 -53 -9 -54 -9c-3 -3 -2 -38 1 -62c7 -50 24 -108 42 -142c9 -18 10 -29 4 -39c-5 -8 -27 -28 -34 -31c-9 -4 -12 -25 -11 -72c0 -33 0 -38 6 -57c9 -29 14 -67 13 -106l-1 -32l86 -65c112 -84 134 -100 153 -111c9 -5 24 -15 34 -22
-c16 -12 21 -15 21 -13zM1392 530c61 4 104 12 148 30l26 11v13c1 12 -2 47 -4 49c0 1 -6 -1 -10 -3c-22 -12 -53 -16 -74 -9c-34 12 -72 52 -86 90c-5 13 -5 18 -4 34s1 21 7 34c8 18 25 39 39 51c6 5 11 9 11 10s-3 3 -7 4c-4 2 -14 8 -22 14l-14 11l-19 -16
-c-10 -9 -37 -32 -61 -51c-70 -55 -85 -67 -114 -98c-24 -24 -29 -32 -36 -46c-7 -13 -6 -18 -4 -28c10 -26 42 -57 80 -77c44 -24 66 -28 144 -23zM1533 717c27 16 74 54 62 49c-2 -1 -9 -2 -16 -3c-15 -1 -28 5 -38 17c-6 8 -8 8 -15 6c-18 -5 -43 -23 -51 -36
-c-4 -7 -5 -9 -2 -15c1 -4 8 -12 14 -19c11 -11 12 -12 20 -11c5 1 17 6 26 12zM525 805c-4 36 -5 39 -38 113c-9 21 -11 22 -17 22c-8 0 -16 4 -23 11c-3 3 -13 28 -23 55c-13 36 -18 48 -19 46c-4 -5 -29 -57 -35 -72c-10 -27 -13 -43 -19 -90c-4 -25 -7 -48 -7 -50
-c0 -3 5 -4 15 -7c8 -2 18 -7 23 -10s14 -7 20 -11s16 -10 21 -13s24 -10 41 -16c23 -8 35 -14 47 -22l16 -11v11c0 6 0 26 -2 44zM210 969c12 6 27 21 27 26c0 1 -11 11 -24 23c-40 34 -56 64 -67 125c-5 27 -5 80 0 114c4 24 4 25 0 27c-14 9 -30 11 -43 4
-c-9 -4 -10 -7 -21 -30c-22 -47 -28 -86 -19 -114c10 -32 40 -90 75 -146c26 -41 40 -47 72 -29zM519 1007c20 5 27 8 36 14c2 2 2 6 -4 22c-12 30 -23 69 -29 103c-7 36 -7 79 -3 124c3 27 2 70 -1 73c-5 5 -72 -1 -79 -7c-4 -4 -6 -29 -3 -62c-2 -41 16 -99 14 -134
-c-2 -25 0 -32 22 -93c14 -39 16 -45 20 -45c2 0 15 2 27 5z" />
-    <glyph glyph-name="social-home" unicode="&#xf2ec;" horiz-adv-x="1486" 
-d="M491 894h482v-621h-482v621v0zM1050 538h341v-666h-341v666zM91 273v0v620h318v-620h-318zM975 -128h-882v326h882v-326v0zM1053 894h340v-279h-340v279zM1452 1109v0c20 -5 34 -22 34 -44c0 -26 -93 -93 -93 -93h-1300s-87 62 -92 83s5 42 25 51l624 292
-c16 9 99 9 112 0z" />
-    <glyph glyph-name="leanpub" unicode="&#xf212;" horiz-adv-x="2048" 
-d="M1893 1144l155 -1272c-93 0 -173 19 -257 57c-125 57 -255 91 -393 91c-142 0 -273 -47 -374 -148c-101 101 -232 148 -374 148c-138 0 -268 -34 -393 -91c-81 -36 -163 -57 -252 -57h-5l155 1272c143 81 317 127 482 127c135 0 274 -28 387 -106c113 78 252 106 387 106
-c165 0 339 -46 482 -127zM1398 157c190 0 320 -51 492 -122l-124 1021c-112 51 -245 78 -368 78c-140 0 -271 -44 -374 -141c-103 97 -234 141 -374 141c-123 0 -256 -27 -368 -78l-124 -1021c172 71 302 122 492 122c137 0 258 -35 374 -108c116 73 237 108 374 108z
-M1438 191l-40 1c-132 3 -261 -32 -374 -102c-113 70 -242 102 -374 102c-166 0 -299 -39 -450 -101l114 941c104 43 224 66 336 66c150 0 269 -48 374 -155c101 103 215 152 359 155z" />
-    <glyph glyph-name="arrow-circle-left" unicode="&#xf0a8;" 
-d="M1280 576v128c0 35 -29 64 -64 64h-502l189 189c12 12 19 28 19 45s-7 33 -19 45l-91 91c-12 12 -28 18 -45 18s-33 -6 -45 -18l-362 -362l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l91 -91l362 -362c12 -12 28 -18 45 -18s33 6 45 18l91 91c12 12 18 28 18 45
-s-6 33 -18 45l-189 189h502c35 0 64 29 64 64zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="exclamation-triangle" unicode="&#xf071;" horiz-adv-x="1792" 
-d="M1024 161v190c0 18 -14 33 -32 33h-192c-18 0 -32 -15 -32 -33v-190c0 -18 14 -33 32 -33h192c18 0 32 15 32 33zM1022 535l18 459c0 6 -3 14 -10 19c-6 5 -15 11 -24 11h-220c-9 0 -18 -6 -24 -11c-7 -5 -10 -15 -10 -21l17 -457c0 -13 15 -23 34 -23h185
-c18 0 33 10 34 23zM1008 1469l768 -1408c22 -39 21 -87 -2 -126s-65 -63 -110 -63h-1536c-45 0 -87 24 -110 63s-24 87 -2 126l768 1408c22 41 65 67 112 67s90 -26 112 -67z" />
-    <glyph glyph-name="gift" unicode="&#xf06b;" 
-d="M928 180v716h-320v-716c0 -35 29 -52 64 -52h192c35 0 64 17 64 52zM472 1024h195l-126 161c-11 13 -35 31 -69 31c-53 0 -96 -43 -96 -96s43 -96 96 -96zM1160 1120c0 53 -43 96 -96 96c-34 0 -58 -18 -69 -31l-125 -161h194c53 0 96 43 96 96zM1536 864v-320
-c0 -18 -14 -32 -32 -32h-96v-416c0 -53 -43 -96 -96 -96h-1088c-53 0 -96 43 -96 96v416h-96c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h440c-124 0 -224 100 -224 224s100 224 224 224c67 0 129 -28 168 -77l128 -165l128 165c39 49 101 77 168 77
-c124 0 224 -100 224 -224s-100 -224 -224 -224h440c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920" 
-d="M896 640c0 141 -115 256 -256 256s-256 -115 -256 -256s115 -256 256 -256s256 115 256 256zM1664 128c0 70 -58 128 -128 128s-128 -58 -128 -128c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1664 1152c0 70 -58 128 -128 128s-128 -58 -128 -128
-c0 -71 58 -128 128 -128c71 0 128 58 128 128zM1280 731v-185c0 -13 -10 -28 -23 -30l-155 -24c-8 -26 -19 -51 -32 -76c28 -40 58 -77 90 -115c4 -6 7 -12 7 -20c0 -7 -2 -14 -7 -19c-20 -27 -132 -149 -161 -149c-8 0 -15 3 -21 7l-115 90c-25 -13 -50 -23 -77 -31
-c-5 -51 -10 -106 -23 -155c-4 -14 -16 -24 -30 -24h-186c-14 0 -28 11 -30 25l-23 153c-26 8 -51 19 -75 31l-118 -89c-5 -5 -13 -7 -20 -7c-8 0 -15 3 -21 8c-26 24 -144 131 -144 160c0 7 3 13 7 19c29 38 59 75 88 114c-14 27 -26 54 -35 82l-152 24c-14 2 -24 15 -24 29
-v185c0 13 10 28 23 30l155 24c8 26 19 51 32 76c-28 40 -58 77 -90 115c-4 6 -7 13 -7 20s2 14 7 20c20 27 132 148 161 148c8 0 15 -3 21 -7l115 -90c25 13 50 23 77 32c5 50 10 105 23 154c4 14 16 24 30 24h186c14 0 28 -11 30 -25l23 -153c26 -8 51 -19 75 -31l118 89
-c6 5 13 7 20 7c8 0 15 -3 21 -8c26 -24 144 -132 144 -160c0 -7 -3 -13 -7 -19c-29 -39 -59 -75 -87 -114c13 -27 25 -54 34 -82l152 -23c14 -3 24 -16 24 -30zM1920 198v-140c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7
-c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52
-c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31zM1920 1222v-140
-c0 -15 -129 -29 -149 -31c-8 -19 -18 -36 -30 -52c9 -20 51 -120 51 -138c0 -3 -1 -5 -4 -7c-12 -7 -119 -71 -124 -71c-13 0 -88 100 -98 115c-10 -1 -20 -2 -30 -2s-20 1 -30 2c-10 -15 -85 -115 -98 -115c-5 0 -112 64 -124 71c-3 2 -4 5 -4 7c0 17 42 118 51 138
-c-12 16 -22 33 -30 52c-20 2 -149 16 -149 31v140c0 15 129 29 149 31c8 18 18 36 30 52c-9 20 -51 121 -51 138c0 2 1 5 4 7c12 6 119 70 124 70c13 0 88 -99 98 -114c10 1 20 2 30 2s20 -1 30 -2c28 39 58 78 92 112l6 2c5 0 112 -63 124 -70c3 -2 4 -5 4 -7
-c0 -18 -42 -118 -51 -138c12 -16 22 -34 30 -52c20 -2 149 -16 149 -31z" />
-    <glyph glyph-name="hackaday" unicode="&#xf30a;" horiz-adv-x="1686" 
-d="M215 1408c118 0 214 -95 215 -213v-2c0 -11 -1 -21 -3 -31l168 -149c-60 -45 -109 -106 -142 -178l-173 154c-21 -7 -42 -11 -65 -11c-119 0 -215 96 -215 215c0 14 1 28 4 42l138 -122l150 167l-134 120c18 5 37 8 57 8zM1247 436l162 -143c17 5 45 9 62 9v0
-c118 0 214 -95 215 -213v-2c0 -13 -2 -26 -4 -39l-139 123l-150 -166l140 -124c-20 -6 -41 -9 -62 -9c-119 0 -215 96 -215 215c0 12 1 24 3 35l-140 124c56 50 100 115 128 190zM1471 1408c20 0 39 -3 57 -8l-134 -120l150 -167l138 122c3 -14 4 -28 4 -42
-c0 -119 -96 -215 -215 -215c-23 0 -44 4 -65 11l-174 -154c-33 72 -81 133 -141 178l167 149c-2 10 -2 20 -2 31v2c1 118 97 213 215 213zM439 436v0c28 -75 71 -140 127 -190l-139 -124c2 -11 3 -23 3 -35c0 -119 -96 -215 -215 -215c-21 0 -42 3 -62 9l140 124l-150 166
-l-139 -123c-2 13 -4 26 -4 39v2c1 118 97 213 215 213v0c17 0 45 -4 62 -9zM843 1062c222 0 401 -199 401 -445c0 -153 -69 -288 -175 -368c8 -12 12 -26 12 -41c0 -42 -33 -76 -75 -76s-76 34 -76 76c0 4 0 8 1 12h-13c1 -3 0 -9 0 -12v0c0 -42 -33 -76 -75 -76
-s-76 34 -76 76c0 4 0 8 1 12h-10v-9c0 -43 -35 -79 -77 -79s-77 36 -77 79c0 15 4 28 11 40c-105 80 -173 214 -173 366c0 246 179 445 401 445zM670 730c-8 0 -15 -1 -22 -3c-28 -4 -52 -23 -69 -45c-15 -18 -26 -40 -26 -64c-2 -20 1 -39 5 -58c5 -23 21 -41 39 -54
-c8 -7 20 -16 31 -8c7 9 1 23 7 33c2 10 9 18 18 23c18 9 37 18 57 25c16 5 29 15 43 24c18 14 30 40 21 62c-10 18 -22 34 -39 46c-19 12 -42 19 -65 19zM1015 730c-23 0 -45 -7 -64 -19c-17 -12 -29 -28 -39 -46c-9 -22 3 -48 21 -62c14 -9 27 -19 43 -24
-c20 -7 38 -16 56 -25c9 -5 17 -13 19 -23c6 -10 0 -24 7 -33c11 -8 23 1 31 8c18 13 34 31 39 54c4 19 7 38 5 58c0 24 -11 46 -26 64c-17 22 -41 41 -69 45c-7 2 -15 3 -23 3zM844 502c-20 1 -44 -88 -40 -126c12 -51 16 36 40 36c23 -1 19 -88 37 -35
-c5 35 -16 124 -37 125z" />
-    <glyph glyph-name="frown-o" unicode="&#xf119;" 
-d="M1134 307c11 -34 -8 -69 -41 -80c-34 -11 -70 8 -81 42c-33 107 -132 179 -244 179s-211 -72 -244 -179c-11 -34 -47 -53 -80 -42c-34 11 -53 46 -42 80c50 161 197 269 366 269s316 -108 366 -269zM640 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128
-s128 -57 128 -128zM1152 896c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768
-s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="opera" unicode="&#xf26a;" horiz-adv-x="1792" 
-d="M1493 1308c-105 70 -228 110 -359 110c-213 0 -401 -109 -533 -273c-96 -120 -163 -290 -168 -484v-42c5 -194 72 -364 168 -484c132 -164 320 -273 533 -273c131 0 254 40 359 110c-158 -142 -368 -228 -597 -228c-14 0 -29 0 -43 1c-475 22 -853 414 -853 895
-c0 495 401 896 896 896h3c228 -1 436 -87 594 -228zM1792 640c0 -261 -112 -495 -290 -659c-68 -41 -143 -63 -222 -63c-92 0 -179 30 -255 84c203 74 353 331 353 638c0 306 -149 563 -352 638c76 53 162 83 254 83c81 0 157 -23 226 -65c176 -164 286 -397 286 -656z" />
-    <glyph glyph-name="viadeo" unicode="&#xf2a9;" horiz-adv-x="1278" 
-d="M1050 430c0 -143 -50 -269 -147 -374c-101 -110 -229 -161 -378 -161c-148 0 -277 50 -378 161c-97 105 -147 231 -147 374c0 297 224 540 525 540c62 0 124 -10 182 -31c-20 -39 -34 -82 -39 -126c-45 19 -94 28 -143 28c-227 0 -394 -194 -394 -414
-c0 -224 166 -407 394 -407s393 183 393 407c0 57 -10 113 -32 166c44 9 86 26 123 49c28 -67 41 -140 41 -212zM846 619c0 111 -19 221 -55 326c3 -34 3 -69 3 -103c0 -268 -53 -707 -342 -817c20 -3 41 -5 62 -5l14 1c216 136 318 346 318 598zM791 947v-2
-c-52 153 -124 301 -206 440c126 -85 195 -291 206 -438zM1035 744c-62 0 -117 33 -160 75c102 56 231 143 290 247c7 14 19 40 21 56c-58 -130 -206 -232 -344 -264c-22 34 -35 72 -35 113c0 48 24 112 60 147c41 39 102 59 157 74c80 22 145 84 180 159
-c52 -74 74 -164 74 -253c0 -45 -7 -127 -24 -170c-37 -90 -112 -184 -219 -184z" />
-    <glyph glyph-name="battery-empty" unicode="&#xf244;" horiz-adv-x="2304" 
-d="M2176 960c71 0 128 -57 128 -128v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160zM2176 448v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960
-c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288h128z" />
-    <glyph glyph-name="freedombox" unicode="&#xf2fd;" horiz-adv-x="1816" 
-d="M152 1274v0h10c90 -2 180 -36 272 -79c4 -2 11 -5 15 -7c7 -3 13 -7 20 -10c116 -58 199 -126 267 -210l3 -3c2 -2 4 -7 6 -9l-255 -148l9 -492l37 465l50 -29l10 -491l37 464l49 -29l10 -490l37 463l50 -29l9 -488l37 461l50 -29l10 -487l37 466l422 245l-267 155
-c2 3 5 5 7 8s5 6 7 9c70 83 157 151 278 208c101 48 200 86 296 86h9c45 -1 84 -15 110 -44c80 -92 -8 -177 -39 -293c-41 -155 6 -321 -118 -429c-43 -37 -93 -47 -143 -52c65 -77 103 -183 82 -292c-4 -21 -10 -42 -18 -61c-6 -17 -13 -32 -22 -47l-9 -15
-c-2 -2 -3 -5 -5 -7c-63 -94 -168 -154 -281 -161c-6 0 -11 -1 -17 -1h-9c-15 0 -39 3 -53 5c-19 3 -49 12 -67 19c-3 1 -7 2 -9 3c-69 29 -124 80 -159 143c-2 3 -4 5 -5 8c-2 3 -5 3 -7 0c-1 -3 -3 -5 -5 -8s-2 -5 -4 -8c-48 -81 -131 -140 -231 -157c-12 -2 -23 -3 -35 -4
-c-6 0 -12 -1 -18 -1c-169 -3 -327 118 -361 292c-21 109 18 215 83 292c-50 5 -101 15 -144 52c-124 108 -78 274 -119 429c-31 116 -118 201 -38 293c26 29 65 43 110 44h9z" />
-    <glyph glyph-name="file-epub" unicode="&#xf321;" 
-d="M723 132l458 458l70 -71c24 -24 24 -64 0 -88l-483 -483c-24 -24 -65 -24 -89 0l-483 483c-24 24 -24 64 0 88l483 484c24 24 65 24 89 0l298 -299l-343 -343l-114 114l229 229l-115 114l-343 -343zM1468 1156c37 -37 68 -111 68 -164v-1152c0 -53 -43 -96 -96 -96h-1344
-c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h896c53 0 127 -31 164 -68zM1024 1400v-376h376c-6 17 -15 34 -22 41l-313 313c-7 7 -24 16 -41 22zM1408 -128v1024h-416c-53 0 -96 43 -96 96v416h-768v-1536h1280z" />
-    <glyph glyph-name="chevron-circle-left" unicode="&#xf137;" 
-d="M909 141l102 102c25 25 25 65 0 90l-307 307l307 307c25 25 25 65 0 90l-102 102c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l454 -454c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792" 
-d="M256 96v-192c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v192c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM640 224v-320c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1024 480v-576c0 -18 -14 -32 -32 -32h-192
-c-18 0 -32 14 -32 32v576c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1408 864v-960c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v960c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 1376v-1472c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1472
-c0 18 14 32 32 32h192c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792" 
-d="M1792 288v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192h-512v-192h96c53 0 96 -43 96 -96v-320
-c0 -53 -43 -96 -96 -96h-320c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h96v192c0 70 58 128 128 128h512v192h-96c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h320c53 0 96 -43 96 -96v-320c0 -53 -43 -96 -96 -96h-96v-192h512c70 0 128 -58 128 -128v-192h96
-c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="wheelchair-alt" unicode="&#xf29b;" horiz-adv-x="1399" 
-d="M1370 723c21 -22 32 -52 29 -82l-44 -551c-5 -56 -51 -98 -106 -98c-3 0 -6 0 -9 1c-59 4 -102 56 -98 114l35 429l-143 -8c35 -72 55 -154 55 -240c0 -144 -56 -275 -148 -372l-137 137c56 62 91 145 91 235c0 194 -157 351 -350 351c-91 0 -173 -35 -236 -92l-137 138
-c77 73 175 123 284 141l264 300l-149 87l-181 -161c-44 -40 -111 -36 -150 8s-35 111 8 150l239 213c34 31 84 36 124 12c487 -283 488 -283 488 -283c26 -15 41 -41 48 -68c10 -39 3 -83 -26 -117l-205 -232l371 20c31 2 61 -9 83 -32zM1172 1180c-98 0 -178 79 -178 178
-c0 98 80 178 178 178c99 0 179 -80 179 -178c0 -99 -80 -178 -179 -178zM545 -62c72 0 140 23 196 61l139 -139c-92 -73 -209 -116 -335 -116c-301 0 -545 244 -545 544c0 127 43 243 116 336l139 -139c-38 -56 -60 -124 -60 -197c0 -193 157 -350 350 -350z" />
-    <glyph glyph-name="external-link-square" unicode="&#xf14c;" 
-d="M1280 608v480c0 35 -29 64 -64 64h-480c-26 0 -49 -16 -59 -39c-10 -24 -5 -52 14 -70l144 -144l-534 -534c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l534 534l144 -144c12 -13 28 -19 45 -19c8 0 17 2 25 5c23 10 39 33 39 59zM1536 1120v-960
-c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="google" unicode="&#xf1a0;" horiz-adv-x="1505" 
-d="M768 750h725c7 -39 12 -77 12 -128c0 -438 -294 -750 -737 -750c-425 0 -768 343 -768 768s343 768 768 768c207 0 381 -76 515 -201l-209 -201c-57 55 -157 119 -306 119c-262 0 -476 -217 -476 -485s214 -485 476 -485c304 0 418 218 436 331h-436v264z" />
-    <glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="768" 
-d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1576" 
-d="M1576 1128c-44 -64 -99 -121 -162 -167c1 -14 1 -28 1 -42c0 -427 -325 -919 -919 -919c-183 0 -353 53 -496 145c26 -3 51 -4 78 -4c151 0 290 51 401 138c-142 3 -261 96 -302 224c20 -3 40 -5 61 -5c29 0 58 4 85 11c-148 30 -259 160 -259 317v4
-c43 -24 93 -39 146 -41c-87 58 -144 157 -144 269c0 60 16 115 44 163c159 -196 398 -324 666 -338c-5 24 -8 49 -8 74c0 178 144 323 323 323c93 0 177 -39 236 -102c73 14 143 41 205 78c-24 -75 -75 -138 -142 -178c65 7 128 25 186 50z" />
-    <glyph glyph-name="battery-full" unicode="&#xf240;" horiz-adv-x="2304" 
-d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288c0 18 -14 32 -32 32h-1856c-18 0 -32 -14 -32 -32v-960c0 -18 14 -32 32 -32h1856c18 0 32 14 32 32v288zM2304 832v-384c0 -71 -57 -128 -128 -128v-160c0 -88 -72 -160 -160 -160h-1856
-c-88 0 -160 72 -160 160v960c0 88 72 160 160 160h1856c88 0 160 -72 160 -160v-160c71 0 128 -57 128 -128z" />
-    <glyph glyph-name="deaf" unicode="&#xf2a4;" horiz-adv-x="1792" 
-d="M1056 704c0 124 -101 224 -224 224s-224 -100 -224 -224c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 194 158 352 352 352s352 -158 352 -352c0 -35 -29 -64 -64 -64s-64 29 -64 64zM835 1280c318 0 576 -258 576 -576c0 -166 -78 -255 -146 -334
-c-63 -72 -113 -129 -113 -242c0 -212 -172 -384 -384 -384c-35 0 -64 29 -64 64s29 64 64 64c141 0 256 115 256 256c0 161 77 249 144 326c62 71 115 132 115 250c0 247 -201 448 -448 448s-448 -201 -448 -448c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 318 258 576 576 576
-zM591 561l226 -226l-579 -579c-16 -16 -42 -16 -58 0l-168 168c-16 16 -16 42 0 58zM1612 1524l168 -168c16 -16 16 -42 0 -59l-233 -233l-26 -25l-71 -71c-43 100 -109 188 -195 258l91 91l207 207c17 16 43 16 59 0z" />
-    <glyph glyph-name="window-close-o" unicode="&#xf2d4;" horiz-adv-x="1792" 
-d="M1257 425l-146 -146c-13 -13 -33 -13 -46 0l-169 169l-169 -169c-13 -13 -33 -13 -46 0l-146 146c-13 13 -13 33 0 46l169 169l-169 169c-13 13 -13 33 0 46l146 146c13 13 33 13 46 0l169 -169l169 169c13 13 33 13 46 0l146 -146c13 -13 13 -33 0 -46l-169 -169
-l169 -169c13 -13 13 -33 0 -46zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408" 
-d="M1408 296c0 -36 -16 -106 -31 -139c-21 -49 -77 -81 -122 -106c-59 -32 -119 -51 -186 -51c-93 0 -177 38 -262 69c-61 22 -120 49 -175 83c-170 105 -375 310 -480 480c-34 55 -61 114 -83 175c-31 85 -69 169 -69 262c0 67 19 127 51 186c25 45 57 101 106 122
-c33 15 103 31 139 31c7 0 14 0 21 -3c21 -7 43 -56 53 -76c32 -57 63 -115 96 -171c16 -26 46 -58 46 -89c0 -61 -181 -150 -181 -204c0 -27 25 -62 39 -86c101 -182 227 -308 409 -409c24 -14 59 -39 86 -39c54 0 143 181 204 181c31 0 63 -30 89 -46
-c56 -33 114 -64 171 -96c20 -10 69 -32 76 -53c3 -7 3 -14 3 -21z" />
-    <glyph glyph-name="mars-double" unicode="&#xf227;" horiz-adv-x="1920" 
-d="M1536 1120c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -243 -240 -434 -484 -468c-286 -40 -539 131 -626 380c-316 16 -565 288 -544 613c18 274 235 502 508 533
-c161 19 311 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c40 -50 71 -107 93 -169c124 -6 237 -52 328 -124l255 254h-134c-18 0 -32 14 -32 32v64z
-M1024 704c0 20 -2 39 -4 58c-215 -33 -380 -218 -380 -442c0 -20 2 -39 4 -58c215 33 380 218 380 442zM128 704c0 -226 169 -413 387 -443c-2 19 -3 39 -3 59c0 282 204 517 473 566c-70 157 -227 266 -409 266c-247 0 -448 -201 -448 -448zM1088 -128
-c247 0 448 201 448 448c0 226 -169 413 -387 443c2 -19 3 -39 3 -59c0 -282 -204 -517 -473 -566c70 -157 227 -266 409 -266z" />
-    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1755" 
-d="M1745 763l-164 -763h-334l178 832c8 35 3 67 -15 88c-17 21 -47 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276c135 0 258 -56 337 -154c80 -98 109 -231 81 -363z" />
-    <glyph glyph-name="hand-peace-o" unicode="&#xf25b;" 
-d="M1288 889c37 0 74 -7 107 -23c96 -43 141 -122 141 -226v-177c0 -63 -8 -126 -23 -186l-85 -339c-28 -114 -130 -194 -248 -194h-668c-141 0 -256 115 -256 256v401l-239 628c-11 29 -17 60 -17 91c0 141 115 256 256 256c106 0 202 -66 239 -165l17 -44v113
-c0 141 115 256 256 256s256 -115 256 -256v-261c16 3 32 5 48 5c92 0 176 -53 216 -135zM1072 896c-44 0 -84 -26 -102 -66l-74 -163l-71 -155h55c67 0 126 -47 140 -112l154 338c7 14 10 30 10 46c0 62 -50 112 -112 112zM1293 761c-76 0 -100 -61 -127 -121l-132 -290
-c-7 -14 -10 -30 -10 -46c0 -62 50 -112 112 -112c44 0 84 26 102 66l160 352c5 10 9 26 9 38c0 67 -48 113 -114 113zM128 1120c0 -16 3 -31 8 -46l248 -650v-69l102 111c27 29 66 46 106 46h198l106 233v535c0 71 -57 128 -128 128s-128 -57 -128 -128v-640h-64l-200 526
-c-19 49 -67 82 -120 82c-71 0 -128 -58 -128 -128zM1180 -128c59 0 110 40 124 97l85 339c13 50 19 103 19 155v91l-141 -310c-23 -51 -75 -84 -131 -84c-70 0 -131 51 -142 121c-27 -35 -69 -57 -114 -57h-208v32h208c61 0 116 50 116 112c0 61 -46 112 -108 112h-296
-c-31 0 -61 -13 -82 -36l-126 -136v-308c0 -71 57 -128 128 -128h668z" />
-    <glyph glyph-name="envira" unicode="&#xf299;" horiz-adv-x="1792" 
-d="M896 720c-127 240 -244 474 -577 632c-199 94 -21 -37 -21 -37c181 -125 264 -294 361 -479c126 -241 316 -559 577 -671c260 -112 137 -50 24 34c-113 85 -273 348 -364 521zM549 177c-361 286 -341 628 -549 1359c1911 0 1467 -1269 1469 -1465l323 -327h-104l-281 285
-c-156 -17 -498 -138 -858 148z" />
-    <glyph glyph-name="lastfm-square" unicode="&#xf203;" 
-d="M1432 484c0 141 -114 205 -234 239c-55 15 -100 28 -120 88c-1 5 -6 24 -6 28c0 48 38 83 85 83c22 0 53 1 71 -15h-1c19 -14 28 -30 39 -51l93 71c-15 21 -30 46 -49 64c-47 42 -91 49 -153 49c-105 0 -204 -86 -204 -195c0 -8 1 -15 2 -23c22 -136 91 -178 213 -213
-c60 -17 145 -44 146 -118v-5c1 -80 -66 -128 -141 -128c-82 0 -135 78 -167 144c-116 239 -134 538 -478 538c-207 0 -393 -191 -386 -396v-1c7 -214 154 -403 380 -403c107 0 207 25 279 110c12 16 23 33 31 51l-60 109c-56 -106 -125 -152 -245 -152
-c-158 0 -267 140 -267 291c0 139 128 273 268 273c160 0 218 -83 274 -226c67 -172 139 -456 371 -456c139 0 259 101 259 244zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1612" 
-d="M1382 544v-480c0 -35 -29 -64 -64 -64h-384v384h-256v-384h-384c-35 0 -64 29 -64 64v480c0 2 1 4 1 6l575 474l575 -474c1 -2 1 -4 1 -6zM1605 613l-62 -74c-5 -6 -13 -10 -21 -11h-3c-8 0 -15 2 -21 7l-692 577l-692 -577c-7 -5 -15 -8 -24 -7c-8 1 -16 5 -21 11
-l-62 74c-11 13 -9 34 4 45l719 599c42 35 110 35 152 0l244 -204v195c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-408l219 -182c13 -11 15 -32 4 -45z" />
-    <glyph glyph-name="empire" unicode="&#xf1d1;" horiz-adv-x="1792" 
-d="M874 -102v-66c-282 8 -529 160 -668 385l58 34c21 -35 46 -68 73 -99l65 57c94 -107 222 -183 368 -212l-17 -86c39 -7 80 -12 121 -13zM276 428l-83 -28c14 -39 30 -76 49 -112l-57 -33c-62 114 -98 246 -98 385s36 271 98 385l57 -33c-19 -35 -36 -73 -49 -112l82 -28
-c-23 -66 -35 -138 -35 -212s13 -146 36 -212zM1528 251l58 -34c-139 -225 -386 -377 -668 -385v66c41 1 82 6 121 13l-17 86c146 29 274 105 368 212l65 -57c27 31 52 64 73 99zM1377 805l-233 -80c9 -27 14 -55 14 -85s-5 -58 -14 -85l232 -80c-21 -63 -55 -120 -98 -169
-l-185 162c-37 -43 -88 -73 -147 -85l48 -241c-31 -6 -64 -10 -98 -10s-67 4 -98 10l48 241c-59 12 -110 42 -147 85l-185 -162c-43 49 -77 106 -98 169l232 80c-9 27 -14 55 -14 85s5 58 14 85l-233 80c22 63 56 120 99 169l185 -162c37 43 88 74 147 86l-48 240
-c31 7 64 10 98 10s67 -3 98 -10l-48 -240c59 -12 110 -43 147 -86l185 162c43 -49 77 -106 99 -169zM874 1448v-66c-41 -1 -82 -5 -121 -13l17 -86c-146 -28 -274 -104 -368 -211l-65 56c-27 -30 -51 -63 -73 -98l-57 33c139 226 385 377 667 385zM1705 640
-c0 -139 -36 -271 -98 -385l-57 33c19 36 35 73 49 112l-83 28c23 66 36 138 36 212s-12 146 -35 212l82 28c-13 39 -30 77 -49 112l57 33c62 -114 98 -246 98 -385zM1585 1063l-57 -33c-22 35 -46 68 -73 98l-65 -56c-94 107 -222 183 -368 211l17 86c-39 8 -80 12 -121 13
-v66c282 -8 528 -159 667 -385zM1748 640c0 470 -382 852 -852 852s-852 -382 -852 -852s382 -852 852 -852s852 382 852 852zM1792 640c0 -495 -401 -896 -896 -896s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="server" unicode="&#xf233;" horiz-adv-x="1792" 
-d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM128 1152h1024v128h-1024v-128zM1696 704c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1696 1216
-c0 53 -43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96s96 43 96 96zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
-    <glyph glyph-name="inkscape" unicode="&#xf312;" 
-d="M755 1398v0c47 0 95 -17 131 -52l588 -601c234 -234 -259 -288 -401 -371c-50 -51 153 -85 132 -147c-42 -126 -157 -45 -280 -171c-50 -51 95 -46 45 -97c-93 -68 -285 -115 -300 -32c-21 117 -135 68 -185 119s101 104 51 155s-299 97 -349 148s191 88 141 139
-c-138 68 -461 41 -269 278l567 580c34 35 82 52 129 52zM760 1343v0c-34 0 -68 -13 -93 -38c-49 -50 -140 -138 -219 -223c-45 -45 -40 -109 10 -109h123l80 139l49 -199l149 95l93 -49l22 131l111 -89c12 12 12 54 -9 76l-224 228c-24 25 -58 38 -92 38zM491 456
-c-74 0 219 -119 279 -103c27 14 40 34 21 38c-56 9 -285 56 -300 65zM1390 297c43 -1 86 -22 100 -63c0 -54 -212 -36 -212 -7c13 47 63 71 112 70zM409 172c26 0 50 -8 64 -26c-23 -61 -101 -115 -151 -72c-57 50 21 99 87 98zM1251 168c71 -14 85 -65 71 -79
-c-64 -38 -136 21 -71 79z" />
-    <glyph glyph-name="search-minus" unicode="&#xf010;" horiz-adv-x="1664" 
-d="M1024 736v-64c0 -17 -15 -32 -32 -32h-576c-17 0 -32 15 -32 32v64c0 17 15 32 32 32h576c17 0 32 -15 32 -32zM1152 704c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1664 -128c0 -71 -57 -128 -128 -128c-34 0 -67 14 -90 38
-l-343 342c-117 -81 -257 -124 -399 -124c-389 0 -704 315 -704 704s315 704 704 704s704 -315 704 -704c0 -142 -43 -282 -124 -399l343 -343c23 -23 37 -56 37 -90z" />
-    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792" 
-d="M1280 832c0 35 -29 64 -64 64c-354 0 -582 -148 -813 -403c-12 -13 -19 -27 -19 -45c0 -35 29 -64 64 -64c18 0 32 7 45 19c49 44 93 92 141 137c181 163 336 228 582 228c35 0 64 29 64 64zM1792 1030c0 -64 -7 -129 -20 -193c-64 -311 -264 -513 -542 -651
-c-135 -68 -286 -108 -438 -108c-96 0 -195 16 -286 47c-48 16 -144 79 -184 79c-50 0 -110 -204 -197 -204c-63 0 -82 31 -109 77c-9 17 -16 23 -16 44c0 104 198 185 198 243c0 9 -26 62 -30 82c-6 34 -9 69 -9 104c0 318 253 545 537 639c205 68 641 -11 780 121
-c55 51 82 98 166 98c113 0 150 -293 150 -378z" />
-    <glyph glyph-name="envelope-open-o" unicode="&#xf2b7;" horiz-adv-x="1792" 
-d="M1474 623l39 -51c11 -14 8 -33 -5 -44c-100 -78 -330 -255 -340 -263c-71 -58 -167 -138 -271 -137h-2c-104 0 -200 79 -271 137c-11 9 -233 180 -331 256c-14 11 -17 30 -6 44l37 52c11 15 32 18 46 6c68 -53 164 -127 306 -236c50 -38 149 -131 219 -131h2
-c70 0 169 93 219 131c147 113 245 188 313 242c14 11 34 8 45 -6zM1664 -96v928c-100 93 -85 85 -548 443c-50 39 -149 133 -219 133h-2c-70 0 -169 -94 -219 -133c-463 -358 -448 -350 -548 -443v-928c0 -17 15 -32 32 -32h1472c17 0 32 15 32 32zM1792 832v-928
-c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v928c0 36 15 70 41 94c205 190 441 355 583 472c70 58 167 138 271 138h2c104 0 201 -80 271 -138c132 -109 383 -286 583 -472c26 -24 41 -58 41 -94z" />
-    <glyph glyph-name="exclamation-circle" unicode="&#xf06a;" 
-d="M768 1408c424 0 768 -344 768 -768s-344 -768 -768 -768s-768 344 -768 768s344 768 768 768zM896 161v190c0 18 -14 33 -31 33h-192c-18 0 -33 -15 -33 -33v-190c0 -18 15 -33 33 -33h192c17 0 31 15 31 33zM894 505l18 621c0 7 -3 14 -10 18c-6 5 -15 8 -24 8h-220
-c-9 0 -18 -3 -24 -8c-7 -4 -10 -11 -10 -18l17 -621c0 -14 15 -25 34 -25h185c18 0 33 11 34 25z" />
-    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792" 
-d="M1408 768c0 -283 -315 -512 -704 -512c-61 0 -120 6 -176 16c-83 -59 -177 -102 -278 -128c-27 -7 -56 -12 -86 -16h-3c-15 0 -29 12 -32 29c-4 19 9 31 20 44c39 44 83 83 117 166c-162 94 -266 239 -266 401c0 283 315 512 704 512s704 -229 704 -512zM1792 512
-c0 -163 -104 -307 -266 -401c34 -83 78 -122 117 -166c11 -13 24 -25 20 -44c-4 -18 -19 -31 -35 -29c-30 4 -59 9 -86 16c-101 26 -195 69 -278 128c-56 -10 -115 -16 -176 -16c-181 0 -347 50 -472 132c29 -2 59 -4 88 -4c215 0 418 62 573 174c167 122 259 287 259 466
-c0 52 -8 103 -23 152c169 -93 279 -241 279 -408z" />
-    <glyph glyph-name="moon" unicode="&#xf328;" horiz-adv-x="1471" 
-d="M1465 318c-125 -271 -399 -446 -697 -446c-423 0 -768 345 -768 768c0 415 325 752 739 767c28 1 51 -15 61 -39c11 -25 4 -54 -15 -72c-114 -104 -177 -246 -177 -400c0 -300 244 -544 544 -544c79 0 155 17 228 51c25 11 53 6 72 -13s24 -48 13 -72z" />
-    <glyph glyph-name="facebook-official" unicode="&#xf230;" 
-d="M1451 1408c47 0 85 -38 85 -85v-1366c0 -47 -38 -85 -85 -85h-391v595h199l30 232h-229v148c0 67 18 112 115 112l122 1v207c-21 3 -94 9 -178 9c-177 0 -299 -108 -299 -306v-171h-200v-232h200v-595h-735c-47 0 -85 38 -85 85v1366c0 47 38 85 85 85h1366z" />
-    <glyph glyph-name="clock-o" unicode="&#xf017;" 
-d="M896 992v-448c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h224v352c0 18 14 32 32 32h64c18 0 32 -14 32 -32zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544s544 244 544 544zM1536 640
-c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="caret-square-o-left" unicode="&#xf191;" 
-d="M1024 960v-640c0 -35 -29 -64 -64 -64c-13 0 -26 4 -37 12l-448 320c-17 12 -27 31 -27 52c0 20 10 40 27 52l448 320c11 8 24 12 37 12c35 0 64 -29 64 -64zM1280 160v960c0 17 -15 32 -32 32h-960c-17 0 -32 -15 -32 -32v-960c0 -17 15 -32 32 -32h960
-c17 0 32 15 32 32zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="hand-scissors-o" unicode="&#xf257;" horiz-adv-x="1792" 
-d="M1073 -128h-177c-104 0 -183 45 -226 141c-15 32 -23 67 -23 102v5c-82 40 -135 124 -135 216c0 11 0 38 5 48h-261c-141 0 -256 115 -256 256s115 256 256 256h113l-44 17c-99 37 -165 133 -165 239c0 141 115 256 256 256c31 0 62 -6 91 -17l628 -239h401
-c141 0 256 -115 256 -256v-668c0 -118 -80 -220 -194 -248l-339 -85c-60 -15 -123 -23 -186 -23zM1024 583l-155 -71l-163 -74c-40 -18 -66 -58 -66 -102c0 -62 50 -112 112 -112c16 0 32 3 46 10l338 154c-65 14 -112 73 -112 140v55zM1344 272c0 62 -50 112 -112 112
-c-16 0 -32 -3 -46 -10l-290 -132c-60 -27 -121 -51 -121 -127c0 -66 46 -114 113 -114c12 0 28 4 38 9l352 160c40 18 66 58 66 102zM1112 1024l-650 248c-15 5 -30 8 -46 8c-70 0 -128 -57 -128 -128c0 -53 33 -101 82 -120l526 -200v-64h-640c-71 0 -128 -57 -128 -128
-s57 -128 128 -128h535l233 106v198c0 40 17 79 46 106l111 102h-69zM1073 0c52 0 105 6 155 19l339 85c57 14 97 65 97 124v668c0 71 -57 128 -128 128h-308l-136 -126c-23 -21 -36 -51 -36 -82v-296c0 -62 51 -108 112 -108c62 0 112 55 112 116v208h32v-208
-c0 -45 -22 -87 -57 -114c70 -11 121 -72 121 -142c0 -56 -33 -108 -84 -131l-310 -141h91z" />
-    <glyph glyph-name="tumblr-square" unicode="&#xf174;" 
-d="M1136 75l-62 183c-24 -12 -69 -22 -103 -22c-102 -3 -123 71 -123 126v398h257v194h-256v326h-188c-3 0 -8 -3 -9 -10c-11 -99 -58 -275 -252 -345v-165h130v-418c0 -143 105 -347 384 -342c94 2 199 41 222 75zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960
-c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280" 
-d="M1043 971c0 134 -95 224 -236 224h-320v-448h320c141 0 236 90 236 224zM1280 971c0 -257 -186 -437 -453 -437h-340v-118h505c18 0 32 -14 32 -32v-128c0 -18 -14 -32 -32 -32h-505v-192c0 -18 -14 -32 -32 -32h-167c-18 0 -32 14 -32 32v192h-224c-18 0 -32 14 -32 32
-v128c0 18 14 32 32 32h224v118h-224c-18 0 -32 14 -32 32v149c0 18 14 32 32 32h224v629c0 18 14 32 32 32h539c267 0 453 -180 453 -437z" />
-    <glyph glyph-name="chevron-circle-up" unicode="&#xf139;" 
-d="M1165 397l102 102c25 25 25 65 0 90l-454 454c-25 25 -65 25 -90 0l-454 -454c-25 -25 -25 -65 0 -90l102 -102c25 -25 65 -25 90 0l307 307l307 -307c25 -25 65 -25 90 0zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z
-" />
-    <glyph glyph-name="opencart" unicode="&#xf23d;" horiz-adv-x="2304" 
-d="M1524 -25c0 -91 -73 -164 -164 -164s-165 73 -165 164s74 165 165 165s164 -74 164 -165zM775 -25c0 -91 -74 -164 -165 -164s-164 73 -164 164s73 165 164 165s165 -74 165 -165zM0 1469c295 -311 572 -357 1660 -357s610 -242 -62 -842c213 370 945 698 -255 680
-c-1151 -17 -1219 333 -1343 519z" />
-    <glyph glyph-name="artstation" unicode="&#xf2ed;" horiz-adv-x="1533" 
-d="M601 1277v0h267c51 0 112 -37 136 -83l504 -878c16 -24 25 -53 25 -84c0 -35 -7 -53 -31 -94l-123 -213zM474 1058l348 -604h-695zM0 233v0h949l178 -309h-859c-53 0 -114 38 -138 85h-1z" />
-    <glyph glyph-name="thumbs-up" unicode="&#xf164;" horiz-adv-x="1600" 
-d="M256 192c0 35 -29 64 -64 64c-36 0 -64 -29 -64 -64c0 -36 28 -64 64 -64c35 0 64 28 64 64zM416 704v-640c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64zM1600 704c0 -53 -21 -110 -55 -149c11 -32 15 -62 15 -76
-c2 -50 -13 -97 -43 -137c11 -37 11 -77 0 -117c-10 -37 -29 -70 -54 -94c6 -75 -11 -136 -49 -181c-43 -51 -109 -77 -197 -78h-129c-143 0 -278 47 -386 84c-63 22 -123 43 -158 44c-34 1 -64 29 -64 64v641c0 33 28 61 61 64c37 3 133 122 177 180c36 46 70 89 101 120
-c39 39 50 99 62 157c11 59 23 121 66 163c12 12 28 19 45 19c224 0 224 -179 224 -256c0 -82 -29 -140 -56 -192c-11 -22 -21 -32 -29 -64h277c104 0 192 -88 192 -192z" />
-    <glyph glyph-name="vimeo-square" unicode="&#xf194;" 
-d="M1292 898c7 145 -47 218 -161 222c-154 5 -258 -82 -312 -261c28 12 55 19 82 19c56 0 81 -32 74 -96c-3 -38 -28 -94 -74 -167c-47 -74 -82 -110 -105 -110c-30 0 -56 56 -82 169c-8 34 -23 118 -45 255c-20 126 -73 185 -160 177c-36 -4 -92 -36 -164 -100
-c-54 -47 -107 -96 -162 -144l52 -67c50 34 79 52 87 52c38 0 74 -60 107 -179c30 -110 60 -219 90 -329c45 -119 99 -179 164 -179c104 0 232 98 383 294c146 188 222 336 226 444zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960
-c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="arrow-circle-right" unicode="&#xf0a9;" 
-d="M1285 640c0 17 -6 33 -18 45l-91 91l-362 362c-12 12 -28 18 -45 18s-33 -6 -45 -18l-91 -91c-12 -12 -18 -28 -18 -45s6 -33 18 -45l189 -189h-502c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h502l-189 -189c-12 -12 -19 -28 -19 -45s7 -33 19 -45l91 -91
-c12 -12 28 -18 45 -18s33 6 45 18l362 362l91 91c12 12 18 28 18 45zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896" 
-d="M885 970c11 -12 14 -29 7 -44l-540 -1157c-8 -15 -24 -25 -42 -25c-4 0 -9 1 -14 2c-22 7 -35 28 -30 49l197 808l-406 -101c-4 -1 -8 -1 -12 -1c-11 0 -23 4 -31 11c-12 10 -16 25 -13 39l201 825c5 19 23 32 44 32h328c25 0 45 -19 45 -42c0 -6 -2 -12 -5 -18
-l-171 -463l396 98c4 1 8 2 12 2c13 0 25 -6 34 -15z" />
-    <glyph glyph-name="thermometer-quarter" unicode="&#xf2ca;" horiz-adv-x="1024" 
-d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v139h128v-139c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
-s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
-" />
-    <glyph glyph-name="hdd-o" unicode="&#xf0a0;" 
-d="M1040 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1296 320c0 -44 -36 -80 -80 -80s-80 36 -80 80s36 80 80 80s80 -36 80 -80zM1408 160v320c0 17 -15 32 -32 32h-1216c-17 0 -32 -15 -32 -32v-320c0 -17 15 -32 32 -32h1216c17 0 32 15 32 32
-zM178 640h1180l-157 482c-5 17 -24 30 -42 30h-782c-18 0 -37 -13 -42 -30zM1536 480v-320c0 -88 -72 -160 -160 -160h-1216c-88 0 -160 72 -160 160v320c0 27 8 50 16 75l197 606c23 70 90 119 164 119h782c74 0 141 -49 164 -119l197 -606c8 -25 16 -48 16 -75z" />
-    <glyph glyph-name="id-card-o" unicode="&#xf2c3;" horiz-adv-x="2048" 
-d="M896 324c0 -73 -48 -132 -107 -132h-426c-59 0 -107 59 -107 132c0 132 32 284 164 284c40 -40 95 -64 156 -64s116 24 156 64c132 0 164 -152 164 -284zM768 768c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 352v-64
-c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1408 608v-64c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h320c18 0 32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-192
-c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h192c18 0 32 -14 32 -32zM1792 864v-64c0 -18 -14 -32 -32 -32h-704c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h704c18 0 32 -14 32 -32zM1920 32v1120h-1792v-1120c0 -17 15 -32 32 -32h1728c17 0 32 15 32 32zM2048 1248v-1216
-c0 -88 -72 -160 -160 -160h-1728c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1728c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="plug" unicode="&#xf1e6;" horiz-adv-x="1792" 
-d="M1755 1083c49 -50 49 -131 0 -181l-401 -400l150 -150l-160 -160c-219 -219 -553 -250 -801 -86l-362 -362h-181v181l362 362c-164 248 -133 582 86 801l160 160l150 -150l400 401c50 49 131 49 181 0c50 -50 50 -132 0 -181l-400 -401l234 -234l401 400
-c50 50 131 50 181 0z" />
-    <glyph glyph-name="react" unicode="&#xf302;" horiz-adv-x="1755" 
-d="M1434 910v0c187 -64 321 -165 321 -269c0 -109 -143 -215 -341 -280c-11 -3 -21 -7 -32 -10c3 -13 7 -33 10 -46c39 -197 10 -360 -83 -413c-89 -52 -235 -1 -382 125c-16 14 -31 28 -46 43c-12 -12 -24 -22 -36 -33c-152 -133 -307 -187 -400 -134
-c-90 52 -118 203 -82 393c4 21 9 40 14 61c-16 4 -32 10 -47 15c-190 65 -330 172 -330 279c0 104 131 205 314 268c20 7 42 14 64 20c-5 19 -9 38 -13 57c-38 193 -11 348 79 400c94 55 250 -3 406 -142c8 -7 21 -20 29 -27c14 13 28 27 43 40c149 130 296 184 386 132
-c94 -54 121 -219 79 -423c-3 -13 -6 -25 -9 -38c15 -5 41 -13 56 -18zM970 1201v0c-14 -12 -27 -23 -40 -36c53 -57 101 -118 146 -182c77 -7 155 -20 231 -37c3 11 5 23 7 35c36 177 15 311 -43 344c-54 31 -173 -13 -301 -124zM524 553c-22 -52 -41 -104 -56 -153
-c52 -11 106 -19 159 -25c-19 29 -37 59 -54 89c-17 29 -33 59 -49 89zM524 726c15 30 32 61 49 90s35 59 53 87c-55 -7 -108 -16 -157 -27c15 -48 33 -99 55 -150zM563 640v0c23 -47 48 -93 74 -139c22 -38 59 -98 84 -134c50 -3 103 -5 157 -5s107 2 158 6
-c29 44 57 87 83 133c22 38 55 101 74 140c-23 47 -49 94 -75 139c-22 37 -59 96 -83 132c-51 4 -104 6 -157 6s-107 -2 -158 -6c-29 -44 -57 -87 -83 -133s-51 -92 -74 -139zM1182 464c-17 -29 -34 -59 -53 -88c54 6 108 16 161 28c-17 52 -35 102 -57 152
-c-16 -31 -34 -62 -51 -92zM1232 726c21 49 39 98 55 149c-49 11 -102 21 -157 28c15 -24 38 -63 52 -87c17 -29 34 -60 50 -90zM878 1112v0c-34 -37 -68 -79 -102 -123c28 1 74 3 102 3s74 -2 102 -3c-32 43 -66 84 -102 123zM481 1322c-54 -31 -76 -156 -44 -322
-c4 -18 8 -36 12 -53c76 17 154 29 231 36c45 64 94 125 147 182c-9 8 -17 16 -26 24c-135 119 -262 167 -320 133zM397 419c24 75 52 149 85 221c-33 71 -61 144 -84 218c-20 -6 -40 -12 -60 -19c-156 -55 -264 -135 -264 -198c7 -41 29 -78 64 -102
-c60 -48 143 -84 216 -107c14 -5 29 -9 43 -13zM796 83c11 10 22 19 33 30c-53 58 -103 119 -148 183c-79 6 -156 18 -233 34c-5 -19 -8 -38 -12 -57c-31 -163 -9 -284 46 -316c39 -15 83 -13 121 5c71 28 136 69 193 121zM880 166c36 40 70 81 102 125
-c-34 -2 -69 -3 -104 -3c-34 0 -68 1 -101 2c34 -45 68 -86 103 -124zM1328 63c11 76 9 153 -8 227c-2 12 -6 31 -9 42c-64 -14 -169 -31 -234 -36c-44 -64 -93 -126 -145 -184c15 -14 30 -27 44 -39c125 -108 241 -149 296 -117c33 26 53 65 56 107zM1391 432
-c171 57 291 143 291 210c0 62 -112 144 -272 199c-16 5 -34 11 -52 16c-23 -74 -51 -146 -84 -216c34 -71 64 -143 88 -218c10 3 19 6 29 9zM878 797c87 0 157 -70 157 -157s-70 -157 -157 -157s-157 70 -157 157s70 157 157 157z" />
-    <glyph glyph-name="themeisle" unicode="&#xf2b2;" horiz-adv-x="1792" 
-d="M852 1227c0 -36 -23 -76 -62 -76c-40 0 -62 40 -62 76c0 35 22 76 62 76c39 0 62 -41 62 -76zM688 -149v114c0 39 -31 73 -71 73s-70 -34 -70 -73v-114c0 -39 30 -74 70 -74s71 34 71 74zM860 -149v114c0 39 -30 73 -70 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74
-s70 35 70 74zM1034 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 34 71 74zM1208 -149v114c0 39 -31 73 -71 73s-71 -34 -71 -73v-114c0 -39 31 -74 71 -74s71 35 71 74zM1476 535c-108 -207 -316 -359 -555 -359c-338 0 -562 296 -562 618
-c0 59 7 117 21 174c-70 -118 -104 -254 -104 -390c0 -211 87 -426 250 -563c18 34 52 57 91 57c35 0 68 -20 86 -50c19 30 51 50 87 50c35 0 68 -20 86 -50c19 30 52 50 87 50s68 -20 87 -50c18 30 51 50 86 50c38 0 73 -23 90 -56c152 127 240 322 250 519zM1326 564
-c0 50 -22 75 -72 75c-16 0 -32 -3 -47 -6c-50 -10 -99 -19 -149 -19c-158 0 -226 92 -226 243c0 69 13 137 30 204c-53 -81 -83 -178 -83 -275c0 -189 120 -371 324 -371c75 0 149 27 210 70c7 26 13 52 13 79zM884 1223c0 63 -44 129 -113 129s-113 -66 -113 -129
-c0 -64 44 -130 113 -130s113 66 113 130zM1513 884c0 188 -121 370 -324 370c-106 0 -205 -53 -276 -129c-25 -83 -48 -180 -48 -268c0 -133 53 -210 193 -210c48 0 95 9 142 19c18 3 35 6 53 6c69 0 104 -40 104 -108c0 -15 -1 -31 -4 -46c101 91 160 230 160 366z
-M1792 667c0 -126 -40 -358 -127 -454c-80 -87 -306 -214 -423 -247l-4 -1v-114c0 -57 -44 -107 -102 -107c-35 0 -68 20 -86 50c-19 -30 -52 -50 -87 -50s-68 20 -87 50c-18 -30 -51 -50 -86 -50c-36 0 -68 20 -87 50c-18 -30 -51 -50 -86 -50c-66 0 -103 55 -103 115
-c-57 -43 -125 -68 -198 -68c-77 0 -152 29 -211 80c36 1 72 8 106 20c-73 20 -138 66 -182 127c23 -5 47 -7 71 -7c58 0 115 16 164 46c-77 77 -198 206 -240 306c-20 47 -24 110 -24 160c0 174 71 560 302 560c37 0 66 -17 81 -52c13 19 27 37 42 54c7 9 20 19 25 29
-c28 44 41 74 76 119c113 144 286 243 472 243c21 0 42 -1 62 -4c38 41 91 64 146 64c51 0 104 -21 140 -57c3 -3 5 -8 5 -12c0 -13 -36 -47 -45 -57c15 -5 55 -24 55 -42c0 -10 -10 -18 -16 -25c110 -97 173 -235 197 -378c15 18 36 30 60 30c37 0 73 -25 100 -49
-c73 -65 90 -186 90 -279z" />
-    <glyph glyph-name="braille" unicode="&#xf2a1;" horiz-adv-x="2176" 
-d="M192 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM704 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
-M1472 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 352c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1472 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160z
-M1984 864c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM1984 1376c-88 0 -160 -72 -160 -160s72 -160 160 -160s160 72 160 160s-72 160 -160 160zM384 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
-M896 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z
-M384 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM896 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192
-zM2176 192c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1664 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 704c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192
-s192 -86 192 -192zM1664 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM2176 1216c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192z" />
-    <glyph glyph-name="industry" unicode="&#xf275;" horiz-adv-x="1792" 
-d="M448 1536c35 0 64 -29 64 -64v-891l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-379l536 429c11 9 26 14 40 14c35 0 64 -29 64 -64v-1152c0 -35 -29 -64 -64 -64h-1664c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h384z" />
-    <glyph glyph-name="map-o" unicode="&#xf278;" horiz-adv-x="2048" 
-d="M2020 1525c17 -12 28 -32 28 -53v-1408c0 -26 -16 -50 -40 -59l-640 -256c-16 -7 -32 -7 -48 0l-616 246l-616 -246c-8 -4 -16 -5 -24 -5c-13 0 -25 4 -36 11c-17 12 -28 32 -28 53v1408c0 26 16 50 40 59l640 256c16 7 32 7 48 0l616 -246l616 246c20 8 42 6 60 -6z
-M736 1390v-1270l576 -230v1270zM128 1173v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
-    <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792" 
-d="M514 341l81 299h-159l75 -300c1 -2 1 -4 2 -6c0 2 1 5 1 7zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299c1 -3 1 -5 2 -7c0 2 1 4 1 6zM1382 768l33 128h-297l34 -128h230zM1792 736v-64c0 -18 -14 -32 -32 -32h-213
-l-164 -616c-4 -14 -17 -24 -31 -24h-159c-14 0 -27 10 -31 24l-166 616h-209l-167 -616c-4 -14 -16 -24 -31 -24h-159c-14 0 -27 10 -30 24l-160 616h-208c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h175l-33 128h-142c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h109l-89 344
-c-3 10 -1 20 5 28c6 7 16 12 26 12h137c15 0 28 -10 31 -24l90 -360h359l97 360c4 14 17 24 31 24h126c15 0 27 -10 31 -24l98 -360h365l93 360c3 14 16 24 31 24h137c10 0 20 -5 26 -12c6 -8 8 -19 5 -28l-91 -344h111c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-145
-l-34 -128h179c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="joomla" unicode="&#xf1aa;" 
-d="M1070 463l-160 -160l-151 -152l-30 -30c-88 -87 -211 -117 -323 -89c-21 -92 -103 -160 -201 -160c-113 0 -205 92 -205 206c0 97 67 179 158 200c-29 113 1 237 89 325l12 12l151 -152l-11 -11c-50 -49 -49 -129 0 -179c49 -49 129 -49 178 0l30 30l151 152l161 160z
-M729 1145l12 -12l-152 -152l-12 12c-49 49 -129 49 -178 0s-49 -130 0 -179l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30c-92 91 -120 222 -85 339c-92 20 -160 102 -160 200c0 114 92 206 205 206c103 0 187 -75 203 -172c111 26 232 -5 319 -91z
-M1536 78c0 -114 -92 -206 -205 -206c-100 0 -183 71 -202 165c-116 -36 -249 -8 -341 84l-11 12l151 152l12 -12c49 -49 129 -49 178 0s49 129 0 178l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30c87 -87 118 -210 90 -322c100 -14 177 -99 177 -203z
-M1534 1202c0 -104 -78 -190 -178 -204c33 -115 4 -244 -87 -335l-12 -12l-151 152l12 12c49 49 49 129 0 178s-129 49 -178 0l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30c91 91 221 120 337 86c14 100 100 177 204 177c113 0 205 -92 205 -206z" />
-    <glyph glyph-name="ethereum" unicode="&#xf2f3;" horiz-adv-x="1064" 
-d="M1064 623l-532 -325l-532 325l532 913zM532 194l532 325l-532 -775l-532 775z" />
-    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408" 
-d="M1408 800v-192c0 -53 -43 -96 -96 -96h-416v-416c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v416h-416c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h416v416c0 53 43 96 96 96h192c53 0 96 -43 96 -96v-416h416c53 0 96 -43 96 -96z" />
-    <glyph glyph-name="list-ul" unicode="&#xf0ca;" horiz-adv-x="1792" 
-d="M384 128c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM384 640c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 224v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32
-h1216c17 0 32 -15 32 -32zM384 1152c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192s192 -86 192 -192zM1792 736v-192c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32zM1792 1248v-192
-c0 -17 -15 -32 -32 -32h-1216c-17 0 -32 15 -32 32v192c0 17 15 32 32 32h1216c17 0 32 -15 32 -32z" />
-    <glyph glyph-name="play-circle-o" unicode="&#xf01d;" 
-d="M1184 640c0 -23 -12 -44 -32 -55l-544 -320c-10 -6 -21 -9 -32 -9s-22 3 -32 8c-20 12 -32 33 -32 56v640c0 23 12 44 32 56c20 11 45 11 64 -1l544 -320c20 -11 32 -32 32 -55zM1312 640c0 300 -244 544 -544 544s-544 -244 -544 -544s244 -544 544 -544
-s544 244 544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="joplin" unicode="&#xf310;" 
-d="M288 1408h960c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288zM737 1171v-148l43 -1c59 -2 70 -6 81 -30c4 -10 5 -13 5 -296c0 -323 0 -323 -16 -362c-16 -38 -48 -69 -87 -83
-c-13 -5 -21 -5 -43 -6c-33 -1 -53 2 -80 15c-30 14 -50 37 -62 69c-9 24 -10 34 -12 88c-2 51 -1 56 -7 70c-9 23 -25 45 -40 56c-24 18 -49 24 -87 22c-40 -2 -68 -13 -95 -41c-23 -23 -35 -44 -44 -75c-4 -15 -5 -23 -5 -54c0 -38 1 -46 11 -79c26 -82 92 -156 178 -199
-c46 -23 85 -35 155 -44v0c20 -3 119 -3 142 0c87 10 150 32 208 71c73 49 127 125 142 199c8 40 9 47 10 343l1 291l6 13c6 15 15 24 29 28c5 2 28 3 52 4l43 1v74l-1 73l-263 1h-264z" />
-    <glyph glyph-name="mars-stroke" unicode="&#xf229;" 
-d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-213 -214l140 -140c12 -13 12 -33 0 -45l-46 -46c-12 -12 -32 -12 -45 0l-140 141l-78 -79c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576
-s258 576 576 576c136 0 261 -47 359 -126l78 78l-172 172c-12 13 -12 33 0 45l46 46c12 12 32 12 45 0l172 -172l213 213h-261c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1820" 
-d="M1061 540v4l-24 320c-1 18 -17 32 -34 32h-186c-17 0 -33 -14 -34 -32l-24 -320v-4c-1 -16 14 -28 29 -28h244c15 0 30 12 29 28zM1820 73c0 -29 -8 -73 -46 -73h-704c17 0 31 14 30 32l-20 256c-1 18 -17 32 -34 32h-272c-17 0 -33 -14 -34 -32l-20 -256
-c-1 -18 13 -32 30 -32h-704c-38 0 -46 44 -46 73c0 40 11 80 26 116l417 1044c10 25 37 47 64 47h339c-17 0 -33 -14 -34 -32l-15 -192c-1 -18 12 -32 30 -32h166c18 0 31 14 30 32l-15 192c-1 18 -17 32 -34 32h339c27 0 54 -22 64 -47l417 -1044c15 -36 26 -76 26 -116z
-" />
-    <glyph glyph-name="volume-down" unicode="&#xf027;" horiz-adv-x="1152" 
-d="M768 1184v-1088c0 -35 -29 -64 -64 -64c-17 0 -33 7 -45 19l-333 333h-262c-35 0 -64 29 -64 64v384c0 35 29 64 64 64h262l333 333c12 12 28 19 45 19c35 0 64 -29 64 -64zM1152 640c0 -100 -61 -197 -155 -235c-8 -4 -17 -5 -25 -5c-35 0 -64 28 -64 64
-c0 76 116 55 116 176s-116 100 -116 176c0 36 29 64 64 64c8 0 17 -1 25 -5c94 -37 155 -135 155 -235z" />
-    <glyph glyph-name="question-circle" unicode="&#xf059;" 
-d="M896 160v192c0 18 -14 32 -32 32h-192c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h192c18 0 32 14 32 32zM1152 832c0 183 -192 320 -364 320c-163 0 -285 -70 -371 -213c-9 -14 -5 -32 8 -42l132 -100c5 -4 12 -6 19 -6c9 0 19 4 25 12c47 60 67 78 86 92
-c17 12 50 24 86 24c64 0 123 -41 123 -85c0 -52 -27 -78 -88 -106c-71 -32 -168 -115 -168 -212v-36c0 -18 14 -32 32 -32h192c18 0 32 14 32 32c0 23 29 72 76 99c76 43 180 101 180 253zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768
-s768 -344 768 -768z" />
-    <glyph glyph-name="paypal" unicode="&#xf1ed;" horiz-adv-x="1519" 
-d="M1510 890c13 -60 10 -129 -4 -204c-65 -330 -284 -444 -565 -444h-44c-34 0 -62 -25 -68 -59l-4 -19l-55 -346l-2 -15c-7 -34 -35 -59 -69 -59h-251c-28 0 -46 23 -42 51c18 112 35 224 53 336s36 223 54 335c3 24 19 37 43 37c40 0 80 1 131 0c72 -1 155 3 236 21
-c108 24 206 68 287 144c73 68 122 152 155 246c15 44 27 88 35 133c2 12 5 10 12 5c55 -41 86 -96 98 -162zM1338 1172c0 -82 -19 -160 -46 -236c-52 -151 -150 -259 -302 -315c-81 -29 -166 -41 -252 -42c-60 -1 -120 0 -180 0c-65 0 -106 -32 -118 -96
-c-14 -76 -69 -430 -85 -530c-1 -7 -4 -10 -12 -10h-295c-30 0 -52 26 -48 55l232 1471c6 38 40 67 79 67h598c43 0 142 -19 209 -45c142 -55 220 -167 220 -319z" />
-    <glyph glyph-name="child" unicode="&#xf1ae;" horiz-adv-x="1152" 
-d="M1124 988l-292 -292v-824c0 -62 -50 -112 -112 -112s-112 50 -112 112v384h-64v-384c0 -62 -50 -112 -112 -112s-112 50 -112 112v824l-292 292c-37 38 -37 98 0 136c38 37 98 37 136 0l228 -228h368l228 228c38 37 98 37 136 0c37 -38 37 -98 0 -136zM800 1152
-c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
-    <glyph glyph-name="fork-awesome" unicode="&#xf2e3;" horiz-adv-x="1533" 
-d="M766 1404v0c423 0 767 -343 767 -766v-1v-2c0 -8 -1 -17 -1 -25v-2c-14 -388 -318 -703 -701 -735v1c-18 -2 -47 -2 -65 -2s-47 1 -65 3v-2c-383 32 -685 347 -700 735v2c0 8 -1 17 -1 25v2v1c0 423 343 766 766 766zM594 1085h-66c-35 -251 -54 -525 -29 -712
-s145 -157 181 -351c5 -29 10 -59 14 -89c20 -2 52 -4 72 -4s52 2 72 4c4 30 9 60 14 89c36 194 156 164 181 351s6 456 -28 712h-65c3 -190 12 -430 -8 -640c-8 -89 -103 -87 -108 0c-13 208 -15 428 -26 639h-64c-11 -211 -18 -431 -26 -643c-3 -82 -100 -81 -108 0
-c-19 208 -10 453 -6 644z" />
-    <glyph glyph-name="angle-double-up" unicode="&#xf102;" horiz-adv-x="998" 
-d="M998 224c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23zM998 608
-c0 -8 -4 -17 -10 -23l-50 -50c-6 -6 -14 -10 -23 -10c-8 0 -17 4 -23 10l-393 393l-393 -393c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-50 50c-6 6 -10 15 -10 23s4 17 10 23l466 466c6 6 15 10 23 10s17 -4 23 -10l466 -466c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="bath" unicode="&#xf2cd;" horiz-adv-x="1792" 
-d="M1664 448v-192c0 -114 -50 -215 -128 -286v-194c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v118c-40 -14 -83 -22 -128 -22h-768c-45 0 -88 8 -128 22v-110c0 -22 -14 -40 -32 -40h-64c-18 0 -32 18 -32 40v186c-78 71 -128 172 -128 286v192h1536zM704 864
-c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 928c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 992c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 992c0 -18 -14 -32 -32 -32s-32 14 -32 32
-s14 32 32 32s32 -14 32 -32zM768 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM704 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1792 608v-64c0 -18 -14 -32 -32 -32h-1728c-18 0 -32 14 -32 32v64c0 18 14 32 32 32
-h96v640c0 141 115 256 256 256c72 0 137 -30 184 -78c62 25 136 16 191 -27l22 22c6 6 16 6 22 0l42 -42c6 -6 6 -16 0 -22l-314 -314c-6 -6 -16 -6 -22 0l-42 42c-6 6 -6 16 0 22l22 22c-48 61 -54 145 -17 212c-23 22 -54 35 -88 35c-71 0 -128 -57 -128 -128v-640h1504
-c18 0 32 -14 32 -32zM896 1056c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1120c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM768 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM960 1120
-c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM896 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM832 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1024 1184c0 -18 -14 -32 -32 -32s-32 14 -32 32
-s14 32 32 32s32 -14 32 -32zM960 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32zM1088 1248c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32s32 -14 32 -32z" />
-    <glyph glyph-name="reply-all" unicode="&#xf122;" horiz-adv-x="1792" 
-d="M640 454v-70c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-69l-397 -398c-25 -25 -25 -65 0 -90zM1792 416c0 -208 -157 -514 -164 -527c-5 -11 -16 -17 -28 -17
-c-3 0 -6 0 -9 1c-15 5 -24 19 -23 34c29 273 -5 453 -106 565c-85 95 -223 146 -438 163v-251c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-512 512c-25 25 -25 65 0 90l512 512c18 19 46 24 70 14c23 -10 39 -33 39 -59v-262c276 -19 473 -92 599 -221
-c151 -155 169 -365 169 -509z" />
-    <glyph glyph-name="patreon" unicode="&#xf2f0;" 
-d="M985 1341c-305 0 -553 -248 -553 -553c0 -304 248 -551 553 -551c304 0 551 247 551 551c0 305 -247 553 -551 553zM270 -132h-270v1473h270v-1473z" />
-    <glyph glyph-name="inbox" unicode="&#xf01c;" 
-d="M1023 576h316c-2 5 -3 11 -5 16l-212 496h-708l-212 -496c-2 -5 -3 -11 -5 -16h316l95 -192h320zM1536 546v-482c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v482c0 36 11 89 25 123l238 552c14 33 54 59 89 59h832c35 0 75 -26 89 -59l238 -552
-c14 -34 25 -87 25 -123z" />
-    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280" 
-d="M1280 480c0 -53 -43 -96 -96 -96c-32 0 -62 16 -80 43l-227 341h-45v-132l247 -411c6 -10 9 -21 9 -33c0 -35 -29 -64 -64 -64h-192v-272c0 -62 -50 -112 -112 -112h-160c-61 0 -112 50 -112 112v272h-192c-35 0 -64 29 -64 64c0 12 3 23 9 33l247 411v132h-45l-227 -341
-c-18 -27 -48 -43 -80 -43c-53 0 -96 43 -96 96c0 19 6 38 16 53l256 384c40 59 102 107 176 107h384c74 0 136 -48 176 -107l256 -384c10 -15 16 -34 16 -53zM864 1280c0 -124 -100 -224 -224 -224s-224 100 -224 224s100 224 224 224s224 -100 224 -224z" />
-    <glyph glyph-name="gavel" unicode="&#xf0e3;" horiz-adv-x="1731" 
-d="M1731 0c0 -34 -14 -67 -37 -90l-107 -108c-24 -23 -57 -37 -91 -37s-67 14 -90 37l-363 364c-24 23 -38 56 -38 90c0 38 16 69 43 96l-256 256l-126 -126c-9 -9 -21 -14 -34 -14s-25 5 -34 14c30 -30 58 -52 58 -98c0 -26 -10 -49 -28 -68c-34 -36 -70 -84 -124 -84
-c-25 0 -50 10 -68 28l-408 408c-18 18 -28 43 -28 68c0 54 48 90 84 124c19 18 42 28 68 28c46 0 68 -28 98 -58c-9 9 -14 21 -14 34s5 25 14 34l348 348c9 9 21 14 34 14s25 -5 34 -14c-30 30 -58 52 -58 98c0 26 10 49 28 68c34 36 70 84 124 84c25 0 50 -10 68 -28
-l408 -408c18 -18 28 -43 28 -68c0 -54 -48 -90 -84 -124c-19 -18 -42 -28 -68 -28c-46 0 -68 28 -98 58c9 -9 14 -21 14 -34s-5 -25 -14 -34l-126 -126l256 -256c27 27 58 43 96 43c34 0 67 -14 91 -37l363 -363c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="jsfiddle" unicode="&#xf1cc;" horiz-adv-x="2048" 
-d="M1800 764c145 -60 248 -202 248 -367c0 -219 -181 -397 -403 -397c-8 0 -15 1 -22 1h-1217c-224 13 -406 184 -406 406c0 149 81 279 202 350c-8 26 -12 53 -12 82c0 153 125 277 281 277c64 0 124 -22 172 -58c98 202 306 342 549 342c337 0 609 -269 609 -600
-c0 -12 -1 -24 -1 -36zM468 498c0 -169 133 -264 292 -264c98 0 169 31 240 99c-29 36 -61 71 -91 107c-41 -40 -86 -65 -144 -65c-71 0 -132 47 -132 121c0 73 61 121 130 121c220 0 267 -384 587 -384c156 0 288 98 288 262c0 166 -133 263 -291 263
-c-98 0 -171 -28 -241 -97c32 -35 62 -72 93 -108c40 39 85 64 142 64c66 0 132 -47 132 -117c0 -77 -56 -126 -131 -126c-213 0 -270 384 -582 384c-155 0 -292 -95 -292 -260z" />
-    <glyph glyph-name="git" unicode="&#xf1d3;" horiz-adv-x="1656" 
-d="M527 22c0 88 -97 100 -165 100c-71 0 -158 -15 -158 -104c0 -90 103 -101 172 -101c73 0 151 18 151 105zM468 777c0 75 -36 143 -119 143c-92 0 -124 -61 -124 -145c0 -83 36 -135 124 -135c87 0 119 56 119 137zM737 1101v-202c-26 -9 -52 -16 -79 -22
-c10 -27 16 -55 16 -84c0 -169 -104 -298 -270 -329c-50 -10 -79 -31 -79 -85c0 -153 404 -49 404 -331c0 -229 -155 -304 -363 -304c-171 0 -366 57 -366 263c0 120 73 189 182 225v4c-46 28 -67 72 -67 126c0 51 11 114 63 137v4c-101 34 -167 173 -167 274
-c0 187 145 324 330 324c62 0 124 -16 178 -47c75 0 149 20 218 47zM1055 220h-222c4 45 4 89 4 134v609c0 43 1 86 -4 128h222c-5 -41 -4 -83 -4 -124v-613c0 -45 0 -89 4 -134zM1656 442v-196c-53 -29 -114 -39 -174 -39c-214 0 -239 169 -239 343v351h2v4
-c-13 0 -25 2 -37 2c-20 0 -40 -3 -59 -6v190h96v76c0 30 -1 60 -6 89h227c-8 -55 -6 -110 -6 -165h171v-190c-29 0 -58 4 -86 4h-85v-365c0 -59 13 -131 87 -131c39 0 77 11 109 33zM1080 1389c0 -75 -58 -145 -135 -145c-79 0 -138 69 -138 145c0 77 58 147 138 147
-c79 0 135 -72 135 -147z" />
-    <glyph glyph-name="signalapp" unicode="&#xf30c;" horiz-adv-x="1652" 
-d="M710 1400c32 4 84 8 116 8v0c27 0 53 -2 80 -4l-3 -42c-21 2 -56 3 -77 3c-31 0 -81 -3 -111 -7zM977 1351l8 43c54 -10 138 -36 188 -58l-17 -39c-48 21 -128 45 -179 54zM446 1321c49 24 133 54 186 66l10 -42c-51 -11 -130 -39 -177 -62zM1223 1264l21 37
-c48 -27 120 -78 160 -115l-29 -32c-38 35 -106 85 -152 110zM222 1161c39 39 108 93 155 122l22 -36c-44 -27 -110 -79 -147 -116l-30 30v0zM1427 1101l32 28c37 -41 87 -114 112 -163l-38 -20c-24 46 -71 116 -106 155v0zM65 934c23 50 69 125 104 168l33 -27
-c-33 -40 -77 -112 -98 -159zM1564 878l39 15c20 -52 41 -138 46 -193l-43 -4c-5 52 -23 133 -42 182zM0 664c3 55 19 143 36 196l41 -14c-16 -49 -32 -132 -34 -184zM1582 436c14 50 26 133 27 185h43c-1 -55 -14 -144 -29 -197zM-0 585l43 2c2 -70 10 -131 23 -187l-42 -11
-c-14 59 -22 123 -24 196zM1464 203c32 41 73 114 93 162l40 -16c-21 -51 -66 -128 -99 -172zM47 313l40 15c22 -60 52 -113 92 -160l-33 -28c-43 51 -75 108 -99 173v0zM1273 26c44 28 107 82 143 120l31 -29c-37 -40 -105 -97 -151 -127zM202 82l28 32
-c12 -11 34 -28 47 -38c4 -3 6 -7 7 -11l40 -125l-41 -13l-37 118c-13 10 -32 26 -44 37v0zM1033 -80c50 13 129 44 175 68l20 -39c-48 -25 -131 -56 -184 -70zM644 -86c2 1 7 2 9 2s3 -1 5 -1c17 -5 31 -8 42 -11l-9 -42c-10 2 -27 7 -37 10l-128 -57l-18 40l136 59v0z
-M826 -106c45 0 90 4 134 11l7 -42c-39 -6 -102 -12 -141 -12c-22 0 -40 0 -55 1l2 43c15 -1 31 -1 53 -1v0zM357 -256v0v0c-9 0 -17 7 -20 15l-30 93l41 13l23 -70l67 29l17 -39l-89 -39c-2 -1 -7 -2 -9 -2zM442 -65c-11 0 -21 8 -22 19l-16 213c-70 53 -124 122 -161 204
-c-37 81 -56 171 -56 268c0 332 292 602 651 602s651 -270 651 -602s-292 -602 -651 -602c-60 0 -119 8 -176 23l-209 -123c-3 -2 -7 -2 -11 -2v0z" />
-    <glyph glyph-name="share-square" unicode="&#xf14d;" 
-d="M1005 435l352 352c25 25 25 65 0 90l-352 352c-18 19 -46 24 -69 14c-24 -10 -40 -33 -40 -59v-160c-574 0 -640 -329 -640 -576c0 -201 161 -396 167 -404c7 -8 16 -12 25 -12c4 0 9 1 13 3c13 5 21 19 19 33c-30 241 -11 391 62 473c61 69 167 99 354 99v-160
-c0 -26 16 -49 40 -59c7 -3 16 -5 24 -5c17 0 33 7 45 19zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960c159 0 288 -129 288 -288z" />
-    <glyph glyph-name="thermometer-half" unicode="&#xf2c9;" horiz-adv-x="1024" 
-d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v395h128v-395c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
-s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
-" />
-    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="924" 
-d="M608 280v-240c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v240c0 22 18 40 40 40h240c22 0 40 -18 40 -40zM924 880c0 -190 -129 -263 -224 -316c-59 -34 -96 -103 -96 -132c0 -22 -17 -48 -40 -48h-240c-22 0 -36 34 -36 56v45c0 121 120 225 208 265
-c77 35 109 68 109 132c0 56 -73 106 -154 106c-45 0 -86 -14 -108 -29c-24 -17 -48 -41 -107 -115c-8 -10 -20 -16 -31 -16c-9 0 -17 3 -25 8l-164 125c-17 13 -21 35 -10 53c108 179 260 266 464 266c214 0 454 -171 454 -400z" />
-    <glyph glyph-name="low-vision" unicode="&#xf2a8;" horiz-adv-x="1792" 
-d="M335 180c-2 0 -4 1 -6 2c-117 78 -234 206 -308 325c-14 20 -21 44 -21 69c0 52 36 94 65 133c116 158 271 288 452 365c-15 27 -110 193 -110 211c0 12 7 23 17 29c20 11 110 64 128 64c11 0 22 -6 28 -16l124 -229c63 13 128 19 192 19c362 0 684 -205 876 -507
-c13 -20 20 -44 20 -69s-7 -49 -20 -69c-119 -187 -293 -342 -497 -429c15 -27 110 -193 110 -211c0 -12 -6 -23 -17 -29c-20 -11 -110 -64 -127 -64c-12 0 -23 6 -29 16l-124 229l-64 119l-444 820l7 7c-34 -14 -67 -29 -99 -47c12 -23 489 -899 489 -906c0 -5 -4 -8 -9 -9
-c-22 -5 -50 -3 -72 -3c-11 0 -56 -2 -60 7l-456 841c-29 -21 -56 -44 -82 -68c22 -39 404 -742 404 -748c0 -8 -5 -10 -11 -10c-17 0 -150 41 -155 50l-106 197l-224 413c-28 -34 -54 -69 -78 -106c13 -19 30 -39 41 -59c14 -26 176 -321 176 -327c0 -5 -5 -10 -10 -10z
-M1165 282l49 -91c187 76 341 216 450 385c-111 171 -269 313 -459 389c89 -85 139 -202 139 -325c0 -141 -66 -274 -179 -358zM848 896c0 -26 22 -48 48 -48c55 0 108 -22 147 -61s61 -92 61 -147c0 -26 22 -48 48 -48s48 22 48 48c0 168 -136 304 -304 304
-c-26 0 -48 -22 -48 -48zM1214 961l-9 4l7 -7z" />
-    <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920" 
-d="M960 864c159 0 288 -129 288 -288s-129 -288 -288 -288s-288 129 -288 288s129 288 288 288zM1664 1280c141 0 256 -115 256 -256v-896c0 -141 -115 -256 -256 -256h-1408c-141 0 -256 115 -256 256v896c0 141 115 256 256 256h224l51 136c25 66 103 120 173 120h512
-c70 0 148 -54 173 -120l51 -136h224zM960 128c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="wordpress" unicode="&#xf19a;" horiz-adv-x="1792" 
-d="M127 640c0 111 24 217 67 313l367 -1005c-257 125 -434 388 -434 692zM1415 679c0 -66 -27 -142 -59 -249l-76 -256l-278 826s46 3 88 8c41 5 36 66 -5 63c-125 -9 -205 -10 -205 -10s-75 1 -202 10c-42 3 -47 -60 -5 -63c39 -4 80 -8 80 -8l120 -328l-168 -504l-280 832
-s46 3 88 8c41 5 36 66 -5 63c-124 -9 -205 -10 -205 -10c-14 0 -31 1 -49 1c137 209 373 347 642 347c200 0 382 -77 519 -202h-10c-75 0 -129 -65 -129 -136c0 -63 37 -116 76 -180c30 -51 63 -117 63 -212zM909 573l237 -647c1 -4 3 -8 5 -11c-80 -28 -165 -44 -255 -44
-c-75 0 -148 11 -217 32zM1570 1009c60 -110 95 -235 95 -369c0 -284 -154 -531 -383 -664l235 678c39 112 59 198 59 276c0 28 -2 54 -6 79zM896 1536c494 0 896 -402 896 -896s-402 -896 -896 -896s-896 402 -896 896s402 896 896 896zM896 -215c471 0 855 384 855 855
-s-384 855 -855 855s-855 -384 -855 -855s384 -855 855 -855z" />
-    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024" 
-d="M0 -126l17 85c64 20 133 28 193 59c23 29 34 66 41 101c13 68 231 1049 228 1129v25c-55 30 -122 22 -182 32l19 103c129 -6 260 -16 390 -16c106 0 212 10 318 16c-4 -30 -11 -60 -19 -89c-69 -24 -142 -35 -210 -62c-22 -54 -27 -113 -37 -170
-c-48 -259 -112 -518 -165 -775c-10 -48 -59 -247 -55 -289l1 -18c61 -14 123 -21 185 -31c-2 -33 -8 -66 -16 -99c-22 0 -43 -3 -65 -3c-57 0 -116 19 -173 20c-69 1 -138 2 -206 2c-89 0 -176 -15 -264 -20z" />
-    <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1542" 
-d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v710c0 35 20 44 45 19l710 -710c25 -25 25 -65 0 -90l-710 -710c-25 -25 -45 -16 -45 19v710c-3 -7 -7 -13 -13 -19z" />
-    <glyph glyph-name="steam-square" unicode="&#xf1b7;" 
-d="M1242 889c0 106 -87 193 -194 193c-106 0 -193 -87 -193 -193c0 -107 87 -193 193 -193c107 0 194 86 194 193zM632 301c0 -110 -88 -198 -198 -198c-76 0 -142 43 -175 106c33 -13 65 -26 98 -40c80 -32 172 7 205 88c32 80 -7 172 -88 204l-82 33c13 3 28 5 42 5
-c110 0 198 -88 198 -198zM1536 1120v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v153l172 -69c26 -121 134 -212 262 -212c140 0 255 107 268 243l345 252c200 0 361 162 361 360c0 200 -161 361 -361 361c-197 0 -358 -160 -360 -357l-225 -322
-c-9 1 -18 1 -28 1c-50 0 -97 -13 -137 -37l-297 119v468c0 159 129 288 288 288h960c159 0 288 -129 288 -288zM1289 887c0 -133 -108 -241 -242 -241c-133 0 -241 108 -241 241c0 134 108 242 241 242c134 0 242 -108 242 -242z" />
-    <glyph glyph-name="medium-square" unicode="&#xf2f8;" 
-d="M0 1404h1536v-1536h-1536v1536zM257 1057v-17l97 -116c7 -7 13 -20 13 -30v-4v-456v-9c0 -12 -6 -28 -14 -36l-109 -132v-17h308v17l-109 132c-9 9 -15 26 -15 38v7v395l270 -589h31l232 589v-469c0 -13 0 -16 -8 -24l-84 -80v-18h405v18l-80 79c-5 4 -10 12 -10 19
-c0 1 1 3 1 4v580c0 1 -1 3 -1 4c0 7 5 15 10 19l82 79v17h-285l-203 -507l-232 507h-299z" />
-    <glyph glyph-name="sort-numeric-desc" unicode="&#xf163;" horiz-adv-x="1454" 
-d="M1314 1247c0 82 -67 169 -147 169c-70 0 -114 -57 -114 -131c0 -72 46 -133 141 -133c65 0 120 39 120 95zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192
-c18 0 32 -14 32 -32v-1376h192c18 0 32 -14 32 -32zM1424 -142v-114h-469v114h167v432c0 13 1 26 1 36v16h-2l-7 -12c-5 -8 -13 -18 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1454 1189c0 -202 -110 -421 -348 -421c-45 0 -82 7 -108 16c-16 5 -30 10 -42 15l39 113
-c9 -4 20 -8 31 -11c20 -7 46 -13 75 -13c120 0 182 100 201 204h-2c-28 -30 -87 -51 -146 -51c-145 0 -240 114 -240 244c0 138 106 251 253 251c159 0 287 -130 287 -347z" />
-    <glyph glyph-name="video-camera" unicode="&#xf03d;" horiz-adv-x="1792" 
-d="M1792 1184v-1088c0 -26 -16 -49 -39 -59c-8 -3 -17 -5 -25 -5c-17 0 -33 6 -45 19l-403 403v-166c0 -159 -129 -288 -288 -288h-704c-159 0 -288 129 -288 288v704c0 159 129 288 288 288h704c159 0 288 -129 288 -288v-165l403 402c12 13 28 19 45 19c8 0 17 -2 25 -5
-c23 -10 39 -33 39 -59z" />
-    <glyph glyph-name="thumbs-down" unicode="&#xf165;" horiz-adv-x="1600" 
-d="M256 960c0 36 -29 64 -64 64c-36 0 -64 -28 -64 -64c0 -35 28 -64 64 -64c35 0 64 29 64 64zM416 448c0 -35 -29 -64 -64 -64h-288c-35 0 -64 29 -64 64v640c0 35 29 64 64 64h288c35 0 64 -29 64 -64v-640zM1545 597c34 -38 55 -96 55 -149c-1 -104 -88 -192 -192 -192
-h-277c8 -32 18 -42 29 -64c26 -52 56 -110 56 -192c0 -77 0 -256 -224 -256c-17 0 -33 7 -45 19c-43 42 -55 104 -66 163c-12 58 -23 118 -62 157c-31 31 -65 74 -101 120c-44 58 -140 177 -177 180c-33 3 -61 31 -61 64v641c0 35 30 63 64 64c35 1 95 22 158 44
-c108 37 243 84 386 84h129c88 -1 154 -27 197 -78c38 -45 55 -106 49 -181c25 -24 44 -57 54 -94c11 -40 11 -80 0 -117c30 -40 45 -87 43 -137c0 -14 -4 -44 -15 -76z" />
-    <glyph glyph-name="medium" unicode="&#xf23a;" 
-d="M182 999v6c0 15 -8 34 -19 44l-144 173v26h446l344 -755l302 755h425v-26l-123 -117c-8 -6 -14 -19 -14 -29c0 -2 1 -4 1 -6v-864c0 -2 -1 -4 -1 -6c0 -10 6 -23 14 -29l120 -117v-26h-602v26l124 120c12 12 12 16 12 35v698l-345 -876h-47l-401 876v-587
-c0 -3 -1 -8 -1 -11c0 -18 10 -44 23 -57l162 -195v-26h-458v26l161 195c12 13 22 38 22 55c0 4 0 9 -1 13v679z" />
-    <glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="1036" 
-d="M1017 659l-742 -742c-25 -25 -65 -25 -90 0l-166 166c-25 25 -25 65 0 90l531 531l-531 531c-25 25 -25 65 0 90l166 166c25 25 65 25 90 0l742 -742c25 -25 25 -65 0 -90z" />
-    <glyph glyph-name="bus" unicode="&#xf207;" 
-d="M384 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1408 320c0 71 -57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128s128 57 128 128zM1362 716l-72 384c-6 30 -32 52 -63 52h-918c-31 0 -57 -22 -63 -52l-72 -384
-c-7 -40 23 -76 63 -76h1062c40 0 70 36 63 76zM1136 1328c0 27 -21 48 -48 48h-640c-26 0 -48 -21 -48 -48s22 -48 48 -48h640c27 0 48 21 48 48zM1536 603v-603h-128v-128c0 -71 -57 -128 -128 -128s-128 57 -128 128v128h-768v-128c0 -71 -57 -128 -128 -128
-s-128 57 -128 128v128h-128v603c0 82 7 143 25 223l103 454c19 160 299 256 640 256s621 -96 640 -256l105 -454c18 -80 23 -141 23 -223z" />
-    <glyph glyph-name="registered" unicode="&#xf25d;" horiz-adv-x="1792" 
-d="M1042 833c0 58 -20 99 -60 121c-20 11 -48 18 -117 18h-123v-281h162c88 0 138 52 138 142zM1094 548l205 -373c5 -10 5 -22 -1 -31c-5 -10 -16 -16 -27 -16h-152c-12 0 -23 6 -28 17l-194 365h-155v-350c0 -18 -14 -32 -32 -32h-134c-18 0 -32 14 -32 32v960
-c0 18 14 32 32 32h294c105 0 151 -9 190 -24c113 -42 183 -153 183 -289c0 -123 -61 -227 -158 -275c3 -5 6 -10 9 -16zM896 1376c-406 0 -736 -330 -736 -736s330 -736 736 -736s736 330 736 736s-330 736 -736 736zM1792 640c0 -495 -401 -896 -896 -896
-s-896 401 -896 896s401 896 896 896s896 -401 896 -896z" />
-    <glyph glyph-name="mars" unicode="&#xf222;" 
-d="M1472 1408c35 0 64 -29 64 -64v-416c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v262l-382 -383c79 -98 126 -223 126 -359c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576c136 0 261 -47 359 -126l382 382h-261c-18 0 -32 14 -32 32v64
-c0 18 14 32 32 32h416zM576 0c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="hand-rock-o" unicode="&#xf255;" 
-d="M768 1152c-71 0 -128 -57 -128 -128v-128h-32v93c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-429l-32 30v172c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-224c0 -31 13 -60 35 -82l310 -296c29 -29 39 -62 39 -102c0 -35 29 -64 64 -64h640
-c35 0 64 29 64 64v25c0 26 3 52 10 77l108 436c7 25 10 51 10 77v246c0 63 -48 115 -112 115c-62 0 -112 -50 -112 -112v-32h-32v125c0 53 -36 102 -89 113c-7 1 -15 2 -23 2c-62 0 -112 -50 -112 -112v-128h-32v122c0 67 -48 126 -115 133c-5 1 -9 1 -13 1zM768 1280
-c54 0 106 -17 149 -50c37 22 80 34 123 34c79 0 152 -38 197 -103c19 5 39 7 59 7c134 0 240 -110 240 -243v-246c0 -36 -5 -73 -13 -108l-109 -436c-6 -24 -6 -47 -6 -71c0 -106 -86 -192 -192 -192h-640c-114 0 -192 91 -192 201l-308 296c-47 45 -76 109 -76 175v224
-c0 132 108 240 240 240c6 0 11 0 16 -1c8 127 114 225 240 225c34 0 67 -7 98 -21c47 45 109 69 174 69z" />
-    <glyph glyph-name="window-close" unicode="&#xf2d3;" horiz-adv-x="1792" 
-d="M1175 215l146 146c13 13 13 33 0 46l-233 233l233 233c13 13 13 33 0 46l-146 146c-13 13 -33 13 -46 0l-233 -233l-233 233c-13 13 -33 13 -46 0l-146 -146c-13 -13 -13 -33 0 -46l233 -233l-233 -233c-13 -13 -13 -33 0 -46l146 -146c13 -13 33 -13 46 0l233 233
-l233 -233c13 -13 33 -13 46 0zM1792 1248v-1216c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v1216c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1632" 
-d="M1440 320c0 26 -10 50 -28 68l-208 208c-18 18 -43 28 -68 28c-29 0 -52 -11 -72 -32c33 -33 72 -61 72 -112c0 -53 -43 -96 -96 -96c-51 0 -79 39 -112 72c-21 -20 -33 -43 -33 -73c0 -25 10 -50 28 -68l206 -207c18 -18 43 -27 68 -27s50 9 68 26l147 146
-c18 18 28 42 28 67zM737 1025c0 25 -10 50 -28 68l-206 207c-18 18 -43 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l208 -208c18 -18 43 -27 68 -27c29 0 52 10 72 31c-33 33 -72 61 -72 112c0 53 43 96 96 96c51 0 79 -39 112 -72
-c21 20 33 43 33 73zM1632 320c0 -76 -31 -150 -85 -203l-147 -146c-54 -54 -127 -83 -203 -83c-77 0 -150 30 -204 85l-206 207c-54 54 -83 127 -83 203c0 79 32 154 88 209l-88 88c-55 -56 -129 -88 -208 -88c-76 0 -150 30 -204 84l-208 208c-55 55 -84 127 -84 204
-c0 76 31 150 85 203l147 146c54 54 127 83 203 83c77 0 150 -30 204 -85l206 -207c54 -54 83 -127 83 -203c0 -79 -32 -154 -88 -209l88 -88c55 56 129 88 208 88c76 0 150 -30 204 -84l208 -208c55 -55 84 -127 84 -204z" />
-    <glyph glyph-name="window-minimize" unicode="&#xf2d1;" horiz-adv-x="1792" 
-d="M1792 224v-192c0 -88 -72 -160 -160 -160h-1472c-88 0 -160 72 -160 160v192c0 88 72 160 160 160h1472c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="eyedropper" unicode="&#xf1fb;" horiz-adv-x="1792" 
-d="M1698 1442c125 -125 126 -328 0 -452l-225 -223l104 -104c13 -13 13 -33 0 -46l-210 -210c-13 -13 -33 -13 -46 0l-105 105l-603 -603c-24 -24 -56 -37 -90 -37h-203l-256 -128l-64 64l128 256v203c0 34 13 66 37 90l603 603l-105 105c-13 13 -13 33 0 46l210 210
-c13 13 33 13 46 0l104 -104l223 225c124 126 327 125 452 0zM512 64l576 576l-192 192l-576 -576v-192h192z" />
-    <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1600" 
-d="M1600 576c0 -35 -29 -64 -64 -64h-224c0 -125 -27 -219 -67 -290l208 -209c25 -25 25 -65 0 -90c-12 -13 -29 -19 -45 -19s-33 6 -45 19l-198 197s-131 -120 -301 -120v896h-128v-896c-181 0 -313 132 -313 132l-183 -207c-13 -14 -30 -21 -48 -21c-15 0 -30 5 -43 16
-c-26 24 -28 64 -5 91l202 227c-35 69 -58 158 -58 274h-224c-35 0 -64 29 -64 64s29 64 64 64h224v294l-173 173c-25 25 -25 65 0 90s65 25 90 0l173 -173h844l173 173c25 25 65 25 90 0s25 -65 0 -90l-173 -173v-294h224c35 0 64 -29 64 -64zM1120 1152h-640
-c0 177 143 320 320 320s320 -143 320 -320z" />
-    <glyph glyph-name="angellist" unicode="&#xf209;" horiz-adv-x="1258" 
-d="M942 1158l-114 -328l117 -21c30 82 165 451 165 518c0 25 -8 56 -38 56c-56 0 -116 -182 -130 -225zM643 471c11 -29 23 -58 33 -88c22 25 45 48 71 67c-35 7 -70 10 -104 21zM351 1367c0 -102 121 -420 159 -521c14 8 32 10 49 10c24 0 51 -3 75 -5l-121 351
-c-13 38 -71 220 -123 220c-27 0 -39 -32 -39 -55zM272 608c0 -73 196 -342 269 -342c20 0 37 22 37 40c0 23 -23 80 -32 102c-26 67 -121 274 -203 274c-27 0 -71 -47 -71 -74zM114 273c0 -36 12 -71 25 -104c79 -195 257 -309 465 -309c152 0 280 58 382 170
-c108 120 152 268 152 427c0 56 1 145 -43 185c-84 74 -369 102 -482 102c-14 0 -38 -1 -49 -11c-12 -5 -12 -24 -12 -35c0 -153 323 -139 420 -139c19 0 28 -5 40 -19c13 -16 17 -35 19 -55c-26 -26 -62 -41 -96 -54c-33 -12 -65 -25 -93 -46c-77 -56 -153 -152 -153 -251
-c0 -62 37 -115 37 -176c0 -1 -7 -23 -7 -26c-114 8 -142 121 -146 216c-12 -3 -28 -2 -41 -2c2 -7 2 -14 2 -21c0 -73 -65 -126 -135 -126c-108 0 -251 127 -251 237c0 30 13 47 33 67c20 -25 41 -50 60 -76c29 -39 79 -104 133 -104c14 0 41 12 41 29
-c0 45 -164 256 -204 256c-63 0 -97 -83 -97 -135zM0 264c0 130 50 216 179 251c-11 29 -28 73 -28 104c0 82 101 184 183 184c24 0 48 -7 70 -15c-42 119 -163 454 -163 567c0 101 51 181 160 181c140 0 299 -504 333 -604c44 110 182 571 338 571c98 0 153 -78 153 -171
-c0 -106 -118 -436 -159 -550c168 -41 192 -177 192 -328c0 -400 -255 -710 -668 -710c-76 0 -151 15 -223 42c-190 72 -367 267 -367 478z" />
-    <glyph glyph-name="chain-broken" unicode="&#xf127;" horiz-adv-x="1664" 
-d="M439 265l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46zM608 224v-320c0 -18 -14 -32 -32 -32s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM384 448c0 -18 -14 -32 -32 -32h-320
-c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1648 320c0 -77 -30 -149 -85 -203l-147 -146c-54 -54 -126 -83 -203 -83s-150 30 -204 85l-334 335c-17 17 -30 36 -42 56l239 18l273 -274c36 -36 100 -37 136 -1l147 146c18 18 28 42 28 67c0 26 -10 50 -28 68
-l-274 275l18 239c20 -12 39 -25 56 -42l336 -336c54 -55 84 -127 84 -204zM1031 1044l-239 -18l-273 274c-18 18 -42 28 -68 28s-50 -10 -68 -27l-147 -146c-18 -18 -28 -42 -28 -67c0 -26 10 -50 28 -68l274 -274l-18 -240c-20 12 -39 25 -56 42l-336 336
-c-54 55 -84 127 -84 204s30 149 85 203l147 146c54 54 126 83 203 83s150 -30 204 -85l334 -335c17 -17 30 -36 42 -56zM1664 960c0 -18 -14 -32 -32 -32h-320c-18 0 -32 14 -32 32s14 32 32 32h320c18 0 32 -14 32 -32zM1120 1504v-320c0 -18 -14 -32 -32 -32
-s-32 14 -32 32v320c0 18 14 32 32 32s32 -14 32 -32zM1527 1353l-256 -256c-7 -6 -15 -9 -23 -9s-16 3 -23 9c-12 13 -12 33 0 46l256 256c13 12 33 12 46 0c12 -13 12 -33 0 -46z" />
-    <glyph glyph-name="info" unicode="&#xf129;" horiz-adv-x="640" 
-d="M640 192v-128c0 -35 -29 -64 -64 -64h-512c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h64v384h-64c-35 0 -64 29 -64 64v128c0 35 29 64 64 64h384c35 0 64 -29 64 -64v-576h64c35 0 64 -29 64 -64zM512 1344v-192c0 -35 -29 -64 -64 -64h-256c-35 0 -64 29 -64 64v192
-c0 35 29 64 64 64h256c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="956" 
-d="M876 207l80 -237c-30 -45 -166 -96 -288 -98c-363 -6 -500 258 -500 444v544h-168v215c252 91 313 319 327 449c1 8 8 12 12 12h244v-424h333v-252h-334v-518c0 -70 26 -167 160 -164c44 1 103 14 134 29z" />
-    <glyph glyph-name="line-chart" unicode="&#xf201;" horiz-adv-x="2048" 
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435c0 -28 -34 -43 -55 -22l-121 121l-633 -633c-13 -13 -33 -13 -46 0l-233 233l-416 -416l-192 192l585 585c13 13 33 13 46 0l233 -233l464 464l-121 121c-21 21 -6 55 22 55h435c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="long-arrow-up" unicode="&#xf176;" horiz-adv-x="767" 
-d="M765 1043c-5 -11 -16 -19 -29 -19h-224v-1248c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v1248h-224c-13 0 -24 7 -29 19s-3 25 5 35l350 384c6 6 14 10 23 10s18 -4 24 -10l355 -384c8 -10 10 -23 5 -35z" />
-    <glyph glyph-name="simplybuilt" unicode="&#xf215;" horiz-adv-x="2048" 
-d="M863 504c0 150 -121 271 -271 271c-149 0 -270 -121 -270 -271c0 -149 121 -270 270 -270c150 0 271 121 271 270zM1726 505c0 149 -121 270 -270 270c-150 0 -271 -121 -271 -270c0 -150 121 -271 271 -271c149 0 270 121 270 271zM2048 1314v-1348
-c0 -59 -48 -107 -108 -107h-1832c-60 0 -108 48 -108 107v1348c0 59 48 107 108 107h431c59 0 108 -48 108 -107v-161h754v161c0 59 49 107 108 107h431c60 0 108 -48 108 -107z" />
-    <glyph glyph-name="trash" unicode="&#xf1f8;" horiz-adv-x="1408" 
-d="M512 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM768 160v704c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1024 160v704c0 18 -14 32 -32 32h-64
-c-18 0 -32 -14 -32 -32v-704c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM480 1152h448l-48 117c-3 4 -12 10 -17 11h-317c-6 -1 -14 -7 -17 -11zM1408 1120v-64c0 -18 -14 -32 -32 -32h-96v-948c0 -110 -72 -204 -160 -204h-832c-88 0 -160 90 -160 200v952h-96
-c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h309l70 167c20 49 80 89 133 89h320c53 0 113 -40 133 -89l70 -167h309c18 0 32 -14 32 -32z" />
-    <glyph glyph-name="free-code-camp" unicode="&#xf2c5;" horiz-adv-x="2304" 
-d="M453 -101c0 -28 -25 -54 -53 -54c-4 0 -9 2 -13 3c-56 13 -128 97 -162 140c-156 197 -225 427 -225 676c0 232 70 431 213 614c33 43 131 156 189 156c25 0 51 -20 51 -46c0 -30 -44 -71 -63 -90c-55 -57 -106 -115 -147 -184c-85 -142 -119 -284 -119 -449
-c0 -177 33 -337 123 -491c38 -65 83 -119 136 -173c21 -23 70 -68 70 -102zM1796 33c0 -37 -25 -68 -64 -68h-1081c-35 0 -64 29 -64 64c0 37 25 68 64 68h1081c35 0 64 -29 64 -64zM1581 644c0 -84 -19 -162 -67 -233c-33 -49 -100 -112 -153 -139c-8 -5 -18 -10 -27 -10
-c-8 0 -23 9 -23 18c0 29 122 98 122 232c0 44 -11 93 -35 130c-7 10 -32 42 -46 42c-3 0 -3 -2 -3 -5c0 -24 15 -47 15 -72c0 -32 -39 -48 -66 -48c-47 0 -66 33 -66 76c0 29 3 59 3 88c0 21 -1 27 -10 46c-14 27 -60 82 -93 82c-9 0 -12 0 -12 -9c0 -14 32 -29 32 -80
-c0 -133 -183 -157 -183 -290c0 -60 8 -110 42 -160c21 -31 44 -49 79 -63c9 -3 18 -4 18 -15s-9 -16 -18 -16c-5 0 -28 9 -33 11c-154 56 -271 190 -271 358c0 199 239 373 239 564c0 37 -6 63 -25 94c-11 18 -38 53 -56 64c-8 4 -19 11 -19 21c0 17 29 20 41 20
-c36 0 77 -13 110 -29c139 -66 168 -167 192 -307c6 -33 18 -138 66 -138c31 0 51 21 51 51c0 45 -40 94 -40 119c0 7 4 10 10 10c25 0 77 -53 93 -70c97 -103 133 -203 133 -342zM2304 615c0 -176 -47 -352 -138 -503c-42 -70 -180 -266 -271 -266c-21 0 -46 26 -46 47
-c0 34 117 143 146 180c124 156 183 332 183 531c0 164 -20 297 -93 446c-45 92 -92 154 -163 228c-23 24 -73 69 -73 105c0 25 26 52 51 52c66 0 161 -122 196 -169c134 -180 191 -365 206 -587c1 -21 2 -43 2 -64z" />
-    <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664" 
-d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
-    <glyph glyph-name="calendar-o" unicode="&#xf133;" horiz-adv-x="1664" 
-d="M128 -128h1408v1024h-1408v-1024zM512 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1280 1088v288c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-288c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1664 1152
-v-1280c0 -70 -58 -128 -128 -128h-1408c-70 0 -128 58 -128 128v1280c0 70 58 128 128 128h128v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h384v96c0 88 72 160 160 160h64c88 0 160 -72 160 -160v-96h128c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792" 
-d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64c-123 0 -224 101 -224 224v832c0 123 101 224 224 224h64zM1408 1152v-1280h-1024v1280h128v160c0 53 43 96 96 96h576c53 0 96 -43 96 -96v-160h128zM1792 928v-832c0 -123 -101 -224 -224 -224h-64v1280h64
-c123 0 224 -101 224 -224z" />
-    <glyph glyph-name="arrow-circle-o-up" unicode="&#xf01b;" 
-d="M1118 660c-5 -12 -17 -20 -30 -20h-192v-352c0 -18 -14 -32 -32 -32h-192c-18 0 -32 14 -32 32v352h-192c-18 0 -32 14 -32 32c0 9 4 17 10 24l319 319c7 6 15 9 23 9s16 -3 23 -9l320 -320c9 -10 12 -23 7 -35zM768 1184c-300 0 -544 -244 -544 -544s244 -544 544 -544
-s544 244 544 544s-244 544 -544 544zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="1558" 
-d="M1558 565c0 -34 -14 -66 -37 -90l-75 -75c-24 -24 -57 -38 -91 -38s-67 14 -90 38l-294 293v-704c0 -72 -60 -117 -128 -117h-128c-68 0 -128 45 -128 117v704l-294 -293c-23 -24 -56 -38 -90 -38s-67 14 -90 38l-75 75c-24 24 -38 56 -38 90s14 67 38 91l651 651
-c23 24 56 37 90 37s67 -13 91 -37l651 -651c23 -24 37 -57 37 -91z" />
-    <glyph glyph-name="venus-mars" unicode="&#xf228;" horiz-adv-x="2048" 
-d="M1664 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c98 -123 147 -286 117 -461c-42 -240 -237 -431 -478 -467c-152 -23 -295 14 -409 90c-75 -50 -162 -83 -256 -93v-132h96c18 0 32 -14 32 -32
-v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-314 35 -553 323 -506 654c34 249 232 449 480 487c153 23 296 -14 410 -90c92 61 202 97 320 97c136 0 261 -48 359 -126
-l255 254h-134c-18 0 -32 14 -32 32v64zM896 391c79 81 128 191 128 313s-49 232 -128 313c-79 -81 -128 -191 -128 -313s49 -232 128 -313zM128 704c0 -247 201 -448 448 -448c79 0 154 21 218 57c-95 103 -154 240 -154 391s59 288 154 391c-64 36 -139 57 -218 57
-c-247 0 -448 -201 -448 -448zM1216 256c247 0 448 201 448 448s-201 448 -448 448c-79 0 -154 -21 -218 -57c95 -103 154 -240 154 -391s-59 -288 -154 -391c64 -36 139 -57 218 -57z" />
-    <glyph glyph-name="pause-circle" unicode="&#xf28b;" 
-d="M704 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1152 352v576c0 18 -14 32 -32 32h-256c-18 0 -32 -14 -32 -32v-576c0 -18 14 -32 32 -32h256c18 0 32 14 32 32zM1536 640c0 -424 -344 -768 -768 -768
-s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="1664" 
-d="M640 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1536 0c0 -70 -58 -128 -128 -128s-128 58 -128 128s58 128 128 128s128 -58 128 -128zM1664 1088v-512c0 -32 -25 -60 -57 -64l-1044 -122c5 -23 13 -46 13 -70
-c0 -23 -14 -44 -24 -64h920c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 45 106 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c67 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="files-o" unicode="&#xf0c5;" horiz-adv-x="1792" 
-d="M1696 1152c53 0 96 -43 96 -96v-1216c0 -53 -43 -96 -96 -96h-960c-53 0 -96 43 -96 96v288h-544c-53 0 -96 43 -96 96v672c0 53 31 127 68 164l408 408c37 37 111 68 164 68h416c53 0 96 -43 96 -96v-328c39 23 89 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323
-l-299 -299h299v299zM708 676l316 316v416h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h512v256c0 53 31 127 68 164zM1664 -128v1152h-384v-416c0 -53 -43 -96 -96 -96h-416v-640h896z" />
-    <glyph glyph-name="mastodon-square" unicode="&#xf300;" 
-d="M288 1408h960c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288zM766 1189v0c-140 -1 -275 -17 -354 -53c0 0 -156 -70 -156 -308c0 -55 -1 -119 1 -188c6 -233 43 -463 258 -520
-c99 -26 184 -32 253 -28c124 7 195 45 195 45l-5 90s-88 -28 -188 -25c-99 3 -204 11 -220 133c-1 11 -2 22 -2 34c0 0 97 -24 220 -30c75 -3 146 4 218 13c138 16 257 102 272 179c24 122 22 297 22 297c0 238 -156 308 -156 308c-79 36 -214 52 -354 53h-4zM608 1003v0
-c58 0 103 -23 132 -68l28 -47l28 47c29 45 74 68 132 68c51 0 92 -18 123 -53c31 -34 45 -81 45 -140v-288h-114v280c0 59 -25 88 -75 88c-55 0 -82 -35 -82 -105v-153h-114v153c0 70 -27 105 -82 105c-50 0 -75 -29 -75 -88v-280h-114v288c0 59 15 105 45 140
-c31 35 72 53 123 53z" />
-    <glyph glyph-name="th-large" unicode="&#xf009;" horiz-adv-x="1664" 
-d="M768 512v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM768 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 512v-384
-c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128zM1664 1280v-384c0 -70 -58 -128 -128 -128h-512c-70 0 -128 58 -128 128v384c0 70 58 128 128 128h512c70 0 128 -58 128 -128z" />
-    <glyph glyph-name="at" unicode="&#xf1fa;" 
-d="M972 761c0 144 -75 230 -201 230c-166 0 -344 -165 -344 -432c0 -149 74 -234 204 -234c201 0 341 230 341 436zM1536 640c0 -311 -222 -428 -412 -434c-13 0 -18 -1 -32 -1c-62 0 -111 18 -142 53c-19 22 -30 50 -33 83c-62 -78 -170 -154 -305 -154
-c-215 0 -338 133 -338 365c0 319 221 578 491 578c117 0 211 -50 261 -135l2 19l11 56c1 8 8 18 15 18h118c5 0 10 -7 13 -11c3 -3 4 -11 3 -16l-120 -614c-4 -19 -5 -34 -5 -48c0 -54 16 -65 57 -65c68 2 288 30 288 306c0 389 -251 640 -640 640
-c-353 0 -640 -287 -640 -640s287 -640 640 -640c147 0 291 51 405 144c14 12 34 10 45 -4l41 -49c5 -7 8 -15 7 -24c-1 -8 -5 -16 -12 -22c-136 -111 -309 -173 -486 -173c-423 0 -768 345 -768 768s345 768 768 768c459 0 768 -309 768 -768z" />
-    <glyph glyph-name="file" unicode="&#xf15b;" 
-d="M1024 1024v472c14 -9 26 -18 36 -28l408 -408c10 -10 19 -22 28 -36h-472zM896 992c0 -53 43 -96 96 -96h544v-1056c0 -53 -43 -96 -96 -96h-1344c-53 0 -96 43 -96 96v1600c0 53 43 96 96 96h800v-544z" />
-    <glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="832" 
-d="M832 1504v-1339l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73l225 455c9 19 26 41 49 41z" />
-    <glyph glyph-name="futbol-o" unicode="&#xf1e3;" horiz-adv-x="1792" 
-d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536c495 0 896 -401 896 -896s-401 -896 -896 -896s-896 401 -896 896s401 896 896 896zM1515 186c94 128 149 284 149 454v3l-102 -89l-240 224l63 323l134 -12c-95 131 -231 232 -389 282l53 -124l-287 -159l-287 159
-l53 124c-158 -50 -294 -151 -389 -282l135 12l62 -323l-240 -224l-102 89v-3c0 -170 55 -326 149 -454l30 132l326 -40l139 -298l-116 -69c75 -25 156 -39 240 -39s165 14 240 39l-116 69l139 298l326 40z" />
-    <glyph glyph-name="flag-checkered" unicode="&#xf11e;" horiz-adv-x="1728" 
-d="M768 536v192c-122 -11 -269 -60 -384 -117v-185c116 54 260 100 384 110zM768 954v197c-126 -6 -274 -65 -384 -126v-189c118 61 260 113 384 118zM1600 491v184c-91 -45 -250 -112 -384 -71v224c-13 4 -26 9 -39 15c-115 58 -209 112 -360 112c-16 0 -32 -1 -49 -3v-222
-h19c151 0 275 -54 390 -111c13 -6 26 -11 39 -15v-188c27 -11 57 -17 91 -17c111 0 231 59 293 92zM1600 918v189c-80 -43 -192 -91 -306 -91c-27 0 -53 2 -78 8v-196c134 -38 293 39 384 90zM256 1280c0 -47 -26 -88 -64 -110v-1266c0 -18 -14 -32 -32 -32h-64
-c-18 0 -32 14 -32 32v1266c-38 22 -64 63 -64 110c0 71 57 128 128 128s128 -57 128 -128zM1728 1216v-763c0 -24 -14 -46 -35 -57c-4 -2 -10 -5 -17 -9c-64 -34 -215 -116 -369 -116c-59 0 -112 12 -158 35l-28 14c-101 51 -181 91 -304 91c-144 0 -347 -75 -464 -146
-c-10 -6 -22 -9 -33 -9s-22 3 -32 8c-20 12 -32 33 -32 56v742c0 22 12 43 31 55c64 38 290 163 500 163c167 0 303 -61 418 -117c26 -13 56 -19 89 -19c118 0 248 75 310 112c13 7 24 13 31 17c20 10 43 9 62 -2c19 -12 31 -33 31 -55z" />
-    <glyph glyph-name="genderless" unicode="&#xf22d;" horiz-adv-x="1152" 
-d="M1024 576c0 247 -201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448s448 201 448 448zM1152 576c0 -318 -258 -576 -576 -576s-576 258 -576 576s258 576 576 576s576 -258 576 -576z" />
-    <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1664" 
-d="M1024 704c0 35 -29 64 -64 64h-256c-35 0 -64 -29 -64 -64s29 -64 64 -64h256c35 0 64 29 64 64zM1600 896v-960c0 -35 -29 -64 -64 -64h-1408c-35 0 -64 29 -64 64v960c0 35 29 64 64 64h1408c35 0 64 -29 64 -64zM1664 1344v-256c0 -35 -29 -64 -64 -64h-1536
-c-35 0 -64 29 -64 64v256c0 35 29 64 64 64h1536c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920" 
-d="M384 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM384 704v128c0 35 -29 64 -64 64h-128
-c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 -64v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64zM384 1088v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128
-c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 -64v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1408 704v512c0 35 -29 64 -64 64h-768c-35 0 -64 -29 -64 -64v-512c0 -35 29 -64 64 -64h768c35 0 64 29 64 64z
-M1792 320v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 704v128c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1792 1088v128c0 35 -29 64 -64 64h-128
-c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h128c35 0 64 29 64 64zM1920 1248v-1344c0 -88 -72 -160 -160 -160h-1600c-88 0 -160 72 -160 160v1344c0 88 72 160 160 160h1600c88 0 160 -72 160 -160z" />
-    <glyph glyph-name="power-off" unicode="&#xf011;" 
-d="M1536 640c0 -423 -345 -768 -768 -768s-768 345 -768 768c0 243 112 467 307 613c57 43 137 32 179 -25c43 -56 31 -137 -25 -179c-130 -98 -205 -247 -205 -409c0 -282 230 -512 512 -512s512 230 512 512c0 162 -75 311 -205 409c-56 42 -68 123 -25 179
-c42 57 123 68 179 25c195 -146 307 -370 307 -613zM896 1408v-640c0 -70 -58 -128 -128 -128s-128 58 -128 128v640c0 70 58 128 128 128s128 -58 128 -128z" />
-    <glyph glyph-name="percent" unicode="&#xf295;" 
-d="M1280 256c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM512 1024c0 70 -58 128 -128 128s-128 -58 -128 -128s58 -128 128 -128s128 58 128 128zM1536 256c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
-s384 -172 384 -384zM1440 1344c0 -14 -5 -27 -13 -38l-1056 -1408c-12 -16 -31 -26 -51 -26h-160c-35 0 -64 29 -64 64c0 14 5 27 13 38l1056 1408c12 16 31 26 51 26h160c35 0 64 -29 64 -64zM768 1024c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384
-s384 -172 384 -384z" />
-    <glyph glyph-name="google-wallet" unicode="&#xf1ee;" horiz-adv-x="1756" 
-d="M405 864c20 0 40 -10 52 -26c175 -239 297 -495 362 -774h-446c-80 278 -198 532 -367 749c-16 21 0 51 26 51h373zM964 507c-33 -135 -75 -266 -125 -393c-53 209 -138 405 -256 594c26 145 41 294 44 449c141 -227 253 -443 337 -650zM1063 1216
-c299 -412 521 -920 569 -1472h-451c-33 534 -279 1040 -553 1472h435zM1756 640c0 -278 -38 -570 -101 -812c-44 370 -166 738 -359 1083c-17 202 -53 398 -106 584c-5 21 10 41 31 41h359c28 0 54 -19 61 -46c76 -270 115 -556 115 -850z" />
-    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664" 
-d="M1639 1058c25 -36 32 -83 18 -129l-275 -906c-25 -85 -113 -151 -199 -151h-923c-102 0 -211 81 -248 185c-16 45 -16 89 -2 127c2 20 6 40 7 64c1 16 -8 29 -6 41c4 24 25 41 41 68c30 50 64 131 75 183c5 19 -5 41 0 58c5 19 24 33 34 51c27 46 62 135 67 182
-c2 21 -8 44 -2 60c7 23 29 33 44 53c24 33 64 128 70 181c2 17 -8 34 -5 52c4 19 28 39 44 62c42 62 50 199 177 163l-1 -3c17 4 34 9 51 9h761c47 0 89 -21 114 -56c26 -36 32 -83 18 -130l-274 -906c-47 -154 -73 -188 -200 -188h-869c-13 0 -29 -3 -38 -15
-c-8 -12 -9 -21 -1 -43c20 -58 89 -70 144 -70h923c37 0 80 21 91 57l300 987c6 19 6 39 5 57c23 -9 44 -23 59 -43zM575 1056c-6 -18 4 -32 22 -32h608c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32zM492 800c-6 -18 4 -32 22 -32h608
-c17 0 36 14 42 32l21 64c6 18 -4 32 -22 32h-608c-17 0 -36 -14 -42 -32z" />
-    <glyph glyph-name="thermometer-three-quarters" unicode="&#xf2c8;" horiz-adv-x="1024" 
-d="M640 192c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 80 50 153 128 181v651h128v-651c78 -28 128 -101 128 -181zM768 192c0 105 -50 197 -128 256v768c0 106 -86 192 -192 192s-192 -86 -192 -192v-768c-78 -59 -128 -151 -128 -256c0 -177 143 -320 320 -320
-s320 143 320 320zM896 192c0 -247 -201 -448 -448 -448s-448 201 -448 448c0 122 49 232 128 313v711c0 177 143 320 320 320s320 -143 320 -320v-711c79 -81 128 -191 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z
-" />
-    <glyph glyph-name="transgender" unicode="&#xf224;" horiz-adv-x="1408" 
-d="M1024 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
-h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-302 33 -535 302 -510 618c21 272 237 495 507 526c162 19 312 -31 426 -122l255 254h-134c-18 0 -32 14 -32 32v64zM576 256c247 0 448 201 448 448s-201 448 -448 448
-s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="cloud-upload" unicode="&#xf0ee;" horiz-adv-x="1920" 
-d="M1280 672c0 8 -3 17 -9 23l-352 352c-6 6 -14 9 -23 9c-8 0 -17 -3 -23 -9l-351 -351c-6 -7 -10 -15 -10 -24c0 -18 14 -32 32 -32h224v-352c0 -17 15 -32 32 -32h192c17 0 32 15 32 32v352h224c18 0 32 15 32 32zM1920 384c0 -212 -172 -384 -384 -384h-1088
-c-247 0 -448 201 -448 448c0 174 101 332 258 405c-1 15 -2 29 -2 43c0 283 229 512 512 512c208 0 395 -126 474 -318c46 40 105 62 166 62c141 0 256 -115 256 -256c0 -49 -14 -97 -41 -138c174 -41 297 -196 297 -374z" />
-    <glyph glyph-name="bullseye" unicode="&#xf140;" 
-d="M1024 640c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1152 640c0 212 -172 384 -384 384s-384 -172 -384 -384s172 -384 384 -384s384 172 384 384zM1280 640c0 -283 -229 -512 -512 -512s-512 229 -512 512s229 512 512 512
-s512 -229 512 -512zM1408 640c0 353 -287 640 -640 640s-640 -287 -640 -640s287 -640 640 -640s640 287 640 640zM1536 640c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="openid" unicode="&#xf19b;" horiz-adv-x="1792" 
-d="M1086 1536v-1536l-272 -128c-460 41 -814 286 -814 583c0 286 330 524 767 577v-172c-286 -50 -496 -212 -496 -405c0 -204 234 -373 543 -412v1360zM1755 954l37 -390l-525 114l147 83c-78 46 -174 80 -280 99v172c185 -22 351 -78 481 -157z" />
-    <glyph glyph-name="repeat" unicode="&#xf01e;" 
-d="M1536 1280v-448c0 -35 -29 -64 -64 -64h-448c-26 0 -49 16 -59 40c-10 23 -5 51 14 69l138 138c-94 87 -218 137 -349 137c-282 0 -512 -230 -512 -512s230 -512 512 -512c159 0 306 72 404 199c5 7 14 11 23 12c9 0 18 -3 25 -9l137 -138c12 -11 12 -30 2 -43
-c-146 -176 -362 -277 -591 -277c-423 0 -768 345 -768 768s345 768 768 768c197 0 388 -79 529 -212l130 129c18 19 46 24 70 14c23 -10 39 -33 39 -59z" />
-    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664" 
-d="M1664 889c0 -18 -13 -35 -26 -48l-363 -354l86 -500c1 -7 1 -13 1 -20c0 -26 -12 -50 -41 -50c-14 0 -28 5 -40 12l-449 236l-449 -236c-13 -7 -26 -12 -40 -12c-29 0 -42 24 -42 50c0 7 1 13 2 20l86 500l-364 354c-12 13 -25 30 -25 48c0 30 31 42 56 46l502 73
-l225 455c9 19 26 41 49 41s40 -22 49 -41l225 -455l502 -73c24 -4 56 -16 56 -46z" />
-    <glyph glyph-name="users" unicode="&#xf0c0;" horiz-adv-x="1920" 
-d="M593 640c-104 -3 -198 -48 -265 -128h-134c-100 0 -194 48 -194 159c0 81 -3 353 124 353c21 0 125 -85 260 -85c46 0 90 8 133 23c-3 -22 -5 -44 -5 -66c0 -91 29 -181 81 -256zM1664 3c0 -162 -107 -259 -267 -259h-874c-160 0 -267 97 -267 259c0 226 53 573 346 573
-c34 0 158 -139 358 -139s324 139 358 139c293 0 346 -347 346 -573zM640 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256zM1344 896c0 -212 -172 -384 -384 -384s-384 172 -384 384s172 384 384 384s384 -172 384 -384zM1920 671
-c0 -111 -94 -159 -194 -159h-134c-67 80 -161 125 -265 128c52 75 81 165 81 256c0 22 -2 44 -5 66c43 -15 87 -23 133 -23c135 0 239 85 260 85c127 0 124 -272 124 -353zM1792 1280c0 -141 -115 -256 -256 -256s-256 115 -256 256s115 256 256 256s256 -115 256 -256z" />
-    <glyph glyph-name="transgender-alt" unicode="&#xf225;" horiz-adv-x="1664" 
-d="M1280 1504c0 18 14 32 32 32h288c35 0 64 -29 64 -64v-288c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v134l-254 -255c78 -98 126 -223 126 -359c0 -296 -224 -540 -512 -572v-132h96c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-96v-96c0 -18 -14 -32 -32 -32
-h-64c-18 0 -32 14 -32 32v96h-96c-18 0 -32 14 -32 32v64c0 18 14 32 32 32h96v132c-288 32 -512 276 -512 572c0 136 48 261 126 359l-52 53l-101 -111c-12 -13 -32 -14 -45 -3l-48 44c-13 11 -14 32 -2 45l105 115l-111 112v-134c0 -18 -14 -32 -32 -32h-64
-c-18 0 -32 14 -32 32v288c0 35 29 64 64 64h288c18 0 32 -14 32 -32v-64c0 -18 -14 -32 -32 -32h-133l106 -107l86 94c12 13 32 14 45 3l48 -44c13 -11 14 -32 2 -45l-90 -99l57 -56c98 78 223 126 359 126s261 -48 359 -126l255 254h-134c-18 0 -32 14 -32 32v64zM832 256
-c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="chevron-up" unicode="&#xf077;" horiz-adv-x="1612" 
-d="M1593 205l-166 -165c-25 -25 -65 -25 -90 0l-531 531l-531 -531c-25 -25 -65 -25 -90 0l-166 165c-25 25 -25 66 0 91l742 741c25 25 65 25 90 0l742 -741c25 -25 25 -66 0 -91z" />
-    <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1428" 
-d="M1364 486c61 -35 82 -114 47 -175l-64 -110c-35 -61 -114 -82 -175 -47l-266 153v-307c0 -70 -58 -128 -128 -128h-128c-70 0 -128 58 -128 128v307l-266 -153c-61 -35 -140 -14 -175 47l-64 110c-35 61 -14 140 47 175l266 154l-266 154c-61 35 -82 114 -47 175l64 110
-c35 61 114 82 175 47l266 -153v307c0 70 58 128 128 128h128c70 0 128 -58 128 -128v-307l266 153c61 35 140 14 175 -47l64 -110c35 -61 14 -140 -47 -175l-266 -154z" />
-    <glyph glyph-name="plus-circle" unicode="&#xf055;" 
-d="M1216 576v128c0 35 -29 64 -64 64h-256v256c0 35 -29 64 -64 64h-128c-35 0 -64 -29 -64 -64v-256h-256c-35 0 -64 -29 -64 -64v-128c0 -35 29 -64 64 -64h256v-256c0 -35 29 -64 64 -64h128c35 0 64 29 64 64v256h256c35 0 64 29 64 64zM1536 640
-c0 -424 -344 -768 -768 -768s-768 344 -768 768s344 768 768 768s768 -344 768 -768z" />
-    <glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="1664" 
-d="M1280 832c0 35 -29 64 -64 64c-17 0 -33 -7 -45 -19l-147 -146v293c0 35 -29 64 -64 64s-64 -29 -64 -64v-293l-147 146c-12 12 -28 19 -45 19c-35 0 -64 -29 -64 -64c0 -17 7 -33 19 -45l256 -256c12 -12 28 -19 45 -19s33 7 45 19l256 256c12 12 19 28 19 45zM640 0
-c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1536 0c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128s128 -57 128 -128zM1664 1088v-512c0 -32 -24 -60 -57 -64l-1044 -122c4 -22 13 -47 13 -70s-14 -44 -24 -64h920
-c35 0 64 -29 64 -64s-29 -64 -64 -64h-1024c-35 0 -64 29 -64 64c0 31 47 108 61 137l-177 823h-204c-35 0 -64 29 -64 64s29 64 64 64h256c68 0 69 -80 79 -128h1201c35 0 64 -29 64 -64z" />
-    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1664" 
-d="M338 829l494 -305l-342 -285l-490 319zM1324 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM490 1418l342 -285l-494 -304l-338 270zM1326 829l338 -271l-489 -319l-343 285zM1175 1418l489 -319l-338 -270l-494 304z" />
-    <glyph glyph-name="debian" unicode="&#xf2ff;" horiz-adv-x="1440" 
-d="M1 954c3 22 -11 29 15 62c-4 -17 -6 -33 -15 -62zM61 1152c0 -18 30 18 8 -31c-40 -28 -3 -12 -8 31zM754 1527c20 7 49 4 70 9c-28 -2 -55 -3 -82 -7l12 -2zM1399 728c-8 -61 -27 -121 -56 -176c26 52 43 108 51 165zM582 550l10 -27c-12 21 -26 42 -33 66
-c7 -14 13 -28 23 -39zM536 548c25 -47 38 -61 56 -96c-25 21 -40 49 -60 76zM1274 762c2 -48 -15 -72 -29 -113l-25 -13c-21 -41 2 -26 -13 -58c-33 -29 -100 -91 -121 -97c-16 0 11 19 14 26c-44 -30 -36 -46 -103 -64l-2 4c-166 -78 -395 76 -392 287
-c-2 -13 -5 -10 -9 -15c-9 108 50 218 149 262c97 48 210 28 279 -37c-38 50 -113 103 -203 98c-88 -1 -171 -57 -198 -118c-45 -28 -49 -109 -69 -124c-26 -194 49 -277 178 -376c20 -14 5 -16 8 -26c-43 20 -82 50 -114 87c17 -25 35 -49 59 -68c-40 14 -93 98 -109 101
-c69 -124 282 -218 393 -172c-51 -2 -117 -1 -175 20c-24 12 -57 39 -51 44c152 -57 308 -43 439 62c33 26 70 70 81 71c-16 -24 2 -12 -10 -33c33 54 -14 22 35 93l18 -25c-7 45 55 99 49 169c14 22 16 -23 1 -73c21 55 5 65 10 110c6 -15 14 -32 18 -48
-c-14 53 14 89 21 120c-7 3 -22 -23 -25 40c0 27 8 14 11 21c-5 3 -19 24 -28 64c6 9 17 -25 25 -26c-5 32 -15 57 -15 81c-25 51 -9 -7 -29 22c-26 82 22 19 25 56c40 -58 63 -147 73 -184c-8 45 -21 89 -37 131c12 -5 -19 93 16 28c-38 138 -161 266 -274 327
-c14 -13 31 -29 25 -31c-56 34 -46 37 -54 51c-46 19 -49 -1 -79 0c-86 46 -103 40 -183 69l4 -17c-57 19 -67 -7 -129 0c-4 3 20 11 39 14c-55 -7 -53 11 -107 -2c13 9 28 15 42 23c-45 -3 -107 -26 -88 -5c-74 -33 -205 -78 -278 -147l-2 15c-34 -40 -147 -121 -156 -173
-l-9 -2c-17 -30 -29 -64 -43 -94c-23 -39 -33 -15 -30 -21c-45 -91 -68 -168 -87 -231c14 -21 1 -123 6 -206c-23 -408 286 -804 624 -896c50 -18 123 -17 186 -19c-74 21 -84 11 -156 36c-52 24 -63 53 -100 85l15 -26c-72 26 -42 31 -101 50l16 20c-23 2 -62 40 -73 61
-l-25 -1c-31 38 -47 65 -46 86l-8 -15c-9 16 -114 142 -60 113c-10 9 -23 15 -37 41l11 13c-26 33 -48 76 -46 90c14 -19 23 -22 32 -25c-65 162 -68 9 -118 165l10 1c-8 12 -13 25 -19 38l5 45c-47 54 -14 232 -7 329c5 39 40 81 66 147l-16 3c31 53 174 214 241 206
-c32 41 -6 1 -12 11c71 74 93 52 141 65c52 31 -45 -13 -20 11c89 23 63 52 180 64c12 -7 -28 -11 -38 -20c75 36 235 28 340 -20c122 -57 259 -225 264 -383l6 -2c-3 -63 10 -135 -12 -202l15 32zM779 1504l-11 -2l11 1v1zM748 1513c53 -2 48 -5 31 -9c3 4 -15 6 -31 9z
-M1079 782c-5 -22 -10 13 -16 16c5 20 20 37 16 -16zM1020 629c18 24 30 51 35 79c-4 -20 -15 -37 -25 -55c-56 -35 -5 21 0 42c-60 -75 -8 -45 -10 -66zM860 589c-30 0 6 -15 45 -21c8 7 21 18 29 25c-24 -6 -49 -6 -74 -4z" />
-    <glyph glyph-name="newspaper-o" unicode="&#xf1ea;" horiz-adv-x="2048" 
-d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960c0 -35 29 -64 64 -64
-s64 29 64 64zM1920 192v1088h-1536v-1088c0 -22 -4 -44 -11 -64h1483c35 0 64 29 64 64zM2048 1408v-1216c0 -106 -86 -192 -192 -192h-1664c-106 0 -192 86 -192 192v1088h256v128h1792z" />
-    <glyph glyph-name="building" unicode="&#xf1ad;" horiz-adv-x="1408" 
-d="M1344 1536c35 0 64 -29 64 -64v-1664c0 -35 -29 -64 -64 -64h-1280c-35 0 -64 29 -64 64v1664c0 35 29 64 64 64h1280zM512 1248v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 992v-64c0 -18 14 -32 32 -32h64
-c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 736v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32zM512 480v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32v64c0 18 -14 32 -32 32h-64
-c-18 0 -32 -14 -32 -32zM384 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 672v64
-c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM384 1184v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64
-c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 -96v192c0 18 -14 32 -32 32h-320c-18 0 -32 -14 -32 -32v-192c0 -18 14 -32 32 -32h320c18 0 32 14 32 32zM896 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z
-M896 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM896 1184v64c0 18 -14 32 -32 32h-64
-c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 160v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 416v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64
-c18 0 32 14 32 32zM1152 672v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 928v64c0 18 -14 32 -32 32h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32zM1152 1184v64c0 18 -14 32 -32 32
-h-64c-18 0 -32 -14 -32 -32v-64c0 -18 14 -32 32 -32h64c18 0 32 14 32 32z" />
-    <glyph glyph-name="bitbucket" unicode="&#xf171;" horiz-adv-x="1408" 
-d="M815 677c11 -84 -91 -150 -162 -107c-80 35 -80 162 -2 198c67 41 164 -13 164 -91zM926 698c-18 142 -179 236 -310 177c-83 -37 -139 -125 -135 -218c5 -122 121 -222 243 -211s217 130 202 252zM1165 1240c-44 58 -119 68 -185 79c-187 30 -379 31 -566 -2
-c-62 -10 -132 -21 -171 -77c64 -60 155 -69 237 -79c148 -19 300 -20 448 -1c83 10 175 18 237 80zM1222 205c-28 -98 -12 -230 -116 -287c-179 -99 -396 -110 -593 -75c-104 19 -226 52 -283 150c-25 96 -41 194 -57 292l6 16l18 9c298 -197 715 -197 1014 0
-c47 -14 12 -71 11 -105zM1403 1166c-34 -219 -73 -437 -111 -655c-11 -64 -73 -100 -125 -127c-187 -94 -405 -110 -610 -88c-139 15 -281 52 -394 139c-53 41 -53 111 -63 170c-35 205 -75 410 -100 617c12 90 113 129 188 157c100 37 207 54 313 64c226 22 457 14 676 -50
-c78 -23 162 -55 215 -122c24 -31 16 -70 11 -105z" />
-    <glyph glyph-name="yelp" unicode="&#xf1e9;" horiz-adv-x="1366" 
-d="M688 217v-127c-1 -282 -1 -292 -6 -305c-8 -21 -26 -35 -51 -40c-72 -12 -297 71 -344 127c-10 11 -15 24 -17 36c-1 9 1 18 4 26c5 14 14 25 215 263c0 0 1 0 60 70c20 25 56 33 89 21c33 -13 51 -41 50 -71zM539 468c-2 -35 -22 -61 -52 -70l-120 -39
-c-269 -86 -278 -88 -292 -88c-22 1 -42 14 -54 36c-8 16 -14 43 -17 75c-11 98 2 245 31 291c14 22 34 33 56 32c15 0 27 -6 317 -124c0 0 -1 -1 84 -34c30 -12 49 -43 47 -79zM1365 171c-10 -72 -159 -261 -227 -288c-23 -9 -46 -7 -63 7c-12 9 -24 27 -184 287l-47 77
-c-18 28 -15 64 8 92c22 27 54 36 83 26c0 0 1 -1 119 -40c269 -88 278 -91 289 -100c18 -14 26 -35 22 -61zM693 803c5 -104 -39 -117 -54 -122c-14 -4 -58 -17 -114 71c-368 581 -378 598 -378 598c-5 21 1 44 19 62c55 57 354 141 432 121c25 -6 43 -22 49 -45
-c4 -25 40 -564 46 -685zM1355 695c2 -25 -7 -46 -26 -59c-12 -8 -24 -12 -329 -86c-49 -11 -76 -18 -91 -23l1 2c-30 -8 -64 6 -83 36s-18 63 0 87c0 0 1 1 75 102c164 224 172 235 184 243c19 13 42 13 65 2c65 -31 196 -226 204 -301v-3z" />
-    <glyph glyph-name="neuter" unicode="&#xf22c;" horiz-adv-x="1152" 
-d="M1152 960c0 -296 -224 -540 -512 -572v-612c0 -18 -14 -32 -32 -32h-64c-18 0 -32 14 -32 32v612c-288 32 -512 276 -512 572c0 318 258 576 576 576s576 -258 576 -576zM576 512c247 0 448 201 448 448s-201 448 -448 448s-448 -201 -448 -448s201 -448 448 -448z" />
-    <glyph glyph-name="behance-square" unicode="&#xf1b5;" 
-d="M1248 1408c159 0 288 -129 288 -288v-960c0 -159 -129 -288 -288 -288h-960c-159 0 -288 129 -288 288v960c0 159 129 288 288 288h960zM499 1041h-371v-787h382c143 0 277 68 277 228c0 99 -47 172 -143 200c70 34 107 85 107 164c0 157 -117 195 -252 195zM477 723
-h-176v184h163c62 0 119 -17 119 -90c0 -67 -44 -94 -106 -94zM486 388h-185v217h189c76 0 124 -33 124 -113s-57 -104 -128 -104zM1136 356c-92 0 -140 54 -140 145h411c1 10 1 20 1 30c0 168 -99 309 -278 309c-173 0 -292 -131 -292 -302c0 -178 112 -299 292 -299
-c137 0 225 61 267 191h-138c-15 -48 -76 -74 -123 -74zM1126 722c78 0 117 -47 124 -122h-254c5 75 55 122 130 122zM964 988v-77h319v77h-319z" />
-    <glyph glyph-name="wifi" unicode="&#xf1eb;" horiz-adv-x="1964" 
-d="M982 13c-26 0 -166 140 -166 167c0 49 128 76 166 76s166 -27 166 -76c0 -27 -140 -167 -166 -167zM1252 284c-14 0 -123 100 -270 100c-148 0 -255 -100 -270 -100c-24 0 -169 144 -169 168c0 9 4 17 10 23c107 106 281 165 429 165s322 -59 429 -165
-c6 -6 10 -14 10 -23c0 -24 -145 -168 -169 -168zM1525 556c-8 0 -17 4 -23 8c-165 128 -304 204 -520 204c-302 0 -532 -212 -543 -212c-23 0 -167 144 -167 168c0 8 4 16 10 22c179 179 449 278 700 278s521 -99 700 -278c6 -6 10 -14 10 -22c0 -24 -144 -168 -167 -168z
-M1796 827c-8 0 -16 4 -22 9c-231 203 -480 316 -792 316s-561 -113 -792 -316c-6 -5 -14 -9 -22 -9c-23 0 -168 144 -168 168c0 9 4 17 10 23c253 251 618 390 972 390s719 -139 972 -390c6 -6 10 -14 10 -23c0 -24 -145 -168 -168 -168z" />
-    <glyph glyph-name="youtube" unicode="&#xf167;" horiz-adv-x="1482" 
-d="M944 292v-211c0 -45 -13 -67 -39 -67c-15 0 -30 7 -45 22v301c15 15 30 22 45 22c26 0 39 -23 39 -67zM1282 291v-46h-90v46c0 45 15 68 45 68s45 -23 45 -68zM316 509h107v94h-312v-94h105v-569h100v569zM604 -60h89v494h-89v-378c-20 -28 -39 -42 -57 -42
-c-12 0 -19 7 -21 21c-1 3 -1 14 -1 35v364h-89v-391c0 -35 3 -58 8 -73c8 -25 29 -37 58 -37c32 0 66 20 102 61v-54zM1033 88v197c0 46 -2 79 -9 99c-11 37 -36 56 -71 56c-33 0 -64 -18 -93 -54v217h-89v-663h89v48c30 -37 61 -55 93 -55c35 0 60 19 71 55
-c7 21 9 54 9 100zM1371 98v13h-91c0 -36 -1 -56 -2 -61c-5 -24 -18 -36 -40 -36c-31 0 -46 23 -46 69v87h179v103c0 53 -9 91 -27 116c-26 34 -61 51 -106 51c-46 0 -81 -17 -107 -51c-19 -25 -28 -63 -28 -116v-173c0 -53 10 -92 29 -116c26 -34 61 -51 108 -51
-s84 18 108 53c11 16 19 34 21 54c2 9 2 29 2 58zM763 1011v210c0 46 -13 69 -43 69c-29 0 -43 -23 -43 -69v-210c0 -46 14 -70 43 -70c30 0 43 24 43 70zM1482 260c0 -115 -1 -238 -26 -350c-19 -79 -83 -137 -160 -145c-184 -21 -370 -21 -555 -21s-371 0 -555 21
-c-77 8 -142 66 -160 145c-26 112 -26 235 -26 350c0 116 1 238 26 350c19 79 83 137 161 146c183 20 369 20 554 20s371 0 555 -20c77 -9 142 -67 160 -146c26 -112 26 -234 26 -350zM484 1536h102l-121 -399v-271h-100v271c-9 49 -29 119 -61 212c-22 62 -44 125 -65 187
-h106l71 -263zM854 1203v-175c0 -53 -9 -93 -28 -118c-25 -34 -60 -51 -106 -51c-45 0 -80 17 -105 51c-19 26 -28 65 -28 118v175c0 53 9 92 28 117c25 34 60 51 105 51c46 0 81 -17 106 -51c19 -25 28 -64 28 -117zM1189 1365v-499h-91v55c-36 -42 -70 -62 -103 -62
-c-29 0 -50 12 -59 37c-5 15 -8 39 -8 75v394h91v-367c0 -21 0 -33 1 -35c2 -14 9 -22 21 -22c18 0 37 14 57 43v381h91z" />
-    <glyph glyph-name="angle-double-down" unicode="&#xf103;" horiz-adv-x="998" 
-d="M998 672c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23zM998 1056
-c0 -8 -4 -17 -10 -23l-466 -466c-6 -6 -15 -10 -23 -10s-17 4 -23 10l-466 466c-6 6 -10 15 -10 23s4 17 10 23l50 50c6 6 14 10 23 10c8 0 17 -4 23 -10l393 -393l393 393c6 6 15 10 23 10s17 -4 23 -10l50 -50c6 -6 10 -15 10 -23z" />
-    <glyph glyph-name="sort-alpha-asc" unicode="&#xf15d;" horiz-adv-x="1629" 
-d="M1159 1128h177l-72 218l-12 47c-1 8 -2 14 -2 20h-4l-3 -20c-3 -12 -4 -27 -11 -47zM704 96c0 -9 -4 -17 -10 -24l-319 -319c-7 -6 -15 -9 -23 -9s-16 3 -23 9l-320 320c-9 10 -12 23 -7 35s17 20 30 20h192v1376c0 18 14 32 32 32h192c18 0 32 -14 32 -32v-1376h192
-c18 0 32 -14 32 -32zM1540 -23v-233h-584v90l369 529c8 12 16 22 21 27l11 9v3c-4 0 -8 -1 -14 -1c-8 -2 -18 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530c-6 -9 -14 -18 -21 -26l-11 -11v-2l14 2c9 2 18 2 30 2h248v119h121zM1629 874v-106h-288v106h75l-47 144h-243
-l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70z" />
-    <glyph glyph-name="area-chart" unicode="&#xf1fe;" horiz-adv-x="2048" 
-d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
-    <glyph glyph-name="dev-to" unicode="&#xf316;" 
-d="M39 1403v0c13 5 121 6 735 5c717 -1 721 -1 734 -9c7 -5 15 -14 20 -21c8 -13 8 -16 8 -739s0 -726 -8 -739c-5 -7 -13 -15 -20 -20c-13 -8 -16 -8 -739 -8s-726 0 -739 8c-7 5 -16 13 -21 20c-8 13 -8 16 -9 731c0 490 0 723 3 733c5 19 18 33 36 39zM404 935
-c-18 4 -53 6 -119 6h-93v-603h84c46 0 96 1 111 3c72 9 131 63 144 132c5 26 5 306 0 332c-6 31 -20 59 -43 83c-25 26 -50 40 -84 47zM897 886v55h-118c-92 0 -121 -2 -133 -6c-20 -7 -42 -30 -47 -50c-3 -11 -4 -89 -3 -254c1 -265 -1 -250 27 -274c20 -17 39 -19 163 -19
-h111v109l-95 1l-96 1l-1 69v69h116v109h-116v136h192v54zM1081 933c-3 8 -4 8 -62 8h-59l3 -10c26 -106 136 -514 143 -528c11 -23 33 -49 49 -57c18 -9 47 -7 67 4c16 9 45 45 50 62c8 25 138 522 138 525s-16 4 -60 3l-58 -1l-52 -198c-28 -109 -52 -199 -53 -202
-s-24 83 -52 190s-52 199 -54 204zM301 639v193l41 -1c37 -2 42 -2 56 -11c28 -18 27 -18 27 -178c0 -164 0 -166 -29 -183c-15 -9 -22 -10 -56 -11l-39 -2v193z" />
-    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408" 
-d="M1280 832c0 35 -29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64s64 29 64 64zM1408 832c0 -84 -53 -154 -128 -181v-395c0 -212 -201 -384 -448 -384s-448 172 -448 384v132c-217 27 -384 187 -384 380v512c0 35 29 64 64 64c6 0 11 -1 16 -2c22 39 64 66 112 66
-c71 0 128 -57 128 -128s-57 -128 -128 -128c-23 0 -45 7 -64 18v-402c0 -141 144 -256 320 -256s320 115 320 256v402c-19 -11 -41 -18 -64 -18c-71 0 -128 57 -128 128s57 128 128 128c48 0 90 -27 112 -66c5 1 10 2 16 2c35 0 64 -29 64 -64v-512
-c0 -193 -167 -353 -384 -380v-132c0 -141 144 -256 320 -256s320 115 320 256v395c-75 27 -128 97 -128 181c0 106 86 192 192 192s192 -86 192 -192z" />
-    <glyph glyph-name="step-forward" unicode="&#xf051;" horiz-adv-x="1024" 
-d="M45 -115c-25 -25 -45 -16 -45 19v1472c0 35 20 44 45 19l710 -710c6 -6 10 -12 13 -19v678c0 35 29 64 64 64h128c35 0 64 -29 64 -64v-1408c0 -35 -29 -64 -64 -64h-128c-35 0 -64 29 -64 64v678c-3 -7 -7 -13 -13 -19z" />
-    <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1542" 
-d="M1497 1395c25 25 45 16 45 -19v-1472c0 -35 -20 -44 -45 -19l-710 710c-6 6 -10 12 -13 19v-710c0 -35 -20 -44 -45 -19l-710 710c-25 25 -25 65 0 90l710 710c25 25 45 16 45 -19v-710c3 7 7 13 13 19z" />
-  </font>
-</defs></svg>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf b/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf
deleted file mode 100644 (file)
index 6cf62ef..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 b/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.448c34a56d699c29117a.woff2
deleted file mode 100644 (file)
index 64539b5..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.448c34a56d699c29117a.woff2 and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.89889688147bd7575d63.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.89889688147bd7575d63.svg
deleted file mode 100644 (file)
index 94fb549..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph horiz-adv-x="0" />
-<glyph horiz-adv-x="400" />
-<glyph unicode=" " />
-<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
-<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
-<glyph unicode="&#x2000;" horiz-adv-x="650" />
-<glyph unicode="&#x2001;" horiz-adv-x="1300" />
-<glyph unicode="&#x2002;" horiz-adv-x="650" />
-<glyph unicode="&#x2003;" horiz-adv-x="1300" />
-<glyph unicode="&#x2004;" horiz-adv-x="433" />
-<glyph unicode="&#x2005;" horiz-adv-x="325" />
-<glyph unicode="&#x2006;" horiz-adv-x="216" />
-<glyph unicode="&#x2007;" horiz-adv-x="216" />
-<glyph unicode="&#x2008;" horiz-adv-x="162" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="325" />
-<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
-<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
-<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
-<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
-<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
-<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
-<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
-<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
-<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
-<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
-<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
-<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
-<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
-<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
-<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
-<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
-<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
-<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
-<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
-<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
-<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
-<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
-<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
-<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
-<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
-<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
-<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
-<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
-<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
-<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
-<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
-<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
-<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
-<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
-<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
-<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
-<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
-<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
-<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
-<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
-<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
-<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
-<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
-<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
-<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
-<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
-<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
-<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
-<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
-<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
-<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
-<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
-<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
-<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
-<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
-<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
-<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
-<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
-<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
-<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
-<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
-<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
-<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
-<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
-<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
-<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
-<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
-<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
-<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
-<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
-<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
-<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
-<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
-<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
-<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
-<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
-<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
-<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
-<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
-<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
-<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
-<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
-<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
-<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
-<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
-<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
-<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
-<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
-<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
-<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
-<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
-<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
-<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
-<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
-<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
-<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
-<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
-<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
-<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
-<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
-<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
-<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
-<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
-<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
-<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
-<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
-<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
-<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
-<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
-<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
-<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
-<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
-<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
-<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
-<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
-<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
-<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
-<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
-<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
-<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
-<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
-<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
-<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
-<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
-<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
-<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
-<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
-<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
-<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
-<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
-<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
-<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
-<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
-<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
-<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
-<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
-<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
-<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
-<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
-<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
-<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
-<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
-<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
-<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
-<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
-<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
-<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
-<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
-<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
-<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
-<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
-<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
-<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
-<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
-<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
-<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
-<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
-<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
-<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
-<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
-<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
-<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
-<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
-<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
-<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
-<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
-<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
-<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
-<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
-</font>
-</defs></svg> 
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf b/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf
deleted file mode 100644 (file)
index 1413fc6..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot b/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot
deleted file mode 100644 (file)
index b93a495..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.f4769f9bdb7466be6508.eot and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.fa2772327f55d8198301.woff b/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.fa2772327f55d8198301.woff
deleted file mode 100644 (file)
index 9e61285..0000000
Binary files a/ceph/src/pybind/mgr/dashboard/frontend/dist/glyphicons-halflings-regular.fa2772327f55d8198301.woff and /dev/null differ
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/index.html b/ceph/src/pybind/mgr/dashboard/frontend/dist/index.html
deleted file mode 100644 (file)
index ec3c579..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-  <meta charset="utf-8">
-  <title>Ceph</title>
-
-  <script>
-    document.write('<base href="' + document.location+ '" />');
-  </script>
-
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <link rel="icon" type="image/x-icon" href="favicon.ico">
-<link rel="stylesheet" href="styles.e201ff296d50970399c4.css"></head>
-<body>
-  <noscript>
-    <div class="noscript container"
-         ng-if="false">
-      <div class="jumbotron alert alert-danger">
-        <h2 i18n>JavaScript required!</h2>
-        <p i18n>A browser with JavaScript enabled is required in order to use this service.</p>
-        <p i18n>When using Internet Explorer, please check your security settings and add this address to your trusted sites.</p>
-      </div>
-    </div>
-  </noscript>
-
-  <cd-root></cd-root>
-<script type="text/javascript" src="runtime.c2fa00b158659de6ccaa.js"></script><script type="text/javascript" src="polyfills.f31db31652a3fd9f4bca.js"></script><script type="text/javascript" src="scripts.fc88ef4a23399c760d0b.js"></script><script type="text/javascript" src="main.7ef9e458bdf2879bd531.js"></script></body>
-</html>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/main.7ef9e458bdf2879bd531.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/main.7ef9e458bdf2879bd531.js
deleted file mode 100644 (file)
index ddafada..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+0ag":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var e=/ceph version\s+[^ ]+\s+\(.+\)\s+(.+)\s+\((.+)\)/.exec(t);return e?"dev"===e[2]?"master":e[1]:t},t}()},"+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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n 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"))},"+tJ4":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(t){return function(e){for(var n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.closed||e.complete()}}},"+umK":function(t,e,n){"use strict";function a(){}n.d(e,"a",function(){return a})},"//9w":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".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\u017ees",past:"ma\u014bit %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\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},"/21U":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("isby");function r(t){return!Object(a.a)(t)&&t-parseFloat(t)+1>=0}},"/6aS":function(t,e){t.exports='<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\u0144</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</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\u0105dca modu\u0142\xf3w</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Powiadomienia</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\u0119p 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\xf3w NFS</target>\n      </trans-unit>\n      <trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">\n        <source>Filesystems</source>\n        <target>Systemy plik\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Dost\u0119p 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\u017cytkownicy</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>Trwa pobieranie danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> dla \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>"/>. Czekaj...\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>Wy\u015bwietlanie wcze\u015bniej buforowanych danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \ndla \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>Nie mo\u017cna za\u0142adowa\u0107 danych \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> dla\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>"/>. Sprawd\u017a prosz\u0119 zdrowie klastra. \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="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Wybierz j\u0119zyk</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Trwa \u0142adowanie 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>Sprawd\u017a prosz\u0119 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>jak\nskonfigurowa\u0107 i uruchomi\u0107 funkcje monitoringu.\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>Pulpit Grafany nie istnieje. Sprawd\u017a prosz\u0119 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> jak\ndodaj pulpity do Grafany.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Wyb\xf3r 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>B\u0142\u0105d wczytywania danych.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ustawienia</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\xf3w z domy\u015blnych warto\u015bci przewa\u017cnie nie jest potrzebna.</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\u017a</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="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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Pole jest wymagane.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>B\u0142\u0119dna sk\u0142adnia nazwy IQN.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN ma nast\u0119puj\u0105c\u0105 notacj\u0119 \u201eiqn. $ Rok-$ miesi\u0105c. $ odwr\xf3conyAdres: $ zdefiniowanaNazwa\u201d</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\u0142ad: 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\u0119cej 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\u0142 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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Wymagane s\u0105 przynajmniej \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bramy.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Ten obraz zmodyfikowa\u0142 ustawienia. </target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Wymagany jest przynajmniej 1 obraz.</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="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\u0107 unikalny.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>U\u017cytkownik</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\u017cytkownik\xf3w musz\u0105 mie\u0107 d\u0142ugo\u015b\u0107 od 8 do 64 znak\xf3w i mog\u0105 zawiera\u0107 jedynie litery,  \'.\', \'@\', \'-\', \'_\' lub  \':\'.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Has\u0142o</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Wsp\xf3lny u\u017cytkownik </target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Wsp\xf3lne has\u0142o</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\u017c\u0105 do grupy. Obrazy b\u0119d\u0105 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nazwa</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Dodaj grup\u0119</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Zatwierd\u017a</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>Jeste\u015b pewny, \u017ce chcesz  \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\xa0 wybrany \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Uwierzytelnianie wykrywania</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\u017cytkownik\xf3w musz\u0105 mie\u0107 d\u0142ugo\u015b\u0107 od 8 do 64 znak\xf3w i \nmog\u0105 zawiera\u0107 jedynie litery, \'.\', \'@\', \'-\', \'_\' lub \':\'.</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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak skonfigurowa\u0107 i uruchomi\u0107 zarz\u0105dzanie funkcjonalno\u015bciami obiektami docelowymi iSCSI\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Dost\u0119pne 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\u0119pne </target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' and \'@\' nie s\u0105 dozwolone.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u0141adowanie...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Brak dost\u0119pnych 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="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>U\u017cyj 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\xf3ry przechowuje dane obiektowe z RBD</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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Rozmiar</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Musisz zwi\u0119kszy\u0107 rozmiar.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Zaawansowane...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Rozmiar obiektu</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednostka pask\xf3w</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Wybierz jednostk\u0119 pask\xf3w -- </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\u017c licznik pask\xf3w 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\xf3w jest wi\u0119ksza ni\u017c rozmiar obiektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Licznik pask\xf3w </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\u017c jednostka pask\xf3w 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\xf3w musi by\u0107 wi\u0119kszy od 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Ca\u0142kowita wydajno\u015b\u0107</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="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\u0142ugi opis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Domy\u015blna</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Domy\u015blny demon</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Us\u0142ugi</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Warto\u015bci</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>Podana warto\u015b\u0107 jest za wysoka. Nie mo\u017ce by\u0107 wi\u0119ksza ni\u017c \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>Podana warto\u015b\u0107 jest za ma\u0142a. Nie mo\u017ce by\u0107 mniejsza od  \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista host\xf3w</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nie znaleziono wej\u015b\u0107</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\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u0141adowanie 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\u017cna za\u0142adowa\u0107 konfiguracji</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Edytuj modu\u0142 zarz\u0105dzania</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\u015b\u0107 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\u015b\u0107 musi by\u0107 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>Podana warto\u015b\u0107 jest za wysoka! Musi by\u0107 mniejsza b\u0105d\u017a r\xf3wna  \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>Podana warto\u015b\u0107 jest za niska! Musi by\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna  \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\u015b\u0107 musi by\u0107 liczb\u0105</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\u015b\u0107 musi by\u0107 liczb\u0105 albo dziesi\u0119tn\u0105.</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flagi OSD w ca\u0142ym klastrze</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\u015bci 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>Podana warto\u015b\u0107 jest za wysoka. Nie mo\u017ce by\u0107 wi\u0119ksza ni\u017c  \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>Podana warto\u015b\u0107 jest za ma\u0142a! Nie mo\u017ce by\u0107 mniejsza od \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ponowne wa\u017cenie OSD</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\u015b\u0107 powinna by\u0107 pomi\u0119dzy 0 a 1. </target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>Ponowne wa\u017cenie</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>Szoruj\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> OSD-ki\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\u0142\u0119boko\u015b\u0107} }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Zamierzasz zaaplikowa\u0107  \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> szorowanie na OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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\u0142\u0119boko\u015b\u0107} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>Lista OSD-k\xf3w </target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Je\u015bli kontynuujesz \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> b\u0119dzie zaznaczony\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>"/> .\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Nie mo\u017cna bezpiecznie zniszczy\u0107 tego OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Je\u015bli kontyuujesz \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>  b\u0119dzie \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>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>Szczeg\xf3\u0142y</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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak nale\u017cy skonfigurowa\u0107 i uruchomi\u0107 zarz\u0105dzanie funkcjami NFS Ganeshy \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\u017cdy klient ma dost\u0119p</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\u0105zkowe 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\u0107 jedn\u0105 albo wi\u0119cej ,rozdzielonych przecinkiem, warto\u015bci </target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Na przyk\u0142ad: </target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ dost\u0119pu</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\xf3w </target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS eksportuje  \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Brak dost\u0119pnego 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\u0119\u0107 Podr\u0119czna</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Wybierz pami\u0119\u0107 podr\u0119czn\u0105 -- </target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>U\u017cytkownik dost\u0119pu obiektowego</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- Brak dost\u0119pnych u\u017cytkownik\xf3w -- </target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Wybierz u\u017cytkownika dost\u0119pu obiektowego -- </target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS U\u017cytkownik ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- Brak dost\u0119pnych klient\xf3w -- </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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Etykieta bezpiecze\u0144stwa</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Uruchom etykiet\u0119 bezpiecze\u0144stwa</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>\u015acie\u017cka 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>\u015acie\u017cka powinna zaczyna\u0107 si\u0119 z \'/\' i nast\u0119pne mo\u017ce by\u0107 s\u0142owo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Nowy katalog b\u0119dzie stworzony. </target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u015acie\u017cka</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>\u015acie\u017ck\u0105 mo\u017ce by\u0107 tylko \'/\' albo s\u0142owo</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>Nowe wiadro b\u0119dzie stworzone </target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>Protok\xf3\u0142 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>Alternatywny dost\u0119p do \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>"/>\xa0montuje ( nie musi mie\u0107 poprzedzaj\u0105cego \'/\' )\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\u017ce nie montowa\u0107 podkatalog\xf3w ( np. je\u015bli Tag = foo, klient mo\u017ce nie montowa\u0107 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\u017cywaj\u0105c r\xf3\u017cnych opcji Tagu, ta sama \u015acie\u017cka mo\u017ce by\u0107 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>Pozycja, kt\xf3r\u0105 \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>"/> eksport zajmuje \nw \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>"/> (musi by\u0107 unikatowa). \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\u017cywaj\u0105c r\xf3\u017cnych opcji Pseudo, ta sama \u015acie\u017cka mo\u017ce by\u0107 wyeksportowana kilka razy.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Brak dost\u0119pnych typ\xf3w dost\u0119pu --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Wybierz typ dost\u0119pu --</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\u017cytkownika ma by\u0107 przeprowadzana --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Protok\xf3\u0142 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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Nazwa mo\u017ce sk\u0142ada\u0107 si\u0119 z alfanumerycznych znak\xf3w, kresek i podkre\u015ble\u0144.</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\u017c u\u017cywana.</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\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna 2.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Kodowanie kawa\u0142ka (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\u0107 wi\u0119ksza b\u0105d\u017a r\xf3wna 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estymator trwa\u0142o\u015bci (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Lokalno\u015b\u0107  (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\u015b\u0107 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\u0144 Crusha</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>urz\u0105dzenie klasy Crush</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>kt\xf3rykolwiek</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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Dodaj</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="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\u017c u\u017cyta.</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="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\xf3j klaster nie obs\u0142uguje tylu PG. Skalkuluj prosz\u0119 potrzebn\u0105 ilo\u015b\u0107 PG.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Mo\u017cesz zwi\u0119kszy\u0107 liczb\u0119 PG na utrworzonym pulu. \nTeraz pul ma \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Obecne ustawienia PG zosta\u0142y policzone dla Ciebie, \npowiniene\u015b upewni\u0107 si\u0119 czy te warto\u015bci Ci odpowiadaj\u0105 przed zatwierdzeniem.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>zbi\xf3r zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Wybierz zasad\u0119 Crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Zasada nie mo\u017ce by\u0107 u\u017cyta w obecnym klastrze, gdy\u017c ma\nzbyt ma\u0142o OSD-k\xf3w, \u017ceby spe\u0142ni\u0107 minimum OSD-k\xf3w wymaganych przez t\u0119 zasad\u0119.</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Sprecyzowany rozmiar jest poza zakresem. Warto\u015b\u0107 od \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> do \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> jest poprawna.\n        </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="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="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\u015b\u0107 powinna by\u0107 wi\u0119ksza ni\u017c 0</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\u015b\u0107 powinna by\u0107 wi\u0119ksza ni\u017c 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\u015b\u0107 powinna by\u0107 pomi\u0119dzy 0.0, a 1.0</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Nie mo\u017cna stworzy\u0107 pula RBD z \'/\' w nazwie.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Prosz\u0119 zmieni\u0107 nazw\u0119 albo usun\u0105\u0107 \'rbd\' z listy zastosowa\u0144.</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="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>Sprawd\u017a prosz\u0119  \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentacj\u0119 \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\xa0\njak skonfigurowa\u0107 i i uruchomi\u0107 zarz\u0105dzanie funkcjami Dost\u0119pu obiektowego\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u0141adowanie wiadra danych</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Nie mo\u017cna za\u0142adowa\u0107 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\u015b\u0107 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\u017c jest u\u017cyta.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>W\u0142a\u015bciciel</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Wybierz u\u017cytkownika -- </target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista demon\xf3w</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>klucz S3</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nazwa u\u017cytkownika</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Wybierz nazw\u0119 u\u017cytkownika -- </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\u0119pu</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="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>pod-u\u017cytkownik</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\u017cytkownika jest ju\u017c u\u017cyte.</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\u0142ny</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>\u0141adowanie danych u\u017cytkownika...</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\u017cna za\u0142adowa\u0107 danych u\u017cytkownika.</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\u017cytkownika jest ju\u017c u\u017cyte.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Pe\u0142ne imi\u0119 </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="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\u017c u\u017cyty.</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="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>Podana warto\u015b\u0107 musi by\u0107 &gt;= 0</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>pod-u\u017cytkownicy</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nie ma pod-u\u017cytkownik\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Usu\u0144</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="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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Poka\u017c</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Zdolno\u015bci</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nie ma zdolno\u015bci. </target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Limit u\u017cytkownika</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="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\xf3w</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="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\u017cytkownika jest wymagana</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Has\u0142o 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="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="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>Przepraszam, u\u017cytkownik 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>Powr\xf3t do \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Strony Logowania\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Zostaniesz wylogowany z Dostastcy To\u017csamo\u015bci , kiedy spr\xf3bujesz si\u0119 zalgowa\u0107. \n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potwierd\u017a has\u0142o</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Potwierdzaj\u0105ce has\u0142o nie pokrywa si\u0119 z has\u0142em.</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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Role</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\u0105\u0107 uprawnienia \u201eodczytu / aktualizacji u\u017cytkownika\u201d od w\u0142asnego u\u017cytkownika.</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\u015bli kontynuujesz, nie b\u0119dziesz m\xf3g\u0142 dodawa\u0107 albo usuwa\u0107 role od u\u017cytkownik\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>Jeste\u015b pewny, \u017ce chcesz kontynuowa\u0107? </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\u0119pu do tego czego szukasz. </target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Przepraszam, nie mo\u017cemy znale\u017a\u0107 tego czego szukasz.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Usu\u0144 wszystko</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Ostatnie powiadomienia</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Brak zada\u0144 w tle.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Zagadnienia w tle </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\u0105dzanie u\u017cytkownikami</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Zalogowany u\u017cytkownik</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>Zalogowany 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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Wyloguj</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>Liczniki wydajno\u015bci</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Szczeg\xf3\u0142y wydajno\u015bci</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\u0142\xf3wna 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="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\xf3w</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, wybierz, 0 {Nie} 1{Tak} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Liczniki wydajno\u015bci nie s\u0105 dost\u0119pne</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Obraz</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="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\u0144 warto\u015b\u0107 konfiguracji lokalnej. Warto\u015b\u0107 konfiguracji rodzica b\u0119dzie odziedziczona i zostanie u\u017cyta 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\u015b\u0107 wynosi 0.</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>Atrybuty (mapa OSD-k\xf3w)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>Niedost\u0119pne 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="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>Licznik wydajno\u015bci</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 niedost\u0119pny: \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="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>Obecne warto\u015bci </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>\u0179r\xf3d\u0142o </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\u017ce by\u0107 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\u015bci enumerowane </target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Zobacz tak\u017ce </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\u0105dzanie 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\u015b\u0107 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\u015b\u0107 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\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Pojemno\u015b\u0107 rz\u0119du</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="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\u015b\u0107</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>"/> zobacz\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>logi\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> , \u017ceby mie\u0107 wi\u0119cej szczeg\xf3\u0142\xf3w. \n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>Przenie\u015b obraz do kosza</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u017beby przenie\u015b\u0107 \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> do kosza, kliknij \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Przenie\u015b obraz\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Opcjonalnie, mo\u017cesz wybra\u0107 dat\u0119 wa\u017cno\u015bci.\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\u0142y format daty. Prosz\u0119 u\u017cywa\u0107 "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\u017c wygas\u0142a. Prosz\u0119 wybra\u0107 przysz\u0142\u0105 dat\u0119 lub zostawi\u0107 pust\u0105.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>Przenie\u015b obraz</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Przegl\u0105d</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="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>Dost\u0119pne tylko dla obraz\xf3w RBD z  \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/> szybk\u0105 r\xf3\u017cnic\u0105 \n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> w\u0142\u0105czone\n        </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="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\u0119pny</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>Ca\u0142kowite 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\xf3wienie</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="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>To ustawienie zast\u0119puj\u0119 warto\u015b\u0107 globaln\u0105.</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\u015b\u0107. Dla tego obrazu nie ustawiono \u017cadnej warto\u015bci dla tej opcji.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> migawka RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, wybierz, prawda {Zmie\u0144 nazwe} inaczej{Utw\xf3rz} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Migawka\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>ZABEZPIECZONE</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="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Zaraz si\u0119 wycofasz. </target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Usu\u0144 \u015amieci</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Aby usun\u0105\u0107, wybierz jeden albo wszystkie obrazy i kliknij </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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Wszystkie</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Przywr\xf3\u0107 obraz</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>Przywr\xf3\u0107</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\u0142y 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>Ten obraz jest chroniony do \n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.\xa0\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="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\xa0\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\xa0\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>Aby edytowa\u0107 tryb lustrzanydla pula\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>"/>,  wybierz tryb z listy i kliknij\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Zaktualizuj\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\u0107 usuni\u0119ty  przed wy\u0142\u0105czeniem 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 {...}}"/> sparowany pul lustrzany\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> pul \nlustra sparowanych atrybut\xf3w dla pula \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>"/> i kliknij \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Zatwierd\u017a\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\u0107 zakodowany w Base64/</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Szczeg\xf3\u0142y poziom\xf3w pami\u0119ci podr\u0119cznej</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klienci: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\u0119pnych 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\u0119pnych obraz\xf3w. </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\u0119pnych obraz\xf3w. Prosz\u0119 si\u0119 upewni\u0107, \u017ce 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\u0119pnych inicjator\xf3w iSCSI. Prosz\u0119 upewni\u0107 si\u0119, \u017ce dodajesz inicjator iSCSI do obiektu docelowego.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nazwa hosta</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Odczyt bajt\xf3w </target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Zapis bajt\xf3w</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stan</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Wy\u0142\u0105czony</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\u0144 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Warto\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>G\u0142\u0119bokie sp\u0142aszczenie</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\u0142\u0105czna blokada</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa obiekt\xf3w (wymaga wy\u0142\u0105cznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Kronikowanie  (wymaga wy\u0142\u0105cznej blokady)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Szybka r\xf3\u017cnica (wymaga mapy obiekt\xf3w)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Sp\u0142aszcz</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>Przenie\u015b do kosza</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Stw\xf3rz</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>Zmie\u0144 nazw\u0119</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="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Odbezpiecz </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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Wycofanie</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="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>migawka RBD</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Przywr\xf3\u0107</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Usuni\u0119ty 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="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\u015b\u0107</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\u0119z\u0142y</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>U\u017cycie</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="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>Warto\u015b\u0107 mo\u017ce by\u0107 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\u0105 tej warto\u015bci z\nbazy danych skonfigurowanego monitora. Nie zezwalamy na ustawienie tej opcji przez \'konfiguracje ceph\nustaw.. \'. Ta opcja powinna by\u0107 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\u0142a 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\u0142ywa 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>Zaktualizowana opcja konfiguracji \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\u0142uga</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>Obecna warto\u015b\u0107</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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Zaktualizowane opcje dla modu\u0142u &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>W\u0142\u0105czy\u0107</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>Wy\u0142\u0105czy\u0107</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Ponowne \u0142\u0105czenie, prosz\u0119 czeka\u0107</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="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\xf3re zosta\u0142y oznaczone jako poza, nie b\u0119d\u0105 oznaczone ponownie jako w gdy zostan\u0105 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\u0119d\u0105 automatycznie oznaczone jako poza po konfiguracji interwa\u0142u</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Nie powsta\u0142y </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\u0105 startowa\u0107</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Nie upad\u0142y</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\u017ce monitory nie oznacz\u0105 OSD jako upad\u0142ego. </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\u0142\u0105czone</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Nie ma g\u0142\u0119bokiego szorowania</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>G\u0142\u0119bokie szorowanie jest wy\u0142\u0105czone</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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Nie przywr\xf3cono</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Przywr\xf3cenie 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\u017cyj sortowania bitowego</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Usu\u0144 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\u0142y snapsety</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Odzyskaj usuni\u0119te</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\u0119cie 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\xf3w 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\u0142ugo\u015b\u0107 log\xf3w PG</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Zaktualizowane flagi OSD-k\xf3w</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Szoruj g\u0142\u0119boko</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>poza</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>w</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>zaznacz jako upad\u0142y</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>upad\u0142y</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="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\u015b\u0107</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>Oczyszczony</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="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="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\xf3w</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Zapis bajt\xf3w</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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Zaznacz 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>Zaznacz  \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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\u015b\u0107 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\u015bpienie wyzdrowienia</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Zaktualizowano pr\u0119dko\u015b\u0107 wyzdrowienia OSD priorytet &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> zosta\u0142 zainicjalizowany w nast\u0119puj\u0105cym OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\u015b\u0107</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>U\u017cyty</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>Dost\u0119pny</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>Czy\u015b\u0107</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Dzia\u0142aj\u0105cy</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Ostrze\u017cenie </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="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\xf3w plik\xf3w</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\u0119pny</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\u0142uga 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\u017cytkownik CephFS</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>system plik\xf3w CephFS </target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(Odziedziczy\u0142o z globalnej konfiguracji)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>Odziedziczy\u0142o 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\u017cytkownika ma by\u0107 przeprowadzana -- </target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Brak dost\u0119pnym demon\xf3w</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Eksport </target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Tryb pami\u0119ci podr\u0119cznej</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\xf3wnania </target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max bajt\xf3w obiektu docelowego </target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max obiekt\xf3w docelowych</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nie dodano \u017cadnego zastosowania</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Osi\u0105gni\u0119to limit zastosowa\u0144 </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\u017ce mie\u0107 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\u0142ugo\u015b\u0107 wynosi 128 znak\xf3w</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>skasuj profil kodu</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\xf3r zasad Crush</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zapis bajt\xf3w </target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Zaktualizowano wiadro dost\u0119pu obiektowego  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Stworzono wiadro dost\u0119pu obiektowego &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Wiadra</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>Zaktualizowano u\u017cytkownika dost\u0119pu obiektowego &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Stworzono u\u017cytkownika dost\u0119pu obiektowego&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>u\u017cytkownik</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>u\u017cytkownicy</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Utw\xf3rz rol\u0119  \'\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>Zaktualizuj rol\u0119 \'\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>Usu\u0144 rol\u0119  \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Stw\xf3rz u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Zaktualizuj u\u017cytkownika</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\u0142e\u015b automatycznie wylogowany, poniewa\u017c zosta\u0142y 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>Zaktualizowano u\u017cytkownika  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Usuni\u0119to u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Nie uda\u0142o si\u0119 usun\u0105\u0107 u\u017cytkownika &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Jeste\u015b obecnie zalogowany jako&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\u017cdy obiekt jest podzielony na cz\u0119\u015bci fragment\xf3w danych, ka\u017cdy 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\u017cdego obiektu i przechowuj je na r\xf3\u017cnych OSD.\n Liczba fragment\xf3w koduj\u0105cych to r\xf3wnie\u017c liczba OSD, kt\xf3re mog\u0105 zosta\u0107 wy\u0142\u0105czone 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\u0105 i elastyczn\u0105 wtyczk\u0105,\n jest to r\xf3wnie\u017c domy\u015blne 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\u0105 technik\u0105 jest reed_sol_van: wystarczy ustawi\u0107 k\n oraz m. Technika cauchy_good mo\u017ce by\u0107 szybsza, ale musisz wybra\u0107 rozmiar pakietu\n ostro\u017cnie. Wszystkie reed_sol_r6_op, liberation, blaum_roth, liber8tion s\u0105 odpowiednikami RAID6\n w tym sensie, \u017ce mog\u0105 by\u0107 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\u0119dzie wykonywane na pakietach o rozmiarze bajt\xf3w naraz.\n Wyb\xf3r 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\u0105 jerasure, gdy obiekt zakodowany przy u\u017cyciu skasowania jest przechowywany na \n wielu OSD-kach, odzyskiwanie po utracie jednego OSD wymaga odczytu ze wszystkich pozosta\u0142ych.\n Na przyk\u0142ad, je\u015bli konfiguracja skryptu ma warto\u015b\u0107 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\u015bci lokalnej, aby m\xf3c je odzyska\u0107\n mniej OSD. Na przyk\u0142ad, je\u015bli lrc jest skonfigurowane z k = 8, m = 4 i l = 4, zostanie utworzony\n dodatkowy fragment parzysto\u015bci na ka\u017cde cztery OSD. Gdy jeden OSD zostanie utracone, mo\u017ce to by\u0107\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\u015bci. Na przyk\u0142ad,\n dla k = 4 i m = 2, gdy lokalno\u015b\u0107 = 3 tworzone s\u0105 dwie grupy po trzy. Ka\u017cdy zestaw mo\u017ce\n odzyska\u0107 bez czytania kawa\u0142k\xf3w 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\xf3rym zdefiniowano ka\u017cdy zestaw porcji\n przez l zostan\u0105 zapisane. Na przyk\u0142ad, je\u015bli jest ustawiony na rack, ka\u017cda grupa l porcji b\u0119dzie\n umieszczona w innym raku. S\u0142u\u017cy do utworzenia kroku regu\u0142y CRUSH, takiego jak krok wyboru\n racka. Je\u015bli 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\u0119 ISA. Dzia\u0142a 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\u0119pna w dw\xf3ch formach Reed Solomon.\n Je\u015bli ustawiono reed_sol_van, jest to Vandermonde, je\u015bli 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\u0107 dane bardziej efektywnie ni\u017c 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\u0142k\xf3w parzysto\u015bci, z kt\xf3rych ka\u017cdy zawiera ka\u017cd\u0105 porcj\u0119 danych w swoim zakresie oblicze\u0144. Liczba jest u\u017cywana jako estymator trwa\u0142o\u015bci. Na przyk\u0142ad, je\u015bli c = 2,\n 2 OSD mo\u017cna wy\u0142\u0105czy\u0107 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\u017cyte do pierwszego kroku regu\u0142y CRUSH.\nNa przyk\u0142ad krok jest domy\u015blny.</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\u0119, \u017ce \u017cadne dwie porcje nie znajduj\u0105 si\u0119 w wiadrze z t\u0105 sam\u0105 awari\u0105\n domeny. Na przyk\u0142ad, je\u015bli domena awarii jest hostem, nie zostan\u0105 na niej zapisane dwie porcje\n hosta. S\u0142u\u017cy do utworzenia kroku regu\u0142y 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\u0105dze\u0144 okre\u015blonej klasy\n (np. ssd lub hdd), u\u017cywaj\u0105c nazw klas urz\u0105dze\u0144 zgniataj\u0105cych 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\u0119 katalogu, z kt\xf3rego \u0142adowana 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\u0105 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\u0105 operacje, kt\xf3re nie modyfikuj\u0105 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\u0105 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\u0105ce atrybuty albo katalogi s\u0105 zakazane\xa0</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Brak dost\u0119pu w og\xf3le</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="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\u015blnie)</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\u0144 temu</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>Poprzedni tydzie\u0144</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Ten tydzie\u0144 </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\u0105ca</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>ten miesi\u0105c</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\u0105cu</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\u0119cy</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\u017c\u0105cego 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\u017c\u0105cego 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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informacja</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nie wybrano \u017cadnej pozycji</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Odznacz pozycj\u0119, \u017ceby wybra\u0107 ponownie</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Osi\u0105gni\u0119to limit wyboru. </target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtr tag\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>Dodaj odznak\u0119</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Brak dost\u0119pnych pozycji.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Jako\u015b\u0107 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\u017c\u0105dany limit IO bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji IO na sekund\u0119.</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\u017c\u0105dany limit odczytu bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji odczytu na sekund\u0119.</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\u017c\u0105dany limit zapisu bajt\xf3w na sekund\u0119.</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\u017c\u0105dany limit operacji zapisu na sekund\u0119.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Wi\u0105zka BPS</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u017b\u0105dana granica serii IO bajt\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Wi\u0105zka IOPS</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u017b\u0105dana 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\u0105zki BPS</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u017b\u0105dana granica serii odczytanych bajt\xf3w.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Odczyt wi\u0105zki IOPS</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target> \u017b\u0105dana 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\u0105zki BPS</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u017b\u0105dana granica serii bajt\xf3w zapisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Zapis wi\u0105zki IOPS</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u017b\u0105dana 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>Nie powiod\u0142o si\u0119  \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\xf3rz</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Zaktualizowany</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>Usu\u0144</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Usuni\u0119ty</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>urz\u0105dzenie blokowe Rados\xa0\'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\xa0\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>migawka RBD  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\xa0\n        </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>tryb lustrzany dla pula \'\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>Lustrzane parowanie dla pula \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nazwa jest ju\u017c u\u017cyta przez  \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>Nazwa jest ju\u017c u\u017cywana przez \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>Nazwa jest ju\u017c u\u017cywana przez  \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/>  zawiera migawk\u0119.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Sklonowano</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>Migawka \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\xa0 musi by\u0107 zabezpieczona.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Skopiowano </target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Sp\u0142aszczanie</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>Sp\u0142aszcz</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Sp\u0142aszczony</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>Nazwa ju\u017c jest u\u017cywana przez  \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>Nie mo\u017cna zdj\u0105\u0107 zabezpieczenia \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> , poniewa\u017c zawiera pokrewne 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>Nie mo\u017cna usun\u0105\u0107 \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, poniewa\u017c jest zabezpieczony.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Wycofaj</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\u015b</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>Obraz \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'  przenie\u015b do kosza\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\xf3\u0107 </target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Przywr\xf3cony</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}}"/>\' w \'\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>Nazwa obrazu \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' jest ju\u017c u\u017cywana. \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}}"/>\'\xa0\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>oczyszcza\u0107</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>oczy\u015b\u0107</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="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>Obraz 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>Nie mo\u017cna wy\u0142\u0105czy\u0107 lustrzenia poniewa\u017c zawiera parowanie.</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>pul \'\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>skasuj profil kodu \'\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>docelowy \'\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>'},"/TVo":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("urB8"),n("0M9P"));n("xZld"),e.NodeDraggableDirective=function(){function t(t,e,n){this.element=t,this.nodeDraggableService=e,this.renderer=n,this.disposersForDragListeners=[],this.nodeNativeElement=t.nativeElement}return t.prototype.ngOnInit=function(){this.tree.isStatic()||(this.renderer.setAttribute(this.nodeNativeElement,"draggable","true"),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragenter",this.handleDragEnter.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragover",this.handleDragOver.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragstart",this.handleDragStart.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragleave",this.handleDragLeave.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"drop",this.handleDrop.bind(this))),this.disposersForDragListeners.push(this.renderer.listen(this.nodeNativeElement,"dragend",this.handleDragEnd.bind(this))))},t.prototype.ngOnDestroy=function(){this.disposersForDragListeners.forEach(function(t){return t()})},t.prototype.handleDragStart=function(e){e.stopPropagation&&e.stopPropagation(),this.nodeDraggableService.captureNode(new r.CapturedNode(this.nodeDraggable,this.tree)),e.dataTransfer.setData("text",t.DATA_TRANSFER_STUB_DATA),e.dataTransfer.effectAllowed="move"},t.prototype.handleDragOver=function(t){t.preventDefault(),t.dataTransfer.dropEffect="move"},t.prototype.handleDragEnter=function(t){t.preventDefault(),this.containsElementAt(t)&&this.addClass("over-drop-target")},t.prototype.handleDragLeave=function(t){this.containsElementAt(t)||this.removeClass("over-drop-target")},t.prototype.handleDrop=function(t){return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),this.removeClass("over-drop-target"),!!this.isDropPossible(t)&&(this.nodeDraggableService.getCapturedNode()?this.notifyThatNodeWasDropped():void 0)},t.prototype.isDropPossible=function(t){var e=this.nodeDraggableService.getCapturedNode();return e&&e.canBeDroppedAt(this.nodeDraggable)&&this.containsElementAt(t)},t.prototype.handleDragEnd=function(t){this.removeClass("over-drop-target"),this.nodeDraggableService.releaseCapturedNode()},t.prototype.containsElementAt=function(t){var e=t.x,n=t.y;return this.nodeNativeElement.contains(document.elementFromPoint(void 0===e?t.clientX:e,void 0===n?t.clientY:n))},t.prototype.addClass=function(t){this.nodeNativeElement.classList.add(t)},t.prototype.removeClass=function(t){this.nodeNativeElement.classList.remove(t)},t.prototype.notifyThatNodeWasDropped=function(){this.nodeDraggableService.fireNodeDragged(this.nodeDraggableService.getCapturedNode(),this.nodeDraggable)},t.DATA_TRANSFER_STUB_DATA="some browsers enable drag-n-drop only when dataTransfer has data",t.decorators=[{type:a.Directive,args:[{selector:"[nodeDraggable]"}]}],t.propDecorators={nodeDraggable:[{type:a.Input}],tree:[{type:a.Input}]},t}()},"/WYv":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})},"/X5v":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".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~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},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}})}()},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("gIcY"),r=n("QFaf"),i=(n("sb0X"),function(){function t(t){this.modalRef=t,this.actionDescription="delete"}return t.prototype.ngOnInit=function(){if(this.deletionForm=new r.a({confirmation:new a.i(!1,[a.A.requiredTrue])}),!this.submitAction&&!this.submitActionObservable)throw new Error("No submit action defined")},t.prototype.callSubmitAction=function(){this.submitActionObservable?this.submitActionObservable().subscribe(null,this.stopLoadingSpinner.bind(this),this.hideModal.bind(this)):this.submitAction()},t.prototype.hideModal=function(){this.modalRef.hide()},t.prototype.stopLoadingSpinner=function(){this.deletionForm.setErrors({cdSubmitButton:!0})},t}())},"0/uQ":function(t,e,n){"use strict";var a=n("6blF"),r=n("/WYv"),i=n("2ePl"),o=n("xTla"),s=n("En8+"),u=n("IUTb"),l=n("pugT"),c=n("S5XQ"),d=n("u67D"),f=n("JcRv"),p=n("Fxb1");function h(t,e){if(!e)return t instanceof a.a?t:new a.a(Object(p.a)(t));if(null!=t){if(function(t){return t&&"function"==typeof t[o.a]}(t))return function(t,e){return new a.a(e?function(n){var a=new l.a;return a.add(e.schedule(function(){var r=t[o.a]();a.add(r.subscribe({next:function(t){a.add(e.schedule(function(){return n.next(t)}))},error:function(t){a.add(e.schedule(function(){return n.error(t)}))},complete:function(){a.add(e.schedule(function(){return n.complete()}))}}))})),a}:Object(f.a)(t))}(t,e);if(Object(r.a)(t))return function(t,e){return new a.a(e?function(n){var a=new l.a;return a.add(e.schedule(function(){return t.then(function(t){a.add(e.schedule(function(){n.next(t),a.add(e.schedule(function(){return n.complete()}))}))},function(t){a.add(e.schedule(function(){return n.error(t)}))})})),a}:Object(c.a)(t))}(t,e);if(Object(i.a)(t))return Object(u.a)(t,e);if(function(t){return t&&"function"==typeof t[s.a]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.a(e?function(n){var a,r=new l.a;return r.add(function(){a&&"function"==typeof a.return&&a.return()}),r.add(e.schedule(function(){a=t[s.a](),r.add(e.schedule(function(){if(!n.closed){var t,e;try{var r=a.next();t=r.value,e=r.done}catch(i){return void n.error(i)}e?n.complete():(n.next(t),this.schedule())}}))})),r}:Object(d.a)(t))}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}n.d(e,"a",function(){return h})},"0M9P":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CapturedNode=function(){function t(t,e){this.anElement=t,this.aTree=e}return t.prototype.canBeDroppedAt=function(t){return!this.sameAs(t)&&!this.contains(t)},t.prototype.contains=function(t){return this.element.nativeElement.contains(t.nativeElement)},t.prototype.sameAs=function(t){return this.element===t},Object.defineProperty(t.prototype,"element",{get:function(){return this.anElement},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tree",{get:function(){return this.aTree},enumerable:!0,configurable:!0}),t}()},"0MID":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("qwkt"),s=n("5tze");n("czA5"),e.DataTableHeaderCellComponent=function(){function t(t){this.cd=t,this.sort=new i.EventEmitter,this.select=new i.EventEmitter,this.columnContextmenu=new i.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}}return Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){return this._allRowsSelected},set:function(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}var i=this.sortDir;return i&&(t+=" sort-active sort-"+i),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return void 0===this.column.headerTemplate?this.column.name:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxable",{get:function(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===o.SelectionType.checkbox},enumerable:!0,configurable:!0}),t.prototype.onContextmenu=function(t){this.columnContextmenu.emit({event:t,column:this.column})},t.prototype.calcSortDir=function(t){var e=this;if(t&&this.column){var n=t.find(function(t){return t.prop===e.column.prop});if(n)return n.dir}},t.prototype.onSort=function(){if(this.column.sortable){var t=s.nextSortDir(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}},t.prototype.calcSortClass=function(t){return t===o.SortDirection.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===o.SortDirection.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"},a([i.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortAscendingIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortDescendingIcon",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerContext",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"allRowsSelected",null),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"headerHeight",void 0),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"sort",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("attr.title"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"name",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-header-cell",template:'\n    <div class="datatable-header-cell-template-wrap">\n      <ng-template\n        *ngIf="isTarget"\n        [ngTemplateOutlet]="targetMarkerTemplate"\n        [ngTemplateOutletContext]="targetMarkerContext">\n      </ng-template>\n      <label\n        *ngIf="isCheckboxable"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="allRowsSelected"\n          (change)="select.emit(!allRowsSelected)"\n        />\n      </label>\n      <span\n        *ngIf="!column.headerTemplate"\n        class="datatable-header-cell-wrapper">\n        <span\n          class="datatable-header-cell-label draggable"\n          (click)="onSort()"\n          [innerHTML]="name">\n        </span>\n      </span>\n      <ng-template\n        *ngIf="column.headerTemplate"\n        [ngTemplateOutlet]="column.headerTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n      <span\n        (click)="onSort()"\n        [class]="sortClass">\n      </span>\n    </div>\n  ',host:{class:"datatable-header-cell"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"0alx":function(t,e,n){"use strict";var a=n("VKeD");e.isIterable=function(t){return t&&"function"==typeof t[a.iterator]}},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},n={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};t.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".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:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(t){return t.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===e&&t>=4||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===e&&t<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":t<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":t<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":t<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}})}(n("wd/R"))},"0tRk":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"})}()},"15JJ":function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("MGBS"),i=n("rPjj"),o=n("zotm"),s=n("67Y/"),u=n("0/uQ");function l(t,e){return"function"==typeof e?function(n){return n.pipe(l(function(n,a){return Object(u.a)(t(n,a)).pipe(Object(s.a)(function(t,r){return e(n,t,a,r)}))}))}:function(e){return e.lift(new c(t))}}var c=function(){function t(t){this.project=t}return t.prototype.call=function(t,e){return e.subscribe(new d(t,this.project))},t}(),d=function(t){function e(e,n){var a=t.call(this,e)||this;return a.project=n,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=this.innerSubscription;a&&a.unsubscribe();var r=new i.a(this,void 0,void 0);this.destination.add(r),this.innerSubscription=Object(o.a)(this,t,e,n,r)},e.prototype._complete=function(){var e=this.innerSubscription;e&&!e.closed||t.prototype._complete.call(this),this.unsubscribe()},e.prototype._unsubscribe=function(){this.innerSubscription=null},e.prototype.notifyComplete=function(e){this.destination.remove(e),this.innerSubscription=null,this.isStopped&&t.prototype._complete.call(this)},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e}(r.a)},"1HVU":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("rdkg"),r=n("CVuo"),i="undefined"!=typeof window?a.getVendorPrefixedName("transform"):void 0,o="undefined"!=typeof window?a.getVendorPrefixedName("backfaceVisibility"):void 0,s="undefined"!=typeof window?!!a.getVendorPrefixedName("transform"):void 0,u="undefined"!=typeof window?!!a.getVendorPrefixedName("perspective"):void 0,l="undefined"!=typeof window?window.navigator.userAgent:"Chrome",c=/Safari\//.test(l)&&!/Chrome\//.test(l);e.translateXY=function(t,e,n){void 0!==i&&s?!c&&u?(t[i]="translate3d("+e+"px, "+n+"px, 0)",t[o]="hidden"):t[r.camelCase(i)]="translate("+e+"px, "+n+"px)":(t.top=n+"px",t.left=e+"px")}},"1IWC":function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["it",[["m.","p."],["AM","PM"],n],n,[["D","L","M","M","G","V","S"],["dom","lun","mar","mer","gio","ven","sab"],["domenica","luned\xec","marted\xec","mercoled\xec","gioved\xec","venerd\xec","sabato"],["dom","lun","mar","mer","gio","ven","sab"]],n,[["G","F","M","A","M","G","L","A","S","O","N","D"],["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]],n,[["aC","dC"],["a.C.","d.C."],["avanti Cristo","dopo Cristo"]],1,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",n,"{1} {0}",n],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","#,##0.00\xa0\xa4","#E0"],"\u20ac","euro",{BRL:[n,"R$"],BYN:[n,"Br"],EGP:[n,"\xa3E"],HKD:[n,"$"],JPY:[n,"\xa5"],KRW:[n,"\u20a9"],MXN:[n,"$"],NOK:[n,"NKr"],THB:["\u0e3f"],TWD:[n,"NT$"],USD:[n,"$"]},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]})},"1Ni5":function(t,e,n){"use strict";n.d(e,"b",function(){return c}),n.d(e,"a",function(){return d});var a=n("gIcY"),r=n("LvDl"),i=n("F/XL"),o=n("gI3B"),s=n("zQHH"),u=n("67Y/"),l=n("t9fZ");function c(t){return null==t||0===t.length}var d=function(){function t(){}return t.email=function(t){return c(t.value)?null:a.A.email(t)},t.ip=function(t){void 0===t&&(t=0);var 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.A.pattern(4===t?e:6===t?n:new RegExp(e.source+"|"+n.source))},t.number=function(t){return void 0===t&&(t=!0),a.A.pattern(t?/^-?[0-9]+$/i:/^[0-9]+$/i)},t.decimalNumber=function(t){return void 0===t&&(t=!0),a.A.pattern(t?/^-?[0-9]+(.[0-9]+)?$/i:/^[0-9]+(.[0-9]+)?$/i)},t.requiredIf=function(t,e){var n=!1;return function(a){return!n&&a.parent&&(Object.keys(t).forEach(function(t){a.parent.get(t).valueChanges.subscribe(function(){a.updateValueAndValidity({emitEvent:!1})})}),n=!0),Object.keys(t).every(function(e){return a.parent&&a.parent.get(e).value===t[e]})&&(r.isFunction(e)?e.call(e,a.value):c(a.value))?{required:!0}:null}},t.custom=function(t,e){var n=this;return function(a){var r,i=e.call(n,a.value);return i?((r={})[t]=i,r):null}},t.validateIf=function(t,e,n,r,i){var o=this;void 0===r&&(r=[]),void 0===i&&(i=[]),n=n.concat(r),t.setValidators(function(t){return e.call(o)?a.A.compose(n)(t):r.length>0?a.A.compose(r)(t):null}),i.forEach(function(e){e.valueChanges.subscribe(function(){t.updateValueAndValidity({emitEvent:!1})})})},t.match=function(t,e){return function(n){var a=n.get(t),i=n.get(e);if(a.value!==i.value)i.setErrors({match:!0});else if(i.hasError("match")){var o=i.errors;r.unset(o,"match"),i.setErrors(r.isEmpty(r.keys(o))?null:o)}return null}},t.unique=function(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=500),function(a){return a.pristine||c(a.value)?Object(i.a)(null):Object(o.a)(n).pipe(Object(s.a)(t.call(e,a.value)),Object(u.a)(function(t){return t?{notUnique:!0}:null}),Object(l.a)(1))}},t.uuid=function(t){void 0===t&&(t=!1);var 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 function(n){return n.pristine&&n.untouched?null:t||n.value?e.test(n.value)?null:{invalidUuid:"This is not a valid UUID"}:null}},t}()},"1PfE":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeEditableEventAction=function(t){return t[t.Cancel=0]="Cancel",t}(e.NodeEditableEventAction||{})},"1fDf":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("FFOo");function r(t){for(;t;){var e=t.destination;if(t.closed||t.isStopped)return!1;t=e&&e instanceof a.a?e:null}return!0}},"1rYy":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(t){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(t)},meridiem:function(t){return t<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":t<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":t<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-\u056b\u0576":t+"-\u0580\u0564";default:return t}},week:{dow:1,doy:7}})}()},"1xZ4":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_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\xe7_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\xe0 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\xed %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|\xe8|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"\xe8";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}()},"20UP":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t,this.settings={}}return t.prototype.ifSettingConfigured=function(t,e,n){var a=this,r=this.settings[t];void 0===r?this.http.get(t).subscribe(function(r){a.settings[t]=a.getSettingsValue(r),a.ifSettingConfigured(t,e,n)},function(e){401!==e.status&&(a.settings[t]="")}):""!==r?e(r):n&&n()},t.prototype.disableSetting=function(t){this.settings[t]=""},t.prototype.getSettingsValue=function(t){return t.value||t.instance||""},t.prototype.validateGrafanaDashboardUrl=function(t){return this.http.get("api/grafana/validation/"+t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},"25BL":function(t,e,n){"use strict";var a=n("CcnG"),r=n("M/6F"),i=n("NDi4"),o=n("Ip0R"),s=n("gIcY"),u=n("xtZt"),l=n("lqqz"),c=n("fhFe"),d=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"li",[["class","pages"],["role","button"]],[[1,"aria-label",0],[2,"active",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275ted"](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 p(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,14,"ul",[["class","pager"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](3,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](8,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](9,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](11,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,2,"li",[],[[2,"disabled",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275eld"](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["\u0275inlineInterpolate"](1,"",n.pagerPreviousIcon,"")),t(e,4,0,!n.canPrevious()),t(e,6,0,a["\u0275inlineInterpolate"](1,"",n.pagerLeftArrowIcon,"")),t(e,9,0,!n.canNext()),t(e,11,0,a["\u0275inlineInterpolate"](1,"",n.pagerRightArrowIcon,"")),t(e,12,0,!n.canNext()),t(e,14,0,a["\u0275inlineInterpolate"](1,"",n.pagerNextIcon,""))})}var h=n("JxMD"),g=n("dgut"),m=n("Fgil"),b=n("ZYCi"),y=n("0MID"),v=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.targetMarkerContext,n.targetMarkerTemplate)},null)}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","datatable-header-cell-wrapper"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 S(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function O(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](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["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","datatable-header-cell-template-wrap"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,T)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,O)),a["\u0275did"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](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 k=n("3MdB"),I=n("M9eX"),D=n("Cc8h"),R=n("ylLw"),N=n("ZYjt"),A=n("tFKq"),E=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function L(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,2).onMousedown(n)&&r),"mousedown"===e&&(r=!1!==a["\u0275nov"](t,3).onMouseDown(n)&&r),"contextmenu"===e&&(r=!1!==a["\u0275nov"](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,v)),a["\u0275did"](1,671744,[[1,4]],0,k.DraggableDirective,[a.ElementRef],{dragEventTarget:[0,"dragEventTarget"],dragModel:[1,"dragModel"],dragX:[2,"dragX"],dragY:[3,"dragY"]},null),a["\u0275did"](2,4341760,null,0,I.ResizeableDirective,[a.ElementRef,a.Renderer2],{resizeEnabled:[0,"resizeEnabled"]},{resize:"resize"}),a["\u0275did"](3,147456,null,0,D.LongPressDirective,[],{pressEnabled:[0,"pressEnabled"],pressModel:[1,"pressModel"]},{longPressStart:"longPressStart",longPressEnd:"longPressEnd"}),a["\u0275did"](4,49152,null,0,y.DataTableHeaderCellComponent,[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["\u0275nov"](e,2).resizeEnabled,a["\u0275nov"](e,3).press,a["\u0275nov"](e,3).isLongPress,a["\u0275nov"](e,4).headerHeight,a["\u0275nov"](e,4).columnCssClasses,a["\u0275nov"](e,4).name,a["\u0275nov"](e,4).minWidth,a["\u0275nov"](e,4).maxWidth,a["\u0275nov"](e,4).width)})}function P(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,L)),a["\u0275did"](3,278528,null,0,o.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._styleByGroup[e.context.$implicit.type]),t(e,3,0,e.context.$implicit.columns,n.columnTrackingFn)},function(t,e){t(e,0,0,"datatable-row-"+e.context.$implicit.type)})}function M(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](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["\u0275did"](1,1196032,null,1,R.OrderableDirective,[a.KeyValueDiffers,N.DOCUMENT],null,{reorder:"reorder",targetChanged:"targetChanged"}),a["\u0275qud"](603979776,1,{draggables:1}),(t()(),a["\u0275and"](16777216,null,null,1,null,P)),a["\u0275did"](4,278528,null,0,o.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 j=n("Ahxa"),q=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function z(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,F)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](2,{rowCount:0,pageSize:1,selectedCount:2,curPage:3,offset:4}),(t()(),a["\u0275and"](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 Y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "," / "]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.selectedCount?null:n.selectedCount.toLocaleString(),n.selectedMessage)})}function H(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Y)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](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 G(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},p,d)),a["\u0275did"](1,49152,null,0,c.DataTablePagerComponent,[],{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 V(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","datatable-footer-inner"]],[[4,"height","px"]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"selected-count":0}),(t()(),a["\u0275and"](16777216,null,null,1,null,z)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,H)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,G)),a["\u0275did"](8,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.selectedMessage);t(e,1,0,"datatable-footer-inner",a),t(e,4,0,n.footerTemplate),t(e,6,0,!n.footerTemplate),t(e,8,0,!n.footerTemplate)},function(t,e){t(e,0,0,e.component.footerHeight)})}var B=n("uKs4"),U=n("PNOi"),W=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function K(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","progress-linear"],["role","progressbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"div",[["class","bar"]],null,null,null,null,null))],null,null)}var $=n("YVFZ"),Z=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function X(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"label",[["class","datatable-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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 J(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-collapse"]],null,null,null,null,null))],null,null)}function Q(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-up"]],null,null,null,null,null))],null,null)}function tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","icon datatable-icon-down"]],null,null,null,null,null))],null,null)}function et(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,J)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Q)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,tt)),a["\u0275did"](7,16384,null,0,o.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 nt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function at(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,nt)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](2,{cellContext:0}),(t()(),a["\u0275and"](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 rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,et)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,at)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 it(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function st(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,[[1,3],["cellTemplate",2]],null,1,null,ot)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.cellContext,n.column.cellTemplate)},null)}function ut(t){return a["\u0275vid"](2,[a["\u0275qud"](671088640,1,{cellTemplate:0}),(t()(),a["\u0275eld"](1,0,null,null,8,"div",[["class","datatable-body-cell-label"]],[[4,"margin-left","px"]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,X)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,rt)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,it)),a["\u0275did"](7,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,st)),a["\u0275did"](9,16384,null,0,o.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 lt=n("syrc"),ct=n("FO+L"),dt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onFocus()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onBlur()&&r),"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n)&&r),"dblclick"===e&&(r=!1!==a["\u0275nov"](t,1).onDblClick(n)&&r),"keydown"===e&&(r=!1!==a["\u0275nov"](t,1).onKeyDown(n)&&r),"activate"===e&&(r=!1!==i.onActivate(n,t.context.index)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction()&&r),r},ut,Z)),a["\u0275did"](1,442368,null,0,$.DataTableBodyCellComponent,[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["\u0275nov"](e,1).columnCssClasses,a["\u0275nov"](e,1).width,a["\u0275nov"](e,1).minWidth,a["\u0275nov"](e,1).maxWidth,a["\u0275nov"](e,1).height)})}function pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0]],null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ft)),a["\u0275did"](3,278528,null,0,o.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._groupStyles[e.context.$implicit.type]),t(e,3,0,e.context.$implicit.columns,n.columnTrackingFn)},function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"datatable-row-",e.context.$implicit.type," datatable-row-group"))})}function ht(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,pt)),a["\u0275did"](1,278528,null,0,o.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 gt=n("rLYq"),mt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,lt.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,ct.ScrollbarHelper],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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,bt)),a["\u0275did"](1,16384,null,0,o.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 vt=n("Mfce"),_t=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function xt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,xt)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.groupContext,n.groupHeader.template)},null)}function wt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","datatable-group-header"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Tt)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.getGroupHeaderStyle()),t(e,3,0,n.groupHeader&&n.groupHeader.template)},null)}function St(t){return a["\u0275vid"](0,[a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Ct(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Ot)),a["\u0275did"](1,540672,null,0,o.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.rowContext,n.rowDetail.template)},null)}function kt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","datatable-row-detail"]],[[4,"height","px"]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Ct)),a["\u0275did"](2,16384,null,0,o.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 It(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,wt)),a["\u0275did"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,St)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,kt)),a["\u0275did"](5,16384,null,0,o.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 Dt=n("SfHT"),Rt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function Nt(t){return a["\u0275vid"](2,[a["\u0275ncd"](null,0)],null,null)}var At=n("7F1K"),Et=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function Lt(t){return a["\u0275vid"](2,[a["\u0275ncd"](null,0)],null,null)}var Pt=n("IPm6"),Mt=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function jt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"datatable-progress",[],null,null,null,K,W)),a["\u0275did"](1,49152,null,0,U.ProgressBarComponent,[],null,null)],null,null)}function qt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,yt,mt)),a["\u0275did"](1,573440,null,0,gt.DataTableSummaryRowComponent,[],{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 Ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),"treeAction"===e&&(r=!1!==i.onTreeAction(t.parent.context.$implicit)&&r),"activate"===e&&(r=!1!==a["\u0275nov"](t.parent.parent.parent,2).onActivate(n,i.indexes.first+t.parent.context.index)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,lt.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,ct.ScrollbarHelper],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["\u0275nov"](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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function zt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onKeyDown(n)&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).onMouseenter(n)&&r),"activate"===e&&(r=!1!==a["\u0275nov"](t.parent.parent.parent.parent,2).onActivate(n,t.context.index)&&r),r},ht,dt)),a["\u0275did"](1,311296,null,0,lt.DataTableBodyRowComponent,[a.KeyValueDiffers,[1,ct.ScrollbarHelper],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["\u0275nov"](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["\u0275nov"](e,1).cssClass,a["\u0275nov"](e,1).rowHeight,a["\u0275nov"](e,1).columnsTotalWidths)})}function Yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,zt)),a["\u0275did"](1,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.parent.context.$implicit.value,e.component.rowTrackingFn)},null)}function Ht(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"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["\u0275nov"](t,2).onContextmenu(n)&&r),"rowContextmenu"===e&&(r=!1!==i.rowContextmenu.emit(n)&&r),r},It,_t)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275did"](2,311296,null,0,vt.DataTableRowWrapperComponent,[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["\u0275and"](16777216,null,0,1,null,Ft)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["groupedRowsTemplate",2]],0,0,null,Yt))],function(t,e){var n=e.component;t(e,1,0,n.getRowsStyles(e.context.$implicit)),t(e,2,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,4,0,!n.groupedRows,a["\u0275nov"](e,5))},null)}function Gt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"datatable-summary-row",[["class","datatable-summary-row"]],null,null,null,yt,mt)),a["\u0275did"](1,278528,null,0,o.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275did"](2,573440,null,0,gt.DataTableSummaryRowComponent,[],{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.getBottomSummaryRowStyles()),t(e,2,0,n.rows,n.columns,n.summaryHeight,n.offsetX,n.innerWidth)},null)}function Vt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},Nt,Rt)),a["\u0275did"](1,245760,[[1,4]],0,Dt.ScrollerComponent,[a.NgZone,a.ElementRef,a.Renderer2],{scrollbarV:[0,"scrollbarV"],scrollbarH:[1,"scrollbarH"],scrollHeight:[2,"scrollHeight"],scrollWidth:[3,"scrollWidth"]},{scroll:"scroll"}),(t()(),a["\u0275and"](16777216,null,0,1,null,qt)),a["\u0275did"](3,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Ht)),a["\u0275did"](5,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Gt)),a["\u0275did"](7,16384,null,0,o.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["\u0275nov"](e,1).scrollHeight,a["\u0275nov"](e,1).scrollWidth)})}function Bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 Ut(t){return a["\u0275vid"](2,[a["\u0275qud"](671088640,1,{scroller:0}),(t()(),a["\u0275eld"](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},Lt,Et)),a["\u0275did"](2,49152,[["selector",4]],0,At.DataTableSelectionComponent,[],{rows:[0,"rows"],selected:[1,"selected"],selectEnabled:[2,"selectEnabled"],selectionType:[3,"selectionType"],rowIdentity:[4,"rowIdentity"],selectCheck:[5,"selectCheck"]},{activate:"activate",select:"select"}),(t()(),a["\u0275and"](16777216,null,0,1,null,jt)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Vt)),a["\u0275did"](6,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Bt)),a["\u0275did"](8,16384,null,0,o.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 Wt=n("3/HP"),Kt=n("nhM1"),$t=n("BARL"),Zt=a["\u0275crt"]({encapsulation:2,styles:[[".ngx-datatable{display:block;overflow:hidden;-webkit-box-pack:center;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:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;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{-webkit-box-align:stretch;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:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:0}.ngx-datatable .datatable-body .datatable-body-row>div{display:-webkit-box;display:flex}.ngx-datatable .datatable-footer{display:block;width:100%}.ngx-datatable .datatable-footer .datatable-footer-inner{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{-webkit-box-flex:1;flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{-webkit-box-flex:1;flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{-webkit-box-flex:1;flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{-webkit-box-flex:1;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 Xt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},M,E)),a["\u0275did"](1,49152,[[2,4]],0,A.DataTableHeaderComponent,[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["\u0275pid"](131072,o.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,1,[n.cssClasses.sortAscending,n.cssClasses.sortDescending,n.scrollbarH,n.groupedRows,n.targetMarkerTemplate,n._innerWidth,n.sorts,n.sortType,n.allRowsSelected,n.selectionType,n.reorderable,n.headerHeight,n._internalColumns,a["\u0275unv"](e,1,13,a["\u0275nov"](e,2).transform(n._offsetX))])},function(t,e){t(e,0,0,a["\u0275nov"](e,1).headerHeight,a["\u0275nov"](e,1).headerWidth)})}function Jt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},V,q)),a["\u0275did"](1,49152,null,0,j.DataTableFooterComponent,[],{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 Qt(t){return a["\u0275vid"](2,[a["\u0275qud"](402653184,1,{bodyComponent:0}),a["\u0275qud"](671088640,2,{headerComponent:0}),(t()(),a["\u0275eld"](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["\u0275did"](3,212992,null,0,B.VisibilityDirective,[a.ElementRef,a.NgZone],null,{visible:"visible"}),(t()(),a["\u0275and"](16777216,null,null,1,null,Xt)),a["\u0275did"](5,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](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},Ut,Mt)),a["\u0275did"](7,245760,[[1,4]],0,Pt.DataTableBodyComponent,[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["\u0275pid"](131072,o.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,Jt)),a["\u0275did"](10,16384,null,0,o.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["\u0275unv"](e,7,5,a["\u0275nov"](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["\u0275nov"](e,3).isVisible),t(e,6,0,a["\u0275nov"](e,7).bodyWidth,a["\u0275nov"](e,7).bodyHeight)})}var te=n("lUjN"),ee=n("vxfy");n("uIqm"),n.d(e,"a",function(){return ne}),n.d(e,"b",function(){return _e});var ne=a["\u0275crt"]({encapsulation:0,styles:[[".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%]{display:inline-block;float:right;width:auto;height:30px;line-height:28px;position:relative;border-left:1px solid rgba(0,0,0,.09);cursor:pointer;padding:0 8px;text-align:center}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%]{white-space:nowrap}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{cursor:pointer}.dataTables_wrapper[_ngcontent-%COMP%]   .dropdown-menu[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > label[_ngcontent-%COMP%]{width:100%;margin-bottom:0;padding-left:20px;padding-right:20px;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%]   th.oadatatablecheckbox[_ngcontent-%COMP%]{width:16px}.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%]   .oadatatableactions[_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%]   .clear-input[_ngcontent-%COMP%], .dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%]{height:30px}.dataTables_header[_ngcontent-%COMP%]   .input-group[_ngcontent-%COMP%]   .clear-input[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{vertical-align:text-top}.dataTables_header[_ngcontent-%COMP%]   .input-group.dataTables_paginate[_ngcontent-%COMP%]{width:8%;min-width:85px;padding-right:8px}  .oadatatable{border:1px solid #d1d1d1;margin-bottom:0;max-width:none!important}  .oadatatable .progress-linear{display:block;position:relative;width:100%;height:5px;padding:0;margin:0}  .oadatatable .progress-linear .container{background-color:#afd9ee}  .oadatatable .progress-linear .container .bar{left:0;height:100%;width:100%;position:absolute;overflow:hidden;background-color:#afd9ee}  .oadatatable .progress-linear .container .bar:before{display:block;position:absolute;content:'';left:-200px;width:200px;height:100%;background-color:#2b99a8;-webkit-animation:3s linear infinite progress-loading;animation:3s linear infinite progress-loading}  .oadatatable .datatable-header{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f5f5f5),to(#ededed));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)}  .oadatatable .datatable-header .sort-asc,   .oadatatable .datatable-header .sort-desc{color:#2b99a8}  .oadatatable .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}  .oadatatable .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}  .oadatatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-label:after{content:' \\f0dc'}  .oadatatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-asc .datatable-header-cell-label:after{content:' \\f160'}  .oadatatable .datatable-header .datatable-header-cell.sortable.sort-active.sort-desc .datatable-header-cell-label:after{content:' \\f161'}  .oadatatable .datatable-header .datatable-header-cell:first-child{border-left:none}  .oadatatable .datatable-body .empty-row{background-color:#fff3cd;text-align:center;font-weight:700;font-style:italic;padding-top:5px;padding-bottom:5px}  .oadatatable .datatable-body .datatable-body-row .label{font-size:.9em}  .oadatatable .datatable-body .datatable-body-row.clickable:hover .datatable-row-group{background-color:#eee;-webkit-transition-property:background;transition-property:background;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:linear;transition-timing-function:linear}  .oadatatable .datatable-body .datatable-body-row.datatable-row-even{background-color:#fff}  .oadatatable .datatable-body .datatable-body-row.datatable-row-odd{background-color:#f5f5f5}  .oadatatable .datatable-body .datatable-body-row.active,   .oadatatable .datatable-body .datatable-body-row.active:hover{background-color:#d9edf7}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell{padding:5px;border:none;border-left:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell:first-child{border-left:none}  .oadatatable .datatable-body .datatable-body-row .datatable-body-cell .datatable-body-cell-label{display:block}  .oadatatable .datatable-footer .page-count,   .oadatatable .datatable-footer .selected-count{font-style:italic;padding-left:5px}  .oadatatable .datatable-footer .datatable-pager .pager{margin-right:5px!important}  .oadatatable .datatable-footer .datatable-pager .pager li:not(:first-child){margin-left:3px}  .oadatatable .datatable-footer .datatable-pager .pager li>a,   .oadatatable .datatable-footer .datatable-pager .pager li>span{border-radius:3px}  .oadatatable .datatable-footer .datatable-pager .pager .pages>a,   .oadatatable .datatable-footer .datatable-pager .pager .pages>span{display:inline-block;padding:5px 10px;margin-bottom:5px;border:none}  .oadatatable .datatable-footer .datatable-pager .pager .pages a:hover{background-color:#afd9ee}  .oadatatable .datatable-footer .datatable-pager .pager .pages.active>a{background-color:#d9edf7}@-webkit-keyframes progress-loading{from{left:-200px;width:15%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}@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 ae(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Failed to load data."]))],null,null)}function re(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,3,"label",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"input",[["type","checkbox"]],[[8,"name",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["\u0275eld"](3,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](4,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.prop,!e.context.$implicit.isHidden),t(e,4,0,e.context.$implicit.name)})}function ie(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,re)),a["\u0275did"](2,278528,null,0,o.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.columns)},null)}function oe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","widget-toolbar tc_refreshBtn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"a",[],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.refreshBtn()&&a),a},null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-lg fa-refresh"]],[[2,"fa-spin",null]],null,null,null,null))],null,function(t,e){var n=e.component;t(e,2,0,n.updating||n.loadingIndicator)})}function se(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,28,"div",[["class","dataTables_header clearfix form-inline"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","oadatatableactions"]],null,null,null,null,null)),a["\u0275ncd"](null,0),a["\u0275ncd"](null,1),(t()(),a["\u0275eld"](4,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["class","glyphicon glyphicon-search"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275nov"](t,8)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,8).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,8)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](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["\u0275did"](8,16384,null,0,s.e,[a.Renderer2,a.ElementRef,[2,s.b]],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.e]),a["\u0275did"](10,671744,null,0,s.u,[[8,null],[8,null],[8,null],[6,s.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,s.q,null,[s.u]),a["\u0275did"](12,16384,null,0,s.r,[[4,s.q]],null,null),(t()(),a["\u0275eld"](13,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.updateFilter(!0)&&a),a},null,null)),(t()(),a["\u0275eld"](15,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,1,"div",[["class","input-group dataTables_paginate"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,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)),(t()(),a["\u0275eld"](18,0,null,null,8,"div",[["class","widget-toolbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,16777216,null,null,7,"div",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,u.f,u.f,[]),a["\u0275did"](21,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,l.a,u.a,u.f],null,null),(t()(),a["\u0275eld"](22,0,null,null,2,"a",[["class","btn btn-sm btn-default dropdown-toggle tc_columnBtn"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,23).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,23).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,23).onEsc()&&r),r},null,null)),a["\u0275did"](23,147456,null,0,u.g,[u.f,a.ElementRef,u.c],null,null),(t()(),a["\u0275eld"](24,0,null,null,0,"i",[["class","fa fa-lg fa-table"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ie)),a["\u0275did"](26,16384,null,0,u.d,[u.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,oe)),a["\u0275did"](28,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,10,0,n.search),t(e,21,0),t(e,28,0,n.fetchData.observers.length>0)},function(t,e){var n=e.component;t(e,7,0,a["\u0275nov"](e,12).ngClassUntouched,a["\u0275nov"](e,12).ngClassTouched,a["\u0275nov"](e,12).ngClassPristine,a["\u0275nov"](e,12).ngClassDirty,a["\u0275nov"](e,12).ngClassValid,a["\u0275nov"](e,12).ngClassInvalid,a["\u0275nov"](e,12).ngClassPending),t(e,17,0,n.userConfig.limit),t(e,19,0,a["\u0275nov"](e,21).dropup,a["\u0275nov"](e,21).isOpen,a["\u0275nov"](e,21).isOpen&&a["\u0275nov"](e,21).isBs4),t(e,22,0,!0,a["\u0275nov"](e,23).isDisabled,a["\u0275nov"](e,23).isOpen)})}function ue(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "])),(t()(),a["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["selected"])),(t()(),a["\u0275ted"](-1,null,[" / "]))],null,function(t,e){t(e,1,0,e.parent.context.selectedCount)})}function le(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "])),(t()(),a["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["found"])),(t()(),a["\u0275ted"](-1,null,[" / "]))],null,function(t,e){t(e,1,0,e.parent.context.rowCount)})}function ce(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","page-count"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ue)),a["\u0275did"](2,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,le)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](5,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,[" "," "])),(t()(),a["\u0275eld"](7,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["total"])),(t()(),a["\u0275eld"](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["\u0275nov"](t.parent,14).onFooterPage(n)&&r),r},p,d)),a["\u0275did"](10,49152,null,0,c.DataTablePagerComponent,[],{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 de(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.context.value)})}function fe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-sparkline",[],null,null,null,h.b,h.a)),a["\u0275did"](1,638976,null,0,g.a,[m.a],{data:[0,"data"],isBinary:[1,"isBinary"]},null)],function(t,e){t(e,1,0,e.context.value,e.context.row.cdIsBinary)},null)}function pe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](1,671744,null,0,b.o,[b.l,b.a,o.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["\u0275pad"](2,1),(t()(),a["\u0275ted"](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["\u0275nov"](e,1).target,a["\u0275nov"](e,1).href),t(e,3,0,e.context.value)})}function he(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","fa fa-check fa-fw"]],[[8,"hidden",0]],null,null,null,null))],null,function(t,e){t(e,0,0,!e.context.value)})}function ge(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," /s\n"]))],null,function(t,e){t(e,0,0,e.context.value)})}function me(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null))],null,null)}function be(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted italic"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["(","... )"]))],null,function(t,e){t(e,1,0,e.parent.context.row.cdExecuting)})}function ye(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,me)),a["\u0275did"](1,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](2,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,be)),a["\u0275did"](4,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 ve(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"",e.component.useCustomClass(e.context.value),"")),t(e,1,0,e.context.value)})}function _e(t){return a["\u0275vid"](2,[a["\u0275qud"](402653184,1,{table:0}),a["\u0275qud"](402653184,2,{tableCellBoldTpl:0}),a["\u0275qud"](402653184,3,{sparklineTpl:0}),a["\u0275qud"](402653184,4,{routerLinkTpl:0}),a["\u0275qud"](402653184,5,{checkIconTpl:0}),a["\u0275qud"](402653184,6,{perSecondTpl:0}),a["\u0275qud"](402653184,7,{executingTpl:0}),a["\u0275qud"](402653184,8,{classAddingTpl:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,ae)),a["\u0275did"](9,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](10,0,null,null,13,"div",[["class","dataTables_wrapper"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,se)),a["\u0275did"](12,16384,null,0,o.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](13,0,null,null,10,"ngx-datatable",[["class","bootstrap oadatatable 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["\u0275nov"](t,14).onWindowResize()&&r),"select"===e&&(r=!1!==i.onSelect()&&r),"sort"===e&&(r=!1!==i.changeSorting(n)&&r),r},Qt,Zt)),a["\u0275did"](14,5750784,[[1,4],["table",4]],4,Wt.DatatableComponent,[[1,ct.ScrollbarHelper],[1,Kt.DimensionsHelper],a.ChangeDetectorRef,a.ElementRef,a.KeyValueDiffers,$t.ColumnChangesService],{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"],rowIdentity:[12,"rowIdentity"],rowClass:[13,"rowClass"]},{select:"select",sort:"sort"}),a["\u0275qud"](603979776,9,{columnTemplates:1}),a["\u0275qud"](335544320,10,{rowDetail:0}),a["\u0275qud"](335544320,11,{groupHeader:0}),a["\u0275qud"](335544320,12,{footer:0}),(t()(),a["\u0275eld"](19,0,null,null,4,"ngx-datatable-footer",[],null,null,null,null,null)),a["\u0275did"](20,16384,[[12,4]],1,te.DatatableFooterDirective,[],null,null),a["\u0275qud"](335544320,13,{template:0}),(t()(),a["\u0275and"](0,[[13,2]],null,1,null,ce)),a["\u0275did"](23,16384,null,0,ee.DataTableFooterTemplateDirective,[a.TemplateRef],null,null),a["\u0275ncd"](null,2),(t()(),a["\u0275and"](0,[[2,2],["tableCellBoldTpl",2]],null,0,null,de)),(t()(),a["\u0275and"](0,[[3,2],["sparklineTpl",2]],null,0,null,fe)),(t()(),a["\u0275and"](0,[[4,2],["routerLinkTpl",2]],null,0,null,pe)),(t()(),a["\u0275and"](0,[[5,2],["checkIconTpl",2]],null,0,null,he)),(t()(),a["\u0275and"](0,[[6,2],["perSecondTpl",2]],null,0,null,ge)),(t()(),a["\u0275and"](0,[[7,2],["executingTpl",2]],null,0,null,ye)),(t()(),a["\u0275and"](0,[[8,2],["classAddingTpl",2]],null,0,null,ve))],function(t,e){var n=e.component;t(e,9,0,n.loadingError),t(e,12,0,n.toolHeader),t(e,14,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.rowIdentity(),n.getRowClass()])},function(t,e){t(e,13,1,[a["\u0275nov"](e,14).isFixedHeader,a["\u0275nov"](e,14).isFixedRow,a["\u0275nov"](e,14).isVertScroll,a["\u0275nov"](e,14).isVirtualized,a["\u0275nov"](e,14).isHorScroll,a["\u0275nov"](e,14).isSelectable,a["\u0275nov"](e,14).isCheckboxSelection,a["\u0275nov"](e,14).isCellSelection,a["\u0275nov"](e,14).isSingleSelection,a["\u0275nov"](e,14).isMultiSelection,a["\u0275nov"](e,14).isMultiClickSelection])})}},"26FU":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("K9Ia"),i=n("8g8A"),o=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return a.__extends(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return n&&!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new i.a;return this._value},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(r.a)},"2Bdj":function(t,e,n){"use strict";function a(t){return"function"==typeof t}n.d(e,"a",function(){return a})},"2EZI":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("gIcY"),i=n("QFaf"),o=n("CcnG"),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.group=function(e,n){void 0===n&&(n=null);var a=t.prototype.group.call(this,e,n);return new i.a(a.controls,a.validator,a.asyncValidator)},e.ngInjectableDef=o.defineInjectable({factory:function(){return new e},token:e,providedIn:"root"}),e}(r.h)},"2UWG":function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3");function i(t){return void 0!==t._view.width}function o(t){var e,n,a,r,o=t._view;if(i(t)){var s=o.width/2;e=o.x-s,n=o.x+s,a=Math.min(o.y,o.base),r=Math.max(o.y,o.base)}else{var u=o.height/2;e=Math.min(o.x,o.base),n=Math.max(o.x,o.base),a=o.y-u,r=o.y+u}return{left:e,top:a,right:n,bottom:r}}a._set("global",{elements:{rectangle:{backgroundColor:a.global.defaultColor,borderColor:a.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),t.exports=r.extend({draw:function(){var t,e,n,a,r,i,o,s=this._chart.ctx,u=this._view,l=u.borderWidth;if(u.horizontal?(n=u.y-u.height/2,a=u.y+u.height/2,r=(e=u.x)>(t=u.base)?1:-1,i=1,o=u.borderSkipped||"left"):(t=u.x-u.width/2,e=u.x+u.width/2,r=1,i=(a=u.base)>(n=u.y)?1:-1,o=u.borderSkipped||"bottom"),l){var c=Math.min(Math.abs(t-e),Math.abs(n-a)),d=(l=l>c?c:l)/2,f=t+("left"!==o?d*r:0),p=e+("right"!==o?-d*r:0),h=n+("top"!==o?d*i:0),g=a+("bottom"!==o?-d*i:0);f!==p&&(n=h,a=g),h!==g&&(t=f,e=p)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=l;var m=[[t,a],[t,n],[e,n],[e,a]],b=["bottom","left","top","right"].indexOf(o,0);function y(t){return m[(b+t)%4]}-1===b&&(b=0);var v=y(0);s.moveTo(v[0],v[1]);for(var _=1;_<4;_++)v=y(_),s.lineTo(v[0],v[1]);s.fill(),l&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var a=o(this);n=t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=o(this);return i(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(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 t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},"2V7f":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("IPm6")),a(n("YVFZ")),a(n("syrc")),a(n("PNOi")),a(n("SfHT")),a(n("Mfce")),a(n("7F1K")),a(n("99TG")),a(n("Fjl2")),a(n("VHo1"))},"2WpN":function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("FFOo"),i=n("pugT");function o(t){return function(e){return e.lift(new s(t))}}var s=function(){function t(t){this.callback=t}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.callback))},t}(),u=function(t){function e(e,n){var a=t.call(this,e)||this;return a.add(new i.a(n)),a}return a.__extends(e,t),e}(r.a)},"2Yyj":function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["es",[["a. m.","p. m."],n,n],n,[["D","L","M","X","J","V","S"],["dom.","lun.","mar.","mi\xe9.","jue.","vie.","s\xe1b."],["domingo","lunes","martes","mi\xe9rcoles","jueves","viernes","s\xe1bado"],["DO","LU","MA","MI","JU","VI","SA"]],n,[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sept.","oct.","nov.","dic."],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],n,[["a. C.","d. C."],n,["antes de Cristo","despu\xe9s de Cristo"]],1,[6,0],["d/M/yy","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss (zzzz)"],["{1} {0}",n,"{1}, {0}",n],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"\u20ac","euro",{AUD:[n,"$"],BRL:[n,"R$"],CNY:[n,"\xa5"],EGP:[],ESP:["\u20a7"],GBP:[n,"\xa3"],HKD:[n,"$"],ILS:[n,"\u20aa"],INR:[n,"\u20b9"],JPY:[n,"\xa5"],KRW:[n,"\u20a9"],MXN:[n,"$"],NZD:[n,"$"],RON:[n,"L"],THB:["\u0e3f"],TWD:[n,"NT$"],USD:["US$","$"],XAF:[],XCD:[n,"$"],XOF:[]},function(t){return 1===t?1:5}]})},"2ePl":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t}},"2fjn":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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")}}})}()},"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:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n 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"))},"3/HP":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG"),s=n("5tze"),u=(n("bpWZ"),n("qwkt")),l=n("2V7f"),c=n("99TG"),d=n("QHrR"),f=n("i3PA"),p=n("fktO"),h=n("FLvf"),g=n("DtyJ");e.DatatableComponent=function(){function t(t,e,n,a,r,i){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=i,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=u.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=u.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.rowIdentity=function(t){return t},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new o.EventEmitter,this.activate=new o.EventEmitter,this.select=new o.EventEmitter,this.sort=new o.EventEmitter,this.page=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.tableContextmenu=new o.EventEmitter(!1),this.treeAction=new o.EventEmitter,this.rowCount=0,this._offsetX=new g.BehaviorSubject(0),this._count=0,this._offset=0,this._subscriptions=[],this.element=a.nativeElement,this.rowDiffer=r.find({}).create()}return Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,t&&(this._internalRows=t.slice()),this.externalSorting||this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"groupRowsBy",{get:function(){return this._groupRowsBy},set:function(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){t&&(this._internalColumns=t.slice(),s.setColumnDefaults(this._internalColumns),this.recalculateColumns()),this._columns=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"limit",{get:function(){return this._limit},set:function(t){this._limit=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)},set:function(t){this._offset=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedHeader",{get:function(){var t=this.headerHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedRow",{get:function(){var t=this.rowHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVertScroll",{get:function(){return this.scrollbarV},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVirtualized",{get:function(){return this.virtualization},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isHorScroll",{get:function(){return this.scrollbarH},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelectable",{get:function(){return void 0!==this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxSelection",{get:function(){return this.selectionType===u.SelectionType.checkbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCellSelection",{get:function(){return this.selectionType===u.SelectionType.cell},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSingleSelection",{get:function(){return this.selectionType===u.SelectionType.single},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiSelection",{get:function(){return this.selectionType===u.SelectionType.multi},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiClickSelection",{get:function(){return this.selectionType===u.SelectionType.multiClick},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnTemplates",{get:function(){return this._columnTemplates},set:function(t){this._columnTemplates=t,this.translateColumns(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){var t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){var e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.recalculate()},t.prototype.ngAfterViewInit=function(){var t=this;this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(function(){t.recalculate(),t.externalPaging&&t.scrollbarV&&t.page.emit({count:t.count,pageSize:t.pageSize,limit:t.limit,offset:0})})},t.prototype.ngAfterContentInit=function(){var t=this;this.columnTemplates.changes.subscribe(function(e){return t.translateColumns(e)}),this.listenForColumnInputChanges()},t.prototype.translateColumns=function(t){if(t){var e=t.toArray();e.length&&(this._internalColumns=s.translateTemplates(e),s.setColumnDefaults(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}},t.prototype.groupArrayBy=function(t,e){var n=new Map;return t.forEach(function(t){var a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,function(t){return{key:t[0],value:t[1]}})},t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=this.rows.slice():this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())},t.prototype.recalculate=function(){this.recalculateDims(),this.recalculateColumns()},t.prototype.onWindowResize=function(){this.recalculate()},t.prototype.recalculateColumns=function(t,e,n){if(void 0===t&&(t=this._internalColumns),void 0===e&&(e=-1),void 0===n&&(n=this.scrollbarH),t){var a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),this.columnMode===u.ColumnMode.force?s.forceFillColumnWidths(t,a,e,n):this.columnMode===u.ColumnMode.flex&&s.adjustColumnWidths(t,a),t}},t.prototype.recalculateDims=function(){var t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){var e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()},t.prototype.recalculatePages=function(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()},t.prototype.onBodyPage=function(t){this.externalPaging&&!this.virtualization||(this.offset=t.offset,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))},t.prototype.onBodyScroll=function(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()},t.prototype.onFooterPage=function(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}))},t.prototype.calcPageSize=function(t){if(void 0===t&&(t=this.rows),this.scrollbarV&&this.virtualization){var e=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(e,0)}return void 0!==this.limit?this.limit:t?t.length:0},t.prototype.calcRowCount=function(t){return void 0===t&&(t=this.rows),this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0},t.prototype.onColumnContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:u.ContextmenuType.header,content:t.column})},t.prototype.onRowContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:u.ContextmenuType.body,content:t.row})},t.prototype.onColumnResize=function(t){var e=t.column,n=t.newValue;if(void 0!==e){var a,r=this._internalColumns.map(function(t,r){return(t=i({},t)).$$id===e.$$id&&(a=r,t.width=n,t.$$oldWidth=n),t});this.recalculateColumns(r,a),this._internalColumns=r,this.resize.emit({column:e,newValue:n})}},t.prototype.onColumnReorder=function(t){var e=t.column,n=t.newValue,a=t.prevValue,r=this._internalColumns.map(function(t){return i({},t)});if(this.swapColumns){var o=r[n];r[n]=e,r[a]=o}else if(n>a){for(var s=r[a],u=a;u<n;u++)r[u]=r[u+1];r[n]=s}else{for(s=r[a],u=a;u>n;u--)r[u]=r[u-1];r[n]=s}this._internalColumns=r,this.reorder.emit({column:e,newValue:n,prevValue:a})},t.prototype.onColumnSort=function(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=s.groupRowsByParents(this._internalRows,s.optionalGetterForProp(this.treeFromRelation),s.optionalGetterForProp(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)},t.prototype.onHeaderSelect=function(t){var e,n;if(this.selectAllRowsOnPage){var a=this.bodyComponent.indexes.first,r=this.bodyComponent.indexes.last,i=this.selected.length===r-a;this.selected=[],i||(e=this.selected).push.apply(e,this._internalRows.slice(a,r))}else i=this.selected.length===this.rows.length,this.selected=[],i||(n=this.selected).push.apply(n,this.rows);this.select.emit({selected:this.selected})},t.prototype.onBodySelect=function(t){this.select.emit(t)},t.prototype.onTreeAction=function(t){var e=this,n=t.row,a=this._rows.findIndex(function(n){return n[e.treeToRelation]===t.row[e.treeToRelation]});this.treeAction.emit({row:n,rowIndex:a})},t.prototype.ngOnDestroy=function(){this._subscriptions.forEach(function(t){return t.unsubscribe()})},t.prototype.listenForColumnInputChanges=function(){var t=this;this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(function(){t.columnTemplates&&t.columnTemplates.notifyOnChanges()}))},t.prototype.sortInternalRows=function(){this._internalRows=s.sortRows(this._internalRows,this._internalColumns,this.sorts)},a([o.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([o.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"rows",null),a([o.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"groupRowsBy",null),a([o.Input(),r("design:type",Array)],t.prototype,"groupedRows",void 0),a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.Input(),r("design:type",String)],t.prototype,"columnMode",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"headerHeight",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"externalSorting",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"limit",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([o.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([o.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"reorderable",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"swapColumns",void 0),a([o.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([o.Input(),r("design:type",Array)],t.prototype,"sorts",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"cssClasses",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"messages",void 0),a([o.Input(),r("design:type",Function)],t.prototype,"rowIdentity",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([o.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([o.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"selectAllRowsOnPage",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeFromRelation",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeToRelation",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([o.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"scroll",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"activate",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"select",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"sort",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"page",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"resize",void 0),a([o.Output(),r("design:type",Object)],t.prototype,"tableContextmenu",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"treeAction",void 0),a([o.HostBinding("class.fixed-header"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isFixedHeader",null),a([o.HostBinding("class.fixed-row"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isFixedRow",null),a([o.HostBinding("class.scroll-vertical"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isVertScroll",null),a([o.HostBinding("class.virtualized"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isVirtualized",null),a([o.HostBinding("class.scroll-horz"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isHorScroll",null),a([o.HostBinding("class.selectable"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isSelectable",null),a([o.HostBinding("class.checkbox-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isCheckboxSelection",null),a([o.HostBinding("class.cell-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isCellSelection",null),a([o.HostBinding("class.single-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isSingleSelection",null),a([o.HostBinding("class.multi-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isMultiSelection",null),a([o.HostBinding("class.multi-click-selection"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isMultiClickSelection",null),a([o.ContentChildren(d.DataTableColumnDirective),r("design:type",o.QueryList),r("design:paramtypes",[o.QueryList])],t.prototype,"columnTemplates",null),a([o.ContentChild(f.DatatableRowDetailDirective),r("design:type",f.DatatableRowDetailDirective)],t.prototype,"rowDetail",void 0),a([o.ContentChild(c.DatatableGroupHeaderDirective),r("design:type",c.DatatableGroupHeaderDirective)],t.prototype,"groupHeader",void 0),a([o.ContentChild(p.DatatableFooterDirective),r("design:type",p.DatatableFooterDirective)],t.prototype,"footer",void 0),a([o.ViewChild(l.DataTableBodyComponent),r("design:type",l.DataTableBodyComponent)],t.prototype,"bodyComponent",void 0),a([o.ViewChild(h.DataTableHeaderComponent),r("design:type",h.DataTableHeaderComponent)],t.prototype,"headerComponent",void 0),a([o.HostListener("window:resize"),s.throttleable(5),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onWindowResize",null),a([o.Component({selector:"ngx-datatable",template:'\n    <div\n      visibilityObserver\n      (visible)="recalculate()">\n      <datatable-header\n        *ngIf="headerHeight"\n        [sorts]="sorts"\n        [sortType]="sortType"\n        [scrollbarH]="scrollbarH"\n        [innerWidth]="_innerWidth"\n        [offsetX]="_offsetX | async"\n        [dealsWithGroup]="groupedRows"\n        [columns]="_internalColumns"\n        [headerHeight]="headerHeight"\n        [reorderable]="reorderable"\n        [targetMarkerTemplate]="targetMarkerTemplate"\n        [sortAscendingIcon]="cssClasses.sortAscending"\n        [sortDescendingIcon]="cssClasses.sortDescending"\n        [allRowsSelected]="allRowsSelected"\n        [selectionType]="selectionType"\n        (sort)="onColumnSort($event)"\n        (resize)="onColumnResize($event)"\n        (reorder)="onColumnReorder($event)"\n        (select)="onHeaderSelect($event)"\n        (columnContextmenu)="onColumnContextmenu($event)">\n      </datatable-header>\n      <datatable-body\n        [groupRowsBy]="groupRowsBy"\n        [groupedRows]="groupedRows"\n        [rows]="_internalRows"\n        [groupExpansionDefault]="groupExpansionDefault"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [virtualization]="virtualization"\n        [loadingIndicator]="loadingIndicator"\n        [externalPaging]="externalPaging"\n        [rowHeight]="rowHeight"\n        [rowCount]="rowCount"\n        [offset]="offset"\n        [trackByProp]="trackByProp"\n        [columns]="_internalColumns"\n        [pageSize]="pageSize"\n        [offsetX]="_offsetX | async"\n        [rowDetail]="rowDetail"\n        [groupHeader]="groupHeader"\n        [selected]="selected"\n        [innerWidth]="_innerWidth"\n        [bodyHeight]="bodyHeight"\n        [selectionType]="selectionType"\n        [emptyMessage]="messages.emptyMessage"\n        [rowIdentity]="rowIdentity"\n        [rowClass]="rowClass"\n        [selectCheck]="selectCheck"\n        [displayCheck]="displayCheck"\n        [summaryRow]="summaryRow"\n        [summaryHeight]="summaryHeight"\n        [summaryPosition]="summaryPosition"\n        (page)="onBodyPage($event)"\n        (activate)="activate.emit($event)"\n        (rowContextmenu)="onRowContextmenu($event)"\n        (select)="onBodySelect($event)"\n        (scroll)="onBodyScroll($event)"\n        (treeAction)="onTreeAction($event)">\n      </datatable-body>\n      <datatable-footer\n        *ngIf="footerHeight"\n        [rowCount]="rowCount"\n        [pageSize]="pageSize"\n        [offset]="offset"\n        [footerHeight]="footerHeight"\n        [footerTemplate]="footer"\n        [totalMessage]="messages.totalMessage"\n        [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n        [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n        [pagerPreviousIcon]="cssClasses.pagerPrevious"\n        [selectedCount]="selected.length"\n        [selectedMessage]="!!selectionType && messages.selectedMessage"\n        [pagerNextIcon]="cssClasses.pagerNext"\n        (page)="onFooterPage($event)">\n      </datatable-footer>\n    </div>\n  ',changeDetection:o.ChangeDetectionStrategy.OnPush,encapsulation:o.ViewEncapsulation.None,styleUrls:["./datatable.component.css"],host:{class:"ngx-datatable"}})],t)}()},"35yf":function(t,e,n){"use strict";n("CDJp")._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+")"}}}}),t.exports=function(t){t.controllers.scatter=t.controllers.line}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924"===e?t<4?t:t+12:"\u0938\u0941\u092c\u0939"===e?t:"\u0926\u094b\u092a\u0939\u0930"===e?t>=10?t:t+12:"\u0936\u093e\u092e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924":t<10?"\u0938\u0941\u092c\u0939":t<17?"\u0926\u094b\u092a\u0939\u0930":t<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(n("wd/R"))},"3MdB":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=n("ahDk");e.DraggableDirective=function(){function t(t){this.dragX=!0,this.dragY=!0,this.dragStart=new i.EventEmitter,this.dragging=new i.EventEmitter,this.dragEnd=new i.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}return t.prototype.ngOnChanges=function(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(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})))},t.prototype.onMousedown=function(t){var e=this;if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;var n={x:t.clientX,y:t.clientY},a=o.fromEvent(document,"mouseup");this.subscription=a.subscribe(function(t){return e.onMouseup(t)});var r=o.fromEvent(document,"mousemove").pipe(s.takeUntil(a)).subscribe(function(t){return e.move(t,n)});this.subscription.add(r),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}},t.prototype.move=function(t,e){if(this.isDragging){var 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})}},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Object)],t.prototype,"dragEventTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"dragModel",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragX",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragY",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragging",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragEnd",void 0),a([i.Directive({selector:"[draggable]"})],t)}()},"3U0i":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="Timeout has occurred",this.name="TimeoutError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"3fWJ":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"4HWh":function(t,e,n){"use strict";var a=n("CcnG"),r=n("OZfm"),i=n("lqqz");n("p4Cf"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return u});var o=a["\u0275crt"]({encapsulation:0,styles:[["i[_ngcontent-%COMP%]{color:#2b99a8;cursor:pointer;padding-left:4px}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],null,function(t,e){t(e,0,0,e.component.html)})}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,[["popoverTpl",2]],null,0,null,s)),(t()(),a["\u0275eld"](1,16777216,null,null,1,"i",[["aria-hidden","true"],["class","fa fa-question-circle"],["container","body"],["placement","bottom"]],null,null,null,null,null)),a["\u0275did"](2,212992,null,0,r.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,r.a,i.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null)],function(t,e){t(e,2,0,a["\u0275nov"](e,0),"bottom",!0,"body")},null)}},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},n={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};t.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(t){return t.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0ab0\u0abe\u0aa4"===e?t<4?t:t+12:"\u0ab8\u0ab5\u0abe\u0ab0"===e?t:"\u0aac\u0aaa\u0acb\u0ab0"===e?t>=10?t:t+12:"\u0ab8\u0abe\u0a82\u0a9c"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0ab0\u0abe\u0aa4":t<10?"\u0ab8\u0ab5\u0abe\u0ab0":t<17?"\u0aac\u0aaa\u0acb\u0ab0":t<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}})}(n("wd/R"))},"4dOw":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"4fRq":function(t,e){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var a=new Uint8Array(16);t.exports=function(){return n(a),a}}else{var r=new Array(16);t.exports=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),r[e]=t>>>((3&e)<<3)&255;return r}}},"4mcN":function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["cs",[["dop.","odp."],n,n],n,[["N","P","\xda","S","\u010c","P","S"],["ne","po","\xfat","st","\u010dt","p\xe1","so"],["ned\u011ble","pond\u011bl\xed","\xfater\xfd","st\u0159eda","\u010dtvrtek","p\xe1tek","sobota"],["ne","po","\xfat","st","\u010dt","p\xe1","so"]],n,[["1","2","3","4","5","6","7","8","9","10","11","12"],["led","\xfano","b\u0159e","dub","kv\u011b","\u010dvn","\u010dvc","srp","z\xe1\u0159","\u0159\xedj","lis","pro"],["ledna","\xfanora","b\u0159ezna","dubna","kv\u011btna","\u010dervna","\u010dervence","srpna","z\xe1\u0159\xed","\u0159\xedjna","listopadu","prosince"]],[["1","2","3","4","5","6","7","8","9","10","11","12"],["led","\xfano","b\u0159e","dub","kv\u011b","\u010dvn","\u010dvc","srp","z\xe1\u0159","\u0159\xedj","lis","pro"],["leden","\xfanor","b\u0159ezen","duben","kv\u011bten","\u010derven","\u010dervenec","srpen","z\xe1\u0159\xed","\u0159\xedjen","listopad","prosinec"]],[["p\u0159.n.l.","n.l."],["p\u0159. n. l.","n. l."],["p\u0159ed na\u0161\xedm letopo\u010dtem","na\u0161eho letopo\u010dtu"]],1,[6,0],["dd.MM.yy","d. M. y","d. MMMM y","EEEE d. MMMM y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}",n,n,n],[",","\xa0",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"K\u010d","\u010desk\xe1 koruna",{AUD:["AU$","$"],CSK:["K\u010ds"],CZK:["K\u010d"],ILS:[n,"\u20aa"],INR:[n,"\u20b9"],JPY:["JP\xa5","\xa5"],RON:[n,"L"],TWD:["NT$"],USD:["US$","$"],VND:[n,"\u20ab"],XEU:["ECU"]},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:e===Math.floor(e)&&e>=2&&e<=4&&0===n?3:0!==n?4:5}]})},"58b6":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("kQXf");e.FoldingType=function(){function t(t){this._cssClass=t}return Object.defineProperty(t.prototype,"cssClass",{get:function(){return this._cssClass},enumerable:!0,configurable:!0}),t.Expanded=new t("node-expanded"),t.Collapsed=new t("node-collapsed"),t.Empty=new t("node-empty"),t.Leaf=new t("node-leaf"),t}(),e.TreeModelSettings=function(){function t(){}return t.merge=function(e,n){var r=a.omit(a.get(n,"settings"),t.NOT_CASCADING_SETTINGS);return a.defaultsDeep({},a.get(e,"settings"),r,{static:!1,leftMenu:!1,rightMenu:!0,isCollapsedOnInit:!1,checked:!1,keepNodesInDOM:!1,selectionAllowed:!0})},t.NOT_CASCADING_SETTINGS=["selectionAllowed"],t}(),e.Ng2TreeSettings=function(){return function(){this.rootIsVisible=!0,this.showCheckboxes=!1,this.enableCheckboxes=!0}}(),e.TreeStatus=function(t){return t[t.New=0]="New",t[t.Modified=1]="Modified",t[t.IsBeingRenamed=2]="IsBeingRenamed",t}(e.TreeStatus||{})},"5D2u":function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["zh-Hans",[["\u4e0a\u5348","\u4e0b\u5348"],n,n],n,[["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"]],n,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"]],n,[["\u516c\u5143\u524d","\u516c\u5143"],n,n],0,[6,0],["y/M/d","y\u5e74M\u6708d\u65e5",n,"y\u5e74M\u6708d\u65e5EEEE"],["ah:mm","ah:mm:ss","z ah:mm:ss","zzzz ah:mm:ss"],["{1} {0}",n,n,n],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"\uffe5","\u4eba\u6c11\u5e01",{AUD:["AU$","$"],CNY:["\uffe5","\xa5"],ILR:["ILS"],JPY:["JP\xa5","\xa5"],KRW:["\uffe6","\u20a9"],TWD:["NT$"],USD:["US$","$"]},function(t){return 5}]})},"5ZZ7":function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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),o=e.datasets[0],s=r.data[a].custom||{},u=i.valueAtIndexOrDefault,l=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(o.backgroundColor,a,l.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(o.borderColor,a,l.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(o.borderWidth,a,l.borderWidth),hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,a,r,i=e.index,o=this.chart;for(n=0,a=(o.data.datasets||[]).length;n<a;++n)(r=o.getDatasetMeta(n)).data[i].hidden=!r.data[i].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),t.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:r.Arc,linkScales:i.noop,update:function(t){var e,n,a,r=this,o=r.getDataset(),s=r.getMeta(),u=r.chart.options.startAngle||0,l=r._starts=[],c=r._angles=[];for(r._updateRadius(),s.count=r.countVisibleElements(),e=0,n=o.data.length;e<n;e++)l[e]=u,a=r._computeAngle(e),c[e]=a,u+=a;i.each(s.data,function(e,n){r.updateElement(e,n,t)})},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,a=e.options,r=a.elements.arc,i=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max((i-r.borderWidth/2)/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,o=a.getDataset(),s=r.options,u=s.animation,l=r.scale,c=r.data.labels,d=l.xCenter,f=l.yCenter,p=s.startAngle,h=t.hidden?0:l.getDistanceFromCenterForValue(o.data[e]),g=a._starts[e],m=g+(t.hidden?0:a._angles[e]),b=u.animateScale?0:l.getDistanceFromCenterForValue(o.data[e]);i.extend(t,{_datasetIndex:a.index,_index:e,_scale:l,_model:{x:d,y:f,innerRadius:0,outerRadius:n?b:h,startAngle:n&&u.animateRotate?p:g,endAngle:n&&u.animateRotate?p:m,label:i.valueAtIndexOrDefault(c,e,c[e])}});var y=this.chart.options.elements.arc,v=t.custom||{},_=i.valueAtIndexOrDefault,x=t._model;x.backgroundColor=v.backgroundColor?v.backgroundColor:_(o.backgroundColor,e,y.backgroundColor),x.borderColor=v.borderColor?v.borderColor:_(o.borderColor,e,y.borderColor),x.borderWidth=v.borderWidth?v.borderWidth:_(o.borderWidth,e,y.borderWidth),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return i.each(e.data,function(e,a){isNaN(t.data[a])||e.hidden||n++}),n},_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:i.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:a,datasetIndex:e.index},t)}})}},"5tze":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("HV4d")),a(n("ae7Z")),a(n("h+PQ")),a(n("CVuo")),a(n("RnPR")),a(n("ohIB")),a(n("rdkg")),a(n("y9Z7")),a(n("1HVU")),a(n("MgB7")),a(n("h6KF")),a(n("GDJm")),a(n("VYA+")),a(n("AqeW")),a(n("FMPj"))},"6+QB":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"60iU":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a,r=n("G5J1"),i=n("F/XL"),o=n("XlPw");a||(a={});var s=function(){function t(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}return t.prototype.observe=function(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()}},t.prototype.do=function(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()}},t.prototype.accept=function(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)},t.prototype.toObservable=function(){switch(this.kind){case"N":return Object(i.a)(this.value);case"E":return Object(o.a)(this.error);case"C":return Object(r.b)()}throw new Error("unexpected notification kind value")},t.createNext=function(e){return void 0!==e?new t("N",e):t.undefinedValueNotification},t.createError=function(e){return new t("E",void 0,e)},t.createComplete=function(){return t.completeNotification},t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t}()},"67Y/":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(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 o(t,e))}}var o=function(){function t(t,e){this.project=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.project,this.thisArg))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.project=n,r.count=0,r.thisArg=a||r,r}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(r.a)},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},n={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};t.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".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:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(t){return"\u179b\u17d2\u1784\u17b6\u1785"===t},meridiem:function(t,e,n){return t<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(t){return t.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/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"))},"6MUB":function(t,e,n){"use strict";var a=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,r){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map(function(r){var i=encodeURIComponent(a(r))+n;return Array.isArray(t[r])?t[r].map(function(t){return i+encodeURIComponent(a(t))}).join(e):i+encodeURIComponent(a(t[r]))}).join(e):r?encodeURIComponent(a(r))+n+encodeURIComponent(a(t)):""}},"6ahw":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("iLxQ"),r=n("DKTb"),i={closed:!0,next:function(t){},error:function(t){if(a.a.useDeprecatedSynchronousErrorHandling)throw t;Object(r.a)(t)},complete:function(){}}},"6blF":function(t,e,n){"use strict";var a=n("1fDf"),r=n("FFOo"),i=n("L/V9"),o=n("6ahw"),s=n("xTla"),u=n("y3By"),l=n("iLxQ");n.d(e,"a",function(){return c});var c=function(){function t(t){this._isScalar=!1,t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var a=this.operator,s=function(t,e,n){if(t){if(t instanceof r.a)return t;if(t[i.a])return t[i.a]()}return t||e||n?new r.a(t,e,n):new r.a(o.a)}(t,e,n);if(s.add(a?a.call(s,this.source):this.source||l.a.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),l.a.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){l.a.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),Object(a.a)(t)?t.error(e):console.warn(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=d(e))(function(e,a){var r;r=n.subscribe(function(e){try{t(e)}catch(n){a(n),r&&r.unsubscribe()}},a,e)})},t.prototype._subscribe=function(t){var e=this.source;return e&&e.subscribe(t)},t.prototype[s.a]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 0===t.length?this:Object(u.b)(t)(this)},t.prototype.toPromise=function(t){var e=this;return new(t=d(t))(function(t,n){var a;e.subscribe(function(t){return a=t},function(t){return n(t)},function(){return t(a)})})},t.create=function(e){return new t(e)},t}();function d(t){if(t||(t=l.a.Promise||Promise),!t)throw new Error("no Promise impl found");return t}},"6qA3":function(t,e,n){"use strict";var a=n("Q1FS"),r=n("OAkW"),i=n("Z5tI"),o=n("poJ0"),s=n("ozli"),u=n("yRPT"),l=n("90cg"),c=n("GMZp"),d=n("VKeD"),f=n("zfKp");e.subscribeTo=function(t){if(t instanceof a.Observable)return function(e){return t._isScalar?(e.next(t.value),void e.complete()):t.subscribe(e)};if(t&&"function"==typeof t[f.observable])return s.subscribeToObservable(t);if(u.isArrayLike(t))return r.subscribeToArray(t);if(l.isPromise(t))return i.subscribeToPromise(t);if(t&&"function"==typeof t[d.iterator])return o.subscribeToIterable(t);var e=c.isObject(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.")}},"6rqY":function(t,e,n){"use strict";var a=n("A5uo"),r=n("dpnK"),i=n("CDJp"),o=n("RDha"),s=n("mlr9"),u=n("fELs"),l=n("iM7B"),c=n("VgNv"),d=n("tjFV"),f=n("x8uC");t.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},o.extend(t.prototype,{construct:function(e,n){var a=this;n=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=o.configMerge(i.global,i[t.type],t.options||{}),t}(n);var r=l.acquireContext(e,n),s=r&&r.canvas,u=s&&s.height,c=s&&s.width;a.id=o.uid(),a.ctx=r,a.canvas=s,a.config=n,a.width=c,a.height=u,a.aspectRatio=u?c/u:null,a.options=n.options,a._bufferedRender=!1,a.chart=a,a.controller=a,t.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),r&&s?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return c.notify(t,"beforeInit"),o.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),c.notify(t,"afterInit"),t},clear:function(){return o.canvas.clear(this),this},stop:function(){return r.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(o.getMaximumWidth(a))),s=Math.max(0,Math.floor(r?i/r:o.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",o.retinaScale(e,n.devicePixelRatio),!t)){var u={width:i,height:s};c.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;o.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),o.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,n=t.options,a=t.scales||{},r=[],i=Object.keys(a).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),o.each(r,function(n){var r=n.options,s=r.id,u=o.valueOrDefault(r.type,n.dtype);e(r.position)!==e(n.dposition)&&(r.position=n.dposition),i[s]=!0;var l=null;if(s in a&&a[s].type===u)(l=a[s]).options=r,l.ctx=t.ctx,l.chart=t;else{var c=d.getScaleConstructor(u);if(!c)return;l=new c({id:s,type:u,options:r,ctx:t.ctx,chart:t}),a[l.id]=l}l.mergeTicksOptions(),n.isDefault&&(t.scale=l)}),o.each(i,function(t,e){t||delete a[e]}),t.scales=a,d.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],a=[];return o.each(e.data.datasets,function(r,i){var o=e.getDatasetMeta(i),s=r.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(i),o=e.getDatasetMeta(i)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(i),o.controller.linkScales();else{var u=t.controllers[o.type];if(void 0===u)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new u(e,i),a.push(o.controller)}},e),a},resetElements:function(){var t=this;o.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var n,a,r=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),a=(n=r).options,o.each(n.scales,function(t){u.removeBox(n,t)}),a=o.configMerge(t.defaults.global,t.defaults[n.config.type],a),n.options=n.config.options=a,n.ensureScalesHaveIDs(),n.buildOrUpdateScales(),n.tooltip._options=a.tooltips,n.tooltip.initialize(),c._invalidate(r),!1!==c.notify(r,"beforeUpdate")){r.tooltip._data=r.data;var i=r.buildOrUpdateControllers();o.each(r.data.datasets,function(t,e){r.getDatasetMeta(e).controller.buildOrUpdateElements()},r),r.updateLayout(),r.options.animation&&r.options.animation.duration&&o.each(i,function(t){t.reset()}),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],c.notify(r,"afterUpdate"),r._bufferedRender?r._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:r.render(e)}},updateLayout:function(){!1!==c.notify(this,"beforeLayout")&&(u.update(this,this.width,this.height),c.notify(this,"afterScaleUpdate"),c.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==c.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);c.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==c.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),c.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=t.duration,i=t.lazy;if(!1!==c.notify(e,"beforeRender")){var s=e.options.animation,u=function(t){c.notify(e,"afterRender"),o.callback(s&&s.onComplete,[t],e)};if(s&&(void 0!==n&&0!==n||void 0===n&&0!==s.duration)){var l=new a({numSteps:(n||s.duration)/16.66,easing:t.easing||s.easing,render:function(t,e){var n=e.currentStep,a=n/e.numSteps;t.draw((0,o.easing.effects[e.easing])(a),a,n)},onAnimationProgress:s.onProgress,onAnimationComplete:u});r.addAnimation(e,l,n,i)}else e.draw(),u(new a({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),o.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==c.notify(e,"beforeDraw",[t])&&(o.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),c.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!==c.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);c.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),a={meta:n,index:t,easingValue:e};!1!==c.notify(this,"beforeDatasetDraw",[a])&&(n.controller.draw(e),c.notify(this,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==c.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),c.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return s.modes.single(this,t)},getElementsAtEvent:function(t){return s.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return s.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var a=s.modes[e];return"function"==typeof a?a(this,t,n):[]},getDatasetAtEvent:function(t){return s.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 e,n,a=this,r=a.canvas;for(a.stop(),e=0,n=a.data.datasets.length;e<n;++e)a.destroyDatasetMeta(e);r&&(a.unbindEvents(),o.canvas.clear(a),l.releaseContext(a.ctx),a.canvas=null,a.ctx=null),c.notify(a,"destroy"),delete t.instances[a.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new f({_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)};o.each(t.options.events,function(a){l.addEventListener(t,a,n),e[a]=n}),t.options.responsive&&(n=function(){t.resize()},l.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,o.each(e,function(e,n){l.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var a,r,i,o=n?"setHoverStyle":"removeHoverStyle";for(r=0,i=t.length;r<i;++r)(a=t[r])&&this.getDatasetMeta(a._datasetIndex).controller[o](a)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==c.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)),c.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),o.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=!o.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),t.Controller=t}},"6ww4":function(t,e,n){var a=n("uxXc"),r=n("mgIt"),i=function(t){return t instanceof i?t:this instanceof i?(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=r.getRgba(t))?this.setValues("rgb",e):(e=r.getHsla(t))?this.setValues("hsl",e):(e=r.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 i(t);var e};i.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 r.hexString(this.values.rgb)},rgbString:function(){return r.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return r.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return r.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return r.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return r.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return r.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return r.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(),o=((r*i==-1?r:(r+i)/(1+r*i))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new i,a=this.values,r=n.values;for(var o in a)a.hasOwnProperty(o)&&("[object Array]"===(e={}.toString.call(t=a[o]))?r[o]=t.slice(0):"[object Number]"===e?r[o]=t:console.error("unexpected color value:",t));return n}},i.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},i.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},i.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},i.prototype.setValues=function(t,e){var n,r,i=this.values,o=this.spaces,s=this.maxes,u=1;if(this.valid=!0,"alpha"===t)u=e;else if(e.length)i[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++)i[t][n]=e[t.charAt(n)];u=e.a}else if(void 0!==e[o[t][0]]){var l=o[t];for(n=0;n<t.length;n++)i[t][n]=e[l[n]];u=e.alpha}if(i.alpha=Math.max(0,Math.min(1,void 0===u?i.alpha:u)),"alpha"===t)return!1;for(n=0;n<t.length;n++)r=Math.max(0,Math.min(s[t][n],i[t][n])),i[t][n]=Math.round(r);for(var c in o)c!==t&&(i[c]=a[t][c](i[t]));return!0},i.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)},i.prototype.setChannel=function(t,e,n){var a=this.values[t];return void 0===n?a[e]:n===a[e]?this:(a[e]=n,this.setValues(t,a),this)},"undefined"!=typeof window&&(window.Color=i),t.exports=i},"7BjC":function(t,e,n){!function(t){"use strict";function e(t,e,n,a){var r={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[t+"sekundi",t+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[t+" minuti",t+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[t+" tunni",t+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[t+" kuu",t+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[t+" aasta",t+" aastat"]};return e?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}n("wd/R").defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".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\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d p\xe4eva",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},"7F1K":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=n("qwkt");e.DataTableSelectionComponent=function(){function t(){this.activate=new i.EventEmitter,this.select=new i.EventEmitter}return t.prototype.selectRow=function(t,e,n){var a;if(this.selectEnabled){var r=this.selectionType===s.SelectionType.checkbox,i=this.selectionType===s.SelectionType.multiClick,u=[];u=this.selectionType===s.SelectionType.multi||r||i?t.shiftKey?o.selectRowsBetween([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):o.selectRows(t.ctrlKey||t.metaKey||i||r?this.selected.slice():[],n,this.getRowSelectedIdx.bind(this)):o.selectRows([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(u=u.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),(a=this.selected).push.apply(a,u),this.prevIndex=e,this.select.emit({selected:u})}},t.prototype.onActivate=function(t,e){var n=t.type,a=t.event,r=t.row,i=this.selectionType===s.SelectionType.checkbox;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===o.Keys.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)},t.prototype.onKeyboardFocus=function(t){var e=t.event.keyCode;if(e===o.Keys.up||e===o.Keys.down||e===o.Keys.right||e===o.Keys.left){var n=this.selectionType===s.SelectionType.cell;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}},t.prototype.focusRow=function(t,e){var n=this.getPrevNextRow(t,e);n&&n.focus()},t.prototype.getPrevNextRow=function(t,e){var n=t.parentElement;if(n){var a=void 0;if(e===o.Keys.up?a=n.previousElementSibling:e===o.Keys.down&&(a=n.nextElementSibling),a&&a.children.length)return a.children[0]}},t.prototype.focusCell=function(t,e,n,a){var r;if(n===o.Keys.left)r=t.previousElementSibling;else if(n===o.Keys.right)r=t.nextElementSibling;else if(n===o.Keys.up||n===o.Keys.down){var i=this.getPrevNextRow(e,n);if(i){var s=i.getElementsByClassName("datatable-body-cell");s.length&&(r=s[a])}}r&&r.focus()},t.prototype.getRowSelected=function(t){return this.getRowSelectedIdx(t,this.selected)>-1},t.prototype.getRowSelectedIdx=function(t,e){var n=this;if(!e||!e.length)return-1;var a=this.rowIdentity(t);return e.findIndex(function(t){return n.rowIdentity(t)===a})},a([i.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"selectEnabled",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Component({selector:"datatable-selection",template:"\n    <ng-content></ng-content>\n  ",changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"7O6V":function(t,e,n){"use strict";t.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},"7aV9":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".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 [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(t){return t+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(t){return"\u0db4.\u0dc0."===t||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===t},meridiem:function(t,e,n){return t>11?n?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":n?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}})}()},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},n={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};t.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(t){return t.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0a30\u0a3e\u0a24"===e?t<4?t:t+12:"\u0a38\u0a35\u0a47\u0a30"===e?t:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===e?t>=10?t:t+12:"\u0a38\u0a3c\u0a3e\u0a2e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0a30\u0a3e\u0a24":t<10?"\u0a38\u0a35\u0a47\u0a30":t<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":t<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}})}(n("wd/R"))},"8//i":function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e=a.global,n={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function s(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function u(t){var n=t.options.pointLabels,a=r.valueOrDefault(n.fontSize,e.defaultFontSize),i=r.valueOrDefault(n.fontStyle,e.defaultFontStyle),o=r.valueOrDefault(n.fontFamily,e.defaultFontFamily);return{size:a,style:i,family:o,font:r.fontString(a,i,o)}}function l(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-5,end:e}:{start:e,end:e+n+5}}function c(t){return 0===t||180===t?"center":t<180?"left":"right"}function d(t,e,n,a){if(r.isArray(e))for(var i=n.y,o=1.5*a,s=0;s<e.length;++s)t.fillText(e[s],n.x,i),i+=o;else t.fillText(e,n.x,n.y)}function f(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function p(t){return r.isNumber(t)?t:0}var h=t.LinearScaleBase.extend({setDimensions:function(){var t=this,n=t.options,a=n.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=r.min([t.height,t.width]),o=r.valueOrDefault(a.fontSize,e.defaultFontSize);t.drawingArea=n.display?i/2-(o/2+a.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;r.each(e.data.datasets,function(i,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);r.each(i.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()},getTickLimit:function(){var t=this.options.ticks,n=r.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*n)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t;this.options.pointLabels.display?function(t){var e,n,a,i=u(t),o=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},d={};t.ctx.font=i.font,t._pointLabelSizes=[];var f,p,h,g=s(t);for(e=0;e<g;e++){a=t.getPointPosition(e,o),f=t.ctx,p=i.size,n=r.isArray(h=t.pointLabels[e]||"")?{w:r.longestText(f,f.font,h),h:h.length*p+1.5*(h.length-1)*p}:{w:f.measureText(h).width,h:p},t._pointLabelSizes[e]=n;var m=t.getIndexAngle(e),b=r.toDegrees(m)%360,y=l(b,a.x,n.w,0,180),v=l(b,a.y,n.h,90,270);y.start<c.l&&(c.l=y.start,d.l=m),y.end>c.r&&(c.r=y.end,d.r=m),v.start<c.t&&(c.t=v.start,d.t=m),v.end>c.b&&(c.b=v.end,d.b=m)}t.setReductions(o,c,d)}(this):(t=Math.min(this.height/2,this.width/2),this.drawingArea=Math.round(t),this.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var a=e.l/Math.sin(n.l),r=Math.max(e.r-this.width,0)/Math.sin(n.r),i=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);a=p(a),r=p(r),i=p(i),o=p(o),this.drawingArea=Math.min(Math.round(t-(a+r)/2),Math.round(t-(i+o)/2)),this.setCenterPoint(a,r,i,o)},setCenterPoint:function(t,e,n,a){var r=this,i=n+r.drawingArea,o=r.height-a-r.drawingArea;r.xCenter=Math.round((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.round((i+o)/2+r.top)},getIndexAngle:function(t){return t*(2*Math.PI/s(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.round(Math.cos(n)*e)+this.xCenter,y:Math.round(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,n=t.options,a=n.gridLines,i=n.ticks,o=r.valueOrDefault;if(n.display){var l=t.ctx,p=this.getIndexAngle(0),h=o(i.fontSize,e.defaultFontSize),g=o(i.fontStyle,e.defaultFontStyle),m=o(i.fontFamily,e.defaultFontFamily),b=r.fontString(h,g,m);r.each(t.ticks,function(n,u){if(u>0||i.reverse){var c=t.getDistanceFromCenterForValue(t.ticksAsNumbers[u]);if(a.display&&0!==u&&function(t,e,n,a){var i=t.ctx;if(i.strokeStyle=r.valueAtIndexOrDefault(e.color,a-1),i.lineWidth=r.valueAtIndexOrDefault(e.lineWidth,a-1),t.options.gridLines.circular)i.beginPath(),i.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),i.closePath(),i.stroke();else{var o=s(t);if(0===o)return;i.beginPath();var u=t.getPointPosition(0,n);i.moveTo(u.x,u.y);for(var l=1;l<o;l++)u=t.getPointPosition(l,n),i.lineTo(u.x,u.y);i.closePath(),i.stroke()}}(t,a,c,u),i.display){var d=o(i.fontColor,e.defaultFontColor);if(l.font=b,l.save(),l.translate(t.xCenter,t.yCenter),l.rotate(p),i.showLabelBackdrop){var f=l.measureText(n).width;l.fillStyle=i.backdropColor,l.fillRect(-f/2-i.backdropPaddingX,-c-h/2-i.backdropPaddingY,f+2*i.backdropPaddingX,h+2*i.backdropPaddingY)}l.textAlign="center",l.textBaseline="middle",l.fillStyle=d,l.fillText(n,0,-c),l.restore()}}}),(n.angleLines.display||n.pointLabels.display)&&function(t){var n=t.ctx,a=t.options,i=a.angleLines,o=a.pointLabels;n.lineWidth=i.lineWidth,n.strokeStyle=i.color;var l=t.getDistanceFromCenterForValue(a.ticks.reverse?t.min:t.max),p=u(t);n.textBaseline="top";for(var h=s(t)-1;h>=0;h--){if(i.display){var g=t.getPointPosition(h,l);n.beginPath(),n.moveTo(t.xCenter,t.yCenter),n.lineTo(g.x,g.y),n.stroke(),n.closePath()}if(o.display){var m=t.getPointPosition(h,l+5),b=r.valueAtIndexOrDefault(o.fontColor,h,e.defaultFontColor);n.font=p.font,n.fillStyle=b;var y=t.getIndexAngle(h),v=r.toDegrees(y);n.textAlign=c(v),f(v,t._pointLabelSizes[h],m),d(n,t.pointLabels[h]||"",m,p.size)}}}(t)}}});i.registerScaleType("radialLinear",h,n)}},"85J/":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var e=/ceph version\s+([^ ]+)\s+\(.+\)/.exec(t);return e?e[1]:t},t}()},"88/t":function(t,e,n){"use strict";n.r(e);var a=n("DtyJ");n.d(e,"Observable",function(){return a.Observable})},"8TtQ":function(t,e,n){"use strict";var a=n("cdu6"),r=n("tjFV");t.exports=function(){var t=a.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.data,r=n.isHorizontal();return a.yLabels&&!r?n.getRightValue(a.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 o=a.getLabels().indexOf(t=n||t);e=-1!==o?o:e}if(a.isHorizontal()){var s=a.width/i,u=s*(e-a.minIndex);return r&&(u+=s/2),a.left+Math.round(u)}var l=a.height/i,c=l*(e-a.minIndex);return r&&(c+=l/2),a.top+Math.round(c)},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}});r.registerScaleType("category",t,{position:"bottom"})}},"8g8A":function(t,e,n){"use strict";function a(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},"8iEZ":function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnCellDirective=function(){return a([r.Directive({selector:"[ngx-datatable-cell-template]"})],function(t){this.template=t})}()},"8mBD":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},"8xTl":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(){}return t.prototype.transform=function(t){return a.upperFirst(t)},t}()},"909l":function(t,e,n){"use strict";n.d(e,"b",function(){return c}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("IUTb"),i=n("isby"),o=n("FFOo"),s=n("MGBS"),u=n("zotm"),l=n("En8+");function c(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[t.length-1];return"function"==typeof n&&t.pop(),Object(r.a)(t,void 0).lift(new d(n))}var d=function(){function t(t){this.resultSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new f(t,this.resultSelector))},t}(),f=function(t){function e(e,n,a){void 0===a&&(a=Object.create(null));var r=t.call(this,e)||this;return r.iterators=[],r.active=0,r.resultSelector="function"==typeof n?n:null,r.values=a,r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.iterators;Object(i.a)(t)?e.push(new h(t)):e.push("function"==typeof t[l.a]?new p(t[l.a]()):new g(this.destination,this,t))},e.prototype._complete=function(){var t=this.iterators,e=t.length;if(this.unsubscribe(),0!==e){this.active=e;for(var n=0;n<e;n++){var a=t[n];a.stillUnsubscribed?this.destination.add(a.subscribe(a,n)):this.active--}}else this.destination.complete()},e.prototype.notifyInactive=function(){this.active--,0===this.active&&this.destination.complete()},e.prototype.checkIterators=function(){for(var t=this.iterators,e=t.length,n=this.destination,a=0;a<e;a++)if("function"==typeof(o=t[a]).hasValue&&!o.hasValue())return;var r=!1,i=[];for(a=0;a<e;a++){var o,s=(o=t[a]).next();if(o.hasCompleted()&&(r=!0),s.done)return void n.complete();i.push(s.value)}this.resultSelector?this._tryresultSelector(i):n.next(i),r&&n.complete()},e.prototype._tryresultSelector=function(t){var e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(o.a),p=function(){function t(t){this.iterator=t,this.nextResult=t.next()}return t.prototype.hasValue=function(){return!0},t.prototype.next=function(){var t=this.nextResult;return this.nextResult=this.iterator.next(),t},t.prototype.hasCompleted=function(){var t=this.nextResult;return t&&t.done},t}(),h=function(){function t(t){this.array=t,this.index=0,this.length=0,this.length=t.length}return t.prototype[l.a]=function(){return this},t.prototype.next=function(t){var e=this.index++;return e<this.length?{value:this.array[e],done:!1}:{value:null,done:!0}},t.prototype.hasValue=function(){return this.array.length>this.index},t.prototype.hasCompleted=function(){return this.array.length===this.index},t}(),g=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.parent=n,r.observable=a,r.stillUnsubscribed=!0,r.buffer=[],r.isComplete=!1,r}return a.__extends(e,t),e.prototype[l.a]=function(){return this},e.prototype.next=function(){var t=this.buffer;return 0===t.length&&this.isComplete?{value:null,done:!0}:{value:t.shift(),done:!1}},e.prototype.hasValue=function(){return this.buffer.length>0},e.prototype.hasCompleted=function(){return 0===this.buffer.length&&this.isComplete},e.prototype.notifyComplete=function(){this.buffer.length>0?(this.isComplete=!0,this.parent.notifyInactive()):this.destination.complete()},e.prototype.notifyNext=function(t,e,n,a,r){this.buffer.push(e),this.parent.checkIterators()},e.prototype.subscribe=function(t,e){return Object(u.a)(this,this.observable,this,e)},e}(s.a)},"90cg":function(t,e,n){"use strict";e.isPromise=function(t){return!!t&&"function"!=typeof t.subscribe&&"function"==typeof t.then}},"99TG":function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("Fjl2");e.DatatableGroupHeaderDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandGroup=function(t){this.toggle.emit({type:"group",value:t})},t.prototype.expandAllGroups=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllGroups=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableGroupHeaderTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-group-header"})],t)}()},"9AGB":function(t,e,n){"use strict";var a=n("w5QO");function r(t){return t?1===t.length?t[0]:function(e){return t.reduce(function(t,e){return e(t)},e)}:a.noop}e.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r(t)},e.pipeFromArray=r},"9GXa":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){this.title="Warning"}}()},"9Kw/":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t){this.i18n=t,this.title=this.i18n("Information")}}()},"9Xeq":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},"9Z1F":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("MGBS"),i=n("rPjj"),o=n("zotm");function s(t){return function(e){var n=new u(t),a=e.lift(n);return n.caught=a}}var u=function(){function t(t){this.selector=t}return t.prototype.call=function(t,e){return e.subscribe(new l(t,this.selector,this.caught))},t}(),l=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.selector=n,r.caught=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=void 0;try{n=this.selector(e,this.caught)}catch(r){return void t.prototype.error.call(this,r)}this._unsubscribeAndRecycle();var a=new i.a(this,void 0,void 0);this.add(a),Object(o.a)(this,n,void 0,void 0,a)}},e}(r.a)},"9nlD":function(t,e,n){"use strict";n.d(e,"a",function(){return d});var a=n("LvDl"),r=n("26FU"),i=n("mtw6"),o=n("G1I9"),s=n("a0VL"),u=n("ufoC"),l=n("CcnG"),c=n("SZbH"),d=function(){function t(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.queued=[],this.KEY="cdNotifications";var i=localStorage.getItem(this.KEY),s=[];a.isString(i)&&(s=JSON.parse(i,function(t,e){return a.isPlainObject(e)?a.assign(new o.a,e):e})),this.dataSource.next(s)}return t.prototype.removeAll=function(){localStorage.removeItem(this.KEY),this.dataSource.next([])},t.prototype.save=function(t){var e=this.dataSource.getValue();for(e.push(t);e.length>10;)e.shift();this.dataSource.next(e),localStorage.setItem(this.KEY,JSON.stringify(e))},t.prototype.show=function(t,e,n,r,i){var s=this;return window.setTimeout(function(){var u;u=a.isFunction(t)?t():a.isObject(t)?t:new o.b(t,e,n,r,i),s.queueToShow(u)},10)},t.prototype.queueToShow=function(t){var e=this;this.cancel(this.queuedTimeoutId),this.queued.find(function(e){return a.isEqual(e,t)})||this.queued.push(t),this.queuedTimeoutId=window.setTimeout(function(){e.showQueued()},500)},t.prototype.showQueued=function(){var t=this;this.getUnifiedTitleQueue().forEach(function(e){var n=new o.a(e);t.save(n),t.showToasty(n)})},t.prototype.getUnifiedTitleQueue=function(){return Object.values(this.queueShiftByTitle()).map(function(t){var e=t[0];return t.length>1&&(e.message="<ul>"+t.map(function(t){return"<li>"+t.message+"</li>"}).join("")+"</ul>"),e})},t.prototype.queueShiftByTitle=function(){for(var t,e={};t=this.queued.shift();)e[t.title]||(e[t.title]=[]),e[t.title].push(t);return e},t.prototype.showToasty=function(t){this.hideToasties||this.toastr[["error","info","success"][t.type]]((t.message?t.message+"<br>":"")+this.renderTimeAndApplicationHtml(t),t.title,t.options)},t.prototype.renderTimeAndApplicationHtml=function(t){return'<small class="date">'+this.cdDatePipe.transform(t.timestamp)+'</small><i class="pull-right custom-icon '+t.applicationClass+'" title="'+t.application+'"></i>'},t.prototype.notifyTask=function(t,e){var n;return void 0===e&&(e=!0),n=t.success&&e?new o.b(i.a.success,this.taskMessageService.getSuccessTitle(t)):new o.b(i.a.error,this.taskMessageService.getErrorTitle(t),this.taskMessageService.getErrorMessage(t)),this.show(n)},t.prototype.cancel=function(t){window.clearTimeout(t)},t.prototype.suspendToasties=function(t){this.hideToasties=t},t.ngInjectableDef=l.defineInjectable({factory:function(){return new t(l.inject(c.j),l.inject(u.a),l.inject(s.a))},token:t,providedIn:"root"}),t}()},"9rRi":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","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\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 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\xecos",MM:"%d m\xecosan",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}})}()},"A+xa":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(t){return t+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(t)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(t)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}})}()},A5uo:function(t,e,n){"use strict";var a=n("K2E3");e=t.exports=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),Object.defineProperty(e.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(e.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},AQ68:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},ARl4:function(t,e,n){"use strict";n.d(e,"a",function(){return p}),n.d(e,"b",function(){return z}),n.d(e,"c",function(){return Y}),n.d(e,"d",function(){return nt}),n.d(e,"e",function(){return V}),n.d(e,"f",function(){return m}),n.d(e,"g",function(){return ot}),n.d(e,"h",function(){return it}),n.d(e,"i",function(){return ct}),n.d(e,"j",function(){return st}),n.d(e,"k",function(){return ut}),n.d(e,"l",function(){return lt}),n.d(e,"B",function(){return G}),n.d(e,"C",function(){return rt}),n.d(e,"y",function(){return g}),n.d(e,"x",function(){return b}),n.d(e,"w",function(){return q}),n.d(e,"q",function(){return U}),n.d(e,"n",function(){return W}),n.d(e,"u",function(){return K}),n.d(e,"v",function(){return F}),n.d(e,"m",function(){return $}),n.d(e,"A",function(){return H}),n.d(e,"o",function(){return X}),n.d(e,"z",function(){return B}),n.d(e,"r",function(){return J}),n.d(e,"s",function(){return Q}),n.d(e,"p",function(){return tt}),n.d(e,"t",function(){return et});var a=n("CcnG"),r=n("26FU"),i=n("mrSG"),o=n("VnD/"),s=n("67Y/"),u=n("lHUG"),l=n("MwfX"),c=n("lqqz"),d=(n("gIcY"),n("NJnL")),f=n("rpEJ"),p=function(){return function(){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"}}(),h=function(){function t(){this._customRangesFish=[]}return Object.defineProperty(t.prototype,"minDate",{set:function(t){this._effects.setMinDate(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxDate",{set:function(t){this._effects.setMaxDate(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"daysDisabled",{set:function(t){this._effects.setDaysDisabled(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isDisabled",{set:function(t){this._effects.setDisabled(t)},enumerable:!0,configurable:!0}),t.prototype.setViewMode=function(t){},t.prototype.navigateTo=function(t){},t.prototype.dayHoverHandler=function(t){},t.prototype.weekHoverHandler=function(t){},t.prototype.monthHoverHandler=function(t){},t.prototype.yearHoverHandler=function(t){},t.prototype.daySelectHandler=function(t){},t.prototype.monthSelectHandler=function(t){},t.prototype.yearSelectHandler=function(t){},t.prototype._stopPropagation=function(t){t.stopPropagation()},t}(),g=function(){function t(){}return t.prototype.calculate=function(){return{type:t.CALCULATE}},t.prototype.format=function(){return{type:t.FORMAT}},t.prototype.flag=function(){return{type:t.FLAG}},t.prototype.select=function(e){return{type:t.SELECT,payload:e}},t.prototype.changeViewMode=function(e){return{type:t.CHANGE_VIEWMODE,payload:e}},t.prototype.navigateTo=function(e){return{type:t.NAVIGATE_TO,payload:e}},t.prototype.navigateStep=function(e){return{type:t.NAVIGATE_OFFSET,payload:e}},t.prototype.setOptions=function(e){return{type:t.SET_OPTIONS,payload:e}},t.prototype.selectRange=function(e){return{type:t.SELECT_RANGE,payload:e}},t.prototype.hoverDay=function(e){return{type:t.HOVER,payload:e.isHovered?e.cell.date:null}},t.prototype.minDate=function(e){return{type:t.SET_MIN_DATE,payload:e}},t.prototype.maxDate=function(e){return{type:t.SET_MAX_DATE,payload:e}},t.prototype.daysDisabled=function(e){return{type:t.SET_DAYSDISABLED,payload:e}},t.prototype.isDisabled=function(e){return{type:t.SET_IS_DISABLED,payload:e}},t.prototype.setLocale=function(e){return{type:t.SET_LOCALE,payload:e}},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_IS_DISABLED="[datepicker] set is disabled",t.SET_LOCALE="[datepicker] set datepicker locale",t.SELECT_RANGE="[daterangepicker] select dates range",t}(),m=function(){function t(){this._defaultLocale="en",this._locale=new r.a(this._defaultLocale),this._localeChange=this._locale.asObservable()}return Object.defineProperty(t.prototype,"locale",{get:function(){return this._locale},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"localeChange",{get:function(){return this._localeChange},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentLocale",{get:function(){return this._locale.getValue()},enumerable:!0,configurable:!0}),t.prototype.use=function(t){t!==this.currentLocale&&this._locale.next(t)},t}(),b=function(){function t(t,e){this._actions=t,this._localeService=e,this._subs=[]}return t.prototype.init=function(t){return this._store=t,this},t.prototype.setValue=function(t){this._store.dispatch(this._actions.select(t))},t.prototype.setRangeValue=function(t){this._store.dispatch(this._actions.selectRange(t))},t.prototype.setMinDate=function(t){return this._store.dispatch(this._actions.minDate(t)),this},t.prototype.setMaxDate=function(t){return this._store.dispatch(this._actions.maxDate(t)),this},t.prototype.setDaysDisabled=function(t){return this._store.dispatch(this._actions.daysDisabled(t)),this},t.prototype.setDisabled=function(t){return this._store.dispatch(this._actions.isDisabled(t)),this},t.prototype.setOptions=function(t){var e=Object.assign({locale:this._localeService.currentLocale},t);return this._store.dispatch(this._actions.setOptions(e)),this},t.prototype.setBindings=function(t){return t.daysCalendar=this._store.select(function(t){return t.flaggedMonths}).pipe(Object(o.a)(function(t){return!!t})),t.monthsCalendar=this._store.select(function(t){return t.flaggedMonthsCalendar}).pipe(Object(o.a)(function(t){return!!t})),t.yearsCalendar=this._store.select(function(t){return t.yearsCalendarFlagged}).pipe(Object(o.a)(function(t){return!!t})),t.viewMode=this._store.select(function(t){return t.view.mode}),t.options=this._store.select(function(t){return t.showWeekNumbers}).pipe(Object(s.a)(function(t){return{showWeekNumbers:t}})),this},t.prototype.setEventHandlers=function(t){var e=this;return t.setViewMode=function(t){e._store.dispatch(e._actions.changeViewMode(t))},t.navigateTo=function(t){e._store.dispatch(e._actions.navigateStep(t.step))},t.dayHoverHandler=function(t){var n=t.cell;n.isOtherMonth||n.isDisabled||(e._store.dispatch(e._actions.hoverDay(t)),n.isHovered=t.isHovered)},t.monthHoverHandler=function(t){t.cell.isHovered=t.isHovered},t.yearHoverHandler=function(t){t.cell.isHovered=t.isHovered},t.monthSelectHandler=function(t){t.isDisabled||e._store.dispatch(e._actions.navigateTo({unit:{month:Object(u.l)(t.date),year:Object(u.j)(t.date)},viewMode:"day"}))},t.yearSelectHandler=function(t){t.isDisabled||e._store.dispatch(e._actions.navigateTo({unit:{year:Object(u.j)(t.date)},viewMode:"month"}))},this},t.prototype.registerDatepickerSideEffects=function(){var t=this;return this._subs.push(this._store.select(function(t){return t.view}).subscribe(function(e){t._store.dispatch(t._actions.calculate())})),this._subs.push(this._store.select(function(t){return t.monthsModel}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.format())})),this._subs.push(this._store.select(function(t){return t.formattedMonths}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.selectedDate}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.selectedRange}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.monthsCalendar}).subscribe(function(){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.yearsCalendarModel}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._store.select(function(t){return t.hoveredDate}).pipe(Object(o.a)(function(t){return!!t})).subscribe(function(e){return t._store.dispatch(t._actions.flag())})),this._subs.push(this._localeService.localeChange.subscribe(function(e){return t._store.dispatch(t._actions.setLocale(e))})),this},t.prototype.destroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t}(),y={date:new Date,mode:"day"},v=Object.assign(new p,{locale:"en",view:y,selectedRange:[],monthViewOptions:{width:7,height:6}});function _(t,e,n){var a=e&&Object(u.p)(Object(u.d)(t,"month"),e,"day"),r=n&&Object(u.n)(Object(u.F)(t,"month"),n,"day");return a||r}function x(t,e,n){var a=e&&Object(u.p)(Object(u.d)(t,"year"),e,"day"),r=n&&Object(u.n)(Object(u.F)(t,"year"),n,"day");return a||r}function T(t,e){for(var n=t.initialDate,a=new Array(t.height),r=0;r<t.height;r++){a[r]=new Array(t.width);for(var i=0;i<t.width;i++)a[r][i]=e(n),n=Object(u.E)(n,t.shift)}return a}function w(t){var e=Object(u.k)(t),n=e.weekdaysShort(),a=e.firstDayOfWeek();return Object(i.__spread)(n.slice(a),n.slice(0,a))}function S(t,e){return!e||t>=e}var O=4,C=3,k={month:1};function I(t,e){var n=Object(u.F)(t,"year");return{months:T({width:C,height:O,initialDate:n,shift:k},function(t){return{date:t,label:Object(u.f)(t,e.monthLabel,e.locale)}}),monthTitle:"",yearTitle:Object(u.f)(t,e.yearTitle,e.locale)}}var D=4,R=4,N=D*R,A=-1*(Math.floor(N/2)-1),E={year:1};function L(t,e){var n=Object(u.E)(t,{year:A}),a=T({width:R,height:D,initialDate:n,shift:E},function(t){return{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[D-1][R-1].date,e.yearTitle,e.locale)}(a,e)}}function P(t,e){switch(void 0===t&&(t=v),e.type){case g.CALCULATE:return function(t){var e,n,a,r,i=t.displayMonths,o=t.view.date;if("day"===t.view.mode){t.monthViewOptions.firstDayOfWeek=Object(u.k)(t.locale).firstDayOfWeek();for(var s=new Array(i),l=0;l<i;l++)s[l]=(e=o,n=t.monthViewOptions,void 0,void 0,r=function(t,e){if(Object(u.t)(t,e.firstDayOfWeek))return t;var n=function(t,e){if(0===e)return t;var n=t-e%7;return n<0?n+7:n}(Object(u.h)(t),e.firstDayOfWeek);return Object(u.E)(t,{day:-n})}(a=Object(u.i)(e),n),{daysMatrix:T({width:n.width,height:n.height,initialDate:r,shift:{day:1}},function(t){return t}),month:a}),o=Object(u.E)(o,{month:1});return Object.assign({},t,{monthsModel:s})}if("month"===t.view.mode){for(var c=new Array(i),d=0;d<i;d++)c[d]=I(o,M(t)),o=Object(u.E)(o,{year:1});return Object.assign({},t,{monthsCalendar:c})}if("year"===t.view.mode){var f=new Array(i);for(d=0;d<i;d++)f[d]=L(o,M(t)),o=Object(u.E)(o,{year:N});return Object.assign({},t,{yearsCalendarModel:f})}return t}(t);case g.FORMAT:return function(t,e){if("day"===t.view.mode){var n=t.monthsModel.map(function(e,n){return 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(function(t){return t[0]?Object(u.f)(t[0],r,i):""})),weekdays:w(e.locale),weeks:t.daysMatrix.map(function(t,a){return{days:t.map(function(t,r){return{date:t,label:Object(u.f)(t,e.dayLabel,e.locale),monthIndex:n,weekIndex:a,dayIndex:r}})}})};var a,r,i}(e,M(t),n)});return Object.assign({},t,{formattedMonths:n})}var a=t.displayMonths,r=t.view.date;if("month"===t.view.mode){for(var i=new Array(a),o=0;o<a;o++)i[o]=I(r,M(t)),r=Object(u.E)(r,{year:1});return Object.assign({},t,{monthsCalendar:i})}if("year"===t.view.mode){var s=new Array(a);for(o=0;o<a;o++)s[o]=L(r,M(t)),r=Object(u.E)(r,{year:16});return Object.assign({},t,{yearsCalendarModel:s})}return t}(t);case g.FLAG:return function(t,e){if("day"===t.view.mode){var n=t.formattedMonths.map(function(e,n){return function(t,e){return t.weeks.forEach(function(n){n.days.forEach(function(a,r){var i,o,s,l=!Object(u.v)(a.date,t.month),c=!l&&Object(u.u)(a.date,e.hoveredDate),d=!l&&e.selectedRange&&Object(u.u)(a.date,e.selectedRange[0]),f=!l&&e.selectedRange&&Object(u.u)(a.date,e.selectedRange[1]),p=!l&&Object(u.u)(a.date,e.selectedDate)||d||f,h=!l&&e.selectedRange&&(o=e.selectedRange,s=e.hoveredDate,!(!(i=a.date)||!o[0])&&(o[1]?i>o[0]&&i<=o[1]:!!s&&i>o[0]&&i<=s)),g=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),m=new Date,b=!l&&Object(u.u)(a.date,m),y=Object.assign({},a,{isOtherMonth:l,isHovered:c,isSelected:p,isSelectionStart:d,isSelectionEnd:f,isInRange:h,isDisabled:g,isToday:b});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||(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=_(Object(u.E)(t.month,{month:-1}),e.minDate,e.maxDate),t.disableRightArrow=_(Object(u.E)(t.month,{month:1}),e.minDate,e.maxDate),t}(e,{isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,daysDisabled:t.daysDisabled,hoveredDate:t.hoveredDate,selectedDate:t.selectedDate,selectedRange:t.selectedRange,displayMonths:t.displayMonths,monthIndex:n})});return Object.assign({},t,{flaggedMonths:n})}if("month"===t.view.mode){var a=t.monthsCalendar.map(function(e,n){return r={isDisabled:t.isDisabled,minDate:t.minDate,maxDate:t.maxDate,hoveredMonth:t.hoveredMonth,displayMonths:t.displayMonths,monthIndex:n},(a=e).months.forEach(function(t,e){t.forEach(function(t,n){var i=Object(u.v)(t.date,r.hoveredMonth),o=r.isDisabled||_(t.date,r.minDate,r.maxDate),s=Object.assign(t,{isHovered:i,isDisabled:o});t.isHovered===s.isHovered&&t.isDisabled===s.isDisabled||(a.months[e][n]=s)})}),a.hideLeftArrow=r.monthIndex>0&&r.monthIndex!==r.displayMonths,a.hideRightArrow=r.monthIndex<r.displayMonths&&r.monthIndex+1!==r.displayMonths,a.disableLeftArrow=x(Object(u.E)(a.months[0][0].date,{year:-1}),r.minDate,r.maxDate),a.disableRightArrow=x(Object(u.E)(a.months[0][0].date,{year:1}),r.minDate,r.maxDate),a;var a,r});return Object.assign({},t,{flaggedMonthsCalendar:a})}if("year"===t.view.mode){var r=t.yearsCalendarModel.map(function(e,n){return function(t,e){t.years.forEach(function(n,a){n.forEach(function(n,r){var i=Object(u.w)(n.date,e.hoveredYear),o=e.isDisabled||x(n.date,e.minDate,e.maxDate),s=Object.assign(n,{isHovered:i,isDisabled:o});n.isHovered===s.isHovered&&n.isDisabled===s.isDisabled||(t.years[a][r]=s)})}),t.hideLeftArrow=e.yearIndex>0&&e.yearIndex!==e.displayMonths,t.hideRightArrow=e.yearIndex<e.displayMonths&&e.yearIndex+1!==e.displayMonths,t.disableLeftArrow=x(Object(u.E)(t.years[0][0].date,{year:-1}),e.minDate,e.maxDate);var n=t.years.length-1,a=t.years[n].length-1;return t.disableRightArrow=x(Object(u.E)(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,displayMonths:t.displayMonths,yearIndex:n})});return Object.assign({},t,{yearsCalendarFlagged:r})}return t}(t);case g.NAVIGATE_OFFSET:var n=Object(u.E)(Object(u.F)(t.view.date,"month"),e.payload),a={view:{mode:t.view.mode,date:n}};return Object.assign({},t,a);case g.NAVIGATE_TO:var r=e.payload,i=(n=Object(u.D)(t.view.date,r.unit),void(a=void 0));return a=S(r.viewMode,t.minMode)?{view:{date:n,mode:i=r.viewMode}}:{selectedDate:n,view:{date:n,mode:i=t.view.mode}},Object.assign({},t,a);case g.CHANGE_VIEWMODE:return S(e.payload,t.minMode)?(a={view:{date:n=t.view.date,mode:i=e.payload}},Object.assign({},t,a)):t;case g.HOVER:return Object.assign({},t,{hoveredDate:e.payload});case g.SELECT:return a={selectedDate:e.payload,view:t.view},i=t.view.mode,n=j(e.payload||t.view.date,t.minDate,t.maxDate),a.view={mode:i,date:n},Object.assign({},t,a);case g.SET_OPTIONS:return i=(a=e.payload).minMode?a.minMode:t.view.mode,n=j(Object(u.r)(a.value)&&a.value||Object(u.o)(a.value)&&Object(u.r)(a.value[0])&&a.value[0]||t.view.date,a.minDate,a.maxDate),a.view={mode:i,date:n},a.value&&(Object(u.o)(a.value)&&(a.selectedRange=a.value),a.value instanceof Date&&(a.selectedDate=a.value)),Object.assign({},t,a);case g.SELECT_RANGE:return a={selectedRange:e.payload,view:t.view},i=t.view.mode,n=j(e.payload&&e.payload[0]||t.view.date,t.minDate,t.maxDate),a.view={mode:i,date:n},Object.assign({},t,a);case g.SET_MIN_DATE:return Object.assign({},t,{minDate:e.payload});case g.SET_MAX_DATE:return Object.assign({},t,{maxDate:e.payload});case g.SET_IS_DISABLED:return Object.assign({},t,{isDisabled:e.payload});default:return t}}function M(t){return{locale:t.locale,monthTitle:t.monthTitle,yearTitle:t.yearTitle,dayLabel:t.dayLabel,monthLabel:t.monthLabel,yearLabel:t.yearLabel,weekNumbers:t.weekNumbers}}function j(t,e,n){var 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}var q=function(t){function e(){var e=new r.a({type:"[datepicker] dispatcher init"}),n=new l.a(v,e,P);return t.call(this,e,P,n)||this}return Object(i.__extends)(e,t),e}(l.b),F=function(t){function e(e,n,r,i){var o=t.call(this)||this;return o._config=e,o._store=n,o._actions=r,o.valueChange=new a.EventEmitter,o._subs=[],o._effects=i,o}return Object(i.__extends)(e,t),Object.defineProperty(e.prototype,"value",{set:function(t){this._effects.setValue(t)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var t=this;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(function(t){return t.selectedDate}).subscribe(function(e){return t.valueChange.emit(e)}))},e.prototype.daySelectHandler=function(t){(this.isOtherMonthsActive?t.isDisabled:t.isOtherMonth||t.isDisabled)||this._store.dispatch(this._actions.select(t.date))},e.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._effects.destroy()},e}(h),z=function(){function t(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}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._datepicker.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bsValue",{set:function(t){this._bsValue!==t&&(this._bsValue=t,this.bsValueChange.emit(t))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._datepicker.listen({outsideClick:this.outsideClick,outsideEsc:this.outsideEsc,triggers:this.triggers,show:function(){return t.show()}}),this.setConfig()},t.prototype.ngOnChanges=function(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.isDisabled&&(this._datepickerRef.instance.isDisabled=this.isDisabled))},t.prototype.show=function(){var t=this;this._datepicker.isShown||(this.setConfig(),this._datepickerRef=this._datepicker.provide({provide:p,useValue:this._config}).attach(F).to(this.container).position({attachment:this.placement}).show({placement:this.placement}),this._subs.push(this.bsValueChange.subscribe(function(e){t._datepickerRef.instance.value=e})),this._subs.push(this._datepickerRef.instance.valueChange.subscribe(function(e){t.bsValue=e,t.hide()})))},t.prototype.hide=function(){this.isOpen&&this._datepicker.hide();try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.setConfig=function(){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,minMode:this.minMode||this.bsConfig&&this.bsConfig.minMode})},t.prototype.ngOnDestroy=function(){this._datepicker.dispose()},t}(),Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(i.__extends)(e,t),e}(p),H=function(t){function e(e,n,a,r){return t.call(this,e,n,a,r)||this}return Object(i.__extends)(e,t),e}(F),G=function(){function t(t,e,n,a,r){var i=this;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(function(t){i._setInputValue(t),i._value!==t&&(i._value=t,i._onChange(t),i._onTouched()),i.changeDetection.markForCheck()}),this._localeService.localeChange.subscribe(function(){i._setInputValue(i._value)})}return t.prototype._setInputValue=function(t){var e=t?Object(u.f)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale):"";this._renderer.setProperty(this._elRef.nativeElement,"value",e)},t.prototype.onChange=function(t){this.writeValue(t.target.value),this._onChange(this._value),this._onTouched()},t.prototype.validate=function(t){var 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{bsDate:{minDate:this._picker.minDate}};if(this._picker&&this._picker.maxDate&&Object(u.n)(e,this._picker.maxDate,"date"))return{bsDate:{maxDate:this._picker.maxDate}}}},t.prototype.registerOnValidatorChange=function(t){this._validatorChange=t},t.prototype.writeValue=function(t){if(t){var 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.A)(t,this._picker._config.dateInputFormat,this._localeService.currentLocale)}else this._value=null;this._picker.bsValue=this._value},t.prototype.setDisabledState=function(t){this._picker.isDisabled=t,t?this._renderer.setAttribute(this._elRef.nativeElement,"disabled","disabled"):this._renderer.removeAttribute(this._elRef.nativeElement,"disabled")},t.prototype.registerOnChange=function(t){this._onChange=t},t.prototype.registerOnTouched=function(t){this._onTouched=t},t.prototype.onBlur=function(){this._onTouched()},t.prototype.hide=function(){this._picker.hide(),this._renderer.selectRootElement(this._elRef.nativeElement).blur()},t}(),V=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.displayMonths=2,e}return Object(i.__extends)(e,t),e}(p),B=function(t){function e(e,n,r,i){var o=t.call(this)||this;return o._config=e,o._store=n,o._actions=r,o.valueChange=new a.EventEmitter,o._rangeStack=[],o._subs=[],o._effects=i,o}return Object(i.__extends)(e,t),Object.defineProperty(e.prototype,"value",{set:function(t){this._effects.setRangeValue(t)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var t=this;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(function(t){return t.selectedRange}).subscribe(function(e){return t.valueChange.emit(e)}))},e.prototype.daySelectHandler=function(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=[]))},e.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subs),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._effects.destroy()},e}(h),U=function(){return function(){}}(),W=function(){return function(){}}(),K=function(){return function(){}}(),$=function(){function t(t,e,n){this._config=t,this._elRef=e,this._renderer=n}return t.prototype.ngOnInit=function(){this.day.isToday&&this._config&&this._config.customTodayClass&&this._renderer.addClass(this._elRef.nativeElement,this._config.customTodayClass)},t}(),Z=function(){var t={UP:0,DOWN:1};return t[t.UP]="UP",t[t.DOWN]="DOWN",t}(),X=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter}return t.prototype.navTo=function(t){this.onNavigate.emit(t?Z.DOWN:Z.UP)},t.prototype.view=function(t){this.onViewMode.emit(t)},t}(),J=function(){function t(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}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{month:Z.DOWN===t?-1:1}})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t.prototype.selectDay=function(t){this.onSelect.emit(t)},t.prototype.selectWeek=function(t){var e=this;if(this._config.selectWeek)if(t.days&&t.days[0]&&!t.days[0].isDisabled&&this._config.selectFromOtherMonth)this.onSelect.emit(t.days[0]);else if(0!==t.days.length){var n=t.days.find(function(t){return e._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled});this.onSelect.emit(n)}},t.prototype.weekHoverHandler=function(t,e){var n=this;this._config.selectWeek&&t.days.find(function(t){return n._config.selectFromOtherMonth?!t.isDisabled:!t.isOtherMonth&&!t.isDisabled})&&(t.isHovered=e,this.isWeekHovered=e,this.onHoverWeek.emit(t))},t.prototype.hoverDay=function(t,e){this._config.selectFromOtherMonth&&t.isOtherMonth&&(t.isOtherMonthHovered=e),this.onHover.emit({cell:t,isHovered:e})},t}(),Q=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{year:Z.DOWN===t?-1:1}})},t.prototype.viewMonth=function(t){this.onSelect.emit(t)},t.prototype.hoverMonth=function(t,e){this.onHover.emit({cell:t,isHovered:e})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t}(),tt=function(){return function(){this.ampm="ok",this.hours=0,this.minutes=0}}(),et=function(){function t(){this.onNavigate=new a.EventEmitter,this.onViewMode=new a.EventEmitter,this.onSelect=new a.EventEmitter,this.onHover=new a.EventEmitter}return t.prototype.navigateTo=function(t){this.onNavigate.emit({step:{year:(Z.DOWN===t?-1:1)*N}})},t.prototype.viewYear=function(t){this.onSelect.emit(t)},t.prototype.hoverYear=function(t,e){this.onHover.emit({cell:t,isHovered:e})},t.prototype.changeViewMode=function(t){this.onViewMode.emit(t)},t}(),nt=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[c.a,d.a,q,g,p,V,Y,b,m]}},t}(),at=function(){function t(){}return t.prototype.format=function(t,e,n){return Object(u.f)(t,e,n)},t}(),rt=function(){function t(){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}return Object.defineProperty(t.prototype,"activeDate",{get:function(){return this._activeDate},set:function(t){this._activeDate=t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){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)},t.prototype.ngOnChanges=function(t){this.refreshView(),this.checkIfActiveDateGotUpdated(t.activeDate)},t.prototype.checkIfActiveDateGotUpdated=function(t){if(t&&!t.firstChange){var e=t.previousValue;e&&e instanceof Date&&e.getTime()!==t.currentValue.getTime()&&this.activeDateChange.emit(this.activeDate)}},t.prototype.setCompareHandler=function(t,e){"day"===e&&(this.compareHandlerDay=t),"month"===e&&(this.compareHandlerMonth=t),"year"===e&&(this.compareHandlerYear=t)},t.prototype.compare=function(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},t.prototype.setRefreshViewHandler=function(t,e){"day"===e&&(this.refreshViewHandlerDay=t),"month"===e&&(this.refreshViewHandlerMonth=t),"year"===e&&(this.refreshViewHandlerYear=t)},t.prototype.refreshView=function(){"day"===this.datepickerMode&&this.refreshViewHandlerDay&&this.refreshViewHandlerDay(),"month"===this.datepickerMode&&this.refreshViewHandlerMonth&&this.refreshViewHandlerMonth(),"year"===this.datepickerMode&&this.refreshViewHandlerYear&&this.refreshViewHandlerYear()},t.prototype.dateFilter=function(t,e){return this.dateFormatter.format(t,e,this.locale)},t.prototype.isActive=function(t){return 0===this.compare(t.date,this.activeDate)&&(this.activeDateId=t.uid,!0)},t.prototype.createDateObject=function(t,e){var 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},t.prototype.split=function(t,e){for(var n=[];t.length>0;)n.push(t.splice(0,e));return n},t.prototype.fixTimeZone=function(t){var e=t.getHours();return new Date(t.getFullYear(),t.getMonth(),t.getDate(),23===e?e+2:0)},t.prototype.select=function(t,e){void 0===e&&(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()},t.prototype.move=function(t){var e;if("day"===this.datepickerMode&&(e=this.stepDay),"month"===this.datepickerMode&&(e=this.stepMonth),"year"===this.datepickerMode&&(e=this.stepYear),e){var 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)}},t.prototype.toggleMode=function(t){var 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())},t.prototype.getCustomClassForDate=function(t){var e=this;if(!this.customClass)return"";var n=this.customClass.find(function(n){return n.date.valueOf()===t.valueOf()&&n.mode===e.datepickerMode},this);return void 0===n?"":n.clazz},t.prototype.compareDateDisabled=function(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},t.prototype.isDisabled=function(t){var e=this,n=!1;return this.dateDisabled&&this.dateDisabled.forEach(function(a){0===e.compareDateDisabled(a,t)&&(n=!0)}),this.dayDisabled&&(n=n||this.dayDisabled.indexOf(t.getDay())>-1),n||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0},t}(),it=function(){return function(){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}}(),ot=function(){function t(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()}return Object.defineProperty(t.prototype,"activeDate",{get:function(){return this._activeDate||this._now},set:function(t){this._activeDate=t},enumerable:!0,configurable:!0}),t.prototype.configureOptions=function(){Object.assign(this,this.config)},t.prototype.onUpdate=function(t){this.activeDate=t,this.onChange(t)},t.prototype.onSelectionDone=function(t){this.selectionDone.emit(t)},t.prototype.onActiveDateChange=function(t){this.activeDateChange.emit(t)},t.prototype.writeValue=function(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)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t}(),st=function(){function t(t){this.labels=[],this.rows=[],this.weekNumbers=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(f.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepDay={months:1},this.datePicker.setRefreshViewHandler(function(){var 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,o=new Date(a.getTime());i>0&&o.setDate(1-i);for(var s=t.getDates(o,42),u=[],l=0;l<42;l++){var c=this.createDateObject(s[l],this.formatDay);c.secondary=s[l].getMonth()!==n,c.uid=this.uniqueId+"-"+l,u[l]=c}t.labels=[];for(var d=0;d<7;d++)t.labels[d]={},t.labels[d].abbr=this.dateFilter(u[d].date,this.formatDayHeader),t.labels[d].full=this.dateFilter(u[d].date,"EEEE");if(t.title=this.dateFilter(this.activeDate,this.formatDayTitle),t.rows=this.split(u,7),this.showWeeks){t.weekNumbers=[];for(var f=(11-this.startingDay)%7,p=t.rows.length,h=0;h<p;h++)t.weekNumbers.push(t.getISO8601WeekNumber(t.rows[h][f].date))}},"day"),this.datePicker.setCompareHandler(function(t,e){var 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()},t.prototype.getDates=function(t,e){for(var n,a=new Array(e),r=new Date(t.getTime()),i=0;i<e;)n=new Date(r.getTime()),n=this.datePicker.fixTimeZone(n),a[i++]=n,r=new Date(n.getFullYear(),n.getMonth(),n.getDate()+1);return a},t.prototype.getISO8601WeekNumber=function(t){var e=new Date(t.getTime());e.setDate(e.getDate()+4-(e.getDay()||7));var n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e.getTime())/864e5)/7)+1},t}(),ut=function(){function t(t){this.rows=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(f.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepMonth={years:1},this.datePicker.setRefreshViewHandler(function(){for(var e,n=new Array(12),a=this.activeDate.getFullYear(),r=0;r<12;r++)e=new Date(a,r,1),e=this.fixTimeZone(e),n[r]=this.createDateObject(e,this.formatMonth),n[r].uid=this.uniqueId+"-"+r;t.title=this.dateFilter(this.activeDate,this.formatMonthTitle),t.rows=this.split(n,t.datePicker.monthColLimit)},"month"),this.datePicker.setCompareHandler(function(t,e){var n=new Date(t.getFullYear(),t.getMonth()),a=new Date(e.getFullYear(),e.getMonth());return n.getTime()-a.getTime()},"month"),this.datePicker.refreshView()},t}(),lt=function(){function t(t){this.rows=[],this.datePicker=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(f.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.datePicker.stepYear={years:this.datePicker.yearRange},this.datePicker.setRefreshViewHandler(function(){for(var e,n=new Array(this.yearRange),a=t.getStartingYear(this.activeDate.getFullYear()),r=0;r<this.yearRange;r++)e=new Date(a+r,0,1),e=this.fixTimeZone(e),n[r]=this.createDateObject(e,this.formatYear),n[r].uid=this.uniqueId+"-"+r;t.title=[n[0].label,n[this.yearRange-1].label].join(" - "),t.rows=this.split(n,t.datePicker.yearColLimit)},"year"),this.datePicker.setCompareHandler(function(t,e){return t.getFullYear()-e.getFullYear()},"year"),this.datePicker.refreshView()},t.prototype.getStartingYear=function(t){return(t-1)/this.datePicker.yearRange*this.datePicker.yearRange+1},t}(),ct=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[it]}},t}()},AWcq:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("yJti"),r=function(){function t(){this.vcs=a.a}return t.prototype.ngOnInit=function(){},t}()},AX6q:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("fELs"),s=i.noop;function u(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}a._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,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return i.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:i.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 l=r.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,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:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=i.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:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.labels,r=e.display,o=t.ctx,s=a.global,l=i.valueOrDefault,c=l(n.fontSize,s.defaultFontSize),d=l(n.fontStyle,s.defaultFontStyle),f=l(n.fontFamily,s.defaultFontFamily),p=i.fontString(c,d,f),h=t.legendHitBoxes=[],g=t.minSize,m=t.isHorizontal();if(m?(g.width=t.maxWidth,g.height=r?10:0):(g.width=r?10:0,g.height=t.maxHeight),r)if(o.font=p,m){var b=t.lineWidths=[0],y=t.legendItems.length?c+n.padding:0;o.textAlign="left",o.textBaseline="top",i.each(t.legendItems,function(e,a){var r=u(n,c)+c/2+o.measureText(e.text).width;b[b.length-1]+r+n.padding>=t.width&&(y+=c+n.padding,b[b.length]=t.left),h[a]={left:0,top:0,width:r,height:c},b[b.length-1]+=r+n.padding}),g.height+=y}else{var v=n.padding,_=t.columnWidths=[],x=n.padding,T=0,w=0,S=c+v;i.each(t.legendItems,function(t,e){var a=u(n,c)+c/2+o.measureText(t.text).width;w+S>g.height&&(x+=T+n.padding,_.push(T),T=0,w=0),T=Math.max(T,a),w+=S,h[e]={left:0,top:0,width:a,height:c}}),x+=T,_.push(T),g.width+=x}t.width=g.width,t.height=g.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,r=a.global,o=r.elements.line,s=t.width,l=t.lineWidths;if(e.display){var c,d=t.ctx,f=i.valueOrDefault,p=f(n.fontColor,r.defaultFontColor),h=f(n.fontSize,r.defaultFontSize),g=f(n.fontStyle,r.defaultFontStyle),m=f(n.fontFamily,r.defaultFontFamily),b=i.fontString(h,g,m);d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=p,d.fillStyle=p,d.font=b;var y=u(n,h),v=t.legendHitBoxes,_=t.isHorizontal();c=_?{x:t.left+(s-l[0])/2,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var x=h+n.padding;i.each(t.legendItems,function(a,u){var p=d.measureText(a.text).width,g=y+h/2+p,m=c.x,b=c.y;_?m+g>=s&&(b=c.y+=x,c.line++,m=c.x=t.left+(s-l[c.line])/2):b+x>t.bottom&&(m=c.x=m+t.columnWidths[c.line]+n.padding,b=c.y=t.top+n.padding,c.line++),function(t,n,a){if(!(isNaN(y)||y<=0)){d.save(),d.fillStyle=f(a.fillStyle,r.defaultColor),d.lineCap=f(a.lineCap,o.borderCapStyle),d.lineDashOffset=f(a.lineDashOffset,o.borderDashOffset),d.lineJoin=f(a.lineJoin,o.borderJoinStyle),d.lineWidth=f(a.lineWidth,o.borderWidth),d.strokeStyle=f(a.strokeStyle,r.defaultColor);var s=0===f(a.lineWidth,o.borderWidth);if(d.setLineDash&&d.setLineDash(f(a.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var u=h*Math.SQRT2/2,l=u/Math.SQRT2;i.canvas.drawPoint(d,a.pointStyle,u,t+l,n+l)}else s||d.strokeRect(t,n,y,h),d.fillRect(t,n,y,h);d.restore()}}(m,b,a),v[u].left=m,v[u].top=b,function(t,e,n,a){var r=h/2,i=y+r+t,o=e+r;d.fillText(n.text,i,o),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(i,o),d.lineTo(i+a,o),d.stroke())}(m,b,a,p),_?c.x+=g+n.padding:c.y+=x})}},handleEvent:function(t){var e=this,n=e.options,a="mouseup"===t.type?"click":t.type,r=!1;if("mousemove"===a){if(!n.onHover)return}else{if("click"!==a)return;if(!n.onClick)return}var i=t.x,o=t.y;if(i>=e.left&&i<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,u=0;u<s.length;++u){var l=s[u];if(i>=l.left&&i<=l.left+l.width&&o>=l.top&&o<=l.top+l.height){if("click"===a){n.onClick.call(e,t.native,e.legendItems[u]),r=!0;break}if("mousemove"===a){n.onHover.call(e,t.native,e.legendItems[u]),r=!0;break}}}return r}});function c(t,e){var n=new l({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.legend=n}t.exports={id:"legend",_element:l,beforeInit:function(t){var e=t.options.legend;e&&c(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(i.mergeIf(e,a.global.legend),n?(o.configure(t,n,e),n.options=e):c(t,e)):n&&(o.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},Ahxa:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("lUjN");e.DataTableFooterComponent=function(){function t(){this.selectedCount=0,this.page=new i.EventEmitter}return Object.defineProperty(t.prototype,"isVisible",{get:function(){return this.rowCount/this.pageSize>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"curPage",{get:function(){return this.offset+1},enumerable:!0,configurable:!0}),a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowCount",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"pageSize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offset",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",o.DatatableFooterDirective)],t.prototype,"footerTemplate",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"selectedCount",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Component({selector:"datatable-footer",template:'\n    <div\n      class="datatable-footer-inner"\n      [ngClass]="{\'selected-count\': selectedMessage}"\n      [style.height.px]="footerHeight">\n      <ng-template\n        *ngIf="footerTemplate"\n        [ngTemplateOutlet]="footerTemplate.template"\n        [ngTemplateOutletContext]="{ \n          rowCount: rowCount, \n          pageSize: pageSize, \n          selectedCount: selectedCount,\n          curPage: curPage,\n          offset: offset\n        }">\n      </ng-template>\n      <div class="page-count" *ngIf="!footerTemplate">\n        <span *ngIf="selectedMessage">\n          {{selectedCount?.toLocaleString()}} {{selectedMessage}} / \n        </span>\n        {{rowCount?.toLocaleString()}} {{totalMessage}}\n      </div>\n      <datatable-pager *ngIf="!footerTemplate"\n        [pagerLeftArrowIcon]="pagerLeftArrowIcon"\n        [pagerRightArrowIcon]="pagerRightArrowIcon"\n        [pagerPreviousIcon]="pagerPreviousIcon"\n        [pagerNextIcon]="pagerNextIcon"\n        [page]="curPage"\n        [size]="pageSize"\n        [count]="rowCount"\n        [hidden]="!isVisible"\n        (change)="page.emit($event)">\n      </datatable-pager>\n    </div>\n  ',host:{class:"datatable-footer"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},AqeW:function(t,e,n){"use strict";function a(t,e){for(var n,a,r,i=[],o=[];(n=document.elementFromPoint(t,e))&&-1===i.indexOf(n)&&null!=n;)i.push(n),o.push({value:n.style.getPropertyValue("pointer-events"),priority:n.style.getPropertyPriority("pointer-events")}),n.style.setProperty("pointer-events","none","important");for(a=o.length;r=o[--a];)i[a].style.setProperty("pointer-events",r.value?r.value:"",r.priority);return i}Object.defineProperty(e,"__esModule",{value:!0}),"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=a),e.elementsFromPoint=a},As3K:function(t,e,n){"use strict";var a=n("TC34");t.exports={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,r,i;return a.isObject(t)?(e=+t.top||0,n=+t.right||0,r=+t.bottom||0,i=+t.left||0):e=n=r=i=+t||0,{top:e,right:n,bottom:r,left:i,height:e+r,width:i+n}},resolve:function(t,e,n){var r,i,o;for(r=0,i=t.length;r<i;++r)if(void 0!==(o=t[r])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==n&&a.isArray(o)&&(o=o[n]),void 0!==o))return o}}},Avrn:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("aexS"),r=n("CcnG"),i=n("ZYCi"),o=function(){function t(t,e){this.router=t,this.authStorageService=e}return t.prototype.canActivate=function(){return!!this.authStorageService.isLoggedIn()||(this.router.navigate(["/login"]),!1)},t.prototype.canActivateChild=function(){return this.canActivate()},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(i.l),r.inject(a.a))},token:t,providedIn:"root"}),t}()},AvvY:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===e&&t>=4||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===e||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":t<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":t<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":t<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}})}()},AxiF:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("b7mW"),o=n("G5J1");function s(t){return function(e){return 0===t?Object(o.b)():e.lift(new u(t))}}var u=function(){function t(t){if(this.total=t,this.total<0)throw new i.a}return t.prototype.call=function(t,e){return e.subscribe(new l(t,this.total))},t}(),l=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.ring=new Array,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.ring,n=this.total,a=this.count++;e.length<n?e.push(t):e[a%n]=t},e.prototype._complete=function(){var t=this.destination,e=this.count;if(e>0)for(var n=this.count>=this.total?this.total:this.count,a=this.ring,r=0;r<n;r++){var i=e++%n;t.next(a[i])}t.complete()},e}(r.a)},B55N:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ja",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(t){return"\u5348\u5f8c"===t},meridiem:function(t,e,n){return t<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(t){return t.week()<this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(t){return this.week()<t.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";default:return t}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}()},BAOO:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["pl",[["a","p"],["AM","PM"],n],n,[["n","p","w","\u015b","c","p","s"],["niedz.","pon.","wt.","\u015br.","czw.","pt.","sob."],["niedziela","poniedzia\u0142ek","wtorek","\u015broda","czwartek","pi\u0105tek","sobota"],["nie","pon","wto","\u015bro","czw","pi\u0105","sob"]],[["N","P","W","\u015a","C","P","S"],["niedz.","pon.","wt.","\u015br.","czw.","pt.","sob."],["niedziela","poniedzia\u0142ek","wtorek","\u015broda","czwartek","pi\u0105tek","sobota"],["nie","pon","wto","\u015bro","czw","pi\u0105","sob"]],[["s","l","m","k","m","c","l","s","w","p","l","g"],["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","pa\u017a","lis","gru"],["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","wrze\u015bnia","pa\u017adziernika","listopada","grudnia"]],[["S","L","M","K","M","C","L","S","W","P","L","G"],["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","pa\u017a","lis","gru"],["stycze\u0144","luty","marzec","kwiecie\u0144","maj","czerwiec","lipiec","sierpie\u0144","wrzesie\u0144","pa\u017adziernik","listopad","grudzie\u0144"]],[["p.n.e.","n.e."],n,["przed nasz\u0105 er\u0105","naszej ery"]],1,[6,0],["dd.MM.y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",n,"{1} {0}",n],[",","\xa0",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","#,##0.00\xa0\xa4","#E0"],"z\u0142","z\u0142oty polski",{AUD:[n,"$"],CAD:[n,"$"],CNY:[n,"\xa5"],GBP:[n,"\xa3"],HKD:[n,"$"],ILS:[n,"\u20aa"],INR:[n,"\u20b9"],JPY:[n,"\xa5"],KRW:[n,"\u20a9"],MXN:[n,"$"],NZD:[n,"$"],PLN:["z\u0142"],RON:[n,"lej"],TWD:[n,"NT$"],USD:[n,"$"],VND:[n,"\u20ab"]},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:0===n&&e%10===Math.floor(e%10)&&e%10>=2&&e%10<=4&&!(e%100>=12&&e%100<=14)?3:0===n&&1!==e&&e%10===Math.floor(e%10)&&e%10>=0&&e%10<=1||0===n&&e%10===Math.floor(e%10)&&e%10>=5&&e%10<=9||0===n&&e%100===Math.floor(e%100)&&e%100>=12&&e%100<=14?4:5}]})},BARL:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG"),i=n("DtyJ");e.ColumnChangesService=function(){function t(){this.columnInputChanges=new i.Subject}return Object.defineProperty(t.prototype,"columnInputChanges$",{get:function(){return this.columnInputChanges.asObservable()},enumerable:!0,configurable:!0}),t.prototype.onInputChange=function(){this.columnInputChanges.next()},a([r.Injectable()],t)}()},BQkM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t+" IOPS"},t}()},BVg3:function(t,e,n){!function(t){"use strict";function e(t){return t%100==11||t%10!=1}function a(t,n,a,r){var i=t+" ";switch(a){case"s":return n||r?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return e(t)?i+(n||r?"sek\xfandur":"sek\xfandum"):i+"sek\xfanda";case"m":return n?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return e(t)?i+(n||r?"m\xedn\xfatur":"m\xedn\xfatum"):n?i+"m\xedn\xfata":i+"m\xedn\xfatu";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\xf6gum"):n?i+"dagur":i+(r?"dag":"degi");case"M":return n?"m\xe1nu\xf0ur":r?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return e(t)?n?i+"m\xe1nu\xf0ir":i+(r?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):n?i+"m\xe1nu\xf0ur":i+(r?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return n||r?"\xe1r":"\xe1ri";case"yy":return e(t)?i+(n||r?"\xe1r":"\xe1rum"):i+(n||r?"\xe1r":"\xe1ri")}}n("wd/R").defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_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:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:a,ss:a,m:a,mm:a,h:"klukkustund",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}})}()},"BY/9":function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitore</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Warnungen</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\xfcr\n          <x id="START_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\xfcr \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\xfcr\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\xfcfen Sie die Clusterintegrit\xe4t.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zur\xfcck</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>Sprache ausw\xe4hlen</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 \xdcberwachungsfunktion.\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\xfcgt 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\xfcr Zur\xfccksetzungen</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="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>ausgew\xe4hlt</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Einstellungen</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 \xc4nderung dieser Parameter von ihren Standardwerten ist in der Regel nicht erforderlich.</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\xe4tigen</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="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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Dies ist ein Pflichtfeld.</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="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Eine IQN hat die folgende Notation \'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\xe4ndert.</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="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="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>Portal hinzuf\xfcgen</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\xe4ndert.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Mindestens 1 Image ist erforderlich.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>Image hinzuf\xfcgen</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Benutzer</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\xfcssen zwischen 8 und 64 Zeichen lang sein und\n                        d\xfcrfen 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="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="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>Der Initiator geh\xf6rt 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\xfcgt.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>Initiator hinzuf\xfcgen</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Name</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>Gruppe hinzuf\xfcgen</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="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\xe4hlten \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> m\xf6chten?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ermittlungsauthentifizierung</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\xfcssen zwischen 8 und 64 Zeichen lang sein und\n              d\xfcrfen 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\xfcr iSCSI-Ziele.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Verf\xfcgbare 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\xfcgbar</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' und \'@\' sind nicht zul\xe4ssig.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Keine rbd-Pools verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- Pool ausw\xe4hlen --</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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Keine Datenpools verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Gr\xf6\xdfe</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Sie m\xfcssen die Gr\xf6\xdfe erh\xf6hen.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Erweitert...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Objektgr\xf6\xdfe</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\xe4hlen --</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\xf6\xdfer als die Objektgr\xf6\xdfe.</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\xf6\xdfer als 0 sein.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Gesamtleistung</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="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>Lange 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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Services</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="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 gro\xdf! Er darf nicht gr\xf6\xdfer 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 klein! 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-Zuordnungsanzeige</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="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Keine Eintr\xe4ge 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="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\xfcltiger 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\xfcltige 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 gro\xdf! 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 klein! Er muss gr\xf6\xdfer 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>Aktualisieren</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\xe4ndert</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 \xdcberwachung</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Clusterweite OSD-Flags</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD-Wiederherstellungspriorit\xe4t</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe4t</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Priorit\xe4tswerte 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 gro\xdf! Er darf nicht gr\xf6\xdfer 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 klein! Er darf nicht kleiner als \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/> sein.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>OSD neu gewichten</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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Sie sind dabei, einen \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub auf\n            das OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> anzuwenden.\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> wird markiert als\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>"/>, wenn Sie den Vorgang fortsetzen.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Es ist nicht sicher, das OSD zu vernichten!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> wird\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>"/> , wenn Sie den Vorgang fortsetzen.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Integrit\xe4t</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\xfcr 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS-Export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- Kein Cluster verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Cluster ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>Daemon hinzuf\xfcgen</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="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Speicher-Back-End ausw\xe4hlen --</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\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Objektgatewaybenutzer ausw\xe4hlen --</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\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx-Client ausw\xe4hlen --</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="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\xfcr \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\xfcrfen keinen f\xfchrenden / 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\xf6nnen Unterverzeichnisse m\xf6glicherweise nicht mounten (d. h. wenn das Tag = foo, kann der Client foo/baz m\xf6glicherweise 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 Tagoptionen verwendet werden, wird derselbe Pfad m\xf6glicherweise 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\xf6glicherweise mehrfach exportiert.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Kein Zugriffstyp verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- Zugriffstyp ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- Kein Squash verf\xfcgbar --</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\xfchrende Benutzer-ID-Squashing-Art ausw\xe4hlen --</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="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\xe4hlte L\xf6schcode-Profilname wird bereits verwendet.</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\xf6cke (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\xf6\xdfer oder gleich 2 sein.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Datenbl\xf6cke f\xfcr 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\xf6\xdfer oder gleich 1 sein.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Dauerhaftigkeitssch\xe4tzung (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\xe4ne</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\xf6\xdfe</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\xe4teklasse</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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Hinzuf\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Schlie\xdfen</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\xe4hlte Poolname wird bereits verwendet.</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\xe4hlen --</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\xf6tigt.</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\xf6tigte Anzahl an Platzierungsgruppen.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Sie k\xf6nnen nur die Anzahl der Platzierungsgruppen eines vorhandenen Pools erh\xf6hen.\n                Derzeit hat Ihr Pool \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> Platzierungsgruppen.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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\xfcr die Platzierungsgruppen wurden f\xfcr Sie berechnet.\n                    Stellen Sie vor dem Senden sicher, dass die Werte Ihren Anforderungen entsprechen.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush-Regel ausw\xe4hlen --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Die Regel kann im aktuellen Cluster nicht verwendet werden,\n                da es zu wenige OSDs enth\xe4lt, um das von dieser Regel geforderte OSD-Minimum zu erf\xfcllen.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Reproduzierte Gr\xf6\xdfe</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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\xf6\xdfe liegt au\xdferhalb des Bereichs. G\xfcltige 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="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>L\xf6schcode-Profil</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- Kein L\xf6schcode-Profil verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- L\xf6schcode-Profil ausw\xe4hlen --</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-\xdcberschreibungen</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="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 L\xf6schkomprimierungsalgorithmus verf\xfcgbar --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minimale Blobgr\xf6\xdfe</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\xf6\xdfer als 0 sein</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Maximale Blobgr\xf6\xdfe</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\xf6\xdfer als die minimale Blobgr\xf6\xdfe sein</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Verh\xe4ltnis</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Komprimierungsverh\xe4ltnis</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Es ist nicht m\xf6glich, einen RBD-Pool mit \'/\' im Namen zu erstellen.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\xc4ndern Sie den Namen oder entfernen Sie \'rbd\' aus der Anwendungsliste.</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="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\xfcr das Objektgateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Die Bucket-Daten konnten nicht geladen werden.</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\xfcltig.</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\xe4hlte 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\xe4hlen --</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="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\xe4hlen --</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\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3-Schl\xfcssel</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\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Schl\xfcssel automatisch generieren</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Zugriffsschl\xfcssel</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Geheimer Schl\xfcssel</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\xe4hlte 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\xfcssel</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\xe4hlte Benutzer-ID wird bereits verwendet.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Vollst\xe4ndiger 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="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Dies ist keine g\xfcltige 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\xe4hlte 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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Angehalten</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Keine Unterbenutzer vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>L\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Schl\xfcssel</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\xfcssel vorhanden.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Bef\xe4higungen</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Keine Bef\xe4higungen vorhanden.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Aktiviert</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Unbegrenzte Gr\xf6\xdfe</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Max. Gr\xf6\xdfe</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Bucket-Quote</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="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="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\xfcck. Sie werden vom Identit\xe4tsanbieter abgemeldet, wenn Sie versuchen, sich erneut anzumelden.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Passwort best\xe4tigen</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>Passwortbest\xe4tigung stimmt nicht mit dem Passwort \xfcberein.</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\xfcltige E-Mail-Adresse.</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="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\xfcr 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\xf6nnen Sie Benutzerrollen nicht mehr hinzuf\xfcgen 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\xf6chten Sie den Vorgang wirklich fortsetzen?</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\xfcnschten Inhalt anzuzeigen.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Leider konnte der gew\xfcnschte Inhalt nicht gefunden werden.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Alle l\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Neue Benachrichtigungen</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Keine Hintergrundaufgaben vorhanden.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Hintergrundaufgaben</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>\xdcber</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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Abmelden</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Leistungsdetails</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\xfcr 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>\xc4nderungszeit</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Maximale Gr\xf6\xdfe</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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>System</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Nein} 1 {Ja} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Leistungsindikatoren nicht verf\xfcgbar</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</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="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 \xfcbergeordnete Konfigurationswert \xfcbernommen 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="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\xfcgbar</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="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\xfcgbar: \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>Schreibvorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>Lesevorg\xe4nge</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="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\xe4nge</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\xe4t</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="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\xe4t</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="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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Um \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> in den Papierkorb zu verschieben,\n          klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Image verschieben\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Optional k\xf6nnen Sie ein Ablaufdatum ausw\xe4hlen.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Schutz l\xe4uft ab am</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NICHT GESCH\xdcTZT</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\xe4hlen Sie ein k\xfcnftiges 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="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\xdcbersicht</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="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\xfcr RBD-Images verf\xfcgbar, 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="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="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>\xdcbergeordnet</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>Pr\xe4fix f\xfcr 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="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Diese Einstellung \xfcberschreibt den globalen Wert</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\xfcr diese Option wurde f\xfcr dieses Image festgelegt.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD-Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Umbenennen} other {Erstellen} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>GESCH\xdcTZT</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NICHT GESCH\xdcTZT</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\xfchren</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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Zum Bereinigen ein oder alle Images ausw\xe4hlen und klicken</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Alle</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\xfctzt 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\xfctzt 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="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\xfcr Pool bearbeiten</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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\xe4hlen Sie zum Bearbeiten des Spiegelungsmodus f\xfcr den Pool\xa0\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\xa0\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\xfcssen 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\xfcr 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\xfcgen} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> Der Pool\n          Spiegeln Sie Peer-Attribute f\xfcr 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>"/> und klicken Sie auf \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Absenden\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\xfcltig.</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\xfcltig.</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\xfcltig.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX-Schl\xfcssel</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64-codierter Schl\xfcssel...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX-Schl\xfcssel muss base64-codiert sein.</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="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>R\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xfcgbar.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Keine Images verf\xfcgbar.</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\xfcgbar. F\xfcgen 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\xfcgen. F\xfcgen Sie dem Ziel einen Initiator hinzu.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Hostname</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bytes f\xfcr Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Lesevorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Schreibvorg\xe4nge</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Zustand</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Deaktiviert</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\xfcgen</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\xf6schen</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\xfcssel</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="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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (erfordert Objektzuordnung)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Vereinfachen</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Erstellen</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Sch\xfctzen</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klonen</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback f\xfcr RBD-Snapshot</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Wiederherstellen</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Gel\xf6scht 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="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\xe4t</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Standby-Daemons</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\xe4ssig, diese Option \xfcber \'ceph config\n      set ...\' festzulegen. Diese Option sollte \xfcber \'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\xe4hrend 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 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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Aktualisierte Optionen f\xfcr Modul &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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>\xd6ffentliche 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="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\xfcrfen 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\xe4lt Lese- und Schreibvorg\xe4nge 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="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\xf6schvorg\xe4nge 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\xfchrte L\xf6schvorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Hardlimit f\xfcr 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\xfcr die Platzierungsgruppen-Protokolll\xe4nge 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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Umfassender Scrub</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>aus</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>ein</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>ausgefallen</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Vernichten</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="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\xfcr Lesevorgang</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Lesevorg\xe4nge</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Schreibvorg\xe4nge</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="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\xe4t</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Aktualisierte OSD-Wiederherstellungsgeschwindigkeits-Priorit\xe4t &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> wurde im folgenden OSD initialisiert: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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 \xfcbernommen)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>aus globaler Konfiguration \xfcbernommen</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\xfchrende Benutzer-ID-Squashing-Art ausw\xe4hlen --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Keine Daemons verf\xfcgbar.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</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\xfcr Vertreibung</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Min. Alter f\xfcr Leerung</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>Max. Bytes f\xfcr Ziel</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Max. Objekte f\xfcr Ziel</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Keine Anwendungen hinzugef\xfcgt</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\xe4ssige 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\xe4nge betr\xe4gt 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>Anwendung hinzuf\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>L\xf6schcode-Profil</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Gr\xf6\xdfe des Replikats</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>Letzte \xc4nderung</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Profil mit L\xf6schcodierung</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes f\xfcr Schreibvorgang</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aktualisierter Objektgateway-Bucket &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Erstellter Objektgateway-Bucket &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>Buckets</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>Aktualisierter Objektgatewaybenutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Erstellter Objektgatewaybenutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>Benutzer</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Erstellte Rolle \'\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>Aktualisierte Rolle \'\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>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>Gel\xf6schte Rolle \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Erstellter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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\xe4ndert 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>Aktualisierter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Gel\xf6schter Benutzer &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Fehler beim L\xf6schen des Benutzers &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Sie sind derzeit angemeldet als &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\xf6cke 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\xf6cke f\xfcr jedes Objekt und speichern Sie sie auf unterschiedlichen OSDs.\n      Die Anzahl der Codierungsdatenbl\xf6cke entspricht auch der Anzahl der OSDs, die ausfallen k\xf6nnen, 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\xfcr Ceph-Pools mit L\xf6schcodierung.</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\xfcssen jedoch die Paketgr\xf6\xdfe sorgf\xe4ltig\n          ausw\xe4hlen. S\xe4mtliche \'reed_sol_r6_op\'-, \'liberation\'-, \'blaum_roth\'- und \'liber8tion\'-Vorg\xe4nge sind dahingehend RAID6-Entsprechungen,\n          dass sie nur mit \'m=2\' konfiguriert werden k\xf6nnen.</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\xfcr Pakete auf Bytes-Gr\xf6\xdfe vorgenommen.\n          Die Auswahl der richtigen Paketgr\xf6\xdfe ist schwierig.\n          In der Jerasure-Dokumentation sind ausf\xfchrliche 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\xf6schcodierung auf mehreren OSDs gespeichert ist,\n          m\xfcssen 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\xfcssen bei Verlust eines OSDs zum Reparieren die elf anderen gelesen werden.\n\n          Das lrc-L\xf6schcode-Modul erstellt lokale Parit\xe4tsdatenbl\xf6cke, um die Wiederherstellung mit weniger OSDs auszuf\xfchren.\n          Wenn lrc beispielsweise mit \'k=8\', \'m=4\' und \'l=4\' konfiguriert ist, wird ein zus\xe4tzlicher Parit\xe4tsdatenblock f\xfcr 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\xf6cke in S\xe4tze entsprechend dem Speicherort.\n          Beispielsweise werden f\xfcr \'k=4\' und \'m=2\', wenn der Speicherort \'3\' entspricht, zwei Dreiergruppen erstellt.\n          Jeder Satz kann wiederhergestellt werden, ohne dass Datenbl\xf6cke 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\xf6cken gespeichert wird.\n          Wenn er beispielsweise auf \'rack\' festgelegt ist, wird jede Gruppe an l-Datenbl\xf6cken in einem anderen Rack platziert.\n          Er wird zum Erstellen eines CRUSH-Regelschritts verwendet, beispielsweise f\xfcr einen Schritt zum Ausw\xe4hlen 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\xfchrt.</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\xe4tsdatenbl\xf6cke, von denen jeder jeden Datenblock in seinem Berechnungsbereich enth\xe4lt.\n          Die Anzahl wird als eine Dauerhaftigkeitssch\xe4tzung verwendet. Wenn beispielsweise \'c=2\' vorliegt,\n          k\xf6nnen 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\xfcr 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\xf6cke in einem Bucket mit derselben Ausfalldom\xe4ne befinden.\n      Wenn die Ausfalldom\xe4ne beispielsweise als Host fungiert, werden keine zwei Datenbl\xf6cke 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\xe4nken Sie mithilfe der Klassennamen f\xfcr Crush-Ger\xe4te in der CRUSH-Zuordnung die Platzierung\n      auf Ger\xe4te 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, \xfcber den das L\xf6schcode-Modul geladen wird.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>L\xe4sst alle Vorg\xe4nge 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\xe4sst nur Vorg\xe4nge zu, die den Server nicht \xe4ndern</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\xe4sst weder Lese- noch Schreibvorg\xe4nge zu, jedoch alle anderen Vorg\xe4nge</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\xe4sst Lese-/Schreibvorg\xe4nge und andere Vorg\xe4nge nicht zu, die Dateiattribute oder Verzeichnisinhalte \xe4ndern</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>L\xe4sst \xfcberhaupt keinen Zugriff zu</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- Priorit\xe4t ausw\xe4hlen --</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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informationen</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Keine Elemente ausgew\xe4hlt.</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\xe4hlen 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\xfcgen</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>Keine Elemente verf\xfcgbar.</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="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\xfcnschte 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\xfcnschte Limit der E/A-Vorg\xe4nge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>BPS-Limit f\xfcr Lesevorg\xe4nge</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\xfcnschte 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\xfcr Lesevorg\xe4nge</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\xfcnschte Limit f\xfcr Lesevorg\xe4nge pro Sekunde.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>BPS-Limit f\xfcr Schreibvorg\xe4nge</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\xfcnschte 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\xfcr Schreibvorg\xe4nge</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\xfcnschte Limit f\xfcr Schreibvorg\xe4nge 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\xfcnschte 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\xfcnschte Blocklimit der E/A-Vorg\xe4nge.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>BPS-Block f\xfcr Lesevorg\xe4nge</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\xfcnschte 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\xfcr Lesevorg\xe4nge</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\xfcnschte Blocklimit der Lesevorg\xe4nge.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>BPS-Block f\xfcr Schreibvorg\xe4nge</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\xfcnschte 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\xfcr Schreibvorg\xe4nge</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\xfcnschte Blocklimit der Schreibvorg\xe4nge.</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>Fehler bei \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\xfchrt</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ausf\xfchren</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ausgef\xfchrt</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualisiert</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Wird gel\xf6scht</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>l\xf6schen</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Gel\xf6scht</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="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">\n        <source>mirror mode for pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </source>\n        <target>Spiegelungsmodus f\xfcr 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>Peer f\xfcr Pool \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' spiegeln\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="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\xe4lt 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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Geklont</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\xfctzt 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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Kopiert</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Vereinfacht</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 enthaltener 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>Kann \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> nicht l\xf6schen, da es gesch\xfctzt ist.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Rollback wird ausgef\xfchrt</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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback wurde ausgef\xfchrt</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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Wiederhergestellt</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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Bereinigt</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\xe4lt.</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>L\xf6schcode-Profil \'\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>'},ByF4:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fo",{months:"januar_februar_mars_apr\xedl_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\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_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:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},C6Ij:function(t,e,n){"use strict";var a=n("CcnG"),r=n("TZo1"),i=n("9Kw/"),o=n("Jm/i"),s=n("Ip0R"),u=n("xbqr"),l=n("9GXa"),c=n("M/6F"),d=n("NDi4");n("AWcq"),n.d(e,"a",function(){return f}),n.d(e,"b",function(){return v});var f=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-info-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[o.a],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Retrieving data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[". Please wait..."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-warning-panel",[],null,null,null,u.b,u.a)),a["\u0275did"](1,49152,null,0,l.a,[],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Displaying previously cached data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,["."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" for "])),(t()(),a["\u0275eld"](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 y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"cd-error-panel",[],null,null,null,c.b,c.a)),a["\u0275did"](1,49152,null,0,d.a,[],null,null),(t()(),a["\u0275eld"](2,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Could not load data"])),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](5,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[". Please check the cluster health."]))],function(t,e){t(e,5,0,e.component.statusFor)},null)}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](1,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](3,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](5,16384,null,0,s.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)}},CDJp:function(t,e,n){"use strict";var a=n("RDha");t.exports={_set:function(t,e){return a.merge(this[t]||(this[t]={}),e)}}},CS9Q:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("siIJ"),i=function(t){function e(n,a){void 0===a&&(a=r.a.now);var i=t.call(this,n,function(){return e.delegate&&e.delegate!==i?e.delegate.now():a()})||this;return i.actions=[],i.active=!1,i.scheduled=void 0,i}return a.__extends(e,t),e.prototype.schedule=function(n,a,r){return void 0===a&&(a=0),e.delegate&&e.delegate!==this?e.delegate.schedule(n,a,r):t.prototype.schedule.call(this,n,a,r)},e.prototype.flush=function(t){var e=this.actions;if(this.active)e.push(t);else{var 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}}},e}(r.a)},CVuo:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=function(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()})},e.deCamelCase=function(t){return t.replace(/([A-Z])/g,function(t){return" "+t}).replace(/^./,function(t){return t.toUpperCase()})}},Cc8h:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=n("ahDk");n("czA5"),e.LongPressDirective=function(){function t(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new i.EventEmitter,this.longPressing=new i.EventEmitter,this.longPressEnd=new i.EventEmitter,this.mouseX=0,this.mouseY=0}return Object.defineProperty(t.prototype,"press",{get:function(){return this.pressing},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLongPress",{get:function(){return this.isLongPressing},enumerable:!0,configurable:!0}),t.prototype.onMouseDown=function(t){var e=this;if(1===t.which&&this.pressEnabled&&!t.target.classList.contains("resize-handle")){this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;var n=o.fromEvent(document,"mouseup");this.subscription=n.subscribe(function(t){return e.onMouseup()}),this.timeout=setTimeout(function(){e.isLongPressing=!0,e.longPressStart.emit({event:t,model:e.pressModel}),e.subscription.add(o.fromEvent(document,"mousemove").pipe(s.takeUntil(n)).subscribe(function(t){return e.onMouseMove(t)})),e.loop(t)},this.duration),this.loop(t)}},t.prototype.onMouseMove=function(t){if(this.pressing&&!this.isLongPressing){var e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}},t.prototype.loop=function(t){var e=this;this.isLongPressing&&(this.timeout=setTimeout(function(){e.longPressing.emit({event:t,model:e.pressModel}),e.loop(t)},50))},t.prototype.endPress=function(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})},t.prototype.onMouseup=function(){this.endPress()},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"pressEnabled",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pressModel",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"duration",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressing",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressEnd",void 0),a([i.HostBinding("class.press"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"press",null),a([i.HostBinding("class.longpress"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isLongPress",null),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseDown",null),a([i.Directive({selector:"[long-press]"})],t)}()},CcnG:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_core_core_t",function(){return Xh}),n.d(e,"\u0275angular_packages_core_core_q",function(){return Kh}),n.d(e,"\u0275angular_packages_core_core_r",function(){return $h}),n.d(e,"\u0275angular_packages_core_core_s",function(){return Zh}),n.d(e,"\u0275angular_packages_core_core_h",function(){return Zf}),n.d(e,"\u0275angular_packages_core_core_o",function(){return Ih}),n.d(e,"\u0275angular_packages_core_core_p",function(){return Ph}),n.d(e,"\u0275angular_packages_core_core_n",function(){return gh}),n.d(e,"\u0275angular_packages_core_core_m",function(){return hh}),n.d(e,"\u0275angular_packages_core_core_c",function(){return ps}),n.d(e,"\u0275angular_packages_core_core_d",function(){return Ne}),n.d(e,"\u0275angular_packages_core_core_e",function(){return Vf}),n.d(e,"\u0275angular_packages_core_core_f",function(){return Af}),n.d(e,"\u0275angular_packages_core_core_g",function(){return qf}),n.d(e,"\u0275angular_packages_core_core_l",function(){return rd}),n.d(e,"\u0275angular_packages_core_core_u",function(){return Sp}),n.d(e,"\u0275angular_packages_core_core_w",function(){return _p}),n.d(e,"\u0275angular_packages_core_core_v",function(){return vp}),n.d(e,"\u0275angular_packages_core_core_z",function(){return wp}),n.d(e,"\u0275angular_packages_core_core_x",function(){return xp}),n.d(e,"\u0275angular_packages_core_core_y",function(){return Tp}),n.d(e,"\u0275angular_packages_core_core_bc",function(){return In}),n.d(e,"\u0275angular_packages_core_core_bj",function(){return p}),n.d(e,"\u0275angular_packages_core_core_bd",function(){return Xe}),n.d(e,"\u0275angular_packages_core_core_be",function(){return Qe}),n.d(e,"\u0275angular_packages_core_core_bf",function(){return bn}),n.d(e,"\u0275angular_packages_core_core_bi",function(){return rr}),n.d(e,"\u0275angular_packages_core_core_bm",function(){return Xt}),n.d(e,"\u0275angular_packages_core_core_i",function(){return du}),n.d(e,"\u0275angular_packages_core_core_j",function(){return fu}),n.d(e,"\u0275angular_packages_core_core_k",function(){return pu}),n.d(e,"\u0275angular_packages_core_core_a",function(){return D}),n.d(e,"\u0275angular_packages_core_core_b",function(){return R}),n.d(e,"\u0275angular_packages_core_core_bk",function(){return l}),n.d(e,"\u0275angular_packages_core_core_ba",function(){return Um}),n.d(e,"\u0275angular_packages_core_core_bb",function(){return ug}),n.d(e,"createPlatform",function(){return Bp}),n.d(e,"assertPlatform",function(){return Wp}),n.d(e,"destroyPlatform",function(){return Kp}),n.d(e,"getPlatform",function(){return $p}),n.d(e,"PlatformRef",function(){return Zp}),n.d(e,"ApplicationRef",function(){return Jp}),n.d(e,"createPlatformFactory",function(){return Up}),n.d(e,"NgProbeToken",function(){return Vp}),n.d(e,"enableProdMode",function(){return zu}),n.d(e,"isDevMode",function(){return Fu}),n.d(e,"APP_ID",function(){return $f}),n.d(e,"PACKAGE_ROOT_URL",function(){return np}),n.d(e,"PLATFORM_INITIALIZER",function(){return Qf}),n.d(e,"PLATFORM_ID",function(){return tp}),n.d(e,"APP_BOOTSTRAP_LISTENER",function(){return ep}),n.d(e,"APP_INITIALIZER",function(){return Wf}),n.d(e,"ApplicationInitStatus",function(){return Kf}),n.d(e,"DebugElement",function(){return kh}),n.d(e,"DebugNode",function(){return Ch}),n.d(e,"asNativeElements",function(){return mh}),n.d(e,"getDebugNode",function(){return Sh}),n.d(e,"Testability",function(){return jp}),n.d(e,"TestabilityRegistry",function(){return qp}),n.d(e,"setTestabilityGetter",function(){return Fp}),n.d(e,"TRANSLATIONS",function(){return Bh}),n.d(e,"TRANSLATIONS_FORMAT",function(){return Uh}),n.d(e,"LOCALE_ID",function(){return Vh}),n.d(e,"MissingTranslationStrategy",function(){return Wh}),n.d(e,"ApplicationModule",function(){return Jh}),n.d(e,"wtfCreateScope",function(){return Cp}),n.d(e,"wtfLeave",function(){return kp}),n.d(e,"wtfStartTimeRange",function(){return Ip}),n.d(e,"wtfEndTimeRange",function(){return Dp}),n.d(e,"Type",function(){return ud}),n.d(e,"EventEmitter",function(){return hc}),n.d(e,"ErrorHandler",function(){return Sf}),n.d(e,"Sanitizer",function(){return ku}),n.d(e,"SecurityContext",function(){return Cu}),n.d(e,"ANALYZE_FOR_ENTRY_COMPONENTS",function(){return N}),n.d(e,"Attribute",function(){return A}),n.d(e,"ContentChild",function(){return P}),n.d(e,"ContentChildren",function(){return L}),n.d(e,"Query",function(){return E}),n.d(e,"ViewChild",function(){return j}),n.d(e,"ViewChildren",function(){return M}),n.d(e,"Component",function(){return Hd}),n.d(e,"Directive",function(){return Yd}),n.d(e,"HostBinding",function(){return Wd}),n.d(e,"HostListener",function(){return Kd}),n.d(e,"Input",function(){return Bd}),n.d(e,"Output",function(){return Ud}),n.d(e,"Pipe",function(){return Gd}),n.d(e,"CUSTOM_ELEMENTS_SCHEMA",function(){return rf}),n.d(e,"NO_ERRORS_SCHEMA",function(){return of}),n.d(e,"NgModule",function(){return sf}),n.d(e,"ViewEncapsulation",function(){return at}),n.d(e,"Version",function(){return Iu}),n.d(e,"VERSION",function(){return Du}),n.d(e,"defineInjectable",function(){return v}),n.d(e,"defineInjector",function(){return _}),n.d(e,"forwardRef",function(){return X}),n.d(e,"resolveForwardRef",function(){return J}),n.d(e,"Injectable",function(){return gf}),n.d(e,"INJECTOR",function(){return fs}),n.d(e,"Injector",function(){return hs}),n.d(e,"inject",function(){return Ae}),n.d(e,"\u0275inject",function(){return Ae}),n.d(e,"InjectFlags",function(){return ke}),n.d(e,"ReflectiveInjector",function(){return Gf}),n.d(e,"createInjector",function(){return Ps}),n.d(e,"ResolvedReflectiveFactory",function(){return Pf}),n.d(e,"ReflectiveKey",function(){return Df}),n.d(e,"InjectionToken",function(){return w}),n.d(e,"Inject",function(){return Te}),n.d(e,"Optional",function(){return we}),n.d(e,"Self",function(){return Se}),n.d(e,"SkipSelf",function(){return Oe}),n.d(e,"Host",function(){return Ce}),n.d(e,"NgZone",function(){return Rp}),n.d(e,"\u0275NoopNgZone",function(){return Mp}),n.d(e,"RenderComponentType",function(){return bu}),n.d(e,"Renderer",function(){return vu}),n.d(e,"Renderer2",function(){return wu}),n.d(e,"RendererFactory2",function(){return xu}),n.d(e,"RendererStyleFlags2",function(){return Tu}),n.d(e,"RootRenderer",function(){return _u}),n.d(e,"COMPILER_OPTIONS",function(){return bp}),n.d(e,"Compiler",function(){return mp}),n.d(e,"CompilerFactory",function(){return yp}),n.d(e,"ModuleWithComponentFactories",function(){return rp}),n.d(e,"ComponentFactory",function(){return Xs}),n.d(e,"\u0275ComponentFactory",function(){return Xs}),n.d(e,"ComponentRef",function(){return Zs}),n.d(e,"ComponentFactoryResolver",function(){return ru}),n.d(e,"ElementRef",function(){return hu}),n.d(e,"NgModuleFactory",function(){return uu}),n.d(e,"NgModuleRef",function(){return su}),n.d(e,"NgModuleFactoryLoader",function(){return td}),n.d(e,"getModuleFactory",function(){return od}),n.d(e,"QueryList",function(){return th}),n.d(e,"SystemJsNgModuleLoader",function(){return ah}),n.d(e,"SystemJsNgModuleLoaderConfig",function(){return eh}),n.d(e,"TemplateRef",function(){return gc}),n.d(e,"ViewContainerRef",function(){return ih}),n.d(e,"EmbeddedViewRef",function(){return fh}),n.d(e,"ViewRef",function(){return dh}),n.d(e,"ChangeDetectionStrategy",function(){return q}),n.d(e,"ChangeDetectorRef",function(){return uh}),n.d(e,"DefaultIterableDiffer",function(){return Rh}),n.d(e,"IterableDiffers",function(){return qh}),n.d(e,"KeyValueDiffers",function(){return Fh}),n.d(e,"SimpleChange",function(){return ca}),n.d(e,"WrappedValue",function(){return la}),n.d(e,"platformCore",function(){return Gh}),n.d(e,"\u0275ALLOW_MULTIPLE_PLATFORMS",function(){return Gp}),n.d(e,"\u0275APP_ID_RANDOM_PROVIDER",function(){return Xf}),n.d(e,"\u0275defaultIterableDiffers",function(){return Yh}),n.d(e,"\u0275defaultKeyValueDiffers",function(){return Hh}),n.d(e,"\u0275devModeEqual",function(){return ua}),n.d(e,"\u0275isListLikeIterable",function(){return da}),n.d(e,"\u0275ChangeDetectorStatus",function(){return F}),n.d(e,"\u0275isDefaultChangeDetectionStrategy",function(){return z}),n.d(e,"\u0275Console",function(){return ap}),n.d(e,"\u0275getInjectableDef",function(){return x}),n.d(e,"\u0275setCurrentInjector",function(){return De}),n.d(e,"\u0275APP_ROOT",function(){return Ds}),n.d(e,"\u0275ivyEnabled",function(){return tg}),n.d(e,"\u0275CodegenComponentFactoryResolver",function(){return iu}),n.d(e,"\u0275resolveComponentResources",function(){return Q}),n.d(e,"\u0275ReflectionCapabilities",function(){return pd}),n.d(e,"\u0275RenderDebugInfo",function(){return yu}),n.d(e,"\u0275_sanitizeHtml",function(){return sl}),n.d(e,"\u0275_sanitizeStyle",function(){return Bc}),n.d(e,"\u0275_sanitizeUrl",function(){return Vu}),n.d(e,"\u0275global",function(){return G}),n.d(e,"\u0275looseIdentical",function(){return K}),n.d(e,"\u0275stringify",function(){return $}),n.d(e,"\u0275makeDecorator",function(){return k}),n.d(e,"\u0275isObservable",function(){return Uf}),n.d(e,"\u0275isPromise",function(){return Bf}),n.d(e,"\u0275clearOverrides",function(){return Iy}),n.d(e,"\u0275initServicesIfNeeded",function(){return Gb}),n.d(e,"\u0275overrideComponentView",function(){return ky}),n.d(e,"\u0275overrideProvider",function(){return Cy}),n.d(e,"\u0275NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR",function(){return Qm}),n.d(e,"\u0275defineBase",function(){return ft}),n.d(e,"\u0275defineComponent",function(){return st}),n.d(e,"\u0275defineDirective",function(){return pt}),n.d(e,"\u0275definePipe",function(){return ht}),n.d(e,"\u0275defineNgModule",function(){return ct}),n.d(e,"\u0275detectChanges",function(){return mo}),n.d(e,"\u0275renderComponent",function(){return Zo}),n.d(e,"\u0275Render3ComponentFactory",function(){return Pu}),n.d(e,"\u0275Render3ComponentRef",function(){return Mu}),n.d(e,"\u0275directiveInject",function(){return Mo}),n.d(e,"\u0275injectAttribute",function(){return jo}),n.d(e,"\u0275getFactoryOf",function(){return jn}),n.d(e,"\u0275getInheritedFactory",function(){return qn}),n.d(e,"\u0275templateRefExtractor",function(){return Lc}),n.d(e,"\u0275ProvidersFeature",function(){return $s}),n.d(e,"\u0275InheritDefinitionFeature",function(){return as}),n.d(e,"\u0275NgOnChangesFeature",function(){return os}),n.d(e,"\u0275LifecycleHooksFeature",function(){return ts}),n.d(e,"\u0275Render3NgModuleRef",function(){return Wl}),n.d(e,"\u0275markDirty",function(){return _o}),n.d(e,"\u0275NgModuleFactory",function(){return Kl}),n.d(e,"\u0275NO_CHANGE",function(){return ha}),n.d(e,"\u0275container",function(){return no}),n.d(e,"\u0275nextContext",function(){return di}),n.d(e,"\u0275elementStart",function(){return xi}),n.d(e,"\u0275namespaceHTML",function(){return bi}),n.d(e,"\u0275namespaceMathML",function(){return mi}),n.d(e,"\u0275namespaceSVG",function(){return gi}),n.d(e,"\u0275element",function(){return yi}),n.d(e,"\u0275listener",function(){return Ii}),n.d(e,"\u0275text",function(){return Vi}),n.d(e,"\u0275embeddedViewStart",function(){return oo}),n.d(e,"\u0275query",function(){return Ac}),n.d(e,"\u0275registerContentQuery",function(){return qo}),n.d(e,"\u0275projection",function(){return co}),n.d(e,"\u0275bind",function(){return xo}),n.d(e,"\u0275interpolation1",function(){return So}),n.d(e,"\u0275interpolation2",function(){return Oo}),n.d(e,"\u0275interpolation3",function(){return Co}),n.d(e,"\u0275interpolation4",function(){return ko}),n.d(e,"\u0275interpolation5",function(){return Io}),n.d(e,"\u0275interpolation6",function(){return Do}),n.d(e,"\u0275interpolation7",function(){return Ro}),n.d(e,"\u0275interpolation8",function(){return No}),n.d(e,"\u0275interpolationV",function(){return wo}),n.d(e,"\u0275pipeBind1",function(){return sc}),n.d(e,"\u0275pipeBind2",function(){return uc}),n.d(e,"\u0275pipeBind3",function(){return lc}),n.d(e,"\u0275pipeBind4",function(){return cc}),n.d(e,"\u0275pipeBindV",function(){return dc}),n.d(e,"\u0275pureFunction0",function(){return Zl}),n.d(e,"\u0275pureFunction1",function(){return Xl}),n.d(e,"\u0275pureFunction2",function(){return Jl}),n.d(e,"\u0275pureFunction3",function(){return Ql}),n.d(e,"\u0275pureFunction4",function(){return tc}),n.d(e,"\u0275pureFunction5",function(){return ec}),n.d(e,"\u0275pureFunction6",function(){return nc}),n.d(e,"\u0275pureFunction7",function(){return ac}),n.d(e,"\u0275pureFunction8",function(){return rc}),n.d(e,"\u0275pureFunctionV",function(){return ic}),n.d(e,"\u0275getCurrentView",function(){return Yo}),n.d(e,"\u0275getHostElement",function(){return ea}),n.d(e,"\u0275restoreView",function(){return Je}),n.d(e,"\u0275containerRefreshStart",function(){return ro}),n.d(e,"\u0275containerRefreshEnd",function(){return io}),n.d(e,"\u0275queryRefresh",function(){return Ec}),n.d(e,"\u0275loadQueryList",function(){return Lo}),n.d(e,"\u0275elementEnd",function(){return Di}),n.d(e,"\u0275elementProperty",function(){return Ni}),n.d(e,"\u0275componentHostSyntheticProperty",function(){return Ai}),n.d(e,"\u0275projectionDef",function(){return uo}),n.d(e,"\u0275reference",function(){return Eo}),n.d(e,"\u0275enableBindings",function(){return $e}),n.d(e,"\u0275disableBindings",function(){return Ze}),n.d(e,"\u0275allocHostVars",function(){return To}),n.d(e,"\u0275elementAttribute",function(){return Ri}),n.d(e,"\u0275elementContainerStart",function(){return vi}),n.d(e,"\u0275elementContainerEnd",function(){return _i}),n.d(e,"\u0275elementStyling",function(){return qi}),n.d(e,"\u0275elementHostAttrs",function(){return Fi}),n.d(e,"\u0275elementStylingMap",function(){return Gi}),n.d(e,"\u0275elementStyleProp",function(){return Yi}),n.d(e,"\u0275elementStylingApply",function(){return zi}),n.d(e,"\u0275elementClassProp",function(){return Hi}),n.d(e,"\u0275textBinding",function(){return Bi}),n.d(e,"\u0275template",function(){return eo}),n.d(e,"\u0275embeddedViewEnd",function(){return so}),n.d(e,"\u0275store",function(){return Ao}),n.d(e,"\u0275load",function(){return Po}),n.d(e,"\u0275pipe",function(){return oc}),n.d(e,"\u0275whenRendered",function(){return es}),n.d(e,"\u0275i18n",function(){return Pl}),n.d(e,"\u0275i18nAttributes",function(){return Ml}),n.d(e,"\u0275i18nExp",function(){return Fl}),n.d(e,"\u0275i18nStart",function(){return Dl}),n.d(e,"\u0275i18nEnd",function(){return Al}),n.d(e,"\u0275i18nApply",function(){return zl}),n.d(e,"\u0275i18nPostprocess",function(){return Nl}),n.d(e,"\u0275setClassMetadata",function(){return $l}),n.d(e,"\u0275compileComponent",function(){return Ed}),n.d(e,"\u0275compileDirective",function(){return Ld}),n.d(e,"\u0275compileNgModule",function(){return Sd}),n.d(e,"\u0275compileNgModuleDefs",function(){return Od}),n.d(e,"\u0275patchComponentDefWithScope",function(){return Id}),n.d(e,"\u0275resetCompiledComponents",function(){return Cd}),n.d(e,"\u0275compilePipe",function(){return zd}),n.d(e,"\u0275sanitizeHtml",function(){return Uc}),n.d(e,"\u0275sanitizeStyle",function(){return Wc}),n.d(e,"\u0275defaultStyleSanitizer",function(){return Xc}),n.d(e,"\u0275sanitizeScript",function(){return Zc}),n.d(e,"\u0275sanitizeUrl",function(){return Kc}),n.d(e,"\u0275sanitizeResourceUrl",function(){return $c}),n.d(e,"\u0275bypassSanitizationTrustHtml",function(){return jc}),n.d(e,"\u0275bypassSanitizationTrustStyle",function(){return qc}),n.d(e,"\u0275bypassSanitizationTrustScript",function(){return Fc}),n.d(e,"\u0275bypassSanitizationTrustUrl",function(){return zc}),n.d(e,"\u0275bypassSanitizationTrustResourceUrl",function(){return Yc}),n.d(e,"\u0275getLContext",function(){return Fn}),n.d(e,"\u0275bindPlayerFactory",function(){return ar}),n.d(e,"\u0275addPlayer",function(){return Vo}),n.d(e,"\u0275getPlayers",function(){return Bo}),n.d(e,"\u0275compileNgModuleFactory__POST_R3__",function(){return Hp}),n.d(e,"\u0275SWITCH_COMPILE_COMPONENT__POST_R3__",function(){return $d}),n.d(e,"\u0275SWITCH_COMPILE_DIRECTIVE__POST_R3__",function(){return Zd}),n.d(e,"\u0275SWITCH_COMPILE_PIPE__POST_R3__",function(){return Xd}),n.d(e,"\u0275SWITCH_COMPILE_NGMODULE__POST_R3__",function(){return uf}),n.d(e,"\u0275getDebugNode__POST_R3__",function(){return wh}),n.d(e,"\u0275SWITCH_COMPILE_INJECTABLE__POST_R3__",function(){return mf}),n.d(e,"\u0275SWITCH_IVY_ENABLED__POST_R3__",function(){return Qh}),n.d(e,"\u0275SWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__",function(){return lh}),n.d(e,"\u0275Compiler_compileModuleSync__POST_R3__",function(){return up}),n.d(e,"\u0275Compiler_compileModuleAsync__POST_R3__",function(){return cp}),n.d(e,"\u0275Compiler_compileModuleAndAllComponentsSync__POST_R3__",function(){return fp}),n.d(e,"\u0275Compiler_compileModuleAndAllComponentsAsync__POST_R3__",function(){return hp}),n.d(e,"\u0275SWITCH_ELEMENT_REF_FACTORY__POST_R3__",function(){return gu}),n.d(e,"\u0275SWITCH_TEMPLATE_REF_FACTORY__POST_R3__",function(){return mc}),n.d(e,"\u0275SWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__",function(){return oh}),n.d(e,"\u0275SWITCH_RENDERER2_FACTORY__POST_R3__",function(){return Su}),n.d(e,"\u0275getModuleFactory__POST_R3__",function(){return id}),n.d(e,"\u0275publishGlobalUtil",function(){return $o}),n.d(e,"\u0275publishDefaultGlobalUtils",function(){return Ko}),n.d(e,"\u0275SWITCH_INJECTOR_FACTORY__POST_R3__",function(){return gs}),n.d(e,"\u0275registerModuleFactory",function(){return nd}),n.d(e,"\u0275EMPTY_ARRAY",function(){return Zg}),n.d(e,"\u0275EMPTY_MAP",function(){return Xg}),n.d(e,"\u0275and",function(){return Jg}),n.d(e,"\u0275ccf",function(){return ym}),n.d(e,"\u0275cmf",function(){return Dy}),n.d(e,"\u0275crt",function(){return vg}),n.d(e,"\u0275did",function(){return Gm}),n.d(e,"\u0275eld",function(){return Qg}),n.d(e,"\u0275elementEventFullName",function(){return Rg}),n.d(e,"\u0275getComponentViewDefinitionFactory",function(){return vm}),n.d(e,"\u0275inlineInterpolate",function(){return Kg}),n.d(e,"\u0275interpolate",function(){return Wg}),n.d(e,"\u0275mod",function(){return lm}),n.d(e,"\u0275mpd",function(){return um}),n.d(e,"\u0275ncd",function(){return db}),n.d(e,"\u0275nov",function(){return Rm}),n.d(e,"\u0275pid",function(){return Vm}),n.d(e,"\u0275prd",function(){return Bm}),n.d(e,"\u0275pad",function(){return hb}),n.d(e,"\u0275pod",function(){return gb}),n.d(e,"\u0275ppd",function(){return pb}),n.d(e,"\u0275qud",function(){return ob}),n.d(e,"\u0275ted",function(){return bb}),n.d(e,"\u0275unv",function(){return mg}),n.d(e,"\u0275vid",function(){return _b});var a=n("mrSG"),r=n("pugT"),i=n("K9Ia"),o=n("6blF"),s=n("p0ib"),u=n("S1nX");function l(t){for(var e in t)if(t[e]===l)return e;throw Error("Could not find renamed property on target object.")}function c(t,e){for(var n in e)e.hasOwnProperty(n)&&!t.hasOwnProperty(n)&&(t[n]=e[n])}var d=l({ngComponentDef:l}),f=l({ngDirectiveDef:l}),p=l({ngInjectableDef:l}),h=l({ngInjectorDef:l}),g=l({ngPipeDef:l}),m=l({ngModuleDef:l}),b=l({ngBaseDef:l}),y=l({__NG_ELEMENT_ID__:l});function v(t){return{providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function _(t){return{factory:t.factory,providers:t.providers||[],imports:t.imports||[]}}function x(t){return t&&t.hasOwnProperty(p)?t[p]:null}function T(t){return t&&t.hasOwnProperty(h)?t[h]:null}var w=function(){function t(t,e){this._desc=t,this.ngMetadataName="InjectionToken",this.ngInjectableDef=void 0!==e?v({providedIn:e.providedIn||"root",factory:e.factory}):void 0}return t.prototype.toString=function(){return"InjectionToken "+this._desc},t}(),S="__annotations__",O="__parameters__",C="__prop__metadata__";function k(t,e,n,r,i){var o=I(e);function s(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof s)return o.call.apply(o,Object(a.__spread)([this],e)),this;var u=new((t=s).bind.apply(t,Object(a.__spread)([void 0],e)));return function(t){return i&&i.apply(void 0,Object(a.__spread)([t],e)),(t.hasOwnProperty(S)?t[S]:Object.defineProperty(t,S,{value:[]})[S]).push(u),r&&r(t),t}}return n&&(s.prototype=Object.create(n.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s}function I(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(t){var r=t.apply(void 0,Object(a.__spread)(e));for(var i in r)this[i]=r[i]}}}function D(t,e,n){var r=I(e);function i(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof i)return r.apply(this,e),this;var o=new((t=i).bind.apply(t,Object(a.__spread)([void 0],e)));return s.annotation=o,s;function s(t,e,n){for(var a=t.hasOwnProperty(O)?t[O]:Object.defineProperty(t,O,{value:[]})[O];a.length<=n;)a.push(null);return(a[n]=a[n]||[]).push(o),t}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i}function R(t,e,n,r){var i=I(e);function o(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(this instanceof o)return i.apply(this,e),this;var s=new((t=o).bind.apply(t,Object(a.__spread)([void 0],e)));return function(t,n){var i=t.constructor,o=i.hasOwnProperty(C)?i[C]:Object.defineProperty(i,C,{value:{}})[C];o[n]=o.hasOwnProperty(n)&&o[n]||[],o[n].unshift(s),r&&r.apply(void 0,Object(a.__spread)([t,n],e))}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=t,o.annotationCls=o,o}var N=new w("AnalyzeForEntryComponents"),A=D("Attribute",function(t){return{attributeName:t}}),E=function(){return function(){}}(),L=R("ContentChildren",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!1,isViewQuery:!1,descendants:!1},e)},E),P=R("ContentChild",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!0,isViewQuery:!1,descendants:!0},e)},E),M=R("ViewChildren",function(t,e){return void 0===e&&(e={}),Object(a.__assign)({selector:t,first:!1,isViewQuery:!0,descendants:!0},e)},E),j=R("ViewChild",function(t,e){return Object(a.__assign)({selector:t,first:!0,isViewQuery:!0,descendants:!0},e)},E),q=function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t}({}),F=function(t){return t[t.CheckOnce=0]="CheckOnce",t[t.Checked=1]="Checked",t[t.CheckAlways=2]="CheckAlways",t[t.Detached=3]="Detached",t[t.Errored=4]="Errored",t[t.Destroyed=5]="Destroyed",t}({});function z(t){return null==t||t===q.Default}var Y="undefined"!=typeof window&&window,H="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,G="undefined"!=typeof global&&global||Y||H,V=Promise.resolve(0),B=null;function U(){if(!B){var t=G.Symbol;if(t&&t.iterator)B=t.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),n=0;n<e.length;++n){var a=e[n];"entries"!==a&&"size"!==a&&Map.prototype[a]===Map.prototype.entries&&(B=a)}}return B}function W(t){"undefined"==typeof Zone?V.then(function(){t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}function K(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}function $(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map($).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return""+t.overriddenName;if(t.name)return""+t.name;var e=t.toString();if(null==e)return""+e;var n=e.indexOf("\n");return-1===n?e:e.substring(0,n)}var Z=l({__forward_ref__:l});function X(t){return t.__forward_ref__=X,t.toString=function(){return $(this())},t}function J(t){var e=t;return"function"==typeof e&&e.hasOwnProperty(Z)&&e.__forward_ref__===X?e():t}function Q(t){var e=[],n=new Map;function a(a){var r=n.get(a);if(!r){var i=t(a);n.set(a,r=i.then(nt)),e.push(r)}return r}return tt.forEach(function(t){t.templateUrl&&a(t.templateUrl).then(function(e){t.template=e,t.templateUrl=void 0});var e=t.styleUrls,n=t.styles||(t.styles=[]),r=t.styles.length;e&&e.forEach(function(i,o){n.push(""),a(i).then(function(a){n[r+o]=a,e.splice(e.indexOf(i),1),0==e.length&&(t.styleUrls=void 0)})})}),tt.clear(),Promise.all(e).then(function(){return null})}var tt=new Set;function et(t){return t.templateUrl||t.styleUrls&&t.styleUrls.length}function nt(t){return"string"==typeof t?t:t.text()}var at=function(t){return t[t.Emulated=0]="Emulated",t[t.Native=1]="Native",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t}({}),rt={},it=[],ot=0;function st(t){var 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,hostBindings:t.hostBindings||null,contentQueries:t.contentQueries||null,contentQueriesRefresh:t.contentQueriesRefresh||null,attributes:t.attributes||null,declaredInputs:a,inputs:null,outputs:null,exportAs:t.exportAs||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===q.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||at.Emulated,id:"c",styles:t.styles||it,_:null};return r._=""+{toString:function(){var e=t.directives,n=t.features,i=t.pipes;r.id+=ot++,r.inputs=dt(t.inputs,a),r.outputs=dt(t.outputs),n&&n.forEach(function(t){return t(r)}),r.directiveDefs=e?function(){return("function"==typeof e?e():e).map(ut)}:null,r.pipeDefs=i?function(){return("function"==typeof i?i():i).map(lt)}:null}},r}function ut(t){return gt(t)||mt(t)}function lt(t){return bt(t)}function ct(t){return{type:t.type,bootstrap:t.bootstrap||it,declarations:t.declarations||it,imports:t.imports||it,exports:t.exports||it,transitiveCompileScopes:null}}function dt(t,e){if(null==t)return rt;var n={};for(var a in t)if(t.hasOwnProperty(a)){var r=t[a],i=r;Array.isArray(r)&&(i=r[1],r=r[0]),n[r]=a,e&&(e[r]=i)}return n}function ft(t){var e={};return{inputs:dt(t.inputs,e),declaredInputs:e,outputs:dt(t.outputs)}}var pt=st;function ht(t){return{name:t.name,factory:t.factory,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function gt(t){return t[d]||null}function mt(t){return t[f]||null}function bt(t){return t[g]||null}function yt(t,e){var n=t[m]||null;if(!n&&!0===e)throw new Error("Type "+$(t)+" does not have 'ngModuleDef' property.");return n}var vt=0,_t=1,xt=2,Tt=3,wt=4,St=5,Ot=6,Ct=7,kt=8,It=9,Dt=10,Rt=11,Nt=12,At=13,Et=14,Lt=15,Pt=16,Mt=17,jt=18,qt=0,Ft=1,zt=6,Yt=7,Ht=8,Gt="__ngContext__",Vt=8,Bt=8,Ut=9,Wt=-1,Kt=function(){return function(t,e,n){this.factory=t,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=n}}(),$t=Kt.prototype;function Zt(t){return"function"==typeof t?t.name||t:"string"==typeof t?t:null==t?"":"object"==typeof t&&"function"==typeof t.type?t.type.name||t.type:""+t}function Xt(t,e){return t[e+jt]}function Jt(t){for(;Array.isArray(t);)t=t[St];return t}function Qt(t,e){return Jt(e[t+jt])}function te(t,e){return Jt(e[t.index])}function ee(t,e){return e[vt].data[t+jt]}function ne(t,e){var n=e[t];return n.length>=jt?n:n[St]}function ae(t){return 0!=(4&t.flags)}function re(t){return 1==(1&t.flags)}function ie(t){return null!==t.template}function oe(t){return Array.isArray(t)&&t.length===Ht}function se(t){return 0!=(128&t[_t])}function ue(t){for(var e=Array.isArray(t)?t:de(t);e&&!(128&e[_t]);)e=e[xt];return e}function le(t){return ue(t)[It]}function ce(t){return t[Gt]}function de(t){var e=ce(t);return e?Array.isArray(e)?e:e.lView:null}function fe(t){return t!==Wt}function pe(t){return 32767&t}function he(t){return t>>16}function ge(t,e){for(var n=he(t),a=e;n>0;)a=a[Mt],n--;return a}var me=("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(G);function be(t,e){for(var n=0;n<t.length;n++)e.push(t[n])}function ye(t){for(var e=t[Ot];e&&2===e.type;)e=(t=t[Mt])[Ot];return t}function ve(){var t=G.ng;if(!t||!t.\u0275compilerFacade)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.\u0275compilerFacade}var _e,xe,Te=D("Inject",function(t){return{token:t}}),we=D("Optional"),Se=D("Self"),Oe=D("SkipSelf"),Ce=D("Host"),ke=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}({}),Ie=void 0;function De(t){var e=Ie;return Ie=t,e}function Re(t){var e=_e;return _e=t,e}function Ne(t,e){if(void 0===e&&(e=ke.Default),void 0===Ie)throw new Error("inject() must be called from an injection context");return null===Ie?Ee(t,void 0,e):Ie.get(t,e&ke.Optional?null:void 0,e)}function Ae(t,e){return void 0===e&&(e=ke.Default),(_e||Ne)(t,e)}function Ee(t,e,n){var a=x(t);if(a&&"root"==a.providedIn)return void 0===a.value?a.value=a.factory():a.value;if(n&ke.Optional)return null;if(void 0!==e)return e;throw new Error("Injector: NOT_FOUND ["+$(t)+"]")}function Le(t){for(var e=[],n=0;n<t.length;n++){var a=t[n];if(Array.isArray(a)){if(0===a.length)throw new Error("Arguments array must have arguments.");for(var r=void 0,i=ke.Default,o=0;o<a.length;o++){var s=a[o];s instanceof we||"Optional"===s.ngMetadataName?i|=ke.Optional:s instanceof Oe||"SkipSelf"===s.ngMetadataName?i|=ke.SkipSelf:s instanceof Se||"Self"===s.ngMetadataName?i|=ke.Self:r=s instanceof Te?s.token:s}e.push(Ae(r,i))}else e.push(Ae(a))}return e}function Pe(t,e,n,a){e&&(a.initHooks||(a.initHooks=[])).push(t,e),n&&((a.initHooks||(a.initHooks=[])).push(t,n),(a.checkHooks||(a.checkHooks=[])).push(t,n))}function Me(t,e){if(t.firstTemplatePass)for(var n=e.directiveStart,a=e.directiveEnd;n<a;n++){var r=t.data[n];je(r,t,n),qe(r,t,n),Fe(r,t,n)}}function je(t,e,n){t.afterContentInit&&(e.contentHooks||(e.contentHooks=[])).push(n,t.afterContentInit),t.afterContentChecked&&((e.contentHooks||(e.contentHooks=[])).push(n,t.afterContentChecked),(e.contentCheckHooks||(e.contentCheckHooks=[])).push(n,t.afterContentChecked))}function qe(t,e,n){t.afterViewInit&&(e.viewHooks||(e.viewHooks=[])).push(n,t.afterViewInit),t.afterViewChecked&&((e.viewHooks||(e.viewHooks=[])).push(n,t.afterViewChecked),(e.viewCheckHooks||(e.viewCheckHooks=[])).push(n,t.afterViewChecked))}function Fe(t,e,n){null!=t.onDestroy&&(e.destroyHooks||(e.destroyHooks=[])).push(n,t.onDestroy)}function ze(t,e,n){!n&&32&t[_t]&&(Ye(t,e.initHooks,e.checkHooks,n),t[_t]&=-33)}function Ye(t,e,n,a){if(!a){var r=2&t[_t]?e:n;r&&He(t,r)}}function He(t,e){for(var n=0;n<e.length;n+=2)e[n+1].call(t[e[n]])}var Ge,Ve,Be,Ue,We=null;function Ke(t){We=t}function $e(){Ge=!0}function Ze(){Ge=!1}function Xe(){return Ue}function Je(t){on=t}function Qe(){return Ve}function tn(t){Ve=t}function en(t,e){Ve=t,Ue=e}function nn(){return Be}function an(t){Be=t}function rn(t){return void 0===t&&(t=Ue),1==(1&t[_t])}var on=null,sn=!1;function un(){return sn}function ln(t){sn=t}var cn=!0;function dn(){return cn}function fn(t){cn=t}var pn=-1;function hn(){return pn}function gn(t){pn=t}function mn(t,e){var n=Ue;if(t){var a=t[vt];cn=a.firstTemplatePass,pn=a.bindingStartIndex}return Ve=e,Be=!0,Ue=on=t,n}function bn(t){return void 0===t&&(t=1),(on=function(t,e){for(;t>0;)e=e[Mt],t--;return e}(t,on))[It]}function yn(t){var e=Ue[vt];rn(Ue)?Ue[_t]&=-2:(Ye(Ue,e.viewHooks,e.viewCheckHooks,sn),Ue[_t]&=-11,Ue[_t]|=32,Ue[Ct]=e.bindingStartIndex),mn(t,null)}var vn=!0;function _n(t){var e=vn;return vn=t,e}var xn=255,Tn=0;function wn(t,e){var n=On(t,e);if(-1!==n)return n;var a=e[vt];a.firstTemplatePass&&(t.injectorIndex=e.length,Sn(a.data,t),Sn(e,null),Sn(a.blueprint,null));var r=Cn(t,e),i=pe(r),o=ge(r,e),s=t.injectorIndex;if(fe(r))for(var u=o[vt].data,l=0;l<8;l++)e[s+l]=o[i+l]|u[i+l];return e[s+Bt]=r,s}function Sn(t,e){t.push(0,0,0,0,0,0,0,0,e)}function On(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+Bt]?-1:t.injectorIndex}function Cn(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;for(var n=e[Ot],a=1;n&&-1===n.injectorIndex;)n=(e=e[Mt])?e[Ot]:null,a++;return n?n.injectorIndex|a<<16:-1}function kn(t,e,n){!function(t,e,n){var a="string"!=typeof n?n[y]:n.charCodeAt(0)||0;null==a&&(a=n[y]=Tn++);var r=a&xn,i=1<<r,o=64&r,s=32&r,u=e.data;128&r?o?s?u[t+7]|=i:u[t+6]|=i:s?u[t+5]|=i:u[t+4]|=i:o?s?u[t+3]|=i:u[t+2]|=i:s?u[t+1]|=i:u[t]|=i}(t,e[vt],n)}function In(t,e){var n=t.attrs;if(n)for(var a=0;a<n.length;a+=2){var r=n[a];if(3===r)break;if(r==e)return n[a+1]}return null}function Dn(t,e,n,a,r){if(void 0===a&&(a=ke.Default),t){var i=function(t){if("string"==typeof t)return t.charCodeAt(0)||0;var e=t[y];return"number"==typeof e?e&xn:e}(n);if("function"==typeof i){var o=Qe(),s=Xe();en(t,e);try{var u=i();if(null!=u||a&ke.Optional)return u;throw new Error("No provider for "+Zt(n)+"!")}finally{en(o,s)}}else if("number"==typeof i){var l=null,c=On(t,e),d=Wt,f=a&ke.Host?ye(e)[Ot]:null;for((-1===c||a&ke.SkipSelf)&&(d=-1===c?Cn(t,e):e[c+Bt],Pn(a,!1)?(l=e[vt],c=pe(d),e=ge(d,e)):c=-1);-1!==c;){d=e[c+Bt];var p=e[vt];if(Ln(i,c,p.data)){var h=Nn(c,e,n,l,a,f);if(h!==Rn)return h}Pn(a,e[vt].data[c+Vt]===f)&&Ln(i,c,e)?(l=p,c=pe(d),e=ge(d,e)):c=-1}}}if(a&ke.Optional&&void 0===r&&(r=null),0==(a&(ke.Self|ke.Host))){var g=e[Dt];return g?g.get(n,r,a&ke.Optional):Ee(n,r,a&ke.Optional)}if(a&ke.Optional)return r;throw new Error("NodeInjector: NOT_FOUND ["+Zt(n)+"]")}var Rn={};function Nn(t,e,n,a,r,i){var o=e[vt],s=o.data[t+Vt],u=An(s,e,n,null==a?re(s)&&vn:a!=o&&3===s.type,r&ke.Host&&i===s);return null!==u?En(o.data,e,u,s):Rn}function An(t,e,n,a,r){for(var i=t.providerIndexes,o=e[vt].data,s=65535&i,u=t.directiveStart,l=i>>16,c=r?s+l:t.directiveEnd,d=a?s:s+l;d<c;d++){var f=o[d];if(d<u&&n===f||d>=u&&f.type===n)return d}if(r){var p=o[u];if(p&&ie(p)&&p.type===n)return u}return null}function En(t,e,n,a){var r,i=e[n];if(null!=(r=i)&&"object"==typeof r&&Object.getPrototypeOf(r)==$t){var o=i;if(o.resolving)throw new Error("Circular dep for "+Zt(t[n]));var s=_n(o.canSeeViewProviders);o.resolving=!0;var u=void 0;o.injectImpl&&(u=Re(o.injectImpl));var l=Qe(),c=Xe();en(a,e);try{i=e[n]=o.factory(null,t,e,a)}finally{o.injectImpl&&Re(u),_n(s),o.resolving=!1,en(l,c)}}return i}function Ln(t,e,n){var a=64&t,r=32&t;return!!((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])&1<<t)}function Pn(t,e){return!(t&ke.Self||t&ke.Host&&e)}var Mn=function(){function t(t,e){this._tNode=t,this._lView=e}return t.prototype.get=function(t,e){return Dn(this._tNode,this._lView,t,void 0,e)},t}();function jn(t){var e=t,n=gt(e)||mt(e)||bt(e)||x(e)||T(e);return n&&void 0!==n.factory?n.factory:null}function qn(t){var e=jn(Object.getPrototypeOf(t.prototype).constructor);return null!==e?e:function(t){return new t}}function Fn(t){var e,n=ce(t);if(n){if(Array.isArray(n)){var a=n,r=void 0,i=void 0,o=void 0;if((e=t)&&e.constructor&&e.constructor.ngComponentDef){if(-1==(r=Bn(a,t)))throw new Error("The provided component was not found in the application");i=t}else if(t&&t.constructor&&t.constructor.ngDirectiveDef){if(-1==(r=function(t,e){for(var n=t[vt].firstChild;n;){for(var a=n.directiveEnd,r=n.directiveStart;r<a;r++)if(t[r]===e)return n.index;n=Vn(n)}return-1}(a,t)))throw new Error("The provided directive was not found in the application");o=Un(r,a,!1)}else if(-1==(r=Gn(a,t)))return null;var s=ce(h=Jt(a[r])),u=s&&!Array.isArray(s)?s:zn(a,r,h);if(i&&void 0===u.component&&(u.component=i,Hn(u.component,u)),o&&void 0===u.directives){u.directives=o;for(var l=0;l<o.length;l++)Hn(o[l],u)}Hn(u.native,u),n=u}}else for(var c=t,d=c;d=d.parentNode;){var f=ce(d);if(f){if(a=void 0,!(a=Array.isArray(f)?f:f.lView))return null;var p=Gn(a,c);if(p>=0){var h;Hn(h=Jt(a[p]),u=zn(a,p,h)),n=u;break}}}return n||null}function zn(t,e,n){return{lView:t,nodeIndex:e,native:n,component:void 0,directives:void 0,localRefs:void 0}}function Yn(t){var e,n=ce(t);if(Array.isArray(n)){var a=Bn(n,t);(r=zn(n,a,(e=ne(a,n))[St])).component=t,Hn(t,r),Hn(r.native,r)}else{var r;e=ne((r=n).nodeIndex,r.lView)}return e}function Hn(t,e){t[Gt]=e}function Gn(t,e){for(var n=t[vt].firstChild;n;){if(te(n,t)===e)return n.index;n=Vn(n)}return-1}function Vn(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 Bn(t,e){var n=t[vt].components;if(n)for(var a=0;a<n.length;a++){var r=n[a];if(ne(r,t)[It]===e)return r}else if(ne(jt,t)[It]===e)return jt;return-1}function Un(t,e,n){var a=e[vt].data[t],r=a.directiveStart;return 0==r?it:(!n&&1&a.flags&&r++,e.slice(r,a.directiveEnd))}function Wn(t){var e,n,a=na(t);return void 0===a.component&&(a.component=1&(n=(e=a.lView)[vt].data[a.nodeIndex]).flags?e[n.directiveStart]:null),a.component}function Kn(t){return na(t).lView[It]}function $n(t){for(var e=ta(t).lView;e[xt]&&null===e[St];)e=e[xt];return 128&e[_t]?null:e[It]}function Zn(t){return function(t){var e;for(e=Array.isArray(t)?t:de(t);e&&!(128&e[_t]);)e=e[xt];return e}(Array.isArray(t)?t:ta(t).lView)[It]}function Xn(t){return Object(a.__spread)(Zn(t).components)}function Jn(t){var e=ta(t);return new Mn(e.lView[vt].data[e.nodeIndex],e.lView)}function Qn(t){var e=ta(t);return void 0===e.directives&&(e.directives=Un(e.nodeIndex,e.lView,!1)),e.directives||[]}function ta(t,e){void 0===e&&(e=!0);var n=Fn(t);if(!n&&e)throw new Error("Invalid ng target");return n}function ea(t){return Fn(t).native}function na(t){if(!(t instanceof Node))throw new Error("Expecting instance of DOM Node");return ta(t)}function aa(t){return"boolean"==typeof t.useCapture}function ra(t){var e=na(t).lView,n=e[kt],a=e[vt].cleanup,r=[];if(a&&n)for(var i=0;i<a.length;){var o=a[i++],s=a[i++];if("string"==typeof o){var u=o,l=Jt(e[s]),c=n[a[i++]],d=a[i++];t==l&&r.push({element:t,name:u,callback:c,useCapture:"boolean"==typeof d?d:!(d>=0)&&null})}}return r.sort(ia),r}function ia(t,e){return t.name==e.name?0:t.name<e.name?-1:1}var oa=/([A-Z])/g;function sa(t){try{return null!=t?t.toString().slice(0,30):t}catch(e){return"[ERROR] Exception while trying to serialize the value"}}function ua(t,e){var n=da(t),a=da(e);return n&&a?function(t,e,n){for(var a=t[U()](),r=e[U()]();;){var i=a.next(),o=r.next();if(i.done&&o.done)return!0;if(i.done||o.done)return!1;if(!n(i.value,o.value))return!1}}(t,e,ua):!(n||!t||"object"!=typeof t&&"function"!=typeof t||a||!e||"object"!=typeof e&&"function"!=typeof e)||K(t,e)}var la=function(){function t(t){this.wrapped=t}return t.wrap=function(e){return new t(e)},t.unwrap=function(e){return t.isWrapped(e)?e.wrapped:e},t.isWrapped=function(e){return e instanceof t},t}(),ca=function(){function t(t,e,n){this.previousValue=t,this.currentValue=e,this.firstChange=n}return t.prototype.isFirstChange=function(){return this.firstChange},t}();function da(t){return!!fa(t)&&(Array.isArray(t)||!(t instanceof Map)&&U()in t)}function fa(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function pa(t){throw new Error("Multiple components match node with tagname "+t.tagName)}var ha={};function ga(t,e,n){return t[e]=n}function ma(t,e){return t[e]}function ba(t,e,n){if(t[e]===ha)t[e]=n;else{if(r=n,(a=t[e])!=a&&r!=r||a===r)return!1;t[e]=n}var a,r;return!0}function ya(t,e,n,a){var r=ba(t,e,n);return ba(t,e+1,a)||r}function va(t,e,n,a,r){var i=ya(t,e,n,a);return ba(t,e+2,r)||i}function _a(t,e,n,a,r,i){var o=ya(t,e,n,a);return ya(t,e+2,r,i)||o}var xa="ngProjectAs",Ta=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({});function wa(t){return!!t.listen}var Sa={createRenderer:function(t,e){return document}};function Oa(t,e){return null==t.parent?function(t){var e=t[Ot];return e&&2!==e.type?te(e,t[xt]):null}(e):te(Ca(t),e)}function Ca(t){for(var e=t.parent;e&&5===e.type;)e=e.parent;return e}function ka(t,e){if(-1===t.index){var n=e[Lt];return n>-1?e[xt][n]:null}return e[xt][t.parent.index]}function Ia(t,e){var n=ka(t,e);return n?n[Yt]:null}var Da=[];function Ra(t,e,n,a,r){for(var i=t[vt].node,o=-1,s=t,u=i.child;u;){var l=null;if(3===u.type){Na(e,n,a,te(u,s),r);var c=s[u.index];oe(c)&&Na(e,n,a,c[zt],r)}else if(0===u.type){var d=s[u.index];Na(e,n,a,d[zt],r),a&&(d[Yt]=a),d[Ft].length&&(l=(s=d[Ft][0])[vt].node,r=d[zt])}else if(1===u.type){var f=ye(s),p=f[Ot].projection[u.projection];Da[++o]=u,Da[++o]=s,p&&(l=(s=f[xt])[vt].data[p.index])}else l=u.child;if(null===l)for(null===u.next&&2&u.flags&&(s=Da[o--],u=Da[o--]),l=u.next;!l;){if(null===(u=u.parent||s[vt].node)||u===i)return null;0===u.type&&(r=(s=s[xt])[u.index][zt]),l=2===u.type&&s[Tt]?(s=s[Tt])[vt].node:u.next}u=l}}function Na(t,e,n,a,r){0===t?wa(e)?e.insertBefore(n,a,r):n.insertBefore(a,r,!0):1===t?wa(e)?e.removeChild(n,a):n.removeChild(a):2===t&&e.destroyNode(a)}function Aa(t,e){return wa(e)?e.createText(Zt(t)):e.createTextNode(Zt(t))}function Ea(t,e,n){var a=Ia(t[vt].node,t);a&&Ra(t,e?0:1,t[Nt],a,n)}function La(t,e,n,a,r){var i=e[Ft];a>0&&(i[a-1][Tt]=t),a<i.length?(t[Tt]=i[a],i.splice(a,0,t)):(i.push(t),t[Tt]=null),r>-1&&(t[Lt]=r,t[xt]=n),t[wt]&&t[wt].insertView(a),t[_t]|=16}function Pa(t,e,n){var a=t[Ft],r=a[e];return e>0&&(a[e-1][Tt]=r[Tt]),a.splice(e,1),n||Ea(r,!1),r[wt]&&r[wt].removeView(),r[Lt]=-1,r[xt]=null,r[_t]&=-17,r}function Ma(t,e,n){var a=t[Ft][n];Pa(t,n,!!e.detached),qa(a)}function ja(t){var e=t[vt].childIndex;return-1===e?null:t[e]}function qa(t){var e=t[Nt];wa(e)&&e.destroyNode&&Ra(t,2,e,null),function(t){if(-1===t[vt].childIndex)return za(t);for(var e=ja(t);e;){var n=null;if(e.length>=jt?e[vt].childIndex>-1&&(n=ja(e)):e[Ft].length&&(n=e[Ft][0]),null==n){for(;e&&!e[Tt]&&e!==t;)za(e),e=Fa(e,t);za(e||t),n=e&&e[Tt]}e=n}}(t),t[_t]|=64}function Fa(t,e){var n;return t.length>=jt&&(n=t[Ot])&&2===n.type?ka(n,t):t[xt]===e?null:t[xt]}function za(t){if(t.length>=jt){var e=t;!function(t){var e,n=t[vt];null!=n&&null!=(e=n.destroyHooks)&&He(t,e)}(e),(r=(a=e)[vt]&&a[vt].pipeDestroyHooks)&&He(a,r),function(t){var e=t[vt].cleanup;if(null!=e){for(var n=t[kt],a=0;a<e.length-1;a+=2)if("string"==typeof e[a]){var r=n[e[a+2]],i=Jt(t[e[a+1]]),o=e[a+3];"boolean"==typeof o?i.removeEventListener(e[a],r,o):o>=0?n[o]():n[-o].unsubscribe(),a+=2}else"number"==typeof e[a]?(0,n[e[a]])():e[a].call(n[e[a+1]]);t[kt]=null}}(e);var n=e[Ot];n&&3===n.type&&wa(e[Nt])&&e[Nt].destroy()}var a,r}function Ya(t,e){if(Ha(t,e)){if(se(e))return Va(e[Nt],te(t,e));var n=e[Ot],a=t.parent;return null!=a&&4===a.type&&(t=Ua(a)),null==t.parent&&2===n.type?Ia(n,e):Oa(t,e)}return null}function Ha(t,e){var n,a=t,r=t.parent;return t.parent&&(4===t.parent.type?r=(a=Ua(t)).parent:5===t.parent.type&&(r=(a=Ca(a)).parent)),null===r&&(r=e[Ot]),r&&2===r.type?null!=(n=ka(r,e))&&null!=n[Yt]:null==a.parent||!(3!==a.parent.type||1&a.parent.flags)}function Ga(t,e,n,a){wa(t)?t.insertBefore(e,n,a):e.insertBefore(n,a,!0)}function Va(t,e){return wa(t)?t.parentNode(e):e.parentNode}function Ba(t,e,n){if(void 0===t&&(t=null),null!==t&&Ha(e,n)){var a=n[Nt],r=Oa(e,n),i=e.parent||n[Ot];if(2===i.type){var o=ka(i,n),s=o[Ft],u=s.indexOf(n);Ga(a,o[Yt],t,Wa(u,s,o[zt]))}else 4===i.type?Ga(a,Ya(e,n),t,r):5===i.type?Ga(a,r,t,te(e.parent,n)):wa(a)?a.appendChild(r,t):r.appendChild(t);return!0}return!1}function Ua(t){for(;null!=t.parent&&4===t.parent.type;)t=t.parent;return t}function Wa(t,e,n){if(t+1<e.length){var a=e[t+1],r=a[Ot];return r.child?te(r.child,a):n}return n}function Ka(t,e,n){if(null!==e&&Ha(t,n)){var a=Oa(t,n),r=n[Nt];return wa(r)?r.removeChild(a,e):a.removeChild(e),!0}return!1}function $a(t,e,n,a){var r=te(t,a);Ba(r,e,n),Hn(r,a);var i=Ya(e,n),o=a[t.index];if(0===t.type){o[Yt]=i;for(var s=o[Ft],u=0;u<s.length;u++)Ea(s[u],!0,o[zt])}else{if(4===t.type)for(var l=t.child;l;)$a(l,e,n,a),l=l.next;oe(o)&&(o[Yt]=i,Ba(o[zt],e,n))}}var Za="ng-template";function Xa(t,e,n){return e===t.tagName&&(n||3===t.type||4===t.type||0===t.type&&e===Za)}function Ja(t,e,n){for(var a,r,i,o,s,u=4,l=t.attrs,c=l?l.indexOf(3):-1,d=!1,f=0;f<e.length;f++){var p=e[f];if("number"!=typeof p){if(!d)if(4&u){if(u=2|1&u,""!==p&&!Xa(t,p,n)||""===p&&1===e.length){if(Qa(u))return!1;d=!0}}else{var h=tr(8&u?"class":p,l);if(-1===h){if(Qa(u))return!1;d=!0;continue}var g,m=8&u?p:e[++f];if(""!==m)if(g=c>-1&&h>c?"":l[h+1],8&u&&(i=(a=g).length,s=(o=a.indexOf(r=m))+r.length,-1===o||o>0&&" "!==a[o-1]||s<i&&" "!==a[s])||2&u&&m!==g){if(Qa(u))return!1;d=!0}}}else{if(!d&&!Qa(u)&&!Qa(p))return!1;if(d&&Qa(p))continue;d=!1,u=p|1&u}}return Qa(u)||d}function Qa(t){return 0==(1&t)}function tr(t,e){if(null===e)return-1;for(var n=!1,a=0;a<e.length;){var r=e[a];if(r===t)return a;0===r?a+=4:(3===r&&(n=!0),a+=n?1:2)}return-1}function er(t,e,n){void 0===n&&(n=!1);for(var a=0;a<e.length;a++)if(Ja(t,e[a],n))return!0;return!1}function nr(t,e,n){for(var a=function(t){var e=t.attrs;if(null!=e){var n=e.indexOf(xa);if(0==(1&n))return e[n+1]}return null}(t),r=0;r<e.length;r++)if(a===n[r]||null===a&&er(t,e[r],!0))return r+1;return 0}function ar(t,e){return new rr(t,e)}var rr=function(){return function(t,e){this.fn=t,this.value=e}}(),ir=function(){function t(){this._players=[]}return t.prototype.flushPlayers=function(){for(var t=0;t<this._players.length;t++){var e=this._players[t];e.parent||0!==e.state||e.play()}this._players.length=0},t.prototype.queuePlayer=function(t){this._players.push(t)},t}(),or="@";function sr(t,e,n,a){return[0,[null,-1,!1,e||null],n||[null],a||[null],[0,0],t||null,null,null,null]}function ur(t,e){for(var n=t,a=e[n],r=e;Array.isArray(a);)r=a,a=a[St];if(s=r,Array.isArray(s)&&"number"==typeof s[0]&&Array.isArray(s[2]))return r;var i,o,s,u=ee(t-jt,e).stylingTemplate;return r!==e&&(n=St),r[n]=u?(i=a,(o=u.slice())[5]=i,o[0]|=32,o):sr(a)}function lr(t){return t[0]===or}function cr(t,e,n,a,r,i){return i=i||n,r?t[r]=a:t.push(a),!!a&&(a.addEventListener(200,function(){var e=t.indexOf(a);e&&(e<t[0]?t[e]=null:t.splice(e,1)),a.destroy()}),(e.playerHandler||(e.playerHandler=new ir)).queuePlayer(a,i),!0)}function dr(t){return t[8]}function fr(t){return t[8]=[5,null,null,null,null]}function pr(t){return!!(8&t.flags)}function hr(t){for(var e=sr(),n=e[3]=[null],a=e[2]=[null],r=-1,i=0;i<t.length;i++){var o=t[i];if("number"==typeof o)r=o;else if(2===r)a.push(o,t[++i]);else if(1===r)n.push(o,!0);else if(3===r)break}return e}function gr(t,e,n){for(var a=1;a<t.length;){if(t[a]===e){var r=t[a+1];return void(null!=r&&0!=r||(t[a+1]=n))}a+=2}t.push(e,n)}function mr(t,e,n,a){for(var r=1;r<n.length;r+=2){var i=n[r+1];i&&(a?_r(t,n[r+0],!0,e,null):vr(t,n[r+0],i,e,null))}}function br(t,e,n,a){for(var r=n;r<a;r+=4)if(zr(t,r)===e)return r;return-1}function yr(t,e,n,a,r){var i=Jr(t,r||null),o=function(t,e,n,a){var r=t[1][4*e+1],i=t[4];return i[r+2+(a?i[r+0]:0)+n]}(t,i,e,a),s=Fr(t,o),u=qr(t,o),l=Xr(t,o),c=n instanceof rr?n.value:n;if($r(u,s,c)&&(!s||(c?i<=l:l===i))){var d=2==(2&u),f=n instanceof rr?new Zr(n,t[5],d?1:2):null,p=f?n.value:n,h=Pr(t,o),g=!1,m=f?h:0;if(Ar(t,f,h)){var b=Er(t,f,h);m=f?b:0,g=!0}if((g||l!==i)&&Lr(t,o,m,i),l!==i){var y=zr(t,o),v=ei(t,i);!function(t,e,n){v&&v(y)?t[e]|=4:t[e]&=-5}(t,o)}Nr(t,o,p);var _=Ir(u),x=Fr(t,_);if(!x||$r(u,x,p)){var T=!1,w=!0;!Wr(p,d)&&Wr(x,d)&&(T=!0,w=!1),xr(t,_,T),xr(t,o,w),ni(t,i,!0),Hr(t,!0)}g&&Gr(t,!0)}}function vr(t,e,n,a,r,i,o){n=r&&n?r(e,n):n,i||o?(i&&i.setValue(e,n),o&&o.setValue(e,n)):n?(n=n.toString(),wa(a)?a.setStyle(t,e,n,Ta.DashCase):t.style.setProperty(e,n)):wa(a)?a.removeStyle(t,e,Ta.DashCase):t.style.removeProperty(e)}function _r(t,e,n,a,r,i){r||i?(r&&r.setValue(e,n),i&&i.setValue(e,n)):n?wa(a)?a.addClass(t,e):t.classList.add(e):wa(a)?a.removeClass(t,e):t.classList.remove(e)}function xr(t,e,n){var a=e>=9?e+0:e;n?t[a]|=1:t[a]&=-2}function Tr(t,e){return 1==(1&t[e>=9?e+0:e])}function wr(t,e){return 2==(2&t[e>=9?e+0:e])}function Sr(t,e){return 4==(4&t[e>=9?e+0:e])}function Or(t,e,n){return 63&t|e<<6|n<<20}function Cr(t,e){var n=kr(e);return(2&e?t[3]:t[2])[n]}function kr(t){return t>>6&16383}function Ir(t){var e=t>>20&16383;return e>=9?e:-1}function Dr(t){return Ir(t[0])}function Rr(t,e,n){t[e+1]=n}function Nr(t,e,n){t[e+2]=n}function Ar(t,e,n){var a=t[8];if(e){if(!a||0===n)return!0}else if(!a)return!1;return a[n]!==e}function Er(t,e,n){var a=t[8]||fr(t);return n>0?a[n]=e:(a.splice(n=a[0],0,e,null),a[0]+=2),n}function Lr(t,e,n,a){var r=function(t,e){return n<<16|t}(a);t[e+3]=r}function Pr(t,e){return t[e+3]>>16&65535}function Mr(t,e){var n=Pr(t,e);if(n){var a=t[8];if(a)return a[n]}return null}function jr(t,e,n){t[0===e?e:e+0]=n}function qr(t,e){return t[0===e?e:e+0]}function Fr(t,e){return t[e+2]}function zr(t,e){return t[e+1]}function Yr(t){return 16&t[0]}function Hr(t,e){xr(t,0,e)}function Gr(t,e){e?t[0]|=8:t[0]&=-9}function Vr(t,e,n){for(var a=(n||0)+1;a<t.length;a+=4)if(t[a]==e)return a-1;return-1}function Br(t,e,n){var a=Fr(t,e),r=zr(t,e),i=qr(t,e),o=Pr(t,e),s=i,u=qr(t,n),l=Ir(s);l>=0&&jr(t,l,Or(c=qr(t,l),kr(c),n));var c,d=Ir(u);d>=0&&jr(t,d,Or(c=qr(t,d),kr(c),e)),Nr(t,e,Fr(t,n)),Rr(t,e,zr(t,n)),jr(t,e,qr(t,n)),Lr(t,e,Pr(t,n),0),Nr(t,n,a),Rr(t,n,r),jr(t,n,i),Lr(t,n,o,0)}function Ur(t,e,n,a,r,i,o,s){var u=e<t.length;t.splice(e,0,1|r|(n?2:0),a,i,0),Lr(t,e,s,o),u&&function(t,n){for(var a=e+4;a<t.length;a+=4){var r=Ir(qr(t,a));if(r>0){var i=kr(qr(t,r));jr(t,r,Or((Tr(t,r)?1:0)|(wr(t,r)?2:0)|(Sr(t,r)?4:0),i,a))}}}(t)}function Wr(t,e){return e?!!t:null!==t}function Kr(t,e,n,a){var r,i=a&&a(e)?4:0;return n?(i|=2,r=ti(t[3],e)):r=ti(t[2],e),Or(i,r=r>0?r+1:0,0)}function $r(t,e,n){return!(2&t)&&e&&n&&4&t?e.toString()!==n.toString():e!==n}var Zr=function(){function t(t,e,n){this._element=e,this._type=n,this._values={},this._dirty=!1,this._factory=t}return t.prototype.setValue=function(t,e){this._values[t]!==e&&(this._values[t]=e,this._dirty=!0)},t.prototype.buildPlayer=function(t,e){if(this._dirty){var n=this._factory.fn(this._element,this._type,this._values,e,t||null);return this._values={},this._dirty=!1,n}},t}();function Xr(t,e){return 65535&t[e+3]}function Jr(t,e){var n=Qr(t[1],e);return n>0?n/4:0}function Qr(t,e){for(var n=0;n<t.length;n+=4)if(t[n]===e)return n;return-1}function ti(t,e){for(var n=1;n<t.length;n+=2)if(t[n]===e)return n;return-1}function ei(t,e){var n=t[1];return n[4*e+3]||n[3]||null}function ni(t,e,n){t[1][4*e+2]=n}function ai(t){var e=t[6];if(null==e){e="";for(var n=t[3],a=1;a<n.length;a+=2)n[a+1]&&(e+=(e.length?" ":"")+n[a]);t[6]=e}return e}var ri=Promise.resolve(null);function ii(t){var e=t[vt];if(e.firstTemplatePass=!1,fn(!1),!rn(t)){var n=un();ze(t,e,n),function(t){for(var e=ja(t);null!==e;e=e[Tt])if(e.length<jt&&-1===e[qt])for(var n=e,a=0;a<n[Ft].length;a++){var r=n[Ft][a];ci(r,r[vt],r[It])}}(t),function(t){if(null!=t.contentQueries)for(var e=0;e<t.contentQueries.length;e+=2){var n=t.contentQueries[e];t.data[n].contentQueriesRefresh(n-jt,t.contentQueries[e+1])}}(e),Ye(t,e.contentHooks,e.contentCheckHooks,n),function(t,e){if(t.expandoInstructions){var n=e[Ct]=t.expandoStartIndex;gn(n);for(var a=-1,r=-1,i=0;i<t.expandoInstructions.length;i++){var o=t.expandoInstructions[i];if("number"==typeof o){if(o<=0){r=-o;var s=t.expandoInstructions[++i];a=n+=Ut+s}else n+=o;gn(n)}else null!==o&&(e[Ct]=n,o(2,Jt(e[a]),r)),a++}}}(e,t)}!function(t){if(null!=t)for(var e=0;e<t.length;e++)void 0,void 0,16==(16&(n=ne(t[e],Xe()))[_t])&&12&n[_t]&&(function(t){for(var e=t[vt],n=t.length;n<e.blueprint.length;n++)t[n]=e.blueprint[n]}(n),vo(n,n[It]));var n}(e.components)}function oi(t,e,n,a,r,i,o,s){var u=e.blueprint.slice();return u[_t]=51|a,u[xt]=u[Mt]=t,u[It]=n,u[Rt]=r||t&&t[Rt],u[Nt]=i||t&&t[Nt],u[At]=o||t&&t[At]||null,u[Dt]=s||t&&t[Dt]||null,u}function si(t,e,n,a,r){var i=Xe(),o=i[vt],s=t+jt;i[s]=n;var u=o.data[s];null==u&&(u=o.data[s]=Pi(i,e,s,a,r,null));var l=Qe(),c=nn();return l&&(!c||null!=l.child||null===u.parent&&2!==l.type?c||(l.next=u):l.child=u),null==o.firstChild&&(o.firstChild=u),tn(u),an(!0),u}function ui(t,e){return null==e[vt].node&&(e[vt].node=Pi(e,2,t,null,null,null)),e[Ot]=e[vt].node}function li(t){var e=t[vt];e.firstTemplatePass&&(e.expandoStartIndex++,e.blueprint.push(null),e.data.push(null),t.push(null))}function ci(t,e,n){var a,r=nn(),i=Qe();if(an(!0),tn(null),128&t[_t])go(le(t));else try{an(!0),tn(null),a=mn(t,t[Ot]),bi(),e.template(pi(t),n),t[vt].firstTemplatePass=!1,fn(!1),ii(t)}finally{yn(a),an(r),tn(i)}}function di(t){return void 0===t&&(t=1),bn(t)}function fi(t,e,n){var a=t[Rt],r=mn(t,t[Ot]),i=!un();try{i&&a.begin&&a.begin(),rn(t)&&(n&&(bi(),n(1,e)),ii(t),t[_t]&=-2),n&&n(2,e),ii(t)}finally{i&&a.end&&a.end(),yn(r)}}function pi(t){return rn(t)?1:2}var hi=null;function gi(){hi="http://www.w3.org/2000/svg"}function mi(){hi="http://www.w3.org/1998/MathML/"}function bi(){hi=null}function yi(t,e,n,a){xi(t,e,n,a),Di()}function vi(t,e,n){var a=Xe(),r=a[vt],i=a[Nt].createComment("");Ba(i,si(t,4,i,"ng-container",e||null),a),wi(r,a,n),Hn(i,a)}function _i(){var t=Qe(),e=Xe(),n=e[vt];nn()?an(!1):tn(t=t.parent);var a=e[wt];a&&(e[wt]=a.addNode(t)),Me(n,t)}function xi(t,e,n,a){var r,i,o,s=Xe(),u=s[vt],l=Ti(e),c=si(t,3,l,e,n||null);if(n&&(u.firstTemplatePass&&!c.stylingTemplate&&function(t){for(var e=0;e<t.length;e++){var n=t[e];if(1==n||2==n)return!0}return!1}(n)&&(c.stylingTemplate=hr(n)),Ci(l,n)),Ba(l,c,s),wi(u,s,a),0===xe&&Hn(l,s),xe++,u.firstTemplatePass){var d=zo(c);d&&d.hasOwnProperty("class")&&(c.flags|=8)}c.stylingTemplate&&0==(8&c.flags)&&(mr(r=l,o=s[Nt],(i=c.stylingTemplate)[3],!0),mr(r,o,i[2],!1))}function Ti(t,e){var n=e||Xe()[Nt];return wa(n)?n.createElement(t,hi):null===hi?n.createElement(t):n.createElementNS(hi,t)}function wi(t,e,n,a){if(void 0===a&&(a=te),Ge){var r=Qe();dn()&&function(t,e,n,a,r){var i=r?{"":-1}:null;if(n){Xi(a,t.data.length,n.length);for(var o=0;o<n.length;o++)(s=n[o]).providersResolver&&s.providersResolver(s);for(Ui(t,a,n.length),o=0;o<n.length;o++){var s,u=t.data.length;Ji(t,e,s=n[o],s.factory),Zi(t.data.length-1,s,i),Pe(u,s.onInit,s.doCheck,t)}}i&&function(t,e,n){if(e)for(var a=t.localNames=[],r=0;r<e.length;r+=2){var i=n[e[r+1]];if(null==i)throw new Error("Export of name '"+e[r+1]+"' not found!");a.push(e[r],i)}}(a,r,i)}(t,e,function(t,e,n){var a=t.directiveRegistry,r=null;if(a)for(var i=0;i<a.length;i++){var o=a[i];er(n,o.selectors,!1)&&(r||(r=[]),kn(wn(Qe(),e),e,o.type),ie(o)?(1&n.flags&&pa(n),n.flags=1,r.unshift(o)):r.push(o))}return r}(t,e,r),r,n||null),function(t,e,n){var a=n.directiveStart,r=n.directiveEnd;!dn()&&a<r&&wn(n,e);for(var i=a;i<r;i++){var o=t.data[i];ie(o)&&Qi(e,n,o),Wi(e,En(t.data,e,i,n),o,i)}}(t,e,r),function(t,e,n){for(var a=n.directiveStart,r=n.directiveEnd,i=t.expandoInstructions,o=dn(),s=a;s<r;s++){var u=t.data[s],l=e[s];if(u.hostBindings){var c=i.length;Ke(u),u.hostBindings(1,l,n.index-jt),Ke(null),c===i.length&&o&&i.push(u.hostBindings)}else o&&i.push(null)}}(t,e,r),function(t,e,n){var a=e.localNames;if(a)for(var r=e.index+1,i=0;i<a.length;i+=2){var o=a[i+1],s=-1===o?n(e,t):t[o];t[r++]=s}}(e,r,a)}}function Si(t,e,n,a,r,i){return t.ngPrivateData||(t.ngPrivateData=Oi(-1,t,e,n,a,r,i))}function Oi(t,e,n,a,r,i,o){var s=jt+n,u=s+a,l=function(t,e){var n=new Array(e).fill(null,0,t).fill(ha,t);return n[Lt]=-1,n[Ct]=t,n}(s,u);return l[vt]={id:t,blueprint:l,template:e,viewQuery:o,node:null,data:l.slice(),childIndex:-1,bindingStartIndex:s,expandoStartIndex:u,expandoInstructions:null,firstTemplatePass:!0,initHooks:null,checkHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,pipeDestroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:"function"==typeof r?r():r,pipeRegistry:"function"==typeof i?i():i,firstChild:null}}function Ci(t,e){for(var n=Xe()[Nt],a=wa(n),r=0;r<e.length;){var i=e[r++];if("number"==typeof i){if(0!==i)break;var o=e[r++],s=e[r++],u=e[r++];a?n.setAttribute(t,s,u,o):t.setAttributeNS(o,s,u)}else u=e[r++],i!==xa&&(lr(i)?a&&n.setProperty(t,i,u):a?n.setAttribute(t,i,u):t.setAttribute(i,u))}}function ki(t,e){var n=t.createRenderer(null,null);return"string"==typeof e?wa(n)?n.selectRootElement(e):n.querySelector(e):e}function Ii(t,e,n){void 0===n&&(n=!1);var a=Xe(),r=Qe(),i=a[vt],o=i.firstTemplatePass&&(i.cleanup||(i.cleanup=[]));if(3===r.type){var s=te(r,a),u=a[Nt],l=(m=Ho(a)).length,c=n;if(wa(u)){var d=u.listen(s,t,e);m.push(e,d),c=l+1}else{var f=function(t){return function(e){!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}(e);s.addEventListener(t,f,n),m.push(f)}o&&o.push(t,r.index,l,c)}void 0===r.outputs&&(r.outputs=ji(r,1));var p,h=r.outputs;if(h&&(p=h[t])){var g=p.length;if(g)for(var m=Ho(a),b=0;b<g;b+=2){var y=a[p[b]][p[b+1]].subscribe(e),v=m.length;m.push(e,y),o&&o.push(t,r.index,v,-(v+1))}}}function Di(){var t=Qe();nn()?an(!1):tn(t=t.parent);var e=Xe(),n=e[wt];if(n&&(e[wt]=n.addNode(t)),Me(Xe()[vt],t),xe--,pr(t)){var a=ur(t.index,e);Mi(e,t.inputs.class,ai(a))}}function Ri(t,e,n,a){if(n!==ha){var r=Xe(),i=r[Nt],o=Qt(t,r);if(null==n)wa(i)?i.removeAttribute(o,e):o.removeAttribute(e);else{var s=null==a?Zt(n):a(n);wa(i)?i.setAttribute(o,e,s):o.setAttribute(e,s)}}}function Ni(t,e,n,a,r){Li(t,e,n,a,r)}function Ai(t,e,n,a,r){Li(t,e,n,a,r,Ei)}function Ei(t,e){return e[t.index][Nt]}function Li(t,e,n,a,r,i){if(n!==ha){var o,s,u=Xe(),l=Qt(t,u),c=ee(t,u);if(!r&&(o=zo(c))&&(s=o[e]))Mi(u,s,n),re(c)&&function(e,n){var a=ne(t+jt,e);4&a[_t]||(a[_t]|=8)}(u);else if(3===c.type){var d=i?i(c,u):u[Nt];n=null!=a?a(n):n,wa(d)?d.setProperty(l,e,n):lr(e)||(l.setProperty?l.setProperty(e,n):l[e]=n)}}}function Pi(t,e,n,a,r,i){var o=Qe(),s=nn()?o:o&&o.parent,u=s&&t&&s!==t[Ot]?s:null;return{type:e,index:n,injectorIndex:u?u.injectorIndex:-1,directiveStart:-1,directiveEnd:-1,flags:0,providerIndexes:0,tagName:a,attrs:r,localNames:null,initialInputs:void 0,inputs:void 0,outputs:void 0,tViews:i,next:null,child:null,parent:u,detached:null,stylingTemplate:null,projection:null}}function Mi(t,e,n){for(var a=0;a<e.length;a+=2)t[e[a]][e[a+1]]=n}function ji(t,e){var n=Xe()[vt],a=null,r=t.directiveStart,i=t.directiveEnd;if(i>r)for(var o=0===e,s=n.data,u=r;u<i;u++){var l=s[u],c=o?l.inputs:l.outputs;for(var d in c)if(c.hasOwnProperty(d)){var f=c[d];(a=a||{}).hasOwnProperty(d)?a[d].push(u,f):a[d]=[u,f]}}return a}function qi(t,e,n,a){var r=Qe();r.stylingTemplate||(r.stylingTemplate=sr()),function(t,e,n,a,r,i){if(!(32&t[0])){var o=function(t,e,n){var a,r=t[1],i=t[4].length,o=Qr(r,e);if(-1===o)a=r.length/4,r.push(e,i,!1,n||null);else{if(r[o+1]>=0)return-1;a=o/4,r[o+1]=i,r[o+3]=n||null}return a}(t,e,r);if(-1!==o){var s=t[4],u=s[1],l=s[0],c=4*l,d=9+c,f=d+4*u,p=f+c,h=s.length;s.push(a?a.length:0,n?n.length:0);var g=0,m=[];if(a&&a.length)for(var b=0;b<a.length;b++){var y=a[b];-1==(x=br(t,y,9,d))&&(x=d+g,g+=4,m.push(y)),s.push(x)}var v=[];if(n&&n.length)for(var _=0;_<n.length;_++){var x,T=n[_];-1==(x=br(t,T,d,f))?(x=f+g,g+=4,v.push(T)):x+=4*m.length,s.push(x)}var w=2;if(m.length)for(;w<h;){var S=s[w+0],O=s[w+1];if(O)for(var C=w+2+S,k=C;k<C+O;k++)s[k]+=4*m.length;w+=2+(S+O)}for(var I=v.length+m.length,D=9;D<t.length;D+=4){var R=D>=f,N=D>=(R?p:d),A=qr(t,D),E=kr(A),L=Ir(A);jr(t,D,Or(A,E,L+=R?N?4*m.length:0:4*I+4*(N?m.length:0)))}for(var P=0;P<4*m.length;P++)t.splice(p,0,null),t.splice(d,0,null),d++,f++,p+=2;for(var M=0;M<4*v.length;M++)t.splice(f,0,null),t.push(null),f++,p++;for(var j=t[3],q=t[2],F=0;F<I;F++){var z=F>=m.length,Y=z?F-m.length:F,H=z?v[Y]:m[Y],G=void 0,V=void 0;z?(G=p+4*(u+Y),V=d+4*(u+Y)):(G=f+4*(l+Y),V=9+4*(l+Y));var B=z?j:q,U=ti(B,H);-1===U?(U=B.length+1,B.push(H,!z&&null)):U+=1;var W=Kr(t,H,z,r||null);jr(t,V,Or(W,U,G)),Rr(t,V,H),Nr(t,V,null),Lr(t,V,0,o),jr(t,G,Or(W,U,V)),Rr(t,G,H),Nr(t,G,null),Lr(t,G,0,o)}s[1]=u+v.length,s[0]=l+m.length,jr(t,0,Or(0,0,f)|(i?16:0))}}}(r.stylingTemplate,a||null,t,e,n,pr(r))}function Fi(t,e){var n=Qe();n.stylingTemplate||(n.stylingTemplate=hr(e)),function(t,e,n){var a=t[1];if(-1==Qr(a,n)){a.push(n,-1,!1,null);for(var r=null,i=null,o=-1,s=0;s<e.length;s++){var u=e[s];"number"==typeof u?o=u:1==o?gr(r=r||t[3],u,!0):2==o&&gr(i=i||t[2],u,e[++s])}}}(n.stylingTemplate,e,t)}function zi(t,e){var n=Xe(),a=0!=(2&n[_t]);(function(t,n,a,r,i,o,s){var u=0,l=Jr(t,e||null);if(function(t){return Tr(t,0)}(t)&&function(t,e){return t[1][4*l+2]}(t)){for(var c=8&t[0],d=t[5],f=Dr(t),p=Yr(t),h=!1,g=9;g<t.length;g+=4)if(Tr(t,g)){var m=qr(t,g),b=Xr(t,g);if(l!==b){h=!0;continue}var y=zr(t,g),v=Fr(t,g),_=4&m?ei(t,b):null,x=Mr(t,g),T=!!(2&m),w=!T||!p,S=v;g<f&&!Wr(S,T)&&(S=Fr(t,Ir(m))),T||Wr(S,T)||!w||(S=Cr(t,m)),(!r||S)&&(T?_r(d,y,!!S,n,null,x):vr(d,y,S,n,_,null,x)),xr(t,g,!1)}if(c){var O=Array.isArray(a)?le(a):a,C=dr(t),k=C[0];for(g=1;g<k;g+=2){var I=C[g],D=g+1,R=C[D];if(I){var N=I.buildPlayer(R,r);void 0!==N&&(null!=N&&cr(C,O,d,N,D)&&u++,R&&R.destroy())}else R&&R.destroy()}Gr(t,!1)}ni(t,l,!1),Hr(t,h)}return u})(ur(t+jt,n),n[Nt],n,a)>0&&ho(le(n),2)}function Yi(t,e,n,a,r){var i=null;null!==n&&(i=a?Zt(n)+a:n),yr(ur(t+jt,Xe()),e,i,!1,r)}function Hi(t,e,n,a){var r=n instanceof rr?n:!!n;yr(ur(t+jt,Xe()),e,r,!0,a)}function Gi(t,e,n,a){if(null!=a)return function(t,e,n,a){throw new Error("unimplemented. Should not be needed by ViewEngine compatibility")}();var r=Xe(),i=ee(t,r),o=ur(t+jt,r);if(pr(i)&&e!==ha){var s=ai(o);Mi(r,i.inputs.class,(s.length?s+" ":"")+e)}else!function(t,e,n,a){n=n||null;var r=Jr(t,null),i=t[5],o=e instanceof rr?new Zr(e,i,1):null,s=n instanceof rr?new Zr(n,i,2):null,u=o?e.value:e,l=s?n.value:n,c=Yr(t)||u===ha||u===t[6],d=l===ha||l===t[7];if(!c||!d){t[6]=u,t[7]=l;var f=it,p=!1,h=!1,g=o?1:0;Ar(t,o,1)&&(Er(t,o,1),h=!0);var m=s?3:0;Ar(t,s,3)&&(Er(t,s,3),h=!0),c||("string"==typeof u?(f=u.split(/\s+/),p=!0):f=u?Object.keys(u):it);for(var b=u||rt,y=l?Object.keys(l):it,v=l||rt,_=y.length,x=!1,T=Dr(t),w=0,S=y.length+f.length;T<t.length&&w<S;){if(!(M=w>=_)&&!d||M&&!c){var O=M?w-_:w,C=M?f[O]:y[O],k=M?!!p||b[C]:v[C],I=M?g:m;if((j=zr(t,T))===C){var D=Fr(t,T),R=qr(t,T);if(Lr(t,T,I,r),$r(R,D,k)){Nr(t,T,k),h=h||!!I;var N=Cr(t,R);(null!=D||$r(R,N,k))&&(xr(t,T,!0),x=!0)}}else{var A=Vr(t,C,T);if(A>0){var E=Fr(t,A),L=qr(t,A);Br(t,T,A),$r(L,E,k)&&(N=Cr(t,L),Nr(t,T,k),(null!=E||$r(L,N,k))&&(xr(t,T,!0),h=h||!!I,x=!0))}else h=h||!!I,Ur(t,T,M,C,Kr(t,C,M,ei(t,r)),k,r,I),x=!0}}T+=4,w++}for(;T<t.length;)(!(M=2==(2&(R=qr(t,T))))&&!d||M&&!c)&&Wr(D=Fr(t,T),M)&&(xr(t,T,!0),Nr(t,T,null),Lr(t,T,I=M?g:m,r),x=!0),T+=4;for(var P=ei(t,r);w<S;){var M;if(!(M=w>=_)&&!d||M&&!c){O=M?w-_:w;var j=M?f[O]:y[O],q=(D=M?!!p||b[j]:v[j],R=1|Kr(t,j,M,P),I=M?g:m,t.length);t.push(R,j,D,0),Lr(t,q,I,r),x=!0}w++}x&&(Hr(t,!0),ni(t,r,!0)),h&&Gr(t,!0)}}(o,e,n)}function Vi(t,e){var n=Xe(),a=Aa(e,n[Nt]),r=si(t,3,a,null,null);an(!1),Ba(a,r,n)}function Bi(t,e){if(e!==ha){var n=Xe(),a=Qt(t,n),r=n[Nt];wa(r)?r.setValue(a,Zt(e)):a.textContent=Zt(e)}}function Ui(t,e,n){var a=-(e.index-jt),r=t.data.length-(65535&e.providerIndexes);(t.expandoInstructions||(t.expandoInstructions=[])).push(a,r,n)}function Wi(t,e,n,a){var r=Qe();Ki(t,r,e,n),r&&r.attrs&&function(t,e,a,i){var o=r.initialInputs;(void 0===o||t>=o.length)&&(o=function(t,e,n){var a=n.initialInputs||(n.initialInputs=[]);a[t]=null;for(var r=n.attrs,i=0;i<r.length;){var o=r[i];if(3===o)break;if(0!==o){var s=e[o],u=r[i+1];void 0!==s&&(a[t]||(a[t]=[])).push(s,u),i+=2}else i+=4}return a}(t,n.inputs,r));var s=o[t];if(s)for(var u=0;u<s.length;u+=2)e[s[u]]=s[u+1]}(a,e),n.contentQueries&&n.contentQueries(a),ie(n)&&(ne(r.index,t)[It]=e)}function Ki(t,e,n,a){var r=te(e,t);Hn(n,t),r&&Hn(r,t),null!=a.attributes&&3==e.type&&Ci(r,a.attributes)}function $i(t){var e=Xe()[vt];(e.components||(e.components=[])).push(t.index)}function Zi(t,e,n){n&&(e.exportAs&&(n[e.exportAs]=t),e.template&&(n[""]=t))}function Xi(t,e,n){t.flags=1&t.flags,t.directiveStart=e,t.directiveEnd=e+n,t.providerIndexes=e}function Ji(t,e,n,a){t.data.push(n);var r=new Kt(a,ie(n),null);t.blueprint.push(r),e.push(r)}function Qi(t,e,n){var a=te(e,t),r=Si(n.template,n.consts,n.vars,n.directiveDefs,n.pipeDefs,n.viewQuery),i=fo(t,e.index,oi(t,r,null,n.onPush?8:4,t[Rt],t[Rt].createRenderer(a,n)));i[Ot]=e,i[St]=t[e.index],t[e.index]=i,dn()&&$i(e)}function to(t,e,n,a,r){return[r?-1:0,[],n,null,null,t,a,Ya(e,n)]}function eo(t,e,n,a,r,i,o,s){var u=Xe(),l=u[vt],c=ao(t,r||null,i||null);dn()&&(c.tViews=Oi(-1,e,n,a,l.directiveRegistry,l.pipeRegistry,null)),wi(l,u,o,s);var d=u[wt],f=Qe();Hn(te(f,u),u),d&&(u[wt]=d.addNode(f)),Me(l,c),an(!1)}function no(t){var e=ao(t,null,null);dn()&&(e.tViews=[]),an(!1)}function ao(t,e,n){var a=Xe(),r=t+jt,i=a[Nt].createComment(""),o=si(t,0,i,e,n),s=a[r]=to(a[r],o,a,i);Ba(i,o,a),fo(a,t+jt,s);var u=a[wt];return u&&(s[wt]=u.container()),o}function ro(t){var e=Xe(),n=e[vt];tn(Xt(n.data,t)),an(!0),e[t+jt][qt]=0,ze(e,n,un())}function io(){var t=Qe();nn()?an(!1):tn(t=t.parent);for(var e=Xe()[t.index],n=e[qt];n<e[Ft].length;)Ma(e,t,n)}function oo(t,e,n){var a=Xe(),r=Qe(),i=2===r.type?r.parent:r,o=a[i.index],s=function(t,e,n,a){for(var r=t[Ft],i=n;i<r.length;i++){var o=r[i][vt].id;if(o===a)return r[i];if(!(o<a))break;Ma(t,e,i)}return null}(o,i,o[qt],t);return s?(an(!0),mn(s,s[vt].node)):(s=oi(a,function(t,e,n,a){var r=Xe()[vt],i=a.tViews;return(t>=i.length||null==i[t])&&(i[t]=Oi(t,null,e,n,r.directiveRegistry,r.pipeRegistry,null)),i[t]}(t,e,n,i),null,4),o[wt]&&(s[wt]=o[wt].createView()),ui(t,s),mn(s,s[vt].node)),o&&(rn(s)&&La(s,o,a,o[qt],-1),o[qt]++),rn(s)?3:2}function so(){var t=Xe(),e=t[Ot];rn(t)&&(ii(t),t[_t]&=-2),ii(t),yn(t[xt]),tn(e),an(!1)}function uo(t,e){var n=ye(Xe())[Ot];if(!n.projection)for(var a=n.projection=new Array(t?t.length+1:1).fill(null),r=a.slice(),i=n.child;null!==i;){var o=t?nr(i,t,e):0,s=i.next;r[o]?r[o].next=i:(a[o]=i,i.next=null),r[o]=i,i=s}}var lo=[];function co(t,e,n){void 0===e&&(e=0);var a=Xe(),r=si(t,1,null,null,n||null);null===r.projection&&(r.projection=e),an(!1);for(var i=ye(a),o=i[Ot].projection[e],s=i[xt],u=-1;o;){if(1===o.type){var l=ye(s),c=l[Ot].projection[o.projection];if(c){lo[++u]=o,lo[++u]=s,o=c,s=l[xt];continue}}else o.flags|=2,$a(o,r,a,s);null===o.next&&s!==i[xt]&&(s=lo[u--],o=lo[u--]),o=o.next}}function fo(t,e,n){var a=t[vt],r=dn();return t[Et]?t[Et][Tt]=n:r&&(a.childIndex=e),t[Et]=n,n}function po(t){for(;t&&!(128&t[_t]);)t[_t]|=8,t=t[xt];t[_t]|=8,ho(t[It],1)}function ho(t,e){var n,a=0===t.flags;t.flags|=e,a&&t.clean==ri&&(t.clean=new Promise(function(t){return n=t}),t.scheduler(function(){if(1&t.flags&&(t.flags&=-2,go(t)),2&t.flags){t.flags&=-3;var e=t.playerHandler;e&&e.flushPlayers()}t.clean=ri,n(null)}))}function go(t){for(var e=0;e<t.components.length;e++){var n=t.components[e];fi(de(n),n)}}function mo(t){bo(Yn(t),t)}function bo(t,e){var n=t[Rt];n.begin&&n.begin(),rn(t)&&vo(t,e),vo(t,e),n.end&&n.end()}function yo(t){go(t[It])}function vo(t,e){var n=t[vt],a=mn(t,t[Ot]),r=n.template,i=n.viewQuery;try{bi(),function(e,n,a){e&&rn(t)&&e(1,a)}(i,0,e),r(pi(t),e),ii(t),function(e,n,a){e&&!rn(t)&&e(2,a)}(i,0,e)}finally{yn(a)}}function _o(t){po(Yn(t))}function xo(t){var e=Xe();return ba(e,e[Ct]++,t)?t:ha}function To(t){if(dn()){var e=Xe(),n=e[vt];!function(t,e,n){var 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,We,t),function(t,e,n){for(var a=0;a<n;a++)e.push(ha),t.blueprint.push(ha),t.data.push(null)}(n,e,t)}}function wo(t){for(var e=!1,n=Xe(),a=n[Ct],r=1;r<t.length;r+=2)ba(n,a++,t[r])&&(e=!0);if(n[Ct]=a,!e)return ha;var i=t[0];for(r=1;r<t.length;r+=2)i+=Zt(t[r])+t[r+1];return i}function So(t,e,n){var a=Xe(),r=ba(a,a[Ct],e);return a[Ct]+=1,r?t+Zt(e)+n:ha}function Oo(t,e,n,a,r){var i=Xe(),o=ya(i,i[Ct],e,a);return i[Ct]+=2,o?t+Zt(e)+n+Zt(a)+r:ha}function Co(t,e,n,a,r,i,o){var s=Xe(),u=va(s,s[Ct],e,a,i);return s[Ct]+=3,u?t+Zt(e)+n+Zt(a)+r+Zt(i)+o:ha}function ko(t,e,n,a,r,i,o,s,u){var l=Xe(),c=_a(l,l[Ct],e,a,i,s);return l[Ct]+=4,c?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u:ha}function Io(t,e,n,a,r,i,o,s,u,l,c){var d=Xe(),f=d[Ct],p=_a(d,f,e,a,i,s);return p=ba(d,f+4,l)||p,d[Ct]+=5,p?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(l)+c:ha}function Do(t,e,n,a,r,i,o,s,u,l,c,d,f){var p=Xe(),h=p[Ct],g=_a(p,h,e,a,i,s);return g=ya(p,h+4,l,d)||g,p[Ct]+=6,g?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(l)+c+Zt(d)+f:ha}function Ro(t,e,n,a,r,i,o,s,u,l,c,d,f,p,h){var g=Xe(),m=g[Ct],b=_a(g,m,e,a,i,s);return b=va(g,m+4,l,d,p)||b,g[Ct]+=7,b?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(l)+c+Zt(d)+f+Zt(p)+h:ha}function No(t,e,n,a,r,i,o,s,u,l,c,d,f,p,h,g,m){var b=Xe(),y=b[Ct],v=_a(b,y,e,a,i,s);return v=_a(b,y+4,l,d,p,g)||v,b[Ct]+=8,v?t+Zt(e)+n+Zt(a)+r+Zt(i)+o+Zt(s)+u+Zt(l)+c+Zt(d)+f+Zt(p)+h+Zt(g)+m:ha}function Ao(t,e){var n=Xe(),a=n[vt],r=t+jt;r>=a.data.length&&(a.data[r]=null),n[r]=e}function Eo(t){return Xt(on,t)}function Lo(t){return Xe()[Pt][t]}function Po(t){return Xt(Xe(),t)}function Mo(t,e){return void 0===e&&(e=ke.Default),t=J(t),Dn(Qe(),Xe(),t,e)}function jo(t){return In(Qe(),t)}function qo(t,e){var n=Xe(),a=n[vt],r=(n[Pt]||(n[Pt]=[])).push(t);if(dn()){var i=a.contentQueries||(a.contentQueries=[]);e!==(a.contentQueries.length?a.contentQueries[a.contentQueries.length-2]:-1)&&i.push(e,r-1)}}var Fo=ri;function zo(t){return t?(void 0===t.inputs&&(t.inputs=ji(t,0)),t.inputs):null}function Yo(){return Xe()}function Ho(t){return t[kt]||(t[kt]=[])}function Go(t){return t[vt].cleanup||(t[vt].cleanup=[])}function Vo(t,e){var n=Fn(t);if(n){var a=n.native,r=n.lView,i=function(t,e){if(!(e=e||Fn(a)))return null;var n=ur(e.nodeIndex,e.lView);return dr(n)||fr(n)}(0,n),o=Zn(r);cr(i,o,a,e,0,t),ho(o,2)}}function Bo(t){var e=Fn(t);if(!e)return[];var n=ur(e.nodeIndex,e.lView),a=n?dr(n):null;return a?function(t){for(var e=[],n=t[0],a=2;a<n;a+=2){var r=t[a];r&&e.push(r)}for(a=n;a<t.length;a++)e.push(t[a]);return e}(a):[]}var Uo="ng",Wo=!1;function Ko(){Wo||(Wo=!0,$o("getComponent",Wn),$o("getContext",Kn),$o("getListeners",ra),$o("getViewComponent",$n),$o("getHostElement",ea),$o("getInjector",Jn),$o("getRootComponents",Xn),$o("getDirectives",Qn),$o("getPlayers",Bo),$o("markDirty",_o))}function $o(t,e){if(G){var n=G[Uo];n||(n=G[Uo]={}),n[t]=e}}function Zo(t,e){void 0===e&&(e={});var n=e.rendererFactory||Sa,a=e.sanitizer||null,r=gt(t);r.type!=t&&(r.type=t);var i,o=ki(n,e.host||r.selectors[0][0]),s=r.onPush?136:132,u=Qo(e.scheduler,e.playerHandler),l=n.createRenderer(o,r),c=oi(null,Oi(-1,null,1,0,null,null,null),u,s,n,l,void 0,e.injector||null),d=mn(c,null);try{n.begin&&n.begin(),i=Jo(Xo(o,r,c,n,l,a),r,c,u,e.hostFeatures||null),ii(c),c[_t]&=-2,ii(c)}finally{yn(d),n.end&&n.end()}return i}function Xo(t,e,n,a,r,i){Be=!1,Ve=null,xe=0,Ge=!0;var o=n[vt],s=oi(n,Si(e.template,e.consts,e.vars,e.directiveDefs,e.pipeDefs,e.viewQuery),null,e.onPush?8:4,a,r,i),u=si(0,3,t,null,null);return o.firstTemplatePass&&(kn(wn(u,n),n,e.type),u.flags=1,Xi(u,n.length,1),$i(u)),s[St]=n[jt],s[Ot]=u,n[jt]=s}function Jo(t,e,n,a,r){var i=n[vt],o=function(t,e,n){var a=Qe();t.firstTemplatePass&&(n.providersResolver&&n.providersResolver(n),Ui(t,a,1),Ji(t,e,n,n.factory));var r=En(t.data,e,e.length-1,a);return Ki(e,a,r,n),r}(i,n,e);if(a.components.push(o),t[It]=o,r&&r.forEach(function(t){return t(o,e)}),i.firstTemplatePass&&e.hostBindings){var s=Qe();Ke(e),e.hostBindings(1,o,s.index-jt),Ke(null)}return o}function Qo(t,e){return{components:[],scheduler:t||me,clean:Fo,playerHandler:e||null,flags:0}}function ts(t,e){var n=de(t)[vt],a=n.data.length-1;Pe(a,e.onInit,e.doCheck,n),Me(n,{directiveStart:a,directiveEnd:a+1})}function es(t){return function(t){return ue(t)[It]}(t).clean}function ns(t){return"function"==typeof t.template}function as(t){for(var e=Object.getPrototypeOf(t.type.prototype).constructor,n=function(){var n,r,i=void 0;if(ns(t))i=e.ngComponentDef||e.ngDirectiveDef;else{if(e.ngComponentDef)throw new Error("Directives cannot inherit Components");i=e.ngDirectiveDef}var o=e.ngBaseDef;if(o||i){var s=t;s.inputs=rs(t.inputs),s.declaredInputs=rs(t.declaredInputs),s.outputs=rs(t.outputs)}if(o&&(c(t.inputs,o.inputs),c(t.declaredInputs,o.declaredInputs),c(t.outputs,o.outputs)),i){var u=t.hostBindings,l=i.hostBindings;if(l&&(t.hostBindings=u?function(t,e,n){l(t,e,n),u(t,e,n)}:l),ns(t)&&ns(i)){var d=t.viewQuery,f=i.viewQuery;f&&(t.viewQuery=d?function(t,e){f(t,e),d(t,e)}:f)}var p=t.contentQueries,h=i.contentQueries;h&&(t.contentQueries=p?function(t){h(t),p(t)}:h);var g=t.contentQueriesRefresh,m=i.contentQueriesRefresh;m&&(t.contentQueriesRefresh=g?function(t,e){m(t,e),g(t,e)}:m),c(t.inputs,i.inputs),c(t.declaredInputs,i.declaredInputs),c(t.outputs,i.outputs),t.afterContentChecked=t.afterContentChecked||i.afterContentChecked,t.afterContentInit=t.afterContentInit||i.afterContentInit,t.afterViewChecked=t.afterViewChecked||i.afterViewChecked,t.afterViewInit=t.afterViewInit||i.afterViewInit,t.doCheck=t.doCheck||i.doCheck,t.onDestroy=t.onDestroy||i.onDestroy,t.onInit=t.onInit||i.onInit;var b=i.features;if(b)try{for(var y=Object(a.__values)(b),v=y.next();!v.done;v=y.next()){var _=v.value;_&&_.ngInherit&&_(t)}}catch(T){n={error:T}}finally{try{v&&!v.done&&(r=y.return)&&r.call(y)}finally{if(n)throw n.error}}return"break"}var x=e.prototype;x&&(t.afterContentChecked=t.afterContentChecked||x.afterContentChecked,t.afterContentInit=t.afterContentInit||x.afterContentInit,t.afterViewChecked=t.afterViewChecked||x.afterViewChecked,t.afterViewInit=t.afterViewInit||x.afterViewInit,t.doCheck=t.doCheck||x.doCheck,t.onDestroy=t.onDestroy||x.onDestroy,t.onInit=t.onInit||x.onInit),e=Object.getPrototypeOf(e)};e&&"break"!==n(););}function rs(t){return t===rt?{}:t===it?[]:t}var is="__ngOnChanges_";function os(t){var e=t.declaredInputs,n=t.inputs,a=t.type.prototype,r=function(t){if(e.hasOwnProperty(t)){for(var r=n[t],i=e[t],o=is+r,s=void 0,u=a;!s&&u&&Object.getPrototypeOf(u)!==Object.getPrototypeOf(Object.prototype);)s=Object.getOwnPropertyDescriptor(u,r),u=Object.getPrototypeOf(u);var l=s&&s.set;Object.defineProperty(a,r,{get:s&&s.get||(l?void 0:function(){return this[o]}),set:function(t){var e=this[is];e||(e={},Object.defineProperty(this,is,{value:e,writable:!0}));var n=!this.hasOwnProperty(o),a=e[i];a?a.currentValue=t:e[i]=new ca(this[o],t,n),n?Object.defineProperty(this,o,{value:t,writable:!0}):this[o]=t,l&&l.call(this,t)},configurable:!1})}};for(var i in e)r(i);null!=t.onInit&&(t.onInit=ss(t.onInit)),t.doCheck=ss(t.doCheck)}function ss(t){return function(){var e=this[is];null!=e&&(this.ngOnChanges(e),this[is]=null),t&&t.apply(this)}}function us(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}os.ngInherit=!0;var ls="__source",cs=new Object,ds=cs,fs=new w("INJECTOR"),ps=function(){function t(){}return t.prototype.get=function(t,e){if(void 0===e&&(e=cs),e===cs)throw new Error("NullInjectorError: No provider for "+$(t)+"!");return e},t}(),hs=function(){function t(){}return t.create=function(t,e){return Array.isArray(t)?new Os(t,e):new Os(t.providers,t.parent,t.name||null)},t.THROW_IF_NOT_FOUND=cs,t.NULL=new ps,t.ngInjectableDef=v({providedIn:"any",factory:function(){return Ae(fs)}}),t.__NG_ELEMENT_ID__=function(){return ms()},t}(),gs=function(){return t=Qe(),new Mn(t,Xe());var t},ms=us,bs=function(t){return t},ys=[],vs=bs,_s=function(){return Array.prototype.slice.call(arguments)},xs=l({provide:String,useValue:l}),Ts=hs.NULL,ws=/\n/gm,Ss="\u0275",Os=function(){function t(t,e,n){void 0===e&&(e=Ts),void 0===n&&(n=null),this.parent=e,this.source=n;var a=this._records=new Map;a.set(hs,{token:hs,fn:bs,deps:ys,value:this,useNew:!1}),a.set(fs,{token:fs,fn:bs,deps:ys,value:this,useNew:!1}),function t(e,n){if(n)if((n=J(n))instanceof Array)for(var a=0;a<n.length;a++)t(e,n[a]);else{if("function"==typeof n)throw Is("Function/Class not supported",n);if(!n||"object"!=typeof n||!n.provide)throw Is("Unexpected provider",n);var r=J(n.provide),i=function(t){var e=function(t){var e=ys,n=t.deps;if(n&&n.length){e=[];for(var a=0;a<n.length;a++){var r=6;if((u=J(n[a]))instanceof Array)for(var i=0,o=u;i<o.length;i++){var s=o[i];s instanceof we||s==we?r|=1:s instanceof Oe||s==Oe?r&=-3:s instanceof Se||s==Se?r&=-5:u=s instanceof Te?s.token:J(s)}e.push({token:u,options:r})}}else if(t.useExisting){var u;e=[{token:u=J(t.useExisting),options:6}]}else if(!(n||xs in t))throw Is("'deps' required",t);return e}(t),n=bs,a=ys,r=!1,i=J(t.provide);if(xs in t)a=t.useValue;else if(t.useFactory)n=t.useFactory;else if(t.useExisting);else if(t.useClass)r=!0,n=J(t.useClass);else{if("function"!=typeof i)throw Is("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){var o=e.get(r);if(o){if(o.fn!==_s)throw Cs(r)}else e.set(r,o={token:n.provide,deps:[],useNew:!1,fn:_s,value:ys});o.deps.push({token:r=n,options:6})}var s=e.get(r);if(s&&s.fn==_s)throw Cs(r);e.set(r,i)}}(a,t)}return t.prototype.get=function(t,e,n){void 0===n&&(n=ke.Default);var r=this._records.get(t);try{return function t(e,n,r,i,o,s){try{return function(e,n,r,i,o,s){var u,l;if(!n||s&ke.SkipSelf)s&ke.Self||(l=i.get(e,o,ke.Default));else{if((l=n.value)==vs)throw Error(Ss+"Circular dependency");if(l===ys){n.value=vs;var c=n.useNew,d=n.fn,f=n.deps,p=ys;if(f.length){p=[];for(var h=0;h<f.length;h++){var g=f[h],m=g.options,b=2&m?r.get(g.token):void 0;p.push(t(g.token,b,r,b||4&m?i:Ts,1&m?null:hs.THROW_IF_NOT_FOUND,ke.Default))}}n.value=l=c?new((u=d).bind.apply(u,Object(a.__spread)([void 0],p))):d.apply(void 0,p)}}return l}(e,n,r,i,o,s)}catch(u){throw u instanceof Error||(u=new Error(u)),(u.ngTempTokenPath=u.ngTempTokenPath||[]).unshift(e),n&&n.value==vs&&(n.value=ys),u}}(t,r,this._records,this.parent,e,n)}catch(o){var i=o.ngTempTokenPath;throw t[ls]&&i.unshift(t[ls]),o.message=ks("\n"+o.message,i,this.source),o.ngTokenPath=i,o.ngTempTokenPath=null,o}},t.prototype.toString=function(){var t=[];return this._records.forEach(function(e,n){return t.push($(n))}),"StaticInjector["+t.join(", ")+"]"},t}();function Cs(t){return Is("Cannot mix multi providers and regular providers",t)}function ks(t,e,n){void 0===n&&(n=null),t=t&&"\n"===t.charAt(0)&&t.charAt(1)==Ss?t.substr(2):t;var a=$(e);if(e instanceof Array)a=e.map($).join(" -> ");else if("object"==typeof e){var r=[];for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];r.push(i+":"+("string"==typeof o?JSON.stringify(o):$(o)))}a="{"+r.join(", ")+"}"}return"StaticInjectorError"+(n?"("+n+")":"")+"["+a+"]: "+t.replace(ws,"\n  ")}function Is(t,e){return new Error(ks(t,e))}var Ds=new w("The presence of this token marks an injector as being the root injector."),Rs={},Ns={},As=[],Es=void 0;function Ls(){return void 0===Es&&(Es=new ps),Es}function Ps(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=null),e=e||Ls(),new Ms(t,n,e)}var Ms=function(){function t(t,e,n){var a=this;this.parent=n,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this.destroyed=!1;var r=[];zs([t],function(t){return a.processInjectorType(t,[],r)}),e&&zs(e,function(n){return a.processProvider(n,t,e)}),this.records.set(fs,Fs(void 0,this)),this.isRootInjector=this.records.has(Ds),this.injectorDefTypes.forEach(function(t){return a.get(t)})}return t.prototype.destroy=function(){this.assertNotDestroyed(),this.destroyed=!0;try{this.onDestroy.forEach(function(t){return t.ngOnDestroy()})}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}},t.prototype.get=function(t,e,n){void 0===e&&(e=ds),void 0===n&&(n=ke.Default),this.assertNotDestroyed();var a,r=De(this);try{if(!(n&ke.SkipSelf)){var i=this.records.get(t);if(void 0===i){var o=("function"==typeof(a=t)||"object"==typeof a&&a instanceof w)&&x(t);o&&this.injectableDefInScope(o)&&(i=Fs(js(t),Rs),this.records.set(t,i))}if(void 0!==i)return this.hydrate(t,i)}return(n&ke.Self?Ls():this.parent).get(t,e)}finally{De(r)}},t.prototype.assertNotDestroyed=function(){if(this.destroyed)throw new Error("Injector has already been destroyed.")},t.prototype.processInjectorType=function(t,e,n){var a=this;if(t=J(t)){var r=T(t),i=null==r&&t.ngModule||void 0,o=void 0===i?t:i,s=-1!==n.indexOf(o),u=void 0!==i&&t.providers||As;if(void 0!==i&&(r=T(i)),null!=r){if(this.injectorDefTypes.add(o),this.records.set(o,Fs(r.factory,Rs)),null!=r.imports&&!s){n.push(o);try{zs(r.imports,function(t){return a.processInjectorType(t,e,n)})}finally{}}var l=r.providers;if(null!=l&&!s){var c=t;zs(l,function(t){return a.processProvider(t,c,l)})}var d=t.ngModule;zs(u,function(t){return a.processProvider(t,d,u)})}}},t.prototype.processProvider=function(t,e,n){var a=Hs(t=J(t))?t:J(t&&t.provide),r=function(t,e,n){var a=qs(t,e,n);return Ys(t)?Fs(void 0,t.useValue):Fs(a,Rs)}(t,e,n);if(Hs(t)||!0!==t.multi){var i=this.records.get(a);if(i&&void 0!==i.multi)throw new Error("Mixed multi-provider for "+$(a))}else{var o=this.records.get(a);if(o){if(void 0===o.multi)throw new Error("Mixed multi-provider for "+a+".")}else(o=Fs(void 0,Rs,!0)).factory=function(){return Le(o.multi)},this.records.set(a,o);a=t,o.multi.push(t)}this.records.set(a,r)},t.prototype.hydrate=function(t,e){if(e.value===Ns)throw new Error("Cannot instantiate cyclic dependency! "+$(t));var n;return e.value===Rs&&(e.value=Ns,e.value=e.factory()),"object"==typeof e.value&&e.value&&"object"==typeof(n=e.value)&&null!=n&&n.ngOnDestroy&&"function"==typeof n.ngOnDestroy&&this.onDestroy.add(e.value),e.value},t.prototype.injectableDefInScope=function(t){return!!t.providedIn&&("string"==typeof t.providedIn?"any"===t.providedIn||"root"===t.providedIn&&this.isRootInjector:this.injectorDefTypes.has(t.providedIn))},t}();function js(t){var e=x(t);if(null===e){var n=T(t);if(null!==n)return n.factory;if(t instanceof w)throw new Error("Token "+$(t)+" is missing an ngInjectableDef definition.");if(t instanceof Function){var a=t.length;if(a>0){var r=new Array(a).fill("?");throw new Error("Can't resolve all parameters for "+$(t)+": ("+r.join(", ")+").")}return function(){return new t}}throw new Error("unreachable")}return e.factory}function qs(t,e,n){var r,i=void 0;if(Hs(t))return js(J(t));if(Ys(t))i=function(){return J(t.useValue)};else if((r=t)&&r.useExisting)i=function(){return Ae(J(t.useExisting))};else if(t&&t.useFactory)i=function(){return t.useFactory.apply(t,Object(a.__spread)(Le(t.deps||[])))};else{var o=J(t&&(t.useClass||t.provide));if(!o){var s="";throw e&&n&&(s=" - only instances of Provider and Type are allowed, got: ["+n.map(function(e){return e==t?"?"+t+"?":"..."}).join(", ")+"]"),new Error("Invalid provider for the NgModule '"+$(e)+"'"+s)}if(!t.deps)return js(o);i=function(){return new(o.bind.apply(o,Object(a.__spread)([void 0],Le(t.deps))))}}return i}function Fs(t,e,n){return void 0===n&&(n=!1),{factory:t,value:e,multi:n?[]:void 0}}function zs(t,e){t.forEach(function(t){return Array.isArray(t)?zs(t,e):e(t)})}function Ys(t){return t&&"object"==typeof t&&xs in t}function Hs(t){return"function"==typeof t}function Gs(t,e,n,a,r){if(t=J(t),Array.isArray(t))for(var i=0;i<t.length;i++)Gs(t[i],e,n,a,r);else{var o=Xe(),s=Hs(t)?t:J(t.provide),u=qs(t),l=Qe(),c=65535&l.providerIndexes,d=l.directiveStart,f=l.providerIndexes>>16;if(Hs(t)||!t.multi){var p=new Kt(u,r,Mo),h=Bs(s,e,r?c:c+f,d);-1==h?(kn(wn(l,o),o,s),e.push(s),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(p),o.push(p)):(n[h]=p,o[h]=p)}else{var g=Bs(s,e,c+f,d),m=Bs(s,e,c,c+f),b=m>=0&&n[m];r&&!b||!r&&!(g>=0&&n[g])?(kn(wn(l,o),o,s),p=function(t,e,n,a,r){var i=new Kt(t,n,Mo);return i.multi=[],i.index=e,i.componentProviders=0,Vs(i,r,a&&!n),i}(r?Ws:Us,n.length,r,a,u),!r&&b&&(n[m].providerFactory=p),e.push(s),l.directiveStart++,l.directiveEnd++,r&&(l.providerIndexes+=65536),n.push(p),o.push(p)):Vs(n[r?m:g],u,!r&&a),!r&&a&&b&&n[m].componentProviders++}}}function Vs(t,e,n){t.multi.push(e),n&&t.componentProviders++}function Bs(t,e,n,a){for(var r=n;r<a;r++)if(e[r]===t)return r;return-1}function Us(t,e,n,a){return Ks(this.multi,[])}function Ws(t,e,n,a){var r,i=this.multi;if(this.providerFactory){var o=this.providerFactory.componentProviders,s=En(e,n,this.providerFactory.index,a);Ks(i,r=s.slice(0,o));for(var u=o;u<s.length;u++)r.push(s[u])}else Ks(i,r=[]);return r}function Ks(t,e){for(var n=0;n<t.length;n++)e.push((0,t[n])());return e}function $s(t,e){return void 0===e&&(e=[]),function(n){n.providersResolver=function(n){return function(t,e,n){var a=Xe()[vt];if(a.firstTemplatePass){var r=ie(t);Gs(n,a.data,a.blueprint,r,!0),Gs(e,a.data,a.blueprint,r,!1)}}(n,t,e)}}}var Zs=function(){return function(){}}(),Xs=function(){return function(){}}();function Js(t){var e=Error("No component factory found for "+$(t)+". Did you add it to @NgModule.entryComponents?");return e[nu]=t,e}var Qs,tu,eu,nu="ngComponent",au=function(){function t(){}return t.prototype.resolveComponentFactory=function(t){throw Js(t)},t}(),ru=function(){function t(){}return t.NULL=new au,t}(),iu=function(){function t(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Map;for(var a=0;a<t.length;a++){var r=t[a];this._factories.set(r.componentType,r)}}return t.prototype.resolveComponentFactory=function(t){var e=this._factories.get(t);if(!e&&this._parent&&(e=this._parent.resolveComponentFactory(t)),!e)throw Js(t);return new ou(e,this._ngModule)},t}(),ou=function(t){function e(e,n){var a=t.call(this)||this;return a.factory=e,a.ngModule=n,a.selector=e.selector,a.componentType=e.componentType,a.ngContentSelectors=e.ngContentSelectors,a.inputs=e.inputs,a.outputs=e.outputs,a}return Object(a.__extends)(e,t),e.prototype.create=function(t,e,n,a){return this.factory.create(t,e,n,a||this.ngModule)},e}(Xs),su=function(){return function(){}}(),uu=function(){return function(){}}(),lu=function(){function t(t,e,n){this._context=e,this._componentIndex=n,this._appRef=null,this._viewContainerRef=null,this._tViewNode=null,this._lView=t}return Object.defineProperty(t.prototype,"rootNodes",{get:function(){return null==this._lView[St]?function t(e,n,a){for(var r=n.child;r;)a.push(te(r,e)),4===r.type&&t(e,r,a),r=r.next;return a}(this._lView,this._lView[Ot],[]):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._context?this._context:this._lookUpContext()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"destroyed",{get:function(){return 64==(64&this._lView[_t])},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._appRef)this._appRef.detachView(this);else if(this._viewContainerRef){var t=this._viewContainerRef.indexOf(this);t>-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}qa(this._lView)},t.prototype.onDestroy=function(t){var e,n;n=t,Ho(e=this._lView).push(n),e[vt].firstTemplatePass&&Go(e).push(e[kt].length-1,null)},t.prototype.markForCheck=function(){po(this._lView)},t.prototype.detach=function(){this._lView[_t]&=-17},t.prototype.reattach=function(){this._lView[_t]|=16},t.prototype.detectChanges=function(){bo(this._lView,this.context)},t.prototype.checkNoChanges=function(){!function(t){ln(!0);try{mo(t)}finally{ln(!1)}}(this.context)},t.prototype.attachToViewContainerRef=function(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t},t.prototype.detachFromAppRef=function(){this._appRef=null},t.prototype.attachToAppRef=function(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t},t.prototype._lookUpContext=function(){return this._context=this._lView[xt][this._componentIndex]},t}(),cu=function(t){function e(e){var n=t.call(this,e,null,-1)||this;return n._view=e,n}return Object(a.__extends)(e,t),e.prototype.detectChanges=function(){yo(this._view)},e.prototype.checkNoChanges=function(){!function(t){ln(!0);try{yo(t)}finally{ln(!1)}}(this._view)},Object.defineProperty(e.prototype,"context",{get:function(){return null},enumerable:!0,configurable:!0}),e}(lu);function du(t,e,n){return Qs||(Qs=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(t)),new Qs(te(e,n))}function fu(t,e,n,r){if(tu||(tu=function(t){function e(e,n,a,r,i,o){var s=t.call(this)||this;return s._declarationParentView=e,s.elementRef=n,s._tView=a,s._renderer=r,s._queries=i,s._injectorIndex=o,s}return Object(a.__extends)(e,t),e.prototype.createEmbeddedView=function(t,e,n,a,r){var i=function(t,e,n,a,r,i){var o=nn(),s=Qe();an(!0),tn(null);var u=oi(n,t,e,4);return u[Mt]=n,r&&(u[wt]=r.createView()),ui(-1,u),t.firstTemplatePass&&(t.node.injectorIndex=i),an(o),tn(s),u}(this._tView,t,this._declarationParentView,0,this._queries,this._injectorIndex);e&&La(i,e,a,r,n.index),ci(i,this._tView,t);var o=new lu(i,t,-1);return o._tViewNode=i[Ot],o},e}(t)),0===n.type){var i=r[n.index];return new tu(r,du(e,n,r),n.tViews,Xe()[Nt],i[wt],n.injectorIndex)}return null}function pu(t,e,n){if(re(t)){var a=t.directiveStart,r=ne(t.index,e);return new lu(r,n,a)}if(3===t.type){var i=ye(e);return new lu(i,i[It],-1)}return null}var hu=function(){function t(t){this.nativeElement=t}return t.__NG_ELEMENT_ID__=function(){return mu(t)},t}(),gu=function(t){return du(t,Qe(),Xe())},mu=us,bu=function(){return function(t,e,n,a,r,i){this.id=t,this.templateUrl=e,this.slotCount=n,this.encapsulation=a,this.styles=r,this.animations=i}}(),yu=function(){return function(){}}(),vu=function(){return function(){}}(),_u=function(){return function(){}}(),xu=function(){return function(){}}(),Tu=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({}),wu=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return Ou()},t}(),Su=function(){return function(t){var e=Xe()[Nt];if(wa(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}()},Ou=us,Cu=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}({}),ku=function(){return function(){}}(),Iu=function(){return function(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}(),Du=new Iu("7.2.6"),Ru=function(t){function e(e){var n=t.call(this)||this;return n.ngModule=e,n}return Object(a.__extends)(e,t),e.prototype.resolveComponentFactory=function(t){var e=gt(t);return new Pu(e,this.ngModule)},e}(ru);function Nu(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push({propName:t[n],templateName:n});return e}var Au=new w("ROOT_CONTEXT_TOKEN",{providedIn:"root",factory:function(){return Qo(Ae(Eu))}}),Eu=new w("SCHEDULER_TOKEN",{providedIn:"root",factory:function(){return me}}),Lu={},Pu=function(t){function e(e,n){var a=t.call(this)||this;return a.componentDef=e,a.ngModule=n,a.componentType=e.type,a.selector=e.selectors[0][0],a.ngContentSelectors=[],a}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"inputs",{get:function(){return Nu(this.componentDef.inputs)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return Nu(this.componentDef.outputs)},enumerable:!0,configurable:!0}),e.prototype.create=function(t,e,n,a){var r=void 0===n,i=(a=a||this.ngModule)?function(t,e){return{get:function(n,a){var r=t.get(n,Lu);return r!==Lu||a===Lu?r:e.get(n,a)}}}(t,a.injector):t,o=i.get(xu,Sa),s=i.get(ku,null),u=r?Ti(this.selector,o.createRenderer(null,this.componentDef)):ki(o,n),l=this.componentDef.onPush?136:132,c=r?Qo():i.get(Au),d=o.createRenderer(u,this.componentDef);n&&u&&(wa(d)?d.setAttribute(u,"ng-version",Du.full):u.setAttribute("ng-version",Du.full));var f,p,h=oi(null,Oi(-1,null,1,0,null,null,null),c,l,o,d,s,i),g=mn(h,null);try{o.begin&&o.begin();var m=Xo(u,this.componentDef,h,o,d);if(p=ee(0,h),e)for(var b=0,y=h[vt],v=p.projection=[],_=0;_<e.length;_++){for(var x=e[_],T=null,w=null,S=0;S<x.length;S++){y.firstTemplatePass&&(y.expandoStartIndex++,y.blueprint.splice(++b+jt,0,null),y.data.splice(b+jt,0,null),h.splice(b+jt,0,null));var O=si(b,3,x[S],null,null);w?w.next=O:T=O,w=O}v.push(T)}f=Jo(m,this.componentDef,h,c,[ts]),fo(h,jt,m),ii(h)}finally{yn(g),o.end&&o.end()}var C=new Mu(this.componentType,f,du(hu,p,h),h,p);return r&&(C.hostView._tViewNode.child=p),C},e}(Xs),Mu=function(t){function e(e,n,a,r,i){var o=t.call(this)||this;return o.location=a,o._rootLView=r,o._tNode=i,o.destroyCbs=[],o.instance=n,o.hostView=o.changeDetectorRef=new cu(r),o.hostView._tViewNode=ui(-1,r),o.componentType=e,o}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"injector",{get:function(){return new Mn(this._tNode,this._rootLView)},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.destroyCbs.forEach(function(t){return t()}),this.destroyCbs=null,this.hostView.destroy()},e.prototype.onDestroy=function(t){this.destroyCbs.push(t)},e}(Zs),ju=!0,qu=!1;function Fu(){return qu=!0,ju}function zu(){if(qu)throw new Error("Cannot enable prod mode after platform setup.");ju=!1}var Yu=function(){function t(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),this.inertBodyElement=this.inertDocument.body,null==this.inertBodyElement){var e=this.inertDocument.createElement("html");this.inertDocument.appendChild(e),this.inertBodyElement=this.inertDocument.createElement("body"),e.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}return t.prototype.getInertBodyElement_XHR=function(t){t="<body><remove></remove>"+t+"</body>";try{t=encodeURI(t)}catch(a){return null}var e=new XMLHttpRequest;e.responseType="document",e.open("GET","data:text/html;charset=utf-8,"+t,!1),e.send(void 0);var n=e.response.body;return n.removeChild(n.firstChild),n},t.prototype.getInertBodyElement_DOMParser=function(t){t="<body><remove></remove>"+t+"</body>";try{var e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(n){return null}},t.prototype.getInertBodyElement_InertDocument=function(t){var 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)},t.prototype.stripCustomNsAttrs=function(t){for(var e=t.attributes,n=e.length-1;0<n;n--){var a=e.item(n).name;"xmlns:ns1"!==a&&0!==a.indexOf("ns1:")||t.removeAttribute(a)}for(var r=t.firstChild;r;)r.nodeType===Node.ELEMENT_NODE&&this.stripCustomNsAttrs(r),r=r.nextSibling},t}(),Hu=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:\/?#]*(?:[\/?#]|$))/gi,Gu=/^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 Vu(t){return(t=String(t)).match(Hu)||t.match(Gu)?t:(Fu()&&console.warn("WARNING: sanitizing unsafe URL value "+t+" (see http://g.co/ng/security#xss)"),"unsafe:"+t)}function Bu(t){return(t=String(t)).split(",").map(function(t){return Vu(t.trim())}).join(", ")}function Uu(t){var e,n,r={};try{for(var i=Object(a.__values)(t.split(",")),o=i.next();!o.done;o=i.next())r[o.value]=!0}catch(s){e={error:s}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return r}function Wu(){for(var t,e,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i={};try{for(var o=Object(a.__values)(n),s=o.next();!s.done;s=o.next()){var u=s.value;for(var l in u)u.hasOwnProperty(l)&&(i[l]=!0)}}catch(c){t={error:c}}finally{try{s&&!s.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return i}var Ku,$u=Uu("area,br,col,hr,img,wbr"),Zu=Uu("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Xu=Uu("rp,rt"),Ju=Wu(Xu,Zu),Qu=Wu($u,Wu(Zu,Uu("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")),Wu(Xu,Uu("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")),Ju),tl=Uu("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),el=Uu("srcset"),nl=Wu(tl,el,Uu("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")),al=function(){function t(){this.sanitizedSomething=!1,this.buf=[]}return t.prototype.sanitizeChildren=function(t){for(var e=t.firstChild,n=!0;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);var a=this.checkClobberedElement(e,e.nextSibling);if(a){e=a;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")},t.prototype.startElement=function(t){var e=t.nodeName.toLowerCase();if(!Qu.hasOwnProperty(e))return this.sanitizedSomething=!0,!1;this.buf.push("<"),this.buf.push(e);for(var n=t.attributes,a=0;a<n.length;a++){var r=n.item(a),i=r.name,o=i.toLowerCase();if(nl.hasOwnProperty(o)){var s=r.value;tl[o]&&(s=Vu(s)),el[o]&&(s=Bu(s)),this.buf.push(" ",i,'="',ol(s),'"')}else this.sanitizedSomething=!0}return this.buf.push(">"),!0},t.prototype.endElement=function(t){var e=t.nodeName.toLowerCase();Qu.hasOwnProperty(e)&&!$u.hasOwnProperty(e)&&(this.buf.push("</"),this.buf.push(e),this.buf.push(">"))},t.prototype.chars=function(t){this.buf.push(ol(t))},t.prototype.checkClobberedElement=function(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},t}(),rl=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,il=/([^\#-~ |!])/g;function ol(t){return t.replace(/&/g,"&amp;").replace(rl,function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"}).replace(il,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function sl(t,e){var n=null;try{Ku=Ku||new Yu(t);var a=e?String(e):"";n=Ku.getInertBodyElement(a);var 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=Ku.getInertBodyElement(a)}while(a!==i);var o=new al,s=o.sanitizeChildren(ul(n)||n);return Fu()&&o.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),s}finally{if(n)for(var u=ul(n)||n;u.firstChild;)u.removeChild(u.firstChild)}}function ul(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var ll={marker:"element"},cl={marker:"comment"},dl="\ufffd",fl=/^\s*(\ufffd\d+:?\d*\ufffd)\s*,\s*(select|plural)\s*,/,pl=/\ufffd\/?\*(\d+:\d+)\ufffd/gi,hl=/\ufffd(\/?[#*]\d+):?\d*\ufffd/gi,gl=/\ufffd(\d+):?\d*\ufffd/gi,ml=/({\s*\ufffd\d+:?\d*\ufffd\s*,\s*\S{6}\s*,[\s\S]*})/gi,bl=/\[(\ufffd.+?\ufffd?)\]/g,yl=/({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g,vl=/\ufffdI18N_EXP_(ICU(_\d+)?)\ufffd/g;function _l(t){if(!t)return[];var e,n=0,a=[],r=[],i=/[{}]/g;for(i.lastIndex=0;e=i.exec(t);){var o=e.index;if("}"==e[0]){if(a.pop(),0==a.length){var s=t.substring(n,o);fl.test(s)?r.push(xl(s)):s&&r.push(s),n=o+1}}else{if(0==a.length){var u=t.substring(n,o);r.push(u),n=o+1}a.push("{")}}var l=t.substring(n);return""!=l&&r.push(l),r}function xl(t){for(var e=[],n=[],a=1,r=0,i=_l(t=t.replace(fl,function(t,e,n){return a="select"===n?0:1,r=parseInt(e.substr(1),10),""})),o=0;o<i.length;){var s=i[o++].trim();1===a&&(s=s.replace(/\s*(?:=)?(\w+)\s*/,"$1")),s.length&&e.push(s);var u=_l(i[o++]);u.length&&n.push(u)}return l=e.indexOf("other"),c='Missing key "other" in ICU statement.',l<=-1&&function(t){throw new Error("ASSERTION ERROR: "+t)}(c),{type:a,mainBinding:r,cases:e,values:n};var l,c}function Tl(t){for(var e,n,a="",r=0,i=!1;null!==(e=pl.exec(t));)i?e[0]===dl+"/*"+n+dl&&(r=e.index,i=!1):(a+=t.substring(r,e.index+e[0].length),n=e[1],i=!0);return a+t.substr(r)}function wl(t,e,n,a){void 0===a&&(a=null);for(var r=[null,null],i=t.split(gl),o=0,s=0;s<i.length;s++){var u=i[s];if(1&s){var l=parseInt(u,10);r.push(-1-l),o|=kl(l)}else""!==u&&r.push(u)}return r.push(e<<2|(n?1:0)),n&&r.push(n,a),r[0]=o,r[1]=r.length-2,r}function Sl(t,e){var n;void 0===e&&(e=0),e|=kl(t.mainBinding);for(var a=0;a<t.values.length;a++)for(var r=t.values[a],i=0;i<r.length;i++){var o=r[i];if("string"==typeof o)for(;n=gl.exec(o);)e|=kl(parseInt(n[1],10));else e=Sl(o,e)}return e}var Ol=[],Cl=-1;function kl(t){return 1<<Math.min(t,31)}var Il=[];function Dl(t,e,n){var a=Xe()[vt];Ol[++Cl]=t,a.firstTemplatePass&&null===a.data[t+jt]&&function(t,e,n,a){var r=Xe(),i=t.blueprint.length-jt,o=Qe(),s=nn()?Qe():o&&o.parent,u=s&&s!==r[Ot]?s.index-jt:e,l=0;Il[l]=u;var c=[];e>0&&o!==s&&c.push(o.index<<3|0);for(var d=[],f=[],p=function(t,e){if("number"!=typeof e)return Tl(t);var n=t.indexOf(":"+e+dl)+2+e.toString().length,a=t.search(new RegExp(dl+"\\/\\*\\d+:"+e+dl));return Tl(t.substring(n,a))}(n,a).split(hl),h=0;h<p.length;h++){var g=p[h];if(1&h)if("/"===g.charAt(0)){if("#"===g.charAt(1)){var m=parseInt(g.substr(2),10);u=Il[--l],c.push(m<<3|5)}}else m=parseInt(g.substr(1),10),c.push(m<<3|0,u<<17|1),"#"===g.charAt(0)&&(Il[++l]=u=m);else for(var b=g.split(ml),y=0;y<b.length;y++)if(g=b[y],1&y){li(r);var v=t.blueprint.length-1-jt;c.push(cl,"",u<<17|1);var _=xl(g.substr(1,g.length-2)),x=Sl(_);Gl(f,_,v,v);var T=f.length-1;d.push(kl(_.mainBinding),3,-1-_.mainBinding,v<<2|2,T,x,2,v<<2|3,T)}else if(""!==g){var w=g.match(gl);li(r),c.push(w?"":g,u<<17|1),w&&be(wl(g,t.blueprint.length-1-jt),d)}}t.data[e+jt]={vars:t.blueprint.length-jt-i,expandoStartIndex:i,create:c,update:d,icus:f.length?f:null}}(a,t,e,n)}function Rl(t,e,n){var a=Xe();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[Ot]&&(t.parent=e),Ba(te(t,a),t,a);var r=a[t.index];return 0!==t.type&&oe(r)&&Ba(r[zt],t,a),t}function Nl(t,e){var n={},a=t.replace(bl,function(t,e){if(n[e]||(n[e]=e.split("|")),!n[e].length)throw new Error("i18n postprocess: unmatched placeholder - "+e);return n[e].shift()});if(Object.keys(n).some(function(t){return!!n[t].length}))throw new Error("i18n postprocess: unmatched values - "+JSON.stringify(n));return Object.keys(e).length?a=(a=a.replace(yl,function(t,n,a,r,i,o){return e.hasOwnProperty(a)?""+n+e[a]+o:t})).replace(vl,function(t,n){if(e.hasOwnProperty(n)){var a=e[n];if(!a.length)throw new Error("i18n postprocess: unmatched ICU - "+t+" with key: "+n);return a.shift()}return t}):a}function Al(){!function(t){for(var e=Xe(),n=Ol[Cl--],a=t.data[n+jt],r=Qe(),i=El(n,a.create,a.expandoStartIndex,e),o=n+1;o<=r.index-jt;o++)-1===i.indexOf(o)&&Ll(o,e)}(Xe()[vt])}function El(t,e,n,a){for(var r=Xe()[Nt],i=null,o=null,s=[],u=0;u<e.length;u++){var l=e[u];if("string"==typeof l)o=i,i=si(n++,3,Aa(l,r),null,null),an(!1);else if("number"==typeof l)switch(7&l){case 1:var c=l>>>17,d=void 0;o=Rl(i,d=c===t?a[Ot]:ee(c,a),o),d.next=null;break;case 0:var f=l>>>3;s.push(f),o=i,(i=ee(f,a))&&(tn(i),3===i.type&&an(!0));break;case 5:o=i=ee(l>>>3,a),tn(i),an(!1);break;case 4:Ri(l>>>3,e[++u],e[++u]);break;default:throw new Error('Unable to determine the type of mutate operation for "'+l+'"')}else switch(l){case cl:var p=e[++u],h=r.createComment(p);o=i,i=si(n++,5,h,null,null),Hn(h,a),i.activeCaseIndex=null,an(!1);break;case ll:var g=e[++u];o=i,i=si(n++,3,r.createElement(g),g,null);break;default:throw new Error('Unable to determine the type of mutate operation for "'+l+'"')}}return an(!1),s}function Ll(t,e){var n=ee(t,e);Ka(n,Qt(t,e)||null,e),n.detached=!0;var a=Po(t);if(oe(a)){var r=a;0!==n.type&&Ka(n,r[zt]||null,e),r[Yt]=null}}function Pl(t,e,n){Dl(t,e,n),Al()}function Ml(t,e){var n=Xe()[vt];n.firstTemplatePass&&null===n.data[t+jt]&&function(t,e,n){for(var a=Qe().index-jt,r=[],i=0;i<n.length;i+=2)for(var o=n[i],s=n[i+1].split(ml),u=0;u<s.length;u++){var l=s[u];1&u||""!==l&&(l.match(gl)?be(wl(l,a,o),r):Ri(a,o,l))}t.data[e+jt]=r}(n,t,e)}var jl=0,ql=0;function Fl(t){t!==ha&&(jl|=1<<ql),ql++}function zl(t){if(ql){var e=Xe(),n=e[vt].data[t+jt],a=void 0,r=null;Array.isArray(n)?a=n:(a=n.update,r=n.icus),function t(e,n,a,r,i,o){void 0===o&&(o=!1);for(var s=!1,u=0;u<e.length;u++){var l=e[u],c=e[++u];if(o||l&r)for(var d="",f=u+1;f<=u+c;f++){var p=e[f];if("string"==typeof p)d+=p;else if("number"==typeof p)if(p<0)d+=Zt(i[a-p]);else{var h=p>>>2;switch(3&p){case 1:Ri(h,e[++f],d,e[++f]);break;case 0:Bi(h,d);break;case 2:var g=e[++f],m=n[g],b=ee(h,i);if(null!==b.activeCaseIndex)for(var y=m.remove[b.activeCaseIndex],v=0;v<y.length;v++){var _=y[v];switch(7&_){case 3:Ll(_>>>3,i);break;case 6:var x=ee(y[v+1]>>>3,i).activeCaseIndex;null!==x&&be(n[_>>>3].remove[x],y)}}var T=Hl(m,d);b.activeCaseIndex=-1!==T?T:null,El(-1,m.create[T],m.expandoStartIndex,i),s=!0;break;case 3:m=n[g=e[++f]],b=ee(h,i),t(m.update[b.activeCaseIndex],n,a,r,i,s)}}}u+=c}}(a,r,e[Ct]-ql-1,jl,e),jl=0,ql=0}}var Yl=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({});function Hl(t,e){var n=t.cases.indexOf(e);if(-1===n)switch(t.type){case 1:var a=function(t,n){switch(function(t,e){"string"==typeof e&&(e=parseInt(e,10));var n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,o=parseInt(a,10),s=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?Yl.One:Yl.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?Yl.One:Yl.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?Yl.One:Yl.Other;case"ar":return 0===n?Yl.Zero:1===n?Yl.One:2===n?Yl.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?Yl.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?Yl.Many:Yl.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?Yl.One:Yl.Other;case"be":return n%10==1&&n%100!=11?Yl.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?Yl.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?Yl.Many:Yl.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?Yl.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?Yl.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)?Yl.Few:0!==n&&n%1e6==0?Yl.Many:Yl.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||o%10==1&&o%100!=11?Yl.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?Yl.Few:Yl.Other;case"cs":case"sk":return 1===r&&0===i?Yl.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?Yl.Few:0!==i?Yl.Many:Yl.Other;case"cy":return 0===n?Yl.Zero:1===n?Yl.One:2===n?Yl.Two:3===n?Yl.Few:6===n?Yl.Many:Yl.Other;case"da":return 1===n||0!==s&&(0===r||1===r)?Yl.One:Yl.Other;case"dsb":case"hsb":return 0===i&&r%100==1||o%100==1?Yl.One:0===i&&r%100==2||o%100==2?Yl.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4?Yl.Few:Yl.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?Yl.One:Yl.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&&o%10!=4&&o%10!=6&&o%10!=9?Yl.One:Yl.Other;case"ga":return 1===n?Yl.One:2===n?Yl.Two:n===Math.floor(n)&&n>=3&&n<=6?Yl.Few:n===Math.floor(n)&&n>=7&&n<=10?Yl.Many:Yl.Other;case"gd":return 1===n||11===n?Yl.One:2===n||12===n?Yl.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?Yl.Few:Yl.Other;case"gv":return 0===i&&r%10==1?Yl.One:0===i&&r%10==2?Yl.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?Yl.Many:Yl.Other:Yl.Few;case"he":return 1===r&&0===i?Yl.One:2===r&&0===i?Yl.Two:0!==i||n>=0&&n<=10||n%10!=0?Yl.Other:Yl.Many;case"is":return 0===s&&r%10==1&&r%100!=11||0!==s?Yl.One:Yl.Other;case"ksh":return 0===n?Yl.Zero:1===n?Yl.One:Yl.Other;case"kw":case"naq":case"se":case"smn":return 1===n?Yl.One:2===n?Yl.Two:Yl.Other;case"lag":return 0===n?Yl.Zero:0!==r&&1!==r||0===n?Yl.Other:Yl.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)?Yl.Few:0!==o?Yl.Many:Yl.Other:Yl.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&o%100===Math.floor(o%100)&&o%100>=11&&o%100<=19?Yl.Zero:n%10==1&&n%100!=11||2===i&&o%10==1&&o%100!=11||2!==i&&o%10==1?Yl.One:Yl.Other;case"mk":return 0===i&&r%10==1||o%10==1?Yl.One:Yl.Other;case"mt":return 1===n?Yl.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?Yl.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?Yl.Many:Yl.Other;case"pl":return 1===r&&0===i?Yl.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?Yl.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?Yl.Many:Yl.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?Yl.One:Yl.Other;case"ro":return 1===r&&0===i?Yl.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?Yl.Few:Yl.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?Yl.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?Yl.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?Yl.Many:Yl.Other;case"shi":return 0===r||1===n?Yl.One:n===Math.floor(n)&&n>=2&&n<=10?Yl.Few:Yl.Other;case"si":return 0===n||1===n||0===r&&1===o?Yl.One:Yl.Other;case"sl":return 0===i&&r%100==1?Yl.One:0===i&&r%100==2?Yl.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?Yl.Few:Yl.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?Yl.One:Yl.Other;default:return Yl.Other}}("en-US",e)){case Yl.Zero:return"zero";case Yl.One:return"one";case Yl.Two:return"two";case Yl.Few:return"few";case Yl.Many:return"many";default:return"other"}}();-1===(n=t.cases.indexOf(a))&&"other"!==a&&(n=t.cases.indexOf("other"));break;case 0:n=t.cases.indexOf("other")}return n}function Gl(t,e,n,r){for(var i=[],o=[],s=[],u=[],l=[],c=0;c<e.values.length;c++){for(var d=e.values[c],f=[],p=0;p<d.length;p++){var h=d[p];if("string"!=typeof h){var g=f.push(h)-1;d[p]="\x3c!--\ufffd"+g+"\ufffd--\x3e"}}var m=Vl(d.join(""),n,f,t,r);i.push(m.create),o.push(m.remove),s.push(m.update),u.push(m.vars),l.push(m.childIcus)}t.push({type:e.type,vars:u,expandoStartIndex:r+1,childIcus:l,cases:e.cases,create:i,remove:o,update:s});var b=Xe(),y=Math.max.apply(Math,Object(a.__spread)(u));for(c=0;c<y;c++)li(b)}function Vl(t,e,n,r,i){var o=new Yu(document).getInertBodyElement(t);if(!o)throw new Error("Unable to generate inert body element");var s={vars:0,childIcus:[],create:[],remove:[],update:[]};return function t(e,n,r,i,o,s){if(e){for(var u=[];e;){var l=e.nextSibling,c=s+ ++n.vars;switch(e.nodeType){case Node.ELEMENT_NODE:var d=e,f=d.tagName.toLowerCase();if(Qu.hasOwnProperty(f)){n.create.push(ll,f,r<<17|1);for(var p=d.attributes,h=0;h<p.length;h++){var g=p.item(h),m=g.name.toLowerCase();g.value.match(gl)?nl.hasOwnProperty(m)&&be(tl[m]?wl(g.value,c,g.name,Vu):el[m]?wl(g.value,c,g.name,Bu):wl(g.value,c,g.name),n.update):n.create.push(c<<3|4,g.name,g.value)}t(e.firstChild,n,c,i,o,s),n.remove.push(c<<3|3)}else n.vars--;break;case Node.TEXT_NODE:var b=e.textContent||"",y=b.match(gl);n.create.push(y?"":b,r<<17|1),n.remove.push(c<<3|3),y&&be(wl(b,c),n.update);break;case Node.COMMENT_NODE:var v=Bl.exec(e.textContent||"");if(v){var _=parseInt(v[1],10);n.create.push(cl,"",r<<17|1),u.push([x=i[_],c])}else n.vars--;break;default:n.vars--}e=l}for(h=0;h<u.length;h++){var x,T=u[h][1];Gl(o,x=u[h][0],T,s+n.vars);var w=o.length-1;n.vars+=Math.max.apply(Math,Object(a.__spread)(o[w].vars)),n.childIcus.push(w);var S=Sl(x);n.update.push(kl(x.mainBinding),3,-1-x.mainBinding,T<<2|2,w,S,2,T<<2|3,w),n.remove.push(w<<3|6,T<<3|3)}}}((ul(o)||o).firstChild,s,e,n,r,i),s}var Bl=/\ufffd(\d+)\ufffd/,Ul={provide:ru,useClass:Ru,deps:[su]},Wl=function(t){function e(e,n){var a=t.call(this)||this;a._parent=n,a._bootstrapComponents=[],a.injector=a,a.destroyCbs=[];var r=yt(e);return a._bootstrapComponents=r.bootstrap,a._r3Injector=Ps(e,n,[{provide:su,useValue:a},Ul]),a.instance=a.get(e),a}return Object(a.__extends)(e,t),e.prototype.get=function(t,e,n){return void 0===e&&(e=hs.THROW_IF_NOT_FOUND),void 0===n&&(n=ke.Default),t===hs||t===su||t===fs?this:this._r3Injector.get(t,e,n)},Object.defineProperty(e.prototype,"componentFactoryResolver",{get:function(){return this.get(ru)},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.destroyCbs.forEach(function(t){return t()}),this.destroyCbs=null},e.prototype.onDestroy=function(t){this.destroyCbs.push(t)},e}(su),Kl=function(t){function e(e){var n=t.call(this)||this;return n.moduleType=e,n}return Object(a.__extends)(e,t),e.prototype.create=function(t){return new Wl(this.moduleType,t)},e}(uu);function $l(t,e,n,r){var i,o=t;null!==e&&(void 0!==o.decorators?(i=o.decorators).push.apply(i,Object(a.__spread)(e)):o.decorators=e),null!==n&&(o.ctorParameters=n),null!==r&&(o.propDecorators=void 0!==o.propDecorators?Object(a.__assign)({},o.propDecorators,r):r)}function Zl(t,e,n){var a=hn()+t,r=Xe();return rn()?ga(r,a,n?e.call(n):e()):ma(r,a)}function Xl(t,e,n,a){var r=Xe(),i=hn()+t;return ba(r,i,n)?ga(r,i+1,a?e.call(a,n):e(n)):ma(r,i+1)}function Jl(t,e,n,a,r){var i=hn()+t,o=Xe();return ya(o,i,n,a)?ga(o,i+2,r?e.call(r,n,a):e(n,a)):ma(o,i+2)}function Ql(t,e,n,a,r,i){var o=hn()+t,s=Xe();return va(s,o,n,a,r)?ga(s,o+3,i?e.call(i,n,a,r):e(n,a,r)):ma(s,o+3)}function tc(t,e,n,a,r,i,o){var s=hn()+t,u=Xe();return _a(u,s,n,a,r,i)?ga(u,s+4,o?e.call(o,n,a,r,i):e(n,a,r,i)):ma(u,s+4)}function ec(t,e,n,a,r,i,o,s){var u=hn()+t,l=Xe(),c=_a(l,u,n,a,r,i);return ba(l,u+4,o)||c?ga(l,u+5,s?e.call(s,n,a,r,i,o):e(n,a,r,i,o)):ma(l,u+5)}function nc(t,e,n,a,r,i,o,s,u){var l=hn()+t,c=Xe(),d=_a(c,l,n,a,r,i);return ya(c,l+4,o,s)||d?ga(c,l+6,u?e.call(u,n,a,r,i,o,s):e(n,a,r,i,o,s)):ma(c,l+6)}function ac(t,e,n,a,r,i,o,s,u,l){var c=hn()+t,d=Xe(),f=_a(d,c,n,a,r,i);return va(d,c+4,o,s,u)||f?ga(d,c+7,l?e.call(l,n,a,r,i,o,s,u):e(n,a,r,i,o,s,u)):ma(d,c+7)}function rc(t,e,n,a,r,i,o,s,u,l,c){var d=hn()+t,f=Xe(),p=_a(f,d,n,a,r,i);return _a(f,d+4,o,s,u,l)||p?ga(f,d+8,c?e.call(c,n,a,r,i,o,s,u,l):e(n,a,r,i,o,s,u,l)):ma(f,d+8)}function ic(t,e,n,a){for(var r=hn()+t,i=!1,o=Xe(),s=0;s<n.length;s++)ba(o,r++,n[s])&&(i=!0);return i?ga(o,r,e.apply(a,n)):ma(o,r)}function oc(t,e){var n,a=Xe()[vt],r=t+jt;a.firstTemplatePass?(n=function(t,e){if(e)for(var n=e.length-1;n>=0;n--){var a=e[n];if(t===a.name)return a}throw new Error("The pipe '"+t+"' could not be found!")}(e,a.pipeRegistry),a.data[r]=n,n.onDestroy&&(a.pipeDestroyHooks||(a.pipeDestroyHooks=[])).push(r,n.onDestroy)):n=a.data[r];var i=n.factory(null);return Ao(t,i),i}function sc(t,e,n){var a=Po(t);return pc(fc(t)?Xl(e,a.transform,n,a):a.transform(n))}function uc(t,e,n,a){var r=Po(t);return pc(fc(t)?Jl(e,r.transform,n,a,r):r.transform(n,a))}function lc(t,e,n,a,r){var i=Po(t);return pc(fc(t)?Ql(e,i.transform,n,a,r,i):i.transform(n,a,r))}function cc(t,e,n,a,r,i){var o=Po(t);return pc(fc(t)?tc(e,o.transform,n,a,r,i,o):o.transform(n,a,r,i))}function dc(t,e,n){var a=Po(t);return pc(fc(t)?ic(e,a.transform,n,a):a.transform.apply(a,n))}function fc(t){return Xe()[vt].data[t+jt].pure}function pc(t){return la.isWrapped(t)&&(t=la.unwrap(t),Xe()[hn()]=ha),t}var hc=function(t){function e(e){void 0===e&&(e=!1);var n=t.call(this)||this;return n.__isAsync=e,n}return Object(a.__extends)(e,t),e.prototype.emit=function(e){t.prototype.next.call(this,e)},e.prototype.subscribe=function(e,n,a){var i,o=function(t){return null},s=function(){return null};e&&"object"==typeof e?(i=this.__isAsync?function(t){setTimeout(function(){return e.next(t)})}:function(t){e.next(t)},e.error&&(o=this.__isAsync?function(t){setTimeout(function(){return e.error(t)})}:function(t){e.error(t)}),e.complete&&(s=this.__isAsync?function(){setTimeout(function(){return e.complete()})}:function(){e.complete()})):(i=this.__isAsync?function(t){setTimeout(function(){return e(t)})}:function(t){e(t)},n&&(o=this.__isAsync?function(t){setTimeout(function(){return n(t)})}:function(t){n(t)}),a&&(s=this.__isAsync?function(){setTimeout(function(){return a()})}:function(){a()}));var u=t.prototype.subscribe.call(this,i,o,s);return e instanceof r.a&&e.add(u),u},e}(i.a),gc=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return bc(t,hu)},t}(),mc=function(t,e){return fu(t,e,Qe(),Xe())},bc=us,yc=function(){function t(t,e,n){this.parent=t,this.shallow=e,this.deep=n}return t.prototype.track=function(t,e,n,a){n?this.deep=Rc(this.deep,t,e,null!=a?a:null):this.shallow=Rc(this.shallow,t,e,null!=a?a:null)},t.prototype.clone=function(){return new t(this,null,this.deep)},t.prototype.container=function(){var e=vc(this.shallow),n=vc(this.deep);return e||n?new t(this,e,n):null},t.prototype.createView=function(){var e=_c(this.shallow),n=_c(this.deep);return e||n?new t(this,e,n):null},t.prototype.insertView=function(t){xc(t,this.shallow),xc(t,this.deep)},t.prototype.addNode=function(t){return kc(this.deep,t),ae(t)?(kc(this.shallow,t),t.parent&&ae(t.parent)&&kc(this.parent.shallow,t),this.parent):(function(t){return null===t.parent||ae(t.parent)}(t)&&kc(this.shallow,t),this)},t.prototype.removeView=function(){Tc(this.shallow),Tc(this.deep)},t}();function vc(t){for(var e=null;t;){var n=[];t.values.push(n),e={next:e,list:t.list,predicate:t.predicate,values:n,containerValues:null},t=t.next}return e}function _c(t){for(var e=null;t;)e={next:e,list:t.list,predicate:t.predicate,values:[],containerValues:t.values},t=t.next;return e}function xc(t,e){for(;e;)e.containerValues.splice(t,0,e.values),e=e.next}function Tc(t){for(;t;){var e=t.containerValues,n=e.indexOf(t.values);e.splice(n,1)[0].length&&t.list.setDirty(),t=t.next}}function wc(t,e){var n=t.localNames;if(n)for(var a=0;a<n.length;a+=2)if(n[a]===e)return n[a+1];return null}function Sc(t,e,n){var a=t[y];if("function"==typeof a)return a();var r=An(e,n,t,!1,!1);return null!==r?En(n[vt].data,n,r,e):null}function Oc(t,e,n,a){var r=t[y]();return a?r?Sc(a,e,n):null:r}function Cc(t,e,n,a){return n?Sc(n,t,e):a>-1?En(e[vt].data,e,a,t):function(t,e){return 3===t.type||4===t.type?du(hu,t,e):0===t.type?fu(gc,hu,t,e):null}(t,e)}function kc(t,e){for(var n=Xe();t;){var a=t.predicate,r=a.type;if(r){var i=null;r===gc?i=Oc(r,e,n,a.read):null!==(u=An(e,n,r,!1,!1))&&(i=Cc(e,n,a.read,u)),null!==i&&Ic(t,i)}else for(var o=a.selector,s=0;s<o.length;s++){var u;null!==(u=wc(e,o[s]))&&null!==(i=Cc(e,n,a.read,u))&&Ic(t,i)}t=t.next}}function Ic(t,e){t.values.push(e),t.list.setDirty()}function Dc(t,e){var n=Array.isArray(t);return{type:n?null:t,selector:n?t:null,read:e}}function Rc(t,e,n,a){return{next:t,list:e,predicate:Dc(n,a),values:e._valuesTree,containerValues:null}}var Nc=function(){function t(){this.dirty=!0,this.changes=new hc,this._values=[],this._valuesTree=[]}return Object.defineProperty(t.prototype,"length",{get:function(){return this._values.length},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"first",{get:function(){var t=this._values;return t.length?t[0]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"last",{get:function(){var t=this._values;return t.length?t[t.length-1]:null},enumerable:!0,configurable:!0}),t.prototype.map=function(t){return this._values.map(t)},t.prototype.filter=function(t){return this._values.filter(t)},t.prototype.find=function(t){return this._values.find(t)},t.prototype.reduce=function(t,e){return this._values.reduce(t,e)},t.prototype.forEach=function(t){this._values.forEach(t)},t.prototype.some=function(t){return this._values.some(t)},t.prototype.toArray=function(){return this._values.slice(0)},t.prototype[U()]=function(){return this._values[U()]()},t.prototype.toString=function(){return this._values.toString()},t.prototype.reset=function(t){this._values=function(t){for(var e=[],n=0;n<t.length;){var a=t[n];Array.isArray(a)?a.length>0?(t=a.concat(t.slice(n+1)),n=0):n++:(e.push(a),n++)}return e}(t),this.dirty=!1},t.prototype.notifyOnChanges=function(){this.changes.emit(this)},t.prototype.setDirty=function(){this.dirty=!0},t.prototype.destroy=function(){this.changes.complete(),this.changes.unsubscribe()},t}();function Ac(t,e,n,a){var r,i,o,s=new Nc;return(r=yc,i=Xe(),o=i[wt],Ve&&Ve!==i[Ot]&&!ae(Ve)&&(o&&(o=i[wt]=o.clone()),Ve.flags|=4),o||(i[wt]=new r(null,null,null))).track(s,e,n,a),function(t,e,n){var a=Ho(t);a.push(e),t[vt].firstTemplatePass&&Go(t).push(n,a.length-1)}(Xe(),s,s.destroy),null!=t&&Ao(t,s),s}function Ec(t){return!!t.dirty&&(t.reset(t._valuesTree),t.notifyOnChanges(),!0)}function Lc(t,e){return fu(gc,hu,t,e)}var Pc="__SANITIZER_TRUSTED_BRAND__";function Mc(t,e){return t instanceof String&&t[Pc]===e}function jc(t){return Hc(t,"Html")}function qc(t){return Hc(t,"Style")}function Fc(t){return Hc(t,"Script")}function zc(t){return Hc(t,"Url")}function Yc(t){return Hc(t,"ResourceUrl")}function Hc(t,e){var n=new String(t);return n[Pc]=e,n}var Gc=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),Vc=/^url\(([^)]+)\)$/;function Bc(t){if(!(t=String(t).trim()))return"";var e=t.match(Vc);return e&&Vu(e[1])===e[1]||t.match(Gc)&&function(t){for(var e=!0,n=!0,a=0;a<t.length;a++){var r=t.charAt(a);"'"===r&&n?e=!e:'"'===r&&e&&(n=!n)}return e&&n}(t)?t:(Fu()&&console.warn("WARNING: sanitizing unsafe style value "+t+" (see http://g.co/ng/security#xss)."),"unsafe")}function Uc(t){var e=Jc();return e?e.sanitize(Cu.HTML,t)||"":Mc(t,"Html")?t.toString():sl(document,Zt(t))}function Wc(t){var e=Jc();return e?e.sanitize(Cu.STYLE,t)||"":Mc(t,"Style")?t.toString():Bc(Zt(t))}function Kc(t){var e=Jc();return e?e.sanitize(Cu.URL,t)||"":Mc(t,"Url")?t.toString():Vu(Zt(t))}function $c(t){var e=Jc();if(e)return e.sanitize(Cu.RESOURCE_URL,t)||"";if(Mc(t,"ResourceUrl"))return t.toString();throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")}function Zc(t){var e=Jc();if(e)return e.sanitize(Cu.SCRIPT,t)||"";if(Mc(t,"Script"))return t.toString();throw new Error("unsafe value used in a script context")}var Xc=function(t,e){return void 0===e?"background-image"===t||"background"===t||"border-image"===t||"filter"===t||"list-style"===t||"list-style-image"===t:Wc(e)};function Jc(){var t=Xe();return t&&t[At]}var Qc={"\u0275defineBase":ft,"\u0275defineComponent":st,"\u0275defineDirective":pt,defineInjectable:v,defineInjector:_,"\u0275defineNgModule":ct,"\u0275definePipe":ht,"\u0275directiveInject":Mo,"\u0275getFactoryOf":jn,"\u0275getInheritedFactory":qn,inject:Ae,"\u0275injectAttribute":jo,"\u0275templateRefExtractor":Lc,"\u0275NgOnChangesFeature":os,"\u0275ProvidersFeature":$s,"\u0275InheritDefinitionFeature":as,"\u0275elementAttribute":Ri,"\u0275bind":xo,"\u0275container":no,"\u0275nextContext":di,"\u0275containerRefreshStart":ro,"\u0275containerRefreshEnd":io,"\u0275loadQueryList":Lo,"\u0275namespaceHTML":bi,"\u0275namespaceMathML":mi,"\u0275namespaceSVG":gi,"\u0275enableBindings":$e,"\u0275disableBindings":Ze,"\u0275allocHostVars":To,"\u0275elementStart":xi,"\u0275elementEnd":Di,"\u0275element":yi,"\u0275elementContainerStart":vi,"\u0275elementContainerEnd":_i,"\u0275pureFunction0":Zl,"\u0275pureFunction1":Xl,"\u0275pureFunction2":Jl,"\u0275pureFunction3":Ql,"\u0275pureFunction4":tc,"\u0275pureFunction5":ec,"\u0275pureFunction6":nc,"\u0275pureFunction7":ac,"\u0275pureFunction8":rc,"\u0275pureFunctionV":ic,"\u0275getCurrentView":Yo,"\u0275restoreView":Je,"\u0275interpolation1":So,"\u0275interpolation2":Oo,"\u0275interpolation3":Co,"\u0275interpolation4":ko,"\u0275interpolation5":Io,"\u0275interpolation6":Do,"\u0275interpolation7":Ro,"\u0275interpolation8":No,"\u0275interpolationV":wo,"\u0275elementClassProp":Hi,"\u0275listener":Ii,"\u0275load":Po,"\u0275projection":co,"\u0275elementProperty":Ni,"\u0275componentHostSyntheticProperty":Ai,"\u0275pipeBind1":sc,"\u0275pipeBind2":uc,"\u0275pipeBind3":lc,"\u0275pipeBind4":cc,"\u0275pipeBindV":dc,"\u0275projectionDef":uo,"\u0275pipe":oc,"\u0275query":Ac,"\u0275queryRefresh":Ec,"\u0275registerContentQuery":qo,"\u0275reference":Eo,"\u0275elementStyling":qi,"\u0275elementHostAttrs":Fi,"\u0275elementStylingMap":Gi,"\u0275elementStyleProp":Yi,"\u0275elementStylingApply":zi,"\u0275template":eo,"\u0275text":Vi,"\u0275textBinding":Bi,"\u0275embeddedViewStart":oo,"\u0275embeddedViewEnd":so,"\u0275i18n":Pl,"\u0275i18nAttributes":Ml,"\u0275i18nExp":Fl,"\u0275i18nStart":Dl,"\u0275i18nEnd":Al,"\u0275i18nApply":zl,"\u0275i18nPostprocess":Nl,"\u0275sanitizeHtml":Uc,"\u0275sanitizeStyle":Wc,"\u0275defaultStyleSanitizer":Xc,"\u0275sanitizeResourceUrl":$c,"\u0275sanitizeScript":Zc,"\u0275sanitizeUrl":Kc},td=function(){return function(){}}(),ed=new Map;function nd(t,e){var n=ed.get(t);ad(t,n&&n.moduleType),ed.set(t,e)}function ad(t,e){if(e)throw new Error("Duplicate module registered for "+t+" - "+$(e)+" vs "+$(e.name))}function rd(t){var e=ed.get(t);if(!e)throw sd(t);return e}function id(t){var e=ed.get(t);if(!e)throw sd(t);return new Kl(e)}var od=rd;function sd(t){return new Error("No module with ID "+t+" loaded")}var ud=Function;function ld(t){return"function"==typeof t}var cd=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/,dd=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,fd=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,pd=function(){function t(t){this._reflect=t||G.Reflect}return t.prototype.isReflectionEnabled=function(){return!0},t.prototype.factory=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return new(t.bind.apply(t,Object(a.__spread)([void 0],e)))}},t.prototype._zipTypesAndAnnotations=function(t,e){var n;n=void 0===t?new Array(e.length):new Array(t.length);for(var a=0;a<n.length;a++)n[a]=void 0===t?[]:t[a]!=Object?[t[a]]:[],e&&null!=e[a]&&(n[a]=n[a].concat(e[a]));return n},t.prototype._ownParameters=function(t,e){var n=t.toString();if(cd.exec(n)||dd.exec(n)&&!fd.exec(n))return null;if(t.parameters&&t.parameters!==e.parameters)return t.parameters;var a=t.ctorParameters;if(a&&a!==e.ctorParameters){var r="function"==typeof a?a():a,i=r.map(function(t){return t&&t.type}),o=r.map(function(t){return t&&hd(t.decorators)});return this._zipTypesAndAnnotations(i,o)}var s=t.hasOwnProperty(O)&&t[O],u=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",t);return u||s?this._zipTypesAndAnnotations(u,s):new Array(t.length).fill(void 0)},t.prototype.parameters=function(t){if(!ld(t))return[];var e=gd(t),n=this._ownParameters(t,e);return n||e===Object||(n=this.parameters(e)),n||[]},t.prototype._ownAnnotations=function(t,e){if(t.annotations&&t.annotations!==e.annotations){var n=t.annotations;return"function"==typeof n&&n.annotations&&(n=n.annotations),n}return t.decorators&&t.decorators!==e.decorators?hd(t.decorators):t.hasOwnProperty(S)?t[S]:null},t.prototype.annotations=function(t){if(!ld(t))return[];var e=gd(t),n=this._ownAnnotations(t,e)||[];return(e!==Object?this.annotations(e):[]).concat(n)},t.prototype._ownPropMetadata=function(t,e){if(t.propMetadata&&t.propMetadata!==e.propMetadata){var n=t.propMetadata;return"function"==typeof n&&n.propMetadata&&(n=n.propMetadata),n}if(t.propDecorators&&t.propDecorators!==e.propDecorators){var a=t.propDecorators,r={};return Object.keys(a).forEach(function(t){r[t]=hd(a[t])}),r}return t.hasOwnProperty(C)?t[C]:null},t.prototype.propMetadata=function(t){if(!ld(t))return{};var e=gd(t),n={};if(e!==Object){var r=this.propMetadata(e);Object.keys(r).forEach(function(t){n[t]=r[t]})}var i=this._ownPropMetadata(t,e);return i&&Object.keys(i).forEach(function(t){var e=[];n.hasOwnProperty(t)&&e.push.apply(e,Object(a.__spread)(n[t])),e.push.apply(e,Object(a.__spread)(i[t])),n[t]=e}),n},t.prototype.hasLifecycleHook=function(t,e){return t instanceof ud&&e in t.prototype},t.prototype.guards=function(t){return{}},t.prototype.getter=function(t){return new Function("o","return o."+t+";")},t.prototype.setter=function(t){return new Function("o","v","return o."+t+" = v;")},t.prototype.method=function(t){return new Function("o","args","if (!o."+t+") throw new Error('\""+t+"\" is undefined');\n        return o."+t+".apply(o, args);")},t.prototype.importUri=function(t){return"object"==typeof t&&t.filePath?t.filePath:"./"+$(t)},t.prototype.resourceUri=function(t){return"./"+$(t)},t.prototype.resolveIdentifier=function(t,e,n,a){return a},t.prototype.resolveEnum=function(t,e){return t[e]},t}();function hd(t){return t?t.map(function(t){var e=t.type.annotationCls,n=t.args?t.args:[];return new(e.bind.apply(e,Object(a.__spread)([void 0],n)))}):[]}function gd(t){var e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}var md=null;function bd(){return md=md||new pd}function yd(t){return vd(bd().parameters(t))}function vd(t){var e=ve();return t.map(function(t){return function(t,e){var 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(var r=0;r<e.length;r++){var i=e[r];if(void 0!==i)if(i instanceof we||"Optional"===i.__proto__.ngMetadataName)n.optional=!0;else if(i instanceof Oe||"SkipSelf"===i.__proto__.ngMetadataName)n.skipSelf=!0;else if(i instanceof Se||"Self"===i.__proto__.ngMetadataName)n.self=!0;else if(i instanceof Ce||"Host"===i.__proto__.ngMetadataName)n.host=!0;else if(i instanceof Te)n.token=i.token;else if(i instanceof A){if(void 0===i.attributeName)throw new Error("Attribute name must be defined.");n.token=i.attributeName,n.resolved=t.R3ResolvedDependencyType.Attribute}else a(i)}}else a(e);return n}(e,t)})}var _d=[],xd=[],Td=!1;function wd(t){return Array.isArray(t)?t.every(wd):!!J(t)}function Sd(t,e){void 0===e&&(e={}),Od(t,e),function(t,e){xd.push({moduleType:t,ngModule:e})}(t,e)}function Od(t,e){var n,a,r=Rd(e.declarations||_d),i=null;Object.defineProperty(t,m,{configurable:!0,get:function(){return null===i&&(i=ve().compileNgModule(Qc,"ng://"+t.name+"/ngModuleDef.js",{type:t,bootstrap:Rd(e.bootstrap||_d,J),declarations:r.map(J),imports:Rd(e.imports||_d,J).map(Nd),exports:Rd(e.exports||_d,J).map(Nd),emitInline:!0})),i}}),e.id&&(a=t,ad(n=e.id,ed.get(n)),ed.set(n,a));var o=null;Object.defineProperty(t,h,{get:function(){if(null===o){var n={name:t.name,type:t,deps:yd(t),providers:e.providers||_d,imports:[(e.imports||_d).map(J),(e.exports||_d).map(J)]};o=ve().compileInjector(Qc,"ng://"+t.name+"/ngInjectorDef.js",n)}return o},configurable:!1})}function Cd(){new Map,new Map,xd.length=0}function kd(t,e){var n=Rd(e.declarations||_d),a=Dd(t);n.forEach(function(e){e.hasOwnProperty(d)?Id(gt(e),a):e.hasOwnProperty(f)||e.hasOwnProperty(g)||(e.ngSelectorScope=t)})}function Id(t,e){t.directiveDefs=function(){return Array.from(e.compilation.directives).map(function(t){return mt(t)||gt(t)}).filter(function(t){return!!t})},t.pipeDefs=function(){return Array.from(e.compilation.pipes).map(function(t){return bt(t)})}}function Dd(t){if(!Ad(t))throw new Error(t.name+" does not have an ngModuleDef");var e=yt(t);if(null!==e.transitiveCompileScopes)return e.transitiveCompileScopes;var n={compilation:{directives:new Set,pipes:new Set},exported:{directives:new Set,pipes:new Set}};return e.declarations.forEach(function(t){bt(t)?n.compilation.pipes.add(t):n.compilation.directives.add(t)}),e.imports.forEach(function(t){var e=t;if(!Ad(e))throw new Error("Importing "+e.name+" which does not have an ngModuleDef");var a=Dd(e);a.exported.directives.forEach(function(t){return n.compilation.directives.add(t)}),a.exported.pipes.forEach(function(t){return n.compilation.pipes.add(t)})}),e.exports.forEach(function(t){var e=t;if(Ad(e)){var a=Dd(e);a.exported.directives.forEach(function(t){n.compilation.directives.add(t),n.exported.directives.add(t)}),a.exported.pipes.forEach(function(t){n.compilation.pipes.add(t),n.exported.pipes.add(t)})}else bt(e)?n.exported.pipes.add(e):n.exported.directives.add(e)}),e.transitiveCompileScopes=n,n}function Rd(t,e){var n=[];return t.forEach(function(t){Array.isArray(t)?n.push.apply(n,Object(a.__spread)(Rd(t,e))):n.push(e?e(t):t)}),n}function Nd(t){return function(t){return void 0!==t.ngModule}(t)?t.ngModule:t}function Ad(t){return!!yt(t)}function Ed(t,e){var n=null;!function(t){et(t)&&tt.add(t)}(e),Object.defineProperty(t,d,{get:function(){var r=ve();if(null===n){if(et(e)){var i=["Component '"+Zt(t)+"' is not resolved:"];throw e.templateUrl&&i.push(" - templateUrl: "+Zt(e.templateUrl)),e.styleUrls&&e.styleUrls.length&&i.push(" - styleUrls: "+JSON.stringify(e.styleUrls)),i.push("Did you run and wait for 'resolveComponentResources()'?"),new Error(i.join("\n"))}var o=Object(a.__assign)({},Md(t,e),{template:e.template||"",preserveWhitespaces:e.preserveWhitespaces||!1,styles:e.styles||it,animations:e.animations,viewQueries:jd(t,bd().propMetadata(t),Fd),directives:[],changeDetection:e.changeDetection,pipes:new Map,encapsulation:e.encapsulation||at.Emulated,interpolation:e.interpolation,viewProviders:e.viewProviders||null});if(n=r.compileComponent(Qc,"ng://"+Zt(t)+"/template.html",o),function(){if(!Td){Td=!0;try{for(var t=xd.length-1;t>=0;t--){var e=xd[t],n=e.moduleType,a=e.ngModule;a.declarations&&a.declarations.every(wd)&&(xd.splice(t,1),kd(n,a))}}finally{Td=!1}}}(),void 0!==t.ngSelectorScope){var s=Dd(t.ngSelectorScope);Id(n,s)}}return n},configurable:!1})}function Ld(t,e){var n=null;Object.defineProperty(t,f,{get:function(){if(null===n){var a=Md(t,e);n=ve().compileDirective(Qc,"ng://"+(t&&t.name)+"/ngDirectiveDef.js",a)}return n},configurable:!1})}function Pd(t){return Object.getPrototypeOf(t.prototype)===Object.prototype}function Md(t,e){var n=bd().propMetadata(t);return{name:t.name,type:t,typeArgumentCount:0,selector:e.selector,deps:yd(t),host:e.host||rt,propMetadata:n,inputs:e.inputs||it,outputs:e.outputs||it,queries:jd(t,n,qd),lifecycle:{usesOnChanges:void 0!==t.prototype.ngOnChanges},typeSourceSpan:null,usesInheritance:!Pd(t),exportAs:e.exportAs||null,providers:e.providers||null}}function jd(t,e,n){var a=[],r=function(r){e.hasOwnProperty(r)&&e[r].forEach(function(e){if(n(e)){if(!e.selector)throw new Error("Can't construct a query for the property \""+r+'" of "'+Zt(t)+"\" since the query selector wasn't defined.");a.push(function(t,e){return{propertyName:r,predicate:(n=e.selector,"string"==typeof n?n.split(",").map(function(t){return t.trim()}):J(n)),descendants:e.descendants,first:e.first,read:e.read?e.read:null};var n}(0,e))}})};for(var i in e)r(i);return a}function qd(t){var e=t.ngMetadataName;return"ContentChild"===e||"ContentChildren"===e}function Fd(t){var e=t.ngMetadataName;return"ViewChild"===e||"ViewChildren"===e}function zd(t,e){var n=null;Object.defineProperty(t,g,{get:function(){return null===n&&(n=ve().compilePipe(Qc,"ng://"+Zt(t)+"/ngPipeDef.js",{type:t,name:t.name,deps:yd(t),pipeName:e.name,pure:void 0===e.pure||e.pure})),n},configurable:!1})}var Yd=k("Directive",function(t){return void 0===t&&(t={}),t},void 0,void 0,function(t,e){return Qd(t,e)}),Hd=k("Component",function(t){return void 0===t&&(t={}),Object(a.__assign)({changeDetection:q.Default},t)},Yd,void 0,function(t,e){return Jd(t,e)}),Gd=k("Pipe",function(t){return Object(a.__assign)({pure:!0},t)},void 0,void 0,function(t,e){return tf(t,e)}),Vd=function(t){return function(e,n){for(var a=[],r=2;r<arguments.length;r++)a[r-2]=arguments[r];var i=e.constructor;i.hasOwnProperty(b)||function(t){var e=t.constructor,n=e.ngBaseDef,a=e.ngBaseDef={inputs:{},outputs:{},declaredInputs:{}};n&&(c(a.inputs,n.inputs),c(a.outputs,n.outputs),c(a.declaredInputs,n.declaredInputs))}(e),t(i.ngBaseDef)[n]=a[0]}},Bd=R("Input",function(t){return{bindingPropertyName:t}},void 0,Vd(function(t){return t.inputs||{}})),Ud=R("Output",function(t){return{bindingPropertyName:t}},void 0,Vd(function(t){return t.outputs||{}})),Wd=R("HostBinding",function(t){return{hostPropertyName:t}}),Kd=R("HostListener",function(t,e){return{eventName:t,args:e}}),$d=Ed,Zd=Ld,Xd=zd,Jd=us,Qd=us,tf=us,ef=l({provide:String,useValue:l}),nf=[];function af(t,e){if(!e){var n=(l=new pd).parameters(t);return function(){return new(t.bind.apply(t,Object(a.__spread)([void 0],Le(n))))}}if(ef in e){var r=e;return function(){return r.useValue}}if(e.useExisting){var i=e;return function(){return Ae(i.useExisting)}}if(e.useFactory){var o=e;return function(){return o.useFactory.apply(o,Object(a.__spread)(Le(o.deps||nf)))}}if(e.useClass){var s=e,u=e.deps;if(!u){var l=new pd;u=l.parameters(t)}return function(){var t;return new((t=s.useClass).bind.apply(t,Object(a.__spread)([void 0],Le(u))))}}var c=e.deps;return c||(l=new pd,c=l.parameters(t)),function(){return new(t.bind.apply(t,Object(a.__spread)([void 0],Le(c))))}}var rf={name:"custom-elements"},of={name:"no-errors-schema"},sf=k("NgModule",function(t){return t},void 0,void 0,function(t,e){return lf(t,e)}),uf=Sd,lf=function(t,e){var n=e&&e.imports||[];e&&e.exports&&(n=Object(a.__spread)(n,[e.exports])),t.ngInjectorDef=_({factory:af(t,{useClass:t}),providers:e&&e.providers,imports:n})},cf=l({provide:String,useValue:l});function df(t){return void 0!==t.useClass}function ff(t){return cf in t}function pf(t){return void 0!==t.useFactory}function hf(t){return void 0!==t.useExisting}var gf=k("Injectable",void 0,void 0,void 0,function(t,e){return bf(t,e)}),mf=function(t,e){var n=null;t.hasOwnProperty(p)||Object.defineProperty(t,p,{get:function(){if(null===n){var a=e||{providedIn:null},r=df(a)||pf(a)||ff(a)||hf(a),i={name:t.name,type:t,typeArgumentCount:0,providedIn:a.providedIn,ctorDeps:yd(t),userDeps:void 0};if((df(a)||pf(a))&&void 0!==a.deps&&(i.userDeps=vd(a.deps)),r)if(df(a))i.useClass=a.useClass;else if(ff(a))i.useValue=a.useValue;else if(pf(a))i.useFactory=a.useFactory;else{if(!hf(a))throw new Error("Unreachable state.");i.useExisting=a.useExisting}else i.useClass=t;n=ve().compileInjectable(Qc,"ng://"+t.name+"/ngInjectableDef.js",i)}return n}})},bf=function(t,e){e&&void 0!==e.providedIn&&!x(t)&&(t.ngInjectableDef=v({providedIn:e.providedIn,factory:af(t,e)}))},yf="ngDebugContext",vf="ngOriginalError",_f="ngErrorLogger";function xf(t){return t[yf]}function Tf(t){return t[vf]}function wf(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];t.error.apply(t,Object(a.__spread)(e))}var Sf=function(){function t(){this._console=console}return t.prototype.handleError=function(t){var e=this._findOriginalError(t),n=this._findContext(t),a=function(t){return t[_f]||wf}(t);a(this._console,"ERROR",t),e&&a(this._console,"ORIGINAL ERROR",e),n&&a(this._console,"ERROR CONTEXT",n)},t.prototype._findContext=function(t){return t?xf(t)?xf(t):this._findContext(Tf(t)):null},t.prototype._findOriginalError=function(t){for(var e=Tf(t);e&&Tf(e);)e=Tf(e);return e},t}();function Of(t){return t.length>1?" ("+function(t){for(var e=[],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(function(t){return $(t.token)}).join(" -> ")+")":""}function Cf(t,e,n,a){var r=[e],i=n(r),o=a?function(t,e){var n=i+" caused by: "+(e instanceof Error?e.message:e),a=Error(n);return a[vf]=e,a}(0,a):Error(i);return o.addKey=kf,o.keys=r,o.injectors=[t],o.constructResolvingMessage=n,o[vf]=a,o}function kf(t,e){this.injectors.push(t),this.keys.push(e),this.message=this.constructResolvingMessage(this.keys)}function If(t,e){for(var n=[],a=0,r=e.length;a<r;a++){var i=e[a];n.push(i&&0!=i.length?i.map($).join(" "):"?")}return Error("Cannot resolve all parameters for '"+$(t)+"'("+n.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+$(t)+"' is decorated with Injectable.")}var Df=function(){function t(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must be defined!");this.displayName=$(this.token)}return t.get=function(t){return Rf.get(J(t))},Object.defineProperty(t,"numberOfKeys",{get:function(){return Rf.numberOfKeys},enumerable:!0,configurable:!0}),t}(),Rf=new(function(){function t(){this._allKeys=new Map}return t.prototype.get=function(t){if(t instanceof Df)return t;if(this._allKeys.has(t))return this._allKeys.get(t);var e=new Df(t,Df.numberOfKeys);return this._allKeys.set(t,e),e},Object.defineProperty(t.prototype,"numberOfKeys",{get:function(){return this._allKeys.size},enumerable:!0,configurable:!0}),t}()),Nf=new(function(){function t(t){this.reflectionCapabilities=t}return t.prototype.updateCapabilities=function(t){this.reflectionCapabilities=t},t.prototype.factory=function(t){return this.reflectionCapabilities.factory(t)},t.prototype.parameters=function(t){return this.reflectionCapabilities.parameters(t)},t.prototype.annotations=function(t){return this.reflectionCapabilities.annotations(t)},t.prototype.propMetadata=function(t){return this.reflectionCapabilities.propMetadata(t)},t.prototype.hasLifecycleHook=function(t,e){return this.reflectionCapabilities.hasLifecycleHook(t,e)},t.prototype.getter=function(t){return this.reflectionCapabilities.getter(t)},t.prototype.setter=function(t){return this.reflectionCapabilities.setter(t)},t.prototype.method=function(t){return this.reflectionCapabilities.method(t)},t.prototype.importUri=function(t){return this.reflectionCapabilities.importUri(t)},t.prototype.resourceUri=function(t){return this.reflectionCapabilities.resourceUri(t)},t.prototype.resolveIdentifier=function(t,e,n,a){return this.reflectionCapabilities.resolveIdentifier(t,e,n,a)},t.prototype.resolveEnum=function(t,e){return this.reflectionCapabilities.resolveEnum(t,e)},t}())(new pd),Af=function(){function t(t,e,n){this.key=t,this.optional=e,this.visibility=n}return t.fromKey=function(e){return new t(e,!1,null)},t}(),Ef=[],Lf=function(){return function(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n,this.resolvedFactory=this.resolvedFactories[0]}}(),Pf=function(){return function(t,e){this.factory=t,this.dependencies=e}}();function Mf(t){var e,n;if(t.useClass){var a=J(t.useClass);e=Nf.factory(a),n=Ff(a)}else t.useExisting?(e=function(t){return t},n=[Af.fromKey(Df.get(t.useExisting))]):t.useFactory?(e=t.useFactory,n=function(t,e){if(e){var n=e.map(function(t){return[t]});return e.map(function(e){return zf(t,e,n)})}return Ff(t)}(t.useFactory,t.deps)):(e=function(){return t.useValue},n=Ef);return new Pf(e,n)}function jf(t){return new Lf(Df.get(t.provide),[Mf(t)],t.multi||!1)}function qf(t){var e=function(t,e){for(var n=0;n<t.length;n++){var 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(var i=0;i<a.resolvedFactories.length;i++)r.resolvedFactories.push(a.resolvedFactories[i]);else e.set(a.key.id,a)}else{var o;o=a.multiProvider?new Lf(a.key,a.resolvedFactories.slice(),a.multiProvider):a,e.set(a.key.id,o)}}return e}(function t(e,n){return e.forEach(function(e){if(e instanceof ud)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(jf),new Map);return Array.from(e.values())}function Ff(t){var e=Nf.parameters(t);if(!e)return[];if(e.some(function(t){return null==t}))throw If(t,e);return e.map(function(n){return zf(t,n,e)})}function zf(t,e,n){var a=null,r=!1;if(!Array.isArray(e))return Yf(e instanceof Te?e.token:e,r,null);for(var i=null,o=0;o<e.length;++o){var s=e[o];s instanceof ud?a=s:s instanceof Te?a=s.token:s instanceof we?r=!0:s instanceof Se||s instanceof Oe?i=s:s instanceof w&&(a=s)}if(null!=(a=J(a)))return Yf(a,r,i);throw If(t,n)}function Yf(t,e,n){return new Af(Df.get(t),e,n)}var Hf=new Object,Gf=function(){function t(){}return t.resolve=function(t){return qf(t)},t.resolveAndCreate=function(e,n){var a=t.resolve(e);return t.fromResolvedProviders(a,n)},t.fromResolvedProviders=function(t,e){return new Vf(t,e)},t}(),Vf=function(){function t(t,e){this._constructionCounter=0,this._providers=t,this.parent=e||null;var n=t.length;this.keyIds=new Array(n),this.objs=new Array(n);for(var a=0;a<n;a++)this.keyIds[a]=t[a].key.id,this.objs[a]=Hf}return t.prototype.get=function(t,e){return void 0===e&&(e=ds),this._getByKey(Df.get(t),null,e)},t.prototype.resolveAndCreateChild=function(t){var e=Gf.resolve(t);return this.createChildFromResolved(e)},t.prototype.createChildFromResolved=function(e){var n=new t(e);return n.parent=this,n},t.prototype.resolveAndInstantiate=function(t){return this.instantiateResolved(Gf.resolve([t])[0])},t.prototype.instantiateResolved=function(t){return this._instantiateProvider(t)},t.prototype.getProviderAtIndex=function(t){if(t<0||t>=this._providers.length)throw function(t){return Error("Index "+t+" is out-of-bounds.")}(t);return this._providers[t]},t.prototype._new=function(t){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw Cf(this,t.key,function(t){return"Cannot instantiate cyclic dependency!"+Of(t)});return this._instantiateProvider(t)},t.prototype._getMaxNumberOfObjects=function(){return this.objs.length},t.prototype._instantiateProvider=function(t){if(t.multiProvider){for(var e=new Array(t.resolvedFactories.length),n=0;n<t.resolvedFactories.length;++n)e[n]=this._instantiate(t,t.resolvedFactories[n]);return e}return this._instantiate(t,t.resolvedFactories[0])},t.prototype._instantiate=function(t,e){var n,r,i,o=this,s=e.factory;try{n=e.dependencies.map(function(t){return o._getByReflectiveDependency(t)})}catch(u){throw u.addKey&&u.addKey(this,t.key),u}try{r=s.apply(void 0,Object(a.__spread)(n))}catch(u){throw Cf(this,t.key,function(t){var e=$(t[0].token);return i.message+": Error during instantiation of "+e+"!"+Of(t)+"."},i=u)}return r},t.prototype._getByReflectiveDependency=function(t){return this._getByKey(t.key,t.visibility,t.optional?null:ds)},t.prototype._getByKey=function(e,n,a){return e===t.INJECTOR_KEY?this:n instanceof Se?this._getByKeySelf(e,a):this._getByKeyDefault(e,a,n)},t.prototype._getObjByKeyId=function(t){for(var e=0;e<this.keyIds.length;e++)if(this.keyIds[e]===t)return this.objs[e]===Hf&&(this.objs[e]=this._new(this._providers[e])),this.objs[e];return Hf},t.prototype._throwOrNull=function(t,e){if(e!==ds)return e;throw function(t,e){return Cf(t,e,function(t){return"No provider for "+$(t[0].token)+"!"+Of(t)})}(this,t)},t.prototype._getByKeySelf=function(t,e){var n=this._getObjByKeyId(t.id);return n!==Hf?n:this._throwOrNull(t,e)},t.prototype._getByKeyDefault=function(e,n,a){var r;for(r=a instanceof Oe?this.parent:this;r instanceof t;){var i=r,o=i._getObjByKeyId(e.id);if(o!==Hf)return o;r=i.parent}return null!==r?r.get(e.token,n):this._throwOrNull(e,n)},Object.defineProperty(t.prototype,"displayName",{get:function(){return"ReflectiveInjector(providers: ["+function(t,e){for(var n=new Array(t._providers.length),a=0;a<t._providers.length;++a)n[a]=' "'+t.getProviderAtIndex(a).key.displayName+'" ';return n}(this).join(", ")+"])"},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this.displayName},t.INJECTOR_KEY=Df.get(hs),t}();function Bf(t){return!!t&&"function"==typeof t.then}function Uf(t){return!!t&&"function"==typeof t.subscribe}var Wf=new w("Application Initializer"),Kf=function(){function t(t){var e=this;this.appInits=t,this.initialized=!1,this.done=!1,this.donePromise=new Promise(function(t,n){e.resolve=t,e.reject=n})}return t.prototype.runInitializers=function(){var t=this;if(!this.initialized){var e=[],n=function(){t.done=!0,t.resolve()};if(this.appInits)for(var a=0;a<this.appInits.length;a++){var r=this.appInits[a]();Bf(r)&&e.push(r)}Promise.all(e).then(function(){n()}).catch(function(e){t.reject(e)}),0===e.length&&n(),this.initialized=!0}},t}(),$f=new w("AppId");function Zf(){return""+Jf()+Jf()+Jf()}var Xf={provide:$f,useFactory:Zf,deps:[]};function Jf(){return String.fromCharCode(97+Math.floor(25*Math.random()))}var Qf=new w("Platform Initializer"),tp=new w("Platform ID"),ep=new w("appBootstrapListener"),np=new w("Application Packages Root URL"),ap=function(){function t(){}return t.prototype.log=function(t){console.log(t)},t.prototype.warn=function(t){console.warn(t)},t}(),rp=function(){return function(t,e){this.ngModuleFactory=t,this.componentFactories=e}}();function ip(){throw new Error("Runtime compiler is not loaded")}var op,sp,up=function(t){return new Kl(t)},lp=ip,cp=function(t){return Promise.resolve(up(t))},dp=ip,fp=function(t){return new rp(up(t),[])},pp=ip,hp=function(t){return Promise.resolve(fp(t))},gp=ip,mp=function(){function t(){this.compileModuleSync=lp,this.compileModuleAsync=dp,this.compileModuleAndAllComponentsSync=pp,this.compileModuleAndAllComponentsAsync=gp}return t.prototype.clearCache=function(){},t.prototype.clearCacheFor=function(t){},t.prototype.getModuleId=function(t){},t}(),bp=new w("compilerOptions"),yp=function(){return function(){}}();function vp(){var t=G.wtf;return!(!t||!(op=t.trace)||(sp=op.events,0))}function _p(t,e){return void 0===e&&(e=null),sp.createScope(t,e)}function xp(t,e){return op.leaveScope(t,e),e}function Tp(t,e){return op.beginTimeRange(t,e)}function wp(t){op.endTimeRange(t)}var Sp=vp();function Op(t,e){return null}var Cp=Sp?_p:function(t,e){return Op},kp=Sp?xp:function(t,e){return e},Ip=Sp?Tp:function(t,e){return null},Dp=Sp?wp:function(t){return null},Rp=function(){function t(t){var e,n=t.enableLongStackTrace,a=void 0!==n&&n;if(this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new hc(!1),this.onMicrotaskEmpty=new hc(!1),this.onStable=new hc(!1),this.onError=new hc(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");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)),a&&Zone.longStackTraceZoneSpec&&(this._inner=this._inner.fork(Zone.longStackTraceZoneSpec)),(e=this)._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:function(t,n,a,r,i,o){try{return Lp(e),t.invokeTask(a,r,i,o)}finally{Pp(e)}},onInvoke:function(t,n,a,r,i,o,s){try{return Lp(e),t.invoke(a,r,i,o,s)}finally{Pp(e)}},onHasTask:function(t,n,a,r){t.hasTask(a,r),n===a&&("microTask"==r.change?(e.hasPendingMicrotasks=r.microTask,Ep(e)):"macroTask"==r.change&&(e.hasPendingMacrotasks=r.macroTask))},onHandleError:function(t,n,a,r){return t.handleError(a,r),e.runOutsideAngular(function(){return e.onError.emit(r)}),!1}})}return t.isInAngularZone=function(){return!0===Zone.current.get("isAngularZone")},t.assertInAngularZone=function(){if(!t.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")},t.assertNotInAngularZone=function(){if(t.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")},t.prototype.run=function(t,e,n){return this._inner.run(t,e,n)},t.prototype.runTask=function(t,e,n,a){var r=this._inner,i=r.scheduleEventTask("NgZoneEvent: "+a,t,Ap,Np,Np);try{return r.runTask(i,e,n)}finally{r.cancelTask(i)}},t.prototype.runGuarded=function(t,e,n){return this._inner.runGuarded(t,e,n)},t.prototype.runOutsideAngular=function(t){return this._outer.run(t)},t}();function Np(){}var Ap={};function Ep(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(function(){return t.onStable.emit(null)})}finally{t.isStable=!0}}}function Lp(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Pp(t){t._nesting--,Ep(t)}var Mp=function(){function t(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new hc,this.onMicrotaskEmpty=new hc,this.onStable=new hc,this.onError=new hc}return t.prototype.run=function(t){return t()},t.prototype.runGuarded=function(t){return t()},t.prototype.runOutsideAngular=function(t){return t()},t.prototype.runTask=function(t){return t()},t}(),jp=function(){function t(t){var e=this;this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),t.run(function(){e.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}return t.prototype._watchAngularEvents=function(){var t=this;this._ngZone.onUnstable.subscribe({next:function(){t._didWork=!0,t._isZoneStable=!1}}),this._ngZone.runOutsideAngular(function(){t._ngZone.onStable.subscribe({next:function(){Rp.assertNotInAngularZone(),W(function(){t._isZoneStable=!0,t._runCallbacksIfReady()})}})})},t.prototype.increasePendingRequestCount=function(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount},t.prototype.decreasePendingRequestCount=function(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount},t.prototype.isStable=function(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks},t.prototype._runCallbacksIfReady=function(){var t=this;if(this.isStable())W(function(){for(;0!==t._callbacks.length;){var e=t._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(t._didWork)}t._didWork=!1});else{var e=this.getPendingTasks();this._callbacks=this._callbacks.filter(function(t){return!t.updateCb||!t.updateCb(e)||(clearTimeout(t.timeoutId),!1)}),this._didWork=!0}},t.prototype.getPendingTasks=function(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(function(t){return{source:t.source,creationLocation:t.creationLocation,data:t.data}}):[]},t.prototype.addCallback=function(t,e,n){var a=this,r=-1;e&&e>0&&(r=setTimeout(function(){a._callbacks=a._callbacks.filter(function(t){return t.timeoutId!==r}),t(a._didWork,a.getPendingTasks())},e)),this._callbacks.push({doneCb:t,timeoutId:r,updateCb:n})},t.prototype.whenStable=function(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()},t.prototype.getPendingRequestCount=function(){return this._pendingCount},t.prototype.findProviders=function(t,e,n){return[]},t}(),qp=function(){function t(){this._applications=new Map,Yp.addToWindow(this)}return t.prototype.registerApplication=function(t,e){this._applications.set(t,e)},t.prototype.unregisterApplication=function(t){this._applications.delete(t)},t.prototype.unregisterAllApplications=function(){this._applications.clear()},t.prototype.getTestability=function(t){return this._applications.get(t)||null},t.prototype.getAllTestabilities=function(){return Array.from(this._applications.values())},t.prototype.getAllRootElements=function(){return Array.from(this._applications.keys())},t.prototype.findTestabilityInTree=function(t,e){return void 0===e&&(e=!0),Yp.findTestabilityInTree(this,t,e)},Object(a.__decorate)([Object(a.__metadata)("design:paramtypes",[])],t)}();function Fp(t){Yp=t}var zp,Yp=new(function(){function t(){}return t.prototype.addToWindow=function(t){},t.prototype.findTestabilityInTree=function(t,e,n){return null},t}());function Hp(t,e,n){return Promise.resolve(new Kl(n))}var Gp=new w("AllowMultipleToken"),Vp=function(){return function(t,e){this.name=t,this.token=e}}();function Bp(t){if(zp&&!zp.destroyed&&!zp.injector.get(Gp,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");zp=t.get(Zp);var e=t.get(Qf,null);return e&&e.forEach(function(t){return t()}),zp}function Up(t,e,n){void 0===n&&(n=[]);var a="Platform: "+e,r=new w(a);return function(e){void 0===e&&(e=[]);var i=$p();if(!i||i.injector.get(Gp,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{var o=n.concat(e).concat({provide:r,useValue:!0});Bp(hs.create({providers:o,name:a}))}return Wp(r)}}function Wp(t){var e=$p();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 Kp(){zp&&!zp.destroyed&&zp.destroy()}function $p(){return zp&&!zp.destroyed?zp:null}var Zp=function(){function t(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}return t.prototype.bootstrapModuleFactory=function(t,e){var n,a=this,r="noop"===(n=e?e.ngZone:void 0)?new Mp:("zone.js"===n?void 0:n)||new Rp({enableLongStackTrace:Fu()}),i=[{provide:Rp,useValue:r}];return r.run(function(){var e=hs.create({providers:i,parent:a.injector,name:t.moduleType.name}),n=t.create(e),o=n.injector.get(Sf,null);if(!o)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return n.onDestroy(function(){return Qp(a._modules,n)}),r.runOutsideAngular(function(){return r.onError.subscribe({next:function(t){o.handleError(t)}})}),function(t,e,r){try{var i=((o=n.injector.get(Kf)).runInitializers(),o.donePromise.then(function(){return a._moduleDoBootstrap(n),n}));return Bf(i)?i.catch(function(n){throw e.runOutsideAngular(function(){return t.handleError(n)}),n}):i}catch(s){throw e.runOutsideAngular(function(){return t.handleError(s)}),s}var o}(o,r)})},t.prototype.bootstrapModule=function(t,e){var n=this;void 0===e&&(e=[]);var a=Xp({},e);return function(t,e,n){return t.get(yp).createCompiler([e]).compileModuleAsync(n)}(this.injector,a,t).then(function(t){return n.bootstrapModuleFactory(t,a)})},t.prototype._moduleDoBootstrap=function(t){var e=t.injector.get(Jp);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach(function(t){return e.bootstrap(t)});else{if(!t.instance.ngDoBootstrap)throw new Error("The module "+$(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)},t.prototype.onDestroy=function(t){this._destroyListeners.push(t)},Object.defineProperty(t.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(function(t){return t.destroy()}),this._destroyListeners.forEach(function(t){return t()}),this._destroyed=!0},Object.defineProperty(t.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!0,configurable:!0}),t}();function Xp(t,e){return Array.isArray(e)?e.reduce(Xp,t):Object(a.__assign)({},t,e)}var Jp=function(){function t(t,e,n,a,r,i){var l=this;this._zone=t,this._console=e,this._injector=n,this._exceptionHandler=a,this._componentFactoryResolver=r,this._initStatus=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=Fu(),this._zone.onMicrotaskEmpty.subscribe({next:function(){l._zone.run(function(){l.tick()})}});var c=new o.a(function(t){l._stable=l._zone.isStable&&!l._zone.hasPendingMacrotasks&&!l._zone.hasPendingMicrotasks,l._zone.runOutsideAngular(function(){t.next(l._stable),t.complete()})}),d=new o.a(function(t){var e;l._zone.runOutsideAngular(function(){e=l._zone.onStable.subscribe(function(){Rp.assertNotInAngularZone(),W(function(){l._stable||l._zone.hasPendingMacrotasks||l._zone.hasPendingMicrotasks||(l._stable=!0,t.next(!0))})})});var n=l._zone.onUnstable.subscribe(function(){Rp.assertInAngularZone(),l._stable&&(l._stable=!1,l._zone.runOutsideAngular(function(){t.next(!1)}))});return function(){e.unsubscribe(),n.unsubscribe()}});this.isStable=Object(s.a)(c,d.pipe(Object(u.a)()))}var e;return e=t,t.prototype.bootstrap=function(t,e){var n,a=this;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.");n=t instanceof Xs?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);var r=n instanceof ou?null:this._injector.get(su),i=n.create(hs.NULL,[],e||n.selector,r);i.onDestroy(function(){a._unloadComponent(i)});var o=i.injector.get(jp,null);return o&&i.injector.get(qp).registerApplication(i.location.nativeElement,o),this._loadComponent(i),Fu()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),i},t.prototype.tick=function(){var t=this;if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");var n=e._tickScope();try{this._runningTick=!0,this._views.forEach(function(t){return t.detectChanges()}),this._enforceNoNewChanges&&this._views.forEach(function(t){return t.checkNoChanges()})}catch(a){this._zone.runOutsideAngular(function(){return t._exceptionHandler.handleError(a)})}finally{this._runningTick=!1,kp(n)}},t.prototype.attachView=function(t){var e=t;this._views.push(e),e.attachToAppRef(this)},t.prototype.detachView=function(t){var e=t;Qp(this._views,e),e.detachFromAppRef()},t.prototype._loadComponent=function(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(ep,[]).concat(this._bootstrapListeners).forEach(function(e){return e(t)})},t.prototype._unloadComponent=function(t){this.detachView(t.hostView),Qp(this.components,t)},t.prototype.ngOnDestroy=function(){this._views.slice().forEach(function(t){return t.destroy()})},Object.defineProperty(t.prototype,"viewCount",{get:function(){return this._views.length},enumerable:!0,configurable:!0}),t._tickScope=Cp("ApplicationRef#tick()"),t}();function Qp(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}var th=function(){function t(){this.dirty=!0,this._results=[],this.changes=new hc,this.length=0}return t.prototype.map=function(t){return this._results.map(t)},t.prototype.filter=function(t){return this._results.filter(t)},t.prototype.find=function(t){return this._results.find(t)},t.prototype.reduce=function(t,e){return this._results.reduce(t,e)},t.prototype.forEach=function(t){this._results.forEach(t)},t.prototype.some=function(t){return this._results.some(t)},t.prototype.toArray=function(){return this._results.slice()},t.prototype[U()]=function(){return this._results[U()]()},t.prototype.toString=function(){return this._results.toString()},t.prototype.reset=function(t){this._results=function t(e){return e.reduce(function(e,n){var a=Array.isArray(n)?t(n):n;return e.concat(a)},[])}(t),this.dirty=!1,this.length=this._results.length,this.last=this._results[this.length-1],this.first=this._results[0]},t.prototype.notifyOnChanges=function(){this.changes.emit(this)},t.prototype.setDirty=function(){this.dirty=!0},t.prototype.destroy=function(){this.changes.complete(),this.changes.unsubscribe()},t}(),eh=function(){return function(){}}(),nh={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"},ah=function(){function t(t,e){this._compiler=t,this._config=e||nh}return t.prototype.load=function(t){return this._compiler instanceof mp?this.loadFactory(t):this.loadAndCompile(t)},t.prototype.loadAndCompile=function(t){var e=this,r=Object(a.__read)(t.split("#"),2),i=r[0],o=r[1];return void 0===o&&(o="default"),n("crnd")(i).then(function(t){return t[o]}).then(function(t){return rh(t,i,o)}).then(function(t){return e._compiler.compileModuleAsync(t)})},t.prototype.loadFactory=function(t){var e=Object(a.__read)(t.split("#"),2),r=e[0],i=e[1],o="NgFactory";return void 0===i&&(i="default",o=""),n("crnd")(this._config.factoryPathPrefix+r+this._config.factoryPathSuffix).then(function(t){return t[i+o]}).then(function(t){return rh(t,r,i)})},t}();function rh(t,e,n){if(!t)throw new Error("Cannot find '"+n+"' in '"+e+"'");return t}var ih=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return sh(t,hu)},t}(),oh=function(t,e){return function(t,e,n,r){var i;eu||(eu=function(t){function n(e,n,a){var r=t.call(this)||this;return r._lContainer=e,r._hostTNode=n,r._hostView=a,r._viewRefs=[],r}return Object(a.__extends)(n,t),Object.defineProperty(n.prototype,"element",{get:function(){return du(e,this._hostTNode,this._hostView)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"injector",{get:function(){return new Mn(this._hostTNode,this._hostView)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"parentInjector",{get:function(){var t=Cn(this._hostTNode,this._hostView),e=ge(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){for(var a=n.parent.injectorIndex,r=n.parent;null!=r.parent&&a==r.injectorIndex;)r=r.parent;return r}for(var i=he(t),o=e,s=e[Ot];i>1;)s=(o=o[Mt])[Ot],i--;return s}(t,this._hostView,this._hostTNode);return fe(t)&&null!=n?new Mn(n,e):new Mn(null,this._hostView)},enumerable:!0,configurable:!0}),n.prototype.clear=function(){for(;this._lContainer[Ft].length;)this.remove(0)},n.prototype.get=function(t){return this._viewRefs[t]||null},Object.defineProperty(n.prototype,"length",{get:function(){return this._lContainer[Ft].length},enumerable:!0,configurable:!0}),n.prototype.createEmbeddedView=function(t,e,n){var a=this._adjustIndex(n),r=t.createEmbeddedView(e||{},this._lContainer,this._hostTNode,this._hostView,a);return r.attachToViewContainerRef(this),this._viewRefs.splice(a,0,r),r},n.prototype.createComponent=function(t,e,n,a,r){var i=n||this.parentInjector;!r&&null==t.ngModule&&i&&(r=i.get(su,null));var o=t.create(i,a,void 0,r);return this.insert(o.hostView,e),o},n.prototype.insert=function(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var n=t._lView,a=this._adjustIndex(e);return La(n,this._lContainer,this._hostView,a,this._hostTNode.index),Ea(n,!0,Wa(a,this._lContainer[Ft],this._lContainer[zt])),t.attachToViewContainerRef(this),this._viewRefs.splice(a,0,t),t},n.prototype.move=function(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var n=this.indexOf(t);return this.detach(n),this.insert(t,this._adjustIndex(e)),t},n.prototype.indexOf=function(t){return this._viewRefs.indexOf(t)},n.prototype.remove=function(t){var e=this._adjustIndex(t,-1);Ma(this._lContainer,this._hostTNode,e),this._viewRefs.splice(e,1)},n.prototype.detach=function(t){var e=this._adjustIndex(t,-1),n=Pa(this._lContainer,e,!!this._hostTNode.detached);return null!=this._viewRefs.splice(e,1)[0]?new lu(n,n[It],n[Lt]):null},n.prototype._adjustIndex=function(t,e){return void 0===e&&(e=0),null==t?this._lContainer[Ft].length+e:t},n}(t));var o=r[n.index];if(oe(o))(i=o)[qt]=-1;else{var s=r[Nt].createComment("");if(se(r)){var u=r[Nt],l=te(n,r);Ga(u,Va(u,l),s,function(t,e){return wa(t)?t.nextSibling(e):e.nextSibling}(u,l))}else Ba(s,n,r);r[n.index]=i=to(o,n,r,s,!0),fo(r,n.index,i)}return new eu(i,n,r)}(t,e,Qe(),Xe())},sh=us,uh=function(){function t(){}return t.__NG_ELEMENT_ID__=function(){return ch()},t}(),lh=function(){return pu(Qe(),Xe(),null)},ch=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},dh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(uh),fh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e}(dh),ph=function(){return function(t,e){this.name=t,this.callback=e}}(),hh=function(){function t(t,e,n){this.listeners=[],this.parent=null,this._debugContext=n,this.nativeNode=t,e&&e instanceof gh&&e.addChild(this)}return Object.defineProperty(t.prototype,"injector",{get:function(){return this._debugContext.injector},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentInstance",{get:function(){return this._debugContext.component},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._debugContext.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){return this._debugContext.references},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){return this._debugContext.providerTokens},enumerable:!0,configurable:!0}),t}(),gh=function(t){function e(e,n,a){var r=t.call(this,e,n,a)||this;return r.properties={},r.attributes={},r.classes={},r.styles={},r.childNodes=[],r.nativeElement=e,r}return Object(a.__extends)(e,t),e.prototype.addChild=function(t){t&&(this.childNodes.push(t),t.parent=this)},e.prototype.removeChild=function(t){var e=this.childNodes.indexOf(t);-1!==e&&(t.parent=null,this.childNodes.splice(e,1))},e.prototype.insertChildrenAfter=function(t,e){var n,r=this,i=this.childNodes.indexOf(t);-1!==i&&((n=this.childNodes).splice.apply(n,Object(a.__spread)([i+1,0],e)),e.forEach(function(e){e.parent&&e.parent.removeChild(e),t.parent=r}))},e.prototype.insertBefore=function(t,e){var 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))},e.prototype.query=function(t){return this.queryAll(t)[0]||null},e.prototype.queryAll=function(t){var e=[];return bh(this,t,e),e},e.prototype.queryAllNodes=function(t){var e=[];return yh(this,t,e),e},Object.defineProperty(e.prototype,"children",{get:function(){return this.childNodes.filter(function(t){return t instanceof e})},enumerable:!0,configurable:!0}),e.prototype.triggerEventHandler=function(t,e){this.listeners.forEach(function(n){n.name==t&&n.callback(e)})},e}(hh);function mh(t){return t.map(function(t){return t.nativeElement})}function bh(t,e,n){t.childNodes.forEach(function(t){t instanceof gh&&(e(t)&&n.push(t),bh(t,e,n))})}function yh(t,e,n){t instanceof gh&&t.childNodes.forEach(function(t){e(t)&&n.push(t),t instanceof gh&&yh(t,e,n)})}var vh=function(){function t(t){this.nativeNode=t}return Object.defineProperty(t.prototype,"parent",{get:function(){var t=this.nativeNode.parentNode;return t?new _h(t):null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return Jn(this.nativeNode)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentInstance",{get:function(){var t=this.nativeNode;return t&&Wn(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return Kn(this.nativeNode)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listeners",{get:function(){return ra(this.nativeNode).filter(aa)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){return void 0===(t=ta(this.nativeNode)).localRefs&&(t.localRefs=function(e,n){var a=e[vt].data[t.nodeIndex];if(a&&a.localNames){for(var r={},i=0;i<a.localNames.length;i+=2){var o=a.localNames[i+1];r[a.localNames[i]]=-1===o?te(a,e):e[o]}return r}return null}(t.lView)),t.localRefs||{};var t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){return function(t){var e=ta(t,!1);if(!e)return[];for(var n,a=e.lView[vt],r=a.data[e.nodeIndex],i=[],o=r.directiveEnd,s=65535&r.providerIndexes;s<o;s++){var u=a.data[s];void 0!==(n=u).type&&void 0!==n.template&&void 0!==n.declaredInputs&&(u=u.type),i.push(u)}return i}(this.nativeNode)},enumerable:!0,configurable:!0}),t}(),_h=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"nativeElement",{get:function(){return this.nativeNode.nodeType==Node.ELEMENT_NODE?this.nativeNode:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.nativeElement.nodeName},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"properties",{get:function(){return ta(this.nativeNode),{}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"attributes",{get:function(){var t={},e=this.nativeElement;if(e)for(var n=e.attributes,a=0;a<n.length;a++){var r=n[a];t[r.name]=r.value}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"classes",{get:function(){var t={},e=this.nativeElement;if(e){var n=na(e),a=n.lView[n.nodeIndex];if(ur(n.nodeIndex,n.lView)){for(var r=9;r<a.length;r+=4)if(wr(a,r)){var i=zr(a,r),o=Fr(a,r);"boolean"==typeof o&&(t[i]=o)}}else{var s=e.classList;for(r=0;r<s.length;r++)t[s[r]]=!0}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"styles",{get:function(){var t={},e=this.nativeElement;if(e){var n=na(e),a=n.lView[n.nodeIndex];if(ur(n.nodeIndex,n.lView)){for(var r=9;r<a.length;r+=4)if(!wr(a,r)){var i=zr(a,r),o=Fr(a,r);null!==o&&(t[i]=o)}}else{var s=e.style;for(r=0;r<s.length;r++){var u=s.item(r);t[u]=s.getPropertyValue(u)}}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"childNodes",{get:function(){for(var t=this.nativeNode.childNodes,e=[],n=0;n<t.length;n++)e.push(wh(t[n]));return e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"children",{get:function(){var t=this.nativeElement;if(!t)return[];for(var e=t.children,n=[],a=0;a<e.length;a++)n.push(wh(e[a]));return n},enumerable:!0,configurable:!0}),e.prototype.query=function(t){return this.queryAll(t)[0]||null},e.prototype.queryAll=function(t){var e=[];return xh(this,t,e,!0),e},e.prototype.queryAllNodes=function(t){var e=[];return xh(this,t,e,!1),e},e.prototype.triggerEventHandler=function(t,e){this.listeners.forEach(function(n){n.name===t&&n.callback(e)})},e}(vh);function xh(t,e,n,a){t instanceof _h&&t.childNodes.forEach(function(t){e(t)&&n.push(t),t instanceof _h&&(a&&!t.nativeElement||xh(t,e,n,a))})}var Th=new Map;function wh(t){return t instanceof Node?t.nodeType==Node.ELEMENT_NODE?new _h(t):new vh(t):null}var Sh=function(t){return Th.get(t)||null};function Oh(t){Th.set(t.nativeNode,t)}var Ch=hh,kh=gh,Ih=function(){function t(){}return t.prototype.supports=function(t){return da(t)},t.prototype.create=function(t){return new Rh(t)},t}(),Dh=function(t,e){return e},Rh=function(){function t(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||Dh}return t.prototype.forEachItem=function(t){var e;for(e=this._itHead;null!==e;e=e._next)t(e)},t.prototype.forEachOperation=function(t){for(var e=this._itHead,n=this._removalsHead,a=0,r=null;e||n;){var i=!n||e&&e.currentIndex<Lh(n,a,r)?e:n,o=Lh(i,a,r),s=i.currentIndex;if(i===n)a--,n=n._nextRemoved;else if(e=e._next,null==i.previousIndex)a++;else{r||(r=[]);var u=o-a,l=s-a;if(u!=l){for(var c=0;c<u;c++){var d=c<r.length?r[c]:r[c]=0,f=d+c;l<=f&&f<u&&(r[c]=d+1)}r[i.previousIndex]=l-u}}o!==s&&t(i,o,s)}},t.prototype.forEachPreviousItem=function(t){var e;for(e=this._previousItHead;null!==e;e=e._nextPrevious)t(e)},t.prototype.forEachAddedItem=function(t){var e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)},t.prototype.forEachMovedItem=function(t){var e;for(e=this._movesHead;null!==e;e=e._nextMoved)t(e)},t.prototype.forEachRemovedItem=function(t){var e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)},t.prototype.forEachIdentityChange=function(t){var e;for(e=this._identityChangesHead;null!==e;e=e._nextIdentityChange)t(e)},t.prototype.diff=function(t){if(null==t&&(t=[]),!da(t))throw new Error("Error trying to diff '"+$(t)+"'. Only arrays and iterables are allowed");return this.check(t)?this:null},t.prototype.onDestroy=function(){},t.prototype.check=function(t){var e=this;this._reset();var n,a,r,i=this._itHead,o=!1;if(Array.isArray(t)){this.length=t.length;for(var s=0;s<this.length;s++)r=this._trackByFn(s,a=t[s]),null!==i&&K(i.trackById,r)?(o&&(i=this._verifyReinsertion(i,a,r,s)),K(i.item,a)||this._addIdentityChange(i,a)):(i=this._mismatch(i,a,r,s),o=!0),i=i._next}else n=0,function(t,e){if(Array.isArray(t))for(var n=0;n<t.length;n++)e(t[n]);else for(var a=t[U()](),r=void 0;!(r=a.next()).done;)e(r.value)}(t,function(t){r=e._trackByFn(n,t),null!==i&&K(i.trackById,r)?(o&&(i=e._verifyReinsertion(i,t,r,n)),K(i.item,t)||e._addIdentityChange(i,t)):(i=e._mismatch(i,t,r,n),o=!0),i=i._next,n++}),this.length=n;return this._truncate(i),this.collection=t,this.isDirty},Object.defineProperty(t.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead},enumerable:!0,configurable:!0}),t.prototype._reset=function(){if(this.isDirty){var t=void 0,e=void 0;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}},t.prototype._mismatch=function(t,e,n,a){var r;return null===t?r=this._itTail:(r=t._prev,this._remove(t)),null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(n,a))?(K(t.item,e)||this._addIdentityChange(t,e),this._moveAfter(t,r,a)):null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n,null))?(K(t.item,e)||this._addIdentityChange(t,e),this._reinsertAfter(t,r,a)):t=this._addAfter(new Nh(e,n),r,a),t},t.prototype._verifyReinsertion=function(t,e,n,a){var 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},t.prototype._truncate=function(t){for(;null!==t;){var 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)},t.prototype._reinsertAfter=function(t,e,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);var 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},t.prototype._moveAfter=function(t,e,n){return this._unlink(t),this._insertAfter(t,e,n),this._addToMoves(t,n),t},t.prototype._addAfter=function(t,e,n){return this._insertAfter(t,e,n),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t},t.prototype._insertAfter=function(t,e,n){var 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 Eh),this._linkedRecords.put(t),t.currentIndex=n,t},t.prototype._remove=function(t){return this._addToRemovals(this._unlink(t))},t.prototype._unlink=function(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);var e=t._prev,n=t._next;return null===e?this._itHead=n:e._next=n,null===n?this._itTail=e:n._prev=e,t},t.prototype._addToMoves=function(t,e){return t.previousIndex===e?t:(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t,t)},t.prototype._addToRemovals=function(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Eh),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},t.prototype._addIdentityChange=function(t,e){return t.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t},t}(),Nh=function(){return function(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}}(),Ah=function(){function t(){this._head=null,this._tail=null}return t.prototype.add=function(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)},t.prototype.get=function(t,e){var n;for(n=this._head;null!==n;n=n._nextDup)if((null===e||e<=n.currentIndex)&&K(n.trackById,t))return n;return null},t.prototype.remove=function(t){var 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},t}(),Eh=function(){function t(){this.map=new Map}return t.prototype.put=function(t){var e=t.trackById,n=this.map.get(e);n||(n=new Ah,this.map.set(e,n)),n.add(t)},t.prototype.get=function(t,e){var n=this.map.get(t);return n?n.get(t,e):null},t.prototype.remove=function(t){var e=t.trackById;return this.map.get(e).remove(t)&&this.map.delete(e),t},Object.defineProperty(t.prototype,"isEmpty",{get:function(){return 0===this.map.size},enumerable:!0,configurable:!0}),t.prototype.clear=function(){this.map.clear()},t}();function Lh(t,e,n){var a=t.previousIndex;if(null===a)return a;var r=0;return n&&a<n.length&&(r=n[a]),a+e+r}var Ph=function(){function t(){}return t.prototype.supports=function(t){return t instanceof Map||fa(t)},t.prototype.create=function(){return new Mh},t}(),Mh=function(){function t(){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}return Object.defineProperty(t.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead},enumerable:!0,configurable:!0}),t.prototype.forEachItem=function(t){var e;for(e=this._mapHead;null!==e;e=e._next)t(e)},t.prototype.forEachPreviousItem=function(t){var e;for(e=this._previousMapHead;null!==e;e=e._nextPrevious)t(e)},t.prototype.forEachChangedItem=function(t){var e;for(e=this._changesHead;null!==e;e=e._nextChanged)t(e)},t.prototype.forEachAddedItem=function(t){var e;for(e=this._additionsHead;null!==e;e=e._nextAdded)t(e)},t.prototype.forEachRemovedItem=function(t){var e;for(e=this._removalsHead;null!==e;e=e._nextRemoved)t(e)},t.prototype.diff=function(t){if(t){if(!(t instanceof Map||fa(t)))throw new Error("Error trying to diff '"+$(t)+"'. Only maps and objects are allowed")}else t=new Map;return this.check(t)?this:null},t.prototype.onDestroy=function(){},t.prototype.check=function(t){var e=this;this._reset();var n=this._mapHead;if(this._appendAfter=null,this._forEach(t,function(t,a){if(n&&n.key===a)e._maybeAddToChanges(n,t),e._appendAfter=n,n=n._next;else{var r=e._getOrCreateRecordForKey(a,t);n=e._insertBeforeOrAppend(n,r)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(var a=n;null!==a;a=a._nextRemoved)a===this._mapHead&&(this._mapHead=null),this._records.delete(a.key),a._nextRemoved=a._next,a.previousValue=a.currentValue,a.currentValue=null,a._prev=null,a._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty},t.prototype._insertBeforeOrAppend=function(t,e){if(t){var 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},t.prototype._getOrCreateRecordForKey=function(t,e){if(this._records.has(t)){var n=this._records.get(t);this._maybeAddToChanges(n,e);var a=n._prev,r=n._next;return a&&(a._next=r),r&&(r._prev=a),n._next=null,n._prev=null,n}var i=new jh(t);return this._records.set(t,i),i.currentValue=e,this._addToAdditions(i),i},t.prototype._reset=function(){if(this.isDirty){var t=void 0;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}},t.prototype._maybeAddToChanges=function(t,e){K(e,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=e,this._addToChanges(t))},t.prototype._addToAdditions=function(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)},t.prototype._addToChanges=function(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)},t.prototype._forEach=function(t,e){t instanceof Map?t.forEach(e):Object.keys(t).forEach(function(n){return e(t[n],n)})},t}(),jh=function(){return function(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}}(),qh=function(){function t(t){this.factories=t}return t.create=function(e,n){if(null!=n){var a=n.factories.slice();e=e.concat(a)}return new t(e)},t.extend=function(e){return{provide:t,useFactory:function(n){if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return t.create(e,n)},deps:[[t,new Oe,new we]]}},t.prototype.find=function(t){var e,n=this.factories.find(function(e){return e.supports(t)});if(null!=n)return n;throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+((e=t).name||typeof e)+"'")},t.ngInjectableDef=v({providedIn:"root",factory:function(){return new t([new Ih])}}),t}(),Fh=function(){function t(t){this.factories=t}return t.create=function(e,n){if(n){var a=n.factories.slice();e=e.concat(a)}return new t(e)},t.extend=function(e){return{provide:t,useFactory:function(n){if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return t.create(e,n)},deps:[[t,new Oe,new we]]}},t.prototype.find=function(t){var e=this.factories.find(function(e){return e.supports(t)});if(e)return e;throw new Error("Cannot find a differ supporting object '"+t+"'")},t.ngInjectableDef=v({providedIn:"root",factory:function(){return new t([new Ph])}}),t}(),zh=[new Ph],Yh=new qh([new Ih]),Hh=new Fh(zh),Gh=Up(null,"core",[{provide:tp,useValue:"unknown"},{provide:Zp,deps:[hs]},{provide:qp,deps:[]},{provide:ap,deps:[]}]),Vh=new w("LocaleId"),Bh=new w("Translations"),Uh=new w("TranslationsFormat"),Wh=function(t){return t[t.Error=0]="Error",t[t.Warning=1]="Warning",t[t.Ignore=2]="Ignore",t}({});function Kh(){return Yh}function $h(){return Hh}function Zh(t){return t||"en-US"}var Xh=[{provide:Jp,useClass:Jp,deps:[Rp,ap,hs,Sf,ru,Kf]},{provide:Kf,useClass:Kf,deps:[[new we,Wf]]},{provide:mp,useClass:mp,deps:[]},Xf,{provide:qh,useFactory:Kh,deps:[]},{provide:Fh,useFactory:$h,deps:[]},{provide:Vh,useFactory:Zh,deps:[[new Te(Vh),new we,new Oe]]}],Jh=function(){return function(t){}}(),Qh=!0,tg=!1;function eg(t,e,n){var a=t.state,r=1792&a;return r===e?(t.state=-1793&a|n,t.initIndex=-1,!0):r===n}function ng(t,e,n){return(1792&t.state)===e&&t.initIndex<=n&&(t.initIndex=n+1,!0)}function ag(t,e){return t.nodes[e]}function rg(t,e){return t.nodes[e]}function ig(t,e){return t.nodes[e]}function og(t,e){return t.nodes[e]}function sg(t,e){return t.nodes[e]}var ug=function(){return function(){}}(),lg={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};function cg(t,e,n,a){var 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){var n=new Error(t);return dg(n,e),n}(r,t)}function dg(t,e){t[yf]=e,t[_f]=e.logError.bind(e)}function fg(t){return new Error("ViewDestroyedError: Attempt to use a destroyed view: "+t)}var pg=function(){},hg=new Map;function gg(t){var e=hg.get(t);return e||(e=$(t)+"_"+hg.size,hg.set(t,e)),e}function mg(t,e,n,a){if(la.isWrapped(a)){a=la.unwrap(a);var r=t.def.nodes[e].bindingIndex+n,i=la.unwrap(t.oldValues[r]);t.oldValues[r]=new la(i)}return a}var bg="$$undefined",yg="$$empty";function vg(t){return{id:bg,styles:t.styles,encapsulation:t.encapsulation,data:t.data}}var _g=0;function xg(t,e,n,a){return!(!(2&t.state)&&K(t.oldValues[e.bindingIndex+n],a))}function Tg(t,e,n,a){return!!xg(t,e,n,a)&&(t.oldValues[e.bindingIndex+n]=a,!0)}function wg(t,e,n,a){var r=t.oldValues[e.bindingIndex+n];if(1&t.state||!ua(r,a)){var i=e.bindings[n].name;throw cg(lg.createDebugContext(t,e.nodeIndex),i+": "+r,i+": "+a,0!=(1&t.state))}}function Sg(t){for(var e=t;e;)2&e.def.flags&&(e.state|=8),e=e.viewContainerParent||e.parent}function Og(t,e){for(var n=t;n&&n!==e;)n.state|=64,n=n.viewContainerParent||n.parent}function Cg(t,e,n,a){try{return Sg(33554432&t.def.nodes[e].flags?rg(t,e).componentView:t),lg.handleEvent(t,e,n,a)}catch(r){t.root.errorHandler.handleError(r)}}function kg(t){return t.parent?rg(t.parent,t.parentNodeDef.nodeIndex):null}function Ig(t){return t.parent?t.parentNodeDef.parent:null}function Dg(t,e){switch(201347067&e.flags){case 1:return rg(t,e.nodeIndex).renderElement;case 2:return ag(t,e.nodeIndex).renderText}}function Rg(t,e){return t?t+":"+e:e}function Ng(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}function Ag(t){return!(!t.parent||32768&t.parentNodeDef.flags)}function Eg(t){return 1<<t%32}function Lg(t){var e={},n=0,r={};return t&&t.forEach(function(t){var i=Object(a.__read)(t,2),o=i[0],s=i[1];"number"==typeof o?(e[o]=s,n|=Eg(o)):r[o]=s}),{matchedQueries:e,references:r,matchedQueryIds:n}}function Pg(t,e){return t.map(function(t){var n,r,i;return Array.isArray(t)?(i=(n=Object(a.__read)(t,2))[0],r=n[1]):(i=0,r=t),r&&("function"==typeof r||"object"==typeof r)&&e&&Object.defineProperty(r,ls,{value:e,configurable:!0}),{flags:i,token:r,tokenKey:gg(r)}})}function Mg(t,e,n){var a=n.renderParent;return a?0==(1&a.flags)||0==(33554432&a.flags)||a.element.componentRendererType&&a.element.componentRendererType.encapsulation===at.Native?rg(t,n.renderParent.nodeIndex).renderElement:void 0:e}var jg=new WeakMap;function qg(t){var e=jg.get(t);return e||((e=t(function(){return pg})).factory=t,jg.set(t,e)),e}function Fg(t,e,n,a,r){3===e&&(n=t.renderer.parentNode(Dg(t,t.def.lastRenderRootNode))),zg(t,e,0,t.def.nodes.length-1,n,a,r)}function zg(t,e,n,a,r,i,o){for(var s=n;s<=a;s++){var u=t.def.nodes[s];11&u.flags&&Hg(t,u,e,r,i,o),s+=u.childCount}}function Yg(t,e,n,a,r,i){for(var o=t;o&&!Ng(o);)o=o.parent;for(var s=o.parent,u=Ig(o),l=u.nodeIndex+u.childCount,c=u.nodeIndex+1;c<=l;c++){var d=s.def.nodes[c];d.ngContentIndex===e&&Hg(s,d,n,a,r,i),c+=d.childCount}if(!s.parent){var f=t.root.projectableNodes[e];if(f)for(c=0;c<f.length;c++)Gg(t,f[c],n,a,r,i)}}function Hg(t,e,n,a,r,i){if(8&e.flags)Yg(t,e.ngContent.index,n,a,r,i);else{var o=Dg(t,e);if(3===n&&33554432&e.flags&&48&e.bindingFlags?(16&e.bindingFlags&&Gg(t,o,n,a,r,i),32&e.bindingFlags&&Gg(rg(t,e.nodeIndex).componentView,o,n,a,r,i)):Gg(t,o,n,a,r,i),16777216&e.flags)for(var s=rg(t,e.nodeIndex).viewContainer._embeddedViews,u=0;u<s.length;u++)Fg(s[u],n,a,r,i);1&e.flags&&!e.element.name&&zg(t,n,e.nodeIndex+1,e.nodeIndex+e.childCount,a,r,i)}}function Gg(t,e,n,a,r,i){var o=t.renderer;switch(n){case 1:o.appendChild(a,e);break;case 2:o.insertBefore(a,e,r);break;case 3:o.removeChild(a,e);break;case 0:i.push(e)}}var Vg=/^:([^:]+):(.+)$/;function Bg(t){if(":"===t[0]){var e=t.match(Vg);return[e[1],e[2]]}return["",t]}function Ug(t){for(var e=0,n=0;n<t.length;n++)e|=t[n].flags;return e}function Wg(t,e){for(var n="",a=0;a<2*t;a+=2)n=n+e[a]+$g(e[a+1]);return n+e[2*t]}function Kg(t,e,n,a,r,i,o,s,u,l,c,d,f,p,h,g,m,b,y,v){switch(t){case 1:return e+$g(n)+a;case 2:return e+$g(n)+a+$g(r)+i;case 3:return e+$g(n)+a+$g(r)+i+$g(o)+s;case 4:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l;case 5:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l+$g(c)+d;case 6:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l+$g(c)+d+$g(f)+p;case 7:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l+$g(c)+d+$g(f)+p+$g(h)+g;case 8:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l+$g(c)+d+$g(f)+p+$g(h)+g+$g(m)+b;case 9:return e+$g(n)+a+$g(r)+i+$g(o)+s+$g(u)+l+$g(c)+d+$g(f)+p+$g(h)+g+$g(m)+b+$g(y)+v;default:throw new Error("Does not support more than 9 expressions")}}function $g(t){return null!=t?t.toString():""}var Zg=[],Xg={};function Jg(t,e,n,a,r,i){t|=1;var o=Lg(e);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,flags:t,checkIndex:-1,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:o.matchedQueries,matchedQueryIds:o.matchedQueryIds,references:o.references,ngContentIndex:n,childCount:a,bindings:[],bindingFlags:0,outputs:[],element:{ns:null,name:null,attrs:null,template:i?qg(i):null,componentProvider:null,componentView:null,componentRendererType:null,publicProviders:null,allProviders:null,handleEvent:r||pg},provider:null,text:null,query:null,ngContent:null}}function Qg(t,e,n,r,i,o,s,u,l,c,d,f){var p;void 0===s&&(s=[]),c||(c=pg);var h=Lg(n),g=h.matchedQueries,m=h.references,b=h.matchedQueryIds,y=null,v=null;o&&(y=(p=Object(a.__read)(Bg(o),2))[0],v=p[1]),u=u||[];for(var _=new Array(u.length),x=0;x<u.length;x++){var T=Object(a.__read)(u[x],3),w=T[0],S=T[1],O=T[2],C=Object(a.__read)(Bg(S),2),k=C[0],I=C[1],D=void 0,R=void 0;switch(15&w){case 4:R=O;break;case 1:case 8:D=O}_[x]={flags:w,ns:k,name:I,nonMinifiedName:I,securityContext:D,suffix:R}}l=l||[];var N=new Array(l.length);for(x=0;x<l.length;x++){var A=Object(a.__read)(l[x],2);N[x]={type:0,target:A[0],eventName:A[1],propName:null}}var E=(s=s||[]).map(function(t){var e=Object(a.__read)(t,2),n=e[0],r=e[1],i=Object(a.__read)(Bg(n),2);return[i[0],i[1],r]});return f=function(t){if(t&&t.id===bg){var e=null!=t.encapsulation&&t.encapsulation!==at.None||t.styles.length||Object.keys(t.data).length;t.id=e?"c"+_g++:yg}return t&&t.id===yg&&(t=null),t||null}(f),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:g,matchedQueryIds:b,references:m,ngContentIndex:r,childCount:i,bindings:_,bindingFlags:Ug(_),outputs:N,element:{ns:y,name:v,attrs:E,template:null,componentProvider:null,componentView:d||null,componentRendererType:f,publicProviders:null,allProviders:null,handleEvent:c||pg},provider:null,text:null,query:null,ngContent:null}}function tm(t,e,n){var r,i=n.element,o=t.root.selectorOrNode,s=t.renderer;if(t.parent||!o){r=i.name?s.createElement(i.name,i.ns):s.createComment("");var u=Mg(t,e,n);u&&s.appendChild(u,r)}else r=s.selectRootElement(o,!!i.componentRendererType&&i.componentRendererType.encapsulation===at.ShadowDom);if(i.attrs)for(var l=0;l<i.attrs.length;l++){var c=Object(a.__read)(i.attrs[l],3);s.setAttribute(r,c[1],c[2],c[0])}return r}function em(t,e,n,a){for(var r=0;r<n.outputs.length;r++){var i=n.outputs[r],o=nm(t,n.nodeIndex,Rg(i.target,i.eventName)),s=i.target,u=t;"component"===i.target&&(s=null,u=e);var l=u.renderer.listen(s||a,i.eventName,o);t.disposables[n.outputIndex+r]=l}}function nm(t,e,n){return function(a){return Cg(t,e,n,a)}}function am(t,e,n,a){if(!Tg(t,e,n,a))return!1;var r=e.bindings[n],i=rg(t,e.nodeIndex),o=i.renderElement,s=r.name;switch(15&r.flags){case 1:!function(t,e,n,a,r,i){var o=e.securityContext,s=o?t.root.sanitizer.sanitize(o,i):i;s=null!=s?s.toString():null;var u=t.renderer;null!=i?u.setAttribute(n,r,s,a):u.removeAttribute(n,r,a)}(t,r,o,r.ns,s,a);break;case 2:!function(t,e,n,a){var r=t.renderer;a?r.addClass(e,n):r.removeClass(e,n)}(t,o,s,a);break;case 4:!function(t,e,n,a,r){var i=t.root.sanitizer.sanitize(Cu.STYLE,r);if(null!=i){i=i.toString();var o=e.suffix;null!=o&&(i+=o)}else i=null;var s=t.renderer;null!=i?s.setStyle(n,a,i):s.removeStyle(n,a)}(t,r,o,s,a);break;case 8:!function(t,e,n,a,r){var i=e.securityContext,o=i?t.root.sanitizer.sanitize(i,r):r;t.renderer.setProperty(n,a,o)}(33554432&e.flags&&32&r.flags?i.componentView:t,r,o,s,a)}return!0}var rm=new Object,im=gg(hs),om=gg(fs),sm=gg(su);function um(t,e,n,a){return n=J(n),{index:-1,deps:Pg(a,$(e)),flags:t,token:e,value:n}}function lm(t){for(var e={},n=[],a=!1,r=0;r<t.length;r++){var i=t[r];i.token===Ds&&!0===i.value&&(a=!0),1073741824&i.flags&&n.push(i.token),i.index=r,e[gg(i.token)]=i}return{factory:null,providersByKey:e,providers:t,modules:n,isRoot:a}}function cm(t,e,n){void 0===n&&(n=hs.THROW_IF_NOT_FOUND);var a,r,i=De(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);var o=e.tokenKey;switch(o){case im:case om:case sm:return t}var s,u=t._def.providersByKey[o];if(u){var l=t._providers[u.index];return void 0===l&&(l=t._providers[u.index]=dm(t,u)),l===rm?void 0:l}if((s=x(e.token))&&(a=t,null!=(r=s).providedIn&&(function(t,e){return t._def.modules.indexOf(r.providedIn)>-1}(a)||"root"===r.providedIn&&a._def.isRoot))){var c=t._providers.length;return t._def.providersByKey[e.tokenKey]={flags:5120,value:s.factory,deps:[],index:c,token:e.token},t._providers[c]=rm,t._providers[c]=dm(t,t._def.providersByKey[e.tokenKey])}return 4&e.flags?n:t._parent.get(e.token,n)}finally{De(i)}}function dm(t,e){var n;switch(201347067&e.flags){case 512:n=function(t,e,n){var r=n.length;switch(r){case 0:return new e;case 1:return new e(cm(t,n[0]));case 2:return new e(cm(t,n[0]),cm(t,n[1]));case 3:return new e(cm(t,n[0]),cm(t,n[1]),cm(t,n[2]));default:for(var i=new Array(r),o=0;o<r;o++)i[o]=cm(t,n[o]);return new(e.bind.apply(e,Object(a.__spread)([void 0],i)))}}(t,e.value,e.deps);break;case 1024:n=function(t,e,n){var r=n.length;switch(r){case 0:return e();case 1:return e(cm(t,n[0]));case 2:return e(cm(t,n[0]),cm(t,n[1]));case 3:return e(cm(t,n[0]),cm(t,n[1]),cm(t,n[2]));default:for(var i=Array(r),o=0;o<r;o++)i[o]=cm(t,n[o]);return e.apply(void 0,Object(a.__spread)(i))}}(t,e.value,e.deps);break;case 2048:n=cm(t,e.deps[0]);break;case 256:n=e.value}return n===rm||null==n||"object"!=typeof n||131072&e.flags||"function"!=typeof n.ngOnDestroy||(e.flags|=131072),void 0===n?rm:n}function fm(t,e){var n=t.viewContainer._embeddedViews;if((null==e||e>=n.length)&&(e=n.length-1),e<0)return null;var a=n[e];return a.viewContainerParent=null,mm(n,e),lg.dirtyParentQueries(a),hm(a),a}function pm(t,e,n){var a=e?Dg(e,e.def.lastRenderRootNode):t.renderElement,r=n.renderer.parentNode(a),i=n.renderer.nextSibling(a);Fg(n,2,r,i,void 0)}function hm(t){Fg(t,3,null,null,void 0)}function gm(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function mm(t,e){e>=t.length-1?t.pop():t.splice(e,1)}var bm=new Object;function ym(t,e,n,a,r,i){return new _m(t,e,n,a,r,i)}function vm(t){return t.viewDefFactory}var _m=function(t){function e(e,n,a,r,i,o){var s=t.call(this)||this;return s.selector=e,s.componentType=n,s._inputs=r,s._outputs=i,s.ngContentSelectors=o,s.viewDefFactory=a,s}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"inputs",{get:function(){var t=[],e=this._inputs;for(var n in e)t.push({propName:n,templateName:e[n]});return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){var t=[];for(var e in this._outputs)t.push({propName:e,templateName:this._outputs[e]});return t},enumerable:!0,configurable:!0}),e.prototype.create=function(t,e,n,a){if(!a)throw new Error("ngModule should be provided");var r=qg(this.viewDefFactory),i=r.nodes[0].element.componentProvider.nodeIndex,o=lg.createRootView(t,e||[],n,r,a,bm),s=ig(o,i).instance;return n&&o.renderer.setAttribute(rg(o,0).renderElement,"ng-version",Du.full),new xm(o,new Om(o),s)},e}(Xs),xm=function(t){function e(e,n,a){var r=t.call(this)||this;return r._view=e,r._viewRef=n,r._component=a,r._elDef=r._view.def.nodes[0],r.hostView=n,r.changeDetectorRef=n,r.instance=a,r}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"location",{get:function(){return new hu(rg(this._view,this._elDef.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"injector",{get:function(){return new Dm(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"componentType",{get:function(){return this._component.constructor},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this._viewRef.destroy()},e.prototype.onDestroy=function(t){this._viewRef.onDestroy(t)},e}(Zs);function Tm(t,e,n){return new wm(t,e,n)}var wm=function(){function t(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embeddedViews=[]}return Object.defineProperty(t.prototype,"element",{get:function(){return new hu(this._data.renderElement)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return new Dm(this._view,this._elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentInjector",{get:function(){for(var t=this._view,e=this._elDef.parent;!e&&t;)e=Ig(t),t=t.parent;return t?new Dm(t,e):new Dm(this._view,null)},enumerable:!0,configurable:!0}),t.prototype.clear=function(){for(var t=this._embeddedViews.length-1;t>=0;t--){var e=fm(this._data,t);lg.destroyView(e)}},t.prototype.get=function(t){var e=this._embeddedViews[t];if(e){var n=new Om(e);return n.attachToViewContainerRef(this),n}return null},Object.defineProperty(t.prototype,"length",{get:function(){return this._embeddedViews.length},enumerable:!0,configurable:!0}),t.prototype.createEmbeddedView=function(t,e,n){var a=t.createEmbeddedView(e||{});return this.insert(a,n),a},t.prototype.createComponent=function(t,e,n,a,r){var i=n||this.parentInjector;r||t instanceof ou||(r=i.get(su));var o=t.create(i,a,void 0,r);return this.insert(o.hostView,e),o},t.prototype.insert=function(t,e){if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var n,a,r,i,o=t;return i=(n=this._data).viewContainer._embeddedViews,null==(a=e)&&(a=i.length),(r=o._view).viewContainerParent=this._view,gm(i,a,r),function(t,e){var n=kg(e);if(n&&n!==t&&!(16&e.state)){e.state|=16;var a=n.template._projectedViews;a||(a=n.template._projectedViews=[]),a.push(e),function(t,n){if(!(4&n.flags)){e.parent.def.nodeFlags|=4,n.flags|=4;for(var a=n.parent;a;)a.childFlags|=4,a=a.parent}}(0,e.parentNodeDef)}}(n,r),lg.dirtyParentQueries(r),pm(n,a>0?i[a-1]:null,r),o.attachToViewContainerRef(this),t},t.prototype.move=function(t,e){if(t.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var n,a,r,i,o,s=this._embeddedViews.indexOf(t._view);return r=e,o=(i=(n=this._data).viewContainer._embeddedViews)[a=s],mm(i,a),null==r&&(r=i.length),gm(i,r,o),lg.dirtyParentQueries(o),hm(o),pm(n,r>0?i[r-1]:null,o),t},t.prototype.indexOf=function(t){return this._embeddedViews.indexOf(t._view)},t.prototype.remove=function(t){var e=fm(this._data,t);e&&lg.destroyView(e)},t.prototype.detach=function(t){var e=fm(this._data,t);return e?new Om(e):null},t}();function Sm(t){return new Om(t)}var Om=function(){function t(t){this._view=t,this._viewContainerRef=null,this._appRef=null}return Object.defineProperty(t.prototype,"rootNodes",{get:function(){return Fg(this._view,0,void 0,void 0,t=[]),t;var t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"destroyed",{get:function(){return 0!=(128&this._view.state)},enumerable:!0,configurable:!0}),t.prototype.markForCheck=function(){Sg(this._view)},t.prototype.detach=function(){this._view.state&=-5},t.prototype.detectChanges=function(){var t=this._view.root.rendererFactory;t.begin&&t.begin();try{lg.checkAndUpdateView(this._view)}finally{t.end&&t.end()}},t.prototype.checkNoChanges=function(){lg.checkNoChangesView(this._view)},t.prototype.reattach=function(){this._view.state|=4},t.prototype.onDestroy=function(t){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(t)},t.prototype.destroy=function(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),lg.destroyView(this._view)},t.prototype.detachFromAppRef=function(){this._appRef=null,hm(this._view),lg.dirtyParentQueries(this._view)},t.prototype.attachToAppRef=function(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t},t.prototype.attachToViewContainerRef=function(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t},t}();function Cm(t,e){return new km(t,e)}var km=function(t){function e(e,n){var a=t.call(this)||this;return a._parentView=e,a._def=n,a}return Object(a.__extends)(e,t),e.prototype.createEmbeddedView=function(t){return new Om(lg.createEmbeddedView(this._parentView,this._def,this._def.element.template,t))},Object.defineProperty(e.prototype,"elementRef",{get:function(){return new hu(rg(this._parentView,this._def.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),e}(gc);function Im(t,e){return new Dm(t,e)}var Dm=function(){function t(t,e){this.view=t,this.elDef=e}return t.prototype.get=function(t,e){return void 0===e&&(e=hs.THROW_IF_NOT_FOUND),lg.resolveDep(this.view,this.elDef,!!this.elDef&&0!=(33554432&this.elDef.flags),{flags:0,token:t,tokenKey:gg(t)},e)},t}();function Rm(t,e){var n=t.def.nodes[e];if(1&n.flags){var a=rg(t,n.nodeIndex);return n.element.template?a.template:a.renderElement}if(2&n.flags)return ag(t,n.nodeIndex).renderText;if(20240&n.flags)return ig(t,n.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+e)}function Nm(t){return new Am(t.renderer)}var Am=function(){function t(t){this.delegate=t}return t.prototype.selectRootElement=function(t){return this.delegate.selectRootElement(t)},t.prototype.createElement=function(t,e){var n=Object(a.__read)(Bg(e),2),r=this.delegate.createElement(n[1],n[0]);return t&&this.delegate.appendChild(t,r),r},t.prototype.createViewRoot=function(t){return t},t.prototype.createTemplateAnchor=function(t){var e=this.delegate.createComment("");return t&&this.delegate.appendChild(t,e),e},t.prototype.createText=function(t,e){var n=this.delegate.createText(e);return t&&this.delegate.appendChild(t,n),n},t.prototype.projectNodes=function(t,e){for(var n=0;n<e.length;n++)this.delegate.appendChild(t,e[n])},t.prototype.attachViewAfter=function(t,e){for(var n=this.delegate.parentNode(t),a=this.delegate.nextSibling(t),r=0;r<e.length;r++)this.delegate.insertBefore(n,e[r],a)},t.prototype.detachView=function(t){for(var e=0;e<t.length;e++){var n=t[e],a=this.delegate.parentNode(n);this.delegate.removeChild(a,n)}},t.prototype.destroyView=function(t,e){for(var n=0;n<e.length;n++)this.delegate.destroyNode(e[n])},t.prototype.listen=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.listenGlobal=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.setElementProperty=function(t,e,n){this.delegate.setProperty(t,e,n)},t.prototype.setElementAttribute=function(t,e,n){var r=Object(a.__read)(Bg(e),2),i=r[0],o=r[1];null!=n?this.delegate.setAttribute(t,o,n,i):this.delegate.removeAttribute(t,o,i)},t.prototype.setBindingDebugInfo=function(t,e,n){},t.prototype.setElementClass=function(t,e,n){n?this.delegate.addClass(t,e):this.delegate.removeClass(t,e)},t.prototype.setElementStyle=function(t,e,n){null!=n?this.delegate.setStyle(t,e,n):this.delegate.removeStyle(t,e)},t.prototype.invokeElementMethod=function(t,e,n){t[e].apply(t,n)},t.prototype.setText=function(t,e){this.delegate.setValue(t,e)},t.prototype.animate=function(){throw new Error("Renderer.animate is no longer supported!")},t}();function Em(t,e,n,a){return new Lm(t,e,n,a)}var Lm=function(){function t(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){for(var e=t._def,n=t._providers=new Array(e.providers.length),a=0;a<e.providers.length;a++){var r=e.providers[a];4096&r.flags||void 0===n[a]&&(n[a]=dm(t,r))}}(this)}return t.prototype.get=function(t,e,n){void 0===e&&(e=hs.THROW_IF_NOT_FOUND),void 0===n&&(n=ke.Default);var a=0;return n&ke.SkipSelf?a|=1:n&ke.Self&&(a|=4),cm(this,{token:t,tokenKey:gg(t),flags:a},e)},Object.defineProperty(t.prototype,"instance",{get:function(){return this.get(this._moduleType)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentFactoryResolver",{get:function(){return this.get(ru)},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){if(this._destroyed)throw new Error("The ng module "+$(this.instance.constructor)+" has already been destroyed.");this._destroyed=!0,function(t,e){for(var n=t._def,a=new Set,r=0;r<n.providers.length;r++)if(131072&n.providers[r].flags){var i=t._providers[r];if(i&&i!==rm){var o=i.ngOnDestroy;"function"!=typeof o||a.has(i)||(o.apply(i),a.add(i))}}}(this),this._destroyListeners.forEach(function(t){return t()})},t.prototype.onDestroy=function(t){this._destroyListeners.push(t)},t}(),Pm=gg(vu),Mm=gg(wu),jm=gg(hu),qm=gg(ih),Fm=gg(gc),zm=gg(uh),Ym=gg(hs),Hm=gg(fs);function Gm(t,e,n,r,i,o,s,u){var l=[];if(s)for(var c in s){var d=Object(a.__read)(s[c],2);l[d[0]]={flags:8,name:c,nonMinifiedName:d[1],ns:null,securityContext:null,suffix:null}}var f=[];if(u)for(var p in u)f.push({type:1,propName:p,target:null,eventName:u[p]});return Um(t,e|=16384,n,r,i,i,o,l,f)}function Vm(t,e,n){return Um(-1,t|=16,null,0,e,e,n)}function Bm(t,e,n,a,r){return Um(-1,t,e,0,n,a,r)}function Um(t,e,n,a,r,i,o,s,u){var l=Lg(n),c=l.matchedQueries,d=l.references,f=l.matchedQueryIds;u||(u=[]),s||(s=[]),i=J(i);var p=Pg(o,$(r));return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:t,flags:e,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:c,matchedQueryIds:f,references:d,ngContentIndex:-1,childCount:a,bindings:s,bindingFlags:Ug(s),outputs:u,element:null,provider:{token:r,value:i,deps:p},text:null,query:null,ngContent:null}}function Wm(t,e){return Xm(t,e)}function Km(t,e){for(var n=t;n.parent&&!Ng(n);)n=n.parent;return Jm(n.parent,Ig(n),!0,e.provider.value,e.provider.deps)}function $m(t,e){var n=Jm(t,e.parent,(32768&e.flags)>0,e.provider.value,e.provider.deps);if(e.outputs.length)for(var a=0;a<e.outputs.length;a++){var r=e.outputs[a],i=n[r.propName];if(!Uf(i))throw new Error("@Output "+r.propName+" not initialized in '"+n.constructor.name+"'.");var o=i.subscribe(Zm(t,e.parent.nodeIndex,r.eventName));t.disposables[e.outputIndex+a]=o.unsubscribe.bind(o)}return n}function Zm(t,e,n){return function(a){return Cg(t,e,n,a)}}function Xm(t,e){var n=(8192&e.flags)>0,r=e.provider;switch(201347067&e.flags){case 512:return Jm(t,e.parent,n,r.value,r.deps);case 1024:return function(t,e,n,r,i){var o=i.length;switch(o){case 0:return r();case 1:return r(tb(t,e,n,i[0]));case 2:return r(tb(t,e,n,i[0]),tb(t,e,n,i[1]));case 3:return r(tb(t,e,n,i[0]),tb(t,e,n,i[1]),tb(t,e,n,i[2]));default:for(var s=Array(o),u=0;u<o;u++)s[u]=tb(t,e,n,i[u]);return r.apply(void 0,Object(a.__spread)(s))}}(t,e.parent,n,r.value,r.deps);case 2048:return tb(t,e.parent,n,r.deps[0]);case 256:return r.value}}function Jm(t,e,n,r,i){var o=i.length;switch(o){case 0:return new r;case 1:return new r(tb(t,e,n,i[0]));case 2:return new r(tb(t,e,n,i[0]),tb(t,e,n,i[1]));case 3:return new r(tb(t,e,n,i[0]),tb(t,e,n,i[1]),tb(t,e,n,i[2]));default:for(var s=new Array(o),u=0;u<o;u++)s[u]=tb(t,e,n,i[u]);return new(r.bind.apply(r,Object(a.__spread)([void 0],s)))}}var Qm={};function tb(t,e,n,a,r){if(void 0===r&&(r=hs.THROW_IF_NOT_FOUND),8&a.flags)return a.token;var i=t;2&a.flags&&(r=null);var o=a.tokenKey;o===zm&&(n=!(!e||!e.element.componentView)),e&&1&a.flags&&(n=!1,e=e.parent);for(var s=t;s;){if(e)switch(o){case Pm:return Nm(eb(s,e,n));case Mm:return eb(s,e,n).renderer;case jm:return new hu(rg(s,e.nodeIndex).renderElement);case qm:return rg(s,e.nodeIndex).viewContainer;case Fm:if(e.element.template)return rg(s,e.nodeIndex).template;break;case zm:return Sm(eb(s,e,n));case Ym:case Hm:return Im(s,e);default:var u=(n?e.element.allProviders:e.element.publicProviders)[o];if(u){var l=ig(s,u.nodeIndex);return l||(l={instance:Xm(s,u)},s.nodes[u.nodeIndex]=l),l.instance}}n=Ng(s),e=Ig(s),s=s.parent,4&a.flags&&(s=null)}var c=i.root.injector.get(a.token,Qm);return c!==Qm||r===Qm?c:i.root.ngModule.injector.get(a.token,r)}function eb(t,e,n){var a;if(n)a=rg(t,e.nodeIndex).componentView;else for(a=t;a.parent&&!Ng(a);)a=a.parent;return a}function nb(t,e,n,a,r,i){if(32768&n.flags){var o=rg(t,n.parent.nodeIndex).componentView;2&o.def.flags&&(o.state|=8)}if(e.instance[n.bindings[a].name]=r,524288&n.flags){i=i||{};var s=la.unwrap(t.oldValues[n.bindingIndex+a]);i[n.bindings[a].nonMinifiedName]=new ca(s,r,0!=(2&t.state))}return t.oldValues[n.bindingIndex+a]=r,i}function ab(t,e){if(t.def.nodeFlags&e)for(var n=t.def.nodes,a=0,r=0;r<n.length;r++){var i=n[r],o=i.parent;for(!o&&i.flags&e&&ib(t,r,i.flags&e,a++),0==(i.childFlags&e)&&(r+=i.childCount);o&&1&o.flags&&r===o.nodeIndex+o.childCount;)o.directChildFlags&e&&(a=rb(t,o,e,a)),o=o.parent}}function rb(t,e,n,a){for(var r=e.nodeIndex+1;r<=e.nodeIndex+e.childCount;r++){var i=t.def.nodes[r];i.flags&n&&ib(t,r,i.flags&n,a++),r+=i.childCount}return a}function ib(t,e,n,a){var r=ig(t,e);if(r){var i=r.instance;i&&(lg.setCurrentNode(t,e),1048576&n&&ng(t,512,a)&&i.ngAfterContentInit(),2097152&n&&i.ngAfterContentChecked(),4194304&n&&ng(t,768,a)&&i.ngAfterViewInit(),8388608&n&&i.ngAfterViewChecked(),131072&n&&i.ngOnDestroy())}}function ob(t,e,n){var a=[];for(var 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:Eg(e),bindings:a},ngContent:null}}function sb(t){for(var e=t.def.nodeMatchedQueries;t.parent&&Ag(t);){var n=t.parentNodeDef;t=t.parent;for(var a=n.nodeIndex+n.childCount,r=0;r<=a;r++)67108864&(i=t.def.nodes[r]).flags&&536870912&i.flags&&(i.query.filterId&e)===i.query.filterId&&sg(t,r).setDirty(),!(1&i.flags&&r+i.childCount<n.nodeIndex)&&67108864&i.childFlags&&536870912&i.childFlags||(r+=i.childCount)}if(134217728&t.def.nodeFlags)for(r=0;r<t.def.nodes.length;r++){var i;134217728&(i=t.def.nodes[r]).flags&&536870912&i.flags&&sg(t,r).setDirty(),r+=i.childCount}}function ub(t,e){var n=sg(t,e.nodeIndex);if(n.dirty){var a,r=void 0;if(67108864&e.flags){var i=e.parent.parent;r=lb(t,i.nodeIndex,i.nodeIndex+i.childCount,e.query,[]),a=ig(t,e.parent.nodeIndex).instance}else 134217728&e.flags&&(r=lb(t,0,t.def.nodes.length-1,e.query,[]),a=t.component);n.reset(r);for(var o=e.query.bindings,s=!1,u=0;u<o.length;u++){var l=o[u],c=void 0;switch(l.bindingType){case 0:c=n.first;break;case 1:c=n,s=!0}a[l.propName]=c}s&&n.notifyOnChanges()}}function lb(t,e,n,a,r){for(var i=e;i<=n;i++){var o=t.def.nodes[i],s=o.matchedQueries[a.id];if(null!=s&&r.push(cb(t,o,s)),1&o.flags&&o.element.template&&(o.element.template.nodeMatchedQueries&a.filterId)===a.filterId){var u=rg(t,i);if((o.childMatchedQueries&a.filterId)===a.filterId&&(lb(t,i+1,i+o.childCount,a,r),i+=o.childCount),16777216&o.flags)for(var l=u.viewContainer._embeddedViews,c=0;c<l.length;c++){var d=l[c],f=kg(d);f&&f===u&&lb(d,0,d.def.nodes.length-1,a,r)}var p=u.template._projectedViews;if(p)for(c=0;c<p.length;c++){var h=p[c];lb(h,0,h.def.nodes.length-1,a,r)}}(o.childMatchedQueries&a.filterId)!==a.filterId&&(i+=o.childCount)}return r}function cb(t,e,n){if(null!=n)switch(n){case 1:return rg(t,e.nodeIndex).renderElement;case 0:return new hu(rg(t,e.nodeIndex).renderElement);case 2:return rg(t,e.nodeIndex).template;case 3:return rg(t,e.nodeIndex).viewContainer;case 4:return ig(t,e.nodeIndex).instance}}function db(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 fb(t,e,n){var a=Mg(t,e,n);a&&Yg(t,n.ngContent.index,1,a,null,void 0)}function pb(t,e){return mb(128,t,new Array(e+1))}function hb(t,e){return mb(32,t,new Array(e))}function gb(t,e){for(var n=Object.keys(e),a=n.length,r=new Array(a),i=0;i<a;i++){var o=n[i];r[e[o]]=o}return mb(64,t,r)}function mb(t,e,n){for(var a=new Array(n.length),r=0;r<n.length;r++){var i=n[r];a[r]={flags:8,name:i,ns:null,nonMinifiedName:i,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:Ug(a),outputs:[],element:null,provider:null,text:null,query:null,ngContent:null}}function bb(t,e,n){for(var a=new Array(n.length-1),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 yb(t,e,n){var a,r=t.renderer;a=r.createText(n.text.prefix);var i=Mg(t,e,n);return i&&r.appendChild(i,a),{renderText:a}}function vb(t,e){return(null!=t?t.toString():"")+e.suffix}function _b(t,e,n,a){for(var r=0,i=0,o=0,s=0,u=0,l=null,c=null,d=!1,f=!1,p=null,h=0;h<e.length;h++){var g=e[h];if(g.nodeIndex=h,g.parent=l,g.bindingIndex=r,g.outputIndex=i,g.renderParent=c,o|=g.flags,u|=g.matchedQueryIds,g.element){var m=g.element;m.publicProviders=l?l.element.publicProviders:Object.create(null),m.allProviders=m.publicProviders,d=!1,f=!1,g.element.template&&(u|=g.element.template.nodeMatchedQueries)}if(Tb(l,g,e.length),r+=g.bindings.length,i+=g.outputs.length,!c&&3&g.flags&&(p=g),20224&g.flags){d||(d=!0,l.element.publicProviders=Object.create(l.element.publicProviders),l.element.allProviders=l.element.publicProviders);var b=0!=(32768&g.flags);0==(8192&g.flags)||b?l.element.publicProviders[gg(g.provider.token)]=g:(f||(f=!0,l.element.allProviders=Object.create(l.element.publicProviders)),l.element.allProviders[gg(g.provider.token)]=g),b&&(l.element.componentProvider=g)}if(l?(l.childFlags|=g.flags,l.directChildFlags|=g.flags,l.childMatchedQueries|=g.matchedQueryIds,g.element&&g.element.template&&(l.childMatchedQueries|=g.element.template.nodeMatchedQueries)):s|=g.flags,g.childCount>0)l=g,xb(g)||(c=g);else for(;l&&h===l.nodeIndex+l.childCount;){var y=l.parent;y&&(y.childFlags|=l.childFlags,y.childMatchedQueries|=l.childMatchedQueries),c=(l=y)&&xb(l)?l.renderParent:l}}return{factory:null,nodeFlags:o,rootNodeFlags:s,nodeMatchedQueries:u,flags:t,nodes:e,updateDirectives:n||pg,updateRenderer:a||pg,handleEvent:function(t,n,a,r){return e[n].element.handleEvent(t,a,r)},bindingCount:r,outputCount:i,lastRenderRootNode:p}}function xb(t){return 0!=(1&t.flags)&&null===t.element.name}function Tb(t,e,n){var 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){var r=t?t.nodeIndex+t.childCount:n-1;if(e.nodeIndex<=r&&e.nodeIndex+e.childCount>r)throw new Error("Illegal State: childCount of node leads outside of parent, at index "+e.nodeIndex+"!")}}function wb(t,e,n,a){var r=Cb(t.root,t.renderer,t,e,n);return kb(r,t.component,a),Ib(r),r}function Sb(t,e,n){var a=Cb(t,t.renderer,null,null,e);return kb(a,n,n),Ib(a),a}function Ob(t,e,n,a){var r,i=e.element.componentRendererType;return r=i?t.root.rendererFactory.createRenderer(a,i):t.root.renderer,Cb(t.root,r,t,e.element.componentProvider,n)}function Cb(t,e,n,a,r){var i=new Array(r.nodes.length),o=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:o,initIndex:-1}}function kb(t,e,n){t.component=e,t.context=n}function Ib(t){var e;Ng(t)&&(e=rg(t.parent,t.parentNodeDef.parent.nodeIndex).renderElement);for(var n=t.def,a=t.nodes,r=0;r<n.nodes.length;r++){var i=n.nodes[r];lg.setCurrentNode(t,r);var o=void 0;switch(201347067&i.flags){case 1:var s=tm(t,e,i),u=void 0;if(33554432&i.flags){var l=qg(i.element.componentView);u=lg.createComponentView(t,i,l,s)}em(t,u,i,s),o={renderElement:s,componentView:u,viewContainer:null,template:i.element.template?Cm(t,i):void 0},16777216&i.flags&&(o.viewContainer=Tm(t,i,o));break;case 2:o=yb(t,e,i);break;case 512:case 1024:case 2048:case 256:(o=a[r])||4096&i.flags||(o={instance:Wm(t,i)});break;case 16:o={instance:Km(t,i)};break;case 16384:(o=a[r])||(o={instance:$m(t,i)}),32768&i.flags&&kb(rg(t,i.parent.nodeIndex).componentView,o.instance,o.instance);break;case 32:case 64:case 128:o={value:void 0};break;case 67108864:case 134217728:o=new th;break;case 8:fb(t,e,i),o=void 0}a[r]=o}jb(t,Mb.CreateViewNodes),Yb(t,201326592,268435456,0)}function Db(t){Ab(t),lg.updateDirectives(t,1),qb(t,Mb.CheckNoChanges),lg.updateRenderer(t,1),jb(t,Mb.CheckNoChanges),t.state&=-97}function Rb(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,eg(t,0,256),Ab(t),lg.updateDirectives(t,0),qb(t,Mb.CheckAndUpdate),Yb(t,67108864,536870912,0);var e=eg(t,256,512);ab(t,2097152|(e?1048576:0)),lg.updateRenderer(t,0),jb(t,Mb.CheckAndUpdate),Yb(t,134217728,536870912,0),ab(t,8388608|((e=eg(t,512,768))?4194304:0)),2&t.def.flags&&(t.state&=-9),t.state&=-97,eg(t,768,1024)}function Nb(t,e,n,r,i,o,s,u,l,c,d,f,p){return 0===n?function(t,e,n,a,r,i,o,s,u,l,c,d){switch(201347067&e.flags){case 1:return function(t,e,n,a,r,i,o,s,u,l,c,d){var f=e.bindings.length,p=!1;return f>0&&am(t,e,0,n)&&(p=!0),f>1&&am(t,e,1,a)&&(p=!0),f>2&&am(t,e,2,r)&&(p=!0),f>3&&am(t,e,3,i)&&(p=!0),f>4&&am(t,e,4,o)&&(p=!0),f>5&&am(t,e,5,s)&&(p=!0),f>6&&am(t,e,6,u)&&(p=!0),f>7&&am(t,e,7,l)&&(p=!0),f>8&&am(t,e,8,c)&&(p=!0),f>9&&am(t,e,9,d)&&(p=!0),p}(t,e,n,a,r,i,o,s,u,l,c,d);case 2:return function(t,e,n,a,r,i,o,s,u,l,c,d){var f=!1,p=e.bindings,h=p.length;if(h>0&&Tg(t,e,0,n)&&(f=!0),h>1&&Tg(t,e,1,a)&&(f=!0),h>2&&Tg(t,e,2,r)&&(f=!0),h>3&&Tg(t,e,3,i)&&(f=!0),h>4&&Tg(t,e,4,o)&&(f=!0),h>5&&Tg(t,e,5,s)&&(f=!0),h>6&&Tg(t,e,6,u)&&(f=!0),h>7&&Tg(t,e,7,l)&&(f=!0),h>8&&Tg(t,e,8,c)&&(f=!0),h>9&&Tg(t,e,9,d)&&(f=!0),f){var g=e.text.prefix;h>0&&(g+=vb(n,p[0])),h>1&&(g+=vb(a,p[1])),h>2&&(g+=vb(r,p[2])),h>3&&(g+=vb(i,p[3])),h>4&&(g+=vb(o,p[4])),h>5&&(g+=vb(s,p[5])),h>6&&(g+=vb(u,p[6])),h>7&&(g+=vb(l,p[7])),h>8&&(g+=vb(c,p[8])),h>9&&(g+=vb(d,p[9]));var m=ag(t,e.nodeIndex).renderText;t.renderer.setValue(m,g)}return f}(t,e,n,a,r,i,o,s,u,l,c,d);case 16384:return function(t,e,n,a,r,i,o,s,u,l,c,d){var f=ig(t,e.nodeIndex),p=f.instance,h=!1,g=void 0,m=e.bindings.length;return m>0&&xg(t,e,0,n)&&(h=!0,g=nb(t,f,e,0,n,g)),m>1&&xg(t,e,1,a)&&(h=!0,g=nb(t,f,e,1,a,g)),m>2&&xg(t,e,2,r)&&(h=!0,g=nb(t,f,e,2,r,g)),m>3&&xg(t,e,3,i)&&(h=!0,g=nb(t,f,e,3,i,g)),m>4&&xg(t,e,4,o)&&(h=!0,g=nb(t,f,e,4,o,g)),m>5&&xg(t,e,5,s)&&(h=!0,g=nb(t,f,e,5,s,g)),m>6&&xg(t,e,6,u)&&(h=!0,g=nb(t,f,e,6,u,g)),m>7&&xg(t,e,7,l)&&(h=!0,g=nb(t,f,e,7,l,g)),m>8&&xg(t,e,8,c)&&(h=!0,g=nb(t,f,e,8,c,g)),m>9&&xg(t,e,9,d)&&(h=!0,g=nb(t,f,e,9,d,g)),g&&p.ngOnChanges(g),65536&e.flags&&ng(t,256,e.nodeIndex)&&p.ngOnInit(),262144&e.flags&&p.ngDoCheck(),h}(t,e,n,a,r,i,o,s,u,l,c,d);case 32:case 64:case 128:return function(t,e,n,a,r,i,o,s,u,l,c,d){var f=e.bindings,p=!1,h=f.length;if(h>0&&Tg(t,e,0,n)&&(p=!0),h>1&&Tg(t,e,1,a)&&(p=!0),h>2&&Tg(t,e,2,r)&&(p=!0),h>3&&Tg(t,e,3,i)&&(p=!0),h>4&&Tg(t,e,4,o)&&(p=!0),h>5&&Tg(t,e,5,s)&&(p=!0),h>6&&Tg(t,e,6,u)&&(p=!0),h>7&&Tg(t,e,7,l)&&(p=!0),h>8&&Tg(t,e,8,c)&&(p=!0),h>9&&Tg(t,e,9,d)&&(p=!0),p){var g=og(t,e.nodeIndex),m=void 0;switch(201347067&e.flags){case 32:m=new Array(f.length),h>0&&(m[0]=n),h>1&&(m[1]=a),h>2&&(m[2]=r),h>3&&(m[3]=i),h>4&&(m[4]=o),h>5&&(m[5]=s),h>6&&(m[6]=u),h>7&&(m[7]=l),h>8&&(m[8]=c),h>9&&(m[9]=d);break;case 64:m={},h>0&&(m[f[0].name]=n),h>1&&(m[f[1].name]=a),h>2&&(m[f[2].name]=r),h>3&&(m[f[3].name]=i),h>4&&(m[f[4].name]=o),h>5&&(m[f[5].name]=s),h>6&&(m[f[6].name]=u),h>7&&(m[f[7].name]=l),h>8&&(m[f[8].name]=c),h>9&&(m[f[9].name]=d);break;case 128:var b=n;switch(h){case 1:m=b.transform(n);break;case 2:m=b.transform(a);break;case 3:m=b.transform(a,r);break;case 4:m=b.transform(a,r,i);break;case 5:m=b.transform(a,r,i,o);break;case 6:m=b.transform(a,r,i,o,s);break;case 7:m=b.transform(a,r,i,o,s,u);break;case 8:m=b.transform(a,r,i,o,s,u,l);break;case 9:m=b.transform(a,r,i,o,s,u,l,c);break;case 10:m=b.transform(a,r,i,o,s,u,l,c,d)}}g.value=m}return p}(t,e,n,a,r,i,o,s,u,l,c,d);default:throw"unreachable"}}(t,e,r,i,o,s,u,l,c,d,f,p):function(t,e,n){switch(201347067&e.flags){case 1:return function(t,e,n){for(var a=!1,r=0;r<n.length;r++)am(t,e,r,n[r])&&(a=!0);return a}(t,e,n);case 2:return function(t,e,n){for(var a=e.bindings,r=!1,i=0;i<n.length;i++)Tg(t,e,i,n[i])&&(r=!0);if(r){var o="";for(i=0;i<n.length;i++)o+=vb(n[i],a[i]);o=e.text.prefix+o;var s=ag(t,e.nodeIndex).renderText;t.renderer.setValue(s,o)}return r}(t,e,n);case 16384:return function(t,e,n){for(var a=ig(t,e.nodeIndex),r=a.instance,i=!1,o=void 0,s=0;s<n.length;s++)xg(t,e,s,n[s])&&(i=!0,o=nb(t,a,e,s,n[s],o));return o&&r.ngOnChanges(o),65536&e.flags&&ng(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){for(var r=e.bindings,i=!1,o=0;o<n.length;o++)Tg(t,e,o,n[o])&&(i=!0);if(i){var s=og(t,e.nodeIndex),u=void 0;switch(201347067&e.flags){case 32:u=n;break;case 64:for(u={},o=0;o<n.length;o++)u[r[o].name]=n[o];break;case 128:var l=n[0],c=n.slice(1);u=l.transform.apply(l,Object(a.__spread)(c))}s.value=u}return i}(t,e,n);default:throw"unreachable"}}(t,e,r)}function Ab(t){var e=t.def;if(4&e.nodeFlags)for(var n=0;n<e.nodes.length;n++){var a=e.nodes[n];if(4&a.flags){var r=rg(t,n).template._projectedViews;if(r)for(var i=0;i<r.length;i++){var o=r[i];o.state|=32,Og(o,t)}}else 0==(4&a.childFlags)&&(n+=a.childCount)}}function Eb(t,e,n,a,r,i,o,s,u,l,c,d,f){return 0===n?function(t,e,n,a,r,i,o,s,u,l,c,d){var f=e.bindings.length;f>0&&wg(t,e,0,n),f>1&&wg(t,e,1,a),f>2&&wg(t,e,2,r),f>3&&wg(t,e,3,i),f>4&&wg(t,e,4,o),f>5&&wg(t,e,5,s),f>6&&wg(t,e,6,u),f>7&&wg(t,e,7,l),f>8&&wg(t,e,8,c),f>9&&wg(t,e,9,d)}(t,e,a,r,i,o,s,u,l,c,d,f):function(t,e,n){for(var a=0;a<n.length;a++)wg(t,e,a,n[a])}(t,e,a),!1}function Lb(t,e){if(sg(t,e.nodeIndex).dirty)throw cg(lg.createDebugContext(t,e.nodeIndex),"Query "+e.query.id+" not dirty","Query "+e.query.id+" dirty",0!=(1&t.state))}function Pb(t){if(!(128&t.state)){if(qb(t,Mb.Destroy),jb(t,Mb.Destroy),ab(t,131072),t.disposables)for(var e=0;e<t.disposables.length;e++)t.disposables[e]();!function(t){if(16&t.state){var e=kg(t);if(e){var n=e.template._projectedViews;n&&(mm(n,n.indexOf(t)),lg.dirtyParentQueries(t))}}}(t),t.renderer.destroyNode&&function(t){for(var e=t.def.nodes.length,n=0;n<e;n++){var a=t.def.nodes[n];1&a.flags?t.renderer.destroyNode(rg(t,n).renderElement):2&a.flags?t.renderer.destroyNode(ag(t,n).renderText):(67108864&a.flags||134217728&a.flags)&&sg(t,n).destroy()}}(t),Ng(t)&&t.renderer.destroy(),t.state|=128}}var Mb=function(t){return t[t.CreateViewNodes=0]="CreateViewNodes",t[t.CheckNoChanges=1]="CheckNoChanges",t[t.CheckNoChangesProjectedViews=2]="CheckNoChangesProjectedViews",t[t.CheckAndUpdate=3]="CheckAndUpdate",t[t.CheckAndUpdateProjectedViews=4]="CheckAndUpdateProjectedViews",t[t.Destroy=5]="Destroy",t}({});function jb(t,e){var n=t.def;if(33554432&n.nodeFlags)for(var a=0;a<n.nodes.length;a++){var r=n.nodes[a];33554432&r.flags?Fb(rg(t,a).componentView,e):0==(33554432&r.childFlags)&&(a+=r.childCount)}}function qb(t,e){var n=t.def;if(16777216&n.nodeFlags)for(var a=0;a<n.nodes.length;a++){var r=n.nodes[a];if(16777216&r.flags)for(var i=rg(t,a).viewContainer._embeddedViews,o=0;o<i.length;o++)Fb(i[o],e);else 0==(16777216&r.childFlags)&&(a+=r.childCount)}}function Fb(t,e){var n=t.state;switch(e){case Mb.CheckNoChanges:0==(128&n)&&(12==(12&n)?Db(t):64&n&&zb(t,Mb.CheckNoChangesProjectedViews));break;case Mb.CheckNoChangesProjectedViews:0==(128&n)&&(32&n?Db(t):64&n&&zb(t,e));break;case Mb.CheckAndUpdate:0==(128&n)&&(12==(12&n)?Rb(t):64&n&&zb(t,Mb.CheckAndUpdateProjectedViews));break;case Mb.CheckAndUpdateProjectedViews:0==(128&n)&&(32&n?Rb(t):64&n&&zb(t,e));break;case Mb.Destroy:Pb(t);break;case Mb.CreateViewNodes:Ib(t)}}function zb(t,e){qb(t,e),jb(t,e)}function Yb(t,e,n,a){if(t.def.nodeFlags&e&&t.def.nodeFlags&n)for(var r=t.def.nodes.length,i=0;i<r;i++){var o=t.def.nodes[i];if(o.flags&e&&o.flags&n)switch(lg.setCurrentNode(t,o.nodeIndex),a){case 0:ub(t,o);break;case 1:Lb(t,o)}o.childFlags&e&&o.childFlags&n||(i+=o.childCount)}}var Hb=!1;function Gb(){if(!Hb){Hb=!0;var t=Fu()?{setCurrentNode:fy,createRootView:Bb,createEmbeddedView:Wb,createComponentView:Kb,createNgModuleRef:$b,overrideProvider:Qb,overrideComponentView:ty,clearOverrides:ey,checkAndUpdateView:iy,checkNoChangesView:oy,destroyView:sy,createDebugContext:function(t,e){return new _y(t,e)},handleEvent:py,updateDirectives:hy,updateRenderer:gy}:{setCurrentNode:function(){},createRootView:Vb,createEmbeddedView:wb,createComponentView:Ob,createNgModuleRef:Em,overrideProvider:pg,overrideComponentView:pg,clearOverrides:pg,checkAndUpdateView:Rb,checkNoChangesView:Db,destroyView:Pb,createDebugContext:function(t,e){return new _y(t,e)},handleEvent:function(t,e,n,a){return t.def.handleEvent(t,e,n,a)},updateDirectives:function(t,e){return t.def.updateDirectives(0===e?ay:ry,t)},updateRenderer:function(t,e){return t.def.updateRenderer(0===e?ay:ry,t)}};lg.setCurrentNode=t.setCurrentNode,lg.createRootView=t.createRootView,lg.createEmbeddedView=t.createEmbeddedView,lg.createComponentView=t.createComponentView,lg.createNgModuleRef=t.createNgModuleRef,lg.overrideProvider=t.overrideProvider,lg.overrideComponentView=t.overrideComponentView,lg.clearOverrides=t.clearOverrides,lg.checkAndUpdateView=t.checkAndUpdateView,lg.checkNoChangesView=t.checkNoChangesView,lg.destroyView=t.destroyView,lg.resolveDep=tb,lg.createDebugContext=t.createDebugContext,lg.handleEvent=t.handleEvent,lg.updateDirectives=t.updateDirectives,lg.updateRenderer=t.updateRenderer,lg.dirtyParentQueries=sb}}function Vb(t,e,n,a,r,i){var o=r.injector.get(xu);return Sb(Ub(t,r,o,e,n),a,i)}function Bb(t,e,n,a,r,i){var o=r.injector.get(xu),s=Ub(t,r,new Sy(o),e,n),u=ny(a);return Ty(dy.create,Sb,null,[s,u,i])}function Ub(t,e,n,a,r){var i=e.injector.get(ku),o=e.injector.get(Sf),s=n.createRenderer(null,null);return{ngModule:e,injector:t,projectableNodes:a,selectorOrNode:r,sanitizer:i,rendererFactory:n,renderer:s,errorHandler:o}}function Wb(t,e,n,a){var r=ny(n);return Ty(dy.create,wb,null,[t,e,r,a])}function Kb(t,e,n,a){return n=Jb.get(e.element.componentProvider.provider.token)||ny(n),Ty(dy.create,Ob,null,[t,e,n,a])}function $b(t,e,n,a){return Em(t,e,n,function(t){var e=function(t){var e=!1,n=!1;return 0===Zb.size?{hasOverrides:e,hasDeprecatedOverrides:n}:(t.providers.forEach(function(t){var a=Zb.get(t.token);3840&t.flags&&a&&(e=!0,n=n||a.deprecatedBehavior)}),t.modules.forEach(function(t){Xb.forEach(function(a,r){x(r).providedIn===t&&(e=!0,n=n||a.deprecatedBehavior)})}),{hasOverrides:e,hasDeprecatedOverrides:n})}(t),n=e.hasDeprecatedOverrides;return e.hasOverrides?(function(t){for(var e=0;e<t.providers.length;e++){var a=t.providers[e];n&&(a.flags|=4096);var r=Zb.get(a.token);r&&(a.flags=-3841&a.flags|r.flags,a.deps=Pg(r.deps),a.value=r.value)}if(Xb.size>0){var i=new Set(t.modules);Xb.forEach(function(e,a){if(i.has(x(a).providedIn)){var r={token:a,flags:e.flags|(n?4096:0),deps:Pg(e.deps),value:e.value,index:t.providers.length};t.providers.push(r),t.providersByKey[gg(a)]=r}})}}(t=t.factory(function(){return pg})),t):t}(a))}var Zb=new Map,Xb=new Map,Jb=new Map;function Qb(t){var e;Zb.set(t.token,t),"function"==typeof t.token&&(e=x(t.token))&&"function"==typeof e.providedIn&&Xb.set(t.token,t)}function ty(t,e){var n=qg(vm(e)),a=qg(n.nodes[0].element.componentView);Jb.set(t,a)}function ey(){Zb.clear(),Xb.clear(),Jb.clear()}function ny(t){if(0===Zb.size)return t;var e=function(t){for(var e=[],n=null,a=0;a<t.nodes.length;a++){var r=t.nodes[a];1&r.flags&&(n=r),n&&3840&r.flags&&Zb.has(r.provider.token)&&(e.push(n.nodeIndex),n=null)}return e}(t);if(0===e.length)return t;t=t.factory(function(){return pg});for(var n=0;n<e.length;n++)a(t,e[n]);return t;function a(t,e){for(var n=e+1;n<t.nodes.length;n++){var a=t.nodes[n];if(1&a.flags)return;if(3840&a.flags){var r=a.provider,i=Zb.get(r.token);i&&(a.flags=-3841&a.flags|i.flags,r.deps=Pg(i.deps),r.value=i.value)}}}}function ay(t,e,n,a,r,i,o,s,u,l,c,d,f){var p=t.def.nodes[e];return Nb(t,p,n,a,r,i,o,s,u,l,c,d,f),224&p.flags?og(t,e).value:void 0}function ry(t,e,n,a,r,i,o,s,u,l,c,d,f){var p=t.def.nodes[e];return Eb(t,p,n,a,r,i,o,s,u,l,c,d,f),224&p.flags?og(t,e).value:void 0}function iy(t){return Ty(dy.detectChanges,Rb,null,[t])}function oy(t){return Ty(dy.checkNoChanges,Db,null,[t])}function sy(t){return Ty(dy.destroy,Pb,null,[t])}var uy,ly,cy,dy=function(t){return t[t.create=0]="create",t[t.detectChanges=1]="detectChanges",t[t.checkNoChanges=2]="checkNoChanges",t[t.destroy=3]="destroy",t[t.handleEvent=4]="handleEvent",t}({});function fy(t,e){ly=t,cy=e}function py(t,e,n,a){return fy(t,e),Ty(dy.handleEvent,t.def.handleEvent,null,[t,e,n,a])}function hy(t,e){if(128&t.state)throw fg(dy[uy]);return fy(t,yy(t,0)),t.def.updateDirectives(function(t,n,a){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var o=t.def.nodes[n];return 0===e?my(t,o,a,r):by(t,o,a,r),16384&o.flags&&fy(t,yy(t,n)),224&o.flags?og(t,o.nodeIndex).value:void 0},t)}function gy(t,e){if(128&t.state)throw fg(dy[uy]);return fy(t,vy(t,0)),t.def.updateRenderer(function(t,n,a){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var o=t.def.nodes[n];return 0===e?my(t,o,a,r):by(t,o,a,r),3&o.flags&&fy(t,vy(t,n)),224&o.flags?og(t,o.nodeIndex).value:void 0},t)}function my(t,e,n,r){if(Nb.apply(void 0,Object(a.__spread)([t,e,n],r))){var i=1===n?r[0]:r;if(16384&e.flags){for(var o={},s=0;s<e.bindings.length;s++){var u=e.bindings[s],l=i[s];8&u.flags&&(o[(p=u.nonMinifiedName,"ng-reflect-"+p.replace(/[$@]/g,"_").replace(oa,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return"-"+t[1].toLowerCase()}))]=sa(l))}var c=e.parent,d=rg(t,c.nodeIndex).renderElement;if(c.element.name)for(var f in o)null!=(l=o[f])?t.renderer.setAttribute(d,f,l):t.renderer.removeAttribute(d,f);else t.renderer.setValue(d,"bindings="+JSON.stringify(o,null,2))}}var p}function by(t,e,n,r){Eb.apply(void 0,Object(a.__spread)([t,e,n],r))}function yy(t,e){for(var n=e;n<t.def.nodes.length;n++){var a=t.def.nodes[n];if(16384&a.flags&&a.bindings&&a.bindings.length)return n}return null}function vy(t,e){for(var n=e;n<t.def.nodes.length;n++){var a=t.def.nodes[n];if(3&a.flags&&a.bindings&&a.bindings.length)return n}return null}var _y=function(){function t(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=0),this.nodeDef=t.def.nodes[e];for(var n=this.nodeDef,a=t;n&&0==(1&n.flags);)n=n.parent;if(!n)for(;!n&&a;)n=Ig(a),a=a.parent;this.elDef=n,this.elView=a}return Object.defineProperty(t.prototype,"elOrCompView",{get:function(){return rg(this.elView,this.elDef.nodeIndex).componentView||this.view},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"injector",{get:function(){return Im(this.elView,this.elDef)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"component",{get:function(){return this.elOrCompView.component},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this.elOrCompView.context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providerTokens",{get:function(){var t=[];if(this.elDef)for(var e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){var n=this.elView.def.nodes[e];20224&n.flags&&t.push(n.provider.token),e+=n.childCount}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"references",{get:function(){var t={};if(this.elDef){xy(this.elView,this.elDef,t);for(var e=this.elDef.nodeIndex+1;e<=this.elDef.nodeIndex+this.elDef.childCount;e++){var n=this.elView.def.nodes[e];20224&n.flags&&xy(this.elView,n,t),e+=n.childCount}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentRenderElement",{get:function(){var t=function(t){for(;t&&!Ng(t);)t=t.parent;return t.parent?rg(t.parent,Ig(t).nodeIndex):null}(this.elOrCompView);return t?t.renderElement:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"renderNode",{get:function(){return 2&this.nodeDef.flags?Dg(this.view,this.nodeDef):Dg(this.elView,this.elDef)},enumerable:!0,configurable:!0}),t.prototype.logError=function(t){for(var e,n,r=[],i=1;i<arguments.length;i++)r[i-1]=arguments[i];2&this.nodeDef.flags?(e=this.view.def,n=this.nodeDef.nodeIndex):(e=this.elView.def,n=this.elDef.nodeIndex);var o=function(t,e){for(var n=-1,a=0;a<=e;a++)3&t.nodes[a].flags&&n++;return n}(e,n),s=-1;e.factory(function(){var e;return++s===o?(e=t.error).bind.apply(e,Object(a.__spread)([t],r)):pg}),s<o&&(t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),t.error.apply(t,Object(a.__spread)(r)))},t}();function xy(t,e,n){for(var a in e.references)n[a]=cb(t,e,e.references[a])}function Ty(t,e,n,a){var r=uy,i=ly,o=cy;try{uy=t;var s=e.apply(n,a);return ly=i,cy=o,uy=r,s}catch(u){if(xf(u)||!ly)throw u;throw function(t,e){return t instanceof Error||(t=new Error(t.toString())),dg(t,e),t}(u,wy())}}function wy(){return ly?new _y(ly,cy):null}var Sy=function(){function t(t){this.delegate=t}return t.prototype.createRenderer=function(t,e){return new Oy(this.delegate.createRenderer(t,e))},t.prototype.begin=function(){this.delegate.begin&&this.delegate.begin()},t.prototype.end=function(){this.delegate.end&&this.delegate.end()},t.prototype.whenRenderingDone=function(){return this.delegate.whenRenderingDone?this.delegate.whenRenderingDone():Promise.resolve(null)},t}(),Oy=function(){function t(t){this.delegate=t,this.debugContextFactory=wy,this.data=this.delegate.data}return t.prototype.createDebugContext=function(t){return this.debugContextFactory(t)},t.prototype.destroyNode=function(t){!function(t){Th.delete(t.nativeNode)}(Sh(t)),this.delegate.destroyNode&&this.delegate.destroyNode(t)},t.prototype.destroy=function(){this.delegate.destroy()},t.prototype.createElement=function(t,e){var n=this.delegate.createElement(t,e),a=this.createDebugContext(n);if(a){var r=new gh(n,null,a);r.name=t,Oh(r)}return n},t.prototype.createComment=function(t){var e=this.delegate.createComment(t),n=this.createDebugContext(e);return n&&Oh(new hh(e,null,n)),e},t.prototype.createText=function(t){var e=this.delegate.createText(t),n=this.createDebugContext(e);return n&&Oh(new hh(e,null,n)),e},t.prototype.appendChild=function(t,e){var n=Sh(t),a=Sh(e);n&&a&&n instanceof gh&&n.addChild(a),this.delegate.appendChild(t,e)},t.prototype.insertBefore=function(t,e,n){var a=Sh(t),r=Sh(e),i=Sh(n);a&&r&&a instanceof gh&&a.insertBefore(i,r),this.delegate.insertBefore(t,e,n)},t.prototype.removeChild=function(t,e){var n=Sh(t),a=Sh(e);n&&a&&n instanceof gh&&n.removeChild(a),this.delegate.removeChild(t,e)},t.prototype.selectRootElement=function(t,e){var n=this.delegate.selectRootElement(t,e),a=wy();return a&&Oh(new gh(n,null,a)),n},t.prototype.setAttribute=function(t,e,n,a){var r=Sh(t);r&&r instanceof gh&&(r.attributes[a?a+":"+e:e]=n),this.delegate.setAttribute(t,e,n,a)},t.prototype.removeAttribute=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.attributes[n?n+":"+e:e]=null),this.delegate.removeAttribute(t,e,n)},t.prototype.addClass=function(t,e){var n=Sh(t);n&&n instanceof gh&&(n.classes[e]=!0),this.delegate.addClass(t,e)},t.prototype.removeClass=function(t,e){var n=Sh(t);n&&n instanceof gh&&(n.classes[e]=!1),this.delegate.removeClass(t,e)},t.prototype.setStyle=function(t,e,n,a){var r=Sh(t);r&&r instanceof gh&&(r.styles[e]=n),this.delegate.setStyle(t,e,n,a)},t.prototype.removeStyle=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.styles[e]=null),this.delegate.removeStyle(t,e,n)},t.prototype.setProperty=function(t,e,n){var a=Sh(t);a&&a instanceof gh&&(a.properties[e]=n),this.delegate.setProperty(t,e,n)},t.prototype.listen=function(t,e,n){if("string"!=typeof t){var a=Sh(t);a&&a.listeners.push(new ph(e,n))}return this.delegate.listen(t,e,n)},t.prototype.parentNode=function(t){return this.delegate.parentNode(t)},t.prototype.nextSibling=function(t){return this.delegate.nextSibling(t)},t.prototype.setValue=function(t,e){return this.delegate.setValue(t,e)},t}();function Cy(t){return Gb(),lg.overrideProvider(t)}function ky(t,e){return Gb(),lg.overrideComponentView(t,e)}function Iy(){return Gb(),lg.clearOverrides()}function Dy(t,e,n){return new Ry(t,e,n)}var Ry=function(t){function e(e,n,a){var r=t.call(this)||this;return r.moduleType=e,r._bootstrapComponents=n,r._ngModuleDefFactory=a,r}return Object(a.__extends)(e,t),e.prototype.create=function(t){Gb();var e=function(t){var e=Array.from(t.providers),n=Array.from(t.modules),a={};for(var r in t.providersByKey)a[r]=t.providersByKey[r];return{factory:t.factory,isRoot:t.isRoot,providers:e,modules:n,providersByKey:a}}(qg(this._ngModuleDefFactory));return lg.createNgModuleRef(this.moduleType,t||hs.NULL,this._bootstrapComponents,e)},e}(uu)},ChqD:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},CoRJ:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}()},CxY0:function(t,e,n){"use strict";var a=n("rWzI"),r=n("Nehr");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=v,e.resolve=function(t,e){return v(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?v(t,!1,!0).resolveObject(e):e},e.format=function(t){return r.isString(t)&&(t=v(t)),t instanceof i?t.format():i.prototype.format.call(t)},e.Url=i;var o=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),d=["%","/","?",";","#"].concat(c),f=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},m={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n("r8II");function v(t,e,n){if(t&&r.isObject(t)&&t instanceof i)return t;var a=new i;return a.parse(t,e,n),a}i.prototype.parse=function(t,e,n){if(!r.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),s=-1!==i&&i<t.indexOf("#")?"?":"#",l=t.split(s);l[0]=l[0].replace(/\\/g,"/");var v=t=l.join(s);if(v=v.trim(),!n&&1===t.split("#").length){var _=u.exec(v);if(_)return this.path=v,this.href=v,this.pathname=_[1],_[2]?(this.search=_[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var x=o.exec(v);if(x){var T=(x=x[0]).toLowerCase();this.protocol=T,v=v.substr(x.length)}if(n||x||v.match(/^\/\/[^@\/]+@[^@\/]+/)){var w="//"===v.substr(0,2);!w||x&&m[x]||(v=v.substr(2),this.slashes=!0)}if(!m[x]&&(w||x&&!b[x])){for(var S,O,C=-1,k=0;k<f.length;k++)-1!==(I=v.indexOf(f[k]))&&(-1===C||I<C)&&(C=I);for(-1!==(O=-1===C?v.lastIndexOf("@"):v.lastIndexOf("@",C))&&(S=v.slice(0,O),v=v.slice(O+1),this.auth=decodeURIComponent(S)),C=-1,k=0;k<d.length;k++){var I;-1!==(I=v.indexOf(d[k]))&&(-1===C||I<C)&&(C=I)}-1===C&&(C=v.length),this.host=v.slice(0,C),v=v.slice(C),this.parseHost(),this.hostname=this.hostname||"";var D="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!D)for(var R=this.hostname.split(/\./),N=(k=0,R.length);k<N;k++){var A=R[k];if(A&&!A.match(p)){for(var E="",L=0,P=A.length;L<P;L++)A.charCodeAt(L)>127?E+="x":E+=A[L];if(!E.match(p)){var M=R.slice(0,k),j=R.slice(k+1),q=A.match(h);q&&(M.push(q[1]),j.unshift(q[2])),j.length&&(v="/"+j.join(".")+v),this.hostname=M.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),D||(this.hostname=a.toASCII(this.hostname)),this.host=(this.hostname||"")+(this.port?":"+this.port:""),this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==v[0]&&(v="/"+v))}if(!g[T])for(k=0,N=c.length;k<N;k++){var F=c[k];if(-1!==v.indexOf(F)){var z=encodeURIComponent(F);z===F&&(z=escape(F)),v=v.split(F).join(z)}}var Y=v.indexOf("#");-1!==Y&&(this.hash=v.substr(Y),v=v.slice(0,Y));var H=v.indexOf("?");return-1!==H?(this.search=v.substr(H),this.query=v.substr(H+1),e&&(this.query=y.parse(this.query)),v=v.slice(0,H)):e&&(this.search="",this.query={}),v&&(this.pathname=v),b[T]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(this.path=(this.pathname||"")+(this.search||"")),this.href=this.format(),this},i.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",a=this.hash||"",i=!1,o="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&r.isObject(this.query)&&Object.keys(this.query).length&&(o=y.stringify(this.query));var s=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||b[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),s&&"?"!==s.charAt(0)&&(s="?"+s),e+i+(n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(s=s.replace("#","%23"))+a},i.prototype.resolve=function(t){return this.resolveObject(v(t,!1,!0)).format()},i.prototype.resolveObject=function(t){if(r.isString(t)){var e=new i;e.parse(t,!1,!0),t=e}for(var n=new i,a=Object.keys(this),o=0;o<a.length;o++){var s=a[o];n[s]=this[s]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var u=Object.keys(t),l=0;l<u.length;l++){var c=u[l];"protocol"!==c&&(n[c]=t[c])}return b[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!b[t.protocol]){for(var d=Object.keys(t),f=0;f<d.length;f++){var p=d[f];n[p]=t[p]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||m[t.protocol])n.pathname=t.pathname;else{for(var h=(t.pathname||"").split("/");h.length&&!(t.host=h.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),n.pathname=h.join("/")}return n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,(n.pathname||n.search)&&(n.path=(n.pathname||"")+(n.search||"")),n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var g=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),v=y||g||n.host&&t.pathname,_=v,x=n.pathname&&n.pathname.split("/")||[],T=(h=t.pathname&&t.pathname.split("/")||[],n.protocol&&!b[n.protocol]);if(T&&(n.hostname="",n.port=null,n.host&&(""===x[0]?x[0]=n.host:x.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===h[0]?h[0]=t.host:h.unshift(t.host)),t.host=null),v=v&&(""===h[0]||""===x[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,x=h;else if(h.length)x||(x=[]),x.pop(),x=x.concat(h),n.search=t.search,n.query=t.query;else if(!r.isNullOrUndefined(t.search))return T&&(n.hostname=n.host=x.shift(),(k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift())),n.search=t.search,n.query=t.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!x.length)return n.pathname=null,n.path=n.search?"/"+n.search:null,n.href=n.format(),n;for(var w=x.slice(-1)[0],S=(n.host||t.host||x.length>1)&&("."===w||".."===w)||""===w,O=0,C=x.length;C>=0;C--)"."===(w=x[C])?x.splice(C,1):".."===w?(x.splice(C,1),O++):O&&(x.splice(C,1),O--);if(!v&&!_)for(;O--;O)x.unshift("..");!v||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),S&&"/"!==x.join("/").substr(-1)&&x.push("");var k,I=""===x[0]||x[0]&&"/"===x[0].charAt(0);return T&&(n.hostname=n.host=I?"":x.length?x.shift():"",(k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift())),(v=v||n.host&&x.length)&&!I&&x.unshift(""),x.length?n.pathname=x.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"D/JM":function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},D4zM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t,e){this.elementRef=t,this.renderer=e}return t.prototype.ngOnInit=function(){this.renderer.setAttribute(this.elementRef.nativeElement,"tabindex","-1"),this.iElement=this.renderer.createElement("i"),this.renderer.addClass(this.iElement,"icon-prepend"),this.renderer.addClass(this.iElement,"fa"),this.renderer.appendChild(this.elementRef.nativeElement,this.iElement),this.update()},t.prototype.getInputElement=function(){return document.getElementById(this.cdPasswordButton)},t.prototype.update=function(){var 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"))},t.prototype.onClick=function(){var t=this.getInputElement();t.type="password"===t.type?"text":"password",this.update()},t}()},DKTb:function(t,e,n){"use strict";function a(t){setTimeout(function(){throw t})}n.d(e,"a",function(){return a})},"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]}n("wd/R").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"}})}()},DNAf:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){return function(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)}}()},DQlY:function(t,e,n){"use strict";n.d(e,"a",function(){return s}),n.d(e,"d",function(){return c}),n.d(e,"c",function(){return d}),n.d(e,"f",function(){return u}),n.d(e,"e",function(){return p}),n.d(e,"b",function(){return f});var a=n("CcnG"),r=n("rpEJ"),i=n("lqqz"),o=n("NJnL"),s=function(){return function(){this.hide=Function,this.setClass=Function}}(),u=function(){return function(){}}(),l={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,class:"",animated:!0,initialState:{}},c=function(){function t(t,e,n){this._element=e,this._renderer=n,this.isShown=!1,this.isModalHiding=!1,this.config=Object.assign({},t)}return t.prototype.ngOnInit=function(){var t=this;this.isAnimated&&this._renderer.addClass(this._element.nativeElement,"fade"),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(function(){t.isShown=!0,t._renderer.addClass(t._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()},t.prototype.onClick=function(t){this.config.ignoreBackdropClick||"static"===this.config.backdrop||t.target!==this._element.nativeElement||(this.bsModalService.setDismissReason("backdrop-click"),this.hide())},t.prototype.onEsc=function(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()))},t.prototype.ngOnDestroy=function(){this.isShown&&this.hide()},t.prototype.hide=function(){var t=this;!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,Object(r.d)()?"in":"show"),setTimeout(function(){t.isShown=!1,document&&document.body&&1===t.bsModalService.getModalsCount()&&t._renderer.removeClass(document.body,"modal-open"),t.bsModalService.hide(t.level),t.isModalHiding=!1},this.isAnimated?300:0))},t}(),d=function(){function t(t,e){this._isShown=!1,this.element=t,this.renderer=e}return Object.defineProperty(t.prototype,"isAnimated",{get:function(){return this._isAnimated},set:function(t){this._isAnimated=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isShown",{get:function(){return this._isShown},set:function(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"))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,"fade"),r.b.reflow(this.element.nativeElement)),this.isShown=!0},t}(),f=function(){function t(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)}return t.prototype.show=function(t,e){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},l,e),this._showBackdrop(),this.lastDismissReason=null,this._showModal(t)},t.prototype.hide=function(t){var e=this;1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=this.modalsCount>=1?this.modalsCount-1:0,setTimeout(function(){e._hideModal(t),e.removeLoaders(t)},this.config.animated?150:0)},t.prototype._showBackdrop=function(){var 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(d).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))},t.prototype._hideBackdrop=function(){var t=this;this.backdropRef&&(this.backdropRef.instance.isShown=!1,setTimeout(function(){return t.removeBackdrop()},this.config.animated?150:0))},t.prototype._showModal=function(t){var e=this.loaders[this.loaders.length-1],n=new s,a=e.provide({provide:u,useValue:this.config}).provide({provide:s,useValue:n}).attach(c).to("body").show({content:t,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return a.instance.level=this.getModalsCount(),n.hide=function(){a.instance.hide()},n.content=e.getInnerComponent()||null,n.setClass=function(t){a.instance.config.class=t},n},t.prototype._hideModal=function(t){var e=this.loaders[t-1];e&&e.hide()},t.prototype.getModalsCount=function(){return this.modalsCount},t.prototype.setDismissReason=function(t){this.lastDismissReason=t},t.prototype.removeBackdrop=function(){this._backdropLoader.hide(),this.backdropRef=null},t.prototype.checkScrollbar=function(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},t.prototype.setScrollbar=function(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},t.prototype.resetScrollbar=function(){document.body.style.paddingRight=this.originalBodyPadding+"px"},t.prototype.getScrollbarWidth=function(){var t=this._renderer.createElement("div");this._renderer.addClass(t,"modal-scrollbar-measure"),this._renderer.appendChild(document.body,t);var e=t.offsetWidth-t.clientWidth;return this._renderer.removeChild(document.body,t),e},t.prototype._createLoaders=function(){var 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)},t.prototype.removeLoaders=function(t){this.loaders.splice(t-1,1),this.loaders.forEach(function(t,e){t.instance.level=e+1})},t.prototype.copyEvent=function(t,e){var n=this;t.subscribe(function(){e.emit(n.lastDismissReason)})},t}(),p=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[f,i.a,o.a]}},t}()},DSvg:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("aexS"),r=n("CcnG"),i=n("t/Na"),o=n("ZYCi"),s=n("pL04"),u=function(){function t(t,e,n){this.authStorageService=t,this.http=e,this.router=n}return t.prototype.check=function(t){return this.http.post("api/auth/check",{token:t})},t.prototype.login=function(t){var e=this;return this.http.post("api/auth",t).toPromise().then(function(t){e.authStorageService.set(t.username,t.token,t.permissions)})},t.prototype.logout=function(t){var e=this;return void 0===t&&(t=null),this.http.post("api/auth/logout",null).subscribe(function(n){e.router.navigate(["/logout"],{skipLocationChange:!0}),e.authStorageService.remove(),t&&t(),window.location.replace(n.redirect_url)})},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(a.a),r.inject(i.c),r.inject(o.l))},token:t,providedIn:s.a}),t}()},Da1D:function(t,e,n){"use strict";n.d(e,"a",function(){return o}),n.d(e,"b",function(){return i}),n.d(e,"d",function(){return s}),n.d(e,"c",function(){return r});var a=n("rpEJ"),r=function(){return function(){this.animate=!1,this.max=100}}(),i=function(){function t(t){this.isStacked=!1,this.addClass=!0,this.bars=[],this._max=100,Object.assign(this,t)}return Object.defineProperty(t.prototype,"animate",{set:function(t){this._animate=t,this.bars.forEach(function(e){e.animate=t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"striped",{set:function(t){this._striped=t,this.bars.forEach(function(e){e.striped=t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this.isStacked=Array.isArray(t),this._value=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"max",{get:function(){return this._max},set:function(t){this._max=t,this.bars.forEach(function(t){t.recalculatePercentage()})},enumerable:!0,configurable:!0}),t.prototype.addBar=function(t){t.animate=this._animate,t.striped=this._striped,this.bars.push(t)},t.prototype.removeBar=function(t){this.bars.splice(this.bars.indexOf(t),1)},t}(),o=function(){function t(t){this.percent=0,this.progress=t}return Object.defineProperty(t.prototype,"value",{get:function(){return this._value},set:function(t){(t||0===t)&&(this._value=t,this.recalculatePercentage())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"setBarWidth",{get:function(){return this.recalculatePercentage(),this.percent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.progress.addBar(this)},t.prototype.ngOnDestroy=function(){this.progress.removeBar(this)},t.prototype.recalculatePercentage=function(){this.percent=+(this.value/this.progress.max*100).toFixed(2);var t=this.progress.bars.reduce(function(t,e){return t+e.percent},0);t>100&&(this.percent-=t-100)},t}(),s=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[r]}},t}()},Dkky:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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}})}()},Dmvi:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},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:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};t.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_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\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'\u0131nc\u0131";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"))},DtyJ:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("KhEm"),i=n("IxPp"),o=n("xTla"),s=n("K9Ia"),u=n("26FU"),l=n("S5bw"),c=n("svcd"),d=n("KQya"),f=n("T1DM"),p=n("zo3G"),h=n("mrSG"),g=n("h9Dq"),m=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return h.__extends(e,t),e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0?t.prototype.requestAsyncId.call(this,e,n,a):(e.actions.push(this),e.scheduled||(e.scheduled=requestAnimationFrame(function(){return e.flush(null)})))},e.prototype.recycleAsyncId=function(e,n,a){if(void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,a);0===e.actions.length&&(cancelAnimationFrame(n),e.scheduled=void 0)},e}(g.a),b=n("CS9Q"),y=new(function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return h.__extends(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,a=-1,r=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++a<r&&(t=n.shift()));if(this.active=!1,e){for(;++a<r&&(t=n.shift());)t.unsubscribe();throw e}},e}(b.a))(m),v=function(t){function e(e,n){void 0===e&&(e=_),void 0===n&&(n=Number.POSITIVE_INFINITY);var a=t.call(this,e,function(){return a.frame})||this;return a.maxFrames=n,a.frame=0,a.index=-1,a}return h.__extends(e,t),e.prototype.flush=function(){for(var t,e,n=this.actions,a=this.maxFrames;(e=n[0])&&e.delay<=a&&(n.shift(),this.frame=e.delay,!(t=e.execute(e.state,e.delay))););if(t){for(;e=n.shift();)e.unsubscribe();throw t}},e.frameTimeFactor=10,e}(b.a),_=function(t){function e(e,n,a){void 0===a&&(a=e.index+=1);var r=t.call(this,e,n)||this;return r.scheduler=e,r.work=n,r.index=a,r.active=!0,r.index=e.index=a,r}return h.__extends(e,t),e.prototype.schedule=function(n,a){if(void 0===a&&(a=0),!this.id)return t.prototype.schedule.call(this,n,a);this.active=!1;var r=new e(this.scheduler,this.work);return this.add(r),r.schedule(n,a)},e.prototype.requestAsyncId=function(t,n,a){void 0===a&&(a=0),this.delay=t.frame+a;var r=t.actions;return r.push(this),r.sort(e.sortActions),!0},e.prototype.recycleAsyncId=function(t,e,n){void 0===n&&(n=0)},e.prototype._execute=function(e,n){if(!0===this.active)return t.prototype._execute.call(this,e,n)},e.sortActions=function(t,e){return t.delay===e.delay?t.index===e.index?0:t.index>e.index?1:-1:t.delay>e.delay?1:-1},e}(g.a),x=n("siIJ"),T=n("pugT"),w=n("FFOo"),S=n("60iU"),O=n("y3By"),C=n("+umK"),k=n("mChF"),I=n("zrt+"),D=n("b7mW"),R=n("3fWJ"),N=n("8g8A"),A=n("awvh"),E=n("3U0i"),L=n("67Y/"),P=n("1fDf"),M=n("isby"),j=n("nkY7");function q(t,e,n){if(e){if(!Object(j.a)(e))return function(){for(var a=[],r=0;r<arguments.length;r++)a[r]=arguments[r];return q(t,n).apply(void 0,a).pipe(Object(L.a)(function(t){return Object(M.a)(t)?e.apply(void 0,t):e(t)}))};n=e}return function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];var i,o=this,s={context:o,subject:i,callbackFunc:t,scheduler:n};return new a.a(function(a){if(n)return n.schedule(F,0,{args:e,subscriber:a,params:s});if(!i){i=new c.a;try{t.apply(o,e.concat([function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];i.next(t.length<=1?t[0]:t),i.complete()}]))}catch(r){Object(P.a)(i)?i.error(r):console.warn(r)}}return i.subscribe(a)})}}function F(t){var e=this,n=t.args,a=t.subscriber,r=t.params,i=r.callbackFunc,o=r.context,s=r.scheduler,u=r.subject;if(!u){u=r.subject=new c.a;try{i.apply(o,n.concat([function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];e.add(s.schedule(z,0,{value:t.length<=1?t[0]:t,subject:u}))}]))}catch(l){u.error(l)}}this.add(u.subscribe(a))}function z(t){var e=t.subject;e.next(t.value),e.complete()}function Y(t,e,n){if(e){if(!Object(j.a)(e))return function(){for(var a=[],r=0;r<arguments.length;r++)a[r]=arguments[r];return Y(t,n).apply(void 0,a).pipe(Object(L.a)(function(t){return Object(M.a)(t)?e.apply(void 0,t):e(t)}))};n=e}return function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];var i={subject:void 0,args:e,callbackFunc:t,scheduler:n,context:this};return new a.a(function(a){var r=i.context,o=i.subject;if(n)return n.schedule(H,0,{params:i,subscriber:a,context:r});if(!o){o=i.subject=new c.a;try{t.apply(r,e.concat([function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.shift();n?o.error(n):(o.next(t.length<=1?t[0]:t),o.complete())}]))}catch(s){Object(P.a)(o)?o.error(s):console.warn(s)}}return o.subscribe(a)})}}function H(t){var e=this,n=t.params,a=t.subscriber,r=t.context,i=n.callbackFunc,o=n.args,s=n.scheduler,u=n.subject;if(!u){u=n.subject=new c.a;try{i.apply(r,o.concat([function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var a=t.shift();e.add(a?s.schedule(V,0,{err:a,subject:u}):s.schedule(G,0,{value:t.length<=1?t[0]:t,subject:u}))}]))}catch(l){this.add(s.schedule(V,0,{err:l,subject:u}))}}this.add(u.subscribe(a))}function G(t){var e=t.subject;e.next(t.value),e.complete()}function V(t){t.subject.error(t.err)}var B=n("dzgT"),U=n("dEwP"),W=n("lYZG"),K=n("G5J1"),$=n("VNr4"),Z=n("0/uQ"),X=n("2Bdj");function J(t,e,n,r){return Object(X.a)(n)&&(r=n,n=void 0),r?J(t,e,n).pipe(Object(L.a)(function(t){return Object(M.a)(t)?r.apply(void 0,t):r(t)})):new a.a(function(a){!function t(e,n,a,r,i){var o;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){var s=e;e.addEventListener(n,a,i),o=function(){return s.removeEventListener(n,a,i)}}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){var u=e;e.on(n,a),o=function(){return u.off(n,a)}}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){var l=e;e.addListener(n,a),o=function(){return l.removeListener(n,a)}}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(var c=0,d=e.length;c<d;c++)t(e[c],n,a,r,i)}r.add(o)}(t,e,function(t){a.next(arguments.length>1?Array.prototype.slice.call(arguments):t)},a,n)})}function Q(t,e,n){return n?Q(t,e).pipe(Object(L.a)(function(t){return Object(M.a)(t)?n.apply(void 0,t):n(t)})):new a.a(function(n){var a,r=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n.next(1===t.length?t[0]:t)};try{a=t(r)}catch(i){return void n.error(i)}if(Object(X.a)(e))return function(){return e(r,a)}})}function tt(t,e,n,r,i){var o,s;return 1==arguments.length?(s=t.initialState,e=t.condition,n=t.iterate,o=t.resultSelector||k.a,i=t.scheduler):void 0===r||Object(j.a)(r)?(s=t,o=k.a,i=r):(s=t,o=r),new a.a(function(t){var a=s;if(i)return i.schedule(et,0,{subscriber:t,iterate:n,condition:e,resultSelector:o,state:a});for(;;){if(e){var r=void 0;try{r=e(a)}catch(l){return void t.error(l)}if(!r){t.complete();break}}var u=void 0;try{u=o(a)}catch(l){return void t.error(l)}if(t.next(u),t.closed)break;try{a=n(a)}catch(l){return void t.error(l)}}})}function et(t){var e=t.subscriber,n=t.condition;if(!e.closed){if(t.needIterate)try{t.state=t.iterate(t.state)}catch(i){return void e.error(i)}else t.needIterate=!0;if(n){var a=void 0;try{a=n(t.state)}catch(i){return void e.error(i)}if(!a)return void e.complete();if(e.closed)return}var r;try{r=t.resultSelector(t.state)}catch(i){return void e.error(i)}if(!e.closed&&(e.next(r),!e.closed))return this.schedule(t)}}function nt(t,e,n){return void 0===e&&(e=K.a),void 0===n&&(n=K.a),Object(W.a)(function(){return t()?e:n})}var at=n("xXU7"),rt=n("p0ib"),it=new a.a(C.a);function ot(){return it}var st=n("F/XL");function ut(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(0===t.length)return K.a;var n=t[0],r=t.slice(1);return 1===t.length&&Object(M.a)(n)?ut.apply(void 0,n):new a.a(function(t){var e=function(){return t.add(ut.apply(void 0,r).subscribe(t))};return Object(Z.a)(n).subscribe({next:function(e){t.next(e)},error:e,complete:e})})}function lt(t,e){return new a.a(e?function(n){var a=Object.keys(t),r=new T.a;return r.add(e.schedule(ct,0,{keys:a,index:0,subscriber:n,subscription:r,obj:t})),r}:function(e){for(var n=Object.keys(t),a=0;a<n.length&&!e.closed;a++){var r=n[a];t.hasOwnProperty(r)&&e.next([r,t[r]])}e.complete()})}function ct(t){var e=t.keys,n=t.index,a=t.subscriber,r=t.subscription,i=t.obj;if(!a.closed)if(n<e.length){var o=e[n];a.next([o,i[o]]),r.add(this.schedule({keys:e,index:n+1,subscriber:a,subscription:r,obj:i}))}else a.complete()}var dt=n("W0Ae");function ft(t,e,n){return void 0===t&&(t=0),new a.a(function(a){void 0===e&&(e=t,t=0);var r=0,i=t;if(n)return n.schedule(pt,0,{index:r,count:e,start:t,subscriber:a});for(;;){if(r++>=e){a.complete();break}if(a.next(i++),a.closed)break}})}function pt(t){var e=t.start,n=t.index,a=t.subscriber;n>=t.count?a.complete():(a.next(e),a.closed||(t.index=n+1,t.start=e+1,this.schedule(t)))}var ht=n("XlPw"),gt=n("gI3B");function mt(t,e){return new a.a(function(n){var a,r;try{a=t()}catch(o){return void n.error(o)}try{r=e(a)}catch(o){return void n.error(o)}var i=(r?Object(Z.a)(r):K.a).subscribe(n);return function(){i.unsubscribe(),a&&a.unsubscribe()}})}var bt=n("909l"),yt=n("iLxQ");n.d(e,"Observable",function(){return a.a}),n.d(e,"ConnectableObservable",function(){return r.a}),n.d(e,"GroupedObservable",function(){return i.a}),n.d(e,"observable",function(){return o.a}),n.d(e,"Subject",function(){return s.a}),n.d(e,"BehaviorSubject",function(){return u.a}),n.d(e,"ReplaySubject",function(){return l.a}),n.d(e,"AsyncSubject",function(){return c.a}),n.d(e,"asapScheduler",function(){return d.a}),n.d(e,"asyncScheduler",function(){return f.a}),n.d(e,"queueScheduler",function(){return p.a}),n.d(e,"animationFrameScheduler",function(){return y}),n.d(e,"VirtualTimeScheduler",function(){return v}),n.d(e,"VirtualAction",function(){return _}),n.d(e,"Scheduler",function(){return x.a}),n.d(e,"Subscription",function(){return T.a}),n.d(e,"Subscriber",function(){return w.a}),n.d(e,"Notification",function(){return S.a}),n.d(e,"pipe",function(){return O.a}),n.d(e,"noop",function(){return C.a}),n.d(e,"identity",function(){return k.a}),n.d(e,"isObservable",function(){return I.a}),n.d(e,"ArgumentOutOfRangeError",function(){return D.a}),n.d(e,"EmptyError",function(){return R.a}),n.d(e,"ObjectUnsubscribedError",function(){return N.a}),n.d(e,"UnsubscriptionError",function(){return A.a}),n.d(e,"TimeoutError",function(){return E.a}),n.d(e,"bindCallback",function(){return q}),n.d(e,"bindNodeCallback",function(){return Y}),n.d(e,"combineLatest",function(){return B.b}),n.d(e,"concat",function(){return U.a}),n.d(e,"defer",function(){return W.a}),n.d(e,"empty",function(){return K.b}),n.d(e,"forkJoin",function(){return $.a}),n.d(e,"from",function(){return Z.a}),n.d(e,"fromEvent",function(){return J}),n.d(e,"fromEventPattern",function(){return Q}),n.d(e,"generate",function(){return tt}),n.d(e,"iif",function(){return nt}),n.d(e,"interval",function(){return at.a}),n.d(e,"merge",function(){return rt.a}),n.d(e,"never",function(){return ot}),n.d(e,"of",function(){return st.a}),n.d(e,"onErrorResumeNext",function(){return ut}),n.d(e,"pairs",function(){return lt}),n.d(e,"race",function(){return dt.a}),n.d(e,"range",function(){return ft}),n.d(e,"throwError",function(){return ht.a}),n.d(e,"timer",function(){return gt.a}),n.d(e,"using",function(){return mt}),n.d(e,"zip",function(){return bt.b}),n.d(e,"EMPTY",function(){return K.a}),n.d(e,"NEVER",function(){return it}),n.d(e,"config",function(){return yt.a})},Dwqy:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("wd/R"),r=function(){function t(){}return t.prototype.transform=function(t){return t?a(1e3*t).fromNow():"unknown"},t}()},DxQv:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 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\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},Dysq:function(t,e){t.exports='<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>\u5207\u63db\u5c0e\u89bd</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u5100\u8868\u677f</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u53e2\u96c6</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u4e3b\u6a5f</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f</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>\u7d44\u614b</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH \u5730\u5716</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\u7ba1\u7406\u54e1\u6a21\u7d44</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u8b66\u793a</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u6c60</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u5340\u584a</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u93e1\u50cf</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>\u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u7269\u4ef6\u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u6876</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u8fd4\u56de</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u9078\u53d6\u8a9e\u8a00</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u9762\u677f\u8cc7\u6599...</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528\u76e3\u63a7\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\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 \u5100\u8868\u677f\u4e0d\u5b58\u5728\u3002\u5982\u9700\u4e86\u89e3\n  \u5982\u4f55\u5411 Grafana\xa0\u65b0\u589e\u5100\u8868\u677f\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana \u6642\u9593\u9078\u64c7\u5668</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\u91cd\u8a2d\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u8cc7\u6599\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9078\u53d6\u7684\u6578\u76ee</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u627e\u5230\u7684\u6578\u76ee</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u7e3d\u8a08</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8a2d\u5b9a</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>\u901a\u5e38\u4e0d\u9700\u8981\u8b8a\u66f4\u9019\u4e9b\u53c3\u6578\u7684\u9810\u8a2d\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u652f\u63f4\u5132\u5b58</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u78ba\u8a8d</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u53d6\u6d88</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u9032\u968e\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u76ee\u6a19 IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u6b64\u6b04\u4f4d\u70ba\u5fc5\u586b\u6b04\u4f4d\u3002</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN \u6a21\u5f0f\u932f\u8aa4\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN \u6a21\u5f0f\u61c9\u5982\u4e0b\u6240\u793a\ufe30\u300ciqn.$year-$month.$reversedAddress:$definedName\u300d</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>\u4f8b\u5982\uff1aiqn.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>\u66f4\u591a\u8cc7\u8a0a</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u6b64\u76ee\u6a19\u7684\u9032\u968e\u8a2d\u5b9a\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u5165\u53e3\u7db2\u7ad9</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>\u81f3\u5c11\u9700\u8981\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \u500b\u7269\u4ef6\u9598\u9053\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u65b0\u589e\u5165\u53e3\u7db2\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u6b64\u5f71\u50cf\u7684\u8a2d\u5b9a\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u81f3\u5c11\u9700\u8981 1 \u500b\u5f71\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u65b0\u589e\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \u9a57\u8b49</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u7528\u6236\u7aef IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u555f\u52d5\u5668 IQN \u5fc5\u9808\u552f\u4e00\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u4f7f\u7528\u8005</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>\u4f7f\u7528\u8005\u540d\u7a31\u7684\u9577\u5ea6\u5fc5\u9808\u4ecb\u65bc 8 \u81f3 64 \u500b\u5b57\u5143\u4e4b\u9593\uff0c\u4e26\u4e14\u53ea\u80fd\u5305\u542b\u4ee5\u4e0b\n                        \u5b57\u5143\ufe30\u5b57\u6bcd\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u6216\u300c:\u300d\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u96d9\u5411\u9a57\u8b49\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u96d9\u5411\u9a57\u8b49\u5bc6\u78bc</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>\u555f\u52d5\u5668\u5c6c\u65bc\u7fa4\u7d44\u3002\u5f71\u50cf\u9808\u5728\u7fa4\u7d44\u4e2d\u9032\u884c\u8a2d\u5b9a\u3002 </target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u672a\u65b0\u589e\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u65b0\u589e\u555f\u52d5\u5668</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u65b0\u589e\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u63d0\u4ea4</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>\u78ba\u5b9a\u8981\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u9078\u53d6\u7684\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u55ce\uff1f\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u662f\u7684\uff0c\u6211\u78ba\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u63a2\u67e5\u9a57\u8b49</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>\u4f7f\u7528\u8005\u540d\u7a31\u7684\u9577\u5ea6\u5fc5\u9808\u4ecb\u65bc 8 \u81f3 64 \u500b\u5b57\u5143\u4e4b\u9593\uff0c\u4e26\u4e14\u53ea\u80fd\u5305\u542b\u4ee5\u4e0b\n                        \u5b57\u5143\ufe30\u5b57\u6bcd\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u6216\u300c:\u300d\u3002</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528 iSCSI \u76ee\u6a19\u7ba1\u7406\u529f\u80fd\uff0c\n    \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53ef\u7528\u8cc7\u8a0a\ufe30</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u7121\u6cd5\u4f7f\u7528 iSCSI \u76ee\u6a19</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u4e0d\u5141\u8a31\u4f7f\u7528\u300c/\u300d\u548c\u300c@\u300d\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u6b63\u5728\u8f09\u5165...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684 RBD \u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u9078\u53d6\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u4f7f\u7528\u5c08\u5c6c\u7684\u8cc7\u6599\u6c60</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u8cc7\u6599\u6c60</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>\u5c08\u7528\u65bc\u5132\u5b58 RBD \u7684\u7269\u4ef6\u8cc7\u6599\u7684\u6c60</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u8cc7\u6599\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u4f8b\u5982 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u60a8\u5fc5\u9808\u589e\u52a0\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u529f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u9032\u968e...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u9032\u968e</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u5206\u5272</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u7269\u4ef6\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u5206\u5272\u55ae\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u9078\u53d6\u5206\u5272\u55ae\u4f4d --</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>\u7531\u65bc\u5df2\u5b9a\u7fa9\u5206\u5272\u8a08\u6578\uff0c\u56e0\u6b64\u5fc5\u9808\u586b\u5beb\u6b64\u6b04\u4f4d\uff01</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u5206\u5272\u55ae\u4f4d\u5927\u65bc\u7269\u4ef6\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u5206\u5272\u8a08\u6578</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>\u7531\u65bc\u5df2\u5b9a\u7fa9\u5206\u5272\u55ae\u4f4d\uff0c\u56e0\u6b64\u5fc5\u9808\u586b\u5beb\u6b64\u6b04\u4f4d\uff01</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u5206\u5272\u8a08\u6578\u5fc5\u9808\u5927\u65bc 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u6574\u9ad4\u6548\u80fd</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7de8\u8f2f</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u63cf\u8ff0</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u8a73\u7d30\u63cf\u8ff0</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u9810\u8a2d\u503c</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u7cbe\u9748\u9810\u8a2d\u503c</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u670d\u52d9</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u503c</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u4e0d\u5f97\u5927\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u4e0d\u5f97\u5c0f\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u5132\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH \u5730\u5716\u6aa2\u8996\u5668</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u4e3b\u6a5f\u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u627e\u4e0d\u5230\u9805\u76ee</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u53e2\u96c6\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u7a3d\u6838\u8a18\u9304</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u7d44\u614b...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u7d44\u614b\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u7de8\u8f2f\u7ba1\u7406\u54e1\u6a21\u7d44</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>\u8f38\u5165\u7684\u503c\u4e0d\u662f\u6709\u6548\u7684 UUID\uff0c\u4f8b\u5982 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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u662f\u6709\u6548\u7684  IP \u4f4d\u5740\u3002</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u5fc5\u9808\u5c0f\u65bc\u6216\u7b49\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u70ba\u6578\u5b57\u3002</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>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u70ba\u6578\u5b57\u6216\u5c0f\u6578\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u53e2\u96c6 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap \u4fee\u6539\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap \u7248\u672c\u7de8\u865f</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>\u4ef2\u88c1\u6210\u54e1</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u4ef2\u88c1\u6210\u54e1</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u53e2\u96c6\u7bc4\u570d\u7684 OSD \u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \u5fa9\u539f\u512a\u5148\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u512a\u5148\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u81ea\u8a02\u512a\u5148\u7a0b\u5ea6\u503c</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u6b64\u6b04\u4f4d\u70ba\u5fc5\u586b\u6b04\u4f4d\uff01</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>\u8f38\u5165\u7684\u503c\u592a\u9ad8\uff01\u8a72\u503c\u4e0d\u5f97\u5927\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3002\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>\u8f38\u5165\u7684\u503c\u592a\u4f4e\uff01\u8a72\u503c\u4e0d\u5f97\u5c0f\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u91cd\u65b0\u8a2d\u5b9a OSD \u7684\u6b0a\u6578</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>\u8a72\u503c\u5fc5\u9808\u4ecb\u65bc 0 \u81f3 1 \u4e4b\u9593\u3002</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u91cd\u65b0\u8a2d\u5b9a\u6b0a\u6578</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 {...}}"/>\u6574\u7406\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 {\u6df1\u5c64} }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\u5373\u5c07\u5c0d OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n            \u5957\u7528\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\u6574\u7406\u3002\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 {\u6df1\u5c64} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u82e5\u7e7c\u7e8c\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  \u5c07\u88ab\u6a19\u793a\u70ba\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD \u4e0d\u5b89\u5168\uff0c\u7121\u6cd5\u640d\u6bc0\uff01</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u82e5\u7e7c\u7e8c\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  \u5c07\u88ab\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8a73\u7d30\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7d71\u8a08\u8cc7\u6599</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528 NFS Ganesha \u7ba1\u7406\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u7528\u6236\u7aef</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u4f55\u7528\u6236\u7aef\u5747\u53ef\u5b58\u53d6</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u586b\u6b04\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\u5fc5\u9808\u5305\u542b\u4e00\u6216\u591a\u500b\u9017\u865f\u5206\u9694\u503c</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b\u5982\ufe30</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u5b58\u53d6\u985e\u578b</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>\u65b0\u589e\u7528\u6236\u7aef</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS \u8f38\u51fa\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u53e2\u96c6 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u9078\u53d6\u53e2\u96c6 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u65b0\u589e\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u5132\u5b58\u5f8c\u7aef</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u9078\u53d6\u5132\u5b58\u5f8c\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u9078\u53d6\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \u4f7f\u7528\u8005 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7528\u6236\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- \u9078\u53d6 cephx \u7528\u6236\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u5b89\u5168\u6a19\u7c64</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u555f\u7528\u5b89\u5168\u6a19\u7c64</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \u8def\u5f91</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>\u8def\u5f91\u5fc5\u9808\u4ee5\u300c/\u300d\u958b\u982d\uff0c\u5f8c\u9762\u53ef\u63a5\u55ae\u8a5e</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u5c07\u5efa\u7acb\u65b0\u76ee\u9304</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u8def\u5f91</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>\u8def\u5f91\u53ea\u80fd\u4ee5\u55ae\u4e00\u300c/\u300d\u6216\u55ae\u8a5e\u958b\u982d</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u5c07\u5efa\u7acb\u65b0\u6876</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \u901a\u8a0a\u5354\u5b9a</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 \u6a19\u8a18</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>\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>"/> \u639b\u63a5\u7684\u5099\u7528\u5b58\u53d6 (\u4e0d\u5f97\u5305\u542b\u524d\u7f6e /)\u3002\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>\u7528\u6236\u7aef\u4e0d\u80fd\u639b\u63a5\u5b50\u76ee\u9304 (\u5373\u5982\u679c\u6a19\u8a18\u70ba foo\uff0c\u5247\u7528\u6236\u7aef\u7121\u6cd5\u639b\u63a5 foo/baz)\u3002</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>\u900f\u904e\u4f7f\u7528\u4e0d\u540c\u6a19\u8a18\u9078\u9805\uff0c\u53ef\u5c07\u540c\u4e00\u8def\u5f91\u8f38\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u865b\u64ec</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>\u6b64\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>"/> \u8f38\u51fa\u5728\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u865b\u64ec\u6a94\u6848\u7cfb\u7d71\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u4e2d\n                                               \u6240\u4f54\u7528\u7684\u4f4d\u7f6e (\u5fc5\u9808\u552f\u4e00)\u3002\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>\u900f\u904e\u4f7f\u7528\u4e0d\u540c\u865b\u64ec\u9078\u9805\uff0c\u53ef\u5c07\u540c\u4e00\u8def\u5f91\u8f38\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u5b58\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u9078\u53d6\u5b58\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684 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>-- \u9078\u53d6\u57f7\u884c\u54ea\u7a2e\u985e\u578b\u7684\u4f7f\u7528\u8005 ID \u533f\u540d\u5b58\u53d6 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u50b3\u8f38\u901a\u8a0a\u5354\u5b9a</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u7a31\u53ea\u80fd\u7531\u82f1\u6578\u5b57\u5143\u3001\u7834\u6298\u865f\u548c\u5e95\u7dda\u7d44\u6210\u3002</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>\u6240\u9078\u7684\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u5916\u639b\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u8cc7\u6599\u5340\u584a (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>\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 2\u3002</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u7de8\u78bc\u5340\u584a (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>\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 1\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u6301\u4e45\u6027\u4f30\u503c (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u672c\u5730\u6027 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH \u6545\u969c\u7db2\u57df</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH \u672c\u5730\u6027</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u6280\u8853</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\u5c01\u5305\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>CRUSH \u6839</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH \u88dd\u7f6e\u985e\u5225</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u4f55</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u76ee\u9304</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u65b0\u589e</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u95dc\u9589</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u7a31...</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>\u6240\u9078\u7684 Ceph \u6c60\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u6c60\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u9078\u53d6\u6c60\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u653e\u7f6e\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u81f3\u5c11\u9700\u8981\u4e00\u500b\u653e\u7f6e\u7fa4\u7d44\uff01</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>\u60a8\u7684\u53e2\u96c6\u7121\u6cd5\u8655\u7406\u9019\u9ebc\u591a\u7684 PG\u3002\u8acb\u91cd\u65b0\u8a08\u7b97\u6240\u9700\u7684 PG \u6578\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u60a8\u53ea\u80fd\u589e\u52a0\u73fe\u6709\u6c60\u7684 PG \u6578\u91cf\u3002\n                \u76ee\u524d\u60a8\u7684\u6c60\u6709\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> \u500b PG\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u8a08\u7b97\u8aaa\u660e</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u5df2\u70ba\u60a8\u8a08\u7b97\u76ee\u524d\u7684 PG \u8a2d\u5b9a\uff0c\u60a8\n                    \u61c9\u5728\u63d0\u4ea4\u524d\u78ba\u5b9a\u9019\u4e9b\u503c\u7b26\u5408\u60a8\u7684\u9700\u6c42\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH \u898f\u5247\u96c6</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \u9078\u53d6 CRUSH \u898f\u5247 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH \u898f\u5247</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH \u6b65\u9a5f</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u7121\u6cd5\u5728\u76ee\u524d\u7684\u53e2\u96c6\u4e2d\u4f7f\u7528\u6b64\u898f\u5247\uff0c\u56e0\u70ba\u53e2\u96c6\u7684\n                OSD \u6578\u91cf\u904e\u5c11\uff0c\u7121\u6cd5\u6eff\u8db3\u898f\u5247\u6240\u9700\u7684\u6700\u4f4e OSD \u6578\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u8907\u88fd\u5927\u5c0f</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>\u6700\u4f4e\ufe30\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>\u6700\u9ad8\ufe30\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u6307\u5b9a\u7684\u5927\u5c0f\u8d85\u51fa\u4e86\u7bc4\u570d\u3002\u4ecb\u65bc\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \u81f3\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \u4e4b\u9593\u7684\u503c\u624d\u6709\u6548\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u9078\u53d6\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94 --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \u8986\u5beb</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u58d3\u7e2e</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u6f14\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u6c92\u6709\u53ef\u7528\u7684\u7cfe\u522a\u58d3\u7e2e\u6f14\u7b97\u6cd5 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Blob \u6700\u5c0f\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u4f8b\u5982 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u503c\u61c9\u5927\u65bc 0</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Blob \u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u4f8b\u5982 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>\u503c\u61c9\u5927\u65bc blob \u6700\u5c0f\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u6bd4\u7387</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u58d3\u7e2e\u7387</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>\u503c\u61c9\u4ecb\u65bc 0.0 \u81f3 1.0 \u4e4b\u9593</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u7121\u6cd5\u5efa\u7acb\u540d\u7a31\u4e2d\u5305\u542b\u300c/\u300d\u7684 RBD \u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u8acb\u8b8a\u66f4\u540d\u7a31\u6216\u5c07\u300crbd\u300d\u5f9e\u61c9\u7528\u7a0b\u5f0f\u6e05\u55ae\u4e2d\u79fb\u9664\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u6c60\u6e05\u55ae</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>\u5982\u9700\u4e86\u89e3\u5982\u4f55\u8a2d\u5b9a\u548c\u555f\u7528\u7269\u4ef6\u9598\u9053\u7ba1\u7406\u529f\u80fd\uff0c\n  \u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u4ef6\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u6876\u8cc7\u6599...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u6876\u8cc7\u6599\u3002</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>\u8a72\u503c\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u6240\u9078\u7684\u540d\u7a31\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u64c1\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u9078\u53d6\u4f7f\u7528\u8005 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u7cbe\u9748\u6e05\u55ae</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u9078\u53d6\u985e\u578b --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u8a31\u53ef\u6b0a</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u9078\u53d6\u8a31\u53ef\u6b0a --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u4f7f\u7528\u8005\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u9078\u53d6\u4f7f\u7528\u8005\u540d\u7a31 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u81ea\u52d5\u7522\u751f\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u5b58\u53d6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u6a5f\u5bc6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u5b50\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u6240\u9078\u7684\u5b50\u4f7f\u7528\u8005 ID \u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8b80\u53d6\u3001\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u5b8c\u6574</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u81ea\u52d5\u7522\u751f\u6a5f\u5bc6\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u6b63\u5728\u8f09\u5165\u4f7f\u7528\u8005\u8cc7\u6599...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u7121\u6cd5\u8f09\u5165\u4f7f\u7528\u8005\u8cc7\u6599\u3002</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u6240\u9078\u7684\u4f7f\u7528\u8005 ID \u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u5168\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u6240\u9078\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u5df2\u5728\u4f7f\u7528\u4e2d\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u6700\u5927\u6876\u6578</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\u8f38\u5165\u7684\u503c\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u5b50\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u6c92\u6709\u5b50\u4f7f\u7528\u8005\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u91d1\u9470</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>\u6c92\u6709\u91d1\u9470\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u986f\u793a</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u529f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6c92\u6709\u529f\u80fd\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u4f7f\u7528\u8005\u5b9a\u984d</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u5df2\u555f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u5927\u5c0f\u4e0d\u9650</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u7269\u4ef6\u6578\u4e0d\u9650</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u6876\u5b9a\u984d</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\u6b61\u8fce\u4f7f\u7528 Ceph\uff01</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>\u9700\u8981\u6307\u5b9a\u4f7f\u7528\u8005\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u9700\u8981\u6307\u5b9a\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u767b\u5165</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u63cf\u8ff0...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u8a31\u53ef\u6b0a</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u62b1\u6b49\uff0c\u8a72\u4f7f\u7528\u8005\u4e0d\u5b58\u5728\u65bc Ceph \u4e2d\u3002</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>\u8fd4\u56de\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u767b\u5165\u9801\u9762\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002 \u7576\u60a8\u91cd\u8a66\u767b\u5165\u6642\uff0c\u60a8\u5c07\u5f9e\u8eab\u5206\u63d0\u4f9b\u8005\u767b\u51fa\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u78ba\u8a8d\u5bc6\u78bc</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u78ba\u8a8d\u7684\u5bc6\u78bc\u8207\u4e4b\u524d\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u7b26\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u96fb\u5b50\u90f5\u4ef6\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u89d2\u8272</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>\u60a8\u6b63\u8981\u70ba\u60a8\u81ea\u5df1\u7684\u4f7f\u7528\u8005\u79fb\u9664\u300c\u4f7f\u7528\u8005\u8b80\u53d6/\u5beb\u5165\u300d\u8a31\u53ef\u6b0a\u3002</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>\u82e5\u7e7c\u7e8c\uff0c\u60a8\u5c07\u518d\u4e5f\u7121\u6cd5\u70ba\u4efb\u4f55\u4f7f\u7528\u8005\u65b0\u589e\u6216\u79fb\u9664\u89d2\u8272\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u5df2\u7981\u6b62</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>\u62b1\u6b49\uff0c\u60a8\u7121\u6b0a\u67e5\u770b\u60a8\u8981\u5c0b\u627e\u7684\u5167\u5bb9\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u62b1\u6b49\uff0c\u6211\u5011\u627e\u4e0d\u5230\u60a8\u8981\u5c0b\u627e\u7684\u5167\u5bb9\u3002</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u5168\u90e8\u79fb\u9664</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u8fd1\u7684\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u6c92\u6709\u80cc\u666f\u4efb\u52d9\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u80cc\u666f\u4efb\u52d9</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u8aaa\u660e</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u6587\u4ef6</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>\u95dc\u65bc</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u5100\u8868\u677f\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u4f7f\u7528\u8005\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u767b\u5165\u7684\u4f7f\u7528\u8005</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>\u4ee5\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      \u8eab\u5206\u767b\u5165\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u767b\u51fa</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u6548\u80fd\u8a08\u6578\u5668</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u6548\u80fd\u8a73\u7d30\u8cc7\u6599</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>\u7d22\u5f15\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u653e\u7f6e\u898f\u5247</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\u6700\u5927\u6a19\u8a18\u6578</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u4e3b\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u4fee\u6539\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\u5340\u57df\u7fa4\u7d44</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u7121\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {\u5426} 1 {\u662f} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u6876\u6578</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u6548\u80fd\u8a08\u6578\u5668</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u5168\u57df</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u6c60</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \u7d44\u614b</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>\u79fb\u9664\u672c\u5730\u7d44\u614b\u503c\u3002\u5c07\u7e7c\u627f\u4e26\u4f7f\u7528\u7236\u7d44\u614b\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u503c\u70ba 0</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\u5c6c\u6027 (OSD \u5730\u5716)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\u7121\u6cd5\u4f7f\u7528\u4e2d\u7e7c\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u4e2d\u7e7c\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u6548\u80fd\u8a08\u6578\u5668</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>\u7121\u6cd5\u4f7f\u7528\u9577\u689d\u5716\ufe30\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>\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8b80\u53d6</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u9577\u689d\u5716</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u76ee\u524d\u7684\u503c</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u6700\u5c0f\u503c</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u6700\u5927\u503c</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u4f86\u6e90</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u5c64\u7d1a</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u53ef\u5728\u57f7\u884c\u6642\u671f\u66f4\u65b0 (\u53ef\u7de8\u8f2f)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u5217\u8209\u503c</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u53e6\u8acb\u53c3\u95b1</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u53e2\u96c6\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\u7ba1\u7406\u54e1\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u7269\u4ef6\u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\u4e2d\u7e7c\u8cc7\u6599\u4f3a\u670d\u5668</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \u9598\u9053</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u7528\u6236\u7aef IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u7528\u6236\u7aef\u8f38\u9001\u91cf</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u7528\u6236\u7aef\u8b80\u53d6/\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u5fa9\u539f\u8f38\u9001\u91cf</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u6548\u80fd</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u539f\u59cb\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u7269\u4ef6</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>\u6bcf\u500b OSD \u7684 PG \u6578</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u5982\u9700\u8a73\u7d30\u8cc7\u6599\uff0c\u8acb\u53c3\u95b1\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u8a18\u9304\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u5c07\u5f71\u50cf\u79fb\u81f3\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u82e5\u8981\u5c07\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \u79fb\u81f3\u5783\u573e\u6876\uff0c\n          \u8acb\u6309\u4e00\u4e0b\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u79fb\u52d5\u5f71\u50cf\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\u6216\u8005\uff0c\u60a8\u53ef\u4ee5\u9078\u53d6\u4e00\u500b\u904e\u671f\u65e5\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u8b77\u7684\u904e\u671f\u65e5\u70ba</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u7121\u4fdd\u8b77</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>\u65e5\u671f\u683c\u5f0f\u932f\u8aa4\u3002\u8acb\u4f7f\u7528\u300cYYYY-MM-DD HH:mm:ss\u300d\u3002</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>\u4fdd\u8b77\u5df2\u904e\u671f\u3002\u8acb\u9078\u53d6\u4e00\u500b\u672a\u4f86\u7684\u65e5\u671f\u6216\u4fdd\u7559\u7a7a\u767d\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u79fb\u52d5\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u7d9c\u89bd</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u76ee\u6a19</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>\u50c5\u9069\u7528\u65bc\u5df2\u555f\u7528\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>"/> \u7684 RBD \u5f71\u50cf\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u8cc7\u6599\u6c60</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u5df2\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u5df2\u4f48\u5efa</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\u7e3d\u4f48\u5efa\u6578</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u5206\u5272\u55ae\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u5206\u5272\u8a08\u6578</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u7236</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u5340\u584a\u540d\u7a31\u5b57\u9996</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\u9806\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u6b64\u8a2d\u5b9a\u6703\u8986\u5beb\u5168\u57df\u503c</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>\u6b64\u503c\u70ba\u5168\u57df\u503c\u3002\u672a\u70ba\u6b64\u5f71\u50cf\u8a2d\u5b9a\u6b64\u9078\u9805\u7684\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD \u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {\u91cd\u65b0\u547d\u540d} other {\u5efa\u7acb} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u53d7\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u672a\u53d7\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u60a8\u6b63\u8981\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u6e05\u9664\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u82e5\u8981\u6e05\u9664\uff0c\u8acb\u9078\u53d6\u4e00\u500b\u6216\u5168\u90e8\u5f71\u50cf\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u6c60\ufe30</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u6c60\u540d\u7a31...</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u5168\u90e8</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u56de\u5b58\u5f71\u50cf</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u82e5\u8981\u56de\u5b58</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u9375\u5165\u5f71\u50cf\u7684\u65b0\u540d\u7a31\u5e76\u6309\u4e00\u4e0b</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u904e\u671f\u65e5\u70ba</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u8b77\u904e\u671f\u65e5\u70ba</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>\u6b64\u5f71\u50cf\u7684\u4fdd\u8b77\u904e\u671f\u65e5\u70ba\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \u62d3\u64b2</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u6b63\u5728\u540c\u6b65</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u6e96\u5099\u5c31\u7dd2</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u7de8\u8f2f\u6c60\u93e1\u50cf\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u82e5\u8981\u7de8\u8f2f\u6c60\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>"/>\xa0\n          \u7684\u93e1\u50cf\u6a21\u5f0f\uff0c\u8acb\u5f9e\u6e05\u55ae\u4e2d\u9078\u53d6\u4e00\u500b\u65b0\u6a21\u5f0f\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u66f4\u65b0\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\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>\u5728\u505c\u7528\u93e1\u50cf\u4e4b\u524d\uff0c\u5fc5\u9808\u5148\u79fb\u9664\u5c0d\u7b49\u53e2\u96c6\u3002</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  \u6c60\u93e1\u50cf\u5c0d\u7b49\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 {\u7de8\u8f2f} other {\u65b0\u589e} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u6c60\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>"/>\u7684\n          \u93e1\u50cf\u5c0d\u7b49\u5c6c\u6027\uff0c\u7136\u5f8c\u6309\u4e00\u4e0b\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u63d0\u4ea4\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u53e2\u96c6\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u53e2\u96c6\u540d\u7a31\u7121\u6548\u3002</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 \u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u9017\u865f\u5206\u9694\u7684\u4f4d\u5740...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\u76e3\u63a7\u7a0b\u5f0f\u4f4d\u5740\u7121\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 \u7de8\u78bc\u7684\u91d1\u9470...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \u91d1\u9470\u5fc5\u9808\u70ba Base64 \u7de8\u78bc\u7684\u91d1\u9470\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u5feb\u53d6\u5c64\u8a73\u7d30\u8cc7\u6599</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u968e\u5c64</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u7528\u6236\u7aef\ufe30\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u76ee\u524d</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u5df2\u66f4\u65b0\u63a2\u67e5\u9a57\u8b49</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u5165\u53e3\u7db2\u7ad9\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u5f71\u50cf\u3002</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>\u6c92\u6709\u53ef\u7528\u7684\u5f71\u50cf\u3002\u8acb\u78ba\u5b9a\u70ba\u76ee\u6a19\u65b0\u589e\u4e00\u500b\u5f71\u50cf\u3002</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>\u6c92\u6709\u53ef\u7528\u7684\u555f\u52d5\u5668\u3002\u8acb\u78ba\u5b9a\u70ba\u76ee\u6a19\u65b0\u589e\u4e00\u500b\u555f\u52d5\u5668\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u76ee\u6a19</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u4e3b\u6a5f\u540d\u7a31</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8b80\u53d6\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8b80\u53d6\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u5beb\u5165\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u4f7f\u7528\u4e2d/\u6700\u4f73\u5316\u958b\u59cb\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u4f8b\u9805</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u9032\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u7de8\u8f2f\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u65b0\u589e\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u7de8\u8f2f\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u522a\u9664\u5c0d\u7b49</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>\u672c\u5730\u6578\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>\u9060\u7aef\u6578\u91cf</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u93e1\u50cf\u5c0d\u7b49</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u91d1\u9470</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u503c</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u6df1\u5c64\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u5206\u5c64</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u7368\u4f54\u9396\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\u7269\u4ef6\u5c0d\u61c9 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u8a18\u9304 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u5feb\u901f\u8a08\u7b97\u5dee\u7570 (\u9700\u8981\u7368\u4f54\u9396\u5b9a)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u79fb\u81f3\u5783\u573e\u6876</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u91cd\u65b0\u547d\u540d</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u53d6\u6d88\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \u5feb\u7167\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u522a\u9664\u4f4d\u7f6e</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>\u985e\u578b</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72c0\u614b</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u4e3b\u6a5f</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u6839</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u968e\u5c64</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u6d3b\u52d5</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>\u4f7f\u7528\u7387</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u5f85\u547d\u7cbe\u9748</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u8a72\u503c\u53ef\u5728\u57f7\u884c\u6642\u671f\u66f4\u65b0\u3002</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>\u7cbe\u9748/\u7528\u6236\u7aef\u4e0d\u6703\u5f9e\u76e3\u63a7\u7a0b\u5f0f\u7d44\u614b\u8cc7\u6599\u5eab\n      \u63d0\u53d6\u6b64\u503c\u3002\u6211\u5011\u4e0d\u5141\u8a31\u900f\u904e\u300cceph config set ...\u300d\n      \u8a2d\u5b9a\u6b64\u9078\u9805\u3002\u61c9\u900f\u904e ceph.conf \u6216\u4f7f\u7528\u6307\u4ee4\u884c\n      \u9032\u884c\u8a2d\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5728\u7cbe\u9748\u555f\u52d5\u671f\u9593\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5f71\u97ff\u53e2\u96c6\u5efa\u7acb\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u8a72\u9078\u9805\u50c5\u5f71\u97ff\u7cbe\u9748\u5efa\u7acb\u3002</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>\u5df2\u66f4\u65b0\u7d44\u614b\u9078\u9805\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>\u670d\u52d9</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u76ee\u524d\u7684\u503c</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u53ef\u7de8\u8f2f</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>\u5df2\u66f4\u65b0\u6a21\u7d44\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\u7684\u9078\u9805\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u555f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u6b63\u5728\u91cd\u65b0\u9023\u63a5\uff0c\u8acb\u7a0d\u5019...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u516c\u7528\u4f4d\u5740</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u958b\u555f\u7684\u5de5\u4f5c\u968e\u6bb5</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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>\u4e4b\u524d\u6a19\u793a\u70ba out \u7684 OSD \u5728\u555f\u52d5\u6642\u5c07\u4e0d\u6703\u91cd\u65b0\u6a19\u793a\u70ba in</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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 \u5728\u8a2d\u5b9a\u7684\u9593\u9694\u904e\u5f8c\u5c07\u4e0d\u6703\u81ea\u52d5\u6a19\u793a\u70ba out</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba Up</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>\u4e0d\u5141\u8a31 OSD \u555f\u52d5</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u7981\u6b62\u6a19\u793a\u70ba 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>\u5c07\u6703\u5ffd\u7565 OSD \u6545\u969c\u5831\u544a\uff0c\u5982\u6b64\u76e3\u63a7\u7a0b\u5f0f\u4fbf\u4e0d\u6703\u5c07 OSD \u6a19\u793a\u70ba down</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u66ab\u505c\u8b80\u53d6\u548c\u5beb\u5165</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u7981\u6b62\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u6574\u7406\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u7981\u6b62\u6df1\u5c64\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u6df1\u5c64\u6574\u7406\u5df2\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u7981\u6b62\u56de\u586b</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG \u56de\u586b\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u7981\u6b62\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG \u5fa9\u539f\u5df2\u66ab\u505c</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u6309\u4f4d\u5143\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u4f7f\u7528\u6309\u4f4d\u5143\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u5df2\u6e05\u9664 Snapdir</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD \u5df2\u8f49\u63db snapset</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u5fa9\u539f\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u5728\u5fa9\u539f\u671f\u9593\uff0c\u800c\u975e\u5728\u5efa\u7acb\u4e92\u806f\u6642\u57f7\u884c\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \u8a18\u9304\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u70ba pg \u8a18\u9304\u9577\u5ea6\u8a2d\u5b9a\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\u5df2\u66f4\u65b0 OSD \u65d7\u6a19</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u6df1\u5c64\u6574\u7406</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u6a19\u793a\u70ba Out</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u6a19\u793a\u70ba In</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="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u6a19\u793a\u70ba Down</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="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u6a19\u793a\u70ba\u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u6a19\u793a</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u5df2\u6a19\u793a\u70ba\u907a\u5931</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6e05\u9664</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u640d\u6bc0</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u640d\u6bc0</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u5df2\u640d\u6bc0</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>\u8b80\u53d6\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8b80\u53d6\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u5beb\u5165\u64cd\u4f5c\u6578</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>\u5c07 OSD \u6a19\u793a\u70ba\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>\u6a19\u793a\u70ba\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u56de\u586b\u6578</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u8655\u65bc\u4f7f\u7528\u4e2d\u72c0\u614b\u7684\u6700\u5927\u5fa9\u539f\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u55ae\u6b21\u555f\u52d5\u7684\u6700\u5927\u5fa9\u539f\u64cd\u4f5c\u6578</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u5fa9\u539f\u64cd\u4f5c\u9593\u9694\u7761\u7720\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u81ea\u8a02</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>\u5df2\u66f4\u65b0 OSD \u5fa9\u539f\u901f\u5ea6\u512a\u5148\u7a0b\u5ea6\u300c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\u4ee5\u4e0b OSD \u5df2\u555f\u59cb\u5316\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/>\u64cd\u4f5c\ufe30\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u5de5\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u56b4\u91cd\u6027</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u5df2\u555f\u52d5</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u5df2\u4f7f\u7528</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u53ef\u7528</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u4e7e\u6de8</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u5de5\u4f5c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u672a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u555f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u7121\u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u4f7f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u5f85\u547d</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\u7121</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\u4f7f\u7528\u4e2d\u7684\u7cbe\u9748</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>\u672a\u8a2d\u5b9a NFS Ganesha \u670d\u52d9\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u50b3\u8f38</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \u6a94\u6848\u7cfb\u7d71</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\u7e7c\u627f\u81ea\u5168\u57df\u7d44\u614b)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u7e7c\u627f\u81ea\u5168\u57df\u7d44\u614b</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>-- \u9078\u53d6\u57f7\u884c\u54ea\u7a2e\u985e\u578b\u7684\u4f7f\u7528\u8005 ID \u533f\u540d\u5b58\u53d6 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u7cbe\u9748\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u8f38\u51fa</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u5feb\u53d6\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u9010\u51fa\u524d\u81f3\u5c11\u53ef\u7559\u5b58\u7684\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u885d\u6d17\u524d\u81f3\u5c11\u53ef\u7559\u5b58\u7684\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u76ee\u6a19\u6700\u5927\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u76ee\u6a19\u6700\u5927\u7269\u4ef6\u6578</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u672a\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u5df2\u9054\u5230\u61c9\u7528\u7a0b\u5f0f\u4e0a\u9650</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>\u4e00\u500b\u6c60\u6700\u591a\u53ea\u80fd\u56db\u500b\u61c9\u7528\u7a0b\u5f0f\u5b9a\u7fa9\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u5141\u8a31\u7684\u5b57\u5143\u70ba\u300c_a-zA-Z0-9\u300d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u6700\u5927\u9577\u5ea6\u70ba 128 \u500b\u5b57\u5143</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u904e\u6ffe\u6216\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u65b0\u589e\u61c9\u7528\u7a0b\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u8907\u672c\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u4e0a\u6b21\u8b8a\u66f4\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH \u898f\u5247\u96c6</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u5beb\u5165\u4f4d\u5143\u7d44\u6578</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u5df2\u66f4\u65b0\u7269\u4ef6\u9598\u9053\u6876\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\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>\u5df2\u5efa\u7acb\u7269\u4ef6\u9598\u9053\u6876\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u6876</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u6876</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>\u5df2\u66f4\u65b0\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\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>\u5df2\u5efa\u7acb\u7269\u4ef6\u9598\u9053\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u7bc4\u570d</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8b80\u53d6</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>\u5df2\u5efa\u7acb\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\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>\u5df2\u66f4\u65b0\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u7cfb\u7d71\u89d2\u8272</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>\u5df2\u522a\u9664\u89d2\u8272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\n        </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>\u5df2\u5efa\u7acb\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u66f4\u65b0\u4f7f\u7528\u8005</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7e7c\u7e8c</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>\u60a8\u5df2\u88ab\u81ea\u52d5\u767b\u51fa\uff0c\u56e0\u70ba\u60a8\u7684\u89d2\u8272\u767c\u751f\u4e86\u8b8a\u66f4\u3002</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>\u5df2\u66f4\u65b0\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u5df2\u522a\u9664\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u7121\u6cd5\u522a\u9664\u4f7f\u7528\u8005\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\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>\u60a8\u76ee\u524d\u6b63\u4ee5\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u8eab\u5206\u767b\u5165\u3002\n        </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>\u5404\u7269\u4ef6\u90fd\u88ab\u5206\u5272\u6210\u8cc7\u6599\u5340\u584a\u90e8\u5206\uff0c\u5206\u5225\u5132\u5b58\u65bc\u4e0d\u540c\u7684 OSD\u3002</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>\u904b\u7b97\u5404\u7269\u4ef6\u7684\u7de8\u78bc\u5340\u584a\u5e76\u5c07\u5b83\u5011\u5132\u5b58\u5230\u4e0d\u540c\u7684 OSD\u3002\n      \u7de8\u78bc\u5340\u584a\u7684\u6578\u91cf\u7b49\u540c\u65bc\u5728\u4e0d\u907a\u5931\u8cc7\u6599\u7684\u524d\u63d0\u4e0b\uff0c\u53ef\u505c\u6a5f\u7684 OSD \u6578\u91cf\u3002</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 \u5916\u639b\u7a0b\u5f0f\u662f\u6700\u4e00\u822c\u3001\u6700\u9748\u6d3b\u7684\u5916\u639b\u7a0b\u5f0f\uff0c\n          \u4e5f\u662f Ceph \u7cfe\u522a\u78bc\u6c60\u7684\u9810\u8a2d\u5916\u639b\u7a0b\u5f0f\u3002</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 \u65b9\u6cd5\u66f4\u9748\u6d3b\ufe30\u5b83\u8db3\u4ee5\u8a2d\u5b9a k\n          \u548c m\u3002Cauchy_good \u65b9\u6cd5\u66f4\u5feb\uff0c\u4f46\u60a8\u9700\u8981\u5c0f\u5fc3\u9078\u53d6\u5c01\u5305\u5927\u5c0f\u3002\n          \u6240\u6709 reed_sol_r6_op\u3001liberation\u3001blaum_roth\u3001liber8tion \u90fd\n          \u7b49\u540c\u65bc RAID6\uff0c\u5b83\u5011\u53ea\u80fd\u8a2d\u5b9a\u70ba m=2\u3002</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>\u5c07\u4ee5\u4f4d\u5143\u7d44\u5927\u5c0f\u7684\u5c01\u5305\u70ba\u55ae\u4f4d\u9032\u884c\u7de8\u78bc\u3002\n          \u9078\u53d6\u5408\u9069\u7684\u5c01\u5305\u5927\u5c0f\u5f88\u96e3\u3002\n          Jerasure \u6587\u4ef6\u5305\u542b\u6709\u95dc\u6b64\u4e3b\u984c\u7684\u8a73\u7d30\u8cc7\u8a0a\u3002</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>\u4f7f\u7528 jerasure \u5916\u639b\u7a0b\u5f0f\u6642\uff0c\u82e5\u7cfe\u522a\u78bc\u7269\u4ef6\u5132\u5b58\u65bc\n          \u591a\u500b OSD \u4e0a\uff0c\u5247\u5fa9\u539f\u4e00\u500b\u907a\u5931\u7684 OSD \u6642\u9700\u8981\u8b80\u53d6\u6240\u6709\u5176\u4ed6 OSD\u3002\n          \u4f8b\u5982\uff0c\u82e5 jerasure \u8a2d\u5b9a\u70ba k=8 \u4e14 m=4\uff0c\u5247\u907a\u5931\u4e00\u500b OSD \u5f8c\u9700\u8b80\u53d6\n          \u5176\u4ed6\u5341\u4e00\u500b OSD \u624d\u80fd\u4fee\u5fa9\u3002\n\n          lrc \u7cfe\u522a\u78bc\u5916\u639b\u7a0b\u5f0f\u6703\u5efa\u7acb\u672c\u5730\u540c\u4f4d\u5340\u584a\uff0c\u56e0\u6b64\u53ea\u9700\u8f03\u5c11\u7684 OSD \u5373\n          \u53ef\u5fa9\u539f\u3002\u4f8b\u5982\uff0c\u82e5 lrc \u8a2d\u5b9a\u70ba k=8\u3001m=4 \u4e14 l=4\uff0c\u5b83\u5c07\u70ba\u6bcf\u56db\u500b OSD\n          \u5efa\u7acb\u984d\u5916\u7684\u540c\u4f4d\u5340\u584a\u3002\u9019\u6a23\uff0c\u7576\u4e00\u500b OSD \u907a\u5931\u6642\uff0c\u5b83\u53ea\u9700\u56db\u500b OSD\n          \u5373\u53ef\u5fa9\u539f\uff0c\u800c\u4e0d\u9700\u8981\u5341\u4e00\u500b\u3002</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>\u5c07\u7de8\u78bc\u5340\u584a\u548c\u8cc7\u6599\u5340\u584a\u5206\u7d44\u70ba\u5927\u5c0f\u70ba locality \u7684\u96c6\u5408\u3002\u4f8b\u5982\uff0c\n          k=4 \u4e14 m=2 \u6642\uff0c\u82e5 locality=3\uff0c\u5247\u6703\u5efa\u7acb 2 \u500b\u5927\u5c0f\u70ba 3 \u7684\u7d44\u3002\u9019\u6a23\uff0c\u5404\u7d44\u90fd\u80fd\n          \u81ea\u884c\u5fa9\u539f\uff0c\u800c\u7121\u9700\u5f9e\u53e6\u4e00\u7d44\u8b80\u53d6\u5340\u584a\u3002</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>\u7531 l \u5b9a\u7fa9\u7684\u5340\u584a\u96c6\u5c07\u6309\u54ea\u7a2e CRUSH \u6876\u985e\u578b\u5132\u5b58\u3002\n          \u4f8b\u5982\uff0c\u82e5\u8a2d\u5b9a\u70ba\u6a5f\u67b6\uff0c\u5247\u5404\u7d44 l \u5340\u584a\u5c07\u6703\u88ab\u653e\u7f6e\u5230\u4e0d\u540c\u7684\n          \u6a5f\u67b6\u4e2d\u3002\u8a72\u503c\u7528\u65bc\u5efa\u7acb\u985e\u4f3c step choose rack \u7684 CRUSH\n          \u898f\u5247\u6b65\u9a5f\u3002\u82e5\u672a\u8a2d\u5b9a\uff0c\u5247\u4e0d\u6703\u9032\u884c\u6b64\u985e\u5206\u7d44\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5c01\u5305\u4e86 ISA \u7a0b\u5f0f\u5eab\u3002\u5b83\u53ea\u80fd\u5728 Intel \u8655\u7406\u5668\u4e0a\u57f7\u884c\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5305\u542b\u5169\u7a2e Reed Solomon \u683c\u5f0f\u3002\n          \u82e5\u8a2d\u5b9a\u70ba reed_sol_van\uff0c\u5247\u70ba Vandermonde\u3002\u82e5\u8a2d\u5b9a\u70ba cauchy\uff0c\u5247\u70ba Cauchy\u3002</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 \u5916\u639b\u7a0b\u5f0f\u5c01\u5305\u4e86\u591a\u500b SHEC \u7a0b\u5f0f\u5eab\u3002\n          \u8207 Reed Solomon \u4ee3\u78bc\u76f8\u6bd4\uff0c\u5b83\u80fd\u66f4\u6709\u6548\u5730\u5fa9\u539f\u8cc7\u6599\u3002</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>\u540c\u4f4d\u5340\u584a\u7684\u6578\u91cf\uff0c\u5b83\u5011\u5728\u5404\u81ea\u7684\u8a08\u7b97\u7bc4\u570d\u5167\u5305\u542b\u4e86\n          \u5404\u8cc7\u6599\u5340\u584a\u3002\u8a72\u6578\u503c\u88ab\u7528\u505a\u6301\u4e45\u6027\u4f30\u503c\u3002\u4f8b\u5982\uff0c\u82e5 c=2\uff0c\n          \u5247\u5728\u4e0d\u907a\u5931\u8cc7\u6599\u7684\u524d\u63d0\u4e0b\uff0c\u53ef\u6709 2 \u500b OSD \u505c\u6a5f\u3002</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 \u898f\u5247\u7684\u7b2c\u4e00\u6b65\u6240\u6307\u5411\u7684 CRUSH \u6876\u540d\u7a31\u3002\n      \u4f8b\u5982 step take default\u3002</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>\u78ba\u5b9a\u5169\u500b\u5340\u584a\u4e0d\u6703\u5b58\u5728\u65bc\u540c\u4e00\u6545\u969c\u7db2\u57df\u7684\u6876\u4e2d\u3002\n      \u4f8b\u5982\uff0c\u82e5\u6545\u969c\u7db2\u57df\u70ba\u4e3b\u6a5f\uff0c\u5247\u4e0d\u6703\u6709\u5169\u500b\u5340\u584a\u5132\u5b58\u65bc\u540c\u4e00\u4e3b\u6a5f\u4e2d\u3002\n      \u8a72\u503c\u7528\u65bc\u5efa\u7acb\u985e\u4f3c step chooseleaf host \u7684 CRUSH \u898f\u5247\u6b65\u9a5f\u3002</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>\u4f7f\u7528 CRUSH \u5730\u5716\u4e2d\u7684 crush \u88dd\u7f6e\u985e\u5225\u540d\u7a31\uff0c\n      \u5c07\u653e\u7f6e\u9650\u5236\u65bc\u7279\u5b9a\u985e\u5225\u7684\u88dd\u7f6e (\u4f8b\u5982 ssd \u6216 hdd)\u3002</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>\u8a2d\u5b9a\u7cfe\u522a\u78bc\u5916\u639b\u7a0b\u5f0f\u6240\u5728\u76ee\u9304\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u5141\u8a31\u6240\u6709\u64cd\u4f5c</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>\u50c5\u5141\u8a31\u4e0d\u4fee\u6539\u4f3a\u670d\u5668\u7684\u64cd\u4f5c</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>\u4e0d\u5141\u8a31\u8b80\u53d6\u6216\u5beb\u5165\u64cd\u4f5c\uff0c\u4f46\u662f\u5141\u8a31\u4efb\u4f55\u5176\u4ed6\u64cd\u4f5c</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>\u4e0d\u5141\u8a31\u8b80\u53d6\u3001\u5beb\u5165\u6216\u4efb\u4f55\u53ef\u80fd\u4fee\u6539\u6a94\u6848\u5c6c\u6027\u6216\u76ee\u9304\u5167\u5bb9\u7684\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u5b8c\u5168\u7981\u6b62\u5b58\u53d6</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u9078\u53d6\u512a\u5148\u7a0b\u5ea6 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u904e\u53bb 5 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u904e\u53bb 15 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u904e\u53bb 30 \u5206\u9418</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u904e\u53bb 1 \u5c0f\u6642 (\u9810\u8a2d\u503c)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u904e\u53bb 3 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u904e\u53bb 6 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u904e\u53bb 12 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u904e\u53bb 24 \u5c0f\u6642</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u5929</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u4eca\u5929\u5230\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u524d\u5929</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u904e\u53bb 2 \u5929</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u4e0a\u9031\u7684\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u4e0a\u9031</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u672c\u9031</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u672c\u9031\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u904e\u53bb 7 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u4e0a\u500b\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u672c\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u672c\u6708\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u904e\u53bb 30 \u5929</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u904e\u53bb 90 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u904e\u53bb 6 \u500b\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u904e\u53bb 1 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u53bb\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u76ee\u524d\u70ba\u6b62</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u904e\u53bb 2 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u904e\u53bb 5 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u8cc7\u8a0a</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u672a\u9078\u53d6\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u53d6\u6d88\u9078\u53d6\u9805\u76ee\u4ee5\u518d\u6b21\u9078\u53d6</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u5df2\u9054\u5230\u9078\u53d6\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u904e\u6ffe\u6a19\u8a18</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u65b0\u589e\u5fbd\u7ae0</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u6c92\u6709\u53ef\u7528\u7684\u9805\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u662f</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u5426</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u670d\u52d9\u54c1\u8cea</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8b80\u53d6 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5167\u8b80\u53d6\u7684\u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8b80\u53d6 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u8b80\u53d6\u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u5beb\u5165 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5167\u5beb\u5165\u7684\u4f4d\u5143\u7d44\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u5beb\u5165 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5beb\u5165\u64cd\u4f5c\u6b21\u6578\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u6307\u5b9a\u7684 IO \u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u6307\u5b9a\u7684 IO \u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8b80\u53d6 BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u6307\u5b9a\u7684\u8b80\u53d6\u7684\u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8b80\u53d6 IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u6307\u5b9a\u7684\u8b80\u53d6\u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u5beb\u5165 BPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u6307\u5b9a\u7684\u5beb\u5165\u7684\u4f4d\u5143\u7d44\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u5beb\u5165 IOPS \u9ad8\u8f09</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u6307\u5b9a\u7684\u5beb\u5165\u64cd\u4f5c\u6b21\u6578\u9ad8\u8f09\u4e0a\u9650\u3002</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>\u7121\u6cd5\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>\u6b63\u5728\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u5df2\u57f7\u884c</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u672a\u77e5\u4efb\u52d9</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u6b63\u5728\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u5efa\u7acb</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u6b63\u5728\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u5df2\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u6b63\u5728\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u522a\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u5df2\u522a\u9664</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\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\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 \u5feb\u7167\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u7684\u93e1\u50cf\u6a21\u5f0f\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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u7684\u93e1\u50cf\u5c0d\u7b49\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> \u4f7f\u7528\u3002\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{name}}"/> \u4f7f\u7528\u3002\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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> \u4f7f\u7528\u3002\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}}"/> \u5305\u542b\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u6b63\u5728\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u5df2\u514b\u9686</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>\u5fc5\u9808\u4fdd\u8b77\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> \u7684\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u6b63\u5728\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u5df2\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u6b63\u5728\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u58d3\u5e73</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u5df2\u58d3\u5e73</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>\u540d\u7a31\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> \u4f7f\u7528\u3002\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>\u7121\u6cd5\u4fdd\u8b77\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u70ba\u5176\u5305\u542b\u5b50\u5f71\u50cf\u3002\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>\u7121\u6cd5\u522a\u9664\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u70ba\u5176\u8655\u65bc\u4fdd\u8b77\u72c0\u614b\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u6b63\u5728\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u5df2\u5fa9\u539f</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u6b63\u5728\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u5df2\u79fb\u52d5</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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u5230\u5783\u573e\u6876\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u627e\u4e0d\u5230\u5f71\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u6b63\u5728\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u9084\u539f</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5df2\u9084\u539f</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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d(\u5230\u300c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u300d)\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>\u5f71\u50cf\u540d\u7a31\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u5df2\u5728\u4f7f\u7528\u4e2d\u3002\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>\u5f71\u50cf\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6b63\u5728\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u6240\u6709\u6c60</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>\u5f71\u50cf (\u5f9e\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>\u7121\u6cd5\u505c\u7528\u93e1\u50cf\uff0c\u56e0\u70ba\u5176\u5305\u542b\u5c0d\u7b49\u3002</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>\u6c60\u300c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u300d\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>\u7cfe\u522a\u78bc\u8a2d\u5b9a\u6a94\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\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>\u76ee\u6a19\u300c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u300d\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>\n'},Dzi0:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},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:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".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:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"\u0434\u0430\u043d",dd:e.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:e.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",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});var a=function(){function t(){}return t.prototype.transform=function(t){return"[INF]"===t?"info":"[WRN]"===t?"warn":"[ERR]"===t?"err":""},t}()},EEJc:function(t,e,n){"use strict";var a=n("CcnG"),r=n("ajRT");n.d(e,"b",function(){return i}),n.d(e,"c",function(){return o}),n.d(e,"a",function(){return u});var i=a["\u0275crt"]({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 o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275eld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-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["\u0275eld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),a["\u0275ncd"](null,1)],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-modal",[],null,null,null,o,i)),a["\u0275did"](1,49152,null,0,r.a,[],null,null)],null,null)}var u=a["\u0275ccf"]("cd-modal",r.a,s,{modalRef:"modalRef"},{hide:"hide"},[".modal-title",".modal-content"])},EOgW:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(t){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===t},meridiem:function(t,e,n){return t<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}()},ES0t:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("CcnG"),r=n("OZfm"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:0,styles:[".bs-popover-top[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-popover-bottom[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      left: 50%;\n      transform: translateX(-50%);\n    }\n    .bs-popover-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-popover-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      top: 50%;\n      transform: translateY(-50%);\n    }"],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"h3",[["class","popover-title popover-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.component.title)})}function u(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","popover-arrow arrow"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](3,0,null,null,1,"div",[["class","popover-content popover-body"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,2,0,e.component.title)},null)}function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"popover-container",[["role","tooltip"],["style","display:block;"]],[[8,"className",0],[2,"show",null]],null,null,u,o)),a["\u0275did"](1,49152,null,0,r.b,[r.a],null,null)],null,function(t,e){t(e,0,0,"popover in popover-"+a["\u0275nov"](e,1).placement+" bs-popover-"+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).containerClass,!a["\u0275nov"](e,1).isBs3)})}var c=a["\u0275ccf"]("popover-container",r.b,l,{placement:"placement",title:"title"},{},["*"])},EgGo:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("Ip0R"),r=n("sne2"),i=function(){function t(t){this.base=t}return t.concatURLSegments=function(t){return t.reduce(a.Location.joinWithSlash)},t.buildURL=function(e){for(var n=[],a=1;a<arguments.length;a++)n[a-1]=arguments[a];return t.concatURLSegments((e?["/"]:[]).concat(n))},t.prototype.getURL=function(e,n){void 0===n&&(n=!0);for(var a=[],r=2;r<arguments.length;r++)a[r-2]=arguments[r];return t.buildURL.apply(t,[n,this.base,e].concat(a))},t.prototype.getCreate=function(t){return void 0===t&&(t=!0),this.getURL(r.e.CREATE,t)},t.prototype.getCreateFrom=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.CREATE,e,t)},t.prototype.getDelete=function(t){return void 0===t&&(t=!0),this.getURL(r.e.DELETE,t)},t.prototype.getEdit=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.EDIT,e,t)},t.prototype.getUpdate=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.UPDATE,e,t)},t.prototype.getAdd=function(t){return void 0===t&&(t=!0),this.getURL(r.e.ADD,t)},t.prototype.getRemove=function(t){return void 0===t&&(t=!0),this.getURL(r.e.REMOVE,t)},t.prototype.getRecreate=function(t,e){return void 0===e&&(e=!0),this.getURL(r.e.RECREATE,e,t)},t}()},"En8+":function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}n.d(e,"a",function(){return r});var r=a()},"F/XL":function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("nkY7"),r=n("IUTb"),i=n("G5J1"),o=n("PU8L");function s(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[t.length-1];switch(Object(a.a)(n)?t.pop():n=void 0,t.length){case 0:return Object(i.b)(n);case 1:return n?Object(r.a)(t,n):Object(o.a)(t[0]);default:return Object(r.a)(t,n)}}},F8xH:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG"),i=n("Ip0R"),o=n("Nia1"),s=n("mn2k"),u=n("bpWZ");e.NgxDatatableModule=function(){return a([r.NgModule({imports:[i.CommonModule],providers:[u.ScrollbarHelper,u.DimensionsHelper,u.ColumnChangesService],declarations:[o.DataTableFooterTemplateDirective,s.VisibilityDirective,s.DraggableDirective,s.ResizeableDirective,s.OrderableDirective,s.LongPressDirective,o.ScrollerComponent,o.DatatableComponent,o.DataTableColumnDirective,o.DataTableHeaderComponent,o.DataTableHeaderCellComponent,o.DataTableBodyComponent,o.DataTableFooterComponent,o.DataTablePagerComponent,o.ProgressBarComponent,o.DataTableBodyRowComponent,o.DataTableRowWrapperComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableBodyCellComponent,o.DataTableSelectionComponent,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DatatableFooterDirective,o.DatatableGroupHeaderTemplateDirective,o.DataTableSummaryRowComponent],exports:[o.DatatableComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableColumnDirective,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DataTableFooterTemplateDirective,o.DatatableFooterDirective,o.DataTablePagerComponent,o.DatatableGroupHeaderTemplateDirective]})],function(){})}()},FBEI:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n("O5R2"),n("lZOh"),n("tKjC"),e.noop=function(){}},FFOo:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("2Bdj"),i=n("6ahw"),o=n("pugT"),s=n("L/V9"),u=n("iLxQ"),l=n("DKTb"),c=function(t){function e(n,a,r){var o=t.call(this)||this;switch(o.syncErrorValue=null,o.syncErrorThrown=!1,o.syncErrorThrowable=!1,o.isStopped=!1,arguments.length){case 0:o.destination=i.a;break;case 1:if(!n){o.destination=i.a;break}if("object"==typeof n){n instanceof e?(o.syncErrorThrowable=n.syncErrorThrowable,o.destination=n,n.add(o)):(o.syncErrorThrowable=!0,o.destination=new d(o,n));break}default:o.syncErrorThrowable=!0,o.destination=new d(o,n,a,r)}return o}return a.__extends(e,t),e.prototype[s.a]=function(){return this},e.create=function(t,n,a){var r=new e(t,n,a);return r.syncErrorThrowable=!1,r},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this))},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},e.prototype._unsubscribeAndRecycle=function(){var t=this._parent,e=this._parents;return this._parent=null,this._parents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parent=t,this._parents=e,this},e}(o.a),d=function(t){function e(e,n,a,o){var s,u=t.call(this)||this;u._parentSubscriber=e;var l=u;return Object(r.a)(n)?s=n:n&&(s=n.next,a=n.error,o=n.complete,n!==i.a&&(l=Object.create(n),Object(r.a)(l.unsubscribe)&&u.add(l.unsubscribe.bind(l)),l.unsubscribe=u.unsubscribe.bind(u))),u._context=l,u._next=s,u._error=a,u._complete=o,u}return a.__extends(e,t),e.prototype.next=function(t){if(!this.isStopped&&this._next){var e=this._parentSubscriber;u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}},e.prototype.error=function(t){if(!this.isStopped){var e=this._parentSubscriber,n=u.a.useDeprecatedSynchronousErrorHandling;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(l.a)(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;Object(l.a)(t)}}},e.prototype.complete=function(){var t=this;if(!this.isStopped){var e=this._parentSubscriber;if(this._complete){var n=function(){return t._complete.call(t._context)};u.a.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?(this.__tryOrSetError(e,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},e.prototype.__tryOrUnsub=function(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.a.useDeprecatedSynchronousErrorHandling)throw n;Object(l.a)(n)}},e.prototype.__tryOrSetError=function(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(l.a)(a),!0)}return!1},e.prototype._unsubscribe=function(){var t=this._parentSubscriber;this._context=null,this._parentSubscriber=null,t.unsubscribe()},e}(c)},FLvf:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("tFKq")),a(n("0MID"))},FMPj:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("5tze");e.optionalGetterForProp=function(t){return t&&function(e){return a.getterForProp(t)(e,t)}},e.groupRowsByParents=function(t,e,n){if(e&&n){var a={},i=t.length,o=null;a[0]=new r;for(var s=t.reduce(function(t,e){var a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]),u=0;u<i;u++)a[n(t[u])]=new r(t[u]);for(u=0;u<i;u++){var l=0,c=e((o=a[n(t[u])]).row);c&&s.indexOf(c)>-1&&(l=c),o.parent=a[l],o.row.level=o.parent.row.level+1,o.parent.children.push(o)}var d=[];return a[0].flatten(function(){d=d.concat([this.row])},!0),d}return t};var r=function(){function t(t){void 0===t&&(t=null),t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}return t.prototype.flatten=function(t,e){if("expanded"===this.row.treeStatus)for(var n=0,a=this.children.length;n<a;n++){var r=this.children[n];t.apply(r,Array.prototype.slice.call(arguments,2)),e&&r.flatten.apply(r,arguments)}},t}()},"FO+L":function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");n("ZYjt"),e.ScrollbarHelper=function(){function t(t){this.document=t,this.width=this.getWidth()}return t.prototype.getWidth=function(){var t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);var e=t.offsetWidth;t.style.overflow="scroll";var n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);var a=n.offsetWidth;return t.parentNode.removeChild(t),e-a},a([r.Injectable()],t)}()},FSuO:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("LvDl"),i=n("x38r"),o=(n("a0VL"),n("uIqm"),function(){function t(t){this.datePipe=t,this.autoReload=5e3,this.renderObjects=!1,this.appendParentKey=!0,this.hideEmpty=!1,this.columns=[],this.fetchData=new a.EventEmitter}return t.prototype.ngOnInit=function(){var t=this;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(function(){t.fetchData.emit()}),this.useData()},t.prototype.ngOnChanges=function(){this.useData()},t.prototype.useData=function(){this.data&&(this.tableData=this._makePairs(this.data))},t.prototype._makePairs=function(t){var e=this,n=[];if(t){if(r.isArray(t))n=this._makePairsFromArray(t);else{if(!r.isObject(t))throw new Error("Wrong data format");n=this._makePairsFromObject(t)}return n=n.map(function(t){return e._convertValue(t)}).filter(function(t){return t}),r.sortBy(this.renderObjects?this.insertFlattenObjects(n):n,"key")}},t.prototype._makePairsFromArray=function(t){var e=this,n=[],a=t[0];if(r.isArray(a)){if(2!==a.length)throw new Error("Wrong array format: [string, any][]");n=t.map(function(t){return{key:t[0],value:t[1]}})}else r.isObject(a)&&(n=r.has(a,"key")&&r.has(a,"value")?t.slice():t.reduce(function(t,n){return t.concat(e._makePairsFromObject(n))},n));return n},t.prototype._makePairsFromObject=function(t){return Object.keys(t).map(function(e){return{key:e,value:t[e]}})},t.prototype.insertFlattenObjects=function(t){var e=this;return r.flattenDeep(t.map(function(t){var n=t.value,a=r.isObject(n);return!a||r.isEmpty(n)?(a&&(t.value=""),t):e.splitItemIntoItems(t)}))},t.prototype.splitItemIntoItems=function(t){var e=this;return this._makePairs(t.value).map(function(n){return e.appendParentKey&&(n.key=t.key+" "+n.key),n})},t.prototype._convertValue=function(t){r.isArray(t.value)&&(t.value=t.value.map(function(t){return r.isObject(t)?JSON.stringify(t):t}).join(", "));var e=r.isEmpty(t.value)&&!r.isNumber(t.value);if(!(this.hideEmpty&&e||r.isObject(t.value)&&!this.renderObjects))return e&&!this.hideEmpty&&""!==t.value&&(t.value=""),!e&&r.isString(t.value)&&(t.value=this.convertString(t.value)),t},t.prototype.convertString=function(t){return this.isDate(t)&&this.datePipe.transform(t)||t},t.prototype.isDate=function(t){var e="\\d{2}[ -:.TZ]";return t.match(new RegExp("^\\d{4}[ -:.TZ]"+e+e+e+e+e+"\\d*Z?$"))},t}())},FWf1:function(t,e,n){var a=n("mrSG").__extends,r=n("pshJ"),i=n("GiSu"),o=n("zB/H"),s=n("p//D"),u=n("n3uD"),l=n("MkmW"),c=function(t){function e(n,a,r){var o=t.call(this)||this;switch(o.syncErrorValue=null,o.syncErrorThrown=!1,o.syncErrorThrowable=!1,o.isStopped=!1,arguments.length){case 0:o.destination=i.empty;break;case 1:if(!n){o.destination=i.empty;break}if("object"==typeof n){n instanceof e?(o.syncErrorThrowable=n.syncErrorThrowable,o.destination=n,n.add(o)):(o.syncErrorThrowable=!0,o.destination=new d(o,n));break}default:o.syncErrorThrowable=!0,o.destination=new d(o,n,a,r)}return o}return a(e,t),e.prototype[s.rxSubscriber]=function(){return this},e.create=function(t,n,a){var r=new e(t,n,a);return r.syncErrorThrowable=!1,r},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this))},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},e.prototype._unsubscribeAndRecycle=function(){var t=this._parent,e=this._parents;return this._parent=null,this._parents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parent=t,this._parents=e,this},e}(o.Subscription);e.Subscriber=c;var d=function(t){function e(e,n,a,o){var s,u=t.call(this)||this;u._parentSubscriber=e;var l=u;return r.isFunction(n)?s=n:n&&(s=n.next,a=n.error,o=n.complete,n!==i.empty&&(l=Object.create(n),r.isFunction(l.unsubscribe)&&u.add(l.unsubscribe.bind(l)),l.unsubscribe=u.unsubscribe.bind(u))),u._context=l,u._next=s,u._error=a,u._complete=o,u}return a(e,t),e.prototype.next=function(t){if(!this.isStopped&&this._next){var e=this._parentSubscriber;u.config.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?this.__tryOrSetError(e,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}},e.prototype.error=function(t){if(!this.isStopped){var e=this._parentSubscriber,n=u.config.useDeprecatedSynchronousErrorHandling;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):l.hostReportError(t),this.unsubscribe();else{if(this.unsubscribe(),n)throw t;l.hostReportError(t)}}},e.prototype.complete=function(){var t=this;if(!this.isStopped){var e=this._parentSubscriber;if(this._complete){var n=function(){return t._complete.call(t._context)};u.config.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?(this.__tryOrSetError(e,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},e.prototype.__tryOrUnsub=function(t,e){try{t.call(this._context,e)}catch(n){if(this.unsubscribe(),u.config.useDeprecatedSynchronousErrorHandling)throw n;l.hostReportError(n)}},e.prototype.__tryOrSetError=function(t,e,n){if(!u.config.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{e.call(this._context,n)}catch(a){return u.config.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=a,t.syncErrorThrown=!0,!0):(l.hostReportError(a),!0)}return!1},e.prototype._unsubscribe=function(){var t=this._parentSubscriber;this._context=null,this._parentSubscriber=null,t.unsubscribe()},e}(c);e.SafeSubscriber=d},FYBg:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("JZ5S"),n("QG5k")),i=n("TCh0");e.NodeMenuComponent=function(){function t(t,e){this.renderer=t,this.nodeMenuService=e,this.menuItemSelected=new a.EventEmitter,this.availableMenuItems=[{name:"New tag",action:r.NodeMenuItemAction.NewTag,cssClass:"new-tag"},{name:"New folder",action:r.NodeMenuItemAction.NewFolder,cssClass:"new-folder"},{name:"Rename",action:r.NodeMenuItemAction.Rename,cssClass:"rename"},{name:"Remove",action:r.NodeMenuItemAction.Remove,cssClass:"remove"}],this.disposersForGlobalListeners=[]}return t.prototype.ngOnInit=function(){this.availableMenuItems=this.menuItems||this.availableMenuItems,this.disposersForGlobalListeners.push(this.renderer.listen("document","keyup",this.closeMenu.bind(this))),this.disposersForGlobalListeners.push(this.renderer.listen("document","mousedown",this.closeMenu.bind(this)))},t.prototype.ngOnDestroy=function(){this.disposersForGlobalListeners.forEach(function(t){return t()})},t.prototype.onMenuItemSelected=function(t,e){i.isLeftButtonClicked(t)&&(this.menuItemSelected.emit({nodeMenuItemAction:e.action,nodeMenuItemSelected:e.name}),this.nodeMenuService.fireMenuEvent(t.target,r.NodeMenuAction.Close))},t.prototype.closeMenu=function(t){var e=t instanceof MouseEvent,n=this.menuContainer.nativeElement!==t.target&&this.menuContainer.nativeElement.contains(t.target);(e&&!n||i.isEscapePressed(t))&&this.nodeMenuService.fireMenuEvent(t.target,r.NodeMenuAction.Close)},t.decorators=[{type:a.Component,args:[{selector:"node-menu",template:'\n    <div class="node-menu">\n      <ul class="node-menu-content" #menuContainer>\n        <li class="node-menu-item" *ngFor="let menuItem of availableMenuItems"\n          (click)="onMenuItemSelected($event, menuItem)">\n          <div class="node-menu-item-icon {{menuItem.cssClass}}"></div>\n          <span class="node-menu-item-value">{{menuItem.name}}</span>\n        </li>\n      </ul>\n    </div>\n  '}]}],t.propDecorators={menuItemSelected:[{type:a.Output}],menuItems:[{type:a.Input}],menuContainer:[{type:a.ViewChild,args:["menuContainer"]}]},t}()},Fgil:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(t){return this.formatter.format_number(t,1024,["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"])},t}()},Fjl2:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DatatableGroupHeaderTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-group-header-template]"})],function(t){this.template=t})}()},Fxb1:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var a=n("6blF"),r=n("+tJ4"),i=n("S5XQ"),o=n("u67D"),s=n("JcRv"),u=n("2ePl"),l=n("/WYv"),c=n("McSo"),d=n("En8+"),f=n("xTla"),p=function(t){if(t instanceof a.a)return function(e){return t._isScalar?(e.next(t.value),void e.complete()):t.subscribe(e)};if(t&&"function"==typeof t[f.a])return Object(s.a)(t);if(Object(u.a)(t))return Object(r.a)(t);if(Object(l.a)(t))return Object(i.a)(t);if(t&&"function"==typeof t[d.a])return Object(o.a)(t);var e=Object(c.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.")}},G0Q6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),t.exports=function(t){function e(t,e){return i.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,update:function(t){var n,a,r,o=this,s=o.getMeta(),u=s.dataset,l=s.data||[],c=o.chart.options,d=c.elements.line,f=o.getScaleForId(s.yAxisID),p=o.getDataset(),h=e(p,c);for(h&&(r=u.custom||{},void 0!==p.tension&&void 0===p.lineTension&&(p.lineTension=p.tension),u._scale=f,u._datasetIndex=o.index,u._children=l,u._model={spanGaps:p.spanGaps?p.spanGaps:c.spanGaps,tension:r.tension?r.tension:i.valueOrDefault(p.lineTension,d.tension),backgroundColor:r.backgroundColor?r.backgroundColor:p.backgroundColor||d.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:p.borderWidth||d.borderWidth,borderColor:r.borderColor?r.borderColor:p.borderColor||d.borderColor,borderCapStyle:r.borderCapStyle?r.borderCapStyle:p.borderCapStyle||d.borderCapStyle,borderDash:r.borderDash?r.borderDash:p.borderDash||d.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:p.borderDashOffset||d.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:p.borderJoinStyle||d.borderJoinStyle,fill:r.fill?r.fill:void 0!==p.fill?p.fill:d.fill,steppedLine:r.steppedLine?r.steppedLine:i.valueOrDefault(p.steppedLine,d.stepped),cubicInterpolationMode:r.cubicInterpolationMode?r.cubicInterpolationMode:i.valueOrDefault(p.cubicInterpolationMode,d.cubicInterpolationMode)},u.pivot()),n=0,a=l.length;n<a;++n)o.updateElement(l[n],n,t);for(h&&0!==u._model.tension&&o.updateBezierControlPoints(),n=0,a=l.length;n<a;++n)l[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,a=this.getDataset(),r=t.custom||{};return r.backgroundColor?n=r.backgroundColor:a.pointBackgroundColor?n=i.valueAtIndexOrDefault(a.pointBackgroundColor,e,n):a.backgroundColor&&(n=a.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,a=this.getDataset(),r=t.custom||{};return r.borderColor?n=r.borderColor:a.pointBorderColor?n=i.valueAtIndexOrDefault(a.pointBorderColor,e,n):a.borderColor&&(n=a.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,a=this.getDataset(),r=t.custom||{};return isNaN(r.borderWidth)?!isNaN(a.pointBorderWidth)||i.isArray(a.pointBorderWidth)?n=i.valueAtIndexOrDefault(a.pointBorderWidth,e,n):isNaN(a.borderWidth)||(n=a.borderWidth):n=r.borderWidth,n},getPointRotation:function(t,e){var n=this.chart.options.elements.point.rotation,a=this.getDataset(),r=t.custom||{};return isNaN(r.rotation)?isNaN(a.pointRotation)&&!i.isArray(a.pointRotation)||(n=i.valueAtIndexOrDefault(a.pointRotation,e,n)):n=r.rotation,n},updateElement:function(t,e,n){var a,r,o=this,s=o.getMeta(),u=t.custom||{},l=o.getDataset(),c=o.index,d=l.data[e],f=o.getScaleForId(s.yAxisID),p=o.getScaleForId(s.xAxisID),h=o.chart.options.elements.point;void 0!==l.radius&&void 0===l.pointRadius&&(l.pointRadius=l.radius),void 0!==l.hitRadius&&void 0===l.pointHitRadius&&(l.pointHitRadius=l.hitRadius),a=p.getPixelForValue("object"==typeof d?d:NaN,e,c),r=n?f.getBasePixel():o.calculatePointY(d,e,c),t._xScale=p,t._yScale=f,t._datasetIndex=c,t._index=e,t._model={x:a,y:r,skip:u.skip||isNaN(a)||isNaN(r),radius:u.radius||i.valueAtIndexOrDefault(l.pointRadius,e,h.radius),pointStyle:u.pointStyle||i.valueAtIndexOrDefault(l.pointStyle,e,h.pointStyle),rotation:o.getPointRotation(t,e),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:u.hitRadius||i.valueAtIndexOrDefault(l.pointHitRadius,e,h.hitRadius)}},calculatePointY:function(t,e,n){var a,r,i,o=this.chart,s=this.getMeta(),u=this.getScaleForId(s.yAxisID),l=0,c=0;if(u.options.stacked){for(a=0;a<n;a++)if(r=o.data.datasets[a],"line"===(i=o.getDatasetMeta(a)).type&&i.yAxisID===u.id&&o.isDatasetVisible(a)){var d=Number(u.getRightValue(r.data[e]));d<0?c+=d||0:l+=d||0}var f=Number(u.getRightValue(t));return u.getPixelForValue(f<0?c+f:l+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,a,r=this.getMeta(),o=this.chart.chartArea,s=r.data||[];function u(t,e,n){return Math.max(Math.min(t,n),e)}if(r.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),"monotone"===r.dataset._model.cubicInterpolationMode)i.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)n=s[t]._model,a=i.splineCurve(i.previousItem(s,t)._model,n,i.nextItem(s,t)._model,r.dataset._model.tension),n.controlPointPreviousX=a.previous.x,n.controlPointPreviousY=a.previous.y,n.controlPointNextX=a.next.x,n.controlPointNextY=a.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(n=s[t]._model).controlPointPreviousX=u(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=u(n.controlPointPreviousY,o.top,o.bottom),n.controlPointNextX=u(n.controlPointNextX,o.left,o.right),n.controlPointNextY=u(n.controlPointNextY,o.top,o.bottom)},draw:function(){var t,n=this.chart,a=this.getMeta(),r=a.data||[],o=n.chartArea,s=r.length,u=0;for(e(this.getDataset(),n.options)&&(i.canvas.clipArea(n.ctx,{left:o.left,right:o.right,top:o.top-(t=(a.dataset._model.borderWidth||0)/2),bottom:o.bottom+t}),a.dataset.draw(),i.canvas.unclipArea(n.ctx));u<s;++u)r[u].draw(o)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=t._model;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth,radius:r.radius},r.backgroundColor=a.hoverBackgroundColor||i.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,i.getHoverColor(r.backgroundColor)),r.borderColor=a.hoverBorderColor||i.valueAtIndexOrDefault(e.pointHoverBorderColor,n,i.getHoverColor(r.borderColor)),r.borderWidth=a.hoverBorderWidth||i.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,r.borderWidth),r.radius=a.hoverRadius||i.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius)}})}},G0Uy:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_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\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},G1I9:function(t,e,n){"use strict";n.d(e,"b",function(){return i}),n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("mtw6"),i=function(){return function(t,e,n,a,i){void 0===t&&(t=r.a.info),void 0===i&&(i="Ceph"),this.type=t,this.title=e,this.message=n,this.options=a,this.application=i,this.classes={Ceph:"ceph-icon",Prometheus:"prometheus-icon"},this.applicationClass=this.classes[this.application]}}(),o=function(t){function e(e){void 0===e&&(e=new i);var n=t.call(this,e.type,e.title,e.message,e.options,e.application)||this;return n.config=e,n.textClasses=["text-danger","text-info","text-success"],n.iconClasses=["fa-exclamation-triangle","fa-info","fa-check"],delete n.config,n.timestamp=(new Date).toJSON(),n.iconClass=n.iconClasses[n.type],n.textClass=n.textClasses[n.type],n}return a.__extends(e,t),e}(i)},G5J1:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var a=n("6blF"),r=new a.a(function(t){return t.complete()});function i(t){return t?function(t){return new a.a(function(e){return t.schedule(function(){return e.complete()})})}(t):r}},"G6Q+":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},GDJm:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RowHeightCache=function(){function t(){this.treeArray=[]}return t.prototype.clearCache=function(){this.treeArray=[]},t.prototype.initCache=function(t){var e=t.rows,n=t.rowHeight,a=t.detailRowHeight,r=t.externalVirtual,i=t.rowCount,o=t.rowIndexes,s=t.rowExpansions,u="function"==typeof n,l="function"==typeof a;if(!u&&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.");var c=r?i:e.length;this.treeArray=new Array(c);for(var d=0;d<c;++d)this.treeArray[d]=0;for(d=0;d<c;++d){var f=e[d],p=n;u&&(p=n(f));var h=s.get(f);f&&1===h&&(p+=l?a(f,o.get(f)):a),this.update(d,p)}},t.prototype.getRowIndex=function(t){return 0===t?0:this.calcRowIndex(t)},t.prototype.update=function(t,e){if(!this.treeArray.length)throw new Error("Update at index "+t+" with value "+e+" failed:\n        Row Height cache not initialized.");var n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1},t.prototype.query=function(t){if(!this.treeArray.length)throw new Error("query at index "+t+" failed: Fenwick tree array not initialized.");var e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e},t.prototype.queryBetween=function(t,e){return this.query(e)-this.query(t-1)},t.prototype.calcRowIndex=function(t){if(!this.treeArray.length)return 0;for(var e=-1,n=this.treeArray.length,a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){var r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1},t}()},GMZp:function(t,e,n){"use strict";e.isObject=function(t){return null!==t&&"object"==typeof t}},GgAd:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.ngOnChanges=function(){this.usedPercentage=Math.round(this.usedBytes/this.totalBytes*100),this.freePercentage=100-this.usedPercentage,this.freeBytes=this.totalBytes-this.usedBytes},t}()},Gi3i:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("FFOo"),i=n("T1DM");function o(t,e){return void 0===e&&(e=i.a),function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){this.dueTime=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.dueTime,this.scheduler))},t}(),u=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.dueTime=n,r.scheduler=a,r.debouncedSubscription=null,r.lastValue=null,r.hasValue=!1,r}return a.__extends(e,t),e.prototype._next=function(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(l,this.dueTime,this))},e.prototype._complete=function(){this.debouncedNext(),this.destination.complete()},e.prototype.debouncedNext=function(){if(this.clearDebounce(),this.hasValue){var t=this.lastValue;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}},e.prototype.clearDebounce=function(){var t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)},e}(r.a);function l(t){t.debouncedNext()}},GiSu:function(t,e,n){"use strict";var a=n("n3uD"),r=n("MkmW");e.empty={closed:!0,next:function(t){},error:function(t){if(a.config.useDeprecatedSynchronousErrorHandling)throw t;r.hostReportError(t)},complete:function(){}}},H8ED:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===n?e?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:e?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[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])}n("wd/R").defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:e,mm:e,h:e,hh:e,d:"\u0434\u0437\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u044b":t<12?"\u0440\u0430\u043d\u0456\u0446\u044b":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,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+"-\u044b":t+"-\u0456";case"D":return t+"-\u0433\u0430";default:return t}},week:{dow:1,doy:7}})}()},"HHO+":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=(n("58b6"),n("58b6")),i=n("xZld"),o=n("lJMN"),s=(n("JZ5S"),n("QG5k")),u=n("1PfE"),l=(n("Tff5"),n("TCh0")),c=n("kQXf");e.TreeInternalComponent=function(){function t(t,e,n){this.nodeMenuService=t,this.treeService=e,this.nodeElementRef=n,this.isSelected=!1,this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1,this.isReadOnly=!1,this.subscriptions=[]}return t.prototype.ngAfterViewInit=function(){this.tree.checked&&!this.tree.firstCheckedFired&&(this.tree.firstCheckedFired=!0,this.treeService.fireNodeChecked(this.tree))},t.prototype.ngOnInit=function(){var t=this,e=c.get(this.tree,"node.id","");e&&(this.controller=new o.TreeController(this),this.treeService.setController(e,this.controller)),this.settings=this.settings||new r.Ng2TreeSettings,this.isReadOnly=!c.get(this.settings,"enableCheckboxes",!0),this.tree.isRoot()&&!1===this.settings.rootIsVisible&&this.tree.disableCollapseOnInit(),this.subscriptions.push(this.nodeMenuService.hideMenuStream(this.nodeElementRef).subscribe(function(){t.isRightMenuVisible=!1,t.isLeftMenuVisible=!1})),this.subscriptions.push(this.treeService.unselectStream(this.tree).subscribe(function(){return t.isSelected=!1})),this.subscriptions.push(this.treeService.draggedStream(this.tree,this.nodeElementRef).subscribe(function(e){t.tree.hasSibling(e.captured.tree)?t.swapWithSibling(e.captured.tree,t.tree):t.tree.isBranch()?t.moveNodeToThisTreeAndRemoveFromPreviousOne(e,t.tree):t.moveNodeToParentTreeAndRemoveFromPreviousOne(e,t.tree)})),this.subscriptions.push(this.treeService.nodeChecked$.merge(this.treeService.nodeUnchecked$).filter(function(e){return t.eventContainsId(e)&&t.tree.hasChild(e.node)}).subscribe(function(e){return t.updateCheckboxState()}))},t.prototype.ngOnChanges=function(t){this.controller=new o.TreeController(this)},t.prototype.ngOnDestroy=function(){c.get(this.tree,"node.id","")&&this.treeService.deleteController(this.tree.node.id),this.subscriptions.forEach(function(t){return t&&t.unsubscribe()})},t.prototype.swapWithSibling=function(t,e){e.swapWithSibling(t),this.treeService.fireNodeMoved(t,t.parent)},t.prototype.moveNodeToThisTreeAndRemoveFromPreviousOne=function(t,e){this.treeService.fireNodeRemoved(t.captured.tree);var n=e.addChild(t.captured.tree);this.treeService.fireNodeMoved(n,t.captured.tree.parent)},t.prototype.moveNodeToParentTreeAndRemoveFromPreviousOne=function(t,e){this.treeService.fireNodeRemoved(t.captured.tree);var n=e.addSibling(t.captured.tree,e.positionInParent);this.treeService.fireNodeMoved(n,t.captured.tree.parent)},t.prototype.onNodeSelected=function(t){this.tree.selectionAllowed&&l.isLeftButtonClicked(t)&&(this.isSelected=!0,this.treeService.fireNodeSelected(this.tree))},t.prototype.onNodeUnselected=function(t){this.tree.selectionAllowed&&l.isLeftButtonClicked(t)&&(this.isSelected=!1,this.treeService.fireNodeUnselected(this.tree))},t.prototype.showRightMenu=function(t){this.tree.hasRightMenu()&&(l.isRightButtonClicked(t)&&(this.isRightMenuVisible=!this.isRightMenuVisible,this.nodeMenuService.hideMenuForAllNodesExcept(this.nodeElementRef)),t.preventDefault())},t.prototype.showLeftMenu=function(t){this.tree.hasLeftMenu()&&l.isLeftButtonClicked(t)&&(this.isLeftMenuVisible=!this.isLeftMenuVisible,this.nodeMenuService.hideMenuForAllNodesExcept(this.nodeElementRef),this.isLeftMenuVisible&&t.preventDefault())},t.prototype.onMenuItemSelected=function(t){switch(t.nodeMenuItemAction){case s.NodeMenuItemAction.NewTag:case s.NodeMenuItemAction.NewFolder:this.onNewSelected(t);break;case s.NodeMenuItemAction.Rename:this.onRenameSelected();break;case s.NodeMenuItemAction.Remove:this.onRemoveSelected();break;case s.NodeMenuItemAction.Custom:this.onCustomSelected(),this.treeService.fireMenuItemSelected(this.tree,t.nodeMenuItemSelected);break;default:throw new Error("Chosen menu item doesn't exist")}},t.prototype.onNewSelected=function(t){this.tree.createNode(t.nodeMenuItemAction===s.NodeMenuItemAction.NewFolder),this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onRenameSelected=function(){this.tree.markAsBeingRenamed(),this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onRemoveSelected=function(){this.treeService.deleteController(c.get(this.tree,"node.id","")),this.treeService.fireNodeRemoved(this.tree)},t.prototype.onCustomSelected=function(){this.isRightMenuVisible=!1,this.isLeftMenuVisible=!1},t.prototype.onSwitchFoldingType=function(){this.tree.switchFoldingType(),this.treeService.fireNodeSwitchFoldingType(this.tree)},t.prototype.applyNewValue=function(t){if((t.action===u.NodeEditableEventAction.Cancel||this.tree.isNew())&&i.Tree.isValueEmpty(t.value))return this.treeService.fireNodeRemoved(this.tree);if(this.tree.isNew()&&(this.tree.value=t.value,this.treeService.fireNodeCreated(this.tree)),this.tree.isBeingRenamed()){var e=this.tree.value;this.tree.value=t.value,this.treeService.fireNodeRenamed(e,this.tree)}this.tree.markAsModified()},t.prototype.shouldShowInputForTreeValue=function(){return this.tree.isNew()||this.tree.isBeingRenamed()},t.prototype.isRootHidden=function(){return this.tree.isRoot()&&!this.settings.rootIsVisible},t.prototype.hasCustomMenu=function(){return this.tree.hasCustomMenu()},t.prototype.switchNodeCheckStatus=function(){this.tree.checked?this.onNodeUnchecked():this.onNodeChecked()},t.prototype.onNodeChecked=function(){this.checkboxElementRef&&(this.checkboxElementRef.nativeElement.indeterminate=!1,this.treeService.fireNodeChecked(this.tree),this.executeOnChildController(function(t){return t.check()}),this.tree.checked=!0)},t.prototype.onNodeUnchecked=function(){this.checkboxElementRef&&(this.checkboxElementRef.nativeElement.indeterminate=!1,this.treeService.fireNodeUnchecked(this.tree),this.executeOnChildController(function(t){return t.uncheck()}),this.tree.checked=!1)},t.prototype.executeOnChildController=function(t){var e=this;this.tree.hasLoadedChildern()&&this.tree.children.forEach(function(n){var a=e.treeService.getController(n.id);c.isNil(a)||t(a)})},t.prototype.updateCheckboxState=function(){var t=this;setTimeout(function(){var e=t.tree.checkedChildrenAmount();0===e?(t.checkboxElementRef.nativeElement.indeterminate=!1,t.tree.checked=!1,t.treeService.fireNodeUnchecked(t.tree)):e===t.tree.loadedChildrenAmount()?(t.checkboxElementRef.nativeElement.indeterminate=!1,t.tree.checked=!0,t.treeService.fireNodeChecked(t.tree)):(t.tree.checked=!1,t.checkboxElementRef.nativeElement.indeterminate=!0,t.treeService.fireNodeIndetermined(t.tree))})},t.prototype.eventContainsId=function(t){return!!t.node.id||(console.warn('"Node with checkbox" feature requires a unique id assigned to every node, please consider to add it.'),!1)},t.decorators=[{type:a.Component,args:[{selector:"tree-internal",template:'\n  <ul class="tree" *ngIf="tree" [ngClass]="{rootless: isRootHidden()}">\n    <li>\n      <div class="value-container"\n        [ngClass]="{rootless: isRootHidden()}"\n        [class.selected]="isSelected"\n        (contextmenu)="showRightMenu($event)"\n        [nodeDraggable]="nodeElementRef"\n        [tree]="tree">\n\n        <div class="folding" (click)="onSwitchFoldingType()" [ngClass]="tree.foldingCssClass"></div>\n\n        <div class="node-checkbox" *ngIf="settings.showCheckboxes">\n        <input checkbox  type="checkbox" [disabled]="isReadOnly" [checked]="this.tree.checked" (change)="switchNodeCheckStatus()" #checkbox />\n         </div>\n\n        <div class="node-value"\n          *ngIf="!shouldShowInputForTreeValue()"\n          [class.node-selected]="isSelected"\n          (click)="onNodeSelected($event)">\n            <div *ngIf="tree.nodeTemplate" class="node-template" [innerHTML]="tree.nodeTemplate | safeHtml"></div>\n            <span *ngIf="!template" class="node-name" [innerHTML]="tree.value | safeHtml"></span>\n            <span class="loading-children" *ngIf="tree.childrenAreBeingLoaded()"></span>\n            <ng-template [ngTemplateOutlet]="template" [ngTemplateOutletContext]="{ $implicit: tree.node }"></ng-template>\n        </div>\n\n        <input type="text" class="node-value"\n           *ngIf="shouldShowInputForTreeValue()"\n           [nodeEditable]="tree.value"\n           (valueChanged)="applyNewValue($event)"/>\n\n        <div class="node-left-menu" *ngIf="tree.hasLeftMenu()" (click)="showLeftMenu($event)" [innerHTML]="tree.leftMenuTemplate">\n        </div>\n        <node-menu *ngIf="tree.hasLeftMenu() && isLeftMenuVisible && !hasCustomMenu()"\n          (menuItemSelected)="onMenuItemSelected($event)">\n        </node-menu>\n      </div>\n\n      <node-menu *ngIf="isRightMenuVisible && !hasCustomMenu()"\n           (menuItemSelected)="onMenuItemSelected($event)">\n      </node-menu>\n\n      <node-menu *ngIf="hasCustomMenu() && (isRightMenuVisible || isLeftMenuVisible)"\n           [menuItems]="tree.menuItems"\n           (menuItemSelected)="onMenuItemSelected($event)">\n      </node-menu>\n\n      <div *ngIf="tree.keepNodesInDOM()" [ngStyle]="{\'display\': tree.isNodeExpanded() ? \'block\' : \'none\'}">\n        <tree-internal *ngFor="let child of tree.childrenAsync | async" [tree]="child" [template]="template" [settings]="settings"></tree-internal>\n      </div>\n      <ng-template [ngIf]="tree.isNodeExpanded() && !tree.keepNodesInDOM()">\n        <tree-internal *ngFor="let child of tree.childrenAsync | async" [tree]="child" [template]="template" [settings]="settings"></tree-internal>\n      </ng-template>\n    </li>\n  </ul>\n  '}]}],t.propDecorators={tree:[{type:a.Input}],settings:[{type:a.Input}],template:[{type:a.Input}],checkboxElementRef:[{type:a.ViewChild,args:["checkbox"]}]},t}()},HJBe:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t){return void 0===t&&(t=null),function(e){return e.lift(new o(t))}}var o=function(){function t(t){this.defaultValue=t}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.defaultValue))},t}(),s=function(t){function e(e,n){var a=t.call(this,e)||this;return a.defaultValue=n,a.isEmpty=!0,a}return a.__extends(e,t),e.prototype._next=function(t){this.isEmpty=!1,this.destination.next(t)},e.prototype._complete=function(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()},e}(r.a)},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:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},r=function(t){return function(e,r,i,o){var s=n(e),u=a[t][n(e)];return 2===s&&(u=u[r?0:1]),u.replace(/%d/i,e)}},i=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar-ly",{months:i,monthsShort:i,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %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(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},HV4d:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.id=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}},HZF8:function(t,e,n){"use strict";var a=n("zfKp");e.isInteropObservable=function(t){return t&&"function"==typeof t[a.observable]}},Hfs6:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["fr",[["AM","PM"],n,n],n,[["D","L","M","M","J","V","S"],["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],["di","lu","ma","me","je","ve","sa"]],n,[["J","F","M","A","M","J","J","A","S","O","N","D"],["janv.","f\xe9vr.","mars","avr.","mai","juin","juil.","ao\xfbt","sept.","oct.","nov.","d\xe9c."],["janvier","f\xe9vrier","mars","avril","mai","juin","juillet","ao\xfbt","septembre","octobre","novembre","d\xe9cembre"]],n,[["av. J.-C.","ap. J.-C."],n,["avant J\xe9sus-Christ","apr\xe8s J\xe9sus-Christ"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}","{1} '\xe0' {0}",n,n],[",","\xa0",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"\u20ac","euro",{ARS:["$AR","$"],AUD:["$AU","$"],BEF:["FB"],BMD:["$BM","$"],BND:["$BN","$"],BSD:["$BS","$"],BZD:["$BZ","$"],CAD:["$CA","$"],CLP:["$CL","$"],CNY:[n,"\xa5"],COP:["$CO","$"],CYP:["\xa3CY"],EGP:[n,"\xa3E"],FJD:["$FJ","$"],FKP:["\xa3FK","\xa3"],FRF:["F"],GBP:["\xa3GB","\xa3"],GIP:["\xa3GI","\xa3"],HKD:[n,"$"],IEP:["\xa3IE"],ILP:["\xa3IL"],ITL:["\u20a4IT"],JPY:[n,"\xa5"],KMF:[n,"FC"],LBP:["\xa3LB","\xa3L"],MTP:["\xa3MT"],MXN:["$MX","$"],NAD:["$NA","$"],NIO:[n,"$C"],NZD:["$NZ","$"],RHD:["$RH"],RON:[n,"L"],RWF:[n,"FR"],SBD:["$SB","$"],SGD:["$SG","$"],SRD:["$SR","$"],TTD:["$TT","$"],TWD:[n,"NT$"],USD:["$US","$"],UYU:["$UY","$"],WST:["WS$"],XCD:[n,"$"],XPF:["FCFP"],ZMW:[n,"Kw"]},function(t){var e=Math.floor(Math.abs(t));return 0===e||1===e?1:5}]})},Hg4g:function(t,e){t.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},I2ZF:function(t,e){for(var n=[],a=0;a<256;++a)n[a]=(a+256).toString(16).substr(1);t.exports=function(t,e){var a=e||0;return[n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],"-",n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]],n[t[a++]]].join("")}},IBtZ:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".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:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(t)?t.replace(/\u10d8$/,"\u10e8\u10d8"):t+"\u10e8\u10d8"},past:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(t)?t.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(t)?t.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(t){return 0===t?t:1===t?t+"-\u10da\u10d8":t<20||t<=100&&t%20==0||t%100==0?"\u10db\u10d4-"+t:t+"-\u10d4"},week:{dow:1,doy:7}})}()},ILDN:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.double="double"}(e.ClickType||(e.ClickType={}))},IPm6:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=(n("qwkt"),n("SfHT"));e.DataTableBodyComponent=function(){function t(t){var e=this;this.cd=t,this.selected=[],this.scroll=new i.EventEmitter,this.page=new i.EventEmitter,this.activate=new i.EventEmitter,this.select=new i.EventEmitter,this.detailToggle=new i.EventEmitter,this.rowContextmenu=new i.EventEmitter(!1),this.treeAction=new i.EventEmitter,this.rowHeightsCache=new o.RowHeightCache,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=new Map,this.getDetailRowHeight=function(t,n){if(!e.rowDetail)return 0;var a=e.rowDetail.rowHeight;return"function"==typeof a?a(t,n):a},this.rowTrackingFn=(function(t,e){var n=this.getRowIndex(e);return this.trackByProp?n+"-"+this.trackByProp:n}).bind(this)}return Object.defineProperty(t.prototype,"pageSize",{get:function(){return this._pageSize},set:function(t){this._pageSize=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,this.rowExpansions.clear(),this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=o.columnsByPin(t);this.columnGroupWidths=o.columnGroupWidths(e,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return this._offset},set:function(t){this._offset=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowCount",{get:function(){return this._rowCount},set:function(t){this._rowCount=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyHeight",{get:function(){return this._bodyHeight},set:function(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectEnabled",{get:function(){return!!this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollHeight",{get:function(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(function(e){var n=e.type,a=e.value;"row"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(function(e){var n=e.type,a=e.value;"group"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()}))},t.prototype.ngOnDestroy=function(){this.rowDetail&&this.listener.unsubscribe(),this.groupHeader&&this.listener.unsubscribe()},t.prototype.updateOffsetY=function(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))},t.prototype.onBodyScroll=function(t){var 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()},t.prototype.updatePage=function(t){var 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})},t.prototype.updateRows=function(){var t=this.indexes,e=t.last,n=t.first,a=0,r=[];if(this.rowIndexes.clear(),this.groupedRows)for(;n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++;else for(;n<e&&n<this.rowCount;){var i=this.rows[n];i&&(this.rowIndexes.set(i,n),r[a]=i),a++,n++}this.temp=r},t.prototype.getRowHeight=function(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight},t.prototype.getGroupHeight=function(t){var e=0;if(t.value)for(var n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e},t.prototype.getRowAndDetailHeight=function(t){var e=this.getRowHeight(t);return 1===this.rowExpansions.get(t)&&(e+=this.getDetailRowHeight(t)),e},t.prototype.getRowsStyles=function(t){var e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){var n=0;if(this.groupedRows){var a=t[t.length-1];n=a?this.getRowIndex(a):0}else n=this.getRowIndex(t);var r=this.rowHeightsCache.query(n-1);o.translateXY(e,0,r)}return e},t.prototype.getBottomSummaryRowStyles=function(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;var t={position:"absolute"},e=this.rowHeightsCache.query(this.rows.length-1);return o.translateXY(t,0,e),t},t.prototype.hideIndicator=function(){var t=this;setTimeout(function(){return t.loadingIndicator=!1},500)},t.prototype.updateIndexes=function(){var t=0,e=0;if(this.scrollbarV)if(this.virtualization){var 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}},t.prototype.refreshRowHeightCache=function(){!this.scrollbarV||this.scrollbarV&&!this.virtualization||(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length&&this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:this.rowExpansions}))},t.prototype.getAdjustedViewPortIndex=function(){var t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t},t.prototype.toggleRowExpansion=function(t){var e=this.getAdjustedViewPortIndex(),n=this.rowExpansions.get(t);if(this.scrollbarV&&this.virtualization){var a=this.getDetailRowHeight(t)*(n?-1:1),r=this.getRowIndex(t);this.rowHeightsCache.update(r,a)}n=n^=1,this.rowExpansions.set(t,n),this.detailToggle.emit({rows:[t],currentIndex:e})},t.prototype.toggleAllRows=function(t){this.rowExpansions.clear();for(var e=t?1:0,n=this.getAdjustedViewPortIndex(),a=0,r=this.rows;a<r.length;a++)this.rowExpansions.set(r[a],e);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:n})},t.prototype.recalcLayout=function(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.stylesByGroup=function(t){var e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n),0)}return a},t.prototype.getRowExpanded=function(t){if(0===this.rowExpansions.size&&this.groupExpansionDefault)for(var e=0,n=this.groupedRows;e<n.length;e++)this.rowExpansions.set(n[e],1);return 1===this.rowExpansions.get(t)},t.prototype.getRowIndex=function(t){return this.rowIndexes.get(t)||0},t.prototype.onTreeAction=function(t){this.treeAction.emit({row:t})},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",String)],t.prototype,"emptyMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",String)],t.prototype,"groupRowsBy",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([i.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"pageSize",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"rows",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowCount",null),a([i.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"bodyWidth",null),a([i.Input(),i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"bodyHeight",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"detailToggle",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild(s.ScrollerComponent),r("design:type",s.ScrollerComponent)],t.prototype,"scroller",void 0),a([i.Component({selector:"datatable-body",template:'\n    <datatable-selection\n      #selector\n      [selected]="selected"\n      [rows]="rows"\n      [selectCheck]="selectCheck"\n      [selectEnabled]="selectEnabled"\n      [selectionType]="selectionType"\n      [rowIdentity]="rowIdentity"\n      (select)="select.emit($event)"\n      (activate)="activate.emit($event)">\n      <datatable-progress\n        *ngIf="loadingIndicator">\n      </datatable-progress>\n      <datatable-scroller\n        *ngIf="rows?.length"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [scrollHeight]="scrollHeight"\n        [scrollWidth]="columnGroupWidths?.total"\n        (scroll)="onBodyScroll($event)">\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'top\'"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n        <datatable-row-wrapper\n          [groupedRows]="groupedRows"\n          *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn;"\n          [innerWidth]="innerWidth"\n          [ngStyle]="getRowsStyles(group)"\n          [rowDetail]="rowDetail"\n          [groupHeader]="groupHeader"\n          [offsetX]="offsetX"\n          [detailRowHeight]="getDetailRowHeight(group[i],i)"\n          [row]="group"\n          [expanded]="getRowExpanded(group)"\n          [rowIndex]="getRowIndex(group[i])"\n          (rowContextmenu)="rowContextmenu.emit($event)">\n          <datatable-body-row\n            *ngIf="!groupedRows; else groupedRowsTemplate"\n            tabindex="-1"\n            [isSelected]="selector.getRowSelected(group)"\n            [innerWidth]="innerWidth"\n            [offsetX]="offsetX"\n            [columns]="columns"\n            [rowHeight]="getRowHeight(group)"\n            [row]="group"\n            [rowIndex]="getRowIndex(group)"\n            [expanded]="getRowExpanded(group)"\n            [rowClass]="rowClass"\n            [displayCheck]="displayCheck"\n            [treeStatus]="group.treeStatus"\n            (treeAction)="onTreeAction(group)"\n            (activate)="selector.onActivate($event, indexes.first + i)">\n          </datatable-body-row>\n          <ng-template #groupedRowsTemplate>\n            <datatable-body-row\n              *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn;"\n              tabindex="-1"\n              [isSelected]="selector.getRowSelected(row)"\n              [innerWidth]="innerWidth"\n              [offsetX]="offsetX"\n              [columns]="columns"\n              [rowHeight]="getRowHeight(row)"\n              [row]="row"\n              [group]="group.value"\n              [rowIndex]="getRowIndex(row)"\n              [expanded]="getRowExpanded(row)"\n              [rowClass]="rowClass"\n              (activate)="selector.onActivate($event, i)">\n            </datatable-body-row>\n          </ng-template>\n        </datatable-row-wrapper>\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'bottom\'"\n          [ngStyle]="getBottomSummaryRowStyles()"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n      </datatable-scroller>\n      <div\n        class="empty-row"\n        *ngIf="!rows?.length && !loadingIndicator"\n        [innerHTML]="emptyMessage">\n      </div>\n    </datatable-selection>\n  ',changeDetection:i.ChangeDetectionStrategy.OnPush,host:{class:"datatable-body"}})],t)}()},IUTb:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("pugT"),i=n("+tJ4");function o(t,e){return new a.a(e?function(n){var a=new r.a,i=0;return a.add(e.schedule(function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()})),a}:Object(i.a)(t))}},IZUe:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(t){this.elementRef=t}return t.prototype.ngAfterViewInit=function(){var t=this.elementRef.nativeElement;a.isFunction(t.focus)&&t.focus()},t}()},Ip0R:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_common_common_e",function(){return Xt}),n.d(e,"\u0275angular_packages_common_common_d",function(){return B}),n.d(e,"\u0275angular_packages_common_common_a",function(){return Dt}),n.d(e,"\u0275angular_packages_common_common_b",function(){return Et}),n.d(e,"\u0275angular_packages_common_common_g",function(){return xe}),n.d(e,"\u0275angular_packages_common_common_f",function(){return Ge}),n.d(e,"\u0275registerLocaleData",function(){return m}),n.d(e,"registerLocaleData",function(){return m}),n.d(e,"formatDate",function(){return et}),n.d(e,"formatCurrency",function(){return St}),n.d(e,"formatNumber",function(){return Ct}),n.d(e,"formatPercent",function(){return Ot}),n.d(e,"NgLocaleLocalization",function(){return At}),n.d(e,"NgLocalization",function(){return Rt}),n.d(e,"Plural",function(){return v}),n.d(e,"NumberFormatStyle",function(){return y}),n.d(e,"FormStyle",function(){return _}),n.d(e,"TranslationWidth",function(){return x}),n.d(e,"FormatWidth",function(){return T}),n.d(e,"NumberSymbol",function(){return w}),n.d(e,"WeekDay",function(){return S}),n.d(e,"getNumberOfCurrencyDigits",function(){return K}),n.d(e,"getCurrencySymbol",function(){return U}),n.d(e,"getLocaleDayPeriods",function(){return C}),n.d(e,"getLocaleDayNames",function(){return k}),n.d(e,"getLocaleMonthNames",function(){return I}),n.d(e,"getLocaleId",function(){return O}),n.d(e,"getLocaleEraNames",function(){return D}),n.d(e,"getLocaleWeekEndRange",function(){return N}),n.d(e,"getLocaleFirstDayOfWeek",function(){return R}),n.d(e,"getLocaleDateFormat",function(){return A}),n.d(e,"getLocaleDateTimeFormat",function(){return L}),n.d(e,"getLocaleExtraDayPeriodRules",function(){return Y}),n.d(e,"getLocaleExtraDayPeriods",function(){return H}),n.d(e,"getLocalePluralCase",function(){return F}),n.d(e,"getLocaleTimeFormat",function(){return E}),n.d(e,"getLocaleNumberSymbol",function(){return P}),n.d(e,"getLocaleNumberFormat",function(){return M}),n.d(e,"getLocaleCurrencyName",function(){return q}),n.d(e,"getLocaleCurrencySymbol",function(){return j}),n.d(e,"\u0275parseCookieValue",function(){return Lt}),n.d(e,"CommonModule",function(){return Ve}),n.d(e,"DeprecatedI18NPipesModule",function(){return Be}),n.d(e,"NgClass",function(){return Pt}),n.d(e,"NgForOf",function(){return qt}),n.d(e,"NgForOfContext",function(){return jt}),n.d(e,"NgIf",function(){return zt}),n.d(e,"NgIfContext",function(){return Yt}),n.d(e,"NgPlural",function(){return Wt}),n.d(e,"NgPluralCase",function(){return Kt}),n.d(e,"NgStyle",function(){return $t}),n.d(e,"NgSwitch",function(){return Vt}),n.d(e,"NgSwitchCase",function(){return Bt}),n.d(e,"NgSwitchDefault",function(){return Ut}),n.d(e,"NgTemplateOutlet",function(){return Zt}),n.d(e,"NgComponentOutlet",function(){return Mt}),n.d(e,"DOCUMENT",function(){return Ue}),n.d(e,"AsyncPipe",function(){return Oe}),n.d(e,"DatePipe",function(){return Re}),n.d(e,"I18nPluralPipe",function(){return Ae}),n.d(e,"I18nSelectPipe",function(){return Ee}),n.d(e,"JsonPipe",function(){return Le}),n.d(e,"LowerCasePipe",function(){return Ce}),n.d(e,"CurrencyPipe",function(){return Fe}),n.d(e,"DecimalPipe",function(){return je}),n.d(e,"PercentPipe",function(){return qe}),n.d(e,"SlicePipe",function(){return He}),n.d(e,"UpperCasePipe",function(){return De}),n.d(e,"TitleCasePipe",function(){return Ie}),n.d(e,"KeyValuePipe",function(){return Pe}),n.d(e,"DeprecatedDatePipe",function(){return ge}),n.d(e,"DeprecatedCurrencyPipe",function(){return _e}),n.d(e,"DeprecatedDecimalPipe",function(){return ye}),n.d(e,"DeprecatedPercentPipe",function(){return ve}),n.d(e,"\u0275PLATFORM_BROWSER_ID",function(){return We}),n.d(e,"\u0275PLATFORM_SERVER_ID",function(){return Ke}),n.d(e,"\u0275PLATFORM_WORKER_APP_ID",function(){return $e}),n.d(e,"\u0275PLATFORM_WORKER_UI_ID",function(){return Ze}),n.d(e,"isPlatformBrowser",function(){return Xe}),n.d(e,"isPlatformServer",function(){return Je}),n.d(e,"isPlatformWorkerApp",function(){return Qe}),n.d(e,"isPlatformWorkerUi",function(){return tn}),n.d(e,"VERSION",function(){return en}),n.d(e,"ViewportScroller",function(){return nn}),n.d(e,"\u0275NullViewportScroller",function(){return rn}),n.d(e,"PlatformLocation",function(){return i}),n.d(e,"LOCATION_INITIALIZED",function(){return o}),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 f}),n.d(e,"Location",function(){return l});var a=n("CcnG"),r=n("mrSG"),i=function(){return function(){}}(),o=new a.InjectionToken("Location Initialized"),s=function(){return function(){}}(),u=new a.InjectionToken("appBaseHref"),l=function(){function t(t){var n=this;this._subject=new a.EventEmitter,this._platformStrategy=t;var r=this._platformStrategy.getBaseHref();this._baseHref=e.stripTrailingSlash(c(r)),this._platformStrategy.onPopState(function(t){n._subject.emit({url:n.path(!0),pop:!0,state:t.state,type:t.type})})}var e;return e=t,t.prototype.path=function(t){return void 0===t&&(t=!1),this.normalize(this._platformStrategy.path(t))},t.prototype.isCurrentPathEqualTo=function(t,n){return void 0===n&&(n=""),this.path()==this.normalize(t+e.normalizeQueryParams(n))},t.prototype.normalize=function(t){return e.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,c(t)))},t.prototype.prepareExternalUrl=function(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)},t.prototype.go=function(t,e,n){void 0===e&&(e=""),void 0===n&&(n=null),this._platformStrategy.pushState(n,"",t,e)},t.prototype.replaceState=function(t,e,n){void 0===e&&(e=""),void 0===n&&(n=null),this._platformStrategy.replaceState(n,"",t,e)},t.prototype.forward=function(){this._platformStrategy.forward()},t.prototype.back=function(){this._platformStrategy.back()},t.prototype.subscribe=function(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})},t.normalizeQueryParams=function(t){return t&&"?"!==t[0]?"?"+t:t},t.joinWithSlash=function(t,e){if(0==t.length)return e;if(0==e.length)return t;var n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e},t.stripTrailingSlash=function(t){var e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)},t}();function c(t){return t.replace(/\/index.html$/,"")}var d=function(t){function e(e,n){var a=t.call(this)||this;return a._platformLocation=e,a._baseHref="",null!=n&&(a._baseHref=n),a}return Object(r.__extends)(e,t),e.prototype.onPopState=function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)},e.prototype.getBaseHref=function(){return this._baseHref},e.prototype.path=function(t){void 0===t&&(t=!1);var e=this._platformLocation.hash;return null==e&&(e="#"),e.length>0?e.substring(1):e},e.prototype.prepareExternalUrl=function(t){var e=l.joinWithSlash(this._baseHref,t);return e.length>0?"#"+e:e},e.prototype.pushState=function(t,e,n,a){var r=this.prepareExternalUrl(n+l.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)},e.prototype.replaceState=function(t,e,n,a){var r=this.prepareExternalUrl(n+l.normalizeQueryParams(a));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)},e.prototype.forward=function(){this._platformLocation.forward()},e.prototype.back=function(){this._platformLocation.back()},e}(s),f=function(t){function e(e,n){var a=t.call(this)||this;if(a._platformLocation=e,null==n&&(n=a._platformLocation.getBaseHrefFromDOM()),null==n)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.");return a._baseHref=n,a}return Object(r.__extends)(e,t),e.prototype.onPopState=function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)},e.prototype.getBaseHref=function(){return this._baseHref},e.prototype.prepareExternalUrl=function(t){return l.joinWithSlash(this._baseHref,t)},e.prototype.path=function(t){void 0===t&&(t=!1);var e=this._platformLocation.pathname+l.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?""+e+n:e},e.prototype.pushState=function(t,e,n,a){var r=this.prepareExternalUrl(n+l.normalizeQueryParams(a));this._platformLocation.pushState(t,e,r)},e.prototype.replaceState=function(t,e,n,a){var r=this.prepareExternalUrl(n+l.normalizeQueryParams(a));this._platformLocation.replaceState(t,e,r)},e.prototype.forward=function(){this._platformLocation.forward()},e.prototype.back=function(){this._platformLocation.back()},e}(s),p=void 0,h=["en",[["a","p"],["AM","PM"],p],[["AM","PM"],p,p],[["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"]],p,[["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"]],p,[["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}",p,"{1} 'at' {0}",p],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##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}],g={};function m(t,e,n){"string"!=typeof e&&(n=e,e=t[0]),e=e.toLowerCase().replace(/_/g,"-"),g[e]=t,n&&(g[e][19]=n)}var b={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,"\u09f3"],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,"\u0440.",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\xa5","\xa5"],COP:[void 0,"$",0],CRC:[void 0,"\u20a1",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"K\u010d",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E\xa3"],ESP:[void 0,"\u20a7",0],EUR:["\u20ac"],FJD:[void 0,"$"],FKP:[void 0,"\xa3"],GBP:["\xa3"],GEL:[void 0,"\u20be"],GIP:[void 0,"\xa3"],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:["\u20aa"],INR:["\u20b9"],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:["\xa5",void 0,0],KHR:[void 0,"\u17db"],KMF:[void 0,"CF",0],KPW:[void 0,"\u20a9",0],KRW:["\u20a9",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"\u20b8"],LAK:[void 0,"\u20ad",0],LBP:[void 0,"L\xa3",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,"\u20ae",0],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",0],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"\u20a6"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"\u20b1"],PKR:[void 0,"Rs",0],PLN:[void 0,"z\u0142"],PYG:[void 0,"\u20b2",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"\u20bd"],RUR:[void 0,"\u0440."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"\xa3"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"\xa3"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"\xa3",0],THB:[void 0,"\u0e3f"],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,"\u20ba"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,0],UAH:[void 0,"\u20b4"],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:["\u20ab",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]},y=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}({}),v=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({}),_=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}({}),x=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}({}),T=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}({}),w=function(t){return t[t.Decimal=0]="Decimal",t[t.Group=1]="Group",t[t.List=2]="List",t[t.PercentSign=3]="PercentSign",t[t.PlusSign=4]="PlusSign",t[t.MinusSign=5]="MinusSign",t[t.Exponential=6]="Exponential",t[t.SuperscriptingExponent=7]="SuperscriptingExponent",t[t.PerMille=8]="PerMille",t[t[1/0]=9]="Infinity",t[t.NaN=10]="NaN",t[t.TimeSeparator=11]="TimeSeparator",t[t.CurrencyDecimal=12]="CurrencyDecimal",t[t.CurrencyGroup=13]="CurrencyGroup",t}({}),S=function(t){return t[t.Sunday=0]="Sunday",t[t.Monday=1]="Monday",t[t.Tuesday=2]="Tuesday",t[t.Wednesday=3]="Wednesday",t[t.Thursday=4]="Thursday",t[t.Friday=5]="Friday",t[t.Saturday=6]="Saturday",t}({});function O(t){return B(t)[0]}function C(t,e,n){var a=B(t),r=G([a[1],a[2]],e);return G(r,n)}function k(t,e,n){var a=B(t),r=G([a[3],a[4]],e);return G(r,n)}function I(t,e,n){var a=B(t),r=G([a[5],a[6]],e);return G(r,n)}function D(t,e){return G(B(t)[7],e)}function R(t){return B(t)[8]}function N(t){return B(t)[9]}function A(t,e){return G(B(t)[10],e)}function E(t,e){return G(B(t)[11],e)}function L(t,e){return G(B(t)[12],e)}function P(t,e){var n=B(t),a=n[13][e];if(void 0===a){if(e===w.CurrencyDecimal)return n[13][w.Decimal];if(e===w.CurrencyGroup)return n[13][w.Group]}return a}function M(t,e){return B(t)[14][e]}function j(t){return B(t)[15]||null}function q(t){return B(t)[16]||null}function F(t){return B(t)[18]}function z(t){if(!t[19])throw new Error('Missing extra locale data for the locale "'+t[0]+'". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.')}function Y(t){var e=B(t);return z(e),(e[19][2]||[]).map(function(t){return"string"==typeof t?V(t):[V(t[0]),V(t[1])]})}function H(t,e,n){var a=B(t);z(a);var r=G([a[19][0],a[19][1]],e)||[];return G(r,n)||[]}function G(t,e){for(var n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function V(t){var e=Object(r.__read)(t.split(":"),2);return{hours:+e[0],minutes:+e[1]}}function B(t){var e=t.toLowerCase().replace(/_/g,"-"),n=g[e];if(n)return n;var a=e.split("-")[0];if(n=g[a])return n;if("en"===a)return h;throw new Error('Missing locale data for the locale "'+t+'".')}function U(t,e,n){void 0===n&&(n="en");var a=function(t){return B(t)[17]}(n)[t]||b[t]||[],r=a[1];return"narrow"===e&&"string"==typeof r?r:a[0]||t}var W=2;function K(t){var e,n=b[t];return n&&(e=n[2]),"number"==typeof e?e:W}var $=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Z={},X=/((?:[^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]*)/,J=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}({}),Q=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}({}),tt=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}({});function et(t,e,n,a){var i=function(t){if(pt(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();var e,n=parseFloat(t);if(!isNaN(t-n))return new Date(n);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){var a=Object(r.__read)(t.split("-").map(function(t){return+t}),3);return new Date(a[0],a[1]-1,a[2])}if(e=t.match($))return ft(e)}var i=new Date(t);if(!pt(i))throw new Error('Unable to convert "'+t+'" into a date');return i}(t);e=function t(e,n){var a=O(e);if(Z[a]=Z[a]||{},Z[a][n])return Z[a][n];var r="";switch(n){case"shortDate":r=A(e,T.Short);break;case"mediumDate":r=A(e,T.Medium);break;case"longDate":r=A(e,T.Long);break;case"fullDate":r=A(e,T.Full);break;case"shortTime":r=E(e,T.Short);break;case"mediumTime":r=E(e,T.Medium);break;case"longTime":r=E(e,T.Long);break;case"fullTime":r=E(e,T.Full);break;case"short":var i=t(e,"shortTime"),o=t(e,"shortDate");r=nt(L(e,T.Short),[i,o]);break;case"medium":var s=t(e,"mediumTime"),u=t(e,"mediumDate");r=nt(L(e,T.Medium),[s,u]);break;case"long":var l=t(e,"longTime"),c=t(e,"longDate");r=nt(L(e,T.Long),[l,c]);break;case"full":var d=t(e,"fullTime"),f=t(e,"fullDate");r=nt(L(e,T.Full),[d,f])}return r&&(Z[a][n]=r),r}(n,e)||e;for(var o,s=[];e;){if(!(o=X.exec(e))){s.push(e);break}var u=(s=s.concat(o.slice(1))).pop();if(!u)break;e=u}var l=i.getTimezoneOffset();a&&(l=dt(a,l),i=function(t,e,n){var a=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(dt(e,a)-a))}(i,a));var c="";return s.forEach(function(t){var e=function(t){if(ct[t])return ct[t];var e;switch(t){case"G":case"GG":case"GGG":e=it(tt.Eras,x.Abbreviated);break;case"GGGG":e=it(tt.Eras,x.Wide);break;case"GGGGG":e=it(tt.Eras,x.Narrow);break;case"y":e=rt(Q.FullYear,1,0,!1,!0);break;case"yy":e=rt(Q.FullYear,2,0,!0,!0);break;case"yyy":e=rt(Q.FullYear,3,0,!1,!0);break;case"yyyy":e=rt(Q.FullYear,4,0,!1,!0);break;case"M":case"L":e=rt(Q.Month,1,1);break;case"MM":case"LL":e=rt(Q.Month,2,1);break;case"MMM":e=it(tt.Months,x.Abbreviated);break;case"MMMM":e=it(tt.Months,x.Wide);break;case"MMMMM":e=it(tt.Months,x.Narrow);break;case"LLL":e=it(tt.Months,x.Abbreviated,_.Standalone);break;case"LLLL":e=it(tt.Months,x.Wide,_.Standalone);break;case"LLLLL":e=it(tt.Months,x.Narrow,_.Standalone);break;case"w":e=lt(1);break;case"ww":e=lt(2);break;case"W":e=lt(1,!0);break;case"d":e=rt(Q.Date,1);break;case"dd":e=rt(Q.Date,2);break;case"E":case"EE":case"EEE":e=it(tt.Days,x.Abbreviated);break;case"EEEE":e=it(tt.Days,x.Wide);break;case"EEEEE":e=it(tt.Days,x.Narrow);break;case"EEEEEE":e=it(tt.Days,x.Short);break;case"a":case"aa":case"aaa":e=it(tt.DayPeriods,x.Abbreviated);break;case"aaaa":e=it(tt.DayPeriods,x.Wide);break;case"aaaaa":e=it(tt.DayPeriods,x.Narrow);break;case"b":case"bb":case"bbb":e=it(tt.DayPeriods,x.Abbreviated,_.Standalone,!0);break;case"bbbb":e=it(tt.DayPeriods,x.Wide,_.Standalone,!0);break;case"bbbbb":e=it(tt.DayPeriods,x.Narrow,_.Standalone,!0);break;case"B":case"BB":case"BBB":e=it(tt.DayPeriods,x.Abbreviated,_.Format,!0);break;case"BBBB":e=it(tt.DayPeriods,x.Wide,_.Format,!0);break;case"BBBBB":e=it(tt.DayPeriods,x.Narrow,_.Format,!0);break;case"h":e=rt(Q.Hours,1,-12);break;case"hh":e=rt(Q.Hours,2,-12);break;case"H":e=rt(Q.Hours,1);break;case"HH":e=rt(Q.Hours,2);break;case"m":e=rt(Q.Minutes,1);break;case"mm":e=rt(Q.Minutes,2);break;case"s":e=rt(Q.Seconds,1);break;case"ss":e=rt(Q.Seconds,2);break;case"S":e=rt(Q.FractionalSeconds,1);break;case"SS":e=rt(Q.FractionalSeconds,2);break;case"SSS":e=rt(Q.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=ot(J.Short);break;case"ZZZZZ":e=ot(J.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=ot(J.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=ot(J.Long);break;default:return null}return ct[t]=e,e}(t);c+=e?e(i,n,l):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function nt(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(t,n){return null!=e&&n in e?e[n]:t})),t}function at(t,e,n,a,r){void 0===n&&(n="-");var i="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,i=n));for(var o=String(t);o.length<e;)o="0"+o;return a&&(o=o.substr(o.length-e)),i+o}function rt(t,e,n,a,r){return void 0===n&&(n=0),void 0===a&&(a=!1),void 0===r&&(r=!1),function(i,o){var s,u=function(t,e){switch(t){case Q.FullYear:return e.getFullYear();case Q.Month:return e.getMonth();case Q.Date:return e.getDate();case Q.Hours:return e.getHours();case Q.Minutes:return e.getMinutes();case Q.Seconds:return e.getSeconds();case Q.FractionalSeconds:return e.getMilliseconds();case Q.Day:return e.getDay();default:throw new Error('Unknown DateType value "'+t+'".')}}(t,i);if((n>0||u>-n)&&(u+=n),t===Q.Hours)0===u&&-12===n&&(u=12);else if(t===Q.FractionalSeconds)return s=e,at(u,3).substr(0,s);var l=P(o,w.MinusSign);return at(u,e,l,a,r)}}function it(t,e,n,a){return void 0===n&&(n=_.Format),void 0===a&&(a=!1),function(r,i){return function(t,e,n,a,r,i){switch(n){case tt.Months:return I(e,r,a)[t.getMonth()];case tt.Days:return k(e,r,a)[t.getDay()];case tt.DayPeriods:var o=t.getHours(),s=t.getMinutes();if(i){var u,l=Y(e),c=H(e,r,a);if(l.forEach(function(t,e){if(Array.isArray(t)){var n=t[0],a=t[1],r=a.hours;o>=n.hours&&s>=n.minutes&&(o<r||o===r&&s<a.minutes)&&(u=c[e])}else t.hours===o&&t.minutes===s&&(u=c[e])}),u)return u}return C(e,r,a)[o<12?0:1];case tt.Eras:return D(e,a)[t.getFullYear()<=0?0:1];default:throw new Error("unexpected translation type "+n)}}(r,i,t,e,n,a)}}function ot(t){return function(e,n,a){var r=-1*a,i=P(n,w.MinusSign),o=r>0?Math.floor(r/60):Math.ceil(r/60);switch(t){case J.Short:return(r>=0?"+":"")+at(o,2,i)+at(Math.abs(r%60),2,i);case J.ShortGMT:return"GMT"+(r>=0?"+":"")+at(o,1,i);case J.Long:return"GMT"+(r>=0?"+":"")+at(o,2,i)+":"+at(Math.abs(r%60),2,i);case J.Extended:return 0===a?"Z":(r>=0?"+":"")+at(o,2,i)+":"+at(Math.abs(r%60),2,i);default:throw new Error('Unknown zone width "'+t+'"')}}}var st=0,ut=4;function lt(t,e){return void 0===e&&(e=!1),function(n,a){var r,i,o,s;if(e){var u=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,l=n.getDate();r=1+Math.floor((l+u)/7)}else{var c=(o=n.getFullYear(),s=new Date(o,st,1).getDay(),new Date(o,0,1+(s<=ut?ut:ut+7)-s)),d=(i=n,new Date(i.getFullYear(),i.getMonth(),i.getDate()+(ut-i.getDay()))).getTime()-c.getTime();r=1+Math.round(d/6048e5)}return at(r,t,P(a,w.MinusSign))}}var ct={};function dt(t,e){t=t.replace(/:/g,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function ft(t){var e=new Date(0),n=0,a=0,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]));var o=Number(t[4]||0)-n,s=Number(t[5]||0)-a,u=Number(t[6]||0),l=Math.round(1e3*parseFloat("0."+(t[7]||0)));return i.call(e,o,s,u,l),e}function pt(t){return t instanceof Date&&!isNaN(t.valueOf())}var ht=/^(\d+)?\.((\d+)(-(\d+))?)?$/,gt=22,mt=".",bt="0",yt=";",vt=",",_t="#",xt="\xa4",Tt="%";function wt(t,e,n,a,r,i,o){void 0===o&&(o=!1);var s="",u=!1;if(isFinite(t)){var l=function(e){var n,a,r,i,o,s=Math.abs(t)+"",u=0;for((a=s.indexOf(mt))>-1&&(s=s.replace(mt,"")),(r=s.search(/e/i))>0?(a<0&&(a=r),a+=+s.slice(r+1),s=s.substring(0,r)):a<0&&(a=s.length),r=0;s.charAt(r)===bt;r++);if(r===(o=s.length))n=[0],a=1;else{for(o--;s.charAt(o)===bt;)o--;for(a-=r,n=[],i=0;r<=o;r++,i++)n[i]=Number(s.charAt(r))}return a>gt&&(n=n.splice(0,gt-1),u=a-1,a=1),{digits:n,exponent:u,integerLen:a}}();o&&(l=function(t){if(0===t.digits[0])return t;var 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));var c=e.minInt,d=e.minFrac,f=e.maxFrac;if(i){var p=i.match(ht);if(null===p)throw new Error(i+" is not a valid digit info");var h=p[1],g=p[3],m=p[5];null!=h&&(c=It(h)),null!=g&&(d=It(g)),null!=m?f=It(m):null!=g&&d>f&&(f=d)}!function(t,e,n){if(e>n)throw new Error("The minimum number of digits after fraction ("+e+") is higher than the maximum ("+n+").");var a=t.digits,r=a.length-t.integerLen,i=Math.min(Math.max(e,r),n),o=i+t.integerLen,s=a[o];if(o>0){a.splice(Math.max(t.integerLen,o));for(var u=o;u<a.length;u++)a[u]=0}else{r=Math.max(0,r),t.integerLen=1,a.length=Math.max(1,o=i+1),a[0]=0;for(var l=1;l<o;l++)a[l]=0}if(s>=5)if(o-1<0){for(var c=0;c>o;c--)a.unshift(0),t.integerLen++;a.unshift(1),t.integerLen++}else a[o-1]++;for(;r<Math.max(0,i);r++)a.push(0);var d=0!==i,f=e+t.integerLen,p=a.reduceRight(function(t,e,n,a){return a[n]=(e+=t)<10?e:e-10,d&&(0===a[n]&&n>=f?a.pop():d=!1),e>=10?1:0},0);p&&(a.unshift(p),t.integerLen++)}(l,d,f);var b=l.digits,y=l.integerLen,v=l.exponent,_=[];for(u=b.every(function(t){return!t});y<c;y++)b.unshift(0);for(;y<0;y++)b.unshift(0);y>0?_=b.splice(y,b.length):(_=b,b=[0]);var x=[];for(b.length>=e.lgSize&&x.unshift(b.splice(-e.lgSize,b.length).join(""));b.length>e.gSize;)x.unshift(b.splice(-e.gSize,b.length).join(""));b.length&&x.unshift(b.join("")),s=x.join(P(n,a)),_.length&&(s+=P(n,r)+_.join("")),v&&(s+=P(n,w.Exponential)+"+"+v)}else s=P(n,w.Infinity);return t<0&&!u?e.negPre+s+e.negSuf:e.posPre+s+e.posSuf}function St(t,e,n,a,r){var i=kt(M(e,y.Currency),P(e,w.MinusSign));return i.minFrac=K(a),i.maxFrac=i.minFrac,wt(t,i,e,w.CurrencyGroup,w.CurrencyDecimal,r).replace(xt,n).replace(xt,"")}function Ot(t,e,n){return wt(t,kt(M(e,y.Percent),P(e,w.MinusSign)),e,w.Group,w.Decimal,n,!0).replace(new RegExp(Tt,"g"),P(e,w.PercentSign))}function Ct(t,e,n){return wt(t,kt(M(e,y.Decimal),P(e,w.MinusSign)),e,w.Group,w.Decimal,n)}function kt(t,e){void 0===e&&(e="-");var n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},a=t.split(yt),r=a[0],i=a[1],o=-1!==r.indexOf(mt)?r.split(mt):[r.substring(0,r.lastIndexOf(bt)+1),r.substring(r.lastIndexOf(bt)+1)],s=o[0],u=o[1]||"";n.posPre=s.substr(0,s.indexOf(_t));for(var l=0;l<u.length;l++){var c=u.charAt(l);c===bt?n.minFrac=n.maxFrac=l+1:c===_t?n.maxFrac=l+1:n.posSuf+=c}var d=s.split(vt);if(n.gSize=d[1]?d[1].length:0,n.lgSize=d[2]||d[1]?(d[2]||d[1]).length:0,i){var f=r.length-n.posPre.length-n.posSuf.length,p=i.indexOf(_t);n.negPre=i.substr(0,p).replace(/'/g,""),n.negSuf=i.substr(p+f).replace(/'/g,"")}else n.negPre=e+n.posPre,n.negSuf=n.posSuf;return n}function It(t){var e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}var Dt=new a.InjectionToken("UseV4Plurals"),Rt=function(){return function(){}}();function Nt(t,e,n,a){var 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+'"')}var At=function(t){function e(e,n){var a=t.call(this)||this;return a.locale=e,a.deprecatedPluralFn=n,a}return Object(r.__extends)(e,t),e.prototype.getPluralCategory=function(t,e){switch(this.deprecatedPluralFn?this.deprecatedPluralFn(e||this.locale,t):F(e||this.locale)(t)){case v.Zero:return"zero";case v.One:return"one";case v.Two:return"two";case v.Few:return"few";case v.Many:return"many";default:return"other"}},e}(Rt);function Et(t,e){"string"==typeof e&&(e=parseInt(e,10));var n=e,a=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=a.length,o=parseInt(a,10),s=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?v.One:v.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?v.One:v.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?v.One:v.Other;case"ar":return 0===n?v.Zero:1===n?v.One:2===n?v.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?v.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?v.Many:v.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?v.One:v.Other;case"be":return n%10==1&&n%100!=11?v.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?v.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?v.Many:v.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?v.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?v.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)?v.Few:0!==n&&n%1e6==0?v.Many:v.Other;case"bs":case"hr":case"sr":return 0===i&&r%10==1&&r%100!=11||o%10==1&&o%100!=11?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?v.Few:v.Other;case"cs":case"sk":return 1===r&&0===i?v.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?v.Few:0!==i?v.Many:v.Other;case"cy":return 0===n?v.Zero:1===n?v.One:2===n?v.Two:3===n?v.Few:6===n?v.Many:v.Other;case"da":return 1===n||0!==s&&(0===r||1===r)?v.One:v.Other;case"dsb":case"hsb":return 0===i&&r%100==1||o%100==1?v.One:0===i&&r%100==2||o%100==2?v.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4?v.Few:v.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?v.One:v.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&&o%10!=4&&o%10!=6&&o%10!=9?v.One:v.Other;case"ga":return 1===n?v.One:2===n?v.Two:n===Math.floor(n)&&n>=3&&n<=6?v.Few:n===Math.floor(n)&&n>=7&&n<=10?v.Many:v.Other;case"gd":return 1===n||11===n?v.One:2===n||12===n?v.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?v.Few:v.Other;case"gv":return 0===i&&r%10==1?v.One:0===i&&r%10==2?v.Two:0!==i||r%100!=0&&r%100!=20&&r%100!=40&&r%100!=60&&r%100!=80?0!==i?v.Many:v.Other:v.Few;case"he":return 1===r&&0===i?v.One:2===r&&0===i?v.Two:0!==i||n>=0&&n<=10||n%10!=0?v.Other:v.Many;case"is":return 0===s&&r%10==1&&r%100!=11||0!==s?v.One:v.Other;case"ksh":return 0===n?v.Zero:1===n?v.One:v.Other;case"kw":case"naq":case"se":case"smn":return 1===n?v.One:2===n?v.Two:v.Other;case"lag":return 0===n?v.Zero:0!==r&&1!==r||0===n?v.Other:v.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)?v.Few:0!==o?v.Many:v.Other:v.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&o%100===Math.floor(o%100)&&o%100>=11&&o%100<=19?v.Zero:n%10==1&&n%100!=11||2===i&&o%10==1&&o%100!=11||2!==i&&o%10==1?v.One:v.Other;case"mk":return 0===i&&r%10==1||o%10==1?v.One:v.Other;case"mt":return 1===n?v.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?v.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?v.Many:v.Other;case"pl":return 1===r&&0===i?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?v.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?v.Many:v.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?v.One:v.Other;case"ro":return 1===r&&0===i?v.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?v.Few:v.Other;case"ru":case"uk":return 0===i&&r%10==1&&r%100!=11?v.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?v.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?v.Many:v.Other;case"shi":return 0===r||1===n?v.One:n===Math.floor(n)&&n>=2&&n<=10?v.Few:v.Other;case"si":return 0===n||1===n||0===r&&1===o?v.One:v.Other;case"sl":return 0===i&&r%100==1?v.One:0===i&&r%100==2?v.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?v.Few:v.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?v.One:v.Other;default:return v.Other}}function Lt(t,e){var n,a;e=encodeURIComponent(e);try{for(var i=Object(r.__values)(t.split(";")),o=i.next();!o.done;o=i.next()){var s=o.value,u=s.indexOf("="),l=Object(r.__read)(-1==u?[s,""]:[s.slice(0,u),s.slice(u+1)],2),c=l[1];if(l[0].trim()===e)return decodeURIComponent(c)}}catch(d){n={error:d}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return null}var Pt=function(){function t(t,e,n,a){this._iterableDiffers=t,this._keyValueDiffers=e,this._ngEl=n,this._renderer=a,this._initialClasses=[]}return Object.defineProperty(t.prototype,"klass",{set:function(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClass",{set:function(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["\u0275isListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._iterableDiffer){var t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){var e=this._keyValueDiffer.diff(this._rawClass);e&&this._applyKeyValueChanges(e)}},t.prototype._applyKeyValueChanges=function(t){var e=this;t.forEachAddedItem(function(t){return e._toggleClass(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e._toggleClass(t.key,t.currentValue)}),t.forEachRemovedItem(function(t){t.previousValue&&e._toggleClass(t.key,!1)})},t.prototype._applyIterableChanges=function(t){var e=this;t.forEachAddedItem(function(t){if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+Object(a["\u0275stringify"])(t.item));e._toggleClass(t.item,!0)}),t.forEachRemovedItem(function(t){return e._toggleClass(t.item,!1)})},t.prototype._applyClasses=function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach(function(t){return e._toggleClass(t,!0)}):Object.keys(t).forEach(function(n){return e._toggleClass(n,!!t[n])}))},t.prototype._removeClasses=function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach(function(t){return e._toggleClass(t,!1)}):Object.keys(t).forEach(function(t){return e._toggleClass(t,!1)}))},t.prototype._toggleClass=function(t,e){var n=this;(t=t.trim())&&t.split(/\s+/g).forEach(function(t){e?n._renderer.addClass(n._ngEl.nativeElement,t):n._renderer.removeClass(n._ngEl.nativeElement,t)})},t}(),Mt=function(){function t(t){this._viewContainerRef=t,this._componentRef=null,this._moduleRef=null}return t.prototype.ngOnChanges=function(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){var e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){var n=e.get(a.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(n.injector)}else this._moduleRef=null;var r=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(a.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(r,this._viewContainerRef.length,e,this.ngComponentOutletContent)}},t.prototype.ngOnDestroy=function(){this._moduleRef&&this._moduleRef.destroy()},t}(),jt=function(){function t(t,e,n,a){this.$implicit=t,this.ngForOf=e,this.index=n,this.count=a}return Object.defineProperty(t.prototype,"first",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"last",{get:function(){return this.index===this.count-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"even",{get:function(){return this.index%2==0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"odd",{get:function(){return!this.even},enumerable:!0,configurable:!0}),t}(),qt=function(){function t(t,e,n){this._viewContainer=t,this._template=e,this._differs=n,this._ngForOfDirty=!0,this._differ=null}return Object.defineProperty(t.prototype,"ngForOf",{set:function(t){this._ngForOf=t,this._ngForOfDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngForTrackBy",{get:function(){return this._trackByFn},set:function(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},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngForTemplate",{set:function(t){t&&(this._template=t)},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._ngForOfDirty){this._ngForOfDirty=!1;var t=this._ngForOf;if(!this._differ&&t)try{this._differ=this._differs.find(t).create(this.ngForTrackBy)}catch(a){throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+((e=t).name||typeof e)+"'. NgFor only supports binding to Iterables such as Arrays.")}}var e;if(this._differ){var n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}},t.prototype._applyChanges=function(t){var e=this,n=[];t.forEachOperation(function(t,a,r){if(null==t.previousIndex){var i=e._viewContainer.createEmbeddedView(e._template,new jt(null,e._ngForOf,-1,-1),r),o=new Ft(t,i);n.push(o)}else null==r?e._viewContainer.remove(a):(i=e._viewContainer.get(a),e._viewContainer.move(i,r),o=new Ft(t,i),n.push(o))});for(var a=0;a<n.length;a++)this._perViewChange(n[a].view,n[a].record);a=0;for(var r=this._viewContainer.length;a<r;a++){var i=this._viewContainer.get(a);i.context.index=a,i.context.count=r,i.context.ngForOf=this._ngForOf}t.forEachIdentityChange(function(t){e._viewContainer.get(t.currentIndex).context.$implicit=t.item})},t.prototype._perViewChange=function(t,e){t.context.$implicit=e.item},t.ngTemplateContextGuard=function(t,e){return!0},t}(),Ft=function(){return function(t,e){this.record=t,this.view=e}}(),zt=function(){function t(t,e){this._viewContainer=t,this._context=new Yt,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=e}return Object.defineProperty(t.prototype,"ngIf",{set:function(t){this._context.$implicit=this._context.ngIf=t,this._updateView()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngIfThen",{set:function(t){Ht("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngIfElse",{set:function(t){Ht("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()},enumerable:!0,configurable:!0}),t.prototype._updateView=function(){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)))},t.ngTemplateGuard_ngIf=function(t,e){return!0},t}(),Yt=function(){return function(){this.$implicit=null,this.ngIf=null}}();function Ht(t,e){if(e&&!e.createEmbeddedView)throw new Error(t+" must be a TemplateRef, but received '"+Object(a["\u0275stringify"])(e)+"'.")}var Gt=function(){function t(t,e){this._viewContainerRef=t,this._templateRef=e,this._created=!1}return t.prototype.create=function(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)},t.prototype.destroy=function(){this._created=!1,this._viewContainerRef.clear()},t.prototype.enforceState=function(t){t&&!this._created?this.create():!t&&this._created&&this.destroy()},t}(),Vt=function(){function t(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}return Object.defineProperty(t.prototype,"ngSwitch",{set:function(t){this._ngSwitch=t,0===this._caseCount&&this._updateDefaultCases(!0)},enumerable:!0,configurable:!0}),t.prototype._addCase=function(){return this._caseCount++},t.prototype._addDefault=function(t){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(t)},t.prototype._matchCase=function(t){var 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},t.prototype._updateDefaultCases=function(t){if(this._defaultViews&&t!==this._defaultUsed){this._defaultUsed=t;for(var e=0;e<this._defaultViews.length;e++)this._defaultViews[e].enforceState(t)}},t}(),Bt=function(){function t(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new Gt(t,e)}return t.prototype.ngDoCheck=function(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))},t}(),Ut=function(){return function(t,e,n){n._addDefault(new Gt(t,e))}}(),Wt=function(){function t(t){this._localization=t,this._caseViews={}}return Object.defineProperty(t.prototype,"ngPlural",{set:function(t){this._switchValue=t,this._updateView()},enumerable:!0,configurable:!0}),t.prototype.addCase=function(t,e){this._caseViews[t]=e},t.prototype._updateView=function(){this._clearViews();var t=Object.keys(this._caseViews),e=Nt(this._switchValue,t,this._localization);this._activateView(this._caseViews[e])},t.prototype._clearViews=function(){this._activeView&&this._activeView.destroy()},t.prototype._activateView=function(t){t&&(this._activeView=t,this._activeView.create())},t}(),Kt=function(){return function(t,e,n,a){this.value=t;var r=!isNaN(Number(t));a.addCase(r?"="+t:t,new Gt(n,e))}}(),$t=function(){function t(t,e,n){this._differs=t,this._ngEl=e,this._renderer=n}return Object.defineProperty(t.prototype,"ngStyle",{set:function(t){this._ngStyle=t,!this._differ&&t&&(this._differ=this._differs.find(t).create())},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){if(this._differ){var t=this._differ.diff(this._ngStyle);t&&this._applyChanges(t)}},t.prototype._applyChanges=function(t){var e=this;t.forEachRemovedItem(function(t){return e._setStyle(t.key,null)}),t.forEachAddedItem(function(t){return e._setStyle(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e._setStyle(t.key,t.currentValue)})},t.prototype._setStyle=function(t,e){var n=Object(r.__read)(t.split("."),2),a=n[0],i=n[1];null!=(e=null!=e&&i?""+e+i:e)?this._renderer.setStyle(this._ngEl.nativeElement,a,e):this._renderer.removeStyle(this._ngEl.nativeElement,a)},t}(),Zt=function(){function t(t){this._viewContainerRef=t}return t.prototype.ngOnChanges=function(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)},t.prototype._shouldRecreateView=function(t){var e=t.ngTemplateOutletContext;return!!t.ngTemplateOutlet||e&&this._hasContextShapeChanged(e)},t.prototype._hasContextShapeChanged=function(t){var e,n,a=Object.keys(t.previousValue||{}),i=Object.keys(t.currentValue||{});if(a.length===i.length){try{for(var o=Object(r.__values)(i),s=o.next();!s.done;s=o.next())if(-1===a.indexOf(s.value))return!0}catch(u){e={error:u}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return!1}return!0},t.prototype._updateExistingContext=function(t){var e,n;try{for(var a=Object(r.__values)(Object.keys(t)),i=a.next();!i.done;i=a.next()){var o=i.value;this._viewRef.context[o]=this.ngTemplateOutletContext[o]}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},t}(),Xt=[Pt,Mt,qt,zt,Zt,$t,Vt,Bt,Ut,Wt,Kt];function Jt(t,e){return Error("InvalidPipeArgument: '"+e+"' for pipe '"+Object(a["\u0275stringify"])(t)+"'")}var Qt=function(){function t(){}return t.format=function(t,e,n,a){void 0===a&&(a={});var r=a.currency,i=a.currencyAsSymbol,o=void 0!==i&&i,s={minimumIntegerDigits:a.minimumIntegerDigits,minimumFractionDigits:a.minimumFractionDigits,maximumFractionDigits:a.maximumFractionDigits,style:y[n].toLowerCase()};return n==y.Currency&&(s.currency="string"==typeof r?r:void 0,s.currencyDisplay=o?"symbol":"code"),new Intl.NumberFormat(e,s).format(t)},t}(),te=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,ee={yMMMdjms:fe(de([le("year",1),ce("month",3),le("day",1),le("hour",1),le("minute",1),le("second",1)])),yMdjm:fe(de([le("year",1),le("month",1),le("day",1),le("hour",1),le("minute",1)])),yMMMMEEEEd:fe(de([le("year",1),ce("month",4),ce("weekday",4),le("day",1)])),yMMMMd:fe(de([le("year",1),ce("month",4),le("day",1)])),yMMMd:fe(de([le("year",1),ce("month",3),le("day",1)])),yMd:fe(de([le("year",1),le("month",1),le("day",1)])),jms:fe(de([le("hour",1),le("second",1),le("minute",1)])),jm:fe(de([le("hour",1),le("minute",1)]))},ne={yyyy:fe(le("year",4)),yy:fe(le("year",2)),y:fe(le("year",1)),MMMM:fe(ce("month",4)),MMM:fe(ce("month",3)),MM:fe(le("month",2)),M:fe(le("month",1)),LLLL:fe(ce("month",4)),L:fe(ce("month",1)),dd:fe(le("day",2)),d:fe(le("day",1)),HH:ae(ie(fe(ue(le("hour",2),!1)))),H:ie(fe(ue(le("hour",1),!1))),hh:ae(ie(fe(ue(le("hour",2),!0)))),h:ie(fe(ue(le("hour",1),!0))),jj:fe(le("hour",2)),j:fe(le("hour",1)),mm:ae(fe(le("minute",2))),m:fe(le("minute",1)),ss:ae(fe(le("second",2))),s:fe(le("second",1)),sss:fe(le("second",3)),EEEE:fe(ce("weekday",4)),EEE:fe(ce("weekday",3)),EE:fe(ce("weekday",2)),E:fe(ce("weekday",1)),a:re(fe(ue(le("hour",1),!0))),Z:se("short"),z:se("long"),ww:fe({}),w:fe({}),G:fe(ce("era",1)),GG:fe(ce("era",2)),GGG:fe(ce("era",3)),GGGG:fe(ce("era",4))};function ae(t){return function(e,n){var a=t(e,n);return 1==a.length?"0"+a:a}}function re(t){return function(e,n){return t(e,n).split(" ")[1]}}function ie(t){return function(e,n){return t(e,n).split(" ")[0]}}function oe(t,e,n){return new Intl.DateTimeFormat(e,n).format(t).replace(/[\u200e\u200f]/g,"")}function se(t){var e={hour:"2-digit",hour12:!1,timeZoneName:t};return function(t,n){var a=oe(t,n,e);return a?a.substring(3):""}}function ue(t,e){return t.hour12=e,t}function le(t,e){var n={};return n[t]=2===e?"2-digit":"numeric",n}function ce(t,e){var n={};return n[t]=e<4?e>1?"short":"narrow":"long",n}function de(t){return t.reduce(function(t,e){return Object(r.__assign)({},t,e)},{})}function fe(t){return function(e,n){return oe(e,n,t)}}var pe=new Map,he=function(){function t(){}return t.format=function(t,e,n){return function(t,e,n){var a=ee[t];if(a)return a(e,n);var r=t,i=pe.get(r);if(!i){i=[];var o=void 0;te.exec(t);for(var s=t;s;)(o=te.exec(s))?s=(i=i.concat(o.slice(1))).pop():(i.push(s),s=null);pe.set(r,i)}return i.reduce(function(t,a){var r=ne[a];return t+(r?r(e,n):function(t){return"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}(a))},"")}(n,t,e)},t}(),ge=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){if(void 0===n&&(n="mediumDate"),null==t||""===t||t!=t)return null;var a;if("string"==typeof t&&(t=t.trim()),me(t))a=t;else if(isNaN(t-parseFloat(t)))if("string"==typeof t&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){var i=Object(r.__read)(t.split("-").map(function(t){return parseInt(t,10)}),3);a=new Date(i[0],i[1]-1,i[2])}else a=new Date(t);else a=new Date(parseFloat(t));if(!me(a)){var o=void 0;if("string"!=typeof t||!(o=t.match($)))throw Jt(e,t);a=ft(o)}return he.format(a,this._locale,e._ALIASES[n]||n)},t._ALIASES={medium:"yMMMdjms",short:"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},t}();function me(t){return t instanceof Date&&!isNaN(t.valueOf())}function be(t,e,n,a,r,i,o){if(void 0===i&&(i=null),void 0===o&&(o=!1),null==n)return null;if("number"!=typeof(n="string"!=typeof n||isNaN(+n-parseFloat(n))?n:+n))throw Jt(t,n);var s,u,l;if(a!==y.Currency&&(s=1,u=0,l=3),r){var c=r.match(ht);if(null===c)throw new Error(r+" is not a valid digit info for number pipes");null!=c[1]&&(s=It(c[1])),null!=c[3]&&(u=It(c[3])),null!=c[5]&&(l=It(c[5]))}return Qt.format(n,e,a,{minimumIntegerDigits:s,minimumFractionDigits:u,maximumFractionDigits:l,currency:i,currencyAsSymbol:o})}var ye=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){return be(e,this._locale,t,y.Decimal,n)},t}(),ve=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n){return be(e,this._locale,t,y.Percent,n)},t}(),_e=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r){return void 0===n&&(n="USD"),void 0===a&&(a=!1),be(e,this._locale,t,y.Currency,r,n,a)},t}(),xe=[ye,ve,_e,ge],Te=function(){function t(){}return t.prototype.createSubscription=function(t,e){return t.subscribe({next:e,error:function(t){throw t}})},t.prototype.dispose=function(t){t.unsubscribe()},t.prototype.onDestroy=function(t){t.unsubscribe()},t}(),we=new(function(){function t(){}return t.prototype.createSubscription=function(t,e){return t.then(e,function(t){throw t})},t.prototype.dispose=function(t){},t.prototype.onDestroy=function(t){},t}()),Se=new Te,Oe=function(){function t(t){this._ref=t,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}var e;return e=t,t.prototype.ngOnDestroy=function(){this._subscription&&this._dispose()},t.prototype.transform=function(t){return this._obj?t!==this._obj?(this._dispose(),this.transform(t)):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)},t.prototype._subscribe=function(t){var e=this;this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,function(n){return e._updateLatestValue(t,n)})},t.prototype._selectStrategy=function(t){if(Object(a["\u0275isPromise"])(t))return we;if(Object(a["\u0275isObservable"])(t))return Se;throw Jt(e,t)},t.prototype._dispose=function(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null},t.prototype._updateLatestValue=function(t,e){t===this._obj&&(this._latestValue=e,this._ref.markForCheck())},t}(),Ce=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.toLowerCase()},t}(),ke=/(?:[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,Ie=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.replace(ke,function(t){return t[0].toUpperCase()+t.substr(1).toLowerCase()})},t}(),De=function(){function t(){}var e;return e=t,t.prototype.transform=function(t){if(!t)return t;if("string"!=typeof t)throw Jt(e,t);return t.toUpperCase()},t}(),Re=function(){function t(t){this.locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r){if(void 0===n&&(n="mediumDate"),null==t||""===t||t!=t)return null;try{return et(t,n,r||this.locale,a)}catch(i){throw Jt(e,i.message)}},t}(),Ne=/#/g,Ae=function(){function t(t){this._localization=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(null==t)return"";if("object"!=typeof n||null===n)throw Jt(e,n);return n[Nt(t,Object.keys(n),this._localization,a)].replace(Ne,t.toString())},t}(),Ee=function(){function t(){}var e;return e=t,t.prototype.transform=function(t,n){if(null==t)return"";if("object"!=typeof n||"string"!=typeof t)throw Jt(e,n);return n.hasOwnProperty(t)?n[t]:n.hasOwnProperty("other")?n.other:""},t}(),Le=function(){function t(){}return t.prototype.transform=function(t){return JSON.stringify(t,null,2)},t}(),Pe=function(){function t(t){this.differs=t,this.keyValues=[]}return t.prototype.transform=function(t,e){var n=this;if(void 0===e&&(e=Me),!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());var a=this.differ.diff(t);return a&&(this.keyValues=[],a.forEachItem(function(t){n.keyValues.push({key:t.key,value:t.currentValue})}),this.keyValues.sort(e)),this.keyValues},t}();function Me(t,e){var 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;var r=String(n),i=String(a);return r==i?0:r<i?-1:1}var je=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(ze(t))return null;a=a||this._locale;try{return Ct(Ye(t),a,n)}catch(r){throw Jt(e,r.message)}},t}(),qe=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a){if(ze(t))return null;a=a||this._locale;try{return Ot(Ye(t),a,n)}catch(r){throw Jt(e,r.message)}},t}(),Fe=function(){function t(t){this._locale=t}var e;return e=t,t.prototype.transform=function(t,n,a,r,i){if(void 0===a&&(a="symbol"),ze(t))return null;i=i||this._locale,"boolean"==typeof a&&(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".'),a=a?"symbol":"code");var o=n||"USD";"code"!==a&&(o="symbol"===a||"symbol-narrow"===a?U(o,"symbol"===a?"wide":"narrow",i):a);try{return St(Ye(t),i,o,n,r)}catch(s){throw Jt(e,s.message)}},t}();function ze(t){return null==t||""===t||t!=t}function Ye(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}var He=function(){function t(){}var e;return e=t,t.prototype.transform=function(t,n,a){if(null==t)return t;if(!this.supports(t))throw Jt(e,t);return t.slice(n,a)},t.prototype.supports=function(t){return"string"==typeof t||Array.isArray(t)},t}(),Ge=[Oe,De,Ce,Le,He,je,qe,Ie,Fe,Re,Ae,Ee,Pe],Ve=function(){return function(){}}(),Be=function(){return function(){}}(),Ue=new a.InjectionToken("DocumentToken"),We="browser",Ke="server",$e="browserWorkerApp",Ze="browserWorkerUi";function Xe(t){return t===We}function Je(t){return t===Ke}function Qe(t){return t===$e}function tn(t){return t===Ze}var en=new a.Version("7.2.6"),nn=function(){function t(){}return t.ngInjectableDef=Object(a.defineInjectable)({providedIn:"root",factory:function(){return new an(Object(a.inject)(Ue),window)}}),t}(),an=function(){function t(t,e){this.document=t,this.window=e,this.offset=function(){return[0,0]}}return t.prototype.setOffset=function(t){this.offset=Array.isArray(t)?function(){return t}:t},t.prototype.getScrollPosition=function(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]},t.prototype.scrollToPosition=function(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])},t.prototype.scrollToAnchor=function(t){if(this.supportScrollRestoration()){var e=this.document.querySelector("#"+t);if(e)return void this.scrollToElement(e);var n=this.document.querySelector("[name='"+t+"']");if(n)return void this.scrollToElement(n)}},t.prototype.setHistoryScrollRestoration=function(t){if(this.supportScrollRestoration()){var e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}},t.prototype.scrollToElement=function(t){var 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])},t.prototype.supportScrollRestoration=function(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}},t}(),rn=function(){function t(){}return t.prototype.setOffset=function(t){},t.prototype.getScrollPosition=function(){return[0,0]},t.prototype.scrollToPosition=function(t){},t.prototype.scrollToAnchor=function(t){},t.prototype.setHistoryScrollRestoration=function(t){},t}()},"Ivi+":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\uc77c";case"M":return t+"\uc6d4";case"w":case"W":return t+"\uc8fc";default:return t}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(t){return"\uc624\ud6c4"===t},meridiem:function(t,e,n){return t<12?"\uc624\uc804":"\uc624\ud6c4"}})}()},IxPp:function(t,e,n){"use strict";n.d(e,"b",function(){return u}),n.d(e,"a",function(){return f});var a=n("mrSG"),r=n("FFOo"),i=n("pugT"),o=n("6blF"),s=n("K9Ia");function u(t,e,n,a){return function(r){return r.lift(new l(t,e,n,a))}}var l=function(){function t(t,e,n,a){this.keySelector=t,this.elementSelector=e,this.durationSelector=n,this.subjectSelector=a}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.keySelector,this.elementSelector,this.durationSelector,this.subjectSelector))},t}(),c=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.keySelector=n,o.elementSelector=a,o.durationSelector=r,o.subjectSelector=i,o.groups=null,o.attemptedToUnsubscribe=!1,o.count=0,o}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.keySelector(t)}catch(n){return void this.error(n)}this._group(t,e)},e.prototype._group=function(t,e){var n=this.groups;n||(n=this.groups=new Map);var a,r=n.get(e);if(this.elementSelector)try{a=this.elementSelector(t)}catch(u){this.error(u)}else a=t;if(!r){r=this.subjectSelector?this.subjectSelector():new s.a,n.set(e,r);var i=new f(e,r,this);if(this.destination.next(i),this.durationSelector){var o=void 0;try{o=this.durationSelector(new f(e,r))}catch(u){return void this.error(u)}this.add(o.subscribe(new d(e,r,this)))}}r.closed||r.next(a)},e.prototype._error=function(t){var e=this.groups;e&&(e.forEach(function(e,n){e.error(t)}),e.clear()),this.destination.error(t)},e.prototype._complete=function(){var t=this.groups;t&&(t.forEach(function(t,e){t.complete()}),t.clear()),this.destination.complete()},e.prototype.removeGroup=function(t){this.groups.delete(t)},e.prototype.unsubscribe=function(){this.closed||(this.attemptedToUnsubscribe=!0,0===this.count&&t.prototype.unsubscribe.call(this))},e}(r.a),d=function(t){function e(e,n,a){var r=t.call(this,n)||this;return r.key=e,r.group=n,r.parent=a,r}return a.__extends(e,t),e.prototype._next=function(t){this.complete()},e.prototype._unsubscribe=function(){var t=this.parent,e=this.key;this.key=this.parent=null,t&&t.removeGroup(e)},e}(r.a),f=function(t){function e(e,n,a){var r=t.call(this)||this;return r.key=e,r.groupSubject=n,r.refCountSubscription=a,r}return a.__extends(e,t),e.prototype._subscribe=function(t){var e=new i.a,n=this.refCountSubscription,a=this.groupSubject;return n&&!n.closed&&e.add(new p(n)),e.add(a.subscribe(t)),e},e}(o.a),p=function(t){function e(e){var n=t.call(this)||this;return n.parent=e,e.count++,n}return a.__extends(e,t),e.prototype.unsubscribe=function(){var e=this.parent;e.closed||this.closed||(t.prototype.unsubscribe.call(this),e.count-=1,0===e.count&&e.attemptedToUnsubscribe&&e.unsubscribe())},e}(i.a)},IzCI:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(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"])},t}()},"JCF/":function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},a=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];t.defineLocale("ku",{months:a,monthsShort:a,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".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:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(t){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(t)},meridiem:function(t,e,n){return t<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},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")}}n("wd/R").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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] 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}})}()},JZ5S:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("buEt"),i=n("QG5k");e.NodeMenuService=function(){function t(){this.nodeMenuEvents$=new r.Subject}return t.prototype.fireMenuEvent=function(t,e){this.nodeMenuEvents$.next({sender:t,action:e})},t.prototype.hideMenuStream=function(t){return this.nodeMenuEvents$.filter(function(e){return t.nativeElement!==e.sender}).filter(function(t){return t.action===i.NodeMenuAction.Close})},t.prototype.hideMenuForAllNodesExcept=function(t){this.nodeMenuEvents$.next({sender:t.nativeElement,action:i.NodeMenuAction.Close})},t.decorators=[{type:a.Injectable}],t}()},JcRv:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("xTla"),r=function(t){return function(e){var n=t[a.a]();if("function"!=typeof n.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return n.subscribe(e)}}},"Jm/i":function(t,e,n){"use strict";n.d(e,"a",function(){return On}),n.d(e,"b",function(){return Sn});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitText(this,e)},t}(),s=function(){function t(t,e,n,a,r){this.switchValue=t,this.type=e,this.cases=n,this.sourceSpan=a,this.switchValueSourceSpan=r}return t.prototype.visit=function(t,e){return t.visitExpansion(this,e)},t}(),u=function(){function t(t,e,n,a,r){this.value=t,this.expression=e,this.sourceSpan=n,this.valueSourceSpan=a,this.expSourceSpan=r}return t.prototype.visit=function(t,e){return t.visitExpansionCase(this,e)},t}(),l=function(){function t(t,e,n,a){this.name=t,this.value=e,this.sourceSpan=n,this.valueSpan=a}return t.prototype.visit=function(t,e){return t.visitAttribute(this,e)},t}(),c=function(){function t(t,e,n,a,r,i){void 0===r&&(r=null),void 0===i&&(i=null),this.name=t,this.attrs=e,this.children=n,this.sourceSpan=a,this.startSourceSpan=r,this.endSourceSpan=i}return t.prototype.visit=function(t,e){return t.visitElement(this,e)},t}(),d=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitComment(this,e)},t}();function f(t,e,n){void 0===n&&(n=null);var a=[],r=t.visit?function(e){return t.visit(e,n)||e.visit(t,n)}:function(e){return e.visit(t,n)};return e.forEach(function(t){var e=r(t);e&&a.push(e)}),a}var p=function(){return function(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}]:[]}}(),h=function(){function t(t,e){this.value=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitText(this,e)},t}(),g=function(){function t(t,e){this.children=t,this.sourceSpan=e}return t.prototype.visit=function(t,e){return t.visitContainer(this,e)},t}(),m=function(){function t(t,e,n,a){this.expression=t,this.type=e,this.cases=n,this.sourceSpan=a}return t.prototype.visit=function(t,e){return t.visitIcu(this,e)},t}(),b=function(){function t(t,e,n,a,r,i,o){this.tag=t,this.attrs=e,this.startName=n,this.closeName=a,this.children=r,this.isVoid=i,this.sourceSpan=o}return t.prototype.visit=function(t,e){return t.visitTagPlaceholder(this,e)},t}(),y=function(){function t(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}return t.prototype.visit=function(t,e){return t.visitPlaceholder(this,e)},t}(),v=function(){function t(t,e,n){this.value=t,this.name=e,this.sourceSpan=n}return t.prototype.visit=function(t,e){return t.visitIcuPlaceholder(this,e)},t}(),_=function(){function t(){}return t.prototype.visitText=function(t,e){},t.prototype.visitContainer=function(t,e){var n=this;t.children.forEach(function(t){return t.visit(n)})},t.prototype.visitIcu=function(t,e){var n=this;Object.keys(t.cases).forEach(function(e){t.cases[e].visit(n)})},t.prototype.visitTagPlaceholder=function(t,e){var n=this;t.children.forEach(function(t){return t.visit(n)})},t.prototype.visitPlaceholder=function(t,e){},t.prototype.visitIcuPlaceholder=function(t,e){},t}(),x=function(){function t(t,e,n,a){this.file=t,this.offset=e,this.line=n,this.col=a}return t.prototype.toString=function(){return null!=this.offset?this.line+":"+this.col:""},t.prototype.getContext=function(t,e){var n=this.file.content,a=this.offset;if(null!=a){a>n.length-1&&(a=n.length-1);for(var r=a,i=0,o=0;i<t&&a>0&&(i++,"\n"!==n[--a]||++o!==e););for(i=0,o=0;i<t&&r<n.length-1&&(i++,"\n"!==n[++r]||++o!==e););return{before:n.substring(a,this.offset),after:n.substring(this.offset,r+1)}}return null},t}(),T=function(){return function(t,e){void 0===e&&(e=""),this.content=t,this.url=e}}(),w=function(){function t(t,e,n){void 0===n&&(n=null),this.start=t,this.end=e,this.details=n}return t.prototype.toString=function(){return this.start.file.content.substring(this.start.offset,this.end.offset)},t}(),S=function(){var t={WARNING:0,ERROR:1};return t[t.WARNING]="WARNING",t[t.ERROR]="ERROR",t}(),O=function(){function t(t,e,n){void 0===n&&(n=S.ERROR),this.span=t,this.msg=e,this.level=n}return t.prototype.contextualMessage=function(){var t=this.span.start.getContext(100,3);return t?' ("'+t.before+"["+S[this.level]+" ->]"+t.after+'")':""},t.prototype.toString=function(){var t=this.span.details?", "+this.span.details:"";return""+this.msg+this.contextualMessage()+": "+this.span.start+t},t}(),C=function(t){function e(e,n){return t.call(this,e,n)||this}return Object(a.__extends)(e,t),e}(O);function k(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}var I=new(function(){return function(t,e){this.start=t,this.end=e}}())("{{","}}"),D=0,R=9,N=10,A=11,E=12,L=13,P=32,M=34,j=36,q=39,F=43,z=45,Y=47,H=59,G=61,V=62,B=48,U=57,W=65,K=70,$=90,Z=95,X=97,J=102,Q=110,tt=114,et=116,nt=118,at=122,rt=123,it=160;function ot(t){return t>=R&&t<=P||t===it}function st(t){return B<=t&&t<=U}function ut(t){return t>=X&&t<=at||t>=W&&t<=$}var lt=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 ct(t){if(":"!==t[0])return[null,t];var 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 dt(t){return null===t?null:ct(t)[0]}function ft(t,e){return t?":"+t+":"+e:e}var pt={Aacute:"\xc1",aacute:"\xe1",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",AElig:"\xc6",aelig:"\xe6",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",Alpha:"\u0391",alpha:"\u03b1",amp:"&",and:"\u2227",ang:"\u2220",apos:"'",Aring:"\xc5",aring:"\xe5",asymp:"\u2248",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",bdquo:"\u201e",Beta:"\u0392",beta:"\u03b2",brvbar:"\xa6",bull:"\u2022",cap:"\u2229",Ccedil:"\xc7",ccedil:"\xe7",cedil:"\xb8",cent:"\xa2",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",clubs:"\u2663",cong:"\u2245",copy:"\xa9",crarr:"\u21b5",cup:"\u222a",curren:"\xa4",dagger:"\u2020",Dagger:"\u2021",darr:"\u2193",dArr:"\u21d3",deg:"\xb0",Delta:"\u0394",delta:"\u03b4",diams:"\u2666",divide:"\xf7",Eacute:"\xc9",eacute:"\xe9",Ecirc:"\xca",ecirc:"\xea",Egrave:"\xc8",egrave:"\xe8",empty:"\u2205",emsp:"\u2003",ensp:"\u2002",Epsilon:"\u0395",epsilon:"\u03b5",equiv:"\u2261",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",exist:"\u2203",fnof:"\u0192",forall:"\u2200",frac12:"\xbd",frac14:"\xbc",frac34:"\xbe",frasl:"\u2044",Gamma:"\u0393",gamma:"\u03b3",ge:"\u2265",gt:">",harr:"\u2194",hArr:"\u21d4",hearts:"\u2665",hellip:"\u2026",Iacute:"\xcd",iacute:"\xed",Icirc:"\xce",icirc:"\xee",iexcl:"\xa1",Igrave:"\xcc",igrave:"\xec",image:"\u2111",infin:"\u221e",int:"\u222b",Iota:"\u0399",iota:"\u03b9",iquest:"\xbf",isin:"\u2208",Iuml:"\xcf",iuml:"\xef",Kappa:"\u039a",kappa:"\u03ba",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",laquo:"\xab",larr:"\u2190",lArr:"\u21d0",lceil:"\u2308",ldquo:"\u201c",le:"\u2264",lfloor:"\u230a",lowast:"\u2217",loz:"\u25ca",lrm:"\u200e",lsaquo:"\u2039",lsquo:"\u2018",lt:"<",macr:"\xaf",mdash:"\u2014",micro:"\xb5",middot:"\xb7",minus:"\u2212",Mu:"\u039c",mu:"\u03bc",nabla:"\u2207",nbsp:"\xa0",ndash:"\u2013",ne:"\u2260",ni:"\u220b",not:"\xac",notin:"\u2209",nsub:"\u2284",Ntilde:"\xd1",ntilde:"\xf1",Nu:"\u039d",nu:"\u03bd",Oacute:"\xd3",oacute:"\xf3",Ocirc:"\xd4",ocirc:"\xf4",OElig:"\u0152",oelig:"\u0153",Ograve:"\xd2",ograve:"\xf2",oline:"\u203e",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",oplus:"\u2295",or:"\u2228",ordf:"\xaa",ordm:"\xba",Oslash:"\xd8",oslash:"\xf8",Otilde:"\xd5",otilde:"\xf5",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",para:"\xb6",permil:"\u2030",perp:"\u22a5",Phi:"\u03a6",phi:"\u03c6",Pi:"\u03a0",pi:"\u03c0",piv:"\u03d6",plusmn:"\xb1",pound:"\xa3",prime:"\u2032",Prime:"\u2033",prod:"\u220f",prop:"\u221d",Psi:"\u03a8",psi:"\u03c8",quot:'"',radic:"\u221a",rang:"\u27e9",raquo:"\xbb",rarr:"\u2192",rArr:"\u21d2",rceil:"\u2309",rdquo:"\u201d",real:"\u211c",reg:"\xae",rfloor:"\u230b",Rho:"\u03a1",rho:"\u03c1",rlm:"\u200f",rsaquo:"\u203a",rsquo:"\u2019",sbquo:"\u201a",Scaron:"\u0160",scaron:"\u0161",sdot:"\u22c5",sect:"\xa7",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sim:"\u223c",spades:"\u2660",sub:"\u2282",sube:"\u2286",sum:"\u2211",sup:"\u2283",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",supe:"\u2287",szlig:"\xdf",Tau:"\u03a4",tau:"\u03c4",there4:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thinsp:"\u2009",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",times:"\xd7",trade:"\u2122",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",uArr:"\u21d1",Ucirc:"\xdb",ucirc:"\xfb",Ugrave:"\xd9",ugrave:"\xf9",uml:"\xa8",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",Uuml:"\xdc",uuml:"\xfc",weierp:"\u2118",Xi:"\u039e",xi:"\u03be",Yacute:"\xdd",yacute:"\xfd",yen:"\xa5",yuml:"\xff",Yuml:"\u0178",Zeta:"\u0396",zeta:"\u03b6",zwj:"\u200d",zwnj:"\u200c",ngsp:"\ue500"},ht=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}(),gt=function(){return function(t,e,n){this.type=t,this.parts=e,this.sourceSpan=n}}(),mt=function(t){function e(e,n,a){var r=t.call(this,a,e)||this;return r.tokenType=n,r}return Object(a.__extends)(e,t),e}(O),bt=function(){return function(t,e){this.tokens=t,this.errors=e}}(),yt=/\r\n?/g;function vt(t){return'Unexpected character "'+(t===D?"EOF":String.fromCharCode(t))+'"'}function _t(t){return'Unknown entity "'+t+'" - use the "&#<decimal>;" or  "&#x<hex>;" syntax'}var xt=function(){return function(t){this.error=t}}(),Tt=function(){function t(t,e,n,a){void 0===a&&(a=I),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()}return t.prototype._processCarriageReturns=function(t){return t.replace(yt,"\n")},t.prototype.tokenize=function(){for(;this._peek!==D;){var t=this._getLocation();try{this._attemptCharCode(60)?this._attemptCharCode(33)?this._attemptCharCode(91)?this._consumeCdata(t):this._attemptCharCode(z)?this._consumeComment(t):this._consumeDocType(t):this._attemptCharCode(Y)?this._consumeTagClose(t):this._consumeTagOpen(t):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(e){if(!(e instanceof xt))throw e;this.errors.push(e.error)}}return this._beginToken(ht.EOF),this._endToken([]),new bt(function(t){for(var e=[],n=void 0,a=0;a<t.length;a++){var r=t[a];n&&n.type===ht.TEXT&&r.type===ht.TEXT?(n.parts[0]+=r.parts[0],n.sourceSpan.end=r.sourceSpan.end):e.push(n=r)}return e}(this.tokens),this.errors)},t.prototype._tokenizeExpansionForm=function(){if(kt(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if(((t=this._peek)===G||ut(t)||st(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},t.prototype._getLocation=function(){return new x(this._file,this._index,this._line,this._column)},t.prototype._getSpan=function(t,e){return void 0===t&&(t=this._getLocation()),void 0===e&&(e=this._getLocation()),new w(t,e)},t.prototype._beginToken=function(t,e){void 0===e&&(e=this._getLocation()),this._currentTokenStart=e,this._currentTokenType=t},t.prototype._endToken=function(t,e){void 0===e&&(e=this._getLocation());var n=new gt(this._currentTokenType,t,new w(this._currentTokenStart,e));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n},t.prototype._createError=function(t,e){this._isInExpansionForm()&&(t+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');var n=new mt(t,this._currentTokenType,e);return this._currentTokenStart=null,this._currentTokenType=null,new xt(n)},t.prototype._advance=function(){if(this._index>=this._length)throw this._createError(vt(D),this._getSpan());this._peek===N?(this._line++,this._column=0):this._peek!==N&&this._peek!==L&&this._column++,this._index++,this._peek=this._index>=this._length?D:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?D:this._input.charCodeAt(this._index+1)},t.prototype._attemptCharCode=function(t){return this._peek===t&&(this._advance(),!0)},t.prototype._attemptCharCodeCaseInsensitive=function(t){return e=t,It(this._peek)===It(e)&&(this._advance(),!0);var e},t.prototype._requireCharCode=function(t){var e=this._getLocation();if(!this._attemptCharCode(t))throw this._createError(vt(this._peek),this._getSpan(e,e))},t.prototype._attemptStr=function(t){var e=t.length;if(this._index+e>this._length)return!1;for(var n=this._savePosition(),a=0;a<e;a++)if(!this._attemptCharCode(t.charCodeAt(a)))return this._restorePosition(n),!1;return!0},t.prototype._attemptStrCaseInsensitive=function(t){for(var e=0;e<t.length;e++)if(!this._attemptCharCodeCaseInsensitive(t.charCodeAt(e)))return!1;return!0},t.prototype._requireStr=function(t){var e=this._getLocation();if(!this._attemptStr(t))throw this._createError(vt(this._peek),this._getSpan(e))},t.prototype._attemptCharCodeUntilFn=function(t){for(;!t(this._peek);)this._advance()},t.prototype._requireCharCodeUntilFn=function(t,e){var n=this._getLocation();if(this._attemptCharCodeUntilFn(t),this._index-n.offset<e)throw this._createError(vt(this._peek),this._getSpan(n,n))},t.prototype._attemptUntilChar=function(t){for(;this._peek!==t;)this._advance()},t.prototype._readChar=function(t){if(t&&38===this._peek)return this._decodeEntity();var e=this._index;return this._advance(),this._input[e]},t.prototype._decodeEntity=function(){var t=this._getLocation();if(this._advance(),!this._attemptCharCode(35)){var e=this._savePosition();if(this._attemptCharCodeUntilFn(Ct),this._peek!==H)return this._restorePosition(e),"&";this._advance();var n=this._input.substring(t.offset+1,this._index-1),a=pt[n];if(!a)throw this._createError(_t(n),this._getSpan(t));return a}var r=this._attemptCharCode(120)||this._attemptCharCode(88),i=this._getLocation().offset;if(this._attemptCharCodeUntilFn(Ot),this._peek!==H)throw this._createError(vt(this._peek),this._getSpan());this._advance();var o=this._input.substring(i,this._index-1);try{var s=parseInt(o,r?16:10);return String.fromCharCode(s)}catch(l){var u=this._input.substring(t.offset+1,this._index-1);throw this._createError(_t(u),this._getSpan(t))}},t.prototype._consumeRawText=function(t,e,n){var a,r=this._getLocation();this._beginToken(t?ht.ESCAPABLE_RAW_TEXT:ht.RAW_TEXT,r);for(var i=[];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)},t.prototype._consumeComment=function(t){var e=this;this._beginToken(ht.COMMENT_START,t),this._requireCharCode(z),this._endToken([]);var n=this._consumeRawText(!1,z,function(){return e._attemptStr("->")});this._beginToken(ht.COMMENT_END,n.sourceSpan.end),this._endToken([])},t.prototype._consumeCdata=function(t){var e=this;this._beginToken(ht.CDATA_START,t),this._requireStr("CDATA["),this._endToken([]);var n=this._consumeRawText(!1,93,function(){return e._attemptStr("]>")});this._beginToken(ht.CDATA_END,n.sourceSpan.end),this._endToken([])},t.prototype._consumeDocType=function(t){this._beginToken(ht.DOC_TYPE,t),this._attemptUntilChar(V),this._advance(),this._endToken([this._input.substring(t.offset+2,this._index-1)])},t.prototype._consumePrefixAndName=function(){for(var t,e,n=this._index,a=null;58!==this._peek&&!(((t=this._peek)<X||at<t)&&(t<W||$<t)&&(t<B||t>U));)this._advance();return 58===this._peek?(this._advance(),a=this._input.substring(n,this._index-1),e=this._index):e=n,this._requireCharCodeUntilFn(St,this._index===e?1:0),[a,this._input.substring(e,this._index)]},t.prototype._consumeTagOpen=function(t){var e,n,a=this._savePosition();try{if(!ut(this._peek))throw this._createError(vt(this._peek),this._getSpan());var r=this._index;for(this._consumeTagOpenStart(t),n=(e=this._input.substring(r,this._index)).toLowerCase(),this._attemptCharCodeUntilFn(wt);this._peek!==Y&&this._peek!==V;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(wt),this._attemptCharCode(G)&&(this._attemptCharCodeUntilFn(wt),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(wt);this._consumeTagOpenEnd()}catch(o){if(o instanceof xt)return this._restorePosition(a),this._beginToken(ht.TEXT,t),void this._endToken(["<"]);throw o}var i=this._getTagDefinition(e).contentType;i===lt.RAW_TEXT?this._consumeRawTextWithTagClose(n,!1):i===lt.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(n,!0)},t.prototype._consumeRawTextWithTagClose=function(t,e){var n=this,a=this._consumeRawText(e,60,function(){return!!n._attemptCharCode(Y)&&(n._attemptCharCodeUntilFn(wt),!!n._attemptStrCaseInsensitive(t)&&(n._attemptCharCodeUntilFn(wt),n._attemptCharCode(V)))});this._beginToken(ht.TAG_CLOSE,a.sourceSpan.end),this._endToken([null,t])},t.prototype._consumeTagOpenStart=function(t){this._beginToken(ht.TAG_OPEN_START,t);var e=this._consumePrefixAndName();this._endToken(e)},t.prototype._consumeAttributeName=function(){this._beginToken(ht.ATTR_NAME);var t=this._consumePrefixAndName();this._endToken(t)},t.prototype._consumeAttributeValue=function(){var t;if(this._beginToken(ht.ATTR_VALUE),this._peek===q||this._peek===M){var e=this._peek;this._advance();for(var n=[];this._peek!==e;)n.push(this._readChar(!0));t=n.join(""),this._advance()}else{var a=this._index;this._requireCharCodeUntilFn(St,1),t=this._input.substring(a,this._index)}this._endToken([this._processCarriageReturns(t)])},t.prototype._consumeTagOpenEnd=function(){var t=this._attemptCharCode(Y)?ht.TAG_OPEN_END_VOID:ht.TAG_OPEN_END;this._beginToken(t),this._requireCharCode(V),this._endToken([])},t.prototype._consumeTagClose=function(t){this._beginToken(ht.TAG_CLOSE,t),this._attemptCharCodeUntilFn(wt);var e=this._consumePrefixAndName();this._attemptCharCodeUntilFn(wt),this._requireCharCode(V),this._endToken(e)},t.prototype._consumeExpansionFormStart=function(){this._beginToken(ht.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(rt),this._endToken([]),this._expansionCaseStack.push(ht.EXPANSION_FORM_START),this._beginToken(ht.RAW_TEXT,this._getLocation());var t=this._readUntil(44);this._endToken([t],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(wt),this._beginToken(ht.RAW_TEXT,this._getLocation());var e=this._readUntil(44);this._endToken([e],this._getLocation()),this._requireCharCode(44),this._attemptCharCodeUntilFn(wt)},t.prototype._consumeExpansionCaseStart=function(){this._beginToken(ht.EXPANSION_CASE_VALUE,this._getLocation());var t=this._readUntil(rt).trim();this._endToken([t],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._beginToken(ht.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(rt),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._expansionCaseStack.push(ht.EXPANSION_CASE_EXP_START)},t.prototype._consumeExpansionCaseEnd=function(){this._beginToken(ht.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(125),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(wt),this._expansionCaseStack.pop()},t.prototype._consumeExpansionFormEnd=function(){this._beginToken(ht.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(125),this._endToken([]),this._expansionCaseStack.pop()},t.prototype._consumeText=function(){var t=this._getLocation();this._beginToken(ht.TEXT,t);var 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(""))])},t.prototype._isTextEnd=function(){if(60===this._peek||this._peek===D)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if(kt(this._input,this._index,this._interpolationConfig))return!0;if(125===this._peek&&this._isInExpansionCase())return!0}return!1},t.prototype._savePosition=function(){return[this._peek,this._index,this._column,this._line,this.tokens.length]},t.prototype._readUntil=function(t){var e=this._index;return this._attemptUntilChar(t),this._input.substring(e,this._index)},t.prototype._restorePosition=function(t){this._peek=t[0],this._index=t[1],this._column=t[2],this._line=t[3];var e=t[4];e<this.tokens.length&&(this.tokens=this.tokens.slice(0,e))},t.prototype._isInExpansionCase=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===ht.EXPANSION_CASE_EXP_START},t.prototype._isInExpansionForm=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===ht.EXPANSION_FORM_START},t}();function wt(t){return!ot(t)||t===D}function St(t){return ot(t)||t===V||t===Y||t===q||t===M||t===G}function Ot(t){return t===H||t===D||!function(t){return t>=X&&t<=J||t>=W&&t<=K||st(t)}(t)}function Ct(t){return t===H||t===D||!ut(t)}function kt(t,e,n){var a=!!n&&t.indexOf(n.start,e)===e;return t.charCodeAt(e)===rt&&!a}function It(t){return t>=X&&t<=at?t-X+W:t}var Dt=function(t){function e(e,n,a){var r=t.call(this,n,a)||this;return r.elementName=e,r}return Object(a.__extends)(e,t),e.create=function(t,n,a){return new e(t,n,a)},e}(O),Rt=function(){return function(t,e){this.rootNodes=t,this.errors=e}}(),Nt=function(){function t(t){this.getTagDefinition=t}return t.prototype.parse=function(t,e,n,a){void 0===n&&(n=!1),void 0===a&&(a=I);var r=function(t,e,n,a,r){return void 0===a&&(a=!1),void 0===r&&(r=I),new Tt(new T(t,e),n,a,r).tokenize()}(t,e,this.getTagDefinition,n,a),i=new At(r.tokens,this.getTagDefinition).build();return new Rt(i.rootNodes,r.errors.concat(i.errors))},t}(),At=function(){function t(t,e){this.tokens=t,this.getTagDefinition=e,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}return t.prototype.build=function(){for(;this._peek.type!==ht.EOF;)this._peek.type===ht.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===ht.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===ht.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===ht.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===ht.TEXT||this._peek.type===ht.RAW_TEXT||this._peek.type===ht.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===ht.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new Rt(this._rootNodes,this._errors)},t.prototype._advance=function(){var t=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],t},t.prototype._advanceIf=function(t){return this._peek.type===t?this._advance():null},t.prototype._consumeCdata=function(t){this._consumeText(this._advance()),this._advanceIf(ht.CDATA_END)},t.prototype._consumeComment=function(t){var e=this._advanceIf(ht.RAW_TEXT);this._advanceIf(ht.COMMENT_END);var n=null!==e?e.parts[0].trim():null;this._addToParent(new d(n,t.sourceSpan))},t.prototype._consumeExpansion=function(t){for(var e=this._advance(),n=this._advance(),a=[];this._peek.type===ht.EXPANSION_CASE_VALUE;){var r=this._parseExpansionCase();if(!r)return;a.push(r)}if(this._peek.type===ht.EXPANSION_FORM_END){var i=new w(t.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new s(e.parts[0],n.parts[0],a,i,e.sourceSpan)),this._advance()}else this._errors.push(Dt.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."))},t.prototype._parseExpansionCase=function(){var e=this._advance();if(this._peek.type!==ht.EXPANSION_CASE_EXP_START)return this._errors.push(Dt.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;var n=this._advance(),a=this._collectExpansionExpTokens(n);if(!a)return null;var r=this._advance();a.push(new gt(ht.EOF,[],r.sourceSpan));var i=new t(a,this.getTagDefinition).build();if(i.errors.length>0)return this._errors=this._errors.concat(i.errors),null;var o=new w(e.sourceSpan.start,r.sourceSpan.end),s=new w(n.sourceSpan.start,r.sourceSpan.end);return new u(e.parts[0],i.rootNodes,o,e.sourceSpan,s)},t.prototype._collectExpansionExpTokens=function(t){for(var e=[],n=[ht.EXPANSION_CASE_EXP_START];;){if(this._peek.type!==ht.EXPANSION_FORM_START&&this._peek.type!==ht.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===ht.EXPANSION_CASE_EXP_END){if(!Et(n,ht.EXPANSION_CASE_EXP_START))return this._errors.push(Dt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0===n.length)return e}if(this._peek.type===ht.EXPANSION_FORM_END){if(!Et(n,ht.EXPANSION_FORM_START))return this._errors.push(Dt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===ht.EOF)return this._errors.push(Dt.create(null,t.sourceSpan,"Invalid ICU message. Missing '}'.")),null;e.push(this._advance())}},t.prototype._consumeText=function(t){var e=t.parts[0];if(e.length>0&&"\n"===e[0]){var n=this._getParentElement();null!==n&&0===n.children.length&&this.getTagDefinition(n.name).ignoreFirstLf&&(e=e.substring(1))}e.length>0&&this._addToParent(new o(e,t.sourceSpan))},t.prototype._closeVoidElement=function(){var t=this._getParentElement();t&&this.getTagDefinition(t.name).isVoid&&this._elementStack.pop()},t.prototype._consumeStartTag=function(t){for(var e=t.parts[0],n=t.parts[1],a=[];this._peek.type===ht.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));var r=this._getElementFullName(e,n,this._getParentElement()),i=!1;if(this._peek.type===ht.TAG_OPEN_END_VOID){this._advance(),i=!0;var o=this.getTagDefinition(r);o.canSelfClose||null!==dt(r)||o.isVoid||this._errors.push(Dt.create(r,t.sourceSpan,'Only void and foreign elements can be self closed "'+t.parts[1]+'"'))}else this._peek.type===ht.TAG_OPEN_END&&(this._advance(),i=!1);var s=new w(t.sourceSpan.start,this._peek.sourceSpan.start),u=new c(r,a,[],s,s,void 0);this._pushElement(u),i&&(this._popElement(r),u.endSourceSpan=s)},t.prototype._pushElement=function(t){var e=this._getParentElement();e&&this.getTagDefinition(e.name).isClosedByChild(t.name)&&this._elementStack.pop();var n=this.getTagDefinition(t.name),a=this._getParentElementSkippingContainers(),r=a.parent,i=a.container;if(r&&n.requireExtraParent(r.name)){var o=new c(n.parentToAdd,[],[],t.sourceSpan,t.startSourceSpan,t.endSourceSpan);this._insertBeforeContainer(r,i,o)}this._addToParent(t),this._elementStack.push(t)},t.prototype._consumeEndTag=function(t){var 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(Dt.create(e,t.sourceSpan,'Void elements do not have end tags "'+t.parts[1]+'"')):this._popElement(e)||this._errors.push(Dt.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'))},t.prototype._popElement=function(t){for(var e=this._elementStack.length-1;e>=0;e--){var 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},t.prototype._consumeAttr=function(t){var e=ft(t.parts[0],t.parts[1]),n=t.sourceSpan.end,a="",r=void 0;if(this._peek.type===ht.ATTR_VALUE){var i=this._advance();a=i.parts[0],n=i.sourceSpan.end,r=i.sourceSpan}return new l(e,a,new w(t.sourceSpan.start,n),r)},t.prototype._getParentElement=function(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null},t.prototype._getParentElementSkippingContainers=function(){for(var t=null,e=this._elementStack.length-1;e>=0;e--){if("ng-container"!==ct(this._elementStack[e].name)[1])return{parent:this._elementStack[e],container:t};t=this._elementStack[e]}return{parent:null,container:t}},t.prototype._addToParent=function(t){var e=this._getParentElement();null!==e?e.children.push(t):this._rootNodes.push(t)},t.prototype._insertBeforeContainer=function(t,e,n){if(e){if(t){var 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)},t.prototype._getElementFullName=function(t,e,n){return null===t&&null===(t=this.getTagDefinition(e).implicitNamespacePrefix)&&null!==n&&(t=dt(n.name)),ft(t,e)},t}();function Et(t,e){return t.length>0&&t[t.length-1]===e}var Lt=new(function(){function t(){this.closedByParent=!1,this.contentType=lt.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}return t.prototype.requireExtraParent=function(t){return!1},t.prototype.isClosedByChild=function(t){return!1},t}());function Pt(t){return Lt}var Mt=function(){function t(t){var e=void 0===t?{}:t,n=e.closedByChildren,a=e.requiredParents,r=e.implicitNamespacePrefix,i=e.contentType,o=void 0===i?lt.PARSABLE_DATA:i,s=e.closedByParent,u=void 0!==s&&s,l=e.isVoid,c=void 0!==l&&l,d=e.ignoreFirstLf,f=void 0!==d&&d,p=this;this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,n&&n.length>0&&n.forEach(function(t){return p.closedByChildren[t]=!0}),this.isVoid=c,this.closedByParent=u||c,a&&a.length>0&&(this.requiredParents={},this.parentToAdd=a[0],a.forEach(function(t){return p.requiredParents[t]=!0})),this.implicitNamespacePrefix=r||null,this.contentType=o,this.ignoreFirstLf=f}return t.prototype.requireExtraParent=function(t){if(!this.requiredParents)return!1;if(!t)return!0;var e=t.toLowerCase();return!("template"===e||"ng-template"===t)&&!0!==this.requiredParents[e]},t.prototype.isClosedByChild=function(t){return this.isVoid||t.toLowerCase()in this.closedByChildren},t}(),jt={base:new Mt({isVoid:!0}),meta:new Mt({isVoid:!0}),area:new Mt({isVoid:!0}),embed:new Mt({isVoid:!0}),link:new Mt({isVoid:!0}),img:new Mt({isVoid:!0}),input:new Mt({isVoid:!0}),param:new Mt({isVoid:!0}),hr:new Mt({isVoid:!0}),br:new Mt({isVoid:!0}),source:new Mt({isVoid:!0}),track:new Mt({isVoid:!0}),wbr:new Mt({isVoid:!0}),p:new Mt({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 Mt({closedByChildren:["tbody","tfoot"]}),tbody:new Mt({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new Mt({closedByChildren:["tbody"],closedByParent:!0}),tr:new Mt({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new Mt({closedByChildren:["td","th"],closedByParent:!0}),th:new Mt({closedByChildren:["td","th"],closedByParent:!0}),col:new Mt({requiredParents:["colgroup"],isVoid:!0}),svg:new Mt({implicitNamespacePrefix:"svg"}),math:new Mt({implicitNamespacePrefix:"math"}),li:new Mt({closedByChildren:["li"],closedByParent:!0}),dt:new Mt({closedByChildren:["dt","dd"]}),dd:new Mt({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new Mt({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new Mt({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new Mt({closedByChildren:["optgroup"],closedByParent:!0}),option:new Mt({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new Mt({ignoreFirstLf:!0}),listing:new Mt({ignoreFirstLf:!0}),style:new Mt({contentType:lt.RAW_TEXT}),script:new Mt({contentType:lt.RAW_TEXT}),title:new Mt({contentType:lt.ESCAPABLE_RAW_TEXT}),textarea:new Mt({contentType:lt.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},qt=new Mt;function Ft(t){return jt[t.toLowerCase()]||qt}var zt=function(t){function e(e,n){var a=t.call(this)||this;return a.mapName=n,a.internalToPublic={},a.publicToNextId={},a.publicToInternal={},e.nodes.forEach(function(t){return t.visit(a)}),a}return Object(a.__extends)(e,t),e.prototype.toPublicName=function(t){return this.internalToPublic.hasOwnProperty(t)?this.internalToPublic[t]:null},e.prototype.toInternalName=function(t){return this.publicToInternal.hasOwnProperty(t)?this.publicToInternal[t]:null},e.prototype.visitText=function(t,e){return null},e.prototype.visitTagPlaceholder=function(e,n){this.visitPlaceholderName(e.startName),t.prototype.visitTagPlaceholder.call(this,e,n),this.visitPlaceholderName(e.closeName)},e.prototype.visitPlaceholder=function(t,e){this.visitPlaceholderName(t.name)},e.prototype.visitIcuPlaceholder=function(t,e){this.visitPlaceholderName(t.name)},e.prototype.visitPlaceholderName=function(t){if(t&&!this.internalToPublic.hasOwnProperty(t)){var e=this.mapName(t);if(this.publicToInternal.hasOwnProperty(e)){var n=this.publicToNextId[e];this.publicToNextId[e]=n+1,e=e+"_"+n}else this.publicToNextId[e]=1;this.internalToPublic[t]=e,this.publicToInternal[e]=t}},e}(_),Yt=new r.I18nSelectPipe,Ht=function(){function t(t,e){this.params=e,this.i18nPluralPipe=new r.I18nPluralPipe(new r.NgLocaleLocalization(t))}return t.prototype.visitElement=function(t,e){return Ft(t.name).isVoid?"<"+t.name+this.serializeNodes(t.attrs," ")+"/>":"<"+t.name+this.serializeNodes(t.attrs," ")+">"+this.serializeNodes(t.children)+"</"+t.name+">"},t.prototype.visitAttribute=function(t,e){return t.name+'="'+t.value+'"'},t.prototype.visitText=function(t,e){return t.value},t.prototype.visitComment=function(t,e){return"\x3c!--"+t.value+"--\x3e"},t.prototype.visitExpansion=function(t,e){var n=this,a={};switch(t.cases.forEach(function(t){return a[t.value]=n.serializeNodes(t.expression)}),t.type){case"select":return Yt.transform(this.params[t.switchValue]||"",a);case"plural":return this.i18nPluralPipe.transform(this.params[t.switchValue],a)}throw new Error('Unknown expansion type "'+t.type+'"')},t.prototype.visitExpansionCase=function(t,e){return" "+t.value+" {"+this.serializeNodes(t.expression)+"}"},t.prototype.serializeNodes=function(t,e){var n=this;return void 0===e&&(e=""),0===t.length?"":e+t.map(function(t){return t.visit(n,null)}).join(e)},t}();function Gt(t){return t.id||function(t){var e,n,r=se(t),i=function(t,e){for(var n=Array(t.length+3>>>2),a=0;a<n.length;a++)n[a]=ae(t,4*a,e);return n}(r,Xt.Big),o=8*r.length,s=new Array(80),u=Object(a.__read)([1732584193,4023233417,2562383102,271733878,3285377520],5),l=u[0],c=u[1],d=u[2],f=u[3],p=u[4];i[o>>5]|=128<<24-o%32,i[15+(o+64>>9<<4)]=o;for(var h=0;h<i.length;h+=16){for(var g=Object(a.__read)([l,c,d,f,p],5),m=g[0],b=g[1],y=g[2],v=g[3],_=g[4],x=0;x<80;x++){s[x]=x<16?i[h+x]:ee(s[x-3]^s[x-8]^s[x-14]^s[x-16],1);var T=Object(a.__read)(Wt(x,c,d,f),2),w=T[0],S=T[1],O=[ee(l,5),w,p,S,s[x]].reduce(Jt);p=(e=Object(a.__read)([f,d,ee(c,30),l,O],5))[0],f=e[1],d=e[2],c=e[3],l=e[4]}l=(n=Object(a.__read)([Jt(l,m),Jt(c,b),Jt(d,y),Jt(f,v),Jt(p,_)],5))[0],c=n[1],d=n[2],f=n[3],p=n[4]}return function(t){for(var e="",n=0;n<t.length;n++){var a=ne(t,n);e+=(a>>>4).toString(16)+(15&a).toString(16)}return e.toLowerCase()}(re([l,c,d,f,p]))}((e=t.nodes,e.map(function(t){return t.visit(Bt,null)})).join("")+"["+t.meaning+"]");var e}var Vt=function(){function t(){}return t.prototype.visitText=function(t,e){return t.value},t.prototype.visitContainer=function(t,e){var n=this;return"["+t.children.map(function(t){return t.visit(n)}).join(", ")+"]"},t.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+t.expression+", "+t.type+", "+a.join(", ")+"}"},t.prototype.visitTagPlaceholder=function(t,e){var n=this;return t.isVoid?'<ph tag name="'+t.startName+'"/>':'<ph tag name="'+t.startName+'">'+t.children.map(function(t){return t.visit(n)}).join(", ")+'</ph name="'+t.closeName+'">'},t.prototype.visitPlaceholder=function(t,e){return t.value?'<ph name="'+t.name+'">'+t.value+"</ph>":'<ph name="'+t.name+'"/>'},t.prototype.visitIcuPlaceholder=function(t,e){return'<ph icu name="'+t.name+'">'+t.value.visit(this)+"</ph>"},t}(),Bt=new Vt,Ut=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+t.type+", "+a.join(", ")+"}"},e}(Vt);function Wt(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 Kt(t){var e=se(t),n=Object(a.__read)([$t(e,0),$t(e,102072)],2),r=n[0],i=n[1];return 0!==r||0!==i&&1!==i||(r^=319790063,i^=-1801410264),[r,i]}function $t(t,e){var n,r,i=Object(a.__read)([2654435769,2654435769],2),o=i[0],s=i[1],u=t.length;for(n=0;n+12<=u;n+=12)o=Jt(o,ae(t,n,Xt.Little)),s=Jt(s,ae(t,n+4,Xt.Little)),e=Jt(e,ae(t,n+8,Xt.Little)),o=(r=Object(a.__read)(Zt([o,s,e]),3))[0],s=r[1],e=r[2];return o=Jt(o,ae(t,n,Xt.Little)),s=Jt(s,ae(t,n+4,Xt.Little)),e=Jt(e,u),Zt([o,s,e=Jt(e,ae(t,n+8,Xt.Little)<<8)])[2]}function Zt(t){var e=Object(a.__read)(t,3),n=e[0],r=e[1],i=e[2];return n=te(n,r),n=te(n,i),n^=i>>>13,r=te(r,i),r=te(r,n),r^=n<<8,i=te(i,n),i=te(i,r),i^=r>>>13,n=te(n,r),n=te(n,i),n^=i>>>12,r=te(r,i),r=te(r,n),r^=n<<16,i=te(i,n),i=te(i,r),i^=r>>>5,n=te(n,r),n=te(n,i),n^=i>>>3,r=te(r,i),r=te(r,n),r^=n<<10,i=te(i,n),i=te(i,r),[n,r,i^=r>>>15]}var Xt=function(){var t={Little:0,Big:1};return t[t.Little]="Little",t[t.Big]="Big",t}();function Jt(t,e){return Qt(t,e)[1]}function Qt(t,e){var n=(65535&t)+(65535&e),a=(t>>>16)+(e>>>16)+(n>>>16);return[a>>>16,a<<16|65535&n]}function te(t,e){var n=(65535&t)-(65535&e);return(t>>16)-(e>>16)+(n>>16)<<16|65535&n}function ee(t,e){return t<<e|t>>>32-e}function ne(t,e){return e>=t.length?0:255&t.charCodeAt(e)}function ae(t,e,n){var a=0;if(n===Xt.Big)for(var r=0;r<4;r++)a+=ne(t,e+r)<<24-8*r;else for(r=0;r<4;r++)a+=ne(t,e+r)<<8*r;return a}function re(t){return t.reduce(function(t,e){return t+function(t){for(var e="",n=0;n<4;n++)e+=String.fromCharCode(t>>>8*(3-n)&255);return e}(e)},"")}function ie(t,e){for(var n="",a=Math.max(t.length,e.length),r=0,i=0;r<a||i;r++){var o=i+ +(t[r]||0)+ +(e[r]||0);o>=10?(i=1,n+=o-10):(i=0,n+=o)}return n}function oe(t,e){for(var n="",a=e;0!==t;t>>>=1)1&t&&(n=ie(n,a)),a=ie(a,a);return n}function se(t){for(var e="",n=0;n<t.length;n++){var a=t.charCodeAt(n);if(a>=55296&&a<=56319&&t.length>n+1){var r=t.charCodeAt(n+1);r>=56320&&r<=57343&&(n++,a=(a-55296<<10)+r-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 ue(t){var e=(new ce).parse(t),n=e.msgIdToHtml,r=e.errors,i={},o=new de;if(Object.keys(n).forEach(function(t){var e=o.convert(n[t]),s=e.i18nNodes,u=e.errors;r.push.apply(r,Object(a.__spread)(u)),i[t]=s}),r.length)throw new Error("xliff parse errors:\n"+r.join("\n"));return i}var le=Gt,ce=function(){function t(){}return t.prototype.parse=function(t){this._unitMlString=null,this._msgIdToHtml={};var e=new Nt(Pt).parse(t,"",!1);return this._errors=e.errors,f(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"trans-unit":this._unitMlString=null;var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;this._msgIdToHtml.hasOwnProperty(a)?this._addError(t,"Duplicated translations for msg "+a):(f(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[a]=this._unitMlString:this._addError(t,"Message "+a+" misses a translation"))}else this._addError(t,'<trans-unit> misses the "id" attribute');break;case"source":break;case"target":var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=r;break;case"file":f(this,t.children,null);break;default:f(this,t.children,null)}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}(),de=function(){function t(){}return t.prototype.convert=function(t){var e=new Nt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:f(this,e.rootNodes),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitElement=function(t,e){if("x"===t.name){var n=t.attrs.find(function(t){return"id"===t.name});if(n)return new y("",n.value,t.sourceSpan);this._addError(t,'<x> misses the "id" attribute')}else this._addError(t,"Unexpected tag");return null},t.prototype.visitExpansion=function(t,e){var n={};return f(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:f(this,t.expression)}},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}();function fe(t){var e=(new he).parse(t),n=e.msgIdToHtml,r=e.errors,i={},o=new ge;if(Object.keys(n).forEach(function(t){var e=o.convert(n[t]),s=e.i18nNodes,u=e.errors;r.push.apply(r,Object(a.__spread)(u)),i[t]=s}),r.length)throw new Error("xliff2 parse errors:\n"+r.join("\n"));return i}var pe=function(t){if(t.id)return t.id;var e=new Ut;return function(t,e){var n,r=Object(a.__read)(Kt(t),2),i=r[0],o=r[1];if(e){var s=Object(a.__read)(Kt(e),2),u=s[0],l=s[1];i=(n=Object(a.__read)(function(t,e){var n=Object(a.__read)(t,2),r=n[0],i=n[1],o=Object(a.__read)(e,2),s=o[0],u=o[1],l=Object(a.__read)(Qt(i,u),2),c=l[0],d=l[1];return[Jt(Jt(r,s),c),d]}(function(t,e){var n=Object(a.__read)(t,2),r=n[0],i=n[1];return[r<<1|i>>>31,i<<1|r>>>31]}([i,o]),[u,l]),2))[0],o=n[1]}return function(t){for(var e="",n="1",a=t.length-1;a>=0;a--)e=ie(e,oe(ne(t,a),n)),n=oe(256,n);return e.split("").reverse().join("")}(re([2147483647&i,o]))}(t.nodes.map(function(t){return t.visit(e,null)}).join(""),t.meaning)},he=function(){function t(){}return t.prototype.parse=function(t){this._unitMlString=null,this._msgIdToHtml={};var e=new Nt(Pt).parse(t,"",!1);return this._errors=e.errors,f(this,e.rootNodes,null),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"unit":this._unitMlString=null;var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;this._msgIdToHtml.hasOwnProperty(a)?this._addError(t,"Duplicated translations for msg "+a):(f(this,t.children,null),"string"==typeof this._unitMlString?this._msgIdToHtml[a]=this._unitMlString:this._addError(t,"Message "+a+" misses a translation"))}else this._addError(t,'<unit> misses the "id" attribute');break;case"source":break;case"target":var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._unitMlString=r;break;case"xliff":var i=t.attrs.find(function(t){return"version"===t.name});if(i){var o=i.value;"2.0"!==o?this._addError(t,"The XLIFF file version "+o+" is not compatible with XLIFF 2.0 serializer"):f(this,t.children,null)}break;default:f(this,t.children,null)}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}(),ge=function(){function t(){}return t.prototype.convert=function(t){var e=new Nt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:[].concat.apply([],Object(a.__spread)(f(this,e.rootNodes))),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitElement=function(t,e){var n=this;switch(t.name){case"ph":var r=t.attrs.find(function(t){return"equiv"===t.name});if(r)return[new y("",r.value,t.sourceSpan)];this._addError(t,'<ph> misses the "equiv" attribute');break;case"pc":var i=t.attrs.find(function(t){return"equivStart"===t.name}),o=t.attrs.find(function(t){return"equivEnd"===t.name});if(i){if(o){var s=i.value,u=o.value,l=[];return l.concat.apply(l,Object(a.__spread)([new y("",s,t.sourceSpan)],t.children.map(function(t){return t.visit(n,null)}),[new y("",u,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},t.prototype.visitExpansion=function(t,e){var n={};return f(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:[].concat.apply([],Object(a.__spread)(f(this,t.expression)))}},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}();function me(t){return t.toUpperCase().replace(/[^A-Z0-9_]/g,"_")}function be(t){var e=(new _e).parse(t),n=e.msgIdToHtml,a=e.errors;if(a.length)throw new Error("xtb parse errors:\n"+a.join("\n"));var r={},i=new xe;return Object.keys(n).forEach(function(t){var e,a;e=r,a=t,Object.defineProperty(e,a,{configurable:!0,enumerable:!0,get:function(){var r=function(){var e=i.convert(n[t]),a=e.i18nNodes,r=e.errors;if(r.length)throw new Error("xtb parse errors:\n"+r.join("\n"));return a}();return Object.defineProperty(e,a,{enumerable:!0,value:r}),r},set:function(t){throw new Error("Could not overwrite an XTB translation")}})}),r}var ye=Gt,ve=function(t){return new zt(t,me)},_e=function(){function t(){}return t.prototype.parse=function(t){this._bundleDepth=0,this._msgIdToHtml={};var e=new Nt(Pt).parse(t,"",!1);return this._errors=e.errors,f(this,e.rootNodes),{msgIdToHtml:this._msgIdToHtml,errors:this._errors}},t.prototype.visitElement=function(t,e){switch(t.name){case"translationbundle":this._bundleDepth++,this._bundleDepth>1&&this._addError(t,"<translationbundle> elements can not be nested"),f(this,t.children,null),this._bundleDepth--;break;case"translation":var n=t.attrs.find(function(t){return"id"===t.name});if(n){var a=n.value;if(this._msgIdToHtml.hasOwnProperty(a))this._addError(t,"Duplicated translations for msg "+a);else{var r=t.startSourceSpan.start.file.content.slice(t.startSourceSpan.end.offset,t.endSourceSpan.start.offset);this._msgIdToHtml[a]=r}}else this._addError(t,'<translation> misses the "id" attribute');break;default:this._addError(t,"Unexpected tag")}},t.prototype.visitAttribute=function(t,e){},t.prototype.visitText=function(t,e){},t.prototype.visitComment=function(t,e){},t.prototype.visitExpansion=function(t,e){},t.prototype.visitExpansionCase=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}(),xe=function(){function t(){}return t.prototype.convert=function(t){var e=new Nt(Pt).parse(t,"",!0);return this._errors=e.errors,{i18nNodes:this._errors.length>0||0===e.rootNodes.length?[]:f(this,e.rootNodes),errors:this._errors}},t.prototype.visitText=function(t,e){return new h(t.value,t.sourceSpan)},t.prototype.visitExpansion=function(t,e){var n={};return f(this,t.cases).forEach(function(e){n[e.value]=new g(e.nodes,t.sourceSpan)}),new m(t.switchValue,t.type,n,t.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){return{value:t.value,nodes:f(this,t.expression)}},t.prototype.visitElement=function(t,e){if("ph"===t.name){var n=t.attrs.find(function(t){return"name"===t.name});if(n)return new y("",n.value,t.sourceSpan);this._addError(t,'<ph> misses the "name" attribute')}else this._addError(t,"Unexpected tag");return null},t.prototype.visitComment=function(t,e){},t.prototype.visitAttribute=function(t,e){},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}(),Te=function(){return function(t,e,n,a){this.input=e,this.errLocation=n,this.ctxLocation=a,this.message="Parser Error: "+t+" "+n+" ["+e+"] in "+a}}(),we=function(){return function(t,e){this.start=t,this.end=e}}(),Se=function(){function t(t){this.span=t}return t.prototype.visit=function(t,e){return void 0===e&&(e=null),null},t.prototype.toString=function(){return"AST"},t}(),Oe=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.prefix=n,i.uninterpretedExpression=a,i.location=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitQuote(this,e)},e.prototype.toString=function(){return"Quote"},e}(Se),Ce=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){void 0===e&&(e=null)},e}(Se),ke=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitImplicitReceiver(this,e)},e}(Se),Ie=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expressions=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitChain(this,e)},e}(Se),De=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.condition=n,i.trueExp=a,i.falseExp=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitConditional(this,e)},e}(Se),Re=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.receiver=n,r.name=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPropertyRead(this,e)},e}(Se),Ne=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.value=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPropertyWrite(this,e)},e}(Se),Ae=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.receiver=n,r.name=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitSafePropertyRead(this,e)},e}(Se),Ee=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.obj=n,r.key=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitKeyedRead(this,e)},e}(Se),Le=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.obj=n,i.key=a,i.value=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitKeyedWrite(this,e)},e}(Se),Pe=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.exp=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPipe(this,e)},e}(Se),Me=function(t){function e(e,n){var a=t.call(this,e)||this;return a.value=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralPrimitive(this,e)},e}(Se),je=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expressions=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralArray(this,e)},e}(Se),qe=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keys=n,r.values=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitLiteralMap(this,e)},e}(Se),Fe=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.strings=n,r.expressions=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitInterpolation(this,e)},e}(Se),ze=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.operation=n,i.left=a,i.right=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitBinary(this,e)},e}(Se),Ye=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expression=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitPrefixNot(this,e)},e}(Se),He=function(t){function e(e,n){var a=t.call(this,e)||this;return a.expression=n,a}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitNonNullAssert(this,e)},e}(Se),Ge=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitMethodCall(this,e)},e}(Se),Ve=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.receiver=n,i.name=a,i.args=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitSafeMethodCall(this,e)},e}(Se),Be=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.target=n,r.args=a,r}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),t.visitFunctionCall(this,e)},e}(Se),Ue=function(t){function e(e,n,a,r){var i=t.call(this,new we(0,null==n?0:n.length))||this;return i.ast=e,i.source=n,i.location=a,i.errors=r,i}return Object(a.__extends)(e,t),e.prototype.visit=function(t,e){return void 0===e&&(e=null),this.ast.visit(t,e)},e.prototype.toString=function(){return this.source+" in "+this.location},e}(Se),We=function(){return function(t,e,n,a,r){this.span=t,this.key=e,this.keyIsVar=n,this.name=a,this.expression=r}}(),Ke=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}(),$e=["var","let","as","null","undefined","true","false","if","else","this"],Ze=function(){function t(){}return t.prototype.tokenize=function(t){for(var e=new en(t),n=[],a=e.scanToken();null!=a;)n.push(a),a=e.scanToken();return n},t}(),Xe=function(){function t(t,e,n,a){this.index=t,this.type=e,this.numValue=n,this.strValue=a}return t.prototype.isCharacter=function(t){return this.type===Ke.Character&&this.numValue===t},t.prototype.isNumber=function(){return this.type===Ke.Number},t.prototype.isString=function(){return this.type===Ke.String},t.prototype.isOperator=function(t){return this.type===Ke.Operator&&this.strValue===t},t.prototype.isIdentifier=function(){return this.type===Ke.Identifier},t.prototype.isKeyword=function(){return this.type===Ke.Keyword},t.prototype.isKeywordLet=function(){return this.type===Ke.Keyword&&"let"===this.strValue},t.prototype.isKeywordAs=function(){return this.type===Ke.Keyword&&"as"===this.strValue},t.prototype.isKeywordNull=function(){return this.type===Ke.Keyword&&"null"===this.strValue},t.prototype.isKeywordUndefined=function(){return this.type===Ke.Keyword&&"undefined"===this.strValue},t.prototype.isKeywordTrue=function(){return this.type===Ke.Keyword&&"true"===this.strValue},t.prototype.isKeywordFalse=function(){return this.type===Ke.Keyword&&"false"===this.strValue},t.prototype.isKeywordThis=function(){return this.type===Ke.Keyword&&"this"===this.strValue},t.prototype.isError=function(){return this.type===Ke.Error},t.prototype.toNumber=function(){return this.type===Ke.Number?this.numValue:-1},t.prototype.toString=function(){switch(this.type){case Ke.Character:case Ke.Identifier:case Ke.Keyword:case Ke.Operator:case Ke.String:case Ke.Error:return this.strValue;case Ke.Number:return this.numValue.toString();default:return null}},t}();function Je(t,e){return new Xe(t,Ke.Character,e,String.fromCharCode(e))}function Qe(t,e){return new Xe(t,Ke.Operator,0,e)}var tn=new Xe(-1,Ke.Character,0,""),en=function(){function t(t){this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}return t.prototype.advance=function(){this.peek=++this.index>=this.length?D:this.input.charCodeAt(this.index)},t.prototype.scanToken=function(){for(var t=this.input,e=this.length,n=this.peek,a=this.index;n<=P;){if(++a>=e){n=D;break}n=t.charCodeAt(a)}if(this.peek=n,this.index=a,a>=e)return null;if(nn(n))return this.scanIdentifier();if(st(n))return this.scanNumber(a);var r=a;switch(n){case 46:return this.advance(),st(this.peek)?this.scanNumber(r):Je(r,46);case 40:case 41:case rt:case 125:case 91:case 93:case 44:case 58:case H:return this.scanCharacter(r,n);case q:case M:return this.scanString();case 35:case F:case z:case 42:case Y:case 37:case 94:return this.scanOperator(r,String.fromCharCode(n));case 63:return this.scanComplexOperator(r,"?",46,".");case 60:case V:return this.scanComplexOperator(r,String.fromCharCode(n),G,"=");case 33:case G:return this.scanComplexOperator(r,String.fromCharCode(n),G,"=",G,"=");case 38:return this.scanComplexOperator(r,"&",38,"&");case 124:return this.scanComplexOperator(r,"|",124,"|");case it:for(;ot(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error("Unexpected character ["+String.fromCharCode(n)+"]",0)},t.prototype.scanCharacter=function(t,e){return this.advance(),Je(t,e)},t.prototype.scanOperator=function(t,e){return this.advance(),Qe(t,e)},t.prototype.scanComplexOperator=function(t,e,n,a,r,i){this.advance();var o=e;return this.peek===n&&(this.advance(),o+=a),null!=r&&this.peek===r&&(this.advance(),o+=i),Qe(t,o)},t.prototype.scanIdentifier=function(){var t=this.index;for(this.advance();an(this.peek);)this.advance();var e=this.input.substring(t,this.index);return $e.indexOf(e)>-1?new Xe(t,Ke.Keyword,0,e):new Xe(t,Ke.Identifier,0,e)},t.prototype.scanNumber=function(t){var e,n=this.index===t;for(this.advance();;){if(st(this.peek));else if(46===this.peek)n=!1;else{if(101!==(e=this.peek)&&69!==e)break;if(this.advance(),rn(this.peek)&&this.advance(),!st(this.peek))return this.error("Invalid exponent",-1);n=!1}this.advance()}var a=this.input.substring(t,this.index),r=n?function(t){var 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,Ke.Number,r,"")},t.prototype.scanString=function(){var t=this.index,e=this.peek;this.advance();for(var n="",a=this.index,r=this.input;this.peek!==e;)if(92===this.peek){n+=r.substring(a,this.index),this.advance();var i=void 0;if(this.peek=this.peek,117===this.peek){var o=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(o))return this.error("Invalid unicode escape [\\u"+o+"]",0);i=parseInt(o,16);for(var s=0;s<5;s++)this.advance()}else i=on(this.peek),this.advance();n+=String.fromCharCode(i),a=this.index}else{if(this.peek===D)return this.error("Unterminated quote",0);this.advance()}var u=r.substring(a,this.index);return this.advance(),new Xe(t,Ke.String,0,n+u)},t.prototype.error=function(t,e){var n=this.index+e;return function(t,e){return new Xe(n,Ke.Error,0,e)}(0,"Lexer Error: "+t+" at column "+n+" in expression ["+this.input+"]")},t}();function nn(t){return X<=t&&t<=at||W<=t&&t<=$||t===Z||t===j}function an(t){return ut(t)||st(t)||t===Z||t===j}function rn(t){return t===z||t===F}function on(t){switch(t){case Q:return N;case J:return E;case tt:return L;case et:return R;case nt:return A;default:return t}}var sn=function(){return function(t,e,n){this.strings=t,this.expressions=e,this.offsets=n}}(),un=function(){return function(t,e,n){this.templateBindings=t,this.warnings=e,this.errors=n}}();function ln(t){var e=k(t.start)+"([\\s\\S]*?)"+k(t.end);return new RegExp(e,"g")}var cn=function(){function t(t){this._lexer=t,this.errors=[]}return t.prototype.parseAction=function(t,e,n){void 0===n&&(n=I),this._checkNoInterpolation(t,e,n);var a=this._stripComments(t),r=this._lexer.tokenize(this._stripComments(t)),i=new dn(t,e,r,a.length,!0,this.errors,t.length-a.length).parseChain();return new Ue(i,t,e,this.errors)},t.prototype.parseBinding=function(t,e,n){void 0===n&&(n=I);var a=this._parseBindingAst(t,e,n);return new Ue(a,t,e,this.errors)},t.prototype.parseSimpleBinding=function(t,e,n){void 0===n&&(n=I);var a=this._parseBindingAst(t,e,n),r=fn.check(a);return r.length>0&&this._reportError("Host binding expression cannot contain "+r.join(" "),t,e),new Ue(a,t,e,this.errors)},t.prototype._reportError=function(t,e,n,a){this.errors.push(new Te(t,e,n,a))},t.prototype._parseBindingAst=function(t,e,n){var a=this._parseQuote(t,e);if(null!=a)return a;this._checkNoInterpolation(t,e,n);var r=this._stripComments(t),i=this._lexer.tokenize(r);return new dn(t,e,i,r.length,!1,this.errors,t.length-r.length).parseChain()},t.prototype._parseQuote=function(t,e){if(null===t)return null;var n=t.indexOf(":");if(-1===n)return null;var a=t.substring(0,n).trim();if(!function(t){if(0===a.length)return!1;var e=new en(a);if(!nn(e.peek))return!1;for(e.advance();e.peek!==D;){if(!an(e.peek))return!1;e.advance()}return!0}())return null;var r=t.substring(n+1);return new Oe(new we(0,t.length),a,r,e)},t.prototype.parseTemplateBindings=function(t,e,n){var r=this._lexer.tokenize(e);if(t){var i=this._lexer.tokenize(t).map(function(t){return t.index=0,t});r.unshift.apply(r,Object(a.__spread)(i))}return new dn(e,n,r,e.length,!1,this.errors,0).parseTemplateBindings()},t.prototype.parseInterpolation=function(t,e,n){void 0===n&&(n=I);var a=this.splitInterpolation(t,e,n);if(null===a)return null;for(var r=[],i=0;i<a.expressions.length;++i){var o=a.expressions[i],s=this._stripComments(o),u=this._lexer.tokenize(s),l=new dn(t,e,u,s.length,!1,this.errors,a.offsets[i]+(o.length-s.length)).parseChain();r.push(l)}return new Ue(new Fe(new we(0,null===t?0:t.length),a.strings,r),t,e,this.errors)},t.prototype.splitInterpolation=function(t,e,n){void 0===n&&(n=I);var a=ln(n),r=t.split(a);if(r.length<=1)return null;for(var i=[],o=[],s=[],u=0,l=0;l<r.length;l++){var c=r[l];l%2==0?(i.push(c),u+=c.length):c.trim().length>0?(u+=n.start.length,o.push(c),s.push(u),u+=c.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",t,"at column "+this._findInterpolationErrorColumn(r,l,n)+" in",e),o.push("$implict"),s.push(u))}return new sn(i,o,s)},t.prototype.wrapLiteralPrimitive=function(t,e){return new Ue(new Me(new we(0,null===t?0:t.length),t),t,e,this.errors)},t.prototype._stripComments=function(t){var e=this._commentStart(t);return null!=e?t.substring(0,e).trim():t},t.prototype._commentStart=function(t){for(var e,n=null,a=0;a<t.length-1;a++){var r=t.charCodeAt(a),i=t.charCodeAt(a+1);if(r===Y&&i===Y&&null===n)return a;n===r?n=null:null===n&&((e=r)===q||e===M||96===e)&&(n=r)}return null},t.prototype._checkNoInterpolation=function(t,e,n){var a=ln(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)},t.prototype._findInterpolationErrorColumn=function(t,e,n){for(var a="",r=0;r<e;r++)a+=r%2==0?t[r]:""+n.start+t[r]+n.end;return a.length},t}(),dn=function(){function t(t,e,n,a,r,i,o){this.input=t,this.location=e,this.tokens=n,this.inputLength=a,this.parseAction=r,this.errors=i,this.offset=o,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}return t.prototype.peek=function(t){var e=this.index+t;return e<this.tokens.length?this.tokens[e]:tn},Object.defineProperty(t.prototype,"next",{get:function(){return this.peek(0)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputIndex",{get:function(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset},enumerable:!0,configurable:!0}),t.prototype.span=function(t){return new we(t,this.inputIndex)},t.prototype.advance=function(){this.index++},t.prototype.optionalCharacter=function(t){return!!this.next.isCharacter(t)&&(this.advance(),!0)},t.prototype.peekKeywordLet=function(){return this.next.isKeywordLet()},t.prototype.peekKeywordAs=function(){return this.next.isKeywordAs()},t.prototype.expectCharacter=function(t){this.optionalCharacter(t)||this.error("Missing expected "+String.fromCharCode(t))},t.prototype.optionalOperator=function(t){return!!this.next.isOperator(t)&&(this.advance(),!0)},t.prototype.expectOperator=function(t){this.optionalOperator(t)||this.error("Missing expected operator "+t)},t.prototype.expectIdentifierOrKeyword=function(){var t=this.next;return t.isIdentifier()||t.isKeyword()?(this.advance(),t.toString()):(this.error("Unexpected token "+t+", expected identifier or keyword"),"")},t.prototype.expectIdentifierOrKeywordOrString=function(){var t=this.next;return t.isIdentifier()||t.isKeyword()||t.isString()?(this.advance(),t.toString()):(this.error("Unexpected token "+t+", expected identifier, keyword, or string"),"")},t.prototype.parseChain=function(){for(var t=[],e=this.inputIndex;this.index<this.tokens.length;){var n=this.parsePipe();if(t.push(n),this.optionalCharacter(H))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(H););else this.index<this.tokens.length&&this.error("Unexpected token '"+this.next+"'")}return 0===t.length?new Ce(this.span(e)):1===t.length?t[0]:new Ie(this.span(e),t)},t.prototype.parsePipe=function(){var t=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{for(var e=this.expectIdentifierOrKeyword(),n=[];this.optionalCharacter(58);)n.push(this.parseExpression());t=new Pe(this.span(t.span.start),t,e,n)}while(this.optionalOperator("|"))}return t},t.prototype.parseExpression=function(){return this.parseConditional()},t.prototype.parseConditional=function(){var t=this.inputIndex,e=this.parseLogicalOr();if(this.optionalOperator("?")){var n=this.parsePipe(),a=void 0;if(this.optionalCharacter(58))a=this.parsePipe();else{var r=this.input.substring(t,this.inputIndex);this.error("Conditional expression "+r+" requires all 3 expressions"),a=new Ce(this.span(t))}return new De(this.span(t),e,n,a)}return e},t.prototype.parseLogicalOr=function(){for(var t=this.parseLogicalAnd();this.optionalOperator("||");){var e=this.parseLogicalAnd();t=new ze(this.span(t.span.start),"||",t,e)}return t},t.prototype.parseLogicalAnd=function(){for(var t=this.parseEquality();this.optionalOperator("&&");){var e=this.parseEquality();t=new ze(this.span(t.span.start),"&&",t,e)}return t},t.prototype.parseEquality=function(){for(var t=this.parseRelational();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"==":case"===":case"!=":case"!==":this.advance();var n=this.parseRelational();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseRelational=function(){for(var t=this.parseAdditive();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"<":case">":case"<=":case">=":this.advance();var n=this.parseAdditive();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseAdditive=function(){for(var t=this.parseMultiplicative();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"+":case"-":this.advance();var n=this.parseMultiplicative();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parseMultiplicative=function(){for(var t=this.parsePrefix();this.next.type===Ke.Operator;){var e=this.next.strValue;switch(e){case"*":case"%":case"/":this.advance();var n=this.parsePrefix();t=new ze(this.span(t.span.start),e,t,n);continue}break}return t},t.prototype.parsePrefix=function(){if(this.next.type===Ke.Operator){var t=this.inputIndex,e=this.next.strValue,n=void 0;switch(e){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new ze(this.span(t),e,new Me(new we(t,t),0),n);case"!":return this.advance(),n=this.parsePrefix(),new Ye(this.span(t),n)}}return this.parseCallChain()},t.prototype.parseCallChain=function(){for(var t=this.parsePrimary();;)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++;var e=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){var n=this.parseConditional();t=new Le(this.span(t.span.start),t,e,n)}else t=new Ee(this.span(t.span.start),t,e)}else if(this.optionalCharacter(40)){this.rparensExpected++;var a=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),t=new Be(this.span(t.span.start),t,a)}else{if(!this.optionalOperator("!"))return t;t=new He(this.span(t.span.start),t)}},t.prototype.parsePrimary=function(){var t=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;var e=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),e}if(this.next.isKeywordNull())return this.advance(),new Me(this.span(t),null);if(this.next.isKeywordUndefined())return this.advance(),new Me(this.span(t),void 0);if(this.next.isKeywordTrue())return this.advance(),new Me(this.span(t),!0);if(this.next.isKeywordFalse())return this.advance(),new Me(this.span(t),!1);if(this.next.isKeywordThis())return this.advance(),new ke(this.span(t));if(this.optionalCharacter(91)){this.rbracketsExpected++;var n=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new je(this.span(t),n)}if(this.next.isCharacter(rt))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new ke(this.span(t)),!1);if(this.next.isNumber()){var a=this.next.toNumber();return this.advance(),new Me(this.span(t),a)}if(this.next.isString()){var r=this.next.toString();return this.advance(),new Me(this.span(t),r)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: "+this.input),new Ce(this.span(t))):(this.error("Unexpected token "+this.next),new Ce(this.span(t)))},t.prototype.parseExpressionList=function(t){var e=[];if(!this.next.isCharacter(t))do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e},t.prototype.parseLiteralMap=function(){var t=[],e=[],n=this.inputIndex;if(this.expectCharacter(rt),!this.optionalCharacter(125)){this.rbracesExpected++;do{var a=this.next.isString(),r=this.expectIdentifierOrKeywordOrString();t.push({key:r,quoted:a}),this.expectCharacter(58),e.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new qe(this.span(n),t,e)},t.prototype.parseAccessMemberOrMethodCall=function(t,e){void 0===e&&(e=!1);var n=t.span.start,a=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;var r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;var i=this.span(n);return e?new Ve(i,t,a,r):new Ge(i,t,a,r)}if(e)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new Ce(this.span(n))):new Ae(this.span(n),t,a);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new Ce(this.span(n));var o=this.parseConditional();return new Ne(this.span(n),t,a,o)}return new Re(this.span(n),t,a)},t.prototype.parseCallArguments=function(){if(this.next.isCharacter(41))return[];var t=[];do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t},t.prototype.expectTemplateBindingKey=function(){var t="",e=!1;do{t+=this.expectIdentifierOrKeywordOrString(),(e=this.optionalOperator("-"))&&(t+="-")}while(e);return t.toString()},t.prototype.parseTemplateBindings=function(){for(var t=[],e=null;this.index<this.tokens.length;){var n=this.inputIndex,a=this.peekKeywordLet();a&&this.advance();var r=this.expectTemplateBindingKey(),i=r;a||(null===e?e=i:i=e+i[0].toUpperCase()+i.substring(1)),this.optionalCharacter(58);var o=null,s=null;if(a)o=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs()){var u=this.inputIndex;this.advance(),o=r,i=this.expectTemplateBindingKey(),a=!0}else if(this.next!==tn&&!this.peekKeywordLet()){var l=this.inputIndex,c=this.parsePipe(),d=this.input.substring(l-this.offset,this.inputIndex-this.offset);s=new Ue(c,d,this.location,this.errors)}if(t.push(new We(this.span(n),i,a,o,s)),this.peekKeywordAs()&&!a){u=this.inputIndex,this.advance();var f=this.expectTemplateBindingKey();t.push(new We(this.span(u),f,!0,i,null))}this.optionalCharacter(H)||this.optionalCharacter(44)}return new un(t,[],this.errors)},t.prototype.error=function(t,e){void 0===e&&(e=null),this.errors.push(new Te(t,this.input,this.locationText(e),this.location)),this.skip()},t.prototype.locationText=function(t){return void 0===t&&(t=null),null===t&&(t=this.index),t<this.tokens.length?"at column "+(this.tokens[t].index+1)+" in":"at the end of the expression"},t.prototype.skip=function(){for(var t=this.next;this.index<this.tokens.length&&!t.isCharacter(H)&&(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 Te(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),t=this.next},t}(),fn=function(){function t(){this.errors=[]}return t.check=function(e){var n=new t;return e.visit(n),n.errors},t.prototype.visitImplicitReceiver=function(t,e){},t.prototype.visitInterpolation=function(t,e){},t.prototype.visitLiteralPrimitive=function(t,e){},t.prototype.visitPropertyRead=function(t,e){},t.prototype.visitPropertyWrite=function(t,e){},t.prototype.visitSafePropertyRead=function(t,e){},t.prototype.visitMethodCall=function(t,e){},t.prototype.visitSafeMethodCall=function(t,e){},t.prototype.visitFunctionCall=function(t,e){},t.prototype.visitLiteralArray=function(t,e){this.visitAll(t.expressions)},t.prototype.visitLiteralMap=function(t,e){this.visitAll(t.values)},t.prototype.visitBinary=function(t,e){},t.prototype.visitPrefixNot=function(t,e){},t.prototype.visitNonNullAssert=function(t,e){},t.prototype.visitConditional=function(t,e){},t.prototype.visitPipe=function(t,e){this.errors.push("pipes")},t.prototype.visitKeyedRead=function(t,e){},t.prototype.visitKeyedWrite=function(t,e){},t.prototype.visitAll=function(t){var e=this;return t.map(function(t){return t.visit(e)})},t.prototype.visitChain=function(t,e){},t.prototype.visitQuote=function(t,e){},t}(),pn={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"},hn=function(){function t(){this._placeHolderNameCounts={},this._signatureToName={}}return t.prototype.getStartTagPlaceholderName=function(t,e,n){var a=this._hashTag(t,e,n);if(this._signatureToName[a])return this._signatureToName[a];var r=t.toUpperCase(),i=pn[r]||"TAG_"+r,o=this._generateUniqueName(n?i:"START_"+i);return this._signatureToName[a]=o,o},t.prototype.getCloseTagPlaceholderName=function(t){var e=this._hashClosingTag(t);if(this._signatureToName[e])return this._signatureToName[e];var n=t.toUpperCase(),a=this._generateUniqueName("CLOSE_"+(pn[n]||"TAG_"+n));return this._signatureToName[e]=a,a},t.prototype.getPlaceholderName=function(t,e){var n=t.toUpperCase(),a="PH: "+n+"="+e;if(this._signatureToName[a])return this._signatureToName[a];var r=this._generateUniqueName(n);return this._signatureToName[a]=r,r},t.prototype.getUniquePlaceholder=function(t){return this._generateUniqueName(t.toUpperCase())},t.prototype._hashTag=function(t,e,n){return"<"+t+Object.keys(e).sort().map(function(t){return" "+t+"="+e[t]}).join("")+(n?"/>":"></"+t+">")},t.prototype._hashClosingTag=function(t){return this._hashTag("/"+t,{},!1)},t.prototype._generateUniqueName=function(t){if(!this._placeHolderNameCounts.hasOwnProperty(t))return this._placeHolderNameCounts[t]=1,t;var e=this._placeHolderNameCounts[t];return this._placeHolderNameCounts[t]=e+1,t+"_"+e},t}(),gn=new cn(new Ze),mn=function(){function t(t,e){this._expressionParser=t,this._interpolationConfig=e}return t.prototype.toI18nMessage=function(t,e,n,a){this._isIcu=1===t.length&&t[0]instanceof s,this._icuDepth=0,this._placeholderRegistry=new hn,this._placeholderToContent={},this._placeholderToMessage={};var r=f(this,t,{});return new p(r,this._placeholderToContent,this._placeholderToMessage,e,n,a)},t.prototype.visitElement=function(t,e){var n=f(this,t.children),a={};t.attrs.forEach(function(t){a[t.name]=t.value});var r=Ft(t.name).isVoid,i=this._placeholderRegistry.getStartTagPlaceholderName(t.name,a,r);this._placeholderToContent[i]=t.sourceSpan?t.sourceSpan.toString():"";var o="";return r||(o=this._placeholderRegistry.getCloseTagPlaceholderName(t.name),this._placeholderToContent[o]="</"+t.name+">"),new b(t.name,a,i,o,n,r,t.sourceSpan)},t.prototype.visitAttribute=function(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)},t.prototype.visitText=function(t,e){return this._visitTextWithInterpolation(t.value,t.sourceSpan)},t.prototype.visitComment=function(t,e){return null},t.prototype.visitExpansion=function(e,n){var a=this;this._icuDepth++;var r={},i=new m(e.switchValue,e.type,r,e.sourceSpan);if(e.cases.forEach(function(t){r[t.value]=new g(t.expression.map(function(t){return t.visit(a,{})}),t.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){var o=this._placeholderRegistry.getUniquePlaceholder("VAR_"+e.type);return i.expressionPlaceholder=o,this._placeholderToContent[o]=e.switchValue,i}var s=this._placeholderRegistry.getPlaceholderName("ICU",e.sourceSpan.toString()),u=new t(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[s]=u.toI18nMessage([e],"","",""),new v(i,s,e.sourceSpan)},t.prototype.visitExpansionCase=function(t,e){throw new Error("Unreachable code")},t.prototype._visitTextWithInterpolation=function(t,e){var n=this._expressionParser.splitInterpolation(t,e.start.toString(),this._interpolationConfig);if(!n)return new h(t,e);for(var a=[],r=new g(a,e),i=this._interpolationConfig,o=i.start,s=i.end,u=0;u<n.strings.length-1;u++){var l=n.expressions[u],c=l.split(bn)[2]||"INTERPOLATION",d=this._placeholderRegistry.getPlaceholderName(c,l);n.strings[u].length&&a.push(new h(n.strings[u],e)),a.push(new y(l,d,e)),this._placeholderToContent[d]=o+l+s}var f=n.strings.length-1;return n.strings[f].length&&a.push(new h(n.strings[f],e)),r},t}(),bn=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*("|')([\s\S]*?)\1[\s\S]*\)/g,yn=function(t){function e(e){void 0===e&&(e=I);var n=t.call(this,Ft)||this;return n.interpolationConfig=e,n}return Object(a.__extends)(e,t),e.prototype.parse=function(e,n,a){return void 0===a&&(a=!1),t.prototype.parse.call(this,e,n,a,this.interpolationConfig)},e.prototype.extractMessages=function(t){var e=new wn(["wrapper"]),n=new c("wrapper",[],t,void 0,void 0,void 0);return e.extract(n,this.interpolationConfig)},e.prototype.mergeTranslations=function(t,e,n,a,r){void 0===r&&(r=[]);var i=new wn(r),o=new c("wrapper",[],t,void 0,void 0,void 0);return i.merge(o,e,this.interpolationConfig,n,a)},e}(Nt),vn=function(){return function(t,e){this.messages=t,this.errors=e}}(),_n=function(){function t(t,e,n,a,r,i){void 0===t&&(t={}),this.i18nNodesByMsgId=t,this.digest=e,this.mapperFactory=r,this.i18nToHtml=new xn(t,e,r,a,n,i)}return t.load=function(e,n,a,r,i,o,s){return void 0===s&&(s=I),new t(i(e,n),function(t){return a(t)},s,o,function(t){return r(t)},console)},t.prototype.get=function(t,e){var n=this.i18nToHtml.convert(t,e);if(n.errors.length)throw new Error(n.errors.join("\n"));return n.nodes},t.prototype.has=function(t){return this.digest(t)in this.i18nNodesByMsgId},t}(),xn=function(){function t(t,e,n,a,r,i){void 0===t&&(t={}),this._i18nNodesByMsgId=t,this._digest=e,this._mapperFactory=n,this._missingTranslationStrategy=a,this._interpolationConfig=r,this._console=i,this._contextStack=[],this._errors=[]}return t.prototype.convert=function(t,e){this._contextStack.length=0,this._errors.length=0,this._params=e,this._paramKeys=Object.keys(e);var n=this.convertToText(t),r=t.nodes[0].sourceSpan.start.file.url,i=(new yn).parse(n,r,!0);return{nodes:i.rootNodes,errors:Object(a.__spread)(this._errors,i.errors)}},t.prototype.visitText=function(t,e){return t.value},t.prototype.visitContainer=function(t,e){var n=this;return t.children.map(function(t){return t.visit(n)}).join("")},t.prototype.visitIcu=function(t,e){var n=this,a=Object.keys(t.cases).map(function(e){return e+" {"+t.cases[e].visit(n)+"}"});return"{"+(this._srcMsg.placeholders.hasOwnProperty(t.expression)?this._srcMsg.placeholders[t.expression]:t.expression)+", "+t.type+", "+a.join(" ")+"}"},t.prototype.visitPlaceholder=function(t,e){var 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+'"'),"")},t.prototype.visitTagPlaceholder=function(t,e){var n=this,a=""+t.tag,r=Object.keys(t.attrs).map(function(e){return e+'="'+t.attrs[e]+'"'}).join(" ");return t.isVoid?"<"+a+" "+r+"/>":"<"+a+" "+r+">"+t.children.map(function(t){return t.visit(n)}).join("")+"</"+a+">"},t.prototype.visitIcuPlaceholder=function(t,e){return this.convertToText(this._srcMsg.placeholderToMessage[t.name])},t.prototype.convertToText=function(t){var e,n=this,a=this._digest(t),r=this._mapperFactory?this._mapperFactory(t):null;this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=t,this._i18nNodesByMsgId.hasOwnProperty(a)?(e=this._i18nNodesByMsgId[a],this._mapper=function(t){return r?r.toInternalName(t):t}):(this._missingTranslationStrategy===i.MissingTranslationStrategy.Error?this._addError(t.nodes[0],'Missing translation for message "'+a+'"'):this._console&&this._missingTranslationStrategy===i.MissingTranslationStrategy.Warning&&this._console.warn('Missing translation for message "'+a+'"'),e=t.nodes,this._mapper=function(t){return t});var o=e.map(function(t){return t.visit(n)}).join(""),s=this._contextStack.pop();return this._srcMsg=s.msg,this._mapper=s.mapper,o},t.prototype.convertToValue=function(t){var e=t.replace(this._interpolationConfig.start,"").replace(this._interpolationConfig.end,"");return-1!==this._paramKeys.indexOf(e)?this._params[e]:t},t.prototype._addError=function(t,e){this._errors.push(new C(t.sourceSpan,e))},t}(),Tn=function(){var t={Extract:0,Merge:1};return t[t.Extract]="Extract",t[t.Merge]="Merge",t}(),wn=function(){function t(t){void 0===t&&(t=[]),this._implicitTags=t,this.blockChildren=[]}return t.prototype.extract=function(t,e){return this.init(Tn.Extract,e),t.visit(this,null),this.inI18nBlock&&this._reportError(t,"Unclosed block"),new vn(this.messages,this.errors)},t.prototype.merge=function(t,e,n,a,r){void 0===r&&(r={}),this.init(Tn.Merge,n,a),this.translations=e,this.metadata=r;var i=t.visit(this,null);return this.inI18nBlock&&this._reportError(t,"Unclosed block"),new Rt(i.children,this.errors)},t.prototype.visitExpansionCase=function(t,e){var n=f(this,t.expression,e);if(this.mode===Tn.Merge)return new u(t.value,n,t.sourceSpan,t.valueSourceSpan,t.expSourceSpan)},t.prototype.visitExpansion=function(t,e){this.mayBeAddBlockChildren(t);var n=this.inIcu;this.inIcu||(this.isInTranslatableSection&&this.addMessage([t]),this.inIcu=!0);var a=f(this,t.cases,e);return this.mode===Tn.Merge&&(t=new s(t.switchValue,t.type,a,t.sourceSpan,t.switchValueSourceSpan)),this.inIcu=n,t},t.prototype.visitComment=function(t,e){},t.prototype.visitText=function(t,e){return this.isInTranslatableSection&&this.mayBeAddBlockChildren(t),t},t.prototype.visitElement=function(t,e){var n=this;this.mayBeAddBlockChildren(t),this.depth++;var a=this.inI18nNode,r=this.inImplicitNode,i=[],o=void 0,s=t.attrs.find(function(t){return"i18n"===t.name})||null,u=this._implicitTags.some(function(e){return t.name===e})&&!this.inIcu&&!this.isInTranslatableSection,l=!r&&u;if(this.inImplicitNode=r||u,this.isInTranslatableSection||this.inIcu)(s||l)&&this._reportError(t,"Could not mark an element as translatable inside a translatable section"),this.mode===Tn.Extract&&f(this,t.children);else{if(s||l){this.inI18nNode=!0;var d=this.addMessage(t.children,this.metadata);o=this.translateMessage(t,d)}if(this.mode===Tn.Extract){var p=s||l;p&&this.openTranslatableSection(t),f(this,t.children),p&&this._closeTranslatableSection(t,t.children)}}return this.mode===Tn.Merge&&(o||t.children).forEach(function(t){var a=t.visit(n,e);a&&!n.isInTranslatableSection&&(i=i.concat(a))}),this.depth--,this.inI18nNode=a,this.inImplicitNode=r,this.mode===Tn.Merge?new c(t.name,[],i,t.sourceSpan,t.startSourceSpan,t.endSourceSpan):null},t.prototype.visitAttribute=function(t,e){throw new Error("unreachable code")},t.prototype.init=function(t,e,n){void 0===n&&(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){var e=new mn(gn,t);return function(t,n,a,r){return e.toI18nMessage(t,n,a,r)}}(e),this.params=n},t.prototype.addMessage=function(t,e){var n=void 0===e?{}:e,a=n.meaning,r=n.description,i=n.id;if(0===t.length||1===t.length&&t[0]instanceof l&&!t[0].value)return null;var o=this.createI18nMessage(t,void 0===a?"":a,void 0===r?"":r,void 0===i?"":i);return this.messages.push(o),o},t.prototype.translateMessage=function(t,e){if(e&&this.mode===Tn.Merge){var n=this.translations.get(e,this.params);if(n)return n;this._reportError(t,'Translation unavailable for message id="'+this.translations.digest(e)+'"')}return[]},t.prototype.mayBeAddBlockChildren=function(t){this.inI18nBlock&&!this.inIcu&&this.depth===this.blockStartDepth&&this.blockChildren.push(t)},t.prototype.openTranslatableSection=function(t){this.isInTranslatableSection?this._reportError(t,"Unexpected section start"):this.msgCountAtSectionStart=this.messages.length},Object.defineProperty(t.prototype,"isInTranslatableSection",{get:function(){return void 0!==this.msgCountAtSectionStart},enumerable:!0,configurable:!0}),t.prototype._closeTranslatableSection=function(t,e){if(this.isInTranslatableSection){var n=this.msgCountAtSectionStart;if(1===e.reduce(function(t,e){return t+(e instanceof d?0:1)},0))for(var a=this.messages.length-1;a>=n;a--){var r=this.messages[a].nodes;if(!(1===r.length&&r[0]instanceof h)){this.messages.splice(a,1);break}}this.msgCountAtSectionStart=void 0}else this._reportError(t,"Unexpected section end")},t.prototype._reportError=function(t,e){this.errors.push(new C(t.sourceSpan,e))},t}(),Sn=new i.InjectionToken("MissingTranslationStrategy"),On=function(){return function(t,e,n,a){var r,o;void 0===a&&(a=i.MissingTranslationStrategy.Warning);var s=function(t){return null};switch(t=(t||"xlf").toLowerCase()){case"xtb":r=be,o=ye,s=ve;break;case"xliff2":case"xlf2":r=fe,o=pe;break;case"xliff":case"xlf":r=ue,o=le;break;default:throw new Error("Unknown translations format "+t)}var u=new yn,l=_n.load(e,"i18n",o,s,r,a);return function(t,e){void 0===e&&(e={});var a="string"==typeof t?t:t.value,r={};"object"==typeof t&&(r.id=t.id,r.meaning=t.meaning,r.description=t.description);var i=u.parse(a,"",!0);if(i.errors.length)throw i.errors;return function(t,e,n){return t.map(function(t){return t.visit(new Ht(e,n),null)})}(u.mergeTranslations(i.rootNodes,l,e,r,["wrapper"]).rootNodes,n,e).join("")}}}()},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_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,o){var s=t+" ";return 1===t?s+n(0,e,i[0],o):e?s+(a(t)?r(i)[1]:r(i)[0]):o?s+r(i)[1]:s+(a(t)?r(i)[1]:r(i)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_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\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".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:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(t,e,n,a){return e?"kelios sekund\u0117s":a?"keli\u0173 sekund\u017ei\u0173":"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("CcnG"),r=n("Ip0R"),i=n("xdbM");n("dgut"),n("Fgil"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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 s(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{chartCanvasRef:0}),a["\u0275qud"](402653184,2,{chartTooltipRef:0}),(t()(),a["\u0275eld"](2,0,null,null,5,"div",[["class","chart-container"]],null,null,null,null,null)),a["\u0275did"](3,278528,null,0,r.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),(t()(),a["\u0275eld"](4,0,[[1,0],["sparkCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["\u0275did"](5,737280,null,0,i.BaseChartDirective,[a.ElementRef],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["\u0275eld"](6,0,[[2,0],["sparkTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,0,"table",[],null,null,null,null,null))],function(t,e){var n=e.component;t(e,3,0,n.style),t(e,5,0,n.datasets,n.labels,n.options,"line",n.colors)},null)}},"K/tc":function(t,e,n){!function(t){"use strict";n("wd/R").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\xf4re 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}})}()},K2E3:function(t,e,n){"use strict";var a=n("6ww4"),r=n("RDha"),i=function(t){r.extend(this,t),this.initialize.apply(this,arguments)};r.extend(i.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=r.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,r=e._start,i=e._view;return n&&1!==t?(i||(i=e._view={}),r||(r=e._start={}),function(t,e,n,r){var i,o,s,u,l,c,d,f,p,h=Object.keys(n);for(i=0,o=h.length;i<o;++i)if(c=n[s=h[i]],e.hasOwnProperty(s)||(e[s]=c),(u=e[s])!==c&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=u),(d=typeof c)==typeof(l=t[s]))if("string"===d){if((f=a(l)).valid&&(p=a(c)).valid){e[s]=p.mix(f,r).rgbString();continue}}else if("number"===d&&isFinite(l)&&isFinite(c)){e[s]=l+(c-l)*r;continue}e[s]=c}}(r,i,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return r.isNumber(this._model.x)&&r.isNumber(this._model.y)}}),i.extend=r.inherits,t.exports=i},K9Ia:function(t,e,n){"use strict";n.d(e,"b",function(){return c}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("6blF"),i=n("FFOo"),o=n("pugT"),s=n("8g8A"),u=n("uMaO"),l=n("L/V9"),c=function(t){function e(e){var n=t.call(this,e)||this;return n.destination=e,n}return a.__extends(e,t),e}(i.a),d=function(t){function e(){var e=t.call(this)||this;return e.observers=[],e.closed=!1,e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return a.__extends(e,t),e.prototype[l.a]=function(){return new c(this)},e.prototype.lift=function(t){var e=new f(this,this);return e.operator=t,e},e.prototype.next=function(t){if(this.closed)throw new s.a;if(!this.isStopped)for(var e=this.observers,n=e.length,a=e.slice(),r=0;r<n;r++)a[r].next(t)},e.prototype.error=function(t){if(this.closed)throw new s.a;this.hasError=!0,this.thrownError=t,this.isStopped=!0;for(var e=this.observers,n=e.length,a=e.slice(),r=0;r<n;r++)a[r].error(t);this.observers.length=0},e.prototype.complete=function(){if(this.closed)throw new s.a;this.isStopped=!0;for(var t=this.observers,e=t.length,n=t.slice(),a=0;a<e;a++)n[a].complete();this.observers.length=0},e.prototype.unsubscribe=function(){this.isStopped=!0,this.closed=!0,this.observers=null},e.prototype._trySubscribe=function(e){if(this.closed)throw new s.a;return t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){if(this.closed)throw new s.a;return this.hasError?(t.error(this.thrownError),o.a.EMPTY):this.isStopped?(t.complete(),o.a.EMPTY):(this.observers.push(t),new u.a(this,t))},e.prototype.asObservable=function(){var t=new r.a;return t.source=this,t},e.create=function(t,e){return new f(t,e)},e}(r.a),f=function(t){function e(e,n){var a=t.call(this)||this;return a.destination=e,a.source=n,a}return a.__extends(e,t),e.prototype.next=function(t){var e=this.destination;e&&e.next&&e.next(t)},e.prototype.error=function(t){var e=this.destination;e&&e.error&&this.destination.error(t)},e.prototype.complete=function(){var t=this.destination;t&&t.complete&&this.destination.complete()},e.prototype._subscribe=function(t){return this.source?this.source.subscribe(t):o.a.EMPTY},e}(d)},KAQS:function(t,e,n){"use strict";var a=n("RDha");t.exports=function(t){var e=["push","pop","shift","splice","unshift"];function n(t,n){var a=t._chartjs;if(a){var r=a.listeners,i=r.indexOf(n);-1!==i&&r.splice(i,1),r.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},a.extend(t.DatasetController.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]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(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,r,i=this,o=i.getDataset(),s=o.data||(o.data=[]);i._data!==s&&(i._data&&n(i._data,i),r=i,(t=s)._chartjs?t._chartjs.listeners.push(r):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[r]}}),e.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),r=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),i=r.apply(this,e);return a.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),i}})})),i._data=s),i.resyncElements()},update:a.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){a.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,r=t.custom||{},i=a.valueAtIndexOrDefault,o=a.getHoverColor,s=t._model;t.$previousStyle={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth},s.backgroundColor=r.hoverBackgroundColor?r.hoverBackgroundColor:i(e.hoverBackgroundColor,n,o(s.backgroundColor)),s.borderColor=r.hoverBorderColor?r.hoverBorderColor:i(e.hoverBorderColor,n,o(s.borderColor)),s.borderWidth=r.hoverBorderWidth?r.hoverBorderWidth:i(e.hoverBorderWidth,n,s.borderWidth)},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(){this.insertElements(this.getDataset().data.length-1,arguments.length)},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.DatasetController.extend=a.inherits}},KQya:function(t,e,n){"use strict";var a=n("mrSG"),r=1,i={},o=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return a.__extends(e,t),e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0?t.prototype.requestAsyncId.call(this,e,n,a):(e.actions.push(this),e.scheduled||(e.scheduled=(o=e.flush.bind(e,null),s=r++,i[s]=o,Promise.resolve().then(function(){return function(t){var e=i[t];e&&e()}(s)}),s)));var o,s},e.prototype.recycleAsyncId=function(e,n,a){if(void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,a);0===e.actions.length&&(delete i[n],e.scheduled=void 0)},e}(n("h9Dq").a),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,a=-1,r=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++a<r&&(t=n.shift()));if(this.active=!1,e){for(;++a<r&&(t=n.shift());)t.unsubscribe();throw e}},e}(n("CS9Q").a);n.d(e,"a",function(){return u});var u=new s(o)},KSF8:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".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\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] 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\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n r\u1ed3i l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}()},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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [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("CcnG");n("Z21x"),n("Ip0R"),n("sne2"),n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var r=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function i(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["\xa0\n"])),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-sm btn-default 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["\u0275ted"](2,null,[" ","\n"]))],null,function(t,e){t(e,2,0,e.component.name)})}},KhEm:function(t,e,n){"use strict";n.d(e,"a",function(){return u}),n.d(e,"b",function(){return c});var a=n("mrSG"),r=n("K9Ia"),i=n("6blF"),o=(n("FFOo"),n("pugT")),s=n("yGWI"),u=function(t){function e(e,n){var a=t.call(this)||this;return a.source=e,a.subjectFactory=n,a._refCount=0,a._isComplete=!1,a}return a.__extends(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype.connect=function(){var t=this._connection;return t||(this._isComplete=!1,(t=this._connection=new o.a).add(this.source.subscribe(new d(this.getSubject(),this))),t.closed?(this._connection=null,t=o.a.EMPTY):this._connection=t),t},e.prototype.refCount=function(){return Object(s.a)()(this)},e}(i.a),l=u.prototype,c={operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:l._subscribe},_isComplete:{value:l._isComplete,writable:!0},getSubject:{value:l.getSubject},connect:{value:l.connect},refCount:{value:l.refCount}},d=function(t){function e(e,n){var a=t.call(this,e)||this;return a.connectable=n,a}return a.__extends(e,t),e.prototype._error=function(e){this._unsubscribe(),t.prototype._error.call(this,e)},e.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}},e}(r.b)},"L/V9":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()},L5sC:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnCellTreeToggle=function(){return a([r.Directive({selector:"[ngx-datatable-tree-toggle]"})],function(t){this.template=t})}()},LBXl:function(t,e,n){"use strict";function a(t){return Error.call(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(t,e){return e+1+") "+t.toString()}).join("\n  "):"",this.name="UnsubscriptionError",this.errors=t,this}a.prototype=Object.create(Error.prototype),e.UnsubscriptionError=a},LceX:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return d}),n.d(e,"c",function(){return i}),n.d(e,"d",function(){return o}),n.d(e,"e",function(){return s}),n.d(e,"f",function(){return u}),n.d(e,"g",function(){return l}),n.d(e,"h",function(){return c});var a=n("sne2"),r=(n("eTJe"),n("n/D3"),n("V3my"),n("ZEkX"),function(){return function(){}}()),i={breadcrumbs:"Users"},o={breadcrumbs:a.a.CREATE},s={breadcrumbs:a.a.EDIT},u={breadcrumbs:"Roles"},l={breadcrumbs:a.a.CREATE},c={breadcrumbs:a.a.EDIT},d=function(){return function(){}}()},Loxo:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".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:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}})}()},LvDl:function(t,e,n){(function(t){var a;(function(){var r,i=200,o="Expected a function",s="__lodash_placeholder__",u=1,l=2,c=4,d=1,f=2,p=1,h=2,g=4,m=8,b=16,y=32,v=64,_=128,x=256,T=512,w=800,S=16,O=1/0,C=9007199254740991,k=1.7976931348623157e308,I=NaN,D=4294967295,R=D-1,N=D>>>1,A=[["ary",_],["bind",p],["bindKey",h],["curry",m],["curryRight",b],["flip",T],["partial",y],["partialRight",v],["rearg",x]],E="[object Arguments]",L="[object Array]",P="[object AsyncFunction]",M="[object Boolean]",j="[object Date]",q="[object DOMException]",F="[object Error]",z="[object Function]",Y="[object GeneratorFunction]",H="[object Map]",G="[object Number]",V="[object Null]",B="[object Object]",U="[object Proxy]",W="[object RegExp]",K="[object Set]",$="[object String]",Z="[object Symbol]",X="[object Undefined]",J="[object WeakMap]",Q="[object ArrayBuffer]",tt="[object DataView]",et="[object Float32Array]",nt="[object Float64Array]",at="[object Int8Array]",rt="[object Int16Array]",it="[object Int32Array]",ot="[object Uint8Array]",st="[object Uint8ClampedArray]",ut="[object Uint16Array]",lt="[object Uint32Array]",ct=/\b__p \+= '';/g,dt=/\b(__p \+=) '' \+/g,ft=/(__e\(.*?\)|\b__t\)) \+\n'';/g,pt=/&(?:amp|lt|gt|quot|#39);/g,ht=/[&<>"']/g,gt=RegExp(pt.source),mt=RegExp(ht.source),bt=/<%-([\s\S]+?)%>/g,yt=/<%([\s\S]+?)%>/g,vt=/<%=([\s\S]+?)%>/g,_t=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xt=/^\w*$/,Tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wt=/[\\^$.*+?()[\]{}|]/g,St=RegExp(wt.source),Ot=/^\s+|\s+$/g,Ct=/^\s+/,kt=/\s+$/,It=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Dt=/\{\n\/\* \[wrapped with (.+)\] \*/,Rt=/,? & /,Nt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/\\(\\)?/g,Et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Lt=/\w*$/,Pt=/^[-+]0x[0-9a-f]+$/i,Mt=/^0b[01]+$/i,jt=/^\[object .+?Constructor\]$/,qt=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,zt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Yt=/($^)/,Ht=/['\n\r\u2028\u2029\\]/g,Gt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Vt="\\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",Bt="["+Vt+"]",Ut="["+Gt+"]",Wt="\\d+",Kt="[a-z\\xdf-\\xf6\\xf8-\\xff]",$t="[^\\ud800-\\udfff"+Vt+Wt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",Zt="\\ud83c[\\udffb-\\udfff]",Xt="[^\\ud800-\\udfff]",Jt="(?:\\ud83c[\\udde6-\\uddff]){2}",Qt="[\\ud800-\\udbff][\\udc00-\\udfff]",te="[A-Z\\xc0-\\xd6\\xd8-\\xde]",ee="(?:"+Kt+"|"+$t+")",ne="(?:"+te+"|"+$t+")",ae="(?:"+Ut+"|"+Zt+")?",re="[\\ufe0e\\ufe0f]?"+ae+"(?:\\u200d(?:"+[Xt,Jt,Qt].join("|")+")[\\ufe0e\\ufe0f]?"+ae+")*",ie="(?:"+["[\\u2700-\\u27bf]",Jt,Qt].join("|")+")"+re,oe="(?:"+[Xt+Ut+"?",Ut,Jt,Qt,"[\\ud800-\\udfff]"].join("|")+")",se=RegExp("['\u2019]","g"),ue=RegExp(Ut,"g"),le=RegExp(Zt+"(?="+Zt+")|"+oe+re,"g"),ce=RegExp([te+"?"+Kt+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[Bt,te,"$"].join("|")+")",ne+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[Bt,te+ee,"$"].join("|")+")",te+"?"+ee+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",te+"+(?:['\u2019](?: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_])",Wt,ie].join("|"),"g"),de=RegExp("[\\u200d\\ud800-\\udfff"+Gt+"\\ufe0e\\ufe0f]"),fe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,pe=["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"],he=-1,ge={};ge[et]=ge[nt]=ge[at]=ge[rt]=ge[it]=ge[ot]=ge[st]=ge[ut]=ge[lt]=!0,ge[E]=ge[L]=ge[Q]=ge[M]=ge[tt]=ge[j]=ge[F]=ge[z]=ge[H]=ge[G]=ge[B]=ge[W]=ge[K]=ge[$]=ge[J]=!1;var me={};me[E]=me[L]=me[Q]=me[tt]=me[M]=me[j]=me[et]=me[nt]=me[at]=me[rt]=me[it]=me[H]=me[G]=me[B]=me[W]=me[K]=me[$]=me[Z]=me[ot]=me[st]=me[ut]=me[lt]=!0,me[F]=me[z]=me[J]=!1;var be={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ye=parseFloat,ve=parseInt,_e="object"==typeof global&&global&&global.Object===Object&&global,xe="object"==typeof self&&self&&self.Object===Object&&self,Te=_e||xe||Function("return this")(),we=e&&!e.nodeType&&e,Se=we&&"object"==typeof t&&t&&!t.nodeType&&t,Oe=Se&&Se.exports===we,Ce=Oe&&_e.process,ke=function(){try{return Se&&Se.require&&Se.require("util").types||Ce&&Ce.binding&&Ce.binding("util")}catch(t){}}(),Ie=ke&&ke.isArrayBuffer,De=ke&&ke.isDate,Re=ke&&ke.isMap,Ne=ke&&ke.isRegExp,Ae=ke&&ke.isSet,Ee=ke&&ke.isTypedArray;function Le(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 Pe(t,e,n,a){for(var r=-1,i=null==t?0:t.length;++r<i;){var o=t[r];e(a,o,n(o),t)}return a}function Me(t,e){for(var n=-1,a=null==t?0:t.length;++n<a&&!1!==e(t[n],n,t););return t}function je(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 qe(t,e){for(var n=-1,a=null==t?0:t.length,r=0,i=[];++n<a;){var o=t[n];e(o,n,t)&&(i[r++]=o)}return i}function Fe(t,e){return!(null==t||!t.length)&&$e(t,e,0)>-1}function ze(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 Ye(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 He(t,e){for(var n=-1,a=e.length,r=t.length;++n<a;)t[r+n]=e[n];return t}function Ge(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 Ve(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 Be(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 Ue=Qe("length");function We(t,e,n){var a;return n(t,function(t,n,r){if(e(t,n,r))return a=n,!1}),a}function Ke(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 $e(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):Ke(t,Xe,n)}function Ze(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 Je(t,e){var n=null==t?0:t.length;return n?nn(t,e)/n:I}function Qe(t){return function(e){return null==e?r:e[t]}}function tn(t){return function(e){return null==t?r:t[e]}}function en(t,e,n,a,r){return r(t,function(t,r,i){n=a?(a=!1,t):e(n,t,r,i)}),n}function nn(t,e){for(var n,a=-1,i=t.length;++a<i;){var o=e(t[a]);o!==r&&(n=n===r?o:n+o)}return n}function an(t,e){for(var n=-1,a=Array(t);++n<t;)a[n]=e(n);return a}function rn(t){return function(e){return t(e)}}function on(t,e){return Ye(e,function(e){return t[e]})}function sn(t,e){return t.has(e)}function un(t,e){for(var n=-1,a=t.length;++n<a&&$e(e,t[n],0)>-1;);return n}function ln(t,e){for(var n=t.length;n--&&$e(e,t[n],0)>-1;);return n}var cn=tn({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),dn=tn({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function fn(t){return"\\"+be[t]}function pn(t){return de.test(t)}function hn(t){var e=-1,n=Array(t.size);return t.forEach(function(t,a){n[++e]=[a,t]}),n}function gn(t,e){return function(n){return t(e(n))}}function mn(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var o=t[n];o!==e&&o!==s||(t[n]=s,i[r++]=n)}return i}function bn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function yn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function vn(t){return pn(t)?function(t){for(var e=le.lastIndex=0;le.test(t);)++e;return e}(t):Ue(t)}function _n(t){return pn(t)?function(t){return t.match(le)||[]}(t):function(t){return t.split("")}(t)}var xn=tn({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),Tn=function t(e){var n,a=(e=null==e?Te:Tn.defaults(Te.Object(),e,Tn.pick(Te,pe))).Array,Gt=e.Date,Vt=e.Error,Bt=e.Function,Ut=e.Math,Wt=e.Object,Kt=e.RegExp,$t=e.String,Zt=e.TypeError,Xt=a.prototype,Jt=Wt.prototype,Qt=e["__core-js_shared__"],te=Bt.prototype.toString,ee=Jt.hasOwnProperty,ne=0,ae=(n=/[^.]+$/.exec(Qt&&Qt.keys&&Qt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",re=Jt.toString,ie=te.call(Wt),oe=Te._,le=Kt("^"+te.call(ee).replace(wt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),de=Oe?e.Buffer:r,be=e.Symbol,_e=e.Uint8Array,xe=de?de.allocUnsafe:r,we=gn(Wt.getPrototypeOf,Wt),Se=Wt.create,Ce=Jt.propertyIsEnumerable,ke=Xt.splice,Ue=be?be.isConcatSpreadable:r,tn=be?be.iterator:r,wn=be?be.toStringTag:r,Sn=function(){try{var t=Ti(Wt,"defineProperty");return t({},"",{}),t}catch(e){}}(),On=e.clearTimeout!==Te.clearTimeout&&e.clearTimeout,Cn=Gt&&Gt.now!==Te.Date.now&&Gt.now,kn=e.setTimeout!==Te.setTimeout&&e.setTimeout,In=Ut.ceil,Dn=Ut.floor,Rn=Wt.getOwnPropertySymbols,Nn=de?de.isBuffer:r,An=e.isFinite,En=Xt.join,Ln=gn(Wt.keys,Wt),Pn=Ut.max,Mn=Ut.min,jn=Gt.now,qn=e.parseInt,Fn=Ut.random,zn=Xt.reverse,Yn=Ti(e,"DataView"),Hn=Ti(e,"Map"),Gn=Ti(e,"Promise"),Vn=Ti(e,"Set"),Bn=Ti(e,"WeakMap"),Un=Ti(Wt,"create"),Wn=Bn&&new Bn,Kn={},$n=Ki(Yn),Zn=Ki(Hn),Xn=Ki(Gn),Jn=Ki(Vn),Qn=Ki(Bn),ta=be?be.prototype:r,ea=ta?ta.valueOf:r,na=ta?ta.toString:r;function aa(t){if(fs(t)&&!es(t)&&!(t instanceof sa)){if(t instanceof oa)return t;if(ee.call(t,"__wrapped__"))return $i(t)}return new oa(t)}var ra=function(){function t(){}return function(e){if(!ds(e))return{};if(Se)return Se(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function ia(){}function oa(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function sa(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=D,this.__views__=[]}function ua(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 la(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 ca(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 da(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new ca;++e<n;)this.add(t[e])}function fa(t){var e=this.__data__=new la(t);this.size=e.size}function pa(t,e){var n=es(t),a=!n&&ts(t),r=!n&&!a&&is(t),i=!n&&!a&&!r&&_s(t),o=n||a||r||i,s=o?an(t.length,$t):[],u=s.length;for(var l in t)!e&&!ee.call(t,l)||o&&("length"==l||r&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Di(l,u))||s.push(l);return s}function ha(t){var e=t.length;return e?t[ur(0,e-1)]:r}function ga(t,e,n){(n===r||Xo(t[e],n))&&(n!==r||e in t)||_a(t,e,n)}function ma(t,e,n){var a=t[e];ee.call(t,e)&&Xo(a,n)&&(n!==r||e in t)||_a(t,e,n)}function ba(t,e){for(var n=t.length;n--;)if(Xo(t[n][0],e))return n;return-1}function ya(t,e,n,a){return ka(t,function(t,r,i){e(a,t,n(t),i)}),a}function va(t,e){return t&&Yr(e,Hs(e),t)}function _a(t,e,n){"__proto__"==e&&Sn?Sn(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function xa(t,e){for(var n=-1,i=e.length,o=a(i),s=null==t;++n<i;)o[n]=s?r:js(t,e[n]);return o}function Ta(t,e,n){return t==t&&(n!==r&&(t=t<=n?t:n),e!==r&&(t=t>=e?t:e)),t}function wa(t,e,n,a,i,o){var s,d=e&u,f=e&l,p=e&c;if(n&&(s=i?n(t,a,i,o):n(t)),s!==r)return s;if(!ds(t))return t;var h=es(t);if(h){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&ee.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!d)return zr(t,s)}else{var g=Oi(t),m=g==z||g==Y;if(is(t))return Lr(t,d);if(g==B||g==E||m&&!i){if(s=f||m?{}:ki(t),!d)return f?function(t,e){return Yr(t,Si(t),e)}(t,function(e,n){return e&&Yr(t,Gs(t),e)}(s)):function(t,e){return Yr(t,wi(t),e)}(t,va(s,t))}else{if(!me[g])return i?t:{};s=function(t,e,n){var a,r,i=t.constructor;switch(e){case Q:return Pr(t);case M:case j:return new i(+t);case tt:return function(t,e){var n=e?Pr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case et:case nt:case at:case rt:case it:case ot:case st:case ut:case lt:return Mr(t,n);case H:return new i;case G:case $:return new i(t);case W:return(r=new(a=t).constructor(a.source,Lt.exec(a))).lastIndex=a.lastIndex,r;case K:return new i;case Z:return ea?Wt(ea.call(t)):{}}}(t,g,d)}}o||(o=new fa);var b=o.get(t);if(b)return b;o.set(t,s),bs(t)?t.forEach(function(a){s.add(wa(a,e,n,a,t,o))}):ps(t)&&t.forEach(function(a,r){s.set(r,wa(a,e,n,r,t,o))});var y=h?r:(p?f?gi:hi:f?Gs:Hs)(t);return Me(y||t,function(a,r){y&&(a=t[r=a]),ma(s,r,wa(a,e,n,r,t,o))}),s}function Sa(t,e,n){var a=n.length;if(null==t)return!a;for(t=Wt(t);a--;){var i=n[a],o=t[i];if(o===r&&!(i in t)||!(0,e[i])(o))return!1}return!0}function Oa(t,e,n){if("function"!=typeof t)throw new Zt(o);return Yi(function(){t.apply(r,n)},e)}function Ca(t,e,n,a){var r=-1,o=Fe,s=!0,u=t.length,l=[],c=e.length;if(!u)return l;n&&(e=Ye(e,rn(n))),a?(o=ze,s=!1):e.length>=i&&(o=sn,s=!1,e=new da(e));t:for(;++r<u;){var d=t[r],f=null==n?d:n(d);if(d=a||0!==d?d:0,s&&f==f){for(var p=c;p--;)if(e[p]===f)continue t;l.push(d)}else o(e,f,a)||l.push(d)}return l}aa.templateSettings={escape:bt,evaluate:yt,interpolate:vt,variable:"",imports:{_:aa}},(aa.prototype=ia.prototype).constructor=aa,(oa.prototype=ra(ia.prototype)).constructor=oa,(sa.prototype=ra(ia.prototype)).constructor=sa,ua.prototype.clear=function(){this.__data__=Un?Un(null):{},this.size=0},ua.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},ua.prototype.get=function(t){var e=this.__data__;if(Un){var n=e[t];return"__lodash_hash_undefined__"===n?r:n}return ee.call(e,t)?e[t]:r},ua.prototype.has=function(t){var e=this.__data__;return Un?e[t]!==r:ee.call(e,t)},ua.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Un&&e===r?"__lodash_hash_undefined__":e,this},la.prototype.clear=function(){this.__data__=[],this.size=0},la.prototype.delete=function(t){var e=this.__data__,n=ba(e,t);return!(n<0||(n==e.length-1?e.pop():ke.call(e,n,1),--this.size,0))},la.prototype.get=function(t){var e=this.__data__,n=ba(e,t);return n<0?r:e[n][1]},la.prototype.has=function(t){return ba(this.__data__,t)>-1},la.prototype.set=function(t,e){var n=this.__data__,a=ba(n,t);return a<0?(++this.size,n.push([t,e])):n[a][1]=e,this},ca.prototype.clear=function(){this.size=0,this.__data__={hash:new ua,map:new(Hn||la),string:new ua}},ca.prototype.delete=function(t){var e=_i(this,t).delete(t);return this.size-=e?1:0,e},ca.prototype.get=function(t){return _i(this,t).get(t)},ca.prototype.has=function(t){return _i(this,t).has(t)},ca.prototype.set=function(t,e){var n=_i(this,t),a=n.size;return n.set(t,e),this.size+=n.size==a?0:1,this},da.prototype.add=da.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},da.prototype.has=function(t){return this.__data__.has(t)},fa.prototype.clear=function(){this.__data__=new la,this.size=0},fa.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},fa.prototype.get=function(t){return this.__data__.get(t)},fa.prototype.has=function(t){return this.__data__.has(t)},fa.prototype.set=function(t,e){var n=this.__data__;if(n instanceof la){var a=n.__data__;if(!Hn||a.length<i-1)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new ca(a)}return n.set(t,e),this.size=n.size,this};var ka=Vr(Pa),Ia=Vr(Ma,!0);function Da(t,e){var n=!0;return ka(t,function(t,a,r){return n=!!e(t,a,r)}),n}function Ra(t,e,n){for(var a=-1,i=t.length;++a<i;){var o=t[a],s=e(o);if(null!=s&&(u===r?s==s&&!vs(s):n(s,u)))var u=s,l=o}return l}function Na(t,e){var n=[];return ka(t,function(t,a,r){e(t,a,r)&&n.push(t)}),n}function Aa(t,e,n,a,r){var i=-1,o=t.length;for(n||(n=Ii),r||(r=[]);++i<o;){var s=t[i];e>0&&n(s)?e>1?Aa(s,e-1,n,a,r):He(r,s):a||(r[r.length]=s)}return r}var Ea=Br(),La=Br(!0);function Pa(t,e){return t&&Ea(t,e,Hs)}function Ma(t,e){return t&&La(t,e,Hs)}function ja(t,e){return qe(e,function(e){return us(t[e])})}function qa(t,e){for(var n=0,a=(e=Rr(e,t)).length;null!=t&&n<a;)t=t[Wi(e[n++])];return n&&n==a?t:r}function Fa(t,e,n){var a=e(t);return es(t)?a:He(a,n(t))}function za(t){return null==t?t===r?X:V:wn&&wn in Wt(t)?function(t){var e=ee.call(t,wn),n=t[wn];try{t[wn]=r;var a=!0}catch(o){}var i=re.call(t);return a&&(e?t[wn]=n:delete t[wn]),i}(t):function(t){return re.call(t)}(t)}function Ya(t,e){return t>e}function Ha(t,e){return null!=t&&ee.call(t,e)}function Ga(t,e){return null!=t&&e in Wt(t)}function Va(t,e,n){for(var i=n?ze:Fe,o=t[0].length,s=t.length,u=s,l=a(s),c=1/0,d=[];u--;){var f=t[u];u&&e&&(f=Ye(f,rn(e))),c=Mn(f.length,c),l[u]=!n&&(e||o>=120&&f.length>=120)?new da(u&&f):r}f=t[0];var p=-1,h=l[0];t:for(;++p<o&&d.length<c;){var g=f[p],m=e?e(g):g;if(g=n||0!==g?g:0,!(h?sn(h,m):i(d,m,n))){for(u=s;--u;){var b=l[u];if(!(b?sn(b,m):i(t[u],m,n)))continue t}h&&h.push(m),d.push(g)}}return d}function Ba(t,e,n){var a=null==(t=qi(t,e=Rr(e,t)))?t:t[Wi(oo(e))];return null==a?r:Le(a,t,n)}function Ua(t){return fs(t)&&za(t)==E}function Wa(t,e,n,a,i){return t===e||(null==t||null==e||!fs(t)&&!fs(e)?t!=t&&e!=e:function(t,e,n,a,i,o){var s=es(t),u=es(e),l=s?L:Oi(t),c=u?L:Oi(e),p=(l=l==E?B:l)==B,h=(c=c==E?B:c)==B,g=l==c;if(g&&is(t)){if(!is(e))return!1;s=!0,p=!1}if(g&&!p)return o||(o=new fa),s||_s(t)?fi(t,e,n,a,i,o):function(t,e,n,a,r,i,o){switch(l){case tt:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case Q:return!(t.byteLength!=e.byteLength||!i(new _e(t),new _e(e)));case M:case j:case G:return Xo(+t,+e);case F:return t.name==e.name&&t.message==e.message;case W:case $:return t==e+"";case H:var s=hn;case K:if(s||(s=bn),t.size!=e.size&&!(a&d))return!1;var u=o.get(t);if(u)return u==e;a|=f,o.set(t,e);var c=fi(s(t),s(e),a,r,i,o);return o.delete(t),c;case Z:if(ea)return ea.call(t)==ea.call(e)}return!1}(t,e,0,n,a,i,o);if(!(n&d)){var m=p&&ee.call(t,"__wrapped__"),b=h&&ee.call(e,"__wrapped__");if(m||b){var y=m?t.value():t,v=b?e.value():e;return o||(o=new fa),i(y,v,n,a,o)}}return!!g&&(o||(o=new fa),function(t,e,n,a,i,o){var s=n&d,u=hi(t),l=u.length;if(l!=hi(e).length&&!s)return!1;for(var c=l;c--;){var f=u[c];if(!(s?f in e:ee.call(e,f)))return!1}var p=o.get(t);if(p&&o.get(e))return p==e;var h=!0;o.set(t,e),o.set(e,t);for(var g=s;++c<l;){var m=t[f=u[c]],b=e[f];if(a)var y=s?a(b,m,f,e,t,o):a(m,b,f,t,e,o);if(!(y===r?m===b||i(m,b,n,a,o):y)){h=!1;break}g||(g="constructor"==f)}if(h&&!g){var v=t.constructor,_=e.constructor;v!=_&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof _&&_ instanceof _)&&(h=!1)}return o.delete(t),o.delete(e),h}(t,e,n,a,i,o))}(t,e,n,a,Wa,i))}function Ka(t,e,n,a){var i=n.length,o=i,s=!a;if(null==t)return!o;for(t=Wt(t);i--;){var u=n[i];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++i<o;){var l=(u=n[i])[0],c=t[l],p=u[1];if(s&&u[2]){if(c===r&&!(l in t))return!1}else{var h=new fa;if(a)var g=a(c,p,l,t,e,h);if(!(g===r?Wa(p,c,d|f,a,h):g))return!1}}return!0}function $a(t){return!(!ds(t)||(e=t,ae&&ae in e))&&(us(t)?le:jt).test(Ki(t));var e}function Za(t){return"function"==typeof t?t:null==t?hu:"object"==typeof t?es(t)?er(t[0],t[1]):tr(t):wu(t)}function Xa(t){if(!Li(t))return Ln(t);var e=[];for(var n in Wt(t))ee.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Ja(t,e){return t<e}function Qa(t,e){var n=-1,r=as(t)?a(t.length):[];return ka(t,function(t,a,i){r[++n]=e(t,a,i)}),r}function tr(t){var e=xi(t);return 1==e.length&&e[0][2]?Mi(e[0][0],e[0][1]):function(n){return n===t||Ka(n,t,e)}}function er(t,e){return Ni(t)&&Pi(e)?Mi(Wi(t),e):function(n){var a=js(n,t);return a===r&&a===e?qs(n,t):Wa(e,a,d|f)}}function nr(t,e,n,a,i){t!==e&&Ea(e,function(o,s){if(i||(i=new fa),ds(o))!function(t,e,n,a,i,o,s){var u=Fi(t,n),l=Fi(e,n),c=s.get(l);if(c)ga(t,n,c);else{var d=o?o(u,l,n+"",t,e,s):r,f=d===r;if(f){var p=es(l),h=!p&&is(l),g=!p&&!h&&_s(l);d=l,p||h||g?es(u)?d=u:rs(u)?d=zr(u):h?(f=!1,d=Lr(l,!0)):g?(f=!1,d=Mr(l,!0)):d=[]:gs(l)||ts(l)?(d=u,ts(u)?d=Is(u):ds(u)&&!us(u)||(d=ki(l))):f=!1}f&&(s.set(l,d),i(d,l,a,o,s),s.delete(l)),ga(t,n,d)}}(t,e,s,n,nr,a,i);else{var u=a?a(Fi(t,s),o,s+"",t,e,i):r;u===r&&(u=o),ga(t,s,u)}},Gs)}function ar(t,e){var n=t.length;if(n)return Di(e+=e<0?n:0,n)?t[e]:r}function rr(t,e,n){var a=-1;return e=Ye(e.length?e:[hu],rn(vi())),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,o=r.length,s=n.length;++a<o;){var u=jr(r[a],i[a]);if(u)return a>=s?u:u*("desc"==n[a]?-1:1)}return t.index-e.index}(t,e,n)});a--;)t[a]=t[a].value;return t}(Qa(t,function(t,n,r){return{criteria:Ye(e,function(e){return e(t)}),index:++a,value:t}}))}function ir(t,e,n){for(var a=-1,r=e.length,i={};++a<r;){var o=e[a],s=qa(t,o);n(s,o)&&dr(i,Rr(o,t),s)}return i}function or(t,e,n,a){var r=a?Ze:$e,i=-1,o=e.length,s=t;for(t===e&&(e=zr(e)),n&&(s=Ye(t,rn(n)));++i<o;)for(var u=0,l=e[i],c=n?n(l):l;(u=r(s,c,u,a))>-1;)s!==t&&ke.call(s,u,1),ke.call(t,u,1);return t}function sr(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;Di(r)?ke.call(t,r,1):Tr(t,r)}}return t}function ur(t,e){return t+Dn(Fn()*(e-t+1))}function lr(t,e){var n="";if(!t||e<1||e>C)return n;do{e%2&&(n+=t),(e=Dn(e/2))&&(t+=t)}while(e);return n}function cr(t,e){return Hi(ji(t,e,hu),t+"")}function dr(t,e,n,a){if(!ds(t))return t;for(var i=-1,o=(e=Rr(e,t)).length,s=o-1,u=t;null!=u&&++i<o;){var l=Wi(e[i]),c=n;if(i!=s){var d=u[l];(c=a?a(d,l,u):r)===r&&(c=ds(d)?d:Di(e[i+1])?[]:{})}ma(u,l,c),u=u[l]}return t}var fr=Wn?function(t,e){return Wn.set(t,e),t}:hu,pr=Sn?function(t,e){return Sn(t,"toString",{configurable:!0,enumerable:!1,value:du(e),writable:!0})}:hu;function hr(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 o=a(i);++r<i;)o[r]=t[r+e];return o}function gr(t,e){var n;return ka(t,function(t,a,r){return!(n=e(t,a,r))}),!!n}function mr(t,e,n){var a=0,r=null==t?a:t.length;if("number"==typeof e&&e==e&&r<=N){for(;a<r;){var i=a+r>>>1,o=t[i];null!==o&&!vs(o)&&(n?o<=e:o<e)?a=i+1:r=i}return r}return br(t,e,hu,n)}function br(t,e,n,a){e=n(e);for(var i=0,o=null==t?0:t.length,s=e!=e,u=null===e,l=vs(e),c=e===r;i<o;){var d=Dn((i+o)/2),f=n(t[d]),p=f!==r,h=null===f,g=f==f,m=vs(f);if(s)var b=a||g;else b=c?g&&(a||p):u?g&&p&&(a||!h):l?g&&p&&!h&&(a||!m):!h&&!m&&(a?f<=e:f<e);b?i=d+1:o=d}return Mn(o,R)}function yr(t,e){for(var n=-1,a=t.length,r=0,i=[];++n<a;){var o=t[n],s=e?e(o):o;if(!n||!Xo(s,u)){var u=s;i[r++]=0===o?0:o}}return i}function vr(t){return"number"==typeof t?t:vs(t)?I:+t}function _r(t){if("string"==typeof t)return t;if(es(t))return Ye(t,_r)+"";if(vs(t))return na?na.call(t):"";var e=t+"";return"0"==e&&1/t==-O?"-0":e}function xr(t,e,n){var a=-1,r=Fe,o=t.length,s=!0,u=[],l=u;if(n)s=!1,r=ze;else if(o>=i){var c=e?null:oi(t);if(c)return bn(c);s=!1,r=sn,l=new da}else l=e?[]:u;t:for(;++a<o;){var d=t[a],f=e?e(d):d;if(d=n||0!==d?d:0,s&&f==f){for(var p=l.length;p--;)if(l[p]===f)continue t;e&&l.push(f),u.push(d)}else r(l,f,n)||(l!==u&&l.push(f),u.push(d))}return u}function Tr(t,e){return null==(t=qi(t,e=Rr(e,t)))||delete t[Wi(oo(e))]}function wr(t,e,n,a){return dr(t,e,n(qa(t,e)),a)}function Sr(t,e,n,a){for(var r=t.length,i=a?r:-1;(a?i--:++i<r)&&e(t[i],i,t););return n?hr(t,a?0:i,a?i+1:r):hr(t,a?i+1:0,a?r:i)}function Or(t,e){var n=t;return n instanceof sa&&(n=n.value()),Ge(e,function(t,e){return e.func.apply(e.thisArg,He([t],e.args))},n)}function Cr(t,e,n){var r=t.length;if(r<2)return r?xr(t[0]):[];for(var i=-1,o=a(r);++i<r;)for(var s=t[i],u=-1;++u<r;)u!=i&&(o[i]=Ca(o[i]||s,t[u],e,n));return xr(Aa(o,1),e,n)}function kr(t,e,n){for(var a=-1,i=t.length,o=e.length,s={};++a<i;)n(s,t[a],a<o?e[a]:r);return s}function Ir(t){return rs(t)?t:[]}function Dr(t){return"function"==typeof t?t:hu}function Rr(t,e){return es(t)?t:Ni(t,e)?[t]:Ui(Ds(t))}var Nr=cr;function Ar(t,e,n){var a=t.length;return n=n===r?a:n,!e&&n>=a?t:hr(t,e,n)}var Er=On||function(t){return Te.clearTimeout(t)};function Lr(t,e){if(e)return t.slice();var n=t.length,a=xe?xe(n):new t.constructor(n);return t.copy(a),a}function Pr(t){var e=new t.constructor(t.byteLength);return new _e(e).set(new _e(t)),e}function Mr(t,e){var n=e?Pr(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function jr(t,e){if(t!==e){var n=t!==r,a=null===t,i=t==t,o=vs(t),s=e!==r,u=null===e,l=e==e,c=vs(e);if(!u&&!c&&!o&&t>e||o&&s&&l&&!u&&!c||a&&s&&l||!n&&l||!i)return 1;if(!a&&!o&&!c&&t<e||c&&n&&i&&!a&&!o||u&&n&&i||!s&&i||!l)return-1}return 0}function qr(t,e,n,r){for(var i=-1,o=t.length,s=n.length,u=-1,l=e.length,c=Pn(o-s,0),d=a(l+c),f=!r;++u<l;)d[u]=e[u];for(;++i<s;)(f||i<o)&&(d[n[i]]=t[i]);for(;c--;)d[u++]=t[i++];return d}function Fr(t,e,n,r){for(var i=-1,o=t.length,s=-1,u=n.length,l=-1,c=e.length,d=Pn(o-u,0),f=a(d+c),p=!r;++i<d;)f[i]=t[i];for(var h=i;++l<c;)f[h+l]=e[l];for(;++s<u;)(p||i<o)&&(f[h+n[s]]=t[i++]);return f}function zr(t,e){var n=-1,r=t.length;for(e||(e=a(r));++n<r;)e[n]=t[n];return e}function Yr(t,e,n,a){var i=!n;n||(n={});for(var o=-1,s=e.length;++o<s;){var u=e[o],l=a?a(n[u],t[u],u,n,t):r;l===r&&(l=t[u]),i?_a(n,u,l):ma(n,u,l)}return n}function Hr(t,e){return function(n,a){var r=es(n)?Pe:ya,i=e?e():{};return r(n,t,vi(a,2),i)}}function Gr(t){return cr(function(e,n){var a=-1,i=n.length,o=i>1?n[i-1]:r,s=i>2?n[2]:r;for(o=t.length>3&&"function"==typeof o?(i--,o):r,s&&Ri(n[0],n[1],s)&&(o=i<3?r:o,i=1),e=Wt(e);++a<i;){var u=n[a];u&&t(e,u,a,o)}return e})}function Vr(t,e){return function(n,a){if(null==n)return n;if(!as(n))return t(n,a);for(var r=n.length,i=e?r:-1,o=Wt(n);(e?i--:++i<r)&&!1!==a(o[i],i,o););return n}}function Br(t){return function(e,n,a){for(var r=-1,i=Wt(e),o=a(e),s=o.length;s--;){var u=o[t?s:++r];if(!1===n(i[u],u,i))break}return e}}function Ur(t){return function(e){var n=pn(e=Ds(e))?_n(e):r,a=n?n[0]:e.charAt(0),i=n?Ar(n,1).join(""):e.slice(1);return a[t]()+i}}function Wr(t){return function(e){return Ge(uu(tu(e).replace(se,"")),t,"")}}function Kr(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=ra(t.prototype),a=t.apply(n,e);return ds(a)?a:n}}function $r(t){return function(e,n,a){var i=Wt(e);if(!as(e)){var o=vi(n,3);e=Hs(e),n=function(t){return o(i[t],t,i)}}var s=t(e,n,a);return s>-1?i[o?e[s]:s]:r}}function Zr(t){return pi(function(e){var n=e.length,a=n,i=oa.prototype.thru;for(t&&e.reverse();a--;){var s=e[a];if("function"!=typeof s)throw new Zt(o);if(i&&!u&&"wrapper"==bi(s))var u=new oa([],!0)}for(a=u?a:n;++a<n;){var l=bi(s=e[a]),c="wrapper"==l?mi(s):r;u=c&&Ai(c[0])&&c[1]==(_|m|y|x)&&!c[4].length&&1==c[9]?u[bi(c[0])].apply(u,c[3]):1==s.length&&Ai(s)?u[l]():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 Xr(t,e,n,i,o,s,u,l,c,d){var f=e&_,g=e&p,y=e&h,v=e&(m|b),x=e&T,w=y?r:Kr(t);return function p(){for(var h=arguments.length,m=a(h),b=h;b--;)m[b]=arguments[b];if(v)var _=yi(p),T=function(t,e){for(var n=t.length,a=0;n--;)t[n]===e&&++a;return a}(m,_);if(i&&(m=qr(m,i,o,v)),s&&(m=Fr(m,s,u,v)),h-=T,v&&h<d){var S=mn(m,_);return ri(t,e,Xr,p.placeholder,n,m,S,l,c,d-h)}var O=g?n:this,C=y?O[t]:t;return h=m.length,l?m=function(t,e){for(var n=t.length,a=Mn(e.length,n),i=zr(t);a--;){var o=e[a];t[a]=Di(o,n)?i[o]:r}return t}(m,l):x&&h>1&&m.reverse(),f&&c<h&&(m.length=c),this&&this!==Te&&this instanceof p&&(C=w||Kr(C)),C.apply(O,m)}}function Jr(t,e){return function(n,a){return function(t,e,n,a){return Pa(t,function(t,r,i){e(a,n(t),r,i)}),a}(n,t,e(a),{})}}function Qr(t,e){return function(n,a){var i;if(n===r&&a===r)return e;if(n!==r&&(i=n),a!==r){if(i===r)return a;"string"==typeof n||"string"==typeof a?(n=_r(n),a=_r(a)):(n=vr(n),a=vr(a)),i=t(n,a)}return i}}function ti(t){return pi(function(e){return e=Ye(e,rn(vi())),cr(function(n){var a=this;return t(e,function(t){return Le(t,a,n)})})})}function ei(t,e){var n=(e=e===r?" ":_r(e)).length;if(n<2)return n?lr(e,t):e;var a=lr(e,In(t/vn(e)));return pn(e)?Ar(_n(a),0,t).join(""):a.slice(0,t)}function ni(t){return function(e,n,i){return i&&"number"!=typeof i&&Ri(e,n,i)&&(n=i=r),e=Ss(e),n===r?(n=e,e=0):n=Ss(n),function(t,e,n,r){for(var i=-1,o=Pn(In((e-t)/(n||1)),0),s=a(o);o--;)s[r?o:++i]=t,t+=n;return s}(e,n,i=i===r?e<n?1:-1:Ss(i),t)}}function ai(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=ks(e),n=ks(n)),t(e,n)}}function ri(t,e,n,a,i,o,s,u,l,c){var d=e&m;e|=d?y:v,(e&=~(d?v:y))&g||(e&=~(p|h));var f=[t,e,i,d?o:r,d?s:r,d?r:o,d?r:s,u,l,c],b=n.apply(r,f);return Ai(t)&&zi(b,f),b.placeholder=a,Gi(b,t,e)}function ii(t){var e=Ut[t];return function(t,n){if(t=ks(t),(n=null==n?0:Mn(Os(n),292))&&An(t)){var a=(Ds(t)+"e").split("e");return+((a=(Ds(e(a[0]+"e"+(+a[1]+n)))+"e").split("e"))[0]+"e"+(+a[1]-n))}return e(t)}}var oi=Vn&&1/bn(new Vn([,-0]))[1]==O?function(t){return new Vn(t)}:vu;function si(t){return function(e){var n=Oi(e);return n==H?hn(e):n==K?yn(e):function(t,e){return Ye(e,function(e){return[e,t[e]]})}(e,t(e))}}function ui(t,e,n,i,u,l,c,d){var f=e&h;if(!f&&"function"!=typeof t)throw new Zt(o);var T=i?i.length:0;if(T||(e&=~(y|v),i=u=r),c=c===r?c:Pn(Os(c),0),d=d===r?d:Os(d),T-=u?u.length:0,e&v){var w=i,S=u;i=u=r}var O=f?r:mi(t),C=[t,e,n,i,u,w,S,l,c,d];if(O&&function(t,e){var n=t[1],a=e[1],r=n|a;if(!(r<(p|h|_)||a==_&&n==m||a==_&&n==x&&t[7].length<=e[8]||a==(_|x)&&e[7].length<=e[8]&&n==m))return t;a&p&&(t[2]=e[2],r|=n&p?0:g);var i=e[3];if(i){var o=t[3];t[3]=o?qr(o,i,e[4]):i,t[4]=o?mn(t[3],s):e[4]}(i=e[5])&&(t[5]=(o=t[5])?Fr(o,i,e[6]):i,t[6]=o?mn(t[5],s):e[6]),(i=e[7])&&(t[7]=i),a&_&&(t[8]=null==t[8]?e[8]:Mn(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=r}(C,O),t=C[0],e=C[1],n=C[2],i=C[3],u=C[4],!(d=C[9]=C[9]===r?f?0:t.length:Pn(C[9]-T,0))&&e&(m|b)&&(e&=~(m|b)),e&&e!=p)k=e==m||e==b?function(t,e,n){var i=Kr(t);return function o(){for(var s=arguments.length,u=a(s),l=s,c=yi(o);l--;)u[l]=arguments[l];var d=s<3&&u[0]!==c&&u[s-1]!==c?[]:mn(u,c);return(s-=d.length)<n?ri(t,e,Xr,o.placeholder,r,u,d,r,r,n-s):Le(this&&this!==Te&&this instanceof o?i:t,this,u)}}(t,e,d):e!=y&&e!=(p|y)||u.length?Xr.apply(r,C):function(t,e,n,r){var i=e&p,o=Kr(t);return function e(){for(var s=-1,u=arguments.length,l=-1,c=r.length,d=a(c+u),f=this&&this!==Te&&this instanceof e?o:t;++l<c;)d[l]=r[l];for(;u--;)d[l++]=arguments[++s];return Le(f,i?n:this,d)}}(t,e,n,i);else var k=function(t,e,n){var a=e&p,r=Kr(t);return function e(){return(this&&this!==Te&&this instanceof e?r:t).apply(a?n:this,arguments)}}(t,e,n);return Gi((O?fr:zi)(k,C),t,e)}function li(t,e,n,a){return t===r||Xo(t,Jt[n])&&!ee.call(a,n)?e:t}function ci(t,e,n,a,i,o){return ds(t)&&ds(e)&&(o.set(e,t),nr(t,e,r,ci,o),o.delete(e)),t}function di(t){return gs(t)?r:t}function fi(t,e,n,a,i,o){var s=n&d,u=t.length,l=e.length;if(u!=l&&!(s&&l>u))return!1;var c=o.get(t);if(c&&o.get(e))return c==e;var p=-1,h=!0,g=n&f?new da:r;for(o.set(t,e),o.set(e,t);++p<u;){var m=t[p],b=e[p];if(a)var y=s?a(b,m,p,e,t,o):a(m,b,p,t,e,o);if(y!==r){if(y)continue;h=!1;break}if(g){if(!Be(e,function(t,e){if(!sn(g,e)&&(m===t||i(m,t,n,a,o)))return g.push(e)})){h=!1;break}}else if(m!==b&&!i(m,b,n,a,o)){h=!1;break}}return o.delete(t),o.delete(e),h}function pi(t){return Hi(ji(t,r,eo),t+"")}function hi(t){return Fa(t,Hs,wi)}function gi(t){return Fa(t,Gs,Si)}var mi=Wn?function(t){return Wn.get(t)}:vu;function bi(t){for(var e=t.name+"",n=Kn[e],a=ee.call(Kn,e)?n.length:0;a--;){var r=n[a],i=r.func;if(null==i||i==t)return r.name}return e}function yi(t){return(ee.call(aa,"placeholder")?aa:t).placeholder}function vi(){var t=aa.iteratee||gu;return t=t===gu?Za:t,arguments.length?t(arguments[0],arguments[1]):t}function _i(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 xi(t){for(var e=Hs(t),n=e.length;n--;){var a=e[n],r=t[a];e[n]=[a,r,Pi(r)]}return e}function Ti(t,e){var n=function(t,e){return null==t?r:t[e]}(t,e);return $a(n)?n:r}var wi=Rn?function(t){return null==t?[]:(t=Wt(t),qe(Rn(t),function(e){return Ce.call(t,e)}))}:Cu,Si=Rn?function(t){for(var e=[];t;)He(e,wi(t)),t=we(t);return e}:Cu,Oi=za;function Ci(t,e,n){for(var a=-1,r=(e=Rr(e,t)).length,i=!1;++a<r;){var o=Wi(e[a]);if(!(i=null!=t&&n(t,o)))break;t=t[o]}return i||++a!=r?i:!!(r=null==t?0:t.length)&&cs(r)&&Di(o,r)&&(es(t)||ts(t))}function ki(t){return"function"!=typeof t.constructor||Li(t)?{}:ra(we(t))}function Ii(t){return es(t)||ts(t)||!!(Ue&&t&&t[Ue])}function Di(t,e){var n=typeof t;return!!(e=null==e?C:e)&&("number"==n||"symbol"!=n&&Ft.test(t))&&t>-1&&t%1==0&&t<e}function Ri(t,e,n){if(!ds(n))return!1;var a=typeof e;return!!("number"==a?as(n)&&Di(e,n.length):"string"==a&&e in n)&&Xo(n[e],t)}function Ni(t,e){if(es(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!vs(t))||xt.test(t)||!_t.test(t)||null!=e&&t in Wt(e)}function Ai(t){var e=bi(t),n=aa[e];if("function"!=typeof n||!(e in sa.prototype))return!1;if(t===n)return!0;var a=mi(n);return!!a&&t===a[0]}(Yn&&Oi(new Yn(new ArrayBuffer(1)))!=tt||Hn&&Oi(new Hn)!=H||Gn&&"[object Promise]"!=Oi(Gn.resolve())||Vn&&Oi(new Vn)!=K||Bn&&Oi(new Bn)!=J)&&(Oi=function(t){var e=za(t),n=e==B?t.constructor:r,a=n?Ki(n):"";if(a)switch(a){case $n:return tt;case Zn:return H;case Xn:return"[object Promise]";case Jn:return K;case Qn:return J}return e});var Ei=Qt?us:ku;function Li(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Jt)}function Pi(t){return t==t&&!ds(t)}function Mi(t,e){return function(n){return null!=n&&n[t]===e&&(e!==r||t in Wt(n))}}function ji(t,e,n){return e=Pn(e===r?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Pn(r.length-e,0),s=a(o);++i<o;)s[i]=r[e+i];i=-1;for(var u=a(e+1);++i<e;)u[i]=r[i];return u[e]=n(s),Le(t,this,u)}}function qi(t,e){return e.length<2?t:qa(t,hr(e,0,-1))}function Fi(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var zi=Vi(fr),Yi=kn||function(t,e){return Te.setTimeout(t,e)},Hi=Vi(pr);function Gi(t,e,n){var a=e+"";return Hi(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(It,"{\n/* [wrapped with "+e+"] */\n")}(a,function(t,e){return Me(A,function(n){var a="_."+n[0];e&n[1]&&!Fe(t,a)&&t.push(a)}),t.sort()}(function(t){var e=t.match(Dt);return e?e[1].split(Rt):[]}(a),n)))}function Vi(t){var e=0,n=0;return function(){var a=jn(),i=S-(a-n);if(n=a,i>0){if(++e>=w)return arguments[0]}else e=0;return t.apply(r,arguments)}}function Bi(t,e){var n=-1,a=t.length,i=a-1;for(e=e===r?a:e;++n<e;){var o=ur(n,i),s=t[o];t[o]=t[n],t[n]=s}return t.length=e,t}var Ui=function(t){var e=Bo(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Tt,function(t,n,a,r){e.push(a?r.replace(At,"$1"):n||t)}),e},function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}();function Wi(t){if("string"==typeof t||vs(t))return t;var e=t+"";return"0"==e&&1/t==-O?"-0":e}function Ki(t){if(null!=t){try{return te.call(t)}catch(e){}try{return t+""}catch(e){}}return""}function $i(t){if(t instanceof sa)return t.clone();var e=new oa(t.__wrapped__,t.__chain__);return e.__actions__=zr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Zi=cr(function(t,e){return rs(t)?Ca(t,Aa(e,1,rs,!0)):[]}),Xi=cr(function(t,e){var n=oo(e);return rs(n)&&(n=r),rs(t)?Ca(t,Aa(e,1,rs,!0),vi(n,2)):[]}),Ji=cr(function(t,e){var n=oo(e);return rs(n)&&(n=r),rs(t)?Ca(t,Aa(e,1,rs,!0),r,n):[]});function Qi(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:Os(n);return r<0&&(r=Pn(a+r,0)),Ke(t,vi(e,3),r)}function to(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var i=a-1;return n!==r&&(i=Os(n),i=n<0?Pn(a+i,0):Mn(i,a-1)),Ke(t,vi(e,3),i,!0)}function eo(t){return null!=t&&t.length?Aa(t,1):[]}function no(t){return t&&t.length?t[0]:r}var ao=cr(function(t){var e=Ye(t,Ir);return e.length&&e[0]===t[0]?Va(e):[]}),ro=cr(function(t){var e=oo(t),n=Ye(t,Ir);return e===oo(n)?e=r:n.pop(),n.length&&n[0]===t[0]?Va(n,vi(e,2)):[]}),io=cr(function(t){var e=oo(t),n=Ye(t,Ir);return(e="function"==typeof e?e:r)&&n.pop(),n.length&&n[0]===t[0]?Va(n,r,e):[]});function oo(t){var e=null==t?0:t.length;return e?t[e-1]:r}var so=cr(uo);function uo(t,e){return t&&t.length&&e&&e.length?or(t,e):t}var lo=pi(function(t,e){var n=null==t?0:t.length,a=xa(t,e);return sr(t,Ye(e,function(t){return Di(t,n)?+t:t}).sort(jr)),a});function co(t){return null==t?t:zn.call(t)}var fo=cr(function(t){return xr(Aa(t,1,rs,!0))}),po=cr(function(t){var e=oo(t);return rs(e)&&(e=r),xr(Aa(t,1,rs,!0),vi(e,2))}),ho=cr(function(t){var e=oo(t);return e="function"==typeof e?e:r,xr(Aa(t,1,rs,!0),r,e)});function go(t){if(!t||!t.length)return[];var e=0;return t=qe(t,function(t){if(rs(t))return e=Pn(t.length,e),!0}),an(e,function(e){return Ye(t,Qe(e))})}function mo(t,e){if(!t||!t.length)return[];var n=go(t);return null==e?n:Ye(n,function(t){return Le(e,r,t)})}var bo=cr(function(t,e){return rs(t)?Ca(t,e):[]}),yo=cr(function(t){return Cr(qe(t,rs))}),vo=cr(function(t){var e=oo(t);return rs(e)&&(e=r),Cr(qe(t,rs),vi(e,2))}),_o=cr(function(t){var e=oo(t);return e="function"==typeof e?e:r,Cr(qe(t,rs),r,e)}),xo=cr(go),To=cr(function(t){var e=t.length,n=e>1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,mo(t,n)});function wo(t){var e=aa(t);return e.__chain__=!0,e}function So(t,e){return e(t)}var Oo=pi(function(t){var e=t.length,n=e?t[0]:0,a=this.__wrapped__,i=function(e){return xa(e,t)};return!(e>1||this.__actions__.length)&&a instanceof sa&&Di(n)?((a=a.slice(n,+n+(e?1:0))).__actions__.push({func:So,args:[i],thisArg:r}),new oa(a,this.__chain__).thru(function(t){return e&&!t.length&&t.push(r),t})):this.thru(i)}),Co=Hr(function(t,e,n){ee.call(t,n)?++t[n]:_a(t,n,1)}),ko=$r(Qi),Io=$r(to);function Do(t,e){return(es(t)?Me:ka)(t,vi(e,3))}function Ro(t,e){return(es(t)?function(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}:Ia)(t,vi(e,3))}var No=Hr(function(t,e,n){ee.call(t,n)?t[n].push(e):_a(t,n,[e])}),Ao=cr(function(t,e,n){var r=-1,i="function"==typeof e,o=as(t)?a(t.length):[];return ka(t,function(t){o[++r]=i?Le(e,t,n):Ba(t,e,n)}),o}),Eo=Hr(function(t,e,n){_a(t,n,e)});function Lo(t,e){return(es(t)?Ye:Qa)(t,vi(e,3))}var Po=Hr(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),Mo=cr(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ri(t,e[0],e[1])?e=[]:n>2&&Ri(e[0],e[1],e[2])&&(e=[e[0]]),rr(t,Aa(e,1),[])}),jo=Cn||function(){return Te.Date.now()};function qo(t,e,n){return e=n?r:e,ui(t,_,r,r,r,r,e=t&&null==e?t.length:e)}function Fo(t,e){var n;if("function"!=typeof e)throw new Zt(o);return t=Os(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var zo=cr(function(t,e,n){var a=p;if(n.length){var r=mn(n,yi(zo));a|=y}return ui(t,a,e,n,r)}),Yo=cr(function(t,e,n){var a=p|h;if(n.length){var r=mn(n,yi(Yo));a|=y}return ui(e,a,t,n,r)});function Ho(t,e,n){var a,i,s,u,l,c,d=0,f=!1,p=!1,h=!0;if("function"!=typeof t)throw new Zt(o);function g(e){var n=a,o=i;return a=i=r,d=e,u=t.apply(o,n)}function m(t){var n=t-c;return c===r||n>=e||n<0||p&&t-d>=s}function b(){var t=jo();if(m(t))return y(t);l=Yi(b,function(t){var n=e-(t-c);return p?Mn(n,s-(t-d)):n}(t))}function y(t){return l=r,h&&a?g(t):(a=i=r,u)}function v(){var t=jo(),n=m(t);if(a=arguments,i=this,c=t,n){if(l===r)return function(t){return d=t,l=Yi(b,e),f?g(t):u}(c);if(p)return Er(l),l=Yi(b,e),g(c)}return l===r&&(l=Yi(b,e)),u}return e=ks(e)||0,ds(n)&&(f=!!n.leading,s=(p="maxWait"in n)?Pn(ks(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h),v.cancel=function(){l!==r&&Er(l),d=0,a=c=i=l=r},v.flush=function(){return l===r?u:y(jo())},v}var Go=cr(function(t,e){return Oa(t,1,e)}),Vo=cr(function(t,e,n){return Oa(t,ks(e)||0,n)});function Bo(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Zt(o);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 o=t.apply(this,a);return n.cache=i.set(r,o)||i,o};return n.cache=new(Bo.Cache||ca),n}function Uo(t){if("function"!=typeof t)throw new Zt(o);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)}}Bo.Cache=ca;var Wo=Nr(function(t,e){var n=(e=1==e.length&&es(e[0])?Ye(e[0],rn(vi())):Ye(Aa(e,1),rn(vi()))).length;return cr(function(a){for(var r=-1,i=Mn(a.length,n);++r<i;)a[r]=e[r].call(this,a[r]);return Le(t,this,a)})}),Ko=cr(function(t,e){var n=mn(e,yi(Ko));return ui(t,y,r,e,n)}),$o=cr(function(t,e){var n=mn(e,yi($o));return ui(t,v,r,e,n)}),Zo=pi(function(t,e){return ui(t,x,r,r,r,e)});function Xo(t,e){return t===e||t!=t&&e!=e}var Jo=ai(Ya),Qo=ai(function(t,e){return t>=e}),ts=Ua(function(){return arguments}())?Ua:function(t){return fs(t)&&ee.call(t,"callee")&&!Ce.call(t,"callee")},es=a.isArray,ns=Ie?rn(Ie):function(t){return fs(t)&&za(t)==Q};function as(t){return null!=t&&cs(t.length)&&!us(t)}function rs(t){return fs(t)&&as(t)}var is=Nn||ku,os=De?rn(De):function(t){return fs(t)&&za(t)==j};function ss(t){if(!fs(t))return!1;var e=za(t);return e==F||e==q||"string"==typeof t.message&&"string"==typeof t.name&&!gs(t)}function us(t){if(!ds(t))return!1;var e=za(t);return e==z||e==Y||e==P||e==U}function ls(t){return"number"==typeof t&&t==Os(t)}function cs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=C}function ds(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function fs(t){return null!=t&&"object"==typeof t}var ps=Re?rn(Re):function(t){return fs(t)&&Oi(t)==H};function hs(t){return"number"==typeof t||fs(t)&&za(t)==G}function gs(t){if(!fs(t)||za(t)!=B)return!1;var e=we(t);if(null===e)return!0;var n=ee.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&te.call(n)==ie}var ms=Ne?rn(Ne):function(t){return fs(t)&&za(t)==W},bs=Ae?rn(Ae):function(t){return fs(t)&&Oi(t)==K};function ys(t){return"string"==typeof t||!es(t)&&fs(t)&&za(t)==$}function vs(t){return"symbol"==typeof t||fs(t)&&za(t)==Z}var _s=Ee?rn(Ee):function(t){return fs(t)&&cs(t.length)&&!!ge[za(t)]},xs=ai(Ja),Ts=ai(function(t,e){return t<=e});function ws(t){if(!t)return[];if(as(t))return ys(t)?_n(t):zr(t);if(tn&&t[tn])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[tn]());var e=Oi(t);return(e==H?hn:e==K?bn:Xs)(t)}function Ss(t){return t?(t=ks(t))===O||t===-O?(t<0?-1:1)*k:t==t?t:0:0===t?t:0}function Os(t){var e=Ss(t),n=e%1;return e==e?n?e-n:e:0}function Cs(t){return t?Ta(Os(t),0,D):0}function ks(t){if("number"==typeof t)return t;if(vs(t))return I;if(ds(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ds(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Ot,"");var n=Mt.test(t);return n||qt.test(t)?ve(t.slice(2),n?2:8):Pt.test(t)?I:+t}function Is(t){return Yr(t,Gs(t))}function Ds(t){return null==t?"":_r(t)}var Rs=Gr(function(t,e){if(Li(e)||as(e))Yr(e,Hs(e),t);else for(var n in e)ee.call(e,n)&&ma(t,n,e[n])}),Ns=Gr(function(t,e){Yr(e,Gs(e),t)}),As=Gr(function(t,e,n,a){Yr(e,Gs(e),t,a)}),Es=Gr(function(t,e,n,a){Yr(e,Hs(e),t,a)}),Ls=pi(xa),Ps=cr(function(t,e){t=Wt(t);var n=-1,a=e.length,i=a>2?e[2]:r;for(i&&Ri(e[0],e[1],i)&&(a=1);++n<a;)for(var o=e[n],s=Gs(o),u=-1,l=s.length;++u<l;){var c=s[u],d=t[c];(d===r||Xo(d,Jt[c])&&!ee.call(t,c))&&(t[c]=o[c])}return t}),Ms=cr(function(t){return t.push(r,ci),Le(Bs,r,t)});function js(t,e,n){var a=null==t?r:qa(t,e);return a===r?n:a}function qs(t,e){return null!=t&&Ci(t,e,Ga)}var Fs=Jr(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=re.call(e)),t[e]=n},du(hu)),zs=Jr(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=re.call(e)),ee.call(t,e)?t[e].push(n):t[e]=[n]},vi),Ys=cr(Ba);function Hs(t){return as(t)?pa(t):Xa(t)}function Gs(t){return as(t)?pa(t,!0):function(t){if(!ds(t))return function(t){var e=[];if(null!=t)for(var n in Wt(t))e.push(n);return e}(t);var e=Li(t),n=[];for(var a in t)("constructor"!=a||!e&&ee.call(t,a))&&n.push(a);return n}(t)}var Vs=Gr(function(t,e,n){nr(t,e,n)}),Bs=Gr(function(t,e,n,a){nr(t,e,n,a)}),Us=pi(function(t,e){var n={};if(null==t)return n;var a=!1;e=Ye(e,function(e){return e=Rr(e,t),a||(a=e.length>1),e}),Yr(t,gi(t),n),a&&(n=wa(n,u|l|c,di));for(var r=e.length;r--;)Tr(n,e[r]);return n}),Ws=pi(function(t,e){return null==t?{}:function(t,e){return ir(t,e,function(e,n){return qs(t,n)})}(t,e)});function Ks(t,e){if(null==t)return{};var n=Ye(gi(t),function(t){return[t]});return e=vi(e),ir(t,n,function(t,n){return e(t,n[0])})}var $s=si(Hs),Zs=si(Gs);function Xs(t){return null==t?[]:on(t,Hs(t))}var Js=Wr(function(t,e,n){return e=e.toLowerCase(),t+(n?Qs(e):e)});function Qs(t){return su(Ds(t).toLowerCase())}function tu(t){return(t=Ds(t))&&t.replace(zt,cn).replace(ue,"")}var eu=Wr(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),nu=Wr(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),au=Ur("toLowerCase"),ru=Wr(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),iu=Wr(function(t,e,n){return t+(n?" ":"")+su(e)}),ou=Wr(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),su=Ur("toUpperCase");function uu(t,e,n){return t=Ds(t),(e=n?r:e)===r?function(t){return fe.test(t)}(t)?function(t){return t.match(ce)||[]}(t):function(t){return t.match(Nt)||[]}(t):t.match(e)||[]}var lu=cr(function(t,e){try{return Le(t,r,e)}catch(n){return ss(n)?n:new Vt(n)}}),cu=pi(function(t,e){return Me(e,function(e){e=Wi(e),_a(t,e,zo(t[e],t))}),t});function du(t){return function(){return t}}var fu=Zr(),pu=Zr(!0);function hu(t){return t}function gu(t){return Za("function"==typeof t?t:wa(t,u))}var mu=cr(function(t,e){return function(n){return Ba(n,t,e)}}),bu=cr(function(t,e){return function(n){return Ba(t,n,e)}});function yu(t,e,n){var a=Hs(e),r=ja(e,a);null!=n||ds(e)&&(r.length||!a.length)||(n=e,e=t,t=this,r=ja(e,Hs(e)));var i=!(ds(n)&&"chain"in n&&!n.chain),o=us(t);return Me(r,function(n){var a=e[n];t[n]=a,o&&(t.prototype[n]=function(){var e=this.__chain__;if(i||e){var n=t(this.__wrapped__);return(n.__actions__=zr(this.__actions__)).push({func:a,args:arguments,thisArg:t}),n.__chain__=e,n}return a.apply(t,He([this.value()],arguments))})}),t}function vu(){}var _u=ti(Ye),xu=ti(je),Tu=ti(Be);function wu(t){return Ni(t)?Qe(Wi(t)):function(t){return function(e){return qa(e,t)}}(t)}var Su=ni(),Ou=ni(!0);function Cu(){return[]}function ku(){return!1}var Iu,Du=Qr(function(t,e){return t+e},0),Ru=ii("ceil"),Nu=Qr(function(t,e){return t/e},1),Au=ii("floor"),Eu=Qr(function(t,e){return t*e},1),Lu=ii("round"),Pu=Qr(function(t,e){return t-e},0);return aa.after=function(t,e){if("function"!=typeof e)throw new Zt(o);return t=Os(t),function(){if(--t<1)return e.apply(this,arguments)}},aa.ary=qo,aa.assign=Rs,aa.assignIn=Ns,aa.assignInWith=As,aa.assignWith=Es,aa.at=Ls,aa.before=Fo,aa.bind=zo,aa.bindAll=cu,aa.bindKey=Yo,aa.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return es(t)?t:[t]},aa.chain=wo,aa.chunk=function(t,e,n){e=(n?Ri(t,e,n):e===r)?1:Pn(Os(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,u=a(In(i/e));o<i;)u[s++]=hr(t,o,o+=e);return u},aa.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},aa.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 He(es(n)?zr(n):[n],Aa(e,1))},aa.cond=function(t){var e=null==t?0:t.length,n=vi();return t=e?Ye(t,function(t){if("function"!=typeof t[1])throw new Zt(o);return[n(t[0]),t[1]]}):[],cr(function(n){for(var a=-1;++a<e;){var r=t[a];if(Le(r[0],this,n))return Le(r[1],this,n)}})},aa.conforms=function(t){return function(t){var e=Hs(t);return function(n){return Sa(n,t,e)}}(wa(t,u))},aa.constant=du,aa.countBy=Co,aa.create=function(t,e){var n=ra(t);return null==e?n:va(n,e)},aa.curry=function t(e,n,a){var i=ui(e,m,r,r,r,r,r,n=a?r:n);return i.placeholder=t.placeholder,i},aa.curryRight=function t(e,n,a){var i=ui(e,b,r,r,r,r,r,n=a?r:n);return i.placeholder=t.placeholder,i},aa.debounce=Ho,aa.defaults=Ps,aa.defaultsDeep=Ms,aa.defer=Go,aa.delay=Vo,aa.difference=Zi,aa.differenceBy=Xi,aa.differenceWith=Ji,aa.drop=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,(e=n||e===r?1:Os(e))<0?0:e,a):[]},aa.dropRight=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,0,(e=a-(e=n||e===r?1:Os(e)))<0?0:e):[]},aa.dropRightWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!0,!0):[]},aa.dropWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!0):[]},aa.fill=function(t,e,n,a){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Ri(t,e,n)&&(n=0,a=i),function(t,e,n,a){var i=t.length;for((n=Os(n))<0&&(n=-n>i?0:i+n),(a=a===r||a>i?i:Os(a))<0&&(a+=i),a=n>a?0:Cs(a);n<a;)t[n++]=e;return t}(t,e,n,a)):[]},aa.filter=function(t,e){return(es(t)?qe:Na)(t,vi(e,3))},aa.flatMap=function(t,e){return Aa(Lo(t,e),1)},aa.flatMapDeep=function(t,e){return Aa(Lo(t,e),O)},aa.flatMapDepth=function(t,e,n){return n=n===r?1:Os(n),Aa(Lo(t,e),n)},aa.flatten=eo,aa.flattenDeep=function(t){return null!=t&&t.length?Aa(t,O):[]},aa.flattenDepth=function(t,e){return null!=t&&t.length?Aa(t,e=e===r?1:Os(e)):[]},aa.flip=function(t){return ui(t,T)},aa.flow=fu,aa.flowRight=pu,aa.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},aa.functions=function(t){return null==t?[]:ja(t,Hs(t))},aa.functionsIn=function(t){return null==t?[]:ja(t,Gs(t))},aa.groupBy=No,aa.initial=function(t){return null!=t&&t.length?hr(t,0,-1):[]},aa.intersection=ao,aa.intersectionBy=ro,aa.intersectionWith=io,aa.invert=Fs,aa.invertBy=zs,aa.invokeMap=Ao,aa.iteratee=gu,aa.keyBy=Eo,aa.keys=Hs,aa.keysIn=Gs,aa.map=Lo,aa.mapKeys=function(t,e){var n={};return e=vi(e,3),Pa(t,function(t,a,r){_a(n,e(t,a,r),t)}),n},aa.mapValues=function(t,e){var n={};return e=vi(e,3),Pa(t,function(t,a,r){_a(n,a,e(t,a,r))}),n},aa.matches=function(t){return tr(wa(t,u))},aa.matchesProperty=function(t,e){return er(t,wa(e,u))},aa.memoize=Bo,aa.merge=Vs,aa.mergeWith=Bs,aa.method=mu,aa.methodOf=bu,aa.mixin=yu,aa.negate=Uo,aa.nthArg=function(t){return t=Os(t),cr(function(e){return ar(e,t)})},aa.omit=Us,aa.omitBy=function(t,e){return Ks(t,Uo(vi(e)))},aa.once=function(t){return Fo(2,t)},aa.orderBy=function(t,e,n,a){return null==t?[]:(es(e)||(e=null==e?[]:[e]),es(n=a?r:n)||(n=null==n?[]:[n]),rr(t,e,n))},aa.over=_u,aa.overArgs=Wo,aa.overEvery=xu,aa.overSome=Tu,aa.partial=Ko,aa.partialRight=$o,aa.partition=Po,aa.pick=Ws,aa.pickBy=Ks,aa.property=wu,aa.propertyOf=function(t){return function(e){return null==t?r:qa(t,e)}},aa.pull=so,aa.pullAll=uo,aa.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?or(t,e,vi(n,2)):t},aa.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?or(t,e,r,n):t},aa.pullAt=lo,aa.range=Su,aa.rangeRight=Ou,aa.rearg=Zo,aa.reject=function(t,e){return(es(t)?qe:Na)(t,Uo(vi(e,3)))},aa.remove=function(t,e){var n=[];if(!t||!t.length)return n;var a=-1,r=[],i=t.length;for(e=vi(e,3);++a<i;){var o=t[a];e(o,a,t)&&(n.push(o),r.push(a))}return sr(t,r),n},aa.rest=function(t,e){if("function"!=typeof t)throw new Zt(o);return cr(t,e=e===r?e:Os(e))},aa.reverse=co,aa.sampleSize=function(t,e,n){return e=(n?Ri(t,e,n):e===r)?1:Os(e),(es(t)?function(t,e){return Bi(zr(t),Ta(e,0,t.length))}:function(t,e){var n=Xs(t);return Bi(n,Ta(e,0,n.length))})(t,e)},aa.set=function(t,e,n){return null==t?t:dr(t,e,n)},aa.setWith=function(t,e,n,a){return a="function"==typeof a?a:r,null==t?t:dr(t,e,n,a)},aa.shuffle=function(t){return(es(t)?function(t){return Bi(zr(t))}:function(t){return Bi(Xs(t))})(t)},aa.slice=function(t,e,n){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&Ri(t,e,n)?(e=0,n=a):(e=null==e?0:Os(e),n=n===r?a:Os(n)),hr(t,e,n)):[]},aa.sortBy=Mo,aa.sortedUniq=function(t){return t&&t.length?yr(t):[]},aa.sortedUniqBy=function(t,e){return t&&t.length?yr(t,vi(e,2)):[]},aa.split=function(t,e,n){return n&&"number"!=typeof n&&Ri(t,e,n)&&(e=n=r),(n=n===r?D:n>>>0)?(t=Ds(t))&&("string"==typeof e||null!=e&&!ms(e))&&!(e=_r(e))&&pn(t)?Ar(_n(t),0,n):t.split(e,n):[]},aa.spread=function(t,e){if("function"!=typeof t)throw new Zt(o);return e=null==e?0:Pn(Os(e),0),cr(function(n){var a=n[e],r=Ar(n,0,e);return a&&He(r,a),Le(t,this,r)})},aa.tail=function(t){var e=null==t?0:t.length;return e?hr(t,1,e):[]},aa.take=function(t,e,n){return t&&t.length?hr(t,0,(e=n||e===r?1:Os(e))<0?0:e):[]},aa.takeRight=function(t,e,n){var a=null==t?0:t.length;return a?hr(t,(e=a-(e=n||e===r?1:Os(e)))<0?0:e,a):[]},aa.takeRightWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3),!1,!0):[]},aa.takeWhile=function(t,e){return t&&t.length?Sr(t,vi(e,3)):[]},aa.tap=function(t,e){return e(t),t},aa.throttle=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new Zt(o);return ds(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),Ho(t,e,{leading:a,maxWait:e,trailing:r})},aa.thru=So,aa.toArray=ws,aa.toPairs=$s,aa.toPairsIn=Zs,aa.toPath=function(t){return es(t)?Ye(t,Wi):vs(t)?[t]:zr(Ui(Ds(t)))},aa.toPlainObject=Is,aa.transform=function(t,e,n){var a=es(t),r=a||is(t)||_s(t);if(e=vi(e,4),null==n){var i=t&&t.constructor;n=r?a?new i:[]:ds(t)&&us(i)?ra(we(t)):{}}return(r?Me:Pa)(t,function(t,a,r){return e(n,t,a,r)}),n},aa.unary=function(t){return qo(t,1)},aa.union=fo,aa.unionBy=po,aa.unionWith=ho,aa.uniq=function(t){return t&&t.length?xr(t):[]},aa.uniqBy=function(t,e){return t&&t.length?xr(t,vi(e,2)):[]},aa.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?xr(t,r,e):[]},aa.unset=function(t,e){return null==t||Tr(t,e)},aa.unzip=go,aa.unzipWith=mo,aa.update=function(t,e,n){return null==t?t:wr(t,e,Dr(n))},aa.updateWith=function(t,e,n,a){return a="function"==typeof a?a:r,null==t?t:wr(t,e,Dr(n),a)},aa.values=Xs,aa.valuesIn=function(t){return null==t?[]:on(t,Gs(t))},aa.without=bo,aa.words=uu,aa.wrap=function(t,e){return Ko(Dr(e),t)},aa.xor=yo,aa.xorBy=vo,aa.xorWith=_o,aa.zip=xo,aa.zipObject=function(t,e){return kr(t||[],e||[],ma)},aa.zipObjectDeep=function(t,e){return kr(t||[],e||[],dr)},aa.zipWith=To,aa.entries=$s,aa.entriesIn=Zs,aa.extend=Ns,aa.extendWith=As,yu(aa,aa),aa.add=Du,aa.attempt=lu,aa.camelCase=Js,aa.capitalize=Qs,aa.ceil=Ru,aa.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=ks(n))==n?n:0),e!==r&&(e=(e=ks(e))==e?e:0),Ta(ks(t),e,n)},aa.clone=function(t){return wa(t,c)},aa.cloneDeep=function(t){return wa(t,u|c)},aa.cloneDeepWith=function(t,e){return wa(t,u|c,e="function"==typeof e?e:r)},aa.cloneWith=function(t,e){return wa(t,c,e="function"==typeof e?e:r)},aa.conformsTo=function(t,e){return null==e||Sa(t,e,Hs(e))},aa.deburr=tu,aa.defaultTo=function(t,e){return null==t||t!=t?e:t},aa.divide=Nu,aa.endsWith=function(t,e,n){t=Ds(t),e=_r(e);var a=t.length,i=n=n===r?a:Ta(Os(n),0,a);return(n-=e.length)>=0&&t.slice(n,i)==e},aa.eq=Xo,aa.escape=function(t){return(t=Ds(t))&&mt.test(t)?t.replace(ht,dn):t},aa.escapeRegExp=function(t){return(t=Ds(t))&&St.test(t)?t.replace(wt,"\\$&"):t},aa.every=function(t,e,n){var a=es(t)?je:Da;return n&&Ri(t,e,n)&&(e=r),a(t,vi(e,3))},aa.find=ko,aa.findIndex=Qi,aa.findKey=function(t,e){return We(t,vi(e,3),Pa)},aa.findLast=Io,aa.findLastIndex=to,aa.findLastKey=function(t,e){return We(t,vi(e,3),Ma)},aa.floor=Au,aa.forEach=Do,aa.forEachRight=Ro,aa.forIn=function(t,e){return null==t?t:Ea(t,vi(e,3),Gs)},aa.forInRight=function(t,e){return null==t?t:La(t,vi(e,3),Gs)},aa.forOwn=function(t,e){return t&&Pa(t,vi(e,3))},aa.forOwnRight=function(t,e){return t&&Ma(t,vi(e,3))},aa.get=js,aa.gt=Jo,aa.gte=Qo,aa.has=function(t,e){return null!=t&&Ci(t,e,Ha)},aa.hasIn=qs,aa.head=no,aa.identity=hu,aa.includes=function(t,e,n,a){t=as(t)?t:Xs(t),n=n&&!a?Os(n):0;var r=t.length;return n<0&&(n=Pn(r+n,0)),ys(t)?n<=r&&t.indexOf(e,n)>-1:!!r&&$e(t,e,n)>-1},aa.indexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var r=null==n?0:Os(n);return r<0&&(r=Pn(a+r,0)),$e(t,e,r)},aa.inRange=function(t,e,n){return e=Ss(e),n===r?(n=e,e=0):n=Ss(n),function(t,e,n){return t>=Mn(e,n)&&t<Pn(e,n)}(t=ks(t),e,n)},aa.invoke=Ys,aa.isArguments=ts,aa.isArray=es,aa.isArrayBuffer=ns,aa.isArrayLike=as,aa.isArrayLikeObject=rs,aa.isBoolean=function(t){return!0===t||!1===t||fs(t)&&za(t)==M},aa.isBuffer=is,aa.isDate=os,aa.isElement=function(t){return fs(t)&&1===t.nodeType&&!gs(t)},aa.isEmpty=function(t){if(null==t)return!0;if(as(t)&&(es(t)||"string"==typeof t||"function"==typeof t.splice||is(t)||_s(t)||ts(t)))return!t.length;var e=Oi(t);if(e==H||e==K)return!t.size;if(Li(t))return!Xa(t).length;for(var n in t)if(ee.call(t,n))return!1;return!0},aa.isEqual=function(t,e){return Wa(t,e)},aa.isEqualWith=function(t,e,n){var a=(n="function"==typeof n?n:r)?n(t,e):r;return a===r?Wa(t,e,r,n):!!a},aa.isError=ss,aa.isFinite=function(t){return"number"==typeof t&&An(t)},aa.isFunction=us,aa.isInteger=ls,aa.isLength=cs,aa.isMap=ps,aa.isMatch=function(t,e){return t===e||Ka(t,e,xi(e))},aa.isMatchWith=function(t,e,n){return n="function"==typeof n?n:r,Ka(t,e,xi(e),n)},aa.isNaN=function(t){return hs(t)&&t!=+t},aa.isNative=function(t){if(Ei(t))throw new Vt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return $a(t)},aa.isNil=function(t){return null==t},aa.isNull=function(t){return null===t},aa.isNumber=hs,aa.isObject=ds,aa.isObjectLike=fs,aa.isPlainObject=gs,aa.isRegExp=ms,aa.isSafeInteger=function(t){return ls(t)&&t>=-C&&t<=C},aa.isSet=bs,aa.isString=ys,aa.isSymbol=vs,aa.isTypedArray=_s,aa.isUndefined=function(t){return t===r},aa.isWeakMap=function(t){return fs(t)&&Oi(t)==J},aa.isWeakSet=function(t){return fs(t)&&"[object WeakSet]"==za(t)},aa.join=function(t,e){return null==t?"":En.call(t,e)},aa.kebabCase=eu,aa.last=oo,aa.lastIndexOf=function(t,e,n){var a=null==t?0:t.length;if(!a)return-1;var i=a;return n!==r&&(i=(i=Os(n))<0?Pn(a+i,0):Mn(i,a-1)),e==e?function(t,e,n){for(var a=n+1;a--;)if(t[a]===e)return a;return a}(t,e,i):Ke(t,Xe,i,!0)},aa.lowerCase=nu,aa.lowerFirst=au,aa.lt=xs,aa.lte=Ts,aa.max=function(t){return t&&t.length?Ra(t,hu,Ya):r},aa.maxBy=function(t,e){return t&&t.length?Ra(t,vi(e,2),Ya):r},aa.mean=function(t){return Je(t,hu)},aa.meanBy=function(t,e){return Je(t,vi(e,2))},aa.min=function(t){return t&&t.length?Ra(t,hu,Ja):r},aa.minBy=function(t,e){return t&&t.length?Ra(t,vi(e,2),Ja):r},aa.stubArray=Cu,aa.stubFalse=ku,aa.stubObject=function(){return{}},aa.stubString=function(){return""},aa.stubTrue=function(){return!0},aa.multiply=Eu,aa.nth=function(t,e){return t&&t.length?ar(t,Os(e)):r},aa.noConflict=function(){return Te._===this&&(Te._=oe),this},aa.noop=vu,aa.now=jo,aa.pad=function(t,e,n){t=Ds(t);var a=(e=Os(e))?vn(t):0;if(!e||a>=e)return t;var r=(e-a)/2;return ei(Dn(r),n)+t+ei(In(r),n)},aa.padEnd=function(t,e,n){t=Ds(t);var a=(e=Os(e))?vn(t):0;return e&&a<e?t+ei(e-a,n):t},aa.padStart=function(t,e,n){t=Ds(t);var a=(e=Os(e))?vn(t):0;return e&&a<e?ei(e-a,n)+t:t},aa.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),qn(Ds(t).replace(Ct,""),e||0)},aa.random=function(t,e,n){if(n&&"boolean"!=typeof n&&Ri(t,e,n)&&(e=n=r),n===r&&("boolean"==typeof e?(n=e,e=r):"boolean"==typeof t&&(n=t,t=r)),t===r&&e===r?(t=0,e=1):(t=Ss(t),e===r?(e=t,t=0):e=Ss(e)),t>e){var a=t;t=e,e=a}if(n||t%1||e%1){var i=Fn();return Mn(t+i*(e-t+ye("1e-"+((i+"").length-1))),e)}return ur(t,e)},aa.reduce=function(t,e,n){var a=es(t)?Ge:en,r=arguments.length<3;return a(t,vi(e,4),n,r,ka)},aa.reduceRight=function(t,e,n){var a=es(t)?Ve:en,r=arguments.length<3;return a(t,vi(e,4),n,r,Ia)},aa.repeat=function(t,e,n){return e=(n?Ri(t,e,n):e===r)?1:Os(e),lr(Ds(t),e)},aa.replace=function(){var t=arguments,e=Ds(t[0]);return t.length<3?e:e.replace(t[1],t[2])},aa.result=function(t,e,n){var a=-1,i=(e=Rr(e,t)).length;for(i||(i=1,t=r);++a<i;){var o=null==t?r:t[Wi(e[a])];o===r&&(a=i,o=n),t=us(o)?o.call(t):o}return t},aa.round=Lu,aa.runInContext=t,aa.sample=function(t){return(es(t)?ha:function(t){return ha(Xs(t))})(t)},aa.size=function(t){if(null==t)return 0;if(as(t))return ys(t)?vn(t):t.length;var e=Oi(t);return e==H||e==K?t.size:Xa(t).length},aa.snakeCase=ru,aa.some=function(t,e,n){var a=es(t)?Be:gr;return n&&Ri(t,e,n)&&(e=r),a(t,vi(e,3))},aa.sortedIndex=function(t,e){return mr(t,e)},aa.sortedIndexBy=function(t,e,n){return br(t,e,vi(n,2))},aa.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var a=mr(t,e);if(a<n&&Xo(t[a],e))return a}return-1},aa.sortedLastIndex=function(t,e){return mr(t,e,!0)},aa.sortedLastIndexBy=function(t,e,n){return br(t,e,vi(n,2),!0)},aa.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var n=mr(t,e,!0)-1;if(Xo(t[n],e))return n}return-1},aa.startCase=iu,aa.startsWith=function(t,e,n){return t=Ds(t),n=null==n?0:Ta(Os(n),0,t.length),e=_r(e),t.slice(n,n+e.length)==e},aa.subtract=Pu,aa.sum=function(t){return t&&t.length?nn(t,hu):0},aa.sumBy=function(t,e){return t&&t.length?nn(t,vi(e,2)):0},aa.template=function(t,e,n){var a=aa.templateSettings;n&&Ri(t,e,n)&&(e=r),t=Ds(t),e=As({},e,a,li);var i,o,s=As({},e.imports,a.imports,li),u=Hs(s),l=on(s,u),c=0,d=e.interpolate||Yt,f="__p += '",p=Kt((e.escape||Yt).source+"|"+d.source+"|"+(d===vt?Et:Yt).source+"|"+(e.evaluate||Yt).source+"|$","g"),h="//# sourceURL="+(ee.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++he+"]")+"\n";t.replace(p,function(e,n,a,r,s,u){return a||(a=r),f+=t.slice(c,u).replace(Ht,fn),n&&(i=!0,f+="' +\n__e("+n+") +\n'"),s&&(o=!0,f+="';\n"+s+";\n__p += '"),a&&(f+="' +\n((__t = ("+a+")) == null ? '' : __t) +\n'"),c=u+e.length,e}),f+="';\n";var g=ee.call(e,"variable")&&e.variable;g||(f="with (obj) {\n"+f+"\n}\n"),f=(o?f.replace(ct,""):f).replace(dt,"$1").replace(ft,"$1;"),f="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+f+"return __p\n}";var m=lu(function(){return Bt(u,h+"return "+f).apply(r,l)});if(m.source=f,ss(m))throw m;return m},aa.times=function(t,e){if((t=Os(t))<1||t>C)return[];var n=D,a=Mn(t,D);e=vi(e),t-=D;for(var r=an(a,e);++n<t;)e(n);return r},aa.toFinite=Ss,aa.toInteger=Os,aa.toLength=Cs,aa.toLower=function(t){return Ds(t).toLowerCase()},aa.toNumber=ks,aa.toSafeInteger=function(t){return t?Ta(Os(t),-C,C):0===t?t:0},aa.toString=Ds,aa.toUpper=function(t){return Ds(t).toUpperCase()},aa.trim=function(t,e,n){if((t=Ds(t))&&(n||e===r))return t.replace(Ot,"");if(!t||!(e=_r(e)))return t;var a=_n(t),i=_n(e);return Ar(a,un(a,i),ln(a,i)+1).join("")},aa.trimEnd=function(t,e,n){if((t=Ds(t))&&(n||e===r))return t.replace(kt,"");if(!t||!(e=_r(e)))return t;var a=_n(t);return Ar(a,0,ln(a,_n(e))+1).join("")},aa.trimStart=function(t,e,n){if((t=Ds(t))&&(n||e===r))return t.replace(Ct,"");if(!t||!(e=_r(e)))return t;var a=_n(t);return Ar(a,un(a,_n(e))).join("")},aa.truncate=function(t,e){var n=30,a="...";if(ds(e)){var i="separator"in e?e.separator:i;n="length"in e?Os(e.length):n,a="omission"in e?_r(e.omission):a}var o=(t=Ds(t)).length;if(pn(t)){var s=_n(t);o=s.length}if(n>=o)return t;var u=n-vn(a);if(u<1)return a;var l=s?Ar(s,0,u).join(""):t.slice(0,u);if(i===r)return l+a;if(s&&(u+=l.length-u),ms(i)){if(t.slice(u).search(i)){var c,d=l;for(i.global||(i=Kt(i.source,Ds(Lt.exec(i))+"g")),i.lastIndex=0;c=i.exec(d);)var f=c.index;l=l.slice(0,f===r?u:f)}}else if(t.indexOf(_r(i),u)!=u){var p=l.lastIndexOf(i);p>-1&&(l=l.slice(0,p))}return l+a},aa.unescape=function(t){return(t=Ds(t))&&gt.test(t)?t.replace(pt,xn):t},aa.uniqueId=function(t){var e=++ne;return Ds(t)+e},aa.upperCase=ou,aa.upperFirst=su,aa.each=Do,aa.eachRight=Ro,aa.first=no,yu(aa,(Iu={},Pa(aa,function(t,e){ee.call(aa.prototype,e)||(Iu[e]=t)}),Iu),{chain:!1}),aa.VERSION="4.17.14",Me(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){aa[t].placeholder=aa}),Me(["drop","take"],function(t,e){sa.prototype[t]=function(n){n=n===r?1:Pn(Os(n),0);var a=this.__filtered__&&!e?new sa(this):this.clone();return a.__filtered__?a.__takeCount__=Mn(n,a.__takeCount__):a.__views__.push({size:Mn(n,D),type:t+(a.__dir__<0?"Right":"")}),a},sa.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),Me(["filter","map","takeWhile"],function(t,e){var n=e+1,a=1==n||3==n;sa.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:vi(t,3),type:n}),e.__filtered__=e.__filtered__||a,e}}),Me(["head","last"],function(t,e){var n="take"+(e?"Right":"");sa.prototype[t]=function(){return this[n](1).value()[0]}}),Me(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");sa.prototype[t]=function(){return this.__filtered__?new sa(this):this[n](1)}}),sa.prototype.compact=function(){return this.filter(hu)},sa.prototype.find=function(t){return this.filter(t).head()},sa.prototype.findLast=function(t){return this.reverse().find(t)},sa.prototype.invokeMap=cr(function(t,e){return"function"==typeof t?new sa(this):this.map(function(n){return Ba(n,t,e)})}),sa.prototype.reject=function(t){return this.filter(Uo(vi(t)))},sa.prototype.slice=function(t,e){t=Os(t);var n=this;return n.__filtered__&&(t>0||e<0)?new sa(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=Os(e))<0?n.dropRight(-e):n.take(e-t)),n)},sa.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},sa.prototype.toArray=function(){return this.take(D)},Pa(sa.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),a=/^(?:head|last)$/.test(e),i=aa[a?"take"+("last"==e?"Right":""):e],o=a||/^find/.test(e);i&&(aa.prototype[e]=function(){var e=this.__wrapped__,s=a?[1]:arguments,u=e instanceof sa,l=s[0],c=u||es(e),d=function(t){var e=i.apply(aa,He([t],s));return a&&f?e[0]:e};c&&n&&"function"==typeof l&&1!=l.length&&(u=c=!1);var f=this.__chain__,p=o&&!f,h=u&&!this.__actions__.length;if(!o&&c){e=h?e:new sa(this);var g=t.apply(e,s);return g.__actions__.push({func:So,args:[d],thisArg:r}),new oa(g,f)}return p&&h?t.apply(this,s):(g=this.thru(d),p?a?g.value()[0]:g.value():g)})}),Me(["pop","push","shift","sort","splice","unshift"],function(t){var e=Xt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",a=/^(?:pop|shift)$/.test(t);aa.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)})}}),Pa(sa.prototype,function(t,e){var n=aa[e];if(n){var a=n.name+"";ee.call(Kn,a)||(Kn[a]=[]),Kn[a].push({name:e,func:n})}}),Kn[Xr(r,h).name]=[{name:"wrapper",func:r}],sa.prototype.clone=function(){var t=new sa(this.__wrapped__);return t.__actions__=zr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=zr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=zr(this.__views__),t},sa.prototype.reverse=function(){if(this.__filtered__){var t=new sa(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},sa.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],o=i.size;switch(i.type){case"drop":t+=o;break;case"dropRight":e-=o;break;case"take":e=Mn(e,t+o);break;case"takeRight":t=Pn(t,e-o)}}return{start:t,end:e}}(0,r,this.__views__),o=i.start,s=i.end,u=s-o,l=a?s:o-1,c=this.__iteratees__,d=c.length,f=0,p=Mn(u,this.__takeCount__);if(!n||!a&&r==u&&p==u)return Or(t,this.__actions__);var h=[];t:for(;u--&&f<p;){for(var g=-1,m=t[l+=e];++g<d;){var b=c[g],y=b.type,v=(0,b.iteratee)(m);if(2==y)m=v;else if(!v){if(1==y)continue t;break t}}h[f++]=m}return h},aa.prototype.at=Oo,aa.prototype.chain=function(){return wo(this)},aa.prototype.commit=function(){return new oa(this.value(),this.__chain__)},aa.prototype.next=function(){this.__values__===r&&(this.__values__=ws(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},aa.prototype.plant=function(t){for(var e,n=this;n instanceof ia;){var a=$i(n);a.__index__=0,a.__values__=r,e?i.__wrapped__=a:e=a;var i=a;n=n.__wrapped__}return i.__wrapped__=t,e},aa.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof sa){var e=t;return this.__actions__.length&&(e=new sa(this)),(e=e.reverse()).__actions__.push({func:So,args:[co],thisArg:r}),new oa(e,this.__chain__)}return this.thru(co)},aa.prototype.toJSON=aa.prototype.valueOf=aa.prototype.value=function(){return Or(this.__wrapped__,this.__actions__)},aa.prototype.first=aa.prototype.head,tn&&(aa.prototype[tn]=function(){return this}),aa}();Te._=Tn,(a=(function(){return Tn}).call(e,n,e,t))===r||(t.exports=a)}).call(this)}).call(this,n("YuTi")(t))},Lwhh:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableColumnHeaderDirective=function(){return a([r.Directive({selector:"[ngx-datatable-header-template]"})],function(t){this.template=t})}()},"M/6F":function(t,e,n){"use strict";var a=n("CcnG"),r=n("IZUe"),i=n("MdoF"),o=n("lTVp"),s=n("Ip0R");n("NDi4"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return c});var u=a["\u0275crt"]({encapsulation:0,styles:[[".error-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.error-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"button",[["autofocus",""],["class","btn btn-sm btn-default 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["\u0275did"](2,4210688,null,0,r.a,[a.ElementRef],null,null),(t()(),a["\u0275ted"](-1,null,["Back"]))],null,null)}function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","danger"]],null,null,null,i.c,i.b)),a["\u0275did"](1,114688,null,0,o.a,[o.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","error-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-times-circle alert-danger"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","error-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","error-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](16777216,null,null,1,null,l)),a["\u0275did"](13,16384,null,0,s.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"danger"),t(e,13,0,n.backAction.observers.length>0)},function(t,e){t(e,8,0,e.component.title)})}},M9eX:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("DtyJ"),s=(n("czA5"),n("ahDk"));e.ResizeableDirective=function(){function t(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new i.EventEmitter,this.resizing=!1,this.element=t.nativeElement}return t.prototype.ngAfterViewInit=function(){var t=this.renderer,e=t.createElement("span");t.addClass(e,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,e)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))},t.prototype.onMousedown=function(t){var e=this,n=t.target.classList.contains("resize-handle"),a=this.element.clientWidth,r=t.screenX;if(n){t.stopPropagation(),this.resizing=!0;var i=o.fromEvent(document,"mouseup");this.subscription=i.subscribe(function(t){return e.onMouseup()});var u=o.fromEvent(document,"mousemove").pipe(s.takeUntil(i)).subscribe(function(t){return e.move(t,a,r)});this.subscription.add(u)}},t.prototype.move=function(t,e,n){var a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeEnabled",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"resize",void 0),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMousedown",null),a([i.Directive({selector:"[resizeable]",host:{"[class.resizeable]":"resizeEnabled"}})],t)}()},MGBS:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyError=function(t,e){this.destination.error(t)},e.prototype.notifyComplete=function(t){this.destination.complete()},e}(n("FFOo").a)},MaEZ:function(t,e){t.exports='<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\xfdt navigaci</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>P\u0159ehled</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitory</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\xed</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\xe1vy</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>Z\xe1znamy ud\xe1lost\xed</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>V\xfdstrahy</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\xed</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\xe9 syst\xe9my</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>Objektov\xe1 br\xe1na</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>Procesy slu\u017eeb</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>U\u017eivatel\xe9</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>N\xe1doby</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\xedsk\xe1vaj\xed 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>"/>. \u010cekejte\u2026\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\xed se data\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>z mezipam\u011bti\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\u0159\xed se na\u010d\xedst 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\xed klastru.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Zp\u011bt</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\u010d\xedt\xe1n\xed \xfadaj\u016f panelu\u2026</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\xe9dn\u011bte 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\xe1n\xed.\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\u0159ehled neexistuje. Pod\xedvejte 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\u0159idat p\u0159ehledy do Grafany.\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>Resetovat nastaven\xed</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Data se nepoda\u0159ilo na\u010d\xedst</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>vybr\xe1no</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Nastaven\xed</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\u011bnit tyto parametry z jejich v\xfdchoz\xedch hodnot obvykle nen\xed pot\u0159eba.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Storno</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Pokro\u010dil\xe1 nastaven\xed</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>IQN c\xedle</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Tuto kolonku je t\u0159eba vyplnit.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN nem\xe1 spr\xe1vn\xfd form\xe1t.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN m\xe1 n\xe1sleduj\xedc\xed formu z\xe1pisu \u201eiqn.$rok-$m\u011bs\xedc.$adresaObr\xe1cen\u011b:$ur\u010den\xfdN\xe1zev\'</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\u0159\xedklad: 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\u0161\xed 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\xedl m\xe1 zm\u011bn\u011bn\xe1 pokro\u010dil\xe1 nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>Port\xe1ly</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\u0159eba alespo\u0148 \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> bran.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>P\u0159idat port\xe1l</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Tento obraz m\xe1 zm\u011bn\u011bn\xe1 nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Je t\u0159eba alespo\u0148 1 obraz.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>P\u0159idat obraz</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL ov\u011b\u0159ov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>Inici\xe1tory</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>Inici\xe1tor</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\u0159eba, aby se IQN inici\xe1toru neopakovalo.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>U\u017eivatele</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\u0159eba, aby u\u017eivatelsk\xe1 jm\xe9na m\u011bla d\xe9lku 8 a\u017e 64 znak\u016f a\n                        mohou obsahovat pouze p\xedsmena a znaky \u201e.\u201c, \u201e@\u201c, \u201e-\u201c, \u201e_\u201c nebo \u201e:\u201c.</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="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>U\u017eivatel pro vz\xe1jemn\xe9 ov\u011b\u0159en\xed</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Heslo pro vz\xe1jemn\xe9 ov\u011b\u0159en\xed</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\xe1tor spad\xe1 do skupiny. Obrazy budou nastaveny ve skupin\u011b.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Nep\u0159id\xe1ny \u017e\xe1dn\xe9 polo\u017eky.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>P\u0159idat inici\xe1tor</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>N\xe1zev</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>P\u0159idat skupinu</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="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 ozna\u010den\xe9 \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Ov\u011b\u0159ov\xe1n\xed pro objevov\xe1n\xed</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>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="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\xedvejte 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\xe1vy iSCSI c\xedl\u016f.\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\xedl nen\xed k dispozici</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u201e/\u201c a \u201e@\u201c nejsou dovoleny.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Na\u010d\xedt\xe1n\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u017d\xe1dn\xe9 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="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Pou\u017e\xedt vyhrazen\xfd datov\xfd fond</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>Datov\xfd 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\xfd fond kter\xfd uchov\xe1v\xe1 objektov\xe1 data RBD.</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u017d\xe1dn\xe9 fondy k dispozici --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>nap\u0159. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Je t\u0159eba zv\u011bt\u0161it.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Pokro\u010dil\xe9\u2026</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Pokro\u010dil\xe9</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Prou\u017ekov\xe1n\xed</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="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Jednotka prou\u017eku</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Vybrat jednotku prou\u017eku --</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\u0159eba vyplnit, proto\u017ee je definov\xe1n po\u010det prou\u017ek\u016f!</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\u017eku je vy\u0161\u0161\xed ne\u017e velikost objektu.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Po\u010det prou\u017ek\u016f</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\u0159eba vyplnit, proto\u017ee je definov\xe1na jednotka prou\u017eku!</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\u0159eba, aby po\u010det prou\u017ek\u016f byl v\u011bt\u0161\xed ne\u017e nula.</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Ko\u0161</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Celkov\xe1 v\xfdkonnost</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="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\u011bj\u0161\xed popis</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>V\xfdchoz\xed</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>V\xfdchoz\xed pro proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Slu\u017eby</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="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\xe1 hodnota je p\u0159\xedli\u0161 vysok\xe1! Nem\u016f\u017ee b\xfdt vy\u0161\u0161\xed ne\u017e \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\xe1 hodnota je p\u0159\xedli\u0161 n\xedzk\xe1! Nem\u016f\u017ee b\xfdt ni\u017e\u0161\xed ne\u017e \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\u017eit</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>prohl\xed\u017ee\u010d CRUSH mapy</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Seznam stroj\u016f</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Nenalezeny \u017e\xe1dn\xe9 polo\u017eky</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>Z\xe1znamy ud\xe1lost\xed v klastra</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Auditn\xed z\xe1znamy ud\xe1lost\xed</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Na\u010d\xedt\xe1n\xed nastaven\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>Toto nastaven\xed se nepoda\u0159ilo na\u010d\xedst.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Upravit modul spr\xe1vy</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\xe1 hodnota nen\xed platn\xe9 UUID, nap\u0159.: 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\u0159eba, aby zadan\xe1 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>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>Je t\u0159eba, aby zadan\xe1 hodnota byla \u010d\xedslo.</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\u0159eba, aby zadan\xe1 hodnota byla \u010d\xedslo nebo des\xedtkov\xe9.</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\u016f zm\u011bn\u011bna</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\xf3rum spojen\xed</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>kv\xf3rum monitor</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>vy\u017eadov\xe1no spojen\xed</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>vy\u017eadov\xe1no monitor\u016f</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>V kv\xf3ru</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Nen\xed v kv\xf3ru</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>P\u0159\xedznaky OSD pro cel\xfd klastr</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorita obnoven\xed 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\u0159izp\u016fsobit 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\u0159eba 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\xe1 hodnota je p\u0159\xedli\u0161 vysok\xe1, je t\u0159eba, aby nebyla vy\u0161\u0161\xed ne\u017e \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\xe1 hodnota je p\u0159\xedli\u0161 n\xedzk\xe1! Je t\u0159eba, aby byla ni\u017e\u0161\xed ne\u017e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Znovu vyv\xe1\u017eit OSD</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\u0159eba, 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\xe1\u017eit</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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Chyst\xe1te se pou\u017e\xedt kontrolu na\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Pokud budete pokra\u010dovat, \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\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>"/> bude ozna\u010deno\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD nen\xed mo\u017en\xe9 bezpe\u010dn\u011b zlikvidovat!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Pokud budete pokra\u010dovat,\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> bude \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>"/>.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Zdrav\xed</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\u011b nastaven\xed a zapnut\xed funkce spr\xe1vy NFS Ganesha nahl\xe9dn\u011bte 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\u0159istupovat m\u016f\u017ee libovoln\xfd 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\u017eadovan\xe1 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\u0159eba, aby obsahovalo jednu nebo v\xedce \u010d\xe1rkou odd\u011blovan\xfdch hodnot</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>Nap\u0159\xedklad:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>Typ p\u0159\xedstupu</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\u0159idat klienty</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u017d\xe1dn\xfd 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\u0159idat proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>Podp\u016frn\xe1 vrstva \xfalo\u017ei\u0161t\u011b</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- Vyberte podp\u016frnou vrstvu \xfalo\u017ei\u0161t\u011b --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>U\u017eivatel objektov\xe9 br\xe1ny</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u017d\xe1dn\xed u\u017eivatel\xe9 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\u017eivatele br\xe1ny objekt\u016f --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>Identif. u\u017eivatele CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u017d\xe1dn\xed 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\xe1zev CephFS</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Security Label</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Enable security label</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>Popis um\xedst\u011bn\xed 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\u0159eba, aby popis um\xedst\u011bn\xed za\u010d\xednal na \u201e/\u201c, za kter\xfdm n\xe1sleduje slovo</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>Bude vytvo\u0159ena nov\xe1 slo\u017eka</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>Popis um\xedst\u011bn\xed</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\xedst\u011bn\xed m\u016f\u017ee b\xfdt pouze jedin\xe9 \u201e/\u201c 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\u0159ena nov\xe1 n\xe1doba</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 \u0161t\xedtek</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\xed p\u0159\xedstup 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\u0159ipojen\xed (nem\u016f\u017ee za\u010d\xednat 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>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not 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>By using different Tag options, the same Path may be exported multiple times.</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>By using different Pseudo options, the same Path may be exported multiple times.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u017d\xe1dn\xfd typ p\u0159\xedstupu 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\u0159\xedstupu --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No squash available --</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>--Select what kind of user id squashing is performed --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>Transportn\xed 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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>N\xe1zev m\u016f\u017ee b\xfdt tvo\u0159en pouze p\xedsmeny a \u010d\xedslicemi, d\xe1le je\u0161t\u011b spojovn\xedky a podtr\u017e\xedtky.</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\xfd n\xe1zev pro profil mazac\xedho k\xf3du je u\u017e pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>Z\xe1suvn\xfd 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\u0159eba, aby bylo 2 a v\xedce.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>Shluky k\xf3dov\xe1n\xed (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\u0159eba, aby bylo 1 a v\xedce.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Odhadov\xe1n\xed odolnosti (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Um\xedst\u011bn\xed (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Dom\xe9na selh\xe1n\xed 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>\u017d\xe1dn\xe9</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\u0159en crush</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>T\u0159\xedda crush za\u0159\xedzen\xed</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>libovoln\xe9</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>Slo\u017eka</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>P\u0159idat</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Zav\u0159\xedt</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>N\xe1zev\u2026</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\xfd n\xe1zev pro Ceph fond je u\u017e pou\u017e\xedv\xe1n.</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="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Skupiny um\xedst\u011bn\xed</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\u0159eba alespo\u0148 jedn\xe9 skupiny um\xedst\u011bn\xed!</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\xe1\u0161 klastr nem\u016f\u017ee obslou\u017eit tolik skupin um\xedst\u011bn\xed. P\u0159epo\u010d\xedtejte pot\u0159ebn\xe9 mno\u017estv\xed skupin um\xedst\u011bn\xed.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>U existuj\xedc\xedho fondu je mo\u017en\xe9 po\u010det skupin um\xedst\u011bn\xed pouze zvy\u0161ovat.\n                Nyn\xed m\xe1 v\xe1\u0161 fond \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> skupin.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>N\xe1pov\u011bda k v\xfdpo\u010dtu</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Sada pravidel crush</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="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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Pravidlo nem\u016f\u017ee b\xfdt uplatn\u011bno na st\xe1vaj\xedc\xed klastr proto\u017ee m\xe1\n                p\u0159\xedli\u0161 m\xe1lo OSD aby splnil minimum OSD vy\u017eadovan\xfdch t\xedmto pravidlem.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Replikovan\xe1 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\xe9n\u011b: \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\xedce: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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\xe1 velikost je mimo rozsah. Platn\xe9 hodnoty jsou od \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> do \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Profil mazac\xedho k\xf3du</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u017d\xe1dn\xfd profil mazac\xedho k\xf3du --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- Vyberte profil mazac\xedho k\xf3du --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>P\u0159\xedznaky</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC p\u0159ebit\xed</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="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\u017eim</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>-- \u017d\xe1dn\xfd algoritmus komprese maz\xe1n\xed --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Minim\xe1ln\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>nap\u0159. 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\u011bla b\xfdt vy\u0161\u0161\xed ne\u017e nula</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Nejvy\u0161\u0161\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>nap\u0159. 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\u011bla b\xfdt vy\u0161\u0161\xed ne\u017e nejni\u017e\u0161\xed velikost blobu</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Pom\u011br</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Kompresn\xed pom\u011br</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\u011bla b\xfdt z rozmez\xed 0.0 a\u017e 1.0</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Nen\xed mo\u017en\xe9 vytvo\u0159it RBD fond, kter\xfd m\xe1 v n\xe1zvu \u201e/\u201c.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Zm\u011b\u0148te n\xe1zev nebo ze seznamu pou\u017eit\xed odeberte \u201erbd\u201c</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Seznam fond\u016f</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\xedvejte 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\xe1vy br\xe1ny objekt\u016f.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Na\u010d\xedt\xe1n\xed dat n\xe1doby\u2026</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Data n\xe1doby se nepoda\u0159ilo na\u010d\xedst.</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\xed platn\xe1.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>Zvolen\xfd n\xe1zev u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Vlastn\xedk</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Vybrat u\u017eivatele --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Seznam proces\u016f slu\u017eeb</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\xe1vn\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Vybrat opr\xe1vn\u011bn\xed --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>U\u017eivatelsk\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Vybrat u\u017eivatelsk\xe9 jm\xe9no --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>Automaticky vytvo\u0159it kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>P\u0159\xedstupov\xfd kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Tajn\xfd kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>D\xedl\u010d\xed u\u017eivatel</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\xfd identifik\xe1tor d\xedl\u010d\xedho u\u017eivatele u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u010d\xedst, zapisovat</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>pln\xe9</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>Automaticky vytvo\u0159it tajemstv\xed</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>Na\u010d\xedt\xe1n\xed \xfadaj\u016f u\u017eivatele\u2026</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\xdadaje u\u017eivatele se nepoda\u0159ilo na\u010d\xedst.</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\xfd identif. u\u017eivatele u\u017e je pou\u017e\xedv\xe1n.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>Cel\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>E-mailov\xe1 adresa</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\xed platn\xe1 e-mailov\xe1 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\xe1 e-mailov\xe1 adresa u\u017e je pou\u017e\xedv\xe1na.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>Nejv\xfd\u0161e n\xe1dob</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\u0159eba, aby zadan\xe1 hodnota byla 0 a vy\u0161\u0161\xed.</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>D\xedl\u010d\xed u\u017eivatel\xe9</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Nejsou zde \u017e\xe1dn\xed d\xedl\u010d\xed u\u017eivatel\xe9.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kl\xed\u010de</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 \u017e\xe1dn\xe9 kl\xed\u010de.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</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="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Nejsou zde \u017e\xe1dn\xe9 schopnosti.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kv\xf3ta u\u017eivatele</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="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Neomezen\xe1 velikost</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Nejvy\u0161\u0161\xed velikost</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>Neomezen\xe9 objekty</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>Nejv\xfd\u0161e objekt\u016f</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kv\xf3ta n\xe1doby</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>V\xedtejte 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\u0159eba vyplnit u\u017eivatelsk\xe9 jm\xe9no</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Je t\u0159eba vyplnit heslo</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>P\u0159ihl\xe1sit</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Popis\u2026</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Opr\xe1vn\u011bn\xed</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\xe1m l\xedto, u\u017eivatel 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\xe1tit se na \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\u0159ihla\u0161ovac\xed str\xe1nku\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Budete odhl\xe1\u0161eni od poskytovatele identity kdy\u017e se pokus\xedte znovu p\u0159ihl\xe1sit.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Potvrzen\xed zad\xe1n\xed 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\xe1n\xed hesla se neshoduj\xed.</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\xfd e-mail.</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="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">\n        <source>You are about to remove "user read / update" permissions from your own user.</source>\n        <target>Chyst\xe1te se odebrat opr\xe1vn\u011bn\xed \u201eu\u017eivatel \u010d\xedst/aktualizovat\u201c sv\xe9mu vlastn\xedmu \xfa\u010dtu.</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\u010dovat, nebudete nad\xe1le schopn\xed p\u0159id\xe1vat nebo nebo odeb\xedrat role \u017e\xe1dn\xe9mu z u\u017eivatel\u016f.</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\u010dovat?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>Odep\u0159eno</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\xe1me se, ale nem\xe1te opr\xe1vn\u011bn\xed zobrazit to, po \u010dem se  poohl\xed\u017e\xedte.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Omlouv\xe1me se, nepoda\u0159ilo se naj\xedt to, po \u010dem se poohl\xed\u017e\xedte</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Odebrat v\u0161e</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Ned\xe1vn\xe1 ozn\xe1men\xed</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Nejsou zde \u017e\xe1dn\xe9 \xfalohy na pozad\xed.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\xdalohy na pozad\xed</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>N\xe1pov\u011bda</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\u010dn\xed program. rozhran\xed</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\xed p\u0159ehledu</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>Spr\xe1va u\u017eivatel\u016f</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>P\u0159ihl\xe1\u0161en\xfd u\u017eivatel</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\u0159ihl\xe1\u0161eni 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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Odhl\xe1sit</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010de</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Podrobnosti o v\xfdkonnosti</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\u0159\xedku</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Pravidlo um\xedst\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>Ozna\u010dova\u010d</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>Nejvy\u0161\u0161\xed ozna\u010dova\u010d</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\xed verze</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Okam\u017eik \xfapravy</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>Skupinaz\xf3ny</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Nejvy\u0161\u0161\xed 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\xfd\u0161e objekt\u016f</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Syst\xe9m</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>Nejv\xfd\u0161e n\xe1dob</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010de nejsou k dispozici</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Glob\xe1ln\xed</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Fond</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Nastaven\xed 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\xedstn\xedmu nastaven\xed. Nam\xedsto n\xed bude pou\u017eita hodnota nad\u0159azen\xe9ho nastaven\xed.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>Minim\xe1ln\xed hodnota je 0</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="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>V\xfdkonnostn\xed \u010d\xedta\u010d</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\xed 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\xe1pisy</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u010cten\xed</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="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>St\xe1vaj\xedc\xed 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>\xdarove\u0148</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>Je mo\u017en\xe9 aktualizovat za provozu (upraviteln\xe9)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u0160t\xedtky</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>Vy\u010d\xedslit hodnoty</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>Viz tak\xe9</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\u017eby spr\xe1vy</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>Objektov\xe9 br\xe1ny</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\xe1ny</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>vst/v\xfdst. 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>\u010cten\xed/z\xe1pis klienta</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Propustnost zotaven\xed</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\xfdkonnost</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>Hol\xe1 kapacita</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="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Skupin um\xedst\u011bn\xed na OSD</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>Stav skupiny um\xedst\u011bn\xed</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\u0161\xed 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\xe1znamech ud\xe1lost\xed\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>P\u0159esunout obraz do ko\u0161e</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Pro p\u0159esunut\xed \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> do ko\u0161e,\n          klikn\u011bte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>P\u0159esunout obraz\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Voliteln\u011b je mo\u017en\xe9 zvolit datum skon\u010den\xed platnosti.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Platnost ochrany skon\u010d\xed v</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>NECHR\xc1N\u011aNO</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\xfd form\xe1t data. Pou\u017eijte \u201eRRRR-MM-DD HH:mm:ss\u201c.</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\u017e skon\u010dila. Zvolte budouc\xed datum nebo nevypl\u0148ujte.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>P\u0159esunout obraz</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>P\u0159ehled</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>C\xedle</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\xfdm \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="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>Datov\xfd fond</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Vytvo\u0159eno</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Poskytov\xe1no</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>Celkem poskytov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>Prou\u017ekovac\xed jednotka</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Po\u010det prou\u017ekov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>Nad\u0159azen\xe9</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>P\u0159edpona n\xe1zvu bloku</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>Po\u0159ad\xed</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>Zachycen\xe9 stavy</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Toto nastaven\xed p\u0159ebije glob\xe1ln\xed hodnotu</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\xe1ln\xed hodnota. Pro tento obraz nebyla u t\xe9to volby nastavena \u017e\xe1dn\xe1 hodnota.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD zachycen\xfd stav\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, vybrat, skute\u010dn\xe9 {Rename} ostatn\xed {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> zachycen\xfd stav\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CHR\xc1N\u011aNO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NECHR\xc1N\u011aNO</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Chyst\xe1te se vr\xe1tit zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>Vysypat ko\u0161</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Pro vy\u010di\u0161t\u011bn\xed, vyberte jeden nebo v\u0161echny obrazy a klikn\u011bte na</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\xe1zev fondu\u2026</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>V\u0161e</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\xed</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\xfd n\xe1zev pro obraz a klikn\u011bte na</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>Nov\xfd n\xe1zev</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>Platnost skon\u010dila v</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Chr\xe1n\u011bno 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\xe1n\u011bn 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="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>probl\xe9my</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\u0159ipraveno</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>Upravit re\u017eim zrcadlen\xed fondu</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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 \xfapravu re\u017eimu zrcadlen\xed pro fond\xa0\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\xfd re\u017eim a klikn\u011bte na\xa0\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\u0159ed vypnut\xedm zrcadlen\xed je t\u0159eba odebrat klastry-prot\u011bj\u0161ky.</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\u011bj\u0161ek zrcadlen\xed 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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> atributy\n          prot\u011bj\u0161ku zrcadlen\xed 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>"/> a klikn\u011bte na \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Odeslat\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\xe1zev klastru</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>N\xe1zev klastru nen\xed platn\xfd</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. \u2026</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\xed platn\xfd.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Adresy monitor\u016f</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u010c\xe1rkou odd\u011blovan\xe9 adresy\u2026</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\xed platn\xe1.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX kl\xed\u010d</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Kl\xed\u010d v base64 k\xf3dov\xe1n\xed\u2026</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>Je t\u0159eba, aby CephX kl\xed\u010d byl v k\xf3dov\xe1n\xed base64.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Podrobnosti o stupn\xedch mezipam\u011bti</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Hodnocen\xed</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klienti: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>St\xe1vaj\xedc\xed</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>Aktualizov\xe1no ov\u011b\u0159ov\xe1n\xed pro objevov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 port\xe1ly.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 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 \u017e\xe1dn\xe9 obrazy. Ov\u011b\u0159te, \u017ee jste c\xedli p\u0159idali 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 \u017e\xe1dn\xe9 inici\xe1tory. Ov\u011b\u0159te, \u017ee jste c\xedli p\u0159idali inici\xe1tor.</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>C\xedl</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>N\xe1zev stroje</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>Bajt\u016f \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>Bajt\u016f z\xe1pis</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Operac\xed/s \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Operac\xed/s z\xe1pis</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\xe9m</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="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>Ukazatel postupu</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="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Upravit re\u017eim</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>P\u0159idat prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>Upravit prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>Smazat prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>Vedouc\xed</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>Po\u010det m\xedstn\xedch</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>Po\u010det vzd\xe1len\xfdch</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>zrcadlit prot\u011bj\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>Kl\xed\u010d</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="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>Hlubok\xe9 zplo\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>Vrstven\xed</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>V\xfdhradn\xed z\xe1mek</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>Mapa objekt\u016f (vy\u017eaduje v\xfdhradn\xed z\xe1mek)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u017durn\xe1lov\xe1n\xed (vy\u017eaduje v\xfdhradn\xed z\xe1mek)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Rychl\xe9 porovn\xe1n\xed (vy\u017eaduje mapu objekt\u016f)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>Kop\xedrovat</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Zplo\u0161tit</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>P\u0159esunout do ko\u0161e</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Vytvo\u0159it</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>P\u0159ejmenovat</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Ochr\xe1nit</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Zru\u0161it ochranu</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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Vr\xe1cen\xed zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Vr\xe1cen\xed zachycen\xe9ho stavu RBD zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Zachycen\xfd stav RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Smaz\xe1no 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\u0159en</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Hodnocen\xed</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>Proces slu\u017eby</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\u017eek</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>I-uzl\u016f</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>Vyu\u017eit\xed</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Procesy slu\u017eeb v pohotovosti</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\u017en\xe9 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\u017eeb / klienti nez\xedsk\xe1vaj\xed tuto hodnotu\n      z datab\xe1ze nastaven\xed monitoru. Nen\xed umo\u017en\u011bno nastavit tuto volbu\n      prost\u0159ednictv\xedm \u201eceph config set \u2026\'. Tato volba by m\u011bla b\xfdt nastavena\n      z p\u0159\xedkazov\xe9ho \u0159\xe1dku.</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\xed pouze p\u0159i spou\u0161t\u011bn\xed procesu slu\u017eby.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>Volba ovlivn\xed pouze vytv\xe1\u0159en\xed klastru.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>Volba ovlivn\xed pouze vytvo\u0159en\xed procesu slu\u017eby.</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\xe1na volba nastaven\xed \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\u017eba</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>St\xe1vaj\xedc\xed hodnota</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>Upraviteln\xe9</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\xe1na volba pro modul \u201e\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201c\n        </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="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Op\u011btovn\xe9 p\u0159ipojov\xe1n\xed, \u010dekejte\u2026</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>Ve\u0159ejn\xe1 adresa</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Otev\u0159en\xe9 relace</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Po\u010det 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\xe9 byly d\u0159\xedve odzna\u010deny nebudou ozna\u010deny nazp\u011bt kdy\u017e spust\xed</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>Po\u010det 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\u010deny po nastaven\xe9m intervalu</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Po\u010det aktivn\xedch</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD nen\xed dovoleno spu\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Po\u010det neaktivn\xedch</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\xe1\u0161en\xed o selh\xe1n\xed OSD jsou ignorov\xe1ny, jako nap\u0159\xedklad \u017ee monitory OSD neozna\u010d\xed jako nedostupn\xe9</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 \u010dten\xed a z\xe1pisy</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u017d\xe1dn\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Kontrola je vypnut\xe1</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u017d\xe1dn\xe1 hloubkov\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Hloubkov\xe1 kontrola je vypnut\xe1</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u017d\xe1dn\xe9 zasyp\xe1v\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>Zasyp\xe1v\xe1n\xed skupin um\xedst\u011bn\xed je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u017d\xe1dn\xe9 obnoven\xed</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Obnovov\xe1n\xed skupin um\xedst\u011bn\xed je pozastaveno</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Bitov\xe9 t\u0159\xedd\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>T\u0159\xeddit podle bit\u016f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>Vy\u010di\u0161t\u011bn\xe9 slo\u017eky zachycen\xfdch stav\u016f</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD maj\xed p\u0159eveden\xe9 sady zachycen\xfdch stav\u016f</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>Smaz\xe1no p\u0159i zotavov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Maz\xe1n\xed proveden\xe1 p\u0159i obnovov\xe1n\xed nam\xedsto peeringu</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Nep\u0159ekro\u010diteln\xfd limit z\xe1znamu ud\xe1lost\xed 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\u0159ekro\u010diteln\xfd limit na d\xe9lku z\xe1znamu ud\xe1lost\xed v pg</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>Aktualizov\xe1ny OSD p\u0159\xedznaky</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Hloubkov\xe1 kontrola</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Odzna\u010dit</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Ozna\u010dit</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>dovnit\u0159</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Ozna\u010dit</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>nedostupn\xe9</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>Ozna\u010dit ztracen\xe9</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>Zna\u010dka</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\u010deno jako ztracen\xe9</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>Vy\u010distit</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>vy\u010di\u0161t\u011bno</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="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\xe1no</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>skupiny um\xedst\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>P\u0159e\u010dteno bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Zaps\xe1no bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Operac\xed/s \u010dten\xed</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Operac\xed/s z\xe1pis</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\u010dit 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\u010dit \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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>Recovery Sleep</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>U\u017eivatelsky ur\u010den\xe9</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\xe1na rychlost zotaven\xed OSD \u201e\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> bylo inicializov\xe1no v n\xe1sleduj\xedc\xedm OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\xdaloha</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>Z\xe1va\u017enost</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>Zah\xe1jeno</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Pou\u017eito</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>\u010cist\xe9</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>Pracuj\xedc\xed</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>Varov\xe1n\xed</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>Nezn\xe1m\xe9</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>aktivn\xed</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u017e\xe1dn\xe9 souborov\xe9 syst\xe9my</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>aktivn\xed</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>n/a</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>aktivn\xed proces slu\u017eby</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>kv\xf3rum</target>\n      </trans-unit>\n      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">\n        <source>The NFS Ganesha service is not configured.</source>\n        <target>Slu\u017eba NFS Ganesha nen\xed 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\u017eivatel</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>Souborov\xfd syst\xe9m CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(p\u0159evzato z glob\xe1ln\xedho nastaven\xed)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>p\u0159evzato z glob\xe1ln\xedho nastaven\xed</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>-- Select what kind of user id squashing is performed --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>Nejsou k dispozici \u017e\xe1dn\xe9 procesy slu\u017eeb.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Re\u017eim mezipam\u011bti</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\xfd\u0161e bajt\u016f c\xedle</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>Nejv\xfd\u0161e objekt\u016f c\xedle</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>Nebyla p\u0159id\xe1na \u017e\xe1dn\xe1 aplikace</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Dosa\u017een limit aplikac\xed</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\u016f\u017ee m\xedt nejv\xfd\u0161e \u010dty\u0159i definice aplikac\xed.</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>Pou\u017eiteln\xe9 znaky \u201e_a-zA-Z0-9\u201c</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>Nejvy\u0161\u0161\xed d\xe9lka je 128 znak\u016f</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>Filtrovat nebo p\u0159idat aplikace</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>P\u0159idat aplikaci</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil mazac\xedho k\xf3du</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\u011bj\u0161\xed zm\u011bna</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Maz\xe1n\xedm k\xf3dovan\xfd 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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Zaps\xe1no bajt\u016f</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aktualizov\xe1na n\xe1doba objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201c\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\u0159ena n\xe1doba objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>n\xe1doba</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>n\xe1doby</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\xe1n u\u017eivatel objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201c\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\u0159en u\u017eivatel objektov\xe9 br\xe1ny \u201e\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>u\u017eivatel</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>u\u017eivatel\xe9</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>\u010cten\xed</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\u0159ena role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\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\xe1na role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Syst\xe9mov\xe1 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\xe1na role \u201e\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201c\n        </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\u0159en u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Aktualizovat u\u017eivatele</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>Pokra\u010dovat</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\xe1\u0161eni proto\u017ee va\u0161e role byly zm\u011bn\u011bny.</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\xe1n u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\xe1n u\u017eivatel \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\u0159ilo se smazat u\u017eivatele \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c\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\xed jste p\u0159ihl\xe1\u0161en\xed jako \u201e\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201c.\n        </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\u017ed\xfd objekt je rozd\u011blen v \u010d\xe1stech shluk\u016f dat, ka\u017ed\xe9 ulo\u017een\xe9 na jin\xe9m 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\u010d\xedtat k\xf3dovac\xed shluky pro ka\u017ed\xfd objekt a ukl\xe1dat je na r\u016fzn\xfdch OSD.\n      Po\u010det k\xf3dovac\xedch shluk\u016f je tak\xe9 po\u010det OSD, kter\xe9 mohou vypadnou, ani\u017e dojde ke ztr\xe1t\u011b 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\xe1suvn\xfd modul jerasure je nejobecn\u011bj\u0161\xed a nejp\u0159izp\u016fsobiv\u011bj\u0161\xed,\n je tak\xe9 v\xfdchoz\xed pro Ceph fondy k\xf3dovan\xe9 maz\xe1n\xedm.</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>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.</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\xe1suvn\xfd 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>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.</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>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.</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\xe1zev crush n\xe1doby slou\u017e\xedc\xed jako prvn\xed krok CRUSH pravidla.\n Nap\u0159\xedklad krok vz\xedt v\xfdchoz\xed.</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>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.</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\xedst\u011bn\xed na za\u0159\xedzen\xed ur\u010dit\xe9 t\u0159\xeddy\n      (nap\u0159., ssd nebo hdd), pomoc\xed n\xe1zvu crush t\u0159\xeddy za\u0159\xedzen\xed v  CRUSH map\u011b.</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\u017eku ze kter\xe9 na\u010d\xedtat z\xe1suvn\xfd modul mazac\xedho k\xf3du.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Umo\u017enit v\u0161echny 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\u017enit pouze operace kter\xe9 neuprav\xed 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\u017e\u0148uje operace \u010dten\xed \u010di z\xe1pisu, ale umo\u017e\u0148uje ostatn\xed</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\u017e\u0148uje \u010dten\xed, z\xe1pis nebo jinou operaci kter\xe1 upravuje atributy        souboru nebo obsah slo\u017eky</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>Neumo\u017enit v\u016fbec \u017e\xe1dn\xfd p\u0159\xedstup</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\xedzk\xe1</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>Vysok\xe1</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Uplynul\xfdch 5 minut</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Uplynul\xfdch 15 minut</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Uplynul\xfdch 30 minut</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>Uplynul\xe1 1 hodina (v\xfdchoz\xed)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Uplynul\xe9 3 hodiny</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Uplynul\xfdch 6 hodin</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Uplynul\xfdch 12 hodin</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Uplynul\xfdch 24 hodin</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>V\u010dera</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\u010derej\u0161ek</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>Uplynul\xe9 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\xfd t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>P\u0159edchoz\xed t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>Tento t\xfdden</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>Tento t\xfdden doposud</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>Uplynul\xfdch 7 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>P\u0159edchoz\xed m\u011bs\xedc</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Tento m\u011bs\xedc</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>Tento m\u011bs\xedc doposud</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>Uplynul\xfdch 30 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Uplynul\xfdch 90 dn\u016f</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Uplynul\xfdch 6 m\u011bs\xedc\u016f</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>Uplynul\xfd 1 rok</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>P\u0159edchoz\xed 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\xe9 2 roky</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Uplynul\xfdch 5 let</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="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Nevybr\xe1ny \u017e\xe1dn\xe9 polo\u017eky.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>Aby polo\u017eku bylo mo\u017en\xe9 znovu vybrat, je t\u0159eba nejprve zru\u0161it jej\xed v\xfdb\u011br</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Dosa\u017een limit v\xfdb\u011bru</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>Filtrovat \u0161t\xedtky</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>P\u0159idat 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 \u017e\xe1dn\xe9 polo\u017eky.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Kvalita slu\u017eby</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>Po\u017eadovan\xfd limit vst./v\xfdstup. bajt\u016f za sekundu.</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>Po\u017eadovan\xfd limit vst./v\xfdstup. operac\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>Read BPS Limit</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\u017eadovan\xfd limit \u010dten\xed bajt\u016f za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>Read IOPS Limit</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\u017eadovan\xfd limit operac\xed \u010dten\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>Write BPS Limit</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\u017eadovan\xfd limit z\xe1pisu bajt\u016f za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>Write IOPS Limit</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\u017eadovan\xfd limit operac\xed \u010dten\xed za sekundu.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS d\xe1vka</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>The desired burst limit of IO bytes.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky vst./v\xfdstup. operac\xed.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Read BPS Burst</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky bajt\u016f \u010dten\xed.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Read IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky \u010dten\xed bajt\u016f.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Write BPS Burst</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>Po\u017eadovan\xfd limit bajt\u016f d\xe1vky z\xe1pisu.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Write IOPS Burst</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>Po\u017eadovan\xfd limit d\xe1vky operace z\xe1pisu.</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\u0159ilo 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\xe1v\xe1 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\xe1no</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>nezn\xe1m\xfd \xfakol</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>Vytv\xe1\u0159\xed se</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>vytvo\u0159it</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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aktualizov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>Ma\u017ee se</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="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Smaz\xe1no</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\xfd stav \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\n        </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\u017eim zrcadlen\xed pro fond \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\u011bj\u0161ek zrcadlen\xed pro fond \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\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\xe1zev u\u017e je pou\u017e\xedv\xe1n \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\xe1zev u\u017e je pou\u017e\xedv\xe1n \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\xe1zev u\u017e je pou\u017e\xedv\xe1n \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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\xe9 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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Naklonov\xe1no</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\u0159eba, aby zachycen\xfd stav \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> byl chr\xe1n\u011bn\xfd.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>Kop\xedruje se</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>zkop\xedrovat</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Zkop\xedrov\xe1no</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>Zplo\u0161t\u011bn\xed</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>zplo\u0161tit</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Zplo\u0161t\u011bno</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\xe1zev u\u017e je pou\u017e\xedv\xe1n 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\xed mo\u017en\xe9 zru\u0161it ochranu \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, proto\u017ee obsahuje pod\u0159\xedzen\xe9 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\xed mo\u017en\xe9 smazat, proto\u017ee je chr\xe1n\u011bn\xe9.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Bere se zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>vz\xedt zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Vzato zp\u011bt</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>P\u0159esouv\xe1 se</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>p\u0159esunout</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>P\u0159esunuto</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c do ko\u0161e\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Obraz se neda\u0159\xed naj\xedt.</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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Obnoveno</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c do \u201e\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u201c\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\xe1zev \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c u\u017e je pou\u017e\xedv\xe1n pro jin\xfd 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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201c\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u010cist\xed se</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>vy\u010distit</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Vy\u010di\u0161t\u011bno</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>v\u0161echny 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\xed nelze vypnout proto\u017ee obsahuje prot\u011bj\u0161ek.</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 \u201e\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u201c\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\xedho k\xf3du \u201e\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201c\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\xedl \u201e\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u201c\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>'},McSo:function(t,e,n){"use strict";function a(t){return null!==t&&"object"==typeof t}n.d(e,"a",function(){return a})},MdoF:function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"c",function(){return l}),n.d(e,"a",function(){return d});var a=n("CcnG"),r=n("lTVp"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),(t()(),a["\u0275eld"](3,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Close"]))],null,null)}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["role","alert"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](3,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"alert alert-"+n.type,n.classes),t(e,3,0,n.dismissible)},null)}function l(t){return a["\u0275vid"](2,[(t()(),a["\u0275and"](16777216,null,null,1,null,u)),a["\u0275did"](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 c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"alert",[],null,null,null,l,o)),a["\u0275did"](1,114688,null,0,r.a,[r.b,a.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}var d=a["\u0275ccf"]("alert,bs-alert",r.a,c,{type:"type",dismissible:"dismissible",dismissOnTimeout:"dismissOnTimeout",isOpen:"isOpen"},{onClose:"onClose",onClosed:"onClosed"},["*"])},Mfce:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");n("czA5"),e.DataTableRowWrapperComponent=function(){function t(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new i.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()}return Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())},t.prototype.onContextmenu=function(t){this.rowContextmenu.emit({event:t,row:this.row})},t.prototype.getGroupHeaderStyle=function(){var t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t},a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"detailRowHeight",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-row-wrapper",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div \n      *ngIf="groupHeader && groupHeader.template"\n      class="datatable-group-header"\n      [ngStyle]="getGroupHeaderStyle()">\n      <ng-template\n        *ngIf="groupHeader && groupHeader.template"\n        [ngTemplateOutlet]="groupHeader.template"\n        [ngTemplateOutletContext]="groupContext">\n      </ng-template>\n    </div>\n    <ng-content \n      *ngIf="(groupHeader && groupHeader.template && expanded) || \n             (!groupHeader || !groupHeader.template)">\n    </ng-content>\n    <div\n      *ngIf="rowDetail && rowDetail.template && expanded"\n      [style.height.px]="detailRowHeight"\n      class="datatable-row-detail">\n      <ng-template\n        *ngIf="rowDetail && rowDetail.template"\n        [ngTemplateOutlet]="rowDetail.template"\n        [ngTemplateOutletContext]="rowContext">\n      </ng-template>\n    </div>\n  ',host:{class:"datatable-row-wrapper"}})],t)}()},MgB7:function(t,e,n){"use strict";function a(t,e,n){var a,r,i;n=n||{};var o=null,s=0;function u(){s=!1===n.leading?0:+new Date,o=null,i=t.apply(a,r)}return function(){var l=+new Date;s||!1!==n.leading||(s=l);var c=e-(l-s);return a=this,r=arguments,c<=0?(clearTimeout(o),o=null,s=l,i=t.apply(a,r)):o||!1===n.trailing||(o=setTimeout(u,c)),i}}Object.defineProperty(e,"__esModule",{value:!0}),e.throttle=a,e.throttleable=function(t,e){return function(n,r,i){return{configurable:!0,enumerable:i.enumerable,get:function(){return Object.defineProperty(this,r,{configurable:!0,enumerable:i.enumerable,value:a(i.value,t,e)}),this[r]}}}}},MkmW:function(t,e,n){"use strict";e.hostReportError=function(t){setTimeout(function(){throw t})}},MuvH:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.getConfigData=function(){return this.http.get("api/cluster_conf/")},t.prototype.get=function(t){return this.http.get("api/cluster_conf/"+t)},t.prototype.filter=function(t){return this.http.get("api/cluster_conf/filter?names="+t.join(","))},t.prototype.create=function(t){return this.http.post("api/cluster_conf/",t)},t.prototype.delete=function(t,e){return this.http.delete("api/cluster_conf/"+t+"?section="+e)},t.prototype.bulkCreate=function(t){return this.http.put("api/cluster_conf/",t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},MwfX:function(t,e,n){"use strict";n.d(e,"a",function(){return d}),n.d(e,"b",function(){return f});var a=n("mrSG"),r=n("zo3G"),i=n("26FU"),o=n("6blF"),s=n("mZXl"),u=n("dC0D"),l=n("67Y/"),c=n("ad02"),d=function(t){function e(e,n,a){var i=t.call(this,e)||this;return n.pipe(Object(s.b)(r.a)).pipe(Object(u.a)(function(t,e){return e?a(t,e):t},e)).subscribe(function(t){return i.next(t)}),i}return Object(a.__extends)(e,t),e}(i.a),f=function(t){function e(e,n,a){var r=t.call(this)||this;return r._dispatcher=e,r._reducer=n,r.source=a,r}return Object(a.__extends)(e,t),e.prototype.select=function(t){return this.source.pipe(Object(l.a)(t)).pipe(Object(c.a)())},e.prototype.lift=function(t){var n=new e(this._dispatcher,this._reducer,this);return n.operator=t,n},e.prototype.dispatch=function(t){this._dispatcher.next(t)},e.prototype.next=function(t){this._dispatcher.next(t)},e.prototype.error=function(t){this._dispatcher.error(t)},e.prototype.complete=function(){},e}(o.a)},Mxhz:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/user")},t.prototype.delete=function(t){return this.http.delete("api/user/"+t)},t.prototype.get=function(t){return this.http.get("api/user/"+t)},t.prototype.create=function(t){return this.http.post("api/user",t)},t.prototype.update=function(t){return this.http.put("api/user/"+t.username,t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(r.c))},token:t,providedIn:i.a}),t}()},NDi4:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("CcnG"),r=function(){return function(){this.title="Error",this.backAction=new a.EventEmitter}}()},NEZu:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(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}return t.prototype.customTooltips=function(t){var e=this;if(0!==t.opacity){if(this.tooltipEl.classList.remove("above","below","no-transform"),this.tooltipEl.classList.add(t.yAlign?t.yAlign:"no-transform"),t.body){var n=t.title||[],a=t.body.map(function(t){return t.lines}),r="<thead>";n.forEach(function(t){r+="<tr><th>"+e.getTitle(t)+"</th></tr>"}),r+="</thead><tbody>",a.forEach(function(n,a){var i=t.labelColors[a],o="background:"+(e.customColors.backgroundColor||i.backgroundColor);o+="; border-color:"+(e.customColors.borderColor||i.borderColor),r+='<tr><td nowrap><span class="chartjs-tooltip-key" style="'+(o+="; border-width: 2px")+'"></span>'+e.getBody(n)+"</td></tr>"}),r+="</tbody>",this.tooltipEl.querySelector("table").innerHTML=r}var i=this.chartEl.offsetTop,o=this.chartEl.offsetLeft;if(this.checkOffset){var s=t.width/2;this.tooltipEl.classList.remove("transform-left"),this.tooltipEl.classList.remove("transform-right"),t.caretX-s<0?this.tooltipEl.classList.add("transform-left"):t.caretX+s>this.chartEl.width&&this.tooltipEl.classList.add("transform-right")}this.tooltipEl.style.left=this.getStyleLeft(t,o),this.tooltipEl.style.top=this.getStyleTop(t,i),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"}else this.tooltipEl.style.opacity=0},t.prototype.getBody=function(t){return t},t.prototype.getTitle=function(t){return t},t}()},NJnL:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("CcnG"),r=new(function(){function t(){}return t.prototype.position=function(t,e){var n;void 0===e&&(e=!0);var a={width:0,height:0,top:0,bottom:0,left:0,right:0};if("fixed"===this.getStyle(t,"position")){var r=t.getBoundingClientRect();n={width:r.width,height:r.height,top:r.top,bottom:r.bottom,left:r.left,right:r.right}}else{var i=this.offsetParent(t);n=this.offset(t,!1),i!==document.documentElement&&(a=this.offset(i,!1)),a.top+=i.clientTop,a.left+=i.clientLeft}return n.top-=a.top,n.bottom-=a.top,n.left-=a.left,n.right-=a.left,e&&(n.top=Math.round(n.top),n.bottom=Math.round(n.bottom),n.left=Math.round(n.left),n.right=Math.round(n.right)),n},t.prototype.offset=function(t,e){void 0===e&&(e=!0);var n=t.getBoundingClientRect(),a=window.pageYOffset-document.documentElement.clientTop,r=window.pageXOffset-document.documentElement.clientLeft,i={height:n.height||t.offsetHeight,width:n.width||t.offsetWidth,top:n.top+a,bottom:n.bottom+a,left:n.left+r,right:n.right+r};return e&&(i.height=Math.round(i.height),i.width=Math.round(i.width),i.top=Math.round(i.top),i.bottom=Math.round(i.bottom),i.left=Math.round(i.left),i.right=Math.round(i.right)),i},t.prototype.positionElements=function(t,e,n,a){var r=a?this.offset(t,!1):this.position(t,!1),i=this.getAllStyles(e),o=e.getBoundingClientRect(),s=n.split(" ")[0]||"top",u=n.split(" ")[1]||"center",l={height:o.height||e.offsetHeight,width:o.width||e.offsetWidth,top:0,bottom:o.height||e.offsetHeight,left:0,right:o.width||e.offsetWidth},c={top:r.top,center:r.top+r.height/2-l.height/2,bottom:r.top+r.height},d={left:r.left,center:r.left+r.width/2-l.width/2,right:r.left+r.width};if("auto"===s){var f=this.autoPosition(l,r,e,u);f||(f=this.autoPosition(l,r,e)),f&&(s=f),e.classList.add(s)}switch(s){case"top":l.top=r.top-(l.height+parseFloat(i.marginBottom)),l.bottom+=r.top-l.height,l.left=d[u],l.right+=d[u];break;case"bottom":l.top=c[s],l.bottom+=c[s],l.left=d[u],l.right+=d[u];break;case"left":l.top=c[u],l.bottom+=c[u],l.left=r.left-(l.width+parseFloat(i.marginRight)),l.right+=r.left-l.width;break;case"right":l.top=c[u],l.bottom+=c[u],l.left=d[s],l.right+=d[s]}return l.top=Math.round(l.top),l.bottom=Math.round(l.bottom),l.left=Math.round(l.left),l.right=Math.round(l.right),l},t.prototype.autoPosition=function(t,e,n,a){return(!a||"right"===a)&&t.left+e.left-t.width<0?"right":(!a||"top"===a)&&t.bottom+e.bottom+t.height>window.innerHeight?"top":(!a||"bottom"===a)&&t.top+e.top-t.height<0?"bottom":(!a||"left"===a)&&t.right+e.right+t.width>window.innerWidth?"left":null},t.prototype.getAllStyles=function(t){return window.getComputedStyle(t)},t.prototype.getStyle=function(t,e){return this.getAllStyles(t)[e]},t.prototype.isStaticPositioned=function(t){return"static"===(this.getStyle(t,"position")||"static")},t.prototype.offsetParent=function(t){for(var e=t.offsetParent||document.documentElement;e&&e!==document.documentElement&&this.isStaticPositioned(e);)e=e.offsetParent;return e||document.documentElement},t}()),i=function(){function t(){}return t.prototype.position=function(t){var e=t.element,n=t.attachment,a=t.appendToBody;!function(t,e,a,i){var o=r.positionElements(t,e,n,i);e.style.top=o.top+"px",e.style.left=o.left+"px"}(o(t.target),o(e),0,a)},t}();function o(t){return"string"==typeof t?document.querySelector(t):t instanceof a.ElementRef?t.nativeElement:t}},NUGo:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("ZYCi"),o=n("xtZt"),s=n("lqqz");n("S7zO"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return g});var u=a["\u0275crt"]({encapsulation:0,styles:[[".dropdown-menu[_ngcontent-%COMP%] > .disabled[_ngcontent-%COMP%] > a[_ngcontent-%COMP%]{pointer-events:auto;cursor:default!important}"]],data:{}});function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"button",[["class","btn btn-sm btn-primary"],["type","button"]],null,[[null,"click"]],function(t,e,n){var r=!0,i=t.component;return"click"===e&&(r=!1!==a["\u0275nov"](t,4).onClick()&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.ngIf)&&r),r},null,null)),a["\u0275did"](2,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](3,{disabled:0}),a["\u0275did"](4,16384,null,0,i.m,[i.l,i.a,[8,null],a.Renderer2,a.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""]))],function(t,e){var n=e.component,a=t(e,3,0,n.disableSelectionAction(e.context.ngIf));t(e,2,0,"btn btn-sm btn-primary",a),t(e,4,0,n.useRouterLink(e.context.ngIf))},function(t,e){t(e,5,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.ngIf.icon,"")),t(e,7,0,e.context.ngIf.name)})}function c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.component.onlyDropDown)})}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","sr-only"]],null,null,null,null,null))],null,null)}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"button",[["class","btn btn-sm btn-primary dropdown-toggle dropdown-toggle-split"],["dropdownToggle",""],["type","button"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,1).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,1).onEsc()&&r),r},null,null)),a["\u0275did"](1,147456,null,0,o.g,[o.f,a.ElementRef,o.c],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,c)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](4,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](6,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.onlyDropDown),t(e,6,0,!n.onlyDropDown)},function(t,e){t(e,0,0,!0,a["\u0275nov"](e,1).isDisabled,a["\u0275nov"](e,1).isOpen)})}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,7,"li",[["data-toggle","tooltip"],["role","menuitem"]],[[8,"title",0]],null,null,null,null)),a["\u0275did"](2,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](3,{disabled:0}),(t()(),a["\u0275eld"](4,0,null,null,4,"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["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),"click"===e&&(r=!1!==i.useClickAction(t.context.$implicit)&&r),r},null,null)),a["\u0275did"](5,671744,null,0,i.o,[i.l,i.a,r.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,["",""]))],function(t,e){var n=e.component,r=a["\u0275inlineInterpolate"](1,"",n.toClassName(e.context.$implicit.name),""),i=t(e,3,0,n.disableSelectionAction(e.context.$implicit));t(e,2,0,r,i),t(e,5,0,n.useRouterLink(e.context.$implicit))},function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"",e.component.useDisableDesc(e.context.$implicit),"")),t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href),t(e,6,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.$implicit.icon,"")),t(e,8,0,e.context.$implicit.name)})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](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 g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,8,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,o.f,o.f,[]),a["\u0275did"](2,212992,null,0,o.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,s.a,o.a,o.f],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,l)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](8,16384,null,0,o.d,[o.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["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4)})}},Nehr:function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},Nia1:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("3/HP")),a(n("FLvf")),a(n("2V7f")),a(n("fktO")),a(n("QHrR")),a(n("i3PA"))},O5R2:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("VnD/");a.a.prototype.filter=function(t,e){return Object(r.a)(t,e)(this)}},OAkW:function(t,e,n){"use strict";e.subscribeToArray=function(t){return function(e){for(var n=0,a=t.length;n<a&&!e.closed;n++)e.next(t[n]);e.closed||e.complete()}}},ODdm:function(t,e,n){"use strict";t.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},OIYi:function(t,e,n){!function(t){"use strict";n("wd/R").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")}})}()},OLbh:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("gIcY"),r=function(){function t(t){this.modalRef=t,this.boundCancel=this.cancel.bind(this),this.confirmationForm=new a.k({})}return t.prototype.ngOnInit=function(){this.bodyContext=this.bodyContext||{},this.bodyContext.$implicit=this.bodyData},t.prototype.cancel=function(){this.modalRef.hide(),this.onCancel&&this.onCancel()},t.prototype.stopLoadingSpinner=function(){this.confirmationForm.setErrors({cdSubmitButton:!0})},t}()},"OWV/":function(t,e){t.exports='<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\xe7\xe3o</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</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\xe7\xe3o</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\xf3dulos 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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertas</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\xe1rios</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>Recuperando dados\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> de\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>"/>. Aguarde...\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>Exibindo dados armazenados em cache anteriormente\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  para \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>N\xe3o foi poss\xedvel carregar os dados\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> de\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  Verifique a sa\xfade do cluster.\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="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>Consulte a\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre como\n  configurar e habilitar a funcionalidade de monitoramento.\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>O Painel de Controle do Grafana n\xe3o existe. Consulte a\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre como\n  adicionar pain\xe9is de controle ao Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Seletor de Hor\xe1rio do Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>Redefinir Configura\xe7\xf5es</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="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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Configura\xe7\xf5es</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\xe3o costuma ser necess\xe1rio mudar o valor padr\xe3o destes par\xe2metros.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Configura\xe7\xf5es Avan\xe7adas</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo \xe9 obrigat\xf3rio.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN tem padr\xe3o incorreto.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Um IQN tem a seguinte nota\xe7\xe3o \'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\xe7\xf5es</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\xe7\xf5es avan\xe7adas 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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Pelo menos \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways s\xe3o necess\xe1rios.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Esta imagem tem configura\xe7\xf5es modificadas.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Pelo menos 1 imagem \xe9 necess\xe1ria.</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\xe7\xe3o ACL</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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usu\xe1rio</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\xe1rio 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="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>Usu\xe1rio M\xfatuo</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>Senha M\xfatua</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\xe3o 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Enviar</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>Deseja realmente \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> o(a) \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> selecionado(a)?\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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autentica\xe7\xe3o de Descoberta</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\xe1rio devem ter entre 8 e 64 caracteres e\n              apenas podem conter letras, \'.\', \'@\', \'-\', \'_\' ou \':\'.</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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento de Destinos iSCSI.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informa\xe7\xf5es dispon\xedveis:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>Destinos iSCSI n\xe3o dispon\xedveis</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' n\xe3o s\xe3o permitidos.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- N\xe3o h\xe1 pools de RBD dispon\xedveis --</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="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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- N\xe3o h\xe1 pools de dados dispon\xedveis --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>ex. 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Voc\xea precisa aumentar o tamanho.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avan\xe7ado...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avan\xe7ado</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>Distribui\xe7\xe3o</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="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidade de distribui\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selecionar unidade de distribui\xe7\xe3o --</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 \xe9 obrigat\xf3rio porque o total de distribui\xe7\xf5es 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\xe7\xe3o \xe9 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\xe7\xf5es</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 \xe9 obrigat\xf3rio porque a unidade de distribui\xe7\xe3o 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\xe7\xf5es deve ser maior do que 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Desempenho Geral</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="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descri\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descri\xe7\xe3o extensa</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Padr\xe3o</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Padr\xe3o do daemon</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servi\xe7os</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="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>O valor inserido \xe9 muito alto! Ele n\xe3o pode ser maior do que \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>O valor inserido \xe9 muito baixo! Ele n\xe3o deve ser menor do que \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de Hosts</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="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Carregando configura\xe7\xe3o...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar a configura\xe7\xe3o.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>Editar m\xf3dulo 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\xe3o \xe9 um UUID v\xe1lido. 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\xe7o IP v\xe1lido.</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>O valor inserido \xe9 muito alto! Ele deve ser menor ou igual a \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>O valor inserido \xe9 muito baixo! Ele deve ser maior ou igual a \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\xfamero.</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\xfamero 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>\xe9poca 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\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>mon obrigat\xf3rio</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\xe3o est\xe1 no Quorum</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="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridade de Recupera\xe7\xe3o 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 \xe9 obrigat\xf3rio!</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>O valor inserido \xe9 muito alto! Ele n\xe3o pode ser maior do que \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>O valor inserido \xe9 muito baixo! Ele n\xe3o deve ser menor do que \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Reponderar OSD</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>Remo\xe7\xe3o de OSDs \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Voc\xea est\xe1 prestes a aplicar uma \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>remo\xe7\xe3o ao\n            OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> ser\xe1 marcado como\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>"/> se voc\xea continuar.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>N\xe3o \xe9 seguro destruir o OSD!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> ser\xe1\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>"/> se voc\xea continuar.\n        </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="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Sa\xfade</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>Estat\xedsticas</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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento do NFS Ganesha.\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\xe7os</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>Campo obrigat\xf3rio</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\xedrgula</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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Exporta\xe7\xe3o do NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- N\xe3o h\xe1 clusters dispon\xedveis --</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="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\xe1rio do Gateway de Objetos</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- N\xe3o h\xe1 usu\xe1rios dispon\xedveis --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- Selecionar usu\xe1rio 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\xe1rio do CephFS</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- N\xe3o h\xe1 clientes dispon\xedveis --</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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>R\xf3tulo de Seguran\xe7a</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Habilitar r\xf3tulo de seguran\xe7a</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\xe7ar 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\xf3rio ser\xe1 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\xe1 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>Acesso alternativo \xe0s montagens do \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>"/> (n\xe3o deve ter / \xe0 esquerda).\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\xe3o podem montar subdiret\xf3rios (ou seja, se Tag = foo, o cliente n\xe3o poder\xe1 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\xe7\xf5es diferentes de Tag, o mesmo Caminho pode ser exportado v\xe1rias 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>A posi\xe7\xe3o que esta exporta\xe7\xe3o de \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>"/> ocupa\n                no \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>"/> (deve ser exclusiva).\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\xe7\xf5es diferentes de Pseudo, o mesmo Caminho pode ser exportado v\xe1rias vezes.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- N\xe3o h\xe1 tipos de acesso dispon\xedveis --</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="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- N\xe3o h\xe1 squashes dispon\xedveis --</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\xe1rio ser\xe1 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="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\xe9ricos, tra\xe7os 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\xf3digo de elimina\xe7\xe3o escolhido j\xe1 est\xe1 em uso.</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\xe7\xe3o (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\xednio 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\xe9cnica</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\xf3rio</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="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fechar</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\xe1 est\xe1 em uso.</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="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 \xe9 necess\xe1rio!</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\xe3o pode processar tantos PGs. Recalcule a quantidade de PG necess\xe1ria.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Apenas \xe9 poss\xedvel aumentar o n\xfamero de PGs de um pool existente.\n                No momento, seu pool tem \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ajuda no c\xe1lculo</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>As configura\xe7\xf5es de PGs atuais foram calculadas para voc\xea. Verifique\n                    se os valores atendem \xe0s suas necessidades antes de enviar.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selecionar regra de crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Imposs\xedvel usar a regra no cluster atual porque ela tem\n                poucos OSDs para atender ao OSD m\xednimo necess\xe1rio para esta regra.</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>M\xednimo: \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>M\xe1ximo: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>O tamanho especificado est\xe1 fora da faixa. Um valor de\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> a \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \xe9 v\xe1lido.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil do c\xf3digo de elimina\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- N\xe3o h\xe1 perfis de c\xf3digo de elimina\xe7\xe3o dispon\xedveis --</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\xf3digo de elimina\xe7\xe3o --</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\xe7\xf5es 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="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compacta\xe7\xe3o</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\xe3o h\xe1 algoritmos de compacta\xe7\xe3o de elimina\xe7\xe3o dispon\xedveis --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tamanho m\xednimo 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="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tamanho m\xe1ximo 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\xednimo 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\xe7\xe3o</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Imposs\xedvel criar um pool de RBD com \'/\' no nome.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Altere o nome ou remova o \'rbd\' da lista de aplicativos.</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="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>Consulte a \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documenta\xe7\xe3o\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    sobre como configurar e habilitar a funcionalidade de gerenciamento do Gateway de Objetos.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar os 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\xe3o \xe9 v\xe1lido.</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\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propriet\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- Selecionar usu\xe1rio --</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="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\xe3o</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- Selecionar permiss\xe3o --</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="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>Nome de usu\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- Selecionar nome de usu\xe1rio --</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="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>Subusu\xe1rio</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\xe1rio escolhido j\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>leitura, grava\xe7\xe3o</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\xe1rio...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>N\xe3o foi poss\xedvel carregar os dados do usu\xe1rio.</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\xe1rio escolhido j\xe1 est\xe1 em uso.</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\xe7o de e-mail</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\xe3o \xe9 um endere\xe7o de e-mail v\xe1lido.</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\xe7o de e-mail escolhido j\xe1 est\xe1 em uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>M\xe1x. de compartimentos</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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspenso</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Subusu\xe1rios</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>N\xe3o h\xe1 subusu\xe1rios.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chaves</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\xe3o h\xe1 chaves.</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="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>Swift</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="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>N\xe3o h\xe1 recursos.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cota do usu\xe1rio</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="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\xe1x.</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\xe1x. de objetos</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="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\xe1rio \xe9 obrigat\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>Senha \xe9 obrigat\xf3ria</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="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descri\xe7\xe3o...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>Permiss\xf5es</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\xe1rio n\xe3o 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>Retorne \xe0 \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\xe1gina de Login\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Seu logout ser\xe1 efetuado do Provedor de Identidade quando voc\xea repetir o login.\n        </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\xe7\xe3o de senha n\xe3o corresponde \xe0 senha.</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\xe1lido.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Fun\xe7\xf5es</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\xea est\xe1 prestes a remover as permiss\xf5es de "leitura/atualiza\xe7\xe3o de usu\xe1rio" do seu pr\xf3prio usu\xe1rio.</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\xea continuar, n\xe3o poder\xe1 mais adicionar ou remover fun\xe7\xf5es de nenhum usu\xe1rio.</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="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\xea n\xe3o tem permiss\xe3o para ver o que est\xe1 procurando.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>N\xe3o foi poss\xedvel localizar o que voc\xea est\xe1 procurando</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Remover tudo</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifica\xe7\xf5es Recentes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>N\xe3o h\xe1 tarefas em segundo plano.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tarefas em Segundo Plano</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\xe7\xe3o</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\xe7\xf5es 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\xe1rios</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>Usu\xe1rio 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>Efetuar login como\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Efetuar logout</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalhes de Desempenho</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 \xedndice</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\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Vers\xe3o</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Vers\xe3o master</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hor\xe1rio da modifica\xe7\xe3o</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tamanho m\xe1ximo</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\xe1ximo de objetos</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {N\xe3o} 1 {Sim} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>M\xe1ximo de compartimentos</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Contadores de desempenho n\xe3o dispon\xedveis</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagem</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="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configura\xe7\xe3o 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\xe7\xe3o local. No lugar dele, o valor de configura\xe7\xe3o pai ser\xe1 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\xednimo \xe9 0</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\xe3o dispon\xedveis</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="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>Histograma n\xe3o dispon\xedvel: \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\xe7\xf5es</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="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\xedn.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>M\xe1x.</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\xedvel</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\xe7\xe3o (edit\xe1vel)</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\xe9m</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\xe7\xe3o do Cliente</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>Throughput de Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Remo\xe7\xe3o</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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</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>"/> Consulte os \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Registros\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> para obter mais detalhes.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Para mover \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> para o lixo,\n          clique em \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mover Imagem\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Se preferir, escolha uma data de vencimento.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>Vencimento da prote\xe7\xe3o em</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>N\xc3O 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\xe7\xe3o j\xe1 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="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Vis\xe3o 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="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>Dispon\xedvel apenas para imagens RBD com \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>diff r\xe1pido\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> habilitado\n        </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="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\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Total de distribui\xe7\xf5es</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\xe2neos</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Esta configura\xe7\xe3o substitui o valor 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 \xe9 o valor global. Nenhum valor para esta op\xe7\xe3o foi definido para esta imagem.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Instant\xe2neo do RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renomear} other {Criar} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Instant\xe2neo\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>N\xc3O PROTEGIDO</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Voc\xea est\xe1 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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Para purgar, selecione uma ou Todas as imagens e clique em</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tudo</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\xe9</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>Esta imagem est\xe1 protegida at\xe9 \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="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\xa0\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\xa0\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>Para editar o modo de espelho do pool\xa0\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>"/>, selecione o novo modo na lista e clique em\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Atualizar\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  peer de espelho do pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> os atributos\n          de peer de espelho do 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>"/> e clique em \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Enviar\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\xe3o \xe9 v\xe1lido.</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\xe3o \xe9 v\xe1lido.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Endere\xe7os do Monitor</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>Endere\xe7os delimitados por v\xedrgula...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>O endere\xe7o de monitoria n\xe3o \xe9 v\xe1lido.</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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalhes das Camadas do Cache</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>Posi\xe7\xf5es</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clientes: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xe7\xe3o 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\xe3o h\xe1 portais dispon\xedveis.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>N\xe3o h\xe1 imagens dispon\xedveis.</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\xe3o h\xe1 imagens dispon\xedveis. 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\xe3o h\xe1 iniciadores dispon\xedveis. Adicione um iniciador ao destino.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nome de host</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\xe7\xe3o</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\xe7\xe3o</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\xe2ncia</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Desabilitado</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modo de Edi\xe7\xe3o</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\xba Local</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N\xba 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</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\xe7\xe3o 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\xe1rio (requer bloqueio exclusivo)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Diff r\xe1pido (requer mapa de objetos)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Nivelar</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Criar</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>Cancelar prote\xe7\xe3o</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="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Fazer Rollback</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback de instant\xe2neo do RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instant\xe2neo do RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Exclu\xeddo \xe0(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\xe3o</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="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Posi\xe7\xe3o</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de standby</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\xc9 poss\xedvel atualizar o valor em temo de execu\xe7\xe3o.</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\xe3o extraem este valor do\n      banco de dados de configura\xe7\xe3o do monitor. A configura\xe7\xe3o desta op\xe7\xe3o n\xe3o \xe9 permitida por meio de \'ceph config\n      set ...\'. Essa op\xe7\xe3o 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\xe7\xe3o entra em vigor apenas durante a inicializa\xe7\xe3o 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\xe7\xe3o afeta apenas a cria\xe7\xe3o 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\xe7\xe3o afeta apenas a cria\xe7\xe3o 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>Op\xe7\xe3o de configura\xe7\xe3o \n          <x id="INTERPOLATION" equiv-text="{{name}}"/> atualizada\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>Servi\xe7o</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\xe1vel</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>Op\xe7\xf5es atualizadas para o m\xf3dulo &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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\xe7o P\xfablico</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>Sess\xf5es Abertas</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>N\xe3o 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\xe1 foram marcados como sa\xedda n\xe3o ser\xe3o 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\xe3o Sa\xedda</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\xe3o ser\xe3o automaticamente marcados como sa\xedda ap\xf3s o intervalo configurado</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>N\xe3o 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\xe3o podem ser iniciados</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>N\xe3o 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\xf3rios de falha de OSD est\xe3o sendo ignorados, portanto, os monitores n\xe3o marcar\xe3o 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\xe7\xf5es</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>Sem Remo\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>Remo\xe7\xe3o desabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>Sem Remo\xe7\xe3o Profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>Remo\xe7\xe3o 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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Sem Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>Recupera\xe7\xe3o de PGs suspensa</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>Classifica\xe7\xe3o Bit a Bit</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>Usar classifica\xe7\xe3o 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\xf5es de Recupera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>Exclus\xf5es realizadas durante a recupera\xe7\xe3o, e n\xe3o o emparelhamento</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>Limite F\xedsico 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\xedsico 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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Remo\xe7\xe3o Profunda</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marcar como Sa\xedda</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>sa\xedda</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>entrada</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>inativo</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</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\xeddo</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Bytes de grava\xe7\xe3o</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\xe7\xe3o</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>Marcar OSD como \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>Marcar como \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>M\xe1x. de Provisionamentos</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>M\xe1x. Recupera\xe7\xe3o Ativo</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>M\xe1x. Recupera\xe7\xe3o Inicializa\xe7\xe3o \xdanica</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Suspens\xe3o de Recupera\xe7\xe3o</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Prioridade de velocidade de recupera\xe7\xe3o de OSD &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot atualizada;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> foi inicializado no seguinte OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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\xe7o NFS Ganesha n\xe3o est\xe1 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\xe1rio 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\xe7\xe3o global)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>herdado da configura\xe7\xe3o 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\xe1rio ser\xe1 executado --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>N\xe3o h\xe1 daemons dispon\xedveis.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Exportar</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\xedn. Expuls\xe3o</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Tempo M\xedn. Descarregamento</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>M\xe1x. de Bytes de Destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>M\xe1x. 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\xe9 quatro defini\xe7\xf5es 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\xe1ximo 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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de c\xf3digo de elimina\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tamanho da R\xe9plica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\xdaltima Altera\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil Codificado para Elimina\xe7\xe3o</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de grava\xe7\xe3o</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Compartimento do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; atualizado\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>Compartimento do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; criado\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimentos</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>Usu\xe1rio do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot; atualizado\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>Usu\xe1rio do Gateway de Objetos &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot; criado\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>usu\xe1rio</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usu\xe1rios</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' criada\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>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' atualizada\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>Fun\xe7\xe3o 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>Fun\xe7\xe3o \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' exclu\xedda\n        </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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; criado\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Atualizar usu\xe1rio</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\xea foi automaticamente desconectado porque suas fun\xe7\xf5es 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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; atualizado\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>Usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; exclu\xeddo\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>Falha ao excluir o usu\xe1rio &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>No momento, voc\xea est\xe1 conectado como &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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 \xe9 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\xe7\xe3o de cada objeto e armazene-os em diferentes OSDs.\n      O n\xfamero de pacotes de codifica\xe7\xe3o \xe9 tamb\xe9m o n\xfamero 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 \xe9 o mais gen\xe9rico e flex\xedvel,\n          al\xe9m de ser o padr\xe3o para pools codificados para elimina\xe7\xe3o 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\xe9cnica mais flex\xedvel \xe9 reed_sol_van: ela \xe9 suficiente para definir k\n          e m. A t\xe9cnica cauchy_good pode ser mais r\xe1pida, mas voc\xea precisa escolher o tamanho do pacote\n          com cuidado. Todos os reed_sol_r6_op, liberation, blaum_roth e liber8tion s\xe3o equivalentes ao RAID6\n          no sentido de que s\xf3 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\xe7\xe3o ser\xe1 feita em pacotes de tamanho de bytes um de cada vez.\n          A escolha do tamanho do pacote certo \xe9 dif\xedcil.\n          A documenta\xe7\xe3o do jerasure cont\xe9m informa\xe7\xf5es completas sobre este t\xf3pico.</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\xe7\xe3o \xe9 armazenado em\n          v\xe1rios OSDs, a recupera\xe7\xe3o ap\xf3s 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\xe1 a leitura\n          dos outros onze para fazer o reparo.\n\n          O plug-in de c\xf3digo de elimina\xe7\xe3o 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\xe1\n          um pacote de paridade adicional para cada quatro OSDs. Quando um \xfanico OSD \xe9 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\xe7\xe3o 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\xeas s\xe3o 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\xe1 armazenado. Por exemplo, se isso for definido como rack, cada grupo de pacotes l ser\xe1\n          colocado em um rack diferente. Isso \xe9 usado para criar uma etapa da regra CRUSH, como a etapa de escolha do\n          rack. Se isso n\xe3o for definido, esse tipo de agrupamento n\xe3o ser\xe1 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 \xe9 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\xe1 Vandermonde, se cauchy for definido, ele ser\xe1 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\xfaltipla SHEC.\n          Ele permite ao ceph recuperar dados com mais efici\xeancia do que os c\xf3digos 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\xfamero de pacotes de paridade, em que cada um inclui cada pacote de dados em sua\n          faixa de c\xe1lculo. O n\xfamero \xe9 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\xe3o.</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\xe3o h\xe1 dois pacotes em um compartimento com o mesmo dom\xednio de\n      falha. Por exemplo, se o dom\xednio de falha for um host, n\xe3o armazene dois pacotes no mesmo\n      host. Isso \xe9 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\xedfica\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\xf3rio do qual o plug-in de c\xf3digo de elimina\xe7\xe3o \xe9 carregado.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Permite todas as opera\xe7\xf5es</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\xe7\xf5es que n\xe3o 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\xe3o permite opera\xe7\xf5es de leitura ou grava\xe7\xe3o, mas permite qualquer outra opera\xe7\xe3o</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\xe3o permite leitura, grava\xe7\xe3o ou qualquer opera\xe7\xe3o que modifica os atributos do arquivo ou o conte\xfado do diret\xf3rio</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>N\xe3o 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="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\xdaltimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\xdaltimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\xdaltimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\xdaltima 1 hora (Padr\xe3o)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\xdaltimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\xdaltimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\xdaltimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\xdaltimas 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\xe9 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>\xdaltimos 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\xe9 agora nesta semana</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\xdaltimos 7 dias</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>M\xeas anterior</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>Este m\xeas</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>At\xe9 agora neste m\xeas</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\xdaltimos 30 dias</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\xdaltimos 90 dias</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\xdaltimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\xdaltimo 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\xe9 agora neste ano</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\xdaltimos 2 anos</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\xdaltimos 5 anos</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informa\xe7\xf5es</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\xe7\xe3o 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\xe3o h\xe1 itens dispon\xedveis.</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\xe3o</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualidade do Servi\xe7o</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\xe7\xf5es 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\xe7\xf5es 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\xe7\xe3o</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\xe7\xe3o 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\xe7\xe3o</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\xe7\xf5es por segundo de grava\xe7\xe3o desejado.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>Intermit\xeancia 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\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>Intermit\xeancia 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\xe7\xf5es de E/S de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>Intermit\xeancia 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\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>Intermit\xeancia 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\xe7\xf5es de leitura de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>Intermit\xeancia de BPS de Grava\xe7\xe3o</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\xe7\xe3o de intermit\xeancia desejado.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>Intermit\xeancia de IOPS de Grava\xe7\xe3o</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\xe7\xf5es de grava\xe7\xe3o de intermit\xeancia 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>Falha ao \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Atualizado</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>excluir</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Exclu\xeddo</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>Instant\xe2neo do RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>modo de espelho para o 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>espelhar peer para o pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nome j\xe1 foi usado por \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>Nome j\xe1 foi usado por \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>Nome j\xe1 foi usado por \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> cont\xe9m instant\xe2neos.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</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>O instant\xe2neo de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> deve ser protegido.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Nivelado</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>Nome j\xe1 foi usado por \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>Imposs\xedvel cancelar a prote\xe7\xe3o de \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque h\xe1 imagens filho.\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>Imposs\xedvel excluir \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque est\xe1 protegido.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback feito</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>imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' para jogar no lixo\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>Imagem n\xe3o 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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</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>imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' para \'\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>Nome da imagem \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' j\xe1 est\xe1 em uso.\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>imagem \'\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purgado</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>imagens de \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\xedvel desabilitar espelhamento porque ele cont\xe9m um peer.</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>perfil de c\xf3digo de elimina\xe7\xe3o \'\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>destino \'\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>'},OXbD:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=a.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}a._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),t.exports=r.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:s,inXRange:s,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._model,r=this._chart.ctx,s=e.pointStyle,u=e.rotation,l=e.radius,c=e.x,d=e.y;e.skip||(void 0===t||n.x>=t.left&&1.01*t.right>=n.x&&n.y>=t.top&&1.01*t.bottom>=n.y)&&(r.strokeStyle=e.borderColor||o,r.lineWidth=i.valueOrDefault(e.borderWidth,a.global.elements.point.borderWidth),r.fillStyle=e.backgroundColor||o,i.canvas.drawPoint(r,s,l,c,d,u))}})},OZfm:function(t,e,n){"use strict";n.d(e,"c",function(){return u}),n.d(e,"d",function(){return l}),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var a=n("rpEJ"),r=n("lqqz"),i=n("NJnL"),o=function(){return function(){this.placement="top",this.triggers="click",this.outsideClick=!1}}(),s=function(){function t(t){Object.assign(this,t)}return Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(a.d)()},enumerable:!0,configurable:!0}),t}(),u=function(){function t(t,e,n,a,r){this.outsideClick=!1,this.containerClass="",this._isInited=!1,this._popover=r.createLoader(t,n,e).provide({provide:o,useValue:a}),Object.assign(this,a),this.onShown=this._popover.onShown,this.onHidden=this._popover.onHidden,"undefined"!=typeof window&&t.nativeElement.addEventListener("click",function(){try{t.nativeElement.focus()}catch(e){return}})}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._popover.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),t.prototype.show=function(){!this._popover.isShown&&this.popover&&(this._popover.attach(s).to(this.container).position({attachment:this.placement}).show({content:this.popover,context:this.popoverContext,placement:this.placement,title:this.popoverTitle,containerClass:this.containerClass}),this.isOpen=!0)},t.prototype.hide=function(){this.isOpen&&(this._popover.hide(),this.isOpen=!1)},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.ngOnInit=function(){var t=this;this._isInited||(this._isInited=!0,this._popover.listen({triggers:this.triggers,outsideClick:this.outsideClick,show:function(){return t.show()}}))},t.prototype.ngOnDestroy=function(){this._popover.dispose()},t}(),l=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[o,r.a,i.a]}},t}()},Oaa7:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},Ob0Z:function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function a(t,e,n,a){var r="";if(e)switch(n){case"s":r="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":r="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":r="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":r="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":r="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":r="%d \u0924\u093e\u0938";break;case"d":r="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":r="%d \u0926\u093f\u0935\u0938";break;case"M":r="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":r="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":r="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":r="%d \u0935\u0930\u094d\u0937\u0947"}else switch(n){case"s":r="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":r="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":r="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":r="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":r="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":r="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":r="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":r="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":r="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":r="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":r="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":r="%d \u0935\u0930\u094d\u0937\u093e\u0902"}return r.replace(/%d/i,t)}t.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",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(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924\u094d\u0930\u0940|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924\u094d\u0930\u0940"===e?t<4?t:t+12:"\u0938\u0915\u093e\u0933\u0940"===e?t:"\u0926\u0941\u092a\u093e\u0930\u0940"===e?t>=10?t:t+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924\u094d\u0930\u0940":t<10?"\u0938\u0915\u093e\u0933\u0940":t<17?"\u0926\u0941\u092a\u093e\u0930\u0940":t<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}})}(n("wd/R"))},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924\u093f"===e?t<4?t:t+12:"\u092c\u093f\u0939\u093e\u0928"===e?t:"\u0926\u093f\u0909\u0901\u0938\u094b"===e?t>=10?t:t+12:"\u0938\u093e\u0901\u091d"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"\u0930\u093e\u0924\u093f":t<12?"\u092c\u093f\u0939\u093e\u0928":t<16?"\u0926\u093f\u0909\u0901\u0938\u094b":t<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}})}(n("wd/R"))},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};t.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".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:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0448\u0430\u0431"===e?t<4?t:t+12:"\u0441\u0443\u0431\u04b3"===e?t:"\u0440\u04ef\u0437"===e?t>=11?t:t+12:"\u0431\u0435\u0433\u043e\u04b3"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0448\u0430\u0431":t<11?"\u0441\u0443\u0431\u04b3":t<16?"\u0440\u04ef\u0437":t<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},P6uZ:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("3fWJ"),r=n("VnD/"),i=n("t9fZ"),o=n("HJBe"),s=n("tNVB"),u=n("mChF");function l(t,e){var n=arguments.length>=2;return function(l){return l.pipe(t?Object(r.a)(function(e,n){return t(e,n,l)}):u.a,Object(i.a)(1),n?Object(o.a)(e):Object(s.a)(function(){return new a.a}))}}},P8lu:function(t,e,n){"use strict";n.d(e,"a",function(){return f});var a=n("mrSG"),r=n("t/Na"),i=n("LvDl"),o=n("VNr4"),s=n("F/XL"),u=n("psW0"),l=n("xTzq"),c=n("CcnG"),d=n("pL04"),f=function(){function t(t){this.http=t,this.url="api/rgw/user"}return t.prototype.list=function(){var t=this;return this.enumerate().pipe(Object(u.a)(function(e){return e.length>0?Object(o.a)(e.map(function(e){return t.get(e)})):Object(s.a)([])}))},t.prototype.enumerate=function(){return this.http.get(this.url)},t.prototype.enumerateEmail=function(){return this.http.get(this.url+"/get_emails")},t.prototype.get=function(t){return this.http.get(this.url+"/"+t)},t.prototype.getQuota=function(t){return this.http.get(this.url+"/"+t+"/quota")},t.prototype.create=function(t){var e=new r.h;return i.keys(t).forEach(function(n){e=e.append(n,t[n])}),this.http.post(this.url,null,{params:e})},t.prototype.update=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.put(this.url+"/"+t,null,{params:n})},t.prototype.updateQuota=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.put(this.url+"/"+t+"/quota",null,{params:n})},t.prototype.delete=function(t){return this.http.delete(this.url+"/"+t)},t.prototype.createSubuser=function(t,e){var n=new r.h;return i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.post(this.url+"/"+t+"/subuser",null,{params:n})},t.prototype.deleteSubuser=function(t,e){return this.http.delete(this.url+"/"+t+"/subuser/"+e)},t.prototype.addCapability=function(t,e,n){var a=new r.h;return a=(a=a.append("type",e)).append("perm",n),this.http.post(this.url+"/"+t+"/capability",null,{params:a})},t.prototype.deleteCapability=function(t,e,n){var a=new r.h;return a=(a=a.append("type",e)).append("perm",n),this.http.delete(this.url+"/"+t+"/capability",{params:a})},t.prototype.addS3Key=function(t,e){var n=new r.h;return n=n.append("key_type","s3"),i.keys(e).forEach(function(t){n=n.append(t,e[t])}),this.http.post(this.url+"/"+t+"/key",null,{params:n})},t.prototype.deleteS3Key=function(t,e){var n=new r.h;return n=(n=n.append("key_type","s3")).append("access_key",e),this.http.delete(this.url+"/"+t+"/key",{params:n})},t.prototype.exists=function(t){return this.enumerate().pipe(Object(u.a)(function(e){var n=i.indexOf(e,t);return Object(s.a)(-1!==n)}))},t.prototype.emailExists=function(t){return t=decodeURIComponent(t),this.enumerateEmail().pipe(Object(u.a)(function(e){var n=i.indexOf(e,t);return Object(s.a)(-1!==n)}))},t.ngInjectableDef=c.defineInjectable({factory:function(){return new t(c.inject(r.c))},token:t,providedIn:d.a}),t=a.__decorate([l.a,a.__metadata("design:paramtypes",[r.c])],t)}()},PA2r:function(t,e,n){!function(t){"use strict";var e="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),n="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),a=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],r=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function i(t){return t>1&&t<5&&1!=~~(t/10)}function o(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"p\xe1r sekund":"p\xe1r 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\xed"):r+"dny";case"M":return e||a?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return e||a?r+(i(t)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):r+"m\u011bs\xedci";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|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},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});var a=function(){return function(){}}()},"PEr+":function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("EEJc"),o=n("ajRT"),s=n("gIcY"),u=n("IZUe"),l=n("gp3X"),c=n("sb0X"),d=n("KVJa"),f=n("Z21x"),p=n("sne2"),h=n("0+/T"),g=n("DQlY");n.d(e,"a",function(){return w});var m=a["\u0275crt"]({encapsulation:0,styles:[[".modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]{font-weight:700;margin-top:1em}.modal-body[_ngcontent-%COMP%]   .question[_ngcontent-%COMP%]   .checkbox[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," ","\n"])),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent,1),n.actionDescription));t(e,0,0,r,n.itemDescription)})}function x(t){return a["\u0275vid"](0,[a["\u0275pid"](0,r.LowerCasePipe,[]),a["\u0275pid"](0,r.TitleCasePipe,[]),a["\u0275qud"](402653184,1,{submitButton:0}),(t()(),a["\u0275eld"](3,0,null,null,37,"cd-modal",[],null,null,null,i.c,i.b)),a["\u0275did"](4,49152,[["modal",4]],0,o.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](5,0,null,0,2,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](7,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](8,0,null,1,32,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,31,"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["\u0275nov"](t,11).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,11).onReset()&&r),r},null,null)),a["\u0275did"](10,16384,null,0,s.D,[],null,null),a["\u0275did"](11,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,s.d,null,[s.l]),a["\u0275did"](13,16384,null,0,s.s,[[4,s.d]],null,null),(t()(),a["\u0275eld"](14,0,null,null,19,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](16,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](17,0,null,null,16,"div",[["class","question"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,2,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](19,null,["Are you sure that you want to "," the selected ","?"])),a["\u0275ppd"](20,1),(t()(),a["\u0275eld"](21,0,null,null,12,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](22,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](23,{"has-error":0}),(t()(),a["\u0275eld"](24,0,null,null,9,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](25,0,null,null,6,"input",[["autofocus",""],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,26).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,26).onTouched()&&r),r},null,null)),a["\u0275did"](26,16384,null,0,s.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.c]),a["\u0275did"](28,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,s.q,null,[s.j]),a["\u0275did"](30,16384,null,0,s.r,[[4,s.q]],null,null),a["\u0275did"](31,4210688,null,0,u.a,[a.ElementRef],null,null),(t()(),a["\u0275eld"](32,0,null,null,1,"label",[["for","confirmation"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Yes, I am sure."])),(t()(),a["\u0275eld"](34,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](35,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},l.b,l.a)),a["\u0275did"](36,114688,[[1,4],["submitButton",4]],0,c.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275and"](16777216,null,0,1,null,v)),a["\u0275did"](38,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](39,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,d.b,d.a)),a["\u0275did"](40,49152,null,0,f.a,[r.Location,p.b],{name:[0,"name"],back:[1,"back"]},null),(t()(),a["\u0275and"](0,[["deletionHeading",2]],null,0,null,_))],function(t,e){var n=e.component;t(e,4,0,n.modalRef),t(e,7,0,a["\u0275nov"](e,41)),t(e,11,0,n.deletionForm),t(e,16,0,n.bodyContext,n.bodyTemplate);var r=t(e,23,0,n.deletionForm.showError("confirmation",a["\u0275nov"](e,11)));t(e,22,0,"form-group",r),t(e,28,0,"confirmation"),t(e,36,0,n.deletionForm),t(e,38,0,a["\u0275nov"](e,41)),t(e,40,0,"Cancel",n.modalRef.hide)},function(t,e){var n=e.component;t(e,9,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending);var r=a["\u0275unv"](e,19,0,t(e,20,0,a["\u0275nov"](e,0),n.actionDescription));t(e,19,0,r,n.itemDescription),t(e,25,0,a["\u0275nov"](e,30).ngClassUntouched,a["\u0275nov"](e,30).ngClassTouched,a["\u0275nov"](e,30).ngClassPristine,a["\u0275nov"](e,30).ngClassDirty,a["\u0275nov"](e,30).ngClassValid,a["\u0275nov"](e,30).ngClassInvalid,a["\u0275nov"](e,30).ngClassPending)})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-deletion-modal",[],null,null,null,x,m)),a["\u0275did"](1,114688,null,0,h.a,[g.a],null,null)],function(t,e){t(e,1,0)},null)}var w=a["\u0275ccf"]("cd-deletion-modal",h.a,T,{},{},[])},PNOi:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.ProgressBarComponent=function(){return a([r.Component({selector:"datatable-progress",template:'\n    <div class="progress-linear" role="progressbar">\n      <div class="container">\n        <div class="bar"></div>\n      </div>\n    </div>\n  ',changeDetection:r.ChangeDetectionStrategy.OnPush})],function(){})}()},PU8L:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t){var e=new a.a(function(e){e.next(t),e.complete()});return e._isScalar=!0,e.value=t,e}},Paii:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["ja",[["\u5348\u524d","\u5348\u5f8c"],n,n],n,[["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],n,["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"],["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"]],n,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],n],n,[["BC","AD"],["\u7d00\u5143\u524d","\u897f\u66a6"],n],0,[6,0],["y/MM/dd",n,"y\u5e74M\u6708d\u65e5","y\u5e74M\u6708d\u65e5EEEE"],["H:mm","H:mm:ss","H:mm:ss z","H\u6642mm\u5206ss\u79d2 zzzz"],["{1} {0}",n,n,n],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"\uffe5","\u65e5\u672c\u5186",{CNY:["\u5143","\uffe5"],JPY:["\uffe5"],RON:[n,"\u30ec\u30a4"]},function(t){return 5}]})},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},n={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};t.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".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:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(t){return t+"\u0bb5\u0ba4\u0bc1"},preparse:function(t){return t.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(t,e,n){return t<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":t<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":t<10?" \u0b95\u0bbe\u0bb2\u0bc8":t<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":t<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":t<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(t,e){return 12===t&&(t=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===e?t<2?t:t+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===e||"\u0b95\u0bbe\u0bb2\u0bc8"===e?t:"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},Phjn:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("psW0");function r(t,e){return Object(a.a)(t,e,1)}},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},n={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};t.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".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:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(t){return t.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===e?t<4?t:t+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===e?t:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===e?t>=10?t:t+12:"\u0cb8\u0c82\u0c9c\u0cc6"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":t<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":t<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":t<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(t){return t+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}})}(n("wd/R"))},Q1FS:function(t,e,n){"use strict";var a=n("yx2s"),r=n("Xwq/"),i=n("zfKp"),o=n("9AGB"),s=n("n3uD");function u(t){if(t||(t=s.config.Promise||Promise),!t)throw new Error("no Promise impl found");return t}e.Observable=function(){function t(t){this._isScalar=!1,t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var a=this.operator,i=r.toSubscriber(t,e,n);if(i.add(a?a.call(i,this.source):this.source||s.config.useDeprecatedSynchronousErrorHandling&&!i.syncErrorThrowable?this._subscribe(i):this._trySubscribe(i)),s.config.useDeprecatedSynchronousErrorHandling&&i.syncErrorThrowable&&(i.syncErrorThrowable=!1,i.syncErrorThrown))throw i.syncErrorValue;return i},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){s.config.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=e),a.canReportError(t)?t.error(e):console.warn(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=u(e))(function(e,a){var r;r=n.subscribe(function(e){try{t(e)}catch(n){a(n),r&&r.unsubscribe()}},a,e)})},t.prototype._subscribe=function(t){var e=this.source;return e&&e.subscribe(t)},t.prototype[i.observable]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 0===t.length?this:o.pipeFromArray(t)(this)},t.prototype.toPromise=function(t){var e=this;return new(t=u(t))(function(t,n){var a;e.subscribe(function(t){return a=t},function(t){return n(t)},function(){return t(a)})})},t.create=function(e){return new t(e)},t}()},Q3dv:function(t,e){t.exports='<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>\ub124\ube44\uac8c\uc774\uc158 \uc804\ud658</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\ud604\ud669\ud310</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\ud074\ub7ec\uc2a4\ud130</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\ud638\uc2a4\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\ubaa8\ub2c8\ud130\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">\n        <source>OSDs</source>\n        <target>OSD\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">\n        <source>Configuration</source>\n        <target>\uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>\ud06c\ub7ec\uc26c\ub9f5</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\uba54\ub2c8\uc800 \ubaa8\ub4c8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\uacbd\uace0\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\ud480\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\ube14\ub7ed</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\uc774\ubbf8\uc9c0\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\ubbf8\ub7ec\ub9c1</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>\ud30c\uc77c\uc2dc\uc2a4\ud15c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\uc624\ube0c\uc81d\ud2b8\uac8c\uc774\ud2b8\uc6e8\uc774</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\ubc84\ud0b7\ub4e4</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\ub4a4\ub85c</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\uc5b8\uc5b4\uc120\ud0dd</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\ud328\ub110 \ub370\uc774\ud0c0 \ub85c\ub529 \uc911...</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>\uadf8\ub77c\ud30c\ub098 \ud0c0\uc784 \ud53d\ucee4</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\uc124\uc815 \ucd08\uae30\ud654</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\ub370\uc774\ud0c0 \ub85c\ub529 \uc2e4\ud3d0</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\uc120\ud0dd\ub41c</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\ubc1c\uacac\ub41c</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\uc804\uccb4</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\uc124\uc815\ub4e4</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>\uae30\ubcf8\uc124\uc815 \uac12\ub4e4\ub85c \ubd80\ud130 \uc778\uc790\ub97c \ubcc0\uacbd\ud558\ub294 \uac83\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\ubc31\uc2a4\ud1a0\uc5b4</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\ud655\uc778</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\ucde8\uc18c</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\uace0\uae09\uc124\uc815\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\ud0c0\uac9f IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc801\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN\uc774 \uc798\ubabb\ub41c \ud328\ud134\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc9c0\uc815\uaddc\uce59\uc774 \uc788\uc2b5\ub2c8\ub2e4.\n\'iqn.$\ub144-$\ub2ec.$\ub4a4\uc9d1\uc5b4\uc9c4\uc8fc\uc18c:$\uc815\uc758\ub41c\uc774\ub984\'</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\uc608\ub97c\ub4e4\uba74: 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>\ucd94\uac00 \uc815\ubcf4</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\uc774 \ud0c0\uac9f\uc740 \uace0\uae09\uc124\uc815\ub4e4\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\ud3ec\ud138</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>\uc801\uc5b4\ub3c4\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4\uc744 \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\ud3ec\ud138 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\uc774 \uc774\ubbf8\uc9c0\ub294 \uc124\uc815\ub4e4\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4. </target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\uc801\uc5b4\ub3c4 1 \uc774\ubbf8\uc9c0\ub294 \ud544\uc218\uc801\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\uc774\ubbf8\uc9c0 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \uc778\uc99d</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\uac1c\uc2dc\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\uac1c\uc2dc\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\uac1c\uc2dc\uc790 IQN\uc740 \uc720\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\uc0ac\uc6a9\uc790</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc740 8~64\uc790\uae4c\uc9c0 \uae38\uc774\uc758 \ubb38\uc790\ub4e4\uc744 \uac00\uc838\uc57c \ud558\uba70 \uadf8\ub9ac\uace0, \uc624\uc9c1 , \'.\', \'@\', \'-\', \'_\', \':\' \ub4f1\uc758 \ud2b9\uc218 \ubb38\uc790\ub4e4\ub9cc \ud3ec\ud568\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\uc554\ud638</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\uacf5\ub3d9 \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\uacf5\ud1b5 \uc554\ud638</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>\uac1c\uc2dc\uc790\ub294 \ud558\ub098\uc758 \uadf8\ub8f9\uc5d0 \uc18d\ud574\uc57c \ud558\uace0, \uc774\ubbf8\uc9c0\ub294 \uadf8\ub8f9\uc548\uc5d0\uc11c \uc124\uc815\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\ucd94\uac00\ub41c \uc544\uc774\ud15c\ub4e4\uc774 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\uac8c\uc2dc\uc790 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\uadf8\ub8f9\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\uadf8\ub8f9\ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\uc81c\ucd9c</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>\uc120\ud0dd\ub41c\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\ub85c\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> \uc744 \ud558\ub294 \uac83\uc774 \ud655\uc2e4\ud569\ub2c8\uae4c?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\uc608, \ud655\uc2e4\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\uc778\uc99d \ud0d0\uc0c9</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc740 8~64\uc790\uae4c\uc9c0 \uae38\uc774\uc758 \ubb38\uc790\ub4e4\uc744 \uac00\uc838\uc57c \ud558\uba70 \uadf8\ub9ac\uace0, \uc624\uc9c1 , \'.\', \'@\', \'-\', \'_\', \':\' \ub4f1\uc758 \ud2b9\uc218 \ubb38\uc790\ub4e4\ub9cc\uc744 \ud3ec\ud568\uac00\ub2a5\ud569\ub2c8\ub2e4.</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>iSCSI \ud0c0\uac9f\ub4e4 \uad00\ub9ac \uae30\ub2a5\ub4e4\uc744 \uc124\uc815\ud558\uace0 \ucf1c\uae30\uc704\ud574\uc11c\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\ubb38\uc11c\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \ubd80\ubd84\uc744 \ucc38\uc870\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\uc774\uc6a9\uac00\ub2a5\ud55c \uc815\ubcf4:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>iSCSI \ud0c0\uac9f\uc774 \uc774\uc6a9 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' \uc640 \'@\' \ubb38\uc790\ub294 \uc0ac\uc6a9\ubd88\uac00\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\ub85c\ub529\uc911...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c rbd\ud480 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \ud480 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\uc804\uc6a9 \ub370\uc774\ud0c0 \ud480\ub4e4\uc744 \uc0ac\uc6a9\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\ub370\uc774\ud0c0 \ud480</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\uc758 \uac1d\uccb4-\ub370\uc774\ud0c0\ub97c \uc800\uc7a5\ud558\uace0 \uc788\ub294 \uc804\uc6a9 \ud480</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c \ub370\uc774\ud0c0\ud480 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\uc608., 100 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\uc0ac\uc774\uc988\ub97c \uc99d\uac00\uc2dc\ucf1c\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\ud2b9\uc9d5\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\uc790\uc138\ud55c \uc635\uc158...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\uc790\uc138\ud55c</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\uac1d\uccb4\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704 \uc120\ud0dd --</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>\ubd84\uc0b0\uc800\uc7a5 \uac1c\uc218\uac00 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc785\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5\ub2e8\uc704\ub294 \uac1d\uccb4\ud06c\uae30\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5 \uac2f\uc218</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>\ubd84\uc0b0\uc800\uc7a5 \ub2e8\uc704\uac00 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc774 \ud544\ub4dc\ub294 \ud544\uc218\uc785\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\ubd84\uc0b0\uc800\uc7a5 \uac2f\uc218\ub294 \ubc18\ub4dc\uc2dc 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\ud734\uc9c0\ud1b5</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\ud1b5\ud569 \uc131\ub2a5\uce58</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\ud3b8\uc9d1</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\uc790\uc138\ud55c \uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\uae30\ubcf8\uac12</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\ub370\ubaa8 \uae30\ubcf8\uac12</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\uc11c\ube44\uc2a4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\uac12\ub4e4</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>\uc785\ub825\uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/> \ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4.! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/> \uc791\uc544\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\uc800\uc7a5\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>\ud06c\ub7ec\uc26c\ub9f5 \ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\ud638\uc2a4\ud2b8 \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\ud56d\ubaa9\ub4e4\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\uac10\uc0ac \ub85c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\uc124\uc815 \ub85c\ub529 \uc911</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\uc124\uc815\uc744 \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\uad00\ub9ac\ubaa8\ub4c8 \ud3b8\uc9d1\ud558\uae30</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>\uc785\ub825\ub41c \uac12\uc774 \uc720\ud6a8\ud55c UUID\uac00 \uc544\ub2d9\ub2c8\ub2e4, \uc608.: 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>\uc785\ub825\ub41c \uac12\uc740 \uc720\ud6a8\ud55c IP\uc8fc\uc18c \uc5ec\uc57c \ud569\ub2c8\ub2e4.</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>\uc785\ub825\uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740 \ubc18\ub4dc\uc2dc\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/> \uc791\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.\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>\uc785\ub825\ub41c \uac12\uc740 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uc22b\uc790\ub97c \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.</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>\uc785\ub825 \ub41c \uac12\uc740 \uc22b\uc790 \ub610\ub294 \uc2ed\uc9c4\uc218\uc5ec\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\uac31\uc2e0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>\ubaac\ub9f5 \ubcc0\uacbd\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>\ubaac\ub9f5 \ubcc0\uacbd\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>\uc815\uc871\uc218 \uc77c\uce58\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>\uc815\uc871\uc218 \ubaa8\ub2c8\ud130\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>\uc694\uad6c\ub418\ub294 \uc77c\uce58\ubc88\ud638</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>\uc694\uad6c\ub418\ub294 \ubaa8\ub2c8\ud130\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>\uc815\uc871\uc218\uc5d0 \ud3ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\uc815\uc871\uc218 \ubbf8\ud3ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\ud074\ub7ec\uc2a4\ud130-\uc218\uc900\uc758 OSD \ud50c\ub808\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \ubcf5\uad6c \uc6b0\uc120\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\uc6b0\uc120\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\uc6b0\uc120 \uc21c\uc704 \uac12 \ub9de\ucda4 \uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\uc774 \ud544\ub4dc\ub294 \uc694\uad6c\ub429\ub2c8\ub2e4!</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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \ud07d\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\ubcf4\ub2e4 \ud06c\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4..\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>\uc785\ub825\ub41c \uac12\uc774 \ub108\ubb34 \uc791\uc2b5\ub2c8\ub2e4! \uadf8\uac83\uc740\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\ubcf4\ub2e4 \uc791\uc544\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>OSD \uc7ac-\uc870\uc815</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>\uac12\uc740 0\uacfc 1\uc0ac\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\uc7ac-\uc870\uc815</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\ub4e4\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> \uccad\uc18c\ud558\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">\n        <source>{VAR_SELECT, select, 1 {Deep } }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 1 {\uae4a\uc774 } }</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\uc744 \uccad\uc18c\ud558\uae30 \uc704\ud574, \ub2f9\uc2e0\uc740\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\uc744 \uc801\uc6a9\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">\n        <source>{VAR_SELECT, select, 1 {deep } }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 1 {\uae4a\uc774 } }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\uacc4\uc18d\uc9c4\ud589\ud558\uba74\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> \ub294\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>"/> \ub85c \ud45c\uc2dc\ub429\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD\ub294 \ud30c\uad34\ud558\uae30\uc5d0 \uc548\uc804\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\uacc4\uc18d\uc9c4\ud589\ud558\uba74\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> \ub294\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>"/> \uac00 \ub420 \uac83\uc785\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\uc138\ubd80\uc124\uba85</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\uac74\uac15\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\ud1b5\uacc4\ub4e4</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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\ubaa8\ub4e0 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc811\uadfc\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\uc8fc\uc18c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\ud544\uc218 \uc785\ub825\ub780</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\ubc18\ub4dc\uc2dc \ud558\ub098 \uc774\uc0c1\uc758 \uc27c\ud45c\ub85c \uad6c\ubd84 \ub41c \uac12\uc744 \ud3ec\ud568\ud574\uc57c \ud568</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\uc608\ub97c\ub4e4\uba74:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\uc811\uadfc\ud615\ud0dc</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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/> NFS \ub0b4\ubcf4\ub0b4\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5 \ud074\ub7ec\uc2a4\ud130 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \ud074\ub7ec\uc2a4\ud130 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\ub370\ubaac \ucd94\uac00\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\uc2a4\ud1a0\ub9ac\uc9c0 \ubc31\uc5d4\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \uc2a4\ud1a0\ub9ac\uc9c0 \ubc31\uc5d4\ub4dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\uac1d\uccb4 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \uc0ac\uc6a9\uc790\ub4e4 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \uac1d\uccb4 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \uc0ac\uc6a9\uc790 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \ud074\ub77c\uc774\uc5b8\ud2b8 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx \ud074\ub77c\uc774\uc5b8\ud2b8 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\ubcf4\uc548 \ub808\uc774\ube14</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\ubcf4\uc548 \ub808\uc774\ube14 \uc0ac\uc6a9</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \uacbd\ub85c</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>\uacbd\ub85c\ub294 \'/\'\ub85c \uc2dc\uc791\ud574\uc57c\ud558\uba70 \uadf8 \ub4a4\uc5d0 \ub2e8\uc5b4\uac00 \uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\uc0c8\ub85c\uc6b4 \ub514\ub809\ud1a0\ub9ac\uac00 \ub9cc\ub4e4\uc5b4 \uc9c8 \uac83\uc785\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\uacbd\ub85c</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>\uacbd\ub85c\ub294 \ud558\ub098\uc758 \'/\' \ub610\ub294 \ud558\ub098\uc758 \ub2e8\uc5b4 \uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\uc0c8\ub85c\uc6b4 \ubc84\ud0b7\uc774 \ub9cc\ub4e4\uc5b4 \uc9c8 \uac83\uc785\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \ud504\ub85c\ud1a0\ucf5c</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 \ud0dc\ud06c</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>\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>"/> \ub9c8\uc6b4\ud2b8\ub4e4\uc744 \uc704\ud55c \ub300\uccb4 \uc811\uadfc (/\uac00 \uc55e\uc5d0 \uc640\uc57c \ud568).\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>\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \ud558\uc704 \ub514\ub809\ud1a0\ub9ac\ub97c \ub9c8\uc6b4\ud2b8 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 (\uc989, Tag = foo \uc778 \uacbd\uc6b0 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 foo / baz\ub97c \ub9c8\uc6b4\ud2b8\ud558\uc9c0 \ubabb\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4).</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>\ub2e4\ub978 \ud0dc\uadf8 \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \uac19\uc740 \uacbd\ub85c\ub97c \uc5ec\ub7ec \ubc88 \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ub2e4\ub978 Pseudo \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ub3d9\uc77c\ud55c \uacbd\ub85c\ub97c \uc5ec\ub7ec \ubc88 \ub0b4\ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c \uc811\uadfc\ud615\ud0dc \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \uc811\uadfc\ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c squash \uc5c6\uc74c --</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>-- \uc5b4\ub5a4 \uc885\ub958\uc758 \uc0ac\uc6a9\uc790 ID \uc2a4\ucffc\uc2dc\uac00 \uc218\ud589\ub418\ub294\uc9c0 \uc120\ud0dd\ud558\uc138\uc694 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\uc804\uc1a1\ud504\ub85c\ud1a0\ucf5c</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\uc774\ub984\uc740 \uc601\uc22b\uc790, \ub300\uc2dc \ubc0f \ubc11\uc904\ub85c\ub9cc \uad6c\uc131 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\uc120\ud0dd\ud55c Erasure Code \ud504\ub85c\ud30c\uc77c \uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\ud50c\ub7ec\uadf8\uc778</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\ub370\uc774\ud130 \ub369\uc5b4\ub9ac\ub4e4 (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>\ubc18\ub4dc\uc2dc 2\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\ucf54\ub529 \ub369\uc5b4\ub9ac\ub4e4 (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>\ubc18\ub4dc\uc2dc 1\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\ub0b4\uad6c\uc131 \ud3c9\uac00(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\uc9c0\uc5ed (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>\ud06c\ub7ec\uc26c \uc2e4\ud328 \ub3c4\uba54\uc778</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>\ud06c\ub7ec\uc26c \uc9c0\uc5ed</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\uae30\uc220</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\ud328\ud0b7\ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>\ud06c\ub7ec\uc26c\ub8e8\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>\ud06c\ub7ec\uc26c \uc7a5\uce58 \ud074\ub798\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\ubaa8\ub4e0</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\ub514\ub809\ud1a0\ub9ac</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\ub2eb\uae30</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\uc774\ub984...</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>\uc120\ud0dd\ud55c Ceph \ud480\uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\ud480 \ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \ud480 \ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\uac8c\uc7ac\uc704\uce58 \uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uac8c\uc7ac\uc704\uce58 \uadf8\ub8f9\uc774 \ud544\uc694\ud568!</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>\ud074\ub7ec\uc2a4\ud130\ub294 \uc774 \ub9ce\uc740 PG\ub4e4\ub97c \ucc98\ub9ac \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud544\uc694\ud55c PG \uc591\uc744 \ub2e4\uc2dc \uacc4\uc0b0\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\uae30\uc874 \ud480\uc758 PG\ub4e4\uc758 \uc22b\uc790\ub97c \ub298\ub9b4 \uc218\ub9cc \uc788\uc2b5\ub2c8\ub2e4.\n\ud604\uc7ac \ud480\uc740\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PG\ub4e4\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\uacc4\uc0b0 \ub3c4\uc6c0\ub9d0</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\ud604\uc7ac\uc758 PG\ub4e4 \uc124\uc815\ub4e4\uc774 \ub2f9\uc2e0\uc744 \uc704\ud574 \uacc4\uc0b0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n\ub2f9\uc2e0\uc740 \uc81c\ucd9c\ud558\uae30 \uc804\uc5d0 \ub2f9\uc2e0\uc758 \uc694\uad6c\uc5d0 \uc801\ud569\ud55c \uac12\uc778\uc9c0\ub97c \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0\uc14b</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \ud06c\ub7ec\uc26c \ub8f0 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>\ud06c\ub7ec\uc26c \ub2e8\uacc4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\uc774 \ub8f0\uc5d0 \uc758\ud558\uc5ec \ucd5c\uc18c\ub85c \ud544\uc694\ub85c \ud558\ub294 OSD\ubcf4\ub2e4 \uc801\uc740 OSD\ub97c \uac00\uc9c0\uace0 \uc788\uae30\ub54c\ubb38\uc5d0 \uc774 \ub8f0\uc740 \ud604\uc7ac\uc758 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\ubcf5\uc81c\ub418\ub294 \ud06c\uae30</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>\ucd5c\uc18c:\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>\ucd5c\ub300:\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\uc9c0\uc815\ub41c \ud06c\uae30\ub294 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \uc5d0\uc11c\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \uc0ac\uc774\uc758 \uac12\uc774 \uc720\ud6a8\ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Erasure Code \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \uc0ac\uc6a9\uac00\ub2a5\ud55c Erasure Code \ud504\ub85c\ud30c\uc77c \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \ud55c\uac1c\uc758 Erasure Code \ud504\ub85c\ud30c\uc77c \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\ud50c\ub808\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \ub36e\uc5b4\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\uc555\ucd95</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\uc591\uc2dd</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\uc54c\uace0\ub9ac\uc998</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \uc774\uc6a9\uac00\ub2a5\ud55c Erasure \uc555\ucd95\uc54c\uace0\ub9ac\uc998 \uc5c6\uc74c --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>\ucd5c\uc18c blob \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\uc608) 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\uac12\uc740 0\ubcf4\ub2e4 \ucee4\uc57c\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>\ucd5c\ub300 blob \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\uc608) 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>\uac12\uc740 \ucd5c\uc18c blob \ud06c\uae30\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\ube44\uc728</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\uc555\ucd95\uc728</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>\uac12\uc740 0.0\uacfc 1.0 \uc0ac\uc774 \uc5ec\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\uc774\ub984\uc5d0 \'/\'\uac00 \ud3ec\ud568 \ub41c RBD \ud480\uc744 \uc0dd\uc131 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\uc774\ub984\uc744 \ubcc0\uacbd\ud558\uac70\ub098 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \ubaa9\ub85d\uc5d0\uc11c \'rbd\'\ub97c \uc81c\uac70\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\ud480 \ubaa9\ub85d\ub4e4</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> \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad00\ub9ac\uae30\ub2a5\ub4e4\uc744 \uc5b4\ub5bb\uac8c \uc124\uc815\ud558\uace0 \ucf1c\ub294\uc9c0\uc5d0 \ub300\ud574\n\ubb38\uc11c\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\uc0c1\uc758\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> \ubd80\ubd84\uc744 \ucc38\uc870\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\ubc84\ud0b7\ub370\uc774\ud0c0 \uc801\uc7ac \uc911</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\ubc84\ud0b7 \ub370\uc774\ud0c0\ub97c \uc801\uc7ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">\n        <source>Id</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">\n        <source>The value is not valid.</source>\n        <target>\uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \uc774\ub984\uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\uc18c\uc720\uc790</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \uc0ac\uc6a9\uc790 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\ub370\ubaac \ubaa9\ub85d\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \ud615\ud0dc \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\uad8c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \uad8c\ud55c \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\uc0ac\uc6a9\uc790\uba85</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \uc0ac\uc6a9\uc790\uba85 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\uc790\ub3d9\uc0dd\uc131\ub41c \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\uc811\uadfc \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\ube44\ubc00 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \ubcf4\uc870\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\uc77d\uae30, \uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\uac00\ub4dd\ucc2c</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>\uc2a4\uc704\ud504\ud2b8 \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\uc790\ub3d9\uc0dd\uc120\ub41c \ube44\ubc00</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\uc0ac\uc6a9\uc790 \ub370\uc774\ud0c0 \uc801\uc7ac \uc911...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\uc0ac\uc6a9\uc790 \ub370\uc774\ud0c0\ub97c \uc801\uc7ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\uc120\ud0dd\ub41c \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\uc804\uccb4 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\uc774\uac83\uc740 \uc720\ud6a8\ud55c \uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c\uac00 \uc544\ub2d9\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\uc120\ud0dd\ud55c \uc804\uc790\uc6b0\ud3b8 \uc8fc\uc18c\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\ucd5c\ub300 \ubc84\ud0b7\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\uc785\ub825\ub41c \uac12\uc740 \ubc18\ub4dc\uc2dc 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\uc720\uc608\ub418\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\ubcf4\uc870\uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\ud0a4\ub4e4</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>\ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>\uc2a4\uc704\ud504\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\ub2a5\ub825\uce58\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\ub2a5\ub825\uce58\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\uc0ac\uc6a9\uc790 \ud560\ub2f9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\uc774\uc6a9\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\ubb34\uc81c\ud55c \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\ucd5c\ub300 \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\ubb34\uc81c\ud55c \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\ucd5c\ub300 \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\ubc84\ud0b7 \ud560\ub2f9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph \uc0ac\uc6a9\uc744 \ud658\uc601\ud569\ub2c8\ub2e4.</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>\uc0ac\uc6a9\uc790\uc774\ub984\uc774 \ud544\uc694\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\uc554\ud638\uac00 \ud544\uc694\ud569\ub2c8\ub2e4</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\ub85c\uadf8\uc778</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\uc138\ubd80\uc124\uba85...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\uad8c\ud55c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\ubbf8\uc548\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\uac00 Ceph\ub0b4\uc5d0 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</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="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\uc554\ud638 \ud655\uc778</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\uc554\ud638 \ud655\uc778\uc774 \uc554\ud638\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\uc804\uc790\uc6b0\ud3b8</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\uc720\ud6a8\ud558\uc9c0\uc54a\ub294 \uc804\uc790\uc6b0\ud3b8.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\uc5ed\ud560\ub4e4</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>\ub2f9\uc2e0\uc758 \uc0ac\uc6a9\uc790\ub85c\ubd80\ud130 "\uc0ac\uc6a9\uc790 \uc77d\uae30 / \uc5c5\ub370\uc774\ud2b8"\uad8c\ud55c\uc744 \uc81c\uac70\ud558\ub824\uace0\ud569\ub2c8\ub2e4.</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>\uacc4\uc18d\ud558\uba74 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc5ed\ud560\uc744 \ucd94\uac00\ud558\uac70\ub098 \uc81c\uac70 \ud560 \uc218 \uc5c6\uac8c\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\uacc4\uc18d \uc9c4\ud589\ud558\uae30\ub97c \uc6d0\ud558\uc2ed\ub2c8\uae4c?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\uae08\uc9c0\ub428</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>\ubbf8\uc548\ud569\ub2c8\ub2e4. \ub2f9\uc2e0\uc774 \uc694\uccad\ud560 \uac83\uc744 \uc5f4\ub78c\ud558\ub294 \uac83\uc774 \ud5c8\ub77d\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\ubbf8\uc548\ud569\ub2c8\ub2e4. \ub2f9\uc2e0\uc774 \uc694\uccad\ud560 \uac83\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\ubaa8\ub4e0 \uac83 \uc81c\uac70</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\ucd5c\uadfc \uc54c\ub9bc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\ub3c4\uc6c0\ub9d0</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\ubb38\uc11c</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>\ub300\ud558\uc5ec</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\ub300\uc26c\ubcf4\ub4dc \uc124\uc815</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\uc0ac\uc6a9\uc790 \uad00\ub9ac</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\ub85c\uadf8\uc778\ub41c \uc0ac\uc6a9\uc790</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>\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\ub85c\uc368 \uc2b9\uc778\ub428\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\ub85c\uadf8\uc544\uc6c3</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\uc131\ub2a5 \uc138\ubd80\uc815\ubcf4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">\n        <source>ID</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">\n        <source>Index type</source>\n        <target>\uc0c9\uc778\ud615\uc2dd</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\uc704\uce58\uaddc\uce59</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\ucd5c\ub300 \ub9c8\ucee4</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\ub9c8\uc2a4\ud130 \ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\uc218\uc815\ub41c \uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\uc81c\ub85c\uadf8\ub8f9</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\ucd5c\ub300 \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\ubb34\uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\ucd5c\ub300 \uac1d\uccb4\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\uc2dc\uc2a4\ud15c</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, \uc120\ud0dd, 0 {\uc544\ub2c8\uc624} 1 {\uc608} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\ucd5c\ub300 \ubc84\ud0b7\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130\ub4e4\uc744 \uc0ac\uc6a9 \ud560 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\uae00\ub85c\ubc8c</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\uc774\ubbf8\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\ud480</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \uc124\uc815\ub4e4</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>\ub85c\uceec \uad6c\uc131 \uac12\uc744 \uc81c\uac70\ud558\uc2ed\uc2dc\uc624. \uc0c1\uc704 \uad6c\uc131 \uac12\uc740 \uacc4\uc2b9\ub418\uace0 \ub300\uc2e0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\ucd5c\uc18c\uac12\uc740 0\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\uc18d\uc131\ub4e4 (OSD \ub9f5)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\uc131\ub2a5 \uce74\uc6b4\ud130</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>\ud788\uc2a4\ud1a0\uadf8\ub7a8\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c:\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>\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\uc77d\uae30</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\ud788\uc2a4\ud1a0\uadf8\ub7a8</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\ud604\uc7ac \uac12\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\ucd5c\uc18c</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\ucd5c\ub300</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\uc18c\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\uc218\uc900</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\uc218\ud589\uc2dc\uac04\uc5d0 \uac31\uc2e0\uac00\ub2a5\ud568(\ud3b8\uc9d1\uac00\ub2a5)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\ud14c\ud06c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\uc5f4\uac70\ud615 \uac12\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\ucd94\uac00\ub85c \ub354\ubcf4\uae30</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\uad00\ub9ac\uc790 \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\uba54\ud0c0\ub370\uc774\ud0c0 \uc11c\ubc84\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \uac8c\uc774\ud2b8\uc6e8\uc774\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 \ucc98\ub9ac\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8 \uc77d\uae30/\uc4f0\uae30</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\ubcf5\uad6c \ucc98\ub9ac\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\uc138\uc815\uc791\uc5c5</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\uc131\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\uc6d0\uc2dc\uc6a9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\uc624\ube0c\uc81d\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD\ub2f9 PG\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \uc0c1\ud0dc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\uc6a9\ub7c9</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>"/> \ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \uc704\ud574\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\ub85c\uadf8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \ubcf4\uc2ed\uc2dc\uc624.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\uc774\ubbf8\uc9c0\ub97c \ud734\uc9c0\ud1b5\uc5d0 \uc774\ub3d9</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\ud734\uc9c0\ud1b5\uc73c\ub85c\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \uc62e\uae30\uae30 \uc704\ud574,\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uc120\ud0dd,\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> \uc774\ubbf8\uc9c0 \uc62e\uae30\uc138\uc694. \uc120\ud0dd\uc801\uc73c\ub85c, \ud3d0\uae30\ub0a0\uc9dc\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\ubcf4\ud638\uac00 \ub9cc\ub8cc\ub418\ub294 </target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\ubcf4\ud638\ub418\uc9c0 \uc54a\uc74c</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>\ub0a0\uc9dc \ud615\uc2dd \uc624\ub958. "YYYY-MM-DD HH:mm:ss" \ud615\uc2dd\uc73c\ub85c \uc9c0\uc815\ud558\uc138\uc694.</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>\ubcf4\ud638\uae30\uac04\uc774 \uc774\ubbf8 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub354 \ubbf8\ub798\uc758 \ub0a0\uc9dc\ub97c \uc120\ud0dd\ud558\uac70\ub098 \uacf5\ub780\uc73c\ub85c \ub0a8\uaca8\ub450\uc138\uc694.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\uc774\ubbf8\uc9c0 \uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\uac1c\uad00</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\ud0c0\uac9f\ub4e4</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>\uc624\uc9c1\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>"/> \uc124\uc815\ub41c RBD \uc774\ubbf8\uc9c0\ub4e4\uacfc \ud568\uaed8 \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\ub370\uc774\ud0c0 \ud480</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\uc0dd\uc131\ub41c</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\uc900\ube44\ub41c</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\uc774\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\uc900\ube44\ub41c \ucd1d\uacc4</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\uc2a4\ud2b8\ub77c\uc774\ud551 \ub2e8\uc704</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\uc2a4\ud2b8\ub77c\uc774\ud551 \ud69f\uc218</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\uc0c1\uc704</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\ube14\ub85d \uc774\ub984 \uc811\ub450\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\uc21c\uc11c</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\uc2a4\ub0c5\uc0bf</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\uc774 \uc124\uc815\uc740 \uc804\uc5ed \uac12\uc744 \ub36e\uc5b4\uc501\ub2c8\ub2e4.</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>\uc774\uac83\uc740 \uc804\uc5ed \uac12\uc785\ub2c8\ub2e4. \uc774 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud574 \uc774 \uc635\uc158\uc758 \uac12\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD \uc2a4\ub0c5\uc0f7\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> \uc2a4\ub0c5\uc0f7\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\ubcf4\ud638\ub428</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\ubcf4\ud638\uc548\ub428</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\ub864\ubc31\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\ud734\uc9c0\ud1b5 \ube44\uc6b0\uae30</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\ube44\uc6b0\uae30 \uc704\ud574, \ud558\ub098 \ub610\ub294 \ubaa8\ub4e0 \uc774\ubbf8\uc9c0\ub4e4\uc744 \uc120\ud0dd\ud558\uace0 \ud074\ub9ad\ud558\uc138\uc694.</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\ud480:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\ud480 \uc774\ub984:</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\ubaa8\ub4e0</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\uc774\ubbf8\uc9c0 \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\ubcf5\uad6c\ub97c \uc704\ud574</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\uc774\ubbf8\uc9c0\ub4e4\uc758 \uc0c8\ub85c\uc6b4 \uc774\ub984\uc744 \uc785\ub825\ud558\uace0 \ud074\ub9ad\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\uc0c8\ub85c\uc6b4 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\ud3d0\uae30\ub420</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\uae4c\uc9c0 \ubcf4\ud638\ub428</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>\uc774 \uc774\ubbf8\uc9c0\ub294\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\uae4c\uc9c0 \ubcf4\ud638\ub429\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \ud1a0\ud3f4\ub85c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\uc774\uc288\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\ub3d9\uae30\ud654\uc911</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\uc900\ube44\ub428</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\ud480 \ubbf8\ub7ec\ubaa8\ub4dc\ub97c \ud3b8\uc9d1\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\ud480\uc744 \uc704\ud55c \ubbf8\ub7ec\ubaa8\ub4dc\ub97c \ud3b8\uc9d1\ud558\uae30 \uc704\ud574\xa0\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>"/>, \uadf8 \ubaa9\ub85d\uc73c\ub85c \ubd80\ud130 \uc0c8\ub85c\uc6b4 \ubaa8\ub4dc\ub97c \uc120\ud0dd\ud558\uace0, \ud074\ub9ad\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uac31\uc2e0\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>\uc0c1\ub300\ubc29 \ud074\ub7ec\uc2a4\ud130\ub4e4\uc740 \ubbf8\ub7ec\ub97c \ub2e8\uc808\ud558\uae30 \uc804\uc5d0 \ubc18\ub4dc\uc2dc \uc81c\uac70\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.</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  \ud480 \ubbf8\ub7ec \uc0c1\ub300\ubc29\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> \ud480\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>"/> \ud480\uc744 \uc704\ud558\uc5ec \uc0c1\ub300\ubc29 \uc18d\uc131 \ubbf8\ub7ec\ud558\uace0,\n          \uc120\ud0dd\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>  \uc81c\ucd9c\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>\ud074\ub7ec\uc2a4\ud130 \uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\ud074\ub7ec\uc2a4\ud130 \uc774\ub984\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">\n        <source>CephX ID</source>\n        <target>CephX \uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">\n        <source>CephX ID...</source>\n        <target>CephX \uc544\uc774\ub514...</target>\n      </trans-unit>\n      <trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">\n        <source>The CephX ID is not valid.</source>\n        <target>CephX \uc544\uc774\ub514\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\ubaa8\ub2c8\ud130 \uc8fc\uc18c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\ucf64\ub9c8\ub85c \ubd84\ub9ac\ub41c \uc8fc\uc18c\ub4e4...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\ubaa8\ub2c8\ud130 \uc8fc\uc18c\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \ud0a4</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64\ub85c \uc778\ucf54\ub529 \ub41c \ud0a4 ...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \ud0a4\ub294 \ubc18\ub4dc\uc2dc base64\ub85c \uc778\ucf54\ub4dc \ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\ucf00\uc26c \uacc4\uce35\ub4e4 \uc0c1\uc138\uc124\uba85\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\ud604\uc7ac</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\uc5c5\ub370\uc774\ud2b8\ub41c \uac80\uc0c9 \uc778\uc99d</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \ud3ec\ud0c8\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \uc774\ubbf8\uc9c0\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.</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>\uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uc774\ubbf8\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc0c1\uc5d0 \uc774\ubbf8\uc9c0\ub97c \ucd94\uac00\ud588\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.</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>\uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uac1c\uc2dc\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc0c1\uc5d0 \uac1c\uc2dc\uc790\ub97c \ucd94\uac00\ud588\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\ud0c0\uac9f</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\ud638\uc2a4\ud2b8\uc774\ub984</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\uc77d\uc740 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\uc77d\uae30 Ops</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\uc4f0\uae30 Ops</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>A/O \uc774\ub798\ub85c</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\uc778\uc2a4\ud0c4\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\uc774\uc288</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\uc9c4\ud589\uc911</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\uc124\uc815\ud574\uc81c\ub428</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\ud3b8\uc9d1\ubaa8\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\uc0c1\ub300\ubc29 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\uc0c1\ub300\ubc29 \ud3b8\uc9d1</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\uc0c1\ub300\ubc29 \uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>\ub9ac\ub354</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target># \ub85c\uceec</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># \uc6d0\uaca9</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\uc0c1\ub300\ubc29 \ubbf8\ub7ec</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\ud0a4</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\uac12</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\ub525 \ud328\ud134</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\uacc4\uce35\ud654</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\ubc30\ud0c0\uc801\uc778 \ub77d</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\uc624\ud504\uc81d\ud2b8-\ub9f5(\ubc30\ud0c0\uc801\uc778-\ub77d\uc744 \uc694\uad6c\ud55c\ub2e4)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\uc800\ub110\ub9c1(\ubc30\ud0c1\uc801\uc778-\ub77d\uc744 \uc694\uad6c\ud569\ub2c8\ub2e4.)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (\uc624\ube0c\uc81d\ud2b8-\ub9f5\uc744 \uc694\uad6c\ud568)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\ubcf5\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\ub2e8\uc870\ub85c\uc6c0</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\ud734\uc9c0\ud1b5\uc73c\ub85c \uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\ub9cc\ub4e4\uae30</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\uc774\ub984\ubcc0\uacbd</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\ubcf4\ud638</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\ubcf4\ud638\uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\ubcf5\uc81c</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \uc2a4\ub0c5\uc0f7 \ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \uc2a4\ub0c5\uc0f7</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\ubcf5\uad6c</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\uc0ad\uc81c\ub420 </target>\n      </trans-unit>\n      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">\n        <source>id</source>\n        <target>\uc544\uc774\ub514</target>\n      </trans-unit>\n      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">\n        <source>type</source>\n        <target>\ud615\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\uc0c1\ud0dc</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\ubc84\uc83c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\ud638\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\ub8e8\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\uc21c\uc704</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\ub370\ubaac</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\ud65c\ub3d9</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>\ub374\ud2b8\ub9ac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>\uc544\uc774\ub178\ub4dc\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>\uc0ac\uc6a9\ub7c9</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\ub300\uae30 \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\uc774 \uac12\uc740 \ub7f0\ud0c0\uc784\uc5d0 \uc5c5\ub370\uc774\ud2b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ub370\ubaac\ub4e4 / \ud074\ub77c\uc774\uc5b8\ud2b8\ub4e4\uc740 \ubaa8\ub2c8\ud130 \uad6c\uc131 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\uc774 \uac12\uc744 \uac00\uc838 \uc624\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \'ceph config set ...\'\uc744 \ud1b5\ud574\uc774 \uc635\uc158\uc744 \uc124\uc815\ud558\ub294 \uac83\uc740 \ud5c8\ub77d\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \uc635\uc158\uc740 ceph.conf \ub610\ub294 \uba85\ub839 \uc904\uc744 \ud1b5\ud574 \uad6c\uc131\ud574\uc57c\ud569\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\uc635\uc158\uc740 \ub370\ubaac \uc2dc\uc791 \uc911\uc5d0 \ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\uc635\uc158\uc740 \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131\ud560 \ub54c \ub9cc \uc601\ud5a5\uc744 \uc90d\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\uc635\uc158\uc740 \ub370\ubaac \uc0dd\uc131\ud560 \ub54c\ub9cc \uc601\ud5a5\uc744\uc90d\ub2c8\ub2e4.</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>\uac31\uc2e0\ub41c \uc124\uc815 \uc635\uc158\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>\uc11c\ube44\uc2a4</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\ud604\uc7ac\uac12</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\ud3b8\uc9d1\uac00\ub2a5</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>\ubaa8\ub4c8\uc744 \uc704\ud574 \uac31\uc2e0\ub41c \uc635\uc158\ub4e4 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\uc0ac\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\uc7ac-\uc811\uc18d \uc911, \uae30\ub2e4\ub824 \uc8fc\uc138\uc694...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\uacf5\uac1c \uc8fc\uc18c</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\uc5f4\ub9b0 \uc138\uc158\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\ub4e4\uc5b4\uc62c \uc218 \uc5c6\ub294</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>\uc774\uc804\uc5d0 \ub9c8\ud06c \uc544\uc6c3 \ub41c OSD\ub294 \uc2dc\uc791\uc2dc \ub2e4\uc2dc \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\ub098\uac08 \uc218 \uc5c6\ub294</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\ub4e4\uc740 \uad6c\uc131\ub41c \uac04\uaca9 \ud6c4\uc5d0\ub294 \uc790\ub3d9\uc73c\ub85c \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\uc0b4\uc544\ub098\uc9c0 \uc54a\ub294</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD\ub294 \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\uc8fd\uc77c \uc218 \uc5c6\ub294</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>\ubaa8\ub2c8\ud130\uac00 OSD\ub4e4\uc758 \ub2e4\uc6b4\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\ub3c4\ub85d OSD \uc7a5\uc560 \ubcf4\uace0\uc11c\uac00 \ubb34\uc2dc\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\uba48\ucd9c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\uc77d\uae30\uc640 \uc4f0\uae30\ub97c \uba48\ucda4</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\uc2a4\ud06c\ub7ec\ube59 \uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\uc2a4\ud06c\ub7ec\ube59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\ub525 \uc2a4\ud06c\ub7fd \uc548\ub428</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\ub525 \uc2a4\ud06c\ub7ec\ube59\uc774 \ube44\ud65c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\ubc31\ud544 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG\ub4e4\uc758 \ubc31\ud544\uc774 \uc77c\uc2dc\uc911\uc9c0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\ubcf5\uad6c \uc54a\ub428</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG\ub4e4\uc758 \ubcf5\uad6c\uac00 \uc77c\uc2dc\uc911\uc9c0 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\ube44\ud2b8\ub2e8\uc704 \uc815\ub82c</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\ube44\ud2b8\ub2e8\uc704 \uc815\ub82c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\uc644\uc804\uc0ad\uc81c\ub41c \uc2a4\ub0c5\ub514\ub809\ud1a0\ub9ac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD\ub4e4\uc774 \ubcc0\ud654\ub41c \uc2a4\ub0c5\uc14b\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\uc0ad\uc81c\ub41c \ubcf5\uad6c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\ud53c\uc5b4\ub9c1 \ub300\uc2e0 \ubcf5\uad6c \uc911\uc5d0 \uc218\ud589\ub41c \uc0ad\uc81c\ubb3c\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \ub85c\uadf8 \ud558\ub4dc \ud55c\uacc4</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 \ub85c\uadf8 \uae38\uc774\uc5d0 \ud558\ub4dc \ud55c\uacc4\ub97c \ub123\uc73c\uc138\uc694</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\uac31\uc2e0\ub41c OSD \ud50c\ub798\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\ub525 \uc2a4\ud06c\ub7fd</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\uc544\uc6c3 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\uc544\uc6c3</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\uc778 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\uc778</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\ub2e4\uc6b4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\ub2e4\uc6b4</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\uc190\uc2e4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \uc190\uc2e4</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\uc190\uc2e4 \ud45c\uc2dc</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\uc644\uc804\uc81c\uac70</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\uc644\uc804\uc81c\uac70\ub41c</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\ud30c\uad34\ub41c</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>\ud30c\uad34\ub428</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>\uc77d\uc740 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\uc4f0\uae30\ub41c \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\uc77d\uae30 ops</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\uc4f0\uae30 ops</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>\ud45c\uc2dc\ub41c 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>\ud45c\uc2dc\ub41c\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\ucd5c\ub300 \ubc31\ud544\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\ucd5c\ub300 \ud65c\uc131\ud654\ub97c \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\ucd5c\ub300 \ub2e8\uc77c \uc2dc\uc791\uc744 \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\uc7a0\uc790\uae30\ub97c \ubcf5\uad6c\ud558\uae30</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\ucee4\uc2a4\ud140</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>\uac31\uc2e0\ub41c OSD \ubcf5\uad6c \uc18d\ub3c4 \uc6b0\uc120\uc21c\uc704 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \uc740 \ub2e4\uc74c\uc758 OSD\ub4e4 \uc548\uc5d0 \ucd08\uae30\ud654\ub428:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\uc77c</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\uc2ec\uac01\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\uc2dc\uc791\ub41c</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\uc0ac\uc6a9\ub41c</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\uc774\uc6a9\uac00\ub2a5:</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\uae68\ub057\ud55c</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\uc815\uc0c1\ub3d9\uc791\uc911</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\uacbd\uace0</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\uc54c\ub824\uc9c0\uc9c0 \uc54a\uc740</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\uc815\uc0c1</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\ud30c\uc77c\uc2dc\uc2a4\ud15c\ub4e4 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\ud65c\uc131\ud654\ub41c</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\ub300\uae30\uc911\uc778</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\uc774\uc6a9\ubd88\uac00</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\ud65c\uc131\ud654\ub41c \ub370\ubaac\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>\uc815\uc871\uc218</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 \uc11c\ube44\uc2a4\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc74c</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\uc804\uc1a1</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \ud30c\uc77c\uc2dc\uc2a4\ud15c</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\uc804\uc5ed \uad6c\uc131\uc5d0\uc11c \uc0c1\uc18d)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\uc804\uc5ed \uad6c\uc131\uc5d0\uc11c \uc0c1\uc18d</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>- \uc5b4\ub5a4 \uc885\ub958\uc758 \uc0ac\uc6a9\uc790 ID \uc2a4\ucffc\uc2dc\uac00 \uc218\ud589\ub418\ub294\uc9c0 \uc120\ud0dd -</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \ub370\ubaac\uc774 \uc5c6\uc74d\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\ub0b4\ubcf4\ub0b4\uae30</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\uce90\uc26c\ubaa8\ub4dc</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\ucd5c\uc18c \ud1f4\uac70 \uc5f0\ub839</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\ucd5c\uc18c \ud50c\ub7ec\uc2dc \uc5f0\ub839</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\ubaa9\ud45c \ucd5c\ub300 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\ubaa9\ud45c \ucd5c\ub300 \uc624\ube0c\uc81d\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\ucd94\uac00\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud568</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>\ud558\ub098\uc758 \ud480\uc740 \uc624\uc9c1 \ub124\uac1c\uc758 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc815\uc758\ub4e4\uc744 \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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\' \ubb38\uc790\ub4e4\ub9cc \ud5c8\ub77d\ub428</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\ucd5c\ub300 \uae38\uc774\ub294 128\uae00\uc790\uc774\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\ud544\ud130 \ub610\ub294 \ucd94\uac00\ub41c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>Erasure \ucf54\ub4dc \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\ubcf5\uc81c \ud06c\uae30</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\ub9c8\uc9c0\ub9c9 \ubcc0\uacbd</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Erasure \ucf54\ub4dc\ud654\ub41c \ud504\ub85c\ud30c\uc77c</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>\ud06c\ub7ec\uc26c \ub8f0\uc14b</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\uc4f0\uc5ec\uc9c4 \ubc14\uc774\ud2b8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\uac31\uc2e0\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc5b4 \ubc84\ud0b7 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>\uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubc84\ud0b7 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\ubc84\ud0b7</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\ubc84\ud0b7\ub4e4</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>\uac31\uc2e0\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>\uc0dd\uc131\ub41c \uc624\ube0c\uc81d\ud2b8 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\uc0ac\uc6a9\uc790\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\ubc94\uc704</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\uc77d\uae30</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>\uc0dd\uc131\ub41c \ub864  \'\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>\uac31\uc2e0\ub41c \ub864  \'\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>\uc2dc\uc2a4\ud15c \ub864</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>\uc0ad\uc81c\ub41c \ub864  \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>\uc0dd\uc131\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\uac31\uc2e0\ub41c \uc0ac\uc6a9\uc790</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\uacc4\uc18d</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>\ub2f9\uc2e0\uc758 \ub864\ub4e4\uc774 \ubcc0\uacbd\ub418\uc5b4 \ub2f9\uc2e0\uc740 \uc790\ub3d9\uc801\uc73c\ub85c \ub85c\uadf8\uc544\uc6c3\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</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>\uac31\uc2e0\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\uc0ad\uc81c\ub41c \uc0ac\uc6a9\uc790 &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\uc0ac\uc6a9\uc790 \uc0ad\uc81c\uac00 \uc2e4\ud3d0\ub41c &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>\ub2f9\uc2e0\uc740 \ud604\uc7ac  &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; \ub85c \ub85c\uadf8\uc778\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n        </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>\uac01\uac01\uc758 \uc624\ube0c\uc81d\ud2b8\ub4e4\uc740 \ub370\uc774\ud0c0-\uccad\ud06c \ubd80\ubd84\ub4e4\ub85c \ubd84\ub9ac\ub418\uc5b4, \uac01\uae30 \ub2e4\ub978 OSD\uc5d0 \ubcf4\uad00\ub429\ub2c8\ub2e4.</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>\uac01 \uc624\ube0c\uc81d\ud2b8\ub4e4\uc5d0 \ub300\ud55c \ucf54\ub529 \uccad\ud06c\ub97c \uacc4\uc0b0\ud558\uace0 \uc11c\ub85c \ub2e4\ub978 OSD\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.\n\ucf54\ub529\ub41c \uccad\ud06c\uc758 \uc218\ub294 \ub370\uc774\ud130 \uc190\uc2e4\uc5c6\uc774 \uc791\ub3d9\uc911\uc9c0 \ub418\uc5b4 \uc9c8 \uc218\uc788\ub294 OSD\uc758 \uc22b\uc790\uc774\uae30\ub3c4\ud569\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 \uac00\uc7a5 \uc77c\ubc18\uc801\uc774\uace0 \uc720\uc5f0\ud55c \ud50c\ub7ec\uadf8\uc778\uc73c\ub85c,\n\ub610\ud55c Ceph erasure \ucf54\ub4dc \ud480\uc758 \uae30\ubcf8\uac12\uc774\uae30\ub3c4\ud569\ub2c8\ub2e4.</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>\ubcf4\ub2e4 \uc720\uc5f0\ud55c \uae30\uc220\uc740 reed_sol_van\uc785\ub2c8\ub2e4 : k\uc640 m\uc744 \uc124\uc815\ud558\uba74 \ucda9\ubd84\ud569\ub2c8\ub2e4.\ncauchy_good \uae30\uc220\uc740 \ube60\ub97c \uc218 \uc788\uc9c0\ub9cc \ud328\ud0b7\ud06c\uae30\ub97c \uc8fc\uc758\uae4a\uac8c \uc120\ud0dd\ud574\uc57c\ud569\ub2c8\ub2e4.\nreed_sol_r6_op, liberation, blaum_roth, liber8tion\uc740 \ubaa8\ub450 m = 2\ub85c\ub9cc \uad6c\uc131 \ud560 \uc218 \uc788\ub2e4\ub294 \uc810\uc5d0\uc11c RAID-6\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4.</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>\uc778\ucf54\ub529\uc740 \ud55c\ubc88\uc5d0 \ubc14\uc774\ud2b8\ub4e4 \ud06c\uae30\uc758 \ud328\ud0b7\uc5d0 \ub300\ud574 \uc218\ud589\ub429\ub2c8\ub2e4. \uc62c\ubc14\ub978 \ud328\ud0b7 \ud06c\uae30\ub97c \uc120\ud0dd\ud558\ub294 \uac83\uc740 \uc5b4\ub835\uc2b5\ub2c8\ub2e4. jerasure \ubb38\uc11c\uc5d0\ub294\uc774 \uc8fc\uc81c\uc5d0 \ub300\ud55c \uad11\ubc94\uc704\ud55c \uc815\ubcf4\uac00 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 \uc0ad\uc81c \ub41c \ucf54\ub529 \ub41c \uac1d\uccb4\uac00 \uc5ec\ub7ec OSD\uc5d0 \uc800\uc7a5 \ub420 \ub54c \ud558\ub098\uc758 OSD\uac00 \uc190\uc2e4\ub418\ub294 \uac83\uc744 \ubcf5\uad6c\ud558\ub824\uba74 \ub2e4\ub978 \ubaa8\ub4e0 OSD\ub97c \uc77d\uc5b4\uc57c\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 jerasure\uac00 k = 8 \ubc0f m = 4\ub85c \uad6c\uc131\ub418\uc5b4\uc788\ub294 \uacbd\uc6b0 \ud558\ub098\uc758 OSD\ub97c \uc783\uc5b4 \ubc84\ub9ac\uba74 11 \uba85\uc758 \ub2e4\ub978 \uc0ac\ub78c\ub4e4\uc774 \uc218\ub9ac\ud574\uc57c\ud569\ub2c8\ub2e4.\nlrc erasure code plugin\uc740 \uc801\uc740 \uc591\uc758 OSD\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcf5\uad6c \ud560 \uc218 \uc788\ub3c4\ub85d \ub85c\uceec \ud328\ub9ac\ud2f0 \uccad\ud06c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, lrc\uac00 k = 8, m = 4 \ubc0f l = 4\ub85c \uad6c\uc131\ub41c \uacbd\uc6b0 4 \uac1c\uc758 OSD\ub9c8\ub2e4 \ucd94\uac00 \ud328\ub9ac\ud2f0 \ub369\uc5b4\ub9ac\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \ub2e8\uc77c OSD\uac00 \uc190\uc2e4\ub418\uba74 11 \uac1c \ub300\uc2e0 4 \uac1c\uc758 OSD\ub9cc\uc73c\ub85c \ubcf5\uad6c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\ucf54\ub529 \ubc0f \ub370\uc774\ud130 \uccad\ud06c\ub97c \ud06c\uae30 \uc9c0\uc5ed \uc9d1\ud569\uc73c\ub85c \uadf8\ub8f9\ud654\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, k = 4 \ubc0f m = 2\uc5d0 \ub300\ud574, \uc9c0\uc5ed\uc131 = 3 \uc77c \ub54c \ub450 \uac1c\uc758 \uc138 \uadf8\ub8f9\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uac01 \uc138\ud2b8\ub294 \ub2e4\ub978 \uc138\ud2b8\uc758 \uccad\ud06c\ub97c \uc77d\uc9c0 \uc54a\uace0\ub3c4 \ubcf5\uad6c \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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\ub85c \uc815\uc758 \ub41c \uac01 \uccad\ud06c \uc9d1\ud569\uc774 \uc800\uc7a5\ub418\ub294 \ud06c\ub7ec\uc2dc \ubc84\ud0b7\uc758 \uc720\ud615\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub799\uc73c\ub85c \uc124\uc815\ud558\uba74 l \uac1c\uc758 \uccad\ud06c \uadf8\ub8f9\uc774 \uac01\uac01 \ub2e4\ub978 \ub799\uc5d0 \ubc30\uce58\ub429\ub2c8\ub2e4.\n\ub799 \uc120\ud0dd \ub2e8\uacc4\uc640 \uac19\uc740 CRUSH \uaddc\uce59 \ub2e8\uacc4\ub97c \ub9cc\ub4dc\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74, \uadf8\ub7ec\ud55c \uadf8\ub8f9\ud654\uac00 \uc218\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 ISA \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucea1\uc290\ud654\ud569\ub2c8\ub2e4. \uc778\ud154 \ud504\ub85c\uc138\uc11c\uc5d0\uc11c\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4.</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 \ud50c\ub7ec\uadf8\uc778\uc740 \ub450 \uac1c\uc758 \ub9ac\ub4dc \uc194\ub85c\ubaac \ud615\uc2dd\uc73c\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4.\nreed_sol_van\uc774 \uc124\uc815\ub418\uba74 Vandermonde, cauchy\uac00 \uc124\uc815\ub418\uba74 Cauchy\uc785\ub2c8\ub2e4.</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\uc740 \ub2e4\uc911 SHEC \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucea1\uc290\ud654\ud569\ub2c8\ub2e4.\n\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0 ceph\uac00 \ub9ac\ub4dc \uc194\ub85c\ubaac \ucf54\ub4dc\ubcf4\ub2e4 \ub354 \ud6a8\uc728\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubcf5\uad6c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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>\uac01 \ub370\uc774\ud130 \uccad\ud06c\uac00 \uacc4\uc0b0 \ubc94\uc704\uc5d0 \ud3ec\ud568\ub418\ub294 \ud328\ub9ac\ud2f0 \uccad\ud06c\uc758 \uc218\uc785\ub2c8\ub2e4. \uc774 \uc218\uce58\ub294 \ub0b4\uad6c\uc131 \uce21\uc815\uae30\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, c = 2 \uc778 \uacbd\uc6b0 2 \uac1c\uc758 OSD\uac00 \ub370\uc774\ud130 \uc190\uc2e4\uc5c6\uc774 \uc911\ub2e8 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.</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 \uaddc\uce59\uc758 \uccab \ubc88\uc9f8 \ub2e8\uacc4\uc5d0 \uc0ac\uc6a9 \ub41c \ud06c\ub7ec\uc2dc \ubc84\ud0b7\uc758 \uc774\ub984\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 step\uc740 \uae30\ubcf8\uac12\uc744 \ucde8\ud569\ub2c8\ub2e4.</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>\ub3d9\uc77c\ud55c \uc2e4\ud328 \ub3c4\uba54\uc778\uc744 \uac00\uc9c4 \uc591\ub3d9\uc774\uc5d0 \ub450 \uac1c\uc758 \uccad\ud06c\uac00 \uc5c6\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. \uc608\ub97c \ub4e4\uc5b4 \uc2e4\ud328 \ub3c4\uba54\uc778\uc774 \ud638\uc2a4\ud2b8 \uc778 \uacbd\uc6b0 \ub450 \uac1c\uc758 \uccad\ud06c\uac00 \ub3d9\uc77c\ud55c \ud638\uc2a4\ud2b8\uc5d0 \uc800\uc7a5\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \ub2e8\uacc4\ub294 \ub9ac\ud504 \ud638\uc2a4\ud2b8\ub97c \uc120\ud0dd\ud558\ub294 \ub2e8\uacc4\uc640 \uac19\uc740 CRUSH \uaddc\uce59 \ub2e8\uacc4\ub97c \ub9cc\ub4dc\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.</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\uc9c0\ub3c4\uc5d0\uc11c \ud06c\ub798\uc2dc \uc7a5\uce58 \ud074\ub798\uc2a4 \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud2b9\uc815 \ud074\ub798\uc2a4 (\uc608 : ssd \ub610\ub294 hdd)\uc758 \uc7a5\uce58\ub85c \ubc30\uce58\ub97c \uc81c\ud55c\ud569\ub2c8\ub2e4.</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>\uc0ad\uc81c \ucf54\ub4dc \ud50c\ub7ec\uadf8\uc778\uc774\ub85c\ub4dc\ub418\ub294 \ub514\ub809\ud1a0\ub9ac \uc774\ub984\uc744 \uc124\uc815\ud558\uc2ed\uc2dc\uc624.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\ubaa8\ub4e0 \uc791\uc5c5\ub4e4 \ud5c8\uc6a9</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>\uc624\uc9c1 \uc11c\ubc84\ub97c \uc218\uc815\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\ub4e4\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4.</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>\uc77d\uae30\uc640 \uc4f0\uae30 \uc791\uc5c5\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc9c0\ub9cc, \uadf8\uc678 \ubaa8\ub4e0 \uc791\uc5c5\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.</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>\ud30c\uc77c\uc758 \uc18d\uc131\uacfc \ub514\ub809\ud1a0\ub9ac \ub0b4\uc6a9\uc744 \ubcc0\uacbd\ud558\ub294 \uc77d\uae30, \uc4f0\uae30 \ub610\ub294 \uc5b4\ub5a0\ud55c \uc791\uc5c5\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\uc804\ud600 \uc5b4\ub5a0\ud55c \uc811\uadfc\ub3c4 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \uc6b0\uc120\uc21c\uc704 \uc120\ud0dd --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\ub0ae\uc74c</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\ub192\uc74c</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\ub9c8\uc9c0\ub9c9 5\ubd84</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\uc9c0\ub09c 15\ubd84</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\uc9c0\ub09c 30\ubd84</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\uc9c0\ub09c 1\uc2dc\uac04(\uae30\ubcf8)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\uc9c0\ub09c 3\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\uc9c0\ub09c 6\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\uc9c0\ub09c 12\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\uc9c0\ub09c 24\uc2dc\uac04</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\uc5b4\uc81c</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\uc624\ub298</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\uc624\ub298 \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\uadf8\uc800\uaed8</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\uc9c0\ub09c 2\uc77c</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\uc774\ubc88 \uc8fc \ub9c8\uc9c0\ub9c9\ub0a0</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\uc804\uc8fc</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\uc774\ubc88\uc8fc</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\uc774\ubc88\uc8fc \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\uc9c0\ub09c 7\uc77c</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\uc9c0\ub09c \ub2ec</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\uc774\ubc88 \ub2ec</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\uc774\ubc88 \ub2ec \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\uc9c0\ub09c 30\uc77c</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\uc9c0\ub09c 90\uc77c</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\uc9c0\ub09c 6\uac1c\uc6d4</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\uc9c0\ub09c 1\ub144</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\uc804\ub144\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\uae08\ub144\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\uae08\ub144 \uc9c0\uae08\uae4c\uc9c0</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\uc9c0\ub09c 2\ub144</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\uc9c0\ub09c 5\ub144</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\uc815\ubcf4</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\uc120\ud0dd\ub41c \uc544\uc774\ud15c \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\ub2e4\uc2dc \uc120\ud0dd\ud558\uae30 \uc704\ud574 \uc544\uc774\ud15c \uc120\ud0dd\uc744 \ucde8\uc18c</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\uc120\ud0dd \ud55c\uacc4\uc5d0 \ub3c4\ub2ec\ud568</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\ud544\ud130 \ud14c\uadf8\ub4e4</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\ubca0\ucc0c \ucd94\uac00</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\uc0ac\uc6a9\uac00\ub2a5\ud55c \uc544\uc774\ud15c \uc5c6\uc74c</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\uc608</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\uc544\ub2c8\uc624</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\uc11c\ube44\uc2a4 \ub7c9</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \ud55c\uacc4</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 IO \ubc14\uc774\ud2b8 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 IO \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\uc77d\uae30 BPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc77d\uae30 \ubc14\uc774\uc2a4 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\uc77d\uae30 IOPS \ud55c\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc77d\uae30 \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\uc4f0\uae30 BPS \ud55c\ub3c4</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc4f0\uae30 \ubc14\uc774\ud2b8 \uc218 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\uc4f0\uae30 IOPS \uc81c\ud55c</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\uc6d0\ud558\ub294 \ucd08\ub2f9 \uc4f0\uae30 \uc791\uc5c5 \uc81c\ud55c\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 IO \ubc14\uc774\ud2b8 \ud55c\ub3c4 \uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\uc6d0\ud558\ub294 IO \uc791\uc5c5\uc758 \ubc84\uc2a4\ud2b8 \ud55c\uacc4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\uc77d\uae30 BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\uc6d0\ud558\ub294 \uc77d\uae30 \ubc84\uc2a4\ud2b8 \ud55c\uacc4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\uc77d\uae30 IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\uc6d0\ud558\ub294 \uc77d\uae30 \uc791\uc5c5\uc758 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4\uc785\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\uc4f0\uae30 BPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\uc758 \uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\uc4f0\uae30 IOPS \ubc84\uc2a4\ud2b8</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\uc4f0\uae30 \ubc14\uc774\ud2b8\uc758 \uc6d0\ud558\ub294 \ubc84\uc2a4\ud2b8 \ud55c\ub3c4.</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/> \uc758 \uc2e4\ud3d0\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\uc218\ud589\uc911</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\uc218\ud589</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\uc218\ud589\ub41c</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\uc54c\ub824\uc9c0\uc9c0 \uc54a\ub294 \uc791\uc5c5</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\uc0dd\uc131\ud558\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\uc0dd\uc131</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\uac31\uc2e0 \uc911</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\uac31\uc2e0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\uac31\uc2e0\ub41c</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\uc0ad\uc81c \uc911</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\uc0ad\uc81c\ub3d4</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 \uc2a4\ub0c5\uc0bf  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>\ud480  \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc744 \uc704\ud55c \ubbf8\ub7ec\ubaa8\ub4dc\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>\ud480 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \ubbf8\ub7ec \uc0c1\ub300\ubc29\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>\uc774\ub984\uc740\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\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>\uc774\ub984\uc740\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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>\uc774\ub984\uc774\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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}}"/> \uc774 \ud3ec\ud568\ub41c \uc2a4\ub0c5\uc0bf\ub4e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\ubcf5\uc81c\uc911</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\ubcf5\uc81c</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\ubcf5\uc81c\ub41c</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>\ubc18\ub4dc\uc2dc\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\uc758 \uc2a4\ub0c5\uc0bf\uc740 \ubcf4\ud638\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\ubcf5\uc0ac\uc911</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\ubcf5\uc0ac</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\ubcf5\uc0ac\ub41c</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\ud3c9\ud3c9\ud558\uac8c \ud558\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\ud3c9\ud3c9\ud568</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\ud3c9\ud3c9\ud558\uac8c \ub428</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>\uc774\ub984\uc774\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uc5d0 \uc758\ud558\uc5ec \uc774\ubbf8 \uc0ac\uc6a9 \uc911.\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>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uc744 \ubcf4\ud638\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 \uadf8\uac83\uc740 \uc790\uc2dd \uc774\ubbf8\uc9c0\ub4e4\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4,\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}}"/> \uc744 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 \uadf8\uac83\uc740 \ubcf4\ud638\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\ub864\ubc31 \uc911</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\ub864\ubc31</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\ub864\ubc31\ub428</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\uc62e\uae30\ub294 \uc911</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\uc62e\uae30\uae30</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\uc62e\uaca8\uc9d0</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>\uc774\ubbf8\uc9c0 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \ubc84\ub9ac\uae30\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\uc774\ubbf8\uc9c0\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\ubcf5\uad6c\uc911</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\ubcf5\uad6c</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\ubcf5\uad6c\ub428</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>\uc774\ubbf8\uc9c0 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc744 \'\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\' \ub85c\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>\uc774\ubbf8\uc9c0 \uc774\ub984 \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \uc774 \uc774\ubbf8 \uc0ac\uc6a9\uc911\uc785\ub2c8\ub2e4.\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>\uc774\ubbf8\uc9c0 \'\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>\uc644\uc804\uc0ad\uc81c \uc911</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\uc644\uc804\uc0ad\uc81c</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\uc644\uc804\uc0ad\uc81c\ub428</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\ubaa8\ub4e0 \ud480\ub4e4</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\ub85c \ubd80\ud130\uc758 \uc774\ubbf8\uc9c0\ub4e4\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>\ud53c\uc5b4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ubbf8\ub7ec\ub9c1\uc744 \ube44\ud65c\uc131\ud654 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.</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>\ud480 \'\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 \ucf54\ub4dc \ud504\ub85c\ud30c\uc77c \'\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>\ud0c0\uae43  \'\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>\n'},QC43:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("XFyV"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null)),a["\u0275ncd"](0,0)],function(t,e){t(e,1,0,"info")},null)}},QFaf:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n,a){var r=t.call(this,e,n,a)||this;return r.controls=e,r}return a.__extends(e,t),e.prototype.get=function(t){var e=this._get(t);if(!e)throw new Error("Control '"+t+"' could not be found!");return e},e.prototype._get=function(n){return t.prototype.get.call(this,n)||Object.values(this.controls).filter(function(t){return t.get}).map(function(t){return t instanceof e?t._get(n):t.get(n)}).find(function(t){return Boolean(t)})},e.prototype.getValue=function(t){return this.get(t).value},e.prototype.silentSet=function(t,e){this.get(t).setValue(e,{emitEvent:!1})},e.prototype.showError=function(t,e,n){var a=this.get(t);return(e.submitted||a.dirty)&&(n?a.hasError(n):a.invalid)},e}(n("gIcY").k)},QG5k:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeMenuItemAction=function(t){return t[t.NewFolder=0]="NewFolder",t[t.NewTag=1]="NewTag",t[t.Rename=2]="Rename",t[t.Remove=3]="Remove",t[t.Custom=4]="Custom",t}(e.NodeMenuItemAction||{}),e.NodeMenuAction=function(t){return t[t.Close=0]="Close",t}(e.NodeMenuAction||{})},QGcS:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeDraggableEvent=function(){return function(t,e){this.captured=t,this.target=e}}()},QHrR:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("Y0Co")),a(n("Lwhh")),a(n("8iEZ")),a(n("L5sC"))},QTAa:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("t/zF").a)},Qexa:function(t,e,n){"use strict";t.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},Qgas:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("dC0D"),r=n("AxiF"),i=n("HJBe"),o=n("y3By");function s(t,e){return arguments.length>=2?function(n){return Object(o.a)(Object(a.a)(t,e),Object(r.a)(1),Object(i.a)(e))(n)}:function(e){return Object(o.a)(Object(a.a)(function(e,n,a){return t(e,n,a+1)}),Object(r.a)(1))(e)}}},Qj4J:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}})}()},"R+r5":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("Qgas");function r(t,e,n){return 0===n?[e]:(t.push(e),t)}function i(){return Object(a.a)(r,[])}},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 a(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 a(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return a(t)}return a(t/=1e3)}n("wd/R").defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_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\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_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\xebschter 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 a(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return a(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\xe9int",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},RCHg:function(t,e,n){"use strict";var a=n("wd/R");a="function"==typeof a?a:window.moment;var r=n("CDJp"),i=n("RDha"),o=n("cdu6"),s=n("tjFV"),u=Number.MIN_SAFE_INTEGER||-9007199254740991,l=Number.MAX_SAFE_INTEGER||9007199254740991,c={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}},d=Object.keys(c);function f(t,e){return t-e}function p(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 h(t,e,n,a){var r=function(t,e,n){for(var a,r,i,o=0,s=t.length-1;o>=0&&o<=s;){if(i=t[a=o+s>>1],!(r=t[a-1]||null))return{lo:null,hi:i};if(i[e]<n)o=a+1;else{if(!(r[e]>n))return{lo:r,hi:i};s=a-1}}return{lo:i,hi:null}}(t,e,n),i=r.lo?r.hi?r.lo:t[t.length-2]:t[0],o=r.lo?r.hi?r.hi:t[t.length-1]:t[1],s=o[e]-i[e];return i[a]+(o[a]-i[a])*(s?(n-i[e])/s:0)}function g(t,e){var n=e.parser,r=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof r?a(t,r):(t instanceof a||(t=a(t)),t.isValid()?t:"function"==typeof r?r(t):t)}function m(t,e){if(i.isNullOrUndef(t))return null;var n=e.options.time,a=g(e.getRightValue(t),n);return a.isValid()?(n.round&&a.startOf(n.round),a.valueOf()):null}function b(t){for(var e=d.indexOf(t)+1,n=d.length;e<n;++e)if(c[d[e]].common)return d[e]}t.exports=function(){var t=o.extend({initialize:function(){if(!a)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),o.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),o.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),o.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,r,o,s,c=this,d=c.chart,h=c.options.time,g=h.unit||"day",b=l,y=u,v=[],_=[],x=[];for(t=0,n=d.data.labels.length;t<n;++t)x.push(m(d.data.labels[t],c));for(t=0,n=(d.data.datasets||[]).length;t<n;++t)if(d.isDatasetVisible(t))if(i.isObject((o=d.data.datasets[t].data)[0]))for(_[t]=[],e=0,r=o.length;e<r;++e)s=m(o[e],c),v.push(s),_[t][e]=s;else v.push.apply(v,x),_[t]=x.slice(0);else _[t]=[];x.length&&(x=p(x).sort(f),b=Math.min(b,x[0]),y=Math.max(y,x[x.length-1])),v.length&&(v=p(v).sort(f),b=Math.min(b,v[0]),y=Math.max(y,v[v.length-1])),b=m(h.min,c)||b,y=m(h.max,c)||y,b=b===l?+a().startOf(g):b,y=y===u?+a().endOf(g)+1:y,c.min=Math.min(b,y),c.max=Math.max(b+1,y),c._horizontal=c.isHorizontal(),c._table=[],c._timestamps={data:v,datasets:_,labels:x}},buildTicks:function(){var t,e,n,r=this,o=r.min,s=r.max,u=r.options,f=u.time,p=[],y=[];switch(u.ticks.source){case"data":p=r._timestamps.data;break;case"labels":p=r._timestamps.labels;break;case"auto":default:p=function(t,e,n,r){var o,s=r.time,u=s.unit||function(t,e,n,a){var r,i,o=d.length;for(r=d.indexOf(s.minUnit);r<o-1;++r)if((i=c[d[r]]).common&&Math.ceil((n-e)/((i.steps?i.steps[i.steps.length-1]:l)*i.size))<=a)return d[r];return d[o-1]}(0,t,e,n),f=b(u),p=i.valueOrDefault(s.stepSize,s.unitStepSize),h="week"===u&&s.isoWeekday,g=r.ticks.major.enabled,m=c[u],y=a(t),v=a(e),_=[];for(p||(p=function(t,e,n,a){var r,i,o,s=e-t,l=c[u],d=l.size,f=l.steps;if(!f)return Math.ceil(s/(a*d));for(r=0,i=f.length;r<i&&(o=f[r],!(Math.ceil(s/(d*o))<=a));++r);return o}(t,e,0,n)),h&&(y=y.isoWeekday(h),v=v.isoWeekday(h)),y=y.startOf(h?"day":u),(v=v.startOf(h?"day":u))<e&&v.add(1,u),o=a(y),g&&f&&!h&&!s.round&&(o.startOf(f),o.add(~~((y-o)/(m.size*p))*p,u));o<v;o.add(p,u))_.push(+o);return _.push(+o),_}(o,s,r.getLabelCapacity(o),u)}for("ticks"===u.bounds&&p.length&&(o=p[0],s=p[p.length-1]),o=m(f.min,r)||o,s=m(f.max,r)||s,t=0,e=p.length;t<e;++t)(n=p[t])>=o&&n<=s&&y.push(n);return r.min=o,r.max=s,r._unit=f.unit||function(t,e,n,i){var o,s,u=a.duration(a(r.max).diff(a(n)));for(o=d.length-1;o>=d.indexOf(e);o--)if(c[s=d[o]].common&&u.as(s)>=t.length)return s;return d[e?d.indexOf(e):0]}(y,f.minUnit,r.min),r._majorUnit=b(r._unit),r._table=function(t,e,n,a){if("linear"===u.distribution||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,i,o,s,l,c=[],d=[e];for(r=0,i=t.length;r<i;++r)(s=t[r])>e&&s<n&&d.push(s);for(d.push(n),r=0,i=d.length;r<i;++r)l=d[r+1],s=d[r],void 0!==(o=d[r-1])&&void 0!==l&&Math.round((l+o)/2)===s||c.push({time:s,pos:r/(i-1)});return c}(r._timestamps.data,o,s),r._offsets=function(t,e,n,a,r){var i,o=0,s=0;return r.offset&&e.length&&(r.time.min||(i=e[0],o=(h(t,"time",e.length>1?e[1]:a,"pos")-h(t,"time",i,"pos"))/2),r.time.max||(i=e.length>1?e[e.length-2]:n,s=(h(t,"time",e[e.length-1],"pos")-h(t,"time",i,"pos"))/2)),{left:o,right:s}}(r._table,y,o,s,u),r._labelFormat=function(t,e){var n,a,r,i=t.length;for(n=0;n<i;n++){if(0!==(a=g(t[n],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===a.second()&&0===a.minute()&&0===a.hour()||(r=!0)}return r?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(r._timestamps.data,f),function(t,e){var n,r,i,o,s=[];for(n=0,r=t.length;n<r;++n)i=t[n],o=!!e&&i===+a(i).startOf(e),s.push({value:i,major:o});return s}(y,r._majorUnit)},getLabelForIndex:function(t,e){var n=this.chart.data,a=this.options.time,r=n.labels&&t<n.labels.length?n.labels[t]:"",o=n.datasets[e].data[t];return i.isObject(o)&&(r=this.getRightValue(o)),a.tooltipFormat?g(r,a).format(a.tooltipFormat):"string"==typeof r?r:g(r,a).format(this._labelFormat)},tickFormatFunction:function(t,e,n,a){var r=this.options,o=t.valueOf(),s=r.time.displayFormats,u=s[this._unit],l=this._majorUnit,c=s[l],d=t.clone().startOf(l).valueOf(),f=r.ticks.major,p=f.enabled&&l&&c&&o===d,h=t.format(a||(p?c:u)),g=p?f:r.ticks.minor,m=i.valueOrDefault(g.callback,g.userCallback);return m?m(h,e,n):h},convertTicksToLabels:function(t){var e,n,r=[];for(e=0,n=t.length;e<n;++e)r.push(this.tickFormatFunction(a(t[e].value),e,t));return r},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,a=e._horizontal?e.left:e.top,r=h(e._table,"time",t,"pos");return a+n*(e._offsets.left+r)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var a=null;if(void 0!==e&&void 0!==n&&(a=this._timestamps.datasets[n][e]),null===a&&(a=m(t,this)),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,r=h(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,"time");return a(r)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,a=i.toRadians(e.maxRotation),o=Math.cos(a),s=Math.sin(a);return n*o+i.valueOrDefault(e.fontSize,r.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,r=e.tickFormatFunction(a(t),0,[],n),i=e.getLabelWidth(r),o=e.isHorizontal()?e.width:e.height,s=Math.floor(o/i);return s>0?s:1}});s.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{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"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},RDha:function(t,e,n){"use strict";t.exports=n("TC34"),t.exports.easing=n("u0Op"),t.exports.canvas=n("Sfow"),t.exports.options=n("As3K")},RnPR:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Keys=function(t){return t[t.up=38]="up",t[t.down=40]="down",t[t.return=13]="return",t[t.escape=27]="escape",t[t.left=37]="left",t[t.right=39]="right",t}(e.Keys||{})},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){var e=a[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="RnhZ"},S1nX:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("xlPZ"),r=n("yGWI"),i=n("K9Ia");function o(){return new i.a}function s(){return function(t){return Object(r.a)()(Object(a.a)(o)(t))}}},"S3/U":function(t,e,n){"use strict";t.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},S5XQ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("DKTb"),r=function(t){return function(e){return t.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,a.a),e}}},S5bw:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("K9Ia"),i=n("zo3G"),o=n("pugT"),s=n("mZXl"),u=n("8g8A"),l=n("uMaO"),c=function(t){function e(e,n,a){void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=Number.POSITIVE_INFINITY);var r=t.call(this)||this;return r.scheduler=a,r._events=[],r._infiniteTimeWindow=!1,r._bufferSize=e<1?1:e,r._windowTime=n<1?1:n,n===Number.POSITIVE_INFINITY?(r._infiniteTimeWindow=!0,r.next=r.nextInfiniteTimeWindow):r.next=r.nextTimeWindow,r}return a.__extends(e,t),e.prototype.nextInfiniteTimeWindow=function(e){var n=this._events;n.push(e),n.length>this._bufferSize&&n.shift(),t.prototype.next.call(this,e)},e.prototype.nextTimeWindow=function(e){this._events.push(new d(this._getNow(),e)),this._trimBufferThenGetEvents(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){var e,n=this._infiniteTimeWindow,a=n?this._events:this._trimBufferThenGetEvents(),r=this.scheduler,i=a.length;if(this.closed)throw new u.a;if(this.isStopped||this.hasError?e=o.a.EMPTY:(this.observers.push(t),e=new l.a(this,t)),r&&t.add(t=new s.a(t,r)),n)for(var c=0;c<i&&!t.closed;c++)t.next(a[c]);else for(c=0;c<i&&!t.closed;c++)t.next(a[c].value);return this.hasError?t.error(this.thrownError):this.isStopped&&t.complete(),e},e.prototype._getNow=function(){return(this.scheduler||i.a).now()},e.prototype._trimBufferThenGetEvents=function(){for(var t=this._getNow(),e=this._bufferSize,n=this._windowTime,a=this._events,r=a.length,i=0;i<r&&!(t-a[i].time<n);)i++;return r>e&&(i=Math.max(i,r-e)),i>0&&a.splice(0,i),a},e}(r.a),d=function(){return function(t,e){this.time=t,this.value=e}}()},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")}}n("wd/R").defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] 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}})}()},S7Ns:function(t,e,n){"use strict";t.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},S7zO:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=(n("vCyI"),n("jKX/"),function(){function t(){this.dropDownActions=[]}return t.prototype.ngOnInit=function(){this.removeActionsWithNoPermissions(),this.updateDropDownActions()},t.prototype.toClassName=function(t){return t.replace(/ /g,"-").replace(/[^a-z-]/gi,"").toLowerCase()},t.prototype.removeActionsWithNoPermissions=function(){var t=this;if(this.permission){var e=Object.keys(this.permission).filter(function(e){return t.permission[e]});this.tableActions=this.tableActions.filter(function(t){return e.includes(t.permission)})}else this.tableActions=[]},t.prototype.updateDropDownActions=function(){var t=this;this.dropDownActions=this.tableActions.filter(function(e){return e.visible?e.visible(t.selection):e})},t.prototype.getCurrentButton=function(){var t=this;if(!this.onlyDropDown){var e=this.dropDownActions.find(function(e){return t.showableAction(e)});return!e&&this.dropDownActions.length>0&&(e=this.dropDownActions[0]),e}},t.prototype.showableAction=function(t){var e=t.canBePrimary,n=this.selection.hasSingleSelection,a="create"===t.permission?!n:n;return e&&e(this.selection)||!e&&a},t.prototype.useRouterLink=function(t){if(t.routerLink&&!this.disableSelectionAction(t))return a.isString(t.routerLink)?t.routerLink:t.routerLink()},t.prototype.disableSelectionAction=function(t){var e=t.permission,n=t.disable;if(n)return Boolean(n(this.selection));var a=this.selection.hasSingleSelection&&this.selection.first();return Boolean(["update","delete"].includes(e)&&(!a||a.cdExecuting))},t.prototype.showDropDownActions=function(){return this.updateDropDownActions(),this.dropDownActions.length>1},t.prototype.useClickAction=function(t){return!this.disableSelectionAction(t)&&t.click&&t.click()},t.prototype.useDisableDesc=function(t){return t.disableDesc&&t.disableDesc()},t}())},"SB+Q":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return encodeURIComponent(t)},t}()},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:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};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\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".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\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(t){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gec\u0259":t<12?"s\u0259h\u0259r":t<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(t){if(0===t)return t+"-\u0131nc\u0131";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"))},STEd:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n("FBEI");var a=n("CcnG"),r=n("xtUU"),i=n("HHO+"),o=n("Ip0R"),s=n("/TVo"),u=n("urB8"),l=n("ty8c"),c=n("FYBg"),d=n("JZ5S"),f=n("Tff5"),p=n("VUo1");e.TreeModule=function(){function t(){}return t.decorators=[{type:a.NgModule,args:[{imports:[o.CommonModule],declarations:[s.NodeDraggableDirective,r.TreeComponent,l.NodeEditableDirective,c.NodeMenuComponent,i.TreeInternalComponent,p.SafeHtmlPipe],exports:[r.TreeComponent],providers:[u.NodeDraggableService,d.NodeMenuService,f.TreeService]}]}],t}()},SZbH:function(t,e,n){"use strict";n.d(e,"d",function(){return u}),n.d(e,"c",function(){return _}),n.d(e,"j",function(){return v}),n.d(e,"g",function(){return l}),n.d(e,"b",function(){return d}),n.d(e,"a",function(){return x}),n.d(e,"i",function(){return T}),n.d(e,"h",function(){return w}),n.d(e,"e",function(){return S}),n.d(e,"f",function(){return C});var a=n("ZYjt"),r=n("K9Ia"),i=n("mrSG"),o=n("Ip0R"),s=n("CcnG"),u=function(){return function(){}}(),l=function(){function t(t,e,n,a,i,o){var s=this;this.toastId=t,this.config=e,this.message=n,this.title=a,this.toastType=i,this.toastRef=o,this._onTap=new r.a,this._onAction=new r.a,this.toastRef.afterClosed().subscribe(function(){s._onAction.complete(),s._onTap.complete()})}return t.prototype.triggerTap=function(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()},t.prototype.onTap=function(){return this._onTap.asObservable()},t.prototype.triggerAction=function(t){this._onAction.next(t)},t.prototype.onAction=function(){return this._onAction.asObservable()},t}(),c={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 s.InjectionToken("ToastConfig"),f=function(){function t(t,e){this.component=t,this.injector=e}return t.prototype.attach=function(t,e){return this._attachedHost=t,t.attach(this,e)},t.prototype.detach=function(){var t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()},Object.defineProperty(t.prototype,"isAttached",{get:function(){return null!=this._attachedHost},enumerable:!0,configurable:!0}),t.prototype.setAttachedHost=function(t){this._attachedHost=t},t}(),p=function(t){function e(e,n,a){var r=t.call(this)||this;return r._hostDomElement=e,r._componentFactoryResolver=n,r._appRef=a,r}return Object(i.__extends)(e,t),e.prototype.attachComponentPortal=function(t,e){var n,a=this,r=this._componentFactoryResolver.resolveComponentFactory(t.component);return n=r.create(t.injector),this._appRef.attachView(n.hostView),this.setDisposeFn(function(){a._appRef.detachView(n.hostView),n.destroy()}),e?this._hostDomElement.insertBefore(this._getComponentRootNode(n),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(n)),n},e.prototype._getComponentRootNode=function(t){return t.hostView.rootNodes[0]},e}(function(){function t(){}return t.prototype.attach=function(t,e){return this._attachedPortal=t,this.attachComponentPortal(t,e)},t.prototype.detach=function(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)},t.prototype.setDisposeFn=function(t){this._disposeFn=t},t}()),h=function(){function t(t){this._document=t}return t.prototype.ngOnDestroy=function(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)},t.prototype.getContainerElement=function(){return this._containerElement||this._createContainer(),this._containerElement},t.prototype._createContainer=function(){var t=this._document.createElement("div");t.classList.add("overlay-container"),this._document.body.appendChild(t),this._containerElement=t},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(o.DOCUMENT))},token:t,providedIn:"root"}),t}(),g=function(){function t(t){this._portalHost=t}return t.prototype.attach=function(t,e){return void 0===e&&(e=!0),this._portalHost.attach(t,e)},t.prototype.detach=function(){return this._portalHost.detach()},t}(),m=function(){function t(t,e,n,a){this._overlayContainer=t,this._componentFactoryResolver=e,this._appRef=n,this._document=a,this._paneElements=new Map}return t.prototype.create=function(t,e){return this._createOverlayRef(this.getPaneElement(t,e))},t.prototype.getPaneElement=function(t,e){return void 0===t&&(t=""),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]},t.prototype._createPaneElement=function(t,e){var 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},t.prototype._createPortalHost=function(t){return new p(t,this._componentFactoryResolver,this._appRef)},t.prototype._createOverlayRef=function(t){return new g(this._createPortalHost(t))},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(h),Object(s.inject)(s.ComponentFactoryResolver),Object(s.inject)(s.ApplicationRef),Object(s.inject)(o.DOCUMENT))},token:t,providedIn:"root"}),t}(),b=function(){function t(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}return t.prototype.manualClose=function(){this._manualClose.next(),this._manualClose.complete()},t.prototype.manualClosed=function(){return this._manualClose.asObservable()},t.prototype.timeoutReset=function(){return this._resetTimeout.asObservable()},t.prototype.countDuplicate=function(){return this._countDuplicate.asObservable()},t.prototype.close=function(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()},t.prototype.afterClosed=function(){return this._afterClosed.asObservable()},t.prototype.isInactive=function(){return this._activate.isStopped},t.prototype.activate=function(){this._activate.next(),this._activate.complete()},t.prototype.afterActivate=function(){return this._activate.asObservable()},t.prototype.onDuplicate=function(t,e){t&&this._resetTimeout.next(),e&&this._countDuplicate.next(++this.duplicatesCount)},t}(),y=function(){function t(t,e){this._toastPackage=t,this._parentInjector=e}return t.prototype.get=function(t,e,n){return t===l?this._toastPackage:this._parentInjector.get(t,e,n)},t}(),v=function(){function t(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(i.__assign)({},t.default,t.config),t.config.iconClasses&&(this.toastrConfig.iconClasses=Object(i.__assign)({},t.default.iconClasses,t.config.iconClasses))}return t.prototype.show=function(t,e,n,a){return void 0===n&&(n={}),void 0===a&&(a=""),this._preBuildNotification(a,t,e,this.applyConfig(n))},t.prototype.success=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.success||"",t,e,this.applyConfig(n))},t.prototype.error=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.error||"",t,e,this.applyConfig(n))},t.prototype.info=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.info||"",t,e,this.applyConfig(n))},t.prototype.warning=function(t,e,n){return void 0===n&&(n={}),this._preBuildNotification(this.toastrConfig.iconClasses.warning||"",t,e,this.applyConfig(n))},t.prototype.clear=function(t){var e,n;try{for(var a=Object(i.__values)(this.toasts),r=a.next();!r.done;r=a.next()){var o=r.value;if(void 0!==t){if(o.toastId===t)return void o.toastRef.manualClose()}else o.toastRef.manualClose()}}catch(s){e={error:s}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}},t.prototype.remove=function(t){var 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]){var n=this.toasts[this.currentlyActive].toastRef;n.isInactive()||(this.currentlyActive=this.currentlyActive+1,n.activate())}return!0},t.prototype.findDuplicate=function(t,e,n){for(var a=0;a<this.toasts.length;a++){var r=this.toasts[a];if(r.message===t)return r.toastRef.onDuplicate(e,n),r}return null},t.prototype.applyConfig=function(t){return void 0===t&&(t={}),Object(i.__assign)({},this.toastrConfig,t)},t.prototype._findToast=function(t){for(var e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===t)return{index:e,activeToast:this.toasts[e]};return null},t.prototype._preBuildNotification=function(t,e,n,a){var r=this;return a.onActivateTick?this.ngZone.run(function(){return r._buildNotification(t,e,n,a)}):this._buildNotification(t,e,n,a)},t.prototype._buildNotification=function(t,e,n,a){var r=this;if(!a.toastComponent)throw new Error("toastComponent required");var i=this.findDuplicate(e,this.toastrConfig.resetTimeoutOnDuplicate,this.toastrConfig.countDuplicates);if(e&&this.toastrConfig.preventDuplicates&&null!==i)return i;this.previousToastMessage=e;var o=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(o=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));var u=this.overlay.create(a.positionClass,this.overlayContainer);this.index=this.index+1;var c=e;e&&a.enableHtml&&(c=this.sanitizer.sanitize(s.SecurityContext.HTML,e));var d=new b(u),p=new l(this.index,a,c,n,t,d),h=new y(p,this._injector),g=new f(a.toastComponent,h),m=u.attach(g,this.toastrConfig.newestOnTop);d.componentInstance=m._component;var v={toastId:this.index,message:e||"",toastRef:d,onShown:d.afterActivate(),onHidden:d.afterClosed(),onTap:p.onTap(),onAction:p.onAction(),portal:m};return o||setTimeout(function(){v.toastRef.activate(),r.currentlyActive=r.currentlyActive+1}),this.toasts.push(v),v},t.ngInjectableDef=Object(s.defineInjectable)({factory:function(){return new t(Object(s.inject)(d),Object(s.inject)(m),Object(s.inject)(s.INJECTOR),Object(s.inject)(a.DomSanitizer),Object(s.inject)(s.NgZone))},token:t,providedIn:"root"}),t}(),_=function(){function t(t,e,n){var a=this;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(function(){a.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(function(){a.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(function(){a.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(function(t){a.duplicatesCount=t})}return Object.defineProperty(t.prototype,"displayStyle",{get:function(){return"inactive"===this.state.value?"none":"inherit"},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)},t.prototype.activateToast=function(){var t=this;this.state=Object(i.__assign)({},this.state,{value:"active"}),!this.options.disableTimeOut&&this.options.timeOut&&(this.outsideTimeout(function(){return t.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(function(){return t.updateProgress()},10))},t.prototype.updateProgress=function(){if(0!==this.width&&100!==this.width&&this.options.timeOut){var 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)}},t.prototype.resetTimeout=function(){var t=this;clearTimeout(this.timeout),clearInterval(this.intervalId),this.state=Object(i.__assign)({},this.state,{value:"active"}),this.outsideTimeout(function(){return t.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(function(){return t.updateProgress()},10)},t.prototype.remove=function(){var t=this;"removed"!==this.state.value&&(clearTimeout(this.timeout),this.state=Object(i.__assign)({},this.state,{value:"removed"}),this.outsideTimeout(function(){return t.toastrService.remove(t.toastPackage.toastId)},+this.toastPackage.config.easeTime))},t.prototype.tapToast=function(){"removed"!==this.state.value&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())},t.prototype.stickAround=function(){"removed"!==this.state.value&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)},t.prototype.delayedHideToast=function(){var t=this;this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state.value||(this.outsideTimeout(function(){return t.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(function(){return t.updateProgress()},10))},t.prototype.outsideTimeout=function(t,e){var n=this;this.ngZone?this.ngZone.runOutsideAngular(function(){return n.timeout=setTimeout(function(){return n.runInsideAngular(t)},e)}):this.timeout=setTimeout(function(){return t()},e)},t.prototype.outsideInterval=function(t,e){var n=this;this.ngZone?this.ngZone.runOutsideAngular(function(){return n.intervalId=setInterval(function(){return n.runInsideAngular(t)},e)}):this.intervalId=setInterval(function(){return t()},e)},t.prototype.runInsideAngular=function(t){this.ngZone?this.ngZone.run(function(){return t()}):t()},t}(),x=Object(i.__assign)({},c,{toastComponent:_}),T=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:d,useValue:{default:x,config:e}}]}},t}(),w=function(){function t(){}return t.forRoot=function(t){return void 0===t&&(t={}),{ngModule:T,providers:[{provide:d,useValue:{default:c,config:t}}]}},t}(),S=function(){function t(t,e,n){var a=this;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(function(){a.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(function(){a.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(function(){a.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(function(t){a.duplicatesCount=t})}return Object.defineProperty(t.prototype,"displayStyle",{get:function(){return"inactive"===this.state?"none":"inherit"},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)},t.prototype.activateToast=function(){var t=this;this.state="active",!this.options.disableTimeOut&&this.options.timeOut&&(this.timeout=setTimeout(function(){t.remove()},this.options.timeOut),this.hideTime=(new Date).getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(function(){return t.updateProgress()},10))),this.options.onActivateTick&&this.appRef.tick()},t.prototype.updateProgress=function(){if(0!==this.width&&100!==this.width&&this.options.timeOut){var 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)}},t.prototype.resetTimeout=function(){var t=this;clearTimeout(this.timeout),clearInterval(this.intervalId),this.state="active",this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(function(){return t.remove()},this.originalTimeout),this.hideTime=(new Date).getTime()+(this.originalTimeout||0),this.width=-1,this.options.progressBar&&(this.intervalId=setInterval(function(){return t.updateProgress()},10))},t.prototype.remove=function(){var t=this;"removed"!==this.state&&(clearTimeout(this.timeout),this.state="removed",this.timeout=setTimeout(function(){return t.toastrService.remove(t.toastPackage.toastId)}))},t.prototype.tapToast=function(){"removed"!==this.state&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())},t.prototype.stickAround=function(){"removed"!==this.state&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width=0)},t.prototype.delayedHideToast=function(){var t=this;this.options.disableTimeOut||0===this.options.extendedTimeOut||"removed"===this.state||(this.timeout=setTimeout(function(){return t.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(function(){return t.updateProgress()},10)))},t}(),O=Object(i.__assign)({},c,{toastComponent:S}),C=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:d,useValue:{default:O,config:e}}]}},t}()},SatO:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}()},SfHT:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.ScrollerComponent=function(){function t(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new i.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this.element=e.nativeElement}return t.prototype.ngOnInit=function(){if(this.scrollbarV||this.scrollbarH){var t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this.parentElement.addEventListener("scroll",this.onScrolled.bind(this))}},t.prototype.ngOnDestroy=function(){(this.scrollbarV||this.scrollbarH)&&this.parentElement.removeEventListener("scroll",this.onScrolled.bind(this))},t.prototype.setOffset=function(t){this.parentElement&&(this.parentElement.scrollTop=t)},t.prototype.onScrolled=function(t){var e=this,n=t.currentTarget;requestAnimationFrame(function(){e.scrollYPos=n.scrollTop,e.scrollXPos=n.scrollLeft,e.updateOffset()})},t.prototype.updateOffset=function(){var 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},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollHeight",void 0),a([i.HostBinding("style.width.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Component({selector:"datatable-scroller",template:"\n    <ng-content></ng-content>\n  ",host:{class:"datatable-scroll"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},Sfow:function(t,e,n){"use strict";var a=n("TC34");e=t.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,a,r,i){if(i){var o=Math.min(i,r/2-1e-7,a/2-1e-7);t.moveTo(e+o,n),t.lineTo(e+a-o,n),t.arcTo(e+a,n,e+a,n+o,o),t.lineTo(e+a,n+r-o),t.arcTo(e+a,n+r,e+a-o,n+r,o),t.lineTo(e+o,n+r),t.arcTo(e,n+r,e,n+r-o,o),t.lineTo(e,n+o),t.arcTo(e,n,e+o,n,o),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,a,r)},drawPoint:function(t,e,n,a,r,i){var o,s,u,l,c,d;if(i=i||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(t.save(),t.translate(a,r),t.rotate(i*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,n,0,2*Math.PI),t.closePath();break;case"triangle":c=(s=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,c/3),t.lineTo(s/2,c/3),t.lineTo(0,-2*c/3),t.closePath();break;case"rect":d=1/Math.SQRT2*n,t.rect(-d,-d,2*d,2*d);break;case"rectRounded":var f=n/Math.SQRT2,p=Math.SQRT2*n;this.roundedRect(t,-f,-f,p,p,.425*n);break;case"rectRot":d=1/Math.SQRT2*n,t.moveTo(-d,0),t.lineTo(0,d),t.lineTo(d,0),t.lineTo(0,-d),t.closePath();break;case"cross":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0);break;case"crossRot":u=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(-u,-l),t.lineTo(u,l),t.moveTo(-u,l),t.lineTo(u,-l);break;case"star":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0),u=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(-u,-l),t.lineTo(u,l),t.moveTo(-u,l),t.lineTo(u,-l);break;case"line":t.moveTo(-n,0),t.lineTo(n,0);break;case"dash":t.moveTo(0,0),t.lineTo(n,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,a-e.width/2,r-e.height/2,e.width,e.height)},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){if(n.steppedLine)return"after"===n.steppedLine&&!a||"after"!==n.steppedLine&&a?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);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)}},a.clear=e.clear,a.drawRoundedRectangle=function(t){t.beginPath(),e.roundedRect.apply(e,arguments)}},SgmB:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("F/XL"),r=n("psW0"),i=n("CcnG"),o=n("t/Na"),s=n("pL04"),u=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/role")},t.prototype.delete=function(t){return this.http.delete("api/role/"+t)},t.prototype.get=function(t){return this.http.get("api/role/"+t)},t.prototype.create=function(t){return this.http.post("api/role",t)},t.prototype.update=function(t){return this.http.put("api/role/"+t.name,t)},t.prototype.exists=function(t){return this.list().pipe(Object(r.a)(function(e){var n=e.some(function(e){return e.name===t});return Object(a.a)(n)}))},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.c))},token:t,providedIn:s.a}),t}()},SjWX:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=function(){return function(t,e,n){this.name=t,this.version=e,this.os=n}}();e.BrowserInfo=a;var r=function(){return function(t){this.version=t,this.name="node",this.os=process.platform}}();e.NodeInfo=r;var i=function(){return function(){this.bot=!0,this.name="bot",this.version=null,this.os=null}}();e.BotInfo=i;var o=3,s=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["vivaldi",/Vivaldi\/([0-9\.]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["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/],["searchbot",/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/]],u=[["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/],["Search Bot",/(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves\/Teoma)|(ia_archiver)/]];function l(t){var e=""!==t&&s.reduce(function(e,n){var a=n[0];if(e)return e;var r=n[1].exec(t);return!!r&&[a,r]},!1);if(!e)return null;var n=e[0],r=e[1];if("searchbot"===n)return new i;var u=r[1]&&r[1].split(/[._]/).slice(0,3);return u?u.length<o&&(u=u.concat(function(t){for(var e=[],n=0;n<t;n++)e.push("0");return e}(o-u.length))):u=[],new a(n,u.join("."),c(t))}function c(t){for(var e=0,n=u.length;e<n;e++){var a=u[e],r=a[0];if(a[1].test(t))return r}return null}function d(){return"undefined"!=typeof process&&process.version?new r(process.version.slice(1)):null}e.detect=function(){return"undefined"!=typeof navigator?l(navigator.userAgent):d()},e.parseUserAgent=l,e.detectOS=c,e.getNodeVersion=d},T016:function(t,e,n){"use strict";t.exports={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]}},T1DM:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("h9Dq"),r=new(n("CS9Q").a)(a.a)},TC34:function(t,e,n){"use strict";var a,r={noop:function(){},uid:(a=0,function(){return a++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return r.valueOrDefault(r.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 i,o,s;if(r.isArray(t))if(o=t.length,a)for(i=o-1;i>=0;i--)e.call(n,t[i],i);else for(i=0;i<o;i++)e.call(n,t[i],i);else if(r.isObject(t))for(o=(s=Object.keys(t)).length,i=0;i<o;i++)e.call(n,t[s[i]],s[i])},arrayEquals:function(t,e){var n,a,i,o;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(o=e[n],(i=t[n])instanceof Array&&o instanceof Array){if(!r.arrayEquals(i,o))return!1}else if(i!==o)return!1;return!0},clone:function(t){if(r.isArray(t))return t.map(r.clone);if(r.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,i=0;i<a;++i)e[n[i]]=r.clone(t[n[i]]);return e}return t},_merger:function(t,e,n,a){var i=e[t],o=n[t];r.isObject(i)&&r.isObject(o)?r.merge(i,o,a):e[t]=r.clone(o)},_mergerIf:function(t,e,n){var a=e[t],i=n[t];r.isObject(a)&&r.isObject(i)?r.mergeIf(a,i):e.hasOwnProperty(t)||(e[t]=r.clone(i))},merge:function(t,e,n){var a,i,o,s,u,l=r.isArray(e)?e:[e],c=l.length;if(!r.isObject(t))return t;for(a=(n=n||{}).merger||r._merger,i=0;i<c;++i)if(r.isObject(e=l[i]))for(u=0,s=(o=Object.keys(e)).length;u<s;++u)a(o[u],t,e,n);return t},mergeIf:function(t,e){return r.merge(t,e,{merger:r._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,a=arguments.length;n<a;++n)r.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=r.inherits,t&&r.extend(n.prototype,t),n.__super__=e.prototype,n}};t.exports=r,r.callCallback=r.callback,r.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},r.getValueOrDefault=r.valueOrDefault,r.getValueAtIndexOrDefault=r.valueAtIndexOrDefault},TCh0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=e.Keys=function(t){return t[t.Escape=27]="Escape",t}(e.Keys||{}),r=e.MouseButtons=function(t){return t[t.Left=0]="Left",t[t.Right=2]="Right",t}(e.MouseButtons||{});e.isLeftButtonClicked=function(t){return t.button===r.Left},e.isRightButtonClicked=function(t){return t.button===r.Right},e.isEscapePressed=function(t){return t.keyCode===a.Escape}},TYzs:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){var 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")},t}()},TZo1:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("9Kw/"),n("Jm/i"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[".info-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.info-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","info"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","info-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-info-circle alert-info"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","info-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","info-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,1,0,"info")},function(t,e){t(e,8,0,e.component.title)})}},Tff5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("VE89"),r=n("buEt"),i=n("CcnG"),o=(n("urB8"),n("kQXf"));e.TreeService=function(){function t(t){this.nodeDraggableService=t,this.nodeMoved$=new r.Subject,this.nodeRemoved$=new r.Subject,this.nodeRenamed$=new r.Subject,this.nodeCreated$=new r.Subject,this.nodeSelected$=new r.Subject,this.nodeUnselected$=new r.Subject,this.nodeExpanded$=new r.Subject,this.nodeCollapsed$=new r.Subject,this.menuItemSelected$=new r.Subject,this.loadNextLevel$=new r.Subject,this.nodeChecked$=new r.Subject,this.nodeUnchecked$=new r.Subject,this.nodeIndetermined$=new r.Subject,this.controllers=new Map,this.nodeRemoved$.subscribe(function(t){return t.node.removeItselfFromParent()})}return t.prototype.unselectStream=function(t){return this.nodeSelected$.filter(function(e){return t!==e.node})},t.prototype.fireNodeRemoved=function(t){this.nodeRemoved$.next(new a.NodeRemovedEvent(t,t.positionInParent))},t.prototype.fireNodeCreated=function(t){this.nodeCreated$.next(new a.NodeCreatedEvent(t))},t.prototype.fireNodeSelected=function(t){this.nodeSelected$.next(new a.NodeSelectedEvent(t))},t.prototype.fireNodeUnselected=function(t){this.nodeUnselected$.next(new a.NodeUnselectedEvent(t))},t.prototype.fireNodeRenamed=function(t,e){this.nodeRenamed$.next(new a.NodeRenamedEvent(e,t,e.value))},t.prototype.fireNodeMoved=function(t,e){this.nodeMoved$.next(new a.NodeMovedEvent(t,e))},t.prototype.fireMenuItemSelected=function(t,e){this.menuItemSelected$.next(new a.MenuItemSelectedEvent(t,e))},t.prototype.fireNodeSwitchFoldingType=function(t){t.isNodeExpanded()?(this.fireNodeExpanded(t),this.shouldFireLoadNextLevel(t)&&this.fireLoadNextLevel(t)):t.isNodeCollapsed()&&this.fireNodeCollapsed(t)},t.prototype.fireNodeExpanded=function(t){this.nodeExpanded$.next(new a.NodeExpandedEvent(t))},t.prototype.fireNodeCollapsed=function(t){this.nodeCollapsed$.next(new a.NodeCollapsedEvent(t))},t.prototype.fireLoadNextLevel=function(t){this.loadNextLevel$.next(new a.LoadNextLevelEvent(t))},t.prototype.fireNodeChecked=function(t){this.nodeChecked$.next(new a.NodeCheckedEvent(t))},t.prototype.fireNodeUnchecked=function(t){this.nodeUnchecked$.next(new a.NodeUncheckedEvent(t))},t.prototype.draggedStream=function(t,e){return this.nodeDraggableService.draggableNodeEvents$.filter(function(t){return t.target===e}).filter(function(e){return!e.captured.tree.hasChild(t)})},t.prototype.setController=function(t,e){this.controllers.set(t,e)},t.prototype.deleteController=function(t){this.controllers.has(t)&&this.controllers.delete(t)},t.prototype.getController=function(t){return this.controllers.has(t)?this.controllers.get(t):null},t.prototype.hasController=function(t){return this.controllers.has(t)},t.prototype.shouldFireLoadNextLevel=function(t){var e=t.node.emitLoadNextLevel&&!t.node.loadChildren&&!t.childrenAreBeingLoaded()&&o.isEmpty(t.children);return e&&t.loadingChildrenRequested(),e},t.prototype.fireNodeIndetermined=function(t){this.nodeIndetermined$.next(new a.NodeIndeterminedEvent(t))},t.decorators=[{type:i.Injectable}],t}()},Txjg:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("Zn8D");function r(){return Object(a.a)(1)}},UDhR:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},UReH:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DatatableRowDetailTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-row-detail-template]"})],function(t){this.template=t})}()},USCx:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","M\xe9itheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deaireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean\xe1","Feab","M\xe1rt","Aibr","Beal","M\xe9it","I\xfail","L\xfana","Me\xe1n","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Satharn"],weekdaysShort:["Dom","Lua","M\xe1i","C\xe9a","D\xe9a","hAo","Sat"],weekdaysMin:["Do","Lu","M\xe1","Ce","D\xe9","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\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xed",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}})}()},UpQW:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],a=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];n("wd/R").defineLocale("ur",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}()},UqmZ:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=a.global;a._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),t.exports=r.extend({draw:function(){var t,e,n,a,r=this._view,s=this._chart.ctx,u=r.spanGaps,l=this._children.slice(),c=o.elements.line,d=-1;for(this._loop&&l.length&&l.push(l[0]),s.save(),s.lineCap=r.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(r.borderDash||c.borderDash),s.lineDashOffset=r.borderDashOffset||c.borderDashOffset,s.lineJoin=r.borderJoinStyle||c.borderJoinStyle,s.lineWidth=r.borderWidth||c.borderWidth,s.strokeStyle=r.borderColor||o.defaultColor,s.beginPath(),d=-1,t=0;t<l.length;++t)e=l[t],n=i.previousItem(l,t),a=e._view,0===t?a.skip||(s.moveTo(a.x,a.y),d=t):(n=-1===d?n:l[d],a.skip||(d!==t-1&&!u||-1===d?s.moveTo(a.x,a.y):i.canvas.lineTo(s,n._view,e._view),d=t));s.stroke(),s.restore()}})},Ur1D:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},"V/fk":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},V2x9:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_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}})}()},V3my:function(t,e,n){"use strict";var a,r=n("gIcY"),i=n("LvDl"),o=(n("DSvg"),n("SgmB"),n("Mxhz"),n("OLbh")),s=n("DNAf"),u=(n("sne2"),n("mtw6")),l=n("QFaf"),c=n("1Ni5");n("aexS"),n("9nlD"),function(t){t.editing="editing"}(a||(a={}));var d=function(){return function(){}}();n.d(e,"a",function(){return f});var f=function(){function t(t,e,n,r,i,o,u,l,c,d){this.authService=t,this.authStorageService=e,this.route=n,this.router=r,this.modalService=i,this.roleService=o,this.userService=u,this.notificationService=l,this.i18n=c,this.actionLabels=d,this.userFormMode=a,this.messages=new s.a({empty:"There are no roles."},this.i18n),this.resource=this.i18n("user"),this.createForm(),this.messages=new s.a({empty:"There are no roles."},this.i18n)}return t.prototype.createForm=function(){this.userForm=new l.a({username:new r.i("",{validators:[r.A.required]}),name:new r.i(""),password:new r.i("",{validators:[]}),confirmpassword:new r.i("",{updateOn:"blur",validators:[]}),email:new r.i("",{validators:[r.A.email]}),roles:new r.i([])},{validators:[c.a.match("password","confirmpassword")]})},t.prototype.ngOnInit=function(){var t=this;this.router.url.startsWith("/user-management/users/edit")?(this.mode=this.userFormMode.editing,this.action=this.actionLabels.EDIT):this.action=this.actionLabels.CREATE,this.roleService.list().subscribe(function(e){t.allRoles=i.map(e,function(t){return t.enabled=!0,t})}),this.mode===this.userFormMode.editing&&this.initEdit()},t.prototype.initEdit=function(){var t=this;this.disableForEdit(),this.route.params.subscribe(function(e){t.userService.get(e.username).subscribe(function(e){t.response=i.cloneDeep(e),t.setResponse(e)})})},t.prototype.disableForEdit=function(){this.userForm.get("username").disable()},t.prototype.setResponse=function(t){var e=this;["username","name","email","roles"].forEach(function(n){return e.userForm.get(n).setValue(t[n])})},t.prototype.getRequest=function(){var t=this,e=new d;return["username","password","name","email","roles"].forEach(function(n){return e[n]=t.userForm.get(n).value}),e},t.prototype.createAction=function(){var t=this,e=this.getRequest();this.userService.create(e).subscribe(function(){t.notificationService.show(u.a.success,t.i18n('Created user "{{username}}"',{username:e.username})),t.router.navigate(["/user-management/users"])},function(){t.userForm.setErrors({cdSubmitButton:!0})})},t.prototype.editAction=function(){var t=this;if(this.isUserRemovingNeededRolePermissions()){var e={titleText:this.i18n("Update user"),buttonText:this.i18n("Continue"),bodyTpl:this.removeSelfUserReadUpdatePermissionTpl,onSubmit:function(){t.modalRef.hide(),t.doEditAction()},onCancel:function(){t.userForm.setErrors({cdSubmitButton:!0}),t.userForm.get("roles").reset(t.userForm.get("roles").value)}};this.modalRef=this.modalService.show(o.a,{initialState:e})}else this.doEditAction()},t.prototype.isCurrentUser=function(){return this.authStorageService.getUsername()===this.userForm.getValue("username")},t.prototype.isUserChangingRoles=function(){return this.isCurrentUser()&&this.response&&!i.isEqual(this.response.roles,this.userForm.getValue("roles"))},t.prototype.isUserRemovingNeededRolePermissions=function(){return this.isCurrentUser()&&!this.hasUserReadUpdatePermissions(this.userForm.getValue("roles"))},t.prototype.hasUserReadUpdatePermissions=function(t){void 0===t&&(t=[]);for(var e=function(e){if(-1!==t.indexOf(e.name)&&e.scopes_permissions.user){var n=e.scopes_permissions.user;return{value:["read","update"].every(function(t){return-1!==n.indexOf(t)})}}},n=0,a=this.allRoles;n<a.length;n++){var r=e(a[n]);if("object"==typeof r)return r.value}return!1},t.prototype.doEditAction=function(){var t=this,e=this.getRequest();this.userService.update(e).subscribe(function(){t.isUserChangingRoles()?t.authService.logout(function(){t.notificationService.show(u.a.info,t.i18n("You were automatically logged out because your roles have been changed."))}):(t.notificationService.show(u.a.success,t.i18n('Updated user "{{username}}"',{username:e.username})),t.router.navigate(["/user-management/users"]))},function(){t.userForm.setErrors({cdSubmitButton:!0})})},t.prototype.submit=function(){this.mode===this.userFormMode.editing?this.editAction():this.createAction()},t}()},VE89:function(t,e,n){var a=n("mrSG").__extends;Object.defineProperty(e,"__esModule",{value:!0});var r=function(){return function(t){this.node=t}}();e.NodeEvent=r,e.NodeSelectedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeUnselectedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r);var i=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r);e.NodeDestructiveEvent=i,e.NodeMovedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.previousParent=n,a}return a(e,t),e}(i),e.NodeRemovedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.lastIndex=n,a}return a(e,t),e}(i),e.NodeCreatedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(i),e.NodeRenamedEvent=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.oldValue=n,r.newValue=a,r}return a(e,t),e}(i),e.NodeExpandedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeCollapsedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.MenuItemSelectedEvent=function(t){function e(e,n){var a=t.call(this,e)||this;return a.selectedItem=n,a}return a(e,t),e}(r),e.LoadNextLevelEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeCheckedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeUncheckedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r),e.NodeIndeterminedEvent=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e}(r)},VHo1:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}(n("rLYq"))},VKeD:function(t,e,n){"use strict";function a(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}e.getSymbolIterator=a,e.iterator=a(),e.$$iterator=e.iterator},VLs4:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["de",[["vm.","nm."],["vorm.","nachm."],n],[["vorm.","nachm."],n,n],[["S","M","D","M","D","F","S"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["S","M","D","M","D","F","S"],["So","Mo","Di","Mi","Do","Fr","Sa"],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","M\xe4rz","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["v. Chr.","n. Chr."],n,n],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",n,"{1} 'um' {0}",n],[",",".",";","%","+","-","E","\xb7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"\u20ac","Euro",{ATS:["\xf6S"],AUD:["AU$","$"],BGM:["BGK"],BGO:["BGJ"],CUC:[n,"Cub$"],DEM:["DM"],FKP:[n,"Fl\xa3"],GNF:[n,"F.G."],KMF:[n,"FC"],RON:[n,"L"],RWF:[n,"F.Rw"],SYP:[],THB:["\u0e3f"],TWD:["NT$"],ZMW:[n,"K"]},function(t){var e=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===n?1:5}]})},VNr4:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("6blF"),i=n("isby"),o=n("G5J1"),s=n("zotm"),u=n("MGBS"),l=n("67Y/");function c(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return"function"==typeof e[e.length-1]&&(t=e.pop()),1===e.length&&Object(i.a)(e[0])&&(e=e[0]),0===e.length?o.a:t?c(e).pipe(Object(l.a)(function(e){return t.apply(void 0,e)})):new r.a(function(t){return new d(t,e)})}var d=function(t){function e(e,n){var a=t.call(this,e)||this;a.sources=n,a.completed=0,a.haveValues=0;var r=n.length;a.values=new Array(r);for(var i=0;i<r;i++){var o=n[i],u=Object(s.a)(a,o,null,i);u&&a.add(u)}return a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values[n]=e,r._hasValue||(r._hasValue=!0,this.haveValues++)},e.prototype.notifyComplete=function(t){var e=this.destination,n=this.haveValues,a=this.values,r=a.length;t._hasValue?(this.completed++,this.completed===r&&(n===r&&e.next(a),e.complete())):e.complete()},e}(u.a)},VTlA:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("mSOc"),n("ufoC");var a=function(){function t(t,e){this.taskMessageService=t,this.summaryService=e}return t.prototype.init=function(t,e,n,a,r,i,o){var s=this;this.getUpdate=t,this.preProcessing=e,this.setList=n,this.onFetchError=a,this.taskFilter=r,this.itemFilter=i,this.builders=o||{},this.summaryDataSubscription=this.summaryService.subscribe(function(t){t&&s.getUpdate().subscribe(function(e){s.updateData(e,t.executing_tasks.filter(s.taskFilter))},s.onFetchError)},this.onFetchError)},t.prototype.updateData=function(t,e){var n=this,a=this.preProcessing?this.preProcessing(t):t;this.addMissing(a,e),a.forEach(function(t){var a=e.filter(function(e){return n.itemFilter(t,e)});t.cdExecuting=n.getTaskAction(a)}),this.setList(a)},t.prototype.addMissing=function(t,e){var n=this,a=this.builders.default||{};e.forEach(function(e){var r=t.find(function(t){return n.itemFilter(t,e)}),i=n.builders[e.name];r||!i&&!a||t.push(i?i(e.metadata):a(e))})},t.prototype.getTaskAction=function(t){var e=this;if(0!==t.length)return t.map(function(t){return e.taskMessageService.getRunningText(t)}).join(", ")},t.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},t}()},VUo1:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG");n("ZYjt"),e.SafeHtmlPipe=function(){function t(t){this.sanitizer=t}return t.prototype.transform=function(t){return this.sanitizer.bypassSecurityTrustHtml(t)},t.decorators=[{type:a.Pipe,args:[{name:"safeHtml"}]}],t}()},VXsX:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("LvDl"),r=n("mSOc"),i=n("CcnG"),o=function(){return function(t,e,n){this.name=t,this.metadata=e,this.onTaskFinished=n}}(),s=function(){function t(t){var e=this;this.subscriptions=[],t.subscribe(function(t){if(t)for(var n=t.executing_tasks,a=t.finished_tasks,r=[],i=0,o=e.subscriptions;i<o.length;i++){var s=o[i],u=e._getTask(s,a),l=e._getTask(s,n);null!==u&&null===l&&s.onTaskFinished(u),null!==l&&r.push(s),e.subscriptions=r}})}return t.prototype.subscribe=function(t,e,n){this.subscriptions.push(new o(t,e,n))},t.prototype._getTask=function(t,e){for(var n=0,r=e;n<r.length;n++){var i=r[n];if(i.name===t.name&&a.isEqual(i.metadata,t.metadata))return i}return null},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(r.a))},token:t,providedIn:"root"}),t}()},"VYA+":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CVuo"),r=n("HV4d"),i=n("h+PQ");function o(t){return null==t}e.setColumnDefaults=function(t){if(t)for(var e=!1,n=0,s=t;n<s.length;n++){var u=s[n];u.$$id||(u.$$id=r.id()),o(u.prop)&&u.name&&(u.prop=a.camelCase(u.name)),u.$$valueGetter||(u.$$valueGetter=i.getterForProp(u.prop)),!o(u.prop)&&o(u.name)&&(u.name=a.deCamelCase(String(u.prop))),o(u.prop)&&o(u.name)&&(u.name=""),u.hasOwnProperty("resizeable")||(u.resizeable=!0),u.hasOwnProperty("sortable")||(u.sortable=!0),u.hasOwnProperty("draggable")||(u.draggable=!0),u.hasOwnProperty("canAutoResize")||(u.canAutoResize=!0),u.hasOwnProperty("width")||(u.width=150),u.hasOwnProperty("isTreeColumn")&&u.isTreeColumn&&!e?e=!0:u.isTreeColumn=!1}},e.isNullOrUndefined=o,e.translateTemplates=function(t){for(var e=[],n=0,a=t;n<a.length;n++){for(var r=a[n],i={},o=0,s=Object.getOwnPropertyNames(r);o<s.length;o++){var u=s[o];i[u]=r[u]}r.headerTemplate&&(i.headerTemplate=r.headerTemplate),r.cellTemplate&&(i.cellTemplate=r.cellTemplate),r.summaryFunc&&(i.summaryFunc=r.summaryFunc),r.summaryTemplate&&(i.summaryTemplate=r.summaryTemplate),e.push(i)}return e}},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}})}(n("wd/R"))},VgNv:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha");a._set("global",{plugins:{}}),t.exports={_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,o,s,u=this.descriptors(t),l=u.length;for(a=0;a<l;++a)if("function"==typeof(s=(i=(r=u[a]).plugin)[e])&&((o=[t].concat(n||[])).push(r.options),!1===s.apply(i,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],i=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=r.clone(a.global.plugins[e])),n.push(t),i.push({plugin:t,options:o||{}}))}}),e.descriptors=i,e.id=this._cacheId,i},_invalidate:function(t){delete t.$plugins}}},Vhfg:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("67Y/"),r=n("ej+x"),i=n("CcnG"),o=n("ZYCi"),s=function(){function t(t,e){this.router=t,this.featureToggles=e}return t.prototype.canActivate=function(t){var e=this;return this.featureToggles.get().pipe(Object(a.a)(function(n){return!1!==n[t.routeConfig.path]||(e.router.navigate(["404"]),!1)}))},t.prototype.canActivateChild=function(t){return this.canActivate(t.parent)},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.l),i.inject(r.a))},token:t,providedIn:"root"}),t}()},"VnD/":function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e))}}var o=function(){function t(t,e){this.predicate=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.thisArg=a,r.count=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}e&&this.destination.next(t)},e}(r.a)},W0Ae:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("mrSG"),r=n("isby"),i=n("IUTb"),o=n("MGBS"),s=n("zotm");function u(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(1===t.length){if(!Object(r.a)(t[0]))return t[0];t=t[0]}return Object(i.a)(t,void 0).lift(new l)}var l=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new c(t))},t}(),c=function(t){function e(e){var n=t.call(this,e)||this;return n.hasFirst=!1,n.observables=[],n.subscriptions=[],n}return a.__extends(e,t),e.prototype._next=function(t){this.observables.push(t)},e.prototype._complete=function(){var t=this.observables,e=t.length;if(0===e)this.destination.complete();else{for(var n=0;n<e&&!this.hasFirst;n++){var a=t[n],r=Object(s.a)(this,a,a,n);this.subscriptions&&this.subscriptions.push(r),this.add(r)}this.observables=null}},e.prototype.notifyNext=function(t,e,n,a,r){if(!this.hasFirst){this.hasFirst=!0;for(var i=0;i<this.subscriptions.length;i++)if(i!==n){var o=this.subscriptions[i];o.unsubscribe(),this.remove(o)}this.subscriptions=null}this.destination.next(e)},e}(o.a)},WOoz:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.asc="asc",t.desc="desc"}(e.SortDirection||(e.SortDirection={}))},WYrj:function(t,e,n){!function(t){"use strict";var e=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],a=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];n("wd/R").defineLocale("dv",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".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:/\u0789\u0786|\u0789\u078a/,isPM:function(t){return"\u0789\u078a"===t},meridiem:function(t,e,n){return t<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:7,doy:12}})}()},WiuZ:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("eajB"),o=n("lqqz"),s=n("gIcY"),u=n("OZfm");n("wnGv"),n("Jm/i"),n.d(e,"a",function(){return l}),n.d(e,"b",function(){return T});var l=a["\u0275crt"]({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 c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block text-center"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.messages.customValidations[e.parent.context.$implicit])})}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,c)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0,n.form.showError("filter",a["\u0275nov"](e.parent,2))&&n.filter.hasError(e.context.$implicit))},null)}function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-check"]],null,null,null,null,null))],null,null)}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"small",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,[" ","\xa0 "]))],null,function(t,e){t(e,3,0,e.parent.context.$implicit.description)})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"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["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"help-block disabled":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](5,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[" \xa0 "])),(t()(),a["\u0275eld"](7,0,null,null,3,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](10,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,!(n.data.length!==n.selectionLimit&&e.context.$implicit.enabled||e.context.$implicit.selected));t(e,1,0,"select-menu-item",a),t(e,5,0,e.context.$implicit.selected),t(e,10,0,e.context.$implicit.description)},function(t,e){t(e,8,0,e.context.$implicit.name)})}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","select-menu-item"]],null,[[null,"click"]],function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=!1!==r.addCustomOption(r.filter.value)&&a),a},null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"div",[["class","select-menu-item-icon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-tag"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" \xa0 "])),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","select-menu-item-content"]],null,null,null,null,null)),(t()(),a["\u0275ted"](5,null,[" "," '","' "]))],null,function(t,e){var n=e.component;t(e,5,0,n.messages.add,n.filter.value)})}function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,2,"span",[["class","help-block text-center text-warning"]],[[1,"aria-describedby",0]],null,null,null,null)),a["\u0275did"](1,212992,null,0,i.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,o.a,i.a],{tooltip:[0,"tooltip"]},null),(t()(),a["\u0275ted"](2,null,[" "," "])),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.messages.selectionLimit.tooltip)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,1).ariaDescribedby),t(e,2,0,n.messages.selectionLimit.text)})}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","has-warning"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](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 y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"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["\u0275nov"](t,2).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,2).onReset()&&r),r},null,null)),a["\u0275did"](1,16384,null,0,s.D,[],null,null),a["\u0275did"](2,540672,[["formDir",4]],0,s.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,s.d,null,[s.l]),a["\u0275did"](4,16384,null,0,s.s,[[4,s.d]],null,null),(t()(),a["\u0275eld"](5,0,null,null,10,"div",[],null,null,null,null,null)),a["\u0275did"](6,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pod"](7,{"has-error":0}),(t()(),a["\u0275eld"](8,0,null,null,5,"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]],[[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["\u0275nov"](t,9)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionEnd(n.target.value)&&r),"keyup"===e&&(r=!1!==(13==n.keyCode?i.selectOption():i.updateFilter())&&r),r},null,null)),a["\u0275did"](9,16384,null,0,s.e,[a.Renderer2,a.ElementRef,[2,s.b]],null,null),a["\u0275prd"](1024,null,s.p,function(t){return[t]},[s.e]),a["\u0275did"](11,671744,null,0,s.j,[[3,s.d],[8,null],[8,null],[6,s.p],[2,s.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,s.q,null,[s.j]),a["\u0275did"](13,16384,null,0,s.r,[[4,s.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](15,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](17,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0,n.form);var r=t(e,7,0,n.form.showError("filter",a["\u0275nov"](e,2)));t(e,6,0,r),t(e,11,0,"filter"),t(e,15,0,n.Object.keys(n.messages.customValidations)),t(e,17,0,n.filteredOptions),t(e,19,0,n.isCreatable()),t(e,21,0,n.data.length===n.selectionLimit)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,4).ngClassUntouched,a["\u0275nov"](e,4).ngClassTouched,a["\u0275nov"](e,4).ngClassPristine,a["\u0275nov"](e,4).ngClassDirty,a["\u0275nov"](e,4).ngClassValid,a["\u0275nov"](e,4).ngClassInvalid,a["\u0275nov"](e,4).ngClassPending),t(e,8,0,n.messages.filter,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,3,"a",[["class","select-menu-edit"],["container","body"],["outsideClick","true"],["placement","bottom"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275did"](2,212992,null,0,u.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,u.a,o.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),a["\u0275ncd"](null,0),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,"select-menu-edit",e.component.elemClass),t(e,2,0,a["\u0275nov"](e.parent,0),"bottom","true","body")},null)}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","\n"]))],null,function(t,e){t(e,1,0,e.component.messages.empty)})}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","\n"]))],null,function(t,e){t(e,1,0,e.component.messages.noOptions)})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,[["popTemplate",2]],null,0,null,y)),(t()(),a["\u0275and"](16777216,null,null,1,null,v)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](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.options.length>0),t(e,4,0,0===n.data.length&&n.options.length>0),t(e,6,0,0===n.options.length)},null)}},WxRl:function(t,e,n){!function(t){"use strict";var e="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function n(t,e,n,a){var r=t;switch(n){case"s":return a||e?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return r+(a||e)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(a||e?" perc":" perce");case"mm":return r+(a||e?" perc":" perce");case"h":return"egy"+(a||e?" \xf3ra":" \xf3r\xe1ja");case"hh":return r+(a||e?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(a||e?" nap":" napja");case"dd":return r+(a||e?" nap":" napja");case"M":return"egy"+(a||e?" h\xf3nap":" h\xf3napja");case"MM":return r+(a||e?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(a||e?" \xe9v":" \xe9ve");case"yy":return r+(a||e?" \xe9v":" \xe9ve")}return""}function a(t){return(t?"":"[m\xfalt] ")+"["+e[this.day()]+"] LT[-kor]"}t.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_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\xfalva",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"))},WyAD:function(t,e,n){var a=n("yPMN")();a.helpers=n("RDha"),n("nDWh")(a),a.Animation=n("A5uo"),a.animationService=n("dpnK"),a.defaults=n("CDJp"),a.Element=n("K2E3"),a.elements=n("vvH+"),a.Interaction=n("mlr9"),a.layouts=n("fELs"),a.platform=n("iM7B"),a.plugins=n("VgNv"),a.Scale=n("cdu6"),a.scaleService=n("tjFV"),a.Ticks=n("g8vO"),a.Tooltip=n("x8uC"),n("6rqY")(a),n("KAQS")(a),n("paOr")(a),n("8TtQ")(a),n("YSsK")(a),n("Y4Rb")(a),n("8//i")(a),n("RCHg")(a),n("ZANz")(a),n("bidN")(a),n("XQh+")(a),n("G0Q6")(a),n("5ZZ7")(a),n("aB2c")(a),n("35yf")(a),n("ODdm")(a),n("Qexa")(a),n("S7Ns")(a),n("7O6V")(a),n("qzaf")(a),n("iYGd")(a),n("S3/U")(a);var r=n("jXIB");for(var i in r)r.hasOwnProperty(i)&&a.plugins.register(r[i]);a.platform.initialize(),t.exports=a,"undefined"!=typeof window&&(window.Chart=a),a.Legend=r.legend._element,a.Title=r.title._element,a.pluginService=a.plugins,a.PluginBase=a.Element.extend({}),a.canvasHelpers=a.helpers.canvas,a.layoutService=a.layouts},X709:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".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\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra 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\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"e":1===e?"a":2===e?"a":"e")},week:{dow:1,doy:4}})}()},X8CM:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha");a._set("global",{elements:{arc:{backgroundColor:a.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),t.exports=r.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=i.getAngleFromPoint(n,{x:t,y:e}),r=a.angle,o=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&&o>=n.innerRadius&&o<=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=this._chart.ctx,e=this._view,n=e.startAngle,a=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,a),t.arc(e.x,e.y,e.innerRadius,a,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},XDpg:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u5468";default:return t}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}})}()},XFyV:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},XLvN:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".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:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===e?t<4?t:t+12:"\u0c09\u0c26\u0c2f\u0c02"===e?t:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===e?t>=10?t:t+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":t<10?"\u0c09\u0c26\u0c2f\u0c02":t<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":t<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}})}()},"XQh+":function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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),o=e.datasets[0],s=r.data[a],u=s&&s.custom||{},l=i.valueAtIndexOrDefault,c=t.options.elements.arc;return{text:n,fillStyle:u.backgroundColor?u.backgroundColor:l(o.backgroundColor,a,c.backgroundColor),strokeStyle:u.borderColor?u.borderColor:l(o.borderColor,a,c.borderColor),lineWidth:u.borderWidth?u.borderWidth:l(o.borderWidth,a,c.borderWidth),hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,a,r,i=e.index,o=this.chart;for(n=0,a=(o.data.datasets||[]).length;n<a;++n)(r=o.getDatasetMeta(n)).data[i]&&(r.data[i].hidden=!r.data[i].hidden);o.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 i.isArray(n)?(n=n.slice())[0]+=a:n+=a,n}}}}),a._set("pie",i.clone(a.doughnut)),a._set("pie",{cutoutPercentage:0}),t.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:r.Arc,linkScales:i.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=this,n=e.chart,a=n.chartArea,r=n.options,o=r.elements.arc,s=a.right-a.left-o.borderWidth,u=a.bottom-a.top-o.borderWidth,l=Math.min(s,u),c={x:0,y:0},d=e.getMeta(),f=r.cutoutPercentage,p=r.circumference;if(p<2*Math.PI){var h=r.rotation%(2*Math.PI),g=(h+=2*Math.PI*(h>=Math.PI?-1:h<-Math.PI?1:0))+p,m={x:Math.cos(h),y:Math.sin(h)},b={x:Math.cos(g),y:Math.sin(g)},y=h<=0&&g>=0||h<=2*Math.PI&&2*Math.PI<=g,v=h<=.5*Math.PI&&.5*Math.PI<=g||h<=2.5*Math.PI&&2.5*Math.PI<=g,_=h<=-Math.PI&&-Math.PI<=g||h<=Math.PI&&Math.PI<=g,x=h<=.5*-Math.PI&&.5*-Math.PI<=g||h<=1.5*Math.PI&&1.5*Math.PI<=g,T=f/100,w={x:_?-1:Math.min(m.x*(m.x<0?1:T),b.x*(b.x<0?1:T)),y:x?-1:Math.min(m.y*(m.y<0?1:T),b.y*(b.y<0?1:T))},S={x:y?1:Math.max(m.x*(m.x>0?1:T),b.x*(b.x>0?1:T)),y:v?1:Math.max(m.y*(m.y>0?1:T),b.y*(b.y>0?1:T))},O={width:.5*(S.x-w.x),height:.5*(S.y-w.y)};l=Math.min(s/O.width,u/O.height),c={x:-.5*(S.x+w.x),y:-.5*(S.y+w.y)}}n.borderWidth=e.getMaxBorderWidth(d.data),n.outerRadius=Math.max((l-n.borderWidth)/2,0),n.innerRadius=Math.max(f?n.outerRadius/100*f:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=c.x*n.outerRadius,n.offsetY=c.y*n.outerRadius,d.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),i.each(d.data,function(n,a){e.updateElement(n,a,t)})},updateElement:function(t,e,n){var a=this,r=a.chart,o=r.chartArea,s=r.options,u=s.animation,l=(o.left+o.right)/2,c=(o.top+o.bottom)/2,d=s.rotation,f=s.rotation,p=a.getDataset(),h=n&&u.animateRotate?0:t.hidden?0:a.calculateCircumference(p.data[e])*(s.circumference/(2*Math.PI));i.extend(t,{_datasetIndex:a.index,_index:e,_model:{x:l+r.offsetX,y:c+r.offsetY,startAngle:d,endAngle:f,circumference:h,outerRadius:n&&u.animateScale?0:a.outerRadius,innerRadius:n&&u.animateScale?0:a.innerRadius,label:(0,i.valueAtIndexOrDefault)(p.label,e,r.data.labels[e])}});var g=t._model,m=t.custom||{},b=i.valueAtIndexOrDefault,y=this.chart.options.elements.arc;g.backgroundColor=m.backgroundColor?m.backgroundColor:b(p.backgroundColor,e,y.backgroundColor),g.borderColor=m.borderColor?m.borderColor:b(p.borderColor,e,y.borderColor),g.borderWidth=m.borderWidth?m.borderWidth:b(p.borderWidth,e,y.borderWidth),n&&u.animateRotate||(g.startAngle=0===e?s.rotation:a.getMeta().data[e-1]._model.endAngle,g.endAngle=g.startAngle+g.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),a=0;return i.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){for(var e,n,a=0,r=this.index,i=t.length,o=0;o<i;o++)a=(n=t[o]._chart?t[o]._chart.config.data.datasets[r].hoverBorderWidth:0)>(a=(e=t[o]._model?t[o]._model.borderWidth:0)>a?e:a)?n:a;return a}})}},Xg1U:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("eajB"),i=(n("Ip0R"),a["\u0275crt"]({encapsulation:0,styles:[".tooltip[_nghost-%COMP%] {\n      display: block;\n      pointer-events: none;\n    }\n    .bs-tooltip-top[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-tooltip-bottom[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      left: 50%;\n      transform: translateX(-50%);\n    }\n    .bs-tooltip-left[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%], .bs-tooltip-right[_nghost-%COMP%]   .arrow[_ngcontent-%COMP%] {\n      top: 50%;\n      transform: translateY(-50%);\n    }"],data:{}}));function o(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","tooltip-arrow arrow"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","tooltip-inner"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-tooltip-container",[["role","tooltip"]],[[8,"className",0],[2,"show",null],[1,"id",0]],null,null,o,i)),a["\u0275did"](1,4243456,null,0,r.b,[r.a],null,null)],null,function(t,e){t(e,0,0,"tooltip in tooltip-"+a["\u0275nov"](e,1).placement+" bs-tooltip-"+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).placement+" "+a["\u0275nov"](e,1).containerClass,!a["\u0275nov"](e,1).isBs3,a["\u0275nov"](e,1).id)})}var u=a["\u0275ccf"]("bs-tooltip-container",r.b,s,{},{},["*"])},XlPw:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t,e){return new a.a(e?function(n){return e.schedule(i,0,{error:t,subscriber:n})}:function(e){return e.error(t)})}function i(t){t.subscriber.error(t.error)}},"Xwq/":function(t,e,n){"use strict";var a=n("FWf1"),r=n("p//D"),i=n("GiSu");e.toSubscriber=function(t,e,n){if(t){if(t instanceof a.Subscriber)return t;if(t[r.rxSubscriber])return t[r.rxSubscriber]()}return t||e||n?new a.Subscriber(t,e,n):new a.Subscriber(i.empty)}},Y0Co:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("Lwhh"),s=n("8iEZ"),u=n("L5sC");n("BARL"),e.DataTableColumnDirective=function(){function t(t){this.columnChangesService=t,this.isFirstChange=!0}return t.prototype.ngOnChanges=function(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()},a([i.Input(),r("design:type",String)],t.prototype,"name",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"prop",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenLeft",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenRight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"flexGrow",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"comparator",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pipe",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"sortable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"draggable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"canAutoResize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"width",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"checkboxable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"headerCheckboxable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"headerClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"cellClass",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTreeColumn",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"treeLevelIndent",void 0),a([i.Input(),r("design:type",Function)],t.prototype,"summaryFunc",void 0),a([i.Input(),r("design:type",i.TemplateRef)],t.prototype,"summaryTemplate",void 0),a([i.Input(),i.ContentChild(s.DataTableColumnCellDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"cellTemplate",void 0),a([i.Input(),i.ContentChild(o.DataTableColumnHeaderDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"headerTemplate",void 0),a([i.Input(),i.ContentChild(u.DataTableColumnCellTreeToggle,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"treeToggleTemplate",void 0),a([i.Directive({selector:"ngx-datatable-column"})],t)}()},Y4Rb:function(t,e,n){"use strict";var a=n("RDha"),r=n("cdu6"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.logarithmic}},n=r.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,r=n.data.datasets,i=t.isHorizontal();function o(e){return i?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&&a.each(r,function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(a)&&void 0!==a.stack&&(s=!0)}}),e.stacked||s){var u={};a.each(r,function(r,i){var s=n.getDatasetMeta(i),l=[s.type,void 0===e.stacked&&void 0===s.stack?i:"",s.stack].join(".");n.isDatasetVisible(i)&&o(s)&&(void 0===u[l]&&(u[l]=[]),a.each(r.data,function(e,n){var a=u[l],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(a[n]=a[n]||0,a[n]+=r)}))}),a.each(u,function(e){if(e.length>0){var n=a.min(e),r=a.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?r:Math.max(t.max,r)}})}else a.each(r,function(e,r){var i=n.getDatasetMeta(r);n.isDatasetVisible(r)&&o(i)&&a.each(e.data,function(e,n){var a=+t.getRightValue(e);isNaN(a)||i.data[n].hidden||a<0||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a: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,n=a.valueOrDefault;t.min=n(e.min,t.min),t.max=n(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(a.log10(t.min))-1),t.max=Math.pow(10,Math.floor(a.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(a.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(a.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(a.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),r=t.ticks=function(t,e){var n,r,i=[],o=a.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(a.log10(e.min)))),u=Math.floor(a.log10(e.max)),l=Math.ceil(e.max/Math.pow(10,u));0===s?(n=Math.floor(a.log10(e.minNotZero)),r=Math.floor(e.minNotZero/Math.pow(10,n)),i.push(s),s=r*Math.pow(10,n)):(n=Math.floor(a.log10(s)),r=Math.floor(s/Math.pow(10,n)));var c=n<0?Math.pow(10,Math.abs(n)):1;do{i.push(s),10==++r&&(r=1,c=++n>=0?1:c),s=Math.round(r*Math.pow(10,n)*c)/c}while(n<u||n===u&&r<l);var d=o(t.max,s);return i.push(d),i}({min:e.min,max:e.max},t);t.max=a.max(r),t.min=a.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(),r.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(a.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var n,r,i,o,s,u=this,l=u.options.ticks.reverse,c=a.log10,d=u._getFirstTickValue(u.minNotZero),f=0;return e=+u.getRightValue(e),l?(i=u.end,o=u.start,s=-1):(i=u.start,o=u.end,s=1),u.isHorizontal()?(n=u.width,r=l?u.right:u.left):(n=u.height,s*=-1,r=l?u.top:u.bottom),e!==i&&(0===i&&(n-=f=a.getValueOrDefault(u.options.ticks.fontSize,t.defaults.global.defaultFontSize),i=d),0!==e&&(f+=n/(c(o)-c(i))*(c(e)-c(i))),r+=s*f),r},getValueForPixel:function(e){var n,r,i,o,s=this,u=s.options.ticks.reverse,l=a.log10,c=s._getFirstTickValue(s.minNotZero);if(u?(r=s.end,i=s.start):(r=s.start,i=s.end),s.isHorizontal()?(n=s.width,o=u?s.right-e:e-s.left):(n=s.height,o=u?e-s.top:s.bottom-e),o!==r){if(0===r){var d=a.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=d,n-=d,r=c}o*=l(i)-l(r),o/=n,o=Math.pow(10,l(r)+o)}return o}});i.registerScaleType("logarithmic",n,e)}},YAQW:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return s}),n.d(e,"d",function(){return o}),n.d(e,"e",function(){return i}),n.d(e,"c",function(){return u});var a=n("CcnG"),r=function(){function t(t){this.viewRef=t}return Object.defineProperty(t.prototype,"ngTransclude",{get:function(){return this._ngTransclude},set:function(t){this._ngTransclude=t,t&&this.viewRef.createEmbeddedView(t)},enumerable:!0,configurable:!0}),t}(),i=function(){return function(){this.type="tabs"}}(),o=function(){function t(t,e){this.renderer=e,this.clazz=!0,this.tabs=[],this.classMap={},Object.assign(this,t)}return Object.defineProperty(t.prototype,"vertical",{get:function(){return this._vertical},set:function(t){this._vertical=t,this.setClassMap()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"justified",{get:function(){return this._justified},set:function(t){this._justified=t,this.setClassMap()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this._type},set:function(t){this._type=t,this.setClassMap()},enumerable:!0,configurable:!0}),t.prototype.ngOnDestroy=function(){this.isDestroyed=!0},t.prototype.addTab=function(t){this.tabs.push(t),t.active=1===this.tabs.length&&void 0===t.active},t.prototype.removeTab=function(t,e){void 0===e&&(e={reselect:!0,emit:!0});var n=this.tabs.indexOf(t);if(-1!==n&&!this.isDestroyed){if(e.reselect&&t.active&&this.hasAvailableTabs(n)){var a=this.getClosestTabIndex(n);this.tabs[a].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)}},t.prototype.getClosestTabIndex=function(t){var e=this.tabs.length;if(!e)return-1;for(var n=1;n<=e;n+=1){var a=t-n,r=t+n;if(this.tabs[a]&&!this.tabs[a].disabled)return a;if(this.tabs[r]&&!this.tabs[r].disabled)return r}return-1},t.prototype.hasAvailableTabs=function(t){var e=this.tabs.length;if(!e)return!1;for(var n=0;n<e;n+=1)if(!this.tabs[n].disabled&&n!==t)return!0;return!1},t.prototype.setClassMap=function(){var t;this.classMap=((t={"nav-stacked":this.vertical,"flex-column":this.vertical,"nav-justified":this.justified})["nav-"+this.type]=!0,t)},t}(),s=function(){function t(t,e,n){this.elementRef=e,this.renderer=n,this.select=new a.EventEmitter,this.deselect=new a.EventEmitter,this.removed=new a.EventEmitter,this.addClass=!0,this.tabset=t,this.tabset.addTab(this)}return Object.defineProperty(t.prototype,"customClass",{get:function(){return this._customClass},set:function(t){var e=this;this.customClass&&this.customClass.split(" ").forEach(function(t){e.renderer.removeClass(e.elementRef.nativeElement,t)}),this._customClass=t?t.trim():null,this.customClass&&this.customClass.split(" ").forEach(function(t){e.renderer.addClass(e.elementRef.nativeElement,t)})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._active},set:function(t){var e=this;this._active!==t&&(this.disabled&&t||!t?this._active&&!t&&(this.deselect.emit(this),this._active=t):(this._active=t,this.select.emit(this),this.tabset.tabs.forEach(function(t){t!==e&&(t.active=!1)})))},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.removable=this.removable},t.prototype.ngOnDestroy=function(){this.tabset.removeTab(this,{reselect:!1,emit:!1})},t}(),u=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[i]}},t}()},YRex:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===e||"\u0633\u06d5\u06be\u06d5\u0631"===e||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===e?t:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===e||"\u0643\u06d5\u0686"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":a<900?"\u0633\u06d5\u06be\u06d5\u0631":a<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":a<1230?"\u0686\u06c8\u0634":a<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return t+"-\u06be\u06d5\u067e\u062a\u06d5";default:return t}},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:7}})}()},YSsK:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("tjFV"),o=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,i=t.isHorizontal();function o(e){return i?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&r.each(a,function(t,e){if(!s){var a=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(a)&&void 0!==a.stack&&(s=!0)}}),e.stacked||s){var u={};r.each(a,function(a,i){var s=n.getDatasetMeta(i),l=[s.type,void 0===e.stacked&&void 0===s.stack?i:"",s.stack].join(".");void 0===u[l]&&(u[l]={positiveValues:[],negativeValues:[]});var c=u[l].positiveValues,d=u[l].negativeValues;n.isDatasetVisible(i)&&o(s)&&r.each(a.data,function(n,a){var r=+t.getRightValue(n);isNaN(r)||s.data[a].hidden||(c[a]=c[a]||0,d[a]=d[a]||0,e.relativePoints?c[a]=100:r<0?d[a]+=r:c[a]+=r)})}),r.each(u,function(e){var n=e.positiveValues.concat(e.negativeValues),a=r.min(n),i=r.max(n);t.min=null===t.min?a:Math.min(t.min,a),t.max=null===t.max?i:Math.max(t.max,i)})}else r.each(a,function(e,a){var i=n.getDatasetMeta(a);n.isDatasetVisible(a)&&o(i)&&r.each(e.data,function(e,n){var a=+t.getRightValue(e);isNaN(a)||i.data[n].hidden||(null===t.min?t.min=a:a<t.min&&(t.min=a),null===t.max?t.max=a: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()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=r.valueOrDefault(e.fontSize,a.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},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])}});i.registerScaleType("linear",n,e)}},YVFZ:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze"),s=n("qwkt");n("czA5"),e.DataTableBodyCellComponent=function(){function t(t,e){this.cd=e,this.activate=new i.EventEmitter,this.treeAction=new i.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}return Object.defineProperty(t.prototype,"group",{get:function(){return this._group},set:function(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowHeight",{get:function(){return this._rowHeight},set:function(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this._isSelected},set:function(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"row",{get:function(){return this._row},set:function(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"treeStatus",{get:function(){return this._treeStatus},set:function(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var 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)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===s.SortDirection.asc&&(t+=" sort-asc"),this.sortDir===s.SortDirection.desc&&(t+=" sort-desc"),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){var t=this.rowHeight;return isNaN(t)?t:t+"px"},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.checkValueUpdates()},t.prototype.ngOnDestroy=function(){this.cellTemplate&&this.cellTemplate.clear()},t.prototype.checkValueUpdates=function(){var t="";if(this.row&&this.column){var 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())},t.prototype.onFocus=function(){this.isFocused=!0},t.prototype.onBlur=function(){this.isFocused=!1},t.prototype.onClick=function(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})},t.prototype.onDblClick=function(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})},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.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}))},t.prototype.onCheckboxChange=function(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"})},t.prototype.calcSortDir=function(t){var e=this;if(t){var n=t.find(function(t){return t.prop===e.column.prop});return n?n.dir:void 0}},t.prototype.stripHtml=function(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t},t.prototype.onTreeAction=function(){this.treeAction.emit(this.row)},t.prototype.calcLeftMargin=function(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0},a([i.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"group",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowHeight",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"isSelected",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"row",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"treeStatus",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild("cellTemplate",{read:i.ViewContainerRef}),r("design:type",i.ViewContainerRef)],t.prototype,"cellTemplate",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"height",null),a([i.HostListener("focus"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onFocus",null),a([i.HostListener("blur"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onBlur",null),a([i.HostListener("click",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onClick",null),a([i.HostListener("dblclick",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onDblClick",null),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.Component({selector:"datatable-body-cell",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div class="datatable-body-cell-label"\n      [style.margin-left.px]="calcLeftMargin(column, row)">\n      <label\n        *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="isSelected"\n          (click)="onCheckboxChange($event)"\n        />\n      </label>\n      <ng-container *ngIf="column.isTreeColumn">\n        <button *ngIf="!column.treeToggleTemplate"\n          class="datatable-tree-button"\n          [disabled]="treeStatus===\'disabled\'"\n          (click)="onTreeAction()">\n          <span>\n            <i *ngIf="treeStatus===\'loading\'"\n              class="icon datatable-icon-collapse"></i>\n            <i *ngIf="treeStatus===\'collapsed\'"\n              class="icon datatable-icon-up"></i>\n            <i *ngIf="treeStatus===\'expanded\' ||\n                      treeStatus===\'disabled\'"\n              class="icon datatable-icon-down"></i>\n          </span>\n        </button>\n        <ng-template *ngIf="column.treeToggleTemplate"\n          [ngTemplateOutlet]="column.treeToggleTemplate"\n          [ngTemplateOutletContext]="{ cellContext: cellContext }">\n        </ng-template>\n      </ng-container>\n\n      <span\n        *ngIf="!column.cellTemplate"\n        [title]="sanitizedValue"\n        [innerHTML]="value">\n      </span>\n      <ng-template #cellTemplate\n        *ngIf="column.cellTemplate"\n        [ngTemplateOutlet]="column.cellTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n    </div>\n  '})],t)}()},YcCt:function(t,e,n){"use strict";function a(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,r){n=n||"=";var i={};if("string"!=typeof t||0===t.length)return i;var o=/\+/g;t=t.split(e=e||"&");var s=1e3;r&&"number"==typeof r.maxKeys&&(s=r.maxKeys);var u=t.length;s>0&&u>s&&(u=s);for(var l=0;l<u;++l){var c,d,f,p,h=t[l].replace(o,"%20"),g=h.indexOf(n);g>=0?(c=h.substr(0,g),d=h.substr(g+1)):(c=h,d=""),f=decodeURIComponent(c),p=decodeURIComponent(d),a(i,f)?Array.isArray(i[f])?i[f].push(p):i[f]=[i[f],p]:i[f]=p}return i}},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}},Z21x:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("sne2");var a=function(){return function(t,e){var n=this;this.location=t,this.actionLabels=e,this.name=this.actionLabels.CANCEL,this.back=function(){return n.location.back()}}}()},Z4QM:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],a=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];n("wd/R").defineLocale("sd",{months:e,monthsShort:e,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}()},Z5tI:function(t,e,n){"use strict";var a=n("MkmW");e.subscribeToPromise=function(t){return function(e){return t.then(function(t){e.closed||(e.next(t),e.complete())},function(t){return e.error(t)}).then(null,a.hostReportError),e}}},ZAMP:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},ZANz:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),a._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),t.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:r.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.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.chart,o=a.getMeta(),s=a.getDataset(),u=t.custom||{},l=r.options.elements.rectangle;t._xScale=a.getScaleForId(o.xAxisID),t._yScale=a.getScaleForId(o.yAxisID),t._datasetIndex=a.index,t._index=e,t._model={datasetLabel:s.label,label:r.data.labels[e],borderSkipped:u.borderSkipped?u.borderSkipped:l.borderSkipped,backgroundColor:u.backgroundColor?u.backgroundColor:i.valueAtIndexOrDefault(s.backgroundColor,e,l.backgroundColor),borderColor:u.borderColor?u.borderColor:i.valueAtIndexOrDefault(s.borderColor,e,l.borderColor),borderWidth:u.borderWidth?u.borderWidth:i.valueAtIndexOrDefault(s.borderWidth,e,l.borderWidth)},a.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var a=this,r=t._model,i=a.getValueScale(),o=i.getBasePixel(),s=i.isHorizontal(),u=a._ruler||a.getRuler(),l=a.calculateBarValuePixels(a.index,e),c=a.calculateBarIndexPixels(a.index,e,u);r.horizontal=s,r.base=n?o:l.base,r.x=s?n?o:l.head:c.center,r.y=s?c.center:n?o:l.head,r.height=s?c.size:void 0,r.width=s?void 0:c.size},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())},_getStacks:function(t){var e,n,a=this.chart,r=this.getIndexScale().options.stacked,i=void 0===t?a.data.datasets.length:t+1,o=[];for(e=0;e<i;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===r||!0===r&&-1===o.indexOf(n.stack)||void 0===r&&(void 0===n.stack||-1===o.indexOf(n.stack)))&&o.push(n.stack);return o},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,o=n.isHorizontal(),s=o?n.left:n.top,u=s+(o?n.width:n.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(n.getPixelForValue(null,t,r));return{min:i.isNullOrUndef(n.options.barThickness)?function(t,e){var n,a,r,i,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(r=1,i=e.length;r<i;++r)o=Math.min(o,e[r]-e[r-1]);for(r=0,i=s.length;r<i;++r)a=t.getPixelForTick(r),o=r>0?Math.min(o,a-n):o,n=a;return o}(n,l):-1,pixels:l,start:s,end:u,stackCount:a,scale:n}},calculateBarValuePixels:function(t,e){var n,a,r,i,o,s,u=this.chart,l=this.getMeta(),c=this.getValueScale(),d=u.data.datasets,f=c.getRightValue(d[t].data[e]),p=c.options.stacked,h=l.stack,g=0;if(p||void 0===p&&void 0!==h)for(n=0;n<t;++n)(a=u.getDatasetMeta(n)).bar&&a.stack===h&&a.controller.getValueScaleId()===c.id&&u.isDatasetVisible(n)&&(r=c.getRightValue(d[n].data[e]),(f<0&&r<0||f>=0&&r>0)&&(g+=r));return i=c.getPixelForValue(g),{size:s=((o=c.getPixelForValue(g+f))-i)/2,base:i,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var a=n.scale.options,r="flex"===a.barThickness?function(t,e,n){var a=e.pixels,r=a[t],i=t>0?a[t-1]:null,o=t<a.length-1?a[t+1]:null,s=n.categoryPercentage;return null===i&&(i=r-(null===o?e.end-r:o-r)),null===o&&(o=r+r-i),{chunk:(o-i)/2*s/e.stackCount,ratio:n.barPercentage,start:r-(r-i)/2*s}}(e,n,a):function(t,e,n){var a,r,o=n.barThickness,s=e.stackCount,u=e.pixels[t];return i.isNullOrUndef(o)?(a=e.min*n.categoryPercentage,r=n.barPercentage):(a=o*s,r=1),{chunk:a/s,ratio:r,start:u-a/2}}(e,n,a),o=this.getStackIndex(t,this.getMeta().stack),s=r.start+r.chunk*o+r.chunk/2,u=Math.min(i.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,o=0;for(i.canvas.clipArea(t.ctx,t.chartArea);o<r;++o)isNaN(e.getRightValue(a.data[o]))||n[o].draw();i.canvas.unclipArea(t.ctx)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},ZDA6:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("t/Na"),i=n("pL04"),o=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("ui-api/scope")},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 s}),n.d(e,"b",function(){return o}),n("Mxhz");var a=n("0+/T"),r=(n("sne2"),n("mtw6")),i=n("vCyI"),o=(n("nSDx"),n("aexS"),n("9nlD"),new(n("EgGo").a)("user-management/users")),s=function(){function t(t,e,n,a,r,o,s,u){var l=this;this.userService=t,this.emptyPipe=e,this.modalService=n,this.notificationService=a,this.authStorageService=r,this.i18n=o,this.urlBuilder=s,this.actionLabels=u,this.selection=new i.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return l.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",routerLink:function(){return l.selection.first()&&l.urlBuilder.getEdit(l.selection.first().username)},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",click:function(){return l.deleteUserModal()},name:this.actionLabels.DELETE}]}return t.prototype.ngOnInit=function(){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}]},t.prototype.getUsers=function(){var t=this;this.userService.list().subscribe(function(e){t.users=e})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteUser=function(t){var e=this;this.userService.delete(t).subscribe(function(){e.getUsers(),e.modalRef.hide(),e.notificationService.show(r.a.success,e.i18n('Deleted user "{{username}}"',{username:t}))},function(){e.modalRef.content.stopLoadingSpinner()})},t.prototype.deleteUserModal=function(){var t=this,e=this.authStorageService.getUsername(),n=this.selection.first().username;e!==n?this.modalRef=this.modalService.show(a.a,{initialState:{itemDescription:"User",submitAction:function(){return t.deleteUser(n)}}}):this.notificationService.show(r.a.error,this.i18n('Failed to delete user "{{username}}"',{username:n}),this.i18n('You are currently logged in as "{{username}}".',{username:n}))},t}()},ZYCi:function(t,e,n){"use strict";n.d(e,"v",function(){return pn}),n.d(e,"C",function(){return wn}),n.d(e,"x",function(){return bn}),n.d(e,"D",function(){return Sn}),n.d(e,"E",function(){return On}),n.d(e,"z",function(){return vn}),n.d(e,"y",function(){return yn}),n.d(e,"B",function(){return Tn}),n.d(e,"w",function(){return gn}),n.d(e,"A",function(){return xn}),n.d(e,"F",function(){return dn}),n.d(e,"m",function(){return Je}),n.d(e,"o",function(){return Qe}),n.d(e,"n",function(){return en}),n.d(e,"q",function(){return rn}),n.d(e,"d",function(){return P}),n.d(e,"k",function(){return He}),n.d(e,"l",function(){return Xe}),n.d(e,"j",function(){return Ve}),n.d(e,"h",function(){return fn}),n.d(e,"i",function(){return Cn}),n.d(e,"p",function(){return mn}),n.d(e,"b",function(){return an}),n.d(e,"e",function(){return ln}),n.d(e,"f",function(){return un}),n.d(e,"g",function(){return sn}),n.d(e,"r",function(){return cn}),n.d(e,"a",function(){return Yt}),n.d(e,"s",function(){return Ue}),n.d(e,"c",function(){return _t}),n.d(e,"t",function(){return vt}),n.d(e,"u",function(){return Z});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=n("F/XL"),s=n("0/uQ"),u=n("26FU"),l=n("6blF"),c=n("3fWJ"),d=n("dzgT"),f=n("lYZG"),p=n("K9Ia"),h=n("G5J1"),g=n("67Y/"),m=n("Txjg"),b=n("w1EH"),y=n("9Z1F"),v=n("P6uZ"),_=n("psW0"),x=n("zAZS"),T=n("15JJ"),w=n("t9fZ"),S=n("p0Sj"),O=n("dC0D"),C=n("VnD/"),k=n("Phjn"),I=n("Qgas"),D=n("xMyE"),R=n("2WpN"),N=n("Zn8D"),A=n("ZYjt"),E=function(){return function(t,e){this.id=t,this.url=e}}(),L=function(t){function e(e,n,a,r){void 0===a&&(a="imperative"),void 0===r&&(r=null);var i=t.call(this,e,n)||this;return i.navigationTrigger=a,i.restoredState=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationStart(id: "+this.id+", url: '"+this.url+"')"},e}(E),P=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.urlAfterRedirects=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"')"},e}(E),M=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.reason=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationCancel(id: "+this.id+", url: '"+this.url+"')"},e}(E),j=function(t){function e(e,n,a){var r=t.call(this,e,n)||this;return r.error=a,r}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"NavigationError(id: "+this.id+", url: '"+this.url+"', error: "+this.error+")"},e}(E),q=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"RoutesRecognized(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),F=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"GuardsCheckStart(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),z=function(t){function e(e,n,a,r,i){var o=t.call(this,e,n)||this;return o.urlAfterRedirects=a,o.state=r,o.shouldActivate=i,o}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"GuardsCheckEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+", shouldActivate: "+this.shouldActivate+")"},e}(E),Y=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"ResolveStart(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),H=function(t){function e(e,n,a,r){var i=t.call(this,e,n)||this;return i.urlAfterRedirects=a,i.state=r,i}return Object(a.__extends)(e,t),e.prototype.toString=function(){return"ResolveEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},e}(E),G=function(){function t(t){this.route=t}return t.prototype.toString=function(){return"RouteConfigLoadStart(path: "+this.route.path+")"},t}(),V=function(){function t(t){this.route=t}return t.prototype.toString=function(){return"RouteConfigLoadEnd(path: "+this.route.path+")"},t}(),B=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ChildActivationStart(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),U=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ChildActivationEnd(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),W=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ActivationStart(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),K=function(){function t(t){this.snapshot=t}return t.prototype.toString=function(){return"ActivationEnd(path: '"+(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"")+"')"},t}(),$=function(){function t(t,e,n){this.routerEvent=t,this.position=e,this.anchor=n}return t.prototype.toString=function(){return"Scroll(anchor: '"+this.anchor+"', position: '"+(this.position?this.position[0]+", "+this.position[1]:null)+"')"},t}(),Z=function(){return function(){}}(),X="primary",J=function(){function t(t){this.params=t||{}}return t.prototype.has=function(t){return this.params.hasOwnProperty(t)},t.prototype.get=function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e[0]:e}return null},t.prototype.getAll=function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e:[e]}return[]},Object.defineProperty(t.prototype,"keys",{get:function(){return Object.keys(this.params)},enumerable:!0,configurable:!0}),t}();function Q(t){return new J(t)}var tt="ngNavigationCancelingError";function et(t){var e=Error("NavigationCancelingError: "+t);return e[tt]=!0,e}function nt(t,e,n){var a=n.path.split("/");if(a.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||a.length<t.length))return null;for(var r={},i=0;i<a.length;i++){var o=a[i],s=t[i];if(o.startsWith(":"))r[o.substring(1)]=s;else if(o!==s.path)return null}return{consumed:t.slice(0,a.length),posParams:r}}var at=function(){return function(t,e){this.routes=t,this.module=e}}();function rt(t,e){void 0===e&&(e="");for(var n=0;n<t.length;n++){var a=t[n];it(a,ot(e,a))}}function it(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&&t.outlet!==X)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&&rt(t.children,e)}function ot(t,e){return e?t||e.path?t&&!e.path?t+"/":!t&&e.path?e.path:t+"/"+e.path:"":t}function st(t){var e=t.children&&t.children.map(st),n=e?Object(a.__assign)({},t,{children:e}):Object(a.__assign)({},t);return!n.component&&(e||n.loadChildren)&&n.outlet&&n.outlet!==X&&(n.component=Z),n}function ut(t,e){var n,a=Object.keys(t),r=Object.keys(e);if(a.length!=r.length)return!1;for(var i=0;i<a.length;i++)if(t[n=a[i]]!==e[n])return!1;return!0}function lt(t){return Array.prototype.concat.apply([],t)}function ct(t){return t.length>0?t[t.length-1]:null}function dt(t,e){for(var n in t)t.hasOwnProperty(n)&&e(t[n],n)}function ft(t){return Object(i["\u0275isObservable"])(t)?t:Object(i["\u0275isPromise"])(t)?Object(s.a)(Promise.resolve(t)):Object(o.a)(t)}function pt(t,e,n){return n?function(t,e){return ut(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!bt(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(var 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(function(n){return 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!!bt(o=n.segments.slice(0,r.length),r)&&!a.hasChildren();if(n.segments.length===r.length){if(!bt(n.segments,r))return!1;for(var i in a.children){if(!n.children[i])return!1;if(!t(n.children[i],a.children[i]))return!1}return!0}var o=r.slice(0,n.segments.length),s=r.slice(n.segments.length);return!!bt(n.segments,o)&&!!n.children[X]&&e(n.children[X],a,s)}(e,n,n.segments)}(t.root,e.root)}var ht=function(){function t(t,e,n){this.root=t,this.queryParams=e,this.fragment=n}return Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=Q(this.queryParams)),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return xt.serialize(this)},t}(),gt=function(){function t(t,e){var n=this;this.segments=t,this.children=e,this.parent=null,dt(e,function(t,e){return t.parent=n})}return t.prototype.hasChildren=function(){return this.numberOfChildren>0},Object.defineProperty(t.prototype,"numberOfChildren",{get:function(){return Object.keys(this.children).length},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return Tt(this)},t}(),mt=function(){function t(t,e){this.path=t,this.parameters=e}return Object.defineProperty(t.prototype,"parameterMap",{get:function(){return this._parameterMap||(this._parameterMap=Q(this.parameters)),this._parameterMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return It(this)},t}();function bt(t,e){return t.length===e.length&&t.every(function(t,n){return t.path===e[n].path})}function yt(t,e){var n=[];return dt(t.children,function(t,a){a===X&&(n=n.concat(e(t,a)))}),dt(t.children,function(t,a){a!==X&&(n=n.concat(e(t,a)))}),n}var vt=function(){return function(){}}(),_t=function(){function t(){}return t.prototype.parse=function(t){var e=new Et(t);return new ht(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())},t.prototype.serialize=function(t){var e,n;return"/"+function t(e,n){if(!e.hasChildren())return Tt(e);if(n){var a=e.children[X]?t(e.children[X],!1):"",r=[];return dt(e.children,function(e,n){n!==X&&r.push(n+":"+t(e,!1))}),r.length>0?a+"("+r.join("//")+")":a}var i=yt(e,function(n,a){return a===X?[t(e.children[X],!1)]:[a+":"+t(n,!1)]});return Tt(e)+"/("+i.join("//")+")"}(t.root,!0)+(e=t.queryParams,(n=Object.keys(e).map(function(t){var n=e[t];return Array.isArray(n)?n.map(function(e){return St(t)+"="+St(e)}).join("&"):St(t)+"="+St(n)})).length?"?"+n.join("&"):"")+("string"==typeof t.fragment?"#"+encodeURI(t.fragment):"")},t}(),xt=new _t;function Tt(t){return t.segments.map(function(t){return It(t)}).join("/")}function wt(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function St(t){return wt(t).replace(/%3B/gi,";")}function Ot(t){return wt(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Ct(t){return decodeURIComponent(t)}function kt(t){return Ct(t.replace(/\+/g,"%20"))}function It(t){return""+Ot(t.path)+(e=t.parameters,Object.keys(e).map(function(t){return";"+Ot(t)+"="+Ot(e[t])}).join(""));var e}var Dt=/^[^\/()?;=#]+/;function Rt(t){var e=t.match(Dt);return e?e[0]:""}var Nt=/^[^=?&#]+/,At=/^[^?&#]+/,Et=function(){function t(t){this.url=t,this.remaining=t}return t.prototype.parseRootSegment=function(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new gt([],{}):new gt([],this.parseChildren())},t.prototype.parseQueryParams=function(){var t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t},t.prototype.parseFragment=function(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null},t.prototype.parseChildren=function(){if(""===this.remaining)return{};this.consumeOptional("/");var t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());var e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));var n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n[X]=new gt(t,e)),n},t.prototype.parseSegment=function(){var t=Rt(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error("Empty path url segment cannot have parameters: '"+this.remaining+"'.");return this.capture(t),new mt(Ct(t),this.parseMatrixParams())},t.prototype.parseMatrixParams=function(){for(var t={};this.consumeOptional(";");)this.parseParam(t);return t},t.prototype.parseParam=function(t){var e=Rt(this.remaining);if(e){this.capture(e);var n="";if(this.consumeOptional("=")){var a=Rt(this.remaining);a&&this.capture(n=a)}t[Ct(e)]=Ct(n)}},t.prototype.parseQueryParam=function(t){var e,n=(e=this.remaining.match(Nt))?e[0]:"";if(n){this.capture(n);var a="";if(this.consumeOptional("=")){var r=function(t){var e=t.match(At);return e?e[0]:""}(this.remaining);r&&this.capture(a=r)}var i=kt(n),o=kt(a);if(t.hasOwnProperty(i)){var s=t[i];Array.isArray(s)||(t[i]=s=[s]),s.push(o)}else t[i]=o}},t.prototype.parseParens=function(t){var e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){var n=Rt(this.remaining),a=this.remaining[n.length];if("/"!==a&&")"!==a&&";"!==a)throw new Error("Cannot parse url '"+this.url+"'");var r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r=X);var i=this.parseChildren();e[r]=1===Object.keys(i).length?i[X]:new gt([],i),this.consumeOptional("//")}return e},t.prototype.peekStartsWith=function(t){return this.remaining.startsWith(t)},t.prototype.consumeOptional=function(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)},t.prototype.capture=function(t){if(!this.consumeOptional(t))throw new Error('Expected "'+t+'".')},t}(),Lt=function(){function t(t){this._root=t}return Object.defineProperty(t.prototype,"root",{get:function(){return this._root.value},enumerable:!0,configurable:!0}),t.prototype.parent=function(t){var e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null},t.prototype.children=function(t){var e=Pt(t,this._root);return e?e.children.map(function(t){return t.value}):[]},t.prototype.firstChild=function(t){var e=Pt(t,this._root);return e&&e.children.length>0?e.children[0].value:null},t.prototype.siblings=function(t){var e=Mt(t,this._root);return e.length<2?[]:e[e.length-2].children.map(function(t){return t.value}).filter(function(e){return e!==t})},t.prototype.pathFromRoot=function(t){return Mt(t,this._root).map(function(t){return t.value})},t}();function Pt(t,e){var n,r;if(t===e.value)return e;try{for(var i=Object(a.__values)(e.children),o=i.next();!o.done;o=i.next()){var s=Pt(t,o.value);if(s)return s}}catch(u){n={error:u}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null}function Mt(t,e){var n,r;if(t===e.value)return[e];try{for(var i=Object(a.__values)(e.children),o=i.next();!o.done;o=i.next()){var s=Mt(t,o.value);if(s.length)return s.unshift(e),s}}catch(u){n={error:u}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return[]}var jt=function(){function t(t,e){this.value=t,this.children=e}return t.prototype.toString=function(){return"TreeNode("+this.value+")"},t}();function qt(t){var e={};return t&&t.children.forEach(function(t){return e[t.value.outlet]=t}),e}var Ft=function(t){function e(e,n){var a=t.call(this,e)||this;return a.snapshot=n,Bt(a,e),a}return Object(a.__extends)(e,t),e.prototype.toString=function(){return this.snapshot.toString()},e}(Lt);function zt(t,e){var n=function(t,e){var n=new Gt([],{},{},"",{},X,e,null,t.root,-1,{});return new Vt("",new jt(n,[]))}(t,e),a=new u.a([new mt("",{})]),r=new u.a({}),i=new u.a({}),o=new u.a({}),s=new u.a(""),l=new Yt(a,r,o,s,i,X,e,n.root);return l.snapshot=n.root,new Ft(new jt(l,[]),n)}var Yt=function(){function t(t,e,n,a,r,i,o,s){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=o,this._futureSnapshot=s}return Object.defineProperty(t.prototype,"routeConfig",{get:function(){return this._futureSnapshot.routeConfig},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMap",{get:function(){return this._paramMap||(this._paramMap=this.params.pipe(Object(g.a)(function(t){return Q(t)}))),this._paramMap},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(Object(g.a)(function(t){return Q(t)}))),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this.snapshot?this.snapshot.toString():"Future("+this._futureSnapshot+")"},t}();function Ht(t,e){void 0===e&&(e="emptyOnly");var n=t.pathFromRoot,r=0;if("always"!==e)for(r=n.length-1;r>=1;){var i=n[r],o=n[r-1];if(i.routeConfig&&""===i.routeConfig.path)r--;else{if(o.component)break;r--}}return function(t){return t.reduce(function(t,e){return{params:Object(a.__assign)({},t.params,e.params),data:Object(a.__assign)({},t.data,e.data),resolve:Object(a.__assign)({},t.resolve,e._resolvedData)}},{params:{},data:{},resolve:{}})}(n.slice(r))}var Gt=function(){function t(t,e,n,a,r,i,o,s,u,l,c){this.url=t,this.params=e,this.queryParams=n,this.fragment=a,this.data=r,this.outlet=i,this.component=o,this.routeConfig=s,this._urlSegment=u,this._lastPathIndex=l,this._resolve=c}return Object.defineProperty(t.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMap",{get:function(){return this._paramMap||(this._paramMap=Q(this.params)),this._paramMap},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"queryParamMap",{get:function(){return this._queryParamMap||(this._queryParamMap=Q(this.queryParams)),this._queryParamMap},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"Route(url:'"+this.url.map(function(t){return t.toString()}).join("/")+"', path:'"+(this.routeConfig?this.routeConfig.path:"")+"')"},t}(),Vt=function(t){function e(e,n){var a=t.call(this,n)||this;return a.url=e,Bt(a,n),a}return Object(a.__extends)(e,t),e.prototype.toString=function(){return Ut(this._root)},e}(Lt);function Bt(t,e){e.value._routerState=t,e.children.forEach(function(e){return Bt(t,e)})}function Ut(t){var e=t.children.length>0?" { "+t.children.map(Ut).join(", ")+" } ":"";return""+t.value+e}function Wt(t){if(t.snapshot){var e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,ut(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),ut(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(var n=0;n<t.length;++n)if(!ut(t[n],e[n]))return!1;return!0}(e.url,n.url)||t.url.next(n.url),ut(e.data,n.data)||t.data.next(n.data)}else t.snapshot=t._futureSnapshot,t.data.next(t._futureSnapshot.data)}function Kt(t,e){var n,a;return ut(t.params,e.params)&&bt(n=t.url,a=e.url)&&n.every(function(t,e){return ut(t.parameters,a[e].parameters)})&&!(!t.parent!=!e.parent)&&(!t.parent||Kt(t.parent,e.parent))}function $t(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Zt(t,e,n,a,r){var i={};return a&&dt(a,function(t,e){i[e]=Array.isArray(t)?t.map(function(t){return""+t}):""+t}),new ht(n.root===t?e:function t(e,n,a){var r={};return dt(e.children,function(e,i){r[i]=e===n?a:t(e,n,a)}),new gt(e.segments,r)}(n.root,t,e),i,r)}var Xt=function(){function t(t,e,n){if(this.isAbsolute=t,this.numberOfDoubleDots=e,this.commands=n,t&&n.length>0&&$t(n[0]))throw new Error("Root segment cannot have matrix parameters");var a=n.find(function(t){return"object"==typeof t&&null!=t&&t.outlets});if(a&&a!==ct(n))throw new Error("{outlets:{}} has to be the last command")}return t.prototype.toRoot=function(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]},t}(),Jt=function(){return function(t,e,n){this.segmentGroup=t,this.processChildren=e,this.index=n}}();function Qt(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets[X]:""+t}function te(t,e,n){if(t||(t=new gt([],{})),0===t.segments.length&&t.hasChildren())return ee(t,e,n);var a=function(t,e,n){for(var a=0,r=e,i={match:!1,pathIndex:0,commandIndex:0};r<t.segments.length;){if(a>=n.length)return i;var o=t.segments[r],s=Qt(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(!ie(s,u,o))return i;a+=2}else{if(!ie(s,{},o))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){var i=new gt(t.segments.slice(0,a.pathIndex),{});return i.children[X]=new gt(t.segments.slice(a.pathIndex),t.children),ee(i,0,r)}return a.match&&0===r.length?new gt(t.segments,{}):a.match&&!t.hasChildren()?ne(t,e,n):a.match?ee(t,0,r):ne(t,e,n)}function ee(t,e,n){if(0===n.length)return new gt(t.segments,{});var a=function(t){var e,n;return"object"!=typeof t[0]?((e={})[X]=t,e):void 0===t[0].outlets?((n={})[X]=t,n):t[0].outlets}(n),r={};return dt(a,function(n,a){null!==n&&(r[a]=te(t.children[a],e,n))}),dt(t.children,function(t,e){void 0===a[e]&&(r[e]=t)}),new gt(t.segments,r)}function ne(t,e,n){for(var a=t.segments.slice(0,e),r=0;r<n.length;){if("object"==typeof n[r]&&void 0!==n[r].outlets){var i=ae(n[r].outlets);return new gt(a,i)}if(0===r&&$t(n[0]))a.push(new mt(t.segments[e].path,n[0])),r++;else{var o=Qt(n[r]),s=r<n.length-1?n[r+1]:null;o&&s&&$t(s)?(a.push(new mt(o,re(s))),r+=2):(a.push(new mt(o,{})),r++)}}return new gt(a,{})}function ae(t){var e={};return dt(t,function(t,n){null!==t&&(e[n]=ne(new gt([],{}),0,t))}),e}function re(t){var e={};return dt(t,function(t,n){return e[n]=""+t}),e}function ie(t,e,n){return t==n.path&&ut(e,n.parameters)}var oe=function(){function t(t,e,n,a){this.routeReuseStrategy=t,this.futureState=e,this.currState=n,this.forwardEvent=a}return t.prototype.activate=function(t){var e=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,n,t),Wt(this.futureState.root),this.activateChildRoutes(e,n,t)},t.prototype.deactivateChildRoutes=function(t,e,n){var a=this,r=qt(e);t.children.forEach(function(t){var e=t.value.outlet;a.deactivateRoutes(t,r[e],n),delete r[e]}),dt(r,function(t,e){a.deactivateRouteAndItsChildren(t,n)})},t.prototype.deactivateRoutes=function(t,e,n){var a=t.value,r=e?e.value:null;if(a===r)if(a.component){var i=n.getContext(a.outlet);i&&this.deactivateChildRoutes(t,e,i.children)}else this.deactivateChildRoutes(t,e,n);else r&&this.deactivateRouteAndItsChildren(e,n)},t.prototype.deactivateRouteAndItsChildren=function(t,e){this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,e):this.deactivateRouteAndOutlet(t,e)},t.prototype.detachAndStoreRouteSubtree=function(t,e){var n=e.getContext(t.value.outlet);if(n&&n.outlet){var a=n.outlet.detach(),r=n.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:a,route:t,contexts:r})}},t.prototype.deactivateRouteAndOutlet=function(t,e){var n=this,a=e.getContext(t.value.outlet);if(a){var r=qt(t),i=t.value.component?a.children:e;dt(r,function(t,e){return n.deactivateRouteAndItsChildren(t,i)}),a.outlet&&(a.outlet.deactivate(),a.children.onOutletDeactivated())}},t.prototype.activateChildRoutes=function(t,e,n){var a=this,r=qt(e);t.children.forEach(function(t){a.activateRoutes(t,r[t.value.outlet],n),a.forwardEvent(new K(t.value.snapshot))}),t.children.length&&this.forwardEvent(new U(t.value.snapshot))},t.prototype.activateRoutes=function(t,e,n){var a=t.value,r=e?e.value:null;if(Wt(a),a===r)if(a.component){var i=n.getOrCreateContext(a.outlet);this.activateChildRoutes(t,e,i.children)}else this.activateChildRoutes(t,e,n);else if(a.component)if(i=n.getOrCreateContext(a.outlet),this.routeReuseStrategy.shouldAttach(a.snapshot)){var o=this.routeReuseStrategy.retrieve(a.snapshot);this.routeReuseStrategy.store(a.snapshot,null),i.children.onOutletReAttached(o.contexts),i.attachRef=o.componentRef,i.route=o.route.value,i.outlet&&i.outlet.attach(o.componentRef,o.route.value),se(o.route)}else{var s=function(t){for(var e=a.snapshot.parent;e;e=e.parent){var n=e.routeConfig;if(n&&n._loadedConfig)return n._loadedConfig;if(n&&n.component)return null}return null}(),u=s?s.module.componentFactoryResolver:null;i.attachRef=null,i.route=a,i.resolver=u,i.outlet&&i.outlet.activateWith(a,u),this.activateChildRoutes(t,null,i.children)}else this.activateChildRoutes(t,null,n)},t}();function se(t){Wt(t.value),t.children.forEach(se)}function ue(t){return"function"==typeof t}function le(t){return t instanceof ht}var ce=function(){return function(t){this.segmentGroup=t||null}}(),de=function(){return function(t){this.urlTree=t}}();function fe(t){return new l.a(function(e){return e.error(new ce(t))})}function pe(t){return new l.a(function(e){return e.error(new de(t))})}function he(t){return new l.a(function(e){return e.error(new Error("Only absolute redirects can have named outlets. redirectTo: '"+t+"'"))})}var ge=function(){function t(t,e,n,a,r){this.configLoader=e,this.urlSerializer=n,this.urlTree=a,this.config=r,this.allowRedirects=!0,this.ngModule=t.get(i.NgModuleRef)}return t.prototype.apply=function(){var t=this;return this.expandSegmentGroup(this.ngModule,this.config,this.urlTree.root,X).pipe(Object(g.a)(function(e){return t.createUrlTree(e,t.urlTree.queryParams,t.urlTree.fragment)})).pipe(Object(y.a)(function(e){if(e instanceof de)return t.allowRedirects=!1,t.match(e.urlTree);if(e instanceof ce)throw t.noMatchError(e);throw e}))},t.prototype.match=function(t){var e=this;return this.expandSegmentGroup(this.ngModule,this.config,t.root,X).pipe(Object(g.a)(function(n){return e.createUrlTree(n,t.queryParams,t.fragment)})).pipe(Object(y.a)(function(t){if(t instanceof ce)throw e.noMatchError(t);throw t}))},t.prototype.noMatchError=function(t){return new Error("Cannot match any routes. URL Segment: '"+t.segmentGroup+"'")},t.prototype.createUrlTree=function(t,e,n){var a,r=t.segments.length>0?new gt([],((a={})[X]=t,a)):t;return new ht(r,e,n)},t.prototype.expandSegmentGroup=function(t,e,n,a){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(Object(g.a)(function(t){return new gt([],t)})):this.expandSegment(t,n,e,n.segments,a,!0)},t.prototype.expandChildren=function(t,e,n){var a=this;return function(n,r){if(0===Object.keys(n).length)return Object(o.a)({});var i=[],s=[],u={};return dt(n,function(n,r){var o,l,c=(o=r,l=n,a.expandSegmentGroup(t,e,l,o)).pipe(Object(g.a)(function(t){return u[r]=t}));r===X?i.push(c):s.push(c)}),o.a.apply(null,i.concat(s)).pipe(Object(m.a)(),Object(b.a)(),Object(g.a)(function(){return u}))}(n.children)},t.prototype.expandSegment=function(t,e,n,r,i,s){var u=this;return o.a.apply(void 0,Object(a.__spread)(n)).pipe(Object(g.a)(function(a){return u.expandSegmentAgainstRoute(t,e,n,a,r,i,s).pipe(Object(y.a)(function(t){if(t instanceof ce)return Object(o.a)(null);throw t}))}),Object(m.a)(),Object(v.a)(function(t){return!!t}),Object(y.a)(function(t,n){if(t instanceof c.a||"EmptyError"===t.name){if(u.noLeftoversInUrl(e,r,i))return Object(o.a)(new gt([],{}));throw new ce(e)}throw t}))},t.prototype.noLeftoversInUrl=function(t,e,n){return 0===e.length&&!t.children[n]},t.prototype.expandSegmentAgainstRoute=function(t,e,n,a,r,i,o){return ve(a)!==i?fe(e):void 0===a.redirectTo?this.matchSegmentAgainstRoute(t,e,a,r):o&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i):fe(e)},t.prototype.expandSegmentAgainstRouteUsingRedirect=function(t,e,n,a,r,i){return"**"===a.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,a,i):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,a,r,i)},t.prototype.expandWildCardWithParamsAgainstRouteUsingRedirect=function(t,e,n,a){var r=this,i=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?pe(i):this.lineralizeSegments(n,i).pipe(Object(_.a)(function(n){var i=new gt(n,{});return r.expandSegment(t,i,e,n,a,!1)}))},t.prototype.expandRegularSegmentAgainstRouteUsingRedirect=function(t,e,n,a,r,i){var o=this,s=me(e,a,r),u=s.consumedSegments,l=s.lastChild,c=s.positionalParamSegments;if(!s.matched)return fe(e);var d=this.applyRedirectCommands(u,a.redirectTo,c);return a.redirectTo.startsWith("/")?pe(d):this.lineralizeSegments(a,d).pipe(Object(_.a)(function(a){return o.expandSegment(t,e,n,a.concat(r.slice(l)),i,!1)}))},t.prototype.matchSegmentAgainstRoute=function(t,e,n,r){var i=this;if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(Object(g.a)(function(t){return n._loadedConfig=t,new gt(r,{})})):Object(o.a)(new gt(r,{}));var s=me(e,n,r),u=s.consumedSegments,l=s.lastChild;if(!s.matched)return fe(e);var c=r.slice(l);return this.getChildConfig(t,n,r).pipe(Object(_.a)(function(t){var n=t.module,r=t.routes,s=function(t,e,n,r){return n.length>0&&function(t,e,n){return r.some(function(n){return ye(t,e,n)&&ve(n)!==X})}(t,n)?{segmentGroup:be(new gt(e,function(t,e){var n,r,i={};i[X]=e;try{for(var o=Object(a.__values)(t),s=o.next();!s.done;s=o.next()){var u=s.value;""===u.path&&ve(u)!==X&&(i[ve(u)]=new gt([],{}))}}catch(l){n={error:l}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i}(r,new gt(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return r.some(function(n){return ye(t,e,n)})}(t,n)?{segmentGroup:be(new gt(t.segments,function(t,e,n,r){var i,o,s={};try{for(var u=Object(a.__values)(n),l=u.next();!l.done;l=u.next()){var c=l.value;ye(t,e,c)&&!r[ve(c)]&&(s[ve(c)]=new gt([],{}))}}catch(d){i={error:d}}finally{try{l&&!l.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}return Object(a.__assign)({},r,s)}(t,n,r,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,u,c,r),l=s.segmentGroup,d=s.slicedSegments;return 0===d.length&&l.hasChildren()?i.expandChildren(n,r,l).pipe(Object(g.a)(function(t){return new gt(u,t)})):0===r.length&&0===d.length?Object(o.a)(new gt(u,{})):i.expandSegment(n,l,r,d,X,!0).pipe(Object(g.a)(function(t){return new gt(u.concat(t.segments),t.children)}))}))},t.prototype.getChildConfig=function(t,e,n){var a=this;return e.children?Object(o.a)(new at(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?Object(o.a)(e._loadedConfig):function(t,e,n){var a=e.canLoad;return a&&0!==a.length?Object(s.a)(a).pipe(Object(g.a)(function(a){var r,i=t.get(a);if(function(t){return t&&ue(t.canLoad)}(i))r=i.canLoad(e,n);else{if(!ue(i))throw new Error("Invalid CanLoad guard");r=i(e,n)}return ft(r)})).pipe(Object(m.a)(),Object(x.a)(function(t){return!0===t})):Object(o.a)(!0)}(t.injector,e,n).pipe(Object(_.a)(function(n){return n?a.configLoader.load(t.injector,e).pipe(Object(g.a)(function(t){return e._loadedConfig=t,t})):function(t){return new l.a(function(e){return e.error(et("Cannot load children because the guard of the route \"path: '"+t.path+"'\" returned false"))})}(e)})):Object(o.a)(new at([],t))},t.prototype.lineralizeSegments=function(t,e){for(var n=[],a=e.root;;){if(n=n.concat(a.segments),0===a.numberOfChildren)return Object(o.a)(n);if(a.numberOfChildren>1||!a.children[X])return he(t.redirectTo);a=a.children[X]}},t.prototype.applyRedirectCommands=function(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)},t.prototype.applyRedirectCreatreUrlTree=function(t,e,n,a){var r=this.createSegmentGroup(t,e.root,n,a);return new ht(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)},t.prototype.createQueryParams=function(t,e){var n={};return dt(t,function(t,a){if("string"==typeof t&&t.startsWith(":")){var r=t.substring(1);n[a]=e[r]}else n[a]=t}),n},t.prototype.createSegmentGroup=function(t,e,n,a){var r=this,i=this.createSegments(t,e.segments,n,a),o={};return dt(e.children,function(e,i){o[i]=r.createSegmentGroup(t,e,n,a)}),new gt(i,o)},t.prototype.createSegments=function(t,e,n,a){var r=this;return e.map(function(e){return e.path.startsWith(":")?r.findPosParam(t,e,a):r.findOrReturn(e,n)})},t.prototype.findPosParam=function(t,e,n){var a=n[e.path.substring(1)];if(!a)throw new Error("Cannot redirect to '"+t+"'. Cannot find '"+e.path+"'.");return a},t.prototype.findOrReturn=function(t,e){var n,r,i=0;try{for(var o=Object(a.__values)(e),s=o.next();!s.done;s=o.next()){var u=s.value;if(u.path===t.path)return e.splice(i),u;i++}}catch(l){n={error:l}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return t},t}();function me(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:{}};var a=(e.matcher||nt)(n,t,e);return a?{matched:!0,consumedSegments:a.consumed,lastChild:a.consumed.length,positionalParamSegments:a.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function be(t){if(1===t.numberOfChildren&&t.children[X]){var e=t.children[X];return new gt(t.segments.concat(e.segments),e.children)}return t}function ye(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function ve(t){return t.outlet||X}var _e=function(){return function(t){this.path=t,this.route=this.path[this.path.length-1]}}(),xe=function(){return function(t,e){this.component=t,this.route=e}}();function Te(t,e,n){var a=function(t){if(!t)return null;for(var e=t.parent;e;e=e.parent){var n=e.routeConfig;if(n&&n._loadedConfig)return n._loadedConfig}return null}(e);return(a?a.module.injector:n).get(t)}function we(t,e,n,a,r){void 0===r&&(r={canDeactivateChecks:[],canActivateChecks:[]});var i=qt(e);return t.children.forEach(function(t){!function(t,e,n,a,r){void 0===r&&(r={canDeactivateChecks:[],canActivateChecks:[]});var i=t.value,o=e?e.value:null,s=n?n.getContext(t.value.outlet):null;if(o&&i.routeConfig===o.routeConfig){var u=function(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!bt(t.url,e.url);case"pathParamsOrQueryParamsChange":return!bt(t.url,e.url)||!ut(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Kt(t,e)||!ut(t.queryParams,e.queryParams);case"paramsChange":default:return!Kt(t,e)}}(o,i,i.routeConfig.runGuardsAndResolvers);u?r.canActivateChecks.push(new _e(a)):(i.data=o.data,i._resolvedData=o._resolvedData),we(t,e,i.component?s?s.children:null:n,a,r),u&&r.canDeactivateChecks.push(new xe(s&&s.outlet&&s.outlet.component||null,o))}else o&&Se(e,s,r),r.canActivateChecks.push(new _e(a)),we(t,null,i.component?s?s.children:null:n,a,r)}(t,i[t.value.outlet],n,a.concat([t.value]),r),delete i[t.value.outlet]}),dt(i,function(t,e){return Se(t,n.getContext(e),r)}),r}function Se(t,e,n){var a=qt(t),r=t.value;dt(a,function(t,a){Se(t,r.component?e?e.children.getContext(a):null:e,n)}),n.canDeactivateChecks.push(new xe(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}var Oe=Symbol("INITIAL_VALUE");function Ce(){return Object(T.a)(function(t){return d.b.apply(void 0,Object(a.__spread)(t.map(function(t){return t.pipe(Object(w.a)(1),Object(S.a)(Oe))}))).pipe(Object(O.a)(function(t,e){var n=!1;return e.reduce(function(t,a,r){if(t!==Oe)return t;if(a===Oe&&(n=!0),!n){if(!1===a)return a;if(r===e.length-1||le(a))return a}return t},t)},Oe),Object(C.a)(function(t){return t!==Oe}),Object(g.a)(function(t){return le(t)?t:!0===t}),Object(w.a)(1))})}function ke(t,e){return null!==t&&e&&e(new W(t)),Object(o.a)(!0)}function Ie(t,e){return null!==t&&e&&e(new B(t)),Object(o.a)(!0)}function De(t,e,n){var a=e.routeConfig?e.routeConfig.canActivate:null;if(!a||0===a.length)return Object(o.a)(!0);var r=a.map(function(a){return Object(f.a)(function(){var r,i=Te(a,e,n);if(function(t){return t&&ue(t.canActivate)}(i))r=ft(i.canActivate(e,t));else{if(!ue(i))throw new Error("Invalid CanActivate guard");r=ft(i(e,t))}return r.pipe(Object(v.a)())})});return Object(o.a)(r).pipe(Ce())}function Re(t,e,n){var a=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(function(t){return function(t){var e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)}).filter(function(t){return null!==t}).map(function(e){return Object(f.a)(function(){var r=e.guards.map(function(r){var i,o=Te(r,e.node,n);if(function(t){return t&&ue(t.canActivateChild)}(o))i=ft(o.canActivateChild(a,t));else{if(!ue(o))throw new Error("Invalid CanActivateChild guard");i=ft(o(a,t))}return i.pipe(Object(v.a)())});return Object(o.a)(r).pipe(Ce())})});return Object(o.a)(r).pipe(Ce())}var Ne=function(){return function(){}}(),Ae=function(){function t(t,e,n,a,r,i){this.rootComponentType=t,this.config=e,this.urlTree=n,this.url=a,this.paramsInheritanceStrategy=r,this.relativeLinkResolution=i}return t.prototype.recognize=function(){try{var t=Pe(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,X),n=new Gt([],Object.freeze({}),Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,{},X,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new jt(n,e),i=new Vt(this.url,r);return this.inheritParamsAndData(i._root),Object(o.a)(i)}catch(s){return new l.a(function(t){return t.error(s)})}},t.prototype.inheritParamsAndData=function(t){var e=this,n=t.value,a=Ht(n,this.paramsInheritanceStrategy);n.params=Object.freeze(a.params),n.data=Object.freeze(a.data),t.children.forEach(function(t){return e.inheritParamsAndData(t)})},t.prototype.processSegmentGroup=function(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)},t.prototype.processChildren=function(t,e){var n,a=this,r=yt(e,function(e,n){return a.processSegmentGroup(t,e,n)});return n={},r.forEach(function(t){var e=n[t.value.outlet];if(e){var a=e.url.map(function(t){return t.toString()}).join("/"),r=t.value.url.map(function(t){return t.toString()}).join("/");throw new Error("Two segments cannot have the same outlet name: '"+a+"' and '"+r+"'.")}n[t.value.outlet]=t.value}),r.sort(function(t,e){return t.value.outlet===X?-1:e.value.outlet===X?1:t.value.outlet.localeCompare(e.value.outlet)}),r},t.prototype.processSegment=function(t,e,n,r){var i,o;try{for(var s=Object(a.__values)(t),u=s.next();!u.done;u=s.next()){var l=u.value;try{return this.processSegmentAgainstRoute(l,e,n,r)}catch(c){if(!(c instanceof Ne))throw c}}}catch(d){i={error:d}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}if(this.noLeftoversInUrl(e,n,r))return[];throw new Ne},t.prototype.noLeftoversInUrl=function(t,e,n){return 0===e.length&&!t.children[n]},t.prototype.processSegmentAgainstRoute=function(t,e,n,r){if(t.redirectTo)throw new Ne;if((t.outlet||X)!==r)throw new Ne;var i,o=[],s=[];if("**"===t.path){var u=n.length>0?ct(n).parameters:{};i=new Gt(n,u,Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,qe(t),r,t.component,t,Ee(e),Le(e)+n.length,Fe(t))}else{var l=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new Ne;return{consumedSegments:[],lastChild:0,parameters:{}}}var r=(e.matcher||nt)(n,t,e);if(!r)throw new Ne;var i={};dt(r.posParams,function(t,e){i[e]=t.path});var o=r.consumed.length>0?Object(a.__assign)({},i,r.consumed[r.consumed.length-1].parameters):i;return{consumedSegments:r.consumed,lastChild:r.consumed.length,parameters:o}}(e,t,n);o=l.consumedSegments,s=n.slice(l.lastChild),i=new Gt(o,l.parameters,Object.freeze(Object(a.__assign)({},this.urlTree.queryParams)),this.urlTree.fragment,qe(t),r,t.component,t,Ee(e),Le(e)+o.length,Fe(t))}var c=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),d=Pe(e,o,s,c,this.relativeLinkResolution),f=d.segmentGroup,p=d.slicedSegments;if(0===p.length&&f.hasChildren()){var h=this.processChildren(c,f);return[new jt(i,h)]}if(0===c.length&&0===p.length)return[new jt(i,[])];var g=this.processSegment(c,f,p,X);return[new jt(i,g)]},t}();function Ee(t){for(var e=t;e._sourceSegment;)e=e._sourceSegment;return e}function Le(t){for(var e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;e._sourceSegment;)n+=(e=e._sourceSegment)._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Pe(t,e,n,r,i){if(n.length>0&&function(t,e,n){return r.some(function(n){return Me(t,e,n)&&je(n)!==X})}(t,n)){var o=new gt(e,function(t,e,n,r){var i,o,s={};s[X]=r,r._sourceSegment=t,r._segmentIndexShift=e.length;try{for(var u=Object(a.__values)(n),l=u.next();!l.done;l=u.next()){var c=l.value;if(""===c.path&&je(c)!==X){var d=new gt([],{});d._sourceSegment=t,d._segmentIndexShift=e.length,s[je(c)]=d}}}catch(f){i={error:f}}finally{try{l&&!l.done&&(o=u.return)&&o.call(u)}finally{if(i)throw i.error}}return s}(t,e,r,new gt(n,t.children)));return o._sourceSegment=t,o._segmentIndexShift=e.length,{segmentGroup:o,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return r.some(function(n){return Me(t,e,n)})}(t,n)){var s=new gt(t.segments,function(t,e,n,r,i,o){var s,u,l={};try{for(var c=Object(a.__values)(r),d=c.next();!d.done;d=c.next()){var f=d.value;if(Me(t,n,f)&&!i[je(f)]){var p=new gt([],{});p._sourceSegment=t,p._segmentIndexShift="legacy"===o?t.segments.length:e.length,l[je(f)]=p}}}catch(h){s={error:h}}finally{try{d&&!d.done&&(u=c.return)&&u.call(c)}finally{if(s)throw s.error}}return Object(a.__assign)({},i,l)}(t,e,n,r,t.children,i));return s._sourceSegment=t,s._segmentIndexShift=e.length,{segmentGroup:s,slicedSegments:n}}var u=new gt(t.segments,t.children);return u._sourceSegment=t,u._segmentIndexShift=e.length,{segmentGroup:u,slicedSegments:n}}function Me(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function je(t){return t.outlet||X}function qe(t){return t.data||{}}function Fe(t){return t.resolve||{}}function ze(t,e,n,a){var r=Te(t,e,a);return ft(r.resolve?r.resolve(e,n):r(e,n))}function Ye(t){return function(e){return e.pipe(Object(T.a)(function(e){var n=t(e);return n?Object(s.a)(n).pipe(Object(g.a)(function(){return e})):Object(s.a)([e])}))}}var He=function(){return function(){}}(),Ge=function(){function t(){}return t.prototype.shouldDetach=function(t){return!1},t.prototype.store=function(t,e){},t.prototype.shouldAttach=function(t){return!1},t.prototype.retrieve=function(t){return null},t.prototype.shouldReuseRoute=function(t,e){return t.routeConfig===e.routeConfig},t}(),Ve=new i.InjectionToken("ROUTES"),Be=function(){function t(t,e,n,a){this.loader=t,this.compiler=e,this.onLoadStartListener=n,this.onLoadEndListener=a}return t.prototype.load=function(t,e){var n=this;return this.onLoadStartListener&&this.onLoadStartListener(e),this.loadModuleFactory(e.loadChildren).pipe(Object(g.a)(function(a){n.onLoadEndListener&&n.onLoadEndListener(e);var r=a.create(t);return new at(lt(r.injector.get(Ve)).map(st),r)}))},t.prototype.loadModuleFactory=function(t){var e=this;return"string"==typeof t?Object(s.a)(this.loader.load(t)):ft(t()).pipe(Object(_.a)(function(t){return t instanceof i.NgModuleFactory?Object(o.a)(t):Object(s.a)(e.compiler.compileModuleAsync(t))}))},t}(),Ue=function(){return function(){}}(),We=function(){function t(){}return t.prototype.shouldProcessUrl=function(t){return!0},t.prototype.extract=function(t){return t},t.prototype.merge=function(t,e){return t},t}();function Ke(t){throw t}function $e(t,e,n){return e.parse("/")}function Ze(t,e){return Object(o.a)(null)}var Xe=function(){function t(t,e,n,a,r,o,s,l){var c=this;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 p.a,this.errorHandler=Ke,this.malformedUriErrorHandler=$e,this.navigated=!1,this.lastSuccessfulId=-1,this.hooks={beforePreactivation:Ze,afterPreactivation:Ze},this.urlHandlingStrategy=new We,this.routeReuseStrategy=new Ge,this.onSameUrlNavigation="ignore",this.paramsInheritanceStrategy="emptyOnly",this.urlUpdateStrategy="deferred",this.relativeLinkResolution="legacy",this.ngModule=r.get(i.NgModuleRef),this.console=r.get(i["\u0275Console"]);var d=r.get(i.NgZone);this.isNgZoneEnabled=d instanceof i.NgZone,this.resetConfig(l),this.currentUrlTree=new ht(new gt([],{}),{},null),this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.configLoader=new Be(o,s,function(t){return c.triggerEvent(new G(t))},function(t){return c.triggerEvent(new V(t))}),this.routerState=zt(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()}return t.prototype.setupNavigations=function(t){var e=this,n=this.events;return t.pipe(Object(C.a)(function(t){return 0!==t.id}),Object(g.a)(function(t){return Object(a.__assign)({},t,{extractedUrl:e.urlHandlingStrategy.extract(t.rawUrl)})}),Object(D.a)(function(t){e.currentNavigation={id:t.id,initialUrl:t.currentRawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:e.lastSuccessfulNavigation?Object(a.__assign)({},e.lastSuccessfulNavigation,{previousNavigation:null}):null}}),Object(T.a)(function(t){var r,i,l,c=!1,d=!1;return Object(o.a)(t).pipe(Object(T.a)(function(t){var r,i,s,u,l=!e.navigated||t.extractedUrl.toString()!==e.browserUrlTree.toString();if(("reload"===e.onSameUrlNavigation||l)&&e.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return Object(o.a)(t).pipe(Object(T.a)(function(t){var a=e.transitions.getValue();return n.next(new L(t.id,e.serializeUrl(t.extractedUrl),t.source,t.restoredState)),a!==e.transitions.getValue()?h.a:[t]}),Object(T.a)(function(t){return Promise.resolve(t)}),(r=e.ngModule.injector,i=e.configLoader,s=e.urlSerializer,u=e.config,function(t){return t.pipe(Object(T.a)(function(t){return function(e,n,a,r,i){return new ge(e,n,a,t.extractedUrl,i).apply()}(r,i,s,0,u).pipe(Object(g.a)(function(e){return Object(a.__assign)({},t,{urlAfterRedirects:e})}))}))}),Object(D.a)(function(t){e.currentNavigation=Object(a.__assign)({},e.currentNavigation,{finalUrl:t.urlAfterRedirects})}),function(t,n,r,i,o){return function(r){return r.pipe(Object(_.a)(function(r){return function(t,e,n,a,r,i){return void 0===r&&(r="emptyOnly"),void 0===i&&(i="legacy"),new Ae(t,e,n,a,r,i).recognize()}(t,n,r.urlAfterRedirects,(s=r.urlAfterRedirects,e.serializeUrl(s)),i,o).pipe(Object(g.a)(function(t){return Object(a.__assign)({},r,{targetSnapshot:t})}));var s}))}}(e.rootComponentType,e.config,0,e.paramsInheritanceStrategy,e.relativeLinkResolution),Object(D.a)(function(t){"eager"===e.urlUpdateStrategy&&(t.extras.skipLocationChange||e.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id),e.browserUrlTree=t.urlAfterRedirects)}),Object(D.a)(function(t){var a=new q(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);n.next(a)}));if(l&&e.rawUrlTree&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){var c=t.extractedUrl,d=t.source,f=t.restoredState,p=t.extras,m=new L(t.id,e.serializeUrl(c),d,f);n.next(m);var b=zt(c,e.rootComponentType).snapshot;return Object(o.a)(Object(a.__assign)({},t,{targetSnapshot:b,urlAfterRedirects:c,extras:Object(a.__assign)({},p,{skipLocationChange:!1,replaceUrl:!1})}))}return e.rawUrlTree=t.rawUrl,t.resolve(null),h.a}),Ye(function(t){var n=t.extras;return e.hooks.beforePreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})}),Object(D.a)(function(t){var n=new F(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}),Object(g.a)(function(t){return Object(a.__assign)({},t,{guards:(n=t.targetSnapshot,r=t.currentSnapshot,i=e.rootContexts,o=n._root,we(o,r?r._root:null,i,[o.value]))});var n,r,i,o}),function(t,e){return function(n){return n.pipe(Object(_.a)(function(n){var r=n.targetSnapshot,i=n.currentSnapshot,u=n.guards,l=u.canActivateChecks,c=u.canDeactivateChecks;return 0===c.length&&0===l.length?Object(o.a)(Object(a.__assign)({},n,{guardsResult:!0})):function(t,e,n,a){return Object(s.a)(t).pipe(Object(_.a)(function(t){return function(t,e,n,a,r){var i=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!i||0===i.length)return Object(o.a)(!0);var s=i.map(function(i){var o,s=Te(i,e,r);if(function(t){return t&&ue(t.canDeactivate)}(s))o=ft(s.canDeactivate(t,e,n,a));else{if(!ue(s))throw new Error("Invalid CanDeactivate guard");o=ft(s(t,e,n,a))}return o.pipe(Object(v.a)())});return Object(o.a)(s).pipe(Ce())}(t.component,t.route,n,e,a)}),Object(v.a)(function(t){return!0!==t},!0))}(c,r,i,t).pipe(Object(_.a)(function(n){return n&&"boolean"==typeof n?function(t,e,n,a){return Object(s.a)(e).pipe(Object(k.a)(function(e){return Object(s.a)([Ie(e.route.parent,a),ke(e.route,a),Re(t,e.path,n),De(t,e.route,n)]).pipe(Object(m.a)(),Object(v.a)(function(t){return!0!==t},!0))}),Object(v.a)(function(t){return!0!==t},!0))}(r,l,t,e):Object(o.a)(n)}),Object(g.a)(function(t){return Object(a.__assign)({},n,{guardsResult:t})}))}))}}(e.ngModule.injector,function(t){return e.triggerEvent(t)}),Object(D.a)(function(t){if(le(t.guardsResult)){var n=et('Redirecting to "'+e.serializeUrl(t.guardsResult)+'"');throw n.url=t.guardsResult,n}}),Object(D.a)(function(t){var n=new z(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);e.triggerEvent(n)}),Object(C.a)(function(t){if(!t.guardsResult){e.resetUrlToCurrentUrlTree();var a=new M(t.id,e.serializeUrl(t.extractedUrl),"");return n.next(a),t.resolve(!1),!1}return!0}),Ye(function(t){if(t.guards.canActivateChecks.length)return Object(o.a)(t).pipe(Object(D.a)(function(t){var n=new Y(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}),(n=e.paramsInheritanceStrategy,r=e.ngModule.injector,function(t){return t.pipe(Object(_.a)(function(t){var e=t.targetSnapshot,i=t.guards.canActivateChecks;return i.length?Object(s.a)(i).pipe(Object(k.a)(function(t){return function(t,n,r,i){return function(t,e,n,a){var r=Object.keys(t);if(0===r.length)return Object(o.a)({});if(1===r.length){var i=r[0];return ze(t[i],e,n,a).pipe(Object(g.a)(function(t){var e;return(e={})[i]=t,e}))}var u={};return Object(s.a)(r).pipe(Object(_.a)(function(r){return ze(t[r],e,n,a).pipe(Object(g.a)(function(t){return u[r]=t,t}))})).pipe(Object(b.a)(),Object(g.a)(function(){return u}))}(t._resolve,t,e,i).pipe(Object(g.a)(function(e){return t._resolvedData=e,t.data=Object(a.__assign)({},t.data,Ht(t,r).resolve),null}))}(t.route,0,n,r)}),Object(I.a)(function(t,e){return t}),Object(g.a)(function(e){return t})):Object(o.a)(t)}))}),Object(D.a)(function(t){var n=new H(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)}));var n,r}),Ye(function(t){var n=t.extras;return e.hooks.afterPreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})}),Object(g.a)(function(t){var n,r,i,o=(i=function t(e,n,r){if(r&&e.shouldReuseRoute(n.value,r.value.snapshot)){(c=r.value)._futureSnapshot=n.value;var i=function(e,n,r){return n.children.map(function(n){var i,o;try{for(var s=Object(a.__values)(r.children),u=s.next();!u.done;u=s.next()){var l=u.value;if(e.shouldReuseRoute(l.value.snapshot,n.value))return t(e,n,l)}}catch(c){i={error:c}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return t(e,n)})}(e,n,r);return new jt(c,i)}var o=e.retrieve(n.value);if(o){var s=o.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(var a=0;a<e.children.length;++a)t(e.children[a],n.children[a])}(n,s),s}var l,c=new Yt(new u.a((l=n.value).url),new u.a(l.params),new u.a(l.queryParams),new u.a(l.fragment),new u.a(l.data),l.outlet,l.component,l);return i=n.children.map(function(n){return t(e,n)}),new jt(c,i)}(e.routeReuseStrategy,(n=t.targetSnapshot)._root,(r=t.currentRouterState)?r._root:void 0),new Ft(i,n));return Object(a.__assign)({},t,{targetRouterState:o})}),Object(D.a)(function(t){e.currentUrlTree=t.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(e.currentUrlTree,t.rawUrl),e.routerState=t.targetRouterState,"deferred"===e.urlUpdateStrategy&&(t.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,!!t.extras.replaceUrl,t.id,t.extras.state),e.browserUrlTree=t.urlAfterRedirects)}),(r=e.rootContexts,i=e.routeReuseStrategy,l=function(t){return e.triggerEvent(t)},Object(g.a)(function(t){return new oe(i,t.targetRouterState,t.currentRouterState,l).activate(r),t})),Object(D.a)({next:function(){c=!0},complete:function(){c=!0}}),Object(R.a)(function(){if(!c&&!d){e.resetUrlToCurrentUrlTree();var a=new M(t.id,e.serializeUrl(t.extractedUrl),"Navigation ID "+t.id+" is not equal to the current navigation id "+e.navigationId);n.next(a),t.resolve(!1)}e.currentNavigation=null}),Object(y.a)(function(a){if(d=!0,(s=a)&&s[tt]){var r=le(a.url);r||(e.navigated=!0,e.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl));var i=new M(t.id,e.serializeUrl(t.extractedUrl),a.message);n.next(i),t.resolve(!1),r&&e.navigateByUrl(a.url)}else{e.resetStateAndUrl(t.currentRouterState,t.currentUrlTree,t.rawUrl);var o=new j(t.id,e.serializeUrl(t.extractedUrl),a);n.next(o);try{t.resolve(e.errorHandler(a))}catch(u){t.reject(u)}}var s;return h.a}))}))},t.prototype.resetRootComponentType=function(t){this.rootComponentType=t,this.routerState.root.component=this.rootComponentType},t.prototype.getTransition=function(){return this.transitions.value},t.prototype.setTransition=function(t){this.transitions.next(Object(a.__assign)({},this.getTransition(),t))},t.prototype.initialNavigation=function(){this.setUpLocationChangeListener(),0===this.navigationId&&this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})},t.prototype.setUpLocationChangeListener=function(){var t=this;this.locationSubscription||(this.locationSubscription=this.location.subscribe(function(e){var n=t.parseUrl(e.url),a="popstate"===e.type?"popstate":"hashchange",r=e.state&&e.state.navigationId?e.state:null;setTimeout(function(){t.scheduleNavigation(n,a,r,{replaceUrl:!0})},0)}))},Object.defineProperty(t.prototype,"url",{get:function(){return this.serializeUrl(this.currentUrlTree)},enumerable:!0,configurable:!0}),t.prototype.getCurrentNavigation=function(){return this.currentNavigation},t.prototype.triggerEvent=function(t){this.events.next(t)},t.prototype.resetConfig=function(t){rt(t),this.config=t.map(st),this.navigated=!1,this.lastSuccessfulId=-1},t.prototype.ngOnDestroy=function(){this.dispose()},t.prototype.dispose=function(){this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=null)},t.prototype.createUrlTree=function(t,e){void 0===e&&(e={});var n=e.relativeTo,r=e.queryParams,o=e.fragment,s=e.preserveQueryParams,u=e.queryParamsHandling,l=e.preserveFragment;Object(i.isDevMode)()&&s&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");var c=n||this.routerState.root,d=l?this.currentUrlTree.fragment:o,f=null;if(u)switch(u){case"merge":f=Object(a.__assign)({},this.currentUrlTree.queryParams,r);break;case"preserve":f=this.currentUrlTree.queryParams;break;default:f=r||null}else f=s?this.currentUrlTree.queryParams:r||null;return null!==f&&(f=this.removeEmptyProps(f)),function(t,e,n,r,i){if(0===n.length)return Zt(e.root,e.root,e,r,i);var o=function(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new Xt(!0,0,t);var e=0,n=!1,r=t.reduce(function(t,r,i){if("object"==typeof r&&null!=r){if(r.outlets){var o={};return dt(r.outlets,function(t,e){o[e]="string"==typeof t?t.split("/"):t}),Object(a.__spread)(t,[{outlets:o}])}if(r.segmentPath)return Object(a.__spread)(t,[r.segmentPath])}return"string"!=typeof r?Object(a.__spread)(t,[r]):0===i?(r.split("/").forEach(function(a,r){0==r&&"."===a||(0==r&&""===a?n=!0:".."===a?e++:""!=a&&t.push(a))}),t):Object(a.__spread)(t,[r])},[]);return new Xt(n,e,r)}(n);if(o.toRoot())return Zt(e.root,new gt([],{}),e,r,i);var s=function(t,n,a){if(t.isAbsolute)return new Jt(e.root,!0,0);if(-1===a.snapshot._lastPathIndex)return new Jt(a.snapshot._urlSegment,!0,0);var r=$t(t.commands[0])?0:1;return function(e,n,i){for(var o=a.snapshot._urlSegment,s=a.snapshot._lastPathIndex+r,u=t.numberOfDoubleDots;u>s;){if(u-=s,!(o=o.parent))throw new Error("Invalid number of '../'");s=o.segments.length}return new Jt(o,!1,s-u)}()}(o,0,t),u=s.processChildren?ee(s.segmentGroup,s.index,o.commands):te(s.segmentGroup,s.index,o.commands);return Zt(s.segmentGroup,u,e,r,i)}(c,this.currentUrlTree,t,f,d)},t.prototype.navigateByUrl=function(t,e){void 0===e&&(e={skipLocationChange:!1}),Object(i.isDevMode)()&&this.isNgZoneEnabled&&!i.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");var n=le(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,"imperative",null,e)},t.prototype.navigate=function(t,e){return void 0===e&&(e={skipLocationChange:!1}),function(t){for(var e=0;e<t.length;e++){var 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)},t.prototype.serializeUrl=function(t){return this.urlSerializer.serialize(t)},t.prototype.parseUrl=function(t){var e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e},t.prototype.isActive=function(t,e){if(le(t))return pt(this.currentUrlTree,t,e);var n=this.parseUrl(t);return pt(this.currentUrlTree,n,e)},t.prototype.removeEmptyProps=function(t){return Object.keys(t).reduce(function(e,n){var a=t[n];return null!=a&&(e[n]=a),e},{})},t.prototype.processNavigations=function(){var t=this;this.navigations.subscribe(function(e){t.navigated=!0,t.lastSuccessfulId=e.id,t.events.next(new P(e.id,t.serializeUrl(e.extractedUrl),t.serializeUrl(t.currentUrlTree))),t.lastSuccessfulNavigation=t.currentNavigation,t.currentNavigation=null,e.resolve(!0)},function(e){t.console.warn("Unhandled Navigation Error: ")})},t.prototype.scheduleNavigation=function(t,e,n,a){var 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);var i=null,o=null,s=new Promise(function(t,e){i=t,o=e}),u=++this.navigationId;return this.setTransition({id:u,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:a,resolve:i,reject:o,promise:s,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),s.catch(function(t){return Promise.reject(t)})},t.prototype.setBrowserUrl=function(t,e,n,r){var i=this.urlSerializer.serialize(t);r=r||{},this.location.isCurrentPathEqualTo(i)||e?this.location.replaceState(i,"",Object(a.__assign)({},r,{navigationId:n})):this.location.go(i,"",Object(a.__assign)({},r,{navigationId:n}))},t.prototype.resetStateAndUrl=function(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()},t.prototype.resetUrlToCurrentUrlTree=function(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})},t}(),Je=function(){function t(t,e,n,a,r){this.router=t,this.route=e,this.commands=[],null==n&&a.setAttribute(r.nativeElement,"tabindex","0")}return Object.defineProperty(t.prototype,"routerLink",{set:function(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"preserveQueryParams",{set:function(t){Object(i.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated!, use queryParamsHandling instead."),this.preserve=t},enumerable:!0,configurable:!0}),t.prototype.onClick=function(){var t={skipLocationChange:tn(this.skipLocationChange),replaceUrl:tn(this.replaceUrl)};return this.router.navigateByUrl(this.urlTree,t),!0},Object.defineProperty(t.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:tn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:tn(this.preserveFragment)})},enumerable:!0,configurable:!0}),t}(),Qe=function(){function t(t,e,n){var a=this;this.router=t,this.route=e,this.locationStrategy=n,this.commands=[],this.subscription=t.events.subscribe(function(t){t instanceof P&&a.updateTargetUrlAndHref()})}return Object.defineProperty(t.prototype,"routerLink",{set:function(t){this.commands=null!=t?Array.isArray(t)?t:[t]:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"preserveQueryParams",{set:function(t){Object(i.isDevMode)()&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead."),this.preserve=t},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(t){this.updateTargetUrlAndHref()},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.onClick=function(t,e,n,a){if(0!==t||e||n||a)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0;var r={skipLocationChange:tn(this.skipLocationChange),replaceUrl:tn(this.replaceUrl),state:this.state};return this.router.navigateByUrl(this.urlTree,r),!1},t.prototype.updateTargetUrlAndHref=function(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))},Object.defineProperty(t.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:tn(this.preserve),queryParamsHandling:this.queryParamsHandling,preserveFragment:tn(this.preserveFragment)})},enumerable:!0,configurable:!0}),Object(a.__decorate)([Object(i.HostBinding)("attr.target"),Object(i.Input)(),Object(a.__metadata)("design:type",String)],t.prototype,"target",void 0),t}();function tn(t){return""===t||!!t}var en=function(){function t(t,e,n,a){var r=this;this.router=t,this.element=e,this.renderer=n,this.cdr=a,this.classes=[],this.isActive=!1,this.routerLinkActiveOptions={exact:!1},this.subscription=t.events.subscribe(function(t){t instanceof P&&r.update()})}return t.prototype.ngAfterContentInit=function(){var t=this;this.links.changes.subscribe(function(e){return t.update()}),this.linksWithHrefs.changes.subscribe(function(e){return t.update()}),this.update()},Object.defineProperty(t.prototype,"routerLinkActive",{set:function(t){var e=Array.isArray(t)?t:t.split(" ");this.classes=e.filter(function(t){return!!t})},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(t){this.update()},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.update=function(){var t=this;this.links&&this.linksWithHrefs&&this.router.navigated&&Promise.resolve().then(function(){var e=t.hasActiveLinks();t.isActive!==e&&(t.isActive=e,t.classes.forEach(function(n){e?t.renderer.addClass(t.element.nativeElement,n):t.renderer.removeClass(t.element.nativeElement,n)}))})},t.prototype.isLinkActive=function(t){var e=this;return function(n){return t.isActive(n.urlTree,e.routerLinkActiveOptions.exact)}},t.prototype.hasActiveLinks=function(){return this.links.some(this.isLinkActive(this.router))||this.linksWithHrefs.some(this.isLinkActive(this.router))},t}(),nn=function(){return function(){this.outlet=null,this.route=null,this.resolver=null,this.children=new an,this.attachRef=null}}(),an=function(){function t(){this.contexts=new Map}return t.prototype.onChildOutletCreated=function(t,e){var n=this.getOrCreateContext(t);n.outlet=e,this.contexts.set(t,n)},t.prototype.onChildOutletDestroyed=function(t){var e=this.getContext(t);e&&(e.outlet=null)},t.prototype.onOutletDeactivated=function(){var t=this.contexts;return this.contexts=new Map,t},t.prototype.onOutletReAttached=function(t){this.contexts=t},t.prototype.getOrCreateContext=function(t){var e=this.getContext(t);return e||(e=new nn,this.contexts.set(t,e)),e},t.prototype.getContext=function(t){return this.contexts.get(t)||null},t}(),rn=function(){function t(t,e,n,a,r){this.parentContexts=t,this.location=e,this.resolver=n,this.changeDetector=r,this.activated=null,this._activatedRoute=null,this.activateEvents=new i.EventEmitter,this.deactivateEvents=new i.EventEmitter,this.name=a||X,t.onChildOutletCreated(this.name,this)}return t.prototype.ngOnDestroy=function(){this.parentContexts.onChildOutletDestroyed(this.name)},t.prototype.ngOnInit=function(){if(!this.activated){var t=this.parentContexts.getContext(this.name);t&&t.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.resolver||null))}},Object.defineProperty(t.prototype,"isActivated",{get:function(){return!!this.activated},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"component",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedRoute",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedRouteData",{get:function(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}},enumerable:!0,configurable:!0}),t.prototype.detach=function(){if(!this.activated)throw new Error("Outlet is not activated");this.location.detach();var t=this.activated;return this.activated=null,this._activatedRoute=null,t},t.prototype.attach=function(t,e){this.activated=t,this._activatedRoute=e,this.location.insert(t.hostView)},t.prototype.deactivate=function(){if(this.activated){var t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}},t.prototype.activateWith=function(t,e){if(this.isActivated)throw new Error("Cannot activate an already activated outlet");this._activatedRoute=t;var n=(e=e||this.resolver).resolveComponentFactory(t._futureSnapshot.routeConfig.component),a=this.parentContexts.getOrCreateContext(this.name).children,r=new on(t,a,this.location.injector);this.activated=this.location.createComponent(n,this.location.length,r),this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)},t}(),on=function(){function t(t,e,n){this.route=t,this.childContexts=e,this.parent=n}return t.prototype.get=function(t,e){return t===Yt?this.route:t===an?this.childContexts:this.parent.get(t,e)},t}(),sn=function(){return function(){}}(),un=function(){function t(){}return t.prototype.preload=function(t,e){return e().pipe(Object(y.a)(function(){return Object(o.a)(null)}))},t}(),ln=function(){function t(){}return t.prototype.preload=function(t,e){return Object(o.a)(null)},t}(),cn=function(){function t(t,e,n,a,r){this.router=t,this.injector=a,this.preloadingStrategy=r,this.loader=new Be(e,n,function(e){return t.triggerEvent(new G(e))},function(e){return t.triggerEvent(new V(e))})}return t.prototype.setUpPreloading=function(){var t=this;this.subscription=this.router.events.pipe(Object(C.a)(function(t){return t instanceof P}),Object(k.a)(function(){return t.preload()})).subscribe(function(){})},t.prototype.preload=function(){var t=this.injector.get(i.NgModuleRef);return this.processRoutes(t,this.router.config)},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.processRoutes=function(t,e){var n,r,i=[];try{for(var o=Object(a.__values)(e),u=o.next();!u.done;u=o.next()){var l=u.value;if(l.loadChildren&&!l.canLoad&&l._loadedConfig){var c=l._loadedConfig;i.push(this.processRoutes(c.module,c.routes))}else l.loadChildren&&!l.canLoad?i.push(this.preloadConfig(t,l)):l.children&&i.push(this.processRoutes(t,l.children))}}catch(d){n={error:d}}finally{try{u&&!u.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return Object(s.a)(i).pipe(Object(N.a)(),Object(g.a)(function(t){}))},t.prototype.preloadConfig=function(t,e){var n=this;return this.preloadingStrategy.preload(e,function(){return n.loader.load(t.injector,e).pipe(Object(_.a)(function(t){return e._loadedConfig=t,n.processRoutes(t.module,t.routes)}))})},t}(),dn=function(){function t(t,e,n){void 0===n&&(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"}return t.prototype.init=function(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()},t.prototype.createScrollEvents=function(){var t=this;return this.router.events.subscribe(function(e){e instanceof L?(t.store[t.lastId]=t.viewportScroller.getScrollPosition(),t.lastSource=e.navigationTrigger,t.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof P&&(t.lastId=e.id,t.scheduleScrollEvent(e,t.router.parseUrl(e.urlAfterRedirects).fragment))})},t.prototype.consumeScrollEvents=function(){var t=this;return this.router.events.subscribe(function(e){e instanceof $&&(e.position?"top"===t.options.scrollPositionRestoration?t.viewportScroller.scrollToPosition([0,0]):"enabled"===t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===t.options.anchorScrolling?t.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition([0,0]))})},t.prototype.scheduleScrollEvent=function(t,e){this.router.triggerEvent(new $(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))},t.prototype.ngOnDestroy=function(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()},t}(),fn=new i.InjectionToken("ROUTER_CONFIGURATION"),pn=new i.InjectionToken("ROUTER_FORROOT_GUARD"),hn=[r.Location,{provide:vt,useClass:_t},{provide:Xe,useFactory:xn,deps:[i.ApplicationRef,vt,an,r.Location,i.Injector,i.NgModuleFactoryLoader,i.Compiler,Ve,fn,[Ue,new i.Optional],[He,new i.Optional]]},an,{provide:Yt,useFactory:Tn,deps:[Xe]},{provide:i.NgModuleFactoryLoader,useClass:i.SystemJsNgModuleLoader},cn,ln,un,{provide:fn,useValue:{enableTracing:!1}}];function gn(){return new i.NgProbeToken("Router",Xe)}var mn=function(){function t(t,e){}var e;return e=t,t.forRoot=function(t,n){return{ngModule:e,providers:[hn,_n(t),{provide:pn,useFactory:vn,deps:[[Xe,new i.Optional,new i.SkipSelf]]},{provide:fn,useValue:n||{}},{provide:r.LocationStrategy,useFactory:yn,deps:[r.PlatformLocation,[new i.Inject(r.APP_BASE_HREF),new i.Optional],fn]},{provide:dn,useFactory:bn,deps:[Xe,r.ViewportScroller,fn]},{provide:sn,useExisting:n&&n.preloadingStrategy?n.preloadingStrategy:ln},{provide:i.NgProbeToken,multi:!0,useFactory:gn},[wn,{provide:i.APP_INITIALIZER,multi:!0,useFactory:Sn,deps:[wn]},{provide:Cn,useFactory:On,deps:[wn]},{provide:i.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:Cn}]]}},t.forChild=function(t){return{ngModule:e,providers:[_n(t)]}},t}();function bn(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new dn(t,e,n)}function yn(t,e,n){return void 0===n&&(n={}),n.useHash?new r.HashLocationStrategy(t,e):new r.PathLocationStrategy(t,e)}function vn(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function _n(t){return[{provide:i.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:t},{provide:Ve,multi:!0,useValue:t}]}function xn(t,e,n,a,r,i,o,s,u,l,c){void 0===u&&(u={});var d=new Xe(null,e,n,a,r,i,o,lt(s));if(l&&(d.urlHandlingStrategy=l),c&&(d.routeReuseStrategy=c),u.errorHandler&&(d.errorHandler=u.errorHandler),u.malformedUriErrorHandler&&(d.malformedUriErrorHandler=u.malformedUriErrorHandler),u.enableTracing){var f=Object(A["\u0275getDOM"])();d.events.subscribe(function(t){f.logGroup("Router Event: "+t.constructor.name),f.log(t.toString()),f.log(t),f.logGroupEnd()})}return u.onSameUrlNavigation&&(d.onSameUrlNavigation=u.onSameUrlNavigation),u.paramsInheritanceStrategy&&(d.paramsInheritanceStrategy=u.paramsInheritanceStrategy),u.urlUpdateStrategy&&(d.urlUpdateStrategy=u.urlUpdateStrategy),u.relativeLinkResolution&&(d.relativeLinkResolution=u.relativeLinkResolution),d}function Tn(t){return t.routerState.root}var wn=function(){function t(t){this.injector=t,this.initNavigation=!1,this.resultOfPreactivationDone=new p.a}return t.prototype.appInitializer=function(){var t=this;return this.injector.get(r.LOCATION_INITIALIZED,Promise.resolve(null)).then(function(){var e=null,n=new Promise(function(t){return e=t}),a=t.injector.get(Xe),r=t.injector.get(fn);if(t.isLegacyDisabled(r)||t.isLegacyEnabled(r))e(!0);else if("disabled"===r.initialNavigation)a.setUpLocationChangeListener(),e(!0);else{if("enabled"!==r.initialNavigation)throw new Error("Invalid initialNavigation options: '"+r.initialNavigation+"'");a.hooks.afterPreactivation=function(){return t.initNavigation?Object(o.a)(null):(t.initNavigation=!0,e(!0),t.resultOfPreactivationDone)},a.initialNavigation()}return n})},t.prototype.bootstrapListener=function(t){var e=this.injector.get(fn),n=this.injector.get(cn),a=this.injector.get(dn),r=this.injector.get(Xe),o=this.injector.get(i.ApplicationRef);t===o.components[0]&&(this.isLegacyEnabled(e)?r.initialNavigation():this.isLegacyDisabled(e)&&r.setUpLocationChangeListener(),n.setUpPreloading(),a.init(),r.resetRootComponentType(o.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())},t.prototype.isLegacyEnabled=function(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation},t.prototype.isLegacyDisabled=function(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation},t}();function Sn(t){return t.appInitializer.bind(t)}function On(t){return t.bootstrapListener.bind(t)}var Cn=new i.InjectionToken("Router Initializer")},ZYjt:function(t,e,n){"use strict";n.r(e),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_c",function(){return It}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_b",function(){return kt}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_a",function(){return Ct}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_k",function(){return d}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_d",function(){return Rt}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_i",function(){return w}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_h",function(){return T}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_e",function(){return At}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_f",function(){return Gt}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_j",function(){return R}),n.d(e,"\u0275angular_packages_platform_browser_platform_browser_g",function(){return L}),n.d(e,"BrowserModule",function(){return Dt}),n.d(e,"platformBrowser",function(){return St}),n.d(e,"Meta",function(){return Nt}),n.d(e,"Title",function(){return Et}),n.d(e,"disableDebugTools",function(){return Ft}),n.d(e,"enableDebugTools",function(){return qt}),n.d(e,"BrowserTransferStateModule",function(){return Vt}),n.d(e,"TransferState",function(){return Ht}),n.d(e,"makeStateKey",function(){return Yt}),n.d(e,"By",function(){return Bt}),n.d(e,"DOCUMENT",function(){return y}),n.d(e,"EVENT_MANAGER_PLUGINS",function(){return A}),n.d(e,"EventManager",function(){return E}),n.d(e,"HAMMER_GESTURE_CONFIG",function(){return st}),n.d(e,"HAMMER_LOADER",function(){return ut}),n.d(e,"HammerGestureConfig",function(){return lt}),n.d(e,"DomSanitizer",function(){return ht}),n.d(e,"VERSION",function(){return Ut}),n.d(e,"\u0275BROWSER_SANITIZATION_PROVIDERS",function(){return wt}),n.d(e,"\u0275INTERNAL_BROWSER_PLATFORM_PROVIDERS",function(){return Tt}),n.d(e,"\u0275initDomAdapter",function(){return Ot}),n.d(e,"\u0275BrowserDomAdapter",function(){return m}),n.d(e,"\u0275BrowserPlatformLocation",function(){return _}),n.d(e,"\u0275TRANSITION_ID",function(){return x}),n.d(e,"\u0275BrowserGetTestability",function(){return S}),n.d(e,"\u0275escapeHtml",function(){return zt}),n.d(e,"\u0275ELEMENT_PROBE_PROVIDERS",function(){return N}),n.d(e,"\u0275DomAdapter",function(){return c}),n.d(e,"\u0275getDOM",function(){return s}),n.d(e,"\u0275setRootDomAdapter",function(){return u}),n.d(e,"\u0275DomRendererFactory2",function(){return B}),n.d(e,"\u0275NAMESPACE_URIS",function(){return j}),n.d(e,"\u0275flattenStyles",function(){return G}),n.d(e,"\u0275shimContentAttribute",function(){return Y}),n.d(e,"\u0275shimHostAttribute",function(){return H}),n.d(e,"\u0275DomEventsPlugin",function(){return it}),n.d(e,"\u0275HammerGesturesPlugin",function(){return ct}),n.d(e,"\u0275KeyEventsPlugin",function(){return pt}),n.d(e,"\u0275DomSharedStylesHost",function(){return M}),n.d(e,"\u0275SharedStylesHost",function(){return P}),n.d(e,"\u0275DomSanitizerImpl",function(){return gt});var a=n("mrSG"),r=n("Ip0R"),i=n("CcnG"),o=null;function s(){return o}function u(t){o||(o=t)}var l,c=function(){function t(){this.resourceLoaderType=null}return Object.defineProperty(t.prototype,"attrToPropMap",{get:function(){return this._attrToPropMap},set:function(t){this._attrToPropMap=t},enumerable:!0,configurable:!0}),t}(),d=function(t){function e(){var e=t.call(this)||this;e._animationPrefix=null,e._transitionEnd=null;try{var n=e.createElement("div",document);if(null!=e.getStyle(n,"animationName"))e._animationPrefix="";else for(var a=["Webkit","Moz","O","ms"],r=0;r<a.length;r++)if(null!=e.getStyle(n,a[r]+"AnimationName")){e._animationPrefix="-"+a[r].toLowerCase()+"-";break}var i={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(i).forEach(function(t){null!=e.getStyle(n,t)&&(e._transitionEnd=i[t])})}catch(o){e._animationPrefix=null,e._transitionEnd=null}return e}return Object(a.__extends)(e,t),e.prototype.getDistributedNodes=function(t){return t.getDistributedNodes()},e.prototype.resolveAndSetHref=function(t,e,n){t.href=null==n?e:e+"/../"+n},e.prototype.supportsDOMEvents=function(){return!0},e.prototype.supportsNativeShadowDOM=function(){return"function"==typeof document.body.createShadowRoot},e.prototype.getAnimationPrefix=function(){return this._animationPrefix?this._animationPrefix:""},e.prototype.getTransitionEnd=function(){return this._transitionEnd?this._transitionEnd:""},e.prototype.supportsAnimation=function(){return null!=this._animationPrefix&&null!=this._transitionEnd},e}(c),f={class:"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},p={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},h={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"};i["\u0275global"].Node&&(l=i["\u0275global"].Node.prototype.contains||function(t){return!!(16&this.compareDocumentPosition(t))});var g,m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.parse=function(t){throw new Error("parse not implemented")},e.makeCurrent=function(){u(new e)},e.prototype.hasProperty=function(t,e){return e in t},e.prototype.setProperty=function(t,e,n){t[e]=n},e.prototype.getProperty=function(t,e){return t[e]},e.prototype.invoke=function(t,e,n){var r;(r=t)[e].apply(r,Object(a.__spread)(n))},e.prototype.logError=function(t){window.console&&(console.error?console.error(t):console.log(t))},e.prototype.log=function(t){window.console&&window.console.log&&window.console.log(t)},e.prototype.logGroup=function(t){window.console&&window.console.group&&window.console.group(t)},e.prototype.logGroupEnd=function(){window.console&&window.console.groupEnd&&window.console.groupEnd()},Object.defineProperty(e.prototype,"attrToPropMap",{get:function(){return f},enumerable:!0,configurable:!0}),e.prototype.contains=function(t,e){return l.call(t,e)},e.prototype.querySelector=function(t,e){return t.querySelector(e)},e.prototype.querySelectorAll=function(t,e){return t.querySelectorAll(e)},e.prototype.on=function(t,e,n){t.addEventListener(e,n,!1)},e.prototype.onAndCancel=function(t,e,n){return t.addEventListener(e,n,!1),function(){t.removeEventListener(e,n,!1)}},e.prototype.dispatchEvent=function(t,e){t.dispatchEvent(e)},e.prototype.createMouseEvent=function(t){var e=this.getDefaultDocument().createEvent("MouseEvent");return e.initEvent(t,!0,!0),e},e.prototype.createEvent=function(t){var e=this.getDefaultDocument().createEvent("Event");return e.initEvent(t,!0,!0),e},e.prototype.preventDefault=function(t){t.preventDefault(),t.returnValue=!1},e.prototype.isPrevented=function(t){return t.defaultPrevented||null!=t.returnValue&&!t.returnValue},e.prototype.getInnerHTML=function(t){return t.innerHTML},e.prototype.getTemplateContent=function(t){return"content"in t&&this.isTemplateElement(t)?t.content:null},e.prototype.getOuterHTML=function(t){return t.outerHTML},e.prototype.nodeName=function(t){return t.nodeName},e.prototype.nodeValue=function(t){return t.nodeValue},e.prototype.type=function(t){return t.type},e.prototype.content=function(t){return this.hasProperty(t,"content")?t.content:t},e.prototype.firstChild=function(t){return t.firstChild},e.prototype.nextSibling=function(t){return t.nextSibling},e.prototype.parentElement=function(t){return t.parentNode},e.prototype.childNodes=function(t){return t.childNodes},e.prototype.childNodesAsList=function(t){for(var e=t.childNodes,n=new Array(e.length),a=0;a<e.length;a++)n[a]=e[a];return n},e.prototype.clearNodes=function(t){for(;t.firstChild;)t.removeChild(t.firstChild)},e.prototype.appendChild=function(t,e){t.appendChild(e)},e.prototype.removeChild=function(t,e){t.removeChild(e)},e.prototype.replaceChild=function(t,e,n){t.replaceChild(e,n)},e.prototype.remove=function(t){return t.parentNode&&t.parentNode.removeChild(t),t},e.prototype.insertBefore=function(t,e,n){t.insertBefore(n,e)},e.prototype.insertAllBefore=function(t,e,n){n.forEach(function(n){return t.insertBefore(n,e)})},e.prototype.insertAfter=function(t,e,n){t.insertBefore(n,e.nextSibling)},e.prototype.setInnerHTML=function(t,e){t.innerHTML=e},e.prototype.getText=function(t){return t.textContent},e.prototype.setText=function(t,e){t.textContent=e},e.prototype.getValue=function(t){return t.value},e.prototype.setValue=function(t,e){t.value=e},e.prototype.getChecked=function(t){return t.checked},e.prototype.setChecked=function(t,e){t.checked=e},e.prototype.createComment=function(t){return this.getDefaultDocument().createComment(t)},e.prototype.createTemplate=function(t){var e=this.getDefaultDocument().createElement("template");return e.innerHTML=t,e},e.prototype.createElement=function(t,e){return(e=e||this.getDefaultDocument()).createElement(t)},e.prototype.createElementNS=function(t,e,n){return(n=n||this.getDefaultDocument()).createElementNS(t,e)},e.prototype.createTextNode=function(t,e){return(e=e||this.getDefaultDocument()).createTextNode(t)},e.prototype.createScriptTag=function(t,e,n){var a=(n=n||this.getDefaultDocument()).createElement("SCRIPT");return a.setAttribute(t,e),a},e.prototype.createStyleElement=function(t,e){var n=(e=e||this.getDefaultDocument()).createElement("style");return this.appendChild(n,this.createTextNode(t,e)),n},e.prototype.createShadowRoot=function(t){return t.createShadowRoot()},e.prototype.getShadowRoot=function(t){return t.shadowRoot},e.prototype.getHost=function(t){return t.host},e.prototype.clone=function(t){return t.cloneNode(!0)},e.prototype.getElementsByClassName=function(t,e){return t.getElementsByClassName(e)},e.prototype.getElementsByTagName=function(t,e){return t.getElementsByTagName(e)},e.prototype.classList=function(t){return Array.prototype.slice.call(t.classList,0)},e.prototype.addClass=function(t,e){t.classList.add(e)},e.prototype.removeClass=function(t,e){t.classList.remove(e)},e.prototype.hasClass=function(t,e){return t.classList.contains(e)},e.prototype.setStyle=function(t,e,n){t.style[e]=n},e.prototype.removeStyle=function(t,e){t.style[e]=""},e.prototype.getStyle=function(t,e){return t.style[e]},e.prototype.hasStyle=function(t,e,n){var a=this.getStyle(t,e)||"";return n?a==n:a.length>0},e.prototype.tagName=function(t){return t.tagName},e.prototype.attributeMap=function(t){for(var e=new Map,n=t.attributes,a=0;a<n.length;a++){var r=n.item(a);e.set(r.name,r.value)}return e},e.prototype.hasAttribute=function(t,e){return t.hasAttribute(e)},e.prototype.hasAttributeNS=function(t,e,n){return t.hasAttributeNS(e,n)},e.prototype.getAttribute=function(t,e){return t.getAttribute(e)},e.prototype.getAttributeNS=function(t,e,n){return t.getAttributeNS(e,n)},e.prototype.setAttribute=function(t,e,n){t.setAttribute(e,n)},e.prototype.setAttributeNS=function(t,e,n,a){t.setAttributeNS(e,n,a)},e.prototype.removeAttribute=function(t,e){t.removeAttribute(e)},e.prototype.removeAttributeNS=function(t,e,n){t.removeAttributeNS(e,n)},e.prototype.templateAwareRoot=function(t){return this.isTemplateElement(t)?this.content(t):t},e.prototype.createHtmlDocument=function(){return document.implementation.createHTMLDocument("fakeTitle")},e.prototype.getDefaultDocument=function(){return document},e.prototype.getBoundingClientRect=function(t){try{return t.getBoundingClientRect()}catch(e){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}},e.prototype.getTitle=function(t){return t.title},e.prototype.setTitle=function(t,e){t.title=e||""},e.prototype.elementMatches=function(t,e){return!!this.isElementNode(t)&&(t.matches&&t.matches(e)||t.msMatchesSelector&&t.msMatchesSelector(e)||t.webkitMatchesSelector&&t.webkitMatchesSelector(e))},e.prototype.isTemplateElement=function(t){return this.isElementNode(t)&&"TEMPLATE"===t.nodeName},e.prototype.isTextNode=function(t){return t.nodeType===Node.TEXT_NODE},e.prototype.isCommentNode=function(t){return t.nodeType===Node.COMMENT_NODE},e.prototype.isElementNode=function(t){return t.nodeType===Node.ELEMENT_NODE},e.prototype.hasShadowRoot=function(t){return null!=t.shadowRoot&&t instanceof HTMLElement},e.prototype.isShadowRoot=function(t){return t instanceof DocumentFragment},e.prototype.importIntoDoc=function(t){return document.importNode(this.templateAwareRoot(t),!0)},e.prototype.adoptNode=function(t){return document.adoptNode(t)},e.prototype.getHref=function(t){return t.getAttribute("href")},e.prototype.getEventKey=function(t){var e=t.key;if(null==e){if(null==(e=t.keyIdentifier))return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&h.hasOwnProperty(e)&&(e=h[e]))}return p[e]||e},e.prototype.getGlobalEventTarget=function(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null},e.prototype.getHistory=function(){return window.history},e.prototype.getLocation=function(){return window.location},e.prototype.getBaseHref=function(t){var e,n=b||(b=document.querySelector("base"))?b.getAttribute("href"):null;return null==n?null:(e=n,g||(g=document.createElement("a")),g.setAttribute("href",e),"/"===g.pathname.charAt(0)?g.pathname:"/"+g.pathname)},e.prototype.resetBaseElement=function(){b=null},e.prototype.getUserAgent=function(){return window.navigator.userAgent},e.prototype.setData=function(t,e,n){this.setAttribute(t,"data-"+e,n)},e.prototype.getData=function(t,e){return this.getAttribute(t,"data-"+e)},e.prototype.getComputedStyle=function(t){return getComputedStyle(t)},e.prototype.supportsWebAnimation=function(){return"function"==typeof Element.prototype.animate},e.prototype.performanceNow=function(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()},e.prototype.supportsCookies=function(){return!0},e.prototype.getCookie=function(t){return Object(r["\u0275parseCookieValue"])(document.cookie,t)},e.prototype.setCookie=function(t,e){document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)},e}(d),b=null,y=r.DOCUMENT;function v(){return!!window.history.pushState}var _=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n._init(),n}return Object(a.__extends)(e,t),e.prototype._init=function(){this.location=s().getLocation(),this._history=s().getHistory()},e.prototype.getBaseHrefFromDOM=function(){return s().getBaseHref(this._doc)},e.prototype.onPopState=function(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)},e.prototype.onHashChange=function(t){s().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)},Object.defineProperty(e.prototype,"pathname",{get:function(){return this.location.pathname},set:function(t){this.location.pathname=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"search",{get:function(){return this.location.search},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hash",{get:function(){return this.location.hash},enumerable:!0,configurable:!0}),e.prototype.pushState=function(t,e,n){v()?this._history.pushState(t,e,n):this.location.hash=n},e.prototype.replaceState=function(t,e,n){v()?this._history.replaceState(t,e,n):this.location.hash=n},e.prototype.forward=function(){this._history.forward()},e.prototype.back=function(){this._history.back()},Object(a.__decorate)([Object(a.__param)(0,Object(i.Inject)(y)),Object(a.__metadata)("design:paramtypes",[Object])],e)}(r.PlatformLocation),x=new i.InjectionToken("TRANSITION_ID");function T(t,e,n){return function(){n.get(i.ApplicationInitStatus).donePromise.then(function(){var n=s();Array.prototype.slice.apply(n.querySelectorAll(e,"style[ng-transition]")).filter(function(e){return n.getAttribute(e,"ng-transition")===t}).forEach(function(t){return n.remove(t)})})}}var w=[{provide:i.APP_INITIALIZER,useFactory:T,deps:[x,y,i.Injector],multi:!0}],S=function(){function t(){}return t.init=function(){Object(i.setTestabilityGetter)(new t)},t.prototype.addToWindow=function(t){i["\u0275global"].getAngularTestability=function(e,n){void 0===n&&(n=!0);var a=t.findTestabilityInTree(e,n);if(null==a)throw new Error("Could not find testability for element.");return a},i["\u0275global"].getAllAngularTestabilities=function(){return t.getAllTestabilities()},i["\u0275global"].getAllAngularRootElements=function(){return t.getAllRootElements()},i["\u0275global"].frameworkStabilizers||(i["\u0275global"].frameworkStabilizers=[]),i["\u0275global"].frameworkStabilizers.push(function(t){var e=i["\u0275global"].getAllAngularTestabilities(),n=e.length,a=!1,r=function(e){a=a||e,0==--n&&t(a)};e.forEach(function(t){t.whenStable(r)})})},t.prototype.findTestabilityInTree=function(t,e,n){if(null==e)return null;var 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},t}();function O(t,e){"undefined"!=typeof COMPILED&&COMPILED||((i["\u0275global"].ng=i["\u0275global"].ng||{})[t]=e)}var C={ApplicationRef:i.ApplicationRef,NgZone:i.NgZone},k="probe",I="coreTokens";function D(t){return Object(i.getDebugNode)(t)}function R(t){return O(k,D),O(I,Object(a.__assign)({},C,(t||[]).reduce(function(t,e){return t[e.name]=e.token,t},{}))),function(){return D}}var N=[{provide:i.APP_INITIALIZER,useFactory:R,deps:[[i.NgProbeToken,new i.Optional]],multi:!0}],A=new i.InjectionToken("EventManagerPlugins"),E=function(){function t(t,e){var n=this;this._zone=e,this._eventNameToPlugin=new Map,t.forEach(function(t){return t.manager=n}),this._plugins=t.slice().reverse()}return t.prototype.addEventListener=function(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)},t.prototype.addGlobalEventListener=function(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)},t.prototype.getZone=function(){return this._zone},t.prototype._findPluginFor=function(t){var e=this._eventNameToPlugin.get(t);if(e)return e;for(var n=this._plugins,a=0;a<n.length;a++){var r=n[a];if(r.supports(t))return this._eventNameToPlugin.set(t,r),r}throw new Error("No event manager plugin found for event "+t)},t}(),L=function(){function t(t){this._doc=t}return t.prototype.addGlobalEventListener=function(t,e,n){var a=s().getGlobalEventTarget(this._doc,t);if(!a)throw new Error("Unsupported event target "+a+" for event "+e);return this.addEventListener(a,e,n)},t}(),P=function(){function t(){this._stylesSet=new Set}return t.prototype.addStyles=function(t){var e=this,n=new Set;t.forEach(function(t){e._stylesSet.has(t)||(e._stylesSet.add(t),n.add(t))}),this.onStylesAdded(n)},t.prototype.onStylesAdded=function(t){},t.prototype.getAllStyles=function(){return Array.from(this._stylesSet)},t}(),M=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n._hostNodes=new Set,n._styleNodes=new Set,n._hostNodes.add(e.head),n}return Object(a.__extends)(e,t),e.prototype._addStylesToHost=function(t,e){var n=this;t.forEach(function(t){var a=n._doc.createElement("style");a.textContent=t,n._styleNodes.add(e.appendChild(a))})},e.prototype.addHost=function(t){this._addStylesToHost(this._stylesSet,t),this._hostNodes.add(t)},e.prototype.removeHost=function(t){this._hostNodes.delete(t)},e.prototype.onStylesAdded=function(t){var e=this;this._hostNodes.forEach(function(n){return e._addStylesToHost(t,n)})},e.prototype.ngOnDestroy=function(){this._styleNodes.forEach(function(t){return s().remove(t)})},e}(P),j={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/"},q=/%COMP%/g,F="_nghost-%COMP%",z="_ngcontent-%COMP%";function Y(t){return z.replace(q,t)}function H(t){return F.replace(q,t)}function G(t,e,n){for(var a=0;a<e.length;a++){var r=e[a];Array.isArray(r)?G(t,r,n):(r=r.replace(q,t),n.push(r))}return n}function V(t){return function(e){!1===t(e)&&(e.preventDefault(),e.returnValue=!1)}}var B=function(){function t(t,e){this.eventManager=t,this.sharedStylesHost=e,this.rendererByCompId=new Map,this.defaultRenderer=new U(t)}return t.prototype.createRenderer=function(t,e){if(!t||!e)return this.defaultRenderer;switch(e.encapsulation){case i.ViewEncapsulation.Emulated:var n=this.rendererByCompId.get(e.id);return n||(n=new Z(this.eventManager,this.sharedStylesHost,e),this.rendererByCompId.set(e.id,n)),n.applyToHost(t),n;case i.ViewEncapsulation.Native:case i.ViewEncapsulation.ShadowDom:return new X(this.eventManager,this.sharedStylesHost,t,e);default:if(!this.rendererByCompId.has(e.id)){var a=G(e.id,e.styles,[]);this.sharedStylesHost.addStyles(a),this.rendererByCompId.set(e.id,this.defaultRenderer)}return this.defaultRenderer}},t.prototype.begin=function(){},t.prototype.end=function(){},t}(),U=function(){function t(t){this.eventManager=t,this.data=Object.create(null)}return t.prototype.destroy=function(){},t.prototype.createElement=function(t,e){return e?document.createElementNS(j[e],t):document.createElement(t)},t.prototype.createComment=function(t){return document.createComment(t)},t.prototype.createText=function(t){return document.createTextNode(t)},t.prototype.appendChild=function(t,e){t.appendChild(e)},t.prototype.insertBefore=function(t,e,n){t&&t.insertBefore(e,n)},t.prototype.removeChild=function(t,e){t&&t.removeChild(e)},t.prototype.selectRootElement=function(t,e){var 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},t.prototype.parentNode=function(t){return t.parentNode},t.prototype.nextSibling=function(t){return t.nextSibling},t.prototype.setAttribute=function(t,e,n,a){if(a){e=a+":"+e;var r=j[a];r?t.setAttributeNS(r,e,n):t.setAttribute(e,n)}else t.setAttribute(e,n)},t.prototype.removeAttribute=function(t,e,n){if(n){var a=j[n];a?t.removeAttributeNS(a,e):t.removeAttribute(n+":"+e)}else t.removeAttribute(e)},t.prototype.addClass=function(t,e){t.classList.add(e)},t.prototype.removeClass=function(t,e){t.classList.remove(e)},t.prototype.setStyle=function(t,e,n,a){a&i.RendererStyleFlags2.DashCase?t.style.setProperty(e,n,a&i.RendererStyleFlags2.Important?"important":""):t.style[e]=n},t.prototype.removeStyle=function(t,e,n){n&i.RendererStyleFlags2.DashCase?t.style.removeProperty(e):t.style[e]=""},t.prototype.setProperty=function(t,e,n){K(e,"property"),t[e]=n},t.prototype.setValue=function(t,e){t.nodeValue=e},t.prototype.listen=function(t,e,n){return K(e,"listener"),"string"==typeof t?this.eventManager.addGlobalEventListener(t,e,V(n)):this.eventManager.addEventListener(t,e,V(n))},t}(),W="@".charCodeAt(0);function K(t,e){if(t.charCodeAt(0)===W)throw new Error("Found the synthetic "+e+" "+t+'. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.')}var $,Z=function(t){function e(e,n,a){var r=t.call(this,e)||this;r.component=a;var i=G(a.id,a.styles,[]);return n.addStyles(i),r.contentAttr=Y(a.id),r.hostAttr=H(a.id),r}return Object(a.__extends)(e,t),e.prototype.applyToHost=function(e){t.prototype.setAttribute.call(this,e,this.hostAttr,"")},e.prototype.createElement=function(e,n){var a=t.prototype.createElement.call(this,e,n);return t.prototype.setAttribute.call(this,a,this.contentAttr,""),a},e}(U),X=function(t){function e(e,n,a,r){var o=t.call(this,e)||this;o.sharedStylesHost=n,o.hostEl=a,o.component=r,o.shadowRoot=r.encapsulation===i.ViewEncapsulation.ShadowDom?a.attachShadow({mode:"open"}):a.createShadowRoot(),o.sharedStylesHost.addHost(o.shadowRoot);for(var s=G(r.id,r.styles,[]),u=0;u<s.length;u++){var l=document.createElement("style");l.textContent=s[u],o.shadowRoot.appendChild(l)}return o}return Object(a.__extends)(e,t),e.prototype.nodeOrShadowRoot=function(t){return t===this.hostEl?this.shadowRoot:t},e.prototype.destroy=function(){this.sharedStylesHost.removeHost(this.shadowRoot)},e.prototype.appendChild=function(e,n){return t.prototype.appendChild.call(this,this.nodeOrShadowRoot(e),n)},e.prototype.insertBefore=function(e,n,a){return t.prototype.insertBefore.call(this,this.nodeOrShadowRoot(e),n,a)},e.prototype.removeChild=function(e,n){return t.prototype.removeChild.call(this,this.nodeOrShadowRoot(e),n)},e.prototype.parentNode=function(e){return this.nodeOrShadowRoot(t.prototype.parentNode.call(this,this.nodeOrShadowRoot(e)))},e}(U),J="undefined"!=typeof Zone&&Zone.__symbol__||function(t){return"__zone_symbol__"+t},Q=J("addEventListener"),tt=J("removeEventListener"),et={},nt="__zone_symbol__propagationStopped";"undefined"!=typeof Zone&&Zone[J("BLACK_LISTED_EVENTS")]&&($={});var at=function(t){return!!$&&$.hasOwnProperty(t)},rt=function(t){var e=et[t.type];if(e){var n=this[e];if(n){var a=[t];if(1===n.length)return(o=n[0]).zone!==Zone.current?o.zone.run(o.handler,this,a):o.handler.apply(this,a);for(var r=n.slice(),i=0;i<r.length&&!0!==t[nt];i++){var o;(o=r[i]).zone!==Zone.current?o.zone.run(o.handler,this,a):o.handler.apply(this,a)}}}},it=function(t){function e(e,n,a){var i=t.call(this,e)||this;return i.ngZone=n,a&&Object(r.isPlatformServer)(a)||i.patchEvent(),i}return Object(a.__extends)(e,t),e.prototype.patchEvent=function(){if("undefined"!=typeof Event&&Event&&Event.prototype&&!Event.prototype.__zone_symbol__stopImmediatePropagation){var t=Event.prototype.__zone_symbol__stopImmediatePropagation=Event.prototype.stopImmediatePropagation;Event.prototype.stopImmediatePropagation=function(){this&&(this[nt]=!0),t&&t.apply(this,arguments)}}},e.prototype.supports=function(t){return!0},e.prototype.addEventListener=function(t,e,n){var a=this,r=n;if(!t[Q]||i.NgZone.isInAngularZone()&&!at(e))t.addEventListener(e,r,!1);else{var o=et[e];o||(o=et[e]=J("ANGULAR"+e+"FALSE"));var s=t[o],u=s&&s.length>0;s||(s=t[o]=[]);var l=at(e)?Zone.root:Zone.current;if(0===s.length)s.push({zone:l,handler:r});else{for(var c=!1,d=0;d<s.length;d++)if(s[d].handler===r){c=!0;break}c||s.push({zone:l,handler:r})}u||t[Q](e,rt,!1)}return function(){return a.removeEventListener(t,e,r)}},e.prototype.removeEventListener=function(t,e,n){var a=t[tt];if(!a)return t.removeEventListener.apply(t,[e,n,!1]);var r=et[e],i=r&&t[r];if(!i)return t.removeEventListener.apply(t,[e,n,!1]);for(var o=!1,s=0;s<i.length;s++)if(i[s].handler===n){o=!0,i.splice(s,1);break}o?0===i.length&&a.apply(t,[e,rt,!1]):t.removeEventListener.apply(t,[e,n,!1])},e}(L),ot={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},st=new i.InjectionToken("HammerGestureConfig"),ut=new i.InjectionToken("HammerLoader"),lt=function(){function t(){this.events=[],this.overrides={}}return t.prototype.buildHammer=function(t){var e=new Hammer(t,this.options);for(var n in e.get("pinch").set({enable:!0}),e.get("rotate").set({enable:!0}),this.overrides)e.get(n).set(this.overrides[n]);return e},t}(),ct=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i._config=n,i.console=a,i.loader=r,i}return Object(a.__extends)(e,t),e.prototype.supports=function(t){return!(!ot.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))},e.prototype.addEventListener=function(t,e,n){var a=this,r=this.manager.getZone();if(e=e.toLowerCase(),!window.Hammer&&this.loader){var i=!1,o=function(){i=!0};return this.loader().then(function(){if(!window.Hammer)return a.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),void(o=function(){});i||(o=a.addEventListener(t,e,n))}).catch(function(){a.console.warn('The "'+e+'" event cannot be bound because the custom Hammer.JS loader failed.'),o=function(){}}),function(){o()}}return r.runOutsideAngular(function(){var i=a._config.buildHammer(t),o=function(t){r.runGuarded(function(){n(t)})};return i.on(e,o),function(){i.off(e,o),"function"==typeof i.destroy&&i.destroy()}})},e.prototype.isCustomEvent=function(t){return this._config.events.indexOf(t)>-1},e}(L),dt=["alt","control","meta","shift"],ft={alt:function(t){return t.altKey},control:function(t){return t.ctrlKey},meta:function(t){return t.metaKey},shift:function(t){return t.shiftKey}},pt=function(t){function e(e){return t.call(this,e)||this}var n;return Object(a.__extends)(e,t),n=e,e.prototype.supports=function(t){return null!=n.parseEventName(t)},e.prototype.addEventListener=function(t,e,a){var r=n.parseEventName(e),i=n.eventCallback(r.fullKey,a,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return s().onAndCancel(t,r.domEventName,i)})},e.parseEventName=function(t){var e=t.toLowerCase().split("."),a=e.shift();if(0===e.length||"keydown"!==a&&"keyup"!==a)return null;var r=n._normalizeKey(e.pop()),i="";if(dt.forEach(function(t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),i+=t+".")}),i+=r,0!=e.length||0===r.length)return null;var o={};return o.domEventName=a,o.fullKey=i,o},e.getEventFullKey=function(t){var e="",n=s().getEventKey(t);return" "===(n=n.toLowerCase())?n="space":"."===n&&(n="dot"),dt.forEach(function(a){a!=n&&(0,ft[a])(t)&&(e+=a+".")}),e+=n},e.eventCallback=function(t,e,a){return function(r){n.getEventFullKey(r)===t&&a.runGuarded(function(){return e(r)})}},e._normalizeKey=function(t){switch(t){case"esc":return"escape";default:return t}},e}(L),ht=function(){return function(){}}(),gt=function(t){function e(e){var n=t.call(this)||this;return n._doc=e,n}return Object(a.__extends)(e,t),e.prototype.sanitize=function(t,e){if(null==e)return null;switch(t){case i.SecurityContext.NONE:return e;case i.SecurityContext.HTML:return e instanceof bt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"HTML"),Object(i["\u0275_sanitizeHtml"])(this._doc,String(e)));case i.SecurityContext.STYLE:return e instanceof yt?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"Style"),Object(i["\u0275_sanitizeStyle"])(e));case i.SecurityContext.SCRIPT:if(e instanceof vt)return e.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(e,"Script"),new Error("unsafe value used in a script context");case i.SecurityContext.URL:return e instanceof xt||e instanceof _t?e.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(e,"URL"),Object(i["\u0275_sanitizeUrl"])(String(e)));case i.SecurityContext.RESOURCE_URL:if(e instanceof xt)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)")}},e.prototype.checkNotSafeValue=function(t,e){if(t instanceof mt)throw new Error("Required a safe "+e+", got a "+t.getTypeName()+" (see http://g.co/ng/security#xss)")},e.prototype.bypassSecurityTrustHtml=function(t){return new bt(t)},e.prototype.bypassSecurityTrustStyle=function(t){return new yt(t)},e.prototype.bypassSecurityTrustScript=function(t){return new vt(t)},e.prototype.bypassSecurityTrustUrl=function(t){return new _t(t)},e.prototype.bypassSecurityTrustResourceUrl=function(t){return new xt(t)},e}(ht),mt=function(){function t(t){this.changingThisBreaksApplicationSecurity=t}return t.prototype.toString=function(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"},t}(),bt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"HTML"},e}(mt),yt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"Style"},e}(mt),vt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"Script"},e}(mt),_t=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"URL"},e}(mt),xt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.getTypeName=function(){return"ResourceURL"},e}(mt),Tt=[{provide:i.PLATFORM_ID,useValue:r["\u0275PLATFORM_BROWSER_ID"]},{provide:i.PLATFORM_INITIALIZER,useValue:Ot,multi:!0},{provide:r.PlatformLocation,useClass:_,deps:[y]},{provide:y,useFactory:kt,deps:[]}],wt=[{provide:i.Sanitizer,useExisting:ht},{provide:ht,useClass:gt,deps:[y]}],St=Object(i.createPlatformFactory)(i.platformCore,"browser",Tt);function Ot(){m.makeCurrent(),S.init()}function Ct(){return new i.ErrorHandler}function kt(){return document}var It=[wt,{provide:i["\u0275APP_ROOT"],useValue:!0},{provide:i.ErrorHandler,useFactory:Ct,deps:[]},{provide:A,useClass:it,multi:!0,deps:[y,i.NgZone,i.PLATFORM_ID]},{provide:A,useClass:pt,multi:!0,deps:[y]},{provide:A,useClass:ct,multi:!0,deps:[y,st,i["\u0275Console"],[new i.Optional,ut]]},{provide:st,useClass:lt,deps:[]},{provide:B,useClass:B,deps:[E,M]},{provide:i.RendererFactory2,useExisting:B},{provide:P,useExisting:M},{provide:M,useClass:M,deps:[y]},{provide:i.Testability,useClass:i.Testability,deps:[i.NgZone]},{provide:E,useClass:E,deps:[A,i.NgZone]},N],Dt=function(){function t(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.")}var e;return e=t,t.withServerTransition=function(t){return{ngModule:e,providers:[{provide:i.APP_ID,useValue:t.appId},{provide:x,useExisting:i.APP_ID},w]}},t}();function Rt(){return new Nt(Object(i.inject)(y))}var Nt=function(){function t(t){this._doc=t,this._dom=s()}return t.prototype.addTag=function(t,e){return void 0===e&&(e=!1),t?this._getOrCreateElement(t,e):null},t.prototype.addTags=function(t,e){var n=this;return void 0===e&&(e=!1),t?t.reduce(function(t,a){return a&&t.push(n._getOrCreateElement(a,e)),t},[]):[]},t.prototype.getTag=function(t){return t&&this._dom.querySelector(this._doc,"meta["+t+"]")||null},t.prototype.getTags=function(t){if(!t)return[];var e=this._dom.querySelectorAll(this._doc,"meta["+t+"]");return e?[].slice.call(e):[]},t.prototype.updateTag=function(t,e){if(!t)return null;e=e||this._parseSelector(t);var n=this.getTag(e);return n?this._setMetaElementAttributes(t,n):this._getOrCreateElement(t,!0)},t.prototype.removeTag=function(t){this.removeTagElement(this.getTag(t))},t.prototype.removeTagElement=function(t){t&&this._dom.remove(t)},t.prototype._getOrCreateElement=function(t,e){if(void 0===e&&(e=!1),!e){var n=this._parseSelector(t),a=this.getTag(n);if(a&&this._containsAttributes(t,a))return a}var r=this._dom.createElement("meta");this._setMetaElementAttributes(t,r);var i=this._dom.getElementsByTagName(this._doc,"head")[0];return this._dom.appendChild(i,r),r},t.prototype._setMetaElementAttributes=function(t,e){var n=this;return Object.keys(t).forEach(function(a){return n._dom.setAttribute(e,a,t[a])}),e},t.prototype._parseSelector=function(t){var e=t.name?"name":"property";return e+'="'+t[e]+'"'},t.prototype._containsAttributes=function(t,e){var n=this;return Object.keys(t).every(function(a){return n._dom.getAttribute(e,a)===t[a]})},t.ngInjectableDef=Object(i.defineInjectable)({factory:Rt,token:t,providedIn:"root"}),t}();function At(){return new Et(Object(i.inject)(y))}var Et=function(){function t(t){this._doc=t}return t.prototype.getTitle=function(){return s().getTitle(this._doc)},t.prototype.setTitle=function(t){s().setTitle(this._doc,t)},t.ngInjectableDef=Object(i.defineInjectable)({factory:At,token:t,providedIn:"root"}),t}(),Lt="undefined"!=typeof window&&window||{},Pt=function(){return function(t,e){this.msPerTick=t,this.numTicks=e}}(),Mt=function(){function t(t){this.appRef=t.injector.get(i.ApplicationRef)}return t.prototype.timeChangeDetection=function(t){var e=t&&t.record,n=null!=Lt.console.profile;e&&n&&Lt.console.profile("Change Detection");for(var a=s().performanceNow(),r=0;r<5||s().performanceNow()-a<500;)this.appRef.tick(),r++;var i=s().performanceNow();e&&n&&Lt.console.profileEnd("Change Detection");var o=(i-a)/r;return Lt.console.log("ran "+r+" change detection cycles"),Lt.console.log(o.toFixed(2)+" ms per check"),new Pt(o,r)},t}(),jt="profiler";function qt(t){return O(jt,new Mt(t)),t}function Ft(){O(jt,null)}function zt(t){var e={"&":"&a;",'"':"&q;","'":"&s;","<":"&l;",">":"&g;"};return t.replace(/[&"'<>]/g,function(t){return e[t]})}function Yt(t){return t}var Ht=function(){function t(){this.store={},this.onSerializeCallbacks={}}var e;return e=t,t.init=function(t){var n=new e;return n.store=t,n},t.prototype.get=function(t,e){return void 0!==this.store[t]?this.store[t]:e},t.prototype.set=function(t,e){this.store[t]=e},t.prototype.remove=function(t){delete this.store[t]},t.prototype.hasKey=function(t){return this.store.hasOwnProperty(t)},t.prototype.onSerialize=function(t,e){this.onSerializeCallbacks[t]=e},t.prototype.toJson=function(){for(var t in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(t))try{this.store[t]=this.onSerializeCallbacks[t]()}catch(e){console.warn("Exception in onSerialize callback: ",e)}return JSON.stringify(this.store)},t}();function Gt(t,e){var n,a=t.getElementById(e+"-state"),r={};if(a&&a.textContent)try{r=JSON.parse((n={"&a;":"&","&q;":'"',"&s;":"'","&l;":"<","&g;":">"},a.textContent.replace(/&[^;]+;/g,function(t){return n[t]})))}catch(i){console.warn("Exception while restoring TransferState for app "+e,i)}return Ht.init(r)}var Vt=function(){return function(){}}(),Bt=function(){function t(){}return t.all=function(){return function(t){return!0}},t.css=function(t){return function(e){return null!=e.nativeElement&&s().elementMatches(e.nativeElement,t)}},t.directive=function(t){return function(e){return-1!==e.providerTokens.indexOf(t)}},t}(),Ut=new i.Version("7.2.6")},Zduo:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_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\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %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}})}()},Zn8D:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("psW0"),r=n("mChF");function i(t){return void 0===t&&(t=Number.POSITIVE_INFINITY),Object(a.a)(r.a,t)}},a0VL:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t){this.datePipe=t}return t.prototype.transform=function(t){return null===t||""===t?"":this.datePipe.transform(t,"shortDate")+" "+this.datePipe.transform(t,"mediumTime")},t}()},a278:function(t,e,n){"use strict";var a=n("CcnG"),r=n("QC43"),i=n("XFyV"),o=n("TZo1"),s=n("9Kw/"),u=n("Jm/i"),l=n("gIcY"),c=n("Ip0R");n("insk"),n("mSOc"),n("ZYjt"),n("20UP"),n("+0ag"),n.d(e,"a",function(){return d}),n.d(e,"b",function(){return b});var d=a["\u0275crt"]({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}.timepicker[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{display:inline-block}.timepicker[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-size:1.05em;padding:5px!important}button[_ngcontent-%COMP%]{margin-bottom:10px;margin-left:10px;float:right}button[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{font-size:14px;padding:2px}.dropdown-menu[_ngcontent-%COMP%]{top:20px;right:20px;left:auto}"]],data:{}});function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,r.b,r.a)),a["\u0275did"](1,49152,null,0,i.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Loading panel data..."]))],null,null)}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[u.a],null,null),(t()(),a["\u0275ted"](-1,0,["Please consult the "])),(t()(),a["\u0275eld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["documentation"])),(t()(),a["\u0275ted"](-1,0,[" on how to configure and enable the monitoring functionality."]))],null,function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[u.a],null,null),(t()(),a["\u0275ted"](-1,0,["Grafana Dashboard doesn't exist. Please refer to "])),(t()(),a["\u0275eld"](3,0,null,0,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["documentation"])),(t()(),a["\u0275ted"](-1,0,[" on how to add dashboards to Grafana."]))],null,function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function g(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,l.v,[a.ElementRef,a.Renderer2,[2,l.z]],{ngValue:[0,"ngValue"]},null),a["\u0275did"](2,147456,null,0,l.G,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["\u0275ted"](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 m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,20,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,15,"div",[["class","col-md-12 timepicker"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,2,"label",[["class","control-label col-sm-1"],["for","timepicker-control"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Grafana Time Picker"])),(t()(),a["\u0275eld"](5,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,7,"select",[["class","form-control "],["id","timepicker"],["name","timepicker-control"]],[[2,"ng-untouched",null],[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["\u0275nov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,7).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.time=n)&&r),"ngModelChange"===e&&(r=!1!==i.onTimepickerChange(n)&&r),r},null,null)),a["\u0275did"](7,16384,null,0,l.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,l.p,function(t){return[t]},[l.z]),a["\u0275did"](9,671744,null,0,l.u,[[8,null],[8,null],[8,null],[6,l.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,l.q,null,[l.u]),a["\u0275did"](11,16384,null,0,l.r,[[4,l.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,g)),a["\u0275did"](13,278528,null,0,c.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](14,0,null,null,1,"button",[["class","btn btn-sm"],["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["\u0275eld"](15,0,null,null,0,"i",[["class","fa fa-undo"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,3,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,2,"div",[["class","grafana-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,[["iframe",1]],null,1,"iframe",[["class","grafana"],["frameborder","0"],["id","iframe"],["scrolling","no"]],[[8,"src",5]],null,null,null,null)),a["\u0275did"](20,278528,null,0,c.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null)],function(t,e){var n=e.component;t(e,9,0,"timepicker-control",n.time),t(e,13,0,n.grafanaTimes),t(e,20,0,"grafana",n.panelStyle)},function(t,e){var n=e.component;t(e,6,0,a["\u0275nov"](e,11).ngClassUntouched,a["\u0275nov"](e,11).ngClassTouched,a["\u0275nov"](e,11).ngClassPristine,a["\u0275nov"](e,11).ngClassDirty,a["\u0275nov"](e,11).ngClassValid,a["\u0275nov"](e,11).ngClassInvalid,a["\u0275nov"](e,11).ngClassPending),t(e,19,0,n.grafanaSrc)})}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,f)),a["\u0275did"](1,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,h)),a["\u0275did"](5,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](7,16384,null,0,c.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("CcnG"),r=n("EEJc"),i=n("ajRT"),o=n("gIcY"),s=n("Ip0R"),u=n("gp3X"),l=n("sb0X"),c=n("KVJa"),d=n("Z21x"),f=n("sne2"),p=n("OLbh"),h=n("DQlY");n.d(e,"a",function(){return v});var g=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,19,"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["\u0275did"](1,49152,null,0,i.a,[],null,{hide:"hide"}),(t()(),a["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,["",""])),(t()(),a["\u0275eld"](4,0,null,1,15,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,14,"form",[["class","form-horizontal"],["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["\u0275nov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,7).onReset()&&r),r},null,null)),a["\u0275did"](6,16384,null,0,o.D,[],null,null),a["\u0275did"](7,540672,[["formDir",4]],0,o.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,o.d,null,[o.l]),a["\u0275did"](9,16384,null,0,o.s,[[4,o.d]],null,null),(t()(),a["\u0275eld"](10,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](12,540672,null,0,s.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](13,0,null,null,6,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,5,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](15,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},u.b,u.a)),a["\u0275did"](16,114688,null,0,l.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](17,0,[" "," "])),(t()(),a["\u0275eld"](18,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,c.b,c.a)),a["\u0275did"](19,49152,null,0,d.a,[s.Location,f.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,7,0,n.confirmationForm),t(e,12,0,n.bodyContext,n.bodyTpl),t(e,16,0,n.confirmationForm),t(e,19,0,"Cancel",n.boundCancel)},function(t,e){var n=e.component;t(e,3,0,n.titleText),t(e,5,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending),t(e,17,0,n.buttonText)})}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-confirmation-modal",[],null,null,null,b,g)),a["\u0275did"](1,114688,null,0,p.a,[h.a],null,null)],function(t,e){t(e,1,0)},null)}var v=a["\u0275ccf"]("cd-confirmation-modal",p.a,y,{},{},[])},a96k:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t,e,n,a){void 0===a&&(a=!0),this.selected=t,this.name=e,this.description=n,this.enabled=a}}()},aB2c:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),t.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,linkScales:i.noop,update:function(t){var e=this,n=e.getMeta(),a=n.data,r=n.dataset.custom||{},o=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),i.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:i.valueOrDefault(o.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:o.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:o.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:o.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),i.each(a,function(n,a){e.updateElement(n,a,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var a=this,r=t.custom||{},o=a.getDataset(),s=a.chart.scale,u=a.chart.options.elements.point,l=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),i.extend(t,{_datasetIndex:a.index,_index:e,_scale:s,_model:{x:n?s.xCenter:l.x,y:n?s.yCenter:l.y,tension:r.tension?r.tension:i.valueOrDefault(o.lineTension,a.chart.options.elements.line.tension),radius:r.radius?r.radius:i.valueAtIndexOrDefault(o.pointRadius,e,u.radius),backgroundColor:r.backgroundColor?r.backgroundColor:i.valueAtIndexOrDefault(o.pointBackgroundColor,e,u.backgroundColor),borderColor:r.borderColor?r.borderColor:i.valueAtIndexOrDefault(o.pointBorderColor,e,u.borderColor),borderWidth:r.borderWidth?r.borderWidth:i.valueAtIndexOrDefault(o.pointBorderWidth,e,u.borderWidth),pointStyle:r.pointStyle?r.pointStyle:i.valueAtIndexOrDefault(o.pointStyle,e,u.pointStyle),rotation:r.rotation?r.rotation:i.valueAtIndexOrDefault(o.pointRotation,e,u.rotation),hitRadius:r.hitRadius?r.hitRadius:i.valueAtIndexOrDefault(o.pointHitRadius,e,u.hitRadius)}}),t._model.skip=r.skip?r.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();i.each(e.data,function(n,a){var r=n._model,o=i.splineCurve(i.previousItem(e.data,a,!0)._model,r,i.nextItem(e.data,a,!0)._model,r.tension);r.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),r.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),r.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),r.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},a=t._index,r=t._model;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth,radius:r.radius},r.radius=n.hoverRadius?n.hoverRadius:i.valueAtIndexOrDefault(e.pointHoverRadius,a,this.chart.options.elements.point.hoverRadius),r.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:i.valueAtIndexOrDefault(e.pointHoverBackgroundColor,a,i.getHoverColor(r.backgroundColor)),r.borderColor=n.hoverBorderColor?n.hoverBorderColor:i.valueAtIndexOrDefault(e.pointHoverBorderColor,a,i.getHoverColor(r.borderColor)),r.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:i.valueAtIndexOrDefault(e.pointHoverBorderWidth,a,r.borderWidth)}})}},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)}n("wd/R").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\xf9",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\xf1|vet)/,ordinal:function(t){return t+(1===t?"a\xf1":"vet")},week:{dow:1,doy:4}})}()},aIsn:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_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\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".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\u0113kona ruarua",ss:"%d h\u0113kona",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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},aQkU:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".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:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}()},aTeT:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi"}(e.SortType||(e.SortType={}))},aXbf:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("LvDl"),r=n("CcnG"),i=function(){function t(){}return t.prototype.format_number=function(t,e,n,r){if(void 0===r&&(r=1),a.isString(t)&&(t=Number(t)),!a.isNumber(t))return"-";var i=t<1?0:Math.floor(Math.log(t)/Math.log(e));i=i>=n.length?n.length-1:i;var o=a.round(t/Math.pow(e,i),r).toString();return""===o?"-":(""!==n[i]&&(o=o+" "+n[i]),o)},t.prototype.toBytes=function(t,e){void 0===e&&(e=null);var 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;var i=parseFloat(r[1]);return a.isString(r[3])&&(i*=Math.pow(1024,n.indexOf(r[3].toLowerCase()[0]))),Math.round(i)},t.prototype.toMilliseconds=function(t){var e=/^\s*(\d+)\s*(ms)?\s*$/i.exec(t);return null!==e?+e[1]:0},t.prototype.toIops=function(t){var e=/^\s*(\d+)\s*(IOPS)?\s*$/i.exec(t);return null!==e?+e[1]:0},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}()},ad02:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e))}}var o=function(){function t(t,e){this.compare=t,this.keySelector=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.compare,this.keySelector))},t}(),s=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keySelector=a,r.hasKey=!1,"function"==typeof n&&(r.compare=n),r}return a.__extends(e,t),e.prototype.compare=function(t,e){return t===e},e.prototype._next=function(t){var e;try{var n=this.keySelector;e=n?n(t):t}catch(r){return this.destination.error(r)}var a=!1;if(this.hasKey)try{a=(0,this.compare)(this.key,e)}catch(r){return this.destination.error(r)}else this.hasKey=!0;a||(this.key=e,this.destination.next(t))},e}(r.a)},ae7Z:function(t,e,n){"use strict";function a(t){var e={left:[],center:[],right:[]};if(t)for(var n=0,a=t;n<a.length;n++){var r=a[n];r.frozenLeft?e.left.push(r):r.frozenRight?e.right.push(r):e.center.push(r)}return e}function r(t,e){var n=0;if(t)for(var a=0,r=t;a<r.length;a++){var i=r[a];n+=parseFloat(e&&i[e]?i[e]:i.width)}return n}Object.defineProperty(e,"__esModule",{value:!0}),e.columnsByPin=a,e.columnGroupWidths=function(t,e){return{left:r(t.left),center:r(t.center),right:r(t.right),total:Math.floor(r(e))}},e.columnTotalWidth=r,e.columnsTotalWidth=function(t,e){for(var n=0,a=0,r=t;a<r.length;a++){var i=r[a];n+=e&&i[e]?i[e]:i.width}return n},e.columnsByPinArr=function(t){var e=[],n=a(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}},aexS:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("jKX/"),r=n("CcnG"),i=function(){function t(){}return t.prototype.set=function(t,e,n){void 0===n&&(n={}),localStorage.setItem("dashboard_username",t),localStorage.setItem("access_token",e),localStorage.setItem("dashboard_permissions",JSON.stringify(new a.a(n)))},t.prototype.remove=function(){localStorage.removeItem("access_token"),localStorage.removeItem("dashboard_username")},t.prototype.getToken=function(){return localStorage.getItem("access_token")},t.prototype.isLoggedIn=function(){return null!==localStorage.getItem("dashboard_username")},t.prototype.getUsername=function(){return localStorage.getItem("dashboard_username")},t.prototype.getPermissions=function(){return JSON.parse(localStorage.getItem("dashboard_permissions")||JSON.stringify(new a.a({})))},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}()},ahDk:function(t,e,n){"use strict";n.r(e);var a=n("mrSG"),r=n("MGBS"),i=n("zotm");function o(t){return function(e){return e.lift(new s(t))}}var s=function(){function t(t){this.durationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.durationSelector))},t}(),u=function(t){function e(e,n){var a=t.call(this,e)||this;return a.durationSelector=n,a.hasValue=!1,a}return a.__extends(e,t),e.prototype._next=function(t){if(this.value=t,this.hasValue=!0,!this.throttled){var e=void 0;try{e=(0,this.durationSelector)(t)}catch(a){return this.destination.error(a)}var n=Object(i.a)(this,e);!n||n.closed?this.clearThrottle():this.add(this.throttled=n)}},e.prototype.clearThrottle=function(){var t=this.value,e=this.hasValue,n=this.throttled;n&&(this.remove(n),this.throttled=null,n.unsubscribe()),e&&(this.value=null,this.hasValue=!1,this.destination.next(t))},e.prototype.notifyNext=function(t,e,n,a){this.clearThrottle()},e.prototype.notifyComplete=function(){this.clearThrottle()},e}(r.a),l=n("T1DM"),c=n("gI3B");function d(t,e){return void 0===e&&(e=l.a),o(function(){return Object(c.a)(t,e)})}function f(t){return function(e){return e.lift(new p(t))}}var p=function(){function t(t){this.closingNotifier=t}return t.prototype.call=function(t,e){return e.subscribe(new h(t,this.closingNotifier))},t}(),h=function(t){function e(e,n){var a=t.call(this,e)||this;return a.buffer=[],a.add(Object(i.a)(a,n)),a}return a.__extends(e,t),e.prototype._next=function(t){this.buffer.push(t)},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.buffer;this.buffer=[],this.destination.next(i)},e}(r.a),g=n("FFOo");function m(t,e){return void 0===e&&(e=null),function(n){return n.lift(new b(t,e))}}var b=function(){function t(t,e){this.bufferSize=t,this.startBufferEvery=e,this.subscriberClass=e&&t!==e?v:y}return t.prototype.call=function(t,e){return e.subscribe(new this.subscriberClass(t,this.bufferSize,this.startBufferEvery))},t}(),y=function(t){function e(e,n){var a=t.call(this,e)||this;return a.bufferSize=n,a.buffer=[],a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.buffer;e.push(t),e.length==this.bufferSize&&(this.destination.next(e),this.buffer=[])},e.prototype._complete=function(){var e=this.buffer;e.length>0&&this.destination.next(e),t.prototype._complete.call(this)},e}(g.a),v=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.bufferSize=n,r.startBufferEvery=a,r.buffers=[],r.count=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.bufferSize,n=this.startBufferEvery,a=this.buffers,r=this.count;this.count++,r%n==0&&a.push([]);for(var i=a.length;i--;){var o=a[i];o.push(t),o.length===e&&(a.splice(i,1),this.destination.next(o))}},e.prototype._complete=function(){for(var e=this.buffers,n=this.destination;e.length>0;){var a=e.shift();a.length>0&&n.next(a)}t.prototype._complete.call(this)},e}(g.a),_=n("nkY7");function x(t){var e=arguments.length,n=l.a;Object(_.a)(arguments[arguments.length-1])&&(n=arguments[arguments.length-1],e--);var a=null;e>=2&&(a=arguments[1]);var r=Number.POSITIVE_INFINITY;return e>=3&&(r=arguments[2]),function(e){return e.lift(new T(t,a,r,n))}}var T=function(){function t(t,e,n,a){this.bufferTimeSpan=t,this.bufferCreationInterval=e,this.maxBufferSize=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new S(t,this.bufferTimeSpan,this.bufferCreationInterval,this.maxBufferSize,this.scheduler))},t}(),w=function(){return function(){this.buffer=[]}}(),S=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;o.bufferTimeSpan=n,o.bufferCreationInterval=a,o.maxBufferSize=r,o.scheduler=i,o.contexts=[];var s=o.openContext();if(o.timespanOnly=null==a||a<0,o.timespanOnly)o.add(s.closeAction=i.schedule(O,n,{subscriber:o,context:s,bufferTimeSpan:n}));else{var u={bufferTimeSpan:n,bufferCreationInterval:a,subscriber:o,scheduler:i};o.add(s.closeAction=i.schedule(k,n,{subscriber:o,context:s})),o.add(i.schedule(C,a,u))}return o}return a.__extends(e,t),e.prototype._next=function(t){for(var e,n=this.contexts,a=n.length,r=0;r<a;r++){var i=n[r],o=i.buffer;o.push(t),o.length==this.maxBufferSize&&(e=i)}e&&this.onBufferFull(e)},e.prototype._error=function(e){this.contexts.length=0,t.prototype._error.call(this,e)},e.prototype._complete=function(){for(var e=this.contexts,n=this.destination;e.length>0;){var a=e.shift();n.next(a.buffer)}t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){this.contexts=null},e.prototype.onBufferFull=function(t){this.closeContext(t);var e=t.closeAction;if(e.unsubscribe(),this.remove(e),!this.closed&&this.timespanOnly){t=this.openContext();var n=this.bufferTimeSpan;this.add(t.closeAction=this.scheduler.schedule(O,n,{subscriber:this,context:t,bufferTimeSpan:n}))}},e.prototype.openContext=function(){var t=new w;return this.contexts.push(t),t},e.prototype.closeContext=function(t){this.destination.next(t.buffer);var e=this.contexts;(e?e.indexOf(t):-1)>=0&&e.splice(e.indexOf(t),1)},e}(g.a);function O(t){var e=t.subscriber,n=t.context;n&&e.closeContext(n),e.closed||(t.context=e.openContext(),t.context.closeAction=this.schedule(t,t.bufferTimeSpan))}function C(t){var e=t.bufferCreationInterval,n=t.bufferTimeSpan,a=t.subscriber,r=t.scheduler,i=a.openContext();a.closed||(a.add(i.closeAction=r.schedule(k,n,{subscriber:a,context:i})),this.schedule(t,e))}function k(t){t.subscriber.closeContext(t.context)}var I=n("pugT");function D(t,e){return function(n){return n.lift(new R(t,e))}}var R=function(){function t(t,e){this.openings=t,this.closingSelector=e}return t.prototype.call=function(t,e){return e.subscribe(new N(t,this.openings,this.closingSelector))},t}(),N=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.openings=n,r.closingSelector=a,r.contexts=[],r.add(Object(i.a)(r,n)),r}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.contexts,n=e.length,a=0;a<n;a++)e[a].buffer.push(t)},e.prototype._error=function(e){for(var n=this.contexts;n.length>0;){var a=n.shift();a.subscription.unsubscribe(),a.buffer=null,a.subscription=null}this.contexts=null,t.prototype._error.call(this,e)},e.prototype._complete=function(){for(var e=this.contexts;e.length>0;){var n=e.shift();this.destination.next(n.buffer),n.subscription.unsubscribe(),n.buffer=null,n.subscription=null}this.contexts=null,t.prototype._complete.call(this)},e.prototype.notifyNext=function(t,e,n,a,r){t?this.closeBuffer(t):this.openBuffer(e)},e.prototype.notifyComplete=function(t){this.closeBuffer(t.context)},e.prototype.openBuffer=function(t){try{var e=this.closingSelector.call(this,t);e&&this.trySubscribe(e)}catch(n){this._error(n)}},e.prototype.closeBuffer=function(t){var e=this.contexts;if(e&&t){var n=t.subscription;this.destination.next(t.buffer),e.splice(e.indexOf(t),1),this.remove(n),n.unsubscribe()}},e.prototype.trySubscribe=function(t){var e=this.contexts,n=new I.a,a={buffer:[],subscription:n};e.push(a);var r=Object(i.a)(this,t,a);!r||r.closed?this.closeBuffer(a):(r.context=a,this.add(r),n.add(r))},e}(r.a);function A(t){return function(e){return e.lift(new E(t))}}var E=function(){function t(t){this.closingSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new L(t,this.closingSelector))},t}(),L=function(t){function e(e,n){var a=t.call(this,e)||this;return a.closingSelector=n,a.subscribing=!1,a.openBuffer(),a}return a.__extends(e,t),e.prototype._next=function(t){this.buffer.push(t)},e.prototype._complete=function(){var e=this.buffer;e&&this.destination.next(e),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){this.buffer=null,this.subscribing=!1},e.prototype.notifyNext=function(t,e,n,a,r){this.openBuffer()},e.prototype.notifyComplete=function(){this.subscribing?this.complete():this.openBuffer()},e.prototype.openBuffer=function(){var t,e=this.closingSubscription;e&&(this.remove(e),e.unsubscribe()),this.buffer&&this.destination.next(this.buffer),this.buffer=[];try{t=(0,this.closingSelector)()}catch(n){return this.error(n)}e=new I.a,this.closingSubscription=e,this.add(e),this.subscribing=!0,e.add(Object(i.a)(this,t)),this.subscribing=!1},e}(r.a),P=n("9Z1F"),M=n("dzgT");function j(t){return function(e){return e.lift(new M.a(t))}}var q=n("isby"),F=n("0/uQ");function z(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=null;return"function"==typeof t[t.length-1]&&(n=t.pop()),1===t.length&&Object(q.a)(t[0])&&(t=t[0].slice()),function(e){return e.lift.call(Object(F.a)([e].concat(t)),new M.a(n))}}var Y=n("wbK0"),H=n("Txjg"),G=n("Phjn");function V(t,e){return Object(G.a)(function(){return t},e)}function B(t){return function(e){return e.lift(new U(t,e))}}var U=function(){function t(t,e){this.predicate=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new W(t,this.predicate,this.source))},t}(),W=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.source=a,r.count=0,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.predicate?this._tryPredicate(t):this.count++},e.prototype._tryPredicate=function(t){var e;try{e=this.predicate(t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e&&this.count++},e.prototype._complete=function(){this.destination.next(this.count),this.destination.complete()},e}(g.a);function K(t){return function(e){return e.lift(new $(t))}}var $=function(){function t(t){this.durationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new Z(t,this.durationSelector))},t}(),Z=function(t){function e(e,n){var a=t.call(this,e)||this;return a.durationSelector=n,a.hasValue=!1,a.durationSubscription=null,a}return a.__extends(e,t),e.prototype._next=function(t){try{var e=this.durationSelector.call(this,t);e&&this._tryNext(t,e)}catch(n){this.destination.error(n)}},e.prototype._complete=function(){this.emitValue(),this.destination.complete()},e.prototype._tryNext=function(t,e){var n=this.durationSubscription;this.value=t,this.hasValue=!0,n&&(n.unsubscribe(),this.remove(n)),(n=Object(i.a)(this,e))&&!n.closed&&this.add(this.durationSubscription=n)},e.prototype.notifyNext=function(t,e,n,a,r){this.emitValue()},e.prototype.notifyComplete=function(){this.emitValue()},e.prototype.emitValue=function(){if(this.hasValue){var e=this.value,n=this.durationSubscription;n&&(this.durationSubscription=null,n.unsubscribe(),this.remove(n)),this.value=null,this.hasValue=!1,t.prototype._next.call(this,e)}},e}(r.a),X=n("Gi3i"),J=n("HJBe");function Q(t){return t instanceof Date&&!isNaN(+t)}var tt=n("60iU");function et(t,e){void 0===e&&(e=l.a);var n=Q(t)?+t-e.now():Math.abs(t);return function(t){return t.lift(new nt(n,e))}}var nt=function(){function t(t,e){this.delay=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new at(t,this.delay,this.scheduler))},t}(),at=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.delay=n,r.scheduler=a,r.queue=[],r.active=!1,r.errored=!1,r}return a.__extends(e,t),e.dispatch=function(t){for(var e=t.source,n=e.queue,a=t.scheduler,r=t.destination;n.length>0&&n[0].time-a.now()<=0;)n.shift().notification.observe(r);if(n.length>0){var i=Math.max(0,n[0].time-a.now());this.schedule(t,i)}else this.unsubscribe(),e.active=!1},e.prototype._schedule=function(t){this.active=!0,this.destination.add(t.schedule(e.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))},e.prototype.scheduleNotification=function(t){if(!0!==this.errored){var e=this.scheduler,n=new rt(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}},e.prototype._next=function(t){this.scheduleNotification(tt.a.createNext(t))},e.prototype._error=function(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.scheduleNotification(tt.a.createComplete()),this.unsubscribe()},e}(g.a),rt=function(){return function(t,e){this.time=t,this.notification=e}}(),it=n("6blF");function ot(t,e){return e?function(n){return new lt(n,e).lift(new st(t))}:function(e){return e.lift(new st(t))}}var st=function(){function t(t){this.delayDurationSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new ut(t,this.delayDurationSelector))},t}(),ut=function(t){function e(e,n){var a=t.call(this,e)||this;return a.delayDurationSelector=n,a.completed=!1,a.delayNotifierSubscriptions=[],a.index=0,a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(t),this.removeSubscription(r),this.tryComplete()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){var e=this.removeSubscription(t);e&&this.destination.next(e),this.tryComplete()},e.prototype._next=function(t){var e=this.index++;try{var n=this.delayDurationSelector(t,e);n&&this.tryDelay(n,t)}catch(a){this.destination.error(a)}},e.prototype._complete=function(){this.completed=!0,this.tryComplete(),this.unsubscribe()},e.prototype.removeSubscription=function(t){t.unsubscribe();var e=this.delayNotifierSubscriptions.indexOf(t);return-1!==e&&this.delayNotifierSubscriptions.splice(e,1),t.outerValue},e.prototype.tryDelay=function(t,e){var n=Object(i.a)(this,t,e);n&&!n.closed&&(this.destination.add(n),this.delayNotifierSubscriptions.push(n))},e.prototype.tryComplete=function(){this.completed&&0===this.delayNotifierSubscriptions.length&&this.destination.complete()},e}(r.a),lt=function(t){function e(e,n){var a=t.call(this)||this;return a.source=e,a.subscriptionDelay=n,a}return a.__extends(e,t),e.prototype._subscribe=function(t){this.subscriptionDelay.subscribe(new ct(t,this.source))},e}(it.a),ct=function(t){function e(e,n){var a=t.call(this)||this;return a.parent=e,a.source=n,a.sourceSubscribed=!1,a}return a.__extends(e,t),e.prototype._next=function(t){this.subscribeToSource()},e.prototype._error=function(t){this.unsubscribe(),this.parent.error(t)},e.prototype._complete=function(){this.unsubscribe(),this.subscribeToSource()},e.prototype.subscribeToSource=function(){this.sourceSubscribed||(this.sourceSubscribed=!0,this.unsubscribe(),this.source.subscribe(this.parent))},e}(g.a);function dt(){return function(t){return t.lift(new ft)}}var ft=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new pt(t))},t}(),pt=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype._next=function(t){t.observe(this.destination)},e}(g.a),ht=n("ou9H"),gt=n("ad02");function mt(t,e){return Object(gt.a)(function(n,a){return e?e(n[t],a[t]):n[t]===a[t]})}var bt=n("b7mW"),yt=n("VnD/"),vt=n("tNVB"),_t=n("t9fZ");function xt(t,e){if(t<0)throw new bt.a;var n=arguments.length>=2;return function(a){return a.pipe(Object(yt.a)(function(e,n){return n===t}),Object(_t.a)(1),n?Object(J.a)(e):Object(vt.a)(function(){return new bt.a}))}}var Tt=n("IUTb"),wt=n("PU8L"),St=n("G5J1"),Ot=n("dEwP");function Ct(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n=t[t.length-1];Object(_.a)(n)?t.pop():n=null;var a=t.length;return 1!==a||n?a>0?Object(Ot.a)(e,Object(Tt.a)(t,n)):Object(Ot.a)(e,Object(St.b)(n)):Object(Ot.a)(e,Object(wt.a)(t[0]))}}var kt=n("zAZS");function It(){return function(t){return t.lift(new Dt)}}var Dt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Rt(t))},t}(),Rt=function(t){function e(e){var n=t.call(this,e)||this;return n.hasCompleted=!1,n.hasSubscription=!1,n}return a.__extends(e,t),e.prototype._next=function(t){this.hasSubscription||(this.hasSubscription=!0,this.add(Object(i.a)(this,t)))},e.prototype._complete=function(){this.hasCompleted=!0,this.hasSubscription||this.destination.complete()},e.prototype.notifyComplete=function(t){this.remove(t),this.hasSubscription=!1,this.hasCompleted&&this.destination.complete()},e}(r.a),Nt=n("rPjj"),At=n("67Y/");function Et(t,e){return e?function(n){return n.pipe(Et(function(n,a){return Object(F.a)(t(n,a)).pipe(Object(At.a)(function(t,r){return e(n,t,a,r)}))}))}:function(e){return e.lift(new Lt(t))}}var Lt=function(){function t(t){this.project=t}return t.prototype.call=function(t,e){return e.subscribe(new Pt(t,this.project))},t}(),Pt=function(t){function e(e,n){var a=t.call(this,e)||this;return a.project=n,a.hasSubscription=!1,a.hasCompleted=!1,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){this.hasSubscription||this.tryNext(t)},e.prototype.tryNext=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.hasSubscription=!0,this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=new Nt.a(this,void 0,void 0);this.destination.add(a),Object(i.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,this.hasSubscription||this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyError=function(t){this.destination.error(t)},e.prototype.notifyComplete=function(t){this.destination.remove(t),this.hasSubscription=!1,this.hasCompleted&&this.destination.complete()},e}(r.a);function Mt(t,e,n){return void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=void 0),e=(e||0)<1?Number.POSITIVE_INFINITY:e,function(a){return a.lift(new jt(t,e,n))}}var jt=function(){function t(t,e,n){this.project=t,this.concurrent=e,this.scheduler=n}return t.prototype.call=function(t,e){return e.subscribe(new qt(t,this.project,this.concurrent,this.scheduler))},t}(),qt=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.project=n,i.concurrent=a,i.scheduler=r,i.index=0,i.active=0,i.hasCompleted=!1,a<Number.POSITIVE_INFINITY&&(i.buffer=[]),i}return a.__extends(e,t),e.dispatch=function(t){t.subscriber.subscribeToProjection(t.result,t.value,t.index)},e.prototype._next=function(t){var n=this.destination;if(n.closed)this._complete();else{var a=this.index++;if(this.active<this.concurrent){n.next(t);try{var r=(0,this.project)(t,a);this.scheduler?this.destination.add(this.scheduler.schedule(e.dispatch,0,{subscriber:this,result:r,value:t,index:a})):this.subscribeToProjection(r,t,a)}catch(i){n.error(i)}}else this.buffer.push(t)}},e.prototype.subscribeToProjection=function(t,e,n){this.active++,this.destination.add(Object(i.a)(this,t,e,n))},e.prototype._complete=function(){this.hasCompleted=!0,this.hasCompleted&&0===this.active&&this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this._next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.destination.remove(t),this.active--,e&&e.length>0&&this._next(e.shift()),this.hasCompleted&&0===this.active&&this.destination.complete()},e}(r.a),Ft=n("2WpN");function zt(t,e){if("function"!=typeof t)throw new TypeError("predicate is not a function");return function(n){return n.lift(new Yt(t,n,!1,e))}}var Yt=function(){function t(t,e,n,a){this.predicate=t,this.source=e,this.yieldIndex=n,this.thisArg=a}return t.prototype.call=function(t,e){return e.subscribe(new Ht(t,this.predicate,this.source,this.yieldIndex,this.thisArg))},t}(),Ht=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.predicate=n,o.source=a,o.yieldIndex=r,o.thisArg=i,o.index=0,o}return a.__extends(e,t),e.prototype.notifyComplete=function(t){var e=this.destination;e.next(t),e.complete(),this.unsubscribe()},e.prototype._next=function(t){var e=this.predicate,n=this.thisArg,a=this.index++;try{e.call(n||this,t,a,this.source)&&this.notifyComplete(this.yieldIndex?a:t)}catch(r){this.destination.error(r)}},e.prototype._complete=function(){this.notifyComplete(this.yieldIndex?-1:void 0)},e}(g.a);function Gt(t,e){return function(n){return n.lift(new Yt(t,n,!0,e))}}var Vt=n("P6uZ"),Bt=n("IxPp");function Ut(){return function(t){return t.lift(new Wt)}}var Wt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Kt(t))},t}(),Kt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype._next=function(t){},e}(g.a);function $t(){return function(t){return t.lift(new Zt)}}var Zt=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new Xt(t))},t}(),Xt=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype.notifyComplete=function(t){var e=this.destination;e.next(t),e.complete()},e.prototype._next=function(t){this.notifyComplete(!1)},e.prototype._complete=function(){this.notifyComplete(!0)},e}(g.a),Jt=n("w1EH");function Qt(t){return function(e){return e.lift(new te(t))}}var te=function(){function t(t){this.value=t}return t.prototype.call=function(t,e){return e.subscribe(new ee(t,this.value))},t}(),ee=function(t){function e(e,n){var a=t.call(this,e)||this;return a.value=n,a}return a.__extends(e,t),e.prototype._next=function(t){this.destination.next(this.value)},e}(g.a);function ne(){return function(t){return t.lift(new ae)}}var ae=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new re(t))},t}(),re=function(t){function e(e){return t.call(this,e)||this}return a.__extends(e,t),e.prototype._next=function(t){this.destination.next(tt.a.createNext(t))},e.prototype._error=function(t){var e=this.destination;e.next(tt.a.createError(t)),e.complete()},e.prototype._complete=function(){var t=this.destination;t.next(tt.a.createComplete()),t.complete()},e}(g.a),ie=n("Qgas");function oe(t){var e="function"==typeof t?function(e,n){return t(e,n)>0?e:n}:function(t,e){return t>e?t:e};return Object(ie.a)(e)}var se=n("p0ib");function ue(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(se.a.apply(void 0,[e].concat(t)))}}var le=n("Zn8D"),ce=n("psW0");function de(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"function"==typeof e?Object(ce.a)(function(){return t},e,n):("number"==typeof e&&(n=e),Object(ce.a)(function(){return t},n))}function fe(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),function(a){return a.lift(new pe(t,e,n))}}var pe=function(){function t(t,e,n){this.accumulator=t,this.seed=e,this.concurrent=n}return t.prototype.call=function(t,e){return e.subscribe(new he(t,this.accumulator,this.seed,this.concurrent))},t}(),he=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.accumulator=n,i.acc=a,i.concurrent=r,i.hasValue=!1,i.hasCompleted=!1,i.buffer=[],i.active=0,i.index=0,i}return a.__extends(e,t),e.prototype._next=function(t){if(this.active<this.concurrent){var e=this.index++,n=this.destination,a=void 0;try{a=(0,this.accumulator)(this.acc,t,e)}catch(r){return n.error(r)}this.active++,this._innerSub(a,t,e)}else this.buffer.push(t)},e.prototype._innerSub=function(t,e,n){var a=new Nt.a(this,void 0,void 0);this.destination.add(a),Object(i.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&(!1===this.hasValue&&this.destination.next(this.acc),this.destination.complete()),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.destination;this.acc=e,this.hasValue=!0,i.next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.destination.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&(!1===this.hasValue&&this.destination.next(this.acc),this.destination.complete())},e}(r.a);function ge(t){var e="function"==typeof t?function(e,n){return t(e,n)<0?e:n}:function(t,e){return t<e?t:e};return Object(ie.a)(e)}var me=n("xlPZ"),be=n("mZXl");function ye(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 1===t.length&&Object(q.a)(t[0])&&(t=t[0]),function(e){return e.lift(new ve(t))}}var ve=function(){function t(t){this.nextSources=t}return t.prototype.call=function(t,e){return e.subscribe(new _e(t,this.nextSources))},t}(),_e=function(t){function e(e,n){var a=t.call(this,e)||this;return a.destination=e,a.nextSources=n,a}return a.__extends(e,t),e.prototype.notifyError=function(t,e){this.subscribeToNextSource()},e.prototype.notifyComplete=function(t){this.subscribeToNextSource()},e.prototype._error=function(t){this.subscribeToNextSource(),this.unsubscribe()},e.prototype._complete=function(){this.subscribeToNextSource(),this.unsubscribe()},e.prototype.subscribeToNextSource=function(){var t=this.nextSources.shift();if(t){var e=new Nt.a(this,void 0,void 0);this.destination.add(e),Object(i.a)(this,t,void 0,void 0,e)}else this.destination.complete()},e}(r.a);function xe(){return function(t){return t.lift(new Te)}}var Te=function(){function t(){}return t.prototype.call=function(t,e){return e.subscribe(new we(t))},t}(),we=function(t){function e(e){var n=t.call(this,e)||this;return n.hasPrev=!1,n}return a.__extends(e,t),e.prototype._next=function(t){this.hasPrev?this.destination.next([this.prev,t]):this.hasPrev=!0,this.prev=t},e}(g.a);function Se(t,e){function n(){return!n.pred.apply(n.thisArg,arguments)}return n.pred=t,n.thisArg=e,n}function Oe(t,e){return function(n){return[Object(yt.a)(t,e)(n),Object(yt.a)(Se(t,e))(n)]}}function Ce(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(0===n)throw new Error("list of properties cannot be empty.");return function(e){return Object(At.a)(function(t,e){return function(n){for(var a=n,r=0;r<e;r++){var i=a[t[r]];if(void 0===i)return;a=i}return a}}(t,n))(e)}}var ke=n("K9Ia");function Ie(t){return t?Object(me.a)(function(){return new ke.a},t):Object(me.a)(new ke.a)}var De=n("26FU");function Re(t){return function(e){return Object(me.a)(new De.a(t))(e)}}var Ne=n("svcd");function Ae(){return function(t){return Object(me.a)(new Ne.a)(t)}}var Ee=n("S5bw");function Le(t,e,n,a){n&&"function"!=typeof n&&(a=n);var r="function"==typeof n?n:void 0,i=new Ee.a(t,e,a);return function(t){return Object(me.a)(function(){return i},r)(t)}}var Pe=n("W0Ae");function Me(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return 1===t.length&&Object(q.a)(t[0])&&(t=t[0]),e.lift.call(Pe.a.apply(void 0,[e].concat(t)))}}function je(t){return void 0===t&&(t=-1),function(e){return 0===t?Object(St.b)():e.lift(new qe(t<0?-1:t-1,e))}}var qe=function(){function t(t,e){this.count=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Fe(t,this.count,this.source))},t}(),Fe=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.count=n,r.source=a,r}return a.__extends(e,t),e.prototype.complete=function(){if(!this.isStopped){var e=this.source,n=this.count;if(0===n)return t.prototype.complete.call(this);n>-1&&(this.count=n-1),e.subscribe(this._unsubscribeAndRecycle())}},e}(g.a);function ze(t){return function(e){return e.lift(new Ye(t))}}var Ye=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){return e.subscribe(new He(t,this.notifier,e))},t}(),He=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.notifier=n,r.source=a,r.sourceIsBeingSubscribedTo=!0,r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.sourceIsBeingSubscribedTo=!0,this.source.subscribe(this)},e.prototype.notifyComplete=function(e){if(!1===this.sourceIsBeingSubscribedTo)return t.prototype.complete.call(this)},e.prototype.complete=function(){if(this.sourceIsBeingSubscribedTo=!1,!this.isStopped){if(this.retries||this.subscribeToRetries(),!this.retriesSubscription||this.retriesSubscription.closed)return t.prototype.complete.call(this);this._unsubscribeAndRecycle(),this.notifications.next()}},e.prototype._unsubscribe=function(){var t=this.notifications,e=this.retriesSubscription;t&&(t.unsubscribe(),this.notifications=null),e&&(e.unsubscribe(),this.retriesSubscription=null),this.retries=null},e.prototype._unsubscribeAndRecycle=function(){var e=this._unsubscribe;return this._unsubscribe=null,t.prototype._unsubscribeAndRecycle.call(this),this._unsubscribe=e,this},e.prototype.subscribeToRetries=function(){var e;this.notifications=new ke.a;try{e=(0,this.notifier)(this.notifications)}catch(n){return t.prototype.complete.call(this)}this.retries=e,this.retriesSubscription=Object(i.a)(this,e)},e}(r.a);function Ge(t){return void 0===t&&(t=-1),function(e){return e.lift(new Ve(t,e))}}var Ve=function(){function t(t,e){this.count=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Be(t,this.count,this.source))},t}(),Be=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.count=n,r.source=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=this.source,a=this.count;if(0===a)return t.prototype.error.call(this,e);a>-1&&(this.count=a-1),n.subscribe(this._unsubscribeAndRecycle())}},e}(g.a);function Ue(t){return function(e){return e.lift(new We(t,e))}}var We=function(){function t(t,e){this.notifier=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new Ke(t,this.notifier,this.source))},t}(),Ke=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.notifier=n,r.source=a,r}return a.__extends(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=this.errors,a=this.retries,r=this.retriesSubscription;if(a)this.errors=null,this.retriesSubscription=null;else{n=new ke.a;try{a=(0,this.notifier)(n)}catch(o){return t.prototype.error.call(this,o)}r=Object(i.a)(this,a)}this._unsubscribeAndRecycle(),this.errors=n,this.retries=a,this.retriesSubscription=r,n.next(e)}},e.prototype._unsubscribe=function(){var t=this.errors,e=this.retriesSubscription;t&&(t.unsubscribe(),this.errors=null),e&&(e.unsubscribe(),this.retriesSubscription=null),this.retries=null},e.prototype.notifyNext=function(t,e,n,a,r){var i=this._unsubscribe;this._unsubscribe=null,this._unsubscribeAndRecycle(),this._unsubscribe=i,this.source.subscribe(this)},e}(r.a),$e=n("yGWI");function Ze(t){return function(e){return e.lift(new Xe(t))}}var Xe=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){var n=new Je(t),a=e.subscribe(n);return a.add(Object(i.a)(n,this.notifier)),a},t}(),Je=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasValue=!1,e}return a.__extends(e,t),e.prototype._next=function(t){this.value=t,this.hasValue=!0},e.prototype.notifyNext=function(t,e,n,a,r){this.emitValue()},e.prototype.notifyComplete=function(){this.emitValue()},e.prototype.emitValue=function(){this.hasValue&&(this.hasValue=!1,this.destination.next(this.value))},e}(r.a);function Qe(t,e){return void 0===e&&(e=l.a),function(n){return n.lift(new tn(t,e))}}var tn=function(){function t(t,e){this.period=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new en(t,this.period,this.scheduler))},t}(),en=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.period=n,r.scheduler=a,r.hasValue=!1,r.add(a.schedule(nn,n,{subscriber:r,period:n})),r}return a.__extends(e,t),e.prototype._next=function(t){this.lastValue=t,this.hasValue=!0},e.prototype.notifyNext=function(){this.hasValue&&(this.hasValue=!1,this.destination.next(this.lastValue))},e}(g.a);function nn(t){var e=t.period;t.subscriber.notifyNext(),this.schedule(t,e)}var an=n("dC0D");function rn(t,e){return function(n){return n.lift(new on(t,e))}}var on=function(){function t(t,e){this.compareTo=t,this.comparator=e}return t.prototype.call=function(t,e){return e.subscribe(new sn(t,this.compareTo,this.comparator))},t}(),sn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.compareTo=n,r.comparator=a,r._a=[],r._b=[],r._oneComplete=!1,r.destination.add(n.subscribe(new un(e,r))),r}return a.__extends(e,t),e.prototype._next=function(t){this._oneComplete&&0===this._b.length?this.emit(!1):(this._a.push(t),this.checkValues())},e.prototype._complete=function(){this._oneComplete?this.emit(0===this._a.length&&0===this._b.length):this._oneComplete=!0,this.unsubscribe()},e.prototype.checkValues=function(){for(var t=this._a,e=this._b,n=this.comparator;t.length>0&&e.length>0;){var a=t.shift(),r=e.shift(),i=!1;try{i=n?n(a,r):a===r}catch(o){this.destination.error(o)}i||this.emit(!1)}},e.prototype.emit=function(t){var e=this.destination;e.next(t),e.complete()},e.prototype.nextB=function(t){this._oneComplete&&0===this._a.length?this.emit(!1):(this._b.push(t),this.checkValues())},e.prototype.completeB=function(){this._oneComplete?this.emit(0===this._a.length&&0===this._b.length):this._oneComplete=!0},e}(g.a),un=function(t){function e(e,n){var a=t.call(this,e)||this;return a.parent=n,a}return a.__extends(e,t),e.prototype._next=function(t){this.parent.nextB(t)},e.prototype._error=function(t){this.parent.error(t),this.unsubscribe()},e.prototype._complete=function(){this.parent.completeB(),this.unsubscribe()},e}(g.a),ln=n("S1nX"),cn=n("klSw"),dn=n("3fWJ");function fn(t){return function(e){return e.lift(new pn(t,e))}}var pn=function(){function t(t,e){this.predicate=t,this.source=e}return t.prototype.call=function(t,e){return e.subscribe(new hn(t,this.predicate,this.source))},t}(),hn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.source=a,r.seenValue=!1,r.index=0,r}return a.__extends(e,t),e.prototype.applySingleValue=function(t){this.seenValue?this.destination.error("Sequence contains more than one element"):(this.seenValue=!0,this.singleValue=t)},e.prototype._next=function(t){var e=this.index++;this.predicate?this.tryNext(t,e):this.applySingleValue(t)},e.prototype.tryNext=function(t,e){try{this.predicate(t,e,this.source)&&this.applySingleValue(t)}catch(n){this.destination.error(n)}},e.prototype._complete=function(){var t=this.destination;this.index>0?(t.next(this.seenValue?this.singleValue:void 0),t.complete()):t.error(new dn.a)},e}(g.a);function gn(t){return function(e){return e.lift(new mn(t))}}var mn=function(){function t(t){this.total=t}return t.prototype.call=function(t,e){return e.subscribe(new bn(t,this.total))},t}(),bn=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){++this.count>this.total&&this.destination.next(t)},e}(g.a);function yn(t){return function(e){return e.lift(new vn(t))}}var vn=function(){function t(t){if(this._skipCount=t,this._skipCount<0)throw new bt.a}return t.prototype.call=function(t,e){return e.subscribe(0===this._skipCount?new g.a(t):new _n(t,this._skipCount))},t}(),_n=function(t){function e(e,n){var a=t.call(this,e)||this;return a._skipCount=n,a._count=0,a._ring=new Array(n),a}return a.__extends(e,t),e.prototype._next=function(t){var e=this._skipCount,n=this._count++;if(n<e)this._ring[n]=t;else{var a=n%e,r=this._ring,i=r[a];r[a]=t,this.destination.next(i)}},e}(g.a);function xn(t){return function(e){return e.lift(new Tn(t))}}var Tn=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){return e.subscribe(new wn(t,this.notifier))},t}(),wn=function(t){function e(e,n){var a=t.call(this,e)||this;a.hasValue=!1;var r=new Nt.a(a,void 0,void 0);return a.add(r),a.innerSubscription=r,Object(i.a)(a,n,void 0,void 0,r),a}return a.__extends(e,t),e.prototype._next=function(e){this.hasValue&&t.prototype._next.call(this,e)},e.prototype.notifyNext=function(t,e,n,a,r){this.hasValue=!0,this.innerSubscription&&this.innerSubscription.unsubscribe()},e.prototype.notifyComplete=function(){},e}(r.a);function Sn(t){return function(e){return e.lift(new On(t))}}var On=function(){function t(t){this.predicate=t}return t.prototype.call=function(t,e){return e.subscribe(new Cn(t,this.predicate))},t}(),Cn=function(t){function e(e,n){var a=t.call(this,e)||this;return a.predicate=n,a.skipping=!0,a.index=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.destination;this.skipping&&this.tryCallPredicate(t),this.skipping||e.next(t)},e.prototype.tryCallPredicate=function(t){try{var e=this.predicate(t,this.index++);this.skipping=Boolean(e)}catch(n){this.destination.error(n)}},e}(g.a),kn=n("p0Sj"),In=n("KQya"),Dn=n("/21U"),Rn=function(t){function e(e,n,a){void 0===n&&(n=0),void 0===a&&(a=In.a);var r=t.call(this)||this;return r.source=e,r.delayTime=n,r.scheduler=a,(!Object(Dn.a)(n)||n<0)&&(r.delayTime=0),a&&"function"==typeof a.schedule||(r.scheduler=In.a),r}return a.__extends(e,t),e.create=function(t,n,a){return void 0===n&&(n=0),void 0===a&&(a=In.a),new e(t,n,a)},e.dispatch=function(t){return this.add(t.source.subscribe(t.subscriber))},e.prototype._subscribe=function(t){return this.scheduler.schedule(e.dispatch,this.delayTime,{source:this.source,subscriber:t})},e}(it.a);function Nn(t,e){return void 0===e&&(e=0),function(n){return n.lift(new An(t,e))}}var An=function(){function t(t,e){this.scheduler=t,this.delay=e}return t.prototype.call=function(t,e){return new Rn(e,this.delay,this.scheduler).subscribe(t)},t}(),En=n("15JJ"),Ln=n("mChF");function Pn(){return Object(En.a)(Ln.a)}var Mn=n("zQHH"),jn=n("AxiF");function qn(t){return function(e){return e.lift(new Fn(t))}}var Fn=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){var n=new zn(t),a=Object(i.a)(n,this.notifier);return a&&!n.seenValue?(n.add(a),e.subscribe(n)):n},t}(),zn=function(t){function e(e){var n=t.call(this,e)||this;return n.seenValue=!1,n}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.seenValue=!0,this.complete()},e.prototype.notifyComplete=function(){},e}(r.a);function Yn(t,e){return void 0===e&&(e=!1),function(n){return n.lift(new Hn(t,e))}}var Hn=function(){function t(t,e){this.predicate=t,this.inclusive=e}return t.prototype.call=function(t,e){return e.subscribe(new Gn(t,this.predicate,this.inclusive))},t}(),Gn=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.predicate=n,r.inclusive=a,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){var e,n=this.destination;try{e=this.predicate(t,this.index++)}catch(a){return void n.error(a)}this.nextOrComplete(t,e)},e.prototype.nextOrComplete=function(t,e){var n=this.destination;Boolean(e)?n.next(t):(this.inclusive&&n.next(t),n.complete())},e}(g.a),Vn=n("xMyE"),Bn={leading:!0,trailing:!1};function Un(t,e){return void 0===e&&(e=Bn),function(n){return n.lift(new Wn(t,e.leading,e.trailing))}}var Wn=function(){function t(t,e,n){this.durationSelector=t,this.leading=e,this.trailing=n}return t.prototype.call=function(t,e){return e.subscribe(new Kn(t,this.durationSelector,this.leading,this.trailing))},t}(),Kn=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.destination=e,i.durationSelector=n,i._leading=a,i._trailing=r,i._hasValue=!1,i}return a.__extends(e,t),e.prototype._next=function(t){this._hasValue=!0,this._sendValue=t,this._throttled||(this._leading?this.send():this.throttle(t))},e.prototype.send=function(){var t=this._sendValue;this._hasValue&&(this.destination.next(t),this.throttle(t)),this._hasValue=!1,this._sendValue=null},e.prototype.throttle=function(t){var e=this.tryDurationSelector(t);e&&this.add(this._throttled=Object(i.a)(this,e))},e.prototype.tryDurationSelector=function(t){try{return this.durationSelector(t)}catch(e){return this.destination.error(e),null}},e.prototype.throttlingDone=function(){var t=this._throttled,e=this._trailing;t&&t.unsubscribe(),this._throttled=null,e&&this.send()},e.prototype.notifyNext=function(t,e,n,a,r){this.throttlingDone()},e.prototype.notifyComplete=function(){this.throttlingDone()},e}(r.a);function $n(t,e,n){return void 0===e&&(e=l.a),void 0===n&&(n=Bn),function(a){return a.lift(new Zn(t,e,n.leading,n.trailing))}}var Zn=function(){function t(t,e,n,a){this.duration=t,this.scheduler=e,this.leading=n,this.trailing=a}return t.prototype.call=function(t,e){return e.subscribe(new Xn(t,this.duration,this.scheduler,this.leading,this.trailing))},t}(),Xn=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.duration=n,o.scheduler=a,o.leading=r,o.trailing=i,o._hasTrailingValue=!1,o._trailingValue=null,o}return a.__extends(e,t),e.prototype._next=function(t){this.throttled?this.trailing&&(this._trailingValue=t,this._hasTrailingValue=!0):(this.add(this.throttled=this.scheduler.schedule(Jn,this.duration,{subscriber:this})),this.leading&&this.destination.next(t))},e.prototype._complete=function(){this._hasTrailingValue?(this.destination.next(this._trailingValue),this.destination.complete()):this.destination.complete()},e.prototype.clearThrottle=function(){var t=this.throttled;t&&(this.trailing&&this._hasTrailingValue&&(this.destination.next(this._trailingValue),this._trailingValue=null,this._hasTrailingValue=!1),t.unsubscribe(),this.remove(t),this.throttled=null)},e}(g.a);function Jn(t){t.subscriber.clearThrottle()}var Qn=n("lYZG");function ta(t){return void 0===t&&(t=l.a),function(e){return Object(Qn.a)(function(){return e.pipe(Object(an.a)(function(e,n){var a=e.current;return{value:n,current:t.now(),last:a}},{current:t.now(),value:void 0,last:void 0}),Object(At.a)(function(t){return new ea(t.value,t.current-t.last)}))})}}var ea=function(){return function(t,e){this.value=t,this.interval=e}}(),na=n("3U0i");function aa(t,e,n){return void 0===n&&(n=l.a),function(a){var r=Q(t),i=r?+t-n.now():Math.abs(t);return a.lift(new ra(i,r,e,n))}}var ra=function(){function t(t,e,n,a){this.waitFor=t,this.absoluteTimeout=e,this.withObservable=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new ia(t,this.absoluteTimeout,this.waitFor,this.withObservable,this.scheduler))},t}(),ia=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;return o.absoluteTimeout=n,o.waitFor=a,o.withObservable=r,o.scheduler=i,o.action=null,o.scheduleTimeout(),o}return a.__extends(e,t),e.dispatchTimeout=function(t){var e=t.withObservable;t._unsubscribeAndRecycle(),t.add(Object(i.a)(t,e))},e.prototype.scheduleTimeout=function(){var t=this.action;t?this.action=t.schedule(this,this.waitFor):this.add(this.action=this.scheduler.schedule(e.dispatchTimeout,this.waitFor,this))},e.prototype._next=function(e){this.absoluteTimeout||this.scheduleTimeout(),t.prototype._next.call(this,e)},e.prototype._unsubscribe=function(){this.action=null,this.scheduler=null,this.withObservable=null},e}(r.a),oa=n("XlPw");function sa(t,e){return void 0===e&&(e=l.a),aa(t,Object(oa.a)(new na.a),e)}function ua(t){return void 0===t&&(t=l.a),Object(At.a)(function(e){return new la(e,t.now())})}var la=function(){return function(t,e){this.value=t,this.timestamp=e}}(),ca=n("R+r5");function da(t){return function(e){return e.lift(new fa(t))}}var fa=function(){function t(t){this.windowBoundaries=t}return t.prototype.call=function(t,e){var n=new pa(t),a=e.subscribe(n);return a.closed||n.add(Object(i.a)(n,this.windowBoundaries)),a},t}(),pa=function(t){function e(e){var n=t.call(this,e)||this;return n.window=new ke.a,e.next(n.window),n}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.openWindow()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){this._complete()},e.prototype._next=function(t){this.window.next(t)},e.prototype._error=function(t){this.window.error(t),this.destination.error(t)},e.prototype._complete=function(){this.window.complete(),this.destination.complete()},e.prototype._unsubscribe=function(){this.window=null},e.prototype.openWindow=function(){var t=this.window;t&&t.complete();var e=this.destination,n=this.window=new ke.a;e.next(n)},e}(r.a);function ha(t,e){return void 0===e&&(e=0),function(n){return n.lift(new ga(t,e))}}var ga=function(){function t(t,e){this.windowSize=t,this.startWindowEvery=e}return t.prototype.call=function(t,e){return e.subscribe(new ma(t,this.windowSize,this.startWindowEvery))},t}(),ma=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.destination=e,r.windowSize=n,r.startWindowEvery=a,r.windows=[new ke.a],r.count=0,e.next(r.windows[0]),r}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.startWindowEvery>0?this.startWindowEvery:this.windowSize,n=this.destination,a=this.windowSize,r=this.windows,i=r.length,o=0;o<i&&!this.closed;o++)r[o].next(t);var s=this.count-a+1;if(s>=0&&s%e==0&&!this.closed&&r.shift().complete(),++this.count%e==0&&!this.closed){var u=new ke.a;r.push(u),n.next(u)}},e.prototype._error=function(t){var e=this.windows;if(e)for(;e.length>0&&!this.closed;)e.shift().error(t);this.destination.error(t)},e.prototype._complete=function(){var t=this.windows;if(t)for(;t.length>0&&!this.closed;)t.shift().complete();this.destination.complete()},e.prototype._unsubscribe=function(){this.count=0,this.windows=null},e}(g.a);function ba(t){var e=l.a,n=null,a=Number.POSITIVE_INFINITY;return Object(_.a)(arguments[3])&&(e=arguments[3]),Object(_.a)(arguments[2])?e=arguments[2]:Object(Dn.a)(arguments[2])&&(a=arguments[2]),Object(_.a)(arguments[1])?e=arguments[1]:Object(Dn.a)(arguments[1])&&(n=arguments[1]),function(r){return r.lift(new ya(t,n,a,e))}}var ya=function(){function t(t,e,n,a){this.windowTimeSpan=t,this.windowCreationInterval=e,this.maxWindowSize=n,this.scheduler=a}return t.prototype.call=function(t,e){return e.subscribe(new _a(t,this.windowTimeSpan,this.windowCreationInterval,this.maxWindowSize,this.scheduler))},t}(),va=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._numberOfNextedValues=0,e}return a.__extends(e,t),e.prototype.next=function(e){this._numberOfNextedValues++,t.prototype.next.call(this,e)},Object.defineProperty(e.prototype,"numberOfNextedValues",{get:function(){return this._numberOfNextedValues},enumerable:!0,configurable:!0}),e}(ke.a),_a=function(t){function e(e,n,a,r,i){var o=t.call(this,e)||this;o.destination=e,o.windowTimeSpan=n,o.windowCreationInterval=a,o.maxWindowSize=r,o.scheduler=i,o.windows=[];var s=o.openWindow();if(null!==a&&a>=0){var u={windowTimeSpan:n,windowCreationInterval:a,subscriber:o,scheduler:i};o.add(i.schedule(wa,n,{subscriber:o,window:s,context:null})),o.add(i.schedule(Ta,a,u))}else o.add(i.schedule(xa,n,{subscriber:o,window:s,windowTimeSpan:n}));return o}return a.__extends(e,t),e.prototype._next=function(t){for(var e=this.windows,n=e.length,a=0;a<n;a++){var r=e[a];r.closed||(r.next(t),r.numberOfNextedValues>=this.maxWindowSize&&this.closeWindow(r))}},e.prototype._error=function(t){for(var e=this.windows;e.length>0;)e.shift().error(t);this.destination.error(t)},e.prototype._complete=function(){for(var t=this.windows;t.length>0;){var e=t.shift();e.closed||e.complete()}this.destination.complete()},e.prototype.openWindow=function(){var t=new va;return this.windows.push(t),this.destination.next(t),t},e.prototype.closeWindow=function(t){t.complete();var e=this.windows;e.splice(e.indexOf(t),1)},e}(g.a);function xa(t){var e=t.subscriber,n=t.windowTimeSpan,a=t.window;a&&e.closeWindow(a),t.window=e.openWindow(),this.schedule(t,n)}function Ta(t){var e=t.windowTimeSpan,n=t.subscriber,a=t.scheduler,r=t.windowCreationInterval,i=n.openWindow(),o={action:this,subscription:null};o.subscription=a.schedule(wa,e,{subscriber:n,window:i,context:o}),this.add(o.subscription),this.schedule(t,r)}function wa(t){var e=t.subscriber,n=t.window,a=t.context;a&&a.action&&a.subscription&&a.action.remove(a.subscription),e.closeWindow(n)}function Sa(t,e){return function(n){return n.lift(new Oa(t,e))}}var Oa=function(){function t(t,e){this.openings=t,this.closingSelector=e}return t.prototype.call=function(t,e){return e.subscribe(new Ca(t,this.openings,this.closingSelector))},t}(),Ca=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.openings=n,r.closingSelector=a,r.contexts=[],r.add(r.openSubscription=Object(i.a)(r,n,n)),r}return a.__extends(e,t),e.prototype._next=function(t){var e=this.contexts;if(e)for(var n=e.length,a=0;a<n;a++)e[a].window.next(t)},e.prototype._error=function(e){var n=this.contexts;if(this.contexts=null,n)for(var a=n.length,r=-1;++r<a;){var i=n[r];i.window.error(e),i.subscription.unsubscribe()}t.prototype._error.call(this,e)},e.prototype._complete=function(){var e=this.contexts;if(this.contexts=null,e)for(var n=e.length,a=-1;++a<n;){var r=e[a];r.window.complete(),r.subscription.unsubscribe()}t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.contexts;if(this.contexts=null,t)for(var e=t.length,n=-1;++n<e;){var a=t[n];a.window.unsubscribe(),a.subscription.unsubscribe()}},e.prototype.notifyNext=function(t,e,n,a,r){if(t===this.openings){var o=void 0;try{o=(0,this.closingSelector)(e)}catch(d){return this.error(d)}var s=new ke.a,u=new I.a,l={window:s,subscription:u};this.contexts.push(l);var c=Object(i.a)(this,o,l);c.closed?this.closeWindow(this.contexts.length-1):(c.context=l,u.add(c)),this.destination.next(s)}else this.closeWindow(this.contexts.indexOf(t))},e.prototype.notifyError=function(t){this.error(t)},e.prototype.notifyComplete=function(t){t!==this.openSubscription&&this.closeWindow(this.contexts.indexOf(t.context))},e.prototype.closeWindow=function(t){if(-1!==t){var e=this.contexts,n=e[t],a=n.window,r=n.subscription;e.splice(t,1),a.complete(),r.unsubscribe()}},e}(r.a);function ka(t){return function(e){return e.lift(new Ia(t))}}var Ia=function(){function t(t){this.closingSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new Da(t,this.closingSelector))},t}(),Da=function(t){function e(e,n){var a=t.call(this,e)||this;return a.destination=e,a.closingSelector=n,a.openWindow(),a}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.openWindow(r)},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype.notifyComplete=function(t){this.openWindow(t)},e.prototype._next=function(t){this.window.next(t)},e.prototype._error=function(t){this.window.error(t),this.destination.error(t),this.unsubscribeClosingNotification()},e.prototype._complete=function(){this.window.complete(),this.destination.complete(),this.unsubscribeClosingNotification()},e.prototype.unsubscribeClosingNotification=function(){this.closingNotification&&this.closingNotification.unsubscribe()},e.prototype.openWindow=function(t){void 0===t&&(t=null),t&&(this.remove(t),t.unsubscribe());var e=this.window;e&&e.complete();var n,a=this.window=new ke.a;this.destination.next(a);try{n=(0,this.closingSelector)()}catch(r){return this.destination.error(r),void this.window.error(r)}this.add(this.closingNotification=Object(i.a)(this,n))},e}(r.a);function Ra(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n;return"function"==typeof t[t.length-1]&&(n=t.pop()),e.lift(new Na(t,n))}}var Na=function(){function t(t,e){this.observables=t,this.project=e}return t.prototype.call=function(t,e){return e.subscribe(new Aa(t,this.observables,this.project))},t}(),Aa=function(t){function e(e,n,a){var r=t.call(this,e)||this;r.observables=n,r.project=a,r.toRespond=[];var o=n.length;r.values=new Array(o);for(var s=0;s<o;s++)r.toRespond.push(s);for(s=0;s<o;s++){var u=n[s];r.add(Object(i.a)(r,u,u,s))}return r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values[n]=e;var i=this.toRespond;if(i.length>0){var o=i.indexOf(n);-1!==o&&i.splice(o,1)}},e.prototype.notifyComplete=function(){},e.prototype._next=function(t){if(0===this.toRespond.length){var e=[t].concat(this.values);this.project?this._tryProject(e):this.destination.next(e)}},e.prototype._tryProject=function(t){var e;try{e=this.project.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(r.a),Ea=n("909l");function La(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(Ea.b.apply(void 0,[e].concat(t)))}}function Pa(t){return function(e){return e.lift(new Ea.a(t))}}n.d(e,"audit",function(){return o}),n.d(e,"auditTime",function(){return d}),n.d(e,"buffer",function(){return f}),n.d(e,"bufferCount",function(){return m}),n.d(e,"bufferTime",function(){return x}),n.d(e,"bufferToggle",function(){return D}),n.d(e,"bufferWhen",function(){return A}),n.d(e,"catchError",function(){return P.a}),n.d(e,"combineAll",function(){return j}),n.d(e,"combineLatest",function(){return z}),n.d(e,"concat",function(){return Y.a}),n.d(e,"concatAll",function(){return H.a}),n.d(e,"concatMap",function(){return G.a}),n.d(e,"concatMapTo",function(){return V}),n.d(e,"count",function(){return B}),n.d(e,"debounce",function(){return K}),n.d(e,"debounceTime",function(){return X.a}),n.d(e,"defaultIfEmpty",function(){return J.a}),n.d(e,"delay",function(){return et}),n.d(e,"delayWhen",function(){return ot}),n.d(e,"dematerialize",function(){return dt}),n.d(e,"distinct",function(){return ht.a}),n.d(e,"distinctUntilChanged",function(){return gt.a}),n.d(e,"distinctUntilKeyChanged",function(){return mt}),n.d(e,"elementAt",function(){return xt}),n.d(e,"endWith",function(){return Ct}),n.d(e,"every",function(){return kt.a}),n.d(e,"exhaust",function(){return It}),n.d(e,"exhaustMap",function(){return Et}),n.d(e,"expand",function(){return Mt}),n.d(e,"filter",function(){return yt.a}),n.d(e,"finalize",function(){return Ft.a}),n.d(e,"find",function(){return zt}),n.d(e,"findIndex",function(){return Gt}),n.d(e,"first",function(){return Vt.a}),n.d(e,"groupBy",function(){return Bt.b}),n.d(e,"ignoreElements",function(){return Ut}),n.d(e,"isEmpty",function(){return $t}),n.d(e,"last",function(){return Jt.a}),n.d(e,"map",function(){return At.a}),n.d(e,"mapTo",function(){return Qt}),n.d(e,"materialize",function(){return ne}),n.d(e,"max",function(){return oe}),n.d(e,"merge",function(){return ue}),n.d(e,"mergeAll",function(){return le.a}),n.d(e,"mergeMap",function(){return ce.a}),n.d(e,"flatMap",function(){return ce.a}),n.d(e,"mergeMapTo",function(){return de}),n.d(e,"mergeScan",function(){return fe}),n.d(e,"min",function(){return ge}),n.d(e,"multicast",function(){return me.a}),n.d(e,"observeOn",function(){return be.b}),n.d(e,"onErrorResumeNext",function(){return ye}),n.d(e,"pairwise",function(){return xe}),n.d(e,"partition",function(){return Oe}),n.d(e,"pluck",function(){return Ce}),n.d(e,"publish",function(){return Ie}),n.d(e,"publishBehavior",function(){return Re}),n.d(e,"publishLast",function(){return Ae}),n.d(e,"publishReplay",function(){return Le}),n.d(e,"race",function(){return Me}),n.d(e,"reduce",function(){return ie.a}),n.d(e,"repeat",function(){return je}),n.d(e,"repeatWhen",function(){return ze}),n.d(e,"retry",function(){return Ge}),n.d(e,"retryWhen",function(){return Ue}),n.d(e,"refCount",function(){return $e.a}),n.d(e,"sample",function(){return Ze}),n.d(e,"sampleTime",function(){return Qe}),n.d(e,"scan",function(){return an.a}),n.d(e,"sequenceEqual",function(){return rn}),n.d(e,"share",function(){return ln.a}),n.d(e,"shareReplay",function(){return cn.a}),n.d(e,"single",function(){return fn}),n.d(e,"skip",function(){return gn}),n.d(e,"skipLast",function(){return yn}),n.d(e,"skipUntil",function(){return xn}),n.d(e,"skipWhile",function(){return Sn}),n.d(e,"startWith",function(){return kn.a}),n.d(e,"subscribeOn",function(){return Nn}),n.d(e,"switchAll",function(){return Pn}),n.d(e,"switchMap",function(){return En.a}),n.d(e,"switchMapTo",function(){return Mn.a}),n.d(e,"take",function(){return _t.a}),n.d(e,"takeLast",function(){return jn.a}),n.d(e,"takeUntil",function(){return qn}),n.d(e,"takeWhile",function(){return Yn}),n.d(e,"tap",function(){return Vn.a}),n.d(e,"throttle",function(){return Un}),n.d(e,"throttleTime",function(){return $n}),n.d(e,"throwIfEmpty",function(){return vt.a}),n.d(e,"timeInterval",function(){return ta}),n.d(e,"timeout",function(){return sa}),n.d(e,"timeoutWith",function(){return aa}),n.d(e,"timestamp",function(){return ua}),n.d(e,"toArray",function(){return ca.a}),n.d(e,"window",function(){return da}),n.d(e,"windowCount",function(){return ha}),n.d(e,"windowTime",function(){return ba}),n.d(e,"windowToggle",function(){return Sa}),n.d(e,"windowWhen",function(){return ka}),n.d(e,"withLatestFrom",function(){return Ra}),n.d(e,"zip",function(){return La}),n.d(e,"zipAll",function(){return Pa})},ajRT:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("CcnG"),r=function(){function t(){this.hide=new a.EventEmitter}return t.prototype.close=function(){this.modalRef&&this.modalRef.hide(),this.hide.emit()},t}()},atuK:function(t,e,n){"use strict";n.d(e,"a",function(){return Z}),n.d(e,"b",function(){return lt}),n.d(e,"c",function(){return Tt});var a=n("CcnG"),r=n("ARl4"),i=n("Ip0R");n("gIcY");var o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](2,[(t()(),a["\u0275ted"](0,null,["",""]))],null,function(t,e){t(e,0,0,e.component.day.label)})}var u=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","current-timedate"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.component.title)})}var c=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"button",[["class","current"]],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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.component.calendar.monthTitle)})}function f(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,2,"button",[["class","previous"]],[[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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\u2039"])),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275and"](16777216,null,null,1,null,d)),a["\u0275did"](5,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275eld"](7,0,null,null,2,"button",[["class","current"]],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["\u0275eld"](8,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](9,null,["",""])),(t()(),a["\u0275ted"](-1,null,[" \u200b "])),(t()(),a["\u0275eld"](11,0,null,null,2,"button",[["class","next"]],[[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["\u0275eld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\u203a"]))],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 p=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-timepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"button",[["class","bs-decrease"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["-"])),(t()(),a["\u0275eld"](4,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"button",[["class","bs-increase"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["+"])),(t()(),a["\u0275eld"](7,0,null,null,5,"div",[["class","bs-timepicker-controls"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,1,"button",[["class","bs-decrease"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["-"])),(t()(),a["\u0275eld"](10,0,null,null,0,"input",[["placeholder","00"],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,1,"button",[["class","bs-increase"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["+"])),(t()(),a["\u0275eld"](13,0,null,null,2,"button",[["class","switch-time-format"]],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,[""," "])),(t()(),a["\u0275eld"](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 g=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function m(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-current-date",[["title","hey there"]],null,null,null,l,u)),a["\u0275did"](1,49152,null,0,r.n,[],{title:[0,"title"]},null)],function(t,e){t(e,1,0,"hey there")},null)}function b(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-timepicker",[],null,null,null,h,p)),a["\u0275did"](1,49152,null,0,r.p,[],null,null)],null,null)}function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,m)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"div",[["class","bs-datepicker-head"]],null,null,null,null,null)),a["\u0275ncd"](null,0),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","bs-datepicker-body"]],null,null,null,null,null)),a["\u0275ncd"](null,1),(t()(),a["\u0275and"](16777216,null,null,1,null,b)),a["\u0275did"](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 v=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"th",[],null,null,null,null,null))],null,null)}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"th",[["aria-label","weekday"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[""," "]))],null,function(t,e){t(e,1,0,e.component.calendar.weekdays[e.context.index])})}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[["class","week"]],[[2,"active-week",null]],null,null,null,null)),(t()(),a["\u0275eld"](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["\u0275ted"](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 w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"td",[["role","gridcell"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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},s,o)),a["\u0275did"](2,114688,null,0,r.m,[r.a,a.ElementRef,a.Renderer2],{day:[0,"day"]},null),(t()(),a["\u0275ted"](3,null,["",""]))],function(t,e){t(e,2,0,e.context.$implicit)},function(t,e){t(e,1,0,a["\u0275nov"](e,2).day.isDisabled,a["\u0275nov"](e,2).day.isHovered,a["\u0275nov"](e,2).day.isOtherMonth,a["\u0275nov"](e,2).day.isOtherMonthHovered,a["\u0275nov"](e,2).day.isInRange,a["\u0275nov"](e,2).day.isSelectionStart,a["\u0275nov"](e,2).day.isSelectionEnd,a["\u0275nov"](e,2).day.isSelected),t(e,3,0,e.context.$implicit.label)})}function S(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,T)),a["\u0275did"](2,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](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 O(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,13,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},f,c)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,9,"table",[["class","days weeks"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,5,"thead",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](10,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](11,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](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 C=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function k(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,2,0,e.context.$implicit.label)})}function I(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,k)),a["\u0275did"](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 D(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},f,c)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,3,"table",[["class","months"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,I)),a["\u0275did"](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 R=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function N(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,0,0,e.context.$implicit.isDisabled,e.context.$implicit.isHovered),t(e,2,0,e.context.$implicit.label)})}function A(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,N)),a["\u0275did"](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 E(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"bs-calendar-layout",[],null,null,null,y,g)),a["\u0275did"](1,49152,null,0,r.q,[],null,null),(t()(),a["\u0275eld"](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},f,c)),a["\u0275did"](3,49152,null,0,r.o,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode"}),(t()(),a["\u0275eld"](4,0,null,1,3,"table",[["class","years"],["role","grid"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,A)),a["\u0275did"](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)}var L=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function P(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"button",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.context.$implicit.label)})}function M(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"button",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Custom Range"]))],null,null)}function j(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-predefined-btns"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,P)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,M)),a["\u0275did"](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 q=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function F(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function z(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,F)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function Y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},D,C)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function H(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Y)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function G(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,R)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function V(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,G)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function B(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function U(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,j,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function W(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,z)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,H)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,V)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,B)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,U)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function K(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,W)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function $(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-datepicker-container",[["aria-label","calendar"],["role","dialog"],["style","position: absolute; display: block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},K,q)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.v,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var Z=a["\u0275ccf"]("bs-datepicker-container",r.v,$,{},{},[]),X=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function J(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function Q(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,J)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function tt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},D,C)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function et(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,tt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function nt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,R)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function at(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,nt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function it(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,j,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,Q)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,et)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,at)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,rt)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,it)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function st(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,ot)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function ut(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-daterangepicker-container",[["aria-label","calendar"],["role","dialog"],["style","position: absolute; display: block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},st,X)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.z,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var lt=a["\u0275ccf"]("bs-daterangepicker-container",r.z,ut,{},{},[]),ct=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function dt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},O,v)),a["\u0275did"](1,49152,null,0,r.r,[r.a],{calendar:[0,"calendar"],options:[1,"options"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover",onHoverWeek:"onHoverWeek"}),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,a["\u0275unv"](e,1,1,a["\u0275nov"](e,2).transform(n.options)))},function(t,e){var n,r=e.component;t(e,0,0,(null==(n=a["\u0275unv"](e,0,0,a["\u0275nov"](e,3).transform(r.daysCalendar)))?null:n.length)>1)})}function ft(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,dt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.daysCalendar)))},null)}function pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},D,C)),a["\u0275did"](1,49152,null,0,r.s,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function ht(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,pt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.monthsCalendar)))},null)}function gt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},E,R)),a["\u0275did"](1,49152,null,0,r.t,[],{calendar:[0,"calendar"]},{onNavigate:"onNavigate",onViewMode:"onViewMode",onSelect:"onSelect",onHover:"onHover"}),a["\u0275pid"](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["\u0275unv"](e,0,0,a["\u0275nov"](e,2).transform(r.daysCalendar)))?null:n.length)>1)})}function mt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","bs-media-container"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,gt)),a["\u0275did"](2,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.yearsCalendar)))},null)}function bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","bs-datepicker-buttons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-success"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Apply"])),(t()(),a["\u0275eld"](3,0,null,null,1,"button",[["class","btn btn-default"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cancel"]))],null,null)}function yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["class","bs-datepicker-custom-range"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"bs-custom-date-view",[],null,null,null,j,L)),a["\u0275did"](2,49152,null,0,r.u,[],{ranges:[0,"ranges"]},null)],function(t,e){t(e,2,0,e.component._customRangesFish)},null)}function vt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","bs-datepicker"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,11,"div",[["class","bs-datepicker-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"div",[["class","bs-calendar-container"],["role","application"]],null,null,null,null,null)),a["\u0275did"](4,16384,null,0,i.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](16777216,null,null,1,null,ft)),a["\u0275did"](7,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ht)),a["\u0275did"](9,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,mt)),a["\u0275did"](11,278528,null,0,i.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,i.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,bt)),a["\u0275did"](13,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,yt)),a["\u0275did"](15,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"bs-datepicker",n.containerClass),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.viewMode))),t(e,7,0,"day"),t(e,9,0,"month"),t(e,11,0,"year"),t(e,13,0,!1),t(e,15,0,!1)},null)}function _t(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,vt)),a["\u0275did"](1,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,i.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.viewMode)))},null)}function xt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"bs-datepicker-inline-container",[["style","display: inline-block;"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,3)._stopPropagation(n)&&r),r},_t,ct)),a["\u0275prd"](512,null,r.w,r.w,[]),a["\u0275prd"](512,null,r.x,r.x,[r.y,r.f]),a["\u0275did"](3,245760,null,0,r.A,[r.a,r.w,r.y,r.x],null,null)],function(t,e){t(e,3,0)},null)}var Tt=a["\u0275ccf"]("bs-datepicker-inline-container",r.A,xt,{},{},[])},awvh:function(t,e,n){"use strict";function a(t){return Error.call(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(t,e){return e+1+") "+t.toString()}).join("\n  "):"",this.name="UnsubscriptionError",this.errors=t,this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},b1Dy:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},b5OY:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("pxLl");var a=function(){function t(t,e){this.performanceCounterService=t,this.i18n=e,this.columns=[],this.counters=[]}return t.prototype.ngOnInit=function(){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}]},t.prototype.getCounters=function(t){var e=this;this.performanceCounterService.get(this.serviceType,this.serviceId).subscribe(function(t){e.counters=t},function(n){404===n.status?(n.preventDefault(),e.counters=null):t.error()})},t}()},b7mW:function(t,e,n){"use strict";function a(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}n.d(e,"a",function(){return r}),a.prototype=Object.create(Error.prototype);var r=a},bOMt:function(t,e,n){!function(t){"use strict";n("wd/R").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\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".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\xe5r 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\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};t.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".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:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,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";n("wd/R").defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}()},bidN:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._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+")"}}}}),t.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:r.Point,update:function(t){var e=this,n=e.getMeta();i.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||{},o=a.getScaleForId(r.xAxisID),s=a.getScaleForId(r.yAxisID),u=a._resolveElementOptions(t,e),l=a.getDataset().data[e],c=a.index,d=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof l?l:NaN,e,c),f=n?s.getBasePixel():s.getPixelForValue(l,e,c);t._xScale=o,t._yScale=s,t._options=u,t._datasetIndex=c,t._index=e,t._model={backgroundColor:u.backgroundColor,borderColor:u.borderColor,borderWidth:u.borderWidth,hitRadius:u.hitRadius,pointStyle:u.pointStyle,rotation:u.rotation,radius:n?0:u.radius,skip:i.skip||isNaN(d)||isNaN(f),x:d,y:f},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=i.valueOrDefault(n.hoverBackgroundColor,i.getHoverColor(n.backgroundColor)),e.borderColor=i.valueOrDefault(n.hoverBorderColor,i.getHoverColor(n.borderColor)),e.borderWidth=i.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,a,r,o=this.chart,s=o.data.datasets[this.index],u=t.custom||{},l=o.options.elements.point,c=i.options.resolve,d=s.data[e],f={},p={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,a=h.length;n<a;++n)f[r=h[n]]=c([u[r],s[r],l[r]],p,e);return f.radius=c([u.radius,d?d.r:void 0,s.radius,l.radius],p,e),f}})}},bpWZ:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("FO+L")),a(n("nhM1")),a(n("BARL"))},bpih:function(t,e,n){!function(t){"use strict";n("wd/R").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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},buEt:function(t,e,n){"use strict";n.r(e);var a=n("DtyJ");n.d(e,"Subject",function(){return a.Subject})},bxKX:function(t,e,n){!function(t){"use strict";n("wd/R").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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},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:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",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"))},cdu6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("g8vO");function s(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(t[e].label);return a}function u(t,e,n){var a=t.getPixelForTick(e);return n&&(a-=0===e?(t.getPixelForTick(1)-a)/2:(a-t.getPixelForTick(e-1))/2),a}function l(t,e,n){return i.isArray(e)?i.longestText(t,n,e):t.measureText(e).width}function c(t){var e=i.valueOrDefault,n=a.global,r=e(t.fontSize,n.defaultFontSize),o=e(t.fontStyle,n.defaultFontStyle),s=e(t.fontFamily,n.defaultFontFamily);return{size:r,style:o,family:s,font:i.fontString(r,o,s)}}function d(t){return i.options.toLineHeight(i.valueOrDefault(t.lineHeight,1.2),i.valueOrDefault(t.fontSize,a.global.defaultFontSize))}a._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:"",lineHeight:1.2,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:o.formatters.values,minor:{},major:{}}}),t.exports=r.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(){i.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a,r,o,s,u,l,c=this;for(c.beforeUpdate(),c.maxWidth=t,c.maxHeight=e,c.margins=i.extend({left:0,right:0,top:0,bottom:0},n),c.longestTextCache=c.longestTextCache||{},c.beforeSetDimensions(),c.setDimensions(),c.afterSetDimensions(),c.beforeDataLimits(),c.determineDataLimits(),c.afterDataLimits(),c.beforeBuildTicks(),u=c.buildTicks()||[],c.afterBuildTicks(),c.beforeTickToLabelConversion(),o=c.convertTicksToLabels(u)||c.ticks,c.afterTickToLabelConversion(),c.ticks=o,a=0,r=o.length;a<r;++a)s=o[a],(l=u[a])?l.label=s:u.push(l={label:s,major:!1});return c._ticks=u,c.beforeCalculateTickRotation(),c.calculateTickRotation(),c.afterCalculateTickRotation(),c.beforeFit(),c.fit(),c.afterFit(),c.afterUpdate(),c.minSize},afterUpdate:function(){i.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){i.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(){i.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){i.callback(this.options.beforeDataLimits,[this])},determineDataLimits:i.noop,afterDataLimits:function(){i.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){i.callback(this.options.beforeBuildTicks,[this])},buildTicks:i.noop,afterBuildTicks:function(){i.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){i.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){i.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){i.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=s(t._ticks),r=c(n);e.font=r.font;var o=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var u,l=i.longestText(e,r.font,a,t.longestTextCache),d=l,f=t.getPixelForTick(1)-t.getPixelForTick(0)-6;d>f&&o<n.maxRotation;){var p=i.toRadians(o);if(u=Math.cos(p),Math.sin(p)*l>t.maxHeight){o--;break}o++,d=u*l}t.labelRotation=o},afterCalculateTickRotation:function(){i.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=s(t._ticks),a=t.options,r=a.ticks,o=a.scaleLabel,u=a.gridLines,f=a.display,p=t.isHorizontal(),h=c(r),g=a.gridLines.tickMarkLength;if(e.width=p?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:f&&u.drawTicks?g:0,e.height=p?f&&u.drawTicks?g:0:t.maxHeight,o.display&&f){var m=d(o)+i.options.toPadding(o.padding).height;p?e.height+=m:e.width+=m}if(r.display&&f){var b=i.longestText(t.ctx,h.font,n,t.longestTextCache),y=i.numberOfLabelLines(n),v=.5*h.size,_=t.options.ticks.padding;if(p){t.longestLabelWidth=b;var x=i.toRadians(t.labelRotation),T=Math.cos(x),w=Math.sin(x);e.height=Math.min(t.maxHeight,e.height+(w*b+h.size*y+v*(y-1)+v)+_),t.ctx.font=h.font;var S=l(t.ctx,n[0],h.font),O=l(t.ctx,n[n.length-1],h.font);0!==t.labelRotation?(t.paddingLeft="bottom"===a.position?T*S+3:T*v+3,t.paddingRight="bottom"===a.position?T*v+3:T*O+3):(t.paddingLeft=S/2+3,t.paddingRight=O/2+3)}else r.mirror?b=0:b+=_+v,e.width=Math.min(t.maxWidth,e.width+b),t.paddingTop=h.size/2,t.paddingBottom=h.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(){i.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(i.isNullOrUndef(t))return NaN;if("number"==typeof t&&!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:i.noop,getPixelForValue:i.noop,getValueForPixel:i.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+Math.round(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+Math.round((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,r,o=this,s=o.isHorizontal(),u=o.options.ticks.minor,l=t.length,c=i.toRadians(o.labelRotation),d=Math.cos(c),f=o.longestLabelWidth*d,p=[];for(u.maxTicksLimit&&(r=u.maxTicksLimit),s&&(e=!1,(f+u.autoSkipPadding)*l>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((f+u.autoSkipPadding)*l/(o.width-(o.paddingLeft+o.paddingRight)))),r&&l>r&&(e=Math.max(e,Math.floor(l/r)))),n=0;n<l;n++)a=t[n],(e>1&&n%e>0||n%e==0&&n+e>=l)&&n!==l-1&&delete a.label,p.push(a);return p},draw:function(t){var e=this,n=e.options;if(n.display){var r=e.ctx,o=a.global,s=n.ticks.minor,l=n.ticks.major||s,f=n.gridLines,p=n.scaleLabel,h=0!==e.labelRotation,g=e.isHorizontal(),m=s.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),b=i.valueOrDefault(s.fontColor,o.defaultFontColor),y=c(s),v=i.valueOrDefault(l.fontColor,o.defaultFontColor),_=c(l),x=f.drawTicks?f.tickMarkLength:0,T=i.valueOrDefault(p.fontColor,o.defaultFontColor),w=c(p),S=i.options.toPadding(p.padding),O=i.toRadians(e.labelRotation),C=[],k=e.options.gridLines.lineWidth,I="right"===n.position?e.left:e.right-k-x,D="right"===n.position?e.left+x:e.right,R="bottom"===n.position?e.top+k:e.bottom-x-k,N="bottom"===n.position?e.top+k+x:e.bottom+k;if(i.each(m,function(a,r){if(!i.isNullOrUndef(a.label)){var l,c,d,p,b,y,v,_,T,w,S,A,E,L,P=a.label;r===e.zeroLineIndex&&n.offset===f.offsetGridLines?(l=f.zeroLineWidth,c=f.zeroLineColor,d=f.zeroLineBorderDash,p=f.zeroLineBorderDashOffset):(l=i.valueAtIndexOrDefault(f.lineWidth,r),c=i.valueAtIndexOrDefault(f.color,r),d=i.valueOrDefault(f.borderDash,o.borderDash),p=i.valueOrDefault(f.borderDashOffset,o.borderDashOffset));var M="middle",j="middle",q=s.padding;if(g){var F=x+q;"bottom"===n.position?(j=h?"middle":"top",M=h?"right":"center",L=e.top+F):(j=h?"middle":"bottom",M=h?"left":"center",L=e.bottom-F);var z=u(e,r,f.offsetGridLines&&m.length>1);z<e.left&&(c="rgba(0,0,0,0)"),z+=i.aliasPixel(l),E=e.getPixelForTick(r)+s.labelOffset,b=v=T=S=z,y=R,_=N,w=t.top,A=t.bottom+k}else{var Y,H="left"===n.position;s.mirror?(M=H?"left":"right",Y=q):(M=H?"right":"left",Y=x+q),E=H?e.right-Y:e.left+Y;var G=u(e,r,f.offsetGridLines&&m.length>1);G<e.top&&(c="rgba(0,0,0,0)"),G+=i.aliasPixel(l),L=e.getPixelForTick(r)+s.labelOffset,b=I,v=D,T=t.left,S=t.right+k,y=_=w=A=G}C.push({tx1:b,ty1:y,tx2:v,ty2:_,x1:T,y1:w,x2:S,y2:A,labelX:E,labelY:L,glWidth:l,glColor:c,glBorderDash:d,glBorderDashOffset:p,rotation:-1*O,label:P,major:a.major,textBaseline:j,textAlign:M})}}),i.each(C,function(t){if(f.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),f.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),f.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),s.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?_.font:y.font,r.fillStyle=t.major?v:b,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var n=t.label;if(i.isArray(n))for(var a=n.length,o=1.5*y.size,u=e.isHorizontal()?0:-o*(a-1)/2,l=0;l<a;++l)r.fillText(""+n[l],0,u),u+=o;else r.fillText(n,0,0);r.restore()}}),p.display){var A,E,L=0,P=d(p)/2;if(g)A=e.left+(e.right-e.left)/2,E="bottom"===n.position?e.bottom-P-S.bottom:e.top+P+S.top;else{var M="left"===n.position;A=M?e.left+P+S.top:e.right-P-S.top,E=e.top+(e.bottom-e.top)/2,L=M?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(A,E),r.rotate(L),r.textAlign="center",r.textBaseline="middle",r.fillStyle=T,r.font=w.font,r.fillText(p.labelString,0,0),r.restore()}if(f.drawBorder){r.lineWidth=i.valueAtIndexOrDefault(f.lineWidth,0),r.strokeStyle=i.valueAtIndexOrDefault(f.color,0);var j=e.left,q=e.right+k,F=e.top,z=e.bottom+k,Y=i.aliasPixel(r.lineWidth);g?(F=z="top"===n.position?e.bottom:e.top,F+=Y,z+=Y):(j=q="left"===n.position?e.right:e.left,j+=Y,q+=Y),r.beginPath(),r.moveTo(j,F),r.lineTo(q,z),r.stroke()}}}})},crnd:function(t,e,n){var a={"./ceph/block/block.module.ngfactory":["J6Oi",2,0,7],"./ceph/pool/pool.module.ngfactory":["nOaW",2,0,8],"./ceph/rgw/rgw.module.ngfactory":["Znkk",0,6],"./core/auth/auth.module.ngfactory":["DY6s",0,9]};function r(t){var e=a[t];return e?Promise.all(e.slice(1).map(n.e)).then(function(){return n(e[0])}):Promise.resolve().then(function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e})}r.keys=function(){return Object.keys(a)},r.id="crnd",t.exports=r},csGn:function(t,e){t.exports='<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\xf3n</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\xfaster</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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitores</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\xf3n</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\xf3dulos 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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertas</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\xe1genes</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>Duplicaci\xf3n</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>Obteniendo datos \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\npara \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>"/>. Espere.\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>Mostrando datos guardados previamente en cach\xe9\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\npara \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>No se han podido cargar los datos\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> para\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>"/>.\nConsulte el estado del cl\xfaster.\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>Atr\xe1s</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>Consulte la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre c\xf3mo\nconfigurar y habilitar la supervisi\xf3n.\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>No existe la consola de Grafana. Consulte la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> sobre c\xf3mo\n  a\xf1adir consolas a 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="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="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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Ajustes</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\xe1metros.</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>Almac\xe9n</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Cancelar</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Este campo es obligatorio.</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\xf3n err\xf3neo.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Los IQN tienen esta notaci\xf3n: 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\xe1s informaci\xf3n</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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Se requieren al menos \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> puertas de enlace.\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>A\xf1adir portal</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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Se requiere al menos 1 imagen.</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>A\xf1adir imagen</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>Autenticaci\xf3n de ACL</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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Usuario</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Contrase\xf1a</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\xf1a mutua</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\xe1genes se configurar\xe1n 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\xf1adido ning\xfan elemento.</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>A\xf1adir 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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nombre</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>A\xf1adir grupo</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="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>\xbfSeguro que quiere \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> el elemento \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> seleccionado?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>S\xed, seguro.</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Autenticaci\xf3n de descubrimiento</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="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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de destinos iSCSI.\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>Informaci\xf3n 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="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="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>Cargando...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- No hay ning\xfan 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="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="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- No hay ning\xfan repositorio de datos disponible --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Tama\xf1o</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>Debe aumentar el tama\xf1o.</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Caracter\xedsticas</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="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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Tama\xf1o del objeto</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unidad de repartici\xf3n</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Seleccione la unidad de repartici\xf3n --</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\xf3n.</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\xf3n es mayor que el tama\xf1o del objeto.</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>Recuento de repartici\xf3n</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\xf3n.</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\xf3n debe ser mayor que 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Rendimiento general</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="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>Descripci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>Descripci\xf3n larga</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>Opci\xf3n 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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servicios</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="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>El valor introducido es demasiado alto. No debe ser mayor que \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>El valor introducido es demasiado bajo. No debe ser menor que \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Lista de hosts</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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>Registros de auditor\xeda</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>Cargando configuraci\xf3n...</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\xf3n.</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>M\xf3dulo del gestor de edici\xf3n</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\xe1lido, 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\xf3n IP v\xe1lida.</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>El valor introducido es demasiado alto. Debe ser menor o igual que \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>El valor introducido es demasiado bajo. Debe ser mayor o igual que \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.\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\xfamero.</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\xfamero 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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>Mapa de supervisi\xf3n modificado</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>\xc9poca de mapa de supervisi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>qu\xf3rum de con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>qu\xf3rum 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\xf3rum</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>Sin qu\xf3rum</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\xfaster</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Prioridad de recuperaci\xf3n 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>El valor introducido es demasiado alto. No debe ser mayor que \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>El valor introducido es demasiado bajo. No debe ser menor que \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Reequilibrar peso de OSD</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>\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Depuraci\xf3n de OSDs\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Se dispone a aplicar una \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>depuraci\xf3n\n            al OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Si contin\xfaa, el \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  se marcar\xe1 \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>"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>No es seguro destruir el OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>Si contin\xfaa, el \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n  se \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>"/>.\n        </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="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\xedsticas</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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de NFS Ganesha.\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\xf1adir clientes</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Exportaci\xf3n NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- No hay ning\xfan cl\xfaster disponible --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- Seleccione el cl\xfaster --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>A\xf1adir 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="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\xfan 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\xfan 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="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\xe1 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\xe1 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>Acceso alternativo para montajes \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>"/> (no debe empezar con /).\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>La posici\xf3n que ocupa esta exportaci\xf3n \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>"/>\n                en \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>"/> (debe ser exclusiva).\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="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- No hay ning\xfan 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="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- No hay ninguna reducci\xf3n 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\xf3n 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="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\xe9ricos, 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\xf3digo de borrado que ha elegido ya est\xe1 en uso.</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\xf3digo (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\xf3n (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\xf3n 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\xe9cnica</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>Tama\xf1o del paquete</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Ra\xedz 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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>A\xf1adir</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="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\xe1 en uso.</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="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>Grupos de colocaci\xf3n</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\xf3n.</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\xfaster no puede gestionar tantos grupos de colocaci\xf3n. Vuelva a calcular la cantidad que necesita.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Solo puede aumentar el n\xfamero de grupos de colocaci\xf3n de un repositorio que ya exista.\n                El repositorio actual tiene \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> grupos de colocaci\xf3n.\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>Ayuda para el c\xe1lculo</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>El n\xfamero grupos de colocaci\xf3n actual se ha calculado\n\xa0 autom\xe1ticamente. Debe asegurarse de que sirve para sus necesidades antes de enviar.</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="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="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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>La regla no se puede usar en el cl\xfaster actual, ya que\n no tiene suficientes OSD que cumplan el m\xednimo requerido.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Tama\xf1o 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>M\xednimo: \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>M\xe1ximo: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>El tama\xf1o especificado est\xe1 fuera del intervalo. Los valores v\xe1lidos\n                    son del \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> al \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>Perfil de c\xf3digo 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\xfan perfil de c\xf3digo 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\xf3digo de borrado --</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\xf3digos 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="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>Compresi\xf3n</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\xfan algoritmo de compresi\xf3n de borrado disponible --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>Tama\xf1o de Blob m\xednimo</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="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>Tama\xf1o de Blob m\xe1ximo</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\xf1o de Blob m\xednimo</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>Relaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>Relaci\xf3n de compresi\xf3n</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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>No es posible crear un repositorio RBD con el nombre "/".</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Cambie el nombre o elimine "rbd" de la lista de aplicaciones.</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="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>Consulte la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentaci\xf3n\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n sobre c\xf3mo configurar y habilitar la funci\xf3n de gesti\xf3n de Object Gateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>No es posible cargar los 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\xe1lido.</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\xe1 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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Lista de daemons</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Clave S3</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="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\xe1 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\xe1 en uso.</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\xf3n de correo electr\xf3nico</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\xf3n no es v\xe1lida.</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\xf3n de correo electr\xf3nico que ha elegido ya est\xe1 en uso.</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>M\xe1x. papeleras</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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Suspendido</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>No hay ning\xfan subusuario.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Claves</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostrar</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacidades</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="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Cuota de usuario</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="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Tama\xf1o ilimitado</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>Tama\xf1o m\xe1x.</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\xe1x.</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="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\xa1Bienvenidos 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\xf1a 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="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>Descripci\xf3n...</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="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>Vuelva a la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>P\xe1gina de entrada\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Saldr\xe1 del proveedor de identidad cuando vuelva a intentar entrar a la sesi\xf3n.\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>Confirmar contrase\xf1a</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\xf1as no coinciden.</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Correo electr\xf3nico</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>Correo electr\xf3nico no v\xe1lido.</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="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\xf3n 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\xfaa, no podr\xe1 a\xf1adir ni eliminar funciones en ning\xfan usuario.</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\xbfSeguro que desea continuar?</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="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Lo sentimos. No se encuentra lo que busca</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Eliminar todo</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notificaciones recientes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>No hay tareas en segundo plano.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tareas en segundo plano</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\xf3n</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\xf3n 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>Ha entrado como\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Salir</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detalles de rendimiento</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 \xedndice</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>Regla de colocaci\xf3n</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\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>Versi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>Versi\xf3n maestra</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>Hora de modificaci\xf3n</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>Tama\xf1o m\xe1ximo</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>Sin l\xedmite</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>N\xfamero m\xe1ximo de objetos</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="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {S\xed} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>N\xfamero m\xe1ximo de papeleras</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\xe1n disponibles</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Imagen</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="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>Configuraci\xf3n 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\xf3n local. Se heredar\xe1 y usar\xe1 en su lugar el valor de configuraci\xf3n 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\xednimo es 0</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\xe1n 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="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>El histograma no est\xe1 disponible: \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="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\xedn.</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>M\xe1x.</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\xf3n (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\xe9ase tambi\xe9n</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>Estado del cl\xfaster</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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>Depuraci\xf3n</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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objetos</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>Grupos de colocaci\xf3n 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\xf3n</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>"/> Consulte la secci\xf3n \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Registros\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> para obtener m\xe1s datos.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Para mover \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> a la papelera,\n          haga clic en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mover imagen\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Opcionalmente, puede seleccionar una fecha de caducidad.\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>La protecci\xf3n caduca a las</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>SIN PROTECCI\xd3N</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\xf3neo. 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\xf3n ya ha caducado. Seleccione una fecha del futuro o deje el campo vac\xedo.</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="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="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>Solo disponible para im\xe1genes RBD con \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>"/> habilitado\n        </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="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\xf3n</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>Recuento de repartici\xf3n</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\xe1neas</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="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\xfan valor para esta opci\xf3n para esta imagen.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instant\xe1nea RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renombrar} other {Crear} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instant\xe1nea\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>CON PROTECCI\xd3N</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>SIN PROTECCI\xd3N</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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Para limpiar, seleccione una imagen, o todas las im\xe1genes, y haga clic en</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Todas</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>Restaurar im\xe1genes</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\xf3 a las</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>Protecci\xf3n 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>Esta imagen est\xe1 protegida hasta el \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\xeda iSCSI</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\xf3n de repositorio</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Para editar el modo de duplicaci\xf3n del repositorio\xa0\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>"/>, seleccione un modo nuevo en la lista y haga clic\xa0\n          en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Actualizar\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\xfasteres de par deben eliminarse antes de inhabilitar la duplicaci\xf3n.</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 {...}}"/>\nduplicar par de repositorio\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\xf1adir} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> los atributos del par\n          de duplicaci\xf3n del respositorio \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>"/> y haga clic en \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Enviar\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\xfaster</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\xfaster no es v\xe1lido.</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\xe1lido.</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\xf3n del monitor no es v\xe1lida.</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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detalles de niveles de cach\xe9</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clientes: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xf3n 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\xfan 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\xfarese de a\xf1adir 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\xfan iniciador disponible. Aseg\xfarese de a\xf1adir un iniciador al destino.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nombre de host</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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Estado</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Inhabilitado</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\xf1adir 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\xedder</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>N.\xba locales</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>N.\xba 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valor</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Diferencias r\xe1pidas (requiere mapa de objetos)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplanar</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crear</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteger</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clonar</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Reversi\xf3n de instant\xe1nea RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Instant\xe1nea RBD</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="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\xf3n</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\xedz</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>Clasificaci\xf3n</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons de reserva</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\xf3n.</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\xf3n del monitor. No se recomienda definir esta opci\xf3n con "ceph config\n      set ...". Esta opci\xf3n se debe configurar mediante ceph.conf o a trav\xe9s\n      de la l\xednea 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\xf3n 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\xf3n solo afecta a la creaci\xf3n del cl\xfaster.</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>La opci\xf3n solo afecta a la creaci\xf3n 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>Opci\xf3n de configuraci\xf3n actualizada \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opciones actualizadas para el m\xf3dulo \n          <x id="INTERPOLATION" equiv-text="{{name}}"/>.\n        </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="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\xf3n p\xfablica</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="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\xe1n 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\xe1n autom\xe1ticamente despu\xe9s 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\xe1n 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\xf3n est\xe1 inhabilitada</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>No depuraci\xf3n profunda</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>La depuraci\xf3n profunda est\xe1 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\xf3n de grupos de colocaci\xf3n se suspende</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\xf3n de los grupos de colocaci\xf3n 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\xf3n</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\xf3n, 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\xedmite estricto de registro del grupo de colocaci\xf3n</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\xedmite estricto para la longitud del registro del grupo de colocaci\xf3n</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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Depuraci\xf3n profunda</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>excluir</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>Incluir</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>desactivar</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Destruir</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="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>Grupos de colocaci\xf3n</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Marcar 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>Marcar \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>N\xfamero m\xe1ximo de reposiciones</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>M\xe1ximo de recuperaciones activas</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>M\xe1ximo de recuperaciones de inicio \xfanico</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Reposo de recuperaci\xf3n</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="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">\n        <source>Updated OSD recovery speed priority "\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>"\n        </source>\n        <target>Prioridad de velocidad de recuperaci\xf3n de OSD actualizada \n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> se ha inicializado en el siguiente OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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>Borrar</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="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\xf3rum</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\xe1 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\xf3n 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\xf3n 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\xf3n 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\xfan daemon disponible.</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Exportar</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modo de cach\xe9</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>Antig\xfcedad m\xednima de expulsi\xf3n</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>Antig\xfcedad m\xednima de vaciado</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>N\xfamero m\xe1ximo de bytes de destino</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>N\xfamero m\xe1ximo 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\xf1adido ninguna aplicaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>Se ha alcanzado el l\xedmite 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\xe1xima 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\xf1adir aplicaciones</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>A\xf1adir aplicaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>perfil de c\xf3digo de borrado</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Tama\xf1o de r\xe9plica</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\xdaltimo cambio</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>Perfil de c\xf3digo 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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bytes de escritura</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Papelera de Object Gateway actualizada "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\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>Papelera de Object Gateway creada "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>papeleras</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>Usuario de Object Gateway actualizado "\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>Usuario de Object Gateway creado "\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>"\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>usuarios</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\xc1mbito</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Se ha creado la funci\xf3n \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>Se ha actualizado la funci\xf3n \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\xf3n 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>Se ha suprimido la funci\xf3n \n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\n        </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>Se ha creado el usuario \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\xf3n se ha cerrado autom\xe1ticamente 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>Se ha actualizado el usuario \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>Se ha suprimido el usuario \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>Error al suprimir el usuario \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>Ha entrado a la sesi\xf3n como \n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\n        </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\xf3digo para cada objeto y las almacena en distintos OSD.\n      El n\xfamero de porciones de c\xf3digo es tambi\xe9n el n\xfamero 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\xe1s gen\xe9rico y flexible,\n          y tambi\xe9n el complemento por defecto para los repositorios de c\xf3digo 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\xe9cnica m\xe1s flexible es reed_sol_van: basta con definir k y m.\n          La t\xe9cnica cauchy_good puede ser m\xe1s r\xe1pida, pero hay que elegir con cuidado el tama\xf1o\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\xf3n se realizar\xe1 seg\xfan el tama\xf1o de los paquetes de bytes de uno en uno.\n          Elegir el tama\xf1o correcto es dif\xedcil.\n          La documentaci\xf3n de jerasure incluye informaci\xf3n 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\xf3digo de borrado se almacena\n          en varios OSD, para recuperarse de la p\xe9rdida de un OSD es necesario leer de todos los dem\xe1s.\n          Por ejemplo, si jerasure est\xe1 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\xf3digo de borrado lrc crea porciones de paridad local para poder realizar la recuperaci\xf3n con\n          menos OSDs. Por ejemplo, is lrc est\xe1 configurado con k=8, m=4 y l=4, crear\xe1\n          una porci\xf3n 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\xf3digo y de datos en localizaciones de conjuntos de tama\xf1o. 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\xe1 cada\n          conjunto de porciones definido por l. Por ejemplo, si se define como bastidor, cada grupo de l porciones\n          se colocar\xe1 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\xe1s eficiente que los c\xf3digos 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\xfamero de porciones de paridad. Cada uno de ellas incluye cada porci\xf3n de datos\n           en su intervalo de c\xe1lculo. El n\xfamero 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\xfarese 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\xf3n 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\xe1 el complemento de c\xf3digo 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\xed 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\xfan 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="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\xdaltimos 5 minutos</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\xdaltimos 15 minutos</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\xdaltimos 30 minutos</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\xdaltima hora (opci\xf3n por defecto)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\xdaltimas 3 horas</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\xdaltimas 6 horas</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\xdaltimas 12 horas</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\xdaltimas 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 \xfaltimos 2 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>Este d\xeda 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 \xfaltimos 7 d\xedas</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 \xfaltimos 30 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>Los \xfaltimos 90 d\xedas</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>Los \xfaltimos 6 meses</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>El \xfaltimo a\xf1o</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>El a\xf1o pasado</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Este a\xf1o</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Este a\xf1o hasta ahora</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Los \xfaltimos 2 a\xf1os</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Los \xfaltimos 5 a\xf1os</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informaci\xf3n</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>No se ha seleccionado ning\xfan 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\xedmite de selecci\xf3n</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\xf1adir 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\xfan elemento disponible.</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>S\xed</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="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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xedmite 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\xe1faga 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\xedmite deseado de r\xe1faga de bytes de E/S.</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga 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\xe1faga 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\xedmite deseado de r\xe1faga de bytes de lectura.</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga de operaciones de lectura.</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga de bytes de escritura.</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>R\xe1faga 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\xedmite deseado de r\xe1faga 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>Error al \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Actualizado</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>suprimir</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="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>Instant\xe1nea RBD \n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\n        </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>modo de duplicaci\xf3n para repositorio \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>par de duplicaci\xf3n para repositorio \n          <x id="INTERPOLATION" equiv-text="{{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          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/> ya est\xe1 usando el nombre.\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          <x id="INTERPOLATION" equiv-text="{{name}}"/> ya est\xe1 usando el nombre.\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          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> ya est\xe1 usando el nombre.\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}}"/> contiene instant\xe1neas.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonado</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>La instant\xe1nea de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> debe estar protegida.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiado</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Aplanado</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          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> ya est\xe1 usando el nombre.\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>No es posible desproteger \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque contiene im\xe1genes hijas.\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>No es posible suprimir \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> porque est\xe1 protegido.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Revertido</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>la imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> a la papelera\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaurado</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>la imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> en \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>El nombre de imagen \n          <x id="INTERPOLATION" equiv-text="{{id}}"/> ya est\xe1 en uso.\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>la imagen \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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Limpiado</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>im\xe1genes de \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\xf3n porque contiene un par</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>repositorio \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>perfil de c\xf3digo de borrado \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>destino \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>'},czA5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MouseEvent=("undefined"!=typeof window&&window||global).MouseEvent,e.KeyboardEvent=("undefined"!=typeof window&&window||global).KeyboardEvent,e.Event=("undefined"!=typeof window&&window||global).Event},czMo:function(t,e,n){!function(t){"use strict";n("wd/R").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")}})}()},"d+Og":function(t,e,n){"use strict";var a=n("LvDl"),r=function(){function t(t){if(this.type=t,!this.isValidType())throw new Error("Wrong placement group category type");this.setTypeStates()}return t.prototype.isValidType=function(){return t.VALID_CATEGORIES.includes(this.type)},t.prototype.setTypeStates=function(){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=[]}},t.VALID_CATEGORIES=[t.CATEGORY_CLEAN="clean",t.CATEGORY_WORKING="working",t.CATEGORY_WARNING="warning",t.CATEGORY_UNKNOWN="unknown"],t}(),i=n("CcnG"),o=n("kJI8");n.d(e,"a",function(){return s});var s=function(){function t(){this.categories=this.createCategories()}return t.prototype.getAllTypes=function(){return r.VALID_CATEGORIES},t.prototype.getTypeByStates=function(t){var e=this,n=this.getPgStatesFromText(t);if(0===n.length)return r.CATEGORY_UNKNOWN;var i=a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(function(t){return a.intersection(e.categories[t].states,n).length}));if(i[r.CATEGORY_WARNING]>0)return r.CATEGORY_WARNING;var o=i[r.CATEGORY_WORKING];return n.length>i[r.CATEGORY_CLEAN]+o?r.CATEGORY_UNKNOWN:o?r.CATEGORY_WORKING:r.CATEGORY_CLEAN},t.prototype.createCategories=function(){return a.zipObject(r.VALID_CATEGORIES,r.VALID_CATEGORIES.map(function(t){return new r(t)}))},t.prototype.getPgStatesFromText=function(t){var e=t.replace(/[^a-z]+/g," ").trim().split(" ");return a.uniq(e)},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t},token:t,providedIn:o.a}),t}()},dC0D:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){var n=!1;return arguments.length>=2&&(n=!0),function(a){return a.lift(new o(t,e,n))}}var o=function(){function t(t,e,n){void 0===n&&(n=!1),this.accumulator=t,this.seed=e,this.hasSeed=n}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))},t}(),s=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.accumulator=n,i._seed=a,i.hasSeed=r,i.index=0,i}return a.__extends(e,t),Object.defineProperty(e.prototype,"seed",{get:function(){return this._seed},set:function(t){this.hasSeed=!0,this._seed=t},enumerable:!0,configurable:!0}),e.prototype._next=function(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.accumulator(this.seed,t,n)}catch(a){this.destination.error(a)}this.seed=e,this.destination.next(e)},e}(r.a)},dEH0:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t+" ms"},t}()},dEwP:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("F/XL"),r=n("Txjg");function i(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Object(r.a)()(a.a.apply(void 0,t))}},dNwA:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},dgut:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("NEZu"),r=(n("Fgil"),function(){function t(t){var e=this;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:function(t){return e.isBinary?e.dimlessBinaryPipe.transform(t.yLabel):t.yLabel}}},scales:{yAxes:[{display:!1}],xAxes:[{display:!1}]}},this.datasets=[{data:[]}],this.labels=[]}return t.prototype.ngOnInit=function(){var t=new a.a(this.chartCanvasRef,this.chartTooltipRef,function(t,e){return e+t.caretX+"px"},function(t){return t.caretY-t.height-t.yPadding-5+"px"});t.customColors={backgroundColor:this.colors[0].pointBackgroundColor,borderColor:this.colors[0].pointBorderColor},this.options.tooltips.custom=function(e){t.customTooltips(e)}},t.prototype.ngOnChanges=function(t){this.datasets[0].data=t.data.currentValue,this.labels=Array(t.data.currentValue.length).slice()},t}())},dpnK:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha");a._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:r.noop,onComplete:r.noop}}),t.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,a){var r,i,o=this.animations;for(e.chart=t,a||(t.animating=!0),r=0,i=o.length;r<i;++r)if(o[r].chart===t)return void(o[r]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=r.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=r.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var a=Date.now();t.dropFrames+=(a-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,a=this.animations,i=0;i<a.length;)n=(e=a[i]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),r.callback(e.render,[n,e],n),r.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(r.callback(e.onAnimationComplete,[e],n),n.animating=!1,a.splice(i,1)):++i}}},dzgT:function(t,e,n){"use strict";n.d(e,"b",function(){return c}),n.d(e,"a",function(){return d});var a=n("mrSG"),r=n("nkY7"),i=n("isby"),o=n("MGBS"),s=n("zotm"),u=n("IUTb"),l={};function c(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=null,a=null;return Object(r.a)(t[t.length-1])&&(a=t.pop()),"function"==typeof t[t.length-1]&&(n=t.pop()),1===t.length&&Object(i.a)(t[0])&&(t=t[0]),Object(u.a)(t,a).lift(new d(n))}var d=function(){function t(t){this.resultSelector=t}return t.prototype.call=function(t,e){return e.subscribe(new f(t,this.resultSelector))},t}(),f=function(t){function e(e,n){var a=t.call(this,e)||this;return a.resultSelector=n,a.active=0,a.values=[],a.observables=[],a}return a.__extends(e,t),e.prototype._next=function(t){this.values.push(l),this.observables.push(t)},e.prototype._complete=function(){var t=this.observables,e=t.length;if(0===e)this.destination.complete();else{this.active=e,this.toRespond=e;for(var n=0;n<e;n++){var a=t[n];this.add(Object(s.a)(this,a,a,n))}}},e.prototype.notifyComplete=function(t){0==(this.active-=1)&&this.destination.complete()},e.prototype.notifyNext=function(t,e,n,a,r){var i=this.values,o=this.toRespond?i[n]===l?--this.toRespond:this.toRespond:0;i[n]=e,0===o&&(this.resultSelector?this._tryResultSelector(i):this.destination.next(i.slice()))},e.prototype._tryResultSelector=function(t){var e;try{e=this.resultSelector.apply(this,t)}catch(n){return void this.destination.error(n)}this.destination.next(e)},e}(o.a)},"e+ae":function(t,e,n){!function(t){"use strict";var e="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),n="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_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\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sek\xfand"):i+"sekundami";case"m":return e?"min\xfata":r?"min\xfatu":"min\xfatou";case"mm":return e||r?i+(a(t)?"min\xfaty":"min\xfat"):i+"min\xfatami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hod\xedn"):i+"hodinami";case"d":return e||r?"de\u0148":"d\u0148om";case"dd":return e||r?i+(a(t)?"dni":"dn\xed"):i+"d\u0148ami";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\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_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\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa 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"))},e2pG:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("VKeD"),o=n("poJ0");e.fromIterable=function(t,e){if(!t)throw new Error("Iterable cannot be null");return new a.Observable(e?function(n){var a,o=new r.Subscription;return o.add(function(){a&&"function"==typeof a.return&&a.return()}),o.add(e.schedule(function(){a=t[i.iterator](),o.add(e.schedule(function(){if(!n.closed){var t,e;try{var r=a.next();t=r.value,e=r.done}catch(i){return void n.error(i)}e?n.complete():(n.next(t),this.schedule())}}))})),o}:o.subscribeToIterable(t))}},eTJe:function(t,e,n){"use strict";var a,r=n("gIcY"),i=n("LvDl"),o=n("VNr4"),s=(n("SgmB"),n("ZDA6"),n("sne2"),n("mtw6")),u=n("QFaf"),l=n("1Ni5");n("9nlD"),function(t){t.editing="editing"}(a||(a={}));var c=function(){return function(){}}();n.d(e,"a",function(){return d});var d=function(){function t(t,e,n,r,i,o,s){this.route=t,this.router=e,this.roleService=n,this.scopeService=r,this.notificationService=i,this.i18n=o,this.actionLabels=s,this.scopes=[],this.scopes_permissions=[],this.roleFormMode=a,this.resource=this.i18n("role"),this.createForm(),this.listenToChanges()}return t.prototype.createForm=function(){this.roleForm=new u.a({name:new r.i("",{validators:[r.A.required],asyncValidators:[l.a.unique(this.roleService.exists,this.roleService)]}),description:new r.i(""),scopes_permissions:new r.i({})})},t.prototype.ngOnInit=function(){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()},t.prototype.initCreate=function(){var t=this;this.scopeService.list().subscribe(function(e){t.scopes=e,t.roleForm.get("scopes_permissions").setValue({})})},t.prototype.initEdit=function(){var t=this;this.roleForm.get("name").disable(),this.route.params.subscribe(function(e){var n=[];n.push(t.scopeService.list()),n.push(t.roleService.get(e.name)),Object(o.a)(n).subscribe(function(e){t.scopes=e[0],["name","description","scopes_permissions"].forEach(function(n){return t.roleForm.get(n).setValue(e[1][n])})})})},t.prototype.listenToChanges=function(){var t=this;this.roleForm.get("scopes_permissions").valueChanges.subscribe(function(e){var n=[];i.each(t.scopes,function(t){var a={read:!1,create:!1,update:!1,delete:!1};a.scope=t,t in e&&i.each(e[t],function(t){a[t]=!0}),n.push(a)}),t.scopes_permissions=n})},t.prototype.isRowChecked=function(t){var e=i.find(this.scopes_permissions,function(e){return e.scope===t});return!i.isUndefined(e)&&e.read&&e.create&&e.update&&e.delete},t.prototype.isHeaderChecked=function(t){var e=this,n=[t];return"scope"===t&&(n=["read","create","update","delete"]),n.every(function(t){return e.scopes_permissions.every(function(e){return e[t]})})},t.prototype.onClickCellCheckbox=function(t,e,n){void 0===n&&(n=null);var a=i.cloneDeep(this.roleForm.getValue("scopes_permissions")),r=[e];"scope"===e&&(r=["read","create","update","delete"]),t in a||(a[t]=[]),n&&n.target.checked||!i.isEqual(r.sort(),i.intersection(a[t],r).sort())?a[t]=i.union(a[t],r):(a[t]=i.difference(a[t],r),i.isEmpty(a[t])&&i.unset(a,t)),this.roleForm.get("scopes_permissions").setValue(a)},t.prototype.onClickHeaderCheckbox=function(t,e){var n=this,a=i.cloneDeep(this.roleForm.getValue("scopes_permissions")),r=[t];"scope"===t&&(r=["read","create","update","delete"]),i.each(r,function(t){i.each(n.scopes,function(n){e.target.checked?a[n]=i.union(a[n],[t]):(a[n]=i.difference(a[n],[t]),i.isEmpty(a[n])&&i.unset(a,n))})}),this.roleForm.get("scopes_permissions").setValue(a)},t.prototype.getRequest=function(){var t=this,e=new c;return["name","description","scopes_permissions"].forEach(function(n){return e[n]=t.roleForm.get(n).value}),e},t.prototype.createAction=function(){var t=this,e=this.getRequest();this.roleService.create(e).subscribe(function(){t.notificationService.show(s.a.success,t.i18n("Created role '{{role_name}}'",{role_name:e.name})),t.router.navigate(["/user-management/roles"])},function(){t.roleForm.setErrors({cdSubmitButton:!0})})},t.prototype.editAction=function(){var t=this,e=this.getRequest();this.roleService.update(e).subscribe(function(){t.notificationService.show(s.a.success,t.i18n("Updated role '{{role_name}}'",{role_name:e.name})),t.router.navigate(["/user-management/roles"])},function(){t.roleForm.setErrors({cdSubmitButton:!0})})},t.prototype.submit=function(){this.mode===this.roleFormMode.editing?this.editAction():this.createAction()},t}()},eajB:function(t,e,n){"use strict";n.d(e,"b",function(){return c}),n.d(e,"c",function(){return f}),n.d(e,"d",function(){return p}),n.d(e,"a",function(){return l});var a=n("CcnG"),r=n("rpEJ"),i=n("mrSG"),o=n("lqqz"),s=n("gI3B"),u=n("NJnL"),l=function(){return function(){this.placement="top",this.triggers="hover focus",this.delay=0}}(),c=function(){function t(t){Object.assign(this,t)}return Object.defineProperty(t.prototype,"isBs3",{get:function(){return Object(r.d)()},enumerable:!0,configurable:!0}),t.prototype.ngAfterViewInit=function(){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)},t}(),d=0,f=function(){function t(t,e,n,r,i){this._renderer=e,this._elementRef=n,this.tooltipId=d++,this.tooltipChange=new a.EventEmitter,this.containerClass="",this.tooltipAnimation=!0,this.tooltipFadeDuration=150,this.ariaDescribedby="tooltip-"+this.tooltipId,this.tooltipStateChanged=new a.EventEmitter,this._tooltip=r.createLoader(this._elementRef,t,this._renderer).provide({provide:l,useValue:i}),Object.assign(this,i),this.onShown=this._tooltip.onShown,this.onHidden=this._tooltip.onHidden}return Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._tooltip.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"htmlContent",{set:function(t){Object(r.i)("tooltipHtml was deprecated, please use `tooltip` instead"),this.tooltip=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_placement",{set:function(t){Object(r.i)("tooltipPlacement was deprecated, please use `placement` instead"),this.placement=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_isOpen",{get:function(){return Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen},set:function(t){Object(r.i)("tooltipIsOpen was deprecated, please use `isOpen` instead"),this.isOpen=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_enable",{get:function(){return Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled},set:function(t){Object(r.i)("tooltipEnable was deprecated, please use `isDisabled` instead"),this.isDisabled=!t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_appendToBody",{get:function(){return Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),"body"===this.container},set:function(t){Object(r.i)('tooltipAppendToBody was deprecated, please use `container="body"` instead'),this.container=t?"body":this.container},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_popupClass",{set:function(t){Object(r.i)("tooltipClass deprecated")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipContext",{set:function(t){Object(r.i)("tooltipContext deprecated")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipPopupDelay",{set:function(t){Object(r.i)("tooltipPopupDelay is deprecated, use `delay` instead"),this.delay=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_tooltipTrigger",{get:function(){return Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers},set:function(t){Object(r.i)("tooltipTrigger was deprecated, please use `triggers` instead"),this.triggers=(t||"").toString()},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._tooltip.listen({triggers:this.triggers,show:function(){return t.show()}}),this.tooltipChange.subscribe(function(e){e||t._tooltip.hide()})},t.prototype.toggle=function(){if(this.isOpen)return this.hide();this.show()},t.prototype.show=function(){var t=this;if(!(this.isOpen||this.isDisabled||this._delayTimeoutId)&&this.tooltip){var e=function(){t._delayTimeoutId&&(t._delayTimeoutId=void 0),t._tooltip.attach(c).to(t.container).position({attachment:t.placement}).show({content:t.tooltip,placement:t.placement,containerClass:t.containerClass,id:t.ariaDescribedby})},n=function(){t._tooltipCancelShowFn&&t._tooltipCancelShowFn()};if(this.delay){var a=Object(s.a)(this.delay).subscribe(function(){e(),n()});if(this.triggers){var i=Object(r.f)(this.triggers);this._tooltipCancelShowFn=this._renderer.listen(this._elementRef.nativeElement,i[0].close,function(){a.unsubscribe(),n()})}}else e()}},t.prototype.hide=function(){var t=this;this._delayTimeoutId&&(clearTimeout(this._delayTimeoutId),this._delayTimeoutId=void 0),this._tooltip.isShown&&(this._tooltip.instance.classMap.in=!1,setTimeout(function(){t._tooltip.hide()},this.tooltipFadeDuration))},t.prototype.ngOnDestroy=function(){this._tooltip.dispose()},Object(i.__decorate)([Object(r.a)(),Object(i.__metadata)("design:type",Object)],t.prototype,"tooltip",void 0),t}(),p=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[l,o.a,u.a]}},t}()},eipH:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("zfKp"),o=n("ozli");e.fromObservable=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription;return a.add(e.schedule(function(){var r=t[i.observable]();a.add(r.subscribe({next:function(t){a.add(e.schedule(function(){return n.next(t)}))},error:function(t){a.add(e.schedule(function(){return n.error(t)}))},complete:function(){a.add(e.schedule(function(){return n.complete()}))}}))})),a}:o.subscribeToObservable(t))}},"ej+x":function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("gI3B"),r=n("psW0"),i=n("klSw"),o=n("CcnG"),s=n("t/Na"),u=function(){function t(t){var e=this;this.http=t,this.API_URL="api/feature_toggles",this.REFRESH_INTERVAL=2e4,this.featureToggleMap$=Object(a.a)(0,this.REFRESH_INTERVAL).pipe(Object(r.a)(function(){return e.http.get(e.API_URL)}),Object(i.a)(1))}return t.prototype.get=function(){return this.featureToggleMap$},t.ngInjectableDef=o.defineInjectable({factory:function(){return new t(o.inject(s.c))},token:t,providedIn:"root"}),t}()},ejVf:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.standard="standard",t.flex="flex",t.force="force"}(e.ColumnMode||(e.ColumnMode={}))},fB8H:function(t,e){t.exports='<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>\u5207\u6362\u5bfc\u822a</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u4eea\u8868\u76d8</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u96c6\u7fa4</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u4e3b\u673a</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="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>\u914d\u7f6e\u9879</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH \u7d22\u5f15</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>Manager \u6269\u5c55\u6a21\u5757</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u5757\u8bbe\u5907</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u955c\u50cf</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>\u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u5bf9\u8c61\u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u5b58\u50a8\u6876</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>\u5173\u4e8e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \u7684\u6570\u636e\uff0c\u6b63\u4e3a\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>"/>\u83b7\u53d6\u4e2d\uff0c\u8bf7\u7a0d\u5019...\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>\u5173\u4e8e\u4e4b\u524d\u7f13\u5b58\u7684\u6570\u636e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\uff0c\u6b63\u4e3a\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>"/>\u663e\u793a\u3002\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>\u5173\u4e8e\u6570\u636e\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> \uff0c\u65e0\u6cd5\u4e3a\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>"/>\u52a0\u8f7d\u3002\n  \u8bf7\u68c0\u67e5\u96c6\u7fa4\u7684\u5065\u5eb7\u72b6\u51b5\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u8fd4\u56de</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u8bf7\u9009\u62e9\u8bed\u8a00</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u9762\u677f\u7684\u76f8\u5173\u6570\u636e\u2026</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u4ee5\u53ca\u6253\u5f00\u76d1\u63a7\u529f\u80fd\uff0c\n\u8bf7\u53c2\u9605\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\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>\u65e0 Grafana \u4eea\u8868\u76d8\u3002\u5173\u4e8e\u5982\u4f55\u4e3a Grafana \u6dfb\u52a0\n\u4eea\u8868\u76d8\uff0c\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>Grafana \u65f6\u95f4\u9009\u62e9\u5de5\u5177</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>\u91cd\u65b0\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u65e0\u6cd5\u52a0\u8f7d\u6570\u636e\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9009\u4e2d\u4e2a\u6570</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u547d\u4e2d\u4e2a\u6570</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u603b\u6570</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8bbe\u7f6e</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>\u901a\u5e38\u65e0\u987b\u6539\u53d8\u8fd9\u4e9b\u9ed8\u8ba4\u53c2\u6570\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u540e\u5907\u5b58\u50a8</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u786e\u8ba4</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u53d6\u6d88</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u76ee\u6807\u9650\u5b9a\u540d</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u8bf7\u586b\u5199\u6b64\u680f\u76ee\uff01</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN \u683c\u5f0f\u9519\u8bef\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN \u5e94\u7531\u4ee5\u4e0b\u683c\u5f0f\u6784\u6210\uff1a\u201ciqn.$year-$month.$reversedAddress:$definedName\u201d</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>\u4f8b\u5982\uff1aiqn.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>\u66f4\u591a\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u6b64\u76ee\u6807\u7684\u9ad8\u7ea7\u8bbe\u7f6e\u9879\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u7aef\u53e3</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>\u81f3\u5c11\u9700\u8981 \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> \u4e2a\u7f51\u5173\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u6dfb\u52a0\u7aef\u53e3</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u6b64\u6620\u50cf\u7684\u8bbe\u7f6e\u9879\u5b58\u5728\u4fee\u6539\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u81f3\u5c11\u9700\u8981 1 \u4e2a\u6620\u50cf\uff01</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u6dfb\u52a0\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL \u8eab\u4efd\u9a8c\u8bc1</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u5ba2\u6237\u7aef IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u6388\u6743\u4eba IQN \u5fc5\u987b\u552f\u4e00\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u7528\u6237</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>\u7528\u6237\u540d\u957f\u5ea6\u5fc5\u987b\u5728 8 \u5230 64 \u4e2a\u5b57\u7b26\u4e4b\u95f4\uff0c\u4e14\u53ea\u80fd\u5305\u542b\n\u4ee5\u4e0b\u5b57\u7b26\uff1a\u82f1\u6587\u5b57\u6bcd\u3001\u201c.\u201d\u3001\u201c@\u201d\u3001\u201c-\u201d\u3001\u201c_\u201d\u6216\u201c:\u201d\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u4e92\u8ba4\u8bc1\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u4e92\u8ba4\u8bc1\u5bc6\u7801</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>\u6388\u6743\u4eba\u5c5e\u4e8e\u7fa4\u7ec4\u3002\u6620\u50cf\u987b\u5728\u7fa4\u7ec4\u4e2d\u8fdb\u884c\u8bbe\u7f6e\u3002</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u65e0\u9879\u76ee\u6dfb\u52a0\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u6dfb\u52a0\u6388\u6743\u4eba</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u6dfb\u52a0\u7fa4\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u63d0\u4ea4</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>\u60a8\u786e\u5b9a\u8981\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u9009\u4e2d\u7684\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u5417\uff1f\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u662f\u7684\uff0c\u6211\u786e\u5b9a\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u53d1\u73b0\u8eab\u4efd\u9a8c\u8bc1</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>\u7528\u6237\u540d\u957f\u5ea6\u5fc5\u987b\u5728 8 \u5230 64 \u4e2a\u5b57\u7b26\u4e4b\u95f4\uff0c\u4e14\u53ea\u80fd\u5305\u542b\n\u4ee5\u4e0b\u5b57\u7b26\uff1a\u82f1\u6587\u5b57\u6bcd\u3001\u201c.\u201d\u3001\u201c@\u201d\u3001\u201c-\u201d\u3001\u201c_\u201d\u6216\u201c:\u201d\u3002</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528 iSCSI \u76ee\u6807\u7ba1\u7406\u529f\u80fd\uff0c\n\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53ef\u7528\u4fe1\u606f\uff1a</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u65e0\u53ef\u7528 iSCSI \u76ee\u6807</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u4e0d\u5141\u8bb8\u4f7f\u7528\u201c/\u201d\u548c\u201c@\u201d\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u2026</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684 RBD \u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u4f7f\u7528\u4e00\u4e2a\u4e13\u7528\u7684\u6570\u636e\u6c60</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u6570\u636e\u6c60</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>\u4e3a\u4fdd\u5b58 RBD \u7684\u5bf9\u8c61\u6570\u636e\u5355\u72ec\u5206\u914d\u7684\u5b58\u50a8\u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684\u6570\u636e\u5b58\u50a8\u6c60 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u5982 10 GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u60a8\u9700\u8981\u8bbe\u7f6e\u5927\u4e00\u4e9b\u7684\u5bb9\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u7279\u6027</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e\u2026</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u9ad8\u7ea7\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u6761\u5e26</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u5bf9\u8c61\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u6761\u5e26\u5355\u5143\u5927\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u9009\u62e9\u6761\u5e26\u5355\u5143\u5927\u5c0f --</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>\u56e0\u4e3a\u8bbe\u7f6e\u4e86\u6761\u5e26\u4e2a\u6570\uff0c\u6240\u4ee5\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u9009\u7684\uff01</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u6761\u5e26\u5355\u5143\u5927\u5c0f\u8d85\u8fc7\u4e86\u5bf9\u8c61\u5927\u5c0f\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u6761\u5e26\u4e2a\u6570</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>\u56e0\u4e3a\u8bbe\u7f6e\u4e86\u6761\u5e26\u5355\u5143\u5927\u5c0f\uff0c\u6240\u4ee5\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u9009\u7684\uff01</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u6761\u5e26\u7684\u4e2a\u6570\u5fc5\u987b\u5927\u4e8e 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u603b\u4f53\u6027\u80fd</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7f16\u8f91</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u89e3\u91ca</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u66f4\u8be6\u5c3d\u7684\u89e3\u91ca</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u7f3a\u7701\u503c</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b\u7684\u7f3a\u7701\u503c</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u5bf9\u5e94\u7684\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u53ef\u9009\u503c</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>\u8bbe\u7f6e\u7684\u503c\u592a\u5927\u4e86\uff01\u5e94\u4f4e\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3002\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>\u8bbe\u7f6e\u7684\u503c\u592a\u5c0f\u4e86\uff01\u4e0d\u80fd\u4f4e\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u4fdd\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>\u68c0\u67e5 CRUSH \u7d22\u5f15\u56fe</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u4e3b\u673a\u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u65e0\u6cd5\u627e\u5230\u76f8\u5173\u6761\u76ee</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u96c6\u7fa4\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u5ba1\u8ba1\u65e5\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u76f8\u5173\u914d\u7f6e\u4fe1\u606f...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u914d\u7f6e\u4fe1\u606f\u65e0\u6cd5\u52a0\u8f7d\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u7f16\u8f91 Manager \u6269\u5c55\u6a21\u5757</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>\u8f93\u5165\u503c\u4e0d\u662f\u6709\u6548\u7684 UUID\uff0c\u5982\uff1a67dcac9f-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>\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e2a\u6709\u6548\u7684 IP \u5730\u5740\u3002</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>\u8f93\u5165\u503c\u8fc7\u5927\uff01\u5fc5\u987b\u5c0f\u4e8e\u6216\u7b49\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u3002\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>\u8f93\u5165\u503c\u8fc7\u5c0f\uff01\u5fc5\u987b\u5927\u4e8e\u6216\u7b49\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u3002\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>\u8f93\u5165\u987b\u4e3a\u6570\u5b57\u3002</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>\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e00\u4e2a\u6d6e\u70b9\u6570\u6216\u8005\u5341\u8fdb\u5236\u6574\u6570\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u96c6\u7fa4 ID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap \u4fee\u6539\u65f6\u95f4</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>\u4ef2\u88c1\u6210\u5458</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u4ef2\u88c1\u6210\u5458</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u96c6\u7fa4\u8303\u56f4\u7684 OSD \u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD \u6062\u590d\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u81ea\u5b9a\u4e49\u4f18\u5148\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u8fd9\u4e2a\u5b57\u6bb5\u662f\u5fc5\u586b\u7684\uff01</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>\u8f93\u5165\u503c\u8fc7\u5927\uff01\u4e0d\u80fd\u5927\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3002\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>\u8f93\u5165\u503c\u8fc7\u5c0f\uff01\u4e0d\u80fd\u5c0f\u4e8e \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u91cd\u65b0\u8bbe\u7f6e OSD \u7684\u6743\u91cd</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>\u6743\u91cd\u503c\u5fc5\u987b\u5728 0 \u548c 1 \u4e4b\u95f4</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u91cd\u8bbe\u6743\u91cd</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 {...}}"/>\u6d17\u5237\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 {\u6df1\u5ea6}}</target>\n      </trans-unit>\n      <trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\u5373\u5c06\u5bf9 OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u6267\u884c\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> \u6d17\u5237\u3002\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 {\u6df1\u5ea6} }</target>\n      </trans-unit>\n      <trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">\n        <source>OSDs List</source>\n        <target>OSD \u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u5982\u679c\u7ee7\u7eed\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n\u5c06\u88ab\u6807\u8bb0\u4e3a\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD \u4e0d\u5b89\u5168\uff0c\u65e0\u6cd5\u9500\u6bc1\uff01</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u5982\u679c\u7ee7\u7eed\uff0c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\n\u5c06\u88ab\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>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8be6\u60c5</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u5065\u5eb7\u72b6\u51b5</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7edf\u8ba1\u6570\u636e</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528 NFS Ganesha \u7ba1\u7406\u529f\u80fd\uff0c\n\u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u5ba2\u6237\u7aef</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u4f55\u5ba2\u6237\u7aef\u5747\u53ef\u8bbf\u95ee</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u586b\u9879</target>\n      </trans-unit>\n      <trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">\n        <source>Must contain one or more comma-separated values</source>\n        <target>\u5fc5\u987b\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u9017\u53f7\u5206\u9694\u503c</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b\u5982\uff1a</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u8bbf\u95ee\u7c7b\u578b</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>\u6dfb\u52a0\u5ba2\u6237\u7aef</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS \u5bfc\u51fa \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u65e0\u53ef\u7528\u96c6\u7fa4 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u96c6\u7fa4 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u6dfb\u52a0\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u5b58\u50a8\u540e\u7aef</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u540e\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u5bf9\u8c61\u7f51\u5173\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u65e0\u53ef\u9009\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5bf9\u8c61\u7f51\u5173\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS \u7528\u6237 ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u65e0\u53ef\u7528\u5ba2\u6237\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- \u8bf7\u9009\u62e9 cephx \u5ba2\u6237\u7aef --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS \u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u5b89\u5168\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u542f\u7528\u5b89\u5168\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS \u8def\u5f84</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>\u8def\u5f84\u9700\u4ee5\u201c/\u201d\u5f00\u5934\uff0c\u540e\u9762\u53ef\u8ddf\u5355\u8bcd</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u5c06\u521b\u5efa\u65b0\u6587\u4ef6\u5939</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u8def\u5f84</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>\u8def\u5f84\u53ea\u80fd\u662f\u5355\u4e2a\u201c/\u201d\u6216\u5355\u8bcd</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u5c06\u521b\u5efa\u65b0\u7684\u6876</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS \u534f\u8bae</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 \u6807\u7b7e</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>\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>"/> \u88c5\u5165\u7684\u5907\u7528\u8bbf\u95ee\uff08\u4e0d\u5f97\u5305\u542b\u524d\u7f6e /\uff09\u3002\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>\u5ba2\u6237\u7aef\u4e0d\u80fd\u88c5\u5165\u5b50\u76ee\u5f55\uff08\u5373\u5982\u679c\u6807\u8bb0\u4e3a foo\uff0c\u5219\u5ba2\u6237\u7aef\u65e0\u6cd5\u88c5\u5165 foo/baz\uff09\u3002</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>\u901a\u8fc7\u4f7f\u7528\u4e0d\u540c\u6807\u8bb0\u9009\u9879\uff0c\u53ef\u5c06\u540c\u4e00\u8def\u5f84\u5bfc\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u4f2a</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>\u6b64 \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>"/> \u5bfc\u51fa\u5728\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u4f2a\u6587\u4ef6\u7cfb\u7edf\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u4e2d\n                                       \u6240\u5360\u7528\u7684\u4f4d\u7f6e\uff08\u5fc5\u987b\u552f\u4e00\uff09\u3002\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>\u901a\u8fc7\u4f7f\u7528\u4e0d\u540c\u4f2a\u9009\u9879\uff0c\u53ef\u5c06\u540c\u4e00\u8def\u5f84\u5bfc\u51fa\u591a\u6b21\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684\u8bbf\u95ee\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u9009\u62e9\u8bbf\u95ee\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u6ca1\u6709\u53ef\u7528\u7684 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>-- \u9009\u62e9\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u7528\u6237 ID \u533f\u540d\u8bbf\u95ee --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u4f20\u8f93\u534f\u8bae</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u79f0\u53ea\u80fd\u7531\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u77ed\u5212\u7ebf\u548c\u4e0b\u5212\u7ebf\u7ec4\u6210\u3002</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>\u6b64\u7ea0\u5220\u7801\u914d\u7f6e\u540d\u79f0\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u7ea0\u5220\u7801\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u6570\u636e\u5757 (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>\u5fc5\u987b\u5927\u4e8e\u7b49\u4e8e 2</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u6821\u9a8c\u5757 (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>\u5fc5\u987b\u5927\u4e8e\u7b49\u4e8e 1</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u6301\u4e45\u56e0\u5b50 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u5c40\u90e8\u6027\u56e0\u5b50 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>CRUSH \u6545\u969c\u57df</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>CRUSH \u5c40\u90e8\u6027</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u65e0</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u7b97\u6cd5</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 \u6839</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>CRUSH \u8bbe\u5907\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u610f</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u76ee\u5f55</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u6dfb\u52a0</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u5173\u95ed</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u79f0\u2026</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>\u6b64 Ceph \u5b58\u50a8\u6c60\u540d\u79f0\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u5b58\u50a8\u6c60\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u8bf7\u9009\u62e9\u5b58\u50a8\u6c60\u7684\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u5f52\u7f6e\u7ec4 (PG)</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u81f3\u5c11\u9700\u8981\u4e00\u4e2a\u5f52\u7f6e\u7ec4\uff01</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>\u60a8\u7684\u96c6\u7fa4\u6ca1\u6cd5\u652f\u6301\u8fd9\u4e48\u591a\u7684 PG\u3002\u8bf7\u91cd\u65b0\u8ba1\u7b97\u9700\u8981\u7684 PG \u4e2a\u6570\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u60a8\u53ea\u80fd\u589e\u52a0\u5b58\u50a8\u6c60\u7684 PG \u4e2a\u6570\u3002\n\u76ee\u524d\u60a8\u7684\u5b58\u50a8\u6c60\u6709 \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> \u4e2a PG\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u5728\u7ebf PG \u8ba1\u7b97\u5668</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u5df2\u6839\u636e\u5f53\u524d\u60c5\u51b5\u4e3a\u60a8\u63a8\u7b97\u51fa\u4e86 PG \u7684\u8bbe\u7f6e\uff0c\u60a8\n\u6700\u597d\u5728\u63d0\u4ea4\u4e4b\u524d\u786e\u8ba4\u8fd9\u4e9b\u8bbe\u7f6e\u662f\u5408\u9002\u7684\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>CRUSH \u7b97\u6cd5\u89c4\u5219\u7ec4</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- \u9009\u62e9 CRUSH \u89c4\u5219 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>CRUSH \u89c4\u5219</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>CRUSH \u6b65\u9aa4</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u5f53\u524d\u7684\u96c6\u7fa4\u65e0\u6cd5\u4f7f\u7528\u8be5\u89c4\u5219\uff0c\u56e0\u4e3a\u96c6\u7fa4\u7684 OSD \u4e2a\u6570\u8fc7\u5c11\uff0c\n   \u65e0\u6cd5\u6ee1\u8db3\u89c4\u5219\u6240\u9700\u7684\u6700\u4f4e OSD \u6570\u91cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u526f\u672c\u4e2a\u6570</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>\u6700\u4f4e\uff1a\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>\u6700\u9ad8\uff1a\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u8bbe\u7f6e\u7684\u8d85\u8fc7\u4e86\u9650\u5236\u3002\u8bbe\u7f6e\u503c\u5e94\u8be5\u5728\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> \u548c \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> \u4e2d\u95f4\u4e3a\u5b9c.\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u65e0\u7ea0\u5220\u7801\u914d\u7f6e\u53ef\u9009 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7ea0\u5220\u7801\u914d\u7f6e --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC \u91cd\u5199 (overwrite)</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u5e94\u7528\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u538b\u7f29</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u7b97\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u65e0\u53ef\u7528\u7684\u7ea0\u5220\u7801\u538b\u7f29\u7b97\u6cd5 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>blob \u5927\u5c0f\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u6bd4\u5982 128 KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u53d6\u503c\u5fc5\u987b\u5927\u4e8e 0</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>blob \u5927\u5c0f\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u5982 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>\u53d6\u503c\u5fc5\u987b\u5927\u4e8e blob \u5927\u5c0f\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u6bd4\u4f8b</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u538b\u7f29\u7387</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>\u53d6\u503c\u5fc5\u987b\u5728 0.0 \u548c 1.0 \u4e4b\u95f4</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u65e0\u6cd5\u65b0\u5efa\u540d\u5b57\u4e2d\u6709\u201c/\u201d\u7684 RBD \u5b58\u50a8\u6c60\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u8bf7\u91cd\u65b0\u547d\u540d\uff0c\u6216\u8005\u628a\u5b58\u50a8\u6c60\u7684\u201crbd\u201d\u5e94\u7528\u6807\u8bb0\u53bb\u6389\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u5b58\u50a8\u6c60\u5217\u8868</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>\u5173\u4e8e\u5982\u4f55\u914d\u7f6e\u548c\u542f\u7528\u5bf9\u8c61\u7f51\u5173\u7684\u529f\u80fd\uff0c\n  \u8bf7\u53c2\u8003\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u6587\u6863\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> \u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u5b58\u50a8\u6876\u6570\u636e\u2026</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u5b58\u50a8\u6876\u6570\u636e\u65e0\u6cd5\u52a0\u8f7d\u3002</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>\u8f93\u5165\u503c\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u6240\u9009\u540d\u79f0\u5df2\u7ecf\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u6240\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7528\u6237 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b\u5217\u8868</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u8bf7\u9009\u62e9\u4e00\u4e2a\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u8bf7\u9009\u62e9\u6743\u9650\u7c7b\u578b --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3 \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u7528\u6237\u540d</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u8bf7\u9009\u62e9\u7528\u6237\u540d --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u81ea\u52a8\u751f\u6210\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u8bbf\u95ee\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u79d8\u5bc6\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u5b50\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u6240\u9009\u7684\u5b50\u7528\u6237 ID \u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8bfb\u3001\u5199</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u5168\u90e8</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>Swift \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u81ea\u52a8\u751f\u6210\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u6b63\u5728\u52a0\u8f7d\u7528\u6237\u6570\u636e\u2026</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u7528\u6237\u6570\u636e\u65e0\u6cd5\u52a0\u8f7d\u3002 </target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u6240\u9009\u7684\u7528\u6237 ID \u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u5168\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u90ae\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u65e0\u6548\u7684\u90ae\u7bb1\u5730\u5740\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u6b64\u90ae\u7bb1\u5730\u5740\u5df2\u88ab\u4f7f\u7528\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u5b58\u50a8\u6876\u4e2a\u6570\u7684\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>\u8bbe\u7f6e\u7684\u503c\u5fc5\u987b &gt;= 0\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u51bb\u7ed3</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u5b50\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u6ca1\u6709\u5b50\u7528\u6237\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u5bc6\u94a5</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>\u6ca1\u6709\u4efb\u4f55\u5bc6\u94a5\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u663e\u793a</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u7528\u6237\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6743\u9650\u4e3a\u7a7a\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u7528\u6237\u914d\u989d</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u5f00\u542f</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u7a7a\u95f4\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u7a7a\u95f4\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u5bf9\u8c61\u4e2a\u6570\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u5bf9\u8c61\u4e2a\u6570\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u5b58\u50a8\u6876\u914d\u989d</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>\u6b22\u8fce\u4f7f\u7528 Ceph\uff01</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>\u8bf7\u8f93\u5165\u7528\u6237\u540d</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u8bf7\u8f93\u5165\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u767b\u5f55</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u63cf\u8ff0\u2026</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u6743\u9650</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u62b1\u6b49\uff0c\u6b64\u7528\u6237\u4e0d\u5b58\u5728\u3002</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>\u8fd4\u56de\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u767b\u5f55\u9875\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3002\u60a8\u5c06\u5728\u91cd\u65b0\u767b\u5f55\u65f6\u4ece\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u6ce8\u9500\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u786e\u8ba4\u5bc6\u7801</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u5bc6\u7801\u548c\u4e4b\u524d\u7684\u8f93\u5165\u4e0d\u5339\u914d\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u90ae\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u90ae\u7bb1\u5730\u5740\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u89d2\u8272</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>\u60a8\u5373\u5c06\u53d6\u6d88\u60a8\u81ea\u5df1\u7528\u6237\u7684 "user read / update" \u6743\u9650\u3002</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>\u5982\u679c\u60a8\u7ee7\u7eed\u7684\u8bdd\uff0c\u60a8\u4ee5\u540e\u5c31\u6ca1\u529e\u6cd5\u4e3a\u5176\u4ed6\u7528\u6237\u6dfb\u52a0\u6216\u8005\u5220\u9664\u89d2\u8272\u4e86\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u60a8\u786e\u5b9e\u8981\u7ee7\u7eed\u5417\uff1f</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u7981\u6b62\u8bbf\u95ee</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>\u62b1\u6b49\uff0c\u60a8\u65e0\u6743\u8bbf\u95ee\u8fd9\u4e2a\u9875\u9762\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u62b1\u6b49\uff0c\u6211\u4eec\u627e\u4e0d\u5230\u60a8\u8981\u770b\u7684\u4e1c\u897f\u3002</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u5168\u90e8\u5df2\u8bfb</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u65b0\u7684\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u6ca1\u6709\u540e\u53f0\u4efb\u52a1\u6b63\u5728\u6267\u884c\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u540e\u53f0\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u5e2e\u52a9</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u6587\u6863</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>\u5173\u4e8e</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u4eea\u8868\u76d8\u8bbe\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u7528\u6237\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u767b\u5f55\u7684\u7528\u6237</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>\u4ee5\u7528\u6237\u540d \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\u8fdb\u884c\u767b\u5f55\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u767b\u51fa</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u6027\u80fd\u8ba1\u6570\u5668</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u6027\u80fd\u8be6\u60c5</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>\u7d22\u5f15\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u5f52\u7f6e\u89c4\u5219</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u6807\u8bc6</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>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u4e3b\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u4fee\u6539\u65f6\u95f4</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="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u65e0\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u5bf9\u8c61\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {\u5426} 1 {\u662f} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u5b58\u50a8\u6876\u6570\u76ee</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u65e0\u6cd5\u8bfb\u53d6\u6027\u80fd\u8ba1\u6570\u5668</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u5168\u5c40</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD \u914d\u7f6e</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>\u5220\u9664\u672c\u5730\u7684\u914d\u7f6e\u9879\uff0c\u6539\u7528\u66f4\u9ad8\u4f5c\u7528\u57df\u7684\u914d\u7f6e\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u503c\u4e3a 0</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>\u5143\u6570\u636e\u4e0d\u53ef\u7528</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u76f8\u5173\u5143\u6570\u636e</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u6027\u80fd\u8ba1\u6570\u5668</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>\u76f4\u65b9\u56fe\u4e0d\u53ef\u7528\uff1a\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>\u5199\u5165\u8bf7\u6c42</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8bfb\u53d6\u8bf7\u6c42</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u76f4\u65b9\u56fe</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u5f53\u524d\u503c</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u4e0b\u9650</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u6765\u6e90</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u7ea7\u522b</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u53ef\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\uff08\u53ef\u7f16\u8f91\uff09</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u53ef\u9009\u9879</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u53c2\u89c1</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u96c6\u7fa4\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>manager \u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u5bf9\u8c61\u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>metadata \u670d\u52a1\u5668</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI \u7f51\u5173</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u5ba2\u6237\u7aef IOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u5ba2\u6237\u7aef\u541e\u5410\u91cf</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u5ba2\u6237\u7aef\u8bfb/\u5199</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u6062\u590d\u541e\u5410\u91cf</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u6027\u80fd</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u57fa\u672c\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u5bf9\u8c61\u6570</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>\u6bcf\u4e2a OSD \u7684 PG \u6570</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>PG \u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u67e5\u770b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u65e5\u5fd7\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u4ee5\u83b7\u5f97\u66f4\u591a\u7ec6\u8282\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u5c06\u6620\u50cf\u79fb\u81f3\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\u8981\u5c06 \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u79fb\u81f3\u56de\u6536\u7ad9\uff0c\n          \u8bf7\u70b9\u51fb \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u79fb\u52a8\u6620\u50cf\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\u6b64\u5916\uff0c\u53ef\u9009\u62e9\u8bbe\u7f6e\u4e00\u4e2a\u8fc7\u671f\u65f6\u95f4\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u62a4\u671f\u4e00\u76f4\u5230</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u65e0\u4fdd\u62a4</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>\u65e5\u671f\u683c\u5f0f\u6709\u95ee\u9898\u3002\u8bf7\u4f7f\u7528\u201cYYYY-MM-DD HH:mm:ss\u201d\u3002</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>\u4fdd\u62a4\u671f\u9650\u5df2\u7ecf\u8fc7\u4e86\u3002\u8bf7\u8bbe\u7f6e\u4e00\u4e2a\u5c06\u6765\u7684\u65e5\u671f\uff0c\u6216\u8005\u6e05\u7a7a\u4e0d\u586b\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u79fb\u52a8\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u6982\u89c8</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u76ee\u6807</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>\u53ea\u5bf9\u542f\u52a8\u4e86 \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>"/> \u529f\u80fd\u7684 RBD \u6620\u50cf\u53ef\u7528\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u6570\u636e\u5b58\u50a8\u6c60</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u4f9b\u7ed9\u5bb9\u91cf</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>\u603b\u4f9b\u7ed9\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u6761\u5e26\u5355\u5143</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u6761\u5e26\u4e2a\u6570</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u7236\u8282\u70b9</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u5757\u5b58\u50a8\u540d\u5b57\u524d\u7f00</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>\u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u6b64\u8bbe\u7f6e\u4f1a\u8986\u76d6\u5168\u5c40\u503c</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>\u8be5\u503c\u4e3a\u5168\u5c40\u503c\u3002\u6ca1\u6709\u4e3a\u6b64\u6620\u50cf\u8bbe\u7f6e\u6b64\u9009\u9879\u7684\u503c\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>RBD \u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {\u6539\u540d} other {\u521b\u5efa} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u5feb\u7167\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u53d7\u4fdd\u62a4\u7684</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u65e0\u4fdd\u62a4\u7684</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u60a8\u5373\u5c06\u8fdb\u884c\u56de\u6eda\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u6e05\u7a7a\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u8981\u5f7b\u5e95\u6e05\u7a7a\u7684\u8bdd\uff0c\u8bf7\u9009\u62e9\u5355\u4e2a\u6216\u6240\u6709\u7684\u6620\u50cf\uff0c\u7136\u540e\u70b9\u51fb</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u5b58\u50a8\u6c60\uff1a</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u5b58\u50a8\u6c60\u540d\u79f0\u2026</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u5168\u9009</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u6062\u590d\u6620\u50cf</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u8981\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u8f93\u5165\u6620\u50cf\u7684\u65b0\u540d\u79f0\uff0c\u5e76\u70b9\u51fb</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u8fc7\u671f\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u62a4\u671f\u9650</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>\u4e00\u76f4\u5230\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\uff0c\u8be5\u6620\u50cf\u90fd\u4f1a\u53d7\u4fdd\u62a4\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI \u7ed3\u6784\u56fe</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u95ee\u9898</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u6b63\u5728\u540c\u6b65</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u5df2\u5c31\u7eea</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u7f16\u8f91\u5b58\u50a8\u6c60\u955c\u50cf\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u8981\u7f16\u8f91\u5b58\u50a8\u6c60\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>"/>\xa0\n          \u7684\u955c\u50cf\u6a21\u5f0f\uff0c\u8bf7\u4ece\u5217\u8868\u4e2d\u9009\u62e9\u4e00\u9879\uff0c\u5e76\u70b9\u51fb\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u66f4\u65b0\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\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>\u5728\u7981\u7528\u955c\u50cf\u529f\u80fd\u524d\u5fc5\u987b\u5148\u79fb\u9664\u540c\u4f34\u96c6\u7fa4\u3002</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\u5b58\u50a8\u6c60\u955c\u50cf\u540c\u4f34\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 {\u7f16\u8f91} other {\u6dfb\u52a0} }</target>\n      </trans-unit>\n      <trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u5b58\u50a8\u6c60\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>"/>\n         \u7684\u5b58\u50a8\u6c60\u955c\u50cf\u540c\u4f34\u5c5e\u6027\uff0c\u5e76\u70b9\u51fb\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\u63d0\u4ea4\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u96c6\u7fa4\u540d\u79f0</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u96c6\u7fa4\u540d\u79f0\u65e0\u6548\u3002</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 \u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>Monitor \u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u9017\u53f7\u5206\u5272\u7684\u5730\u5740...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>Monitor \u5730\u5740\u65e0\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX \u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64 \u7f16\u7801\u7684\u5bc6\u94a5...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX \u5bc6\u94a5\u5fc5\u987b\u662f base64 \u7f16\u7801\u7684\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u7f13\u5b58\u5c42\u8be6\u7ec6\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u6392\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u5ba2\u6237\u7aef\uff1a\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u5f53\u524d</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u5df2\u66f4\u65b0\u53d1\u73b0\u8eab\u4efd\u9a8c\u8bc1</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u65e0\u53ef\u7528\u7aef\u53e3\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u65e0\u53ef\u7528\u6620\u50cf\u3002</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>\u65e0\u53ef\u7528\u6620\u50cf\u3002\u8bf7\u786e\u4fdd\u4e3a\u76ee\u6807\u6dfb\u52a0\u4e00\u4e2a\u6620\u50cf\u3002</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>\u65e0\u53ef\u7528\u6388\u6743\u4eba\u3002\u8bf7\u786e\u4fdd\u4e3a\u76ee\u6807\u6dfb\u52a0\u4e00\u4e2a\u6388\u6743\u4eba\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u76ee\u6807</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u4e3b\u673a\u540d</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8bfb\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8bfb\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u5199\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u6d3b\u52a8/\u4f18\u5316\u81ea</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u5b9e\u4f8b</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u95ee\u9898</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u8fdb\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u7981\u7528</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u7f16\u8f91\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u6dfb\u52a0 peer</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u7f16\u8f91 peer</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u5220\u9664 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># \u672c\u5730</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target># \u8fdc\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u955c\u50cf peer</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u5bc6\u94a5</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u503c</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u5b8c\u5168\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u5206\u5c42</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u4e92\u65a5\u9501</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>object map\uff08\u8981\u6c42\u4e92\u65a5\u9501\u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u65e5\u5fd7\uff08\u8981\u6c42\u4e92\u65a5\u9501\u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u5feb\u901f diff\uff08\u8981\u6c42 object map \u652f\u6301\uff09</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u79fb\u81f3\u56de\u6536\u7ad9</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u65b0\u5efa</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u91cd\u547d\u540d</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u62a4</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u89e3\u9664\u4fdd\u62a4</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD \u5feb\u7167\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD \u5feb\u7167</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u5b9a\u70b9\u5220\u9664</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>\u7c7b\u578b</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72b6\u6001</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u7248\u672c</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u4e3b\u673a</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u6839</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u6392\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u5b88\u62a4\u8fdb\u7a0b</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u6d3b\u8dc3\u5ea6</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>\u4f7f\u7528\u7387</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u5907\u7528\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u8be5\u503c\u53ef\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\u3002</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>\u670d\u52a1\u5668\u6216\u5ba2\u6237\u7aef\u4e0d\u4f1a\u4e3b\u52a8\u4ece monitor \u7684\u914d\u7f6e\u6570\u636e\u5e93\u8bfb\u53d6\u8fd9\u4e2a\u914d\u7f6e\u3002\n \u6240\u4ee5\u4e0d\u80fd\u7528\u201cceph config set ...\u201d\u8bbe\u7f6e\u5b83\u3002\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7\n ceph.conf \u6216\u8005\u7528\u547d\u4ee4\u884c\u8fdb\u884c\u914d\u7f6e\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u6709\u5728\u670d\u52a1\u542f\u52a8\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u5728\u521b\u5efa\u96c6\u7fa4\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u8be5\u914d\u7f6e\u53ea\u5728\u670d\u52a1\u521b\u5efa\u7684\u65f6\u5019\u624d\u4f1a\u751f\u6548\u3002</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>\u5df2\u66f4\u65b0\u914d\u7f6e\u9009\u9879\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>\u670d\u52a1</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u5f53\u524d\u503c</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u53ef\u7f16\u8f91</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>\u5df2\u66f4\u65b0\u6269\u5c55\u6a21\u5757\u201c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201d\u7684\u9009\u9879\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u542f\u7528</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u7981\u7528</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u6b63\u5728\u91cd\u65b0\u8fde\u63a5\uff0c\u8bf7\u7a0d\u5019\u2026</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u5916\u90e8\u5730\u5740</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u6d3b\u52a8\u4f1a\u8bdd</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u7981\u6b62\u52a0\u5165</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>\u4e4b\u524d\u88ab\u9664\u540d\u7684 OSD \u5728\u542f\u52a8\u4e4b\u540e\uff0c\u4e0d\u4f1a\u88ab\u52a0\u5165\u96c6\u7fa4</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u7981\u6b62\u9664\u540d</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>\u5728\u53d1\u73b0 OSD \u6ca1\u6709\u54cd\u5e94\u4e4b\u540e\u4e00\u6bb5\u65f6\u95f4\uff0c\u8be5 OSD \u4f1a\u88ab\u8e22\u51fa\u96c6\u7fa4\u3002\u8be5\u6807\u5fd7\u4f1a\u7981\u6b62\u8fd9\u4e2a\u529f\u80fd\u3002</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u7981\u6b62\u542f\u7528</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>\u4e0d\u5141\u8bb8 OSD \u542f\u52a8</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u7981\u6b62\u505c\u7528</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>\u5f53\u524d\u4e0d\u53d7\u7406\u5bf9 OSD \u7684\u5931\u6548\u62a5\u544a\uff0c\u56e0\u800c monitor \u4e0d\u4f1a\u505c\u7528 OSD</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u6682\u505c</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u6682\u505c\u8bfb\u5199</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u7981\u6b62\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u6d17\u5237\u5df2\u7981\u6b62</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u7981\u6b62\u6df1\u5c42\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u6df1\u5c42\u6d17\u5237\u5df2\u7981\u6b62</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u7981\u6b62\u56de\u586b</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>PG \u56de\u586b\u5df2\u63a8\u8fdf</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u7981\u6b62\u6062\u590d</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>PG \u6062\u590d\u5df2\u63a8\u8fdf</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u9010\u4f4d\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u4f7f\u7528\u9010\u4f4d\u6392\u5e8f</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u8001\u7248\u672c\u7684\u5feb\u7167\u5df2\u5168\u90e8\u5347\u7ea7</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD \u4e0a\u7684\u5feb\u7167\u5df2\u5168\u90e8\u8f6c\u6362\u5b8c\u6bd5</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u5728\u6062\u590d\u65f6\u8fdb\u884c\u5220\u9664\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u5728\u6062\u590d\u65f6\uff0c\u800c\u975e\u5bf9\u9f50\u9636\u6bb5\u8fdb\u884c\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>PG \u65e5\u5fd7\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u4e3a pg \u65e5\u5fd7\u957f\u5ea6\u6dfb\u52a0\u786c\u9650\u5236</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>\u5df2\u66f4\u65b0 OSD \u6807\u5fd7</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u6df1\u5c42\u6d17\u5237</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u6807\u8bb0\u4e3a\u5df2\u9664\u540d</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\u9664\u540d</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u6807\u8bb0\u4e3a\u52a0\u5165</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\u52a0\u5165</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u6807\u8bb0\u4e3a\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\u505c\u7528</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u6807\u8bb0\u4e3a\u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>OSD \u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u5df2\u6807\u8bb0\u4e22\u5931</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6e05\u9664</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u9500\u6bc1</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u9500\u6bc1</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u5df2\u9500\u6bc1</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>\u8bfb\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8bfb\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u5199\u8bf7\u6c42\u6570</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>\u6807\u8bb0 OSD \u4e3a\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>\u6807\u8bb0\u4e3a\n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u56de\u586b\u91cf</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u6700\u5927\u6d3b\u8dc3\u6062\u590d\u8bf7\u6c42\u6570</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u6700\u5927\u5355\u6b21\u6062\u590d\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u6062\u590d/\u56de\u586b\u64cd\u4f5c\u95f4\u9694\u7761\u7720\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u81ea\u5b9a\u4e49</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>\u5df2\u66f4\u65b0 OSD \u6062\u590d\u901f\u5ea6\u4f18\u5148\u7ea7\u201c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\u5982\u4e0b OSD \u5df2\u7ecf\u542f\u52a8\u4e86\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \u64cd\u4f5c\uff1a\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u4e25\u91cd\u7a0b\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u5df2\u542f\u52a8</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u5df2\u4f7f\u7528</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u7a7a\u95f2</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u6b63\u5e38</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u8fd0\u884c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u62a5</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u672a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u542f\u7528\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u65e0\u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u5de5\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u5f85\u673a</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>\u5de5\u4f5c\u7684\u5b88\u62a4\u8fdb\u7a0b</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 \u670d\u52a1\u7684\u914d\u7f6e\u8fd8\u6ca1\u6709\u5b8c\u6210\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u4f20\u8f93</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS \u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS \u6587\u4ef6\u7cfb\u7edf</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>\uff08\u7ee7\u627f\u81ea\u5168\u5c40\u914d\u7f6e\uff09</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u7ee7\u627f\u81ea\u5168\u5c40\u914d\u7f6e</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>-- \u9009\u62e9\u6267\u884c\u54ea\u79cd\u7c7b\u578b\u7684\u7528\u6237 ID \u533f\u540d\u8bbf\u95ee --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u6ca1\u6709\u53ef\u7528\u7684\u5b88\u62a4\u8fdb\u7a0b\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u5bfc\u51fa</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u7f13\u5b58\u6a21\u5f0f</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u6700\u5c11\u5ef6\u8fdf\u8d76\u51fa\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u6700\u5c11\u5ef6\u8fdf\u5237\u56de\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u76ee\u6807\u5668\u6700\u5927\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u76ee\u6807\u5668\u6700\u5927\u5bf9\u8c61\u6570</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u8fd8\u6ca1\u6709\u4efb\u4f55\u5e94\u7528\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u5e94\u7528\u6807\u8bb0\u5230\u4e86\u4e0a\u9650</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>\u4e00\u4e2a\u5b58\u50a8\u6c60\u6700\u591a\u80fd\u6709\u56db\u4e2a\u5e94\u7528\u6807\u8bb0\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u53ef\u7528\u7684\u5b57\u7b26\u4e3a\u201c_a-zA-Z0-9\u201d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u957f\u5ea6\u9650\u5236\u4e3a 128 \u4e2a\u5b57\u7b26</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u6dfb\u52a0\u5e94\u7528\u6807\u8bb0\u6216\u6839\u636e\u5176\u8fdb\u884c\u7b5b\u9009</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u6dfb\u52a0\u5e94\u7528\u6807\u8bb0</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u526f\u672c\u4e2a\u6570</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u6700\u540e\u4fee\u6539\u65f6\u95f4</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u7ea0\u5220\u7801\u914d\u7f6e</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>CRUSH \u89c4\u5219\u96c6</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u5199\u5b57\u8282\u6570</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u5df2\u66f4\u65b0\u5bf9\u8c61\u7f51\u5173\u5b58\u50a8\u6876\u201c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201d\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>\u5df2\u521b\u5efa\u5bf9\u8c61\u7f51\u5173\u5b58\u50a8\u6876\u201c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u5b58\u50a8\u6876</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u5b58\u50a8\u6876</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>\u5df2\u66f4\u65b0\u5bf9\u8c61\u7f51\u5173\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201d\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>\u5df2\u521b\u5efa\u5bf9\u8c61\u7f51\u5173\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u4f5c\u7528\u8303\u56f4</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8bfb\u6743\u9650</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>\u65b0\u5efa\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\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>\u66f4\u65b0\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u7cfb\u7edf\u89d2\u8272</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>\u5df2\u5220\u9664\u89d2\u8272\u201c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u201d\n        </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>\u5df2\u65b0\u5efa\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u66f4\u65b0\u7528\u6237</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7ee7\u7eed</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>\u60a8\u88ab\u81ea\u52a8\u767b\u51fa\uff0c\u56e0\u4e3a\u60a8\u7684\u89d2\u8272\u6709\u4e86\u53d8\u52a8\u3002</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>\u5df2\u66f4\u65b0\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\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>\u5df2\u5220\u9664\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\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>\u5220\u9664\u7528\u6237\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\u5931\u8d25\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>\u60a8\u5f53\u524d\u5728\u7528\u201c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u201d\u7684\u8eab\u4efd\u767b\u5f55\u3002\n        </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> \u5404\u5bf9\u8c61\u90fd\u88ab\u5206\u5272\u4e3a\u6570\u636e\u5757\uff0c\u5206\u522b\u5b58\u50a8\u4e8e\u4e0d\u540c OSD \u3002</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>\u8ba1\u7b97\u5404\u5bf9\u8c61\u7684\u7f16\u7801\u5757\u3001\u5e76\u5b58\u50a8\u4e8e\u4e0d\u540c OSD \u3002\n\u7f16\u7801\u5757\u7684\u6570\u91cf\u7b49\u540c\u4e8e\u5728\u4e0d\u4e22\u6570\u636e\u7684\u524d\u63d0\u4e0b\u5141\u8bb8\u540c\u65f6\u5931\u6548\u7684 OSD \u6570\u91cf\u3002</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 \u63d2\u4ef6\u662f\u6700\u901a\u7528\u3001\u6700\u7075\u6d3b\u7684\u63d2\u4ef6\uff0c\n\u4e5f\u662f Ceph \u7ea0\u5220\u7801\u5b58\u50a8\u6c60\u7684\u9ed8\u8ba4\u63d2\u4ef6\u3002</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 \u6280\u672f\u66f4\u7075\u6d3b\uff1a\u5b83\u8db3\u4ee5\u8bbe\u7f6e k \u548c m \u503c\u3002 \ncauchy_good \u6280\u672f\u66f4\u5feb\uff0c\u4f46\u4f60\u5f97\u8c28\u614e\u5730\u9009\u62e9 packetsize \u503c\u3002\nreed_sol_r6_op \u3001 liberation \u3001 blaum_roth \u3001 liber8tion \u90fd\u662f\u4e0e RAID6 \u7b49\u4ef7\u7684\u6280\u672f\uff0c\n\u5b83\u4eec\u53ea\u80fd\u914d\u7f6e\u4e3a m=2 \u3002</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> \u4ee5 bytes \u5927\u5c0f\u7684\u5305\u4e3a\u5355\u4f4d\u8fdb\u884c\u7f16\u7801\u3002\n\u786e\u5b9a\u5408\u9002\u7684\u5305\u5c3a\u5bf8\u5f88\u96be\uff0c \njerasure \u6587\u6863\u5bf9\u6b64\u6709\u5f88\u8be6\u7ec6\u7684\u63cf\u8ff0\u3002</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>\u7528 jerasure \u63d2\u4ef6\u65f6\uff0c\u7ea0\u5220\u7801\u7f16\u7801\u7684\u5bf9\u8c61\u5b58\u50a8\u5728\u591a\u4e2a OSD \u4e0a\uff0c\n\u4e22\u5931\u4e00\u4e2a OSD \u7684\u6062\u590d\u8fc7\u7a0b\u9700\u8bfb\u53d6\u6240\u6709\u5176\u4ed6\u7684 OSD \u3002\n\u6bd4\u5982 jerasure \u7684\u914d\u7f6e\u4e3a k=8 \u4e14 m=4 \uff0c\u4e22\u5931\u4e00\u4e2a OSD \u540e\u9700\u8bfb\u53d6\u5176\u4ed6 11 \u4e2a OSD \u624d\u80fd\u6062\u590d\u3002\n\nlrc \u7ea0\u5220\u7801\u63d2\u4ef6\u521b\u5efa\u7684\u662f\u5c40\u90e8\u6821\u9a8c\u5757\uff0c\u8fd9\u6837\u53ea\u9700\u8f83\u5c11\u7684 OSD \u5373\u53ef\u6062\u590d\u3002\n\u6bd4\u5982 lrc \u7684\u914d\u7f6e\u4e3a k=8 \u3001 m=4 \u4e14 l=4 \uff0c\u5b83\u5c06\u4e3a\u6bcf\u56db\u4e2a OSD \u521b\u5efa\u989d\u5916\u7684\u6821\u9a8c\u5757\uff0c\n\u5f53\u4e00\u4e2a OSD \u4e22\u5931\u65f6\uff0c\u5b83\u53ea\u9700\u56db\u4e2a OSD \u5373\u53ef\u6062\u590d\uff0c\u800c\u4e0d\u9700\u8981\u5341\u4e00\u4e2a\u3002</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>\u628a\u7f16\u7801\u5757\u548c\u6570\u636e\u5757\u5206\u7ec4\u4e3a\u5927\u5c0f\u4e3a locality \u7684\u96c6\u5408\u3002\n\u6bd4\u5982\uff0c k=4 \u4e14 m=2 \u65f6\uff0c\u82e5\u8bbe\u7f6e locality=3 \uff0c\u5c06\u4f1a\u5206\u7ec4\u4e3a\u5927\u5c0f\u4e3a\u4e09\u7684\u4e24\u7ec4\uff0c\n\u8fd9\u6837\u5404\u7ec4\u90fd\u80fd\u81ea\u884c\u6062\u590d\uff0c\u65e0\u9700\u4ece\u53e6\u4e00\u7ec4\u8bfb\u6570\u636e\u5757\u3002</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>\u7531 l \u5b9a\u4e49\u7684\u5757\u96c6\u5408\u5c06\u6309\u54ea\u79cd crush \u6876\u7c7b\u578b\u5b58\u50a8\u3002\n\u6bd4\u5982\uff0c\u82e5\u8bbe\u7f6e\u4e3a rack \uff0c\u5927\u5c0f\u4e3a l \u5757\u7684\u5404\u7ec4\u5c06\u88ab\u5b58\u5165\u4e0d\u540c\u7684\u673a\u67b6\uff0c\n\u6b64\u503c\u4f1a\u88ab\u7528\u4e8e\u521b\u5efa\u7c7b\u4f3c step choose rack \u7684\u89c4\u5219\u96c6\u3002\n\u5982\u679c\u6ca1\u8bbe\u7f6e\uff0c\u5c31\u4e0d\u4f1a\u8fd9\u6837\u5206\u7ec4\u3002</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 \u63d2\u4ef6\u5c01\u88c5\u4e86 ISA \u5e93\u3002\u5b83\u53ea\u80fd\u8fd0\u884c\u5728 Intel \u5904\u7406\u5668\u4e0a\u3002</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 \u63d2\u4ef6\u5305\u542b\u4e24\u79cd Reed Solomon \u7f16\u7801\u5f62\u5f0f\u3002\n\u8bbe\u7f6e\u4e3a reed_sol_van \u8868\u793a\u7528 Vandermonde \u7b97\u6cd5\uff0c\u8bbe\u7f6e\u4e3a cauchy \u8868\u793a\u7528 Cauchy \u7b97\u6cd5\u3002</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 \u63d2\u4ef6\u5c01\u88c5\u4e86 multiple SHEC \u5e93\u3002\n\u4e0e Reed Solomon \u7f16\u7801\u76f8\u6bd4\uff0c\u5b83\u80fd\u4f7f Ceph \u66f4\u9ad8\u6548\u5730\u6062\u590d\u6570\u636e\u3002</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> \u5947\u5076\u6821\u9a8c\u5757\u6570\u91cf\uff0c\u5b83\u4eec\u5728\u5404\u81ea\u7684\u8ba1\u7b97\u8303\u56f4\u5185\u5305\u542b\u4e86\u5404\u6570\u636e\u5757\u3002\n\u6b64\u6570\u503c\u88ab\u7528\u4f5c\u6301\u4e45\u6027\u4f30\u503c\u3002\n\u4f8b\u5982\uff0c\u5047\u8bbe c=2 \uff0c\u5c31\u662f\u8bf4\u4e0d\u4e1f\u6570\u636e\u7684\u60c5\u51b5\u4e0b\u53ef\u635f\u5931 2 \u4e2a OSD \u3002</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>\u89c4\u5219\u96c6\u7b2c\u4e00\u6b65\u6240\u6307\u5411\u7684 CRUSH \u6876\u4e4b\u540d\uff0c\n\u5982 step take default \u3002</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>\u786e\u4fdd\u4e24\u4e2a\u7f16\u7801\u5757\u4e0d\u4f1a\u5b58\u5728\u4e8e\u540c\u4e00\u6545\u969c\u57df\u7684\u6876\u91cc\u9762\u3002\n\u6bd4\u5982\uff0c\u5047\u8bbe\u6545\u969c\u57df\u662f host \uff0c\u5c31\u4e0d\u4f1a\u6709\u4e24\u4e2a\u7f16\u7801\u5757\u5b58\u50a8\u5230\u540c\u4e00\u4e3b\u673a\uff1b\n\u6b64\u503c\u7528\u4e8e\u5728\u89c4\u5219\u96c6\u4e2d\u521b\u5efa\u7c7b\u4f3c step chooseleaf host \u7684\u6b65\u9aa4\u3002</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>\u4f7f\u7528 CRUSH \u7d22\u5f15\u4e2d\u7684 crush \u8bbe\u5907\u7c7b\u540d\uff0c\n\u5c06\u5f52\u7f6e\u9650\u5236\u4e8e\u7279\u5b9a\u7c7b\u7684\u8bbe\u5907\uff08\u4f8b\u5982\uff0cssd \u6216 hdd\uff09\u3002</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>\u8bbe\u7f6e\u7ea0\u5220\u7801\u63d2\u4ef6\u6240\u5728\u76ee\u5f55\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u5141\u8bb8\u6240\u6709\u64cd\u4f5c</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>\u53ea\u5141\u8bb8\u4e0d\u4fee\u6539\u670d\u52a1\u5668\u7aef\u6570\u636e\u7684\u64cd\u4f5c</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>\u7981\u6b62\u8bfb\u5199\uff0c\u4f46\u662f\u5141\u8bb8\u5176\u4ed6\u7684\u64cd\u4f5c</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>\u7981\u6b62\u8bfb\u3001\u5199\u4ee5\u53ca\u4efb\u4f55\u53ef\u80fd\u4fee\u6539\u6587\u4ef6\u5185\u5bb9\u7684\u64cd\u4f5c</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u5b8c\u5168\u7981\u6b62\u8bbf\u95ee</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u9009\u62e9\u4f18\u5148\u7ea7 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u8fc7\u53bb 5 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u8fc7\u53bb 15 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u8fc7\u53bb 30 \u5206\u949f</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u8fc7\u53bb 1 \u5c0f\u65f6\uff08\u9ed8\u8ba4\uff09</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u8fc7\u53bb 3 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u8fc7\u53bb 6 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u8fc7\u53bb 12 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u8fc7\u53bb 24 \u5c0f\u65f6</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u5929</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u4eca\u5929\u5230\u73b0\u5728\u4e3a\u6b62</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u524d\u5929</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u8fc7\u53bb 2 \u5929</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u4e0a\u5468\u7684\u4eca\u5929</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u4e0a\u4e2a\u661f\u671f</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u672c\u5468</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u672c\u5468\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u8fc7\u53bb 7 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u4e0a\u4e2a\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u5f53\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u672c\u6708\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u8fc7\u53bb 30 \u5929</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u8fc7\u53bb 90 \u5929</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u8fc7\u53bb 6 \u4e2a\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u8fc7\u53bb 1 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u53bb\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u4ee5\u6765</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u8fc7\u53bb 2 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u8fc7\u53bb 5 \u5e74</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u4fe1\u606f</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u65e0\u9009\u4e2d\u9879\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u53d6\u6d88\u9009\u62e9</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u8fbe\u5230\u9009\u62e9\u9879\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u8fc7\u6ee4\u6807\u7b7e</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u6dfb\u52a0 badge</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u65e0\u53ef\u9009\u9879\u76ee\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u662f</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u5426</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u670d\u52a1\u8d28\u91cf (QoS)</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2 IO \u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8bfb BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5185\u8bfb\u53d6\u7684\u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8bfb IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u8bfb\u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u5199 BPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5185\u5199\u5165\u7684\u5b57\u8282\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u5199 IOPS \u4e0a\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u6307\u5b9a\u7684\u6bcf\u79d2\u5199\u64cd\u4f5c\u6b21\u6570\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u6307\u5b9a\u7684 IO \u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u6307\u5b9a\u7684 IO \u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8bfb BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u6307\u5b9a\u7684\u8bfb\u53d6\u7684\u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8bfb IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u6307\u5b9a\u7684\u8bfb\u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u5199 BPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u6307\u5b9a\u7684\u5199\u5165\u7684\u5b57\u8282\u6570\u7a81\u53d1\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u5199 IOPS \u7a81\u53d1</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u6307\u5b9a\u7684\u5199\u64cd\u4f5c\u6b21\u6570\u7a81\u53d1\u4e0a\u9650\u3002</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\u5931\u8d25\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\u6b63\u5728\u6267\u884c</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u6267\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u6267\u884c\u5b8c\u6bd5</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u672a\u77e5\u4efb\u52a1</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u6b63\u5728\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u521b\u5efa</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u6b63\u5728\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u66f4\u65b0\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u6b63\u5728\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u5220\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u5220\u9664\u5b8c\u6210</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\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\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 \u5feb\u7167\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\n        </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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u7684\u955c\u50cf\u6a21\u5f0f\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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u7684\u955c\u50cf\u540c\u4f34\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u4f7f\u7528\u3002\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u4f7f\u7528\u3002\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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u4f7f\u7528\u3002\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}}"/>\u5305\u542b\u6709\u5feb\u7167\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u6b63\u5728\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u514b\u9686</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u514b\u9686\u5b8c\u6210</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>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u7684\u5feb\u7167\u5fc5\u987b\u5904\u4e8e\u53d7\u4fdd\u62a4\u72b6\u6001\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u6b63\u5728\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u590d\u5236</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u590d\u5236\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u6b63\u5728\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u5c55\u5f00</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u5c55\u5f00\u5b8c\u6210</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>\u8be5\u540d\u79f0\u5df2\u88ab\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u4f7f\u7528\u3002\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>\u65e0\u6cd5\u53bb\u6389\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u7684\u4fdd\u62a4\u72b6\u6001\uff0c\u56e0\u4e3a\u5b83\u6709\u5b50\u6620\u50cf\u3002\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>\u65e0\u6cd5\u5220\u9664\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\uff0c\u56e0\u4e3a\u5b83\u5904\u4e8e\u53d7\u4fdd\u62a4\u72b6\u6001\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u6b63\u5728\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u56de\u6eda</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u56de\u6eda\u5b8c\u6210</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u6b63\u5728\u628a</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u628a</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u5df2\u7ecf\u628a</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>\u6620\u50cf\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u79fb\u81f3\u56de\u6536\u7ad9\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u65e0\u6cd5\u627e\u5230\u6620\u50cf\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u6b63\u5728\u628a</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u628a</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5df2\u7ecf\u628a</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>\u6620\u50cf\u4ece\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u6062\u590d\u5230\u201c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u201d\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>\u6620\u50cf\u540d\u79f0\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\u5df2\u88ab\u4f7f\u7528\u3002\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>\u6620\u50cf\u201c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u201d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6b63\u5728\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u5df2\u6e05\u9664</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u6240\u6709\u5b58\u50a8\u6c60</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\u91cc\u7684\u6620\u50cf\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>\u56e0\u4e3a\u5305\u542b\u540c\u4f34\u96c6\u7fa4\uff0c\u65e0\u6cd5\u7981\u7528\u955c\u50cf\u529f\u80fd</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>\u5b58\u50a8\u6c60\u201c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u201d\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>\u7ea0\u5220\u7801\u914d\u7f6e\u201c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u201d\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>\u76ee\u6807\u5668\u201c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u201d\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>'},fELs:function(t,e,n){"use strict";var a=n("RDha");function r(t,e){return a.where(t,function(t){return t.position===e})}function i(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_})}t.exports={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,o=0;o<i;++o)n.hasOwnProperty(a=r[o])&&(e[a]=n[a])},update:function(t,e,n){if(t){var o=a.options.toPadding((t.options.layout||{}).padding),s=o.left,u=o.right,l=o.top,c=o.bottom,d=r(t.boxes,"left"),f=r(t.boxes,"right"),p=r(t.boxes,"top"),h=r(t.boxes,"bottom"),g=r(t.boxes,"chartArea");i(d,!0),i(f,!1),i(p,!0),i(h,!1);var m=e-s-u,b=n-l-c,y=(e-m/2)/(d.length+f.length),v=(n-b/2)/(p.length+h.length),_=m,x=b,T=[];a.each(d.concat(f,p,h),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?m:_,v),x-=e.height):(e=t.update(y,x),_-=e.width),T.push({horizontal:n,minSize:e,box:t})});var w=0,S=0,O=0,C=0;a.each(p.concat(h),function(t){if(t.getPadding){var e=t.getPadding();w=Math.max(w,e.left),S=Math.max(S,e.right)}}),a.each(d.concat(f),function(t){if(t.getPadding){var e=t.getPadding();O=Math.max(O,e.top),C=Math.max(C,e.bottom)}});var k=s,I=u,D=l,R=c;a.each(d.concat(f),j),a.each(d,function(t){k+=t.width}),a.each(f,function(t){I+=t.width}),a.each(p.concat(h),j),a.each(p,function(t){D+=t.height}),a.each(h,function(t){R+=t.height}),a.each(d.concat(f),function(t){var e=a.findNextWhere(T,function(e){return e.box===t});e&&t.update(e.minSize.width,x,{left:0,right:0,top:D,bottom:R})}),k=s,I=u,D=l,R=c,a.each(d,function(t){k+=t.width}),a.each(f,function(t){I+=t.width}),a.each(p,function(t){D+=t.height}),a.each(h,function(t){R+=t.height});var N=Math.max(w-k,0);k+=N,I+=Math.max(S-I,0);var A=Math.max(O-D,0);D+=A,R+=Math.max(C-R,0);var E=n-D-R,L=e-k-I;L===_&&E===x||(a.each(d,function(t){t.height=E}),a.each(f,function(t){t.height=E}),a.each(p,function(t){t.fullWidth||(t.width=L)}),a.each(h,function(t){t.fullWidth||(t.width=L)}),x=E,_=L);var P=s+N,M=l+A;a.each(d.concat(p),q),P+=_,M+=x,a.each(f,q),a.each(h,q),t.chartArea={left:k,top:D,right:k+_,bottom:D+x},a.each(g,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 j(t){var e=a.findNextWhere(T,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(k,w),right:Math.max(I,S),top:0,bottom:0};t.update(t.fullWidth?m:_,b/2,n)}else t.update(e.minSize.width,x)}function q(t){t.isHorizontal()?(t.left=t.fullWidth?s:k,t.right=t.fullWidth?e-u:k+_,t.top=M,t.bottom=M+t.height,M=t.bottom):(t.left=P,t.right=P+t.width,t.top=D,t.bottom=D+x,P=t.right)}}}},fhFe:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.DataTablePagerComponent=function(){function t(){this.change=new i.EventEmitter,this._count=0,this._page=1,this._size=0}return Object.defineProperty(t.prototype,"size",{get:function(){return this._size},set:function(t){this._size=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"page",{get:function(){return this._page},set:function(t){this._page=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalPages",{get:function(){var t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)},enumerable:!0,configurable:!0}),t.prototype.canPrevious=function(){return this.page>1},t.prototype.canNext=function(){return this.page<this.totalPages},t.prototype.prevPage=function(){this.selectPage(this.page-1)},t.prototype.nextPage=function(){this.selectPage(this.page+1)},t.prototype.selectPage=function(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))},t.prototype.calcPages=function(t){var e=[],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(var r=n;r<=a;r++)e.push({number:r,text:r});return e},a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"size",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"page",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"change",void 0),a([i.Component({selector:"datatable-pager",template:'\n    <ul class="pager">\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to first page"\n          href="javascript:void(0)"\n          (click)="selectPage(1)">\n          <i class="{{pagerPreviousIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to previous page"\n          href="javascript:void(0)"\n          (click)="prevPage()">\n          <i class="{{pagerLeftArrowIcon}}"></i>\n        </a>\n      </li>\n      <li\n        role="button"\n        [attr.aria-label]="\'page \' + pg.number"\n        class="pages"\n        *ngFor="let pg of pages"\n        [class.active]="pg.number === page">\n        <a\n          href="javascript:void(0)"\n          (click)="selectPage(pg.number)">\n          {{pg.text}}\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to next page"\n          href="javascript:void(0)"\n          (click)="nextPage()">\n          <i class="{{pagerRightArrowIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to last page"\n          href="javascript:void(0)"\n          (click)="selectPage(totalPages)">\n          <i class="{{pagerNextIcon}}"></i>\n        </a>\n      </li>\n    </ul>\n  ',host:{class:"datatable-pager"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},fktO:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("Ahxa")),a(n("fhFe")),a(n("lUjN")),a(n("vxfy"))},fzPg:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".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:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}})}()},g8vO:function(t,e,n){"use strict";var a=n("RDha");t.exports={formatters:{values:function(t){return a.isArray(t)?t:""+t},linear:function(t,e,n){var r=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(r)>1&&t!==Math.floor(t)&&(r=t-Math.floor(t));var i=a.log10(Math.abs(r)),o="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=a.log10(Math.abs(t));o=t.toExponential(Math.floor(s)-Math.floor(i))}else{var u=-1*Math.floor(i);u=Math.max(Math.min(u,20),0),o=t.toFixed(u)}else o="0";return o},logarithmic:function(t,e,n){var r=t/Math.pow(10,Math.floor(a.log10(t)));return 0===t?"0":1===r||2===r||5===r||0===e||e===n.length-1?t.toExponential():""}}}},gI3B:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("6blF"),r=n("T1DM"),i=n("/21U"),o=n("nkY7");function s(t,e,n){void 0===t&&(t=0);var s=-1;return Object(i.a)(e)?s=Number(e)<1?1:Number(e):Object(o.a)(e)&&(n=e),Object(o.a)(n)||(n=r.a),new a.a(function(e){var a=Object(i.a)(t)?t:+t-n.now();return n.schedule(u,a,{index:0,period:s,subscriber:e})})}function u(t){var e=t.index,n=t.period,a=t.subscriber;if(a.next(e),!a.closed){if(-1===n)return a.complete();t.index=e+1,this.schedule(t,n)}}},gIcY:function(t,e,n){"use strict";n.d(e,"B",function(){return Ct}),n.d(e,"D",function(){return Ot}),n.d(e,"C",function(){return S}),n.d(e,"E",function(){return k}),n.d(e,"F",function(){return bt}),n.d(e,"G",function(){return F}),n.d(e,"c",function(){return v}),n.d(e,"d",function(){return c}),n.d(e,"p",function(){return y}),n.d(e,"b",function(){return _}),n.d(e,"e",function(){return x}),n.d(e,"q",function(){return C}),n.d(e,"r",function(){return et}),n.d(e,"s",function(){return nt}),n.d(e,"t",function(){return dt}),n.d(e,"u",function(){return mt}),n.d(e,"w",function(){return I}),n.d(e,"j",function(){return Tt}),n.d(e,"l",function(){return yt}),n.d(e,"g",function(){return _t}),n.d(e,"m",function(){return vt}),n.d(e,"v",function(){return M}),n.d(e,"z",function(){return P}),n.d(e,"y",function(){return wt}),n.d(e,"h",function(){return St}),n.d(e,"a",function(){return ot}),n.d(e,"f",function(){return lt}),n.d(e,"i",function(){return st}),n.d(e,"k",function(){return ut}),n.d(e,"o",function(){return f}),n.d(e,"A",function(){return h}),n.d(e,"n",function(){return kt}),n.d(e,"x",function(){return It});var a=n("mrSG"),r=n("CcnG"),i=n("VNr4"),o=n("0/uQ"),s=n("67Y/"),u=n("ZYjt"),l=function(){function t(){}return Object.defineProperty(t.prototype,"value",{get:function(){return this.control?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valid",{get:function(){return this.control?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"invalid",{get:function(){return this.control?this.control.invalid:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pending",{get:function(){return this.control?this.control.pending:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return this.control?this.control.disabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.control?this.control.enabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"errors",{get:function(){return this.control?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pristine",{get:function(){return this.control?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dirty",{get:function(){return this.control?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"touched",{get:function(){return this.control?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"status",{get:function(){return this.control?this.control.status:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"untouched",{get:function(){return this.control?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"statusChanges",{get:function(){return this.control?this.control.statusChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valueChanges",{get:function(){return this.control?this.control.valueChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),t.prototype.reset=function(t){void 0===t&&(t=void 0),this.control&&this.control.reset(t)},t.prototype.hasError=function(t,e){return!!this.control&&this.control.hasError(t,e)},t.prototype.getError=function(t,e){return this.control?this.control.getError(t,e):null},t}(),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),e}(l);function d(t){return null==t||0===t.length}var f=new r.InjectionToken("NgValidators"),p=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[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])?)*$/,h=function(){function t(){}return t.min=function(t){return function(e){if(d(e.value)||d(t))return null;var n=parseFloat(e.value);return!isNaN(n)&&n<t?{min:{min:t,actual:e.value}}:null}},t.max=function(t){return function(e){if(d(e.value)||d(t))return null;var n=parseFloat(e.value);return!isNaN(n)&&n>t?{max:{max:t,actual:e.value}}:null}},t.required=function(t){return d(t.value)?{required:!0}:null},t.requiredTrue=function(t){return!0===t.value?null:{required:!0}},t.email=function(t){return d(t.value)?null:p.test(t.value)?null:{email:!0}},t.minLength=function(t){return function(e){if(d(e.value))return null;var n=e.value?e.value.length:0;return n<t?{minlength:{requiredLength:t,actualLength:n}}:null}},t.maxLength=function(t){return function(e){var n=e.value?e.value.length:0;return n>t?{maxlength:{requiredLength:t,actualLength:n}}:null}},t.pattern=function(e){return e?("string"==typeof e?(a="","^"!==e.charAt(0)&&(a+="^"),a+=e,"$"!==e.charAt(e.length-1)&&(a+="$"),n=new RegExp(a)):(a=e.toString(),n=e),function(t){if(d(t.value))return null;var e=t.value;return n.test(e)?null:{pattern:{requiredPattern:a,actualValue:e}}}):t.nullValidator;var n,a},t.nullValidator=function(t){return null},t.compose=function(t){if(!t)return null;var e=t.filter(g);return 0==e.length?null:function(t){return b(function(t,n){return e.map(function(e){return e(t)})}(t))}},t.composeAsync=function(t){if(!t)return null;var e=t.filter(g);return 0==e.length?null:function(t){var n=function(t,n){return e.map(function(e){return e(t)})}(t).map(m);return Object(i.a)(n).pipe(Object(s.a)(b))}},t}();function g(t){return null!=t}function m(t){var e=Object(r["\u0275isPromise"])(t)?Object(o.a)(t):t;if(!Object(r["\u0275isObservable"])(e))throw new Error("Expected validator to return Promise or Observable.");return e}function b(t){var e=t.reduce(function(t,e){return null!=e?Object(a.__assign)({},t,e):t},{});return 0===Object.keys(e).length?null:e}var y=new r.InjectionToken("NgValueAccessor"),v=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}(),_=new r.InjectionToken("CompositionEventMode"),x=function(){function t(t,e,n){var a;this._renderer=t,this._elementRef=e,this._compositionMode=n,this.onChange=function(t){},this.onTouched=function(){},this._composing=!1,null==this._compositionMode&&(this._compositionMode=(a=Object(u["\u0275getDOM"])()?Object(u["\u0275getDOM"])().getUserAgent():"",!/android (\d+)/.test(a.toLowerCase())))}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._handleInput=function(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)},t.prototype._compositionStart=function(){this._composing=!0},t.prototype._compositionEnd=function(t){this._composing=!1,this._compositionMode&&this.onChange(t)},t}();function T(t){return t.validate?function(e){return t.validate(e)}:t}function w(t){return t.validate?function(e){return t.validate(e)}:t}var S=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)},t.prototype.registerOnChange=function(t){this.onChange=function(e){t(""==e?null:parseFloat(e))}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}();function O(){throw new Error("unimplemented")}var C=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._parent=null,e.name=null,e.valueAccessor=null,e._rawValidators=[],e._rawAsyncValidators=[],e}return Object(a.__extends)(e,t),Object.defineProperty(e.prototype,"validator",{get:function(){return O()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return O()},enumerable:!0,configurable:!0}),e}(l),k=function(){function t(){this._accessors=[]}return t.prototype.add=function(t,e){this._accessors.push([t,e])},t.prototype.remove=function(t){for(var e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)},t.prototype.select=function(t){var e=this;this._accessors.forEach(function(n){e._isSameGroup(n,t)&&n[1]!==t&&n[1].fireUncheck(t.value)})},t.prototype._isSameGroup=function(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name},t}(),I=function(){function t(t,e,n,a){this._renderer=t,this._elementRef=e,this._registry=n,this._injector=a,this.onChange=function(){},this.onTouched=function(){}}return t.prototype.ngOnInit=function(){this._control=this._injector.get(C),this._checkName(),this._registry.add(this._control,this)},t.prototype.ngOnDestroy=function(){this._registry.remove(this)},t.prototype.writeValue=function(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)},t.prototype.registerOnChange=function(t){var e=this;this._fn=t,this.onChange=function(){t(e.value),e._registry.select(e)}},t.prototype.fireUncheck=function(t){this.writeValue(t)},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},t.prototype._throwNameError=function(){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    ')},t}(),D=function(){function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.writeValue=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(t))},t.prototype.registerOnChange=function(t){this.onChange=function(e){t(""==e?null:parseFloat(e))}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t}(),R='\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    });',N='\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    });',A='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>',E=function(){function t(){}return t.controlParentException=function(){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      "+R)},t.ngModelGroupException=function(){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        '+N+"\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        "+A)},t.missingFormException=function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+R)},t.groupParentException=function(){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      "+N)},t.arrayParentException=function(){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    });')},t.disabledAttrWarning=function(){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    ")},t.ngModelWarning=function(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    ")},t}();function L(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object"),(t+": "+e).slice(0,50))}var P=function(){function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=function(t){},this.onTouched=function(){},this._compareWith=r["\u0275looseIdentical"]}return Object.defineProperty(t.prototype,"compareWith",{set:function(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){this.value=t;var e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=L(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)},t.prototype.registerOnChange=function(t){var e=this;this.onChange=function(n){e.value=e._getOptionValue(n),t(e.value)}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._registerOption=function(){return(this._idCounter++).toString()},t.prototype._getOptionId=function(t){var e,n;try{for(var r=Object(a.__values)(Array.from(this._optionMap.keys())),i=r.next();!i.done;i=r.next()){var o=i.value;if(this._compareWith(this._optionMap.get(o),t))return o}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},t.prototype._getOptionValue=function(t){var e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e):t},t}(),M=function(){function t(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(t.prototype,"ngValue",{set:function(t){null!=this._select&&(this._select._optionMap.set(this.id,t),this._setElementValue(L(this.id,t)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this._setElementValue(t),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),t.prototype._setElementValue=function(t){this._renderer.setProperty(this._element.nativeElement,"value",t)},t.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},t}();function j(t,e){return null==t?""+e:("string"==typeof e&&(e="'"+e+"'"),e&&"object"==typeof e&&(e="Object"),(t+": "+e).slice(0,50))}var q=function(){function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new Map,this._idCounter=0,this.onChange=function(t){},this.onTouched=function(){},this._compareWith=r["\u0275looseIdentical"]}return Object.defineProperty(t.prototype,"compareWith",{set:function(t){if("function"!=typeof t)throw new Error("compareWith must be a function, but received "+JSON.stringify(t));this._compareWith=t},enumerable:!0,configurable:!0}),t.prototype.writeValue=function(t){var e,n=this;if(this.value=t,Array.isArray(t)){var a=t.map(function(t){return n._getOptionId(t)});e=function(t,e){t._setSelected(a.indexOf(e.toString())>-1)}}else e=function(t,e){t._setSelected(!1)};this._optionMap.forEach(e)},t.prototype.registerOnChange=function(t){var e=this;this.onChange=function(n){var a=[];if(n.hasOwnProperty("selectedOptions"))for(var r=n.selectedOptions,i=0;i<r.length;i++){var o=r.item(i),s=e._getOptionValue(o.value);a.push(s)}else for(r=n.options,i=0;i<r.length;i++)(o=r.item(i)).selected&&(s=e._getOptionValue(o.value),a.push(s));e.value=a,t(a)}},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)},t.prototype._registerOption=function(t){var e=(this._idCounter++).toString();return this._optionMap.set(e,t),e},t.prototype._getOptionId=function(t){var e,n;try{for(var r=Object(a.__values)(Array.from(this._optionMap.keys())),i=r.next();!i.done;i=r.next()){var o=i.value;if(this._compareWith(this._optionMap.get(o)._value,t))return o}}catch(s){e={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}return null},t.prototype._getOptionValue=function(t){var e=function(t){return t.split(":")[0]}(t);return this._optionMap.has(e)?this._optionMap.get(e)._value:t},t}(),F=function(){function t(t,e,n){this._element=t,this._renderer=e,this._select=n,this._select&&(this.id=this._select._registerOption(this))}return Object.defineProperty(t.prototype,"ngValue",{set:function(t){null!=this._select&&(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"value",{set:function(t){this._select?(this._value=t,this._setElementValue(j(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)},enumerable:!0,configurable:!0}),t.prototype._setElementValue=function(t){this._renderer.setProperty(this._element.nativeElement,"value",t)},t.prototype._setSelected=function(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)},t.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},t}();function z(t,e){return Object(a.__spread)(e.path,[t])}function Y(t,e){t||B(e,"Cannot find control with"),e.valueAccessor||B(e,"No value accessor for form control with"),t.validator=h.compose([t.validator,e.validator]),t.asyncValidator=h.composeAsync([t.asyncValidator,e.asyncValidator]),e.valueAccessor.writeValue(t.value),function(t,e){e.valueAccessor.registerOnChange(function(n){t._pendingValue=n,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&H(t,e)})}(t,e),function(t,e){t.registerOnChange(function(t,n){e.valueAccessor.writeValue(t),n&&e.viewToModelUpdate(t)})}(t,e),function(t,e){e.valueAccessor.registerOnTouched(function(){t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&H(t,e),"submit"!==t.updateOn&&t.markAsTouched()})}(t,e),e.valueAccessor.setDisabledState&&t.registerOnDisabledChange(function(t){e.valueAccessor.setDisabledState(t)}),e._rawValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(function(){return t.updateValueAndValidity()})}),e._rawAsyncValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(function(){return t.updateValueAndValidity()})})}function H(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function G(t,e){null==t&&B(e,"Cannot find control with"),t.validator=h.compose([t.validator,e.validator]),t.asyncValidator=h.composeAsync([t.asyncValidator,e.asyncValidator])}function V(t){return B(t,"There is no FormControl instance attached to form control element with")}function B(t,e){var 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?h.compose(t.map(T)):null}function W(t){return null!=t?h.composeAsync(t.map(w)):null}function K(t,e){if(!t.hasOwnProperty("model"))return!1;var n=t.model;return!!n.isFirstChange()||!Object(r["\u0275looseIdentical"])(e,n.currentValue)}var $=[v,D,S,P,q,I];function Z(t,e){t._syncPendingControls(),e.forEach(function(t){var e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)})}function X(t,e){if(!e)return null;Array.isArray(e)||B(t,"Value accessor was not provided as an array for form control with");var n=void 0,a=void 0,r=void 0;return e.forEach(function(e){var i;e.constructor===x?n=e:(i=e,$.some(function(t){return i.constructor===t})?(a&&B(t,"More than one built-in value accessor matches form control with"),a=e):(r&&B(t,"More than one custom value accessor matches form control with"),r=e))}),r||a||n||(B(t,"No valid value accessor for form control with"),null)}function J(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(a.__extends)(e,t),e.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(e.prototype,"control",{get:function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._asyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){},e}(c),tt=function(){function t(t){this._cd=t}return Object.defineProperty(t.prototype,"ngClassUntouched",{get:function(){return!!this._cd.control&&this._cd.control.untouched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassTouched",{get:function(){return!!this._cd.control&&this._cd.control.touched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassPristine",{get:function(){return!!this._cd.control&&this._cd.control.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassDirty",{get:function(){return!!this._cd.control&&this._cd.control.dirty},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassValid",{get:function(){return!!this._cd.control&&this._cd.control.valid},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassInvalid",{get:function(){return!!this._cd.control&&this._cd.control.invalid},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"ngClassPending",{get:function(){return!!this._cd.control&&this._cd.control.pending},enumerable:!0,configurable:!0}),t}(),et=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),e}(tt),nt=function(t){function e(e){return t.call(this,e)||this}return Object(a.__extends)(e,t),e}(tt);function at(t){var e=it(t)?t.validators:t;return Array.isArray(e)?U(e):e||null}function rt(t,e){var n=it(e)?e.asyncValidators:t;return Array.isArray(n)?W(n):n||null}function it(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}var ot=function(){function t(t,e){this.validator=t,this.asyncValidator=e,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"valid",{get:function(){return"VALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"invalid",{get:function(){return"INVALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pending",{get:function(){return"PENDING"==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabled",{get:function(){return"DISABLED"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return"DISABLED"!==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"untouched",{get:function(){return!this.touched},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"updateOn",{get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"},enumerable:!0,configurable:!0}),t.prototype.setValidators=function(t){this.validator=at(t)},t.prototype.setAsyncValidators=function(t){this.asyncValidator=rt(t)},t.prototype.clearValidators=function(){this.validator=null},t.prototype.clearAsyncValidators=function(){this.asyncValidator=null},t.prototype.markAsTouched=function(t){void 0===t&&(t={}),this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)},t.prototype.markAsUntouched=function(t){void 0===t&&(t={}),this.touched=!1,this._pendingTouched=!1,this._forEachChild(function(t){t.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)},t.prototype.markAsDirty=function(t){void 0===t&&(t={}),this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)},t.prototype.markAsPristine=function(t){void 0===t&&(t={}),this.pristine=!0,this._pendingDirty=!1,this._forEachChild(function(t){t.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)},t.prototype.markAsPending=function(t){void 0===t&&(t={}),this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)},t.prototype.disable=function(t){void 0===t&&(t={}),this.status="DISABLED",this.errors=null,this._forEachChild(function(e){e.disable(Object(a.__assign)({},t,{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(t),this._onDisabledChange.forEach(function(t){return t(!0)})},t.prototype.enable=function(t){void 0===t&&(t={}),this.status="VALID",this._forEachChild(function(e){e.enable(Object(a.__assign)({},t,{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(t),this._onDisabledChange.forEach(function(t){return t(!1)})},t.prototype._updateAncestors=function(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),this._parent._updatePristine(),this._parent._updateTouched())},t.prototype.setParent=function(t){this._parent=t},t.prototype.updateValueAndValidity=function(t){void 0===t&&(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)},t.prototype._updateTreeValidity=function(t){void 0===t&&(t={emitEvent:!0}),this._forEachChild(function(e){return e._updateTreeValidity(t)}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})},t.prototype._setInitialStatus=function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"},t.prototype._runValidator=function(){return this.validator?this.validator(this):null},t.prototype._runAsyncValidator=function(t){var e=this;if(this.asyncValidator){this.status="PENDING";var n=m(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(function(n){return e.setErrors(n,{emitEvent:t})})}},t.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},t.prototype.setErrors=function(t,e){void 0===e&&(e={}),this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)},t.prototype.get=function(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(function(t,e){return t instanceof ut?t.controls.hasOwnProperty(e)?t.controls[e]:null:t instanceof lt&&t.at(e)||null},t))}(this,t)},t.prototype.getError=function(t,e){var n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null},t.prototype.hasError=function(t,e){return!!this.getError(t,e)},Object.defineProperty(t.prototype,"root",{get:function(){for(var t=this;t._parent;)t=t._parent;return t},enumerable:!0,configurable:!0}),t.prototype._updateControlsErrors=function(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)},t.prototype._initObservables=function(){this.valueChanges=new r.EventEmitter,this.statusChanges=new r.EventEmitter},t.prototype._calculateStatus=function(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"},t.prototype._anyControlsHaveStatus=function(t){return this._anyControls(function(e){return e.status===t})},t.prototype._anyControlsDirty=function(){return this._anyControls(function(t){return t.dirty})},t.prototype._anyControlsTouched=function(){return this._anyControls(function(t){return t.touched})},t.prototype._updatePristine=function(t){void 0===t&&(t={}),this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)},t.prototype._updateTouched=function(t){void 0===t&&(t={}),this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)},t.prototype._isBoxedValue=function(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t},t.prototype._registerOnCollectionChange=function(t){this._onCollectionChange=t},t.prototype._setUpdateStrategy=function(t){it(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)},t}(),st=function(t){function e(e,n,a){void 0===e&&(e=null);var r=t.call(this,at(n),rt(a,n))||this;return r._onChange=[],r._applyFormState(e),r._setUpdateStrategy(n),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r._initObservables(),r}return Object(a.__extends)(e,t),e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this.value=this._pendingValue=t,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(function(t){return t(n.value,!1!==e.emitViewToModelChange)}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){void 0===e&&(e={}),this.setValue(t,e)},e.prototype.reset=function(t,e){void 0===t&&(t=null),void 0===e&&(e={}),this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1},e.prototype._updateValue=function(){},e.prototype._anyControls=function(t){return!1},e.prototype._allControlsDisabled=function(){return this.disabled},e.prototype.registerOnChange=function(t){this._onChange.push(t)},e.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},e.prototype.registerOnDisabledChange=function(t){this._onDisabledChange.push(t)},e.prototype._forEachChild=function(t){},e.prototype._syncPendingControls=function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))},e.prototype._applyFormState=function(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},e}(ot),ut=function(t){function e(e,n,a){var r=t.call(this,at(n),rt(a,n))||this;return r.controls=e,r._initObservables(),r._setUpdateStrategy(n),r._setUpControls(),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r}return Object(a.__extends)(e,t),e.prototype.registerControl=function(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)},e.prototype.addControl=function(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.removeControl=function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.setControl=function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.contains=function(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled},e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this._checkAllValuesPresent(t),Object.keys(t).forEach(function(a){n._throwIfControlMissing(a),n.controls[a].setValue(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){var n=this;void 0===e&&(e={}),Object.keys(t).forEach(function(a){n.controls[a]&&n.controls[a].patchValue(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.reset=function(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this._forEachChild(function(n,a){n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e),this._updatePristine(e),this._updateTouched(e)},e.prototype.getRawValue=function(){return this._reduceChildren({},function(t,e,n){return t[n]=e instanceof st?e.value:e.getRawValue(),t})},e.prototype._syncPendingControls=function(){var t=this._reduceChildren(!1,function(t,e){return!!e._syncPendingControls()||t});return t&&this.updateValueAndValidity({onlySelf:!0}),t},e.prototype._throwIfControlMissing=function(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+".")},e.prototype._forEachChild=function(t){var e=this;Object.keys(this.controls).forEach(function(n){return t(e.controls[n],n)})},e.prototype._setUpControls=function(){var t=this;this._forEachChild(function(e){e.setParent(t),e._registerOnCollectionChange(t._onCollectionChange)})},e.prototype._updateValue=function(){this.value=this._reduceValue()},e.prototype._anyControls=function(t){var e=this,n=!1;return this._forEachChild(function(a,r){n=n||e.contains(r)&&t(a)}),n},e.prototype._reduceValue=function(){var t=this;return this._reduceChildren({},function(e,n,a){return(n.enabled||t.disabled)&&(e[a]=n.value),e})},e.prototype._reduceChildren=function(t,e){var n=t;return this._forEachChild(function(t,a){n=e(n,t,a)}),n},e.prototype._allControlsDisabled=function(){var t,e;try{for(var n=Object(a.__values)(Object.keys(this.controls)),r=n.next();!r.done;r=n.next())if(this.controls[r.value].enabled)return!1}catch(i){t={error:i}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}return Object.keys(this.controls).length>0||this.disabled},e.prototype._checkAllValuesPresent=function(t){this._forEachChild(function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control with name: '"+n+"'.")})},e}(ot),lt=function(t){function e(e,n,a){var r=t.call(this,at(n),rt(a,n))||this;return r.controls=e,r._initObservables(),r._setUpdateStrategy(n),r._setUpControls(),r.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),r}return Object(a.__extends)(e,t),e.prototype.at=function(t){return this.controls[t]},e.prototype.push=function(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()},e.prototype.insert=function(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()},e.prototype.removeAt=function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),this.controls.splice(t,1),this.updateValueAndValidity()},e.prototype.setControl=function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange(function(){}),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(e.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),e.prototype.setValue=function(t,e){var n=this;void 0===e&&(e={}),this._checkAllValuesPresent(t),t.forEach(function(t,a){n._throwIfControlMissing(a),n.at(a).setValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.patchValue=function(t,e){var n=this;void 0===e&&(e={}),t.forEach(function(t,a){n.at(a)&&n.at(a).patchValue(t,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)},e.prototype.reset=function(t,e){void 0===t&&(t=[]),void 0===e&&(e={}),this._forEachChild(function(n,a){n.reset(t[a],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e),this._updatePristine(e),this._updateTouched(e)},e.prototype.getRawValue=function(){return this.controls.map(function(t){return t instanceof st?t.value:t.getRawValue()})},e.prototype._syncPendingControls=function(){var t=this.controls.reduce(function(t,e){return!!e._syncPendingControls()||t},!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t},e.prototype._throwIfControlMissing=function(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)},e.prototype._forEachChild=function(t){this.controls.forEach(function(e,n){t(e,n)})},e.prototype._updateValue=function(){var t=this;this.value=this.controls.filter(function(e){return e.enabled||t.disabled}).map(function(t){return t.value})},e.prototype._anyControls=function(t){return this.controls.some(function(e){return e.enabled&&t(e)})},e.prototype._setUpControls=function(){var t=this;this._forEachChild(function(e){return t._registerControl(e)})},e.prototype._checkAllValuesPresent=function(t){this._forEachChild(function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control at index: "+n+".")})},e.prototype._allControlsDisabled=function(){var t,e;try{for(var n=Object(a.__values)(this.controls),r=n.next();!r.done;r=n.next())if(r.value.enabled)return!1}catch(i){t={error:i}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}return this.controls.length>0||this.disabled},e.prototype._registerControl=function(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)},e}(ot),ct=Promise.resolve(null),dt=function(t){function e(e,n){var a=t.call(this)||this;return a.submitted=!1,a._directives=[],a.ngSubmit=new r.EventEmitter,a.form=new ut({},U(e),W(n)),a}return Object(a.__extends)(e,t),e.prototype.ngAfterViewInit=function(){this._setUpdateStrategy()},Object.defineProperty(e.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),e.prototype.addControl=function(t){var e=this;ct.then(function(){var n=e._findContainer(t.path);t.control=n.registerControl(t.name,t.control),Y(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),e._directives.push(t)})},e.prototype.getControl=function(t){return this.form.get(t.path)},e.prototype.removeControl=function(t){var e=this;ct.then(function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name),J(e._directives,t)})},e.prototype.addFormGroup=function(t){var e=this;ct.then(function(){var n=e._findContainer(t.path),a=new ut({});G(a,t),n.registerControl(t.name,a),a.updateValueAndValidity({emitEvent:!1})})},e.prototype.removeFormGroup=function(t){var e=this;ct.then(function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name)})},e.prototype.getFormGroup=function(t){return this.form.get(t.path)},e.prototype.updateModel=function(t,e){var n=this;ct.then(function(){n.form.get(t.path).setValue(e)})},e.prototype.setValue=function(t){this.control.setValue(t)},e.prototype.onSubmit=function(t){return this.submitted=!0,Z(this.form,this._directives),this.ngSubmit.emit(t),!1},e.prototype.onReset=function(){this.resetForm()},e.prototype.resetForm=function(t){void 0===t&&(t=void 0),this.form.reset(t),this.submitted=!1},e.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)},e.prototype._findContainer=function(t){return t.pop(),t.length?this.form.get(t):this.form},e}(c),ft=function(){function t(){}return t.modelParentException=function(){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      '+R+'\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  ')},t.formGroupNameException=function(){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      "+N+"\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      "+A)},t.missingNameException=function(){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}">')},t.modelGroupParentException=function(){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      "+N+"\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      "+A)},t.ngFormWarning=function(){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    ")},t}(),pt=new r.InjectionToken("NgFormSelectorWarning"),ht=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}var n;return Object(a.__extends)(e,t),n=e,e.prototype._checkParentType=function(){this._parent instanceof n||this._parent instanceof dt||ft.modelGroupParentException()},e}(Q),gt=Promise.resolve(null),mt=function(t){function e(e,n,a,i){var o=t.call(this)||this;return o.control=new st,o._registered=!1,o.update=new r.EventEmitter,o._parent=e,o._rawValidators=n||[],o._rawAsyncValidators=a||[],o.valueAccessor=X(o,i),o}return Object(a.__extends)(e,t),e.prototype.ngOnChanges=function(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)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(e.prototype,"path",{get:function(){return this._parent?z(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),e.prototype.viewToModelUpdate=function(t){this.viewModel=t,this.update.emit(t)},e.prototype._setUpControl=function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},e.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)},e.prototype._isStandalone=function(){return!this._parent||!(!this.options||!this.options.standalone)},e.prototype._setUpStandalone=function(){Y(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})},e.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},e.prototype._checkParentType=function(){!(this._parent instanceof ht)&&this._parent instanceof Q?ft.formGroupNameException():this._parent instanceof ht||this._parent instanceof dt||ft.modelParentException()},e.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ft.missingNameException()},e.prototype._updateValue=function(t){var e=this;gt.then(function(){e.control.setValue(t,{emitViewToModelChange:!1})})},e.prototype._updateDisabled=function(t){var e=this,n=t.isDisabled.currentValue,a=""===n||n&&"false"!==n;gt.then(function(){a&&!e.control.disabled?e.control.disable():!a&&e.control.disabled&&e.control.enable()})},e}(C),bt=new r.InjectionToken("NgModelWithFormControlWarning"),yt=function(t){function e(e,n){var a=t.call(this)||this;return a._validators=e,a._asyncValidators=n,a.submitted=!1,a.directives=[],a.form=null,a.ngSubmit=new r.EventEmitter,a}return Object(a.__extends)(e,t),e.prototype.ngOnChanges=function(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())},Object.defineProperty(e.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),e.prototype.addControl=function(t){var e=this.form.get(t.path);return Y(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e},e.prototype.getControl=function(t){return this.form.get(t.path)},e.prototype.removeControl=function(t){J(this.directives,t)},e.prototype.addFormGroup=function(t){var e=this.form.get(t.path);G(e,t),e.updateValueAndValidity({emitEvent:!1})},e.prototype.removeFormGroup=function(t){},e.prototype.getFormGroup=function(t){return this.form.get(t.path)},e.prototype.addFormArray=function(t){var e=this.form.get(t.path);G(e,t),e.updateValueAndValidity({emitEvent:!1})},e.prototype.removeFormArray=function(t){},e.prototype.getFormArray=function(t){return this.form.get(t.path)},e.prototype.updateModel=function(t,e){this.form.get(t.path).setValue(e)},e.prototype.onSubmit=function(t){return this.submitted=!0,Z(this.form,this.directives),this.ngSubmit.emit(t),!1},e.prototype.onReset=function(){this.resetForm()},e.prototype.resetForm=function(t){void 0===t&&(t=void 0),this.form.reset(t),this.submitted=!1},e.prototype._updateDomValue=function(){var t=this;this.directives.forEach(function(e){var n=t.form.get(e.path);e.control!==n&&(function(t,e){e.valueAccessor.registerOnChange(function(){return V(e)}),e.valueAccessor.registerOnTouched(function(){return V(e)}),e._rawValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),e._rawAsyncValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)}),t&&t._clearChangeFns()}(e.control,e),n&&Y(n,e),e.control=n)}),this.form._updateTreeValidity({emitEvent:!1})},e.prototype._updateRegistrations=function(){var t=this;this.form._registerOnCollectionChange(function(){return t._updateDomValue()}),this._oldForm&&this._oldForm._registerOnCollectionChange(function(){}),this._oldForm=this.form},e.prototype._updateValidators=function(){var t=U(this._validators);this.form.validator=h.compose([this.form.validator,t]);var e=W(this._asyncValidators);this.form.asyncValidator=h.composeAsync([this.form.asyncValidator,e])},e.prototype._checkFormPresent=function(){this.form||E.missingFormException()},e}(c),vt=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}return Object(a.__extends)(e,t),e.prototype._checkParentType=function(){xt(this._parent)&&E.groupParentException()},e}(Q),_t=function(t){function e(e,n,a){var r=t.call(this)||this;return r._parent=e,r._validators=n,r._asyncValidators=a,r}return Object(a.__extends)(e,t),e.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormArray(this)},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormArray(this)},Object.defineProperty(e.prototype,"control",{get:function(){return this.formDirective.getFormArray(this)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._asyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){xt(this._parent)&&E.arrayParentException()},e}(c);function xt(t){return!(t instanceof vt||t instanceof yt||t instanceof _t)}var Tt=function(t){function e(e,n,a,i,o){var s=t.call(this)||this;return s._ngModelWarningConfig=o,s._added=!1,s.update=new r.EventEmitter,s._ngModelWarningSent=!1,s._parent=e,s._rawValidators=n||[],s._rawAsyncValidators=a||[],s.valueAccessor=X(s,i),s}var n;return Object(a.__extends)(e,t),n=e,Object.defineProperty(e.prototype,"isDisabled",{set:function(t){E.disabledAttrWarning()},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(t){var e,a;this._added||this._setUpControl(),K(t,this.viewModel)&&("formControlName",e=n,this,a=this._ngModelWarningConfig,Object(r.isDevMode)()&&"never"!==a&&((null!==a&&"once"!==a||e._ngModelWarningSentOnce)&&("always"!==a||this._ngModelWarningSent)||(E.ngModelWarning("formControlName"),e._ngModelWarningSentOnce=!0,this._ngModelWarningSent=!0)),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},e.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},e.prototype.viewToModelUpdate=function(t){this.viewModel=t,this.update.emit(t)},Object.defineProperty(e.prototype,"path",{get:function(){return z(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"validator",{get:function(){return U(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"asyncValidator",{get:function(){return W(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),e.prototype._checkParentType=function(){!(this._parent instanceof vt)&&this._parent instanceof Q?E.ngModelGroupException():this._parent instanceof vt||this._parent instanceof yt||this._parent instanceof _t||E.controlParentException()},e.prototype._setUpControl=function(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0},e._ngModelWarningSentOnce=!1,e}(C),wt=function(){function t(){}return Object.defineProperty(t.prototype,"required",{get:function(){return this._required},set:function(t){this._required=null!=t&&!1!==t&&""+t!="false",this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),t.prototype.validate=function(t){return this.required?h.required(t):null},t.prototype.registerOnValidatorChange=function(t){this._onChange=t},t}(),St=function(){function t(){}return t.prototype.group=function(t,e){void 0===e&&(e=null);var n=this._reduceControls(t),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 ut(n,{asyncValidators:r,updateOn:i,validators:a})},t.prototype.control=function(t,e,n){return new st(t,e,n)},t.prototype.array=function(t,e,n){var a=this,r=t.map(function(t){return a._createControl(t)});return new lt(r,e,n)},t.prototype._reduceControls=function(t){var e=this,n={};return Object.keys(t).forEach(function(a){n[a]=e._createControl(t[a])}),n},t.prototype._createControl=function(t){return t instanceof st||t instanceof ut||t instanceof lt?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)},t}(),Ot=function(){return function(){}}(),Ct=function(){return function(){}}(),kt=function(){function t(){}var e;return e=t,t.withConfig=function(t){return{ngModule:e,providers:[{provide:pt,useValue:t.warnOnDeprecatedNgFormSelector}]}},t}(),It=function(){function t(){}var e;return e=t,t.withConfig=function(t){return{ngModule:e,providers:[{provide:bt,useValue:t.warnOnNgModelWithFormControl}]}},t}()},gTqA:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("90cg"),i=n("yRPT"),o=n("HZF8"),s=n("0alx"),u=n("zzsZ"),l=n("m12A"),c=n("e2pG"),d=n("eipH"),f=n("6qA3");e.from=function(t,e){if(!e)return t instanceof a.Observable?t:new a.Observable(f.subscribeTo(t));if(null!=t){if(o.isInteropObservable(t))return d.fromObservable(t,e);if(r.isPromise(t))return l.fromPromise(t,e);if(i.isArrayLike(t))return u.fromArray(t,e);if(s.isIterable(t)||"string"==typeof t)return c.fromIterable(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}},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")}}n("wd/R").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_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_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\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %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}})}()},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),n=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",e[7],e[8],e[9]];function a(t,a,r,i){var o="";switch(r){case"s":return i?"muutaman sekunnin":"muutama sekunti";case"ss":return i?"sekunnin":"sekuntia";case"m":return i?"minuutin":"minuutti";case"mm":o=i?"minuutin":"minuuttia";break;case"h":return i?"tunnin":"tunti";case"hh":o=i?"tunnin":"tuntia";break;case"d":return i?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":o=i?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return i?"kuukauden":"kuukausi";case"MM":o=i?"kuukauden":"kuukautta";break;case"y":return i?"vuoden":"vuosi";case"yy":o=i?"vuoden":"vuotta"}return function(t,a){return t<10?a?n[t]:e[t]:t}(t,i)+" "+o}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_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\xe4n\xe4\xe4n] [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\xe4\xe4st\xe4",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:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};t.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".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:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}})}(n("wd/R"))},gp3X:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R");n("sb0X"),n.d(e,"a",function(){return i}),n.d(e,"b",function(){return s});var i=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-spinner fa-spin fa-fw"]],null,null,null,null,null))],null,null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"button",[["class","btn btn-sm btn-primary 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["\u0275ncd"](null,0),(t()(),a["\u0275and"](16777216,null,null,1,null,o)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,3,0,e.component.loading)},function(t,e){var n=e.component;t(e,0,0,n.type,n.loading||n.disabled)})}},"h+PQ":function(t,e,n){"use strict";function a(){return""}function r(t,e){if(null==t)return"";if(!t||null==e)return t;var n=t[e];return null==n?"":n}function i(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];return null==n?"":n}function o(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];if(void 0!==n)return n;n=t;var a=e.split(".");if(a.length)for(var r=0;r<a.length;r++)if(null==(n=n[a[r]]))return"";return n}Object.defineProperty(e,"__esModule",{value:!0}),e.emptyStringGetter=a,e.getterForProp=function(t){return null==t?a:"number"==typeof t?r:-1!==t.indexOf(".")?o:i},e.numericIndexGetter=r,e.shallowValueGetter=i,e.deepValueGetter=o},h6KF:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("qwkt"),r=n("h+PQ");function i(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}e.nextSortDir=function(t,e){return t===a.SortType.single?e===a.SortDirection.asc?a.SortDirection.desc:a.SortDirection.asc:e?e===a.SortDirection.asc?a.SortDirection.desc:void 0:a.SortDirection.asc},e.orderByComparator=i,e.sortRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return t.slice();var o=new Map;t.forEach(function(t,e){return o.set(t,e)});var s=t.slice(),u=e.reduce(function(t,e){return e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t},{}),l=n.map(function(t){var e=t.prop;return{prop:e,dir:t.dir,valueGetter:r.getterForProp(e),compareFn:u[e]||i}});return s.sort(function(t,e){for(var n=0,r=l;n<r.length;n++){var i=r[n],s=i.prop,u=i.valueGetter,c=u(t,s),d=u(e,s),f=i.dir!==a.SortDirection.desc?i.compareFn(c,d,t,e,i.dir):-i.compareFn(c,d,t,e,i.dir);if(0!==f)return f}return o.has(t)&&o.has(e)?o.get(t)<o.get(e)?-1:1:0})}},h9Dq:function(t,e,n){"use strict";var a=n("mrSG"),r=function(t){function e(e,n){return t.call(this)||this}return a.__extends(e,t),e.prototype.schedule=function(t,e){return void 0===e&&(e=0),this},e}(n("pugT").a);n.d(e,"a",function(){return i});var i=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a.pending=!1,a}return a.__extends(e,t),e.prototype.schedule=function(t,e){if(void 0===e&&(e=0),this.closed)return this;this.state=t;var 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},e.prototype.requestAsyncId=function(t,e,n){return void 0===n&&(n=0),setInterval(t.flush.bind(t,this),n)},e.prototype.recycleAsyncId=function(t,e,n){if(void 0===n&&(n=0),null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)},e.prototype.execute=function(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},e.prototype._execute=function(t,e){var 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},e.prototype._unsubscribe=function(){var 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},e}(r)},hHou:function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Avvisi</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>Recupero dati\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> per\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>"/>. Attendere...\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>Visualizzazione dei dati memorizzati in precedenza nella cache\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/>\n  per \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>Impossibile caricare i dati\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> per\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  Verificare lo stato del cluster.\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="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>Consultare la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> su come\n  configurare e abilitare la funzionalit\xe0 di monitoraggio.\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>Il dashboard di Grafana non esiste. Consultare la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> su come\n  aggiungere dashboard a 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Non \xe8 stato possibile caricare i dati.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Impostazioni</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 \xe8 necessario modificare questi parametri rispetto ai valori di default.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annulla</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Questo campo \xe8 obbligatorio.</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="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Un IQN contiene la notazione seguente \'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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Gateway richiesti: almeno \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/>.\n        </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="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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\xc8 richiesta almeno 1 immagine.</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Utente</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Password</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="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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nome</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Invia</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>Si \xe8 sicuri di voler \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> l\'elemento \n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/> selezionato?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>S\xec.</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="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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n    su come configurare e abilitare la funzionalit\xe0 di gestione delle destinazioni iSCSI.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' e \'@\' non sono consentiti.</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="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="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="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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Dimensioni</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="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\xc8 necessario aumentare le dimensioni.</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="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanzate...</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Dimensioni oggetto</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit\xe0 di striping</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- Selezionare l\'unit\xe0 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 \xe8 obbligatorio perch\xe9 \xe8 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\xe0 di striping \xe8 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 \xe8 obbligatorio perch\xe9 \xe8 specificata l\'unit\xe0 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="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Cestino</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="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Modifica</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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Servizi</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="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>Il valore immesso \xe8 troppo alto. Non deve essere maggiore di \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>Il valore immesso \xe8 troppo basso. Non deve essere minore di \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Elenco degli host</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="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 \xe8 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>Il valore immesso \xe8 troppo alto. Deve essere minore o uguale a \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>Il valore immesso \xe8 troppo basso. Deve essere maggiore o uguale a \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="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="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorit\xe0 di recupero OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe0</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personalizza valori di priorit\xe0</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>Questo campo \xe8 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>Il valore immesso \xe8 troppo alto. Non deve essere maggiore di \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>Il valore immesso \xe8 troppo basso. Non deve essere minore di \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ripesa OSD</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>Pulitura degli \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>OSD\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Si sta per eseguire una \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>pulitura\n            dell\'OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> viene contrassegnato\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>"/> se si procede.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>Non \xe8 sicuro eliminare definitivamente l\'OSD.</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> viene\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>"/> se si procede.\n        </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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  su come configurare e abilitare la funzionalit\xe0 di gestione di NFS Ganesha.\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\xf2 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\xf9 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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Esportazione NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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="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="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\xf2 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\xf2 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>Accesso alternativo per montaggi \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>"/> (non deve contenere una / iniziale).\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\xf2 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, \xe8 possibile esportare pi\xf9 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>La posizione che occupa l\'esportazione \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>"/>\n                nello \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>"/> (deve essere univoca).\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, \xe8 possibile esportare pi\xf9 volte lo stesso percorso.</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="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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Il nome pu\xf2 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 \xe8 gi\xe0 in uso.</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\xe0 (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\xe0 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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Aggiungi</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="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 \xe8 gi\xe0 in uso.</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="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>\xc8 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\xf2 gestire questo numero eccessivo di gruppi di posizionamento. Ricalcolare il numero di gruppi di posizionamento necessari.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\xc8 possibile aumentare il numero dei gruppi di posizionamento solo di un pool esistente.\n               Attualmente il pool contiene \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> gruppi di posizionamento.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Sono state calcolate le impostazioni dei gruppi di posizionamento attuali;\n                    prima di inviare, assicurarsi che i valori soddisfino le proprie esigenze.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Selezionare una regola Crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Non \xe8 possibile utilizzare la regola nel cluster attuale perch\xe9 il numero degli\n                OSD che contiene \xe8 troppo basso e non soddisfa il numero minimo di OSD richiesto da questa regola.</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>Minime: \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>Massime: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Le dimensioni specificate non sono comprese nell\'intervallo. L\'intervallo valido \xe8 da\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="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="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="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\xe0</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="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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Non \xe8 possibile creare un pool RBD con una \'/\' nel nome.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Modificare il nome o rimuovere \'rbd\' dall\'elenco delle applicazioni.</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="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>Consultare la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentazione\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  su come configurare e abilitare la funzionalit\xe0 di gestione di Object Gateway.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Impossibile caricare i dati del 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>Il valore non \xe8 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 \xe8 gi\xe0 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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Elenco dei daemon</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Chiave S3</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="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 \xe8 gi\xe0 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 \xe8 gi\xe0 in uso.</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="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>Non \xe8 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 \xe8 gi\xe0 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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Sospeso</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Non esistono sottoutenti.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Chiavi</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Mostra</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Capacit\xe0</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>Non esistono capacit\xe0.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Abilitato</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota compartimenti</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="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="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>Tornale alla \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Pagina di login\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Si viene disconnessi dal Provider di identit\xe0\n quando si riprova a eseguire il login.\n        </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="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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Ruoli</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 \xe8 pi\xf9 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="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 \xe8 consentito visualizzare ci\xf2 che si stava cercando.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Spiacenti, impossibile trovare ci\xf2 che si stava cercando</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Rimuovi tutto</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifiche recenti</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Non esistono task in background.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Task in background</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>Connesso come\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Disconnetti</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Dettagli sulle prestazioni</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="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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistema</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</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="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="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Globale</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>Pool</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\xe0 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 \xe8 0</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="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>Istogramma non disponibile: \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="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\xf2 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\xe0 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\xe0 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\xe0 di base</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="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\xe0</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>"/> Vedere \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>Log\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> per ulteriori informazioni.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Per spostare \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> nel cestino,\n          fare clic su \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Sposta immagine\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Facoltativamente, \xe8 possibile selezionare una data di scadenza.\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 \xe8 gi\xe0 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="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="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>Disponibile solo per le immagini RDB con \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>"/> abilitata\n        </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="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\xe0 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="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="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 \xe8 il valore globale. Nessun valore di opzione \xe8 stato impostato per questa immagine.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROTETTO</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="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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Per eliminare definitivamente, selezionare una o tutte le immagini e fare clic su</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Tutto</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>Questa immagine \xe8 protetta fino alle \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="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\xe0 speculare per il pool</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Per modificare la modalit\xe0 speculare per il pool\xa0\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>"/>, selezionare una nuova modalit\xe0 dall\'elenco e fare clic su\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Aggiorna\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>\xc8 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  peer copia speculare del pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> gli attributi peer della\n          copia speculare per il 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>"/> e fare clic su \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Invia\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 \xe8 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 \xe8 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 \xe8 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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Dettagli livelli cache</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Client: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Destinazione</target>\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="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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Stato</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Disabilitato</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Modalit\xe0 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valore</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (richiede la mappa degli oggetti)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Appiattisci</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Crea</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteggi</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Clona</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Rollback snapshot RBD</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Ripristina</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="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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon in standby</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\xc8 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 \xe8 consentito impostare questa opzione tramite \'ceph config\n      set ...\'. \xc8 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>Aggiornata opzione di configurazione \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opzioni aggiornate per il modulo &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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="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 \xe8 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="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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Pulitura approfondita</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>esterno</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>interno</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>in basso</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Eliminazione definitiva</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="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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Contrassegna 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>Contrassegna \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personalizzato</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>Aggiornata la priorit\xe0 della velocit\xe0 di recupero dell\'OSD &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> \xe8 stato inizializzato dall\'OSD seguente: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\xe0</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="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="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 \xe8 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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Esportazione</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>Modalit\xe0 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\xf2 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 \xe8 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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profilo del codice di cancellazione</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Byte scritti</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Aggiornato compartimento Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\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>Creato compartimento Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartimenti</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>Aggiornato utente Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\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>Creato utente Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utenti</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Creato ruolo \'\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>Aggiornato ruolo \'\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>Eliminato ruolo \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </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>Creato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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 \xe8 stati automaticamente disconnessi perch\xe9 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>Aggiornato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Eliminato utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Impossibile eliminare l\'utente &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Si \xe8 attualmente connessi come &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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 \xe8 suddiviso in porzioni di dati, ciascuna delle quali \xe8 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 \xe8 anche il numero degli OSD che \xe8 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 \xe8 il plugin pi\xf9 generico e flessibile,\n          ed \xe8 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\xf9 flessibile \xe8 reed_sol_van: \xe8 sufficiente impostare k\n          ed m. La tecnica cauchy_good pu\xf2 essere pi\xf9 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 \xe8 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          \xc8 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\xf9 OSD, il recupero della perdita di un OSD richiede la lettura di tutti gli altri.\n          Ad esempio, se jerasure \xe8 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\xe0 locali che \xe8 possibile recuperare utilizzando un\n          minor numero di OSD. Ad esempio, se lrc \xe8 configurato con k=8, m=4 e l=4, crea\n          una porzione di parit\xe0 aggiuntiva ogni quattro OSD. Quando si perde un singolo OSD, \xe8 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\xe0 dimensione. Ad esempio,\n          per k=4 e m=2, se localit\xe0=3 vengono creati due gruppi su tre. \xc8 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 \xe8 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 \xe8 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 \xe8 disponibile in due formati Reed Solomon.\n          Se \xe8 impostato reed_sol_van, il formato \xe8 Vandermonde, se \xe8 impostato cauchy, il formato \xe8 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\xf9 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\xe0, ciascuno dei quali include i singoli compartimenti di dati\n          nell\'intervallo di calcolo. Il numero viene utilizzato come strumento di stima della durabilit\xe0. Ad esempio, se c=2,\n          \xe8 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 \xe8 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\xe0 --</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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informazioni</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="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>S\xec</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualit\xe0 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>Non \xe8 stato possibile \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Aggiornato</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>elimina</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="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>Snapshot RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>modalit\xe0 speculare per il 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>peer della copia speculare per il pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Il nome \xe8 gi\xe0 utilizzato da \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>Il nome \xe8 gi\xe0 utilizzato da \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>Il nome \xe8 gi\xe0 utilizzato da \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> contiene snapshot.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clonato</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>La snapshot di \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> deve essere protetta.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copiato</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Appiattito</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>Il nome \xe8 gi\xe0 utilizzato da \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>Impossibile rimuovere la protezione da \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> perch\xe9 contiene immagini figlio.\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>Impossibile eliminare \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> perch\xe9 \xe8 protetto.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Rollback eseguito</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>immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' nel cestino\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Ripristinato</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>immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' in \'\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>Il nome dell\'immagine \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' \xe8 gi\xe0 in uso.\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>immagine \'\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Eliminato 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>Immagini da \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\xe9 contiene un peer.</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>profilo del codice di cancellazione \'\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>destinazione \'\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>'},hKrs:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".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:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}()},honF:function(t,e,n){!function(t){"use strict";var e={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},n={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};t.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".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:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(t){return t.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/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"))},i3PA:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("jvuA")),a(n("UReH"))},iEDd:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".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()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}()},iExv:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t,e,n){return void 0===e&&(e=this.i18n("Yes")),void 0===n&&(n=this.i18n("No")),Boolean(t)?e:n},t}()},iLxQ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=!1,r={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},iM7B:function(t,e,n){"use strict";var a=n("RDha"),r=n("Hg4g"),i=n("q8Fl");t.exports=a.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},i._enabled?i:r)},iYGd:function(t,e,n){"use strict";t.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},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\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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\xf1ana 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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},ihYY: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 o}),n.d(e,"f",function(){return s}),n.d(e,"d",function(){return l}),n.d(e,"h",function(){return d}),n.d(e,"g",function(){return c});var a=function(){return function(){}}(),r=function(){return function(){}}(),i="*";function o(t,e){return void 0===e&&(e=null),{type:2,steps:t,options:e}}function s(t){return{type:6,styles:t,offset:null}}function u(t){Promise.resolve(null).then(t)}var l=function(){function t(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=t+e}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.hasStarted=function(){return this._started},t.prototype.init=function(){},t.prototype.play=function(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0},t.prototype.triggerMicrotask=function(){var t=this;u(function(){return t._onFinish()})},t.prototype._onStart=function(){this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[]},t.prototype.pause=function(){},t.prototype.restart=function(){},t.prototype.finish=function(){this._onFinish()},t.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.reset=function(){},t.prototype.setPosition=function(t){},t.prototype.getPosition=function(){return 0},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),c=function(){function t(t){var e=this;this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;var n=0,a=0,r=0,i=this.players.length;0==i?u(function(){return e._onFinish()}):this.players.forEach(function(t){t.onDone(function(){++n==i&&e._onFinish()}),t.onDestroy(function(){++a==i&&e._onDestroy()}),t.onStart(function(){++r==i&&e._onStart()})}),this.totalTime=this.players.reduce(function(t,e){return Math.max(t,e.totalTime)},0)}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.init=function(){this.players.forEach(function(t){return t.init()})},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype._onStart=function(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[])},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.hasStarted=function(){return this._started},t.prototype.play=function(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(function(t){return t.play()})},t.prototype.pause=function(){this.players.forEach(function(t){return t.pause()})},t.prototype.restart=function(){this.players.forEach(function(t){return t.restart()})},t.prototype.finish=function(){this._onFinish(),this.players.forEach(function(t){return t.finish()})},t.prototype.destroy=function(){this._onDestroy()},t.prototype._onDestroy=function(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(function(t){return t.destroy()}),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.reset=function(){this.players.forEach(function(t){return t.reset()}),this._destroyed=!1,this._finished=!1,this._started=!1},t.prototype.setPosition=function(t){var e=t*this.totalTime;this.players.forEach(function(t){var n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)})},t.prototype.getPosition=function(){var t=0;return this.players.forEach(function(e){var n=e.getPosition();t=Math.min(n,t)}),t},t.prototype.beforeDestroy=function(){this.players.forEach(function(t){t.beforeDestroy&&t.beforeDestroy()})},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),d="!"},insk:function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("+0ag"),n("mSOc"),n("20UP");var a=function(){function t(t,e,n,a,r){this.summaryService=t,this.sanitizer=e,this.settingsService=n,this.cephReleaseNamePipe=a,this.i18n=r,this.grafanaExist=!1,this.mode="&kiosk",this.loading=!0,this.styles={},this.dashboardExist=!0,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"),value:"from=now%2Fd&to=now%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"),value:"from=now%2Fw&to=now%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"),value:"from=now%2FM&to=now%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"),value:"from=now%2Fy&to=now%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"}]}return t.prototype.ngOnInit=function(){var t=this;this.time=this.DEFAULT_TIME,this.styles={one:"grafana_one",two:"grafana_two",three:"grafana_three"};var e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards",setTimeout(function(){e.unsubscribe()},0)}});this.settingsService.ifSettingConfigured("api/grafana/url",function(e){t.grafanaExist=!0,t.loading=!1,t.baseUrl=e+"/d/",t.getFrame()}),this.panelStyle=this.styles[this.grafanaStyle]},t.prototype.getFrame=function(){var t=this;this.settingsService.validateGrafanaDashboardUrl(this.uid).subscribe(function(e){return t.dashboardExist=200===e}),this.url=this.baseUrl+this.uid+"/"+this.grafanaPath+"&refresh=2s"+this.mode+"&"+this.time,this.grafanaSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.url)},t.prototype.onTimepickerChange=function(){this.grafanaExist&&this.getFrame()},t.prototype.reset=function(){this.time=this.DEFAULT_TIME,this.grafanaExist&&this.getFrame()},t.prototype.ngOnChanges=function(){this.grafanaExist&&this.getFrame()},t}()},isby:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=Array.isArray||function(t){return t&&"number"==typeof t.length}},iutN:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("xtZt"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[],[[2,"dropup",null],[2,"dropdown",null],[2,"show",null],[2,"open",null]],null,null,null,null)),a["\u0275ncd"](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 s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-dropdown-container",[["style","display:block;position: absolute;"]],null,null,null,o,i)),a["\u0275did"](1,180224,null,0,r.b,[r.f,a.ChangeDetectorRef,a.Renderer2,a.ElementRef],null,null)],null,null)}var u=a["\u0275ccf"]("bs-dropdown-container",r.b,s,{},{},["*"])},j8L6:function(t,e,n){"use strict";var a=n("CcnG"),r=n("25BL"),i=n("uIqm"),o=n("xbqr"),s=n("9GXa"),u=n("o4+5"),l=n("aXbf"),c=n("Ip0R");n("b5OY"),n("pxLl"),n("Jm/i"),n.d(e,"a",function(){return d}),n.d(e,"b",function(){return g});var d=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function f(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," "," "])),a["\u0275ppd"](1,1)],null,function(t,e){var n=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent,0),e.context.row.value));t(e,0,0,n,e.context.row.unit)})}function p(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275did"](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["\u0275and"](0,[[1,2],["valueTpl",2]],null,0,null,f))],function(t,e){var n=e.component;t(e,1,0,n.counters,n.columns,"flex",!1)},null)}function h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,o.b,o.a)),a["\u0275did"](1,49152,null,0,s.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Performance counters not available"]))],null,null)}function g(t){return a["\u0275vid"](0,[a["\u0275pid"](0,u.a,[l.a]),a["\u0275qud"](671088640,1,{valueTpl:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,p)),a["\u0275did"](3,16384,null,0,c.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["warning",2]],null,0,null,h))],function(t,e){t(e,3,0,e.component.counters,a["\u0275nov"](e,4))},null)}},"jKX/":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=function(){return function(t){void 0===t&&(t=[]);var e=this;["read","create","update","delete"].forEach(function(n){return e[n]=t.includes(n)})}}(),r=function(){return function(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"])}}()},jQh8:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["ko",[["AM","PM"],n,["\uc624\uc804","\uc624\ud6c4"]],n,[["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],n,["\uc77c\uc694\uc77c","\uc6d4\uc694\uc77c","\ud654\uc694\uc77c","\uc218\uc694\uc77c","\ubaa9\uc694\uc77c","\uae08\uc694\uc77c","\ud1a0\uc694\uc77c"],["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"]],n,[["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"],n,n],n,[["BC","AD"],n,["\uae30\uc6d0\uc804","\uc11c\uae30"]],0,[6,0],["yy. M. d.","y. M. d.","y\ub144 M\uc6d4 d\uc77c","y\ub144 M\uc6d4 d\uc77c EEEE"],["a h:mm","a h:mm:ss","a h\uc2dc m\ubd84 s\ucd08 z","a h\uc2dc m\ubd84 s\ucd08 zzzz"],["{1} {0}",n,n,n],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"\u20a9","\ub300\ud55c\ubbfc\uad6d \uc6d0",{AUD:["AU$","$"],JPY:["JP\xa5","\xa5"],RON:[n,"L"],TWD:["NT$"],USD:["US$","$"]},function(t){return 5}]})},jUeY:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".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:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(t,e,n){return t>11?n?"\u03bc\u03bc":"\u039c\u039c":n?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(t){return"\u03bc"===(t+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/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:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] 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?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}})}()},jVdC:function(t,e,n){!function(t){"use strict";var e="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_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\u0119";case"mm":return r+(a(t)?"minuty":"minut");case"h":return e?"godzina":"godzin\u0119";case"hh":return r+(a(t)?"godziny":"godzin");case"MM":return r+(a(t)?"miesi\u0105ce":"miesi\u0119cy");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\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] 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\u0144",dd:"%d dni",M:"miesi\u0105c",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jXIB:function(t,e,n){"use strict";t.exports={},t.exports.filler=n("vpM6"),t.exports.legend=n("AX6q"),t.exports.title=n("mjYD")},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},n={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};t.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".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:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(t){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(t)},meridiem:function(t,e,n){return t<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/[\u06f0-\u06f9]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"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:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},i=function(t){return function(e,n,i,o){var s=a(e),u=r[t][a(e)];return 2===s&&(u=u[n?0:1]),u.replace(/%d/i,e)}},o=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar",{months:o,monthsShort:o,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %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(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(t){return n[t]}).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},jvuA:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("UReH");e.DatatableRowDetailDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandRow=function(t){this.toggle.emit({type:"row",value:t})},t.prototype.expandAllRows=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllRows=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableRowDetailTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-row-detail"})],t)}()},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},n={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};t.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(t){return t.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(t){return n[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u09b0\u09be\u09a4"===e&&t>=4||"\u09a6\u09c1\u09aa\u09c1\u09b0"===e&&t<5||"\u09ac\u09bf\u0995\u09be\u09b2"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u09b0\u09be\u09a4":t<10?"\u09b8\u0995\u09be\u09b2":t<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":t<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(n("wd/R"))},kJI8:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},kOpN:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}()},kQXf:function(t,e,n){"use strict";function a(t){return"string"==typeof t?!/\S/.test(t):Array.isArray(t)?0===t.length:i(t)}function r(t,e){return!i(t)&&t.indexOf(e)>-1}function i(t){return null==t}Object.defineProperty(e,"__esModule",{value:!0}),e.isEmpty=a,e.trim=function(t){return i(t)?"":t.trim()},e.has=function(t,e){return t&&"object"==typeof t&&t.hasOwnProperty(e)},e.isFunction=function(t){return"function"==typeof t},e.get=function(t,e,n){for(var a=t,r=0,o=e.split(".");r<o.length;r++){var s=o[r];if(!a||!Reflect.has(a,s))return n;a=a[s]}return i(a)||a===t?n:a},e.omit=function(t,e){if(!t)return t;var n="string"==typeof e?[e]:e;return Object.keys(t).reduce(function(e,a){return r(n,a)?e:Object.assign(e,((i={})[a]=t[a],i));var i},{})},e.size=function(t){return a(t)?0:t.length},e.once=function(t){var e;return function(){for(var n=[],a=0;a<arguments.length;a++)n[a]=arguments[a];return t&&(e=t.apply(null,n),t=null),e}},e.defaultsDeep=function t(e){for(var n=[],a=1;a<arguments.length;a++)n[a-1]=arguments[a];return[e].concat(n).reduce(function(e,n){return n?(Object.keys(n).forEach(function(a){i(e[a])?e[a]=n[a]:"object"!=typeof e[a]||Array.isArray(e[a])||(e[a]=t(e[a],n[a]))}),e):e},{})},e.includes=r,e.isNil=i},klSw:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("S5bw");function r(t,e,n){var r;return r=t&&"object"==typeof t?t:{bufferSize:t,windowTime:e,refCount:!1,scheduler:n},function(t){return t.lift((s=void 0===(o=(e=r).bufferSize)?Number.POSITIVE_INFINITY:o,l=void 0===(u=e.windowTime)?Number.POSITIVE_INFINITY:u,c=e.refCount,d=e.scheduler,f=0,p=!1,h=!1,function(t){f++,n&&!p||(p=!1,n=new a.a(s,l,d),i=t.subscribe({next:function(t){n.next(t)},error:function(t){p=!0,n.error(t)},complete:function(){h=!0,n.complete()}}));var e=n.subscribe(this);this.add(function(){f--,e.unsubscribe(),i&&!h&&c&&0===f&&(i.unsubscribe(),i=void 0,n=void 0)})}));var e,n,i,o,s,u,l,c,d,f,p,h}}},"kn/O":function(t,e,n){"use strict";n.d(e,"a",function(){return d});var a=n("6blF"),r=n("mtw6"),i=n("QTAa"),o=n("9nlD"),s=n("mSOc"),u=n("VXsX"),l=n("ufoC"),c=n("CcnG"),d=function(){function t(t,e,n,a){this.notificationService=t,this.summaryService=e,this.taskMessageService=n,this.taskManagerService=a}return t.prototype.wrapTaskAroundCall=function(t){var e=this,n=t.task,r=t.call;return new a.a(function(t){r.subscribe(function(t){202===t.status?e._handleExecutingTasks(n):(e.summaryService.refresh(),n.success=!0,e.notificationService.notifyTask(n))},function(e){n.success=!1,n.exception=e.error,t.error(e)},function(){t.complete()})})},t.prototype._handleExecutingTasks=function(t){var e=this;this.notificationService.show(r.a.info,this.taskMessageService.getRunningTitle(t));var n=new i.a(t.name,t.metadata);this.summaryService.addRunningTask(n),this.taskManagerService.subscribe(n.name,n.metadata,function(t){e.notificationService.notifyTask(t)})},t.ngInjectableDef=c.defineInjectable({factory:function(){return new t(c.inject(o.a),c.inject(s.a),c.inject(l.a),c.inject(u.a))},token:t,providedIn:"root"}),t}()},kvvV:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("t/zF").a)},l5ep:function(t,e,n){!function(t){"use strict";n("wd/R").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 \xf4l",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}})}()},lHUG: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 o(t){return t&&t.getTime&&!isNaN(t.getTime())}function s(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function u(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 c(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function d(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function f(t){return void 0===t}function p(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=a(e)),n}n.d(e,"h",function(){return q}),n.d(e,"t",function(){return G}),n.d(e,"w",function(){return B}),n.d(e,"u",function(){return U}),n.d(e,"v",function(){return V}),n.d(e,"j",function(){return Y}),n.d(e,"i",function(){return H}),n.d(e,"l",function(){return z}),n.d(e,"A",function(){return je}),n.d(e,"f",function(){return De}),n.d(e,"k",function(){return ue}),n.d(e,"c",function(){return se}),n.d(e,"n",function(){return Fe}),n.d(e,"p",function(){return ze}),n.d(e,"s",function(){return Ye}),n.d(e,"o",function(){return l}),n.d(e,"r",function(){return o}),n.d(e,"q",function(){return i}),n.d(e,"E",function(){return St}),n.d(e,"D",function(){return Ot}),n.d(e,"d",function(){return Nt}),n.d(e,"F",function(){return Rt}),n.d(e,"a",function(){return nn}),n.d(e,"b",function(){return rn}),n.d(e,"e",function(){return cn}),n.d(e,"g",function(){return dn}),n.d(e,"m",function(){return fn}),n.d(e,"x",function(){return pn}),n.d(e,"y",function(){return hn}),n.d(e,"z",function(){return gn}),n.d(e,"B",function(){return _n}),n.d(e,"C",function(){return xn}),n.d(e,"G",function(){return Tn});var h={},g={date:"day",hour:"hours",minute:"minutes",second:"seconds",millisecond:"milliseconds"};function m(t,e){var n=t.toLowerCase(),a=t;n in g&&(a=g[n]),h[n]=h[n+"s"]=h[e]=a}function b(t){return r(t)?h[t]||h[t.toLowerCase()]:void 0}var y=0,v=1,_=2,x=3,T=4,w=5,S=6,O=7,C=8;function k(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 I={},D={},R=/(\[[^\[]*\])|(\\)?([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 N(t,e,n,a){t&&(D[t]=a),e&&(D[e[0]]=function(){return k(a.apply(null,arguments),e[1],e[2])}),n&&(D[n]=function(e,n){return n.locale.ordinal(a.apply(null,arguments),t)})}function A(t,e,n){var a=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(t),a}function E(t,e,n,a,r,i,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===a&&(a=0),void 0===r&&(r=0),void 0===i&&(i=0),void 0===o&&(o=0);var s=new Date(t,e,n,a,r,i,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}function L(t,e){return void 0===e&&(e=!1),e?t.getUTCHours():t.getHours()}function P(t,e){return void 0===e&&(e=!1),e?t.getUTCMinutes():t.getMinutes()}function M(t,e){return void 0===e&&(e=!1),e?t.getUTCSeconds():t.getSeconds()}function j(t,e){return void 0===e&&(e=!1),e?t.getUTCMilliseconds():t.getMilliseconds()}function q(t,e){return void 0===e&&(e=!1),e?t.getUTCDay():t.getDay()}function F(t,e){return void 0===e&&(e=!1),e?t.getUTCDate():t.getDate()}function z(t,e){return void 0===e&&(e=!1),e?t.getUTCMonth():t.getMonth()}function Y(t,e){return void 0===e&&(e=!1),e?t.getUTCFullYear():t.getFullYear()}function H(t){return E(t.getFullYear(),t.getMonth(),1,t.getHours(),t.getMinutes(),t.getSeconds())}function G(t,e){return t.getDay()===e}function V(t,e){return!(!t||!e)&&B(t,e)&&z(t)===z(e)}function B(t,e){return!(!t||!e)&&Y(t)===Y(e)}function U(t,e){return!(!t||!e)&&B(t,e)&&V(t,e)&&F(t)===F(e)}var W=/\d/,K=/\d\d/,$=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,Q=/\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+/,ot=/Z|[+-]\d\d(?::?\d\d)?/gi,st=/[+-]?\d+(\.\d{1,3})?/,ut=/[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,lt={};function ct(t,e,n){lt[t]=s(e)?e:function(t,a){return t&&n?n:e}}function dt(t,e){return c(lt,t)?lt[t](!1,e):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 pt={};function ht(t,e){var n=r(t)?[t]:t,a=e;if(u(e)&&(a=function(t,n,a){return n[e]=p(t),a}),l(n)&&s(a)){var i=void 0;for(i=0;i<n.length;i++)pt[n[i]]=a}}function gt(t,e){ht(t,function(t,n,a,r){return a._w=a._w||{},e(t,a._w,a,r)})}function mt(t,e,n){return null!=e&&c(pt,t)&&pt[t](e,n._a,n,t),n}function bt(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 yt(t,e){return Y(t,e.isUTC).toString()}function vt(t){return p(t)+(p(t)>68?1900:2e3)}function _t(t){return xt(t)?366:365}function xt(t){return t%4==0&&t%100!=0||t%400==0}function Tt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return 1===n?xt(t+(e-n)/12)?29:28:31-n%7%2}var wt={year:0,month:0,day:0,hour:0,minute:0,seconds:0};function St(t,e){var n=Object.assign({},wt,e),a=t.getFullYear()+(n.year||0),r=t.getMonth()+(n.month||0),i=t.getDate()+(n.day||0);return n.month&&!n.day&&(i=Math.min(i,Tt(a,r))),E(a,r,i,t.getHours()+(n.hour||0),t.getMinutes()+(n.minute||0),t.getSeconds()+(n.seconds||0))}function Ot(t,e){return E(Ct(t.getFullYear(),e.year),Ct(t.getMonth(),e.month),Ct(t.getDate(),e.day),Ct(t.getHours(),e.hour),Ct(t.getMinutes(),e.minute),Ct(t.getSeconds(),e.seconds),Ct(t.getMilliseconds(),e.milliseconds))}function Ct(t,e){return u(e)?e:t}function kt(t,e,n){var a=Math.min(F(t),Tt(Y(t),e));return n?t.setUTCMonth(e,a):t.setMonth(e,a),t}function It(t,e,n){return n?t.setUTCDate(e):t.setDate(e),t}function Dt(t){return new Date(t.getTime())}function Rt(t,e,n){var a,i=Dt(t);switch(e){case"year":kt(i,0,n);case"quarter":case"month":It(i,1,n);case"week":case"isoWeek":case"day":case"date":!function(t,e,n){n?t.setUTCHours(0):t.setHours(0)}(i,0,n);case"hours":!function(t,e,n){n?t.setUTCMinutes(0):t.setMinutes(0)}(i,0,n);case"minutes":!function(t,e,n){n?t.setUTCSeconds(0):t.setSeconds(0)}(i,0,n);case"seconds":!function(t,e,n){n?t.setUTCMilliseconds(0):t.setMilliseconds(0)}(i,0,n)}return"week"===e&&(void 0===(a={isUTC:n})&&(a={}),We(i,0-Xe(i,a.locale,a.isUTC),"day")),"isoWeek"===e&&function(t,e,n){void 0===n&&(n={});var a,i=(void 0===(a=n.locale)&&(a=ue()),r(1)?a.weekdaysParse(1)%7||7:u(1)&&isNaN(1)?null:1);$e(t,Ze(t)%7?i:i-7)}(i),"quarter"===e&&kt(i,3*Math.floor(z(i,n)/3),n),i}function Nt(t,e,n){var a=e;return"date"===a&&(a="day"),function(t,e,n,a){return Ke(t,Ve(1,"milliseconds"),-1,a)}(We(Rt(t,a,n),1,"isoWeek"===a?"week":a,n),0,0,n)}function At(t,e){var n=+Rt(t,"day",e),a=+Rt(t,"year",e);return Math.round((n-a)/864e5)+1}function Et(t,e,n){var a=e-n+7;return-(A(t,0,a).getUTCDay()-e+7)%7+a-1}function Lt(t,e,n,a){var r,i,o=Et(Y(t,a),e,n),s=Math.floor((At(t,a)-o-1)/7)+1;return s<1?r=s+Pt(i=Y(t,a)-1,e,n):s>Pt(Y(t,a),e,n)?(r=s-Pt(Y(t,a),e,n),i=Y(t,a)+1):(i=Y(t,a),r=s),{week:r,year:i}}function Pt(t,e,n){var a=Et(t,e,n),r=Et(t+1,e,n);return(_t(t)-a+r)/7}var Mt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,jt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),qt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ft="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ht={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"},Gt=ut,Vt=ut,Bt=function(){function t(t){t&&this.set(t)}return t.prototype.set=function(t){var e;for(e in t)if(t.hasOwnProperty(e)){var n=t[e];this[s(n)?e:"_"+e]=n}this._config=t},t.prototype.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return s(a)?a.call(null,e,n):a},t.prototype.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])},Object.defineProperty(t.prototype,"invalidDate",{get:function(){return this._invalidDate},set:function(t){this._invalidDate=t},enumerable:!0,configurable:!0}),t.prototype.ordinal=function(t,e){return this._ordinal.replace("%d",t.toString(10))},t.prototype.preparse=function(t){return t},t.prototype.postformat=function(t){return t},t.prototype.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return s(r)?r(t,e,n,a):r.replace(/%d/i,t.toString(10))},t.prototype.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return s(n)?n(e):n.replace(/%s/i,e)},t.prototype.months=function(t,e,n){if(void 0===n&&(n=!1),!t)return l(this._months)?this._months:this._months.standalone;if(l(this._months))return this._months[z(t,n)];var a=(this._months.isFormat||Mt).test(e)?"format":"standalone";return this._months[a][z(t,n)]},t.prototype.monthsShort=function(t,e,n){if(void 0===n&&(n=!1),!t)return l(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;if(l(this._monthsShort))return this._monthsShort[z(t,n)];var a=Mt.test(e)?"format":"standalone";return this._monthsShort[a][z(t,n)]},t.prototype.monthsParse=function(t,e,n){var 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]){var o=this.months(a,"",!0).replace(".",""),s=this.monthsShort(a,"",!0).replace(".","");this._longMonthsParse[i]=new RegExp("^"+o+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+s+"$","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}},t.prototype.monthsRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},t.prototype.monthsShortRegex=function(t){return this._monthsParseExact?(c(this,"_monthsRegex")||this.computeMonthsParse(),t?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Gt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},t.prototype.week=function(t,e){return Lt(t,this._week.dow,this._week.doy,e).week},t.prototype.firstDayOfWeek=function(){return this._week.dow},t.prototype.firstDayOfYear=function(){return this._week.doy},t.prototype.weekdays=function(t,e,n){if(!t)return l(this._weekdays)?this._weekdays:this._weekdays.standalone;if(l(this._weekdays))return this._weekdays[q(t,n)];var a=this._weekdays.isFormat.test(e)?"format":"standalone";return this._weekdays[a][q(t,n)]},t.prototype.weekdaysMin=function(t,e,n){return t?this._weekdaysMin[q(t,n)]:this._weekdaysMin},t.prototype.weekdaysShort=function(t,e,n){return t?this._weekdaysShort[q(t,n)]:this._weekdaysShort},t.prototype.weekdaysParse=function(t,e,n){var 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++){var i=$e(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}},t.prototype.weekdaysRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=ut),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},t.prototype.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},t.prototype.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||this.computeWeekdaysParse(),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ut),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},t.prototype.isPM=function(t){return"p"===t.toLowerCase().charAt(0)},t.prototype.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},t.prototype.formatLongDate=function(t){this._longDateFormat=this._longDateFormat?this._longDateFormat:Ht;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])},t.prototype.handleMonthStrictParse=function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=new Date(2e3,a),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=this._shortMonthsParse.indexOf(o))?r:null:-1!==(r=this._longMonthsParse.indexOf(o))?r:null:"MMM"===e?-1!==(r=this._shortMonthsParse.indexOf(o))?r:-1!==(r=this._longMonthsParse.indexOf(o))?r:null:-1!==(r=this._longMonthsParse.indexOf(o))?r:-1!==(r=this._shortMonthsParse.indexOf(o))?r:null},t.prototype.handleWeekStrictParse=function(t,e,n){var a,r=t.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];var i=void 0;for(i=0;i<7;++i){var o=$e(new Date(Date.UTC(2e3,1)),i,null,!0);this._minWeekdaysParse[i]=this.weekdaysMin(o).toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(o).toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(o,"").toLocaleLowerCase()}}if(l(this._weekdaysParse)&&l(this._shortWeekdaysParse)&&l(this._minWeekdaysParse))return n?"dddd"===e?-1!==(a=this._weekdaysParse.indexOf(r))?a:null:"ddd"===e?-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:null:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:"dddd"===e?-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:"ddd"===e?-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:null:-1!==(a=this._minWeekdaysParse.indexOf(r))?a:-1!==(a=this._weekdaysParse.indexOf(r))?a:-1!==(a=this._shortWeekdaysParse.indexOf(r))?a:null},t.prototype.computeMonthsParse=function(){var t,e,n=[],a=[],r=[];for(e=0;e<12;e++)t=new Date(2e3,e),n.push(this.monthsShort(t,"")),a.push(this.months(t,"")),r.push(this.months(t,"")),r.push(this.monthsShort(t,""));for(n.sort(Ut),a.sort(Ut),r.sort(Ut),e=0;e<12;e++)n[e]=ft(n[e]),a[e]=ft(a[e]);for(e=0;e<24;e++)r[e]=ft(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")},t.prototype.computeWeekdaysParse=function(){var t,e=[],n=[],a=[],r=[];for(t=0;t<7;t++){var i=$e(new Date(Date.UTC(2e3,1)),t,null,!0),o=this.weekdaysMin(i),s=this.weekdaysShort(i),u=this.weekdays(i);e.push(o),n.push(s),a.push(u),r.push(o),r.push(s),r.push(u)}for(e.sort(Ut),n.sort(Ut),a.sort(Ut),r.sort(Ut),t=0;t<7;t++)n[t]=ft(n[t]),a[t]=ft(a[t]),r[t]=ft(r[t]);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+e.join("|")+")","i")},t}();function Ut(t,e){return e.length-t.length}var Wt={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:Ht,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:jt,monthsShort:qt,week:{dow:0,doy:6},weekdays:Ft,weekdaysMin:Yt,weekdaysShort:zt,meridiemParse:/[ap]\.?m?\.?/i};function Kt(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&p(t[a])!==p(e[a]))&&o++;return o+i}function $t(t,e){N(null,[t,t.length,!1],null,e)}function Zt(t,e){return Jt(t,e.locale).toString()}function Xt(t){return Qt(t).toString()}function Jt(t,e,n){return void 0===e&&(e=ue()),Lt(t,e.firstDayOfWeek(),e.firstDayOfYear(),n).year}function Qt(t,e){return Lt(t,1,4,e).year}function te(t,e){N(t,null,null,function(t,n){var a=function(t,e){return void 0===e&&(e={}),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+k(~~(a/60),2)+e+k(~~a%60,2)})}var ee,ne=/([\+\-]|\d\d)/gi,ae={},re={};function ie(t){return t?t.toLowerCase().replace("_","-"):t}function oe(t,e){var n;return t&&(f(e)?n=ue(t):r(t)&&(n=se(t,e)),n&&(ee=n)),ee&&ee._abbr}function se(t,e){if(null===e)return delete ae[t],ee=ue("en"),null;if(e){var n=Wt;if(e.abbr=t,null!=e.parentLocale){if(null==ae[e.parentLocale])return re[e.parentLocale]||(re[e.parentLocale]=[]),re[e.parentLocale].push({name:t,config:e}),null;n=ae[e.parentLocale]._config}return ae[t]=new Bt(function(t,e){var n,a=Object.assign({},t);for(var r in e)c(e,r)&&(d(t[r])&&d(e[r])?(a[r]={},Object.assign(a[r],t[r]),Object.assign(a[r],e[r])):null!=e[r]?a[r]=e[r]:delete a[r]);for(n in t)c(t,n)&&!c(e,n)&&d(t[n])&&(a[n]=Object.assign({},a[n]));return a}(n,e)),re[t]&&re[t].forEach(function(t){se(t.name,t.config)}),oe(t),ae[t]}}function ue(t){return ae.en||(oe("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===p(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),N("w",["ww",2,!1],"wo",function(t,e){return function(t,e,n){return void 0===e&&(e=ue()),e.week(t,void 0)}(t,e.locale).toString(10)}),N("W",["WW",2,!1],"Wo",function(t){return function(t,e){return Lt(t,1,4,void 0).week}(t).toString(10)}),m("week","w"),m("isoWeek","W"),ct("w",J),ct("ww",J,K),ct("W",J),ct("WW",J,K),gt(["w","ww","W","WW"],function(t,e,n,a){return e[a.substr(0,1)]=p(t),n}),N(null,["gg",2,!1],null,function(t,e){return(Jt(t,e.locale)%100).toString()}),N(null,["GG",2,!1],null,function(t){return(Qt(t)%100).toString()}),$t("gggg",Zt),$t("ggggg",Zt),$t("GGGG",Xt),$t("GGGGG",Xt),m("weekYear","gg"),m("isoWeekYear","GG"),ct("G",it),ct("g",it),ct("GG",J,K),ct("gg",J,K),ct("GGGG",nt,Z),ct("gggg",nt,Z),ct("GGGGG",at,X),ct("ggggg",at,X),gt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,a){return e[a.substr(0,2)]=p(t),n}),gt(["gg","GG"],function(t,e,n,a){return e[a]=vt(t),n}),N("Y",null,null,function(t,e){var n=Y(t,e.isUTC);return n<=9999?n.toString(10):"+"+n}),N(null,["YY",2,!1],null,function(t,e){return(Y(t,e.isUTC)%100).toString(10)}),N(null,["YYYY",4,!1],null,yt),N(null,["YYYYY",5,!1],null,yt),N(null,["YYYYYY",6,!0],null,yt),m("year","y"),ct("Y",it),ct("YY",J,K),ct("YYYY",nt,Z),ct("YYYYY",at,X),ct("YYYYYY",at,X),ht(["YYYYY","YYYYYY"],y),ht("YYYY",function(t,e,n){return e[y]=2===t.length?vt(t):p(t),n}),ht("YY",function(t,e,n){return e[y]=vt(t),n}),ht("Y",function(t,e,n){return e[y]=parseInt(t,10),n}),N("z",null,null,function(t,e){return e.isUTC?"UTC":""}),N("zz",null,null,function(t,e){return e.isUTC?"Coordinated Universal Time":""}),N("X",null,null,function(t){return function(t){return Math.floor(t.valueOf()/1e3)}(t).toString(10)}),N("x",null,null,function(t){return t.valueOf().toString(10)}),ct("x",it),ct("X",st),ht("X",function(t,e,n){return n._d=new Date(1e3*parseFloat(t)),n}),ht("x",function(t,e,n){return n._d=new Date(p(t)),n}),N("s",["ss",2,!1],null,function(t,e){return M(t,e.isUTC).toString(10)}),m("second","s"),ct("s",J),ct("ss",J,K),ht(["s","ss"],w),N("Q",null,"Qo",function(t,e){return function(t,e){return void 0===e&&(e=!1),Math.ceil((z(t,e)+1)/3)}(t,e.isUTC).toString(10)}),m("quarter","Q"),ct("Q",W),ht("Q",function(t,e,n){return e[v]=3*(p(t)-1),n}),te("Z",":"),te("ZZ",""),ct("Z",ot),ct("ZZ",ot),ht(["Z","ZZ"],function(t,e,n){return n._useUTC=!0,n._tzm=function(e,n){var a=(t||"").match(ot);if(null===a)return null;var r=a[a.length-1].match(ne)||["-","0","0"],i=60*parseInt(r[1],10)+p(r[2]);return 0===i?0:"+"===r[0]?i:-i}(),n}),N("M",["MM",2,!1],"Mo",function(t,e){return(z(t,e.isUTC)+1).toString(10)}),N("MMM",null,null,function(t,e){return e.locale.monthsShort(t,e.format,e.isUTC)}),N("MMMM",null,null,function(t,e){return e.locale.months(t,e.format,e.isUTC)}),m("month","M"),ct("M",J),ct("MM",J,K),ct("MMM",function(t,e){return e.monthsShortRegex(t)}),ct("MMMM",function(t,e){return e.monthsRegex(t)}),ht(["M","MM"],function(t,e,n){return e[v]=p(t)-1,n}),ht(["MMM","MMMM"],function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);return null!=r?e[v]=r:bt(n).invalidMonth=!!t,n}),N("m",["mm",2,!1],null,function(t,e){return P(t,e.isUTC).toString(10)}),m("minute","m"),ct("m",J),ct("mm",J,K),ht(["m","mm"],T),function(){var t;for(N("S",null,null,function(t,e){return(~~(j(t,e.isUTC)/100)).toString(10)}),N(null,["SS",2,!1],null,function(t,e){return(~~(j(t,e.isUTC)/10)).toString(10)}),N(null,["SSS",3,!1],null,function(t,e){return j(t,e.isUTC).toString(10)}),N(null,["SSSS",4,!1],null,function(t,e){return(10*j(t,e.isUTC)).toString(10)}),N(null,["SSSSS",5,!1],null,function(t,e){return(100*j(t,e.isUTC)).toString(10)}),N(null,["SSSSSS",6,!1],null,function(t,e){return(1e3*j(t,e.isUTC)).toString(10)}),N(null,["SSSSSSS",7,!1],null,function(t,e){return(1e4*j(t,e.isUTC)).toString(10)}),N(null,["SSSSSSSS",8,!1],null,function(t,e){return(1e5*j(t,e.isUTC)).toString(10)}),N(null,["SSSSSSSSS",9,!1],null,function(t,e){return(1e6*j(t,e.isUTC)).toString(10)}),m("millisecond","ms"),ct("S",et,W),ct("SS",et,K),ct("SSS",et,$),t="SSSS";t.length<=9;t+="S")ct(t,rt);function e(t,e,n){return e[S]=p(1e3*parseFloat("0."+t)),n}for(t="S";t.length<=9;t+="S")ht(t,e)}(),function(){function t(t,e){return L(t,e)%12||12}function e(t,e){N(t,null,null,function(t,n){return n.locale.meridiem(L(t,n.isUTC),P(t,n.isUTC),e)})}function n(t,e){return e._meridiemParse}N("H",["HH",2,!1],null,function(t,e){return L(t,e.isUTC).toString(10)}),N("h",["hh",2,!1],null,function(e,n){return t(e,n.isUTC).toString(10)}),N("k",["kk",2,!1],null,function(t,e){return function(t,n){return L(t,e.isUTC)||24}(t).toString(10)}),N("hmm",null,null,function(e,n){return""+t(e,n.isUTC)+k(P(e,n.isUTC),2)}),N("hmmss",null,null,function(e,n){return""+t(e,n.isUTC)+k(P(e,n.isUTC),2)+k(M(e,n.isUTC),2)}),N("Hmm",null,null,function(t,e){return""+L(t,e.isUTC)+k(P(t,e.isUTC),2)}),N("Hmmss",null,null,function(t,e){return""+L(t,e.isUTC)+k(P(t,e.isUTC),2)+k(M(t,e.isUTC),2)}),e("a",!0),e("A",!1),m("hour","h"),ct("a",n),ct("A",n),ct("H",J),ct("h",J),ct("k",J),ct("HH",J,K),ct("hh",J,K),ct("kk",J,K),ct("hmm",Q),ct("hmmss",tt),ct("Hmm",Q),ct("Hmmss",tt),ht(["H","HH"],x),ht(["k","kk"],function(t,e,n){var a=p(t);return e[x]=24===a?0:a,n}),ht(["a","A"],function(t,e,n){return n._isPm=n._locale.isPM(t),n._meridiem=t,n}),ht(["h","hh"],function(t,e,n){return e[x]=p(t),bt(n).bigHour=!0,n}),ht("hmm",function(t,e,n){var a=t.length-2;return e[x]=p(t.substr(0,a)),e[T]=p(t.substr(a)),bt(n).bigHour=!0,n}),ht("hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;return e[x]=p(t.substr(0,a)),e[T]=p(t.substr(a,2)),e[w]=p(t.substr(r)),bt(n).bigHour=!0,n}),ht("Hmm",function(t,e,n){var a=t.length-2;return e[x]=p(t.substr(0,a)),e[T]=p(t.substr(a)),n}),ht("Hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;return e[x]=p(t.substr(0,a)),e[T]=p(t.substr(a,2)),e[w]=p(t.substr(r)),n})}(),N("DDD",["DDDD",3,!1],"DDDo",function(t){return At(t).toString(10)}),m("dayOfYear","DDD"),ct("DDD",et),ct("DDDD",$),ht(["DDD","DDDD"],function(t,e,n){return n._dayOfYear=p(t),n}),N("d",null,"do",function(t,e){return q(t,e.isUTC).toString(10)}),N("dd",null,null,function(t,e){return e.locale.weekdaysMin(t,e.format,e.isUTC)}),N("ddd",null,null,function(t,e){return e.locale.weekdaysShort(t,e.format,e.isUTC)}),N("dddd",null,null,function(t,e){return e.locale.weekdays(t,e.format,e.isUTC)}),N("e",null,null,function(t,e){return Xe(t,e.locale,e.isUTC).toString(10)}),N("E",null,null,function(t,e){return function(t,n){return q(t,e.isUTC)||7}(t).toString(10)}),m("day","d"),m("weekday","e"),m("isoWeekday","E"),ct("d",J),ct("e",J),ct("E",J),ct("dd",function(t,e){return e.weekdaysMinRegex(t)}),ct("ddd",function(t,e){return e.weekdaysShortRegex(t)}),ct("dddd",function(t,e){return e.weekdaysRegex(t)}),gt(["dd","ddd","dddd"],function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);return null!=r?e.d=r:bt(n).invalidWeekday=!!t,n}),gt(["d","e","E"],function(t,e,n,a){return e[a]=p(t),n}),N("D",["DD",2,!1],"Do",function(t,e){return F(t,e.isUTC).toString(10)}),m("date","D"),ct("D",J),ct("DD",J,K),ct("Do",function(t,e){return e._dayOfMonthOrdinalParse||e._ordinalParse}),ht(["D","DD"],_),ht("Do",function(t,e,n){return e[_]=p(t.match(J)[0]),n})),t?function(t){for(var e,n,a=0;a<t.length;){var r=ie(t[a]).split("-"),i=r.length;for(e=(e=ie(t[a+1]))?e.split("-"):null;i>0;){if(o=r.slice(0,i).join("-"),ae[o]||console.error('Khronos locale error: please load locale "'+o+'" before using it'),n=ae[o])return n;if(e&&e.length>=i&&Kt(r,e,!0)>=i-1)break;i--}a++}var o;return null}(l(t)?t:[t]):ee}var le=["year","quarter","month","week","day","hours","minutes","seconds","milliseconds"],ce=le.reduce(function(t,e){return t[e]=!0,t},{});function de(t){return t<0?Math.floor(t):Math.ceil(t)}function fe(t){return 4800*t/146097}function pe(t){return 146097*t/4800}var he=Math.round,ge=function(){function t(t,e){void 0===e&&(e={}),this._data={},this._locale=ue(),this._locale=e&&e._locale||ue();var n=t.year||0,r=t.quarter||0,i=t.month||0,o=t.week||0,s=t.day||0,u=t.hours||0,l=t.minutes||0,c=t.seconds||0,d=t.milliseconds||0;return this._isValid=function(t){if(Object.keys(t).some(function(e){return e in ce&&null===t[e]||isNaN(t[e])}))return!1;for(var e=!1,n=0;n<le.length;++n)if(t[le[n]]){if(e)return!1;t[le[n]]!==p(t[le[n]])&&(e=!0)}return!0}(t),this._milliseconds=+d+1e3*c+60*l*1e3+1e3*u*60*60,this._days=+s+7*o,this._months=+i+3*r+12*n,function(t){var e=t._milliseconds,n=t._days,r=t._months,i=t._data;e>=0&&n>=0&&r>=0||e<=0&&n<=0&&r<=0||(e+=864e5*de(pe(r)+n),n=0,r=0),i.milliseconds=e%1e3;var o=a(e/1e3);i.seconds=o%60;var s=a(o/60);i.minutes=s%60;var u=a(s/60);i.hours=u%24,n+=a(u/24);var l=a(fe(n));r+=l,n-=de(pe(l));var c=a(r/12);return r%=12,i.day=n,i.month=r,i.year=c,t}(this)}return t.prototype.isValid=function(){return this._isValid},t.prototype.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=he(a.as("s")),i=he(a.as("m")),o=he(a.as("h")),s=he(a.as("d")),u=he(a.as("M")),l=he(a.as("y")),c=r<=44&&["s",r]||r<45&&["ss",r]||i<=1&&["m"]||i<45&&["mm",i]||o<=1&&["h"]||o<22&&["hh",o]||s<=1&&["d"]||s<26&&["dd",s]||u<=1&&["M"]||u<11&&["MM",u]||l<=1&&["y"]||["yy",l];return(function(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}).apply(null,[c[0],c[1],e,+t>0,n])}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},t.prototype.localeData=function(){return this._locale},t.prototype.locale=function(t){return t?(this._locale=ue(t)||this._locale,this):this._locale._abbr},t.prototype.abs=function(){var 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},t.prototype.as=function(t){if(!this.isValid())return NaN;var e,n,a=this._milliseconds,r=b(t);if("month"===r||"year"===r)return n=this._months+fe(e=this._days+a/864e5),"month"===r?n:n/12;switch(e=this._days+Math.round(pe(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)}},t.prototype.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*p(this._months/12):NaN},t}();function me(t){if(null==t._isValid){var e=bt(t),n=Array.prototype.some.call(e.parsedDateParts,function(t){return null!=t}),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 be(t,e){return t._d=new Date(NaN),Object.assign(bt(t),e||{userInvalidated:!0}),t}var ye=/^\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)?)?$/,ve=/^\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)?)?$/,_e=/Z|[+-]\d\d(?::?\d\d)?/,xe=[["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]],Te=[["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/]],we=/^\/?Date\((\-?\d+)/i,Se={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480},Oe=/^(?:(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 Ce(t){if(!r(t._i))return t;var e,n,a,i,o,s,u=t._i,l=ye.exec(u)||ve.exec(u);if(!l)return t._isValid=!1,t;for(o=0,s=xe.length;o<s;o++)if(xe[o][1].exec(l[1])){n=xe[o][0],e=!1!==xe[o][2];break}if(null==n)return t._isValid=!1,t;if(l[3]){for(o=0,s=Te.length;o<s;o++)if(Te[o][1].exec(l[3])){a=(l[2]||" ")+Te[o][0];break}if(null==a)return t._isValid=!1,t}if(!e&&null!=a)return t._isValid=!1,t;if(l[4]){if(!_e.exec(l[4]))return t._isValid=!1,t;i="Z"}return t._f=n+(a||"")+(i||""),Me(t)}function ke(t){var e=parseInt(t,10);return e<=49?e+2e3:e}function Ie(t){if(!r(t._i))return t;var e=Oe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(!e)return function(t){return t._isValid=!1,t}(t);var n,a,i,o,s,u,l=(n=e[3],a=e[2],i=e[5],o=e[6],s=e[7],u=[ke(e[4]),qt.indexOf(n),parseInt(a,10),parseInt(i,10),parseInt(o,10)],s&&u.push(parseInt(s,10)),u);return function(t,e,n){return!t||zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(bt(n).weekdayMismatch=!0,n._isValid=!1,!1)}(e[1],l,t)?(t._a=l,t._tzm=function(t,n,a){if(t)return Se[t];if(e[9])return 0;var r=parseInt(e[10],10),i=r%100;return(r-i)/100*60+i}(e[8]),t._d=A.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),bt(t).rfc2822=!0,t):t}function De(t,e,n,a,r){void 0===r&&(r=0);var i=ue(n||"en");if(!i)throw new Error('Locale "'+n+'" is not defined, please add it with "defineLocale(...)"');var u=function(t,e,n,a,r){if(void 0===r&&(r=0),!o(t))return n.invalidDate;var i=Re(e,n);return I[i]=I[i]||function(t){for(var e=t.match(R),n=e.length,a=new Array(n),r=0;r<n;r++)a[r]=D[e[r]]?D[e[r]]:(i=e[r]).match(/\[[\s\S]/)?i.replace(/^\[|\]$/g,""):i.replace(/\\/g,"");var i;return function(e,r,i,o){void 0===o&&(o=0);for(var u="",l=0;l<n;l++)u+=s(a[l])?a[l].call(null,e,{format:t,locale:r,isUTC:i,offset:o}):a[l];return u}}(i),I[i](t,n,a,r)}(t,e||(a?"YYYY-MM-DDTHH:mm:ss[Z]":"YYYY-MM-DDTHH:mm:ssZ"),i,a,r);return u?i.postformat(u):u}function Re(t,e){var n=t,a=5,r=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,i=function(t){return 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 Ne(t,e,n){return null!=t?t:null!=e?e:n}function Ae(t){var e,n,a,r,i,o=[];if(t._d)return t;for(a=function(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[_]&&null==t._a[v]&&function(t){var e,n,a,r,i,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,o=4,n=Ne(e.GG,t._a[y],Lt(new Date,1,4).year),a=Ne(e.W,1),((r=Ne(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,o=t._locale._week.doy;var l=Lt(new Date,i,o);n=Ne(e.gg,t._a[y],l.year),a=Ne(e.w,l.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Pt(n,i,o)?bt(t)._overflowWeeks=!0:null!=u?bt(t)._overflowWeekday=!0:(s=function(t,e,n,a,r){var i,o,s=1+7*(e-1)+(7+n-a)%7+Et(t,a,r);return s<=0?o=_t(i=t-1)+s:s>_t(t)?(i=t+1,o=s-_t(t)):(i=t,o=s),{year:i,dayOfYear:o}}(n,a,r,i,o),t._a[y]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(i=Ne(t._a[y],a[y]),(t._dayOfYear>_t(i)||0===t._dayOfYear)&&(bt(t)._overflowDayOfYear=!0),n=new Date(Date.UTC(i,0,t._dayOfYear)),t._a[v]=n.getUTCMonth(),t._a[_]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=a[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];return 24===t._a[x]&&0===t._a[T]&&0===t._a[w]&&0===t._a[S]&&(t._nextDay=!0,t._a[x]=0),t._d=(t._useUTC?A:E).apply(null,o),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[x]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(bt(t).weekdayMismatch=!0),t}function Ee(t){var e,n=t._a;return n&&-2===bt(t).overflow&&(e=n[v]<0||n[v]>11?v:n[_]<1||n[_]>Tt(n[y],n[v])?_:n[x]<0||n[x]>24||24===n[x]&&(0!==n[T]||0!==n[w]||0!==n[S])?x:n[T]<0||n[T]>59?T:n[w]<0||n[w]>59?w:n[S]<0||n[S]>999?S:-1,bt(t)._overflowDayOfYear&&(e<y||e>_)&&(e=_),bt(t)._overflowWeeks&&-1===e&&(e=O),bt(t)._overflowWeekday&&-1===e&&(e=C),bt(t).overflow=e),t}var Le="ISO_8601",Pe="RFC_2822";function Me(t){if(t._f===Le)return Ce(t);if(t._f===Pe)return Ie(t);if(t._a=[],bt(t).empty=!0,l(t._f)||!t._i&&0!==t._i)return t;var e,n,a,r,i=t._i.toString(),o=0,s=i.length,u=Re(t._f,t._locale).match(R)||[];for(e=0;e<u.length;e++)(a=(i.match(dt(n=u[e],t._locale))||[])[0])&&((r=i.substr(0,i.indexOf(a))).length>0&&bt(t).unusedInput.push(r),i=i.slice(i.indexOf(a)+a.length),o+=a.length),D[n]?(a?bt(t).empty=!1:bt(t).unusedTokens.push(n),mt(n,a,t)):t._strict&&!a&&bt(t).unusedTokens.push(n);return bt(t).charsLeftOver=s-o,i.length>0&&bt(t).unusedInput.push(i),t._a[x]<=12&&!0===bt(t).bigHour&&t._a[x]>0&&(bt(t).bigHour=void 0),bt(t).parsedDateParts=t._a.slice(0),bt(t).meridiem=t._meridiem,t._a[x]=function(e,n,a){var r=t._a[x];if(null==a)return r;if(null!=e.meridiemHour)return e.meridiemHour(r,a);if(null==e.isPM)return r;var i=e.isPM(a);return i&&r<12&&(r+=12),i||12!==r||(r=0),r}(t._locale,0,t._meridiem),Ae(t),Ee(t)}function je(t,e,n,a,o){return i(t)?t:function(t,e,n,a,o){var s={},p=t;return(d(p)&&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}(p)||l(p)&&0===p.length)&&(p=void 0),s._useUTC=s._isUTC=o,s._l=n,s._i=p,s._f=e,s._strict=a,function(t){var e=Ee(function(t){var e=t._i,n=t._f;return t._locale=t._locale||ue(t._l),null===e||void 0===n&&""===e?be(t,{nullInput:!0}):(r(e)&&(t._i=e=t._locale.preparse(e)),i(e)?(t._d=Dt(e),t):(l(n)?function(t){var e,n,a,r,i;if(!t._f||0===t._f.length)return bt(t).invalidFormat=!0,be(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],Me(e),me(e)&&(r+=bt(e).charsLeftOver,r+=10*bt(e).unusedTokens.length,bt(e).score=r,(null==a||r<a)&&(a=r,n=e));Object.assign(t,n||e)}(t):n?Me(t):function(t){var e=t._i;if(f(e))t._d=new Date;else if(i(e))t._d=Dt(e);else if(r(e))!function(t){if(!r(t._i))return t;var e=we.exec(t._i);null!==e?t._d=new Date(+e[1]):(Ce(t),!1!==t._isValid||(delete t._isValid,Ie(t),!1!==t._isValid||(delete t._isValid,be(t))))}(t);else if(l(e)&&e.length){var n=e.slice(0);t._a=n.map(function(t){return r(t)?parseInt(t,10):t}),Ae(t)}else if(d(e))!function(t){if(t._d)return t;var e=t._i;if(d(e)){var n=function(t){var e,n,a={};for(n in t)c(t,n)&&(e=b(n))&&(a[e]=t[n]);return a}(e);t._a=[n.year,n.month,n.day,n.hours,n.minutes,n.seconds,n.milliseconds].map(function(t){return r(t)?parseInt(t,10):t})}Ae(t)}(t);else{if(!u(e))return be(t);t._d=new Date(e)}}(t),me(t)||(t._d=null),t))}(t));return e._d=new Date(null!=e._d?e._d.getTime():NaN),me(Object.assign({},e,{_isValid:null}))||(e._d=new Date(NaN)),e}(s)}(t,e,n,a,o)._d}function qe(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Fe(t,e,n){return void 0===n&&(n="milliseconds"),!(!t||!e)&&("milliseconds"===n?t.valueOf()>e.valueOf():e.valueOf()<Rt(t,n).valueOf())}function ze(t,e,n){return void 0===n&&(n="milliseconds"),!(!t||!e)&&("milliseconds"===n?t.valueOf()<e.valueOf():Nt(t,n).valueOf()<e.valueOf())}function Ye(t,e){return!(void 0===e||!e||!e.length)&&e.some(function(e){return e===t.getDay()})}var He=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ge=/^(-|\+)?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,n){void 0===n&&(n={});var a=function(t,e){if(null==t)return{};if(t instanceof ge)return{milliseconds:t._milliseconds,day:t._days,month:t._months};var n;if(u(t))return e?((n={})[e]=t,n):{milliseconds:t};if(r(t)){var a=He.exec(t);if(a){var i="-"===a[1]?-1:1;return{year:0,day:p(a[_])*i,hours:p(a[x])*i,minutes:p(a[T])*i,seconds:p(a[w])*i,milliseconds:p(qe(1e3*p(a[S])))*i}}if(a=Ge.exec(t))return{year:Be(a[2],i="-"===a[1]?-1:1),month:Be(a[3],i),week:Be(a[4],i),day:Be(a[5],i),hours:Be(a[6],i),minutes:Be(a[7],i),seconds:Be(a[8],i)}}if(d(t)&&("from"in t||"to"in t)){var s=function(t,e){if(!o(t)||!o(e))return{milliseconds:0,months:0};var n,a=function(t,e,n){if(void 0===n&&(n={}),!n._isUTC)return t;var a=Dt(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 ze(t,a)?n=Ue(t,a):((n=Ue(a,t)).milliseconds=-n.milliseconds,n.months=-n.months),n}(je(t.from),je(t.to));return{milliseconds:s.milliseconds,month:s.months}}return t}(t,e);return new ge(a,n)}function Be(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ue(t,e){var n={milliseconds:0,months:0};return n.months=z(e)-z(t)+12*(Y(e)-Y(t)),Fe(We(Dt(t),n.months,"month"),e)&&--n.months,n.milliseconds=+e-+We(Dt(t),n.months,"month"),n}function We(t,e,n,a){return Ke(t,Ve(e,n),1,a)}function Ke(t,e,n,a){var r=e._milliseconds,i=qe(e._days),o=qe(e._months);return o&&kt(t,z(t,a)+o*n,a),i&&It(t,F(t,a)+i*n,a),r&&function(t,e){t.setTime(e)}(t,function(t){return t.getTime()}(t)+r*n),Dt(t)}function $e(t,e,n,a){void 0===n&&(n=ue());var i=q(t,a);return We(t,function(t,e){if(!r(t))return t;var n=parseInt(t,10);if(!isNaN(n))return n;var a=e.weekdaysParse(t);return u(a)?a:null}(e,n)-i,"day")}function Ze(t,e){return q(t,e)}function Xe(t,e,n){return void 0===e&&(e=ue()),(q(t,n)+7-e.firstDayOfWeek())%7}var Je="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),Qe="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");function tn(t){return t>1&&t<5&&1!=~~(t/10)}function en(t,e,n,a){var r=t+" ";switch(n){case"s":return e||a?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return e||a?r+(tn(t)?"sekundy":"sekund"):r+"sekundami";case"m":return e?"minuta":a?"minutu":"minutou";case"mm":return e||a?r+(tn(t)?"minuty":"minut"):r+"minutami";case"h":return e?"hodina":a?"hodinu":"hodinou";case"hh":return e||a?r+(tn(t)?"hodiny":"hodin"):r+"hodinami";case"d":return e||a?"den":"dnem";case"dd":return e||a?r+(tn(t)?"dny":"dn\xed"):r+"dny";case"M":return e||a?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return e||a?r+(tn(t)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):r+"m\u011bs\xedci";case"y":return e||a?"rok":"rokem";case"yy":return e||a?r+(tn(t)?"roky":"let"):r+"lety"}}var nn={abbr:"cs",months:Je,monthsShort:Qe,monthsParse:function(t,e){var n,a=[];for(n=0;n<12;n++)a[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return a}(Je,Qe),shortMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(Qe),longMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(Je),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_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\xedtra v] LT",nextWeek:function(t){switch(Ze(t)){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(t){switch(Ze(t)){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:en,ss:en,m:en,mm:en,h:en,hh:en,d:en,dd:en,M:en,MM:en,y:en,yy:en},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}};function an(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]}var rn={abbr:"de",months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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:an,mm:"%d Minuten",h:an,hh:"%d Stunden",d:an,dd:an,M:an,MM:an,y:an,yy:an},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},on="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),sn="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),un=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ln=/^(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,cn={abbr:"es",months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,e,n){return t?/-MMM-/.test(e)?sn[z(t,n)]:on[z(t,n)]:on},monthsRegex:ln,monthsShortRegex:ln,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:un,longMonthsParse:un,shortMonthsParse:un,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".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(t){return"[hoy a la"+(1!==L(t)?"s":"")+"] LT"},nextDay:function(t){return"[ma\xf1ana a la"+(1!==L(t)?"s":"")+"] LT"},nextWeek:function(t){return"dddd [a la"+(1!==L(t)?"s":"")+"] LT"},lastDay:function(t){return"[ayer a la"+(1!==L(t)?"s":"")+"] LT"},lastWeek:function(t){return"[el] dddd [pasado a la"+(1!==L(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\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}},dn={abbr:"fr",months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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){var 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}},fn={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: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}},pn={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\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_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(t){switch(Ze(t)){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.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}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}},hn={abbr:"ja",months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5 HH:mm dddd"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(t){return"\u5348\u5f8c"===t},meridiem:function(t,e,n){return t<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";default:return t.toString(10)}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}},gn={abbr:"ko",months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\uc77c";case"M":return t+"\uc6d4";case"w":case"W":return t+"\uc8fc";default:return t.toString(10)}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(t){return"\uc624\ud6c4"===t},meridiem:function(t,e,n){return t<12?"\uc624\uc804":"\uc624\ud6c4"}},mn="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),bn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function yn(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function vn(t,e,n){var a=t+" ";switch(n){case"ss":return a+(yn(t)?"sekundy":"sekund");case"m":return e?"minuta":"minut\u0119";case"mm":return a+(yn(t)?"minuty":"minut");case"h":return e?"godzina":"godzin\u0119";case"hh":return a+(yn(t)?"godziny":"godzin");case"MM":return a+(yn(t)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return a+(yn(t)?"lata":"lat")}}var _n={abbr:"pl",months:function(t,e,n){return t?""===e?"("+bn[z(t,n)]+"|"+mn[z(t,n)]+")":/D MMMM/.test(e)?bn[z(t,n)]:mn[z(t,n)]:mn},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_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\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(t){switch(Ze(t)){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 5:return"[W pi\u0105tek o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(t){switch(Ze(t)){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 4:return"[W zesz\u0142\u0105 czwartek o] LT";case 5:return"[W zesz\u0142\u0105 pi\u0105tek o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:vn,m:vn,mm:vn,h:vn,hh:vn,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:vn,y:"rok",yy:vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}},xn={abbr:"pt-br",months:"Janeiro_Fevereiro_Mar\xe7o_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\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".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 [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(t){return 0===Ze(t)||6===Ze(t)?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",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\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"},Tn={abbr:"zh-cn",months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var a=100*t+e;return a<600?"\u51cc\u6668":a<900?"\u65e9\u4e0a":a<1130?"\u4e0a\u5348":a<1230?"\u4e2d\u5348":a<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(t,e){var n=Number(t);switch(e){case"d":case"D":case"DDD":return n+"\u65e5";case"M":return n+"\u6708";case"w":case"W":return n+"\u5468";default:return n.toString()}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}},lJMN:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("QG5k"),r=n("TCh0"),i=n("kQXf");e.TreeController=function(){function t(t){this.component=t,this.tree=this.component.tree,this.treeService=this.component.treeService}return t.prototype.select=function(){this.isSelected()||this.component.onNodeSelected({button:r.MouseButtons.Left})},t.prototype.unselect=function(){this.isSelected()&&this.component.onNodeUnselected({button:r.MouseButtons.Left})},t.prototype.isSelected=function(){return this.component.isSelected},t.prototype.expand=function(){this.isCollapsed()&&this.component.onSwitchFoldingType()},t.prototype.expandToParent=function(t){var e=this;if(void 0===t&&(t=this.tree),t){var n=this.treeService.getController(t.id);n&&requestAnimationFrame(function(){n.expand(),e.expandToParent(t.parent)})}},t.prototype.isExpanded=function(){return this.tree.isNodeExpanded()},t.prototype.collapse=function(){this.isExpanded()&&this.component.onSwitchFoldingType()},t.prototype.isCollapsed=function(){return this.tree.isNodeCollapsed()},t.prototype.toTreeModel=function(){return this.tree.toTreeModel()},t.prototype.rename=function(t){this.tree.markAsBeingRenamed(),this.component.applyNewValue({type:"keyup",value:t})},t.prototype.remove=function(){this.component.onMenuItemSelected({nodeMenuItemAction:a.NodeMenuItemAction.Remove})},t.prototype.addChild=function(t){if(!this.tree.hasDeferredChildren()||this.tree.childrenWereLoaded()){var e=this.tree.createNode(Array.isArray(t.children),t);this.treeService.fireNodeCreated(e)}},t.prototype.addChildAsync=function(t){if(this.tree.hasDeferredChildren()&&!this.tree.childrenWereLoaded())return Promise.reject(new Error("This node loads its children asynchronously, hence child cannot be added this way"));var e=this.tree.createNode(Array.isArray(t.children),t);return this.treeService.fireNodeCreated(e),new Promise(function(t){setTimeout(function(){t(e)})})},t.prototype.changeNodeId=function(t){if(!t)throw Error("You should supply an id!");if(this.treeService.hasController(t))throw Error("Controller already exists for the given id: "+t);this.treeService.deleteController(this.tree.id),this.tree.id=t,this.treeService.setController(this.tree.id,this)},t.prototype.reloadChildren=function(){this.tree.reloadChildren()},t.prototype.setChildren=function(t){this.tree.isLeaf()||this.tree.setChildren(t)},t.prototype.startRenaming=function(){this.tree.markAsBeingRenamed()},t.prototype.check=function(){this.component.onNodeChecked()},t.prototype.uncheck=function(){this.component.onNodeUnchecked()},t.prototype.isChecked=function(){return this.tree.checked},t.prototype.isIndetermined=function(){return i.get(this.component,"checkboxElementRef.nativeElement.indeterminate")},t.prototype.allowSelection=function(){this.tree.selectionAllowed=!0},t.prototype.forbidSelection=function(){this.tree.selectionAllowed=!1},t.prototype.isSelectionAllowed=function(){return this.tree.selectionAllowed},t}()},lTVp:function(t,e,n){"use strict";n.d(e,"a",function(){return s}),n.d(e,"c",function(){return u}),n.d(e,"b",function(){return o});var a=n("CcnG"),r=n("mrSG"),i=n("rpEJ"),o=function(){return function(){this.type="warning",this.dismissible=!1,this.dismissOnTimeout=void 0}}(),s=function(){function t(t,e){var n=this;this.changeDetection=e,this.type="warning",this.dismissible=!1,this.isOpen=!0,this.onClose=new a.EventEmitter,this.onClosed=new a.EventEmitter,this.classes="",this.dismissibleChange=new a.EventEmitter,Object.assign(this,t),this.dismissibleChange.subscribe(function(t){n.classes=n.dismissible?"alert-dismissible":"",n.changeDetection.markForCheck()})}return t.prototype.ngOnInit=function(){var t=this;this.dismissOnTimeout&&setTimeout(function(){return t.close()},parseInt(this.dismissOnTimeout,10))},t.prototype.close=function(){this.isOpen&&(this.onClose.emit(this),this.isOpen=!1,this.changeDetection.markForCheck(),this.onClosed.emit(this))},Object(r.__decorate)([Object(i.a)(),Object(r.__metadata)("design:type",Object)],t.prototype,"dismissible",void 0),t}(),u=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[o]}},t}()},lUjN:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("vxfy");e.DatatableFooterDirective=function(){function t(){}return a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),i.ContentChild(o.DataTableFooterTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Directive({selector:"ngx-datatable-footer"})],t)}()},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[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 a=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];n("wd/R").defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0447\u0430\u0441",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0438":t<12?"\u0443\u0442\u0440\u0430":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-\u0439";case"D":return t+"-\u0433\u043e";case"w":case"W":return t+"-\u044f";default:return t}},week:{dow:1,doy:4}})}()},lYZG:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("0/uQ"),i=n("G5J1");function o(t){return new a.a(function(e){var n;try{n=t()}catch(a){return void e.error(a)}return(n?Object(r.a)(n):Object(i.b)()).subscribe(e)})}},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,a){switch(n){case"s":return e?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return t+(e?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return t+(e?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return t+(e?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return t+(e?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return t+(e?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return t+(e?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return t}}n("wd/R").defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(t){return"\u04ae\u0425"===t},meridiem:function(t,e,n){return t<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",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} \u04e9\u0434\u04e9\u0440/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" \u04e9\u0434\u04e9\u0440";default:return t}}})}()},lZOh:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("F/XL");a.a.of=r.a},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};t.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".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:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},lmqd:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi",t.multiClick="multiClick",t.cell="cell",t.checkbox="checkbox"}(e.SelectionType||(e.SelectionType={}))},lqqz:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("CcnG"),r=n("rpEJ"),i=function(){return function(t,e,n){this.nodes=t,this.viewRef=e,this.componentRef=n}}(),o=function(){function t(t,e,n,r,i,o,s,u){this._viewContainerRef=t,this._renderer=e,this._elementRef=n,this._injector=r,this._componentFactoryResolver=i,this._ngZone=o,this._applicationRef=s,this._posService=u,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._listenOpts={},this._globalListener=Function.prototype}return Object.defineProperty(t.prototype,"isShown",{get:function(){return!this._isHiding&&!!this._componentRef},enumerable:!0,configurable:!0}),t.prototype.attach=function(t){return this._componentFactory=this._componentFactoryResolver.resolveComponentFactory(t),this},t.prototype.to=function(t){return this.container=t||this.container,this},t.prototype.position=function(t){return this.attachment=t.attachment||this.attachment,this._elementRef=t.target||this._elementRef,this},t.prototype.provide=function(t){return this._providers.push(t),this},t.prototype.show=function(t){if(void 0===t&&(t={}),this._subscribePositioning(),this._innerComponent=null,!this._componentRef){this.onBeforeShow.emit(),this._contentRef=this._getContentRef(t.content,t.context,t.initialState);var 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),"body"===this.container&&"undefined"!=typeof document&&document.querySelector(this.container).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},t.prototype.hide=function(){if(!this._componentRef)return this;this.onBeforeHide.emit(this._componentRef.instance);var 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},t.prototype.toggle=function(){this.isShown?this.hide():this.show()},t.prototype.dispose=function(){this.isShown&&this.hide(),this._unsubscribePositioning(),this._unregisterListenersFn&&this._unregisterListenersFn()},t.prototype.listen=function(t){var e=this;this.triggers=t.triggers||this.triggers,this._listenOpts.outsideClick=t.outsideClick,this._listenOpts.outsideEsc=t.outsideEsc,t.target=t.target||this._elementRef.nativeElement;var n=this._listenOpts.hide=function(){return t.hide?t.hide():void e.hide()},a=this._listenOpts.show=function(n){t.show?t.show(n):e.show(n),n()};return this._unregisterListenersFn=Object(r.e)(this._renderer,{target:t.target,triggers:t.triggers,show:a,hide:n,toggle:function(t){e.isShown?n():a(t)}}),this},t.prototype._removeGlobalListener=function(){this._globalListener&&(this._globalListener(),this._globalListener=null)},t.prototype.attachInline=function(t,e){return this._inlineViewRef=t.createEmbeddedView(e),this},t.prototype._registerOutsideClick=function(){var t=this;if(this._componentRef&&this._componentRef.location){if(this._listenOpts.outsideClick){var e=this._componentRef.location.nativeElement;setTimeout(function(){t._globalListener=Object(r.h)(t._renderer,{targets:[e,t._elementRef.nativeElement],outsideClick:t._listenOpts.outsideClick,hide:function(){return t._listenOpts.hide()}})})}if(this._listenOpts.outsideEsc){var n=this._componentRef.location.nativeElement;this._globalListener=Object(r.g)(this._renderer,{targets:[n,this._elementRef.nativeElement],outsideEsc:this._listenOpts.outsideEsc,hide:function(){return t._listenOpts.hide()}})}}},t.prototype.getInnerComponent=function(){return this._innerComponent},t.prototype._subscribePositioning=function(){var t=this;!this._zoneSubscription&&this.attachment&&(this._zoneSubscription=this._ngZone.onStable.subscribe(function(){t._componentRef&&t._posService.position({element:t._componentRef.location,target:t._elementRef,attachment:t.attachment,appendToBody:"body"===t.container})}))},t.prototype._unsubscribePositioning=function(){this._zoneSubscription&&(this._zoneSubscription.unsubscribe(),this._zoneSubscription=null)},t.prototype._getContentRef=function(t,e,n){if(!t)return new i([]);if(t instanceof a.TemplateRef){if(this._viewContainerRef){var r=this._viewContainerRef.createEmbeddedView(t,e);return r.markForCheck(),new i([r.rootNodes],r)}var o=t.createEmbeddedView({});return this._applicationRef.attachView(o),new i([o.rootNodes],o)}if("function"==typeof t){var s=this._componentFactoryResolver.resolveComponentFactory(t),u=a.Injector.create({providers:this._providers,parent:this._injector}),l=s.create(u);return Object.assign(l.instance,n),this._applicationRef.attachView(l.hostView),new i([[l.location.nativeElement]],l.hostView,l)}return new i([[this._renderer.createText(""+t)]])},t}(),s=function(){function t(t,e,n,a,r){this._componentFactoryResolver=t,this._ngZone=e,this._injector=n,this._posService=a,this._applicationRef=r}return t.prototype.createLoader=function(t,e,n){return new o(e,n,t,this._injector,this._componentFactoryResolver,this._ngZone,this._applicationRef,this._posService)},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]}n("wd/R").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\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".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\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:e,m:"un minut",mm:e,h:"o or\u0103",hh:e,d:"o zi",dd:e,M:"o lun\u0103",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}()},m12A:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("Z5tI");e.fromPromise=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription;return a.add(e.schedule(function(){return t.then(function(t){a.add(e.schedule(function(){n.next(t),a.add(e.schedule(function(){return n.complete()}))}))},function(t){a.add(e.schedule(function(){return n.error(t)}))})})),a}:i.subscribeToPromise(t))}},mChF:function(t,e,n){"use strict";function a(t){return t}n.d(e,"a",function(){return a})},mSOc:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("LvDl"),r=n("26FU"),i=n("CcnG"),o=n("t/Na"),s=n("ZYCi"),u=function(){function t(t,e,n){this.http=t,this.router=e,this.ngZone=n,this.summaryDataSource=new r.a(null),this.summaryData$=this.summaryDataSource.asObservable(),this.enablePolling()}return t.prototype.enablePolling=function(){var t=this;this.refresh(),this.ngZone.runOutsideAngular(function(){t.polling=window.setInterval(function(){t.ngZone.run(function(){t.refresh()})},5e3)})},t.prototype.refresh=function(){var t=this;"/login"!==this.router.url&&this.http.get("api/summary").subscribe(function(e){t.summaryDataSource.next(e)})},t.prototype.getCurrentSummary=function(){return this.summaryDataSource.getValue()},t.prototype.subscribe=function(t,e){return this.summaryData$.subscribe(t,e)},t.prototype.addRunningTask=function(t){var e=this.summaryDataSource.getValue();e&&(a.isArray(e.executing_tasks)?e.executing_tasks.find(function(e){return e.name===t.name&&a.isEqual(e.metadata,t.metadata)})||e.executing_tasks.push(t):e.executing_tasks=[t],this.summaryDataSource.next(e))},t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.c),i.inject(s.l),i.inject(i.NgZone))},token:t,providedIn:"root"}),t}()},mZXl:function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"a",function(){return u});var a=n("mrSG"),r=n("FFOo"),i=n("60iU");function o(t,e){return void 0===e&&(e=0),function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){void 0===e&&(e=0),this.scheduler=t,this.delay=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.scheduler,this.delay))},t}(),u=function(t){function e(e,n,a){void 0===a&&(a=0);var r=t.call(this,e)||this;return r.scheduler=n,r.delay=a,r}return a.__extends(e,t),e.dispatch=function(t){t.notification.observe(t.destination),this.unsubscribe()},e.prototype.scheduleMessage=function(t){this.destination.add(this.scheduler.schedule(e.dispatch,this.delay,new l(t,this.destination)))},e.prototype._next=function(t){this.scheduleMessage(i.a.createNext(t))},e.prototype._error=function(t){this.scheduleMessage(i.a.createError(t)),this.unsubscribe()},e.prototype._complete=function(){this.scheduleMessage(i.a.createComplete()),this.unsubscribe()},e}(r.a),l=function(){return function(t,e){this.notification=t,this.destination=e}}()},mbIT:function(t,e,n){"use strict";e.isArray=Array.isArray||function(t){return t&&"number"==typeof t.length}},mgIt:function(t,e,n){var a=n("T016");function r(t){if(t){var e=[0,0,0],n=1,r=t.match(/^#([a-fA-F0-9]{3})$/i);if(r){r=r[1];for(var i=0;i<e.length;i++)e[i]=parseInt(r[i]+r[i],16)}else if(r=t.match(/^#([a-fA-F0-9]{6})$/i))for(r=r[1],i=0;i<e.length;i++)e[i]=parseInt(r.slice(2*i,2*i+2),16);else if(r=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(r[i+1]);n=parseFloat(r[4])}else if(r=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(r[i+1]));n=parseFloat(r[4])}else if(r=t.match(/(\w+)/)){if("transparent"==r[1])return[0,0,0,0];if(!(e=a[r[1]]))return}for(i=0;i<e.length;i++)e[i]=c(e[i],0,255);return n=n||0==n?c(n,0,1):1,e[3]=n,e}}function i(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[c(parseInt(e[1]),0,360),c(parseFloat(e[2]),0,100),c(parseFloat(e[3]),0,100),c(isNaN(n)?1:n,0,1)]}}}function o(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[c(parseInt(e[1]),0,360),c(parseFloat(e[2]),0,100),c(parseFloat(e[3]),0,100),c(isNaN(n)?1:n,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function u(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 l(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function c(t,e,n){return Math.min(Math.max(e,t),n)}function d(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}t.exports={getRgba:r,getHsla:i,getRgb:function(t){var e=r(t);return e&&e.slice(0,3)},getHsl:function(t){var e=i(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=r(t);return e?e[3]:(e=i(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+d(t[0])+d(t[1])+d(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){return e<1||t[3]&&t[3]<1?u(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:u,hslString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:l,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 f[t.slice(0,3)]}};var f={};for(var p in a)f[a[p]]=p},mjYD:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha"),o=n("fELs"),s=i.noop;a._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var u=r.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,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:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.display,r=(0,i.valueOrDefault)(e.fontSize,a.global.defaultFontSize),o=t.minSize,s=i.isArray(e.text)?e.text.length:1,u=i.options.toLineHeight(e.lineHeight,r),l=n?s*u+2*e.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=l):(o.width=l,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=i.valueOrDefault,r=t.options,o=a.global;if(r.display){var s,u,l,c=n(r.fontSize,o.defaultFontSize),d=n(r.fontStyle,o.defaultFontStyle),f=n(r.fontFamily,o.defaultFontFamily),p=i.fontString(c,d,f),h=i.options.toLineHeight(r.lineHeight,c),g=h/2+r.padding,m=0,b=t.top,y=t.left,v=t.bottom,_=t.right;e.fillStyle=n(r.fontColor,o.defaultFontColor),e.font=p,t.isHorizontal()?(u=y+(_-y)/2,l=b+g,s=_-y):(u="left"===r.position?y+g:_-g,l=b+(v-b)/2,s=v-b,m=Math.PI*("left"===r.position?-.5:.5)),e.save(),e.translate(u,l),e.rotate(m),e.textAlign="center",e.textBaseline="middle";var x=r.text;if(i.isArray(x))for(var T=0,w=0;w<x.length;++w)e.fillText(x[w],0,T,s),T+=h;else e.fillText(x,0,0,s);e.restore()}}});function l(t,e){var n=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.titleBlock=n}t.exports={id:"title",_element:u,beforeInit:function(t){var e=t.options.title;e&&l(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(i.mergeIf(e,a.global.title),n?(o.configure(t,n,e),n.options=e):l(t,e)):n&&(o.removeBox(t,n),delete t.titleBlock)}}},mlr9:function(t,e,n){"use strict";var a=n("RDha");function r(t,e){return t.native?{x:t.x,y:t.y}:a.getRelativePosition(t,e)}function i(t,e){var n,a,r,i,o;for(a=0,i=t.data.datasets.length;a<i;++a)if(t.isDatasetVisible(a))for(r=0,o=(n=t.getDatasetMeta(a)).data.length;r<o;++r){var s=n.data[r];s._view.skip||e(s)}}function o(t,e){var n=[];return i(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function s(t,e,n,a){var r=Number.POSITIVE_INFINITY,o=[];return i(t,function(t){if(!n||t.inRange(e.x,e.y)){var i=t.getCenterPoint(),s=a(e,i);s<r?(o=[t],r=s):s===r&&o.push(t)}}),o}function u(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 l(t,e,n){var a=r(e,t);n.axis=n.axis||"x";var i=u(n.axis),l=n.intersect?o(t,a):s(t,a,!1,i),c=[];return l.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var a=t.getDatasetMeta(n).data[l[0]._index];a&&!a._view.skip&&c.push(a)}}),c):[]}t.exports={modes:{single:function(t,e){var n=r(e,t),a=[];return i(t,function(t){if(t.inRange(n.x,n.y))return a.push(t),a}),a.slice(0,1)},label:l,index:l,dataset:function(t,e,n){var a=r(e,t);n.axis=n.axis||"xy";var i=u(n.axis),l=n.intersect?o(t,a):s(t,a,!1,i);return l.length>0&&(l=t.getDatasetMeta(l[0]._datasetIndex).data),l},"x-axis":function(t,e){return l(t,e,{intersect:!1})},point:function(t,e){return o(t,r(e,t))},nearest:function(t,e,n){var a=r(e,t);n.axis=n.axis||"xy";var i=u(n.axis),o=s(t,a,n.intersect,i);return o.length>1&&o.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),o.slice(0,1)},x:function(t,e,n){var a=r(e,t),o=[],s=!1;return i(t,function(t){t.inXRange(a.x)&&o.push(t),t.inRange(a.x,a.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var a=r(e,t),o=[],s=!1;return i(t,function(t){t.inYRange(a.y)&&o.push(t),t.inRange(a.x,a.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o}}}},mn2k:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("3MdB")),a(n("Cc8h")),a(n("ylLw")),a(n("M9eX")),a(n("uKs4"))},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 o}),n.d(e,"__decorate",function(){return s}),n.d(e,"__param",function(){return u}),n.d(e,"__metadata",function(){return l}),n.d(e,"__awaiter",function(){return c}),n.d(e,"__generator",function(){return d}),n.d(e,"__exportStar",function(){return f}),n.d(e,"__values",function(){return p}),n.d(e,"__read",function(){return h}),n.d(e,"__spread",function(){return g}),n.d(e,"__await",function(){return m}),n.d(e,"__asyncGenerator",function(){return b}),n.d(e,"__asyncDelegator",function(){return y}),n.d(e,"__asyncValues",function(){return v}),n.d(e,"__makeTemplateObject",function(){return _}),n.d(e,"__importStar",function(){return x}),n.d(e,"__importDefault",function(){return T});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 o(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&&(n[a[r]]=t[a[r]])}return n}function s(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o}function u(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 c(t,e,n,a){return new(n||(n=Promise))(function(r,i){function o(t){try{u(a.next(t))}catch(e){i(e)}}function s(t){try{u(a.throw(t))}catch(e){i(e)}}function u(t){t.done?r(t.value):new n(function(e){e(t.value)}).then(o,s)}u((a=a.apply(t,e||[])).next())})}function d(t,e){var n,a,r,i,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;o;)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 o.label++,{value:i[1],done:!1};case 5:o.label++,a=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(r=(r=o.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){o.label=i[1];break}if(6===i[0]&&o.label<r[1]){o.label=r[1],r=i;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(i);break}r[2]&&o.ops.pop(),o.trys.pop();continue}i=e.call(t,o)}catch(s){i=[6,s],a=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function f(t,e){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}function p(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function h(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var a,r,i=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(a=i.next()).done;)o.push(a.value)}catch(s){r={error:s}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o}function g(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(h(arguments[e]));return t}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function b(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a,r=n.apply(t,e||[]),i=[];return a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a;function o(t){r[t]&&(a[t]=function(e){return new Promise(function(n,a){i.push([t,e,n,a])>1||s(t,e)})})}function s(t,e){try{(n=r[t](e)).value instanceof m?Promise.resolve(n.value.v).then(u,l):c(i[0][2],n)}catch(a){c(i[0][3],a)}var n}function u(t){s("next",t)}function l(t){s("throw",t)}function c(t,e){t(e),i.shift(),i.length&&s(i[0][0],i[0][1])}}function y(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 v(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=p(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 x(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 T(t){return t&&t.__esModule?t:{default:t}}},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 l}),n.d(e,"b",function(){return u});var a=n("VNr4"),r=(n("SgmB"),n("ZDA6"),n("0+/T")),i=(n("sne2"),n("x38r")),o=n("mtw6"),s=n("vCyI"),u=(n("nSDx"),n("aexS"),n("9nlD"),new(n("EgGo").a)("user-management/roles")),l=function(){function t(t,e,n,a,r,i,o,u,l){var c=this;this.roleService=t,this.scopeService=e,this.emptyPipe=n,this.authStorageService=a,this.modalService=r,this.notificationService=i,this.i18n=o,this.urlBuilder=u,this.actionLabels=l,this.selection=new s.a,this.permission=this.authStorageService.getPermissions().user,this.tableActions=[{permission:"create",icon:"fa-plus",routerLink:function(){return c.urlBuilder.getCreate()},name:this.actionLabels.CREATE},{permission:"update",icon:"fa-pencil",disable:function(){return!c.selection.hasSingleSelection||c.selection.first().system},routerLink:function(){return c.selection.first()&&c.urlBuilder.getEdit(c.selection.first().name)},name:this.actionLabels.EDIT},{permission:"delete",icon:"fa-times",disable:function(){return!c.selection.hasSingleSelection||c.selection.first().system},click:function(){return c.deleteRoleModal()},name:this.actionLabels.DELETE}]}return t.prototype.ngOnInit=function(){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:i.a.checkIcon}]},t.prototype.getRoles=function(){var t=this;Object(a.a)([this.roleService.list(),this.scopeService.list()]).subscribe(function(e){t.roles=e[0],t.scopes=e[1]})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteRole=function(t){var e=this;this.roleService.delete(t).subscribe(function(){e.getRoles(),e.modalRef.hide(),e.notificationService.show(o.a.success,e.i18n("Deleted role '{{role_name}}'",{role_name:t}))},function(){e.modalRef.content.stopLoadingSpinner()})},t.prototype.deleteRoleModal=function(){var t=this,e=this.selection.first().name;this.modalRef=this.modalService.show(r.a,{initialState:{itemDescription:"Role",submitAction:function(){return t.deleteRole(e)}}})},t}()},n1nk:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.header="header",t.body="body"}(e.ContextmenuType||(e.ContextmenuType={}))},n3uD:function(t,e,n){"use strict";var a=!1;e.config={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){a=t},get useDeprecatedSynchronousErrorHandling(){return a}}},nDWh:function(t,e,n){"use strict";var a=n("6ww4"),r=n("CDJp"),i=n("RDha"),o=n("tjFV");t.exports=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 o=document.defaultView,s=i._getParentNode(n),u=o.getComputedStyle(n)[a],l=o.getComputedStyle(s)[a],c=e(u),d=e(l),f=Number.POSITIVE_INFINITY;return c||d?Math.min(c?t(u,n,r):f,d?t(l,s,r):f):"none"}i.configMerge=function(){return i.merge(i.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,a){var r=e[t]||{},s=n[t];"scales"===t?e[t]=i.scaleMerge(r,s):"scale"===t?e[t]=i.merge(r,[o.getScaleDefaults(s.type),s]):i._merger(t,e,n,a)}})},i.scaleMerge=function(){return i.merge(i.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,a){if("xAxes"===t||"yAxes"===t){var r,s,u,l=n[t].length;for(e[t]||(e[t]=[]),r=0;r<l;++r)s=i.valueOrDefault((u=n[t][r]).type,"xAxes"===t?"category":"linear"),r>=e[t].length&&e[t].push({}),i.merge(e[t][r],!e[t][r].type||u.type&&u.type!==e[t][r].type?[o.getScaleDefaults(s),u]:u)}else i._merger(t,e,n,a)}})},i.where=function(t,e){if(i.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return i.each(t,function(t){e(t)&&n.push(t)}),n},i.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},i.findNextWhere=function(t,e,n){i.isNullOrUndef(n)&&(n=-1);for(var a=n+1;a<t.length;a++){var r=t[a];if(e(r))return r}},i.findPreviousWhere=function(t,e,n){i.isNullOrUndef(n)&&(n=t.length);for(var a=n-1;a>=0;a--){var r=t[a];if(e(r))return r}},i.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.almostEquals=function(t,e,n){return Math.abs(t-e)<n},i.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},i.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},i.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},i.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},i.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},i.toRadians=function(t){return t*(Math.PI/180)},i.toDegrees=function(t){return t*(180/Math.PI)},i.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}},i.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},i.aliasPixel=function(t){return t%2==0?0:.5},i.splineCurve=function(t,e,n,a){var r=t.skip?e:t,i=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2)),u=Math.sqrt(Math.pow(o.x-i.x,2)+Math.pow(o.y-i.y,2)),l=s/(s+u),c=u/(s+u),d=a*(l=isNaN(l)?0:l),f=a*(c=isNaN(c)?0:c);return{previous:{x:i.x-d*(o.x-r.x),y:i.y-d*(o.y-r.y)},next:{x:i.x+f*(o.x-r.x),y:i.y+f*(o.y-r.y)}}},i.EPSILON=Number.EPSILON||1e-14,i.splineCurveMonotone=function(t){var e,n,a,r,o,s,u,l,c,d=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),f=d.length;for(e=0;e<f;++e)if(!(a=d[e]).model.skip){if(n=e>0?d[e-1]:null,(r=e<f-1?d[e+1]:null)&&!r.model.skip){var p=r.model.x-a.model.x;a.deltaK=0!==p?(r.model.y-a.model.y)/p: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<f-1;++e)r=d[e+1],(a=d[e]).model.skip||r.model.skip||(i.almostEquals(a.deltaK,0,this.EPSILON)?a.mK=r.mK=0:(o=a.mK/a.deltaK,s=r.mK/a.deltaK,(l=Math.pow(o,2)+Math.pow(s,2))<=9||(u=3/Math.sqrt(l),a.mK=o*u*a.deltaK,r.mK=s*u*a.deltaK)));for(e=0;e<f;++e)(a=d[e]).model.skip||(r=e<f-1?d[e+1]:null,(n=e>0?d[e-1]:null)&&!n.model.skip&&(a.model.controlPointPreviousX=a.model.x-(c=(a.model.x-n.model.x)/3),a.model.controlPointPreviousY=a.model.y-c*a.mK),r&&!r.model.skip&&(a.model.controlPointNextX=a.model.x+(c=(r.model.x-a.model.x)/3),a.model.controlPointNextY=a.model.y+c*a.mK))},i.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]},i.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},i.niceNum=function(t,e){var n=Math.floor(i.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)},i.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)},i.getRelativePosition=function(t,e){var n,a,r=t.originalEvent||t,o=t.target||t.srcElement,s=o.getBoundingClientRect(),u=r.touches;u&&u.length>0?(n=u[0].clientX,a=u[0].clientY):(n=r.clientX,a=r.clientY);var l=parseFloat(i.getStyle(o,"padding-left")),c=parseFloat(i.getStyle(o,"padding-top")),d=parseFloat(i.getStyle(o,"padding-right")),f=parseFloat(i.getStyle(o,"padding-bottom")),p=s.bottom-s.top-c-f;return{x:n=Math.round((n-s.left-l)/(s.right-s.left-l-d)*o.width/e.currentDevicePixelRatio),y:a=Math.round((a-s.top-c)/p*o.height/e.currentDevicePixelRatio)}},i.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},i.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},i._calculatePadding=function(t,e,n){return(e=i.getStyle(t,e)).indexOf("%")>-1?n/parseInt(e,10):parseInt(e,10)},i._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},i.getMaximumWidth=function(t){var e=i._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,a=n-i._calculatePadding(e,"padding-left",n)-i._calculatePadding(e,"padding-right",n),r=i.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},i.getMaximumHeight=function(t){var e=i._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,a=n-i._calculatePadding(e,"padding-top",n)-i._calculatePadding(e,"padding-bottom",n),r=i.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},i.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},i.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")}},i.fontString=function(t,e,n){return e+" "+t+"px "+n},i.longestText=function(t,e,n,a){var r=(a=a||{}).data=a.data||{},o=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(r=a.data={},o=a.garbageCollect=[],a.font=e),t.font=e;var s=0;i.each(n,function(e){null!=e&&!0!==i.isArray(e)?s=i.measureText(t,r,o,s,e):i.isArray(e)&&i.each(e,function(e){null==e||i.isArray(e)||(s=i.measureText(t,r,o,s,e))})});var u=o.length/2;if(u>n.length){for(var l=0;l<u;l++)delete r[o[l]];o.splice(0,u)}return s},i.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},i.numberOfLabelLines=function(t){var e=1;return i.each(t,function(t){i.isArray(t)&&t.length>e&&(e=t.length)}),e},i.color=a?function(t){return t instanceof CanvasGradient&&(t=r.global.defaultColor),a(t)}:function(t){return console.error("Color.js not found!"),t},i.getHoverColor=function(t){return t instanceof CanvasPattern?t:i.color(t).saturate(.5).darken(.1).rgbString()}}},nSDx:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("LvDl"),r=function(){function t(){}return t.prototype.transform=function(t){return a.isUndefined(t)||a.isNull(t)?"-":t},t}()},nhM1:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DimensionsHelper=function(){function t(){}return t.prototype.getDimensions=function(t){return t.getBoundingClientRect()},a([r.Injectable()],t)}()},nkY7:function(t,e,n){"use strict";function a(t){return t&&"function"==typeof t.schedule}n.d(e,"a",function(){return a})},nmKl:function(t,e){t.exports='<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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Monitor</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Peringatan</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>Menerima data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> untuk \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>"/>. Mohon tunggu...\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>Menampilkan data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> sebelumnya \nuntuk \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>Gagal memuat data \n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> untuk\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>"/>.\nMohon periksa kesehatan klaster.\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="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>Silakan merujuk ke\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> tentang\ncara mengonfigurasi dan mengaktifkan fungsi pemantauan.\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>Dasbor Grafana tidak ada. Mohon merujuk ke\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> tentang cara\nmenambahkan dasbor ke 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="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>Gagal memuat data.</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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Pengaturan</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="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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Batal</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="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="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Pola IQN salah.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Suatu IQN memiliki notasi seperti ini \'iqn.$tahun-$bulan.$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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Dibutuhkan min \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gerbang/gateway.\n        </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="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="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Dibutuhkan minimal 1 image.</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="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="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>Pengguna</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="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>Kata sandi</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="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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nama</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Kirim</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>Anda yakin ingin \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> dari \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Otentikasi Discovery</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="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>Mohon cek ke \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan mengaktifkan fungsi manajemen iSCSI Target.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\'/\' dan \'@\' tidak diperbolehkan.</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="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="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="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="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>Ukuran</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="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="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fitur</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="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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Ukuran objek</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="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>Tempat sampah</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="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>Edit</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="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>Layanan</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="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>Nilai yang dimasukkan terlalu tinggi! Tidak boleh lebih besar dari \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>Nilai yang dimasukkan terlalu rendah! Tidak boleh lebih rendah dari \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Daftar Hos</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="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>Nilai yang dimasukkan terlalu tinggi! Harus lebih kecil atau sama dengan \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>Nilai yang dimasukkan terlalu rendah! Harus lebih besar atau sama dengan \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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Flag OSD Klaster</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>Nilai yang dimasukkan terlalu tinggi! Tidak boleh lebih tinggi dari \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>Nilai yang dimasukkan terlalu rendah! Tidak boleh lebih rendah dari \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>Ubah bobot OSD</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>OSD \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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Anda akan menerapkan\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/> scrub pada\nOSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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 \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> akan ditandai\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>"/> jika ingin melanjutkan.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>OSD tidak aman untuk dihancurkan!</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> akan\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>"/> jika ingin melanjutkan.\n        </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="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>Mohon periksa \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan aktfikan fungsi manajemen NFS Ganesha.\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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Ekspor NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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="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="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>Alternatif akses untuk mount \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>NFSv3\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (tidak boleh diawali /).\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>Posisi dari \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>"/> yang diekspor ini menempati \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>"/> (ini harus unik).\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="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="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="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="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="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>Tambah</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="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="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="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="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Anda hanya dapat menambahkan nilai PG dari pool yang ada.\nSaat ini pool Anda memiliki \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PG.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Pengaturan PG saat ini telah dihitung untuk Anda, Anda\nharus memastikan nilai tersebut sesuai kebutuhan sebelum mengajukan.</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="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Pilih aturan crush --</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="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>Aturan crush tidak dapat digunakan di klaster ini karena\njumlah OSD terlalu sedikit untuk memenuhi syarat minimal OSD untuk aturan ini.</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>Maksimum: \n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>Ukuran yang dimasukkan di luar jangkauan. Nilai yang valid\ndari \n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> hingga \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>.\n        </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="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="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="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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Tidak boleh membuat pool RBD dengan nama yang mengandung \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Mohon ganti atau hapus \'rbd\' dari daftar aplikasi.</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="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>Silakan cek kembali \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/> dokumentasi \n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\ntentang cara mengonfigurasi dan mengaktifkan fungsi manajemen Gerbang Objek.\n        </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="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Buket data tidak dapat dimuat.</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="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>Daftar Daemon</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="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>Kunci S3</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="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="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="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="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="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>Dihentikan</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="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>Tidak ada sub-pengguna.</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="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>Kunci</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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Tampilkan</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Kemampuan</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="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>Kuota pengguna</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="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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Kuota Buket</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="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="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>Kembali ke Halaman Masuk \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Anda akan dikeluarkan dari Penyedia Identitas saat Anda mencoba masuk.\n        </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="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="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>Peran</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="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="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>Maaf, kami tidak dapat menemukan yang Anda cari</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Hapus semua</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifikasi terkini</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Tidak ada tugas latar belakang.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>Tugas Latar Belakang</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>Masuk sebagai\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Keluar</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>Detail Performa</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="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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Sistem</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Tidak} 1 {Ya} }</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="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>Penghitung kinerja tidak tersedia</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="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>Image</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="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="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="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 tidak tersedia: \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="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="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>Objek</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>"/> Lihat \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> Log untuk detil lainnya.\n        </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="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Untuk pindahkan \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> ke tempat sampah,\ntekan \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Pindah Image \n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Anda juga dapat memilih tanggal kedaluwarsa.\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="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="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>Hanya tersedia untuk image RBD dengan \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>"/> yang diaktifkan.\n        </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="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="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="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="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot RBD\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Ganti nama} other {Buat} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>DIPROTEKSI</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="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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Untuk menghapus, pilih satu atau Semua image dan pilih</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="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>Semua</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>Image ini diproteksi hingga \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="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\xa0\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\xa0\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>Untuk mengubah mode pencerminan pool\xa0\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>"/>, pilih mode baru dari daftar dan klik\xa0\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Perbarui\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 {...}}"/>\nmitra pencerminan pool\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> pool\natribut mitra pencerminan untuk 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>"/> dan klik \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Kirim\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="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>Detil Cache Bertingkat</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Klien: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>Target</target>\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="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="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>Keadaan</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>Dimatikan</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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Nilai</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="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (butuh peta-objek)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Ratakan</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="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Buat</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Proteksi</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Klon</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="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Kembalikan snapshot RBD</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="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>Pulihkan</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="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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemon siaga</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>Perbarui opsi konfigurasi \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Opsi diperbarui untuk modul &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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="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="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="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="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>Deep Scrub</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="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>keluar</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="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>masuk</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="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>gugur</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="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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</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="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>Hancurkan</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="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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes 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="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">\n        <source>Mark OSD \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </source>\n        <target>Tandai 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>Tandai \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Ubahsuai</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>Piroritas &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot; kecepatan pemulihan OSD diperbarui.\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> telah diinisialisasi pada OSD berikut: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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="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="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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Ekspor</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil erasure code</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="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Bita tulis</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Buket Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; diperbarui\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>Buat buket Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot;\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>buket</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>Perbarui pengguna Gerbang Objek &amp;quot\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>;&amp;quot;\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>Buat pengguna Gerbang Objek &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>&amp;quot;\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>pengguna</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' dibuat\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>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' diperbarui\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>Peran \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' dihapus\n        </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>Pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; dibuat\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>Perbarui pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Hapus pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Gagal menghapus pengguna &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Saat ini Anda masuk sebagai &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\n        </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="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="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>Informasi</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="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="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>Gagal untuk \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="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Diperbarui</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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>hapus</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="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>Snapshot RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>mode pencerminan untuk 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>mitra pencerminan untuk pool \'\n          <x id="INTERPOLATION" equiv-text="{{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>Nama telah digunakan oleh \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>Nama telah digunakan oleh \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>Nama telah digunakan oleh \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> berisi snapshot.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Diklon</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 \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> harus diproteksi.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Disalin</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Diratakan</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>Nama telah digunakan oleh \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>Tidak dapat menghapus proteksi \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> karena mengandung child image.\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>Tidak dapat menghapus \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> karena diproteksi.\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="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>Dikembalikan</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}}"/>\' ke tempat sampah\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Dipulihkan</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}}"/>\' ke \'\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>Nama image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' sudah digunakan.\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Dibuang</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>image dari \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="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>profil erasure code \'\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>'},nuQ0:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Ip0R"),i=n("ty8c"),o=n("FYBg"),s=n("JZ5S"),u=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"li",[["class","node-menu-item"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onMenuItemSelected(n,t.context.$implicit)&&a),a},null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"div",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"span",[["class","node-menu-item-value"]],null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,["",""]))],null,function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"node-menu-item-icon ",e.context.$implicit.cssClass,"")),t(e,3,0,e.context.$implicit.name)})}function c(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{menuContainer:0}),(t()(),a["\u0275eld"](1,0,null,null,3,"div",[["class","node-menu"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,[[1,0],["menuContainer",1]],null,2,"ul",[["class","node-menu-content"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,l)),a["\u0275did"](4,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,4,0,e.component.availableMenuItems)},null)}var d=n("HHO+"),f=n("Tff5"),p=n("/TVo"),h=n("urB8"),g=n("VUo1"),m=n("ZYjt"),b=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function y(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","node-checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,[[1,0],["checkbox",1]],null,0,"input",[["checkbox",""],["type","checkbox"]],[[8,"disabled",0],[8,"checked",0]],[[null,"change"]],function(t,e,n){var a=!0;return"change"===e&&(a=!1!==t.component.switchNodeCheckStatus()&&a),a},null,null))],null,function(t,e){var n=e.component;t(e,1,0,n.isReadOnly,n.tree.checked)})}function v(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","node-template"]],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent.parent,0),n.tree.nodeTemplate));t(e,0,0,r)})}function _(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null)),a["\u0275ppd"](1,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,0,0,t(e,1,0,a["\u0275nov"](e.parent.parent.parent,0),n.tree.value));t(e,0,0,r)})}function x(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","loading-children"]],null,null,null,null,null))],null,null)}function T(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function w(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","node-value"]],[[2,"node-selected",null]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onNodeSelected(n)&&a),a},null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,v)),a["\u0275did"](2,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_)),a["\u0275did"](4,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,x)),a["\u0275did"](6,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,2,null,T)),a["\u0275did"](8,540672,null,0,r.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](9,{$implicit:0})],function(t,e){var n=e.component;t(e,2,0,n.tree.nodeTemplate),t(e,4,0,!n.template),t(e,6,0,n.tree.childrenAreBeingLoaded());var a=t(e,9,0,n.tree.node);t(e,8,0,a,n.template)},function(t,e){t(e,0,0,e.component.isSelected)})}function S(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"input",[["class","node-value"],["type","text"]],null,[[null,"valueChanged"],[null,"keyup.enter"],[null,"blur"],[null,"keyup.esc"]],function(t,e,n){var r=!0,i=t.component;return"keyup.enter"===e&&(r=!1!==a["\u0275nov"](t,1).applyNewValue(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).applyNewValueByLoosingFocus(n.target.value)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,1).cancelEditing()&&r),"valueChanged"===e&&(r=!1!==i.applyNewValue(n)&&r),r},null,null)),a["\u0275did"](1,81920,null,0,i.NodeEditableDirective,[a.Renderer2,a.ElementRef],{nodeValue:[0,"nodeValue"]},{valueChanged:"valueChanged"})],function(t,e){t(e,1,0,e.component.tree.value)},null)}function O(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"div",[["class","node-left-menu"]],[[8,"innerHTML",1]],[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.showLeftMenu(n)&&a),a},null,null))],null,function(t,e){t(e,0,0,e.component.tree.leftMenuTemplate)})}function C(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},c,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],null,{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0)},null)}function k(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},c,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],null,{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0)},null)}function I(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"node-menu",[],null,[[null,"menuItemSelected"]],function(t,e,n){var a=!0;return"menuItemSelected"===e&&(a=!1!==t.component.onMenuItemSelected(n)&&a),a},c,u)),a["\u0275did"](1,245760,null,0,o.NodeMenuComponent,[a.Renderer2,s.NodeMenuService],{menuItems:[0,"menuItems"]},{menuItemSelected:"menuItemSelected"})],function(t,e){t(e,1,0,e.component.tree.menuItems)},null)}function D(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](1,4964352,null,0,d.TreeInternalComponent,[s.NodeMenuService,f.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,n.settings,n.template)},null)}function R(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275pod"](2,{display:0}),(t()(),a["\u0275and"](16777216,null,null,2,null,D)),a["\u0275did"](4,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,r.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component,r=t(e,2,0,n.tree.isNodeExpanded()?"block":"none");t(e,1,0,r),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.tree.childrenAsync)))},null)}function N(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](1,4964352,null,0,d.TreeInternalComponent,[s.NodeMenuService,f.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,1,0,e.context.$implicit,n.settings,n.template)},null)}function A(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,2,null,N)),a["\u0275did"](1,278528,null,0,r.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](131072,r.AsyncPipe,[a.ChangeDetectorRef]),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,a["\u0275unv"](e,1,0,a["\u0275nov"](e,2).transform(n.tree.childrenAsync)))},null)}function E(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,27,"ul",[["class","tree"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{rootless:0}),(t()(),a["\u0275eld"](3,0,null,null,24,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,15,"div",[["class","value-container"]],[[2,"selected",null]],[[null,"contextmenu"]],function(t,e,n){var a=!0;return"contextmenu"===e&&(a=!1!==t.component.showRightMenu(n)&&a),a},null,null)),a["\u0275did"](5,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](6,{rootless:0}),a["\u0275did"](7,212992,null,0,p.NodeDraggableDirective,[a.ElementRef,h.NodeDraggableService,a.Renderer2],{nodeDraggable:[0,"nodeDraggable"],tree:[1,"tree"]},null),(t()(),a["\u0275eld"](8,0,null,null,1,"div",[["class","folding"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.onSwitchFoldingType()&&a),a},null,null)),a["\u0275did"](9,278528,null,0,r.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,y)),a["\u0275did"](11,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,w)),a["\u0275did"](13,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,S)),a["\u0275did"](15,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,O)),a["\u0275did"](17,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,C)),a["\u0275did"](19,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,k)),a["\u0275did"](21,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,I)),a["\u0275did"](23,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,R)),a["\u0275did"](25,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,A)),a["\u0275did"](27,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.isRootHidden());t(e,1,0,"tree",a);var r=t(e,6,0,n.isRootHidden());t(e,5,0,"value-container",r),t(e,7,0,n.nodeElementRef,n.tree),t(e,9,0,"folding",n.tree.foldingCssClass),t(e,11,0,n.settings.showCheckboxes),t(e,13,0,!n.shouldShowInputForTreeValue()),t(e,15,0,n.shouldShowInputForTreeValue()),t(e,17,0,n.tree.hasLeftMenu()),t(e,19,0,n.tree.hasLeftMenu()&&n.isLeftMenuVisible&&!n.hasCustomMenu()),t(e,21,0,n.isRightMenuVisible&&!n.hasCustomMenu()),t(e,23,0,n.hasCustomMenu()&&(n.isRightMenuVisible||n.isLeftMenuVisible)),t(e,25,0,n.tree.keepNodesInDOM()),t(e,27,0,n.tree.isNodeExpanded()&&!n.tree.keepNodesInDOM())},function(t,e){t(e,4,0,e.component.isSelected)})}function L(t){return a["\u0275vid"](0,[a["\u0275pid"](0,g.SafeHtmlPipe,[m.DomSanitizer]),a["\u0275qud"](671088640,1,{checkboxElementRef:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,E)),a["\u0275did"](3,16384,null,0,r.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,3,0,e.component.tree)},null)}n("xtUU"),n.d(e,"a",function(){return P}),n.d(e,"b",function(){return M});var P=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function M(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{rootComponent:0}),(t()(),a["\u0275eld"](1,0,null,null,1,"tree-internal",[],null,null,null,L,b)),a["\u0275did"](2,4964352,[[1,4],["rootComponent",4]],0,d.TreeInternalComponent,[s.NodeMenuService,f.TreeService,a.ElementRef],{tree:[0,"tree"],settings:[1,"settings"],template:[2,"template"]},null)],function(t,e){var n=e.component;t(e,2,0,n.tree,n.settings,n.template)},null)}},nyYc:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".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\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] 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}})}()},o1bE:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".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:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}})}()},"o4+5":function(t,e,n){"use strict";n.d(e,"a",function(){return a}),n("aXbf");var a=function(){function t(t){this.formatter=t}return t.prototype.transform=function(t){return this.formatter.format_number(t,1e3,["","k","M","G","T","P","E","Z","Y"])},t}()},obpP:function(t,e){t.exports='<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\xe9sactiver 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="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>Moniteurs</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="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>Alertes</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>R\xe9serves</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\xe8mes 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>R\xe9cup\xe9ration des donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pour\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>"/>. Veuillez patienter...\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>Affichage des donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pr\xe9c\xe9demment mises en cache\n  pour \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>Impossible de charger les donn\xe9es\n          <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="<span>"/> pour\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  Veuillez v\xe9rifier l\'\xe9tat de sant\xe9 de la grappe.\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="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>S\xe9lectionner une langue</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>Chargement des donn\xe9es 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>Veuillez consulter la\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> relative \xe0\n  la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de surveillance.\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>Le tableau de bord Grafana n\'existe pas. Veuillez consulter\n  la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> relative \xe0\n  l\'ajout de tableaux de bord \xe0 Grafana.\n        </target>\n      </trans-unit>\n      <trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">\n        <source>Grafana Time Picker</source>\n        <target>S\xe9lecteur d\'heure Grafana</target>\n      </trans-unit>\n      <trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">\n        <source>Reset Settings</source>\n        <target>R\xe9initialiser les param\xe8tres</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\xc9chec du chargement des donn\xe9es.</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>s\xe9lectionn\xe9(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\xe9(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="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>Param\xe8tres</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\xe9n\xe9ralement pas n\xe9cessaire de modifier ces param\xe8tres par d\xe9faut.</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="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>Annuler</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>Param\xe8tres avanc\xe9s</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="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>Ce champs est requis.</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>Mod\xe8le IQN incorrect.</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>Un IQN est associ\xe9 \xe0 la notation \'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\xe8tres avanc\xe9s de cette cible ont \xe9t\xe9 modifi\xe9s.</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="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">\n        <source>At least \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.\n        </source>\n        <target>Au moins \n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> passerelles sont n\xe9cessaires.\n        </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="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>Des param\xe8tres avanc\xe9s de cette image ont \xe9t\xe9 modifi\xe9s.</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>Au moins 1 image est requise.</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="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 \xeatre unique.</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="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\xe8res et\n                        ne peuvent contenir que des lettres et les caract\xe8res \'.\', \'@\', \'-\', \'_\' 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="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="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">\n        <source>Initiator belongs to a group. Images will be configure in the group.</source>\n        <target>L\'initiateur appartient \xe0 un groupe dans lequel les images seront configur\xe9es.</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>Aucun \xe9l\xe9ment ajout\xe9.</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="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>Nom</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="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>Soumettre</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>Voulez-vous vraiment \n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> l\'\xe9l\xe9ment  s\xe9lectionn\xe9 \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="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>Authentification de la d\xe9couverte</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\xe8res et\n                        ne peuvent contenir que des lettres et les caract\xe8res \'.\', \'@\', \'-\', \'_\' ou \':\'.</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\nrelative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion des cibles iSCSI.\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="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>Les caract\xe8res \'/\' et \'@\' ne sont pas autoris\xe9s.</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="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- Aucune r\xe9serve RBD disponible --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- S\xe9lectionner une r\xe9serve --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>Utiliser une r\xe9serve de donn\xe9es d\xe9di\xe9e</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>R\xe9serve de donn\xe9es</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\xe9serve d\xe9di\xe9e qui stocke les donn\xe9es objet du RBD.</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- Aucune r\xe9serve de donn\xe9es disponible --</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="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>par exemple, 10 Gio</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="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>Fonctionnalit\xe9s</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>Avanc\xe9...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>Avanc\xe9</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="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>Taille de l\'objet</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>Unit\xe9 de segmentation</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- S\xe9lectionner une unit\xe9 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\xe9fini.</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\xe9 de segmentation est sup\xe9rieure \xe0 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\xe9 de segmentation est d\xe9finie.</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 \xeatre sup\xe9rieur \xe0 0.</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="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>Performance globale</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="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\xe9faut</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>Valeur par d\xe9faut du daemon</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="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>Valeurs</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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle ne peut pas \xeatre sup\xe9rieure \xe0 \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>La valeur entr\xe9e est trop faible ! Elle ne peut pas \xeatre inf\xe9rieure \xe0 \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="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>Liste d\'h\xf4tes</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>Aucune entr\xe9e trouv\xe9e</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="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 \xeatre charg\xe9e.</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\xe9e 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\xe9e doit \xeatre 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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle doit \xeatre inf\xe9rieure ou \xe9gale \xe0 \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>La valeur entr\xe9e est trop faible ! Elle doit \xeatre sup\xe9rieure ou \xe9gale \xe0 \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\xe9e doit \xeatre 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\xe9e doit \xeatre un nombre ou une valeur d\xe9cimale.</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>Mise \xe0 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\xe9</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="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>Drapeaux OSD \xe0 l\'\xe9chelle de la grappe</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>Priorit\xe9 de r\xe9cup\xe9ration des OSD</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>Priorit\xe9</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>Personnaliser les valeurs de priorit\xe9</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>La valeur entr\xe9e est trop \xe9lev\xe9e ! Elle ne peut pas \xeatre sup\xe9rieure \xe0 \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>La valeur entr\xe9e est trop faible ! Elle ne peut pas \xeatre inf\xe9rieure \xe0 \n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>R\xe9\xe9valuer l\'OSD</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 \xeatre comprise entre 0 et 1.</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>R\xe9\xe9valuer</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>Nettoyage des \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>OSD\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>Vous \xeates sur le point d\'appliquer un nettoyage \n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\n            \xe0 l\'OSD \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\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="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>L\'\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> sera marqu\xe9\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>"/> si vous continuez.\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>L\'OSD ne peut pas \xeatre d\xe9truit de fa\xe7on s\xe9curis\xe9e !</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>"/>L\'OSD \n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> sera\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>"/> si vous continuez.\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>D\xe9tails</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>Sant\xe9</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  relative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion du 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>Acc\xe8s 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\xe9par\xe9es 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\xe8s</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="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>Export NFS \n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </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\xe9lectionner 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="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- S\xe9lectionner 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\xe9lectionner 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\xe9lectionner 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="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>Libell\xe9 de s\xe9curit\xe9</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>Activer le libell\xe9 de s\xe9curit\xe9</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 \xeatre 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\xe9pertoire sera cr\xe9\xe9</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 \xeatre constitu\xe9 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\xe9\xe9</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>Autre chemin d\'acc\xe8s aux montages \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>"/> (doit commencer par /).\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\xe9pertoires (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\xe9rentes options de balise, il est possible d\'exporter plusieurs fois le m\xeame 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>Position occup\xe9e par cet export \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>"/>\n                dans le \n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>syst\xe8me de fichiers Pseudo\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/> (doit \xeatre 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\xe9rentes options de pseudo, il est possible d\'exporter exporter plusieurs fois le m\xeame chemin.</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- Aucun type d\'acc\xe8s disponible --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- S\xe9lectionner le type d\'acc\xe8s --</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\xe9lectionnez le type de squash d\'ID utilisateur qui est effectu\xe9 --</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>Le nom doit \xeatre exclusivement compos\xe9 de caract\xe8res alphanum\xe9riques, 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\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</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\xe9es (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 \xeatre \xe9gal ou sup\xe9rieur \xe0 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 \xeatre \xe9gal ou sup\xe9rieur \xe0 1.</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>Estimateur de durabilit\xe9 (c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>Localit\xe9 (l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Domaine de d\xe9faillance Crush</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Localit\xe9 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\xe9riph\xe9rique 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\xe9pertoire</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="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>Fermer</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\xe9serve Ceph s\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>Type de r\xe9serve</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- S\xe9lectionner un type de r\xe9serve --</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\xe9cessaire.</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\xe9rer autant de groupes de placements. Veuillez recalculer le nombre de groupes de placements n\xe9cessaires.</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>Vous pouvez uniquement augmenter le nombre de groupes de placements d\'une r\xe9serve existante.\n                Votre r\xe9serve contient actuellement \n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> groupes de placements.\n        </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="37dd747f97e873d4280500da71b0076805f530a1" 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>Les param\xe8tres actuels des groupes de placements ont \xe9t\xe9 calcul\xe9s pour vous.\nV\xe9rifiez que les valeurs correspondent \xe0 vos besoins avant de les soumettre.</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Jeu de r\xe8gles Crush</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- S\xe9lectionner une r\xe8gle crush --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>R\xe8gle Crush</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>\xc9tapes Crush</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>La r\xe8gle ne peut pas \xeatre utilis\xe9e dans la grappe active, car celle-ci\n comporte un nombre d\'OSD inf\xe9rieur au nombre d\'OSD minimum requis par cette r\xe8gle.</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>Taille de r\xe9plication</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="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>La taille sp\xe9cifi\xe9e est en dehors de la plage. Une valeur comprise entre\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> et \n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> est valide.\n        </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\xe9lectionner un profil de code d\'effacement --</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>\xc9crasements 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="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 \xeatre sup\xe9rieure \xe0 0</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 \xeatre sup\xe9rieure \xe0 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="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>Il n\'est pas possible de cr\xe9er une r\xe9serve RBD dont le nom contient \'/\'.</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>Modifiez le nom ou supprimez \'rbd\' de la liste des applications.</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>Liste des r\xe9serves</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>Veuillez consulter la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>documentation\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\n  relative \xe0 la configuration et \xe0 l\'activation de la fonctionnalit\xe9 de gestion Object Gateway.\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>Chargement des donn\xe9es de compartiment...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>Les donn\xe9es du compartiment n\'ont pas pu \xeatre charg\xe9es.</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\xe9lectionn\xe9 est d\xe9j\xe0 en cours d\'utilisation.</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>Propri\xe9taire</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- S\xe9lectionner un utilisateur --</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="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\xe9lectionner 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\xe9lectionner une autorisation --</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="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\xe9lectionner un nom d\'utilisateur --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>G\xe9n\xe9rer automatiquement la clef</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>Clef d\'acc\xe8s</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>Clef secr\xe8te</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\xe9lectionn\xe9 est d\xe9j\xe0 utilis\xe9.</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>lire, \xe9crire</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\xe9 Swift</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>G\xe9n\xe9rer 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\xe9s utilisateur\u2026</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\xe9s utilisateur n\'ont pas pu \xeatre charg\xe9es.</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\xe9cifi\xe9 est d\xe9j\xe0 utilis\xe9.</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 \xe9lectronique</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 \xe9lectronique 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 \xe9lectronique sp\xe9cifi\xe9e est d\xe9j\xe0 utilis\xe9e.</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="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>La valeur saisie doit \xeatre &gt;= 0.</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="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>Utilisateurs secondaires</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="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>Supprimer</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="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="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>Afficher</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="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>Fonctionnalit\xe9s</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\xe9.</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="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>Activ\xe9</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>Taille illimit\xe9e</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\xe9s</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="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>Quota de compartiments</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="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="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>D\xe9sol\xe9, 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>Retournez \xe0 la \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>page de connexion\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>. Vous serez d\xe9connect\xe9 du fournisseur d\'identit\xe9 lorsque vous tenterez de vous reconnecter.\n        </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="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>Adresse \xe9lectronique</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>L\'adresse \xe9lectronique n\'est pas valide.</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>R\xf4les</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 \xeates sur le point de supprimer les autorisations "lecture/mise \xe0 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\xf4les 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="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\xe9sol\xe9, vous n\'\xeates pas autoris\xe9 \xe0 voir ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>D\xe9sol\xe9s, nous ne parvenons pas \xe0 trouver ce que vous cherchez.</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>Tout supprimer</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>Notifications r\xe9centes</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>Il n\'y a aucune t\xe2che en arri\xe8re-plan.</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>T\xe2ches en arri\xe8re-plan</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>\xc0 propos de</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>Param\xe8tres 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\xe9</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>Connect\xe9 en tant que\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="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>Se d\xe9connecter</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="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>D\xe9tails des performances</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\xe8gle 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="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\xe9</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="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>Syst\xe8me</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {Non} 1 {Oui} }</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="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="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>Global</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="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>R\xe9serve</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\xe9rit\xe9e et utilis\xe9e \xe0 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="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\xe9tadonn\xe9es non disponibles</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>M\xe9tadonn\xe9es</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>Histogramme non disponible : \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>\xc9critures</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="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 \xe0 jour possible lors de l\'ex\xe9cution (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\'\xe9num\xe9nation</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\xe9tadonn\xe9es</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\xe9bit client</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>Lectures/\xc9critures client</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>D\xe9bit de r\xe9cup\xe9ration</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\xe9 brute</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="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\xe9</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>"/> Consultez les \n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>journaux\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> pour plus d\'informations.\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>D\xe9placer une image vers la corbeille.</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>Pour d\xe9placer \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/> vers la corbeille,\n          cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>D\xe9placer une image\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>. Vous pouvez \xe9galement s\xe9lectionner une date d\'expiration.\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\xc9G\xc9</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\xe9j\xe0 expir\xe9. Veuillez s\xe9lectionner une date ult\xe9rieure ou laisser le champ vide.</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>D\xe9placer une image</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>Pr\xe9sentation</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="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>Disponible uniquement pour les images RBD pour lesquelles \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>"/> est activ\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>R\xe9serve de donn\xe9es</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>Cr\xe9\xe9</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>Provisionn\xe9</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\xe9 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\xe9fixe 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\xe9s</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>Ce param\xe8tre remplace la valeur 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>Il s\'agit de la valeur globale. Aucune valeur de cette option n\'a \xe9t\xe9 d\xe9finie pour cette image.</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instantan\xe9 RDB \n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Renommer} other {Cr\xe9er} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> instantan\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>PROT\xc9G\xc9</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>NON PROT\xc9G\xc9</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>Vous \xeates sur le point de revenir \xe0 l\'\xe9tat 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="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>Pour purger, s\xe9lectionner une image ou toutes, puis cliquez sur</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>R\xe9serve :</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>Nom de la r\xe9serve...</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="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>Cette image est prot\xe9g\xe9e jusqu\'au \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="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>Probl\xe8mes</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\xeat</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\xe9serve</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>Pour modifier le mode de mise en miroir de la r\xe9serve\xa0\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>"/>, s\xe9lectionnez un nouveau mode dans la liste, puis cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Mettre \xe0 jour\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 \xeatre supprim\xe9es avant de d\xe9sactiver 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  homologue de mise en miroir de la r\xe9serve\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/> les attributs\n          de mise en miroir de la r\xe9serve \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>"/> et cliquez sur \n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>Soumettre\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\xe9par\xe9es 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 \xeatre cod\xe9e en base64.</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>D\xe9tails des niveaux de mise en cache</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="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients: \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>Clients : \n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\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\xe9couverte mise \xe0 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 \xe0 ajouter une image \xe0 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 \xe0 ajouter un initiateur \xe0 la cible.</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="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>Nom d\'h\xf4te</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\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>Op\xe9rations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>Op\xe9rations d\'\xe9criture</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\xe8me</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\xc9tat</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="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>D\xe9sactiv\xe9</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>Mode d\'\xe9dition</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 \xe0 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="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>Valeur</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\xe9cessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>Journalisation (n\xe9cessite exclusive-lock)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>Fast diff (n\xe9cessite object-map)</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="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>Aplatir</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>D\xe9placer vers la corbeille</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>Cr\xe9er</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="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>Prot\xe9ger</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="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>Cloner</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>Revenir \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>Retour \xe0 l\'\xe9tat initial de l\'instantan\xe9 RBD</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>Intantan\xe9 RBD</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="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>Supprim\xe9 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>\xe9tat</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\xf4te</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="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\xe9</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="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>Daemons en veille</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 \xeatre mise \xe0 jour au moment de l\'ex\xe9cution.</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\xa0 la base de donn\xe9es de configuration de Monitor. Nous n\'autorisons pas le r\xe9glage de cette option via \'ceph config\n\xa0 set ...\'. Cette option doit \xeatre configur\xe9e via ceph.conf ou via\n\xa0 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\xe9marrage 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\xe9ation 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\xe9ation 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>Option de configuration mise \xe0 jour \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="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="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">\n        <source>Updated options for module "\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>".\n        </source>\n        <target>Options mises \xe0 jour pour le module &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>&amp;quot;.\n        </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\xe9sactiver</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>Reconnexion en cours\u2026 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="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>Pas rentr\xe9s</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 \xe9t\xe9 marqu\xe9s comme sortis ne seront pas marqu\xe9s comme rentr\xe9s \xe0 leur d\xe9marrage.</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\xe9s automatiquement comme sortis apr\xe8s l\'intervalle configur\xe9.</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>Pas d\xe9marr\xe9s</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\xe9s \xe0 d\xe9marrer.</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>Pas arr\xeat\xe9s</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\xe9faillance des OSD sont ignor\xe9s, de sorte que les moniteurs ne marquent pas les OSD comme \xe9tant arr\xeat\xe9s.</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 \xe9critures</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\xe9sactiv\xe9</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\xe9sactiv\xe9</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="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>Pas de r\xe9cup\xe9ration</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>La r\xe9cup\xe9ration 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\xe9es</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\xe9cup\xe9rations</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\xe9es 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 \xe0 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 \xe0 jour</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="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>Marquer comme sorti</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="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>Marquer comme rentr\xe9</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>rentr\xe9</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>Marquer comme arr\xeat\xe9</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>arr\xeat\xe9</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="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\xe9 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="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">\n        <source>OSD</source>\n        <target>OSD</target>\n      </trans-unit>\n      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>purg\xe9</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>D\xe9truire</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>d\xe9truire</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>d\xe9truit</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="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>Octets d\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>Op\xe9rations de lecture</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>Op\xe9rations d\'\xe9criture</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>Marquer l\'OSD comme \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>Marquer comme \n          <x id="INTERPOLATION" equiv-text="{{markAction}}"/>\n        </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\xe9cup\xe9rations 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\xe9marrages uniques de r\xe9cup\xe9rations</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>Mise en veille de la r\xe9cup\xe9ration</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>Personnalis\xe9</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>Priorit\xe9 de la vitesse de r\xe9cup\xe9ration des OSD&amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>&amp;quot;  mise \xe0 jour\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> a \xe9t\xe9 initialis\xe9(e) sur l\'OSD suivant : \n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </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\xe9</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>D\xe9marr\xe9</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>Utilis\xe9</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\xe9</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="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>op\xe9rationnel</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>aucun syst\xe8me 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\xe9.</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\xe8me de fichiers CephFS</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(h\xe9rit\xe9 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\xe9rit\xe9 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\xe9lectionner le type de squashing d\'ID utilisateur effectu\xe9 --</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="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>Export</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>\xc2ge \xe9vict min.</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\xc2ge 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\xe9e</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\xe9serve peut avoir quatre d\xe9finitions 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\xe8re autoris\xe9s \'_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\xe8res.</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="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>profil de code d\'effacement</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>Taille de la r\xe9plique</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\xe8gles Crush</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>Octets d\'\xe9criture</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>Compartiment Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; mis \xe0 jour\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>Compartiment Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; cr\xe9\xe9\n        </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="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>compartiments</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>Utilisateur Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; mis \xe0 jour\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>Utilisateur Object Gateway &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>&amp;quot; cr\xe9\xe9\n        </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="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>utilisateurs</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>P\xe9rim\xe8tre</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="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">\n        <source>Created role \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\'\n        </source>\n        <target>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' cr\xe9\xe9\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>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' mis \xe0 jour\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>R\xf4le syst\xe8me</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>R\xf4le \'\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\' supprim\xe9\n        </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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; cr\xe9\xe9\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>Mettre \xe0 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 \xe9t\xe9 automatiquement d\xe9connect\xe9, car vos r\xf4les ont chang\xe9.</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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; mis \xe0 jour\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>Utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot; supprim\xe9\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>\xc9chec de la suppression de l\'utilisateur &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;\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>Vous \xeates connect\xe9 en tant que &amp;quot;\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>&amp;quot;.\n        </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\xe9 en parties de blocs de donn\xe9es, chacune \xe9tant stock\xe9e sur un OSD diff\xe9rent.</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\xe9rents OSD.\n Le nombre de blocs de codage correspond \xe9galement au nombre d\'OSD qui peuvent \xeatre arr\xeat\xe9s sans perdre de donn\xe9es.</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\xe9n\xe9rique et le plus flexible,\n\xa0 c\'est aussi la valeur par d\xe9faut des r\xe9serves cod\xe9es \xe0 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\xe9finir k\n et m. La technique cauchy_good peut \xeatre plus rapide, mais vous devez choisir la taille du paquet\n avec pr\xe9caution. reed_sol_r6_op, liberation, blaum_roth et liber8tion sont des \xe9quivalents RAID6\n en ce sens qu\'ils ne peuvent \xeatre configur\xe9s 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\xa0 Choisir la bonne taille de paquet est difficile.\n\xa0 La documentation de jerasure contient de nombreuses informations \xe0 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\xe9 \xe0 effacement est stock\xe9 sur\n plusieurs OSD, la r\xe9cup\xe9ration \xe0 la suite de la perte d\'un OSD n\xe9cessite la lecture de tous les autres.\n Par exemple, si jerasure est configur\xe9 avec k=8 et m=4, la perte d\'un OSD n\xe9cessite de lire\n les onze autres pour pouvoir effectuer une r\xe9paration.\n\n Le plugin de code d\'effacement lrc cr\xe9e des blocs de parit\xe9 locale pour permettre la r\xe9cup\xe9ration avec\n moins d\'OSD. Par exemple, si lrc est configur\xe9 avec k=8, m=4 et l=4,\n un bloc de parit\xe9 suppl\xe9mentaire est cr\xe9\xe9 pour chaque groupe de quatre OSD. Lorsqu\'un seul OSD est perdu, il peut \xeatre\n r\xe9cup\xe9r\xe9 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\xe9es et de codage en ensembles de localit\xe9 de taille. Par exemple,\n pour k=4 et m=2, lorsque locality=3, deux groupes de trois sont cr\xe9\xe9s. Chaque ensemble peut\n \xeatre r\xe9cup\xe9r\xe9 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\xe9fini\n par I sera stock\xe9. Par exemple, s\'il est r\xe9gl\xe9 sur rack, chaque groupe de blocs I sera\n plac\xe9 dans un rack diff\xe9rent. Il est utilis\xe9 pour cr\xe9er une \xe9tape de la r\xe8gle CRUSH telle que l\'\xe9tape de choix\n d\'un rack. S\'il n\'est pas d\xe9fini, aucun regroupement de ce type n\'est effectu\xe9.</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\xe8que 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\xe9sente sous deux formes Reed Solomon.\n Si reed_sol_van est d\xe9fini, il \xe9quivaut \xe0 Vandermonde. Si cauchy est configur\xe9, il \xe9quivaut \xe0 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\xe8que SHEC multiple.\n Il permet \xe0 Ceph de r\xe9cup\xe9rer les donn\xe9es 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\xe9, chacun incluant chaque bloc de donn\xe9es dans sa\n plage de calcul. Ce nombre est utilis\xe9 comme estimateur de durabilit\xe9. Par exemple, si c=2,\n 2 OSD peuvent \xeatre arr\xeat\xe9s sans perte de donn\xe9es.</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\xe9 pour la premi\xe8re \xe9tape de la r\xe8gle CRUSH.\n Par exemple, l\'\xe9tape de d\xe9finition des valeurs par d\xe9faut.</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\xe9rifiez qu\'il n\'existe pas deux blocs dans un compartiment avec le m\xeame domaine de\n d\xe9faillance. Par exemple, si le domaine de d\xe9faillance est un h\xf4te, deux blocs ne seront pas stock\xe9s sur le m\xeame\n h\xf4te. Cette option est utilis\xe9e pour cr\xe9er une \xe9tape de la r\xe8gle 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\xe9riph\xe9riques d\'une classe sp\xe9cifique\n (par exemple, ssd ou hdd), en utilisant les noms des classes de p\xe9riph\xe9riques 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\xe9finissez le nom du r\xe9pertoire \xe0 partir duquel le plug-in de code d\'effacement est charg\xe9.</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>Autoriser toutes les op\xe9rations</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\xe9rations 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\xe9rations de lecture ou d\'\xe9criture, 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\'\xe9criture ni aucune autre op\xe9ration modifiant les attributs d\'un fichier ou le contenu d\'un r\xe9pertoire.</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\xe8s</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- S\xe9lectionner la priorit\xe9 --</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>\xc9lev\xe9e</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>Les 5 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>Les 15 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>Les 30 derni\xe8res minutes</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>La derni\xe8re heure (par d\xe9faut)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>Les 3 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>Les 6 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>Les 12 derni\xe8res heures</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>Les 24 derni\xe8res 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\xe9but de la journ\xe9e</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\xe8re</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\xe9but 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\xe9but 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\xe9e \xe9coul\xe9e</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>L\'ann\xe9e derni\xe8re</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>Cette ann\xe9e</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>Depuis le d\xe9but de l\'ann\xe9e</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>Les 2 derni\xe8res ann\xe9es</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>Les 5 derni\xe8res ann\xe9es</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="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>Aucun \xe9l\xe9ment s\xe9lectionn\xe9.</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>D\xe9s\xe9lectionnez l\'\xe9l\xe9ment pour le s\xe9lectionner \xe0 nouveau.</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>Limite de s\xe9lection 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 \xe9l\xe9ment disponible.</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="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>Qualit\xe9 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\xe9e 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\xe9e d\'op\xe9rations 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\xe9e 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\xe9e d\'op\xe9rations 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 \xe9criture</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\xe9e d\'\xe9criture 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 \xe9criture</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\xe9e d\'op\xe9rations d\'\xe9criture 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\xe9e.</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\xe9rations E/S souhait\xe9e.</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\xe9rations 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 \xe9criture</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\xe9e.</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 \xe9criture</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\xe9rations d\'\xe9criture souhait\xe9e.</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>Impossible de \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\xe9cution</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>ex\xe9cuter</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>Ex\xe9cut\xe9</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>t\xe2che inconnue</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>En cours de cr\xe9ation</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>cr\xe9er</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>En cours de mise \xe0 jour</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>mettre \xe0 jour</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>Mis \xe0 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="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>supprimer</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>Supprim\xe9</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>Instantan\xe9 RBD \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\'\n        </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>mode miroir pour la r\xe9serve \'\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>mettre en miroir l\'homologue pour la r\xe9serve \'\n          <x id="INTERPOLATION" equiv-text="{{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>Le nom est d\xe9j\xe0 utilis\xe9 par \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>Le nom est d\xe9j\xe0 utilis\xe9 par \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>Le nom est d\xe9j\xe0 utilis\xe9 par \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.\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}}"/> contient des instantan\xe9s.\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="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>Clon\xe9</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>L\'instantan\xe9 de \n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> doit \xeatre prot\xe9g\xe9.\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="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>Copi\xe9</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="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>Applati</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>Nom d\xe9j\xe0 utilis\xe9 par \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>Impossible d\'annuler la protection de \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> , car cet \xe9l\xe9ment contient des images enfants.\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>Impossible de supprimer \n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>, car cet \xe9l\xe9ment est prot\xe9g\xe9.\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>Retour \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>r\xe9tablir l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>R\xe9tabli \xe0 l\'\xe9tat initial</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>En cours de d\xe9placement</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>d\xe9placer</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>D\xe9plac\xe9</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}}"/>\' d\xe9plac\xe9e vers la corbeille\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="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>Restaur\xe9</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}}"/>\' vers \'\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>Le nom d\'image \'\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\' est d\xe9j\xe0 utilis\xe9.\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="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>Purg\xe9</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>toutes les r\xe9serves</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 de \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\xe9sactiver la mise en miroir, car l\'\xe9l\xe9ment contient un homologue.</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>r\xe9serve \'\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 de code d\'effacement \'\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>cible \'\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>'},ohIB:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("ae7Z");function r(t){for(var e=0,n=0,a=t;n<a.length;n++)e+=a[n].flexGrow||0;return e}function i(t,e){for(var n=0,a=e;n<a.length;n++){var r=t.indexOf(a[n]);t.splice(r,1)}}function o(t,e){void 0===e&&(e=300);for(var n=0,a=0,r=t;a<r.length;a++)n+=r[a].width||e;return n}e.getTotalFlexGrow=r,e.adjustColumnWidths=function(t,e){var n=a.columnsTotalWidth(t),i=r(t),o=a.columnsByPin(t);n!==e&&function(t,e,n){for(var a in t)for(var r=0,i=t[a];r<i.length;r++)(d=i[r]).canAutoResize?d.width=0:(e-=d.width,n-=d.flexGrow?d.flexGrow:0);var o={},s=e;do{var u=s/n;for(var a in s=0,t)for(var l=0,c=t[a];l<c.length;l++){var d;if((d=c[l]).canAutoResize&&!o[d.prop]){var f=d.width+d.flexGrow*u;void 0!==d.minWidth&&f<d.minWidth?(s+=f-d.minWidth,d.width=d.minWidth,o[d.prop]=!0):d.width=f}}}while(0!==s)}(o,e,i)},e.forceFillColumnWidths=function(t,e,n,a,r){void 0===r&&(r=300);for(var s=t.slice(n+1,t.length).filter(function(t){return!1!==t.canAutoResize}),u=0,l=s;u<l.length;u++)(b=l[u]).$$oldWidth||(b.$$oldWidth=b.width);var c=0,d=!1,f=o(t,r),p=e-f,h=[];do{c=p/s.length,d=f>=e;for(var g=0,m=s;g<m.length;g++){var b=m[g];if(d&&a)b.width=b.$$oldWidth||b.width||r;else{var y=(b.width||r)+c;b.minWidth&&y<b.minWidth?(b.width=b.minWidth,h.push(b)):b.maxWidth&&y>b.maxWidth?(b.width=b.maxWidth,h.push(b)):b.width=y}b.width=Math.max(0,b.width)}p=e-(f=o(t)),i(s,h)}while(p>0&&0!==s.length)}},ou9H:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("MGBS"),i=n("zotm");function o(t,e){return function(n){return n.lift(new s(t,e))}}var s=function(){function t(t,e){this.keySelector=t,this.flushes=e}return t.prototype.call=function(t,e){return e.subscribe(new u(t,this.keySelector,this.flushes))},t}(),u=function(t){function e(e,n,a){var r=t.call(this,e)||this;return r.keySelector=n,r.values=new Set,a&&r.add(Object(i.a)(r,a)),r}return a.__extends(e,t),e.prototype.notifyNext=function(t,e,n,a,r){this.values.clear()},e.prototype.notifyError=function(t,e){this._error(t)},e.prototype._next=function(t){this.keySelector?this._useKeySelector(t):this._finalizeNext(t,t)},e.prototype._useKeySelector=function(t){var e,n=this.destination;try{e=this.keySelector(t)}catch(a){return void n.error(a)}this._finalizeNext(e,t)},e.prototype._finalizeNext=function(t,e){var n=this.values;n.has(t)||(n.add(t),this.destination.next(e))},e}(r.a)},ozli:function(t,e,n){"use strict";var a=n("zfKp");e.subscribeToObservable=function(t){return function(e){var n=t[a.observable]();if("function"!=typeof n.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return n.subscribe(e)}}},"p//D":function(t,e,n){"use strict";e.rxSubscriber="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random(),e.$$rxSubscriber=e.rxSubscriber},"p/rL":function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_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\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}()},p0Sj:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("IUTb"),r=n("PU8L"),i=n("G5J1"),o=n("dEwP"),s=n("nkY7");function u(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){var n=t[t.length-1];Object(s.a)(n)?t.pop():n=null;var u=t.length;return 1!==u||n?u>0?Object(o.a)(Object(a.a)(t,n),e):Object(o.a)(Object(i.b)(n),e):Object(o.a)(Object(r.a)(t[0]),e)}}},p0ib:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("6blF"),r=n("nkY7"),i=n("Zn8D"),o=n("IUTb");function s(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=Number.POSITIVE_INFINITY,s=null,u=t[t.length-1];return Object(r.a)(u)?(s=t.pop(),t.length>1&&"number"==typeof t[t.length-1]&&(n=t.pop())):"number"==typeof u&&(n=t.pop()),null===s&&1===t.length&&t[0]instanceof a.a?t[0]:Object(i.a)(n)(Object(o.a)(t,s))}},p4Cf:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},pKUh:function(t,e,n){"use strict";n.d(e,"a",function(){return o}),n.d(e,"b",function(){return l});var a=n("CcnG"),r=n("YAQW"),i=n("Ip0R"),o=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275ted"](-1,null,[" \u274c"]))],null,null)}function u(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"li",[],[[2,"active",null],[2,"disabled",null]],null,null,null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](2,2),(t()(),a["\u0275eld"](3,0,null,null,5,"a",[["class","nav-link"],["href","javascript:void(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["\u0275eld"](4,16777216,null,null,2,"span",[],null,null,null,null,null)),a["\u0275did"](5,16384,null,0,r.a,[a.ViewContainerRef],{ngTransclude:[0,"ngTransclude"]},null),(t()(),a["\u0275ted"](6,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,s)),a["\u0275did"](8,16384,null,0,i.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,"nav-item",e.context.$implicit.customClass||"");t(e,1,0,n),t(e,5,0,e.context.$implicit.headingRef),t(e,8,0,e.context.$implicit.removable)},function(t,e){t(e,0,0,e.context.$implicit.active,e.context.$implicit.disabled),t(e,3,0,e.context.$implicit.id?e.context.$implicit.id+"-link":"",e.context.$implicit.active,e.context.$implicit.disabled),t(e,6,0,e.context.$implicit.heading)})}function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"ul",[["class","nav"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==n.preventDefault()&&a),a},null,null)),a["\u0275did"](1,278528,null,0,i.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,u)),a["\u0275did"](3,278528,null,0,i.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"div",[["class","tab-content"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"nav",n.classMap),t(e,3,0,n.tabs)},null)}},pL04:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},pMnS:function(t,e,n){"use strict";n.d(e,"a",function(){return u});var a=n("CcnG"),r=n("ZYCi"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["\u0275did"](1,212992,null,0,r.q,[r.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"ng-component",[],null,null,null,o,i)),a["\u0275did"](1,49152,null,0,r.u,[],null,null)],null,null)}var u=a["\u0275ccf"]("ng-component",r.u,s,{},{},[])},paOr:function(t,e,n){"use strict";var a=n("RDha"),r=n("cdu6");t.exports=function(t){var e=a.noop;t.LinearScaleBase=r.extend({getRightValue:function(t){return"string"==typeof t?+t:r.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=a.sign(t.min),r=a.sign(t.max);n<0&&r<0?t.max=0:n>0&&r>0&&(t.min=0)}var i=void 0!==e.min||void 0!==e.suggestedMin,o=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)),i!==o&&t.min>=t.max&&(i?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:a.valueOrDefault(e.fixedStepSize,e.stepSize)},i=t.ticks=function(t,e){var n,r,i,o=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var s=a.niceNum(e.max-e.min,!1);i=a.niceNum(s/(t.maxTicks-1),!0),void 0!==(r=t.precision)&&(n=Math.pow(10,r),i=Math.ceil(i*n)/n)}var u=Math.floor(e.min/i)*i,l=Math.ceil(e.max/i)*i;a.isNullOrUndef(t.min)||a.isNullOrUndef(t.max)||!t.stepSize||a.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(u=t.min,l=t.max);var c=(l-u)/i;c=a.almostEquals(c,Math.round(c),i/1e3)?Math.round(c):Math.ceil(c),r=1,i<1&&(r=Math.pow(10,1-Math.floor(a.log10(i))),u=Math.round(u*r)/r,l=Math.round(l*r)/r),o.push(void 0!==t.min?t.min:u);for(var d=1;d<c;++d)o.push(Math.round((u+d*i)*r)/r);return o.push(void 0!==t.max?t.max:l),o}(r,t);t.handleDirectionalChanges(),t.max=a.max(i),t.min=a.min(i),e.reverse?(i.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),r.prototype.convertTicksToLabels.call(t)}})}},poJ0:function(t,e,n){"use strict";var a=n("VKeD");e.subscribeToIterable=function(t){return function(e){for(var n=t[a.iterator]();;){var r=n.next();if(r.done){e.complete();break}if(e.next(r.value),e.closed)break}return"function"==typeof n.return&&e.add(function(){n.return&&n.return()}),e}}},psW0:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("mrSG"),r=n("zotm"),i=n("MGBS"),o=n("rPjj"),s=n("67Y/"),u=n("0/uQ");function l(t,e,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"function"==typeof e?function(a){return a.pipe(l(function(n,a){return Object(u.a)(t(n,a)).pipe(Object(s.a)(function(t,r){return e(n,t,a,r)}))},n))}:("number"==typeof e&&(n=e),function(e){return e.lift(new c(t,n))})}var c=function(){function t(t,e){void 0===e&&(e=Number.POSITIVE_INFINITY),this.project=t,this.concurrent=e}return t.prototype.call=function(t,e){return e.subscribe(new d(t,this.project,this.concurrent))},t}(),d=function(t){function e(e,n,a){void 0===a&&(a=Number.POSITIVE_INFINITY);var r=t.call(this,e)||this;return r.project=n,r.concurrent=a,r.hasCompleted=!1,r.buffer=[],r.active=0,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.active<this.concurrent?this._tryNext(t):this.buffer.push(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(a){return void this.destination.error(a)}this.active++,this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var a=new o.a(this,void 0,void 0);this.destination.add(a),Object(r.a)(this,t,e,n,a)},e.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()},e.prototype.notifyNext=function(t,e,n,a,r){this.destination.next(e)},e.prototype.notifyComplete=function(t){var e=this.buffer;this.remove(t),this.active--,e.length>0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},e}(i.a)},pshJ:function(t,e,n){"use strict";e.isFunction=function(t){return"function"==typeof t}},pugT:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("isby"),r=n("McSo"),i=n("2Bdj"),o=n("awvh"),s=function(){function t(t){this.closed=!1,this._parent=null,this._parents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}var e;return t.prototype.unsubscribe=function(){var t,e=!1;if(!this.closed){var n=this._parent,s=this._parents,l=this._unsubscribe,c=this._subscriptions;this.closed=!0,this._parent=null,this._parents=null,this._subscriptions=null;for(var d=-1,f=s?s.length:0;n;)n.remove(this),n=++d<f&&s[d]||null;if(Object(i.a)(l))try{l.call(this)}catch(h){e=!0,t=h instanceof o.a?u(h.errors):[h]}if(Object(a.a)(c))for(d=-1,f=c.length;++d<f;){var p=c[d];if(Object(r.a)(p))try{p.unsubscribe()}catch(h){e=!0,t=t||[],h instanceof o.a?t=t.concat(u(h.errors)):t.push(h)}}if(e)throw new o.a(t)}},t.prototype.add=function(e){var n=e;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)){var a=n;(n=new t)._subscriptions=[a]}break;default:if(!e)return t.EMPTY;throw new Error("unrecognized teardown "+e+" added to Subscription.")}if(n._addParent(this)){var r=this._subscriptions;r?r.push(n):this._subscriptions=[n]}return n},t.prototype.remove=function(t){var e=this._subscriptions;if(e){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}},t.prototype._addParent=function(t){var e=this._parent,n=this._parents;return e!==t&&(e?n?-1===n.indexOf(t)&&(n.push(t),!0):(this._parents=[t],!0):(this._parent=t,!0))},t.EMPTY=((e=new t).closed=!0,e),t}();function u(t){return t.reduce(function(t,e){return t.concat(e instanceof o.a?e.errors:e)},[])}},pxLl:function(t,e,n){"use strict";n.d(e,"a",function(){return c});var a=n("mrSG"),r=n("t/Na"),i=n("F/XL"),o=n("psW0"),s=n("xTzq"),u=n("CcnG"),l=n("pL04"),c=function(){function t(t){this.http=t,this.url="api/perf_counters"}return t.prototype.list=function(){return this.http.get(this.url)},t.prototype.get=function(t,e){return this.http.get(this.url+"/"+t+"/"+e).pipe(Object(o.a)(function(t){return Object(i.a)(t.counters)}))},t.ngInjectableDef=u.defineInjectable({factory:function(){return new t(u.inject(r.c))},token:t,providedIn:l.a}),t=a.__decorate([s.a,a.__metadata("design:paramtypes",[r.c])],t)}()},q8Fl:function(t,e,n){"use strict";var a=n("RDha"),r=["animationstart","webkitAnimationStart"],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function o(t,e){var n=a.getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?Number(r[1]):void 0}var s=!!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 u(t,e,n){t.addEventListener(e,n,s)}function l(t,e,n){t.removeEventListener(e,n,s)}function c(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}}t.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,n="from{opacity:0.99}to{opacity:1}";t="@-webkit-keyframes chartjs-render-animation{"+n+"}@keyframes chartjs-render-animation{"+n+"}.chartjs-render-monitor{-webkit-animation:chartjs-render-animation 0.001s;animation:chartjs-render-animation 0.001s;}",e=this._style||document.createElement("style"),this._style||(this._style=e,t="/* Chart.js */\n"+t,e.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(e)),e.appendChild(document.createTextNode(t))},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 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=o(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=o(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 r=n[t];a.isNullOrUndef(r)?e.removeAttribute(t):e.setAttribute(t,r)}),a.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var o=t.canvas;if("resize"!==e){var s=n.$chartjs||(n.$chartjs={});u(o,e,(s.proxies||(s.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=i[t.type]||t.type,r=a.getRelativePosition(t,e);return c(n,e,r.x,r.y,t)}(e,t))})}else!function(t,e,n){var i,o,s,l,d=t.$chartjs||(t.$chartjs={}),f=d.resizer=function(t){var e=document.createElement("div"),n="chartjs-size-monitor",a="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=a,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+a+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+a+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var r=e.childNodes[0],i=e.childNodes[1];e._reset=function(){r.scrollLeft=1e6,r.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var o=function(){e._reset(),t()};return u(r,"scroll",o.bind(r,"expand")),u(i,"scroll",o.bind(i,"shrink")),e}((i=function(){if(d.resizer)return e(c("resize",n))},s=!1,l=[],function(){l=Array.prototype.slice.call(arguments),o=o||this,s||(s=!0,a.requestAnimFrame.call(window,function(){s=!1,i.apply(o,l)}))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),i=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};a.each(r,function(e){u(t,e,i)}),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,function(){if(d.resizer){var e=t.parentNode;e&&e!==f.parentNode&&e.insertBefore(f,e.firstChild),f._reset()}})}(o,n,t)},removeEventListener:function(t,e,n){var i,o,s,u=t.canvas;if("resize"!==e){var c=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];c&&l(u,e,c)}else s=(o=(i=u).$chartjs||{}).resizer,delete o.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(a.each(r,function(e){l(t,e,n)}),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(i),s&&s.parentNode&&s.parentNode.removeChild(s)}},a.addEvent=u,a.removeEvent=l},qwkt:function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("ejVf")),a(n("aTeT")),a(n("WOoz")),a(n("lmqd")),a(n("ILDN")),a(n("n1nk"))},qzaf:function(t,e,n){"use strict";t.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},r8II:function(t,e,n){"use strict";e.decode=e.parse=n("YcCt"),e.encode=e.stringify=n("6MUB")},rLYq:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG");function s(t){var e=t.filter(function(t){return!!t});return e.length?e.some(function(t){return"number"!=typeof t})?null:e.reduce(function(t,e){return t+e}):null}function u(t){return null}e.DataTableSummaryRowComponent=function(){function t(){this.summaryRow={}}return t.prototype.ngOnChanges=function(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())},t.prototype.updateInternalColumns=function(){this._internalColumns=this.columns.map(function(t){return i({},t,{cellTemplate:t.summaryTemplate})})},t.prototype.updateValues=function(){var t=this;this.summaryRow={},this.columns.filter(function(t){return!t.summaryTemplate}).forEach(function(e){var n=t.rows.map(function(t){return t[e.prop]}),a=t.getSummaryFunction(e);t.summaryRow[e.prop]=e.pipe?e.pipe.transform(a(n)):a(n)})},t.prototype.getSummaryFunction=function(t){return void 0===t.summaryFunc?s:null===t.summaryFunc?u:t.summaryFunc},a([o.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([o.Input(),r("design:type",Array)],t.prototype,"columns",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([o.Component({selector:"datatable-summary-row",template:'\n  <datatable-body-row\n    *ngIf="summaryRow && _internalColumns"\n    tabindex="-1"\n    [innerWidth]="innerWidth"\n    [offsetX]="offsetX"\n    [columns]="_internalColumns"\n    [rowHeight]="rowHeight"\n    [row]="summaryRow"\n    [rowIndex]="-1">\n  </datatable-body-row>\n  ',host:{class:"datatable-summary-row"}})],t)}()},rPjj:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n,a){var r=t.call(this)||this;return r.parent=e,r.outerValue=n,r.outerIndex=a,r.index=0,r}return a.__extends(e,t),e.prototype._next=function(t){this.parent.notifyNext(this.outerValue,t,this.outerIndex,this.index++,this)},e.prototype._error=function(t){this.parent.notifyError(t,this),this.unsubscribe()},e.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},e}(n("FFOo").a)},rWzI:function(t,e,n){(function(t){var a;!function(r){"object"==typeof global&&global;var i,o=2147483647,s=36,u=1,l=26,c=38,d=700,f=72,p=128,h="-",g=/^xn--/,m=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=s-u,_=Math.floor,x=String.fromCharCode;function T(t){throw RangeError(y[t])}function w(t,e){for(var n=t.length,a=[];n--;)a[n]=e(t[n]);return a}function S(t,e){var n=t.split("@"),a="";return n.length>1&&(a=n[0]+"@",t=n[1]),a+w((t=t.replace(b,".")).split("."),e).join(".")}function O(t){for(var e,n,a=[],r=0,i=t.length;r<i;)(e=t.charCodeAt(r++))>=55296&&e<=56319&&r<i?56320==(64512&(n=t.charCodeAt(r++)))?a.push(((1023&e)<<10)+(1023&n)+65536):(a.push(e),r--):a.push(e);return a}function C(t){return w(t,function(t){var e="";return t>65535&&(e+=x((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+x(t)}).join("")}function k(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function I(t,e,n){var a=0;for(t=n?_(t/d):t>>1,t+=_(t/e);t>v*l>>1;a+=s)t=_(t/v);return _(a+(v+1)*t/(t+c))}function D(t){var e,n,a,r,i,c,d,g,m,b,y,v=[],x=t.length,w=0,S=p,O=f;for((n=t.lastIndexOf(h))<0&&(n=0),a=0;a<n;++a)t.charCodeAt(a)>=128&&T("not-basic"),v.push(t.charCodeAt(a));for(r=n>0?n+1:0;r<x;){for(i=w,c=1,d=s;r>=x&&T("invalid-input"),((g=(y=t.charCodeAt(r++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:s)>=s||g>_((o-w)/c))&&T("overflow"),w+=g*c,!(g<(m=d<=O?u:d>=O+l?l:d-O));d+=s)c>_(o/(b=s-m))&&T("overflow"),c*=b;O=I(w-i,e=v.length+1,0==i),_(w/e)>o-S&&T("overflow"),S+=_(w/e),w%=e,v.splice(w++,0,S)}return C(v)}function R(t){var e,n,a,r,i,c,d,g,m,b,y,v,w,S,C,D=[];for(v=(t=O(t)).length,e=p,n=0,i=f,c=0;c<v;++c)(y=t[c])<128&&D.push(x(y));for(a=r=D.length,r&&D.push(h);a<v;){for(d=o,c=0;c<v;++c)(y=t[c])>=e&&y<d&&(d=y);for(d-e>_((o-n)/(w=a+1))&&T("overflow"),n+=(d-e)*w,e=d,c=0;c<v;++c)if((y=t[c])<e&&++n>o&&T("overflow"),y==e){for(g=n,m=s;!(g<(b=m<=i?u:m>=i+l?l:m-i));m+=s)D.push(x(k(b+(C=g-b)%(S=s-b),0))),g=_(C/S);D.push(x(k(g,0))),i=I(n,w,a==r),n=0,++a}++n,++e}return D.join("")}i={version:"1.3.2",ucs2:{decode:O,encode:C},decode:D,encode:R,toASCII:function(t){return S(t,function(t){return m.test(t)?"xn--"+R(t):t})},toUnicode:function(t){return S(t,function(t){return g.test(t)?D(t.slice(4).toLowerCase()):t})}},void 0===(a=(function(){return i}).call(e,n,e,t))||(t.exports=a)}()}).call(this,n("YuTi")(t))},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var a,r;return"m"===n?e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?e?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":t+" "+(a=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:e?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[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 a(t){return function(){return t+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}n("wd/R").defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(t,e){var n={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===t?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):t?n[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(e)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:a("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:a("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:a("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:a("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return a("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:e,y:"\u0440\u0456\u043a",yy:e},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0456":t<12?"\u0440\u0430\u043d\u043a\u0443":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-\u0439";case"D":return t+"-\u0433\u043e";default:return t}},week:{dow:1,doy:7}})}()},rdkg:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CVuo"),r={},i="undefined"!=typeof document?document.createElement("div").style:void 0,o=function(){var 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};e.\u02750=o;var s=o();e.getVendorPrefixedName=function(t){var e=a.camelCase(t);return r[e]||(void 0!==s&&void 0!==i[s.css+t]?r[e]=s.css+t:void 0!==i[t]&&(r[e]=t)),r[e]}},rpEJ:function(t,e,n){"use strict";n.d(e,"d",function(){return p}),n.d(e,"e",function(){return s}),n.d(e,"h",function(){return u}),n.d(e,"g",function(){return l}),n.d(e,"a",function(){return h}),n.d(e,"b",function(){return g}),n.d(e,"j",function(){return d}),n.d(e,"c",function(){return f}),n.d(e,"i",function(){return y}),n.d(e,"f",function(){return o});var a=n("CcnG"),r=function(){function t(t,e){this.open=t,this.close=e||t}return t.prototype.isManual=function(){return"manual"===this.open||"manual"===this.close},t}(),i={hover:["mouseover","mouseout"],focus:["focusin","focusout"]};function o(t,e){void 0===e&&(e=i);var n=(t||"").trim();if(0===n.length)return[];var a=n.split(/\s+/).map(function(t){return t.split(":")}).map(function(t){var n=e[t[0]]||t;return new r(n[0],n[1])}),o=a.filter(function(t){return t.isManual()});if(o.length>1)throw new Error("Triggers parse error: only one manual trigger is allowed");if(1===o.length&&a.length>1)throw new Error("Triggers parse error: manual trigger can't be mixed with other triggers");return a}function s(t,e){var n=o(e.triggers),a=e.target;if(1===n.length&&n[0].isManual())return Function.prototype;var r=[],i=[],s=function(){i.forEach(function(t){return r.push(t())}),i.length=0};return n.forEach(function(n){var o=n.open===n.close,u=o?e.toggle:e.show;o||i.push(function(){return t.listen(a,n.close,e.hide)}),r.push(t.listen(a,n.open,function(){return u(s)}))}),function(){r.forEach(function(t){return t()})}}function u(t,e){return e.outsideClick?t.listen("document","click",function(t){e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(function(e){return e.contains(t.target)})||e.hide()}):Function.prototype}function l(t,e){return e.outsideEsc?t.listen("document","keyup.esc",function(t){e.target&&e.target.contains(t.target)||e.targets&&e.targets.some(function(e){return e.contains(t.target)})||e.hide()}):Function.prototype}var c,d="undefined"!=typeof window&&window||{},f=d.document;function p(){return void 0===d||(void 0===d.__theme?c?"bs3"===c:"bs3"===(c=function(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==d.__theme)}function h(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){var a=this[n];this[n]=t,a!==t&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}}var g=function(){function t(){}return t.reflow=function(t){},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=d),e.getComputedStyle(t)},t}(),m={},b="undefined"==typeof console||!("warn"in console);function y(t){!Object(a.isDevMode)()||b||t in m||(m[t]=!0,console.warn(t))}},"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]}n("wd/R").defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_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}})}()},sLuX:function(t,e,n){"use strict";var a=n("CcnG"),r=n("25BL"),i=n("uIqm");n("FSuO"),n("a0VL"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function s(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{table:0}),(t()(),a["\u0275eld"](1,0,null,null,1,"cd-table",[["columnMode","flex"]],null,null,null,r.b,r.a)),a["\u0275did"](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)}},sb0X:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("CcnG"),r=n("gIcY"),i=n("LvDl"),o=function(){function t(t){this.elRef=t,this.type="submit",this.submitAction=new a.EventEmitter,this.disabled=!1,this.loading=!1}return t.prototype.ngOnInit=function(){var t=this;this.form.statusChanges.subscribe(function(){i.has(t.form.errors,"cdSubmitButton")&&(t.loading=!1,i.unset(t.form.errors,"cdSubmitButton"),t.form instanceof r.a&&t.form.updateValueAndValidity())})},t.prototype.submit=function(t){this.focusButton(),this.form instanceof r.l&&this.form.onSubmit(t),this.form.invalid?this.focusInvalid():(this.loading=!0,this.submitAction.emit())},t.prototype.focusButton=function(){this.elRef.nativeElement.offsetParent.querySelector('button[type="'+this.type+'"]').focus()},t.prototype.focusInvalid=function(){var t=this.elRef.nativeElement.offsetParent.querySelector("input.ng-invalid, select.ng-invalid");t&&t.focus()},t}()},siIJ:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(e,n){void 0===n&&(n=t.now),this.SchedulerAction=e,this.now=n}return t.prototype.schedule=function(t,e,n){return void 0===e&&(e=0),new this.SchedulerAction(this,t).schedule(n,e)},t.now=function(){return Date.now()},t}()},sne2:function(t,e,n){"use strict";n.d(e,"c",function(){return s}),n.d(e,"e",function(){return a}),n.d(e,"a",function(){return r}),n.d(e,"b",function(){return u}),n.d(e,"d",function(){return l});var a,r,i=n("CcnG"),o=n("Jm/i"),s=function(){function t(){}return t.organization="ceph",t.projectName="Ceph Manager Dashboard",t.license="Free software (LGPL 2.1).",t}();!function(t){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"}(a||(a={})),function(t){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.SHOW="Show",t.RECREATE="Recreate",t.EXPIRE="Expire"}(r||(r={}));var u=function(){function t(t){this.i18n=t,this.CREATE=this.i18n("Create"),this.DELETE=this.i18n("Delete"),this.ADD=this.i18n("Add"),this.REMOVE=this.i18n("Remove"),this.EDIT=this.i18n("Edit"),this.CANCEL=this.i18n("Cancel"),this.COPY=this.i18n("Copy"),this.CLONE=this.i18n("Clone"),this.SHOW=this.i18n("Show"),this.TRASH=this.i18n("Move to Trash"),this.UNPROTECT=this.i18n("Unprotect"),this.RECREATE=this.i18n("Recreate"),this.EXPIRE=this.i18n("Expire")}return t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.a))},token:t,providedIn:"root"}),t}(),l=function(){function t(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.SHOWED=this.i18n("Showed"),this.TRASHED=this.i18n("Moved to Trash"),this.UNPROTECTED=this.i18n("Unprotected"),this.RECREATED=this.i18n("Recreated"),this.EXPIRED=this.i18n("Expired")}return t.ngInjectableDef=i.defineInjectable({factory:function(){return new t(i.inject(o.a))},token:t,providedIn:"root"}),t}()},sp3z:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".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:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(t){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===t},meridiem:function(t,e,n){return t<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(t){return"\u0e97\u0eb5\u0ec8"+t}})}()},svcd:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("mrSG"),r=n("K9Ia"),i=n("pugT"),o=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.value=null,e.hasNext=!1,e.hasCompleted=!1,e}return a.__extends(e,t),e.prototype._subscribe=function(e){return this.hasError?(e.error(this.thrownError),i.a.EMPTY):this.hasCompleted&&this.hasNext?(e.next(this.value),e.complete(),i.a.EMPTY):t.prototype._subscribe.call(this,e)},e.prototype.next=function(t){this.hasCompleted||(this.value=t,this.hasNext=!0)},e.prototype.error=function(e){this.hasCompleted||t.prototype.error.call(this,e)},e.prototype.complete=function(){this.hasCompleted=!0,this.hasNext&&t.prototype.next.call(this,this.value),t.prototype.complete.call(this)},e}(r.a)},syrc:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("5tze");n("bpWZ"),n("czA5"),e.DataTableBodyRowComponent=function(){function t(t,e,n,a){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new i.EventEmitter,this.treeAction=new i.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=a.nativeElement,this._rowDiffer=t.find({}).create()}return Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._columns){var e=o.columnsByPin(this._columns);this._columnGroupWidths=o.columnGroupWidths(e,e)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cssClass",{get:function(){var 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){var e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnsTotalWidths",{get:function(){return this._columnGroupWidths.total},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()},t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.buildStylesByGroup=function(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n+this.scrollbarHelper.width),0)}return a},t.prototype.onActivate=function(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))},t.prototype.onMouseenter=function(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})},t.prototype.recalculateColumns=function(t){void 0===t&&(t=this.columns),this._columns=t;var e=o.columnsByPin(this._columns);this._columnsByPin=o.columnsByPinArr(this._columns),this._columnGroupWidths=o.columnGroupWidths(e,this._columns)},t.prototype.onTreeAction=function(){this.treeAction.emit()},a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([i.Input(),r("design:type",Boolean)],t.prototype,"expanded",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"group",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isSelected",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowIndex",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"treeStatus",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"cssClass",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([i.HostBinding("style.width.px"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"columnsTotalWidths",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.HostListener("mouseenter",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseenter",null),a([i.Component({selector:"datatable-body-row",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div\n      *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups"\n      class="datatable-row-{{colGroup.type}} datatable-row-group"\n      [ngStyle]="_groupStyles[colGroup.type]">\n      <datatable-body-cell\n        *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn"\n        tabindex="-1"\n        [row]="row"\n        [group]="group"\n        [expanded]="expanded"\n        [isSelected]="isSelected"\n        [rowIndex]="rowIndex"\n        [column]="column"\n        [rowHeight]="rowHeight"\n        [displayCheck]="displayCheck"\n        [treeStatus]="treeStatus"\n        (activate)="onActivate($event, ii)"\n        (treeAction)="onTreeAction()">\n      </datatable-body-cell>\n    </div>\n  '})],t)}()},"t/Na":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 F}),n.d(e,"n",function(){return P}),n.d(e,"o",function(){return M}),n.d(e,"b",function(){return f}),n.d(e,"g",function(){return d}),n.d(e,"c",function(){return k}),n.d(e,"a",function(){return D}),n.d(e,"d",function(){return H}),n.d(e,"e",function(){return Y}),n.d(e,"l",function(){return z}),n.d(e,"h",function(){return m}),n.d(e,"f",function(){return O}),n.d(e,"i",function(){return L}),n.d(e,"k",function(){return A}),n.d(e,"j",function(){return j});var a=n("mrSG"),r=n("CcnG"),i=n("F/XL"),o=n("6blF"),s=n("Phjn"),u=n("VnD/"),l=n("67Y/"),c=n("Ip0R"),d=function(){return function(){}}(),f=function(){return function(){}}(),p=function(){function t(t){var e=this;this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?function(){e.headers=new Map,t.split("\n").forEach(function(t){var n=t.indexOf(":");if(n>0){var a=t.slice(0,n),r=a.toLowerCase(),i=t.slice(n+1).trim();e.maybeSetNormalizedName(a,r),e.headers.has(r)?e.headers.get(r).push(i):e.headers.set(r,[i])}})}:function(){e.headers=new Map,Object.keys(t).forEach(function(n){var a=t[n],r=n.toLowerCase();"string"==typeof a&&(a=[a]),a.length>0&&(e.headers.set(r,a),e.maybeSetNormalizedName(n,r))})}:this.headers=new Map}return t.prototype.has=function(t){return this.init(),this.headers.has(t.toLowerCase())},t.prototype.get=function(t){this.init();var e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null},t.prototype.keys=function(){return this.init(),Array.from(this.normalizedNames.values())},t.prototype.getAll=function(t){return this.init(),this.headers.get(t.toLowerCase())||null},t.prototype.append=function(t,e){return this.clone({name:t,value:e,op:"a"})},t.prototype.set=function(t,e){return this.clone({name:t,value:e,op:"s"})},t.prototype.delete=function(t,e){return this.clone({name:t,value:e,op:"d"})},t.prototype.maybeSetNormalizedName=function(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)},t.prototype.init=function(){var e=this;this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(function(t){return e.applyUpdate(t)}),this.lazyUpdate=null))},t.prototype.copyFrom=function(t){var e=this;t.init(),Array.from(t.headers.keys()).forEach(function(n){e.headers.set(n,t.headers.get(n)),e.normalizedNames.set(n,t.normalizedNames.get(n))})},t.prototype.clone=function(e){var n=new t;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([e]),n},t.prototype.applyUpdate=function(t){var e=t.name.toLowerCase();switch(t.op){case"a":case"s":var n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);var r=("a"===t.op?this.headers.get(e):void 0)||[];r.push.apply(r,Object(a.__spread)(n)),this.headers.set(e,r);break;case"d":var i=t.value;if(i){var o=this.headers.get(e);if(!o)return;0===(o=o.filter(function(t){return-1===i.indexOf(t)})).length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,o)}else this.headers.delete(e),this.normalizedNames.delete(e)}},t.prototype.forEach=function(t){var e=this;this.init(),Array.from(this.normalizedNames.keys()).forEach(function(n){return t(e.normalizedNames.get(n),e.headers.get(n))})},t}(),h=function(){function t(){}return t.prototype.encodeKey=function(t){return g(t)},t.prototype.encodeValue=function(t){return g(t)},t.prototype.decodeKey=function(t){return decodeURIComponent(t)},t.prototype.decodeValue=function(t){return decodeURIComponent(t)},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,"/")}var m=function(){function t(t){void 0===t&&(t={});var e,n,r,i=this;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=(e=t.fromString,n=this.encoder,r=new Map,e.length>0&&e.split("&").forEach(function(t){var e=t.indexOf("="),i=Object(a.__read)(-1==e?[n.decodeKey(t),""]:[n.decodeKey(t.slice(0,e)),n.decodeValue(t.slice(e+1))],2),o=i[0],s=i[1],u=r.get(o)||[];u.push(s),r.set(o,u)}),r)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(function(e){var n=t.fromObject[e];i.map.set(e,Array.isArray(n)?n:[n])})):this.map=null}return t.prototype.has=function(t){return this.init(),this.map.has(t)},t.prototype.get=function(t){this.init();var e=this.map.get(t);return e?e[0]:null},t.prototype.getAll=function(t){return this.init(),this.map.get(t)||null},t.prototype.keys=function(){return this.init(),Array.from(this.map.keys())},t.prototype.append=function(t,e){return this.clone({param:t,value:e,op:"a"})},t.prototype.set=function(t,e){return this.clone({param:t,value:e,op:"s"})},t.prototype.delete=function(t,e){return this.clone({param:t,value:e,op:"d"})},t.prototype.toString=function(){var t=this;return this.init(),this.keys().map(function(e){var n=t.encoder.encodeKey(e);return t.map.get(e).map(function(e){return n+"="+t.encoder.encodeValue(e)}).join("&")}).join("&")},t.prototype.clone=function(e){var n=new t({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat([e]),n},t.prototype.init=function(){var t=this;null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(function(e){return t.map.set(e,t.cloneFrom.map.get(e))}),this.updates.forEach(function(e){switch(e.op){case"a":case"s":var n=("a"===e.op?t.map.get(e.param):void 0)||[];n.push(e.value),t.map.set(e.param,n);break;case"d":if(void 0===e.value){t.map.delete(e.param);break}var a=t.map.get(e.param)||[],r=a.indexOf(e.value);-1!==r&&a.splice(r,1),a.length>0?t.map.set(e.param,a):t.map.delete(e.param)}}),this.cloneFrom=null)},t}();function b(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function y(t){return"undefined"!=typeof Blob&&t instanceof Blob}function v(t){return"undefined"!=typeof FormData&&t instanceof FormData}var _=function(){function t(t,e,n,a){var 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 p),this.params){var i=this.params.toString();if(0===i.length)this.urlWithParams=e;else{var o=e.indexOf("?");this.urlWithParams=e+(-1===o?"?":o<e.length-1?"&":"")+i}}else this.params=new m,this.urlWithParams=e}return t.prototype.serializeBody=function(){return null===this.body?null:b(this.body)||y(this.body)||v(this.body)||"string"==typeof this.body?this.body:this.body instanceof m?this.body.toString():"object"==typeof this.body||"boolean"==typeof this.body||Array.isArray(this.body)?JSON.stringify(this.body):this.body.toString()},t.prototype.detectContentTypeHeader=function(){return null===this.body?null:v(this.body)?null:y(this.body)?this.body.type||null:b(this.body)?null:"string"==typeof this.body?"text/plain":this.body instanceof m?"application/x-www-form-urlencoded;charset=UTF-8":"object"==typeof this.body||"number"==typeof this.body||Array.isArray(this.body)?"application/json":null},t.prototype.clone=function(e){void 0===e&&(e={});var n=e.method||this.method,a=e.url||this.url,r=e.responseType||this.responseType,i=void 0!==e.body?e.body:this.body,o=void 0!==e.withCredentials?e.withCredentials:this.withCredentials,s=void 0!==e.reportProgress?e.reportProgress:this.reportProgress,u=e.headers||this.headers,l=e.params||this.params;return void 0!==e.setHeaders&&(u=Object.keys(e.setHeaders).reduce(function(t,n){return t.set(n,e.setHeaders[n])},u)),e.setParams&&(l=Object.keys(e.setParams).reduce(function(t,n){return t.set(n,e.setParams[n])},l)),new t(n,a,i,{params:l,headers:u,reportProgress:s,responseType:r,withCredentials:o})},t}(),x=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}({}),T=function(){return function(t,e,n){void 0===e&&(e=200),void 0===n&&(n="OK"),this.headers=t.headers||new p,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}}(),w=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;return n.type=x.ResponseHeader,n}return Object(a.__extends)(e,t),e.prototype.clone=function(t){return void 0===t&&(t={}),new e({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})},e}(T),S=function(t){function e(e){void 0===e&&(e={});var n=t.call(this,e)||this;return n.type=x.Response,n.body=void 0!==e.body?e.body:null,n}return Object(a.__extends)(e,t),e.prototype.clone=function(t){return void 0===t&&(t={}),new e({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})},e}(T),O=function(t){function e(e){var n=t.call(this,e,0,"Unknown Error")||this;return n.name="HttpErrorResponse",n.ok=!1,n.message=n.status>=200&&n.status<300?"Http failure during parsing for "+(e.url||"(unknown url)"):"Http failure response for "+(e.url||"(unknown url)")+": "+e.status+" "+e.statusText,n.error=e.error||null,n}return Object(a.__extends)(e,t),e}(T);function C(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}var k=function(){function t(t){this.handler=t}return t.prototype.request=function(t,e,n){var a,r=this;if(void 0===n&&(n={}),t instanceof _)a=t;else{var o;o=n.headers instanceof p?n.headers:new p(n.headers);var c=void 0;n.params&&(c=n.params instanceof m?n.params:new m({fromObject:n.params})),a=new _(t,e,void 0!==n.body?n.body:null,{headers:o,params:c,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials})}var d=Object(i.a)(a).pipe(Object(s.a)(function(t){return r.handler.handle(t)}));if(t instanceof _||"events"===n.observe)return d;var f=d.pipe(Object(u.a)(function(t){return t instanceof S}));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return f.pipe(Object(l.a)(function(t){if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body}));case"blob":return f.pipe(Object(l.a)(function(t){if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body}));case"text":return f.pipe(Object(l.a)(function(t){if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body}));case"json":default:return f.pipe(Object(l.a)(function(t){return t.body}))}case"response":return f;default:throw new Error("Unreachable: unhandled observe type "+n.observe+"}")}},t.prototype.delete=function(t,e){return void 0===e&&(e={}),this.request("DELETE",t,e)},t.prototype.get=function(t,e){return void 0===e&&(e={}),this.request("GET",t,e)},t.prototype.head=function(t,e){return void 0===e&&(e={}),this.request("HEAD",t,e)},t.prototype.jsonp=function(t,e){return this.request("JSONP",t,{params:(new m).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})},t.prototype.options=function(t,e){return void 0===e&&(e={}),this.request("OPTIONS",t,e)},t.prototype.patch=function(t,e,n){return void 0===n&&(n={}),this.request("PATCH",t,C(n,e))},t.prototype.post=function(t,e,n){return void 0===n&&(n={}),this.request("POST",t,C(n,e))},t.prototype.put=function(t,e,n){return void 0===n&&(n={}),this.request("PUT",t,C(n,e))},t}(),I=function(){function t(t,e){this.next=t,this.interceptor=e}return t.prototype.handle=function(t){return this.interceptor.intercept(t,this.next)},t}(),D=new r.InjectionToken("HTTP_INTERCEPTORS"),R=function(){function t(){}return t.prototype.intercept=function(t,e){return e.handle(t)},t}(),N=/^\)\]\}',?\n/,A=function(){return function(){}}(),E=function(){function t(){}return t.prototype.build=function(){return new XMLHttpRequest},t}(),L=function(){function t(t){this.xhrFactory=t}return t.prototype.handle=function(t){var e=this;if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new o.a(function(n){var a=e.xhrFactory.build();if(a.open(t.method,t.urlWithParams),t.withCredentials&&(a.withCredentials=!0),t.headers.forEach(function(t,e){return a.setRequestHeader(t,e.join(","))}),t.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){var r=t.detectContentTypeHeader();null!==r&&a.setRequestHeader("Content-Type",r)}if(t.responseType){var i=t.responseType.toLowerCase();a.responseType="json"!==i?i:"text"}var o=t.serializeBody(),s=null,u=function(){if(null!==s)return s;var e=1223===a.status?204:a.status,n=a.statusText||"OK",r=new p(a.getAllResponseHeaders()),i=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(a)||t.url;return s=new w({headers:r,status:e,statusText:n,url:i})},l=function(){var e=u(),r=e.headers,i=e.status,o=e.statusText,s=e.url,l=null;204!==i&&(l=void 0===a.response?a.responseText:a.response),0===i&&(i=l?200:0);var c=i>=200&&i<300;if("json"===t.responseType&&"string"==typeof l){var d=l;l=l.replace(N,"");try{l=""!==l?JSON.parse(l):null}catch(f){l=d,c&&(c=!1,l={error:f,text:l})}}c?(n.next(new S({body:l,headers:r,status:i,statusText:o,url:s||void 0})),n.complete()):n.error(new O({error:l,headers:r,status:i,statusText:o,url:s||void 0}))},c=function(t){var e=u().url,r=new O({error:t,status:a.status||0,statusText:a.statusText||"Unknown Error",url:e||void 0});n.error(r)},d=!1,f=function(e){d||(n.next(u()),d=!0);var r={type:x.DownloadProgress,loaded:e.loaded};e.lengthComputable&&(r.total=e.total),"text"===t.responseType&&a.responseText&&(r.partialText=a.responseText),n.next(r)},h=function(t){var e={type:x.UploadProgress,loaded:t.loaded};t.lengthComputable&&(e.total=t.total),n.next(e)};return a.addEventListener("load",l),a.addEventListener("error",c),t.reportProgress&&(a.addEventListener("progress",f),null!==o&&a.upload&&a.upload.addEventListener("progress",h)),a.send(o),n.next({type:x.Sent}),function(){a.removeEventListener("error",c),a.removeEventListener("load",l),t.reportProgress&&(a.removeEventListener("progress",f),null!==o&&a.upload&&a.upload.removeEventListener("progress",h)),a.abort()}})},t}(),P=new r.InjectionToken("XSRF_COOKIE_NAME"),M=new r.InjectionToken("XSRF_HEADER_NAME"),j=function(){return function(){}}(),q=function(){function t(t,e,n){this.doc=t,this.platform=e,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}return t.prototype.getToken=function(){if("server"===this.platform)return null;var t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=Object(c["\u0275parseCookieValue"])(t,this.cookieName),this.lastCookieString=t),this.lastToken},t}(),F=function(){function t(t,e){this.tokenService=t,this.headerName=e}return t.prototype.intercept=function(t,e){var n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);var 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)},t}(),z=function(){function t(t,e){this.backend=t,this.injector=e,this.chain=null}return t.prototype.handle=function(t){if(null===this.chain){var e=this.injector.get(D,[]);this.chain=e.reduceRight(function(t,e){return new I(t,e)},this.backend)}return this.chain.handle(t)},t}(),Y=function(){function t(){}var e;return e=t,t.disable=function(){return{ngModule:e,providers:[{provide:F,useClass:R}]}},t.withOptions=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[t.cookieName?{provide:P,useValue:t.cookieName}:[],t.headerName?{provide:M,useValue:t.headerName}:[]]}},t}(),H=function(){return function(){}}()},"t/zF":function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(t,e){this.name=t,this.metadata=e}}()},t1N5:function(t,e){function n(t){var e,n,a=t[0]/255,r=t[1]/255,i=t[2]/255,o=Math.min(a,r,i),s=Math.max(a,r,i),u=s-o;return s==o?e=0:a==s?e=(r-i)/u:r==s?e=2+(i-a)/u:i==s&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?u/(s+o):u/(2-s-o)),100*n]}function a(t){var e,n,a=t[0],r=t[1],i=t[2],o=Math.min(a,r,i),s=Math.max(a,r,i),u=s-o;return n=0==s?0:u/s*1e3/10,s==o?e=0:a==s?e=(r-i)/u:r==s?e=2+(i-a)/u:i==s&&(e=4+(a-r)/u),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/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 o(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 s(t){return S[JSON.stringify(t)]}function u(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=u(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 c(t){var e,n,a,r,i,o=t[0]/360,s=t[1]/100,u=t[2]/100;if(0==s)return[i=255*u,i,i];e=2*u-(n=u<.5?u*(1+s):u+s-u*s),r=[0,0,0];for(var l=0;l<3;l++)(a=o+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 d(t){var e=t[0]/60,n=t[1]/100,a=t[2]/100,r=Math.floor(e)%6,i=e-Math.floor(e),o=255*a*(1-n),s=255*a*(1-n*i),u=255*a*(1-n*(1-i));switch(a*=255,r){case 0:return[a,u,o];case 1:return[s,a,o];case 2:return[o,a,u];case 3:return[o,s,a];case 4:return[u,o,a];case 5:return[a,o,s]}}function f(t){var e,n,a,i,o=t[0]/360,s=t[1]/100,u=t[2]/100,l=s+u;switch(l>1&&(s/=l,u/=l),a=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(a=1-a),i=s+a*((n=1-u)-s),e){default:case 6:case 0:r=n,g=i,b=s;break;case 1:r=i,g=n,b=s;break;case 2:r=s,g=n,b=i;break;case 3:r=s,g=i,b=n;break;case 4:r=i,g=s,b=n;break;case 5:r=n,g=s,b=i}return[255*r,255*g,255*b]}function p(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 h(t){var e,n,a,r=t[0]/100,i=t[1]/100,o=t[2]/100;return n=-.9689*r+1.8758*i+.0415*o,a=.0557*r+-.204*i+1.057*o,e=(e=3.2406*r+-1.5372*i+-.4986*o)>.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],o=t[1],s=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*(o/500+r-16/116)/7.787:95.047*Math.pow(o/500+r,3),n,a=a/108.883<=.008859?a=108.883*(r-s/200-16/116)/7.787:108.883*Math.pow(r-s/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 _(t){return h(y(t))}function x(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]}t.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:i,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:u,rgb2lab:l,rgb2lch:function(t){return v(l(t))},hsl2rgb:c,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(c(t))},hsl2cmyk:function(t){return o(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:d,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(d(t))},hsv2cmyk:function(t){return o(d(t))},hsv2keyword:function(t){return s(d(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return o(f(t))},hwb2keyword:function(t){return s(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return n(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return i(p(t))},cmyk2keyword:function(t){return s(p(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 o(T(t))},keyword2lab:function(t){return l(T(t))},keyword2xyz:function(t){return u(T(t))},xyz2rgb:h,xyz2lab:m,xyz2lch:function(t){return v(m(t))},lab2xyz:y,lab2rgb:_,lab2lch:v,lch2lab:x,lch2xyz:function(t){return y(x(t))},lch2rgb:function(t){return _(x(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]},S={};for(var O in w)S[JSON.stringify(w[O])]=O},t9fZ:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("b7mW"),o=n("G5J1");function s(t){return function(e){return 0===t?Object(o.b)():e.lift(new u(t))}}var u=function(){function t(t){if(this.total=t,this.total<0)throw new i.a}return t.prototype.call=function(t,e){return e.subscribe(new l(t,this.total))},t}(),l=function(t){function e(e,n){var a=t.call(this,e)||this;return a.total=n,a.count=0,a}return a.__extends(e,t),e.prototype._next=function(t){var e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))},e}(r.a)},tAZD:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##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}]})},tFKq:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=this&&this.__assign||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)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("CcnG"),s=n("qwkt"),u=n("5tze");e.DataTableHeaderComponent=function(){function t(t){this.cd=t,this.sort=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.select=new o.EventEmitter,this.columnContextmenu=new o.EventEmitter(!1),this._styleByGroup={left:{},center:{},right:{}}}return Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._innerWidth=t,this._columns){var e=u.columnsByPin(this._columns);this._columnGroupWidths=u.columnGroupWidths(e,this._columns),this.setStylesByGroup()}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerHeight",{get:function(){return this._headerHeight},set:function(t){this._headerHeight="auto"!==t?t+"px":t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=u.columnsByPin(t);this._columnsByPin=u.columnsByPinArr(t),this._columnGroupWidths=u.columnGroupWidths(e,t),this.setStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.setStylesByGroup()},enumerable:!0,configurable:!0}),t.prototype.onLongPressStart=function(t){var e=t.event;t.model.dragging=!0,this.dragEventTarget=e},t.prototype.onLongPressEnd=function(t){var e=this,n=t.model;this.dragEventTarget=t.event,setTimeout(function(){var t=e._columns.find(function(t){return t.$$id===n.$$id});t&&(t.dragging=!1)},5)},Object.defineProperty(t.prototype,"headerWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.onColumnResized=function(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})},t.prototype.onColumnReordered=function(t){var e=t.prevIndex,n=t.newIndex,a=t.model,r=this.getColumn(n);r.isTarget=!1,r.targetMarkerContext=void 0,this.reorder.emit({column:a,prevValue:e,newValue:n})},t.prototype.onTargetChanged=function(t){var e=t.prevIndex,n=t.newIndex,a=t.initialIndex;if(e||0===e){var r=this.getColumn(e);r.isTarget=!1,r.targetMarkerContext=void 0}if(n||0===n){var i=this.getColumn(n);i.isTarget=!0,a!==n&&(i.targetMarkerContext={class:"targetMarker ".concat(a>n?"dragFromRight":"dragFromLeft")})}},t.prototype.getColumn=function(t){var e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];var n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]},t.prototype.onSort=function(t){var e=t.column,n=t.prevValue,a=t.newValue;if(!e.dragging){var r=this.calcNewSorts(e,n,a);this.sort.emit({sorts:r,column:e,prevValue:n,newValue:a})}},t.prototype.calcNewSorts=function(t,e,n){var a=0;this.sorts||(this.sorts=[]);var r=this.sorts.map(function(e,n){return(e=i({},e)).prop===t.prop&&(a=n),e});return void 0===n?r.splice(a,1):e?r[a].dir=n:(this.sortType===s.SortType.single&&r.splice(0,this.sorts.length),r.push({dir:n,prop:t.prop})),r},t.prototype.setStylesByGroup=function(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.cd.detectChanges()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?u.translateXY(n,-1*this.offsetX,0):"right"===t&&u.translateXY(n,-1*(e.total-this.innerWidth),0),n},a([o.Input(),r("design:type",Object)],t.prototype,"sortAscendingIcon",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"sortDescendingIcon",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"dealsWithGroup",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([o.Input(),r("design:type",Array)],t.prototype,"sorts",void 0),a([o.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"allRowsSelected",void 0),a([o.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"reorderable",void 0),a([o.HostBinding("style.height"),o.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"headerHeight",null),a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"sort",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"resize",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"select",void 0),a([o.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([o.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"headerWidth",null),a([o.Component({selector:"datatable-header",template:'\n    <div\n      orderable\n      (reorder)="onColumnReordered($event)"\n      (targetChanged)="onTargetChanged($event)"\n      [style.width.px]="_columnGroupWidths.total"\n      class="datatable-header-inner">\n      <div\n        *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups"\n        [class]="\'datatable-row-\' + colGroup.type"\n        [ngStyle]="_styleByGroup[colGroup.type]">\n        <datatable-header-cell\n          *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn"\n          resizeable\n          [resizeEnabled]="column.resizeable"\n          (resize)="onColumnResized($event, column)"\n          long-press\n          [pressModel]="column"\n          [pressEnabled]="reorderable && column.draggable"\n          (longPressStart)="onLongPressStart($event)"\n          (longPressEnd)="onLongPressEnd($event)"\n          draggable\n          [dragX]="reorderable && column.draggable && column.dragging"\n          [dragY]="false"\n          [dragModel]="column"\n          [dragEventTarget]="dragEventTarget"\n          [headerHeight]="headerHeight"\n          [isTarget]="column.isTarget"\n          [targetMarkerTemplate]="targetMarkerTemplate"\n          [targetMarkerContext]="column.targetMarkerContext"\n          [column]="column"\n          [sortType]="sortType"\n          [sorts]="sorts"\n          [selectionType]="selectionType"\n          [sortAscendingIcon]="sortAscendingIcon"\n          [sortDescendingIcon]="sortDescendingIcon"\n          [allRowsSelected]="allRowsSelected"\n          (sort)="onSort($event)"\n          (select)="select.emit($event)"\n          (columnContextmenu)="columnContextmenu.emit($event)">\n        </datatable-header-cell>\n      </div>\n    </div>\n  ',host:{class:"datatable-header"},changeDetection:o.ChangeDetectionStrategy.OnPush})],t)}()},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]}n("wd/R").defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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}})}()},tKjC:function(t,e,n){"use strict";n.r(e);var a=n("6blF"),r=n("p0ib");a.a.prototype.merge=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.lift.call(r.a.apply(void 0,[this].concat(t)))}},tNVB:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("xMyE"),r=n("3fWJ"),i=function(t){return void 0===t&&(t=o),Object(a.a)({hasValue:!1,next:function(){this.hasValue=!0},complete:function(){if(!this.hasValue)throw t()}})};function o(){return new r.a}},tT3J:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".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\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}()},tUCv:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},tdLY:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["id",[["AM","PM"],n,n],n,[["M","S","S","R","K","J","S"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"],["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"]],n,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]],n,[["SM","M"],n,["Sebelum Masehi","Masehi"]],0,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE, dd MMMM y"],["HH.mm","HH.mm.ss","HH.mm.ss z","HH.mm.ss zzzz"],["{1} {0}",n,n,n],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN","."],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"Rp","Rupiah Indonesia",{AUD:["AU$","$"],IDR:["Rp"],INR:["Rs","\u20b9"],JPY:["JP\xa5","\xa5"],THB:["\u0e3f"],TWD:["NT$"],USD:["US$","$"]},function(t){return 5}]})},tjFV:function(t,e,n){"use strict";var a=n("CDJp"),r=n("RDha"),i=n("fELs");t.exports={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=r.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?r.merge({},[a.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=r.extend(this.defaults[t],e))},addScalesToLayout:function(t){r.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,i.addBox(t,e)})}}},ty8c:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("1PfE");e.NodeEditableDirective=function(){function t(t,e){this.renderer=t,this.elementRef=e,this.valueChanged=new a.EventEmitter(!1)}return t.prototype.ngOnInit=function(){var t=this.elementRef.nativeElement;t&&t.focus(),this.renderer.setProperty(t,"value",this.nodeValue)},t.prototype.applyNewValue=function(t){this.valueChanged.emit({type:"keyup",value:t})},t.prototype.applyNewValueByLoosingFocus=function(t){this.valueChanged.emit({type:"blur",value:t})},t.prototype.cancelEditing=function(){this.valueChanged.emit({type:"keyup",value:this.nodeValue,action:r.NodeEditableEventAction.Cancel})},t.decorators=[{type:a.Directive,args:[{selector:"[nodeEditable]"}]}],t.propDecorators={nodeValue:[{type:a.Input,args:["nodeEditable"]}],valueChanged:[{type:a.Output}],applyNewValue:[{type:a.HostListener,args:["keyup.enter",["$event.target.value"]]}],applyNewValueByLoosingFocus:[{type:a.HostListener,args:["blur",["$event.target.value"]]}],cancelEditing:[{type:a.HostListener,args:["keyup.esc"]}]},t}()},u0Op:function(t,e,n){"use strict";var a=n("TC34"),r={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-r.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*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};t.exports={effects:r},a.easingEffects=r},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]}n("wd/R").defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_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}})}()},u67D:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("En8+"),r=function(t){return function(e){for(var n=t[a.a]();;){var r=n.next();if(r.done){e.complete();break}if(e.next(r.value),e.closed)break}return"function"==typeof n.return&&e.add(function(){n.return&&n.return()}),e}}},u6yn:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["zh-Hant",[["\u4e0a\u5348","\u4e0b\u5348"],n,n],n,[["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],["\u9031\u65e5","\u9031\u4e00","\u9031\u4e8c","\u9031\u4e09","\u9031\u56db","\u9031\u4e94","\u9031\u516d"],["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]],n,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],n],n,[["\u897f\u5143\u524d","\u897f\u5143"],n,n],0,[6,0],["y/M/d","y\u5e74M\u6708d\u65e5",n,"y\u5e74M\u6708d\u65e5 EEEE"],["ah:mm","ah:mm:ss","ah:mm:ss [z]","ah:mm:ss [zzzz]"],["{1} {0}",n,n,n],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","\u975e\u6578\u503c",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"$","\u65b0\u53f0\u5e63",{AUD:["AU$","$"],KRW:["\uffe6","\u20a9"],RON:[n,"L"],TWD:["$"],USD:["US$","$"]},function(t){return 5}]})},uEye:function(t,e,n){!function(t){"use strict";n("wd/R").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\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".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\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] 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\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},uIqm:function(t,e,n){"use strict";var a=n("CcnG"),r=n("y9jh"),i=n("LvDl"),o=n("gI3B"),s=n("6blF"),u=n("x38r"),l=function(){return function(t){this.errorConfig={resetData:!0,displayError:!0},this.error=t}}(),c=n("vCyI");n.d(e,"a",function(){return d});var d=function(){function t(t,e){this.ngZone=t,this.cdRef=e,this.columnMode="flex",this.toolHeader=!0,this.header=!0,this.footer=!0,this.limit=10,this.autoReload=5e3,this.identifier="id",this.forceIdentifier=!1,this.selectionType=void 0,this.updateSelectionOnRefresh="onChange",this.autoSave=!0,this.fetchData=new a.EventEmitter,this.updateSelection=new a.EventEmitter,this.selection=new c.a,this.cellTemplates={},this.search="",this.rows=[],this.loadingIndicator=!0,this.loadingError=!1,this.paginationClasses={pagerLeftArrow:"i fa fa-angle-double-left",pagerRightArrow:"i fa fa-angle-double-right",pagerPrevious:"i fa fa-angle-left",pagerNext:"i fa fa-angle-right"},this.userConfig={},this.localStorage=window.localStorage,this.updating=!1}return t.prototype.ngOnInit=function(){var t=this;if(window.addEventListener("mouseenter",function(t){t.stopPropagation()},!0),this._addTemplates(),!this.sorts){var e=-1!==i.findIndex(this.columns,["prop",this.identifier]);this.sorts=this.createSortingDefinition(e?this.identifier:this.columns[0].prop+""),e||this.forceIdentifier||(this.identifier=this.columns[0].prop+"")}this.initUserConfig(),this.columns.forEach(function(e){e.cellTransformation&&(e.cellTemplate=t.cellTemplates[e.cellTransformation]),e.flexGrow||(e.flexGrow=e.prop+""===t.identifier?1:2),e.resizeable||(e.resizeable=!1)}),this.filterHiddenColumns(),this.fetchData.observers.length>0&&(this.loadingIndicator=!0),i.isInteger(this.autoReload)&&this.autoReload>0?this.ngZone.runOutsideAngular(function(){t.reloadSubscriber=Object(o.a)(0,t.autoReload).subscribe(function(){t.ngZone.run(function(){return t.reloadData()})})}):this.reloadData()},t.prototype.initUserConfig=function(){var t=this;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(function(e,n){e.isHidden=t.userConfig.columns[n].isHidden}):this.updateUserColumns()},t.prototype._calculateUniqueTableName=function(t){var e=function(t){if(!i.isString(t))return 0;for(var e=0,n=0;n<t.length;n++)e+=t.charCodeAt(n)*n;return e};return t.reduce(function(t,n,a){return(e(n.prop)+e(n.name))*(a+1)+t},0).toString()},t.prototype._loadUserConfig=function(){var t=this.localStorage.getItem(this.tableName);t&&(this.userConfig=JSON.parse(t))},t.prototype._initUserConfigAutoSave=function(){var t=s.a.create(this._initUserConfigProxy.bind(this));this.saveSubscriber=t.subscribe(this._saveUserConfig.bind(this))},t.prototype._initUserConfigProxy=function(t){this.userConfig=new Proxy(this.userConfig,{set:function(e,n,a){return e[n]=a,t.next(e),!0}})},t.prototype._saveUserConfig=function(t){this.localStorage.setItem(this.tableName,JSON.stringify(t))},t.prototype.updateUserColumns=function(){this.userConfig.columns=this.columns.map(function(t){return{prop:t.prop,name:t.name,isHidden:!!t.isHidden}})},t.prototype.filterHiddenColumns=function(){this.tableColumns=this.columns.filter(function(t){return!t.isHidden})},t.prototype.ngOnDestroy=function(){this.reloadSubscriber&&this.reloadSubscriber.unsubscribe(),this.saveSubscriber&&this.saveSubscriber.unsubscribe()},t.prototype.ngAfterContentChecked=function(){this.table&&this.table.element.clientWidth!==this.currentWidth&&(this.currentWidth=this.table.element.clientWidth,this.table.recalculate())},t.prototype._addTemplates=function(){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},t.prototype.useCustomClass=function(t){if(!this.customCss)throw new Error("Custom classes are not set!");var e=Object.keys(this.customCss),n=Object.values(this.customCss).map(function(n,a){return(i.isFunction(n)&&n(t)||n===t)&&e[a]}).filter(function(t){return t}).join(" ");return i.isEmpty(n)?void 0:n},t.prototype.ngOnChanges=function(){this.useData()},t.prototype.setLimit=function(t){var e=parseInt(t.target.value,10);e>0&&(this.userConfig.limit=e)},t.prototype.reloadData=function(){var t=this;if(!this.updating){this.loadingError=!1;var e=new l(function(){t.loadingError=e.errorConfig.displayError,e.errorConfig.resetData&&(t.data=[]),t.useData()});this.fetchData.emit(e),this.updating=!0}},t.prototype.refreshBtn=function(){this.loadingIndicator=!0,this.reloadData()},t.prototype.rowIdentity=function(){var t=this;return function(e){var n=e[t.identifier];if(i.isUndefined(n))throw new Error('Wrong identifier "'+t.identifier+'" -> "'+n+'"');return n}},t.prototype.useData=function(){this.data&&(this.search.length>0?this.updateFilter():this.rows=this.data.slice(),this.reset(),this.updateSelected())},t.prototype.reset=function(){this.loadingIndicator=!1,this.updating=!1},t.prototype.updateSelected=function(){var t=this;if("never"!==this.updateSelectionOnRefresh){var e=[];this.selection.selected.forEach(function(n){for(var a=0,r=t.data;a<r.length;a++){var i=r[a];n[t.identifier]===i[t.identifier]&&e.push(i)}}),"onChange"===this.updateSelectionOnRefresh&&i.isEqual(this.selection.selected,e)||(this.selection.selected=e,this.onSelect())}},t.prototype.onSelect=function(){this.selection.update(),this.updateSelection.emit(i.clone(this.selection))},t.prototype.toggleColumn=function(t){var e=t.target.name,n=!t.target.checked;n&&1===this.tableColumns.length?t.target.checked=!0:(i.find(this.columns,function(t){return t.prop===e}).isHidden=n,this.updateColumns())},t.prototype.updateColumns=function(){this.updateUserColumns(),this.filterHiddenColumns();var t=this.userConfig.sorts[0].prop;i.find(this.tableColumns,function(e){return e.prop===t})||(this.userConfig.sorts=this.createSortingDefinition(this.tableColumns[0].prop),this.table.onColumnSort({sorts:this.userConfig.sorts})),this.table.recalculate(),this.cdRef.detectChanges()},t.prototype.createSortingDefinition=function(t){return[{prop:t,dir:r.SortDirection.asc}]},t.prototype.changeSorting=function(t){this.userConfig.sorts=t.sorts},t.prototype.updateFilter=function(t){void 0===t&&(t=!1),t&&(this.search="");var e=this.search.toLowerCase().replace(/,/g,""),n=this.columns.filter(function(t){return t.cellTransformation!==u.a.sparkline});e.match(/['"][^'"]+['"]/)&&(e=e.replace(/['"][^'"]+['"]/g,function(t){return t.replace(/(['"])([^'"]+)(['"])/g,"$2").replace(/ /g,"+")})),this.rows=this.subSearch(this.data,e.split(" ").filter(function(t){return t.length>0}),n),this.table.offset=0},t.prototype.subSearch=function(t,e,n){if(0===e.length||0===t.length)return t;var a=e.pop().replace("+"," ").split(":"),r=n.slice();return 2===a.length&&(n=r.filter(function(t){return-1!==t.name.toLowerCase().indexOf(a[0])})),t=this.basicDataSearch(i.last(a),t,n),this.subSearch(t,e,r)},t.prototype.basicDataSearch=function(t,e,n){return 0===t.length?e:e.filter(function(e){return n.filter(function(n){var a=i.get(e,n.prop);return i.isUndefined(n.pipe)||(a=n.pipe.transform(a)),!i.isUndefined(a)&&!i.isNull(a)&&(i.isArray(a)?a=a.join(" "):(i.isNumber(a)||i.isBoolean(a))&&(a=a.toString()),-1!==a.toLowerCase().indexOf(t))}).length>0})},t.prototype.getRowClass=function(){var t=this;return function(){return{clickable:!i.isUndefined(t.selectionType)}}},t}()},uKs4:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG");e.VisibilityDirective=function(){function t(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new i.EventEmitter}return t.prototype.ngOnInit=function(){this.runCheck()},t.prototype.ngOnDestroy=function(){clearTimeout(this.timeout)},t.prototype.onVisibilityChange=function(){var t=this;this.zone.run(function(){t.isVisible=!0,t.visible.emit(!0)})},t.prototype.runCheck=function(){var t=this,e=function(){var n=t.element.nativeElement;n.offsetHeight&&n.offsetWidth?(clearTimeout(t.timeout),t.onVisibilityChange()):(clearTimeout(t.timeout),t.zone.runOutsideAngular(function(){t.timeout=setTimeout(function(){return e()},50)}))};this.timeout=setTimeout(function(){return e()})},a([i.HostBinding("class.visible"),r("design:type",Boolean)],t.prototype,"isVisible",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"visible",void 0),a([i.Directive({selector:"[visibilityObserver]"})],t)}()},uMaO:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("mrSG"),r=function(t){function e(e,n){var a=t.call(this)||this;return a.subject=e,a.subscriber=n,a.closed=!1,a}return a.__extends(e,t),e.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var t=this.subject,e=t.observers;if(this.subject=null,e&&0!==e.length&&!t.isStopped&&!t.closed){var n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},e}(n("pugT").a)},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".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\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_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:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(t,e){return e?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},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});var a=function(){function t(){}return t.prototype.transform=function(t){switch(t){case"user:rbd":return"user:rbd (tcmu-runner)";default:return t}},t}()},ufoC:function(t,e,n){"use strict";var a;!function(t){t.auth="Login",t.cephfs="CephFS",t.rbd="RBD",t.pool="Pool",t.osd="OSD",t.role="Role",t.user="User"}(a||(a={}));var r=n("CcnG"),i=n("Jm/i");n.d(e,"a",function(){return u});var o=function(){return function(t,e,n){this.running=t,this.failure=e,this.success=n}}(),s=function(){function t(t,e,n,a){this.i18n=t,this.operation=e,this.involves=n,this.errors=a||function(){return{}}}return t.prototype.failure=function(t){return this.i18n("Failed to {{failure}} {{metadata}}",{failure:this.operation.failure,metadata:this.involves(t)})},t.prototype.running=function(t){return this.operation.running+" "+this.involves(t)},t.prototype.success=function(t){return this.operation.success+" "+this.involves(t)},t}(),u=function(){function t(t){var e=this;this.i18n=t,this.defaultMessage=this.newTaskMessage(new o(this.i18n("Executing"),this.i18n("execute"),this.i18n("Executed")),function(t){return t&&(a[t.component]||t.component)||e.i18n("unknown task")},function(){return{}}),this.commonOperations={create:new o(this.i18n("Creating"),this.i18n("create"),this.i18n("Created")),update:new o(this.i18n("Updating"),this.i18n("update"),this.i18n("Updated")),delete:new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted"))},this.rbd={default:function(t){return e.i18n("RBD '{{id}}'",{id:t.pool_name+"/"+t.image_name})},child:function(t){return e.i18n("RBD '{{id}}'",{id:t.child_pool_name+"/"+t.child_image_name})},destination:function(t){return e.i18n("RBD '{{id}}'",{id:t.dest_pool_name+"/"+t.dest_image_name})},snapshot:function(t){return e.i18n("RBD snapshot '{{id}}'",{id:t.pool_name+"/"+t.image_name+"@"+t.snapshot_name})}},this.rbd_mirroring={pool:function(t){return e.i18n("mirror mode for pool '{{id}}'",{id:""+t.pool_name})},pool_peer:function(t){return e.i18n("mirror peer for pool '{{id}}'",{id:""+t.pool_name})}},this.grafana={update_dashboards:function(){return e.i18n("all dashboards")}},this.messages={"pool/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.pool(t)},function(t){return{17:e.i18n("Name is already used by {{pool_name}}.",{pool_name:e.pool(t)})}}),"pool/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.pool(t)},function(t){return{17:e.i18n("Name is already used by {{pool_name}}.",{pool_name:e.pool(t)})}}),"pool/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.pool(t)}),"ecp/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.ecp(t)},function(t){return{17:e.i18n("Name is already used by {{name}}.",{name:e.ecp(t)})}}),"ecp/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.ecp(t)}),"rbd/create":this.newTaskMessage(this.commonOperations.create,this.rbd.default,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.default(t)})}}),"rbd/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.default,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.default(t)})}}),"rbd/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.default,function(t){return{39:e.i18n("{{rbd_name}} contains snapshots.",{rbd_name:e.rbd.default(t)})}}),"rbd/clone":this.newTaskMessage(new o(this.i18n("Cloning"),this.i18n("clone"),this.i18n("Cloned")),this.rbd.child,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.child(t)}),22:e.i18n("Snapshot of {{rbd_name}} must be protected.",{rbd_name:e.rbd.child(t)})}}),"rbd/copy":this.newTaskMessage(new o(this.i18n("Copying"),this.i18n("copy"),this.i18n("Copied")),this.rbd.destination,function(t){return{17:e.i18n("Name is already used by {{rbd_name}}.",{rbd_name:e.rbd.destination(t)})}}),"rbd/flatten":this.newTaskMessage(new o(this.i18n("Flattening"),this.i18n("flatten"),this.i18n("Flattened")),this.rbd.default),"rbd/snap/create":this.newTaskMessage(this.commonOperations.create,this.rbd.snapshot,function(t){return{17:e.i18n("Name is already used by {{snap_name}}.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/edit":this.newTaskMessage(this.commonOperations.update,this.rbd.snapshot,function(t){return{16:e.i18n("Cannot unprotect {{snap_name}} because it contains child images.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd.snapshot,function(t){return{16:e.i18n("Cannot delete {{snap_name}} because it's protected.",{snap_name:e.rbd.snapshot(t)})}}),"rbd/snap/rollback":this.newTaskMessage(new o(this.i18n("Rolling back"),this.i18n("rollback"),this.i18n("Rolled back")),this.rbd.snapshot),"rbd/trash/move":this.newTaskMessage(new o(this.i18n("Moving"),this.i18n("move"),this.i18n("Moved")),function(t){return e.i18n("image '{{id}}' to trash",{id:t.pool_name+"/"+t.image_name})},function(){return{2:e.i18n("Could not find image.")}}),"rbd/trash/restore":this.newTaskMessage(new o(this.i18n("Restoring"),this.i18n("restore"),this.i18n("Restored")),function(t){return e.i18n("image '{{id}}' into '{{new_id}}'",{id:t.pool_name+"@"+t.image_id,new_id:t.pool_name+"/"+t.new_image_name})},function(t){return{17:e.i18n("Image name '{{id}}' is already in use.",{id:t.pool_name+"/"+t.new_image_name})}}),"rbd/trash/remove":this.newTaskMessage(new o(this.i18n("Deleting"),this.i18n("delete"),this.i18n("Deleted")),function(t){return e.i18n("image '{{id}}'",{id:t.pool_name+"/"+t.image_name+"@"+t.image_id})}),"rbd/trash/purge":this.newTaskMessage(new o(this.i18n("Purging"),this.i18n("purge"),this.i18n("Purged")),function(t){var n=e.i18n("all pools");return t.pool_name&&(n="'"+t.pool_name+"'"),e.i18n("images from {{message}}",{message:n})}),"rbd/mirroring/pool/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool,function(){return{16:e.i18n("Cannot disable mirroring because it contains a peer.")}}),"rbd/mirroring/peer/add":this.newTaskMessage(this.commonOperations.create,this.rbd_mirroring.pool_peer,function(){return{}}),"rbd/mirroring/peer/edit":this.newTaskMessage(this.commonOperations.update,this.rbd_mirroring.pool_peer,function(){return{}}),"rbd/mirroring/peer/delete":this.newTaskMessage(this.commonOperations.delete,this.rbd_mirroring.pool_peer,function(){return{}}),"iscsi/target/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.iscsiTarget(t)}),"iscsi/target/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.iscsiTarget(t)}),"iscsi/target/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.iscsiTarget(t)}),"nfs/create":this.newTaskMessage(this.commonOperations.create,function(t){return e.nfs(t)}),"nfs/edit":this.newTaskMessage(this.commonOperations.update,function(t){return e.nfs(t)}),"nfs/delete":this.newTaskMessage(this.commonOperations.delete,function(t){return e.nfs(t)}),"grafana/dashboards/update":this.newTaskMessage(this.commonOperations.update,this.grafana.update_dashboards,function(){return{}})}}return t.prototype.newTaskMessage=function(t,e,n){return new s(this.i18n,t,e,n)},t.prototype.pool=function(t){return this.i18n("pool '{{pool_name}}'",{pool_name:t.pool_name})},t.prototype.ecp=function(t){return this.i18n("erasure code profile '{{name}}'",{name:t.name})},t.prototype.iscsiTarget=function(t){return this.i18n("target '{{target_iqn}}'",{target_iqn:t.target_iqn})},t.prototype.nfs=function(t){return this.i18n("NFS {{nfs_id}}",{nfs_id:"'"+t.cluster_id+":"+(t.export_id?t.export_id:t.path)+"'"})},t.prototype._getTaskTitle=function(t){return this.messages[t.name]||this.defaultMessage},t.prototype.getSuccessTitle=function(t){return this._getTaskTitle(t).success(t.metadata)},t.prototype.getErrorMessage=function(t){return this._getTaskTitle(t).errors(t.metadata)[t.exception.code]||t.exception.detail},t.prototype.getErrorTitle=function(t){return this._getTaskTitle(t).failure(t.metadata)},t.prototype.getRunningTitle=function(t){return this._getTaskTitle(t).running(t.metadata)},t.prototype.getRunningText=function(t){return this._getTaskTitle(t).operation.running},t.ngInjectableDef=r.defineInjectable({factory:function(){return new t(r.inject(i.a))},token:t,providedIn:"root"}),t}()},uhwM:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){}return t.prototype.transform=function(t){return t.join(", ")},t}()},urB8:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("buEt"),i=n("QGcS");e.NodeDraggableService=function(){function t(){this.draggableNodeEvents$=new r.Subject}return t.prototype.fireNodeDragged=function(t,e){t.tree&&!t.tree.isStatic()&&this.draggableNodeEvents$.next(new i.NodeDraggableEvent(t,e))},t.prototype.captureNode=function(t){this.capturedNode=t},t.prototype.getCapturedNode=function(){return this.capturedNode},t.prototype.releaseCapturedNode=function(){this.capturedNode=null},t.decorators=[{type:a.Injectable}],t}()},uxXc:function(t,e,n){var a=n("t1N5"),r=function(){return new l};for(var i in a){r[i+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),a[t](e)}}(i);var o=/(\w+)2(\w+)/.exec(i),s=o[1],u=o[2];(r[s]=r[s]||{})[u]=r[i]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=a[t](e);if("string"==typeof n||void 0===n)return n;for(var r=0;r<n.length;r++)n[r]=Math.round(n[r]);return n}}(i)}var l=function(){this.convs={}};l.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))},l.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},l.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=r[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){l.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),t.exports=r},vCyI:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){function t(){this.selected=[],this.update()}return t.prototype.update=function(){this.hasSelection=this.selected.length>0,this.hasSingleSelection=1===this.selected.length,this.hasMultiSelection=this.selected.length>1},t.prototype.first=function(){return this.hasSelection?this.selected[0]:null},t}()},vOVK:function(t,e,n){var a={"./messages.cs.xlf":"MaEZ","./messages.de-DE.xlf":"BY/9","./messages.es-ES.xlf":"csGn","./messages.fr-FR.xlf":"obpP","./messages.id-ID.xlf":"nmKl","./messages.it-IT.xlf":"hHou","./messages.ja-JP.xlf":"waXJ","./messages.ko-KR.xlf":"Q3dv","./messages.pl-PL.xlf":"/6aS","./messages.pt-BR.xlf":"OWV/","./messages.zh-CN.xlf":"fB8H","./messages.zh-TW.xlf":"Dysq"};function r(t){var e=i(t);return n(e)}function i(t){var e=a[t];if(!(e+1)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return e}r.keys=function(){return Object.keys(a)},r.resolve=i,t.exports=r,r.id="vOVK"},vT00:function(t,e,n){var a,r,i;!function(o){if("object"==typeof t.exports){var s=o(0,e);void 0!==s&&(t.exports=s)}else r=[n,e],void 0===(i="function"==typeof(a=o)?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=["pt",[["AM","PM"],n,n],n,[["D","S","T","Q","Q","S","S"],["dom","seg","ter","qua","qui","sex","s\xe1b"],["domingo","segunda-feira","ter\xe7a-feira","quarta-feira","quinta-feira","sexta-feira","s\xe1bado"],["dom","seg","ter","qua","qui","sex","s\xe1b"]],n,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],["janeiro","fevereiro","mar\xe7o","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]],n,[["a.C.","d.C."],n,["antes de Cristo","depois de Cristo"]],0,[6,0],["dd/MM/y","d 'de' MMM 'de' y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",n,n,n],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4\xa0#,##0.00","#E0"],"R$","Real brasileiro",{AUD:["AU$","$"],JPY:["JP\xa5","\xa5"],PTE:["Esc."],RON:[n,"L"],THB:["\u0e3f"],TWD:["NT$"],USD:["US$","$"]},function(t){var e=Math.floor(Math.abs(t));return e===Math.floor(e)&&e>=0&&e<=1?1:5}]})},vpM6:function(t,e,n){"use strict";var a=n("CDJp"),r=n("vvH+"),i=n("RDha");a._set("global",{plugins:{filler:{propagate:!0}}});var o={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 s(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 u(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("number"==typeof i&&isFinite(i))return{x:(e=a.isHorizontal())?i:null,y:e?null:i}}return null}function l(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 c(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),o[n](t))}function d(t){return t&&!t.skip}function f(t,e,n,a,r){var o;if(a&&r){for(t.moveTo(e[0].x,e[0].y),o=1;o<a;++o)i.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(n[r-1].x,n[r-1].y),o=r-1;o>0;--o)i.canvas.lineTo(t,n[o],n[o-1],!0)}}t.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,a,i,o,d=(t.data.datasets||[]).length,f=e.propagate,p=[];for(a=0;a<d;++a)o=null,(i=(n=t.getDatasetMeta(a)).dataset)&&i._model&&i instanceof r.Line&&(o={visible:t.isDatasetVisible(a),fill:s(i,a,d),chart:t,el:i}),n.$filler=o,p.push(o);for(a=0;a<d;++a)(o=p[a])&&(o.fill=l(p,a,f),o.boundary=u(o),o.mapper=c(o))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var r=t.ctx,o=n.el,s=o._view,u=o._children||[],l=n.mapper,c=s.backgroundColor||a.global.defaultColor;l&&c&&u.length&&(i.canvas.clipArea(r,t.chartArea),function(t,e,n,a,r,i){var o,s,u,l,c,p,h,g=e.length,m=a.spanGaps,b=[],y=[],v=0,_=0;for(t.beginPath(),o=0,s=g+!!i;o<s;++o)c=n(l=e[u=o%g]._view,u,a),p=d(l),h=d(c),p&&h?(v=b.push(l),_=y.push(c)):v&&_&&(m?(p&&b.push(l),h&&y.push(c)):(f(t,b,y,v,_),v=_=0,b=[],y=[]));f(t,b,y,v,_),t.closePath(),t.fillStyle=r,t.fill()}(r,u,l,s,c,o._loop),i.canvas.unclipArea(r))}}}},"vvH+":function(t,e,n){"use strict";t.exports={},t.exports.Arc=n("X8CM"),t.exports.Line=n("UqmZ"),t.exports.Point=n("OXbD"),t.exports.Rectangle=n("2UWG")},vxfy:function(t,e,n){var a=n("mrSG").__decorate;Object.defineProperty(e,"__esModule",{value:!0});var r=n("CcnG");e.DataTableFooterTemplateDirective=function(){return a([r.Directive({selector:"[ngx-datatable-footer-template]"})],function(t){this.template=t})}()},w1EH:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("3fWJ"),r=n("VnD/"),i=n("AxiF"),o=n("tNVB"),s=n("HJBe"),u=n("mChF");function l(t,e){var n=arguments.length>=2;return function(l){return l.pipe(t?Object(r.a)(function(e,n){return t(e,n,l)}):u.a,Object(i.a)(1),n?Object(s.a)(e):Object(o.a)(function(){return new a.a}))}}},w5QO:function(t,e,n){"use strict";e.noop=function(){}},wQk9:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".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:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}()},waXJ:function(t,e){t.exports='<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>\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u306e\u5207\u308a\u66ff\u3048</target>\n      </trans-unit>\n      <trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">\n        <source>Dashboard</source>\n        <target>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">\n        <source>Cluster</source>\n        <target>\u30af\u30e9\u30b9\u30bf</target>\n      </trans-unit>\n      <trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">\n        <source>Hosts</source>\n        <target>\u30db\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">\n        <source>Monitors</source>\n        <target>\u30e2\u30cb\u30bf\u30fc</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>\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">\n        <source>CRUSH map</source>\n        <target>CRUSH\u30de\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">\n        <source>Manager modules</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30e2\u30b8\u30e5\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">\n        <source>Logs</source>\n        <target>\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">\n        <source>Alerts</source>\n        <target>\u30a2\u30e9\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">\n        <source>Pools</source>\n        <target>\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">\n        <source>Block</source>\n        <target>\u30d6\u30ed\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">\n        <source>Images</source>\n        <target>\u30a4\u30e1\u30fc\u30b8</target>\n      </trans-unit>\n      <trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">\n        <source>Mirroring</source>\n        <target>\u30df\u30e9\u30fc\u30ea\u30f3\u30b0</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>\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">\n        <source>Object Gateway</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">\n        <source>Daemons</source>\n        <target>\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">\n        <source>Users</source>\n        <target>\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">\n        <source>Buckets</source>\n        <target>\u30d0\u30b1\u30c3\u30c8</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="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">\n        <source>Back</source>\n        <target>\u623b\u308b</target>\n      </trans-unit>\n      <trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">\n        <source>Select a Language</source>\n        <target>\u8a00\u8a9e\u306e\u9078\u629e</target>\n      </trans-unit>\n      <trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">\n        <source>Loading panel data...</source>\n        <target>\u30d1\u30cd\u30eb\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</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>\u76e3\u8996\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\n\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\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\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u305b\u3093\u3002\nGrafana\u306b\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\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>\u8a2d\u5b9a\u306e\u30ea\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">\n        <source>Failed to load data.</source>\n        <target>\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">\n        <source>selected</source>\n        <target>\u9078\u629e\u6e08\u307f</target>\n        <note>X selected</note>\n      </trans-unit>\n      <trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">\n        <source>found</source>\n        <target>\u691c\u51fa\u6e08\u307f</target>\n        <note>X found</note>\n      </trans-unit>\n      <trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">\n        <source>total</source>\n        <target>\u5408\u8a08</target>\n        <note>X total</note>\n      </trans-unit>\n      <trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">\n        <source>Settings</source>\n        <target>\u8a2d\u5b9a</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>\u901a\u5e38\u306f\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304b\u3089\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">\n        <source>Backstore</source>\n        <target>\u30d0\u30c3\u30af\u30b9\u30c8\u30a2</target>\n      </trans-unit>\n      <trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">\n        <source>Confirm</source>\n        <target>\u78ba\u8a8d</target>\n      </trans-unit>\n      <trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">\n        <source>Cancel</source>\n        <target>\u30ad\u30e3\u30f3\u30bb\u30eb</target>\n      </trans-unit>\n      <trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">\n        <source>Advanced Settings</source>\n        <target>\u8a73\u7d30\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">\n        <source>Target IQN</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8IQN</target>\n      </trans-unit>\n      <trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">\n        <source>This field is required.</source>\n        <target>\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">\n        <source>IQN has wrong pattern.</source>\n        <target>IQN\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">\n        <source>An IQN has the following notation \'iqn.$year-$month.$reversedAddress:$definedName\'</source>\n        <target>IQN\u306f\u300ciqn.$year-$month.$reversedAddress:$definedName\u300d\u3068\u3044\u3046\u5f62\u5f0f\u3067\u8868\u8a18\u3055\u308c\u307e\u3059\u3002</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>\u4f8b: 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>\u8a73\u7d30\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">\n        <source>This target has modified advanced settings.</source>\n        <target>\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8a73\u7d30\u8a2d\u5b9a\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">\n        <source>Portals</source>\n        <target>\u30dd\u30fc\u30bf\u30eb</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>\u5c11\u306a\u304f\u3068\u3082\n          <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/>\u53f0\u306e\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">\n        <source>Add portal</source>\n        <target>\u30dd\u30fc\u30bf\u30eb\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">\n        <source>This image has modified settings.</source>\n        <target>\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u8a2d\u5b9a\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">\n        <source>At least 1 image is required.</source>\n        <target>\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">\n        <source>Add image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">\n        <source>ACL authentication</source>\n        <target>ACL\u8a8d\u8a3c</target>\n      </trans-unit>\n      <trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">\n        <source>Initiators</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">\n        <source>Initiator</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">\n        <source>Client IQN</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IQN</target>\n      </trans-unit>\n      <trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">\n        <source>Initiator IQN needs to be unique.</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bfIQN\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">\n        <source>User</source>\n        <target>\u30e6\u30fc\u30b6</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>\u30e6\u30fc\u30b6\u540d\u306f8\uff5e64\u6587\u5b57\u306e\u9577\u3055\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\n\u82f1\u5b57\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u3001\u307e\u305f\u306f\u300c:\u300d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">\n        <source>Password</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">\n        <source>Mutual User</source>\n        <target>\u76f8\u4e92\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">\n        <source>Mutual Password</source>\n        <target>\u76f8\u4e92\u30d1\u30b9\u30ef\u30fc\u30c9</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>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306f\u3044\u305a\u308c\u304b\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u5c5e\u3057\u307e\u3059\u3002\u30a4\u30e1\u30fc\u30b8\u306f\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">\n        <source>No items added.</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">\n        <source>Add initiator</source>\n        <target>\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">\n        <source>Groups</source>\n        <target>\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">\n        <source>Group</source>\n        <target>\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">\n        <source>Name</source>\n        <target>\u540d\u524d</target>\n      </trans-unit>\n      <trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">\n        <source>Add group</source>\n        <target>\u30b0\u30eb\u30fc\u30d7\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">\n        <source>Submit</source>\n        <target>\u9001\u4fe1</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>\u9078\u629e\u3055\u308c\u305f\n          <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>\u3092\n          <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/>\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?\n        </target>\n      </trans-unit>\n      <trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">\n        <source>Yes, I am sure.</source>\n        <target>\u306f\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">\n        <source>Discovery Authentication</source>\n        <target>\u691c\u51fa\u8a8d\u8a3c</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>\u30e6\u30fc\u30b6\u540d\u306f8\uff5e64\u6587\u5b57\u306e\u9577\u3055\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\n\u82f1\u5b57\u3001\u300c.\u300d\u3001\u300c@\u300d\u3001\u300c-\u300d\u3001\u300c_\u300d\u3001\u307e\u305f\u306f\u300c:\u300d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>iSCSI\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">\n        <source>Available information:</source>\n        <target>\u53d6\u5f97\u53ef\u80fd\u306a\u60c5\u5831:</target>\n      </trans-unit>\n      <trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">\n        <source>iSCSI Targets not available</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306aiSCSI\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">\n        <source>\'/\' and \'@\' are not allowed.</source>\n        <target>\u300c/\u300d\u3068\u300c@\u300d\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">\n        <source>Loading...</source>\n        <target>\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">\n        <source>-- No rbd pools available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306arbd\u30d7\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">\n        <source>-- Select a pool --</source>\n        <target>-- \u30d7\u30fc\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">\n        <source>Use a dedicated data pool</source>\n        <target>\u5c02\u7528\u306e\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044</target>\n      </trans-unit>\n      <trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">\n        <source>Data pool</source>\n        <target>\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb</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\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c7\u30fc\u30bf\u3092\u4fdd\u7ba1\u3059\u308b\u305f\u3081\u306e\u5c02\u7528\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">\n        <source>-- No data pools available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">\n        <source>Size</source>\n        <target>\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">\n        <source>e.g., 10GiB</source>\n        <target>\u4f8b: 10GiB</target>\n      </trans-unit>\n      <trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">\n        <source>You have to increase the size.</source>\n        <target>\u30b5\u30a4\u30ba\u3092\u5927\u304d\u304f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">\n        <source>Features</source>\n        <target>\u6a5f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">\n        <source>Advanced...</source>\n        <target>\u8a73\u7d30...</target>\n      </trans-unit>\n      <trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">\n        <source>Advanced</source>\n        <target>\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">\n        <source>Striping</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0</target>\n      </trans-unit>\n      <trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">\n        <source>Object size</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">\n        <source>Stripe unit</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">\n        <source>-- Select stripe unit --</source>\n        <target>-- \u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</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>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">\n        <source>Stripe unit is greater than object size.</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b5\u30a4\u30ba\u3088\u308a\u5927\u304d\u3044\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">\n        <source>Stripe count</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570</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>\u30b9\u30c8\u30e9\u30a4\u30d7\u5358\u4f4d\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">\n        <source>Stripe count must be greater than 0.</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d7\u6570\u306f0\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">\n        <source>Trash</source>\n        <target>\u3054\u307f\u7bb1</target>\n      </trans-unit>\n      <trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">\n        <source>Overall Performance</source>\n        <target>\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">\n        <source>Edit</source>\n        <target>\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">\n        <source>Description</source>\n        <target>\u8aac\u660e</target>\n      </trans-unit>\n      <trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">\n        <source>Long description</source>\n        <target>\u9577\u3044\u8aac\u660e</target>\n      </trans-unit>\n      <trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">\n        <source>Default</source>\n        <target>\u30c7\u30d5\u30a9\u30eb\u30c8</target>\n      </trans-unit>\n      <trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">\n        <source>Daemon default</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u306e\u30c7\u30d5\u30a9\u30eb\u30c8</target>\n      </trans-unit>\n      <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">\n        <source>Services</source>\n        <target>\u30b5\u30fc\u30d3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">\n        <source>Values</source>\n        <target>\u5024</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>\u3088\u308a\u5c0f\u3055\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">\n        <source>Save</source>\n        <target>\u4fdd\u5b58</target>\n      </trans-unit>\n      <trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">\n        <source>CRUSH map viewer</source>\n        <target>CRUSH\u30de\u30c3\u30d7\u30d3\u30e5\u30fc\u30a2</target>\n      </trans-unit>\n      <trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">\n        <source>Hosts List</source>\n        <target>\u30db\u30b9\u30c8\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">\n        <source>No entries found</source>\n        <target>\u30a8\u30f3\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">\n        <source>Cluster Logs</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">\n        <source>Audit Logs</source>\n        <target>\u76e3\u67fb\u30ed\u30b0</target>\n      </trans-unit>\n      <trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">\n        <source>Loading configuration...</source>\n        <target>\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">\n        <source>The configuration could not be loaded.</source>\n        <target>\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">\n        <source>Edit Manager module</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u7de8\u96c6</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aUUID\u3067\u306f\u3042\u308a\u307e\u305b\u3093(\u6709\u52b9\u306aUUID\u306e\u4f8b: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8)\u3002</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>\u6709\u52b9\u306aIP\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>\u4ee5\u4e0b\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>\u4ee5\u4e0a\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\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>\u6570\u5b57\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u6570\u5b57\u307e\u305f\u306f\u5c0f\u6570\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">\n        <source>Update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">\n        <source>Status</source>\n        <target>\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">\n        <source>Cluster ID</source>\n        <target>\u30af\u30e9\u30b9\u30bfID</target>\n      </trans-unit>\n      <trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">\n        <source>monmap modified</source>\n        <target>monmap\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">\n        <source>monmap epoch</source>\n        <target>monmap\u30a8\u30dd\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">\n        <source>quorum con</source>\n        <target>\u5b9a\u6570con</target>\n      </trans-unit>\n      <trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">\n        <source>quorum mon</source>\n        <target>\u5b9a\u6570mon</target>\n      </trans-unit>\n      <trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">\n        <source>required con</source>\n        <target>\u5fc5\u9808\u306econ</target>\n      </trans-unit>\n      <trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">\n        <source>required mon</source>\n        <target>\u5fc5\u9808\u306emon</target>\n      </trans-unit>\n      <trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">\n        <source>In Quorum</source>\n        <target>\u5b9a\u6570\u5185</target>\n      </trans-unit>\n      <trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">\n        <source>Not In Quorum</source>\n        <target>\u975e\u5b9a\u6570\u5185</target>\n      </trans-unit>\n      <trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">\n        <source>Cluster-wide OSD Flags</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u5168\u4f53\u306eOSD\u30d5\u30e9\u30b0</target>\n      </trans-unit>\n      <trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">\n        <source>OSD Recovery Priority</source>\n        <target>OSD\u56de\u5fa9\u512a\u5148\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">\n        <source>Priority</source>\n        <target>\u512a\u5148\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">\n        <source>Customize priority values</source>\n        <target>\u512a\u5148\u5ea6\u5024\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">\n        <source>This field is required!</source>\n        <target>\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5fc5\u9808\u3067\u3059\u3002</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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5927\u304d\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>\u3088\u308a\u5927\u304d\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\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>\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u5c0f\u3055\u3059\u304e\u307e\u3059\u3002\n          <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>\u3088\u308a\u5c0f\u3055\u3044\u5024\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">\n        <source>Reweight OSD</source>\n        <target>\u518d\u91cd\u307f\u3065\u3051OSD</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>\u5024\u306f0\u30681\u306e\u9593\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">\n        <source>Reweight</source>\n        <target>\u518d\u91cd\u307f\u3065\u3051</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 {...}}"/>\u30b9\u30af\u30e9\u30d6\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="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">\n        <source>You are about to apply a\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to\n            the OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>.\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>\u30b9\u30af\u30e9\u30d6\u3092OSD\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\n          <x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306b\n\u9069\u7528\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\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\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306f\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>"/>\u3068\u30de\u30fc\u30af\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">\n        <source>The OSD is not safe to destroy!</source>\n        <target>\u3053\u306eOSD\u3092\u5b89\u5168\u306b\u7834\u68c4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">\n        <source>\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>OSD\n          <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/>\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u306f\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>"/>\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">\n        <source>Details</source>\n        <target>\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">\n        <source>Health</source>\n        <target>\u30d8\u30eb\u30b9</target>\n      </trans-unit>\n      <trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">\n        <source>Statistics</source>\n        <target>\u7d71\u8a08\u60c5\u5831</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>NFS Ganesha\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">\n        <source>Clients</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">\n        <source>Any client can access</source>\n        <target>\u4efb\u610f\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">\n        <source>Addresses</source>\n        <target>\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">\n        <source>Required field</source>\n        <target>\u5fc5\u9808\u30d5\u30a3\u30fc\u30eb\u30c9</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\u3064\u4ee5\u4e0a\u306e\u30ab\u30f3\u30de\u533a\u5207\u308a\u5024\u3092\u542b\u3093\u3067\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">\n        <source>For example:</source>\n        <target>\u4f8b:</target>\n      </trans-unit>\n      <trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">\n        <source>Access Type</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">\n        <source>Squash</source>\n        <target>\u30b9\u30ab\u30c3\u30b7\u30e5</target>\n      </trans-unit>\n      <trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">\n        <source>Add clients</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">\n        <source>NFS export\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </source>\n        <target>NFS\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\n          <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + \':\' + export_id : \'\' }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">\n        <source>-- No cluster available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30af\u30e9\u30b9\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">\n        <source>-- Select the cluster --</source>\n        <target>-- \u30af\u30e9\u30b9\u30bf\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">\n        <source>Add daemon</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">\n        <source>Storage Backend</source>\n        <target>\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9</target>\n      </trans-unit>\n      <trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">\n        <source>-- Select the storage backend --</source>\n        <target>-- \u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">\n        <source>Object Gateway User</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">\n        <source>-- No users available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30e6\u30fc\u30b6\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">\n        <source>-- Select the object gateway user --</source>\n        <target>-- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">\n        <source>CephFS User ID</source>\n        <target>CephFS\u30e6\u30fc\u30b6ID</target>\n      </trans-unit>\n      <trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">\n        <source>-- No clients available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">\n        <source>-- Select the cephx client --</source>\n        <target>-- cephx\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">\n        <source>CephFS Name</source>\n        <target>CephFS\u540d</target>\n      </trans-unit>\n      <trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">\n        <source>Security Label</source>\n        <target>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e9\u30d9\u30eb</target>\n      </trans-unit>\n      <trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">\n        <source>Enable security label</source>\n        <target>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30e9\u30d9\u30eb\u306e\u6709\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">\n        <source>CephFS Path</source>\n        <target>CephFS\u30d1\u30b9</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>\u30d1\u30b9\u306f\u300c/\u300d\u3067\u59cb\u307e\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u306e\u5f8c\u308d\u306b1\u3064\u306e\u5358\u8a9e\u3092\u914d\u7f6e\u3067\u304d\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">\n        <source>New directory will be created</source>\n        <target>\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">\n        <source>Path</source>\n        <target>\u30d1\u30b9</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>\u30d1\u30b9\u306f\u5358\u4e00\u306e\u300c/\u300d\u307e\u305f\u306f1\u3064\u306e\u5358\u8a9e\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">\n        <source>New bucket will be created</source>\n        <target>\u65b0\u3057\u3044\u30d0\u30b1\u30c3\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">\n        <source>NFS Protocol</source>\n        <target>NFS\u30d7\u30ed\u30c8\u30b3\u30eb</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\u30bf\u30b0</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>\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>"/>\u30de\u30a6\u30f3\u30c8\u306e\u4ee3\u66ff\u30a2\u30af\u30bb\u30b9(\u5148\u982d\u306b\u300c/\u300d\u304c\u3042\u3063\u3066\u306f\u3044\u3051\u307e\u305b\u3093)\u3002\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>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u305b\u3093(\u305f\u3068\u3048\u3070\u3001\uff3b\u30bf\u30b0\uff3d = foo\u306e\u5834\u5408\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306ffoo/baz\u3092\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u305b\u3093)\u3002</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>\u7570\u306a\u308b\uff3b\u30bf\u30b0\uff3d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u540c\u3058\u30d1\u30b9\u3092\u8907\u6570\u56de\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">\n        <source>Pseudo</source>\n        <target>\u7591\u4f3c</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>\u3053\u306e\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>"/>\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u304c\n          <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="<strong>"/>\u7591\u4f3cFS\n          <x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="</strong>"/>\u5185\u3067\n\u5360\u6709\u3059\u308b\u4f4d\u7f6e(\u3053\u306e\u4f4d\u7f6e\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059)\u3002\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>\u7570\u306a\u308b\uff3b\u7591\u4f3c\uff3d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u540c\u3058\u30d1\u30b9\u3092\u8907\u6570\u56de\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">\n        <source>-- No access type available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">\n        <source>-- Select the access type --</source>\n        <target>-- \u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">\n        <source>-- No squash available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30b9\u30ab\u30c3\u30b7\u30e5\u304c\u3042\u308a\u307e\u305b\u3093 --</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>-- \u5b9f\u884c\u3055\u308c\u308b\u30e6\u30fc\u30b6ID\u30b9\u30ab\u30c3\u30b7\u30e5\u64cd\u4f5c\u306e\u7a2e\u985e\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">\n        <source>Transport Protocol</source>\n        <target>\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u30d7\u30ed\u30c8\u30b3\u30eb</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="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">\n        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>\n        <target>\u540d\u524d\u306f\u82f1\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u3001\u304a\u3088\u3073\u4e0b\u7dda\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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>\u9078\u629e\u3055\u308c\u305f\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">\n        <source>Plugin</source>\n        <target>\u30d7\u30e9\u30b0\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">\n        <source>Data chunks (k)</source>\n        <target>\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af(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\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">\n        <source>Coding chunks (m)</source>\n        <target>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af(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\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">\n        <source>Durability estimator (c)</source>\n        <target>\u8010\u4e45\u6027\u63a8\u5b9a\u5b50(c)</target>\n      </trans-unit>\n      <trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">\n        <source>Locality (l)</source>\n        <target>\u5730\u57df(l)</target>\n      </trans-unit>\n      <trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">\n        <source>Crush failure domain</source>\n        <target>Crush\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">\n        <source>Crush Locality</source>\n        <target>Crush\u5730\u57df</target>\n      </trans-unit>\n      <trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">\n        <source>None</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">\n        <source>Technique</source>\n        <target>\u6280\u6cd5</target>\n      </trans-unit>\n      <trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">\n        <source>Packetsize</source>\n        <target>\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">\n        <source>Crush root</source>\n        <target>Crush\u30eb\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">\n        <source>Crush device class</source>\n        <target>Crush\u30c7\u30d0\u30a4\u30b9\u30af\u30e9\u30b9</target>\n      </trans-unit>\n      <trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">\n        <source>any</source>\n        <target>\u4efb\u610f</target>\n      </trans-unit>\n      <trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">\n        <source>Directory</source>\n        <target>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">\n        <source>Add</source>\n        <target>\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">\n        <source>Close</source>\n        <target>\u9589\u3058\u308b</target>\n      </trans-unit>\n      <trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">\n        <source>Name...</source>\n        <target>\u540d\u524d...</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>\u9078\u629e\u3055\u308c\u305fCeph\u30d7\u30fc\u30eb\u540d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">\n        <source>Pool type</source>\n        <target>\u30d7\u30fc\u30eb\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">\n        <source>-- Select a pool type --</source>\n        <target>-- \u30d7\u30fc\u30eb\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">\n        <source>Placement groups</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">\n        <source>At least one placement group is needed!</source>\n        <target>\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002</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>\u3054\u4f7f\u7528\u306e\u30af\u30e9\u30b9\u30bf\u306f\u3053\u308c\u3060\u3051\u591a\u6570\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u5fc5\u8981\u306a\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u3092\u518d\u8a08\u7b97\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">\n        <source>You can only increase the number of PGs of an existing pool.\n                Currently your pool has\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.\n        </source>\n        <target>\u65e2\u5b58\u30d7\u30fc\u30eb\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u306e\u307f\u3092\u5897\u3084\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\u73fe\u5728\u30d7\u30fc\u30eb\u306b\u306f\n          <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/>\u500b\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">\n        <source>Calculation help</source>\n        <target>\u8a08\u7b97\u306e\u30d8\u30eb\u30d7</target>\n      </trans-unit>\n      <trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" 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>\u73fe\u5728\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u8a2d\u5b9a\u306f\u81ea\u52d5\u7684\u306b\u8a08\u7b97\u3055\u308c\u305f\u305f\u3081\u3001\n\u9001\u4fe1\u524d\u306b\u3001\u3053\u308c\u3089\u306e\u5024\u304c\u30cb\u30fc\u30ba\u306b\u5408\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">\n        <source>Crush ruleset</source>\n        <target>Crush\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">\n        <source>-- Select a crush rule --</source>\n        <target>-- Crush\u30eb\u30fc\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">\n        <source>Crush rule</source>\n        <target>Crush\u30eb\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">\n        <source>Crush steps</source>\n        <target>Crush\u30b9\u30c6\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">\n        <source>The rule can\'t be used in the current cluster as it has\n                to few OSDs to meet the minimum required OSD by this rule.</source>\n        <target>\u73fe\u5728\u306e\u30af\u30e9\u30b9\u30bf\u5185\u306eOSD\u6570\u306f\u3053\u306e\u30eb\u30fc\u30eb\u3067\u8981\u6c42\u3055\u308c\u308b\u6700\u5c0fOSD\u6570\u3092\u4e0b\u56de\u3063\u3066\u3044\u308b\u305f\u3081\u3001\n\u3053\u306e\u30eb\u30fc\u30eb\u3092\u73fe\u5728\u306e\u30af\u30e9\u30b9\u30bf\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">\n        <source>Replicated size</source>\n        <target>\u8907\u88fd\u3055\u308c\u305f\u30b5\u30a4\u30ba</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>\u6700\u5c0f:\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>\u6700\u5927:\n          <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" 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>\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30a4\u30ba\u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002\n\u6709\u52b9\u306a\u5024\u306e\u7bc4\u56f2\u306f\n          <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/>\uff5e\n          <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/>\u3067\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">\n        <source>Erasure code profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">\n        <source>-- No erasure code profile available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">\n        <source>-- Select an erasure code profile --</source>\n        <target>-- \u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">\n        <source>Flags</source>\n        <target>\u30d5\u30e9\u30b0</target>\n      </trans-unit>\n      <trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">\n        <source>EC Overwrites</source>\n        <target>EC\u306e\u4e0a\u66f8\u304d</target>\n      </trans-unit>\n      <trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">\n        <source>Applications</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">\n        <source>Compression</source>\n        <target>\u5727\u7e2e</target>\n      </trans-unit>\n      <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">\n        <source>Mode</source>\n        <target>\u30e2\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">\n        <source>Algorithm</source>\n        <target>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0</target>\n      </trans-unit>\n      <trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">\n        <source>-- No erasure compression algorithm available --</source>\n        <target>-- \u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30ec\u30a4\u30b8\u30e3\u5727\u7e2e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u3042\u308a\u307e\u305b\u3093 --</target>\n      </trans-unit>\n      <trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">\n        <source>Minimum blob size</source>\n        <target>\u6700\u5c0fblob\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">\n        <source>e.g., 128KiB</source>\n        <target>\u4f8b: 128KiB</target>\n      </trans-unit>\n      <trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">\n        <source>Value should be greater than 0</source>\n        <target>\u5024\u306f0\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">\n        <source>Maximum blob size</source>\n        <target>\u6700\u5927blob\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">\n        <source>e.g., 512KiB</source>\n        <target>\u4f8b: 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>\u5024\u306f\u6700\u5c0fblob\u30b5\u30a4\u30ba\u3088\u308a\u5927\u304d\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">\n        <source>Ratio</source>\n        <target>\u7387</target>\n      </trans-unit>\n      <trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">\n        <source>Compression ratio</source>\n        <target>\u5727\u7e2e\u7387</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>\u5024\u306f0.0\uff5e1.0\u306e\u9593\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">\n        <source>It\'s not possible to create an RBD pool with \'/\' in the name.</source>\n        <target>\u540d\u524d\u306b\u300c/\u300d\u304c\u542b\u307e\u308c\u305fRBD\u30d7\u30fc\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">\n        <source>Please change the name or remove \'rbd\' from the applications list.</source>\n        <target>\u540d\u524d\u3092\u5909\u66f4\u3059\u308b\u304b\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ea\u30b9\u30c8\u304b\u3089\u300crbd\u300d\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">\n        <source>Pools List</source>\n        <target>\u30d7\u30fc\u30eb\u30ea\u30b9\u30c8</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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u7ba1\u7406\u6a5f\u80fd\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u6709\u52b9\u5316\n\u3059\u308b\u65b9\u6cd5\u306b\u95a2\u3059\u308b\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">\n        <source>Loading bucket data...</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">\n        <source>The bucket data could not be loaded.</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</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>\u3053\u306e\u5024\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">\n        <source>The chosen name is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u540d\u524d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">\n        <source>Owner</source>\n        <target>\u6240\u6709\u8005</target>\n      </trans-unit>\n      <trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">\n        <source>-- Select a user --</source>\n        <target>-- \u30e6\u30fc\u30b6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">\n        <source>Daemons List</source>\n        <target>\u30c7\u30fc\u30e2\u30f3\u30ea\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">\n        <source>Type</source>\n        <target>\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">\n        <source>-- Select a type --</source>\n        <target>-- \u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">\n        <source>Permission</source>\n        <target>\u8a31\u53ef</target>\n      </trans-unit>\n      <trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">\n        <source>-- Select a permission --</source>\n        <target>-- \u8a31\u53ef\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">\n        <source>S3 key</source>\n        <target>S3\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">\n        <source>Username</source>\n        <target>\u30e6\u30fc\u30b6\u540d</target>\n      </trans-unit>\n      <trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">\n        <source>-- Select a username --</source>\n        <target>-- \u30e6\u30fc\u30b6\u540d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">\n        <source>Auto-generate key</source>\n        <target>\u30ad\u30fc\u306e\u81ea\u52d5\u751f\u6210</target>\n      </trans-unit>\n      <trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">\n        <source>Access key</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">\n        <source>Secret key</source>\n        <target>\u79d8\u5bc6\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">\n        <source>Subuser</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">\n        <source>The chosen subuser ID is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u30b5\u30d6\u30e6\u30fc\u30b6ID\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">\n        <source>read, write</source>\n        <target>\u8aad\u307f\u53d6\u308a\u3001\u66f8\u304d\u8fbc\u307f</target>\n      </trans-unit>\n      <trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">\n        <source>full</source>\n        <target>\u30d5\u30eb</target>\n      </trans-unit>\n      <trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">\n        <source>Swift key</source>\n        <target>\u30b9\u30a6\u30a3\u30d5\u30c8\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">\n        <source>Auto-generate secret</source>\n        <target>\u79d8\u5bc6\u306e\u81ea\u52d5\u751f\u6210</target>\n      </trans-unit>\n      <trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">\n        <source>Loading user data...</source>\n        <target>\u30e6\u30fc\u30b6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...</target>\n      </trans-unit>\n      <trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">\n        <source>The user data could not be loaded.</source>\n        <target>\u30e6\u30fc\u30b6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">\n        <source>The chosen user ID is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u30e6\u30fc\u30b6ID\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">\n        <source>Full name</source>\n        <target>\u6c0f\u540d</target>\n      </trans-unit>\n      <trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">\n        <source>Email address</source>\n        <target>\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">\n        <source>This is not a valid email address.</source>\n        <target>\u3053\u308c\u306f\u6709\u52b9\u306a\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">\n        <source>The chosen email address is already in use.</source>\n        <target>\u9078\u629e\u3055\u308c\u305f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">\n        <source>Max. buckets</source>\n        <target>\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">\n        <source>The entered value must be &gt;= 0.</source>\n        <target>0\u4ee5\u4e0a\u306e\u5024\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">\n        <source>Suspended</source>\n        <target>\u4e2d\u65ad\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">\n        <source>Subusers</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">\n        <source>There are no subusers.</source>\n        <target>\u30b5\u30d6\u30e6\u30fc\u30b6\u304c\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">\n        <source>Delete</source>\n        <target>\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">\n        <source>Keys</source>\n        <target>\u30ad\u30fc</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>\u30ad\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">\n        <source>Show</source>\n        <target>\u8868\u793a</target>\n      </trans-unit>\n      <trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">\n        <source>Swift</source>\n        <target>\u30b9\u30a6\u30a3\u30d5\u30c8</target>\n      </trans-unit>\n      <trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">\n        <source>Capabilities</source>\n        <target>\u6a5f\u80fd</target>\n      </trans-unit>\n      <trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">\n        <source>There are no capabilities.</source>\n        <target>\u6a5f\u80fd\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">\n        <source>User quota</source>\n        <target>\u30e6\u30fc\u30b6\u30af\u30a9\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">\n        <source>Enabled</source>\n        <target>\u6709\u52b9\u5316\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">\n        <source>Unlimited size</source>\n        <target>\u7121\u5236\u9650\u306e\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">\n        <source>Max. size</source>\n        <target>\u6700\u5927\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">\n        <source>Unlimited objects</source>\n        <target>\u7121\u5236\u9650\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">\n        <source>Max. objects</source>\n        <target>\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">\n        <source>Bucket quota</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u30af\u30a9\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">\n        <source>Welcome to Ceph!</source>\n        <target>Ceph\u306b\u3088\u3046\u3053\u305d!</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>\u30e6\u30fc\u30b6\u540d\u306f\u5fc5\u9808\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">\n        <source>Password is required</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5fc5\u9808\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">\n        <source>Login</source>\n        <target>\u30ed\u30b0\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">\n        <source>Description...</source>\n        <target>\u8aac\u660e...</target>\n      </trans-unit>\n      <trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">\n        <source>Permissions</source>\n        <target>\u8a31\u53ef</target>\n      </trans-unit>\n      <trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">\n        <source>Sorry, the user does not exist in Ceph.</source>\n        <target>\u3053\u306e\u30e6\u30fc\u30b6\u306fCeph\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002</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>\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\uff3b\u30ed\u30b0\u30a4\u30f3\uff3d\u30da\u30fc\u30b8\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u306b\u623b\u308a\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3\u3092\u518d\u8a66\u884c\u3059\u308b\u3068\u3001Identity Provider\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">\n        <source>Confirm password</source>\n        <target>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u78ba\u8a8d\u5165\u529b</target>\n      </trans-unit>\n      <trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">\n        <source>Password confirmation doesn\'t match the password.</source>\n        <target>\u78ba\u8a8d\u5165\u529b\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">\n        <source>Email</source>\n        <target>\u96fb\u5b50\u30e1\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">\n        <source>Invalid email.</source>\n        <target>\u7121\u52b9\u306a\u96fb\u5b50\u30e1\u30fc\u30eb\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">\n        <source>Roles</source>\n        <target>\u5f79\u5272</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>\u81ea\u8eab\u306e\u30e6\u30fc\u30b6\u304b\u3089\u300cuser read / update\u300d\u3068\u3044\u3046\u8a31\u53ef\u3092\u524a\u9664\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002</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>\u7d9a\u884c\u3057\u305f\u5834\u5408\u306f\u3001\u3069\u306e\u30e6\u30fc\u30b6\u306e\u5f79\u5272\u3082\u8ffd\u52a0\u304a\u3088\u3073\u524a\u9664\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">\n        <source>Are you sure you want to continue?</source>\n        <target>\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?</target>\n      </trans-unit>\n      <trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">\n        <source>Forbidden</source>\n        <target>\u7981\u6b62</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>\u691c\u7d22\u3057\u3066\u3044\u305f\u5185\u5bb9\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">\n        <source>Sorry, we could not find what you were looking for</source>\n        <target>\u691c\u7d22\u3057\u3066\u3044\u305f\u5185\u5bb9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">\n        <source>Remove all</source>\n        <target>\u3059\u3079\u3066\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">\n        <source>Recent Notifications</source>\n        <target>\u6700\u8fd1\u306e\u901a\u77e5</target>\n      </trans-unit>\n      <trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">\n        <source>There are no background tasks.</source>\n        <target>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">\n        <source>Background Tasks</source>\n        <target>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af</target>\n      </trans-unit>\n      <trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">\n        <source>Help</source>\n        <target>\u30d8\u30eb\u30d7</target>\n      </trans-unit>\n      <trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">\n        <source>Documentation</source>\n        <target>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8</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>\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">\n        <source>Dashboard Settings</source>\n        <target>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u8a2d\u5b9a</target>\n      </trans-unit>\n      <trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">\n        <source>User management</source>\n        <target>\u30e6\u30fc\u30b6\u7ba1\u7406</target>\n      </trans-unit>\n      <trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">\n        <source>Logged in user</source>\n        <target>\u30ed\u30b0\u30a4\u30f3\u6e08\u307f\u30e6\u30fc\u30b6</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>\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\u3068\u3057\u3066\u30b5\u30a4\u30f3\u30a4\u30f3\u6e08\u307f\n        </target>\n      </trans-unit>\n      <trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">\n        <source>Sign out</source>\n        <target>\u30b5\u30a4\u30f3\u30a2\u30a6\u30c8</target>\n      </trans-unit>\n      <trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">\n        <source>Performance Counters</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf</target>\n      </trans-unit>\n      <trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">\n        <source>Performance Details</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u8a73\u7d30</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>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">\n        <source>Placement rule</source>\n        <target>\u914d\u7f6e\u30eb\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">\n        <source>Marker</source>\n        <target>\u30de\u30fc\u30ab\u30fc</target>\n      </trans-unit>\n      <trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">\n        <source>Maximum marker</source>\n        <target>\u6700\u5927\u30de\u30fc\u30ab\u30fc</target>\n      </trans-unit>\n      <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">\n        <source>Version</source>\n        <target>\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">\n        <source>Master version</source>\n        <target>\u30de\u30b9\u30bf\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">\n        <source>Modification time</source>\n        <target>\u5909\u66f4\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">\n        <source>Zonegroup</source>\n        <target>\u30be\u30fc\u30f3\u30b0\u30eb\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">\n        <source>Maximum size</source>\n        <target>\u6700\u5927\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">\n        <source>Unlimited</source>\n        <target>\u7121\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">\n        <source>Maximum objects</source>\n        <target>\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">\n        <source>System</source>\n        <target>\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">\n        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>\n        <target>{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>\n      </trans-unit>\n      <trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">\n        <source>Maximum buckets</source>\n        <target>\u6700\u5927\u30d0\u30b1\u30c3\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">\n        <source>Performance counters not available</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">\n        <source>Global</source>\n        <target>\u30b0\u30ed\u30fc\u30d0\u30eb</target>\n      </trans-unit>\n      <trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">\n        <source>Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8</target>\n      </trans-unit>\n      <trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">\n        <source>Pool</source>\n        <target>\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">\n        <source>RBD Configuration</source>\n        <target>RBD\u8a2d\u5b9a</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>\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u5024\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u89aa\u8a2d\u5b9a\u5024\u304c\u7d99\u627f\u3055\u308c\u3066\u4ee3\u308f\u308a\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">\n        <source>The mininum value is 0</source>\n        <target>\u6700\u5c0f\u5024\u306f0\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">\n        <source>Attributes (OSD map)</source>\n        <target>\u5c5e\u6027(OSD\u30de\u30c3\u30d7)</target>\n      </trans-unit>\n      <trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">\n        <source>Metadata not available</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">\n        <source>Metadata</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf</target>\n      </trans-unit>\n      <trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">\n        <source>Performance counter</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf</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>\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093:\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>\u66f8\u304d\u8fbc\u307f\u56de\u6570</target>\n      </trans-unit>\n      <trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">\n        <source>Reads</source>\n        <target>\u8aad\u307f\u53d6\u308a\u56de\u6570</target>\n      </trans-unit>\n      <trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">\n        <source>Histogram</source>\n        <target>\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0</target>\n      </trans-unit>\n      <trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">\n        <source>Current values</source>\n        <target>\u73fe\u884c\u5024</target>\n      </trans-unit>\n      <trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">\n        <source>Min</source>\n        <target>\u6700\u5c0f</target>\n      </trans-unit>\n      <trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">\n        <source>Max</source>\n        <target>\u6700\u5927</target>\n      </trans-unit>\n      <trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">\n        <source>Source</source>\n        <target>\u30bd\u30fc\u30b9</target>\n      </trans-unit>\n      <trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">\n        <source>Level</source>\n        <target>\u30ec\u30d9\u30eb</target>\n      </trans-unit>\n      <trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">\n        <source>Can be updated at runtime (editable)</source>\n        <target>\u5b9f\u884c\u6642\u306b\u66f4\u65b0\u3067\u304d\u307e\u3059(\u7de8\u96c6\u53ef\u80fd)</target>\n      </trans-unit>\n      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">\n        <source>Tags</source>\n        <target>\u30bf\u30b0</target>\n      </trans-unit>\n      <trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">\n        <source>Enum values</source>\n        <target>\u5217\u6319\u5024</target>\n      </trans-unit>\n      <trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">\n        <source>See also</source>\n        <target>\u95a2\u9023\u9805\u76ee</target>\n      </trans-unit>\n      <trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">\n        <source>Cluster Status</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u306e\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">\n        <source>Manager Daemons</source>\n        <target>\u30de\u30cd\u30fc\u30b8\u30e3\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">\n        <source>Object Gateways</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">\n        <source>Metadata Servers</source>\n        <target>\u30e1\u30bf\u30c7\u30fc\u30bf\u30b5\u30fc\u30d0</target>\n      </trans-unit>\n      <trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">\n        <source>iSCSI Gateways</source>\n        <target>iSCSI\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4</target>\n      </trans-unit>\n      <trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">\n        <source>Client IOPS</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eIOPS</target>\n      </trans-unit>\n      <trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">\n        <source>Client Throughput</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">\n        <source>Client Read/Write</source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f</target>\n      </trans-unit>\n      <trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">\n        <source>Recovery Throughput</source>\n        <target>\u56de\u5fa9\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">\n        <source>Scrub</source>\n        <target>\u30b9\u30af\u30e9\u30d6</target>\n      </trans-unit>\n      <trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">\n        <source>Performance</source>\n        <target>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">\n        <source>Raw Capacity</source>\n        <target>\u672a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u6642\u306e\u5bb9\u91cf</target>\n      </trans-unit>\n      <trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">\n        <source>Objects</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">\n        <source>PGs per OSD</source>\n        <target>OSD\u3042\u305f\u308a\u306e\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u6570</target>\n      </trans-unit>\n      <trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">\n        <source>PG Status</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u30b9\u30c6\u30fc\u30bf\u30b9</target>\n      </trans-unit>\n      <trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">\n        <source>Capacity</source>\n        <target>\u5bb9\u91cf</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>"/>\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u300c\n          <x id="START_LINK" ctype="x-a" equiv-text="<a>"/>\u30ed\u30b0\n          <x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">\n        <source>Move an image to trash</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u3092\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">\n        <source>To move\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\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>\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\n          <x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/\n          <x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/>\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b\u306b\u306f\u3001\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u30a4\u30e1\u30fc\u30b8\u306e\u79fb\u52d5\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u5e0c\u671b\u306b\u5fdc\u3058\u3066\u3001\u5931\u52b9\u65e5\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">\n        <source>Protection expires at</source>\n        <target>\u4fdd\u8b77\u306e\u5931\u52b9\u65e5</target>\n      </trans-unit>\n      <trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">\n        <source>NOT PROTECTED</source>\n        <target>\u4fdd\u8b77\u3055\u308c\u3066\u3044\u307e\u305b\u3093</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>\u65e5\u4ed8\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u300cYYYY-MM-DD HH:mm:ss\u300d\u3068\u3044\u3046\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002</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>\u4fdd\u8b77\u306f\u3059\u3067\u306b\u5931\u52b9\u3057\u3066\u3044\u307e\u3059\u3002\u5c06\u6765\u306e\u65e5\u4ed8\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u65e5\u4ed8\u3092\u7a7a\u767d\u306e\u307e\u307e\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">\n        <source>Move Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">\n        <source>Overview</source>\n        <target>\u6982\u8981</target>\n      </trans-unit>\n      <trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">\n        <source>Targets</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8</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>\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>"/>\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308bRBD\u30a4\u30e1\u30fc\u30b8\u306e\u307f\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\n        </target>\n      </trans-unit>\n      <trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">\n        <source>Data Pool</source>\n        <target>\u30c7\u30fc\u30bf\u30d7\u30fc\u30eb</target>\n      </trans-unit>\n      <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">\n        <source>Created</source>\n        <target>\u4f5c\u6210\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">\n        <source>Provisioned</source>\n        <target>\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">\n        <source>N/A</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">\n        <source>Total provisioned</source>\n        <target>\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u6e08\u307f\u5408\u8a08</target>\n      </trans-unit>\n      <trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">\n        <source>Striping unit</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0\u5358\u4f4d</target>\n      </trans-unit>\n      <trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">\n        <source>Striping count</source>\n        <target>\u30b9\u30c8\u30e9\u30a4\u30d4\u30f3\u30b0\u6570</target>\n      </trans-unit>\n      <trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">\n        <source>Parent</source>\n        <target>\u89aa</target>\n      </trans-unit>\n      <trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">\n        <source>Block name prefix</source>\n        <target>\u30d6\u30ed\u30c3\u30af\u540d\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9</target>\n      </trans-unit>\n      <trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">\n        <source>Order</source>\n        <target>\u9806\u756a</target>\n      </trans-unit>\n      <trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">\n        <source>Snapshots</source>\n        <target>\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">\n        <source>This setting overrides the global value</source>\n        <target>\u3053\u306e\u8a2d\u5b9a\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5024\u3088\u308a\u3082\u512a\u5148\u3055\u308c\u307e\u3059</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>\u3053\u308c\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u5024\u3067\u3059\u3002\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u3064\u3044\u3066\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5024\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\n        </target>\n      </trans-unit>\n      <trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">\n        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>\n        <target>{VAR_SELECT, select, true {Rename} other {Create} }</target>\n      </trans-unit>\n      <trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">\n        <source>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot\n        </source>\n        <target>\n          <x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/>\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\n        </target>\n      </trans-unit>\n      <trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">\n        <source>PROTECTED</source>\n        <target>\u4fdd\u8b77\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">\n        <source>UNPROTECTED</source>\n        <target>\u672a\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">\n        <source>You are about to rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">\n        <source>Purge Trash</source>\n        <target>\u3054\u307f\u7bb1\u3092\u7a7a\u306b\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">\n        <source>To purge, select one or All images and click</source>\n        <target>\u7a7a\u306b\u3059\u308b\u306b\u306f\u30011\u3064\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u9078\u629e\u3057\u3066\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">\n        <source>Pool:</source>\n        <target>\u30d7\u30fc\u30eb:</target>\n      </trans-unit>\n      <trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">\n        <source>Pool name...</source>\n        <target>\u30d7\u30fc\u30eb\u540d...</target>\n      </trans-unit>\n      <trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">\n        <source>All</source>\n        <target>\u3059\u3079\u3066</target>\n      </trans-unit>\n      <trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">\n        <source>Restore Image</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">\n        <source>To restore</source>\n        <target>\u5fa9\u5143\u3059\u308b\u306b\u306f</target>\n      </trans-unit>\n      <trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">\n        <source>type the image\'s new name and click</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u3057\u3044\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">\n        <source>New Name</source>\n        <target>\u65b0\u3057\u3044\u540d\u524d</target>\n      </trans-unit>\n      <trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">\n        <source>Expired at</source>\n        <target>\u5931\u52b9\u65e5</target>\n      </trans-unit>\n      <trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">\n        <source>Protected until</source>\n        <target>\u4fdd\u8b77\u306e\u7d42\u4e86\u65e5</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>\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\n          <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>\u307e\u3067\u4fdd\u8b77\u3055\u308c\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">\n        <source>iSCSI Topology</source>\n        <target>iSCSI\u30c8\u30dd\u30ed\u30b8</target>\n      </trans-unit>\n      <trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">\n        <source>Issues</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">\n        <source>Syncing</source>\n        <target>\u540c\u671f\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">\n        <source>Ready</source>\n        <target>\u6e96\u5099\u5b8c\u4e86</target>\n      </trans-unit>\n      <trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">\n        <source>Edit pool mirror mode</source>\n        <target>\u30d7\u30fc\u30eb\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">\n        <source>To edit the mirror mode for pool\xa0\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\xa0\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>\u30d7\u30fc\u30eb\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>"/>\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u306b\u306f\u3001\n\u30ea\u30b9\u30c8\u304b\u3089\u65b0\u3057\u3044\u30e2\u30fc\u30c9\u3092\u9078\u629e\u3057\u3066\u3001\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u66f4\u65b0\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\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>\u30df\u30e9\u30fc\u3092\u7121\u52b9\u306b\u3059\u308b\u524d\u306b\u3001\u30d4\u30a2\u30af\u30e9\u30b9\u30bf\u3092\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</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\u30d7\u30fc\u30eb\u306e\u30df\u30e9\u30fc\u30d4\u30a2\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="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" 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 {...}}"/>\u30d7\u30fc\u30eb\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>"/>\n\u306e\u30d7\u30fc\u30eb\u30df\u30e9\u30fc\u30d4\u30a2\u5c5e\u6027\u3001\u304a\u3088\u3073\n          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="<kbd>"/>\uff3b\u9001\u4fe1\uff3d\n          <x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="</kbd>"/>\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">\n        <source>Cluster Name</source>\n        <target>\u30af\u30e9\u30b9\u30bf\u540d</target>\n      </trans-unit>\n      <trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">\n        <source>The cluster name is not valid.</source>\n        <target>\u3053\u306e\u30af\u30e9\u30b9\u30bf\u540d\u306f\u7121\u52b9\u3067\u3059\u3002</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>\u3053\u306eCephX ID\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">\n        <source>Monitor Addresses</source>\n        <target>\u30e2\u30cb\u30bf\u30fc\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">\n        <source>Comma-delimited addresses...</source>\n        <target>\u30ab\u30f3\u30de\u533a\u5207\u308a\u30a2\u30c9\u30ec\u30b9...</target>\n      </trans-unit>\n      <trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">\n        <source>The monitory address is not valid.</source>\n        <target>\u3053\u306e\u8b66\u544a\u30a2\u30c9\u30ec\u30b9\u306f\u7121\u52b9\u3067\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">\n        <source>CephX Key</source>\n        <target>CephX\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">\n        <source>Base64-encoded key...</source>\n        <target>Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30ad\u30fc...</target>\n      </trans-unit>\n      <trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">\n        <source>CephX key must be base64 encoded.</source>\n        <target>CephX\u30ad\u30fc\u306fbase64\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">\n        <source>Cache Tiers Details</source>\n        <target>\u30ad\u30e3\u30c3\u30b7\u30e5\u5c64\u306e\u8a73\u7d30</target>\n      </trans-unit>\n      <trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">\n        <source>Ranks</source>\n        <target>\u30e9\u30f3\u30af</target>\n      </trans-unit>\n      <trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">\n        <source>Clients:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </source>\n        <target>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u6570:\n          <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">\n        <source>Current</source>\n        <target>\u73fe\u5728</target>\n      </trans-unit>\n      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">\n        <source>Updated discovery authentication</source>\n        <target>\u691c\u51fa\u8a8d\u8a3c\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">\n        <source>There are no portals available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30dd\u30fc\u30bf\u30eb\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">\n        <source>There are no images available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30e1\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002</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>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30e1\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</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>\u4f7f\u7528\u53ef\u80fd\u306a\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30a4\u30cb\u30b7\u30a8\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002</target>\n      </trans-unit>\n      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">\n        <source>Target</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">\n        <source>Hostname</source>\n        <target>\u30db\u30b9\u30c8\u540d</target>\n      </trans-unit>\n      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">\n        <source>Read Bytes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">\n        <source>Write Bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">\n        <source>Read Ops</source>\n        <target>\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">\n        <source>Write Ops</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">\n        <source>A/O Since</source>\n        <target>\u6b21\u306e\u65e5\u4ed8\u4ee5\u964d\u306eA/O</target>\n      </trans-unit>\n      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">\n        <source>Instance</source>\n        <target>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">\n        <source>Issue</source>\n        <target>\u554f\u984c</target>\n      </trans-unit>\n      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">\n        <source>State</source>\n        <target>\u72b6\u614b</target>\n      </trans-unit>\n      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">\n        <source>Progress</source>\n        <target>\u9032\u6357</target>\n      </trans-unit>\n      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">\n        <source>Disabled</source>\n        <target>\u7121\u52b9\u5316\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">\n        <source>Edit Mode</source>\n        <target>\u30e2\u30fc\u30c9\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">\n        <source>Add Peer</source>\n        <target>\u30d4\u30a2\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">\n        <source>Edit Peer</source>\n        <target>\u30d4\u30a2\u306e\u7de8\u96c6</target>\n      </trans-unit>\n      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">\n        <source>Delete Peer</source>\n        <target>\u30d4\u30a2\u306e\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">\n        <source>Leader</source>\n        <target>\u30ea\u30fc\u30c0\u30fc</target>\n      </trans-unit>\n      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">\n        <source># Local</source>\n        <target>#\u30ed\u30fc\u30ab\u30eb</target>\n      </trans-unit>\n      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">\n        <source># Remote</source>\n        <target>#\u30ea\u30e2\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">\n        <source>mirror peer</source>\n        <target>\u30df\u30e9\u30fc\u30d4\u30a2</target>\n      </trans-unit>\n      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">\n        <source>Key</source>\n        <target>\u30ad\u30fc</target>\n      </trans-unit>\n      <trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">\n        <source>Value</source>\n        <target>\u5024</target>\n      </trans-unit>\n      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">\n        <source>Deep flatten</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">\n        <source>Layering</source>\n        <target>\u968e\u5c64\u5316</target>\n      </trans-unit>\n      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">\n        <source>Exclusive lock</source>\n        <target>\u6392\u4ed6\u30ed\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">\n        <source>Object map (requires exclusive-lock)</source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30de\u30c3\u30d7(\u6392\u4ed6\u30ed\u30c3\u30af\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">\n        <source>Journaling (requires exclusive-lock)</source>\n        <target>\u30b8\u30e3\u30fc\u30ca\u30ea\u30f3\u30b0(\u6392\u4ed6\u30ed\u30c3\u30af\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="76d0a465d5b470c2ea20e15b23c91086c90e910d" datatype="html">\n        <source>Fast diff (requires object-map)</source>\n        <target>\u9ad8\u901f\u5fae\u5206(\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30de\u30c3\u30d7\u304c\u5fc5\u8981)</target>\n      </trans-unit>\n      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">\n        <source>Copy</source>\n        <target>\u30b3\u30d4\u30fc</target>\n      </trans-unit>\n      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">\n        <source>Flatten</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">\n        <source>Move to Trash</source>\n        <target>\u3054\u307f\u7bb1\u306b\u79fb\u52d5\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">\n        <source>Create</source>\n        <target>\u4f5c\u6210</target>\n      </trans-unit>\n      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">\n        <source>Rename</source>\n        <target>\u540d\u524d\u306e\u5909\u66f4</target>\n      </trans-unit>\n      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">\n        <source>Protect</source>\n        <target>\u4fdd\u8b77</target>\n      </trans-unit>\n      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">\n        <source>Unprotect</source>\n        <target>\u4fdd\u8b77\u89e3\u9664</target>\n      </trans-unit>\n      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">\n        <source>Clone</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">\n        <source>Rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">\n        <source>RBD snapshot rollback</source>\n        <target>RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">\n        <source>RBD snapshot</source>\n        <target>RBD\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">\n        <source>Restore</source>\n        <target>\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">\n        <source>Deleted At</source>\n        <target>\u524a\u9664\u65e5\u6642</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>\u30bf\u30a4\u30d7</target>\n      </trans-unit>\n      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">\n        <source>state</source>\n        <target>\u72b6\u614b</target>\n      </trans-unit>\n      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">\n        <source>version</source>\n        <target>\u30d0\u30fc\u30b8\u30e7\u30f3</target>\n      </trans-unit>\n      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">\n        <source>Host</source>\n        <target>\u30db\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">\n        <source>root</source>\n        <target>\u30eb\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">\n        <source>Rank</source>\n        <target>\u30e9\u30f3\u30af</target>\n      </trans-unit>\n      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">\n        <source>Daemon</source>\n        <target>\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">\n        <source>Activity</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3</target>\n      </trans-unit>\n      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">\n        <source>Dentries</source>\n        <target>d\u30a8\u30f3\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">\n        <source>Inodes</source>\n        <target>i\u30ce\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">\n        <source>Usage</source>\n        <target>\u4f7f\u7528\u91cf</target>\n      </trans-unit>\n      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">\n        <source>Standby daemons</source>\n        <target>\u30b9\u30bf\u30f3\u30d0\u30a4\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">\n        <source>The value can be updated at runtime.</source>\n        <target>\u3053\u306e\u5024\u306f\u5b9f\u884c\u6642\u306b\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002</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>\u30c7\u30fc\u30e2\u30f3/\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3053\u306e\u5024\u3092\u30e2\u30cb\u30bf\u30fc\u8a2d\u5b9a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3057\u307e\u305b\u3093\u3002\n\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u300cceph config set ...\u300d\u3092\u901a\u3058\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306f\u7981\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002\n\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001ceph.conf\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u901a\u3058\u3066\n\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">\n        <source>Option takes effect only during daemon startup.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30c7\u30fc\u30e2\u30f3\u59cb\u52d5\u6642\u306e\u307f\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">\n        <source>Option only affects cluster creation.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30af\u30e9\u30b9\u30bf\u306e\u4f5c\u6210\u306e\u307f\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">\n        <source>Option only affects daemon creation.</source>\n        <target>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30c7\u30fc\u30e2\u30f3\u306e\u4f5c\u6210\u306e\u307f\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002</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>\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">\n        <source>Service</source>\n        <target>\u30b5\u30fc\u30d3\u30b9</target>\n      </trans-unit>\n      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">\n        <source>Current value</source>\n        <target>\u73fe\u884c\u5024</target>\n      </trans-unit>\n      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">\n        <source>Editable</source>\n        <target>\u7de8\u96c6\u53ef\u80fd</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>\u30e2\u30b8\u30e5\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">\n        <source>Enable</source>\n        <target>\u6709\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">\n        <source>Disable</source>\n        <target>\u7121\u52b9\u5316</target>\n      </trans-unit>\n      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">\n        <source>Reconnecting, please wait ...</source>\n        <target>\u518d\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...</target>\n      </trans-unit>\n      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">\n        <source>Public Address</source>\n        <target>\u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30c9\u30ec\u30b9</target>\n      </trans-unit>\n      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">\n        <source>Open Sessions</source>\n        <target>\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u958b\u59cb</target>\n      </trans-unit>\n      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">\n        <source>No In</source>\n        <target>\u30a4\u30f3\u306a\u3057</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>\u4ee5\u524d\u306b\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u305fOSD\u306f\u3001\u305d\u308c\u3089\u306e\u59cb\u52d5\u6642\u306b\u30a4\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">\n        <source>No Out</source>\n        <target>\u30a2\u30a6\u30c8\u306a\u3057</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\u306f\u3001\u8a2d\u5b9a\u6e08\u307f\u306e\u9593\u9694\u304c\u7d4c\u904e\u3057\u305f\u5f8c\u306b\u81ea\u52d5\u7684\u306b\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">\n        <source>No Up</source>\n        <target>\u30a2\u30c3\u30d7\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">\n        <source>OSDs are not allowed to start</source>\n        <target>OSD\u3092\u59cb\u52d5\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">\n        <source>No Down</source>\n        <target>\u30c0\u30a6\u30f3\u306a\u3057</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\u306e\u969c\u5bb3\u30ec\u30dd\u30fc\u30c8\u306f\u7121\u8996\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001OSD\u306f\u30e2\u30cb\u30bf\u30fc\u306b\u3088\u3063\u3066\u30c0\u30a6\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">\n        <source>Pause</source>\n        <target>\u4e00\u6642\u505c\u6b62</target>\n      </trans-unit>\n      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">\n        <source>Pauses reads and writes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u3068\u66f8\u304d\u8fbc\u307f\u3092\u4e00\u6642\u505c\u6b62\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">\n        <source>No Scrub</source>\n        <target>\u30b9\u30af\u30e9\u30d6\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">\n        <source>Scrubbing is disabled</source>\n        <target>\u30b9\u30af\u30e9\u30d6\u51e6\u7406\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">\n        <source>No Deep Scrub</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">\n        <source>Deep Scrubbing is disabled</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6\u51e6\u7406\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">\n        <source>No Backfill</source>\n        <target>\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">\n        <source>Backfilling of PGs is suspended</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">\n        <source>No Recover</source>\n        <target>\u56de\u5fa9\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">\n        <source>Recovery of PGs is suspended</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u306e\u56de\u5fa9\u306f\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">\n        <source>Bitwise Sort</source>\n        <target>\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u30bd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">\n        <source>Use bitwise sort</source>\n        <target>\u30d3\u30c3\u30c8\u5358\u4f4d\u306e\u30bd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b</target>\n      </trans-unit>\n      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">\n        <source>Purged Snapdirs</source>\n        <target>\u6d88\u53bb\u3055\u308c\u305f\u30b9\u30ca\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea</target>\n      </trans-unit>\n      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">\n        <source>OSDs have converted snapsets</source>\n        <target>OSD\u306b\u3088\u3063\u3066\u30b9\u30ca\u30c3\u30d7\u30bb\u30c3\u30c8\u304c\u5909\u63db\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">\n        <source>Recovery Deletes</source>\n        <target>\u56de\u5fa9\u306e\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">\n        <source>Deletes performed during recovery instead of peering</source>\n        <target>\u30d4\u30a2\u30ea\u30f3\u30b0\u306e\u4ee3\u308f\u308a\u306b\u56de\u5fa9\u6642\u306b\u524a\u9664\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">\n        <source>PG Log Hard Limit</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u30ed\u30b0\u306e\u30cf\u30fc\u30c9\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">\n        <source>Puts a hard limit on pg log length</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u30ed\u30b0\u9577\u306e\u30cf\u30fc\u30c9\u5236\u9650\u3092\u9069\u7528\u3057\u307e\u3059</target>\n      </trans-unit>\n      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">\n        <source>Updated OSD Flags</source>\n        <target>OSD\u30d5\u30e9\u30b0\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">\n        <source>Deep Scrub</source>\n        <target>\u30c7\u30a3\u30fc\u30d7\u30b9\u30af\u30e9\u30d6</target>\n      </trans-unit>\n      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">\n        <source>Mark Out</source>\n        <target>\u30a2\u30a6\u30c8\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">\n        <source>out</source>\n        <target>\u30a2\u30a6\u30c8</target>\n      </trans-unit>\n      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">\n        <source>Mark In</source>\n        <target>\u30a4\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">\n        <source>in</source>\n        <target>\u30a4\u30f3</target>\n      </trans-unit>\n      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">\n        <source>Mark Down</source>\n        <target>\u30c0\u30a6\u30f3\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">\n        <source>down</source>\n        <target>\u30c0\u30a6\u30f3</target>\n      </trans-unit>\n      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">\n        <source>Mark Lost</source>\n        <target>\u55aa\u5931\u3068\u3057\u3066\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">\n        <source>Mark</source>\n        <target>\u30de\u30fc\u30af</target>\n      </trans-unit>\n      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">\n        <source>OSD lost</source>\n        <target>\u55aa\u5931\u3057\u305fOSD</target>\n      </trans-unit>\n      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">\n        <source>marked lost</source>\n        <target>\u55aa\u5931\u3068\u3057\u3066\u30de\u30fc\u30af\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">\n        <source>Purge</source>\n        <target>\u6d88\u53bb</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="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">\n        <source>purged</source>\n        <target>\u6d88\u53bb\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">\n        <source>Destroy</source>\n        <target>\u7834\u68c4</target>\n      </trans-unit>\n      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">\n        <source>destroy</source>\n        <target>\u7834\u68c4</target>\n      </trans-unit>\n      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">\n        <source>destroyed</source>\n        <target>\u7834\u68c4\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">\n        <source>PGs</source>\n        <target>\u914d\u7f6e\u30b0\u30eb\u30fc\u30d7\u6570</target>\n      </trans-unit>\n      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">\n        <source>Read bytes</source>\n        <target>\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">\n        <source>Writes bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">\n        <source>Read ops</source>\n        <target>\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570</target>\n      </trans-unit>\n      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">\n        <source>Write ops</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570</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}}"/>\u3092\u30de\u30fc\u30af\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}}"/>\u3092\u30de\u30fc\u30af\n        </target>\n      </trans-unit>\n      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">\n        <source>Max Backfills</source>\n        <target>\u6700\u5927\u30d0\u30c3\u30af\u30d5\u30a3\u30eb\u6570</target>\n      </trans-unit>\n      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">\n        <source>Recovery Max Active</source>\n        <target>\u56de\u5fa9\u6700\u5927\u30a2\u30af\u30c6\u30a3\u30d6</target>\n      </trans-unit>\n      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">\n        <source>Recovery Max Single Start</source>\n        <target>\u56de\u5fa9\u6700\u5927\u5358\u4e00\u59cb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">\n        <source>Recovery Sleep</source>\n        <target>\u56de\u5fa9\u30b9\u30ea\u30fc\u30d7</target>\n      </trans-unit>\n      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">\n        <source>Custom</source>\n        <target>\u30ab\u30b9\u30bf\u30e0</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>OSD\u306e\u56de\u5fa9\u901f\u5ea6\u512a\u5148\u5ea6\u300c\n          <x id="INTERPOLATION" equiv-text="{{value}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">\n        <source>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </source>\n        <target>\n          <x id="INTERPOLATION" equiv-text="{{operation}}"/>\u306f\u6b21\u306eOSD\u3067\u521d\u671f\u5316\u3055\u308c\u307e\u3057\u305f:\n          <x id="INTERPOLATION_1" equiv-text="{{id}}"/>\n        </target>\n      </trans-unit>\n      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">\n        <source>Job</source>\n        <target>\u30b8\u30e7\u30d6</target>\n      </trans-unit>\n      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">\n        <source>Severity</source>\n        <target>\u91cd\u5927\u5ea6</target>\n      </trans-unit>\n      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">\n        <source>Started</source>\n        <target>\u59cb\u52d5\u6e08\u307f</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="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">\n        <source>Used</source>\n        <target>\u4f7f\u7528\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">\n        <source>Avail.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd</target>\n      </trans-unit>\n      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">\n        <source>Clean</source>\n        <target>\u30af\u30ea\u30fc\u30f3</target>\n      </trans-unit>\n      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">\n        <source>Working</source>\n        <target>\u52d5\u4f5c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">\n        <source>Warning</source>\n        <target>\u8b66\u544a</target>\n      </trans-unit>\n      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">\n        <source>Unknown</source>\n        <target>\u4e0d\u660e</target>\n      </trans-unit>\n      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">\n        <source>up</source>\n        <target>\u30a2\u30c3\u30d7</target>\n      </trans-unit>\n      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">\n        <source>no filesystems</source>\n        <target>\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">\n        <source>active</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d6</target>\n      </trans-unit>\n      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">\n        <source>standby</source>\n        <target>\u30b9\u30bf\u30f3\u30d0\u30a4</target>\n      </trans-unit>\n      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">\n        <source>n/a</source>\n        <target>\u306a\u3057</target>\n      </trans-unit>\n      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">\n        <source>active daemon</source>\n        <target>\u30a2\u30af\u30c6\u30a3\u30d6\u30c7\u30fc\u30e2\u30f3</target>\n      </trans-unit>\n      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">\n        <source>quorum</source>\n        <target>\u5b9a\u6570</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\u30b5\u30fc\u30d3\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">\n        <source>Transport</source>\n        <target>\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">\n        <source>CephFS User</source>\n        <target>CephFS\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">\n        <source>CephFS Filesystem</source>\n        <target>CephFS\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0</target>\n      </trans-unit>\n      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">\n        <source>(inherited from global config)</source>\n        <target>(\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u304b\u3089\u7d99\u627f)</target>\n      </trans-unit>\n      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">\n        <source>inherited from global config</source>\n        <target>\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u304b\u3089\u7d99\u627f\u3055\u308c\u307e\u3057\u305f</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>-- \u5b9f\u884c\u3055\u308c\u308b\u30e6\u30fc\u30b6ID\u30b9\u30ab\u30c3\u30b7\u30e5\u64cd\u4f5c\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">\n        <source>There are no daemons available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30c7\u30fc\u30e2\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">\n        <source>Export</source>\n        <target>\u30a8\u30af\u30b9\u30dd\u30fc\u30c8</target>\n      </trans-unit>\n      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">\n        <source>Cache Mode</source>\n        <target>\u30ad\u30e3\u30c3\u30b7\u30e5\u30e2\u30fc\u30c9</target>\n      </trans-unit>\n      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">\n        <source>Min Evict Age</source>\n        <target>\u9000\u53bb\u307e\u3067\u306e\u6700\u5c0f\u7d4c\u904e\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">\n        <source>Min Flush Age</source>\n        <target>\u6d88\u53bb\u307e\u3067\u306e\u6700\u5c0f\u7d4c\u904e\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">\n        <source>Target Max Bytes</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6700\u5927\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">\n        <source>Target Max Objects</source>\n        <target>\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6700\u5927\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">\n        <source>No applications added</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">\n        <source>Applications limit reached</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u6570\u306e\u4e0a\u9650\u306b\u9054\u3057\u307e\u3057\u305f</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\u3064\u306e\u30d7\u30fc\u30eb\u306f\u6700\u5927\u30674\u3064\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5b9a\u7fa9\u3057\u304b\u4fdd\u6709\u3067\u304d\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">\n        <source>Allowed characters \'_a-zA-Z0-9\'</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u6587\u5b57\u300c_a-zA-Z0-9\u300d</target>\n      </trans-unit>\n      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">\n        <source>Maximum length is 128 characters</source>\n        <target>\u6700\u5927\u9577\u306f128\u6587\u5b57\u3067\u3059</target>\n      </trans-unit>\n      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">\n        <source>Filter or add applications</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u307e\u305f\u306f\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">\n        <source>Add application</source>\n        <target>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">\n        <source>erasure code profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">\n        <source>Replica Size</source>\n        <target>\u30ec\u30d7\u30ea\u30ab\u30b5\u30a4\u30ba</target>\n      </trans-unit>\n      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">\n        <source>Last Change</source>\n        <target>\u6700\u5f8c\u306e\u5909\u66f4</target>\n      </trans-unit>\n      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">\n        <source>Erasure Coded Profile</source>\n        <target>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb</target>\n      </trans-unit>\n      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">\n        <source>Crush Ruleset</source>\n        <target>Crush\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">\n        <source>Write bytes</source>\n        <target>\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570</target>\n      </trans-unit>\n      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">\n        <source>Updated Object Gateway bucket "\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>"\n        </source>\n        <target>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30d0\u30b1\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30d0\u30b1\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{bid}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">\n        <source>bucket</source>\n        <target>\u30d0\u30b1\u30c3\u30c8</target>\n      </trans-unit>\n      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">\n        <source>buckets</source>\n        <target>\u30d0\u30b1\u30c3\u30c8\u6570</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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{uid}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">\n        <source>user</source>\n        <target>\u30e6\u30fc\u30b6</target>\n      </trans-unit>\n      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">\n        <source>users</source>\n        <target>\u30e6\u30fc\u30b6\u6570</target>\n      </trans-unit>\n      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">\n        <source>Scope</source>\n        <target>\u7bc4\u56f2</target>\n      </trans-unit>\n      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">\n        <source>Read</source>\n        <target>\u8aad\u307f\u53d6\u308a</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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">\n        <source>System Role</source>\n        <target>\u30b7\u30b9\u30c6\u30e0\u5f79\u5272</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>\u5f79\u5272\u300c\n          <x id="INTERPOLATION" equiv-text="{{role_name}}"/>\u300d\u3092\u524a\u9664\u3057\u307e\u3057\u305f\n        </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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">\n        <source>Update user</source>\n        <target>\u30e6\u30fc\u30b6\u306e\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">\n        <source>Continue</source>\n        <target>\u7d9a\u884c</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>\u3053\u306e\u30e6\u30fc\u30b6\u306e\u5f79\u5272\u304c\u5909\u66f4\u3055\u308c\u305f\u305f\u3081\u3001\u3053\u306e\u30e6\u30fc\u30b6\u306f\u81ea\u52d5\u7684\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u3055\u308c\u307e\u3057\u305f\u3002</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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u524a\u9664\u3057\u307e\u3057\u305f\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>\u30e6\u30fc\u30b6\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\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>\u73fe\u5728\u3053\u306e\u30e6\u30fc\u30b6\u306f\u300c\n          <x id="INTERPOLATION" equiv-text="{{username}}"/>\u300d\u3068\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u307e\u3059\u3002\n        </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>\u5404\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u30d1\u30fc\u30c8\u306b\u5206\u5272\u3055\u308c\u3066\u304a\u308a\u3001\u305d\u308c\u305e\u308c\u306e\u30d1\u30fc\u30c8\u306f\u7570\u306a\u308bOSD\u306b\u4fdd\u7ba1\u3055\u308c\u3066\u3044\u307e\u3059\u3002</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>\u5404\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u3092\u8a08\u7b97\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u30c1\u30e3\u30f3\u30af\u3092\u5225\u3005\u306eOSD\u306b\u4fdd\u7ba1\u3057\u307e\u3059\u3002\n\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u306e\u6570\u306f\u3001\u30c7\u30fc\u30bf\u3092\u5931\u3046\u3053\u3068\u306a\u304f\u30c0\u30a6\u30f3\u72b6\u614b\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u308bOSD\u306e\u6570\u3067\u3082\u3042\u308a\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u6700\u3082\u6c4e\u7528\u7684\u3067\u67d4\u8edf\u6027\u306e\u9ad8\u3044\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u3059\u3002\n\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u3001Ceph\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30d7\u30fc\u30eb\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3082\u3042\u308a\u307e\u3059\u3002</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>\u3055\u3089\u306b\u67d4\u8edf\u6027\u306e\u9ad8\u3044\u6280\u6cd5\u306freed_sol_van\u3067\u3059\u3002k\u3068m\u3092\n\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002\ncauchy_good\u6280\u6cd5\u306f\u3088\u308a\u9ad8\u901f\u3068\u306a\u308a\u5f97\u307e\u3059\u304c\u3001\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u614e\u91cd\u306b\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\nreed_sol_r6_op\u3001liberation\u3001blaum_roth\u3001liber8tion\u306f\u3059\u3079\u3066\u3001\nm=2\u3092\u4f7f\u7528\u3057\u305f\u8a2d\u5b9a\u306e\u307f\u304c\u53ef\u80fd\u3068\u3044\u3046\u610f\u5473\u3067RAID6\u3068\u540c\u7b49\u3067\u3059\u3002</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>\u30a8\u30f3\u30b3\u30fc\u30c9\u306f\u30d0\u30a4\u30c8\u30b5\u30a4\u30ba\u306e\u30d1\u30b1\u30c3\u30c8\u7fa4\u306b\u5bfe\u3057\u3066\u540c\u6642\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\n\u9069\u5207\u306a\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306f\u56f0\u96e3\u3067\u3059\u3002\njerasure\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u306f\u3053\u306e\u30c8\u30d4\u30c3\u30af\u306b\u95a2\u3059\u308b\u8a73\u7d30\u306a\u60c5\u5831\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u5316\u6e08\u307f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306eOSD\u306b\u4fdd\u7ba1\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\n1\u3064\u306eOSD\u306e\u55aa\u5931\u304b\u3089\u56de\u5fa9\u3059\u308b\u306b\u306f\u3001\u4ed6\u306e\u3059\u3079\u3066\u306eOSD\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001k=8\u304a\u3088\u3073m=4\u3092\u4f7f\u7528\u3057\u3066jerasure\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30011\u3064\u306eOSD\u304c\u5931\u308f\u308c\u305f\u5834\u5408\u3001\n\u4fee\u5fa9\u306e\u305f\u3081\u306b\u306f\u4ed6\u306e11\u500b\u306eOSD\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\n\nlrc\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u3001\u3053\u308c\u3088\u308a\u5c11\u306a\u3044OSD\u3092\u4f7f\u7528\u3057\u305f\u56de\u5fa9\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306b\u3001\n\u30ed\u30fc\u30ab\u30eb\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001lrc\u304ck=8\u3001m=4\u3001\u304a\u3088\u3073l=4\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\nlrc\u306f\u30014\u3064\u306eOSD\u3054\u3068\u306b1\u3064\u306e\u8ffd\u52a0\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u30021\u3064\u306eOSD\u304c\u5931\u308f\u308c\u305f\u5834\u5408\u306f\u3001\n11\u500b\u306e\u4ee3\u308f\u308a\u306b4\u3064\u306eOSD\u306e\u307f\u3092\u4f7f\u7528\u3057\u3066\u305d\u306eOSD\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30c1\u30e3\u30f3\u30af\u3068\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u3092\u30b5\u30a4\u30ba\u5730\u57df\u306e\u8907\u6570\u30bb\u30c3\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u5206\u3051\u3057\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001k=4\u304a\u3088\u3073m=2\u306e\u5834\u5408\u306b\u3001\uff3b\u5730\u57df\uff3d=3\u306e\u5834\u5408\u306f\u30013\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304b\u3089\u306a\u308b\u30b0\u30eb\u30fc\u30d7\u304c2\u3064\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\n\u5404\u30bb\u30c3\u30c8\u306f\u3001\u5225\u306e\u30bb\u30c3\u30c8\u304b\u3089\u30c1\u30e3\u30f3\u30af\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u306a\u304f\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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\u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u306e\u5404\u30bb\u30c3\u30c8\u304c\u4fdd\u7ba1\u3055\u308c\u308bCrush\u30d0\u30b1\u30c3\u30c8\u306e\u30bf\u30a4\u30d7\u3002\n\u305f\u3068\u3048\u3070\u3001\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u304c\u30e9\u30c3\u30af\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30011\u306e\u30c1\u30e3\u30f3\u30af\u306e\u5404\u30b0\u30eb\u30fc\u30d7\u306f\u7570\u306a\u308b\u30e9\u30c3\u30af\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002\n\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u3092\u4f7f\u7528\u3057\u3066\u3001\u300c\u30e9\u30c3\u30af\u306e\u9078\u629e\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069\u306eCRUSH\u30eb\u30fc\u30eb\u30b9\u30c6\u30c3\u30d7\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\n\u3053\u306e\u30d0\u30b1\u30c3\u30c8\u30bf\u30a4\u30d7\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u30b0\u30eb\u30fc\u30d7\u5206\u3051\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306fISA\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u306fIntel\u30d7\u30ed\u30bb\u30c3\u30b5\u4e0a\u306e\u307f\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f2\u3064\u306e\u30ea\u30fc\u30c9\u30bd\u30ed\u30e2\u30f3\u5f62\u5f0f\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002reed_sol_van\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001Vandermonde\u3067\u3042\u308a\u3001cauchy\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001Cauchy\u3067\u3059\u3002</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\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u8907\u6570\u306eSHEC\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\n\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001ceph\u306f\u30ea\u30fc\u30c9\u30bd\u30ed\u30e2\u30f3\u30b3\u30fc\u30c9\u3088\u308a\u52b9\u7387\u7684\u306b\u30c7\u30fc\u30bf\u3092\u56de\u5fa9\u3067\u304d\u307e\u3059\u3002</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>\u305d\u308c\u305e\u308c\u304c\u5404\u30c7\u30fc\u30bf\u30c1\u30e3\u30f3\u30af\u3092\u5404\u81ea\u306e\u8a08\u7b97\u7bc4\u56f2\u5185\u306b\u542b\u3093\u3067\u3044\u308b\u30d1\u30ea\u30c6\u30a3\u30c1\u30e3\u30f3\u30af\u306e\u6570\u3002\n\u3053\u306e\u6570\u306f\u3001\u8010\u4e45\u6027\u63a8\u5b9a\u5b50\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001c=2\u306e\u5834\u5408\u306f\u3001\u30c7\u30fc\u30bf\u3092\u5931\u3046\u3053\u3068\u306a\u304f2\u3064\u306eOSD\u304c\u30c0\u30a6\u30f3\u72b6\u614b\u306b\u306a\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002</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\u30eb\u30fc\u30eb\u306e\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7(\u300c\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u4f7f\u7528\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069)\u7528\u306b\n\u4f7f\u7528\u3055\u308c\u308bCrush\u30d0\u30b1\u30c3\u30c8\u306e\u540d\u524d\u3002</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>\u540c\u3058\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3\u306e\u5358\u4e00\u30d0\u30b1\u30c3\u30c8\u5185\u306b2\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304c\u914d\u7f6e\u3055\u308c\u308b\u3053\u3068\u3092\u9632\u6b62\u3057\u307e\u3059\u3002\n\u305f\u3068\u3048\u3070\u3001\u969c\u5bb3\u30c9\u30e1\u30a4\u30f3\u304c\u30db\u30b9\u30c8\u3067\u3042\u308b\u5834\u5408\u306f\u30012\u3064\u306e\u30c1\u30e3\u30f3\u30af\u304c\u540c\u3058\u30db\u30b9\u30c8\u306b\u4fdd\u7ba1\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u300c\u30ea\u30fc\u30d5\u30db\u30b9\u30c8\u306e\u9078\u629e\u300d\u30b9\u30c6\u30c3\u30d7\u306a\u3069\u306eCRUSH\u30eb\u30fc\u30eb\u30b9\u30c6\u30c3\u30d7\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002</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\u30de\u30c3\u30d7\u5185\u3067Crush\u30c7\u30d0\u30a4\u30b9\u30af\u30e9\u30b9\u540d\u3092\u4f7f\u7528\u3057\u3066\u3001\u914d\u7f6e\u5148\u3092\u7279\u5b9a\u30af\u30e9\u30b9(ssd\u3084hdd\u306a\u3069)\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u307f\u306b\u5236\u9650\u3057\u307e\u3059\u3002</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>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u8aad\u307f\u8fbc\u307f\u5143\u3068\u306a\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002</target>\n      </trans-unit>\n      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">\n        <source>Allows all operations</source>\n        <target>\u3059\u3079\u3066\u306e\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u30b5\u30fc\u30d0\u306b\u5909\u66f4\u3092\u52a0\u3048\u306a\u3044\u64cd\u4f5c\u306e\u307f\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u305b\u3093\u304c\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u64cd\u4f5c\u3092\u8a31\u53ef\u3057\u307e\u3059</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>\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u3001\u304a\u3088\u3073\u30d5\u30a1\u30a4\u30eb\u5c5e\u6027\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u5bb9\u3092\u5909\u66f4\u3059\u308b\u3069\u306e\u64cd\u4f5c\u3082\u8a31\u53ef\u3057\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">\n        <source>Allows no access at all</source>\n        <target>\u30a2\u30af\u30bb\u30b9\u3092\u4e00\u5207\u8a31\u53ef\u3057\u307e\u305b\u3093</target>\n      </trans-unit>\n      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">\n        <source>-- Select the priority --</source>\n        <target>-- \u512a\u5148\u5ea6\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 --</target>\n      </trans-unit>\n      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">\n        <source>Low</source>\n        <target>\u4f4e</target>\n      </trans-unit>\n      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">\n        <source>High</source>\n        <target>\u9ad8</target>\n      </trans-unit>\n      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">\n        <source>Last 5 minutes</source>\n        <target>\u76f4\u524d\u306e5\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">\n        <source>Last 15 minutes</source>\n        <target>\u76f4\u524d\u306e15\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">\n        <source>Last 30 minutes</source>\n        <target>\u76f4\u524d\u306e30\u5206\u9593</target>\n      </trans-unit>\n      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">\n        <source>Last 1 hour (Default)</source>\n        <target>\u76f4\u524d\u306e1\u6642\u9593(\u30c7\u30d5\u30a9\u30eb\u30c8)</target>\n      </trans-unit>\n      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">\n        <source>Last 3 hours</source>\n        <target>\u76f4\u524d\u306e3\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">\n        <source>Last 6 hours</source>\n        <target>\u76f4\u524d\u306e6\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">\n        <source>Last 12 hours</source>\n        <target>\u76f4\u524d\u306e12\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">\n        <source>Last 24 hours</source>\n        <target>\u76f4\u524d\u306e24\u6642\u9593</target>\n      </trans-unit>\n      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">\n        <source>Yesterday</source>\n        <target>\u6628\u65e5</target>\n      </trans-unit>\n      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">\n        <source>Today</source>\n        <target>\u672c\u65e5</target>\n      </trans-unit>\n      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">\n        <source>Today so far</source>\n        <target>\u672c\u65e5\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">\n        <source>Day before yesterday</source>\n        <target>\u4e00\u6628\u65e5</target>\n      </trans-unit>\n      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">\n        <source>Last 2 days</source>\n        <target>\u904e\u53bb2\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">\n        <source>This day last week</source>\n        <target>\u5148\u9031\u306e\u540c\u3058\u66dc\u65e5</target>\n      </trans-unit>\n      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">\n        <source>Previous week</source>\n        <target>\u524d\u9031</target>\n      </trans-unit>\n      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">\n        <source>This week</source>\n        <target>\u4eca\u9031</target>\n      </trans-unit>\n      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">\n        <source>This week so far</source>\n        <target>\u4eca\u9031\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">\n        <source>Last 7 days</source>\n        <target>\u904e\u53bb7\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">\n        <source>Previous month</source>\n        <target>\u524d\u6708</target>\n      </trans-unit>\n      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">\n        <source>This month</source>\n        <target>\u4eca\u6708</target>\n      </trans-unit>\n      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">\n        <source>This month so far</source>\n        <target>\u4eca\u6708\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">\n        <source>Last 30 days</source>\n        <target>\u904e\u53bb30\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">\n        <source>Last 90 days</source>\n        <target>\u904e\u53bb90\u65e5\u9593</target>\n      </trans-unit>\n      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">\n        <source>Last 6 months</source>\n        <target>\u904e\u53bb6\u30ab\u6708</target>\n      </trans-unit>\n      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">\n        <source>Last 1 year</source>\n        <target>\u904e\u53bb1\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">\n        <source>Previous year</source>\n        <target>\u524d\u5e74</target>\n      </trans-unit>\n      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">\n        <source>This year</source>\n        <target>\u4eca\u5e74</target>\n      </trans-unit>\n      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">\n        <source>This year so far</source>\n        <target>\u4eca\u5e74\u306e\u73fe\u6642\u70b9\u307e\u3067</target>\n      </trans-unit>\n      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">\n        <source>Last 2 years</source>\n        <target>\u904e\u53bb2\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">\n        <source>Last 5 years</source>\n        <target>\u904e\u53bb5\u5e74\u9593</target>\n      </trans-unit>\n      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">\n        <source>Information</source>\n        <target>\u60c5\u5831</target>\n      </trans-unit>\n      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">\n        <source>No items selected.</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">\n        <source>Deselect item to select again</source>\n        <target>\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u89e3\u9664\u3057\u3066\u518d\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044</target>\n      </trans-unit>\n      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">\n        <source>Selection limit reached</source>\n        <target>\u9078\u629e\u306e\u4e0a\u9650\u306b\u9054\u3057\u307e\u3057\u305f</target>\n      </trans-unit>\n      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">\n        <source>Filter tags</source>\n        <target>\u30bf\u30b0\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0</target>\n      </trans-unit>\n      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">\n        <source>Add badge</source>\n        <target>\u30d0\u30c3\u30b8\u306e\u8ffd\u52a0</target>\n      </trans-unit>\n      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">\n        <source>There are no items available.</source>\n        <target>\u4f7f\u7528\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0\u306f\u3042\u308a\u307e\u305b\u3093\u3002</target>\n      </trans-unit>\n      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">\n        <source>Yes</source>\n        <target>\u306f\u3044</target>\n      </trans-unit>\n      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">\n        <source>No</source>\n        <target>\u3044\u3044\u3048</target>\n      </trans-unit>\n      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">\n        <source>Quality of Service</source>\n        <target>\u30b5\u30fc\u30d3\u30b9\u54c1\u8cea</target>\n      </trans-unit>\n      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">\n        <source>BPS Limit</source>\n        <target>BPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">\n        <source>The desired limit of IO bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u5165\u51fa\u529b\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">\n        <source>IOPS Limit</source>\n        <target>IOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">\n        <source>The desired limit of IO operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u5165\u51fa\u529b\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">\n        <source>Read BPS Limit</source>\n        <target>\u8aad\u307f\u53d6\u308aBPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">\n        <source>The desired limit of read bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">\n        <source>Read IOPS Limit</source>\n        <target>\u8aad\u307f\u53d6\u308aIOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">\n        <source>The desired limit of read operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">\n        <source>Write BPS Limit</source>\n        <target>\u66f8\u304d\u8fbc\u307fBPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">\n        <source>The desired limit of write bytes per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">\n        <source>Write IOPS Limit</source>\n        <target>\u66f8\u304d\u8fbc\u307fIOPS\u5236\u9650</target>\n      </trans-unit>\n      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">\n        <source>The desired limit of write operations per second.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u79d2\u3042\u305f\u308a\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570\u306e\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">\n        <source>BPS Burst</source>\n        <target>BPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">\n        <source>The desired burst limit of IO bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u5165\u51fa\u529b\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">\n        <source>IOPS Burst</source>\n        <target>IOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">\n        <source>The desired burst limit of IO operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u5165\u51fa\u529b\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">\n        <source>Read BPS Burst</source>\n        <target>\u8aad\u307f\u53d6\u308aBPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">\n        <source>The desired burst limit of read bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u8aad\u307f\u53d6\u308a\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">\n        <source>Read IOPS Burst</source>\n        <target>\u8aad\u307f\u53d6\u308aIOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">\n        <source>The desired burst limit of read operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u8aad\u307f\u53d6\u308a\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">\n        <source>Write BPS Burst</source>\n        <target>\u66f8\u304d\u8fbc\u307fBPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">\n        <source>The desired burst limit of write bytes.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u66f8\u304d\u8fbc\u307f\u30d0\u30a4\u30c8\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</target>\n      </trans-unit>\n      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">\n        <source>Write IOPS Burst</source>\n        <target>\u66f8\u304d\u8fbc\u307fIOPS\u30d0\u30fc\u30b9\u30c8</target>\n      </trans-unit>\n      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">\n        <source>The desired burst limit of write operations.</source>\n        <target>\u5e0c\u671b\u3059\u308b\u66f8\u304d\u8fbc\u307f\u64cd\u4f5c\u6570\u306e\u30d0\u30fc\u30b9\u30c8\u4e0a\u9650\u3002</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>\n          <x id="INTERPOLATION" equiv-text="{{failure}}"/>\n          <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/>\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n        </target>\n      </trans-unit>\n      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">\n        <source>Executing</source>\n        <target>\u5b9f\u884c\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">\n        <source>execute</source>\n        <target>\u5b9f\u884c</target>\n      </trans-unit>\n      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">\n        <source>Executed</source>\n        <target>\u5b9f\u884c\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">\n        <source>unknown task</source>\n        <target>\u4e0d\u660e\u306a\u30bf\u30b9\u30af</target>\n      </trans-unit>\n      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">\n        <source>Creating</source>\n        <target>\u4f5c\u6210\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">\n        <source>create</source>\n        <target>\u4f5c\u6210</target>\n      </trans-unit>\n      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">\n        <source>Updating</source>\n        <target>\u66f4\u65b0\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">\n        <source>update</source>\n        <target>\u66f4\u65b0</target>\n      </trans-unit>\n      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">\n        <source>Updated</source>\n        <target>\u66f4\u65b0\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">\n        <source>Deleting</source>\n        <target>\u524a\u9664\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">\n        <source>delete</source>\n        <target>\u524a\u9664</target>\n      </trans-unit>\n      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">\n        <source>Deleted</source>\n        <target>\u524a\u9664\u6e08\u307f</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\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\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\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306e\u30df\u30e9\u30fc\u30e2\u30fc\u30c9\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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306e\u30df\u30e9\u30fc\u30d4\u30a2\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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}}"/>\u306b\u306f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">\n        <source>Cloning</source>\n        <target>\u8907\u88fd\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">\n        <source>clone</source>\n        <target>\u8907\u88fd</target>\n      </trans-unit>\n      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">\n        <source>Cloned</source>\n        <target>\u8907\u88fd\u6e08\u307f</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>\n          <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306f\u4fdd\u8b77\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">\n        <source>Copying</source>\n        <target>\u30b3\u30d4\u30fc\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">\n        <source>copy</source>\n        <target>\u30b3\u30d4\u30fc</target>\n      </trans-unit>\n      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">\n        <source>Copied</source>\n        <target>\u30b3\u30d4\u30fc\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">\n        <source>Flattening</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">\n        <source>flatten</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316</target>\n      </trans-unit>\n      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">\n        <source>Flattened</source>\n        <target>\u30d5\u30e9\u30c3\u30c8\u5316\u6e08\u307f</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>\u3053\u306e\u540d\u524d\u306f\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u306b\u3088\u3063\u3066\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\n          <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>\u306f\u5b50\u30a4\u30e1\u30fc\u30b8\u3092\u542b\u3093\u3067\u3044\u308b\u305f\u3081\u4fdd\u8b77\u89e3\u9664\u3067\u304d\u307e\u305b\u3093\u3002\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}}"/>\u306f\u4fdd\u8b77\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\n        </target>\n      </trans-unit>\n      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">\n        <source>Rolling back</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">\n        <source>rollback</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af</target>\n      </trans-unit>\n      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">\n        <source>Rolled back</source>\n        <target>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">\n        <source>Moving</source>\n        <target>\u79fb\u52d5\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">\n        <source>move</source>\n        <target>\u79fb\u52d5</target>\n      </trans-unit>\n      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">\n        <source>Moved</source>\n        <target>\u79fb\u52d5\u6e08\u307f</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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u3092\u3054\u307f\u7bb1\u306b\n        </target>\n      </trans-unit>\n      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">\n        <source>Could not find image.</source>\n        <target>\u30a4\u30e1\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002</target>\n      </trans-unit>\n      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">\n        <source>Restoring</source>\n        <target>\u5fa9\u5143\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">\n        <source>restore</source>\n        <target>\u5fa9\u5143</target>\n      </trans-unit>\n      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">\n        <source>Restored</source>\n        <target>\u5fa9\u5143\u6e08\u307f</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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u3092\u300c\n          <x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>\u300d\u306b\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>\u30a4\u30e1\u30fc\u30b8\u540d\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\u306f\u3059\u3067\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\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>\u30a4\u30e1\u30fc\u30b8\u300c\n          <x id="INTERPOLATION" equiv-text="{{id}}"/>\u300d\n        </target>\n      </trans-unit>\n      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">\n        <source>Purging</source>\n        <target>\u6d88\u53bb\u4e2d</target>\n      </trans-unit>\n      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">\n        <source>purge</source>\n        <target>\u6d88\u53bb</target>\n      </trans-unit>\n      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">\n        <source>Purged</source>\n        <target>\u6d88\u53bb\u6e08\u307f</target>\n      </trans-unit>\n      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">\n        <source>all pools</source>\n        <target>\u3059\u3079\u3066\u306e\u30d7\u30fc\u30eb</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>\n          <x id="INTERPOLATION" equiv-text="{{message}}"/>\u304b\u3089\u306e\u30a4\u30e1\u30fc\u30b8\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>\u30d4\u30a2\u3092\u542b\u3093\u3067\u3044\u308b\u305f\u3081\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002</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>\u30d7\u30fc\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>\u300d\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>\u30a4\u30ec\u30a4\u30b8\u30e3\u30b3\u30fc\u30c9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u300c\n          <x id="INTERPOLATION" equiv-text="{{name}}"/>\u300d\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>\u30bf\u30fc\u30b2\u30c3\u30c8\u300c\n          <x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>\u300d\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>\n'},wbK0:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("dEwP");function r(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(e){return e.lift.call(a.a.apply(void 0,[e].concat(t)))}}},"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 o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function u(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 c(t,e){var n,a=[];for(n=0;n<t.length;++n)a.push(e(t[n],n));return a}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)d(e,n)&&(t[n]=e[n]);return d(e,"toString")&&(t.toString=e.toString),d(e,"valueOf")&&(t.valueOf=e.valueOf),t}function p(t,e,n,a){return Re(t,e,n,a,!0).utc()}function h(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 g(t){if(null==t._isValid){var e=h(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 m(t){var e=p(NaN);return null!=t?f(h(e),t):h(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 b=r.momentProperties=[];function y(t,e){var n,a,r;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=h(e)),s(e._locale)||(t._locale=e._locale),b.length>0)for(n=0;n<b.length;n++)s(r=e[a=b[n]])||(t[a]=r);return t}var v=!1;function _(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 x(t){return t instanceof _||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 S(t,e,n){var a,r=Math.min(t.length,e.length),i=Math.abs(t.length-e.length),o=0;for(a=0;a<r;a++)(n&&t[a]!==e[a]||!n&&w(t[a])!==w(e[a]))&&o++;return o+i}function O(t){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function C(t,e){var n=!0;return f(function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,t),n){for(var a,i=[],o=0;o<arguments.length;o++){if(a="","object"==typeof arguments[o]){for(var s in a+="\n["+o+"] ",arguments[0])a+=s+": "+arguments[0][s]+", ";a=a.slice(0,-2)}else a=arguments[o];i.push(a)}O(t+"\nArguments: "+Array.prototype.slice.call(i).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)},e)}var k,I={};function D(t,e){null!=r.deprecationHandler&&r.deprecationHandler(t,e),I[t]||(O(e),I[t]=!0)}function R(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function N(t,e){var n,a=f({},t);for(n in e)d(e,n)&&(o(t[n])&&o(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)d(t,n)&&!d(e,n)&&o(t[n])&&(a[n]=f({},a[n]));return a}function A(t){null!=t&&this.set(t)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,k=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)d(t,e)&&n.push(e);return n};var E={};function L(t,e){var n=t.toLowerCase();E[n]=E[n+"s"]=E[e]=t}function P(t){return"string"==typeof t?E[t]||E[t.toLowerCase()]:void 0}function M(t){var e,n,a={};for(n in t)d(t,n)&&(e=P(n))&&(a[e]=t[n]);return a}var j={};function q(t,e){j[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 z=/(\[[^\[]*\])|(\\)?([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,Y=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,H={},G={};function V(t,e,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),t&&(G[t]=r),e&&(G[e[0]]=function(){return F(r.apply(this,arguments),e[1],e[2])}),n&&(G[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function B(t,e){return t.isValid()?(e=U(e,t.localeData()),H[e]=H[e]||function(t){var e,n,a,r=t.match(z);for(e=0,n=r.length;e<n;e++)r[e]=G[r[e]]?G[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+=R(r[a])?r[a].call(e,t):r[a];return i}}(e),H[e](t)):t.localeData().invalidDate()}function U(t,e){var n=5;function a(t){return e.longDateFormat(t)||t}for(Y.lastIndex=0;n>=0&&Y.test(t);)t=t.replace(Y,a),Y.lastIndex=0,n-=1;return t}var W=/\d/,K=/\d\d/,$=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,Q=/\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+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[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 ct(t,e,n){lt[t]=R(e)?e:function(t,a){return t&&n?n:e}}function dt(t,e){return d(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 pt={};function ht(t,e){var n,a=e;for("string"==typeof t&&(t=[t]),u(e)&&(a=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)pt[t[n]]=a}function gt(t,e){ht(t,function(t,n,a,r){a._w=a._w||{},e(t,a._w,a,r)})}function mt(t,e,n){null!=e&&d(pt,t)&&pt[t](e,n._a,n,t)}var bt=0,yt=1,vt=2,_t=3,xt=4,Tt=5,wt=6,St=7,Ot=8;function Ct(t){return kt(t)?366:365}function kt(t){return t%4==0&&t%100!=0||t%400==0}V("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),V(0,["YY",2],0,function(){return this.year()%100}),V(0,["YYYY",4],0,"year"),V(0,["YYYYY",5],0,"year"),V(0,["YYYYYY",6,!0],0,"year"),L("year","y"),q("year",1),ct("Y",it),ct("YY",J,K),ct("YYYY",nt,Z),ct("YYYYY",at,X),ct("YYYYYY",at,X),ht(["YYYYY","YYYYYY"],bt),ht("YYYY",function(t,e){e[bt]=2===t.length?r.parseTwoDigitYear(t):w(t)}),ht("YY",function(t,e){e[bt]=r.parseTwoDigitYear(t)}),ht("Y",function(t,e){e[bt]=parseInt(t,10)}),r.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var It,Dt=Rt("FullYear",!0);function Rt(t,e){return function(n){return null!=n?(At(this,t,n),r.updateOffset(this,e),this):Nt(this,t)}}function Nt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function At(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&kt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Et(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Et(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?kt(t)?29:28:31-n%7%2}It=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},V("M",["MM",2],"Mo",function(){return this.month()+1}),V("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),V("MMMM",0,0,function(t){return this.localeData().months(this,t)}),L("month","M"),q("month",8),ct("M",J),ct("MM",J,K),ct("MMM",function(t,e){return e.monthsShortRegex(t)}),ct("MMMM",function(t,e){return e.monthsRegex(t)}),ht(["M","MM"],function(t,e){e[yt]=w(t)-1}),ht(["MMM","MMMM"],function(t,e,n,a){var r=n._locale.monthsParse(t,a,n._strict);null!=r?e[yt]=r:h(n).invalidMonth=t});var Lt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Mt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function jt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Et(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function qt(t){return null!=t?(jt(this,t),r.updateOffset(this,!0),this):Nt(this,"Month")}var Ft=ut,zt=ut;function Yt(){function t(t,e){return e.length-t.length}var e,n,a=[],r=[],i=[];for(e=0;e<12;e++)n=p([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 Ht(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 Gt(t,e,n){var a=7+e-n;return-(7+Ht(t,0,a).getUTCDay()-e)%7+a-1}function Vt(t,e,n,a,r){var i,o,s=1+7*(e-1)+(7+n-a)%7+Gt(t,a,r);return s<=0?o=Ct(i=t-1)+s:s>Ct(t)?(i=t+1,o=s-Ct(t)):(i=t,o=s),{year:i,dayOfYear:o}}function Bt(t,e,n){var a,r,i=Gt(t.year(),e,n),o=Math.floor((t.dayOfYear()-i-1)/7)+1;return o<1?a=o+Ut(r=t.year()-1,e,n):o>Ut(t.year(),e,n)?(a=o-Ut(t.year(),e,n),r=t.year()+1):(r=t.year(),a=o),{week:a,year:r}}function Ut(t,e,n){var a=Gt(t,e,n),r=Gt(t+1,e,n);return(Ct(t)-a+r)/7}function Wt(t,e){return t.slice(e,7).concat(t.slice(0,e))}V("w",["ww",2],"wo","week"),V("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),q("week",5),q("isoWeek",5),ct("w",J),ct("ww",J,K),ct("W",J),ct("WW",J,K),gt(["w","ww","W","WW"],function(t,e,n,a){e[a.substr(0,1)]=w(t)}),V("d",0,"do","day"),V("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),V("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),V("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),V("e",0,0,"weekday"),V("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),q("day",11),q("weekday",11),q("isoWeekday",11),ct("d",J),ct("e",J),ct("E",J),ct("dd",function(t,e){return e.weekdaysMinRegex(t)}),ct("ddd",function(t,e){return e.weekdaysShortRegex(t)}),ct("dddd",function(t,e){return e.weekdaysRegex(t)}),gt(["dd","ddd","dddd"],function(t,e,n,a){var r=n._locale.weekdaysParse(t,a,n._strict);null!=r?e.d=r:h(n).invalidWeekday=t}),gt(["d","e","E"],function(t,e,n,a){e[a]=w(t)});var Kt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$t="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Zt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=ut,Jt=ut,Qt=ut;function te(){function t(t,e){return e.length-t.length}var e,n,a,r,i,o=[],s=[],u=[],l=[];for(e=0;e<7;e++)n=p([2e3,1]).day(e),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),i=this.weekdays(n,""),o.push(a),s.push(r),u.push(i),l.push(a),l.push(r),l.push(i);for(o.sort(t),s.sort(t),u.sort(t),l.sort(t),e=0;e<7;e++)s[e]=ft(s[e]),u[e]=ft(u[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("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function ee(){return this.hours()%12||12}function ne(t,e){V(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ae(t,e){return e._meridiemParse}V("H",["HH",2],0,"hour"),V("h",["hh",2],0,ee),V("k",["kk",2],0,function(){return this.hours()||24}),V("hmm",0,0,function(){return""+ee.apply(this)+F(this.minutes(),2)}),V("hmmss",0,0,function(){return""+ee.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),V("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),V("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),ne("a",!0),ne("A",!1),L("hour","h"),q("hour",13),ct("a",ae),ct("A",ae),ct("H",J),ct("h",J),ct("k",J),ct("HH",J,K),ct("hh",J,K),ct("kk",J,K),ct("hmm",Q),ct("hmmss",tt),ct("Hmm",Q),ct("Hmmss",tt),ht(["H","HH"],_t),ht(["k","kk"],function(t,e,n){var a=w(t);e[_t]=24===a?0:a}),ht(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),ht(["h","hh"],function(t,e,n){e[_t]=w(t),h(n).bigHour=!0}),ht("hmm",function(t,e,n){var a=t.length-2;e[_t]=w(t.substr(0,a)),e[xt]=w(t.substr(a)),h(n).bigHour=!0}),ht("hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;e[_t]=w(t.substr(0,a)),e[xt]=w(t.substr(a,2)),e[Tt]=w(t.substr(r)),h(n).bigHour=!0}),ht("Hmm",function(t,e,n){var a=t.length-2;e[_t]=w(t.substr(0,a)),e[xt]=w(t.substr(a))}),ht("Hmmss",function(t,e,n){var a=t.length-4,r=t.length-2;e[_t]=w(t.substr(0,a)),e[xt]=w(t.substr(a,2)),e[Tt]=w(t.substr(r))});var re,ie=Rt("Hours",!0),oe={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:Pt,monthsShort:Mt,week:{dow:0,doy:6},weekdays:Kt,weekdaysMin:Zt,weekdaysShort:$t,meridiemParse:/[ap]\.?m?\.?/i},se={},ue={};function le(t){return t?t.toLowerCase().replace("_","-"):t}function ce(e){var a=null;if(!se[e]&&void 0!==t&&t&&t.exports)try{a=re._abbr,n("RnhZ")("./"+e),de(a)}catch(r){}return se[e]}function de(t,e){var n;return t&&((n=s(e)?pe(t):fe(t,e))?re=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),re._abbr}function fe(t,e){if(null!==e){var n,a=oe;if(e.abbr=t,null!=se[t])D("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=se[t]._config;else if(null!=e.parentLocale)if(null!=se[e.parentLocale])a=se[e.parentLocale]._config;else{if(null==(n=ce(e.parentLocale)))return ue[e.parentLocale]||(ue[e.parentLocale]=[]),ue[e.parentLocale].push({name:t,config:e}),null;a=n._config}return se[t]=new A(N(a,e)),ue[t]&&ue[t].forEach(function(t){fe(t.name,t.config)}),de(t),se[t]}return delete se[t],null}function pe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return re;if(!i(t)){if(e=ce(t))return e;t=[t]}return function(t){for(var e,n,a,r,i=0;i<t.length;){for(e=(r=le(t[i]).split("-")).length,n=(n=le(t[i+1]))?n.split("-"):null;e>0;){if(a=ce(r.slice(0,e).join("-")))return a;if(n&&n.length>=e&&S(r,n,!0)>=e-1)break;e--}i++}return re}(t)}function he(t){var e,n=t._a;return n&&-2===h(t).overflow&&(e=n[yt]<0||n[yt]>11?yt:n[vt]<1||n[vt]>Et(n[bt],n[yt])?vt:n[_t]<0||n[_t]>24||24===n[_t]&&(0!==n[xt]||0!==n[Tt]||0!==n[wt])?_t:n[xt]<0||n[xt]>59?xt:n[Tt]<0||n[Tt]>59?Tt:n[wt]<0||n[wt]>999?wt:-1,h(t)._overflowDayOfYear&&(e<bt||e>vt)&&(e=vt),h(t)._overflowWeeks&&-1===e&&(e=St),h(t)._overflowWeekday&&-1===e&&(e=Ot),h(t).overflow=e),t}function ge(t,e,n){return null!=t?t:null!=e?e:n}function me(t){var e,n,a,i,o,s=[];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[vt]&&null==t._a[yt]&&function(t){var e,n,a,r,i,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)i=1,o=4,n=ge(e.GG,t._a[bt],Bt(Ne(),1,4).year),a=ge(e.W,1),((r=ge(e.E,1))<1||r>7)&&(u=!0);else{i=t._locale._week.dow,o=t._locale._week.doy;var l=Bt(Ne(),i,o);n=ge(e.gg,t._a[bt],l.year),a=ge(e.w,l.week),null!=e.d?((r=e.d)<0||r>6)&&(u=!0):null!=e.e?(r=e.e+i,(e.e<0||e.e>6)&&(u=!0)):r=i}a<1||a>Ut(n,i,o)?h(t)._overflowWeeks=!0:null!=u?h(t)._overflowWeekday=!0:(s=Vt(n,a,r,i,o),t._a[bt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ge(t._a[bt],a[bt]),(t._dayOfYear>Ct(o)||0===t._dayOfYear)&&(h(t)._overflowDayOfYear=!0),n=Ht(o,0,t._dayOfYear),t._a[yt]=n.getUTCMonth(),t._a[vt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=a[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[_t]&&0===t._a[xt]&&0===t._a[Tt]&&0===t._a[wt]&&(t._nextDay=!0,t._a[_t]=0),t._d=(t._useUTC?Ht:function(t,e,n,a,r,i,o){var s;return t<100&&t>=0?(s=new Date(t+400,e,n,a,r,i,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,a,r,i,o),s}).apply(null,s),i=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[_t]=24),t._w&&void 0!==t._w.d&&t._w.d!==i&&(h(t).weekdayMismatch=!0)}}var be=/^\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)?)?$/,ye=/^\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)?)?$/,ve=/Z|[+-]\d\d(?::?\d\d)?/,_e=[["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}/]],xe=[["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/]],Te=/^\/?Date\((\-?\d+)/i;function we(t){var e,n,a,r,i,o,s=t._i,u=be.exec(s)||ye.exec(s);if(u){for(h(t).iso=!0,e=0,n=_e.length;e<n;e++)if(_e[e][1].exec(u[1])){r=_e[e][0],a=!1!==_e[e][2];break}if(null==r)return void(t._isValid=!1);if(u[3]){for(e=0,n=xe.length;e<n;e++)if(xe[e][1].exec(u[3])){i=(u[2]||" ")+xe[e][0];break}if(null==i)return void(t._isValid=!1)}if(!a&&null!=i)return void(t._isValid=!1);if(u[4]){if(!ve.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=r+(i||"")+(o||""),Ie(t)}else t._isValid=!1}var Se=/^(?:(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 Oe(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var Ce={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ke(t){var e,n,a,r,i,o,s=Se.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(s){var u=(e=s[3],n=s[2],a=s[5],r=s[6],i=s[7],o=[Oe(s[4]),Mt.indexOf(e),parseInt(n,10),parseInt(a,10),parseInt(r,10)],i&&o.push(parseInt(i,10)),o);if(!function(t,e,n){return!t||$t.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(h(n).weekdayMismatch=!0,n._isValid=!1,!1)}(s[1],u,t))return;t._a=u,t._tzm=function(t,e,n){if(t)return Ce[t];if(s[9])return 0;var a=parseInt(s[10],10),r=a%100;return(a-r)/100*60+r}(s[8]),t._d=Ht.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),h(t).rfc2822=!0}else t._isValid=!1}function Ie(t){if(t._f!==r.ISO_8601)if(t._f!==r.RFC_2822){t._a=[],h(t).empty=!0;var e,n,a,i,o,s=""+t._i,u=s.length,l=0;for(a=U(t._f,t._locale).match(z)||[],e=0;e<a.length;e++)(n=(s.match(dt(i=a[e],t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&h(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),l+=n.length),G[i]?(n?h(t).empty=!1:h(t).unusedTokens.push(i),mt(i,n,t)):t._strict&&!n&&h(t).unusedTokens.push(i);h(t).charsLeftOver=u-l,s.length>0&&h(t).unusedInput.push(s),t._a[_t]<=12&&!0===h(t).bigHour&&t._a[_t]>0&&(h(t).bigHour=void 0),h(t).parsedDateParts=t._a.slice(0),h(t).meridiem=t._meridiem,t._a[_t]=(c=t._locale,d=t._a[_t],null==(f=t._meridiem)?d:null!=c.meridiemHour?c.meridiemHour(d,f):null!=c.isPM?((p=c.isPM(f))&&d<12&&(d+=12),p||12!==d||(d=0),d):d),me(t),he(t)}else ke(t);else we(t);var c,d,f,p}function De(t){var e=t._i,n=t._f;return t._locale=t._locale||pe(t._l),null===e||void 0===n&&""===e?m({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new _(he(e)):(l(e)?t._d=e:i(n)?function(t){var e,n,a,r,i;if(0===t._f.length)return h(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],Ie(e),g(e)&&(i+=h(e).charsLeftOver,i+=10*h(e).unusedTokens.length,h(e).score=i,(null==a||i<a)&&(a=i,n=e));f(t,n||e)}(t):n?Ie(t):function(t){var e=t._i;s(e)?t._d=new Date(r.now()):l(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=Te.exec(t._i);null===e?(we(t),!1===t._isValid&&(delete t._isValid,ke(t),!1===t._isValid&&(delete t._isValid,r.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):i(e)?(t._a=c(e.slice(0),function(t){return parseInt(t,10)}),me(t)):o(e)?function(t){if(!t._d){var e=M(t._i);t._a=c([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),me(t)}}(t):u(e)?t._d=new Date(e):r.createFromInputFallback(t)}(t),g(t)||(t._d=null),t))}function Re(t,e,n,a,r){var s,u={};return!0!==n&&!1!==n||(a=n,n=void 0),(o(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),u._isAMomentObject=!0,u._useUTC=u._isUTC=r,u._l=n,u._i=t,u._f=e,u._strict=a,(s=new _(he(De(u))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Ne(t,e,n,a){return Re(t,e,n,a,!1)}r.createFromInputFallback=C("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 Ae=C("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Ne.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:m()}),Ee=C("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Ne.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:m()});function Le(t,e){var n,a;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Ne();for(n=e[0],a=1;a<e.length;++a)e[a].isValid()&&!e[a][t](n)||(n=e[a]);return n}var Pe=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Me(t){var e=M(t),n=e.year||0,a=e.quarter||0,r=e.month||0,i=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,u=e.minute||0,l=e.second||0,c=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===It.call(Pe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,a=0;a<Pe.length;++a)if(t[Pe[a]]){if(n)return!1;parseFloat(t[Pe[a]])!==w(t[Pe[a]])&&(n=!0)}return!0}(e),this._milliseconds=+c+1e3*l+6e4*u+1e3*s*60*60,this._days=+o+7*i,this._months=+r+3*a+12*n,this._data={},this._locale=pe(),this._bubble()}function je(t){return t instanceof Me}function qe(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Fe(t,e){V(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)})}Fe("Z",":"),Fe("ZZ",""),ct("Z",st),ct("ZZ",st),ht(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Ye(st,t)});var ze=/([\+\-]|\d\d)/gi;function Ye(t,e){var n=(e||"").match(t);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(ze)||["-",0,0],r=60*a[1]+w(a[2]);return 0===r?0:"+"===a[0]?r:-r}function He(t,e){var n,a;return e._isUTC?(n=e.clone(),a=(x(t)||l(t)?t.valueOf():Ne(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):Ne(t).local()}function Ge(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ve(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Be=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function We(t,e){var n,a,r,i,o,s,l=t,c=null;return je(t)?l={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(l={},e?l[e]=t:l.milliseconds=t):(c=Be.exec(t))?(n="-"===c[1]?-1:1,l={y:0,d:w(c[vt])*n,h:w(c[_t])*n,m:w(c[xt])*n,s:w(c[Tt])*n,ms:w(qe(1e3*c[wt]))*n}):(c=Ue.exec(t))?l={y:Ke(c[2],n="-"===c[1]?-1:1),M:Ke(c[3],n),w:Ke(c[4],n),d:Ke(c[5],n),h:Ke(c[6],n),m:Ke(c[7],n),s:Ke(c[8],n)}:null==l?l={}:"object"==typeof l&&("from"in l||"to"in l)&&(i=Ne(l.from),o=Ne(l.to),r=i.isValid()&&o.isValid()?(o=He(o,i),i.isBefore(o)?s=$e(i,o):((s=$e(o,i)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(l={}).ms=r.milliseconds,l.M=r.months),a=new Me(l),je(t)&&d(t,"_locale")&&(a._locale=t._locale),a}function Ke(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function $e(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)||(D(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),Xe(this,We(n="string"==typeof n?+n:n,a),t),this}}function Xe(t,e,n,a){var i=e._milliseconds,o=qe(e._days),s=qe(e._months);t.isValid()&&(a=null==a||a,s&&jt(t,Nt(t,"Month")+s*n),o&&At(t,"Date",Nt(t,"Date")+o*n),i&&t._d.setTime(t._d.valueOf()+i*n),a&&r.updateOffset(t,o||s))}We.fn=Me.prototype,We.invalid=function(){return We(NaN)};var Je=Ze(1,"add"),Qe=Ze(-1,"subtract");function tn(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 en(t){var e;return void 0===t?this._locale._abbr:(null!=(e=pe(t))&&(this._locale=e),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var nn=C("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 an(){return this._locale}var rn=126227808e5;function on(t,e){return(t%e+e)%e}function sn(t,e,n){return t<100&&t>=0?new Date(t+400,e,n)-rn:new Date(t,e,n).valueOf()}function un(t,e,n){return t<100&&t>=0?Date.UTC(t+400,e,n)-rn:Date.UTC(t,e,n)}function ln(t,e){V(0,[t,t.length],0,e)}function cn(t,e,n,a,r){var i;return null==t?Bt(this,a,r).year:(e>(i=Ut(t,a,r))&&(e=i),(function(t,e,n,a,r){var i=Vt(t,e,n,a,r),o=Ht(i.year,0,i.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}).call(this,t,e,n,a,r))}V(0,["gg",2],0,function(){return this.weekYear()%100}),V(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ln("gggg","weekYear"),ln("ggggg","weekYear"),ln("GGGG","isoWeekYear"),ln("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),q("weekYear",1),q("isoWeekYear",1),ct("G",it),ct("g",it),ct("GG",J,K),ct("gg",J,K),ct("GGGG",nt,Z),ct("gggg",nt,Z),ct("GGGGG",at,X),ct("ggggg",at,X),gt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,a){e[a.substr(0,2)]=w(t)}),gt(["gg","GG"],function(t,e,n,a){e[a]=r.parseTwoDigitYear(t)}),V("Q",0,"Qo","quarter"),L("quarter","Q"),q("quarter",7),ct("Q",W),ht("Q",function(t,e){e[yt]=3*(w(t)-1)}),V("D",["DD",2],"Do","date"),L("date","D"),q("date",9),ct("D",J),ct("DD",J,K),ct("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),ht(["D","DD"],vt),ht("Do",function(t,e){e[vt]=w(t.match(J)[0])});var dn=Rt("Date",!0);V("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),q("dayOfYear",4),ct("DDD",et),ct("DDDD",$),ht(["DDD","DDDD"],function(t,e,n){n._dayOfYear=w(t)}),V("m",["mm",2],0,"minute"),L("minute","m"),q("minute",14),ct("m",J),ct("mm",J,K),ht(["m","mm"],xt);var fn=Rt("Minutes",!1);V("s",["ss",2],0,"second"),L("second","s"),q("second",15),ct("s",J),ct("ss",J,K),ht(["s","ss"],Tt);var pn,hn=Rt("Seconds",!1);for(V("S",0,0,function(){return~~(this.millisecond()/100)}),V(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),V(0,["SSS",3],0,"millisecond"),V(0,["SSSS",4],0,function(){return 10*this.millisecond()}),V(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),V(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),V(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),V(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),V(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),q("millisecond",16),ct("S",et,W),ct("SS",et,K),ct("SSS",et,$),pn="SSSS";pn.length<=9;pn+="S")ct(pn,rt);function gn(t,e){e[wt]=w(1e3*("0."+t))}for(pn="S";pn.length<=9;pn+="S")ht(pn,gn);var mn=Rt("Milliseconds",!1);V("z",0,0,"zoneAbbr"),V("zz",0,0,"zoneName");var bn=_.prototype;function yn(t){return t}bn.add=Je,bn.calendar=function(t,e){var n=t||Ne(),a=He(n,this).startOf("day"),i=r.calendarFormat(this,a)||"sameElse",o=e&&(R(e[i])?e[i].call(this,n):e[i]);return this.format(o||this.localeData().calendar(i,this,Ne(n)))},bn.clone=function(){return new _(this)},bn.diff=function(t,e,n){var a,r,i;if(!this.isValid())return NaN;if(!(a=He(t,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),e=P(e)){case"year":i=tn(this,a)/12;break;case"month":i=tn(this,a);break;case"quarter":i=tn(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)},bn.endOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?un:sn;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-on(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-on(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-on(e,1e3)-1}return this._d.setTime(e),r.updateOffset(this,!0),this},bn.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=B(this,t);return this.localeData().postformat(e)},bn.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ne(t).isValid())?We({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bn.fromNow=function(t){return this.from(Ne(),t)},bn.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ne(t).isValid())?We({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},bn.toNow=function(t){return this.to(Ne(),t)},bn.get=function(t){return R(this[t=P(t)])?this[t]():this},bn.invalidAt=function(){return h(this).overflow},bn.isAfter=function(t,e){var n=x(t)?t:Ne(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},bn.isBefore=function(t,e){var n=x(t)?t:Ne(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=P(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},bn.isBetween=function(t,e,n,a){var r=x(t)?t:Ne(t),i=x(e)?e:Ne(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))},bn.isSame=function(t,e){var n,a=x(t)?t:Ne(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()))},bn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},bn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},bn.isValid=function(){return g(this)},bn.lang=nn,bn.locale=en,bn.localeData=an,bn.max=Ee,bn.min=Ae,bn.parsingFlags=function(){return f({},h(this))},bn.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:j[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(R(this[t=P(t)]))return this[t](e);return this},bn.startOf=function(t){var e;if(void 0===(t=P(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?un:sn;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-=on(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=on(e,6e4);break;case"second":e=this._d.valueOf(),e-=on(e,1e3)}return this._d.setTime(e),r.updateOffset(this,!0),this},bn.subtract=Qe,bn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},bn.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()}},bn.toDate=function(){return new Date(this.valueOf())},bn.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?B(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):R(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",B(n,"Z")):B(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},bn.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+'[")]')},bn.toJSON=function(){return this.isValid()?this.toISOString():null},bn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},bn.unix=function(){return Math.floor(this.valueOf()/1e3)},bn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},bn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},bn.year=Dt,bn.isLeapYear=function(){return kt(this.year())},bn.weekYear=function(t){return cn.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},bn.isoWeekYear=function(t){return cn.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},bn.quarter=bn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},bn.month=qt,bn.daysInMonth=function(){return Et(this.year(),this.month())},bn.week=bn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},bn.isoWeek=bn.isoWeeks=function(t){var e=Bt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},bn.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},bn.isoWeeksInYear=function(){return Ut(this.year(),1,4)},bn.date=dn,bn.day=bn.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},bn.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")},bn.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},bn.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")},bn.hour=bn.hours=ie,bn.minute=bn.minutes=fn,bn.second=bn.seconds=hn,bn.millisecond=bn.milliseconds=mn,bn.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=Ye(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(a=Ge(this)),this._offset=t,this._isUTC=!0,null!=a&&this.add(a,"m"),i!==t&&(!e||this._changeInProgress?Xe(this,We(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Ge(this)},bn.utc=function(t){return this.utcOffset(0,t)},bn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ge(this),"m")),this},bn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ye(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},bn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Ne(t).utcOffset():0,(this.utcOffset()-t)%60==0)},bn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},bn.isLocal=function(){return!!this.isValid()&&!this._isUTC},bn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},bn.isUtc=Ve,bn.isUTC=Ve,bn.zoneAbbr=function(){return this._isUTC?"UTC":""},bn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},bn.dates=C("dates accessor is deprecated. Use date instead.",dn),bn.months=C("months accessor is deprecated. Use month instead",qt),bn.years=C("years accessor is deprecated. Use year instead",Dt),bn.zone=C("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()}),bn.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=De(t))._a){var e=t._isUTC?p(t._a):Ne(t._a);this._isDSTShifted=this.isValid()&&S(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var vn=A.prototype;function _n(t,e,n,a){var r=pe(),i=p().set(a,e);return r[n](i,t)}function xn(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return _n(t,e,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=_n(t,a,n,"month");return r}function Tn(t,e,n,a){"boolean"==typeof t?(u(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,u(e)&&(n=e,e=void 0),e=e||"");var r,i=pe(),o=t?i._week.dow:0;if(null!=n)return _n(e,(n+o)%7,a,"day");var s=[];for(r=0;r<7;r++)s[r]=_n(e,(r+o)%7,a,"day");return s}vn.calendar=function(t,e,n){var a=this._calendar[t]||this._calendar.sameElse;return R(a)?a.call(e,n):a},vn.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])},vn.invalidDate=function(){return this._invalidDate},vn.ordinal=function(t){return this._ordinal.replace("%d",t)},vn.preparse=yn,vn.postformat=yn,vn.relativeTime=function(t,e,n,a){var r=this._relativeTime[n];return R(r)?r(t,e,n,a):r.replace(/%d/i,t)},vn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return R(n)?n(e):n.replace(/%s/i,e)},vn.set=function(t){var e,n;for(n in t)R(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)},vn.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Lt).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},vn.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Lt.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},vn.monthsParse=function(t,e,n){var a,r,i;if(this._monthsParseExact)return(function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)i=p([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(i,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(i,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(r=It.call(this._shortMonthsParse,o))?r:null:-1!==(r=It.call(this._longMonthsParse,o))?r:null:"MMM"===e?-1!==(r=It.call(this._shortMonthsParse,o))?r:-1!==(r=It.call(this._longMonthsParse,o))?r:null:-1!==(r=It.call(this._longMonthsParse,o))?r:-1!==(r=It.call(this._shortMonthsParse,o))?r:null}).call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=p([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}},vn.monthsRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Yt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=zt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},vn.monthsShortRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||Yt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Ft),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},vn.week=function(t){return Bt(t,this._week.dow,this._week.doy).week},vn.firstDayOfYear=function(){return this._week.doy},vn.firstDayOfWeek=function(){return this._week.dow},vn.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?Wt(n,this._week.dow):t?n[t.day()]:n},vn.weekdaysMin=function(t){return!0===t?Wt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},vn.weekdaysShort=function(t){return!0===t?Wt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},vn.weekdaysParse=function(t,e,n){var a,r,i;if(this._weekdaysParseExact)return(function(t,e,n){var a,r,i,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)i=p([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=It.call(this._weekdaysParse,o))?r:null:"ddd"===e?-1!==(r=It.call(this._shortWeekdaysParse,o))?r:null:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:"dddd"===e?-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._shortWeekdaysParse,o))?r:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:"ddd"===e?-1!==(r=It.call(this._shortWeekdaysParse,o))?r:-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._minWeekdaysParse,o))?r:null:-1!==(r=It.call(this._minWeekdaysParse,o))?r:-1!==(r=It.call(this._weekdaysParse,o))?r:-1!==(r=It.call(this._shortWeekdaysParse,o))?r:null}).call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=p([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}},vn.weekdaysRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},vn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},vn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||te.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Qt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},vn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},vn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},de("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=C("moment.lang is deprecated. Use moment.locale instead.",de),r.langData=C("moment.langData is deprecated. Use moment.localeData instead.",pe);var wn=Math.abs;function Sn(t,e,n,a){var r=We(e,n);return t._milliseconds+=a*r._milliseconds,t._days+=a*r._days,t._months+=a*r._months,t._bubble()}function On(t){return t<0?Math.floor(t):Math.ceil(t)}function Cn(t){return 4800*t/146097}function kn(t){return 146097*t/4800}function In(t){return function(){return this.as(t)}}var Dn=In("ms"),Rn=In("s"),Nn=In("m"),An=In("h"),En=In("d"),Ln=In("w"),Pn=In("M"),Mn=In("Q"),jn=In("y");function qn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Fn=qn("milliseconds"),zn=qn("seconds"),Yn=qn("minutes"),Hn=qn("hours"),Gn=qn("days"),Vn=qn("months"),Bn=qn("years"),Un=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,M:11},Kn=Math.abs;function $n(t){return(t>0)-(t<0)||+t}function Zn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Kn(this._milliseconds)/1e3,a=Kn(this._days),r=Kn(this._months);t=T(n/60),e=T(t/60),n%=60,t%=60;var i=T(r/12),o=r%=12,s=a,u=e,l=t,c=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var f=d<0?"-":"",p=$n(this._months)!==$n(d)?"-":"",h=$n(this._days)!==$n(d)?"-":"",g=$n(this._milliseconds)!==$n(d)?"-":"";return f+"P"+(i?p+i+"Y":"")+(o?p+o+"M":"")+(s?h+s+"D":"")+(u||l||c?"T":"")+(u?g+u+"H":"")+(l?g+l+"M":"")+(c?g+c+"S":"")}var Xn=Me.prototype;return Xn.isValid=function(){return this._isValid},Xn.abs=function(){var t=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),t.milliseconds=wn(t.milliseconds),t.seconds=wn(t.seconds),t.minutes=wn(t.minutes),t.hours=wn(t.hours),t.months=wn(t.months),t.years=wn(t.years),this},Xn.add=function(t,e){return Sn(this,t,e,1)},Xn.subtract=function(t,e){return Sn(this,t,e,-1)},Xn.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+Cn(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(kn(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)}},Xn.asMilliseconds=Dn,Xn.asSeconds=Rn,Xn.asMinutes=Nn,Xn.asHours=An,Xn.asDays=En,Xn.asWeeks=Ln,Xn.asMonths=Pn,Xn.asQuarters=Mn,Xn.asYears=jn,Xn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Xn._bubble=function(){var t,e,n,a,r,i=this._milliseconds,o=this._days,s=this._months,u=this._data;return i>=0&&o>=0&&s>=0||i<=0&&o<=0&&s<=0||(i+=864e5*On(kn(s)+o),o=0,s=0),u.milliseconds=i%1e3,t=T(i/1e3),u.seconds=t%60,e=T(t/60),u.minutes=e%60,n=T(e/60),u.hours=n%24,o+=T(n/24),s+=r=T(Cn(o)),o-=On(kn(r)),a=T(s/12),s%=12,u.days=o,u.months=s,u.years=a,this},Xn.clone=function(){return We(this)},Xn.get=function(t){return t=P(t),this.isValid()?this[t+"s"]():NaN},Xn.milliseconds=Fn,Xn.seconds=zn,Xn.minutes=Yn,Xn.hours=Hn,Xn.days=Gn,Xn.weeks=function(){return T(this.days()/7)},Xn.months=Vn,Xn.years=Bn,Xn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var a=We(t).abs(),r=Un(a.as("s")),i=Un(a.as("m")),o=Un(a.as("h")),s=Un(a.as("d")),u=Un(a.as("M")),l=Un(a.as("y")),c=r<=Wn.ss&&["s",r]||r<Wn.s&&["ss",r]||i<=1&&["m"]||i<Wn.m&&["mm",i]||o<=1&&["h"]||o<Wn.h&&["hh",o]||s<=1&&["d"]||s<Wn.d&&["dd",s]||u<=1&&["M"]||u<Wn.M&&["MM",u]||l<=1&&["y"]||["yy",l];return c[2]=e,c[3]=+t>0,c[4]=n,(function(t,e,n,a,r){return r.relativeTime(e||1,!!n,t,a)}).apply(null,c)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Xn.toISOString=Zn,Xn.toString=Zn,Xn.toJSON=Zn,Xn.locale=en,Xn.localeData=an,Xn.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Zn),Xn.lang=nn,V("X",0,0,"unix"),V("x",0,0,"valueOf"),ct("x",it),ct("X",/[+-]?\d+(\.\d{1,3})?/),ht("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),ht("x",function(t,e,n){n._d=new Date(w(t))}),r.version="2.24.0",e=Ne,r.fn=bn,r.min=function(){return Le("isBefore",[].slice.call(arguments,0))},r.max=function(){return Le("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=p,r.unix=function(t){return Ne(1e3*t)},r.months=function(t,e){return xn(t,e,"months")},r.isDate=l,r.locale=de,r.invalid=m,r.duration=We,r.isMoment=x,r.weekdays=function(t,e,n){return Tn(t,e,n,"weekdays")},r.parseZone=function(){return Ne.apply(null,arguments).parseZone()},r.localeData=pe,r.isDuration=je,r.monthsShort=function(t,e){return xn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return Tn(t,e,n,"weekdaysMin")},r.defineLocale=fe,r.updateLocale=function(t,e){if(null!=e){var n,a,r=oe;null!=(a=ce(t))&&(r=a._config),(n=new A(e=N(r,e))).parentLocale=se[t],se[t]=n,de(t)}else null!=se[t]&&(null!=se[t].parentLocale?se[t]=se[t].parentLocale:null!=se[t]&&delete se[t]);return se[t]},r.locales=function(){return k(se)},r.weekdaysShort=function(t,e,n){return Tn(t,e,n,"weekdaysShort")},r.normalizeUnits=P,r.relativeTimeRounding=function(t){return void 0===t?Un:"function"==typeof t&&(Un=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Wn[t]&&(void 0===e?Wn[t]:(Wn[t]=e,"s"===t&&(Wn.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=bn,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))},wnGv:function(t,e,n){"use strict";n.d(e,"a",function(){return l});var a=n("CcnG"),r=n("gIcY"),i=n("LvDl"),o=n("QFaf"),s=n("DNAf"),u=n("a96k"),l=function(){function t(t){this.i18n=t,this.data=[],this.options=[],this.messages=new s.a({},this.i18n),this.customBadges=!1,this.customBadgeValidators=[],this.selection=new a.EventEmitter,this.Object=Object,this.filteredOptions=[]}return t.prototype.ngOnInit=function(){this.initFilter(),this.data.length>0&&this.initMissingOptions(),this.options=i.sortBy(this.options,["name"]),this.updateOptions()},t.prototype.initFilter=function(){this.filter=new r.i("",{validators:this.customBadgeValidators}),this.form=new o.a({filter:this.filter}),this.filteredOptions=(this.options||[]).slice()},t.prototype.initMissingOptions=function(){var t=this,e=this.options.map(function(t){return t.name});this.data.filter(function(t){return-1===e.indexOf(t)}).forEach(function(e){return t.addOption(e)}),this.forceOptionsToReflectData()},t.prototype.addOption=function(t){this.options.push(new u.a(!1,t,"")),this.options=i.sortBy(this.options,["name"]),this.triggerSelection(this.options.find(function(e){return e.name===t}))},t.prototype.triggerSelection=function(t){!t||this.selectionLimit&&!t.selected&&this.data.length>=this.selectionLimit||(t.selected=!t.selected,this.updateOptions(),this.selection.emit({option:t}))},t.prototype.updateOptions=function(){var t=this;this.data.splice(0,this.data.length),this.options.forEach(function(e){e.selected&&t.data.push(e.name)}),this.updateFilter()},t.prototype.updateFilter=function(){var t=this;this.filteredOptions=this.options.filter(function(e){return e.name.includes(t.filter.value)})},t.prototype.forceOptionsToReflectData=function(){var t=this;this.options.forEach(function(e){-1!==t.data.indexOf(e.name)&&(e.selected=!0)})},t.prototype.ngOnChanges=function(){this.filter&&this.updateFilter(),this.options&&this.data&&0!==this.data.length&&this.forceOptionsToReflectData()},t.prototype.selectOption=function(){0===this.filteredOptions.length?this.addCustomOption():(this.triggerSelection(this.filteredOptions[0]),this.resetFilter())},t.prototype.addCustomOption=function(){this.isCreatable()&&(this.addOption(this.filter.value),this.resetFilter())},t.prototype.isCreatable=function(){var t=this;return this.customBadges&&this.filter.valid&&this.filter.value.length>0&&this.filteredOptions.every(function(e){return e.name!==t.filter.value})},t.prototype.resetFilter=function(){this.filter.setValue(""),this.updateFilter()},t.prototype.removeItem=function(t){this.triggerSelection(this.options.find(function(e){return e.name===t&&e.selected}))},t}()},x38r:function(t,e,n){"use strict";var a;n.d(e,"a",function(){return a}),function(t){t.bold="bold",t.sparkline="sparkline",t.perSecond="perSecond",t.checkIcon="checkIcon",t.routerLink="routerLink",t.executing="executing",t.classAdding="classAdding"}(a||(a={}))},x6pH:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]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:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(t){return 2===t?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":t+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(t){return 2===t?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":t+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(t){return 2===t?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":t+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(t){return 2===t?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":t%10==0&&10!==t?t+" \u05e9\u05e0\u05d4":t+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(t){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(t)},meridiem:function(t,e,n){return t<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":t<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":t<12?n?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":t<18?n?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}})}()},x8uC:function(t,e,n){"use strict";var a=n("CDJp"),r=n("K2E3"),i=n("RDha");a._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:i.noop,title:function(t,e){var n="",a=e.labels,r=a?a.length:0;if(t.length>0){var i=t[0];i.xLabel?n=i.xLabel:r>0&&i.index<r&&(n=a[i.index])}return n},afterTitle:i.noop,beforeBody:i.noop,beforeLabel:i.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+t.yLabel},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:i.noop,afterBody:i.noop,beforeFooter:i.noop,footer:i.noop,afterFooter:i.noop}}});var o={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 o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();a+=s.x,r+=s.y,++i}}return{x:Math.round(a/i),y:Math.round(r/i)}},nearest:function(t,e){var n,a,r,o=e.x,s=e.y,u=Number.POSITIVE_INFINITY;for(n=0,a=t.length;n<a;++n){var l=t[n];if(l&&l.hasValue()){var c=l.getCenterPoint(),d=i.distanceBetweenPoints(e,c);d<u&&(u=d,r=l)}}if(r){var f=r.tooltipPosition();o=f.x,s=f.y}return{x:o,y:s}}};function s(t,e){var n=i.color(t);return n.alpha(e*n.alpha()).rgbaString()}function u(t,e){return e&&(i.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function l(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function c(t){var e=a.global,n=i.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(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 d(t){return u([],l(t))}(t.exports=r.extend({initialize:function(){this._model=c(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),a=t.afterTitle.apply(this,arguments),r=[];return r=u(r,l(e)),r=u(r,l(n)),u(r,l(a))},getBeforeBody:function(){return d(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,a=n._options.callbacks,r=[];return i.each(t,function(t){var i={before:[],lines:[],after:[]};u(i.before,l(a.beforeLabel.call(n,t,e))),u(i.lines,a.label.call(n,t,e)),u(i.after,l(a.afterLabel.call(n,t,e))),r.push(i)}),r},getAfterBody:function(){return d(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),a=t.afterFooter.apply(this,arguments),r=[];return r=u(r,l(e)),r=u(r,l(n)),u(r,l(a))},update:function(t){var e,n,a,r,s,u,l,d=this,f=d._options,p=d._model,h=d._model=c(f),g=d._active,m=d._data,b={xAlign:p.xAlign,yAlign:p.yAlign},y={x:p.x,y:p.y},v={width:p.width,height:p.height},_={x:p.caretX,y:p.caretY};if(g.length){h.opacity=1;var x=[],T=[];_=o[f.position].call(d,g,d._eventPosition);var w=[];for(e=0,n=g.length;e<n;++e)w.push((r=void 0,s=void 0,s=(a=g[e])._yScale||a._scale,u=a._index,l=a._datasetIndex,{xLabel:(r=a._xScale)?r.getLabelForIndex(u,l):"",yLabel:s?s.getLabelForIndex(u,l):"",index:u,datasetIndex:l,x:a._model.x,y:a._model.y}));f.filter&&(w=w.filter(function(t){return f.filter(t,m)})),f.itemSort&&(w=w.sort(function(t,e){return f.itemSort(t,e,m)})),i.each(w,function(t){x.push(f.callbacks.labelColor.call(d,t,d._chart)),T.push(f.callbacks.labelTextColor.call(d,t,d._chart))}),h.title=d.getTitle(w,m),h.beforeBody=d.getBeforeBody(w,m),h.body=d.getBody(w,m),h.afterBody=d.getAfterBody(w,m),h.footer=d.getFooter(w,m),h.x=Math.round(_.x),h.y=Math.round(_.y),h.caretPadding=f.caretPadding,h.labelColors=x,h.labelTextColors=T,h.dataPoints=w,v=function(t,e){var n=t._chart.ctx,a=2*e.yPadding,r=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0),u=e.title.length,l=e.footer.length,c=e.titleFontSize,d=e.bodyFontSize,f=e.footerFontSize;a+=u*c,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+=l?e.footerMarginTop:0,a+=l*f,a+=l?(l-1)*e.footerSpacing:0;var p=0,h=function(t){r=Math.max(r,n.measureText(t).width+p)};return n.font=i.fontString(c,e._titleFontStyle,e._titleFontFamily),i.each(e.title,h),n.font=i.fontString(d,e._bodyFontStyle,e._bodyFontFamily),i.each(e.beforeBody.concat(e.afterBody),h),p=e.displayColors?d+2:0,i.each(o,function(t){i.each(t.before,h),i.each(t.lines,h),i.each(t.after,h)}),p=0,n.font=i.fontString(f,e._footerFontStyle,e._footerFontFamily),i.each(e.footer,h),{width:r+=2*e.xPadding,height:a}}(this,h),y=function(t,e,n,a){var r=t.x,i=t.y,o=t.caretPadding,s=n.xAlign,u=n.yAlign,l=t.caretSize+o,c=t.cornerRadius+o;return"right"===s?r-=e.width:"center"===s&&((r-=e.width/2)+e.width>a.width&&(r=a.width-e.width),r<0&&(r=0)),"top"===u?i+=l:i-="bottom"===u?e.height+l:e.height/2,"center"===u?"left"===s?r+=l:"right"===s&&(r-=l):"left"===s?r-=c:"right"===s&&(r+=c),{x:r,y:i}}(h,v,b=function(t,e){var n,a,r,i,o,s=t._model,u=t._chart,l=t._chart.chartArea,c="center",d="center";s.y<e.height?d="top":s.y>u.height-e.height&&(d="bottom");var f=(l.left+l.right)/2,p=(l.top+l.bottom)/2;"center"===d?(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>=u.width-e.width/2}),r=function(t){return t+e.width+s.caretSize+s.caretPadding>u.width},i=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=p?"top":"bottom"},n(s.x)?(c="left",r(s.x)&&(c="center",d=o(s.y))):a(s.x)&&(c="right",i(s.x)&&(c="center",d=o(s.y)));var h=t._options;return{xAlign:h.xAlign?h.xAlign:c,yAlign:h.yAlign?h.yAlign:d}}(this,v),d._chart)}else h.opacity=0;return h.xAlign=b.xAlign,h.yAlign=b.yAlign,h.x=y.x,h.y=y.y,h.width=v.width,h.height=v.height,h.caretX=_.x,h.caretY=_.y,d._model=h,t&&f.custom&&f.custom.call(d,h),d},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,o,s,u,l=n.caretSize,c=n.cornerRadius,d=n.xAlign,f=n.yAlign,p=t.x,h=t.y,g=e.width,m=e.height;if("center"===f)s=h+m/2,"left"===d?(r=(a=p)-l,i=a,o=s+l,u=s-l):(r=(a=p+g)+l,i=a,o=s-l,u=s+l);else if("left"===d?(a=(r=p+c+l)-l,i=r+l):"right"===d?(a=(r=p+g-c-l)-l,i=r+l):(a=(r=n.caretX)-l,i=r+l),"top"===f)s=(o=h)-l,u=o;else{s=(o=h+m)+l,u=o;var b=i;i=a,a=b}return{x1:a,x2:r,x3:i,y1:o,y2:s,y3:u}},drawTitle:function(t,e,n,a){var r=e.title;if(r.length){n.textAlign=e._titleAlign,n.textBaseline="top";var o,u,l=e.titleFontSize,c=e.titleSpacing;for(n.fillStyle=s(e.titleFontColor,a),n.font=i.fontString(l,e._titleFontStyle,e._titleFontFamily),o=0,u=r.length;o<u;++o)n.fillText(r[o],t.x,t.y),t.y+=l+c,o+1===r.length&&(t.y+=e.titleMarginBottom-c)}},drawBody:function(t,e,n,a){var r=e.bodyFontSize,o=e.bodySpacing,u=e.body;n.textAlign=e._bodyAlign,n.textBaseline="top",n.font=i.fontString(r,e._bodyFontStyle,e._bodyFontFamily);var l=0,c=function(e){n.fillText(e,t.x+l,t.y),t.y+=r+o};n.fillStyle=s(e.bodyFontColor,a),i.each(e.beforeBody,c);var d=e.displayColors;l=d?r+2:0,i.each(u,function(o,u){var l=s(e.labelTextColors[u],a);n.fillStyle=l,i.each(o.before,c),i.each(o.lines,function(i){d&&(n.fillStyle=s(e.legendColorBackground,a),n.fillRect(t.x,t.y,r,r),n.lineWidth=1,n.strokeStyle=s(e.labelColors[u].borderColor,a),n.strokeRect(t.x,t.y,r,r),n.fillStyle=s(e.labelColors[u].backgroundColor,a),n.fillRect(t.x+1,t.y+1,r-2,r-2),n.fillStyle=l),c(i)}),i.each(o.after,c)}),l=0,i.each(e.afterBody,c),t.y-=o},drawFooter:function(t,e,n,a){var r=e.footer;r.length&&(t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=s(e.footerFontColor,a),n.font=i.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),i.each(r,function(a){n.fillText(a,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,n,a,r){n.fillStyle=s(e.backgroundColor,r),n.strokeStyle=s(e.borderColor,r),n.lineWidth=e.borderWidth;var i=e.xAlign,o=e.yAlign,u=t.x,l=t.y,c=a.width,d=a.height,f=e.cornerRadius;n.beginPath(),n.moveTo(u+f,l),"top"===o&&this.drawCaret(t,a),n.lineTo(u+c-f,l),n.quadraticCurveTo(u+c,l,u+c,l+f),"center"===o&&"right"===i&&this.drawCaret(t,a),n.lineTo(u+c,l+d-f),n.quadraticCurveTo(u+c,l+d,u+c-f,l+d),"bottom"===o&&this.drawCaret(t,a),n.lineTo(u+f,l+d),n.quadraticCurveTo(u,l+d,u,l+d-f),"center"===o&&"left"===i&&this.drawCaret(t,a),n.lineTo(u,l+f),n.quadraticCurveTo(u,l,u+f,l),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)&&(this.drawBackground(a,e,t,n,r),a.x+=e.xPadding,a.y+=e.yPadding,this.drawTitle(a,e,t,r),this.drawBody(a,e,t,r),this.drawFooter(a,e,t,r))}},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=!i.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}})).positioners=o},xMyE:function(t,e,n){"use strict";n.d(e,"a",function(){return s});var a=n("mrSG"),r=n("FFOo"),i=n("+umK"),o=n("2Bdj");function s(t,e,n){return function(a){return a.lift(new u(t,e,n))}}var u=function(){function t(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}return t.prototype.call=function(t,e){return e.subscribe(new l(t,this.nextOrObserver,this.error,this.complete))},t}(),l=function(t){function e(e,n,a,r){var s=t.call(this,e)||this;return s._tapNext=i.a,s._tapError=i.a,s._tapComplete=i.a,s._tapError=a||i.a,s._tapComplete=r||i.a,Object(o.a)(n)?(s._context=s,s._tapNext=n):n&&(s._context=n,s._tapNext=n.next||i.a,s._tapError=n.error||i.a,s._tapComplete=n.complete||i.a),s}return a.__extends(e,t),e.prototype._next=function(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)},e.prototype._error=function(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)},e.prototype._complete=function(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()},e}(r.a)},xSw7:function(t,e,n){"use strict";var a=n("CcnG"),r=n("Fgil"),i=n("aXbf"),o=n("eajB"),s=n("lqqz");n("GgAd"),n.d(e,"a",function(){return u}),n.d(e,"b",function(){return c});var u=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,14,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Used:\xa0"])),(t()(),a["\u0275eld"](5,0,null,null,3,"td",[["class","text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[" ",""])),a["\u0275ppd"](8,1),(t()(),a["\u0275eld"](9,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","text-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Free:\xa0"])),(t()(),a["\u0275eld"](12,0,null,null,3,"td",[["class","'text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,2,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,["",""])),a["\u0275ppd"](15,1)],null,function(t,e){var n=e.component,r=a["\u0275unv"](e,7,0,t(e,8,0,a["\u0275nov"](e.parent,0),n.usedBytes));t(e,7,0,r);var i=a["\u0275unv"](e,14,0,t(e,15,0,a["\u0275nov"](e.parent,0),n.freeBytes));t(e,14,0,i)})}function c(t){return a["\u0275vid"](0,[a["\u0275pid"](0,r.a,[i.a]),(t()(),a["\u0275and"](0,[["usageTooltipTpl",2]],null,0,null,l)),(t()(),a["\u0275eld"](2,16777216,null,null,5,"div",[["class","progress oaprogress"],["data-placement","left"]],[[1,"aria-describedby",0]],null,null,null,null)),a["\u0275did"](3,212992,null,0,o.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,s.a,o.a],{tooltip:[0,"tooltip"],placement:[1,"placement"]},null),(t()(),a["\u0275eld"](4,0,null,null,2,"div",[["class","progress-bar progress-bar-info"],["role","progressbar"]],[[4,"width",null]],null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,["","%"])),(t()(),a["\u0275eld"](7,0,null,null,0,"div",[["class","progress-bar progress-bar-freespace"],["role","progressbar"]],[[4,"width",null]],null,null,null,null))],function(t,e){t(e,3,0,a["\u0275nov"](e,1),"left")},function(t,e){var n=e.component;t(e,2,0,a["\u0275nov"](e,3).ariaDescribedby),t(e,4,0,n.usedPercentage+"%"),t(e,6,0,n.usedPercentage),t(e,7,0,n.freePercentage+"%")})}},xTla:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a="function"==typeof Symbol&&Symbol.observable||"@@observable"},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(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];switch(t.length){case 1:return(function(t){for(var e=0,n=Object.keys(t.prototype);e<n.length;e++){var a=n[e],r=Object.getOwnPropertyDescriptor(t.prototype,a);r.value instanceof Function&&(o(t.prototype,a,r),Object.defineProperty(t.prototype,a,r))}}).apply(this,t);case 3:return o.apply(this,t);default:throw new Error}}function i(t,e,n){var a="__ignore_"+e;Array.isArray(t[a])?t[a].push(n):t[a]=[n]}function o(t,e,n){void 0===n&&(n=Object.getOwnPropertyDescriptor(t,e));var r=n.value;n.value=function(){for(var n=t["__ignore_"+e]||[],i=[],o=0;o<arguments.length;o++)i[o]=a.isString(arguments[o])&&-1===n.indexOf(o)?encodeURIComponent(arguments[o]):arguments[o];return r.apply(this,i)}}},xXU7:function(t,e,n){"use strict";n.d(e,"a",function(){return o});var a=n("6blF"),r=n("T1DM"),i=n("/21U");function o(t,e){return void 0===t&&(t=0),void 0===e&&(e=r.a),(!Object(i.a)(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=r.a),new a.a(function(n){return n.add(e.schedule(s,t,{subscriber:n,counter:0,period:t})),n})}function s(t){var e=t.subscriber,n=t.counter,a=t.period;e.next(n),this.schedule({subscriber:e,counter:n+1,period:a},a)}},xZld:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("kQXf"),r=n("88/t"),i=n("58b6"),o=n("xk4V"),s=function(t){return t[t.NotStarted=0]="NotStarted",t[t.Loading=1]="Loading",t[t.Completed=2]="Completed",t}({});e.Tree=function(){function t(e,n,i){void 0===n&&(n=null),void 0===i&&(i=!1);var o=this;this._childrenLoadingState=s.NotStarted,this._childrenAsyncOnce=a.once(function(){return new r.Observable(function(e){setTimeout(function(){o._childrenLoadingState=s.Loading,o._loadChildren(function(n){o._children=(n||[]).map(function(e){return new t(e,o)}),o._childrenLoadingState=s.Completed,e.next(o.children),e.complete()})})})}),this.buildTreeFromModel(e,n,i||Array.isArray(e.children))}return t.isValueEmpty=function(t){return a.isEmpty(a.trim(t))},t.isRenamable=function(t){return a.has(t,"setName")&&a.isFunction(t.setName)&&a.has(t,"toString")&&a.isFunction(t.toString)&&t.toString!==Object.toString},t.cloneTreeShallow=function(e){var n=new t(Object.assign({},e.node));return n._children=e._children,n},t.applyNewValueToRenamable=function(t,e){var n=Object.assign({},t);return n.setName(e),n},t.prototype.buildTreeFromModel=function(e,n,r){var o=this;this.parent=n,this.node=Object.assign(a.omit(e,"children"),{settings:i.TreeModelSettings.merge(e,a.get(n,"node"))},{emitLoadNextLevel:!0===e.emitLoadNextLevel}),a.isFunction(this.node.loadChildren)?this._loadChildren=this.node.loadChildren:a.get(e,"children",[]).forEach(function(e,n){o._addChild(new t(e,o),n)}),Array.isArray(this._children)||(this._children=this.node.loadChildren||r?[]:null)},t.prototype.hasDeferredChildren=function(){return"function"==typeof this._loadChildren},t.prototype.loadingChildrenRequested=function(){this._childrenLoadingState=s.Loading},t.prototype.childrenAreBeingLoaded=function(){return this._childrenLoadingState===s.Loading},t.prototype.childrenWereLoaded=function(){return this._childrenLoadingState===s.Completed},t.prototype.canLoadChildren=function(){return this._childrenLoadingState===s.NotStarted&&this.foldingType===i.FoldingType.Expanded&&!!this._loadChildren},t.prototype.childrenShouldBeLoaded=function(){return!(this.childrenWereLoaded()||!this._loadChildren&&!0!==this.node.emitLoadNextLevel)},Object.defineProperty(t.prototype,"children",{get:function(){return this._children},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childrenAsync",{get:function(){return this.canLoadChildren()?this._childrenAsyncOnce():r.Observable.of(this.children)},enumerable:!0,configurable:!0}),t.prototype.reloadChildren=function(){var e=this;this.childrenShouldBeLoaded()&&(this._childrenLoadingState=s.Loading,this._loadChildren(function(n){e._children=n&&n.map(function(n){return new t(n,e)}),e._childrenLoadingState=s.Completed}))},t.prototype.setChildren=function(e){var n=this;this._children=e&&e.map(function(e){return new t(e,n)}),this.childrenShouldBeLoaded()&&(this._childrenLoadingState=s.Completed)},t.prototype.createNode=function(e,n){void 0===n&&(n={value:""});var a=new t(n,this,e);return n.id||a.markAsNew(),a.id=a.id||o(),!this.childrenShouldBeLoaded()||this.childrenAreBeingLoaded()||this.childrenWereLoaded()?this.isLeaf()?this.addSibling(a):this.addChild(a):null},Object.defineProperty(t.prototype,"value",{get:function(){return this.node.value},set:function(e){if("string"==typeof e||t.isRenamable(e)){var n=""+e;this.node.value=t.isRenamable(this.value)?t.applyNewValueToRenamable(this.value,n):t.isValueEmpty(n)?this.node.value:n}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checked",{get:function(){return!!a.get(this.node.settings,"checked")},set:function(t){this.node.settings=Object.assign({},this.node.settings,{checked:t})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checkedChildren",{get:function(){return this.hasLoadedChildern()?this.children.filter(function(t){return t.checked}):[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectionAllowed",{get:function(){var t=a.get(this.node.settings,"selectionAllowed");return!!a.isNil(t)||!!t},set:function(t){this.node.settings=Object.assign({},this.node.settings,{selectionAllowed:t})},enumerable:!0,configurable:!0}),t.prototype.hasLoadedChildern=function(){return!a.isEmpty(this.children)},t.prototype.loadedChildrenAmount=function(){return a.size(this.children)},t.prototype.checkedChildrenAmount=function(){return a.size(this.checkedChildren)},t.prototype.addSibling=function(t,e){return Array.isArray(a.get(this.parent,"children"))?this.parent.addChild(t,e):null},t.prototype.addChild=function(e,n){var a=this._addChild(t.cloneTreeShallow(e),n);return this._setFoldingType(),this.isNodeCollapsed()&&this.switchFoldingType(),a},t.prototype._addChild=function(t,e){return void 0===e&&(e=a.size(this._children)||0),t.parent=this,Array.isArray(this._children)?this._children.splice(e,0,t):this._children=[t],t},t.prototype.swapWithSibling=function(t){if(this.hasSibling(t)){var e=this.positionInParent;this.parent._children[t.positionInParent]=this,this.parent._children[e]=t}},Object.defineProperty(t.prototype,"positionInParent",{get:function(){return this.isRoot()?-1:this.parent.children?this.parent.children.indexOf(this):-1},enumerable:!0,configurable:!0}),t.prototype.isStatic=function(){return a.get(this.node.settings,"static",!1)},t.prototype.hasLeftMenu=function(){return!a.get(this.node.settings,"static",!1)&&a.get(this.node.settings,"leftMenu",!1)},t.prototype.hasRightMenu=function(){return!a.get(this.node.settings,"static",!1)&&a.get(this.node.settings,"rightMenu",!1)},t.prototype.isLeaf=function(){return!this.isBranch()},Object.defineProperty(t.prototype,"menuItems",{get:function(){return a.get(this.node.settings,"menuItems")},enumerable:!0,configurable:!0}),t.prototype.hasCustomMenu=function(){return!this.isStatic()&&!!a.get(this.node.settings,"menuItems",!1)},t.prototype.isBranch=function(){return!0===this.node.emitLoadNextLevel||Array.isArray(this._children)},t.prototype.hasChildren=function(){return!a.isEmpty(this._children)||this.childrenShouldBeLoaded()},t.prototype.isRoot=function(){return a.isNil(this.parent)},t.prototype.hasSibling=function(t){return!this.isRoot()&&a.includes(this.parent.children,t)},t.prototype.hasChild=function(t){return a.includes(this._children,t)},t.prototype.removeChild=function(t){if(this.hasChildren()){var e=this._children.findIndex(function(e){return e===t});e>=0&&this._children.splice(e,1),this._setFoldingType()}},t.prototype.removeItselfFromParent=function(){this.parent&&this.parent.removeChild(this)},t.prototype.switchFoldingType=function(){!this.isLeaf()&&this.hasChildren()&&(this.disableCollapseOnInit(),this.node._foldingType=this.isNodeExpanded()?i.FoldingType.Collapsed:i.FoldingType.Expanded)},t.prototype.isNodeExpanded=function(){return this.foldingType===i.FoldingType.Expanded},t.prototype.isNodeCollapsed=function(){return this.foldingType===i.FoldingType.Collapsed},t.prototype._setFoldingType=function(){this.node._foldingType=this.childrenShouldBeLoaded()?i.FoldingType.Collapsed:this._children&&!a.isEmpty(this._children)?this.isCollapsedOnInit()?i.FoldingType.Collapsed:i.FoldingType.Expanded:Array.isArray(this._children)?i.FoldingType.Empty:i.FoldingType.Leaf},Object.defineProperty(t.prototype,"foldingType",{get:function(){return this.node._foldingType||this._setFoldingType(),this.node._foldingType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"foldingCssClass",{get:function(){return this.getCssClassesFromSettings()||this.foldingType.cssClass},enumerable:!0,configurable:!0}),t.prototype.getCssClassesFromSettings=function(){return this.node._foldingType||this._setFoldingType(),a.get(this.node.settings,this.node._foldingType===i.FoldingType.Collapsed?"cssClasses.collapsed":this.node._foldingType===i.FoldingType.Expanded?"cssClasses.expanded":this.node._foldingType===i.FoldingType.Empty?"cssClasses.empty":"cssClasses.leaf",null)},Object.defineProperty(t.prototype,"nodeTemplate",{get:function(){return this.getTemplateFromSettings()},enumerable:!0,configurable:!0}),t.prototype.getTemplateFromSettings=function(){return this.isLeaf()?a.get(this.node.settings,"templates.leaf",""):a.get(this.node.settings,"templates.node","")},Object.defineProperty(t.prototype,"leftMenuTemplate",{get:function(){return this.hasLeftMenu()?a.get(this.node.settings,"templates.leftMenu","<span></span>"):""},enumerable:!0,configurable:!0}),t.prototype.disableCollapseOnInit=function(){this.node.settings&&(this.node.settings.isCollapsedOnInit=!1)},t.prototype.isCollapsedOnInit=function(){return!!a.get(this.node.settings,"isCollapsedOnInit")},t.prototype.keepNodesInDOM=function(){return a.get(this.node.settings,"keepNodesInDOM")},t.prototype.isNew=function(){return this.node._status===i.TreeStatus.New},Object.defineProperty(t.prototype,"id",{get:function(){return a.get(this.node,"id")},set:function(t){this.node.id=t},enumerable:!0,configurable:!0}),t.prototype.markAsNew=function(){this.node._status=i.TreeStatus.New},t.prototype.isBeingRenamed=function(){return this.node._status===i.TreeStatus.IsBeingRenamed},t.prototype.markAsBeingRenamed=function(){this.node._status=i.TreeStatus.IsBeingRenamed},t.prototype.isModified=function(){return this.node._status===i.TreeStatus.Modified},t.prototype.markAsModified=function(){this.node._status=i.TreeStatus.Modified},t.prototype.toTreeModel=function(){var t=a.defaultsDeep(this.isLeaf()?{}:{children:[]},this.node);return this.children&&this.children.forEach(function(e){t.children.push(e.toTreeModel())}),t},t}()},xbqr:function(t,e,n){"use strict";var a=n("CcnG"),r=n("MdoF"),i=n("lTVp");n("9GXa"),n.d(e,"a",function(){return o}),n.d(e,"b",function(){return s});var o=a["\u0275crt"]({encapsulation:0,styles:[[".warning-panel-alert-icon[_ngcontent-%COMP%]{vertical-align:top;padding-right:15px}.warning-panel-alert-title[_ngcontent-%COMP%]{font-weight:700}"]],data:{}});function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"alert",[["type","warning"]],null,null,null,r.c,r.b)),a["\u0275did"](1,114688,null,0,i.a,[i.b,a.ChangeDetectorRef],{type:[0,"type"]},null),(t()(),a["\u0275eld"](2,0,null,0,9,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[["class","warning-panel-alert-icon"],["rowspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-3x fa-warning alert-warning"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","warning-panel-alert-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](8,null,[" "," "])),(t()(),a["\u0275eld"](9,0,null,null,2,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[["class","warning-panel-alert-text"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],function(t,e){t(e,1,0,"warning")},function(t,e){t(e,8,0,e.component.title)})}},xdbM:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata,i=n("CcnG"),o=n("WyAD"),s=function(){function t(t){this.labels=[],this.options={},this.chartClick=new i.EventEmitter,this.chartHover=new i.EventEmitter,this.initFlag=!1,this.element=t}return t.prototype.ngOnInit=function(){this.ctx=this.element.nativeElement.getContext("2d"),this.cvs=this.element.nativeElement,this.initFlag=!0,(this.data||this.datasets)&&this.refresh()},t.prototype.ngOnChanges=function(t){this.initFlag&&(t.hasOwnProperty("data")||t.hasOwnProperty("datasets")?(this.updateChartData(t.data?t.data.currentValue:t.datasets.currentValue),this.chart.update()):this.refresh())},t.prototype.ngOnDestroy=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.getChartBuilder=function(t){var e=this,n=this.getDatasets(),a=Object.assign({},this.options);return!1===this.legend&&(a.legend={display:!1}),a.hover=a.hover||{},a.hover.onHover||(a.hover.onHover=function(t){t&&!t.length||e.chartHover.emit({active:t})}),a.onClick||(a.onClick=function(t,n){e.chartClick.emit({event:t,active:n})}),new o.Chart(t,{type:this.chartType,data:{labels:this.labels,datasets:n},options:a})},t.prototype.updateChartData=function(t){Array.isArray(t[0].data)?this.chart.data.datasets.forEach(function(e,n){e.data=t[n].data,t[n].label&&(e.label=t[n].label)}):this.chart.data.datasets[0].data=t},t.prototype.getDatasets=function(){var t=this,e=void 0;if((!this.datasets||!this.datasets.length&&this.data&&this.data.length)&&(e=Array.isArray(this.data[0])?this.data.map(function(e,n){return{data:e,label:t.labels[n]||"Label "+n}}):[{data:this.data,label:"Label 0"}]),(this.datasets&&this.datasets.length||e&&e.length)&&(e=(this.datasets||e).map(function(e,n){var a=Object.assign({},e);return t.colors&&t.colors.length?Object.assign(a,t.colors[n]):Object.assign(a,function(t,e,n){return"pie"===t||"doughnut"===t?{backgroundColor:(a=f(n)).map(function(t){return u(t,.6)}),borderColor:a.map(function(){return"#fff"}),pointBackgroundColor:a.map(function(t){return u(t,1)}),pointBorderColor:a.map(function(){return"#fff"}),pointHoverBackgroundColor:a.map(function(t){return u(t,1)}),pointHoverBorderColor:a.map(function(t){return u(t,1)})}:"polarArea"===t?function(t){return{backgroundColor:t.map(function(t){return u(t,.6)}),borderColor:t.map(function(t){return u(t,1)}),hoverBackgroundColor:t.map(function(t){return u(t,.8)}),hoverBorderColor:t.map(function(t){return u(t,1)})}}(f(n)):"line"===t||"radar"===t?function(t){return{backgroundColor:u(t,.4),borderColor:u(t,1),pointBackgroundColor:u(t,1),pointBorderColor:"#fff",pointHoverBackgroundColor:"#fff",pointHoverBorderColor:u(t,.8)}}(d(e)):"bar"===t||"horizontalBar"===t?function(t){return{backgroundColor:u(t,.6),borderColor:u(t,1),hoverBackgroundColor:u(t,.8),hoverBorderColor:u(t,1)}}(d(e)):d(e);var a}(t.chartType,n,a.data.length)),a})),!e)throw new Error("ng-charts configuration error,\n      data or datasets field are required to render char "+this.chartType);return e},t.prototype.refresh=function(){this.ngOnDestroy(),this.chart=this.getChartBuilder(this.ctx)},t.defaultColors=[[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]],t}();function u(t,e){return"rgba("+t.concat(e).join(",")+")"}function l(t,e){return Math.floor(Math.random()*(e-t+1))+t}function c(){return[l(0,255),l(0,255),l(0,255)]}function d(t){return s.defaultColors[t]||c()}function f(t){for(var e=new Array(t),n=0;n<t;n++)e[n]=s.defaultColors[n]||c();return e}a([i.Input(),r("design:type",Array)],s.prototype,"data",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"datasets",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"labels",void 0),a([i.Input(),r("design:type",Object)],s.prototype,"options",void 0),a([i.Input(),r("design:type",String)],s.prototype,"chartType",void 0),a([i.Input(),r("design:type",Array)],s.prototype,"colors",void 0),a([i.Input(),r("design:type",Boolean)],s.prototype,"legend",void 0),a([i.Output(),r("design:type",i.EventEmitter)],s.prototype,"chartClick",void 0),a([i.Output(),r("design:type",i.EventEmitter)],s.prototype,"chartHover",void 0),s=a([i.Directive({selector:"canvas[baseChart]",exportAs:"base-chart"})],s),e.BaseChartDirective=s;var p=function(){return function(){}}();p=a([i.NgModule({declarations:[s],exports:[s],imports:[]})],p),e.ChartsModule=p},xk4V:function(t,e,n){var a=n("4fRq"),r=n("I2ZF");t.exports=function(t,e,n){var i=e&&n||0;"string"==typeof t&&(e="binary"===t?new Array(16):null,t=null);var o=(t=t||{}).random||(t.rng||a)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e)for(var s=0;s<16;++s)e[i+s]=o[s];return e||r(o)}},xlPZ:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("KhEm");function r(t,e){return function(n){var r;if(r="function"==typeof t?t:function(){return t},"function"==typeof e)return n.lift(new i(r,e));var o=Object.create(n,a.b);return o.source=n,o.subjectFactory=r,o}}var i=function(){function t(t,e){this.subjectFactory=t,this.selector=e}return t.prototype.call=function(t,e){var n=this.selector,a=this.subjectFactory(),r=n(a).subscribe(t);return r.add(e.subscribe(a)),r},t}()},xtUU:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("CcnG"),r=n("Tff5"),i=(n("58b6"),n("xZld"));e.TreeComponent=function(){function t(t){this.treeService=t,this.nodeCreated=new a.EventEmitter,this.nodeRemoved=new a.EventEmitter,this.nodeRenamed=new a.EventEmitter,this.nodeSelected=new a.EventEmitter,this.nodeUnselected=new a.EventEmitter,this.nodeMoved=new a.EventEmitter,this.nodeExpanded=new a.EventEmitter,this.nodeCollapsed=new a.EventEmitter,this.loadNextLevel=new a.EventEmitter,this.nodeChecked=new a.EventEmitter,this.nodeUnchecked=new a.EventEmitter,this.menuItemSelected=new a.EventEmitter,this.subscriptions=[]}return t.prototype.ngOnChanges=function(e){this.tree=this.treeModel?new i.Tree(this.treeModel):t.EMPTY_TREE},t.prototype.ngOnInit=function(){var t=this;this.subscriptions.push(this.treeService.nodeRemoved$.subscribe(function(e){t.nodeRemoved.emit(e)})),this.subscriptions.push(this.treeService.nodeRenamed$.subscribe(function(e){t.nodeRenamed.emit(e)})),this.subscriptions.push(this.treeService.nodeCreated$.subscribe(function(e){t.nodeCreated.emit(e)})),this.subscriptions.push(this.treeService.nodeSelected$.subscribe(function(e){t.nodeSelected.emit(e)})),this.subscriptions.push(this.treeService.nodeUnselected$.subscribe(function(e){t.nodeUnselected.emit(e)})),this.subscriptions.push(this.treeService.nodeMoved$.subscribe(function(e){t.nodeMoved.emit(e)})),this.subscriptions.push(this.treeService.nodeExpanded$.subscribe(function(e){t.nodeExpanded.emit(e)})),this.subscriptions.push(this.treeService.nodeCollapsed$.subscribe(function(e){t.nodeCollapsed.emit(e)})),this.subscriptions.push(this.treeService.menuItemSelected$.subscribe(function(e){t.menuItemSelected.emit(e)})),this.subscriptions.push(this.treeService.loadNextLevel$.subscribe(function(e){t.loadNextLevel.emit(e)})),this.subscriptions.push(this.treeService.nodeChecked$.subscribe(function(e){t.nodeChecked.emit(e)})),this.subscriptions.push(this.treeService.nodeUnchecked$.subscribe(function(e){t.nodeUnchecked.emit(e)}))},t.prototype.getController=function(){return this.rootComponent.controller},t.prototype.getControllerByNodeId=function(t){return this.treeService.getController(t)},t.prototype.ngOnDestroy=function(){this.subscriptions.forEach(function(t){return t&&t.unsubscribe()})},t.EMPTY_TREE=new i.Tree({value:""}),t.decorators=[{type:a.Component,args:[{selector:"tree",template:'<tree-internal #rootComponent [tree]="tree" [settings]="settings" [template]="template"></tree-internal>',providers:[r.TreeService]}]}],t.propDecorators={treeModel:[{type:a.Input,args:["tree"]}],settings:[{type:a.Input}],nodeCreated:[{type:a.Output}],nodeRemoved:[{type:a.Output}],nodeRenamed:[{type:a.Output}],nodeSelected:[{type:a.Output}],nodeUnselected:[{type:a.Output}],nodeMoved:[{type:a.Output}],nodeExpanded:[{type:a.Output}],nodeCollapsed:[{type:a.Output}],loadNextLevel:[{type:a.Output}],nodeChecked:[{type:a.Output}],nodeUnchecked:[{type:a.Output}],menuItemSelected:[{type:a.Output}],rootComponent:[{type:a.ViewChild,args:["rootComponent"]}],template:[{type:a.ContentChild,args:[a.TemplateRef]}]},t}()},xtZt:function(t,e,n){"use strict";n.d(e,"c",function(){return f}),n.d(e,"d",function(){return p}),n.d(e,"g",function(){return h}),n.d(e,"b",function(){return d}),n.d(e,"f",function(){return c}),n.d(e,"a",function(){return l}),n.d(e,"e",function(){return g});var a=n("CcnG"),r=n("rpEJ"),i=n("mrSG"),o=n("VnD/"),s=n("lqqz"),u=n("NJnL"),l=function(){return function(){this.autoClose=!0,this.insideClick=!1}}(),c=function(){return function(){var t=this;this.direction="down",this.isOpenChange=new a.EventEmitter,this.isDisabledChange=new a.EventEmitter,this.toggleClick=new a.EventEmitter,this.dropdownMenu=new Promise(function(e){t.resolveDropdownMenu=e})}}(),d=function(){function t(t,e,n,a){var i=this;this._state=t,this.cd=e,this._renderer=n,this._element=a,this.isOpen=!1,this._subscription=t.isOpenChange.subscribe(function(t){i.isOpen=t;var e=i._element.nativeElement.querySelector(".dropdown-menu");e&&!Object(r.d)()&&(i._renderer.addClass(e,"show"),e.classList.contains("dropdown-menu-right")&&(i._renderer.setStyle(e,"left","auto"),i._renderer.setStyle(e,"right","0")),"up"===i.direction&&(i._renderer.setStyle(e,"top","auto"),i._renderer.setStyle(e,"transform","translateY(-101%)"))),i.cd.markForCheck(),i.cd.detectChanges()})}return Object.defineProperty(t.prototype,"direction",{get:function(){return this._state.direction},enumerable:!0,configurable:!0}),t.prototype._contains=function(t){return this._element.nativeElement.contains(t)},t.prototype.ngOnDestroy=function(){this._subscription.unsubscribe()},t}(),f=function(){function t(t,e,n,a,r,i){this._elementRef=t,this._renderer=e,this._viewContainerRef=n,this._cis=a,this._config=r,this._state=i,this._isInlineOpen=!1,this._subscriptions=[],this._isInited=!1,this._state.autoClose=this._config.autoClose,this._state.insideClick=this._config.insideClick,this._dropdown=this._cis.createLoader(this._elementRef,this._viewContainerRef,this._renderer).provide({provide:c,useValue:this._state}),this.onShown=this._dropdown.onShown,this.onHidden=this._dropdown.onHidden,this.isOpenChange=this._state.isOpenChange}return Object.defineProperty(t.prototype,"autoClose",{get:function(){return this._state.autoClose},set:function(t){this._state.autoClose=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"insideClick",{get:function(){return this._state.insideClick},set:function(t){this._state.insideClick=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isDisabled",{get:function(){return this._isDisabled},set:function(t){this._isDisabled=t,this._state.isDisabledChange.emit(t),t&&this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return this._showInline?this._isInlineOpen:this._dropdown.isShown},set:function(t){t?this.show():this.hide()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(r.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"_showInline",{get:function(){return!this.container},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this._isInited||(this._isInited=!0,this._dropdown.listen({outsideClick:!1,triggers:this.triggers,show:function(){return t.show()}}),this._subscriptions.push(this._state.toggleClick.subscribe(function(e){return t.toggle(e)})),this._subscriptions.push(this._state.isDisabledChange.pipe(Object(o.a)(function(t){return t})).subscribe(function(e){return t.hide()})))},t.prototype.show=function(){var t=this;if(!this.isOpen&&!this.isDisabled)return this._showInline?(this._inlinedMenu||this._state.dropdownMenu.then(function(e){t._dropdown.attachInline(e.viewContainer,e.templateRef),t._inlinedMenu=t._dropdown._inlineViewRef,t.addBs4Polyfills()}).catch(),this.addBs4Polyfills(),this._isInlineOpen=!0,this.onShown.emit(!0),void this._state.isOpenChange.emit(!0)):void this._state.dropdownMenu.then(function(e){var n=t.dropup||void 0!==t.dropup&&t.dropup;t._state.direction=n?"up":"down";var a=t.placement||(n?"top left":"bottom left");t._dropdown.attach(d).to(t.container).position({attachment:a}).show({content:e.templateRef,placement:a}),t._state.isOpenChange.emit(!0)}).catch()},t.prototype.hide=function(){this.isOpen&&(this._showInline?(this.removeShowClass(),this.removeDropupStyles(),this._isInlineOpen=!1,this.onHidden.emit(!0)):this._dropdown.hide(),this._state.isOpenChange.emit(!1))},t.prototype.toggle=function(t){return this.isOpen||!t?this.hide():this.show()},t.prototype._contains=function(t){return this._elementRef.nativeElement.contains(t.target)||this._dropdown.instance&&this._dropdown.instance._contains(t.target)},t.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._dropdown.dispose()},t.prototype.addBs4Polyfills=function(){Object(r.d)()||(this.addShowClass(),this.checkRightAlignment(),this.addDropupStyles())},t.prototype.addShowClass=function(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.addClass(this._inlinedMenu.rootNodes[0],"show")},t.prototype.removeShowClass=function(){this._inlinedMenu&&this._inlinedMenu.rootNodes[0]&&this._renderer.removeClass(this._inlinedMenu.rootNodes[0],"show")},t.prototype.checkRightAlignment=function(){if(this._inlinedMenu&&this._inlinedMenu.rootNodes[0]){var 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")}},t.prototype.addDropupStyles=function(){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"))},t.prototype.removeDropupStyles=function(){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"))},t}(),p=function(){return function(t,e,n){t.resolveDropdownMenu({templateRef:n,viewContainer:e})}}(),h=function(){function t(t,e,n){var a=this;this._state=t,this._element=e,this.dropdown=n,this.isDisabled=null,this._subscriptions=[],this._subscriptions.push(this._state.isOpenChange.subscribe(function(t){return a.isOpen=t})),this._subscriptions.push(this._state.isDisabledChange.subscribe(function(t){return a.isDisabled=t||null}))}return t.prototype.onClick=function(){this.isDisabled||this._state.toggleClick.emit(!0)},t.prototype.onDocumentClick=function(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)},t.prototype.onEsc=function(){this._state.autoClose&&this._state.toggleClick.emit(!1)},t.prototype.ngOnDestroy=function(){try{for(var t=Object(i.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a},t}(),g=function(){function t(){}return t.forRoot=function(e){return{ngModule:t,providers:[s.a,u.a,c,{provide:l,useValue:e||{autoClose:!0,insideClick:!1}}]}},t}()},y3By:function(t,e,n){"use strict";n.d(e,"a",function(){return r}),n.d(e,"b",function(){return i});var a=n("+umK");function r(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return i(t)}function i(t){return t?1===t.length?t[0]:function(e){return t.reduce(function(t,e){return e(t)},e)}:a.a}},y9Z7:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.selectRows=function(t,e,n){var a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t},e.selectRowsBetween=function(t,e,n,a,r){for(var i=n<a,o=0;o<e.length;o++){var s;s=i?{start:n,end:a}:{start:a,end:n+1},(i&&o<=a&&o>=n||!i&&o>=a&&o<=n)&&o>=s.start&&o<=s.end&&t.push(e[o])}return t}},y9jh:function(t,e,n){var a;"undefined"!=typeof self&&self,a=function(t,e,n,a,r){return function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.ts")}({"./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./node_modules/sass-loader/lib/loader.js??ref--3-4!./src/components/datatable.component.scss":function(t,e,n){(t.exports=n("./node_modules/css-loader/lib/css-base.js")(!1)).push([t.i,".ngx-datatable {\n  display: block;\n  overflow: hidden;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  position: relative;\n  -webkit-transform: translate3d(0, 0, 0);\n  /**\n   * Vertical Scrolling Adjustments\n   */\n  /**\n   * Horizontal Scrolling Adjustments\n   */\n  /**\n   * Fixed Header Height Adjustments\n   */\n  /**\n   * Fixed row height adjustments\n   */\n  /**\n   * Shared Styles\n   */\n  /**\n   * Header Styles\n   */\n  /**\n   * Body Styles\n   */\n  /**\n   * Footer Styles\n   */ }\n  .ngx-datatable [hidden] {\n    display: none !important; }\n  .ngx-datatable *, .ngx-datatable *:before, .ngx-datatable *:after {\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box; }\n  .ngx-datatable.scroll-vertical .datatable-body {\n    overflow-y: auto; }\n  .ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper {\n    position: absolute; }\n  .ngx-datatable.scroll-horz .datatable-body {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch; }\n  .ngx-datatable.fixed-header .datatable-header .datatable-header-inner {\n    white-space: nowrap; }\n    .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis; }\n  .ngx-datatable.fixed-row .datatable-scroll {\n    white-space: nowrap; }\n    .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row {\n      white-space: nowrap; }\n      .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell {\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis; }\n      .ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell {\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis; }\n  .ngx-datatable .datatable-body-row,\n  .ngx-datatable .datatable-row-center,\n  .ngx-datatable .datatable-header-inner {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: row;\n            flex-direction: row;\n    -ms-flex-flow: row;\n    -o-flex-flow: row;\n    flex-flow: row; }\n  .ngx-datatable .datatable-body-cell,\n  .ngx-datatable .datatable-header-cell {\n    overflow-x: hidden;\n    vertical-align: top;\n    display: inline-block;\n    line-height: 1.625; }\n    .ngx-datatable .datatable-body-cell:focus,\n    .ngx-datatable .datatable-header-cell:focus {\n      outline: none; }\n  .ngx-datatable .datatable-row-left,\n  .ngx-datatable .datatable-row-right {\n    z-index: 9; }\n  .ngx-datatable .datatable-row-left,\n  .ngx-datatable .datatable-row-center,\n  .ngx-datatable .datatable-row-group,\n  .ngx-datatable .datatable-row-right {\n    position: relative; }\n  .ngx-datatable .datatable-header {\n    display: block;\n    overflow: hidden; }\n    .ngx-datatable .datatable-header .datatable-header-inner {\n      -webkit-box-align: stretch;\n          -ms-flex-align: stretch;\n              align-items: stretch;\n      -webkit-align-items: stretch; }\n    .ngx-datatable .datatable-header .datatable-header-cell {\n      position: relative;\n      display: inline-block; }\n      .ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper {\n        cursor: pointer; }\n      .ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper {\n        cursor: move; }\n      .ngx-datatable .datatable-header .datatable-header-cell .sort-btn {\n        line-height: 100%;\n        vertical-align: middle;\n        display: inline-block;\n        cursor: pointer; }\n      .ngx-datatable .datatable-header .datatable-header-cell .resize-handle, .ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable {\n        display: inline-block;\n        position: absolute;\n        right: 0;\n        top: 0;\n        bottom: 0;\n        width: 5px;\n        padding: 0 4px;\n        visibility: hidden; }\n      .ngx-datatable .datatable-header .datatable-header-cell .resize-handle {\n        cursor: ew-resize; }\n      .ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle {\n        visibility: visible; }\n      .ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable {\n        visibility: visible; }\n      .ngx-datatable .datatable-header .datatable-header-cell .targetMarker {\n        position: absolute;\n        top: 0;\n        bottom: 0; }\n        .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft {\n          right: 0; }\n        .ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight {\n          left: 0; }\n      .ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap {\n        height: inherit; }\n  .ngx-datatable .datatable-body {\n    position: relative;\n    z-index: 10;\n    display: block; }\n    .ngx-datatable .datatable-body .datatable-scroll {\n      display: inline-block; }\n    .ngx-datatable .datatable-body .datatable-row-detail {\n      overflow-y: hidden; }\n    .ngx-datatable .datatable-body .datatable-row-wrapper {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-orient: vertical;\n      -webkit-box-direction: normal;\n      -ms-flex-direction: column;\n      flex-direction: column; }\n    .ngx-datatable .datatable-body .datatable-body-row {\n      outline: none; }\n      .ngx-datatable .datatable-body .datatable-body-row > div {\n        display: -webkit-box;\n        display: -ms-flexbox;\n        display: flex; }\n  .ngx-datatable .datatable-footer {\n    display: block;\n    width: 100%; }\n    .ngx-datatable .datatable-footer .datatable-footer-inner {\n      display: -webkit-box;\n      display: -ms-flexbox;\n      display: flex;\n      -webkit-box-align: center;\n          -ms-flex-align: center;\n              align-items: center;\n      width: 100%; }\n    .ngx-datatable .datatable-footer .selected-count .page-count {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 40%;\n              flex: 1 1 40%; }\n    .ngx-datatable .datatable-footer .selected-count .datatable-pager {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 60%;\n              flex: 1 1 60%; }\n    .ngx-datatable .datatable-footer .page-count {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 20%;\n              flex: 1 1 20%; }\n    .ngx-datatable .datatable-footer .datatable-pager {\n      -webkit-box-flex: 1;\n          -ms-flex: 1 1 80%;\n              flex: 1 1 80%;\n      text-align: right; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager,\n      .ngx-datatable .datatable-footer .datatable-pager .pager li {\n        padding: 0;\n        margin: 0;\n        display: inline-block;\n        list-style: none; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li, .ngx-datatable .datatable-footer .datatable-pager .pager li a {\n        outline: none; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li a {\n        cursor: pointer;\n        display: inline-block; }\n      .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {\n        cursor: not-allowed; }\n",""])},"./node_modules/css-loader/lib/css-base.js":function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",a=t[3];if(!a)return n;if(e&&"function"==typeof btoa){var r="/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */",i=a.sources.map(function(t){return"/*# sourceURL="+a.sourceRoot+t+" */"});return[n].concat(i).concat([r]).join("\n")}return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var a={},r=0;r<this.length;r++){var i=this[r][0];"number"==typeof i&&(a[i]=!0)}for(r=0;r<t.length;r++){var o=t[r];"number"==typeof o[0]&&a[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),e.push(o))}},e}},"./node_modules/webpack/buildin/global.js":function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(a){"object"==typeof window&&(n=window)}t.exports=n},"./src/components/body/body-cell.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=n("./src/types/index.ts");n("./src/events.ts"),e.DataTableBodyCellComponent=function(){function t(t,e){this.cd=e,this.activate=new i.EventEmitter,this.treeAction=new i.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}return Object.defineProperty(t.prototype,"group",{get:function(){return this._group},set:function(t){this._group=t,this.cellContext.group=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowHeight",{get:function(){return this._rowHeight},set:function(t){this._rowHeight=t,this.cellContext.rowHeight=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelected",{get:function(){return this._isSelected},set:function(t){this._isSelected=t,this.cellContext.isSelected=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.cellContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.cellContext.rowIndex=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"row",{get:function(){return this._row},set:function(t){this._row=t,this.cellContext.row=t,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.calcSortDir=this.calcSortDir(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"treeStatus",{get:function(){return this._treeStatus},set:function(t){this._treeStatus="collapsed"!==t&&"expanded"!==t&&"loading"!==t&&"disabled"!==t?"collapsed":t,this.cellContext.treeStatus=this._treeStatus,this.checkValueUpdates(),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var 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)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return this.sortDir||(t+=" sort-active"),this.isFocused&&(t+=" active"),this.sortDir===s.SortDirection.asc&&(t+=" sort-asc"),this.sortDir===s.SortDirection.desc&&(t+=" sort-desc"),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){var t=this.rowHeight;return isNaN(t)?t:t+"px"},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.checkValueUpdates()},t.prototype.ngOnDestroy=function(){this.cellTemplate&&this.cellTemplate.clear()},t.prototype.checkValueUpdates=function(){var t="";if(this.row&&this.column){var 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())},t.prototype.onFocus=function(){this.isFocused=!0},t.prototype.onBlur=function(){this.isFocused=!1},t.prototype.onClick=function(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})},t.prototype.onDblClick=function(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})},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===o.Keys.return||e===o.Keys.down||e===o.Keys.up||e===o.Keys.left||e===o.Keys.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}))},t.prototype.onCheckboxChange=function(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"})},t.prototype.calcSortDir=function(t){var e=this;if(t){var n=t.find(function(t){return t.prop===e.column.prop});return n?n.dir:void 0}},t.prototype.stripHtml=function(t){return t.replace?t.replace(/<\/?[^>]+(>|$)/g,""):t},t.prototype.onTreeAction=function(){this.treeAction.emit(this.row)},t.prototype.calcLeftMargin=function(t,e){return t.isTreeColumn?e.level*(null!=t.treeLevelIndent?t.treeLevelIndent:50):0},a([i.Input(),r("design:type",Function)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"group",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowHeight",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"isSelected",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"row",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Input(),r("design:type",String),r("design:paramtypes",[String])],t.prototype,"treeStatus",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild("cellTemplate",{read:i.ViewContainerRef}),r("design:type",i.ViewContainerRef)],t.prototype,"cellTemplate",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"height",null),a([i.HostListener("focus"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onFocus",null),a([i.HostListener("blur"),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",void 0)],t.prototype,"onBlur",null),a([i.HostListener("click",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onClick",null),a([i.HostListener("dblclick",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onDblClick",null),a([i.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([i.Component({selector:"datatable-body-cell",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div class="datatable-body-cell-label"\n      [style.margin-left.px]="calcLeftMargin(column, row)">\n      <label\n        *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="isSelected"\n          (click)="onCheckboxChange($event)"\n        />\n      </label>\n      <ng-container *ngIf="column.isTreeColumn">\n        <button *ngIf="!column.treeToggleTemplate"\n          class="datatable-tree-button"\n          [disabled]="treeStatus===\'disabled\'"\n          (click)="onTreeAction()">\n          <span>\n            <i *ngIf="treeStatus===\'loading\'"\n              class="icon datatable-icon-collapse"></i>\n            <i *ngIf="treeStatus===\'collapsed\'"\n              class="icon datatable-icon-up"></i>\n            <i *ngIf="treeStatus===\'expanded\' ||\n                      treeStatus===\'disabled\'"\n              class="icon datatable-icon-down"></i>\n          </span>\n        </button>\n        <ng-template *ngIf="column.treeToggleTemplate"\n          [ngTemplateOutlet]="column.treeToggleTemplate"\n          [ngTemplateOutletContext]="{ cellContext: cellContext }">\n        </ng-template>\n      </ng-container>\n\n      <span\n        *ngIf="!column.cellTemplate"\n        [title]="sanitizedValue"\n        [innerHTML]="value">\n      </span>\n      <ng-template #cellTemplate\n        *ngIf="column.cellTemplate"\n        [ngTemplateOutlet]="column.cellTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n    </div>\n  '}),r("design:paramtypes",[i.ElementRef,i.ChangeDetectorRef])],t)}()},"./src/components/body/body-group-header-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DatatableGroupHeaderTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-group-header-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/body/body-group-header.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/body/body-group-header-template.directive.ts");e.DatatableGroupHeaderDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandGroup=function(t){this.toggle.emit({type:"group",value:t})},t.prototype.expandAllGroups=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllGroups=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableGroupHeaderTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-group-header"})],t)}()},"./src/components/body/body-row-wrapper.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");n("./src/events.ts"),e.DataTableRowWrapperComponent=function(){function t(t,e){this.cd=t,this.differs=e,this.rowContextmenu=new i.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()}return Object.defineProperty(t.prototype,"rowIndex",{get:function(){return this._rowIndex},set:function(t){this._rowIndex=t,this.rowContext.rowIndex=t,this.groupContext.rowIndex=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"expanded",{get:function(){return this._expanded},set:function(t){this._expanded=t,this.groupContext.expanded=t,this.rowContext.expanded=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.row)&&(this.rowContext.row=this.row,this.groupContext.group=this.row,this.cd.markForCheck())},t.prototype.onContextmenu=function(t){this.rowContextmenu.emit({event:t,row:this.row})},t.prototype.getGroupHeaderStyle=function(){var t={};return t.transform="translate3d("+this.offsetX+"px, 0px, 0px)",t["backface-visibility"]="hidden",t.width=this.innerWidth,t},a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"detailRowHeight",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowIndex",null),a([i.Input(),r("design:type",Boolean),r("design:paramtypes",[Boolean])],t.prototype,"expanded",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-row-wrapper",changeDetection:i.ChangeDetectionStrategy.OnPush,template:'\n    <div \n      *ngIf="groupHeader && groupHeader.template"\n      class="datatable-group-header"\n      [ngStyle]="getGroupHeaderStyle()">\n      <ng-template\n        *ngIf="groupHeader && groupHeader.template"\n        [ngTemplateOutlet]="groupHeader.template"\n        [ngTemplateOutletContext]="groupContext">\n      </ng-template>\n    </div>\n    <ng-content \n      *ngIf="(groupHeader && groupHeader.template && expanded) || \n             (!groupHeader || !groupHeader.template)">\n    </ng-content>\n    <div\n      *ngIf="rowDetail && rowDetail.template && expanded"\n      [style.height.px]="detailRowHeight"\n      class="datatable-row-detail">\n      <ng-template\n        *ngIf="rowDetail && rowDetail.template"\n        [ngTemplateOutlet]="rowDetail.template"\n        [ngTemplateOutletContext]="rowContext">\n      </ng-template>\n    </div>\n  ',host:{class:"datatable-row-wrapper"}}),r("design:paramtypes",[i.ChangeDetectorRef,i.KeyValueDiffers])],t)}()},"./src/components/body/body-row.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/utils/index.ts"),u=n("./src/services/index.ts");n("./src/events.ts"),e.DataTableBodyRowComponent=function(){function t(t,e,n,a){this.differs=t,this.scrollbarHelper=e,this.cd=n,this.treeStatus="collapsed",this.activate=new o.EventEmitter,this.treeAction=new o.EventEmitter,this._groupStyles={left:{},center:{},right:{}},this._element=a.nativeElement,this._rowDiffer=t.find({}).create()}return Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t,this.recalculateColumns(t),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._columns){var e=s.columnsByPin(this._columns);this._columnGroupWidths=s.columnGroupWidths(e,e)}this._innerWidth=t,this.recalculateColumns(),this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.buildStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cssClass",{get:function(){var 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){var e=this.rowClass(this.row);if("string"==typeof e)t+=" "+e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnsTotalWidths",{get:function(){return this._columnGroupWidths.total},enumerable:!0,configurable:!0}),t.prototype.ngDoCheck=function(){this._rowDiffer.diff(this.row)&&this.cd.markForCheck()},t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.buildStylesByGroup=function(){this._groupStyles.left=this.calcStylesByGroup("left"),this._groupStyles.center=this.calcStylesByGroup("center"),this._groupStyles.right=this.calcStylesByGroup("right"),this.cd.markForCheck()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)s.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);s.translateXY(a,-1*(e.total-r-n+this.scrollbarHelper.width),0)}return a},t.prototype.onActivate=function(t,e){t.cellIndex=e,t.rowElement=this._element,this.activate.emit(t)},t.prototype.onKeyDown=function(t){var e=t.keyCode;(e===s.Keys.return||e===s.Keys.down||e===s.Keys.up||e===s.Keys.left||e===s.Keys.right)&&t.target===this._element&&(t.preventDefault(),t.stopPropagation(),this.activate.emit({type:"keydown",event:t,row:this.row,rowElement:this._element}))},t.prototype.onMouseenter=function(t){this.activate.emit({type:"mouseenter",event:t,row:this.row,rowElement:this._element})},t.prototype.recalculateColumns=function(t){void 0===t&&(t=this.columns),this._columns=t;var e=s.columnsByPin(this._columns);this._columnsByPin=s.columnsByPinArr(this._columns),this._columnGroupWidths=s.columnGroupWidths(e,this._columns)},t.prototype.onTreeAction=function(){this.treeAction.emit()},a([o.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"innerWidth",null),a([o.Input(),r("design:type",Boolean)],t.prototype,"expanded",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"row",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"group",void 0),a([o.Input(),r("design:type",Boolean)],t.prototype,"isSelected",void 0),a([o.Input(),r("design:type",Number)],t.prototype,"rowIndex",void 0),a([o.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([o.Input(),r("design:type",String)],t.prototype,"treeStatus",void 0),a([o.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offsetX",null),a([o.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"cssClass",null),a([o.HostBinding("style.height.px"),o.Input(),r("design:type",Number)],t.prototype,"rowHeight",void 0),a([o.HostBinding("style.width.px"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"columnsTotalWidths",null),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"activate",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"treeAction",void 0),a([o.HostListener("keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onKeyDown",null),a([o.HostListener("mouseenter",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseenter",null),a([o.Component({selector:"datatable-body-row",changeDetection:o.ChangeDetectionStrategy.OnPush,template:'\n    <div\n      *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups"\n      class="datatable-row-{{colGroup.type}} datatable-row-group"\n      [ngStyle]="_groupStyles[colGroup.type]">\n      <datatable-body-cell\n        *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn"\n        tabindex="-1"\n        [row]="row"\n        [group]="group"\n        [expanded]="expanded"\n        [isSelected]="isSelected"\n        [rowIndex]="rowIndex"\n        [column]="column"\n        [rowHeight]="rowHeight"\n        [displayCheck]="displayCheck"\n        [treeStatus]="treeStatus"\n        (activate)="onActivate($event, ii)"\n        (treeAction)="onTreeAction()">\n      </datatable-body-cell>\n    </div>\n  '}),i(1,o.SkipSelf()),r("design:paramtypes",[o.KeyValueDiffers,u.ScrollbarHelper,o.ChangeDetectorRef,o.ElementRef])],t)}()},"./src/components/body/body.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=(n("./src/types/index.ts"),n("./src/components/body/scroller.component.ts"));e.DataTableBodyComponent=function(){function t(t){var e=this;this.cd=t,this.selected=[],this.scroll=new i.EventEmitter,this.page=new i.EventEmitter,this.activate=new i.EventEmitter,this.select=new i.EventEmitter,this.detailToggle=new i.EventEmitter,this.rowContextmenu=new i.EventEmitter(!1),this.treeAction=new i.EventEmitter,this.rowHeightsCache=new o.RowHeightCache,this.temp=[],this.offsetY=0,this.indexes={},this.rowIndexes=new Map,this.rowExpansions=new Map,this.getDetailRowHeight=function(t,n){if(!e.rowDetail)return 0;var a=e.rowDetail.rowHeight;return"function"==typeof a?a(t,n):a},this.rowTrackingFn=(function(t,e){var n=this.getRowIndex(e);return this.trackByProp?n+"-"+this.trackByProp:n}).bind(this)}return Object.defineProperty(t.prototype,"pageSize",{get:function(){return this._pageSize},set:function(t){this._pageSize=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,this.rowExpansions.clear(),this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=o.columnsByPin(t);this.columnGroupWidths=o.columnGroupWidths(e,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return this._offset},set:function(t){this._offset=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rowCount",{get:function(){return this._rowCount},set:function(t){this._rowCount=t,this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bodyHeight",{get:function(){return this._bodyHeight},set:function(t){this._bodyHeight=this.scrollbarV?t+"px":"auto",this.recalcLayout()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectEnabled",{get:function(){return!!this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollHeight",{get:function(){if(this.scrollbarV&&this.virtualization&&this.rowCount)return this.rowHeightsCache.query(this.rowCount-1)},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.rowDetail&&(this.listener=this.rowDetail.toggle.subscribe(function(e){var n=e.type,a=e.value;"row"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()})),this.groupHeader&&(this.listener=this.groupHeader.toggle.subscribe(function(e){var n=e.type,a=e.value;"group"===n&&t.toggleRowExpansion(a),"all"===n&&t.toggleAllRows(a),t.updateIndexes(),t.updateRows(),t.cd.markForCheck()}))},t.prototype.ngOnDestroy=function(){this.rowDetail&&this.listener.unsubscribe(),this.groupHeader&&this.listener.unsubscribe()},t.prototype.updateOffsetY=function(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))},t.prototype.onBodyScroll=function(t){var 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()},t.prototype.updatePage=function(t){var 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})},t.prototype.updateRows=function(){var t=this.indexes,e=t.last,n=t.first,a=0,r=[];if(this.rowIndexes.clear(),this.groupedRows)for(;n<e&&n<this.groupedRows.length;)r[a]=this.groupedRows[n],a++,n++;else for(;n<e&&n<this.rowCount;){var i=this.rows[n];i&&(this.rowIndexes.set(i,n),r[a]=i),a++,n++}this.temp=r},t.prototype.getRowHeight=function(t){return"function"==typeof this.rowHeight?this.rowHeight(t):this.rowHeight},t.prototype.getGroupHeight=function(t){var e=0;if(t.value)for(var n=0;n<t.value.length;n++)e+=this.getRowAndDetailHeight(t.value[n]);return e},t.prototype.getRowAndDetailHeight=function(t){var e=this.getRowHeight(t);return 1===this.rowExpansions.get(t)&&(e+=this.getDetailRowHeight(t)),e},t.prototype.getRowsStyles=function(t){var e={};if(this.groupedRows&&(e.width=this.columnGroupWidths.total),this.scrollbarV&&this.virtualization){var n=0;if(this.groupedRows){var a=t[t.length-1];n=a?this.getRowIndex(a):0}else n=this.getRowIndex(t);var r=this.rowHeightsCache.query(n-1);o.translateXY(e,0,r)}return e},t.prototype.getBottomSummaryRowStyles=function(){if(!this.scrollbarV||!this.rows||!this.rows.length)return null;var t={position:"absolute"},e=this.rowHeightsCache.query(this.rows.length-1);return o.translateXY(t,0,e),t},t.prototype.hideIndicator=function(){var t=this;setTimeout(function(){return t.loadingIndicator=!1},500)},t.prototype.updateIndexes=function(){var t=0,e=0;if(this.scrollbarV)if(this.virtualization){var 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}},t.prototype.refreshRowHeightCache=function(){!this.scrollbarV||this.scrollbarV&&!this.virtualization||(this.rowHeightsCache.clearCache(),this.rows&&this.rows.length&&this.rowHeightsCache.initCache({rows:this.rows,rowHeight:this.rowHeight,detailRowHeight:this.getDetailRowHeight,externalVirtual:this.scrollbarV&&this.externalPaging,rowCount:this.rowCount,rowIndexes:this.rowIndexes,rowExpansions:this.rowExpansions}))},t.prototype.getAdjustedViewPortIndex=function(){var t=this.indexes.first;return this.scrollbarV&&this.virtualization&&this.rowHeightsCache.query(t-1)<=this.offsetY?t-1:t},t.prototype.toggleRowExpansion=function(t){var e=this.getAdjustedViewPortIndex(),n=this.rowExpansions.get(t);if(this.scrollbarV&&this.virtualization){var a=this.getDetailRowHeight(t)*(n?-1:1),r=this.getRowIndex(t);this.rowHeightsCache.update(r,a)}n=n^=1,this.rowExpansions.set(t,n),this.detailToggle.emit({rows:[t],currentIndex:e})},t.prototype.toggleAllRows=function(t){this.rowExpansions.clear();for(var e=t?1:0,n=this.getAdjustedViewPortIndex(),a=0,r=this.rows;a<r.length;a++)this.rowExpansions.set(r[a],e);this.scrollbarV&&this.recalcLayout(),this.detailToggle.emit({rows:this.rows,currentIndex:n})},t.prototype.recalcLayout=function(){this.refreshRowHeightCache(),this.updateIndexes(),this.updateRows()},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.stylesByGroup=function(t){var e=this.columnGroupWidths,n=this.offsetX,a={width:e[t]+"px"};if("left"===t)o.translateXY(a,n,0);else if("right"===t){var r=parseInt(this.innerWidth+"",0);o.translateXY(a,-1*(e.total-r-n),0)}return a},t.prototype.getRowExpanded=function(t){if(0===this.rowExpansions.size&&this.groupExpansionDefault)for(var e=0,n=this.groupedRows;e<n.length;e++)this.rowExpansions.set(n[e],1);return 1===this.rowExpansions.get(t)},t.prototype.getRowIndex=function(t){return this.rowIndexes.get(t)||0},t.prototype.onTreeAction=function(t){this.treeAction.emit({row:t})},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"externalPaging",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offsetX",void 0),a([i.Input(),r("design:type",String)],t.prototype,"emptyMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowDetail",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupHeader",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"displayCheck",void 0),a([i.Input(),r("design:type",String)],t.prototype,"trackByProp",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"groupedRows",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"innerWidth",void 0),a([i.Input(),r("design:type",String)],t.prototype,"groupRowsBy",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"virtualization",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"summaryRow",void 0),a([i.Input(),r("design:type",String)],t.prototype,"summaryPosition",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"summaryHeight",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"pageSize",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"rows",null),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"columns",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"offset",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"rowCount",null),a([i.HostBinding("style.width"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"bodyWidth",null),a([i.Input(),i.HostBinding("style.height"),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"bodyHeight",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"detailToggle",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"rowContextmenu",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"treeAction",void 0),a([i.ViewChild(s.ScrollerComponent),r("design:type",s.ScrollerComponent)],t.prototype,"scroller",void 0),a([i.Component({selector:"datatable-body",template:'\n    <datatable-selection\n      #selector\n      [selected]="selected"\n      [rows]="rows"\n      [selectCheck]="selectCheck"\n      [selectEnabled]="selectEnabled"\n      [selectionType]="selectionType"\n      [rowIdentity]="rowIdentity"\n      (select)="select.emit($event)"\n      (activate)="activate.emit($event)">\n      <datatable-progress\n        *ngIf="loadingIndicator">\n      </datatable-progress>\n      <datatable-scroller\n        *ngIf="rows?.length"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [scrollHeight]="scrollHeight"\n        [scrollWidth]="columnGroupWidths?.total"\n        (scroll)="onBodyScroll($event)">\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'top\'"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n        <datatable-row-wrapper\n          [groupedRows]="groupedRows"\n          *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn;"\n          [innerWidth]="innerWidth"\n          [ngStyle]="getRowsStyles(group)"\n          [rowDetail]="rowDetail"\n          [groupHeader]="groupHeader"\n          [offsetX]="offsetX"\n          [detailRowHeight]="getDetailRowHeight(group[i],i)"\n          [row]="group"\n          [expanded]="getRowExpanded(group)"\n          [rowIndex]="getRowIndex(group[i])"\n          (rowContextmenu)="rowContextmenu.emit($event)">\n          <datatable-body-row\n            *ngIf="!groupedRows; else groupedRowsTemplate"\n            tabindex="-1"\n            [isSelected]="selector.getRowSelected(group)"\n            [innerWidth]="innerWidth"\n            [offsetX]="offsetX"\n            [columns]="columns"\n            [rowHeight]="getRowHeight(group)"\n            [row]="group"\n            [rowIndex]="getRowIndex(group)"\n            [expanded]="getRowExpanded(group)"\n            [rowClass]="rowClass"\n            [displayCheck]="displayCheck"\n            [treeStatus]="group.treeStatus"\n            (treeAction)="onTreeAction(group)"\n            (activate)="selector.onActivate($event, indexes.first + i)">\n          </datatable-body-row>\n          <ng-template #groupedRowsTemplate>\n            <datatable-body-row\n              *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn;"\n              tabindex="-1"\n              [isSelected]="selector.getRowSelected(row)"\n              [innerWidth]="innerWidth"\n              [offsetX]="offsetX"\n              [columns]="columns"\n              [rowHeight]="getRowHeight(row)"\n              [row]="row"\n              [group]="group.value"\n              [rowIndex]="getRowIndex(row)"\n              [expanded]="getRowExpanded(row)"\n              [rowClass]="rowClass"\n              (activate)="selector.onActivate($event, i)">\n            </datatable-body-row>\n          </ng-template>\n        </datatable-row-wrapper>\n        <datatable-summary-row\n          *ngIf="summaryRow && summaryPosition === \'bottom\'"\n          [ngStyle]="getBottomSummaryRowStyles()"\n          [rowHeight]="summaryHeight"\n          [offsetX]="offsetX"\n          [innerWidth]="innerWidth"\n          [rows]="rows"\n          [columns]="columns">\n        </datatable-summary-row>\n      </datatable-scroller>\n      <div\n        class="empty-row"\n        *ngIf="!rows?.length && !loadingIndicator"\n        [innerHTML]="emptyMessage">\n      </div>\n    </datatable-selection>\n  ',changeDetection:i.ChangeDetectionStrategy.OnPush,host:{class:"datatable-body"}}),r("design:paramtypes",[i.ChangeDetectorRef])],t)}()},"./src/components/body/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/body/body.component.ts")),a(n("./src/components/body/body-cell.component.ts")),a(n("./src/components/body/body-row.component.ts")),a(n("./src/components/body/progress-bar.component.ts")),a(n("./src/components/body/scroller.component.ts")),a(n("./src/components/body/body-row-wrapper.component.ts")),a(n("./src/components/body/selection.component.ts")),a(n("./src/components/body/body-group-header.directive.ts")),a(n("./src/components/body/body-group-header-template.directive.ts")),a(n("./src/components/body/summary/index.ts"))},"./src/components/body/progress-bar.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core");e.ProgressBarComponent=function(){return a([r.Component({selector:"datatable-progress",template:'\n    <div class="progress-linear" role="progressbar">\n      <div class="container">\n        <div class="bar"></div>\n      </div>\n    </div>\n  ',changeDetection:r.ChangeDetectionStrategy.OnPush})],function(){})}()},"./src/components/body/scroller.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.ScrollerComponent=function(){function t(t,e,n){this.ngZone=t,this.renderer=n,this.scrollbarV=!1,this.scrollbarH=!1,this.scroll=new i.EventEmitter,this.scrollYPos=0,this.scrollXPos=0,this.prevScrollYPos=0,this.prevScrollXPos=0,this.element=e.nativeElement}return t.prototype.ngOnInit=function(){if(this.scrollbarV||this.scrollbarH){var t=this.renderer;this.parentElement=t.parentNode(t.parentNode(this.element)),this.parentElement.addEventListener("scroll",this.onScrolled.bind(this))}},t.prototype.ngOnDestroy=function(){(this.scrollbarV||this.scrollbarH)&&this.parentElement.removeEventListener("scroll",this.onScrolled.bind(this))},t.prototype.setOffset=function(t){this.parentElement&&(this.parentElement.scrollTop=t)},t.prototype.onScrolled=function(t){var e=this,n=t.currentTarget;requestAnimationFrame(function(){e.scrollYPos=n.scrollTop,e.scrollXPos=n.scrollLeft,e.updateOffset()})},t.prototype.updateOffset=function(){var 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},a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarV",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"scrollbarH",void 0),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollHeight",void 0),a([i.HostBinding("style.width.px"),i.Input(),r("design:type",Number)],t.prototype,"scrollWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"scroll",void 0),a([i.Component({selector:"datatable-scroller",template:"\n    <ng-content></ng-content>\n  ",host:{class:"datatable-scroll"},changeDetection:i.ChangeDetectionStrategy.OnPush}),r("design:paramtypes",[i.NgZone,i.ElementRef,i.Renderer2])],t)}()},"./src/components/body/selection.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/utils/index.ts"),s=n("./src/types/index.ts");e.DataTableSelectionComponent=function(){function t(){this.activate=new i.EventEmitter,this.select=new i.EventEmitter}return t.prototype.selectRow=function(t,e,n){var a;if(this.selectEnabled){var r=this.selectionType===s.SelectionType.checkbox,i=this.selectionType===s.SelectionType.multiClick,u=[];u=this.selectionType===s.SelectionType.multi||r||i?t.shiftKey?o.selectRowsBetween([],this.rows,e,this.prevIndex,this.getRowSelectedIdx.bind(this)):o.selectRows(t.ctrlKey||t.metaKey||i||r?this.selected.slice():[],n,this.getRowSelectedIdx.bind(this)):o.selectRows([],n,this.getRowSelectedIdx.bind(this)),"function"==typeof this.selectCheck&&(u=u.filter(this.selectCheck.bind(this))),this.selected.splice(0,this.selected.length),(a=this.selected).push.apply(a,u),this.prevIndex=e,this.select.emit({selected:u})}},t.prototype.onActivate=function(t,e){var n=t.type,a=t.event,r=t.row,i=this.selectionType===s.SelectionType.checkbox;!i&&("click"===n||"dblclick"===n)||i&&"checkbox"===n?this.selectRow(a,e,r):"keydown"===n&&(a.keyCode===o.Keys.return?this.selectRow(a,e,r):this.onKeyboardFocus(t)),this.activate.emit(t)},t.prototype.onKeyboardFocus=function(t){var e=t.event.keyCode;if(e===o.Keys.up||e===o.Keys.down||e===o.Keys.right||e===o.Keys.left){var n=this.selectionType===s.SelectionType.cell;t.cellElement&&n?n&&this.focusCell(t.cellElement,t.rowElement,e,t.cellIndex):this.focusRow(t.rowElement,e)}},t.prototype.focusRow=function(t,e){var n=this.getPrevNextRow(t,e);n&&n.focus()},t.prototype.getPrevNextRow=function(t,e){var n=t.parentElement;if(n){var a=void 0;if(e===o.Keys.up?a=n.previousElementSibling:e===o.Keys.down&&(a=n.nextElementSibling),a&&a.children.length)return a.children[0]}},t.prototype.focusCell=function(t,e,n,a){var r;if(n===o.Keys.left)r=t.previousElementSibling;else if(n===o.Keys.right)r=t.nextElementSibling;else if(n===o.Keys.up||n===o.Keys.down){var i=this.getPrevNextRow(e,n);if(i){var s=i.getElementsByClassName("datatable-body-cell");s.length&&(r=s[a])}}r&&r.focus()},t.prototype.getRowSelected=function(t){return this.getRowSelectedIdx(t,this.selected)>-1},t.prototype.getRowSelectedIdx=function(t,e){var n=this;if(!e||!e.length)return-1;var a=this.rowIdentity(t);return e.findIndex(function(t){return n.rowIdentity(t)===a})},a([i.Input(),r("design:type",Array)],t.prototype,"rows",void 0),a([i.Input(),r("design:type",Array)],t.prototype,"selected",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"selectEnabled",void 0),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"rowIdentity",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectCheck",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"activate",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Component({selector:"datatable-selection",template:"\n    <ng-content></ng-content>\n  ",changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/body/summary/index.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}(n("./src/components/body/summary/summary-row.component.ts"))},"./src/components/body/summary/summary-row.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core");function s(t){var e=t.filter(function(t){return!!t});return e.length?e.some(function(t){return"number"!=typeof t})?null:e.reduce(function(t,e){return t+e}):null}function u(t){return null}e.DataTableSummaryRowComponent=function(){function t(){this.summaryRow={}}return t.prototype.ngOnChanges=function(){this.columns&&this.rows&&(this.updateInternalColumns(),this.updateValues())},t.prototype.updateInternalColumns=function(){this._internalColumns=this.columns.map(function(t){return a({},t,{cellTemplate:t.summaryTemplate})})},t.prototype.updateValues=function(){var t=this;this.summaryRow={},this.columns.filter(function(t){return!t.summaryTemplate}).forEach(function(e){var n=t.rows.map(function(t){return t[e.prop]}),a=t.getSummaryFunction(e);t.summaryRow[e.prop]=e.pipe?e.pipe.transform(a(n)):a(n)})},t.prototype.getSummaryFunction=function(t){return void 0===t.summaryFunc?s:null===t.summaryFunc?u:t.summaryFunc},r([o.Input(),i("design:type",Array)],t.prototype,"rows",void 0),r([o.Input(),i("design:type",Array)],t.prototype,"columns",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"rowHeight",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"offsetX",void 0),r([o.Input(),i("design:type",Number)],t.prototype,"innerWidth",void 0),r([o.Component({selector:"datatable-summary-row",template:'\n  <datatable-body-row\n    *ngIf="summaryRow && _internalColumns"\n    tabindex="-1"\n    [innerWidth]="innerWidth"\n    [offsetX]="offsetX"\n    [columns]="_internalColumns"\n    [rowHeight]="rowHeight"\n    [row]="summaryRow"\n    [rowIndex]="-1">\n  </datatable-body-row>\n  ',host:{class:"datatable-summary-row"}})],t)}()},"./src/components/columns/column-cell.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnCellDirective=function(){return a([i.Directive({selector:"[ngx-datatable-cell-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/columns/column-header.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnHeaderDirective=function(){return a([i.Directive({selector:"[ngx-datatable-header-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/columns/column.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/columns/column-header.directive.ts"),s=n("./src/components/columns/column-cell.directive.ts"),u=n("./src/components/columns/tree.directive.ts"),l=n("./src/services/column-changes.service.ts");e.DataTableColumnDirective=function(){function t(t){this.columnChangesService=t,this.isFirstChange=!0}return t.prototype.ngOnChanges=function(){this.isFirstChange?this.isFirstChange=!1:this.columnChangesService.onInputChange()},a([i.Input(),r("design:type",String)],t.prototype,"name",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"prop",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenLeft",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"frozenRight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"flexGrow",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"comparator",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pipe",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"sortable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"draggable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"canAutoResize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"width",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"checkboxable",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"headerCheckboxable",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"headerClass",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"cellClass",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTreeColumn",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"treeLevelIndent",void 0),a([i.Input(),r("design:type",Function)],t.prototype,"summaryFunc",void 0),a([i.Input(),r("design:type",i.TemplateRef)],t.prototype,"summaryTemplate",void 0),a([i.Input(),i.ContentChild(s.DataTableColumnCellDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"cellTemplate",void 0),a([i.Input(),i.ContentChild(o.DataTableColumnHeaderDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"headerTemplate",void 0),a([i.Input(),i.ContentChild(u.DataTableColumnCellTreeToggle,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"treeToggleTemplate",void 0),a([i.Directive({selector:"ngx-datatable-column"}),r("design:paramtypes",[l.ColumnChangesService])],t)}()},"./src/components/columns/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/columns/column.directive.ts")),a(n("./src/components/columns/column-header.directive.ts")),a(n("./src/components/columns/column-cell.directive.ts")),a(n("./src/components/columns/tree.directive.ts"))},"./src/components/columns/tree.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableColumnCellTreeToggle=function(){return a([i.Directive({selector:"[ngx-datatable-tree-toggle]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/datatable.component.scss":function(t,e,n){var a=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./node_modules/sass-loader/lib/loader.js??ref--3-4!./src/components/datatable.component.scss");t.exports="string"==typeof a?a:a.toString()},"./src/components/datatable.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},o=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var s=n("@angular/core"),u=n("./src/utils/index.ts"),l=n("./src/services/index.ts"),c=n("./src/types/index.ts"),d=n("./src/components/body/index.ts"),f=n("./src/components/body/body-group-header.directive.ts"),p=n("./src/components/columns/index.ts"),h=n("./src/components/row-detail/index.ts"),g=n("./src/components/footer/index.ts"),m=n("./src/components/header/index.ts"),b=n("rxjs");e.DatatableComponent=function(){function t(t,e,n,a,r,i){this.scrollbarHelper=t,this.dimensionsHelper=e,this.cd=n,this.columnChangesService=i,this.selected=[],this.scrollbarV=!1,this.scrollbarH=!1,this.rowHeight=30,this.columnMode=c.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=c.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.rowIdentity=function(t){return t},this.groupExpansionDefault=!1,this.selectAllRowsOnPage=!1,this.virtualization=!0,this.summaryRow=!1,this.summaryHeight=30,this.summaryPosition="top",this.scroll=new s.EventEmitter,this.activate=new s.EventEmitter,this.select=new s.EventEmitter,this.sort=new s.EventEmitter,this.page=new s.EventEmitter,this.reorder=new s.EventEmitter,this.resize=new s.EventEmitter,this.tableContextmenu=new s.EventEmitter(!1),this.treeAction=new s.EventEmitter,this.rowCount=0,this._offsetX=new b.BehaviorSubject(0),this._count=0,this._offset=0,this._subscriptions=[],this.element=a.nativeElement,this.rowDiffer=r.find({}).create()}return Object.defineProperty(t.prototype,"rows",{get:function(){return this._rows},set:function(t){this._rows=t,t&&(this._internalRows=t.slice()),this.externalSorting||this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.recalculate(),this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"groupRowsBy",{get:function(){return this._groupRowsBy},set:function(t){t&&(this._groupRowsBy=t,this._rows&&this._groupRowsBy&&(this.groupedRows=this.groupArrayBy(this._rows,this._groupRowsBy)))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){t&&(this._internalColumns=t.slice(),u.setColumnDefaults(this._internalColumns),this.recalculateColumns()),this._columns=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"limit",{get:function(){return this._limit},set:function(t){this._limit=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.recalculate()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offset",{get:function(){return Math.max(Math.min(this._offset,Math.ceil(this.rowCount/this.pageSize)-1),0)},set:function(t){this._offset=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedHeader",{get:function(){var t=this.headerHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isFixedRow",{get:function(){var t=this.rowHeight;return"string"!=typeof t||"auto"!==t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVertScroll",{get:function(){return this.scrollbarV},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVirtualized",{get:function(){return this.virtualization},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isHorScroll",{get:function(){return this.scrollbarH},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSelectable",{get:function(){return void 0!==this.selectionType},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxSelection",{get:function(){return this.selectionType===c.SelectionType.checkbox},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCellSelection",{get:function(){return this.selectionType===c.SelectionType.cell},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isSingleSelection",{get:function(){return this.selectionType===c.SelectionType.single},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiSelection",{get:function(){return this.selectionType===c.SelectionType.multi},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isMultiClickSelection",{get:function(){return this.selectionType===c.SelectionType.multiClick},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnTemplates",{get:function(){return this._columnTemplates},set:function(t){this._columnTemplates=t,this.translateColumns(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){var t=this.rows&&this.selected&&this.selected.length===this.rows.length;if(this.selectAllRowsOnPage){var e=this.bodyComponent.indexes;t=this.selected.length===e.last-e.first}return this.selected&&this.rows&&0!==this.rows.length&&t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.recalculate()},t.prototype.ngAfterViewInit=function(){var t=this;this.externalSorting||this.sortInternalRows(),"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(function(){t.recalculate(),t.externalPaging&&t.scrollbarV&&t.page.emit({count:t.count,pageSize:t.pageSize,limit:t.limit,offset:0})})},t.prototype.ngAfterContentInit=function(){var t=this;this.columnTemplates.changes.subscribe(function(e){return t.translateColumns(e)}),this.listenForColumnInputChanges()},t.prototype.translateColumns=function(t){if(t){var e=t.toArray();e.length&&(this._internalColumns=u.translateTemplates(e),u.setColumnDefaults(this._internalColumns),this.recalculateColumns(),this.sortInternalRows(),this.cd.markForCheck())}},t.prototype.groupArrayBy=function(t,e){var n=new Map;return t.forEach(function(t){var a=t[e];n.has(a)?n.get(a).push(t):n.set(a,[t])}),Array.from(n,function(t){return{key:t[0],value:t[1]}})},t.prototype.ngDoCheck=function(){this.rowDiffer.diff(this.rows)&&(this.externalSorting?this._internalRows=this.rows.slice():this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.recalculatePages(),this.cd.markForCheck())},t.prototype.recalculate=function(){this.recalculateDims(),this.recalculateColumns()},t.prototype.onWindowResize=function(){this.recalculate()},t.prototype.recalculateColumns=function(t,e,n){if(void 0===t&&(t=this._internalColumns),void 0===e&&(e=-1),void 0===n&&(n=this.scrollbarH),t){var a=this._innerWidth;return this.scrollbarV&&(a-=this.scrollbarHelper.width),this.columnMode===c.ColumnMode.force?u.forceFillColumnWidths(t,a,e,n):this.columnMode===c.ColumnMode.flex&&u.adjustColumnWidths(t,a),t}},t.prototype.recalculateDims=function(){var t=this.dimensionsHelper.getDimensions(this.element);if(this._innerWidth=Math.floor(t.width),this.scrollbarV){var e=t.height;this.headerHeight&&(e-=this.headerHeight),this.footerHeight&&(e-=this.footerHeight),this.bodyHeight=e}this.recalculatePages()},t.prototype.recalculatePages=function(){this.pageSize=this.calcPageSize(),this.rowCount=this.calcRowCount()},t.prototype.onBodyPage=function(t){this.externalPaging&&!this.virtualization||(this.offset=t.offset,this.page.emit({count:this.count,pageSize:this.pageSize,limit:this.limit,offset:this.offset}))},t.prototype.onBodyScroll=function(t){this._offsetX.next(t.offsetX),this.scroll.emit(t),this.cd.detectChanges()},t.prototype.onFooterPage=function(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}))},t.prototype.calcPageSize=function(t){if(void 0===t&&(t=this.rows),this.scrollbarV&&this.virtualization){var e=Math.ceil(this.bodyHeight/this.rowHeight);return Math.max(e,0)}return void 0!==this.limit?this.limit:t?t.length:0},t.prototype.calcRowCount=function(t){return void 0===t&&(t=this.rows),this.externalPaging?this.count:t?this.groupedRows?this.groupedRows.length:null!=this.treeFromRelation&&null!=this.treeToRelation?this._internalRows.length:t.length:0},t.prototype.onColumnContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:c.ContextmenuType.header,content:t.column})},t.prototype.onRowContextmenu=function(t){this.tableContextmenu.emit({event:t.event,type:c.ContextmenuType.body,content:t.row})},t.prototype.onColumnResize=function(t){var e=t.column,n=t.newValue;if(void 0!==e){var r,i=this._internalColumns.map(function(t,i){return(t=a({},t)).$$id===e.$$id&&(r=i,t.width=n,t.$$oldWidth=n),t});this.recalculateColumns(i,r),this._internalColumns=i,this.resize.emit({column:e,newValue:n})}},t.prototype.onColumnReorder=function(t){var e=t.column,n=t.newValue,r=t.prevValue,i=this._internalColumns.map(function(t){return a({},t)});if(this.swapColumns){var o=i[n];i[n]=e,i[r]=o}else if(n>r){for(var s=i[r],u=r;u<n;u++)i[u]=i[u+1];i[n]=s}else{for(s=i[r],u=r;u>n;u--)i[u]=i[u-1];i[n]=s}this._internalColumns=i,this.reorder.emit({column:e,newValue:n,prevValue:r})},t.prototype.onColumnSort=function(t){this.selectAllRowsOnPage&&(this.selected=[],this.select.emit({selected:this.selected})),this.sorts=t.sorts,!1===this.externalSorting&&this.sortInternalRows(),this._internalRows=u.groupRowsByParents(this._internalRows,u.optionalGetterForProp(this.treeFromRelation),u.optionalGetterForProp(this.treeToRelation)),this.offset=0,this.bodyComponent.updateOffsetY(this.offset),this.sort.emit(t)},t.prototype.onHeaderSelect=function(t){var e,n;if(this.selectAllRowsOnPage){var a=this.bodyComponent.indexes.first,r=this.bodyComponent.indexes.last,i=this.selected.length===r-a;this.selected=[],i||(e=this.selected).push.apply(e,this._internalRows.slice(a,r))}else i=this.selected.length===this.rows.length,this.selected=[],i||(n=this.selected).push.apply(n,this.rows);this.select.emit({selected:this.selected})},t.prototype.onBodySelect=function(t){this.select.emit(t)},t.prototype.onTreeAction=function(t){var e=this,n=t.row,a=this._rows.findIndex(function(n){return n[e.treeToRelation]===t.row[e.treeToRelation]});this.treeAction.emit({row:n,rowIndex:a})},t.prototype.ngOnDestroy=function(){this._subscriptions.forEach(function(t){return t.unsubscribe()})},t.prototype.listenForColumnInputChanges=function(){var t=this;this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(function(){t.columnTemplates&&t.columnTemplates.notifyOnChanges()}))},t.prototype.sortInternalRows=function(){this._internalRows=u.sortRows(this._internalRows,this._internalColumns,this.sorts)},r([s.Input(),i("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),r([s.Input(),i("design:type",Object),i("design:paramtypes",[Object])],t.prototype,"rows",null),r([s.Input(),i("design:type",String),i("design:paramtypes",[String])],t.prototype,"groupRowsBy",null),r([s.Input(),i("design:type",Array)],t.prototype,"groupedRows",void 0),r([s.Input(),i("design:type",Array),i("design:paramtypes",[Array])],t.prototype,"columns",null),r([s.Input(),i("design:type",Array)],t.prototype,"selected",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"scrollbarV",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"scrollbarH",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"rowHeight",void 0),r([s.Input(),i("design:type",String)],t.prototype,"columnMode",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"headerHeight",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"footerHeight",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"externalPaging",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"externalSorting",void 0),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"limit",null),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"count",null),r([s.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"offset",null),r([s.Input(),i("design:type",Boolean)],t.prototype,"loadingIndicator",void 0),r([s.Input(),i("design:type",String)],t.prototype,"selectionType",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"reorderable",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"swapColumns",void 0),r([s.Input(),i("design:type",String)],t.prototype,"sortType",void 0),r([s.Input(),i("design:type",Array)],t.prototype,"sorts",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"cssClasses",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"messages",void 0),r([s.Input(),i("design:type",Function)],t.prototype,"rowIdentity",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"rowClass",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"selectCheck",void 0),r([s.Input(),i("design:type",Function)],t.prototype,"displayCheck",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"groupExpansionDefault",void 0),r([s.Input(),i("design:type",String)],t.prototype,"trackByProp",void 0),r([s.Input(),i("design:type",Object)],t.prototype,"selectAllRowsOnPage",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"virtualization",void 0),r([s.Input(),i("design:type",String)],t.prototype,"treeFromRelation",void 0),r([s.Input(),i("design:type",String)],t.prototype,"treeToRelation",void 0),r([s.Input(),i("design:type",Boolean)],t.prototype,"summaryRow",void 0),r([s.Input(),i("design:type",Number)],t.prototype,"summaryHeight",void 0),r([s.Input(),i("design:type",String)],t.prototype,"summaryPosition",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"scroll",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"activate",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"select",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"sort",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"page",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"reorder",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"resize",void 0),r([s.Output(),i("design:type",Object)],t.prototype,"tableContextmenu",void 0),r([s.Output(),i("design:type",s.EventEmitter)],t.prototype,"treeAction",void 0),r([s.HostBinding("class.fixed-header"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isFixedHeader",null),r([s.HostBinding("class.fixed-row"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isFixedRow",null),r([s.HostBinding("class.scroll-vertical"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isVertScroll",null),r([s.HostBinding("class.virtualized"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isVirtualized",null),r([s.HostBinding("class.scroll-horz"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isHorScroll",null),r([s.HostBinding("class.selectable"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isSelectable",null),r([s.HostBinding("class.checkbox-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isCheckboxSelection",null),r([s.HostBinding("class.cell-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isCellSelection",null),r([s.HostBinding("class.single-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isSingleSelection",null),r([s.HostBinding("class.multi-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isMultiSelection",null),r([s.HostBinding("class.multi-click-selection"),i("design:type",Boolean),i("design:paramtypes",[])],t.prototype,"isMultiClickSelection",null),r([s.ContentChildren(p.DataTableColumnDirective),i("design:type",s.QueryList),i("design:paramtypes",[s.QueryList])],t.prototype,"columnTemplates",null),r([s.ContentChild(h.DatatableRowDetailDirective),i("design:type",h.DatatableRowDetailDirective)],t.prototype,"rowDetail",void 0),r([s.ContentChild(f.DatatableGroupHeaderDirective),i("design:type",f.DatatableGroupHeaderDirective)],t.prototype,"groupHeader",void 0),r([s.ContentChild(g.DatatableFooterDirective),i("design:type",g.DatatableFooterDirective)],t.prototype,"footer",void 0),r([s.ViewChild(d.DataTableBodyComponent),i("design:type",d.DataTableBodyComponent)],t.prototype,"bodyComponent",void 0),r([s.ViewChild(m.DataTableHeaderComponent),i("design:type",m.DataTableHeaderComponent)],t.prototype,"headerComponent",void 0),r([s.HostListener("window:resize"),u.throttleable(5),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],t.prototype,"onWindowResize",null),r([s.Component({selector:"ngx-datatable",template:'\n    <div\n      visibilityObserver\n      (visible)="recalculate()">\n      <datatable-header\n        *ngIf="headerHeight"\n        [sorts]="sorts"\n        [sortType]="sortType"\n        [scrollbarH]="scrollbarH"\n        [innerWidth]="_innerWidth"\n        [offsetX]="_offsetX | async"\n        [dealsWithGroup]="groupedRows"\n        [columns]="_internalColumns"\n        [headerHeight]="headerHeight"\n        [reorderable]="reorderable"\n        [targetMarkerTemplate]="targetMarkerTemplate"\n        [sortAscendingIcon]="cssClasses.sortAscending"\n        [sortDescendingIcon]="cssClasses.sortDescending"\n        [allRowsSelected]="allRowsSelected"\n        [selectionType]="selectionType"\n        (sort)="onColumnSort($event)"\n        (resize)="onColumnResize($event)"\n        (reorder)="onColumnReorder($event)"\n        (select)="onHeaderSelect($event)"\n        (columnContextmenu)="onColumnContextmenu($event)">\n      </datatable-header>\n      <datatable-body\n        [groupRowsBy]="groupRowsBy"\n        [groupedRows]="groupedRows"\n        [rows]="_internalRows"\n        [groupExpansionDefault]="groupExpansionDefault"\n        [scrollbarV]="scrollbarV"\n        [scrollbarH]="scrollbarH"\n        [virtualization]="virtualization"\n        [loadingIndicator]="loadingIndicator"\n        [externalPaging]="externalPaging"\n        [rowHeight]="rowHeight"\n        [rowCount]="rowCount"\n        [offset]="offset"\n        [trackByProp]="trackByProp"\n        [columns]="_internalColumns"\n        [pageSize]="pageSize"\n        [offsetX]="_offsetX | async"\n        [rowDetail]="rowDetail"\n        [groupHeader]="groupHeader"\n        [selected]="selected"\n        [innerWidth]="_innerWidth"\n        [bodyHeight]="bodyHeight"\n        [selectionType]="selectionType"\n        [emptyMessage]="messages.emptyMessage"\n        [rowIdentity]="rowIdentity"\n        [rowClass]="rowClass"\n        [selectCheck]="selectCheck"\n        [displayCheck]="displayCheck"\n        [summaryRow]="summaryRow"\n        [summaryHeight]="summaryHeight"\n        [summaryPosition]="summaryPosition"\n        (page)="onBodyPage($event)"\n        (activate)="activate.emit($event)"\n        (rowContextmenu)="onRowContextmenu($event)"\n        (select)="onBodySelect($event)"\n        (scroll)="onBodyScroll($event)"\n        (treeAction)="onTreeAction($event)">\n      </datatable-body>\n      <datatable-footer\n        *ngIf="footerHeight"\n        [rowCount]="rowCount"\n        [pageSize]="pageSize"\n        [offset]="offset"\n        [footerHeight]="footerHeight"\n        [footerTemplate]="footer"\n        [totalMessage]="messages.totalMessage"\n        [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n        [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n        [pagerPreviousIcon]="cssClasses.pagerPrevious"\n        [selectedCount]="selected.length"\n        [selectedMessage]="!!selectionType && messages.selectedMessage"\n        [pagerNextIcon]="cssClasses.pagerNext"\n        (page)="onFooterPage($event)">\n      </datatable-footer>\n    </div>\n  ',changeDetection:s.ChangeDetectionStrategy.OnPush,encapsulation:s.ViewEncapsulation.None,styles:[n("./src/components/datatable.component.scss")],host:{class:"ngx-datatable"}}),o(0,s.SkipSelf()),o(1,s.SkipSelf()),i("design:paramtypes",[l.ScrollbarHelper,l.DimensionsHelper,s.ChangeDetectorRef,s.ElementRef,s.KeyValueDiffers,l.ColumnChangesService])],t)}()},"./src/components/footer/footer-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTableFooterTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-footer-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/footer/footer.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/footer/footer.directive.ts");e.DataTableFooterComponent=function(){function t(){this.selectedCount=0,this.page=new i.EventEmitter}return Object.defineProperty(t.prototype,"isVisible",{get:function(){return this.rowCount/this.pageSize>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"curPage",{get:function(){return this.offset+1},enumerable:!0,configurable:!0}),a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"rowCount",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"pageSize",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"offset",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",o.DatatableFooterDirective)],t.prototype,"footerTemplate",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"selectedCount",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"page",void 0),a([i.Component({selector:"datatable-footer",template:'\n    <div\n      class="datatable-footer-inner"\n      [ngClass]="{\'selected-count\': selectedMessage}"\n      [style.height.px]="footerHeight">\n      <ng-template\n        *ngIf="footerTemplate"\n        [ngTemplateOutlet]="footerTemplate.template"\n        [ngTemplateOutletContext]="{ \n          rowCount: rowCount, \n          pageSize: pageSize, \n          selectedCount: selectedCount,\n          curPage: curPage,\n          offset: offset\n        }">\n      </ng-template>\n      <div class="page-count" *ngIf="!footerTemplate">\n        <span *ngIf="selectedMessage">\n          {{selectedCount?.toLocaleString()}} {{selectedMessage}} / \n        </span>\n        {{rowCount?.toLocaleString()}} {{totalMessage}}\n      </div>\n      <datatable-pager *ngIf="!footerTemplate"\n        [pagerLeftArrowIcon]="pagerLeftArrowIcon"\n        [pagerRightArrowIcon]="pagerRightArrowIcon"\n        [pagerPreviousIcon]="pagerPreviousIcon"\n        [pagerNextIcon]="pagerNextIcon"\n        [page]="curPage"\n        [size]="pageSize"\n        [count]="rowCount"\n        [hidden]="!isVisible"\n        (change)="page.emit($event)">\n      </datatable-pager>\n    </div>\n  ',host:{class:"datatable-footer"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/footer/footer.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/footer/footer-template.directive.ts");e.DatatableFooterDirective=function(){function t(){}return a([i.Input(),r("design:type",Number)],t.prototype,"footerHeight",void 0),a([i.Input(),r("design:type",String)],t.prototype,"totalMessage",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"selectedMessage",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),i.ContentChild(o.DataTableFooterTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Directive({selector:"ngx-datatable-footer"})],t)}()},"./src/components/footer/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/footer/footer.component.ts")),a(n("./src/components/footer/pager.component.ts")),a(n("./src/components/footer/footer.directive.ts")),a(n("./src/components/footer/footer-template.directive.ts"))},"./src/components/footer/pager.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DataTablePagerComponent=function(){function t(){this.change=new i.EventEmitter,this._count=0,this._page=1,this._size=0}return Object.defineProperty(t.prototype,"size",{get:function(){return this._size},set:function(t){this._size=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this._count},set:function(t){this._count=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"page",{get:function(){return this._page},set:function(t){this._page=t,this.pages=this.calcPages()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"totalPages",{get:function(){var t=this.size<1?1:Math.ceil(this.count/this.size);return Math.max(t||0,1)},enumerable:!0,configurable:!0}),t.prototype.canPrevious=function(){return this.page>1},t.prototype.canNext=function(){return this.page<this.totalPages},t.prototype.prevPage=function(){this.selectPage(this.page-1)},t.prototype.nextPage=function(){this.selectPage(this.page+1)},t.prototype.selectPage=function(t){t>0&&t<=this.totalPages&&t!==this.page&&(this.page=t,this.change.emit({page:t}))},t.prototype.calcPages=function(t){var e=[],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(var r=n;r<=a;r++)e.push({number:r,text:r});return e},a([i.Input(),r("design:type",String)],t.prototype,"pagerLeftArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerRightArrowIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerPreviousIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"pagerNextIcon",void 0),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"size",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"count",null),a([i.Input(),r("design:type",Number),r("design:paramtypes",[Number])],t.prototype,"page",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"change",void 0),a([i.Component({selector:"datatable-pager",template:'\n    <ul class="pager">\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to first page"\n          href="javascript:void(0)"\n          (click)="selectPage(1)">\n          <i class="{{pagerPreviousIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canPrevious()">\n        <a\n          role="button"\n          aria-label="go to previous page"\n          href="javascript:void(0)"\n          (click)="prevPage()">\n          <i class="{{pagerLeftArrowIcon}}"></i>\n        </a>\n      </li>\n      <li\n        role="button"\n        [attr.aria-label]="\'page \' + pg.number"\n        class="pages"\n        *ngFor="let pg of pages"\n        [class.active]="pg.number === page">\n        <a\n          href="javascript:void(0)"\n          (click)="selectPage(pg.number)">\n          {{pg.text}}\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to next page"\n          href="javascript:void(0)"\n          (click)="nextPage()">\n          <i class="{{pagerRightArrowIcon}}"></i>\n        </a>\n      </li>\n      <li [class.disabled]="!canNext()">\n        <a\n          role="button"\n          aria-label="go to last page"\n          href="javascript:void(0)"\n          (click)="selectPage(totalPages)">\n          <i class="{{pagerNextIcon}}"></i>\n        </a>\n      </li>\n    </ul>\n  ',host:{class:"datatable-pager"},changeDetection:i.ChangeDetectionStrategy.OnPush})],t)}()},"./src/components/header/header-cell.component.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/types/index.ts"),s=n("./src/utils/index.ts");n("./src/events.ts"),e.DataTableHeaderCellComponent=function(){function t(t){this.cd=t,this.sort=new i.EventEmitter,this.select=new i.EventEmitter,this.columnContextmenu=new i.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}}return Object.defineProperty(t.prototype,"allRowsSelected",{get:function(){return this._allRowsSelected},set:function(t){this._allRowsSelected=t,this.cellContext.allRowsSelected=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"column",{get:function(){return this._column},set:function(t){this._column=t,this.cellContext.column=t,this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sorts",{get:function(){return this._sorts},set:function(t){this._sorts=t,this.sortDir=this.calcSortDir(t),this.cellContext.sortDir=this.sortDir,this.sortClass=this.calcSortClass(this.sortDir),this.cd.markForCheck()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columnCssClasses",{get:function(){var 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){var e=this.column.headerClass({column:this.column});if("string"==typeof e)t+=e;else if("object"==typeof e)for(var n=0,a=Object.keys(e);n<a.length;n++){var r=a[n];!0===e[r]&&(t+=" "+r)}}var i=this.sortDir;return i&&(t+=" sort-active sort-"+i),t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return void 0===this.column.headerTemplate?this.column.name:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"minWidth",{get:function(){return this.column.minWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxWidth",{get:function(){return this.column.maxWidth},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.column.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isCheckboxable",{get:function(){return this.column.checkboxable&&this.column.headerCheckboxable&&this.selectionType===o.SelectionType.checkbox},enumerable:!0,configurable:!0}),t.prototype.onContextmenu=function(t){this.columnContextmenu.emit({event:t,column:this.column})},t.prototype.calcSortDir=function(t){var e=this;if(t&&this.column){var n=t.find(function(t){return t.prop===e.column.prop});if(n)return n.dir}},t.prototype.onSort=function(){if(this.column.sortable){var t=s.nextSortDir(this.sortType,this.sortDir);this.sort.emit({column:this.column,prevValue:this.sortDir,newValue:t})}},t.prototype.calcSortClass=function(t){return t===o.SortDirection.asc?"sort-btn sort-asc "+this.sortAscendingIcon:t===o.SortDirection.desc?"sort-btn sort-desc "+this.sortDescendingIcon:"sort-btn"},a([i.Input(),r("design:type",String)],t.prototype,"sortType",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortAscendingIcon",void 0),a([i.Input(),r("design:type",String)],t.prototype,"sortDescendingIcon",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"isTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"targetMarkerContext",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"allRowsSelected",null),a([i.Input(),r("design:type",String)],t.prototype,"selectionType",void 0),a([i.Input(),r("design:type",Object),r("design:paramtypes",[Object])],t.prototype,"column",null),a([i.HostBinding("style.height.px"),i.Input(),r("design:type",Number)],t.prototype,"headerHeight",void 0),a([i.Input(),r("design:type",Array),r("design:paramtypes",[Array])],t.prototype,"sorts",null),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"sort",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"select",void 0),a([i.Output(),r("design:type",Object)],t.prototype,"columnContextmenu",void 0),a([i.HostBinding("class"),r("design:type",Object),r("design:paramtypes",[])],t.prototype,"columnCssClasses",null),a([i.HostBinding("attr.title"),r("design:type",String),r("design:paramtypes",[])],t.prototype,"name",null),a([i.HostBinding("style.minWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"minWidth",null),a([i.HostBinding("style.maxWidth.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"maxWidth",null),a([i.HostBinding("style.width.px"),r("design:type",Number),r("design:paramtypes",[])],t.prototype,"width",null),a([i.HostListener("contextmenu",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onContextmenu",null),a([i.Component({selector:"datatable-header-cell",template:'\n    <div class="datatable-header-cell-template-wrap">\n      <ng-template\n        *ngIf="isTarget"\n        [ngTemplateOutlet]="targetMarkerTemplate"\n        [ngTemplateOutletContext]="targetMarkerContext">\n      </ng-template>\n      <label\n        *ngIf="isCheckboxable"\n        class="datatable-checkbox">\n        <input\n          type="checkbox"\n          [checked]="allRowsSelected"\n          (change)="select.emit(!allRowsSelected)"\n        />\n      </label>\n      <span\n        *ngIf="!column.headerTemplate"\n        class="datatable-header-cell-wrapper">\n        <span\n          class="datatable-header-cell-label draggable"\n          (click)="onSort()"\n          [innerHTML]="name">\n        </span>\n      </span>\n      <ng-template\n        *ngIf="column.headerTemplate"\n        [ngTemplateOutlet]="column.headerTemplate"\n        [ngTemplateOutletContext]="cellContext">\n      </ng-template>\n      <span\n        (click)="onSort()"\n        [class]="sortClass">\n      </span>\n    </div>\n  ',host:{class:"datatable-header-cell"},changeDetection:i.ChangeDetectionStrategy.OnPush}),r("design:paramtypes",[i.ChangeDetectorRef])],t)}()},"./src/components/header/header.component.ts":function(t,e,n){"use strict";var a=this&&this.__assign||function(){return(a=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)},r=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},i=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/types/index.ts"),u=n("./src/utils/index.ts");e.DataTableHeaderComponent=function(){function t(t){this.cd=t,this.sort=new o.EventEmitter,this.reorder=new o.EventEmitter,this.resize=new o.EventEmitter,this.select=new o.EventEmitter,this.columnContextmenu=new o.EventEmitter(!1),this._styleByGroup={left:{},center:{},right:{}}}return Object.defineProperty(t.prototype,"innerWidth",{get:function(){return this._innerWidth},set:function(t){if(this._innerWidth=t,this._columns){var e=u.columnsByPin(this._columns);this._columnGroupWidths=u.columnGroupWidths(e,this._columns),this.setStylesByGroup()}},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerHeight",{get:function(){return this._headerHeight},set:function(t){this._headerHeight="auto"!==t?t+"px":t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this._columns},set:function(t){this._columns=t;var e=u.columnsByPin(t);this._columnsByPin=u.columnsByPinArr(t),this._columnGroupWidths=u.columnGroupWidths(e,t),this.setStylesByGroup()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"offsetX",{get:function(){return this._offsetX},set:function(t){this._offsetX=t,this.setStylesByGroup()},enumerable:!0,configurable:!0}),t.prototype.onLongPressStart=function(t){var e=t.event;t.model.dragging=!0,this.dragEventTarget=e},t.prototype.onLongPressEnd=function(t){var e=this,n=t.model;this.dragEventTarget=t.event,setTimeout(function(){var t=e._columns.find(function(t){return t.$$id===n.$$id});t&&(t.dragging=!1)},5)},Object.defineProperty(t.prototype,"headerWidth",{get:function(){return this.scrollbarH?this.innerWidth+"px":"100%"},enumerable:!0,configurable:!0}),t.prototype.trackByGroups=function(t,e){return e.type},t.prototype.columnTrackingFn=function(t,e){return e.$$id},t.prototype.onColumnResized=function(t,e){t<=e.minWidth?t=e.minWidth:t>=e.maxWidth&&(t=e.maxWidth),this.resize.emit({column:e,prevValue:e.width,newValue:t})},t.prototype.onColumnReordered=function(t){var e=t.prevIndex,n=t.newIndex,a=t.model,r=this.getColumn(n);r.isTarget=!1,r.targetMarkerContext=void 0,this.reorder.emit({column:a,prevValue:e,newValue:n})},t.prototype.onTargetChanged=function(t){var e=t.prevIndex,n=t.newIndex,a=t.initialIndex;if(e||0===e){var r=this.getColumn(e);r.isTarget=!1,r.targetMarkerContext=void 0}if(n||0===n){var i=this.getColumn(n);i.isTarget=!0,a!==n&&(i.targetMarkerContext={class:"targetMarker ".concat(a>n?"dragFromRight":"dragFromLeft")})}},t.prototype.getColumn=function(t){var e=this._columnsByPin[0].columns.length;if(t<e)return this._columnsByPin[0].columns[t];var n=this._columnsByPin[1].columns.length;return t<e+n?this._columnsByPin[1].columns[t-e]:this._columnsByPin[2].columns[t-e-n]},t.prototype.onSort=function(t){var e=t.column,n=t.prevValue,a=t.newValue;if(!e.dragging){var r=this.calcNewSorts(e,n,a);this.sort.emit({sorts:r,column:e,prevValue:n,newValue:a})}},t.prototype.calcNewSorts=function(t,e,n){var r=0;this.sorts||(this.sorts=[]);var i=this.sorts.map(function(e,n){return(e=a({},e)).prop===t.prop&&(r=n),e});return void 0===n?i.splice(r,1):e?i[r].dir=n:(this.sortType===s.SortType.single&&i.splice(0,this.sorts.length),i.push({dir:n,prop:t.prop})),i},t.prototype.setStylesByGroup=function(){this._styleByGroup.left=this.calcStylesByGroup("left"),this._styleByGroup.center=this.calcStylesByGroup("center"),this._styleByGroup.right=this.calcStylesByGroup("right"),this.cd.detectChanges()},t.prototype.calcStylesByGroup=function(t){var e=this._columnGroupWidths,n={width:e[t]+"px"};return"center"===t?u.translateXY(n,-1*this.offsetX,0):"right"===t&&u.translateXY(n,-1*(e.total-this.innerWidth),0),n},r([o.Input(),i("design:type",Object)],t.prototype,"sortAscendingIcon",void 0),r([o.Input(),i("design:type",Object)],t.prototype,"sortDescendingIcon",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"scrollbarH",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"dealsWithGroup",void 0),r([o.Input(),i("design:type",Object)],t.prototype,"targetMarkerTemplate",void 0),r([o.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"innerWidth",null),r([o.Input(),i("design:type",Array)],t.prototype,"sorts",void 0),r([o.Input(),i("design:type",String)],t.prototype,"sortType",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"allRowsSelected",void 0),r([o.Input(),i("design:type",String)],t.prototype,"selectionType",void 0),r([o.Input(),i("design:type",Boolean)],t.prototype,"reorderable",void 0),r([o.HostBinding("style.height"),o.Input(),i("design:type",Object),i("design:paramtypes",[Object])],t.prototype,"headerHeight",null),r([o.Input(),i("design:type",Array),i("design:paramtypes",[Array])],t.prototype,"columns",null),r([o.Input(),i("design:type",Number),i("design:paramtypes",[Number])],t.prototype,"offsetX",null),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"sort",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"resize",void 0),r([o.Output(),i("design:type",o.EventEmitter)],t.prototype,"select",void 0),r([o.Output(),i("design:type",Object)],t.prototype,"columnContextmenu",void 0),r([o.HostBinding("style.width"),i("design:type",String),i("design:paramtypes",[])],t.prototype,"headerWidth",null),r([o.Component({selector:"datatable-header",template:'\n    <div\n      orderable\n      (reorder)="onColumnReordered($event)"\n      (targetChanged)="onTargetChanged($event)"\n      [style.width.px]="_columnGroupWidths.total"\n      class="datatable-header-inner">\n      <div\n        *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups"\n        [class]="\'datatable-row-\' + colGroup.type"\n        [ngStyle]="_styleByGroup[colGroup.type]">\n        <datatable-header-cell\n          *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn"\n          resizeable\n          [resizeEnabled]="column.resizeable"\n          (resize)="onColumnResized($event, column)"\n          long-press\n          [pressModel]="column"\n          [pressEnabled]="reorderable && column.draggable"\n          (longPressStart)="onLongPressStart($event)"\n          (longPressEnd)="onLongPressEnd($event)"\n          draggable\n          [dragX]="reorderable && column.draggable && column.dragging"\n          [dragY]="false"\n          [dragModel]="column"\n          [dragEventTarget]="dragEventTarget"\n          [headerHeight]="headerHeight"\n          [isTarget]="column.isTarget"\n          [targetMarkerTemplate]="targetMarkerTemplate"\n          [targetMarkerContext]="column.targetMarkerContext"\n          [column]="column"\n          [sortType]="sortType"\n          [sorts]="sorts"\n          [selectionType]="selectionType"\n          [sortAscendingIcon]="sortAscendingIcon"\n          [sortDescendingIcon]="sortDescendingIcon"\n          [allRowsSelected]="allRowsSelected"\n          (sort)="onSort($event)"\n          (select)="select.emit($event)"\n          (columnContextmenu)="columnContextmenu.emit($event)">\n        </datatable-header-cell>\n      </div>\n    </div>\n  ',host:{class:"datatable-header"},changeDetection:o.ChangeDetectionStrategy.OnPush}),i("design:paramtypes",[o.ChangeDetectorRef])],t)}()},"./src/components/header/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/header/header.component.ts")),a(n("./src/components/header/header-cell.component.ts"))},"./src/components/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/datatable.component.ts")),a(n("./src/components/header/index.ts")),a(n("./src/components/body/index.ts")),a(n("./src/components/footer/index.ts")),a(n("./src/components/columns/index.ts")),a(n("./src/components/row-detail/index.ts"))},"./src/components/row-detail/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/components/row-detail/row-detail.directive.ts")),a(n("./src/components/row-detail/row-detail-template.directive.ts"))},"./src/components/row-detail/row-detail-template.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.DatatableRowDetailTemplateDirective=function(){return a([i.Directive({selector:"[ngx-datatable-row-detail-template]"}),r("design:paramtypes",[i.TemplateRef])],function(t){this.template=t})}()},"./src/components/row-detail/row-detail.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("./src/components/row-detail/row-detail-template.directive.ts");e.DatatableRowDetailDirective=function(){function t(){this.rowHeight=0,this.toggle=new i.EventEmitter}return t.prototype.toggleExpandRow=function(t){this.toggle.emit({type:"row",value:t})},t.prototype.expandAllRows=function(){this.toggle.emit({type:"all",value:!0})},t.prototype.collapseAllRows=function(){this.toggle.emit({type:"all",value:!1})},a([i.Input(),r("design:type",Object)],t.prototype,"rowHeight",void 0),a([i.Input(),i.ContentChild(o.DatatableRowDetailTemplateDirective,{read:i.TemplateRef}),r("design:type",i.TemplateRef)],t.prototype,"template",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"toggle",void 0),a([i.Directive({selector:"ngx-datatable-row-detail"})],t)}()},"./src/datatable.module.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core"),i=n("@angular/common"),o=n("./src/components/index.ts"),s=n("./src/directives/index.ts"),u=n("./src/services/index.ts");e.NgxDatatableModule=function(){return a([r.NgModule({imports:[i.CommonModule],providers:[u.ScrollbarHelper,u.DimensionsHelper,u.ColumnChangesService],declarations:[o.DataTableFooterTemplateDirective,s.VisibilityDirective,s.DraggableDirective,s.ResizeableDirective,s.OrderableDirective,s.LongPressDirective,o.ScrollerComponent,o.DatatableComponent,o.DataTableColumnDirective,o.DataTableHeaderComponent,o.DataTableHeaderCellComponent,o.DataTableBodyComponent,o.DataTableFooterComponent,o.DataTablePagerComponent,o.ProgressBarComponent,o.DataTableBodyRowComponent,o.DataTableRowWrapperComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableBodyCellComponent,o.DataTableSelectionComponent,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DatatableFooterDirective,o.DatatableGroupHeaderTemplateDirective,o.DataTableSummaryRowComponent],exports:[o.DatatableComponent,o.DatatableRowDetailDirective,o.DatatableGroupHeaderDirective,o.DatatableRowDetailTemplateDirective,o.DataTableColumnDirective,o.DataTableColumnHeaderDirective,o.DataTableColumnCellDirective,o.DataTableColumnCellTreeToggle,o.DataTableFooterTemplateDirective,o.DatatableFooterDirective,o.DataTablePagerComponent,o.DatatableGroupHeaderTemplateDirective]})],function(){})}()},"./src/directives/draggable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=n("rxjs/operators");e.DraggableDirective=function(){function t(t){this.dragX=!0,this.dragY=!0,this.dragStart=new i.EventEmitter,this.dragging=new i.EventEmitter,this.dragEnd=new i.EventEmitter,this.isDragging=!1,this.element=t.nativeElement}return t.prototype.ngOnChanges=function(t){t.dragEventTarget&&t.dragEventTarget.currentValue&&this.dragModel.dragging&&this.onMousedown(t.dragEventTarget.currentValue)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(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})))},t.prototype.onMousedown=function(t){var e=this;if(t.target.classList.contains("draggable")&&(this.dragX||this.dragY)){t.preventDefault(),this.isDragging=!0;var n={x:t.clientX,y:t.clientY},a=o.fromEvent(document,"mouseup");this.subscription=a.subscribe(function(t){return e.onMouseup(t)});var r=o.fromEvent(document,"mousemove").pipe(s.takeUntil(a)).subscribe(function(t){return e.move(t,n)});this.subscription.add(r),this.dragStart.emit({event:t,element:this.element,model:this.dragModel})}},t.prototype.move=function(t,e){if(this.isDragging){var 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})}},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Object)],t.prototype,"dragEventTarget",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"dragModel",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragX",void 0),a([i.Input(),r("design:type",Boolean)],t.prototype,"dragY",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragging",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"dragEnd",void 0),a([i.Directive({selector:"[draggable]"}),r("design:paramtypes",[i.ElementRef])],t)}()},"./src/directives/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/directives/draggable.directive.ts")),a(n("./src/directives/long-press.directive.ts")),a(n("./src/directives/orderable.directive.ts")),a(n("./src/directives/resizeable.directive.ts")),a(n("./src/directives/visibility.directive.ts"))},"./src/directives/long-press.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=n("rxjs/operators");n("./src/events.ts"),e.LongPressDirective=function(){function t(){this.pressEnabled=!0,this.duration=500,this.longPressStart=new i.EventEmitter,this.longPressing=new i.EventEmitter,this.longPressEnd=new i.EventEmitter,this.mouseX=0,this.mouseY=0}return Object.defineProperty(t.prototype,"press",{get:function(){return this.pressing},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLongPress",{get:function(){return this.isLongPressing},enumerable:!0,configurable:!0}),t.prototype.onMouseDown=function(t){var e=this;if(1===t.which&&this.pressEnabled&&!t.target.classList.contains("resize-handle")){this.mouseX=t.clientX,this.mouseY=t.clientY,this.pressing=!0,this.isLongPressing=!1;var n=o.fromEvent(document,"mouseup");this.subscription=n.subscribe(function(t){return e.onMouseup()}),this.timeout=setTimeout(function(){e.isLongPressing=!0,e.longPressStart.emit({event:t,model:e.pressModel}),e.subscription.add(o.fromEvent(document,"mousemove").pipe(s.takeUntil(n)).subscribe(function(t){return e.onMouseMove(t)})),e.loop(t)},this.duration),this.loop(t)}},t.prototype.onMouseMove=function(t){if(this.pressing&&!this.isLongPressing){var e=Math.abs(t.clientX-this.mouseX)>10,n=Math.abs(t.clientY-this.mouseY)>10;(e||n)&&this.endPress()}},t.prototype.loop=function(t){var e=this;this.isLongPressing&&(this.timeout=setTimeout(function(){e.longPressing.emit({event:t,model:e.pressModel}),e.loop(t)},50))},t.prototype.endPress=function(){clearTimeout(this.timeout),this.isLongPressing=!1,this.pressing=!1,this._destroySubscription(),this.longPressEnd.emit({model:this.pressModel})},t.prototype.onMouseup=function(){this.endPress()},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"pressEnabled",void 0),a([i.Input(),r("design:type",Object)],t.prototype,"pressModel",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"duration",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressStart",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressing",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"longPressEnd",void 0),a([i.HostBinding("class.press"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"press",null),a([i.HostBinding("class.longpress"),r("design:type",Boolean),r("design:paramtypes",[])],t.prototype,"isLongPress",null),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMouseDown",null),a([i.Directive({selector:"[long-press]"})],t)}()},"./src/directives/orderable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("./src/directives/draggable.directive.ts"),u=n("@angular/platform-browser");e.OrderableDirective=function(){function t(t,e){this.document=e,this.reorder=new o.EventEmitter,this.targetChanged=new o.EventEmitter,this.differ=t.find({}).create()}return t.prototype.ngAfterContentInit=function(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))},t.prototype.ngOnDestroy=function(){this.draggables.forEach(function(t){t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})},t.prototype.updateSubscriptions=function(){var t=this,e=this.differ.diff(this.createMapDiffs());if(e){var n=function(t){var e=t.previousValue;e&&(e.dragStart.unsubscribe(),e.dragging.unsubscribe(),e.dragEnd.unsubscribe())};e.forEachAddedItem((function(e){var a=e.currentValue;n({previousValue:e.previousValue}),a&&(a.dragStart.subscribe(t.onDragStart.bind(t)),a.dragging.subscribe(t.onDragging.bind(t)),a.dragEnd.subscribe(t.onDragEnd.bind(t)))}).bind(this)),e.forEachRemovedItem(n.bind(this))}},t.prototype.onDragStart=function(){this.positions={};for(var t=0,e=0,n=this.draggables.toArray();e<n.length;e++){var a=n[e],r=a.element,i=parseInt(r.offsetLeft.toString(),0);this.positions[a.dragModel.prop]={left:i,right:i+parseInt(r.offsetWidth.toString(),0),index:t++,element:r}}},t.prototype.onDragging=function(t){var e=t.model,n=this.positions[e.prop],a=this.isTarget(e,t.event);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)},t.prototype.onDragEnd=function(t){var e=t.element,n=t.model,a=this.positions[n.prop],r=this.isTarget(n,t.event);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:n}),this.lastDraggingIndex=void 0,e.style.left="auto"},t.prototype.isTarget=function(t,e){var n=0,a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY),r=function(e){var r=i.positions[e];if(t.prop!==e&&a.find(function(t){return t===r.element}))return{value:{pos:r,i:n}};n++},i=this;for(var o in this.positions){var s=r(o);if("object"==typeof s)return s.value}},t.prototype.createMapDiffs=function(){return this.draggables.toArray().reduce(function(t,e){return t[e.dragModel.$$id]=e,t},{})},a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"reorder",void 0),a([o.Output(),r("design:type",o.EventEmitter)],t.prototype,"targetChanged",void 0),a([o.ContentChildren(s.DraggableDirective,{descendants:!0}),r("design:type",o.QueryList)],t.prototype,"draggables",void 0),a([o.Directive({selector:"[orderable]"}),i(1,o.Inject(u.DOCUMENT)),r("design:paramtypes",[o.KeyValueDiffers,Object])],t)}()},"./src/directives/resizeable.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core"),o=n("rxjs"),s=(n("./src/events.ts"),n("rxjs/operators"));e.ResizeableDirective=function(){function t(t,e){this.renderer=e,this.resizeEnabled=!0,this.resize=new i.EventEmitter,this.resizing=!1,this.element=t.nativeElement}return t.prototype.ngAfterViewInit=function(){var t=this.renderer,e=t.createElement("span");t.addClass(e,this.resizeEnabled?"resize-handle":"resize-handle--not-resizable"),t.appendChild(this.element,e)},t.prototype.ngOnDestroy=function(){this._destroySubscription()},t.prototype.onMouseup=function(){this.resizing=!1,this.subscription&&!this.subscription.closed&&(this._destroySubscription(),this.resize.emit(this.element.clientWidth))},t.prototype.onMousedown=function(t){var e=this,n=t.target.classList.contains("resize-handle"),a=this.element.clientWidth,r=t.screenX;if(n){t.stopPropagation(),this.resizing=!0;var i=o.fromEvent(document,"mouseup");this.subscription=i.subscribe(function(t){return e.onMouseup()});var u=o.fromEvent(document,"mousemove").pipe(s.takeUntil(i)).subscribe(function(t){return e.move(t,a,r)});this.subscription.add(u)}},t.prototype.move=function(t,e,n){var a=e+(t.screenX-n);(!this.minWidth||a>=this.minWidth)&&(!this.maxWidth||a<=this.maxWidth)&&(this.element.style.width=a+"px")},t.prototype._destroySubscription=function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0)},a([i.Input(),r("design:type",Boolean)],t.prototype,"resizeEnabled",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"minWidth",void 0),a([i.Input(),r("design:type",Number)],t.prototype,"maxWidth",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"resize",void 0),a([i.HostListener("mousedown",["$event"]),r("design:type",Function),r("design:paramtypes",[Object]),r("design:returntype",void 0)],t.prototype,"onMousedown",null),a([i.Directive({selector:"[resizeable]",host:{"[class.resizeable]":"resizeEnabled"}}),r("design:paramtypes",[i.ElementRef,i.Renderer2])],t)}()},"./src/directives/visibility.directive.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0});var i=n("@angular/core");e.VisibilityDirective=function(){function t(t,e){this.element=t,this.zone=e,this.isVisible=!1,this.visible=new i.EventEmitter}return t.prototype.ngOnInit=function(){this.runCheck()},t.prototype.ngOnDestroy=function(){clearTimeout(this.timeout)},t.prototype.onVisibilityChange=function(){var t=this;this.zone.run(function(){t.isVisible=!0,t.visible.emit(!0)})},t.prototype.runCheck=function(){var t=this,e=function(){var n=t.element.nativeElement;n.offsetHeight&&n.offsetWidth?(clearTimeout(t.timeout),t.onVisibilityChange()):(clearTimeout(t.timeout),t.zone.runOutsideAngular(function(){t.timeout=setTimeout(function(){return e()},50)}))};this.timeout=setTimeout(function(){return e()})},a([i.HostBinding("class.visible"),r("design:type",Boolean)],t.prototype,"isVisible",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"visible",void 0),a([i.Directive({selector:"[visibilityObserver]"}),r("design:paramtypes",[i.ElementRef,i.NgZone])],t)}()},"./src/events.ts":function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.MouseEvent=("undefined"!=typeof window&&window||t).MouseEvent,e.KeyboardEvent=("undefined"!=typeof window&&window||t).KeyboardEvent,e.Event=("undefined"!=typeof window&&window||t).Event}).call(e,n("./node_modules/webpack/buildin/global.js"))},"./src/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/datatable.module.ts")),a(n("./src/types/index.ts")),a(n("./src/components/index.ts")),a(n("./src/services/index.ts"))},"./src/services/column-changes.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core"),i=n("rxjs");e.ColumnChangesService=function(){function t(){this.columnInputChanges=new i.Subject}return Object.defineProperty(t.prototype,"columnInputChanges$",{get:function(){return this.columnInputChanges.asObservable()},enumerable:!0,configurable:!0}),t.prototype.onInputChange=function(){this.columnInputChanges.next()},a([r.Injectable()],t)}()},"./src/services/dimensions-helper.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o};Object.defineProperty(e,"__esModule",{value:!0});var r=n("@angular/core");e.DimensionsHelper=function(){function t(){}return t.prototype.getDimensions=function(t){return t.getBoundingClientRect()},a([r.Injectable()],t)}()},"./src/services/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/services/scrollbar-helper.service.ts")),a(n("./src/services/dimensions-helper.service.ts")),a(n("./src/services/column-changes.service.ts"))},"./src/services/scrollbar-helper.service.ts":function(t,e,n){"use strict";var a=this&&this.__decorate||function(t,e,n,a){var r,i=arguments.length,o=i<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(o=(i<3?r(o):i>3?r(e,n,o):r(e,n))||o);return i>3&&o&&Object.defineProperty(e,n,o),o},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},i=this&&this.__param||function(t,e){return function(n,a){e(n,a,t)}};Object.defineProperty(e,"__esModule",{value:!0});var o=n("@angular/core"),s=n("@angular/platform-browser");e.ScrollbarHelper=function(){function t(t){this.document=t,this.width=this.getWidth()}return t.prototype.getWidth=function(){var t=this.document.createElement("div");t.style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",this.document.body.appendChild(t);var e=t.offsetWidth;t.style.overflow="scroll";var n=this.document.createElement("div");n.style.width="100%",t.appendChild(n);var a=n.offsetWidth;return t.parentNode.removeChild(t),e-a},a([o.Injectable(),i(0,o.Inject(s.DOCUMENT)),r("design:paramtypes",[Object])],t)}()},"./src/types/click.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.double="double"}(e.ClickType||(e.ClickType={}))},"./src/types/column-mode.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.standard="standard",t.flex="flex",t.force="force"}(e.ColumnMode||(e.ColumnMode={}))},"./src/types/contextmenu.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.header="header",t.body="body"}(e.ContextmenuType||(e.ContextmenuType={}))},"./src/types/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/types/column-mode.type.ts")),a(n("./src/types/sort.type.ts")),a(n("./src/types/sort-direction.type.ts")),a(n("./src/types/selection.type.ts")),a(n("./src/types/click.type.ts")),a(n("./src/types/contextmenu.type.ts"))},"./src/types/selection.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi",t.multiClick="multiClick",t.cell="cell",t.checkbox="checkbox"}(e.SelectionType||(e.SelectionType={}))},"./src/types/sort-direction.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.asc="asc",t.desc="desc"}(e.SortDirection||(e.SortDirection={}))},"./src/types/sort.type.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.single="single",t.multi="multi"}(e.SortType||(e.SortType={}))},"./src/utils/camel-case.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=function(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()})},e.deCamelCase=function(t){return t.replace(/([A-Z])/g,function(t){return" "+t}).replace(/^./,function(t){return t.toUpperCase()})}},"./src/utils/column-helper.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/camel-case.ts"),r=n("./src/utils/id.ts"),i=n("./src/utils/column-prop-getters.ts");function o(t){return null==t}e.setColumnDefaults=function(t){if(t)for(var e=!1,n=0,s=t;n<s.length;n++){var u=s[n];u.$$id||(u.$$id=r.id()),o(u.prop)&&u.name&&(u.prop=a.camelCase(u.name)),u.$$valueGetter||(u.$$valueGetter=i.getterForProp(u.prop)),!o(u.prop)&&o(u.name)&&(u.name=a.deCamelCase(String(u.prop))),o(u.prop)&&o(u.name)&&(u.name=""),u.hasOwnProperty("resizeable")||(u.resizeable=!0),u.hasOwnProperty("sortable")||(u.sortable=!0),u.hasOwnProperty("draggable")||(u.draggable=!0),u.hasOwnProperty("canAutoResize")||(u.canAutoResize=!0),u.hasOwnProperty("width")||(u.width=150),u.hasOwnProperty("isTreeColumn")&&u.isTreeColumn&&!e?e=!0:u.isTreeColumn=!1}},e.isNullOrUndefined=o,e.translateTemplates=function(t){for(var e=[],n=0,a=t;n<a.length;n++){for(var r=a[n],i={},o=0,s=Object.getOwnPropertyNames(r);o<s.length;o++){var u=s[o];i[u]=r[u]}r.headerTemplate&&(i.headerTemplate=r.headerTemplate),r.cellTemplate&&(i.cellTemplate=r.cellTemplate),r.summaryFunc&&(i.summaryFunc=r.summaryFunc),r.summaryTemplate&&(i.summaryTemplate=r.summaryTemplate),e.push(i)}return e}},"./src/utils/column-prop-getters.ts":function(t,e,n){"use strict";function a(){return""}function r(t,e){if(null==t)return"";if(!t||null==e)return t;var n=t[e];return null==n?"":n}function i(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];return null==n?"":n}function o(t,e){if(null==t)return"";if(!t||!e)return t;var n=t[e];if(void 0!==n)return n;n=t;var a=e.split(".");if(a.length)for(var r=0;r<a.length;r++)if(null==(n=n[a[r]]))return"";return n}Object.defineProperty(e,"__esModule",{value:!0}),e.emptyStringGetter=a,e.getterForProp=function(t){return null==t?a:"number"==typeof t?r:-1!==t.indexOf(".")?o:i},e.numericIndexGetter=r,e.shallowValueGetter=i,e.deepValueGetter=o},"./src/utils/column.ts":function(t,e,n){"use strict";function a(t){var e={left:[],center:[],right:[]};if(t)for(var n=0,a=t;n<a.length;n++){var r=a[n];r.frozenLeft?e.left.push(r):r.frozenRight?e.right.push(r):e.center.push(r)}return e}function r(t,e){var n=0;if(t)for(var a=0,r=t;a<r.length;a++){var i=r[a];n+=parseFloat(e&&i[e]?i[e]:i.width)}return n}Object.defineProperty(e,"__esModule",{value:!0}),e.columnsByPin=a,e.columnGroupWidths=function(t,e){return{left:r(t.left),center:r(t.center),right:r(t.right),total:Math.floor(r(e))}},e.columnTotalWidth=r,e.columnsTotalWidth=function(t,e){for(var n=0,a=0,r=t;a<r.length;a++){var i=r[a];n+=e&&i[e]?i[e]:i.width}return n},e.columnsByPinArr=function(t){var e=[],n=a(t);return e.push({type:"left",columns:n.left}),e.push({type:"center",columns:n.center}),e.push({type:"right",columns:n.right}),e}},"./src/utils/elm-from-point.ts":function(t,e,n){"use strict";function a(t,e){for(var n,a,r,i=[],o=[];(n=document.elementFromPoint(t,e))&&-1===i.indexOf(n)&&null!=n;)i.push(n),o.push({value:n.style.getPropertyValue("pointer-events"),priority:n.style.getPropertyPriority("pointer-events")}),n.style.setProperty("pointer-events","none","important");for(a=o.length;r=o[--a];)i[a].style.setProperty("pointer-events",r.value?r.value:"",r.priority);return i}Object.defineProperty(e,"__esModule",{value:!0}),"undefined"==typeof document||document.elementsFromPoint||(document.elementsFromPoint=a),e.elementsFromPoint=a},"./src/utils/id.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.id=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}},"./src/utils/index.ts":function(t,e,n){"use strict";function a(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),a(n("./src/utils/id.ts")),a(n("./src/utils/column.ts")),a(n("./src/utils/column-prop-getters.ts")),a(n("./src/utils/camel-case.ts")),a(n("./src/utils/keys.ts")),a(n("./src/utils/math.ts")),a(n("./src/utils/prefixes.ts")),a(n("./src/utils/selection.ts")),a(n("./src/utils/translate.ts")),a(n("./src/utils/throttle.ts")),a(n("./src/utils/sort.ts")),a(n("./src/utils/row-height-cache.ts")),a(n("./src/utils/column-helper.ts")),a(n("./src/utils/elm-from-point.ts")),a(n("./src/utils/tree.ts"))},"./src/utils/keys.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Keys=function(t){return t[t.up=38]="up",t[t.down=40]="down",t[t.return=13]="return",t[t.escape=27]="escape",t[t.left=37]="left",t[t.right=39]="right",t}(e.Keys||{})},"./src/utils/math.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/column.ts");function r(t){for(var e=0,n=0,a=t;n<a.length;n++)e+=a[n].flexGrow||0;return e}function i(t,e){for(var n=0,a=e;n<a.length;n++){var r=t.indexOf(a[n]);t.splice(r,1)}}function o(t,e){void 0===e&&(e=300);for(var n=0,a=0,r=t;a<r.length;a++)n+=r[a].width||e;return n}e.getTotalFlexGrow=r,e.adjustColumnWidths=function(t,e){var n=a.columnsTotalWidth(t),i=r(t),o=a.columnsByPin(t);n!==e&&function(t,e,n){for(var a in t)for(var r=0,i=t[a];r<i.length;r++)(d=i[r]).canAutoResize?d.width=0:(e-=d.width,n-=d.flexGrow?d.flexGrow:0);var o={},s=e;do{var u=s/n;for(var a in s=0,t)for(var l=0,c=t[a];l<c.length;l++){var d;if((d=c[l]).canAutoResize&&!o[d.prop]){var f=d.width+d.flexGrow*u;void 0!==d.minWidth&&f<d.minWidth?(s+=f-d.minWidth,d.width=d.minWidth,o[d.prop]=!0):d.width=f}}}while(0!==s)}(o,e,i)},e.forceFillColumnWidths=function(t,e,n,a,r){void 0===r&&(r=300);for(var s=t.slice(n+1,t.length).filter(function(t){return!1!==t.canAutoResize}),u=0,l=s;u<l.length;u++)(b=l[u]).$$oldWidth||(b.$$oldWidth=b.width);var c=0,d=!1,f=o(t,r),p=e-f,h=[];do{c=p/s.length,d=f>=e;for(var g=0,m=s;g<m.length;g++){var b=m[g];if(d&&a)b.width=b.$$oldWidth||b.width||r;else{var y=(b.width||r)+c;b.minWidth&&y<b.minWidth?(b.width=b.minWidth,h.push(b)):b.maxWidth&&y>b.maxWidth?(b.width=b.maxWidth,h.push(b)):b.width=y}b.width=Math.max(0,b.width)}p=e-(f=o(t)),i(s,h)}while(p>0&&0!==s.length)}},"./src/utils/prefixes.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a,r,i,o,s=n("./src/utils/camel-case.ts"),u={},l="undefined"!=typeof document?document.createElement("div").style:void 0,c=(o=void 0!==(i=null!==(r=void 0!==(a="undefined"!=typeof window?window.getComputedStyle(document.documentElement,""):void 0)?Array.prototype.slice.call(a).join("").match(/-(moz|webkit|ms)-/):null)?r[1]:void 0)?"WebKit|Moz|MS|O".match(new RegExp("("+i+")","i"))[1]:void 0)?{dom:o,lowercase:i,css:"-"+i+"-",js:i[0].toUpperCase()+i.substr(1)}:void 0;e.getVendorPrefixedName=function(t){var e=s.camelCase(t);return u[e]||(void 0!==c&&void 0!==l[c.css+t]?u[e]=c.css+t:void 0!==l[t]&&(u[e]=t)),u[e]}},"./src/utils/row-height-cache.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RowHeightCache=function(){function t(){this.treeArray=[]}return t.prototype.clearCache=function(){this.treeArray=[]},t.prototype.initCache=function(t){var e=t.rows,n=t.rowHeight,a=t.detailRowHeight,r=t.externalVirtual,i=t.rowCount,o=t.rowIndexes,s=t.rowExpansions,u="function"==typeof n,l="function"==typeof a;if(!u&&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.");var c=r?i:e.length;this.treeArray=new Array(c);for(var d=0;d<c;++d)this.treeArray[d]=0;for(d=0;d<c;++d){var f=e[d],p=n;u&&(p=n(f));var h=s.get(f);f&&1===h&&(p+=l?a(f,o.get(f)):a),this.update(d,p)}},t.prototype.getRowIndex=function(t){return 0===t?0:this.calcRowIndex(t)},t.prototype.update=function(t,e){if(!this.treeArray.length)throw new Error("Update at index "+t+" with value "+e+" failed:\n        Row Height cache not initialized.");var n=this.treeArray.length;for(t|=0;t<n;)this.treeArray[t]+=e,t|=t+1},t.prototype.query=function(t){if(!this.treeArray.length)throw new Error("query at index "+t+" failed: Fenwick tree array not initialized.");var e=0;for(t|=0;t>=0;)e+=this.treeArray[t],t=(t&t+1)-1;return e},t.prototype.queryBetween=function(t,e){return this.query(e)-this.query(t-1)},t.prototype.calcRowIndex=function(t){if(!this.treeArray.length)return 0;for(var e=-1,n=this.treeArray.length,a=Math.pow(2,n.toString(2).length-1);0!==a;a>>=1){var r=e+a;r<n&&t>=this.treeArray[r]&&(t-=this.treeArray[r],e=r)}return e+1},t}()},"./src/utils/selection.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.selectRows=function(t,e,n){var a=n(e,t);return a>-1?t.splice(a,1):t.push(e),t},e.selectRowsBetween=function(t,e,n,a,r){for(var i=n<a,o=0;o<e.length;o++){var s;s=i?{start:n,end:a}:{start:a,end:n+1},(i&&o<=a&&o>=n||!i&&o>=a&&o<=n)&&o>=s.start&&o<=s.end&&t.push(e[o])}return t}},"./src/utils/sort.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/types/index.ts"),r=n("./src/utils/column-prop-getters.ts");function i(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}e.nextSortDir=function(t,e){return t===a.SortType.single?e===a.SortDirection.asc?a.SortDirection.desc:a.SortDirection.asc:e?e===a.SortDirection.asc?a.SortDirection.desc:void 0:a.SortDirection.asc},e.orderByComparator=i,e.sortRows=function(t,e,n){if(!t)return[];if(!n||!n.length||!e)return t.slice();var o=new Map;t.forEach(function(t,e){return o.set(t,e)});var s=t.slice(),u=e.reduce(function(t,e){return e.comparator&&"function"==typeof e.comparator&&(t[e.prop]=e.comparator),t},{}),l=n.map(function(t){var e=t.prop;return{prop:e,dir:t.dir,valueGetter:r.getterForProp(e),compareFn:u[e]||i}});return s.sort(function(t,e){for(var n=0,r=l;n<r.length;n++){var i=r[n],s=i.prop,u=i.valueGetter,c=u(t,s),d=u(e,s),f=i.dir!==a.SortDirection.desc?i.compareFn(c,d,t,e,i.dir):-i.compareFn(c,d,t,e,i.dir);if(0!==f)return f}return o.has(t)&&o.has(e)?o.get(t)<o.get(e)?-1:1:0})}},"./src/utils/throttle.ts":function(t,e,n){"use strict";function a(t,e,n){var a,r,i;n=n||{};var o=null,s=0;function u(){s=!1===n.leading?0:+new Date,o=null,i=t.apply(a,r)}return function(){var l=+new Date;s||!1!==n.leading||(s=l);var c=e-(l-s);return a=this,r=arguments,c<=0?(clearTimeout(o),o=null,s=l,i=t.apply(a,r)):o||!1===n.trailing||(o=setTimeout(u,c)),i}}Object.defineProperty(e,"__esModule",{value:!0}),e.throttle=a,e.throttleable=function(t,e){return function(n,r,i){return{configurable:!0,enumerable:i.enumerable,get:function(){return Object.defineProperty(this,r,{configurable:!0,enumerable:i.enumerable,value:a(i.value,t,e)}),this[r]}}}}},"./src/utils/translate.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/prefixes.ts"),r=n("./src/utils/camel-case.ts"),i="undefined"!=typeof window?a.getVendorPrefixedName("transform"):void 0,o="undefined"!=typeof window?a.getVendorPrefixedName("backfaceVisibility"):void 0,s="undefined"!=typeof window?!!a.getVendorPrefixedName("transform"):void 0,u="undefined"!=typeof window?!!a.getVendorPrefixedName("perspective"):void 0,l="undefined"!=typeof window?window.navigator.userAgent:"Chrome",c=/Safari\//.test(l)&&!/Chrome\//.test(l);e.translateXY=function(t,e,n){void 0!==i&&s?!c&&u?(t[i]="translate3d("+e+"px, "+n+"px, 0)",t[o]="hidden"):t[r.camelCase(i)]="translate("+e+"px, "+n+"px)":(t.top=n+"px",t.left=e+"px")}},"./src/utils/tree.ts":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=n("./src/utils/index.ts");e.optionalGetterForProp=function(t){return t&&function(e){return a.getterForProp(t)(e,t)}},e.groupRowsByParents=function(t,e,n){if(e&&n){var a={},i=t.length,o=null;a[0]=new r;for(var s=t.reduce(function(t,e){var a=n(e);return-1===t.indexOf(a)&&t.push(a),t},[]),u=0;u<i;u++)a[n(t[u])]=new r(t[u]);for(u=0;u<i;u++){var l=0,c=e((o=a[n(t[u])]).row);c&&s.indexOf(c)>-1&&(l=c),o.parent=a[l],o.row.level=o.parent.row.level+1,o.parent.children.push(o)}var d=[];return a[0].flatten(function(){d=d.concat([this.row])},!0),d}return t};var r=function(){function t(t){void 0===t&&(t=null),t||(t={level:-1,treeStatus:"expanded"}),this.row=t,this.parent=null,this.children=[]}return t.prototype.flatten=function(t,e){if("expanded"===this.row.treeStatus)for(var n=0,a=this.children.length;n<a;n++){var r=this.children[n];t.apply(r,Array.prototype.slice.call(arguments,2)),e&&r.flatten.apply(r,arguments)}},t}()},"@angular/common":function(e,n){e.exports=t},"@angular/core":function(t,n){t.exports=e},"@angular/platform-browser":function(t,e){t.exports=n},rxjs:function(t,e){t.exports=a},"rxjs/operators":function(t,e){t.exports=r}})},t.exports=a(n("Ip0R"),n("CcnG"),n("ZYjt"),n("DtyJ"),n("ahDk"))},yGOH:function(t,e,n){"use strict";n.d(e,"a",function(){return a});var a=function(){return function(){}}()},yGWI:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(){return function(t){return t.lift(new o(t))}}var o=function(){function t(t){this.connectable=t}return t.prototype.call=function(t,e){var n=this.connectable;n._refCount++;var a=new s(t,n),r=e.subscribe(a);return a.closed||(a.connection=n.connect()),r},t}(),s=function(t){function e(e,n){var a=t.call(this,e)||this;return a.connectable=n,a}return a.__extends(e,t),e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._refCount;if(e<=0)this.connection=null;else if(t._refCount=e-1,e>1)this.connection=null;else{var n=this.connection,a=t._connection;this.connection=null,!a||n&&a!==n||a.unsubscribe()}}else this.connection=null},e}(r.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}({})},yPMN:function(t,e,n){"use strict";n("CDJp")._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),t.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},yPMs:function(t,e,n){!function(t){"use strict";n("wd/R").defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_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\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}()},yRPT:function(t,e,n){"use strict";e.isArrayLike=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t}},ylLw:function(t,e,n){var a=n("mrSG").__decorate,r=n("mrSG").__metadata;Object.defineProperty(e,"__esModule",{value:!0});var i=n("CcnG"),o=n("3MdB");n("ZYjt"),e.OrderableDirective=function(){function t(t,e){this.document=e,this.reorder=new i.EventEmitter,this.targetChanged=new i.EventEmitter,this.differ=t.find({}).create()}return t.prototype.ngAfterContentInit=function(){this.updateSubscriptions(),this.draggables.changes.subscribe(this.updateSubscriptions.bind(this))},t.prototype.ngOnDestroy=function(){this.draggables.forEach(function(t){t.dragStart.unsubscribe(),t.dragging.unsubscribe(),t.dragEnd.unsubscribe()})},t.prototype.updateSubscriptions=function(){var t=this,e=this.differ.diff(this.createMapDiffs());if(e){var n=function(t){var e=t.previousValue;e&&(e.dragStart.unsubscribe(),e.dragging.unsubscribe(),e.dragEnd.unsubscribe())};e.forEachAddedItem((function(e){var a=e.currentValue;n({previousValue:e.previousValue}),a&&(a.dragStart.subscribe(t.onDragStart.bind(t)),a.dragging.subscribe(t.onDragging.bind(t)),a.dragEnd.subscribe(t.onDragEnd.bind(t)))}).bind(this)),e.forEachRemovedItem(n.bind(this))}},t.prototype.onDragStart=function(){this.positions={};for(var t=0,e=0,n=this.draggables.toArray();e<n.length;e++){var a=n[e],r=a.element,i=parseInt(r.offsetLeft.toString(),0);this.positions[a.dragModel.prop]={left:i,right:i+parseInt(r.offsetWidth.toString(),0),index:t++,element:r}}},t.prototype.onDragging=function(t){var e=t.model,n=this.positions[e.prop],a=this.isTarget(e,t.event);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)},t.prototype.onDragEnd=function(t){var e=t.element,n=t.model,a=this.positions[n.prop],r=this.isTarget(n,t.event);r&&this.reorder.emit({prevIndex:a.index,newIndex:r.i,model:n}),this.lastDraggingIndex=void 0,e.style.left="auto"},t.prototype.isTarget=function(t,e){var n=0,a=this.document.elementsFromPoint(e.x||e.clientX,e.y||e.clientY),r=function(e){var r=i.positions[e];if(t.prop!==e&&a.find(function(t){return t===r.element}))return{value:{pos:r,i:n}};n++},i=this;for(var o in this.positions){var s=r(o);if("object"==typeof s)return s.value}},t.prototype.createMapDiffs=function(){return this.draggables.toArray().reduce(function(t,e){return t[e.dragModel.$$id]=e,t},{})},a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"reorder",void 0),a([i.Output(),r("design:type",i.EventEmitter)],t.prototype,"targetChanged",void 0),a([i.ContentChildren(o.DraggableDirective,{descendants:!0}),r("design:type",i.QueryList)],t.prototype,"draggables",void 0),a([i.Directive({selector:"[orderable]"})],t)}()},yx2s:function(t,e,n){"use strict";var a=n("FWf1");e.canReportError=function(t){for(;t;){var e=t.destination;if(t.closed||t.isStopped)return!1;t=e&&e instanceof a.Subscriber?e:null}return!0}},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\xedut","'iens m\xedut"],mm:[t+" m\xeduts",t+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[t+" \xfeoras",t+" \xfeoras"],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?r[n][0]:e?r[n][0]:r[n][1]}n("wd/R").defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".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 \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] 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}})}()},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa\u2019_cha\u2019_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\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".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\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] 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\u2019":-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\u2019 tup",mm:n,h:"wa\u2019 rep",hh:n,d:"wa\u2019 jaj",dd:n,M:"wa\u2019 jar",MM:n,y:"wa\u2019 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 u}),n.d(e,"a",function(){return f});var a=n("CcnG"),r=n("DQlY"),i=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["role","document"]],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","modal-content"]],null,null,null,null,null)),a["\u0275ncd"](null,0)],null,function(t,e){var n=e.component;t(e,0,0,"modal-dialog"+(n.config.class?" "+n.config.class:""))})}function s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"modal-container",[["class","modal"],["role","dialog"],["tabindex","-1"]],[[1,"aria-modal",0]],[[null,"click"],["window","keydown.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n)&&r),"window:keydown.esc"===e&&(r=!1!==a["\u0275nov"](t,1).onEsc(n)&&r),r},o,i)),a["\u0275did"](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 u=a["\u0275ccf"]("modal-container",r.d,s,{},{},["*"]),l=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function c(t){return a["\u0275vid"](0,[],null,null)}function d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"bs-modal-backdrop",[["class","modal-backdrop"]],null,null,null,c,l)),a["\u0275did"](1,114688,null,0,r.c,[a.ElementRef,a.Renderer2],null,null)],function(t,e){t(e,1,0)},null)}var f=a["\u0275ccf"]("bs-modal-backdrop",r.c,d,{},{},[])},zAZS:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("mrSG"),r=n("FFOo");function i(t,e){return function(n){return n.lift(new o(t,e,n))}}var o=function(){function t(t,e,n){this.predicate=t,this.thisArg=e,this.source=n}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg,this.source))},t}(),s=function(t){function e(e,n,a,r){var i=t.call(this,e)||this;return i.predicate=n,i.thisArg=a,i.source=r,i.index=0,i.thisArg=a||i,i}return a.__extends(e,t),e.prototype.notifyComplete=function(t){this.destination.next(t),this.destination.complete()},e.prototype._next=function(t){var 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)},e.prototype._complete=function(){this.notifyComplete(!0)},e}(r.a)},"zB/H":function(t,e,n){"use strict";var a=n("mbIT"),r=n("GMZp"),i=n("pshJ"),o=n("LBXl");function s(t){return t.reduce(function(t,e){return t.concat(e instanceof o.UnsubscriptionError?e.errors:e)},[])}e.Subscription=function(){function t(t){this.closed=!1,this._parent=null,this._parents=null,this._subscriptions=null,t&&(this._unsubscribe=t)}var e;return t.prototype.unsubscribe=function(){var t,e=!1;if(!this.closed){var n=this._parent,u=this._parents,l=this._unsubscribe,c=this._subscriptions;this.closed=!0,this._parent=null,this._parents=null,this._subscriptions=null;for(var d=-1,f=u?u.length:0;n;)n.remove(this),n=++d<f&&u[d]||null;if(i.isFunction(l))try{l.call(this)}catch(h){e=!0,t=h instanceof o.UnsubscriptionError?s(h.errors):[h]}if(a.isArray(c))for(d=-1,f=c.length;++d<f;){var p=c[d];if(r.isObject(p))try{p.unsubscribe()}catch(h){e=!0,t=t||[],h instanceof o.UnsubscriptionError?t=t.concat(s(h.errors)):t.push(h)}}if(e)throw new o.UnsubscriptionError(t)}},t.prototype.add=function(e){var n=e;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)){var a=n;(n=new t)._subscriptions=[a]}break;default:if(!e)return t.EMPTY;throw new Error("unrecognized teardown "+e+" added to Subscription.")}if(n._addParent(this)){var r=this._subscriptions;r?r.push(n):this._subscriptions=[n]}return n},t.prototype.remove=function(t){var e=this._subscriptions;if(e){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}},t.prototype._addParent=function(t){var e=this._parent,n=this._parents;return e!==t&&(e?n?-1===n.indexOf(t)&&(n.push(t),!0):(this._parents=[t],!0):(this._parent=t,!0))},t.EMPTY=((e=new t).closed=!0,e),t}()},zQHH:function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("15JJ");function r(t,e){return e?Object(a.a)(function(){return t},e):Object(a.a)(function(){return t})}},zUnb:function(t,e,n){"use strict";n.r(e);var a=n("CcnG"),r=n("4mcN"),i=n.n(r),o=n("VLs4"),s=n.n(o),u=n("tAZD"),l=n.n(u),c=n("2Yyj"),d=n.n(c),f=n("Hfs6"),p=n.n(f),h=n("tdLY"),g=n.n(h),m=n("1IWC"),b=n.n(m),y=n("Paii"),v=n.n(y),_=n("jQh8"),x=n.n(_),T=n("BAOO"),w=n.n(T),S=n("vT00"),O=n.n(S),C=n("5D2u"),k=n.n(C),I=n("u6yn"),D=n.n(I),R=function(){function t(){}return t.getBrowserLang=function(){var t=navigator.language;return t.includes("cs")?"cs":t.includes("de")?"de-DE":t.includes("en")?"en-US":t.includes("es")?"es-ES":t.includes("fr")?"fr-FR":t.includes("id")?"id-ID":t.includes("it")?"it-IT":t.includes("ja")?"ja-JP":t.includes("ko")?"ko-KR":t.includes("pl")?"pl-PL":t.includes("pt")?"pt-BR":t.includes("zh-TW")?"zh-TW":t.includes("zh")?"zh-CN":void 0},t.getLocale=function(){return window.localStorage.getItem("lang")||this.getBrowserLang()||"en-US"},t.setLocale=function(t){window.localStorage.setItem("lang",t)},t.getLocaleData=function(){var t=l.a;switch(this.getLocale()){case"cs":t=i.a;break;case"de-DE":t=s.a;break;case"es-ES":t=d.a;break;case"fr-FR":t=p.a;break;case"id-ID":t=g.a;break;case"it-IT":t=b.a;break;case"ja-JP":t=v.a;break;case"ko-KR":t=x.a;break;case"pl-PL":t=w.a;break;case"pt-BR":t=O.a;break;case"zh-CN":t=k.a;break;case"zh-TW":t=D.a}return t},t}(),N=R.getLocale(),A=function(t){t=t||"en-US";try{return n("vOVK")("./messages."+t+".xlf")}catch(e){return[]}},E=[{provide:a.LOCALE_ID,useValue:N},{provide:a.TRANSLATIONS,useFactory:A,deps:[a.LOCALE_ID]},{provide:a.TRANSLATIONS_FORMAT,useValue:"xlf"}],L=n("Ip0R");function P(){return localStorage.getItem("access_token")}Object(L.registerLocaleData)(R.getLocaleData(),R.getLocale());var M=function(){return function(){}}(),j=n("eajB"),q=n("aexS"),F=function(){return Object.assign(new j.a,{container:"body"})},z=function(){function t(t,e){this.authStorageService=t,this.router=e,this.title="cd"}return t.prototype.isLoginActive=function(){return"/login"===this.router.url||!this.authStorageService.isLoggedIn()},t.prototype.isDashboardPage=function(){return"/dashboard"===this.router.url},t}(),Y=n("mrSG"),H=n("S5bw"),G=function(){function t(){}return t.START="start",t.STOP="stop",t.UPDATE="update",t.RESET="reset",t.UNSUBSCRIBE="unsubscribe",t}(),V="block-ui-main",B=function(){function t(){this.blockUISettings={},this.blockUIInstances={},this.blockUISubject=new H.a,this.blockUIObservable=this.blockUISubject.asObservable(),this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this))}return t.prototype.getSettings=function(){return this.blockUISettings},t.prototype.updateSettings=function(t){void 0===t&&(t={}),this.blockUISettings=Object(Y.__assign)({},this.blockUISettings,t)},t.prototype.decorate=function(t){void 0===t&&(t=V);var e={name:t,isActive:!1,blockCount:0,start:this.dispatch(this.blockUISubject,G.START,t),update:this.dispatch(this.blockUISubject,G.UPDATE,t),stop:this.dispatch(this.blockUISubject,G.STOP,t),reset:this.dispatch(this.blockUISubject,G.RESET,t),unsubscribe:this.dispatch(this.blockUISubject,G.UNSUBSCRIBE,t)};return this.blockUIInstances[t]=this.blockUIInstances[t]||e,e},t.prototype.observe=function(){return this.blockUIObservable},t.prototype.blockUIMiddleware=function(t){var e=t.name,n=null;switch(t.action){case G.START:n=!0;break;case G.STOP:case G.RESET:n=!1}null!==n&&(this.blockUIInstances[e].isActive=n)},t.prototype.dispatch=function(t,e,n){return void 0===n&&(n=V),function(a){t.next({name:n,action:e,message:a})}},t}(),U=function(){function t(t){this.blockUI=t}return t.prototype.ngOnInit=function(){this.name=this.name||V,this.template=this.template||this.blockUI.blockUISettings.template},t}(),W=function(){function t(t,e,n){this.blockUI=t,this.resolver=e,this.changeDetectionRef=n,this.name=V,this.delayStart=0,this.delayStop=0,this.state={startTimeout:null,stopTimeout:null,blockCount:0},this.active=!1}return t.prototype.ngOnInit=function(){this.settings=this.blockUI.getSettings(),this.blockUISubscription=this.subscribeToBlockUI(this.blockUI.observe())},t.prototype.ngAfterViewInit=function(){try{if(!this.templateCmp)return!1;if(this.templateCmp instanceof a.TemplateRef)this.templateOutlet.createEmbeddedView(this.templateCmp);else{var t=this.resolver.resolveComponentFactory(this.templateCmp);this.templateCompRef=this.templateOutlet.createComponent(t),this.updateBlockTemplate(this.message)}}catch(e){console.error("ng-block-ui:",e)}},t.prototype.ngAfterViewChecked=function(){this.changeDetectionRef.detectChanges()},t.prototype.subscribeToBlockUI=function(t){var e=this;return t.subscribe(function(t){return e.onDispatchedEvent(t)})},t.prototype.onDispatchedEvent=function(t){switch(t.action){case G.START:this.onStart(t);break;case G.STOP:this.onStop(t);break;case G.UPDATE:this.onUpdate(t);break;case G.RESET:this.onReset();break;case G.UNSUBSCRIBE:this.onStop(t),this.onUnsubscribe(t.name)}},t.prototype.onStart=function(t){var e=this,n=t.message;if(t.name===this.name){var a=this.delayStart||this.settings.delayStart||0;a?(null===this.state.startTimeout&&(this.state.startTimeout=setTimeout(function(){e.showBlock(n)},a)),this.state.blockCount++):this.showBlock(n),this.updateInstanceBlockCount()}},t.prototype.onStop=function(t){var e=this;if(t.name===this.name){if(this.state.blockCount>1)this.state.blockCount--;else if(this.active){var n=this.delayStop||this.settings.delayStop||0;n?null===this.state.stopTimeout&&(this.state.stopTimeout=setTimeout(function(){e.hideBlock()},n)):this.hideBlock()}else this.clearState();this.updateInstanceBlockCount()}},t.prototype.onReset=function(){this.hideBlock()},t.prototype.onUpdate=function(t){var e=t.message;t.name===this.name&&(this.active=!0,this.message=e||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.changeDetectionRef.detectChanges())},t.prototype.showBlock=function(t){this.active=!0,this.message=t||this.defaultMessage||this.settings.message,this.updateBlockTemplate(this.message),this.changeDetectionRef.detectChanges()},t.prototype.hideBlock=function(){this.clearState(),this.active=!1,this.changeDetectionRef.detectChanges()},t.prototype.clearState=function(){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()},t.prototype.updateBlockTemplate=function(t){this.templateCompRef&&this.templateCompRef instanceof a.ComponentRef&&(this.templateCompRef.instance.message=t)},t.prototype.onUnsubscribe=function(t){this.blockUISubscription&&t===this.name&&this.blockUISubscription.unsubscribe()},t.prototype.updateInstanceBlockCount=function(){this.blockUI.blockUIInstances[this.name]&&(this.blockUI.blockUIInstances[this.name].blockCount=this.state.blockCount)},t.prototype.ngOnDestroy=function(){this.onUnsubscribe(this.name)},t}(),K=function(){function t(t){this.blockUIInstance=t}return t.prototype.start=function(t,e){this.dispatch(t,G.START,e)},t.prototype.stop=function(t){this.dispatch(t,G.STOP)},t.prototype.unsubscribe=function(t){this.dispatch(t,G.UNSUBSCRIBE)},t.prototype.isActive=function(t){void 0===t&&(t=null);var e=t?this.toArray(t):null,n=this.blockUIInstance.blockUIInstances;return Object.keys(n).some(function(t){return e?e.indexOf(n[t].name)>=0&&n[t].isActive:n[t].isActive})},t.prototype.dispatch=function(t,e,n){var a=this;void 0===t&&(t=[]),this.toArray(t).forEach(function(t){return a.blockUIInstance.decorate(t)[e](n)})},t.prototype.toArray=function(t){return void 0===t&&(t=[]),"string"==typeof t?[t]:t},t}(),$=new B,Z=new a.InjectionToken("BlockUIModuleSettings");function X(t){return $.updateSettings(t),$}var J=function(){function t(){}return t.forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:Z,useValue:e},{provide:B,useFactory:X,deps:[Z]},K]}},t}(),Q=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function tt(t){return a["\u0275vid"](0,[a["\u0275ncd"](null,0),(t()(),a["\u0275eld"](1,0,null,null,1,"block-ui-content",[],null,null,null,ut,at)),a["\u0275did"](2,12828672,null,0,W,[B,a.ComponentFactoryResolver,a.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 et(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"block-ui",[],null,null,null,tt,Q)),a["\u0275did"](1,114688,null,0,U,[B],null,null)],function(t,e){t(e,1,0)},null)}var nt=a["\u0275ccf"]("block-ui",U,et,{name:"name",message:"message",delayStart:"delayStart",delayStop:"delayStop",template:"template"},{},["*"]),at=a["\u0275crt"]({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 rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,1,0,n.message||n.defaultMessage)})}function it(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","block-ui-spinner"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"div",[["class","loader"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,rt)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,n.message||n.defaultMessage)},null)}function ot(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function st(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,[[1,3],["templateOutlet",2]],null,0,null,ot)),(t()(),a["\u0275and"](0,null,null,0))],null,null)}function ut(t){return a["\u0275vid"](0,[a["\u0275qud"](671088640,1,{templateOutlet:0}),(t()(),a["\u0275eld"](1,0,null,null,6,"div",[],null,null,null,null,null)),a["\u0275did"](2,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](3,{active:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,it)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,st)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=a["\u0275inlineInterpolate"](2,"block-ui-wrapper ",n.name," ",n.className,""),i=t(e,3,0,n.active);t(e,2,0,r,i),t(e,5,0,!n.templateCmp),t(e,7,0,n.templateCmp)},null)}function lt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"block-ui-content",[],null,null,null,ut,at)),a["\u0275did"](1,12828672,null,0,W,[B,a.ComponentFactoryResolver,a.ChangeDetectorRef],null,null)],function(t,e){t(e,1,0)},null)}var ct=a["\u0275ccf"]("block-ui-content",W,lt,{name:"name",delayStart:"delayStart",delayStop:"delayStop",defaultMessage:"message",templateCmp:"template"},{},[]),dt=n("SZbH"),ft=a["\u0275crt"]({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 pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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()(),a["\u0275eld"](1,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"]))],null,null)}function ht(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["[","]"]))],null,function(t,e){t(e,1,0,e.component.duplicatesCount+1)})}function gt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,ht)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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 mt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 bt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["aria-live","polite"],["role","alertdialog"]],[[8,"className",0],[1,"aria-label",0]],null,null,null,null)),(t()(),a["\u0275ted"](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 yt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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 vt(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,pt)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,gt)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,mt)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,bt)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,yt)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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 _t(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).tapToast()&&r),"mouseenter"===e&&(r=!1!==a["\u0275nov"](t,1).stickAround()&&r),"mouseleave"===e&&(r=!1!==a["\u0275nov"](t,1).delayedHideToast()&&r),r},vt,ft)),a["\u0275did"](1,180224,null,0,dt.c,[dt.j,dt.g,a.NgZone],null,null)],null,function(t,e){t(e,0,0,a["\u0275nov"](e,1).toastClasses,a["\u0275nov"](e,1).state,a["\u0275nov"](e,1).displayStyle)})}var xt=a["\u0275ccf"]("[toast-component]",dt.c,_t,{},{},[]),Tt=n("pMnS"),wt=n("pKUh"),St=n("YAQW"),Ot=n("OZfm"),Ct=n("lqqz"),kt=n("ZYCi"),It=function(){return function(){this.cardClass=""}}(),Dt=a["\u0275crt"]({encapsulation:0,styles:[[".card[_ngcontent-%COMP%]{border:.5px solid #ddd;border-radius:3px;background-color:#fff;box-shadow:0 1px 1px rgba(3,3,3,.175);margin:0 auto 20px;padding:0 20px;width:auto;height:auto;min-height:6vw;position:relative;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-title[_ngcontent-%COMP%]{margin:1.1vw 0;padding:0}.card-body[_ngcontent-%COMP%]{text-align:center;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.content-chart[_ngcontent-%COMP%]{margin-top:-.7vw;position:unset;top:unset;left:unset;-webkit-transform:unset;transform:unset}.no-center[_ngcontent-%COMP%]{position:unset;top:unset;left:unset;-webkit-transform:unset;transform:unset}.text-area-size-2[_ngcontent-%COMP%]{margin-right:-50%;-webkit-transform:translate(-50%,-20%);transform:translate(-50%,-20%)}.text-area-size-3[_ngcontent-%COMP%]{margin-right:-50%;-webkit-transform:translate(-50%,-40%);transform:translate(-50%,-40%)}.content-highlight[_ngcontent-%COMP%]{font-weight:700}.card-medium[_ngcontent-%COMP%]{min-height:12vw}.scroll[_ngcontent-%COMP%]{max-height:18vw;overflow-y:auto}.text-monospace[_ngcontent-%COMP%]{font-size:12px;font-family:monospace;text-align:left}@media (max-width:1599px){.card[_ngcontent-%COMP%]{min-height:7.8vw}.card-medium[_ngcontent-%COMP%]{min-height:14.4vw}}@media (max-width:calc(1200px - 1px)){.card-medium[_ngcontent-%COMP%]{min-height:18vw}.content-chart[_ngcontent-%COMP%]{margin-top:-.6vw}}@media (max-width:calc(992px - 1px)){.card[_ngcontent-%COMP%]{min-height:12vw}.content-chart[_ngcontent-%COMP%]{margin-top:-.3vw}}@media (max-width:calc(992px - 1px)) and (min-width:768px){.card-medium[_ngcontent-%COMP%]{min-height:26.4vw}}@media (max-width:599px){.card[_ngcontent-%COMP%]{min-height:18vw}}@media (max-width:319px){.card[_ngcontent-%COMP%]{min-height:24vw}}"]],data:{}});function Rt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](1,671744,null,0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](2,null,["",""]))],function(t,e){t(e,1,0,e.component.link)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,1).target,a["\u0275nov"](e,1).href),t(e,2,0,n.cardTitle)})}function Nt(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" "," "]))],null,function(t,e){t(e,0,0,e.component.cardTitle)})}function At(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","card"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](2,0,null,null,3,"div",[["class","card-title"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Rt)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["noLinkTitle",2]],null,0,null,Nt)),(t()(),a["\u0275eld"](6,0,null,null,2,"div",[["class","card-body"]],null,null,null,null,null)),a["\u0275did"](7,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275ncd"](null,0)],function(t,e){var n=e.component;t(e,1,0,"card",n.cardClass),t(e,4,0,n.link,a["\u0275nov"](e,5)),t(e,7,0,"card-body",n.contentClass)},null)}var Et=function(){return function(){}}(),Lt=a["\u0275crt"]({encapsulation:0,styles:[[".info-group-title[_ngcontent-%COMP%]{margin:0 0 .5vw .5vw;padding:0;font-size:21px}"]],data:{}});function Pt(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","info-group-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","\n"])),a["\u0275ncd"](null,0)],null,function(t,e){t(e,1,0,e.component.groupTitle)})}var Mt,jt=n("xdbM"),qt=n("WyAD"),Ft=n("LvDl"),zt=n("NEZu"),Yt=n("Fgil"),Ht=n("o4+5");!function(t){t.DEFAULT_RED="#ff7592",t.DEFAULT_BLUE="#1d699d",t.DEFAULT_ORANGE="#ffa500",t.DEFAULT_MAGENTA="#564d65",t.DEFAULT_GREEN="#00bb00"}(Mt||(Mt={}));var Gt=function(){function t(t,e){var n=this;this.dimlessBinary=t,this.dimless=e,this.config={},this.isBytesData=!1,this.showLabelAsTooltip=!1,this.prepareFn=new a.EventEmitter,this.chartConfig={chartType:"pie",dataset:[{label:null,borderWidth:0}],options:{legend:{display:!0,position:"right",labels:{usePointStyle:!0},onClick:function(t,e){n.onLegendClick(t,e)}},animation:{duration:0},tooltips:{enabled:!1},title:{display:!1}}},this.hiddenSlices=[]}return t.prototype.ngOnInit=function(){var t=this;qt.pluginService.register({beforeDraw:function(t){if(t.options.center_text){var e=t.chart.width,n=t.chart.height,a=t.chart.ctx;a.restore();var r=(n/114).toFixed(2);a.font=r+"em sans-serif",a.textBaseline="middle";var i=t.options.center_text,o=Math.round((e-a.measureText(i).width)/2);a.fillText(i,o,n/2),a.save()}}});var e=new zt.a(this.chartCanvasRef,this.chartTooltipRef,function(t,e){return e+t.caretX+"px"},function(t,e){return e+t.caretY-t.height-10+"px"});e.getBody=function(e){return t.getChartTooltipBody(e)},this.chartConfig.options.tooltips.custom=function(t){e.customTooltips(t)},this.chartConfig.colors=[{backgroundColor:[Mt.DEFAULT_RED,Mt.DEFAULT_BLUE,Mt.DEFAULT_ORANGE,Mt.DEFAULT_GREEN,Mt.DEFAULT_MAGENTA]}],Ft.merge(this.chartConfig,this.config),this.prepareFn.emit([this.chartConfig,this.data])},t.prototype.ngOnChanges=function(){this.prepareFn.emit([this.chartConfig,this.data]),this.hideSlices(),this.setChartSliceBorderWidth()},t.prototype.getChartTooltipBody=function(t){var 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(": "))},t.prototype.setChartSliceBorderWidth=function(){var t=0;Ft.forEach(this.chartConfig.dataset[0].data,function(e){e>0&&(t+=1)}),this.chartConfig.dataset[0].borderWidth=t>1?1:0},t.prototype.onLegendClick=function(t,e){t.stopPropagation(),this.hiddenSlices[e.index]=!e.hidden,this.ngOnChanges()},t.prototype.hideSlices=function(){var t=this;Ft.forEach(this.chartConfig.dataset[0].data,function(e,n){t.hiddenSlices[n]&&(t.chartConfig.dataset[0].data[n]=void 0)})},t}(),Vt=a["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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: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 Bt(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{chartCanvasRef:0}),a["\u0275qud"](402653184,2,{chartTooltipRef:0}),(t()(),a["\u0275eld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""],["class","chart-canvas"]],null,null,null,null,null)),a["\u0275did"](4,737280,null,0,jt.BaseChartDirective,[a.ElementRef],{datasets:[0,"datasets"],labels:[1,"labels"],options:[2,"options"],chartType:[3,"chartType"],colors:[4,"colors"]},null),(t()(),a["\u0275eld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["\u0275eld"](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)},null)}var Ut=function(){function t(){}return t.prototype.transform=function(t){return"HEALTH_OK"===t?{color:"#00bb00"}:"HEALTH_WARN"===t?{color:"#ffa500"}:"HEALTH_ERR"===t?{color:"#ff0000"}:null},t}(),Wt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){return t?t.monmap.mons.length.toString()+" ("+this.i18n("quorum")+" "+t.quorum.join(", ")+")":""},t}(),Kt=n("Jm/i"),$t=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e=0,n=0;Ft.each(t.osds,function(t){t.in&&e++,t.up&&n++});var 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:""});var r=t.osds.length-n,i=n-e;if(r>0||i>0){a.push({content:"",class:"card-text-line-break"});var o=r>0?r+" "+this.i18n("down"):"",s=r>0&&i>0?", ":"",u=i>0?i+" "+this.i18n("out"):"";a.push({content:""+o+s+u,class:"card-text-error"})}return a},t}(),Zt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e=this.i18n("n/a"),n=Ft.isUndefined(t.active_name)?"":this.i18n("active daemon")+": "+t.active_name;n.length>0&&(e="1");var a=t.standbys.length,r=[{content:e+" "+this.i18n("active"),class:"mgr-active-name",titleText:n}];return r.push({content:"",class:"card-text-line-break",titleText:""}),r.push({content:a+" "+this.i18n("standby"),class:"",titleText:""}),r},t}(),Xt=function(){function t(t){this.i18n=t}return t.prototype.transform=function(t){if(!t)return"";var e="",n="",a=0,r=0,i=0;Ft.each(t.standbys,function(){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"):(Ft.each(t.filesystems,function(t){Ft.each(t.mdsmap.info,function(t){"up:standby-replay"===t.state?i+=1:r+=1})}),e=r+" "+this.i18n("active"),n=a+i+" "+this.i18n("standby"));var o=[{content:e,class:""}];return n&&(o.push({content:"",class:"card-text-line-break"}),o.push({content:n,class:""})),o},t}(),Jt=function(){function t(){}return t.prototype.transform=function(t,e){return Ft.round(t,e)},t}(),Qt=n("aXbf"),te=n("DtyJ"),ee=n("t/Na"),ne=n("pL04"),ae=function(){function t(t){this.http=t}return t.prototype.getFullHealth=function(){return this.http.get("api/health/full")},t.prototype.getMinimalHealth=function(){return this.http.get("api/health/minimal")},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),re=n("ej+x"),ie=n("26FU"),oe=n("xXU7"),se=function(){function t(){this.intervalDataSource=new ie.a(null),this.intervalData$=this.intervalDataSource.asObservable();var t=parseInt(sessionStorage.getItem("dashboard_interval"),10)||5e3;this.setRefreshInterval(t)}return t.prototype.setRefreshInterval=function(t){var e=this;this.intervalTime=t,sessionStorage.setItem("dashboard_interval",t.toString()),this.intervalSubscription&&this.intervalSubscription.unsubscribe(),this.intervalSubscription=Object(oe.a)(this.intervalTime).subscribe(function(){return e.intervalDataSource.next(e.intervalTime)})},t.prototype.getRefreshInterval=function(){return this.intervalTime},t.prototype.ngOnDestroy=function(){this.intervalSubscription&&this.intervalSubscription.unsubscribe()},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),ue=n("d+Og"),le=function(){function t(t,e,n,a,r,i,o,s){this.healthService=t,this.i18n=e,this.authStorageService=n,this.pgCategoryService=a,this.featureToggles=r,this.refreshIntervalService=i,this.dimlessBinary=o,this.dimless=s,this.interval=new te.Subscription,this.rawCapacityChartConfig={options:{title:{display:!0,position:"bottom"}}},this.objectsChartConfig={options:{title:{display:!0,position:"bottom"}},colors:[{backgroundColor:[Mt.DEFAULT_GREEN,Mt.DEFAULT_MAGENTA,Mt.DEFAULT_ORANGE,Mt.DEFAULT_RED]}]},this.pgStatusChartConfig={colors:[{backgroundColor:[Mt.DEFAULT_GREEN,Mt.DEFAULT_BLUE,Mt.DEFAULT_ORANGE,Mt.DEFAULT_RED]}]},this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}return t.prototype.ngOnInit=function(){var t=this;this.getHealth(),this.interval=this.refreshIntervalService.intervalData$.subscribe(function(){t.getHealth()})},t.prototype.ngOnDestroy=function(){this.interval.unsubscribe()},t.prototype.getHealth=function(){var t=this;this.healthService.getMinimalHealth().subscribe(function(e){t.healthData=e})},t.prototype.prepareReadWriteRatio=function(t){var e=[],n=[],a=this.healthData.client_perf.write_op_per_sec+this.healthData.client_perf.read_op_per_sec;e.push(this.i18n("Writes")+" ("+this.calcPercentage(this.healthData.client_perf.write_op_per_sec,a)+"%)"),n.push(this.healthData.client_perf.write_op_per_sec),e.push(this.i18n("Reads")+" ("+this.calcPercentage(this.healthData.client_perf.read_op_per_sec,a)+"%)"),n.push(this.healthData.client_perf.read_op_per_sec),t.dataset[0].data=n,t.labels=e},t.prototype.prepareRawUsage=function(t,e){var 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=[e.df.stats.total_used_raw_bytes,e.df.stats.total_avail_bytes],t.labels=[this.dimlessBinary.transform(e.df.stats.total_used_raw_bytes)+" "+this.i18n("Used")+" ("+a+"%)",this.dimlessBinary.transform(e.df.stats.total_bytes-e.df.stats.total_used_raw_bytes)+" "+this.i18n("Avail.")+" ("+n+"%)"],t.options.title.text=this.dimlessBinary.transform(e.df.stats.total_bytes)+" "+this.i18n("total")},t.prototype.preparePgStatus=function(t,e){var n=this,a={};Ft.forEach(e.pg_info.statuses,function(t,e){var r=n.pgCategoryService.getTypeByStates(e);Ft.isUndefined(a[r])&&(a[r]=0),a[r]+=t}),t.dataset[0].data=this.pgCategoryService.getAllTypes().map(function(t){return a[t]}),t.labels=[this.i18n("Clean")+" ("+this.calcPercentage(a.clean,e.pg_info.pgs_per_osd)+"%)",this.i18n("Working")+" ("+this.calcPercentage(a.working,e.pg_info.pgs_per_osd)+"%)",this.i18n("Warning")+" ("+this.calcPercentage(a.warning,e.pg_info.pgs_per_osd)+"%)",this.i18n("Unknown")+" ("+this.calcPercentage(a.unknown,e.pg_info.pgs_per_osd)+"%)"]},t.prototype.prepareObjects=function(t,e){var n=e.pg_info.object_stats.num_object_copies,a=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;t.labels=[this.i18n("Healthy")+" ("+this.calcPercentage(a,n)+"%)",this.i18n("Misplaced")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_misplaced,n)+"%)",this.i18n("Degraded")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_degraded,n)+"%)",this.i18n("Unfound")+" ("+this.calcPercentage(e.pg_info.object_stats.num_objects_unfound,n)+"%)"],t.dataset[0].data=[a,e.pg_info.object_stats.num_objects_misplaced,e.pg_info.object_stats.num_objects_degraded,e.pg_info.object_stats.num_objects_unfound],t.options.title.text=this.dimless.transform(e.pg_info.object_stats.num_objects)+" "+this.i18n("total")+" ("+this.dimless.transform(n)+" "+this.i18n("replicas")+")",t.options.maintainAspectRatio=window.innerWidth>=375},t.prototype.isClientReadWriteChartShowable=function(){return(this.healthData.client_perf.read_op_per_sec||0)+(this.healthData.client_perf.write_op_per_sec||0)>0},t.prototype.calcPercentage=function(t,e){return Ft.isNumber(t)&&Ft.isNumber(e)&&0!==e?Math.round(t/e*100):0},t}(),ce=a["\u0275crt"]({encapsulation:0,styles:[["cd-info-card[_ngcontent-%COMP%]{padding:0 .5vw}.cd-container-flex[_ngcontent-%COMP%]{margin:0;padding:0;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:justify;justify-content:space-between}.cd-col-5[_ngcontent-%COMP%]{width:20%}@media (max-width:1599px){.cd-col-5[_ngcontent-%COMP%]{width:25%}}@media (max-width:calc(1200px - 1px)){.cd-col-5[_ngcontent-%COMP%]{width:33%}}@media (max-width:calc(992px - 1px)){.cd-col-5[_ngcontent-%COMP%]{width:50%}}@media (max-width:calc(768px - 1px)){cd-info-card[_ngcontent-%COMP%]{padding:0}.cd-col-5[_ngcontent-%COMP%]{width:100%}}.info-group[_ngcontent-%COMP%]{margin:0;padding:0}  .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}.mgr-active-name[_ngcontent-%COMP%]:hover{cursor:pointer}"]],data:{}});function de(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function fe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,3,"span",[],null,null,null,null,null)),a["\u0275did"](2,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275ppd"](3,1),(t()(),a["\u0275ted"](4,null,["",""])),(t()(),a["\u0275ted"](5,null,[": "," "]))],function(t,e){var n=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent.parent.parent.parent,0),e.context.$implicit.severity));t(e,2,0,n)},function(t,e){t(e,4,0,e.context.$implicit.type),t(e,5,0,e.context.$implicit.summary.message)})}function pe(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,de)),a["\u0275did"](1,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](2,0,null,null,2,"ul",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,fe)),a["\u0275did"](4,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,1,0,a["\u0275nov"](e.parent.parent.parent.parent,7)),t(e,4,0,n.healthData.health.checks)},null)}function he(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),a["\u0275and"](0,[["healthChecks",2]],null,0,null,pe)),(t()(),a["\u0275eld"](2,16777216,null,null,4,"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 r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).toggle()&&r),r},null,null)),a["\u0275did"](3,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275ppd"](4,1),a["\u0275did"](5,212992,[["healthChecksTarget",4]],0,Ot.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ot.a,Ct.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"],container:[3,"container"],containerClass:[4,"containerClass"]},null),(t()(),a["\u0275ted"](6,null,[" "," "])),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component,r=a["\u0275unv"](e,3,0,t(e,4,0,a["\u0275nov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,3,0,r),t(e,5,0,a["\u0275nov"](e,1),"bottom","","body","info-card-popover-cluster-status")},function(t,e){t(e,6,0,e.component.healthData.health.status)})}function ge(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,3,"div",[],null,null,null,null,null)),a["\u0275did"](2,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275ppd"](3,1),(t()(),a["\u0275ted"](4,null,[" "," "]))],function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent.parent,0),n.healthData.health.status));t(e,2,0,r)},function(t,e){t(e,4,0,e.component.healthData.health.status)})}function me(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-card",[["cardTitle","Cluster Status"],["class","col-sm-6 col-md-4 col-lg-3"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,he)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,ge)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Cluster Status",(null==n.healthData.health?null:null==n.healthData.health.checks?null:n.healthData.health.checks.length)>0?"content-highlight text-area-size-2":"content-highlight"),t(e,3,0,(null==n.healthData.health?null: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 be(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Monitors"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-highlight"],["link","/monitor"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Monitors","/monitor","content-highlight")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,1),n.healthData.mon_status));t(e,2,0,r)})}function ye(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),a["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,2,0,e.context.$implicit.content)})}function ve(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","OSDs"],["class","col-sm-6 col-md-4 col-lg-3"],["link","/osd"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,ye)),a["\u0275did"](3,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,1,0,"OSDs","/osd",(5==e.context.ngIf.length?"text-area-size-3":"text-area-size-2")+" content-highlight"),t(e,3,0,e.context.ngIf)},null)}function _e(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],[[8,"title",0]],null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),a["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,0,0,null!=e.context.$implicit.titleText?e.context.$implicit.titleText:""),t(e,2,0,e.context.$implicit.content)})}function xe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"cd-info-card",[["cardTitle","Manager Daemons"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-highlight text-area-size-2"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),a["\u0275and"](16777216,null,0,2,null,_e)),a["\u0275did"](3,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275ppd"](4,1)],function(t,e){var n=e.component;t(e,1,0,"Manager Daemons","content-highlight text-area-size-2");var r=a["\u0275unv"](e,3,0,t(e,4,0,a["\u0275nov"](e.parent.parent.parent,3),n.healthData.mgr_map));t(e,3,0,r)},null)}function Te(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Hosts"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/hosts"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"Hosts","/hosts","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.hosts)})}function we(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","Object Gateways"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/rgw/daemon"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"Object Gateways","/rgw/daemon","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.rgw)})}function Se(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),(t()(),a["\u0275ted"](2,null,[" "," "]))],function(t,e){t(e,1,0,e.context.$implicit.class)},function(t,e){t(e,2,0,e.context.$implicit.content)})}function Oe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardTitle","Metadata Servers"],["class","col-sm-6 col-md-4 col-lg-3"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],contentClass:[1,"contentClass"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Se)),a["\u0275did"](3,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.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 Ce(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardTitle","iSCSI Gateways"],["class","col-sm-6 col-md-4 col-lg-3"],["contentClass","content-medium content-highlight"],["link","/block/iscsi"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," total "]))],function(t,e){t(e,1,0,"iSCSI Gateways","/block/iscsi","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.iscsi_daemons)})}function ke(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,19,"cd-info-group",[["class","row info-group"],["groupTitle","Status"]],null,null,null,Pt,Lt)),a["\u0275did"](1,49152,null,0,Et,[],{groupTitle:[0,"groupTitle"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,me)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,be)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,2,null,ve)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275ppd"](8,1),(t()(),a["\u0275and"](16777216,null,0,1,null,xe)),a["\u0275did"](10,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Te)),a["\u0275did"](12,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,we)),a["\u0275did"](14,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,2,null,Oe)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275ppd"](17,1),(t()(),a["\u0275and"](16777216,null,0,1,null,Ce)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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,n.healthData.mon_status);var r=a["\u0275unv"](e,7,0,t(e,8,0,a["\u0275nov"](e.parent.parent,2),n.healthData.osd_map));t(e,7,0,r),t(e,10,0,n.healthData.mgr_map),t(e,12,0,null!=n.healthData.hosts),t(e,14,0,e.parent.context.ngIf.rgw&&null!=n.healthData.rgw);var i=a["\u0275unv"](e,16,0,t(e,17,0,a["\u0275nov"](e.parent.parent,4),e.parent.context.ngIf.cephfs&&n.healthData.fs_map));t(e,16,0,i),t(e,19,0,e.parent.context.ngIf.iscsi&&null!=n.healthData.iscsi_daemons)},null)}function Ie(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client IOPS"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,2)],function(t,e){t(e,1,0,"Client IOPS","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,5),n.healthData.client_perf.read_op_per_sec+n.healthData.client_perf.write_op_per_sec,1));t(e,2,0,r)})}function De(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client Throughput"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Client Throughput","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,6),n.healthData.client_perf.read_bytes_sec+n.healthData.client_perf.write_bytes_sec))+"/s";t(e,2,0,r)})}function Re(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,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},Bt,Vt)),a["\u0275did"](1,638976,null,0,Gt,[Yt.a,Ht.a],{data:[0,"data"]},{prepareFn:"prepareFn"})],function(t,e){t(e,1,0,e.component.healthData)},null)}function Ne(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" N/A "]))],null,null)}function Ae(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Client Read/Write"],["class","cd-col-5"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Re)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Ne)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Client Read/Write","card-medium",n.isClientReadWriteChartShowable()?"content-chart":"content-medium content-highlight"),t(e,3,0,n.isClientReadWriteChartShowable()),t(e,5,0,!n.isClientReadWriteChartShowable())},null)}function Ee(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Recovery Throughput"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"Recovery Throughput","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,6),n.healthData.client_perf.recovering_bytes_per_sec))+"/s";t(e,2,0,r)})}function Le(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Scrub"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "]))],function(t,e){t(e,1,0,"Scrub","card-medium","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.scrub_status)})}function Pe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,12,"cd-info-group",[["class","row info-group"],["groupTitle","Performance"]],null,null,null,Pt,Lt)),a["\u0275did"](1,49152,null,0,Et,[],{groupTitle:[0,"groupTitle"]},null),(t()(),a["\u0275eld"](2,0,null,0,10,"div",[["class","cd-container-flex"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Ie)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,De)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ae)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ee)),a["\u0275did"](10,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Le)),a["\u0275did"](12,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Performance"),t(e,4,0,n.healthData.client_perf),t(e,6,0,n.healthData.client_perf),t(e,8,0,n.healthData.client_perf),t(e,10,0,n.healthData.client_perf),t(e,12,0,n.healthData.scrub_status)},null)}function Me(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Pools"],["class","cd-col-5"],["contentClass","content-medium content-highlight"],["link","/pool"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],link:[1,"link"],cardClass:[2,"cardClass"],contentClass:[3,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "]))],function(t,e){t(e,1,0,"Pools","/pool","card-medium","content-medium content-highlight")},function(t,e){t(e,2,0,e.component.healthData.pools.length)})}function je(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Raw Capacity"],["class","cd-col-5"],["contentClass","content-chart"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275eld"](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},Bt,Vt)),a["\u0275did"](3,638976,null,0,Gt,[Yt.a,Ht.a],{data:[0,"data"],config:[1,"config"],showLabelAsTooltip:[2,"showLabelAsTooltip"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"Raw Capacity","card-medium","content-chart"),t(e,3,0,n.healthData,n.rawCapacityChartConfig,!0)},null)}function qe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","Objects"],["class","cd-col-5"],["contentClass","content-chart"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275eld"](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},Bt,Vt)),a["\u0275did"](3,638976,null,0,Gt,[Yt.a,Ht.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"Objects","card-medium","content-chart"),t(e,3,0,n.healthData,n.objectsChartConfig)},null)}function Fe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-info-card",[["cardClass","card-medium"],["cardTitle","PGs per OSD"],["class","cd-col-5"],["contentClass","content-medium content-highlight"]],null,null,null,At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,1)],function(t,e){t(e,1,0,"PGs per OSD","card-medium","content-medium content-highlight")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,7),n.healthData.pg_info.pgs_per_osd));t(e,2,0,r)})}function ze(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Ye(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"li",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ",": "," "]))],null,function(t,e){t(e,1,0,e.context.$implicit.key,e.context.$implicit.value)})}function He(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,ze)),a["\u0275did"](1,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](2,0,null,null,3,"ul",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Ye)),a["\u0275did"](4,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.KeyValuePipe,[a.KeyValueDiffers])],function(t,e){var n=e.component;t(e,1,0,a["\u0275nov"](e.parent.parent.parent,7)),t(e,4,0,a["\u0275unv"](e,4,0,a["\u0275nov"](e,5).transform(n.healthData.pg_info.statuses)))},null)}function Ge(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"cd-info-card",[["cardClass","card-medium"],["cardTitle","PG Status"],["class","cd-col-5"],["contentClass","content-chart"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).toggle()&&r),r},At,Dt)),a["\u0275did"](1,49152,null,0,It,[],{cardTitle:[0,"cardTitle"],cardClass:[1,"cardClass"],contentClass:[2,"contentClass"]},null),(t()(),a["\u0275and"](0,[["pgStatus",2]],0,0,null,He)),(t()(),a["\u0275eld"](3,0,null,0,4,"div",[["class","pg-status-popover-wrapper"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,16777216,null,null,3,"div",[["placement","bottom"],["triggers",""]],null,null,null,null,null)),a["\u0275did"](5,212992,[["pgStatusTarget",4]],0,Ot.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ot.a,Ct.a],{popover:[0,"popover"],placement:[1,"placement"],triggers:[2,"triggers"]},null),(t()(),a["\u0275eld"](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},Bt,Vt)),a["\u0275did"](7,638976,null,0,Gt,[Yt.a,Ht.a],{data:[0,"data"],config:[1,"config"]},{prepareFn:"prepareFn"})],function(t,e){var n=e.component;t(e,1,0,"PG Status","card-medium","content-chart"),t(e,5,0,a["\u0275nov"](e,2),"bottom",""),t(e,7,0,n.healthData,n.pgStatusChartConfig)},null)}function Ve(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,12,"cd-info-group",[["class","row info-group"],["groupTitle","Capacity"]],null,null,null,Pt,Lt)),a["\u0275did"](1,49152,null,0,Et,[],{groupTitle:[0,"groupTitle"]},null),(t()(),a["\u0275eld"](2,0,null,0,10,"div",[["class","cd-container-flex"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Me)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,je)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,qe)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Fe)),a["\u0275did"](10,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ge)),a["\u0275did"](12,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,"Capacity"),t(e,4,0,n.healthData.pools),t(e,6,0,n.healthData.df),t(e,8,0,null!=(null==n.healthData.pg_info?null:null==n.healthData.pg_info.object_stats?null:n.healthData.pg_info.object_stats.num_objects)),t(e,10,0,n.healthData.pg_info),t(e,12,0,n.healthData.pg_info)},null)}function Be(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"p",[["class","logs-link"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-info-circle"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" See "])),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,null,0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Logs"])),(t()(),a["\u0275ted"](-1,null,[" for more details."]))],function(t,e){t(e,5,0,"/logs")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function Ue(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Be)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.permissions.log.read)},null)}function We(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"div",[["class","container-fluid"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ke)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Pe)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ve)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,[["logsLink",2]],null,0,null,Ue))],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.client_perf||n.healthData.scrub_status),t(e,6,0,n.healthData.pools||n.healthData.df||n.healthData.pg_info)},null)}function Ke(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Ut,[]),a["\u0275pid"](0,Wt,[Kt.a]),a["\u0275pid"](0,$t,[Kt.a]),a["\u0275pid"](0,Zt,[Kt.a]),a["\u0275pid"](0,Xt,[Kt.a]),a["\u0275pid"](0,Jt,[]),a["\u0275pid"](0,Yt.a,[Qt.a]),a["\u0275pid"](0,Ht.a,[Qt.a]),(t()(),a["\u0275and"](16777216,null,null,2,null,We)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,L.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,9,0,a["\u0275unv"](e,9,0,a["\u0275nov"](e,10).transform(n.healthData&&n.enabledFeature$)))},null)}var $e=n("gIcY"),Ze=function(){function t(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)}return t.prototype.ngOnInit=function(){this.selectedInterval=this.refreshIntervalService.getRefreshInterval()||5e3},t.prototype.changeRefreshInterval=function(t){this.refreshIntervalService.setRefreshInterval(t)},t}(),Xe=a["\u0275crt"]({encapsulation:0,styles:[[".refresh-selector[_ngcontent-%COMP%]{padding:0;float:right;margin-right:60px}.refresh-selector[_ngcontent-%COMP%]   *[_ngcontent-%COMP%]{padding:0;box-sizing:border-box}.refresh-selector[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{padding:10px 10px 0 0;text-align:right;margin:0}@media (min-width:500px) and (max-width:767px){.refresh-selector[_ngcontent-%COMP%]{width:24vw}}@media (min-width:1200px){.refresh-selector[_ngcontent-%COMP%]{width:12vw}}@media (min-width:1400px){.refresh-selector[_ngcontent-%COMP%]{width:10vw}}"]],data:{}});function Je(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Qe(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,13,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,12,"div",[["class","col-xs-5 col-sm-2 refresh-selector"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,2,"label",[["class","control-label col-xs-5 col-sm-5"],["for","refreshInterval"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Refresh"])),(t()(),a["\u0275eld"](5,0,null,null,8,"div",[["class","col-xs-7 col-sm-7"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,7,"select",[["class","form-control"],["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]],[[null,"change"],[null,"ngModelChange"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,7).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,7).onTouched()&&r),"change"===e&&(r=!1!==i.changeRefreshInterval(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.selectedInterval=n)&&r),r},null,null)),a["\u0275did"](7,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](9,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](11,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Je)),a["\u0275did"](13,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,9,0,"refreshInterval",n.selectedInterval),t(e,13,0,n.intervalKeys)},function(t,e){t(e,6,0,a["\u0275nov"](e,11).ngClassUntouched,a["\u0275nov"](e,11).ngClassTouched,a["\u0275nov"](e,11).ngClassPristine,a["\u0275nov"](e,11).ngClassDirty,a["\u0275nov"](e,11).ngClassValid,a["\u0275nov"](e,11).ngClassInvalid,a["\u0275nov"](e,11).ngClassPending)})}var tn=function(){function t(){this.hasGrafana=!1}return t.prototype.ngOnInit=function(){},t}(),en=a["\u0275crt"]({encapsulation:0,styles:[["div[_ngcontent-%COMP%]{padding-top:20px}"]],data:{}});function nn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Health"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-health",[],null,null,null,Ke,ce)),a["\u0275did"](5,245760,null,0,le,[ae,Kt.a,q.a,ue.a,re.a,se,Yt.a,Ht.a],null,null),(t()(),a["\u0275eld"](6,0,null,0,1,"tab",[["heading","Statistics"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](7,212992,null,0,St.b,[St.d,a.ElementRef,a.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,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,6,0,a["\u0275nov"](e,7).id,a["\u0275nov"](e,7).active,a["\u0275nov"](e,7).addClass)})}function an(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-health",[],null,null,null,Ke,ce)),a["\u0275did"](1,245760,null,0,le,[ae,Kt.a,q.a,ue.a,re.a,se,Yt.a,Ht.a],null,null)],function(t,e){t(e,1,0)},null)}function rn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"cd-refresh-selector",[],null,null,null,Qe,Xe)),a["\u0275did"](2,114688,null,0,Ze,[se],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,nn)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,an)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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 on(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-dashboard",[],null,null,null,rn,en)),a["\u0275did"](1,114688,null,0,tn,[],null,null)],function(t,e){t(e,1,0)},null)}var sn=a["\u0275ccf"]("cd-dashboard",tn,on,{},{},[]),un=n("a278"),ln=n("insk"),cn=n("mSOc"),dn=n("ZYjt"),fn=n("20UP"),pn=n("+0ag"),hn=n("25BL"),gn=n("uIqm"),mn=n("vCyI"),bn=function(){function t(t){this.authStorageService=t,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.host=this.selection.first())},t}(),yn=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function vn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","rtOg0AiWz"]],null,null,null,un.b,un.a)),a["\u0275did"](5,638976,null,0,ln.a,[cn.a,dn.DomSanitizer,fn.a,pn.a,Kt.a],{grafanaPath:[0,"grafanaPath"],grafanaStyle:[1,"grafanaStyle"],uid:[2,"uid"]},null)],function(t,e){var n=e.component;t(e,3,0,"Performance Details"),t(e,5,0,"host-details?var-ceph_hosts="+n.host.hostname,"three","rtOg0AiWz")},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass)})}function _n(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,vn)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.selection.hasSingleSelection&&n.grafanaPermission.read)},null)}var xn=function(){function t(t){this.http=t}return t.prototype.list=function(){return this.http.get("api/host").toPromise().then(function(t){return t})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),Tn=n("85J/"),wn=function(){function t(t,e,n,a){this.authStorageService=t,this.hostService=e,this.cephShortVersionPipe=n,this.i18n=a,this.columns=[],this.hosts=[],this.isLoadingHosts=!1,this.cdParams={fromLink:"/hosts"},this.selection=new mn.a,this.permissions=this.authStorageService.getPermissions()}return t.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Hostname"),prop:"hostname",flexGrow:1},{name:this.i18n("Services"),prop:"services",flexGrow:3,cellTemplate:this.servicesTpl},{name:this.i18n("Version"),prop:"ceph_version",flexGrow:1,pipe:this.cephShortVersionPipe}]},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.getHosts=function(t){var e=this;if(!this.isLoadingHosts){var n={mds:"cephfs",mon:"monitor",osd:"osd",rgw:"rgw","rbd-mirror":"rbdMirroring",mgr:"manager","tcmu-runner":"iscsi"};this.isLoadingHosts=!0,this.hostService.list().then(function(t){t.map(function(t){return t.services.map(function(t){t.cdLink="/perf_counters/"+t.type+"/"+encodeURIComponent(t.id);var a=e.permissions[n[t.type]];return t.canRead=!!a&&a.read,t}),t}),e.hosts=t,e.isLoadingHosts=!1}).catch(function(){e.isLoadingHosts=!1,t.error()})}},t}(),Sn=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function On(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](1,671744,null,0,kt.o,[kt.l,kt.a,L.LocationStrategy],{queryParams:[0,"queryParams"],routerLink:[1,"routerLink"]},null),a["\u0275pad"](2,1),(t()(),a["\u0275ted"](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,a["\u0275nov"](e,1).target,a["\u0275nov"](e,1).href),t(e,3,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)})}function Cn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ","."," "]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.type,e.parent.context.$implicit.id)})}function kn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,On)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Cn)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275ted"](5,null,[" "," "]))],function(t,e){t(e,2,0,e.context.$implicit.canRead),t(e,4,0,!e.context.$implicit.canRead)},function(t,e){t(e,5,0,e.context.last?"":", ")})}function In(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,kn)),a["\u0275did"](1,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function Dn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](1,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","two"],["uid","y0KGL0iZz"]],null,null,null,un.b,un.a)),a["\u0275did"](3,638976,null,0,ln.a,[cn.a,dn.DomSanitizer,fn.a,pn.a,Kt.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,a["\u0275nov"](e,1).id,a["\u0275nov"](e,1).active,a["\u0275nov"](e,1).addClass)})}function Rn(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{servicesTpl:0}),(t()(),a["\u0275eld"](1,0,null,null,10,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](2,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](3,0,null,0,6,"tab",[["heading","Hosts List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](4,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](5,0,null,null,4,"cd-table",[["columnMode","flex"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getHosts(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](6,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],selectionType:[3,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),a["\u0275and"](0,[[1,2],["servicesTpl",2]],null,0,null,In)),(t()(),a["\u0275eld"](8,0,null,2,1,"cd-host-details",[["cdTableDetail",""]],null,null,null,_n,yn)),a["\u0275did"](9,573440,null,0,bn,[q.a],{selection:[0,"selection"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,Dn)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,4,0,"Hosts List"),t(e,6,0,n.hosts,n.columns,"flex","single"),t(e,9,0,n.selection),t(e,11,0,n.permissions.grafana.read)},function(t,e){t(e,1,0,a["\u0275nov"](e,2).clazz),t(e,3,0,a["\u0275nov"](e,4).id,a["\u0275nov"](e,4).active,a["\u0275nov"](e,4).addClass)})}function Nn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-hosts",[],null,null,null,Rn,Sn)),a["\u0275did"](1,114688,null,0,wn,[q.a,xn,Tn.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var An=a["\u0275ccf"]("cd-hosts",wn,Nn,{},{},[]),En=function(){function t(t){this.http=t}return t.prototype.getMonitor=function(){return this.http.get("api/monitor")},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),Ln=n("x38r"),Pn=function(){function t(t,e){this.monitorService=t,this.i18n=e,this.sparklineStyle={height:"30px",width:"50%"},this.inQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Ln.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")},{prop:"cdOpenSessions",name:this.i18n("Open Sessions"),cellTransformation:Ln.a.sparkline}],data:[]},this.notInQuorum={columns:[{prop:"name",name:this.i18n("Name"),cellTransformation:Ln.a.routerLink},{prop:"rank",name:this.i18n("Rank")},{prop:"public_addr",name:this.i18n("Public Address")}],data:[]}}return t.prototype.refresh=function(){var t=this;this.monitorService.getMonitor().subscribe(function(e){e.in_quorum.map(function(t){return t.cdOpenSessions=t.stats.num_sessions.map(function(t){return t[1]}),t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t}),e.out_quorum.map(function(t){return t.cdLink="/perf_counters/mon/"+t.name,t.cdParams={fromLink:"/monitor"},t}),t.inQuorum.data=e.in_quorum.slice(),t.notInQuorum.data=e.out_quorum.slice(),t.mon_status=e.mon_status})},t}(),Mn=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function jn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,36,"table",[["class","table table-striped"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,35,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cluster ID"])),(t()(),a["\u0275eld"](5,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,["",""])),(t()(),a["\u0275eld"](7,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["monmap modified"])),(t()(),a["\u0275eld"](10,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](11,null,["",""])),(t()(),a["\u0275eld"](12,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["monmap epoch"])),(t()(),a["\u0275eld"](15,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](16,null,["",""])),(t()(),a["\u0275eld"](17,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["quorum con"])),(t()(),a["\u0275eld"](20,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](21,null,["",""])),(t()(),a["\u0275eld"](22,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](23,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["quorum mon"])),(t()(),a["\u0275eld"](25,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](26,null,["",""])),(t()(),a["\u0275eld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](28,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["required con"])),(t()(),a["\u0275eld"](30,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](31,null,["",""])),(t()(),a["\u0275eld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](33,0,null,null,1,"td",[["class","bold"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["required mon"])),(t()(),a["\u0275eld"](35,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](36,null,["",""]))],null,function(t,e){var n=e.component;t(e,6,0,n.mon_status.monmap.fsid),t(e,11,0,n.mon_status.monmap.modified),t(e,16,0,n.mon_status.monmap.epoch),t(e,21,0,n.mon_status.features.quorum_con),t(e,26,0,n.mon_status.features.quorum_mon),t(e,31,0,n.mon_status.features.required_con),t(e,36,0,n.mon_status.features.required_mon)})}function qn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-4"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,4,"fieldset",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Status"])),(t()(),a["\u0275and"](16777216,null,null,1,null,jn)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](7,0,null,null,8,"div",[["class","col-md-8"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,1,"legend",[["class","in-quorum"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["In Quorum"])),(t()(),a["\u0275eld"](10,0,null,null,1,"cd-table",[],null,null,null,hn.b,hn.a)),a["\u0275did"](11,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},null),(t()(),a["\u0275eld"](12,0,null,null,1,"legend",[["class","in-quorum"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Not In Quorum"])),(t()(),a["\u0275eld"](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},hn.b,hn.a)),a["\u0275did"](15,2867200,null,0,gn.a,[a.NgZone,a.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 Fn(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-monitor",[],null,null,null,qn,Mn)),a["\u0275did"](1,49152,null,0,Pn,[En,Kt.a],null,null)],null,null)}var zn=a["\u0275ccf"]("cd-monitor",Pn,Fn,{},{},[]),Yn=n("xtZt"),Hn=n("xSw7"),Gn=n("GgAd"),Vn=n("xbqr"),Bn=n("9GXa"),Un=n("NUGo"),Wn=n("S7zO"),Kn=n("sLuX"),$n=n("FSuO"),Zn=n("a0VL"),Xn=n("j8L6"),Jn=n("b5OY"),Qn=n("pxLl"),ta=function(){function t(){this.last={}}return t.prototype.ngOnChanges=function(){this.render()},t.prototype.hexdigits=function(t){var e=Math.floor(255*t).toString(16);return 1===e.length?"0"+e:e},t.prototype.hexcolor=function(t,e,n){return"#"+this.hexdigits(t)+this.hexdigits(e)+this.hexdigits(n)},t.prototype.render=function(){var t=this;if(this.histogram){var e=0;Ft.each(this.histogram.values,function(n,a){Ft.each(n,function(n,r){e=Math.max(e,t.last&&t.last[a]&&t.last[a][r]?n-t.last[a][r]:n)})}),this.valuesStyle=this.histogram.values.map(function(n,a){return n.map(function(n,r){var i=e?(t.last&&t.last[a]&&t.last[a][r]?n-t.last[a][r]:n)/e:0;return{backgroundColor:t.hexcolor(1-i,i,0)}})}),this.last=this.histogram.values}},t}(),ea=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function na(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[["style","width: 10px; height: 10px;"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null)],function(t,e){t(e,1,0,e.context.$implicit)},null)}function aa(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"tr",[["style","height: 10px;"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,na)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.context.$implicit)},null)}function ra(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,aa)),a["\u0275did"](3,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,3,0,e.component.valuesStyle)},null)}var ia=function(){function t(t,e){this.http=t,this.i18n=e,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}}]}}return t.prototype.getList=function(){return this.http.get(""+this.path)},t.prototype.getDetails=function(t){return this.http.get(this.path+"/"+t)},t.prototype.scrub=function(t,e){return this.http.post(this.path+"/"+t+"/scrub?deep="+e,null)},t.prototype.getFlags=function(){return this.http.get(this.path+"/flags")},t.prototype.updateFlags=function(t){return this.http.put(this.path+"/flags",{flags:t})},t.prototype.markOut=function(t){return this.http.post(this.path+"/"+t+"/mark_out",null)},t.prototype.markIn=function(t){return this.http.post(this.path+"/"+t+"/mark_in",null)},t.prototype.markDown=function(t){return this.http.post(this.path+"/"+t+"/mark_down",null)},t.prototype.reweight=function(t,e){return this.http.post(this.path+"/"+t+"/reweight",{weight:e})},t.prototype.markLost=function(t){return this.http.post(this.path+"/"+t+"/mark_lost",null)},t.prototype.purge=function(t){return this.http.post(this.path+"/"+t+"/purge",null)},t.prototype.destroy=function(t){return this.http.post(this.path+"/"+t+"/destroy",null)},t.prototype.safeToDestroy=function(t){return this.http.get(this.path+"/"+t+"/safe_to_destroy")},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c),a.inject(Kt.a))},token:t,providedIn:ne.a}),t}(),oa=function(){function t(t,e){this.osdService=t,this.authStorageService=e,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.osd={loaded:!1},this.selection.hasSelection&&(this.osd=this.selection.first(),this.refresh())},t.prototype.refresh=function(){var t=this;this.osdService.getDetails(this.osd.id).subscribe(function(e){t.osd.details=e,t.osd.histogram_failed="",Ft.isObject(e.histogram)||(t.osd.histogram_failed=e.histogram,t.osd.details.histogram=void 0),t.osd.loaded=!0})},t}(),sa=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ua(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](1,638976,null,0,$n.a,[Zn.a],{data:[0,"data"]},null)],function(t,e){t(e,1,0,e.component.osd.details.osd_map)},null)}function la(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},Kn.b,Kn.a)),a["\u0275did"](1,638976,null,0,$n.a,[Zn.a],{data:[0,"data"]},{fetchData:"fetchData"})],function(t,e){t(e,1,0,e.component.osd.details.osd_metadata)},null)}function ca(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,Vn.b,Vn.a)),a["\u0275did"](1,49152,null,0,Bn.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Metadata not available"]))],null,null)}function da(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-table-performance-counter",[["serviceType","osd"]],null,null,null,Xn.b,Xn.a)),a["\u0275did"](1,114688,null,0,Jn.a,[Qn.a,Kt.a],{serviceType:[0,"serviceType"],serviceId:[1,"serviceId"]},null)],function(t,e){t(e,1,0,"osd",e.component.osd.id)},null)}function fa(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-warning-panel",[],null,null,null,Vn.b,Vn.a)),a["\u0275did"](1,49152,null,0,Bn.a,[],null,null),(t()(),a["\u0275ted"](2,0,["Histogram not available: ",""]))],null,function(t,e){t(e,2,0,e.component.osd.histogram_failed)})}function pa(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Writes"])),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,ra,ea)),a["\u0275did"](5,573440,null,0,ta,[],{histogram:[0,"histogram"]},null),(t()(),a["\u0275eld"](6,0,null,null,4,"div",[["class","col-md-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"h4",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Reads"])),(t()(),a["\u0275eld"](9,0,null,null,1,"cd-osd-performance-histogram",[],null,null,null,ra,ea)),a["\u0275did"](10,573440,null,0,ta,[],{histogram:[0,"histogram"]},null)],function(t,e){var n=e.component;t(e,5,0,n.osd.details.histogram.osd.op_w_latency_in_bytes_histogram),t(e,10,0,n.osd.details.histogram.osd.op_r_latency_out_bytes_histogram)},null)}function ha(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](1,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","GrafanaStyles.two"],["uid","CrAHE0iZz"]],null,null,null,un.b,un.a)),a["\u0275did"](3,638976,null,0,ln.a,[cn.a,dn.DomSanitizer,fn.a,pn.a,Kt.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,"GrafanaStyles.two","CrAHE0iZz")},function(t,e){t(e,0,0,a["\u0275nov"](e,1).id,a["\u0275nov"](e,1).active,a["\u0275nov"](e,1).addClass)})}function ga(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,22,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Attributes (OSD map)"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ua)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](6,0,null,0,4,"tab",[["heading","Metadata"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](7,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,la)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"],ngIfElse:[1,"ngIfElse"]},null),(t()(),a["\u0275and"](0,[["noMetaData",2]],null,0,null,ca)),(t()(),a["\u0275eld"](11,0,null,0,3,"tab",[["heading","Performance counter"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](12,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,da)),a["\u0275did"](14,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](15,0,null,0,5,"tab",[["heading","Histogram"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](16,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,fa)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,pa)),a["\u0275did"](20,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,ha)),a["\u0275did"](22,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,"Attributes (OSD map)"),t(e,5,0,n.osd.loaded),t(e,7,0,"Metadata"),t(e,9,0,n.osd.loaded&&n.osd.details.osd_metadata,a["\u0275nov"](e,10)),t(e,12,0,"Performance counter"),t(e,14,0,n.osd.loaded),t(e,16,0,"Histogram"),t(e,18,0,n.osd.loaded&&n.osd.histogram_failed),t(e,20,0,n.osd.loaded&&n.osd.details.histogram),t(e,22,0,n.grafanaPermission.read)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,6,0,a["\u0275nov"](e,7).id,a["\u0275nov"](e,7).active,a["\u0275nov"](e,7).addClass),t(e,11,0,a["\u0275nov"](e,12).id,a["\u0275nov"](e,12).active,a["\u0275nov"](e,12).addClass),t(e,15,0,a["\u0275nov"](e,16).id,a["\u0275nov"](e,16).active,a["\u0275nov"](e,16).addClass)})}function ma(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,ga)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.selection.hasSingleSelection)},null)}function ba(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-details",[],null,null,null,ma,sa)),a["\u0275did"](1,573440,null,0,oa,[ia,q.a],null,null)],null,null)}var ya=a["\u0275ccf"]("cd-osd-details",oa,ba,{selection:"selection"},{},[]),va=n("OLbh"),_a=n("0+/T"),xa=n("mtw6"),Ta=n("9nlD"),wa=function(){function t(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.osdService=n,this.notificationService=a,this.i18n=r,this.osdFlagsForm=new $e.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")},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()}return t.prototype.ngOnInit=function(){var t=this;this.osdService.getFlags().subscribe(function(e){e.forEach(function(e){t.allFlags[e]?t.allFlags[e].value=!0:t.unknownFlags.push(e)}),t.flags=Ft.toArray(t.allFlags)})},t.prototype.submitAction=function(){var t=this,e=this.flags.filter(function(t){return t.value}).map(function(t){return t.code}).concat(this.unknownFlags);this.osdService.updateFlags(e).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n("Updated OSD Flags")),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),Sa=n("VNr4"),Oa=n("MuvH"),Ca=n("QFaf"),ka=n("1Ni5"),Ia=function(){function t(){}return t.getType=function(t){var e=Ft.find(this.knownTypes,function(e){return e.name===t});if(void 0!==e)return e;throw new Error('Found unknown type "'+t+'" for config option.')},t.getTypeValidators=function(e){var n=t.getType(e.type);if("bool"!==n.name&&"str"!==n.name){var a={validators:[],patternHelpText:n.patternHelpText};return n.isNumberType?(e.max&&""!==e.max&&(a.max=e.max,a.validators.push($e.A.max(e.max))),e.min&&""!==e.min?(a.min=e.min,a.validators.push($e.A.min(e.min))):"defaultMin"in n&&(a.min=n.defaultMin,a.validators.push($e.A.min(n.defaultMin))),a.validators.push("float"===e.type?ka.a.decimalNumber():ka.a.number(n.allowsNegative))):"addr"===e.type?a.validators=[ka.a.ip()]:"uuid"===e.type&&(a.validators=[ka.a.uuid()]),a}},t.getTypeStep=function(t,e){if(["uint","int","size","secs"].includes(t))return 1;if("float"===t){if(null!==e&&-1!==e.toString().indexOf(".")){var n=e.toString().split(".");return Math.pow(10,-n[1].length)}return.1}},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}(),Da=function(){function t(t){this.configService=t,this.optionNames=[],this.optionsForm=new Ca.a({}),this.optionsFormDir=new $e.t([],[]),this.optionsFormGroupName="",this.optionsFormShowReset=!0,this.options=[],this.optionsFormGroup=new Ca.a({})}return t.optionNameToText=function(t){var e=["mon","mgr","osd","mds","client"];return t.split("_").filter(function(t,n){return 0!==n||!e.includes(t)}).map(function(t){return t.charAt(0).toUpperCase()+t.substring(1)}).join(" ")},t.prototype.ngOnInit=function(){this.createForm(),this.loadStoredData()},t.prototype.createForm=function(){var t=this;this.optionsForm.addControl(this.optionsFormGroupName,this.optionsFormGroup),this.optionNames.forEach(function(e){t.optionsFormGroup.addControl(e,new $e.i(null))})},t.prototype.getStep=function(t,e){return Ia.getTypeStep(t,e)},t.prototype.loadStoredData=function(){var e=this;this.configService.filter(this.optionNames).subscribe(function(n){e.options=n.map(function(n){var a=e.optionsForm.get(n.name),r=Ia.getTypeValidators(n);return n.additionalTypeInfo=Ia.getType(n.type),n.text=t.optionNameToText(n.name),n.value=Ft.find(n.value,function(t){return"osd"===t.section}),n.value&&a.setValue("bool"===n.additionalTypeInfo.name?"true"===n.value.value:n.value.value),r&&(n.patternHelpText=r.patternHelpText,"max"in r&&""!==r.max&&(n.maxValue=r.max),"min"in r&&""!==r.min&&(n.minValue=r.min),a.setValidators(r.validators)),n})})},t.prototype.saveValues=function(){var t=this,e={};return this.optionNames.forEach(function(n){var a=t.optionsForm.getValue(n);null!==a&&""!==a&&(e[n]={section:"osd",value:a})}),this.configService.bulkCreate({options:e})},t.prototype.resetValue=function(t){var e=this;this.configService.delete(t,"osd").subscribe(function(){e.optionsForm.get(t).reset()})},t}(),Ra=n("sne2"),Na=function(){function 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_op_queue_mclock_scrub_lim","osd_op_queue_mclock_scrub_res","osd_op_queue_mclock_scrub_wgt","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}(),Aa=function(){function t(t,e,n,a,r){this.bsModalRef=t,this.authStorageService=e,this.notificationService=n,this.i18n=a,this.actionLabels=r,this.basicOptions=Na.basicOptions,this.advancedOptions=Na.advancedOptions,this.advancedEnabled=!1,this.osdPgScrubForm=new Ca.a({}),this.resource=this.i18n("PG scrub options"),this.action=this.actionLabels.EDIT,this.permissions=this.authStorageService.getPermissions()}return t.prototype.submitAction=function(){var t=this,e=[this.basicOptionsValues.saveValues()];this.advancedOptionsValues&&e.push(this.advancedOptionsValues.saveValues()),Object(Sa.a)(e).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n("Updated PG scrub options")),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),Ea=function(){function t(t,e,n,a,r,i){var o=this;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 Ca.a({priority:new $e.i(null,{validators:[$e.A.required]}),customizePriority:new $e.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(function(t){o.osdRecvSpeedForm.addControl(t,new $e.i(null,{validators:[$e.A.required]}))})}return t.prototype.ngOnInit=function(){var t=this;this.configService.filter(Object.keys(this.priorityAttrs)).subscribe(function(e){var n=t.getCurrentValues(e);t.detectPriority(n.values,function(e){t.setPriority(e)}),t.setDescription(n.configOptions),t.setValidators(n.configOptions)})},t.prototype.detectPriority=function(t,e){var n=Ft.find(this.priorities,function(e){return Ft.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])},t.prototype.getCurrentValues=function(t){var e={values:{},configOptions:[]};return t.forEach(function(t){e.configOptions.push(t),"value"in t?t.value.forEach(function(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},t.prototype.setDescription=function(t){var e=this;t.forEach(function(t){""!==t.desc&&(e.priorityAttrs[t.name].desc=t.desc)})},t.prototype.setPriority=function(t){var e=this,n=Ft.find(this.priorities,function(t){return"custom"===t.name});"custom"===t.name?n||this.priorities.push(t):n&&this.priorities.splice(this.priorities.indexOf(n),1),this.osdRecvSpeedForm.controls.priority.setValue(t.name),Object.entries(t.values).forEach(function(t){e.osdRecvSpeedForm.controls[t[0]].setValue(t[1])})},t.prototype.setValidators=function(t){var e=this;t.forEach(function(t){var n=Ia.getTypeValidators(t);n?(n.validators.push($e.A.required),"max"in n&&""!==n.max&&(e.priorityAttrs[t.name].maxValue=n.max),"min"in n&&""!==n.min&&(e.priorityAttrs[t.name].minValue=n.min),e.priorityAttrs[t.name].patternHelpText=n.patternHelpText,e.osdRecvSpeedForm.controls[t.name].setValidators(n.validators)):e.osdRecvSpeedForm.controls[t.name].setValidators($e.A.required)})},t.prototype.onCustomizePriorityChange=function(){var t=this,e={};if(Object.keys(this.priorityAttrs).forEach(function(n){e[n]=t.osdRecvSpeedForm.getValue(n)}),this.osdRecvSpeedForm.getValue("customizePriority")){var n={name:"custom",text:this.i18n("Custom"),values:e};this.setPriority(n)}else this.detectPriority(e,function(e){t.setPriority(e)})},t.prototype.onPriorityChange=function(t){var e=Ft.find(this.priorities,function(e){return e.name===t})||this.priorities[0];this.osdRecvSpeedForm.get("customizePriority").setValue(!1),this.setPriority(e)},t.prototype.submitAction=function(){var t=this,e={};Object.keys(this.priorityAttrs).forEach(function(n){e[n]={section:"osd",value:t.osdRecvSpeedForm.getValue(n)}}),this.configService.bulkCreate({options:e}).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n('Updated OSD recovery speed priority "{{value}}"',{value:t.osdRecvSpeedForm.getValue("priority")})),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),La=n("2EZI"),Pa=function(){function t(t,e,n){this.bsModalRef=t,this.osdService=e,this.fb=n,this.currentWeight=1}return Object.defineProperty(t.prototype,"weight",{get:function(){return this.reweightForm.get("weight")},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.reweightForm=this.fb.group({weight:this.fb.control(this.currentWeight,[$e.A.required,$e.A.max(1),$e.A.min(0)])})},t.prototype.reweight=function(){var t=this;this.osdService.reweight(this.osdId,this.reweightForm.value.weight).subscribe(function(){return t.bsModalRef.hide()})},t}(),Ma=function(){function t(t,e,n,a){this.bsModalRef=t,this.osdService=e,this.notificationService=n,this.i18n=a,this.selected=[]}return t.prototype.ngOnInit=function(){this.scrubForm=new $e.k({})},t.prototype.scrub=function(){var t=this,e=this.selected[0].id;this.osdService.scrub(e,this.deep).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n("{{operation}} was initialized in the following OSD: {{id}}",{operation:t.deep?"Deep scrub":"Scrub",id:e})),t.bsModalRef.hide()},function(){t.bsModalRef.hide()})},t}(),ja=function(){function t(t,e,n,a,r){var i=this;this.authStorageService=t,this.osdService=e,this.dimlessBinaryPipe=n,this.modalService=a,this.i18n=r,this.osds=[],this.selection=new mn.a,this.permissions=this.authStorageService.getPermissions(),this.tableActions=[{name:this.i18n("Scrub"),permission:"update",icon:"fa-stethoscope",click:function(){return i.scrubAction(!1)},disable:function(){return!i.hasOsdSelected}},{name:this.i18n("Deep Scrub"),permission:"update",icon:"fa-cog",click:function(){return i.scrubAction(!0)},disable:function(){return!i.hasOsdSelected}},{name:this.i18n("Reweight"),permission:"update",click:function(){return i.reweight()},disable:function(){return!i.hasOsdSelected},icon:"fa-balance-scale"},{name:this.i18n("Mark Out"),permission:"update",click:function(){return i.showConfirmationModal(i.i18n("out"),i.osdService.markOut)},disable:function(){return i.isNotSelectedOrInState("out")},icon:"fa-arrow-left"},{name:this.i18n("Mark In"),permission:"update",click:function(){return i.showConfirmationModal(i.i18n("in"),i.osdService.markIn)},disable:function(){return i.isNotSelectedOrInState("in")},icon:"fa-arrow-right"},{name:this.i18n("Mark Down"),permission:"update",click:function(){return i.showConfirmationModal(i.i18n("down"),i.osdService.markDown)},disable:function(){return i.isNotSelectedOrInState("down")},icon:"fa-arrow-down"},{name:this.i18n("Mark Lost"),permission:"delete",click:function(){return i.showCriticalConfirmationModal(i.i18n("Mark"),i.i18n("OSD lost"),i.i18n("marked lost"),i.osdService.markLost)},disable:function(){return i.isNotSelectedOrInState("up")},icon:"fa-unlink"},{name:this.i18n("Purge"),permission:"delete",click:function(){return i.showCriticalConfirmationModal(i.i18n("Purge"),i.i18n("OSD"),i.i18n("purged"),i.osdService.purge)},disable:function(){return i.isNotSelectedOrInState("up")},icon:"fa-eraser"},{name:this.i18n("Destroy"),permission:"delete",click:function(){return i.showCriticalConfirmationModal(i.i18n("destroy"),i.i18n("OSD"),i.i18n("destroyed"),i.osdService.destroy)},disable:function(){return i.isNotSelectedOrInState("up")},icon:"fa-remove"}],this.advancedTableActions=[{name:this.i18n("Cluster-wide Flags"),icon:"fa-flag",click:function(){return i.configureFlagsAction()},permission:this.permissions.osd.read},{name:this.i18n("Cluster-wide Recovery Priority"),icon:"fa-cog",click:function(){return i.configureQosParamsAction()},permission:this.permissions.configOpt.read},{name:this.i18n("PG scrub"),icon:"fa-stethoscope",click:function(){return i.configurePgScrubAction()},permission:this.permissions.configOpt.read}]}return t.collectStates=function(t){return[t.in?"in":"out",t.up?"up":"down"]},t.prototype.ngOnInit=function(){this.columns=[{prop:"host.name",name:this.i18n("Host")},{prop:"id",name:this.i18n("ID"),cellTransformation:Ln.a.bold},{prop:"collectedStates",name:this.i18n("Status"),cellTemplate:this.statusColor},{prop:"stats.numpg",name:this.i18n("PGs")},{prop:"stats.stat_bytes",name:this.i18n("Size"),pipe:this.dimlessBinaryPipe},{prop:"stats.usage",name:this.i18n("Usage"),cellTemplate:this.osdUsageTpl},{prop:"stats_history.out_bytes",name:this.i18n("Read bytes"),cellTransformation:Ln.a.sparkline},{prop:"stats_history.in_bytes",name:this.i18n("Writes bytes"),cellTransformation:Ln.a.sparkline},{prop:"stats.op_r",name:this.i18n("Read ops"),cellTransformation:Ln.a.perSecond},{prop:"stats.op_w",name:this.i18n("Write ops"),cellTransformation:Ln.a.perSecond}],this.removeActionsWithNoPermissions()},Object.defineProperty(t.prototype,"hasOsdSelected",{get:function(){if(this.selection.hasSelection){var t=this.selection.first().id;return!!this.osds.filter(function(e){return e.id===t}).pop()}return!1},enumerable:!0,configurable:!0}),t.prototype.updateSelection=function(t){this.selection=t},t.prototype.isNotSelectedOrInState=function(t){if(!this.hasOsdSelected)return!0;var e=this.selection.first().id,n=this.osds.filter(function(t){return t.id===e}).pop();if(!n)return!0;switch(t){case"in":return 1===n.in;case"out":return 1!==n.in;case"down":return 1!==n.up;case"up":return 1===n.up}},t.prototype.getOsdList=function(){var e=this;this.osdService.getList().subscribe(function(n){e.osds=n.map(function(e){return e.collectedStates=t.collectStates(e),e.stats_history.out_bytes=e.stats_history.op_out_bytes.map(function(t){return t[1]}),e.stats_history.in_bytes=e.stats_history.op_in_bytes.map(function(t){return t[1]}),e.stats.usage=e.stats.stat_bytes_used/e.stats.stat_bytes,e.cdIsBinary=!0,e})})},t.prototype.scrubAction=function(t){this.hasOsdSelected&&(this.bsModalRef=this.modalService.show(Ma,{initialState:{selected:this.tableComponent.selection.selected,deep:t}}))},t.prototype.configureFlagsAction=function(){this.bsModalRef=this.modalService.show(wa,{})},t.prototype.showConfirmationModal=function(t,e){var n=this;this.bsModalRef=this.modalService.show(va.a,{initialState:{titleText:this.i18n("Mark OSD {{markAction}}",{markAction:t}),buttonText:this.i18n("Mark {{markAction}}",{markAction:t}),bodyTpl:this.markOsdConfirmationTpl,bodyContext:{markActionDescription:t},onSubmit:function(){e.call(n.osdService,n.selection.first().id).subscribe(function(){return n.bsModalRef.hide()})}}})},t.prototype.reweight=function(){var t=this,e=this.osds.filter(function(e){return e.id===t.selection.first().id}).pop();this.modalService.show(Pa,{initialState:{currentWeight:e.weight,osdId:e.id}})},t.prototype.showCriticalConfirmationModal=function(t,e,n,a){var r=this;this.osdService.safeToDestroy(this.selection.first().id).subscribe(function(i){var o=r.modalService.show(_a.a,{initialState:{actionDescription:t,itemDescription:e,bodyTemplate:r.criticalConfirmationTpl,bodyContext:{result:i,actionDescription:n},submitAction:function(){a.call(r.osdService,r.selection.first().id).subscribe(function(){return o.hide()})}}})})},t.prototype.configureQosParamsAction=function(){this.bsModalRef=this.modalService.show(Ea,{})},t.prototype.configurePgScrubAction=function(){this.bsModalRef=this.modalService.show(Aa,{class:"modal-lg"})},t.prototype.removeActionsWithNoPermissions=function(){this.advancedTableActions=this.permissions?this.advancedTableActions.filter(function(t){return t.permission}):[]},t}(),qa=n("DQlY"),Fa=a["\u0275crt"]({encapsulation:0,styles:[[".caret.caret-black[_ngcontent-%COMP%]{color:#000}"]],data:{}});function za(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"button",[["class","btn btn-sm btn-default dropdown-toggle dropdown-toggle-split"],["dropdownToggle",""],["type","button"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,1).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,1).onEsc()&&r),r},null,null)),a["\u0275did"](1,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](2,0,null,null,0,"span",[["class","caret caret-black"]],null,null,null,null,null))],null,function(t,e){t(e,0,0,!0,a["\u0275nov"](e,1).isDisabled,a["\u0275nov"](e,1).isOpen)})}function Ya(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.context.$implicit.click()&&a),a},null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"i",[["aria-hidden","true"]],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](5,null,["",""]))],null,function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",e.context.$implicit.icon,"")),t(e,5,0,e.context.$implicit.name)})}function Ha(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"ul",[["class","dropdown-menu"],["role","menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Ya)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.SlicePipe,[])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.advancedTableActions,1)))},null)}function Ga(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,10,"div",[["class","btn-group"],["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),(t()(),a["\u0275eld"](3,0,null,null,3,"button",[["class","btn btn-sm btn-default btn-label tc_configureCluster"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.advancedTableActions[0].click()&&a),a},null,null)),(t()(),a["\u0275eld"](4,0,null,null,0,"i",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](6,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,za)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ha)),a["\u0275did"](10,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0),t(e,8,0,n.advancedTableActions.length>1)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,4,0,a["\u0275inlineInterpolate"](1,"fa fa-fw ",n.advancedTableActions[0].icon,"")),t(e,6,0,n.advancedTableActions[0].name)})}function Va(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0"]))],null,null)}function Ba(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),a["\u0275did"](2,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pad"](3,2),a["\u0275pad"](4,2),a["\u0275pod"](5,{"label-success":0,"label-danger":1}),(t()(),a["\u0275ted"](6,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,Va)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,5,0,t(e,3,0,"in","up").includes(e.context.$implicit),t(e,4,0,"down","out").includes(e.context.$implicit));t(e,2,0,"label",n),t(e,8,0,!e.context.last)},function(t,e){t(e,6,0,e.context.$implicit)})}function Ua(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Ba)),a["\u0275did"](1,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function Wa(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Hn.b,Hn.a)),a["\u0275did"](1,573440,null,0,Gn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(t,e){t(e,1,0,e.context.row.stats.stat_bytes,e.context.row.stats.stat_bytes_used)},null)}function Ka(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"tab",[["heading","Overall Performance"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](1,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","three"],["uid","lo02I1Aiz"]],null,null,null,un.b,un.a)),a["\u0275did"](3,638976,null,0,ln.a,[cn.a,dn.DomSanitizer,fn.a,pn.a,Kt.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?","three","lo02I1Aiz")},function(t,e){t(e,0,0,a["\u0275nov"](e,1).id,a["\u0275nov"](e,1).active,a["\u0275nov"](e,1).addClass)})}function $a(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["OSD ",""])),(t()(),a["\u0275ted"](-1,null,[" will be marked "])),(t()(),a["\u0275eld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](5,null,["",""])),(t()(),a["\u0275ted"](-1,null,[" if you proceed."]))],null,function(t,e){t(e,2,0,e.component.selection.first().id),t(e,5,0,e.context.markActionDescription)})}function Za(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","danger"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"cd-warning-panel",[],null,null,null,Vn.b,Vn.a)),a["\u0275did"](2,49152,null,0,Bn.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["The OSD is not safe to destroy!"]))],null,null)}function Xa(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Za)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](2,0,null,null,6,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](4,null,["OSD ",""])),(t()(),a["\u0275ted"](-1,null,[" will be "])),(t()(),a["\u0275eld"](6,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""])),(t()(),a["\u0275ted"](-1,null,[" if you proceed."]))],function(t,e){t(e,1,0,!e.context.result.is_safe_to_destroy)},function(t,e){t(e,4,0,e.component.selection.first().id),t(e,7,0,e.context.actionDescription)})}function Ja(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{statusColor:0}),a["\u0275qud"](402653184,2,{osdUsageTpl:0}),a["\u0275qud"](402653184,3,{markOsdConfirmationTpl:0}),a["\u0275qud"](402653184,4,{criticalConfirmationTpl:0}),a["\u0275qud"](402653184,5,{tableComponent:0}),a["\u0275qud"](402653184,6,{reweightBodyTpl:0}),a["\u0275qud"](402653184,7,{safeToDestroyBodyTpl:0}),(t()(),a["\u0275eld"](7,0,null,null,16,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](8,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](9,0,null,0,12,"tab",[["heading","OSDs List"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](10,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](11,0,null,null,8,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getOsdList()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](12,2867200,[[5,4]],0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"],updateSelectionOnRefresh:[3,"updateSelectionOnRefresh"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](13,0,null,0,4,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Un.b,Un.a)),a["\u0275did"](15,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ga)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](18,0,null,2,1,"cd-osd-details",[["cdTableDetail",""]],null,null,null,ma,sa)),a["\u0275did"](19,573440,null,0,oa,[ia,q.a],{selection:[0,"selection"]},null),(t()(),a["\u0275and"](0,[[1,2],["statusColor",2]],null,0,null,Ua)),(t()(),a["\u0275and"](0,[[2,2],["osdUsageTpl",2]],null,0,null,Wa)),(t()(),a["\u0275and"](16777216,null,0,1,null,Ka)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,[[3,2],["markOsdConfirmationTpl",2]],null,0,null,$a)),(t()(),a["\u0275and"](0,[[4,2],["criticalConfirmationTpl",2]],null,0,null,Xa))],function(t,e){var n=e.component;t(e,10,0,"OSDs List"),t(e,12,0,n.osds,n.columns,"single","never"),t(e,15,0,n.permissions.osd,n.selection,n.tableActions),t(e,17,0,n.advancedTableActions.length>0),t(e,19,0,n.selection),t(e,23,0,n.permissions.grafana.read)},function(t,e){t(e,7,0,a["\u0275nov"](e,8).clazz),t(e,9,0,a["\u0275nov"](e,10).id,a["\u0275nov"](e,10).active,a["\u0275nov"](e,10).addClass)})}function Qa(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-list",[],null,null,null,Ja,Fa)),a["\u0275did"](1,114688,null,0,ja,[q.a,ia,Yt.a,qa.b,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var tr=a["\u0275ccf"]("cd-osd-list",ja,Qa,{},{},[]),er=function(){function t(){}return t.prototype.transform=function(t,e){return t.filter(function(t){var n=!0;return e.forEach(function(e){if(e.value)return(n=n&&e.applyFilter(t,e.value))?void 0:n}),n})},t}(),nr=n("iExv"),ar=function(){function t(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.")}}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.selectedItem.services=Ft.split(this.selectedItem.services,","))},t}(),rr=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ir(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ",": ","",""])),(t()(),a["\u0275eld"](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 or(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,3,"span",[],[[8,"title",0]],null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,2,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(t()(),a["\u0275ted"](3,null,["",""])),a["\u0275ppd"](4,1)],null,function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"",e.component.flags[e.context.$implicit],""));var n=a["\u0275unv"](e,3,0,t(e,4,0,a["\u0275nov"](e.parent.parent,0),e.context.$implicit));t(e,3,0,n)})}function sr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary margin-right-sm"]],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function ur(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,94,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,92,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,90,"table",[["class","table table-striped table-bordered"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,89,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Name"])),(t()(),a["\u0275eld"](9,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](10,null,["",""])),(t()(),a["\u0275eld"](11,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Description"])),(t()(),a["\u0275eld"](14,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](15,null,["",""])),(t()(),a["\u0275eld"](16,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Long description"])),(t()(),a["\u0275eld"](19,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](20,null,["",""])),(t()(),a["\u0275eld"](21,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](22,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Current values"])),(t()(),a["\u0275eld"](24,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ir)),a["\u0275did"](26,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](27,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](28,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Default"])),(t()(),a["\u0275eld"](30,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](31,null,["",""])),(t()(),a["\u0275eld"](32,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](33,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Daemon default"])),(t()(),a["\u0275eld"](35,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](36,null,["",""])),(t()(),a["\u0275eld"](37,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](38,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Type"])),(t()(),a["\u0275eld"](40,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](41,null,["",""])),(t()(),a["\u0275eld"](42,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](43,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Min"])),(t()(),a["\u0275eld"](45,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](46,null,["",""])),(t()(),a["\u0275eld"](47,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](48,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Max"])),(t()(),a["\u0275eld"](50,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](51,null,["",""])),(t()(),a["\u0275eld"](52,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](53,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Flags"])),(t()(),a["\u0275eld"](55,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,or)),a["\u0275did"](57,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](58,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](59,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Services"])),(t()(),a["\u0275eld"](61,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,sr)),a["\u0275did"](63,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](64,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](65,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Source"])),(t()(),a["\u0275eld"](67,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](68,null,["",""])),(t()(),a["\u0275eld"](69,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](70,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Level"])),(t()(),a["\u0275eld"](72,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](73,null,["",""])),(t()(),a["\u0275eld"](74,0,null,null,5,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](75,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Can be updated at runtime (editable)"])),(t()(),a["\u0275eld"](77,0,null,null,2,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](78,null,["",""])),a["\u0275ppd"](79,1),(t()(),a["\u0275eld"](80,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](81,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Tags"])),(t()(),a["\u0275eld"](83,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](84,null,["",""])),(t()(),a["\u0275eld"](85,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](86,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Enum values"])),(t()(),a["\u0275eld"](88,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](89,null,["",""])),(t()(),a["\u0275eld"](90,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](91,0,null,null,1,"td",[["class","bold col-sm-1"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["See also"])),(t()(),a["\u0275eld"](93,0,null,null,1,"td",[["class","col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](94,null,["",""]))],function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,26,0,n.selectedItem.value),t(e,57,0,n.selectedItem.flags),t(e,63,0,n.selectedItem.services)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,10,0,n.selectedItem.name),t(e,15,0,n.selectedItem.desc),t(e,20,0,n.selectedItem.long_desc),t(e,31,0,n.selectedItem.default),t(e,36,0,n.selectedItem.daemon_default),t(e,41,0,n.selectedItem.type),t(e,46,0,n.selectedItem.min),t(e,51,0,n.selectedItem.max),t(e,68,0,n.selectedItem.source),t(e,73,0,n.selectedItem.level);var r=a["\u0275unv"](e,78,0,t(e,79,0,a["\u0275nov"](e.parent,1),n.selectedItem.can_update_at_runtime));t(e,78,0,r),t(e,84,0,n.selectedItem.tags),t(e,89,0,n.selectedItem.enum_values),t(e,94,0,n.selectedItem.see_also)})}function lr(t){return a["\u0275vid"](0,[a["\u0275pid"](0,L.UpperCasePipe,[]),a["\u0275pid"](0,nr.a,[Kt.a]),(t()(),a["\u0275and"](16777216,null,null,1,null,ur)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,null==n.selection?null:n.selection.hasSingleSelection)},null)}var cr=function(){function t(t,e,n){var a=this;this.authStorageService=t,this.configurationService=e,this.i18n=n,this.data=[],this.selection=new mn.a,this.filters=[{label:this.i18n("Level"),prop:"level",initValue:"basic",value:"basic",options:["basic","advanced","dev"],applyFilter:function(t,e){var n=function(t){return t[t.basic=0]="basic",t[t.advanced=1]="advanced",t[t.dev=2]="dev",t}({});return n[t.level]<=n[e]}},{label:this.i18n("Service"),prop:"services",initValue:"any",value:"any",options:["any","mon","mgr","osd","mds","common","mds_client","rgw"],applyFilter:function(t,e){return"any"===e||t.services.includes(e)}},{label:this.i18n("Source"),prop:"source",initValue:"any",value:"any",options:["any","mon"],applyFilter:function(t,e){return"any"===e||!!t.hasOwnProperty("source")&&t.source.includes(e)}}],this.permission=this.authStorageService.getPermissions().configOpt;var r={permission:"update",icon:"fa-pencil",routerLink:function(){return"/configuration/edit/"+(a.selection.first()&&""+encodeURIComponent(a.selection.first().name))},name:this.i18n("Edit"),disable:function(){return!a.isEditable(a.selection)}};this.tableActions=[r]}return t.prototype.ngOnInit=function(){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:Ln.a.checkIcon,flexGrow:.4,cellClass:"text-center"}]},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.getConfigurationList=function(t){var e=this;this.configurationService.getConfigData().subscribe(function(t){e.data=t},function(){t.error()})},t.prototype.updateFilter=function(){this.data=this.data.slice()},t.prototype.resetFilter=function(){this.filters.forEach(function(t){t.value=t.initValue}),this.data=this.data.slice()},t.prototype.isEditable=function(t){return 1===t.selected.length&&t.selected[0].can_update_at_runtime},t}(),dr=a["\u0275crt"]({encapsulation:0,styles:[[".filter[_ngcontent-%COMP%]{padding-right:8px}  datatable-body-cell.wrap{word-break:break-all}"]],data:{}});function fr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],null,null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],null,null),(t()(),a["\u0275ted"](3,null,["",""]))],null,function(t,e){t(e,3,0,e.context.$implicit)})}function pr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[["class","form-group filter"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",": "])),(t()(),a["\u0275eld"](3,0,null,null,7,"select",[["class","form-control input-sm"]],[[2,"ng-untouched",null],[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["\u0275nov"](t,4).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,4).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(t.context.$implicit.value=n)&&r),"ngModelChange"===e&&(r=!1!==i.updateFilter()&&r),r},null,null)),a["\u0275did"](4,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](6,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](8,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,fr)),a["\u0275did"](10,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,6,0,e.context.$implicit.value),t(e,10,0,e.context.$implicit.options)},function(t,e){t(e,2,0,e.context.$implicit.label),t(e,3,0,a["\u0275nov"](e,8).ngClassUntouched,a["\u0275nov"](e,8).ngClassTouched,a["\u0275nov"](e,8).ngClassPristine,a["\u0275nov"](e,8).ngClassDirty,a["\u0275nov"](e,8).ngClassValid,a["\u0275nov"](e,8).ngClassInvalid,a["\u0275nov"](e,8).ngClassPending)})}function hr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ",": ","",""])),(t()(),a["\u0275eld"](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 gr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,hr)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.parent.context.value)},null)}function mr(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,gr)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.context.value)},null)}function br(t){return a["\u0275vid"](0,[a["\u0275pid"](0,er,[]),a["\u0275qud"](402653184,1,{confValTpl:0}),a["\u0275qud"](402653184,2,{confFlagTpl:0}),(t()(),a["\u0275eld"](3,0,null,null,12,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.getConfigurationList(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](4,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],selectionType:[2,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),a["\u0275ppd"](5,2),(t()(),a["\u0275eld"](6,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Un.b,Un.a)),a["\u0275did"](7,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275eld"](8,0,null,1,5,"div",[["class","table-filters"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,pr)),a["\u0275did"](10,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](11,0,null,null,2,"a",[["class","fa-stack"],["title","Reset filters"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.resetFilter()&&a),a},null,null)),(t()(),a["\u0275eld"](12,0,null,null,0,"i",[["class","fa fa-filter fa-stack-2x"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,0,"i",[["class","fa fa-times fa-stack-1x"],["style","margin-left: 8px; margin-top: 5px;"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,2,1,"cd-configuration-details",[["cdTableDetail",""]],null,null,null,lr,rr)),a["\u0275did"](15,573440,null,0,ar,[Kt.a],{selection:[0,"selection"]},null),(t()(),a["\u0275and"](0,[[1,2],["confValTpl",2]],null,0,null,mr))],function(t,e){var n=e.component,r=a["\u0275unv"](e,4,0,t(e,5,0,a["\u0275nov"](e,0),n.data,n.filters));t(e,4,0,r,n.columns,"single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,10,0,n.filters),t(e,15,0,n.selection)},null)}function yr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-configuration",[],null,null,null,br,dr)),a["\u0275did"](1,114688,null,0,cr,[q.a,Oa.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var vr=a["\u0275ccf"]("cd-configuration",cr,yr,{},{},[]),_r=n("gp3X"),xr=n("sb0X"),Tr=n("KVJa"),wr=n("Z21x"),Sr=function(){return function(){this.value=[]}}(),Or=function(){function t(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()}return t.prototype.createForm=function(){var t={name:new $e.i({value:null}),desc:new $e.i({value:null}),long_desc:new $e.i({value:null}),values:new $e.k({}),default:new $e.i({value:null}),daemon_default:new $e.i({value:null}),services:new $e.i([])};this.availSections.forEach(function(e){t.values.addControl(e,new $e.i(null))}),this.configForm=new Ca.a(t)},t.prototype.ngOnInit=function(){var t=this;this.route.params.subscribe(function(e){t.configService.get(e.name).subscribe(function(e){t.setResponse(e)})})},t.prototype.getValidators=function(t){var e=Ia.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},t.prototype.getStep=function(t,e){return Ia.getTypeStep(t,e)},t.prototype.setResponse=function(t){var e=this;this.response=t;var n=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(function(t){var n;n="true"===t.value||"false"!==t.value&&t.value,e.configForm.get("values").get(t.section).setValue(n)}),this.availSections.forEach(function(t){e.configForm.get("values").get(t).setValidators(n)});var a=Ia.getType(t.type);this.type=a.name,this.inputType=a.inputType,this.humanReadableType=a.humanReadable},t.prototype.createRequest=function(){var t=this,e=[];if(this.availSections.forEach(function(n){var a=t.configForm.getValue(n);a&&e.push({section:n,value:a})}),!Ft.isEqual(this.response.value,e)){var n=new Sr;return n.name=this.configForm.getValue("name"),n.value=e,n}return null},t.prototype.submit=function(){var t=this,e=this.createRequest();e&&this.configService.create(e).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n("Updated config option {{name}}",{name:e.name})),t.router.navigate(["/configuration"])},function(){t.configForm.setErrors({cdSubmitButton:!0})}),this.router.navigate(["/configuration"])},t}(),Cr=a["\u0275crt"]({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 kr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Description"])),(t()(),a["\u0275eld"](3,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,5)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,5).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](7,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](9,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275ted"](-1,null,["            "]))],function(t,e){t(e,7,0,"desc")},function(t,e){t(e,4,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending)})}function Ir(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Long description"])),(t()(),a["\u0275eld"](3,0,null,null,7,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,5)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,5).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](7,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](9,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275ted"](-1,null,["            "]))],function(t,e){t(e,7,0,"long_desc")},function(t,e){t(e,4,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending)})}function Dr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Default"])),(t()(),a["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,5)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,5).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](7,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](9,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){t(e,7,0,"default")},function(t,e){t(e,4,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending)})}function Rr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Daemon default"])),(t()(),a["\u0275eld"](3,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,5)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,5).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,5)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](7,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](9,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){t(e,7,0,"daemon_default")},function(t,e){t(e,4,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending)})}function Nr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[["class","form-component-badge"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","badge badge-pill badge-primary"]],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function Ar(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Services"])),(t()(),a["\u0275eld"](3,0,null,null,2,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Nr)),a["\u0275did"](5,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.configForm.getValue("services"))},null)}function Er(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,9,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,4).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,4).onTouched()&&r),r},null,null)),a["\u0275did"](4,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](6,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](8,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](9,0,null,null,1,"label",[],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](10,null,[""," "]))],function(t,e){t(e,6,0,e.parent.context.$implicit)},function(t,e){t(e,3,0,e.parent.context.$implicit,a["\u0275nov"](e,8).ngClassUntouched,a["\u0275nov"](e,8).ngClassTouched,a["\u0275nov"](e,8).ngClassPristine,a["\u0275nov"](e,8).ngClassDirty,a["\u0275nov"](e,8).ngClassValid,a["\u0275nov"](e,8).ngClassInvalid,a["\u0275nov"](e,8).ngClassPending),t(e,9,0,e.parent.context.$implicit),t(e,10,0,e.parent.context.$implicit)})}function Lr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.patternHelpText)})}function Pr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.patternHelpText)})}function Mr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 jr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 qr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,19,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,1,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](4,null,[""," "])),(t()(),a["\u0275eld"](5,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,7)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,7).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,7)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,7)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](7,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](9,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](11,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Lr)),a["\u0275did"](13,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Pr)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Mr)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,jr)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.configForm.showError(e.parent.context.$implicit,a["\u0275nov"](e.parent.parent,3)));t(e,1,0,"form-group",r),t(e,9,0,e.parent.context.$implicit),t(e,13,0,n.configForm.showError(e.parent.context.$implicit,a["\u0275nov"](e.parent.parent,3),"pattern")),t(e,15,0,n.configForm.showError(e.parent.context.$implicit,a["\u0275nov"](e.parent.parent,3),"invalidUuid")),t(e,17,0,n.configForm.showError(e.parent.context.$implicit,a["\u0275nov"](e.parent.parent,3),"max")),t(e,19,0,n.configForm.showError(e.parent.context.$implicit,a["\u0275nov"](e.parent.parent,3),"min"))},function(t,e){var n=e.component;t(e,3,0,e.parent.context.$implicit),t(e,4,0,e.parent.context.$implicit),t(e,6,1,[n.inputType,e.parent.context.$implicit,n.humanReadableType,n.getStep(n.type,n.configForm.getValue(e.parent.context.$implicit)),a["\u0275nov"](e,11).ngClassUntouched,a["\u0275nov"](e,11).ngClassTouched,a["\u0275nov"](e,11).ngClassPristine,a["\u0275nov"](e,11).ngClassDirty,a["\u0275nov"](e,11).ngClassValid,a["\u0275nov"](e,11).ngClassInvalid,a["\u0275nov"](e,11).ngClassPending])})}function Fr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Er)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,qr)),a["\u0275did"](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,"bool"===n.type),t(e,4,0,"bool"!==n.type)},null)}function zr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,48,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,47,"form",[["class","form-horizontal"],["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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,3).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,3).onReset()&&r),r},null,null)),a["\u0275did"](2,16384,null,0,$e.D,[],null,null),a["\u0275did"](3,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](5,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](6,0,null,null,42,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,4,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,3,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Edit"])),(t()(),a["\u0275ted"](11,null,[" "," "])),(t()(),a["\u0275eld"](12,0,null,null,28,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,9,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,1,"label",[["class","control-label col-sm-3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Name"])),(t()(),a["\u0275eld"](16,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,18)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,18).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,18)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,18)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](18,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](20,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](22,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,kr)),a["\u0275did"](24,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ir)),a["\u0275did"](26,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Dr)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Rr)),a["\u0275did"](30,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ar)),a["\u0275did"](32,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](33,0,null,null,7,"div",[["class","col-sm-12"],["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)),a["\u0275did"](34,212992,null,0,$e.m,[[3,$e.d],[8,null],[8,null]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.m]),a["\u0275did"](36,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](37,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Values"])),(t()(),a["\u0275and"](16777216,null,null,1,null,Fr)),a["\u0275did"](40,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](41,0,null,null,7,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](42,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](43,0,null,null,3,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a},_r.b,_r.a)),a["\u0275did"](44,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),a["\u0275eld"](45,0,null,0,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Save"])),(t()(),a["\u0275eld"](47,0,null,null,1,"cd-back-button",[],null,null,null,Tr.b,Tr.a)),a["\u0275did"](48,49152,null,0,wr.a,[L.Location,Ra.b],null,null)],function(t,e){var n=e.component;t(e,3,0,n.configForm),t(e,20,0,"name"),t(e,24,0,n.configForm.getValue("desc")),t(e,26,0,n.configForm.getValue("long_desc")),t(e,28,0,""!==n.configForm.getValue("default")),t(e,30,0,""!==n.configForm.getValue("daemon_default")),t(e,32,0,n.configForm.getValue("services").length>0),t(e,34,0,"values"),t(e,40,0,n.availSections),t(e,44,0,a["\u0275nov"](e,3),"button")},function(t,e){var n=e.component;t(e,1,0,a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending),t(e,11,0,n.configForm.getValue("name")),t(e,17,0,a["\u0275nov"](e,22).ngClassUntouched,a["\u0275nov"](e,22).ngClassTouched,a["\u0275nov"](e,22).ngClassPristine,a["\u0275nov"](e,22).ngClassDirty,a["\u0275nov"](e,22).ngClassValid,a["\u0275nov"](e,22).ngClassInvalid,a["\u0275nov"](e,22).ngClassPending),t(e,33,0,a["\u0275nov"](e,36).ngClassUntouched,a["\u0275nov"](e,36).ngClassTouched,a["\u0275nov"](e,36).ngClassPristine,a["\u0275nov"](e,36).ngClassDirty,a["\u0275nov"](e,36).ngClassValid,a["\u0275nov"](e,36).ngClassInvalid,a["\u0275nov"](e,36).ngClassPending)})}function Yr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-configuration-form",[],null,null,null,zr,Cr)),a["\u0275did"](1,114688,null,0,Or,[kt.a,kt.l,Oa.a,Ta.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var Hr=a["\u0275ccf"]("cd-configuration-form",Or,Yr,{},{},[]),Gr=n("nuQ0"),Vr=n("Tff5"),Br=n("urB8"),Ur=n("xtUU"),Wr=function(){function t(t){this.healthService=t,this.metadataKeyMap={}}return t.prototype.ngOnInit=function(){var t=this;this.healthService.getFullHealth().subscribe(function(e){t.tree=t._abstractTreeData(e)})},t.prototype._abstractTreeData=function(t){var e=this,n=t.osd_map.tree.nodes||[],a={};if(0===n.length)return{value:"No nodes!",settings:{static:!0}};var r=[];return n.reverse().forEach(function(t){"root"===t.type&&r.push(t.id),a[t.id]=e.generateTreeLeaf(t,a)}),{value:"CRUSH map",children:r.map(function(t){return a[t]})}},t.prototype.generateTreeLeaf=function(t,e){var n=t.id;this.metadataKeyMap[n]=t;var a={static:!0},r=t.name+" ("+t.type+")",i=t.status,o=[];return t.children?(t.children.sort().forEach(function(t){o.push(e[t])}),{value:r,status:i,settings:a,id:n,children:o}):{value:r,status:i,settings:a,id:n}},t.prototype.onNodeSelected=function(t){var e=this.metadataKeyMap[t.node.id],n=e.name,a=e.type,r=Y.__rest(e,["name","type","status"]);this.metadata=r,this.metadataTitle=n+" ("+a+")"},t}(),Kr=a["\u0275crt"]({encapsulation:0,styles:[["tree-internal .tree li{cursor:pointer}  tree-internal .tree .node-value{color:#2b99a8;border-radius:5px}  tree-internal .tree .node-selected{background-color:#d9edf7;color:#212121}  tree-internal .tree .node-value:hover{color:#212121}  tree-internal .tree .node-value:after{height:0}"]],data:{}});function $r(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"span",[["class","label"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pad"](2,2),a["\u0275pad"](3,2),a["\u0275pod"](4,{"label-success":0,"label-danger":1}),(t()(),a["\u0275ted"](5,null,["",""])),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0"])),(t()(),a["\u0275eld"](8,0,null,null,0,"span",[["class","node-name"]],[[8,"innerHTML",1]],null,null,null,null))],function(t,e){var n=t(e,4,0,t(e,2,0,"in","up").includes(e.context.$implicit.status),t(e,3,0,"down","out").includes(e.context.$implicit.status));t(e,1,0,"label",n)},function(t,e){t(e,5,0,e.context.$implicit.status),t(e,8,0,e.context.$implicit.value)})}function Zr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[["class","col-sm-6 col-lg-6 metadata"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""])),(t()(),a["\u0275eld"](3,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](4,638976,null,0,$n.a,[Zn.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 Xr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,16,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,15,"div",[["class","col-sm-12 col-lg-12"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,14,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,3,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,2,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CRUSH map viewer"])),(t()(),a["\u0275eld"](7,0,null,null,9,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,6,"div",[["class","col-sm-6 col-lg-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,5,"tree",[],null,[[null,"nodeSelected"]],function(t,e,n){var a=!0;return"nodeSelected"===e&&(a=!1!==t.component.onNodeSelected(n)&&a),a},Gr.b,Gr.a)),a["\u0275prd"](512,null,Vr.TreeService,Vr.TreeService,[Br.NodeDraggableService]),a["\u0275did"](11,770048,null,1,Ur.TreeComponent,[Vr.TreeService],{treeModel:[0,"treeModel"],settings:[1,"settings"]},{nodeSelected:"nodeSelected"}),a["\u0275qud"](335544320,1,{template:0}),a["\u0275pod"](13,{rootIsVisible:0}),(t()(),a["\u0275and"](0,[[1,2]],null,0,null,$r)),(t()(),a["\u0275and"](16777216,null,null,1,null,Zr)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=n.tree,r=t(e,13,0,!1);t(e,11,0,a,r),t(e,16,0,n.metadata)},null)}function Jr(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-crushmap",[],null,null,null,Xr,Kr)),a["\u0275did"](1,114688,null,0,Wr,[ae],null,null)],function(t,e){t(e,1,0)},null)}var Qr=a["\u0275ccf"]("cd-crushmap",Wr,Jr,{},{},[]),ti=n("ARl4"),ei=n("MwfX"),ni=function(){function t(){}return t.prototype.writeValue=function(e){return{type:t.WRITE_VALUE,payload:e}},t.prototype.changeHours=function(e){return{type:t.CHANGE_HOURS,payload:e}},t.prototype.changeMinutes=function(e){return{type:t.CHANGE_MINUTES,payload:e}},t.prototype.changeSeconds=function(e){return{type:t.CHANGE_SECONDS,payload:e}},t.prototype.setTime=function(e){return{type:t.SET_TIME_UNIT,payload:e}},t.prototype.updateControls=function(e){return{type:t.UPDATE_CONTROLS,payload:e}},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}(),ai=10,ri=24,ii=12,oi=60,si=60;function ui(t){return!!t&&!(t instanceof Date&&isNaN(t.getHours()))&&("string"!=typeof t||ui(new Date(t)))}function li(t,e){return!(t.min&&e<t.min||t.max&&e>t.max)}function ci(t){return"number"==typeof t?t:parseInt(t,ai)}function di(t,e){void 0===e&&(e=!1);var n=ci(t);return isNaN(n)||n<0||n>(e?ii:ri)?NaN:n}function fi(t){var e=ci(t);return isNaN(e)||e<0||e>oi?NaN:e}function pi(t){var e=ci(t);return isNaN(e)||e<0||e>si?NaN:e}function hi(t){return"string"==typeof t?new Date(t):t}function gi(t,e){if(!t)return gi(mi(new Date,0,0,0),e);var n=t.getHours(),a=t.getMinutes(),r=t.getSeconds();return e.hour&&(n=(n+ci(e.hour))%ri)<0&&(n+=ri),e.minute&&(a+=ci(e.minute)),e.seconds&&(r+=ci(e.seconds)),mi(t,n,a,r)}function mi(t,e,n,a){return new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,n,a,t.getMilliseconds())}function bi(t){var e=t.toString();return e.length>1?e:"0"+e}function yi(t,e){return!isNaN(di(t,e))}function vi(t){return!isNaN(fi(t))}function _i(t){return!isNaN(pi(t))}function xi(t,e,n,a){return void 0===e&&(e="0"),void 0===n&&(n="0"),yi(t,a)&&vi(e)&&_i(n)}function Ti(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 wi(t){return{hourStep:t.hourStep,minuteStep:t.minuteStep,secondsStep:t.secondsStep,readonlyInput:t.readonlyInput,disabled:t.disabled,mousewheel:t.mousewheel,arrowkeys:t.arrowkeys,showSpinners:t.showSpinners,showMeridian:t.showMeridian,showSeconds:t.showSeconds,meridians:t.meridians,min:t.min,max:t.max}}var Si=function(){return function(){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}}(),Oi={value:null,config:new Si,controls:{canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0}};function Ci(t,e){switch(void 0===t&&(t=Oi),e.type){case ni.WRITE_VALUE:return Object.assign({},t,{value:e.payload});case ni.CHANGE_HOURS:if(!Ti(t.config,e.payload)||(d=t.controls,!(c=e.payload).step||c.step>0&&!d.canIncrementHours||c.step<0&&!d.canDecrementHours))return t;var n=gi(t.value,{hour:e.payload.step});return!t.config.max&&!t.config.min||li(t.config,n)?Object.assign({},t,{value:n}):t;case ni.CHANGE_MINUTES:return Ti(t.config,e.payload)&&function(t,e){return!(!t.step||t.step>0&&!e.canIncrementMinutes||t.step<0&&!e.canDecrementMinutes)}(e.payload,t.controls)?(n=gi(t.value,{minute:e.payload.step}),!t.config.max&&!t.config.min||li(t.config,n)?Object.assign({},t,{value:n}):t):t;case ni.CHANGE_SECONDS:return Ti(t.config,e.payload)&&function(t,e){return!(!t.step||t.step>0&&!e.canIncrementSeconds||t.step<0&&!e.canDecrementSeconds)}(e.payload,t.controls)?(n=gi(t.value,{seconds:e.payload.step}),!t.config.max&&!t.config.min||li(t.config,n)?Object.assign({},t,{value:n}):t):t;case ni.SET_TIME_UNIT:return Ti(t.config)?(i=t.value,s=di((o=e.payload).hour),u=fi(o.minute),l=pi(o.seconds)||0,o.isPM&&(s+=ii),n=i?isNaN(s)||isNaN(u)?i:mi(i,s,u,l):isNaN(s)||isNaN(u)?i:mi(new Date,s,u,l),Object.assign({},t,{value:n})):t;case ni.UPDATE_CONTROLS:var a=function(t,e){var n=e.min,a=e.max,r=e.hourStep,i=e.minuteStep,o=e.secondsStep,s=e.showSeconds,u={canIncrementHours:!0,canIncrementMinutes:!0,canIncrementSeconds:!0,canDecrementHours:!0,canDecrementMinutes:!0,canDecrementSeconds:!0,canToggleMeridian:!0};if(!t)return u;if(a){var l=gi(t,{hour:r});if(u.canIncrementHours=a>l,!u.canIncrementHours){var c=gi(t,{minute:i});u.canIncrementMinutes=s?a>c:a>=c}if(!u.canIncrementMinutes){var d=gi(t,{seconds:o});u.canIncrementSeconds=a>=d}t.getHours()<12&&(u.canToggleMeridian=gi(t,{hour:12})<a)}return n&&(l=gi(t,{hour:-r}),u.canDecrementHours=n<l,u.canDecrementHours||(c=gi(t,{minute:-i}),u.canDecrementMinutes=s?n<c:n<=c),u.canDecrementMinutes||(d=gi(t,{seconds:-o}),u.canDecrementSeconds=n<=d),t.getHours()>=12&&(u.canToggleMeridian=gi(t,{hour:-12})>n)),u}(t.value,e.payload),r={value:t.value,config:e.payload,controls:a};return t.config.showMeridian!==r.config.showMeridian&&t.value&&(r.value=new Date(t.value)),Object.assign({},t,r);default:return t}var i,o,s,u,l,c,d}var ki=function(t){function e(){var e=new ie.a({type:"[mini-ngrx] dispatcher init"}),n=new ei.a(Oi,e,Ci);return t.call(this,e,Ci,n)||this}return Object(Y.__extends)(e,t),e}(ei.b),Ii=function(){function t(t,e,n,r){var i=this;this._cd=e,this._store=n,this._timepickerActions=r,this.isValid=new a.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(function(t){return t.value}).subscribe(function(t){i._renderTime(t),i.onChange(t),i._store.dispatch(i._timepickerActions.updateControls(wi(i)))}),n.select(function(t){return t.controls}).subscribe(function(t){i.isValid.emit(xi(i.hours,i.minutes,i.seconds,i.isPM())),Object.assign(i,t),e.markForCheck()})}return Object.defineProperty(t.prototype,"isSpinnersVisible",{get:function(){return this.showSpinners&&!this.readonlyInput},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isEditable",{get:function(){return!(this.readonlyInput||this.disabled)},enumerable:!0,configurable:!0}),t.prototype.resetValidation=function(){this.invalidHours=!1,this.invalidMinutes=!1,this.invalidSeconds=!1},t.prototype.isPM=function(){return this.showMeridian&&this.meridian===this.meridians[1]},t.prototype.prevDef=function(t){t.preventDefault()},t.prototype.wheelSign=function(t){return-1*Math.sign(t.deltaY)},t.prototype.ngOnChanges=function(t){this._store.dispatch(this._timepickerActions.updateControls(wi(this)))},t.prototype.changeHours=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeHours({step:t,source:e}))},t.prototype.changeMinutes=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeMinutes({step:t,source:e}))},t.prototype.changeSeconds=function(t,e){void 0===e&&(e=""),this.resetValidation(),this._store.dispatch(this._timepickerActions.changeSeconds({step:t,source:e}))},t.prototype.updateHours=function(t){if(this.resetValidation(),this.hours=t,!yi(this.hours,this.isPM())||!this.isValidLimit())return this.invalidHours=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.updateMinutes=function(t){if(this.resetValidation(),this.minutes=t,!vi(this.minutes)||!this.isValidLimit())return this.invalidMinutes=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.updateSeconds=function(t){if(this.resetValidation(),this.seconds=t,!_i(this.seconds)||!this.isValidLimit())return this.invalidSeconds=!0,this.isValid.emit(!1),void this.onChange(null);this._updateTime()},t.prototype.isValidLimit=function(){return t={hour:this.hours,minute:this.minutes,seconds:this.seconds,isPM:this.isPM()},e=this.max,n=this.min,a=gi(new Date,t),!(e&&a>e||n&&a<n);var t,e,n,a},t.prototype._updateTime=function(){if(!xi(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()}))},t.prototype.toggleMeridian=function(){this.showMeridian&&this.isEditable&&this._store.dispatch(this._timepickerActions.changeHours({step:12,source:""}))},t.prototype.writeValue=function(t){ui(t)?this._store.dispatch(this._timepickerActions.writeValue(hi(t))):null==t&&this._store.dispatch(this._timepickerActions.writeValue(null))},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.prototype.setDisabledState=function(t){this.disabled=t,this._cd.markForCheck()},t.prototype.ngOnDestroy=function(){this.timepickerSub.unsubscribe()},t.prototype._renderTime=function(t){if(!ui(t))return this.hours="",this.minutes="",this.seconds="",void(this.meridian=this.meridians[0]);var e=hi(t),n=e.getHours();this.showMeridian&&(this.meridian=this.meridians[n>=12?1:0],0==(n%=12)&&(n=12)),this.hours=bi(n),this.minutes=bi(e.getMinutes()),this.seconds=bi(e.getUTCSeconds())},t}(),Di=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[Si,ni,ki]}},t}(),Ri=a["\u0275crt"]({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    }\n  "],data:{}});function Ni(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function Ai(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](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 Ei(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0"]))],null,null)}function Li(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](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 Pi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function Mi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function ji(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0:\xa0"]))],null,null)}function qi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","MM"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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.readonlyInput,n.disabled,n.minutes)})}function Fi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0:\xa0"]))],null,null)}function zi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","SS"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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.readonlyInput,n.disabled,n.seconds)})}function Yi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function Hi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275ted"](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 Gi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function Vi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](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 Bi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0"]))],null,null)}function Ui(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](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 Wi(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"td",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\xa0\xa0"]))],null,null)}function Ki(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"td",[],null,null,null,null,null))],null,null)}function $i(t){return a["\u0275vid"](2,[(t()(),a["\u0275eld"](0,0,null,null,48,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,47,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](5,0,null,null,0,"span",[["class","bs-chevron bs-chevron-up"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Ni)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ai)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ei)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Li)),a["\u0275did"](13,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Pi)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Mi)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](18,0,null,null,14,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,1,"td",[["class","form-group"]],[[2,"has-error",null]],null,null,null,null)),(t()(),a["\u0275eld"](20,0,null,null,0,"input",[["class","form-control text-center bs-timepicker-field"],["maxlength","2"],["placeholder","HH"],["type","text"]],[[2,"is-invalid",null],[8,"readOnly",0],[8,"disabled",0],[8,"value",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()(),a["\u0275and"](16777216,null,null,1,null,ji)),a["\u0275did"](22,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,qi)),a["\u0275did"](24,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Fi)),a["\u0275did"](26,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,zi)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Yi)),a["\u0275did"](30,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Hi)),a["\u0275did"](32,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](33,0,null,null,15,"tr",[["class","text-center"]],[[8,"hidden",0]],null,null,null,null)),(t()(),a["\u0275eld"](34,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275eld"](36,0,null,null,0,"span",[["class","bs-chevron bs-chevron-down"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Gi)),a["\u0275did"](38,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Vi)),a["\u0275did"](40,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Bi)),a["\u0275did"](42,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ui)),a["\u0275did"](44,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Wi)),a["\u0275did"](46,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ki)),a["\u0275did"](48,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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.readonlyInput,n.disabled,n.hours),t(e,33,0,!n.showSpinners),t(e,35,0,!n.canDecrementHours||!n.isEditable)})}var Zi=n("E2fk"),Xi=function(){function t(t){this.http=t}return t.prototype.getLogs=function(){return this.http.get("api/logs/all")},t.prototype.validateDashboardUrl=function(t){return this.http.get("api/grafana/validation/"+t)},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),Ji=function(){function t(t){this.logsService=t,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)}return t.prototype.ngOnInit=function(){var t=this;this.getInfo(),this.interval=window.setInterval(function(){t.getInfo()},5e3)},t.prototype.ngOnDestroy=function(){clearInterval(this.interval)},t.prototype.getInfo=function(){var t=this;this.logsService.getLogs().subscribe(function(e){t.contentData=e,t.filterLogs()})},t.prototype.abstractfilters=function(){var t,e=this.priority,n=this.search.toLowerCase().replace(/,/g,"");if(this.selectedDate){var a=this.selectedDate.getMonth()+1,r=this.selectedDate.getDate();t=this.selectedDate.getFullYear().toString()+"-"+(a<=9?"0"+a:""+a)+"-"+(r<=9?"0"+r:""+r)}else t="";return{priority:e,key:n,yearMonthDay:t,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)}},t.prototype.filterExecutor=function(t,e){return t.filter(function(t){var n,a,r=parseInt(t.stamp.slice(11,13),10),i=parseInt(t.stamp.slice(14,16),10);return n=e.yearMonthDay?e.yearMonthDay:t.stamp,a=60*r+i,t.priority===("All"===e.priority?t.priority:e.priority)&&-1!==t.message.toLowerCase().indexOf(e.key)&&-1!==t.stamp.indexOf(n)&&a>=e.sTime&&a<=e.eTime})},t.prototype.filterLogs=function(){var t=this.abstractfilters();this.clog=this.filterExecutor(this.contentData.clog,t),this.audit_log=this.filterExecutor(this.contentData.audit_log,t)},t.prototype.clearSearchKey=function(){this.search="",this.filterLogs()},t.prototype.clearDate=function(){this.selectedDate=null,this.filterLogs()},t}(),Qi=a["\u0275crt"]({encapsulation:0,styles:[["p[_ngcontent-%COMP%]{font-family:monospace;color:#000}.well[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{display:-webkit-box;display:flex}.well[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.well[_ngcontent-%COMP%]   .timestamp[_ngcontent-%COMP%]{font-weight:700;flex-shrink:0}.well[_ngcontent-%COMP%]   .priority[_ngcontent-%COMP%]{margin-left:.5rem}.well[_ngcontent-%COMP%]   .message[_ngcontent-%COMP%]{margin-left:1rem}.well[_ngcontent-%COMP%]   .err[_ngcontent-%COMP%]{color:#a94442}.well[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{color:#ffc200}.well[_ngcontent-%COMP%]   .info[_ngcontent-%COMP%]{color:#2b99a8}  timepicker table tbody tr td .bs-timepicker-field{width:3.5rem;font-size:1rem;padding:4px 6px}  timepicker table tbody tr td .btn{font-size:1rem}.log-filters[_ngcontent-%COMP%]{margin-bottom:5px;padding:0 30px}.log-filters[_ngcontent-%COMP%]   *[_ngcontent-%COMP%]{box-sizing:border-box}.log-filters[_ngcontent-%COMP%]   .filter-box[_ngcontent-%COMP%]{margin:0;padding:0 15px 5px 0;display:-webkit-box;display:flex;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center}.log-filters[_ngcontent-%COMP%]   .filter-box[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{padding-top:5px;padding-right:5px}@media (max-width:991px){.log-filters[_ngcontent-%COMP%]   .time-box[_ngcontent-%COMP%]{margin-top:20px}}@media (min-width:1200px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:28vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:20vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:16vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:14vw}}@media (min-width:1400px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:24vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:18vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:14vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:12vw}}@media (min-width:1600px){.log-filters[_ngcontent-%COMP%]   .cd-col-4[_ngcontent-%COMP%]{width:22vw}.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:16vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:12vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:10vw}}@media (min-width:1800px){.log-filters[_ngcontent-%COMP%]   .cd-col-3[_ngcontent-%COMP%]{width:14vw}.log-filters[_ngcontent-%COMP%]   .cd-col-2[_ngcontent-%COMP%]{width:11vw}.log-filters[_ngcontent-%COMP%]   .cd-col-1[_ngcontent-%COMP%]{width:9vw}}"]],data:{}});function to(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function eo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"p",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""])),(t()(),a["\u0275eld"](3,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),a["\u0275ppd"](4,1),(t()(),a["\u0275ted"](5,null,["",""])),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.stamp);var n=a["\u0275inlineInterpolate"](1,"priority ",a["\u0275unv"](e,3,0,t(e,4,0,a["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.priority)),"");t(e,3,0,n),t(e,5,0,e.context.$implicit.priority),t(e,7,0,e.context.$implicit.message)})}function no(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,eo)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.clog)},null)}function ao(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["No entries found"]))],null,null)}function ro(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"p",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","timestamp"]],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,["",""])),(t()(),a["\u0275eld"](3,0,null,null,2,"span",[],[[8,"className",0]],null,null,null,null)),a["\u0275ppd"](4,1),(t()(),a["\u0275ted"](5,null,["",""])),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","message"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.stamp);var n=a["\u0275inlineInterpolate"](1,"priority ",a["\u0275unv"](e,3,0,t(e,4,0,a["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.priority)),"");t(e,3,0,n),t(e,5,0,e.context.$implicit.priority),t(e,7,0,e.context.$implicit.message)})}function io(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,ro)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.audit_log)},null)}function oo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["No entries found"]))],null,null)}function so(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,18,"div",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,to)),a["\u0275did"](2,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275eld"](3,0,null,null,15,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](4,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](5,0,null,0,6,"tab",[["heading","Cluster Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](6,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](7,0,null,null,4,"div",[["class","well"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,no)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ao)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](12,0,null,0,6,"tab",[["heading","Audit Logs"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](13,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](14,0,null,null,4,"div",[["class","well"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,io)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,oo)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,2,0,a["\u0275nov"](e.parent,3)),t(e,6,0,"Cluster Logs"),t(e,9,0,n.clog),t(e,11,0,0===n.contentData.clog.length),t(e,13,0,"Audit Logs"),t(e,16,0,n.audit_log),t(e,18,0,0===n.contentData.audit_log.length)},function(t,e){t(e,3,0,a["\u0275nov"](e,4).clazz),t(e,5,0,a["\u0275nov"](e,6).id,a["\u0275nov"](e,6).active,a["\u0275nov"](e,6).addClass),t(e,12,0,a["\u0275nov"](e,13).id,a["\u0275nov"](e,13).active,a["\u0275nov"](e,13).addClass)})}function uo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["class","form-control"]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 lo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,62,"div",[["class","row log-filters"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,10,"div",[["class","col-xs-4 col-md-2 cd-col-1 filter-box"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Priority:"])),(t()(),a["\u0275eld"](4,0,null,null,7,"select",[["class","form-control"]],[[2,"ng-untouched",null],[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["\u0275nov"](t,5).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,5).onTouched()&&r),"ngModelChange"===e&&(r=!1!==(i.priority=n)&&r),"ngModelChange"===e&&(r=!1!==i.filterLogs()&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](7,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](9,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,uo)),a["\u0275did"](11,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](12,0,null,null,14,"div",[["class","col-xs-4 col-md-3 cd-col-3 filter-box"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Keyword:"])),(t()(),a["\u0275eld"](15,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,0,"i",[["class","glyphicon glyphicon-search"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,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["\u0275nov"](t,19)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,19).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.search=n)&&r),"keyup"===e&&(r=!1!==i.filterLogs()&&r),r},null,null)),a["\u0275did"](19,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](21,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](23,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](24,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](25,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["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()(),a["\u0275eld"](26,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),a["\u0275eld"](27,0,null,null,15,"div",[["class","col-xs-4 col-md-3 cd-col-2 filter-box"]],null,null,null,null,null)),(t()(),a["\u0275eld"](28,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Date:"])),(t()(),a["\u0275eld"](30,0,null,null,12,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](31,16777216,null,null,8,"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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["\u0275nov"](t,32)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,32).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,32)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,32)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,34).onChange(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,34).hide()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,34).onBlur()&&r),"ngModelChange"===e&&(r=!1!==(i.selectedDate=n)&&r),"ngModelChange"===e&&(r=!1!==i.filterLogs()&&r),r},null,null)),a["\u0275did"](32,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](33,737280,null,0,ti.b,[ti.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a],{bsConfig:[0,"bsConfig"]},null),a["\u0275did"](34,16384,null,0,ti.B,[ti.b,ti.f,a.Renderer2,a.ElementRef,a.ChangeDetectorRef],null,null),a["\u0275prd"](1024,null,$e.o,function(t){return[t]},[ti.B]),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,ti.B]),a["\u0275did"](37,671744,null,0,$e.u,[[8,null],[6,$e.o],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](39,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](40,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](41,0,null,null,1,"button",[["class","btn btn-default clear-input tc_clearInputBtn"],["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()(),a["\u0275eld"](42,0,null,null,0,"i",[["class","icon-prepend fa fa-remove"]],null,null,null,null,null)),(t()(),a["\u0275eld"](43,0,null,null,0,"div",[["class","clearfix visible-xs-block"]],null,null,null,null,null)),(t()(),a["\u0275eld"](44,0,null,null,18,"div",[["class","col-xs-8 col-md-4 cd-col-4 filter-box time-box"]],null,null,null,null,null)),(t()(),a["\u0275eld"](45,0,null,null,1,"label",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Time range:"])),(t()(),a["\u0275eld"](47,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},$i,Ri)),a["\u0275prd"](512,null,ki,ki,[]),a["\u0275did"](49,704512,null,0,Ii,[Si,a.ChangeDetectorRef,ki,ni],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[Ii]),a["\u0275did"](51,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](53,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](54,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xa0\u2014\xa0"])),(t()(),a["\u0275eld"](56,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},$i,Ri)),a["\u0275prd"](512,null,ki,ki,[]),a["\u0275did"](58,704512,null,0,Ii,[Si,a.ChangeDetectorRef,ki,ni],{minuteStep:[0,"minuteStep"],showSpinners:[1,"showSpinners"],showMeridian:[2,"showMeridian"]},null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[Ii]),a["\u0275did"](60,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](62,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){var n=e.component;t(e,7,0,n.priority),t(e,11,0,n.prioritys),t(e,21,0,n.search),t(e,33,0,n.bsConfig),t(e,37,0,n.selectedDate),t(e,49,0,1,n.showSpinners,!1),t(e,51,0,n.startTime),t(e,58,0,1,n.showSpinners,!1),t(e,60,0,n.endTime)},function(t,e){t(e,4,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending),t(e,18,0,a["\u0275nov"](e,23).ngClassUntouched,a["\u0275nov"](e,23).ngClassTouched,a["\u0275nov"](e,23).ngClassPristine,a["\u0275nov"](e,23).ngClassDirty,a["\u0275nov"](e,23).ngClassValid,a["\u0275nov"](e,23).ngClassInvalid,a["\u0275nov"](e,23).ngClassPending),t(e,31,0,a["\u0275nov"](e,39).ngClassUntouched,a["\u0275nov"](e,39).ngClassTouched,a["\u0275nov"](e,39).ngClassPristine,a["\u0275nov"](e,39).ngClassDirty,a["\u0275nov"](e,39).ngClassValid,a["\u0275nov"](e,39).ngClassInvalid,a["\u0275nov"](e,39).ngClassPending),t(e,47,0,a["\u0275nov"](e,53).ngClassUntouched,a["\u0275nov"](e,53).ngClassTouched,a["\u0275nov"](e,53).ngClassPristine,a["\u0275nov"](e,53).ngClassDirty,a["\u0275nov"](e,53).ngClassValid,a["\u0275nov"](e,53).ngClassInvalid,a["\u0275nov"](e,53).ngClassPending),t(e,56,0,a["\u0275nov"](e,62).ngClassUntouched,a["\u0275nov"](e,62).ngClassTouched,a["\u0275nov"](e,62).ngClassPristine,a["\u0275nov"](e,62).ngClassDirty,a["\u0275nov"](e,62).ngClassValid,a["\u0275nov"](e,62).ngClassInvalid,a["\u0275nov"](e,62).ngClassPending)})}function co(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Zi.a,[]),(t()(),a["\u0275and"](16777216,null,null,1,null,so)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,[["logFiltersTpl",2]],null,0,null,lo))],function(t,e){t(e,2,0,e.component.contentData)},null)}function fo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-logs",[],null,null,null,co,Qi)),a["\u0275did"](1,245760,null,0,Ji,[Xi],null,null)],function(t,e){t(e,1,0)},null)}var po=a["\u0275ccf"]("cd-logs",Ji,fo,{},{},[]),ho=function(){function t(t){this.router=t,this.url=this.router.url}return t.prototype.navigateTo=function(t){this.router.navigate([t])},t}(),go=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function mo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,1,"tab",[["heading","Alerts"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(t,e,n){var a=!0;return"select"===e&&(a=!1!==t.component.navigateTo("/alerts")&&a),a},null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"}),(t()(),a["\u0275eld"](4,0,null,0,1,"tab",[["heading","Silences"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"]],function(t,e,n){var a=!0;return"select"===e&&(a=!1!==t.component.navigateTo("/silence")&&a),a},null,null)),a["\u0275did"](5,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"],active:[1,"active"]},{select:"select"})],function(t,e){var n=e.component;t(e,3,0,"Alerts","/alerts"===n.url),t(e,5,0,"Silences","/silence"===n.url)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,4,0,a["\u0275nov"](e,5).id,a["\u0275nov"](e,5).active,a["\u0275nov"](e,5).addClass)})}var bo,yo=n("EgGo");!function(t){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-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-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.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 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.width="fa fa-fw",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"}(bo||(bo={}));var vo=function(){function t(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"}}return t.prototype.ifAlertmanagerConfigured=function(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.alertmanager,t,e)},t.prototype.disableAlertmanagerConfig=function(){this.settingsService.disableSetting(this.settingsKey.alertmanager)},t.prototype.ifPrometheusConfigured=function(t,e){this.settingsService.ifSettingConfigured(this.settingsKey.prometheus,t,e)},t.prototype.disablePrometheusConfig=function(){this.settingsService.disableSetting(this.settingsKey.prometheus)},t.prototype.getAlerts=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL,{params:t})},t.prototype.getSilences=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL+"/silences",{params:t})},t.prototype.getRules=function(t){return void 0===t&&(t={}),this.http.get(this.baseURL+"/rules",{params:t})},t.prototype.setSilence=function(t){return this.http.post(this.baseURL+"/silence",t,{observe:"response"})},t.prototype.expireSilence=function(t){return this.http.delete(this.baseURL+"/silence/"+t,{observe:"response"})},t.prototype.getNotifications=function(t){return this.http.get(this.baseURL+"/notifications?from="+(t&&t.id?t.id:"last"))},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c),a.inject(fn.a))},token:t,providedIn:ne.a}),t}(),_o=n("G1I9"),xo=function(){function t(t){this.notificationService=t}return t.prototype.sendNotifications=function(t){var e=this;t.forEach(function(t){return e.notificationService.show(t)})},t.prototype.convertToCustomAlerts=function(t){var e=this;return Ft.uniqWith(t.map(function(t){return{status:Ft.isObject(t.status)?t.status.state:e.getPrometheusNotificationStatus(t),name:t.labels.alertname,url:t.generatorURL,summary:t.annotations.summary,fingerprint:Ft.isObject(t.status)&&t.fingerprint}}),Ft.isEqual)},t.prototype.getPrometheusNotificationStatus=function(t){var e=t.status;return"firing"===e?"active":e},t.prototype.convertAlertToNotification=function(t){return new _o.b(this.formatType(t.status),t.name+" ("+t.status+")",this.appendSourceLink(t,t.summary),void 0,"Prometheus")},t.prototype.formatType=function(t){return xa.a[Ft.findKey({error:["firing","active"],info:["suppressed","unprocessed"],success:["resolved"]},function(e){return e.includes(t)})]},t.prototype.appendSourceLink=function(t,e){return e+' <a href="'+t.url+'" target="_blank"><i class="fa fa-line-chart"></i></a>'},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(Ta.a))},token:t,providedIn:"root"}),t}(),To=function(){function t(t,e){this.alertFormatter=t,this.prometheusService=e,this.canAlertsBeNotified=!1,this.alerts=[]}return t.prototype.refresh=function(){var t=this;this.prometheusService.ifAlertmanagerConfigured(function(){t.prometheusService.getAlerts().subscribe(function(e){return t.handleAlerts(e)},function(e){[404,504].includes(e.status)&&t.prometheusService.disableAlertmanagerConfig()})})},t.prototype.handleAlerts=function(t){this.canAlertsBeNotified&&this.notifyOnAlertChanges(t,this.alerts),this.alerts=t,this.canAlertsBeNotified=!0},t.prototype.notifyOnAlertChanges=function(t,e){var n=this,a=this.getChangedAlerts(this.alertFormatter.convertToCustomAlerts(t),this.alertFormatter.convertToCustomAlerts(e)).map(function(t){return n.alertFormatter.convertAlertToNotification(t)});this.alertFormatter.sendNotifications(a)},t.prototype.getChangedAlerts=function(t,e){return Ft.differenceWith(t,e,Ft.isEqual).concat(this.getVanishedAlerts(t,e))},t.prototype.getVanishedAlerts=function(t,e){return Ft.differenceWith(e,t,function(t,e){return t.fingerprint===e.fingerprint}).map(function(t){return t.status="resolved",t})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(xo),a.inject(vo))},token:t,providedIn:"root"}),t}(),wo=new yo.a("silence"),So=function(){function t(t,e,n,a,r){var i=this;this.authStorageService=t,this.prometheusAlertService=e,this.urlBuilder=n,this.i18n=a,this.cdDatePipe=r,this.selection=new mn.a,this.icons=bo,this.customCss={"label label-danger":"active","label label-warning":"unprocessed","label label-info":"suppressed"},this.permission=this.authStorageService.getPermissions().prometheus,this.tableActions=[{permission:"create",canBePrimary:function(t){return t.hasSingleSelection},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting},icon:bo.add,routerLink:function(){return i.urlBuilder.getCreateFrom(i.selection.first().fingerprint)},name:this.i18n("Create silence")}]}return t.prototype.ngOnInit=function(){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:Ln.a.classAdding},{name:this.i18n("Started"),prop:"startsAt",pipe:this.cdDatePipe},{name:this.i18n("URL"),prop:"generatorURL",sortable:!1,cellTemplate:this.externalLinkTpl}]},t.prototype.updateSelection=function(t){this.selection=t},t}(),Oo=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Co(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](5,638976,null,0,$n.a,[Zn.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,3,0,"Details"),t(e,5,0,n.selection.first(),!1,!0,!1,!0,n.customCss)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass)})}function ko(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"i",[["class","fa fa-line-chart"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" Source"]))],null,function(t,e){t(e,0,0,e.context.value)})}function Io(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{externalLinkTpl:0}),(t()(),a["\u0275eld"](1,0,null,null,1,"cd-prometheus-tabs",[],null,null,null,mo,go)),a["\u0275did"](2,49152,null,0,ho,[kt.l],null,null),(t()(),a["\u0275eld"](3,0,null,null,5,"cd-table",[["identifier","fingerprint"],["selectionType","single"]],null,[[null,"updateSelection"]],function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](4,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],identifier:[2,"identifier"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"],customCss:[5,"customCss"]},{updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](5,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Un.b,Un.a)),a["\u0275did"](6,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275and"](16777216,null,2,1,null,Co)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,[[1,2],["externalLinkTpl",2]],null,0,null,ko))],function(t,e){var n=e.component;t(e,4,0,n.prometheusAlertService.alerts,n.columns,"fingerprint",!0,"single",n.customCss),t(e,6,0,n.permission,n.selection,n.tableActions),t(e,8,0,n.selection.hasSingleSelection)},null)}function Do(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-prometheus-list",[],null,null,null,Io,Oo)),a["\u0275prd"](256,null,yo.a,wo,[]),a["\u0275did"](2,114688,null,0,So,[q.a,To,yo.a,Kt.a,Zn.a],null,null)],function(t,e){t(e,2,0)},null)}var Ro=a["\u0275ccf"]("cd-prometheus-list",So,Do,{},{},[]),No=n("y9jh"),Ao=n("6blF"),Eo=new yo.a("silence"),Lo=function(){function t(t,e,n,a,r,i,o,s,u){this.authStorageService=t,this.i18n=e,this.cdDatePipe=n,this.prometheusService=a,this.modalService=r,this.notificationService=i,this.urlBuilder=o,this.actionLabels=s,this.succeededLabels=u,this.silences=[],this.selection=new mn.a,this.customCss={"label label-danger":"active","label label-warning":"pending","label label-default":"expired"},this.sorts=[{prop:"endsAt",dir:No.SortDirection.desc}],this.permission=this.authStorageService.getPermissions().prometheus}return t.prototype.ngOnInit=function(){var t=this,e=function(t){return t.first()&&"expired"===t.first().status.state};this.tableActions=[{permission:"create",icon:bo.add,routerLink:function(){return t.urlBuilder.getCreate()},canBePrimary:function(t){return!t.hasSingleSelection},name:this.actionLabels.CREATE},{permission:"create",canBePrimary:function(t){return t.hasSingleSelection&&e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&e(t)||!e(t)},icon:bo.copy,routerLink:function(){return t.urlBuilder.getRecreate(t.selection.first().id)},name:this.actionLabels.RECREATE},{permission:"update",icon:bo.edit,canBePrimary:function(t){return t.hasSingleSelection&&!e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||t.first().cdExecuting&&!e(t)||e(t)},routerLink:function(){return t.urlBuilder.getEdit(t.selection.first().id)},name:this.actionLabels.EDIT},{permission:"delete",icon:bo.trash,canBePrimary:function(t){return t.hasSingleSelection&&!e(t)},disable:function(t){return!t.hasSingleSelection||t.first().cdExecuting||e(t)},click:function(){return t.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:Ln.a.classAdding}]},t.prototype.refresh=function(){var t=this;this.prometheusService.ifAlertmanagerConfigured(function(){t.prometheusService.getSilences().subscribe(function(e){t.silences=e},function(){t.prometheusService.disableAlertmanagerConfig()})})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.expireSilence=function(){var t=this,e=this.selection.first().id,n=this.i18n("Silence");this.modalRef=this.modalService.show(_a.a,{initialState:{itemDescription:n,actionDescription:this.actionLabels.EXPIRE,submitActionObservable:function(){return new Ao.a(function(a){t.prometheusService.expireSilence(e).subscribe(function(){t.notificationService.show(xa.a.success,t.succeededLabels.EXPIRED+" "+n+" "+e,void 0,void 0,"Prometheus")},function(t){t.application="Prometheus",a.error(t)},function(){a.complete(),t.refresh()})})}}})},t}(),Po=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Mo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"tabset",[["cdTableDetail",""]],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](5,638976,null,0,$n.a,[Zn.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,3,0,"Details"),t(e,5,0,n.selection.first(),!1,!0,!1,!0,n.customCss)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass)})}function jo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-prometheus-tabs",[],null,null,null,mo,go)),a["\u0275did"](1,49152,null,0,ho,[kt.l],null,null),(t()(),a["\u0275eld"](2,0,null,null,5,"cd-table",[["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.refresh()&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](3,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],sorts:[2,"sorts"],forceIdentifier:[3,"forceIdentifier"],selectionType:[4,"selectionType"],customCss:[5,"customCss"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](4,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Un.b,Un.a)),a["\u0275did"](5,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275and"](16777216,null,2,1,null,Mo)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,n.silences,n.columns,n.sorts,!0,"single",n.customCss),t(e,5,0,n.permission,n.selection,n.tableActions),t(e,7,0,n.selection.hasSingleSelection)},null)}function qo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-silences-list",[],null,null,null,jo,Po)),a["\u0275prd"](256,null,yo.a,Eo,[]),a["\u0275did"](2,114688,null,0,Lo,[q.a,Kt.a,Zn.a,vo,qa.b,Ta.a,yo.a,Ra.b,Ra.d],null,null)],function(t,e){t(e,2,0)},null)}var Fo=a["\u0275ccf"]("cd-silences-list",Lo,qo,{},{},[]),zo=n("4HWh"),Yo=n("p4Cf"),Ho=n("8xTl"),Go=function(){function t(t){this.i18n=t,this.valueAttributePath={alertname:"name",instance:"alerts.0.labels.instance",job:"alerts.0.labels.job",severity:"labels.severity"}}return t.prototype.singleMatch=function(t,e){return this.multiMatch([t],e)},t.prototype.multiMatch=function(t,e){var n=this;if(!t.some(function(t){return t.isRegex}))return t.forEach(function(t){e=n.getMatchedRules(t,e)}),this.describeMatch(e)},t.prototype.getMatchedRules=function(t,e){var n=this.getAttributePath(t.name);return e.filter(function(e){return Ft.get(e,n)===t.value})},t.prototype.describeMatch=function(t){var e=0;return t.forEach(function(t){return e+=t.alerts.length}),{status:this.getMatchText(t.length,e),cssClass:e?"has-success":"has-warning"}},t.prototype.getAttributePath=function(t){return this.valueAttributePath[t]},t.prototype.getMatchText=function(t,e){var 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},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(Kt.a))},token:t,providedIn:"root"}),t}(),Vo=function(){function t(){}return t.prototype.calculateDuration=function(t,e){var n=+t,a=+e,r=this.getDuration(Math.abs(n-a));return n>a?"-"+r:r},t.prototype.getDuration=function(t){var e=new Date(t),n=e.getUTCHours(),a=e.getUTCMinutes(),r=function(t,e){return t?t+e:t};return[r(Math.floor(t/864e5),"d"),r(n,"h"),r(a,"m")].filter(function(t){return t}).join(" ")},t.prototype.calculateDate=function(t,e,n){var a=+t;if(!Ft.isNaN(a)){var r=this.getDurationMs(e)*(n?-1:1);return new Date(a+r)}},t.prototype.getDurationMs=function(t){return 6e4*(60*(24*this.getNumbersFromString(t,"d")+this.getNumbersFromString(t,"h"))+this.getNumbersFromString(t,"m"))},t.prototype.getNumbersFromString=function(t,e){var n=t.match(new RegExp("[0-9 ]+"+e,"i"));return n?parseInt(n,10):0},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),Bo=function(){function t(t,e,n){this.formBuilder=t,this.silenceMatcher=e,this.bsModalRef=n,this.submitAction=new a.EventEmitter,this.editMode=!1,this.nameAttributes=["alertname","instance","job","severity"],this.possibleValues=[],this.matcherMatch=void 0,this.createForm(),this.subscribeToChanges()}return t.prototype.createForm=function(){this.form=this.formBuilder.group({name:[null,[$e.A.required]],value:[{value:null,disabled:!0},[$e.A.required]],isRegex:new $e.i(!1)})},t.prototype.subscribeToChanges=function(){var t=this;this.form.get("name").valueChanges.subscribe(function(e){null!==e?(t.setPossibleValues(e),t.form.get("value").enable()):t.form.get("value").disable()}),this.form.get("value").valueChanges.subscribe(function(e){var n=t.form.value;n.value=e,t.matcherMatch=t.silenceMatcher.singleMatch(n,t.rules)})},t.prototype.setPossibleValues=function(t){var e=this;this.possibleValues=Ft.sortedUniq(this.rules.map(function(n){return Ft.get(n,e.silenceMatcher.getAttributePath(t))}).filter(function(t){return t}))},t.prototype.preFillControls=function(t){this.form.setValue(t)},t.prototype.onSubmit=function(){this.submitAction.emit(this.form.value),this.bsModalRef.hide()},t}(),Uo=function(){function t(t,e,n,a,r,i,o,s,u,l,c,d){this.i18n=t,this.router=e,this.authStorageService=n,this.formBuilder=a,this.prometheusService=r,this.notificationService=i,this.route=o,this.timeDiff=s,this.bsModalService=u,this.silenceMatcher=l,this.actionLabels=c,this.succeededLabels=d,this.icons=bo,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()}return t.prototype.init=function(){this.chooseMode(),this.authenticate(),this.createForm(),this.setupDates(),this.getData()},t.prototype.chooseMode=function(){this.edit=this.router.url.startsWith("/silence/edit"),this.recreate=this.router.url.startsWith("/silence/recreate"),this.action=this.edit?this.actionLabels.EDIT:this.recreate?this.actionLabels.RECREATE:this.actionLabels.CREATE},t.prototype.authenticate=function(){this.permission=this.authStorageService.getPermissions().prometheus,this.permission.read&&(this.edit?this.permission.update:this.permission.create)||this.router.navigate(["/404"])},t.prototype.createForm=function(){var t=this;this.form=this.formBuilder.group({startsAt:[null,[$e.A.required]],duration:["2h",[$e.A.min(1)]],endsAt:[null,[$e.A.required]],createdBy:[this.authStorageService.getUsername(),[$e.A.required]],comment:[null,[$e.A.required]]},{validators:ka.a.custom("matcherRequired",function(){return 0===t.matchers.length})})},t.prototype.setupDates=function(){var t=new Date;t.setSeconds(0,0),this.form.silentSet("startsAt",t),this.updateDate(),this.subscribeDateChanges()},t.prototype.updateDate=function(t){var e=this.timeDiff.calculateDate(this.form.getValue(t?"endsAt":"startsAt"),this.form.getValue("duration"),t);e&&this.form.silentSet(t?"startsAt":"endsAt",e)},t.prototype.subscribeDateChanges=function(){var t=this;this.form.get("startsAt").valueChanges.subscribe(function(){t.onDateChange()}),this.form.get("duration").valueChanges.subscribe(function(){t.updateDate()}),this.form.get("endsAt").valueChanges.subscribe(function(){t.onDateChange(!0)})},t.prototype.onDateChange=function(t){this.form.getValue("startsAt")<this.form.getValue("endsAt")?this.updateDuration():this.updateDate(t)},t.prototype.updateDuration=function(){this.form.silentSet("duration",this.timeDiff.calculateDuration(this.form.getValue("startsAt"),this.form.getValue("endsAt")))},t.prototype.getData=function(){this.getRules(),this.getModeSpecificData()},t.prototype.getRules=function(){var t=this;this.prometheusService.ifPrometheusConfigured(function(){return t.prometheusService.getRules().subscribe(function(e){return t.rules=e},function(){t.prometheusService.disablePrometheusConfig(),t.rules=[]})},function(){t.rules=[],t.notificationService.show(xa.a.info,t.i18n("Please add your Prometheus host to the dashboard configuration and refresh the page"),void 0,void 0,"Prometheus")})},t.prototype.getModeSpecificData=function(){var t=this;this.route.params.subscribe(function(e){e.id&&(t.edit||t.recreate?t.prometheusService.getSilences(e).subscribe(function(e){t.fillFormWithSilence(e[0])}):t.prometheusService.getAlerts(e).subscribe(function(e){t.fillFormByAlert(e[0])}))})},t.prototype.fillFormWithSilence=function(t){var e=this;this.id=t.id,this.edit&&(["startsAt","endsAt"].forEach(function(n){return e.form.silentSet(n,new Date(t[n]))}),this.updateDuration()),["createdBy","comment"].forEach(function(n){return e.form.silentSet(n,t[n])}),this.matchers=t.matchers,this.validateMatchers()},t.prototype.validateMatchers=function(){var t=this;this.rules?(this.matcherMatch=this.silenceMatcher.multiMatch(this.matchers,this.rules),this.form.markAsDirty(),this.form.updateValueAndValidity()):window.setTimeout(function(){return t.validateMatchers()},100)},t.prototype.fillFormByAlert=function(t){var e=this,n=t.labels;Object.keys(n).forEach(function(t){return e.setMatcher({name:t,value:n[t],isRegex:!1})})},t.prototype.setMatcher=function(t,e){Ft.isNumber(e)?this.matchers[e]=t:this.matchers.push(t),this.validateMatchers()},t.prototype.showMatcherModal=function(t){var e=this,n=this.bsModalService.show(Bo),a=n.content;a.rules=this.rules,Ft.isNumber(t)&&(a.editMode=!0,a.preFillControls(this.matchers[t])),n.content.submitAction.subscribe(function(n){e.setMatcher(n,t)})},t.prototype.deleteMatcher=function(t){this.matchers.splice(t,1),this.validateMatchers()},t.prototype.submit=function(){var t=this;this.form.invalid||this.prometheusService.setSilence(this.getSubmitData()).subscribe(function(e){t.router.navigate(["/silence"]),t.notificationService.show(xa.a.success,t.getNotificationTile(e.body.silenceId),void 0,void 0,"Prometheus")},function(){return t.form.setErrors({cdSubmitButton:!0})})},t.prototype.getSubmitData=function(){var 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},t.prototype.getNotificationTile=function(t){return(this.edit?this.succeededLabels.EDITED:this.recreate?this.succeededLabels.RECREATED:this.succeededLabels.CREATED)+" "+this.resource+" "+t},t}(),Wo=a["\u0275crt"]({encapsulation:0,styles:[["textarea[_ngcontent-%COMP%]{resize:vertical}"]],data:{}});function Ko(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"input",[["class","form-control"],["disabled",""],["readonly",""],["type","text"]],[[8,"id",0],[8,"value",0]],null,null,null,null))],null,function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])})}function $o(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","input-group-addon"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"input",[["disabled",""],["readonly",""],["type","checkbox"]],[[8,"id",0],[8,"checked",0]],null,null,null,null))],null,function(t,e){t(e,2,0,a["\u0275inlineInterpolate"](2,"matcher-",e.parent.context.$implicit.attribute,"-",e.parent.parent.context.index,""),e.parent.parent.context.matcher[e.parent.context.$implicit.attribute])})}function Zo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,16777216,null,null,4,"span",[["class","input-group-addon"]],[[1,"aria-describedby",0]],null,null,null,null)),a["\u0275did"](2,212992,null,0,j.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,Ct.a,j.a],{tooltip:[0,"tooltip"]},null),(t()(),a["\u0275eld"](3,0,null,null,2,"i",[["class","icon-prepend"]],null,null,null,null,null)),a["\u0275did"](4,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pad"](5,1),(t()(),a["\u0275and"](16777216,null,null,1,null,Ko)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,$o)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0,e.context.$implicit.tooltip);var n=t(e,5,0,e.context.$implicit.icon);t(e,4,0,"icon-prepend",n),t(e,7,0,"isRegex"!==e.context.$implicit.attribute),t(e,9,0,"isRegex"===e.context.$implicit.attribute)},function(t,e){t(e,1,0,a["\u0275nov"](e,2).ariaDescribedby)})}function Xo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,13,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Zo)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](3,0,null,null,10,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,16777216,null,null,4,"button",[["class","btn btn-default"],["tooltip","Edit"],["type","button"]],[[8,"id",0],[1,"aria-describedby",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)),a["\u0275did"](5,212992,null,0,j.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,Ct.a,j.a],{tooltip:[0,"tooltip"]},null),(t()(),a["\u0275eld"](6,0,null,null,2,"i",[],null,null,null,null,null)),a["\u0275did"](7,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](8,1),(t()(),a["\u0275eld"](9,16777216,null,null,4,"button",[["class","btn btn-default"],["tooltip","Delete"],["type","button"]],[[8,"id",0],[1,"aria-describedby",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)),a["\u0275did"](10,212992,null,0,j.c,[a.ViewContainerRef,a.Renderer2,a.ElementRef,Ct.a,j.a],{tooltip:[0,"tooltip"]},null),(t()(),a["\u0275eld"](11,0,null,null,2,"i",[],null,null,null,null,null)),a["\u0275did"](12,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](13,1),(t()(),a["\u0275eld"](14,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,8,0,n.icons.edit);t(e,7,0,a),t(e,10,0,"Delete");var r=t(e,13,0,n.icons.trash);t(e,12,0,r)},function(t,e){t(e,4,0,a["\u0275inlineInterpolate"](1,"matcher-edit-",e.context.index,""),a["\u0275nov"](e,5).ariaDescribedby),t(e,9,0,a["\u0275inlineInterpolate"](1,"matcher-delete-",e.context.index,""),a["\u0275nov"](e,10).ariaDescribedby)})}function Jo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](1,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Editing a silence will expire the old silence and recreate it as a new silence"]))],null,null)}function Qo(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function ts(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function es(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function ns(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function as(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function rs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"h5",[],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pod"](2,{"text-warning":0,"text-danger":1}),(t()(),a["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["A silence requires at least one matcher"]))],function(t,e){var n=t(e,2,0,!a["\u0275nov"](e.parent,6).submitted,a["\u0275nov"](e.parent,6).submitted);t(e,1,0,n)},null)}function is(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function os(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,is)),a["\u0275did"](2,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](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,a["\u0275nov"](e.parent,2))},null)}function ss(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275ted"](2,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,0,0,a["\u0275inlineInterpolate"](1,"col-sm-offset-3 col-sm-9 ",n.matcherMatch.cssClass,"")),t(e,1,0,a["\u0275inlineInterpolate"](1,"help-block ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)})}function us(t){return a["\u0275vid"](0,[a["\u0275pid"](0,L.TitleCasePipe,[]),a["\u0275pid"](0,Ho.a,[]),(t()(),a["\u0275and"](0,[["matcherTpl",2]],null,0,null,Xo)),(t()(),a["\u0275eld"](3,0,null,null,135,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,134,"form",[["class","form-horizontal"],["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["\u0275nov"](t,6).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,6).onReset()&&r),r},null,null)),a["\u0275did"](5,16384,null,0,$e.D,[],null,null),a["\u0275did"](6,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](8,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](9,0,null,null,129,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,7,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,6,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](13,null,[" "," "," "])),a["\u0275ppd"](14,1),a["\u0275ppd"](15,1),(t()(),a["\u0275and"](16777216,null,null,1,null,Jo)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](18,0,null,null,111,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](20,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](21,{"has-error":0}),(t()(),a["\u0275eld"](22,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","created-by"]],null,null,null,null,null)),(t()(),a["\u0275eld"](23,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Creator"])),(t()(),a["\u0275eld"](25,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](26,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](27,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,28)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,28).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,28)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,28)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](28,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](30,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](32,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Qo)),a["\u0275did"](34,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](35,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](36,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](37,{"has-error":0}),(t()(),a["\u0275eld"](38,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","comment"]],null,null,null,null,null)),(t()(),a["\u0275eld"](39,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Comment"])),(t()(),a["\u0275eld"](41,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](42,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](43,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,44)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,44).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,44)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,44)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](44,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](46,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](48,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275ted"](-1,null,["            "])),(t()(),a["\u0275and"](16777216,null,null,1,null,ts)),a["\u0275did"](51,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](52,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](53,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](54,{"has-error":0}),(t()(),a["\u0275eld"](55,0,null,null,6,"label",[["class","control-label col-sm-3"],["for","starts-at"]],null,null,null,null,null)),(t()(),a["\u0275eld"](56,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Start time"])),(t()(),a["\u0275eld"](58,0,null,null,2,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](59,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["If the start time lies in the past the creation time will be used"])),(t()(),a["\u0275eld"](61,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](62,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](63,16777216,null,null,8,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,64)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,64).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,64)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,64)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,66).onChange(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,66).hide()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,66).onBlur()&&r),r},null,null)),a["\u0275did"](64,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](65,737280,null,0,ti.b,[ti.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a],{bsConfig:[0,"bsConfig"]},null),a["\u0275did"](66,16384,null,0,ti.B,[ti.b,ti.f,a.Renderer2,a.ElementRef,a.ChangeDetectorRef],null,null),a["\u0275prd"](1024,null,$e.o,function(t){return[t]},[ti.B]),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,ti.B]),a["\u0275did"](69,671744,null,0,$e.j,[[3,$e.d],[6,$e.o],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](71,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,es)),a["\u0275did"](73,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](74,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](75,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](76,{"has-error":0}),(t()(),a["\u0275eld"](77,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","duration"]],null,null,null,null,null)),(t()(),a["\u0275eld"](78,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Duration"])),(t()(),a["\u0275eld"](80,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](81,0,null,null,8,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](82,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,83)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,83).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,83)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,83)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](83,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](85,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](87,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,ns)),a["\u0275did"](89,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](90,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](91,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](92,{"has-error":0}),(t()(),a["\u0275eld"](93,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","ends-at"]],null,null,null,null,null)),(t()(),a["\u0275eld"](94,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["End time"])),(t()(),a["\u0275eld"](96,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](97,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](98,16777216,null,null,8,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,99)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,99).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,99)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,99)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,101).onChange(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,101).hide()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,101).onBlur()&&r),r},null,null)),a["\u0275did"](99,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](100,737280,null,0,ti.b,[ti.a,a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a],{bsConfig:[0,"bsConfig"]},null),a["\u0275did"](101,16384,null,0,ti.B,[ti.b,ti.f,a.Renderer2,a.ElementRef,a.ChangeDetectorRef],null,null),a["\u0275prd"](1024,null,$e.o,function(t){return[t]},[ti.B]),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,ti.B]),a["\u0275did"](104,671744,null,0,$e.j,[[3,$e.d],[6,$e.o],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](106,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,as)),a["\u0275did"](108,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](109,0,null,null,20,"fieldset",[],null,null,null,null,null)),(t()(),a["\u0275eld"](110,0,null,null,3,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Matchers"])),(t()(),a["\u0275eld"](112,0,null,null,1,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["*"])),(t()(),a["\u0275eld"](114,0,null,null,13,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,rs)),a["\u0275did"](116,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,os)),a["\u0275did"](118,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](119,0,null,null,8,"span",[["class","form-control no-border"]],null,null,null,null,null)),(t()(),a["\u0275eld"](120,0,null,null,7,"button",[["class","btn btn-sm btn-default btn-label pull-right"],["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)),a["\u0275did"](121,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](122,{"btn-warning":0}),(t()(),a["\u0275eld"](123,0,null,null,2,"i",[],null,null,null,null,null)),a["\u0275did"](124,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](125,2),(t()(),a["\u0275eld"](126,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Add matcher"])),(t()(),a["\u0275and"](16777216,null,null,1,null,ss)),a["\u0275did"](129,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](130,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](131,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](132,0,null,null,4,"cd-submit-button",[["id","submit"],["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submit()&&a),a},_r.b,_r.a)),a["\u0275did"](133,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](134,0,[" "," "," "])),a["\u0275ppd"](135,1),a["\u0275ppd"](136,1),(t()(),a["\u0275eld"](137,0,null,null,1,"cd-back-button",[],null,null,null,Tr.b,Tr.a)),a["\u0275did"](138,49152,null,0,wr.a,[L.Location,Ra.b],null,null)],function(t,e){var n=e.component;t(e,6,0,n.form),t(e,17,0,n.edit);var r=t(e,21,0,n.form.showError("createdBy",a["\u0275nov"](e,6)));t(e,20,0,"form-group",r),t(e,30,0,"createdBy"),t(e,34,0,n.form.showError("createdBy",a["\u0275nov"](e,6),"required"));var i=t(e,37,0,n.form.showError("comment",a["\u0275nov"](e,6)));t(e,36,0,"form-group",i),t(e,46,0,"comment"),t(e,51,0,n.form.showError("comment",a["\u0275nov"](e,6),"required"));var o=t(e,54,0,n.form.showError("startsAt",a["\u0275nov"](e,6)));t(e,53,0,"form-group",o),t(e,65,0,n.bsConfig),t(e,69,0,"startsAt"),t(e,73,0,n.form.showError("startsAt",a["\u0275nov"](e,6),"required"));var s=t(e,76,0,n.form.showError("duration",a["\u0275nov"](e,6)));t(e,75,0,"form-group",s),t(e,85,0,"duration"),t(e,89,0,n.form.showError("duration",a["\u0275nov"](e,6),"required"));var u=t(e,92,0,n.form.showError("endsAt",a["\u0275nov"](e,6)));t(e,91,0,"form-group",u),t(e,100,0,n.bsConfig),t(e,104,0,"endsAt"),t(e,108,0,n.form.showError("endsAt",a["\u0275nov"](e,6),"required")),t(e,116,0,0===n.matchers.length),t(e,118,0,n.matchers);var l=t(e,122,0,a["\u0275nov"](e,6).submitted&&0===n.matchers.length);t(e,121,0,"btn btn-sm btn-default btn-label pull-right",l);var c=t(e,125,0,n.icons.width,n.icons.add);t(e,124,0,c),t(e,129,0,n.matchers.length&&n.matcherMatch),t(e,133,0,a["\u0275nov"](e,6),"button")},function(t,e){var n=e.component;t(e,4,0,a["\u0275nov"](e,8).ngClassUntouched,a["\u0275nov"](e,8).ngClassTouched,a["\u0275nov"](e,8).ngClassPristine,a["\u0275nov"](e,8).ngClassDirty,a["\u0275nov"](e,8).ngClassValid,a["\u0275nov"](e,8).ngClassInvalid,a["\u0275nov"](e,8).ngClassPending);var r=a["\u0275unv"](e,13,0,t(e,14,0,a["\u0275nov"](e,0),n.action)),i=a["\u0275unv"](e,13,1,t(e,15,0,a["\u0275nov"](e,1),n.resource));t(e,13,0,r,i),t(e,27,0,a["\u0275nov"](e,32).ngClassUntouched,a["\u0275nov"](e,32).ngClassTouched,a["\u0275nov"](e,32).ngClassPristine,a["\u0275nov"](e,32).ngClassDirty,a["\u0275nov"](e,32).ngClassValid,a["\u0275nov"](e,32).ngClassInvalid,a["\u0275nov"](e,32).ngClassPending),t(e,43,0,a["\u0275nov"](e,48).ngClassUntouched,a["\u0275nov"](e,48).ngClassTouched,a["\u0275nov"](e,48).ngClassPristine,a["\u0275nov"](e,48).ngClassDirty,a["\u0275nov"](e,48).ngClassValid,a["\u0275nov"](e,48).ngClassInvalid,a["\u0275nov"](e,48).ngClassPending),t(e,63,0,a["\u0275nov"](e,71).ngClassUntouched,a["\u0275nov"](e,71).ngClassTouched,a["\u0275nov"](e,71).ngClassPristine,a["\u0275nov"](e,71).ngClassDirty,a["\u0275nov"](e,71).ngClassValid,a["\u0275nov"](e,71).ngClassInvalid,a["\u0275nov"](e,71).ngClassPending),t(e,82,0,a["\u0275nov"](e,87).ngClassUntouched,a["\u0275nov"](e,87).ngClassTouched,a["\u0275nov"](e,87).ngClassPristine,a["\u0275nov"](e,87).ngClassDirty,a["\u0275nov"](e,87).ngClassValid,a["\u0275nov"](e,87).ngClassInvalid,a["\u0275nov"](e,87).ngClassPending),t(e,98,0,a["\u0275nov"](e,106).ngClassUntouched,a["\u0275nov"](e,106).ngClassTouched,a["\u0275nov"](e,106).ngClassPristine,a["\u0275nov"](e,106).ngClassDirty,a["\u0275nov"](e,106).ngClassValid,a["\u0275nov"](e,106).ngClassInvalid,a["\u0275nov"](e,106).ngClassPending);var o=a["\u0275unv"](e,134,0,t(e,135,0,a["\u0275nov"](e,0),n.action)),s=a["\u0275unv"](e,134,1,t(e,136,0,a["\u0275nov"](e,1),n.resource));t(e,134,0,o,s)})}function ls(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-prometheus-form",[],null,null,null,us,Wo)),a["\u0275did"](1,49152,null,0,Uo,[Kt.a,kt.l,q.a,La.a,vo,Ta.a,kt.a,Vo,qa.b,Go,Ra.b,Ra.d],null,null)],null,null)}var cs=a["\u0275ccf"]("cd-prometheus-form",Uo,ls,{},{},[]),ds=function(){function t(e){var n=this;this.route=e,this.route.queryParams.subscribe(function(e){n.fromLink=e.fromLink||t.defaultFromLink}),this.route.params.subscribe(function(t){n.serviceId=decodeURIComponent(t.id),n.serviceType=t.type})}return t.defaultFromLink="/hosts",t}(),fs=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function ps(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",".",""])),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-table-performance-counter",[],null,null,null,Xn.b,Xn.a)),a["\u0275did"](3,114688,null,0,Jn.a,[Qn.a,Kt.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 hs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-performance-counter",[],null,null,null,ps,fs)),a["\u0275did"](1,49152,null,0,ds,[kt.a],null,null)],null,null)}var gs=a["\u0275ccf"]("cd-performance-counter",ds,hs,{},{},[]),ms=function(){function t(t){this.http=t,this.url="api/mgr/module"}return t.prototype.list=function(){return this.http.get(""+this.url)},t.prototype.getConfig=function(t){return this.http.get(this.url+"/"+t)},t.prototype.updateConfig=function(t,e){return this.http.put(this.url+"/"+t,{config:e})},t.prototype.enable=function(t){return this.http.post(this.url+"/"+t+"/enable",null)},t.prototype.disable=function(t){return this.http.post(this.url+"/"+t+"/disable",null)},t.prototype.getOptions=function(t){return this.http.get(this.url+"/"+t+"/options")},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),bs=function(){function t(t){this.mgrModuleService=t}return t.prototype.ngOnChanges=function(){var t=this;if(this.selection.hasSelection){var e=this.selection.first();this.mgrModuleService.getConfig(e.name).subscribe(function(e){t.module_config=e})}},t}(),ys=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function vs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](5,638976,null,0,$n.a,[Zn.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,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass)})}function _s(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,vs)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.selection.hasSingleSelection)},null)}var xs=n("gI3B"),Ts=function(){function t(t,e,n,a){var r=this;this.authStorageService=t,this.mgrModuleService=e,this.notificationService=n,this.i18n=a,this.columns=[],this.modules=[],this.selection=new mn.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:Ln.a.checkIcon}],this.tableActions=[{name:this.i18n("Edit"),permission:"update",disable:function(){return!r.selection.hasSelection||0===Object.values(r.selection.first().options).length},routerLink:function(){return"/mgr-modules/edit/"+(r.selection.first()&&encodeURIComponent(r.selection.first().name))},icon:"fa-pencil"},{name:this.i18n("Enable"),permission:"update",click:function(){return r.updateModuleState()},disable:function(){return r.isTableActionDisabled("enabled")},icon:"fa-play"},{name:this.i18n("Disable"),permission:"update",click:function(){return r.updateModuleState()},disable:function(){return r.isTableActionDisabled("disabled")},icon:"fa-stop"}]}return t.prototype.getModuleList=function(t){var e=this;this.mgrModuleService.list().subscribe(function(t){e.modules=t},function(){t.error()})},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.isTableActionDisabled=function(t){if(!this.selection.hasSelection)return!0;if("dashboard"===this.selection.first().name)return!0;switch(t){case"enabled":return this.selection.first().enabled;case"disabled":return!this.selection.first().enabled}},t.prototype.updateModuleState=function(){var t=this;if(this.selection.hasSelection){var e=function(){Object(xs.a)(2e3).subscribe(function(){t.mgrModuleService.list().subscribe(function(){t.notificationService.suspendToasties(!1),t.blockUI.stop(),t.table.refreshBtn()},function(){e()})})},n=this.selection.first();(n.enabled?this.mgrModuleService.disable(n.name):this.mgrModuleService.enable(n.name)).subscribe(function(){},function(){t.notificationService.suspendToasties(!0),t.blockUI.start(t.i18n("Reconnecting, please wait ...")),e()})}},Y.__decorate([function(t,e,n){t[e]=$.decorate(void 0)},Y.__metadata("design:type",Object)],t.prototype,"blockUI",void 0),t}(),ws=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Ss(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{table:0}),(t()(),a["\u0275eld"](1,0,null,null,5,"cd-table",[["columnMode","flex"],["identifier","module"],["selectionType","single"]],null,[[null,"updateSelection"],[null,"fetchData"]],function(t,e,n){var a=!0,r=t.component;return"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),"fetchData"===e&&(a=!1!==r.getModuleList(n)&&a),a},hn.b,hn.a)),a["\u0275did"](2,2867200,[[1,4],["table",4]],0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],autoReload:[3,"autoReload"],identifier:[4,"identifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](3,0,null,0,1,"cd-table-actions",[["class","table-actions"]],null,null,null,Un.b,Un.a)),a["\u0275did"](4,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275eld"](5,0,null,2,1,"cd-mgr-module-details",[["cdTableDetail",""]],null,null,null,_s,ys)),a["\u0275did"](6,573440,null,0,bs,[ms],{selection:[0,"selection"]},null)],function(t,e){var n=e.component;t(e,2,0,n.modules,n.columns,"flex",!1,"module","single"),t(e,4,0,n.permission,n.selection,n.tableActions),t(e,6,0,n.selection)},null)}function Os(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-mgr-module-list",[],null,null,null,Ss,ws)),a["\u0275did"](1,49152,null,0,Ts,[q.a,ms,Ta.a,Kt.a],null,null)],null,null)}var Cs=a["\u0275ccf"]("cd-mgr-module-list",Ts,Os,{},{},[]),ks=n("QC43"),Is=n("XFyV"),Ds=n("M/6F"),Rs=n("NDi4"),Ns=function(){function t(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=[]}return t.prototype.ngOnInit=function(){var t=this;this.route.params.subscribe(function(e){t.moduleName=decodeURIComponent(e.name),t.loading=!0;var n=[];n.push(t.mgrModuleService.getOptions(t.moduleName)),n.push(t.mgrModuleService.getConfig(t.moduleName)),Object(Sa.a)(n).subscribe(function(e){t.loading=!1,t.moduleOptions=e[0],t.createForm(),t.mgrModuleForm.setValue(e[1])},function(e){t.error=e})},function(e){t.error=e})},t.prototype.getValidators=function(t){var e=[];switch(t.type){case"addr":e.push(ka.a.ip());break;case"uint":case"int":case"size":case"secs":e.push(ka.a.number()),e.push($e.A.required),Ft.isNumber(t.min)&&e.push($e.A.min(t.min)),Ft.isNumber(t.max)&&e.push($e.A.max(t.max));break;case"str":Ft.isNumber(t.min)&&e.push($e.A.minLength(t.min)),Ft.isNumber(t.max)&&e.push($e.A.maxLength(t.max));break;case"float":e.push($e.A.required),e.push(ka.a.decimalNumber());break;case"uuid":e.push(ka.a.uuid())}return e},t.prototype.createForm=function(){var t=this,e={};Ft.forEach(this.moduleOptions,function(n){e[n.name]=[n.default_value,t.getValidators(n)]}),this.mgrModuleForm=this.formBuilder.group(e)},t.prototype.goToListView=function(){this.router.navigate(["/mgr-modules"])},t.prototype.onSubmit=function(){var t=this;if(this.mgrModuleForm.pristine)this.goToListView();else{var e={};Ft.forEach(this.moduleOptions,function(n){var a=t.mgrModuleForm.get(n.name);a.dirty&&a.valid&&(e[n.name]=a.value)}),this.mgrModuleService.updateConfig(this.moduleName,e).subscribe(function(){t.notificationService.show(xa.a.success,t.i18n('Updated options for module "{{name}}".',{name:t.moduleName})),t.goToListView()},function(){t.mgrModuleForm.setErrors({cdSubmitButton:!0})})}},t}(),As=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Es(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-loading-panel",[],null,null,null,ks.b,ks.a)),a["\u0275did"](1,49152,null,0,Is.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["Loading configuration..."]))],null,null)}function Ls(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-error-panel",[],null,null,null,Ds.b,Ds.a)),a["\u0275did"](1,49152,null,0,Rs.a,[],null,null),(t()(),a["\u0275ted"](-1,0,["The configuration could not be loaded."]))],null,null)}function Ps(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](1,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](2,0,[" "," "])),a["\u0275ppd"](3,1)],null,function(t,e){var n=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent.parent.parent,0),e.parent.context.$implicit.value.long_desc||e.parent.context.$implicit.value.desc));t(e,2,0,n)})}function Ms(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,7,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,3).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,3).onTouched()&&r),r},null,null)),a["\u0275did"](3,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](5,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](7,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](8,0,null,null,0,"label",[],[[8,"htmlFor",0]],null,null,null,null))],function(t,e){t(e,5,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))},function(t,e){t(e,2,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),a["\u0275nov"](e,7).ngClassUntouched,a["\u0275nov"](e,7).ngClassTouched,a["\u0275nov"](e,7).ngClassPristine,a["\u0275nov"](e,7).ngClassDirty,a["\u0275nov"](e,7).ngClassValid,a["\u0275nov"](e,7).ngClassInvalid,a["\u0275nov"](e,7).ngClassPending),t(e,8,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""))})}function js(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,1)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](1,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](3,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](5,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""))},function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending)})}function qs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{ngValue:[0,"ngValue"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["\u0275ted"](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 Fs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,7,"select",[["class","form-control"]],[[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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onTouched()&&r),r},null,null)),a["\u0275did"](1,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](3,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](5,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,qs)),a["\u0275did"](7,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,"")),t(e,7,0,e.parent.parent.context.$implicit.value.enum_allowed)},function(t,e){t(e,0,0,a["\u0275inlineInterpolate"](1,"",e.parent.parent.context.$implicit.value.name,""),a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending)})}function zs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8"]))],null,null)}function Ys(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The entered value needs to be a valid IP address."]))],null,null)}function Hs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,js)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Fs)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,zs)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ys)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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,a["\u0275nov"](e.parent.parent,3),"invalidUuid")),t(e,8,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"pattern"))},null)}function Gs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Vs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Bs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Us(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The entered value needs to be a number."]))],null,null)}function Ws(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,15,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,2)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,2).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,2)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,2)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,3).onChange(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,3).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,3).onTouched()&&r),r},null,null)),a["\u0275did"](2,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](3,16384,null,0,$e.C,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,$e.C]),a["\u0275did"](5,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](7,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Gs)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Vs)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Bs)),a["\u0275did"](13,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Us)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,5,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"required")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"max")),t(e,13,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"min")),t(e,15,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"pattern"))},function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.min,""),a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.max,""),a["\u0275nov"](e,7).ngClassUntouched,a["\u0275nov"](e,7).ngClassTouched,a["\u0275nov"](e,7).ngClassPristine,a["\u0275nov"](e,7).ngClassDirty,a["\u0275nov"](e,7).ngClassValid,a["\u0275nov"](e,7).ngClassInvalid,a["\u0275nov"](e,7).ngClassPending)})}function Ks(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required."]))],null,null)}function $s(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The entered value needs to be a number or decimal."]))],null,null)}function Zs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"div",[["class","col-sm-7"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,2)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,2).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,2)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,2)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,3).onChange(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,3).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,3).onTouched()&&r),r},null,null)),a["\u0275did"](2,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](3,16384,null,0,$e.C,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,$e.C]),a["\u0275did"](5,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](7,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ks)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,$s)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,5,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,"")),t(e,9,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"required")),t(e,11,0,n.mgrModuleForm.showError(e.parent.context.$implicit.value.name,a["\u0275nov"](e.parent.parent,3),"pattern"))},function(t,e){t(e,1,0,a["\u0275inlineInterpolate"](1,"",e.parent.context.$implicit.value.name,""),a["\u0275nov"](e,7).ngClassUntouched,a["\u0275nov"](e,7).ngClassTouched,a["\u0275nov"](e,7).ngClassPristine,a["\u0275nov"](e,7).ngClassDirty,a["\u0275nov"](e,7).ngClassValid,a["\u0275nov"](e,7).ngClassInvalid,a["\u0275nov"](e,7).ngClassPending)})}function Xs(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","control-label col-sm-3"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](4,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,Ps)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ms)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,2,null,Hs)),a["\u0275did"](10,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pad"](11,3),(t()(),a["\u0275and"](16777216,null,null,2,null,Ws)),a["\u0275did"](13,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pad"](14,4),(t()(),a["\u0275and"](16777216,null,null,1,null,Zs)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,e.component.mgrModuleForm.showError(e.context.$implicit.value.name,a["\u0275nov"](e.parent,3)));t(e,1,0,"form-group",n),t(e,6,0,e.context.$implicit.value.long_desc||e.context.$implicit.value.desc),t(e,8,0,"bool"===e.context.$implicit.value.type);var r=t(e,11,0,"addr","str","uuid").includes(e.context.$implicit.value.type);t(e,10,0,r);var i=t(e,14,0,"uint","int","size","secs").includes(e.context.$implicit.value.type);t(e,13,0,i),t(e,16,0,"float"===e.context.$implicit.value.type)},function(t,e){t(e,3,0,a["\u0275inlineInterpolate"](1,"",e.context.$implicit.value.name,"")),t(e,4,0,e.context.$implicit.value.name)})}function Js(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,22,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,21,"form",[["class","form-horizontal"],["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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,3).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,3).onReset()&&r),r},null,null)),a["\u0275did"](2,16384,null,0,$e.D,[],null,null),a["\u0275did"](3,540672,[["frm",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](5,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](6,0,null,null,16,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,2,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,1,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Edit Manager module"])),(t()(),a["\u0275eld"](10,0,null,null,3,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Xs)),a["\u0275did"](12,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.KeyValuePipe,[a.KeyValueDiffers]),(t()(),a["\u0275eld"](14,0,null,null,8,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](15,0,null,null,7,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,3,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.onSubmit()&&a),a},_r.b,_r.a)),a["\u0275did"](17,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),a["\u0275eld"](18,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Update"])),(t()(),a["\u0275eld"](20,0,null,null,2,"button",[["class","btn btn-sm btn-default"],["routerLink","/mgr-modules"],["type","button"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,21).onClick()&&r),r},null,null)),a["\u0275did"](21,16384,null,0,kt.m,[kt.l,kt.a,[8,null],a.Renderer2,a.ElementRef],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Back"]))],function(t,e){var n=e.component;t(e,3,0,n.mgrModuleForm),t(e,12,0,a["\u0275unv"](e,12,0,a["\u0275nov"](e,13).transform(n.moduleOptions))),t(e,17,0,n.mgrModuleForm,"button"),t(e,21,0,"/mgr-modules")},function(t,e){t(e,1,0,a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending)})}function Qs(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Ho.a,[]),(t()(),a["\u0275and"](16777216,null,null,1,null,Es)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ls)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Js)),a["\u0275did"](6,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.loading&&!n.error),t(e,4,0,n.loading&&n.error),t(e,6,0,!n.loading&&!n.error)},null)}function tu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-mgr-module-form",[],null,null,null,Qs,As)),a["\u0275did"](1,114688,null,0,Ns,[kt.a,kt.l,La.a,ms,Ta.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var eu=a["\u0275ccf"]("cd-mgr-module-form",Ns,tu,{},{},[]),nu=n("wd/R"),au=function(){function t(){this.lhsCounter="mds_mem.ino",this.rhsCounter="mds_server.handle_client_request"}return t.prototype.ngOnInit=function(){if(!Ft.isUndefined(this.mdsCounter)){var t=new zt.a(this.chartCanvas,this.chartTooltip,function(t){return t.caretX+"px"},function(t){return t.caretY-t.height-15+"px"});t.getTitle=function(t){return nu(t,"x").format("LTS")},t.checkOffset=!0;var e=this.convert_timeseries(this.mdsCounter[this.lhsCounter]),n=this.delta_timeseries(this.mdsCounter[this.rhsCounter]);this.chart={datasets:[{label:this.lhsCounter,yAxisID:"LHS",data:e,tension:.1},{label:this.rhsCounter,yAxisID:"RHS",data:n,tension:.1}],options:{title:{text:this.mdsCounter.name,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",min:0},{id:"RHS",type:"linear",position:"right",min:0}]},tooltips:{enabled:!1,mode:"index",intersect:!1,position:"nearest",callbacks:{title:function(t,e){var n=0;if(t.length>0){var a=t[0];n=e.datasets[a.datasetIndex].data[a.index].x}return n}},custom:function(e){t.customTooltips(e)}}},chartType:"line"}}},t.prototype.ngOnChanges=function(){if(this.chart){var t=this.convert_timeseries(this.mdsCounter[this.lhsCounter]),e=this.delta_timeseries(this.mdsCounter[this.rhsCounter]);this.chart.datasets[0].data=t,this.chart.datasets[1].data=e}},t.prototype.convert_timeseries=function(t){var e=[];return Ft.each(t,function(t){e.push({x:1e3*t[0],y:t[1]})}),e},t.prototype.delta_timeseries=function(t){var e,n=t[0],a=[];for(e=1;e<t.length;e++){var r=t[e];a.push({x:1e3*r[0],y:(r[1]-n[1])/(r[0]-n[0])}),n=r}return a},t}(),ru=a["\u0275crt"]({encapsulation:0,styles:[["canvas[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-user-select:none;-ms-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;-webkit-transition:.1s;transition:all .1s ease;pointer-events:none;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif!important;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]{-webkit-transform:translate(-10%,0);transform:translate(-10%,0)}.chartjs-tooltip.transform-left[_ngcontent-%COMP%]::after{left:10%}.chartjs-tooltip.transform-right[_ngcontent-%COMP%]{-webkit-transform:translate(-90%,0);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 iu(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{chartCanvas:0}),a["\u0275qud"](402653184,2,{chartTooltip:0}),(t()(),a["\u0275eld"](2,0,null,null,4,"div",[["class","chart-container"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,[[1,0],["chartCanvas",1]],null,1,"canvas",[["baseChart",""]],null,null,null,null,null)),a["\u0275did"](4,737280,null,0,jt.BaseChartDirective,[a.ElementRef],{datasets:[0,"datasets"],options:[1,"options"],chartType:[2,"chartType"]},null),(t()(),a["\u0275eld"](5,0,[[2,0],["chartTooltip",1]],null,1,"div",[["class","chartjs-tooltip"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"table",[],null,null,null,null,null))],function(t,e){var n=e.component;t(e,4,0,null==n.chart?null:n.chart.datasets,null==n.chart?null:n.chart.options,null==n.chart?null:n.chart.chartType)},null)}var ou=n("C6Ij"),su=n("AWcq"),uu=function(){function t(t){this.http=t,this.baseURL="api/cephfs"}return t.prototype.list=function(){return this.http.get(""+this.baseURL)},t.prototype.getCephfs=function(t){return this.http.get(this.baseURL+"/"+t)},t.prototype.getClients=function(t){return this.http.get(this.baseURL+"/"+t+"/clients")},t.prototype.getMdsCounters=function(t){return this.http.get(this.baseURL+"/"+t+"/mds_counters")},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),lu=n("yJti"),cu=function(){function t(t,e){this.cephfsService=t,this.i18n=e}return t.prototype.ngOnInit=function(){this.clients={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")}],data:[]},this.clients.data=[],this.viewCacheStatus=lu.a.ValueNone},t.prototype.refresh=function(){var t=this;this.cephfsService.getClients(this.id).subscribe(function(e){t.viewCacheStatus=e.status,t.clients.data=e.data})},t}(),du=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function fu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-view-cache",[],null,null,null,ou.b,ou.a)),a["\u0275did"](1,114688,null,0,su.a,[],{status:[0,"status"]},null),(t()(),a["\u0275eld"](2,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},hn.b,hn.a)),a["\u0275did"](3,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"]},{fetchData:"fetchData"})],function(t,e){var n=e.component;t(e,1,0,n.viewCacheStatus),t(e,3,0,n.clients.data,n.clients.columns)},null)}var pu=function(){function t(t,e,n,a,r){this.authStorageService=t,this.cephfsService=e,this.dimlessBinary=n,this.dimless=a,this.i18n=r,this.standbys=[],this.mdsCounters={},this.objectValues=Object.values,this.clientsSelect=!1,this.grafanaPermission=this.authStorageService.getPermissions().grafana}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),this.grafanaId=Object.values(this.selectedItem.mdsmap.info)[0].name,this.id!==this.selectedItem.id&&(this.id=this.selectedItem.id,this.ranks.data=[],this.pools.data=[],this.standbys=[],this.mdsCounters={}))},t.prototype.ngOnInit=function(){this.ranks={columns:[{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}],data:[]},this.pools={columns:[{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:function(t,e,n,a){var r=n.used/n.avail,i=a.used/a.avail;return r===i?0:r>i?1:-1}}],data:[]}},t.prototype.refresh=function(){var t=this;this.cephfsService.getCephfs(this.id).subscribe(function(e){t.ranks.data=e.cephfs.ranks,t.pools.data=e.cephfs.pools,t.pools.data.forEach(function(t){t.size=t.used+t.avail}),t.standbys=[{key:t.i18n("Standby daemons"),value:e.standbys.map(function(t){return t.name}).join(", ")}],t.name=e.cephfs.name,t.clientCount=e.cephfs.client_count}),this.cephfsService.getMdsCounters(this.id).subscribe(function(e){Ft.each(t.mdsCounters,function(n,a){void 0===e[a]&&delete t.mdsCounters[a]}),Ft.each(e,function(e,n){e.name=n,t.mdsCounters[n]=e})})},t.prototype.trackByFn=function(t,e){return e.name},t}(),hu=a["\u0275crt"]({encapsulation:0,styles:[[".progress[_ngcontent-%COMP%]{margin-bottom:0}"]],data:{}});function gu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-cephfs-chart",[],null,null,null,iu,ru)),a["\u0275did"](3,638976,null,0,au,[],{mdsCounter:[0,"mdsCounter"]},null)],function(t,e){t(e,3,0,e.context.$implicit)},null)}function mu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-cephfs-clients",[],null,null,null,fu,du)),a["\u0275did"](1,114688,null,0,cu,[uu,Kt.a],{id:[0,"id"]},null)],function(t,e){t(e,1,0,e.component.id)},null)}function bu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"tab",[["heading","Performance Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](1,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](2,0,null,null,1,"cd-grafana",[["grafanaStyle","one"],["uid","tbO9LAiZz"]],null,null,null,un.b,un.a)),a["\u0275did"](3,638976,null,0,ln.a,[cn.a,dn.DomSanitizer,fn.a,pn.a,Kt.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,a["\u0275nov"](e,1).id,a["\u0275nov"](e,1).active,a["\u0275nov"](e,1).addClass)})}function yu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,26,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,18,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,12,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,6,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Ranks"])),(t()(),a["\u0275eld"](8,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},hn.b,hn.a)),a["\u0275did"](9,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},{fetchData:"fetchData"}),(t()(),a["\u0275eld"](10,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](11,638976,null,0,$n.a,[Zn.a],{data:[0,"data"]},null),(t()(),a["\u0275eld"](12,0,null,null,4,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Pools"])),(t()(),a["\u0275eld"](15,0,null,null,1,"cd-table",[],null,null,null,hn.b,hn.a)),a["\u0275did"](16,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],toolHeader:[2,"toolHeader"]},null),(t()(),a["\u0275eld"](17,0,null,null,1,"legend",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["MDS performance counters"])),(t()(),a["\u0275and"](16777216,null,null,1,null,gu)),a["\u0275did"](20,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275eld"](21,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],[[null,"select"],[null,"deselect"]],function(t,e,n){var a=!0,r=t.component;return"select"===e&&(a=0!=(r.clientsSelect=!0)&&a),"deselect"===e&&(a=0!=(r.clientsSelect=!1)&&a),a},null,null)),a["\u0275did"](22,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},{select:"select",deselect:"deselect"}),(t()(),a["\u0275and"](16777216,null,null,1,null,mu)),a["\u0275did"](24,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,0,1,null,bu)),a["\u0275did"](26,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,"Details"),t(e,9,0,n.ranks.data,n.ranks.columns,!1),t(e,11,0,n.standbys),t(e,16,0,n.pools.data,n.pools.columns,!1),t(e,20,0,n.objectValues(n.mdsCounters),n.trackByFn),t(e,22,0,a["\u0275inlineInterpolate"](1,"Clients: ",n.clientCount,"")),t(e,24,0,n.clientsSelect),t(e,26,0,n.grafanaPermission.read)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,21,0,a["\u0275nov"](e,22).id,a["\u0275nov"](e,22).active,a["\u0275nov"](e,22).addClass)})}function vu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-usage-bar",[],null,null,null,Hn.b,Hn.a)),a["\u0275did"](1,573440,null,0,Gn.a,[],{totalBytes:[0,"totalBytes"],usedBytes:[1,"usedBytes"]},null)],function(t,e){t(e,1,0,e.context.row.size,e.context.row.used)},null)}function _u(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](0,null,[" ",": "," /s\n"])),a["\u0275ppd"](1,1)],null,function(t,e){var n="standby-replay"===e.context.row.state?"Evts":"Reqs",r=a["\u0275unv"](e,0,1,t(e,1,0,a["\u0275nov"](e.parent,0),e.context.value));t(e,0,0,n,r)})}function xu(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Ht.a,[Qt.a]),a["\u0275qud"](402653184,1,{poolUsageTpl:0}),a["\u0275qud"](402653184,2,{activityTmpl:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,yu)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,[[1,2],["poolUsageTpl",2]],null,0,null,vu)),(t()(),a["\u0275and"](0,[[2,2],["activityTmpl",2]],null,0,null,_u))],function(t,e){t(e,4,0,e.component.selectedItem)},null)}var Tu=function(){function t(t,e){this.cephfsService=t,this.i18n=e,this.filesystems=[],this.selection=new mn.a}return t.prototype.ngOnInit=function(){this.columns=[{name:this.i18n("Name"),prop:"mdsmap.fs_name",flexGrow:2},{name:this.i18n("Created"),prop:"mdsmap.created",flexGrow:2},{name:this.i18n("Enabled"),prop:"mdsmap.enabled",flexGrow:1}]},t.prototype.loadFilesystems=function(t){var e=this;this.cephfsService.list().subscribe(function(t){e.filesystems=t},function(){t.error()})},t.prototype.updateSelection=function(t){this.selection=t},t}(),wu=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Su(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"fetchData"],[null,"updateSelection"]],function(t,e,n){var a=!0,r=t.component;return"fetchData"===e&&(a=!1!==r.loadFilesystems(n)&&a),"updateSelection"===e&&(a=!1!==r.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](1,2867200,null,0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{fetchData:"fetchData",updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](2,0,null,2,1,"cd-cephfs-detail",[["cdTableDetail",""]],null,null,null,xu,hu)),a["\u0275did"](3,638976,null,0,pu,[q.a,uu,Yt.a,Ht.a,Kt.a],{selection:[0,"selection"]},null)],function(t,e){var n=e.component;t(e,1,0,n.filesystems,n.columns,"flex","id","true","single"),t(e,3,0,n.selection)},null)}function Ou(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-cephfs-list",[],null,null,null,Su,wu)),a["\u0275did"](1,114688,null,0,Tu,[uu,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var Cu=a["\u0275ccf"]("cd-cephfs-list",Tu,Ou,{},{},[]),ku=n("TZo1"),Iu=n("9Kw/"),Du=function(){function t(t,e,n,a){this.route=t,this.summaryService=e,this.cephReleaseNamePipe=n,this.i18n=a,this.message=this.i18n("The NFS Ganesha service is not configured.")}return t.prototype.ngOnInit=function(){var t=this,e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard",setTimeout(function(){e.unsubscribe()},0)}});this.routeParamsSubscribe=this.route.params.subscribe(function(e){t.message=e.message})},t.prototype.ngOnDestroy=function(){this.routeParamsSubscribe.unsubscribe()},t}(),Ru=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Nu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"cd-info-panel",[],null,null,null,ku.b,ku.a)),a["\u0275did"](1,49152,null,0,Iu.a,[Kt.a],null,null),(t()(),a["\u0275ted"](2,0,[" ",""])),(t()(),a["\u0275eld"](3,0,null,0,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,0,4,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Please consult the "])),(t()(),a["\u0275eld"](6,0,null,null,1,"a",[["target","_blank"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["documentation"])),(t()(),a["\u0275ted"](-1,null,[" on how to configure and enable the NFS Ganesha management functionality."]))],null,function(t,e){var n=e.component;t(e,2,0,n.message),t(e,6,0,a["\u0275inlineInterpolate"](1,"",n.docsUrl,""))})}function Au(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-nfs-501",[],null,null,null,Nu,Ru)),a["\u0275did"](1,245760,null,0,Du,[kt.a,cn.a,pn.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var Eu=a["\u0275ccf"]("cd-nfs-501",Du,Au,{},{},[]),Lu=function(){function t(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}]}return t.prototype.ngOnChanges=function(){this.selection.hasSelection&&(this.selectedItem=this.selection.first(),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(function(t){return"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))},t}(),Pu=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Mu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"tabset",[],[[2,"tab-container",null]],null,null,wt.b,wt.a)),a["\u0275did"](1,180224,null,0,St.d,[St.e,a.Renderer2],null,null),(t()(),a["\u0275eld"](2,0,null,0,3,"tab",[["heading","Details"]],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](3,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"cd-table-key-value",[],null,null,null,Kn.b,Kn.a)),a["\u0275did"](5,638976,null,0,$n.a,[Zn.a],{data:[0,"data"]},null),(t()(),a["\u0275eld"](6,0,null,0,3,"tab",[],[[1,"id",0],[2,"active",null],[2,"tab-pane",null]],null,null,null,null)),a["\u0275did"](7,212992,null,0,St.b,[St.d,a.ElementRef,a.Renderer2],{heading:[0,"heading"]},null),(t()(),a["\u0275eld"](8,0,null,null,1,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","addresses"],["selectionType",""]],null,null,null,hn.b,hn.a)),a["\u0275did"](9,2867200,[["table",4]],0,gn.a,[a.NgZone,a.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,a["\u0275inlineInterpolate"](1,"Clients (",n.clients.length,")")),t(e,9,0,n.clients,n.clientsColumns,"flex","addresses","true","")},function(t,e){t(e,0,0,a["\u0275nov"](e,1).clazz),t(e,2,0,a["\u0275nov"](e,3).id,a["\u0275nov"](e,3).active,a["\u0275nov"](e,3).addClass),t(e,6,0,a["\u0275nov"](e,7).id,a["\u0275nov"](e,7).active,a["\u0275nov"](e,7).addClass)})}function ju(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Mu)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,1,0,null==n.selection?null:n.selection.hasSingleSelection)},null)}var qu=n("VTlA"),Fu=n("ufoC"),zu=function(){function t(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"]}return t.prototype.list=function(){return this.http.get(this.apiPath+"/export")},t.prototype.get=function(t,e){return this.http.get(this.apiPath+"/export/"+t+"/"+e)},t.prototype.create=function(t){return this.http.post(this.apiPath+"/export",t,{observe:"response"})},t.prototype.update=function(t,e,n){return this.http.put(this.apiPath+"/export/"+t+"/"+e,n,{observe:"response"})},t.prototype.delete=function(t,e){return this.http.delete(this.apiPath+"/export/"+t+"/"+e,{observe:"response"})},t.prototype.lsDir=function(t){return this.http.get(this.uiApiPath+"/lsdir?root_dir="+t)},t.prototype.buckets=function(t){return this.http.get(this.uiApiPath+"/rgw/buckets?user_id="+t)},t.prototype.clients=function(){return this.http.get(this.uiApiPath+"/cephx/clients")},t.prototype.fsals=function(){return this.http.get(this.uiApiPath+"/fsals")},t.prototype.filesystems=function(){return this.http.get(this.uiApiPath+"/cephfs/filesystems")},t.prototype.daemon=function(){return this.http.get(this.apiPath+"/daemon")},t.prototype.start=function(t){return this.http.put(this.apiPath+"/service/"+t+"/start",null,{observe:"response"})},t.prototype.stop=function(t){return this.http.put(this.apiPath+"/service/"+t+"/stop",null,{observe:"response"})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c),a.inject(Kt.a))},token:t,providedIn:ne.a}),t}(),Yu=n("kvvV"),Hu=n("kn/O"),Gu=function(){function t(t,e,n,a,r,i){var o=this;this.authStorageService=t,this.i18n=e,this.modalService=n,this.nfsService=a,this.taskListService=r,this.taskWrapper=i,this.selection=new mn.a,this.isDefaultCluster=!1,this.builders={"nfs/create":function(t){return{path:t.path,cluster_id:t.cluster_id,fsal:t.fsal}}},this.permission=this.authStorageService.getPermissions().nfs;var s={permission:"create",icon:"fa-plus",routerLink:function(){return"/nfs/add"},canBePrimary:function(t){return!t.hasSingleSelection},name:this.i18n("Add")},u={permission:"update",icon:"fa-pencil",routerLink:function(){return"/nfs/edit/"+(o.selection.first()&&encodeURI(o.selection.first().cluster_id)+"/"+encodeURI(o.selection.first().export_id))},name:this.i18n("Edit")},l={permission:"delete",icon:"fa-times",click:function(){return o.deleteNfsModal()},name:this.i18n("Delete")};this.tableActions=[s,u,l]}return t.prototype.ngOnInit=function(){var t=this;this.columns=[{name:this.i18n("Export"),prop:"path",flexGrow:2,cellTransformation:Ln.a.executing},{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(function(e){var n=Ft(e).map(function(t){return t.cluster_id}).uniq().value();t.isDefaultCluster=1===n.length&&"_default_"===n[0],t.columns[1].isHidden=t.isDefaultCluster,t.table&&t.table.updateColumns(),t.taskListService.init(function(){return t.nfsService.list()},function(e){return t.prepareResponse(e)},function(e){return t.exports=e},function(){return t.onFetchError()},t.taskFilter,t.itemFilter,t.builders)},function(){t.onFetchError()})},t.prototype.ngOnDestroy=function(){this.summaryDataSubscription&&this.summaryDataSubscription.unsubscribe()},t.prototype.prepareResponse=function(t){var e=[];return t.forEach(function(t){t.id=t.cluster_id+":"+t.export_id,t.state="LOADING",e=e.concat(t)}),e},t.prototype.onFetchError=function(){this.table.reset(),this.viewCacheStatus={status:lu.a.ValueException}},t.prototype.itemFilter=function(t,e){return t.cluster_id===e.metadata.cluster_id&&t.export_id===e.metadata.export_id},t.prototype.taskFilter=function(t){return["nfs/create","nfs/delete","nfs/edit"].includes(t.name)},t.prototype.updateSelection=function(t){this.selection=t},t.prototype.deleteNfsModal=function(){var t=this,e=this.selection.first().cluster_id,n=this.selection.first().export_id;this.modalRef=this.modalService.show(_a.a,{initialState:{itemDescription:this.i18n("NFS"),submitActionObservable:function(){return t.taskWrapper.wrapTaskAroundCall({task:new Yu.a("nfs/delete",{cluster_id:e,export_id:n}),call:t.nfsService.delete(e,n)})}}})},t}(),Vu=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Bu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CephFS"]))],null,null)}function Uu(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Object Gateway"]))],null,null)}function Wu(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Bu)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Uu)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 Ku(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{nfsState:0}),a["\u0275qud"](402653184,2,{nfsFsal:0}),a["\u0275qud"](402653184,3,{table:0}),(t()(),a["\u0275eld"](3,0,null,null,6,"cd-table",[["columnMode","flex"],["forceIdentifier","true"],["identifier","id"],["selectionType","single"]],null,[[null,"updateSelection"]],function(t,e,n){var a=!0;return"updateSelection"===e&&(a=!1!==t.component.updateSelection(n)&&a),a},hn.b,hn.a)),a["\u0275did"](4,2867200,[[3,4],["table",4]],0,gn.a,[a.NgZone,a.ChangeDetectorRef],{data:[0,"data"],columns:[1,"columns"],columnMode:[2,"columnMode"],identifier:[3,"identifier"],forceIdentifier:[4,"forceIdentifier"],selectionType:[5,"selectionType"]},{updateSelection:"updateSelection"}),(t()(),a["\u0275eld"](5,0,null,0,2,"div",[["class","table-actions btn-toolbar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"cd-table-actions",[["class","btn-group"]],null,null,null,Un.b,Un.a)),a["\u0275did"](7,114688,null,0,Wn.a,[],{permission:[0,"permission"],selection:[1,"selection"],tableActions:[2,"tableActions"]},null),(t()(),a["\u0275eld"](8,0,null,2,1,"cd-nfs-details",[["cdTableDetail",""]],null,null,null,ju,Pu)),a["\u0275did"](9,573440,null,0,Lu,[Kt.a],{selection:[0,"selection"]},null),(t()(),a["\u0275and"](0,[[2,2],["nfsFsal",2]],null,0,null,Wu))],function(t,e){var n=e.component;t(e,4,0,n.exports,n.columns,"flex","id","true","single"),t(e,7,0,n.permission,n.selection,n.tableActions),t(e,9,0,n.selection)},null)}function $u(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-nfs-list",[],null,null,null,Ku,Vu)),a["\u0275prd"](131584,null,qu.a,qu.a,[Fu.a,cn.a]),a["\u0275did"](2,245760,null,0,Gu,[q.a,Kt.a,qa.b,zu,qu.a,Hu.a],null,null)],function(t,e){t(e,2,0)},null)}var Zu=a["\u0275ccf"]("cd-nfs-list",Gu,$u,{},{},[]),Xu=n("rpEJ"),Ju=n("zrt+"),Qu=n("0/uQ"),tl=n("Gi3i"),el=n("15JJ"),nl=n("psW0"),al=n("VnD/"),rl=n("R+r5"),il=n("NJnL"),ol={"\xc1":"A","\u0102":"A","\u1eae":"A","\u1eb6":"A","\u1eb0":"A","\u1eb2":"A","\u1eb4":"A","\u01cd":"A","\xc2":"A","\u1ea4":"A","\u1eac":"A","\u1ea6":"A","\u1ea8":"A","\u1eaa":"A","\xc4":"A","\u01de":"A","\u0226":"A","\u01e0":"A","\u1ea0":"A","\u0200":"A","\xc0":"A","\u1ea2":"A","\u0202":"A","\u0100":"A","\u0104":"A","\xc5":"A","\u01fa":"A","\u1e00":"A","\u023a":"A","\xc3":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u1e02":"B","\u1e04":"B","\u0181":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0106":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0108":"C","\u010a":"C","\u0187":"C","\u023b":"C","\u010e":"D","\u1e10":"D","\u1e12":"D","\u1e0a":"D","\u1e0c":"D","\u018a":"D","\u1e0e":"D","\u01f2":"D","\u01c5":"D","\u0110":"D","\u018b":"D","\u01f1":"DZ","\u01c4":"DZ","\xc9":"E","\u0114":"E","\u011a":"E","\u0228":"E","\u1e1c":"E","\xca":"E","\u1ebe":"E","\u1ec6":"E","\u1ec0":"E","\u1ec2":"E","\u1ec4":"E","\u1e18":"E","\xcb":"E","\u0116":"E","\u1eb8":"E","\u0204":"E","\xc8":"E","\u1eba":"E","\u0206":"E","\u0112":"E","\u1e16":"E","\u1e14":"E","\u0118":"E","\u0246":"E","\u1ebc":"E","\u1e1a":"E","\ua76a":"ET","\u1e1e":"F","\u0191":"F","\u01f4":"G","\u011e":"G","\u01e6":"G","\u0122":"G","\u011c":"G","\u0120":"G","\u0193":"G","\u1e20":"G","\u01e4":"G","\u1e2a":"H","\u021e":"H","\u1e28":"H","\u0124":"H","\u2c67":"H","\u1e26":"H","\u1e22":"H","\u1e24":"H","\u0126":"H","\xcd":"I","\u012c":"I","\u01cf":"I","\xce":"I","\xcf":"I","\u1e2e":"I","\u0130":"I","\u1eca":"I","\u0208":"I","\xcc":"I","\u1ec8":"I","\u020a":"I","\u012a":"I","\u012e":"I","\u0197":"I","\u0128":"I","\u1e2c":"I","\ua779":"D","\ua77b":"F","\ua77d":"G","\ua782":"R","\ua784":"S","\ua786":"T","\ua76c":"IS","\u0134":"J","\u0248":"J","\u1e30":"K","\u01e8":"K","\u0136":"K","\u2c69":"K","\ua742":"K","\u1e32":"K","\u0198":"K","\u1e34":"K","\ua740":"K","\ua744":"K","\u0139":"L","\u023d":"L","\u013d":"L","\u013b":"L","\u1e3c":"L","\u1e36":"L","\u1e38":"L","\u2c60":"L","\ua748":"L","\u1e3a":"L","\u013f":"L","\u2c62":"L","\u01c8":"L","\u0141":"L","\u01c7":"LJ","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u0143":"N","\u0147":"N","\u0145":"N","\u1e4a":"N","\u1e44":"N","\u1e46":"N","\u01f8":"N","\u019d":"N","\u1e48":"N","\u0220":"N","\u01cb":"N","\xd1":"N","\u01ca":"NJ","\xd3":"O","\u014e":"O","\u01d1":"O","\xd4":"O","\u1ed0":"O","\u1ed8":"O","\u1ed2":"O","\u1ed4":"O","\u1ed6":"O","\xd6":"O","\u022a":"O","\u022e":"O","\u0230":"O","\u1ecc":"O","\u0150":"O","\u020c":"O","\xd2":"O","\u1ece":"O","\u01a0":"O","\u1eda":"O","\u1ee2":"O","\u1edc":"O","\u1ede":"O","\u1ee0":"O","\u020e":"O","\ua74a":"O","\ua74c":"O","\u014c":"O","\u1e52":"O","\u1e50":"O","\u019f":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\xd5":"O","\u1e4c":"O","\u1e4e":"O","\u022c":"O","\u01a2":"OI","\ua74e":"OO","\u0190":"E","\u0186":"O","\u0222":"OU","\u1e54":"P","\u1e56":"P","\ua752":"P","\u01a4":"P","\ua754":"P","\u2c63":"P","\ua750":"P","\ua758":"Q","\ua756":"Q","\u0154":"R","\u0158":"R","\u0156":"R","\u1e58":"R","\u1e5a":"R","\u1e5c":"R","\u0210":"R","\u0212":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua73e":"C","\u018e":"E","\u015a":"S","\u1e64":"S","\u0160":"S","\u1e66":"S","\u015e":"S","\u015c":"S","\u0218":"S","\u1e60":"S","\u1e62":"S","\u1e68":"S","\u0164":"T","\u0162":"T","\u1e70":"T","\u021a":"T","\u023e":"T","\u1e6a":"T","\u1e6c":"T","\u01ac":"T","\u1e6e":"T","\u01ae":"T","\u0166":"T","\u2c6f":"A","\ua780":"L","\u019c":"M","\u0245":"V","\ua728":"TZ","\xda":"U","\u016c":"U","\u01d3":"U","\xdb":"U","\u1e76":"U","\xdc":"U","\u01d7":"U","\u01d9":"U","\u01db":"U","\u01d5":"U","\u1e72":"U","\u1ee4":"U","\u0170":"U","\u0214":"U","\xd9":"U","\u1ee6":"U","\u01af":"U","\u1ee8":"U","\u1ef0":"U","\u1eea":"U","\u1eec":"U","\u1eee":"U","\u0216":"U","\u016a":"U","\u1e7a":"U","\u0172":"U","\u016e":"U","\u0168":"U","\u1e78":"U","\u1e74":"U","\ua75e":"V","\u1e7e":"V","\u01b2":"V","\u1e7c":"V","\ua760":"VY","\u1e82":"W","\u0174":"W","\u1e84":"W","\u1e86":"W","\u1e88":"W","\u1e80":"W","\u2c72":"W","\u1e8c":"X","\u1e8a":"X","\xdd":"Y","\u0176":"Y","\u0178":"Y","\u1e8e":"Y","\u1ef4":"Y","\u1ef2":"Y","\u01b3":"Y","\u1ef6":"Y","\u1efe":"Y","\u0232":"Y","\u024e":"Y","\u1ef8":"Y","\u0179":"Z","\u017d":"Z","\u1e90":"Z","\u2c6b":"Z","\u017b":"Z","\u1e92":"Z","\u0224":"Z","\u1e94":"Z","\u01b5":"Z","\u0132":"IJ","\u0152":"OE","\u1d00":"A","\u1d01":"AE","\u0299":"B","\u1d03":"B","\u1d04":"C","\u1d05":"D","\u1d07":"E","\ua730":"F","\u0262":"G","\u029b":"G","\u029c":"H","\u026a":"I","\u0281":"R","\u1d0a":"J","\u1d0b":"K","\u029f":"L","\u1d0c":"L","\u1d0d":"M","\u0274":"N","\u1d0f":"O","\u0276":"OE","\u1d10":"O","\u1d15":"OU","\u1d18":"P","\u0280":"R","\u1d0e":"N","\u1d19":"R","\ua731":"S","\u1d1b":"T","\u2c7b":"E","\u1d1a":"R","\u1d1c":"U","\u1d20":"V","\u1d21":"W","\u028f":"Y","\u1d22":"Z","\xe1":"a","\u0103":"a","\u1eaf":"a","\u1eb7":"a","\u1eb1":"a","\u1eb3":"a","\u1eb5":"a","\u01ce":"a","\xe2":"a","\u1ea5":"a","\u1ead":"a","\u1ea7":"a","\u1ea9":"a","\u1eab":"a","\xe4":"a","\u01df":"a","\u0227":"a","\u01e1":"a","\u1ea1":"a","\u0201":"a","\xe0":"a","\u1ea3":"a","\u0203":"a","\u0101":"a","\u0105":"a","\u1d8f":"a","\u1e9a":"a","\xe5":"a","\u01fb":"a","\u1e01":"a","\u2c65":"a","\xe3":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u1e03":"b","\u1e05":"b","\u0253":"b","\u1e07":"b","\u1d6c":"b","\u1d80":"b","\u0180":"b","\u0183":"b","\u0275":"o","\u0107":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0109":"c","\u0255":"c","\u010b":"c","\u0188":"c","\u023c":"c","\u010f":"d","\u1e11":"d","\u1e13":"d","\u0221":"d","\u1e0b":"d","\u1e0d":"d","\u0257":"d","\u1d91":"d","\u1e0f":"d","\u1d6d":"d","\u1d81":"d","\u0111":"d","\u0256":"d","\u018c":"d","\u0131":"i","\u0237":"j","\u025f":"j","\u0284":"j","\u01f3":"dz","\u01c6":"dz","\xe9":"e","\u0115":"e","\u011b":"e","\u0229":"e","\u1e1d":"e","\xea":"e","\u1ebf":"e","\u1ec7":"e","\u1ec1":"e","\u1ec3":"e","\u1ec5":"e","\u1e19":"e","\xeb":"e","\u0117":"e","\u1eb9":"e","\u0205":"e","\xe8":"e","\u1ebb":"e","\u0207":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u2c78":"e","\u0119":"e","\u1d92":"e","\u0247":"e","\u1ebd":"e","\u1e1b":"e","\ua76b":"et","\u1e1f":"f","\u0192":"f","\u1d6e":"f","\u1d82":"f","\u01f5":"g","\u011f":"g","\u01e7":"g","\u0123":"g","\u011d":"g","\u0121":"g","\u0260":"g","\u1e21":"g","\u1d83":"g","\u01e5":"g","\u1e2b":"h","\u021f":"h","\u1e29":"h","\u0125":"h","\u2c68":"h","\u1e27":"h","\u1e23":"h","\u1e25":"h","\u0266":"h","\u1e96":"h","\u0127":"h","\u0195":"hv","\xed":"i","\u012d":"i","\u01d0":"i","\xee":"i","\xef":"i","\u1e2f":"i","\u1ecb":"i","\u0209":"i","\xec":"i","\u1ec9":"i","\u020b":"i","\u012b":"i","\u012f":"i","\u1d96":"i","\u0268":"i","\u0129":"i","\u1e2d":"i","\ua77a":"d","\ua77c":"f","\u1d79":"g","\ua783":"r","\ua785":"s","\ua787":"t","\ua76d":"is","\u01f0":"j","\u0135":"j","\u029d":"j","\u0249":"j","\u1e31":"k","\u01e9":"k","\u0137":"k","\u2c6a":"k","\ua743":"k","\u1e33":"k","\u0199":"k","\u1e35":"k","\u1d84":"k","\ua741":"k","\ua745":"k","\u013a":"l","\u019a":"l","\u026c":"l","\u013e":"l","\u013c":"l","\u1e3d":"l","\u0234":"l","\u1e37":"l","\u1e39":"l","\u2c61":"l","\ua749":"l","\u1e3b":"l","\u0140":"l","\u026b":"l","\u1d85":"l","\u026d":"l","\u0142":"l","\u01c9":"lj","\u017f":"s","\u1e9c":"s","\u1e9b":"s","\u1e9d":"s","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u1d6f":"m","\u1d86":"m","\u0144":"n","\u0148":"n","\u0146":"n","\u1e4b":"n","\u0235":"n","\u1e45":"n","\u1e47":"n","\u01f9":"n","\u0272":"n","\u1e49":"n","\u019e":"n","\u1d70":"n","\u1d87":"n","\u0273":"n","\xf1":"n","\u01cc":"nj","\xf3":"o","\u014f":"o","\u01d2":"o","\xf4":"o","\u1ed1":"o","\u1ed9":"o","\u1ed3":"o","\u1ed5":"o","\u1ed7":"o","\xf6":"o","\u022b":"o","\u022f":"o","\u0231":"o","\u1ecd":"o","\u0151":"o","\u020d":"o","\xf2":"o","\u1ecf":"o","\u01a1":"o","\u1edb":"o","\u1ee3":"o","\u1edd":"o","\u1edf":"o","\u1ee1":"o","\u020f":"o","\ua74b":"o","\ua74d":"o","\u2c7a":"o","\u014d":"o","\u1e53":"o","\u1e51":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\xf5":"o","\u1e4d":"o","\u1e4f":"o","\u022d":"o","\u01a3":"oi","\ua74f":"oo","\u025b":"e","\u1d93":"e","\u0254":"o","\u1d97":"o","\u0223":"ou","\u1e55":"p","\u1e57":"p","\ua753":"p","\u01a5":"p","\u1d71":"p","\u1d88":"p","\ua755":"p","\u1d7d":"p","\ua751":"p","\ua759":"q","\u02a0":"q","\u024b":"q","\ua757":"q","\u0155":"r","\u0159":"r","\u0157":"r","\u1e59":"r","\u1e5b":"r","\u1e5d":"r","\u0211":"r","\u027e":"r","\u1d73":"r","\u0213":"r","\u1e5f":"r","\u027c":"r","\u1d72":"r","\u1d89":"r","\u024d":"r","\u027d":"r","\u2184":"c","\ua73f":"c","\u0258":"e","\u027f":"r","\u015b":"s","\u1e65":"s","\u0161":"s","\u1e67":"s","\u015f":"s","\u015d":"s","\u0219":"s","\u1e61":"s","\u1e63":"s","\u1e69":"s","\u0282":"s","\u1d74":"s","\u1d8a":"s","\u023f":"s","\u0261":"g","\u1d11":"o","\u1d13":"o","\u1d1d":"u","\u0165":"t","\u0163":"t","\u1e71":"t","\u021b":"t","\u0236":"t","\u1e97":"t","\u2c66":"t","\u1e6b":"t","\u1e6d":"t","\u01ad":"t","\u1e6f":"t","\u1d75":"t","\u01ab":"t","\u0288":"t","\u0167":"t","\u1d7a":"th","\u0250":"a","\u1d02":"ae","\u01dd":"e","\u1d77":"g","\u0265":"h","\u02ae":"h","\u02af":"h","\u1d09":"i","\u029e":"k","\ua781":"l","\u026f":"m","\u0270":"m","\u1d14":"oe","\u0279":"r","\u027b":"r","\u027a":"r","\u2c79":"r","\u0287":"t","\u028c":"v","\u028d":"w","\u028e":"y","\ua729":"tz","\xfa":"u","\u016d":"u","\u01d4":"u","\xfb":"u","\u1e77":"u","\xfc":"u","\u01d8":"u","\u01da":"u","\u01dc":"u","\u01d6":"u","\u1e73":"u","\u1ee5":"u","\u0171":"u","\u0215":"u","\xf9":"u","\u1ee7":"u","\u01b0":"u","\u1ee9":"u","\u1ef1":"u","\u1eeb":"u","\u1eed":"u","\u1eef":"u","\u0217":"u","\u016b":"u","\u1e7b":"u","\u0173":"u","\u1d99":"u","\u016f":"u","\u0169":"u","\u1e79":"u","\u1e75":"u","\u1d6b":"ue","\ua778":"um","\u2c74":"v","\ua75f":"v","\u1e7f":"v","\u028b":"v","\u1d8c":"v","\u2c71":"v","\u1e7d":"v","\ua761":"vy","\u1e83":"w","\u0175":"w","\u1e85":"w","\u1e87":"w","\u1e89":"w","\u1e81":"w","\u2c73":"w","\u1e98":"w","\u1e8d":"x","\u1e8b":"x","\u1d8d":"x","\xfd":"y","\u0177":"y","\xff":"y","\u1e8f":"y","\u1ef5":"y","\u1ef3":"y","\u01b4":"y","\u1ef7":"y","\u1eff":"y","\u0233":"y","\u1e99":"y","\u024f":"y","\u1ef9":"y","\u017a":"z","\u017e":"z","\u1e91":"z","\u0291":"z","\u2c6c":"z","\u017c":"z","\u1e93":"z","\u0225":"z","\u1e95":"z","\u1d76":"z","\u1d8e":"z","\u0290":"z","\u01b6":"z","\u0240":"z","\ufb00":"ff","\ufb03":"ffi","\ufb04":"ffl","\ufb01":"fi","\ufb02":"fl","\u0133":"ij","\u0153":"oe","\ufb06":"st","\u2090":"a","\u2091":"e","\u1d62":"i","\u2c7c":"j","\u2092":"o","\u1d63":"r","\u1d64":"u","\u1d65":"v","\u2093":"x"},sl=function(){function t(t,e,n){void 0===e&&(e=t),void 0===n&&(n=!1),this.item=t,this.value=e,this.header=n}return t.prototype.isHeader=function(){return this.header},t.prototype.toString=function(){return this.value},t}();function ul(t){return t?t.replace(/[^A-Za-z0-9\[\] ]/g,function(t){return ol[t]||t}):""}function ll(t,e,n){void 0===e&&(e=" "),void 0===n&&(n="");for(var a,r=t.split(new RegExp("(?:["+n+"])([^"+n+"]+)(?:["+n+"])|([^"+e+"]+)","g")),i=[],o=r.length,s=new RegExp("["+n+"]+","g"),u=0;u<o;u+=1)(a=r[u])&&a.length&&a!==e&&i.push(a.replace(s,""));return i}function cl(t,e){if(!e||"object"!=typeof t)return t.toString();if(e.endsWith("()"))return t[e.slice(0,e.length-2)]().toString();var n,a,r=e.replace(/\[(\w+)\]/g,".$1").replace(/^\./,"").split(".");try{for(var i=Object(Y.__values)(r),o=i.next();!o.done;o=i.next()){var s=o.value;s in t&&(t=t[s])}}catch(u){n={error:u}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}return t?t.toString():""}var dl=function(){function t(t,e){this.renderer=e,this.isFocused=!1,this._matches=[],this.isScrolledIntoView=function(t){var e=this.ulElement.nativeElement.scrollTop,n=e+Number(this.ulElement.nativeElement.offsetHeight),a=t.offsetTop;return a+t.offsetHeight<=n&&a>=e},this.element=t}return Object.defineProperty(t.prototype,"isBs4",{get:function(){return!Object(Xu.d)()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._active},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"matches",{get:function(){return this._matches},set:function(t){var e=this;this._matches=t,this.needScrollbar=this.typeaheadScrollable&&this.typeaheadOptionsInScrollableView<this.matches.length,this.typeaheadScrollable&&setTimeout(function(){e.setScrollableMode()}),this._matches.length>0&&(this._active=this._matches[0],this._active.isHeader()&&this.nextActiveMatch())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"optionsListTemplate",{get:function(){return this.parent?this.parent.optionsListTemplate:void 0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"typeaheadScrollable",{get:function(){return!!this.parent&&this.parent.typeaheadScrollable},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"typeaheadOptionsInScrollableView",{get:function(){return this.parent?this.parent.typeaheadOptionsInScrollableView:5},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"itemTemplate",{get:function(){return this.parent?this.parent.typeaheadItemTemplate:void 0},enumerable:!0,configurable:!0}),t.prototype.selectActiveMatch=function(){this.selectMatch(this._active)},t.prototype.prevActiveMatch=function(){var 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)},t.prototype.nextActiveMatch=function(){var 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)},t.prototype.selectActive=function(t){this.isFocused=!0,this._active=t},t.prototype.highlight=function(t,e){var n,a,r=t.value,i=(this.parent&&this.parent.typeaheadLatinize?ul(r):r).toLowerCase();if("object"==typeof e)for(var o=e.length,s=0;s<o;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},t.prototype.focusLost=function(){this.isFocused=!1},t.prototype.isActive=function(t){return this._active===t},t.prototype.selectMatch=function(t,e){var n=this;return void 0===e&&(e=void 0),e&&(e.stopPropagation(),e.preventDefault()),this.parent.changeModel(t),setTimeout(function(){return n.parent.typeaheadOnSelect.emit(t)},0),!1},t.prototype.setScrollableMode=function(){if(this.ulElement||(this.ulElement=this.element),this.liElements.first){var t=Xu.b.getStyles(this.ulElement.nativeElement),e=Xu.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")},t.prototype.scrollPrevious=function(t){if(0!==t){if(this.liElements){var e=this.liElements.toArray()[t-1];e&&!this.isScrolledIntoView(e.nativeElement)&&(this.ulElement.nativeElement.scrollTop=e.nativeElement.offsetTop)}}else this.scrollToBottom()},t.prototype.scrollNext=function(t){if(t+1>this.matches.length-1)this.scrollToTop();else if(this.liElements){var 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))}},t.prototype.scrollToBottom=function(){this.ulElement.nativeElement.scrollTop=this.ulElement.nativeElement.scrollHeight},t.prototype.scrollToTop=function(){this.ulElement.nativeElement.scrollTop=0},t}(),fl=function(){return function(){this.hideResultsOnBlur=!0}}(),pl=function(){function t(t,e,n,r,i,o,s){this.ngControl=t,this.element=e,this.renderer=r,this.changeDetection=s,this.typeaheadMinLength=void 0,this.typeaheadAsync=void 0,this.typeaheadLatinize=!0,this.typeaheadSingleWords=!0,this.typeaheadWordDelimiters=" ",this.typeaheadPhraseDelimiters="'\"",this.typeaheadScrollable=!1,this.typeaheadOptionsInScrollableView=5,this.typeaheadLoading=new a.EventEmitter,this.typeaheadNoResults=new a.EventEmitter,this.typeaheadOnSelect=new a.EventEmitter,this.typeaheadOnBlur=new a.EventEmitter,this.dropup=!1,this.isTypeaheadOptionsListActive=!1,this.keyUpEventEmitter=new a.EventEmitter,this.placement="bottom-left",this._subscriptions=[],this._typeahead=o.createLoader(e,n,r).provide({provide:fl,useValue:i}),Object.assign(this,{typeaheadHideResultsOnBlur:i.hideResultsOnBlur})}return t.prototype.ngOnInit=function(){this.typeaheadOptionsLimit=this.typeaheadOptionsLimit||20,this.typeaheadMinLength=void 0===this.typeaheadMinLength?1:this.typeaheadMinLength,this.typeaheadWaitMs=this.typeaheadWaitMs||0,void 0!==this.typeaheadAsync||Object(Ju.a)(this.typeahead)||(this.typeaheadAsync=!1),Object(Ju.a)(this.typeahead)&&(this.typeaheadAsync=!0),this.typeaheadAsync?this.asyncActions():this.syncActions()},t.prototype.onInput=function(t){var 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())},t.prototype.onChange=function(t){if(this._container){if(27===t.keyCode||"Escape"===t.key)return void this.hide();if(38===t.keyCode||"ArrowUp"===t.key)return void this._container.prevActiveMatch();if(40===t.keyCode||"ArrowDown"===t.key)return void this._container.nextActiveMatch();if(13===t.keyCode||"Enter"===t.key)return void this._container.selectActiveMatch()}},t.prototype.onFocus=function(){0===this.typeaheadMinLength&&(this.typeaheadLoading.emit(!0),this.keyUpEventEmitter.emit(this.element.nativeElement.value||""))},t.prototype.onBlur=function(){this._container&&!this._container.isFocused&&this.typeaheadOnBlur.emit(this._container.active)},t.prototype.onKeydown=function(t){if(this._container){if(13!==t.keyCode&&"Enter"!==t.key)return 9===t.keyCode||"Tab"===t.key?(t.preventDefault(),void this._container.selectActiveMatch()):void 0;t.preventDefault()}},t.prototype.changeModel=function(t){var e=t.value;this.ngControl.viewToModelUpdate(e),this.ngControl.control.setValue(e),this.changeDetection.markForCheck(),this.hide()},Object.defineProperty(t.prototype,"matches",{get:function(){return this._matches},enumerable:!0,configurable:!0}),t.prototype.show=function(){var t=this;this._typeahead.attach(dl).to(this.container).position({attachment:(this.dropup?"top":"bottom")+" left"}).show({typeaheadRef:this,placement:this.placement,animation:!1,dropup:this.dropup}),this._outsideClickListener=this.renderer.listen("document","click",function(e){0===t.typeaheadMinLength&&t.element.nativeElement.contains(e.target)||t.typeaheadHideResultsOnBlur&&!t.element.nativeElement.contains(e.target)&&t.onOutsideClick()}),this._container=this._typeahead.instance,this._container.parent=this;var e=(this.typeaheadLatinize?ul(this.ngControl.control.value):this.ngControl.control.value).toString().toLowerCase();this._container.query=this.typeaheadSingleWords?ll(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,this._container.matches=this._matches,this.element.nativeElement.focus()},t.prototype.hide=function(){this._typeahead.isShown&&(this._typeahead.hide(),this._outsideClickListener(),this._container=null)},t.prototype.onOutsideClick=function(){this._container&&!this._container.isFocused&&this.hide()},t.prototype.ngOnDestroy=function(){try{for(var t=Object(Y.__values)(this._subscriptions),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(r){n={error:r}}finally{try{e&&!e.done&&(a=t.return)&&a.call(t)}finally{if(n)throw n.error}}var n,a;this._typeahead.dispose()},t.prototype.asyncActions=function(){var t=this;this._subscriptions.push(this.keyUpEventEmitter.pipe(Object(tl.a)(this.typeaheadWaitMs),Object(el.a)(function(){return t.typeahead})).subscribe(function(e){t.finalizeAsyncCall(e)}))},t.prototype.syncActions=function(){var t=this;this._subscriptions.push(this.keyUpEventEmitter.pipe(Object(tl.a)(this.typeaheadWaitMs),Object(nl.a)(function(e){var n=t.normalizeQuery(e);return Object(Qu.a)(t.typeahead).pipe(Object(al.a)(function(e){return e&&t.testMatch(t.normalizeOption(e),n)}),Object(rl.a)())})).subscribe(function(e){t.finalizeAsyncCall(e)}))},t.prototype.normalizeOption=function(t){var e=cl(t,this.typeaheadOptionField);return(this.typeaheadLatinize?ul(e):e).toLowerCase()},t.prototype.normalizeQuery=function(t){var e=(this.typeaheadLatinize?ul(t):t).toString().toLowerCase();return this.typeaheadSingleWords?ll(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e},t.prototype.testMatch=function(t,e){var n;if("object"==typeof e){n=e.length;for(var 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},t.prototype.finalizeAsyncCall=function(t){if(this.prepareMatches(t||[]),this.typeaheadLoading.emit(!1),this.typeaheadNoResults.emit(!this.hasMatches()),this.hasMatches())if(this._container){var e=((this.typeaheadLatinize?ul(this.ngControl.control.value):this.ngControl.control.value)||"").toString().toLowerCase();this._container.query=this.typeaheadSingleWords?ll(e,this.typeaheadWordDelimiters,this.typeaheadPhraseDelimiters):e,this._container.matches=this._matches}else this.show();else this.hide()},t.prototype.prepareMatches=function(t){var e=this,n=t.slice(0,this.typeaheadOptionsLimit);if(this.typeaheadGroupField){var a=[];n.map(function(t){return cl(t,e.typeaheadGroupField)}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){a.push(new sl(t,t,!0)),a=a.concat(n.filter(function(n){return cl(n,e.typeaheadGroupField)===t}).map(function(t){return new sl(t,cl(t,e.typeaheadOptionField))}))}),this._matches=a}else this._matches=n.map(function(t){return new sl(t,cl(t,e.typeaheadOptionField))})},t.prototype.hasMatches=function(){return this._matches.length>0},t}(),hl=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[Ct.a,il.a,fl]}},t}(),gl=n("WiuZ"),ml=n("wnGv"),bl=n("TYzs"),yl=function(){function t(t,e){this.nfsService=t,this.i18n=e,this.nfsSquash=this.nfsService.nfsSquash,this.nfsAccessType=this.nfsService.nfsAccessType}return t.prototype.getNoAccessTypeDescr=function(){return this.form.getValue("access_type")?this.form.getValue("access_type")+" "+this.i18n("(inherited from global config)"):this.i18n("-- Select the access type --")},t.prototype.getAccessTypeHelp=function(t){var e=this,n=this.nfsAccessType.find(function(n){return e.getValue(t,"access_type")===n.value});return Ft.isObjectLike(n)?n.help:""},t.prototype.getNoSquashDescr=function(){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 --")},t.prototype.addClient=function(){var t=this.form.get("clients"),e=new Ca.a({addresses:new $e.i("",{validators:[$e.A.required,$e.A.pattern("(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?)([ ,]{1,2}(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3}).([0-9]{1,3})([/](\\d|[1-2]\\d|3[0-2]))?))*")]}),access_type:new $e.i(""),squash:new $e.i("")});return t.push(e),e},t.prototype.removeClient=function(t){this.form.get("clients").removeAt(t)},t.prototype.showError=function(t,e,n,a){return this.form.controls.clients.controls[t].showError(e,n,a)},t.prototype.getValue=function(t,e){return this.form.get("clients").at(t).getValue(e)},t.prototype.resolveModel=function(t){var e=this;Ft.forEach(t,function(t){e.addClient().patchValue(t)})},t.prototype.trackByFn=function(t){return t},t}(),vl=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function _l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[["class","form-control no-border text-muted"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Any client can access"]))],null,null)}function xl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Tl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Must contain one or more comma-separated values"])),(t()(),a["\u0275eld"](3,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["For example:"])),(t()(),a["\u0275ted"](-1,null,[" 192.168.0.10, 192.168.1.0/8 "]))],null,null)}function wl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Sl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.component.getAccessTypeHelp(e.parent.context.index))})}function Ol(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Cl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,62,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,61,"div",[["class","panel panel-default"]],[[2,"ng-untouched",null],[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)),a["\u0275did"](2,212992,null,0,$e.m,[[3,$e.d],[8,null],[8,null]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.m]),a["\u0275did"](4,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](5,0,null,null,5,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,4,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[""," "])),a["\u0275ppd"](8,1),(t()(),a["\u0275eld"](9,0,null,null,1,"span",[["class","pull-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()(),a["\u0275ted"](-1,null,["\xd7"])),(t()(),a["\u0275eld"](11,0,null,null,51,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,16,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](13,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](14,{"has-error":0}),(t()(),a["\u0275eld"](15,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","addresses"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Addresses"])),(t()(),a["\u0275eld"](17,0,null,null,11,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,19)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,19).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](19,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](21,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](23,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](24,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,xl)),a["\u0275did"](26,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Tl)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](29,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](30,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","access_type"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Access Type"])),(t()(),a["\u0275eld"](32,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](33,0,null,null,11,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,34).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,34).onTouched()&&r),r},null,null)),a["\u0275did"](34,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](36,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](38,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](39,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](40,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](41,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](42,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,wl)),a["\u0275did"](44,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Sl)),a["\u0275did"](46,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](47,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](48,0,null,null,1,"label",[["class","col-sm-3 control-label"],["for","squash"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Squash"])),(t()(),a["\u0275eld"](50,0,null,null,12,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](51,0,null,null,11,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,52).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,52).onTouched()&&r),r},null,null)),a["\u0275did"](52,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](54,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](56,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](57,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](58,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](59,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](60,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,Ol)),a["\u0275did"](62,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,2,0,e.context.index);var r=t(e,14,0,n.showError(e.context.index,"addresses",a["\u0275nov"](e.parent,5)));t(e,13,0,"form-group",r),t(e,21,0,"addresses"),t(e,26,0,n.showError(e.context.index,"addresses",a["\u0275nov"](e.parent,5),"required")),t(e,28,0,n.showError(e.context.index,"addresses",a["\u0275nov"](e.parent,5),"pattern")),t(e,36,0,"access_type"),t(e,40,0,""),t(e,41,0,""),t(e,44,0,n.nfsAccessType),t(e,46,0,n.getValue(e.context.index,"access_type")),t(e,54,0,"squash"),t(e,58,0,""),t(e,59,0,""),t(e,62,0,n.nfsSquash)},function(t,e){var n=e.component;t(e,1,0,a["\u0275nov"](e,4).ngClassUntouched,a["\u0275nov"](e,4).ngClassTouched,a["\u0275nov"](e,4).ngClassPristine,a["\u0275nov"](e,4).ngClassDirty,a["\u0275nov"](e,4).ngClassValid,a["\u0275nov"](e,4).ngClassInvalid,a["\u0275nov"](e,4).ngClassPending);var r=a["\u0275unv"](e,7,0,t(e,8,0,a["\u0275nov"](e.parent,0),e.context.index+1));t(e,7,0,r),t(e,18,0,a["\u0275nov"](e,23).ngClassUntouched,a["\u0275nov"](e,23).ngClassTouched,a["\u0275nov"](e,23).ngClassPristine,a["\u0275nov"](e,23).ngClassDirty,a["\u0275nov"](e,23).ngClassValid,a["\u0275nov"](e,23).ngClassInvalid,a["\u0275nov"](e,23).ngClassPending),t(e,33,0,a["\u0275nov"](e,38).ngClassUntouched,a["\u0275nov"](e,38).ngClassTouched,a["\u0275nov"](e,38).ngClassPristine,a["\u0275nov"](e,38).ngClassDirty,a["\u0275nov"](e,38).ngClassValid,a["\u0275nov"](e,38).ngClassInvalid,a["\u0275nov"](e,38).ngClassPending),t(e,42,0,n.getNoAccessTypeDescr()),t(e,51,0,a["\u0275nov"](e,56).ngClassUntouched,a["\u0275nov"](e,56).ngClassTouched,a["\u0275nov"](e,56).ngClassPristine,a["\u0275nov"](e,56).ngClassDirty,a["\u0275nov"](e,56).ngClassValid,a["\u0275nov"](e,56).ngClassInvalid,a["\u0275nov"](e,56).ngClassPending),t(e,60,0,n.getNoSquashDescr())})}function kl(t){return a["\u0275vid"](0,[a["\u0275pid"](0,bl.a,[]),(t()(),a["\u0275eld"](1,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"label",[["class","col-sm-3 control-label"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Clients"])),(t()(),a["\u0275eld"](4,0,null,null,17,"div",[["class","col-sm-9"]],[[2,"ng-untouched",null],[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["\u0275nov"](t,5).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,5).onReset()&&r),r},null,null)),a["\u0275did"](5,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](7,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,_l)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](10,0,null,null,5,null,null,null,null,null,null,null)),a["\u0275did"](11,212992,null,0,$e.g,[[3,$e.d],[8,null],[8,null]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.g]),a["\u0275did"](13,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Cl)),a["\u0275did"](15,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"],ngForTrackBy:[1,"ngForTrackBy"]},null),(t()(),a["\u0275eld"](16,0,null,null,4,"span",[["class","form-control no-border"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,3,"button",[["class","btn btn-default btn-label pull-right"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.addClient()&&a),a},null,null)),(t()(),a["\u0275eld"](18,0,null,null,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Add clients"])),(t()(),a["\u0275eld"](21,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){var n=e.component;t(e,5,0,n.form),t(e,9,0,0===n.form.get("clients").value.length),t(e,11,0,"clients"),t(e,15,0,n.form.get("clients").value,n.trackByFn)},function(t,e){t(e,4,0,a["\u0275nov"](e,7).ngClassUntouched,a["\u0275nov"](e,7).ngClassTouched,a["\u0275nov"](e,7).ngClassPristine,a["\u0275nov"](e,7).ngClassDirty,a["\u0275nov"](e,7).ngClassValid,a["\u0275nov"](e,7).ngClassInvalid,a["\u0275nov"](e,7).ngClassPending)})}var Il=n("F/XL"),Dl=n("67Y/"),Rl=n("P8lu"),Nl=n("DNAf"),Al=n("a96k"),El=function(){function t(t,e,n,a,r,i,o,s,u){var l=this;this.authStorageService=t,this.nfsService=e,this.route=n,this.router=a,this.rgwUserService=r,this.formBuilder=i,this.taskWrapper=o,this.cdRef=s,this.i18n=u,this.isEdit=!1,this.cluster_id=null,this.export_id=null,this.isNewDirectory=!1,this.isNewBucket=!1,this.isDefaultCluster=!1,this.allClusters=null,this.allDaemons={},this.allFsals=[],this.allRgwUsers=[],this.allCephxClients=null,this.allFsNames=null,this.nfsAccessType=this.nfsService.nfsAccessType,this.nfsSquash=this.nfsService.nfsSquash,this.daemonsSelections=[],this.daemonsMessages=new Nl.a({noOptions:this.i18n("There are no daemons available.")},this.i18n),this.pathDataSource=Ao.a.create(function(t){t.next(l.nfsForm.getValue("path"))}).pipe(Object(nl.a)(function(t){return l.getPathTypeahead(t)}),Object(Dl.a)(function(t){return t.paths})),this.bucketDataSource=Ao.a.create(function(t){t.next(l.nfsForm.getValue("path"))}).pipe(Object(nl.a)(function(t){return l.getBucketTypeahead(t)})),this.permission=this.authStorageService.getPermissions().pool,this.createForm()}return t.prototype.ngOnInit=function(){var t=this,e=[this.nfsService.daemon(),this.nfsService.fsals(),this.nfsService.clients(),this.nfsService.filesystems()];this.router.url.startsWith("/nfs/edit")&&(this.isEdit=!0),this.isEdit?this.route.params.subscribe(function(n){t.cluster_id=decodeURIComponent(n.cluster_id),t.export_id=decodeURIComponent(n.export_id),e.push(t.nfsService.get(t.cluster_id,t.export_id)),t.getData(e)}):this.getData(e)},t.prototype.getData=function(t){var e=this;Object(Sa.a)(t).subscribe(function(t){e.resolveDaemons(t[0]),e.resolvefsals(t[1]),e.resolveClients(t[2]),e.resolveFilesystems(t[3]),t[4]&&e.resolveModel(t[4])})},t.prototype.createForm=function(){this.nfsForm=new Ca.a({cluster_id:new $e.i("",{validators:[$e.A.required]}),daemons:new $e.i([]),fsal:new Ca.a({name:new $e.i("",{validators:[$e.A.required]}),user_id:new $e.i("",{validators:[ka.a.requiredIf({name:"CEPH"})]}),fs_name:new $e.i("",{validators:[ka.a.requiredIf({name:"CEPH"})]}),rgw_user_id:new $e.i("",{validators:[ka.a.requiredIf({name:"RGW"})]})}),path:new $e.i(""),protocolNfsv3:new $e.i(!0,{validators:[ka.a.requiredIf({protocolNfsv4:!1},function(t){return!t})]}),protocolNfsv4:new $e.i(!0,{validators:[ka.a.requiredIf({protocolNfsv3:!1},function(t){return!t})]}),tag:new $e.i(""),pseudo:new $e.i("",{validators:[ka.a.requiredIf({protocolNfsv4:!0}),$e.A.pattern("^/[^><|&()]*$")]}),access_type:new $e.i("RW",{validators:[$e.A.required]}),squash:new $e.i("",{validators:[$e.A.required]}),transportUDP:new $e.i(!0,{validators:[ka.a.requiredIf({transportTCP:!1},function(t){return!t})]}),transportTCP:new $e.i(!0,{validators:[ka.a.requiredIf({transportUDP:!1},function(t){return!t})]}),clients:this.formBuilder.array([]),security_label:new $e.i(!1),sec_label_xattr:new $e.i("security.selinux",ka.a.requiredIf({security_label:!0,"fsal.name":"CEPH"}))})},t.prototype.resolveModel=function(t){"CEPH"===t.fsal.name&&(t.sec_label_xattr=t.fsal.sec_label_xattr),this.daemonsSelections=Ft.map(this.allDaemons[t.cluster_id],function(e){return new Al.a(-1!==t.daemons.indexOf(e),e,"")}),this.daemonsSelections=this.daemonsSelections.slice(),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(function(t){var e="";t.addresses.forEach(function(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)},t.prototype.resolveDaemons=function(t){var e=this;t=Ft.sortBy(t,["daemon_id"]),this.allClusters=Ft(t).map(function(t){return t.cluster_id}).sortedUniq().value(),Ft.forEach(this.allClusters,function(t){e.allDaemons[t]=[]}),Ft.forEach(t,function(t){e.allDaemons[t.cluster_id].push(t.daemon_id)});var n=Ft.isArray(this.allClusters)&&1===this.allClusters.length;this.isDefaultCluster=n&&"_default_"===this.allClusters[0],n&&(this.nfsForm.patchValue({cluster_id:this.allClusters[0]}),this.onClusterChange())},t.prototype.resolvefsals=function(t){var e=this;t.forEach(function(t){var n=e.nfsService.nfsFsal.find(function(e){return t===e.value});Ft.isObjectLike(n)&&(e.allFsals.push(n),"RGW"===n.value&&e.rgwUserService.list().subscribe(function(t){t.forEach(function(t){0===t.suspended&&t.keys.length>0&&e.allRgwUsers.push(t.user_id)})}))}),1===this.allFsals.length&&Ft.isUndefined(this.nfsForm.getValue("fsal"))&&this.nfsForm.patchValue({fsal:this.allFsals[0]})},t.prototype.resolveClients=function(t){this.allCephxClients=t},t.prototype.resolveFilesystems=function(t){this.allFsNames=t,1===t.length&&this.nfsForm.patchValue({fsal:{fs_name:t[0].name}})},t.prototype.fsalChangeHandler=function(){this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()}),this.setPathValidation(),this.cdRef.detectChanges()},t.prototype.setPathValidation=function(){"RGW"===this.nfsForm.getValue("name")?this.nfsForm.get("path").setValidators([$e.A.required,$e.A.pattern("^(/|[^/><|&()#?]+)$")]):this.nfsForm.get("path").setValidators([$e.A.required,$e.A.pattern("^/[^><|&()?]*$")])},t.prototype.rgwUserIdChangeHandler=function(){this.nfsForm.patchValue({pseudo:this._generatePseudo()})},t.prototype.getAccessTypeHelp=function(t){var e=this.nfsAccessType.find(function(e){if(t===e.value)return e});return Ft.isObjectLike(e)?e.help:""},t.prototype.getId=function(){return Ft.isString(this.nfsForm.getValue("cluster_id"))&&Ft.isString(this.nfsForm.getValue("path"))?this.nfsForm.getValue("cluster_id")+":"+this.nfsForm.getValue("path"):""},t.prototype.getPathTypeahead=function(t){return Ft.isString(t)&&"/"!==t?this.nfsService.lsDir(t):Object(Il.a)([])},t.prototype.pathChangeHandler=function(){var t=this;this.nfsForm.patchValue({pseudo:this._generatePseudo()});var e=this.nfsForm.getValue("path");this.getPathTypeahead(e).subscribe(function(n){t.isNewDirectory="/"!==e&&-1===n.paths.indexOf(e)})},t.prototype.bucketChangeHandler=function(){var t=this;this.nfsForm.patchValue({tag:this._generateTag(),pseudo:this._generatePseudo()});var e=this.nfsForm.getValue("path");this.getBucketTypeahead(e).subscribe(function(n){t.isNewBucket=""!==e&&-1===n.indexOf(e)})},t.prototype.getBucketTypeahead=function(t){var e=this.nfsForm.getValue("rgw_user_id");return Ft.isString(e)&&Ft.isString(t)&&"/"!==t&&""!==t?this.nfsService.buckets(e):Object(Il.a)([])},t.prototype._generateTag=function(){var 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},t.prototype._generatePseudo=function(){var 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",Ft.isString(this.nfsForm.getValue("path"))&&(t+=this.nfsForm.getValue("path"))):"RGW"===this.nfsForm.getValue("fsal")&&Ft.isString(this.nfsForm.getValue("rgw_user_id"))&&(t="/"+this.nfsForm.getValue("rgw_user_id"),Ft.isString(this.nfsForm.getValue("path"))&&(t+="/"+this.nfsForm.getValue("path")))),t},t.prototype.onClusterChange=function(){var t=this.nfsForm.getValue("cluster_id");this.daemonsSelections=Ft.map(this.allDaemons[t],function(t){return new Al.a(!1,t,"")}),this.daemonsSelections=this.daemonsSelections.slice(),this.nfsForm.patchValue({daemons:[]})},t.prototype.removeDaemon=function(t,e){this.daemonsSelections.forEach(function(t){t.name===e&&(t.selected=!1)});var n=this.nfsForm.get("daemons");return n.value.splice(t,1),n.setValue(n.value),!1},t.prototype.onDaemonSelection=function(){this.nfsForm.get("daemons").setValue(this.nfsForm.getValue("daemons"))},t.prototype.submitAction=function(){var t=this,e=this._buildRequest();this.taskWrapper.wrapTaskAroundCall(this.isEdit?{task:new Yu.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 Yu.a("nfs/create",{path:e.path,fsal:e.fsal,cluster_id:e.cluster_id}),call:this.nfsService.create(e)}).subscribe(void 0,function(){return t.nfsForm.setErrors({cdSubmitButton:!0})},function(){return t.router.navigate(["/nfs"])})},t.prototype._buildRequest=function(){var t=Ft.cloneDeep(this.nfsForm.value);return(Ft.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(function(e){e.addresses=Ft.isString(e.addresses)?Ft(e.addresses).split(/[ ,]+/).uniq().filter(function(t){return""!==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},t}(),Ll=a["\u0275crt"]({encapsulation:0,styles:[[".cd-mb[_ngcontent-%COMP%]{margin-bottom:10px}"]],data:{}});function Pl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Ml(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No cluster available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function jl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the cluster --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function ql(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Fl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function zl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","cluster_id"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cluster"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,9).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"change"===e&&(r=!1!==i.onClusterChange()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Pl)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ml)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,jl)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ql)),a["\u0275did"](21,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Fl)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("cluster_id",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"cluster_id"),t(e,15,0,null===n.allClusters),t(e,17,0,null!==n.allClusters&&0===n.allClusters.length),t(e,19,0,null!==n.allClusters&&n.allClusters.length>0),t(e,21,0,n.allClusters),t(e,23,0,n.nfsForm.showError("cluster_id",a["\u0275nov"](e.parent,4),"required"))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function Yl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"div",[["class","input-group cd-mb"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"input",[["class","form-control"],["disabled",""],["type","text"]],[[8,"value",0]],null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,"button",[["class","btn btn-default"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeDaemon(t.context.index,t.context.$implicit)&&a),a},null,null)),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-remove fa-fw"]],null,null,null,null,null))],null,function(t,e){t(e,2,0,e.context.$implicit)})}function Hl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Gl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No data pools available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Vl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the storage backend --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Bl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Ul(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Wl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Kl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No users available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function $l(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the object gateway user --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Zl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Xl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Jl(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","rgw_user_id"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Object Gateway User"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,9).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"change"===e&&(r=!1!==i.rgwUserIdChangeHandler()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Wl)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Kl)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,$l)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Zl)),a["\u0275did"](21,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Xl)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("rgw_user_id",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"rgw_user_id"),t(e,15,0,null===n.allRgwUsers),t(e,17,0,null!==n.allRgwUsers&&0===n.allRgwUsers.length),t(e,19,0,null!==n.allRgwUsers&&n.allRgwUsers.length>0),t(e,21,0,n.allRgwUsers),t(e,23,0,n.nfsForm.showError("rgw_user_id",a["\u0275nov"](e.parent,4),"required"))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function Ql(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function tc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No clients available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function ec(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the cephx client --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function nc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 ac(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function rc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","user_id"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CephFS User ID"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,9).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ql)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,tc)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ec)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,nc)),a["\u0275did"](21,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ac)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("user_id",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"user_id"),t(e,15,0,null===n.allCephxClients),t(e,17,0,null!==n.allCephxClients&&0===n.allCephxClients.length),t(e,19,0,null!==n.allCephxClients&&n.allCephxClients.length>0),t(e,21,0,n.allCephxClients),t(e,23,0,n.nfsForm.showError("user_id",a["\u0275nov"](e.parent,4),"required"))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function ic(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function oc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No CephFS filesystem available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function sc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the CephFS filesystem --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function uc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 lc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function cc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","fs_name"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CephFS Name"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,9).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"change"===e&&(r=!1!==i.rgwUserIdChangeHandler()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,ic)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,oc)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,sc)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,uc)),a["\u0275did"](21,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,lc)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("fs_name",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"fs_name"),t(e,15,0,null===n.allFsNames),t(e,17,0,null!==n.allFsNames&&0===n.allFsNames.length),t(e,19,0,null!==n.allFsNames&&n.allFsNames.length>0),t(e,21,0,n.allFsNames),t(e,23,0,n.nfsForm.showError("fs_name",a["\u0275nov"](e.parent,4),"required"))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function dc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function fc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,1)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,1)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,1)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](1,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](3,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](5,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){t(e,3,0,"sec_label_xattr")},function(t,e){t(e,0,0,a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending)})}function pc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function hc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,22,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,4,"label",[["class","col-sm-3 control-label"],["for","security_label"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Security Label"])),(t()(),a["\u0275and"](16777216,null,null,1,null,dc)),a["\u0275did"](7,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](8,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,11).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,11).onTouched()&&r),r},null,null)),a["\u0275did"](11,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](13,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](15,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](16,0,null,null,1,"label",[["for","security_label"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Enable security label"])),(t()(),a["\u0275eld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,fc)),a["\u0275did"](20,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,pc)),a["\u0275did"](22,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("security_label",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,7,0,n.nfsForm.getValue("security_label")),t(e,13,0,"security_label"),t(e,20,0,n.nfsForm.getValue("security_label")),t(e,22,0,n.nfsForm.showError("sec_label_xattr",a["\u0275nov"](e.parent,4),"required"))},function(t,e){t(e,10,0,a["\u0275nov"](e,15).ngClassUntouched,a["\u0275nov"](e,15).ngClassTouched,a["\u0275nov"](e,15).ngClassPristine,a["\u0275nov"](e,15).ngClassDirty,a["\u0275nov"](e,15).ngClassValid,a["\u0275nov"](e,15).ngClassInvalid,a["\u0275nov"](e,15).ngClassPending)})}function gc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function mc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Path need to start with a '/' and can be followed by a word"]))],null,null)}function bc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["New directory will be created"]))],null,null)}function yc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","path"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CephFS Path"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,16777216,null,null,6,"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]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["\u0275nov"](t,9)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionEnd(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,14).onInput(n)&&r),"keyup"===e&&(r=!1!==a["\u0275nov"](t,14).onChange(n)&&r),"click"===e&&(r=!1!==a["\u0275nov"](t,14).onFocus()&&r),"focus"===e&&(r=!1!==a["\u0275nov"](t,14).onFocus()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,14).onBlur()&&r),"keydown"===e&&(r=!1!==a["\u0275nov"](t,14).onKeydown(n)&&r),"typeaheadOnSelect"===e&&(r=!1!==i.pathChangeHandler()&&r),"blur"===e&&(r=!1!==i.pathChangeHandler()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),a["\u0275did"](14,212992,null,0,pl,[$e.q,a.ElementRef,a.ViewContainerRef,a.Renderer2,fl,Ct.a,a.ChangeDetectorRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),(t()(),a["\u0275and"](16777216,null,null,1,null,gc)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,mc)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,bc)),a["\u0275did"](20,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"path"),t(e,14,0,n.pathDataSource),t(e,16,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4),"required")),t(e,18,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4),"pattern")),t(e,20,0,n.isNewDirectory&&!n.nfsForm.showError("path",a["\u0275nov"](e.parent,4)))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function vc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function _c(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Path can only be a single '/' or a word"]))],null,null)}function xc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["New bucket will be created"]))],null,null)}function Tc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,20,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","path"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Path"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,13,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,16777216,null,null,6,"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]],[[null,"typeaheadOnSelect"],[null,"blur"],[null,"input"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["\u0275nov"](t,9)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,9).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,9)._compositionEnd(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,14).onInput(n)&&r),"keyup"===e&&(r=!1!==a["\u0275nov"](t,14).onChange(n)&&r),"click"===e&&(r=!1!==a["\u0275nov"](t,14).onFocus()&&r),"focus"===e&&(r=!1!==a["\u0275nov"](t,14).onFocus()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,14).onBlur()&&r),"keydown"===e&&(r=!1!==a["\u0275nov"](t,14).onKeydown(n)&&r),"typeaheadOnSelect"===e&&(r=!1!==i.bucketChangeHandler()&&r),"blur"===e&&(r=!1!==i.bucketChangeHandler()&&r),r},null,null)),a["\u0275did"](9,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](11,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](13,16384,null,0,$e.r,[[4,$e.q]],null,null),a["\u0275did"](14,212992,null,0,pl,[$e.q,a.ElementRef,a.ViewContainerRef,a.Renderer2,fl,Ct.a,a.ChangeDetectorRef],{typeahead:[0,"typeahead"]},{typeaheadOnSelect:"typeaheadOnSelect"}),(t()(),a["\u0275and"](16777216,null,null,1,null,vc)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,_c)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,xc)),a["\u0275did"](20,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,11,0,"path"),t(e,14,0,n.bucketDataSource),t(e,16,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4),"required")),t(e,18,0,n.nfsForm.showError("path",a["\u0275nov"](e.parent,4),"pattern")),t(e,20,0,n.isNewBucket&&!n.nfsForm.showError("path",a["\u0275nov"](e.parent,4)))},function(t,e){t(e,8,0,a["\u0275nov"](e,13).ngClassUntouched,a["\u0275nov"](e,13).ngClassTouched,a["\u0275nov"](e,13).ngClassPristine,a["\u0275nov"](e,13).ngClassDirty,a["\u0275nov"](e,13).ngClassValid,a["\u0275nov"](e,13).ngClassInvalid,a["\u0275nov"](e,13).ngClassPending)})}function wc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Sc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,13,"label",[["class","col-sm-3 control-label"],["for","tag"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFS Tag"])),(t()(),a["\u0275eld"](4,0,null,null,10,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](5,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275eld"](6,0,null,0,4,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Alternative access for "])),(t()(),a["\u0275eld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFS v3"])),(t()(),a["\u0275ted"](-1,null,[" mounts (it must not have a leading /)."])),(t()(),a["\u0275eld"](11,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz)."])),(t()(),a["\u0275eld"](13,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["By using different Tag options, the same Path may be exported multiple times."])),(t()(),a["\u0275eld"](15,0,null,null,6,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,17)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,17).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,17)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,17)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](17,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](19,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](21,16384,null,0,$e.r,[[4,$e.q]],null,null)],function(t,e){t(e,19,0,"tag")},function(t,e){t(e,16,0,a["\u0275nov"](e,21).ngClassUntouched,a["\u0275nov"](e,21).ngClassTouched,a["\u0275nov"](e,21).ngClassPristine,a["\u0275nov"](e,21).ngClassDirty,a["\u0275nov"](e,21).ngClassValid,a["\u0275nov"](e,21).ngClassInvalid,a["\u0275nov"](e,21).ngClassPending)})}function Oc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Cc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or )."]))],null,null)}function kc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,29,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,15,"label",[["class","col-sm-3 control-label"],["for","pseudo"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Pseudo"])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,11,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](8,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275eld"](9,0,null,0,7,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The position that this "])),(t()(),a["\u0275eld"](11,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFS v4"])),(t()(),a["\u0275ted"](-1,null,[" export occupies in the "])),(t()(),a["\u0275eld"](14,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Pseudo FS"])),(t()(),a["\u0275ted"](-1,null,[" (it must be unique)."])),(t()(),a["\u0275eld"](17,0,null,0,1,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["By using different Pseudo options, the same Path may be exported multiple times."])),(t()(),a["\u0275eld"](19,0,null,null,10,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](20,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,21)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,21).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,21)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,21)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](21,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](23,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](25,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Oc)),a["\u0275did"](27,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Cc)),a["\u0275did"](29,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.nfsForm.showError("pseudo",a["\u0275nov"](e.parent,4)));t(e,1,0,"form-group",r),t(e,23,0,"pseudo"),t(e,27,0,n.nfsForm.showError("pseudo",a["\u0275nov"](e.parent,4),"required")),t(e,29,0,n.nfsForm.showError("pseudo",a["\u0275nov"](e.parent,4),"pattern"))},function(t,e){t(e,20,0,a["\u0275nov"](e,25).ngClassUntouched,a["\u0275nov"](e,25).ngClassTouched,a["\u0275nov"](e,25).ngClassPristine,a["\u0275nov"](e,25).ngClassDirty,a["\u0275nov"](e,25).ngClassValid,a["\u0275nov"](e,25).ngClassInvalid,a["\u0275nov"](e,25).ngClassPending)})}function Ic(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Dc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No access type available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Rc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select the access type --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Nc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 Ac(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,1,0,n.getAccessTypeHelp(n.nfsForm.getValue("access_type")))})}function Ec(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Lc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["Loading..."]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Pc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["-- No squash available --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function Mc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[["value",""]],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](-1,null,["--Select what kind of user id squashing is performed --"]))],function(t,e){t(e,1,0,""),t(e,2,0,"")},null)}function jc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 qc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function Fc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Required field"]))],null,null)}function zc(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{nfsClients:0}),(t()(),a["\u0275eld"](1,0,null,null,189,"div",[["class","col-sm-12 col-lg-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,188,"form",[["class","form-horizontal"],["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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,4).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,4).onReset()&&r),r},null,null)),a["\u0275did"](3,16384,null,0,$e.D,[],null,null),a["\u0275did"](4,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](6,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](7,0,null,null,183,"div",[["class","panel panel-default"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,2,"div",[["class","panel-heading"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,1,"h3",[["class","panel-title"]],null,null,null,null,null)),(t()(),a["\u0275ted"](10,null,["NFS export ",""])),(t()(),a["\u0275eld"](11,0,null,null,171,"div",[["class","panel-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,zl)),a["\u0275did"](13,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](14,0,null,null,15,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](15,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](16,{"has-error":0}),(t()(),a["\u0275eld"](17,0,null,null,2,"label",[["class","col-sm-3 control-label"],["for","daemons"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Daemons"])),(t()(),a["\u0275eld"](20,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Yl)),a["\u0275did"](22,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](23,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](24,0,null,null,5,"div",[["class","col-md-12"]],null,null,null,null,null)),(t()(),a["\u0275eld"](25,0,null,null,4,"cd-select",[["elemClass","btn btn-default pull-right"]],null,[[null,"selection"]],function(t,e,n){var a=!0;return"selection"===e&&(a=!1!==t.component.onDaemonSelection()&&a),a},gl.b,gl.a)),a["\u0275did"](26,638976,null,0,ml.a,[Kt.a],{elemClass:[0,"elemClass"],data:[1,"data"],options:[2,"options"],messages:[3,"messages"]},{selection:"selection"}),(t()(),a["\u0275eld"](27,0,null,0,0,"i",[["class","fa fa-fw fa-plus"]],null,null,null,null,null)),(t()(),a["\u0275eld"](28,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Add daemon"])),(t()(),a["\u0275eld"](30,0,null,null,33,"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)),a["\u0275did"](31,212992,null,0,$e.m,[[3,$e.d],[8,null],[8,null]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.m]),a["\u0275did"](33,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](34,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](35,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](36,{"has-error":0}),(t()(),a["\u0275eld"](37,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","name"]],null,null,null,null,null)),(t()(),a["\u0275eld"](38,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Storage Backend"])),(t()(),a["\u0275eld"](40,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](41,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](42,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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,43).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,43).onTouched()&&r),"change"===e&&(r=!1!==i.fsalChangeHandler()&&r),r},null,null)),a["\u0275did"](43,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](45,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](47,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Hl)),a["\u0275did"](49,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Gl)),a["\u0275did"](51,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Vl)),a["\u0275did"](53,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Bl)),a["\u0275did"](55,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ul)),a["\u0275did"](57,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Jl)),a["\u0275did"](59,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,rc)),a["\u0275did"](61,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,cc)),a["\u0275did"](63,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,hc)),a["\u0275did"](65,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,yc)),a["\u0275did"](67,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Tc)),a["\u0275did"](69,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](70,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](71,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](72,{"has-error":0}),(t()(),a["\u0275eld"](73,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","protocols"]],null,null,null,null,null)),(t()(),a["\u0275eld"](74,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFS Protocol"])),(t()(),a["\u0275eld"](76,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](77,0,null,null,20,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](78,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](79,0,null,null,5,"input",[["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,80).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,80).onTouched()&&r),r},null,null)),a["\u0275did"](80,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](82,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](84,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](85,0,null,null,1,"label",[["for","protocolNfsv3"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFSv3"])),(t()(),a["\u0275eld"](87,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](88,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,89).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,89).onTouched()&&r),r},null,null)),a["\u0275did"](89,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](91,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](93,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](94,0,null,null,1,"label",[["for","protocolNfsv4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["NFSv4"])),(t()(),a["\u0275and"](16777216,null,null,1,null,wc)),a["\u0275did"](97,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Sc)),a["\u0275did"](99,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,kc)),a["\u0275did"](101,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](102,0,null,null,25,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](103,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](104,{"has-error":0}),(t()(),a["\u0275eld"](105,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","access_type"]],null,null,null,null,null)),(t()(),a["\u0275eld"](106,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Access Type"])),(t()(),a["\u0275eld"](108,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](109,0,null,null,18,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](110,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,111).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,111).onTouched()&&r),r},null,null)),a["\u0275did"](111,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](113,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](115,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ic)),a["\u0275did"](117,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Dc)),a["\u0275did"](119,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Rc)),a["\u0275did"](121,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Nc)),a["\u0275did"](123,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ac)),a["\u0275did"](125,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ec)),a["\u0275did"](127,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](128,0,null,null,23,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](129,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](130,{"has-error":0}),(t()(),a["\u0275eld"](131,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","squash"]],null,null,null,null,null)),(t()(),a["\u0275eld"](132,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Squash"])),(t()(),a["\u0275eld"](134,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](135,0,null,null,16,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](136,0,null,null,13,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,137).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,137).onTouched()&&r),r},null,null)),a["\u0275did"](137,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](139,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](141,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Lc)),a["\u0275did"](143,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Pc)),a["\u0275did"](145,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Mc)),a["\u0275did"](147,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,jc)),a["\u0275did"](149,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,qc)),a["\u0275did"](151,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](152,0,null,null,28,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](153,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](154,{"has-error":0}),(t()(),a["\u0275eld"](155,0,null,null,3,"label",[["class","col-sm-3 control-label"],["for","transports"]],null,null,null,null,null)),(t()(),a["\u0275eld"](156,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Transport Protocol"])),(t()(),a["\u0275eld"](158,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](159,0,null,null,21,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](160,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](161,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,162).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,162).onTouched()&&r),r},null,null)),a["\u0275did"](162,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](164,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](166,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](167,0,null,null,1,"label",[["for","transportUDP"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["UDP"])),(t()(),a["\u0275eld"](169,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](170,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,171).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,171).onTouched()&&r),r},null,null)),a["\u0275did"](171,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](173,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](175,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](176,0,null,null,1,"label",[["for","transportTCP"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["TCP"])),(t()(),a["\u0275and"](16777216,null,null,1,null,Fc)),a["\u0275did"](179,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](180,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](181,0,null,null,1,"cd-nfs-form-client",[],null,null,null,kl,vl)),a["\u0275did"](182,49152,[[1,4],["nfsClients",4]],0,yl,[zu,Kt.a],{form:[0,"form"]},null),(t()(),a["\u0275eld"](183,0,null,null,7,"div",[["class","panel-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](184,0,null,null,6,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](185,0,null,null,3,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a},_r.b,_r.a)),a["\u0275did"](186,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),a["\u0275eld"](187,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Submit"])),(t()(),a["\u0275eld"](189,0,null,null,1,"cd-back-button",[],null,null,null,Tr.b,Tr.a)),a["\u0275did"](190,49152,null,0,wr.a,[L.Location,Ra.b],null,null)],function(t,e){var n=e.component;t(e,4,0,n.nfsForm),t(e,13,0,!n.isDefaultCluster);var r=t(e,16,0,n.nfsForm.showError("daemons",a["\u0275nov"](e,4)));t(e,15,0,"form-group",r),t(e,22,0,n.nfsForm.getValue("daemons")),t(e,26,0,"btn btn-default pull-right",n.nfsForm.get("daemons").value,n.daemonsSelections,n.daemonsMessages),t(e,31,0,"fsal");var i=t(e,36,0,n.nfsForm.showError("name",a["\u0275nov"](e,4)));t(e,35,0,"form-group",i),t(e,45,0,"name"),t(e,49,0,null===n.allFsals),t(e,51,0,null!==n.allFsals&&0===n.allFsals.length),t(e,53,0,null!==n.allFsals&&n.allFsals.length>0),t(e,55,0,n.allFsals),t(e,57,0,n.nfsForm.showError("name",a["\u0275nov"](e,4),"required")),t(e,59,0,"RGW"===n.nfsForm.getValue("name")),t(e,61,0,"CEPH"===n.nfsForm.getValue("name")),t(e,63,0,"CEPH"===n.nfsForm.getValue("name")),t(e,65,0,"CEPH"===n.nfsForm.getValue("name")),t(e,67,0,"CEPH"===n.nfsForm.getValue("name")),t(e,69,0,"RGW"===n.nfsForm.getValue("name"));var o=t(e,72,0,n.nfsForm.showError("protocolNfsv3",a["\u0275nov"](e,4))||n.nfsForm.showError("protocolNfsv4",a["\u0275nov"](e,4)));t(e,71,0,"form-group",o),t(e,82,0,"protocolNfsv3"),t(e,91,0,"protocolNfsv4"),t(e,97,0,n.nfsForm.showError("protocolNfsv3",a["\u0275nov"](e,4),"required")||n.nfsForm.showError("protocolNfsv4",a["\u0275nov"](e,4),"required")),t(e,99,0,n.nfsForm.getValue("protocolNfsv3")),t(e,101,0,n.nfsForm.getValue("protocolNfsv4"));var s=t(e,104,0,n.nfsForm.showError("access_type",a["\u0275nov"](e,4)));t(e,103,0,"form-group",s),t(e,113,0,"access_type"),t(e,117,0,null===n.nfsAccessType),t(e,119,0,null!==n.nfsAccessType&&0===n.nfsAccessType.length),t(e,121,0,null!==n.nfsAccessType&&n.nfsAccessType.length>0),t(e,123,0,n.nfsAccessType),t(e,125,0,n.nfsForm.getValue("access_type")),t(e,127,0,n.nfsForm.showError("access_type",a["\u0275nov"](e,4),"required"));var u=t(e,130,0,n.nfsForm.showError("squash",a["\u0275nov"](e,4)));t(e,129,0,"form-group",u),t(e,139,0,"squash"),t(e,143,0,null===n.nfsSquash),t(e,145,0,null!==n.nfsSquash&&0===n.nfsSquash.length),t(e,147,0,null!==n.nfsSquash&&n.nfsSquash.length>0),t(e,149,0,n.nfsSquash),t(e,151,0,n.nfsForm.showError("squash",a["\u0275nov"](e,4),"required"));var l=t(e,154,0,n.nfsForm.showError("transportUDP",a["\u0275nov"](e,4))||n.nfsForm.showError("transportTCP",a["\u0275nov"](e,4)));t(e,153,0,"form-group",l),t(e,164,0,"transportUDP"),t(e,173,0,"transportTCP"),t(e,179,0,n.nfsForm.showError("transportUDP",a["\u0275nov"](e,4),"required")||n.nfsForm.showError("transportTCP",a["\u0275nov"](e,4),"required")),t(e,182,0,n.nfsForm),t(e,186,0,a["\u0275nov"](e,4),"button")},function(t,e){var n=e.component;t(e,2,0,a["\u0275nov"](e,6).ngClassUntouched,a["\u0275nov"](e,6).ngClassTouched,a["\u0275nov"](e,6).ngClassPristine,a["\u0275nov"](e,6).ngClassDirty,a["\u0275nov"](e,6).ngClassValid,a["\u0275nov"](e,6).ngClassInvalid,a["\u0275nov"](e,6).ngClassPending),t(e,10,0,n.export_id?n.cluster_id+":"+n.export_id:""),t(e,30,0,a["\u0275nov"](e,33).ngClassUntouched,a["\u0275nov"](e,33).ngClassTouched,a["\u0275nov"](e,33).ngClassPristine,a["\u0275nov"](e,33).ngClassDirty,a["\u0275nov"](e,33).ngClassValid,a["\u0275nov"](e,33).ngClassInvalid,a["\u0275nov"](e,33).ngClassPending),t(e,42,0,a["\u0275nov"](e,47).ngClassUntouched,a["\u0275nov"](e,47).ngClassTouched,a["\u0275nov"](e,47).ngClassPristine,a["\u0275nov"](e,47).ngClassDirty,a["\u0275nov"](e,47).ngClassValid,a["\u0275nov"](e,47).ngClassInvalid,a["\u0275nov"](e,47).ngClassPending),t(e,79,0,a["\u0275nov"](e,84).ngClassUntouched,a["\u0275nov"](e,84).ngClassTouched,a["\u0275nov"](e,84).ngClassPristine,a["\u0275nov"](e,84).ngClassDirty,a["\u0275nov"](e,84).ngClassValid,a["\u0275nov"](e,84).ngClassInvalid,a["\u0275nov"](e,84).ngClassPending),t(e,88,0,a["\u0275nov"](e,93).ngClassUntouched,a["\u0275nov"](e,93).ngClassTouched,a["\u0275nov"](e,93).ngClassPristine,a["\u0275nov"](e,93).ngClassDirty,a["\u0275nov"](e,93).ngClassValid,a["\u0275nov"](e,93).ngClassInvalid,a["\u0275nov"](e,93).ngClassPending),t(e,110,0,a["\u0275nov"](e,115).ngClassUntouched,a["\u0275nov"](e,115).ngClassTouched,a["\u0275nov"](e,115).ngClassPristine,a["\u0275nov"](e,115).ngClassDirty,a["\u0275nov"](e,115).ngClassValid,a["\u0275nov"](e,115).ngClassInvalid,a["\u0275nov"](e,115).ngClassPending),t(e,136,0,a["\u0275nov"](e,141).ngClassUntouched,a["\u0275nov"](e,141).ngClassTouched,a["\u0275nov"](e,141).ngClassPristine,a["\u0275nov"](e,141).ngClassDirty,a["\u0275nov"](e,141).ngClassValid,a["\u0275nov"](e,141).ngClassInvalid,a["\u0275nov"](e,141).ngClassPending),t(e,161,0,a["\u0275nov"](e,166).ngClassUntouched,a["\u0275nov"](e,166).ngClassTouched,a["\u0275nov"](e,166).ngClassPristine,a["\u0275nov"](e,166).ngClassDirty,a["\u0275nov"](e,166).ngClassValid,a["\u0275nov"](e,166).ngClassInvalid,a["\u0275nov"](e,166).ngClassPending),t(e,170,0,a["\u0275nov"](e,175).ngClassUntouched,a["\u0275nov"](e,175).ngClassTouched,a["\u0275nov"](e,175).ngClassPristine,a["\u0275nov"](e,175).ngClassDirty,a["\u0275nov"](e,175).ngClassValid,a["\u0275nov"](e,175).ngClassInvalid,a["\u0275nov"](e,175).ngClassPending)})}function Yc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-nfs-form",[],null,null,null,zc,Ll)),a["\u0275did"](1,114688,null,0,El,[q.a,zu,kt.a,kt.l,Rl.a,La.a,Hu.a,a.ChangeDetectorRef,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var Hc=a["\u0275ccf"]("cd-nfs-form",El,Yc,{},{},[]),Gc=function(){return function(){this.logoutUrl=window.location.origin+"/auth/saml2/slo"}}(),Vc=a["\u0275crt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Bc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,16,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,15,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Sorry, the user does not exist in Ceph."])),(t()(),a["\u0275eld"](4,0,null,null,4,"h4",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Return to "])),(t()(),a["\u0275eld"](6,0,null,null,1,"a",[["class","sso-logout"]],[[8,"href",4]],null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Login Page"])),(t()(),a["\u0275ted"](-1,null,[". You'll be logged out from the Identity Provider when you retry logging in."])),(t()(),a["\u0275eld"](9,0,null,null,0,"img",[["class","img-responsive center-block img-rounded"],["src","/assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[' "'])),(t()(),a["\u0275eld"](12,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Nautilus Octopus"])),(t()(),a["\u0275ted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),a["\u0275eld"](15,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CC BY 2.0"]))],null,function(t,e){t(e,6,0,e.component.logoutUrl)})}function Uc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-sso-not-found",[],null,null,null,Bc,Vc)),a["\u0275did"](1,49152,null,0,Gc,[],null,null)],null,null)}var Wc,Kc=a["\u0275ccf"]("cd-sso-not-found",Gc,Uc,{},{},[]),$c=n("lHUG");!function(t){t.cs="\u010ce\u0161tina",t["de-DE"]="Deutsch",t["en-US"]="English",t["es-ES"]="Espa\xf1ol",t["fr-FR"]="Fran\xe7ais",t["id-ID"]="Bahasa Indonesia",t["it-IT"]="Italiano",t["ja-JP"]="\u65e5\u672c\u8a9e",t["ko-KR"]="\ud55c\uad6d\uc5b4",t["pl-PL"]="Polski",t["pt-BR"]="Portugu\xeas",t["zh-CN"]="\u4e2d\u6587 (\u7b80\u4f53)",t["zh-TW"]="\u4e2d\u6587 (\u7e41\u9ad4\uff09"}(Wc||(Wc={}));var Zc={cs:$c.a,de:$c.b,es:$c.e,fr:$c.g,id:$c.m,it:$c.x,ja:$c.y,ko:$c.z,pl:$c.B,pt:$c.C,zh:$c.G},Xc=function(){function t(t){this.localeService=t,this.isDropdown=!0,this.supportedLanguages=Wc}return t.prototype.ngOnInit=function(){this.selectedLanguage=R.getLocale(),this.defineUsedLanguage()},t.prototype.defineUsedLanguage=function(){var t=this.selectedLanguage.slice(0,2);t in Zc&&(Object($c.c)(t,Zc[t]),this.localeService.use(t))},t.prototype.changeLanguage=function(t){R.setLocale(t),window.location.reload()},t}(),Jc=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Qc(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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()(),a["\u0275ted"](2,null,["",""]))],null,function(t,e){t(e,2,0,e.context.$implicit.value)})}function td(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Qc)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.KeyValuePipe,[a.KeyValueDiffers])],function(t,e){var n=e.component;t(e,2,0,a["\u0275unv"](e,2,0,a["\u0275nov"](e,3).transform(n.supportedLanguages)))},null)}function ed(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,8,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),(t()(),a["\u0275eld"](3,0,null,null,3,"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"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,4).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,4).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,4).onEsc()&&r),r},null,null)),a["\u0275did"](4,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275ted"](5,null,[" "," "])),(t()(),a["\u0275eld"](6,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,td)),a["\u0275did"](8,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0)},function(t,e){var n=e.component;t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,3,0,!0,a["\u0275nov"](e,4).isDisabled,a["\u0275nov"](e,4).isOpen),t(e,5,0,n.supportedLanguages[n.selectedLanguage])})}function nd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 ad(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"select",[["class","form-control"]],[[2,"ng-untouched",null],[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,"change"],[null,"ngModelChange"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,1).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).onTouched()&&r),"change"===e&&(r=!1!==i.changeLanguage(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.selectedLanguage=n)&&r),r},null,null)),a["\u0275did"](1,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](3,671744,null,0,$e.u,[[8,null],[8,null],[8,null],[6,$e.p]],{model:[0,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](5,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,2,null,nd)),a["\u0275did"](7,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.KeyValuePipe,[a.KeyValueDiffers])],function(t,e){var n=e.component;t(e,3,0,n.selectedLanguage),t(e,7,0,a["\u0275unv"](e,7,0,a["\u0275nov"](e,8).transform(n.supportedLanguages)))},function(t,e){t(e,0,0,a["\u0275nov"](e,5).ngClassUntouched,a["\u0275nov"](e,5).ngClassTouched,a["\u0275nov"](e,5).ngClassPristine,a["\u0275nov"](e,5).ngClassDirty,a["\u0275nov"](e,5).ngClassValid,a["\u0275nov"](e,5).ngClassInvalid,a["\u0275nov"](e,5).ngClassPending)})}function rd(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,ed)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ad)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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 id=n("IZUe"),od=n("D4zM"),sd=n("DSvg"),ud=function(){return function(){}}(),ld=function(){function t(t,e,n,a){this.authService=t,this.authStorageService=e,this.bsModalService=n,this.router=a,this.model=new ud,this.isLoginActive=!1}return t.prototype.ngOnInit=function(){var t=this;if(this.authStorageService.isLoggedIn())this.router.navigate([""]);else{for(var e=this.bsModalService.getModalsCount(),n=1;n<=e;n++)this.bsModalService.hide(n);var a=null;if(-1!==window.location.hash.indexOf("access_token=")){a=window.location.hash.split("access_token=")[1];var r=window.location.toString();window.history.replaceState({},document.title,r.split("?")[0])}this.authService.check(a).subscribe(function(e){e.login_url?"#/login"===e.login_url?t.isLoginActive=!0:window.location.replace(e.login_url):(t.authStorageService.set(e.username,a,e.permissions),t.router.navigate([""]))})}},t.prototype.login=function(){var t=this;this.authService.login(this.model).then(function(){t.router.navigate([""])})},t}(),cd=a["\u0275crt"]({encapsulation:0,styles:[[".login{height:100%}  .login .row{color:#fff;background-color:#374249}  .login h1{margin-top:0;margin-bottom:30px}  .login .btn-password,   .login .form-control{color:#fff;background-color:#555}  .login .btn-password:focus{outline-color:#2b99a8}  .login .checkbox-primary input[type=checkbox]:checked+label::before,   .login .checkbox-primary input[type=radio]:checked+label::before{background-color:#2b99a8;border-color:#2b99a8}"]],data:{}});function dd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Username is required"]))],null,null)}function fd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"div",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Password is required"]))],null,null)}function pd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,46,"div",[["class","login"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,45,"div",[["class","row full-height vertical-align"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"div",[["class","col-sm-6 hidden-xs"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"img",[["alt","Ceph"],["class","pull-right"],["src","assets/Ceph_Logo_Stacked_RGB_White_120411_fa_256x256.png"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,42,"div",[["class","col-xs-10 col-sm-4 col-lg-3 col-xs-offset-1 col-sm-offset-0 col-md-offset-0 col-lg-offset-0"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Welcome to Ceph!"])),(t()(),a["\u0275eld"](7,0,null,null,39,"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 r=!0,i=t.component;return"submit"===e&&(r=!1!==a["\u0275nov"](t,9).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,9).onReset()&&r),"ngSubmit"===e&&(r=!1!==i.login()&&r),r},null,null)),a["\u0275did"](8,16384,null,0,$e.D,[],null,null),a["\u0275did"](9,4210688,[["loginForm",4]],0,$e.t,[[8,null],[8,null]],null,{ngSubmit:"ngSubmit"}),a["\u0275prd"](2048,null,$e.d,null,[$e.t]),a["\u0275did"](11,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](12,0,null,null,2,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,1,"cd-language-selector",[],null,null,null,rd,Jc)),a["\u0275did"](14,114688,null,0,Xc,[ti.f],{isDropdown:[0,"isDropdown"]},null),(t()(),a["\u0275eld"](15,0,null,null,13,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),a["\u0275did"](16,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](17,{"has-error":0}),(t()(),a["\u0275eld"](18,0,null,null,8,"input",[["autofocus",""],["class","form-control"],["name","username"],["placeholder","Enter your username..."],["required",""],["type","text"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["\u0275nov"](t,19)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,19).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,19)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.model.username=n)&&r),r},null,null)),a["\u0275did"](19,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](20,16384,null,0,$e.y,[],{required:[0,"required"]},null),a["\u0275prd"](1024,null,$e.o,function(t){return[t]},[$e.y]),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](23,671744,[["username",4]],0,$e.u,[[2,$e.d],[6,$e.o],[8,null],[6,$e.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](25,16384,null,0,$e.r,[[4,$e.q]],null,null),a["\u0275did"](26,4210688,null,0,id.a,[a.ElementRef],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,dd)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](29,0,null,null,16,"div",[["class","form-group has-feedback"]],null,null,null,null,null)),a["\u0275did"](30,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](31,{"has-error":0}),(t()(),a["\u0275eld"](32,0,null,null,11,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](33,0,null,null,7,"input",[["class","form-control"],["id","password"],["name","password"],["placeholder","Enter your password..."],["required",""],["type","password"]],[[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]],[[null,"ngModelChange"],[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0,i=t.component;return"input"===e&&(r=!1!==a["\u0275nov"](t,34)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,34).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,34)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,34)._compositionEnd(n.target.value)&&r),"ngModelChange"===e&&(r=!1!==(i.model.password=n)&&r),r},null,null)),a["\u0275did"](34,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](35,16384,null,0,$e.y,[],{required:[0,"required"]},null),a["\u0275prd"](1024,null,$e.o,function(t){return[t]},[$e.y]),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](38,671744,[["password",4]],0,$e.u,[[2,$e.d],[6,$e.o],[8,null],[6,$e.p]],{name:[0,"name"],model:[1,"model"]},{update:"ngModelChange"}),a["\u0275prd"](2048,null,$e.q,null,[$e.u]),a["\u0275did"](40,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](41,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](42,0,null,null,1,"button",[["cdPasswordButton","password"],["class","btn btn-default btn-password"],["type","button"]],null,[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,43).onClick()&&r),r},null,null)),a["\u0275did"](43,81920,null,0,od.a,[a.ElementRef,a.Renderer2],{cdPasswordButton:[0,"cdPasswordButton"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,fd)),a["\u0275did"](45,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](46,0,null,null,0,"input",[["class","btn btn-primary btn-block"],["type","submit"],["value","Login"]],[[8,"disabled",0]],null,null,null,null))],function(t,e){var n=e.component;t(e,14,0,!1);var r=t(e,17,0,(a["\u0275nov"](e,9).submitted||a["\u0275nov"](e,23).dirty)&&a["\u0275nov"](e,23).invalid);t(e,16,0,"form-group has-feedback",r),t(e,20,0,""),t(e,23,0,"username",n.model.username),t(e,28,0,(a["\u0275nov"](e,9).submitted||a["\u0275nov"](e,23).dirty)&&a["\u0275nov"](e,23).invalid);var i=t(e,31,0,(a["\u0275nov"](e,9).submitted||a["\u0275nov"](e,38).dirty)&&a["\u0275nov"](e,38).invalid);t(e,30,0,"form-group has-feedback",i),t(e,35,0,""),t(e,38,0,"password",n.model.password),t(e,43,0,"password"),t(e,45,0,(a["\u0275nov"](e,9).submitted||a["\u0275nov"](e,38).dirty)&&a["\u0275nov"](e,38).invalid)},function(t,e){t(e,7,0,a["\u0275nov"](e,11).ngClassUntouched,a["\u0275nov"](e,11).ngClassTouched,a["\u0275nov"](e,11).ngClassPristine,a["\u0275nov"](e,11).ngClassDirty,a["\u0275nov"](e,11).ngClassValid,a["\u0275nov"](e,11).ngClassInvalid,a["\u0275nov"](e,11).ngClassPending),t(e,18,0,a["\u0275nov"](e,20).required?"":null,a["\u0275nov"](e,25).ngClassUntouched,a["\u0275nov"](e,25).ngClassTouched,a["\u0275nov"](e,25).ngClassPristine,a["\u0275nov"](e,25).ngClassDirty,a["\u0275nov"](e,25).ngClassValid,a["\u0275nov"](e,25).ngClassInvalid,a["\u0275nov"](e,25).ngClassPending),t(e,33,0,a["\u0275nov"](e,35).required?"":null,a["\u0275nov"](e,40).ngClassUntouched,a["\u0275nov"](e,40).ngClassTouched,a["\u0275nov"](e,40).ngClassPristine,a["\u0275nov"](e,40).ngClassDirty,a["\u0275nov"](e,40).ngClassValid,a["\u0275nov"](e,40).ngClassInvalid,a["\u0275nov"](e,40).ngClassPending),t(e,46,0,a["\u0275nov"](e,9).invalid)})}function hd(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,pd)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.isLoginActive)},null)}function gd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-login",[],null,null,null,hd,cd)),a["\u0275did"](1,114688,null,0,ld,[sd.a,q.a,qa.b,kt.l],null,null)],function(t,e){t(e,1,0)},null)}var md=a["\u0275ccf"]("cd-login",ld,gd,{},{},[]),bd=function(){return function(){}}(),yd=a["\u0275crt"]({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 vd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,5,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Forbidden"])),(t()(),a["\u0275eld"](4,0,null,null,0,"i",[["class","fa fa-lock text-danger"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,1,"h2",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Sorry, you are not allowed to see what you were looking for."]))],null,null)}function _d(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-forbidden",[],null,null,null,vd,yd)),a["\u0275did"](1,49152,null,0,bd,[],null,null)],null,null)}var xd=a["\u0275ccf"]("cd-forbidden",bd,_d,{},{},[]),Td=function(){return function(){}}(),wd=a["\u0275crt"]({encapsulation:0,styles:[["h1[_ngcontent-%COMP%]{font-size:-webkit-xxx-large}*[_ngcontent-%COMP%]{font-family:monospace}img[_ngcontent-%COMP%]{width:50vw}"]],data:{}});function Sd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,10,"div",[["class","col-md-12 text-center"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,1,"h1",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Sorry, we could not find what you were looking for"])),(t()(),a["\u0275eld"](4,0,null,null,0,"img",[["class","img-responsive center-block img-rounded"],["src","/assets/1280px-Nautilus_Octopus.jpg"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,6,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[' "'])),(t()(),a["\u0275eld"](7,0,null,null,1,"a",[["href","https://www.flickr.com/photos/146401137@N06/40335060661"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Nautilus Octopus"])),(t()(),a["\u0275ted"](-1,null,['" by Jin Kemoole is licensed under '])),(t()(),a["\u0275eld"](10,0,null,null,1,"a",[["class","external text"],["href","https://creativecommons.org/licenses/by/2.0/"],["rel","nofollow"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["CC BY 2.0"]))],null,null)}function Od(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-not-found",[],null,null,null,Sd,wd)),a["\u0275did"](1,49152,null,0,Td,[],null,null)],null,null)}var Cd=a["\u0275ccf"]("cd-not-found",Td,Od,{},{},[]),kd=n("iutN"),Id=n("ES0t"),Dd=n("MdoF"),Rd=n("Xg1U"),Nd=n("z5nN"),Ad=n("EEJc"),Ed=n("PEr+"),Ld=n("a40w"),Pd=n("SjWX"),Md=n("Mxhz"),jd=function(){function t(t,e,n,a){this.modalRef=t,this.summaryService=e,this.userService=n,this.authStorageService=a,this.userPermission=this.authStorageService.getPermissions().user}return t.prototype.ngOnInit=function(){var t=this;this.copyright="Copyright(c) 2019 Ceph contributors.",this.projectConstants=Ra.c,this.hostAddr=window.location.hostname,this.modalVariables=this.setVariables(),this.subs=this.summaryService.subscribe(function(e){if(e){var n=e.version.replace("ceph version ","").split(" ");t.hostAddr=e.mgr_host.replace(/(^\w+:|^)\/\//,"").replace(/\/$/,""),t.versionNumber=n[0],t.versionHash=n[1],t.versionName=n.slice(2,n.length).join(" ")}})},t.prototype.ngOnDestroy=function(){this.subs.unsubscribe()},t.prototype.setVariables=function(){var t={};t.user=localStorage.getItem("dashboard_username"),t.role="user",this.userPermission.read&&this.userService.get(t.user).subscribe(function(e){t.role=e.roles});var e=Object(Pd.detect)();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},t}(),qd=a["\u0275crt"]({encapsulation:0,styles:[[".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-body[_ngcontent-%COMP%]{padding-left:80px;padding-right:80px}.modal-footer[_ngcontent-%COMP%]{border-top:none;padding:15px 80px 35px}h2[_ngcontent-%COMP%]{font-size:3em}.ceph-logo[_ngcontent-%COMP%]{width:10%}.list-unstyled[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{margin-top:5px}.modal-body[_ngcontent-%COMP%]{margin-top:0;padding-top:0}.modal-body[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{margin-top:0}"]],data:{}});function Fd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-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()(),a["\u0275eld"](2,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),(t()(),a["\u0275eld"](4,0,null,null,45,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"h2",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"img",[["class","ceph-logo"],["src","assets/Ceph_Logo_Stacked_RGB_120411_fa_348x348.png"]],[[8,"alt",0]],null,null,null,null)),(t()(),a["\u0275ted"](7,null,[" "," "])),(t()(),a["\u0275eld"](8,0,null,null,2,"h3",[],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](10,null,["",""])),(t()(),a["\u0275eld"](11,0,null,null,6,"div",[["class","product-versions"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Version"])),(t()(),a["\u0275eld"](14,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275ted"](15,null,[" "," "," "])),(t()(),a["\u0275eld"](16,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275ted"](17,null,[" "," "])),(t()(),a["\u0275eld"](18,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,30,"ul",[["class","list-unstyled"]],null,null,null,null,null)),(t()(),a["\u0275eld"](20,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](21,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Ceph Manager"])),(t()(),a["\u0275eld"](23,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](24,null,["",""])),(t()(),a["\u0275eld"](25,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](26,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["User"])),(t()(),a["\u0275eld"](28,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](29,null,["",""])),(t()(),a["\u0275eld"](30,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](31,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["User Role"])),(t()(),a["\u0275eld"](33,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](34,null,["",""])),(t()(),a["\u0275eld"](35,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](36,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Browser"])),(t()(),a["\u0275eld"](38,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](39,null,["",""])),(t()(),a["\u0275eld"](40,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](41,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Browser Version"])),(t()(),a["\u0275eld"](43,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](44,null,["",""])),(t()(),a["\u0275eld"](45,0,null,null,4,"li",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](46,0,null,null,1,"strong",[["class","col-xs-6 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Browser OS"])),(t()(),a["\u0275eld"](48,0,null,null,1,"span",[["class","col-xs-4 col-sm-4"]],null,null,null,null,null)),(t()(),a["\u0275ted"](49,null,["",""])),(t()(),a["\u0275eld"](50,0,null,null,2,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](51,0,null,null,1,"div",[["class","text-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](52,null,[" "," "," "]))],null,function(t,e){var n=e.component;t(e,6,0,a["\u0275inlineInterpolate"](1,"",n.projectConstants.organization,"")),t(e,7,0,n.projectConstants.organization),t(e,10,0,n.projectConstants.projectName),t(e,15,0,n.versionNumber,n.versionHash),t(e,17,0,n.versionName),t(e,24,0,n.hostAddr),t(e,29,0,n.modalVariables.user),t(e,34,0,n.modalVariables.role),t(e,39,0,n.modalVariables.browserName),t(e,44,0,n.modalVariables.browserVersion),t(e,49,0,n.modalVariables.browserOS),t(e,52,0,n.copyright,n.projectConstants.license)})}function zd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-about",[],null,null,null,Fd,qd)),a["\u0275did"](1,245760,null,0,jd,[qa.a,cn.a,Md.a,q.a],null,null)],function(t,e){t(e,1,0)},null)}var Yd=a["\u0275ccf"]("cd-about",jd,zd,{},{},[]),Hd=n("atuK"),Gd=a["\u0275crt"]({encapsulation:2,styles:[],data:{}});function Vd(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Bd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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 Ud(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,[[2,0],["liElements",1]],null,1,"li",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit)})}function Wd(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Kd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,[[2,0],["liElements",1]],null,4,"li",[],[[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()(),a["\u0275eld"](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()(),a["\u0275and"](16777216,null,null,2,null,Wd)),a["\u0275did"](3,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](4,{item:0,index:1,match:2,query:3})],function(t,e){var n=e.component,r=t(e,4,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,3,0,r,n.itemTemplate||a["\u0275nov"](e.parent.parent.parent,5))},function(t,e){t(e,0,0,e.component.isActive(e.parent.context.$implicit))})}function $d(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Ud)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Kd)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 Zd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,[[1,0],["ulElement",1]],null,2,"ul",[["class","dropdown-menu"]],[[4,"overflow-y",null],[4,"height",null]],null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,$d)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.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 Xd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"h6",[["class","dropdown-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit)})}function Jd(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,null,null,0))],null,null)}function Qd(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,[[2,0],["liElements",1]],null,3,"button",[["class","dropdown-item"]],[[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()(),a["\u0275and"](16777216,null,null,2,null,Jd)),a["\u0275did"](2,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](3,{item:0,index:1,match:2,query:3})],function(t,e){var n=e.component,r=t(e,3,0,e.parent.context.$implicit.item,e.parent.context.index,e.parent.context.$implicit,n.query);t(e,2,0,r,n.itemTemplate||a["\u0275nov"](e.parent.parent.parent,5))},function(t,e){t(e,0,0,e.component.isActive(e.parent.context.$implicit))})}function tf(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Xd)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Qd)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](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 ef(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,tf)),a["\u0275did"](1,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.matches)},null)}function nf(t){return a["\u0275vid"](0,[a["\u0275qud"](671088640,1,{ulElement:0}),a["\u0275qud"](671088640,2,{liElements:1}),(t()(),a["\u0275and"](16777216,null,null,2,null,Vd)),a["\u0275did"](3,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutletContext:[0,"ngTemplateOutletContext"],ngTemplateOutlet:[1,"ngTemplateOutlet"]},null),a["\u0275pod"](4,{matches:0,itemTemplate:1,query:2}),(t()(),a["\u0275and"](0,[["bsItemTemplate",2]],null,0,null,Bd)),(t()(),a["\u0275and"](0,[["bs3Template",2]],null,0,null,Zd)),(t()(),a["\u0275and"](0,[["bs4Template",2]],null,0,null,ef))],function(t,e){var n=e.component,r=t(e,4,0,n.matches,n.itemTemplate,n.query);t(e,3,0,r,n.optionsListTemplate||a["\u0275nov"](e,n.isBs4?7:6))},null)}function af(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"typeahead-container",[["class","dropdown open"],["style","position: absolute;display: block;"]],[[2,"dropdown-menu",null],[4,"overflow-y",null],[4,"height",null],[4,"visibility",null],[2,"dropup",null]],[[null,"mouseleave"],[null,"blur"]],function(t,e,n){var r=!0;return"mouseleave"===e&&(r=!1!==a["\u0275nov"](t,1).focusLost()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,1).focusLost()&&r),r},nf,Gd)),a["\u0275did"](1,49152,null,0,dl,[a.ElementRef,a.Renderer2],null,null)],null,function(t,e){t(e,0,0,a["\u0275nov"](e,1).isBs4,a["\u0275nov"](e,1).isBs4&&a["\u0275nov"](e,1).needScrollbar?"scroll":"visible",a["\u0275nov"](e,1).isBs4&&a["\u0275nov"](e,1).needScrollbar?a["\u0275nov"](e,1).guiHeight:"auto",a["\u0275nov"](e,1).typeaheadScrollable?"hidden":"visible",a["\u0275nov"](e,1).dropup)})}var rf=a["\u0275ccf"]("typeahead-container",dl,af,{},{},[]),of=n("ajRT"),sf=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function uf(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["Deep "]))],null,null)}function lf(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["deep "]))],null,null)}function cf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,10,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,9,"p",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["You are about to apply a "])),(t()(),a["\u0275eld"](3,0,null,null,3,null,null,null,null,null,null,null)),a["\u0275did"](4,16384,null,0,L.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,lf)),a["\u0275did"](6,278528,null,0,L.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,L.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275ted"](-1,null,["scrub to the OSD "])),(t()(),a["\u0275eld"](8,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](9,null,["",""])),(t()(),a["\u0275ted"](-1,null,["."]))],function(t,e){t(e,4,0,e.component.deep),t(e,6,0,"1")},function(t,e){t(e,9,0,e.component.selected[0].id)})}function df(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,23,"cd-modal",[],null,null,null,Ad.c,Ad.b)),a["\u0275did"](1,49152,null,0,of.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](2,0,null,0,6,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["OSDs "])),(t()(),a["\u0275eld"](4,0,null,null,3,null,null,null,null,null,null,null)),a["\u0275did"](5,16384,null,0,L.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,uf)),a["\u0275did"](7,278528,null,0,L.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,L.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275ted"](-1,null,["Scrub"])),(t()(),a["\u0275eld"](9,0,null,1,14,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,13,"form",[["class","form-horizontal"],["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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,12).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,12).onReset()&&r),r},null,null)),a["\u0275did"](11,16384,null,0,$e.D,[],null,null),a["\u0275did"](12,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](14,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](15,0,null,null,2,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,cf)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](18,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,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},_r.b,_r.a)),a["\u0275did"](20,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](-1,0,["Submit"])),(t()(),a["\u0275eld"](22,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Tr.b,Tr.a)),a["\u0275did"](23,49152,null,0,wr.a,[L.Location,Ra.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,1,0,n.bsModalRef),t(e,5,0,n.deep),t(e,7,0,"1"),t(e,12,0,n.scrubForm),t(e,17,0,1===n.selected.length),t(e,20,0,n.scrubForm),t(e,23,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,10,0,a["\u0275nov"](e,14).ngClassUntouched,a["\u0275nov"](e,14).ngClassTouched,a["\u0275nov"](e,14).ngClassPristine,a["\u0275nov"](e,14).ngClassDirty,a["\u0275nov"](e,14).ngClassValid,a["\u0275nov"](e,14).ngClassInvalid,a["\u0275nov"](e,14).ngClassPending)})}function ff(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-scrub-modal",[],null,null,null,df,sf)),a["\u0275did"](1,114688,null,0,Ma,[qa.a,ia,Ta.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var pf=a["\u0275ccf"]("cd-osd-scrub-modal",Ma,ff,{},{},[]),hf=a["\u0275crt"]({encapsulation:0,styles:[[".osd-modal[_ngcontent-%COMP%]   .oa-hr-small[_ngcontent-%COMP%]{margin:5px}"]],data:{}});function gf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"hr",[["class","oa-hr-small"]],null,null,null,null,null))],null,null)}function mf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,9,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,0,"input",[["type","checkbox"]],[[8,"checked",0],[8,"name",0],[8,"id",0],[8,"disabled",0]],[[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)),(t()(),a["\u0275eld"](2,0,null,null,5,"label",[["ng-class","['tc_' + key]"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](4,null,["",""])),(t()(),a["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,["",""])),(t()(),a["\u0275and"](16777216,null,null,1,null,gf)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,9,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),t(e,2,0,e.context.$implicit.code),t(e,4,0,e.context.$implicit.name),t(e,7,0,e.context.$implicit.description)})}function bf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},_r.b,_r.a)),a["\u0275did"](1,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](-1,0,["Submit"]))],function(t,e){t(e,1,0,e.component.osdFlagsForm)},null)}function yf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,18,"cd-modal",[],null,null,null,Ad.c,Ad.b)),a["\u0275did"](1,49152,null,0,of.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cluster-wide OSD Flags"])),(t()(),a["\u0275eld"](4,0,null,1,14,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,13,"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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,7).onReset()&&r),r},null,null)),a["\u0275did"](6,16384,null,0,$e.D,[],null,null),a["\u0275did"](7,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](9,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](10,0,null,null,2,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,mf)),a["\u0275did"](12,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275eld"](13,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,bf)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](17,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Tr.b,Tr.a)),a["\u0275did"](18,49152,null,0,wr.a,[L.Location,Ra.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.osdFlagsForm),t(e,12,0,n.flags),t(e,16,0,n.permissions.osd.update),t(e,18,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,5,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending)})}function vf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-flags-modal",[],null,null,null,yf,hf)),a["\u0275did"](1,114688,null,0,wa,[qa.a,q.a,ia,Ta.a,Kt.a],null,null)],function(t,e){t(e,1,0)},null)}var _f=a["\u0275ccf"]("cd-osd-flags-modal",wa,vf,{},{},[]),xf=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Tf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 wf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required."]))],null,null)}function Sf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](1,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](2,0,["",""]))],null,function(t,e){t(e,2,0,e.parent.context.$implicit.value.desc)})}function Of(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"span",[["class","required"]],null,null,null,null,null))],null,null)}function Cf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function kf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.value.patternHelpText)})}function If(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Df(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Rf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,24,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,5,"label",[["class","control-label col-sm-6"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](4,null,[""," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,Sf)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Of)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](9,0,null,null,15,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,11)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,11).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,11)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,11)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,12).onChange(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,12).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,12).onTouched()&&r),r},null,null)),a["\u0275did"](11,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](12,16384,null,0,$e.C,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,$e.C]),a["\u0275did"](14,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](16,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Cf)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,kf)),a["\u0275did"](20,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,If)),a["\u0275did"](22,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Df)),a["\u0275did"](24,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,r=t(e,2,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,a["\u0275nov"](e.parent,7)));t(e,1,0,"form-group",r),t(e,6,0,e.context.$implicit.value.desc),t(e,8,0,n.osdRecvSpeedForm.getValue("customizePriority")),t(e,14,0,e.context.$implicit.key),t(e,18,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,a["\u0275nov"](e.parent,7),"required")),t(e,20,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,a["\u0275nov"](e.parent,7),"pattern")),t(e,22,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,a["\u0275nov"](e.parent,7),"max")),t(e,24,0,n.osdRecvSpeedForm.getValue("customizePriority")&&n.osdRecvSpeedForm.showError(e.context.$implicit.key,a["\u0275nov"](e.parent,7),"min"))},function(t,e){var n=e.component;t(e,3,0,e.context.$implicit.key),t(e,4,0,e.context.$implicit.value.text),t(e,10,0,e.context.$implicit.key,!n.osdRecvSpeedForm.getValue("customizePriority"),a["\u0275nov"](e,16).ngClassUntouched,a["\u0275nov"](e,16).ngClassTouched,a["\u0275nov"](e,16).ngClassPristine,a["\u0275nov"](e,16).ngClassDirty,a["\u0275nov"](e,16).ngClassValid,a["\u0275nov"](e,16).ngClassInvalid,a["\u0275nov"](e,16).ngClassPending)})}function Nf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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},_r.b,_r.a)),a["\u0275did"](1,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](-1,0,["Submit"]))],function(t,e){t(e,1,0,e.component.osdRecvSpeedForm)},null)}function Af(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,48,"cd-modal",[],null,null,null,Ad.c,Ad.b)),a["\u0275did"](1,49152,null,0,of.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["OSD Recovery Priority"])),(t()(),a["\u0275eld"](4,0,null,1,44,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,43,"form",[["class","form-horizontal"],["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["\u0275nov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,7).onReset()&&r),r},null,null)),a["\u0275did"](6,16384,null,0,$e.D,[],null,null),a["\u0275did"](7,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](9,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](10,0,null,null,32,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](12,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](13,{"has-error":0}),(t()(),a["\u0275eld"](14,0,null,null,3,"label",[["class","control-label col-sm-6"],["for","priority"]],null,null,null,null,null)),(t()(),a["\u0275eld"](15,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Priority"])),(t()(),a["\u0275eld"](17,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,10,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,7,"select",[["class","form-control"],["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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,20).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,20).onTouched()&&r),"change"===e&&(r=!1!==i.onPriorityChange(n.target.value)&&r),r},null,null)),a["\u0275did"](20,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](22,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](24,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Tf)),a["\u0275did"](26,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,wf)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](29,0,null,null,10,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](30,0,null,null,9,"div",[["class","col-sm-offset-6 col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](31,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](32,0,null,null,5,"input",[["formControlName","customizePriority"],["id","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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0,i=t.component;return"change"===e&&(r=!1!==a["\u0275nov"](t,33).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,33).onTouched()&&r),"change"===e&&(r=!1!==i.onCustomizePriorityChange()&&r),r},null,null)),a["\u0275did"](33,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](35,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](37,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](38,0,null,null,1,"label",[["for","customizePriority"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Customize priority values"])),(t()(),a["\u0275and"](16777216,null,null,2,null,Rf)),a["\u0275did"](41,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),a["\u0275pid"](0,L.KeyValuePipe,[a.KeyValueDiffers]),(t()(),a["\u0275eld"](43,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](44,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Nf)),a["\u0275did"](46,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](47,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Tr.b,Tr.a)),a["\u0275did"](48,49152,null,0,wr.a,[L.Location,Ra.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.osdRecvSpeedForm);var r=t(e,13,0,n.osdRecvSpeedForm.showError("priority",a["\u0275nov"](e,7)));t(e,12,0,"form-group",r),t(e,22,0,"priority"),t(e,26,0,n.priorities),t(e,28,0,n.osdRecvSpeedForm.showError("priority",a["\u0275nov"](e,7),"required")),t(e,35,0,"customizePriority"),t(e,41,0,a["\u0275unv"](e,41,0,a["\u0275nov"](e,42).transform(n.priorityAttrs))),t(e,46,0,n.permissions.configOpt.update),t(e,48,0,"Cancel",n.bsModalRef.hide)},function(t,e){t(e,5,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending),t(e,19,0,a["\u0275nov"](e,24).ngClassUntouched,a["\u0275nov"](e,24).ngClassTouched,a["\u0275nov"](e,24).ngClassPristine,a["\u0275nov"](e,24).ngClassDirty,a["\u0275nov"](e,24).ngClassValid,a["\u0275nov"](e,24).ngClassInvalid,a["\u0275nov"](e,24).ngClassPending),t(e,32,0,a["\u0275nov"](e,37).ngClassUntouched,a["\u0275nov"](e,37).ngClassTouched,a["\u0275nov"](e,37).ngClassPristine,a["\u0275nov"](e,37).ngClassDirty,a["\u0275nov"](e,37).ngClassValid,a["\u0275nov"](e,37).ngClassInvalid,a["\u0275nov"](e,37).ngClassPending)})}function Ef(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-recv-speed-modal",[],null,null,null,Af,xf)),a["\u0275did"](1,114688,null,0,Ea,[qa.a,q.a,Oa.a,Ta.a,Kt.a,ia],null,null)],function(t,e){t(e,1,0)},null)}var Lf=a["\u0275ccf"]("cd-osd-recv-speed-modal",Ea,Ef,{},{},[]),Pf=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Mf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required."]))],null,null)}function jf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["The value needs to be between 0 and 1."]))],null,null)}function qf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Mf)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,jf)),a["\u0275did"](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,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 Ff(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,31,"cd-modal",[],null,null,null,Ad.c,Ad.b)),a["\u0275did"](1,49152,null,0,of.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](2,0,null,0,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Reweight OSD"])),(t()(),a["\u0275eld"](4,0,null,1,27,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,26,"form",[["class","form-horizontal"],["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["\u0275nov"](t,7).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,7).onReset()&&r),r},null,null)),a["\u0275did"](6,16384,null,0,$e.D,[],null,null),a["\u0275did"](7,540672,null,0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](9,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](10,0,null,null,15,"div",[["class","modal-body"]],null,null,null,null,null)),a["\u0275did"](11,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](12,{"has-error":0}),(t()(),a["\u0275eld"](13,0,null,null,12,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,1,"label",[["class","col-sm-2 control-label"],["for","weight"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Weight"])),(t()(),a["\u0275eld"](16,0,null,null,9,"div",[["class","col-sm-10"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"change"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,18)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,18).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,18)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,18)._compositionEnd(n.target.value)&&r),"change"===e&&(r=!1!==a["\u0275nov"](t,19).onChange(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,19).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,19).onTouched()&&r),r},null,null)),a["\u0275did"](18,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275did"](19,16384,null,0,$e.C,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t,e){return[t,e]},[$e.e,$e.C]),a["\u0275did"](21,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](23,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,qf)),a["\u0275did"](25,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](26,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](27,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},_r.b,_r.a)),a["\u0275did"](28,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],disabled:[1,"disabled"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](-1,0,["Reweight"])),(t()(),a["\u0275eld"](30,0,null,null,1,"cd-back-button",[["name","Cancel"]],null,null,null,Tr.b,Tr.a)),a["\u0275did"](31,49152,null,0,wr.a,[L.Location,Ra.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);var a=t(e,12,0,n.weight.errors);t(e,11,0,"modal-body",a),t(e,21,0,"weight"),t(e,25,0,n.weight.errors),t(e,28,0,n.reweightForm,n.reweightForm.invalid),t(e,31,0,"Cancel",n.bsModalRef.hide)},function(t,e){var n=e.component;t(e,5,0,a["\u0275nov"](e,9).ngClassUntouched,a["\u0275nov"](e,9).ngClassTouched,a["\u0275nov"](e,9).ngClassPristine,a["\u0275nov"](e,9).ngClassDirty,a["\u0275nov"](e,9).ngClassValid,a["\u0275nov"](e,9).ngClassInvalid,a["\u0275nov"](e,9).ngClassPending),t(e,17,0,n.currentWeight,a["\u0275nov"](e,23).ngClassUntouched,a["\u0275nov"](e,23).ngClassTouched,a["\u0275nov"](e,23).ngClassPristine,a["\u0275nov"](e,23).ngClassDirty,a["\u0275nov"](e,23).ngClassValid,a["\u0275nov"](e,23).ngClassInvalid,a["\u0275nov"](e,23).ngClassPending)})}function zf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-reweight-modal",[],null,null,null,Ff,Pf)),a["\u0275did"](1,114688,null,0,Pa,[qa.a,ia,La.a],null,null)],function(t,e){t(e,1,0)},null)}var Yf=a["\u0275ccf"]("cd-osd-reweight-modal",Pa,zf,{},{},[]),Hf=a["\u0275crt"]({encapsulation:0,styles:[["hr[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:5px}.control-label[_ngcontent-%COMP%]{text-align:left}.checkbox-primary[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:23px;height:15px;margin-left:0;cursor:pointer}.checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{cursor:auto}.checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:after, .checkbox-primary[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]:before{margin-left:0}.form-group[_ngcontent-%COMP%]   .col-sm-6[_ngcontent-%COMP%]{padding-top:7px}"]],data:{}});function Gf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](1,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](2,0,[" ",""]))],null,function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)})}function Vf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,17,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,6,"label",[["class","col-sm-6 control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](4,null,[" "," "])),(t()(),a["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,Gf)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](10,0,null,null,7,"div",[["class","col-sm-6 checkbox-primary checkbox"]],null,null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,5,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,12).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,12).onTouched()&&r),r},null,null)),a["\u0275did"](12,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](14,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](16,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](17,0,null,null,0,"label",[],null,null,null,null,null))],function(t,e){var n=e.component,a=t(e,2,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir));t(e,1,0,"form-group",a),t(e,9,0,e.parent.context.$implicit.long_desc),t(e,14,0,e.parent.context.$implicit.name)},function(t,e){t(e,3,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.text),t(e,7,0,e.parent.context.$implicit.desc),t(e,11,0,e.parent.context.$implicit.name,a["\u0275nov"](e,16).ngClassUntouched,a["\u0275nov"](e,16).ngClassTouched,a["\u0275nov"](e,16).ngClassPristine,a["\u0275nov"](e,16).ngClassDirty,a["\u0275nov"](e,16).ngClassValid,a["\u0275nov"](e,16).ngClassInvalid,a["\u0275nov"](e,16).ngClassPending)})}function Bf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-helper",[],null,null,null,zo.b,zo.a)),a["\u0275did"](1,49152,null,0,Yo.a,[],null,null),(t()(),a["\u0275ted"](2,0,[" ",""]))],null,function(t,e){t(e,2,0,e.parent.parent.context.$implicit.long_desc)})}function Uf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"span",[["class","input-group-btn"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"button",[["class","btn btn-default"],["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()(),a["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-eraser"]],null,null,null,null,null))],null,null)}function Wf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ",""]))],null,function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)})}function Kf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" ",""]))],null,function(t,e){t(e,1,0,e.parent.parent.context.$implicit.additionalTypeInfo.patternHelpText)})}function $f(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Zf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](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 Xf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,27,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{"has-error":0}),(t()(),a["\u0275eld"](3,0,null,null,6,"label",[["class","col-sm-6 control-label"]],[[8,"htmlFor",0]],null,null,null,null)),(t()(),a["\u0275ted"](4,null,[""," "])),(t()(),a["\u0275eld"](5,0,null,null,0,"br",[],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,3,"span",[["class","text-muted"]],null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[" "," "])),(t()(),a["\u0275and"](16777216,null,null,1,null,Bf)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](10,0,null,null,17,"div",[["class","col-sm-6"]],null,null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,8,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,5,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,13)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,13).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,13)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,13)._compositionEnd(n.target.value)&&r),r},null,null)),a["\u0275did"](13,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](15,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](17,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Uf)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Wf)),a["\u0275did"](21,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Kf)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,$f)),a["\u0275did"](25,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Zf)),a["\u0275did"](27,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component,a=t(e,2,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir));t(e,1,0,"form-group",a),t(e,9,0,e.parent.context.$implicit.long_desc),t(e,15,0,e.parent.context.$implicit.name),t(e,19,0,n.optionsFormShowReset),t(e,21,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"pattern")),t(e,23,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"invalidUuid")),t(e,25,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"max")),t(e,27,0,n.optionsForm.showError(e.parent.context.$implicit.name,n.optionsFormDir,"min"))},function(t,e){var n=e.component;t(e,3,0,e.parent.context.$implicit.name),t(e,4,0,e.parent.context.$implicit.text),t(e,7,0,e.parent.context.$implicit.desc),t(e,12,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)),a["\u0275nov"](e,17).ngClassUntouched,a["\u0275nov"](e,17).ngClassTouched,a["\u0275nov"](e,17).ngClassPristine,a["\u0275nov"](e,17).ngClassDirty,a["\u0275nov"](e,17).ngClassValid,a["\u0275nov"](e,17).ngClassInvalid,a["\u0275nov"](e,17).ngClassPending])})}function Jf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,"hr",[],null,null,null,null,null))],null,null)}function Qf(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"div",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Vf)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Xf)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Jf)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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 tp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"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 r=!0;return"submit"===e&&(r=!1!==a["\u0275nov"](t,1).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,1).onReset()&&r),r},null,null)),a["\u0275did"](1,540672,null,0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](3,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275and"](16777216,null,null,1,null,Qf)),a["\u0275did"](5,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){var n=e.component;t(e,1,0,n.optionsFormGroup),t(e,5,0,n.options)},function(t,e){t(e,0,0,a["\u0275nov"](e,3).ngClassUntouched,a["\u0275nov"](e,3).ngClassTouched,a["\u0275nov"](e,3).ngClassPristine,a["\u0275nov"](e,3).ngClassDirty,a["\u0275nov"](e,3).ngClassValid,a["\u0275nov"](e,3).ngClassInvalid,a["\u0275nov"](e,3).ngClassPending)})}var ep=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function np(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](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()(),a["\u0275ted"](-1,null,["Advanced..."]))],null,null)}function ap(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"h2",[["class","page-header"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Advanced configuration options"])),(t()(),a["\u0275eld"](3,0,null,null,1,"cd-config-option",[],null,null,null,tp,Hf)),a["\u0275did"](4,114688,[[2,4],["advancedOptionsValues",4]],0,Da,[Oa.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,a["\u0275nov"](e.parent,13),"advancedFormGroup")},null)}function rp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,4,"cd-submit-button",[["type","button"]],null,[[null,"submitAction"]],function(t,e,n){var a=!0;return"submitAction"===e&&(a=!1!==t.component.submitAction()&&a),a},_r.b,_r.a)),a["\u0275did"](1,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"],type:[1,"type"]},{submitAction:"submitAction"}),(t()(),a["\u0275ted"](2,0,[""," ",""])),a["\u0275ppd"](3,1),a["\u0275ppd"](4,1)],function(t,e){t(e,1,0,e.component.osdPgScrubForm,"button")},function(t,e){var n=e.component,r=a["\u0275unv"](e,2,0,t(e,3,0,a["\u0275nov"](e.parent,0),n.action)),i=a["\u0275unv"](e,2,1,t(e,4,0,a["\u0275nov"](e.parent,1),n.resource));t(e,2,0,r,i)})}function ip(t){return a["\u0275vid"](0,[a["\u0275pid"](0,L.TitleCasePipe,[]),a["\u0275pid"](0,Ho.a,[]),a["\u0275qud"](402653184,1,{basicOptionsValues:0}),a["\u0275qud"](671088640,2,{advancedOptionsValues:0}),(t()(),a["\u0275eld"](4,0,null,null,26,"cd-modal",[],null,null,null,Ad.c,Ad.b)),a["\u0275did"](5,49152,null,0,of.a,[],{modalRef:[0,"modalRef"]},null),(t()(),a["\u0275eld"](6,0,null,0,3,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](7,null,[""," ",""])),a["\u0275ppd"](8,1),a["\u0275ppd"](9,1),(t()(),a["\u0275eld"](10,0,null,1,20,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](11,0,null,null,19,"form",[["class","form-horizontal"],["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["\u0275nov"](t,13).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,13).onReset()&&r),r},null,null)),a["\u0275did"](12,16384,null,0,$e.D,[],null,null),a["\u0275did"](13,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](15,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](16,0,null,null,8,"div",[["class","modal-body osd-modal"]],null,null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,1,"cd-config-option",[],null,null,null,tp,Hf)),a["\u0275did"](18,114688,[[1,4],["basicOptionsValues",4]],0,Da,[Oa.a],{optionNames:[0,"optionNames"],optionsForm:[1,"optionsForm"],optionsFormDir:[2,"optionsFormDir"],optionsFormGroupName:[3,"optionsFormGroupName"]},null),(t()(),a["\u0275eld"](19,0,null,null,3,"div",[["class","row"]],null,null,null,null,null)),(t()(),a["\u0275eld"](20,0,null,null,2,"div",[["class","col-sm-12"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,np)),a["\u0275did"](22,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ap)),a["\u0275did"](24,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](25,0,null,null,5,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](26,0,null,null,4,"div",[["class","button-group text-right"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,rp)),a["\u0275did"](28,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](29,0,null,null,1,"cd-back-button",[],null,null,null,Tr.b,Tr.a)),a["\u0275did"](30,49152,null,0,wr.a,[L.Location,Ra.b],{back:[0,"back"]},null)],function(t,e){var n=e.component;t(e,5,0,n.bsModalRef),t(e,13,0,n.osdPgScrubForm),t(e,18,0,n.basicOptions,n.osdPgScrubForm,a["\u0275nov"](e,13),"basicFormGroup"),t(e,22,0,!n.advancedEnabled),t(e,24,0,n.advancedEnabled),t(e,28,0,n.permissions.configOpt.update),t(e,30,0,n.bsModalRef.hide)},function(t,e){var n=e.component,r=a["\u0275unv"](e,7,0,t(e,8,0,a["\u0275nov"](e,0),n.action)),i=a["\u0275unv"](e,7,1,t(e,9,0,a["\u0275nov"](e,1),n.resource));t(e,7,0,r,i),t(e,11,0,a["\u0275nov"](e,15).ngClassUntouched,a["\u0275nov"](e,15).ngClassTouched,a["\u0275nov"](e,15).ngClassPristine,a["\u0275nov"](e,15).ngClassDirty,a["\u0275nov"](e,15).ngClassValid,a["\u0275nov"](e,15).ngClassInvalid,a["\u0275nov"](e,15).ngClassPending)})}function op(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-osd-pg-scrub-modal",[],null,null,null,ip,ep)),a["\u0275did"](1,49152,null,0,Aa,[qa.a,q.a,Ta.a,Kt.a,Ra.b],null,null)],null,null)}var sp=a["\u0275ccf"]("cd-osd-pg-scrub-modal",Aa,op,{},{},[]),up=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function lp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](1,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{value:[0,"value"]},null),a["\u0275did"](2,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{value:[0,"value"]},null),(t()(),a["\u0275ted"](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 cp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function dp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","help-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["This field is required!"]))],null,null)}function fp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[["id","match-state"]],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[],[[8,"className",0]],null,null,null,null)),(t()(),a["\u0275ted"](2,null,[" "," "]))],null,function(t,e){var n=e.component;t(e,0,0,a["\u0275inlineInterpolate"](1,"col-sm-offset-3 col-sm-9 ",n.matcherMatch.cssClass,"")),t(e,1,0,a["\u0275inlineInterpolate"](1,"help-block ",n.matcherMatch.cssClass,"")),t(e,2,0,n.matcherMatch.status)})}function pp(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["Update"]))],null,null)}function hp(t){return a["\u0275vid"](0,[(t()(),a["\u0275ted"](-1,null,["Add"]))],null,null)}function gp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[["class","modal-header"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"h4",[["class","modal-title pull-left"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Matcher"])),(t()(),a["\u0275eld"](3,0,null,null,2,"button",[["aria-label","Close"],["class","close pull-right"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.bsModalRef.hide()&&a),a},null,null)),(t()(),a["\u0275eld"](4,0,null,null,1,"span",[["aria-hidden","true"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["\xd7"])),(t()(),a["\u0275eld"](6,0,null,null,70,"form",[["class","form-horizontal"],["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["\u0275nov"](t,8).onSubmit(n)&&r),"reset"===e&&(r=!1!==a["\u0275nov"](t,8).onReset()&&r),r},null,null)),a["\u0275did"](7,16384,null,0,$e.D,[],null,null),a["\u0275did"](8,540672,[["formDir",4]],0,$e.l,[[8,null],[8,null]],{form:[0,"form"]},null),a["\u0275prd"](2048,null,$e.d,null,[$e.l]),a["\u0275did"](10,16384,null,0,$e.s,[[4,$e.d]],null,null),(t()(),a["\u0275eld"](11,0,null,null,53,"div",[["class","modal-body"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,21,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](13,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](14,{"has-error":0}),(t()(),a["\u0275eld"](15,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","name"]],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Name"])),(t()(),a["\u0275eld"](18,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,14,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](20,0,null,null,11,"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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,21).onChange(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,21).onTouched()&&r),r},null,null)),a["\u0275did"](21,16384,null,0,$e.z,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.z]),a["\u0275did"](23,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](25,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](26,0,null,null,3,"option",[],null,null,null,null,null)),a["\u0275did"](27,147456,null,0,$e.v,[a.ElementRef,a.Renderer2,[2,$e.z]],{ngValue:[0,"ngValue"]},null),a["\u0275did"](28,147456,null,0,$e.G,[a.ElementRef,a.Renderer2,[8,null]],{ngValue:[0,"ngValue"]},null),(t()(),a["\u0275ted"](-1,null,["-- Select an attribute to match against --"])),(t()(),a["\u0275and"](16777216,null,null,1,null,lp)),a["\u0275did"](31,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,cp)),a["\u0275did"](33,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](34,0,null,null,18,"div",[["class","form-group"]],null,null,null,null,null)),a["\u0275did"](35,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](36,{"has-error":0}),(t()(),a["\u0275eld"](37,0,null,null,3,"label",[["class","control-label col-sm-3"],["for","value"]],null,null,null,null,null)),(t()(),a["\u0275eld"](38,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Value"])),(t()(),a["\u0275eld"](40,0,null,null,0,"span",[["class","required"]],null,null,null,null,null)),(t()(),a["\u0275eld"](41,0,null,null,9,"div",[["class","col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](42,16777216,null,null,6,"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]],[[null,"input"],[null,"blur"],[null,"compositionstart"],[null,"compositionend"],[null,"keyup"],[null,"click"],[null,"focus"],[null,"keydown"]],function(t,e,n){var r=!0;return"input"===e&&(r=!1!==a["\u0275nov"](t,43)._handleInput(n.target.value)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,43).onTouched()&&r),"compositionstart"===e&&(r=!1!==a["\u0275nov"](t,43)._compositionStart()&&r),"compositionend"===e&&(r=!1!==a["\u0275nov"](t,43)._compositionEnd(n.target.value)&&r),"input"===e&&(r=!1!==a["\u0275nov"](t,48).onInput(n)&&r),"keyup"===e&&(r=!1!==a["\u0275nov"](t,48).onChange(n)&&r),"click"===e&&(r=!1!==a["\u0275nov"](t,48).onFocus()&&r),"focus"===e&&(r=!1!==a["\u0275nov"](t,48).onFocus()&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,48).onBlur()&&r),"keydown"===e&&(r=!1!==a["\u0275nov"](t,48).onKeydown(n)&&r),r},null,null)),a["\u0275did"](43,16384,null,0,$e.e,[a.Renderer2,a.ElementRef,[2,$e.b]],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.e]),a["\u0275did"](45,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](47,16384,null,0,$e.r,[[4,$e.q]],null,null),a["\u0275did"](48,212992,null,0,pl,[$e.q,a.ElementRef,a.ViewContainerRef,a.Renderer2,fl,Ct.a,a.ChangeDetectorRef],{typeahead:[0,"typeahead"],typeaheadMinLength:[1,"typeaheadMinLength"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,dp)),a["\u0275did"](50,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,fp)),a["\u0275did"](52,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](53,0,null,null,11,"div",[["class","form-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](54,0,null,null,10,"div",[["class","col-sm-offset-3 col-sm-9"]],null,null,null,null,null)),(t()(),a["\u0275eld"](55,0,null,null,9,"div",[["class","input-group"]],null,null,null,null,null)),(t()(),a["\u0275eld"](56,0,null,null,8,"div",[["class","checkbox checkbox-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](57,0,null,null,5,"input",[["formControlName","isRegex"],["id","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]],[[null,"change"],[null,"blur"]],function(t,e,n){var r=!0;return"change"===e&&(r=!1!==a["\u0275nov"](t,58).onChange(n.target.checked)&&r),"blur"===e&&(r=!1!==a["\u0275nov"](t,58).onTouched()&&r),r},null,null)),a["\u0275did"](58,16384,null,0,$e.c,[a.Renderer2,a.ElementRef],null,null),a["\u0275prd"](1024,null,$e.p,function(t){return[t]},[$e.c]),a["\u0275did"](60,671744,null,0,$e.j,[[3,$e.d],[8,null],[8,null],[6,$e.p],[2,$e.F]],{name:[0,"name"]},null),a["\u0275prd"](2048,null,$e.q,null,[$e.j]),a["\u0275did"](62,16384,null,0,$e.r,[[4,$e.q]],null,null),(t()(),a["\u0275eld"](63,0,null,null,1,"label",[["for","is-regex"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Use regular expression"])),(t()(),a["\u0275eld"](65,0,null,null,11,"div",[["class","modal-footer"]],null,null,null,null,null)),(t()(),a["\u0275eld"](66,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},_r.b,_r.a)),a["\u0275did"](67,114688,null,0,xr.a,[a.ElementRef],{form:[0,"form"]},{submitAction:"submitAction"}),(t()(),a["\u0275eld"](68,0,null,0,6,null,null,null,null,null,null,null)),(t()(),a["\u0275eld"](69,0,null,null,5,null,null,null,null,null,null,null)),a["\u0275did"](70,16384,null,0,L.NgSwitch,[],{ngSwitch:[0,"ngSwitch"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,pp)),a["\u0275did"](72,278528,null,0,L.NgSwitchCase,[a.ViewContainerRef,a.TemplateRef,L.NgSwitch],{ngSwitchCase:[0,"ngSwitchCase"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,hp)),a["\u0275did"](74,16384,null,0,L.NgSwitchDefault,[a.ViewContainerRef,a.TemplateRef,L.NgSwitch],null,null),(t()(),a["\u0275eld"](75,0,null,null,1,"cd-back-button",[["name","Close"]],null,null,null,Tr.b,Tr.a)),a["\u0275did"](76,49152,null,0,wr.a,[L.Location,Ra.b],{name:[0,"name"],back:[1,"back"]},null)],function(t,e){var n=e.component;t(e,8,0,n.form);var r=t(e,14,0,n.form.showError("name",a["\u0275nov"](e,8)));t(e,13,0,"form-group",r),t(e,23,0,"name"),t(e,27,0,null),t(e,28,0,null),t(e,31,0,n.nameAttributes),t(e,33,0,n.form.showError("name",a["\u0275nov"](e,8),"required"));var i=t(e,36,0,n.form.showError("value",a["\u0275nov"](e,8)));t(e,35,0,"form-group",i),t(e,45,0,"value"),t(e,48,0,n.possibleValues,0),t(e,50,0,n.form.showError("value",a["\u0275nov"](e,8),"required")),t(e,52,0,n.form.getValue("value")&&!n.form.getValue("isRegex")&&n.matcherMatch),t(e,60,0,"isRegex"),t(e,67,0,n.form),t(e,70,0,n.editMode),t(e,72,0,"1"),t(e,76,0,"Close",n.bsModalRef.hide)},function(t,e){t(e,6,0,a["\u0275nov"](e,10).ngClassUntouched,a["\u0275nov"](e,10).ngClassTouched,a["\u0275nov"](e,10).ngClassPristine,a["\u0275nov"](e,10).ngClassDirty,a["\u0275nov"](e,10).ngClassValid,a["\u0275nov"](e,10).ngClassInvalid,a["\u0275nov"](e,10).ngClassPending),t(e,20,0,a["\u0275nov"](e,25).ngClassUntouched,a["\u0275nov"](e,25).ngClassTouched,a["\u0275nov"](e,25).ngClassPristine,a["\u0275nov"](e,25).ngClassDirty,a["\u0275nov"](e,25).ngClassValid,a["\u0275nov"](e,25).ngClassInvalid,a["\u0275nov"](e,25).ngClassPending),t(e,42,0,a["\u0275nov"](e,47).ngClassUntouched,a["\u0275nov"](e,47).ngClassTouched,a["\u0275nov"](e,47).ngClassPristine,a["\u0275nov"](e,47).ngClassDirty,a["\u0275nov"](e,47).ngClassValid,a["\u0275nov"](e,47).ngClassInvalid,a["\u0275nov"](e,47).ngClassPending),t(e,57,0,a["\u0275nov"](e,62).ngClassUntouched,a["\u0275nov"](e,62).ngClassTouched,a["\u0275nov"](e,62).ngClassPristine,a["\u0275nov"](e,62).ngClassDirty,a["\u0275nov"](e,62).ngClassValid,a["\u0275nov"](e,62).ngClassInvalid,a["\u0275nov"](e,62).ngClassPending)})}function mp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-silence-matcher-modal",[],null,null,null,gp,up)),a["\u0275did"](1,49152,null,0,Bo,[La.a,Go,qa.a],null,null)],null,null)}var bp=a["\u0275ccf"]("cd-silence-matcher-modal",Bo,mp,{},{submitAction:"submitAction"},[]),yp=function(){function t(t,e){this._el=t,this._renderer=e,this.collapsed=new a.EventEmitter,this.expanded=new a.EventEmitter,this.isExpanded=!0,this.isCollapsed=!1,this.isCollapse=!0,this.isCollapsing=!1}return Object.defineProperty(t.prototype,"collapse",{get:function(){return this.isExpanded},set:function(t){this.isExpanded=t,this.toggle()},enumerable:!0,configurable:!0}),t.prototype.toggle=function(){this.isExpanded?this.hide():this.show()},t.prototype.hide=function(){this.isCollapse=!1,this.isCollapsing=!0,this.isExpanded=!1,this.isCollapsed=!0,this.isCollapse=!0,this.isCollapsing=!1,this.display="none",this.collapsed.emit(this)},t.prototype.show=function(){this.isCollapse=!1,this.isCollapsing=!0,this.isExpanded=!0,this.isCollapsed=!1,this.display="block",this.isCollapse=!0,this.isCollapsing=!1,this._renderer.setStyle(this._el.nativeElement,"overflow","visible"),this._renderer.setStyle(this._el.nativeElement,"height","auto"),this.expanded.emit(this)},t}(),vp=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t}(),_p=function(){function t(t,e){this.summaryService=t,this.taskMessageService=e,this.executingTasks=[],this.finishedTasks=[],this.icon="fa-hourglass-o"}return t.prototype.ngOnInit=function(){var t=this;this.summaryService.subscribe(function(e){e&&(t._handleTasks(e.executing_tasks,e.finished_tasks),t._setIcon(e.executing_tasks.length))})},t.prototype._handleTasks=function(t,e){for(var n=0,a=t;n<a.length;n++){var r=a[n];r.description=this.taskMessageService.getRunningTitle(r)}for(var i=0,o=e;i<o.length;i++){var s=o[i];!1===s.success?(s.description=this.taskMessageService.getErrorTitle(s),s.errorMessage=this.taskMessageService.getErrorMessage(s)):s.description=this.taskMessageService.getSuccessTitle(s)}this.executingTasks=t,this.finishedTasks=e},t.prototype._setIcon=function(t){this.icon="fa-hourglass-"+["o","start","half","end"][t>0?1:0]},t}(),xp=a["\u0275crt"]({encapsulation:0,styles:[[".popover-content{padding:.5em;height:auto;max-height:70vh;overflow-x:hidden}  .popover{min-width:276px!important}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.message[_ngcontent-%COMP%]{padding:10px 16px;color:#474544;font-size:12px}table[_ngcontent-%COMP%]{width:252px;margin:5px 12px 5px 5px;font-size:12px;color:#474544}.icon-col[_ngcontent-%COMP%]{width:50px;font-size:10px}.date[_ngcontent-%COMP%]{color:#555}hr[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0}"]],data:{}});function Tp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"td",[["class","text-right italic"],["nowrap",""]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](2,null,[""," %"]))],null,function(t,e){t(e,2,0,e.parent.context.$implicit.progress)})}function wp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,18,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,16,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,15,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,7,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,3,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,2,"span",[["class","fa-stack fa-2x text-info"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-spinner fa-spin"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,2,"td",[["colspan","3"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](10,null,["",""])),(t()(),a["\u0275eld"](11,0,null,null,6,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,3,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,2,"small",[["class","date"]],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,["",""])),a["\u0275ppd"](15,1),(t()(),a["\u0275and"](16777216,null,null,1,null,Tp)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](18,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){t(e,17,0,e.context.$implicit.progress)},function(t,e){t(e,10,0,e.context.$implicit.description);var n=a["\u0275unv"](e,14,0,t(e,15,0,a["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.begin_time));t(e,14,0,n)})}function Sp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","separator"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["EXECUTING"])),(t()(),a["\u0275eld"](3,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,wp)),a["\u0275did"](5,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.executingTasks)},null)}function Op(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"span",[["class","fa-stack fa-2x text-success"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-check"]],null,null,null,null,null))],null,null)}function Cp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"span",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,2,"span",[["class","fa-stack fa-2x text-danger"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,0,"i",[["class","fa fa-stack-1x fa-inverse fa-exclamation-triangle"]],null,null,null,null,null))],null,null)}function kp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[["class","text-danger"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" "," "]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.errorMessage)})}function Ip(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,22,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,20,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,19,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,8,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,4,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Op)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Cp)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](9,0,null,null,2,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](11,null,["",""])),(t()(),a["\u0275eld"](12,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,0,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](14,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,kp)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](17,0,null,null,4,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,3,"td",[["colspan","2"]],null,null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,2,"small",[["class","date"]],null,null,null,null,null)),(t()(),a["\u0275ted"](20,null,["",""])),a["\u0275ppd"](21,1),(t()(),a["\u0275eld"](22,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){t(e,6,0,!e.context.$implicit.errorMessage),t(e,8,0,e.context.$implicit.errorMessage),t(e,16,0,e.context.$implicit.errorMessage)},function(t,e){t(e,11,0,e.context.$implicit.description);var n=a["\u0275unv"](e,20,0,t(e,21,0,a["\u0275nov"](e.parent.parent.parent,0),e.context.$implicit.end_time));t(e,20,0,n)})}function Dp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,5,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","separator"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["FINISHED"])),(t()(),a["\u0275eld"](3,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Ip)),a["\u0275did"](5,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,5,0,e.component.finishedTasks)},null)}function Rp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["There are no background tasks."]))],null,null)}function Np(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Sp)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Dp)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Rp)),a["\u0275did"](5,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,1,0,n.executingTasks.length>0),t(e,3,0,n.finishedTasks.length>0),t(e,5,0,0===n.executingTasks.length&&0===n.finishedTasks.length)},null)}function Ap(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,[" (",")"]))],null,function(t,e){t(e,1,0,e.component.executingTasks.length)})}function Ep(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Zn.a,[L.DatePipe]),(t()(),a["\u0275and"](0,[["popTemplate",2]],null,0,null,Np)),(t()(),a["\u0275eld"](2,16777216,null,null,7,"a",[["container","body"],["outsideClick","true"],["placement","bottom"],["title","Background Tasks"]],null,null,null,null,null)),a["\u0275did"](3,212992,null,0,Ot.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ot.a,Ct.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),(t()(),a["\u0275eld"](4,0,null,null,1,"i",[["class","fa fa-fw"]],null,null,null,null,null)),a["\u0275did"](5,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Background Tasks"])),(t()(),a["\u0275and"](16777216,null,null,1,null,Ap)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=e.component;t(e,3,0,a["\u0275nov"](e,1),"bottom","true","body"),t(e,5,0,"fa fa-fw",n.icon),t(e,9,0,n.executingTasks.length>0)},null)}var Lp=function(){function t(t,e){this.alertFormatter=t,this.prometheusService=e,this.backendFailure=!1,this.notifications=[]}return t.prototype.refresh=function(){var t=this;this.backendFailure||this.prometheusService.getNotifications(Ft.last(this.notifications)).subscribe(function(e){return t.handleNotifications(e)},function(){return t.backendFailure=!0})},t.prototype.handleNotifications=function(t){var e=this;0!==t.length&&(this.notifications.length>0&&this.alertFormatter.sendNotifications(Ft.flatten(t.map(function(t){return e.formatNotification(t)}))),this.notifications=this.notifications.concat(t))},t.prototype.formatNotification=function(t){var e=this;return this.alertFormatter.convertToCustomAlerts(t.alerts).map(function(t){return e.alertFormatter.convertAlertToNotification(t)})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(xo),a.inject(vo))},token:t,providedIn:"root"}),t}(),Pp=function(){function t(t,e,n,a,r){this.notificationService=t,this.prometheusNotificationService=e,this.authStorageService=n,this.prometheusAlertService=a,this.ngZone=r,this.notifications=[]}return t.prototype.ngOnDestroy=function(){window.clearInterval(this.interval)},t.prototype.ngOnInit=function(){var t=this;this.authStorageService.getPermissions().prometheus.read&&(this.triggerPrometheusAlerts(),this.ngZone.runOutsideAngular(function(){t.interval=window.setInterval(function(){t.ngZone.run(function(){t.triggerPrometheusAlerts()})},5e3)})),this.notificationService.data$.subscribe(function(e){t.notifications=Ft.orderBy(e,["timestamp"],["desc"])})},t.prototype.triggerPrometheusAlerts=function(){this.prometheusAlertService.refresh(),this.prometheusNotificationService.refresh()},t.prototype.removeAll=function(){this.notificationService.removeAll()},t}(),Mp=a["\u0275crt"]({encapsulation:0,styles:[[".popover-content{padding:.5em;height:auto;max-height:70vh;overflow-x:hidden}  .popover{min-width:276px!important}.separator[_ngcontent-%COMP%]{padding:5px 12px;color:#90949c;background-color:#eee;font-size:12px}.message[_ngcontent-%COMP%]{padding:10px 16px;color:#474544;font-size:12px}table[_ngcontent-%COMP%]{width:252px;margin:5px 12px 5px 5px;font-size:12px;color:#474544}.icon-col[_ngcontent-%COMP%]{width:50px;font-size:10px}.date[_ngcontent-%COMP%]{color:#555}hr[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0}"]],data:{}});function jp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,19,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,17,"table",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,16,"tbody",[],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,11,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,7,"td",[["class","icon-col text-center"],["rowspan","3"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,6,"span",[],null,null,null,null,null)),a["\u0275did"](6,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](7,2),(t()(),a["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-circle fa-stack-2x"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,2,"i",[],null,null,null,null,null)),a["\u0275did"](10,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngClass:[0,"ngClass"]},null),a["\u0275pad"](11,2),(t()(),a["\u0275eld"](12,0,null,null,2,"td",[],null,null,null,null,null)),(t()(),a["\u0275eld"](13,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](14,null,["",""])),(t()(),a["\u0275eld"](15,0,null,null,1,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](16,0,null,null,0,"td",[],[[8,"innerHTML",1]],null,null,null,null)),(t()(),a["\u0275eld"](17,0,null,null,1,"tr",[],null,null,null,null,null)),(t()(),a["\u0275eld"](18,0,null,null,0,"td",[],[[8,"innerHTML",1]],null,null,null,null)),(t()(),a["\u0275eld"](19,0,null,null,0,"hr",[],null,null,null,null,null))],function(t,e){var n=t(e,7,0,"fa-stack fa-2x",e.context.$implicit.textClass);t(e,6,0,n);var a=t(e,11,0,"fa fa-stack-1x fa-inverse",e.context.$implicit.iconClass);t(e,10,0,a)},function(t,e){var n=e.component;t(e,14,0,e.context.$implicit.title),t(e,16,0,e.context.$implicit.message),t(e,18,0,n.notificationService.renderTimeAndApplicationHtml(e.context.$implicit))})}function qp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,8,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"button",[["class","btn btn-default btn-sm btn-block"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0;return"click"===e&&(a=!1!==t.component.removeAll()&&a),a},null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"i",[["aria-hidden","true"],["class","fa fa-trash-o"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" \xa0 "])),(t()(),a["\u0275eld"](4,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Remove all"])),(t()(),a["\u0275eld"](6,0,null,null,0,"hr",[],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,jp)),a["\u0275did"](8,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,8,0,e.component.notifications)},null)}function Fp(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,qp)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,e.component.notifications.length>0)},null)}function zp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"div",[],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,1,"div",[["class","message"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,[" There are no notifications. "]))],null,null)}function Yp(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,zp)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,0===e.component.notifications.length)},null)}function Hp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Gp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,0,null,null,null,null,null,null,null))],null,null)}function Vp(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Hp)),a["\u0275did"](1,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Gp)),a["\u0275did"](3,540672,null,0,L.NgTemplateOutlet,[a.ViewContainerRef],{ngTemplateOutlet:[0,"ngTemplateOutlet"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,1,0,a["\u0275nov"](e.parent,0)),t(e,3,0,a["\u0275nov"](e.parent,1))},null)}function Bp(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](0,[["notificationsTpl",2]],null,0,null,Fp)),(t()(),a["\u0275and"](0,[["emptyTpl",2]],null,0,null,Yp)),(t()(),a["\u0275and"](0,[["popTpl",2]],null,0,null,Vp)),(t()(),a["\u0275eld"](3,16777216,null,null,4,"a",[["container","body"],["outsideClick","true"],["placement","bottom"],["title","Recent Notifications"]],null,null,null,null,null)),a["\u0275did"](4,212992,null,0,Ot.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ot.a,Ct.a],{popover:[0,"popover"],placement:[1,"placement"],outsideClick:[2,"outsideClick"],container:[3,"container"]},null),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-bell"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Recent Notifications"]))],function(t,e){t(e,4,0,a["\u0275nov"](e,2),"bottom","true","body")},null)}var Up=function(){function t(t,e,n,a){this.summaryService=t,this.cephReleaseNamePipe=e,this.modalService=n,this.authStorageService=a}return t.prototype.ngOnInit=function(){var t=this,e=this.summaryService.subscribe(function(n){if(n){var a=t.cephReleaseNamePipe.transform(n.version);t.docsUrl="http://docs.ceph.com/docs/"+a+"/mgr/dashboard/",setTimeout(function(){e.unsubscribe()},0)}})},t.prototype.openAboutModal=function(){this.modalRef=this.modalService.show(jd)},t.prototype.goToApiDocs=function(){this.docsFormElement.nativeElement.children[0].value=this.authStorageService.getToken(),this.docsFormElement.nativeElement.submit()},t}(),Wp=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Kp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item"],["target","_blank"]],[[8,"href",4]],null,null,null,null)),a["\u0275did"](3,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](4,{disabled:0}),(t()(),a["\u0275ted"](-1,null,["Documentation"])),(t()(),a["\u0275eld"](6,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](7,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.goToApiDocs()&&a),a},null,null)),(t()(),a["\u0275ted"](-1,null,["API"])),(t()(),a["\u0275eld"](9,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](10,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()(),a["\u0275ted"](-1,null,["About"]))],function(t,e){var n=t(e,4,0,!e.component.docsUrl);t(e,3,0,"dropdown-item",n)},function(t,e){t(e,2,0,a["\u0275inlineInterpolate"](1,"",e.component.docsUrl,""))})}function $p(t){return a["\u0275vid"](0,[a["\u0275qud"](402653184,1,{docsFormElement:0}),(t()(),a["\u0275eld"](1,0,[[1,0],["docsForm",1]],null,1,"form",[["action","/docs"],["method","post"],["target","_blank"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,0,"input",[["name","token"],["type","hidden"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](5,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),(t()(),a["\u0275eld"](6,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Help"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,7).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,7).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,7).onEsc()&&r),r},null,null)),a["\u0275did"](7,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](8,0,null,null,0,"i",[["class","fa fa-fw fa-question-circle-o"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Help"])),(t()(),a["\u0275eld"](11,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Kp)),a["\u0275did"](13,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null)],function(t,e){t(e,5,0)},function(t,e){t(e,3,0,a["\u0275nov"](e,5).dropup,a["\u0275nov"](e,5).isOpen,a["\u0275nov"](e,5).isOpen&&a["\u0275nov"](e,5).isBs4),t(e,6,0,!0,a["\u0275nov"](e,7).isDisabled,a["\u0275nov"](e,7).isOpen)})}var Zp=function(){function t(t){this.authStorageService=t,this.userPermission=this.authStorageService.getPermissions().user}return t.prototype.ngOnInit=function(){},t}(),Xp=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function Jp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,3,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](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 r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,2).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](2,671744,null,0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["User management"]))],function(t,e){t(e,2,0,"/user-management")},function(t,e){t(e,1,0,a["\u0275nov"](e,2).target,a["\u0275nov"](e,2).href)})}function Qp(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ul",[["class","dropdown-menu dropdown-menu-right"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Jp)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,2,0,e.component.userPermission.read)},null)}function th(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),(t()(),a["\u0275eld"](3,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Dashboard Settings"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,4).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,4).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,4).onEsc()&&r),r},null,null)),a["\u0275did"](4,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-cog"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Dashboard Settings"])),(t()(),a["\u0275eld"](8,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Qp)),a["\u0275did"](10,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0)},function(t,e){t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,3,0,!0,a["\u0275nov"](e,4).isDisabled,a["\u0275nov"](e,4).isOpen)})}function eh(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,th)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.userPermission.read)},null)}var nh=function(){function t(t,e){this.authStorageService=t,this.authService=e}return t.prototype.ngOnInit=function(){this.username=this.authStorageService.getUsername()},t.prototype.logout=function(){this.authService.logout()},t}(),ah=a["\u0275crt"]({encapsulation:0,styles:[[""]],data:{}});function rh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"ul",[["class","dropdown-menu dropdown-menu-right"],["role","menu"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,4,"li",[["class","disabled"],["role","menuitem"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,3,"a",[["class","dropdown-item disabled"],["href","#"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Signed in as "])),(t()(),a["\u0275eld"](4,0,null,null,1,"strong",[],null,null,null,null,null)),(t()(),a["\u0275ted"](5,null,["",""])),(t()(),a["\u0275eld"](6,0,null,null,0,"li",[["class","divider dropdown-divider"]],null,null,null,null,null)),(t()(),a["\u0275eld"](7,0,null,null,4,"li",[["role","menuitem"]],null,null,null,null,null)),(t()(),a["\u0275eld"](8,0,null,null,3,"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()(),a["\u0275eld"](9,0,null,null,0,"i",[["class","fa fa-sign-out fa-fw"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Sign out"]))],null,function(t,e){t(e,5,0,e.component.username)})}function ih(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,10,"div",[["dropdown",""]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),(t()(),a["\u0275eld"](3,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""],["title","Logged in user"]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,4).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,4).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,4).onEsc()&&r),r},null,null)),a["\u0275did"](4,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](5,0,null,null,0,"i",[["class","fa fa-fw fa-user"]],null,null,null,null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","visible-xs-inline-block"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Logged in user"])),(t()(),a["\u0275eld"](8,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,rh)),a["\u0275did"](10,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null)],function(t,e){t(e,2,0)},function(t,e){t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,3,0,!0,a["\u0275nov"](e,4).isDisabled,a["\u0275nov"](e,4).isOpen)})}var oh=function(){function t(t,e,n,a){this.authStorageService=t,this.prometheusService=e,this.summaryService=n,this.featureToggles=a,this.isCollapsed=!0,this.prometheusConfigured=!1,this.permissions=this.authStorageService.getPermissions(),this.enabledFeature$=this.featureToggles.get()}return t.prototype.ngOnInit=function(){var t=this;this.summaryService.subscribe(function(e){e&&(t.summaryData=e)}),this.prometheusService.ifAlertmanagerConfigured(function(){return t.prometheusConfigured=!0})},t.prototype.blockHealthColor=function(){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"}}},t}(),sh=a["\u0275crt"]({encapsulation:0,styles:[[".navbar-main{margin-bottom:0;background:#374249;border:0;border-radius:0;border-top:4px solid #2b99a8;font-size:1.2em}  .navbar-main .navbar-header{display:-webkit-box;display:flex;float:none}  .navbar-main .navbar-brand,   .navbar-main .navbar-brand:hover{color:#eee;height:auto;margin:15px 0 15px 20px;padding:0;-webkit-align-self:flex-start;align-self:flex-start}  .navbar-main .navbar-brand>img{height:25px}  .navbar-main .navbar-toggle{margin-left:auto;border:0}  .navbar-main .navbar-toggle:focus,   .navbar-main .navbar-toggle:hover{background-color:transparent;outline:0}  .navbar-main .navbar-toggle .icon-bar{background-color:#eee}  .navbar-main .navbar-toggle:focus .icon-bar,   .navbar-main .navbar-toggle:hover .icon-bar{box-shadow:0 0 3px #fff}  .navbar-main .navbar-collapse{padding:0}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>ul>li>.dropdown-item{font-size:12px}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a,   .navbar-main .navbar-nav>li>.oa-navbar>a,   .navbar-main .navbar-nav>li>a{color:#eee;line-height:1;padding:10px 18px;position:relative;display:block;text-decoration:none}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:focus,   .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>li>.oa-navbar>a:focus,   .navbar-main .navbar-nav>li>.oa-navbar>a:hover,   .navbar-main .navbar-nav>li>a:focus,   .navbar-main .navbar-nav>li>a:hover{color:#eee}  .navbar-main .navbar-nav>li>.oa-navbar>[dropdown].open>a,   .navbar-main .navbar-nav>li>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>li>.oa-navbar>a:hover,   .navbar-main .navbar-nav>li>a:hover{background-color:#2b99a8}  .navbar-main .navbar-nav>li a.dropdown-toggle span.caret{margin-left:5px}  .navbar-main .navbar-nav>.open>.oa-navbar>[dropdown]>a,   .navbar-main .navbar-nav>.open>.oa-navbar>[dropdown]>a:hover,   .navbar-main .navbar-nav>.open>.oa-navbar>a,   .navbar-main .navbar-nav>.open>.oa-navbar>a:focus,   .navbar-main .navbar-nav>.open>.oa-navbar>a:hover,   .navbar-main .navbar-nav>.open>.oa-navbar>li>a:focus,   .navbar-main .navbar-nav>.open>a,   .navbar-main .navbar-nav>.open>a:focus,   .navbar-main .navbar-nav>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}  .navbar-main .navbar-primary>li>a{border:0}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{color:#eee;background-color:#2b99a8;border:0}  .navbar-main .navbar-utility .fa,   .navbar-main .navbar-utility a{font-size:1.1em}  .navbar-main .navbar-utility>.active>a{color:#eee;background-color:#2b99a8}  .navbar-main .navbar-utility>li>.open>a,   .navbar-main .navbar-utility>li>.open>a:focus,   .navbar-main .navbar-utility>li>.open>a:hover{color:#eee;border-color:transparent;background-color:transparent}@media (min-width:768px){  .navbar-main .navbar-primary>li>a{border-bottom:4px solid transparent}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{background-color:transparent;border-bottom:4px solid #2b99a8}  .navbar-main .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}}@media (max-width:calc(768px - 1px)){  .navbar-main .navbar-nav{margin:0}  .navbar-main .navbar-nav .fa{margin-right:.5em}  .navbar-main .navbar-collapse,   .navbar-main .navbar-form{border-color:#eee}  .navbar-main .navbar-collapse{padding:0}  .navbar-main .navbar-nav .open .dropdown-menu{padding-top:0;padding-bottom:0;background-color:#2b99a8}  .navbar-main .navbar-nav .open .dropdown-menu .dropdown-header,   .navbar-main .navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 35px}  .navbar-main .navbar-nav .open .dropdown-menu>li>a{color:#eee}  .navbar-main .navbar-nav .open .dropdown-menu>.active>a{color:#eee;background-color:#2b99a8}  .navbar-main .navbar-nav>li>a:hover{background-color:#2b99a8}  .navbar-main .navbar-utility{border-top:1px solid #eee}  .navbar-main .navbar-utility a{font-size:1em}  .navbar-main .navbar-primary>.active>a,   .navbar-main .navbar-primary>.active>a:focus,   .navbar-main .navbar-primary>.active>a:hover{background-color:#2b99a8}}"]],data:{}});function uh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,5,{links:1}),a["\u0275qud"](603979776,6,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/hosts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[6,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Hosts"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/hosts")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function lh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_cluster_monitor"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,7,{links:1}),a["\u0275qud"](603979776,8,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/monitor/"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[8,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Monitors"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/monitor/")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function ch(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_hosts"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,9,{links:1}),a["\u0275qud"](603979776,10,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/osd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[10,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["OSDs"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/osd")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function dh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_configuration"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,11,{links:1}),a["\u0275qud"](603979776,12,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/configuration"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[12,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Configuration"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/configuration")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function fh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_crush"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,13,{links:1}),a["\u0275qud"](603979776,14,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/crush-map"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[14,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-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,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function ph(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_modules"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,15,{links:1}),a["\u0275qud"](603979776,16,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/mgr-modules"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[16,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-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,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function hh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_log"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,17,{links:1}),a["\u0275qud"](603979776,18,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/logs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[18,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Logs"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/logs")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function gh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_prometheus"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,19,{links:1}),a["\u0275qud"](603979776,20,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/alerts"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[20,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Alerts"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/alerts")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function mh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_prometheus"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,21,{links:1}),a["\u0275qud"](603979776,22,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/silence"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[22,4],[4,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Silences"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/silence")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function bh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,18,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,uh)),a["\u0275did"](2,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,lh)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ch)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,dh)),a["\u0275did"](8,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,fh)),a["\u0275did"](10,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,ph)),a["\u0275did"](12,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,hh)),a["\u0275did"](14,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,gh)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,mh)),a["\u0275did"](18,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.permissions.hosts.read),t(e,4,0,n.permissions.monitor.read),t(e,6,0,n.permissions.osd.read),t(e,8,0,n.permissions.configOpt.read),t(e,10,0,n.permissions.hosts.read&&n.permissions.osd.read),t(e,12,0,n.permissions.configOpt.read),t(e,14,0,n.permissions.log.read),t(e,16,0,n.prometheusConfigured&&n.permissions.prometheus.read),t(e,18,0,n.prometheusConfigured&&n.permissions.prometheus.read)},null)}function yh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,12,"li",[["class","dropdown tc_menuitem tc_menuitem_cluster"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),a["\u0275did"](3,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,3,{links:1}),a["\u0275qud"](603979776,4,{linksWithHrefs:1}),(t()(),a["\u0275eld"](6,0,null,null,4,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,7).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,7).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,7).onEsc()&&r),r},null,null)),a["\u0275did"](7,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Cluster"])),(t()(),a["\u0275eld"](10,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,bh)),a["\u0275did"](12,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0),t(e,3,0,"active")},function(t,e){t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,6,0,!0,a["\u0275nov"](e,7).isDisabled,a["\u0275nov"](e,7).isOpen)})}function vh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_pool"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,23,{links:1}),a["\u0275qud"](603979776,24,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/pool"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[24,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Pools"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/pool")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function _h(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,27,{links:1}),a["\u0275qud"](603979776,28,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/block/rbd"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[28,4],[26,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Images"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/rbd")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function xh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"small",[["class","label label-warning"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)})}function Th(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"small",[["class","label label-danger"]],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){var n=e.component;t(e,1,0,null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors)})}function wh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,11,"li",[["class","tc_submenuitem tc_submenuitem_block_mirroring"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,29,{links:1}),a["\u0275qud"](603979776,30,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,7,"a",[["class","dropdown-item"],["routerLink","/block/mirroring"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[30,4],[26,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](6,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Mirroring"])),(t()(),a["\u0275and"](16777216,null,null,1,null,xh)),a["\u0275did"](9,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Th)),a["\u0275did"](11,16384,null,0,L.NgIf,[a.ViewContainerRef,a.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:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.warnings)),t(e,11,0,0!==(null==n.summaryData?null:null==n.summaryData.rbd_mirroring?null:n.summaryData.rbd_mirroring.errors))},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function Sh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,31,{links:1}),a["\u0275qud"](603979776,32,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/block/iscsi"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[32,4],[26,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["iSCSI"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/block/iscsi")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function Oh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,18,"li",[["class","dropdown tc_menuitem tc_menuitem_block"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),a["\u0275did"](3,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,25,{links:1}),a["\u0275qud"](603979776,26,{linksWithHrefs:1}),(t()(),a["\u0275eld"](6,0,null,null,5,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,8).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,8).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,8).onEsc()&&r),r},null,null)),a["\u0275did"](7,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275did"](8,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](9,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Block"])),(t()(),a["\u0275eld"](11,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275eld"](12,0,null,null,6,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,_h)),a["\u0275did"](14,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,wh)),a["\u0275did"](16,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Sh)),a["\u0275did"](18,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){var n=e.component;t(e,2,0),t(e,3,0,"active"),t(e,7,0,n.blockHealthColor()),t(e,14,0,e.parent.context.ngIf.rbd&&n.permissions.rbdImage.read),t(e,16,0,e.parent.context.ngIf.mirroring&&n.permissions.rbdMirroring.read),t(e,18,0,e.parent.context.ngIf.iscsi&&n.permissions.iscsi.read)},function(t,e){t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,6,0,!0,a["\u0275nov"](e,8).isDisabled,a["\u0275nov"](e,8).isOpen)})}function Ch(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_nfs"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,33,{links:1}),a["\u0275qud"](603979776,34,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/nfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[34,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["NFS"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/nfs")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function kh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","tc_menuitem tc_menuitem_cephs"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](1,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,35,{links:1}),a["\u0275qud"](603979776,36,{linksWithHrefs:1}),(t()(),a["\u0275eld"](4,0,null,null,2,"a",[["routerLink","/cephfs"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,5).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](5,671744,[[36,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Filesystems"]))],function(t,e){t(e,1,0,"active"),t(e,5,0,"/cephfs")},function(t,e){t(e,4,0,a["\u0275nov"](e,5).target,a["\u0275nov"](e,5).href)})}function Ih(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,21,"ul",[["class","dropdown-menu"]],null,null,null,null,null)),(t()(),a["\u0275eld"](1,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_daemons"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](2,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,39,{links:1}),a["\u0275qud"](603979776,40,{linksWithHrefs:1}),(t()(),a["\u0275eld"](5,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/daemon"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,6).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](6,671744,[[40,4],[38,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Daemons"])),(t()(),a["\u0275eld"](8,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_users"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](9,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,41,{links:1}),a["\u0275qud"](603979776,42,{linksWithHrefs:1}),(t()(),a["\u0275eld"](12,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/user"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,13).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](13,671744,[[42,4],[38,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Users"])),(t()(),a["\u0275eld"](15,0,null,null,6,"li",[["class","tc_submenuitem tc_submenuitem_rgw_buckets"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](16,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,43,{links:1}),a["\u0275qud"](603979776,44,{linksWithHrefs:1}),(t()(),a["\u0275eld"](19,0,null,null,2,"a",[["class","dropdown-item"],["routerLink","/rgw/bucket"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,20).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](20,671744,[[44,4],[38,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](-1,null,["Buckets"]))],function(t,e){t(e,2,0,"active"),t(e,6,0,"/rgw/daemon"),t(e,9,0,"active"),t(e,13,0,"/rgw/user"),t(e,16,0,"active"),t(e,20,0,"/rgw/bucket")},function(t,e){t(e,5,0,a["\u0275nov"](e,6).target,a["\u0275nov"](e,6).href),t(e,12,0,a["\u0275nov"](e,13).target,a["\u0275nov"](e,13).href),t(e,19,0,a["\u0275nov"](e,20).target,a["\u0275nov"](e,20).href)})}function Dh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,16777216,null,null,12,"li",[["class","dropdown tc_menuitem tc_menuitem_rgw"],["dropdown",""],["routerLinkActive","active"]],[[2,"dropup",null],[2,"open",null],[2,"show",null]],null,null,null,null)),a["\u0275prd"](512,null,Yn.f,Yn.f,[]),a["\u0275did"](2,212992,null,0,Yn.c,[a.ElementRef,a.Renderer2,a.ViewContainerRef,Ct.a,Yn.a,Yn.f],null,null),a["\u0275did"](3,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,37,{links:1}),a["\u0275qud"](603979776,38,{linksWithHrefs:1}),(t()(),a["\u0275eld"](6,0,null,null,4,"a",[["class","dropdown-toggle"],["data-toggle","dropdown"],["dropdownToggle",""]],[[1,"aria-haspopup",0],[1,"disabled",0],[1,"aria-expanded",0]],[[null,"click"],["document","click"],[null,"keyup.esc"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,7).onClick()&&r),"document:click"===e&&(r=!1!==a["\u0275nov"](t,7).onDocumentClick(n)&&r),"keyup.esc"===e&&(r=!1!==a["\u0275nov"](t,7).onEsc()&&r),r},null,null)),a["\u0275did"](7,147456,null,0,Yn.g,[Yn.f,a.ElementRef,Yn.c],null,null),(t()(),a["\u0275eld"](8,0,null,null,1,null,null,null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Object Gateway"])),(t()(),a["\u0275eld"](10,0,null,null,0,"span",[["class","caret"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,Ih)),a["\u0275did"](12,16384,null,0,Yn.d,[Yn.f,a.ViewContainerRef,a.TemplateRef],null,null),(t()(),a["\u0275and"](0,null,null,0))],function(t,e){t(e,2,0),t(e,3,0,"active")},function(t,e){t(e,0,0,a["\u0275nov"](e,2).dropup,a["\u0275nov"](e,2).isOpen,a["\u0275nov"](e,2).isOpen&&a["\u0275nov"](e,2).isBs4),t(e,6,0,!0,a["\u0275nov"](e,7).isDisabled,a["\u0275nov"](e,7).isOpen)})}function Rh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,44,"div",[["class","collapse navbar-collapse"],["id","bs-example-navbar-collapse-1"]],[[2,"collapse",null],[4,"display",null],[2,"in",null],[2,"show",null],[1,"aria-expanded",0],[1,"aria-hidden",0],[2,"collapsing",null]],null,null,null,null)),a["\u0275did"](1,16384,null,0,yp,[a.ElementRef,a.Renderer2],{collapse:[0,"collapse"]},null),(t()(),a["\u0275eld"](2,0,null,null,23,"ul",[["class","nav navbar-nav navbar-primary"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,10,"li",[["class","tc_menuitem tc_menuitem_dashboard"],["routerLinkActive","active"]],null,null,null,null,null)),a["\u0275did"](4,1720320,null,2,kt.n,[kt.l,a.ElementRef,a.Renderer2,a.ChangeDetectorRef],{routerLinkActive:[0,"routerLinkActive"]},null),a["\u0275qud"](603979776,1,{links:1}),a["\u0275qud"](603979776,2,{linksWithHrefs:1}),(t()(),a["\u0275eld"](7,0,null,null,6,"a",[["routerLink","/dashboard"]],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,8).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](8,671744,[[2,4]],0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275eld"](9,0,null,null,2,"i",[["class","fa fa-heartbeat fa-fw"]],null,null,null,null,null)),a["\u0275did"](10,278528,null,0,L.NgStyle,[a.KeyValueDiffers,a.ElementRef,a.Renderer2],{ngStyle:[0,"ngStyle"]},null),a["\u0275ppd"](11,1),(t()(),a["\u0275eld"](12,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Dashboard"])),(t()(),a["\u0275and"](16777216,null,null,1,null,yh)),a["\u0275did"](15,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,vh)),a["\u0275did"](17,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Oh)),a["\u0275did"](19,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Ch)),a["\u0275did"](21,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,kh)),a["\u0275did"](23,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Dh)),a["\u0275did"](25,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](26,0,null,null,18,"ul",[["class","nav navbar-nav navbar-utility"]],null,null,null,null,null)),(t()(),a["\u0275eld"](27,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](28,0,null,null,1,"cd-language-selector",[["class","oa-navbar"]],null,null,null,rd,Jc)),a["\u0275did"](29,114688,null,0,Xc,[ti.f],null,null),(t()(),a["\u0275eld"](30,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](31,0,null,null,1,"cd-task-manager",[["class","oa-navbar"]],null,null,null,Ep,xp)),a["\u0275did"](32,114688,null,0,_p,[cn.a,Fu.a],null,null),(t()(),a["\u0275eld"](33,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](34,0,null,null,1,"cd-notifications",[["class","oa-navbar"]],null,null,null,Bp,Mp)),a["\u0275did"](35,245760,null,0,Pp,[Ta.a,Lp,q.a,To,a.NgZone],null,null),(t()(),a["\u0275eld"](36,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](37,0,null,null,1,"cd-dashboard-help",[["class","oa-navbar"]],null,null,null,$p,Wp)),a["\u0275did"](38,114688,null,0,Up,[cn.a,pn.a,qa.b,q.a],null,null),(t()(),a["\u0275eld"](39,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](40,0,null,null,1,"cd-administration",[["class","oa-navbar"]],null,null,null,eh,Xp)),a["\u0275did"](41,114688,null,0,Zp,[q.a],null,null),(t()(),a["\u0275eld"](42,0,null,null,2,"li",[],null,null,null,null,null)),(t()(),a["\u0275eld"](43,0,null,null,1,"cd-identity",[["class","oa-navbar"]],null,null,null,ih,ah)),a["\u0275did"](44,114688,null,0,nh,[q.a,sd.a],null,null)],function(t,e){var n=e.component;t(e,1,0,n.isCollapsed),t(e,4,0,"active"),t(e,8,0,"/dashboard");var r=a["\u0275unv"](e,10,0,t(e,11,0,a["\u0275nov"](e.parent,0),null==n.summaryData?null:n.summaryData.health_status));t(e,10,0,r),t(e,15,0,n.permissions.hosts.read||n.permissions.monitor.read||n.permissions.osd.read||n.permissions.configOpt.read),t(e,17,0,n.permissions.pool.read),t(e,19,0,(e.context.ngIf.rbd||e.context.ngIf.mirroring||e.context.ngIf.iscsi)&&(n.permissions.rbdImage.read||n.permissions.rbdMirroring.read||n.permissions.iscsi.read)),t(e,21,0,null==n.permissions?null:null==n.permissions.nfs?null:n.permissions.nfs.read),t(e,23,0,e.context.ngIf.cephfs&&n.permissions.cephfs.read),t(e,25,0,e.context.ngIf.rgw&&n.permissions.rgw.read),t(e,29,0),t(e,32,0),t(e,35,0),t(e,38,0),t(e,41,0),t(e,44,0)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).isCollapse,a["\u0275nov"](e,1).display,a["\u0275nov"](e,1).isExpanded,a["\u0275nov"](e,1).isExpanded,a["\u0275nov"](e,1).isExpanded,a["\u0275nov"](e,1).isCollapsed,a["\u0275nov"](e,1).isCollapsing),t(e,7,0,a["\u0275nov"](e,8).target,a["\u0275nov"](e,8).href)})}function Nh(t){return a["\u0275vid"](0,[a["\u0275pid"](0,Ut,[]),(t()(),a["\u0275eld"](1,0,null,null,12,"nav",[["class","navbar navbar-default navbar-main"]],null,null,null,null,null)),(t()(),a["\u0275eld"](2,0,null,null,8,"div",[["class","navbar-header tc_logo_component"]],null,null,null,null,null)),(t()(),a["\u0275eld"](3,0,null,null,1,"a",[["class","navbar-brand"],["href","#"]],null,null,null,null,null)),(t()(),a["\u0275eld"](4,0,null,null,0,"img",[["alt","Ceph"],["src","assets/Ceph_Logo_Standard_RGB_White_120411_fa.png"]],null,null,null,null,null)),(t()(),a["\u0275eld"](5,0,null,null,5,"button",[["class","navbar-toggle collapsed"],["type","button"]],null,[[null,"click"]],function(t,e,n){var a=!0,r=t.component;return"click"===e&&(a=0!=(r.isCollapsed=!r.isCollapsed)&&a),a},null,null)),(t()(),a["\u0275eld"](6,0,null,null,1,"span",[["class","sr-only"]],null,null,null,null,null)),(t()(),a["\u0275ted"](-1,null,["Toggle navigation"])),(t()(),a["\u0275eld"](8,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](9,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),a["\u0275eld"](10,0,null,null,0,"span",[["class","icon-bar"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,2,null,Rh)),a["\u0275did"](12,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),a["\u0275pid"](131072,L.AsyncPipe,[a.ChangeDetectorRef])],function(t,e){var n=e.component;t(e,12,0,a["\u0275unv"](e,12,0,a["\u0275nov"](e,13).transform(n.enabledFeature$)))},null)}var Ah=n("ou9H"),Eh=n("P6uZ"),Lh=n("wbK0"),Ph=function(){function t(){}return t.prototype.resolve=function(t){var 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(Il.a)(a)},t.prototype.getFullPath=function(t){return t.pathFromRoot.reduce(function(t,e){return t+e.url.reduce(function(t,e){return t+"/"+e.path},"")},"")},t}(),Mh=function(){function t(t,e){var n=this;this.router=t,this.injector=e,this.crumbs=[],this.defaultResolver=new Ph,this.subscription=this.router.events.pipe(Object(al.a)(function(t){return t instanceof kt.d})).subscribe(function(){n._resolveCrumbs(t.routerState.snapshot.root).pipe(Object(nl.a)(function(t){return t}),Object(Ah.a)(function(t){return t.text}),Object(rl.a)(),Object(nl.a)(function(t){var e=n.postProcess(t);return n.wrapIntoObservable(e).pipe(Object(Eh.a)())})).subscribe(function(t){n.crumbs=t})})}return t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype._resolveCrumbs=function(t){var e,n=t.routeConfig&&t.routeConfig.data;if(n&&n.breadcrumbs){var a=(n.breadcrumbs.prototype instanceof Ph?this.injector.get(n.breadcrumbs):this.defaultResolver).resolve(t);e=this.wrapIntoObservable(a).pipe(Object(Eh.a)())}else e=Object(Il.a)([]);return t.firstChild&&(e=e.pipe(Object(Lh.a)(this._resolveCrumbs(t.firstChild)))),e},t.prototype.postProcess=function(t){var e=[];return t.forEach(function(t){var n=t.text.split("/");if(n.length>1){t.text=n[n.length-1];for(var a=0;a<n.length-1;a++)e.push({text:n[a],path:null})}e.push(t)}),e},t.prototype.isPromise=function(t){return t&&"function"==typeof t.then},t.prototype.wrapIntoObservable=function(t){return t instanceof Ao.a?t:this.isPromise(t)?Object(Qu.a)(Promise.resolve(t)):Object(Il.a)(t)},t}(),jh=a["\u0275crt"]({encapsulation:0,styles:[[".breadcrumb[_ngcontent-%COMP%]{padding:8px 0;background-color:transparent;border-radius:0}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]:before{padding:0 5px 0 7px;color:#474544;font-family:ForkAwesome;content:'\\f101'}.breadcrumb[_ngcontent-%COMP%] > li[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#474544}"]],data:{}});function qh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"a",[],[[1,"target",0],[8,"href",4]],[[null,"click"]],function(t,e,n){var r=!0;return"click"===e&&(r=!1!==a["\u0275nov"](t,1).onClick(n.button,n.ctrlKey,n.metaKey,n.shiftKey)&&r),r},null,null)),a["\u0275did"](1,671744,null,0,kt.o,[kt.l,kt.a,L.LocationStrategy],{routerLink:[0,"routerLink"]},null),(t()(),a["\u0275ted"](2,null,["",""]))],function(t,e){t(e,1,0,e.parent.context.$implicit.path)},function(t,e){t(e,0,0,a["\u0275nov"](e,1).target,a["\u0275nov"](e,1).href),t(e,2,0,e.parent.context.$implicit.text)})}function Fh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"span",[],null,null,null,null,null)),(t()(),a["\u0275ted"](1,null,["",""]))],null,function(t,e){t(e,1,0,e.parent.context.$implicit.text)})}function zh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,6,"li",[["class","breadcrumb-item"]],null,null,null,null,null)),a["\u0275did"](1,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](2,{active:0}),(t()(),a["\u0275and"](16777216,null,null,1,null,qh)),a["\u0275did"](4,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275and"](16777216,null,null,1,null,Fh)),a["\u0275did"](6,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){var n=t(e,2,0,e.context.last);t(e,1,0,"breadcrumb-item",n),t(e,4,0,!e.context.last&&null!==e.context.$implicit.path),t(e,6,0,e.context.last||null===e.context.$implicit.path)},null)}function Yh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"ol",[["class","breadcrumb"]],null,null,null,null,null)),(t()(),a["\u0275and"](16777216,null,null,1,null,zh)),a["\u0275did"](2,278528,null,0,L.NgForOf,[a.ViewContainerRef,a.TemplateRef,a.IterableDiffers],{ngForOf:[0,"ngForOf"]},null)],function(t,e){t(e,2,0,e.component.crumbs)},null)}function Hh(t){return a["\u0275vid"](0,[(t()(),a["\u0275and"](16777216,null,null,1,null,Yh)),a["\u0275did"](1,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null)],function(t,e){t(e,1,0,e.component.crumbs.length)},null)}var Gh=a["\u0275crt"]({encapsulation:0,styles:[[".dashboard[_ngcontent-%COMP%]{background-color:#f5f5f5;margin:0;padding:0}  #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 Vh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,1,"cd-navigation",[],null,null,null,Nh,sh)),a["\u0275did"](1,114688,null,0,oh,[q.a,vo,cn.a,re.a],null,null)],function(t,e){t(e,1,0)},null)}function Bh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,12,"block-ui",[],null,null,null,tt,Q)),a["\u0275did"](1,114688,null,0,U,[B],null,null),(t()(),a["\u0275and"](16777216,null,0,1,null,Vh)),a["\u0275did"](3,16384,null,0,L.NgIf,[a.ViewContainerRef,a.TemplateRef],{ngIf:[0,"ngIf"]},null),(t()(),a["\u0275eld"](4,0,null,0,6,"div",[["class","container-fluid"]],null,null,null,null,null)),a["\u0275did"](5,278528,null,0,L.NgClass,[a.IterableDiffers,a.KeyValueDiffers,a.ElementRef,a.Renderer2],{klass:[0,"klass"],ngClass:[1,"ngClass"]},null),a["\u0275pod"](6,{"full-height":0,dashboard:1}),(t()(),a["\u0275eld"](7,0,null,null,1,"cd-breadcrumbs",[],null,null,null,Hh,jh)),a["\u0275did"](8,180224,null,0,Mh,[kt.l,a.Injector],null,null),(t()(),a["\u0275eld"](9,16777216,null,null,1,"router-outlet",[],null,null,null,null,null)),a["\u0275did"](10,212992,null,0,kt.q,[kt.b,a.ViewContainerRef,a.ComponentFactoryResolver,[8,null],a.ChangeDetectorRef],null,null),(t()(),a["\u0275eld"](11,0,null,0,1,"block-ui",[],null,null,null,tt,Q)),a["\u0275did"](12,114688,null,0,U,[B],null,null)],function(t,e){var n=e.component;t(e,1,0),t(e,3,0,!n.isLoginActive());var a=t(e,6,0,n.isLoginActive(),n.isDashboardPage());t(e,5,0,"container-fluid",a),t(e,10,0),t(e,12,0)},null)}function Uh(t){return a["\u0275vid"](0,[(t()(),a["\u0275eld"](0,0,null,null,2,"cd-root",[],null,null,null,Bh,Gh)),a["\u0275prd"](5120,null,j.a,F,[]),a["\u0275did"](2,49152,null,0,z,[q.a,kt.l],null,null)],null,null)}var Wh=a["\u0275ccf"]("cd-root",z,Uh,{},{},[]),Kh=new a.InjectionToken("JWT_OPTIONS"),$h=function(){function t(t){void 0===t&&(t=null),this.tokenGetter=t&&t.tokenGetter||function(){}}return t.prototype.urlBase64Decode=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}return this.b64DecodeUnicode(e)},t.prototype.b64decode=function(t){var e="";if((t=String(t).replace(/=+$/,"")).length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var n=0,a=void 0,r=void 0,i=0;r=t.charAt(i++);~r&&(a=n%4?64*a+r:r,n++%4)?e+=String.fromCharCode(255&a>>(-2*n&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return e},t.prototype.b64DecodeUnicode=function(t){return decodeURIComponent(Array.prototype.map.call(this.b64decode(t),function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)}).join(""))},t.prototype.decodeToken=function(t){if(void 0===t&&(t=this.tokenGetter()),null===t)return null;var e=t.split(".");if(3!==e.length)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");var n=this.urlBase64Decode(e[1]);if(!n)throw new Error("Cannot decode the token.");return JSON.parse(n)},t.prototype.getTokenExpirationDate=function(t){var e;if(void 0===t&&(t=this.tokenGetter()),!(e=this.decodeToken(t)).hasOwnProperty("exp"))return null;var n=new Date(0);return n.setUTCSeconds(e.exp),n},t.prototype.isTokenExpired=function(t,e){if(void 0===t&&(t=this.tokenGetter()),null===t||""===t)return!0;var n=this.getTokenExpirationDate(t);return e=e||0,null===n||!(n.valueOf()>(new Date).valueOf()+1e3*e)},t}(),Zh=n("gTqA"),Xh=n("CxY0"),Jh=function(){function t(t,e){this.jwtHelper=e,this.tokenGetter=t.tokenGetter,this.headerName=t.headerName||"Authorization",this.authScheme=t.authScheme||""===t.authScheme?t.authScheme:"Bearer ",this.whitelistedDomains=t.whitelistedDomains||[],this.blacklistedRoutes=t.blacklistedRoutes||[],this.throwNoTokenError=t.throwNoTokenError||!1,this.skipWhenExpired=t.skipWhenExpired}return t.prototype.isWhitelistedDomain=function(t){var e=Object(Xh.parse)(t.url,!1,!0);return null===e.host||this.whitelistedDomains.findIndex(function(t){return"string"==typeof t?t===e.host:t instanceof RegExp&&t.test(e.host)})>-1},t.prototype.isBlacklistedRoute=function(t){var e=t.url;return this.blacklistedRoutes.findIndex(function(t){return"string"==typeof t?t===e:t instanceof RegExp&&t.test(e)})>-1},t.prototype.handleInterception=function(t,e,n){var a,r=!1;if(!t&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");return this.skipWhenExpired&&(r=!t||this.jwtHelper.isTokenExpired(t)),t&&r&&this.skipWhenExpired?e=e.clone():t&&this.isWhitelistedDomain(e)&&!this.isBlacklistedRoute(e)&&(e=e.clone({setHeaders:(a={},a[this.headerName]=""+this.authScheme+t,a)})),n.handle(e)},t.prototype.intercept=function(t,e){var n=this,a=this.tokenGetter();return a instanceof Promise?Object(Zh.from)(a).pipe(Object(nl.a)(function(a){return n.handleInterception(a,t,e)})):this.handleInterception(a,t,e)},t}(),Qh=n("XlPw"),tg=n("9Z1F"),eg=function(){function t(t,e,n){this.router=t,this.authStorageService=e,this.notificationService=n}return t.prototype.intercept=function(t,e){var n=this;return e.handle(t).pipe(Object(tg.a)(function(t){if(t instanceof ee.f){var e;switch(t.status){case 400:var a=new Yu.a,r=t.error.task;Ft.isPlainObject(r)?(r.metadata.component=r.metadata.component||t.error.component,a.name=r.name,a.metadata=r.metadata):a.metadata=t.error,a.success=!1,a.exception=t.error,e=n.notificationService.notifyTask(a);break;case 401:n.authStorageService.remove(),n.router.navigate(["/login"]);break;case 403:n.router.navigate(["/403"]);break;default:e=n.prepareNotification(t)}t.preventDefault=function(){n.notificationService.cancel(e)},t.ignoreStatusCode=function(t){this.status===t&&this.preventDefault()}}return Object(Qh.a)(t)}))},t.prototype.prepareNotification=function(t){return this.notificationService.show(function(){var e="";return Ft.isPlainObject(t.error)&&Ft.isString(t.error.detail)?e=t.error.detail:Ft.isString(t.error)?e=t.error:Ft.isString(t.message)&&(e=t.message),new _o.b(xa.a.error,t.status+" - "+t.statusText,e,void 0,t.application)})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(kt.l),a.inject(q.a),a.inject(Ta.a))},token:t,providedIn:"root"}),t}(),ng=n("ihYY");function ag(){return"undefined"!=typeof process}function rg(t){switch(t.length){case 0:return new ng.d;case 1:return t[0];default:return new ng.g(t)}}function ig(t,e,n,a,r,i){void 0===r&&(r={}),void 0===i&&(i={});var o=[],s=[],u=-1,l=null;if(a.forEach(function(t){var n=t.offset,a=n==u,c=a&&l||{};Object.keys(t).forEach(function(n){var a=n,s=t[n];if("offset"!==n)switch(a=e.normalizePropertyName(a,o),s){case ng.h:s=r[n];break;case ng.a:s=i[n];break;default:s=e.normalizeStyleValue(n,a,s,o)}c[a]=s}),a||s.push(c),l=c,u=n}),o.length)throw new Error("Unable to animate due to the following errors:\n - "+o.join("\n - "));return s}function og(t,e,n,a){switch(e){case"start":t.onStart(function(){return a(n&&sg(n,"start",t))});break;case"done":t.onDone(function(){return a(n&&sg(n,"done",t))});break;case"destroy":t.onDestroy(function(){return a(n&&sg(n,"destroy",t))})}}function sg(t,e,n){var a=n.totalTime,r=ug(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 ug(t,e,n,a,r,i,o){return void 0===r&&(r=""),void 0===i&&(i=0),{element:t,triggerName:e,fromState:n,toState:a,phaseName:r,totalTime:i,disabled:!!o}}function lg(t,e,n){var a;return t instanceof Map?(a=t.get(e))||t.set(e,a=n):(a=t[e])||(a=t[e]=n),a}function cg(t){var e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}var dg=function(t,e){return!1},fg=function(t,e){return!1},pg=function(t,e,n){return[]},hg=ag();if(hg||"undefined"!=typeof Element){if(dg=function(t,e){return t.contains(e)},hg||Element.prototype.matches)fg=function(t,e){return t.matches(e)};else{var gg=Element.prototype,mg=gg.matchesSelector||gg.mozMatchesSelector||gg.msMatchesSelector||gg.oMatchesSelector||gg.webkitMatchesSelector;mg&&(fg=function(t,e){return mg.apply(t,[e])})}pg=function(t,e,n){var a=[];if(n)a.push.apply(a,Object(Y.__spread)(t.querySelectorAll(e)));else{var r=t.querySelector(e);r&&a.push(r)}return a}}var bg=null,yg=!1;function vg(t){bg||(bg=("undefined"!=typeof document?document.body:null)||{},yg=!!bg.style&&"WebkitAppearance"in bg.style);var e=!0;return bg.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&!(e=t in bg.style)&&yg&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in bg.style),e}var _g=fg,xg=dg,Tg=pg;function wg(t){var e={};return Object.keys(t).forEach(function(n){var a=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[a]=t[n]}),e}var Sg=function(){function t(){}return t.prototype.validateStyleProperty=function(t){return vg(t)},t.prototype.matchesElement=function(t,e){return _g(t,e)},t.prototype.containsElement=function(t,e){return xg(t,e)},t.prototype.query=function(t,e,n){return Tg(t,e,n)},t.prototype.computeStyle=function(t,e,n){return n||""},t.prototype.animate=function(t,e,n,a,r,i,o){return void 0===i&&(i=[]),new ng.d(n,a)},t}(),Og=function(){function t(){}return t.NOOP=new Sg,t}(),Cg=1e3;function kg(t){if("number"==typeof t)return t;var e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:Ig(parseFloat(e[1]),e[2])}function Ig(t,e){switch(e){case"s":return t*Cg;default:return t}}function Dg(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){var a,r=0,i="";if("string"==typeof t){var o=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===o)return e.push('The provided timing value "'+t+'" is invalid.'),{duration:0,delay:0,easing:""};a=Ig(parseFloat(o[1]),o[2]);var s=o[3];null!=s&&(r=Ig(parseFloat(s),o[4]));var u=o[5];u&&(i=u)}else a=t;if(!n){var l=!1,c=e.length;a<0&&(e.push("Duration values below 0 are not allowed for this animation step."),l=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),l=!0),l&&e.splice(c,0,'The provided timing value "'+t+'" is invalid.')}return{duration:a,delay:r,easing:i}}(t,e,n)}function Rg(t,e){return void 0===e&&(e={}),Object.keys(t).forEach(function(n){e[n]=t[n]}),e}function Ng(t,e,n){if(void 0===n&&(n={}),e)for(var a in t)n[a]=t[a];else Rg(t,n);return n}function Ag(t,e,n){return n?e+":"+n+";":""}function Eg(t){for(var e="",n=0;n<t.style.length;n++)e+=Ag(0,a=t.style.item(n),t.style.getPropertyValue(a));for(var a in t.style)t.style.hasOwnProperty(a)&&!a.startsWith("_")&&(e+=Ag(0,a.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),t.style[a]));t.setAttribute("style",e)}function Lg(t,e){t.style&&(Object.keys(e).forEach(function(n){var a=Hg(n);t.style[a]=e[n]}),ag()&&Eg(t))}function Pg(t,e){t.style&&(Object.keys(e).forEach(function(e){var n=Hg(e);t.style[n]=""}),ag()&&Eg(t))}function Mg(t){return Array.isArray(t)?1==t.length?t[0]:Object(ng.e)(t):t}var jg=new RegExp("{{\\s*(.+?)\\s*}}","g");function qg(t){var e=[];if("string"==typeof t){for(var n=t.toString(),a=void 0;a=jg.exec(n);)e.push(a[1]);jg.lastIndex=0}return e}function Fg(t,e,n){var a=t.toString(),r=a.replace(jg,function(t,a){var 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 zg(t){for(var e=[],n=t.next();!n.done;)e.push(n.value),n=t.next();return e}var Yg=/-+([a-z0-9])/g;function Hg(t){return t.replace(Yg,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return t[1].toUpperCase()})}function Gg(t,e){return 0===t||0===e}function Vg(t,e,n){var a=Object.keys(n);if(a.length&&e.length){var r=e[0],i=[];if(a.forEach(function(t){r.hasOwnProperty(t)||i.push(t),r[t]=n[t]}),i.length)for(var o=function(){var n=e[s];i.forEach(function(e){n[e]=Ug(t,e)})},s=1;s<e.length;s++)o()}return e}function Bg(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 Ug(t,e){return window.getComputedStyle(t)[e]}var Wg="*",Kg=new Set(["true","1"]),$g=new Set(["false","0"]);function Zg(t,e){var n=Kg.has(t)||$g.has(t),a=Kg.has(e)||$g.has(e);return function(r,i){var o=t==Wg||t==r,s=e==Wg||e==i;return!o&&n&&"boolean"==typeof r&&(o=r?Kg.has(t):$g.has(t)),!s&&a&&"boolean"==typeof i&&(s=i?Kg.has(e):$g.has(e)),o&&s}}var Xg=new RegExp("s*:selfs*,?","g");function Jg(t,e,n){return new Qg(t).build(e,n)}var Qg=function(){function t(t){this._driver=t}return t.prototype.build=function(t,e){var n=new tm(e);return this._resetContextStyleTimingState(n),Bg(this,Mg(t),n)},t.prototype._resetContextStyleTimingState=function(t){t.currentQuerySelector="",t.collectedStyles={},t.collectedStyles[""]={},t.currentTime=0},t.prototype.visitTrigger=function(t,e){var n=this,a=e.queryCount=0,r=e.depCount=0,i=[],o=[];return"@"==t.name.charAt(0)&&e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),t.definitions.forEach(function(t){if(n._resetContextStyleTimingState(e),0==t.type){var s=t,u=s.name;u.toString().split(/\s*,\s*/).forEach(function(t){s.name=t,i.push(n.visitState(s,e))}),s.name=u}else if(1==t.type){var l=n.visitTransition(t,e);a+=l.queryCount,r+=l.depCount,o.push(l)}else e.errors.push("only state() and transition() definitions can sit inside of a trigger()")}),{type:7,name:t.name,states:i,transitions:o,queryCount:a,depCount:r,options:null}},t.prototype.visitState=function(t,e){var n=this.visitStyle(t.styles,e),a=t.options&&t.options.params||null;if(n.containsDynamicStyles){var r=new Set,i=a||{};if(n.styles.forEach(function(t){if(em(t)){var e=t;Object.keys(e).forEach(function(t){qg(e[t]).forEach(function(t){i.hasOwnProperty(t)||r.add(t)})})}}),r.size){var o=zg(r.values());e.errors.push('state("'+t.name+'", ...) must define default values for all the following style substitutions: '+o.join(", "))}}return{type:0,name:t.name,style:n,options:a?{params:a}:null}},t.prototype.visitTransition=function(t,e){e.queryCount=0,e.depCount=0;var n,a,r,i=Bg(this,Mg(t.animation),e);return{type:1,matchers:(n=t.expr,a=e.errors,r=[],"string"==typeof n?n.split(/\s*,\s*/).forEach(function(t){return function(t,e,n){if(":"==t[0]){var a=function(t,e){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return function(t,e){return parseFloat(e)>parseFloat(t)};case":decrement":return function(t,e){return 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}var r=t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(null==r||r.length<4)return n.push('The provided transition expression "'+t+'" is not supported'),e;var i=r[1],o=r[2],s=r[3];e.push(Zg(i,s)),"<"!=o[0]||i==Wg&&s==Wg||e.push(Zg(s,i))}(t,r,a)}):r.push(n),r),animation:i,queryCount:e.queryCount,depCount:e.depCount,options:nm(t.options)}},t.prototype.visitSequence=function(t,e){var n=this;return{type:2,steps:t.steps.map(function(t){return Bg(n,t,e)}),options:nm(t.options)}},t.prototype.visitGroup=function(t,e){var n=this,a=e.currentTime,r=0,i=t.steps.map(function(t){e.currentTime=a;var i=Bg(n,t,e);return r=Math.max(r,e.currentTime),i});return e.currentTime=r,{type:3,steps:i,options:nm(t.options)}},t.prototype.visitAnimate=function(t,e){var n,a=function(t,e){var n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return am(Dg(t,e).duration,0,"");var a=t;if(a.split(/\s+/).some(function(t){return"{"==t.charAt(0)&&"{"==t.charAt(1)})){var r=am(0,0,"");return r.dynamic=!0,r.strValue=a,r}return am((n=n||Dg(a,e)).duration,n.delay,n.easing)}(t.timings,e.errors);e.currentAnimateTimings=a;var r=t.styles?t.styles:Object(ng.f)({});if(5==r.type)n=this.visitKeyframes(r,e);else{var i=t.styles,o=!1;if(!i){o=!0;var s={};a.easing&&(s.easing=a.easing),i=Object(ng.f)(s)}e.currentTime+=a.duration+a.delay;var u=this.visitStyle(i,e);u.isEmptyStep=o,n=u}return e.currentAnimateTimings=null,{type:4,timings:a,style:n,options:null}},t.prototype.visitStyle=function(t,e){var n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n},t.prototype._makeStyleAst=function(t,e){var n=[];Array.isArray(t.styles)?t.styles.forEach(function(t){"string"==typeof t?t==ng.a?n.push(t):e.errors.push("The provided style string value "+t+" is not allowed."):n.push(t)}):n.push(t.styles);var a=!1,r=null;return n.forEach(function(t){if(em(t)){var e=t,n=e.easing;if(n&&(r=n,delete e.easing),!a)for(var i in e)if(e[i].toString().indexOf("{{")>=0){a=!0;break}}}),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:a,options:null}},t.prototype._validateStyleAst=function(t,e){var n=this,a=e.currentAnimateTimings,r=e.currentTime,i=e.currentTime;a&&i>0&&(i-=a.duration+a.delay),t.styles.forEach(function(t){"string"!=typeof t&&Object.keys(t).forEach(function(a){if(n._driver.validateStyleProperty(a)){var o,s,u,l=e.collectedStyles[e.currentQuerySelector],c=l[a],d=!0;c&&(i!=r&&i>=c.startTime&&r<=c.endTime&&(e.errors.push('The CSS property "'+a+'" that exists between the times of "'+c.startTime+'ms" and "'+c.endTime+'ms" is also being animated in a parallel animation between the times of "'+i+'ms" and "'+r+'ms"'),d=!1),i=c.startTime),d&&(l[a]={startTime:i,endTime:r}),e.options&&(o=e.errors,s=e.options.params||{},(u=qg(t[a])).length&&u.forEach(function(t){s.hasOwnProperty(t)||o.push("Unable to resolve the local animation param "+t+" in the given list of values")}))}else e.errors.push('The provided animation property "'+a+'" is not a supported CSS property for animations')})})},t.prototype.visitKeyframes=function(t,e){var n=this,a={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),a;var r=0,i=[],o=!1,s=!1,u=0,l=t.steps.map(function(t){var a=n._makeStyleAst(t,e),l=null!=a.offset?a.offset:function(t){if("string"==typeof t)return null;var e=null;if(Array.isArray(t))t.forEach(function(t){if(em(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}});else if(em(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}return e}(a.styles),c=0;return null!=l&&(r++,c=a.offset=l),s=s||c<0||c>1,o=o||c<u,u=c,i.push(c),a});s&&e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),o&&e.errors.push("Please ensure that all keyframe offsets are in order");var c=t.steps.length,d=0;r>0&&r<c?e.errors.push("Not all style() steps within the declared keyframes() contain offsets"):0==r&&(d=1/(c-1));var f=c-1,p=e.currentTime,h=e.currentAnimateTimings,g=h.duration;return l.forEach(function(t,r){var o=d>0?r==f?1:d*r:i[r],s=o*g;e.currentTime=p+h.delay+s,h.duration=s,n._validateStyleAst(t,e),t.offset=o,a.styles.push(t)}),a},t.prototype.visitReference=function(t,e){return{type:8,animation:Bg(this,Mg(t.animation),e),options:nm(t.options)}},t.prototype.visitAnimateChild=function(t,e){return e.depCount++,{type:9,options:nm(t.options)}},t.prototype.visitAnimateRef=function(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:nm(t.options)}},t.prototype.visitQuery=function(t,e){var n=e.currentQuerySelector,a=t.options||{};e.queryCount++,e.currentQuery=t;var r=Object(Y.__read)(function(t){var e=!!t.split(/\s*,\s*/).find(function(t){return":self"==t});return e&&(t=t.replace(Xg,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,function(t){return".ng-trigger-"+t.substr(1)}).replace(/:animating/g,".ng-animating"),e]}(t.selector),2),i=r[0],o=r[1];e.currentQuerySelector=n.length?n+" "+i:i,lg(e.collectedStyles,e.currentQuerySelector,{});var s=Bg(this,Mg(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:i,limit:a.limit||0,optional:!!a.optional,includeSelf:o,animation:s,originalSelector:t.selector,options:nm(t.options)}},t.prototype.visitStagger=function(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");var n="full"===t.timings?{duration:0,delay:0,easing:"full"}:Dg(t.timings,e.errors,!0);return{type:12,animation:Bg(this,Mg(t.animation),e),timings:n,options:null}},t}(),tm=function(){return function(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 em(t){return!Array.isArray(t)&&"object"==typeof t}function nm(t){var e;return t?(t=Rg(t)).params&&(t.params=(e=t.params)?Rg(e):null):t={},t}function am(t,e,n){return{duration:t,delay:e,easing:n}}function rm(t,e,n,a,r,i,o,s){return void 0===o&&(o=null),void 0===s&&(s=!1),{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:a,duration:r,delay:i,totalTime:r+i,easing:o,subTimeline:s}}var im=function(){function t(){this._map=new Map}return t.prototype.consume=function(t){var e=this._map.get(t);return e?this._map.delete(t):e=[],e},t.prototype.append=function(t,e){var n=this._map.get(t);n||this._map.set(t,n=[]),n.push.apply(n,Object(Y.__spread)(e))},t.prototype.has=function(t){return this._map.has(t)},t.prototype.clear=function(){this._map.clear()},t}(),om=new RegExp(":enter","g"),sm=new RegExp(":leave","g");function um(t,e,n,a,r,i,o,s,u,l){return void 0===i&&(i={}),void 0===o&&(o={}),void 0===l&&(l=[]),(new lm).buildKeyframes(t,e,n,a,r,i,o,s,u,l)}var lm=function(){function t(){}return t.prototype.buildKeyframes=function(t,e,n,a,r,i,o,s,u,l){void 0===l&&(l=[]),u=u||new im;var c=new dm(t,e,u,a,r,l,[]);c.options=s,c.currentTimeline.setStyles([i],null,c.errors,s),Bg(this,n,c);var d=c.timelines.filter(function(t){return t.containsAnimation()});if(d.length&&Object.keys(o).length){var f=d[d.length-1];f.allowOnlyTimelineStyles()||f.setStyles([o],null,c.errors,s)}return d.length?d.map(function(t){return t.buildKeyframes()}):[rm(e,[],[],[],0,0,"",!1)]},t.prototype.visitTrigger=function(t,e){},t.prototype.visitState=function(t,e){},t.prototype.visitTransition=function(t,e){},t.prototype.visitAnimateChild=function(t,e){var n=e.subInstructions.consume(e.element);if(n){var a=e.createSubContext(t.options),r=e.currentTimeline.currentTime,i=this._visitSubInstructions(n,a,a.options);r!=i&&e.transformIntoNewTimeline(i)}e.previousNode=t},t.prototype.visitAnimateRef=function(t,e){var n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t},t.prototype._visitSubInstructions=function(t,e,n){var a=e.currentTimeline.currentTime,r=null!=n.duration?kg(n.duration):null,i=null!=n.delay?kg(n.delay):null;return 0!==r&&t.forEach(function(t){var n=e.appendInstructionToTimeline(t,r,i);a=Math.max(a,n.duration+n.delay)}),a},t.prototype.visitReference=function(t,e){e.updateOptions(t.options,!0),Bg(this,t.animation,e),e.previousNode=t},t.prototype.visitSequence=function(t,e){var n=this,a=e.subContextCount,r=e,i=t.options;if(i&&(i.params||i.delay)&&((r=e.createSubContext(i)).transformIntoNewTimeline(),null!=i.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=cm);var o=kg(i.delay);r.delayNextStep(o)}t.steps.length&&(t.steps.forEach(function(t){return Bg(n,t,r)}),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>a&&r.transformIntoNewTimeline()),e.previousNode=t},t.prototype.visitGroup=function(t,e){var n=this,a=[],r=e.currentTimeline.currentTime,i=t.options&&t.options.delay?kg(t.options.delay):0;t.steps.forEach(function(o){var s=e.createSubContext(t.options);i&&s.delayNextStep(i),Bg(n,o,s),r=Math.max(r,s.currentTimeline.currentTime),a.push(s.currentTimeline)}),a.forEach(function(t){return e.currentTimeline.mergeTimelineCollectedStyles(t)}),e.transformIntoNewTimeline(r),e.previousNode=t},t.prototype._visitTiming=function(t,e){if(t.dynamic){var n=t.strValue;return Dg(e.params?Fg(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}},t.prototype.visitAnimate=function(t,e){var n=e.currentAnimateTimings=this._visitTiming(t.timings,e),a=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),a.snapshotCurrentStyles());var 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},t.prototype.visitStyle=function(t,e){var n=e.currentTimeline,a=e.currentAnimateTimings;!a&&n.getCurrentStyleProperties().length&&n.forwardFrame();var r=a&&a.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t},t.prototype.visitKeyframes=function(t,e){var n=e.currentAnimateTimings,a=e.currentTimeline.duration,r=n.duration,i=e.createSubContext().currentTimeline;i.easing=n.easing,t.styles.forEach(function(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},t.prototype.visitQuery=function(t,e){var n=this,a=e.currentTimeline.currentTime,r=t.options||{},i=r.delay?kg(r.delay):0;i&&(6===e.previousNode.type||0==a&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=cm);var o=a,s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=s.length;var u=null;s.forEach(function(a,r){e.currentQueryIndex=r;var s=e.createSubContext(t.options,a);i&&s.delayNextStep(i),a===e.element&&(u=s.currentTimeline),Bg(n,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),o=Math.max(o,s.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(o),u&&(e.currentTimeline.mergeTimelineCollectedStyles(u),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t},t.prototype.visitStagger=function(t,e){var n=e.parentContext,a=e.currentTimeline,r=t.timings,i=Math.abs(r.duration),o=i*(e.currentQueryTotal-1),s=i*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":s=o-s;break;case"full":s=n.currentStaggerTime}var u=e.currentTimeline;s&&u.delayNextStep(s);var l=u.currentTime;Bg(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=a.currentTime-l+(a.startTime-n.currentTimeline.startTime)},t}(),cm={},dm=function(){function t(t,e,n,a,r,i,o,s){this._driver=t,this.element=e,this.subInstructions=n,this._enterClassName=a,this._leaveClassName=r,this.errors=i,this.timelines=o,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=cm,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=s||new fm(this._driver,e,0),o.push(this.currentTimeline)}return Object.defineProperty(t.prototype,"params",{get:function(){return this.options.params},enumerable:!0,configurable:!0}),t.prototype.updateOptions=function(t,e){var n=this;if(t){var a=t,r=this.options;null!=a.duration&&(r.duration=kg(a.duration)),null!=a.delay&&(r.delay=kg(a.delay));var i=a.params;if(i){var o=r.params;o||(o=this.options.params={}),Object.keys(i).forEach(function(t){e&&o.hasOwnProperty(t)||(o[t]=Fg(i[t],o,n.errors))})}}},t.prototype._copyOptions=function(){var t={};if(this.options){var e=this.options.params;if(e){var n=t.params={};Object.keys(e).forEach(function(t){n[t]=e[t]})}}return t},t.prototype.createSubContext=function(e,n,a){void 0===e&&(e=null);var r=n||this.element,i=new t(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,a||0));return i.previousNode=this.previousNode,i.currentAnimateTimings=this.currentAnimateTimings,i.options=this._copyOptions(),i.updateOptions(e),i.currentQueryIndex=this.currentQueryIndex,i.currentQueryTotal=this.currentQueryTotal,i.parentContext=this,this.subContextCount++,i},t.prototype.transformIntoNewTimeline=function(t){return this.previousNode=cm,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline},t.prototype.appendInstructionToTimeline=function(t,e,n){var a={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new pm(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,a,t.stretchStartingKeyframe);return this.timelines.push(r),a},t.prototype.incrementTime=function(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)},t.prototype.delayNextStep=function(t){t>0&&this.currentTimeline.delayNextStep(t)},t.prototype.invokeQuery=function(t,e,n,a,r,i){var o=[];if(a&&o.push(this.element),t.length>0){t=(t=t.replace(om,"."+this._enterClassName)).replace(sm,"."+this._leaveClassName);var s=this._driver.query(this.element,t,1!=n);0!==n&&(s=n<0?s.slice(s.length+n,s.length):s.slice(0,n)),o.push.apply(o,Object(Y.__spread)(s))}return r||0!=o.length||i.push('`query("'+e+'")` returned zero elements. (Use `query("'+e+'", { optional: true })` if you wish to allow this.)'),o},t}(),fm=function(){function t(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()}return t.prototype.containsAnimation=function(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}},t.prototype.getCurrentStyleProperties=function(){return Object.keys(this._currentKeyframe)},Object.defineProperty(t.prototype,"currentTime",{get:function(){return this.startTime+this.duration},enumerable:!0,configurable:!0}),t.prototype.delayNextStep=function(t){var e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t},t.prototype.fork=function(e,n){return this.applyStylesToKeyframe(),new t(this._driver,e,n||this.currentTime,this._elementTimelineStylesLookup)},t.prototype._loadKeyframe=function(){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))},t.prototype.forwardFrame=function(){this.duration+=1,this._loadKeyframe()},t.prototype.forwardTime=function(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()},t.prototype._updateStyle=function(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}},t.prototype.allowOnlyTimelineStyles=function(){return this._currentEmptyStepKeyframe!==this._currentKeyframe},t.prototype.applyEmptyStep=function(t){var e=this;t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach(function(t){e._backFill[t]=e._globalTimelineStyles[t]||ng.a,e._currentKeyframe[t]=ng.a}),this._currentEmptyStepKeyframe=this._currentKeyframe},t.prototype.setStyles=function(t,e,n,a){var r=this;e&&(this._previousKeyframe.easing=e);var i=a&&a.params||{},o=function(t,e){var n,a={};return t.forEach(function(t){"*"===t?(n=n||Object.keys(e)).forEach(function(t){a[t]=ng.a}):Ng(t,!1,a)}),a}(t,this._globalTimelineStyles);Object.keys(o).forEach(function(t){var e=Fg(o[t],i,n);r._pendingStyles[t]=e,r._localTimelineStyles.hasOwnProperty(t)||(r._backFill[t]=r._globalTimelineStyles.hasOwnProperty(t)?r._globalTimelineStyles[t]:ng.a),r._updateStyle(t,e)})},t.prototype.applyStylesToKeyframe=function(){var t=this,e=this._pendingStyles,n=Object.keys(e);0!=n.length&&(this._pendingStyles={},n.forEach(function(n){t._currentKeyframe[n]=e[n]}),Object.keys(this._localTimelineStyles).forEach(function(e){t._currentKeyframe.hasOwnProperty(e)||(t._currentKeyframe[e]=t._localTimelineStyles[e])}))},t.prototype.snapshotCurrentStyles=function(){var t=this;Object.keys(this._localTimelineStyles).forEach(function(e){var n=t._localTimelineStyles[e];t._pendingStyles[e]=n,t._updateStyle(e,n)})},t.prototype.getFinalKeyframe=function(){return this._keyframes.get(this.duration)},Object.defineProperty(t.prototype,"properties",{get:function(){var t=[];for(var e in this._currentKeyframe)t.push(e);return t},enumerable:!0,configurable:!0}),t.prototype.mergeTimelineCollectedStyles=function(t){var e=this;Object.keys(t._styleSummary).forEach(function(n){var a=e._styleSummary[n],r=t._styleSummary[n];(!a||r.time>a.time)&&e._updateStyle(n,r.value)})},t.prototype.buildKeyframes=function(){var t=this;this.applyStylesToKeyframe();var e=new Set,n=new Set,a=1===this._keyframes.size&&0===this.duration,r=[];this._keyframes.forEach(function(i,o){var s=Ng(i,!0);Object.keys(s).forEach(function(t){var a=s[t];a==ng.h?e.add(t):a==ng.a&&n.add(t)}),a||(s.offset=o/t.duration),r.push(s)});var i=e.size?zg(e.values()):[],o=n.size?zg(n.values()):[];if(a){var s=r[0],u=Rg(s);s.offset=0,u.offset=1,r=[s,u]}return rm(this.element,r,i,o,this.duration,this.startTime,this.easing,!1)},t}(),pm=function(t){function e(e,n,a,r,i,o,s){void 0===s&&(s=!1);var u=t.call(this,e,n,o.delay)||this;return u.element=n,u.keyframes=a,u.preStyleProps=r,u.postStyleProps=i,u._stretchStartingKeyframe=s,u.timings={duration:o.duration,delay:o.delay,easing:o.easing},u}return Object(Y.__extends)(e,t),e.prototype.containsAnimation=function(){return this.keyframes.length>1},e.prototype.buildKeyframes=function(){var t=this.keyframes,e=this.timings,n=e.delay,a=e.duration,r=e.easing;if(this._stretchStartingKeyframe&&n){var i=[],o=a+n,s=n/o,u=Ng(t[0],!1);u.offset=0,i.push(u);var l=Ng(t[0],!1);l.offset=hm(s),i.push(l);for(var c=t.length-1,d=1;d<=c;d++){var f=Ng(t[d],!1);f.offset=hm((n+f.offset*a)/o),i.push(f)}a=o,n=0,r="",t=i}return rm(this.element,t,this.preStyleProps,this.postStyleProps,a,n,r,!0)},e}(fm);function hm(t,e){void 0===e&&(e=3);var n=Math.pow(10,e-1);return Math.round(t*n)/n}var gm=function(){return function(){}}(),mm=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Y.__extends)(e,t),e.prototype.normalizePropertyName=function(t,e){return Hg(t)},e.prototype.normalizeStyleValue=function(t,e,n,a){var r="",i=n.toString().trim();if(bm[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{var o=n.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&0==o[1].length&&a.push("Please provide a CSS unit value for "+t+":"+n)}return i+r},e}(gm),bm=ym("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 ym(t){var e={};return t.forEach(function(t){return e[t]=!0}),e}function vm(t,e,n,a,r,i,o,s,u,l,c,d,f){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:i,toState:a,toStyles:o,timelines:s,queriedElements:u,preStyleProps:l,postStyleProps:c,totalTime:d,errors:f}}var _m={},xm=function(){function t(t,e,n){this._triggerName=t,this.ast=e,this._stateStyles=n}return t.prototype.match=function(t,e,n,a){return function(t,e,n,a,r){return t.some(function(t){return t(e,n,a,r)})}(this.ast.matchers,t,e,n,a)},t.prototype.buildStyles=function(t,e,n){var a=this._stateStyles["*"],r=this._stateStyles[t],i=a?a.buildStyles(e,n):{};return r?r.buildStyles(e,n):i},t.prototype.build=function(t,e,n,a,r,i,o,s,u,l){var c=[],d=this.ast.options&&this.ast.options.params||_m,f=this.buildStyles(n,o&&o.params||_m,c),p=s&&s.params||_m,h=this.buildStyles(a,p,c),g=new Set,m=new Map,b=new Map,y="void"===a,v={params:Object(Y.__assign)({},d,p)},_=l?[]:um(t,e,this.ast.animation,r,i,f,h,v,u,c),x=0;if(_.forEach(function(t){x=Math.max(t.duration+t.delay,x)}),c.length)return vm(e,this._triggerName,n,a,y,f,h,[],[],m,b,x,c);_.forEach(function(t){var n=t.element,a=lg(m,n,{});t.preStyleProps.forEach(function(t){return a[t]=!0});var r=lg(b,n,{});t.postStyleProps.forEach(function(t){return r[t]=!0}),n!==e&&g.add(n)});var T=zg(g.values());return vm(e,this._triggerName,n,a,y,f,h,_,T,m,b,x)},t}(),Tm=function(){function t(t,e){this.styles=t,this.defaultParams=e}return t.prototype.buildStyles=function(t,e){var n={},a=Rg(this.defaultParams);return Object.keys(t).forEach(function(e){var n=t[e];null!=n&&(a[e]=n)}),this.styles.styles.forEach(function(t){if("string"!=typeof t){var r=t;Object.keys(r).forEach(function(t){var i=r[t];i.length>1&&(i=Fg(i,a,e)),n[t]=i})}}),n},t}(),wm=function(){function t(t,e){var n=this;this.name=t,this.ast=e,this.transitionFactories=[],this.states={},e.states.forEach(function(t){n.states[t.name]=new Tm(t.style,t.options&&t.options.params||{})}),Sm(this.states,"true","1"),Sm(this.states,"false","0"),e.transitions.forEach(function(e){n.transitionFactories.push(new xm(t,e,n.states))}),this.fallbackTransition=new xm(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[function(t,e){return!0}],options:null,queryCount:0,depCount:0},this.states)}return Object.defineProperty(t.prototype,"containsQueries",{get:function(){return this.ast.queryCount>0},enumerable:!0,configurable:!0}),t.prototype.matchTransition=function(t,e,n,a){return this.transitionFactories.find(function(r){return r.match(t,e,n,a)})||null},t.prototype.matchStyles=function(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)},t}();function Sm(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}var Om=new im,Cm=function(){function t(t,e,n){this.bodyNode=t,this._driver=e,this._normalizer=n,this._animations={},this._playersById={},this.players=[]}return t.prototype.register=function(t,e){var n=[],a=Jg(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},t.prototype._buildPlayer=function(t,e,n){var a=t.element,r=ig(0,this._normalizer,0,t.keyframes,e,n);return this._driver.animate(a,r,t.duration,t.delay,t.easing,[],!0)},t.prototype.create=function(t,e,n){var a=this;void 0===n&&(n={});var r,i=[],o=this._animations[t],s=new Map;if(o?(r=um(this._driver,e,o,"ng-enter","ng-leave",{},{},n,Om,i)).forEach(function(t){var e=lg(s,t.element,{});t.postStyleProps.forEach(function(t){return e[t]=null})}):(i.push("The requested animation doesn't exist or has already been destroyed"),r=[]),i.length)throw new Error("Unable to create the animation due to the following errors: "+i.join("\n"));s.forEach(function(t,e){Object.keys(t).forEach(function(n){t[n]=a._driver.computeStyle(e,n,ng.a)})});var u=rg(r.map(function(t){var e=s.get(t.element);return a._buildPlayer(t,{},e)}));return this._playersById[t]=u,u.onDestroy(function(){return a.destroy(t)}),this.players.push(u),u},t.prototype.destroy=function(t){var e=this._getPlayer(t);e.destroy(),delete this._playersById[t];var n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)},t.prototype._getPlayer=function(t){var e=this._playersById[t];if(!e)throw new Error("Unable to find the timeline player referenced by "+t);return e},t.prototype.listen=function(t,e,n,a){var r=ug(e,"","","");return og(this._getPlayer(t),n,r,a),function(){}},t.prototype.command=function(t,e,n,a){if("register"!=n)if("create"!=n){var 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)}}else this.create(t,e,a[0]||{});else this.register(t,a[0])},t}(),km=[],Im={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Dm={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Rm="__ng_removed",Nm=function(){function t(t,e){void 0===e&&(e=""),this.namespaceId=e;var n=t&&t.hasOwnProperty("value");if(this.value=function(t){return null!=t?t:null}(n?t.value:t),n){var a=Rg(t);delete a.value,this.options=a}else this.options={};this.options.params||(this.options.params={})}return Object.defineProperty(t.prototype,"params",{get:function(){return this.options.params},enumerable:!0,configurable:!0}),t.prototype.absorbOptions=function(t){var e=t.params;if(e){var n=this.options.params;Object.keys(e).forEach(function(t){null==n[t]&&(n[t]=e[t])})}},t}(),Am=new Nm("void"),Em=function(){function t(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,Ym(e,this._hostClassName)}return t.prototype.listen=function(t,e,n,a){var r,i=this;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 o=lg(this._elementListeners,t,[]),s={name:e,phase:n,callback:a};o.push(s);var u=lg(this._engine.statesByElement,t,{});return u.hasOwnProperty(e)||(Ym(t,"ng-trigger"),Ym(t,"ng-trigger-"+e),u[e]=Am),function(){i._engine.afterFlush(function(){var t=o.indexOf(s);t>=0&&o.splice(t,1),i._triggers[e]||delete u[e]})}},t.prototype.register=function(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)},t.prototype._getTrigger=function(t){var e=this._triggers[t];if(!e)throw new Error('The provided animation trigger "'+t+'" has not been registered!');return e},t.prototype.trigger=function(t,e,n,a){var r=this;void 0===a&&(a=!0);var i=this._getTrigger(e),o=new Pm(this.id,e,t),s=this._engine.statesByElement.get(t);s||(Ym(t,"ng-trigger"),Ym(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));var u=s[e],l=new Nm(n,this.id);if(!(n&&n.hasOwnProperty("value"))&&u&&l.absorbOptions(u.options),s[e]=l,u||(u=Am),"void"===l.value||u.value!==l.value){var c=lg(this._engine.playersByElement,t,[]);c.forEach(function(t){t.namespaceId==r.id&&t.triggerName==e&&t.queued&&t.destroy()});var d=i.matchTransition(u.value,l.value,t,l.params),f=!1;if(!d){if(!a)return;d=i.fallbackTransition,f=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:d,fromState:u,toState:l,player:o,isFallbackTransition:f}),f||(Ym(t,"ng-animate-queued"),o.onStart(function(){Hm(t,"ng-animate-queued")})),o.onDone(function(){var e=r.players.indexOf(o);e>=0&&r.players.splice(e,1);var n=r._engine.playersByElement.get(t);if(n){var a=n.indexOf(o);a>=0&&n.splice(a,1)}}),this.players.push(o),c.push(o),o}if(!function(t,e){var n=Object.keys(t),a=Object.keys(e);if(n.length!=a.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(!e.hasOwnProperty(i)||t[i]!==e[i])return!1}return!0}(u.params,l.params)){var p=[],h=i.matchStyles(u.value,u.params,p),g=i.matchStyles(l.value,l.params,p);p.length?this._engine.reportError(p):this._engine.afterFlush(function(){Pg(t,h),Lg(t,g)})}},t.prototype.deregister=function(t){var e=this;delete this._triggers[t],this._engine.statesByElement.forEach(function(e,n){delete e[t]}),this._elementListeners.forEach(function(n,a){e._elementListeners.set(a,n.filter(function(e){return e.name!=t}))})},t.prototype.clearElementCache=function(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);var e=this._engine.playersByElement.get(t);e&&(e.forEach(function(t){return t.destroy()}),this._engine.playersByElement.delete(t))},t.prototype._signalRemovalForInnerTriggers=function(t,e,n){var a=this;void 0===n&&(n=!1),this._engine.driver.query(t,".ng-trigger",!0).forEach(function(t){if(!t[Rm]){var n=a._engine.fetchNamespacesByElement(t);n.size?n.forEach(function(n){return n.triggerLeaveAnimation(t,e,!1,!0)}):a.clearElementCache(t)}})},t.prototype.triggerLeaveAnimation=function(t,e,n,a){var r=this,i=this._engine.statesByElement.get(t);if(i){var o=[];if(Object.keys(i).forEach(function(e){if(r._triggers[e]){var n=r.trigger(t,e,"void",a);n&&o.push(n)}}),o.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&rg(o).onDone(function(){return r._engine.processLeaveNode(t)}),!0}return!1},t.prototype.prepareLeaveAnimationListeners=function(t){var e=this,n=this._elementListeners.get(t);if(n){var a=new Set;n.forEach(function(n){var r=n.name;if(!a.has(r)){a.add(r);var i=e._triggers[r].fallbackTransition,o=e._engine.statesByElement.get(t)[r]||Am,s=new Nm("void"),u=new Pm(e.id,r,t);e._engine.totalQueuedPlayers++,e._queue.push({element:t,triggerName:r,transition:i,fromState:o,toState:s,player:u,isFallbackTransition:!0})}})}},t.prototype.removeNode=function(t,e){var n=this,a=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e,!0),!this.triggerLeaveAnimation(t,e,!0)){var r=!1;if(a.totalAnimations){var i=a.players.length?a.playersByQueriedElement.get(t):[];if(i&&i.length)r=!0;else for(var o=t;o=o.parentNode;)if(a.statesByElement.get(o)){r=!0;break}}this.prepareLeaveAnimationListeners(t),r?a.markElementAsRemoved(this.id,t,!1,e):(a.afterFlush(function(){return n.clearElementCache(t)}),a.destroyInnerAnimations(t),a._onRemovalComplete(t,e))}},t.prototype.insertNode=function(t,e){Ym(t,this._hostClassName)},t.prototype.drainQueuedTransitions=function(t){var e=this,n=[];return this._queue.forEach(function(a){var r=a.player;if(!r.destroyed){var i=a.element,o=e._elementListeners.get(i);o&&o.forEach(function(e){if(e.name==a.triggerName){var n=ug(i,a.triggerName,a.fromState.value,a.toState.value);n._data=t,og(a.player,e.phase,n,e.callback)}}),r.markedForDestroy?e._engine.afterFlush(function(){r.destroy()}):n.push(a)}}),this._queue=[],n.sort(function(t,n){var a=t.transition.ast.depCount,r=n.transition.ast.depCount;return 0==a||0==r?a-r:e._engine.driver.containsElement(t.element,n.element)?1:-1})},t.prototype.destroy=function(t){this.players.forEach(function(t){return t.destroy()}),this._signalRemovalForInnerTriggers(this.hostElement,t)},t.prototype.elementContainsData=function(t){var e=!1;return this._elementListeners.has(t)&&(e=!0),!!this._queue.find(function(e){return e.element===t})||e},t}(),Lm=function(){function t(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=function(t,e){}}return t.prototype._onRemovalComplete=function(t,e){this.onRemovalComplete(t,e)},Object.defineProperty(t.prototype,"queuedPlayers",{get:function(){var t=[];return this._namespaceList.forEach(function(e){e.players.forEach(function(e){e.queued&&t.push(e)})}),t},enumerable:!0,configurable:!0}),t.prototype.createNamespace=function(t,e){var n=new Em(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n},t.prototype._balanceNamespaceList=function(t,e){var n=this._namespaceList.length-1;if(n>=0){for(var a=!1,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},t.prototype.register=function(t,e){var n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n},t.prototype.registerTrigger=function(t,e,n){var a=this._namespaceLookup[t];a&&a.register(e,n)&&this.totalAnimations++},t.prototype.destroy=function(t,e){var n=this;if(t){var a=this._fetchNamespace(t);this.afterFlush(function(){n.namespacesByHostElement.delete(a.hostElement),delete n._namespaceLookup[t];var e=n._namespaceList.indexOf(a);e>=0&&n._namespaceList.splice(e,1)}),this.afterFlushAnimationsDone(function(){return a.destroy(e)})}},t.prototype._fetchNamespace=function(t){return this._namespaceLookup[t]},t.prototype.fetchNamespacesByElement=function(t){var e=new Set,n=this.statesByElement.get(t);if(n)for(var a=Object.keys(n),r=0;r<a.length;r++){var i=n[a[r]].namespaceId;if(i){var o=this._fetchNamespace(i);o&&e.add(o)}}return e},t.prototype.trigger=function(t,e,n,a){if(Mm(e)){var r=this._fetchNamespace(t);if(r)return r.trigger(e,n,a),!0}return!1},t.prototype.insertNode=function(t,e,n,a){if(Mm(e)){var r=e[Rm];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;var i=this.collectedLeaveElements.indexOf(e);i>=0&&this.collectedLeaveElements.splice(i,1)}if(t){var o=this._fetchNamespace(t);o&&o.insertNode(e,n)}a&&this.collectEnterElement(e)}},t.prototype.collectEnterElement=function(t){this.collectedEnterElements.push(t)},t.prototype.markElementAsDisabled=function(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),Ym(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),Hm(t,"ng-animate-disabled"))},t.prototype.removeNode=function(t,e,n){if(Mm(e)){var a=t?this._fetchNamespace(t):null;a?a.removeNode(e,n):this.markElementAsRemoved(t,e,!1,n)}else this._onRemovalComplete(e,n)},t.prototype.markElementAsRemoved=function(t,e,n,a){this.collectedLeaveElements.push(e),e[Rm]={namespaceId:t,setForRemoval:a,hasAnimation:n,removedBeforeQueried:!1}},t.prototype.listen=function(t,e,n,a,r){return Mm(e)?this._fetchNamespace(t).listen(e,n,a,r):function(){}},t.prototype._buildInstruction=function(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)},t.prototype.destroyInnerAnimations=function(t){var e=this,n=this.driver.query(t,".ng-trigger",!0);n.forEach(function(t){return e.destroyActiveAnimationsForElement(t)}),0!=this.playersByQueriedElement.size&&(n=this.driver.query(t,".ng-animating",!0)).forEach(function(t){return e.finishActiveQueriedAnimationOnElement(t)})},t.prototype.destroyActiveAnimationsForElement=function(t){var e=this.playersByElement.get(t);e&&e.forEach(function(t){t.queued?t.markedForDestroy=!0:t.destroy()})},t.prototype.finishActiveQueriedAnimationOnElement=function(t){var e=this.playersByQueriedElement.get(t);e&&e.forEach(function(t){return t.finish()})},t.prototype.whenRenderingDone=function(){var t=this;return new Promise(function(e){if(t.players.length)return rg(t.players).onDone(function(){return e()});e()})},t.prototype.processLeaveNode=function(t){var e=this,n=t[Rm];if(n&&n.setForRemoval){if(t[Rm]=Im,n.namespaceId){this.destroyInnerAnimations(t);var a=this._fetchNamespace(n.namespaceId);a&&a.clearElementCache(t)}this._onRemovalComplete(t,n.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach(function(t){e.markElementAsDisabled(t,!1)})},t.prototype.flush=function(t){var e=this;void 0===t&&(t=-1);var n=[];if(this.newHostElements.size&&(this.newHostElements.forEach(function(t,n){return e._balanceNamespaceList(t,n)}),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(var a=0;a<this.collectedEnterElements.length;a++)Ym(this.collectedEnterElements[a],"ng-star-inserted");if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){var r=[];try{n=this._flushAnimations(r,t)}finally{for(a=0;a<r.length;a++)r[a]()}}else for(a=0;a<this.collectedLeaveElements.length;a++)this.processLeaveNode(this.collectedLeaveElements[a]);if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(function(t){return t()}),this._flushFns=[],this._whenQuietFns.length){var i=this._whenQuietFns;this._whenQuietFns=[],n.length?rg(n).onDone(function(){i.forEach(function(t){return t()})}):i.forEach(function(t){return t()})}},t.prototype.reportError=function(t){throw new Error("Unable to process animations due to the following failed trigger transitions\n "+t.join("\n"))},t.prototype._flushAnimations=function(t,e){var n=this,a=new im,r=[],i=new Map,o=[],s=new Map,u=new Map,l=new Map,c=new Set;this.disabledNodes.forEach(function(t){c.add(t);for(var e=n.driver.query(t,".ng-animate-queued",!0),a=0;a<e.length;a++)c.add(e[a])});var d=this.bodyNode,f=Array.from(this.statesByElement.keys()),p=Fm(f,this.collectedEnterElements),h=new Map,g=0;p.forEach(function(t,e){var n="ng-enter"+g++;h.set(e,n),t.forEach(function(t){return Ym(t,n)})});for(var m=[],b=new Set,y=new Set,v=0;v<this.collectedLeaveElements.length;v++)(M=(P=this.collectedLeaveElements[v])[Rm])&&M.setForRemoval&&(m.push(P),b.add(P),M.hasAnimation?this.driver.query(P,".ng-star-inserted",!0).forEach(function(t){return b.add(t)}):y.add(P));var _=new Map,x=Fm(f,Array.from(b));x.forEach(function(t,e){var n="ng-leave"+g++;_.set(e,n),t.forEach(function(t){return Ym(t,n)})}),t.push(function(){p.forEach(function(t,e){var n=h.get(e);t.forEach(function(t){return Hm(t,n)})}),x.forEach(function(t,e){var n=_.get(e);t.forEach(function(t){return Hm(t,n)})}),m.forEach(function(t){n.processLeaveNode(t)})});for(var T=[],w=[],S=this._namespaceList.length-1;S>=0;S--)this._namespaceList[S].drainQueuedTransitions(e).forEach(function(t){var e=t.player,i=t.element;if(T.push(e),n.collectedEnterElements.length){var c=i[Rm];if(c&&c.setForMove)return void e.destroy()}var f=!d||!n.driver.containsElement(d,i),p=_.get(i),g=h.get(i),m=n._buildInstruction(t,a,g,p,f);if(m.errors&&m.errors.length)w.push(m);else{if(f)return e.onStart(function(){return Pg(i,m.fromStyles)}),e.onDestroy(function(){return Lg(i,m.toStyles)}),void r.push(e);if(t.isFallbackTransition)return e.onStart(function(){return Pg(i,m.fromStyles)}),e.onDestroy(function(){return Lg(i,m.toStyles)}),void r.push(e);m.timelines.forEach(function(t){return t.stretchStartingKeyframe=!0}),a.append(i,m.timelines),o.push({instruction:m,player:e,element:i}),m.queriedElements.forEach(function(t){return lg(s,t,[]).push(e)}),m.preStyleProps.forEach(function(t,e){var n=Object.keys(t);if(n.length){var a=u.get(e);a||u.set(e,a=new Set),n.forEach(function(t){return a.add(t)})}}),m.postStyleProps.forEach(function(t,e){var n=Object.keys(t),a=l.get(e);a||l.set(e,a=new Set),n.forEach(function(t){return a.add(t)})})}});if(w.length){var O=[];w.forEach(function(t){O.push("@"+t.triggerName+" has failed due to:\n"),t.errors.forEach(function(t){return O.push("- "+t+"\n")})}),T.forEach(function(t){return t.destroy()}),this.reportError(O)}var C=new Map,k=new Map;o.forEach(function(t){var e=t.element;a.has(e)&&(k.set(e,e),n._beforeAnimationBuild(t.player.namespaceId,t.instruction,C))}),r.forEach(function(t){var e=t.element;n._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach(function(t){lg(C,e,[]).push(t),t.destroy()})});var I=m.filter(function(t){return Vm(t,u,l)}),D=new Map;qm(D,this.driver,y,l,ng.a).forEach(function(t){Vm(t,u,l)&&I.push(t)});var R=new Map;p.forEach(function(t,e){qm(R,n.driver,new Set(t),u,ng.h)}),I.forEach(function(t){var e=D.get(t),n=R.get(t);D.set(t,Object(Y.__assign)({},e,n))});var N=[],A=[],E={};o.forEach(function(t){var e=t.element,o=t.player,s=t.instruction;if(a.has(e)){if(c.has(e))return o.onDestroy(function(){return Lg(e,s.toStyles)}),o.disabled=!0,o.overrideTotalTime(s.totalTime),void r.push(o);var u=E;if(k.size>1){for(var l=e,d=[];l=l.parentNode;){var f=k.get(l);if(f){u=f;break}d.push(l)}d.forEach(function(t){return k.set(t,u)})}var p=n._buildAnimation(o.namespaceId,s,C,i,R,D);if(o.setRealPlayer(p),u===E)N.push(o);else{var h=n.playersByElement.get(u);h&&h.length&&(o.parentPlayer=rg(h)),r.push(o)}}else Pg(e,s.fromStyles),o.onDestroy(function(){return Lg(e,s.toStyles)}),A.push(o),c.has(e)&&r.push(o)}),A.forEach(function(t){var e=i.get(t.element);if(e&&e.length){var n=rg(e);t.setRealPlayer(n)}}),r.forEach(function(t){t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()});for(var L=0;L<m.length;L++){var P,M=(P=m[L])[Rm];if(Hm(P,"ng-leave"),!M||!M.hasAnimation){var j=[];if(s.size){var q=s.get(P);q&&q.length&&j.push.apply(j,Object(Y.__spread)(q));for(var F=this.driver.query(P,".ng-animating",!0),z=0;z<F.length;z++){var H=s.get(F[z]);H&&H.length&&j.push.apply(j,Object(Y.__spread)(H))}}var G=j.filter(function(t){return!t.destroyed});G.length?Gm(this,P,G):this.processLeaveNode(P)}}return m.length=0,N.forEach(function(t){n.players.push(t),t.onDone(function(){t.destroy();var e=n.players.indexOf(t);n.players.splice(e,1)}),t.play()}),N},t.prototype.elementContainsData=function(t,e){var n=!1,a=e[Rm];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},t.prototype.afterFlush=function(t){this._flushFns.push(t)},t.prototype.afterFlushAnimationsDone=function(t){this._whenQuietFns.push(t)},t.prototype._getPreviousPlayers=function(t,e,n,a,r){var i=[];if(e){var o=this.playersByQueriedElement.get(t);o&&(i=o)}else{var s=this.playersByElement.get(t);if(s){var u=!r||"void"==r;s.forEach(function(t){t.queued||(u||t.triggerName==a)&&i.push(t)})}}return(n||a)&&(i=i.filter(function(t){return!(n&&n!=t.namespaceId||a&&a!=t.triggerName)})),i},t.prototype._beforeAnimationBuild=function(t,e,n){var a,r,i=e.element,o=e.isRemovalTransition?void 0:t,s=e.isRemovalTransition?void 0:e.triggerName,u=function(t){var a=t.element,r=a!==i,u=lg(n,a,[]);l._getPreviousPlayers(a,r,o,s,e.toState).forEach(function(t){var e=t.getRealPlayer();e.beforeDestroy&&e.beforeDestroy(),t.destroy(),u.push(t)})},l=this;try{for(var c=Object(Y.__values)(e.timelines),d=c.next();!d.done;d=c.next())u(d.value)}catch(f){a={error:f}}finally{try{d&&!d.done&&(r=c.return)&&r.call(c)}finally{if(a)throw a.error}}Pg(i,e.fromStyles)},t.prototype._buildAnimation=function(t,e,n,a,r,i){var o=this,s=e.triggerName,u=e.element,l=[],c=new Set,d=new Set,f=e.timelines.map(function(e){var f=e.element;c.add(f);var p=f[Rm];if(p&&p.removedBeforeQueried)return new ng.d(e.duration,e.delay);var h,g,m=f!==u,b=(h=(n.get(f)||km).map(function(t){return t.getRealPlayer()}),g=[],function t(e,n){for(var a=0;a<e.length;a++){var r=e[a];r instanceof ng.g?t(r.players,n):n.push(r)}}(h,g),g).filter(function(t){return!!t.element&&t.element===f}),y=r.get(f),v=i.get(f),_=ig(0,o._normalizer,0,e.keyframes,y,v),x=o._buildPlayer(e,_,b);if(e.subTimeline&&a&&d.add(f),m){var T=new Pm(t,s,f);T.setRealPlayer(x),l.push(T)}return x});l.forEach(function(t){lg(o.playersByQueriedElement,t.element,[]).push(t),t.onDone(function(){return function(t,e,n){var a;if(t instanceof Map){if(a=t.get(e)){if(a.length){var r=a.indexOf(n);a.splice(r,1)}0==a.length&&t.delete(e)}}else(a=t[e])&&(a.length&&(r=a.indexOf(n),a.splice(r,1)),0==a.length&&delete t[e]);return a}(o.playersByQueriedElement,t.element,t)})}),c.forEach(function(t){return Ym(t,"ng-animating")});var p=rg(f);return p.onDestroy(function(){c.forEach(function(t){return Hm(t,"ng-animating")}),Lg(u,e.toStyles)}),d.forEach(function(t){lg(a,t,[]).push(p)}),p},t.prototype._buildPlayer=function(t,e,n){return e.length>0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new ng.d(t.duration,t.delay)},t}(),Pm=function(){function t(t,e,n){this.namespaceId=t,this.triggerName=e,this.element=n,this._player=new ng.d,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}return t.prototype.setRealPlayer=function(t){var e=this;this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach(function(n){e._queuedCallbacks[n].forEach(function(e){return og(t,n,void 0,e)})}),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)},t.prototype.getRealPlayer=function(){return this._player},t.prototype.overrideTotalTime=function(t){this.totalTime=t},t.prototype.syncPlayerEvents=function(t){var e=this,n=this._player;n.triggerCallback&&t.onStart(function(){return n.triggerCallback("start")}),t.onDone(function(){return e.finish()}),t.onDestroy(function(){return e.destroy()})},t.prototype._queueEvent=function(t,e){lg(this._queuedCallbacks,t,[]).push(e)},t.prototype.onDone=function(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)},t.prototype.onStart=function(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)},t.prototype.onDestroy=function(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)},t.prototype.init=function(){this._player.init()},t.prototype.hasStarted=function(){return!this.queued&&this._player.hasStarted()},t.prototype.play=function(){!this.queued&&this._player.play()},t.prototype.pause=function(){!this.queued&&this._player.pause()},t.prototype.restart=function(){!this.queued&&this._player.restart()},t.prototype.finish=function(){this._player.finish()},t.prototype.destroy=function(){this.destroyed=!0,this._player.destroy()},t.prototype.reset=function(){!this.queued&&this._player.reset()},t.prototype.setPosition=function(t){this.queued||this._player.setPosition(t)},t.prototype.getPosition=function(){return this.queued?0:this._player.getPosition()},t.prototype.triggerCallback=function(t){var e=this._player;e.triggerCallback&&e.triggerCallback(t)},t}();function Mm(t){return t&&1===t.nodeType}function jm(t,e){var n=t.style.display;return t.style.display=null!=e?e:"none",n}function qm(t,e,n,a,r){var i=[];n.forEach(function(t){return i.push(jm(t))});var o=[];a.forEach(function(n,a){var i={};n.forEach(function(t){var n=i[t]=e.computeStyle(a,t,r);n&&0!=n.length||(a[Rm]=Dm,o.push(a))}),t.set(a,i)});var s=0;return n.forEach(function(t){return jm(t,i[s++])}),o}function Fm(t,e){var n=new Map;if(t.forEach(function(t){return n.set(t,[])}),0==e.length)return n;var a=new Set(e),r=new Map;return e.forEach(function(t){var e=function t(e){if(!e)return 1;var i=r.get(e);if(i)return i;var o=e.parentNode;return i=n.has(o)?o:a.has(o)?1:t(o),r.set(e,i),i}(t);1!==e&&n.get(e).push(t)}),n}var zm="$$classes";function Ym(t,e){if(t.classList)t.classList.add(e);else{var n=t[zm];n||(n=t[zm]={}),n[e]=!0}}function Hm(t,e){if(t.classList)t.classList.remove(e);else{var n=t[zm];n&&delete n[e]}}function Gm(t,e,n){rg(n).onDone(function(){return t.processLeaveNode(e)})}function Vm(t,e,n){var a=n.get(t);if(!a)return!1;var r=e.get(t);return r?a.forEach(function(t){return r.add(t)}):e.set(t,a),n.delete(t),!0}var Bm=function(){function t(t,e,n){var a=this;this.bodyNode=t,this._driver=e,this._triggerCache={},this.onRemovalComplete=function(t,e){},this._transitionEngine=new Lm(t,e,n),this._timelineEngine=new Cm(t,e,n),this._transitionEngine.onRemovalComplete=function(t,e){return a.onRemovalComplete(t,e)}}return t.prototype.registerTrigger=function(t,e,n,a,r){var i=t+"-"+a,o=this._triggerCache[i];if(!o){var s=[],u=Jg(this._driver,r,s);if(s.length)throw new Error('The animation trigger "'+a+'" has failed to build due to the following errors:\n - '+s.join("\n - "));o=function(t,e){return new wm(t,e)}(a,u),this._triggerCache[i]=o}this._transitionEngine.registerTrigger(e,a,o)},t.prototype.register=function(t,e){this._transitionEngine.register(t,e)},t.prototype.destroy=function(t,e){this._transitionEngine.destroy(t,e)},t.prototype.onInsert=function(t,e,n,a){this._transitionEngine.insertNode(t,e,n,a)},t.prototype.onRemove=function(t,e,n){this._transitionEngine.removeNode(t,e,n)},t.prototype.disableAnimations=function(t,e){this._transitionEngine.markElementAsDisabled(t,e)},t.prototype.process=function(t,e,n,a){if("@"==n.charAt(0)){var r=Object(Y.__read)(cg(n),2);this._timelineEngine.command(r[0],e,r[1],a)}else this._transitionEngine.trigger(t,e,n,a)},t.prototype.listen=function(t,e,n,a,r){if("@"==n.charAt(0)){var i=Object(Y.__read)(cg(n),2);return this._timelineEngine.listen(i[0],e,i[1],r)}return this._transitionEngine.listen(t,e,n,a,r)},t.prototype.flush=function(t){void 0===t&&(t=-1),this._transitionEngine.flush(t)},Object.defineProperty(t.prototype,"players",{get:function(){return this._transitionEngine.players.concat(this._timelineEngine.players)},enumerable:!0,configurable:!0}),t.prototype.whenRenderingDone=function(){return this._transitionEngine.whenRenderingDone()},t}(),Um="animation",Wm="animationend",Km=function(){function t(t,e,n,a,r,i,o){var s=this;this._element=t,this._name=e,this._duration=n,this._delay=a,this._easing=r,this._fillMode=i,this._onDoneFn=o,this._finished=!1,this._destroyed=!1,this._startTime=0,this._position=0,this._eventFn=function(t){return s._handleCallback(t)}}return t.prototype.apply=function(){var t,e,n;e=this._duration+"ms "+this._easing+" "+this._delay+"ms 1 normal "+this._fillMode+" "+this._name,(n=tb(t=this._element,"").trim()).length&&(function(t,e){for(var n=0;n<t.length;n++)","===t.charAt(n)&&0}(n),e=n+", "+e),Qm(t,"",e),Jm(this._element,this._eventFn,!1),this._startTime=Date.now()},t.prototype.pause=function(){$m(this._element,this._name,"paused")},t.prototype.resume=function(){$m(this._element,this._name,"running")},t.prototype.setPosition=function(t){var e=Zm(this._element,this._name);this._position=t*this._duration,Qm(this._element,"Delay","-"+this._position+"ms",e)},t.prototype.getPosition=function(){return this._position},t.prototype._handleCallback=function(t){var 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()},t.prototype.finish=function(){this._finished||(this._finished=!0,this._onDoneFn(),Jm(this._element,this._eventFn,!0))},t.prototype.destroy=function(){var t,e,n,a;this._destroyed||(this._destroyed=!0,this.finish(),e=this._name,(a=Xm(n=tb(t=this._element,"").split(","),e))>=0&&(n.splice(a,1),Qm(t,"",n.join(","))))},t}();function $m(t,e,n){Qm(t,"PlayState",n,Zm(t,e))}function Zm(t,e){var n=tb(t,"");return n.indexOf(",")>0?Xm(n.split(","),e):Xm([n],e)}function Xm(t,e){for(var n=0;n<t.length;n++)if(t[n].indexOf(e)>=0)return n;return-1}function Jm(t,e,n){n?t.removeEventListener(Wm,e):t.addEventListener(Wm,e)}function Qm(t,e,n,a){var r=Um+e;if(null!=a){var i=t.style[r];if(i.length){var o=i.split(",");o[a]=n,n=o.join(",")}}t.style[r]=n}function tb(t,e){return t.style[Um+e]}var eb="linear",nb=function(){function t(t,e,n,a,r,i,o){this.element=t,this.keyframes=e,this.animationName=n,this._duration=a,this._delay=r,this._finalStyles=o,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=i||eb,this.totalTime=a+r,this._buildStyler()}return t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.destroy=function(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype._flushDoneFns=function(){this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[]},t.prototype._flushStartFns=function(){this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[]},t.prototype.finish=function(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._flushDoneFns())},t.prototype.setPosition=function(t){this._styler.setPosition(t)},t.prototype.getPosition=function(){return this._styler.getPosition()},t.prototype.hasStarted=function(){return this._state>=2},t.prototype.init=function(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())},t.prototype.play=function(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2),this._styler.resume()},t.prototype.pause=function(){this.init(),this._styler.pause()},t.prototype.restart=function(){this.reset(),this.play()},t.prototype.reset=function(){this._styler.destroy(),this._buildStyler(),this._styler.apply()},t.prototype._buildStyler=function(){var t=this;this._styler=new Km(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",function(){return t.finish()})},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t.prototype.beforeDestroy=function(){var t=this;this.init();var e={};if(this.hasStarted()){var n=this._state>=3;Object.keys(this._finalStyles).forEach(function(a){"offset"!=a&&(e[a]=n?t._finalStyles[a]:Ug(t.element,a))})}this.currentSnapshot=e},t}(),ab=function(t){function e(e,n){var a=t.call(this)||this;return a.element=e,a._startingStyles={},a.__initialized=!1,a._styles=wg(n),a}return Object(Y.__extends)(e,t),e.prototype.init=function(){var e=this;!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach(function(t){e._startingStyles[t]=e.element.style[t]}),t.prototype.init.call(this))},e.prototype.play=function(){var e=this;this._startingStyles&&(this.init(),Object.keys(this._styles).forEach(function(t){return e.element.style.setProperty(t,e._styles[t])}),t.prototype.play.call(this))},e.prototype.destroy=function(){var e=this;this._startingStyles&&(Object.keys(this._startingStyles).forEach(function(t){var n=e._startingStyles[t];n?e.element.style.setProperty(t,n):e.element.style.removeProperty(t)}),this._startingStyles=null,t.prototype.destroy.call(this))},e}(ng.d),rb=function(){function t(){this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}return t.prototype.validateStyleProperty=function(t){return vg(t)},t.prototype.matchesElement=function(t,e){return _g(t,e)},t.prototype.containsElement=function(t,e){return xg(t,e)},t.prototype.query=function(t,e,n){return Tg(t,e,n)},t.prototype.computeStyle=function(t,e,n){return window.getComputedStyle(t)[e]},t.prototype.buildKeyframeElement=function(t,e,n){n=n.map(function(t){return wg(t)});var a="@keyframes "+e+" {\n",r="";n.forEach(function(t){r=" ";var e=parseFloat(t.offset);a+=""+r+100*e+"% {\n",r+=" ",Object.keys(t).forEach(function(e){var 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";var i=document.createElement("style");return i.innerHTML=a,i},t.prototype.animate=function(t,e,n,a,r,i,o){void 0===i&&(i=[]),o&&this._notifyFaultyScrubber();var s=i.filter(function(t){return t instanceof nb}),u={};Gg(n,a)&&s.forEach(function(t){var e=t.currentSnapshot;Object.keys(e).forEach(function(t){return u[t]=e[t]})});var l=function(t){var e={};return t&&(Array.isArray(t)?t:[t]).forEach(function(t){Object.keys(t).forEach(function(n){"offset"!=n&&"easing"!=n&&(e[n]=t[n])})}),e}(e=Vg(t,e,u));if(0==n)return new ab(t,l);var c="gen_css_kf_"+this._count++,d=this.buildKeyframeElement(t,c,e);document.querySelector("head").appendChild(d);var f=new nb(t,e,c,n,a,r,l);return f.onDestroy(function(){var t;(t=d).parentNode.removeChild(t)}),f},t.prototype._notifyFaultyScrubber=function(){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)},t}(),ib=function(){function t(t,e,n){this.element=t,this.keyframes=e,this.options=n,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}return t.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(t){return t()}),this._onDoneFns=[])},t.prototype.init=function(){this._buildPlayer(),this._preparePlayerBeforeStart()},t.prototype._buildPlayer=function(){var t=this;if(!this._initialized){this._initialized=!0;var e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:{},this.domPlayer.addEventListener("finish",function(){return t._onFinish()})}},t.prototype._preparePlayerBeforeStart=function(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()},t.prototype._triggerWebAnimation=function(t,e,n){return t.animate(e,n)},t.prototype.onStart=function(t){this._onStartFns.push(t)},t.prototype.onDone=function(t){this._onDoneFns.push(t)},t.prototype.onDestroy=function(t){this._onDestroyFns.push(t)},t.prototype.play=function(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(function(t){return t()}),this._onStartFns=[],this._started=!0),this.domPlayer.play()},t.prototype.pause=function(){this.init(),this.domPlayer.pause()},t.prototype.finish=function(){this.init(),this._onFinish(),this.domPlayer.finish()},t.prototype.reset=function(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1},t.prototype._resetDomPlayerState=function(){this.domPlayer&&this.domPlayer.cancel()},t.prototype.restart=function(){this.reset(),this.play()},t.prototype.hasStarted=function(){return this._started},t.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._onDestroyFns.forEach(function(t){return t()}),this._onDestroyFns=[])},t.prototype.setPosition=function(t){this.domPlayer.currentTime=t*this.time},t.prototype.getPosition=function(){return this.domPlayer.currentTime/this.time},Object.defineProperty(t.prototype,"totalTime",{get:function(){return this._delay+this._duration},enumerable:!0,configurable:!0}),t.prototype.beforeDestroy=function(){var t=this,e={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(function(n){"offset"!=n&&(e[n]=t._finished?t._finalKeyframe[n]:Ug(t.element,n))}),this.currentSnapshot=e},t.prototype.triggerCallback=function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach(function(t){return t()}),e.length=0},t}(),ob=function(){function t(){this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(sb().toString()),this._cssKeyframesDriver=new rb}return t.prototype.validateStyleProperty=function(t){return vg(t)},t.prototype.matchesElement=function(t,e){return _g(t,e)},t.prototype.containsElement=function(t,e){return xg(t,e)},t.prototype.query=function(t,e,n){return Tg(t,e,n)},t.prototype.computeStyle=function(t,e,n){return window.getComputedStyle(t)[e]},t.prototype.overrideWebAnimationsSupport=function(t){this._isNativeImpl=t},t.prototype.animate=function(t,e,n,a,r,i,o){if(void 0===i&&(i=[]),!o&&!this._isNativeImpl)return this._cssKeyframesDriver.animate(t,e,n,a,r,i);var s={duration:n,delay:a,fill:0==a?"both":"forwards"};r&&(s.easing=r);var u={},l=i.filter(function(t){return t instanceof ib});return Gg(n,a)&&l.forEach(function(t){var e=t.currentSnapshot;Object.keys(e).forEach(function(t){return u[t]=e[t]})}),e=Vg(t,e=e.map(function(t){return Ng(t,!1)}),u),new ib(t,e,s)},t}();function sb(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}var ub=function(t){function e(e,n){var r=t.call(this)||this;return r._nextAnimationId=0,r._renderer=e.createRenderer(n.body,{id:"0",encapsulation:a.ViewEncapsulation.None,styles:[],data:{animation:[]}}),r}return Object(Y.__extends)(e,t),e.prototype.build=function(t){var e=this._nextAnimationId.toString();this._nextAnimationId++;var n=Array.isArray(t)?Object(ng.e)(t):t;return db(this._renderer,null,e,"register",[n]),new lb(e,this._renderer)},e}(ng.b),lb=function(t){function e(e,n){var a=t.call(this)||this;return a._id=e,a._renderer=n,a}return Object(Y.__extends)(e,t),e.prototype.create=function(t,e){return new cb(this._id,t,e||{},this._renderer)},e}(ng.c),cb=function(){function t(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)}return t.prototype._listen=function(t,e){return this._renderer.listen(this.element,"@@"+this.id+":"+t,e)},t.prototype._command=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return db(this._renderer,this.element,this.id,t,e)},t.prototype.onDone=function(t){this._listen("done",t)},t.prototype.onStart=function(t){this._listen("start",t)},t.prototype.onDestroy=function(t){this._listen("destroy",t)},t.prototype.init=function(){this._command("init")},t.prototype.hasStarted=function(){return this._started},t.prototype.play=function(){this._command("play"),this._started=!0},t.prototype.pause=function(){this._command("pause")},t.prototype.restart=function(){this._command("restart")},t.prototype.finish=function(){this._command("finish")},t.prototype.destroy=function(){this._command("destroy")},t.prototype.reset=function(){this._command("reset")},t.prototype.setPosition=function(t){this._command("setPosition",t)},t.prototype.getPosition=function(){return 0},t}();function db(t,e,n,a,r){return t.setProperty(e,"@@"+n+":"+a,r)}var fb=function(){function t(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=function(t,e){e&&e.parentNode(t)&&e.removeChild(t.parentNode,t)}}return t.prototype.createRenderer=function(t,e){var n=this,a=this.delegate.createRenderer(t,e);if(!(t&&e&&e.data&&e.data.animation)){var r=this._rendererCache.get(a);return r||(r=new pb("",a,this.engine),this._rendererCache.set(a,r)),r}var i=e.id,o=e.id+"-"+this._currentId;return this._currentId++,this.engine.register(o,t),e.data.animation.forEach(function(e){return n.engine.registerTrigger(i,o,t,e.name,e)}),new hb(this,o,a,this.engine)},t.prototype.begin=function(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()},t.prototype._scheduleCountTask=function(){var t=this;this.promise.then(function(){t._microtaskId++})},t.prototype.scheduleListenerCallback=function(t,e,n){var a=this;t>=0&&t<this._microtaskId?this._zone.run(function(){return e(n)}):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(function(){a._zone.run(function(){a._animationCallbacksBuffer.forEach(function(t){var e=Object(Y.__read)(t,2);(0,e[0])(e[1])}),a._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([e,n]))},t.prototype.end=function(){var t=this;this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(function(){t._scheduleCountTask(),t.engine.flush(t._microtaskId)}),this.delegate.end&&this.delegate.end()},t.prototype.whenRenderingDone=function(){return this.engine.whenRenderingDone()},t}(),pb=function(){function t(t,e,n){this.namespaceId=t,this.delegate=e,this.engine=n,this.destroyNode=this.delegate.destroyNode?function(t){return e.destroyNode(t)}:null}return Object.defineProperty(t.prototype,"data",{get:function(){return this.delegate.data},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy()},t.prototype.createElement=function(t,e){return this.delegate.createElement(t,e)},t.prototype.createComment=function(t){return this.delegate.createComment(t)},t.prototype.createText=function(t){return this.delegate.createText(t)},t.prototype.appendChild=function(t,e){this.delegate.appendChild(t,e),this.engine.onInsert(this.namespaceId,e,t,!1)},t.prototype.insertBefore=function(t,e,n){this.delegate.insertBefore(t,e,n),this.engine.onInsert(this.namespaceId,e,t,!0)},t.prototype.removeChild=function(t,e){this.engine.onRemove(this.namespaceId,e,this.delegate)},t.prototype.selectRootElement=function(t,e){return this.delegate.selectRootElement(t,e)},t.prototype.parentNode=function(t){return this.delegate.parentNode(t)},t.prototype.nextSibling=function(t){return this.delegate.nextSibling(t)},t.prototype.setAttribute=function(t,e,n,a){this.delegate.setAttribute(t,e,n,a)},t.prototype.removeAttribute=function(t,e,n){this.delegate.removeAttribute(t,e,n)},t.prototype.addClass=function(t,e){this.delegate.addClass(t,e)},t.prototype.removeClass=function(t,e){this.delegate.removeClass(t,e)},t.prototype.setStyle=function(t,e,n,a){this.delegate.setStyle(t,e,n,a)},t.prototype.removeStyle=function(t,e,n){this.delegate.removeStyle(t,e,n)},t.prototype.setProperty=function(t,e,n){"@"==e.charAt(0)&&"@.disabled"==e?this.disableAnimations(t,!!n):this.delegate.setProperty(t,e,n)},t.prototype.setValue=function(t,e){this.delegate.setValue(t,e)},t.prototype.listen=function(t,e,n){return this.delegate.listen(t,e,n)},t.prototype.disableAnimations=function(t,e){this.engine.disableAnimations(t,e)},t}(),hb=function(t){function e(e,n,a,r){var i=t.call(this,n,a,r)||this;return i.factory=e,i.namespaceId=n,i}return Object(Y.__extends)(e,t),e.prototype.setProperty=function(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)},e.prototype.listen=function(t,e,n){var a,r,i,o=this;if("@"==e.charAt(0)){var s=function(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(t),u=e.substr(1),l="";return"@"!=u.charAt(0)&&(u=(a=Object(Y.__read)((r=u,i=r.indexOf("."),[r.substring(0,i),r.substr(i+1)]),2))[0],l=a[1]),this.engine.listen(this.namespaceId,s,u,l,function(t){o.factory.scheduleListenerCallback(t._data||-1,n,t)})}return this.delegate.listen(t,e,n)},e}(pb),gb=function(t){function e(e,n,a){return t.call(this,e.body,n,a)||this}return Object(Y.__extends)(e,t),e}(Bm);function mb(){return"function"==typeof sb()?new ob:new rb}function bb(){return new mm}function yb(t,e,n){return new fb(t,e,n)}var vb=new a.InjectionToken("AnimationModuleType"),_b=function(){return function(){}}(),xb=n("Avrn"),Tb=n("Vhfg"),wb=function(){function t(t,e){this.http=t,this.router=e}return t.prototype.canActivate=function(t){return this.doCheck(t)},t.prototype.canActivateChild=function(t){return this.doCheck(t)},t.prototype.doCheck=function(e){var n=this;if(e.url.length>0&&t.WHITELIST.includes(e.url[0].path))return Object(Il.a)(!0);var a=e.data.moduleStatusGuardConfig;return this.http.get("/api/"+a.apiPath+"/status").pipe(Object(Dl.a)(function(t){return t.available||n.router.navigate([a.redirectTo,t.message||""]),t.available}),Object(tg.a)(function(){return n.router.navigate([a.redirectTo]),Object(Il.a)(!1)}))},t.WHITELIST=["501"],t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c),a.inject(kt.l))},token:t,providedIn:"root"}),t}(),Sb=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Y.__extends(e,t),e.prototype.resolve=function(t){var e=[],n=t.queryParams.fromLink||null,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},e}(Ph),Ob=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Y.__extends(e,t),e.prototype.resolve=function(t){var e=t.params.name;return[{text:Ft.startCase(e),path:e}]},e}(Ph),Cb={breadcrumbs:"Cluster/Hosts"},kb={breadcrumbs:"Cluster/Monitors"},Ib={breadcrumbs:"Cluster/OSDs"},Db={breadcrumbs:"Cluster/Configuration"},Rb={breadcrumbs:"Edit"},Nb={breadcrumbs:"Cluster/CRUSH map"},Ab={breadcrumbs:"Cluster/Logs"},Eb={breadcrumbs:"Cluster/Alerts"},Lb={breadcrumbs:"Cluster/Silences"},Pb={breadcrumbs:Ra.a.CREATE},Mb={breadcrumbs:Ra.a.CREATE},jb={breadcrumbs:Ra.a.EDIT},qb={breadcrumbs:Ra.a.RECREATE},Fb={breadcrumbs:Sb},zb={breadcrumbs:"Cluster/Manager modules"},Yb={breadcrumbs:Ob},Hb={breadcrumbs:"Pools"},Gb={breadcrumbs:!0,text:"Block",path:null},Vb={breadcrumbs:"Filesystems"},Bb={moduleStatusGuardConfig:{apiPath:"rgw",redirectTo:"rgw/501"},breadcrumbs:!0,text:"Object Gateway",path:null},Ub={breadcrumbs:"User management",path:null},Wb={breadcrumbs:"NFS"},Kb={moduleStatusGuardConfig:{apiPath:"nfs-ganesha",redirectTo:"nfs/501"},breadcrumbs:"NFS"},$b={breadcrumbs:"Add"},Zb={breadcrumbs:"Edit"},Xb=function(){return function(){}}(),Jb=n("IzCI"),Qb=n("Dwqy"),ty=n("uYzU"),ey=n("uhwM"),ny=n("nSDx"),ay=n("SB+Q"),ry=n("BQkM"),iy=n("dEH0"),oy=n("lTVp"),sy=n("FO+L"),uy=n("nhM1"),ly=n("BARL"),cy=n("JZ5S"),dy=n("Da1D"),fy=function(){return function(){this.closeOthers=!1}}(),py=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[fy]}},t}(),hy=function(){function t(t){this.http=t}return t.prototype.jsError=function(t,e,n){return this.http.post("ui-api/logging/js-error",{url:t,message:e,stack:n})},t.ngInjectableDef=a.defineInjectable({factory:function(){return new t(a.inject(ee.c))},token:t,providedIn:ne.a}),t}(),gy=function(){function t(t){this.injector=t}return t.prototype.handleError=function(t){var e=this.injector.get(hy),n=window.location.href;throw e.jsError(n,t&&t.message,t&&t.stack).subscribe(),t},t}(),my=n("9Xeq"),by=n("yGOH"),yy=n("V/fk"),vy=n("F8xH"),_y=n("ChqD"),xy=n("PCNd"),Ty=n("LceX"),wy=function(){return function(){}}(),Sy=function(){return function(){}}(),Oy=n("G6Q+"),Cy=n("STEd"),ky=function(){return function(){}}(),Iy=function(){return function(){}}(),Dy=n("kJI8"),Ry=function(){return function(){}}(),Ny=function(){return function(){}}(),Ay=function(){return function(){}}(),Ey=function(){return function(){}}(),Ly=function(){function t(t){if(t)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}return t.forRoot=function(e){return{ngModule:t,providers:[{provide:ee.a,useClass:Jh,multi:!0},e.jwtOptionsProvider||{provide:Kh,useValue:e.config},$h]}},t}(),Py=a["\u0275cmf"](M,[z],function(t){return a["\u0275mod"]([a["\u0275mpd"](512,a.ComponentFactoryResolver,a["\u0275CodegenComponentFactoryResolver"],[[8,[nt,ct,xt,Tt.a,sn,An,zn,tr,vr,Hr,Qr,po,Ro,Fo,cs,gs,Cs,eu,Cu,Eu,Zu,Hc,Kc,md,xd,Cd,kd.a,Id.a,Dd.a,Rd.a,Nd.a,Nd.b,Ad.a,Ed.a,Ld.a,Yd,Hd.a,Hd.b,Hd.c,rf,ya,pf,_f,Lf,Yf,sp,bp,Wh]],[3,a.ComponentFactoryResolver],a.NgModuleRef]),a["\u0275mpd"](4608,ee.j,ee.p,[L.DOCUMENT,a.PLATFORM_ID,ee.n]),a["\u0275mpd"](4608,ee.q,ee.q,[ee.j,ee.o]),a["\u0275mpd"](4608,$h,$h,[Kh]),a["\u0275mpd"](4608,q.a,q.a,[]),a["\u0275mpd"](5120,ee.a,function(t,e,n,a,r,i){return[t,new Jh(e,n),new eg(a,r,i)]},[ee.q,Kh,$h,kt.l,q.a,Ta.a]),a["\u0275mpd"](4608,ee.m,ee.m,[]),a["\u0275mpd"](6144,ee.k,null,[ee.m]),a["\u0275mpd"](4608,ee.i,ee.i,[ee.k]),a["\u0275mpd"](6144,ee.b,null,[ee.i]),a["\u0275mpd"](4608,ee.g,ee.l,[ee.b,a.Injector]),a["\u0275mpd"](4608,ee.c,ee.c,[ee.g]),a["\u0275mpd"](4352,a.LOCALE_ID,N,[]),a["\u0275mpd"](4608,L.NgLocalization,L.NgLocaleLocalization,[a.LOCALE_ID,[2,L["\u0275angular_packages_common_common_a"]]]),a["\u0275mpd"](5120,a.APP_ID,a["\u0275angular_packages_core_core_h"],[]),a["\u0275mpd"](5120,a.IterableDiffers,a["\u0275angular_packages_core_core_q"],[]),a["\u0275mpd"](5120,a.KeyValueDiffers,a["\u0275angular_packages_core_core_r"],[]),a["\u0275mpd"](4608,dn.DomSanitizer,dn["\u0275DomSanitizerImpl"],[L.DOCUMENT]),a["\u0275mpd"](6144,a.Sanitizer,null,[dn.DomSanitizer]),a["\u0275mpd"](4608,dn.HAMMER_GESTURE_CONFIG,dn.HammerGestureConfig,[]),a["\u0275mpd"](5120,dn.EVENT_MANAGER_PLUGINS,function(t,e,n,a,r,i,o,s){return[new dn["\u0275DomEventsPlugin"](t,e,n),new dn["\u0275KeyEventsPlugin"](a),new dn["\u0275HammerGesturesPlugin"](r,i,o,s)]},[L.DOCUMENT,a.NgZone,a.PLATFORM_ID,L.DOCUMENT,L.DOCUMENT,dn.HAMMER_GESTURE_CONFIG,a["\u0275Console"],[2,dn.HAMMER_LOADER]]),a["\u0275mpd"](4608,dn.EventManager,dn.EventManager,[dn.EVENT_MANAGER_PLUGINS,a.NgZone]),a["\u0275mpd"](135680,dn["\u0275DomSharedStylesHost"],dn["\u0275DomSharedStylesHost"],[L.DOCUMENT]),a["\u0275mpd"](4608,dn["\u0275DomRendererFactory2"],dn["\u0275DomRendererFactory2"],[dn.EventManager,dn["\u0275DomSharedStylesHost"]]),a["\u0275mpd"](5120,Og,mb,[]),a["\u0275mpd"](5120,gm,bb,[]),a["\u0275mpd"](4608,Bm,gb,[L.DOCUMENT,Og,gm]),a["\u0275mpd"](5120,a.RendererFactory2,yb,[dn["\u0275DomRendererFactory2"],Bm,a.NgZone]),a["\u0275mpd"](6144,dn["\u0275SharedStylesHost"],null,[dn["\u0275DomSharedStylesHost"]]),a["\u0275mpd"](4608,a.Testability,a.Testability,[a.NgZone]),a["\u0275mpd"](4608,ng.b,ub,[a.RendererFactory2,dn.DOCUMENT]),a["\u0275mpd"](5120,kt.a,kt.B,[kt.l]),a["\u0275mpd"](4608,kt.f,kt.f,[]),a["\u0275mpd"](6144,kt.g,null,[kt.f]),a["\u0275mpd"](135680,kt.r,kt.r,[kt.l,a.NgModuleFactoryLoader,a.Compiler,a.Injector,kt.g]),a["\u0275mpd"](4608,kt.e,kt.e,[]),a["\u0275mpd"](5120,kt.F,kt.x,[kt.l,L.ViewportScroller,kt.h]),a["\u0275mpd"](5120,kt.i,kt.E,[kt.C]),a["\u0275mpd"](5120,a.APP_BOOTSTRAP_LISTENER,function(t){return[t]},[kt.i]),a["\u0275mpd"](4608,Ob,Ob,[]),a["\u0275mpd"](4608,Sb,Sb,[]),a["\u0275mpd"](4608,$e.E,$e.E,[]),a["\u0275mpd"](4608,$e.h,$e.h,[]),a["\u0275mpd"](5120,a.TRANSLATIONS,A,[a.LOCALE_ID]),a["\u0275mpd"](4608,Kt.a,Kt.a,[a.TRANSLATIONS_FORMAT,a.TRANSLATIONS,a.LOCALE_ID,[2,Kt.b]]),a["\u0275mpd"](4608,nr.a,nr.a,[Kt.a]),a["\u0275mpd"](4608,L.DatePipe,L.DatePipe,[a.LOCALE_ID]),a["\u0275mpd"](4608,Tn.a,Tn.a,[]),a["\u0275mpd"](4608,pn.a,pn.a,[]),a["\u0275mpd"](4608,Qt.a,Qt.a,[]),a["\u0275mpd"](4608,Yt.a,Yt.a,[Qt.a]),a["\u0275mpd"](4608,Jb.a,Jb.a,[Qt.a]),a["\u0275mpd"](4608,Ht.a,Ht.a,[Qt.a]),a["\u0275mpd"](4608,Qb.a,Qb.a,[]),a["\u0275mpd"](4608,ty.a,ty.a,[]),a["\u0275mpd"](4608,ey.a,ey.a,[]),a["\u0275mpd"](4608,Zi.a,Zi.a,[]),a["\u0275mpd"](4608,Zn.a,Zn.a,[L.DatePipe]),a["\u0275mpd"](4608,ny.a,ny.a,[]),a["\u0275mpd"](4608,ay.a,ay.a,[]),a["\u0275mpd"](4608,bl.a,bl.a,[]),a["\u0275mpd"](4608,ry.a,ry.a,[]),a["\u0275mpd"](4608,iy.a,iy.a,[]),a["\u0275mpd"](4608,Ho.a,Ho.a,[]),a["\u0275mpd"](4608,oy.b,oy.b,[]),a["\u0275mpd"](4608,Ot.a,Ot.a,[]),a["\u0275mpd"](4608,il.a,il.a,[]),a["\u0275mpd"](4608,Ct.a,Ct.a,[a.ComponentFactoryResolver,a.NgZone,a.Injector,il.a,a.ApplicationRef]),a["\u0275mpd"](4608,j.a,j.a,[]),a["\u0275mpd"](4608,qa.b,qa.b,[a.RendererFactory2,Ct.a]),a["\u0275mpd"](4608,sy.ScrollbarHelper,sy.ScrollbarHelper,[dn.DOCUMENT]),a["\u0275mpd"](4608,uy.DimensionsHelper,uy.DimensionsHelper,[]),a["\u0275mpd"](4608,ly.ColumnChangesService,ly.ColumnChangesService,[]),a["\u0275mpd"](4608,Yn.f,Yn.f,[]),a["\u0275mpd"](4608,xb.a,xb.a,[kt.l,q.a]),a["\u0275mpd"](4608,St.e,St.e,[]),a["\u0275mpd"](4608,Br.NodeDraggableService,Br.NodeDraggableService,[]),a["\u0275mpd"](4608,cy.NodeMenuService,cy.NodeMenuService,[]),a["\u0275mpd"](4608,Vr.TreeService,Vr.TreeService,[Br.NodeDraggableService]),a["\u0275mpd"](4608,ti.w,ti.w,[]),a["\u0275mpd"](4608,ti.y,ti.y,[]),a["\u0275mpd"](4608,ti.a,ti.a,[]),a["\u0275mpd"](4608,ti.e,ti.e,[]),a["\u0275mpd"](4608,ti.c,ti.c,[]),a["\u0275mpd"](4608,ti.f,ti.f,[]),a["\u0275mpd"](4608,ti.x,ti.x,[ti.y,ti.f]),a["\u0275mpd"](4608,fl,fl,[]),a["\u0275mpd"](4608,Si,Si,[]),a["\u0275mpd"](4608,ni,ni,[]),a["\u0275mpd"](4608,ki,ki,[]),a["\u0275mpd"](4608,dy.c,dy.c,[]),a["\u0275mpd"](5120,B,X,[Z]),a["\u0275mpd"](4608,K,K,[B]),a["\u0275mpd"](4608,fy,fy,[]),a["\u0275mpd"](1073742336,ee.e,ee.e,[]),a["\u0275mpd"](1073742336,ee.d,ee.d,[]),a["\u0275mpd"](1073742336,L.CommonModule,L.CommonModule,[]),a["\u0275mpd"](1073742336,J,J,[]),a["\u0275mpd"](512,a.ErrorHandler,gy,[a.Injector]),a["\u0275mpd"](1024,a.NgProbeToken,function(){return[kt.w()]},[]),a["\u0275mpd"](512,kt.C,kt.C,[a.Injector]),a["\u0275mpd"](1024,a.APP_INITIALIZER,function(t,e){return[dn["\u0275angular_packages_platform_browser_platform_browser_j"](t),kt.D(e)]},[[2,a.NgProbeToken],kt.C]),a["\u0275mpd"](512,a.ApplicationInitStatus,a.ApplicationInitStatus,[[2,a.APP_INITIALIZER]]),a["\u0275mpd"](131584,a.ApplicationRef,a.ApplicationRef,[a.NgZone,a["\u0275Console"],a.Injector,a.ErrorHandler,a.ComponentFactoryResolver,a.ApplicationInitStatus]),a["\u0275mpd"](1073742336,a.ApplicationModule,a.ApplicationModule,[a.ApplicationRef]),a["\u0275mpd"](1073742336,dn.BrowserModule,dn.BrowserModule,[[3,dn.BrowserModule]]),a["\u0275mpd"](1073742336,_b,_b,[]),a["\u0275mpd"](1073742336,dt.i,dt.i,[]),a["\u0275mpd"](1024,kt.v,kt.z,[[3,kt.l]]),a["\u0275mpd"](512,kt.t,kt.c,[]),a["\u0275mpd"](512,kt.b,kt.b,[]),a["\u0275mpd"](256,kt.h,{useHash:!0,preloadingStrategy:kt.f},[]),a["\u0275mpd"](1024,L.LocationStrategy,kt.y,[L.PlatformLocation,[2,L.APP_BASE_HREF],kt.h]),a["\u0275mpd"](512,L.Location,L.Location,[L.LocationStrategy]),a["\u0275mpd"](512,a.Compiler,a.Compiler,[]),a["\u0275mpd"](512,a.NgModuleFactoryLoader,a.SystemJsNgModuleLoader,[a.Compiler,[2,a.SystemJsNgModuleLoaderConfig]]),a["\u0275mpd"](1024,kt.j,function(){return[[{path:"",redirectTo:"dashboard",pathMatch:"full"},{path:"dashboard",component:tn,canActivate:[xb.a]},{path:"hosts",component:wn,canActivate:[xb.a],data:Cb},{path:"monitor",component:Pn,canActivate:[xb.a],data:kb},{path:"osd",canActivate:[xb.a],canActivateChild:[xb.a],data:Ib,children:[{path:"",component:ja}]},{path:"configuration",data:Db,children:[{path:"",component:cr},{path:"edit/:name",component:Or,data:Rb}]},{path:"crush-map",component:Wr,canActivate:[xb.a],data:Nb},{path:"logs",component:Ji,canActivate:[xb.a],data:Ab},{path:"alerts",component:So,canActivate:[xb.a],data:Eb},{path:"silence",canActivate:[xb.a],data:Lb,children:[{path:"",component:Lo},{path:"create",component:Uo,data:Pb},{path:"create/:id",component:Uo,data:Mb},{path:"edit/:id",component:Uo,data:jb},{path:"recreate/:id",component:Uo,data:qb}]},{path:"perf_counters/:type/:id",component:ds,canActivate:[xb.a],data:Fb},{path:"mgr-modules",canActivate:[xb.a],canActivateChild:[xb.a],data:zb,children:[{path:"",component:Ts},{path:"edit/:name",component:Ns,data:Yb}]},{path:"pool",canActivate:[xb.a],canActivateChild:[xb.a],data:Hb,loadChildren:"./ceph/pool/pool.module#RoutedPoolModule"},{path:"block",canActivateChild:[xb.a],canActivate:[xb.a],data:Gb,loadChildren:"./ceph/block/block.module#RoutedBlockModule"},{path:"cephfs",component:Tu,canActivate:[Tb.a,xb.a],data:Vb},{path:"rgw",canActivateChild:[Tb.a,wb,xb.a],data:Bb,loadChildren:"./ceph/rgw/rgw.module#RoutedRgwModule"},{path:"user-management",canActivate:[xb.a],canActivateChild:[xb.a],data:Ub,loadChildren:"./core/auth/auth.module#RoutedAuthModule"},{path:"nfs/501/:message",component:Du,canActivate:[xb.a],data:Wb},{path:"nfs",canActivate:[xb.a],canActivateChild:[xb.a,wb],data:Kb,children:[{path:"",component:Gu},{path:"add",component:El,data:$b},{path:"edit/:cluster_id/:export_id",component:El,data:Zb}]},{path:"sso/404",component:Gc},{path:"login",component:ld},{path:"logout",children:[]},{path:"403",component:bd},{path:"404",component:Td},{path:"**",redirectTo:"/404"}]]},[]),a["\u0275mpd"](1024,kt.l,kt.A,[a.ApplicationRef,kt.t,kt.b,L.Location,a.Injector,a.NgModuleFactoryLoader,a.Compiler,kt.j,kt.h,[2,kt.s],[2,kt.k]]),a["\u0275mpd"](1073742336,kt.p,kt.p,[[2,kt.v],[2,kt.l]]),a["\u0275mpd"](1073742336,Xb,Xb,[]),a["\u0275mpd"](1073742336,Yn.e,Yn.e,[]),a["\u0275mpd"](1073742336,$e.B,$e.B,[]),a["\u0275mpd"](1073742336,$e.n,$e.n,[]),a["\u0275mpd"](1073742336,Ot.d,Ot.d,[]),a["\u0275mpd"](1073742336,$e.x,$e.x,[]),a["\u0275mpd"](1073742336,my.a,my.a,[]),a["\u0275mpd"](1073742336,oy.c,oy.c,[]),a["\u0275mpd"](1073742336,j.d,j.d,[]),a["\u0275mpd"](1073742336,jt.ChartsModule,jt.ChartsModule,[]),a["\u0275mpd"](1073742336,qa.e,qa.e,[]),a["\u0275mpd"](1073742336,by.a,by.a,[]),a["\u0275mpd"](1073742336,yy.a,yy.a,[]),a["\u0275mpd"](1073742336,vy.NgxDatatableModule,vy.NgxDatatableModule,[]),a["\u0275mpd"](1073742336,_y.a,_y.a,[]),a["\u0275mpd"](1073742336,ne.a,ne.a,[]),a["\u0275mpd"](1073742336,xy.a,xy.a,[]),a["\u0275mpd"](1073742336,St.c,St.c,[]),a["\u0275mpd"](1073742336,Ty.a,Ty.a,[]),a["\u0275mpd"](1073742336,vp,vp,[]),a["\u0275mpd"](1073742336,wy,wy,[]),a["\u0275mpd"](1073742336,Sy,Sy,[]),a["\u0275mpd"](1073742336,Oy.a,Oy.a,[]),a["\u0275mpd"](1073742336,ti.d,ti.d,[]),a["\u0275mpd"](1073742336,Cy.TreeModule,Cy.TreeModule,[]),a["\u0275mpd"](1073742336,ky,ky,[]),a["\u0275mpd"](1073742336,hl,hl,[]),a["\u0275mpd"](1073742336,Di,Di,[]),a["\u0275mpd"](1073742336,Iy,Iy,[]),a["\u0275mpd"](1073742336,Dy.a,Dy.a,[]),a["\u0275mpd"](1073742336,Ry,Ry,[]),a["\u0275mpd"](1073742336,dy.d,dy.d,[]),a["\u0275mpd"](1073742336,Ny,Ny,[]),a["\u0275mpd"](1073742336,Ay,Ay,[]),a["\u0275mpd"](1073742336,Ey,Ey,[]),a["\u0275mpd"](1073742336,py,py,[]),a["\u0275mpd"](1073742336,Ly,Ly,[[3,Ly]]),a["\u0275mpd"](1073742336,M,M,[]),a["\u0275mpd"](256,ee.n,"XSRF-TOKEN",[]),a["\u0275mpd"](256,ee.o,"X-XSRF-TOKEN",[]),a["\u0275mpd"](256,Kh,{tokenGetter:P},[]),a["\u0275mpd"](256,a["\u0275APP_ROOT"],!0,[]),a["\u0275mpd"](256,vb,"BrowserAnimations",[]),a["\u0275mpd"](256,a.TRANSLATIONS_FORMAT,"xlf",[]),a["\u0275mpd"](256,Yn.a,{autoClose:!0,insideClick:!1},[]),a["\u0275mpd"](256,Z,{},[]),a["\u0275mpd"](256,dt.b,{default:dt.a,config:{positionClass:"toast-top-right",preventDuplicates:!0,enableHtml:!0}},[])])});Object(a.enableProdMode)(),dn.platformBrowser().bootstrapModuleFactory(Py,{providers:E}).catch(function(t){return console.log(t)})},zavE:function(t,e,n){!function(t){"use strict";n("wd/R").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}})}()},zfKp:function(t,e,n){"use strict";e.observable="function"==typeof Symbol&&Symbol.observable||"@@observable"},zo3G:function(t,e,n){"use strict";var a=n("mrSG"),r=function(t){function e(e,n){var a=t.call(this,e,n)||this;return a.scheduler=e,a.work=n,a}return a.__extends(e,t),e.prototype.schedule=function(e,n){return void 0===n&&(n=0),n>0?t.prototype.schedule.call(this,e,n):(this.delay=n,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,n){return n>0||this.closed?t.prototype.execute.call(this,e,n):this._execute(e,n)},e.prototype.requestAsyncId=function(e,n,a){return void 0===a&&(a=0),null!==a&&a>0||null===a&&this.delay>0?t.prototype.requestAsyncId.call(this,e,n,a):e.flush(this)},e}(n("h9Dq").a),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e}(n("CS9Q").a);n.d(e,"a",function(){return o});var o=new i(r)},zotm:function(t,e,n){"use strict";n.d(e,"a",function(){return i});var a=n("rPjj"),r=n("Fxb1");function i(t,e,n,i,o){if(void 0===o&&(o=new a.a(t,n,i)),!o.closed)return Object(r.a)(e)(o)}},"zrt+":function(t,e,n){"use strict";n.d(e,"a",function(){return r});var a=n("6blF");function r(t){return!!t&&(t instanceof a.a||"function"==typeof t.lift&&"function"==typeof t.subscribe)}},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_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_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\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [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"))},zzsZ:function(t,e,n){"use strict";var a=n("Q1FS"),r=n("zB/H"),i=n("OAkW");e.fromArray=function(t,e){return new a.Observable(e?function(n){var a=new r.Subscription,i=0;return a.add(e.schedule(function(){i!==t.length?(n.next(t[i++]),n.closed||a.add(this.schedule())):n.complete()})),a}:i.subscribeToArray(t))}}},[[0,1]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/polyfills.f31db31652a3fd9f4bca.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/polyfills.f31db31652a3fd9f4bca.js
deleted file mode 100644 (file)
index 6b77d72..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"+auO":function(t,e,n){var r=n("XKFU"),o=n("lvtm");r(r.S,"Math",{cbrt:function(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},"+lvF":function(t,e,n){t.exports=n("VTer")("native-function-to-string",Function.toString)},"+oPb":function(t,e,n){"use strict";n("OGtf")("blink",function(t){return function(){return t(this,"blink","","")}})},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/8Fb":function(t,e,n){var r=n("XKFU"),o=n("UExd")(!0);r(r.S,"Object",{entries:function(t){return o(t)}})},"/KAi":function(t,e,n){var r=n("XKFU"),o=n("dyZX").isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&o(t)}})},"/SS/":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{setPrototypeOf:n("i5dc").set})},"/e88":function(t,e){t.exports="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},"/uf1":function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("2OiF"),a=n("hswa");n("nh4g")&&r(r.P+n("xbSm"),"Object",{__defineSetter__:function(t,e){a.f(o(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0E+W":function(t,e,n){n("elZq")("Array")},"0LDn":function(t,e,n){"use strict";n("OGtf")("italics",function(t){return function(){return t(this,"i","","")}})},"0TWp":function(t,e,n){!function(){"use strict";!function(t){var e=t.performance;function n(t){e&&e.mark&&e.mark(t)}function r(t,n){e&&e.measure&&e.measure(t,n)}n("Zone");var o=!0===t.__zone_symbol__forceDuplicateZoneCheck;if(t.Zone){if(o||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}var i,a=function(){function e(t,e){this._parent=t,this._name=e?e.name||"unnamed":"<root>",this._properties=e&&e.properties||{},this._zoneDelegate=new c(this,this._parent&&this._parent._zoneDelegate,e)}return e.assertZonePatched=function(){if(t.Promise!==F.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(e,"root",{get:function(){for(var t=e.current;t.parent;)t=t.parent;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"current",{get:function(){return P.zone},enumerable:!0,configurable:!0}),Object.defineProperty(e,"currentTask",{get:function(){return j},enumerable:!0,configurable:!0}),e.__load_patch=function(i,a){if(F.hasOwnProperty(i)){if(o)throw Error("Already loaded patch: "+i)}else if(!t["__Zone_disable_"+i]){var u="Zone:"+i;n(u),F[i]=a(t,e,O),r(u,u)}},Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(t){var e=this.getZoneWith(t);if(e)return e._properties[t]},e.prototype.getZoneWith=function(t){for(var e=this;e;){if(e._properties.hasOwnProperty(t))return e;e=e._parent}return null},e.prototype.fork=function(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)},e.prototype.wrap=function(t,e){if("function"!=typeof t)throw new Error("Expecting function got: "+t);var n=this._zoneDelegate.intercept(this,t,e),r=this;return function(){return r.runGuarded(n,this,arguments,e)}},e.prototype.run=function(t,e,n,r){P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,t,e,n,r)}finally{P=P.parent}},e.prototype.runGuarded=function(t,e,n,r){void 0===e&&(e=null),P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,t,e,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{P=P.parent}},e.prototype.runTask=function(t,e,n){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");if(t.state!==m||t.type!==E&&t.type!==T){var r=t.state!=k;r&&t._transitionTo(k,_),t.runCount++;var o=j;j=t,P={parent:P,zone:this};try{t.type==T&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,e,n)}catch(i){if(this._zoneDelegate.handleError(this,i))throw i}}finally{t.state!==m&&t.state!==x&&(t.type==E||t.data&&t.data.isPeriodic?r&&t._transitionTo(_,k):(t.runCount=0,this._updateTaskCount(t,-1),r&&t._transitionTo(m,k,m))),P=P.parent,j=o}}},e.prototype.scheduleTask=function(t){if(t.zone&&t.zone!==this)for(var e=this;e;){if(e===t.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+t.zone.name);e=e.parent}t._transitionTo(b,m);var n=[];t._zoneDelegates=n,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(r){throw t._transitionTo(x,b,m),this._zoneDelegate.handleError(this,r),r}return t._zoneDelegates===n&&this._updateTaskCount(t,1),t.state==b&&t._transitionTo(_,b),t},e.prototype.scheduleMicroTask=function(t,e,n,r){return this.scheduleTask(new s(w,t,e,n,r,void 0))},e.prototype.scheduleMacroTask=function(t,e,n,r,o){return this.scheduleTask(new s(T,t,e,n,r,o))},e.prototype.scheduleEventTask=function(t,e,n,r,o){return this.scheduleTask(new s(E,t,e,n,r,o))},e.prototype.cancelTask=function(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||y).name+"; Execution: "+this.name+")");t._transitionTo(S,_,k);try{this._zoneDelegate.cancelTask(this,t)}catch(e){throw t._transitionTo(x,S),this._zoneDelegate.handleError(this,e),e}return this._updateTaskCount(t,-1),t._transitionTo(m,S),t.runCount=0,t},e.prototype._updateTaskCount=function(t,e){var n=t._zoneDelegates;-1==e&&(t._zoneDelegates=null);for(var r=0;r<n.length;r++)n[r]._updateTaskCount(t.type,e)},e.__symbol__=I,e}(),u={name:"",onHasTask:function(t,e,n,r){return t.hasTask(n,r)},onScheduleTask:function(t,e,n,r){return t.scheduleTask(n,r)},onInvokeTask:function(t,e,n,r,o,i){return t.invokeTask(n,r,o,i)},onCancelTask:function(t,e,n,r){return t.cancelTask(n,r)}},c=function(){function t(t,e,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=t,this._parentDelegate=e,this._forkZS=n&&(n&&n.onFork?n:e._forkZS),this._forkDlgt=n&&(n.onFork?e:e._forkDlgt),this._forkCurrZone=n&&(n.onFork?this.zone:e.zone),this._interceptZS=n&&(n.onIntercept?n:e._interceptZS),this._interceptDlgt=n&&(n.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=n&&(n.onIntercept?this.zone:e.zone),this._invokeZS=n&&(n.onInvoke?n:e._invokeZS),this._invokeDlgt=n&&(n.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=n&&(n.onInvoke?this.zone:e.zone),this._handleErrorZS=n&&(n.onHandleError?n:e._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=n&&(n.onHandleError?this.zone:e.zone),this._scheduleTaskZS=n&&(n.onScheduleTask?n:e._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=n&&(n.onScheduleTask?this.zone:e.zone),this._invokeTaskZS=n&&(n.onInvokeTask?n:e._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=n&&(n.onInvokeTask?this.zone:e.zone),this._cancelTaskZS=n&&(n.onCancelTask?n:e._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=n&&(n.onCancelTask?this.zone:e.zone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;var r=n&&n.onHasTask;(r||e&&e._hasTaskZS)&&(this._hasTaskZS=r?n:u,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=t,n.onScheduleTask||(this._scheduleTaskZS=u,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this.zone),n.onInvokeTask||(this._invokeTaskZS=u,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this.zone),n.onCancelTask||(this._cancelTaskZS=u,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this.zone))}return t.prototype.fork=function(t,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,t,e):new a(t,e)},t.prototype.intercept=function(t,e,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,t,e,n):e},t.prototype.invoke=function(t,e,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,t,e,n,r,o):e.apply(n,r)},t.prototype.handleError=function(t,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,t,e)},t.prototype.scheduleTask=function(t,e){var n=e;if(this._scheduleTaskZS)this._hasTaskZS&&n._zoneDelegates.push(this._hasTaskDlgtOwner),(n=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,t,e))||(n=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=w)throw new Error("Task is missing scheduleFn.");d(e)}return n},t.prototype.invokeTask=function(t,e,n,r){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,t,e,n,r):e.callback.apply(n,r)},t.prototype.cancelTask=function(t,e){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,t,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");n=e.cancelFn(e)}return n},t.prototype.hasTask=function(t,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,t,e)}catch(n){this.handleError(t,n)}},t.prototype._updateTaskCount=function(t,e){var n=this._taskCounts,r=n[t],o=n[t]=r+e;if(o<0)throw new Error("More tasks executed then were scheduled.");0!=r&&0!=o||this.hasTask(this.zone,{microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:t})},t}(),s=function(){function e(n,r,o,i,a,u){this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=n,this.source=r,this.data=i,this.scheduleFn=a,this.cancelFn=u,this.callback=o;var c=this;this.invoke=n===E&&i&&i.useG?e.invokeTask:function(){return e.invokeTask.call(t,c,this,arguments)}}return e.invokeTask=function(t,e,n){t||(t=this),M++;try{return t.runCount++,t.zone.runTask(t,e,n)}finally{1==M&&g(),M--}},Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(m,b)},e.prototype._transitionTo=function(t,e,n){if(this._state!==e&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+t+"', expecting state '"+e+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=t,t==m&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},e}(),f=I("setTimeout"),l=I("Promise"),h=I("then"),p=[],v=!1;function d(e){if(0===M&&0===p.length)if(i||t[l]&&(i=t[l].resolve(0)),i){var n=i[h];n||(n=i.then),n.call(i,g)}else t[f](g,0);e&&p.push(e)}function g(){if(!v){for(v=!0;p.length;){var t=p;p=[];for(var e=0;e<t.length;e++){var n=t[e];try{n.zone.runTask(n,null,null)}catch(r){O.onUnhandledError(r)}}}O.microtaskDrainDone(),v=!1}}var y={name:"NO ZONE"},m="notScheduled",b="scheduling",_="scheduled",k="running",S="canceling",x="unknown",w="microTask",T="macroTask",E="eventTask",F={},O={symbol:I,currentZoneFrame:function(){return P},onUnhandledError:D,microtaskDrainDone:D,scheduleMicroTask:d,showUncaughtError:function(){return!a[I("ignoreConsoleErrorUncaughtError")]},patchEventTarget:function(){return[]},patchOnProperties:D,patchMethod:function(){return D},bindArguments:function(){return[]},patchThen:function(){return D},setNativePromise:function(t){t&&"function"==typeof t.resolve&&(i=t.resolve(0))}},P={parent:null,zone:new a(null,null)},j=null,M=0;function D(){}function I(t){return"__zone_symbol__"+t}r("Zone","Zone"),t.Zone=a}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global);var t=function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}};Zone.__load_patch("ZoneAwarePromise",function(e,n,r){var o=Object.getOwnPropertyDescriptor,i=Object.defineProperty,a=r.symbol,u=[],c=a("Promise"),s=a("then"),f="__creationTrace__";r.onUnhandledError=function(t){if(r.showUncaughtError()){var e=t&&t.rejection;e?console.error("Unhandled Promise rejection:",e instanceof Error?e.message:e,"; Zone:",t.zone.name,"; Task:",t.task&&t.task.source,"; Value:",e,e instanceof Error?e.stack:void 0):console.error(t)}},r.microtaskDrainDone=function(){for(;u.length;)for(var t=function(){var t=u.shift();try{t.zone.runGuarded(function(){throw t})}catch(e){h(e)}};u.length;)t()};var l=a("unhandledPromiseRejectionHandler");function h(t){r.onUnhandledError(t);try{var e=n[l];e&&"function"==typeof e&&e.call(this,t)}catch(o){}}function p(t){return t&&t.then}function v(t){return t}function d(t){return A.reject(t)}var g=a("state"),y=a("value"),m=a("finally"),b=a("parentPromiseValue"),_=a("parentPromiseState"),k="Promise.then",S=null,x=!0,w=!1,T=0;function E(t,e){return function(n){try{j(t,e,n)}catch(r){j(t,!1,r)}}}var F=function(){var t=!1;return function(e){return function(){t||(t=!0,e.apply(null,arguments))}}},O="Promise resolved with itself",P=a("currentTaskTrace");function j(t,e,o){var a,c=F();if(t===o)throw new TypeError(O);if(t[g]===S){var s=null;try{"object"!=typeof o&&"function"!=typeof o||(s=o&&o.then)}catch(d){return c(function(){j(t,!1,d)})(),t}if(e!==w&&o instanceof A&&o.hasOwnProperty(g)&&o.hasOwnProperty(y)&&o[g]!==S)D(o),j(t,o[g],o[y]);else if(e!==w&&"function"==typeof s)try{s.call(o,c(E(t,e)),c(E(t,!1)))}catch(d){c(function(){j(t,!1,d)})()}else{t[g]=e;var l=t[y];if(t[y]=o,t[m]===m&&e===x&&(t[g]=t[_],t[y]=t[b]),e===w&&o instanceof Error){var h=n.currentTask&&n.currentTask.data&&n.currentTask.data[f];h&&i(o,P,{configurable:!0,enumerable:!1,writable:!0,value:h})}for(var p=0;p<l.length;)I(t,l[p++],l[p++],l[p++],l[p++]);if(0==l.length&&e==w){t[g]=T;try{throw new Error("Uncaught (in promise): "+((a=o)&&a.toString===Object.prototype.toString?(a.constructor&&a.constructor.name||"")+": "+JSON.stringify(a):a?a.toString():Object.prototype.toString.call(a))+(o&&o.stack?"\n"+o.stack:""))}catch(d){var v=d;v.rejection=o,v.promise=t,v.zone=n.current,v.task=n.currentTask,u.push(v),r.scheduleMicroTask()}}}}return t}var M=a("rejectionHandledHandler");function D(t){if(t[g]===T){try{var e=n[M];e&&"function"==typeof e&&e.call(this,{rejection:t[y],promise:t})}catch(o){}t[g]=w;for(var r=0;r<u.length;r++)t===u[r].promise&&u.splice(r,1)}}function I(t,e,n,r,o){D(t);var i=t[g],a=i?"function"==typeof r?r:v:"function"==typeof o?o:d;e.scheduleMicroTask(k,function(){try{var r=t[y],o=n&&m===n[m];o&&(n[b]=r,n[_]=i);var u=e.run(a,void 0,o&&a!==d&&a!==v?[]:[r]);j(n,!0,u)}catch(c){j(n,!1,c)}},n)}var A=function(){function e(t){if(!(this instanceof e))throw new Error("Must be an instanceof Promise.");this[g]=S,this[y]=[];try{t&&t(E(this,x),E(this,w))}catch(n){j(this,!1,n)}}return e.toString=function(){return"function ZoneAwarePromise() { [native code] }"},e.resolve=function(t){return j(new this(null),x,t)},e.reject=function(t){return j(new this(null),w,t)},e.race=function(e){var n,r,o,i,a=new this(function(t,e){o=t,i=e});function u(t){a&&(a=o(t))}function c(t){a&&(a=i(t))}try{for(var s=t(e),f=s.next();!f.done;f=s.next()){var l=f.value;p(l)||(l=this.resolve(l)),l.then(u,c)}}catch(h){n={error:h}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return a},e.all=function(e){var n,r,o,i,a=new this(function(t,e){o=t,i=e}),u=2,c=0,s=[],f=function(t){p(t)||(t=l.resolve(t));var e=c;t.then(function(t){s[e]=t,0==--u&&o(s)},i),u++,c++},l=this;try{for(var h=t(e),v=h.next();!v.done;v=h.next())f(v.value)}catch(d){n={error:d}}finally{try{v&&!v.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}return 0==(u-=2)&&o(s),a},e.prototype.then=function(t,e){var r=new this.constructor(null),o=n.current;return this[g]==S?this[y].push(o,r,t,e):I(this,o,r,t,e),r},e.prototype.catch=function(t){return this.then(null,t)},e.prototype.finally=function(t){var e=new this.constructor(null);e[m]=m;var r=n.current;return this[g]==S?this[y].push(r,e,t,t):I(this,r,e,t,t),e},e}();A.resolve=A.resolve,A.reject=A.reject,A.race=A.race,A.all=A.all;var U=e[c]=e.Promise,X=n.__symbol__("ZoneAwarePromise"),Z=o(e,"Promise");Z&&!Z.configurable||(Z&&delete Z.writable,Z&&delete Z.value,Z||(Z={configurable:!0,enumerable:!0}),Z.get=function(){return e[X]?e[X]:e[c]},Z.set=function(t){t===A?e[X]=t:(e[c]=t,t.prototype[s]||C(t),r.setNativePromise(t))},i(e,"Promise",Z)),e.Promise=A;var K=a("thenPatched");function C(t){var e=t.prototype,n=o(e,"then");if(!n||!1!==n.writable&&n.configurable){var r=e.then;e[s]=r,t.prototype.then=function(t,e){var n=this;return new A(function(t,e){r.call(n,t,e)}).then(t,e)},t[K]=!0}}return r.patchThen=C,U&&C(U),Promise[n.__symbol__("uncaughtPromiseErrors")]=u,A}),Zone.__load_patch("fetch",function(t,e,n){var r=t.fetch,o=t.Promise,i=n.symbol("thenPatched"),a=n.symbol("fetchTaskScheduling"),u=n.symbol("fetchTaskAborting");if("function"==typeof r){var c=t.AbortController,s="function"==typeof c,f=null;s&&(t.AbortController=function(){var t=new c;return t.signal.abortController=t,t},f=n.patchMethod(c.prototype,"abort",function(t){return function(e,n){return e.task?e.task.zone.cancelTask(e.task):t.apply(e,n)}}));var l=function(){};t.fetch=function(){var t=this,c=Array.prototype.slice.call(arguments),h=c.length>1?c[1]:null,p=h&&h.signal;return new Promise(function(h,v){var d=e.current.scheduleMacroTask("fetch",l,c,function(){var u,s=e.current;try{s[a]=!0,u=r.apply(t,c)}catch(l){return void v(l)}finally{s[a]=!1}if(!(u instanceof o)){var f=u.constructor;f[i]||n.patchThen(f)}u.then(function(t){"notScheduled"!==d.state&&d.invoke(),h(t)},function(t){"notScheduled"!==d.state&&d.invoke(),v(t)})},function(){if(s)if(p&&p.abortController&&!p.aborted&&"function"==typeof p.abortController.abort&&f)try{e.current[u]=!0,f.call(p.abortController)}finally{e.current[u]=!1}else v("cancel fetch need a AbortController.signal");else v("No AbortController supported, can not cancel fetch")});p&&p.abortController&&(p.abortController.task=d)})}}});var e=Object.getOwnPropertyDescriptor,n=Object.defineProperty,r=Object.getPrototypeOf,o=Object.create,i=Array.prototype.slice,a="addEventListener",u="removeEventListener",c=Zone.__symbol__(a),s=Zone.__symbol__(u),f="true",l="false",h="__zone_symbol__";function p(t,e){return Zone.current.wrap(t,e)}function v(t,e,n,r,o){return Zone.current.scheduleMacroTask(t,e,n,r,o)}var d=Zone.__symbol__,g="undefined"!=typeof window,y=g?window:void 0,m=g&&y||"object"==typeof self&&self||global,b="removeAttribute",_=[null];function k(t,e){for(var n=t.length-1;n>=0;n--)"function"==typeof t[n]&&(t[n]=p(t[n],e+"_"+n));return t}function S(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&void 0===t.set)}var x="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,w=!("nw"in m)&&void 0!==m.process&&"[object process]"==={}.toString.call(m.process),T=!w&&!x&&!(!g||!y.HTMLElement),E=void 0!==m.process&&"[object process]"==={}.toString.call(m.process)&&!x&&!(!g||!y.HTMLElement),F={},O=function(t){if(t=t||m.event){var e=F[t.type];e||(e=F[t.type]=d("ON_PROPERTY"+t.type));var n,r=this||t.target||m,o=r[e];return T&&r===y&&"error"===t.type?!0===(n=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error))&&t.preventDefault():null==(n=o&&o.apply(this,arguments))||n||t.preventDefault(),n}};function P(t,r,o){var i=e(t,r);if(!i&&o&&e(o,r)&&(i={enumerable:!0,configurable:!0}),i&&i.configurable){var a=d("on"+r+"patched");if(!t.hasOwnProperty(a)||!t[a]){delete i.writable,delete i.value;var u=i.get,c=i.set,s=r.substr(2),f=F[s];f||(f=F[s]=d("ON_PROPERTY"+s)),i.set=function(e){var n=this;n||t!==m||(n=m),n&&(n[f]&&n.removeEventListener(s,O),c&&c.apply(n,_),"function"==typeof e?(n[f]=e,n.addEventListener(s,O,!1)):n[f]=null)},i.get=function(){var e=this;if(e||t!==m||(e=m),!e)return null;var n=e[f];if(n)return n;if(u){var o=u&&u.call(this);if(o)return i.set.call(this,o),"function"==typeof e[b]&&e.removeAttribute(r),o}return null},n(t,r,i),t[a]=!0}}}function j(t,e,n){if(e)for(var r=0;r<e.length;r++)P(t,"on"+e[r],n);else{var o=[];for(var i in t)"on"==i.substr(0,2)&&o.push(i);for(var a=0;a<o.length;a++)P(t,o[a],n)}}var M=d("originalInstance");function D(t){var e=m[t];if(e){m[d(t)]=e,m[t]=function(){var n=k(arguments,t);switch(n.length){case 0:this[M]=new e;break;case 1:this[M]=new e(n[0]);break;case 2:this[M]=new e(n[0],n[1]);break;case 3:this[M]=new e(n[0],n[1],n[2]);break;case 4:this[M]=new e(n[0],n[1],n[2],n[3]);break;default:throw new Error("Arg list too long.")}},U(m[t],e);var r,o=new e(function(){});for(r in o)"XMLHttpRequest"===t&&"responseBlob"===r||function(e){"function"==typeof o[e]?m[t].prototype[e]=function(){return this[M][e].apply(this[M],arguments)}:n(m[t].prototype,e,{set:function(n){"function"==typeof n?(this[M][e]=p(n,t+"."+e),U(this[M][e],n)):this[M][e]=n},get:function(){return this[M][e]}})}(r);for(r in e)"prototype"!==r&&e.hasOwnProperty(r)&&(m[t][r]=e[r])}}var I=!1;function A(t,n,o){for(var i=t;i&&!i.hasOwnProperty(n);)i=r(i);!i&&t[n]&&(i=t);var a,u,c=d(n),s=null;if(i&&!(s=i[c])&&(s=i[c]=i[n],S(i&&e(i,n)))){var f=o(s,c,n);i[n]=function(){return f(this,arguments)},U(i[n],s),I&&(a=s,u=i[n],"function"==typeof Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(a).forEach(function(t){var e=Object.getOwnPropertyDescriptor(a,t);Object.defineProperty(u,t,{get:function(){return a[t]},set:function(n){(!e||e.writable&&"function"==typeof e.set)&&(a[t]=n)},enumerable:!e||e.enumerable,configurable:!e||e.configurable})}))}return s}function U(t,e){t[d("OriginalDelegate")]=e}var X=!1,Z=!1;function K(){try{var t=y.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch(e){}return!1}function C(){if(X)return Z;X=!0;try{var t=y.navigator.userAgent;return-1===t.indexOf("MSIE ")&&-1===t.indexOf("Trident/")&&-1===t.indexOf("Edge/")||(Z=!0),Z}catch(e){}}Zone.__load_patch("toString",function(t){var e=Function.prototype.toString,n=d("OriginalDelegate"),r=d("Promise"),o=d("Error"),i=function(){if("function"==typeof this){var i=this[n];if(i)return"function"==typeof i?e.apply(this[n],arguments):Object.prototype.toString.call(i);if(this===Promise){var a=t[r];if(a)return e.apply(a,arguments)}if(this===Error){var u=t[o];if(u)return e.apply(u,arguments)}}return e.apply(this,arguments)};i[n]=e,Function.prototype.toString=i;var a=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":a.apply(this,arguments)}});var L=!1;if("undefined"!=typeof window)try{var R=Object.defineProperty({},"passive",{get:function(){L=!0}});window.addEventListener("test",R,R),window.removeEventListener("test",R,R)}catch(mt){L=!1}var z={useG:!0},N={},q={},V=/^__zone_symbol__(\w+)(true|false)$/,G="__zone_symbol__propagationStopped";function H(t,e,n){var o=n&&n.add||a,i=n&&n.rm||u,c=n&&n.listeners||"eventListeners",s=n&&n.rmAll||"removeAllListeners",p=d(o),v="."+o+":",g="prependListener",y="."+g+":",m=function(t,e,n){if(!t.isRemoved){var r=t.callback;"object"==typeof r&&r.handleEvent&&(t.callback=function(t){return r.handleEvent(t)},t.originalDelegate=r),t.invoke(t,e,[n]);var o=t.options;o&&"object"==typeof o&&o.once&&e[i].call(e,n.type,t.originalDelegate?t.originalDelegate:t.callback,o)}},b=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[N[e.type][l]];if(r)if(1===r.length)m(r[0],n,e);else for(var o=r.slice(),i=0;i<o.length&&(!e||!0!==e[G]);i++)m(o[i],n,e)}},_=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[N[e.type][f]];if(r)if(1===r.length)m(r[0],n,e);else for(var o=r.slice(),i=0;i<o.length&&(!e||!0!==e[G]);i++)m(o[i],n,e)}};function k(e,n){if(!e)return!1;var a=!0;n&&void 0!==n.useG&&(a=n.useG);var u=n&&n.vh,m=!0;n&&void 0!==n.chkDup&&(m=n.chkDup);var k=!1;n&&void 0!==n.rt&&(k=n.rt);for(var S=e;S&&!S.hasOwnProperty(o);)S=r(S);if(!S&&e[o]&&(S=e),!S)return!1;if(S[p])return!1;var x,T=n&&n.eventNameToString,E={},F=S[p]=S[o],O=S[d(i)]=S[i],P=S[d(c)]=S[c],j=S[d(s)]=S[s];function M(t){L||"boolean"==typeof E.options||null==E.options||(t.options=!!E.options.capture,E.options=t.options)}n&&n.prepend&&(x=S[d(n.prepend)]=S[n.prepend]);var D=a?function(t){if(!E.isExisting)return M(t),F.call(E.target,E.eventName,E.capture?_:b,E.options)}:function(t){return M(t),F.call(E.target,E.eventName,t.invoke,E.options)},I=a?function(t){if(!t.isRemoved){var e=N[t.eventName],n=void 0;e&&(n=e[t.capture?f:l]);var r=n&&t.target[n];if(r)for(var o=0;o<r.length;o++)if(r[o]===t){r.splice(o,1),t.isRemoved=!0,0===r.length&&(t.allRemoved=!0,t.target[n]=null);break}}if(t.allRemoved)return O.call(t.target,t.eventName,t.capture?_:b,t.options)}:function(t){return O.call(t.target,t.eventName,t.invoke,t.options)},A=n&&n.diff?n.diff:function(t,e){var n=typeof e;return"function"===n&&t.callback===e||"object"===n&&t.originalDelegate===e},X=Zone[Zone.__symbol__("BLACK_LISTED_EVENTS")],Z=function(e,n,r,o,i,c){return void 0===i&&(i=!1),void 0===c&&(c=!1),function(){var s=this||t,p=arguments[0],v=arguments[1];if(!v)return e.apply(this,arguments);if(w&&"uncaughtException"===p)return e.apply(this,arguments);var d=!1;if("function"!=typeof v){if(!v.handleEvent)return e.apply(this,arguments);d=!0}if(!u||u(e,v,s,arguments)){var g,y=arguments[2];if(X)for(var b=0;b<X.length;b++)if(p===X[b])return e.apply(this,arguments);var _=!1;void 0===y?g=!1:!0===y?g=!0:!1===y?g=!1:(g=!!y&&!!y.capture,_=!!y&&!!y.once);var k,S=Zone.current,x=N[p];if(x)k=x[g?f:l];else{var F=(T?T(p):p)+l,O=(T?T(p):p)+f,P=h+F,j=h+O;N[p]={},N[p][l]=P,N[p][f]=j,k=g?j:P}var M,D=s[k],I=!1;if(D){if(I=!0,m)for(b=0;b<D.length;b++)if(A(D[b],v))return}else D=s[k]=[];var U=s.constructor.name,Z=q[U];Z&&(M=Z[p]),M||(M=U+n+(T?T(p):p)),E.options=y,_&&(E.options.once=!1),E.target=s,E.capture=g,E.eventName=p,E.isExisting=I;var K=a?z:void 0;K&&(K.taskData=E);var C=S.scheduleEventTask(M,v,K,r,o);return E.target=null,K&&(K.taskData=null),_&&(y.once=!0),(L||"boolean"!=typeof C.options)&&(C.options=y),C.target=s,C.capture=g,C.eventName=p,d&&(C.originalDelegate=v),c?D.unshift(C):D.push(C),i?s:void 0}}};return S[o]=Z(F,v,D,I,k),x&&(S[g]=Z(x,y,function(t){return x.call(E.target,E.eventName,t.invoke,E.options)},I,k,!0)),S[i]=function(){var e,n=this||t,r=arguments[0],o=arguments[2];e=void 0!==o&&(!0===o||!1!==o&&!!o&&!!o.capture);var i=arguments[1];if(!i)return O.apply(this,arguments);if(!u||u(O,i,n,arguments)){var a,c=N[r];c&&(a=c[e?f:l]);var s=a&&n[a];if(s)for(var h=0;h<s.length;h++){var p=s[h];if(A(p,i))return s.splice(h,1),p.isRemoved=!0,0===s.length&&(p.allRemoved=!0,n[a]=null),p.zone.cancelTask(p),k?n:void 0}return O.apply(this,arguments)}},S[c]=function(){for(var e=arguments[0],n=[],r=W(this||t,T?T(e):e),o=0;o<r.length;o++){var i=r[o];n.push(i.originalDelegate?i.originalDelegate:i.callback)}return n},S[s]=function(){var e=this||t,n=arguments[0];if(n){var r=N[n];if(r){var o=e[r[l]],a=e[r[f]];if(o){var u=o.slice();for(p=0;p<u.length;p++)this[i].call(this,n,(c=u[p]).originalDelegate?c.originalDelegate:c.callback,c.options)}if(a)for(u=a.slice(),p=0;p<u.length;p++){var c;this[i].call(this,n,(c=u[p]).originalDelegate?c.originalDelegate:c.callback,c.options)}}}else{for(var h=Object.keys(e),p=0;p<h.length;p++){var v=V.exec(h[p]),d=v&&v[1];d&&"removeListener"!==d&&this[s].call(this,d)}this[s].call(this,"removeListener")}if(k)return this},U(S[o],F),U(S[i],O),j&&U(S[s],j),P&&U(S[c],P),!0}for(var S=[],x=0;x<e.length;x++)S[x]=k(e[x],n);return S}function W(t,e){var n=[];for(var r in t){var o=V.exec(r),i=o&&o[1];if(i&&(!e||i===e)){var a=t[r];if(a)for(var u=0;u<a.length;u++)n.push(a[u])}}return n}var Y=d("zoneTask");function B(t,e,n,r){var o=null,i=null;n+=r;var a={};function u(e){var n=e.data;return n.args[0]=function(){try{e.invoke.apply(this,arguments)}finally{e.data&&e.data.isPeriodic||("number"==typeof n.handleId?delete a[n.handleId]:n.handleId&&(n.handleId[Y]=null))}},n.handleId=o.apply(t,n.args),e}function c(t){return i(t.data.handleId)}o=A(t,e+=r,function(n){return function(o,i){if("function"==typeof i[0]){var s=v(e,i[0],{isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?i[1]||0:void 0,args:i},u,c);if(!s)return s;var f=s.data.handleId;return"number"==typeof f?a[f]=s:f&&(f[Y]=s),f&&f.ref&&f.unref&&"function"==typeof f.ref&&"function"==typeof f.unref&&(s.ref=f.ref.bind(f),s.unref=f.unref.bind(f)),"number"==typeof f||f?f:s}return n.apply(t,i)}}),i=A(t,n,function(e){return function(n,r){var o,i=r[0];"number"==typeof i?o=a[i]:(o=i&&i[Y])||(o=i),o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&("number"==typeof i?delete a[i]:i&&(i[Y]=null),o.zone.cancelTask(o)):e.apply(t,r)}})}var J=Object[d("defineProperty")]=Object.defineProperty,Q=Object[d("getOwnPropertyDescriptor")]=Object.getOwnPropertyDescriptor,$=Object.create,tt=d("unconfigurables");function et(t,e){return t&&t[tt]&&t[tt][e]}function nt(t,e,n){return Object.isFrozen(n)||(n.configurable=!0),n.configurable||(t[tt]||Object.isFrozen(t)||J(t,tt,{writable:!0,value:{}}),t[tt]&&(t[tt][e]=!0)),n}function rt(t,e,n,r){try{return J(t,e,n)}catch(i){if(!n.configurable)throw i;void 0===r?delete n.configurable:n.configurable=r;try{return J(t,e,n)}catch(i){var o=null;try{o=JSON.stringify(n)}catch(i){o=n.toString()}console.log("Attempting to configure '"+e+"' with descriptor '"+o+"' on object '"+t+"' and got error, giving up: "+i)}}}var ot=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplyconnected","vrdisplaydisconnected","vrdisplaypresentchange"],it=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],at=["load"],ut=["blur","error","focus","load","resize","scroll","messageerror"],ct=["bounce","finish","start"],st=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],ft=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],lt=["close","error","open","message"],ht=["error","message"],pt=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],ot,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function vt(t,e,n,r){t&&j(t,function(t,e,n){if(!n||0===n.length)return e;var r=n.filter(function(e){return e.target===t});if(!r||0===r.length)return e;var o=r[0].ignoreProperties;return e.filter(function(t){return-1===o.indexOf(t)})}(t,e,n),r)}function dt(t,c){if(!w||E){var s="undefined"!=typeof WebSocket;if(function(){if((T||E)&&!e(HTMLElement.prototype,"onclick")&&"undefined"!=typeof Element){var t=e(Element.prototype,"onclick");if(t&&!t.configurable)return!1}var r=XMLHttpRequest.prototype,o=e(r,"onreadystatechange");if(o){n(r,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return!0}});var i=!!(u=new XMLHttpRequest).onreadystatechange;return n(r,"onreadystatechange",o||{}),i}var a=d("fake");n(r,"onreadystatechange",{enumerable:!0,configurable:!0,get:function(){return this[a]},set:function(t){this[a]=t}});var u,c=function(){};return(u=new XMLHttpRequest).onreadystatechange=c,i=u[a]===c,u.onreadystatechange=null,i}()){var f=c.__Zone_ignore_on_properties;if(T){var l=window,h=K?[{target:l,ignoreProperties:["error"]}]:[];vt(l,pt.concat(["messageerror"]),f?f.concat(h):f,r(l)),vt(Document.prototype,pt,f),void 0!==l.SVGElement&&vt(l.SVGElement.prototype,pt,f),vt(Element.prototype,pt,f),vt(HTMLElement.prototype,pt,f),vt(HTMLMediaElement.prototype,it,f),vt(HTMLFrameSetElement.prototype,ot.concat(ut),f),vt(HTMLBodyElement.prototype,ot.concat(ut),f),vt(HTMLFrameElement.prototype,at,f),vt(HTMLIFrameElement.prototype,at,f);var v=l.HTMLMarqueeElement;v&&vt(v.prototype,ct,f);var g=l.Worker;g&&vt(g.prototype,ht,f)}vt(XMLHttpRequest.prototype,st,f);var y=c.XMLHttpRequestEventTarget;y&&vt(y&&y.prototype,st,f),"undefined"!=typeof IDBIndex&&(vt(IDBIndex.prototype,ft,f),vt(IDBRequest.prototype,ft,f),vt(IDBOpenDBRequest.prototype,ft,f),vt(IDBDatabase.prototype,ft,f),vt(IDBTransaction.prototype,ft,f),vt(IDBCursor.prototype,ft,f)),s&&vt(WebSocket.prototype,lt,f)}else!function(){for(var t=function(t){var e=pt[t],n="on"+e;self.addEventListener(e,function(t){var e,r,o=t.target;for(r=o?o.constructor.name+"."+n:"unknown."+n;o;)o[n]&&!o[n][gt]&&((e=p(o[n],r))[gt]=o[n],o[n]=e),o=o.parentElement},!0)},e=0;e<pt.length;e++)t(e)}(),D("XMLHttpRequest"),s&&function(t,n){var r=n.WebSocket;n.EventTarget||H(n,[r.prototype]),n.WebSocket=function(t,n){var c,s,f=arguments.length>1?new r(t,n):new r(t),l=e(f,"onmessage");return l&&!1===l.configurable?(c=o(f),s=f,[a,u,"send","close"].forEach(function(t){c[t]=function(){var e=i.call(arguments);if(t===a||t===u){var n=e.length>0?e[0]:void 0;if(n){var r=Zone.__symbol__("ON_PROPERTY"+n);f[r]=c[r]}}return f[t].apply(f,e)}})):c=f,j(c,["close","error","message","open"],s),c};var c=n.WebSocket;for(var s in r)c[s]=r[s]}(0,c)}}var gt=d("unbound");function yt(t,n,r,o){var i=Zone.__symbol__(r);if(!t[i]){var a=t[i]=t[r];t[r]=function(i,u,c){return u&&u.prototype&&o.forEach(function(t){var o,i,a,c,s=n+"."+r+"::"+t,f=u.prototype;if(f.hasOwnProperty(t)){var l=e(f,t);l&&l.value?(l.value=p(l.value,s),c=(a=l).configurable,rt(o=u.prototype,i=t,a=nt(o,i,a),c)):f[t]&&(f[t]=p(f[t],s))}else f[t]&&(f[t]=p(f[t],s))}),a.call(t,i,u,c)},U(t[r],a)}}Zone.__load_patch("util",function(t,e,n){n.patchOnProperties=j,n.patchMethod=A,n.bindArguments=k}),Zone.__load_patch("timers",function(t){B(t,"set","clear","Timeout"),B(t,"set","clear","Interval"),B(t,"set","clear","Immediate")}),Zone.__load_patch("requestAnimationFrame",function(t){B(t,"request","cancel","AnimationFrame"),B(t,"mozRequest","mozCancel","AnimationFrame"),B(t,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",function(t,e){for(var n=["alert","prompt","confirm"],r=0;r<n.length;r++)A(t,n[r],function(n,r,o){return function(r,i){return e.current.run(n,t,i,o)}})}),Zone.__load_patch("EventTarget",function(t,e,n){var r=e.__symbol__("BLACK_LISTED_EVENTS");t[r]&&(e[r]=t[r]),function(t,e){!function(t,e){var n=t.Event;n&&n.prototype&&e.patchMethod(n.prototype,"stopImmediatePropagation",function(t){return function(e,n){e[G]=!0,t&&t.apply(e,n)}})}(t,e)}(t,n),function(t,e){var n="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video",r="ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(","),o=[],i=t.wtf,a=n.split(",");i?o=a.map(function(t){return"HTML"+t+"Element"}).concat(r):t.EventTarget?o.push("EventTarget"):o=r;for(var u=t.__Zone_disable_IE_check||!1,c=t.__Zone_enable_cross_context_check||!1,s=C(),p="function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }",v=0;v<pt.length;v++){var d=h+((_=pt[v])+l),g=h+(_+f);N[_]={},N[_][l]=d,N[_][f]=g}for(v=0;v<n.length;v++)for(var y=a[v],m=q[y]={},b=0;b<pt.length;b++){var _;m[_=pt[b]]=y+".addEventListener:"+_}var k=[];for(v=0;v<o.length;v++){var S=t[o[v]];k.push(S&&S.prototype)}H(t,k,{vh:function(t,e,n,r){if(!u&&s){if(c)try{var o;if("[object FunctionWrapper]"===(o=e.toString())||o==p)return t.apply(n,r),!1}catch(i){return t.apply(n,r),!1}else if("[object FunctionWrapper]"===(o=e.toString())||o==p)return t.apply(n,r),!1}else if(c)try{e.toString()}catch(i){return t.apply(n,r),!1}return!0}}),e.patchEventTarget=H}(t,n);var o=t.XMLHttpRequestEventTarget;o&&o.prototype&&n.patchEventTarget(t,[o.prototype]),D("MutationObserver"),D("WebKitMutationObserver"),D("IntersectionObserver"),D("FileReader")}),Zone.__load_patch("on_property",function(t,e,n){dt(0,t),Object.defineProperty=function(t,e,n){if(et(t,e))throw new TypeError("Cannot assign to read only property '"+e+"' of "+t);var r=n.configurable;return"prototype"!==e&&(n=nt(t,e,n)),rt(t,e,n,r)},Object.defineProperties=function(t,e){return Object.keys(e).forEach(function(n){Object.defineProperty(t,n,e[n])}),t},Object.create=function(t,e){return"object"!=typeof e||Object.isFrozen(e)||Object.keys(e).forEach(function(n){e[n]=nt(t,n,e[n])}),$(t,e)},Object.getOwnPropertyDescriptor=function(t,e){var n=Q(t,e);return n&&et(t,e)&&(n.configurable=!1),n}}),Zone.__load_patch("customElements",function(t,e,n){(T||E)&&"registerElement"in t.document&&yt(document,"Document","registerElement",["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"]),(T||E)&&"customElements"in t&&yt(t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}),Zone.__load_patch("canvas",function(t){var e=t.HTMLCanvasElement;void 0!==e&&e.prototype&&e.prototype.toBlob&&function(t,n,r){var o=null;function i(t){var e=t.data;return e.args[e.cbIdx]=function(){t.invoke.apply(this,arguments)},o.apply(e.target,e.args),t}o=A(e.prototype,"toBlob",function(t){return function(e,n){var r=function(t,e){return{name:"HTMLCanvasElement.toBlob",target:t,cbIdx:0,args:e}}(e,n);return r.cbIdx>=0&&"function"==typeof n[r.cbIdx]?v(r.name,n[r.cbIdx],r,i):t.apply(e,n)}})}()}),Zone.__load_patch("XHR",function(t,e){!function(f){var l=XMLHttpRequest.prototype,h=l[c],p=l[s];if(!h){var g=t.XMLHttpRequestEventTarget;if(g){var y=g.prototype;h=y[c],p=y[s]}}var m="readystatechange",b="scheduled";function _(t){var e=t.data,r=e.target;r[i]=!1,r[u]=!1;var a=r[o];h||(h=r[c],p=r[s]),a&&p.call(r,m,a);var f=r[o]=function(){if(r.readyState===r.DONE)if(!e.aborted&&r[i]&&t.state===b){var n=r.__zone_symbol__loadfalse;if(n&&n.length>0){var o=t.invoke;t.invoke=function(){for(var n=r.__zone_symbol__loadfalse,i=0;i<n.length;i++)n[i]===t&&n.splice(i,1);e.aborted||t.state!==b||o.call(t)},n.push(t)}else t.invoke()}else e.aborted||!1!==r[i]||(r[u]=!0)};return h.call(r,m,f),r[n]||(r[n]=t),E.apply(r,e.args),r[i]=!0,t}function k(){}function S(t){var e=t.data;return e.aborted=!0,F.apply(e.target,e.args)}var x=A(l,"open",function(){return function(t,e){return t[r]=0==e[2],t[a]=e[1],x.apply(t,e)}}),w=d("fetchTaskAborting"),T=d("fetchTaskScheduling"),E=A(l,"send",function(){return function(t,n){if(!0===e.current[T])return E.apply(t,n);if(t[r])return E.apply(t,n);var o={target:t,url:t[a],isPeriodic:!1,args:n,aborted:!1},i=v("XMLHttpRequest.send",k,o,_,S);t&&!0===t[u]&&!o.aborted&&i.state===b&&i.invoke()}}),F=A(l,"abort",function(){return function(t,r){var o=t[n];if(o&&"string"==typeof o.type){if(null==o.cancelFn||o.data&&o.data.aborted)return;o.zone.cancelTask(o)}else if(!0===e.current[w])return F.apply(t,r)}})}();var n=d("xhrTask"),r=d("xhrSync"),o=d("xhrListener"),i=d("xhrScheduled"),a=d("xhrURL"),u=d("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",function(t){t.navigator&&t.navigator.geolocation&&function(t,n){for(var r=t.constructor.name,o=function(o){var i=n[o],a=t[i];if(a){if(!S(e(t,i)))return"continue";t[i]=function(t){var e=function(){return t.apply(this,k(arguments,r+"."+i))};return U(e,t),e}(a)}},i=0;i<n.length;i++)o(i)}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",function(t,e){function n(e){return function(n){W(t,e).forEach(function(r){var o=t.PromiseRejectionEvent;if(o){var i=new o(e,{promise:n.promise,reason:n.rejection});r.invoke(i)}})}}t.PromiseRejectionEvent&&(e[d("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),e[d("rejectionHandledHandler")]=n("rejectionhandled"))})}()},"0l/t":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(2);r(r.P+r.F*!n("LyE8")([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},"0mN4":function(t,e,n){"use strict";n("OGtf")("fixed",function(t){return function(){return t(this,"tt","","")}})},"0sh+":function(t,e,n){var r=n("quPj"),o=n("vhPU");t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},1:function(t,e,n){t.exports=n("hN/g")},"11IZ":function(t,e,n){var r=n("dyZX").parseFloat,o=n("qncB").trim;t.exports=1/r(n("/e88")+"-0")!=-1/0?function(t){var e=o(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},"1MBn":function(t,e,n){var r=n("DVgA"),o=n("JiEa"),i=n("UqcF");t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),c=i.f,s=0;u.length>s;)c.call(t,a=u[s++])&&e.push(a);return e}},"1TsA":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},"1sa7":function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},"25dN":function(t,e,n){var r=n("XKFU");r(r.S,"Object",{is:n("g6HL")})},"2OiF":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,e,n){var r=n("XKFU");r(r.P,"Function",{bind:n("8MEG")})},"2atp":function(t,e,n){var r=n("XKFU"),o=Math.atanh;r(r.S+r.F*!(o&&1/o(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},"4A4+":function(t,e,n){n("2Spj"),n("f3/d"),n("IXt9"),t.exports=n("g3g5").Function},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),o=n("XKFU"),i=n("KroJ"),a=n("3Lyj"),u=n("Z6vF"),c=n("SlkY"),s=n("9gX7"),f=n("0/R4"),l=n("eeVq"),h=n("XMVh"),p=n("fyDq"),v=n("Xbzi");t.exports=function(t,e,n,d,g,y){var m=r[t],b=m,_=g?"set":"add",k=b&&b.prototype,S={},x=function(t){var e=k[t];i(k,t,"delete"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(y||k.forEach&&!l(function(){(new b).entries().next()}))){var w=new b,T=w[_](y?{}:-0,1)!=w,E=l(function(){w.has(1)}),F=h(function(t){new b(t)}),O=!y&&l(function(){for(var t=new b,e=5;e--;)t[_](e,e);return!t.has(-0)});F||((b=e(function(e,n){s(e,b,t);var r=v(new m,e,b);return null!=n&&c(n,g,r[_],r),r})).prototype=k,k.constructor=b),(E||O)&&(x("delete"),x("has"),g&&x("get")),(O||T)&&x(_),y&&k.clear&&delete k.clear}else b=d.getConstructor(e,t,g,_),a(b.prototype,n),u.NEED=!0;return p(b,t),S[t]=b,o(o.G+o.W+o.F*(b!=m),S),y||d.setStrong(b,t,g),b}},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"5Pf0":function(t,e,n){var r=n("S/j/"),o=n("OP3Y");n("Xtr8")("getPrototypeOf",function(){return function(t){return o(r(t))}})},"69bn":function(t,e,n){var r=n("y3w9"),o=n("2OiF"),i=n("K0xU")("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},"6AQ9":function(t,e,n){"use strict";var r=n("XKFU"),o=n("8a7r");r(r.S+r.F*n("eeVq")(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)o(n,t,arguments[t++]);return n.length=e,n}})},"6FMO":function(t,e,n){var r=n("0/R4"),o=n("EWmC"),i=n("K0xU")("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},"7h0T":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isNaN:function(t){return t!=t}})},"8+KV":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(0),i=n("LyE8")([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(t){return o(this,t,arguments[1])}})},"84bF":function(t,e,n){"use strict";n("OGtf")("small",function(t){return function(){return t(this,"small","","")}})},"8MEG":function(t,e,n){"use strict";var r=n("2OiF"),o=n("0/R4"),i=n("MfQN"),a=[].slice,u={};t.exports=Function.bind||function(t){var e=r(this),n=a.call(arguments,1),c=function(){var r=n.concat(a.call(arguments));return this instanceof c?function(t,e,n){if(!(e in u)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";u[e]=Function("F,a","return new F("+r.join(",")+")")}return u[e](t,n)}(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(c.prototype=e.prototype),c}},"8a7r":function(t,e,n){"use strict";var r=n("hswa"),o=n("RjD/");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},"91GP":function(t,e,n){var r=n("XKFU");r(r.S+r.F,"Object",{assign:n("czNK")})},"99sg":function(t,e,n){n("ioFf"),n("hHhE"),n("HAE/"),n("WLL4"),n("mYba"),n("5Pf0"),n("RW0V"),n("JduL"),n("DW2E"),n("z2o2"),n("mura"),n("Zshi"),n("V/DX"),n("FlsD"),n("91GP"),n("25dN"),n("/SS/"),n("Btvt"),t.exports=n("g3g5").Object},"9AAn":function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(o(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(o(this,"Map"),0===t?0:t,e)}},r,!0)},"9P93":function(t,e,n){var r=n("XKFU"),o=Math.imul;r(r.S+r.F*n("eeVq")(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},"9VmF":function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".startsWith;r(r.P+r.F*n("UUeW")("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},A2zW:function(t,e,n){"use strict";var r=n("XKFU"),o=n("RYi7"),i=n("vvmO"),a=n("l0Rn"),u=1..toFixed,c=Math.floor,s=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,e){for(var n=-1,r=e;++n<6;)s[n]=(r+=t*s[n])%1e7,r=c(r/1e7)},h=function(t){for(var e=6,n=0;--e>=0;)s[e]=c((n+=s[e])/t),n=n%t*1e7},p=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==s[t]){var n=String(s[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e},v=function(t,e,n){return 0===e?n:e%2==1?v(t,e-1,n*t):v(t*t,e/2,n)};r(r.P+r.F*(!!u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n("eeVq")(function(){u.call({})})),"Number",{toFixed:function(t){var e,n,r,u,c=i(this,f),s=o(t),d="",g="0";if(s<0||s>20)throw RangeError(f);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(d="-",c=-c),c>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*v(2,69,1))-69)<0?c*v(2,-e,1):c/v(2,e,1),n*=4503599627370496,(e=52-e)>0){for(l(0,n),r=s;r>=7;)l(1e7,0),r-=7;for(l(v(10,r,1),0),r=e-1;r>=23;)h(1<<23),r-=23;h(1<<r),l(1,1),h(2),g=p()}else l(0,n),l(1<<-e,0),g=p()+a.call("0",s);return s>0?d+((u=g.length)<=s?"0."+a.call("0",s-u)+g:g.slice(0,u-s)+"."+g.slice(u-s)):d+g}})},A5AN:function(t,e,n){"use strict";var r=n("AvRE")(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),o=n("XKFU"),i=n("KroJ"),a=n("Mukb"),u=n("hPIQ"),c=n("QaDb"),s=n("fyDq"),f=n("OP3Y"),l=n("K0xU")("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,v,d,g,y){c(n,e,v);var m,b,_,k=function(t){if(!h&&t in T)return T[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",x="values"==d,w=!1,T=t.prototype,E=T[l]||T["@@iterator"]||d&&T[d],F=E||k(d),O=d?x?k("entries"):F:void 0,P="Array"==e&&T.entries||E;if(P&&(_=f(P.call(new t)))!==Object.prototype&&_.next&&(s(_,S,!0),r||"function"==typeof _[l]||a(_,l,p)),x&&E&&"values"!==E.name&&(w=!0,F=function(){return E.call(this)}),r&&!y||!h&&!w&&T[l]||a(T,l,F),u[e]=F,u[S]=p,d)if(m={values:x?F:k("values"),keys:g?F:k("keys"),entries:O},y)for(b in m)b in T||i(T,b,m[b]);else o(o.P+o.F*(h||w),e,m);return m}},AphP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT");r(r.P+r.F*n("eeVq")(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=o(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},AvRE:function(t,e,n){var r=n("RYi7"),o=n("vhPU");t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},BC7C:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{fround:n("kcoS")})},"BJ/l":function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log1p:n("1sa7")})},BP8U:function(t,e,n){var r=n("XKFU"),o=n("PKUr");r(r.S+r.F*(Number.parseInt!=o),"Number",{parseInt:o})},Btvt:function(t,e,n){"use strict";var r=n("I8a+"),o={};o[n("K0xU")("toStringTag")]="z",o+""!="[object z]"&&n("KroJ")(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},"C/va":function(t,e,n){"use strict";var r=n("y3w9");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},CkkT:function(t,e,n){var r=n("m0Pp"),o=n("Ymqv"),i=n("S/j/"),a=n("ne8i"),u=n("zRwo");t.exports=function(t,e){var n=1==t,c=2==t,s=3==t,f=4==t,l=6==t,h=5==t||l,p=e||u;return function(e,u,v){for(var d,g,y=i(e),m=o(y),b=r(u,v,3),_=a(m.length),k=0,S=n?p(e,_):c?p(e,0):void 0;_>k;k++)if((h||k in m)&&(g=b(d=m[k],k,y),t))if(n)S[k]=g;else if(g)switch(t){case 3:return!0;case 5:return d;case 6:return k;case 2:S.push(d)}else if(f)return!1;return l?-1:s||f?f:S}}},CuTL:function(t,e,n){n("fyVe"),n("U2t9"),n("2atp"),n("+auO"),n("MtdB"),n("Jcmo"),n("nzyx"),n("BC7C"),n("x8ZO"),n("9P93"),n("eHKK"),n("BJ/l"),n("pp/T"),n("CyHz"),n("bBoP"),n("x8Yj"),n("hLT2"),t.exports=n("g3g5").Math},CyHz:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{sign:n("lvtm")})},DNiP:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduce,!0),"Array",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},DVgA:function(t,e,n){var r=n("zhAb"),o=n("4R4u");t.exports=Object.keys||function(t){return r(t,o)}},DW2E:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("freeze",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},EK0E:function(t,e,n){"use strict";var r,o=n("dyZX"),i=n("CkkT")(0),a=n("KroJ"),u=n("Z6vF"),c=n("czNK"),s=n("ZD67"),f=n("0/R4"),l=n("s5qY"),h=n("s5qY"),p=!o.ActiveXObject&&"ActiveXObject"in o,v=u.getWeak,d=Object.isExtensible,g=s.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},m={get:function(t){if(f(t)){var e=v(t);return!0===e?g(l(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(l(this,"WeakMap"),t,e)}},b=t.exports=n("4LiD")("WeakMap",y,m,s,!0,!0);h&&p&&(c((r=s.getConstructor(y,"WeakMap")).prototype,m),u.NEED=!0,i(["delete","has","get","set"],function(t){var e=b.prototype,n=e[t];a(e,t,function(e,o){if(f(e)&&!d(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)})}))},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),o=n("RjD/"),i=n("aCFj"),a=n("apmT"),u=n("aagx"),c=n("xpql"),s=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?s:function(t,e){if(t=i(t),e=a(e,!0),c)try{return s(t,e)}catch(n){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},FEjr:function(t,e,n){"use strict";n("OGtf")("strike",function(t){return function(){return t(this,"strike","","")}})},FJW5:function(t,e,n){var r=n("hswa"),o=n("y3w9"),i=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,c=0;u>c;)r.f(t,n=a[c++],e[n]);return t}},FLlr:function(t,e,n){var r=n("XKFU");r(r.P,"String",{repeat:n("l0Rn")})},FlsD:function(t,e,n){var r=n("0/R4");n("Xtr8")("isExtensible",function(t){return function(e){return!!r(e)&&(!t||t(e))}})},GNAe:function(t,e,n){var r=n("XKFU"),o=n("PKUr");r(r.G+r.F*(parseInt!=o),{parseInt:o})},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},"HAE/":function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperty:n("hswa").f})},HEwt:function(t,e,n){"use strict";var r=n("m0Pp"),o=n("XKFU"),i=n("S/j/"),a=n("H6hf"),u=n("M6Qj"),c=n("ne8i"),s=n("8a7r"),f=n("J+6e");o(o.S+o.F*!n("XMVh")(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,l,h=i(t),p="function"==typeof this?this:Array,v=arguments.length,d=v>1?arguments[1]:void 0,g=void 0!==d,y=0,m=f(h);if(g&&(d=r(d,v>2?arguments[2]:void 0,2)),null==m||p==Array&&u(m))for(n=new p(e=c(h.length));e>y;y++)s(n,y,g?d(h[y],y):h[y]);else for(l=m.call(h),n=new p;!(o=l.next()).done;y++)s(n,y,g?a(l,d,[o.value,y],!0):o.value);return n.length=y,n}})},I78e:function(t,e,n){"use strict";var r=n("XKFU"),o=n("+rLv"),i=n("LZWt"),a=n("d/Gc"),u=n("ne8i"),c=[].slice;r(r.P+r.F*n("eeVq")(function(){o&&c.call(o)}),"Array",{slice:function(t,e){var n=u(this.length),r=i(this);if(e=void 0===e?n:e,"Array"==r)return c.call(this,t,e);for(var o=a(t,n),s=a(e,n),f=u(s-o),l=new Array(f),h=0;h<f;h++)l[h]="String"==r?this.charAt(o+h):this[o+h];return l}})},"I8a+":function(t,e,n){var r=n("LZWt"),o=n("K0xU")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=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=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},INYr:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(6),i="findIndex",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")(i)},"IU+Z":function(t,e,n){"use strict";n("sMXx");var r=n("KroJ"),o=n("Mukb"),i=n("eeVq"),a=n("vhPU"),u=n("K0xU"),c=n("Ugos"),s=u("species"),f=!i(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),l=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var h=u(t),p=!i(function(){var e={};return e[h]=function(){return 7},7!=""[t](e)}),v=p?!i(function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[h](""),!e}):void 0;if(!p||!v||"replace"===t&&!f||"split"===t&&!l){var d=/./[h],g=n(a,h,""[t],function(t,e,n,r,o){return e.exec===c?p&&!o?{done:!0,value:d.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),y=g[1];r(String.prototype,t,g[0]),o(RegExp.prototype,h,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},IXt9:function(t,e,n){"use strict";var r=n("0/R4"),o=n("OP3Y"),i=n("K0xU")("hasInstance"),a=Function.prototype;i in a||n("hswa").f(a,i,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=o(t);)if(this.prototype===t)return!0;return!1}})},Iw71:function(t,e,n){var r=n("0/R4"),o=n("dyZX").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},"J+6e":function(t,e,n){var r=n("I8a+"),o=n("K0xU")("iterator"),i=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},JCqj:function(t,e,n){"use strict";n("OGtf")("sup",function(t){return function(){return t(this,"sup","","")}})},Jcmo:function(t,e,n){var r=n("XKFU"),o=Math.exp;r(r.S,"Math",{cosh:function(t){return(o(t=+t)+o(-t))/2}})},JduL:function(t,e,n){n("Xtr8")("getOwnPropertyNames",function(){return n("e7yV").f})},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},K0xU:function(t,e,n){var r=n("VTer")("wks"),o=n("ylqs"),i=n("dyZX").Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},KKXr:function(t,e,n){"use strict";var r=n("quPj"),o=n("y3w9"),i=n("69bn"),a=n("A5AN"),u=n("ne8i"),c=n("Xxuz"),s=n("Ugos"),f=n("eeVq"),l=Math.min,h=[].push,p=!f(function(){RegExp(4294967295,"y")});n("IU+Z")("split",2,function(t,e,n,f){var v;return v="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var o=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(o,t,e);for(var i,a,u,c=[],f=0,l=void 0===e?4294967295:e>>>0,p=new RegExp(t.source,(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":"")+"g");(i=s.call(p,o))&&!((a=p.lastIndex)>f&&(c.push(o.slice(f,i.index)),i.length>1&&i.index<o.length&&h.apply(c,i.slice(1)),u=i[0].length,f=a,c.length>=l));)p.lastIndex===i.index&&p.lastIndex++;return f===o.length?!u&&p.test("")||c.push(""):c.push(o.slice(f)),c.length>l?c.slice(0,l):c}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var o=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):v.call(String(o),n,r)},function(t,e){var r=f(v,t,this,e,v!==n);if(r.done)return r.value;var s=o(t),h=String(this),d=i(s,RegExp),g=s.unicode,y=new d(p?s:"^(?:"+s.source+")",(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(p?"y":"g")),m=void 0===e?4294967295:e>>>0;if(0===m)return[];if(0===h.length)return null===c(y,h)?[h]:[];for(var b=0,_=0,k=[];_<h.length;){y.lastIndex=p?_:0;var S,x=c(y,p?h:h.slice(_));if(null===x||(S=l(u(y.lastIndex+(p?0:_)),h.length))===b)_=a(h,_,g);else{if(k.push(h.slice(b,_)),k.length===m)return k;for(var w=1;w<=x.length-1;w++)if(k.push(x[w]),k.length===m)return k;_=b=S}}return k.push(h.slice(b)),k}]})},KroJ:function(t,e,n){var r=n("dyZX"),o=n("Mukb"),i=n("aagx"),a=n("ylqs")("src"),u=n("+lvF"),c=(""+u).split("toString");n("g3g5").inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:u?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||u.call(this)})},Kuth:function(t,e,n){var r=n("y3w9"),o=n("FJW5"),i=n("4R4u"),a=n("YTvA")("IE_PROTO"),u=function(){},c=function(){var t,e=n("Iw71")("iframe"),r=i.length;for(e.style.display="none",n("+rLv").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=r(t),n=new u,u.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},L9s1:function(t,e,n){"use strict";var r=n("XKFU"),o=n("0sh+");r(r.P+r.F*n("UUeW")("includes"),"String",{includes:function(t){return!!~o(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},LK8F:function(t,e,n){var r=n("XKFU");r(r.S,"Array",{isArray:n("EWmC")})},LQAc:function(t,e){t.exports=!1},LVwc:function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},LZWt:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},Ljet:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},Lmuc:function(t,e,n){n("xfY5"),n("A2zW"),n("VKir"),n("Ljet"),n("/KAi"),n("fN96"),n("7h0T"),n("sbF8"),n("h/M4"),n("knhD"),n("XfKG"),n("BP8U"),t.exports=n("g3g5").Number},LyE8:function(t,e,n){"use strict";var r=n("eeVq");t.exports=function(t,e){return!!t&&r(function(){e?t.call(null,function(){},1):t.call(null)})}},M6Qj:function(t,e,n){var r=n("hPIQ"),o=n("K0xU")("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},MfQN:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},MtdB:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},Mukb:function(t,e,n){var r=n("hswa"),o=n("RjD/");t.exports=n("nh4g")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},N8g3:function(t,e,n){e.f=n("K0xU")},Nr18:function(t,e,n){"use strict";var r=n("S/j/"),o=n("d/Gc"),i=n("ne8i");t.exports=function(t){for(var e=r(this),n=i(e.length),a=arguments.length,u=o(a>1?arguments[1]:void 0,n),c=a>2?arguments[2]:void 0,s=void 0===c?n:o(c,n);s>u;)e[u++]=t;return e}},Nz9U:function(t,e,n){"use strict";var r=n("XKFU"),o=n("aCFj"),i=[].join;r(r.P+r.F*(n("Ymqv")!=Object||!n("LyE8")(i)),"Array",{join:function(t){return i.call(o(this),void 0===t?",":t)}})},OEbY:function(t,e,n){n("nh4g")&&"g"!=/./g.flags&&n("hswa").f(RegExp.prototype,"flags",{configurable:!0,get:n("C/va")})},OG14:function(t,e,n){"use strict";var r=n("y3w9"),o=n("g6HL"),i=n("Xxuz");n("IU+Z")("search",1,function(t,e,n,a){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var u=r(t),c=String(this),s=u.lastIndex;o(s,0)||(u.lastIndex=0);var f=i(u,c);return o(u.lastIndex,s)||(u.lastIndex=s),null===f?-1:f.index}]})},OGtf:function(t,e,n){var r=n("XKFU"),o=n("eeVq"),i=n("vhPU"),a=/"/g,u=function(t,e,n,r){var o=String(i(t)),u="<"+e;return""!==n&&(u+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),u+">"+o+"</"+e+">"};t.exports=function(t,e){var n={};n[t]=e(u),r(r.P+r.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},OP3Y:function(t,e,n){var r=n("aagx"),o=n("S/j/"),i=n("YTvA")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},OnI7:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("LQAc"),a=n("N8g3"),u=n("hswa").f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},Oyvg:function(t,e,n){var r=n("dyZX"),o=n("Xbzi"),i=n("hswa").f,a=n("kJMx").f,u=n("quPj"),c=n("C/va"),s=r.RegExp,f=s,l=s.prototype,h=/a/g,p=/a/g,v=new s(h)!==h;if(n("nh4g")&&(!v||n("eeVq")(function(){return p[n("K0xU")("match")]=!1,s(h)!=h||s(p)==p||"/a/i"!=s(h,"i")}))){s=function(t,e){var n=this instanceof s,r=u(t),i=void 0===e;return!n&&r&&t.constructor===s&&i?t:o(v?new f(r&&!i?t.source:t,e):f((r=t instanceof s)?t.source:t,r&&i?c.call(t):e),n?this:l,s)};for(var d=function(t){t in s||i(s,t,{configurable:!0,get:function(){return f[t]},set:function(e){f[t]=e}})},g=a(f),y=0;g.length>y;)d(g[y++]);l.constructor=s,s.prototype=l,n("KroJ")(r,"RegExp",s)}n("elZq")("RegExp")},PKUr:function(t,e,n){var r=n("dyZX").parseInt,o=n("qncB").trim,i=n("/e88"),a=/^[-+]?0[xX]/;t.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(t,e){var n=o(String(t),3);return r(n,e>>>0||(a.test(n)?16:10))}:r},QaDb:function(t,e,n){"use strict";var r=n("Kuth"),o=n("RjD/"),i=n("fyDq"),a={};n("Mukb")(a,n("K0xU")("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},RQRG:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("2OiF"),a=n("hswa");n("nh4g")&&r(r.P+n("xbSm"),"Object",{__defineGetter__:function(t,e){a.f(o(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},RW0V:function(t,e,n){var r=n("S/j/"),o=n("DVgA");n("Xtr8")("keys",function(){return function(t){return o(r(t))}})},RYi7:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},"RjD/":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"S/j/":function(t,e,n){var r=n("vhPU");t.exports=function(t){return Object(r(t))}},SMB2:function(t,e,n){"use strict";n("OGtf")("bold",function(t){return function(){return t(this,"b","","")}})},SPin:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eyMr");r(r.P+r.F*!n("LyE8")([].reduceRight,!0),"Array",{reduceRight:function(t){return o(this,t,arguments.length,arguments[1],!0)}})},SRfc:function(t,e,n){"use strict";var r=n("y3w9"),o=n("ne8i"),i=n("A5AN"),a=n("Xxuz");n("IU+Z")("match",1,function(t,e,n,u){return[function(n){var r=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=u(n,t,this);if(e.done)return e.value;var c=r(t),s=String(this);if(!c.global)return a(c,s);var f=c.unicode;c.lastIndex=0;for(var l,h=[],p=0;null!==(l=a(c,s));){var v=String(l[0]);h[p]=v,""===v&&(c.lastIndex=i(s,o(c.lastIndex),f)),p++}return 0===p?null:h}]})},SlkY:function(t,e,n){var r=n("m0Pp"),o=n("H6hf"),i=n("M6Qj"),a=n("y3w9"),u=n("ne8i"),c=n("J+6e"),s={},f={};(e=t.exports=function(t,e,n,l,h){var p,v,d,g,y=h?function(){return t}:c(t),m=r(n,l,e?2:1),b=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(i(y)){for(p=u(t.length);p>b;b++)if((g=e?m(a(v=t[b])[0],v[1]):m(t[b]))===s||g===f)return g}else for(d=y.call(t);!(v=d.next()).done;)if((g=o(d,m,v.value,e))===s||g===f)return g}).BREAK=s,e.RETURN=f},T39b:function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(o(this,"Set"),t=0===t?0:t,t)}},r)},Tze0:function(t,e,n){"use strict";n("qncB")("trim",function(t){return function(){return t(this,3)}})},U2t9:function(t,e,n){var r=n("XKFU"),o=Math.asinh;r(r.S+r.F*!(o&&1/o(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},UExd:function(t,e,n){var r=n("DVgA"),o=n("aCFj"),i=n("UqcF").f;t.exports=function(t){return function(e){for(var n,a=o(e),u=r(a),c=u.length,s=0,f=[];c>s;)i.call(a,n=u[s++])&&f.push(t?[n,a[n]]:a[n]);return f}}},UUeW:function(t,e,n){var r=n("K0xU")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(o){}}return!0}},Ugos:function(t,e,n){"use strict";var r,o,i=n("C/va"),a=RegExp.prototype.exec,u=String.prototype.replace,c=a,s=(o=/b*/g,a.call(r=/a/,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=void 0!==/()??/.exec("")[1];(s||f)&&(c=function(t){var e,n,r,o,c=this;return f&&(n=new RegExp("^"+c.source+"$(?!\\s)",i.call(c))),s&&(e=c.lastIndex),r=a.call(c,t),s&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),f&&r&&r.length>1&&u.call(r[0],n,function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)}),r}),t.exports=c},UqcF:function(t,e){e.f={}.propertyIsEnumerable},"V+eJ":function(t,e,n){"use strict";var r=n("XKFU"),o=n("w2a5")(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n("LyE8")(i)),"Array",{indexOf:function(t){return a?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},"V/DX":function(t,e,n){var r=n("0/R4");n("Xtr8")("isSealed",function(t){return function(e){return!r(e)||!!t&&t(e)}})},"V5/Y":function(t,e,n){n("VpUO"),n("eI33"),n("Tze0"),n("XfO3"),n("oDIu"),n("rvZc"),n("L9s1"),n("FLlr"),n("9VmF"),n("hEkN"),n("nIY7"),n("+oPb"),n("SMB2"),n("0mN4"),n("bDcW"),n("nsiH"),n("0LDn"),n("tUrg"),n("84bF"),n("FEjr"),n("Zz4T"),n("JCqj"),n("SRfc"),n("pIFo"),n("OG14"),n("KKXr"),t.exports=n("g3g5").String},VKir:function(t,e,n){"use strict";var r=n("XKFU"),o=n("eeVq"),i=n("vvmO"),a=1..toPrecision;r(r.P+r.F*(o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},VTer:function(t,e,n){var r=n("g3g5"),o=n("dyZX"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("LQAc")?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},VXxg:function(t,e,n){n("Btvt"),n("XfO3"),n("rGqo"),n("T39b"),t.exports=n("g3g5").Set},Vd3H:function(t,e,n){"use strict";var r=n("XKFU"),o=n("2OiF"),i=n("S/j/"),a=n("eeVq"),u=[].sort,c=[1,2,3];r(r.P+r.F*(a(function(){c.sort(void 0)})||!a(function(){c.sort(null)})||!n("LyE8")(u)),"Array",{sort:function(t){return void 0===t?u.call(i(this)):u.call(i(this),o(t))}})},VpUO:function(t,e,n){var r=n("XKFU"),o=n("d/Gc"),i=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],o(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?i(e):i(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},WLL4:function(t,e,n){var r=n("XKFU");r(r.S+r.F*!n("nh4g"),"Object",{defineProperties:n("FJW5")})},XKFU:function(t,e,n){var r=n("dyZX"),o=n("g3g5"),i=n("Mukb"),a=n("KroJ"),u=n("m0Pp"),c=function(t,e,n){var s,f,l,h,p=t&c.F,v=t&c.G,d=t&c.P,g=t&c.B,y=v?r:t&c.S?r[e]||(r[e]={}):(r[e]||{}).prototype,m=v?o:o[e]||(o[e]={}),b=m.prototype||(m.prototype={});for(s in v&&(n=e),n)l=((f=!p&&y&&void 0!==y[s])?y:n)[s],h=g&&f?u(l,r):d&&"function"==typeof l?u(Function.call,l):l,y&&a(y,s,l,t&c.U),m[s]!=l&&i(m,s,h),d&&b[s]!=l&&(b[s]=l)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},XMVh:function(t,e,n){var r=n("K0xU")("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],u=i[r]();u.next=function(){return{done:n=!0}},i[r]=function(){return u},t(i)}catch(a){}return n}},Xbzi:function(t,e,n){var r=n("0/R4"),o=n("i5dc").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},XfKG:function(t,e,n){var r=n("XKFU"),o=n("11IZ");r(r.S+r.F*(Number.parseFloat!=o),"Number",{parseFloat:o})},XfO3:function(t,e,n){"use strict";var r=n("AvRE")(!0);n("Afnz")(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},Xtr8:function(t,e,n){var r=n("XKFU"),o=n("g3g5"),i=n("eeVq");t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},Xxuz:function(t,e,n){"use strict";var r=n("I8a+"),o=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},YJVH:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(4);r(r.P+r.F*!n("LyE8")([].every,!0),"Array",{every:function(t){return o(this,t,arguments[1])}})},YTvA:function(t,e,n){var r=n("VTer")("keys"),o=n("ylqs");t.exports=function(t){return r[t]||(r[t]=o(t))}},Ymqv:function(t,e,n){var r=n("LZWt");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},Z6vF:function(t,e,n){var r=n("ylqs")("meta"),o=n("0/R4"),i=n("aagx"),a=n("hswa").f,u=0,c=Object.isExtensible||function(){return!0},s=!n("eeVq")(function(){return c(Object.preventExtensions({}))}),f=function(t){a(t,r,{value:{i:"O"+ ++u,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";f(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;f(t)}return t[r].w},onFreeze:function(t){return s&&l.NEED&&c(t)&&!i(t,r)&&f(t),t}}},ZD67:function(t,e,n){"use strict";var r=n("3Lyj"),o=n("Z6vF").getWeak,i=n("y3w9"),a=n("0/R4"),u=n("9gX7"),c=n("SlkY"),s=n("CkkT"),f=n("aagx"),l=n("s5qY"),h=s(5),p=s(6),v=0,d=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return h(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=p(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var s=t(function(t,r){u(t,s,e,"_i"),t._t=e,t._i=v++,t._l=void 0,null!=r&&c(r,n,t[i],t)});return r(s.prototype,{delete:function(t){if(!a(t))return!1;var n=o(t);return!0===n?d(l(this,e)).delete(t):n&&f(n,this._i)&&delete n[this._i]},has:function(t){if(!a(t))return!1;var n=o(t);return!0===n?d(l(this,e)).has(t):n&&f(n,this._i)}}),s},def:function(t,e,n){var r=o(i(e),!0);return!0===r?d(t).set(e,n):r[t._i]=n,t},ufstore:d}},"ZNX/":function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT"),a=n("OP3Y"),u=n("EemH").f;n("nh4g")&&r(r.P+n("xbSm"),"Object",{__lookupSetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=u(n,r))return e.set}while(n=a(n))}})},Zshi:function(t,e,n){var r=n("0/R4");n("Xtr8")("isFrozen",function(t){return function(e){return!r(e)||!!t&&t(e)}})},Zz4T:function(t,e,n){"use strict";n("OGtf")("sub",function(t){return function(){return t(this,"sub","","")}})},a0L2:function(t,e,n){n("jm62"),n("hhXQ"),n("/8Fb"),n("RQRG"),n("/uf1"),n("uaHG"),n("ZNX/"),t.exports=n("g3g5").Object},a1Th:function(t,e,n){"use strict";n("OEbY");var r=n("y3w9"),o=n("C/va"),i=n("nh4g"),a=/./.toString,u=function(t){n("KroJ")(RegExp.prototype,"toString",t,!0)};n("eeVq")(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?u(function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)}):"toString"!=a.name&&u(function(){return a.call(this)})},aCFj:function(t,e,n){var r=n("Ymqv"),o=n("vhPU");t.exports=function(t){return r(o(t))}},aagx:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},apmT:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},bBoP:function(t,e,n){var r=n("XKFU"),o=n("LVwc"),i=Math.exp;r(r.S+r.F*n("eeVq")(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},bDcW:function(t,e,n){"use strict";n("OGtf")("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},bHtr:function(t,e,n){var r=n("XKFU");r(r.P,"Array",{fill:n("Nr18")}),n("nGyu")("fill")},bWfx:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(1);r(r.P+r.F*!n("LyE8")([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},czNK:function(t,e,n){"use strict";var r=n("DVgA"),o=n("JiEa"),i=n("UqcF"),a=n("S/j/"),u=n("Ymqv"),c=Object.assign;t.exports=!c||n("eeVq")(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r})?function(t,e){for(var n=a(t),c=arguments.length,s=1,f=o.f,l=i.f;c>s;)for(var h,p=u(arguments[s++]),v=f?r(p).concat(f(p)):r(p),d=v.length,g=0;d>g;)l.call(p,h=v[g++])&&(n[h]=p[h]);return n}:c},"d/Gc":function(t,e,n){var r=n("RYi7"),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},"dE+T":function(t,e,n){var r=n("XKFU");r(r.P,"Array",{copyWithin:n("upKx")}),n("nGyu")("copyWithin")},dQfE:function(t,e,n){n("XfO3"),n("LK8F"),n("HEwt"),n("6AQ9"),n("Nz9U"),n("I78e"),n("Vd3H"),n("8+KV"),n("bWfx"),n("0l/t"),n("dZ+Y"),n("YJVH"),n("DNiP"),n("SPin"),n("V+eJ"),n("mGWK"),n("dE+T"),n("bHtr"),n("dRSK"),n("INYr"),n("0E+W"),n("yt8O"),t.exports=n("g3g5").Array},dRSK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(5),i=!0;"find"in[]&&Array(1).find(function(){i=!1}),r(r.P+r.F*i,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n("nGyu")("find")},"dZ+Y":function(t,e,n){"use strict";var r=n("XKFU"),o=n("CkkT")(3);r(r.P+r.F*!n("LyE8")([].some,!0),"Array",{some:function(t){return o(this,t,arguments[1])}})},dyZX:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},e7yV:function(t,e,n){var r=n("aCFj"),o=n("kJMx").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(e){return a.slice()}}(t):o(r(t))}},eHKK:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},eI33:function(t,e,n){var r=n("XKFU"),o=n("aCFj"),i=n("ne8i");r(r.S,"String",{raw:function(t){for(var e=o(t.raw),n=i(e.length),r=arguments.length,a=[],u=0;n>u;)a.push(String(e[u++])),u<r&&a.push(String(arguments[u]));return a.join("")}})},eM6i:function(t,e,n){var r=n("XKFU");r(r.S,"Date",{now:function(){return(new Date).getTime()}})},eeVq:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},elZq:function(t,e,n){"use strict";var r=n("dyZX"),o=n("hswa"),i=n("nh4g"),a=n("K0xU")("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},eyMr:function(t,e,n){var r=n("2OiF"),o=n("S/j/"),i=n("Ymqv"),a=n("ne8i");t.exports=function(t,e,n,u,c){r(e);var s=o(t),f=i(s),l=a(s.length),h=c?l-1:0,p=c?-1:1;if(n<2)for(;;){if(h in f){u=f[h],h+=p;break}if(h+=p,c?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;c?h>=0:l>h;h+=p)h in f&&(u=e(u,f[h],h,s));return u}},"f3/d":function(t,e,n){var r=n("hswa").f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n("nh4g")&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},fN96:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{isInteger:n("nBIS")})},fyDq:function(t,e,n){var r=n("hswa").f,o=n("aagx"),i=n("K0xU")("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},fyVe:function(t,e,n){var r=n("XKFU"),o=n("1sa7"),i=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},g3g5:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},g4EE:function(t,e,n){"use strict";var r=n("y3w9"),o=n("apmT");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return o(r(this),"number"!=t)}},g6HL:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},"h/M4":function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},h7Nl:function(t,e,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n("KroJ")(r,"toString",function(){var t=i.call(this);return t==t?o.call(this):"Invalid Date"})},hEkN:function(t,e,n){"use strict";n("OGtf")("anchor",function(t){return function(e){return t(this,"a","name",e)}})},hHhE:function(t,e,n){var r=n("XKFU");r(r.S,"Object",{create:n("Kuth")})},hLT2:function(t,e,n){var r=n("XKFU");r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},"hN/g":function(t,e,n){"use strict";n.r(e),n("dQfE"),n("nx1v"),n("4A4+"),n("qKs0"),n("CuTL"),n("Lmuc"),n("99sg"),n("ifmr"),n("oka+"),n("rfyP"),n("VXxg"),n("V5/Y"),n("vqGA"),n("hYbK"),n("a0L2"),n("0TWp")},hPIQ:function(t,e){t.exports={}},hYbK:function(t,e,n){n("Btvt"),n("yt8O"),n("EK0E"),t.exports=n("g3g5").WeakMap},hhXQ:function(t,e,n){var r=n("XKFU"),o=n("UExd")(!1);r(r.S,"Object",{values:function(t){return o(t)}})},hswa:function(t,e,n){var r=n("y3w9"),o=n("xpql"),i=n("apmT"),a=Object.defineProperty;e.f=n("nh4g")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(u){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},i5dc:function(t,e,n){var r=n("0/R4"),o=n("y3w9"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n("m0Pp")(Function.call,n("EemH").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},ifmr:function(t,e,n){n("tyy+"),t.exports=n("g3g5").parseFloat},ioFf:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("nh4g"),a=n("XKFU"),u=n("KroJ"),c=n("Z6vF").KEY,s=n("eeVq"),f=n("VTer"),l=n("fyDq"),h=n("ylqs"),p=n("K0xU"),v=n("N8g3"),d=n("OnI7"),g=n("1MBn"),y=n("EWmC"),m=n("y3w9"),b=n("0/R4"),_=n("aCFj"),k=n("apmT"),S=n("RjD/"),x=n("Kuth"),w=n("e7yV"),T=n("EemH"),E=n("hswa"),F=n("DVgA"),O=T.f,P=E.f,j=w.f,M=r.Symbol,D=r.JSON,I=D&&D.stringify,A=p("_hidden"),U=p("toPrimitive"),X={}.propertyIsEnumerable,Z=f("symbol-registry"),K=f("symbols"),C=f("op-symbols"),L=Object.prototype,R="function"==typeof M,z=r.QObject,N=!z||!z.prototype||!z.prototype.findChild,q=i&&s(function(){return 7!=x(P({},"a",{get:function(){return P(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=O(L,e);r&&delete L[e],P(t,e,n),r&&t!==L&&P(L,e,r)}:P,V=function(t){var e=K[t]=x(M.prototype);return e._k=t,e},G=R&&"symbol"==typeof M.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof M},H=function(t,e,n){return t===L&&H(C,e,n),m(t),e=k(e,!0),m(n),o(K,e)?(n.enumerable?(o(t,A)&&t[A][e]&&(t[A][e]=!1),n=x(n,{enumerable:S(0,!1)})):(o(t,A)||P(t,A,S(1,{})),t[A][e]=!0),q(t,e,n)):P(t,e,n)},W=function(t,e){m(t);for(var n,r=g(e=_(e)),o=0,i=r.length;i>o;)H(t,n=r[o++],e[n]);return t},Y=function(t){var e=X.call(this,t=k(t,!0));return!(this===L&&o(K,t)&&!o(C,t))&&(!(e||!o(this,t)||!o(K,t)||o(this,A)&&this[A][t])||e)},B=function(t,e){if(t=_(t),e=k(e,!0),t!==L||!o(K,e)||o(C,e)){var n=O(t,e);return!n||!o(K,e)||o(t,A)&&t[A][e]||(n.enumerable=!0),n}},J=function(t){for(var e,n=j(_(t)),r=[],i=0;n.length>i;)o(K,e=n[i++])||e==A||e==c||r.push(e);return r},Q=function(t){for(var e,n=t===L,r=j(n?C:_(t)),i=[],a=0;r.length>a;)!o(K,e=r[a++])||n&&!o(L,e)||i.push(K[e]);return i};R||(u((M=function(){if(this instanceof M)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),e=function(n){this===L&&e.call(C,n),o(this,A)&&o(this[A],t)&&(this[A][t]=!1),q(this,t,S(1,n))};return i&&N&&q(L,t,{configurable:!0,set:e}),V(t)}).prototype,"toString",function(){return this._k}),T.f=B,E.f=H,n("kJMx").f=w.f=J,n("UqcF").f=Y,n("JiEa").f=Q,i&&!n("LQAc")&&u(L,"propertyIsEnumerable",Y,!0),v.f=function(t){return V(p(t))}),a(a.G+a.W+a.F*!R,{Symbol:M});for(var $="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;$.length>tt;)p($[tt++]);for(var et=F(p.store),nt=0;et.length>nt;)d(et[nt++]);a(a.S+a.F*!R,"Symbol",{for:function(t){return o(Z,t+="")?Z[t]:Z[t]=M(t)},keyFor:function(t){if(!G(t))throw TypeError(t+" is not a symbol!");for(var e in Z)if(Z[e]===t)return e},useSetter:function(){N=!0},useSimple:function(){N=!1}}),a(a.S+a.F*!R,"Object",{create:function(t,e){return void 0===e?x(t):W(x(t),e)},defineProperty:H,defineProperties:W,getOwnPropertyDescriptor:B,getOwnPropertyNames:J,getOwnPropertySymbols:Q}),D&&a(a.S+a.F*(!R||s(function(){var t=M();return"[null]"!=I([t])||"{}"!=I({a:t})||"{}"!=I(Object(t))})),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!G(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!G(e))return e}),r[1]=e,I.apply(D,r)}}),M.prototype[U]||n("Mukb")(M.prototype,U,M.prototype.valueOf),l(M,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},jm62:function(t,e,n){var r=n("XKFU"),o=n("mQtv"),i=n("aCFj"),a=n("EemH"),u=n("8a7r");r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,r=i(t),c=a.f,s=o(r),f={},l=0;s.length>l;)void 0!==(n=c(r,e=s[l++]))&&u(f,e,n);return f}})},jqX0:function(t,e,n){var r=n("XKFU"),o=n("jtBr");r(r.P+r.F*(Date.prototype.toISOString!==o),"Date",{toISOString:o})},jtBr:function(t,e,n){"use strict";var r=n("eeVq"),o=Date.prototype.getTime,i=Date.prototype.toISOString,a=function(t){return t>9?t:"0"+t};t.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!r(function(){i.call(new Date(NaN))})?function(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}:i},kJMx:function(t,e,n){var r=n("zhAb"),o=n("4R4u").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},kcoS:function(t,e,n){var r=n("lvtm"),o=Math.pow,i=o(2,-52),a=o(2,-23),u=o(2,127)*(2-a),c=o(2,-126);t.exports=Math.fround||function(t){var e,n,o=Math.abs(t),s=r(t);return o<c?s*(o/c/a+1/i-1/i)*c*a:(n=(e=(1+a/i)*o)-(e-o))>u||n!=n?s*(1/0):s*n}},knhD:function(t,e,n){var r=n("XKFU");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},l0Rn:function(t,e,n){"use strict";var r=n("RYi7"),o=n("vhPU");t.exports=function(t){var e=String(o(this)),n="",i=r(t);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},lvtm:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},m0Pp:function(t,e,n){var r=n("2OiF");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},mGWK:function(t,e,n){"use strict";var r=n("XKFU"),o=n("aCFj"),i=n("RYi7"),a=n("ne8i"),u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0;r(r.P+r.F*(c||!n("LyE8")(u)),"Array",{lastIndexOf:function(t){if(c)return u.apply(this,arguments)||0;var e=o(this),n=a(e.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,i(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}})},mQtv:function(t,e,n){var r=n("kJMx"),o=n("JiEa"),i=n("y3w9"),a=n("dyZX").Reflect;t.exports=a&&a.ownKeys||function(t){var e=r.f(i(t)),n=o.f;return n?e.concat(n(t)):e}},mYba:function(t,e,n){var r=n("aCFj"),o=n("EemH").f;n("Xtr8")("getOwnPropertyDescriptor",function(){return function(t,e){return o(r(t),e)}})},mura:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("preventExtensions",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},nBIS:function(t,e,n){var r=n("0/R4"),o=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&o(t)===t}},nGyu:function(t,e,n){var r=n("K0xU")("unscopables"),o=Array.prototype;null==o[r]&&n("Mukb")(o,r,{}),t.exports=function(t){o[r][t]=!0}},nIY7:function(t,e,n){"use strict";n("OGtf")("big",function(t){return function(){return t(this,"big","","")}})},ne8i:function(t,e,n){var r=n("RYi7"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},nh4g:function(t,e,n){t.exports=!n("eeVq")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},nsiH:function(t,e,n){"use strict";n("OGtf")("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},nx1v:function(t,e,n){n("eM6i"),n("AphP"),n("jqX0"),n("h7Nl"),n("yM4b"),t.exports=Date},nzyx:function(t,e,n){var r=n("XKFU"),o=n("LVwc");r(r.S+r.F*(o!=Math.expm1),"Math",{expm1:o})},oDIu:function(t,e,n){"use strict";var r=n("XKFU"),o=n("AvRE")(!1);r(r.P,"String",{codePointAt:function(t){return o(this,t)}})},"oka+":function(t,e,n){n("GNAe"),t.exports=n("g3g5").parseInt},pIFo:function(t,e,n){"use strict";var r=n("y3w9"),o=n("S/j/"),i=n("ne8i"),a=n("RYi7"),u=n("A5AN"),c=n("Xxuz"),s=Math.max,f=Math.min,l=Math.floor,h=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;n("IU+Z")("replace",2,function(t,e,n,v){return[function(r,o){var i=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(t,e){var o=v(n,t,this,e);if(o.done)return o.value;var l=r(t),h=String(this),p="function"==typeof e;p||(e=String(e));var g=l.global;if(g){var y=l.unicode;l.lastIndex=0}for(var m=[];;){var b=c(l,h);if(null===b)break;if(m.push(b),!g)break;""===String(b[0])&&(l.lastIndex=u(h,i(l.lastIndex),y))}for(var _,k="",S=0,x=0;x<m.length;x++){b=m[x];for(var w=String(b[0]),T=s(f(a(b.index),h.length),0),E=[],F=1;F<b.length;F++)E.push(void 0===(_=b[F])?_:String(_));var O=b.groups;if(p){var P=[w].concat(E,T,h);void 0!==O&&P.push(O);var j=String(e.apply(void 0,P))}else j=d(w,h,T,E,O,e);T>=S&&(k+=h.slice(S,T)+j,S=T+w.length)}return k+h.slice(S)}];function d(t,e,r,i,a,u){var c=r+t.length,s=i.length,f=p;return void 0!==a&&(a=o(a),f=h),n.call(u,f,function(n,o){var u;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":u=a[o.slice(1,-1)];break;default:var f=+o;if(0===f)return n;if(f>s){var h=l(f/10);return 0===h?n:h<=s?void 0===i[h-1]?o.charAt(1):i[h-1]+o.charAt(1):n}u=i[f-1]}return void 0===u?"":u})}})},"pp/T":function(t,e,n){var r=n("XKFU");r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},qKs0:function(t,e,n){n("Btvt"),n("XfO3"),n("rGqo"),n("9AAn"),t.exports=n("g3g5").Map},qncB:function(t,e,n){var r=n("XKFU"),o=n("vhPU"),i=n("eeVq"),a=n("/e88"),u="["+a+"]",c=RegExp("^"+u+u+"*"),s=RegExp(u+u+"*$"),f=function(t,e,n){var o={},u=i(function(){return!!a[t]()||"\u200b\x85"!="\u200b\x85"[t]()}),c=o[t]=u?e(l):a[t];n&&(o[n]=c),r(r.P+r.F*u,"String",o)},l=f.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(s,"")),t};t.exports=f},quPj:function(t,e,n){var r=n("0/R4"),o=n("LZWt"),i=n("K0xU")("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},rGqo:function(t,e,n){for(var r=n("yt8O"),o=n("DVgA"),i=n("KroJ"),a=n("dyZX"),u=n("Mukb"),c=n("hPIQ"),s=n("K0xU"),f=s("iterator"),l=s("toStringTag"),h=c.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(p),d=0;d<v.length;d++){var g,y=v[d],m=p[y],b=a[y],_=b&&b.prototype;if(_&&(_[f]||u(_,f,h),_[l]||u(_,l,y),c[y]=h,m))for(g in r)_[g]||i(_,g,r[g],!0)}},rfyP:function(t,e,n){n("Oyvg"),n("sMXx"),n("a1Th"),n("OEbY"),n("SRfc"),n("pIFo"),n("OG14"),n("KKXr"),t.exports=n("g3g5").RegExp},rvZc:function(t,e,n){"use strict";var r=n("XKFU"),o=n("ne8i"),i=n("0sh+"),a="".endsWith;r(r.P+r.F*n("UUeW")("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),u=void 0===n?r:Math.min(o(n),r),c=String(t);return a?a.call(e,c,u):e.slice(u-c.length,u)===c}})},s5qY:function(t,e,n){var r=n("0/R4");t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},sMXx:function(t,e,n){"use strict";var r=n("Ugos");n("XKFU")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},sbF8:function(t,e,n){var r=n("XKFU"),o=n("nBIS"),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return o(t)&&i(t)<=9007199254740991}})},tUrg:function(t,e,n){"use strict";n("OGtf")("link",function(t){return function(e){return t(this,"a","href",e)}})},"tyy+":function(t,e,n){var r=n("XKFU"),o=n("11IZ");r(r.G+r.F*(parseFloat!=o),{parseFloat:o})},uaHG:function(t,e,n){"use strict";var r=n("XKFU"),o=n("S/j/"),i=n("apmT"),a=n("OP3Y"),u=n("EemH").f;n("nh4g")&&r(r.P+n("xbSm"),"Object",{__lookupGetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=u(n,r))return e.get}while(n=a(n))}})},upKx:function(t,e,n){"use strict";var r=n("S/j/"),o=n("d/Gc"),i=n("ne8i");t.exports=[].copyWithin||function(t,e){var n=r(this),a=i(n.length),u=o(t,a),c=o(e,a),s=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===s?a:o(s,a))-c,a-u),l=1;for(c<u&&u<c+f&&(l=-1,c+=f-1,u+=f-1);f-- >0;)c in n?n[u]=n[c]:delete n[u],u+=l,c+=l;return n}},vhPU:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},vqGA:function(t,e,n){n("ioFf"),n("Btvt"),t.exports=n("g3g5").Symbol},vvmO:function(t,e,n){var r=n("LZWt");t.exports=function(t,e){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(e);return+t}},w2a5:function(t,e,n){var r=n("aCFj"),o=n("ne8i"),i=n("d/Gc");t.exports=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},wmvG:function(t,e,n){"use strict";var r=n("hswa").f,o=n("Kuth"),i=n("3Lyj"),a=n("m0Pp"),u=n("9gX7"),c=n("SlkY"),s=n("Afnz"),f=n("1TsA"),l=n("elZq"),h=n("nh4g"),p=n("Z6vF").fastKey,v=n("s5qY"),d=h?"_s":"size",g=function(t,e){var n,r=p(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var f=t(function(t,r){u(t,f,e,"_i"),t._t=e,t._i=o(null),t._f=void 0,t._l=void 0,t[d]=0,null!=r&&c(r,n,t[s],t)});return i(f.prototype,{clear:function(){for(var t=v(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[d]=0},delete:function(t){var n=v(this,e),r=g(n,t);if(r){var o=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=o),o&&(o.p=i),n._f==r&&(n._f=o),n._l==r&&(n._l=i),n[d]--}return!!r},forEach:function(t){v(this,e);for(var n,r=a(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(v(this,e),t)}}),h&&r(f.prototype,"size",{get:function(){return v(this,e)[d]}}),f},def:function(t,e,n){var r,o,i=g(t,e);return i?i.v=n:(t._l=i={i:o=p(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[d]++,"F"!==o&&(t._i[o]=i)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,function(t,n){this._t=v(t,e),this._k=n,this._l=void 0},function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?f(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,f(1))},n?"entries":"values",!n,!0),l(e)}}},x8Yj:function(t,e,n){var r=n("XKFU"),o=n("LVwc"),i=Math.exp;r(r.S,"Math",{tanh:function(t){var e=o(t=+t),n=o(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},x8ZO:function(t,e,n){var r=n("XKFU"),o=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,i=0,a=0,u=arguments.length,c=0;a<u;)c<(n=o(arguments[a++]))?(i=i*(r=c/n)*r+1,c=n):i+=n>0?(r=n/c)*r:n;return c===1/0?1/0:c*Math.sqrt(i)}})},xbSm:function(t,e,n){"use strict";t.exports=n("LQAc")||!n("eeVq")(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete n("dyZX")[t]})},xfY5:function(t,e,n){"use strict";var r=n("dyZX"),o=n("aagx"),i=n("LZWt"),a=n("Xbzi"),u=n("apmT"),c=n("eeVq"),s=n("kJMx").f,f=n("EemH").f,l=n("hswa").f,h=n("qncB").trim,p=r.Number,v=p,d=p.prototype,g="Number"==i(n("Kuth")(d)),y="trim"in String.prototype,m=function(t){var e=u(t,!1);if("string"==typeof e&&e.length>2){var n,r,o,i=(e=y?e.trim():h(e,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var a,c=e.slice(2),s=0,f=c.length;s<f;s++)if((a=c.charCodeAt(s))<48||a>o)return NaN;return parseInt(c,r)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(g?c(function(){d.valueOf.call(n)}):"Number"!=i(n))?a(new v(m(e)),n,p):m(e)};for(var b,_=n("nh4g")?s(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;_.length>k;k++)o(v,b=_[k])&&!o(p,b)&&l(p,b,f(v,b));p.prototype=d,d.constructor=p,n("KroJ")(r,"Number",p)}},xpql:function(t,e,n){t.exports=!n("nh4g")&&!n("eeVq")(function(){return 7!=Object.defineProperty(n("Iw71")("div"),"a",{get:function(){return 7}}).a})},y3w9:function(t,e,n){var r=n("0/R4");t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},yM4b:function(t,e,n){var r=n("K0xU")("toPrimitive"),o=Date.prototype;r in o||n("Mukb")(o,r,n("g4EE"))},ylqs:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},yt8O:function(t,e,n){"use strict";var r=n("nGyu"),o=n("1TsA"),i=n("hPIQ"),a=n("aCFj");t.exports=n("Afnz")(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},z2o2:function(t,e,n){var r=n("0/R4"),o=n("Z6vF").onFreeze;n("Xtr8")("seal",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},zRwo:function(t,e,n){var r=n("6FMO");t.exports=function(t,e){return new(r(t))(e)}},zhAb:function(t,e,n){var r=n("aagx"),o=n("aCFj"),i=n("w2a5")(!1),a=n("YTvA")("IE_PROTO");t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)n!=a&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}}},[[1,1]]]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/prometheus_logo.074db273ef932a67d91b.svg b/ceph/src/pybind/mgr/dashboard/frontend/dist/prometheus_logo.074db273ef932a67d91b.svg
deleted file mode 100644 (file)
index 5c51f66..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.1"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="115.333px"
-   height="114px"
-   viewBox="0 0 115.333 114"
-   enable-background="new 0 0 115.333 114"
-   xml:space="preserve"
-   sodipodi:docname="prometheus_logo_orange.svg"
-   inkscape:version="0.92.1 r15371"><metadata
-     id="metadata4495"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs4493" /><sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1484"
-     inkscape:window-height="886"
-     id="namedview4491"
-     showgrid="false"
-     inkscape:zoom="5.2784901"
-     inkscape:cx="60.603667"
-     inkscape:cy="60.329656"
-     inkscape:window-x="54"
-     inkscape:window-y="7"
-     inkscape:window-maximized="0"
-     inkscape:current-layer="Layer_1" /><g
-     id="Layer_2" /><path
-     style="fill:#e6522c;fill-opacity:1"
-     inkscape:connector-curvature="0"
-     id="path4486"
-     d="M 56.667,0.667 C 25.372,0.667 0,26.036 0,57.332 c 0,31.295 25.372,56.666 56.667,56.666 31.295,0 56.666,-25.371 56.666,-56.666 0,-31.296 -25.372,-56.665 -56.666,-56.665 z m 0,106.055 c -8.904,0 -16.123,-5.948 -16.123,-13.283 H 72.79 c 0,7.334 -7.219,13.283 -16.123,13.283 z M 83.297,89.04 H 30.034 V 79.382 H 83.298 V 89.04 Z M 83.106,74.411 H 30.186 C 30.01,74.208 29.83,74.008 29.66,73.802 24.208,67.182 22.924,63.726 21.677,60.204 c -0.021,-0.116 6.611,1.355 11.314,2.413 0,0 2.42,0.56 5.958,1.205 -3.397,-3.982 -5.414,-9.044 -5.414,-14.218 0,-11.359 8.712,-21.285 5.569,-29.308 3.059,0.249 6.331,6.456 6.552,16.161 3.252,-4.494 4.613,-12.701 4.613,-17.733 0,-5.21 3.433,-11.262 6.867,-11.469 -3.061,5.045 0.793,9.37 4.219,20.099 1.285,4.03 1.121,10.812 2.113,15.113 C 63.797,33.534 65.333,20.5 71,16 c -2.5,5.667 0.37,12.758 2.333,16.167 3.167,5.5 5.087,9.667 5.087,17.548 0,5.284 -1.951,10.259 -5.242,14.148 3.742,-0.702 6.326,-1.335 6.326,-1.335 l 12.152,-2.371 c 10e-4,-10e-4 -1.765,7.261 -8.55,14.254 z" /></svg>
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/runtime.c2fa00b158659de6ccaa.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/runtime.c2fa00b158659de6ccaa.js
deleted file mode 100644 (file)
index f0ff75f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e){function r(r){for(var n,i,a=r[0],f=r[1],c=r[2],p=0,s=[];p<a.length;p++)o[i=a[p]]&&s.push(o[i][0]),o[i]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(l&&l(r);s.length;)s.shift()();return u.push.apply(u,c||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++)0!==o[t[a]]&&(n=!1);n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise(function(r,n){t=o[e]=[r,n]});r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+""+({0:"common"}[e]||e)+"."+{0:"8a53d98b04768bd15706",2:"23eee776b9ebe5035afa",6:"2177204066439fcd8170",7:"a311be12e7802be9438f",8:"0ff37488868257bf7364",9:"f4b21c687db5d9cef117"}[e]+".js"}(e),u=function(r){a.onerror=a.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src,i=new Error("Loading chunk "+e+" failed.\n("+n+": "+u+")");i.type=n,i.request=u,t[1](i)}o[e]=void 0}};var f=setTimeout(function(){u({type:"timeout",target:a})},12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,(function(r){return e[r]}).bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="",i.oe=function(e){throw console.error(e),e};var a=window.webpackJsonp=window.webpackJsonp||[],f=a.push.bind(a);a.push=r,a=a.slice();for(var c=0;c<a.length;c++)r(a[c]);var l=f;t()}([]);
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/scripts.fc88ef4a23399c760d0b.js b/ceph/src/pybind/mgr/dashboard/frontend/dist/scripts.fc88ef4a23399c760d0b.js
deleted file mode 100644 (file)
index 1aa39bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}(function(){return function t(e,n,i){function a(o,s){if(!n[o]){if(!e[o]){var l="function"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[o]={exports:{}};e[o][0].call(d.exports,function(t){return a(e[o][1][t]||t)},d,d.exports,t,e,n,i)}return n[o].exports}for(var r="function"==typeof require&&require,o=0;o<i.length;o++)a(i[o]);return a}({1:[function(t,e,n){var i=t(5);function a(t){if(t){var e=[0,0,0],n=1,a=t.match(/^#([a-fA-F0-9]{3})$/i);if(a){a=a[1];for(var r=0;r<e.length;r++)e[r]=parseInt(a[r]+a[r],16)}else if(a=t.match(/^#([a-fA-F0-9]{6})$/i))for(a=a[1],r=0;r<e.length;r++)e[r]=parseInt(a.slice(2*r,2*r+2),16);else if(a=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(r=0;r<e.length;r++)e[r]=parseInt(a[r+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(r=0;r<e.length;r++)e[r]=Math.round(2.55*parseFloat(a[r+1]));n=parseFloat(a[4])}else if(a=t.match(/(\w+)/)){if("transparent"==a[1])return[0,0,0,0];if(!(e=i[a[1]]))return}for(r=0;r<e.length;r++)e[r]=d(e[r],0,255);return n=n||0==n?d(n,0,1):1,e[3]=n,e}}function r(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[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function o(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[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(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 u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function d(t,e,n){return Math.min(Math.max(e,t),n)}function h(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}e.exports={getRgba:a,getHsla:r,getRgb:function(t){var e=a(t);return e&&e.slice(0,3)},getHsl:function(t){var e=r(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=a(t);return e?e[3]:(e=r(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+h(t[0])+h(t[1])+h(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:l,hslString:function(t,e){return e<1||t[3]&&t[3]<1?u(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:u,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 c[t.slice(0,3)]}};var c={};for(var f in i)c[i[f]]=f},{5:5}],2:[function(t,e,n){var i=t(4),a=t(1),r=function(t){return t instanceof r?t:this instanceof r?(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=a.getRgba(t))?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.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 r(t);var e};r.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 a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.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 i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.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,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new r,i=this.values,a=n.values;for(var o in i)i.hasOwnProperty(o)&&("[object Array]"===(e={}.toString.call(t=i[o]))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return n}},r.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},r.prototype.setValues=function(t,e){var n,a,r=this.values,o=this.spaces,s=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)r[t]=e.slice(0,t.length),l=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)];l=e.a}else if(void 0!==e[o[t][0]]){var u=o[t];for(n=0;n<t.length;n++)r[t][n]=e[u[n]];l=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===l?r.alpha:l)),"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 d in o)d!==t&&(r[d]=i[t][d](r[t]));return!0},r.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)},r.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=r),e.exports=r},{1:1,4:4}],3:[function(t,e,n){function i(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]}function a(t){var e,n,i=t[0],a=t[1],r=t[2],o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return n=0==s?0:l/s*1e3/10,s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/255*1e3/10]}function o(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],1/255*Math.min(e,Math.min(n,a))*100,100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function s(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=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*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e=u(t),n=e[0],i=e[1],a=e[2];return i/=100,a/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function h(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,a[u]=255*(r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e);return a}function c(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}}function f(t){var e,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),i=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(i=1-i),a=s+i*((n=1-l)-s),e){default:case 6:case 0:r=n,g=a,b=s;break;case 1:r=a,g=n,b=s;break;case 2:r=s,g=n,b=a;break;case 3:r=s,g=a,b=n;break;case 4:r=a,g=s,b=n;break;case 5:r=n,g=s,b=a}return[255*r,255*g,255*b]}function m(t){var e=t[1]/100,n=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-i)+i)),255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i))]}function p(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.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,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]}function v(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=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-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]}function y(t){var e,n,i,a,r=t[0],o=t[1],s=t[2];return r<=8?a=(n=100*r/903.3)/100*7.787+16/116:(n=100*Math.pow((r+16)/116,3),a=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),n,i=i/108.883<=.008859?i=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]}function _(t){return p(y(t))}function k(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 w(t){return M[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:h,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 o(h(t))},hsl2cmyk:function(t){return s(h(t))},hsl2keyword:function(t){return l(h(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,i=t[1]/100,a=t[2]/100;return e=i*a,[t[0],100*(e=(e/=(n=(2-i)*a)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return o(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return l(c(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:m,cmyk2hsl:function(t){return i(m(t))},cmyk2hsv:function(t){return a(m(t))},cmyk2hwb:function(t){return o(m(t))},cmyk2keyword:function(t){return l(m(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:p,xyz2lab:v,xyz2lch:function(t){return x(v(t))},lab2xyz:y,lab2rgb:_,lab2lch:x,lch2lab:k,lch2xyz:function(t){return y(k(t))},lch2rgb:function(t){return _(k(t))}};var M={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]},S={};for(var D in M)S[JSON.stringify(M[D])]=D},{}],4:[function(t,e,n){var i=t(3),a=function(){return new u};for(var r in i){a[r+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(r);var o=/(\w+)2(\w+)/.exec(r),s=o[1],l=o[2];(a[s]=a[s]||{})[l]=a[r]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(r)}var u=function(){this.convs={}};u.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))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space;e=a[n][t](this.convs[n]),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{3:3}],5:[function(t,e,n){"use strict";e.exports={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]}},{}],6:[function(t,e,n){var i;i=function(){"use strict";var n,i;function a(){return n.apply(null,arguments)}function r(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function d(t,e){var n,i=[];for(n=0;n<t.length;++n)i.push(e(t[n],n));return i}function h(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t,e){for(var n in e)h(e,n)&&(t[n]=e[n]);return h(e,"toString")&&(t.toString=e.toString),h(e,"valueOf")&&(t.valueOf=e.valueOf),t}function f(t,e,n,i){return Te(t,e,n,i,!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 m(t){if(null==t._isValid){var e=g(t),n=i.call(e.parsedDateParts,function(t){return null!=t}),a=!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&&(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 p(t){var e=f(NaN);return null!=t?c(g(e),t):g(e).userInvalidated=!0,e}i=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i<n;i++)if(i in e&&t.call(this,e[i],i,e))return!0;return!1};var v=a.momentProperties=[];function y(t,e){var n,i,a;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=g(e)),s(e._locale)||(t._locale=e._locale),v.length>0)for(n=0;n<v.length;n++)s(a=e[i=v[n]])||(t[i]=a);return t}var b=!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===b&&(b=!0,a.updateOffset(this),b=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function k(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=k(e)),n}function M(t,e,n){var i,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&w(t[i])!==w(e[i]))&&o++;return o+r}function S(t){!1===a.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function D(t,e){var n=!0;return c(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,t),n){for(var i,r=[],o=0;o<arguments.length;o++){if(i="","object"==typeof arguments[o]){for(var s in i+="\n["+o+"] ",arguments[0])i+=s+": "+arguments[0][s]+", ";i=i.slice(0,-2)}else i=arguments[o];r.push(i)}S(t+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)},e)}var C,P={};function T(t,e){null!=a.deprecationHandler&&a.deprecationHandler(t,e),P[t]||(S(e),P[t]=!0)}function O(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function I(t,e){var n,i=c({},t);for(n in e)h(e,n)&&(o(t[n])&&o(e[n])?(i[n]={},c(i[n],t[n]),c(i[n],e[n])):null!=e[n]?i[n]=e[n]:delete i[n]);for(n in t)h(t,n)&&!h(e,n)&&o(t[n])&&(i[n]=c({},i[n]));return i}function A(t){null!=t&&this.set(t)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,C=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)h(t,e)&&n.push(e);return n};var F={};function R(t,e){var n=t.toLowerCase();F[n]=F[n+"s"]=F[e]=t}function L(t){return"string"==typeof t?F[t]||F[t.toLowerCase()]:void 0}function Y(t){var e,n,i={};for(n in t)h(t,n)&&(e=L(n))&&(i[e]=t[n]);return i}var W={};function N(t,e){W[t]=e}function z(t,e,n){var i=""+Math.abs(t);return(t>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-i.length)).toString().substr(1)+i}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,H=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},E={};function j(t,e,n,i){var a=i;"string"==typeof i&&(a=function(){return this[i]()}),t&&(E[t]=a),e&&(E[e[0]]=function(){return z(a.apply(this,arguments),e[1],e[2])}),n&&(E[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=G(e,t.localeData()),B[e]=B[e]||function(t){var e,n,i,a=t.match(V);for(e=0,n=a.length;e<n;e++)a[e]=E[a[e]]?E[a[e]]:(i=a[e]).match(/\[[\s\S]/)?i.replace(/^\[|\]$/g,""):i.replace(/\\/g,"");return function(e){var i,r="";for(i=0;i<n;i++)r+=O(a[i])?a[i].call(e,t):a[i];return r}}(e),B[e](t)):t.localeData().invalidDate()}function G(t,e){var n=5;function i(t){return e.longDateFormat(t)||t}for(H.lastIndex=0;n>=0&&H.test(t);)t=t.replace(H,i),H.lastIndex=0,n-=1;return t}var q=/\d/,Z=/\d\d/,$=/\d{3}/,X=/\d{4}/,J=/[+-]?\d{6}/,K=/\d\d?/,Q=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,it=/[+-]?\d{1,6}/,at=/\d+/,rt=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,lt=/[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,ut={};function dt(t,e,n){ut[t]=O(e)?e:function(t,i){return t&&n?n:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ct(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,a){return e||n||i||a})))}function ct(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function gt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),l(e)&&(i=function(t,n){n[e]=w(t)}),n=0;n<t.length;n++)ft[t[n]]=i}function mt(t,e){gt(t,function(t,n,i,a){i._w=i._w||{},e(t,i._w,i,a)})}function pt(t,e,n){null!=e&&h(ft,t)&&ft[t](e,n._a,n,t)}var vt=0,yt=1,bt=2,xt=3,_t=4,kt=5,wt=6,Mt=7,St=8;function Dt(t){return Ct(t)?366:365}function Ct(t){return t%4==0&&t%100!=0||t%400==0}j("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),j(0,["YY",2],0,function(){return this.year()%100}),j(0,["YYYY",4],0,"year"),j(0,["YYYYY",5],0,"year"),j(0,["YYYYYY",6,!0],0,"year"),R("year","y"),N("year",1),dt("Y",rt),dt("YY",K,Z),dt("YYYY",nt,X),dt("YYYYY",it,J),dt("YYYYYY",it,J),gt(["YYYYY","YYYYYY"],vt),gt("YYYY",function(t,e){e[vt]=2===t.length?a.parseTwoDigitYear(t):w(t)}),gt("YY",function(t,e){e[vt]=a.parseTwoDigitYear(t)}),gt("Y",function(t,e){e[vt]=parseInt(t,10)}),a.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var Pt,Tt=Ot("FullYear",!0);function Ot(t,e){return function(n){return null!=n?(At(this,t,n),a.updateOffset(this,e),this):It(this,t)}}function It(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function At(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&Ct(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Ft(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Ft(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?Ct(t)?29:28:31-n%7%2}Pt=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},j("M",["MM",2],"Mo",function(){return this.month()+1}),j("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),j("MMMM",0,0,function(t){return this.localeData().months(this,t)}),R("month","M"),N("month",8),dt("M",K),dt("MM",K,Z),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[yt]=w(t)-1}),gt(["MMM","MMMM"],function(t,e,n,i){var a=n._locale.monthsParse(t,i,n._strict);null!=a?e[yt]=a:g(n).invalidMonth=t});var Rt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Lt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Yt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Wt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=w(e);else if(!l(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Ft(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Nt(t){return null!=t?(Wt(this,t),a.updateOffset(this,!0),this):It(this,"Month")}var zt=lt,Vt=lt;function Ht(){function t(t,e){return e.length-t.length}var e,n,i=[],a=[],r=[];for(e=0;e<12;e++)n=f([2e3,e]),i.push(this.monthsShort(n,"")),a.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(i.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)i[e]=ct(i[e]),a[e]=ct(a[e]);for(e=0;e<24;e++)r[e]=ct(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Bt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Et(t,e,n){var i=7+e-n;return-(7+Bt(t,0,i).getUTCDay()-e)%7+i-1}function jt(t,e,n,i,a){var r,o,s=1+7*(e-1)+(7+n-i)%7+Et(t,i,a);return s<=0?o=Dt(r=t-1)+s:s>Dt(t)?(r=t+1,o=s-Dt(t)):(r=t,o=s),{year:r,dayOfYear:o}}function Ut(t,e,n){var i,a,r=Et(t.year(),e,n),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?i=o+Gt(a=t.year()-1,e,n):o>Gt(t.year(),e,n)?(i=o-Gt(t.year(),e,n),a=t.year()+1):(a=t.year(),i=o),{week:i,year:a}}function Gt(t,e,n){var i=Et(t,e,n),a=Et(t+1,e,n);return(Dt(t)-i+a)/7}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),R("week","w"),R("isoWeek","W"),N("week",5),N("isoWeek",5),dt("w",K),dt("ww",K,Z),dt("W",K),dt("WW",K,Z),mt(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=w(t)}),j("d",0,"do","day"),j("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),j("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),j("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),R("day","d"),R("weekday","e"),R("isoWeekday","E"),N("day",11),N("weekday",11),N("isoWeekday",11),dt("d",K),dt("e",K),dt("E",K),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)}),mt(["dd","ddd","dddd"],function(t,e,n,i){var a=n._locale.weekdaysParse(t,i,n._strict);null!=a?e.d=a:g(n).invalidWeekday=t}),mt(["d","e","E"],function(t,e,n,i){e[i]=w(t)});var qt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Zt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$t="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=lt,Jt=lt,Kt=lt;function Qt(){function t(t,e){return e.length-t.length}var e,n,i,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),i=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(i),s.push(a),l.push(r),u.push(i),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ct(s[e]),l[e]=ct(l[e]),u[e]=ct(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function te(){return this.hours()%12||12}function ee(t,e){j(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ne(t,e){return e._meridiemParse}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,te),j("k",["kk",2],0,function(){return this.hours()||24}),j("hmm",0,0,function(){return""+te.apply(this)+z(this.minutes(),2)}),j("hmmss",0,0,function(){return""+te.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),j("Hmm",0,0,function(){return""+this.hours()+z(this.minutes(),2)}),j("Hmmss",0,0,function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),ee("a",!0),ee("A",!1),R("hour","h"),N("hour",13),dt("a",ne),dt("A",ne),dt("H",K),dt("h",K),dt("k",K),dt("HH",K,Z),dt("hh",K,Z),dt("kk",K,Z),dt("hmm",Q),dt("hmmss",tt),dt("Hmm",Q),dt("Hmmss",tt),gt(["H","HH"],xt),gt(["k","kk"],function(t,e,n){var i=w(t);e[xt]=24===i?0:i}),gt(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),gt(["h","hh"],function(t,e,n){e[xt]=w(t),g(n).bigHour=!0}),gt("hmm",function(t,e,n){var i=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i)),g(n).bigHour=!0}),gt("hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i,2)),e[kt]=w(t.substr(a)),g(n).bigHour=!0}),gt("Hmm",function(t,e,n){var i=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i))}),gt("Hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[xt]=w(t.substr(0,i)),e[_t]=w(t.substr(i,2)),e[kt]=w(t.substr(a))});var ie,ae=Ot("Hours",!0),re={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:Lt,monthsShort:Yt,week:{dow:0,doy:6},weekdays:qt,weekdaysMin:$t,weekdaysShort:Zt,meridiemParse:/[ap]\.?m?\.?/i},oe={},se={};function le(t){return t?t.toLowerCase().replace("_","-"):t}function ue(n){var i=null;if(!oe[n]&&void 0!==e&&e&&e.exports)try{i=ie._abbr,t("./locale/"+n),de(i)}catch(a){}return oe[n]}function de(t,e){var n;return t&&((n=s(e)?ce(t):he(t,e))?ie=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ie._abbr}function he(t,e){if(null!==e){var n,i=re;if(e.abbr=t,null!=oe[t])T("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."),i=oe[t]._config;else if(null!=e.parentLocale)if(null!=oe[e.parentLocale])i=oe[e.parentLocale]._config;else{if(null==(n=ue(e.parentLocale)))return se[e.parentLocale]||(se[e.parentLocale]=[]),se[e.parentLocale].push({name:t,config:e}),null;i=n._config}return oe[t]=new A(I(i,e)),se[t]&&se[t].forEach(function(t){he(t.name,t.config)}),de(t),oe[t]}return delete oe[t],null}function ce(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ie;if(!r(t)){if(e=ue(t))return e;t=[t]}return function(t){for(var e,n,i,a,r=0;r<t.length;){for(e=(a=le(t[r]).split("-")).length,n=(n=le(t[r+1]))?n.split("-"):null;e>0;){if(i=ue(a.slice(0,e).join("-")))return i;if(n&&n.length>=e&&M(a,n,!0)>=e-1)break;e--}r++}return ie}(t)}function fe(t){var e,n=t._a;return n&&-2===g(t).overflow&&(e=n[yt]<0||n[yt]>11?yt:n[bt]<1||n[bt]>Ft(n[vt],n[yt])?bt:n[xt]<0||n[xt]>24||24===n[xt]&&(0!==n[_t]||0!==n[kt]||0!==n[wt])?xt:n[_t]<0||n[_t]>59?_t:n[kt]<0||n[kt]>59?kt:n[wt]<0||n[wt]>999?wt:-1,g(t)._overflowDayOfYear&&(e<vt||e>bt)&&(e=bt),g(t)._overflowWeeks&&-1===e&&(e=Mt),g(t)._overflowWeekday&&-1===e&&(e=St),g(t).overflow=e),t}function ge(t,e,n){return null!=t?t:null!=e?e:n}function me(t){var e,n,i,r,o,s=[];if(!t._d){for(i=function(t){var e=new Date(a.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[bt]&&null==t._a[yt]&&function(t){var e,n,i,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,n=ge(e.GG,t._a[vt],Ut(Oe(),1,4).year),i=ge(e.W,1),((a=ge(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=Ut(Oe(),r,o);n=ge(e.gg,t._a[vt],u.year),i=ge(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}i<1||i>Gt(n,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=jt(n,i,a,r,o),t._a[vt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ge(t._a[vt],i[vt]),(t._dayOfYear>Dt(o)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),n=Bt(o,0,t._dayOfYear),t._a[yt]=n.getUTCMonth(),t._a[bt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[xt]&&0===t._a[_t]&&0===t._a[kt]&&0===t._a[wt]&&(t._nextDay=!0,t._a[xt]=0),t._d=(t._useUTC?Bt:function(t,e,n,i,a,r,o){var s=new Date(t,e,n,i,a,r,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(g(t).weekdayMismatch=!0)}}var pe=/^\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)?)?$/,ve=/^\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)?)?$/,ye=/Z|[+-]\d\d(?::?\d\d)?/,be=[["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}/]],xe=[["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/]],_e=/^\/?Date\((\-?\d+)/i;function ke(t){var e,n,i,a,r,o,s=t._i,l=pe.exec(s)||ve.exec(s);if(l){for(g(t).iso=!0,e=0,n=be.length;e<n;e++)if(be[e][1].exec(l[1])){a=be[e][0],i=!1!==be[e][2];break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,n=xe.length;e<n;e++)if(xe[e][1].exec(l[3])){r=(l[2]||" ")+xe[e][0];break}if(null==r)return void(t._isValid=!1)}if(!i&&null!=r)return void(t._isValid=!1);if(l[4]){if(!ye.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=a+(r||"")+(o||""),Ce(t)}else t._isValid=!1}var we=/^(?:(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 Me(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}var Se={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function De(t){var e,n,i,a,r,o,s=we.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(s){var l=(e=s[3],n=s[2],i=s[5],a=s[6],r=s[7],o=[Me(s[4]),Yt.indexOf(e),parseInt(n,10),parseInt(i,10),parseInt(a,10)],r&&o.push(parseInt(r,10)),o);if(!function(t,e,n){return!t||Zt.indexOf(t)===new Date(e[0],e[1],e[2]).getDay()||(g(n).weekdayMismatch=!0,n._isValid=!1,!1)}(s[1],l,t))return;t._a=l,t._tzm=function(t,e,n){if(t)return Se[t];if(s[9])return 0;var i=parseInt(s[10],10),a=i%100;return(i-a)/100*60+a}(s[8]),t._d=Bt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function Ce(t){if(t._f!==a.ISO_8601)if(t._f!==a.RFC_2822){t._a=[],g(t).empty=!0;var e,n,i,r,o,s=""+t._i,l=s.length,u=0;for(i=G(t._f,t._locale).match(V)||[],e=0;e<i.length;e++)(n=(s.match(ht(r=i[e],t))||[])[0])&&((o=s.substr(0,s.indexOf(n))).length>0&&g(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),E[r]?(n?g(t).empty=!1:g(t).unusedTokens.push(r),pt(r,n,t)):t._strict&&!n&&g(t).unusedTokens.push(r);g(t).charsLeftOver=l-u,s.length>0&&g(t).unusedInput.push(s),t._a[xt]<=12&&!0===g(t).bigHour&&t._a[xt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[xt]=(d=t._locale,h=t._a[xt],null==(c=t._meridiem)?h:null!=d.meridiemHour?d.meridiemHour(h,c):null!=d.isPM?((f=d.isPM(c))&&h<12&&(h+=12),f||12!==h||(h=0),h):h),me(t),fe(t)}else De(t);else ke(t);var d,h,c,f}function Pe(t){var e=t._i,n=t._f;return t._locale=t._locale||ce(t._l),null===e||void 0===n&&""===e?p({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),_(e)?new x(fe(e)):(u(e)?t._d=e:r(n)?function(t){var e,n,i,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)r=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],Ce(e),m(e)&&(r+=g(e).charsLeftOver,r+=10*g(e).unusedTokens.length,g(e).score=r,(null==i||r<i)&&(i=r,n=e));c(t,n||e)}(t):n?Ce(t):function(t){var e=t._i;s(e)?t._d=new Date(a.now()):u(e)?t._d=new Date(e.valueOf()):"string"==typeof e?function(t){var e=_e.exec(t._i);null===e?(ke(t),!1===t._isValid&&(delete t._isValid,De(t),!1===t._isValid&&(delete t._isValid,a.createFromInputFallback(t)))):t._d=new Date(+e[1])}(t):r(e)?(t._a=d(e.slice(0),function(t){return parseInt(t,10)}),me(t)):o(e)?function(t){if(!t._d){var e=Y(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)}),me(t)}}(t):l(e)?t._d=new Date(e):a.createFromInputFallback(t)}(t),m(t)||(t._d=null),t))}function Te(t,e,n,i,a){var s,l={};return!0!==n&&!1!==n||(i=n,n=void 0),(o(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)||r(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=a,l._l=n,l._i=t,l._f=e,l._strict=i,(s=new x(fe(Pe(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Oe(t,e,n,i){return Te(t,e,n,i,!1)}a.createFromInputFallback=D("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":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Ie=D("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:p()}),Ae=D("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:p()});function Fe(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Oe();for(n=e[0],i=1;i<e.length;++i)e[i].isValid()&&!e[i][t](n)||(n=e[i]);return n}var Re=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Le(t){var e=Y(t),n=e.year||0,i=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===Pt.call(Re,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,i=0;i<Re.length;++i)if(t[Re[i]]){if(n)return!1;parseFloat(t[Re[i]])!==w(t[Re[i]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*i+12*n,this._data={},this._locale=ce(),this._bubble()}function Ye(t){return t instanceof Le}function We(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ne(t,e){j(t,0,0,function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+z(~~(t/60),2)+e+z(~~t%60,2)})}Ne("Z",":"),Ne("ZZ",""),dt("Z",st),dt("ZZ",st),gt(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Ve(st,t)});var ze=/([\+\-]|\d\d)/gi;function Ve(t,e){var n=(e||"").match(t);if(null===n)return null;var i=((n[n.length-1]||[])+"").match(ze)||["-",0,0],a=60*i[1]+w(i[2]);return 0===a?0:"+"===i[0]?a:-a}function He(t,e){var n,i;return e._isUTC?(n=e.clone(),i=(_(t)||u(t)?t.valueOf():Oe(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),a.updateOffset(n,!1),n):Oe(t).local()}function Be(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ee(){return!!this.isValid()&&this._isUTC&&0===this._offset}a.updateOffset=function(){};var je=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ge(t,e){var n,i,a,r,o,s,u=t,d=null;return Ye(t)?u={ms:t._milliseconds,d:t._days,M:t._months}:l(t)?(u={},e?u[e]=t:u.milliseconds=t):(d=je.exec(t))?(n="-"===d[1]?-1:1,u={y:0,d:w(d[bt])*n,h:w(d[xt])*n,m:w(d[_t])*n,s:w(d[kt])*n,ms:w(We(1e3*d[wt]))*n}):(d=Ue.exec(t))?u={y:qe(d[2],n="-"===d[1]?-1:1),M:qe(d[3],n),w:qe(d[4],n),d:qe(d[5],n),h:qe(d[6],n),m:qe(d[7],n),s:qe(d[8],n)}:null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(r=Oe(u.from),o=Oe(u.to),a=r.isValid()&&o.isValid()?(o=He(o,r),r.isBefore(o)?s=Ze(r,o):((s=Ze(o,r)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(u={}).ms=a.milliseconds,u.M=a.months),i=new Le(u),Ye(t)&&h(t,"_locale")&&(i._locale=t._locale),i}function qe(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ze(t,e){var n={milliseconds:0,months:0};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 $e(t,e){return function(n,i){var a;return null===i||isNaN(+i)||(T(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."),a=n,n=i,i=a),Xe(this,Ge(n="string"==typeof n?+n:n,i),t),this}}function Xe(t,e,n,i){var r=e._milliseconds,o=We(e._days),s=We(e._months);t.isValid()&&(i=null==i||i,s&&Wt(t,It(t,"Month")+s*n),o&&At(t,"Date",It(t,"Date")+o*n),r&&t._d.setTime(t._d.valueOf()+r*n),i&&a.updateOffset(t,o||s))}Ge.fn=Le.prototype,Ge.invalid=function(){return Ge(NaN)};var Je=$e(1,"add"),Ke=$e(-1,"subtract");function Qe(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(n,"months");return-(n+(e-i<0?(e-i)/(i-t.clone().add(n-1,"months")):(e-i)/(t.clone().add(n+1,"months")-i)))||0}function tn(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ce(t))&&(this._locale=e),this)}a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var en=D("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 nn(){return this._locale}function an(t,e){j(0,[t,t.length],0,e)}function rn(t,e,n,i,a){var r;return null==t?Ut(this,i,a).year:(e>(r=Gt(t,i,a))&&(e=r),(function(t,e,n,i,a){var r=jt(t,e,n,i,a),o=Bt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}).call(this,t,e,n,i,a))}j(0,["gg",2],0,function(){return this.weekYear()%100}),j(0,["GG",2],0,function(){return this.isoWeekYear()%100}),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),R("weekYear","gg"),R("isoWeekYear","GG"),N("weekYear",1),N("isoWeekYear",1),dt("G",rt),dt("g",rt),dt("GG",K,Z),dt("gg",K,Z),dt("GGGG",nt,X),dt("gggg",nt,X),dt("GGGGG",it,J),dt("ggggg",it,J),mt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=w(t)}),mt(["gg","GG"],function(t,e,n,i){e[i]=a.parseTwoDigitYear(t)}),j("Q",0,"Qo","quarter"),R("quarter","Q"),N("quarter",7),dt("Q",q),gt("Q",function(t,e){e[yt]=3*(w(t)-1)}),j("D",["DD",2],"Do","date"),R("date","D"),N("date",9),dt("D",K),dt("DD",K,Z),dt("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),gt(["D","DD"],bt),gt("Do",function(t,e){e[bt]=w(t.match(K)[0])});var on=Ot("Date",!0);j("DDD",["DDDD",3],"DDDo","dayOfYear"),R("dayOfYear","DDD"),N("dayOfYear",4),dt("DDD",et),dt("DDDD",$),gt(["DDD","DDDD"],function(t,e,n){n._dayOfYear=w(t)}),j("m",["mm",2],0,"minute"),R("minute","m"),N("minute",14),dt("m",K),dt("mm",K,Z),gt(["m","mm"],_t);var sn=Ot("Minutes",!1);j("s",["ss",2],0,"second"),R("second","s"),N("second",15),dt("s",K),dt("ss",K,Z),gt(["s","ss"],kt);var ln,un=Ot("Seconds",!1);for(j("S",0,0,function(){return~~(this.millisecond()/100)}),j(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,function(){return 10*this.millisecond()}),j(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),j(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),j(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),j(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),j(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),R("millisecond","ms"),N("millisecond",16),dt("S",et,q),dt("SS",et,Z),dt("SSS",et,$),ln="SSSS";ln.length<=9;ln+="S")dt(ln,at);function dn(t,e){e[wt]=w(1e3*("0."+t))}for(ln="S";ln.length<=9;ln+="S")gt(ln,dn);var hn=Ot("Milliseconds",!1);j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var cn=x.prototype;function fn(t){return t}cn.add=Je,cn.calendar=function(t,e){var n=t||Oe(),i=He(n,this).startOf("day"),r=a.calendarFormat(this,i)||"sameElse",o=e&&(O(e[r])?e[r].call(this,n):e[r]);return this.format(o||this.localeData().calendar(r,this,Oe(n)))},cn.clone=function(){return new x(this)},cn.diff=function(t,e,n){var i,a,r;if(!this.isValid())return NaN;if(!(i=He(t,this)).isValid())return NaN;switch(a=6e4*(i.utcOffset()-this.utcOffset()),e=L(e)){case"year":r=Qe(this,i)/12;break;case"month":r=Qe(this,i);break;case"quarter":r=Qe(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-a)/864e5;break;case"week":r=(this-i-a)/6048e5;break;default:r=this-i}return n?r:k(r)},cn.endOf=function(t){return void 0===(t=L(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))},cn.format=function(t){t||(t=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},cn.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ge({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.fromNow=function(t){return this.from(Oe(),t)},cn.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Oe(t).isValid())?Ge({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},cn.toNow=function(t){return this.to(Oe(),t)},cn.get=function(t){return O(this[t=L(t)])?this[t]():this},cn.invalidAt=function(){return g(this).overflow},cn.isAfter=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(s(e)?"millisecond":e))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},cn.isBefore=function(t,e){var n=_(t)?t:Oe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=L(s(e)?"millisecond":e))?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},cn.isBetween=function(t,e,n,i){return("("===(i=i||"()")[0]?this.isAfter(t,n):!this.isBefore(t,n))&&(")"===i[1]?this.isBefore(e,n):!this.isAfter(e,n))},cn.isSame=function(t,e){var n,i=_(t)?t:Oe(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=L(e||"millisecond"))?this.valueOf()===i.valueOf():(n=i.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},cn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},cn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},cn.isValid=function(){return m(this)},cn.lang=en,cn.locale=tn,cn.localeData=nn,cn.max=Ae,cn.min=Ie,cn.parsingFlags=function(){return c({},g(this))},cn.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:W[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}(t=Y(t)),i=0;i<n.length;i++)this[n[i].unit](t[n[i].unit]);else if(O(this[t=L(t)]))return this[t](e);return this},cn.startOf=function(t){switch(t=L(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},cn.subtract=Ke,cn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},cn.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()}},cn.toDate=function(){return new Date(this.valueOf())},cn.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?U(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},cn.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+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},cn.toJSON=function(){return this.isValid()?this.toISOString():null},cn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},cn.unix=function(){return Math.floor(this.valueOf()/1e3)},cn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},cn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},cn.year=Tt,cn.isLeapYear=function(){return Ct(this.year())},cn.weekYear=function(t){return rn.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},cn.isoWeekYear=function(t){return rn.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},cn.quarter=cn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},cn.month=Nt,cn.daysInMonth=function(){return Ft(this.year(),this.month())},cn.week=cn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},cn.isoWeek=cn.isoWeeks=function(t){var e=Ut(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},cn.weeksInYear=function(){var t=this.localeData()._week;return Gt(this.year(),t.dow,t.doy)},cn.isoWeeksInYear=function(){return Gt(this.year(),1,4)},cn.date=on,cn.day=cn.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},cn.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")},cn.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},cn.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")},cn.hour=cn.hours=ae,cn.minute=cn.minutes=sn,cn.second=cn.seconds=un,cn.millisecond=cn.milliseconds=hn,cn.utcOffset=function(t,e,n){var i,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Ve(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Be(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==t&&(!e||this._changeInProgress?Xe(this,Ge(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Be(this)},cn.utc=function(t){return this.utcOffset(0,t)},cn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Be(this),"m")),this},cn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ve(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},cn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Oe(t).utcOffset():0,(this.utcOffset()-t)%60==0)},cn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},cn.isLocal=function(){return!!this.isValid()&&!this._isUTC},cn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},cn.isUtc=Ee,cn.isUTC=Ee,cn.zoneAbbr=function(){return this._isUTC?"UTC":""},cn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},cn.dates=D("dates accessor is deprecated. Use date instead.",on),cn.months=D("months accessor is deprecated. Use month instead",Nt),cn.years=D("years accessor is deprecated. Use year instead",Tt),cn.zone=D("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()}),cn.isDSTShifted=D("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Pe(t))._a){var e=t._isUTC?f(t._a):Oe(t._a);this._isDSTShifted=this.isValid()&&M(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var gn=A.prototype;function mn(t,e,n,i){var a=ce(),r=f().set(i,e);return a[n](r,t)}function pn(t,e,n){if(l(t)&&(e=t,t=void 0),t=t||"",null!=e)return mn(t,e,n,"month");var i,a=[];for(i=0;i<12;i++)a[i]=mn(t,i,n,"month");return a}function vn(t,e,n,i){"boolean"==typeof t?(l(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,l(e)&&(n=e,e=void 0),e=e||"");var a,r=ce(),o=t?r._week.dow:0;if(null!=n)return mn(e,(n+o)%7,i,"day");var s=[];for(a=0;a<7;a++)s[a]=mn(e,(a+o)%7,i,"day");return s}gn.calendar=function(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return O(i)?i.call(e,n):i},gn.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])},gn.invalidDate=function(){return this._invalidDate},gn.ordinal=function(t){return this._ordinal.replace("%d",t)},gn.preparse=fn,gn.postformat=fn,gn.relativeTime=function(t,e,n,i){var a=this._relativeTime[n];return O(a)?a(t,e,n,i):a.replace(/%d/i,t)},gn.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return O(n)?n(e):n.replace(/%s/i,e)},gn.set=function(t){var e,n;for(n in t)O(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)},gn.months=function(t,e){return t?r(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Rt).test(e)?"format":"standalone"][t.month()]:r(this._months)?this._months:this._months.standalone},gn.monthsShort=function(t,e){return t?r(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Rt.test(e)?"format":"standalone"][t.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},gn.monthsParse=function(t,e,n){var i,a,r;if(this._monthsParseExact)return(function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=f([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(a=Pt.call(this._shortMonthsParse,o))?a:null:-1!==(a=Pt.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=Pt.call(this._shortMonthsParse,o))?a:-1!==(a=Pt.call(this._longMonthsParse,o))?a:null:-1!==(a=Pt.call(this._longMonthsParse,o))?a:-1!==(a=Pt.call(this._shortMonthsParse,o))?a:null}).call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=f([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),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}},gn.monthsRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Vt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},gn.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=zt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},gn.week=function(t){return Ut(t,this._week.dow,this._week.doy).week},gn.firstDayOfYear=function(){return this._week.doy},gn.firstDayOfWeek=function(){return this._week.dow},gn.weekdays=function(t,e){return t?r(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:r(this._weekdays)?this._weekdays:this._weekdays.standalone},gn.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},gn.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},gn.weekdaysParse=function(t,e,n){var i,a,r;if(this._weekdaysParseExact)return(function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=f([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Pt.call(this._minWeekdaysParse,o))?a:-1!==(a=Pt.call(this._weekdaysParse,o))?a:-1!==(a=Pt.call(this._shortWeekdaysParse,o))?a:null}).call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(a=f([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}},gn.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},gn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},gn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Kt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},gn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},gn.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},de("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")}}),a.lang=D("moment.lang is deprecated. Use moment.locale instead.",de),a.langData=D("moment.langData is deprecated. Use moment.localeData instead.",ce);var yn=Math.abs;function bn(t,e,n,i){var a=Ge(e,n);return t._milliseconds+=i*a._milliseconds,t._days+=i*a._days,t._months+=i*a._months,t._bubble()}function xn(t){return t<0?Math.floor(t):Math.ceil(t)}function _n(t){return 4800*t/146097}function kn(t){return 146097*t/4800}function wn(t){return function(){return this.as(t)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),Cn=wn("h"),Pn=wn("d"),Tn=wn("w"),On=wn("M"),In=wn("y");function An(t){return function(){return this.isValid()?this._data[t]:NaN}}var Fn=An("milliseconds"),Rn=An("seconds"),Ln=An("minutes"),Yn=An("hours"),Wn=An("days"),Nn=An("months"),zn=An("years"),Vn=Math.round,Hn={ss:44,s:45,m:45,h:22,d:26,M:11},Bn=Math.abs;function En(t){return(t>0)-(t<0)||+t}function jn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Bn(this._milliseconds)/1e3,i=Bn(this._days),a=Bn(this._months);t=k(n/60),e=k(t/60),n%=60,t%=60;var r=k(a/12),o=a%=12,s=i,l=e,u=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=En(this._months)!==En(h)?"-":"",g=En(this._days)!==En(h)?"-":"",m=En(this._milliseconds)!==En(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(o?f+o+"M":"")+(s?g+s+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var Un=Le.prototype;return Un.isValid=function(){return this._isValid},Un.abs=function(){var t=this._data;return this._milliseconds=yn(this._milliseconds),this._days=yn(this._days),this._months=yn(this._months),t.milliseconds=yn(t.milliseconds),t.seconds=yn(t.seconds),t.minutes=yn(t.minutes),t.hours=yn(t.hours),t.months=yn(t.months),t.years=yn(t.years),this},Un.add=function(t,e){return bn(this,t,e,1)},Un.subtract=function(t,e){return bn(this,t,e,-1)},Un.as=function(t){if(!this.isValid())return NaN;var e,n,i=this._milliseconds;if("month"===(t=L(t))||"year"===t)return n=this._months+_n(e=this._days+i/864e5),"month"===t?n:n/12;switch(e=this._days+Math.round(kn(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}},Un.asMilliseconds=Mn,Un.asSeconds=Sn,Un.asMinutes=Dn,Un.asHours=Cn,Un.asDays=Pn,Un.asWeeks=Tn,Un.asMonths=On,Un.asYears=In,Un.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Un._bubble=function(){var t,e,n,i,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*xn(kn(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=k(r/1e3),l.seconds=t%60,e=k(t/60),l.minutes=e%60,n=k(e/60),l.hours=n%24,o+=k(n/24),s+=a=k(_n(o)),o-=xn(kn(a)),i=k(s/12),s%=12,l.days=o,l.months=s,l.years=i,this},Un.clone=function(){return Ge(this)},Un.get=function(t){return t=L(t),this.isValid()?this[t+"s"]():NaN},Un.milliseconds=Fn,Un.seconds=Rn,Un.minutes=Ln,Un.hours=Yn,Un.days=Wn,Un.weeks=function(){return k(this.days()/7)},Un.months=Nn,Un.years=zn,Un.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var i=Ge(t).abs(),a=Vn(i.as("s")),r=Vn(i.as("m")),o=Vn(i.as("h")),s=Vn(i.as("d")),l=Vn(i.as("M")),u=Vn(i.as("y")),d=a<=Hn.ss&&["s",a]||a<Hn.s&&["ss",a]||r<=1&&["m"]||r<Hn.m&&["mm",r]||o<=1&&["h"]||o<Hn.h&&["hh",o]||s<=1&&["d"]||s<Hn.d&&["dd",s]||l<=1&&["M"]||l<Hn.M&&["MM",l]||u<=1&&["y"]||["yy",u];return d[2]=e,d[3]=+t>0,d[4]=n,(function(t,e,n,i,a){return a.relativeTime(e||1,!!n,t,i)}).apply(null,d)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},Un.toISOString=jn,Un.toString=jn,Un.toJSON=jn,Un.locale=tn,Un.localeData=nn,Un.toIsoString=D("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",jn),Un.lang=en,j("X",0,0,"unix"),j("x",0,0,"valueOf"),dt("x",rt),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))}),a.version="2.22.2",n=Oe,a.fn=cn,a.min=function(){return Fe("isBefore",[].slice.call(arguments,0))},a.max=function(){return Fe("isAfter",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=f,a.unix=function(t){return Oe(1e3*t)},a.months=function(t,e){return pn(t,e,"months")},a.isDate=u,a.locale=de,a.invalid=p,a.duration=Ge,a.isMoment=_,a.weekdays=function(t,e,n){return vn(t,e,n,"weekdays")},a.parseZone=function(){return Oe.apply(null,arguments).parseZone()},a.localeData=ce,a.isDuration=Ye,a.monthsShort=function(t,e){return pn(t,e,"monthsShort")},a.weekdaysMin=function(t,e,n){return vn(t,e,n,"weekdaysMin")},a.defineLocale=he,a.updateLocale=function(t,e){if(null!=e){var n,i,a=re;null!=(i=ue(t))&&(a=i._config),(n=new A(e=I(a,e))).parentLocale=oe[t],oe[t]=n,de(t)}else null!=oe[t]&&(null!=oe[t].parentLocale?oe[t]=oe[t].parentLocale:null!=oe[t]&&delete oe[t]);return oe[t]},a.locales=function(){return C(oe)},a.weekdaysShort=function(t,e,n){return vn(t,e,n,"weekdaysShort")},a.normalizeUnits=L,a.relativeTimeRounding=function(t){return void 0===t?Vn:"function"==typeof t&&(Vn=t,!0)},a.relativeTimeThreshold=function(t,e){return void 0!==Hn[t]&&(void 0===e?Hn[t]:(Hn[t]=e,"s"===t&&(Hn.ss=e-1),!0))},a.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"},a.prototype=cn,a.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:"YYYY-[W]WW",MONTH:"YYYY-MM"},a},"object"==typeof n&&void 0!==e?e.exports=i():this.moment=i()},{}],7:[function(t,e,n){var i=t(30)();i.helpers=t(46),t(28)(i),i.Animation=t(22),i.animationService=t(23),i.defaults=t(26),i.Element=t(27),i.elements=t(41),i.Interaction=t(29),i.layouts=t(31),i.platform=t(49),i.plugins=t(32),i.Scale=t(33),i.scaleService=t(34),i.Ticks=t(35),i.Tooltip=t(36),t(24)(i),t(25)(i),t(56)(i),t(54)(i),t(55)(i),t(57)(i),t(58)(i),t(59)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=t(50);for(var r in a)a.hasOwnProperty(r)&&i.plugins.register(a[r]);i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.Chart=i),i.Legend=a.legend._element,i.Title=a.title._element,i.pluginService=i.plugins,i.PluginBase=i.Element.extend({}),i.canvasHelpers=i.helpers.canvas,i.layoutService=i.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,41:41,46:46,49:49,50:50,54:54,55:55,56:56,57:57,58:58,59:59,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e<n;++e)this.updateElement(i[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,o=i.getMeta(),s=i.getDataset(),l=t.custom||{},u=a.options.elements.rectangle;t._xScale=i.getScaleForId(o.xAxisID),t._yScale=i.getScaleForId(o.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:s.label,label:a.data.labels[e],borderSkipped:l.borderSkipped?l.borderSkipped:u.borderSkipped,backgroundColor:l.backgroundColor?l.backgroundColor:r.valueAtIndexOrDefault(s.backgroundColor,e,u.backgroundColor),borderColor:l.borderColor?l.borderColor:r.valueAtIndexOrDefault(s.borderColor,e,u.borderColor),borderWidth:l.borderWidth?l.borderWidth:r.valueAtIndexOrDefault(s.borderWidth,e,u.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,r=i.getValueScale(),o=r.getBasePixel(),s=r.isHorizontal(),l=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,l);a.horizontal=s,a.base=n?o:u.base,a.x=s?n?o:u.head:d.center,a.y=s?d.center:n?o:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},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())},_getStacks:function(t){var e,n,i=this.chart,a=this.getIndexScale().options.stacked,r=void 0===t?i.data.datasets.length:t+1,o=[];for(e=0;e<r;++e)(n=i.getDatasetMeta(e)).bar&&i.isDatasetVisible(e)&&(!1===a||!0===a&&-1===o.indexOf(n.stack)||void 0===a&&(void 0===n.stack||-1===o.indexOf(n.stack)))&&o.push(n.stack);return o},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),i=void 0!==e?n.indexOf(e):-1;return-1===i?n.length-1:i},getRuler:function(){var t,e,n=this.getIndexScale(),i=this.getStackCount(),a=this.index,o=n.isHorizontal(),s=o?n.left:n.top,l=s+(o?n.width:n.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(n.getPixelForValue(null,t,a));return{min:r.isNullOrUndef(n.options.barThickness)?function(t,e){var n,i,a,r,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,r=e.length;a<r;++a)o=Math.min(o,e[a]-e[a-1]);for(a=0,r=s.length;a<r;++a)i=t.getPixelForTick(a),o=a>0?Math.min(o,i-n):o,n=i;return o}(n,u):-1,pixels:u,start:s,end:l,stackCount:i,scale:n}},calculateBarValuePixels:function(t,e){var n,i,a,r,o,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),h=l.data.datasets,c=d.getRightValue(h[t].data[e]),f=d.options.stacked,g=u.stack,m=0;if(f||void 0===f&&void 0!==g)for(n=0;n<t;++n)(i=l.getDatasetMeta(n)).bar&&i.stack===g&&i.controller.getValueScaleId()===d.id&&l.isDatasetVisible(n)&&(a=d.getRightValue(h[n].data[e]),(c<0&&a<0||c>=0&&a>0)&&(m+=a));return r=d.getPixelForValue(m),{size:s=((o=d.getPixelForValue(m+c))-r)/2,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var i=n.scale.options,a="flex"===i.barThickness?function(t,e,n){var i=e.pixels,a=i[t],r=t>0?i[t-1]:null,o=t<i.length-1?i[t+1]:null,s=n.categoryPercentage;return null===r&&(r=a-(null===o?e.end-a:o-a)),null===o&&(o=a+a-r),{chunk:(o-r)/2*s/e.stackCount,ratio:n.barPercentage,start:a-(a-r)/2*s}}(e,n,i):function(t,e,n){var i,a,o=n.barThickness,s=e.stackCount,l=e.pixels[t];return r.isNullOrUndef(o)?(i=e.min*n.categoryPercentage,a=n.barPercentage):(i=o*s,a=1),{chunk:i/s,ratio:a,start:l-i/2}}(e,n,i),o=this.getStackIndex(t,this.getMeta().stack),s=a.start+a.chunk*o+a.chunk/2,l=Math.min(r.valueOrDefault(i.maxBarThickness,1/0),a.chunk*a.ratio);return{base:s-l/2,head:s+l/2,center:s,size:l}},draw:function(){var t=this.chart,e=this.getValueScale(),n=this.getMeta().data,i=this.getDataset(),a=n.length,o=0;for(r.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(i.data[o]))||n[o].draw();r.canvas.unclipArea(t.ctx)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{26:26,41:41,46:46}],16:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,n=e.getMeta();r.each(n.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),r=t.custom||{},o=i.getScaleForId(a.xAxisID),s=i.getScaleForId(a.yAxisID),l=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,h=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,d),c=n?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:n?0:l.radius,skip:r.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=r.valueOrDefault(n.hoverBackgroundColor,r.getHoverColor(n.backgroundColor)),e.borderColor=r.valueOrDefault(n.hoverBorderColor,r.getHoverColor(n.borderColor)),e.borderWidth=r.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,i,a,o=this.chart,s=o.data.datasets[this.index],l=t.custom||{},u=o.options.elements.point,d=r.options.resolve,h=s.data[e],c={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},g=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,i=g.length;n<i;++n)c[a=g[n]]=d([l[a],s[a],u[a]],f,e);return c.radius=d([l.radius,h?h.r:void 0,s.radius,u.radius],f,e),c}})}},{26:26,41:41,46:46}],17:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),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,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i],l=s&&s.custom||{},u=r.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,i,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,i,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,i,d.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.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],i=": "+e.datasets[t.datasetIndex].data[t.index];return r.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",r.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.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=this,n=e.chart,i=n.chartArea,a=n.options,o=a.elements.arc,s=i.right-i.left-o.borderWidth,l=i.bottom-i.top-o.borderWidth,u=Math.min(s,l),d={x:0,y:0},h=e.getMeta(),c=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),m=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,p={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(m),y:Math.sin(m)},y=g<=0&&m>=0||g<=2*Math.PI&&2*Math.PI<=m,b=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,x=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,_=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,k=c/100,w={x:x?-1:Math.min(p.x*(p.x<0?1:k),v.x*(v.x<0?1:k)),y:_?-1:Math.min(p.y*(p.y<0?1:k),v.y*(v.y<0?1:k))},M={x:y?1:Math.max(p.x*(p.x>0?1:k),v.x*(v.x>0?1:k)),y:b?1:Math.max(p.y*(p.y>0?1:k),v.y*(v.y>0?1:k))},S={width:.5*(M.x-w.x),height:.5*(M.y-w.y)};u=Math.min(s/S.width,l/S.height),d={x:-.5*(M.x+w.x),y:-.5*(M.y+w.y)}}n.borderWidth=e.getMaxBorderWidth(h.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(c?n.outerRadius/100*c:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,h.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),r.each(h.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,o=a.chartArea,s=a.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,h=s.rotation,c=s.rotation,f=i.getDataset(),g=n&&l.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI));r.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:h,endAngle:c,circumference:g,outerRadius:n&&l.animateScale?0:i.outerRadius,innerRadius:n&&l.animateScale?0:i.innerRadius,label:(0,r.valueAtIndexOrDefault)(f.label,e,a.data.labels[e])}});var m=t._model,p=t.custom||{},v=r.valueAtIndexOrDefault,y=this.chart.options.elements.arc;m.backgroundColor=p.backgroundColor?p.backgroundColor:v(f.backgroundColor,e,y.backgroundColor),m.borderColor=p.borderColor?p.borderColor:v(f.borderColor,e,y.borderColor),m.borderWidth=p.borderWidth?p.borderWidth:v(f.borderWidth,e,y.borderWidth),n&&l.animateRotate||(m.startAngle=0===e?s.rotation:i.getMeta().data[e-1]._model.endAngle,m.endAngle=m.startAngle+m.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return r.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,r=t.length,o=0;o<r;o++)i=(n=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0)>(i=(e=t[o]._model?t[o]._model.borderWidth:0)>i?e:i)?n:i;return i}})}},{26:26,41:41,46:46}],18:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return r.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,h=d.elements.line,c=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=c,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:r.valueOrDefault(f.lineTension,h.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||h.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||h.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||h.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||h.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||h.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||h.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||h.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:h.fill,steppedLine:a.steppedLine?a.steppedLine:r.valueOrDefault(f.steppedLine,h.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:r.valueOrDefault(f.cubicInterpolationMode,h.cubicInterpolationMode)},l.pivot()),n=0,i=u.length;n<i;++n)o.updateElement(u[n],n,t);for(g&&0!==l._model.tension&&o.updateBezierControlPoints(),n=0,i=u.length;n<i;++n)u[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=r.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=r.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||r.isArray(i.pointBorderWidth)?n=r.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},getPointRotation:function(t,e){var n=this.chart.options.elements.point.rotation,i=this.getDataset(),a=t.custom||{};return isNaN(a.rotation)?isNaN(i.pointRotation)&&!r.isArray(i.pointRotation)||(n=r.valueAtIndexOrDefault(i.pointRotation,e,n)):n=a.rotation,n},updateElement:function(t,e,n){var i,a,o=this,s=o.getMeta(),l=t.custom||{},u=o.getDataset(),d=o.index,h=u.data[e],c=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),g=o.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),i=f.getPixelForValue("object"==typeof h?h:NaN,e,d),a=n?c.getBasePixel():o.calculatePointY(h,e,d),t._xScale=f,t._yScale=c,t._datasetIndex=d,t._index=e,t._model={x:i,y:a,skip:l.skip||isNaN(i)||isNaN(a),radius:l.radius||r.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:l.pointStyle||r.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),rotation:o.getPointRotation(t,e),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:l.hitRadius||r.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,r,o=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(i=0;i<n;i++)if(a=o.data.datasets[i],"line"===(r=o.getDatasetMeta(i)).type&&r.yAxisID===l.id&&o.isDatasetVisible(i)){var h=Number(l.getRightValue(a.data[e]));h<0?d+=h||0:u+=h||0}var c=Number(l.getRightValue(t));return l.getPixelForValue(c<0?d+c:u+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,i,a=this.getMeta(),o=this.chart.chartArea,s=a.data||[];function l(t,e,n){return Math.max(Math.min(t,n),e)}if(a.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),"monotone"===a.dataset._model.cubicInterpolationMode)r.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)n=s[t]._model,i=r.splineCurve(r.previousItem(s,t)._model,n,r.nextItem(s,t)._model,a.dataset._model.tension),n.controlPointPreviousX=i.previous.x,n.controlPointPreviousY=i.previous.y,n.controlPointNextX=i.next.x,n.controlPointNextY=i.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(n=s[t]._model).controlPointPreviousX=l(n.controlPointPreviousX,o.left,o.right),n.controlPointPreviousY=l(n.controlPointPreviousY,o.top,o.bottom),n.controlPointNextX=l(n.controlPointNextX,o.left,o.right),n.controlPointNextY=l(n.controlPointNextY,o.top,o.bottom)},draw:function(){var t,n=this.chart,i=this.getMeta(),a=i.data||[],o=n.chartArea,s=a.length,l=0;for(e(this.getDataset(),n.options)&&(r.canvas.clipArea(n.ctx,{left:o.left,right:o.right,top:o.top-(t=(i.dataset._model.borderWidth||0)/2),bottom:o.bottom+t}),i.dataset.draw(),r.canvas.unclipArea(n.ctx));l<s;++l)a[l].draw(o)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.backgroundColor=i.hoverBackgroundColor||r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,r.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||r.valueAtIndexOrDefault(e.pointHoverBorderColor,n,r.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||r.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth),a.radius=i.hoverRadius||r.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius)}})}},{26:26,41:41,46:46}],19:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._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,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),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,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i].custom||{},l=r.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,i,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,i,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,i,u.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,update:function(t){var e,n,i,a=this,o=a.getDataset(),s=a.getMeta(),l=a.chart.options.startAngle||0,u=a._starts=[],d=a._angles=[];for(a._updateRadius(),s.count=a.countVisibleElements(),e=0,n=o.data.length;e<n;e++)u[e]=l,i=a._computeAngle(e),d[e]=i,l+=i;r.each(s.data,function(e,n){a.updateElement(e,n,t)})},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,i=e.options,a=i.elements.arc,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max((r-a.borderWidth/2)/2,0),e.innerRadius=Math.max(i.cutoutPercentage?e.outerRadius/100*i.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 i=this,a=i.chart,o=i.getDataset(),s=a.options,l=s.animation,u=a.scale,d=a.data.labels,h=u.xCenter,c=u.yCenter,f=s.startAngle,g=t.hidden?0:u.getDistanceFromCenterForValue(o.data[e]),m=i._starts[e],p=m+(t.hidden?0:i._angles[e]),v=l.animateScale?0:u.getDistanceFromCenterForValue(o.data[e]);r.extend(t,{_datasetIndex:i.index,_index:e,_scale:u,_model:{x:h,y:c,innerRadius:0,outerRadius:n?v:g,startAngle:n&&l.animateRotate?f:m,endAngle:n&&l.animateRotate?f:p,label:r.valueAtIndexOrDefault(d,e,d[e])}});var y=this.chart.options.elements.arc,b=t.custom||{},x=r.valueAtIndexOrDefault,_=t._model;_.backgroundColor=b.backgroundColor?b.backgroundColor:x(o.backgroundColor,e,y.backgroundColor),_.borderColor=b.borderColor?b.borderColor:x(o.borderColor,e,y.borderColor),_.borderWidth=b.borderWidth?b.borderWidth:x(o.borderWidth,e,y.borderWidth),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return r.each(e.data,function(e,i){isNaN(t.data[i])||e.hidden||n++}),n},_computeAngle:function(t){var e=this,n=this.getMeta().count,i=e.getDataset(),a=e.getMeta();return isNaN(i.data[t])||a.data[t].hidden?0:r.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/n],{chart:e.chart,dataIndex:t,dataset:i,datasetIndex:e.index},t)}})}},{26:26,41:41,46:46}],20:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:r.noop,update:function(t){var e=this,n=e.getMeta(),i=n.data,a=n.dataset.custom||{},o=e.getDataset(),s=e.chart.options.elements.line,l=e.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),r.extend(n.dataset,{_datasetIndex:e.index,_scale:l,_children:i,_loop:!0,_model:{tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,s.tension),backgroundColor:a.backgroundColor?a.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:o.borderWidth||s.borderWidth,borderColor:a.borderColor?a.borderColor:o.borderColor||s.borderColor,fill:a.fill?a.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:a.borderCapStyle?a.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:a.borderDash?a.borderDash:o.borderDash||s.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),r.each(i,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},o=i.getDataset(),s=i.chart.scale,l=i.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),r.extend(t,{_datasetIndex:i.index,_index:e,_scale:s,_model:{x:n?s.xCenter:u.x,y:n?s.yCenter:u.y,tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:r.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:r.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:r.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:r.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:r.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),rotation:a.rotation?a.rotation:r.valueAtIndexOrDefault(o.pointRotation,e,l.rotation),hitRadius:a.hitRadius?a.hitRadius:r.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();r.each(e.data,function(n,i){var a=n._model,o=r.splineCurve(r.previousItem(e.data,i,!0)._model,a,r.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.radius=n.hoverRadius?n.hoverRadius:r.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:r.valueAtIndexOrDefault(e.pointHoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:r.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)}})}},{26:26,41:41,46:46}],21:[function(t,e,n){"use strict";t(26)._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+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{26:26}],22:[function(t,e,n){"use strict";var i=t(27);n=e.exports=i.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),Object.defineProperty(n.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(n.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},{27:27}],23:[function(t,e,n){"use strict";var i=t(26),a=t(46);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:a.noop,onComplete:a.noop}}),e.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,r,o=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,r=o.length;a<r;++a)if(o[a].chart===t)return void(o[a]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=a.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=a.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,r=0;r<i.length;)n=(e=i[r]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),a.callback(e.render,[n,e],n),a.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(a.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(r,1)):++r}}},{26:26,46:46}],24:[function(t,e,n){"use strict";var i=t(22),a=t(23),r=t(26),o=t(46),s=t(29),l=t(31),u=t(49),d=t(32),h=t(34),c=t(36);e.exports=function(t){function e(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},o.extend(t.prototype,{construct:function(e,n){var i=this;n=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=o.configMerge(r.global,r[t.type],t.options||{}),t}(n);var a=u.acquireContext(e,n),s=a&&a.canvas,l=s&&s.height,d=s&&s.width;i.id=o.uid(),i.ctx=a,i.canvas=s,i.config=n,i.width=d,i.height=l,i.aspectRatio=l?d/l:null,i.options=n.options,i._bufferedRender=!1,i.chart=i,i.controller=i,t.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),a&&s?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return d.notify(t,"beforeInit"),o.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),d.notify(t,"afterInit"),t},clear:function(){return o.canvas.clear(this),this},stop:function(){return a.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(o.getMaximumWidth(i))),s=Math.max(0,Math.floor(a?r/a:o.getMaximumHeight(i)));if((e.width!==r||e.height!==s)&&(i.width=e.width=r,i.height=e.height=s,i.style.width=r+"px",i.style.height=s+"px",o.retinaScale(e,n.devicePixelRatio),!t)){var l={width:r,height:s};d.notify(e,"resize",[l]),e.options.onResize&&e.options.onResize(e,l),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;o.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),o.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,n=t.options,i=t.scales||{},a=[],r=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(a=a.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&a.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),o.each(a,function(n){var a=n.options,s=a.id,l=o.valueOrDefault(a.type,n.dtype);e(a.position)!==e(n.dposition)&&(a.position=n.dposition),r[s]=!0;var u=null;if(s in i&&i[s].type===l)(u=i[s]).options=a,u.ctx=t.ctx,u.chart=t;else{var d=h.getScaleConstructor(l);if(!d)return;u=new d({id:s,type:l,options:a,ctx:t.ctx,chart:t}),i[u.id]=u}u.mergeTicksOptions(),n.isDefault&&(t.scale=u)}),o.each(r,function(t,e){t||delete i[e]}),t.scales=i,h.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return o.each(e.data.datasets,function(a,r){var o=e.getDatasetMeta(r),s=a.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(r),o=e.getDatasetMeta(r)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(r),o.controller.linkScales();else{var l=t.controllers[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(e,r),i.push(o.controller)}},e),i},resetElements:function(){var t=this;o.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var n,i,a=this;if(e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]}),i=(n=a).options,o.each(n.scales,function(t){l.removeBox(n,t)}),i=o.configMerge(t.defaults.global,t.defaults[n.config.type],i),n.options=n.config.options=i,n.ensureScalesHaveIDs(),n.buildOrUpdateScales(),n.tooltip._options=i.tooltips,n.tooltip.initialize(),d._invalidate(a),!1!==d.notify(a,"beforeUpdate")){a.tooltip._data=a.data;var r=a.buildOrUpdateControllers();o.each(a.data.datasets,function(t,e){a.getDatasetMeta(e).controller.buildOrUpdateElements()},a),a.updateLayout(),a.options.animation&&a.options.animation.duration&&o.each(r,function(t){t.reset()}),a.updateDatasets(),a.tooltip.initialize(),a.lastActive=[],d.notify(a,"afterUpdate"),a._bufferedRender?a._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:a.render(e)}},updateLayout:function(){!1!==d.notify(this,"beforeLayout")&&(l.update(this,this.width,this.height),d.notify(this,"afterScaleUpdate"),d.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==d.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);d.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==d.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),d.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=t.duration,r=t.lazy;if(!1!==d.notify(e,"beforeRender")){var s=e.options.animation,l=function(t){d.notify(e,"afterRender"),o.callback(s&&s.onComplete,[t],e)};if(s&&(void 0!==n&&0!==n||void 0===n&&0!==s.duration)){var u=new i({numSteps:(n||s.duration)/16.66,easing:t.easing||s.easing,render:function(t,e){var n=e.currentStep,i=n/e.numSteps;t.draw((0,o.easing.effects[e.easing])(i),i,n)},onAnimationProgress:s.onProgress,onAnimationComplete:l});a.addAnimation(e,u,n,r)}else e.draw(),l(new i({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),o.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==d.notify(e,"beforeDraw",[t])&&(o.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),d.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!==d.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);d.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),i={meta:n,index:t,easingValue:e};!1!==d.notify(this,"beforeDatasetDraw",[i])&&(n.controller.draw(e),d.notify(this,"afterDatasetDraw",[i]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==d.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),d.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return s.modes.single(this,t)},getElementsAtEvent:function(t){return s.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return s.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=s.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return s.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],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var e,n,i=this,a=i.canvas;for(i.stop(),e=0,n=i.data.datasets.length;e<n;++e)i.destroyDatasetMeta(e);a&&(i.unbindEvents(),o.canvas.clear(i),u.releaseContext(i.ctx),i.canvas=null,i.ctx=null),d.notify(i,"destroy"),delete t.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new c({_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)};o.each(t.options.events,function(i){u.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},u.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,o.each(e,function(e,n){u.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,r,o=n?"setHoverStyle":"removeHoverStyle";for(a=0,r=t.length;a<r;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[o](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==d.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);n&&(i=n._start?n.handleEvent(t):i|n.handleEvent(t)),d.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!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,i=n.options||{},a=i.hover;return n.lastActive=n.lastActive||[],n.active="mouseout"===t.type?[]:n.getElementsAtEventForMode(t,a.mode,a),o.callback(i.onHover||i.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||i.onClick&&i.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,a.mode,!1),n.active.length&&a.mode&&n.updateHoverStyle(n.active,a.mode,!0),e=!o.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),t.Controller=t}},{22:22,23:23,26:26,29:29,31:31,32:32,34:34,36:36,46:46,49:49}],25:[function(t,e,n){"use strict";var i=t(46);e.exports=function(t){var e=["push","pop","shift","splice","unshift"];function n(t,n){var i=t._chartjs;if(i){var a=i.listeners,r=a.indexOf(n);-1!==r&&a.splice(r,1),a.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.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]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(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(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;t<e;++t)a[t]=a[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,a,r=this,o=r.getDataset(),s=o.data||(o.data=[]);r._data!==s&&(r._data&&n(r._data,r),a=r,(t=s)._chartjs?t._chartjs.listeners.push(a):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[a]}}),e.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 i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),r}})})),r._data=s),r.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t){i.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=i.valueAtIndexOrDefault,o=i.getHoverColor,s=t._model;t.$previousStyle={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth},s.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:r(e.hoverBackgroundColor,n,o(s.backgroundColor)),s.borderColor=a.hoverBorderColor?a.hoverBorderColor:r(e.hoverBorderColor,n,o(s.borderColor)),s.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:r(e.hoverBorderWidth,n,s.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,i=e.length;i<n?t.data.splice(i,n-i):i>n&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},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.DatasetController.extend=i.inherits}},{46:46}],26:[function(t,e,n){"use strict";var i=t(46);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{46:46}],27:[function(t,e,n){"use strict";var i=t(2),a=t(46),r=function(t){a.extend(this,t),this.initialize.apply(this,arguments)};a.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=a.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,o,s,l,u,d,h,c,f,g=Object.keys(n);for(r=0,o=g.length;r<o;++r)if(d=n[s=g[r]],e.hasOwnProperty(s)||(e[s]=d),(l=e[s])!==d&&"_"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=l),(h=typeof d)==typeof(u=t[s]))if("string"===h){if((c=i(u)).valid&&(f=i(d)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if("number"===h&&isFinite(u)&&isFinite(d)){e[s]=u+(d-u)*a;continue}e[s]=d}}(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 a.isNumber(this._model.x)&&a.isNumber(this._model.y)}}),r.extend=a.inherits,e.exports=r},{2:2,46:46}],28:[function(t,e,n){"use strict";var i=t(2),a=t(26),r=t(46),o=t(34);e.exports=function(){function t(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function e(t){return null!=t&&"none"!==t}function n(n,i,a){var o=document.defaultView,s=r._getParentNode(n),l=o.getComputedStyle(n)[i],u=o.getComputedStyle(s)[i],d=e(l),h=e(u),c=Number.POSITIVE_INFINITY;return d||h?Math.min(d?t(l,n,a):c,h?t(u,s,a):c):"none"}r.configMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){var a=e[t]||{},s=n[t];"scales"===t?e[t]=r.scaleMerge(a,s):"scale"===t?e[t]=r.merge(a,[o.getScaleDefaults(s.type),s]):r._merger(t,e,n,i)}})},r.scaleMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,s,l,u=n[t].length;for(e[t]||(e[t]=[]),a=0;a<u;++a)s=r.valueOrDefault((l=n[t][a]).type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),r.merge(e[t][a],!e[t][a].type||l.type&&l.type!==e[t][a].type?[o.getScaleDefaults(s),l]:l)}else r._merger(t,e,n,i)}})},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return r.each(t,function(t){e(t)&&n.push(t)}),n},r.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 i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},r.findNextWhere=function(t,e,n){r.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},r.findPreviousWhere=function(t,e,n){r.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,n){return Math.abs(t-e)<n},r.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},r.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},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2==0?0:.5},r.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,n,i,a,o,s,l,u,d,h=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),c=h.length;for(e=0;e<c;++e)if(!(i=h[e]).model.skip){if(n=e>0?h[e-1]:null,(a=e<c-1?h[e+1]:null)&&!a.model.skip){var f=a.model.x-i.model.x;i.deltaK=0!==f?(a.model.y-i.model.y)/f:0}i.mK=!n||n.model.skip?i.deltaK:!a||a.model.skip?n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?0:(n.deltaK+i.deltaK)/2}for(e=0;e<c-1;++e)a=h[e+1],(i=h[e]).model.skip||a.model.skip||(r.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(o=i.mK/i.deltaK,s=a.mK/i.deltaK,(u=Math.pow(o,2)+Math.pow(s,2))<=9||(l=3/Math.sqrt(u),i.mK=o*l*i.deltaK,a.mK=s*l*i.deltaK)));for(e=0;e<c;++e)(i=h[e]).model.skip||(a=e<c-1?h[e+1]:null,(n=e>0?h[e-1]:null)&&!n.model.skip&&(i.model.controlPointPreviousX=i.model.x-(d=(i.model.x-n.model.x)/3),i.model.controlPointPreviousY=i.model.y-d*i.mK),a&&!a.model.skip&&(i.model.controlPointNextX=i.model.x+(d=(a.model.x-i.model.x)/3),i.model.controlPointNextY=i.model.y+d*i.mK))},r.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]},r.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var n=Math.floor(r.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},r.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)},r.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,o=t.target||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(n=l[0].clientX,i=l[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(r.getStyle(o,"padding-left")),d=parseFloat(r.getStyle(o,"padding-top")),h=parseFloat(r.getStyle(o,"padding-right")),c=parseFloat(r.getStyle(o,"padding-bottom")),f=s.bottom-s.top-d-c;return{x:n=Math.round((n-s.left-u)/(s.right-s.left-u-h)*o.width/e.currentDevicePixelRatio),y:i=Math.round((i-s.top-d)/f*o.height/e.currentDevicePixelRatio)}},r.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},r.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},r._calculatePadding=function(t,e,n){return(e=r.getStyle(t,e)).indexOf("%")>-1?n/parseInt(e,10):parseInt(e,10)},r._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},r.getMaximumWidth=function(t){var e=r._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-r._calculatePadding(e,"padding-left",n)-r._calculatePadding(e,"padding-right",n),a=r.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},r.getMaximumHeight=function(t){var e=r._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-r._calculatePadding(e,"padding-top",n)-r._calculatePadding(e,"padding-bottom",n),a=r.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},r.fontString=function(t,e,n){return e+" "+t+"px "+n},r.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},o=i.garbageCollect=[],i.font=e),t.font=e;var s=0;r.each(n,function(e){null!=e&&!0!==r.isArray(e)?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){null==e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>n.length){for(var u=0;u<l;u++)delete a[o[u]];o.splice(0,l)}return s},r.measureText=function(t,e,n,i,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,n.push(a)),r>i&&(i=r),i},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,26:26,34:34,46:46}],29:[function(t,e,n){"use strict";var i=t(46);function a(t,e){return t.native?{x:t.x,y:t.y}:i.getRelativePosition(t,e)}function r(t,e){var n,i,a,r,o;for(i=0,r=t.data.datasets.length;i<r;++i)if(t.isDatasetVisible(i))for(a=0,o=(n=t.getDatasetMeta(i)).data.length;a<o;++a){var s=n.data[a];s._view.skip||e(s)}}function o(t,e){var n=[];return r(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function s(t,e,n,i){var a=Number.POSITIVE_INFINITY,o=[];return r(t,function(t){if(!n||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=i(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function l(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,i){var a=e?Math.abs(t.x-i.x):0,r=n?Math.abs(t.y-i.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(r,2))}}function u(t,e,n){var i=a(e,t);n.axis=n.axis||"x";var r=l(n.axis),u=n.intersect?o(t,i):s(t,i,!1,r),d=[];return u.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n).data[u[0]._index];i&&!i._view.skip&&d.push(i)}}),d):[]}e.exports={modes:{single:function(t,e){var n=a(e,t),i=[];return r(t,function(t){if(t.inRange(n.x,n.y))return i.push(t),i}),i.slice(0,1)},label:u,index:u,dataset:function(t,e,n){var i=a(e,t);n.axis=n.axis||"xy";var r=l(n.axis),u=n.intersect?o(t,i):s(t,i,!1,r);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return o(t,a(e,t))},nearest:function(t,e,n){var i=a(e,t);n.axis=n.axis||"xy";var r=l(n.axis),o=s(t,i,n.intersect,r);return o.length>1&&o.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),o.slice(0,1)},x:function(t,e,n){var i=a(e,t),o=[],s=!1;return r(t,function(t){t.inXRange(i.x)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var i=a(e,t),o=[],s=!1;return r(t,function(t){t.inYRange(i.y)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o}}}},{46:46}],30:[function(t,e,n){"use strict";t(26)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{26:26}],31:[function(t,e,n){"use strict";var i=t(46);function a(t,e){return i.where(t,function(t){return t.position===e})}function r(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={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 i,a=["fullWidth","position","weight"],r=a.length,o=0;o<r;++o)n.hasOwnProperty(i=a[o])&&(e[i]=n[i])},update:function(t,e,n){if(t){var o=i.options.toPadding((t.options.layout||{}).padding),s=o.left,l=o.right,u=o.top,d=o.bottom,h=a(t.boxes,"left"),c=a(t.boxes,"right"),f=a(t.boxes,"top"),g=a(t.boxes,"bottom"),m=a(t.boxes,"chartArea");r(h,!0),r(c,!1),r(f,!0),r(g,!1);var p=e-s-l,v=n-u-d,y=(e-p/2)/(h.length+c.length),b=(n-v/2)/(f.length+g.length),x=p,_=v,k=[];i.each(h.concat(c,f,g),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?p:x,b),_-=e.height):(e=t.update(y,_),x-=e.width),k.push({horizontal:n,minSize:e,box:t})});var w=0,M=0,S=0,D=0;i.each(f.concat(g),function(t){if(t.getPadding){var e=t.getPadding();w=Math.max(w,e.left),M=Math.max(M,e.right)}}),i.each(h.concat(c),function(t){if(t.getPadding){var e=t.getPadding();S=Math.max(S,e.top),D=Math.max(D,e.bottom)}});var C=s,P=l,T=u,O=d;i.each(h.concat(c),W),i.each(h,function(t){C+=t.width}),i.each(c,function(t){P+=t.width}),i.each(f.concat(g),W),i.each(f,function(t){T+=t.height}),i.each(g,function(t){O+=t.height}),i.each(h.concat(c),function(t){var e=i.findNextWhere(k,function(e){return e.box===t});e&&t.update(e.minSize.width,_,{left:0,right:0,top:T,bottom:O})}),C=s,P=l,T=u,O=d,i.each(h,function(t){C+=t.width}),i.each(c,function(t){P+=t.width}),i.each(f,function(t){T+=t.height}),i.each(g,function(t){O+=t.height});var I=Math.max(w-C,0);C+=I,P+=Math.max(M-P,0);var A=Math.max(S-T,0);T+=A,O+=Math.max(D-O,0);var F=n-T-O,R=e-C-P;R===x&&F===_||(i.each(h,function(t){t.height=F}),i.each(c,function(t){t.height=F}),i.each(f,function(t){t.fullWidth||(t.width=R)}),i.each(g,function(t){t.fullWidth||(t.width=R)}),_=F,x=R);var L=s+I,Y=u+A;i.each(h.concat(f),N),L+=x,Y+=_,i.each(c,N),i.each(g,N),t.chartArea={left:C,top:T,right:C+x,bottom:T+_},i.each(m,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 W(t){var e=i.findNextWhere(k,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(C,w),right:Math.max(P,M),top:0,bottom:0};t.update(t.fullWidth?p:x,v/2,n)}else t.update(e.minSize.width,_)}function N(t){t.isHorizontal()?(t.left=t.fullWidth?s:C,t.right=t.fullWidth?e-l:C+x,t.top=Y,t.bottom=Y+t.height,Y=t.bottom):(t.left=L,t.right=L+t.width,t.top=T,t.bottom=T+_,L=t.right)}}}},{46:46}],32:[function(t,e,n){"use strict";var i=t(26),a=t(46);i._set("global",{plugins:{}}),e.exports={_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 i,a,r,o,s,l=this.descriptors(t),u=l.length;for(i=0;i<u;++i)if("function"==typeof(s=(r=(a=l[i]).plugin)[e])&&((o=[t].concat(n||[])).push(a.options),!1===s.apply(r,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],r=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=a.clone(i.global.plugins[e])),n.push(t),r.push({plugin:t,options:o||{}}))}}),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}}},{26:26,46:46}],33:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(35);function s(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function l(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}function u(t,e,n){return r.isArray(e)?r.longestText(t,n,e):t.measureText(e).width}function d(t){var e=r.valueOrDefault,n=i.global,a=e(t.fontSize,n.defaultFontSize),o=e(t.fontStyle,n.defaultFontStyle),s=e(t.fontFamily,n.defaultFontFamily);return{size:a,style:o,family:s,font:r.fontString(a,o,s)}}function h(t){return r.options.toLineHeight(r.valueOrDefault(t.lineHeight,1.2),r.valueOrDefault(t.fontSize,i.global.defaultFontSize))}i._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:"",lineHeight:1.2,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:o.formatters.values,minor:{},major:{}}}),e.exports=a.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(){r.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,o,s,l,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=r.extend({left:0,right:0,top:0,bottom:0},n),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),l=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(l)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,i=0,a=o.length;i<a;++i)s=o[i],(u=l[i])?u.label=s:l.push(u={label:s,major:!1});return d._ticks=l,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){r.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){r.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(){r.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){r.callback(this.options.beforeDataLimits,[this])},determineDataLimits:r.noop,afterDataLimits:function(){r.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){r.callback(this.options.beforeBuildTicks,[this])},buildTicks:r.noop,afterBuildTicks:function(){r.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){r.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){r.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){r.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,i=s(t._ticks),a=d(n);e.font=a.font;var o=n.minRotation||0;if(i.length&&t.options.display&&t.isHorizontal())for(var l,u=r.longestText(e,a.font,i,t.longestTextCache),h=u,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;h>c&&o<n.maxRotation;){var f=r.toRadians(o);if(l=Math.cos(f),Math.sin(f)*u>t.maxHeight){o--;break}o++,h=l*u}t.labelRotation=o},afterCalculateTickRotation:function(){r.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){r.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=s(t._ticks),i=t.options,a=i.ticks,o=i.scaleLabel,l=i.gridLines,c=i.display,f=t.isHorizontal(),g=d(a),m=i.gridLines.tickMarkLength;if(e.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:c&&l.drawTicks?m:0,e.height=f?c&&l.drawTicks?m:0:t.maxHeight,o.display&&c){var p=h(o)+r.options.toPadding(o.padding).height;f?e.height+=p:e.width+=p}if(a.display&&c){var v=r.longestText(t.ctx,g.font,n,t.longestTextCache),y=r.numberOfLabelLines(n),b=.5*g.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var _=r.toRadians(t.labelRotation),k=Math.cos(_),w=Math.sin(_);e.height=Math.min(t.maxHeight,e.height+(w*v+g.size*y+b*(y-1)+b)+x),t.ctx.font=g.font;var M=u(t.ctx,n[0],g.font),S=u(t.ctx,n[n.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===i.position?k*M+3:k*b+3,t.paddingRight="bottom"===i.position?k*b+3:k*S+3):(t.paddingLeft=M/2+3,t.paddingRight=S/2+3)}else a.mirror?v=0:v+=x+b,e.width=Math.min(t.maxWidth,e.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.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(){r.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(r.isNullOrUndef(t))return NaN;if("number"==typeof t&&!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:r.noop,getPixelForValue:r.noop,getValueForPixel:r.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;return n&&(a+=i/2),e.left+Math.round(a)+(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+Math.round((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,i,a,o=this,s=o.isHorizontal(),l=o.options.ticks.minor,u=t.length,d=r.toRadians(o.labelRotation),h=Math.cos(d),c=o.longestLabelWidth*h,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(c+l.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+l.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n<u;n++)i=t[n],(e>1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,n=e.options;if(n.display){var a=e.ctx,o=i.global,s=n.ticks.minor,u=n.ticks.major||s,c=n.gridLines,f=n.scaleLabel,g=0!==e.labelRotation,m=e.isHorizontal(),p=s.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=r.valueOrDefault(s.fontColor,o.defaultFontColor),y=d(s),b=r.valueOrDefault(u.fontColor,o.defaultFontColor),x=d(u),_=c.drawTicks?c.tickMarkLength:0,k=r.valueOrDefault(f.fontColor,o.defaultFontColor),w=d(f),M=r.options.toPadding(f.padding),S=r.toRadians(e.labelRotation),D=[],C=e.options.gridLines.lineWidth,P="right"===n.position?e.left:e.right-C-_,T="right"===n.position?e.left+_:e.right,O="bottom"===n.position?e.top+C:e.bottom-_-C,I="bottom"===n.position?e.top+C+_:e.bottom+C;if(r.each(p,function(i,a){if(!r.isNullOrUndef(i.label)){var u,d,h,f,v,y,b,x,k,w,M,A,F,R,L=i.label;a===e.zeroLineIndex&&n.offset===c.offsetGridLines?(u=c.zeroLineWidth,d=c.zeroLineColor,h=c.zeroLineBorderDash,f=c.zeroLineBorderDashOffset):(u=r.valueAtIndexOrDefault(c.lineWidth,a),d=r.valueAtIndexOrDefault(c.color,a),h=r.valueOrDefault(c.borderDash,o.borderDash),f=r.valueOrDefault(c.borderDashOffset,o.borderDashOffset));var Y="middle",W="middle",N=s.padding;if(m){var z=_+N;"bottom"===n.position?(W=g?"middle":"top",Y=g?"right":"center",R=e.top+z):(W=g?"middle":"bottom",Y=g?"left":"center",R=e.bottom-z);var V=l(e,a,c.offsetGridLines&&p.length>1);V<e.left&&(d="rgba(0,0,0,0)"),V+=r.aliasPixel(u),F=e.getPixelForTick(a)+s.labelOffset,v=b=k=M=V,y=O,x=I,w=t.top,A=t.bottom+C}else{var H,B="left"===n.position;s.mirror?(Y=B?"left":"right",H=N):(Y=B?"right":"left",H=_+N),F=B?e.right-H:e.left+H;var E=l(e,a,c.offsetGridLines&&p.length>1);E<e.top&&(d="rgba(0,0,0,0)"),E+=r.aliasPixel(u),R=e.getPixelForTick(a)+s.labelOffset,v=P,b=T,k=t.left,M=t.right+C,y=x=w=A=E}D.push({tx1:v,ty1:y,tx2:b,ty2:x,x1:k,y1:w,x2:M,y2:A,labelX:F,labelY:R,glWidth:u,glColor:d,glBorderDash:h,glBorderDashOffset:f,rotation:-1*S,label:L,major:i.major,textBaseline:W,textAlign:Y})}}),r.each(D,function(t){if(c.display&&(a.save(),a.lineWidth=t.glWidth,a.strokeStyle=t.glColor,a.setLineDash&&(a.setLineDash(t.glBorderDash),a.lineDashOffset=t.glBorderDashOffset),a.beginPath(),c.drawTicks&&(a.moveTo(t.tx1,t.ty1),a.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(a.moveTo(t.x1,t.y1),a.lineTo(t.x2,t.y2)),a.stroke(),a.restore()),s.display){a.save(),a.translate(t.labelX,t.labelY),a.rotate(t.rotation),a.font=t.major?x.font:y.font,a.fillStyle=t.major?b:v,a.textBaseline=t.textBaseline,a.textAlign=t.textAlign;var n=t.label;if(r.isArray(n))for(var i=n.length,o=1.5*y.size,l=e.isHorizontal()?0:-o*(i-1)/2,u=0;u<i;++u)a.fillText(""+n[u],0,l),l+=o;else a.fillText(n,0,0);a.restore()}}),f.display){var A,F,R=0,L=h(f)/2;if(m)A=e.left+(e.right-e.left)/2,F="bottom"===n.position?e.bottom-L-M.bottom:e.top+L+M.top;else{var Y="left"===n.position;A=Y?e.left+L+M.top:e.right-L-M.top,F=e.top+(e.bottom-e.top)/2,R=Y?-.5*Math.PI:.5*Math.PI}a.save(),a.translate(A,F),a.rotate(R),a.textAlign="center",a.textBaseline="middle",a.fillStyle=k,a.font=w.font,a.fillText(f.labelString,0,0),a.restore()}if(c.drawBorder){a.lineWidth=r.valueAtIndexOrDefault(c.lineWidth,0),a.strokeStyle=r.valueAtIndexOrDefault(c.color,0);var W=e.left,N=e.right+C,z=e.top,V=e.bottom+C,H=r.aliasPixel(a.lineWidth);m?(z=V="top"===n.position?e.bottom:e.top,z+=H,V+=H):(W=N="left"===n.position?e.right:e.left,W+=H,N+=H),a.beginPath(),a.moveTo(W,z),a.lineTo(N,V),a.stroke()}}}})},{26:26,27:27,35:35,46:46}],34:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(31);e.exports={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(t){a.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,r.addBox(t,e)})}}},{26:26,31:31,46:46}],35:[function(t,e,n){"use strict";var i=t(46);e.exports={formatters:{values:function(t){return i.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=i.log10(Math.abs(a)),o="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var s=i.log10(Math.abs(t));o=t.toExponential(Math.floor(s)-Math.floor(r))}else{var l=-1*Math.floor(r);l=Math.max(Math.min(l,20),0),o=t.toFixed(l)}else o="0";return o},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{46:46}],36:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46);i._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:r.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var r=t[0];r.xLabel?n=r.xLabel:a>0&&r.index<a&&(n=i[r.index])}return n},afterTitle:r.noop,beforeBody:r.noop,beforeLabel:r.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+t.yLabel},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:r.noop,afterBody:r.noop,beforeFooter:r.noop,footer:r.noop,afterFooter:r.noop}}});var o={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,r=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();i+=s.x,a+=s.y,++r}}return{x:Math.round(i/r),y:Math.round(a/r)}},nearest:function(t,e){var n,i,a,o=e.x,s=e.y,l=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),h=r.distanceBetweenPoints(e,d);h<l&&(l=h,a=u)}}if(a){var c=a.tooltipPosition();o=c.x,s=c.y}return{x:o,y:s}}};function s(t,e){var n=r.color(t);return n.alpha(e*n.alpha()).rgbaString()}function l(t,e){return e&&(r.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function u(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function d(t){var e=i.global,n=r.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(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 h(t){return l([],u(t))}(e.exports=a.extend({initialize:function(){this._model=d(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),i=t.afterTitle.apply(this,arguments),a=[];return a=l(a,u(e)),a=l(a,u(n)),l(a,u(i))},getBeforeBody:function(){return h(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return r.each(t,function(t){var r={before:[],lines:[],after:[]};l(r.before,u(i.beforeLabel.call(n,t,e))),l(r.lines,i.label.call(n,t,e)),l(r.after,u(i.afterLabel.call(n,t,e))),a.push(r)}),a},getAfterBody:function(){return h(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),i=t.afterFooter.apply(this,arguments),a=[];return a=l(a,u(e)),a=l(a,u(n)),l(a,u(i))},update:function(t){var e,n,i,a,s,l,u,h=this,c=h._options,f=h._model,g=h._model=d(c),m=h._active,p=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},y={x:f.x,y:f.y},b={width:f.width,height:f.height},x={x:f.caretX,y:f.caretY};if(m.length){g.opacity=1;var _=[],k=[];x=o[c.position].call(h,m,h._eventPosition);var w=[];for(e=0,n=m.length;e<n;++e)w.push((a=void 0,s=void 0,s=(i=m[e])._yScale||i._scale,l=i._index,u=i._datasetIndex,{xLabel:(a=i._xScale)?a.getLabelForIndex(l,u):"",yLabel:s?s.getLabelForIndex(l,u):"",index:l,datasetIndex:u,x:i._model.x,y:i._model.y}));c.filter&&(w=w.filter(function(t){return c.filter(t,p)})),c.itemSort&&(w=w.sort(function(t,e){return c.itemSort(t,e,p)})),r.each(w,function(t){_.push(c.callbacks.labelColor.call(h,t,h._chart)),k.push(c.callbacks.labelTextColor.call(h,t,h._chart))}),g.title=h.getTitle(w,p),g.beforeBody=h.getBeforeBody(w,p),g.body=h.getBody(w,p),g.afterBody=h.getAfterBody(w,p),g.footer=h.getFooter(w,p),g.x=Math.round(x.x),g.y=Math.round(x.y),g.caretPadding=c.caretPadding,g.labelColors=_,g.labelTextColors=k,g.dataPoints=w,b=function(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0),l=e.title.length,u=e.footer.length,d=e.titleFontSize,h=e.bodyFontSize,c=e.footerFontSize;i+=l*d,i+=l?(l-1)*e.titleSpacing:0,i+=l?e.titleMarginBottom:0,i+=(s+=e.beforeBody.length+e.afterBody.length)*h,i+=s?(s-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*c,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=r.fontString(d,e._titleFontStyle,e._titleFontFamily),r.each(e.title,g),n.font=r.fontString(h,e._bodyFontStyle,e._bodyFontFamily),r.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?h+2:0,r.each(o,function(t){r.each(t.before,g),r.each(t.lines,g),r.each(t.after,g)}),f=0,n.font=r.fontString(c,e._footerFontStyle,e._footerFontFamily),r.each(e.footer,g),{width:a+=2*e.xPadding,height:i}}(this,g),y=function(t,e,n,i){var a=t.x,r=t.y,o=t.caretPadding,s=n.xAlign,l=n.yAlign,u=t.caretSize+o,d=t.cornerRadius+o;return"right"===s?a-=e.width:"center"===s&&((a-=e.width/2)+e.width>i.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===l?r+=u:r-="bottom"===l?e.height+u:e.height/2,"center"===l?"left"===s?a+=u:"right"===s&&(a-=u):"left"===s?a-=d:"right"===s&&(a+=d),{x:a,y:r}}(g,b,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,b),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=y.x,g.y=y.y,g.width=b.width,g.height=b.height,g.caretX=x.x,g.caretY=x.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this.getCaretPosition(t,e,this._view);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if("center"===c)s=g+p/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+m)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+m-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n,i){var a=e.title;if(a.length){n.textAlign=e._titleAlign,n.textBaseline="top";var o,l,u=e.titleFontSize,d=e.titleSpacing;for(n.fillStyle=s(e.titleFontColor,i),n.font=r.fontString(u,e._titleFontStyle,e._titleFontFamily),o=0,l=a.length;o<l;++o)n.fillText(a[o],t.x,t.y),t.y+=u+d,o+1===a.length&&(t.y+=e.titleMarginBottom-d)}},drawBody:function(t,e,n,i){var a=e.bodyFontSize,o=e.bodySpacing,l=e.body;n.textAlign=e._bodyAlign,n.textBaseline="top",n.font=r.fontString(a,e._bodyFontStyle,e._bodyFontFamily);var u=0,d=function(e){n.fillText(e,t.x+u,t.y),t.y+=a+o};n.fillStyle=s(e.bodyFontColor,i),r.each(e.beforeBody,d);var h=e.displayColors;u=h?a+2:0,r.each(l,function(o,l){var u=s(e.labelTextColors[l],i);n.fillStyle=u,r.each(o.before,d),r.each(o.lines,function(r){h&&(n.fillStyle=s(e.legendColorBackground,i),n.fillRect(t.x,t.y,a,a),n.lineWidth=1,n.strokeStyle=s(e.labelColors[l].borderColor,i),n.strokeRect(t.x,t.y,a,a),n.fillStyle=s(e.labelColors[l].backgroundColor,i),n.fillRect(t.x+1,t.y+1,a-2,a-2),n.fillStyle=u),d(r)}),r.each(o.after,d)}),u=0,r.each(e.afterBody,d),t.y-=o},drawFooter:function(t,e,n,i){var a=e.footer;a.length&&(t.y+=e.footerMarginTop,n.textAlign=e._footerAlign,n.textBaseline="top",n.fillStyle=s(e.footerFontColor,i),n.font=r.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),r.each(a,function(i){n.fillText(i,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,n,i,a){n.fillStyle=s(e.backgroundColor,a),n.strokeStyle=s(e.borderColor,a),n.lineWidth=e.borderWidth;var r=e.xAlign,o=e.yAlign,l=t.x,u=t.y,d=i.width,h=i.height,c=e.cornerRadius;n.beginPath(),n.moveTo(l+c,u),"top"===o&&this.drawCaret(t,i),n.lineTo(l+d-c,u),n.quadraticCurveTo(l+d,u,l+d,u+c),"center"===o&&"right"===r&&this.drawCaret(t,i),n.lineTo(l+d,u+h-c),n.quadraticCurveTo(l+d,u+h,l+d-c,u+h),"bottom"===o&&this.drawCaret(t,i),n.lineTo(l+c,u+h),n.quadraticCurveTo(l,u+h,l,u+h-c),"center"===o&&"left"===r&&this.drawCaret(t,i),n.lineTo(l,u+c),n.quadraticCurveTo(l,u,l+c,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},i={x:e.x,y:e.y},a=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)&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,i.mode,i),(e=!r.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}})).positioners=o},{26:26,27:27,46:46}],37:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.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 i=r.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,o=i.distance,s=n.startAngle,l=n.endAngle;l<s;)l+=2*Math.PI;for(;a>l;)a-=2*Math.PI;for(;a<s;)a+=2*Math.PI;return a>=s&&a<=l&&o>=n.innerRadius&&o<=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=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=o.elements.line,h=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||o.defaultColor,s.beginPath(),h=-1,t=0;t<u.length;++t)e=u[t],n=r.previousItem(u,t),i=e._view,0===t?i.skip||(s.moveTo(i.x,i.y),h=t):(n=-1===h?n:u[h],i.skip||(h!==t-1&&!l||-1===h?s.moveTo(i.x,i.y):r.canvas.lineTo(s,n._view,e._view),h=t));s.stroke(),s.restore()}})},{26:26,27:27,46:46}],39:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=i.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}i._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=a.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:s,inXRange:s,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._model,a=this._chart.ctx,s=e.pointStyle,l=e.rotation,u=e.radius,d=e.x,h=e.y;e.skip||(void 0===t||n.x>=t.left&&1.01*t.right>=n.x&&n.y>=t.top&&1.01*t.bottom>=n.y)&&(a.strokeStyle=e.borderColor||o,a.lineWidth=r.valueOrDefault(e.borderWidth,i.global.elements.point.borderWidth),a.fillStyle=e.backgroundColor||o,r.canvas.drawPoint(a,s,u,d,h,l))}})},{26:26,27:27,46:46}],40:[function(t,e,n){"use strict";var i=t(26),a=t(27);function r(t){return void 0!==t._view.width}function o(t){var e,n,i,a,o=t._view;if(r(t)){var s=o.width/2;e=o.x-s,n=o.x+s,i=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var l=o.height/2;e=Math.min(o.x,o.base),n=Math.max(o.x,o.base),i=o.y-l,a=o.y+l}return{left:e,top:i,right:n,bottom:a}}i._set("global",{elements:{rectangle:{backgroundColor:i.global.defaultColor,borderColor:i.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a,r,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(l.horizontal?(n=l.y-l.height/2,i=l.y+l.height/2,a=(e=l.x)>(t=l.base)?1:-1,r=1,o=l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,a=1,r=(i=l.base)>(n=l.y)?1:-1,o=l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(n-i)),h=(u=u>d?d:u)/2,c=t+("left"!==o?h*a:0),f=e+("right"!==o?-h*a:0),g=n+("top"!==o?h*r:0),m=i+("bottom"!==o?-h*r:0);c!==f&&(n=g,i=m),g!==m&&(t=c,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var p=[[t,i],[t,n],[e,n],[e,i]],v=["bottom","left","top","right"].indexOf(o,0);function y(t){return p[(v+t)%4]}-1===v&&(v=0);var b=y(0);s.moveTo(b[0],b[1]);for(var x=1;x<4;x++)b=y(x),s.lineTo(b[0],b[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=o(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=o(this);return r(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return r(this)?(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 t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,n){"use strict";var i=t(43);n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2-1e-7,i/2-1e-7);t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.arcTo(e+i,n,e+i,n+o,o),t.lineTo(e+i,n+a-o),t.arcTo(e+i,n+a,e+i-o,n+a,o),t.lineTo(e+o,n+a),t.arcTo(e,n+a,e,n+a-o,o),t.lineTo(e,n+o),t.arcTo(e,n,e+o,n,o),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a,r){var o,s,l,u,d,h;if(r=r||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(t.save(),t.translate(i,a),t.rotate(r*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,n,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":h=1/Math.SQRT2*n,t.rect(-h,-h,2*h,2*h);break;case"rectRounded":var c=n/Math.SQRT2,f=Math.SQRT2*n;this.roundedRect(t,-c,-c,f,f,.425*n);break;case"rectRot":h=1/Math.SQRT2*n,t.moveTo(-h,0),t.lineTo(0,h),t.lineTo(h,0),t.lineTo(0,-h),t.closePath();break;case"cross":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0);break;case"crossRot":l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0),l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-n,0),t.lineTo(n,0);break;case"dash":t.moveTo(0,0),t.lineTo(n,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},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,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments)}},{43:43}],43:[function(t,e,n){"use strict";var i,a={noop:function(){},uid:(i=0,function(){return i++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return a.valueOrDefault(a.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,i){var r,o,s;if(a.isArray(t))if(o=t.length,i)for(r=o-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r<o;r++)e.call(n,t[r],r);else if(a.isObject(t))for(o=(s=Object.keys(t)).length,r=0;r<o;r++)e.call(n,t[s[r]],s[r])},arrayEquals:function(t,e){var n,i,r,o;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(o=e[n],(r=t[n])instanceof Array&&o instanceof Array){if(!a.arrayEquals(r,o))return!1}else if(r!==o)return!1;return!0},clone:function(t){if(a.isArray(t))return t.map(a.clone);if(a.isObject(t)){for(var e={},n=Object.keys(t),i=n.length,r=0;r<i;++r)e[n[r]]=a.clone(t[n[r]]);return e}return t},_merger:function(t,e,n,i){var r=e[t],o=n[t];a.isObject(r)&&a.isObject(o)?a.merge(r,o,i):e[t]=a.clone(o)},_mergerIf:function(t,e,n){var i=e[t],r=n[t];a.isObject(i)&&a.isObject(r)?a.mergeIf(i,r):e.hasOwnProperty(t)||(e[t]=a.clone(r))},merge:function(t,e,n){var i,r,o,s,l,u=a.isArray(e)?e:[e],d=u.length;if(!a.isObject(t))return t;for(i=(n=n||{}).merger||a._merger,r=0;r<d;++r)if(a.isObject(e=u[r]))for(l=0,s=(o=Object.keys(e)).length;l<s;++l)i(o[l],t,e,n);return t},mergeIf:function(t,e){return a.merge(t,e,{merger:a._mergerIf})},extend:function(t){for(var e=function(e,n){t[n]=e},n=1,i=arguments.length;n<i;++n)a.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)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=a.inherits,t&&a.extend(n.prototype,t),n.__super__=e.prototype,n}};e.exports=a,a.callCallback=a.callback,a.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},a.getValueOrDefault=a.valueOrDefault,a.getValueAtIndexOrDefault=a.valueAtIndexOrDefault},{}],44:[function(t,e,n){"use strict";var i=t(43),a={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,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*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-a.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*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{43:43}],45:[function(t,e,n){"use strict";var i=t(43);e.exports={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 i.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}},resolve:function(t,e,n){var a,r,o;for(a=0,r=t.length;a<r;++a)if(void 0!==(o=t[a])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==n&&i.isArray(o)&&(o=o[n]),void 0!==o))return o}}},{43:43}],46:[function(t,e,n){"use strict";e.exports=t(43),e.exports.easing=t(44),e.exports.canvas=t(42),e.exports.options=t(45)},{42:42,43:43,44:44,45:45}],47:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],48:[function(t,e,n){"use strict";var i=t(46),a=["animationstart","webkitAnimationStart"],r={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function o(t,e){var n=i.getStyle(t,e),a=n&&n.match(/^(\d+)(\.\d+)?px$/);return a?Number(a[1]):void 0}var s=!!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 l(t,e,n){t.addEventListener(e,n,s)}function u(t,e,n){t.removeEventListener(e,n,s)}function d(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,n="from{opacity:0.99}to{opacity:1}";t="@-webkit-keyframes chartjs-render-animation{"+n+"}@keyframes chartjs-render-animation{"+n+"}.chartjs-render-monitor{-webkit-animation:chartjs-render-animation 0.001s;animation:chartjs-render-animation 0.001s;}",e=this._style||document.createElement("style"),this._style||(this._style=e,t="/* Chart.js */\n"+t,e.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(e)),e.appendChild(document.createTextNode(t))},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 n&&n.canvas===t?(function(t,e){var n=t.style,i=t.getAttribute("height"),a=t.getAttribute("width");if(t.$chartjs={initial:{height:i,width:a,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===a||""===a){var r=o(t,"width");void 0!==r&&(t.width=r)}if(null===i||""===i)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=o(t,"height");void 0!==r&&(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];i.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),i.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e.$chartjs}},addEventListener:function(t,e,n){var o=t.canvas;if("resize"!==e){var s=n.$chartjs||(n.$chartjs={});l(o,e,(s.proxies||(s.proxies={}))[t.id+"_"+e]=function(e){n(function(t,e){var n=r[t.type]||t.type,a=i.getRelativePosition(t,e);return d(n,e,a.x,a.y,t)}(e,t))})}else!function(t,e,n){var r,o,s,u,h=t.$chartjs||(t.$chartjs={}),c=h.resizer=function(t){var e=document.createElement("div"),n="chartjs-size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var o=function(){e._reset(),t()};return l(a,"scroll",o.bind(a,"expand")),l(r,"scroll",o.bind(r,"shrink")),e}((r=function(){if(h.resizer)return e(d("resize",n))},s=!1,u=[],function(){u=Array.prototype.slice.call(arguments),o=o||this,s||(s=!0,i.requestAnimFrame.call(window,function(){s=!1,r.apply(o,u)}))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),r=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};i.each(a,function(e){l(t,e,r)}),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,function(){if(h.resizer){var e=t.parentNode;e&&e!==c.parentNode&&e.insertBefore(c,e.firstChild),c._reset()}})}(o,n,t)},removeEventListener:function(t,e,n){var r,o,s,l=t.canvas;if("resize"!==e){var d=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];d&&u(l,e,d)}else s=(o=(r=l).$chartjs||{}).resizer,delete o.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(i.each(a,function(e){u(t,e,n)}),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(r),s&&s.parentNode&&s.parentNode.removeChild(s)}},i.addEvent=l,i.removeEvent=u},{46:46}],49:[function(t,e,n){"use strict";var i=t(46),a=t(47),r=t(48);e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r._enabled?r:a)},{46:46,47:47,48:48}],50:[function(t,e,n){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,n){"use strict";var i=t(26),a=t(41),r=t(46);i._set("global",{plugins:{filler:{propagate:!0}}});var o={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e<r&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};function s(t,e,n){var i,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return"origin";if(i=parseFloat(r,10),isFinite(i)&&Math.floor(i)===i)return"-"!==r[0]&&"+"!==r[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function l(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?r=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?r=n.scaleZero:i.getBasePosition?r=i.getBasePosition():i.getBasePixel&&(r=i.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if("number"==typeof r&&isFinite(r))return{x:(e=i.isHorizontal())?r:null,y:e?null:r}}return null}function u(t,e,n){var i,a=t[e].fill,r=[e];if(!n)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;r.push(a),a=i.fill}return!1}function d(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),o[n](t))}function h(t){return t&&!t.skip}function c(t,e,n,i,a){var o;if(i&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<i;++o)r.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(n[a-1].x,n[a-1].y),o=a-1;o>0;--o)r.canvas.lineTo(t,n[o],n[o-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,i,r,o,h=(t.data.datasets||[]).length,c=e.propagate,f=[];for(i=0;i<h;++i)o=null,(r=(n=t.getDatasetMeta(i)).dataset)&&r._model&&r instanceof a.Line&&(o={visible:t.isDatasetVisible(i),fill:s(r,i,h),chart:t,el:r}),n.$filler=o,f.push(o);for(i=0;i<h;++i)(o=f[i])&&(o.fill=u(f,i,c),o.boundary=l(o),o.mapper=d(o))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,o=n.el,s=o._view,l=o._children||[],u=n.mapper,d=s.backgroundColor||i.global.defaultColor;u&&d&&l.length&&(r.canvas.clipArea(a,t.chartArea),function(t,e,n,i,a,r){var o,s,l,u,d,f,g,m=e.length,p=i.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,s=m+!!r;o<s;++o)d=n(u=e[l=o%m]._view,l,i),f=h(u),g=h(d),f&&g?(b=v.push(u),x=y.push(d)):b&&x&&(p?(f&&v.push(u),g&&y.push(d)):(c(t,v,y,b,x),b=x=0,v=[],y=[]));c(t,v,y,b,x),t.closePath(),t.fillStyle=a,t.fill()}(a,l,u,s,d,o._loop),r.canvas.unclipArea(a))}}}},{26:26,41:41,46:46}],52:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(31),s=r.noop;function l(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return r.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:r.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 u=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=r.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:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.labels,a=e.display,o=t.ctx,s=i.global,u=r.valueOrDefault,d=u(n.fontSize,s.defaultFontSize),h=u(n.fontStyle,s.defaultFontStyle),c=u(n.fontFamily,s.defaultFontFamily),f=r.fontString(d,h,c),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=a?10:0):(m.width=a?10:0,m.height=t.maxHeight),a)if(o.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+n.padding:0;o.textAlign="left",o.textBaseline="top",r.each(t.legendItems,function(e,i){var a=l(n,d)+d/2+o.measureText(e.text).width;v[v.length-1]+a+n.padding>=t.width&&(y+=d+n.padding,v[v.length]=t.left),g[i]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+n.padding}),m.height+=y}else{var b=n.padding,x=t.columnWidths=[],_=n.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,e){var i=l(n,d)+d/2+o.measureText(t.text).width;w+M>m.height&&(_+=k+n.padding,x.push(k),k=0,w=0),k=Math.max(k,i),w+=M,g[e]={left:0,top:0,width:i,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,a=i.global,o=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,h=t.ctx,c=r.valueOrDefault,f=c(n.fontColor,a.defaultFontColor),g=c(n.fontSize,a.defaultFontSize),m=c(n.fontStyle,a.defaultFontStyle),p=c(n.fontFamily,a.defaultFontFamily),v=r.fontString(g,m,p);h.textAlign="left",h.textBaseline="middle",h.lineWidth=.5,h.strokeStyle=f,h.fillStyle=f,h.font=v;var y=l(n,g),b=t.legendHitBoxes,x=t.isHorizontal();d=x?{x:t.left+(s-u[0])/2,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var _=g+n.padding;r.each(t.legendItems,function(i,l){var f=h.measureText(i.text).width,m=y+g/2+f,p=d.x,v=d.y;x?p+m>=s&&(v=d.y+=_,d.line++,p=d.x=t.left+(s-u[d.line])/2):v+_>t.bottom&&(p=d.x=p+t.columnWidths[d.line]+n.padding,v=d.y=t.top+n.padding,d.line++),function(t,n,i){if(!(isNaN(y)||y<=0)){h.save(),h.fillStyle=c(i.fillStyle,a.defaultColor),h.lineCap=c(i.lineCap,o.borderCapStyle),h.lineDashOffset=c(i.lineDashOffset,o.borderDashOffset),h.lineJoin=c(i.lineJoin,o.borderJoinStyle),h.lineWidth=c(i.lineWidth,o.borderWidth),h.strokeStyle=c(i.strokeStyle,a.defaultColor);var s=0===c(i.lineWidth,o.borderWidth);if(h.setLineDash&&h.setLineDash(c(i.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2;r.canvas.drawPoint(h,i.pointStyle,l,t+u,n+u)}else s||h.strokeRect(t,n,y,g),h.fillRect(t,n,y,g);h.restore()}}(p,v,i),b[l].left=p,b[l].top=v,function(t,e,n,i){var a=g/2,r=y+a+t,o=e+a;h.fillText(n.text,r,o),n.hidden&&(h.beginPath(),h.lineWidth=2,h.moveTo(r,o),h.lineTo(r+i,o),h.stroke())}(p,v,i,f),x?d.x+=m+n.padding:d.y+=_})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var n=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.legend=n}e.exports={id:"legend",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(r.mergeIf(e,i.global.legend),n?(o.configure(t,n,e),n.options=e):d(t,e)):n&&(o.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,n){"use strict";var i=t(26),a=t(27),r=t(46),o=t(31),s=r.noop;i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var l=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,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:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.display,a=(0,r.valueOrDefault)(e.fontSize,i.global.defaultFontSize),o=t.minSize,s=r.isArray(e.text)?e.text.length:1,l=r.options.toLineHeight(e.lineHeight,a),u=n?s*l+2*e.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=u):(o.width=u,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=r.valueOrDefault,a=t.options,o=i.global;if(a.display){var s,l,u,d=n(a.fontSize,o.defaultFontSize),h=n(a.fontStyle,o.defaultFontStyle),c=n(a.fontFamily,o.defaultFontFamily),f=r.fontString(d,h,c),g=r.options.toLineHeight(a.lineHeight,d),m=g/2+a.padding,p=0,v=t.top,y=t.left,b=t.bottom,x=t.right;e.fillStyle=n(a.fontColor,o.defaultFontColor),e.font=f,t.isHorizontal()?(l=y+(x-y)/2,u=v+m,s=x-y):(l="left"===a.position?y+m:x-m,u=v+(b-v)/2,s=b-v,p=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(p),e.textAlign="center",e.textBaseline="middle";var _=a.text;if(r.isArray(_))for(var k=0,w=0;w<_.length;++w)e.fillText(_[w],0,k,s),k+=g;else e.fillText(_,0,0,s);e.restore()}}});function u(t,e){var n=new l({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.titleBlock=n}e.exports={id:"title",_element:l,beforeInit:function(t){var e=t.options.title;e&&u(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(r.mergeIf(e,i.global.title),n?(o.configure(t,n,e),n.options=e):u(t,e)):n&&(o.removeBox(t,n),delete t.titleBlock)}}},{26:26,27:27,31:31,46:46}],54:[function(t,e,n){"use strict";var i=t(33),a=t(34);e.exports=function(){var t=i.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,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,r=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(null!=t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var o=i.getLabels().indexOf(t=n||t);e=-1!==o?o:e}if(i.isHorizontal()){var s=i.width/r,l=s*(e-i.minIndex);return a&&(l+=s/2),i.left+Math.round(l)}var u=i.height/r,d=u*(e-i.minIndex);return a&&(d+=u/2),i.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),r=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=r/2),(t<=0?0:Math.round(t/r))+e.minIndex},getBasePixel:function(){return this.bottom}});a.registerScaleType("category",t,{position:"bottom"})}},{33:33,34:34}],55:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(34),o=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,i=n.data.datasets,r=t.isHorizontal();function o(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&&a.each(i,function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}}),e.stacked||s){var l={};a.each(i,function(i,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,h=l[u].negativeValues;n.isDatasetVisible(r)&&o(s)&&a.each(i.data,function(n,i){var a=+t.getRightValue(n);isNaN(a)||s.data[i].hidden||(d[i]=d[i]||0,h[i]=h[i]||0,e.relativePoints?d[i]=100:a<0?h[i]+=a:d[i]+=a)})}),a.each(l,function(e){var n=e.positiveValues.concat(e.negativeValues),i=a.min(n),r=a.max(n);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?r:Math.max(t.max,r)})}else a.each(i,function(e,i){var r=n.getDatasetMeta(i);n.isDatasetVisible(i)&&o(r)&&a.each(e.data,function(e,n){var i=+t.getRightValue(e);isNaN(i)||r.data[n].hidden||(null===t.min?t.min=i:i<t.min&&(t.min=i),null===t.max?t.max=i:i>t.max&&(t.max=i))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=a.valueOrDefault(e.fontSize,i.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},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,i=+e.getRightValue(t),a=e.end-n;return e.isHorizontal()?e.left+e.width/a*(i-n):e.bottom-e.height/a*(i-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])}});r.registerScaleType("linear",n,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,n){"use strict";var i=t(46),a=t(33);e.exports=function(t){var e=i.noop;t.LinearScaleBase=a.extend({getRightValue:function(t){return"string"==typeof t?+t:a.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.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,o=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!==o&&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:e,handleDirectionalChanges:e,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:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var n,a,r,o=[];if(t.stepSize&&t.stepSize>0)r=t.stepSize;else{var s=i.niceNum(e.max-e.min,!1);r=i.niceNum(s/(t.maxTicks-1),!0),void 0!==(a=t.precision)&&(n=Math.pow(10,a),r=Math.ceil(r*n)/n)}var l=Math.floor(e.min/r)*r,u=Math.ceil(e.max/r)*r;i.isNullOrUndef(t.min)||i.isNullOrUndef(t.max)||!t.stepSize||i.almostWhole((t.max-t.min)/t.stepSize,r/1e3)&&(l=t.min,u=t.max);var d=(u-l)/r;d=i.almostEquals(d,Math.round(d),r/1e3)?Math.round(d):Math.ceil(d),a=1,r<1&&(a=Math.pow(10,1-Math.floor(i.log10(r))),l=Math.round(l*a)/a,u=Math.round(u*a)/a),o.push(void 0!==t.min?t.min:l);for(var h=1;h<d;++h)o.push(Math.round((l+h*r)*a)/a);return o.push(void 0!==t.max?t.max:u),o}(a,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.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),a.prototype.convertTicksToLabels.call(t)}})}},{33:33,46:46}],57:[function(t,e,n){"use strict";var i=t(46),a=t(33),r=t(34),o=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.logarithmic}},n=a.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,a=n.data.datasets,r=t.isHorizontal();function o(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&&i.each(a,function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}}),e.stacked||s){var l={};i.each(a,function(a,r){var s=n.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:"",s.stack].join(".");n.isDatasetVisible(r)&&o(s)&&(void 0===l[u]&&(l[u]=[]),i.each(a.data,function(e,n){var i=l[u],a=+t.getRightValue(e);isNaN(a)||s.data[n].hidden||a<0||(i[n]=i[n]||0,i[n]+=a)}))}),i.each(l,function(e){if(e.length>0){var n=i.min(e),a=i.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 i.each(a,function(e,a){var r=n.getDatasetMeta(a);n.isDatasetVisible(a)&&o(r)&&i.each(e.data,function(e,n){var i=+t.getRightValue(e);isNaN(i)||r.data[n].hidden||i<0||(null===t.min?t.min=i:i<t.min&&(t.min=i),null===t.max?t.max=i:i>t.max&&(t.max=i),0!==i&&(null===t.minNotZero||i<t.minNotZero)&&(t.minNotZero=i))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,n=i.valueOrDefault;t.min=n(e.min,t.min),t.max=n(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(i.log10(t.min))-1),t.max=Math.pow(10,Math.floor(i.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(i.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(i.log10(t.min))+1):10),null===t.minNotZero&&(t.minNotZero=t.min>0?t.min:t.max<1?Math.pow(10,Math.floor(i.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),a=t.ticks=function(t,e){var n,a,r=[],o=i.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),l=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(n=Math.floor(i.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),r.push(s),s=a*Math.pow(10,n)):(n=Math.floor(i.log10(s)),a=Math.floor(s/Math.pow(10,n)));var d=n<0?Math.pow(10,Math.abs(n)):1;do{r.push(s),10==++a&&(a=1,d=++n>=0?1:d),s=Math.round(a*Math.pow(10,n)*d)/d}while(n<l||n===l&&a<u);var h=o(t.max,s);return r.push(h),r}({min:e.min,max:e.max},t);t.max=i.max(a),t.min=i.min(a),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),a.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(i.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var n,a,r,o,s,l=this,u=l.options.ticks.reverse,d=i.log10,h=l._getFirstTickValue(l.minNotZero),c=0;return e=+l.getRightValue(e),u?(r=l.end,o=l.start,s=-1):(r=l.start,o=l.end,s=1),l.isHorizontal()?(n=l.width,a=u?l.right:l.left):(n=l.height,s*=-1,a=u?l.top:l.bottom),e!==r&&(0===r&&(n-=c=i.getValueOrDefault(l.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=h),0!==e&&(c+=n/(d(o)-d(r))*(d(e)-d(r))),a+=s*c),a},getValueForPixel:function(e){var n,a,r,o,s=this,l=s.options.ticks.reverse,u=i.log10,d=s._getFirstTickValue(s.minNotZero);if(l?(a=s.end,r=s.start):(a=s.start,r=s.end),s.isHorizontal()?(n=s.width,o=l?s.right-e:e-s.left):(n=s.height,o=l?e-s.top:s.bottom-e),o!==a){if(0===a){var h=i.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=h,n-=h,a=d}o*=u(r)-u(a),o/=n,o=Math.pow(10,u(a)+o)}return o}});r.registerScaleType("logarithmic",n,e)}},{33:33,34:34,35:35,46:46}],58:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(34),o=t(35);e.exports=function(t){var e=i.global,n={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function s(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function l(t){var n=t.options.pointLabels,i=a.valueOrDefault(n.fontSize,e.defaultFontSize),r=a.valueOrDefault(n.fontStyle,e.defaultFontStyle),o=a.valueOrDefault(n.fontFamily,e.defaultFontFamily);return{size:i,style:r,family:o,font:a.fontString(i,r,o)}}function u(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function h(t,e,n,i){if(a.isArray(e))for(var r=n.y,o=1.5*i,s=0;s<e.length;++s)t.fillText(e[s],n.x,r),r+=o;else t.fillText(e,n.x,n.y)}function c(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){return a.isNumber(t)?t:0}var g=t.LinearScaleBase.extend({setDimensions:function(){var t=this,n=t.options,i=n.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var r=a.min([t.height,t.width]),o=a.valueOrDefault(i.fontSize,e.defaultFontSize);t.drawingArea=n.display?r/2-(o/2+i.backdropPaddingY):r/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(r,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);a.each(r.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||s.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,n=a.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*n)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t;this.options.pointLabels.display?function(t){var e,n,i,r=l(t),o=Math.min(t.height/2,t.width/2),d={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=r.font,t._pointLabelSizes=[];var c,f,g,m=s(t);for(e=0;e<m;e++){i=t.getPointPosition(e,o),c=t.ctx,f=r.size,n=a.isArray(g=t.pointLabels[e]||"")?{w:a.longestText(c,c.font,g),h:g.length*f+1.5*(g.length-1)*f}:{w:c.measureText(g).width,h:f},t._pointLabelSizes[e]=n;var p=t.getIndexAngle(e),v=a.toDegrees(p)%360,y=u(v,i.x,n.w,0,180),b=u(v,i.y,n.h,90,270);y.start<d.l&&(d.l=y.start,h.l=p),y.end>d.r&&(d.r=y.end,h.r=p),b.start<d.t&&(d.t=b.start,h.t=p),b.end>d.b&&(d.b=b.end,h.b=p)}t.setReductions(o,d,h)}(this):(t=Math.min(this.height/2,this.width/2),this.drawingArea=Math.round(t),this.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var i=e.l/Math.sin(n.l),a=Math.max(e.r-this.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);i=f(i),a=f(a),r=f(r),o=f(o),this.drawingArea=Math.min(Math.round(t-(i+a)/2),Math.round(t-(r+o)/2)),this.setCenterPoint(i,a,r,o)},setCenterPoint:function(t,e,n,i){var a=this,r=n+a.drawingArea,o=a.height-i-a.drawingArea;a.xCenter=Math.round((t+a.drawingArea+(a.width-e-a.drawingArea))/2+a.left),a.yCenter=Math.round((r+o)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/s(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.round(Math.cos(n)*e)+this.xCenter,y:Math.round(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,n=t.options,i=n.gridLines,r=n.ticks,o=a.valueOrDefault;if(n.display){var u=t.ctx,f=this.getIndexAngle(0),g=o(r.fontSize,e.defaultFontSize),m=o(r.fontStyle,e.defaultFontStyle),p=o(r.fontFamily,e.defaultFontFamily),v=a.fontString(g,m,p);a.each(t.ticks,function(n,l){if(l>0||r.reverse){var d=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]);if(i.display&&0!==l&&function(t,e,n,i){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(e.color,i-1),r.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,i-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),r.closePath(),r.stroke();else{var o=s(t);if(0===o)return;r.beginPath();var l=t.getPointPosition(0,n);r.moveTo(l.x,l.y);for(var u=1;u<o;u++)l=t.getPointPosition(u,n),r.lineTo(l.x,l.y);r.closePath(),r.stroke()}}(t,i,d,l),r.display){var h=o(r.fontColor,e.defaultFontColor);if(u.font=v,u.save(),u.translate(t.xCenter,t.yCenter),u.rotate(f),r.showLabelBackdrop){var c=u.measureText(n).width;u.fillStyle=r.backdropColor,u.fillRect(-c/2-r.backdropPaddingX,-d-g/2-r.backdropPaddingY,c+2*r.backdropPaddingX,g+2*r.backdropPaddingY)}u.textAlign="center",u.textBaseline="middle",u.fillStyle=h,u.fillText(n,0,-d),u.restore()}}}),(n.angleLines.display||n.pointLabels.display)&&function(t){var n=t.ctx,i=t.options,r=i.angleLines,o=i.pointLabels;n.lineWidth=r.lineWidth,n.strokeStyle=r.color;var u=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),f=l(t);n.textBaseline="top";for(var g=s(t)-1;g>=0;g--){if(r.display){var m=t.getPointPosition(g,u);n.beginPath(),n.moveTo(t.xCenter,t.yCenter),n.lineTo(m.x,m.y),n.stroke(),n.closePath()}if(o.display){var p=t.getPointPosition(g,u+5),v=a.valueAtIndexOrDefault(o.fontColor,g,e.defaultFontColor);n.font=f.font,n.fillStyle=v;var y=t.getIndexAngle(g),b=a.toDegrees(y);n.textAlign=d(b),c(b,t._pointLabelSizes[g],p),h(n,t.pointLabels[g]||"",p,f.size)}}}(t)}}});r.registerScaleType("radialLinear",g,n)}},{26:26,34:34,35:35,46:46}],59:[function(t,e,n){"use strict";var i=t(6);i="function"==typeof i?i:window.moment;var a=t(26),r=t(46),o=t(33),s=t(34),l=Number.MIN_SAFE_INTEGER||-9007199254740991,u=Number.MAX_SAFE_INTEGER||9007199254740991,d={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}},h=Object.keys(d);function c(t,e){return t-e}function f(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,r.push(i));return r}function g(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(r=t[i=o+s>>1],!(a=t[i-1]||null))return{lo:null,hi:r};if(r[e]<n)o=i+1;else{if(!(a[e]>n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e];return r[i]+(o[i]-r[i])*(s?(n-r[e])/s:0)}function m(t,e){var n=e.parser,a=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof a?i(t,a):(t instanceof i||(t=i(t)),t.isValid()?t:"function"==typeof a?a(t):t)}function p(t,e){if(r.isNullOrUndef(t))return null;var n=e.options.time,i=m(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function v(t){for(var e=h.indexOf(t)+1,n=h.length;e<n;++e)if(d[h[e]].common)return h[e]}e.exports=function(){var t=o.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),o.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),o.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),o.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,a,o,s,d=this,h=d.chart,g=d.options.time,m=g.unit||"day",v=u,y=l,b=[],x=[],_=[];for(t=0,n=h.data.labels.length;t<n;++t)_.push(p(h.data.labels[t],d));for(t=0,n=(h.data.datasets||[]).length;t<n;++t)if(h.isDatasetVisible(t))if(r.isObject((o=h.data.datasets[t].data)[0]))for(x[t]=[],e=0,a=o.length;e<a;++e)s=p(o[e],d),b.push(s),x[t][e]=s;else b.push.apply(b,_),x[t]=_.slice(0);else x[t]=[];_.length&&(_=f(_).sort(c),v=Math.min(v,_[0]),y=Math.max(y,_[_.length-1])),b.length&&(b=f(b).sort(c),v=Math.min(v,b[0]),y=Math.max(y,b[b.length-1])),v=p(g.min,d)||v,y=p(g.max,d)||y,v=v===u?+i().startOf(m):v,y=y===l?+i().endOf(m)+1:y,d.min=Math.min(v,y),d.max=Math.max(v+1,y),d._horizontal=d.isHorizontal(),d._table=[],d._timestamps={data:b,datasets:x,labels:_}},buildTicks:function(){var t,e,n,a=this,o=a.min,s=a.max,l=a.options,c=l.time,f=[],y=[];switch(l.ticks.source){case"data":f=a._timestamps.data;break;case"labels":f=a._timestamps.labels;break;case"auto":default:f=function(t,e,n,a){var o,s=a.time,l=s.unit||function(t,e,n,i){var a,r,o=h.length;for(a=h.indexOf(s.minUnit);a<o-1;++a)if((r=d[h[a]]).common&&Math.ceil((n-e)/((r.steps?r.steps[r.steps.length-1]:u)*r.size))<=i)return h[a];return h[o-1]}(0,t,e,n),c=v(l),f=r.valueOrDefault(s.stepSize,s.unitStepSize),g="week"===l&&s.isoWeekday,m=a.ticks.major.enabled,p=d[l],y=i(t),b=i(e),x=[];for(f||(f=function(t,e,n,i){var a,r,o,s=e-t,u=d[l],h=u.size,c=u.steps;if(!c)return Math.ceil(s/(i*h));for(a=0,r=c.length;a<r&&(o=c[a],!(Math.ceil(s/(h*o))<=i));++a);return o}(t,e,0,n)),g&&(y=y.isoWeekday(g),b=b.isoWeekday(g)),y=y.startOf(g?"day":l),(b=b.startOf(g?"day":l))<e&&b.add(1,l),o=i(y),m&&c&&!g&&!s.round&&(o.startOf(c),o.add(~~((y-o)/(p.size*f))*f,l));o<b;o.add(f,l))x.push(+o);return x.push(+o),x}(o,s,a.getLabelCapacity(o),l)}for("ticks"===l.bounds&&f.length&&(o=f[0],s=f[f.length-1]),o=p(c.min,a)||o,s=p(c.max,a)||s,t=0,e=f.length;t<e;++t)(n=f[t])>=o&&n<=s&&y.push(n);return a.min=o,a.max=s,a._unit=c.unit||function(t,e,n,r){var o,s,l=i.duration(i(a.max).diff(i(n)));for(o=h.length-1;o>=h.indexOf(e);o--)if(d[s=h[o]].common&&l.as(s)>=t.length)return s;return h[e?h.indexOf(e):0]}(y,c.minUnit,a.min),a._majorUnit=v(a._unit),a._table=function(t,e,n,i){if("linear"===l.distribution||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,r,o,s,u,d=[],h=[e];for(a=0,r=t.length;a<r;++a)(s=t[a])>e&&s<n&&h.push(s);for(h.push(n),a=0,r=h.length;a<r;++a)u=h[a+1],s=h[a],void 0!==(o=h[a-1])&&void 0!==u&&Math.round((u+o)/2)===s||d.push({time:s,pos:a/(r-1)});return d}(a._timestamps.data,o,s),a._offsets=function(t,e,n,i,a){var r,o=0,s=0;return a.offset&&e.length&&(a.time.min||(r=e[0],o=(g(t,"time",e.length>1?e[1]:i,"pos")-g(t,"time",r,"pos"))/2),a.time.max||(r=e.length>1?e[e.length-2]:n,s=(g(t,"time",e[e.length-1],"pos")-g(t,"time",r,"pos"))/2)),{left:o,right:s}}(a._table,y,o,s,l),a._labelFormat=function(t,e){var n,i,a,r=t.length;for(n=0;n<r;n++){if(0!==(i=m(t[n],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===i.second()&&0===i.minute()&&0===i.hour()||(a=!0)}return a?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(a._timestamps.data,c),function(t,e){var n,a,r,o,s=[];for(n=0,a=t.length;n<a;++n)r=t[n],o=!!e&&r===+i(r).startOf(e),s.push({value:r,major:o});return s}(y,a._majorUnit)},getLabelForIndex:function(t,e){var n=this.chart.data,i=this.options.time,a=n.labels&&t<n.labels.length?n.labels[t]:"",o=n.datasets[e].data[t];return r.isObject(o)&&(a=this.getRightValue(o)),i.tooltipFormat?m(a,i).format(i.tooltipFormat):"string"==typeof a?a:m(a,i).format(this._labelFormat)},tickFormatFunction:function(t,e,n,i){var a=this.options,o=t.valueOf(),s=a.time.displayFormats,l=s[this._unit],u=this._majorUnit,d=s[u],h=t.clone().startOf(u).valueOf(),c=a.ticks.major,f=c.enabled&&u&&d&&o===h,g=t.format(i||(f?d:l)),m=f?c:a.ticks.minor,p=r.valueOrDefault(m.callback,m.userCallback);return p?p(g,e,n):g},convertTicksToLabels:function(t){var e,n,a=[];for(e=0,n=t.length;e<n;++e)a.push(this.tickFormatFunction(i(t[e].value),e,t));return a},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=g(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=null;if(void 0!==e&&void 0!==n&&(i=this._timestamps.datasets[n][e]),null===i&&(i=p(t,this)),null!==i)return this.getPixelForOffset(i)},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=g(e._table,"pos",(n?(t-(e._horizontal?e.left:e.top))/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,"time");return i(a)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,i=r.toRadians(e.maxRotation),o=Math.cos(i),s=Math.sin(i);return n*o+r.valueOrDefault(e.fontSize,a.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,a=e.tickFormatFunction(i(t),0,[],n),r=e.getLabelWidth(a),o=e.isHorizontal()?e.width:e.height,s=Math.floor(o/r);return s>0?s:1}});s.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{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"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{26:26,33:33,34:34,46:46,6:6}]},{},[7])(7)});
\ No newline at end of file
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/dist/styles.e201ff296d50970399c4.css b/ceph/src/pybind/mgr/dashboard/frontend/dist/styles.e201ff296d50970399c4.css
deleted file mode 100644 (file)
index 32773a9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-.toast-center-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-title{font-weight:700}.toast-message{word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0}.toast-container{pointer-events:none;position:fixed;z-index:999999}.toast-container *{box-sizing:border-box}.toast-container .ngx-toastr{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;background-size:24px;box-shadow:0 0 12px #999;color:#fff}.toast-container .ngx-toastr:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-info{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'/%3E%3C/svg%3E")}.toast-error{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'/%3E%3C/svg%3E")}.toast-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' width='512' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3E%3C/svg%3E")}.toast-container.toast-bottom-center .ngx-toastr,.toast-container.toast-top-center .ngx-toastr{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width .ngx-toastr,.toast-container.toast-top-full-width .ngx-toastr{width:96%;margin-left:auto;margin-right:auto}.ngx-toastr{background-color:#030303;pointer-events:auto}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512' width='576' height='512'%3E%3Cpath fill='rgb(255,255,255)' d='M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z'/%3E%3C/svg%3E");background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width:240px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:11em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){.toast-container .ngx-toastr.div{padding:8px 8px 8px 50px;width:18em}.toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){.toast-container .ngx-toastr.div{padding:15px 15px 15px 50px;width:25em}}/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(glyphicons-halflings-regular.f4769f9bdb7466be6508.eot);src:url(glyphicons-halflings-regular.f4769f9bdb7466be6508.eot?#iefix) format("embedded-opentype"),url(glyphicons-halflings-regular.448c34a56d699c29117a.woff2) format("woff2"),url(glyphicons-halflings-regular.fa2772327f55d8198301.woff) format("woff"),url(glyphicons-halflings-regular.e18bbf611f2a2e43afc0.ttf) format("truetype"),url(glyphicons-halflings-regular.89889688147bd7575d63.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:.2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{box-sizing:content-box;height:0;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{overflow:auto;display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{border-collapse:collapse;border-spacing:0;background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px;outline:0}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}.navbar-toggle{display:none}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}.navbar-text{float:left;margin-right:15px;margin-left:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:2s linear infinite progress-bar-stripes;animation:2s linear infinite progress-bar-stripes}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;text-align:center;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:left .6s ease-in-out;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*!
-Fork Awesome 1.1.6
-License - https://forkaweso.me/Fork-Awesome/license
-
-Copyright 2018 Dave Gandy & Fork Awesome
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.1.6);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.1.6) format('embedded-opentype'),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.1.6) format('woff2'),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.1.6) format('woff'),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.1.6) format('truetype'),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.1.6#forkawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-asterisk:before{content:"\f069"}.fa-bell-o:before{content:"\f0f3"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-bell:before{content:"\f0a2"}.fa-cutlery:before,.fa-utensils:before{content:"\f0f5"}.fa-gbp:before,.fa-pound:before{content:"\f154"}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:"\f161"}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f1b1"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-cc:before,.fa-closed-captioning:before{content:"\f20a"}.fa-diamond:before,.fa-gem:before{content:"\f219"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-gnupg:before{content:"\f30d"}.fa-php:before{content:"\f30e"}.fa-ffmpeg:before{content:"\f30f"}.fa-joplin:before{content:"\f310"}.fa-syncthing:before{content:"\f311"}.fa-inkscape:before{content:"\f312"}.fa-matrix-org:before{content:"\f313"}.fa-pixelfed:before{content:"\f314"}.fa-bootstrap:before{content:"\f315"}.fa-dev-to:before{content:"\f316"}.fa-hashnode:before{content:"\f317"}.fa-jirafeau:before{content:"\f318"}.fa-emby:before{content:"\f319"}.fa-wikidata:before{content:"\f31a"}.fa-gimp:before{content:"\f31b"}.fa-c:before{content:"\f31c"}.fa-digitalocean:before{content:"\f31d"}.fa-att:before{content:"\f31e"}.fa-gitea:before{content:"\f31f"}.fa-file-epub:before{content:"\f321"}.fa-python:before{content:"\f322"}.fa-archlinux:before{content:"\f323"}.fa-pleroma:before{content:"\f324"}.fa-unsplash:before{content:"\f325"}.fa-hackster:before{content:"\f326"}.fa-spell-check:before{content:"\f327"}.fa-moon:before{content:"\f328"}.fa-sun:before{content:"\f329"}.fa-f-droid:before{content:"\f32a"}.fa-biometric:before{content:"\f32b"}.checkbox{padding-left:20px}.checkbox label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px}.checkbox label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{display:inline-block;position:absolute;width:16px;height:16px;left:0;top:0;margin-left:-20px;padding-left:3px;padding-top:1px;font-size:11px;color:#555}.checkbox input[type=checkbox],.checkbox input[type=radio]{opacity:0;z-index:1}.checkbox input[type=checkbox]:focus+label::before,.checkbox input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.checkbox input[type=checkbox]:checked+label::after,.checkbox input[type=radio]:checked+label::after{font-family:FontAwesome;content:"\f00c"}.checkbox input[type=checkbox]:indeterminate+label::after,.checkbox input[type=radio]:indeterminate+label::after{display:block;content:"";width:10px;height:3px;background-color:#555;border-radius:2px;margin-left:-16.5px;margin-top:7px}.checkbox input[type=checkbox]:disabled+label,.checkbox input[type=radio]:disabled+label{opacity:.65}.checkbox input[type=checkbox]:disabled+label::before,.checkbox input[type=radio]:disabled+label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.checkbox.checkbox-inline{margin-top:0}.checkbox-primary input[type=checkbox]:checked+label::before,.checkbox-primary input[type=radio]:checked+label::before{background-color:#337ab7;border-color:#337ab7}.checkbox-primary input[type=checkbox]:checked+label::after,.checkbox-primary input[type=radio]:checked+label::after{color:#fff}.checkbox-danger input[type=checkbox]:checked+label::before,.checkbox-danger input[type=radio]:checked+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:checked+label::after,.checkbox-danger input[type=radio]:checked+label::after{color:#fff}.checkbox-info input[type=checkbox]:checked+label::before,.checkbox-info input[type=radio]:checked+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:checked+label::after,.checkbox-info input[type=radio]:checked+label::after{color:#fff}.checkbox-warning input[type=checkbox]:checked+label::before,.checkbox-warning input[type=radio]:checked+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:checked+label::after,.checkbox-warning input[type=radio]:checked+label::after{color:#fff}.checkbox-success input[type=checkbox]:checked+label::before,.checkbox-success input[type=radio]:checked+label::before{background-color:#5cb85c;border-color:#5cb85c}.checkbox-success input[type=checkbox]:checked+label::after,.checkbox-success input[type=radio]:checked+label::after{color:#fff}.checkbox-primary input[type=checkbox]:indeterminate+label::before,.checkbox-primary input[type=radio]:indeterminate+label::before{background-color:#337ab7;border-color:#337ab7}.checkbox-primary input[type=checkbox]:indeterminate+label::after,.checkbox-primary input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-danger input[type=checkbox]:indeterminate+label::before,.checkbox-danger input[type=radio]:indeterminate+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:indeterminate+label::after,.checkbox-danger input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-info input[type=checkbox]:indeterminate+label::before,.checkbox-info input[type=radio]:indeterminate+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:indeterminate+label::after,.checkbox-info input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-warning input[type=checkbox]:indeterminate+label::before,.checkbox-warning input[type=radio]:indeterminate+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:indeterminate+label::after,.checkbox-warning input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-success input[type=checkbox]:indeterminate+label::before,.checkbox-success input[type=radio]:indeterminate+label::before{background-color:#5cb85c;border-color:#5cb85c}.checkbox-success input[type=checkbox]:indeterminate+label::after,.checkbox-success input[type=radio]:indeterminate+label::after{background-color:#fff}.radio{padding-left:20px}.radio label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px}.radio label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.radio label::after{display:inline-block;position:absolute;content:" ";width:11px;height:11px;left:3px;top:3px;margin-left:-20px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);transform:scale(0,0);-webkit-transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33),-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33)}.radio input[type=radio]{opacity:0;z-index:1}.radio input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.radio input[type=radio]:checked+label::after{-webkit-transform:scale(1,1);transform:scale(1,1)}.radio input[type=radio]:disabled+label{opacity:.65}.radio input[type=radio]:disabled+label::before{cursor:not-allowed}.radio.radio-inline{margin-top:0}.radio-primary input[type=radio]+label::after{background-color:#337ab7}.radio-primary input[type=radio]:checked+label::before{border-color:#337ab7}.radio-primary input[type=radio]:checked+label::after{background-color:#337ab7}.radio-danger input[type=radio]+label::after{background-color:#d9534f}.radio-danger input[type=radio]:checked+label::before{border-color:#d9534f}.radio-danger input[type=radio]:checked+label::after{background-color:#d9534f}.radio-info input[type=radio]+label::after{background-color:#5bc0de}.radio-info input[type=radio]:checked+label::before{border-color:#5bc0de}.radio-info input[type=radio]:checked+label::after{background-color:#5bc0de}.radio-warning input[type=radio]+label::after{background-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::before{border-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::after{background-color:#f0ad4e}.radio-success input[type=radio]+label::after{background-color:#5cb85c}.radio-success input[type=radio]:checked+label::before{border-color:#5cb85c}.radio-success input[type=radio]:checked+label::after{background-color:#5cb85c}input[type=checkbox].styled:checked+label:after,input[type=radio].styled:checked+label:after{font-family:FontAwesome;content:"\f00c"}input[type=checkbox] .styled:checked+label::after,input[type=checkbox] .styled:checked+label::before,input[type=radio] .styled:checked+label::after,input[type=radio] .styled:checked+label::before{color:#fff}.bs-datepicker{display:-webkit-box;display:flex;-webkit-box-align:stretch;align-items:stretch;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;background:#fff;box-shadow:0 0 10px 0 #aaa;position:relative;z-index:1}.bs-datepicker:after{clear:both;content:'';display:block}.bs-datepicker bs-day-picker{float:left}.bs-datepicker button:active,.bs-datepicker button:focus,.bs-datepicker button:hover,.bs-datepicker input:active,.bs-datepicker input:focus,.bs-datepicker input:hover,.bs-datepicker-btns button:active,.bs-datepicker-btns button:focus,.bs-datepicker-btns button:hover,.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:focus{outline:0}.bs-datepicker-head{min-width:270px;height:50px;padding:10px;border-radius:3px 3px 0 0;text-align:justify}.bs-datepicker-head:after{content:"";display:inline-block;vertical-align:top;width:100%}.bs-datepicker-head button{display:inline-block;vertical-align:top;padding:0;height:30px;line-height:30px;border:0;background:0 0;text-align:center;cursor:pointer;color:#fff;-webkit-transition:.3s;transition:.3s}.bs-datepicker-head button[disabled],.bs-datepicker-head button[disabled]:active,.bs-datepicker-head button[disabled]:hover{background:rgba(221,221,221,.3);color:#f5f5f5;cursor:not-allowed}.bs-datepicker-head button.next,.bs-datepicker-head button.previous{border-radius:50%;width:30px;height:30px}.bs-datepicker-head button.next span,.bs-datepicker-head button.previous span{font-size:28px;line-height:1;display:inline-block;position:relative;height:100%;width:100%;border-radius:50%}.bs-datepicker-head button.current{border-radius:15px;max-width:155px;padding:0 13px}.bs-datepicker-head button:hover{background-color:rgba(0,0,0,.1)}.bs-datepicker-head button:active{background-color:rgba(0,0,0,.2)}.bs-datepicker-body{padding:10px;border-radius:0 0 3px 3px;min-height:232px;min-width:278px;border:1px solid #e9edf0}.bs-datepicker-body .days.weeks{position:relative;z-index:1}.bs-datepicker-body table{width:100%;border-collapse:separate;border-spacing:0}.bs-datepicker-body table th{font-size:13px;color:#9aaec1;font-weight:400;text-align:center}.bs-datepicker-body table td{color:#54708b;text-align:center;position:relative;padding:0}.bs-datepicker-body table td span{display:block;margin:0 auto;font-size:13px;border-radius:50%;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker-body table td:not(.disabled):not(.week) span:not(.disabled):not(.is-other-month){cursor:pointer}.bs-datepicker-body table td span.is-highlighted:not(.disabled):not(.selected),.bs-datepicker-body table td.is-highlighted:not(.disabled):not(.selected) span{background-color:#e9edf0;-webkit-transition:none;transition:0s}.bs-datepicker-body table td span.is-active-other-month:not(.disabled):not(.selected),.bs-datepicker-body table td.is-active-other-month:not(.disabled):not(.selected) span{background-color:#e9edf0;-webkit-transition:none;transition:0s;cursor:pointer}.bs-datepicker-body table td span.disabled,.bs-datepicker-body table td.disabled span{color:#9aaec1}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff}.bs-datepicker-body table td span.is-other-month,.bs-datepicker-body table td.is-other-month span{color:rgba(0,0,0,.25)}.bs-datepicker-body table td.active{position:relative}.bs-datepicker-body table td.active.select-start:before{left:35%}.bs-datepicker-body table td.active.select-end:before{left:-85%}.bs-datepicker-body table td span.active.select-end:after,.bs-datepicker-body table td span.active.select-start:after,.bs-datepicker-body table td.active.select-end span:after,.bs-datepicker-body table td.active.select-start span:after{content:"";display:block;position:absolute;z-index:-1;width:100%;height:100%;-webkit-transition:.3s;transition:.3s;top:0;border-radius:50%}.bs-datepicker-body table td span:before,.bs-datepicker-body table td:before{content:"";display:block;position:absolute;z-index:-1;top:6px;bottom:6px;left:-2px;right:-2px;box-sizing:content-box;background:0 0}.bs-datepicker-body table td.active.select-start+td.active:before{left:-20%}.bs-datepicker-body table td:last-child.active:before{border-radius:0 3px 3px 0;width:125%;left:-25%}.bs-datepicker-body table td span[class*=select-],.bs-datepicker-body table td[class*=select-] span{border-radius:50%;color:#fff}.bs-datepicker-body table.days span.active:not(.select-start):before,.bs-datepicker-body table.days span.in-range:not(.select-start):before,.bs-datepicker-body table.days td.active:not(.select-start):before,.bs-datepicker-body table.days td.in-range:not(.select-start):before{background:#e9edf0}.bs-datepicker-body table.days span{width:32px;height:32px;line-height:32px}.bs-datepicker-body table.days span.select-start{z-index:2}.bs-datepicker-body table.days span.in-range.select-end:before,.bs-datepicker-body table.days span.is-highlighted.in-range:before{background:0 0;right:0;left:0}.bs-datepicker-body table.days td.active+td.is-highlighted:before,.bs-datepicker-body table.days td.active+td.select-end:before,.bs-datepicker-body table.days td.in-range+td.is-highlighted:before,.bs-datepicker-body table.days td.in-range+td.select-end:before,.bs-datepicker-body table.days td.select-start+td.is-highlighted:before,.bs-datepicker-body table.days td.select-start+td.select-end:before{background:#e9edf0;width:100%}.bs-datepicker-body table.weeks tr td:nth-child(2).active:before{border-radius:3px 0 0 3px;left:0;width:100%}.bs-datepicker-body table:not(.weeks) tr td:first-child:before{border-radius:3px 0 0 3px}.bs-datepicker-body table.years td span{width:46px;height:46px;line-height:45px;margin:0 auto}.bs-datepicker-body table.years tr:not(:last-child) td span{margin-bottom:8px}.bs-datepicker-body table.months td{height:52px}.bs-datepicker-body table.months td span{padding:6px;border-radius:15px}.bs-datepicker .current-timedate{color:#54708b;font-size:15px;text-align:center;height:30px;line-height:30px;border-radius:20px;border:1px solid #e9edf0;margin-bottom:10px;cursor:pointer;text-transform:uppercase;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.bs-datepicker .current-timedate span:not(:empty):before{content:"";width:15px;height:16px;display:inline-block;margin-right:4px;vertical-align:text-bottom;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAABMklEQVQoU9VTwW3CQBCcOUgBtEBKSAukAnBKME+wFCAlYIhk8sQlxFABtJAScAsuAPBEewYcxCP8ouxrPDsza61uiVN1o6RNHD4htSCmq49RfO71BvMJqBBkITRf1kmUW49nQRC9h1I5AZlBClaL8aP1fKgOOxCx8aSLs+Q19eZuNO8QmPqJRtDFguy7OAcDbJPs+/BKVPDIPrvD2ZJgWAmVe7O0rI0Vqs1seyWUXpuJoppYCa5L+U++NpNPkr5OE2oMdARsb3gykJT5ydZcL8Z9Ww60nxg2LhjON9li9OwXZzo+xLbp3nC2s9CL2RrueGyVrgwNm8HpsCzZ9EEW6kqXlo1GQe03FzP/7W8Hl0dBtu7Bf7zt6mIwvX1RvzDCm7+q3mAW0Dl/GPdUCeXrZLT9BrDrGkm4qlPvAAAAAElFTkSuQmCC)}.bs-datepicker-multiple{border-radius:4px 0 0 4px}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-left:10px}.bs-datepicker-multiple .bs-datepicker{box-shadow:none;position:relative}.bs-datepicker-multiple .bs-datepicker:not(:last-child){padding-right:10px}.bs-datepicker-multiple .bs-datepicker+.bs-datepicker:after{content:"";display:block;width:14px;height:10px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAA1ElEQVQoU42RsQrCUAxF77VuDu7O4oMWW//BURBBpZvgKk4uIrjoqKOTf+DopIO4uYggtFTfw3+pkQqCW1/G5J7kJiFy4m5MxUlxAzgIPHX+lzMPzupRYlYgxiR7vqsOP8YKzsTx0yxFMCUZ+q7aZzlr+OvgoWcAFyAHgat2jLWu48252DdqAihDJGSSJNUUxYmQjs3+hPQBlAh2rG2LCOPnaw3IiGDX99TRCs7ASJsNhUOA7d/LcuHvRG22FIZvsNXw1MX6VZExCilOQKEfeLXr/10+aC9Ho7arh7oAAAAASUVORK5CYII=);position:absolute;top:25px;left:-8px}.bs-datepicker-multiple .bs-datepicker .left{float:left}.bs-datepicker-multiple .bs-datepicker .right{float:right}.bs-datepicker-container{padding:15px}.bs-datepicker .bs-media-container{display:-webkit-box;display:flex}@media (max-width:768px){.bs-datepicker .bs-media-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}.bs-datepicker-custom-range{padding:15px;background:#eee}.bs-datepicker-predefined-btns button{width:100%;display:block;height:30px;background-color:#9aaec1;border-radius:4px;color:#fff;border:0;margin-bottom:10px;padding:0 18px;text-align:left;-webkit-transition:.3s;transition:.3s}.bs-datepicker-predefined-btns button:active,.bs-datepicker-predefined-btns button:hover{background-color:#54708b}.bs-datepicker-buttons{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;padding-top:10px;border-top:1px solid #e9edf0}.bs-datepicker-buttons .btn-default{margin-left:10px}.bs-timepicker-container{padding:10px 0}.bs-timepicker-label{color:#54708b;margin-bottom:10px}.bs-timepicker-controls{display:inline-block;vertical-align:top;margin-right:10px}.bs-timepicker-controls button{width:20px;height:20px;border-radius:50%;border:0;background-color:#e9edf0;color:#54708b;font-size:16px;font-weight:700;vertical-align:middle;line-height:0;padding:0;-webkit-transition:.3s;transition:.3s}.bs-timepicker-controls button:hover{background-color:#d5dadd}.bs-timepicker-controls input{width:35px;height:25px;border-radius:13px;text-align:center;border:1px solid #e9edf0}.bs-timepicker .switch-time-format{text-transform:uppercase;min-width:54px;height:25px;border-radius:20px;border:1px solid #e9edf0;background:#fff;color:#54708b;font-size:13px}.bs-timepicker .switch-time-format img{vertical-align:initial;margin-left:4px}bs-datepicker-container,bs-daterangepicker-container{z-index:1080}@media (max-width:768px){.bs-datepicker-multiple{display:-webkit-box;display:flex}.bs-datepicker-multiple+.bs-datepicker-multiple{margin-top:10px;margin-left:0}}.theme-default .bs-datepicker-body table td span.selected,.theme-default .bs-datepicker-body table td span[class*=select-]:after,.theme-default .bs-datepicker-body table td.selected span,.theme-default .bs-datepicker-body table td[class*=select-] span:after,.theme-default .bs-datepicker-head{background-color:#777}.theme-default .bs-datepicker-body table td.week span{color:#777}.theme-default .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#777;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td[class*=select-] span:after,.theme-green .bs-datepicker-head{background-color:#5cb85c}.theme-green .bs-datepicker-body table td.week span{color:#5cb85c}.theme-green .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5cb85c;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-blue .bs-datepicker-body table td span.selected,.theme-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-blue .bs-datepicker-body table td.selected span,.theme-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-blue .bs-datepicker-head{background-color:#5bc0de}.theme-blue .bs-datepicker-body table td.week span{color:#5bc0de}.theme-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#5bc0de;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-dark-blue .bs-datepicker-body table td span.selected,.theme-dark-blue .bs-datepicker-body table td span[class*=select-]:after,.theme-dark-blue .bs-datepicker-body table td.selected span,.theme-dark-blue .bs-datepicker-body table td[class*=select-] span:after,.theme-dark-blue .bs-datepicker-head{background-color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.week span{color:#337ab7}.theme-dark-blue .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#337ab7;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-red .bs-datepicker-body table td span.selected,.theme-red .bs-datepicker-body table td span[class*=select-]:after,.theme-red .bs-datepicker-body table td.selected span,.theme-red .bs-datepicker-body table td[class*=select-] span:after,.theme-red .bs-datepicker-head{background-color:#d9534f}.theme-red .bs-datepicker-body table td.week span{color:#d9534f}.theme-red .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#d9534f;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}.theme-orange .bs-datepicker-body table td span.selected,.theme-orange .bs-datepicker-body table td span[class*=select-]:after,.theme-orange .bs-datepicker-body table td.selected span,.theme-orange .bs-datepicker-body table td[class*=select-] span:after,.theme-orange .bs-datepicker-head{background-color:#f0ad4e}.theme-orange .bs-datepicker-body table td.week span{color:#f0ad4e}.theme-orange .bs-datepicker-body table td.active-week span:hover{cursor:pointer;background-color:#f0ad4e;color:#fff;opacity:.5;-webkit-transition:none;transition:0s}/*!
-Fork Awesome 1.1.6
-License - https://forkaweso.me/Fork-Awesome/license
-
-Copyright 2018 Dave Gandy & Fork Awesome
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */@font-face{font-family:ForkAwesome;src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?v=1.0.11);src:url(forkawesome-webfont.35e77a38ca9d85c4e897.eot?#iefix&v=1.0.11) format("embedded-opentype"),url(forkawesome-webfont.3a9e014c2469ffa65a0e.woff2?v=1.0.11) format("woff2"),url(forkawesome-webfont.44bbdbbfb5a10ba2d1ce.woff?v=1.0.11) format("woff"),url(forkawesome-webfont.fc46f3dae03b2b2e1cee.ttf?v=1.0.11) format("truetype"),url(forkawesome-webfont.78dcc9c4999659b8026a.svg?v=1.0.11#forkawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.form-group>.control-label>span.required{display:inline-block;font:14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.form-group>.control-label>span.fa-pull-left.required{margin-right:.3em}.fa.fa-pull-right,.form-group>.control-label>span.fa-pull-right.required{margin-left:.3em}.fa.pull-left,.form-group>.control-label>span.pull-left.required{margin-right:.3em}.fa.pull-right,.form-group>.control-label>span.pull-right.required{margin-left:.3em}.fa-spin{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before,.form-group>.control-label>span.required:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-globe-e:before{content:"\f304"}.fa-globe-w:before{content:"\f305"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-awesome:before,.fa-fork-circle:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-scuttlebutt:before,.fa-ssb:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.fa-freedombox:before{content:"\f2fd"}.fa-facebook-messenger:before{content:"\f2fe"}.fa-debian:before{content:"\f2ff"}.fa-mastodon-square:before{content:"\f300"}.fa-tipeee:before{content:"\f301"}.fa-react:before{content:"\f302"}.fa-dogmazic:before{content:"\f303"}.fa-zotero:before{content:"\f309"}.fa-nodejs:before{content:"\f308"}.fa-nextcloud:before{content:"\f306"}.fa-nextcloud-square:before{content:"\f307"}.fa-hackaday:before{content:"\f30a"}.fa-laravel:before{content:"\f30b"}.fa-signalapp:before{content:"\f30c"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.info-card-popover-cluster-status{max-width:23vw;max-height:20vh}.info-card-popover-cluster-status .popover-body{max-width:100%;max-height:19vh;font-size:12px}@media (max-width:calc(1200px - 1px)){.info-card-popover-cluster-status{max-width:31vw}}@media (max-width:calc(992px - 1px)){.info-card-popover-cluster-status{max-width:46vw}}@media (max-width:calc(768px - 1px)){.info-card-popover-cluster-status{max-width:83vw}}.info-card-content-clickable{cursor:pointer;padding:7px;border:1px solid #efefef;border-radius:3px}.info-card-content-clickable:hover{border-color:#d1d1d1;background-color:#f3f3f3}html{-webkit-tap-highlight-color:transparent;background-color:#fff}body,html{width:100%;height:100%;font-size:12px}a{text-decoration:none;color:#2b99a8;cursor:pointer}a:focus,a:hover{text-decoration:underline;color:#474544}h1{letter-spacing:-1px;font-size:2em}h2{letter-spacing:-1px;font-size:1.833em}h3{display:block;font-size:1.583em;font-weight:400}h4{font-size:1.5em;line-height:normal}option{font-weight:400;font-style:normal}.checkbox input[type=checkbox]:checked+label:after{font-family:ForkAwesome}.full-height{height:100%}.vertical-align{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.loading{position:absolute;top:50%;left:50%}.margin-right-md{margin-right:15px}.no-border{border:0;box-shadow:0 0 0!important}.italic{font-style:italic}.bold{font-weight:700}.text-right{text-align:right}.text-monospace{font-family:monospace}.btn-primary{color:#eee;background-color:#ef5c55;border-color:#ef5c55;border-radius:1.875rem}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#eee;background-color:#f38984;border-color:#f38984}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#f38984;border-color:#f38984}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#ef5c55;border-color:#ef5c55}.btn-primary .badge{color:#2b99a8;background-color:#eee}.btn-primary .caret{color:#eee}.btn-default{border-radius:1.875rem}.form-group .btn-default{border-radius:4px}.btn-group>.btn>i.fa,button.btn.btn-label>i.fa{padding-right:5px}.dropdown-menu{min-width:50px;z-index:999999}.dropdown-menu>li>a{color:#474544;cursor:pointer}.dropdown-menu>li>a>i.fa{padding-right:5px}.dropdown-menu>.active>a{color:#eee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#21747f}.dataTables_wrapper .dropdown-menu>li.divider{cursor:auto}.container,.container-fluid{padding-left:30px;padding-right:30px}.row{margin-left:-30px;margin-right:-30px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{padding-left:30px;padding-right:30px}.caret{color:#fff}.progress-bar{background-image:none!important}.progress-bar-info{background-color:#2b99a8}.progress-bar-freespace{background-color:#d1d1d1}.oaprogress{position:relative;margin-bottom:0}.oaprogress div.progress-bar{position:static}.oaprogress span{position:absolute;display:block;width:100%;color:#000;font-weight:400}tags-input .tags{border-radius:4px;border:1px solid #d1d1d1;box-shadow:inset 0 1px 1px rgba(0,0,0,.09)}.panel .accordion-title,uib-accordion .panel-title{font-size:14px!important}.panel-body h2:first-child{margin-top:0}.disabled{pointer-events:none}.clickable{cursor:pointer}.has-error .has-error-btn,.has-error .has-error-btn:disabled:hover{background-color:#f2dede;border-color:#a94442}.noscript{padding-top:5em}.noscript p{color:#777}.form-group>.control-label>span.required,.required{color:#a94442}.form-group>.control-label>span.required{font-size:6px;padding-left:4px;vertical-align:text-top}.form-control{display:table-cell}.form-control:focus{border-color:rgba(43,153,168,.8);outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px 2px rgba(43,153,168,.5)}.modal-footer button.btn:not(:first-child),.panel-footer button.btn:not(:first-child){margin-left:5px}.margin-right-sm{margin-right:10px}.nav-tabs{margin-bottom:15px}.ceph-icon{background:url(Ceph_Logo_Stacked_RGB_120411_fa_228x228.1ed169ccc35367a2dab2.png)}.prometheus-icon{background:url(prometheus_logo.074db273ef932a67d91b.svg)}.custom-icon{padding:10px;margin-right:1em;background-clip:padding-box;background-size:contain;background-repeat:no-repeat}.toast-message .custom-icon{filter:brightness(0) invert(1);-webkit-filter:brightness(0) invert(1);-moz-filter:brightness(0) invert(1);-o-filter:brightness(0) invert(1);-ms-filter:brightness(0) invert(1)}.block-ui-wrapper{background:rgba(0,0,0,.7)!important}h3.page-header{margin-left:1em;margin-top:1em;border-color:#f0f0f0}.tooltip-wide .tooltip-inner{width:400px}.tooltip-inner{background-color:#fff;border:1px solid grey;color:#333;font-size:1.1em}.toast-message>ul{padding-left:1em;margin:0}.node-menu{position:relative;width:150px}.node-menu .node-menu-content{width:100%;padding:5px;position:absolute;border:1px solid #bdbdbd;border-radius:5%;box-shadow:0 0 5px #bdbdbd;background-color:#eee;color:#212121;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;z-index:999}.node-menu .node-menu-content li.node-menu-item{list-style:none;padding:3px}.node-menu .node-menu-content .node-menu-item:hover{border-radius:5%;opacity:unset;cursor:pointer;background-color:#bdbdbd;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon{display:inline-block;width:16px}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.new-tag:before{content:'\25CF'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.new-folder:before{content:'\25B6'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.rename:before{content:'\270E'}.node-menu .node-menu-content .node-menu-item .node-menu-item-icon.remove:before{content:'\2716'}.node-menu .node-menu-content .node-menu-item .node-menu-item-value{margin-left:5px}tree-internal ul{padding:3px 0 3px 25px}tree-internal li{padding:0;margin:0;list-style:none}tree-internal .over-drop-target{border:4px solid #757575;-webkit-transition:padding .2s ease-out;transition:padding .2s ease-out;padding:5px;border-radius:5%}tree-internal .tree{box-sizing:border-box;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}tree-internal .tree li{list-style:none;cursor:default}tree-internal .tree li div{display:inline-block;box-sizing:border-box}tree-internal .tree .node-value{display:inline-block;color:#212121}tree-internal .tree .node-value:after{display:block;width:0;height:2px;background-color:#212121;content:'';-webkit-transition:width .3s;transition:width .3s}tree-internal .tree .node-value:hover:after{width:100%}tree-internal .tree .node-left-menu{display:inline-block;height:100%;width:auto}tree-internal .tree .node-left-menu span:before{content:'\2026';color:#757575}tree-internal .tree .node-selected:after{width:100%}tree-internal .tree .folding{width:25px;display:inline-block;line-height:1px;padding:0 5px;font-weight:700}tree-internal .tree .folding.node-collapsed{cursor:pointer}tree-internal .tree .folding.node-collapsed:before{content:'\25B6';color:#757575}tree-internal .tree .folding.node-expanded{cursor:pointer}tree-internal .tree .folding.node-expanded:before{content:'\25BC';color:#757575}tree-internal .tree .folding.node-empty{color:#212121;text-align:center;font-size:.89em}tree-internal .tree .folding.node-empty:before{content:'\25B6';color:#757575}tree-internal .tree .folding.node-leaf{color:#212121;text-align:center;font-size:.89em}tree-internal .tree .folding.node-leaf:before{content:'\25CF';color:#757575}tree-internal ul.rootless{padding:0}tree-internal div.rootless{display:none!important}tree-internal .loading-children:after{content:' loading ...';color:#6a1b9a;font-style:italic;font-size:.9em;-webkit-animation-name:loading-children;animation-name:loading-children;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes loading-children{0%{color:#f3e5f5}12.5%{color:#e1bee7}25%{color:#ce93d8}37.5%{color:#ba68c8}50%{color:#ab47bc}62.5%{color:#9c27b0}75%{color:#8e24aa}87.5%{color:#7b1fa2}100%{color:#6a1b9a}}@keyframes loading-children{0%{color:#f3e5f5}12.5%{color:#e1bee7}25%{color:#ce93d8}37.5%{color:#ba68c8}50%{color:#ab47bc}62.5%{color:#9c27b0}75%{color:#8e24aa}87.5%{color:#7b1fa2}100%{color:#6a1b9a}}
\ No newline at end of file
index f962258f502d261c8ee85ccacbee1bc4a61ad024..10d71fccb709ceacdbf352f6ca2133b61e3e2342 100644 (file)
@@ -18,7 +18,7 @@ describe('Images page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('Images');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Images');
     });
 
     it('should show three tabs', () => {
index 8a3a03b06371d3c4b485f15ce6ae2ce919a23463..b3227fe9c35fedc41b52e208d8117d1fea654155 100644 (file)
@@ -14,6 +14,6 @@ describe('Iscsi Page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Overview');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Overview');
   });
 });
index a8f819cc874444bc7b1f6b7a2f0dc657945d3ada..e15cb53efba5516c371b0e4bf03d304c5fe538c2 100644 (file)
@@ -18,7 +18,7 @@ describe('Mirroring page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('Mirroring');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Mirroring');
     });
 
     it('should show three tabs', () => {
index 2600a83ab849d44ec65955d9470263a1dfc4b1c3..2f438f8dd20fda70f9e3807a24b01582ae92497f 100644 (file)
@@ -18,7 +18,7 @@ describe('Alerts page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('Alerts');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Alerts');
     });
   });
 });
index 9afe5405ab0bd86d10bfe45d43099194fd76b9d3..91303fb3e276cc9c7984d4e1c7920ec9e1271da9 100644 (file)
@@ -14,6 +14,6 @@ describe('Configuration page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Configuration');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Configuration');
   });
 });
index c4335ff62192836a0823a363d50e23e3747bcb0b..d64fdee552760f1051ae2b31eb80c33cc7a9b81d 100644 (file)
@@ -14,6 +14,6 @@ describe('CRUSH map page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('CRUSH map');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'CRUSH map');
   });
 });
index 605b63d4d96fd0de0eac0546bae8603940888e70..913d01bfa98a319311d9aed87b0495686b36ff21 100644 (file)
@@ -14,7 +14,7 @@ describe('Hosts page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Hosts');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Hosts');
   });
 
   it('should show two tabs', () => {
index 243582ee0cee45820b82e5e86e18643ead378b63..13658619d03a7a776f1c664140be2e59eb625b73 100644 (file)
@@ -14,7 +14,7 @@ describe('Logs page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Logs');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Logs');
   });
 
   it('should show two tabs', () => {
index 6bc71747b280a13943ef6ffa75c52789263766cb..629b791f6217685903c0460614d783b1fe81d358 100644 (file)
@@ -18,7 +18,7 @@ describe('Manager modules page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('Manager modules');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Manager modules');
     });
   });
 });
index 7eb19f2ecd01a2272d9230c8d1d87ca6d32481b2..529763b6be2e1a5860bb89880e4da90ce23b8fb1 100644 (file)
@@ -14,6 +14,6 @@ describe('Monitors page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Monitors');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Monitors');
   });
 });
index 41fd52f346e26160a78351e9a560b1a3b585ae8c..3301001041831c8ad3c74b460d5535bdbaba2af9 100644 (file)
@@ -14,7 +14,7 @@ describe('OSDs page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('OSDs');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'OSDs');
   });
 
   it('should show two tabs', () => {
index d5306858423eff67052db4ed42592201bb3a1e6c..9c39a925b6bb7cc2c24dbffa0b4bc905da9429ea 100644 (file)
@@ -18,7 +18,7 @@ describe('Filesystems page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('Filesystems');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Filesystems');
     });
   });
 });
index 7ff26b315b9402f931b56b4652a16149e2a15e4e..cd6b8f673383299a438dd67295f219d31129b474 100644 (file)
@@ -1,4 +1,4 @@
-import { $, $$, browser } from 'protractor';
+import { $, $$, browser, ElementFinder } from 'protractor';
 
 export class Helper {
   static EC = browser.ExpectedConditions;
@@ -28,8 +28,8 @@ export class Helper {
       });
   }
 
-  static getBreadcrumbText() {
-    return $('.breadcrumb-item.active').getText();
+  static getBreadcrumb() {
+    return $('.breadcrumb-item.active');
   }
 
   static getTabText(idx) {
@@ -41,4 +41,8 @@ export class Helper {
   static getTabsCount() {
     return $$('.nav.nav-tabs li').count();
   }
+
+  static waitTextToBePresent(elem: ElementFinder, text: string, message?: string) {
+    return browser.wait(Helper.EC.textToBePresentInElement(elem, text), Helper.TIMEOUT, message);
+  }
 }
index de45daf0a51dd861ca90acfd3ab62219bfffa7c4..988737a67934d2416c9aeed44bdb071276bf8dc3 100644 (file)
@@ -18,7 +18,7 @@ describe('Nfs page', () => {
     });
 
     it('should open and show breadcrumb', () => {
-      expect(Helper.getBreadcrumbText()).toEqual('NFS');
+      Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'NFS');
     });
   });
 });
index 3b826eb858300684d2828bf60364cf1b0162e033..7ce4c81dce0bf322d4c347493625f262a9d93545 100644 (file)
@@ -14,7 +14,7 @@ describe('Pools page', () => {
 
   it('should open and show breadcrumb', () => {
     page.navigateTo();
-    expect(Helper.getBreadcrumbText()).toEqual('Pools');
+    Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Pools');
   });
 
   it('should show two tabs', () => {
index 87a6e712bf03b8b5aa31cb7acd718f8aa42be759..54253fbec4f44a13875b7d7480b988164afe6d08 100755 (executable)
@@ -49,12 +49,23 @@ const optionsOldProd = {
     allowEmptyPaths: false,
 };
 
+const optionsDefaultLang = {
+  files: [
+    'src/environments/environment.prod.ts',
+    'src/environments/environment.ts'
+  ],
+  from: /'{DEFAULT_LANG}'/g,
+  to: `'${process.env.npm_package_config_locale}'`,
+  allowEmptyPaths: false
+}
+
 try {
     let changeOldYearFiles = replace.sync(optionsOldYear);
     let changeNewYearFiles = replace.sync(optionsNewYear);
     let changeOldProdFiles = replace.sync(optionsOldProd);
     let changeProdFiles = replace.sync(optionsNewProd);
     let changeDevFiles = replace.sync(optionsNewDev);
+    let changeDefaultLangFiles = replace.sync(optionsDefaultLang);
     console.log('Environment variables have been set');
 }
 catch (error) {
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/i18n.config.json b/ceph/src/pybind/mgr/dashboard/frontend/i18n.config.json
new file mode 100644 (file)
index 0000000..111164a
--- /dev/null
@@ -0,0 +1,12 @@
+{\r
+  "sourceDirectory": "src/locale",\r
+  "targetDirectory": "src/locale",\r
+  "sourceFile": "messages.xlf",\r
+  "languages": "cs,de-DE,es-ES,fr-FR,id-ID,it-IT,ja-JP,ko-KR,pl-PL,pt-BR,zh-CN,zh-TW",\r
+  "organization": "ceph",\r
+  "project": "ceph-dashboard",\r
+  "resource": "Nautilus:nautilus",\r
+  "removeUnusedIds": true,\r
+  "automate": true,\r
+  "quiet": false\r
+}\r
index c87db700ba6a5465d934b400ab5f96924072ad1c..0b3138462d97aad300ceb8a3f1845cb015ca9cfd 100644 (file)
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "semver": {
-          "version": "5.6.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
-          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "source-map-support": {
-          "version": "0.5.10",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
-          "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
-          "dev": true,
-          "requires": {
-            "buffer-from": "^1.0.0",
-            "source-map": "^0.6.0"
-          }
         }
       }
     },
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
         }
       }
     },
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
         }
       }
     },
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "semver": {
-          "version": "5.6.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
-          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
         }
       }
     },
         "yargs": "9.0.1"
       },
       "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
-          "dev": true
-        },
         "chokidar": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz",
-          "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==",
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
           "dev": true,
           "requires": {
             "anymatch": "^2.0.0",
             "normalize-path": "^3.0.0",
             "path-is-absolute": "^1.0.0",
             "readdirp": "^2.2.1",
-            "upath": "^1.1.0"
+            "upath": "^1.1.1"
           }
         },
-        "cliui": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
           "dev": true,
           "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wrap-ansi": "^2.0.0"
-          },
-          "dependencies": {
-            "string-width": {
-              "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-              "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-              "dev": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            }
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "strip-bom": "^3.0.0"
           }
         },
-        "fsevents": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
-          "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "nan": "^2.9.2",
-            "node-pre-gyp": "^0.10.0"
-          },
-          "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
-              }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "2.6.9",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            },
-            "deep-extend": {
-              "version": "0.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.2.1"
-              }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-              }
-            },
-            "glob": {
-              "version": "7.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            },
-            "has-unicode": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.24",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimatch": "^3.0.4"
-              }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-              }
-            },
-            "inherits": {
-              "version": "2.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "0.0.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minipass": {
-              "version": "2.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.2.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.2.1"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimist": "0.0.8"
-              }
-            },
-            "ms": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^2.1.2",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.10.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.1",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.2.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4"
-              }
-            },
-            "nopt": {
-              "version": "4.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            },
-            "npm-bundled": {
-              "version": "1.0.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1"
-              }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-              }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              },
-              "dependencies": {
-                "minimist": {
-                  "version": "1.2.0",
-                  "bundled": true,
-                  "dev": true,
-                  "optional": true
-                }
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.6.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.1.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.3.4",
-                "minizlib": "^1.1.1",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.2"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2 || 2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "yallist": {
-              "version": "3.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "load-json-file": {
-          "version": "2.0.0",
-          "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
-          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "parse-json": "^2.2.0",
-            "pify": "^2.0.0",
-            "strip-bom": "^3.0.0"
-          }
-        },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
-        "normalize-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-          "dev": true
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-          "dev": true,
-          "requires": {
-            "execa": "^0.7.0",
-            "lcid": "^1.0.0",
-            "mem": "^1.1.0"
-          }
-        },
-        "path-type": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
-          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+        "normalize-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
           "dev": true,
           "requires": {
             "pify": "^2.0.0"
             "read-pkg": "^2.0.0"
           }
         },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          },
-          "dependencies": {
-            "is-fullwidth-code-point": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-              "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-              "dev": true
-            },
-            "strip-ansi": {
-              "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^3.0.0"
-              }
-            }
-          }
-        },
         "strip-bom": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
           "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-          "dev": true
-        },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true
-        },
         "yargs": {
           "version": "9.0.1",
           "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
       }
     },
     "@babel/code-frame": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
-      "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+      "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
       "dev": true,
       "requires": {
         "@babel/highlight": "^7.0.0"
       }
     },
     "@babel/core": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.0.tgz",
-      "integrity": "sha512-6Isr4X98pwXqHvtigw71CKgmhL1etZjPs5A67jL/w0TkLM9eqmFR40YrnJvEc1WnMZFsskjsmid8bHZyxKEAnw==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@babel/generator": "^7.5.0",
-        "@babel/helpers": "^7.5.0",
-        "@babel/parser": "^7.5.0",
-        "@babel/template": "^7.4.4",
-        "@babel/traverse": "^7.5.0",
-        "@babel/types": "^7.5.0",
+      "version": "7.6.4",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz",
+      "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.6.4",
+        "@babel/helpers": "^7.6.2",
+        "@babel/parser": "^7.6.4",
+        "@babel/template": "^7.6.0",
+        "@babel/traverse": "^7.6.3",
+        "@babel/types": "^7.6.3",
         "convert-source-map": "^1.1.0",
         "debug": "^4.1.0",
         "json5": "^2.1.0",
-        "lodash": "^4.17.11",
+        "lodash": "^4.17.13",
         "resolve": "^1.3.2",
         "semver": "^5.4.1",
         "source-map": "^0.5.0"
           }
         },
         "json5": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
-          "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+          "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
           "dev": true,
           "requires": {
             "minimist": "^1.2.0"
           }
         },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
         "ms": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
         }
       }
     },
     "@babel/generator": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz",
-      "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==",
+      "version": "7.6.4",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz",
+      "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.5.0",
+        "@babel/types": "^7.6.3",
         "jsesc": "^2.5.1",
-        "lodash": "^4.17.11",
-        "source-map": "^0.5.0",
-        "trim-right": "^1.0.1"
+        "lodash": "^4.17.13",
+        "source-map": "^0.5.0"
       },
       "dependencies": {
         "jsesc": {
           "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
           "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
           "dev": true
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
         }
       }
     },
       }
     },
     "@babel/helpers": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.0.tgz",
-      "integrity": "sha512-EgCUEa8cNwuMrwo87l2d7i2oShi8m2Q58H7h3t4TWtqATZalJYFwfL9DulRe02f3KdqM9xmMCw3v/7Ll+EiaWg==",
+      "version": "7.6.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz",
+      "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==",
       "dev": true,
       "requires": {
-        "@babel/template": "^7.4.4",
-        "@babel/traverse": "^7.5.0",
-        "@babel/types": "^7.5.0"
+        "@babel/template": "^7.6.0",
+        "@babel/traverse": "^7.6.2",
+        "@babel/types": "^7.6.0"
       }
     },
     "@babel/highlight": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
-      "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+      "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
       "dev": true,
       "requires": {
         "chalk": "^2.0.0",
       }
     },
     "@babel/parser": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz",
-      "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==",
+      "version": "7.6.4",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz",
+      "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==",
       "dev": true
     },
     "@babel/plugin-syntax-object-rest-spread": {
       }
     },
     "@babel/runtime": {
-      "version": "7.5.5",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
-      "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
+      "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.2"
       },
       "dependencies": {
         "regenerator-runtime": {
-          "version": "0.13.2",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
-          "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==",
+          "version": "0.13.3",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+          "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
           "dev": true
         }
       }
     },
     "@babel/template": {
-      "version": "7.4.4",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
-      "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz",
+      "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
-        "@babel/parser": "^7.4.4",
-        "@babel/types": "^7.4.4"
+        "@babel/parser": "^7.6.0",
+        "@babel/types": "^7.6.0"
       }
     },
     "@babel/traverse": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz",
-      "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz",
+      "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "@babel/generator": "^7.5.0",
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.6.3",
         "@babel/helper-function-name": "^7.1.0",
         "@babel/helper-split-export-declaration": "^7.4.4",
-        "@babel/parser": "^7.5.0",
-        "@babel/types": "^7.5.0",
+        "@babel/parser": "^7.6.3",
+        "@babel/types": "^7.6.3",
         "debug": "^4.1.0",
         "globals": "^11.1.0",
-        "lodash": "^4.17.11"
+        "lodash": "^4.17.13"
       },
       "dependencies": {
         "debug": {
       }
     },
     "@babel/types": {
-      "version": "7.5.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz",
-      "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz",
+      "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==",
       "dev": true,
       "requires": {
         "esutils": "^2.0.2",
-        "lodash": "^4.17.11",
+        "lodash": "^4.17.13",
         "to-fast-properties": "^2.0.0"
       },
       "dependencies": {
       "requires": {
         "exec-sh": "^0.3.2",
         "minimist": "^1.2.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
       }
     },
     "@compodoc/compodoc": {
       },
       "dependencies": {
         "anymatch": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz",
-          "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+          "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
           "dev": true,
           "requires": {
             "normalize-path": "^3.0.0",
             "fill-range": "^7.0.1"
           }
         },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        },
         "chokidar": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz",
-          "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==",
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.2.tgz",
+          "integrity": "sha512-bw3pm7kZ2Wa6+jQWYP/c7bAZy3i4GwiIiMO2EeRjrE48l8vBqC/WvFhSF0xyM8fQiPEGvwMY/5bqDG7sSEOuhg==",
           "dev": true,
           "requires": {
-            "anymatch": "^3.0.1",
-            "braces": "^3.0.2",
-            "fsevents": "^2.0.6",
-            "glob-parent": "^5.0.0",
-            "is-binary-path": "^2.1.0",
-            "is-glob": "^4.0.1",
-            "normalize-path": "^3.0.0",
-            "readdirp": "^3.1.1"
+            "anymatch": "~3.1.1",
+            "braces": "~3.0.2",
+            "fsevents": "~2.1.1",
+            "glob-parent": "~5.1.0",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.2.0"
           }
         },
-        "colors": {
-          "version": "1.3.3",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
-          "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
-          "dev": true
-        },
-        "commander": {
-          "version": "2.20.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
-          "dev": true
-        },
         "fill-range": {
           "version": "7.0.1",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
             "to-regex-range": "^5.0.1"
           }
         },
-        "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        },
         "fsevents": {
-          "version": "2.0.7",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
-          "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz",
+          "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==",
           "dev": true,
           "optional": true
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
           }
         },
         "glob-parent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
-          "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+          "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
           "dev": true,
           "requires": {
             "is-glob": "^4.0.1"
           }
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "is-binary-path": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
             "binary-extensions": "^2.0.0"
           }
         },
-        "is-glob": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-          "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.1"
-          }
-        },
         "is-number": {
           "version": "7.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
           "dev": true
         },
         "json5": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
-          "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+          "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
           "dev": true,
           "requires": {
             "minimist": "^1.2.0"
           }
         },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
         "normalize-path": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
           "dev": true
         },
         "readdirp": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz",
-          "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==",
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
+          "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
           "dev": true,
           "requires": {
             "picomatch": "^2.0.4"
           }
         },
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
         "to-regex-range": {
       }
     },
     "@jest/console": {
-      "version": "24.7.1",
-      "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz",
-      "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+      "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
       "dev": true,
       "requires": {
-        "@jest/source-map": "^24.3.0",
+        "@jest/source-map": "^24.9.0",
         "chalk": "^2.0.1",
         "slash": "^2.0.0"
       },
       }
     },
     "@jest/core": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz",
-      "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz",
+      "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==",
       "dev": true,
       "requires": {
         "@jest/console": "^24.7.1",
-        "@jest/reporters": "^24.8.0",
-        "@jest/test-result": "^24.8.0",
-        "@jest/transform": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/reporters": "^24.9.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/transform": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "ansi-escapes": "^3.0.0",
         "chalk": "^2.0.1",
         "exit": "^0.1.2",
         "graceful-fs": "^4.1.15",
-        "jest-changed-files": "^24.8.0",
-        "jest-config": "^24.8.0",
-        "jest-haste-map": "^24.8.0",
-        "jest-message-util": "^24.8.0",
+        "jest-changed-files": "^24.9.0",
+        "jest-config": "^24.9.0",
+        "jest-haste-map": "^24.9.0",
+        "jest-message-util": "^24.9.0",
         "jest-regex-util": "^24.3.0",
-        "jest-resolve-dependencies": "^24.8.0",
-        "jest-runner": "^24.8.0",
-        "jest-runtime": "^24.8.0",
-        "jest-snapshot": "^24.8.0",
-        "jest-util": "^24.8.0",
-        "jest-validate": "^24.8.0",
-        "jest-watcher": "^24.8.0",
+        "jest-resolve": "^24.9.0",
+        "jest-resolve-dependencies": "^24.9.0",
+        "jest-runner": "^24.9.0",
+        "jest-runtime": "^24.9.0",
+        "jest-snapshot": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "jest-validate": "^24.9.0",
+        "jest-watcher": "^24.9.0",
         "micromatch": "^3.1.10",
         "p-each-series": "^1.0.0",
-        "pirates": "^4.0.1",
         "realpath-native": "^1.1.0",
         "rimraf": "^2.5.4",
+        "slash": "^2.0.0",
         "strip-ansi": "^5.0.0"
       },
       "dependencies": {
           "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
         "slash": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
           "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
           "dev": true
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "strip-ansi": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
       }
     },
     "@jest/environment": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz",
-      "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
+      "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
       "dev": true,
       "requires": {
-        "@jest/fake-timers": "^24.8.0",
-        "@jest/transform": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "jest-mock": "^24.8.0"
+        "@jest/fake-timers": "^24.9.0",
+        "@jest/transform": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "jest-mock": "^24.9.0"
       }
     },
     "@jest/fake-timers": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz",
-      "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+      "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-mock": "^24.8.0"
-      },
-      "dependencies": {
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        }
+        "@jest/types": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-mock": "^24.9.0"
       }
     },
     "@jest/reporters": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz",
-      "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz",
+      "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==",
       "dev": true,
       "requires": {
-        "@jest/environment": "^24.8.0",
-        "@jest/test-result": "^24.8.0",
-        "@jest/transform": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/environment": "^24.9.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/transform": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "chalk": "^2.0.1",
         "exit": "^0.1.2",
         "glob": "^7.1.2",
         "istanbul-lib-instrument": "^3.0.1",
         "istanbul-lib-report": "^2.0.4",
         "istanbul-lib-source-maps": "^3.0.1",
-        "istanbul-reports": "^2.1.1",
-        "jest-haste-map": "^24.8.0",
-        "jest-resolve": "^24.8.0",
-        "jest-runtime": "^24.8.0",
-        "jest-util": "^24.8.0",
+        "istanbul-reports": "^2.2.6",
+        "jest-haste-map": "^24.9.0",
+        "jest-resolve": "^24.9.0",
+        "jest-runtime": "^24.9.0",
+        "jest-util": "^24.9.0",
         "jest-worker": "^24.6.0",
-        "node-notifier": "^5.2.1",
+        "node-notifier": "^5.4.2",
         "slash": "^2.0.0",
         "source-map": "^0.6.0",
         "string-length": "^2.0.0"
       },
       "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "istanbul-lib-coverage": {
           "version": "2.0.5",
           "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
             "semver": "^6.0.0"
           }
         },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
         "slash": {
       }
     },
     "@jest/source-map": {
-      "version": "24.3.0",
-      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz",
-      "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+      "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
       "dev": true,
       "requires": {
         "callsites": "^3.0.0",
         "source-map": "^0.6.0"
       },
       "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
           "dev": true
         },
         "source-map": {
       }
     },
     "@jest/test-result": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz",
-      "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+      "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
       "dev": true,
       "requires": {
-        "@jest/console": "^24.7.1",
-        "@jest/types": "^24.8.0",
+        "@jest/console": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "@types/istanbul-lib-coverage": "^2.0.0"
       }
     },
     "@jest/test-sequencer": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz",
-      "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz",
+      "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==",
       "dev": true,
       "requires": {
-        "@jest/test-result": "^24.8.0",
-        "jest-haste-map": "^24.8.0",
-        "jest-runner": "^24.8.0",
-        "jest-runtime": "^24.8.0"
+        "@jest/test-result": "^24.9.0",
+        "jest-haste-map": "^24.9.0",
+        "jest-runner": "^24.9.0",
+        "jest-runtime": "^24.9.0"
       }
     },
     "@jest/transform": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz",
-      "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz",
+      "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==",
       "dev": true,
       "requires": {
         "@babel/core": "^7.1.0",
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "babel-plugin-istanbul": "^5.1.0",
         "chalk": "^2.0.1",
         "convert-source-map": "^1.4.0",
         "fast-json-stable-stringify": "^2.0.0",
         "graceful-fs": "^4.1.15",
-        "jest-haste-map": "^24.8.0",
-        "jest-regex-util": "^24.3.0",
-        "jest-util": "^24.8.0",
+        "jest-haste-map": "^24.9.0",
+        "jest-regex-util": "^24.9.0",
+        "jest-util": "^24.9.0",
         "micromatch": "^3.1.10",
+        "pirates": "^4.0.1",
         "realpath-native": "^1.1.0",
         "slash": "^2.0.0",
         "source-map": "^0.6.1",
         "write-file-atomic": "2.4.1"
       },
       "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
         "slash": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
       }
     },
     "@jest/types": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz",
-      "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+      "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
       "dev": true,
       "requires": {
         "@types/istanbul-lib-coverage": "^2.0.0",
         "@types/istanbul-reports": "^1.1.1",
-        "@types/yargs": "^12.0.9"
+        "@types/yargs": "^13.0.0"
       }
     },
     "@mrmlnc/readdir-enhanced": {
         "glob": "7.1.2",
         "tslib": "^1.9.0",
         "yargs": "10.0.3"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
-        },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
-        },
-        "cliui": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-          "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wrap-ansi": "^2.0.0"
-          },
-          "dependencies": {
-            "string-width": {
-              "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-              "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            }
-          }
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
-          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
-          "requires": {
-            "execa": "^0.7.0",
-            "lcid": "^1.0.0",
-            "mem": "^1.1.0"
-          }
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          },
-          "dependencies": {
-            "is-fullwidth-code-point": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-              "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
-            },
-            "strip-ansi": {
-              "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-              "requires": {
-                "ansi-regex": "^3.0.0"
-              }
-            }
-          }
-        },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
-        },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
-        },
-        "yargs": {
-          "version": "10.0.3",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
-          "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
-          "requires": {
-            "cliui": "^3.2.0",
-            "decamelize": "^1.1.1",
-            "find-up": "^2.1.0",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^2.0.0",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
-            "set-blocking": "^2.0.0",
-            "string-width": "^2.0.0",
-            "which-module": "^2.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^8.0.0"
-          }
-        },
-        "yargs-parser": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
-          "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
-          "requires": {
-            "camelcase": "^4.1.0"
-          }
-        }
       }
     },
     "@nodelib/fs.stat": {
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
         }
       }
     },
           "requires": {
             "tslib": "^1.9.0"
           }
-        },
-        "semver": {
-          "version": "5.6.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
-          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.7.3",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-          "dev": true
         }
       }
     },
       "integrity": "sha512-zgRY58MzTpg9Jb575cg0O87mLtXYi6fx7NLRPRHdQ/FqH9mKjZ3i7+OjqtR8/w3KRmFP2Hnkmx52VzldZIKspg=="
     },
     "@types/babel__core": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz",
-      "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==",
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz",
+      "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==",
       "dev": true,
       "requires": {
         "@babel/parser": "^7.1.0",
       }
     },
     "@types/babel__generator": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz",
-      "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==",
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz",
+      "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==",
       "dev": true,
       "requires": {
         "@babel/types": "^7.0.0"
       }
     },
     "@types/yargs": {
-      "version": "12.0.12",
-      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz",
-      "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==",
+      "version": "13.0.3",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
+      "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
+      "dev": true,
+      "requires": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "@types/yargs-parser": {
+      "version": "13.1.0",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
+      "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
       "dev": true
     },
     "@webassemblyjs/ast": {
       }
     },
     "abab": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
-      "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz",
+      "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==",
       "dev": true
     },
     "abbrev": {
       "requires": {
         "mime-types": "~2.1.24",
         "negotiator": "0.6.2"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.24",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-          "dev": true,
-          "requires": {
-            "mime-db": "1.40.0"
-          }
-        }
       }
     },
     "acorn": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz",
-      "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==",
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
+      "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
       "dev": true
     },
     "acorn-dynamic-import": {
       "dev": true
     },
     "acorn-globals": {
-      "version": "4.3.2",
-      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz",
-      "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==",
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
+      "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
       "dev": true,
       "requires": {
         "acorn": "^6.0.1",
         "acorn-walk": "^6.0.1"
+      },
+      "dependencies": {
+        "acorn-walk": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+          "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+          "dev": true
+        }
+      }
+    },
+    "acorn-node": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
+      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
+      "dev": true,
+      "requires": {
+        "acorn": "^7.0.0",
+        "acorn-walk": "^7.0.0",
+        "xtend": "^4.0.2"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
+          "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
+          "dev": true
+        }
       }
     },
     "acorn-walk": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
-      "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz",
+      "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==",
       "dev": true
     },
     "adm-zip": {
       "dev": true
     },
     "agent-base": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
-      "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+      "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
       "dev": true,
       "requires": {
         "es6-promisify": "^5.0.0"
         "fast-json-stable-stringify": "^2.0.0",
         "json-schema-traverse": "^0.4.1",
         "uri-js": "^4.2.2"
-      },
-      "dependencies": {
-        "fast-deep-equal": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
-          "dev": true
-        },
-        "json-schema-traverse": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-          "dev": true
-        }
       }
     },
     "ajv-errors": {
       "dev": true
     },
     "ajv-keywords": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
-      "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
       "dev": true
     },
     "amdefine": {
       },
       "dependencies": {
         "color-convert": {
-          "version": "1.9.2",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
-          "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
           "dev": true,
           "requires": {
-            "color-name": "1.1.1"
+            "color-name": "1.1.3"
           }
         },
         "color-name": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
-          "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
           "dev": true
         }
       }
       "dev": true
     },
     "app-root-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz",
-      "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz",
+      "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==",
       "dev": true
     },
     "aproba": {
       }
     },
     "arg": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
-      "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz",
+      "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==",
       "dev": true
     },
     "argparse": {
       "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
       "dev": true
     },
+    "array-from": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
+      "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
+      "dev": true
+    },
     "array-union": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
       "optional": true
     },
     "asn1": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
-      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
-      "dev": true
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
     },
     "asn1.js": {
       "version": "4.10.1",
       "dev": true
     },
     "async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
-      "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
       "dev": true,
       "requires": {
-        "lodash": "^4.17.11"
+        "lodash": "^4.17.14"
       }
     },
     "async-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
-      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
       "dev": true
     },
     "async-foreach": {
       "optional": true
     },
     "async-limiter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
-      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
       "dev": true
     },
     "asynckit": {
       "dev": true
     },
     "atob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
-      "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
       "dev": true
     },
     "autoprefixer": {
         "num2fraction": "^1.2.2",
         "postcss": "^7.0.13",
         "postcss-value-parser": "^3.3.1"
-      },
-      "dependencies": {
-        "browserslist": {
-          "version": "4.6.3",
-          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz",
-          "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==",
-          "dev": true,
-          "requires": {
-            "caniuse-lite": "^1.0.30000975",
-            "electron-to-chromium": "^1.3.164",
-            "node-releases": "^1.1.23"
-          }
-        },
-        "caniuse-lite": {
-          "version": "1.0.30000979",
-          "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000979.tgz",
-          "integrity": "sha512-gcu45yfq3B7Y+WB05fOMfr0EiSlq+1u+m6rPHyJli/Wy3PVQNGaU7VA4bZE5qw+AU2UVOBR/N5g1bzADUqdvFw==",
-          "dev": true
-        },
-        "electron-to-chromium": {
-          "version": "1.3.187",
-          "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.187.tgz",
-          "integrity": "sha512-XCEygaK7Fs35/RwS+67YbBWs/ydG+oUFPuy1wv558jC3Opd2DHwRyRqrCmhxpmPmCSVlZujYX4TOmOXuMz2GZA==",
-          "dev": true
-        }
       }
     },
     "awesome-bootstrap-checkbox": {
       "dev": true
     },
     "aws4": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
-      "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
       "dev": true
     },
     "babel-code-frame": {
         "lodash": "^4.17.4",
         "source-map": "^0.5.7",
         "trim-right": "^1.0.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
       }
     },
     "babel-helper-builder-binary-assignment-operator-visitor": {
       }
     },
     "babel-jest": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz",
-      "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
+      "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==",
       "dev": true,
       "requires": {
-        "@jest/transform": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/transform": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "@types/babel__core": "^7.1.0",
         "babel-plugin-istanbul": "^5.1.0",
-        "babel-preset-jest": "^24.6.0",
+        "babel-preset-jest": "^24.9.0",
         "chalk": "^2.4.2",
         "slash": "^2.0.0"
       },
       "dependencies": {
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        },
         "slash": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
       }
     },
     "babel-plugin-istanbul": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz",
-      "integrity": "sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz",
+      "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==",
       "dev": true,
       "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
         "find-up": "^3.0.0",
         "istanbul-lib-instrument": "^3.3.0",
         "test-exclude": "^5.2.3"
           }
         },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
           "dev": true
         },
         "semver": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
-          "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         }
       }
     },
     "babel-plugin-jest-hoist": {
-      "version": "24.6.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz",
-      "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz",
+      "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==",
       "dev": true,
       "requires": {
         "@types/babel__traverse": "^7.0.6"
         "browserslist": "^3.2.6",
         "invariant": "^2.2.2",
         "semver": "^5.3.0"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "3.2.8",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+          "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+          "dev": true,
+          "requires": {
+            "caniuse-lite": "^1.0.30000844",
+            "electron-to-chromium": "^1.3.47"
+          }
+        }
       }
     },
     "babel-preset-jest": {
-      "version": "24.6.0",
-      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz",
-      "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
+      "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==",
       "dev": true,
       "requires": {
         "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
-        "babel-plugin-jest-hoist": "^24.6.0"
+        "babel-plugin-jest-hoist": "^24.9.0"
       }
     },
     "babel-runtime": {
       }
     },
     "base64-js": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
-      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
       "dev": true
     },
     "basic-auth": {
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
       "dev": true,
-      "optional": true,
       "requires": {
         "tweetnacl": "^0.14.3"
       }
       "dev": true
     },
     "binary-extensions": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
-      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
       "dev": true
     },
     "block-stream": {
       "dev": true,
       "requires": {
         "minimist": "^1.2.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
       }
     },
     "bluebird": {
-      "version": "3.5.5",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
-      "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
+      "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
       "dev": true
     },
     "bn.js": {
       }
     },
     "brfs": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz",
-      "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz",
+      "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==",
       "dev": true,
       "requires": {
         "quote-stream": "^1.0.1",
         "resolve": "^1.1.5",
-        "static-module": "^2.2.0",
+        "static-module": "^3.0.2",
         "through2": "^2.0.0"
       }
     },
       }
     },
     "browserslist": {
-      "version": "3.2.8",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
-      "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+      "version": "4.7.2",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz",
+      "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "^1.0.30000844",
-        "electron-to-chromium": "^1.3.47"
+        "caniuse-lite": "^1.0.30001004",
+        "electron-to-chromium": "^1.3.295",
+        "node-releases": "^1.1.38"
       }
     },
     "browserstack": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.2.tgz",
-      "integrity": "sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg==",
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz",
+      "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==",
       "dev": true,
       "requires": {
         "https-proxy-agent": "^2.2.1"
       }
     },
     "bser": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz",
-      "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
       "dev": true,
       "requires": {
         "node-int64": "^0.4.0"
       "dev": true
     },
     "buffer-from": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
-      "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
       "dev": true
     },
     "buffer-indexof": {
         "ssri": "^5.2.4",
         "unique-filename": "^1.1.0",
         "y18n": "^4.0.0"
+      },
+      "dependencies": {
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
+        }
       }
     },
     "cache-base": {
       "dev": true,
       "requires": {
         "callsites": "^2.0.0"
-      },
-      "dependencies": {
-        "callsites": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-          "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
-          "dev": true
-        }
       }
     },
     "caller-path": {
       }
     },
     "callsites": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz",
-      "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
       "dev": true
     },
     "camelcase": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-      "dev": true,
-      "optional": true
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
     },
     "camelcase-keys": {
       "version": "2.1.0",
       "requires": {
         "camelcase": "^2.0.0",
         "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+          "dev": true,
+          "optional": true
+        }
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30000865",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz",
-      "integrity": "sha512-vs79o1mOSKRGv/1pSkp4EXgl4ZviWeYReXw60XfacPU64uQWZwJT6vZNmxRF9O+6zu71sJwMxLK5JXxbzuVrLw==",
+      "version": "1.0.30001004",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001004.tgz",
+      "integrity": "sha512-3nfOR4O8Wa2RWoYfJkMtwRVOsK96TQ+eq57wd0iKaEWl8dwG4hKZ/g0MVBfCvysFvMLi9fQGR/DvozMdkEPl3g==",
       "dev": true
     },
     "canonical-path": {
       "dev": true
     },
     "chalk": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz",
-      "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==",
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
       "dev": true,
       "requires": {
-        "ansi-styles": "^3.1.0",
+        "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
-        "supports-color": "^4.0.0"
+        "supports-color": "^5.3.0"
       },
       "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        },
         "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
           "dev": true,
           "requires": {
-            "has-flag": "^2.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
       }
     },
     "chartjs-color": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz",
-      "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz",
+      "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==",
       "requires": {
-        "chartjs-color-string": "^0.5.0",
+        "chartjs-color-string": "^0.6.0",
         "color-convert": "^0.5.3"
       }
     },
     "chartjs-color-string": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz",
-      "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==",
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
+      "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
       "requires": {
         "color-name": "^1.0.0"
       }
       }
     },
     "chownr": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
-      "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
+      "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==",
       "dev": true
     },
     "chrome-trace-event": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
       "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "string-width": "^1.0.1",
         "strip-ansi": "^3.0.1",
         "wrap-ansi": "^2.0.0"
-      }
-    },
-    "clone": {
-      "version": "2.1.2",
+      },
+      "dependencies": {
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
       "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
       "dev": true
         "sprintf-js": "^1.1.1"
       },
       "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
         "sprintf-js": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz",
-          "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=",
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+          "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
           "dev": true
         }
       }
       "dev": true
     },
     "colors": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
-      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
       "dev": true
     },
     "combined-stream": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
-      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
       "dev": true,
       "requires": {
         "delayed-stream": "~1.0.0"
       }
     },
     "commander": {
-      "version": "2.16.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
-      "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
+      "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
       "dev": true
     },
     "commondir": {
       "dev": true
     },
     "component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
       "dev": true
     },
     "compressible": {
       "dev": true,
       "requires": {
         "mime-db": ">= 1.40.0 < 2"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        }
       }
     },
     "compression": {
       "dev": true
     },
     "convert-source-map": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
-      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
-      "dev": true
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
     },
     "cookie": {
       "version": "0.4.0",
       }
     },
     "cross-spawn": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
-      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-      "dev": true,
-      "optional": true,
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+      "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
       "requires": {
         "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
         "which": "^1.2.9"
       }
     },
       }
     },
     "css-selector-tokenizer": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
-      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
+      "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
       "dev": true,
       "requires": {
         "cssesc": "^0.1.0",
       "dev": true
     },
     "cssstyle": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.3.0.tgz",
-      "integrity": "sha512-wXsoRfsRfsLVNaVzoKdqvEmK/5PFaEXNspVT22Ots6K/cnJdpoDKuQFw+qlMiXnmaif1OgeC466X1zISgAOcGg==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
+      "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
       "dev": true,
       "requires": {
-        "cssom": "~0.3.6"
+        "cssom": "0.3.x"
       }
     },
     "currently-unhandled": {
       }
     },
     "cyclist": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
-      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
       "dev": true
     },
+    "d": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+      "dev": true,
+      "requires": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
       },
       "dependencies": {
         "whatwg-url": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
-          "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+          "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
           "dev": true,
           "requires": {
             "lodash.sortby": "^4.7.0",
       "dev": true
     },
     "deep-equal": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
-      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
-      "dev": true
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz",
+      "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==",
+      "dev": true,
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
     },
     "deep-is": {
       "version": "0.1.3",
       "dev": true
     },
     "diff-sequences": {
-      "version": "24.3.0",
-      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz",
-      "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz",
+      "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==",
       "dev": true
     },
     "diffie-hellman": {
       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
       "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
       "dev": true,
-      "optional": true,
       "requires": {
         "jsbn": "~0.1.0",
         "safer-buffer": "^2.1.0"
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.3.52",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz",
-      "integrity": "sha1-0tnxJwuko7lnuDHEDvcftNmrXOA=",
+      "version": "1.3.296",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.296.tgz",
+      "integrity": "sha512-s5hv+TSJSVRsxH190De66YHb50pBGTweT9XGWYu/LMR20KX6TsjFzObo36CjVAzM+PUeeKSBRtm/mISlCzeojQ==",
       "dev": true
     },
     "elliptic": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
-      "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz",
+      "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==",
       "dev": true,
       "requires": {
         "bn.js": "^4.4.0",
         "minimalistic-crypto-utils": "^1.0.0"
       }
     },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
       }
     },
     "end-of-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
-      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
       "dev": true,
       "requires": {
         "once": "^1.4.0"
       }
     },
     "es-abstract": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
-      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+      "version": "1.16.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
+      "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
       "dev": true,
       "requires": {
         "es-to-primitive": "^1.2.0",
         "function-bind": "^1.1.1",
         "has": "^1.0.3",
+        "has-symbols": "^1.0.0",
         "is-callable": "^1.1.4",
         "is-regex": "^1.0.4",
-        "object-keys": "^1.0.12"
+        "object-inspect": "^1.6.0",
+        "object-keys": "^1.1.1",
+        "string.prototype.trimleft": "^2.1.0",
+        "string.prototype.trimright": "^2.1.0"
+      },
+      "dependencies": {
+        "object-inspect": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
+          "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
+          "dev": true
+        }
       }
     },
     "es-to-primitive": {
         "is-symbol": "^1.0.2"
       }
     },
+    "es5-ext": {
+      "version": "0.10.51",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz",
+      "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==",
+      "dev": true,
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.1",
+        "next-tick": "^1.0.0"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-map": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-set": "~0.1.5",
+        "es6-symbol": "~3.1.1",
+        "event-emitter": "~0.3.5"
+      }
+    },
     "es6-promise": {
-      "version": "4.2.5",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
-      "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
       "dev": true
     },
     "es6-promisify": {
         "es6-promise": "^4.0.3"
       }
     },
+    "es6-set": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-symbol": "3.1.1",
+        "event-emitter": "~0.3.5"
+      },
+      "dependencies": {
+        "es6-symbol": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+          "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+          "dev": true,
+          "requires": {
+            "d": "1",
+            "es5-ext": "~0.10.14"
+          }
+        }
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz",
+      "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==",
+      "dev": true,
+      "requires": {
+        "d": "^1.0.1",
+        "es5-ext": "^0.10.51"
+      }
+    },
     "escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
       }
     },
     "estraverse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "estree-is-function": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz",
+      "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==",
       "dev": true
     },
     "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
       "dev": true
     },
     "etag": {
       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
       "dev": true
     },
+    "event-emitter": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
     "event-stream": {
       "version": "3.3.4",
       "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
       }
     },
     "eventemitter3": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
-      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
+      "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==",
       "dev": true
     },
     "events": {
         "p-finally": "^1.0.0",
         "signal-exit": "^3.0.0",
         "strip-eof": "^1.0.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        }
       }
     },
     "exit": {
       }
     },
     "expect": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz",
-      "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz",
+      "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "ansi-styles": "^3.2.0",
-        "jest-get-type": "^24.8.0",
-        "jest-matcher-utils": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-regex-util": "^24.3.0"
-      },
-      "dependencies": {
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        }
+        "jest-get-type": "^24.9.0",
+        "jest-matcher-utils": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-regex-util": "^24.9.0"
       }
     },
     "express": {
       }
     },
     "external-editor": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
-      "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
       "dev": true,
       "requires": {
         "chardet": "^0.7.0",
         "iconv-lite": "^0.4.24",
         "tmp": "^0.0.33"
-      },
-      "dependencies": {
-        "tmp": {
-          "version": "0.0.33",
-          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-          "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-          "dev": true,
-          "requires": {
-            "os-tmpdir": "~1.0.2"
-          }
-        }
       }
     },
     "extglob": {
       }
     },
     "fast-deep-equal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
-      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
       "dev": true
     },
     "fast-glob": {
       "dev": true
     },
     "fastparse": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
-      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
       "dev": true
     },
     "faye-websocket": {
       }
     },
     "follow-redirects": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
-      "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz",
+      "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==",
       "dev": true,
       "requires": {
-        "debug": "^3.2.6"
+        "debug": "^3.0.0"
       },
       "dependencies": {
         "debug": {
         "unicode-trie": "^0.3.0"
       },
       "dependencies": {
+        "brfs": {
+          "version": "1.6.1",
+          "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz",
+          "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==",
+          "dev": true,
+          "requires": {
+            "quote-stream": "^1.0.1",
+            "resolve": "^1.1.5",
+            "static-module": "^2.2.0",
+            "through2": "^2.0.0"
+          }
+        },
         "clone": {
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
           "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
           "dev": true
+        },
+        "magic-string": {
+          "version": "0.22.5",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
+          "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
+          "dev": true,
+          "requires": {
+            "vlq": "^0.2.2"
+          }
+        },
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+          "dev": true
+        },
+        "static-module": {
+          "version": "2.2.5",
+          "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz",
+          "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==",
+          "dev": true,
+          "requires": {
+            "concat-stream": "~1.6.0",
+            "convert-source-map": "^1.5.1",
+            "duplexer2": "~0.1.4",
+            "escodegen": "~1.9.0",
+            "falafel": "^2.1.0",
+            "has": "^1.0.1",
+            "magic-string": "^0.22.4",
+            "merge-source-map": "1.0.4",
+            "object-inspect": "~1.4.0",
+            "quote-stream": "~1.0.2",
+            "readable-stream": "~2.3.3",
+            "shallow-copy": "~0.0.1",
+            "static-eval": "^2.0.0",
+            "through2": "~2.0.3"
+          }
+        },
+        "unicode-trie": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
+          "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
+          "dev": true,
+          "requires": {
+            "pako": "^0.2.5",
+            "tiny-inflate": "^1.0.0"
+          }
         }
       }
     },
       "integrity": "sha512-fFWz7LqRGMbyewY0Vxclw4712Cy+6Vd+1RAIJb7XY5qHpZi8BAA+Ue5sr4jAlDSI1+AD4b5WYl99NrGMtSaPzw=="
     },
     "form-data": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
-      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
       "dev": true,
       "requires": {
         "asynckit": "^0.4.0",
-        "combined-stream": "1.0.6",
+        "combined-stream": "^1.0.6",
         "mime-types": "^2.1.12"
       }
     },
       }
     },
     "fs-extra": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
-      "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
       "dev": true,
       "requires": {
-        "graceful-fs": "^4.1.2",
+        "graceful-fs": "^4.2.0",
         "jsonfile": "^4.0.0",
         "universalify": "^0.1.0"
       }
     },
     "fs-minipass": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz",
-      "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==",
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+      "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
       "dev": true,
       "requires": {
-        "minipass": "^2.2.1"
+        "minipass": "^2.6.0"
       }
     },
     "fs-write-stream-atomic": {
           "dev": true,
           "optional": true
         },
-        "nan": {
-          "version": "2.14.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-          "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-          "dev": true,
-          "optional": true
-        },
         "needle": {
           "version": "2.3.0",
           "bundled": true,
         "string-width": "^1.0.1",
         "strip-ansi": "^3.0.1",
         "wide-align": "^1.1.0"
+      },
+      "dependencies": {
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        }
       }
     },
     "gaze": {
       "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
       "dev": true
     },
+    "get-assigned-identifiers": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
+      "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
+      "dev": true
+    },
     "get-caller-file": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
       }
     },
     "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
+      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
       "dev": true
     },
     "growly": {
       "dev": true
     },
     "handlebars": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
-      "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
+      "version": "4.4.5",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.5.tgz",
+      "integrity": "sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg==",
       "dev": true,
       "requires": {
         "neo-async": "^2.6.0",
       "dev": true
     },
     "har-validator": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
-      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
       "dev": true,
       "requires": {
-        "ajv": "^5.1.0",
+        "ajv": "^6.5.5",
         "har-schema": "^2.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "5.5.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-          "dev": true,
-          "requires": {
-            "co": "^4.6.0",
-            "fast-deep-equal": "^1.0.0",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0"
-          }
-        }
       }
     },
     "has": {
       }
     },
     "hosted-git-info": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
-      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
       "dev": true
     },
     "hpack.js": {
         "chalk": "^2.4.1",
         "commander": "^2.12.2",
         "glob": "^7.1.2"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "2.4.1",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
-          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        }
       }
     },
     "htmlparser2": {
         "setprototypeof": "1.1.1",
         "statuses": ">= 1.5.0 < 2",
         "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
       }
     },
     "http-parser-js": {
       "dev": true
     },
     "http-proxy": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
-      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "version": "1.18.0",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
+      "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
       "dev": true,
       "requires": {
-        "eventemitter3": "^3.0.0",
+        "eventemitter3": "^4.0.0",
         "follow-redirects": "^1.0.0",
         "requires-port": "^1.0.0"
       }
       "dev": true
     },
     "https-proxy-agent": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
-      "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.3.tgz",
+      "integrity": "sha512-Ytgnz23gm2DVftnzqRRz2dOXZbGd2uiajSw/95bPp6v53zPRspQjLm/AfBgqbJ2qfeRXWIOMVLpp86+/5yX39Q==",
       "dev": true,
       "requires": {
-        "agent-base": "^4.1.0",
+        "agent-base": "^4.3.0",
         "debug": "^3.1.0"
       },
       "dependencies": {
           }
         },
         "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         }
       }
       }
     },
     "i18next": {
-      "version": "17.0.6",
-      "resolved": "https://registry.npmjs.org/i18next/-/i18next-17.0.6.tgz",
-      "integrity": "sha512-bdNhzhcM6RG5m82RypVguCrAQNie/ycxW0Q5C6K9UDWD5hqApZfdJFbj4Ikz9jxIR+Ja1eg0yCQLhlCT+opwIg==",
+      "version": "17.3.1",
+      "resolved": "https://registry.npmjs.org/i18next/-/i18next-17.3.1.tgz",
+      "integrity": "sha512-4nY+yaENaoZKmpbiDXPzucVHCN3hN9Z9Zk7LyQXVOKVIpnYOJ3L/yxHJlBPtJDq3PGgjFwA0QBFm/26Z0iDT5A==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.3.1"
       "dev": true
     },
     "ignore-walk": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
-      "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+      "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
       "dev": true,
       "requires": {
         "minimatch": "^3.0.4"
           }
         },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
       }
     },
     "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
       "version": "1.3.5",
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^3.0.0"
-              }
-            }
-          }
-        },
         "strip-ansi": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
           "dev": true,
           "requires": {
             "ansi-regex": "^4.1.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-              "dev": true
-            }
           }
         }
       }
         }
       }
     },
+    "is-arguments": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+      "dev": true
+    },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "dev": true
     },
-    "is-builtin-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
-      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
-      "dev": true,
-      "requires": {
-        "builtin-modules": "^1.0.0"
-      }
-    },
     "is-callable": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
       "dev": true
     },
     "is-glob": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
       "dev": true,
       "requires": {
         "is-extglob": "^2.1.1"
             "json-schema-traverse": "^0.3.0"
           }
         },
+        "fast-deep-equal": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+          "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+          "dev": true
+        },
+        "json-schema-traverse": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+          "dev": true
+        },
         "schema-utils": {
           "version": "0.3.0",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
           "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
           "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
           "dev": true
-        },
-        "semver": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
         }
       }
     },
             "ms": "^2.1.1"
           }
         },
-        "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
         "istanbul-lib-coverage": {
           "version": "2.0.5",
           "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
           "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
           "dev": true
         },
-        "rimraf": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "semver": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "dev": true,
       "requires": {
         "colors": "1.1.2"
+      },
+      "dependencies": {
+        "colors": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+          "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+          "dev": true
+        }
       }
     },
     "jasminewd2": {
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
         "camelcase": {
           "dev": true
         },
         "cliui": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-          "dev": true,
-          "requires": {
-            "string-width": "^2.1.1",
-            "strip-ansi": "^4.0.0",
-            "wrap-ansi": "^2.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "6.0.5",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-          "dev": true,
-          "requires": {
-            "nice-try": "^1.0.4",
-            "path-key": "^2.0.1",
-            "semver": "^5.5.0",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "execa": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
           "dev": true,
           "requires": {
-            "cross-spawn": "^6.0.0",
-            "get-stream": "^4.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
           }
         },
         "find-up": {
             "locate-path": "^3.0.0"
           }
         },
-        "get-stream": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "invert-kv": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
           "dev": true
         },
         "is-fullwidth-code-point": {
           "dev": true
         },
         "jest-cli": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz",
-          "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==",
+          "version": "24.9.0",
+          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz",
+          "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==",
           "dev": true,
           "requires": {
-            "@jest/core": "^24.8.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
+            "@jest/core": "^24.9.0",
+            "@jest/test-result": "^24.9.0",
+            "@jest/types": "^24.9.0",
             "chalk": "^2.0.1",
             "exit": "^0.1.2",
             "import-local": "^2.0.0",
             "is-ci": "^2.0.0",
-            "jest-config": "^24.8.0",
-            "jest-util": "^24.8.0",
-            "jest-validate": "^24.8.0",
+            "jest-config": "^24.9.0",
+            "jest-util": "^24.9.0",
+            "jest-validate": "^24.9.0",
             "prompts": "^2.0.1",
             "realpath-native": "^1.1.0",
-            "yargs": "^12.0.2"
-          }
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "lcid": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-          "dev": true,
-          "requires": {
-            "invert-kv": "^2.0.0"
+            "yargs": "^13.3.0"
           }
         },
         "locate-path": {
             "path-exists": "^3.0.0"
           }
         },
-        "mem": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-          "dev": true,
-          "requires": {
-            "map-age-cleaner": "^0.1.1",
-            "mimic-fn": "^2.0.0",
-            "p-is-promise": "^2.0.0"
-          }
-        },
-        "mimic-fn": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
-        },
-        "os-locale": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-          "dev": true,
-          "requires": {
-            "execa": "^1.0.0",
-            "lcid": "^2.0.0",
-            "mem": "^4.0.0"
-          }
-        },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
           "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
           "dev": true
         },
-        "pump": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-          "dev": true,
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
-        },
-        "slash": {
+        "require-main-filename": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
           "dev": true
         },
         "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
           "dev": true,
           "requires": {
+            "emoji-regex": "^7.0.1",
             "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
+            "strip-ansi": "^5.1.0"
           }
         },
         "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^3.0.0"
+            "ansi-regex": "^4.1.0"
           }
         },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
+        },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
           "dev": true
         },
         "yargs": {
-          "version": "12.0.5",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-          "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+          "version": "13.3.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+          "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
           "dev": true,
           "requires": {
-            "cliui": "^4.0.0",
-            "decamelize": "^1.2.0",
+            "cliui": "^5.0.0",
             "find-up": "^3.0.0",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^3.0.0",
+            "get-caller-file": "^2.0.1",
             "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
+            "require-main-filename": "^2.0.0",
             "set-blocking": "^2.0.0",
-            "string-width": "^2.0.0",
+            "string-width": "^3.0.0",
             "which-module": "^2.0.0",
-            "y18n": "^3.2.1 || ^4.0.0",
-            "yargs-parser": "^11.1.1"
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.1"
           }
         },
         "yargs-parser": {
-          "version": "11.1.1",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-          "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+          "version": "13.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+          "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
           "dev": true,
           "requires": {
             "camelcase": "^5.0.0",
       "dev": true
     },
     "jest-changed-files": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz",
-      "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz",
+      "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "execa": "^1.0.0",
         "throat": "^4.0.0"
       },
       }
     },
     "jest-config": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz",
-      "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz",
+      "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==",
       "dev": true,
       "requires": {
         "@babel/core": "^7.1.0",
-        "@jest/test-sequencer": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "babel-jest": "^24.8.0",
+        "@jest/test-sequencer": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "babel-jest": "^24.9.0",
         "chalk": "^2.0.1",
         "glob": "^7.1.1",
-        "jest-environment-jsdom": "^24.8.0",
-        "jest-environment-node": "^24.8.0",
-        "jest-get-type": "^24.8.0",
-        "jest-jasmine2": "^24.8.0",
+        "jest-environment-jsdom": "^24.9.0",
+        "jest-environment-node": "^24.9.0",
+        "jest-get-type": "^24.9.0",
+        "jest-jasmine2": "^24.9.0",
         "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.8.0",
-        "jest-util": "^24.8.0",
-        "jest-validate": "^24.8.0",
+        "jest-resolve": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "jest-validate": "^24.9.0",
         "micromatch": "^3.1.10",
-        "pretty-format": "^24.8.0",
+        "pretty-format": "^24.9.0",
         "realpath-native": "^1.1.0"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-diff": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz",
-      "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz",
+      "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==",
       "dev": true,
       "requires": {
         "chalk": "^2.0.1",
-        "diff-sequences": "^24.3.0",
-        "jest-get-type": "^24.8.0",
-        "pretty-format": "^24.8.0"
+        "diff-sequences": "^24.9.0",
+        "jest-get-type": "^24.9.0",
+        "pretty-format": "^24.9.0"
       }
     },
     "jest-docblock": {
-      "version": "24.3.0",
-      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz",
-      "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz",
+      "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==",
       "dev": true,
       "requires": {
         "detect-newline": "^2.1.0"
       }
     },
     "jest-each": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz",
-      "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz",
+      "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "chalk": "^2.0.1",
-        "jest-get-type": "^24.8.0",
-        "jest-util": "^24.8.0",
-        "pretty-format": "^24.8.0"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "jest-get-type": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "pretty-format": "^24.9.0"
       }
     },
     "jest-environment-jsdom": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz",
-      "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz",
+      "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==",
       "dev": true,
       "requires": {
-        "@jest/environment": "^24.8.0",
-        "@jest/fake-timers": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "jest-mock": "^24.8.0",
-        "jest-util": "^24.8.0",
+        "@jest/environment": "^24.9.0",
+        "@jest/fake-timers": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "jest-mock": "^24.9.0",
+        "jest-util": "^24.9.0",
         "jsdom": "^11.5.1"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-environment-node": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz",
-      "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz",
+      "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==",
       "dev": true,
       "requires": {
-        "@jest/environment": "^24.8.0",
-        "@jest/fake-timers": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "jest-mock": "^24.8.0",
-        "jest-util": "^24.8.0"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "@jest/environment": "^24.9.0",
+        "@jest/fake-timers": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "jest-mock": "^24.9.0",
+        "jest-util": "^24.9.0"
       }
     },
     "jest-get-type": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz",
-      "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
+      "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
       "dev": true
     },
     "jest-haste-map": {
-      "version": "24.8.1",
-      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz",
-      "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+      "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "anymatch": "^2.0.0",
         "fb-watchman": "^2.0.0",
         "fsevents": "^1.2.7",
         "graceful-fs": "^4.1.15",
         "invariant": "^2.2.4",
-        "jest-serializer": "^24.4.0",
-        "jest-util": "^24.8.0",
-        "jest-worker": "^24.6.0",
+        "jest-serializer": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "jest-worker": "^24.9.0",
         "micromatch": "^3.1.10",
         "sane": "^4.0.3",
         "walker": "^1.0.7"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-jasmine2": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz",
-      "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz",
+      "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==",
       "dev": true,
       "requires": {
         "@babel/traverse": "^7.1.0",
-        "@jest/environment": "^24.8.0",
-        "@jest/test-result": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/environment": "^24.9.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "chalk": "^2.0.1",
         "co": "^4.6.0",
-        "expect": "^24.8.0",
+        "expect": "^24.9.0",
         "is-generator-fn": "^2.0.0",
-        "jest-each": "^24.8.0",
-        "jest-matcher-utils": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-runtime": "^24.8.0",
-        "jest-snapshot": "^24.8.0",
-        "jest-util": "^24.8.0",
-        "pretty-format": "^24.8.0",
+        "jest-each": "^24.9.0",
+        "jest-matcher-utils": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-runtime": "^24.9.0",
+        "jest-snapshot": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "pretty-format": "^24.9.0",
         "throat": "^4.0.0"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-leak-detector": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz",
-      "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz",
+      "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==",
       "dev": true,
       "requires": {
-        "pretty-format": "^24.8.0"
+        "jest-get-type": "^24.9.0",
+        "pretty-format": "^24.9.0"
       }
     },
     "jest-matcher-utils": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz",
-      "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz",
+      "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==",
       "dev": true,
       "requires": {
         "chalk": "^2.0.1",
-        "jest-diff": "^24.8.0",
-        "jest-get-type": "^24.8.0",
-        "pretty-format": "^24.8.0"
+        "jest-diff": "^24.9.0",
+        "jest-get-type": "^24.9.0",
+        "pretty-format": "^24.9.0"
+      }
+    },
+    "jest-message-util": {
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+      "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "@types/stack-utils": "^1.0.1",
+        "chalk": "^2.0.1",
+        "micromatch": "^3.1.10",
+        "slash": "^2.0.0",
+        "stack-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "slash": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+          "dev": true
+        }
       }
     },
     "jest-mock": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz",
-      "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+      "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0"
+        "@jest/types": "^24.9.0"
       }
     },
     "jest-pnp-resolver": {
       }
     },
     "jest-regex-util": {
-      "version": "24.3.0",
-      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz",
-      "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz",
+      "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==",
       "dev": true
     },
     "jest-resolve": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz",
-      "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz",
+      "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "browser-resolve": "^1.11.3",
         "chalk": "^2.0.1",
         "jest-pnp-resolver": "^1.2.1",
       }
     },
     "jest-resolve-dependencies": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz",
-      "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz",
+      "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "jest-regex-util": "^24.3.0",
-        "jest-snapshot": "^24.8.0"
+        "jest-snapshot": "^24.9.0"
       }
     },
     "jest-runner": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz",
-      "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz",
+      "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==",
       "dev": true,
       "requires": {
         "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.8.0",
-        "@jest/test-result": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/environment": "^24.9.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "chalk": "^2.4.2",
         "exit": "^0.1.2",
         "graceful-fs": "^4.1.15",
-        "jest-config": "^24.8.0",
+        "jest-config": "^24.9.0",
         "jest-docblock": "^24.3.0",
-        "jest-haste-map": "^24.8.0",
-        "jest-jasmine2": "^24.8.0",
-        "jest-leak-detector": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-resolve": "^24.8.0",
-        "jest-runtime": "^24.8.0",
-        "jest-util": "^24.8.0",
+        "jest-haste-map": "^24.9.0",
+        "jest-jasmine2": "^24.9.0",
+        "jest-leak-detector": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-resolve": "^24.9.0",
+        "jest-runtime": "^24.9.0",
+        "jest-util": "^24.9.0",
         "jest-worker": "^24.6.0",
         "source-map-support": "^0.5.6",
         "throat": "^4.0.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-runtime": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz",
-      "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz",
+      "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==",
       "dev": true,
       "requires": {
         "@jest/console": "^24.7.1",
-        "@jest/environment": "^24.8.0",
+        "@jest/environment": "^24.9.0",
         "@jest/source-map": "^24.3.0",
-        "@jest/transform": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "@types/yargs": "^12.0.2",
+        "@jest/transform": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "@types/yargs": "^13.0.0",
         "chalk": "^2.0.1",
         "exit": "^0.1.2",
         "glob": "^7.1.3",
         "graceful-fs": "^4.1.15",
-        "jest-config": "^24.8.0",
-        "jest-haste-map": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-mock": "^24.8.0",
+        "jest-config": "^24.9.0",
+        "jest-haste-map": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-mock": "^24.9.0",
         "jest-regex-util": "^24.3.0",
-        "jest-resolve": "^24.8.0",
-        "jest-snapshot": "^24.8.0",
-        "jest-util": "^24.8.0",
-        "jest-validate": "^24.8.0",
+        "jest-resolve": "^24.9.0",
+        "jest-snapshot": "^24.9.0",
+        "jest-util": "^24.9.0",
+        "jest-validate": "^24.9.0",
         "realpath-native": "^1.1.0",
         "slash": "^2.0.0",
         "strip-bom": "^3.0.0",
-        "yargs": "^12.0.2"
+        "yargs": "^13.3.0"
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
         "camelcase": {
           "dev": true
         },
         "cliui": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-          "dev": true,
-          "requires": {
-            "string-width": "^2.1.1",
-            "strip-ansi": "^4.0.0",
-            "wrap-ansi": "^2.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "6.0.5",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-          "dev": true,
-          "requires": {
-            "nice-try": "^1.0.4",
-            "path-key": "^2.0.1",
-            "semver": "^5.5.0",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "execa": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
           "dev": true,
           "requires": {
-            "cross-spawn": "^6.0.0",
-            "get-stream": "^4.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
           }
         },
         "find-up": {
             "locate-path": "^3.0.0"
           }
         },
-        "get-stream": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+          "dev": true
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "inherits": "2",
             "minimatch": "^3.0.4",
             "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "invert-kv": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
-        },
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
+            "path-is-absolute": "^1.0.0"
           }
         },
-        "lcid": {
+        "is-fullwidth-code-point": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-          "dev": true,
-          "requires": {
-            "invert-kv": "^2.0.0"
-          }
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
         },
         "locate-path": {
           "version": "3.0.0",
             "path-exists": "^3.0.0"
           }
         },
-        "mem": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-          "dev": true,
-          "requires": {
-            "map-age-cleaner": "^0.1.1",
-            "mimic-fn": "^2.0.0",
-            "p-is-promise": "^2.0.0"
-          }
-        },
-        "mimic-fn": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
-        },
-        "os-locale": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-          "dev": true,
-          "requires": {
-            "execa": "^1.0.0",
-            "lcid": "^2.0.0",
-            "mem": "^4.0.0"
-          }
-        },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
           "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
           "dev": true
         },
-        "pump": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-          "dev": true,
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+          "dev": true
         },
         "slash": {
           "version": "2.0.0",
           "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
           "dev": true
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
           "dev": true,
           "requires": {
+            "emoji-regex": "^7.0.1",
             "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
+            "strip-ansi": "^5.1.0"
           }
         },
         "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^3.0.0"
+            "ansi-regex": "^4.1.0"
           }
         },
         "strip-bom": {
           "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
+        },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
           "dev": true
         },
         "yargs": {
-          "version": "12.0.5",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-          "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+          "version": "13.3.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+          "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
           "dev": true,
           "requires": {
-            "cliui": "^4.0.0",
-            "decamelize": "^1.2.0",
+            "cliui": "^5.0.0",
             "find-up": "^3.0.0",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^3.0.0",
+            "get-caller-file": "^2.0.1",
             "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
+            "require-main-filename": "^2.0.0",
             "set-blocking": "^2.0.0",
-            "string-width": "^2.0.0",
+            "string-width": "^3.0.0",
             "which-module": "^2.0.0",
-            "y18n": "^3.2.1 || ^4.0.0",
-            "yargs-parser": "^11.1.1"
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.1"
           }
         },
         "yargs-parser": {
-          "version": "11.1.1",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-          "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+          "version": "13.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+          "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
           "dev": true,
           "requires": {
             "camelcase": "^5.0.0",
       }
     },
     "jest-serializer": {
-      "version": "24.4.0",
-      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz",
-      "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+      "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
       "dev": true
     },
     "jest-silent-reporter": {
       "requires": {
         "chalk": "^2.3.1",
         "jest-util": "^24.0.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        }
       }
     },
     "jest-snapshot": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz",
-      "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz",
+      "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==",
       "dev": true,
       "requires": {
         "@babel/types": "^7.0.0",
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "chalk": "^2.0.1",
-        "expect": "^24.8.0",
-        "jest-diff": "^24.8.0",
-        "jest-matcher-utils": "^24.8.0",
-        "jest-message-util": "^24.8.0",
-        "jest-resolve": "^24.8.0",
+        "expect": "^24.9.0",
+        "jest-diff": "^24.9.0",
+        "jest-get-type": "^24.9.0",
+        "jest-matcher-utils": "^24.9.0",
+        "jest-message-util": "^24.9.0",
+        "jest-resolve": "^24.9.0",
         "mkdirp": "^0.5.1",
         "natural-compare": "^1.4.0",
-        "pretty-format": "^24.8.0",
-        "semver": "^5.5.0"
+        "pretty-format": "^24.9.0",
+        "semver": "^6.2.0"
       },
       "dependencies": {
-        "jest-message-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
-          "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "@types/stack-utils": "^1.0.1",
-            "chalk": "^2.0.1",
-            "micromatch": "^3.1.10",
-            "slash": "^2.0.0",
-            "stack-utils": "^1.0.1"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         }
       }
     },
     "jest-util": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-      "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+      "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
       "dev": true,
       "requires": {
-        "@jest/console": "^24.7.1",
-        "@jest/fake-timers": "^24.8.0",
-        "@jest/source-map": "^24.3.0",
-        "@jest/test-result": "^24.8.0",
-        "@jest/types": "^24.8.0",
+        "@jest/console": "^24.9.0",
+        "@jest/fake-timers": "^24.9.0",
+        "@jest/source-map": "^24.9.0",
+        "@jest/test-result": "^24.9.0",
+        "@jest/types": "^24.9.0",
         "callsites": "^3.0.0",
         "chalk": "^2.0.1",
         "graceful-fs": "^4.1.15",
         "source-map": "^0.6.0"
       },
       "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
           "dev": true
         },
         "slash": {
       }
     },
     "jest-validate": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz",
-      "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
+      "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
-        "camelcase": "^5.0.0",
+        "@jest/types": "^24.9.0",
+        "camelcase": "^5.3.1",
         "chalk": "^2.0.1",
-        "jest-get-type": "^24.8.0",
-        "leven": "^2.1.0",
-        "pretty-format": "^24.8.0"
+        "jest-get-type": "^24.9.0",
+        "leven": "^3.1.0",
+        "pretty-format": "^24.9.0"
       },
       "dependencies": {
         "camelcase": {
       }
     },
     "jest-watcher": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz",
-      "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz",
+      "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==",
       "dev": true,
       "requires": {
-        "@jest/test-result": "^24.8.0",
-        "@jest/types": "^24.8.0",
-        "@types/yargs": "^12.0.9",
+        "@jest/test-result": "^24.9.0",
+        "@jest/types": "^24.9.0",
+        "@types/yargs": "^13.0.0",
         "ansi-escapes": "^3.0.0",
         "chalk": "^2.0.1",
-        "jest-util": "^24.8.0",
+        "jest-util": "^24.9.0",
         "string-length": "^2.0.0"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
-        "jest-util": {
-          "version": "24.8.0",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
-          "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
-          "dev": true,
-          "requires": {
-            "@jest/console": "^24.7.1",
-            "@jest/fake-timers": "^24.8.0",
-            "@jest/source-map": "^24.3.0",
-            "@jest/test-result": "^24.8.0",
-            "@jest/types": "^24.8.0",
-            "callsites": "^3.0.0",
-            "chalk": "^2.0.1",
-            "graceful-fs": "^4.1.15",
-            "is-ci": "^2.0.0",
-            "mkdirp": "^0.5.1",
-            "slash": "^2.0.0",
-            "source-map": "^0.6.0"
-          }
-        },
-        "slash": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
-          "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "jest-worker": {
-      "version": "24.6.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
-      "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
       "dev": true,
       "requires": {
-        "merge-stream": "^1.0.1",
+        "merge-stream": "^2.0.0",
         "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
       }
     },
     "jest-zone-patch": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "jsdom": {
       "version": "11.12.0",
       "dev": true
     },
     "json-schema-traverse": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true
     },
     "json-stringify-safe": {
       "dev": true
     },
     "json5": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
-      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-      "dev": true
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      }
     },
     "jsonfile": {
       "version": "4.0.0",
       }
     },
     "leven": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
-      "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
       "dev": true
     },
     "levn": {
       }
     },
     "linebreak": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-0.3.0.tgz",
-      "integrity": "sha1-BSZICmLAW9Z58+nZmDDgnGp9DtY=",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.0.2.tgz",
+      "integrity": "sha512-bJwSRsJeAmaZYnkcwl5sCQNfSDAhBuXxb6L27tb+qkBRtUQSSTUa5bcgCPD6hFEkRNlpWHfK7nFMmcANU7ZP1w==",
       "dev": true,
       "requires": {
         "base64-js": "0.0.8",
-        "brfs": "^1.3.0",
-        "unicode-trie": "^0.3.0"
+        "brfs": "^2.0.2",
+        "unicode-trie": "^1.0.0"
       },
       "dependencies": {
         "base64-js": {
       "dev": true,
       "requires": {
         "chokidar": "^2.0.4",
-        "colors": "^1.3.3",
+        "colors": "^1.4.0",
         "connect": "^3.6.6",
         "cors": "^2.8.5",
         "event-stream": "3.3.4",
       },
       "dependencies": {
         "colors": {
-          "version": "1.3.3",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
-          "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+          "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
           "dev": true
         },
         "faye-websocket": {
         "big.js": "^5.2.2",
         "emojis-list": "^2.0.0",
         "json5": "^1.0.1"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
       }
     },
     "locate-path": {
       "dev": true
     },
     "loglevel": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz",
-      "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==",
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz",
+      "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==",
       "dev": true
     },
     "loose-envify": {
       }
     },
     "lru-cache": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
-      "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
       "requires": {
         "pseudomap": "^1.0.2",
         "yallist": "^2.1.2"
       }
     },
     "lunr": {
-      "version": "2.3.6",
-      "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.6.tgz",
-      "integrity": "sha512-swStvEyDqQ85MGpABCMBclZcLI/pBIlu8FFDtmX197+oEgKloJ67QnB+Tidh0340HmLMs39c4GrkPY3cmkXp6Q==",
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz",
+      "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==",
       "dev": true
     },
     "macos-release": {
       "dev": true
     },
     "magic-string": {
-      "version": "0.25.2",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz",
-      "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==",
+      "version": "0.25.4",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
+      "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
       "dev": true,
       "requires": {
         "sourcemap-codec": "^1.4.4"
           }
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "path-is-absolute": "^1.0.0"
           }
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "lru-cache": {
           "version": "5.1.1",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
             "once": "^1.3.1"
           }
         },
-        "rimraf": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
         "ssri": {
           "version": "6.0.1",
           "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
             "figgy-pudding": "^3.5.1"
           }
         },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
+        },
         "yallist": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
           "dev": true
         }
       }
         "readable-stream": "^2.0.1"
       }
     },
+    "memorystream": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+      "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+      "dev": true
+    },
     "meow": {
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
         "read-pkg-up": "^1.0.1",
         "redent": "^1.0.0",
         "trim-newlines": "^1.0.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true,
-          "optional": true
-        }
       }
     },
     "merge-descriptors": {
       "dev": true,
       "requires": {
         "source-map": "^0.5.6"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
       }
     },
     "merge-stream": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
-      "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.0.1"
-      }
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
     },
     "merge2": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
-      "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
+      "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
       "dev": true
     },
     "methods": {
       "dev": true
     },
     "mime-db": {
-      "version": "1.35.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
-      "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
+      "version": "1.40.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+      "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.19",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
-      "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
+      "version": "2.1.24",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+      "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
       "dev": true,
       "requires": {
-        "mime-db": "~1.35.0"
+        "mime-db": "1.40.0"
       }
     },
     "mimic-fn": {
       }
     },
     "minimist": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
       "dev": true
     },
     "minipass": {
-      "version": "2.3.5",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
-      "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
+      "version": "2.9.0",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
       "dev": true,
       "requires": {
         "safe-buffer": "^5.1.2",
       },
       "dependencies": {
         "yallist": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
           "dev": true
         }
       }
     },
     "minizlib": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
-      "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
       "dev": true,
       "requires": {
-        "minipass": "^2.2.1"
+        "minipass": "^2.9.0"
       }
     },
     "mississippi": {
       "dev": true,
       "requires": {
         "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
       }
     },
     "moment": {
       "dev": true
     },
     "nan": {
-      "version": "2.10.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
-      "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+      "version": "2.14.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
       "dev": true,
       "optional": true
     },
       "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
       "dev": true
     },
+    "next-tick": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+      "dev": true
+    },
     "ng-block-ui": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/ng-block-ui/-/ng-block-ui-2.1.1.tgz",
       }
     },
     "node-forge": {
-      "version": "0.7.5",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
-      "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+      "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
       "dev": true
     },
     "node-gyp": {
         "url": "^0.11.0",
         "util": "^0.11.0",
         "vm-browserify": "^1.0.1"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true
-        }
       }
     },
     "node-modules-regexp": {
       "dev": true
     },
     "node-notifier": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz",
-      "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==",
+      "version": "5.4.3",
+      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz",
+      "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==",
       "dev": true,
       "requires": {
         "growly": "^1.3.0",
       }
     },
     "node-releases": {
-      "version": "1.1.25",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz",
-      "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==",
+      "version": "1.1.39",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz",
+      "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==",
       "dev": true,
       "requires": {
-        "semver": "^5.3.0"
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
       }
     },
     "node-sass": {
           "dev": true,
           "optional": true
         },
-        "aws4": {
-          "version": "1.8.0",
-          "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
-          "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
-          "dev": true,
-          "optional": true
-        },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
             "supports-color": "^2.0.0"
           }
         },
-        "har-validator": {
-          "version": "5.1.3",
-          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
-          "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ajv": "^6.5.5",
-            "har-schema": "^2.0.0"
-          }
-        },
-        "nan": {
-          "version": "2.14.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-          "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-          "dev": true,
-          "optional": true
-        },
-        "oauth-sign": {
-          "version": "0.9.0",
-          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-          "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-          "dev": true,
-          "optional": true
-        },
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true,
-          "optional": true
-        },
-        "request": {
-          "version": "2.88.0",
-          "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
-          "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+        "cross-spawn": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
           "dev": true,
           "optional": true,
           "requires": {
-            "aws-sign2": "~0.7.0",
-            "aws4": "^1.8.0",
-            "caseless": "~0.12.0",
-            "combined-stream": "~1.0.6",
-            "extend": "~3.0.2",
-            "forever-agent": "~0.6.1",
-            "form-data": "~2.3.2",
-            "har-validator": "~5.1.0",
-            "http-signature": "~1.2.0",
-            "is-typedarray": "~1.0.0",
-            "isstream": "~0.1.2",
-            "json-stringify-safe": "~5.0.1",
-            "mime-types": "~2.1.19",
-            "oauth-sign": "~0.9.0",
-            "performance-now": "^2.1.0",
-            "qs": "~6.5.2",
-            "safe-buffer": "^5.1.2",
-            "tough-cookie": "~2.4.3",
-            "tunnel-agent": "^0.6.0",
-            "uuid": "^3.3.2"
+            "lru-cache": "^4.0.1",
+            "which": "^1.2.9"
           }
         },
         "supports-color": {
           "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
           "dev": true,
           "optional": true
-        },
-        "tough-cookie": {
-          "version": "2.4.3",
-          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
-          "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "psl": "^1.1.24",
-            "punycode": "^1.4.1"
-          }
         }
       }
     },
       }
     },
     "normalize-package-data": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
-      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
       "dev": true,
       "requires": {
         "hosted-git-info": "^2.1.4",
-        "is-builtin-module": "^1.0.0",
+        "resolve": "^1.10.0",
         "semver": "2 || 3 || 4 || 5",
         "validate-npm-package-license": "^3.0.1"
       }
       }
     },
     "npm-packlist": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz",
-      "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==",
+      "version": "1.4.6",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz",
+      "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==",
       "dev": true,
       "requires": {
         "ignore-walk": "^3.0.1",
           }
         },
         "yallist": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+          "dev": true
+        }
+      }
+    },
+    "npm-run-all": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+      "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "chalk": "^2.4.1",
+        "cross-spawn": "^6.0.5",
+        "memorystream": "^0.3.1",
+        "minimatch": "^3.0.4",
+        "pidtree": "^0.3.0",
+        "read-pkg": "^3.0.0",
+        "shell-quote": "^1.6.1",
+        "string.prototype.padend": "^3.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "load-json-file": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+          "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^4.0.0",
+            "pify": "^3.0.0",
+            "strip-bom": "^3.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "dev": true,
+          "requires": {
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1"
+          }
+        },
+        "read-pkg": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^4.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^3.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         }
       }
       "dev": true
     },
     "oauth-sign": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
       "dev": true
     },
     "object-assign": {
       "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==",
       "dev": true
     },
+    "object-is": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz",
+      "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
+      "dev": true
+    },
     "object-keys": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
         "wordwrap": "~0.0.2"
       },
       "dependencies": {
-        "wordwrap": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+        "minimist": {
+          "version": "0.0.10",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
           "dev": true
         }
       }
         "prelude-ls": "~1.1.2",
         "type-check": "~0.3.2",
         "wordwrap": "~1.0.0"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+          "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+          "dev": true
+        }
       }
     },
     "original": {
       "dev": true
     },
     "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "dev": true,
-      "optional": true,
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+      "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
       "requires": {
-        "lcid": "^1.0.0"
+        "execa": "^0.7.0",
+        "lcid": "^1.0.0",
+        "mem": "^1.1.0"
       }
     },
     "os-name": {
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
     },
     "p-is-promise": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
-      "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
       "dev": true
     },
     "p-limit": {
             "ssri": "^6.0.1",
             "unique-filename": "^1.1.1",
             "y18n": "^4.0.0"
-          },
-          "dependencies": {
-            "rimraf": {
-              "version": "2.6.3",
-              "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-              "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-              "dev": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            }
           }
         },
         "get-stream": {
           }
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "path-is-absolute": "^1.0.0"
           }
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "lru-cache": {
           "version": "5.1.1",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
             "once": "^1.3.1"
           }
         },
-        "semver": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-          "dev": true
-        },
         "ssri": {
           "version": "6.0.1",
           "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
           }
         },
         "tar": {
-          "version": "4.4.10",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz",
-          "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==",
+          "version": "4.4.13",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+          "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
           "dev": true,
           "requires": {
             "chownr": "^1.1.1",
             "fs-minipass": "^1.2.5",
-            "minipass": "^2.3.5",
+            "minipass": "^2.8.6",
             "minizlib": "^1.2.1",
             "mkdirp": "^0.5.0",
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.3"
           }
         },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
+        },
         "yallist": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
           "dev": true
         }
       }
     },
     "pako": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
-      "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+      "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
       "dev": true
     },
     "parallel-transform": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
-      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
       "dev": true,
       "requires": {
-        "cyclist": "~0.2.2",
+        "cyclist": "^1.0.1",
         "inherits": "^2.0.3",
         "readable-stream": "^2.1.5"
       }
     },
     "parse-asn1": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
-      "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
+      "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
       "dev": true,
       "requires": {
         "asn1.js": "^4.0.0",
       "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
     },
     "path-parse": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
-      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
       "dev": true
     },
     "path-to-regexp": {
         "fontkit": "^1.0.0",
         "linebreak": "^0.3.0",
         "png-js": ">=0.1.0"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
+          "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=",
+          "dev": true
+        },
+        "brfs": {
+          "version": "1.6.1",
+          "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz",
+          "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==",
+          "dev": true,
+          "requires": {
+            "quote-stream": "^1.0.1",
+            "resolve": "^1.1.5",
+            "static-module": "^2.2.0",
+            "through2": "^2.0.0"
+          }
+        },
+        "linebreak": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-0.3.0.tgz",
+          "integrity": "sha1-BSZICmLAW9Z58+nZmDDgnGp9DtY=",
+          "dev": true,
+          "requires": {
+            "base64-js": "0.0.8",
+            "brfs": "^1.3.0",
+            "unicode-trie": "^0.3.0"
+          }
+        },
+        "magic-string": {
+          "version": "0.22.5",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
+          "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
+          "dev": true,
+          "requires": {
+            "vlq": "^0.2.2"
+          }
+        },
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+          "dev": true
+        },
+        "static-module": {
+          "version": "2.2.5",
+          "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz",
+          "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==",
+          "dev": true,
+          "requires": {
+            "concat-stream": "~1.6.0",
+            "convert-source-map": "^1.5.1",
+            "duplexer2": "~0.1.4",
+            "escodegen": "~1.9.0",
+            "falafel": "^2.1.0",
+            "has": "^1.0.1",
+            "magic-string": "^0.22.4",
+            "merge-source-map": "1.0.4",
+            "object-inspect": "~1.4.0",
+            "quote-stream": "~1.0.2",
+            "readable-stream": "~2.3.3",
+            "shallow-copy": "~0.0.1",
+            "static-eval": "^2.0.0",
+            "through2": "~2.0.3"
+          }
+        },
+        "unicode-trie": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
+          "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
+          "dev": true,
+          "requires": {
+            "pako": "^0.2.5",
+            "tiny-inflate": "^1.0.0"
+          }
+        }
       }
     },
     "pdfmake": {
-      "version": "0.1.57",
-      "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.1.57.tgz",
-      "integrity": "sha512-s6Bs71Ylh06yNgJfP61xicHZSEvFrwo8lvI/BOU4+6eDddO8lwOZi5A42RA0V8zQr6hrI1XYxtLkk/7oJ+5w+w==",
+      "version": "0.1.60",
+      "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.1.60.tgz",
+      "integrity": "sha512-vu+d9xaspGfMB0cNfH+CSet3q+Ip7/CRsx1LJLv2ToMduSTzqE4oTxjZQkPLB9LOL+36zT1SvbNvs0qoxusz1A==",
       "dev": true,
       "requires": {
-        "iconv-lite": "^0.4.24",
-        "linebreak": "^0.3.0",
-        "pdfkit": "^0.10.0"
+        "iconv-lite": "^0.5.0",
+        "linebreak": "^1.0.2",
+        "pdfkit": "^0.10.0",
+        "svg-to-pdfkit": "^0.1.7"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz",
+          "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
       }
     },
     "performance-now": {
       "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
       "dev": true
     },
+    "pidtree": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
+      "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
+      "dev": true
+    },
     "pify": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
       "dev": true
     },
     "portfinder": {
-      "version": "1.0.20",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
-      "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==",
+      "version": "1.0.25",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
+      "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
       "dev": true,
       "requires": {
-        "async": "^1.5.2",
-        "debug": "^2.2.0",
-        "mkdirp": "0.5.x"
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.1"
       },
       "dependencies": {
-        "async": {
-          "version": "1.5.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         }
       }
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
       "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
       "dev": true
-    },
-    "postcss": {
-      "version": "7.0.14",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz",
-      "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          },
-          "dependencies": {
-            "supports-color": {
-              "version": "5.5.0",
-              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-              "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-              "dev": true,
-              "requires": {
-                "has-flag": "^3.0.0"
-              }
-            }
-          }
-        },
+    },
+    "postcss": {
+      "version": "7.0.14",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz",
+      "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
         }
       }
     },
       "dev": true
     },
     "pretty-format": {
-      "version": "24.8.0",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz",
-      "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==",
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+      "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
       "dev": true,
       "requires": {
-        "@jest/types": "^24.8.0",
+        "@jest/types": "^24.9.0",
         "ansi-regex": "^4.0.0",
         "ansi-styles": "^3.2.0",
         "react-is": "^16.8.4"
       "dev": true
     },
     "process-nextick-args": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "dev": true
     },
     "promise": {
       }
     },
     "prompts": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz",
-      "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz",
+      "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==",
       "dev": true,
       "requires": {
-        "kleur": "^3.0.2",
-        "sisteransi": "^1.0.0"
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.3"
       }
     },
     "protoduck": {
             "pinkie-promise": "^2.0.0"
           }
         },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
           "dev": true
         },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
         "source-map-support": {
           "version": "0.4.18",
           "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
           "dev": true
         },
         "webdriver-manager": {
-          "version": "12.1.6",
-          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.6.tgz",
-          "integrity": "sha512-B1mOycNCrbk7xODw7Jgq/mdD3qzPxMaTsnKIQDy2nXlQoyjTrJTTD0vRpEZI9b8RibPEyQvh9zIZ0M1mpOxS3w==",
+          "version": "12.1.7",
+          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz",
+          "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==",
           "dev": true,
           "requires": {
             "adm-zip": "^0.4.9",
       "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
     },
     "psl": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
-      "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==",
-      "dev": true,
-      "optional": true
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
+      "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
+      "dev": true
     },
     "public-encrypt": {
       "version": "4.0.3",
       }
     },
     "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
     },
     "q": {
       "version": "1.4.1",
         "buffer-equal": "0.0.1",
         "minimist": "^1.1.3",
         "through2": "^2.0.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
       }
     },
     "randombytes": {
       }
     },
     "react-is": {
-      "version": "16.8.6",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
-      "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
+      "version": "16.11.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz",
+      "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==",
       "dev": true
     },
     "read-cache": {
         "safe-regex": "^1.1.0"
       }
     },
+    "regexp.prototype.flags": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz",
+      "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2"
+      }
+    },
     "regexpu-core": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
       "dev": true
     },
     "repeat-element": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
-      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
       "dev": true
     },
     "repeat-string": {
           "dev": true
         },
         "camelcase": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
-          "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
           "dev": true
         },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        },
         "cliui": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
           "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
           "dev": true
         },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
-        },
         "lcid": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
           }
         },
         "mem": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
-          "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
           "dev": true,
           "requires": {
             "map-age-cleaner": "^0.1.1",
-            "mimic-fn": "^1.0.0",
+            "mimic-fn": "^2.0.0",
             "p-is-promise": "^2.0.0"
           }
         },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "dev": true
+        },
         "os-locale": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
           }
         },
         "p-limit": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
-          "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
           }
         },
         "p-try": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
-          "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
           "dev": true
         },
         "pump": {
             "once": "^1.3.1"
           }
         },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          }
-        },
         "strip-ansi": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
             "ansi-regex": "^3.0.0"
           }
         },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-          "dev": true
-        },
         "yargs": {
           "version": "12.0.5",
           "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
       }
     },
     "request": {
-      "version": "2.87.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
-      "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+      "version": "2.88.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
       "dev": true,
       "requires": {
         "aws-sign2": "~0.7.0",
-        "aws4": "^1.6.0",
+        "aws4": "^1.8.0",
         "caseless": "~0.12.0",
-        "combined-stream": "~1.0.5",
-        "extend": "~3.0.1",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
         "forever-agent": "~0.6.1",
-        "form-data": "~2.3.1",
-        "har-validator": "~5.0.3",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
         "http-signature": "~1.2.0",
         "is-typedarray": "~1.0.0",
         "isstream": "~0.1.2",
         "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.17",
-        "oauth-sign": "~0.8.2",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
         "performance-now": "^2.1.0",
-        "qs": "~6.5.1",
-        "safe-buffer": "^5.1.1",
-        "tough-cookie": "~2.3.3",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
         "tunnel-agent": "^0.6.0",
-        "uuid": "^3.1.0"
+        "uuid": "^3.3.2"
       }
     },
     "request-promise-core": {
       "dev": true
     },
     "resolve": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
-      "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
       "dev": true,
       "requires": {
-        "path-parse": "^1.0.5"
+        "path-parse": "^1.0.6"
       }
     },
     "resolve-cwd": {
       "dev": true
     },
     "rimraf": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
       "dev": true,
       "requires": {
-        "glob": "^7.0.5"
+        "glob": "^7.1.3"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        }
       }
     },
     "ripemd160": {
             "pump": "^3.0.0"
           }
         },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
         "pump": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
         "lodash": "^4.0.0",
         "scss-tokenizer": "^0.2.3",
         "yargs": "^7.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true,
+          "optional": true
+        },
+        "os-locale": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+          "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "lcid": "^1.0.0"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "which-module": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+          "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+          "dev": true,
+          "optional": true
+        },
+        "yargs": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "camelcase": "^3.0.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^1.4.0",
+            "read-pkg-up": "^1.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^1.0.2",
+            "which-module": "^1.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^5.0.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+          "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "camelcase": "^3.0.0"
+          }
+        }
       }
     },
     "sass-loader": {
         "ajv-keywords": "^3.1.0"
       }
     },
+    "scope-analyzer": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.0.5.tgz",
+      "integrity": "sha512-+U5H0417mnTEstCD5VwOYO7V4vYuSqwqjFap40ythe67bhMFL5C3UgPwyBv7KDJsqUBIKafOD57xMlh1rN7eaw==",
+      "dev": true,
+      "requires": {
+        "array-from": "^2.1.1",
+        "es6-map": "^0.1.5",
+        "es6-set": "^0.1.5",
+        "es6-symbol": "^3.1.1",
+        "estree-is-function": "^1.0.0",
+        "get-assigned-identifiers": "^1.1.0"
+      }
+    },
     "scss-tokenizer": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
         "rimraf": "^2.5.4",
         "tmp": "0.0.30",
         "xml2js": "^0.4.17"
+      },
+      "dependencies": {
+        "tmp": {
+          "version": "0.0.30",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
+          "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
+          "dev": true,
+          "requires": {
+            "os-tmpdir": "~1.0.1"
+          }
+        }
       }
     },
     "selfsigned": {
-      "version": "1.10.4",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
-      "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+      "version": "1.10.7",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
       "dev": true,
       "requires": {
-        "node-forge": "0.7.5"
+        "node-forge": "0.9.0"
       }
     },
     "semver": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
-      "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+      "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
       "dev": true
     },
     "semver-dsl": {
       }
     },
     "serialize-javascript": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
-      "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz",
+      "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==",
       "dev": true
     },
     "serve-index": {
             "statuses": ">= 1.4.0 < 2"
           }
         },
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        },
         "setprototypeof": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
     },
+    "shell-quote": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+      "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
+      "dev": true
+    },
     "shelljs": {
       "version": "0.8.3",
       "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz",
       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
     },
     "sisteransi": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.2.tgz",
-      "integrity": "sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz",
+      "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==",
       "dev": true
     },
     "slash": {
           "requires": {
             "is-extendable": "^0.1.0"
           }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
         }
       }
     },
       "requires": {
         "agent-base": "~4.2.1",
         "socks": "~2.3.2"
+      },
+      "dependencies": {
+        "agent-base": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+          "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+          "dev": true,
+          "requires": {
+            "es6-promisify": "^5.0.0"
+          }
+        }
       }
     },
     "source-list-map": {
       "dev": true
     },
     "source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
       "dev": true
     },
     "source-map-loader": {
       }
     },
     "source-map-support": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
-      "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+      "version": "0.5.10",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+      "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
       "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
       "dev": true
     },
     "sourcemap-codec": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
-      "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
+      "version": "1.4.6",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
+      "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
       "dev": true
     },
     "spdx-correct": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
-      "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
       "dev": true,
       "requires": {
         "spdx-expression-parse": "^3.0.0",
       }
     },
     "spdx-exceptions": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
-      "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
       "dev": true
     },
     "spdx-expression-parse": {
       }
     },
     "spdx-license-ids": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
-      "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+      "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
       "dev": true
     },
     "spdy": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz",
-      "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",
       "dev": true
     },
     "sshpk": {
-      "version": "1.14.2",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
-      "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
       "dev": true,
       "requires": {
         "asn1": "~0.2.3",
       }
     },
     "stack-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz",
-      "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+      "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
       "dev": true
     },
     "static-eval": {
       }
     },
     "static-module": {
-      "version": "2.2.5",
-      "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz",
-      "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.3.tgz",
+      "integrity": "sha512-RDaMYaI5o/ym0GkCqL/PlD1Pn216omp8fY81okxZ6f6JQxWW5tptOw9reXoZX85yt/scYvbWIt6uoszeyf+/MQ==",
       "dev": true,
       "requires": {
+        "acorn-node": "^1.3.0",
         "concat-stream": "~1.6.0",
         "convert-source-map": "^1.5.1",
         "duplexer2": "~0.1.4",
         "escodegen": "~1.9.0",
-        "falafel": "^2.1.0",
         "has": "^1.0.1",
         "magic-string": "^0.22.4",
         "merge-source-map": "1.0.4",
         "object-inspect": "~1.4.0",
-        "quote-stream": "~1.0.2",
         "readable-stream": "~2.3.3",
+        "scope-analyzer": "^2.0.1",
         "shallow-copy": "~0.0.1",
-        "static-eval": "^2.0.0",
+        "static-eval": "^2.0.2",
         "through2": "~2.0.3"
       },
       "dependencies": {
       }
     },
     "string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "requires": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
+    "string.prototype.trimleft": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+      "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string.prototype.trimright": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+      "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string.prototype.padend": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+      "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+      "dev": true,
       "requires": {
-        "code-point-at": "^1.0.0",
-        "is-fullwidth-code-point": "^1.0.0",
-        "strip-ansi": "^3.0.0"
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.4.3",
+        "function-bind": "^1.0.2"
       }
     },
     "string_decoder": {
       }
     },
     "supports-color": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
-      "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
       "dev": true,
       "requires": {
         "has-flag": "^3.0.0"
       }
     },
+    "svg-to-pdfkit": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.7.tgz",
+      "integrity": "sha1-fbbUfkeziI3OGAYHUajeJBf4V3U=",
+      "dev": true,
+      "requires": {
+        "pdfkit": ">=0.8.1"
+      }
+    },
     "symbol-observable": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
         "source-map-support": "~0.5.10"
       },
       "dependencies": {
-        "commander": {
-          "version": "2.20.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "source-map-support": {
-          "version": "0.5.12",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
-          "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
-          "dev": true,
-          "requires": {
-            "buffer-from": "^1.0.0",
-            "source-map": "^0.6.0"
-          }
         }
       }
     },
           }
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "path-is-absolute": "^1.0.0"
           }
         },
-        "graceful-fs": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
-          "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
-          "dev": true
-        },
         "locate-path": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
           }
         },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
             "once": "^1.3.1"
           }
         },
-        "rimraf": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "semver": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
             "figgy-pudding": "^3.5.1"
           }
         },
+        "y18n": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+          "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+          "dev": true
+        },
         "yallist": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
           "dev": true
         }
       }
           }
         },
         "glob": {
-          "version": "7.1.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
-          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+          "version": "7.1.5",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
           }
         },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
       }
     },
     "thunky": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
-      "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
     "time-stamp": {
       "dev": true
     },
     "timers-browserify": {
-      "version": "2.0.10",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
-      "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
+      "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
       "dev": true,
       "requires": {
         "setimmediate": "^1.0.4"
       "dev": true
     },
     "tmp": {
-      "version": "0.0.30",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
-      "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
       "dev": true,
       "requires": {
-        "os-tmpdir": "~1.0.1"
+        "os-tmpdir": "~1.0.2"
       }
     },
     "tmpl": {
       "dev": true
     },
     "tough-cookie": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
-      "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
       "dev": true,
       "requires": {
+        "psl": "^1.1.24",
         "punycode": "^1.4.1"
       },
       "dependencies": {
       "dev": true,
       "requires": {
         "punycode": "^2.1.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+          "dev": true
+        }
+      }
+    },
+    "transifex-i18ntool": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/transifex-i18ntool/-/transifex-i18ntool-1.1.0.tgz",
+      "integrity": "sha512-W1FIGosZJ3cxbYk238QgsJvKPq12dPDIMn3rg37ZHNtoNAGrUAV6wKp+YSFwnMcqk3igZcAEPlLW1jFjBFC95Q==",
+      "dev": true,
+      "requires": {
+        "colors": "^1.0.3",
+        "minimist": "^1.2.0",
+        "prompts": "^2.0.4",
+        "request": "^2.88.0",
+        "request-promise-native": "^1.0.7",
+        "xliff": "^4.2.0"
       }
     },
     "traverse": {
         "fs-extra": "6.0.1",
         "json5": "^0.5.0",
         "lodash": "^4.17.10"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+          "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        }
       }
     },
     "ts-node": {
             "path-type": "^3.0.0"
           }
         },
+        "fs-extra": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+          "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
         "globby": {
           "version": "8.0.2",
           "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
         "semver": "^5.3.0",
         "tslib": "^1.8.0",
         "tsutils": "^2.29.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          }
-        }
       }
     },
     "tsutils": {
       "version": "0.14.5",
       "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true,
-      "optional": true
+      "dev": true
+    },
+    "type": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+      "dev": true
     },
     "type-check": {
       "version": "0.3.2",
       "requires": {
         "media-typer": "0.3.0",
         "mime-types": "~2.1.24"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.24",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-          "dev": true,
-          "requires": {
-            "mime-db": "1.40.0"
-          }
-        }
       }
     },
     "typedarray": {
       "dev": true
     },
     "uglify-js": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
-      "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
+      "version": "3.6.4",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.4.tgz",
+      "integrity": "sha512-9Yc2i881pF4BPGhjteCXQNaXx1DCwm3dtOyBaG2hitHjLWOczw/ki8vD1bqyT3u6K0Ms/FpCShkmfg+FtlOfYA==",
       "dev": true,
       "optional": true,
       "requires": {
-        "commander": "~2.20.0",
+        "commander": "~2.20.3",
         "source-map": "~0.6.1"
       },
       "dependencies": {
-        "commander": {
-          "version": "2.20.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
-          "dev": true,
-          "optional": true
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "requires": {
         "base64-js": "^1.3.0",
         "unicode-trie": "^1.0.0"
-      },
-      "dependencies": {
-        "pako": {
-          "version": "0.2.9",
-          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
-          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
-          "dev": true
-        },
-        "unicode-trie": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-1.0.0.tgz",
-          "integrity": "sha512-v5raLKsobbFbWLMoX9+bChts/VhPPj3XpkNr/HbqkirXR1DPk8eo9IYKyvk0MQZFkaoRsFj2Rmaqgi2rfAZYtA==",
-          "dev": true,
-          "requires": {
-            "pako": "^0.2.5",
-            "tiny-inflate": "^1.0.0"
-          }
-        }
       }
     },
     "unicode-trie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz",
-      "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-1.0.0.tgz",
+      "integrity": "sha512-v5raLKsobbFbWLMoX9+bChts/VhPPj3XpkNr/HbqkirXR1DPk8eo9IYKyvk0MQZFkaoRsFj2Rmaqgi2rfAZYtA==",
       "dev": true,
       "requires": {
         "pako": "^0.2.5",
       "dev": true
     },
     "unix-crypt-td-js": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz",
-      "integrity": "sha1-HAgkFQSBvHoB1J6Y8exmjYJBLzs=",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz",
+      "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==",
       "dev": true
     },
     "unpipe": {
       }
     },
     "upath": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
-      "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
       "dev": true
     },
     "uri-js": {
       "dev": true,
       "requires": {
         "punycode": "^2.1.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+          "dev": true
+        }
       }
     },
     "urix": {
       "requires": {
         "punycode": "1.3.2",
         "querystring": "0.2.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
-        }
       }
     },
     "url-parse": {
       "dev": true,
       "requires": {
         "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
       }
     },
     "util-deprecate": {
       "dev": true
     },
     "uuid": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
       "dev": true
     },
     "validate-npm-package-license": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
-      "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
       "dev": true,
       "requires": {
         "spdx-correct": "^3.0.0",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
-          "dev": true
-        },
         "cliui": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
           "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
           "dev": true
         },
-        "is-fullwidth-code-point": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
-        },
         "lcid": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
           }
         },
         "p-limit": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
-          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+          "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
             "once": "^1.3.1"
           }
         },
-        "semver": {
-          "version": "5.7.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
           "dev": true,
           "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "4.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^3.0.0"
-              }
-            }
+            "has-flag": "^3.0.0"
           }
         },
         "webpack-dev-middleware": {
             "webpack-log": "^2.0.0"
           }
         },
-        "which-module": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-          "dev": true
-        },
         "yargs": {
           "version": "12.0.2",
           "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
       }
     },
     "which-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-      "dev": true,
-      "optional": true
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
     },
     "wide-align": {
       "version": "1.1.3",
       }
     },
     "wordwrap": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
       "dev": true
     },
     "worker-farm": {
       "requires": {
         "string-width": "^1.0.1",
         "strip-ansi": "^3.0.1"
+      },
+      "dependencies": {
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        }
       }
     },
     "wrappy": {
         "async-limiter": "~1.0.0"
       }
     },
+    "xliff": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/xliff/-/xliff-4.3.2.tgz",
+      "integrity": "sha512-NmI1Q1Zx8tyMl87XmoQnOPQaR7hvgzHhGArskwmUB6Tvyo0PxPkMq59wlyOtV/fNFEhobQqtW/TkpXvuF0RFng==",
+      "dev": true,
+      "requires": {
+        "xml-js": "1.6.11"
+      }
+    },
+    "xml-js": {
+      "version": "1.6.11",
+      "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+      "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+      "dev": true,
+      "requires": {
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "sax": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+          "dev": true
+        }
+      }
+    },
     "xml-name-validator": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
       "dev": true
     },
     "xml2js": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
-      "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+      "version": "0.4.22",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz",
+      "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==",
       "dev": true,
       "requires": {
         "sax": ">=0.6.0",
-        "xmlbuilder": "~9.0.1"
+        "util.promisify": "~1.0.0",
+        "xmlbuilder": "~11.0.0"
       },
       "dependencies": {
         "sax": {
       }
     },
     "xmlbuilder": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
       "dev": true
     },
     "xregexp": {
       "dev": true
     },
     "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
       "dev": true
     },
     "y18n": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-      "dev": true
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
     },
     "yallist": {
       "version": "2.1.2",
       "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
     },
     "yargs": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-      "dev": true,
-      "optional": true,
+      "version": "10.0.3",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
+      "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
       "requires": {
-        "camelcase": "^3.0.0",
         "cliui": "^3.2.0",
         "decamelize": "^1.1.1",
+        "find-up": "^2.1.0",
         "get-caller-file": "^1.0.1",
-        "os-locale": "^1.4.0",
-        "read-pkg-up": "^1.0.1",
+        "os-locale": "^2.0.0",
         "require-directory": "^2.1.1",
         "require-main-filename": "^1.0.1",
         "set-blocking": "^2.0.0",
-        "string-width": "^1.0.2",
-        "which-module": "^1.0.0",
+        "string-width": "^2.0.0",
+        "which-module": "^2.0.0",
         "y18n": "^3.2.1",
-        "yargs-parser": "^5.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
-        },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true,
-          "optional": true
-        }
+        "yargs-parser": "^8.0.0"
       }
     },
     "yargs-parser": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
-      "dev": true,
-      "optional": true,
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
+      "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
       "requires": {
-        "camelcase": "^3.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
-        }
+        "camelcase": "^4.1.0"
       }
     },
     "yn": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
-      "integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
       "dev": true
     },
     "zone.js": {
index e5103272acb80b7c1ca159209c5ab5fb4c180ebf..695c8898b028e193f27006c456b1b2bbab425d46 100644 (file)
@@ -2,17 +2,39 @@
   "name": "ceph-dashboard",
   "version": "0.0.0",
   "license": "MIT",
+  "config": {
+    "locale": "en-US"
+  },
   "scripts": {
     "ng": "ng",
     "start": "npm run env_build && ng serve --host 0.0.0.0",
     "build": "npm run env_build && ng build",
+    "build-i18n": "export _locale=${LOCALE:-$npm_package_config_locale}; [ -f src/locale/messages.${_locale}.xlf ] && npm run build -- --outputPath=dist/${_locale} --i18nFile=src/locale/messages.${_locale}.xlf --i18nLocale=${_locale}",
+    "build:en-US": "LOCALE=en-US npm run build-i18n",
+    "build:de-DE": "LOCALE=de-DE npm run build-i18n",
+    "build:es-ES": "LOCALE=es-ES npm run build-i18n",
+    "build:pt-BR": "LOCALE=pt-BR npm run build-i18n",
+    "build:it-IT": "LOCALE=it-IT npm run build-i18n",
+    "build:cs": "LOCALE=cs npm run build-i18n",
+    "build:fr-FR": "LOCALE=fr-FR npm run build-i18n",
+    "build:id-ID": "LOCALE=id-ID npm run build-i18n",
+    "build:ja-JP": "LOCALE=ja-JP npm run build-i18n",
+    "build:pl-PL": "LOCALE=pl-PL npm run build-i18n",
+    "build:zh-CN": "LOCALE=zh-CN npm run build-i18n",
+    "build:zh-TW": "LOCALE=zh-TW npm run build-i18n",
     "env_build": "cp src/environments/environment.tpl.ts src/environments/environment.prod.ts && cp src/environments/environment.tpl.ts src/environments/environment.ts  && node ./environment.build.js",
-    "i18n": "ng xi18n --i18n-format xlf --i18n-locale en-US --output-path locale --progress=false && ngx-extractor -i 'src/**/*.ts' -f xlf -o src/locale/messages.xlf -l en-US",
+    "i18n": "npm run i18n:extract && npm run i18n:push && npm run i18n:pull && npm run i18n:merge",
+    "i18n:extract": "ng xi18n --i18n-format xlf --i18n-locale en-US --output-path locale --progress=false && ngx-extractor -i 'src/**/*.ts' -f xlf -o src/locale/messages.xlf -l en-US",
+    "i18n:push": "npx i18ntool push -c i18n.config.json",
+    "i18n:pull": "npx i18ntool pull -c i18n.config.json",
+    "i18n:merge": "npx i18ntool merge -c i18n.config.json",
+    "i18n:token": "npx i18ntool config token",
     "test": "npm run test:config && jest --watch",
     "test:ci": "npm run test:config && JEST_SILENT_REPORTER_DOTS=true jest --coverage --reporters jest-silent-reporter",
     "test:config": "if [ ! -e 'src/unit-test-configuration.ts' ]; then cp 'src/unit-test-configuration.ts.sample' 'src/unit-test-configuration.ts'; fi",
-    "e2e": "npm run env_build && ng e2e",
-    "e2e:dev": "npm run env_build && ng e2e --dev-server-target",
+    "e2e": "npm run env_build && npm run e2e:update && ng e2e --webdriverUpdate=false",
+    "e2e:dev": "npm run env_build && npm run e2e:update && ng e2e --dev-server-target --webdriverUpdate=false",
+    "e2e:update": "npx webdriver-manager update --gecko=false --versions.chrome=$(google-chrome --version | awk '{ print $3 }')",
     "lint:tslint": "ng lint",
     "lint:prettier": "prettier --list-different \"{src,e2e}/**/*.{ts,scss}\"",
     "lint:html": "html-linter --config html-linter.config.json",
     "jest-preset-angular": "6.0.2",
     "jest-silent-reporter": "0.1.2",
     "prettier": "1.16.4",
+    "npm-run-all": "^4.1.5",
     "protractor": "5.4.2",
     "replace-in-file": "3.4.3",
+    "transifex-i18ntool": "1.1.0",
     "ts-node": "8.0.2",
     "tslint": "5.18.0",
     "typescript": "3.2.4"
index 8f2d53d4b4b5fdf97c09c90d3786484d39c13b2d..73dbc4088f50f11d144a6c982c3000a7486ccf30 100644 (file)
@@ -93,7 +93,7 @@ const routes: Routes = [
       {
         path: 'edit/:name',
         component: ConfigurationFormComponent,
-        data: { breadcrumbs: 'Edit' }
+        data: { breadcrumbs: ActionLabels.EDIT }
       }
     ]
   },
@@ -237,11 +237,15 @@ const routes: Routes = [
     },
     children: [
       { path: '', component: NfsListComponent },
-      { path: 'add', component: NfsFormComponent, data: { breadcrumbs: 'Add' } },
       {
-        path: 'edit/:cluster_id/:export_id',
+        path: URLVerbs.CREATE,
         component: NfsFormComponent,
-        data: { breadcrumbs: 'Edit' }
+        data: { breadcrumbs: ActionLabels.CREATE }
+      },
+      {
+        path: `${URLVerbs.EDIT}/:cluster_id/:export_id`,
+        component: NfsFormComponent,
+        data: { breadcrumbs: ActionLabels.EDIT }
       }
     ]
   },
index 3da5eada655f13679149c058d6ec51c8037d3c03..b05168d276f8e96c8824d8270543cf8dd2c39870 100644 (file)
@@ -1,6 +1,11 @@
-import { registerLocaleData } from '@angular/common';
 import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
-import { ErrorHandler, NgModule } from '@angular/core';
+import {
+  ErrorHandler,
+  LOCALE_ID,
+  NgModule,
+  TRANSLATIONS,
+  TRANSLATIONS_FORMAT
+} from '@angular/core';
 import { BrowserModule } from '@angular/platform-browser';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 
@@ -16,17 +21,16 @@ import { AppRoutingModule } from './app-routing.module';
 import { AppComponent } from './app.component';
 import { CephModule } from './ceph/ceph.module';
 import { CoreModule } from './core/core.module';
-import { i18nProviders, LocaleHelper } from './locale.helper';
 import { ApiInterceptorService } from './shared/services/api-interceptor.service';
 import { JsErrorHandler } from './shared/services/js-error-handler.service';
 import { SharedModule } from './shared/shared.module';
 
+import { environment } from '../environments/environment';
+
 export function jwtTokenGetter() {
   return localStorage.getItem('access_token');
 }
 
-registerLocaleData(LocaleHelper.getLocaleData(), LocaleHelper.getLocale());
-
 @NgModule({
   declarations: [AppComponent],
   imports: [
@@ -63,7 +67,19 @@ registerLocaleData(LocaleHelper.getLocaleData(), LocaleHelper.getLocale());
       useClass: ApiInterceptorService,
       multi: true
     },
-    i18nProviders,
+    {
+      provide: TRANSLATIONS,
+      useFactory: (locale) => {
+        locale = locale || environment.default_lang;
+        try {
+          return require(`raw-loader!locale/messages.${locale}.xlf`);
+        } catch (error) {
+          return [];
+        }
+      },
+      deps: [LOCALE_ID]
+    },
+    { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' },
     I18n
   ],
   bootstrap: [AppComponent]
index b4322d2d0fdf49ecdd1e1521ffe7584953a3139d..a1e0cc0bf7435cea8c465d56d777272a5ff995ac 100644 (file)
@@ -14,6 +14,7 @@ import { TooltipModule } from 'ngx-bootstrap/tooltip';
 import { ActionLabels, URLVerbs } from '../../shared/constants/app.constants';
 import { FeatureTogglesGuardService } from '../../shared/services/feature-toggles-guard.service';
 import { SharedModule } from '../../shared/shared.module';
+import { IscsiSettingComponent } from './iscsi-setting/iscsi-setting.component';
 import { IscsiTabsComponent } from './iscsi-tabs/iscsi-tabs.component';
 import { IscsiTargetDetailsComponent } from './iscsi-target-details/iscsi-target-details.component';
 import { IscsiTargetDiscoveryModalComponent } from './iscsi-target-discovery-modal/iscsi-target-discovery-modal.component';
@@ -67,6 +68,7 @@ import { RbdTrashRestoreModalComponent } from './rbd-trash-restore-modal/rbd-tra
   declarations: [
     RbdListComponent,
     IscsiComponent,
+    IscsiSettingComponent,
     IscsiTabsComponent,
     IscsiTargetListComponent,
     RbdDetailsComponent,
@@ -149,9 +151,9 @@ const routes: Routes = [
         children: [
           { path: '', component: IscsiTargetListComponent },
           {
-            path: URLVerbs.ADD,
+            path: URLVerbs.CREATE,
             component: IscsiTargetFormComponent,
-            data: { breadcrumbs: ActionLabels.ADD }
+            data: { breadcrumbs: ActionLabels.CREATE }
           },
           {
             path: `${URLVerbs.EDIT}/:target_iqn`,
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.html b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.html
new file mode 100644 (file)
index 0000000..7c65ea8
--- /dev/null
@@ -0,0 +1,58 @@
+<div class="form-group"
+     [ngClass]="{'has-error': settingsForm.showError(setting, formDir)}"
+     [formGroup]="settingsForm">
+  <label class="col-form-label"
+         for="{{ setting }}">{{ setting }}</label>
+  <select id="{{ setting }}"
+          name="{{ setting }}"
+          *ngIf="limits['type'] === 'enum'"
+          class="form-control custom-select"
+          [formControlName]="setting">
+    <option [ngValue]="null"></option>
+    <option *ngFor="let opt of limits['values']"
+            [ngValue]="opt">{{ opt }}</option>
+  </select>
+
+  <span *ngIf="limits['type'] !== 'enum'">
+    <input type="number"
+           *ngIf="limits['type'] === 'int'"
+           class="form-control"
+           [formControlName]="setting">
+
+    <input type="text"
+           *ngIf="limits['type'] === 'str'"
+           class="form-control"
+           [formControlName]="setting">
+
+    <ng-container *ngIf="limits['type'] === 'bool'">
+      <br>
+      <div class="radio radio-inline">
+        <input type="radio"
+               [id]="setting + 'True'"
+               [value]="true"
+               [formControlName]="setting"
+               class="custom-control-input">
+        <label class="custom-control-label"
+               [for]="setting + 'True'">Yes</label>
+      </div>
+      <div class="radio radio-inline">
+        <input type="radio"
+               [id]="setting + 'False'"
+               [value]="false"
+               class="custom-control-input"
+               [formControlName]="setting">
+        <label class="custom-control-label"
+               [for]="setting + 'False'">No</label>
+      </div>
+    </ng-container>
+  </span>
+
+  <span class="help-block"
+        *ngIf="settingsForm.showError(setting, formDir, 'min')">
+    <ng-container i18n>Must be greater than or equal to {{ limits['min'] }}.</ng-container>
+  </span>
+  <span class="help-block"
+        *ngIf="settingsForm.showError(setting, formDir, 'max')">
+    <ng-container i18n>Must be less than or equal to {{ limits['max'] }}.</ng-container>
+  </span>
+</div>
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.scss b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.scss
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.spec.ts
new file mode 100644 (file)
index 0000000..3f272d9
--- /dev/null
@@ -0,0 +1,37 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { FormControl, NgForm, ReactiveFormsModule } from '@angular/forms';
+
+import { configureTestBed } from '../../../../testing/unit-test-helper';
+import { CdFormGroup } from '../../../shared/forms/cd-form-group';
+import { SharedModule } from '../../../shared/shared.module';
+import { IscsiSettingComponent } from './iscsi-setting.component';
+
+describe('IscsiSettingComponent', () => {
+  let component: IscsiSettingComponent;
+  let fixture: ComponentFixture<IscsiSettingComponent>;
+
+  configureTestBed({
+    imports: [SharedModule, ReactiveFormsModule],
+    declarations: [IscsiSettingComponent]
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(IscsiSettingComponent);
+    component = fixture.componentInstance;
+    component.settingsForm = new CdFormGroup({
+      max_data_area_mb: new FormControl()
+    });
+    component.formDir = new NgForm([], []);
+    component.setting = 'max_data_area_mb';
+    component.limits = {
+      type: 'int',
+      min: 1,
+      max: 2048
+    };
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-setting/iscsi-setting.component.ts
new file mode 100644 (file)
index 0000000..ade8ae4
--- /dev/null
@@ -0,0 +1,31 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { NgForm, Validators } from '@angular/forms';
+
+import { CdFormGroup } from '../../../shared/forms/cd-form-group';
+
+@Component({
+  selector: 'cd-iscsi-setting',
+  templateUrl: './iscsi-setting.component.html',
+  styleUrls: ['./iscsi-setting.component.scss']
+})
+export class IscsiSettingComponent implements OnInit {
+  @Input()
+  settingsForm: CdFormGroup;
+  @Input()
+  formDir: NgForm;
+  @Input()
+  setting: string;
+  @Input()
+  limits: object;
+
+  ngOnInit() {
+    const validators = [];
+    if ('min' in this.limits) {
+      validators.push(Validators.min(this.limits['min']));
+    }
+    if ('max' in this.limits) {
+      validators.push(Validators.max(this.limits['max']));
+    }
+    this.settingsForm.get(this.setting).setValidators(validators);
+  }
+}
index b4e482a8fa5a6a531be2a54e658239810b2bbeb5..7a03b0ff3b4f0a5f02cba80ac704cb64a017fdee 100644 (file)
@@ -7,6 +7,7 @@ import { NodeEvent, TreeModel } from 'ng2-tree';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
+import { BooleanTextPipe } from '../../../shared/pipes/boolean-text.pipe';
 import { IscsiBackstorePipe } from '../../../shared/pipes/iscsi-backstore.pipe';
 
 @Component({
@@ -19,6 +20,8 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
   selection: CdTableSelection;
   @Input()
   settings: any;
+  @Input()
+  cephIscsiConfigVersion: number;
 
   @ViewChild('highlightTpl')
   highlightTpl: TemplateRef<any>;
@@ -39,14 +42,18 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
   title: string;
   tree: TreeModel;
 
-  constructor(private i18n: I18n, private iscsiBackstorePipe: IscsiBackstorePipe) {}
+  constructor(
+    private i18n: I18n,
+    private iscsiBackstorePipe: IscsiBackstorePipe,
+    private booleanTextPipe: BooleanTextPipe
+  ) {}
 
   ngOnInit() {
     this.columns = [
       {
         prop: 'displayName',
         name: this.i18n('Name'),
-        flexGrow: 2,
+        flexGrow: 1,
         cellTemplate: this.highlightTpl
       },
       {
@@ -74,11 +81,17 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
   }
 
   private generateTree() {
-    this.metadata = { root: this.selectedItem.target_controls };
-
+    const target_meta = _.cloneDeep(this.selectedItem.target_controls);
+    // Target level authentication was introduced in ceph-iscsi config v11
+    if (this.cephIscsiConfigVersion > 10) {
+      _.extend(target_meta, _.cloneDeep(this.selectedItem.auth));
+    }
+    this.metadata = { root: target_meta };
     const cssClasses = {
       target: {
-        expanded: 'fa fa-fw fa-bullseye fa-lg'
+        expanded: this.selectedItem.cdExecuting
+          ? 'fa fa-fw fa-spinner fa-spin fa-lg'
+          : 'fa fa-fw fa-bullseye fa-lg'
       },
       initiators: {
         expanded: 'fa fa-fw fa-user fa-lg',
@@ -105,7 +118,11 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
         controls: disk.controls,
         backstore: disk.backstore
       };
-
+      ['wwn', 'lun'].forEach((k) => {
+        if (k in disk) {
+          this.metadata[id][k] = disk[k];
+        }
+      });
       disks.push({
         value: `${disk.pool}/${disk.image}`,
         id: id
@@ -120,11 +137,13 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
     const clients = [];
     _.forEach(this.selectedItem.clients, (client) => {
       const client_metadata = _.cloneDeep(client.auth);
-      _.extend(client_metadata, client.info);
-      delete client_metadata['state'];
-      _.forEach(Object.keys(client.info.state), (state) => {
-        client_metadata[state.toLowerCase()] = client.info.state[state];
-      });
+      if (client.info) {
+        _.extend(client_metadata, client.info);
+        delete client_metadata['state'];
+        _.forEach(Object.keys(client.info.state), (state) => {
+          client_metadata[state.toLowerCase()] = client.info.state[state];
+        });
+      }
       this.metadata['client_' + client.client_iqn] = client_metadata;
 
       const luns = [];
@@ -138,9 +157,13 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
         });
       });
 
+      let status = '';
+      if (client.info) {
+        status = Object.keys(client.info.state).includes('LOGGED_IN') ? 'logged_in' : 'logged_out';
+      }
       clients.push({
         value: client.client_iqn,
-        status: Object.keys(client.info.state).includes('LOGGED_IN') ? 'logged_in' : 'logged_out',
+        status: status,
         id: 'client_' + client.client_iqn,
         children: luns
       });
@@ -231,6 +254,13 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
     };
   }
 
+  private format(value) {
+    if (typeof value === 'boolean') {
+      return this.booleanTextPipe.transform(value);
+    }
+    return value;
+  }
+
   onNodeSelected(e: NodeEvent) {
     if (e.node.id) {
       this.title = e.node.value;
@@ -239,19 +269,33 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
       if (e.node.id === 'root') {
         this.columns[2].isHidden = false;
         this.data = _.map(this.settings.target_default_controls, (value, key) => {
+          value = this.format(value);
           return {
             displayName: key,
             default: value,
-            current: tempData[key] || value
+            current: !_.isUndefined(tempData[key]) ? this.format(tempData[key]) : value
           };
         });
+        // Target level authentication was introduced in ceph-iscsi config v11
+        if (this.cephIscsiConfigVersion > 10) {
+          ['user', 'password', 'mutual_user', 'mutual_password'].forEach((key) => {
+            this.data.push({
+              displayName: key,
+              default: null,
+              current: tempData[key]
+            });
+          });
+        }
       } else if (e.node.id.toString().startsWith('disk_')) {
         this.columns[2].isHidden = false;
         this.data = _.map(this.settings.disk_default_controls[tempData.backstore], (value, key) => {
+          value = this.format(value);
           return {
             displayName: key,
             default: value,
-            current: !_.isUndefined(tempData.controls[key]) ? tempData.controls[key] : value
+            current: !_.isUndefined(tempData.controls[key])
+              ? this.format(tempData.controls[key])
+              : value
           };
         });
         this.data.push({
@@ -259,13 +303,22 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
           default: this.iscsiBackstorePipe.transform(this.settings.default_backstore),
           current: this.iscsiBackstorePipe.transform(tempData.backstore)
         });
+        ['wwn', 'lun'].forEach((k) => {
+          if (k in tempData) {
+            this.data.push({
+              displayName: k,
+              default: undefined,
+              current: tempData[k]
+            });
+          }
+        });
       } else {
         this.columns[2].isHidden = true;
         this.data = _.map(tempData, (value, key) => {
           return {
             displayName: key,
             default: undefined,
-            current: value
+            current: this.format(value)
           };
         });
       }
index 5a7031dd4c0de6e4feb2246d0fe61638e8734a74..0562efa32d700ab90a02ec17a4ee39f991623020 100644 (file)
                        type="text"
                        [value]="image"
                        disabled />
+                <div class="input-group-addon"
+                     *ngIf="api_version >= 1">lun: {{ imagesSettings[image]['lun'] }}</div>
                 <span class="input-group-btn">
                   <button class="btn btn-default"
                           type="button"
               </span>
             </ng-container>
 
+            <input class="form-control"
+                   type="hidden"
+                   id="disks"
+                   name="disks"
+                   formControlName="disks" />
+
+            <span class="help-block"
+                  *ngIf="targetForm.showError('disks', formDir, 'dupLunId')"
+                  i18n>Duplicated LUN numbers.</span>
+
             <span class="help-block"
-                  *ngIf="targetForm.showError('disks', formDir, 'required')"
-                  i18n>At least 1 image is required.</span>
+                  *ngIf="targetForm.showError('disks', formDir, 'dupWwn')"
+                  i18n>Duplicated WWN.</span>
 
             <div class="row">
               <div class="col-md-12">
           </div>
         </div>
 
+        <!-- Target level authentication was introduced in ceph-iscsi config v11 -->
+        <div formGroupName="auth" *ngIf="cephIscsiConfigVersion > 10 && !targetForm.getValue('acl_enabled')">
+
+          <!-- Target user -->
+          <div class="form-group"
+               [ngClass]="{'has-error': targetForm.showError('user', formDir)}">
+            <label class="control-label col-sm-3"
+                   for="target_user">
+              <ng-container i18n>User</ng-container>
+            </label>
+            <div class="col-sm-9">
+              <input class="form-control"
+                     type="text"
+                     id="target_user"
+                     name="target_user"
+                     formControlName="user" />
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('user', formDir, 'required')"
+                    i18n>This field is required.</span>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('user', formDir, 'pattern')"
+                    i18n>Usernames must have a length of 8 to 64 characters and
+                can only contain letters, '.', '@', '-', '_' or ':'.</span>
+            </div>
+          </div>
+
+          <!-- Target password -->
+          <div class="form-group"
+               [ngClass]="{'has-error': targetForm.showError('password', formDir)}">
+            <label class="control-label col-sm-3"
+                   for="target_password">
+              <ng-container i18n>Password</ng-container>
+            </label>
+            <div class="col-sm-9">
+              <div class="input-group">
+                <input class="form-control"
+                       type="password"
+                       autocomplete="new-password"
+                       id="target_password"
+                       name="target_password"
+                       formControlName="password" />
+                <span class="input-group-btn">
+                  <button type="button"
+                          class="btn btn-default"
+                          cdPasswordButton="target_password">
+                  </button>
+                  <button type="button"
+                          class="btn btn-default"
+                          cdCopy2ClipboardButton="target_password">
+                  </button>
+                </span>
+              </div>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('password', formDir, 'required')"
+                    i18n>This field is required.</span>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('password', formDir, 'pattern')"
+                    i18n>Passwords must have a length of 12 to 16 characters
+                and can only contain letters, '@', '-', '_' or '/'.</span>
+            </div>
+          </div>
+
+          <!-- Target mutual_user -->
+          <div class="form-group"
+               [ngClass]="{'has-error': targetForm.showError('mutual_user', formDir)}">
+            <label class="control-label col-sm-3"
+                   for="target_mutual_user">
+              <ng-container i18n>Mutual User</ng-container>
+            </label>
+            <div class="col-sm-9">
+              <input class="form-control"
+                     type="text"
+                     id="target_mutual_user"
+                     name="target_mutual_user"
+                     formControlName="mutual_user" />
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('mutual_user', formDir, 'required')"
+                    i18n>This field is required.</span>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('mutual_user', formDir, 'pattern')"
+                    i18n>Usernames must have a length of 8 to 64 characters and
+                can only contain letters, '.', '@', '-', '_' or ':'.</span>
+            </div>
+          </div>
+
+          <!-- Target mutual_password -->
+          <div class="form-group"
+               [ngClass]="{'has-error': targetForm.showError('mutual_password', formDir)}">
+            <label class="control-label col-sm-3"
+                   for="target_mutual_password">
+              <ng-container i18n>Mutual Password</ng-container>
+            </label>
+            <div class="col-sm-9">
+              <div class="input-group">
+                <input class="form-control"
+                       type="password"
+                       autocomplete="new-password"
+                       id="target_mutual_password"
+                       name="target_mutual_password"
+                       formControlName="mutual_password" />
+
+                <span class="input-group-btn">
+                  <button type="button"
+                          class="btn btn-default"
+                          cdPasswordButton="target_mutual_password">
+                  </button>
+                  <button type="button"
+                          class="btn btn-default"
+                          cdCopy2ClipboardButton="target_mutual_password">
+                  </button>
+                </span>
+              </div>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('mutual_password', formDir, 'required')"
+                    i18n>This field is required.</span>
+
+              <span class="help-block"
+                    *ngIf="targetForm.showError('mutual_password', formDir, 'pattern')"
+                    i18n>Passwords must have a length of 12 to 16 characters
+                and can only contain letters, '@', '-', '_' or '/'.</span>
+            </div>
+          </div>
+
+        </div>
+
         <!-- Initiators -->
         <div class="form-group"
              *ngIf="targetForm.getValue('acl_enabled')">
index c4eb15dd40b8332c692fc09a6d82492c2dee168c..e95f5dc2065555d861e6c1343cea8ab15af4429e 100644 (file)
@@ -31,7 +31,7 @@ describe('IscsiTargetFormComponent', () => {
     target_default_controls: {
       cmdsn_depth: 128,
       dataout_timeout: 20,
-      immediate_data: 'Yes'
+      immediate_data: true
     },
     required_rbd_features: {
       'backstore:1': 0,
@@ -42,18 +42,27 @@ describe('IscsiTargetFormComponent', () => {
       'backstore:2': 0
     },
     backstores: ['backstore:1', 'backstore:2'],
-    default_backstore: 'backstore:1'
+    default_backstore: 'backstore:1',
+    api_version: 1
   };
 
   const LIST_TARGET = [
     {
       target_iqn: 'iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw',
       portals: [{ host: 'node1', ip: '192.168.100.201' }],
-      disks: [{ pool: 'rbd', image: 'disk_1', controls: {}, backstore: 'backstore:1' }],
+      disks: [
+        {
+          pool: 'rbd',
+          image: 'disk_1',
+          controls: {},
+          backstore: 'backstore:1',
+          wwn: '64af6678-9694-4367-bacc-f8eb0baa'
+        }
+      ],
       clients: [
         {
           client_iqn: 'iqn.1994-05.com.redhat:rh7-client',
-          luns: [{ pool: 'rbd', image: 'disk_1' }],
+          luns: [{ pool: 'rbd', image: 'disk_1', lun: 0 }],
           auth: {
             user: 'myiscsiusername',
             password: 'myiscsipassword',
@@ -72,6 +81,10 @@ describe('IscsiTargetFormComponent', () => {
     { name: 'node2', ip_addresses: ['192.168.100.202'] }
   ];
 
+  const VERSION = {
+    ceph_iscsi_config_version: 11
+  };
+
   const RBD_LIST = [
     { status: 0, value: [], pool_name: 'ganesha' },
     {
@@ -152,6 +165,7 @@ describe('IscsiTargetFormComponent', () => {
 
     httpTesting.expectOne('ui-api/iscsi/settings').flush(SETTINGS);
     httpTesting.expectOne('ui-api/iscsi/portals').flush(PORTALS);
+    httpTesting.expectOne('ui-api/iscsi/version').flush(VERSION);
     httpTesting.expectOne('api/summary').flush({});
     httpTesting.expectOne('api/block/image').flush(RBD_LIST);
     httpTesting.expectOne('api/iscsi/target').flush(LIST_TARGET);
@@ -183,6 +197,12 @@ describe('IscsiTargetFormComponent', () => {
       groups: [],
       initiators: [],
       acl_enabled: false,
+      auth: {
+        password: '',
+        user: '',
+        mutual_password: '',
+        mutual_user: ''
+      },
       portals: [],
       target_controls: {},
       target_iqn: component.targetForm.value.target_iqn
@@ -194,6 +214,7 @@ describe('IscsiTargetFormComponent', () => {
     component.onImageSelection({ option: { name: 'rbd/disk_2', selected: true } });
     expect(component.imagesSettings).toEqual({
       'rbd/disk_2': {
+        lun: 0,
         backstore: 'backstore:1',
         'backstore:1': {}
       }
@@ -219,6 +240,7 @@ describe('IscsiTargetFormComponent', () => {
     expect(component.groups.controls[0].value).toEqual({ disks: [], group_id: 'foo', members: [] });
     expect(component.imagesSettings).toEqual({
       'rbd/disk_2': {
+        lun: 0,
         backstore: 'backstore:1',
         'backstore:1': {}
       }
@@ -227,10 +249,10 @@ describe('IscsiTargetFormComponent', () => {
 
   describe('should test initiators', () => {
     beforeEach(() => {
+      component.onImageSelection({ option: { name: 'rbd/disk_2', selected: true } });
       component.targetForm.patchValue({ disks: ['rbd/disk_2'], acl_enabled: true });
       component.addGroup().patchValue({ name: 'group_1' });
       component.addGroup().patchValue({ name: 'group_2' });
-      component.onImageSelection({ option: { name: 'rbd/disk_2', selected: true } });
 
       component.addInitiator();
       component.initiators.controls[0].patchValue({
@@ -345,8 +367,8 @@ describe('IscsiTargetFormComponent', () => {
 
   describe('should submit request', () => {
     beforeEach(() => {
-      component.targetForm.patchValue({ disks: ['rbd/disk_2'], acl_enabled: true });
       component.onImageSelection({ option: { name: 'rbd/disk_2', selected: true } });
+      component.targetForm.patchValue({ disks: ['rbd/disk_2'], acl_enabled: true });
       component.portals.setValue(['node1:192.168.100.201', 'node2:192.168.100.202']);
       component.addInitiator().patchValue({
         client_iqn: 'iqn.initiator'
@@ -375,7 +397,16 @@ describe('IscsiTargetFormComponent', () => {
             luns: []
           }
         ],
-        disks: [{ backstore: 'backstore:1', controls: {}, image: 'disk_2', pool: 'rbd' }],
+        disks: [
+          {
+            backstore: 'backstore:1',
+            controls: {},
+            image: 'disk_2',
+            pool: 'rbd',
+            lun: 0,
+            wwn: undefined
+          }
+        ],
         groups: [
           { disks: [{ image: 'disk_2', pool: 'rbd' }], group_id: 'foo', members: ['iqn.initiator'] }
         ],
@@ -386,7 +417,13 @@ describe('IscsiTargetFormComponent', () => {
         ],
         target_controls: {},
         target_iqn: component.target_iqn,
-        acl_enabled: true
+        acl_enabled: true,
+        auth: {
+          password: '',
+          user: '',
+          mutual_password: '',
+          mutual_user: ''
+        }
       });
     });
 
@@ -403,7 +440,16 @@ describe('IscsiTargetFormComponent', () => {
             luns: []
           }
         ],
-        disks: [{ backstore: 'backstore:1', controls: {}, image: 'disk_2', pool: 'rbd' }],
+        disks: [
+          {
+            backstore: 'backstore:1',
+            controls: {},
+            image: 'disk_2',
+            pool: 'rbd',
+            lun: 0,
+            wwn: undefined
+          }
+        ],
         groups: [
           {
             disks: [{ image: 'disk_2', pool: 'rbd' }],
@@ -417,7 +463,13 @@ describe('IscsiTargetFormComponent', () => {
         ],
         target_controls: {},
         target_iqn: component.targetForm.value.target_iqn,
-        acl_enabled: true
+        acl_enabled: true,
+        auth: {
+          password: '',
+          user: '',
+          mutual_password: '',
+          mutual_user: ''
+        }
       });
     });
 
@@ -429,9 +481,24 @@ describe('IscsiTargetFormComponent', () => {
       expect(req.request.method).toBe('POST');
       expect(req.request.body).toEqual({
         clients: [],
-        disks: [{ backstore: 'backstore:1', controls: {}, image: 'disk_2', pool: 'rbd' }],
+        disks: [
+          {
+            backstore: 'backstore:1',
+            controls: {},
+            image: 'disk_2',
+            pool: 'rbd',
+            lun: 0,
+            wwn: undefined
+          }
+        ],
         groups: [],
         acl_enabled: false,
+        auth: {
+          password: '',
+          user: '',
+          mutual_password: '',
+          mutual_user: ''
+        },
         portals: [
           { host: 'node1', ip: '192.168.100.201' },
           { host: 'node2', ip: '192.168.100.202' }
index 0703e2e7bc4e1e5842a398fe985014d9bff6ff46..3b88e20dd8a60afeeb86ab90681a1f9af158fda8 100644 (file)
@@ -25,11 +25,15 @@ import { IscsiTargetIqnSettingsModalComponent } from '../iscsi-target-iqn-settin
   styleUrls: ['./iscsi-target-form.component.scss']
 })
 export class IscsiTargetFormComponent implements OnInit {
+  cephIscsiConfigVersion: number;
   targetForm: CdFormGroup;
   modalRef: BsModalRef;
+  api_version = 0;
   minimum_gateways = 1;
   target_default_controls: any;
+  target_controls_limits: any;
   disk_default_controls: any;
+  disk_controls_limits: any;
   backstores: string[];
   default_backstore: string;
   unsupported_rbd_features: any;
@@ -98,7 +102,8 @@ export class IscsiTargetFormComponent implements OnInit {
       this.iscsiService.listTargets(),
       this.rbdService.list(),
       this.iscsiService.portals(),
-      this.iscsiService.settings()
+      this.iscsiService.settings(),
+      this.iscsiService.version()
     ];
 
     if (this.router.url.startsWith('/block/iscsi/targets/edit')) {
@@ -119,9 +124,14 @@ export class IscsiTargetFormComponent implements OnInit {
         .value();
 
       // iscsiService.settings()
+      if ('api_version' in data[3]) {
+        this.api_version = data[3].api_version;
+      }
       this.minimum_gateways = data[3].config.minimum_gateways;
       this.target_default_controls = data[3].target_default_controls;
+      this.target_controls_limits = data[3].target_controls_limits;
       this.disk_default_controls = data[3].disk_default_controls;
+      this.disk_controls_limits = data[3].disk_controls_limits;
       this.backstores = data[3].backstores;
       this.default_backstore = data[3].default_backstore;
       this.unsupported_rbd_features = data[3].unsupported_rbd_features;
@@ -156,11 +166,14 @@ export class IscsiTargetFormComponent implements OnInit {
       });
       this.portalsSelections = [...portals];
 
+      // iscsiService.version()
+      this.cephIscsiConfigVersion = data[4]['ceph_iscsi_config_version'];
+
       this.createForm();
 
       // iscsiService.getTarget()
-      if (data[4]) {
-        this.resolveModel(data[4]);
+      if (data[5]) {
+        this.resolveModel(data[5]);
       }
     });
   }
@@ -179,11 +192,33 @@ export class IscsiTargetFormComponent implements OnInit {
           })
         ]
       }),
-      disks: new FormControl([]),
+      disks: new FormControl([], {
+        validators: [
+          CdValidators.custom('dupLunId', (value) => {
+            const lunIds = this.getLunIds(value);
+            return lunIds.length !== _.uniq(lunIds).length;
+          }),
+          CdValidators.custom('dupWwn', (value) => {
+            const wwns = this.getWwns(value);
+            return wwns.length !== _.uniq(wwns).length;
+          })
+        ]
+      }),
       initiators: new FormArray([]),
       groups: new FormArray([]),
       acl_enabled: new FormControl(false)
     });
+    // Target level authentication was introduced in ceph-iscsi config v11
+    if (this.cephIscsiConfigVersion > 10) {
+      const authFormGroup = new CdFormGroup({
+        user: new FormControl(''),
+        password: new FormControl(''),
+        mutual_user: new FormControl(''),
+        mutual_password: new FormControl('')
+      });
+      this.setAuthValidator(authFormGroup);
+      this.targetForm.addControl('auth', authFormGroup);
+    }
   }
 
   resolveModel(res) {
@@ -192,7 +227,12 @@ export class IscsiTargetFormComponent implements OnInit {
       target_controls: res.target_controls,
       acl_enabled: res.acl_enabled
     });
-
+    // Target level authentication was introduced in ceph-iscsi config v11
+    if (this.cephIscsiConfigVersion > 10) {
+      this.targetForm.patchValue({
+        auth: res.auth
+      });
+    }
     const portals = [];
     _.forEach(res.portals, (portal) => {
       const id = `${portal.host}:${portal.ip}`;
@@ -210,6 +250,12 @@ export class IscsiTargetFormComponent implements OnInit {
         backstore: disk.backstore
       };
       this.imagesSettings[id][disk.backstore] = disk.controls;
+      if ('lun' in disk) {
+        this.imagesSettings[id]['lun'] = disk.lun;
+      }
+      if ('wwn' in disk) {
+        this.imagesSettings[id]['wwn'] = disk.wwn;
+      }
 
       this.onImageSelection({ option: { name: id, selected: true } });
     });
@@ -272,6 +318,7 @@ export class IscsiTargetFormComponent implements OnInit {
     });
     this.disks.value.splice(index, 1);
     this.removeImageRefs(image);
+    this.targetForm.get('disks').updateValueAndValidity({ emitEvent: false });
     return false;
   }
 
@@ -309,6 +356,30 @@ export class IscsiTargetFormComponent implements OnInit {
     return result;
   }
 
+  isLunIdInUse(lunId, imageId) {
+    const images = this.disks.value.filter((currentImageId) => currentImageId !== imageId);
+    return this.getLunIds(images).includes(lunId);
+  }
+
+  getLunIds(images) {
+    return _.map(images, (image) => this.imagesSettings[image]['lun']);
+  }
+
+  nextLunId(imageId) {
+    const images = this.disks.value.filter((currentImageId) => currentImageId !== imageId);
+    const lunIdsInUse = this.getLunIds(images);
+    let lunIdCandidate = 0;
+    while (lunIdsInUse.includes(lunIdCandidate)) {
+      lunIdCandidate++;
+    }
+    return lunIdCandidate;
+  }
+
+  getWwns(images) {
+    const wwns = _.map(images, (image) => this.imagesSettings[image]['wwn']);
+    return wwns.filter((wwn) => _.isString(wwn) && wwn !== '');
+  }
+
   onImageSelection($event) {
     const option = $event.option;
 
@@ -316,9 +387,13 @@ export class IscsiTargetFormComponent implements OnInit {
       if (!this.imagesSettings[option.name]) {
         const defaultBackstore = this.getDefaultBackstore(option.name);
         this.imagesSettings[option.name] = {
-          backstore: defaultBackstore
+          backstore: defaultBackstore,
+          lun: this.nextLunId(option.name)
         };
         this.imagesSettings[option.name][defaultBackstore] = {};
+      } else if (this.isLunIdInUse(this.imagesSettings[option.name]['lun'], option.name)) {
+        // If the lun id is now in use, we have to generate a new one
+        this.imagesSettings[option.name]['lun'] = this.nextLunId(option.name);
       }
 
       _.forEach(this.imagesInitiatorSelections, (selections, i) => {
@@ -333,6 +408,7 @@ export class IscsiTargetFormComponent implements OnInit {
     } else {
       this.removeImageRefs(option.name);
     }
+    this.targetForm.get('disks').updateValueAndValidity({ emitEvent: false });
   }
 
   // Initiators
@@ -365,6 +441,25 @@ export class IscsiTargetFormComponent implements OnInit {
       cdIsInGroup: new FormControl(false)
     });
 
+    this.setAuthValidator(fg);
+
+    this.initiators.push(fg);
+
+    _.forEach(this.groupMembersSelections, (selections, i) => {
+      selections.push(new SelectOption(false, '', ''));
+      this.groupMembersSelections[i] = [...selections];
+    });
+
+    const disks = _.map(
+      this.targetForm.getValue('disks'),
+      (disk) => new SelectOption(false, disk, '')
+    );
+    this.imagesInitiatorSelections.push(disks);
+
+    return fg;
+  }
+
+  setAuthValidator(fg: CdFormGroup) {
     CdValidators.validateIf(
       fg.get('user'),
       () => fg.getValue('password') || fg.getValue('mutual_user') || fg.getValue('mutual_password'),
@@ -396,21 +491,6 @@ export class IscsiTargetFormComponent implements OnInit {
       [Validators.pattern(this.PASSWORD_REGEX)],
       [fg.get('user'), fg.get('password'), fg.get('mutual_user')]
     );
-
-    this.initiators.push(fg);
-
-    _.forEach(this.groupMembersSelections, (selections, i) => {
-      selections.push(new SelectOption(false, '', ''));
-      this.groupMembersSelections[i] = [...selections];
-    });
-
-    const disks = _.map(
-      this.targetForm.getValue('disks'),
-      (disk) => new SelectOption(false, disk, '')
-    );
-    this.imagesInitiatorSelections.push(disks);
-
-    return fg;
   }
 
   removeInitiator(index) {
@@ -563,6 +643,30 @@ export class IscsiTargetFormComponent implements OnInit {
       groups: []
     };
 
+    // Target level authentication was introduced in ceph-iscsi config v11
+    if (this.cephIscsiConfigVersion > 10) {
+      const targetAuth: CdFormGroup = this.targetForm.get('auth') as CdFormGroup;
+      if (!targetAuth.getValue('user')) {
+        targetAuth.get('user').setValue('');
+      }
+      if (!targetAuth.getValue('password')) {
+        targetAuth.get('password').setValue('');
+      }
+      if (!targetAuth.getValue('mutual_user')) {
+        targetAuth.get('mutual_user').setValue('');
+      }
+      if (!targetAuth.getValue('mutual_password')) {
+        targetAuth.get('mutual_password').setValue('');
+      }
+      const acl_enabled = this.targetForm.getValue('acl_enabled');
+      request['auth'] = {
+        user: acl_enabled ? '' : targetAuth.getValue('user'),
+        password: acl_enabled ? '' : targetAuth.getValue('password'),
+        mutual_user: acl_enabled ? '' : targetAuth.getValue('mutual_user'),
+        mutual_password: acl_enabled ? '' : targetAuth.getValue('mutual_password')
+      };
+    }
+
     // Disks
     formValue.disks.forEach((disk) => {
       const imageSplit = disk.split('/');
@@ -571,7 +675,9 @@ export class IscsiTargetFormComponent implements OnInit {
         pool: imageSplit[0],
         image: imageSplit[1],
         backstore: backstore,
-        controls: this.imagesSettings[disk][backstore]
+        controls: this.imagesSettings[disk][backstore],
+        lun: this.imagesSettings[disk]['lun'],
+        wwn: this.imagesSettings[disk]['wwn']
       });
     });
 
@@ -663,7 +769,8 @@ export class IscsiTargetFormComponent implements OnInit {
   targetSettingsModal() {
     const initialState = {
       target_controls: this.targetForm.get('target_controls'),
-      target_default_controls: this.target_default_controls
+      target_default_controls: this.target_default_controls,
+      target_controls_limits: this.target_controls_limits
     };
 
     this.modalRef = this.modalService.show(IscsiTargetIqnSettingsModalComponent, { initialState });
@@ -673,8 +780,11 @@ export class IscsiTargetFormComponent implements OnInit {
     const initialState = {
       imagesSettings: this.imagesSettings,
       image: image,
+      api_version: this.api_version,
       disk_default_controls: this.disk_default_controls,
-      backstores: this.getValidBackstores(this.getImageById(image))
+      disk_controls_limits: this.disk_controls_limits,
+      backstores: this.getValidBackstores(this.getImageById(image)),
+      control: this.targetForm.get('disks')
     };
 
     this.modalRef = this.modalService.show(IscsiTargetImageSettingsModalComponent, {
index c0dd35b5fee947df980a743eefea342f02983a62..e2d6710d2a724a0f77ed39083dd40b27c82d5e02 100644 (file)
 <cd-modal>
   <ng-container class="modal-title">
-    <ng-container i18n>Settings</ng-container>&nbsp;
+    <ng-container i18n>Configure</ng-container>&nbsp;
     <small>{{ image }}</small>
   </ng-container>
 
   <ng-container class="modal-content">
-    <div class="modal-body">
-      <p class="alert-warning"
-         i18n>Changing these parameters from their default values is usually not necessary.</p>
+    <form name="settingsForm"
+          class="form"
+          #formDir="ngForm"
+          [formGroup]="settingsForm"
+          novalidate>
+      <div class="modal-body">
+        <p class="alert-warning"
+           i18n>Changing these parameters from their default values is usually not necessary.</p>
 
-      <!-- BACKSTORE -->
-      <div class="form-group row">
-        <div class="col-sm-12">
-          <label class="control-label"
-                 i18n>Backstore</label>
-          <select id="backstore"
-                  name="backstore"
-                  class="form-control"
-                  [(ngModel)]="model.backstore"
-                  [disabled]="backstores.length == 1">
-            <option *ngFor="let bs of backstores"
-                    [value]="bs">{{ bs | iscsiBackstore }}</option>
-          </select>
-        </div>
-      </div>
-
-      <!-- CONTROLS -->
-      <ng-container *ngFor="let bs of backstores">
-        <ng-container *ngIf="model.backstore === bs">
-          <div class="form-group row"
-               *ngFor="let setting of disk_default_controls[bs] | keyvalue">
+        <span *ngIf="api_version >= 1">
+          <legend class="cd-header"
+                  i18n>Identifier</legend>
+          <!-- LUN -->
+          <div class="form-group row">
             <div class="col-sm-12">
-              <label class="control-label"
-                     for="{{ setting.key }}">{{ setting.key }}</label>
+              <label class="col-form-label"
+                     for="lun">
+                <ng-container i18n>lun</ng-container>
+                <span class="required"></span>
+              </label>
               <input type="number"
                      class="form-control"
-                     [(ngModel)]="model[bs][setting.key]">
-              <span class="help-block">{{ helpText[setting.key]?.help }}</span>
+                     id="lun"
+                     name="lun"
+                     formControlName="lun">
+              <span class="invalid-feedback"
+                    *ngIf="settingsForm.showError('lun', formDir, 'required')"
+                    i18n>This field is required.</span>
+            </div>
+          </div>
+          <!-- WWN -->
+          <div class="form-group row">
+            <div class="col-sm-12">
+              <label class="col-form-label"
+                     for="wwn"
+                     i18n>wwn</label>
+              <input type="text"
+                     class="form-control"
+                     id="wwn"
+                     name="wwn"
+                     formControlName="wwn">
             </div>
           </div>
+        </span>
+
+        <legend class="cd-header"
+                i18n>Settings</legend>
+
+        <!-- BACKSTORE -->
+        <div class="form-group row">
+          <div class="col-sm-12">
+            <label class="control-label"
+                   i18n>Backstore</label>
+            <select id="backstore"
+                    name="backstore"
+                    class="form-control"
+                    formControlName="backstore">
+              <option *ngFor="let bs of backstores"
+                      [value]="bs">{{ bs | iscsiBackstore }}</option>
+            </select>
+          </div>
+        </div>
+
+        <!-- CONTROLS -->
+        <ng-container *ngFor="let bs of backstores">
+          <ng-container *ngIf="settingsForm.value['backstore'] === bs">
+            <div class="form-group row"
+                 *ngFor="let setting of disk_default_controls[bs] | keyvalue"
+                 [ngClass]="{'has-error': settingsForm.showError(setting.key, formDir)}">
+              <div class="col-sm-12">
+                <cd-iscsi-setting [settingsForm]="settingsForm"
+                                  [formDir]="formDir"
+                                  [setting]="setting.key"
+                                  [limits]="getDiskControlLimits(bs, setting.key)"></cd-iscsi-setting>
+              </div>
+            </div>
+          </ng-container>
         </ng-container>
-      </ng-container>
-    </div>
+      </div>
 
-    <div class="modal-footer">
-      <div class="button-group text-right">
-        <button class="btn btn-sm btn-primary"
-                (click)="save()"
-                i18n>Confirm</button>
-        <cd-back-button [back]="modalRef.hide"
-                        name="Cancel"
-                        i18n-name>
-        </cd-back-button>
+      <div class="modal-footer">
+        <div class="button-group text-right">
+          <cd-submit-button i18n
+                            [form]="settingsForm"
+                            (submitAction)="save()">Confirm</cd-submit-button>
+          <cd-back-button [back]="modalRef.hide"
+                          name="Cancel"
+                          i18n-name>
+          </cd-back-button>
+        </div>
       </div>
-    </div>
+
+    </form>
   </ng-container>
 </cd-modal>
index 00f4da5fa07dc138e1830d71755cfc775f8e3ef0..921292bcdb046a4e9f862b88b147b616e6684326 100644 (file)
@@ -1,12 +1,13 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { FormsModule } from '@angular/forms';
+import { FormControl, ReactiveFormsModule } from '@angular/forms';
 import { RouterTestingModule } from '@angular/router/testing';
 
 import { BsModalRef } from 'ngx-bootstrap/modal';
 
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
 import { SharedModule } from '../../../shared/shared.module';
+import { IscsiSettingComponent } from '../iscsi-setting/iscsi-setting.component';
 import { IscsiTargetImageSettingsModalComponent } from './iscsi-target-image-settings-modal.component';
 
 describe('IscsiTargetImageSettingsModalComponent', () => {
@@ -14,8 +15,8 @@ describe('IscsiTargetImageSettingsModalComponent', () => {
   let fixture: ComponentFixture<IscsiTargetImageSettingsModalComponent>;
 
   configureTestBed({
-    declarations: [IscsiTargetImageSettingsModalComponent],
-    imports: [SharedModule, FormsModule, HttpClientTestingModule, RouterTestingModule],
+    declarations: [IscsiTargetImageSettingsModalComponent, IscsiSettingComponent],
+    imports: [SharedModule, ReactiveFormsModule, HttpClientTestingModule, RouterTestingModule],
     providers: [BsModalRef, i18nProviders]
   });
 
@@ -34,7 +35,29 @@ describe('IscsiTargetImageSettingsModalComponent', () => {
         baz: 3
       }
     };
+    component.disk_controls_limits = {
+      'backstore:1': {
+        foo: {
+          min: 1,
+          max: 512,
+          type: 'int'
+        },
+        bar: {
+          min: 1,
+          max: 512,
+          type: 'int'
+        }
+      },
+      'backstore:2': {
+        baz: {
+          min: 1,
+          max: 512,
+          type: 'int'
+        }
+      }
+    };
     component.backstores = ['backstore:1', 'backstore:2'];
+    component.control = new FormControl();
 
     component.ngOnInit();
     fixture.detectChanges();
@@ -44,22 +67,27 @@ describe('IscsiTargetImageSettingsModalComponent', () => {
     expect(component).toBeTruthy();
   });
 
-  it('should fill the model', () => {
-    expect(component.model).toEqual({
+  it('should fill the form', () => {
+    expect(component.settingsForm.value).toEqual({
+      lun: null,
+      wwn: null,
       backstore: 'backstore:1',
-      'backstore:1': {},
-      'backstore:2': {}
+      foo: null,
+      bar: null,
+      baz: null
     });
   });
 
   it('should save changes to imagesSettings', () => {
-    component.model['backstore:1'] = { foo: 1234 };
+    component.settingsForm.controls['foo'].setValue(1234);
     expect(component.imagesSettings).toEqual({
       'rbd/disk_1': { backstore: 'backstore:1', 'backstore:1': {} }
     });
     component.save();
     expect(component.imagesSettings).toEqual({
       'rbd/disk_1': {
+        lun: null,
+        wwn: null,
         backstore: 'backstore:1',
         'backstore:1': {
           foo: 1234
index 310942a590ab707ef5ddd9ec9779af11b709bcef..b8b527623fc1e9521a1f810aa44348af3e56e612 100644 (file)
@@ -1,9 +1,11 @@
 import { Component, OnInit } from '@angular/core';
+import { AbstractControl, FormControl } from '@angular/forms';
 
 import * as _ from 'lodash';
 import { BsModalRef } from 'ngx-bootstrap/modal';
 
 import { IscsiService } from '../../../shared/api/iscsi.service';
+import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 
 @Component({
   selector: 'cd-iscsi-target-image-settings-modal',
@@ -13,34 +15,68 @@ import { IscsiService } from '../../../shared/api/iscsi.service';
 export class IscsiTargetImageSettingsModalComponent implements OnInit {
   image: string;
   imagesSettings: any;
+  api_version: number;
   disk_default_controls: any;
+  disk_controls_limits: any;
   backstores: any;
+  control: AbstractControl;
 
-  model: any;
-  helpText: any;
+  settingsForm: CdFormGroup;
 
   constructor(public modalRef: BsModalRef, public iscsiService: IscsiService) {}
 
   ngOnInit() {
-    this.helpText = this.iscsiService.imageAdvancedSettings;
-
-    this.model = _.cloneDeep(this.imagesSettings[this.image]);
+    const fg = {
+      backstore: new FormControl(this.imagesSettings[this.image]['backstore']),
+      lun: new FormControl(this.imagesSettings[this.image]['lun']),
+      wwn: new FormControl(this.imagesSettings[this.image]['wwn'])
+    };
     _.forEach(this.backstores, (backstore) => {
-      this.model[backstore] = this.model[backstore] || {};
+      const model = this.imagesSettings[this.image][backstore] || {};
+      _.forIn(this.disk_default_controls[backstore], (_value, key) => {
+        fg[key] = new FormControl(model[key]);
+      });
     });
+
+    this.settingsForm = new CdFormGroup(fg);
+  }
+
+  getDiskControlLimits(backstore, setting) {
+    if (this.disk_controls_limits) {
+      return this.disk_controls_limits[backstore][setting];
+    }
+    // backward compatibility
+    return { type: 'int' };
   }
 
   save() {
-    const backstore = this.model.backstore;
+    const backstore = this.settingsForm.controls['backstore'].value;
+    const lun = this.settingsForm.controls['lun'].value;
+    const wwn = this.settingsForm.controls['wwn'].value;
     const settings = {};
-    _.forIn(this.model[backstore], (value, key) => {
-      if (!(value === '' || value === null)) {
-        settings[key] = value;
+    _.forIn(this.settingsForm.controls, (control, key) => {
+      if (
+        !(control.value === '' || control.value === null) &&
+        key in this.disk_default_controls[this.settingsForm.value['backstore']]
+      ) {
+        settings[key] = control.value;
+        // If one setting belongs to multiple backstores, we have to update it in all backstores
+        _.forEach(this.backstores, (currentBackstore) => {
+          if (currentBackstore !== backstore) {
+            const model = this.imagesSettings[this.image][currentBackstore] || {};
+            if (key in model) {
+              this.imagesSettings[this.image][currentBackstore][key] = control.value;
+            }
+          }
+        });
       }
     });
     this.imagesSettings[this.image]['backstore'] = backstore;
+    this.imagesSettings[this.image]['lun'] = lun;
+    this.imagesSettings[this.image]['wwn'] = wwn;
     this.imagesSettings[this.image][backstore] = settings;
     this.imagesSettings = { ...this.imagesSettings };
+    this.control.updateValueAndValidity({ emitEvent: false });
     this.modalRef.hide();
   }
 }
index 4707dafe8d2b1761b1bcbe3657cb1d7a5fcccb28..8b5c36a8e5a4cd8ed3a9413c8ff274bb6d305f70 100644 (file)
              *ngFor="let setting of settingsForm.controls | keyvalue"
              [ngClass]="{'has-error': settingsForm.showError(setting.key, formDir)}">
           <div class="col-sm-12">
-            <label class="control-label"
-                   for="{{ setting.key }}">{{ setting.key }}</label>
-            <input class="form-control"
-                   *ngIf="!isRadio(setting.key)"
-                   type="number"
-                   [formControlName]="setting.key">
-
-            <ng-container *ngIf="isRadio(setting.key)">
-              <br>
-              <div class="radio radio-inline">
-                <input type="radio"
-                       [id]="setting.key + 'Yes'"
-                       value="Yes"
-                       [formControlName]="setting.key">
-                <label [for]="setting.key + 'Yes'">Yes</label>
-              </div>
-              <div class="radio radio-inline">
-                <input type="radio"
-                       [id]="setting.key + 'No'"
-                       value="No"
-                       [formControlName]="setting.key">
-                <label [for]="setting.key + 'No'">No</label>
-              </div>
-            </ng-container>
-
-            <span class="help-block">{{ helpText[setting.key]?.help }}</span>
+            <cd-iscsi-setting [settingsForm]="settingsForm"
+                              [formDir]="formDir"
+                              [setting]="setting.key"
+                              [limits]="getTargetControlLimits(setting.key)"></cd-iscsi-setting>
           </div>
         </div>
       </div>
index 6666731d359613192e225741b5b7876d5a8a6ba6..521bcbf22d8070a3e3c1eb08df25f9fd301c4f83 100644 (file)
@@ -7,6 +7,7 @@ import { BsModalRef } from 'ngx-bootstrap/modal';
 
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
 import { SharedModule } from '../../../shared/shared.module';
+import { IscsiSettingComponent } from '../iscsi-setting/iscsi-setting.component';
 import { IscsiTargetIqnSettingsModalComponent } from './iscsi-target-iqn-settings-modal.component';
 
 describe('IscsiTargetIqnSettingsModalComponent', () => {
@@ -14,7 +15,7 @@ describe('IscsiTargetIqnSettingsModalComponent', () => {
   let fixture: ComponentFixture<IscsiTargetIqnSettingsModalComponent>;
 
   configureTestBed({
-    declarations: [IscsiTargetIqnSettingsModalComponent],
+    declarations: [IscsiTargetIqnSettingsModalComponent, IscsiSettingComponent],
     imports: [SharedModule, ReactiveFormsModule, HttpClientTestingModule, RouterTestingModule],
     providers: [BsModalRef, i18nProviders]
   });
@@ -26,7 +27,24 @@ describe('IscsiTargetIqnSettingsModalComponent', () => {
     component.target_default_controls = {
       cmdsn_depth: 1,
       dataout_timeout: 2,
-      first_burst_length: 'Yes'
+      first_burst_length: true
+    };
+    component.target_controls_limits = {
+      cmdsn_depth: {
+        min: 1,
+        max: 512,
+        type: 'int'
+      },
+      dataout_timeout: {
+        min: 2,
+        max: 60,
+        type: 'int'
+      },
+      first_burst_length: {
+        max: 16777215,
+        min: 512,
+        type: 'int'
+      }
     };
     component.ngOnInit();
     fixture.detectChanges();
index eef5276cb73dabb41e921fd0149136284569d76b..26e3cb0f3c9b9f90563a1e70fb044339d15b193c 100644 (file)
@@ -15,16 +15,14 @@ import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 export class IscsiTargetIqnSettingsModalComponent implements OnInit {
   target_controls: FormControl;
   target_default_controls: any;
+  target_controls_limits: any;
 
   settingsForm: CdFormGroup;
-  helpText: any;
 
   constructor(public modalRef: BsModalRef, public iscsiService: IscsiService) {}
 
   ngOnInit() {
     const fg = {};
-    this.helpText = this.iscsiService.targetAdvancedSettings;
-
     _.forIn(this.target_default_controls, (_value, key) => {
       fg[key] = new FormControl(this.target_controls.value[key]);
     });
@@ -44,7 +42,14 @@ export class IscsiTargetIqnSettingsModalComponent implements OnInit {
     this.modalRef.hide();
   }
 
-  isRadio(control) {
-    return ['Yes', 'No'].indexOf(this.target_default_controls[control]) !== -1;
+  getTargetControlLimits(setting) {
+    if (this.target_controls_limits) {
+      return this.target_controls_limits[setting];
+    }
+    // backward compatibility
+    if (['Yes', 'No'].includes(this.target_default_controls[setting])) {
+      return { type: 'bool' };
+    }
+    return { type: 'int' };
   }
 }
index 084182df963ca801867a54502b0e0ca6a772ade3..bcd841d9bdc0109c2f04fac971e60cdd73d3ffc2 100644 (file)
@@ -42,6 +42,7 @@
 
   <cd-iscsi-target-details cdTableDetail
                            *ngIf="selection.hasSingleSelection"
+                           [cephIscsiConfigVersion]="cephIscsiConfigVersion"
                            [selection]="selection"
                            [settings]="settings"></cd-iscsi-target-details>
 </cd-table>
index 2f93c86a63ea2bb5f3ca8220939a1eec3ae958e3..dbe889648ed04d51af11378b8476858126799ec5 100644 (file)
@@ -10,6 +10,7 @@ import { BehaviorSubject, of } from 'rxjs';
 
 import {
   configureTestBed,
+  expectItemTasks,
   i18nProviders,
   PermissionHelper
 } from '../../../../testing/unit-test-helper';
@@ -57,6 +58,7 @@ describe('IscsiTargetListComponent', () => {
     summaryService['summaryData$'] = summaryService['summaryDataSource'].asObservable();
 
     spyOn(iscsiService, 'status').and.returnValue(of({ available: true }));
+    spyOn(iscsiService, 'version').and.returnValue(of({ ceph_iscsi_config_version: 11 }));
   });
 
   it('should create', () => {
@@ -136,10 +138,6 @@ describe('IscsiTargetListComponent', () => {
       summaryService.addRunningTask(task);
     };
 
-    const expectTargetTasks = (target: any, executing: string) => {
-      expect(target.cdExecuting).toEqual(executing);
-    };
-
     beforeEach(() => {
       targets = [];
       addTarget('iqn.a');
@@ -160,16 +158,16 @@ describe('IscsiTargetListComponent', () => {
     it('should add a new target from a task', () => {
       addTask('iscsi/target/create', 'iqn.d');
       expect(component.targets.length).toBe(4);
-      expectTargetTasks(component.targets[0], undefined);
-      expectTargetTasks(component.targets[1], undefined);
-      expectTargetTasks(component.targets[2], undefined);
-      expectTargetTasks(component.targets[3], 'Creating');
+      expectItemTasks(component.targets[0], undefined);
+      expectItemTasks(component.targets[1], undefined);
+      expectItemTasks(component.targets[2], undefined);
+      expectItemTasks(component.targets[3], 'Creating');
     });
 
     it('should show when an existing target is being modified', () => {
       addTask('iscsi/target/delete', 'iqn.b');
       expect(component.targets.length).toBe(3);
-      expectTargetTasks(component.targets[1], 'Deleting');
+      expectItemTasks(component.targets[1], 'Deleting');
     });
   });
 
@@ -190,7 +188,7 @@ describe('IscsiTargetListComponent', () => {
       scenario = {
         fn: () => tableActions.getCurrentButton().name,
         single: 'Edit',
-        empty: 'Add'
+        empty: 'Create'
       };
     });
 
@@ -199,7 +197,7 @@ describe('IscsiTargetListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 1);
       });
 
-      it(`shows 'Edit' for single selection else 'Add' as main action`, () => {
+      it(`shows 'Edit' for single selection else 'Create' as main action`, () => {
         permissionHelper.testScenarios(scenario);
       });
 
@@ -231,12 +229,12 @@ describe('IscsiTargetListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 1);
       });
 
-      it(`shows 'Delete' for single selection else 'Add' as main action`, () => {
+      it(`shows 'Delete' for single selection else 'Create' as main action`, () => {
         scenario.single = 'Delete';
         permissionHelper.testScenarios(scenario);
       });
 
-      it(`shows 'Add' and 'Delete' actions`, () => {
+      it(`shows 'Create' and 'Delete' actions`, () => {
         expect(tableActions.tableActions.length).toBe(2);
         expect(tableActions.tableActions).toEqual([
           component.tableActions[0],
@@ -269,12 +267,12 @@ describe('IscsiTargetListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 0);
       });
 
-      it(`shows 'Add' for single selection and 'Add' as main action`, () => {
-        scenario.single = 'Add';
+      it(`shows 'Create' for single selection and 'Create' as main action`, () => {
+        scenario.single = 'Create';
         permissionHelper.testScenarios(scenario);
       });
 
-      it(`shows 'Add' actions`, () => {
+      it(`shows 'Create' actions`, () => {
         expect(tableActions.tableActions.length).toBe(1);
         expect(tableActions.tableActions).toEqual([component.tableActions[0]]);
       });
index c1f66967f9b56c7573c386927bfcfd4fb3075693..8e0e3776d45d6a8f3ea4be82b30b58845c07929d 100644 (file)
@@ -6,6 +6,7 @@ import { Subscription } from 'rxjs';
 
 import { IscsiService } from '../../../shared/api/iscsi.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
@@ -36,6 +37,7 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
   modalRef: BsModalRef;
   permissions: Permissions;
   selection = new CdTableSelection();
+  cephIscsiConfigVersion: number;
   settings: any;
   status: string;
   summaryDataSubscription: Subscription;
@@ -58,7 +60,8 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
     private cephReleaseNamePipe: CephReleaseNamePipe,
     private summaryservice: SummaryService,
     private modalService: BsModalService,
-    private taskWrapper: TaskWrapperService
+    private taskWrapper: TaskWrapperService,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permissions = this.authStorageService.getPermissions();
 
@@ -66,20 +69,20 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
       {
         permission: 'create',
         icon: 'fa-plus',
-        routerLink: () => '/block/iscsi/targets/add',
-        name: this.i18n('Add')
+        routerLink: () => '/block/iscsi/targets/create',
+        name: this.actionLabels.CREATE
       },
       {
         permission: 'update',
         icon: 'fa-pencil',
         routerLink: () => `/block/iscsi/targets/edit/${this.selection.first().target_iqn}`,
-        name: this.i18n('Edit')
+        name: this.actionLabels.EDIT
       },
       {
         permission: 'delete',
         icon: 'fa-times',
         click: () => this.deleteIscsiTargetModal(),
-        name: this.i18n('Delete')
+        name: this.actionLabels.DELETE
       }
     ];
   }
@@ -113,15 +116,18 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
       this.available = result.available;
 
       if (result.available) {
-        this.taskListService.init(
-          () => this.iscsiService.listTargets(),
-          (resp) => this.prepareResponse(resp),
-          (targets) => (this.targets = targets),
-          () => this.onFetchError(),
-          this.taskFilter,
-          this.itemFilter,
-          this.builders
-        );
+        this.iscsiService.version().subscribe((res: any) => {
+          this.cephIscsiConfigVersion = res['ceph_iscsi_config_version'];
+          this.taskListService.init(
+            () => this.iscsiService.listTargets(),
+            (resp) => this.prepareResponse(resp),
+            (targets) => (this.targets = targets),
+            () => this.onFetchError(),
+            this.taskFilter,
+            this.itemFilter,
+            this.builders
+          );
+        });
 
         this.iscsiService.settings().subscribe((settings: any) => {
           this.settings = settings;
@@ -171,7 +177,8 @@ export class IscsiTargetListComponent implements OnInit, OnDestroy {
 
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
-        itemDescription: this.i18n('iSCSI'),
+        itemDescription: this.i18n('iSCSI target'),
+        itemNames: [target_iqn],
         submitActionObservable: () =>
           this.taskWrapper.wrapTaskAroundCall({
             task: new FinishedTask('iscsi/target/delete', {
index b4666d71ed6a9165bd2f3ad1dc749807bc6072db..98d4f48b25092f40c3fc6766bdfb282fd456b75e 100644 (file)
@@ -134,6 +134,7 @@ export class PoolListComponent implements OnInit, OnDestroy {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: this.i18n('mirror peer'),
+        itemNames: [`${poolName} (${peerUUID})`],
         submitActionObservable: () =>
           new Observable((observer: Subscriber<any>) => {
             this.taskWrapper
index e9727240292bf6dd64016838bb194334d80e9c2d..03a2c88aac63fa77774a6ec459758827f85a9bd2 100644 (file)
@@ -1,5 +1,5 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ComponentFixture, discardPeriodicTasks, fakeAsync, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
 import { ActivatedRoute, Router } from '@angular/router';
 import { RouterTestingModule } from '@angular/router/testing';
@@ -9,6 +9,8 @@ import { ToastrModule } from 'ngx-toastr';
 
 import { By } from '@angular/platform-browser';
 import { of } from 'rxjs';
+import { delay } from 'rxjs/operators';
+
 import { ActivatedRouteStub } from '../../../../testing/activated-route-stub';
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
 import { RbdService } from '../../../shared/api/rbd.service';
@@ -55,6 +57,117 @@ describe('RbdFormComponent', () => {
     expect(component).toBeTruthy();
   });
 
+  describe('create/edit/clone/copy image', () => {
+    let createAction;
+    let editAction;
+    let cloneAction;
+    let copyAction;
+    let rbdServiceGetSpy;
+
+    beforeEach(() => {
+      createAction = spyOn(component, 'createAction').and.stub();
+      editAction = spyOn(component, 'editAction').and.stub();
+      cloneAction = spyOn(component, 'cloneAction').and.stub();
+      copyAction = spyOn(component, 'copyAction').and.stub();
+      spyOn(component, 'setResponse').and.stub();
+      spyOn(TestBed.get(Router), 'navigate').and.stub();
+      rbdServiceGetSpy = spyOn(TestBed.get(RbdService), 'get');
+      rbdServiceGetSpy.and.returnValue(of({ pool_name: 'foo', pool_image: 'bar' }));
+      component.mode = undefined;
+    });
+
+    it('should create image', () => {
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(1);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+    });
+
+    it('should not edit image if no image data is received', fakeAsync(() => {
+      component.mode = RbdFormMode.editing;
+      rbdServiceGetSpy.and.returnValue(
+        of({ pool_name: 'foo', pool_image: 'bar' }).pipe(delay(100))
+      );
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+
+      discardPeriodicTasks();
+    }));
+
+    it('should edit image after image data is received', () => {
+      component.mode = RbdFormMode.editing;
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(1);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+    });
+
+    it('should not clone image if no image data is received', fakeAsync(() => {
+      component.mode = RbdFormMode.cloning;
+      rbdServiceGetSpy.and.returnValue(
+        of({ pool_name: 'foo', pool_image: 'bar' }).pipe(delay(100))
+      );
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+
+      discardPeriodicTasks();
+    }));
+
+    it('should clone image after image data is received', () => {
+      component.mode = RbdFormMode.cloning;
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(1);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+    });
+
+    it('should not copy image if no image data is received', fakeAsync(() => {
+      component.mode = RbdFormMode.copying;
+      rbdServiceGetSpy.and.returnValue(
+        of({ pool_name: 'foo', pool_image: 'bar' }).pipe(delay(100))
+      );
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(0);
+
+      discardPeriodicTasks();
+    }));
+
+    it('should copy image after image data is received', () => {
+      component.mode = RbdFormMode.copying;
+      component.ngOnInit();
+      component.submit();
+
+      expect(createAction).toHaveBeenCalledTimes(0);
+      expect(editAction).toHaveBeenCalledTimes(0);
+      expect(cloneAction).toHaveBeenCalledTimes(0);
+      expect(copyAction).toHaveBeenCalledTimes(1);
+    });
+  });
+
   describe('should test decodeURIComponent of params', () => {
     let rbdService: RbdService;
 
index ba22359761fa6791cb393818cc26f00f8d261a82..6e9bb294ce1d4ee6bc301134f38d8aa572047b9a 100644 (file)
@@ -4,7 +4,8 @@ import { ActivatedRoute, Router } from '@angular/router';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
 import * as _ from 'lodash';
-import { Observable } from 'rxjs';
+import { AsyncSubject, Observable } from 'rxjs';
+import { switchMap } from 'rxjs/operators';
 
 import { PoolService } from '../../../shared/api/pool.service';
 import { RbdService } from '../../../shared/api/rbd.service';
@@ -82,6 +83,7 @@ export class RbdFormComponent implements OnInit {
   ];
   action: string;
   resource: string;
+  private rbdImage = new AsyncSubject();
 
   constructor(
     private authStorageService: AuthStorageService,
@@ -227,6 +229,7 @@ export class RbdFormComponent implements OnInit {
         }
         this.rbdService.get(poolName, rbdName).subscribe((resp: RbdFormResponseModel) => {
           this.setResponse(resp, this.snapName);
+          this.rbdImage.next(resp);
         });
       });
     } else {
@@ -638,22 +641,28 @@ export class RbdFormComponent implements OnInit {
   }
 
   submit() {
-    let action: Observable<any>;
-
-    if (this.mode === this.rbdFormMode.editing) {
-      action = this.editAction();
-    } else if (this.mode === this.rbdFormMode.cloning) {
-      action = this.cloneAction();
-    } else if (this.mode === this.rbdFormMode.copying) {
-      action = this.copyAction();
-    } else {
-      action = this.createAction();
+    if (!this.mode) {
+      this.rbdImage.next('create');
     }
-
-    action.subscribe(
-      undefined,
-      () => this.rbdForm.setErrors({ cdSubmitButton: true }),
-      () => this.router.navigate(['/block/rbd'])
-    );
+    this.rbdImage.complete();
+    this.rbdImage
+      .pipe(
+        switchMap(() => {
+          if (this.mode === this.rbdFormMode.editing) {
+            return this.editAction();
+          } else if (this.mode === this.rbdFormMode.cloning) {
+            return this.cloneAction();
+          } else if (this.mode === this.rbdFormMode.copying) {
+            return this.copyAction();
+          } else {
+            return this.createAction();
+          }
+        })
+      )
+      .subscribe(
+        () => {},
+        () => this.rbdForm.setErrors({ cdSubmitButton: true }),
+        () => this.router.navigate(['/block/rbd'])
+      );
   }
 }
index 1a418fe83ec4cf01ed3f359d6733195b2f8d3092..9244b91cba7ac9dd22bf931be49eb04f6c133172 100644 (file)
@@ -13,6 +13,7 @@ import { BehaviorSubject, of } from 'rxjs';
 
 import {
   configureTestBed,
+  expectItemTasks,
   i18nProviders,
   PermissionHelper
 } from '../../../../testing/unit-test-helper';
@@ -137,10 +138,6 @@ describe('RbdListComponent', () => {
       summaryService.addRunningTask(task);
     };
 
-    const expectImageTasks = (image: RbdModel, executing: string) => {
-      expect(image.cdExecuting).toEqual(executing);
-    };
-
     beforeEach(() => {
       images = [];
       addImage('a');
@@ -162,28 +159,28 @@ describe('RbdListComponent', () => {
     it('should add a new image from a task', () => {
       addTask('rbd/create', 'd');
       expect(component.images.length).toBe(4);
-      expectImageTasks(component.images[0], undefined);
-      expectImageTasks(component.images[1], undefined);
-      expectImageTasks(component.images[2], undefined);
-      expectImageTasks(component.images[3], 'Creating');
+      expectItemTasks(component.images[0], undefined);
+      expectItemTasks(component.images[1], undefined);
+      expectItemTasks(component.images[2], undefined);
+      expectItemTasks(component.images[3], 'Creating');
     });
 
     it('should show when a image is being cloned', () => {
       addTask('rbd/clone', 'd');
       expect(component.images.length).toBe(4);
-      expectImageTasks(component.images[0], undefined);
-      expectImageTasks(component.images[1], undefined);
-      expectImageTasks(component.images[2], undefined);
-      expectImageTasks(component.images[3], 'Cloning');
+      expectItemTasks(component.images[0], undefined);
+      expectItemTasks(component.images[1], undefined);
+      expectItemTasks(component.images[2], undefined);
+      expectItemTasks(component.images[3], 'Cloning');
     });
 
     it('should show when a image is being copied', () => {
       addTask('rbd/copy', 'd');
       expect(component.images.length).toBe(4);
-      expectImageTasks(component.images[0], undefined);
-      expectImageTasks(component.images[1], undefined);
-      expectImageTasks(component.images[2], undefined);
-      expectImageTasks(component.images[3], 'Copying');
+      expectItemTasks(component.images[0], undefined);
+      expectItemTasks(component.images[1], undefined);
+      expectItemTasks(component.images[2], undefined);
+      expectItemTasks(component.images[3], 'Copying');
     });
 
     it('should show when an existing image is being modified', () => {
@@ -191,9 +188,9 @@ describe('RbdListComponent', () => {
       addTask('rbd/delete', 'b');
       addTask('rbd/flatten', 'c');
       expect(component.images.length).toBe(3);
-      expectImageTasks(component.images[0], 'Updating');
-      expectImageTasks(component.images[1], 'Deleting');
-      expectImageTasks(component.images[2], 'Flattening');
+      expectItemTasks(component.images[0], 'Updating');
+      expectItemTasks(component.images[1], 'Deleting');
+      expectItemTasks(component.images[2], 'Flattening');
     });
   });
 
index 0ba72c8ef67973f7eef178fb1892f0c4fae3b2c8..2ddaa5ce33bc9726e5da2e7d0de59255d79b3140 100644 (file)
@@ -120,7 +120,7 @@ export class RbdListComponent implements OnInit {
         !selection.hasSingleSelection || selection.first().cdExecuting,
       icon: 'fa-copy',
       routerLink: () => `/block/rbd/copy/${getImageUri()}`,
-      name: this.i18n('Copy')
+      name: this.actionLabels.COPY
     };
     const flattenAction: CdTableAction = {
       permission: 'update',
@@ -128,13 +128,13 @@ export class RbdListComponent implements OnInit {
         !selection.hasSingleSelection || selection.first().cdExecuting || !selection.first().parent,
       icon: 'fa-chain-broken',
       click: () => this.flattenRbdModal(),
-      name: this.i18n('Flatten')
+      name: this.actionLabels.FLATTEN
     };
     const moveAction: CdTableAction = {
       permission: 'delete',
       icon: 'fa-trash-o',
       click: () => this.trashRbdModal(),
-      name: this.i18n('Move to Trash')
+      name: this.actionLabels.TRASH
     };
     this.tableActions = [
       addAction,
@@ -288,6 +288,7 @@ export class RbdListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: 'RBD',
+        itemNames: [`${poolName}/${imageName}`],
         submitActionObservable: () =>
           this.taskWrapper.wrapTaskAroundCall({
             task: new FinishedTask('rbd/delete', {
index eb408eb5f2d0f151d325e6fd84d0672daa73e057..b3e3a186a3a7c00b53f0d4757f5b36c755207de9 100644 (file)
@@ -1,5 +1,6 @@
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 
@@ -16,32 +17,32 @@ export class RbdSnapshotActionsModel {
   deleteSnap: CdTableAction;
   ordering: CdTableAction[];
 
-  constructor(i18n: I18n) {
+  constructor(i18n: I18n, actionLabels: ActionLabelsI18n) {
     this.i18n = i18n;
 
     this.create = {
       permission: 'create',
       icon: 'fa-plus',
-      name: this.i18n('Create')
+      name: actionLabels.CREATE
     };
     this.rename = {
       permission: 'update',
       icon: 'fa-pencil',
-      name: this.i18n('Rename')
+      name: actionLabels.RENAME
     };
     this.protect = {
       permission: 'update',
       icon: 'fa-lock',
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && !selection.first().is_protected,
-      name: this.i18n('Protect')
+      name: actionLabels.PROTECT
     };
     this.unprotect = {
       permission: 'update',
       icon: 'fa-unlock',
       visible: (selection: CdTableSelection) =>
         selection.hasSingleSelection && selection.first().is_protected,
-      name: this.i18n('Unprotect')
+      name: actionLabels.UNPROTECT
     };
     this.clone = {
       permission: 'create',
@@ -49,7 +50,7 @@ export class RbdSnapshotActionsModel {
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting,
       icon: 'fa-clone',
-      name: this.i18n('Clone')
+      name: actionLabels.CLONE
     };
     this.copy = {
       permission: 'create',
@@ -57,12 +58,12 @@ export class RbdSnapshotActionsModel {
       disable: (selection: CdTableSelection) =>
         !selection.hasSingleSelection || selection.first().cdExecuting,
       icon: 'fa-copy',
-      name: this.i18n('Copy')
+      name: actionLabels.COPY
     };
     this.rollback = {
       permission: 'update',
       icon: 'fa-undo',
-      name: this.i18n('Rollback')
+      name: actionLabels.ROLLBACK
     };
     this.deleteSnap = {
       permission: 'delete',
@@ -71,7 +72,7 @@ export class RbdSnapshotActionsModel {
         const first = selection.first();
         return !selection.hasSingleSelection || first.cdExecuting || first.is_protected;
       },
-      name: this.i18n('Delete')
+      name: actionLabels.DELETE
     };
 
     this.ordering = [
index 414ba70acffe5c745340c462d2538015fdeeb0ac..2f5c7846b983923bf155eb685ea84368ce56ebd1 100644 (file)
@@ -10,12 +10,14 @@ import { Subject, throwError as observableThrowError } from 'rxjs';
 
 import {
   configureTestBed,
+  expectItemTasks,
   i18nProviders,
   PermissionHelper
 } from '../../../../testing/unit-test-helper';
 import { ApiModule } from '../../../shared/api/api.module';
 import { RbdService } from '../../../shared/api/rbd.service';
 import { ComponentsModule } from '../../../shared/components/components.module';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { DataTableModule } from '../../../shared/datatable/datatable.module';
 import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component';
 import { ExecutingTask } from '../../../shared/models/executing-task';
@@ -80,6 +82,7 @@ describe('RbdSnapshotListComponent', () => {
     beforeEach(() => {
       fixture.detectChanges();
       const i18n = TestBed.get(I18n);
+      const actionLabelsI18n = TestBed.get(ActionLabelsI18n);
       called = false;
       rbdService = new RbdService(null, null);
       notificationService = new NotificationService(null, null, null);
@@ -95,7 +98,8 @@ describe('RbdSnapshotListComponent', () => {
         notificationService,
         null,
         null,
-        i18n
+        i18n,
+        actionLabelsI18n
       );
       spyOn(rbdService, 'deleteSnapshot').and.returnValue(observableThrowError({ status: 500 }));
       spyOn(notificationService, 'notifyTask').and.stub();
@@ -134,10 +138,6 @@ describe('RbdSnapshotListComponent', () => {
       summaryService.addRunningTask(task);
     };
 
-    const expectImageTasks = (snapshot: RbdSnapshotModel, executing: string) => {
-      expect(snapshot.cdExecuting).toEqual(executing);
-    };
-
     const refresh = (data) => {
       summaryService['summaryDataSource'].next(data);
     };
@@ -164,10 +164,10 @@ describe('RbdSnapshotListComponent', () => {
     it('should add a new image from a task', () => {
       addTask('rbd/snap/create', 'd');
       expect(component.snapshots.length).toBe(4);
-      expectImageTasks(component.snapshots[0], undefined);
-      expectImageTasks(component.snapshots[1], undefined);
-      expectImageTasks(component.snapshots[2], undefined);
-      expectImageTasks(component.snapshots[3], 'Creating');
+      expectItemTasks(component.snapshots[0], undefined);
+      expectItemTasks(component.snapshots[1], undefined);
+      expectItemTasks(component.snapshots[2], undefined);
+      expectItemTasks(component.snapshots[3], 'Creating');
     });
 
     it('should show when an existing image is being modified', () => {
@@ -175,9 +175,9 @@ describe('RbdSnapshotListComponent', () => {
       addTask('rbd/snap/delete', 'b');
       addTask('rbd/snap/rollback', 'c');
       expect(component.snapshots.length).toBe(3);
-      expectImageTasks(component.snapshots[0], 'Updating');
-      expectImageTasks(component.snapshots[1], 'Deleting');
-      expectImageTasks(component.snapshots[2], 'Rolling back');
+      expectItemTasks(component.snapshots[0], 'Updating');
+      expectItemTasks(component.snapshots[1], 'Deleting');
+      expectItemTasks(component.snapshots[2], 'Rolling back');
     });
   });
 
index 101525bf30b552f24922479251ff06dc2bb3e1b3..45470a0f8536b80e26bb449538a9aa1148f4831e 100644 (file)
@@ -8,6 +8,7 @@ import { of } from 'rxjs';
 import { RbdService } from '../../../shared/api/rbd.service';
 import { ConfirmationModalComponent } from '../../../shared/components/confirmation-modal/confirmation-modal.component';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -74,10 +75,11 @@ export class RbdSnapshotListComponent implements OnInit, OnChanges {
     private notificationService: NotificationService,
     private summaryService: SummaryService,
     private taskListService: TaskListService,
-    private i18n: I18n
+    private i18n: I18n,
+    private actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().rbdImage;
-    const actions = new RbdSnapshotActionsModel(this.i18n);
+    const actions = new RbdSnapshotActionsModel(this.i18n, this.actionLabels);
     actions.create.click = () => this.openCreateSnapshotModal();
     actions.rename.click = () => this.openEditSnapshotModal();
     actions.protect.click = () => this.toggleProtection();
@@ -272,6 +274,7 @@ export class RbdSnapshotListComponent implements OnInit, OnChanges {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: this.i18n('RBD snapshot'),
+        itemNames: [snapshotName],
         submitAction: () => this._asyncTask('deleteSnapshot', 'rbd/snap/delete', snapshotName)
       }
     });
index 403341c8a42143d1e034bebf37e66e0df0510bf5..dc84eaffdc5ac5b768bfc2f6c3703063ee66c670 100644 (file)
@@ -6,7 +6,11 @@ import { ToastrModule } from 'ngx-toastr';
 import { of } from 'rxjs';
 
 import { By } from '@angular/platform-browser';
-import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import {
+  configureTestBed,
+  expectItemTasks,
+  i18nProviders
+} from '../../../../testing/unit-test-helper';
 import { RbdService } from '../../../shared/api/rbd.service';
 import { CdTableSelection } from '../../../shared/models/cd-table-selection';
 import { ExecutingTask } from '../../../shared/models/executing-task';
@@ -74,10 +78,6 @@ describe('RbdTrashListComponent', () => {
       summaryService.addRunningTask(task);
     };
 
-    const expectImageTasks = (image: any, executing: string) => {
-      expect(image.cdExecuting).toEqual(executing);
-    };
-
     beforeEach(() => {
       images = [];
       addImage('1');
@@ -99,8 +99,8 @@ describe('RbdTrashListComponent', () => {
       addTask('rbd/trash/remove', '1');
       addTask('rbd/trash/restore', '2');
       expect(component.images.length).toBe(2);
-      expectImageTasks(component.images[0], 'Deleting');
-      expectImageTasks(component.images[1], 'Restoring');
+      expectItemTasks(component.images[0], 'Deleting');
+      expectItemTasks(component.images[1], 'Restoring');
     });
   });
 
index 71f32dbeb284505a57589e2190973d9283610ada..62f8b2b3dce12bc76381b86e014812c21300cd95 100644 (file)
@@ -7,6 +7,7 @@ import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
 
 import { RbdService } from '../../../shared/api/rbd.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
@@ -54,7 +55,8 @@ export class RbdTrashListComponent implements OnInit {
     private cdDatePipe: CdDatePipe,
     private taskListService: TaskListService,
     private taskWrapper: TaskWrapperService,
-    private i18n: I18n
+    private i18n: I18n,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().rbdImage;
 
@@ -62,13 +64,13 @@ export class RbdTrashListComponent implements OnInit {
       permission: 'update',
       icon: 'fa-undo',
       click: () => this.restoreModal(),
-      name: this.i18n('Restore')
+      name: this.actionLabels.RESTORE
     };
     const deleteAction: CdTableAction = {
       permission: 'delete',
       icon: 'fa-times',
       click: () => this.deleteModal(),
-      name: this.i18n('Delete')
+      name: this.actionLabels.DELETE
     };
     this.tableActions = [restoreAction, deleteAction];
   }
@@ -182,6 +184,7 @@ export class RbdTrashListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: 'RBD',
+        itemNames: [`${poolName}/${imageName}`],
         bodyTemplate: this.deleteTpl,
         bodyContext: { $implicit: expiresAt },
         submitActionObservable: () =>
index b98d70838a00c92536c32adf8520af46ed02d057..b81bc20ba1cff0f51c28e7cebabc79580c4719ed 100644 (file)
@@ -1,9 +1,9 @@
 <div class="chart-container">
   <canvas baseChart
           #chartCanvas
-          [datasets]="chart?.datasets"
-          [options]="chart?.options"
-          [chartType]="chart?.chartType">
+          [datasets]="chart.datasets"
+          [options]="chart.options"
+          [chartType]="chart.chartType">
   </canvas>
   <div class="chartjs-tooltip"
        #chartTooltip>
index 8a173162b87fcc70573490c54d74721fdcccee39..97fdcef4eeafea17693a2c7c58a455b09150e294 100644 (file)
@@ -9,6 +9,8 @@ describe('CephfsChartComponent', () => {
   let component: CephfsChartComponent;
   let fixture: ComponentFixture<CephfsChartComponent>;
 
+  const counter = [[0, 15], [5, 15], [10, 25], [15, 50]];
+
   configureTestBed({
     imports: [ChartsModule],
     declarations: [CephfsChartComponent]
@@ -17,10 +19,58 @@ describe('CephfsChartComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(CephfsChartComponent);
     component = fixture.componentInstance;
+    component.mdsCounter = {
+      'mds_server.handle_client_request': counter,
+      'mds_mem.ino': counter,
+      name: 'a'
+    };
     fixture.detectChanges();
   });
 
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  it('completed the chart', () => {
+    const lhs = component.chart.datasets[0].data;
+    expect(lhs.length).toBe(3);
+    expect(lhs).toEqual([
+      {
+        x: 5000,
+        y: 15
+      },
+      {
+        x: 10000,
+        y: 25
+      },
+      {
+        x: 15000,
+        y: 50
+      }
+    ]);
+
+    const rhs = component.chart.datasets[1].data;
+    expect(rhs.length).toBe(3);
+    expect(rhs).toEqual([
+      {
+        x: 5000,
+        y: 0
+      },
+      {
+        x: 10000,
+        y: 2
+      },
+      {
+        x: 15000,
+        y: 5
+      }
+    ]);
+  });
+
+  it('should force angular to update the chart datasets array in order to update the graph', () => {
+    const oldDatasets = component.chart.datasets;
+    component.ngOnChanges();
+    expect(oldDatasets).toEqual(component.chart.datasets);
+    expect(oldDatasets).not.toBe(component.chart.datasets);
+  });
 });
index e413744976225ac4387538b042b66e7636aa4d00..513f727d7d2378be4f56fdf254f3d5131ee5fe0a 100644 (file)
@@ -1,5 +1,6 @@
 import { Component, ElementRef, Input, OnChanges, OnInit, ViewChild } from '@angular/core';
 
+import { ChartDataSets, ChartOptions, ChartPoint, ChartType } from 'chart.js';
 import * as _ from 'lodash';
 import * as moment from 'moment';
 
@@ -22,7 +23,84 @@ export class CephfsChartComponent implements OnChanges, OnInit {
   lhsCounter = 'mds_mem.ino';
   rhsCounter = 'mds_server.handle_client_request';
 
-  chart: any;
+  chart: {
+    datasets: ChartDataSets[];
+    options: ChartOptions;
+    chartType: ChartType;
+  } = {
+    datasets: [
+      {
+        label: this.lhsCounter,
+        yAxisID: 'LHS',
+        data: [],
+        lineTension: 0.1
+      },
+      {
+        label: this.rhsCounter,
+        yAxisID: 'RHS',
+        data: [],
+        lineTension: 0.1
+      }
+    ],
+    options: {
+      title: {
+        text: '',
+        display: true
+      },
+      responsive: true,
+      maintainAspectRatio: false,
+      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: false,
+        mode: 'index',
+        intersect: false,
+        position: 'nearest',
+        callbacks: {
+          // Pick the Unix timestamp of the first tooltip item.
+          title: (tooltipItems, data): string => {
+            let ts = 0;
+            if (tooltipItems.length > 0) {
+              const item = tooltipItems[0];
+              const point = data.datasets[item.datasetIndex].data[item.index] as ChartPoint;
+              ts = point.x as number;
+            }
+            return ts.toString();
+          }
+        }
+      }
+    },
+    chartType: 'line'
+  };
 
   constructor() {}
 
@@ -30,128 +108,59 @@ export class CephfsChartComponent implements OnChanges, OnInit {
     if (_.isUndefined(this.mdsCounter)) {
       return;
     }
+    this.setChartTooltip();
+    this.updateChart();
+  }
 
-    const getTitle = (ts) => {
-      return moment(ts, 'x').format('LTS');
-    };
-
-    const getStyleTop = (tooltip) => {
-      return tooltip.caretY - tooltip.height - 15 + 'px';
-    };
-
-    const getStyleLeft = (tooltip) => {
-      return tooltip.caretX + 'px';
-    };
+  ngOnChanges() {
+    if (_.isUndefined(this.mdsCounter)) {
+      return;
+    }
+    this.updateChart();
+  }
 
+  private setChartTooltip() {
     const chartTooltip = new ChartTooltip(
       this.chartCanvas,
       this.chartTooltip,
-      getStyleLeft,
-      getStyleTop
+      (tooltip) => tooltip.caretX + 'px',
+      (tooltip) => tooltip.caretY - tooltip.height - 23 + 'px'
     );
-    chartTooltip.getTitle = getTitle;
+    chartTooltip.getTitle = (ts) => moment(ts, 'x').format('LTS');
     chartTooltip.checkOffset = true;
-
-    const lhsData = this.convert_timeseries(this.mdsCounter[this.lhsCounter]);
-    const rhsData = this.delta_timeseries(this.mdsCounter[this.rhsCounter]);
-
-    this.chart = {
-      datasets: [
-        {
-          label: this.lhsCounter,
-          yAxisID: 'LHS',
-          data: lhsData,
-          tension: 0.1
-        },
-        {
-          label: this.rhsCounter,
-          yAxisID: 'RHS',
-          data: rhsData,
-          tension: 0.1
-        }
-      ],
-      options: {
-        title: {
-          text: this.mdsCounter.name,
-          display: true
-        },
-        responsive: true,
-        maintainAspectRatio: false,
-        legend: {
-          position: 'top'
-        },
-        scales: {
-          xAxes: [
-            {
-              position: 'top',
-              type: 'time',
-              time: {
-                displayFormats: {
-                  quarter: 'MMM YYYY'
-                }
-              },
-              ticks: {
-                maxRotation: 0
-              }
-            }
-          ],
-          yAxes: [
-            {
-              id: 'LHS',
-              type: 'linear',
-              position: 'left',
-              min: 0
-            },
-            {
-              id: 'RHS',
-              type: 'linear',
-              position: 'right',
-              min: 0
-            }
-          ]
-        },
-        tooltips: {
-          enabled: false,
-          mode: 'index',
-          intersect: false,
-          position: 'nearest',
-          callbacks: {
-            // Pick the Unix timestamp of the first tooltip item.
-            title: function(tooltipItems, data) {
-              let ts = 0;
-              if (tooltipItems.length > 0) {
-                const item = tooltipItems[0];
-                ts = data.datasets[item.datasetIndex].data[item.index].x;
-              }
-              return ts;
-            }
-          },
-          custom: (tooltip) => {
-            chartTooltip.customTooltips(tooltip);
-          }
-        }
+    const chartOptions: ChartOptions = {
+      title: {
+        text: this.mdsCounter.name
       },
-      chartType: 'line'
+      tooltips: {
+        custom: (tooltip) => chartTooltip.customTooltips(tooltip)
+      }
     };
+    _.merge(this.chart, { options: chartOptions });
   }
 
-  ngOnChanges() {
-    if (!this.chart) {
-      return;
-    }
-
-    const lhsData = this.convert_timeseries(this.mdsCounter[this.lhsCounter]);
-    const rhsData = this.delta_timeseries(this.mdsCounter[this.rhsCounter]);
-
-    this.chart.datasets[0].data = lhsData;
-    this.chart.datasets[1].data = rhsData;
+  private updateChart() {
+    const chartDataSets: ChartDataSets[] = [
+      {
+        data: this.convertTimeSeries(this.mdsCounter[this.lhsCounter])
+      },
+      {
+        data: this.deltaTimeSeries(this.mdsCounter[this.rhsCounter])
+      }
+    ];
+    _.merge(this.chart, {
+      datasets: chartDataSets
+    });
+    this.chart.datasets = [...this.chart.datasets]; // Force angular to update
   }
 
-  // Convert ceph-mgr's time series format (list of 2-tuples
-  // with seconds-since-epoch timestamps) into what chart.js
-  // can handle (list of objects with millisecs-since-epoch
-  // timestamps)
-  convert_timeseries(sourceSeries) {
+  /**
+   * Convert ceph-mgr's time series format (list of 2-tuples
+   * with seconds-since-epoch timestamps) into what chart.js
+   * can handle (list of objects with millisecs-since-epoch
+   * timestamps)
+   */
+  private convertTimeSeries(sourceSeries) {
     const data = [];
     _.each(sourceSeries, (dp) => {
       data.push({
@@ -160,10 +169,17 @@ export class CephfsChartComponent implements OnChanges, OnInit {
       });
     });
 
+    /**
+     * MDS performance counters chart is expecting the same number of items
+     * from each data series. Since in deltaTimeSeries we are ignoring the first
+     * element, we will do the same here.
+     */
+    data.shift();
+
     return data;
   }
 
-  delta_timeseries(sourceSeries) {
+  private deltaTimeSeries(sourceSeries) {
     let i;
     let prev = sourceSeries[0];
     const result = [];
index f504d544853212ba549e96d9d8649f06bdc56eb4..82ea4b444e68d5380014e67804b624ed0d4963ca 100644 (file)
@@ -3,6 +3,7 @@ import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
 import { I18n } from '@ngx-translate/i18n-polyfill';
 
 import { ConfigurationService } from '../../../shared/api/configuration.service';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
 import { CdTableAction } from '../../../shared/models/cd-table-action';
 import { CdTableColumn } from '../../../shared/models/cd-table-column';
@@ -83,7 +84,8 @@ export class ConfigurationComponent implements OnInit {
   constructor(
     private authStorageService: AuthStorageService,
     private configurationService: ConfigurationService,
-    private i18n: I18n
+    private i18n: I18n,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().configOpt;
     const getConfigOptUri = () =>
@@ -92,7 +94,7 @@ export class ConfigurationComponent implements OnInit {
       permission: 'update',
       icon: 'fa-pencil',
       routerLink: () => `/configuration/edit/${getConfigOptUri()}`,
-      name: this.i18n('Edit'),
+      name: this.actionLabels.EDIT,
       disable: () => !this.isEditable(this.selection)
     };
     this.tableActions = [editAction];
index 57fb35851865ee2d1ec67f45848093b76eeac1d2..15d685a3c69f61eb37a9140c1e5ad6f29ea78332 100644 (file)
@@ -7,6 +7,7 @@ import { Observable } from 'rxjs';
 import { OsdService } from '../../../../shared/api/osd.service';
 import { ConfirmationModalComponent } from '../../../../shared/components/confirmation-modal/confirmation-modal.component';
 import { CriticalConfirmationModalComponent } from '../../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { ActionLabelsI18n } from '../../../../shared/constants/app.constants';
 import { TableComponent } from '../../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../../shared/enum/cell-template.enum';
 import { CdTableAction } from '../../../../shared/models/cd-table-action';
@@ -60,54 +61,55 @@ export class OsdListComponent implements OnInit {
     private osdService: OsdService,
     private dimlessBinaryPipe: DimlessBinaryPipe,
     private modalService: BsModalService,
-    private i18n: I18n
+    private i18n: I18n,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permissions = this.authStorageService.getPermissions();
     this.tableActions = [
       {
-        name: this.i18n('Scrub'),
+        name: this.actionLabels.SCRUB,
         permission: 'update',
         icon: 'fa-stethoscope',
         click: () => this.scrubAction(false),
         disable: () => !this.hasOsdSelected
       },
       {
-        name: this.i18n('Deep Scrub'),
+        name: this.actionLabels.DEEP_SCRUB,
         permission: 'update',
         icon: 'fa-cog',
         click: () => this.scrubAction(true),
         disable: () => !this.hasOsdSelected
       },
       {
-        name: this.i18n('Reweight'),
+        name: this.actionLabels.REWEIGHT,
         permission: 'update',
         click: () => this.reweight(),
         disable: () => !this.hasOsdSelected,
         icon: 'fa-balance-scale'
       },
       {
-        name: this.i18n('Mark Out'),
+        name: this.actionLabels.MARK_OUT,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('out'), this.osdService.markOut),
         disable: () => this.isNotSelectedOrInState('out'),
         icon: 'fa-arrow-left'
       },
       {
-        name: this.i18n('Mark In'),
+        name: this.actionLabels.MARK_IN,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('in'), this.osdService.markIn),
         disable: () => this.isNotSelectedOrInState('in'),
         icon: 'fa-arrow-right'
       },
       {
-        name: this.i18n('Mark Down'),
+        name: this.actionLabels.MARK_DOWN,
         permission: 'update',
         click: () => this.showConfirmationModal(this.i18n('down'), this.osdService.markDown),
         disable: () => this.isNotSelectedOrInState('down'),
         icon: 'fa-arrow-down'
       },
       {
-        name: this.i18n('Mark Lost'),
+        name: this.actionLabels.MARK_LOST,
         permission: 'delete',
         click: () =>
           this.showCriticalConfirmationModal(
@@ -120,7 +122,7 @@ export class OsdListComponent implements OnInit {
         icon: 'fa-unlink'
       },
       {
-        name: this.i18n('Purge'),
+        name: this.actionLabels.PURGE,
         permission: 'delete',
         click: () =>
           this.showCriticalConfirmationModal(
@@ -133,7 +135,7 @@ export class OsdListComponent implements OnInit {
         icon: 'fa-eraser'
       },
       {
-        name: this.i18n('Destroy'),
+        name: this.actionLabels.DESTROY,
         permission: 'delete',
         click: () =>
           this.showCriticalConfirmationModal(
index 9c8360eb7b0a9aa46255026254b9e69e197c6680..4cab7463a53914f2cb0fca735bd0d6763939a363 100644 (file)
@@ -168,6 +168,7 @@ export class SilenceListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: i18nSilence,
+        itemNames: [id],
         actionDescription: this.actionLabels.EXPIRE,
         submitActionObservable: () =>
           new Observable((observer: Subscriber<any>) => {
index 8c89000ca37d7237788f628aaf15ac4b543f60c8..de7892a07a682f6715c1278972edd56ae349800f 100644 (file)
@@ -272,7 +272,7 @@ describe('HealthComponent', () => {
     it('gets no data', () => {
       const chart = { dataset: [{}], options: {} };
       component.preparePgStatus(chart, {
-        pg_info: { pgs_per_osd: 0 }
+        pg_info: {}
       });
       expect(chart).toEqual(expectedChart([undefined, undefined, undefined, undefined]));
     });
@@ -281,7 +281,6 @@ describe('HealthComponent', () => {
       const chart = { dataset: [{}], options: {} };
       component.preparePgStatus(chart, {
         pg_info: {
-          pgs_per_osd: 10,
           statuses: {
             'clean+active+scrubbing+nonMappedState': 4,
             'clean+active+scrubbing': 2,
index 6cca3b5cac495862d4e0960c1deca8eda5e91fd8..3bc78c70074e19251a54b5767e54cc88c88c25af 100644 (file)
@@ -146,6 +146,7 @@ export class HealthComponent implements OnInit, OnDestroy {
 
   preparePgStatus(chart, data) {
     const categoryPgAmount = {};
+    let totalPgs = 0;
 
     _.forEach(data.pg_info.statuses, (pgAmount, pgStatesText) => {
       const categoryType = this.pgCategoryService.getTypeByStates(pgStatesText);
@@ -154,6 +155,7 @@ export class HealthComponent implements OnInit, OnDestroy {
         categoryPgAmount[categoryType] = 0;
       }
       categoryPgAmount[categoryType] += pgAmount;
+      totalPgs += pgAmount;
     });
 
     chart.dataset[0].data = this.pgCategoryService
@@ -161,22 +163,10 @@ export class HealthComponent implements OnInit, OnDestroy {
       .map((categoryType) => categoryPgAmount[categoryType]);
 
     chart.labels = [
-      `${this.i18n('Clean')} (${this.calcPercentage(
-        categoryPgAmount['clean'],
-        data.pg_info.pgs_per_osd
-      )}%)`,
-      `${this.i18n('Working')} (${this.calcPercentage(
-        categoryPgAmount['working'],
-        data.pg_info.pgs_per_osd
-      )}%)`,
-      `${this.i18n('Warning')} (${this.calcPercentage(
-        categoryPgAmount['warning'],
-        data.pg_info.pgs_per_osd
-      )}%)`,
-      `${this.i18n('Unknown')} (${this.calcPercentage(
-        categoryPgAmount['unknown'],
-        data.pg_info.pgs_per_osd
-      )}%)`
+      `${this.i18n('Clean')} (${this.calcPercentage(categoryPgAmount['clean'], totalPgs)}%)`,
+      `${this.i18n('Working')} (${this.calcPercentage(categoryPgAmount['working'], totalPgs)}%)`,
+      `${this.i18n('Warning')} (${this.calcPercentage(categoryPgAmount['warning'], totalPgs)}%)`,
+      `${this.i18n('Unknown')} (${this.calcPercentage(categoryPgAmount['unknown'], totalPgs)}%)`
     ];
   }
 
index e3effc8a525168c7629c5b4fe7673e506c125773..dea05634ebcf043df45e55590eef19d5514a7803 100644 (file)
@@ -6,8 +6,8 @@
         novalidate>
     <div class="panel panel-default">
       <div class="panel-heading">
-        <h3 class="panel-title"
-            i18n>NFS export {{ export_id ? cluster_id + ':' + export_id : '' }}</h3>
+        <h3 i18n="form title|Example: Create Pool@@formTitle"
+            class="panel-title">{{ action | titlecase }} {{ resource | upperFirst }}</h3>
       </div>
 
       <div class="panel-body">
             <select class="form-control"
                     formControlName="access_type"
                     name="access_type"
-                    id="access_type">
+                    id="access_type"
+                    (change)="accessTypeChangeHandler()">
               <option *ngIf="nfsAccessType === null"
                       value=""
                       i18n>Loading...</option>
                   *ngIf="nfsForm.getValue('access_type')">
               {{ getAccessTypeHelp(nfsForm.getValue('access_type')) }}
             </span>
+            <span class="text-warning"
+                  *ngIf="nfsForm.getValue('access_type') === 'RW' && nfsForm.getValue('name') === 'RGW'"
+                  i18n>The Object Gateway NFS backend has a number of
+              limitations which will seriously affect applications writing to
+              the share. Please consult the
+              <a href="{{docsUrl}}"
+                 target="_blank"> documentation</a> for details before enabling write access.</span>
             <span class="help-block"
                   *ngIf="nfsForm.showError('access_type', formDir, 'required')"
                   i18n>Required field</span>
 
       <div class="panel-footer">
         <div class="button-group text-right">
-          <cd-submit-button [form]="formDir"
-                            type="button"
-                            (submitAction)="submitAction()">
-            <ng-container i18n>Submit</ng-container>
-          </cd-submit-button>
+          <cd-submit-button
+            [form]="formDir"
+            (submitAction)="submitAction()"
+            i18n="form action button|Example: Create Pool@@formActionButton"
+            type="button">{{ action | titlecase }} {{ resource | upperFirst }}</cd-submit-button>
           <cd-back-button></cd-back-button>
         </div>
       </div>
index cd9f3299caee9d21f6fb67631223d67c465d467d..bcc51a84de0a2bf30b70d004bec9c7ecacc51e21 100644 (file)
@@ -9,6 +9,7 @@ import { ToastrModule } from 'ngx-toastr';
 
 import { ActivatedRouteStub } from '../../../../testing/activated-route-stub';
 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { SummaryService } from '../../../shared/services/summary.service';
 import { SharedModule } from '../../../shared/shared.module';
 import { NfsFormClientComponent } from '../nfs-form-client/nfs-form-client.component';
@@ -36,7 +37,9 @@ describe('NfsFormComponent', () => {
           provide: ActivatedRoute,
           useValue: new ActivatedRouteStub({ cluster_id: undefined, export_id: undefined })
         },
-        i18nProviders
+        i18nProviders,
+        SummaryService,
+        CephReleaseNamePipe
       ]
     },
     true
@@ -45,6 +48,11 @@ describe('NfsFormComponent', () => {
   beforeEach(() => {
     const summaryService = TestBed.get(SummaryService);
     spyOn(summaryService, 'refresh').and.callFake(() => true);
+    spyOn(summaryService, 'getCurrentSummary').and.callFake(() => {
+      return {
+        version: 'master'
+      };
+    });
 
     fixture = TestBed.createComponent(NfsFormComponent);
     component = fixture.componentInstance;
index a4fee3e095275b9a1f93f43d96220bfe2dec2443..0beec9fc3bef69c96ea549226458e9dc46bb28de 100644 (file)
@@ -11,12 +11,15 @@ import { NfsService } from '../../../shared/api/nfs.service';
 import { RgwUserService } from '../../../shared/api/rgw-user.service';
 import { SelectMessages } from '../../../shared/components/select/select-messages.model';
 import { SelectOption } from '../../../shared/components/select/select-option.model';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { CdFormBuilder } from '../../../shared/forms/cd-form-builder';
 import { CdFormGroup } from '../../../shared/forms/cd-form-group';
 import { CdValidators } from '../../../shared/forms/cd-validators';
 import { FinishedTask } from '../../../shared/models/finished-task';
 import { Permission } from '../../../shared/models/permissions';
+import { CephReleaseNamePipe } from '../../../shared/pipes/ceph-release-name.pipe';
 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
+import { SummaryService } from '../../../shared/services/summary.service';
 import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
 import { NfsFormClientComponent } from '../nfs-form-client/nfs-form-client.component';
 
@@ -48,9 +51,14 @@ export class NfsFormComponent implements OnInit {
   allCephxClients: any[] = null;
   allFsNames: any[] = null;
 
+  defaultAccessType = { RGW: 'RO' };
   nfsAccessType: any[] = this.nfsService.nfsAccessType;
   nfsSquash: any[] = this.nfsService.nfsSquash;
 
+  action: string;
+  resource: string;
+  docsUrl: string;
+
   daemonsSelections: SelectOption[] = [];
   daemonsMessages = new SelectMessages(
     { noOptions: this.i18n('There are no daemons available.') },
@@ -75,11 +83,15 @@ export class NfsFormComponent implements OnInit {
     private router: Router,
     private rgwUserService: RgwUserService,
     private formBuilder: CdFormBuilder,
+    private summaryservice: SummaryService,
+    private cephReleaseNamePipe: CephReleaseNamePipe,
     private taskWrapper: TaskWrapperService,
     private cdRef: ChangeDetectorRef,
-    private i18n: I18n
+    private i18n: I18n,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().pool;
+    this.resource = this.i18n('NFS export');
     this.createForm();
   }
 
@@ -96,6 +108,7 @@ export class NfsFormComponent implements OnInit {
     }
 
     if (this.isEdit) {
+      this.action = this.actionLabels.EDIT;
       this.route.params.subscribe((params: { cluster_id: string; export_id: string }) => {
         this.cluster_id = decodeURIComponent(params.cluster_id);
         this.export_id = decodeURIComponent(params.export_id);
@@ -104,8 +117,13 @@ export class NfsFormComponent implements OnInit {
         this.getData(promises);
       });
     } else {
+      this.action = this.actionLabels.CREATE;
       this.getData(promises);
     }
+
+    const summary = this.summaryservice.getCurrentSummary();
+    const releaseName = this.cephReleaseNamePipe.transform(summary.version);
+    this.docsUrl = `http://docs.ceph.com/docs/${releaseName}/radosgw/nfs/`;
   }
 
   getData(promises) {
@@ -309,7 +327,8 @@ export class NfsFormComponent implements OnInit {
   fsalChangeHandler() {
     this.nfsForm.patchValue({
       tag: this._generateTag(),
-      pseudo: this._generatePseudo()
+      pseudo: this._generatePseudo(),
+      access_type: this._updateAccessType()
     });
 
     this.setPathValidation();
@@ -317,6 +336,12 @@ export class NfsFormComponent implements OnInit {
     this.cdRef.detectChanges();
   }
 
+  accessTypeChangeHandler() {
+    const name = this.nfsForm.getValue('name');
+    const accessType = this.nfsForm.getValue('access_type');
+    this.defaultAccessType[name] = accessType;
+  }
+
   setPathValidation() {
     if (this.nfsForm.getValue('name') === 'RGW') {
       this.nfsForm
@@ -427,6 +452,17 @@ export class NfsFormComponent implements OnInit {
     return newPseudo;
   }
 
+  _updateAccessType() {
+    const name = this.nfsForm.getValue('name');
+    let accessType = this.defaultAccessType[name];
+
+    if (!accessType) {
+      accessType = 'RW';
+    }
+
+    return accessType;
+  }
+
   onClusterChange() {
     const cluster_id = this.nfsForm.getValue('cluster_id');
     this.daemonsSelections = _.map(
index bb1b882ba53b90e4f86c10b2d6d25a940ff4a541..5e44726b992f0fc2e8aed389edb767cd1abe5d92 100644 (file)
@@ -9,6 +9,7 @@ import { BehaviorSubject, of } from 'rxjs';
 
 import {
   configureTestBed,
+  expectItemTasks,
   i18nProviders,
   PermissionHelper
 } from '../../../../testing/unit-test-helper';
@@ -127,10 +128,6 @@ describe('NfsListComponent', () => {
       summaryService.addRunningTask(task);
     };
 
-    const expectExportTasks = (expo: any, executing: string) => {
-      expect(expo.cdExecuting).toEqual(executing);
-    };
-
     beforeEach(() => {
       exports = [];
       addExport('a');
@@ -154,18 +151,18 @@ describe('NfsListComponent', () => {
       addTask('nfs/create', 'd');
       tick();
       expect(component.exports.length).toBe(4);
-      expectExportTasks(component.exports[0], undefined);
-      expectExportTasks(component.exports[1], undefined);
-      expectExportTasks(component.exports[2], undefined);
-      expectExportTasks(component.exports[3], 'Creating');
+      expectItemTasks(component.exports[0], undefined);
+      expectItemTasks(component.exports[1], undefined);
+      expectItemTasks(component.exports[2], undefined);
+      expectItemTasks(component.exports[3], 'Creating');
     }));
 
     it('should show when an existing export is being modified', () => {
       addTask('nfs/edit', 'a');
       addTask('nfs/delete', 'b');
       expect(component.exports.length).toBe(3);
-      expectExportTasks(component.exports[0], 'Updating');
-      expectExportTasks(component.exports[1], 'Deleting');
+      expectItemTasks(component.exports[0], 'Updating');
+      expectItemTasks(component.exports[1], 'Deleting');
     });
   });
 
@@ -186,7 +183,7 @@ describe('NfsListComponent', () => {
       scenario = {
         fn: () => tableActions.getCurrentButton().name,
         single: 'Edit',
-        empty: 'Add'
+        empty: 'Create'
       };
     });
 
@@ -195,7 +192,7 @@ describe('NfsListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 1);
       });
 
-      it(`shows 'Edit' for single selection else 'Add' as main action`, () =>
+      it(`shows 'Edit' for single selection else 'Create' as main action`, () =>
         permissionHelper.testScenarios(scenario));
 
       it('shows all actions', () => {
@@ -209,7 +206,7 @@ describe('NfsListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 0);
       });
 
-      it(`shows 'Edit' for single selection else 'Add' as main action`, () =>
+      it(`shows 'Edit' for single selection else 'Create' as main action`, () =>
         permissionHelper.testScenarios(scenario));
 
       it(`shows all actions except for 'Delete'`, () => {
@@ -224,12 +221,12 @@ describe('NfsListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 1);
       });
 
-      it(`shows 'Delete' for single selection else 'Add' as main action`, () => {
+      it(`shows 'Delete' for single selection else 'Create' as main action`, () => {
         scenario.single = 'Delete';
         permissionHelper.testScenarios(scenario);
       });
 
-      it(`shows 'Add', and 'Delete'  action`, () => {
+      it(`shows 'Create', and 'Delete'  action`, () => {
         expect(tableActions.tableActions.length).toBe(2);
         expect(tableActions.tableActions).toEqual([
           component.tableActions[0],
@@ -262,12 +259,12 @@ describe('NfsListComponent', () => {
         tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 0);
       });
 
-      it(`always shows 'Add' as main action`, () => {
-        scenario.single = 'Add';
+      it(`always shows 'Create' as main action`, () => {
+        scenario.single = 'Create';
         permissionHelper.testScenarios(scenario);
       });
 
-      it(`shows 'Add' action`, () => {
+      it(`shows 'Create' action`, () => {
         expect(tableActions.tableActions.length).toBe(1);
         expect(tableActions.tableActions).toEqual([component.tableActions[0]]);
       });
index 2a52098923e092d9c04ad6d35c5e796e3bde4af5..3b819a14b685117bd8694ed9634d80639c3e12c6 100644 (file)
@@ -7,6 +7,7 @@ import { Subscription } from 'rxjs';
 
 import { NfsService } from '../../../shared/api/nfs.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
+import { ActionLabelsI18n } from '../../../shared/constants/app.constants';
 import { TableComponent } from '../../../shared/datatable/table/table.component';
 import { CellTemplate } from '../../../shared/enum/cell-template.enum';
 import { ViewCacheStatus } from '../../../shared/enum/view-cache-status.enum';
@@ -61,7 +62,8 @@ export class NfsListComponent implements OnInit, OnDestroy {
     private modalService: BsModalService,
     private nfsService: NfsService,
     private taskListService: TaskListService,
-    private taskWrapper: TaskWrapperService
+    private taskWrapper: TaskWrapperService,
+    public actionLabels: ActionLabelsI18n
   ) {
     this.permission = this.authStorageService.getPermissions().nfs;
     const getNfsUri = () =>
@@ -70,39 +72,44 @@ export class NfsListComponent implements OnInit, OnDestroy {
         this.selection.first().export_id
       )}`;
 
-    const addAction: CdTableAction = {
+    const createAction: CdTableAction = {
       permission: 'create',
       icon: 'fa-plus',
-      routerLink: () => '/nfs/add',
+      routerLink: () => '/nfs/create',
       canBePrimary: (selection: CdTableSelection) => !selection.hasSingleSelection,
-      name: this.i18n('Add')
+      name: this.actionLabels.CREATE
     };
 
     const editAction: CdTableAction = {
       permission: 'update',
       icon: 'fa-pencil',
       routerLink: () => `/nfs/edit/${getNfsUri()}`,
-      name: this.i18n('Edit')
+      name: this.actionLabels.EDIT
     };
 
     const deleteAction: CdTableAction = {
       permission: 'delete',
       icon: 'fa-times',
       click: () => this.deleteNfsModal(),
-      name: this.i18n('Delete')
+      name: this.actionLabels.DELETE
     };
 
-    this.tableActions = [addAction, editAction, deleteAction];
+    this.tableActions = [createAction, editAction, deleteAction];
   }
 
   ngOnInit() {
     this.columns = [
       {
-        name: this.i18n('Export'),
+        name: this.i18n('Path'),
         prop: 'path',
         flexGrow: 2,
         cellTransformation: CellTemplate.executing
       },
+      {
+        name: this.i18n('Pseudo'),
+        prop: 'pseudo',
+        flexGrow: 2
+      },
       {
         name: this.i18n('Cluster'),
         prop: 'cluster_id',
@@ -134,7 +141,7 @@ export class NfsListComponent implements OnInit, OnDestroy {
           .value();
 
         this.isDefaultCluster = clusters.length === 1 && clusters[0] === '_default_';
-        this.columns[1].isHidden = this.isDefaultCluster;
+        this.columns[2].isHidden = this.isDefaultCluster;
         if (this.table) {
           this.table.updateColumns();
         }
@@ -198,7 +205,8 @@ export class NfsListComponent implements OnInit, OnDestroy {
 
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
-        itemDescription: this.i18n('NFS'),
+        itemDescription: this.i18n('NFS export'),
+        itemNames: [`${cluster_id}:${export_id}`],
         submitActionObservable: () =>
           this.taskWrapper.wrapTaskAroundCall({
             task: new FinishedTask('nfs/delete', {
index 5fd9edbad3b9d970fd7ebdcd6f5c0ed0dd06802f..db33fad77c7a26d5b85ec696e3fe5fc1729b123d 100644 (file)
@@ -4,7 +4,7 @@
   <tab i18n-heading
        heading="Details">
     <cd-table-key-value [renderObjects]="true"
-                        [data]="selection.first()"
+                        [data]="filterNonPoolData(selection.first())"
                         [autoReload]="false">
     </cd-table-key-value>
   </tab>
index 7ee21b57e999d24a8ad632e7ba1cc0067823737e..4bf43944a140667bd44fb1c884ecf296838c75d8 100644 (file)
@@ -71,7 +71,7 @@ describe('PoolDetailsComponent', () => {
       expect(tabs[0].active).toBeTruthy();
     });
 
-    it('current active status of tabs should not change when selection is same with previour selection', () => {
+    it('current active status of tabs should not change when selection is the same as previous selection', () => {
       fixture.detectChanges();
       const tabs = poolDetailsComponent.tabsetChild.tabs;
       expect(tabs[0].active).toBeTruthy();
@@ -80,5 +80,23 @@ describe('PoolDetailsComponent', () => {
       fixture.detectChanges();
       expect(tabs[1].active).toBeTruthy();
     });
+
+    it('returns pool details correctly', () => {
+      const pool = { prop1: 1, cdIsBinary: true, prop2: 2, cdExecuting: true, prop3: 3 };
+      const expectedPool = { prop1: 1, prop2: 2, prop3: 3 };
+
+      expect(poolDetailsComponent.filterNonPoolData(pool)).toEqual(expectedPool);
+    });
+
+    it('pool data filtering is called', () => {
+      const filterNonPoolDataSpy = spyOn(
+        poolDetailsComponent,
+        'filterNonPoolData'
+      ).and.callThrough();
+
+      fixture.detectChanges();
+
+      expect(filterNonPoolDataSpy).toHaveBeenCalled();
+    });
   });
 });
index d6e5ae651036b854bdffd1dcf2efe611bdbdd724..fed286e693aac81e9a05254c9ce0b50d1cd36df1 100644 (file)
@@ -1,6 +1,7 @@
 import { Component, Input, OnChanges, ViewChild } from '@angular/core';
 
 import { I18n } from '@ngx-translate/i18n-polyfill';
+import * as _ from 'lodash';
 import { TabsetComponent } from 'ngx-bootstrap/tabs';
 
 import { PoolService } from '../../../shared/api/pool.service';
@@ -69,4 +70,8 @@ export class PoolDetailsComponent implements OnChanges {
       });
     }
   }
+
+  filterNonPoolData(pool: object): object {
+    return _.omit(pool, ['cdExecuting', 'cdIsBinary']);
+  }
 }
index ad050ef7ad08d1b11d7ca78285b9251b04a91a42..ad9dca78e350ea1776af275923722a3afeb3a288 100644 (file)
               <span class="help-block"
                     *ngIf="form.showError('pgNum', formDir, '34')"
                     i18n>Your cluster can't handle this many PGs. Please recalculate the PG amount needed.</span>
-              <span class="help-block"
-                    *ngIf="form.showError('pgNum', formDir, 'noDecrease')"
-                    i18n>You can only increase the number of PGs of an existing pool.
-                Currently your pool has {{ data.pool.pg_num }} PGs.</span>
               <span class="help-block">
                 <a i18n
                    target="_blank"
index 297c75622a57dfb8a3b9de3ca8c71e563e7dd24c..2d3362b987d87d0d7bde644ed2a1c96b3d41cd88 100644 (file)
@@ -48,6 +48,16 @@ describe('PoolFormComponent', () => {
     return control;
   };
 
+  const testPgUpdate = (pgs, jump, returnValue) => {
+    if (pgs) {
+      setPgNum(pgs);
+    }
+    if (jump) {
+      setPgNum(form.getValue('pgNum') + jump);
+    }
+    expect(form.getValue('pgNum')).toBe(returnValue);
+  };
+
   const createCrushRule = ({
     id = 0,
     name = 'somePoolName',
@@ -260,7 +270,7 @@ describe('PoolFormComponent', () => {
       component.ngOnInit(); // Switches form into edit mode
       formHelper.setValue('poolType', 'erasure');
       fixture.detectChanges();
-      formHelper.expectError(setPgNum('8'), 'noDecrease');
+      formHelper.expectValid(setPgNum('8'));
     });
 
     it('is valid if pgNum, poolType and name are valid', () => {
@@ -579,21 +589,6 @@ describe('PoolFormComponent', () => {
   });
 
   describe('pg number changes', () => {
-    const setPgs = (pgs) => {
-      formHelper.setValue('pgNum', pgs);
-      fixture.debugElement.query(By.css('#pgNum')).nativeElement.dispatchEvent(new Event('blur'));
-    };
-
-    const testPgUpdate = (pgs, jump, returnValue) => {
-      if (pgs) {
-        setPgs(pgs);
-      }
-      if (jump) {
-        setPgs(form.getValue('pgNum') + jump);
-      }
-      expect(form.getValue('pgNum')).toBe(returnValue);
-    };
-
     beforeEach(() => {
       formHelper.setValue('crushRule', {
         min_size: 1,
@@ -1050,9 +1045,14 @@ describe('PoolFormComponent', () => {
         expect(form.getValue('ratio')).toBe(pool.options.compression_required_ratio);
       });
 
-      it('is only be possible to use the same or more pgs like before', () => {
+      it('updates pgs on every change', () => {
+        testPgUpdate(undefined, -1, 16);
+        testPgUpdate(undefined, -1, 8);
+      });
+
+      it('is possible to use less or more pgs than before', () => {
         formHelper.expectValid(setPgNum(64));
-        formHelper.expectError(setPgNum(4), 'noDecrease');
+        formHelper.expectValid(setPgNum(4));
       });
 
       describe('submit', () => {
index 7e944fc3e1ef92d45cd70078a544c978fd8d1e47..a98b8c5877159533c3bc05f125f42c850fb9e0f9 100644 (file)
@@ -115,7 +115,7 @@ export class PoolFormComponent implements OnInit {
     this.form = new CdFormGroup(
       {
         name: new FormControl('', {
-          validators: [Validators.pattern(/^[\.A-Za-z0-9_/-]+$/), Validators.required]
+          validators: [Validators.pattern(/^[.A-Za-z0-9_/-]+$/), Validators.required]
         }),
         poolType: new FormControl('', {
           validators: [Validators.required]
@@ -230,6 +230,7 @@ export class PoolFormComponent implements OnInit {
         this.form.silentSet(controlName, value);
       }
     });
+    this.data.pgs = this.form.getValue('pgNum');
     this.data.applications.selected = pool.application_metadata;
   }
 
@@ -402,11 +403,6 @@ export class PoolFormComponent implements OnInit {
 
   private setComplexValidators() {
     if (this.editing) {
-      this.form
-        .get('pgNum')
-        .setValidators(
-          CdValidators.custom('noDecrease', (pgs) => this.data.pool && pgs < this.data.pool.pg_num)
-        );
       this.form
         .get('name')
         .setValidators([
@@ -506,6 +502,7 @@ export class PoolFormComponent implements OnInit {
     this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: this.i18n('erasure code profile'),
+        itemNames: [name],
         submitActionObservable: () =>
           this.taskWrapper.wrapTaskAroundCall({
             task: new FinishedTask('ecp/delete', { name: name }),
index bb7d86d348198a124ad9d98dbf0eb3299ac5e2d9..db850079f631cb8b54253c646822ed5850bb5741 100644 (file)
@@ -8,7 +8,11 @@ import { TabsModule } from 'ngx-bootstrap/tabs';
 import { ToastrModule } from 'ngx-toastr';
 import { of } from 'rxjs';
 
-import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
+import {
+  configureTestBed,
+  expectItemTasks,
+  i18nProviders
+} from '../../../../testing/unit-test-helper';
 import { ConfigurationService } from '../../../shared/api/configuration.service';
 import { PoolService } from '../../../shared/api/pool.service';
 import { CriticalConfirmationModalComponent } from '../../../shared/components/critical-confirmation-modal/critical-confirmation-modal.component';
@@ -27,18 +31,18 @@ describe('PoolListComponent', () => {
   let fixture: ComponentFixture<PoolListComponent>;
   let poolService: PoolService;
 
-  const addPool = (pools, name, id) => {
-    const pool = new Pool(name);
-    pool.pool = id;
-    pool.pg_num = 256;
-    pools.push(pool);
+  const createPool = (name, id): Pool => {
+    return _.merge(new Pool(name), {
+      pool: id,
+      pg_num: 256,
+      pg_placement_num: 256,
+      pg_num_target: 256,
+      pg_placement_num_target: 256
+    });
   };
 
-  const setUpPools = (pools) => {
-    addPool(pools, 'a', 0);
-    addPool(pools, 'b', 1);
-    addPool(pools, 'c', 2);
-    component.pools = pools;
+  const getPoolList = (): Pool[] => {
+    return [createPool('a', 0), createPool('b', 1), createPool('c', 2)];
   };
 
   configureTestBed({
@@ -58,6 +62,7 @@ describe('PoolListComponent', () => {
     component = fixture.componentInstance;
     component.permissions.pool.read = true;
     poolService = TestBed.get(PoolService);
+    spyOn(poolService, 'getList').and.callFake(() => of(getPoolList()));
     fixture.detectChanges();
   });
 
@@ -166,7 +171,6 @@ describe('PoolListComponent', () => {
   });
 
   describe('handling of executing tasks', () => {
-    let pools: Pool[];
     let summaryService: SummaryService;
 
     const addTask = (name: string, pool: string) => {
@@ -179,10 +183,6 @@ describe('PoolListComponent', () => {
     beforeEach(() => {
       summaryService = TestBed.get(SummaryService);
       summaryService['summaryDataSource'].next({ executing_tasks: [], finished_tasks: [] });
-      pools = [];
-      setUpPools(pools);
-      spyOn(poolService, 'getList').and.callFake(() => of(pools));
-      fixture.detectChanges();
     });
 
     it('gets all pools without executing pools', () => {
@@ -193,13 +193,13 @@ describe('PoolListComponent', () => {
     it('gets a pool from a task during creation', () => {
       addTask('pool/create', 'd');
       expect(component.pools.length).toBe(4);
-      expect(component.pools[3].cdExecuting).toBe('Creating');
+      expectItemTasks(component.pools[3], 'Creating');
     });
 
     it('gets all pools with one executing pools', () => {
       addTask('pool/create', 'a');
       expect(component.pools.length).toBe(3);
-      expect(component.pools[0].cdExecuting).toBe('Creating');
+      expectItemTasks(component.pools[0], 'Creating');
       expect(component.pools[1].cdExecuting).toBeFalsy();
       expect(component.pools[2].cdExecuting).toBeFalsy();
     });
@@ -212,9 +212,9 @@ describe('PoolListComponent', () => {
       addTask('pool/delete', 'b');
       addTask('pool/delete', 'c');
       expect(component.pools.length).toBe(3);
-      expect(component.pools[0].cdExecuting).toBe('Creating, Updating, Deleting');
-      expect(component.pools[1].cdExecuting).toBe('Updating, Deleting');
-      expect(component.pools[2].cdExecuting).toBe('Deleting');
+      expectItemTasks(component.pools[0], 'Creating..., Updating..., Deleting');
+      expectItemTasks(component.pools[1], 'Updating..., Deleting');
+      expectItemTasks(component.pools[2], 'Deleting');
     });
 
     it('gets all pools with multiple executing tasks (not only pool tasks)', () => {
@@ -225,8 +225,8 @@ describe('PoolListComponent', () => {
       addTask('rbd/delete', 'b');
       addTask('rbd/delete', 'c');
       expect(component.pools.length).toBe(3);
-      expect(component.pools[0].cdExecuting).toBe('Deleting');
-      expect(component.pools[1].cdExecuting).toBe('Updating');
+      expectItemTasks(component.pools[0], 'Deleting');
+      expectItemTasks(component.pools[1], 'Updating');
       expect(component.pools[2].cdExecuting).toBeFalsy();
     });
   });
@@ -279,39 +279,11 @@ describe('PoolListComponent', () => {
   });
 
   describe('transformPoolsData', () => {
-    it('transforms pools data correctly', () => {
-      const pools = [
-        {
-          stats: {
-            bytes_used: { latest: 5, rate: 0, rates: [] },
-            max_avail: { latest: 15, rate: 0, rates: [] },
-            rd_bytes: { latest: 6, rate: 4, rates: [[0, 2], [1, 6]] }
-          },
-          pg_status: { 'active+clean': 8, down: 2 }
-        }
-      ];
-      const expected = [
-        {
-          cdIsBinary: true,
-          pg_status: '8 active+clean, 2 down',
-          stats: {
-            bytes_used: { latest: 5, rate: 0, rates: [] },
-            max_avail: { latest: 15, rate: 0, rates: [] },
-            rd: { latest: 0, rate: 0, rates: [] },
-            rd_bytes: { latest: 6, rate: 4, rates: [2, 6] },
-            wr: { latest: 0, rate: 0, rates: [] },
-            wr_bytes: { latest: 0, rate: 0, rates: [] }
-          },
-          usage: 0.25
-        }
-      ];
-      expect(component.transformPoolsData(pools)).toEqual(expected);
-    });
+    let pool: Pool;
 
-    it('transforms pools data correctly if stats are missing', () => {
-      const pools = [{}];
-      const expected = [
-        {
+    const getPoolData = (o) => [
+      _.merge(
+        _.merge(createPool('a', 0), {
           cdIsBinary: true,
           pg_status: '',
           stats: {
@@ -323,15 +295,85 @@ describe('PoolListComponent', () => {
             wr_bytes: { latest: 0, rate: 0, rates: [] }
           },
           usage: 0
-        }
-      ];
-      expect(component.transformPoolsData(pools)).toEqual(expected);
+        }),
+        o
+      )
+    ];
+
+    beforeEach(() => {
+      pool = createPool('a', 0);
+    });
+
+    it('transforms pools data correctly', () => {
+      pool = _.merge(pool, {
+        stats: {
+          bytes_used: { latest: 5, rate: 0, rates: [] },
+          max_avail: { latest: 15, rate: 0, rates: [] },
+          rd_bytes: { latest: 6, rate: 4, rates: [[0, 2], [1, 6]] }
+        },
+        pg_status: { 'active+clean': 8, down: 2 }
+      });
+      expect(component.transformPoolsData([pool])).toEqual(
+        getPoolData({
+          pg_status: '8 active+clean, 2 down',
+          stats: {
+            bytes_used: { latest: 5, rate: 0, rates: [] },
+            max_avail: { latest: 15, rate: 0, rates: [] },
+            rd_bytes: { latest: 6, rate: 4, rates: [2, 6] }
+          },
+          usage: 0.25
+        })
+      );
+    });
+
+    it('transforms pools data correctly if stats are missing', () => {
+      expect(component.transformPoolsData([pool])).toEqual(getPoolData({}));
     });
 
     it('transforms empty pools data correctly', () => {
-      const pools = undefined;
-      const expected = undefined;
-      expect(component.transformPoolsData(pools)).toEqual(expected);
+      expect(component.transformPoolsData(undefined)).toEqual(undefined);
+      expect(component.transformPoolsData([])).toEqual([]);
+    });
+
+    it('shows not marked pools in progress if pg_num does not match pg_num_target', () => {
+      const pools = [
+        _.merge(pool, {
+          pg_num: 32,
+          pg_num_target: 16,
+          pg_placement_num: 32,
+          pg_placement_num_target: 16
+        })
+      ];
+      expect(component.transformPoolsData(pools)).toEqual(
+        getPoolData({
+          cdExecuting: 'Updating',
+          pg_num: 32,
+          pg_num_target: 16,
+          pg_placement_num: 32,
+          pg_placement_num_target: 16
+        })
+      );
+    });
+
+    it('shows marked pools in progress as defined by task', () => {
+      const pools = [
+        _.merge(pool, {
+          pg_num: 32,
+          pg_num_target: 16,
+          pg_placement_num: 32,
+          pg_placement_num_target: 16,
+          cdExecuting: 'Updating... 50%'
+        })
+      ];
+      expect(component.transformPoolsData(pools)).toEqual(
+        getPoolData({
+          cdExecuting: 'Updating... 50%',
+          pg_num: 32,
+          pg_num_target: 16,
+          pg_placement_num: 32,
+          pg_placement_num_target: 16
+        })
+      );
     });
   });
 
@@ -365,17 +407,7 @@ describe('PoolListComponent', () => {
     });
   });
 
-  describe('getPoolDetails', () => {
-    it('returns pool details corretly', () => {
-      const pool = { prop1: 1, cdIsBinary: true, prop2: 2, cdExecuting: true, prop3: 3 };
-      const expected = { prop1: 1, prop2: 2, prop3: 3 };
-
-      expect(component.getPoolDetails(pool)).toEqual(expected);
-    });
-  });
-
   describe('getSelectionTiers', () => {
-    let pools: Pool[];
     const setSelectionTiers = (tiers: number[]) => {
       component.selection.selected = [
         {
@@ -387,18 +419,17 @@ describe('PoolListComponent', () => {
     };
 
     beforeEach(() => {
-      pools = [];
-      setUpPools(pools);
+      component.pools = getPoolList();
     });
 
     it('should select multiple existing cache tiers', () => {
       setSelectionTiers([0, 1, 2]);
-      expect(component.selectionCacheTiers).toEqual(pools);
+      expect(component.selectionCacheTiers).toEqual(getPoolList());
     });
 
     it('should select correct existing cache tier', () => {
       setSelectionTiers([0]);
-      expect(component.selectionCacheTiers).toEqual([{ pg_num: 256, pool: 0, pool_name: 'a' }]);
+      expect(component.selectionCacheTiers).toEqual([createPool('a', 0)]);
     });
 
     it('should not select cache tier if id is invalid', () => {
@@ -413,9 +444,9 @@ describe('PoolListComponent', () => {
 
     it('should be able to selected one pool with multiple tiers, than with a single tier, than with no tiers', () => {
       setSelectionTiers([0, 1, 2]);
-      expect(component.selectionCacheTiers).toEqual(pools);
+      expect(component.selectionCacheTiers).toEqual(getPoolList());
       setSelectionTiers([0]);
-      expect(component.selectionCacheTiers).toEqual([{ pg_num: 256, pool: 0, pool_name: 'a' }]);
+      expect(component.selectionCacheTiers).toEqual([createPool('a', 0)]);
       setSelectionTiers([]);
       expect(component.selectionCacheTiers).toEqual([]);
     });
index e8dd9fdc0042603e5f5e1abc742aac6a4bd9291f..ae6d3d7c4144c6e99410498dad6812c434181015 100644 (file)
@@ -217,6 +217,7 @@ export class PoolListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: 'Pool',
+        itemNames: [name],
         submitActionObservable: () =>
           this.taskWrapper.wrapTaskAroundCall({
             task: new FinishedTask(`${BASE_URL}/${URLVerbs.DELETE}`, { pool_name: name }),
@@ -247,6 +248,13 @@ export class PoolListComponent implements OnInit {
       const avail = stats.bytes_used.latest + stats.max_avail.latest;
       pool['usage'] = avail > 0 ? stats.bytes_used.latest / avail : avail;
 
+      if (
+        !pool.cdExecuting &&
+        pool.pg_num + pool.pg_placement_num !== pool.pg_num_target + pool.pg_placement_num_target
+      ) {
+        pool['cdExecuting'] = 'Updating';
+      }
+
       ['rd_bytes', 'wr_bytes'].forEach((stat) => {
         pool.stats[stat].rates = pool.stats[stat].rates.map((point) => point[1]);
       });
@@ -265,10 +273,6 @@ export class PoolListComponent implements OnInit {
     return strings.join(', ');
   }
 
-  getPoolDetails(pool: object) {
-    return _.omit(pool, ['cdExecuting', 'cdIsBinary']);
-  }
-
   getSelectionTiers() {
     const cacheTierIds = this.selection.hasSingleSelection ? this.selection.first()['tiers'] : [];
     this.selectionCacheTiers = this.pools.filter((pool) => cacheTierIds.includes(pool.pool));
index 013718d7ffd379a51c5c8bf1e58d496c0041c161..0808a89dcfe55c03f05bc8842239e8ed3c741c5f 100644 (file)
@@ -21,6 +21,12 @@ export class Pool {
   min_read_recency_for_promote: number;
   target_max_objects: number;
   pg_num: number;
+  pg_num_target: number;
+  pg_num_pending: number;
+  pg_placement_num: number;
+  pg_placement_num_target: number;
+  pg_autoscale_mode: string;
+  pg_status: string;
   type: string;
   pool_name: string;
   cache_min_evict_age: number;
@@ -57,7 +63,6 @@ export class Pool {
   last_change: string;
   min_write_recency_for_promote: number;
   read_tier: number;
-  pg_status: string;
   stats?: PoolStats;
   cdIsBinary?: boolean;
   configuration: { source: number; name: string; value: string }[];
index 3923071d7a46e75b05f067d349f39fde6ae333b8..bfdcd04679773647f899aff37d5b0fb9af843fe1 100644 (file)
@@ -99,6 +99,7 @@ export class RgwBucketListComponent {
         itemDescription: this.selection.hasSingleSelection
           ? this.i18n('bucket')
           : this.i18n('buckets'),
+        itemNames: this.selection.selected.map((bucket: any) => bucket['bid']),
         submitActionObservable: () => {
           return new Observable((observer: Subscriber<any>) => {
             // Delete all selected data table rows.
index 7a6789f4b896e45547be0c8dacfc6d2f8385a578..eb3b98d5de69fb94c2ed4da11b56ec2e0d92ca76 100644 (file)
@@ -115,6 +115,7 @@ export class RgwUserListComponent {
     this.bsModalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: this.selection.hasSingleSelection ? this.i18n('user') : this.i18n('users'),
+        itemNames: this.selection.selected.map((user: any) => user['uid']),
         submitActionObservable: (): Observable<any> => {
           return new Observable((observer: Subscriber<any>) => {
             // Delete all selected data table rows.
index 49b9c2ac468c5e4d9a094425f51c92593dee9f47..569e1fdd21a1c70cf87192f84b00ee6a2cb482b3 100644 (file)
@@ -130,6 +130,7 @@ export class RoleListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: 'Role',
+        itemNames: [name],
         submitAction: () => this.deleteRole(name)
       }
     });
index b9284bfdcd6ac1406d88b4feb103105b4d9d74b5..6187a09bd24e4775cbee1a7e48cf403dbc73ae57 100644 (file)
@@ -4,7 +4,7 @@
     <h4 i18n>Return to <a class="sso-logout" [href]="logoutUrl">Login Page</a>. You'll be logged out from the Identity Provider when you retry logging in.</h4>
 
     <img class="img-responsive center-block img-rounded"
-         src="/assets/1280px-Nautilus_Octopus.jpg">
+         src="assets/1280px-Nautilus_Octopus.jpg">
     <span>
       "<a href="https://www.flickr.com/photos/146401137@N06/40335060661">Nautilus Octopus</a>" by Jin Kemoole is licensed under
       <a rel="nofollow"
index 060b9a90a200e85a71bae40b963ed2a75d8a8f88..77962d428ce5b576b62f7ab44069f75d91d9b2bc 100644 (file)
@@ -137,6 +137,7 @@ export class UserListComponent implements OnInit {
     this.modalRef = this.modalService.show(CriticalConfirmationModalComponent, {
       initialState: {
         itemDescription: 'User',
+        itemNames: [username],
         submitAction: () => this.deleteUser(username)
       }
     });
index daeeaf54fd05f7a32c6d6442be7cf43924b6c22a..b50478afbd4e6b878c868e9f26ede94acf2ce85d 100644 (file)
@@ -3,7 +3,7 @@
     <h1 i18n>Sorry, we could not find what you were looking for</h1>
 
     <img class="img-responsive center-block img-rounded"
-         src="/assets/1280px-Nautilus_Octopus.jpg">
+         src="assets/1280px-Nautilus_Octopus.jpg">
     <span>
       "<a href="https://www.flickr.com/photos/146401137@N06/40335060661">Nautilus Octopus</a>" by Jin Kemoole is licensed under
       <a rel="nofollow"
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/locale.helper.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/locale.helper.ts
deleted file mode 100644 (file)
index 7f94a5d..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-import locale_cs from '@angular/common/locales/cs';
-import locale_de from '@angular/common/locales/de';
-import locale_en from '@angular/common/locales/en';
-import locale_es from '@angular/common/locales/es';
-import locale_fr from '@angular/common/locales/fr';
-import locale_id from '@angular/common/locales/id';
-import locale_it from '@angular/common/locales/it';
-import locale_ja from '@angular/common/locales/ja';
-import locale_ko from '@angular/common/locales/ko';
-import locale_pl from '@angular/common/locales/pl';
-import locale_pt from '@angular/common/locales/pt';
-import locale_zh_Hans from '@angular/common/locales/zh-Hans';
-import locale_zh_Hant from '@angular/common/locales/zh-Hant';
-import { LOCALE_ID, TRANSLATIONS, TRANSLATIONS_FORMAT } from '@angular/core';
-
-declare const require;
-
-export class LocaleHelper {
-  static getBrowserLang(): string {
-    const lang = navigator.language;
-
-    if (lang.includes('cs')) {
-      return 'cs';
-    } else if (lang.includes('de')) {
-      return 'de-DE';
-    } else if (lang.includes('en')) {
-      return 'en-US';
-    } else if (lang.includes('es')) {
-      return 'es-ES';
-    } else if (lang.includes('fr')) {
-      return 'fr-FR';
-    } else if (lang.includes('id')) {
-      return 'id-ID';
-    } else if (lang.includes('it')) {
-      return 'it-IT';
-    } else if (lang.includes('ja')) {
-      return 'ja-JP';
-    } else if (lang.includes('ko')) {
-      return 'ko-KR';
-    } else if (lang.includes('pl')) {
-      return 'pl-PL';
-    } else if (lang.includes('pt')) {
-      return 'pt-BR';
-    } else if (lang.includes('zh-TW')) {
-      return 'zh-TW';
-    } else if (lang.includes('zh')) {
-      return 'zh-CN';
-    } else {
-      return undefined;
-    }
-  }
-
-  static getLocale(): string {
-    return window.localStorage.getItem('lang') || this.getBrowserLang() || 'en-US';
-  }
-
-  static setLocale(lang: string) {
-    window.localStorage.setItem('lang', lang);
-  }
-
-  static getLocaleData() {
-    let localeData = locale_en;
-    switch (this.getLocale()) {
-      case 'cs':
-        localeData = locale_cs;
-        break;
-      case 'de-DE':
-        localeData = locale_de;
-        break;
-      case 'es-ES':
-        localeData = locale_es;
-        break;
-      case 'fr-FR':
-        localeData = locale_fr;
-        break;
-      case 'id-ID':
-        localeData = locale_id;
-        break;
-      case 'it-IT':
-        localeData = locale_it;
-        break;
-      case 'ja-JP':
-        localeData = locale_ja;
-        break;
-      case 'ko-KR':
-        localeData = locale_ko;
-        break;
-      case 'pl-PL':
-        localeData = locale_pl;
-        break;
-      case 'pt-BR':
-        localeData = locale_pt;
-        break;
-      case 'zh-CN':
-        localeData = locale_zh_Hans;
-        break;
-      case 'zh-TW':
-        localeData = locale_zh_Hant;
-        break;
-    }
-    return localeData;
-  }
-}
-
-const i18nProviders = [
-  { provide: LOCALE_ID, useValue: LocaleHelper.getLocale() },
-  {
-    provide: TRANSLATIONS,
-    useFactory: (locale) => {
-      locale = locale || 'en-US';
-      try {
-        return require(`raw-loader!locale/messages.${locale}.xlf`);
-      } catch (error) {
-        return [];
-      }
-    },
-    deps: [LOCALE_ID]
-  },
-  { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }
-];
-
-export { i18nProviders };
index 0c1ec456552420ba19a69cf56338e92ccdb45ef4..6b31eaad23e702287d4609baba6aea2603bb4554 100644 (file)
@@ -11,57 +11,6 @@ import { ApiModule } from './api.module';
 export class IscsiService {
   constructor(private http: HttpClient) {}
 
-  targetAdvancedSettings = {
-    cmdsn_depth: {
-      help: ''
-    },
-    dataout_timeout: {
-      help: ''
-    },
-    first_burst_length: {
-      help: ''
-    },
-    immediate_data: {
-      help: ''
-    },
-    initial_r2t: {
-      help: ''
-    },
-    max_burst_length: {
-      help: ''
-    },
-    max_outstanding_r2t: {
-      help: ''
-    },
-    max_recv_data_segment_length: {
-      help: ''
-    },
-    max_xmit_data_segment_length: {
-      help: ''
-    },
-    nopin_response_timeout: {
-      help: ''
-    },
-    nopin_timeout: {
-      help: ''
-    }
-  };
-
-  imageAdvancedSettings = {
-    hw_max_sectors: {
-      help: ''
-    },
-    max_data_area_mb: {
-      help: ''
-    },
-    osd_op_timeout: {
-      help: ''
-    },
-    qfull_timeout: {
-      help: ''
-    }
-  };
-
   listTargets() {
     return this.http.get(`api/iscsi/target`);
   }
@@ -82,6 +31,10 @@ export class IscsiService {
     return this.http.get(`ui-api/iscsi/settings`);
   }
 
+  version() {
+    return this.http.get(`ui-api/iscsi/version`);
+  }
+
   portals() {
     return this.http.get(`ui-api/iscsi/portals`);
   }
index 7f0d3d786ea3c5890105cd47e5b81e5643b34df8..c6c9304551c307d220a9e91ed73f11cecfa3a0cd 100644 (file)
       <div class="modal-body">
         <ng-container *ngTemplateOutlet="bodyTemplate; context: bodyContext"></ng-container>
         <div class="question">
-          <p i18n>Are you sure that you want to {{ actionDescription | lowercase }} the selected {{ itemDescription }}?</p>
+          <span *ngIf="itemNames; else noNames">
+            <p *ngIf="itemNames.length === 1; else manyNames"
+               i18n>Are you sure that you want to {{ actionDescription | lowercase }} <strong>{{ itemNames[0] }}</strong>?</p>
+            <ng-template #manyNames>
+              <p i18n>Are you sure that you want to {{ actionDescription | lowercase }} the selected items?</p>
+              <ul>
+                <li *ngFor="let itemName of itemNames"><strong>{{ itemName }}</strong></li>
+              </ul>
+            </ng-template >
+          </span>
+          <ng-template #noNames>
+            <p i18n>Are you sure that you want to {{ actionDescription | lowercase }} the selected {{ itemDescription }}?</p>
+          </ng-template>
           <div class="form-group"
                [ngClass]="{'has-error': deletionForm.showError('confirmation', formDir)}">
             <div class="checkbox checkbox-primary">
index a721bcae5fcd99d856bf867f4255179d847fee99..5c1f14057a29a8606f1975dfa539be36727da77b 100644 (file)
@@ -21,6 +21,7 @@ export class CriticalConfirmationModalComponent implements OnInit {
   submitAction: Function;
   deletionForm: CdFormGroup;
   itemDescription: 'entry';
+  itemNames: string[];
   actionDescription = 'delete';
 
   constructor(public modalRef: BsModalRef) {}
index d74ffd9abe2b1df82f28463a81e28e4271f01043..3b3f2b7ef6e7e1ecce9671bde7f2bce17883b510 100644 (file)
@@ -4,6 +4,7 @@ import { FormsModule } from '@angular/forms';
 import { listLocales } from 'ngx-bootstrap/chronos';\r
 import { BsLocaleService } from 'ngx-bootstrap/datepicker';\r
 \r
+import { HttpClientTestingModule } from '@angular/common/http/testing';\r
 import { configureTestBed } from '../../../../testing/unit-test-helper';\r
 import { LanguageSelectorComponent } from './language-selector.component';\r
 \r
@@ -14,7 +15,7 @@ describe('LanguageSelectorComponent', () => {
   configureTestBed({\r
     declarations: [LanguageSelectorComponent],\r
     providers: [BsLocaleService],\r
-    imports: [FormsModule]\r
+    imports: [FormsModule, HttpClientTestingModule]\r
   });\r
 \r
   beforeEach(() => {\r
@@ -35,8 +36,8 @@ describe('LanguageSelectorComponent', () => {
 \r
   const expectLanguageChange = (lang) => {\r
     component.changeLanguage(lang);\r
-    expect(component.selectedLanguage).toBe(lang);\r
-    expect(listLocales().includes(lang.slice(0, 2))).toBe(true);\r
+    const cookie = document.cookie.split(';').filter((item) => item.includes(`cd-lang=${lang}`));\r
+    expect(cookie.length).toBe(1);\r
   };\r
 \r
   it('should change to cs', () => {\r
index cfc6e126f2942783bac36fed43422aded752d1d3..032ae4207a66898f73208d64e1043bb9412ed992 100644 (file)
@@ -1,9 +1,10 @@
 import { Component, Input, OnInit } from '@angular/core';\r
 \r
+import * as _ from 'lodash';\r
 import { defineLocale } from 'ngx-bootstrap/chronos';\r
 import { BsLocaleService } from 'ngx-bootstrap/datepicker';\r
 \r
-import { LocaleHelper } from '../../../locale.helper';\r
+import { LanguageService } from '../../services/language.service';\r
 import { languageBootstrapMapping, SupportedLanguages } from './supported-languages.enum';\r
 \r
 @Component({\r
@@ -15,14 +16,18 @@ export class LanguageSelectorComponent implements OnInit {
   @Input()\r
   isDropdown = true;\r
 \r
-  supportedLanguages = SupportedLanguages;\r
+  supportedLanguages: Object = SupportedLanguages;\r
   selectedLanguage: string;\r
 \r
-  constructor(private localeService: BsLocaleService) {}\r
+  constructor(private localeService: BsLocaleService, private languageService: LanguageService) {}\r
 \r
   ngOnInit() {\r
-    this.selectedLanguage = LocaleHelper.getLocale();\r
+    this.selectedLanguage = this.languageService.getLocale();\r
     this.defineUsedLanguage();\r
+\r
+    this.languageService.getLanguages().subscribe((langs) => {\r
+      this.supportedLanguages = _.pick(this.supportedLanguages, langs) as Object;\r
+    });\r
   }\r
 \r
   /**\r
@@ -39,8 +44,16 @@ export class LanguageSelectorComponent implements OnInit {
     }\r
   }\r
 \r
-  changeLanguage(lang: string) {\r
-    LocaleHelper.setLocale(lang);\r
+  /**\r
+   * Jest is being more restricted regarding spying on the reload method.\r
+   * This will allow us to spyOn this method instead.\r
+   */\r
+  reloadWindow() {\r
     window.location.reload();\r
   }\r
+\r
+  changeLanguage(lang: string) {\r
+    this.languageService.setLocale(lang);\r
+    this.reloadWindow();\r
+  }\r
 }\r
index 8d7915d83dc9076d06a95ba92c215f7987b34546..6c148fdec3e1b602dfce274dba7c6b60f3864dc9 100644 (file)
@@ -82,6 +82,20 @@ export class ActionLabelsI18n {
   CANCEL: string;
   COPY: string;
   CLONE: string;
+  DEEP_SCRUB: string;
+  DESTROY: string;
+  FLATTEN: string;
+  MARK_DOWN: string;
+  MARK_IN: string;
+  MARK_LOST: string;
+  MARK_OUT: string;
+  PROTECT: string;
+  PURGE: string;
+  RENAME: string;
+  RESTORE: string;
+  REWEIGHT: string;
+  ROLLBACK: string;
+  SCRUB: string;
   SHOW: string;
   TRASH: string;
   UNPROTECT: string;
@@ -106,9 +120,22 @@ export class ActionLabelsI18n {
     this.CANCEL = this.i18n('Cancel');
 
     /* Non-standard actions */
-    this.COPY = this.i18n('Copy');
     this.CLONE = this.i18n('Clone');
-
+    this.COPY = this.i18n('Copy');
+    this.DEEP_SCRUB = this.i18n('Deep Scrub');
+    this.DESTROY = this.i18n('Destroy');
+    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');
index 13ee5a7786ed9d7c097117ad0c9a9d14649103ad..2998a686ed6d6ffadb6a90e208dc0714917649af 100644 (file)
      *ngIf="row.cdExecuting"></i>
   {{ value }}
   <span *ngIf="row.cdExecuting"
-        class="text-muted italic">({{ row.cdExecuting }}... )</span>
+        class="text-muted italic">({{ row.cdExecuting }})</span>
 </ng-template>
 
 <ng-template #classAddingTpl
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.spec.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.spec.ts
new file mode 100644 (file)
index 0000000..5c4ad82
--- /dev/null
@@ -0,0 +1,34 @@
+import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
+import { TestBed } from '@angular/core/testing';
+
+import { configureTestBed } from '../../../testing/unit-test-helper';
+import { LanguageService } from './language.service';
+
+describe('LanguageService', () => {
+  let service: LanguageService;
+  let httpTesting: HttpTestingController;
+
+  configureTestBed({
+    providers: [LanguageService],
+    imports: [HttpClientTestingModule]
+  });
+
+  beforeEach(() => {
+    service = TestBed.get(LanguageService);
+    httpTesting = TestBed.get(HttpTestingController);
+  });
+
+  afterEach(() => {
+    httpTesting.verify();
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+
+  it('should call create', () => {
+    service.getLanguages().subscribe();
+    const req = httpTesting.expectOne('ui-api/langs');
+    expect(req.request.method).toBe('GET');
+  });
+});
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.ts b/ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/language.service.ts
new file mode 100644 (file)
index 0000000..4388171
--- /dev/null
@@ -0,0 +1,24 @@
+import { HttpClient } from '@angular/common/http';
+import { Inject, LOCALE_ID } from '@angular/core';
+import { Injectable } from '@angular/core';
+
+import { environment } from '../../../environments/environment';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class LanguageService {
+  constructor(private http: HttpClient, @Inject(LOCALE_ID) protected localeId: string) {}
+
+  getLocale(): string {
+    return this.localeId || environment.default_lang;
+  }
+
+  setLocale(lang: string) {
+    document.cookie = `cd-lang=${lang}`;
+  }
+
+  getLanguages() {
+    return this.http.get<string[]>('ui-api/langs');
+  }
+}
index 50bcc947d69d732545105a848344683dbf4dc407..46f3c8400cefd9df2210bbf6259720a91ea35354 100644 (file)
@@ -52,7 +52,7 @@ export class ModuleStatusGuardService implements CanActivate, CanActivateChild {
       return observableOf(true);
     }
     const config = route.data['moduleStatusGuardConfig'];
-    return this.http.get(`/api/${config.apiPath}/status`).pipe(
+    return this.http.get(`api/${config.apiPath}/status`).pipe(
       map((resp: any) => {
         if (!resp.available) {
           this.router.navigate([config.redirectTo, resp.message || '']);
index 0c6465994c0795830d969a6b7fa10986d1e8fe28..0abee40c9dbc1dec1dcd2737b485564a3737b236 100644 (file)
@@ -4,7 +4,11 @@ import { RouterTestingModule } from '@angular/router/testing';
 
 import { of } from 'rxjs';
 
-import { configureTestBed, i18nProviders } from '../../../testing/unit-test-helper';
+import {
+  configureTestBed,
+  expectItemTasks,
+  i18nProviders
+} from '../../../testing/unit-test-helper';
 import { ExecutingTask } from '../models/executing-task';
 import { SummaryService } from './summary.service';
 import { TaskListService } from './task-list.service';
@@ -62,18 +66,15 @@ describe('TaskListService', () => {
     expect(service).toBeTruthy();
   });
 
-  const addTask = (name: string, itemName: string) => {
+  const addTask = (name: string, itemName: string, progress?: number) => {
     const task = new ExecutingTask();
     task.name = name;
+    task.progress = progress;
     task.metadata = { name: itemName };
     tasks.push(task);
     summaryService.addRunningTask(task);
   };
 
-  const expectItemTasks = (item: any, executing: string) => {
-    expect(item.cdExecuting).toBe(executing);
-  };
-
   it('gets all items without any executing items', () => {
     expect(list.length).toBe(3);
     expect(list.every((item) => !item.cdExecuting)).toBeTruthy();
@@ -85,6 +86,14 @@ describe('TaskListService', () => {
     expectItemTasks(list[3], 'Creating');
   });
 
+  it('shows progress of current task if any above 0', () => {
+    addTask('test/edit', 'd', 97);
+    addTask('test/edit', 'e', 0);
+    expect(list.length).toBe(5);
+    expectItemTasks(list[3], 'Updating', 97);
+    expectItemTasks(list[4], 'Updating');
+  });
+
   it('gets all items with one executing items', () => {
     addTask('test/create', 'a');
     expect(list.length).toBe(3);
@@ -101,8 +110,8 @@ describe('TaskListService', () => {
     addTask('test/delete', 'b');
     addTask('test/delete', 'c');
     expect(list.length).toBe(3);
-    expectItemTasks(list[0], 'Creating, Updating, Deleting');
-    expectItemTasks(list[1], 'Updating, Deleting');
+    expectItemTasks(list[0], 'Creating..., Updating..., Deleting');
+    expectItemTasks(list[1], 'Updating..., Deleting');
     expectItemTasks(list[2], 'Deleting');
   });
 
index 20d5a962e36573ca23bf46b32d2b95feb54b78e0..28024827507eac51c5ef386d1789f78c74138c54 100644 (file)
@@ -90,7 +90,12 @@ export class TaskListService implements OnDestroy {
     if (tasks.length === 0) {
       return;
     }
-    return tasks.map((task) => this.taskMessageService.getRunningText(task)).join(', ');
+    return tasks
+      .map((task) => {
+        const progress = task.progress ? ` ${task.progress}%` : '';
+        return this.taskMessageService.getRunningText(task) + '...' + progress;
+      })
+      .join(', ');
   }
 
   ngOnDestroy() {
index 7a1fca4688f7248165433233ac95dc48cb0b496b..421ae5e5ceebe16741115db16db1d49fbb6b37b8 100644 (file)
@@ -4,6 +4,7 @@
 // The list of which env maps to which file can be found in `.angular-cli.json`.
 
 export const environment = {
+  default_lang: '{DEFAULT_LANG}',
   production: '{PRODUCTION}',
   year: '{COPYRIGHT_YEAR}'
 };
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/src/locale/messages.en-US.xlf b/ceph/src/pybind/mgr/dashboard/frontend/src/locale/messages.en-US.xlf
new file mode 100644 (file)
index 0000000..830f197
--- /dev/null
@@ -0,0 +1,8390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
+  <file source-language="en-US" datatype="plaintext" original="ng2.template" target-language="en-US">
+    <body>
+      <trans-unit id="319e0745bcbc132451569294fa2fa21bf10f555a" datatype="html">
+        <source>Toggle navigation</source>
+        <target state="translated">Toggle navigation</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="f65253954b66e929a8b4d5ecaf61f9129f8cec64" datatype="html">
+        <source>Dashboard</source>
+        <target state="translated">Dashboard</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+      </trans-unit><trans-unit id="f4d1dd59b039ad818d9da7e29a773e10e41d9821" datatype="html">
+        <source>Cluster</source>
+        <target state="translated">Cluster</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">21</context>
+        </context-group>
+      </trans-unit><trans-unit id="099b441d49333b3c6d30b36dc0a4763e64c78920" datatype="html">
+        <source>Hosts</source>
+        <target state="translated">Hosts</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">81</context>
+        </context-group>
+      </trans-unit><trans-unit id="624f596cc3320f5e0a0d7c7346c364e5af9bdd8c" datatype="html">
+        <source>Monitors</source>
+        <target state="translated">Monitors</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="1a9183778f2c6473d7ccb080f651caa01faaf70c" datatype="html">
+        <source>OSDs</source>
+        <target state="translated">OSDs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+      </trans-unit><trans-unit id="4a41f824a35ba01d5bd7be61aa06b3e8145209d0" datatype="html">
+        <source>Configuration</source>
+        <target state="translated">Configuration</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">125</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+      </trans-unit><trans-unit id="8c95898abff46bfac3ed6eb2afef74597e60b15c" datatype="html">
+        <source>CRUSH map</source>
+        <target state="translated">CRUSH map</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">85</context>
+        </context-group>
+      </trans-unit><trans-unit id="33da4dbeb076159510801ea764a218fd341269d2" datatype="html">
+        <source>Manager modules</source>
+        <target state="translated">Manager modules</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+      </trans-unit><trans-unit id="eb3d5aefff38a814b76da74371cbf02c0789a1ef" datatype="html">
+        <source>Logs</source>
+        <target state="translated">Logs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">99</context>
+        </context-group>
+      </trans-unit><trans-unit id="9fe218829514884cdd0ca2300573a4e0428c324f" datatype="html">
+        <source>Alerts</source>
+        <target state="translated">Alerts</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">105</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="aa0c44aa1e5727061baa91e954f77e2f5f9a37c9" datatype="html">
+        <source>Silences</source>
+        <target state="translated">Silences</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">111</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/prometheus-tabs/prometheus-tabs.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="92899fa68e8ca108912163ff58edc8540e453787" datatype="html">
+        <source>Pools</source>
+        <target state="translated">Pools</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">121</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">186</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+      </trans-unit><trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">
+        <source>Block</source>
+        <target state="translated">Block</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">135</context>
+        </context-group>
+      </trans-unit><trans-unit id="b73f7f5060fb22a1e9ec462b1bb02493fa3ab866" datatype="html">
+        <source>Images</source>
+        <target state="translated">Images</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">144</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>
+          <context context-type="linenumber">21</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi/iscsi.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">120</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">363</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">502</context>
+        </context-group>
+      </trans-unit><trans-unit id="3c2562ba992127203dcfd014010b03cb7b8113c6" datatype="html">
+        <source>Mirroring</source>
+        <target state="translated">Mirroring</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">152</context>
+        </context-group>
+      </trans-unit><trans-unit id="811c241d56601b91ef26735b770e64428089b950" datatype="html">
+        <source>iSCSI</source>
+        <target state="translated">iSCSI</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">164</context>
+        </context-group>
+      </trans-unit><trans-unit id="a24eabd99ea5af20f5f94c4484649cd30370042b" datatype="html">
+        <source>NFS</source>
+        <target state="translated">NFS</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">174</context>
+        </context-group>
+      </trans-unit><trans-unit id="a4eff72d97b7ced051398d581f10968218057ddc" datatype="html">
+        <source>Filesystems</source>
+        <target state="translated">Filesystems</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">182</context>
+        </context-group>
+      </trans-unit><trans-unit id="2190548d236ca5f7bc7ab2bca334b860c5ff2ad4" datatype="html">
+        <source>Object Gateway</source>
+        <target state="translated">Object Gateway</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">193</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-list/nfs-list.component.html</context>
+          <context context-type="linenumber">27</context>
+        </context-group>
+      </trans-unit><trans-unit id="9e24f9e2d42104ffc01599db4d566d1cc518f9e6" datatype="html">
+        <source>Daemons</source>
+        <target state="translated">Daemons</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">202</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">53</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/overview/overview.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="4d13a9cd5ed3dcee0eab22cb25198d43886942be" datatype="html">
+        <source>Users</source>
+        <target state="translated">Users</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">208</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-tabs/user-tabs.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="9515520496da83179d8b08132f00f575512a1f40" datatype="html">
+        <source>Buckets</source>
+        <target state="translated">Buckets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/navigation/navigation.component.html</context>
+          <context context-type="linenumber">214</context>
+        </context-group>
+      </trans-unit><trans-unit id="797f8214e8148f4bf0d244baaa7341706b419549" datatype="html">
+        <source>Retrieving data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for
+  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>. Please wait...</source>
+        <target state="translated">Retrieving data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for
+  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>. Please wait...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="5a870dc77b9f6f33ee671ea2d856021276933339" datatype="html">
+        <source>Displaying previously cached data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
+  for <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.</source>
+        <target state="translated">Displaying previously cached data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
+  for <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="ae580202919844531361ba2308287226ff74a584" datatype="html">
+        <source>Could not load data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for
+  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.
+  Please check the cluster health.</source>
+        <target state="translated">Could not load data<x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/> for
+  <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>.
+  Please check the cluster health.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/view-cache/view-cache.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+      </trans-unit><trans-unit id="cda31dbd724cf5f4fa7a4274d9120651490c8a8c" datatype="html">
+        <source>Back</source>
+        <target state="translated">Back</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/error-panel/error-panel.component.html</context>
+          <context context-type="linenumber">27</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">118</context>
+        </context-group>
+      </trans-unit><trans-unit id="3fb5709e10166cbc85970cbff103db227dbeb813" datatype="html">
+        <source>Select a Language</source>
+        <target state="translated">Select a Language</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/language-selector/language-selector.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="c5109325fb160b543f71a51e7511c00575057431" datatype="html">
+        <source>Loading panel data...</source>
+        <target state="translated">Loading panel data...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="8ca12411f890ab8b0a9216418e2b8f5ea7d2441a" datatype="html">
+        <source>Please consult the
+  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to
+  configure and enable the monitoring functionality.</source>
+        <target state="translated">Please consult the
+  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to
+  configure and enable the monitoring functionality.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="160a9e80dc089792df42e2400b1e81b9e7025aa7" datatype="html">
+        <source>Grafana Dashboard doesn't exist. Please refer to
+  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to
+  add dashboards to Grafana.</source>
+        <target state="translated">Grafana Dashboard doesn't exist. Please refer to
+  <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> on how to
+  add dashboards to Grafana.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>
+          <context context-type="linenumber">11</context>
+        </context-group>
+      </trans-unit><trans-unit id="4e11830040bd64804a0555de76f291d5832772d4" datatype="html">
+        <source>Grafana Time Picker</source>
+        <target state="translated">Grafana Time Picker</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="238c1ba845dd7330e8088165275919a1debf1ca3" datatype="html">
+        <source>Reset Settings</source>
+        <target state="translated">Reset Settings</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/grafana/grafana.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+      </trans-unit><trans-unit id="c8d1785038d461ec66b5799db21864182b35900a" datatype="html">
+        <source>Refresh</source>
+        <target state="translated">Refresh</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/refresh-selector/refresh-selector.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="6c947210e2d162b6225083d18820ab602f58cd2d" datatype="html">
+        <source>Remove the custom configuration value. The default configuration will be inherited and used instead.</source>
+        <target state="translated">Remove the custom configuration value. The default configuration will be inherited and used instead.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="454ee9cb60b00446a8fb147fd2cc5eb836320586" datatype="html">
+        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.</source>
+        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ option.maxValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+      </trans-unit><trans-unit id="7fc8a22825131e028336f60ef909ccbd96059703" datatype="html">
+        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.</source>
+        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ option.minValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/config-option/config-option.component.html</context>
+          <context context-type="linenumber">67</context>
+        </context-group>
+      </trans-unit><trans-unit id="012741ee52b3c050e4a977c37cc2334f7974f141" datatype="html">
+        <source>Failed to load data.</source>
+        <target state="translated">Failed to load data.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="80cc9a12d4bf6fe454ed94b379eeaf915f920bb7" datatype="html">
+        <source>selected</source>
+        <target state="translated">selected</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>
+          <context context-type="linenumber">112</context>
+        </context-group>
+        <note priority="1" from="description">X selected</note>
+      </trans-unit><trans-unit id="0cb77511a9a148e05b9adf36cc07269956fbb29d" datatype="html">
+        <source>found</source>
+        <target state="translated">found</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>
+          <context context-type="linenumber">115</context>
+        </context-group>
+        <note priority="1" from="description">X found</note>
+      </trans-unit><trans-unit id="79347388740c50b7ac97e144c2494bb62912f312" datatype="html">
+        <source>total</source>
+        <target state="translated">total</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/datatable/table/table.component.html</context>
+          <context context-type="linenumber">118</context>
+        </context-group>
+        <note priority="1" from="description">X total</note>
+      </trans-unit><trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c" datatype="html">
+        <source>Edit</source>
+        <target state="translated">Edit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">236</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">375</context>
+        </context-group>
+      </trans-unit><trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">
+        <source>Name</source>
+        <target state="translated">Name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">445</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">21</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+      </trans-unit><trans-unit id="eec715de352a6b114713b30b640d319fa78207a0" datatype="html">
+        <source>Description</source>
+        <target state="translated">Description</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="4ad112ce9bcd55dfd137792a86afe1b5a5b13cf8" datatype="html">
+        <source>Long description</source>
+        <target state="translated">Long description</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="ff7cee38a2259526c519f878e71b964f41db4348" datatype="html">
+        <source>Default</source>
+        <target state="translated">Default</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+      </trans-unit><trans-unit id="33e1c1d9fc05ca3f62fcc8a1170fc31ebae4229c" datatype="html">
+        <source>Daemon default</source>
+        <target state="translated">Daemon default</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">74</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+      </trans-unit><trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5" datatype="html">
+        <source>Services</source>
+        <target state="translated">Services</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">68</context>
+        </context-group>
+      </trans-unit><trans-unit id="809b0c848932a41318f77a2aace904ef429c13f4" datatype="html">
+        <source>Values</source>
+        <target state="translated">Values</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">101</context>
+        </context-group>
+      </trans-unit><trans-unit id="82029b6db704c56a2aa3e82ac555b8655356b077" datatype="html">
+        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.</source>
+        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ maxValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">139</context>
+        </context-group>
+      </trans-unit><trans-unit id="8ed8b3967a7326b81b191c9f490006e6a6777a9a" datatype="html">
+        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.</source>
+        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ minValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">142</context>
+        </context-group>
+      </trans-unit><trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">
+        <source>Save</source>
+        <target state="translated">Save</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-form/configuration-form.component.html</context>
+          <context context-type="linenumber">154</context>
+        </context-group>
+      </trans-unit><trans-unit id="738de688b22fba5d0dc7a5e549996838dddad0ee" datatype="html">
+        <source>CRUSH map viewer</source>
+        <target state="translated">CRUSH map viewer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/crushmap/crushmap.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="40661476cb24c89d8b06614998e31d5fbe84eeb6" datatype="html">
+        <source>Hosts List</source>
+        <target state="translated">Hosts List</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/hosts/hosts.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="5e7f4b1ca49e8d217bd0e12c6f7d6b6a2ade2c18" datatype="html">
+        <source>Overall Performance</source>
+        <target state="translated">Overall Performance</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/hosts/hosts.component.html</context>
+          <context context-type="linenumber">29</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-list/pool-list.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+      </trans-unit><trans-unit id="e6d57f36aa2bad303c8a8ee944b9bd7fae3c8c26" datatype="html">
+        <source>No entries found</source>
+        <target state="translated">No entries found</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">31</context>
+        </context-group>
+      </trans-unit><trans-unit id="d556ab48a65722b400e497f61737f553ee0f89e2" datatype="html">
+        <source>Cluster Logs</source>
+        <target state="translated">Cluster Logs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="5f966baffd188be0e8adc2d7067b86e55fc9b9de" datatype="html">
+        <source>Audit Logs</source>
+        <target state="translated">Audit Logs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">21</context>
+        </context-group>
+      </trans-unit><trans-unit id="4193c9eb868aeec119b78a14795241e0aa5e8b60" datatype="html">
+        <source>Priority:</source>
+        <target state="translated">Priority:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">41</context>
+        </context-group>
+      </trans-unit><trans-unit id="1d78ca51eab260ce3fd917d39190d64df5229b6e" datatype="html">
+        <source>Keyword:</source>
+        <target state="translated">Keyword:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="05fa0bded36de6e73a1fa44838b627349dace044" datatype="html">
+        <source>Date:</source>
+        <target state="translated">Date:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">70</context>
+        </context-group>
+      </trans-unit><trans-unit id="31dadb362bf7f7c2afa10e5f96474ccd3977f91f" datatype="html">
+        <source>Datepicker</source>
+        <target state="translated">Datepicker</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">75</context>
+        </context-group>
+      </trans-unit><trans-unit id="85a400388de1899b1917138cf7e5286376f72847" datatype="html">
+        <source>Time range:</source>
+        <target state="translated">Time range:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/logs/logs.component.html</context>
+          <context context-type="linenumber">91</context>
+        </context-group>
+      </trans-unit><trans-unit id="2447796ddbda942f4e2c46619cb84d69f066e568" datatype="html">
+        <source>Loading configuration...</source>
+        <target state="translated">Loading configuration...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="b42c0b347a841bed8859ee83de05080ee28c803b" datatype="html">
+        <source>The configuration could not be loaded.</source>
+        <target state="translated">The configuration could not be loaded.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">4</context>
+        </context-group>
+      </trans-unit><trans-unit id="31a9c2870a934b594d1390146c489f76440859ea" datatype="html">
+        <source>Edit Manager module</source>
+        <target state="translated">Edit Manager module</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="46e09b8290d3d0afdb6baa2021395b0570606a31" datatype="html">
+        <source>The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</source>
+        <target state="translated">The entered value is not a valid UUID, e.g.: 67dcac9f-2c03-4d6c-b7bd-1210b3a259a8</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">62</context>
+        </context-group>
+      </trans-unit><trans-unit id="7aacd038b39cfd347107d01d1dc27f5cb3e0951c" datatype="html">
+        <source>The entered value needs to be a valid IP address.</source>
+        <target state="translated">The entered value needs to be a valid IP address.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">65</context>
+        </context-group>
+      </trans-unit><trans-unit id="7cbdabcece469fab89cfa687ab152bca18b97498" datatype="html">
+        <source>This field is required.</source>
+        <target state="translated">This field is required.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">100</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">31</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">61</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">84</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">119</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">94</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">154</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">178</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">36</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">43</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">231</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">253</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">288</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">313</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">348</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">36</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">58</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">58</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">96</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">131</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">83</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">132</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">63</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">167</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">199</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">450</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">487</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">543</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">580</context>
+        </context-group>
+      </trans-unit><trans-unit id="f19106149f4b07a0d721f9d317afed393cb7bd93" datatype="html">
+        <source>The entered value is too high! It must be lower or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.</source>
+        <target state="translated">The entered value is too high! It must be lower or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.max }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">82</context>
+        </context-group>
+      </trans-unit><trans-unit id="6d33c40ef9a6c3bf0888df831b25e41e65f9d15b" datatype="html">
+        <source>The entered value is too low! It must be greater or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.</source>
+        <target state="translated">The entered value is too low! It must be greater or equal to <x id="INTERPOLATION" equiv-text="{{ moduleOption.value.min }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">85</context>
+        </context-group>
+      </trans-unit><trans-unit id="eae7086660cf1e38c7194a2c49ff52cc656f90f5" datatype="html">
+        <source>The entered value needs to be a number.</source>
+        <target state="translated">The entered value needs to be a number.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+      </trans-unit><trans-unit id="a73376e04b4fb3a20734c8c39743fba32e6676ce" datatype="html">
+        <source>The entered value needs to be a number or decimal.</source>
+        <target state="translated">The entered value needs to be a number or decimal.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">103</context>
+        </context-group>
+      </trans-unit><trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">
+        <source>Update</source>
+        <target state="translated">Update</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html</context>
+          <context context-type="linenumber">113</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">41</context>
+        </context-group>
+      </trans-unit><trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
+        <source>Status</source>
+        <target state="translated">Status</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">4</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="57ec6032f5618d4a9f16eb950ad23d2ce7c24b54" datatype="html">
+        <source>Cluster ID</source>
+        <target state="translated">Cluster ID</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+      </trans-unit><trans-unit id="67d7facc3fec5f8a49ab9ba0a245872184264ce5" datatype="html">
+        <source>monmap modified</source>
+        <target state="translated">monmap modified</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+      </trans-unit><trans-unit id="d4906731aaf2b94b4f547646c9bfe58bb77951b6" datatype="html">
+        <source>monmap epoch</source>
+        <target state="translated">monmap epoch</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+      </trans-unit><trans-unit id="bd4ee06ffdc46d9dfbd0c0c4f81399021c680056" datatype="html">
+        <source>quorum con</source>
+        <target state="translated">quorum con</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">24</context>
+        </context-group>
+      </trans-unit><trans-unit id="1176c7db8a8276ccb44cc3d42e2c28d9fa6c6596" datatype="html">
+        <source>quorum mon</source>
+        <target state="translated">quorum mon</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">29</context>
+        </context-group>
+      </trans-unit><trans-unit id="530ef677a09d681b3ab68cb0760494b3ae72a77c" datatype="html">
+        <source>required con</source>
+        <target state="translated">required con</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+      </trans-unit><trans-unit id="a91558e0d506c32021c31843f8f168899fc65cbf" datatype="html">
+        <source>required mon</source>
+        <target state="translated">required mon</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+      </trans-unit><trans-unit id="b3abe9eac5bcd94a54c8da93b312e085ec512e74" datatype="html">
+        <source>In Quorum</source>
+        <target state="translated">In Quorum</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="ba4b748a676e1f217ce1e736fb7ec1215e677bae" datatype="html">
+        <source>Not In Quorum</source>
+        <target state="translated">Not In Quorum</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/monitor/monitor.component.html</context>
+          <context context-type="linenumber">54</context>
+        </context-group>
+      </trans-unit><trans-unit id="d7b35c384aecd25a516200d6921836374613dfe7" datatype="html">
+        <source>Cancel</source>
+        <target state="translated">Cancel</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/confirmation-modal/confirmation-modal.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">90</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">136</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">43</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>
+          <context context-type="linenumber">52</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>
+          <context context-type="linenumber">55</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">43</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">108</context>
+        </context-group>
+      </trans-unit><trans-unit id="54839ebc827b73c9dc4e1df731c6d36a85036af7" datatype="html">
+        <source>Are you sure that you want to <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?</source>
+        <target state="translated">Are you sure that you want to <x id="INTERPOLATION" equiv-text="{{ actionDescription | lowercase }}"/> the selected <x id="INTERPOLATION_1" equiv-text="{{ itemDescription }}"/>?</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="2be8b7f04f0104d3fad90d079d8202b74f758b9a" datatype="html">
+        <source>Yes, I am sure.</source>
+        <target state="translated">Yes, I am sure.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="5ef50ba2514414f799d4c8fc36067a251904ba81" datatype="html">
+        <source>Cluster-wide OSD Flags</source>
+        <target state="translated">Cluster-wide OSD Flags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="71c77bb8cecdf11ec3eead24dd1ba506573fa9cd" datatype="html">
+        <source>Submit</source>
+        <target state="translated">Submit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">21</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">515</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">134</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">106</context>
+        </context-group>
+      </trans-unit><trans-unit id="formTitle" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">58</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">211</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">11</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">17</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+        <note priority="1" from="description">Example: Create Pool</note>
+        <note priority="1" from="meaning">form title</note>
+      </trans-unit><trans-unit id="1cfe07dac5b4ee1c464eb24225ddeb4f1d24076a" datatype="html">
+        <source>Advanced...</source>
+        <target state="translated">Advanced...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">213</context>
+        </context-group>
+      </trans-unit><trans-unit id="b1ef1c12ddcee305353623919ef02778569f5454" datatype="html">
+        <source>Advanced configuration options</source>
+        <target state="translated">Advanced configuration options</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="formActionButton" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ resource | upperFirst }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">81</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">149</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">311</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">563</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">327</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">455</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">141</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">81</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">143</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">595</context>
+        </context-group>
+        <note priority="1" from="description">Example: Create Pool</note>
+        <note priority="1" from="meaning">form action button</note>
+      </trans-unit><trans-unit id="c35f9c5f268a514b970cc55e9a5dc4bed0988e7f" datatype="html">
+        <source>OSD Recovery Priority</source>
+        <target state="translated">OSD Recovery Priority</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="b74af38005e8a8914e45af2ec412e11ceafef8b6" datatype="html">
+        <source>Priority</source>
+        <target state="translated">Priority</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+      </trans-unit><trans-unit id="c2f48f04b379bfba133825747adfd238d511412e" datatype="html">
+        <source>Customize priority values</source>
+        <target state="translated">Customize priority values</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">44</context>
+        </context-group>
+      </trans-unit><trans-unit id="4aa19de2a2b54cbda39e9c62917b23044c087776" datatype="html">
+        <source>This field is required!</source>
+        <target state="translated">This field is required!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">67</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">83</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">104</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">126</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">146</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">167</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">67</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">91</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">117</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">165</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">68</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">93</context>
+        </context-group>
+      </trans-unit><trans-unit id="b699e94bf376491bd50b70a98531071c737eaf40" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ attr.value.patternHelpText }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ attr.value.patternHelpText }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+      </trans-unit><trans-unit id="98fe13e7ad6c2b80375d204b47858ded83f80e15" datatype="html">
+        <source>The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.</source>
+        <target state="translated">The entered value is too high! It must not be greater than <x id="INTERPOLATION" equiv-text="{{ attr.value.maxValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">75</context>
+        </context-group>
+      </trans-unit><trans-unit id="5423a3c111be47fc5a1bfe46ceb58c81c84db691" datatype="html">
+        <source>The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.</source>
+        <target state="translated">The entered value is too low! It must not be lower than <x id="INTERPOLATION" equiv-text="{{ attr.value.minValue }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+      </trans-unit><trans-unit id="272696ff8acdbed0af6dc13f09729e70be435b82" datatype="html">
+        <source>Reweight OSD</source>
+        <target state="translated">Reweight OSD</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="67650b2998db48201b2c6176cbfef51e7211ccaa" datatype="html">
+        <source>The value needs to be between 0 and 1.</source>
+        <target state="translated">The value needs to be between 0 and 1.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="bc11f92113d678a90e334fdf3d7b3fddbe34c579" datatype="html">
+        <source>Reweight</source>
+        <target state="translated">Reweight</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html</context>
+          <context context-type="linenumber">30</context>
+        </context-group>
+      </trans-unit><trans-unit id="d5ca5daf742023fc4f0919fb3c1c6a51991cda4f" datatype="html">
+        <source>OSDs <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub</source>
+        <target state="translated">OSDs <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>Scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="4c17d67c7c5799eb920030e9a399961e90f55dd8" datatype="html">
+        <source>{VAR_SELECT, select, 1 {Deep } }</source>
+        <target state="translated">{VAR_SELECT, select, 1 {Deep } }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="6a92b12d76f3cb0ea9d4f6c3cdc57cb1e1235977" datatype="html">
+        <source>You are about to apply a <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to
+            the OSD <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>.</source>
+        <target state="translated">You are about to apply a <x id="ICU" equiv-text="{deep, select, 1 {...}}"/>scrub to
+            the OSD <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ selected[0].id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="dc6705f342a036b332c3fd3443201c3613e5524d" datatype="html">
+        <source>{VAR_SELECT, select, 1 {deep } }</source>
+        <target state="translated">{VAR_SELECT, select, 1 {deep } }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="b49d7877d24112d4bdfce9256edf61a007fae888" datatype="html">
+        <source>OSDs List</source>
+        <target state="translated">OSDs List</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="f777d9b30d757508cec8e0348e8696e1c64eab8a" datatype="html">
+        <source><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be marked
+  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</source>
+        <target state="translated"><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be marked
+  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ markActionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>
+          <context context-type="linenumber">82</context>
+        </context-group>
+      </trans-unit><trans-unit id="2d3a73f6440a7d896d74356fe0a725d731e71cbb" datatype="html">
+        <source>The OSD is not safe to destroy!</source>
+        <target state="translated">The OSD is not safe to destroy!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>
+          <context context-type="linenumber">91</context>
+        </context-group>
+      </trans-unit><trans-unit id="9d08116242443953ebbfe10bc2092e0a694b4adf" datatype="html">
+        <source><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be
+  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</source>
+        <target state="translated"><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>OSD <x id="INTERPOLATION" equiv-text="{{ selection.first().id }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> will be
+  <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION_1" equiv-text="{{ actionDescription }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> if you proceed.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-list/osd-list.component.html</context>
+          <context context-type="linenumber">93</context>
+        </context-group>
+      </trans-unit><trans-unit id="4f8b2bb476981727ab34ed40fde1218361f92c45" datatype="html">
+        <source>Details</source>
+        <target state="translated">Details</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/alert-list/alert-list.component.html</context>
+          <context context-type="linenumber">17</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-list/silence-list.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-details/role-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/mgr-modules/mgr-module-details/mgr-module-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-details/nfs-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="8501055865d7031b5521a0c5467532648009a61d" datatype="html">
+        <source>Matcher</source>
+        <target state="translated">Matcher</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="9c25e04f554875dc2625a78ba0fc56c6010cd0d3" datatype="html">
+        <source>-- Select an attribute to match against --</source>
+        <target state="translated">-- Select an attribute to match against --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">31</context>
+        </context-group>
+      </trans-unit><trans-unit id="5049e204c14c648691ac775a64fb504467aeb549" datatype="html">
+        <source>Value</source>
+        <target state="translated">Value</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="77fc5c63497fc031ddc97645484e3d94ad27766c" datatype="html">
+        <source>Use regular expression</source>
+        <target state="translated">Use regular expression</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">80</context>
+        </context-group>
+      </trans-unit><trans-unit id="7bbec1a797283712c0adf9e71d77fb5a8cd720db" datatype="html">
+        <source>{VAR_SELECT, select, 1 {Update} other {Add} }</source>
+        <target state="translated">{VAR_SELECT, select, 1 {Update} other {Add} }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">90</context>
+        </context-group>
+      </trans-unit><trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8" datatype="html">
+        <source>Close</source>
+        <target state="translated">Close</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-matcher-modal/silence-matcher-modal.component.html</context>
+          <context context-type="linenumber">93</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">
+        <source>Delete</source>
+        <target state="translated">Delete</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">40</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">243</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">297</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">382</context>
+        </context-group>
+      </trans-unit><trans-unit id="a3ba06aba047605af8ea1718ec1ba153b7db12a2" datatype="html">
+        <source>Editing a silence will expire the old silence and recreate it as a new silence</source>
+        <target state="translated">Editing a silence will expire the old silence and recreate it as a new silence</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">62</context>
+        </context-group>
+      </trans-unit><trans-unit id="a20424156b8816671f61879f0574a4f27d7b16b9" datatype="html">
+        <source>Creator</source>
+        <target state="translated">Creator</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+      </trans-unit><trans-unit id="5a5d7ee2acbfa9c91ab7f41d26bda9ff0cafe42f" datatype="html">
+        <source>Comment</source>
+        <target state="translated">Comment</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+      </trans-unit><trans-unit id="4c11aad490b2d53fdae30b3807beabf79306752c" datatype="html">
+        <source>Start time</source>
+        <target state="translated">Start time</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">113</context>
+        </context-group>
+      </trans-unit><trans-unit id="32856b1e8e339b747b21e313e2fe65a51fd450bb" datatype="html">
+        <source>If the start time lies in the past the creation time will be used</source>
+        <target state="translated">If the start time lies in the past the creation time will be used</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">114</context>
+        </context-group>
+      </trans-unit><trans-unit id="a02ea1d4e7424ca989929da5e598f379940fdbf2" datatype="html">
+        <source>Duration</source>
+        <target state="translated">Duration</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">135</context>
+        </context-group>
+      </trans-unit><trans-unit id="2f4e35e36f4d3c62e2c17df41730b6dee4afc4b9" datatype="html">
+        <source>End time</source>
+        <target state="translated">End time</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">155</context>
+        </context-group>
+      </trans-unit><trans-unit id="dbe739ec8c99a0132e326067ffec9c0ee06b2655" datatype="html">
+        <source>Matchers<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>*<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></source>
+        <target state="translated">Matchers<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>*<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">173</context>
+        </context-group>
+      </trans-unit><trans-unit id="3e023166c55833d5a13f4143e3dbe372befe1b4e" datatype="html">
+        <source>A silence requires at least one matcher</source>
+        <target state="translated">A silence requires at least one matcher</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">177</context>
+        </context-group>
+      </trans-unit><trans-unit id="ef765bd80c4806c51c891908c07a24bc76f019eb" datatype="html">
+        <source>Add matcher</source>
+        <target state="translated">Add matcher</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/prometheus/silence-form/silence-form.component.html</context>
+          <context context-type="linenumber">191</context>
+        </context-group>
+      </trans-unit><trans-unit id="d2bcd3296d2850de762fb943060b7e086a893181" datatype="html">
+        <source>Health</source>
+        <target state="translated">Health</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/dashboard/dashboard.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="61e0f26d843eec0b33ff475e111b0c2f7a80b835" datatype="html">
+        <source>Statistics</source>
+        <target state="translated">Statistics</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/dashboard/dashboard.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+      </trans-unit><trans-unit id="f8f74e5f683012b9c0702b1446011c6b9158bc67" datatype="html">
+        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+  on how to configure and enable the NFS Ganesha management functionality.</source>
+        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+  on how to configure and enable the NFS Ganesha management functionality.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-501/nfs-501.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="7ffe39df9d88c972792bd8688b215392deb8313d" datatype="html">
+        <source>Clients</source>
+        <target state="translated">Clients</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="f2dae0bda66f6a349444951c0379c28cda47d6d1" datatype="html">
+        <source>Any client can access</source>
+        <target state="translated">Any client can access</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">11</context>
+        </context-group>
+      </trans-unit><trans-unit id="7882f2edb1d4139800b276b6b0bbf5ae0b2234ef" datatype="html">
+        <source>Addresses</source>
+        <target state="translated">Addresses</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+      </trans-unit><trans-unit id="9bd96fcf50863e685c74d0490392f46689ffbdb6" datatype="html">
+        <source>Required field</source>
+        <target state="translated">Required field</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">44</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">118</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">151</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">183</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">216</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">253</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">277</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">309</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">349</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">396</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">434</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">466</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">498</context>
+        </context-group>
+      </trans-unit><trans-unit id="a5f3f74c0f6925826cb2188576391c0da01a23f0" datatype="html">
+        <source>Must contain one or more comma-separated values</source>
+        <target state="translated">Must contain one or more comma-separated values</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">45</context>
+        </context-group>
+      </trans-unit><trans-unit id="8bb5b2073697f3f4378c44a49b7524934c9268f4" datatype="html">
+        <source>For example:</source>
+        <target state="translated">For example:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+      </trans-unit><trans-unit id="8f969c655b3fbe4fba7e277caf4cd2c459f9fca5" datatype="html">
+        <source>Access Type</source>
+        <target state="translated">Access Type</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">408</context>
+        </context-group>
+      </trans-unit><trans-unit id="28952831a284cfe2b4fc39ca610e80b52598905a" datatype="html">
+        <source>Squash</source>
+        <target state="translated">Squash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">443</context>
+        </context-group>
+      </trans-unit><trans-unit id="0660ae339068979854ade34a96546980723dede3" datatype="html">
+        <source>Add clients</source>
+        <target state="translated">Add clients</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form-client/nfs-form-client.component.html</context>
+          <context context-type="linenumber">99</context>
+        </context-group>
+      </trans-unit><trans-unit id="6ecb266eacdb295d503d754e8a4a4c631efa841b" datatype="html">
+        <source>NFS export <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + ':' + export_id : '' }}"/></source>
+        <target state="translated">NFS export <x id="INTERPOLATION" equiv-text="{{ export_id ? cluster_id + ':' + export_id : '' }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+      </trans-unit><trans-unit id="94516fa213706c67ce5a5b5765681d7fb032033a" datatype="html">
+        <source>Loading...</source>
+        <target state="translated">Loading...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">106</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">139</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">171</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">204</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">418</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">453</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">82</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">142</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">59</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">186</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">210</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">218</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">341</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">83</context>
+        </context-group>
+      </trans-unit><trans-unit id="135b91a2d908d5814b782695470a6a786c99d9d2" datatype="html">
+        <source>-- No cluster available --</source>
+        <target state="translated">-- No cluster available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+      </trans-unit><trans-unit id="c501dba379f566885919240ea277b5bc10c14d18" datatype="html">
+        <source>-- Select the cluster --</source>
+        <target state="translated">-- Select the cluster --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">38</context>
+        </context-group>
+      </trans-unit><trans-unit id="cf85b1ee58326aa9da63da41b2629c9db7c9a5b9" datatype="html">
+        <source>Add daemon</source>
+        <target state="translated">Add daemon</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">81</context>
+        </context-group>
+      </trans-unit><trans-unit id="b3f6ba7fe84d6508705cdfe234f0fcc8ff85c9cf" datatype="html">
+        <source>Storage Backend</source>
+        <target state="translated">Storage Backend</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">95</context>
+        </context-group>
+      </trans-unit><trans-unit id="151c80ea931037cd92e854442927f8a0f6ae7795" datatype="html">
+        <source>-- No data pools available --</source>
+        <target state="translated">-- No data pools available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">109</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">145</context>
+        </context-group>
+      </trans-unit><trans-unit id="b6fee356d1db954255a56d8169405a89595246b9" datatype="html">
+        <source>-- Select the storage backend --</source>
+        <target state="translated">-- Select the storage backend --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">112</context>
+        </context-group>
+      </trans-unit><trans-unit id="76d67035c3ab3d8e56f725859f820f03fda41cfc" datatype="html">
+        <source>Object Gateway User</source>
+        <target state="translated">Object Gateway User</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">128</context>
+        </context-group>
+      </trans-unit><trans-unit id="fade7788bace74337f306ae209f10fc187ef4671" datatype="html">
+        <source>-- No users available --</source>
+        <target state="translated">-- No users available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">142</context>
+        </context-group>
+      </trans-unit><trans-unit id="6d30b7b36cf8f6364167321bdb4ba35d4cefce7b" datatype="html">
+        <source>-- Select the object gateway user --</source>
+        <target state="translated">-- Select the object gateway user --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">145</context>
+        </context-group>
+      </trans-unit><trans-unit id="589ce20d3ba3e3ac44f75decfaadc4ea8f0aec2d" datatype="html">
+        <source>CephFS User ID</source>
+        <target state="translated">CephFS User ID</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">161</context>
+        </context-group>
+      </trans-unit><trans-unit id="c4b88a53ac3b0ece46ba9b3ad72355a3c190cce7" datatype="html">
+        <source>-- No clients available --</source>
+        <target state="translated">-- No clients available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">174</context>
+        </context-group>
+      </trans-unit><trans-unit id="da52835b80497a0002d24414b057dc46ae44ce38" datatype="html">
+        <source>-- Select the cephx client --</source>
+        <target state="translated">-- Select the cephx client --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">177</context>
+        </context-group>
+      </trans-unit><trans-unit id="fd3419e8957d928d7f7ba19c93356a0dbff02871" datatype="html">
+        <source>CephFS Name</source>
+        <target state="translated">CephFS Name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">193</context>
+        </context-group>
+      </trans-unit><trans-unit id="ee3ba0ab5f0ccd597b3e44021c71e9aaad14df0a" datatype="html">
+        <source>-- No CephFS filesystem available --</source>
+        <target state="translated">-- No CephFS filesystem available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">207</context>
+        </context-group>
+      </trans-unit><trans-unit id="764c57812558b1ae66c5eec95d7efd2b1bf761e3" datatype="html">
+        <source>-- Select the CephFS filesystem --</source>
+        <target state="translated">-- Select the CephFS filesystem --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">210</context>
+        </context-group>
+      </trans-unit><trans-unit id="957512d0321f73e9f115bce1bd823fa635170c41" datatype="html">
+        <source>Security Label</source>
+        <target state="translated">Security Label</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">227</context>
+        </context-group>
+      </trans-unit><trans-unit id="65ce0fa4da1ed55e658aeb31d1644a29f06bb342" datatype="html">
+        <source>Enable security label</source>
+        <target state="translated">Enable security label</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">239</context>
+        </context-group>
+      </trans-unit><trans-unit id="7e808f804130c7b6ff719509cbc06ebb27393a48" datatype="html">
+        <source>CephFS Path</source>
+        <target state="translated">CephFS Path</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">263</context>
+        </context-group>
+      </trans-unit><trans-unit id="5ecc0107badb6625466aaa3f975b5c05276f432f" datatype="html">
+        <source>Path need to start with a '/' and can be followed by a word</source>
+        <target state="translated">Path need to start with a '/' and can be followed by a word</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">281</context>
+        </context-group>
+      </trans-unit><trans-unit id="2d02916f44fc63e13ab16d1cbe72aa6cb51feab3" datatype="html">
+        <source>New directory will be created</source>
+        <target state="translated">New directory will be created</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">284</context>
+        </context-group>
+      </trans-unit><trans-unit id="766c66ad5cc981c531aaf3fe3a2a7a346ddc8d83" datatype="html">
+        <source>Path</source>
+        <target state="translated">Path</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">294</context>
+        </context-group>
+      </trans-unit><trans-unit id="7ec35c722a50b976620f22612f7be619c12ceb90" datatype="html">
+        <source>Path can only be a single '/' or a word</source>
+        <target state="translated">Path can only be a single '/' or a word</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">313</context>
+        </context-group>
+      </trans-unit><trans-unit id="aebb6a5090c24511de4530195694bb3f3dcf0342" datatype="html">
+        <source>New bucket will be created</source>
+        <target state="translated">New bucket will be created</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">317</context>
+        </context-group>
+      </trans-unit><trans-unit id="bee6900143996c0e908a10564532eba3da0b30fb" datatype="html">
+        <source>NFS Protocol</source>
+        <target state="translated">NFS Protocol</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">326</context>
+        </context-group>
+      </trans-unit><trans-unit id="2f534178c01ebf1307da2eaeef04bc6801ebc729" datatype="html">
+        <source>NFSv3</source>
+        <target state="translated">NFSv3</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">336</context>
+        </context-group>
+      </trans-unit><trans-unit id="f5043c0921e709935ab026bb3253ffe1f159fca1" datatype="html">
+        <source>NFSv4</source>
+        <target state="translated">NFSv4</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">344</context>
+        </context-group>
+      </trans-unit><trans-unit id="92488963d23095985a47c0d6e62304e11d333f19" datatype="html">
+        <source>NFS Tag</source>
+        <target state="translated">NFS Tag</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">358</context>
+        </context-group>
+      </trans-unit><trans-unit id="aae93362720aea94623682996dd3fcd0f906f056" datatype="html">
+        <source>Alternative access for <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v3<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> mounts (it must not have a leading /).</source>
+        <target state="translated">Alternative access for <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v3<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> mounts (it must not have a leading /).</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">360</context>
+        </context-group>
+      </trans-unit><trans-unit id="45d6db77dcf1a3eeb921033abc7882e517a541cc" datatype="html">
+        <source>Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</source>
+        <target state="translated">Clients may not mount subdirectories (i.e. if Tag = foo, the client may not mount foo/baz).</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">361</context>
+        </context-group>
+      </trans-unit><trans-unit id="a1c7a8676b55e882a97c6a6fb205204f9c761afa" datatype="html">
+        <source>By using different Tag options, the same Path may be exported multiple times.</source>
+        <target state="translated">By using different Tag options, the same Path may be exported multiple times.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">362</context>
+        </context-group>
+      </trans-unit><trans-unit id="6d2c39708a32910f89701dd7e1cfb9ec1c195768" datatype="html">
+        <source>Pseudo</source>
+        <target state="translated">Pseudo</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">380</context>
+        </context-group>
+      </trans-unit><trans-unit id="1f8be2ae25947bec0b84c2338201580ea053f34e" datatype="html">
+        <source>The position that this <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v4<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> export occupies
+                in the <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Pseudo FS<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> (it must be unique).</source>
+        <target state="translated">The position that this <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>NFS v4<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> export occupies
+                in the <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Pseudo FS<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> (it must be unique).</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">383</context>
+        </context-group>
+      </trans-unit><trans-unit id="f3af55f7fd5b1d9e5a53e030c80116dc635bfb9f" datatype="html">
+        <source>By using different Pseudo options, the same Path may be exported multiple times.</source>
+        <target state="translated">By using different Pseudo options, the same Path may be exported multiple times.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">385</context>
+        </context-group>
+      </trans-unit><trans-unit id="ddf98fcdeeb17643db020d54f42b5e56b5f9a52a" datatype="html">
+        <source>Pseudo needs to start with a '/' and can't contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</source>
+        <target state="translated">Pseudo needs to start with a '/' and can't contain any of the following: &gt;, &lt;, |, &amp;, ( or ).</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">399</context>
+        </context-group>
+      </trans-unit><trans-unit id="27eb35c4b4ac08781a7253a2ab40f8f7d957ba51" datatype="html">
+        <source>-- No access type available --</source>
+        <target state="translated">-- No access type available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">421</context>
+        </context-group>
+      </trans-unit><trans-unit id="509ce016c9110a54028dafd741f15ceacbe74b5a" datatype="html">
+        <source>-- Select the access type --</source>
+        <target state="translated">-- Select the access type --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">424</context>
+        </context-group>
+      </trans-unit><trans-unit id="4deda03573eaaff77e63f6a238a1f0ca7816950a" datatype="html">
+        <source>-- No squash available --</source>
+        <target state="translated">-- No squash available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">456</context>
+        </context-group>
+      </trans-unit><trans-unit id="a0e82a4da88e7fdf270444f838d45849676e9d4b" datatype="html">
+        <source>--Select what kind of user id squashing is performed --</source>
+        <target state="translated">--Select what kind of user id squashing is performed --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">459</context>
+        </context-group>
+      </trans-unit><trans-unit id="d01b7c3f7f06712c53d054cfbe4f53d446b038e8" datatype="html">
+        <source>Transport Protocol</source>
+        <target state="translated">Transport Protocol</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">475</context>
+        </context-group>
+      </trans-unit><trans-unit id="d2a6ad6e8bc315f07911722c05767ac79c136d99" datatype="html">
+        <source>UDP</source>
+        <target state="translated">UDP</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">485</context>
+        </context-group>
+      </trans-unit><trans-unit id="9c030f11e0aae9b24d2c048c57f29f590be621df" datatype="html">
+        <source>TCP</source>
+        <target state="translated">TCP</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-form/nfs-form.component.html</context>
+          <context context-type="linenumber">493</context>
+        </context-group>
+      </trans-unit><trans-unit id="734c9905951a774870497c5aaae8e3ee833b6196" datatype="html">
+        <source>CephFS</source>
+        <target state="translated">CephFS</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-list/nfs-list.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="449dca3d3a93ead418b0541ea81b0dda7e6483c2" datatype="html">
+        <source>Welcome to Ceph!</source>
+        <target state="translated">Welcome to Ceph!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <note priority="1" from="description">The welcome message on the login page</note>
+      </trans-unit><trans-unit id="0070e83d11da39d6f4bb95065c2675db1610b419" datatype="html">
+        <source>Username is required</source>
+        <target state="translated">Username is required</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+      </trans-unit><trans-unit id="1e20f8b8a4706526c9024cc2f39d568345d100dc" datatype="html">
+        <source>Password is required</source>
+        <target state="translated">Password is required</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>
+          <context context-type="linenumber">58</context>
+        </context-group>
+      </trans-unit><trans-unit id="6765b4c916060f6bc42d9bb69e80377dbcb5e4e9" datatype="html">
+        <source>Login</source>
+        <target state="translated">Login</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/login/login.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+      </trans-unit><trans-unit id="58fc1b5c79a75370eb52644fd83fb2e7096b6649" datatype="html">
+        <source>Sorry, the user does not exist in Ceph.</source>
+        <target state="translated">Sorry, the user does not exist in Ceph.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/sso/sso-not-found/sso-not-found.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="d9deb94f78e7c41b35c6622b874f06657d7604c1" datatype="html">
+        <source>Return to <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Login Page<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. You'll be logged out from the Identity Provider when you retry logging in.</source>
+        <target state="translated">Return to <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Login Page<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. You'll be logged out from the Identity Provider when you retry logging in.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/sso/sso-not-found/sso-not-found.component.html</context>
+          <context context-type="linenumber">4</context>
+        </context-group>
+      </trans-unit><trans-unit id="471e78026c258073ba687478dc54c35d9041ea42" datatype="html">
+        <source>Forbidden</source>
+        <target state="translated">Forbidden</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/forbidden/forbidden.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="02ea8ad57677e3c63f3d7814ca5e6c7b74e360b4" datatype="html">
+        <source>Sorry, you are not allowed to see what you were looking for.</source>
+        <target state="translated">Sorry, you are not allowed to see what you were looking for.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/forbidden/forbidden.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="e3c028c58f92453d46f09b5adf95b2f013ee0300" datatype="html">
+        <source>Sorry, we could not find what you were looking for</source>
+        <target state="translated">Sorry, we could not find what you were looking for</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/not-found/not-found.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="16568619015cfb2352e3b2596ba04fc1c82e44ef" datatype="html">
+        <source>Remove all</source>
+        <target state="translated">Remove all</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="1d65cc22d5842c06d33b244fc67de9db4003537e" datatype="html">
+        <source>Recent Notifications</source>
+        <target state="translated">Recent Notifications</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>
+          <context context-type="linenumber">56</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/notifications/notifications.component.html</context>
+          <context context-type="linenumber">53</context>
+        </context-group>
+      </trans-unit><trans-unit id="495ab70870b5b4a30f2bc5f55052fdc518d954a9" datatype="html">
+        <source>There are no background tasks.</source>
+        <target state="translated">There are no background tasks.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+      </trans-unit><trans-unit id="ea94e7754983d80af8acb958a5d49d93bacd721c" datatype="html">
+        <source>Background Tasks</source>
+        <target state="translated">Background Tasks</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>
+          <context context-type="linenumber">83</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/task-manager/task-manager.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+      </trans-unit><trans-unit id="85b79c9064aed1ead31ace985f31aa1363f6bdaf" datatype="html">
+        <source>Help</source>
+        <target state="translated">Help</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+      </trans-unit><trans-unit id="fcfd4675b4c90f08d18d3abede9a9a4dff4cfdc7" datatype="html">
+        <source>Documentation</source>
+        <target state="translated">Documentation</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+      </trans-unit><trans-unit id="e351b40b3869a5c7d19c3d4918cb1ac7aaab95c4" datatype="html">
+        <source>API</source>
+        <target state="translated">API</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">
+        <source>About</source>
+        <target state="translated">About</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/dashboard-help/dashboard-help.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+      </trans-unit><trans-unit id="1481ecd21e760ac919a24e26cf790acd82e40199" datatype="html">
+        <source>Dashboard Settings</source>
+        <target state="translated">Dashboard Settings</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="a79aab4ef674bf3f6532292107c0054302236e0f" datatype="html">
+        <source>User management</source>
+        <target state="translated">User management</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/administration/administration.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="049dfd9fe6c78914ad58cf89ac6a631fca28ec74" datatype="html">
+        <source>Logged in user</source>
+        <target state="translated">Logged in user</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="cd38a58e73f306d838e621959d47d5e7a2f06d1f" datatype="html">
+        <source>Signed in as
+      <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ username }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/></source>
+        <target state="translated">Signed in as
+      <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/><x id="INTERPOLATION" equiv-text="{{ username }}"/><x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+      </trans-unit><trans-unit id="5d22c795daf43877a5f708dca2bccd549eb0471d" datatype="html">
+        <source>Sign out</source>
+        <target state="translated">Sign out</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/navigation/identity/identity.component.html</context>
+          <context context-type="linenumber">27</context>
+        </context-group>
+      </trans-unit><trans-unit id="2fecea01ce1d44114ee45144eff6d47a5016a74f" datatype="html">
+        <source>Name...</source>
+        <target state="translated">Name...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">27</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">52</context>
+        </context-group>
+      </trans-unit><trans-unit id="eabb4db920d9f9b2480cf438468b86e1bea02a9b" datatype="html">
+        <source>The chosen name is already in use.</source>
+        <target state="translated">The chosen name is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+      </trans-unit><trans-unit id="1ea5c4d8942c00752dcc72e72949c5d9832f6399" datatype="html">
+        <source>Description...</source>
+        <target state="translated">Description...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="70f45880fce6ac5d8e468e25e82aefbba8098cfe" datatype="html">
+        <source>Permissions</source>
+        <target state="translated">Permissions</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/role-form/role-form.component.html</context>
+          <context context-type="linenumber">61</context>
+        </context-group>
+      </trans-unit><trans-unit id="9610487cbeb5796d34d8601b5ac0c0a65f9e1d19" datatype="html">
+        <source>Roles</source>
+        <target state="translated">Roles</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-tabs/user-tabs.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">132</context>
+        </context-group>
+      </trans-unit><trans-unit id="08c74dc9762957593b91f6eb5d65efdfc975bf48" datatype="html">
+        <source>Username</source>
+        <target state="translated">Username</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="c32ef07f8803a223a83ed17024b38e8d82292407" datatype="html">
+        <source>Password</source>
+        <target state="translated">Password</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">267</context>
+        </context-group>
+      </trans-unit><trans-unit id="7f3bdcce4b2e8c37cd7f0f6c92ef8cff34b039b8" datatype="html">
+        <source>Confirm password</source>
+        <target state="translated">Confirm password</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">70</context>
+        </context-group>
+      </trans-unit><trans-unit id="cbb979e63ba50e0ca3adfa09cbdcaefd0853fca1" datatype="html">
+        <source>Password confirmation doesn't match the password.</source>
+        <target state="translated">Password confirmation doesn't match the password.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">91</context>
+        </context-group>
+      </trans-unit><trans-unit id="b760f123248930122fc7e7b6b6bf94e376e959c8" datatype="html">
+        <source>Full name</source>
+        <target state="translated">Full name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">99</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="244aae9346da82b0922506c2d2581373a15641cc" datatype="html">
+        <source>Email</source>
+        <target state="translated">Email</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">115</context>
+        </context-group>
+      </trans-unit><trans-unit id="d0ec081dd61eb4f43aea269077bbe38eae87b7f9" datatype="html">
+        <source>Invalid email.</source>
+        <target state="translated">Invalid email.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">126</context>
+        </context-group>
+      </trans-unit><trans-unit id="0051a3479d3ba79135c16dc8cc017950a2cce821" datatype="html">
+        <source>You are about to remove "user read / update" permissions from your own user.</source>
+        <target state="translated">You are about to remove "user read / update" permissions from your own user.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">158</context>
+        </context-group>
+      </trans-unit><trans-unit id="af4bf9fcb256853f14cf947eb1deb8d7f176d3f9" datatype="html">
+        <source>If you continue, you will no longer be able to add or remove roles from any user.</source>
+        <target state="translated">If you continue, you will no longer be able to add or remove roles from any user.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">160</context>
+        </context-group>
+      </trans-unit><trans-unit id="7d1dcf2a9146caac0581329acf94806ec69a89a5" datatype="html">
+        <source>Are you sure you want to continue?</source>
+        <target state="translated">Are you sure you want to continue?</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/core/auth/user-form/user-form.component.html</context>
+          <context context-type="linenumber">162</context>
+        </context-group>
+      </trans-unit><trans-unit id="ca53d681a9892d6fdbb57ee9676582186515e961" datatype="html">
+        <source>Performance counters not available</source>
+        <target state="translated">Performance counters not available</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/performance-counter/table-performance-counter/table-performance-counter.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+      </trans-unit><trans-unit id="91853167141c37b58868f3b0421383dd72fa8a01" datatype="html">
+        <source>Attributes (OSD map)</source>
+        <target state="translated">Attributes (OSD map)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="97842f379e1d4157ac3ab0661b90c352e7cb72d5" datatype="html">
+        <source>Metadata not available</source>
+        <target state="translated">Metadata not available</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="f721a500a68c357e8f2a01e60510f6a01e4ba529" datatype="html">
+        <source>Metadata</source>
+        <target state="translated">Metadata</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+      </trans-unit><trans-unit id="d24e28e19c5703d7c6be44f4eb595a6a43b618ed" datatype="html">
+        <source>Performance counter</source>
+        <target state="translated">Performance counter</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="d1f7c81ed9c5034af4abcdf119b1c1e86cd019dd" datatype="html">
+        <source>Histogram not available: <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/></source>
+        <target state="translated">Histogram not available: <x id="INTERPOLATION" equiv-text="{{ osd.histogram_failed }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="868abfff914873d1c65df798d8432ed04b8ae2a9" datatype="html">
+        <source>Writes</source>
+        <target state="translated">Writes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+      </trans-unit><trans-unit id="996ebb9a653b5067f97bf3891ea9d2108e969492" datatype="html">
+        <source>Reads</source>
+        <target state="translated">Reads</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">38</context>
+        </context-group>
+      </trans-unit><trans-unit id="65ac79790aa477a97b1cc579e18a115a8df8918f" datatype="html">
+        <source>Histogram</source>
+        <target state="translated">Histogram</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="fbbaf5cb02ed419e79a27072478f716a4666a99d" datatype="html">
+        <source>Performance Details</source>
+        <target state="translated">Performance Details</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/osd/osd-details/osd-details.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/hosts/host-details/host-details.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+      </trans-unit><trans-unit id="26fb5f81b3581f06b9210defb0e71dc69a67e819" datatype="html">
+        <source>Current values</source>
+        <target state="translated">Current values</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+      </trans-unit><trans-unit id="f61c6867295f3b53d23557021f2f4e0aa1d0b8fc" datatype="html">
+        <source>Type</source>
+        <target state="translated">Type</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+      </trans-unit><trans-unit id="9abcd7c82643d60c22733470463f74e4a54bc069" datatype="html">
+        <source>Min</source>
+        <target state="translated">Min</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+      </trans-unit><trans-unit id="c3ced4d162a0a55ee233a187ce7208ba5e922418" datatype="html">
+        <source>Max</source>
+        <target state="translated">Max</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">52</context>
+        </context-group>
+      </trans-unit><trans-unit id="920617c6a1a4805e53bcb5af6a9c76f8387e89c6" datatype="html">
+        <source>Flags</source>
+        <target state="translated">Flags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">270</context>
+        </context-group>
+      </trans-unit><trans-unit id="6834fa6b43d1ecbdf147c48dd9c4d72f1484571d" datatype="html">
+        <source>Source</source>
+        <target state="translated">Source</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">77</context>
+        </context-group>
+      </trans-unit><trans-unit id="a446fb0eb11fbffcac805ece5a2d306d24e733d8" datatype="html">
+        <source>Level</source>
+        <target state="translated">Level</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">82</context>
+        </context-group>
+      </trans-unit><trans-unit id="39f2fb094e9b2eda13163fa3f3a31594cf9c1307" datatype="html">
+        <source>Can be updated at runtime (editable)</source>
+        <target state="translated">Can be updated at runtime (editable)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">87</context>
+        </context-group>
+      </trans-unit><trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
+        <source>Tags</source>
+        <target state="translated">Tags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+      </trans-unit><trans-unit id="ab0089ef47af61ca1d137bc908b96c290dfd9287" datatype="html">
+        <source>Enum values</source>
+        <target state="translated">Enum values</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">97</context>
+        </context-group>
+      </trans-unit><trans-unit id="819476f1264f1659f38e86f6abb542141b184832" datatype="html">
+        <source>See also</source>
+        <target state="translated">See also</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cluster/configuration/configuration-details/configuration-details.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+      </trans-unit><trans-unit id="73caac4265ea7314ff061e5a1d78a6361a6dd3b8" datatype="html">
+        <source>Cluster Status</source>
+        <target state="translated">Cluster Status</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="1d4bc612bbf19aa9553853266b9e92c9d75f4464" datatype="html">
+        <source>Manager Daemons</source>
+        <target state="translated">Manager Daemons</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">69</context>
+        </context-group>
+      </trans-unit><trans-unit id="946ac5dea9921dc09d7b0a63b89535371f283b19" datatype="html">
+        <source>Object Gateways</source>
+        <target state="translated">Object Gateways</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">90</context>
+        </context-group>
+      </trans-unit><trans-unit id="ff03fa5bcf37c4da46ad736c1f7d03f959e8ba9a" datatype="html">
+        <source>Metadata Servers</source>
+        <target state="translated">Metadata Servers</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">98</context>
+        </context-group>
+      </trans-unit><trans-unit id="d817609ba4993eba859409ab71e566168f4d5f5a" datatype="html">
+        <source>iSCSI Gateways</source>
+        <target state="translated">iSCSI Gateways</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">109</context>
+        </context-group>
+      </trans-unit><trans-unit id="42c13e50391250ea9379bdf55d5d6c0228c0c8bc" datatype="html">
+        <source>Client IOPS</source>
+        <target state="translated">Client IOPS</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">125</context>
+        </context-group>
+      </trans-unit><trans-unit id="52213660b2454d139ada3079a42ec6caf3c3c01e" datatype="html">
+        <source>Client Throughput</source>
+        <target state="translated">Client Throughput</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">134</context>
+        </context-group>
+      </trans-unit><trans-unit id="32efd1c3f70e3c5244239de97a2cc95d98534a14" datatype="html">
+        <source>Client Read/Write</source>
+        <target state="translated">Client Read/Write</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">143</context>
+        </context-group>
+      </trans-unit><trans-unit id="275485415092cbae3a9f3cbb786ebe283cacfdd5" datatype="html">
+        <source>Recovery Throughput</source>
+        <target state="translated">Recovery Throughput</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">158</context>
+        </context-group>
+      </trans-unit><trans-unit id="6d9a9f55046891733ef71170e7652063765eb542" datatype="html">
+        <source>Scrub</source>
+        <target state="translated">Scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">167</context>
+        </context-group>
+      </trans-unit><trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">
+        <source>Performance</source>
+        <target state="translated">Performance</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">119</context>
+        </context-group>
+      </trans-unit><trans-unit id="88f383269db2d32cccee9e936fe549dccb9fdbf4" datatype="html">
+        <source>Raw Capacity</source>
+        <target state="translated">Raw Capacity</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">196</context>
+        </context-group>
+      </trans-unit><trans-unit id="afdb601c16162f2c798b16a2920955f1cc6a20aa" datatype="html">
+        <source>Objects</source>
+        <target state="translated">Objects</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">209</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">38</context>
+        </context-group>
+      </trans-unit><trans-unit id="c5f8a813f91a11af99132e4beafc136cfc13d73b" datatype="html">
+        <source>PGs per OSD</source>
+        <target state="translated">PGs per OSD</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">221</context>
+        </context-group>
+      </trans-unit><trans-unit id="498a109c6e9e94f1966de01aa0326f7f0ac6fb52" datatype="html">
+        <source>PG Status</source>
+        <target state="translated">PG Status</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">230</context>
+        </context-group>
+      </trans-unit><trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">
+        <source>Capacity</source>
+        <target state="translated">Capacity</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">178</context>
+        </context-group>
+      </trans-unit><trans-unit id="44ecac93d67c6a671198091c2270354f80322327" datatype="html">
+        <source><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/><x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> See <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Logs<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more details.</source>
+        <target state="translated"><x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/><x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> See <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Logs<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more details.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/dashboard/health/health.component.html</context>
+          <context context-type="linenumber">263</context>
+        </context-group>
+      </trans-unit><trans-unit id="0c1e17956453ad772dbe82d6946f62748c692f3e" datatype="html">
+        <source>Ranks</source>
+        <target state="translated">Ranks</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="50df62325726db950523a5be1c78b8905fcc25d4" datatype="html">
+        <source>MDS performance counters</source>
+        <target state="translated">MDS performance counters</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="95c96d55690c0c685deebe52a1da94dc36f5e99d" datatype="html">
+        <source>Clients: <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/></source>
+        <target state="translated">Clients: <x id="INTERPOLATION" equiv-text="{{ clientCount }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/cephfs/cephfs-detail/cephfs-detail.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+      </trans-unit><trans-unit id="47116253e36f4e38a97ba41b2d3122c6c15ab904" datatype="html">
+        <source>Clients (<x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)</source>
+        <target state="translated">Clients (<x id="INTERPOLATION" equiv-text="{{ clients.length }}"/>)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/nfs/nfs-details/nfs-details.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+      </trans-unit><trans-unit id="f0b5d789d42c0e69348e5fe0037fcbf5b5fbbdcc" datatype="html">
+        <source>Move an image to trash</source>
+        <target state="translated">Move an image to trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="86301cf2044b1eda218483365f6b9de8dde5040b" datatype="html">
+        <source>To move <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/<x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> to trash,
+          click <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Move Image<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>. Optionally, you can pick an expiration date.</source>
+        <target state="translated">To move <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/>/<x id="INTERPOLATION_1" equiv-text="{{ imageName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> to trash,
+          click <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Move Image<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>. Optionally, you can pick an expiration date.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+      </trans-unit><trans-unit id="88f27d390844aad53b4240360e928156c5f0d326" datatype="html">
+        <source>Protection expires at</source>
+        <target state="translated">Protection expires at</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="da166e9a0d27322f6ba8916d71ecc0f9905bb4b1" datatype="html">
+        <source>NOT PROTECTED</source>
+        <target state="translated">NOT PROTECTED</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="a1506e5f2ca22cad14502ec7a20fb6113ace145d" datatype="html">
+        <source>Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</source>
+        <target state="translated">Wrong date format. Please use "YYYY-MM-DD HH:mm:ss".</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">29</context>
+        </context-group>
+      </trans-unit><trans-unit id="aa7ea0bb7495281e0b3258467ac7d90a1e44a1a1" datatype="html">
+        <source>Protection has already expired. Please pick a future date or leave it empty.</source>
+        <target state="translated">Protection has already expired. Please pick a future date or leave it empty.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">32</context>
+        </context-group>
+      </trans-unit><trans-unit id="536b3205c0c0d4d21685ec06feccfcf2fe14deb1" datatype="html">
+        <source>Move Image</source>
+        <target state="translated">Move Image</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.html</context>
+          <context context-type="linenumber">40</context>
+        </context-group>
+      </trans-unit><trans-unit id="8a9910cd114c1deb9af74f6f99b4173403965bf2" datatype="html">
+        <source>Gateways</source>
+        <target state="translated">Gateways</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi/iscsi.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5" datatype="html">
+        <source>Overview</source>
+        <target state="translated">Overview</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-tabs/iscsi-tabs.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="bbd2045d5c37e4bb39a3c0fb62ea1ddf70a12838" datatype="html">
+        <source>Targets</source>
+        <target state="translated">Targets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-tabs/iscsi-tabs.component.html</context>
+          <context context-type="linenumber">7</context>
+        </context-group>
+      </trans-unit><trans-unit id="6803e31b7395d94934e091a49a9524026b59b018" datatype="html">
+        <source>Discovery Authentication</source>
+        <target state="translated">Discovery Authentication</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="e08a77594f3d89311cdf6da5090044270909c194" datatype="html">
+        <source>User</source>
+        <target state="translated">User</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">17</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">245</context>
+        </context-group>
+      </trans-unit><trans-unit id="0214f773f8e394f50f953f39962e352d7863e959" datatype="html">
+        <source>Usernames must have a length of 8 to 64 characters and
+              can only contain letters, '.', '@', '-', '_' or ':'.</source>
+        <target state="translated">Usernames must have a length of 8 to 64 characters and
+              can only contain letters, '.', '@', '-', '_' or ':'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">29</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+      </trans-unit><trans-unit id="6682d1c00263bee204583a5d589b308b6be88b0f" datatype="html">
+        <source>Passwords must have a length of 12 to 16 characters
+              and can only contain letters, '@', '-', '_' or '/'.</source>
+        <target state="translated">Passwords must have a length of 12 to 16 characters
+              and can only contain letters, '@', '-', '_' or '/'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+      </trans-unit><trans-unit id="ff40391de7a1944ea95091e4045cc34c4979b736" datatype="html">
+        <source>Mutual User</source>
+        <target state="translated">Mutual User</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">74</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">303</context>
+        </context-group>
+      </trans-unit><trans-unit id="0cf73dbebe99b737c4d288788182fc356e3c93d3" datatype="html">
+        <source>Mutual Password</source>
+        <target state="translated">Mutual Password</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">98</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">327</context>
+        </context-group>
+      </trans-unit><trans-unit id="8800276925157c666b103c36ff7fe8ffe11980b4" datatype="html">
+        <source>Passwords must have a length of 12 to 16 characters and
+              can only contain letters, '@', '-', '_' or '/'.</source>
+        <target state="translated">Passwords must have a length of 12 to 16 characters and
+              can only contain letters, '@', '-', '_' or '/'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.html</context>
+          <context context-type="linenumber">123</context>
+        </context-group>
+      </trans-unit><trans-unit id="53a583cd5f15059cc958b7d547f72cc78f68e123" datatype="html">
+        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+    on how to configure and enable the iSCSI Targets management functionality.</source>
+        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+    on how to configure and enable the iSCSI Targets management functionality.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>
+          <context context-type="linenumber">6</context>
+        </context-group>
+      </trans-unit><trans-unit id="3b301d0044f62c92af0da53d7aaca52a436a547d" datatype="html">
+        <source>Available information:</source>
+        <target state="translated">Available information:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>
+          <context context-type="linenumber">12</context>
+        </context-group>
+      </trans-unit><trans-unit id="332227f088a4877b3c11f5fb3ae8bc812c470fae" datatype="html">
+        <source>iSCSI Targets not available</source>
+        <target state="translated">iSCSI Targets not available</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>
+          <context context-type="linenumber">4</context>
+        </context-group>
+      </trans-unit><trans-unit id="8414a5cb9d71cc1b21b10e4a9d1f2dad558f3361" datatype="html">
+        <source>Discovery authentication</source>
+        <target state="translated">Discovery authentication</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-list/iscsi-target-list.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+      </trans-unit><trans-unit id="0f6e8f6094b180eaf1f11bc0ffe383f1cdcd059e" datatype="html">
+        <source>Only available for RBD images with <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>fast-diff<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> enabled</source>
+        <target state="translated">Only available for RBD images with <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>fast-diff<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> enabled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">
+        <source>Pool</source>
+        <target state="translated">Pool</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="03cc5b14b0a20d075e9009ff021f4f1660ba348a" datatype="html">
+        <source>Data Pool</source>
+        <target state="translated">Data Pool</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+      </trans-unit><trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">
+        <source>Created</source>
+        <target state="translated">Created</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="7faaaa08f56427999f3be41df1093ce4089bbd75" datatype="html">
+        <source>Size</source>
+        <target state="translated">Size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">163</context>
+        </context-group>
+      </trans-unit><trans-unit id="ceac8e132384322ec778ba760875a6c6897d3e42" datatype="html">
+        <source>Object size</source>
+        <target state="translated">Object size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">43</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">229</context>
+        </context-group>
+      </trans-unit><trans-unit id="6cdb1fea93d77c07950c0c76c6e0ad79ebbef084" datatype="html">
+        <source>Features</source>
+        <target state="translated">Features</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">191</context>
+        </context-group>
+      </trans-unit><trans-unit id="0a65771c9a73b9aa609d592fc96a64801a8f40bd" datatype="html">
+        <source>Provisioned</source>
+        <target state="translated">Provisioned</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+      </trans-unit><trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">
+        <source>N/A</source>
+        <target state="translated">N/A</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">63</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
+      </trans-unit><trans-unit id="e5c009342a4e8381f64341d0bb61c2e4685f5a4b" datatype="html">
+        <source>Total provisioned</source>
+        <target state="translated">Total provisioned</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+      </trans-unit><trans-unit id="7f6bf8a43ae415f527ac961ea62471b983aaa97b" datatype="html">
+        <source>Striping unit</source>
+        <target state="translated">Striping unit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">87</context>
+        </context-group>
+      </trans-unit><trans-unit id="db710e8a8f011923f2d15d713fbae49c38b02b26" datatype="html">
+        <source>Striping count</source>
+        <target state="translated">Striping count</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+      </trans-unit><trans-unit id="3a4c2a9e76634ff14a60d52a718296f722d47c67" datatype="html">
+        <source>Parent</source>
+        <target state="translated">Parent</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">97</context>
+        </context-group>
+      </trans-unit><trans-unit id="6a209e68d78ffc2cc9c53d2e76158624efab71ad" datatype="html">
+        <source>Block name prefix</source>
+        <target state="translated">Block name prefix</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">107</context>
+        </context-group>
+      </trans-unit><trans-unit id="5704ec2049d007c5f5fb495a5d8b607e68d58081" datatype="html">
+        <source>Order</source>
+        <target state="translated">Order</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">112</context>
+        </context-group>
+      </trans-unit><trans-unit id="f21b1d17b6c5042bb5805516eee37fde33739dd8" datatype="html">
+        <source>Snapshots</source>
+        <target state="translated">Snapshots</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">119</context>
+        </context-group>
+      </trans-unit><trans-unit id="a5f9ba9bb9faa8284bcadb1cdbc6aaf969e9c4bb" datatype="html">
+        <source>Image</source>
+        <target state="translated">Image</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">135</context>
+        </context-group>
+      </trans-unit><trans-unit id="58e58f1a8786da9031a05e6770c5dafce82badf5" datatype="html">
+        <source>This setting overrides the global value</source>
+        <target state="translated">This setting overrides the global value</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">135</context>
+        </context-group>
+      </trans-unit><trans-unit id="5decb3917d46a9ac6e5813699801becb7c3c1455" datatype="html">
+        <source>Global</source>
+        <target state="translated">Global</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">137</context>
+        </context-group>
+      </trans-unit><trans-unit id="36b46714164964c6258b08ed0a25f57d8a950f92" datatype="html">
+        <source>This is the global value. No value for this option has been set for this image.</source>
+        <target state="translated">This is the global value. No value for this option has been set for this image.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-details/rbd-details.component.html</context>
+          <context context-type="linenumber">137</context>
+        </context-group>
+      </trans-unit><trans-unit id="6547c9c4d5f62942ac4b1fe459cf9a03d4dbf5a0" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from</source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ action | titlecase }}"/> from</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+      </trans-unit><trans-unit id="0e9ecf29a4fa5b057bd8052e0d801b3fde6a30bf" datatype="html">
+        <source>'/' and '@' are not allowed.</source>
+        <target state="translated">'/' and '@' are not allowed.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">52</context>
+        </context-group>
+      </trans-unit><trans-unit id="b99417c4dd46286ffd37c8d2e987c8b512ec7052" datatype="html">
+        <source>-- No rbd pools available --</source>
+        <target state="translated">-- No rbd pools available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">85</context>
+        </context-group>
+      </trans-unit><trans-unit id="ef83ec9c304a89d45650e580dcdc2978c37b3a83" datatype="html">
+        <source>-- Select a pool --</source>
+        <target state="translated">-- Select a pool --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">88</context>
+        </context-group>
+      </trans-unit><trans-unit id="49449943d8cbf59d8c401c8bd2e76f92e207cc5f" datatype="html">
+        <source>Use a dedicated data pool</source>
+        <target state="translated">Use a dedicated data pool</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">108</context>
+        </context-group>
+      </trans-unit><trans-unit id="870aee0dd31a9643bf62007beb8f1ae1deb34d42" datatype="html">
+        <source>Data pool</source>
+        <target state="translated">Data pool</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">119</context>
+        </context-group>
+      </trans-unit><trans-unit id="3792ca829d9b9f687e1f5d7733d30e9bb0bfec47" datatype="html">
+        <source>Dedicated pool that stores the object-data of the RBD.</source>
+        <target state="translated">Dedicated pool that stores the object-data of the RBD.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">123</context>
+        </context-group>
+      </trans-unit><trans-unit id="f0016bd458baa88284a658ce9eeda42d8ad88d2c" datatype="html">
+        <source>e.g., 10GiB</source>
+        <target state="translated">e.g., 10GiB</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">173</context>
+        </context-group>
+      </trans-unit><trans-unit id="0a88bbee20570aaf9615332fb27020627044874d" datatype="html">
+        <source>You have to increase the size.</source>
+        <target state="translated">You have to increase the size.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">181</context>
+        </context-group>
+      </trans-unit><trans-unit id="bc2e854e111ecf2bd7db170da5e3c2ed08181d88" datatype="html">
+        <source>Advanced</source>
+        <target state="translated">Advanced</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">219</context>
+        </context-group>
+      </trans-unit><trans-unit id="3562a3778695a5f9c0445660e35301f0a39aaf73" datatype="html">
+        <source>Striping</source>
+        <target state="translated">Striping</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">222</context>
+        </context-group>
+      </trans-unit><trans-unit id="ef3c3f3b5f562a5cdbe0ee2874287db1534b5958" datatype="html">
+        <source>Stripe unit</source>
+        <target state="translated">Stripe unit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">246</context>
+        </context-group>
+      </trans-unit><trans-unit id="84471be1049006edecbcaef1a32ae0893c229c50" datatype="html">
+        <source>-- Select stripe unit --</source>
+        <target state="translated">-- Select stripe unit --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">257</context>
+        </context-group>
+      </trans-unit><trans-unit id="8d32c5c54c8581c774a7f467fbd4e329b15a74fa" datatype="html">
+        <source>This field is required because stripe count is defined!</source>
+        <target state="translated">This field is required because stripe count is defined!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">263</context>
+        </context-group>
+      </trans-unit><trans-unit id="6bbf9040be7c5491d4a03f2185708f43a6582a3b" datatype="html">
+        <source>Stripe unit is greater than object size.</source>
+        <target state="translated">Stripe unit is greater than object size.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">266</context>
+        </context-group>
+      </trans-unit><trans-unit id="a682f49f9b761591661276d7c6f550e641a130a4" datatype="html">
+        <source>Stripe count</source>
+        <target state="translated">Stripe count</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">275</context>
+        </context-group>
+      </trans-unit><trans-unit id="baa74031990c5370008ba622d0a250f0929097f4" datatype="html">
+        <source>This field is required because stripe unit is defined!</source>
+        <target state="translated">This field is required because stripe unit is defined!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">288</context>
+        </context-group>
+      </trans-unit><trans-unit id="cd2ada6d5ecbd5cbf89eae0a1f5326efedac0dbc" datatype="html">
+        <source>Stripe count must be greater than 0.</source>
+        <target state="translated">Stripe count must be greater than 0.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-form/rbd-form.component.html</context>
+          <context context-type="linenumber">291</context>
+        </context-group>
+      </trans-unit><trans-unit id="3f67f30568e9ae47507d46e28e1e82a7dca772e2" datatype="html">
+        <source><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot</source>
+        <target state="translated"><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> RBD Snapshot</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="1628d19a4490817c18be2afab410ca4adfa62ea7" datatype="html">
+        <source>{VAR_SELECT, select, true {Rename} other {Create} }</source>
+        <target state="translated">{VAR_SELECT, select, true {Rename} other {Create} }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+      </trans-unit><trans-unit id="73a287b41afe6b28f90edbeb98957a341a0276b4" datatype="html">
+        <source><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot</source>
+        <target state="translated"><x id="ICU" equiv-text="{ editing, select, true {...} other {...}}"/> Snapshot</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-form/rbd-snapshot-form.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+      </trans-unit><trans-unit id="cb60c1cd3655234756b5b92d4d597d92d520ee30" datatype="html">
+        <source>PROTECTED</source>
+        <target state="translated">PROTECTED</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>
+          <context context-type="linenumber">17</context>
+        </context-group>
+      </trans-unit><trans-unit id="deffb86b8fb0541254ad5a43862d82bff6b6a6c4" datatype="html">
+        <source>UNPROTECTED</source>
+        <target state="translated">UNPROTECTED</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="5c5331983af566d4ac6a1024d15a3511786a4aa6" datatype="html">
+        <source>You are about to rollback</source>
+        <target state="translated">You are about to rollback</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="49c0408946a6d67185947f455f15cc201d0d78e6" datatype="html">
+        <source>Purge Trash</source>
+        <target state="translated">Purge Trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">41</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>
+          <context context-type="linenumber">25</context>
+        </context-group>
+      </trans-unit><trans-unit id="af728625d769b61acf291442644b89edb88faec3" datatype="html">
+        <source>To purge, select one or All images and click</source>
+        <target state="translated">To purge, select one or All images and click</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="55a4f598a4894b7fd5cb88f0ffd3c37ad009dd70" datatype="html">
+        <source>Pool:</source>
+        <target state="translated">Pool:</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+      </trans-unit><trans-unit id="d43dd2b9f7797e4cf3a604695bb33e4479108516" datatype="html">
+        <source>Pool name...</source>
+        <target state="translated">Pool name...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+      </trans-unit><trans-unit id="dfc3c34e182ea73c5d784ff7c8135f087992dac1" datatype="html">
+        <source>All</source>
+        <target state="translated">All</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-purge-modal/rbd-trash-purge-modal.component.html</context>
+          <context context-type="linenumber">30</context>
+        </context-group>
+      </trans-unit><trans-unit id="b0e7c7ed1d51a0c205c815048bc9f79e24ee6db2" datatype="html">
+        <source>Restore Image</source>
+        <target state="translated">Restore Image</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">40</context>
+        </context-group>
+      </trans-unit><trans-unit id="7369384817e0ad61ce871c9afdfbb538df2f97c1" datatype="html">
+        <source>To restore</source>
+        <target state="translated">To restore</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="e7f0abefc608f7fb452c2dc9b1cdc3dec432160e" datatype="html">
+        <source>type the image's new name and click</source>
+        <target state="translated">type the image's new name and click</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="41307dd56fea669eed72e12a6c23af275f6bfd82" datatype="html">
+        <source>New Name</source>
+        <target state="translated">New Name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-restore-modal/rbd-trash-restore-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+      </trans-unit><trans-unit id="5c96a761dc55a21882c132c929583a424c9b8cf4" datatype="html">
+        <source>Expired at</source>
+        <target state="translated">Expired at</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+      </trans-unit><trans-unit id="661041e3fcff4d3e75c561e038ca2504cf2cc643" datatype="html">
+        <source>Protected until</source>
+        <target state="translated">Protected until</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+      </trans-unit><trans-unit id="0ee3b2322a1d3277f7e3fdb8a5141ac42bcf350b" datatype="html">
+        <source>This image is protected until <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.</source>
+        <target state="translated">This image is protected until <x id="INTERPOLATION" equiv-text="{{ expiresAt | cdDate }}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-trash-list/rbd-trash-list.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+      </trans-unit><trans-unit id="aba82bfd8e177d35b76cad7cd43941f8e5e5acac" datatype="html">
+        <source>Trash</source>
+        <target state="translated">Trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-images/rbd-images.component.html</context>
+          <context context-type="linenumber">8</context>
+        </context-group>
+      </trans-unit><trans-unit id="a674ab267d1934bf395f87ca1503fd474296893f" datatype="html">
+        <source>iSCSI Topology</source>
+        <target state="translated">iSCSI Topology</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-details/iscsi-target-details.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="121cc5391cd2a5115bc2b3160379ee5b36cd7716" datatype="html">
+        <source>Settings</source>
+        <target state="translated">Settings</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="9e515f954730279c31d5301f02479666d6264e8b" datatype="html">
+        <source>Changing these parameters from their default values is usually not necessary.</source>
+        <target state="translated">Changing these parameters from their default values is usually not necessary.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>
+          <context context-type="linenumber">10</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="69a47cbabcc51ca942606e1d8da0ec11f98a2690" datatype="html">
+        <source>Backstore</source>
+        <target state="translated">Backstore</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>
+          <context context-type="linenumber">16</context>
+        </context-group>
+      </trans-unit><trans-unit id="68e710782ccb5398b3acb8844caf0b199da2c3da" datatype="html">
+        <source>Confirm</source>
+        <target state="translated">Confirm</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-image-settings-modal/iscsi-target-image-settings-modal.component.html</context>
+          <context context-type="linenumber">50</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>
+          <context context-type="linenumber">53</context>
+        </context-group>
+      </trans-unit><trans-unit id="339878da255ab55447c43afef8d9b2f9753bf5f6" datatype="html">
+        <source>Advanced Settings</source>
+        <target state="translated">Advanced Settings</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-iqn-settings-modal/iscsi-target-iqn-settings-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="1406c2fb12a20c1528b19bcc5e24a6a2386167f3" datatype="html">
+        <source>Target IQN</source>
+        <target state="translated">Target IQN</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="5fe42339be910372fa689f559155631862d218e8" datatype="html">
+        <source>IQN has wrong pattern.</source>
+        <target state="translated">IQN has wrong pattern.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">235</context>
+        </context-group>
+      </trans-unit><trans-unit id="47d1bfe4f5b3f292e1202dfe691195b10cb99500" datatype="html">
+        <source>An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'</source>
+        <target state="translated">An IQN has the following notation 'iqn.$year-$month.$reversedAddress:$definedName'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="c8ada4b53396d8366db00a435acc61d53d857047" datatype="html">
+        <source>For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</source>
+        <target state="translated">For example: iqn.2016-06.org.dashboard:storage:disk.sn-a8675309</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">53</context>
+        </context-group>
+      </trans-unit><trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e" datatype="html">
+        <source>More information</source>
+        <target state="translated">More information</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">57</context>
+        </context-group>
+      </trans-unit><trans-unit id="9b1aa85dfc6849196e64060db02c5410de69b7a1" datatype="html">
+        <source>This target has modified advanced settings.</source>
+        <target state="translated">This target has modified advanced settings.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">62</context>
+        </context-group>
+      </trans-unit><trans-unit id="6990ad8d6182662e864495ac31c3758cda1c7a28" datatype="html">
+        <source>Portals</source>
+        <target state="translated">Portals</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+      </trans-unit><trans-unit id="c3638c01b6c34066438909713ec96087c813fc7e" datatype="html">
+        <source>At least <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.</source>
+        <target state="translated">At least <x id="INTERPOLATION" equiv-text="{{ minimum_gateways }}"/> gateways are required.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">96</context>
+        </context-group>
+      </trans-unit><trans-unit id="6a3ac2b4137d723fd9878cd357c2012ff6c07973" datatype="html">
+        <source>Add portal</source>
+        <target state="translated">Add portal</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">106</context>
+        </context-group>
+      </trans-unit><trans-unit id="9aff25be088f0efe3eaaf62edf2bff41cc41a617" datatype="html">
+        <source>Backstore: <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. </source>
+        <target state="translated">Backstore: <x id="INTERPOLATION" equiv-text="{{ imagesSettings[image].backstore | iscsiBackstore }}"/>. </target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">147</context>
+        </context-group>
+      </trans-unit><trans-unit id="e3484cae8b118c576ca2815bf9c9406c2eb2cae3" datatype="html">
+        <source>This image has modified settings.</source>
+        <target state="translated">This image has modified settings.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">150</context>
+        </context-group>
+      </trans-unit><trans-unit id="107c84e820909b44fe258673938a68ced1bbff72" datatype="html">
+        <source>At least 1 image is required.</source>
+        <target state="translated">At least 1 image is required.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">156</context>
+        </context-group>
+      </trans-unit><trans-unit id="808038f912fdc7f0e03f82d4afd3bf9178527fc8" datatype="html">
+        <source>Add image</source>
+        <target state="translated">Add image</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">166</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">393</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">529</context>
+        </context-group>
+      </trans-unit><trans-unit id="66c5fb27f52e75b70ca4b670b9b15a2a51cf9543" datatype="html">
+        <source>ACL authentication</source>
+        <target state="translated">ACL authentication</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">184</context>
+        </context-group>
+      </trans-unit><trans-unit id="f494bd31f095f6dcc656ce87ec2dcf07a2e9b30c" datatype="html">
+        <source>Initiators</source>
+        <target state="translated">Initiators</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">196</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">460</context>
+        </context-group>
+      </trans-unit><trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740" datatype="html">
+        <source>Initiator</source>
+        <target state="translated">Initiator</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">203</context>
+        </context-group>
+      </trans-unit><trans-unit id="f2c5059d8cda15d8d03e2cce30f2d139623d9a91" datatype="html">
+        <source>Client IQN</source>
+        <target state="translated">Client IQN</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">216</context>
+        </context-group>
+      </trans-unit><trans-unit id="107d5aabce23d900f0a80e6ddc1c10e29aa0bed8" datatype="html">
+        <source>Initiator IQN needs to be unique.</source>
+        <target state="translated">Initiator IQN needs to be unique.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">227</context>
+        </context-group>
+      </trans-unit><trans-unit id="bbf0b34a3fcc80800fcb44b9e1e86931a530dfe3" datatype="html">
+        <source>Usernames must have a length of 8 to 64 characters and
+                        can only contain letters, '.', '@', '-', '_' or ':'.</source>
+        <target state="translated">Usernames must have a length of 8 to 64 characters and
+                        can only contain letters, '.', '@', '-', '_' or ':'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">257</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">317</context>
+        </context-group>
+      </trans-unit><trans-unit id="fdfee5d7a27e1bdd97a176097277bee078de6aaf" datatype="html">
+        <source>Passwords must have a length of 12 to 16 characters
+                        and can only contain letters, '@', '-', '_' or '/'.</source>
+        <target state="translated">Passwords must have a length of 12 to 16 characters
+                        and can only contain letters, '@', '-', '_' or '/'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">292</context>
+        </context-group>
+      </trans-unit><trans-unit id="8406eb7415ee40e54d9ecb209abb056f06e3d666" datatype="html">
+        <source>Passwords must have a length of 12 to 16 characters and
+                        can only contain letters, '@', '-', '_' or '/'.</source>
+        <target state="translated">Passwords must have a length of 12 to 16 characters and
+                        can only contain letters, '@', '-', '_' or '/'.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">352</context>
+        </context-group>
+      </trans-unit><trans-unit id="5d1878d5fc761cbe9614bfd87047a740c82a6951" datatype="html">
+        <source>Initiator belongs to a group. Images will be configure in the group.</source>
+        <target state="translated">Initiator belongs to a group. Images will be configure in the group.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">383</context>
+        </context-group>
+      </trans-unit><trans-unit id="c0de67b9d97fafbf200f9451e8388ee8128a56ac" datatype="html">
+        <source>No items added.</source>
+        <target state="translated">No items added.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">406</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">544</context>
+        </context-group>
+      </trans-unit><trans-unit id="d565e47726158e428ecdc952fc9233b9b7d7f049" datatype="html">
+        <source>Add initiator</source>
+        <target state="translated">Add initiator</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">411</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">488</context>
+        </context-group>
+      </trans-unit><trans-unit id="c22ba03540aa3217da059f45e7eab138b51a96e2" datatype="html">
+        <source>Groups</source>
+        <target state="translated">Groups</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">426</context>
+        </context-group>
+      </trans-unit><trans-unit id="4c90059afafb7e160384d9f512797c95bb95c6dc" datatype="html">
+        <source>Group</source>
+        <target state="translated">Group</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">433</context>
+        </context-group>
+      </trans-unit><trans-unit id="3084948274cff4f56d0f431af47240e9cf02fcc7" datatype="html">
+        <source>Add group</source>
+        <target state="translated">Add group</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/iscsi-target-form/iscsi-target-form.component.html</context>
+          <context context-type="linenumber">549</context>
+        </context-group>
+      </trans-unit><trans-unit id="a949d7e577902d0e5dc5d0971bb0170a21be7728" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ value | titlecase }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ value | titlecase }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html</context>
+          <context context-type="linenumber">15</context>
+        </context-group>
+      </trans-unit><trans-unit id="ff92fbdec9fdd5054493eeda0d7ee8b450f83e72" datatype="html">
+        <source>RBD Configuration</source>
+        <target state="translated">RBD Configuration</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="b62d9efc8eb3b589904f6cb96a0406bbda55673a" datatype="html">
+        <source>Remove the local configuration value. The parent configuration value will be inherited and used instead.</source>
+        <target state="translated">Remove the local configuration value. The parent configuration value will be inherited and used instead.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+      </trans-unit><trans-unit id="963488a1010d46067b238c4ae917fab3907c0a3a" datatype="html">
+        <source>The mininum value is 0</source>
+        <target state="translated">The mininum value is 0</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+      </trans-unit><trans-unit id="66db799d67958d4b0765181d072df62e2d1c16f5" datatype="html">
+        <source>Issues</source>
+        <target state="translated">Issues</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="ef06d69259e587e28d52372455f44c7153cda7e7" datatype="html">
+        <source>Syncing</source>
+        <target state="translated">Syncing</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>
+          <context context-type="linenumber">11</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>
+          <context context-type="linenumber">38</context>
+        </context-group>
+      </trans-unit><trans-unit id="0b0901877d837d3fda16ba161eb74368d1c75b7a" datatype="html">
+        <source>Ready</source>
+        <target state="translated">Ready</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/image-list/image-list.component.html</context>
+          <context context-type="linenumber">20</context>
+        </context-group>
+      </trans-unit><trans-unit id="4057c56d63a7e9b140b1d01871a9229a5f30eb27" datatype="html">
+        <source>Edit pool mirror mode</source>
+        <target state="translated">Edit pool mirror mode</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="e1f367f5feaab38f6637dd1f967c848b447dea2d" datatype="html">
+        <source>To edit the mirror mode for pool 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>, select a new mode from the list and click 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Update<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</source>
+        <target state="translated">To edit the mirror mode for pool 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>, select a new mode from the list and click 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Update<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">
+        <source>Mode</source>
+        <target state="translated">Mode</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">22</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">314</context>
+        </context-group>
+      </trans-unit><trans-unit id="32ca348ef926b0a6a7a780b8b64c3a8239895cec" datatype="html">
+        <source>Peer clusters must be removed prior to disabling mirror.</source>
+        <target state="translated">Peer clusters must be removed prior to disabling mirror.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+      </trans-unit><trans-unit id="fa61522d482349707fd7dd03b90dc5781611b17f" datatype="html">
+        <source><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>
+  pool mirror peer</source>
+        <target state="translated"><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/>
+  pool mirror peer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="4ddcb416c1c0aa1f54acf5beef1de81813e76fa6" datatype="html">
+        <source>{VAR_SELECT, select, edit {Edit} other {Add} }</source>
+        <target state="translated">{VAR_SELECT, select, edit {Edit} other {Add} }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+      </trans-unit><trans-unit id="f7a13e4807afa6a9eda3db57a0a2a110dbae8ad7" datatype="html">
+        <source><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool
+          mirror peer attributes for pool <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> and click 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Submit<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</source>
+        <target state="translated"><x id="ICU" equiv-text="{mode, select, edit {...} other {...}}"/> the pool
+          mirror peer attributes for pool <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/><x id="INTERPOLATION" equiv-text="{{ poolName }}"/><x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/> and click 
+          <x id="START_TAG_KBD" ctype="x-kbd" equiv-text="&lt;kbd&gt;"/>Submit<x id="CLOSE_TAG_KBD" ctype="x-kbd" equiv-text="&lt;/kbd&gt;"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">14</context>
+        </context-group>
+      </trans-unit><trans-unit id="d3cc964811f852a168f4a2d5daa59068abc5cf53" datatype="html">
+        <source>Cluster Name</source>
+        <target state="translated">Cluster Name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+      </trans-unit><trans-unit id="b631721fc56cb7fb1cbd07b802a487c5753f6a2d" datatype="html">
+        <source>The cluster name is not valid.</source>
+        <target state="translated">The cluster name is not valid.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">39</context>
+        </context-group>
+      </trans-unit><trans-unit id="ca6deafa31bf421f85094807982aee4bcb20a3ae" datatype="html">
+        <source>CephX ID</source>
+        <target state="translated">CephX ID</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">46</context>
+        </context-group>
+      </trans-unit><trans-unit id="7539188a568c3d553cbde1bacaf32310c4264e24" datatype="html">
+        <source>CephX ID...</source>
+        <target state="translated">CephX ID...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="a1c45b594b0fba22fc64e80c793a7ffe005fdb0e" datatype="html">
+        <source>The CephX ID is not valid.</source>
+        <target state="translated">The CephX ID is not valid.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">61</context>
+        </context-group>
+      </trans-unit><trans-unit id="20861576fcfce773c918c782cd4f5adf32382921" datatype="html">
+        <source>Monitor Addresses</source>
+        <target state="translated">Monitor Addresses</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">68</context>
+        </context-group>
+      </trans-unit><trans-unit id="fa28eeed2b4bd4ccbe6e9349a1c2b3cb1c5de70a" datatype="html">
+        <source>Comma-delimited addresses...</source>
+        <target state="translated">Comma-delimited addresses...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+      </trans-unit><trans-unit id="dc016c82fd85848d5c1b2fd0e8469ee2027d9c16" datatype="html">
+        <source>The monitory address is not valid.</source>
+        <target state="translated">The monitory address is not valid.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+      </trans-unit><trans-unit id="e0ac55b83dc6739e62bc655cfe375b67c93e7f4a" datatype="html">
+        <source>CephX Key</source>
+        <target state="translated">CephX Key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">86</context>
+        </context-group>
+      </trans-unit><trans-unit id="f53434bcb95bd86f1df9c8e22966f757614fc4ad" datatype="html">
+        <source>Base64-encoded key...</source>
+        <target state="translated">Base64-encoded key...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">90</context>
+        </context-group>
+      </trans-unit><trans-unit id="4cd83164cd4f66b4abc2863f9ce6f599d789e4ca" datatype="html">
+        <source>CephX key must be base64 encoded.</source>
+        <target state="translated">CephX key must be base64 encoded.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/block/mirroring/pool-edit-peer-modal/pool-edit-peer-modal.component.html</context>
+          <context context-type="linenumber">97</context>
+        </context-group>
+      </trans-unit><trans-unit id="1d8a7c8aea58294a3c57c23af0468ddf0ba0c9c7" datatype="html">
+        <source>Pools List</source>
+        <target state="translated">Pools List</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-list/pool-list.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="490e15ecc922965b6d8194754c87c5583aa071f3" datatype="html">
+        <source>The name can only consist of alphanumeric characters, dashes and underscores.</source>
+        <target state="translated">The name can only consist of alphanumeric characters, dashes and underscores.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+      </trans-unit><trans-unit id="9edc2b494e660618af3e5225f68d40b7ca67629c" datatype="html">
+        <source>The chosen erasure code profile name is already in use.</source>
+        <target state="translated">The chosen erasure code profile name is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">40</context>
+        </context-group>
+      </trans-unit><trans-unit id="ef9ff0e6227947b48dfab4ac39ade04af758913b" datatype="html">
+        <source>Plugin</source>
+        <target state="translated">Plugin</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">47</context>
+        </context-group>
+      </trans-unit><trans-unit id="dd69b31bce8f630eac1d4762b0bbcf72ce19d193" datatype="html">
+        <source>Data chunks (k)</source>
+        <target state="translated">Data chunks (k)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">75</context>
+        </context-group>
+      </trans-unit><trans-unit id="b0d26a6172d32cb81218fe2103c54a818cbc1189" datatype="html">
+        <source>Must be equal to or greater than 2.</source>
+        <target state="translated">Must be equal to or greater than 2.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">94</context>
+        </context-group>
+      </trans-unit><trans-unit id="dab3a299ead121169b8e08ed618c3b6a2f66691b" datatype="html">
+        <source>Coding chunks (m)</source>
+        <target state="translated">Coding chunks (m)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+      </trans-unit><trans-unit id="1e2773e5bd4948193f18f2361d663ecc3988c656" datatype="html">
+        <source>Must be equal to or greater than 1.</source>
+        <target state="translated">Must be equal to or greater than 1.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">120</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">142</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">168</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">261</context>
+        </context-group>
+      </trans-unit><trans-unit id="6cde4c945a49a260c0a47bcc7cd956846930a5f7" datatype="html">
+        <source>Durability estimator (c)</source>
+        <target state="translated">Durability estimator (c)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">129</context>
+        </context-group>
+      </trans-unit><trans-unit id="af668c2a095a979ea2b4e43cd82c2120ab56c21c" datatype="html">
+        <source>Locality (l)</source>
+        <target state="translated">Locality (l)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">151</context>
+        </context-group>
+      </trans-unit><trans-unit id="d455a110bf6d2235e314e295ce1dfeee93d3dff2" datatype="html">
+        <source>Crush failure domain</source>
+        <target state="translated">Crush failure domain</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">175</context>
+        </context-group>
+      </trans-unit><trans-unit id="b74a495f041f7dd102eee5c0bbc9e03083b538ae" datatype="html">
+        <source>Crush Locality</source>
+        <target state="translated">Crush Locality</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">199</context>
+        </context-group>
+      </trans-unit><trans-unit id="a2f14a73f7a6e94479f67423cc51102da8d6f524" datatype="html">
+        <source>None</source>
+        <target state="translated">None</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">213</context>
+        </context-group>
+      </trans-unit><trans-unit id="2981733b912b693a9dd9d915d6d34f4692cc874a" datatype="html">
+        <source>Technique</source>
+        <target state="translated">Technique</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">226</context>
+        </context-group>
+      </trans-unit><trans-unit id="e0098b6e47b04ec817361f384ce81d454ba5c0bb" datatype="html">
+        <source>Packetsize</source>
+        <target state="translated">Packetsize</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">248</context>
+        </context-group>
+      </trans-unit><trans-unit id="c0252cd81ca54d0a2f69ec9ccf4248e73df5aa4a" datatype="html">
+        <source>Crush root</source>
+        <target state="translated">Crush root</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">269</context>
+        </context-group>
+      </trans-unit><trans-unit id="1548d5c76f0406ddd1ba3c557e1e6db22e95b340" datatype="html">
+        <source>Crush device class</source>
+        <target state="translated">Crush device class</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">286</context>
+        </context-group>
+      </trans-unit><trans-unit id="5e85feb6f9f0334366e46ee09ca6b8df52397432" datatype="html">
+        <source>any</source>
+        <target state="translated">any</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">296</context>
+        </context-group>
+      </trans-unit><trans-unit id="03d84645f6e019c5a43909bbf2ea1696ee88332c" datatype="html">
+        <source>Directory</source>
+        <target state="translated">Directory</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.html</context>
+          <context context-type="linenumber">308</context>
+        </context-group>
+      </trans-unit><trans-unit id="16e113230b6b0d3165e076300880542bac7c8138" datatype="html">
+        <source>The chosen Ceph pool name is already in use.</source>
+        <target state="translated">The chosen Ceph pool name is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+      </trans-unit><trans-unit id="b85c657469e5ec8231c3de99b22f437bc01ffde5" datatype="html">
+        <source>Pool type</source>
+        <target state="translated">Pool type</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">51</context>
+        </context-group>
+      </trans-unit><trans-unit id="526c5443254c3b126eedb264840ffe827727bfd3" datatype="html">
+        <source>-- Select a pool type --</source>
+        <target state="translated">-- Select a pool type --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+      </trans-unit><trans-unit id="0aa21053410a94aa61d16985a4e95fd65523430d" datatype="html">
+        <source>Placement groups</source>
+        <target state="translated">Placement groups</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
+      </trans-unit><trans-unit id="6301f1391d726f8f450bb358058534db19541ca9" datatype="html">
+        <source>At least one placement group is needed!</source>
+        <target state="translated">At least one placement group is needed!</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">96</context>
+        </context-group>
+      </trans-unit><trans-unit id="ba9469a1ce6ed36e039c1f67247c8c81a5c71449" datatype="html">
+        <source>Your cluster can't handle this many PGs. Please recalculate the PG amount needed.</source>
+        <target state="translated">Your cluster can't handle this many PGs. Please recalculate the PG amount needed.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">99</context>
+        </context-group>
+      </trans-unit><trans-unit id="62148abc31999dcfa38220cb09c33c8148b4b53a" datatype="html">
+        <source>You can only increase the number of PGs of an existing pool.
+                Currently your pool has <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.</source>
+        <target state="translated">You can only increase the number of PGs of an existing pool.
+                Currently your pool has <x id="INTERPOLATION" equiv-text="{{ data.pool.pg_num }}"/> PGs.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+      </trans-unit><trans-unit id="80ac68cd883369dac20688bc32b4cb33291b5e50" datatype="html">
+        <source>Calculation help</source>
+        <target state="translated">Calculation help</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">107</context>
+        </context-group>
+      </trans-unit><trans-unit id="37dd747f97e873d4280500da71b0076805f530a1" datatype="html">
+        <source>The current PGs settings were calculated for you, you
+                    should make sure the values suit your needs before submit.</source>
+        <target state="translated">The current PGs settings were calculated for you, you
+                    should make sure the values suit your needs before submit.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">111</context>
+        </context-group>
+      </trans-unit><trans-unit id="33150f22ce5348aa6c499bd092c3f4f3695d62cc" datatype="html">
+        <source>Crush ruleset</source>
+        <target state="translated">Crush ruleset</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">122</context>
+        </context-group>
+      </trans-unit><trans-unit id="73a6b31116b3cc322af951daa0bafdc169e6c42e" datatype="html">
+        <source>-- Select a crush rule --</source>
+        <target state="translated">-- Select a crush rule --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">130</context>
+        </context-group>
+      </trans-unit><trans-unit id="92da80699921e89fb19372e25b8d0f3b9fa427fc" datatype="html">
+        <source>Crush rule</source>
+        <target state="translated">Crush rule</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">151</context>
+        </context-group>
+      </trans-unit><trans-unit id="5489e9f96835f469f6f728a00d8efa88ea5bc940" datatype="html">
+        <source>Crush steps</source>
+        <target state="translated">Crush steps</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">157</context>
+        </context-group>
+      </trans-unit><trans-unit id="54a53b1b402aafff5b992ee9b64e409fbfe9074f" datatype="html">
+        <source>The rule can't be used in the current cluster as it has
+                to few OSDs to meet the minimum required OSD by this rule.</source>
+        <target state="translated">The rule can't be used in the current cluster as it has
+                to few OSDs to meet the minimum required OSD by this rule.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">168</context>
+        </context-group>
+      </trans-unit><trans-unit id="a43b2695131b48b76cebba676aba98a2bee17515" datatype="html">
+        <source>Replicated size</source>
+        <target state="translated">Replicated size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">179</context>
+        </context-group>
+      </trans-unit><trans-unit id="7bff144a4c4dc63b0e18fff2617d61a7ebdf2b6c" datatype="html">
+        <source>Minimum: <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/></source>
+        <target state="translated">Minimum: <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">193</context>
+        </context-group>
+      </trans-unit><trans-unit id="1a9c54b41f6d58a74e5d0aa3429ed0c87a482551" datatype="html">
+        <source>Maximum: <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/></source>
+        <target state="translated">Maximum: <x id="INTERPOLATION" equiv-text="{{ getMaxSize() }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">194</context>
+        </context-group>
+      </trans-unit><trans-unit id="43c6dd9233d6a8242cec2b025d25c273244d8d61" datatype="html">
+        <source>The size specified is out of range. A value from
+                    <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.</source>
+        <target state="translated">The size specified is out of range. A value from
+                    <x id="INTERPOLATION" equiv-text="{{ getMinSize() }}"/> to <x id="INTERPOLATION_1" equiv-text="{{ getMaxSize() }}"/> is valid.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">199</context>
+        </context-group>
+      </trans-unit><trans-unit id="9de7dde00e2139cc4bd03b1837afbe72ad15a1ff" datatype="html">
+        <source>Erasure code profile</source>
+        <target state="translated">Erasure code profile</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">209</context>
+        </context-group>
+      </trans-unit><trans-unit id="39b4620e6bd444e0a57a0a5c03fa8c96d7fe5235" datatype="html">
+        <source>-- No erasure code profile available --</source>
+        <target state="translated">-- No erasure code profile available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">221</context>
+        </context-group>
+      </trans-unit><trans-unit id="498561757390d5528b263ce450d5f38efb00266d" datatype="html">
+        <source>-- Select an erasure code profile --</source>
+        <target state="translated">-- Select an erasure code profile --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">224</context>
+        </context-group>
+      </trans-unit><trans-unit id="1c870fb00256b8a5b9cb9cd1a124e6390b9bc639" datatype="html">
+        <source>EC Overwrites</source>
+        <target state="translated">EC Overwrites</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">278</context>
+        </context-group>
+      </trans-unit><trans-unit id="f1abafaeb40ce52355ddcc24686e3cd17b64e08a" datatype="html">
+        <source>Applications</source>
+        <target state="translated">Applications</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">289</context>
+        </context-group>
+      </trans-unit><trans-unit id="2208d63d5940ce656006a220102b1eb2b5e553da" datatype="html">
+        <source>Compression</source>
+        <target state="translated">Compression</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">308</context>
+        </context-group>
+      </trans-unit><trans-unit id="6c6f25c47da62ec597c6057a36ddfc3209811ec5" datatype="html">
+        <source>Algorithm</source>
+        <target state="translated">Algorithm</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">333</context>
+        </context-group>
+      </trans-unit><trans-unit id="4903231d42089325a28892c0fde1aed46b733ae6" datatype="html">
+        <source>-- No erasure compression algorithm available --</source>
+        <target state="translated">-- No erasure compression algorithm available --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">344</context>
+        </context-group>
+      </trans-unit><trans-unit id="5d68ddb254275f8f44221e9ad6d8ceeb59ca46a6" datatype="html">
+        <source>Minimum blob size</source>
+        <target state="translated">Minimum blob size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">358</context>
+        </context-group>
+      </trans-unit><trans-unit id="fb2f176df80647137cbb02bbeb29e5dec707a400" datatype="html">
+        <source>e.g., 128KiB</source>
+        <target state="translated">e.g., 128KiB</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">367</context>
+        </context-group>
+      </trans-unit><trans-unit id="1b7f6e53a4521c6eb3ced4c007fdd4cf80bb7707" datatype="html">
+        <source>Value should be greater than 0</source>
+        <target state="translated">Value should be greater than 0</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">372</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">397</context>
+        </context-group>
+      </trans-unit><trans-unit id="8db98ab14b4e207ec763dfdefbc2dae367aab1cc" datatype="html">
+        <source>Value should be less than the maximum blob size</source>
+        <target state="translated">Value should be less than the maximum blob size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">375</context>
+        </context-group>
+      </trans-unit><trans-unit id="151efb127a9a4dd25259a0b2055442318a141f5b" datatype="html">
+        <source>Maximum blob size</source>
+        <target state="translated">Maximum blob size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">384</context>
+        </context-group>
+      </trans-unit><trans-unit id="0c656f0e346bbadf46eb1a5d20d0307a3bd20ba8" datatype="html">
+        <source>e.g., 512KiB</source>
+        <target state="translated">e.g., 512KiB</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">392</context>
+        </context-group>
+      </trans-unit><trans-unit id="0a65a24eee8a026f3b1113fe9e157e9a0dd69486" datatype="html">
+        <source>Value should be greater than the minimum blob size</source>
+        <target state="translated">Value should be greater than the minimum blob size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">400</context>
+        </context-group>
+      </trans-unit><trans-unit id="261ba09c4a59de83f48f52a23fd328da37e61ff4" datatype="html">
+        <source>Ratio</source>
+        <target state="translated">Ratio</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">409</context>
+        </context-group>
+      </trans-unit><trans-unit id="c1430457a9c3c66366e51d76bf10396014c576be" datatype="html">
+        <source>Compression ratio</source>
+        <target state="translated">Compression ratio</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">420</context>
+        </context-group>
+      </trans-unit><trans-unit id="ae5ce6de352cde949998fb10754459c3a4eb183b" datatype="html">
+        <source>Value should be between 0.0 and 1.0</source>
+        <target state="translated">Value should be between 0.0 and 1.0</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">423</context>
+        </context-group>
+      </trans-unit><trans-unit id="4b673e771a3f6b056837b22ef19a825386046095" datatype="html">
+        <source>It's not possible to create an RBD pool with '/' in the name.</source>
+        <target state="translated">It's not possible to create an RBD pool with '/' in the name.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">443</context>
+        </context-group>
+      </trans-unit><trans-unit id="a9c02674c6e4936562d1146e1ecf0c4240dfcf96" datatype="html">
+        <source>Please change the name or remove 'rbd' from the applications list.</source>
+        <target state="translated">Please change the name or remove 'rbd' from the applications list.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-form/pool-form.component.html</context>
+          <context context-type="linenumber">445</context>
+        </context-group>
+      </trans-unit><trans-unit id="3938a411d76796f8ae73b72ea4c77661207453bd" datatype="html">
+        <source>Cache Tiers Details</source>
+        <target state="translated">Cache Tiers Details</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/pool/pool-details/pool-details.component.html</context>
+          <context context-type="linenumber">27</context>
+        </context-group>
+      </trans-unit><trans-unit id="9424badb7e0c6ac792d020d7830645b529a80aad" datatype="html">
+        <source>Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+  on how to configure and enable the Object Gateway management functionality.</source>
+        <target state="translated">Please consult the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
+  on how to configure and enable the Object Gateway management functionality.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-501/rgw-501.component.html</context>
+          <context context-type="linenumber">3</context>
+        </context-group>
+      </trans-unit><trans-unit id="479488ab6e91ecb375484edc78bee3d13467f33f" datatype="html">
+        <source>Daemons List</source>
+        <target state="translated">Daemons List</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="eeba399c4dae8d4890c27b7a2cd2dc28fcf8b5f9" datatype="html">
+        <source>Performance Counters</source>
+        <target state="translated">Performance Counters</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-daemon-details/rgw-daemon-details.component.html</context>
+          <context context-type="linenumber">9</context>
+        </context-group>
+      </trans-unit><trans-unit id="5f67f2247b9c6bbaf24a0f2d37f4ac0537c6fa53" datatype="html">
+        <source>Loading bucket data...</source>
+        <target state="translated">Loading bucket data...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="8508c0ab851ad91fd0410da1266c02b0ef9d3ff9" datatype="html">
+        <source>The bucket data could not be loaded.</source>
+        <target state="translated">The bucket data could not be loaded.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="2798cc1e152b1ec07fd8daf94a2a073d1ba1ebcc" datatype="html">
+        <source>Id</source>
+        <target state="translated">Id</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">26</context>
+        </context-group>
+      </trans-unit><trans-unit id="db4e1a734518691b128ef40b939cc673f01d03a6" datatype="html">
+        <source>The value is not valid.</source>
+        <target state="translated">The value is not valid.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">61</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">453</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">546</context>
+        </context-group>
+      </trans-unit><trans-unit id="0ee5132a8da30e0b7f9f5c70dbc91928d17dd909" datatype="html">
+        <source>Owner</source>
+        <target state="translated">Owner</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">73</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">18</context>
+        </context-group>
+      </trans-unit><trans-unit id="8e4c918357c7445fbf19a203e5f0f0ece1960b3b" datatype="html">
+        <source>-- Select a user --</source>
+        <target state="translated">-- Select a user --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html</context>
+          <context context-type="linenumber">86</context>
+        </context-group>
+      </trans-unit><trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">
+        <source>ID</source>
+        <target state="translated">ID</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">13</context>
+        </context-group>
+      </trans-unit><trans-unit id="e5c51963a9c553b29427ef783bbb69fa6634fa8c" datatype="html">
+        <source>Index type</source>
+        <target state="translated">Index type</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">23</context>
+        </context-group>
+      </trans-unit><trans-unit id="8e6f950a32eaea32ec7e192f9ca3d3dfe469d4ba" datatype="html">
+        <source>Placement rule</source>
+        <target state="translated">Placement rule</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">28</context>
+        </context-group>
+      </trans-unit><trans-unit id="6972d213e31c4ea4f887e60db99d9881bc8fcd3e" datatype="html">
+        <source>Marker</source>
+        <target state="translated">Marker</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">33</context>
+        </context-group>
+      </trans-unit><trans-unit id="47b02acd2d3254d1ace1926f840523f154ebef71" datatype="html">
+        <source>Maximum marker</source>
+        <target state="translated">Maximum marker</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">38</context>
+        </context-group>
+      </trans-unit><trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
+        <source>Version</source>
+        <target state="translated">Version</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">43</context>
+        </context-group>
+      </trans-unit><trans-unit id="092fa3a7df9168b14d3f83a77a4035e92b92ce15" datatype="html">
+        <source>Master version</source>
+        <target state="translated">Master version</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">48</context>
+        </context-group>
+      </trans-unit><trans-unit id="97434cc5001d407f90c7447a12d9e8e6848a2aa3" datatype="html">
+        <source>Modification time</source>
+        <target state="translated">Modification time</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">53</context>
+        </context-group>
+      </trans-unit><trans-unit id="90fe2e41e7fde38453ce4e619efeea9bc6adea9c" datatype="html">
+        <source>Zonegroup</source>
+        <target state="translated">Zonegroup</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">58</context>
+        </context-group>
+      </trans-unit><trans-unit id="649a410bd0ace333d067d8fa22f12bdbdb43533b" datatype="html">
+        <source>Bucket quota</source>
+        <target state="translated">Bucket quota</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">66</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">97</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">497</context>
+        </context-group>
+      </trans-unit><trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">
+        <source>Enabled</source>
+        <target state="translated">Enabled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">66</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">102</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">414</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">507</context>
+        </context-group>
+      </trans-unit><trans-unit id="cef1595d040e77cbb4466e60382028d4c2040cac" datatype="html">
+        <source>Maximum size</source>
+        <target state="translated">Maximum size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">76</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">107</context>
+        </context-group>
+      </trans-unit><trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf" datatype="html">
+        <source>Unlimited</source>
+        <target state="translated">Unlimited</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">90</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">74</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">85</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">110</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">121</context>
+        </context-group>
+      </trans-unit><trans-unit id="ee862a800364b4d11f9b8cb9955a28a60f840a45" datatype="html">
+        <source>Maximum objects</source>
+        <target state="translated">Maximum objects</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-bucket-details/rgw-bucket-details.component.html</context>
+          <context context-type="linenumber">87</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">82</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">118</context>
+        </context-group>
+      </trans-unit><trans-unit id="49c614babd1950adb2be75df4e2c9747286d6adc" datatype="html">
+        <source>-- Select a username --</source>
+        <target state="translated">-- Select a username --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">41</context>
+        </context-group>
+      </trans-unit><trans-unit id="c217ee914725a37e9dd2336c721c8e63e9666bdc" datatype="html">
+        <source>Auto-generate key</source>
+        <target state="translated">Auto-generate key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">60</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">134</context>
+        </context-group>
+      </trans-unit><trans-unit id="2f1c1c0f2bce4c9f92d1a2061e8161cb0006c31a" datatype="html">
+        <source>Access key</source>
+        <target state="translated">Access key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">145</context>
+        </context-group>
+      </trans-unit><trans-unit id="b864acb67296a9819c1db0069c4c47d8b5ce8f44" datatype="html">
+        <source>Secret key</source>
+        <target state="translated">Secret key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.html</context>
+          <context context-type="linenumber">106</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.html</context>
+          <context context-type="linenumber">34</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">110</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">177</context>
+        </context-group>
+      </trans-unit><trans-unit id="69b6ac577a19acc39fc0c22342092f327fff2529" datatype="html">
+        <source>Email address</source>
+        <target state="translated">Email address</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">19</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">72</context>
+        </context-group>
+      </trans-unit><trans-unit id="92f3f203270a29b3001871153f02c063484a1574" datatype="html">
+        <source>Suspended</source>
+        <target state="translated">Suspended</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">24</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">117</context>
+        </context-group>
+      </trans-unit><trans-unit id="8011e20c5bbe51602d459a860fbf29b599b55edd" datatype="html">
+        <source>System</source>
+        <target state="translated">System</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">29</context>
+        </context-group>
+      </trans-unit><trans-unit id="f120423a48cf96636bc415daf5ac041ea8c6503e" datatype="html">
+        <source>{VAR_SELECT, select, 0 {No} 1 {Yes} }</source>
+        <target state="translated">{VAR_SELECT, select, 0 {No} 1 {Yes} }</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">31</context>
+        </context-group>
+      </trans-unit><trans-unit id="db18a2772988415466a7f75dc42663ce78c9c1d3" datatype="html">
+        <source>Maximum buckets</source>
+        <target state="translated">Maximum buckets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">35</context>
+        </context-group>
+      </trans-unit><trans-unit id="2c4c62e8ba24601be5cfe7dc5d32c24bbbd4b53c" datatype="html">
+        <source>Subusers</source>
+        <target state="translated">Subusers</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">40</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">206</context>
+        </context-group>
+      </trans-unit><trans-unit id="17bb3082e6fe5003203ef992a3714172334631a1" datatype="html">
+        <source>Capabilities</source>
+        <target state="translated">Capabilities</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">49</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">353</context>
+        </context-group>
+      </trans-unit><trans-unit id="36ad38f9c1a1485e09b67778a28af84553290ffb" datatype="html">
+        <source>User quota</source>
+        <target state="translated">User quota</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">61</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">404</context>
+        </context-group>
+      </trans-unit><trans-unit id="2aba1e87039819aca3b70faa9aa848c12bf139ca" datatype="html">
+        <source>Show</source>
+        <target state="translated">Show</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">149</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">290</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">340</context>
+        </context-group>
+      </trans-unit><trans-unit id="0bcd5ef19af0f1b814141ca8c57df623d8270088" datatype="html">
+        <source>Keys</source>
+        <target state="translated">Keys</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-details/rgw-user-details.component.html</context>
+          <context context-type="linenumber">134</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">265</context>
+        </context-group>
+      </trans-unit><trans-unit id="1221ca97d19eaa9a7bc0c5243d5fc5befe1d2314" datatype="html">
+        <source>-- Select a type --</source>
+        <target state="translated">-- Select a type --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">41</context>
+        </context-group>
+      </trans-unit><trans-unit id="d1b8990332af18f1c5159a6061ca889bcbb28432" datatype="html">
+        <source>Permission</source>
+        <target state="translated">Permission</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">56</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">63</context>
+        </context-group>
+      </trans-unit><trans-unit id="a08c589f82f69d892307288da14190ae1dd583d5" datatype="html">
+        <source>-- Select a permission --</source>
+        <target state="translated">-- Select a permission --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.html</context>
+          <context context-type="linenumber">64</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">71</context>
+        </context-group>
+      </trans-unit><trans-unit id="b2841767821d6b66238c34d07e413b0af67aee92" datatype="html">
+        <source>Subuser</source>
+        <target state="translated">Subuser</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">37</context>
+        </context-group>
+      </trans-unit><trans-unit id="bd59fc25a7bd98cff3e75117c09697c8a007a514" datatype="html">
+        <source>The chosen subuser ID is already in use.</source>
+        <target state="translated">The chosen subuser ID is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">54</context>
+        </context-group>
+      </trans-unit><trans-unit id="3d386c357ebcbc04ed05c4babd5a03626f9b1674" datatype="html">
+        <source>read, write</source>
+        <target state="translated">read, write</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">77</context>
+        </context-group>
+      </trans-unit><trans-unit id="84e3e3f9a4f31a039b648c97debf95fcb20f4c4a" datatype="html">
+        <source>full</source>
+        <target state="translated">full</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">79</context>
+        </context-group>
+      </trans-unit><trans-unit id="b6bf81d032a2316464f9df2f0d2f3d753f89f0d3" datatype="html">
+        <source>Swift key</source>
+        <target state="translated">Swift key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">89</context>
+        </context-group>
+      </trans-unit><trans-unit id="1e0c12685d50d47448ceed9423977ef39775c037" datatype="html">
+        <source>Auto-generate secret</source>
+        <target state="translated">Auto-generate secret</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-subuser-modal/rgw-user-subuser-modal.component.html</context>
+          <context context-type="linenumber">99</context>
+        </context-group>
+      </trans-unit><trans-unit id="3d1c7a6004bd5d86a7fa096ae24209e8aa7a53e3" datatype="html">
+        <source>Loading user data...</source>
+        <target state="translated">Loading user data...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">2</context>
+        </context-group>
+      </trans-unit><trans-unit id="faa5d834ab28571423d794d32b57998920efb65f" datatype="html">
+        <source>The user data could not be loaded.</source>
+        <target state="translated">The user data could not be loaded.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">5</context>
+        </context-group>
+      </trans-unit><trans-unit id="6aaf5d2a304167272ac73e3b1d1c162e16c77858" datatype="html">
+        <source>The chosen user ID is already in use.</source>
+        <target state="translated">The chosen user ID is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">42</context>
+        </context-group>
+      </trans-unit><trans-unit id="df441e80db2157f9d272b75de724ba4a82b96b57" datatype="html">
+        <source>This is not a valid email address.</source>
+        <target state="translated">This is not a valid email address.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">80</context>
+        </context-group>
+      </trans-unit><trans-unit id="ca271adf154956b8fcb28f4f50a37acb3057ff7c" datatype="html">
+        <source>The chosen email address is already in use.</source>
+        <target state="translated">The chosen email address is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">83</context>
+        </context-group>
+      </trans-unit><trans-unit id="030197cebe938edf35422e92fe14183d06eb670b" datatype="html">
+        <source>Max. buckets</source>
+        <target state="translated">Max. buckets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">92</context>
+        </context-group>
+      </trans-unit><trans-unit id="623ac50f37a26caec6fd7cd519b653e3315cba25" datatype="html">
+        <source>The entered value must be &gt;= 0.</source>
+        <target state="translated">The entered value must be &gt;= 0.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">105</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">490</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">583</context>
+        </context-group>
+      </trans-unit><trans-unit id="583a219c524155c2314eb06ee29162bb315272a3" datatype="html">
+        <source>S3 key</source>
+        <target state="translated">S3 key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">124</context>
+        </context-group>
+      </trans-unit><trans-unit id="128d6efb51d9ddc7c0cc695a2deeca5b9523f6e4" datatype="html">
+        <source>There are no subusers.</source>
+        <target state="translated">There are no subusers.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">212</context>
+        </context-group>
+      </trans-unit><trans-unit id="8c49635e3672c82d9cf3b416a0d1a03460191699" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ subuserLabel | upperFirst }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">257</context>
+        </context-group>
+      </trans-unit><trans-unit id="67c746c1ba9dab4351fedc4c7cba4e6d6b0dbc47" datatype="html">
+        <source>S3</source>
+        <target state="translated">S3</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">269</context>
+        </context-group>
+      </trans-unit><trans-unit id="d6819038d608623503918fb2553f53d68231ec3a" datatype="html">
+        <source>There are no keys.</source>
+        <target state="translated">There are no keys.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">274</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">324</context>
+        </context-group>
+      </trans-unit><trans-unit id="8b1d0beb2246fd01d9b25400bf9c67cbd532baee" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.CREATE | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ s3keyLabel | upperFirst }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">311</context>
+        </context-group>
+      </trans-unit><trans-unit id="6ddb5e991a3ecd2659fb520bc5acc81b67e08ddd" datatype="html">
+        <source>Swift</source>
+        <target state="translated">Swift</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">319</context>
+        </context-group>
+      </trans-unit><trans-unit id="1d01eccdda47fc907c5be35bcb16d2dcd02b0270" datatype="html">
+        <source>There are no capabilities.</source>
+        <target state="translated">There are no capabilities.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">359</context>
+        </context-group>
+      </trans-unit><trans-unit id="af26a69a40b3a5477a7d062756a44c8d91f988a4" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/> <x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{ actionLabels.ADD | titlecase }}"/><x id="INTERPOLATION_1" equiv-text="{{ capabilityLabel | upperFirst }}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">396</context>
+        </context-group>
+      </trans-unit><trans-unit id="6146e13ceca5fa5cc17b771b282fe5955f3d19fa" datatype="html">
+        <source>Unlimited size</source>
+        <target state="translated">Unlimited size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">428</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">521</context>
+        </context-group>
+      </trans-unit><trans-unit id="f6db8aa7c99fdce18edb33dde57729acede2b308" datatype="html">
+        <source>Max. size</source>
+        <target state="translated">Max. size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">439</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">532</context>
+        </context-group>
+      </trans-unit><trans-unit id="fc630b2093e880fffa19df99d5cd8b87605037f8" datatype="html">
+        <source>Unlimited objects</source>
+        <target state="translated">Unlimited objects</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">466</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">559</context>
+        </context-group>
+      </trans-unit><trans-unit id="6cda5a993d06f0bb10048be9d3aba6555aa9f356" datatype="html">
+        <source>Max. objects</source>
+        <target state="translated">Max. objects</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">477</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">app/ceph/rgw/rgw-user-form/rgw-user-form.component.html</context>
+          <context context-type="linenumber">570</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="bd5a3b1c5a3c185c7bbb0e09a061d4cdc88ce5ad" datatype="html">
+        <source>Current</source>
+        <target state="translated">Current</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e5e7d62e942083a59b0b31f54e17cd7958186052" datatype="html">
+        <source>Updated discovery authentication</source>
+        <target state="translated">Updated discovery authentication</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-discovery-modal/iscsi-target-discovery-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="dd4ab758afd5fd5a6c6a25b2b30ff99d0c00e9ad" datatype="html">
+        <source>There are no portals available.</source>
+        <target state="translated">There are no portals available.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="83021e45778a4a230a14ca0c6d6ccdf05500ad93" datatype="html">
+        <source>There are no images available.</source>
+        <target state="translated">There are no images available.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="86684eb21f8a768e1dbc659e3d5da6861db544a0" datatype="html">
+        <source>There are no images available. Please make sure you add an image to the target.</source>
+        <target state="translated">There are no images available. Please make sure you add an image to the target.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fffda6e440078f57eba93944ce051c593cc6ed7f" datatype="html">
+        <source>There are no initiators available. Please make sure you add an initiator to the target.</source>
+        <target state="translated">There are no initiators available. Please make sure you add an initiator to the target.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cea3c6fe490385eef1584cbc4983fda7ece24bb6" datatype="html">
+        <source>target</source>
+        <target state="translated">target</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
+        <source>Add</source>
+        <target state="translated">Add</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-list/nfs-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="38baeb215c17af9d9e295e371a57f4a48ab4c191" datatype="html">
+        <source>Target</source>
+        <target state="translated">Target</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="99e094878070eebc1b972bac02aaa33b2bf83b35" datatype="html">
+        <source># Sessions</source>
+        <target state="translated"># Sessions</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi-target-list/iscsi-target-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">
+        <source>State</source>
+        <target state="translated">State</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="02b75464c0dc0cf49ea0208211b6fbcad3bf728a" datatype="html">
+        <source># Targets</source>
+        <target state="translated"># Targets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="13415637c325ceefee29111b31cb48701490adf7" datatype="html">
+        <source>Read Bytes</source>
+        <target state="translated">Read Bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e2ed82b7bbf4a006e60e6208c597b05d5b5556e9" datatype="html">
+        <source>Write Bytes</source>
+        <target state="translated">Write Bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6a32a5f58845ca840185ea9564682094e77a1d80" datatype="html">
+        <source>Read Ops</source>
+        <target state="translated">Read Ops</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7c36cb8032af123d3550ffab2e1fa1e957c87fae" datatype="html">
+        <source>Write Ops</source>
+        <target state="translated">Write Ops</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="458c33846a8c7e2feb9404bcf06723784e756cdc" datatype="html">
+        <source>A/O Since</source>
+        <target state="translated">A/O Since</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/iscsi/iscsi.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b" datatype="html">
+        <source>Instance</source>
+        <target state="translated">Instance</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/daemon-list/daemon-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9a541ec1a4319fffc16ad3b3ab2c2b6d251a829d" datatype="html">
+        <source>Hostname</source>
+        <target state="translated">Hostname</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/daemon-list/daemon-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/hosts/hosts.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="36fad7995cadfb3a6f0d43ef2db280146b3ca022" datatype="html">
+        <source>Issue</source>
+        <target state="translated">Issue</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">
+        <source>Progress</source>
+        <target state="translated">Progress</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/image-list/image-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f39256070bfc0714020dfee08895421fc1527014" datatype="html">
+        <source>Disabled</source>
+        <target state="translated">Disabled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-edit-mode-modal/pool-edit-mode-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8c375764db42f5d736fb56d01b8052c006ccc8e2" datatype="html">
+        <source>Edit Mode</source>
+        <target state="translated">Edit Mode</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="45932f2a0ea524b3425f4320ee46a6d1c68977bc" datatype="html">
+        <source>Add Peer</source>
+        <target state="translated">Add Peer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d3dc34662e3cda0dad646221651cebd26f731485" datatype="html">
+        <source>Edit Peer</source>
+        <target state="translated">Edit Peer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e8a0ec0b6ee72db0f27c186e09640d1ed41964bd" datatype="html">
+        <source>Delete Peer</source>
+        <target state="translated">Delete Peer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="314de06d6f64d39149e78e6d796585c0246fec0b" datatype="html">
+        <source>Leader</source>
+        <target state="translated">Leader</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7acaab450312114059ced9e3737798ee9aa738b1" datatype="html">
+        <source># Local</source>
+        <target state="translated"># Local</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7a3ffd88868135c44be3994263bb8e49d8358884" datatype="html">
+        <source># Remote</source>
+        <target state="translated"># Remote</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="85ca0fd6a6ddd211023c70a25753122c5b978787" datatype="html">
+        <source>mirror peer</source>
+        <target state="translated">mirror peer</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/mirroring/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a6493c6ca346cd052da40423eda9c132de2b2002" datatype="html">
+        <source>Key</source>
+        <target state="translated">Key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e9cac80fb5d9de66f0006d0bec530fd1fc69a674" datatype="html">
+        <source>RBD</source>
+        <target state="translated">RBD</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4130b1a836f2000cfe9a11fb62493dc42d444de7" datatype="html">
+        <source>Deep flatten</source>
+        <target state="translated">Deep flatten</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7b17694d7cb8ecb7c8440bc999dac21b44455b33" datatype="html">
+        <source>Layering</source>
+        <target state="translated">Layering</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6a072ce577c2079d0e0c31071a16824f6d22b84d" datatype="html">
+        <source>Exclusive lock</source>
+        <target state="translated">Exclusive lock</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7354f01320bf936a7f85577c9f71402635c3a362" datatype="html">
+        <source>Object map (requires exclusive-lock)</source>
+        <target state="translated">Object map (requires exclusive-lock)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fb7e625c1152f1c102cd16460955d124edff1770" datatype="html">
+        <source>Journaling (requires exclusive-lock)</source>
+        <target state="translated">Journaling (requires exclusive-lock)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="df4044632bfc211dd96544fc8f007dabbeeb506c" datatype="html">
+        <source>Fast diff (interlocked with object-map)</source>
+        <target state="translated">Fast diff (interlocked with object-map)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-form/rbd-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1979da7460819153e11d2078244645d94291b69c" datatype="html">
+        <source>Copy</source>
+        <target state="translated">Copy</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3747fff7faf52b436ecff5fb8555091736d92c70" datatype="html">
+        <source>Flatten</source>
+        <target state="translated">Flatten</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ba073985cfd2528c77a746ed596b2f2052b973c5" datatype="html">
+        <source>Move to Trash</source>
+        <target state="translated">Move to Trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-list/rbd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
+        <source>Create</source>
+        <target state="translated">Create</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e26f9cf3666aace4e524b1505c9795d76d87738d" datatype="html">
+        <source>Rename</source>
+        <target state="translated">Rename</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="45480c03b0a3a37ff8f6a5600a6a034b40fbaea4" datatype="html">
+        <source>Protect</source>
+        <target state="translated">Protect</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3ea9b96a21a499d296a7f25407da0f3df6c2d5ed" datatype="html">
+        <source>Unprotect</source>
+        <target state="translated">Unprotect</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="54a4a3132b693575728a45a5f3154ad4c9af404b" datatype="html">
+        <source>Clone</source>
+        <target state="translated">Clone</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4be22bf20ef82614ed53bcd3b912a85590aa71c9" datatype="html">
+        <source>Rollback</source>
+        <target state="translated">Rollback</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-actions.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7eb984588f4835f6d0187b33769b4b0f62821640" datatype="html">
+        <source>RBD snapshot rollback</source>
+        <target state="translated">RBD snapshot rollback</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2a04c483708d261751d62082d6f03a50d4577b1e" datatype="html">
+        <source>RBD snapshot</source>
+        <target state="translated">RBD snapshot</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-snapshot-list/rbd-snapshot-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">
+        <source>Restore</source>
+        <target state="translated">Restore</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fa96769d1ea86741297cb9b9769b0dcfde58c8b4" datatype="html">
+        <source>Deleted At</source>
+        <target state="translated">Deleted At</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/block/rbd-trash-list/rbd-trash-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e928864038ca70ee7d67bbf1fd71a01c3938a127" datatype="html">
+        <source>id</source>
+        <target state="translated">id</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="240c9c1e96dc38814922a83ad041dc815b084f32" datatype="html">
+        <source>type</source>
+        <target state="translated">type</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c9d7ec7ee5b4e282f2228fa996651ec4ef5195a9" datatype="html">
+        <source>state</source>
+        <target state="translated">state</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5780e5c3b4fc2ae07836bb5221cec4f8d597630d" datatype="html">
+        <source>version</source>
+        <target state="translated">version</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">
+        <source>Host</source>
+        <target state="translated">Host</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fb69299354312c8954ecf324997ccafcd9f6b14b" datatype="html">
+        <source>root</source>
+        <target state="translated">root</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-clients/cephfs-clients.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3c3a423d91e36ac6624e909fcd2669a25685f847" datatype="html">
+        <source>Rank</source>
+        <target state="translated">Rank</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9596ecae8956e96921acef47aec787f6bdc37454" datatype="html">
+        <source>Daemon</source>
+        <target state="translated">Daemon</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">
+        <source>Activity</source>
+        <target state="translated">Activity</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e3a986984ae0c3b43af648c3fa638649d1c00348" datatype="html">
+        <source>Dentries</source>
+        <target state="translated">Dentries</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7c692ab865066967d73c6d64ec0691cc6ce91b93" datatype="html">
+        <source>Inodes</source>
+        <target state="translated">Inodes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="45f210b96a2a6e91f52f153a4f8dc30662629f8e" datatype="html">
+        <source>Usage</source>
+        <target state="translated">Usage</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7db875ff4cc626d394f37fba95c075b2e4bfeb00" datatype="html">
+        <source>Standby daemons</source>
+        <target state="translated">Standby daemons</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cephfs/cephfs-detail/cephfs-detail.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="22e4e574b7f8abf58254f328792445b42e2a924a" datatype="html">
+        <source>The value can be updated at runtime.</source>
+        <target state="translated">The value can be updated at runtime.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d7770de7b2343c9deeaa7ebf37ba3e35ca5c5988" datatype="html">
+        <source>Daemons/clients do not pull this value from the
+      monitor config database. We disallow setting this option via 'ceph config
+      set ...'. This option should be configured via ceph.conf or via the
+      command line.</source>
+        <target state="translated">Daemons/clients do not pull this value from the
+      monitor config database. We disallow setting this option via 'ceph config
+      set ...'. This option should be configured via ceph.conf or via the
+      command line.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="83f11fd1dc503c37931ea6c1c5c1e8c2b4b597b6" datatype="html">
+        <source>Option takes effect only during daemon startup.</source>
+        <target state="translated">Option takes effect only during daemon startup.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="837a07cd6a971038b8b1aa190c43440c9fdb5d8b" datatype="html">
+        <source>Option only affects cluster creation.</source>
+        <target state="translated">Option only affects cluster creation.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2566a88eb247c918b71cfe5b354c31de0d4b01e5" datatype="html">
+        <source>Option only affects daemon creation.</source>
+        <target state="translated">Option only affects daemon creation.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-details/configuration-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1cdc60cfc09c257625768f3d2082816cdef27279" datatype="html">
+        <source>Updated config option <x id="INTERPOLATION" equiv-text="{{name}}"/></source>
+        <target state="translated">Updated config option <x id="INTERPOLATION" equiv-text="{{name}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration-form/configuration-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d473e0f684a60db45d6f31e993f693f74290e056" datatype="html">
+        <source>Service</source>
+        <target state="translated">Service</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9951bb3983c7dba6fde013e05c922e4fe1a44367" datatype="html">
+        <source>Current value</source>
+        <target state="translated">Current value</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4a01c175f90dd92b432f4a4a199d2c7bb9d997ff" datatype="html">
+        <source>Editable</source>
+        <target state="translated">Editable</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/configuration/configuration.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1a6e6ad05508130b7a99ce5b15daf3227c2a930c" datatype="html">
+        <source>Updated options for module "<x id="INTERPOLATION" equiv-text="{{name}}"/>".</source>
+        <target state="translated">Updated options for module "<x id="INTERPOLATION" equiv-text="{{name}}"/>".</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ac6c9212896d39b23811ed2dadab7d07336ec559" datatype="html">
+        <source>Enable</source>
+        <target state="translated">Enable</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6766a926d80bb7763785621098dae459d6226429" datatype="html">
+        <source>Disable</source>
+        <target state="translated">Disable</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6a0b3657745dd7a2f2162f1cc790bf9004d0845d" datatype="html">
+        <source>Reconnecting, please wait ...</source>
+        <target state="translated">Reconnecting, please wait ...</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/mgr-modules/mgr-module-list/mgr-module-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7099a8878af7a0a26fe5663c4f46cfe87142b75d" datatype="html">
+        <source>Public Address</source>
+        <target state="translated">Public Address</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cbdd1cdc0c7a87f55dd177bc44212f0fc4b80852" datatype="html">
+        <source>Open Sessions</source>
+        <target state="translated">Open Sessions</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/monitor/monitor.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="37e58d1cbdf8212b380efa51422e42821d4f08e6" datatype="html">
+        <source>No In</source>
+        <target state="translated">No In</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="12706eb5af17ff5ad77b3de21af368d24678e00b" datatype="html">
+        <source>OSDs that were previously marked out will not be marked back in when they start</source>
+        <target state="translated">OSDs that were previously marked out will not be marked back in when they start</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="96114d7624d11dc90ca46cfa96145fe22118df76" datatype="html">
+        <source>No Out</source>
+        <target state="translated">No Out</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a2ef636fe1ddd56b63e4aaf3d292f33dbf735ef3" datatype="html">
+        <source>OSDs will not automatically be marked out after the configured interval</source>
+        <target state="translated">OSDs will not automatically be marked out after the configured interval</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ee50aefa9b8bde1e5429b48709a23abfe08358e0" datatype="html">
+        <source>No Up</source>
+        <target state="translated">No Up</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="608929b939307e397586a98cea52ae38997c7273" datatype="html">
+        <source>OSDs are not allowed to start</source>
+        <target state="translated">OSDs are not allowed to start</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1751ab69c1e7f62927afedbf7116e0116316c551" datatype="html">
+        <source>No Down</source>
+        <target state="translated">No Down</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="41fac86dfb65c1db690f3e87f6497cb73b281084" datatype="html">
+        <source>OSD failure reports are being ignored, such that the monitors will not mark OSDs down</source>
+        <target state="translated">OSD failure reports are being ignored, such that the monitors will not mark OSDs down</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">
+        <source>Pause</source>
+        <target state="translated">Pause</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="191d71dadcc8790573d46706a0b48211de4b8334" datatype="html">
+        <source>Pauses reads and writes</source>
+        <target state="translated">Pauses reads and writes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="471d5ba75836f38c19992cf83d8822632d99e473" datatype="html">
+        <source>No Scrub</source>
+        <target state="translated">No Scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5b8caa61814121bc36dac0c34a9e9de3cae74990" datatype="html">
+        <source>Scrubbing is disabled</source>
+        <target state="translated">Scrubbing is disabled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7f29a0ac1c797bdc0347dd5d0734ba83e96e7ce6" datatype="html">
+        <source>No Deep Scrub</source>
+        <target state="translated">No Deep Scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="01da61ab216541a8d31259cebd16b10c7e5fc124" datatype="html">
+        <source>Deep Scrubbing is disabled</source>
+        <target state="translated">Deep Scrubbing is disabled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0b86c7f18ac725de62c7e192dcfccd02c0dc40ab" datatype="html">
+        <source>No Backfill</source>
+        <target state="translated">No Backfill</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="bd33a2bdc8fbed3b7469f3717c16d9aaa2851fdd" datatype="html">
+        <source>Backfilling of PGs is suspended</source>
+        <target state="translated">Backfilling of PGs is suspended</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7fbbd036394cfa623add40299757bc87df8eaa7e" datatype="html">
+        <source>No Recover</source>
+        <target state="translated">No Recover</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f3ee9b451a64dca47299c9b4ae1091c2008068ad" datatype="html">
+        <source>Recovery of PGs is suspended</source>
+        <target state="translated">Recovery of PGs is suspended</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="de904148fe7e8d812218f50333ffe247900617c5" datatype="html">
+        <source>Bitwise Sort</source>
+        <target state="translated">Bitwise Sort</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2613c9fde29785bcd75f0abeccb653d14d7527b3" datatype="html">
+        <source>Use bitwise sort</source>
+        <target state="translated">Use bitwise sort</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2fe10d84250aeee365db244251d40934c70ff1e9" datatype="html">
+        <source>Purged Snapdirs</source>
+        <target state="translated">Purged Snapdirs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6b22a5b780eda3c5d500cdac9c6d4f96978c38f1" datatype="html">
+        <source>OSDs have converted snapsets</source>
+        <target state="translated">OSDs have converted snapsets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c42f0ba60564dc5b977a8c7f3fdcde9efbb39c60" datatype="html">
+        <source>Recovery Deletes</source>
+        <target state="translated">Recovery Deletes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="72fe39979198ea2ed6db6274b5029025cb316d90" datatype="html">
+        <source>Deletes performed during recovery instead of peering</source>
+        <target state="translated">Deletes performed during recovery instead of peering</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1bb4a1f9127cefe624c173557a716d0ebb6d647c" datatype="html">
+        <source>PG Log Hard Limit</source>
+        <target state="translated">PG Log Hard Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e03c0321397fdf7a9c22e8d6b5015424943c0a57" datatype="html">
+        <source>Puts a hard limit on pg log length</source>
+        <target state="translated">Puts a hard limit on pg log length</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3c384e2e80c6b5eb24861fbf4225b69486cff4a3" datatype="html">
+        <source>Updated OSD Flags</source>
+        <target state="translated">Updated OSD Flags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-flags-modal/osd-flags-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2e5e77dbaadd6588d8bbf737139fd9806294ae28" datatype="html">
+        <source>Deep Scrub</source>
+        <target state="translated">Deep Scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="75fb9f970ba365398c45e57bbb1019c009f6b832" datatype="html">
+        <source>Mark Out</source>
+        <target state="translated">Mark Out</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="688578fcc739d6f0c5fb6c366dbb19d21c6d9e36" datatype="html">
+        <source>out</source>
+        <target state="translated">out</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0cda3e824fb2f9c731e5a60b859dedc1fe03127e" datatype="html">
+        <source>Mark In</source>
+        <target state="translated">Mark In</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cb0f69bdd4dea41d7d45c74b6e07f98de8a2ab26" datatype="html">
+        <source>in</source>
+        <target state="translated">in</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="66fdbf32e5449cc54a3d1e19c7b8f4ea238facfb" datatype="html">
+        <source>Mark Down</source>
+        <target state="translated">Mark Down</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b5fbc7c7f007dd53b2318525bb7ff8b0376c9e37" datatype="html">
+        <source>down</source>
+        <target state="translated">down</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f833354f43cb38c5716faa8759a9bbdd1ab8f199" datatype="html">
+        <source>Mark Lost</source>
+        <target state="translated">Mark Lost</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b58719bcb9184e1a7884d00d22d10899d59bf295" datatype="html">
+        <source>Mark</source>
+        <target state="translated">Mark</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="31a1c1aa03f1e5084750bedb4e3fdc04ce2cb6ca" datatype="html">
+        <source>OSD lost</source>
+        <target state="translated">OSD lost</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f3fc4c85c5b8f1dedea0496b72d0af9da7b9e0d9" datatype="html">
+        <source>marked lost</source>
+        <target state="translated">marked lost</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="40fedc157ad899a18ec40573f770d18b040959d2" datatype="html">
+        <source>Purge</source>
+        <target state="translated">Purge</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c8b1475105463088593de1022ff6dceb523eae0e" datatype="html">
+        <source>OSD</source>
+        <target state="translated">OSD</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4f3cff08c7033b63bbccfe66006b1bcaea48ddd8" datatype="html">
+        <source>purged</source>
+        <target state="translated">purged</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="bf463b189696c19769ea263227e6c22aefafb918" datatype="html">
+        <source>Destroy</source>
+        <target state="translated">Destroy</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8e5d1b01eca6dce26a4751f0b19bda7a6ab8db5b" datatype="html">
+        <source>destroy</source>
+        <target state="translated">destroy</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="495a06b78bf165a7b545fa002137f0846b094a3d" datatype="html">
+        <source>destroyed</source>
+        <target state="translated">destroyed</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="43be3b1a806ff6b7eda5f9530b0595c081d2ad0f" datatype="html">
+        <source>Cluster-wide Flags</source>
+        <target state="translated">Cluster-wide Flags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a1334f5ad3090d59be02f4add0f3e98c8697c504" datatype="html">
+        <source>Cluster-wide Recovery Priority</source>
+        <target state="translated">Cluster-wide Recovery Priority</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="359dad5a3a912ef9dece3194035020856805aa96" datatype="html">
+        <source>PG scrub</source>
+        <target state="translated">PG scrub</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="953144c420c2e5abd02e6a687433eac60fa852bd" datatype="html">
+        <source>PGs</source>
+        <target state="translated">PGs</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7d3523ea9d35c274cef84043de8a2fdde540a9a1" datatype="html">
+        <source>Read bytes</source>
+        <target state="translated">Read bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ecbe2fdca919499125bc42c2c67cedae8563db1c" datatype="html">
+        <source>Writes bytes</source>
+        <target state="translated">Writes bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f3c33322823c846b13f59ba2c8f234405bba99e1" datatype="html">
+        <source>Read ops</source>
+        <target state="translated">Read ops</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7e0b24a17546cbfab48b03dc874461d1ca68bc9a" datatype="html">
+        <source>Write ops</source>
+        <target state="translated">Write ops</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d45455406092f58e6b089cb440b5b7934b801a01" datatype="html">
+        <source>Mark OSD <x id="INTERPOLATION" equiv-text="{{markAction}}"/></source>
+        <target state="translated">Mark OSD <x id="INTERPOLATION" equiv-text="{{markAction}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="de0b7806e451b3b3dbd564decba59981fe781c18" datatype="html">
+        <source>Mark <x id="INTERPOLATION" equiv-text="{{markAction}}"/></source>
+        <target state="translated">Mark <x id="INTERPOLATION" equiv-text="{{markAction}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-list/osd-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="bba1d3bb4f8a47aa2b3068e242562196eadb1e83" datatype="html">
+        <source>PG scrub options</source>
+        <target state="translated">PG scrub options</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b0b7748ebc9b7a6942a8cac4a89d4b215b365878" datatype="html">
+        <source>Updated PG scrub options</source>
+        <target state="translated">Updated PG scrub options</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-pg-scrub-modal/osd-pg-scrub-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4edc2162af0bd6cd941eaf730d20a7e3b5a83ba7" datatype="html">
+        <source>Max Backfills</source>
+        <target state="translated">Max Backfills</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="eb5e6c24a48a1dfe23e0a772b762be5e949c0c8a" datatype="html">
+        <source>Recovery Max Active</source>
+        <target state="translated">Recovery Max Active</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4a23c6d3859e03184118620d2baeb736ac765fbf" datatype="html">
+        <source>Recovery Max Single Start</source>
+        <target state="translated">Recovery Max Single Start</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="97049169ef5228fd1724de2fcdad1fec2858eaf8" datatype="html">
+        <source>Recovery Sleep</source>
+        <target state="translated">Recovery Sleep</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a5c05002b0ac2040f1aede5e727e0ffd06eda819" datatype="html">
+        <source>Custom</source>
+        <target state="translated">Custom</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="89553524f4e7db5c437b07dcfdc7b831d56ded1a" datatype="html">
+        <source>Updated OSD recovery speed priority "<x id="INTERPOLATION" equiv-text="{{value}}"/>"</source>
+        <target state="translated">Updated OSD recovery speed priority "<x id="INTERPOLATION" equiv-text="{{value}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="442db228d78b94d704b22bb0ffeb712af183f19a" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: <x id="INTERPOLATION_1" equiv-text="{{id}}"/></source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{operation}}"/> was initialized in the following OSD: <x id="INTERPOLATION_1" equiv-text="{{id}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/osd/osd-scrub-modal/osd-scrub-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1edb8e46b0fac57c5feb3d7d3585afc0122d5481" datatype="html">
+        <source>Create silence</source>
+        <target state="translated">Create silence</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="78917e8031aaf913ac3fa63295325ce8879703ce" datatype="html">
+        <source>Job</source>
+        <target state="translated">Job</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="94287619205068b591c18493c64781424864c259" datatype="html">
+        <source>Severity</source>
+        <target state="translated">Severity</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e6cfbe0c5e0302ba2cec22315f6a28f8ac46b651" datatype="html">
+        <source>Started</source>
+        <target state="translated">Started</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">
+        <source>URL</source>
+        <target state="translated">URL</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/alert-list/alert-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a5cd682a8a33bdc72e093d059429e3cc3a50ec1d" datatype="html">
+        <source>silence</source>
+        <target state="translated">silence</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f557e117e059e7036c6eecacd325a6ae35d866e0" datatype="html">
+        <source>Attribute name</source>
+        <target state="translated">Attribute name</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="50f7f517ad8158667f7d4e2bd6f3256e05156e75" datatype="html">
+        <source>Regular expression</source>
+        <target state="translated">Regular expression</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="81b1eab399c47110d50f45e3ccb4c009de7cb581" datatype="html">
+        <source>Please add your Prometheus host to the dashboard configuration and refresh the page</source>
+        <target state="translated">Please add your Prometheus host to the dashboard configuration and refresh the page</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-form/silence-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="29b4ae3296e239446fa0dea88a5112de15cffa54" datatype="html">
+        <source>Created by</source>
+        <target state="translated">Created by</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9da0107a35751e722c8b4bca7636fc7645dbdbdc" datatype="html">
+        <source>Updated</source>
+        <target state="translated">Updated</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8d833cceee0ba4c5161b130365e02bc1e129b57e" datatype="html">
+        <source>Ends</source>
+        <target state="translated">Ends</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="46a11ff4289e8c88b1b7a935f8d8ee704055f11a" datatype="html">
+        <source>Silence</source>
+        <target state="translated">Silence</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/cluster/prometheus/silence-list/silence-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fb2e1bed329dc5b84197808c778abb9edcbdb335" datatype="html">
+        <source>Used</source>
+        <target state="translated">Used</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4f1ab04d9100fb0df0e62b921ec46ae052ae29fc" datatype="html">
+        <source>Avail.</source>
+        <target state="translated">Avail.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a1c9b3d4fa67450fe9afd1d726f8a1bd91d990ea" datatype="html">
+        <source>Clean</source>
+        <target state="translated">Clean</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0054f5460090d6dde385e8f099d598df5d28cf54" datatype="html">
+        <source>Working</source>
+        <target state="translated">Working</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a8059e31694578c1b0344a76a345357dd60e8f01" datatype="html">
+        <source>Warning</source>
+        <target state="translated">Warning</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">
+        <source>Unknown</source>
+        <target state="translated">Unknown</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="88155be1b9b9c6140d6e8f93bac4a775cfdc6671" datatype="html">
+        <source>Healthy</source>
+        <target state="translated">Healthy</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8a3aec4dc1a6e2d4c612ae85e0537acbb20a0f85" datatype="html">
+        <source>Misplaced</source>
+        <target state="translated">Misplaced</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ee81f9bf7ceac69712e0b83e8adc268739f9673e" datatype="html">
+        <source>Degraded</source>
+        <target state="translated">Degraded</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="14625bc4025daef1969777a67a3cca27e0cd9167" datatype="html">
+        <source>Unfound</source>
+        <target state="translated">Unfound</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8f23ea509d081c2f747d083d44608dbf125b2ea2" datatype="html">
+        <source>replicas</source>
+        <target state="translated">replicas</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/health/health.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="129a2224e1f9d19eb5e11e2a07fe10a785556484" datatype="html">
+        <source>up</source>
+        <target state="translated">up</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/osd-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d5f29cf0af691726483262d647eb6622be002512" datatype="html">
+        <source>no filesystems</source>
+        <target state="translated">no filesystems</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b1c4387ffab06f3fa9fdb4411aea955595538d44" datatype="html">
+        <source>active</source>
+        <target state="translated">active</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1aaf7054d826f2cb05ec3e88a5a4b8116861e1f5" datatype="html">
+        <source>standby</source>
+        <target state="translated">standby</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mds-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c9a1080024dca344a48acdb77fa2d54e059f7254" datatype="html">
+        <source>n/a</source>
+        <target state="translated">n/a</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="84a1787b6df375847c70f782861d7e7f8f43bff4" datatype="html">
+        <source>active daemon</source>
+        <target state="translated">active daemon</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mgr-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="24407dc2ebfafaf6b131ee978683b893c3f1d763" datatype="html">
+        <source>quorum</source>
+        <target state="translated">quorum</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/dashboard/mon-summary.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2fa50bc07995c6ea660412294298ded39fcb08d9" datatype="html">
+        <source>The NFS Ganesha service is not configured.</source>
+        <target state="translated">The NFS Ganesha service is not configured.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-501/nfs-501.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="af1396bdc49f45ea6c4a1e414769f5e2a382c834" datatype="html">
+        <source>Transport</source>
+        <target state="translated">Transport</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b6a0e176d96c4feed2e975a039c044fcf822e152" datatype="html">
+        <source>CephFS User</source>
+        <target state="translated">CephFS User</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="44dc610cf201a163e8c38da810acec9596930bb3" datatype="html">
+        <source>CephFS Filesystem</source>
+        <target state="translated">CephFS Filesystem</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-details/nfs-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="db6dc7124be83c7055cb0f2719e31f2f9d46fd3d" datatype="html">
+        <source>(inherited from global config)</source>
+        <target state="translated">(inherited from global config)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e1f97bb86f991553ec7b535cb39e7eaa99dfcfe2" datatype="html">
+        <source>inherited from global config</source>
+        <target state="translated">inherited from global config</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e751800766277e7c2edd652cec7a7a1a68a37852" datatype="html">
+        <source>-- Select what kind of user id squashing is performed --</source>
+        <target state="translated">-- Select what kind of user id squashing is performed --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form-client/nfs-form-client.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4b58387f911e8a7b135a0c4d76c70335c65bbb32" datatype="html">
+        <source>There are no daemons available.</source>
+        <target state="translated">There are no daemons available.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-form/nfs-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5f19586aba912ec6eb123ec5ab609a3bcc073066" datatype="html">
+        <source>Export</source>
+        <target state="translated">Export</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/nfs/nfs-list/nfs-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ae128527ec18892f812a62a1fd15dc50a38060c0" datatype="html">
+        <source>EC Profile</source>
+        <target state="translated">EC Profile</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/erasure-code-profile-form/erasure-code-profile-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="60fb10c145f9c7ede2b9ddf9b2b0b0f6191d0ebd" datatype="html">
+        <source>Cache Mode</source>
+        <target state="translated">Cache Mode</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fa5bfad31d4139f6871443bb74324ffda5cad3e6" datatype="html">
+        <source>Min Evict Age</source>
+        <target state="translated">Min Evict Age</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fd0eb851666df45c34c76fabcda79b0d77bc910b" datatype="html">
+        <source>Min Flush Age</source>
+        <target state="translated">Min Flush Age</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cb54d2c420a534cee0c308ea5589f8c394ef8d67" datatype="html">
+        <source>Target Max Bytes</source>
+        <target state="translated">Target Max Bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="07f4ebe6615dca466818ffdae2a69ee217d265fb" datatype="html">
+        <source>Target Max Objects</source>
+        <target state="translated">Target Max Objects</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-details/pool-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="eaa8f4df53cf7fa78d078e20a701d10f3dccd77d" datatype="html">
+        <source>No applications added</source>
+        <target state="translated">No applications added</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="321c2a7640f11177ea49b0857b94c4b70830c0e6" datatype="html">
+        <source>Applications limit reached</source>
+        <target state="translated">Applications limit reached</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="519d27742b74fadc8336777452f78891e98aa1dc" datatype="html">
+        <source>A pool can only have up to four applications definitions.</source>
+        <target state="translated">A pool can only have up to four applications definitions.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b5bec3813f0d45daa7eb9471272969e1bc3e734e" datatype="html">
+        <source>Allowed characters '_a-zA-Z0-9'</source>
+        <target state="translated">Allowed characters '_a-zA-Z0-9'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="807472d29602a0085bce62e534bd66208982c2e2" datatype="html">
+        <source>Maximum length is 128 characters</source>
+        <target state="translated">Maximum length is 128 characters</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="37785748b9ac9ad1d3e4b111ac502c3284afe84b" datatype="html">
+        <source>Filter or add applications</source>
+        <target state="translated">Filter or add applications</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="38c7b8610ca87835e13eeee6a09ba1c414cd5cb9" datatype="html">
+        <source>Add application</source>
+        <target state="translated">Add application</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form-data.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="db8c42f077700d8a94619fad9f4c94b7361d5f1d" datatype="html">
+        <source>pool</source>
+        <target state="translated">pool</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="65bb2be83261bc4798853bbccdedc110c43feea7" datatype="html">
+        <source>erasure code profile</source>
+        <target state="translated">erasure code profile</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-form/pool-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="112d356ad6846959ca4aa5ec9a1f0d9d473b24ec" datatype="html">
+        <source>Replica Size</source>
+        <target state="translated">Replica Size</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ec50492db341fa752b023d8c924601286b6c9c0c" datatype="html">
+        <source>Last Change</source>
+        <target state="translated">Last Change</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="563a8c136a9d423bc7ae1269a404d6da5fd83dad" datatype="html">
+        <source>Erasure Coded Profile</source>
+        <target state="translated">Erasure Coded Profile</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0ad7f0662956cff61ac1208f92b1a0305b1b2e58" datatype="html">
+        <source>Crush Ruleset</source>
+        <target state="translated">Crush Ruleset</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f15bf7f588f09ca79795b17bc244e8d336f28171" datatype="html">
+        <source>Write bytes</source>
+        <target state="translated">Write bytes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="bcc365a084b6145b941b371bd4c2b6c3d2c79234" datatype="html">
+        <source>Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</source>
+        <target state="translated">Pool deletion is disabled by the mon_allow_pool_delete configuration setting.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/pool/pool-list/pool-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="44939fd05cedfd077db886528b755e77d5fa3885" datatype="html">
+        <source>bucket</source>
+        <target state="translated">bucket</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="364cc3f92837b6000e686aab6d03bd2ad8007b50" datatype="html">
+        <source>Updated Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</source>
+        <target state="translated">Updated Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2d7a43674f0bbc131c9e555ec16ac37fa0445d76" datatype="html">
+        <source>Created Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</source>
+        <target state="translated">Created Object Gateway bucket "<x id="INTERPOLATION" equiv-text="{{bid}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ec40d74ecfb1d6d60455af6805c9a714a3f5750a" datatype="html">
+        <source>buckets</source>
+        <target state="translated">buckets</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-bucket-list/rgw-bucket-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="764585d5595bac113582ee14a6fd07006770ceb1" datatype="html">
+        <source>capability</source>
+        <target state="translated">capability</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-capability-modal/rgw-user-capability-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0914cbe18bae204217e1851be6d2d24d86e74605" datatype="html">
+        <source>user</source>
+        <target state="translated">user</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d8c86dc5e48a63590d9c94e19f90b5f8325cbd49" datatype="html">
+        <source>subuser</source>
+        <target state="translated">subuser</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f45a3de8a8b40d161cc36a55d77548a27107ca04" datatype="html">
+        <source>S3 Key</source>
+        <target state="translated">S3 Key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-s3-key-modal/rgw-user-s3-key-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="854a763265e92f91ba3ccee1a0e8d823be584f7c" datatype="html">
+        <source>Updated Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</source>
+        <target state="translated">Updated Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="84ab3fd641e65e39cffee0ec722a059ed284229e" datatype="html">
+        <source>Created Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</source>
+        <target state="translated">Created Object Gateway user "<x id="INTERPOLATION" equiv-text="{{uid}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7c7f4be7b726e61c577e63842a58d9e435f7c597" datatype="html">
+        <source>users</source>
+        <target state="translated">users</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-list/rgw-user-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9f7760223efd77806f1bbaf963e6993bb4bc6a0a" datatype="html">
+        <source>Swift Key</source>
+        <target state="translated">Swift Key</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/ceph/rgw/rgw-user-swift-key-modal/rgw-user-swift-key-modal.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1481b8488e10dbc437accce89d2ae35a0106e8ba" datatype="html">
+        <source>Scope</source>
+        <target state="translated">Scope</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9b1d5e95f6bdcfb4b737413f5fa157e0dcb103d5" datatype="html">
+        <source>Read</source>
+        <target state="translated">Read</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-details/role-details.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="dc4fba275819619ee78e8eae14d357ea69ba7477" datatype="html">
+        <source>role</source>
+        <target state="translated">role</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fe6ee93173884201ec62d62ba173c3de85ae177e" datatype="html">
+        <source>Created role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</source>
+        <target state="translated">Created role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="41c032df0732f4318f8213fabd0719ac347d4b6c" datatype="html">
+        <source>Updated role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</source>
+        <target state="translated">Updated role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-form/role-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="50e22b5289f79f1417369403345c9fa9911a4557" datatype="html">
+        <source>System Role</source>
+        <target state="translated">System Role</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-list/role-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7f132668e2dbfcf616381d2daf59d1a6f2698102" datatype="html">
+        <source>Deleted role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</source>
+        <target state="translated">Deleted role '<x id="INTERPOLATION" equiv-text="{{role_name}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/role-list/role-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d2362a49d2434ce137bf19dab004251b7fd9c7b3" datatype="html">
+        <source>Created user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>
+        <target state="translated">Created user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9910122dfedd2eaa544a990f1430e5b82a76d99f" datatype="html">
+        <source>Update user</source>
+        <target state="translated">Update user</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
+        <source>Continue</source>
+        <target state="translated">Continue</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cf4bcf4ce3d551e6099ccdc3546ae418fe5f8038" datatype="html">
+        <source>You were automatically logged out because your roles have been changed.</source>
+        <target state="translated">You were automatically logged out because your roles have been changed.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0f6003fb0c1cc73b89d225801cc1b870945cd259" datatype="html">
+        <source>Updated user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>
+        <target state="translated">Updated user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-form/user-form.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fe516c6d820018fdc971113935e22ec1e852965f" datatype="html">
+        <source>Deleted user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>
+        <target state="translated">Deleted user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="01a7e11502ff80421ef3615e533ea14ef57e1d5c" datatype="html">
+        <source>Failed to delete user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</source>
+        <target state="translated">Failed to delete user "<x id="INTERPOLATION" equiv-text="{{username}}"/>"</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="63316a3861dbcb035147efc1b9fb6bc708242e94" datatype="html">
+        <source>You are currently logged in as "<x id="INTERPOLATION" equiv-text="{{username}}"/>".</source>
+        <target state="translated">You are currently logged in as "<x id="INTERPOLATION" equiv-text="{{username}}"/>".</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/core/auth/user-list/user-list.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1d7fbcc3d5efc946ffbcf86fed04c4e20dda20fb" datatype="html">
+        <source>Each object is split in data-chunks parts, each stored on a different OSD.</source>
+        <target state="translated">Each object is split in data-chunks parts, each stored on a different OSD.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b1f8ed4e216585f1f9134740002ef3c8501debd8" datatype="html">
+        <source>Compute coding chunks for each object and store them on different OSDs.
+      The number of coding chunks is also the number of OSDs that can be down without losing data.</source>
+        <target state="translated">Compute coding chunks for each object and store them on different OSDs.
+      The number of coding chunks is also the number of OSDs that can be down without losing data.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c437ee74a9a8e781e1380153f742a685e3b8cc5e" datatype="html">
+        <source>The jerasure plugin is the most generic and flexible plugin,
+          it is also the default for Ceph erasure coded pools.</source>
+        <target state="translated">The jerasure plugin is the most generic and flexible plugin,
+          it is also the default for Ceph erasure coded pools.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8c7e19322851402afa67e41f4f1d4e531caf1bf5" datatype="html">
+        <source>The more flexible technique is reed_sol_van : it is enough to set k
+          and m. The cauchy_good technique can be faster but you need to chose the packetsize
+          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents
+          in the sense that they can only be configured with m=2.</source>
+        <target state="translated">The more flexible technique is reed_sol_van : it is enough to set k
+          and m. The cauchy_good technique can be faster but you need to chose the packetsize
+          carefully. All of reed_sol_r6_op, liberation, blaum_roth, liber8tion are RAID6 equivalents
+          in the sense that they can only be configured with m=2.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b1b11f49281b4e79219b4eecfbcb033cb15bd880" datatype="html">
+        <source>The encoding will be done on packets of bytes size at a time.
+          Chosing the right packet size is difficult.
+          The jerasure documentation contains extensive information on this topic.</source>
+        <target state="translated">The encoding will be done on packets of bytes size at a time.
+          Chosing the right packet size is difficult.
+          The jerasure documentation contains extensive information on this topic.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d9cb3bc07a25b26fbea457e0a7b543340bc13c49" datatype="html">
+        <source>With the jerasure plugin, when an erasure coded object is stored on
+          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.
+          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading
+          from the eleven others to repair.
+
+          The lrc erasure code plugin creates local parity chunks to be able to recover using
+          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create
+          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be
+          recovered with only four OSDs instead of eleven.</source>
+        <target state="translated">With the jerasure plugin, when an erasure coded object is stored on
+          multiple OSDs, recovering from the loss of one OSD requires reading from all the others.
+          For instance if jerasure is configured with k=8 and m=4, losing one OSD requires reading
+          from the eleven others to repair.
+
+          The lrc erasure code plugin creates local parity chunks to be able to recover using
+          less OSDs. For instance if lrc is configured with k=8, m=4 and l=4, it will create
+          an additional parity chunk for every four OSDs. When a single OSD is lost, it can be
+          recovered with only four OSDs instead of eleven.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="813959d46e63a29bbd266b3af2ff9414c2ef553c" datatype="html">
+        <source>Group the coding and data chunks into sets of size locality. For instance,
+          for k=4 and m=2, when locality=3 two groups of three are created. Each set can
+          be recovered without reading chunks from another set.</source>
+        <target state="translated">Group the coding and data chunks into sets of size locality. For instance,
+          for k=4 and m=2, when locality=3 two groups of three are created. Each set can
+          be recovered without reading chunks from another set.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f0ff63d92e0a1b4d4b51e31b9133802d160a5f4c" datatype="html">
+        <source>The type of the crush bucket in which each set of chunks defined
+          by l will be stored. For instance, if it is set to rack, each group of l chunks will be
+          placed in a different rack. It is used to create a CRUSH rule step such as step choose
+          rack. If it is not set, no such grouping is done.</source>
+        <target state="translated">The type of the crush bucket in which each set of chunks defined
+          by l will be stored. For instance, if it is set to rack, each group of l chunks will be
+          placed in a different rack. It is used to create a CRUSH rule step such as step choose
+          rack. If it is not set, no such grouping is done.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3ece48df9d1e9a98f98bf3c5cc66e8b637020a4d" datatype="html">
+        <source>The isa plugin encapsulates the ISA library. It only runs on Intel processors.</source>
+        <target state="translated">The isa plugin encapsulates the ISA library. It only runs on Intel processors.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4472c9e31bfc7d96a83dc4afce0a6e885c99e839" datatype="html">
+        <source>The ISA plugin comes in two Reed Solomon forms.
+          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</source>
+        <target state="translated">The ISA plugin comes in two Reed Solomon forms.
+          If reed_sol_van is set, it is Vandermonde, if cauchy is set, it is Cauchy.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="fa385f5ecf63083ec848dca8dc5e52bdc72ac6f6" datatype="html">
+        <source>The shec plugin encapsulates the multiple SHEC library.
+          It allows ceph to recover data more efficiently than Reed Solomon codes.</source>
+        <target state="translated">The shec plugin encapsulates the multiple SHEC library.
+          It allows ceph to recover data more efficiently than Reed Solomon codes.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="687b3cd94b3475c24ff4481d64d4739f902a377c" datatype="html">
+        <source>The number of parity chunks each of which includes each data chunk in its
+          calculation range. The number is used as a durability estimator. For instance, if c=2,
+          2 OSDs can be down without losing data.</source>
+        <target state="translated">The number of parity chunks each of which includes each data chunk in its
+          calculation range. The number is used as a durability estimator. For instance, if c=2,
+          2 OSDs can be down without losing data.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f3c4af6df91bdaabdb715f8f0b61a24faf73a3bc" datatype="html">
+        <source>The name of the crush bucket used for the first step of the CRUSH rule.
+      For instance step take default.</source>
+        <target state="translated">The name of the crush bucket used for the first step of the CRUSH rule.
+      For instance step take default.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e1059955a5ce65cdabf0c0a8207377e1f9bae57e" datatype="html">
+        <source>Ensure that no two chunks are in a bucket with the same failure
+      domain. For instance, if the failure domain is host no two chunks will be stored on the same
+      host. It is used to create a CRUSH rule step such as step chooseleaf host.</source>
+        <target state="translated">Ensure that no two chunks are in a bucket with the same failure
+      domain. For instance, if the failure domain is host no two chunks will be stored on the same
+      host. It is used to create a CRUSH rule step such as step chooseleaf host.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ac392ac9c6da5fde6da80fc57b9c09402fb6e73d" datatype="html">
+        <source>Restrict placement to devices of a specific class
+      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</source>
+        <target state="translated">Restrict placement to devices of a specific class
+      (e.g., ssd or hdd), using the crush device class names in the CRUSH map.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="62bcb9ae5583a088649b1adf5787a86ca3334f89" datatype="html">
+        <source>Set the directory name from which the erasure code plugin is loaded.</source>
+        <target state="translated">Set the directory name from which the erasure code plugin is loaded.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/erasure-code-profile.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c8f10184a8433d132ede0a2c0c1aa96f291cacfa" datatype="html">
+        <source>Allows all operations</source>
+        <target state="translated">Allows all operations</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="82077ee97c11ee76efc3adf253b7b26654544317" datatype="html">
+        <source>Allows only operations that do not modify the server</source>
+        <target state="translated">Allows only operations that do not modify the server</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="22b5212ec10449dbf0a0af0ad34122eac51b5f2a" datatype="html">
+        <source>Does not allow read or write operations, but allows any other operation</source>
+        <target state="translated">Does not allow read or write operations, but allows any other operation</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9799d0f8c4b7727ae239fedfe3c0ce127feb7a50" datatype="html">
+        <source>Does not allow read, write, or any operation that modifies file        attributes or directory content</source>
+        <target state="translated">Does not allow read, write, or any operation that modifies file        attributes or directory content</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="aeddefe0af87025d8f00699aa94bed8216a99a58" datatype="html">
+        <source>Allows no access at all</source>
+        <target state="translated">Allows no access at all</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/nfs.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a436c6a4025a749198e93cac239de8deede72211" datatype="html">
+        <source>-- Select the priority --</source>
+        <target state="translated">-- Select the priority --</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9556266f0a2b1762a44b686f2bb21dbfefb01c12" datatype="html">
+        <source>Low</source>
+        <target state="translated">Low</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="72279141a67cc042d9864102b703216cc8a428a3" datatype="html">
+        <source>High</source>
+        <target state="translated">High</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/api/osd.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e6ca3c0efaf51e6d45a7f92f58bac37140c3fda4" datatype="html">
+        <source>Last 5 minutes</source>
+        <target state="translated">Last 5 minutes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b0ecb2bbc548cc9bd95050fd8f0c84586d083fe2" datatype="html">
+        <source>Last 15 minutes</source>
+        <target state="translated">Last 15 minutes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="857ae67deb51353120b203b0f2a06b0c48ef49fa" datatype="html">
+        <source>Last 30 minutes</source>
+        <target state="translated">Last 30 minutes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7b1738fad314e936dc14b94db8f43da736942308" datatype="html">
+        <source>Last 1 hour (Default)</source>
+        <target state="translated">Last 1 hour (Default)</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a428288224389726cef9d9bd8d1d7808cccd7ffd" datatype="html">
+        <source>Last 3 hours</source>
+        <target state="translated">Last 3 hours</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7cbabecc8d80cf183ac199cfaeb7619d56e5d43f" datatype="html">
+        <source>Last 6 hours</source>
+        <target state="translated">Last 6 hours</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1a389cdf64187d34cf99eec30a290e3fa7d4744f" datatype="html">
+        <source>Last 12 hours</source>
+        <target state="translated">Last 12 hours</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9e0ba5f591380a94d594a76288f0c41aa97eb9c2" datatype="html">
+        <source>Last 24 hours</source>
+        <target state="translated">Last 24 hours</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e430eda9c785cd43465b7cbb400ee914f1057247" datatype="html">
+        <source>Yesterday</source>
+        <target state="translated">Yesterday</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7fb1099e29660162f9154d5b2feee7743a423df6" datatype="html">
+        <source>Today</source>
+        <target state="translated">Today</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="33904058a97a64bd189bed84038b1ffe719769c7" datatype="html">
+        <source>Today so far</source>
+        <target state="translated">Today so far</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3b0b849be007510021d3d383df75bec95ef9c97b" datatype="html">
+        <source>Day before yesterday</source>
+        <target state="translated">Day before yesterday</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6b430c2c394c4d32ebd7d46c8c46ab60e1b29ccb" datatype="html">
+        <source>Last 2 days</source>
+        <target state="translated">Last 2 days</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d5e812a87a5d57a94200a2013027cab76a7c4863" datatype="html">
+        <source>This day last week</source>
+        <target state="translated">This day last week</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d00edc936eeab6b5577401f115ca86ca2c87dc9a" datatype="html">
+        <source>Previous week</source>
+        <target state="translated">Previous week</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b036e40577baa6b918b2267d319d4b3aeaa88a5a" datatype="html">
+        <source>This week</source>
+        <target state="translated">This week</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="99ad5a6096b3fcb3f021f3779bae710cdfeb8934" datatype="html">
+        <source>This week so far</source>
+        <target state="translated">This week so far</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="02e0243b60007368f87dc01e083f232dd025096d" datatype="html">
+        <source>Last 7 days</source>
+        <target state="translated">Last 7 days</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c3b08b07b5ab98e7cdcf18df39355690ab7d3884" datatype="html">
+        <source>Previous month</source>
+        <target state="translated">Previous month</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1b2562c6d5aa90644e7dc91feee82e2005fceb33" datatype="html">
+        <source>This month</source>
+        <target state="translated">This month</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="26b4b18c5917934abb169ba9aa490e57f7bf10b8" datatype="html">
+        <source>This month so far</source>
+        <target state="translated">This month so far</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7668986b9f753fcd72ad4a00b1a0c4861d1f7fb8" datatype="html">
+        <source>Last 30 days</source>
+        <target state="translated">Last 30 days</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ba1e822408d90c6fbd2989100fa648bfd5e8ee84" datatype="html">
+        <source>Last 90 days</source>
+        <target state="translated">Last 90 days</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c3df03f899a914c4181adcdc8a3f077424f7b6e8" datatype="html">
+        <source>Last 6 months</source>
+        <target state="translated">Last 6 months</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7f9a92757580c9f31c309c0a3812ea429274eadf" datatype="html">
+        <source>Last 1 year</source>
+        <target state="translated">Last 1 year</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5a9fede30ff65cb4b4426f6b1ed31afb67ecd7b0" datatype="html">
+        <source>Previous year</source>
+        <target state="translated">Previous year</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="65cefcc53d1f6445df7568e8a40c49165f1090ee" datatype="html">
+        <source>This year</source>
+        <target state="translated">This year</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1f68b766944dc3865bddab765fe952b0c1c43f92" datatype="html">
+        <source>This year so far</source>
+        <target state="translated">This year so far</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4d4b77e614f8043fdadef5d6d235655bb48eb311" datatype="html">
+        <source>Last 2 years</source>
+        <target state="translated">Last 2 years</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="138afa339ea6e75d25a474affe1edbcb90e00ec0" datatype="html">
+        <source>Last 5 years</source>
+        <target state="translated">Last 5 years</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/grafana/grafana.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c43dc1967a603fefb886149ac35863a06d5b4ce5" datatype="html">
+        <source>Information</source>
+        <target state="translated">Information</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/info-panel/info-panel.component.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="37391297bb077a6f84484930261b01a3ce38327b" datatype="html">
+        <source>No items selected.</source>
+        <target state="translated">No items selected.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2c1e52ee832661b4a0f570877d24661736b16af1" datatype="html">
+        <source>Deselect item to select again</source>
+        <target state="translated">Deselect item to select again</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c8c9c6e5918659336824bbdda3501c66eaa79a4c" datatype="html">
+        <source>Selection limit reached</source>
+        <target state="translated">Selection limit reached</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
+        <source>Filter tags</source>
+        <target state="translated">Filter tags</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="aa00748e49c269956837d6f3acdd8d218796a8d8" datatype="html">
+        <source>Add badge</source>
+        <target state="translated">Add badge</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4078a92d8121abdce7d8f346a88914923ec835fc" datatype="html">
+        <source>There are no items available.</source>
+        <target state="translated">There are no items available.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/components/select/select-messages.model.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="019d4bd6a5690f0cfa0ecf346a4e6bf7f0d8debb" datatype="html">
+        <source>Remove</source>
+        <target state="translated">Remove</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="011f3e2bfc1fd8407eb5f599352665bfeb145664" datatype="html">
+        <source>Recreate</source>
+        <target state="translated">Recreate</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6df2dfa48bef5510c82fb43f4e71a7f9557f3d71" datatype="html">
+        <source>Expire</source>
+        <target state="translated">Expire</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="28df1b02fd88d2deb0212bc5d7ff34cf9492fa54" datatype="html">
+        <source>Deleted</source>
+        <target state="translated">Deleted</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">
+        <source>Added</source>
+        <target state="translated">Added</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1aa4883bc4f1352f7a0bdd94810a9bf6dc22bd02" datatype="html">
+        <source>Removed</source>
+        <target state="translated">Removed</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="402f3ee47f98fbbc68530239b1ddcbb9e96a460c" datatype="html">
+        <source>Edited</source>
+        <target state="translated">Edited</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="96d56ec71c6e78cb4d6204c4a9359a3d38fcdb59" datatype="html">
+        <source>Canceled</source>
+        <target state="translated">Canceled</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a3318a2ee2bd0064b6b9ff72a4018b679ec63125" datatype="html">
+        <source>Cloned</source>
+        <target state="translated">Cloned</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ef90545bc832876c0d7f9a10363c75137472bbb5" datatype="html">
+        <source>Copied</source>
+        <target state="translated">Copied</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8dc560ded67482f109a98e0638851ad1d37188b3" datatype="html">
+        <source>Showed</source>
+        <target state="translated">Showed</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="197259b7ea76f15c6d0a64b075a673fd4112ada7" datatype="html">
+        <source>Moved to Trash</source>
+        <target state="translated">Moved to Trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8fb15cb102cd75b562680290b7e04c44d80018f2" datatype="html">
+        <source>Unprotected</source>
+        <target state="translated">Unprotected</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8588eafa498262a1cbb5043ad68cf0ff669c4f10" datatype="html">
+        <source>Recreated</source>
+        <target state="translated">Recreated</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="ffde7468d7b5cad6990095ed68ddee3d67cd02f8" datatype="html">
+        <source>Expired</source>
+        <target state="translated">Expired</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/constants/app.constants.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">
+        <source>Yes</source>
+        <target state="translated">Yes</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/pipes/boolean-text.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">
+        <source>No</source>
+        <target state="translated">No</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/pipes/boolean-text.pipe.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="99fa0b67376d40142bd4d3ace3344abf4f98b6a5" datatype="html">
+        <source>Your matcher seems to match no currently defined rule or active alert.</source>
+        <target state="translated">Your matcher seems to match no currently defined rule or active alert.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7e284852732c303eb1f47de9aca2569e41aeffed" datatype="html">
+        <source>no active alerts</source>
+        <target state="translated">no active alerts</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b8042829e4fbe7b09fd9bac9fa0ecf5cc1802fee" datatype="html">
+        <source>1 active alert</source>
+        <target state="translated">1 active alert</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e24adce97669cb0fc74cc13fdc14179b6f78ea5e" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts</source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{n}}"/> active alerts</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d8fb058ff5883731d38a132da4ca45cfe8d719a3" datatype="html">
+        <source>Matches 1 rule</source>
+        <target state="translated">Matches 1 rule</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="90aaef24d192e67c3fbc2ec6f8bfaff211cea128" datatype="html">
+        <source>Matches <x id="INTERPOLATION" equiv-text="{{n}}"/> rules</source>
+        <target state="translated">Matches <x id="INTERPOLATION" equiv-text="{{n}}"/> rules</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f4685dc581e18244cd410f1057a8c56a9dbfe8df" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{rules}}"/> with <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.</source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{rules}}"/> with <x id="INTERPOLATION_1" equiv-text="{{alerts}}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/prometheus-silence-matcher.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8fd98fb2a0f24ba72cde0787dd3f02cfc17de469" datatype="html">
+        <source>Quality of Service</source>
+        <target state="translated">Quality of Service</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2c53f3ce2c6fff9025a7b41cc334521725da6e7b" datatype="html">
+        <source>BPS Limit</source>
+        <target state="translated">BPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e897624a392419386b035bcd8529337e262fc41d" datatype="html">
+        <source>The desired limit of IO bytes per second.</source>
+        <target state="translated">The desired limit of IO bytes per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="dc56f77e4507da7e86a3accd0a2a7099a838d539" datatype="html">
+        <source>IOPS Limit</source>
+        <target state="translated">IOPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="141c3f6eadbb35b0e17b2f847e4cac23240a6ea9" datatype="html">
+        <source>The desired limit of IO operations per second.</source>
+        <target state="translated">The desired limit of IO operations per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3b3b101f16c38806e984b157e0cf22cd21451122" datatype="html">
+        <source>Read BPS Limit</source>
+        <target state="translated">Read BPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="87835fabb6a645873f3829a450ca1d58f97754f2" datatype="html">
+        <source>The desired limit of read bytes per second.</source>
+        <target state="translated">The desired limit of read bytes per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="28b485e700df46d70b96666099f714e3ae9e5c2e" datatype="html">
+        <source>Read IOPS Limit</source>
+        <target state="translated">Read IOPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5907bd1a5cf3e20e740bca676cb1538372e1f9ff" datatype="html">
+        <source>The desired limit of read operations per second.</source>
+        <target state="translated">The desired limit of read operations per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="07317121f0b194987d4dee8b322f521ac17bf124" datatype="html">
+        <source>Write BPS Limit</source>
+        <target state="translated">Write BPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4022c78bd9132ca2ec67927f8484c437d1d9b6fd" datatype="html">
+        <source>The desired limit of write bytes per second.</source>
+        <target state="translated">The desired limit of write bytes per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="52c22c19f98ff3a09bd811292954a889b93d28b7" datatype="html">
+        <source>Write IOPS Limit</source>
+        <target state="translated">Write IOPS Limit</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="0ed62e3fd8654b3191fc7fa959ad3f10f1ea773a" datatype="html">
+        <source>The desired limit of write operations per second.</source>
+        <target state="translated">The desired limit of write operations per second.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d90c99d77864f21f932ee1369019f400c4ad0e2d" datatype="html">
+        <source>BPS Burst</source>
+        <target state="translated">BPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="29c32192f4d185139aaaf6d3a766a3411dfeabbe" datatype="html">
+        <source>The desired burst limit of IO bytes.</source>
+        <target state="translated">The desired burst limit of IO bytes.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b988b90489e899941e196c3dd0ecc22e37540224" datatype="html">
+        <source>IOPS Burst</source>
+        <target state="translated">IOPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="02c5de8ff11870f1b3896f2b45637ce0dba1ed4b" datatype="html">
+        <source>The desired burst limit of IO operations.</source>
+        <target state="translated">The desired burst limit of IO operations.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="7a160538129b37cf595f1651f28b5fac62fbc0f8" datatype="html">
+        <source>Read BPS Burst</source>
+        <target state="translated">Read BPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b573a5df16a53b9947288461bc24e6a0eb4341d6" datatype="html">
+        <source>The desired burst limit of read bytes.</source>
+        <target state="translated">The desired burst limit of read bytes.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1d5b8c2a0c653651cc4ca4b8fed9456f449220d1" datatype="html">
+        <source>Read IOPS Burst</source>
+        <target state="translated">Read IOPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="20b199f9d4a8d08ffefec66040e27639ec221512" datatype="html">
+        <source>The desired burst limit of read operations.</source>
+        <target state="translated">The desired burst limit of read operations.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="824525ae57992aee629ddffcd500a8b77087ddec" datatype="html">
+        <source>Write BPS Burst</source>
+        <target state="translated">Write BPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a90aac4050a5d79765da5e1186909f6d4d7f981d" datatype="html">
+        <source>The desired burst limit of write bytes.</source>
+        <target state="translated">The desired burst limit of write bytes.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="35a8c6e6c249c7d16e26aa7c4ef97c06db405070" datatype="html">
+        <source>Write IOPS Burst</source>
+        <target state="translated">Write IOPS Burst</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b356abd41d7e9eea4d20c03d2e6892b6d435ecbd" datatype="html">
+        <source>The desired burst limit of write operations.</source>
+        <target state="translated">The desired burst limit of write operations.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/rbd-configuration.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="24c4d50fe8567de381a20a1745f1b6d37eacaa90" datatype="html">
+        <source>Failed to <x id="INTERPOLATION" equiv-text="{{failure}}"/> <x id="INTERPOLATION_1" equiv-text="{{metadata}}"/></source>
+        <target state="translated">Failed to <x id="INTERPOLATION" equiv-text="{{failure}}"/><x id="INTERPOLATION_1" equiv-text="{{metadata}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f54b6f09b390d5ade0e354f6c7d4743c10a315cc" datatype="html">
+        <source>Executing</source>
+        <target state="translated">Executing</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="5cdfe3e3330ea42bfd29c540dbd268bee97d364d" datatype="html">
+        <source>execute</source>
+        <target state="translated">execute</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6e98e243518daa88be30330fcdbd2d10f8eae4d7" datatype="html">
+        <source>Executed</source>
+        <target state="translated">Executed</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="24b09aa5bd909273a023d2d788a2673325c77e31" datatype="html">
+        <source>unknown task</source>
+        <target state="translated">unknown task</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="114b5f92b9192b229ffc9a450319a97ccca2aa5c" datatype="html">
+        <source>Creating</source>
+        <target state="translated">Creating</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="56695b69d27437ada580a187958407e7c856d46e" datatype="html">
+        <source>create</source>
+        <target state="translated">create</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="9db60170ef3b3b41a863e7d5ee7cec10919b9141" datatype="html">
+        <source>Updating</source>
+        <target state="translated">Updating</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="64412640835b7d25247cb254d4f911366c0e6862" datatype="html">
+        <source>update</source>
+        <target state="translated">update</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="416193bb373d59477458b00e5922d755e2e2cacd" datatype="html">
+        <source>Deleting</source>
+        <target state="translated">Deleting</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="70ef158c584bafe788e319a0bffa11b02ee9abf1" datatype="html">
+        <source>delete</source>
+        <target state="translated">delete</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="3f757cfc3749ebb5d4462017cb60138ca082f15f" datatype="html">
+        <source>RBD '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</source>
+        <target state="translated">RBD '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a6c681e6130fe440ae40de99a405fcf5c7eefee1" datatype="html">
+        <source>RBD snapshot '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</source>
+        <target state="translated">RBD snapshot '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="4fb54a0291f49583c317d4a3690239141b5a8f68" datatype="html">
+        <source>mirror mode for pool '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</source>
+        <target state="translated">mirror mode for pool '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6621ab6e122a149326a1e48e9051a41e7f203cf6" datatype="html">
+        <source>mirror peer for pool '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</source>
+        <target state="translated">mirror peer for pool '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="db15adc778317d551232fe712eb03a2c1eac4a43" datatype="html">
+        <source>all dashboards</source>
+        <target state="translated">all dashboards</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1b559dbd9cc9664fd788c2da9a10d3abafe066cb" datatype="html">
+        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.</source>
+        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{pool_name}}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="8fc28e1103d9f2ef47b9fff9a4f74e8365c7cf19" datatype="html">
+        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{name}}"/>.</source>
+        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{name}}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1cdc7ea44fcb85d0cfcf6e7379d625d8674a8fbe" datatype="html">
+        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.</source>
+        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1ff7676ad1e991102224540a32dd44ad1ab88aa8" datatype="html">
+        <source><x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.</source>
+        <target state="translated"><x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> contains snapshots.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c3a1dcca2b2ba20fbe39e2441e7bb1cf9c20cdf3" datatype="html">
+        <source>Cloning</source>
+        <target state="translated">Cloning</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b5fa4e0a3a279dee5b6bf7b823e54387f7c79994" datatype="html">
+        <source>clone</source>
+        <target state="translated">clone</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="29b7452e8367af9aa8fa828f16ff94c3530e7a1a" datatype="html">
+        <source>Snapshot of <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.</source>
+        <target state="translated">Snapshot of <x id="INTERPOLATION" equiv-text="{{rbd_name}}"/> must be protected.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="369f93b9a07a9465f7a261e9f0021b6cfa7180c5" datatype="html">
+        <source>Copying</source>
+        <target state="translated">Copying</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="37584f889855d153a106f5dffe23d21f9453c8ff" datatype="html">
+        <source>copy</source>
+        <target state="translated">copy</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="6ea9e313a04ef59222feaadfe84e97b4c69d7e9e" datatype="html">
+        <source>Flattening</source>
+        <target state="translated">Flattening</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1f57593581b64d2d4c70eab1736bd9bccc66a7dc" datatype="html">
+        <source>flatten</source>
+        <target state="translated">flatten</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="647059bf3ea098fffedf92ddfad792bb3daa3c95" datatype="html">
+        <source>Flattened</source>
+        <target state="translated">Flattened</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d990ef9680cd23bbe652c37eb46bf038cfee80ad" datatype="html">
+        <source>Name is already used by <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.</source>
+        <target state="translated">Name is already used by <x id="INTERPOLATION" equiv-text="{{snap_name}}"/>.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a101745d080ef65c09bd5fafc796f94ddb9f9d60" datatype="html">
+        <source>Cannot unprotect <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.</source>
+        <target state="translated">Cannot unprotect <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it contains child images.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="647968f4cde7786cd53ec8e6aa9802ac6824a262" datatype="html">
+        <source>Cannot delete <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it's protected.</source>
+        <target state="translated">Cannot delete <x id="INTERPOLATION" equiv-text="{{snap_name}}"/> because it's protected.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="57ddd3e15cf0ce974356b757451f50116a27272b" datatype="html">
+        <source>Rolling back</source>
+        <target state="translated">Rolling back</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="a8913a3a5ee61f2598b5f0432cb9b20cdd60548e" datatype="html">
+        <source>rollback</source>
+        <target state="translated">rollback</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="dc21fd6547f2325c67f6deff925f29eb07a2db3e" datatype="html">
+        <source>Rolled back</source>
+        <target state="translated">Rolled back</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="de8676f0017c9db6c49388cd7d63cd0a83a0c1dc" datatype="html">
+        <source>Moving</source>
+        <target state="translated">Moving</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="2d810712308ae63cb795d809687a3254ef7a2f05" datatype="html">
+        <source>move</source>
+        <target state="translated">move</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="f3ba995236e5c1cc77686108980c099a90aec754" datatype="html">
+        <source>Moved</source>
+        <target state="translated">Moved</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="d0422169252d132624a20f267b5c29f28cb53ebe" datatype="html">
+        <source>image '<x id="INTERPOLATION" equiv-text="{{id}}"/>' to trash</source>
+        <target state="translated">image '<x id="INTERPOLATION" equiv-text="{{id}}"/>' to trash</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="b603e2dfed9808222fbcb5a7c5f4da2cc6ae2aae" datatype="html">
+        <source>Could not find image.</source>
+        <target state="translated">Could not find image.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="398debe73006b1fe5177ed81d2e7b0cc852f61ec" datatype="html">
+        <source>Restoring</source>
+        <target state="translated">Restoring</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="c252806fb400e79bac194696632c9362742b1538" datatype="html">
+        <source>restore</source>
+        <target state="translated">restore</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="86fc6cae82c095f14105eb8a61d7b3fa948304b7" datatype="html">
+        <source>Restored</source>
+        <target state="translated">Restored</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="30b8bcf69b3f1754b7abba173fd806cfcea4cb04" datatype="html">
+        <source>image '<x id="INTERPOLATION" equiv-text="{{id}}"/>' into '<x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>'</source>
+        <target state="translated">image '<x id="INTERPOLATION" equiv-text="{{id}}"/>' into '<x id="INTERPOLATION_1" equiv-text="{{new_id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="13b7b241cef989fe0932ddd180e757658e1817e7" datatype="html">
+        <source>Image name '<x id="INTERPOLATION" equiv-text="{{id}}"/>' is already in use.</source>
+        <target state="translated">Image name '<x id="INTERPOLATION" equiv-text="{{id}}"/>' is already in use.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cc1cee12c833e8fbbef28a2a7c449dc530da912d" datatype="html">
+        <source>image '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</source>
+        <target state="translated">image '<x id="INTERPOLATION" equiv-text="{{id}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="38e5f47f8bef505652f3e87f46efb00ead1350a3" datatype="html">
+        <source>Purging</source>
+        <target state="translated">Purging</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="e4e57747f123f0fe6fe3a0ecf608f8bc287dec0c" datatype="html">
+        <source>purge</source>
+        <target state="translated">purge</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="69b0446c6c2411c4fe01e411b8ceec72d4044fb4" datatype="html">
+        <source>Purged</source>
+        <target state="translated">Purged</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1560d58fdf39663929653250d45f5b1dfe078fea" datatype="html">
+        <source>all pools</source>
+        <target state="translated">all pools</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="1ac3dc50c2c3d86e98bc0967ee1e696810a2d3aa" datatype="html">
+        <source>images from <x id="INTERPOLATION" equiv-text="{{message}}"/></source>
+        <target state="translated">images from <x id="INTERPOLATION" equiv-text="{{message}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="02278abbb044ece04ab6bd80bd2060198d31d83b" datatype="html">
+        <source>Cannot disable mirroring because it contains a peer.</source>
+        <target state="translated">Cannot disable mirroring because it contains a peer.</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="dfe70001dc590a9e12512cbb206aa29fb36fd00b" datatype="html">
+        <source>pool '<x id="INTERPOLATION" equiv-text="{{pool_name}}"/>'</source>
+        <target state="translated">pool '<x id="INTERPOLATION" equiv-text="{{pool_name}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="59630daf2f4786690fae0cdad55da8887236eabe" datatype="html">
+        <source>erasure code profile '<x id="INTERPOLATION" equiv-text="{{name}}"/>'</source>
+        <target state="translated">erasure code profile '<x id="INTERPOLATION" equiv-text="{{name}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="369462e5e018360e0600bb570866201ad5c3c8a8" datatype="html">
+        <source>target '<x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>'</source>
+        <target state="translated">target '<x id="INTERPOLATION" equiv-text="{{target_iqn}}"/>'</target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+      <trans-unit id="cf41310917cb19b335e5a950972bbff2346f7a47" datatype="html">
+        <source>NFS <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/></source>
+        <target state="translated">NFS <x id="INTERPOLATION" equiv-text="{{nfs_id}}"/></target>
+        <context-group purpose="location">
+          <context context-type="sourcefile">src/app/shared/services/task-message.service.ts</context>
+          <context context-type="linenumber">1</context>
+        </context-group>
+      </trans-unit>
+    </body>
+  </file>
+</xliff>
index 58d59427369690eaa9aa99b06194a62b85e884bd..741c9eb862fed45d5440272daae7a40101bfe50f 100644 (file)
@@ -2,7 +2,6 @@ import { enableProdMode } from '@angular/core';
 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
 
 import { AppModule } from './app/app.module';
-import { i18nProviders } from './app/locale.helper';
 import { environment } from './environments/environment';
 
 if (environment.production) {
@@ -10,7 +9,5 @@ if (environment.production) {
 }
 
 platformBrowserDynamic()
-  .bootstrapModule(AppModule, {
-    providers: i18nProviders
-  })
+  .bootstrapModule(AppModule)
   .catch((err) => console.log(err));
index 2e14f32978453ba526a0bc03b04810c06748f9a9..ad06737c98c14c3bd7bed5b08eae7cb532b4579f 100644 (file)
@@ -309,7 +309,8 @@ uib-accordion .panel-title,
   color: $color-required-text;
 }
 /* Forms */
-.form-group > .control-label > span.required {
+.form-group > .control-label > span.required,
+.form-group > .col-sm-12 > .control-label > span.required {
   @extend .fa;
   @extend .fa-asterisk;
   @extend .required;
index 6f625003380f59d5317e5ccf1cba1df1e5756a23..eba591c56e6b8a0c374b658f2fb09a96d939489d 100644 (file)
@@ -312,3 +312,13 @@ const i18nProviders = [
 ];
 
 export { i18nProviders };
+
+export function expectItemTasks(item: any, executing: string, percentage?: number) {
+  if (executing) {
+    executing = executing + '...';
+    if (percentage) {
+      executing = `${executing} ${percentage}%`;
+    }
+  }
+  expect(item.cdExecuting).toBe(executing);
+}
index 868ccdb557ec331f739abd6114d7a930604d6663..d38022beae328ba87572fb45ea6f0c8c8500ab76 100644 (file)
@@ -13,9 +13,9 @@ import tempfile
 import threading
 import time
 from uuid import uuid4
-from OpenSSL import crypto, SSL
+from OpenSSL import crypto
 from mgr_module import MgrModule, MgrStandbyModule, Option, CLIWriteCommand
-from mgr_util import get_default_addr
+from mgr_util import get_default_addr, ServerConfigException, verify_tls_files
 
 try:
     import cherrypy
@@ -96,10 +96,6 @@ def os_exit_noop(*args):
 os._exit = os_exit_noop
 
 
-class ServerConfigException(Exception):
-    pass
-
-
 class CherryPyConfig(object):
     """
     Class for common server configuration done by both active and
@@ -193,43 +189,7 @@ class CherryPyConfig(object):
             else:
                 pkey_fname = self.get_localized_module_option('key_file')
 
-            if not cert_fname or not pkey_fname:
-                raise ServerConfigException('no certificate configured')
-            if not os.path.isfile(cert_fname):
-                raise ServerConfigException('certificate %s does not exist' % cert_fname)
-            if not os.path.isfile(pkey_fname):
-                raise ServerConfigException('private key %s does not exist' % pkey_fname)
-
-            # Do some validations to the private key and certificate:
-            # - Check the type and format
-            # - Check the certificate expiration date
-            # - Check the consistency of the private key
-            # - Check that the private key and certificate match up
-            try:
-                with open(cert_fname) as f:
-                    x509 = crypto.load_certificate(crypto.FILETYPE_PEM, f.read())
-                    if x509.has_expired():
-                        self.log.warning(
-                            'Certificate {} has been expired'.format(cert_fname))
-            except (ValueError, crypto.Error) as e:
-                raise ServerConfigException(
-                    'Invalid certificate {}: {}'.format(cert_fname, str(e)))
-            try:
-                with open(pkey_fname) as f:
-                    pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read())
-                    pkey.check()
-            except (ValueError, crypto.Error) as e:
-                raise ServerConfigException(
-                    'Invalid private key {}: {}'.format(pkey_fname, str(e)))
-            try:
-                context = SSL.Context(SSL.TLSv1_METHOD)
-                context.use_certificate_file(cert_fname, crypto.FILETYPE_PEM)
-                context.use_privatekey_file(pkey_fname, crypto.FILETYPE_PEM)
-                context.check_privatekey()
-            except crypto.Error as e:
-                self.log.warning(
-                    'Private key {} and certificate {} do not match up: {}'.format(
-                        pkey_fname, cert_fname, str(e)))
+            verify_tls_files(cert_fname, pkey_fname)
 
             config['server.ssl_module'] = 'builtin'
             config['server.ssl_certificate'] = cert_fname
@@ -242,7 +202,7 @@ class CherryPyConfig(object):
 
         uri = "{0}://{1}:{2}{3}/".format(
             'https' if ssl else 'http',
-            socket.getfqdn() if server_addr == "::" else server_addr,
+            socket.getfqdn() if server_addr in ['::', '0.0.0.0'] else server_addr,
             server_port,
             self.url_prefix
         )
@@ -312,7 +272,11 @@ class Module(MgrModule, CherryPyConfig):
         Option(name='username', type='str', default=''),
         Option(name='key_file', type='str', default=''),
         Option(name='crt_file', type='str', default=''),
-        Option(name='ssl', type='bool', default=True)
+        Option(name='ssl', type='bool', default=True),
+        Option(name='standby_behaviour', type='str', default='redirect',
+               enum_allowed=['redirect', 'error']),
+        Option(name='standby_error_status_code', type='int', default=500,
+               min=400, max=599)
     ]
     MODULE_OPTIONS.extend(options_schema_list())
     for options in PLUGIN_MANAGER.hook.get_options() or []:
@@ -363,13 +327,7 @@ class Module(MgrModule, CherryPyConfig):
 
         mapper, parent_urls = generate_routes(self.url_prefix)
 
-        config = {
-            self.url_prefix or '/': {
-                'tools.staticdir.on': True,
-                'tools.staticdir.dir': self.get_frontend_path(),
-                'tools.staticdir.index': 'index.html'
-            }
-        }
+        config = {}
         for purl in parent_urls:
             config[purl] = {
                 'request.dispatch': mapper
@@ -510,28 +468,32 @@ class StandbyModule(MgrStandbyModule, CherryPyConfig):
         class Root(object):
             @cherrypy.expose
             def index(self):
-                active_uri = module.get_active_uri()
-                if active_uri:
-                    module.log.info("Redirecting to active '%s'", active_uri)
-                    raise cherrypy.HTTPRedirect(active_uri)
+                if module.get_module_option('standby_behaviour', 'redirect') == 'redirect':
+                    active_uri = module.get_active_uri()
+                    if active_uri:
+                        module.log.info("Redirecting to active '%s'", active_uri)
+                        raise cherrypy.HTTPRedirect(active_uri)
+                    else:
+                        template = """
+                    <html>
+                        <!-- Note: this is only displayed when the standby
+                             does not know an active URI to redirect to, otherwise
+                             a simple redirect is returned instead -->
+                        <head>
+                            <title>Ceph</title>
+                            <meta http-equiv="refresh" content="{delay}">
+                        </head>
+                        <body>
+                            No active ceph-mgr instance is currently running
+                            the dashboard. A failover may be in progress.
+                            Retrying in {delay} seconds...
+                        </body>
+                    </html>
+                        """
+                        return template.format(delay=5)
                 else:
-                    template = """
-                <html>
-                    <!-- Note: this is only displayed when the standby
-                         does not know an active URI to redirect to, otherwise
-                         a simple redirect is returned instead -->
-                    <head>
-                        <title>Ceph</title>
-                        <meta http-equiv="refresh" content="{delay}">
-                    </head>
-                    <body>
-                        No active ceph-mgr instance is currently running
-                        the dashboard. A failover may be in progress.
-                        Retrying in {delay} seconds...
-                    </body>
-                </html>
-                    """
-                    return template.format(delay=5)
+                    status = module.get_module_option('standby_error_status_code', 500)
+                    raise cherrypy.HTTPError(status, message="Keep on looking")
 
         cherrypy.tree.mount(Root(), "{}/".format(self.url_prefix), {})
         self.log.info("Starting engine...")
index 1cba1de980d796474f11d673c62cbe05080cad9c..1e11b612e5c4ad225f372c556bb14fcd6343b75b 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/env bash
 
+set -eo pipefail
+
 if [[ "$1" = "-h" || "$1" = "--help" ]]; then
        echo "Usage (run from ./):"
        echo -e "\t./run-backend-api-tests.sh"
@@ -17,66 +19,14 @@ if [[ "$1" = "-h" || "$1" = "--help" ]]; then
        exit 0
 fi
 
-# creating temp directory to store virtualenv and teuthology
-
 get_cmake_variable() {
     local variable=$1
     grep "$variable" CMakeCache.txt | cut -d "=" -f 2
 }
 
-setup_teuthology() {
-    TEMP_DIR=`mktemp -d`
-
+get_build_py_version() {
     CURR_DIR=`pwd`
     BUILD_DIR="$CURR_DIR/../../../../build"
-
-    read -r -d '' TEUTHOLOGY_PY_REQS <<EOF
-apache-libcloud==2.2.1 \
-asn1crypto==0.22.0 \
-backports.ssl-match-hostname==3.5.0.1 \
-bcrypt==3.1.4 \
-certifi==2018.1.18 \
-cffi==1.10.0 \
-chardet==3.0.4 \
-configobj==5.0.6 \
-cryptography==2.1.4 \
-enum34==1.1.6 \
-gevent==1.2.2 \
-greenlet==0.4.13 \
-idna==2.5 \
-ipaddress==1.0.18 \
-Jinja2==2.9.6 \
-manhole==1.5.0 \
-MarkupSafe==1.0 \
-netaddr==0.7.19 \
-packaging==16.8 \
-paramiko==2.4.0 \
-pexpect==4.4.0 \
-psutil==5.4.3 \
-ptyprocess==0.5.2 \
-pyasn1==0.2.3 \
-pycparser==2.17 \
-PyNaCl==1.2.1 \
-pyparsing==2.2.0 \
-python-dateutil==2.6.1 \
-PyYAML==3.12 \
-requests==2.18.4 \
-six==1.10.0 \
-urllib3==1.22
-EOF
-
-
-
-    cd $TEMP_DIR
-
-    virtualenv --python=/usr/bin/python venv
-    source venv/bin/activate
-    eval pip install $TEUTHOLOGY_PY_REQS
-    pip install -r $CURR_DIR/requirements.txt
-    deactivate
-
-    git clone --depth 1 https://github.com/ceph/teuthology.git
-
     cd $BUILD_DIR
 
     CEPH_MGR_PY_VERSION_MAJOR=$(get_cmake_variable MGR_PYTHON_VERSION | cut -d '.' -f1)
@@ -89,27 +39,95 @@ EOF
             CEPH_PY_VERSION_MAJOR=3
         fi
     fi
+}
 
+setup_teuthology() {
+    TEMP_DIR=`mktemp -d`
+    TEUTHOLOGY_PY_REQS="
+apache-libcloud==2.2.1
+asn1crypto==0.22.0
+backports.ssl-match-hostname==3.5.0.1
+bcrypt==3.1.4
+certifi==2018.1.18
+cffi==1.10.0
+chardet==3.0.4
+configobj==5.0.6
+cryptography==2.1.4
+enum34==1.1.6
+gevent==1.2.2
+greenlet==0.4.13
+idna==2.5
+ipaddress==1.0.18
+Jinja2==2.9.6
+manhole==1.5.0
+MarkupSafe==1.0
+netaddr==0.7.19
+packaging==16.8
+paramiko==2.4.0
+pexpect==4.4.0
+psutil==5.4.3
+ptyprocess==0.5.2
+pyasn1==0.2.3
+pycparser==2.17
+PyNaCl==1.2.1
+pyparsing==2.2.0
+python-dateutil==2.6.1
+PyYAML==3.12
+requests==2.18.4
+six==1.10.0
+urllib3==1.22
+"
+
+    cd $TEMP_DIR
+    virtualenv --python=${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python} venv
+    source venv/bin/activate
+    pip install 'setuptools >= 12'
+    eval pip install $TEUTHOLOGY_PY_REQS
+    pip install -r $CURR_DIR/requirements.txt
+
+    git clone --depth 1 https://github.com/ceph/teuthology.git
+
+    deactivate
+}
+
+setup_coverage() {
+    # In CI environment we cannot install coverage in system, so we install it in a dedicated venv
+    # so only coverage is available when adding this path.
+    cd $TEMP_DIR
+    virtualenv --python=${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python} coverage-venv
+    source coverage-venv/bin/activate
     cd $CURR_DIR
+    pip install coverage==4.5.2
+    COVERAGE_PATH=$(python -c "import sysconfig; print(sysconfig.get_paths()['purelib'])")
+    deactivate
+}
 
-    COVERAGE_VERSION=$(cat requirements.txt | grep coverage)
-    if [[ "$CEPH_MGR_PY_VERSION_MAJOR" == '3' ]]; then
-        pip3 install "$COVERAGE_VERSION"
-    else
-        pip install "$COVERAGE_VERSION"
+on_tests_error() {
+    if [[ -n "$JENKINS_HOME" ]]; then
+        CEPH_OUT_DIR=${CEPH_OUT_DIR:-"$BUILD_DIR"/out}
+        MGR_LOG_FILES=$(find "$CEPH_OUT_DIR" -iname "mgr.*.log" | tr '\n' ' ')
+        MGR_LOG_FILE_LAST_LINES=60000
+        for mgr_log_file in ${MGR_LOG_FILES[@]}; do
+            printf "\n\nDisplaying last ${MGR_LOG_FILE_LAST_LINES} lines of: $mgr_log_file\n\n"
+            tail -n ${MGR_LOG_FILE_LAST_LINES} $mgr_log_file
+            printf "\n\nEnd of: $mgr_log_file\n\n"
+        done
+        printf "\n\nTEST FAILED.\n\n"
     fi
 }
 
 run_teuthology_tests() {
+    trap on_tests_error ERR
+
     cd "$BUILD_DIR"
     find ../src/pybind/mgr/dashboard/ -name '*.pyc' -exec rm -f {} \;
-    source $TEMP_DIR/venv/bin/activate
 
     OPTIONS=''
     TEST_CASES=''
     if [[ "$@" == '' || "$@" == '--create-cluster-only' ]]; then
       TEST_CASES=`for i in \`ls $BUILD_DIR/../qa/tasks/mgr/dashboard/test_*\`; do F=$(basename $i); M="${F%.*}"; echo -n " tasks.mgr.dashboard.$M"; done`
-      TEST_CASES="tasks.mgr.test_module_selftest tasks.mgr.test_dashboard $TEST_CASES"
+      # Mgr selftest module tests have to be run at the end as they stress the mgr daemon.
+      TEST_CASES="tasks.mgr.test_dashboard $TEST_CASES tasks.mgr.test_module_selftest"
       if [[ "$@" == '--create-cluster-only' ]]; then
         OPTIONS="$@"
       fi
@@ -120,17 +138,24 @@ run_teuthology_tests() {
     fi
 
     export PATH=$BUILD_DIR/bin:$PATH
+    source $TEMP_DIR/venv/bin/activate # Run after setting PATH as it does the last PATH export.
     export LD_LIBRARY_PATH=$BUILD_DIR/lib/cython_modules/lib.${CEPH_PY_VERSION_MAJOR}/:$BUILD_DIR/lib
-    export PYTHONPATH=$TEMP_DIR/teuthology:$BUILD_DIR/../qa:$BUILD_DIR/lib/cython_modules/lib.${CEPH_PY_VERSION_MAJOR}/:$BUILD_DIR/../src/pybind
-    if [[ -z "$RGW" ]]; then
-        export RGW=1
+    local source_dir=$(dirname "$BUILD_DIR")
+    local pybind_dir=$source_dir/src/pybind
+    local python_common_dir=$source_dir/src/python-common
+    # In CI environment we set python paths inside build (where you find the required frontend build: "dist" dir).
+    if [[ -n "$JENKINS_HOME" ]]; then
+        export PYBIND=$BUILD_DIR/src/pybind
+        pybind_dir=$PYBIND
     fi
+    export PYTHONPATH=$TEMP_DIR/teuthology:$source_dir/qa:$BUILD_DIR/lib/cython_modules/lib.${CEPH_PY_VERSION_MAJOR}/:$pybind_dir:$python_common_dir:${COVERAGE_PATH}
+    export RGW=${RGW:-1}
 
     export COVERAGE_ENABLED=true
     export COVERAGE_FILE=.coverage.mgr.dashboard
     find . -iname "*${COVERAGE_FILE}*" -type f -delete
 
-    eval python ../qa/tasks/vstart_runner.py $OPTIONS $TEST_CASES
+    python ../qa/tasks/vstart_runner.py --ignore-missing-binaries $OPTIONS $TEST_CASES
 
     deactivate
     cd $CURR_DIR
@@ -141,7 +166,7 @@ cleanup_teuthology() {
     killall ceph-mgr
     sleep 10
     if [[ "$COVERAGE_ENABLED" == 'true' ]]; then
-        source $TEMP_DIR/venv/bin/activate
+        source $TEMP_DIR/coverage-venv/bin/activate
         (coverage combine && coverage report) || true
         deactivate
     fi
@@ -154,16 +179,23 @@ cleanup_teuthology() {
     unset TEMP_DIR
     unset CURR_DIR
     unset BUILD_DIR
+    unset COVERAGE_PATH
+    unset get_build_py_version
     unset setup_teuthology
+    unset setup_coverage
+    unset on_tests_error
     unset run_teuthology_tests
     unset cleanup_teuthology
 }
 
+get_build_py_version
 setup_teuthology
+setup_coverage
 run_teuthology_tests --create-cluster-only
 
-# End sourced section
-return 2> /dev/null
+# End sourced section. Do not exit shell when the script has been sourced.
+set +e
+return 2>/dev/null || set -eo pipefail
 
 run_teuthology_tests "$@"
 cleanup_teuthology
index fa911776b0eda297401a009eb977ad276c05f016..0186e872d759a46f0b3ff0d3bdce5da1e80aeb54 100755 (executable)
@@ -33,8 +33,8 @@ Some errors might need a manual fix."
 fi
 
 # I18N
-npm run i18n
-i18n_lint=`grep -En "<source> |<source>$| </source>" src/locale/messages.xlf`
+npm run i18n:extract
+i18n_lint=`awk '/<source> |<source>$| <\/source>/,/<\/context-group>/ {printf "%-4s ", NR; print}' src/locale/messages.xlf`
 if [[ ! -z $i18n_lint ]]; then
   echo -e "The following source translations in 'messages.xlf' need to be \
 fixed, please check the I18N suggestions in 'HACKING.rst':\n"
index 4d1669b6afb0b65dd6db064a79b6b8c906fbd3e8..63bf08d20ea00d5b2cb77b3763b56500fd6dd6ee 100644 (file)
@@ -112,6 +112,7 @@ BLOCK_MGR_ROLE = Role('block-manager', 'Block Manager', {
     Scope.POOL: [_P.READ],
     Scope.ISCSI: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.RBD_MIRRORING: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
+    Scope.GRAFANA: [_P.READ],
 })
 
 
@@ -119,6 +120,7 @@ BLOCK_MGR_ROLE = Role('block-manager', 'Block Manager', {
 RGW_MGR_ROLE = Role('rgw-manager', 'RGW Manager', {
     Scope.RGW: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.CONFIG_OPT: [_P.READ],
+    Scope.GRAFANA: [_P.READ],
 })
 
 
@@ -131,6 +133,7 @@ CLUSTER_MGR_ROLE = Role('cluster-manager', 'Cluster Manager', {
     Scope.MANAGER: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.CONFIG_OPT: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.LOG: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
+    Scope.GRAFANA: [_P.READ],
 })
 
 
@@ -138,12 +141,14 @@ CLUSTER_MGR_ROLE = Role('cluster-manager', 'Cluster Manager', {
 POOL_MGR_ROLE = Role('pool-manager', 'Pool Manager', {
     Scope.POOL: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.CONFIG_OPT: [_P.READ],
+    Scope.GRAFANA: [_P.READ],
 })
 
 # Pool manager role provides all permissions for CephFS related scopes
 CEPHFS_MGR_ROLE = Role('cephfs-manager', 'CephFS Manager', {
     Scope.CEPHFS: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.CONFIG_OPT: [_P.READ],
+    Scope.GRAFANA: [_P.READ],
 })
 
 GANESHA_MGR_ROLE = Role('ganesha-manager', 'NFS Ganesha Manager', {
@@ -151,6 +156,7 @@ GANESHA_MGR_ROLE = Role('ganesha-manager', 'NFS Ganesha Manager', {
     Scope.CEPHFS: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.RGW: [_P.READ, _P.CREATE, _P.UPDATE, _P.DELETE],
     Scope.CONFIG_OPT: [_P.READ],
+    Scope.GRAFANA: [_P.READ],
 })
 
 
index be2ca8a34d2bc09ece6617d5e02cc20c4e8a3213..726a32c29daedeeeb15f446c0a2e797776f7895e 100644 (file)
@@ -115,11 +115,12 @@ class IscsiClient(RestClient):
         return request()
 
     @RestClient.api_put('/api/disk/{pool}/{image}')
-    def create_disk(self, pool, image, backstore, request=None):
+    def create_disk(self, pool, image, backstore, wwn, request=None):
         logger.debug("iSCSI[%s] Creating disk: %s/%s", self.gateway_name, pool, image)
         return request({
             'mode': 'create',
-            'backstore': backstore
+            'backstore': backstore,
+            'wwn': wwn
         })
 
     @RestClient.api_delete('/api/disk/{pool}/{image}')
@@ -138,11 +139,12 @@ class IscsiClient(RestClient):
         })
 
     @RestClient.api_put('/api/targetlun/{target_iqn}')
-    def create_target_lun(self, target_iqn, image_id, request=None):
+    def create_target_lun(self, target_iqn, image_id, lun, request=None):
         logger.debug("iSCSI[%s] Creating target lun: %s/%s", self.gateway_name, target_iqn,
                      image_id)
         return request({
-            'disk': image_id
+            'disk': image_id,
+            'lun_id': lun
         })
 
     @RestClient.api_delete('/api/targetlun/{target_iqn}')
@@ -171,6 +173,14 @@ class IscsiClient(RestClient):
             'disk': image_id
         })
 
+    @RestClient.api_delete('/api/clientlun/{target_iqn}/{client_iqn}')
+    def delete_client_lun(self, target_iqn, client_iqn, image_id, request=None):
+        logger.debug("iSCSI[%s] Deleting client lun: %s/%s", self.gateway_name, target_iqn,
+                     client_iqn)
+        return request({
+            'disk': image_id
+        })
+
     @RestClient.api_put('/api/clientauth/{target_iqn}/{client_iqn}')
     def create_client_auth(self, target_iqn, client_iqn, username, password, mutual_username,
                            mutual_password, request=None):
@@ -209,12 +219,24 @@ class IscsiClient(RestClient):
         })
 
     @RestClient.api_put('/api/targetauth/{target_iqn}')
-    def update_targetauth(self, target_iqn, action, request=None):
-        logger.debug("iSCSI[%s] Updating targetauth: %s/%s", self.gateway_name, target_iqn, action)
+    def update_targetacl(self, target_iqn, action, request=None):
+        logger.debug("iSCSI[%s] Updating targetacl: %s/%s", self.gateway_name, target_iqn, action)
         return request({
             'action': action
         })
 
+    @RestClient.api_put('/api/targetauth/{target_iqn}')
+    def update_targetauth(self, target_iqn, user, password, mutual_user, mutual_password,
+                          request=None):
+        logger.debug("iSCSI[%s] Updating targetauth: %s/%s/%s/%s/%s", self.gateway_name,
+                     target_iqn, user, password, mutual_user, mutual_password)
+        return request({
+            'username': user,
+            'password': password,
+            'mutual_username': mutual_user,
+            'mutual_password': mutual_password
+        })
+
     @RestClient.api_get('/api/targetinfo/{target_iqn}')
     def get_targetinfo(self, target_iqn, request=None):
         # pylint: disable=unused-argument
index ee2c4912d38a942f086dc454b0e3879acb4e842c..77723d6ae6d3f210be913845d535dac623b16be7 100644 (file)
@@ -78,6 +78,8 @@ class CLICommandTestMixin(KVStoreMockMixin):
 
 
 class ControllerTestCase(helper.CPWebCase):
+    _endpoints_cache = {}
+
     @classmethod
     def setup_controllers(cls, ctrl_classes, base_url=''):
         if not isinstance(ctrl_classes, list):
@@ -86,7 +88,17 @@ class ControllerTestCase(helper.CPWebCase):
         endpoint_list = []
         for ctrl in ctrl_classes:
             inst = ctrl()
-            for endpoint in ctrl.endpoints():
+
+            # We need to cache the controller endpoints because
+            # BaseController#endpoints method is not idempontent
+            # and a controller might be needed by more than one
+            # unit test.
+            if ctrl not in cls._endpoints_cache:
+                ctrl_endpoints = ctrl.endpoints()
+                cls._endpoints_cache[ctrl] = ctrl_endpoints
+
+            ctrl_endpoints = cls._endpoints_cache[ctrl]
+            for endpoint in ctrl_endpoints:
                 endpoint.inst = inst
                 endpoint_list.append(endpoint)
         endpoint_list = sorted(endpoint_list, key=lambda e: e.url)
@@ -108,7 +120,7 @@ class ControllerTestCase(helper.CPWebCase):
         })
         super(ControllerTestCase, self).__init__(*args, **kwargs)
 
-    def _request(self, url, method, data=None):
+    def _request(self, url, method, data=None, headers=None):
         if not data:
             b = None
             h = None
@@ -116,10 +128,12 @@ class ControllerTestCase(helper.CPWebCase):
             b = json.dumps(data)
             h = [('Content-Type', 'application/json'),
                  ('Content-Length', str(len(b)))]
+        if headers:
+            h = headers
         self.getPage(url, method=method, body=b, headers=h)
 
-    def _get(self, url):
-        self._request(url, 'GET')
+    def _get(self, url, headers=None):
+        self._request(url, 'GET', headers=headers)
 
     def _post(self, url, data=None):
         self._request(url, 'POST', data)
diff --git a/ceph/src/pybind/mgr/dashboard/tests/test_home.py b/ceph/src/pybind/mgr/dashboard/tests/test_home.py
new file mode 100644 (file)
index 0000000..3417625
--- /dev/null
@@ -0,0 +1,33 @@
+from __future__ import absolute_import
+
+import logging
+
+from . import ControllerTestCase
+from ..controllers.home import HomeController
+
+
+logger = logging.getLogger()
+
+
+class HomeTest(ControllerTestCase):
+    @classmethod
+    def setup_server(cls):
+        cls.setup_controllers([HomeController])
+
+    def test_home_default_lang(self):
+        self._get('/')
+        self.assertStatus(200)
+        logger.info(self.body)
+        self.assertIn('<html lang="en">', self.body.decode('utf-8'))
+
+    def test_home_en_us(self):
+        self._get('/', headers=[('Accept-Language', 'en-US')])
+        self.assertStatus(200)
+        logger.info(self.body)
+        self.assertIn('<html lang="en">', self.body.decode('utf-8'))
+
+    def test_home_non_supported_lang(self):
+        self._get('/', headers=[('Accept-Language', 'NO-NO')])
+        self.assertStatus(200)
+        logger.info(self.body)
+        self.assertIn('<html lang="en">', self.body.decode('utf-8'))
index 9905f33b49e9fed9c7aeab899c01fc20e892473c..d7262ebedbafe06f1004ecc27347528bc726a622 100644 (file)
@@ -103,7 +103,7 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
         target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw1"
         request = copy.deepcopy(iscsi_target_request)
         request['target_iqn'] = target_iqn
-        self._post('/api/iscsi/target', request)
+        self._task_post('/api/iscsi/target', request)
         self.assertStatus(201)
         self._get('/api/iscsi/target')
         self.assertStatus(200)
@@ -116,7 +116,7 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
         target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw2"
         request = copy.deepcopy(iscsi_target_request)
         request['target_iqn'] = target_iqn
-        self._post('/api/iscsi/target', request)
+        self._task_post('/api/iscsi/target', request)
         self.assertStatus(201)
         self._get('/api/iscsi/target/{}'.format(request['target_iqn']))
         self.assertStatus(200)
@@ -129,9 +129,9 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
         target_iqn = "iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw3"
         request = copy.deepcopy(iscsi_target_request)
         request['target_iqn'] = target_iqn
-        self._post('/api/iscsi/target', request)
+        self._task_post('/api/iscsi/target', request)
         self.assertStatus(201)
-        self._delete('/api/iscsi/target/{}'.format(request['target_iqn']))
+        self._task_delete('/api/iscsi/target/{}'.format(request['target_iqn']))
         self.assertStatus(204)
         self._get('/api/iscsi/target')
         self.assertStatus(200)
@@ -221,7 +221,10 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
                 "image": "lun3",
                 "pool": "rbd",
                 "controls": {},
-                "backstore": "user:rbd"
+                "backstore": "user:rbd",
+                "wwn": "64af6678-9694-4367-bacc-f8eb0baa2",
+                "lun": 2
+
             })
         response['clients'][0]['luns'].append({"image": "lun3", "pool": "rbd"})
         self._update_iscsi_target(create_request, update_request, response)
@@ -350,7 +353,7 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
         create_request['target_iqn'] = target_iqn
         create_request['groups'].append(copy.deepcopy(create_request['groups'][0]))
         create_request['groups'][1]['group_id'] = 'mygroup2'
-        self._post('/api/iscsi/target', create_request)
+        self._task_post('/api/iscsi/target', create_request)
         self.assertStatus(400)
         self.assertJsonBody({
             'detail': 'Each initiator can only be part of 1 group at a time',
@@ -359,9 +362,9 @@ class IscsiTest(ControllerTestCase, CLICommandTestMixin):
         })
 
     def _update_iscsi_target(self, create_request, update_request, response):
-        self._post('/api/iscsi/target', create_request)
+        self._task_post('/api/iscsi/target', create_request)
         self.assertStatus(201)
-        self._put('/api/iscsi/target/{}'.format(create_request['target_iqn']), update_request)
+        self._task_put('/api/iscsi/target/{}'.format(create_request['target_iqn']), update_request)
         self.assertStatus(200)
         self._get('/api/iscsi/target/{}'.format(update_request['new_target_iqn']))
         self.assertStatus(200)
@@ -403,6 +406,11 @@ iscsi_target_request = {
         }
     ],
     "acl_enabled": True,
+    "auth": {
+        "password": "",
+        "user": "",
+        "mutual_password": "",
+        "mutual_user": ""},
     "target_controls": {},
     "groups": [
         {
@@ -422,8 +430,10 @@ iscsi_target_response = {
     ],
     'disks': [
         {'pool': 'rbd', 'image': 'lun1', 'backstore': 'user:rbd',
+         'wwn': '64af6678-9694-4367-bacc-f8eb0baa0', 'lun': 0,
          'controls': {'max_data_area_mb': 128}},
         {'pool': 'rbd', 'image': 'lun2', 'backstore': 'user:rbd',
+         'wwn': '64af6678-9694-4367-bacc-f8eb0baa1', 'lun': 1,
          'controls': {'max_data_area_mb': 128}}
     ],
     'clients': [
@@ -459,6 +469,11 @@ iscsi_target_response = {
         }
     ],
     "acl_enabled": True,
+    "auth": {
+        "password": "",
+        "user": "",
+        "mutual_password": "",
+        "mutual_user": ""},
     'groups': [
         {
             'group_id': 'mygroup',
@@ -495,7 +510,7 @@ class IscsiClientMock(object):
             "gateways": {},
             "targets": {},
             "updated": "",
-            "version": 9
+            "version": 11
         }
 
     @classmethod
@@ -551,15 +566,23 @@ class IscsiClientMock(object):
         }
 
     def get_config(self):
-        return self.config
+        return copy.deepcopy(self.config)
 
     def create_target(self, target_iqn, target_controls):
         self.config['targets'][target_iqn] = {
             "clients": {},
             "acl_enabled": True,
+            "auth": {
+                "username": "",
+                "password": "",
+                "password_encryption_enabled": False,
+                "mutual_username": "",
+                "mutual_password": "",
+                "mutual_password_encryption_enabled": False
+            },
             "controls": target_controls,
             "created": "2019/01/17 09:22:34",
-            "disks": [],
+            "disks": {},
             "groups": {},
             "portals": {}
         }
@@ -580,23 +603,37 @@ class IscsiClientMock(object):
             target_config['ip_list'].remove(ip)
         target_config['portals'].pop(gateway_name)
 
-    def create_disk(self, pool, image, backstore):
+    def create_disk(self, pool, image, backstore, wwn):
+        if wwn is None:
+            wwn = '64af6678-9694-4367-bacc-f8eb0baa' + str(len(self.config['disks']))
         image_id = '{}/{}'.format(pool, image)
         self.config['disks'][image_id] = {
             "pool": pool,
             "image": image,
             "backstore": backstore,
-            "controls": {}
+            "controls": {},
+            "wwn": wwn
         }
 
-    def create_target_lun(self, target_iqn, image_id):
+    def create_target_lun(self, target_iqn, image_id, lun):
         target_config = self.config['targets'][target_iqn]
-        target_config['disks'].append(image_id)
+        if lun is None:
+            lun = len(target_config['disks'])
+        target_config['disks'][image_id] = {
+            "lun_id": lun
+        }
         self.config['disks'][image_id]['owner'] = list(target_config['portals'].keys())[0]
 
     def reconfigure_disk(self, pool, image, controls):
         image_id = '{}/{}'.format(pool, image)
-        self.config['disks'][image_id]['controls'] = controls
+        settings = self.get_settings()
+        backstore = self.config['disks'][image_id]['backstore']
+        disk_default_controls = settings['disk_default_controls'][backstore]
+        new_controls = {}
+        for control_k, control_v in controls.items():
+            if control_v != disk_default_controls[control_k]:
+                new_controls[control_k] = control_v
+        self.config['disks'][image_id]['controls'] = new_controls
 
     def create_client(self, target_iqn, client_iqn):
         target_config = self.config['targets'][target_iqn]
@@ -617,6 +654,10 @@ class IscsiClientMock(object):
         target_config = self.config['targets'][target_iqn]
         target_config['clients'][client_iqn]['luns'][image_id] = {}
 
+    def delete_client_lun(self, target_iqn, client_iqn, image_id):
+        target_config = self.config['targets'][target_iqn]
+        del target_config['clients'][client_iqn]['luns'][image_id]
+
     def create_client_auth(self, target_iqn, client_iqn, user, password, m_user, m_password):
         target_config = self.config['targets'][target_iqn]
         target_config['clients'][client_iqn]['auth']['username'] = user
@@ -644,7 +685,7 @@ class IscsiClientMock(object):
 
     def delete_target_lun(self, target_iqn, image_id):
         target_config = self.config['targets'][target_iqn]
-        target_config['disks'].remove(image_id)
+        target_config['disks'].pop(image_id)
         del self.config['disks'][image_id]['owner']
 
     def delete_disk(self, pool, image):
@@ -678,9 +719,16 @@ class IscsiClientMock(object):
         self.config['discovery_auth']['mutual_username'] = mutual_user
         self.config['discovery_auth']['mutual_password'] = mutual_password
 
-    def update_targetauth(self, target_iqn, action):
+    def update_targetacl(self, target_iqn, action):
         self.config['targets'][target_iqn]['acl_enabled'] = (action == 'enable_acl')
 
+    def update_targetauth(self, target_iqn, user, password, mutual_user, mutual_password):
+        target_config = self.config['targets'][target_iqn]
+        target_config['auth']['username'] = user
+        target_config['auth']['password'] = password
+        target_config['auth']['mutual_username'] = mutual_user
+        target_config['auth']['mutual_password'] = mutual_password
+
     def get_targetinfo(self, target_iqn):
         # pylint: disable=unused-argument
         return {
diff --git a/ceph/src/pybind/mgr/dashboard/tests/test_pool.py b/ceph/src/pybind/mgr/dashboard/tests/test_pool.py
new file mode 100644 (file)
index 0000000..16d7d7b
--- /dev/null
@@ -0,0 +1,117 @@
+# -*- coding: utf-8 -*-
+# pylint: disable=protected-access
+import time
+import mock
+
+from . import ControllerTestCase
+from ..controllers.pool import Pool
+from ..controllers.task import Task
+from ..tools import NotificationQueue, TaskManager
+
+
+class MockTask(object):
+    percentages = []
+
+    def set_progress(self, percentage):
+        self.percentages.append(percentage)
+
+
+class PoolControllerTest(ControllerTestCase):
+    @classmethod
+    def setup_server(cls):
+        Task._cp_config['tools.authenticate.on'] = False
+        Pool._cp_config['tools.authenticate.on'] = False
+        cls.setup_controllers([Pool, Task])
+
+    @mock.patch('dashboard.controllers.pool.Pool._get')
+    @mock.patch('dashboard.services.ceph_service.CephService.send_command')
+    def test_creation(self, send_command, _get):
+        _get.side_effect = [{
+            'pool_name': 'test-pool',
+            'pg_num': 64,
+            'pg_num_target': 63,
+            'pg_placement_num': 64,
+            'pg_placement_num_target': 63
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 64,
+            'pg_num_target': 64,
+            'pg_placement_num': 64,
+            'pg_placement_num_target': 64
+        }]
+        NotificationQueue.start_queue()
+        TaskManager.init()
+
+        def _send_cmd(*args, **kwargs):  # pylint: disable=unused-argument
+            time.sleep(3)
+
+        send_command.side_effect = _send_cmd
+
+        self._task_post('/api/pool', {
+            'pool': 'test-pool',
+            'pool_type': 1,
+            'pg_num': 64
+        }, 10)
+        self.assertStatus(201)
+        self.assertEqual(_get.call_count, 2)
+        NotificationQueue.stop()
+
+    @mock.patch('dashboard.controllers.pool.Pool._get')
+    def test_wait_for_pgs_without_waiting(self, _get):
+        _get.side_effect = [{
+            'pool_name': 'test-pool',
+            'pg_num': 32,
+            'pg_num_target': 32,
+            'pg_placement_num': 32,
+            'pg_placement_num_target': 32
+        }]
+        Pool._wait_for_pgs('test-pool')
+        self.assertEqual(_get.call_count, 1)
+
+    @mock.patch('dashboard.controllers.pool.Pool._get')
+    def test_wait_for_pgs_with_waiting(self, _get):
+        task = MockTask()
+        orig_method = TaskManager.current_task
+        TaskManager.current_task = mock.MagicMock()
+        TaskManager.current_task.return_value = task
+        _get.side_effect = [{
+            'pool_name': 'test-pool',
+            'pg_num': 64,
+            'pg_num_target': 32,
+            'pg_placement_num': 64,
+            'pg_placement_num_target': 64
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 63,
+            'pg_num_target': 32,
+            'pg_placement_num': 62,
+            'pg_placement_num_target': 32
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 48,
+            'pg_num_target': 32,
+            'pg_placement_num': 48,
+            'pg_placement_num_target': 32
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 48,
+            'pg_num_target': 32,
+            'pg_placement_num': 33,
+            'pg_placement_num_target': 32
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 33,
+            'pg_num_target': 32,
+            'pg_placement_num': 32,
+            'pg_placement_num_target': 32
+        }, {
+            'pool_name': 'test-pool',
+            'pg_num': 32,
+            'pg_num_target': 32,
+            'pg_placement_num': 32,
+            'pg_placement_num_target': 32
+        }]
+        Pool._wait_for_pgs('test-pool')
+        self.assertEqual(_get.call_count, 6)
+        self.assertEqual(task.percentages, [0, 5, 50, 73, 98])
+        TaskManager.current_task = orig_method
index 7eb23e535b70b4f42b38d51edfeadd2e906b048a..6ab9078f8a5c700c1544de973bf56233ba0d1a17 100644 (file)
@@ -579,6 +579,7 @@ class Task(object):
         return str(self)
 
     def _run(self):
+        NotificationQueue.register(self._handle_task_finished, 'cd_task_finished', 100)
         with self.lock:
             assert not self.running
             self.executor.init(self)
@@ -604,10 +605,14 @@ class Task(object):
             if not self.exception:
                 self.set_progress(100, True)
         NotificationQueue.new_notification('cd_task_finished', self)
-        self.event.set()
         logger.debug("TK: execution of %s finished in: %s s", self,
                      self.duration)
 
+    def _handle_task_finished(self, task):
+        if self == task:
+            NotificationQueue.deregister(self._handle_task_finished)
+            self.event.set()
+
     def wait(self, timeout=None):
         with self.lock:
             assert self.running, "wait cannot be called before _run"
index d404d59abe138e0b5b657b5794cfea7f2414fafe..b5daa9278e3b24a489e7f8fe77d11c69654507de 100644 (file)
@@ -20,7 +20,7 @@ commands=
     py27: pip install -r {toxinidir}/requirements-py27.txt
     py3: pip install -r {toxinidir}/requirements-py3.txt
     cov: coverage erase
-    cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers/rbd.py services/ tests/ tools.py
+    cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers services/ tests/ tools.py
     cov: coverage combine {toxinidir}/{env:COVERAGE_FILE}
     cov: coverage report
     cov: coverage xml
index 2e14ca98a941429e6cad6ce3fe7f2caeed9855b7..54a51236d8f1e5bf1c339059557f61c1b0fb787a 100644 (file)
@@ -9,6 +9,7 @@ import operator
 import rados
 from threading import Event
 from datetime import datetime, timedelta, date, time
+import _strptime
 from six import iteritems
 
 TIME_FORMAT = '%Y%m%d-%H%M%S'
@@ -22,6 +23,8 @@ HEALTH_MESSAGES = {
     DEVICE_HEALTH_TOOMANY: 'Too many daemons are expected to fail soon',
 }
 
+MAX_SAMPLES=500
+
 
 class Module(MgrModule):
     MODULE_OPTIONS = [
@@ -310,6 +313,8 @@ class Module(MgrModule):
 
     def scrape_daemon(self, daemon_type, daemon_id):
         ioctx = self.open_connection()
+        if daemon_type != 'osd':
+            return -errno.EINVAL, '', 'scraping non-OSDs not currently supported'
         raw_smart_data = self.do_scrape_daemon(daemon_type, daemon_id)
         if raw_smart_data:
             for device, raw_data in raw_smart_data.items():
@@ -326,9 +331,6 @@ class Module(MgrModule):
         ids = []
         for osd in osdmap['osds']:
             ids.append(('osd', str(osd['osd'])))
-        monmap = self.get("mon_map")
-        for mon in monmap['mons']:
-            ids.append(('mon', mon['name']))
         for daemon_type, daemon_id in ids:
             raw_smart_data = self.do_scrape_daemon(daemon_type, daemon_id)
             if not raw_smart_data:
@@ -347,10 +349,10 @@ class Module(MgrModule):
         r = self.get("device " + devid)
         if not r or 'device' not in r.keys():
             return -errno.ENOENT, '', 'device ' + devid + ' not found'
-        daemons = r['device'].get('daemons', [])
+        daemons = [d for d in r['device'].get('daemons', []) if not d.startswith('osd.')]
         if not daemons:
             return (-errno.EAGAIN, '',
-                    'device ' + devid + ' not claimed by any active daemons')
+                    'device ' + devid + ' not claimed by any active OSD daemons')
         (daemon_type, daemon_id) = daemons[0].split('.')
         ioctx = self.open_connection()
         raw_smart_data = self.do_scrape_daemon(daemon_type, daemon_id,
@@ -391,7 +393,7 @@ class Module(MgrModule):
         erase = []
         try:
             with rados.ReadOpCtx() as op:
-                omap_iter, ret = ioctx.get_omap_keys(op, "", 500)  # fixme
+                omap_iter, ret = ioctx.get_omap_keys(op, "", MAX_SAMPLES)  # fixme
                 assert ret == 0
                 ioctx.operate_read_op(op, devid)
                 for key, _ in list(omap_iter):
@@ -428,7 +430,8 @@ class Module(MgrModule):
             return 0, json.dumps(res, indent=4), ''
         with ioctx:
             with rados.ReadOpCtx() as op:
-                omap_iter, ret = ioctx.get_omap_vals(op, "", sample or '', 500)  # fixme
+                omap_iter, ret = ioctx.get_omap_vals(op, "", sample or '',
+                                                     MAX_SAMPLES)  # fixme
                 assert ret == 0
                 try:
                     ioctx.operate_read_op(op, devid)
@@ -631,3 +634,9 @@ class Module(MgrModule):
                 return self.remote(plugin_name, 'predict_all_devices')
         except:
             return -1, '', 'unable to invoke diskprediction local or remote plugin'
+
+    def get_recent_device_metrics(self, devid, min_sample):
+        return self._get_device_metrics(devid, min_sample=min_sample)
+
+    def get_time_format(self):
+        return TIME_FORMAT
diff --git a/ceph/src/pybind/mgr/k8sevents/README.md b/ceph/src/pybind/mgr/k8sevents/README.md
new file mode 100644 (file)
index 0000000..7398096
--- /dev/null
@@ -0,0 +1,81 @@
+# Testing
+
+## To test the k8sevents module  
+enable the module with `ceph mgr module enable k8sevents`  
+check that it's working `ceph k8sevents status`, you should see something like this;  
+```
+[root@ceph-mgr ~]# ceph k8sevents status
+Kubernetes
+- Hostname : https://localhost:30443
+- Namespace: ceph
+Tracker Health
+- EventProcessor : OK
+- CephConfigWatcher : OK
+- NamespaceWatcher : OK
+Tracked Events
+- namespace  :   5
+- ceph events:   0
+
+```  
+Now run some commands to generate healthchecks and admin level events;  
+- ```ceph osd set noout```
+- ```ceph osd unset noout```
+- ```ceph osd pool create mypool 4 4 replicated```
+- ```ceph osd pool delete mypool mypool --yes-i-really-really-mean-it```  
+
+In addition to tracking audit, healthchecks and configuration changes if you have the environment up for >1 hr you should also see and event that shows the clusters health and configuration overview.
+
+As well as status, you can use k8sevents to see event activity in the target kubernetes namespace
+```
+[root@rhcs4-3 kube]# ceph k8sevents ls 
+Last Seen (UTC)       Type      Count  Message                                              Event Object Name
+2019/09/20 04:33:00   Normal        1  Pool 'mypool' has been removed from the cluster      mgr.ConfigurationChangeql2hj
+2019/09/20 04:32:55   Normal        1  Client 'client.admin' issued: ceph osd pool delete   mgr.audit.osd_pool_delete_
+2019/09/20 04:13:23   Normal        2  Client 'mds.rhcs4-2' issued: ceph osd blacklist      mgr.audit.osd_blacklist_
+2019/09/20 04:08:28   Normal        1  Ceph log -> event tracking started                   mgr.k8sevents-moduleq74k7
+Total :   4
+```  
+or, focus on the ceph specific events(audit & healthcheck) that are being tracked by the k8sevents module.
+```
+[root@rhcs4-3 kube]# ceph k8sevents ceph
+Last Seen (UTC)       Type      Count  Message                                              Event Object Name
+2019/09/20 04:32:55   Normal        1  Client 'client.admin' issued: ceph osd pool delete   mgr.audit.osd_pool_delete_
+2019/09/20 04:13:23   Normal        2  Client 'mds.rhcs4-2' issued: ceph osd blacklist      mgr.audit.osd_blacklist_
+Total :   2
+```
+
+## Sending events from a standalone Ceph cluster to remote Kubernetes cluster
+To test interaction from a standalone ceph cluster to a kubernetes environment, you need to make changes on the kubernetes cluster **and** on one of the mgr hosts.
+### kubernetes (minikube)
+We need some basic RBAC in place to define a serviceaccount(and token) that we can use to push events into kubernetes. The `rbac_sample.yaml` file provides a quick means to create the required resources. Create them with `kubectl create -f rbac_sample.yaml`
+  
+Once the resources are defined inside kubernetes, we need a couple of things copied over to the Ceph mgr's filesystem.
+### ceph admin host
+We need to run some commands against the cluster, so you'll needs access to a ceph admin host. If you don't have a dedicated admin host, you can use a mon or mgr machine. We'll need the root ca.crt of the kubernetes API, and the token associated with the service account we're using to access the kubernetes API.  
+
+1. Download/fetch the root ca.crt for the kubernetes cluster (on minikube this can be found at ~/minikube/ca.crt)
+2. Copy the ca.crt to your ceph admin host
+3. Extract the token from the service account we're going to use
+```
+kubectl -n ceph get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='ceph-mgr')].data.token}"|base64 -d > mytoken
+```  
+4. Copy the token to your ceph admin host
+5. On the ceph admin host, enable the module with `ceph mgr module enable k8sevents`
+6. Set up the configuration
+```
+ceph k8sevents set-access cacrt -i <path to ca.crt file>
+ceph k8sevents set-access token -i <path to mytoken>
+ceph k8sevents set-config server https://<kubernetes api host>:<api_port>
+ceph k8sevents set-config namespace ceph
+```
+7. Restart the module with `ceph mgr module disable k8sevents && ceph mgr module enable k8sevents`
+8. Check state with the `ceph k8sevents status` command
+9. Remove the ca.crt and mytoken files from your admin host
+
+To remove the configuration keys used for external kubernetes access, run the following command
+```
+ceph k8sevents clear-config  
+```
+
+## Networking
+You can use the above approach with a minikube based target from a standalone ceph cluster, but you'll need to have a tunnel/routing defined from the mgr host(s) to the minikube machine to make the kubernetes API accessible to the mgr/k8sevents module. This can just be a simple ssh tunnel.    
diff --git a/ceph/src/pybind/mgr/k8sevents/__init__.py b/ceph/src/pybind/mgr/k8sevents/__init__.py
new file mode 100644 (file)
index 0000000..8f210ac
--- /dev/null
@@ -0,0 +1 @@
+from .module import Module
diff --git a/ceph/src/pybind/mgr/k8sevents/module.py b/ceph/src/pybind/mgr/k8sevents/module.py
new file mode 100644 (file)
index 0000000..f5f2042
--- /dev/null
@@ -0,0 +1,1435 @@
+# Integrate with the kubernetes events API. 
+# This module sends events to Kubernetes, and also captures/tracks all events
+# in the rook-ceph namespace so kubernetes activity like pod restarts,
+# imagepulls etc can be seen from within the ceph cluster itself.
+#
+# To interact with the events API, the mgr service to access needs to be 
+# granted additional permissions
+# e.g. kubectl -n rook-ceph edit clusterrole rook-ceph-mgr-cluster-rules
+#
+# These are the changes needed;
+# - apiGroups:
+#   - ""
+#   resources:
+#   - events
+#   verbs:
+#   - create
+#   - patch
+#   - list
+#   - get
+#   - watch
+
+
+import os
+import re
+import sys
+import time
+import json
+import yaml
+import errno
+import socket
+import base64
+import logging
+import tempfile
+import threading
+
+try:
+    # python 3 
+    from urllib.parse import urlparse
+except ImportError:
+    # python 2 fallback
+    from urlparse import urlparse
+
+from datetime import tzinfo, datetime, timedelta
+   
+from urllib3.exceptions import MaxRetryError,ProtocolError
+from collections import OrderedDict
+
+import rados
+from mgr_module import MgrModule
+from mgr_util import verify_cacrt, ServerConfigException
+
+try:
+    import queue
+except ImportError:
+    # python 2.7.5
+    import Queue as queue
+finally:
+    # python 2.7.15 or python3
+    event_queue = queue.Queue()
+
+try:
+    from kubernetes import client, config, watch
+    from kubernetes.client.rest import ApiException
+except ImportError:
+    kubernetes_imported = False
+    client = None
+    config = None
+    watch = None
+else:
+    kubernetes_imported = True
+
+    # The watch.Watch.stream method can provide event objects that have involved_object = None
+    # which causes an exception in the generator. A workaround is discussed for a similar issue
+    # in https://github.com/kubernetes-client/python/issues/376 which has been used here
+    # pylint: disable=no-member
+    from kubernetes.client.models.v1_event import V1Event
+    def local_involved_object(self, involved_object):
+        if involved_object is None:
+            involved_object = client.V1ObjectReference(api_version="1")
+        self._involved_object = involved_object
+    V1Event.involved_object = V1Event.involved_object.setter(local_involved_object)
+
+log = logging.getLogger(__name__)
+
+# use a simple local class to represent UTC
+# datetime pkg modules vary between python2 and 3 and pytz is not available on older
+# ceph container images, so taking a pragmatic approach!
+class UTC(tzinfo):
+    def utcoffset(self, dt):
+        return timedelta(0)
+
+    def tzname(self, dt):
+        return "UTC"
+
+    def dst(self, dt):
+        return timedelta(0)
+
+
+def text_suffix(num):
+    """Define a text suffix based on a value i.e. turn host into hosts"""
+    return '' if num == 1 else 's'
+
+
+def create_temp_file(fname, content, suffix=".tmp"):
+    """Create a temp file 
+
+    Attempt to create an temporary file containing the given content
+
+    Returns:
+    str .. full path to the temporary file
+
+    Raises:
+    OSError: problems creating the file
+
+    """
+
+    if content is not None:
+        file_name = os.path.join(tempfile.gettempdir(), fname + suffix)
+
+        try:
+            with open(file_name, "w") as f:
+                f.write(content)
+        except OSError as e:
+            raise OSError("Unable to create temporary file : {}".format(str(e)))
+
+    return file_name
+
+
+class HealthCheck(object):
+    """Transform a healthcheck msg into it's component parts"""
+
+    def __init__(self, msg, msg_level):
+
+        # msg looks like
+        #
+        # Health check failed: Reduced data availability: 100 pgs inactive (PG_AVAILABILITY)
+        # Health check cleared: OSDMAP_FLAGS (was: nodown flag(s) set)
+        # Health check failed: nodown flag(s) set (OSDMAP_FLAGS)
+        #
+        self.msg = None
+        self.name = None
+        self.text = None
+        self.valid = False
+        
+        if msg.lower().startswith('health check'):
+
+            self.valid = True
+            self.msg = msg
+            msg_tokens = self.msg.split()
+            
+            if msg_level == 'INF':
+                self.text = ' '.join(msg_tokens[3:])
+                self.name = msg_tokens[3]   # health check name e.g. OSDMAP_FLAGS
+            else:   # WRN or ERR
+                self.text = ' '.join(msg_tokens[3:-1])
+                self.name = msg_tokens[-1][1:-1]
+
+
+class LogEntry(object):
+    """Generic 'log' object"""
+
+    reason_map = {
+        "audit": "Audit",
+        "cluster": "HealthCheck",
+        "config": "ClusterChange",
+        "heartbeat":"Heartbeat",
+        "startup": "Started"
+    }
+
+    def __init__(self, source, msg, msg_type, level, tstamp=None):
+
+        self.source = source
+        self.msg = msg
+        self.msg_type = msg_type
+        self.level = level
+        self.tstamp = tstamp
+        self.healthcheck = None
+        
+        if 'health check ' in self.msg.lower():
+            self.healthcheck = HealthCheck(self.msg, self.level)
+
+    
+    def __str__(self):
+        return "source={}, msg_type={}, msg={}, level={}, tstamp={}".format(self.source,
+                                                                            self.msg_type,
+                                                                            self.msg,
+                                                                            self.level,
+                                                                            self.tstamp)
+
+    @property
+    def cmd(self):
+        """Look at the msg string and extract the command content"""
+
+        # msg looks like 'from=\'client.205306 \' entity=\'client.admin\' cmd=\'[{"prefix": "osd set", "key": "nodown"}]\': finished'
+        if self.msg_type != 'audit':
+            return None
+        else:
+            _m=self.msg[:-10].replace("\'","").split("cmd=")
+            _s='"cmd":{}'.format(_m[1])
+            cmds_list = json.loads('{' + _s + '}')['cmd']
+
+            # TODO. Assuming only one command was issued for now
+            _c = cmds_list[0]
+            return "{} {}".format(_c['prefix'], _c.get('key', ''))
+    
+    @property
+    def event_type(self):
+        return 'Normal' if self.level == 'INF' else 'Warning'
+    
+    @property
+    def event_reason(self):
+        return self.reason_map[self.msg_type]
+
+    @property
+    def event_name(self):
+        if self.msg_type == 'heartbeat':
+            return 'mgr.Heartbeat'
+        elif self.healthcheck:
+            return 'mgr.health.{}'.format(self.healthcheck.name)
+        elif self.msg_type == 'audit':
+            return 'mgr.audit.{}'.format(self.cmd).replace(' ', '_')
+        elif self.msg_type == 'config':
+            return 'mgr.ConfigurationChange'
+        elif self.msg_type == 'startup':
+            return "mgr.k8sevents-module"
+        else:
+            return None
+   
+    @property
+    def event_entity(self):
+        if self.msg_type == 'audit':
+            return self.msg.replace("\'","").split('entity=')[1].split(' ')[0]
+        else:
+            return None
+    
+    @property
+    def event_msg(self):
+        if self.msg_type == 'audit':
+            return "Client '{}' issued: ceph {}".format(self.event_entity, self.cmd)
+
+        elif self.healthcheck:
+            return self.healthcheck.text
+        else:
+            return self.msg
+
+
+class BaseThread(threading.Thread):
+    health = 'OK'
+    reported = False
+    daemon = True
+
+
+class NamespaceWatcher(BaseThread):
+    """Watch events in a given namespace 
+    
+    Using the watch package we can listen to event traffic in the namespace to 
+    get an idea of what kubernetes related events surround the ceph cluster. The
+    thing to bear in mind is that events have a TTL enforced by the kube-apiserver
+    so this stream will only really show activity inside this retention window.
+    """
+
+    def __init__(self, api_client_config, namespace=None):
+        super(NamespaceWatcher, self).__init__()
+
+        if api_client_config:
+            self.api = client.CoreV1Api(api_client_config)
+        else:
+            self.api = client.CoreV1Api()
+
+        self.namespace = namespace
+
+        self.events = OrderedDict()
+        self.lock = threading.Lock()
+        self.active = None
+        self.resource_version = None
+
+    def fetch(self):
+        # clear the cache on every call to fetch
+        self.events.clear()
+        try:
+            resp = self.api.list_namespaced_event(self.namespace)
+        # TODO - Perhaps test for auth problem to be more specific in the except clause?
+        except:
+            self.active = False
+            self.health = "Unable to access events API (list_namespaced_event call failed)"
+            log.warning(self.health)
+        else:
+            self.active = True
+            self.resource_version = resp.metadata.resource_version
+            
+            for item in resp.items:
+                self.events[item.metadata.name] = item
+            log.info('Added {} events'.format(len(resp.items)))
+
+    def run(self):
+        self.fetch()
+        func = getattr(self.api, "list_namespaced_event")
+
+        if self.active:
+            log.info("Namespace event watcher started")
+
+            
+            while True:
+
+                try:
+                    w = watch.Watch()
+                    # execute generator to continually watch resource for changes
+                    for item in w.stream(func, namespace=self.namespace, resource_version=self.resource_version, watch=True):
+                        obj = item['object']
+
+                        with self.lock:
+
+                            if item['type'] in ['ADDED', 'MODIFIED']:
+                                self.events[obj.metadata.name] = obj
+
+                            elif item['type'] == 'DELETED':
+                                del self.events[obj.metadata.name]
+                            
+                # TODO test the exception for auth problem (403?)
+    
+                # Attribute error is generated when urllib3 on the system is old and doesn't have a
+                # read_chunked method
+                except AttributeError as e:
+                    self.health = ("Error: Unable to 'watch' events API in namespace '{}' - "
+                                "urllib3 too old? ({})".format(self.namespace, e))
+                    self.active = False
+                    log.warning(self.health)
+                    break
+
+                except ApiException as e:
+                    # refresh the resource_version & watcher
+                    log.warning("API exception caught in watcher ({})".format(e))
+                    log.warning("Restarting namespace watcher")
+                    self.fetch()
+
+                except Exception:
+                    self.health = "{} Exception at {}".format(
+                        sys.exc_info()[0].__name__,
+                        datetime.strftime(datetime.now(),"%Y/%m/%d %H:%M:%S")
+                    )
+                    log.exception(self.health)
+                    self.active = False
+                    break
+
+            log.warning("Namespace event watcher stopped")
+
+
+class KubernetesEvent(object):
+
+    def __init__(self, log_entry, unique_name=True, api_client_config=None, namespace=None):
+
+        if api_client_config:
+            self.api = client.CoreV1Api(api_client_config)
+        else:
+            self.api = client.CoreV1Api()
+
+        self.namespace = namespace
+
+        self.event_name = log_entry.event_name
+        self.message = log_entry.event_msg
+        self.event_type = log_entry.event_type
+        self.event_reason = log_entry.event_reason
+        self.unique_name = unique_name
+
+        self.host = os.environ.get('NODE_NAME', os.environ.get('HOSTNAME', 'UNKNOWN'))
+
+        self.api_status = 200
+        self.count = 1
+        self.first_timestamp = None
+        self.last_timestamp = None
+
+    @property
+    def type(self):
+        """provide a type property matching a V1Event object"""
+        return self.event_type
+
+    @property
+    def event_body(self):
+        if self.unique_name:
+            obj_meta = client.V1ObjectMeta(name="{}".format(self.event_name)) 
+        else:
+            obj_meta = client.V1ObjectMeta(generate_name="{}".format(self.event_name))
+
+        # field_path is needed to prevent problems in the namespacewatcher when
+        # deleted event are received
+        obj_ref = client.V1ObjectReference(kind="CephCluster",
+                                           field_path='spec.containers{mgr}', 
+                                           name=self.event_name, 
+                                           namespace=self.namespace)
+
+        event_source = client.V1EventSource(component="ceph-mgr", 
+                                            host=self.host)
+        return  client.V1Event(
+                    involved_object=obj_ref, 
+                    metadata=obj_meta, 
+                    message=self.message, 
+                    count=self.count, 
+                    type=self.event_type,
+                    reason=self.event_reason,
+                    source=event_source, 
+                    first_timestamp=self.first_timestamp,
+                    last_timestamp=self.last_timestamp
+                )
+
+    def write(self):
+
+        now=datetime.now(UTC())
+
+        self.first_timestamp = now
+        self.last_timestamp = now
+
+        try:
+            self.api.create_namespaced_event(self.namespace, self.event_body)
+        except (OSError, ProtocolError):
+            # unable to reach to the API server
+            log.error("Unable to reach API server")
+            self.api_status = 400
+        except MaxRetryError:
+            # k8s config has not be defined properly
+            log.error("multiple attempts to connect to the API have failed") 
+            self.api_status = 403       # Forbidden
+        except ApiException as e:
+            log.debug("event.write status:{}".format(e.status))
+            self.api_status = e.status
+            if e.status == 409:
+                log.debug("attempting event update for an existing event")
+                # 409 means the event is there already, so read it back (v1Event object returned)
+                # this could happen if the event has been created, and then the k8sevent module
+                # disabled and reenabled - i.e. the internal event tracking no longer matches k8s
+                response = self.api.read_namespaced_event(self.event_name, self.namespace)
+                #
+                # response looks like
+                #
+                # {'action': None,
+                # 'api_version': 'v1',
+                # 'count': 1,
+                # 'event_time': None,
+                # 'first_timestamp': datetime.datetime(2019, 7, 18, 5, 24, 59, tzinfo=tzlocal()),
+                # 'involved_object': {'api_version': None,
+                #                     'field_path': None,
+                #                     'kind': 'CephCluster',
+                #                     'name': 'ceph-mgr.k8sevent-module',
+                #                     'namespace': 'rook-ceph',
+                #                     'resource_version': None,
+                #                     'uid': None},
+                # 'kind': 'Event',
+                # 'last_timestamp': datetime.datetime(2019, 7, 18, 5, 24, 59, tzinfo=tzlocal()),
+                # 'message': 'Ceph log -> event tracking started',
+                # 'metadata': {'annotations': None,
+                #             'cluster_name': None,
+                #             'creation_timestamp': datetime.datetime(2019, 7, 18, 5, 24, 59, tzinfo=tzlocal()),
+                #             'deletion_grace_period_seconds': None,
+                #             'deletion_timestamp': None,
+                #             'finalizers': None,
+                #             'generate_name': 'ceph-mgr.k8sevent-module',
+                #             'generation': None,
+                #             'initializers': None,
+                #             'labels': None,
+                #             'name': 'ceph-mgr.k8sevent-module5z7kq',
+                #             'namespace': 'rook-ceph',
+                #             'owner_references': None,
+                #             'resource_version': '1195832',
+                #             'self_link': '/api/v1/namespaces/rook-ceph/events/ceph-mgr.k8sevent-module5z7kq',
+                #             'uid': '62fde5f1-a91c-11e9-9c80-6cde63a9debf'},
+                # 'reason': 'Started',
+                # 'related': None,
+                # 'reporting_component': '',
+                # 'reporting_instance': '',
+                # 'series': None,
+                # 'source': {'component': 'ceph-mgr', 'host': 'minikube'},
+                # 'type': 'Normal'}
+
+                # conflict event already exists
+                # read it
+                # update : count and last_timestamp and msg
+
+                self.count = response.count + 1
+                self.first_timestamp = response.first_timestamp
+                try:
+                    self.api.patch_namespaced_event(self.event_name, self.namespace, self.event_body)
+                except ApiException as e:
+                    log.error("event.patch failed for {} with status code:{}".format(self.event_name, e.status))
+                    self.api_status = e.status
+                else:
+                    log.debug("event {} patched".format(self.event_name))
+                    self.api_status = 200
+
+        else:
+            log.debug("event {} created successfully".format(self.event_name))
+            self.api_status = 200
+
+    @property
+    def api_success(self):
+        return self.api_status == 200
+
+    def update(self, log_entry):
+        self.message = log_entry.event_msg
+        self.event_type = log_entry.event_type
+        self.last_timestamp = datetime.now(UTC())
+        self.count += 1
+        log.debug("performing event update for {}".format(self.event_name))
+
+        try:
+            self.api.patch_namespaced_event(self.event_name, self.namespace, self.event_body)
+        except ApiException as e:
+            log.error("event patch call failed: {}".format(e.status))
+            if e.status == 404:
+                # tried to patch, but hit a 404. The event's TTL must have been reached, and 
+                # pruned by the kube-apiserver
+                log.debug("event not found, so attempting to create it")
+                try:
+                    self.api.create_namespaced_event(self.namespace, self.event_body)
+                except ApiException as e:
+                    log.error("unable to create the event: {}".format(e.status))
+                    self.api_status = e.status
+                else:
+                    log.debug("event {} created successfully".format(self.event_name))
+                    self.api_status = 200
+        else:
+            log.debug("event {} updated".format(self.event_name))
+            self.api_status = 200 
+
+
+class EventProcessor(BaseThread):
+    """Handle a global queue used to track events we want to send/update to kubernetes"""
+
+    can_run = True
+
+    def __init__(self, config_watcher, event_retention_days, api_client_config, namespace):
+        super(EventProcessor, self).__init__()
+
+        self.events = dict()
+        self.config_watcher = config_watcher
+        self.event_retention_days = event_retention_days
+        self.api_client_config = api_client_config
+        self.namespace = namespace
+
+    def startup(self):
+        """Log an event to show we're active"""
+        
+        event = KubernetesEvent(
+            LogEntry(
+                source='self',
+                msg='Ceph log -> event tracking started',
+                msg_type='startup',
+                level='INF',
+                tstamp=None
+            ),
+            unique_name=False,
+            api_client_config=self.api_client_config,
+            namespace=self.namespace
+        )
+        
+        event.write()
+        return event.api_success
+    
+    @property
+    def ok(self):
+        return self.startup()
+
+    def prune_events(self):
+        log.debug("prune_events - looking for old events to remove from cache")
+        oldest = datetime.now(UTC()) - timedelta(days=self.event_retention_days)
+        local_events = dict(self.events)
+
+        for event_name in sorted(local_events,
+                                 key = lambda name: local_events[name].last_timestamp):
+            event = local_events[event_name]
+            if event.last_timestamp >= oldest:
+                break
+            else:
+                # drop this event
+                log.debug("prune_events - removing old event : {}".format(event_name))
+                del self.events[event_name]
+
+    def process(self, log_object):
+        
+        log.debug("log entry being processed : {}".format(str(log_object)))
+
+        event_out = False
+        unique_name = True
+
+        if log_object.msg_type == 'audit':
+            # audit traffic : operator commands
+            if log_object.msg.endswith('finished'):
+                log.debug("K8sevents received command finished msg")
+                event_out = True
+            else:
+                # NO OP - ignoring 'dispatch' log records
+                return
+        
+        elif log_object.msg_type == 'cluster':
+            # cluster messages : health checks
+            if log_object.event_name:
+                event_out = True
+
+        elif log_object.msg_type == 'config':
+            # configuration checker messages 
+            event_out = True
+            unique_name = False
+            
+        elif log_object.msg_type == 'heartbeat':
+            # hourly health message summary from Ceph
+            event_out = True
+            unique_name = False
+            log_object.msg = str(self.config_watcher)
+
+        else:
+            log.warning("K8sevents received unknown msg_type - {}".format(log_object.msg_type))
+
+        if event_out:
+            log.debug("k8sevents sending event to kubernetes")
+            # we don't cache non-unique events like heartbeats or config changes
+            if not unique_name or log_object.event_name not in self.events.keys():
+                event = KubernetesEvent(log_entry=log_object,
+                                        unique_name=unique_name,
+                                        api_client_config=self.api_client_config,
+                                        namespace=self.namespace)
+                event.write()
+                log.debug("event(unique={}) creation ended : {}".format(unique_name, event.api_status))
+                if event.api_success and unique_name:
+                    self.events[log_object.event_name] = event
+            else:
+                event = self.events[log_object.event_name]
+                event.update(log_object)
+                log.debug("event update ended : {}".format(event.api_status))
+
+            self.prune_events()
+
+        else:
+            log.debug("K8sevents ignored message : {}".format(log_object.msg))
+
+    def run(self):
+        log.info("Ceph event processing thread started, "
+                 "event retention set to {} days".format(self.event_retention_days))
+
+        while True:
+
+            try:
+                log_object = event_queue.get(block=False)
+            except queue.Empty:
+                pass
+            else:
+                try:
+                    self.process(log_object)
+                except Exception:
+                    self.health = "{} Exception at {}".format(
+                        sys.exc_info()[0].__name__,
+                        datetime.strftime(datetime.now(),"%Y/%m/%d %H:%M:%S")
+                    )
+                    log.exception(self.health)
+                    break
+            
+            if not self.can_run:
+                break
+
+            time.sleep(0.5)
+
+        log.warning("Ceph event processing thread stopped")
+
+
+class ListDiff(object):
+    def __init__(self, before, after):
+        self.before = set(before)
+        self.after = set(after)
+
+    @property
+    def removed(self):
+        return list(self.before - self.after)
+
+    @property
+    def added(self):
+        return list(self.after - self.before)
+
+    @property
+    def is_equal(self):
+        return self.before == self.after
+
+
+class CephConfigWatcher(BaseThread):
+    """Detect configuration changes within the cluster and generate human readable events"""
+
+    def __init__(self, mgr):
+        super(CephConfigWatcher, self).__init__()
+        self.mgr = mgr
+        self.server_map = dict()
+        self.osd_map = dict()
+        self.pool_map = dict()
+        self.service_map = dict()
+        
+        self.config_check_secs = mgr.config_check_secs
+    
+    @property
+    def raw_capacity(self):
+        # Note. if the osd's are not online the capacity field will be 0
+        return sum([self.osd_map[osd]['capacity'] for osd in self.osd_map])
+    
+    @property
+    def num_servers(self):
+        return len(self.server_map.keys())
+
+    @property
+    def num_osds(self):
+        return len(self.osd_map.keys())
+    
+    @property
+    def num_pools(self):
+        return len(self.pool_map.keys())
+
+    def __str__(self):
+        s = ''
+
+        s += "{} : {:>3} host{}, {} pool{}, {} OSDs. Raw Capacity {}B".format(
+            json.loads(self.mgr.get('health')['json'])['status'],
+            self.num_servers, 
+            text_suffix(self.num_servers),
+            self.num_pools, 
+            text_suffix(self.num_pools),
+            self.num_osds, 
+            MgrModule.to_pretty_iec(self.raw_capacity))
+        return s
+
+    def fetch_servers(self):
+        """Return a server summary, and service summary"""
+        servers = self.mgr.list_servers()
+        server_map = dict()         # host -> services
+        service_map = dict()        # service -> host
+        for server_info in servers:
+            services = dict()
+            for svc in server_info['services']:
+                if svc.get('type') in services.keys():
+                    services[svc.get('type')].append(svc.get('id'))
+                else:
+                    services[svc.get('type')] = list([svc.get('id')])
+                # maintain the service xref map service -> host and version
+                service_map[(svc.get('type'), str(svc.get('id')))] = server_info.get('hostname', '')
+            server_map[server_info.get('hostname')] = services
+
+        return server_map, service_map
+    
+    def fetch_pools(self):
+        interesting = ["type", "size", "min_size"]
+        # pools = [{'pool': 1, 'pool_name': 'replicapool', 'flags': 1, 'flags_names': 'hashpspool', 
+        #           'type': 1, 'size': 3, 'min_size': 1, 'crush_rule': 1, 'object_hash': 2, 'pg_autoscale_mode': 'warn', 
+        #           'pg_num': 100, 'pg_placement_num': 100, 'pg_placement_num_target': 100, 'pg_num_target': 100, 'pg_num_pending': 100, 
+        #           'last_pg_merge_meta': {'ready_epoch': 0, 'last_epoch_started': 0, 'last_epoch_clean': 0, 'source_pgid': '0.0', 
+        #           'source_version': "0'0", 'target_version': "0'0"}, 'auid': 0, 'snap_mode': 'selfmanaged', 'snap_seq': 0, 'snap_epoch': 0,
+        #           'pool_snaps': [], 'quota_max_bytes': 0, 'quota_max_objects': 0, 'tiers': [], 'tier_of': -1, 'read_tier': -1, 
+        #           'write_tier': -1, 'cache_mode': 'none', 'target_max_bytes': 0, 'target_max_objects': 0, 
+        #           'cache_target_dirty_ratio_micro': 400000, 'cache_target_dirty_high_ratio_micro': 600000, 
+        #           'cache_target_full_ratio_micro': 800000, 'cache_min_flush_age': 0, 'cache_min_evict_age': 0, 
+        #           'erasure_code_profile': '', 'hit_set_params': {'type': 'none'}, 'hit_set_period': 0, 'hit_set_count': 0, 
+        #           'use_gmt_hitset': True, 'min_read_recency_for_promote': 0, 'min_write_recency_for_promote': 0, 
+        #           'hit_set_grade_decay_rate': 0, 'hit_set_search_last_n': 0, 'grade_table': [], 'stripe_width': 0, 
+        #           'expected_num_objects': 0, 'fast_read': False, 'options': {}, 'application_metadata': {'rbd': {}}, 
+        #           'create_time': '2019-08-02 02:23:01.618519', 'last_change': '19', 'last_force_op_resend': '0', 
+        #           'last_force_op_resend_prenautilus': '0', 'last_force_op_resend_preluminous': '0', 'removed_snaps': '[]'}]
+        pools = self.mgr.get('osd_map')['pools']
+        pool_map = dict()
+        for pool in pools:
+            pool_map[pool.get('pool_name')] = {k:pool.get(k) for k in interesting}
+        return pool_map
+
+
+    def fetch_osd_map(self, service_map):
+        """Create an osd map"""
+        stats = self.mgr.get('osd_stats')
+
+        osd_map = dict()
+
+        devices = self.mgr.get('osd_map_crush')['devices']
+        for dev in devices:
+            osd_id = str(dev['id']) 
+            osd_map[osd_id] = dict(
+                deviceclass=dev.get('class'),
+                capacity=0,
+                hostname=service_map['osd', osd_id]
+                )
+        
+        for osd_stat in stats['osd_stats']:
+            osd_id = str(osd_stat.get('osd'))
+            osd_map[osd_id]['capacity'] = osd_stat['statfs']['total']
+
+        return osd_map
+
+    def push_events(self, changes):
+        """Add config change to the global queue to generate an event in kubernetes"""
+        log.debug("{} events will be generated")
+        for change in changes:
+            event_queue.put(change)
+
+    def _generate_config_logentry(self, msg):
+        return LogEntry(
+                source="config",
+                msg_type="config",
+                msg=msg,
+                level='INF',
+                tstamp=None
+        )
+    
+    def _check_hosts(self, server_map):
+        log.debug("K8sevents checking host membership")
+        changes = list()
+        servers = ListDiff(self.server_map.keys(), server_map.keys())
+        if servers.is_equal:
+            # no hosts have been added or removed
+            pass
+        else:
+            # host changes detected, find out what
+            host_msg = "Host '{}' has been {} the cluster"
+            for new_server in servers.added:
+                changes.append(self._generate_config_logentry(
+                                    msg=host_msg.format(new_server, 'added to'))
+                )
+
+            for removed_server in servers.removed:
+                changes.append(self._generate_config_logentry(
+                                    msg=host_msg.format(removed_server, 'removed from'))
+                )
+
+        return changes
+
+    def _check_osds(self,server_map, osd_map):
+        log.debug("K8sevents checking OSD configuration")
+        changes = list()
+        before_osds = list()
+        for svr in self.server_map:
+            before_osds.extend(self.server_map[svr].get('osd',[]))
+
+        after_osds = list()
+        for svr in server_map:
+            after_osds.extend(server_map[svr].get('osd',[]))
+        
+        if set(before_osds) == set(after_osds):
+            # no change in osd id's
+            pass
+        else:
+            # osd changes detected
+            osd_msg = "Ceph OSD '{}' ({} @ {}B) has been {} host {}"
+
+            osds = ListDiff(before_osds, after_osds)
+            for new_osd in osds.added:
+                changes.append(self._generate_config_logentry(
+                                    msg=osd_msg.format(
+                                            new_osd, 
+                                            osd_map[new_osd]['deviceclass'],
+                                            MgrModule.to_pretty_iec(osd_map[new_osd]['capacity']),
+                                            'added to',
+                                            osd_map[new_osd]['hostname']))
+                )
+
+            for removed_osd in osds.removed:
+                changes.append(self._generate_config_logentry(
+                                    msg=osd_msg.format(
+                                        removed_osd,
+                                        osd_map[removed_osd]['deviceclass'],
+                                        MgrModule.to_pretty_iec(osd_map[removed_osd]['capacity']),
+                                        'removed from',
+                                        osd_map[removed_osd]['hostname']))
+                )
+
+        return changes
+
+    def _check_pools(self, pool_map):
+        changes = list()
+        log.debug("K8sevents checking pool configurations")
+        if self.pool_map.keys() == pool_map.keys():
+            # no pools added/removed
+            pass
+        else:
+            # Pool changes
+            pools = ListDiff(self.pool_map.keys(), pool_map.keys())
+            pool_msg = "Pool '{}' has been {} the cluster"
+            for new_pool in pools.added:
+                changes.append(self._generate_config_logentry(
+                                    msg=pool_msg.format(new_pool, 'added to'))
+                )
+
+            for removed_pool in pools.removed:
+                changes.append(self._generate_config_logentry(
+                                    msg=pool_msg.format(removed_pool, 'removed from'))
+                )
+
+        # check pool configuration changes
+        for pool_name in pool_map:
+            if not self.pool_map.get(pool_name, dict()):
+                # pool didn't exist before so just skip the checks
+                continue
+
+            if pool_map[pool_name] == self.pool_map[pool_name]:
+                # no changes - dicts match in key and value
+                continue
+            else:
+                # determine the change and add it to the change list
+                size_diff = pool_map[pool_name]['size'] - self.pool_map[pool_name]['size']
+                if size_diff != 0:
+                    if size_diff < 0:
+                        msg = "Data protection level of pool '{}' reduced to {} copies".format(pool_name,
+                                                                                               pool_map[pool_name]['size'])
+                        level = 'WRN'
+                    else:
+                        msg = "Data protection level of pool '{}' increased to {} copies".format(pool_name,
+                                                                                                 pool_map[pool_name]['size'])
+                        level = 'INF'
+
+                    changes.append(LogEntry(source="config",
+                                msg_type="config",
+                                msg=msg,
+                                level=level,
+                                tstamp=None)
+                                )
+
+                if pool_map[pool_name]['min_size'] != self.pool_map[pool_name]['min_size']:
+                    changes.append(LogEntry(source="config",
+                                msg_type="config",
+                                msg="Minimum acceptable number of replicas in pool '{}' has changed".format(pool_name),
+                                level='WRN',
+                                tstamp=None)
+                                )
+
+        return changes
+
+    def get_changes(self, server_map, osd_map, pool_map):
+        """Detect changes in maps between current observation and the last"""
+
+        changes = list()
+
+        changes.extend(self._check_hosts(server_map))
+        changes.extend(self._check_osds(server_map, osd_map))
+        changes.extend(self._check_pools(pool_map))
+
+        # FUTURE
+        # Could generate an event if a ceph daemon has moved hosts
+        # (assumes the ceph metadata host information is valid though!)
+
+        return changes
+
+    def run(self):
+        log.info("Ceph configuration watcher started, interval set to {}s".format(self.config_check_secs))
+
+        self.server_map, self.service_map = self.fetch_servers()
+        self.pool_map = self.fetch_pools()
+
+        self.osd_map = self.fetch_osd_map(self.service_map)
+        
+        while True:
+
+            try:
+                start_time = time.time()
+                server_map, service_map = self.fetch_servers()
+                pool_map = self.fetch_pools()
+                osd_map = self.fetch_osd_map(service_map)
+
+                changes = self.get_changes(server_map, osd_map, pool_map)
+                if changes:
+                    self.push_events(changes)
+
+                self.osd_map = osd_map
+                self.pool_map = pool_map
+                self.server_map = server_map
+                self.service_map = service_map
+
+                checks_duration = int(time.time() - start_time)
+                
+                # check that the time it took to run the checks fits within the 
+                # interval, and if not extend the interval and emit a log message
+                # to show that the runtime for the checks exceeded the desired 
+                # interval
+                if checks_duration > self.config_check_secs:
+                    new_interval = self.config_check_secs * 2
+                    log.warning("K8sevents check interval warning. "
+                                "Current checks took {}s, interval was {}s. "
+                                "Increasing interval to {}s".format(int(checks_duration),
+                                                                   self.config_check_secs,
+                                                                   new_interval))
+                    self.config_check_secs = new_interval
+
+                time.sleep(self.config_check_secs)    
+            
+            except Exception:
+                self.health = "{} Exception at {}".format(
+                    sys.exc_info()[0].__name__,
+                    datetime.strftime(datetime.now(),"%Y/%m/%d %H:%M:%S")
+                )
+                log.exception(self.health)
+                break
+
+        log.warning("Ceph configuration watcher stopped")
+
+
+class Module(MgrModule):
+    COMMANDS = [
+        {
+            "cmd": "k8sevents status",
+            "desc": "Show the status of the data gathering threads",
+            "perm": "r"
+        },
+        {
+            "cmd": "k8sevents ls",
+            "desc": "List all current Kuberenetes events from the Ceph namespace",
+            "perm": "r"
+        },
+        {
+            "cmd": "k8sevents ceph",
+            "desc": "List Ceph events tracked & sent to the kubernetes cluster",
+            "perm": "r"
+        },
+        {
+            "cmd": "k8sevents set-access name=key,type=CephString",
+            "desc": "Set kubernetes access credentials. <key> must be cacrt or token and use -i <filename> syntax.\ne.g. ceph k8sevents set-access cacrt -i /root/ca.crt",
+            "perm": "rw"
+        },
+        {
+            "cmd": "k8sevents set-config name=key,type=CephString name=value,type=CephString",
+            "desc": "Set kubernetes config paramters. <key> must be server or namespace.\ne.g. ceph k8sevents set-config server https://localhost:30433",
+            "perm": "rw"
+        },
+        {
+            "cmd": "k8sevents clear-config",
+            "desc": "Clear external kubernetes configuration settings",
+            "perm": "rw"
+        },
+    ]
+    MODULE_OPTIONS = [
+        {'name': 'config_check_secs',
+         'type': 'int',
+         'default': 10,
+         'min': 10,
+         'desc': "interval (secs) to check for cluster configuration changes"},
+        {'name': 'ceph_event_retention_days',
+         'type': 'int',
+         'default': 7,
+         'desc': "Days to hold ceph event information within local cache"}
+    ]
+
+    def __init__(self, *args, **kwargs):
+        self.run = True
+        self.kubernetes_control = 'POD_NAME' in os.environ
+        self.event_processor = None
+        self.config_watcher = None
+        self.ns_watcher = None
+        self.trackers = list()
+        self.error_msg = None
+        self._api_client_config = None
+        self._namespace = None
+        
+        # Declare the module options we accept
+        self.config_check_secs = None
+        self.ceph_event_retention_days = None
+
+        self.k8s_config = dict(
+            cacrt = None,
+            token = None,
+            server = None,
+            namespace = None
+        )
+
+        super(Module, self).__init__(*args, **kwargs)
+
+    def k8s_ready(self):
+        """Validate the k8s_config dict 
+
+        Returns:
+         - bool .... indicating whether the config is ready to use
+         - string .. variables that need to be defined before the module will function
+
+        """
+        missing = list()
+        ready = True
+        for k in self.k8s_config:
+            if not self.k8s_config[k]:
+                missing.append(k)
+                ready = False
+        return ready, missing
+
+    def config_notify(self):
+        """Apply runtime module options, and defaults from the modules KV store"""
+        self.log.debug("applying runtime module option settings")
+        for opt in self.MODULE_OPTIONS:
+            setattr(self,
+                    opt['name'],
+                    self.get_module_option(opt['name']) or opt['default'])
+
+        if not self.kubernetes_control:
+            # Populate the config
+            self.log.debug("loading config from KV store")
+            for k in self.k8s_config:
+                self.k8s_config[k] = self.get_store(k, default=None)
+
+    def fetch_events(self, limit=None):
+        """Interface to expose current events to another mgr module"""
+        # FUTURE: Implement this to provide k8s events to the dashboard?
+        raise NotImplementedError
+
+    def process_clog(self, log_message):
+        """Add log message to the event queue
+        
+        :param log_message:     dict from the cluster log (audit/cluster channels)
+        """
+        required_fields = ['channel', 'message', 'priority', 'stamp']
+        _message_attrs = log_message.keys()
+        if all(_field in _message_attrs for _field in required_fields):
+            self.log.debug("clog entry received - adding to the queue")
+            if log_message.get('message').startswith('overall HEALTH'):
+                m_type = 'heartbeat'
+            else:
+                m_type = log_message.get('channel')
+
+            event_queue.put(
+                LogEntry(
+                    source='log',
+                    msg_type=m_type,
+                    msg=log_message.get('message'),
+                    level=log_message.get('priority')[1:-1],
+                    tstamp=log_message.get('stamp')
+                )
+            )
+            
+        else:
+            self.log.warning("Unexpected clog message format received - skipped: {}".format(log_message))
+
+    def notify(self, notify_type, notify_id):
+        """
+        Called by the ceph-mgr service to notify the Python plugin
+        that new state is available.
+
+        :param notify_type: string indicating what kind of notification,
+                            such as osd_map, mon_map, fs_map, mon_status,
+                            health, pg_summary, command, service_map
+        :param notify_id:  string (may be empty) that optionally specifies
+                            which entity is being notified about.  With
+                            "command" notifications this is set to the tag
+                            ``from send_command``.
+        """
+        
+        # only interested in cluster log (clog) messages for now
+        if notify_type == 'clog':
+            self.log.debug("received a clog entry from mgr.notify")
+            if isinstance(notify_id, dict):
+                # create a log object to process
+                self.process_clog(notify_id)
+            else:
+                self.log.warning("Expected a 'dict' log record format, received {}".format(type(notify_type)))
+
+    def _show_events(self, events):
+
+        max_msg_length = max([len(events[k].message) for k in events])
+        fmt = "{:<20}  {:<8}  {:>5}  {:<" + str(max_msg_length) + "}  {}\n"
+        s = fmt.format("Last Seen (UTC)", "Type", "Count", "Message", "Event Object Name")
+
+        for event_name in sorted(events, 
+                                 key = lambda name: events[name].last_timestamp,
+                                 reverse=True):
+
+            event = events[event_name]
+
+            s += fmt.format(
+                    datetime.strftime(event.last_timestamp,"%Y/%m/%d %H:%M:%S"),
+                    event.type,
+                    event.count,
+                    event.message,
+                    event_name
+            )
+        s += "Total : {:>3}\n".format(len(events))
+        return s
+
+    def show_events(self, events):
+        """Show events we're holding from the ceph namespace - most recent 1st"""
+
+        if len(events):
+            return 0, "", self._show_events(events)
+        else:
+            return 0, "", "No events emitted yet, local cache is empty"
+
+    def show_status(self):
+        s = "Kubernetes\n"
+        s += "- Hostname  : {}\n".format(self.k8s_config['server'])
+        s += "- Namespace : {}\n".format(self._namespace)
+        s += "Tracker Health\n"
+        for t in self.trackers:
+            s += "- {:<20} : {}\n".format(t.__class__.__name__, t.health)
+        s += "Tracked Events\n"
+        s += "- namespace   : {:>3}\n".format(len(self.ns_watcher.events))
+        s += "- ceph events : {:>3}\n".format(len(self.event_processor.events))
+        return 0, "", s
+
+    def _valid_server(self, server):
+        # must be a valid server url format
+        server = server.strip()
+
+        res = urlparse(server)
+        port = res.netloc.split(":")[-1]
+
+        if res.scheme != 'https':
+            return False, "Server URL must use https"
+
+        elif not res.hostname:
+            return False, "Invalid server URL format"
+
+        elif res.hostname:
+            try:
+                socket.gethostbyname(res.hostname)
+            except socket.gaierror:
+                return False, "Unresolvable server URL"
+
+        if not port.isdigit():
+            return False, "Server URL must end in a port number"
+
+        return True, ""
+
+    def _valid_cacrt(self, cacrt_data):
+        """use mgr_util.verify_cacrt to validate the CA file"""
+
+        cacrt_fname = create_temp_file("ca_file", cacrt_data)
+
+        try:
+            verify_cacrt(cacrt_fname)
+        except ServerConfigException as e:
+            return False, "Invalid CA certificate: {}".format(str(e))
+        else:
+            return True, ""
+
+    def _valid_token(self, token_data):
+        """basic checks on the token"""
+        if not token_data:
+            return False, "Token file is empty"
+
+        pattern = re.compile(r"[a-zA-Z0-9\-\.\_]+$")
+        if not pattern.match(token_data):
+            return False, "Token contains invalid characters"
+
+        return True, ""
+
+    def _valid_namespace(self, namespace):
+        # Simple check - name must be a string <= 253 in length, alphanumeric with '.' and '-' symbols
+
+        if len(namespace) > 253:
+            return False, "Name too long"
+        if namespace.isdigit():
+            return False, "Invalid name - must be alphanumeric"
+
+        pattern = re.compile(r"^[a-z][a-z0-9\-\.]+$")
+        if not pattern.match(namespace):
+            return False, "Invalid characters in the name"
+        
+        return True, ""
+
+    def _config_set(self, key, val):
+        """Attempt to validate the content, then save to KV store"""
+
+        val = val.rstrip()                      # remove any trailing whitespace/newline 
+
+        try:
+            checker = getattr(self, "_valid_" + key)
+        except AttributeError:
+            # no checker available, just let it pass
+            self.log.warning("Unable to validate '{}' parameter - checker not implemented".format(key))
+            valid = True
+        else:
+            valid, reason = checker(val)
+
+        if valid:
+            self.set_store(key, val)
+            self.log.info("Updated config KV Store item: " + key)
+            return 0, "", "Config updated for parameter '{}'".format(key)
+        else:
+            return -22, "", "Invalid value for '{}' :{}".format(key, reason)
+
+    def clear_config_settings(self):
+        for k in self.k8s_config:
+            self.set_store(k, None)
+        return 0,"","{} configuration keys removed".format(len(self.k8s_config.keys()))
+
+    def handle_command(self, inbuf, cmd):
+
+        access_options = ['cacrt', 'token']
+        config_options = ['server', 'namespace']
+
+        if cmd['prefix'] == 'k8sevents clear-config':
+            return self.clear_config_settings()
+        
+        if cmd['prefix'] == 'k8sevents set-access':
+            if cmd['key'] not in access_options:
+                return -errno.EINVAL, "", "Unknown access option. Must be one of; {}".format(','.join(access_options))
+
+            if inbuf:
+                return self._config_set(cmd['key'], inbuf)
+            else:
+                return -errno.EINVAL, "", "Command must specify -i <filename>"
+
+        if cmd['prefix'] == 'k8sevents set-config':
+
+            if cmd['key'] not in config_options:
+                return -errno.EINVAL, "", "Unknown config option. Must be one of; {}".format(','.join(config_options))
+
+            return self._config_set(cmd['key'], cmd['value'])
+
+        # At this point the command is trying to interact with k8sevents, so intercept if the configuration is 
+        # not ready
+        if self.error_msg:
+            _msg = "k8sevents unavailable: " + self.error_msg
+            ready, _ = self.k8s_ready()
+            if not self.kubernetes_control and not ready:
+                _msg += "\nOnce all variables have been defined, you must restart the k8sevents module for the changes to take effect"
+            return -errno.ENODATA, "", _msg
+
+        if cmd["prefix"] == "k8sevents status":
+            return self.show_status()
+
+        elif cmd["prefix"] == "k8sevents ls":
+            return self.show_events(self.ns_watcher.events)
+
+        elif cmd["prefix"] == "k8sevents ceph":
+            return self.show_events(self.event_processor.events)
+
+        else:
+            raise NotImplementedError(cmd["prefix"])
+
+    @staticmethod
+    def can_run():
+        """Determine whether the pre-reqs for the module are in place"""
+
+        if not kubernetes_imported:
+            return False, "kubernetes python client is not available"
+        return True, ""
+
+    def load_kubernetes_config(self):
+        """Load configuration for remote kubernetes API using KV store values
+
+        Attempt to create an API client configuration from settings stored in 
+        KV store.
+
+        Returns:
+        client.ApiClient: kubernetes API client object
+
+        Raises:
+        OSError: unable to create the cacrt file
+        """
+
+        # the kubernetes setting Configuration.ssl_ca_cert is a path, so we have to create a 
+        # temporary file containing the cert for the client to load from
+        try:
+            ca_crt_file = create_temp_file('cacrt', self.k8s_config['cacrt'])
+        except OSError as e:
+            self.log.error("Unable to create file to hold cacrt: {}".format(str(e)))
+            raise OSError(str(e))
+        else:
+            self.log.debug("CA certificate from KV store, written to {}".format(ca_crt_file))
+
+        configuration = client.Configuration()
+        configuration.host = self.k8s_config['server']
+        configuration.ssl_ca_cert = ca_crt_file
+        configuration.api_key = { "authorization": "Bearer " + self.k8s_config['token'] }
+        api_client = client.ApiClient(configuration)
+        self.log.info("API client created for remote kubernetes access using cacrt and token from KV store")
+
+        return api_client
+
+    def serve(self):
+        # apply options set by CLI to this module
+        self.config_notify()
+
+        if not kubernetes_imported:
+            self.error_msg = "Unable to start : python kubernetes package is missing"
+        else:
+            if self.kubernetes_control:
+                # running under rook-ceph
+                config.load_incluster_config()
+                self.k8s_config['server'] = "https://{}:{}".format(os.environ.get('KUBERNETES_SERVICE_HOST', 'UNKNOWN'),
+                                                                   os.environ.get('KUBERNETES_SERVICE_PORT_HTTPS', 'UNKNOWN'))
+                self._api_client_config = None
+                self._namespace = os.environ.get("POD_NAMESPACE", "rook-ceph")
+            else:
+                # running outside of rook-ceph, so we need additional settings to tell us
+                # how to connect to the kubernetes cluster
+                ready, errors = self.k8s_ready()
+                if not ready:
+                    self.error_msg = "Required settings missing. Use ceph k8sevents set-access | set-config to define {}".format(",".join(errors))
+                else:
+                    try:
+                        self._api_client_config = self.load_kubernetes_config()
+                    except OSError as e:
+                        self.error_msg = str(e)
+                    else:
+                        self._namespace = self.k8s_config['namespace']
+                        self.log.info("k8sevents configuration loaded from KV store")
+
+        if self.error_msg:
+            self.log.error(self.error_msg)
+            return
+
+        # All checks have passed
+        self.config_watcher = CephConfigWatcher(self)
+
+        self.event_processor = EventProcessor(self.config_watcher, 
+                                              self.ceph_event_retention_days,
+                                              self._api_client_config,
+                                              self._namespace)
+
+        self.ns_watcher = NamespaceWatcher(api_client_config=self._api_client_config, 
+                                           namespace=self._namespace)
+
+        if self.event_processor.ok:
+            log.info("Ceph Log processor thread starting")
+            self.event_processor.start()        # start log consumer thread
+            log.info("Ceph config watcher thread starting")
+            self.config_watcher.start()
+            log.info("Rook-ceph namespace events watcher starting")
+            self.ns_watcher.start()
+
+            self.trackers.extend([self.event_processor, self.config_watcher, self.ns_watcher])
+            
+            while True:
+                # stay alive
+                time.sleep(1)
+
+                trackers = self.trackers
+                for t in trackers:
+                    if not t.is_alive() and not t.reported:
+                        log.error("K8sevents tracker thread '{}' stopped: {}".format(t.__class__.__name__, t.health))
+                        t.reported = True
+
+        else:
+            self.error_msg = "Unable to access kubernetes API. Is it accessible? Are RBAC rules for our token valid?"
+            log.warning(self.error_msg)
+            log.warning("k8sevents module exiting")
+            self.run = False
+
+    def shutdown(self):
+        self.run = False
+        log.info("Shutting down k8sevents module")
+        self.event_processor.can_run = False
+
+        if self._rados:
+            self._rados.shutdown()
diff --git a/ceph/src/pybind/mgr/k8sevents/rbac_sample.yaml b/ceph/src/pybind/mgr/k8sevents/rbac_sample.yaml
new file mode 100644 (file)
index 0000000..5639220
--- /dev/null
@@ -0,0 +1,45 @@
+---
+# Create a namespace to receive our test events
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: ceph
+---
+# Define the access rules to open the events API to k8sevents
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: ceph-mgr-events-rules
+rules:
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+  - list
+  - watch
+  - patch
+  - get
+---
+# Define a service account to associate with our event stream
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: ceph-mgr
+  namespace: ceph
+---
+# Allow the ceph-mgr service account access to the events api
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: ceph-mgr
+  namespace: ceph
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: ceph-mgr-events-rules
+subjects:
+- kind: ServiceAccount
+  name: ceph-mgr
+  namespace: ceph
index ba36be96e5d2a10875722540869fe27f6d75f739..9d4bcb41cc77ff9cdeae8c3c811f6062d880f921 100644 (file)
@@ -1017,7 +1017,8 @@ class MgrModule(ceph_module.BaseMgrModule):
         return self._get_module_option(key, default, self.get_mgr_id())
 
     def _set_module_option(self, key, val):
-        return self._ceph_set_module_option(self.module_name, key, str(val))
+        return self._ceph_set_module_option(self.module_name, key,
+                                            None if val is None else str(val))
 
     def set_module_option(self, key, val):
         """
index 331f19d389f31e699c87b9c9ac2a59faa943f2c5..42e00da2aa08a20997e13e2dcbdb87b22fb28e8c 100644 (file)
@@ -1,5 +1,7 @@
 import contextlib
+import os
 import socket
+import logging
 
 (
     BLACK,
@@ -18,6 +20,8 @@ COLOR_DARK_SEQ = "\033[0;%dm"
 BOLD_SEQ = "\033[1m"
 UNDERLINE_SEQ = "\033[4m"
 
+logger = logging.getLogger(__name__)
+
 
 def colorize(msg, color, dark=False):
     """
@@ -106,3 +110,69 @@ def get_default_addr():
         get_default_addr.result = result
         return result
 
+
+class ServerConfigException(Exception):
+    pass
+
+def verify_cacrt(cert_fname):
+    """Basic validation of a ca cert"""
+
+    if not cert_fname:
+        raise ServerConfigException("CA cert not configured")
+    if not os.path.isfile(cert_fname):
+        raise ServerConfigException("Certificate {} does not exist".format(cert_fname))
+
+    from OpenSSL import crypto
+    try:
+        with open(cert_fname) as f:
+            x509 = crypto.load_certificate(crypto.FILETYPE_PEM, f.read())
+            if x509.has_expired():
+                logger.warning(
+                    'Certificate {} has expired'.format(cert_fname))
+    except (ValueError, crypto.Error) as e:
+        raise ServerConfigException(
+            'Invalid certificate {}: {}'.format(cert_fname, str(e)))
+
+
+def verify_tls_files(cert_fname, pkey_fname):
+    """Basic checks for TLS certificate and key files
+
+    Do some validations to the private key and certificate:
+    - Check the type and format
+    - Check the certificate expiration date
+    - Check the consistency of the private key
+    - Check that the private key and certificate match up
+
+    :param cert_fname: Name of the certificate file
+    :param pkey_fname: name of the certificate public key file
+
+    :raises ServerConfigException: An error with a message
+
+    """
+
+    if not cert_fname or not pkey_fname:
+        raise ServerConfigException('no certificate configured')
+
+    verify_cacrt(cert_fname)
+
+    if not os.path.isfile(pkey_fname):
+        raise ServerConfigException('private key %s does not exist' % pkey_fname)
+
+    from OpenSSL import crypto, SSL
+
+    try:
+        with open(pkey_fname) as f:
+            pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read())
+            pkey.check()
+    except (ValueError, crypto.Error) as e:
+        raise ServerConfigException(
+            'Invalid private key {}: {}'.format(pkey_fname, str(e)))
+    try:
+        context = SSL.Context(SSL.TLSv1_METHOD)
+        context.use_certificate_file(cert_fname, crypto.FILETYPE_PEM)
+        context.use_privatekey_file(pkey_fname, crypto.FILETYPE_PEM)
+        context.check_privatekey()
+    except crypto.Error as e:
+        logger.warning(
+            'Private key {} and certificate {} do not match up: {}'.format(
+                pkey_fname, cert_fname, str(e)))
index 458d53a0452cb36702041755a72fe8be5518e8e5..6225b5ad66b111b5e4de074c60a9f093a38673b4 100644 (file)
@@ -379,7 +379,7 @@ Usage:
         """
         mgr_map = self.get("mgr_map")
 
-        if module_name == "":
+        if module_name is None or module_name == "":
             self.set_module_option("orchestrator", None)
             return HandleCommandResult()
 
@@ -429,3 +429,9 @@ Usage:
                                            o, avail,
                                            " ({0})".format(why) if not avail else ""
                                        ))
+
+    def self_test(self):
+        old_orch = self._select_orchestrator()
+        self._set_backend('')
+        assert self._select_orchestrator() is None
+        self._set_backend(old_orch)
index 99530b3ba67c4877589a0d75a7db3813896f3dc3..72fd6b31ef93dd854486cdec41d30e150e3eec5a 100644 (file)
@@ -9,7 +9,7 @@ import threading
 import uuid
 from six import itervalues, iteritems
 from collections import defaultdict
-from prettytable import PrettyTable
+from prettytable import PrettyTable, PLAIN_COLUMNS
 
 from mgr_module import MgrModule
 
@@ -115,6 +115,8 @@ class PgAutoscaler(MgrModule):
 #                                 'IDEAL',
                                  'NEW PG_NUM', 'AUTOSCALE'],
                                 border=False)
+            table.left_padding_width = 0
+            table.right_padding_width = 1
             table.align['POOL'] = 'l'
             table.align['SIZE'] = 'r'
             table.align['TARGET SIZE'] = 'r'
@@ -254,6 +256,9 @@ class PgAutoscaler(MgrModule):
         # iterate over all pools to determine how they should be sized
         for pool_name, p in iteritems(pools):
             pool_id = p['pool']
+            if pool_id not in pool_stats:
+                # race with pool deletion; skip
+                continue
 
             # FIXME: we assume there is only one take per pool, but that
             # may not be true.
@@ -268,7 +273,7 @@ class PgAutoscaler(MgrModule):
 
             raw_used_rate = osdmap.pool_raw_used_rate(pool_id)
 
-            pool_logical_used = pool_stats[pool_id]['bytes_used']
+            pool_logical_used = pool_stats[pool_id]['stored']
             bias = p['options'].get('pg_autoscale_bias', 1.0)
             target_bytes = p['options'].get('target_size_bytes', 0)
 
index c215181540965bb4d6f0cc141a625552e037bced..04b6622305e6e5dfa46c74dc03d4b88494e304a1 100644 (file)
@@ -472,6 +472,7 @@ class Module(MgrModule):
 
         all_modules = {module.get('name'):module.get('can_run') for module in mgr_map['available_modules']}
 
+        ceph_release = None
         for mgr in all_mgrs:
             host_version = servers.get((mgr, 'mgr'), ('', ''))
             if mgr == active:
@@ -487,7 +488,7 @@ class Module(MgrModule):
             self.metrics['mgr_status'].set(_state, (
                 'mgr.{}'.format(mgr), 
             ))
-        always_on_modules = mgr_map['always_on_modules'][ceph_release]
+        always_on_modules = mgr_map['always_on_modules'].get(ceph_release, [])
         active_modules = list(always_on_modules)
         active_modules.extend(mgr_map['modules'])
 
@@ -1072,8 +1073,8 @@ class Module(MgrModule):
                     raise cherrypy.HTTPError(503, 'No MON connection')
 
         # Make the cache timeout for collecting configurable
-        self.collect_timeout = self.get_localized_module_option(
-            'scrape_interval', 5.0)
+        self.collect_timeout = float(self.get_localized_module_option(
+            'scrape_interval', 5.0))
 
         server_addr = self.get_localized_module_option(
             'server_addr', get_default_addr())
@@ -1087,7 +1088,7 @@ class Module(MgrModule):
         # Publish the URI that others may use to access the service we're
         # about to start serving
         self.set_uri('http://{0}:{1}/'.format(
-            socket.getfqdn() if server_addr == '::' else server_addr,
+            socket.getfqdn() if server_addr in ['::', '0.0.0.0'] else server_addr,
             server_port
         ))
 
index 4db1da4e366365ca0622d59e59e2a731f14ad2d8..32673c8d8c1e1959f21bcd04b3f81c22caca185c 100644 (file)
@@ -1082,7 +1082,7 @@ class TaskHandler:
         except (rbd.InvalidArgument, rbd.ImageNotFound):
             return None
 
-    def validate_image_migrating(self, migration_status):
+    def validate_image_migrating(self, image_spec, migration_status):
         if not migration_status:
             raise rbd.InvalidArgument("Image {} is not migrating".format(
                 self.format_image_spec(image_spec)), errno=errno.EINVAL)
@@ -1112,7 +1112,7 @@ class TaskHandler:
             if task:
                 return 0, task.to_json(), ''
 
-            self.validate_image_migrating(status)
+            self.validate_image_migrating(image_spec, status)
             if status['state'] not in [rbd.RBD_IMAGE_MIGRATION_STATE_PREPARED,
                                        rbd.RBD_IMAGE_MIGRATION_STATE_EXECUTING]:
                 raise rbd.InvalidArgument("Image {} is not in ready state".format(
@@ -1148,7 +1148,7 @@ class TaskHandler:
             if task:
                 return 0, task.to_json(), ''
 
-            self.validate_image_migrating(status)
+            self.validate_image_migrating(image_spec, status)
             if status['state'] != rbd.RBD_IMAGE_MIGRATION_STATE_EXECUTED:
                 raise rbd.InvalidArgument("Image {} has not completed migration".format(
                     self.format_image_spec(image_spec)), errno=errno.EINVAL)
@@ -1176,7 +1176,7 @@ class TaskHandler:
             if task:
                 return 0, task.to_json(), ''
 
-            self.validate_image_migrating(status)
+            self.validate_image_migrating(image_spec, status)
             return 0, self.add_task(ioctx,
                                     "Aborting image migration for {}".format(
                                         self.format_image_spec(image_spec)),
index 3c802a429b588d11a1ceab29b572dda74c8d1a02..67143ef508dd5f7d626752bdd40bc6165f378206 100644 (file)
@@ -77,6 +77,14 @@ class Request(RestController):
         """
         Pass through method to create any request
         """
+        if isinstance(request.json, list):
+            if all(isinstance(element, list) for element in request.json):
+                return context.instance.submit_request(request.json, **kwargs)
+
+            # The request.json has wrong format
+            response.status = 500
+            return {'message': 'The request format should be [[{c1},{c2}]]'}
+
         return context.instance.submit_request([[request.json]], **kwargs)
 
 
index 6eb3e416a800f017a5785aabaaffa715a1601b82..f44ba26396e3beeba4f27642299fa2aae2795c6a 100644 (file)
@@ -91,16 +91,13 @@ def pool_update_commands(pool_name, args):
 def crush_rule_osds(node_buckets, rule):
     nodes_by_id = dict((b['id'], b) for b in node_buckets)
 
-    def _gather_leaf_ids(node):
-        if node['id'] >= 0:
-            return set([node['id']])
+    def _gather_leaf_ids(node_id):
+        if node_id >= 0:
+            return set([node_id])
 
         result = set()
-        for item in node['items']:
-            if item['id'] >= 0:
-                result.add(item['id'])
-            else:
-                result |= _gather_leaf_ids(nodes_by_id[item['id']])
+        for item in nodes_by_id[node_id]['items']:
+            result |= _gather_leaf_ids(item['id'])
 
         return result
 
@@ -146,7 +143,7 @@ def crush_rule_osds(node_buckets, rule):
                         # Short circuit another iteration to find the emit
                         # and assume anything we've done a chooseleaf on
                         # is going to be part of the selected set of osds
-                        osds |= _gather_leaf_ids(desc_node)
+                        osds |= _gather_leaf_ids(desc_node['id'])
         elif step['op'] == 'emit':
             if root['id'] >= 0:
                 osds |= root['id']
index e986bbb42347c11973e98f0d8c752bb746da94ce..38442290310327a98cb51e98ca59eb85870e4a86 100644 (file)
@@ -5,18 +5,60 @@ Collect statistics from Ceph cluster and send this back to the Ceph project
 when user has opted-in
 """
 import errno
+import hashlib
 import json
+import rbd
 import re
 import requests
 import uuid
 import time
-from datetime import datetime
+from datetime import datetime, timedelta
 from threading import Event
 from collections import defaultdict
 
 from mgr_module import MgrModule
 
 
+ALL_CHANNELS = ['basic', 'ident', 'crash', 'device']
+
+LICENSE='sharing-1-0'
+LICENSE_NAME='Community Data License Agreement - Sharing - Version 1.0'
+LICENSE_URL='https://cdla.io/sharing-1-0/'
+
+# If the telemetry revision has changed since this point, re-require
+# an opt-in.  This should happen each time we add new information to
+# the telemetry report.
+LAST_REVISION_RE_OPT_IN = 2
+
+# Latest revision of the telemetry report.  Bump this each time we make
+# *any* change.
+REVISION = 3
+
+# History of revisions
+# --------------------
+#
+# Version 1:
+#   Mimic and/or nautilus are lumped together here, since
+#   we didn't track revisions yet.
+#
+# Version 2:
+#   - added revision tracking, nagging, etc.
+#   - added config option changes
+#   - added channels
+#   - added explicit license acknowledgement to the opt-in process
+#
+# Version 3:
+#   - added device health metrics (i.e., SMART data, minus serial number)
+#   - remove crush_rule
+#   - added CephFS metadata (how many MDSs, fs features, how many data pools,
+#     how much metadata is cached, rfiles, rbytes, rsnapshots)
+#   - added more pool metadata (rep vs ec, cache tiering mode, ec profile)
+#   - added host count, and counts for hosts with each of (mon, osd, mds, mgr)
+#   - whether an OSD cluster network is in use
+#   - rbd pool and image count, and rbd mirror mode (pool-level)
+#   - rgw daemons, zones, zonegroups; which rgw frontends
+#   - crush map stats
+
 class Module(MgrModule):
     config = dict()
 
@@ -37,11 +79,21 @@ class Module(MgrModule):
             'type': 'str',
             'default': 'https://telemetry.ceph.com/report'
         },
+        {
+            'name': 'device_url',
+            'type': 'str',
+            'default': 'https://telemetry.ceph.com/device'
+        },
         {
             'name': 'enabled',
             'type': 'bool',
             'default': False
         },
+        {
+            'name': 'last_opt_revision',
+            'type': 'int',
+            'default': 1,
+        },
         {
             'name': 'leaderboard',
             'type': 'bool',
@@ -72,7 +124,31 @@ class Module(MgrModule):
             'type': 'int',
             'default': 24,
             'min': 8
-        }
+        },
+        {
+            'name': 'channel_basic',
+            'type': 'bool',
+            'default': True,
+            'desc': 'Share basic cluster information (size, version)',
+        },
+        {
+            'name': 'channel_ident',
+            'type': 'bool',
+            'default': False,
+            'description': 'Share a user-provided description and/or contact email for the cluster',
+        },
+        {
+            'name': 'channel_crash',
+            'type': 'bool',
+            'default': True,
+            'description': 'Share metadata about Ceph daemon crashes (version, stack straces, etc)',
+        },
+        {
+            'name': 'channel_device',
+            'type': 'bool',
+            'default': True,
+            'description': 'Share device health metrics (e.g., SMART data, minus potentially identifying info like serial numbers)',
+        },
     ]
 
     COMMANDS = [
@@ -82,17 +158,19 @@ class Module(MgrModule):
             "perm": "r"
         },
         {
-            "cmd": "telemetry send",
+            "cmd": "telemetry send "
+                   "name=endpoint,type=CephChoices,strings=ceph|device,n=N,req=false",
             "desc": "Force sending data to Ceph telemetry",
             "perm": "rw"
         },
         {
-            "cmd": "telemetry show",
+            "cmd": "telemetry show "
+                   "name=channels,type=CephString,n=N,req=False",
             "desc": "Show last report or report to be sent",
             "perm": "r"
         },
         {
-            "cmd": "telemetry on",
+            "cmd": "telemetry on name=license,type=CephString,req=false",
             "desc": "Enable telemetry reports from this cluster",
             "perm": "rw",
         },
@@ -114,6 +192,7 @@ class Module(MgrModule):
         self.last_upload = None
         self.last_report = dict()
         self.report_id = None
+        self.salt = None
 
     def config_notify(self):
         for opt in self.MODULE_OPTIONS:
@@ -121,6 +200,8 @@ class Module(MgrModule):
                     opt['name'],
                     self.get_module_option(opt['name']))
             self.log.debug(' %s = %s', opt['name'], getattr(self, opt['name']))
+        # wake up serve() thread
+        self.event.set()
 
     @staticmethod
     def parse_timestamp(timestamp):
@@ -136,6 +217,11 @@ class Module(MgrModule):
             self.report_id = str(uuid.uuid4())
             self.set_store('report_id', self.report_id)
 
+        self.salt = self.get_store('salt', None)
+        if not self.salt:
+            self.salt = str(uuid.uuid4())
+            self.set_store('salt', self.salt)
+
     def gather_osd_metadata(self, osd_map):
         keys = ["osd_objectstore", "rotational"]
         keys += self.metadata_keys
@@ -170,9 +256,75 @@ class Module(MgrModule):
 
         return metadata
 
+    def gather_crush_info(self):
+        osdmap = self.get_osdmap()
+        crush_raw = osdmap.get_crush()
+        crush = crush_raw.dump()
+
+        def inc(d, k):
+            if k in d:
+                d[k] += 1
+            else:
+                d[k] = 1
+
+        device_classes = {}
+        for dev in crush['devices']:
+            inc(device_classes, dev.get('class', ''))
+
+        bucket_algs = {}
+        bucket_types = {}
+        bucket_sizes = {}
+        for bucket in crush['buckets']:
+            if '~' in bucket['name']:  # ignore shadow buckets
+                continue
+            inc(bucket_algs, bucket['alg'])
+            inc(bucket_types, bucket['type_id'])
+            inc(bucket_sizes, len(bucket['items']))
+
+        return {
+            'num_devices': len(crush['devices']),
+            'num_types': len(crush['types']),
+            'num_buckets': len(crush['buckets']),
+            'num_rules': len(crush['rules']),
+            'device_classes': list(device_classes.values()),
+            'tunables': crush['tunables'],
+            'compat_weight_set': '-1' in crush['choose_args'],
+            'num_weight_sets': len(crush['choose_args']),
+            'bucket_algs': bucket_algs,
+            'bucket_sizes': bucket_sizes,
+            'bucket_types': bucket_types,
+        }
+
+    def gather_configs(self):
+        # cluster config options
+        cluster = set()
+        r, outb, outs = self.mon_command({
+            'prefix': 'config dump',
+            'format': 'json'
+        });
+        if r != 0:
+            return {}
+        try:
+            dump = json.loads(outb)
+        except json.decoder.JSONDecodeError:
+            return {}
+        for opt in dump:
+            name = opt.get('name')
+            if name:
+                cluster.add(name)
+        # daemon-reported options (which may include ceph.conf)
+        active = set()
+        ls = self.get("modified_config_options");
+        for opt in ls.get('options', {}):
+            active.add(opt)
+        return {
+            'cluster_changed': sorted(list(cluster)),
+            'active_changed': sorted(list(active)),
+        }
+
     def gather_crashinfo(self):
         crashlist = list()
-        errno, crashids, err = self.remote('crash', 'do_ls', '', '')
+        errno, crashids, err = self.remote('crash', 'ls')
         if errno:
             return ''
         for crashid in crashids.split():
@@ -182,95 +334,400 @@ class Module(MgrModule):
                 continue
             c = json.loads(crashinfo)
             del c['utsname_hostname']
+            (etype, eid) = c.get('entity_name', '').split('.')
+            m = hashlib.sha1()
+            m.update(self.salt.encode('utf-8'))
+            m.update(eid.encode('utf-8'))
+            m.update(self.salt.encode('utf-8'))
+            c['entity_name'] = etype + '.' + m.hexdigest()
             crashlist.append(c)
         return crashlist
 
-    def compile_report(self):
+    def get_active_channels(self):
+        r = []
+        if self.channel_basic:
+            r.append('basic')
+        if self.channel_crash:
+            r.append('crash')
+        if self.channel_device:
+            r.append('device')
+        return r
+
+    def gather_device_report(self):
+        try:
+            time_format = self.remote('devicehealth', 'get_time_format')
+        except:
+            return None
+        cutoff = datetime.utcnow() - timedelta(hours=self.interval * 2)
+        min_sample = cutoff.strftime(time_format)
+
+        devices = self.get('devices')['devices']
+
+        res = {}  # anon-host-id -> anon-devid -> { timestamp -> record }
+        for d in devices:
+            devid = d['devid']
+            try:
+                # this is a map of stamp -> {device info}
+                m = self.remote('devicehealth', 'get_recent_device_metrics',
+                                devid, min_sample)
+            except:
+                continue
+
+            # anonymize host id
+            try:
+                host = d['location'][0]['host']
+            except:
+                continue
+            anon_host = self.get_store('host-id/%s' % host)
+            if not anon_host:
+                anon_host = str(uuid.uuid1())
+                self.set_store('host-id/%s' % host, anon_host)
+            for dev, rep in m.items():
+                rep['host_id'] = anon_host
+
+            # anonymize device id
+            (vendor, model, serial) = devid.split('_')
+            anon_devid = self.get_store('devid-id/%s' % devid)
+            if not anon_devid:
+                anon_devid = '%s_%s_%s' % (vendor, model, uuid.uuid1())
+                self.set_store('devid-id/%s' % devid, anon_devid)
+            self.log.info('devid %s / %s, host %s / %s' % (devid, anon_devid,
+                                                           host, anon_host))
+
+            # anonymize the smartctl report itself
+            for k in ['serial_number']:
+                if k in m:
+                    m.pop(k)
+
+            if anon_host not in res:
+                res[anon_host] = {}
+            res[anon_host][anon_devid] = m
+        return res
+
+    def get_latest(self, daemon_type, daemon_name, stat):
+        data = self.get_counter(daemon_type, daemon_name, stat)[stat]
+        #self.log.error("get_latest {0} data={1}".format(stat, data))
+        if data:
+            return data[-1][1]
+        else:
+            return 0
+
+    def compile_report(self, channels=[]):
+        if not channels:
+            channels = self.get_active_channels()
         report = {
             'leaderboard': False,
             'report_version': 1,
-            'report_timestamp': datetime.utcnow().isoformat()
+            'report_timestamp': datetime.utcnow().isoformat(),
+            'report_id': self.report_id,
+            'channels': channels,
+            'channels_available': ALL_CHANNELS,
+            'license': LICENSE,
         }
 
-        if self.leaderboard:
-            report['leaderboard'] = True
-
-        for option in ['description', 'contact', 'organization']:
-            report[option] = getattr(self, option)
-
-        mon_map = self.get('mon_map')
-        osd_map = self.get('osd_map')
-        service_map = self.get('service_map')
-        fs_map = self.get('fs_map')
-        df = self.get('df')
-
-        report['report_id'] = self.report_id
-        report['created'] = self.parse_timestamp(mon_map['created']).isoformat()
-
-        report['mon'] = {
-            'count': len(mon_map['mons']),
-            'features': mon_map['features']
-        }
-
-        num_pg = 0
-        report['pools'] = list()
-        for pool in osd_map['pools']:
-            num_pg += pool['pg_num']
-            report['pools'].append(
-                {
-                    'pool': pool['pool'],
-                    'type': pool['type'],
-                    'pg_num': pool['pg_num'],
-                    'pgp_num': pool['pg_placement_num'],
-                    'size': pool['size'],
-                    'min_size': pool['min_size'],
-                    'crush_rule': pool['crush_rule']
+        if 'ident' in channels:
+            if self.leaderboard:
+                report['leaderboard'] = True
+            for option in ['description', 'contact', 'organization']:
+                report[option] = getattr(self, option)
+
+        if 'basic' in channels:
+            mon_map = self.get('mon_map')
+            osd_map = self.get('osd_map')
+            service_map = self.get('service_map')
+            fs_map = self.get('fs_map')
+            df = self.get('df')
+
+            report['created'] = self.parse_timestamp(mon_map['created']).isoformat()
+
+            # mons
+            v1_mons = 0
+            v2_mons = 0
+            ipv4_mons = 0
+            ipv6_mons = 0
+            for mon in mon_map['mons']:
+                for a in mon['public_addrs']['addrvec']:
+                    if a['type'] == 'v2':
+                        v2_mons += 1
+                    elif a['type'] == 'v1':
+                        v1_mons += 1
+                    if a['addr'].startswith('['):
+                        ipv6_mons += 1
+                    else:
+                        ipv4_mons += 1
+            report['mon'] = {
+                'count': len(mon_map['mons']),
+                'features': mon_map['features'],
+                'min_mon_release': mon_map['min_mon_release'],
+                'v1_addr_mons': v1_mons,
+                'v2_addr_mons': v2_mons,
+                'ipv4_addr_mons': ipv4_mons,
+                'ipv6_addr_mons': ipv6_mons,
+            }
+
+            report['config'] = self.gather_configs()
+
+            # pools
+            report['rbd'] = {
+                'num_pools': 0,
+                'num_images_by_pool': [],
+                'mirroring_by_pool': [],
+            }
+            num_pg = 0
+            report['pools'] = list()
+            for pool in osd_map['pools']:
+                num_pg += pool['pg_num']
+                ec_profile = {}
+                if pool['erasure_code_profile']:
+                    orig = osd_map['erasure_code_profiles'].get(
+                        pool['erasure_code_profile'], {})
+                    ec_profile = {
+                        k: orig[k] for k in orig.keys()
+                        if k in ['k', 'm', 'plugin', 'technique',
+                                 'crush-failure-domain', 'l']
+                    }
+                report['pools'].append(
+                    {
+                        'pool': pool['pool'],
+                        'type': pool['type'],
+                        'pg_num': pool['pg_num'],
+                        'pgp_num': pool['pg_placement_num'],
+                        'size': pool['size'],
+                        'min_size': pool['min_size'],
+                        'pg_autoscale_mode': pool['pg_autoscale_mode'],
+                        'target_max_bytes': pool['target_max_bytes'],
+                        'target_max_objects': pool['target_max_objects'],
+                        'type': ['', 'replicated', '', 'erasure'][pool['type']],
+                        'erasure_code_profile': ec_profile,
+                        'cache_mode': pool['cache_mode'],
+                    }
+                )
+                if 'rbd' in pool['application_metadata']:
+                    report['rbd']['num_pools'] += 1
+                    ioctx = self.rados.open_ioctx(pool['pool_name'])
+                    report['rbd']['num_images_by_pool'].append(
+                        sum(1 for _ in rbd.RBD().list2(ioctx)))
+                    report['rbd']['mirroring_by_pool'].append(
+                        rbd.RBD().mirror_mode_get(ioctx) != rbd.RBD_MIRROR_MODE_DISABLED)
+
+            # osds
+            cluster_network = False
+            for osd in osd_map['osds']:
+                if osd['up'] and not cluster_network:
+                    front_ip = osd['public_addrs']['addrvec'][0]['addr'].split(':')[0]
+                    back_ip = osd['public_addrs']['addrvec'][0]['addr'].split(':')[0]
+                    if front_ip != back_ip:
+                        cluster_network = True
+            report['osd'] = {
+                'count': len(osd_map['osds']),
+                'require_osd_release': osd_map['require_osd_release'],
+                'require_min_compat_client': osd_map['require_min_compat_client'],
+                'cluster_network': cluster_network,
+            }
+
+            # crush
+            report['crush'] = self.gather_crush_info()
+
+            # cephfs
+            report['fs'] = {
+                'count': len(fs_map['filesystems']),
+                'feature_flags': fs_map['feature_flags'],
+                'num_standby_mds': len(fs_map['standbys']),
+                'filesystems': [],
+            }
+            num_mds = len(fs_map['standbys'])
+            for fsm in fs_map['filesystems']:
+                fs = fsm['mdsmap']
+                num_sessions = 0
+                cached_ino = 0
+                cached_dn = 0
+                cached_cap = 0
+                subtrees = 0
+                rfiles = 0
+                rbytes = 0
+                rsnaps = 0
+                for gid, mds in fs['info'].items():
+                    num_sessions += self.get_latest('mds', mds['name'],
+                                                    'mds_sessions.session_count')
+                    cached_ino += self.get_latest('mds', mds['name'],
+                                                  'mds_mem.ino')
+                    cached_dn += self.get_latest('mds', mds['name'],
+                                                 'mds_mem.dn')
+                    cached_cap += self.get_latest('mds', mds['name'],
+                                                  'mds_mem.cap')
+                    subtrees += self.get_latest('mds', mds['name'],
+                                                'mds.subtrees')
+                    if mds['rank'] == 0:
+                        rfiles = self.get_latest('mds', mds['name'],
+                                                 'mds.root_rfiles')
+                        rbytes = self.get_latest('mds', mds['name'],
+                                                 'mds.root_rbytes')
+                        rsnaps = self.get_latest('mds', mds['name'],
+                                                 'mds.root_rsnaps')
+                report['fs']['filesystems'].append({
+                    'max_mds': fs['max_mds'],
+                    'ever_allowed_features': fs['ever_allowed_features'],
+                    'explicitly_allowed_features': fs['explicitly_allowed_features'],
+                    'num_in': len(fs['in']),
+                    'num_up': len(fs['up']),
+                    'num_standby_replay': len(
+                        [mds for gid, mds in fs['info'].items()
+                         if mds['state'] == 'up:standby-replay']),
+                    'num_mds': len(fs['info']),
+                    'num_sessions': num_sessions,
+                    'cached_inos': cached_ino,
+                    'cached_dns': cached_dn,
+                    'cached_caps': cached_cap,
+                    'cached_subtrees': subtrees,
+                    'balancer_enabled': len(fs['balancer']) > 0,
+                    'num_data_pools': len(fs['data_pools']),
+                    'standby_count_wanted': fs['standby_count_wanted'],
+                    'approx_ctime': fs['created'][0:7],
+                    'files': rfiles,
+                    'bytes': rbytes,
+                    'snaps': rsnaps,
+                })
+                num_mds += len(fs['info'])
+            report['fs']['total_num_mds'] = num_mds
+
+            # daemons
+            report['metadata'] = dict()
+            report['metadata']['osd'] = self.gather_osd_metadata(osd_map)
+            report['metadata']['mon'] = self.gather_mon_metadata(mon_map)
+
+            # host counts
+            servers = self.list_servers()
+            self.log.debug('servers %s' % servers)
+            report['hosts'] = {
+                'num': len([h for h in servers if h['hostname']]),
+            }
+            for t in ['mon', 'mds', 'osd', 'mgr']:
+                report['hosts']['num_with_' + t] = len(
+                    [h for h in servers
+                     if len([s for s in h['services'] if s['type'] == t])]
+                )
+
+            report['usage'] = {
+                'pools': len(df['pools']),
+                'pg_num:': num_pg,
+                'total_used_bytes': df['stats']['total_used_bytes'],
+                'total_bytes': df['stats']['total_bytes'],
+                'total_avail_bytes': df['stats']['total_avail_bytes']
+            }
+
+            report['services'] = defaultdict(int)
+            for key, value in service_map['services'].items():
+                report['services'][key] += 1
+                if key == 'rgw':
+                    report['rgw'] = {
+                        'count': 0,
+                    }
+                    zones = set()
+                    realms = set()
+                    zonegroups = set()
+                    frontends = set()
+                    d = value.get('daemons', dict())
+
+                    for k,v in d.items():
+                        if k == 'summary' and v:
+                            report['rgw'][k] = v
+                        elif isinstance(v, dict) and 'metadata' in v:
+                            report['rgw']['count'] += 1
+                            zones.add(v['metadata']['zone_id'])
+                            zonegroups.add(v['metadata']['zonegroup_id'])
+                            frontends.add(v['metadata']['frontend_type#0'])
+
+                            # we could actually iterate over all the keys of
+                            # the dict and check for how many frontends there
+                            # are, but it is unlikely that one would be running
+                            # more than 2 supported ones
+                            f2 = v['metadata'].get('frontend_type#1', None)
+                            if f2:
+                                frontends.add(f2)
+
+                    report['rgw']['zones'] = len(zones)
+                    report['rgw']['zonegroups'] = len(zonegroups)
+                    report['rgw']['frontends'] = list(frontends)  # sets aren't json-serializable
+
+            try:
+                report['balancer'] = self.remote('balancer', 'gather_telemetry')
+            except ImportError:
+                report['balancer'] = {
+                    'active': False
                 }
-            )
-
-        report['osd'] = {
-            'count': len(osd_map['osds']),
-            'require_osd_release': osd_map['require_osd_release'],
-            'require_min_compat_client': osd_map['require_min_compat_client']
-        }
 
-        report['fs'] = {
-            'count': len(fs_map['filesystems'])
-        }
-
-        report['metadata'] = dict()
-        report['metadata']['osd'] = self.gather_osd_metadata(osd_map)
-        report['metadata']['mon'] = self.gather_mon_metadata(mon_map)
-
-        report['usage'] = {
-            'pools': len(df['pools']),
-            'pg_num:': num_pg,
-            'total_used_bytes': df['stats']['total_used_bytes'],
-            'total_bytes': df['stats']['total_bytes'],
-            'total_avail_bytes': df['stats']['total_avail_bytes']
-        }
+        if 'crash' in channels:
+            report['crashes'] = self.gather_crashinfo()
 
-        report['services'] = defaultdict(int)
-        for key, value in service_map['services'].items():
-            report['services'][key] += 1
-
-        report['crashes'] = self.gather_crashinfo()
+        # NOTE: We do not include the 'device' channel in this report; it is
+        # sent to a different endpoint.
 
         return report
 
-    def send(self, report):
-        self.log.info('Upload report to: %s', self.url)
+    def send(self, report, endpoint=None):
+        if not endpoint:
+            endpoint = ['ceph', 'device']
+        failed = []
+        success = []
         proxies = dict()
+        self.log.debug('Send endpoints %s' % endpoint)
         if self.proxy:
-            self.log.info('Using HTTP(S) proxy: %s', self.proxy)
+            self.log.info('Send using HTTP(S) proxy: %s', self.proxy)
             proxies['http'] = self.proxy
             proxies['https'] = self.proxy
-
-        resp = requests.put(url=self.url, json=report, proxies=proxies)
-        if not resp.ok:
-            self.log.error("Report send failed: %d %s %s" %
-                           (resp.status_code, resp.reason, resp.text))
-        return resp
+        for e in endpoint:
+            if e == 'ceph':
+                self.log.info('Sending ceph report to: %s', self.url)
+                resp = requests.put(url=self.url, json=report, proxies=proxies)
+                if not resp.ok:
+                    self.log.error("Report send failed: %d %s %s" %
+                                   (resp.status_code, resp.reason, resp.text))
+                    failed.append('Failed to send report to %s: %d %s %s' % (
+                        self.url,
+                        resp.status_code,
+                        resp.reason,
+                        resp.text
+                    ))
+                else:
+                    now = int(time.time())
+                    self.last_upload = now
+                    self.set_store('last_upload', str(now))
+                    success.append('Ceph report sent to {0}'.format(self.url))
+                    self.log.info('Sent report to {0}'.format(self.url))
+            elif e == 'device':
+                if 'device' in self.get_active_channels():
+                    self.log.info('hi')
+                    self.log.info('Sending device report to: %s',
+                                  self.device_url)
+                    devices = self.gather_device_report()
+                    num_devs = 0
+                    num_hosts = 0
+                    for host, ls in devices.items():
+                        self.log.debug('host %s devices %s' % (host, ls))
+                        if not len(ls):
+                            continue
+                        resp = requests.put(url=self.device_url, json=ls,
+                                            proxies=proxies)
+                        if not resp.ok:
+                            self.log.error(
+                                "Device report failed: %d %s %s" %
+                                (resp.status_code, resp.reason, resp.text))
+                            failed.append(
+                                'Failed to send devices to %s: %d %s %s' % (
+                                    self.device_url,
+                                    resp.status_code,
+                                    resp.reason,
+                                    resp.text
+                                ))
+                        else:
+                            num_devs += len(ls)
+                            num_hosts += 1
+                    if num_devs:
+                        success.append('Reported %d devices across %d hosts' % (
+                            num_devs, len(devices)))
+        if failed:
+            return 1, '', '\n'.join(success + failed)
+        return 0, '', '\n'.join(success)
 
     def handle_command(self, inbuf, command):
         if command['prefix'] == 'telemetry status':
@@ -279,27 +736,23 @@ class Module(MgrModule):
                 r[opt['name']] = getattr(self, opt['name'])
             return 0, json.dumps(r, indent=4), ''
         elif command['prefix'] == 'telemetry on':
+            if command.get('license') != LICENSE:
+                return -errno.EPERM, '', "Telemetry data is licensed under the " + LICENSE_NAME + " (" + LICENSE_URL + ").\nTo enable, add '--license " + LICENSE + "' to the 'ceph telemetry on' command."
             self.set_module_option('enabled', True)
+            self.set_module_option('last_opt_revision', REVISION)
             return 0, '', ''
         elif command['prefix'] == 'telemetry off':
             self.set_module_option('enabled', False)
+            self.set_module_option('last_opt_revision', REVISION)
             return 0, '', ''
         elif command['prefix'] == 'telemetry send':
             self.last_report = self.compile_report()
-            resp = self.send(self.last_report)
-            if resp.ok:
-                return 0, 'Report sent to {0}'.format(self.url), ''
-            return 1, '', 'Failed to send report to %s: %d %s %s' % (
-                self.url,
-                resp.status_code,
-                resp.reason,
-                resp.text
-            )
+            return self.send(self.last_report, command.get('endpoint'))
 
         elif command['prefix'] == 'telemetry show':
-            report = self.last_report
-            if not report:
-                report = self.compile_report()
+            report = self.compile_report(
+                channels=command.get('channels', None)
+            )
             return 0, json.dumps(report, indent=4), ''
         else:
             return (-errno.EINVAL, '',
@@ -317,6 +770,18 @@ class Module(MgrModule):
         self.run = False
         self.event.set()
 
+    def refresh_health_checks(self):
+        health_checks = {}
+        if self.enabled and self.last_opt_revision < LAST_REVISION_RE_OPT_IN:
+            health_checks['TELEMETRY_CHANGED'] = {
+                'severity': 'warning',
+                'summary': 'Telemetry requires re-opt-in',
+                'detail': [
+                    'telemetry report includes new information; must re-opt-in (or out)'
+                ]
+            }
+        self.set_health_checks(health_checks)
+
     def serve(self):
         self.load()
         self.config_notify()
@@ -326,8 +791,16 @@ class Module(MgrModule):
         self.event.wait(10)
 
         while self.run:
+            self.event.clear()
+
+            self.refresh_health_checks()
+
+            if self.last_opt_revision < LAST_REVISION_RE_OPT_IN:
+                self.log.debug('Not sending report until user re-opts-in')
+                self.event.wait(1800)
+                continue
             if not self.enabled:
-                self.log.info('Not sending report until configured to do so')
+                self.log.debug('Not sending report until configured to do so')
                 self.event.wait(1800)
                 continue
 
@@ -342,17 +815,9 @@ class Module(MgrModule):
                 except:
                     self.log.exception('Exception while compiling report:')
 
-                try:
-                    resp = self.send(self.last_report)
-                    # self.send logs on failure; only update last_upload
-                    # if we succeed
-                    if resp.ok:
-                        self.last_upload = now
-                        self.set_store('last_upload', str(now))
-                except:
-                    self.log.exception('Exception while sending report:')
+                self.send(self.last_report)
             else:
-                self.log.info('Interval for sending new report has not expired')
+                self.log.debug('Interval for sending new report has not expired')
 
             sleep = 3600
             self.log.debug('Sleeping for %d seconds', sleep)
index 8a7429aa6497dcdf19e141665930f27a7d692c61..a76065cbab953da9f724c6ce538faf2df547f170 100644 (file)
@@ -1,3 +1,4 @@
+import sys
 import time
 import logging
 import threading
@@ -10,19 +11,39 @@ class PurgeQueueBase(object):
     """
     Base class for implementing purge queue strategies.
     """
+
+    # this is "not" configurable and there is no need for it to be
+    # configurable. if a purge thread encounters an exception, we
+    # retry, till it hits this many consecutive exceptions after
+    # which a warning is sent to `ceph status`.
+    MAX_RETRIES_ON_EXCEPTION = 10
+
     class PurgeThread(threading.Thread):
-        def __init__(self, name, purge_fn):
+        def __init__(self, volume_client, name, purge_fn):
+            self.vc = volume_client
             self.purge_fn = purge_fn
             # event object to cancel ongoing purge
             self.cancel_event = threading.Event()
             threading.Thread.__init__(self, name=name)
 
         def run(self):
-            try:
-                self.purge_fn()
-            except Exception as e:
-                trace = "".join(traceback.format_exception(None, e, e.__traceback__))
-                log.error("purge queue thread encountered fatal error:\n"+trace)
+            retries = 0
+            thread_name = threading.currentThread().getName()
+            while retries < PurgeQueueBase.MAX_RETRIES_ON_EXCEPTION:
+                try:
+                    self.purge_fn()
+                    retries = 0
+                except Exception:
+                    retries += 1
+                    log.warning("purge thread [{0}] encountered fatal error: (attempt#" \
+                                " {1}/{2})".format(thread_name, retries,
+                                                   PurgeQueueBase.MAX_RETRIES_ON_EXCEPTION))
+                    exc_type, exc_value, exc_traceback = sys.exc_info()
+                    log.warning("traceback: {0}".format("".join(
+                        traceback.format_exception(exc_type, exc_value, exc_traceback))))
+                    time.sleep(1)
+            log.error("purge thread [{0}] reached exception limit, bailing out...".format(thread_name))
+            self.vc.cluster_log("purge thread {0} bailing out due to exception".format(thread_name))
 
         def cancel_job(self):
             self.cancel_event.set()
@@ -135,7 +156,7 @@ class ThreadPoolPurgeQueueMixin(PurgeQueueBase):
         self.threads = []
         for i in range(tp_size):
             self.threads.append(
-                PurgeQueueBase.PurgeThread(name="purgejob.{}".format(i), purge_fn=self.run))
+                PurgeQueueBase.PurgeThread(volume_client, name="purgejob.{}".format(i), purge_fn=self.run))
             self.threads[-1].start()
 
     def pick_purge_dir_from_volume(self):
index 60fb6d06af00921861ec3dbe425c6fb3052c685e..6c7df559129671f24b1dcd021c086d64edacc1f0 100644 (file)
@@ -90,13 +90,25 @@ class SubvolumeSpec(object):
         """
         return the subvolume snapshot path for a given snapshot name
         """
-        return os.path.join(self.subvolume_path, snapdir, snapname)
+        return os.path.join(self.subvolume_path, snapdir.encode('utf-8'), snapname.encode('utf-8'))
+
+    def make_subvol_snapdir_path(self, snapdir):
+        """
+        return the subvolume snapdir path
+        """
+        return os.path.join(self.subvolume_path, snapdir.encode('utf-8'))
 
     def make_group_snap_path(self, snapdir, snapname):
         """
         return the group snapshot path for a given snapshot name
         """
-        return os.path.join(self.group_path, snapdir, snapname)
+        return os.path.join(self.group_path, snapdir.encode('utf-8'), snapname.encode('utf-8'))
+
+    def make_group_snapdir_path(self, snapdir):
+        """
+        return the group's snapdir path
+        """
+        return os.path.join(self.group_path, snapdir.encode('utf-8'))
 
     def __str__(self):
         return "{0}/{1}".format(self.groupid, self.subvolumeid)
index 6d0232c56e1febdfbe645514a9d539a1af710658..8f3c2b1ab5ef4c50428d92b0e9b7ab155acac160 100644 (file)
@@ -75,25 +75,42 @@ class SubVolume(object):
 
         self.fs.mkdirs(subvolpath, mode)
 
-        if size is not None:
-            self.fs.setxattr(subvolpath, 'ceph.quota.max_bytes', str(size).encode('utf-8'), 0)
-
-        if pool:
-            self.fs.setxattr(subvolpath, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
-
-        xattr_key = xattr_val = None
-        if namespace_isolated:
-            # enforce security isolation, use separate namespace for this subvolume
-            xattr_key = 'ceph.dir.layout.pool_namespace'
-            xattr_val = spec.fs_namespace
-        elif not pool:
-            # If subvolume's namespace layout is not set, then the subvolume's pool
-            # layout remains unset and will undesirably change with ancestor's
-            # pool layout changes.
-            xattr_key = 'ceph.dir.layout.pool'
-            xattr_val = self._get_ancestor_xattr(subvolpath, "ceph.dir.layout.pool")
-        # TODO: handle error...
-        self.fs.setxattr(subvolpath, xattr_key, xattr_val.encode('utf-8'), 0)
+        try:
+            if size is not None:
+                try:
+                    self.fs.setxattr(subvolpath, 'ceph.quota.max_bytes', str(size).encode('utf-8'), 0)
+                except cephfs.InvalidValue as e:
+                    raise VolumeException(-errno.EINVAL, "Invalid size: '{0}'".format(size))
+            if pool:
+                try:
+                    self.fs.setxattr(subvolpath, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
+                except cephfs.InvalidValue:
+                    raise VolumeException(-errno.EINVAL,
+                                          "Invalid pool layout '{0}'. It must be a valid data pool".format(pool))
+
+            xattr_key = xattr_val = None
+            if namespace_isolated:
+                # enforce security isolation, use separate namespace for this subvolume
+                xattr_key = 'ceph.dir.layout.pool_namespace'
+                xattr_val = spec.fs_namespace
+            elif not pool:
+                # If subvolume's namespace layout is not set, then the subvolume's pool
+                # layout remains unset and will undesirably change with ancestor's
+                # pool layout changes.
+                xattr_key = 'ceph.dir.layout.pool'
+                xattr_val = self._get_ancestor_xattr(subvolpath, "ceph.dir.layout.pool")
+            # TODO: handle error...
+            self.fs.setxattr(subvolpath, xattr_key, xattr_val.encode('utf-8'), 0)
+        except Exception as e:
+            try:
+                # cleanup subvol path on best effort basis
+                log.debug("cleaning up subvolume with path: {0}".format(subvolpath))
+                self.fs.rmdir(subvolpath)
+            except Exception:
+                log.debug("failed to clean up subvolume with path: {0}".format(subvolpath))
+                pass
+            finally:
+                raise e
 
     def remove_subvolume(self, spec, force):
         """
@@ -172,14 +189,50 @@ class SubVolume(object):
             raise VolumeException(-e.args[0], e.args[1])
         return path
 
+    def get_dir_entries(self, path):
+        """
+        Get the directory names in a given path
+        :param path: the given path
+        :return: the list of directory names
+        """
+        dirs = []
+        try:
+            with self.fs.opendir(path) as dir_handle:
+                d = self.fs.readdir(dir_handle)
+                while d:
+                    if (d.d_name not in (b".", b"..")) and d.is_dir():
+                        dirs.append(d.d_name)
+                    d = self.fs.readdir(dir_handle)
+        except cephfs.ObjectNotFound:
+            # When the given path is not found, we just return an empty list
+            return []
+        except cephfs.Error as e:
+            raise VolumeException(-e.args[0], e.args[1])
+        return dirs
+
     ### group operations
 
     def create_group(self, spec, mode=0o755, pool=None):
         path = spec.group_path
         self.fs.mkdirs(path, mode)
-        if not pool:
-            pool = self._get_ancestor_xattr(path, "ceph.dir.layout.pool")
-        self.fs.setxattr(path, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
+        try:
+            if not pool:
+                pool = self._get_ancestor_xattr(path, "ceph.dir.layout.pool")
+            try:
+                self.fs.setxattr(path, 'ceph.dir.layout.pool', pool.encode('utf-8'), 0)
+            except cephfs.InvalidValue:
+                raise VolumeException(-errno.EINVAL,
+                                      "Invalid pool layout '{0}'. It must be a valid data pool".format(pool))
+        except Exception as e:
+            try:
+                # cleanup group path on best effort basis
+                log.debug("cleaning up subvolumegroup with path: {0}".format(path))
+                self.fs.rmdir(path)
+            except Exception:
+                log.debug("failed to clean up subvolumegroup with path: {0}".format(path))
+                pass
+            finally:
+                raise e
 
     def remove_group(self, spec, force):
         path = spec.group_path
index 8e32a233b4f786c3f9c23b25136d3e8cd3241c82..83ba46ff4a29ffcffcf2f38e2361ab20259479b6 100644 (file)
@@ -175,6 +175,14 @@ class VolumeClient(object):
         for fs in fs_map['filesystems']:
             self.purge_queue.queue_purge_job(fs['mdsmap']['fs_name'])
 
+    def cluster_log(self, msg, lvl=None):
+        """
+        log to cluster log with default log level as WARN.
+        """
+        if not lvl:
+            lvl = self.mgr.CLUSTER_LOG_PRIO_WARN
+        self.mgr.cluster_log("cluster", lvl, msg)
+
     def gen_pool_names(self, volname):
         """
         return metadata and data pool name (from a filesystem/volume name) as a tuple
@@ -222,11 +230,18 @@ class VolumeClient(object):
                    'data': data_pool}
         return self.mgr.mon_command(command)
 
-    def remove_filesystem(self, fs_name):
+    def remove_filesystem(self, fs_name, confirm):
+        if confirm != "--yes-i-really-mean-it":
+            return -errno.EPERM, "", "WARNING: this will *PERMANENTLY DESTROY* all data " \
+                "stored in the filesystem '{0}'. If you are *ABSOLUTELY CERTAIN* " \
+                "that is what you want, re-issue the command followed by " \
+                "--yes-i-really-mean-it.".format(fs_name)
+
         command = {'prefix': 'fs fail', 'fs_name': fs_name}
         r, outb, outs = self.mgr.mon_command(command)
         if r != 0:
             return r, outb, outs
+
         command = {'prefix': 'fs rm', 'fs_name': fs_name, 'yes_i_really_mean_it': True}
         return self.mgr.mon_command(command)
 
@@ -248,7 +263,7 @@ class VolumeClient(object):
 
     ### volume operations -- create, rm, ls
 
-    def create_volume(self, volname, size=None):
+    def create_volume(self, volname):
         """
         create volume  (pool, filesystem and mds)
         """
@@ -268,7 +283,7 @@ class VolumeClient(object):
         # create mds
         return self.create_mds(volname)
 
-    def delete_volume(self, volname):
+    def delete_volume(self, volname, confirm):
         """
         delete the given module (tear down mds, remove filesystem)
         """
@@ -290,11 +305,13 @@ class VolumeClient(object):
         # In case orchestrator didn't tear down MDS daemons cleanly, or
         # there was no orchestrator, we force the daemons down.
         if self.volume_exists(volname):
-            r, outb, outs = self.remove_filesystem(volname)
+            r, outb, outs = self.remove_filesystem(volname, confirm)
             if r != 0:
                 return r, outb, outs
         else:
-            log.warning("Filesystem already gone for volume '{0}'".format(volname))
+            err = "Filesystem not found for volume '{0}'".format(volname)
+            log.warning(err)
+            return -errno.ENOENT, "", err
         metadata_pool, data_pool = self.gen_pool_names(volname)
         r, outb, outs = self.remove_pool(metadata_pool)
         if r != 0:
@@ -351,6 +368,16 @@ class VolumeClient(object):
             return result
         return conn_wrapper
 
+    def nametojson(self, names):
+        """
+        convert the list of names to json
+        """
+
+        namedict = []
+        for i in range(len(names)):
+            namedict.append({'name': names[i].decode('utf-8')})
+        return json.dumps(namedict, indent=2)
+
     ### subvolume operations
 
     @connection_pool_wrap
@@ -412,7 +439,29 @@ class VolumeClient(object):
                 if not path:
                     raise VolumeException(
                         -errno.ENOENT, "Subvolume '{0}' not found".format(subvolname))
-                ret = 0, path, ""
+                ret = 0, path.decode("utf-8"), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
+    @connection_pool_wrap
+    def list_subvolumes(self, fs_handle, **kwargs):
+        ret        = 0, "", ""
+        groupname  = kwargs['group_name']
+
+        try:
+            with SubVolume(self.mgr, fs_handle) as sv:
+                spec = SubvolumeSpec(None, groupname)
+                if not self.group_exists(sv, spec):
+                    raise VolumeException(
+                        -errno.ENOENT, "Subvolume group '{0}' not found".format(groupname))
+                path = sv.get_group_path(spec)
+                # When default subvolume group is not yet created we just return an empty list.
+                if path is None:
+                    ret = 0, '[]', ""
+                else:
+                    subvolumes = sv.get_dir_entries(path)
+                    ret = 0, self.nametojson(subvolumes), ""
         except VolumeException as ve:
             ret = self.volume_exception_to_retval(ve)
         return ret
@@ -469,6 +518,31 @@ class VolumeClient(object):
             ret = self.volume_exception_to_retval(ve)
         return ret
 
+    @connection_pool_wrap
+    def list_subvolume_snapshots(self, fs_handle, **kwargs):
+        ret        = 0, "", ""
+        subvolname = kwargs['sub_name']
+        groupname  = kwargs['group_name']
+
+        try:
+            with SubVolume(self.mgr, fs_handle) as sv:
+                spec = SubvolumeSpec(subvolname, groupname)
+                if not self.group_exists(sv, spec):
+                    raise VolumeException(
+                        -errno.ENOENT, "Subvolume group '{0}' not found".format(groupname))
+
+                if sv.get_subvolume_path(spec) == None:
+                    raise VolumeException(-errno.ENOENT,
+                                          "Subvolume '{0}' not found".format(subvolname))
+
+                path = spec.make_subvol_snapdir_path(self.mgr.rados.conf_get('client_snapdir'))
+                snapshots = sv.get_dir_entries(path)
+                ret = 0, self.nametojson(snapshots), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
+
     ### group operations
 
     @connection_pool_wrap
@@ -513,10 +587,22 @@ class VolumeClient(object):
                 if path is None:
                     raise VolumeException(
                         -errno.ENOENT, "Subvolume group '{0}' not found".format(groupname))
-                return 0, path, ""
+                return 0, path.decode("utf-8"), ""
         except VolumeException as ve:
             return self.volume_exception_to_retval(ve)
 
+    @connection_pool_wrap
+    def list_subvolume_groups(self, fs_handle, **kwargs):
+        ret = 0, "", ""
+
+        try:
+            with SubVolume(self.mgr, fs_handle) as sv:
+                subvolumegroups = sv.get_dir_entries(SubvolumeSpec.DEFAULT_SUBVOL_PREFIX)
+                ret = 0, self.nametojson(subvolumegroups), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     ### group snapshot
 
     @connection_pool_wrap
@@ -557,6 +643,25 @@ class VolumeClient(object):
             ret = self.volume_exception_to_retval(ve)
         return ret
 
+    @connection_pool_wrap
+    def list_subvolume_group_snapshots(self, fs_handle, **kwargs):
+        ret        = 0, "", ""
+        groupname  = kwargs['group_name']
+
+        try:
+            with SubVolume(self.mgr, fs_handle) as sv:
+                spec = SubvolumeSpec(None, groupname)
+                if not self.group_exists(sv, spec):
+                    raise VolumeException(
+                        -errno.ENOENT, "Subvolume group '{0}' not found".format(groupname))
+
+                path = spec.make_group_snapdir_path(self.mgr.rados.conf_get('client_snapdir'))
+                snapshots = sv.get_dir_entries(path)
+                ret = 0, self.nametojson(snapshots), ""
+        except VolumeException as ve:
+            ret = self.volume_exception_to_retval(ve)
+        return ret
+
     @connection_pool_wrap
     def get_subvolume_trash_entry(self, fs_handle, **kwargs):
         ret = None
index 5d63fc56d216491883b0188ac0618c3975986a99..0e710cfd5fc46c9a2d883dafdfc360ea8a2ccdb1 100644 (file)
@@ -31,17 +31,23 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
         },
         {
             'cmd': 'fs volume create '
-                   'name=name,type=CephString '
-                   'name=size,type=CephString,req=false ',
+                   'name=name,type=CephString ',
             'desc': "Create a CephFS volume",
             'perm': 'rw'
         },
         {
             'cmd': 'fs volume rm '
-                   'name=vol_name,type=CephString',
-            'desc': "Delete a CephFS volume",
+                   'name=vol_name,type=CephString '
+                   'name=yes-i-really-mean-it,type=CephString,req=false ',
+            'desc': "Delete a FS volume by passing --yes-i-really-mean-it flag",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolumegroup ls '
+            'name=vol_name,type=CephString ',
+            'desc': "List subvolumegroups",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolumegroup create '
                    'name=vol_name,type=CephString '
@@ -60,6 +66,13 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
             'desc': "Delete a CephFS subvolume group in a volume",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolume ls '
+                   'name=vol_name,type=CephString '
+                   'name=group_name,type=CephString,req=false ',
+            'desc': "List subvolumes",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolume create '
                    'name=vol_name,type=CephString '
@@ -99,6 +112,13 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                     "and optionally, in a specific subvolume group",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolumegroup snapshot ls '
+                   'name=vol_name,type=CephString '
+                   'name=group_name,type=CephString ',
+            'desc': "List subvolumegroup snapshots",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolumegroup snapshot create '
                    'name=vol_name,type=CephString '
@@ -116,6 +136,14 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                    'desc': "Delete a snapshot of a CephFS subvolume group in a volume",
             'perm': 'rw'
         },
+        {
+            'cmd': 'fs subvolume snapshot ls '
+                   'name=vol_name,type=CephString '
+                   'name=sub_name,type=CephString '
+                   'name=group_name,type=CephString,req=false ',
+            'desc': "List subvolume snapshots",
+            'perm': 'r'
+        },
         {
             'cmd': 'fs subvolume snapshot create '
                    'name=vol_name,type=CephString '
@@ -191,13 +219,12 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
         # TODO: validate name against any rules for pool/fs names
         # (...are there any?)
         vol_id = cmd['name']
-        size = cmd.get('size', None)
-
-        return self.vc.create_volume(vol_id, size)
+        return self.vc.create_volume(vol_id)
 
     def _cmd_fs_volume_rm(self, inbuf, cmd):
         vol_name = cmd['vol_name']
-        return self.vc.delete_volume(vol_name)
+        confirm = cmd.get('yes-i-really-mean-it', None)
+        return self.vc.delete_volume(vol_name, confirm)
 
     def _cmd_fs_volume_ls(self, inbuf, cmd):
         return self.vc.list_volumes()
@@ -218,6 +245,10 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                               group_name=cmd['group_name'],
                                               force=cmd.get('force', False))
 
+    def _cmd_fs_subvolumegroup_ls(self, inbuf, cmd):
+        vol_name = cmd['vol_name']
+        return self.vc.list_subvolume_groups(None, vol_name=cmd['vol_name'])
+
     def _cmd_fs_subvolume_create(self, inbuf, cmd):
         """
         :return: a 3-tuple of return code(int), empty string(str), error message (str)
@@ -238,6 +269,10 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                         group_name=cmd.get('group_name', None),
                                         force=cmd.get('force', False))
 
+    def _cmd_fs_subvolume_ls(self, inbuf, cmd):
+        return self.vc.list_subvolumes(None, vol_name=cmd['vol_name'],
+                                       group_name=cmd.get('group_name', None))
+
     def _cmd_fs_subvolumegroup_getpath(self, inbuf, cmd):
         return self.vc.getpath_subvolume_group(
                 None, vol_name=cmd['vol_name'], group_name=cmd['group_name'])
@@ -258,6 +293,10 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                                        snap_name=cmd['snap_name'],
                                                        force=cmd.get('force', False))
 
+    def _cmd_fs_subvolumegroup_snapshot_ls(self, inbuf, cmd):
+        return self.vc.list_subvolume_group_snapshots(None, vol_name=cmd['vol_name'],
+                                                      group_name=cmd['group_name'])
+
     def _cmd_fs_subvolume_snapshot_create(self, inbuf, cmd):
         return self.vc.create_subvolume_snapshot(None, vol_name=cmd['vol_name'],
                                                  sub_name=cmd['sub_name'],
@@ -270,3 +309,8 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
                                                  snap_name=cmd['snap_name'],
                                                  group_name=cmd.get('group_name', None),
                                                  force=cmd.get('force', False))
+
+    def _cmd_fs_subvolume_snapshot_ls(self, inbuf, cmd):
+        return self.vc.list_subvolume_snapshots(None, vol_name=cmd['vol_name'],
+                                                sub_name=cmd['sub_name'],
+                                                group_name=cmd.get('group_name', None))
index 6b428dc0acca57016f2b06b51ac1aea22ab0b241..485e239b0011e4f73901904d9017e5b398af0640 100644 (file)
@@ -37,7 +37,7 @@ class ZabbixSender(object):
         proc = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
 
         for key, value in data.items():
-            proc.stdin.write('{0} ceph.{1} {2}\n'.format(hostname, key, value))
+            proc.stdin.write('{0} ceph.{1} {2}\n'.format(hostname, key, value).encode('utf-8'))
 
         stdout, stderr = proc.communicate()
         if proc.returncode != 0:
@@ -137,7 +137,7 @@ class Module(MgrModule):
 
         pg_states = ['active', 'peering', 'clean', 'scrubbing', 'undersized',
                      'backfilling', 'recovering', 'degraded', 'inconsistent',
-                     'remapped', 'backfill_toofull', 'wait_backfill',
+                     'remapped', 'backfill_toofull', 'backfill_wait',
                      'recovery_wait']
 
         for state in pg_states:
index 1ce76605ac07ffaf2fce7eeac9995c76664d5e81..d75d912e959ff9119d1f79a02d9edf6fd2c750fc 100644 (file)
                     <logtimefmt/>
                 </item>
                 <item>
-                    <name>Number of Placement Groups in wait_backfill state</name>
+                    <name>Number of Placement Groups in backfill_wait state</name>
                     <type>2</type>
                     <snmp_community/>
                     <multiplier>0</multiplier>
                     <snmp_oid/>
-                    <key>ceph.num_pg_wait_backfill</key>
+                    <key>ceph.num_pg_backfill_wait</key>
                     <delay>0</delay>
                     <history>90</history>
                     <trends>365</trends>
                     <publickey/>
                     <privatekey/>
                     <port/>
-                    <description>Total number of Placement Groups in wait_backfill state</description>
+                    <description>Total number of Placement Groups in backfill_wait state</description>
                     <inventory_link>0</inventory_link>
                     <applications>
                         <application>
index 40064441e4e8bb8ab5244cfedecdb1d42ee24d4d..d25a50dd4d00fdb36c3656a397efd2c307884b9c 100644 (file)
@@ -3365,12 +3365,14 @@ returned %d, but should return zero on success." % (self.name, ret))
             raise Error("Rados(): keys and values must have the same number of items")
 
         keys = cstr_list(keys, 'keys')
+        values = cstr_list(values, 'values')
+        lens = [len(v) for v in values]
         cdef:
             WriteOp _write_op = write_op
             size_t key_num = len(keys)
             char **_keys = to_bytes_array(keys)
             char **_values = to_bytes_array(values)
-            size_t *_lens = to_csize_t_array([len(v) for v in values])
+            size_t *_lens = to_csize_t_array(lens)
 
         try:
             with nogil:
index fa9f997492716a6afcd4cd5f1cdfae26c6a6674e..f7685d60e06c9d103d4ce2b069e3f9a0ea333467 100644 (file)
@@ -97,6 +97,7 @@ cdef extern from "rbd/librbd.h" nogil:
         RBD_MAX_BLOCK_NAME_SIZE
         RBD_MAX_IMAGE_NAME_SIZE
 
+    ctypedef void* rados_t
     ctypedef void* rados_ioctx_t
     ctypedef void* rbd_image_t
     ctypedef void* rbd_image_options_t
@@ -153,6 +154,11 @@ cdef extern from "rbd/librbd.h" nogil:
         _RBD_MIRROR_MODE_IMAGE "RBD_MIRROR_MODE_IMAGE"
         _RBD_MIRROR_MODE_POOL "RBD_MIRROR_MODE_POOL"
 
+    ctypedef enum rbd_mirror_peer_direction_t:
+        _RBD_MIRROR_PEER_DIRECTION_RX "RBD_MIRROR_PEER_DIRECTION_RX"
+        _RBD_MIRROR_PEER_DIRECTION_TX "RBD_MIRROR_PEER_DIRECTION_TX"
+        _RBD_MIRROR_PEER_DIRECTION_RX_TX "RBD_MIRROR_PEER_DIRECTION_RX_TX"
+
     ctypedef struct rbd_mirror_peer_t:
         char *uuid
         char *cluster_name
@@ -340,8 +346,18 @@ cdef extern from "rbd/librbd.h" nogil:
                              size_t status_size)
     void rbd_migration_status_cleanup(rbd_image_migration_status_t *status)
 
+    int rbd_mirror_site_name_get(rados_t cluster, char *name, size_t *max_len)
+    int rbd_mirror_site_name_set(rados_t cluster, const char *name)
+
     int rbd_mirror_mode_get(rados_ioctx_t io, rbd_mirror_mode_t *mirror_mode)
     int rbd_mirror_mode_set(rados_ioctx_t io, rbd_mirror_mode_t mirror_mode)
+
+    int rbd_mirror_peer_bootstrap_create(rados_ioctx_t io_ctx, char *token,
+                                         size_t *max_len)
+    int rbd_mirror_peer_bootstrap_import(
+        rados_ioctx_t io_ctx, rbd_mirror_peer_direction_t direction,
+        const char *token)
+
     int rbd_mirror_peer_add(rados_ioctx_t io, char *uuid,
                             size_t uuid_max_length, const char *cluster_name,
                             const char *client_name)
@@ -648,6 +664,10 @@ RBD_MIRROR_MODE_DISABLED = _RBD_MIRROR_MODE_DISABLED
 RBD_MIRROR_MODE_IMAGE = _RBD_MIRROR_MODE_IMAGE
 RBD_MIRROR_MODE_POOL = _RBD_MIRROR_MODE_POOL
 
+RBD_MIRROR_PEER_DIRECTION_RX = _RBD_MIRROR_PEER_DIRECTION_RX
+RBD_MIRROR_PEER_DIRECTION_TX = _RBD_MIRROR_PEER_DIRECTION_TX
+RBD_MIRROR_PEER_DIRECTION_RX_TX = _RBD_MIRROR_PEER_DIRECTION_RX_TX
+
 RBD_MIRROR_IMAGE_DISABLING = _RBD_MIRROR_IMAGE_DISABLING
 RBD_MIRROR_IMAGE_ENABLED = _RBD_MIRROR_IMAGE_ENABLED
 RBD_MIRROR_IMAGE_DISABLED = _RBD_MIRROR_IMAGE_DISABLED
@@ -852,6 +872,9 @@ cdef make_ex(ret, msg, exception_map=errno_to_exception):
         return OSError(msg, errno=ret)
 
 
+cdef rados_t convert_rados(rados.Rados rados) except? NULL:
+    return <rados_t>rados.cluster
+
 cdef rados_ioctx_t convert_ioctx(rados.Ioctx ioctx) except? NULL:
     return <rados_ioctx_t>ioctx.io
 
@@ -1644,6 +1667,50 @@ class RBD(object):
 
         return status
 
+    def mirror_site_name_get(self, rados):
+        """
+        Get the local cluster's friendly site name
+
+        :param rados: cluster connection
+        :type rados: :class: rados.Rados
+        :returns: str - local site name
+        """
+        cdef:
+            rados_t _rados = convert_rados(rados)
+            char *_site_name = NULL
+            size_t _max_size = 512
+        try:
+            while True:
+                _site_name = <char *>realloc_chk(_site_name, _max_size)
+                with nogil:
+                    ret = rbd_mirror_site_name_get(_rados, _site_name,
+                                                   &_max_size)
+                if ret >= 0:
+                    break
+                elif ret != -errno.ERANGE:
+                    raise make_ex(ret, 'error getting site name')
+            return decode_cstr(_site_name)
+        finally:
+            free(_site_name)
+
+    def mirror_site_name_set(self, rados, site_name):
+        """
+        Set the local cluster's friendly site name
+
+        :param rados: cluster connection
+        :type rados: :class: rados.Rados
+        :param site_name: friendly site name
+        :type str:
+        """
+        site_name = cstr(site_name, 'site_name')
+        cdef:
+            rados_t _rados = convert_rados(rados)
+            char *_site_name = site_name
+        with nogil:
+            ret = rbd_mirror_site_name_set(_rados, _site_name)
+        if ret != 0:
+            raise make_ex(ret, 'error setting mirror site name')
+
     def mirror_mode_get(self, ioctx):
         """
         Get pool mirror mode.
@@ -1678,6 +1745,55 @@ class RBD(object):
         if ret != 0:
             raise make_ex(ret, 'error setting mirror mode')
 
+    def mirror_peer_bootstrap_create(self, ioctx):
+        """
+        Creates a new RBD mirroring bootstrap token for an
+        external cluster.
+
+        :param ioctx: determines which RADOS pool is written
+        :type ioctx: :class:`rados.Ioctx`
+        :returns: str - bootstrap token
+        """
+        cdef:
+            rados_ioctx_t _ioctx = convert_ioctx(ioctx)
+            char *_token = NULL
+            size_t _max_size = 512
+        try:
+            while True:
+                _token = <char *>realloc_chk(_token, _max_size)
+                with nogil:
+                    ret = rbd_mirror_peer_bootstrap_create(_ioctx, _token,
+                                                           &_max_size)
+                if ret >= 0:
+                    break
+                elif ret != -errno.ERANGE:
+                    raise make_ex(ret, 'error creating bootstrap token')
+            return decode_cstr(_token)
+        finally:
+            free(_token)
+
+    def mirror_peer_bootstrap_import(self, ioctx, direction, token):
+        """
+        Import a bootstrap token from an external cluster to
+        auto-configure the mirror peer.
+
+        :param ioctx: determines which RADOS pool is written
+        :type ioctx: :class:`rados.Ioctx`
+        :param direction: mirror peer direction
+        :type direction: int
+        :param token: bootstrap token
+        :type token: str
+        """
+        token = cstr(token, 'token')
+        cdef:
+            rados_ioctx_t _ioctx = convert_ioctx(ioctx)
+            rbd_mirror_peer_direction_t _direction = direction
+            char *_token = token
+        with nogil:
+            ret = rbd_mirror_peer_bootstrap_import(_ioctx, _direction, _token)
+        if ret != 0:
+            raise make_ex(ret, 'error importing bootstrap token')
+
     def mirror_peer_add(self, ioctx, cluster_name, client_name):
         """
         Add mirror peer.
@@ -3030,12 +3146,16 @@ cdef class Image(object):
         """
         return rbd_get_data_pool_id(self.image)
 
-    def parent_info(self):
+    def get_parent_image_spec(self):
         """
-        Get information about a cloned image's parent (if any)
+        Get spec of the cloned image's parent
+
+        :returns: dict - contains the following keys:
+            * ``pool_name`` (str) - parent pool name
+            * ``pool_namespace`` (str) - parent pool namespace
+            * ``image_name`` (str) - parent image name
+            * ``snap_name`` (str) - parent snapshot name
 
-        :returns: tuple - ``(pool name, image name, snapshot name)`` components
-                  of the parent image
         :raises: :class:`ImageNotFound` if the image doesn't have a parent
         """
         cdef:
@@ -3046,14 +3166,28 @@ cdef class Image(object):
         if ret != 0:
             raise make_ex(ret, 'error getting parent info for image %s' % self.name)
 
-        result = (decode_cstr(parent_spec.pool_name),
-                  decode_cstr(parent_spec.image_name),
-                  decode_cstr(snap_spec.name))
+        result = {'pool_name': decode_cstr(parent_spec.pool_name),
+                  'pool_namespace': decode_cstr(parent_spec.pool_namespace),
+                  'image_name': decode_cstr(parent_spec.image_name),
+                  'snap_name': decode_cstr(snap_spec.name)}
 
         rbd_linked_image_spec_cleanup(&parent_spec)
         rbd_snap_spec_cleanup(&snap_spec)
         return result
 
+    def parent_info(self):
+        """
+        Deprecated. Use `get_parent_image_spec` instead.
+
+        Get information about a cloned image's parent (if any)
+
+        :returns: tuple - ``(pool name, image name, snapshot name)`` components
+                  of the parent image
+        :raises: :class:`ImageNotFound` if the image doesn't have a parent
+        """
+        parent = self.get_parent_image_spec()
+        return (parent['pool_name'], parent['image_name'], parent['snap_name'])
+
     def parent_id(self):
         """
         Get image id of a cloned image's parent (if any)
index d6eaa75e3d10968935c9ba64273ae3564f6d6756..d5db7f5d93c62d517632759e7e5838de237373d6 100644 (file)
@@ -107,7 +107,8 @@ cdef extern from "rados/rgw_file.h" nogil:
 
     int rgw_lookup(rgw_fs *fs,
                    rgw_file_handle *parent_fh, const char *path,
-                   rgw_file_handle **fh, uint32_t flags)
+                   rgw_file_handle **fh, stat* st, uint32_t st_mask,
+                  uint32_t flags)
 
     int rgw_lookup_handle(rgw_fs *fs, rgw_fh_hk *fh_hk,
                           rgw_file_handle **fh, uint32_t flags)
@@ -144,7 +145,7 @@ cdef extern from "rados/rgw_file.h" nogil:
 
     int rgw_readdir(rgw_fs *fs,
                     rgw_file_handle *parent_fh, uint64_t *offset,
-                    bool (*cb)(const char *name, void *arg, uint64_t offset, uint32_t flags) nogil except? -9000,
+                    bool (*cb)(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) nogil except? -9000,
                     void *cb_arg, bool *eof, uint32_t flags) except? -9000
 
     int rgw_getattr(rgw_fs *fs,
@@ -314,7 +315,7 @@ cdef make_ex(ret, msg):
         return Error(msg + (": error code %d" % ret))
 
 
-cdef bool readdir_cb(const char *name, void *arg, uint64_t offset, uint32_t flags) \
+cdef bool readdir_cb(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) \
 except? -9000 with gil:
     if exc.PyErr_Occurred():
         return False
@@ -566,10 +567,12 @@ cdef class LibRGWFS(object):
             rgw_file_handle *_file_handler
             int _flags = flags
             char* _dirname = dirname
+            stat st
+            uint32_t st_mask = 0
 
         with nogil:
             ret = rgw_lookup(self.fs, _dir_handler, _dirname,
-                             &_file_handler, _flags)
+                             &_file_handler, &st, st_mask, _flags)
         if ret < 0:
             raise make_ex(ret, "error in open '%s'" % dirname)
 
@@ -590,10 +593,12 @@ cdef class LibRGWFS(object):
             rgw_file_handle *_file_handler
             int _flags = flags
             char* _filename = filename
+            stat st
+            uint32_t st_mask = 0
 
         with nogil:
             ret = rgw_lookup(self.fs, _dir_handler, _filename,
-                             &_file_handler, _flags)
+                             &_file_handler, &st, st_mask, _flags)
         if ret < 0:
             raise make_ex(ret, "error in open '%s'" % filename)
         with nogil:
index 8d5b0638a0eb5614527f1111708be76a665eeb8a..82f5181f5b1bcb6988614a8788753d2e1e8a4953 100644 (file)
@@ -37,6 +37,7 @@ set(librgw_common_srcs
   rgw_aio_throttle.cc
   rgw_auth.cc
   rgw_auth_s3.cc
+  rgw_arn.cc
   rgw_basic_types.cc
   rgw_bucket.cc
   rgw_cache.cc
@@ -69,6 +70,8 @@ set(librgw_common_srcs
   rgw_sync_module_log.cc
   rgw_sync_module_pubsub.cc
   rgw_pubsub_push.cc
+  rgw_notify.cc
+  rgw_notify_event_type.cc
   rgw_sync_module_pubsub_rest.cc
   rgw_sync_log_trim.cc
   rgw_sync_trace.cc
@@ -93,6 +96,8 @@ set(librgw_common_srcs
   rgw_rest_conn.cc
   rgw_rest_log.cc
   rgw_rest_metadata.cc
+  rgw_rest_pubsub.cc
+  rgw_rest_pubsub_common.cc
   rgw_rest_realm.cc
   rgw_rest_role.cc
   rgw_rest_s3.cc
@@ -113,7 +118,8 @@ set(librgw_common_srcs
   rgw_zone.cc
   rgw_sts.cc
   rgw_rest_sts.cc
-  rgw_perf_counters.cc)
+  rgw_perf_counters.cc
+  rgw_object_lock.cc)
 
 if(WITH_RADOSGW_AMQP_ENDPOINT)
   list(APPEND librgw_common_srcs rgw_amqp.cc)
index da50a90a6e4050c443c86ee5bbf18e380401263c..b6deb6e7554debac2b045d3a1acf843404dd74e1 100644 (file)
@@ -872,7 +872,7 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_
     if (strcmp(cmd, "list") == 0)
       return OPT_ZONE_PLACEMENT_LIST;
   } else if (strcmp(prev_cmd, "zone") == 0) {
-    if (strcmp(cmd, "delete") == 0)
+    if (match_str(cmd, "rm", "delete"))
       return OPT_ZONE_DELETE;
     if (strcmp(cmd, "create") == 0)
       return OPT_ZONE_CREATE;
@@ -2462,11 +2462,11 @@ static int bucket_source_sync_status(RGWRados *store, const RGWZone& zone,
       shards_behind.insert(shard_id);
     }
   }
-  if (shards_behind.empty()) {
-    out << indented{width} << "bucket is caught up with source\n";
-  } else {
+  if (!shards_behind.empty()) {
     out << indented{width} << "bucket is behind on " << shards_behind.size() << " shards\n";
     out << indented{width} << "behind shards: [" << shards_behind << "]\n" ;
+  } else if (!num_full) {
+    out << indented{width} << "bucket is caught up with source\n";
   }
   return 0;
 }
@@ -2890,13 +2890,17 @@ int main(int argc, const char **argv)
   string sub_dest_bucket;
   string sub_push_endpoint;
   string event_id;
-  set<string, ltstr_nocase> event_types;
+  rgw::notify::EventTypeList event_types;
 
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
     if (ceph_argparse_double_dash(args, i)) {
       break;
     } else if (ceph_argparse_witharg(args, i, &val, "-i", "--uid", (char*)NULL)) {
       user_id.from_str(val);
+      if (user_id.empty()) {
+        cerr << "no value for uid" << std::endl;
+        exit(1);
+      }
     } else if (ceph_argparse_witharg(args, i, &val, "--tenant", (char*)NULL)) {
       tenant = val;
     } else if (ceph_argparse_witharg(args, i, &val, "--access-key", (char*)NULL)) {
@@ -3229,7 +3233,7 @@ int main(int argc, const char **argv)
     } else if (ceph_argparse_witharg(args, i, &val, "--event-id", (char*)NULL)) {
       event_id = val;
     } else if (ceph_argparse_witharg(args, i, &val, "--event-type", "--event-types", (char*)NULL)) {
-      get_str_set(val, ",", event_types);
+      rgw::notify::from_string_list(val, event_types);
     } else if (ceph_argparse_binary_flag(args, i, &detail, NULL, "--detail", (char*)NULL)) {
       // do nothing
     } else if (strncmp(*i, "-", 1) == 0) {
@@ -4986,7 +4990,7 @@ int main(int argc, const char **argv)
   // RGWUser to use for user operations
   RGWUser user;
   int ret = 0;
-  if (!user_id.empty() || !subuser.empty()) {
+  if (!(user_id.empty() && access_key.empty()) || !subuser.empty()) {
     ret = user.init(store, user_op);
     if (ret < 0) {
       cerr << "user.init failed: " << cpp_strerror(-ret) << std::endl;
@@ -5009,8 +5013,8 @@ int main(int argc, const char **argv)
 
   switch (opt_cmd) {
   case OPT_USER_INFO:
-    if (user_id.empty()) {
-      cerr << "ERROR: uid not specified" << std::endl;
+    if (user_id.empty() && access_key.empty()) {
+      cerr << "ERROR: --uid or --access-key required" << std::endl;
       return EINVAL;
     }
     break;
@@ -5462,6 +5466,12 @@ int main(int argc, const char **argv)
 
   if (opt_cmd == OPT_BUCKETS_LIST) {
     if (bucket_name.empty()) {
+      if (!user_id.empty()) {
+        if (!user_op.has_existing_user()) {
+          cerr << "ERROR: could not find user: " << user_id << std::endl;
+          return -ENOENT;
+        }
+      }
       RGWBucketAdminOp::info(store, bucket_op, f);
     } else {
       RGWBucketInfo bucket_info;
@@ -6747,13 +6757,20 @@ next:
 
     string user_str = user_id.to_str();
     if (reset_stats) {
-      if (!bucket_name.empty()){
-       cerr << "ERROR: recalculate doesn't work on buckets" << std::endl;
+      if (!bucket_name.empty()) {
+       cerr << "ERROR: --reset-stats does not work on buckets and "
+         "bucket specified" << std::endl;
+       return EINVAL;
+      }
+      if (sync_stats) {
+       cerr << "ERROR: sync-stats includes the reset-stats functionality, "
+         "so at most one of the two should be specified" << std::endl;
        return EINVAL;
       }
       ret = store->cls_user_reset_stats(user_str);
       if (ret < 0) {
-       cerr << "ERROR: could not clear user stats: " << cpp_strerror(-ret) << std::endl;
+       cerr << "ERROR: could not reset user stats: " << cpp_strerror(-ret) <<
+         std::endl;
        return -ret;
       }
     }
@@ -6762,13 +6779,15 @@ next:
       if (!bucket_name.empty()) {
         int ret = rgw_bucket_sync_user_stats(store, tenant, bucket_name);
         if (ret < 0) {
-          cerr << "ERROR: could not sync bucket stats: " << cpp_strerror(-ret) << std::endl;
+          cerr << "ERROR: could not sync bucket stats: " <<
+           cpp_strerror(-ret) << std::endl;
           return -ret;
         }
       } else {
         int ret = rgw_user_sync_all_stats(store, user_id);
         if (ret < 0) {
-          cerr << "ERROR: failed to sync user stats: " << cpp_strerror(-ret) << std::endl;
+          cerr << "ERROR: could not sync user stats: " <<
+           cpp_strerror(-ret) << std::endl;
           return -ret;
         }
       }
@@ -7001,8 +7020,12 @@ next:
     }
     RGWMetadataLog *meta_log = store->meta_mgr->get_log(period_id);
 
-    ret = meta_log->trim(shard_id, start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
-    if (ret < 0) {
+    // trim until -ENODATA
+    do {
+      ret = meta_log->trim(shard_id, start_time.to_real_time(),
+                           end_time.to_real_time(), start_marker, end_marker);
+    } while (ret == 0);
+    if (ret < 0 && ret != -ENODATA) {
       cerr << "ERROR: meta_log->trim(): " << cpp_strerror(-ret) << std::endl;
       return -ret;
     }
@@ -7641,9 +7664,20 @@ next:
     if (ret < 0)
       return -ret;
 
-    RGWDataChangesLog *log = store->data_log;
-    ret = log->trim_entries(start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
-    if (ret < 0) {
+    if (!specified_shard_id) {
+      cerr << "ERROR: requires a --shard-id" << std::endl;
+      return EINVAL;
+    }
+
+    // loop until -ENODATA
+    do {
+      auto datalog = store->data_log;
+      ret = datalog->trim_entries(shard_id, start_time.to_real_time(),
+                                  end_time.to_real_time(),
+                                  start_marker, end_marker);
+    } while (ret == 0);
+
+    if (ret < 0 && ret != -ENODATA) {
       cerr << "ERROR: trim_entries(): " << cpp_strerror(-ret) << std::endl;
       return -ret;
     }
@@ -8242,18 +8276,16 @@ next:
     RGWUserInfo& user_info = user_op.get_user_info();
     RGWUserPubSub ups(store, user_info.user_id);
 
-    RGWUserPubSub::Sub::list_events_result result;
-
     if (!max_entries_specified) {
-      max_entries = 100;
+      max_entries = RGWUserPubSub::Sub::DEFAULT_MAX_EVENTS;
     }
     auto sub = ups.get_sub(sub_name);
-    ret = sub->list_events(marker, max_entries, &result);
+    ret = sub->list_events(marker, max_entries);
     if (ret < 0) {
       cerr << "ERROR: could not list events: " << cpp_strerror(-ret) << std::endl;
       return -ret;
     }
-    encode_json("result", result, formatter);
+    encode_json("result", *sub, formatter);
     formatter->flush(cout);
  }
 
index 1ac1be259d3ee1c455442407b87671ca9e292efa..79d095d20f456c4865b58a6ecd363ea7df7b1db2 100644 (file)
@@ -48,6 +48,7 @@ AioResultList AioThrottle::submit(RGWSI_RADOS::Obj& obj,
 
   if (cost > window) {
     p->result = -EDEADLK; // would never succeed
+    std::unique_lock lock{mutex};
     completed.push_back(*p);
   } else {
     get(*p);
@@ -57,6 +58,7 @@ AioResultList AioThrottle::submit(RGWSI_RADOS::Obj& obj,
     }
   }
   p.release();
+  std::unique_lock lock{mutex};
   return std::move(completed);
 }
 
@@ -71,6 +73,7 @@ AioResultList AioThrottle::submit(RGWSI_RADOS::Obj& obj,
 
   if (cost > window) {
     p->result = -EDEADLK; // would never succeed
+    std::unique_lock lock{mutex};
     completed.push_back(*p);
   } else {
     get(*p);
@@ -80,6 +83,7 @@ AioResultList AioThrottle::submit(RGWSI_RADOS::Obj& obj,
     }
   }
   p.release();
+  std::unique_lock lock{mutex};
   return std::move(completed);
 }
 
index d0cbc7b0325140e75c13698f04776084a5c8ea35..ae62682c59d6d33fc507826cbaad20273a3937a4 100644 (file)
@@ -1,6 +1,7 @@
 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
 // vim: ts=8 sw=2 smarttab
 
+#include "include/compat.h"
 #include "rgw_amqp.h"
 #include <amqp.h>
 #include <amqp_tcp_socket.h>
@@ -15,6 +16,9 @@
 #include <atomic>
 #include <mutex>
 #include <boost/lockfree/queue.hpp>
+#include "common/dout.h"
+
+#define dout_subsys ceph_subsys_rgw
 
 // TODO investigation, not necessarily issues:
 // (1) in case of single threaded writer context use spsc_queue
 namespace rgw::amqp {
 
 // RGW AMQP status codes for publishing
-static const int RGW_AMQP_STATUS_BROKER_NACK =          -0x1001;
-static const int RGW_AMQP_STATUS_CONNECTION_CLOSED =    -0x1002;
-static const int RGW_AMQP_STATUS_QUEUE_FULL =           -0x1003;
-static const int RGW_AMQP_STATUS_MAX_INFLIGHT =         -0x1004;
+static const int RGW_AMQP_STATUS_BROKER_NACK =            -0x1001;
+static const int RGW_AMQP_STATUS_CONNECTION_CLOSED =      -0x1002;
+static const int RGW_AMQP_STATUS_QUEUE_FULL =             -0x1003;
+static const int RGW_AMQP_STATUS_MAX_INFLIGHT =           -0x1004;
+static const int RGW_AMQP_STATUS_MANAGER_STOPPED =        -0x1005;
 // RGW AMQP status code for connection opening
-static const int RGW_AMQP_STATUS_CONN_ALLOC_FAILED =    -0x2001;
-static const int RGW_AMQP_STATUS_SOCKET_ALLOC_FAILED =  -0x2002;
-static const int RGW_AMQP_STATUS_SOCKET_OPEN_FAILED =   -0x2003;
-static const int RGW_AMQP_STATUS_LOGIN_FAILED =         -0x2004;
-static const int RGW_AMQP_STATUS_CHANNEL_OPEN_FAILED =  -0x2005;
+static const int RGW_AMQP_STATUS_CONN_ALLOC_FAILED =      -0x2001;
+static const int RGW_AMQP_STATUS_SOCKET_ALLOC_FAILED =    -0x2002;
+static const int RGW_AMQP_STATUS_SOCKET_OPEN_FAILED =     -0x2003;
+static const int RGW_AMQP_STATUS_LOGIN_FAILED =           -0x2004;
+static const int RGW_AMQP_STATUS_CHANNEL_OPEN_FAILED =    -0x2005;
 static const int RGW_AMQP_STATUS_VERIFY_EXCHANGE_FAILED = -0x2006;
-static const int RGW_AMQP_STATUS_Q_DECLARE_FAILED =     -0x2007;
+static const int RGW_AMQP_STATUS_Q_DECLARE_FAILED =       -0x2007;
 static const int RGW_AMQP_STATUS_CONFIRM_DECLARE_FAILED = -0x2008;
 static const int RGW_AMQP_STATUS_CONSUME_DECLARE_FAILED = -0x2009;
 
-static const int RGW_AMQP_RESPONSE_SOCKET_ERROR =       -0x3008;
-static const int RGW_AMQP_NO_REPLY_CODE =               0x0;
+static const int RGW_AMQP_RESPONSE_SOCKET_ERROR =         -0x3008;
+static const int RGW_AMQP_NO_REPLY_CODE =                 0x0;
 
 // key class for the connection list
 struct connection_id_t {
@@ -67,6 +72,10 @@ struct connection_id_t {
   };
 };
 
+std::string to_string(const connection_id_t& id) {
+    return id.host+":"+"/"+id.vhost;
+}
+
 // connection_t state cleaner
 // could be used for automatic cleanup when getting out of scope
 class ConnectionCleaner {
@@ -114,6 +123,7 @@ struct connection_t {
   int reply_type;
   int reply_code;
   mutable std::atomic<int> ref_count;
+  CephContext* cct;
   CallbackList callbacks;
 
   // default ctor
@@ -125,7 +135,8 @@ struct connection_t {
     status(AMQP_STATUS_OK),
     reply_type(AMQP_RESPONSE_NORMAL),
     reply_code(RGW_AMQP_NO_REPLY_CODE),
-    ref_count(0) {}
+    ref_count(0),
+    cct(nullptr) {}
 
   // cleanup of all internal connection resource
   // the object can still remain, and internal connection
@@ -137,9 +148,11 @@ struct connection_t {
     amqp_bytes_free(reply_to_queue);
     reply_to_queue = amqp_empty_bytes;
     // fire all remaining callbacks
-    std::for_each(callbacks.begin(), callbacks.end(), [s](auto& cb_tag) {
-        cb_tag.cb(s);
+    std::for_each(callbacks.begin(), callbacks.end(), [this](auto& cb_tag) {
+        cb_tag.cb(status);
+        ldout(cct, 20) << "AMQP destroy: invoking callback with tag=" << cb_tag.tag << dendl;
       });
+    callbacks.clear();
     delivery_tag = 1;
   }
 
@@ -314,6 +327,8 @@ std::string status_to_string(int s) {
       return "RGW_AMQP_STATUS_QUEUE_FULL";
     case RGW_AMQP_STATUS_MAX_INFLIGHT:
       return "RGW_AMQP_STATUS_MAX_INFLIGHT";
+    case RGW_AMQP_STATUS_MANAGER_STOPPED:
+      return "RGW_AMQP_STATUS_MANAGER_STOPPED";
     case RGW_AMQP_STATUS_CONN_ALLOC_FAILED:
       return "RGW_AMQP_STATUS_CONN_ALLOC_FAILED";
     case RGW_AMQP_STATUS_SOCKET_ALLOC_FAILED:
@@ -475,12 +490,13 @@ connection_ptr_t& create_connection(connection_ptr_t& conn, const amqp_connectio
 
 // utility function to create a new connection
 connection_ptr_t create_new_connection(const amqp_connection_info& info, 
-    const std::string& exchange) { 
+    const std::string& exchange, CephContext* cct) { 
   // create connection state
   connection_ptr_t conn = new connection_t;
   conn->exchange = exchange;
   conn->user.assign(info.user);
   conn->password.assign(info.password);
+  conn->cct = cct;
   return create_connection(conn, info);
 }
 
@@ -524,6 +540,7 @@ private:
   MessageQueue messages;
   std::atomic<size_t> queued;
   std::atomic<size_t> dequeued;
+  CephContext* const cct;
   mutable std::mutex connections_lock;
   std::thread runner;
 
@@ -534,6 +551,7 @@ private:
     if (!conn->is_ok()) {
       // connection had an issue while message was in the queue
       // TODO add error stats
+      ldout(conn->cct, 1) << "AMQP publish: connection had an issue while message was in the queue" << dendl;
       if (message->cb) {
         message->cb(RGW_AMQP_STATUS_CONNECTION_CLOSED);
       }
@@ -551,8 +569,10 @@ private:
         nullptr,
         amqp_cstring_bytes(message->message.c_str()));
       if (rc == AMQP_STATUS_OK) {
+        ldout(conn->cct, 20) << "AMQP publish (no callback): OK" << dendl;
         return;
       }
+      ldout(conn->cct, 1) << "AMQP publish (no callback): failed with error " << status_to_string(rc) << dendl;
       // an error occurred, close connection
       // it will be retied by the main loop
       conn->destroy(rc);
@@ -576,15 +596,19 @@ private:
       amqp_cstring_bytes(message->message.c_str()));
 
     if (rc == AMQP_STATUS_OK) {
-      if (conn->callbacks.size() < max_inflight) {
+      auto const q_len = conn->callbacks.size();
+      if (q_len < max_inflight) {
+        ldout(conn->cct, 20) << "AMQP publish (with callback, tag=" << conn->delivery_tag << "): OK. Queue has: " << q_len << " callbacks" << dendl;
         conn->callbacks.emplace_back(conn->delivery_tag++, message->cb);
       } else {
         // immediately invoke callback with error
+        ldout(conn->cct, 1) << "AMQP publish (with callback): failed with error: callback queue full" << dendl;
         message->cb(RGW_AMQP_STATUS_MAX_INFLIGHT);
       }
     } else {
       // an error occurred, close connection
       // it will be retied by the main loop
+      ldout(conn->cct, 1) << "AMQP publish (with callback): failed with error: " << status_to_string(rc) << dendl;
       conn->destroy(rc);
       // immediately invoke callback with error
       message->cb(rc);
@@ -620,6 +644,7 @@ private:
         auto& conn = conn_it->second;
         // delete the connection if marked for deletion
         if (conn->marked_for_deletion) {
+          ldout(conn->cct, 10) << "AMQP run: connection is deleted" << dendl;
           conn->destroy(RGW_AMQP_STATUS_CONNECTION_CLOSED);
           std::lock_guard<std::mutex> lock(connections_lock);
           // erase is safe - does not invalidate any other iterator
@@ -637,9 +662,13 @@ private:
           info.vhost = const_cast<char*>(conn_it->first.vhost.c_str());
           info.user = const_cast<char*>(conn->user.c_str());
           info.password = const_cast<char*>(conn->password.c_str());
+          ldout(conn->cct, 20) << "AMQP run: retry connection" << dendl;
           if (create_connection(conn, info)->is_ok() == false) {
+            ldout(conn->cct, 10) << "AMQP run: connection (" << to_string(conn_it->first) << ") retry failed" << dendl;
             // TODO: add error counter for failed retries
             // TODO: add exponential backoff for retries
+          } else {
+            ldout(conn->cct, 10) << "AMQP run: connection (" << to_string(conn_it->first) << ") retry successfull" << dendl;
           }
           INCREMENT_AND_CONTINUE(conn_it);
         }
@@ -659,11 +688,13 @@ private:
         if (rc != AMQP_STATUS_OK) {
           // an error occurred, close connection
           // it will be retied by the main loop
+          ldout(conn->cct, 1) << "AMQP run: connection read error: " << status_to_string(rc) << dendl;
           conn->destroy(rc);
           INCREMENT_AND_CONTINUE(conn_it);
         }
 
         if (frame.frame_type != AMQP_FRAME_METHOD) {
+          ldout(conn->cct, 10) << "AMQP run: ignoring non n/ack messages" << dendl;
           // handler is for publish confirmation only - handle only method frames
           // TODO: add a counter
           INCREMENT_AND_CONTINUE(conn_it);
@@ -697,37 +728,45 @@ private:
           case AMQP_CHANNEL_CLOSE_METHOD:
             {
               // other side closed the connection, no need to continue
+              ldout(conn->cct, 10) << "AMQP run: connection was closed by broker" << dendl;
               conn->destroy(rc);
               INCREMENT_AND_CONTINUE(conn_it);
             }
           case AMQP_BASIC_RETURN_METHOD:
             // message was not delivered, returned to sender
             // TODO: add a counter
+            ldout(conn->cct, 10) << "AMQP run: message delivery error" << dendl;
             INCREMENT_AND_CONTINUE(conn_it);
             break;
           default:
             // unexpected method
             // TODO: add a counter
+            ldout(conn->cct, 10) << "AMQP run: unexpected message" << dendl;
             INCREMENT_AND_CONTINUE(conn_it);
         }
 
         const auto& callbacks_end = conn->callbacks.end();
         const auto& callbacks_begin = conn->callbacks.begin();
-        const auto it = std::find(callbacks_begin, callbacks_end, tag);
-        if (it != callbacks_end) {
+        const auto tag_it = std::find(callbacks_begin, callbacks_end, tag);
+        if (tag_it != callbacks_end) {
           if (multiple) {
             // n/ack all up to (and including) the tag
-            for (auto rit = it; rit >= callbacks_begin; --rit) {
-              rit->cb(result);
-              conn->callbacks.erase(rit);
+            ldout(conn->cct, 20) << "AMQP run: multiple n/acks received with tag=" << tag << " and result=" << result << dendl;
+            auto it = callbacks_begin;
+            while (it->tag <= tag && it != conn->callbacks.end()) {
+              ldout(conn->cct, 20) << "AMQP run: invoking callback with tag=" << it->tag << dendl;
+              it->cb(result);
+              it = conn->callbacks.erase(it);
             }
           } else {
             // n/ack a specific tag
-            it->cb(result);
-            conn->callbacks.erase(it);
+            ldout(conn->cct, 20) << "AMQP run: n/ack received, invoking callback with tag=" << tag << " and result=" << result << dendl;
+            tag_it->cb(result);
+            conn->callbacks.erase(tag_it);
           }
         } else {
           // TODO add counter for acks with no callback
+          ldout(conn->cct, 10) << "AMQP run: unsolicited n/ack received with tag=" << tag << dendl;
         }
         // just increment the iterator
         ++conn_it;
@@ -748,7 +787,8 @@ public:
   Manager(size_t _max_connections,
       size_t _max_inflight,
       size_t _max_queue, 
-      long _usec_timeout) : 
+      long _usec_timeout,
+      CephContext* _cct) : 
     max_connections(_max_connections),
     max_inflight(_max_inflight),
     max_queue(_max_queue),
@@ -759,12 +799,16 @@ public:
     messages(max_queue),
     queued(0),
     dequeued(0),
+    cct(_cct),
     runner(&Manager::run, this) {
       // The hashmap has "max connections" as the initial number of buckets, 
       // and allows for 10 collisions per bucket before rehash.
       // This is to prevent rehashing so that iterators are not invalidated 
       // when a new connection is added.
       connections.max_load_factor(10.0);
+      // give the runner thread a name for easier debugging
+      const auto rc = ceph_pthread_setname(runner.native_handle(), "amqp_manager");
+      ceph_assert(rc==0);
   }
 
   // non copyable
@@ -789,6 +833,7 @@ public:
   connection_ptr_t connect(const std::string& url, const std::string& exchange) {
     if (stopped) {
       // TODO: increment counter
+      ldout(cct, 1) << "AMQP connect: manager is stopped" << dendl;
       return nullptr;
     }
 
@@ -797,6 +842,7 @@ public:
     std::vector<char> url_cache(url.c_str(), url.c_str()+url.size()+1);
     if (AMQP_STATUS_OK != amqp_parse_url(url_cache.data(), &info)) {
       // TODO: increment counter
+      ldout(cct, 1) << "AMQP connect: URL parsing failed" << dendl;
       return nullptr;
     }
 
@@ -806,26 +852,32 @@ public:
     if (it != connections.end()) {
       if (it->second->marked_for_deletion) {
         // TODO: increment counter
+        ldout(cct, 1) << "AMQP connect: endpoint marked for deletion" << dendl;
         return nullptr;
       } else if (it->second->exchange != exchange) {
         // TODO: increment counter
+        ldout(cct, 1) << "AMQP connect: exchange mismatch" << dendl;
         return nullptr;
       }
       // connection found - return even if non-ok
+      ldout(cct, 20) << "AMQP connect: connection found" << dendl;
       return it->second;
     }
 
     // connection not found, creating a new one
     if (connection_count >= max_connections) {
       // TODO: increment counter
+      ldout(cct, 1) << "AMQP connect: max connections exceeded" << dendl;
       return nullptr;
     }
-    const auto conn = create_new_connection(info, exchange);
+    const auto conn = create_new_connection(info, exchange, cct);
     // create_new_connection must always return a connection object
     // even if error occurred during creation. 
     // in such a case the creation will be retried in the main thread
     ceph_assert(conn);
     ++connection_count;
+    ldout(cct, 10) << "AMQP connect: new connection is created. Total connections: " << connection_count << dendl;
+    ldout(cct, 10) << "AMQP connect: new connection status is: " << status_to_string(conn->status) << dendl;
     return connections.emplace(id, conn).first->second;
   }
 
@@ -833,6 +885,9 @@ public:
   int publish(connection_ptr_t& conn, 
     const std::string& topic,
     const std::string& message) {
+    if (stopped) {
+      return RGW_AMQP_STATUS_MANAGER_STOPPED;
+    }
     if (!conn || !conn->is_ok()) {
       return RGW_AMQP_STATUS_CONNECTION_CLOSED;
     }
@@ -847,6 +902,9 @@ public:
     const std::string& topic,
     const std::string& message,
     reply_callback_t cb) {
+    if (stopped) {
+      return RGW_AMQP_STATUS_MANAGER_STOPPED;
+    }
     if (!conn || !conn->is_ok()) {
       return RGW_AMQP_STATUS_CONNECTION_CLOSED;
     }
@@ -893,56 +951,85 @@ public:
 
 // singleton manager
 // note that the manager itself is not a singleton, and multiple instances may co-exist
-// TODO get parameters from conf
-Manager s_manager(256, 8192, 8192, 100);
+// TODO make the pointer atomic in allocation and deallocation to avoid race conditions
+static Manager* s_manager = nullptr;
+
+static const size_t MAX_CONNECTIONS_DEFAULT = 256;
+static const size_t MAX_INFLIGHT_DEFAULT = 8192; 
+static const size_t MAX_QUEUE_DEFAULT = 8192;
+
+bool init(CephContext* cct) {
+  if (s_manager) {
+    return false;
+  }
+  // TODO: take conf from CephContext
+  s_manager = new Manager(MAX_CONNECTIONS_DEFAULT, MAX_INFLIGHT_DEFAULT, MAX_QUEUE_DEFAULT, 100, cct);
+  return true;
+}
+
+void shutdown() {
+  delete s_manager;
+  s_manager = nullptr;
+}
 
 connection_ptr_t connect(const std::string& url, const std::string& exchange) {
-  return s_manager.connect(url, exchange);
+  if (!s_manager) return nullptr;
+  return s_manager->connect(url, exchange);
 }
 
 int publish(connection_ptr_t& conn, 
     const std::string& topic,
     const std::string& message) {
-  return s_manager.publish(conn, topic, message);
+  if (!s_manager) return RGW_AMQP_STATUS_MANAGER_STOPPED;
+  return s_manager->publish(conn, topic, message);
 }
 
 int publish_with_confirm(connection_ptr_t& conn, 
     const std::string& topic,
     const std::string& message,
     reply_callback_t cb) {
-  return s_manager.publish_with_confirm(conn, topic, message, cb);
+  if (!s_manager) return RGW_AMQP_STATUS_MANAGER_STOPPED;
+  return s_manager->publish_with_confirm(conn, topic, message, cb);
 }
 
 size_t get_connection_count() {
-  return s_manager.get_connection_count();
+  if (!s_manager) return 0;
+  return s_manager->get_connection_count();
 }
   
 size_t get_inflight() {
-  return s_manager.get_inflight();
+  if (!s_manager) return 0;
+  return s_manager->get_inflight();
 }
 
 size_t get_queued() {
-  return s_manager.get_queued();
+  if (!s_manager) return 0;
+  return s_manager->get_queued();
 }
 
 size_t get_dequeued() {
-  return s_manager.get_dequeued();
+  if (!s_manager) return 0;
+  return s_manager->get_dequeued();
 }
 
 size_t get_max_connections() {
-  return s_manager.max_connections;
+  if (!s_manager) return MAX_CONNECTIONS_DEFAULT;
+  return s_manager->max_connections;
 }
 
 size_t get_max_inflight() {
-  return s_manager.max_inflight;
+  if (!s_manager) return MAX_INFLIGHT_DEFAULT;
+  return s_manager->max_inflight;
 }
 
 size_t get_max_queue() {
-  return s_manager.max_queue;
+  if (!s_manager) return MAX_QUEUE_DEFAULT;
+  return s_manager->max_queue;
 }
 
 bool disconnect(connection_ptr_t& conn) {
-  return s_manager.disconnect(conn);
+  if (!s_manager) return false;
+  return s_manager->disconnect(conn);
 }
 
 } // namespace amqp
index f68b051000681c817ddfa34961cc1d22cdf8d1de..938bdade4958cf1d11678da92bd58d877714c475 100644 (file)
@@ -7,6 +7,8 @@
 #include <functional>
 #include <boost/smart_ptr/intrusive_ptr.hpp>
 
+class CephContext;
+
 namespace rgw::amqp {
 // forward declaration of connection object
 struct connection_t;
@@ -21,6 +23,12 @@ void intrusive_ptr_release(const connection_t* p);
 // indicating the result, and not to return anything
 typedef std::function<void(int)> reply_callback_t;
 
+// initialize the amqp manager
+bool init(CephContext* cct);
+
+// shutdown the amqp manager
+void shutdown();
+
 // connect to an amqp endpoint
 connection_ptr_t connect(const std::string& url, const std::string& exchange);
 
diff --git a/ceph/src/rgw/rgw_arn.cc b/ceph/src/rgw/rgw_arn.cc
new file mode 100644 (file)
index 0000000..d8b4ed3
--- /dev/null
@@ -0,0 +1,385 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+#include "rgw_arn.h"
+#include "rgw_common.h"
+#include <regex>
+
+namespace rgw {
+
+namespace {
+boost::optional<Partition> to_partition(const smatch::value_type& p,
+                                       bool wildcards) {
+  if (p == "aws") {
+    return Partition::aws;
+  } else if (p == "aws-cn") {
+    return Partition::aws_cn;
+  } else if (p == "aws-us-gov") {
+    return Partition::aws_us_gov;
+  } else if (p == "*" && wildcards) {
+    return Partition::wildcard;
+  } else {
+    return boost::none;
+  }
+
+  ceph_abort();
+}
+
+boost::optional<Service> to_service(const smatch::value_type& s,
+                                   bool wildcards) {
+  static const unordered_map<string, Service> services = {
+    { "acm", Service::acm },
+    { "apigateway", Service::apigateway },
+    { "appstream", Service::appstream },
+    { "artifact", Service::artifact },
+    { "autoscaling", Service::autoscaling },
+    { "aws-marketplace", Service::aws_marketplace },
+    { "aws-marketplace-management",
+      Service::aws_marketplace_management },
+    { "aws-portal", Service::aws_portal },
+    { "cloudformation", Service::cloudformation },
+    { "cloudfront", Service::cloudfront },
+    { "cloudhsm", Service::cloudhsm },
+    { "cloudsearch", Service::cloudsearch },
+    { "cloudtrail", Service::cloudtrail },
+    { "cloudwatch", Service::cloudwatch },
+    { "codebuild", Service::codebuild },
+    { "codecommit", Service::codecommit },
+    { "codedeploy", Service::codedeploy },
+    { "codepipeline", Service::codepipeline },
+    { "cognito-identity", Service::cognito_identity },
+    { "cognito-idp", Service::cognito_idp },
+    { "cognito-sync", Service::cognito_sync },
+    { "config", Service::config },
+    { "datapipeline", Service::datapipeline },
+    { "devicefarm", Service::devicefarm },
+    { "directconnect", Service::directconnect },
+    { "dms", Service::dms },
+    { "ds", Service::ds },
+    { "dynamodb", Service::dynamodb },
+    { "ec2", Service::ec2 },
+    { "ecr", Service::ecr },
+    { "ecs", Service::ecs },
+    { "elasticache", Service::elasticache },
+    { "elasticbeanstalk", Service::elasticbeanstalk },
+    { "elasticfilesystem", Service::elasticfilesystem },
+    { "elasticloadbalancing", Service::elasticloadbalancing },
+    { "elasticmapreduce", Service::elasticmapreduce },
+    { "elastictranscoder", Service::elastictranscoder },
+    { "es", Service::es },
+    { "events", Service::events },
+    { "firehose", Service::firehose },
+    { "gamelift", Service::gamelift },
+    { "glacier", Service::glacier },
+    { "health", Service::health },
+    { "iam", Service::iam },
+    { "importexport", Service::importexport },
+    { "inspector", Service::inspector },
+    { "iot", Service::iot },
+    { "kinesis", Service::kinesis },
+    { "kinesisanalytics", Service::kinesisanalytics },
+    { "kms", Service::kms },
+    { "lambda", Service::lambda },
+    { "lightsail", Service::lightsail },
+    { "logs", Service::logs },
+    { "machinelearning", Service::machinelearning },
+    { "mobileanalytics", Service::mobileanalytics },
+    { "mobilehub", Service::mobilehub },
+    { "opsworks", Service::opsworks },
+    { "opsworks-cm", Service::opsworks_cm },
+    { "polly", Service::polly },
+    { "rds", Service::rds },
+    { "redshift", Service::redshift },
+    { "route53", Service::route53 },
+    { "route53domains", Service::route53domains },
+    { "s3", Service::s3 },
+    { "sdb", Service::sdb },
+    { "servicecatalog", Service::servicecatalog },
+    { "ses", Service::ses },
+    { "sns", Service::sns },
+    { "sqs", Service::sqs },
+    { "ssm", Service::ssm },
+    { "states", Service::states },
+    { "storagegateway", Service::storagegateway },
+    { "sts", Service::sts },
+    { "support", Service::support },
+    { "swf", Service::swf },
+    { "trustedadvisor", Service::trustedadvisor },
+    { "waf", Service::waf },
+    { "workmail", Service::workmail },
+    { "workspaces", Service::workspaces }};
+
+  if (wildcards && s == "*") {
+    return Service::wildcard;
+  }
+
+  auto i = services.find(s);
+  if (i == services.end()) {
+    return boost::none;
+  } else {
+    return i->second;
+  }
+}
+}
+ARN::ARN(const rgw_obj& o)
+  : partition(Partition::aws),
+    service(Service::s3),
+    region(),
+    account(o.bucket.tenant),
+    resource(o.bucket.name)
+{
+  resource.push_back('/');
+  resource.append(o.key.name);
+}
+
+ARN::ARN(const rgw_bucket& b)
+  : partition(Partition::aws),
+    service(Service::s3),
+    region(),
+    account(b.tenant),
+    resource(b.name) { }
+
+ARN::ARN(const rgw_bucket& b, const std::string& o)
+  : partition(Partition::aws),
+    service(Service::s3),
+    region(),
+    account(b.tenant),
+    resource(b.name) {
+  resource.push_back('/');
+  resource.append(o);
+}
+
+ARN::ARN(const std::string& resource_name, const std::string& type, const std::string& tenant, bool has_path)
+  : partition(Partition::aws),
+    service(Service::iam),
+    region(),
+    account(tenant),
+    resource(type) {
+  if (! has_path)
+    resource.push_back('/');
+  resource.append(resource_name);
+}
+
+boost::optional<ARN> ARN::parse(const std::string& s, bool wildcards) {
+  static const std::regex rx_wild("arn:([^:]*):([^:]*):([^:]*):([^:]*):([^:]*)",
+                            std::regex_constants::ECMAScript |
+                            std::regex_constants::optimize);
+  static const std::regex rx_no_wild(
+    "arn:([^:*]*):([^:*]*):([^:*]*):([^:*]*):(.*)",
+    std::regex_constants::ECMAScript |
+    std::regex_constants::optimize);
+
+  smatch match;
+
+  if ((s == "*") && wildcards) {
+    return ARN(Partition::wildcard, Service::wildcard, "*", "*", "*");
+  } else if (regex_match(s, match, wildcards ? rx_wild : rx_no_wild) &&
+            match.size() == 6) {
+    if (auto p = to_partition(match[1], wildcards)) {
+      if (auto s = to_service(match[2], wildcards)) {
+       return ARN(*p, *s, match[3], match[4], match[5]);
+      }
+    }
+  }
+  return boost::none;
+}
+
+std::string ARN::to_string() const {
+  std::string s{"arn:"};
+
+  if (partition == Partition::aws) {
+    s.append("aws:");
+  } else if (partition == Partition::aws_cn) {
+    s.append("aws-cn:");
+  } else if (partition == Partition::aws_us_gov) {
+    s.append("aws-us-gov:");
+  } else {
+    s.append("*:");
+  }
+
+  static const std::unordered_map<Service, string> services = {
+    { Service::acm, "acm" },
+    { Service::apigateway, "apigateway" },
+    { Service::appstream, "appstream" },
+    { Service::artifact, "artifact" },
+    { Service::autoscaling, "autoscaling" },
+    { Service::aws_marketplace, "aws-marketplace" },
+    { Service::aws_marketplace_management, "aws-marketplace-management" },
+    { Service::aws_portal, "aws-portal" },
+    { Service::cloudformation, "cloudformation" },
+    { Service::cloudfront, "cloudfront" },
+    { Service::cloudhsm, "cloudhsm" },
+    { Service::cloudsearch, "cloudsearch" },
+    { Service::cloudtrail, "cloudtrail" },
+    { Service::cloudwatch, "cloudwatch" },
+    { Service::codebuild, "codebuild" },
+    { Service::codecommit, "codecommit" },
+    { Service::codedeploy, "codedeploy" },
+    { Service::codepipeline, "codepipeline" },
+    { Service::cognito_identity, "cognito-identity" },
+    { Service::cognito_idp, "cognito-idp" },
+    { Service::cognito_sync, "cognito-sync" },
+    { Service::config, "config" },
+    { Service::datapipeline, "datapipeline" },
+    { Service::devicefarm, "devicefarm" },
+    { Service::directconnect, "directconnect" },
+    { Service::dms, "dms" },
+    { Service::ds, "ds" },
+    { Service::dynamodb, "dynamodb" },
+    { Service::ec2, "ec2" },
+    { Service::ecr, "ecr" },
+    { Service::ecs, "ecs" },
+    { Service::elasticache, "elasticache" },
+    { Service::elasticbeanstalk, "elasticbeanstalk" },
+    { Service::elasticfilesystem, "elasticfilesystem" },
+    { Service::elasticloadbalancing, "elasticloadbalancing" },
+    { Service::elasticmapreduce, "elasticmapreduce" },
+    { Service::elastictranscoder, "elastictranscoder" },
+    { Service::es, "es" },
+    { Service::events, "events" },
+    { Service::firehose, "firehose" },
+    { Service::gamelift, "gamelift" },
+    { Service::glacier, "glacier" },
+    { Service::health, "health" },
+    { Service::iam, "iam" },
+    { Service::importexport, "importexport" },
+    { Service::inspector, "inspector" },
+    { Service::iot, "iot" },
+    { Service::kinesis, "kinesis" },
+    { Service::kinesisanalytics, "kinesisanalytics" },
+    { Service::kms, "kms" },
+    { Service::lambda, "lambda" },
+    { Service::lightsail, "lightsail" },
+    { Service::logs, "logs" },
+    { Service::machinelearning, "machinelearning" },
+    { Service::mobileanalytics, "mobileanalytics" },
+    { Service::mobilehub, "mobilehub" },
+    { Service::opsworks, "opsworks" },
+    { Service::opsworks_cm, "opsworks-cm" },
+    { Service::polly, "polly" },
+    { Service::rds, "rds" },
+    { Service::redshift, "redshift" },
+    { Service::route53, "route53" },
+    { Service::route53domains, "route53domains" },
+    { Service::s3, "s3" },
+    { Service::sdb, "sdb" },
+    { Service::servicecatalog, "servicecatalog" },
+    { Service::ses, "ses" },
+    { Service::sns, "sns" },
+    { Service::sqs, "sqs" },
+    { Service::ssm, "ssm" },
+    { Service::states, "states" },
+    { Service::storagegateway, "storagegateway" },
+    { Service::sts, "sts" },
+    { Service::support, "support" },
+    { Service::swf, "swf" },
+    { Service::trustedadvisor, "trustedadvisor" },
+    { Service::waf, "waf" },
+    { Service::workmail, "workmail" },
+    { Service::workspaces, "workspaces" }};
+
+  auto i = services.find(service);
+  if (i != services.end()) {
+    s.append(i->second);
+  } else {
+    s.push_back('*');
+  }
+  s.push_back(':');
+
+  s.append(region);
+  s.push_back(':');
+
+  s.append(account);
+  s.push_back(':');
+
+  s.append(resource);
+
+  return s;
+}
+
+bool operator ==(const ARN& l, const ARN& r) {
+  return ((l.partition == r.partition) &&
+         (l.service == r.service) &&
+         (l.region == r.region) &&
+         (l.account == r.account) &&
+         (l.resource == r.resource));
+}
+bool operator <(const ARN& l, const ARN& r) {
+  return ((l.partition < r.partition) ||
+         (l.service < r.service) ||
+         (l.region < r.region) ||
+         (l.account < r.account) ||
+         (l.resource < r.resource));
+}
+
+// The candidate is not allowed to have wildcards. The only way to
+// do that sanely would be to use unification rather than matching.
+bool ARN::match(const ARN& candidate) const {
+  if ((candidate.partition == Partition::wildcard) ||
+      (partition != candidate.partition && partition
+       != Partition::wildcard)) {
+    return false;
+  }
+
+  if ((candidate.service == Service::wildcard) ||
+      (service != candidate.service && service != Service::wildcard)) {
+    return false;
+  }
+
+  if (!match_policy(region, candidate.region, MATCH_POLICY_ARN)) {
+    return false;
+  }
+
+  if (!match_policy(account, candidate.account, MATCH_POLICY_ARN)) {
+    return false;
+  }
+
+  if (!match_policy(resource, candidate.resource, MATCH_POLICY_RESOURCE)) {
+    return false;
+  }
+
+  return true;
+}
+
+boost::optional<ARNResource> ARNResource::parse(const std::string& s) {
+  static const std::regex rx("^([^:/]*)[:/]?([^:/]*)?[:/]?(.*)$",
+                            std::regex_constants::ECMAScript |
+                            std::regex_constants::optimize);
+  std::smatch match;
+  if (!regex_match(s, match, rx)) {
+    return boost::none;
+  }
+  if (match[2].str().empty() && match[3].str().empty()) {
+    // only resource exist
+    return rgw::ARNResource("", match[1], "");
+  }
+
+  // resource type also exist, and cannot be wildcard
+  if (match[1] != std::string(wildcard)) {
+    // resource type cannot be wildcard
+    return rgw::ARNResource(match[1], match[2], match[3]);
+  }
+
+  return boost::none;
+}
+
+std::string ARNResource::to_string() const {
+  std::string s;
+
+  if (!resource_type.empty()) {
+    s.append(resource_type);
+    s.push_back(':');
+
+    s.append(resource);
+    s.push_back(':');
+
+    s.append(qualifier);
+  } else {
+    s.append(resource);
+  }
+
+  return s;
+}
+
+}
+
diff --git a/ceph/src/rgw/rgw_arn.h b/ceph/src/rgw/rgw_arn.h
new file mode 100644 (file)
index 0000000..406a9f4
--- /dev/null
@@ -0,0 +1,121 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+#pragma once
+#include <string>
+#include <boost/optional.hpp>
+
+class rgw_obj;
+class rgw_bucket;
+
+namespace rgw {
+
+enum struct Partition {
+  aws, aws_cn, aws_us_gov, wildcard
+  // If we wanted our own ARNs for principal type unique to us
+  // (maybe to integrate better with Swift) or for anything else we
+  // provide that doesn't map onto S3, we could add an 'rgw'
+  // partition type.
+};
+
+enum struct Service {
+  apigateway, appstream, artifact, autoscaling, aws_portal, acm,
+  cloudformation, cloudfront, cloudhsm, cloudsearch, cloudtrail,
+  cloudwatch, events, logs, codebuild, codecommit, codedeploy,
+  codepipeline, cognito_idp, cognito_identity, cognito_sync,
+  config, datapipeline, dms, devicefarm, directconnect,
+  ds, dynamodb, ec2, ecr, ecs, ssm, elasticbeanstalk, elasticfilesystem,
+  elasticloadbalancing, elasticmapreduce, elastictranscoder, elasticache,
+  es, gamelift, glacier, health, iam, importexport, inspector, iot,
+  kms, kinesisanalytics, firehose, kinesis, lambda, lightsail,
+  machinelearning, aws_marketplace, aws_marketplace_management,
+  mobileanalytics, mobilehub, opsworks, opsworks_cm, polly,
+  redshift, rds, route53, route53domains, sts, servicecatalog,
+  ses, sns, sqs, s3, swf, sdb, states, storagegateway, support,
+  trustedadvisor, waf, workmail, workspaces, wildcard
+};
+
+/* valid format:
+ * 'arn:partition:service:region:account-id:resource'
+ * The 'resource' part can be further broken down via ARNResource
+*/
+struct ARN {
+  Partition partition;
+  Service service;
+  std::string region;
+  // Once we refit tenant, we should probably use that instead of a
+  // string.
+  std::string account;
+  std::string resource;
+
+  ARN()
+    : partition(Partition::wildcard), service(Service::wildcard) {}
+  ARN(Partition partition, Service service, std::string region,
+      std::string account, std::string resource)
+    : partition(partition), service(service), region(std::move(region)),
+      account(std::move(account)), resource(std::move(resource)) {}
+  ARN(const rgw_obj& o);
+  ARN(const rgw_bucket& b);
+  ARN(const rgw_bucket& b, const std::string& o);
+  ARN(const std::string& resource_name, const std::string& type, const std::string& tenant, bool has_path=false);
+
+  static boost::optional<ARN> parse(const std::string& s,
+                                   bool wildcard = false);
+  std::string to_string() const;
+
+  // `this` is the pattern
+  bool match(const ARN& candidate) const;
+};
+
+inline std::string to_string(const ARN& a) {
+  return a.to_string();
+}
+
+inline std::ostream& operator <<(std::ostream& m, const ARN& a) {
+  return m << to_string(a);
+}
+
+bool operator ==(const ARN& l, const ARN& r);
+bool operator <(const ARN& l, const ARN& r);
+
+/* valid formats (only resource part):
+ * 'resource'
+ * 'resourcetype/resource'
+ * 'resourcetype/resource/qualifier'
+ * 'resourcetype/resource:qualifier'
+ * 'resourcetype:resource'
+ * 'resourcetype:resource:qualifier'
+ * Note that 'resourceType' cannot be wildcard
+*/
+struct ARNResource {
+  constexpr static const char* const wildcard = "*";
+  std::string resource_type;
+  std::string resource;
+  std::string qualifier;
+
+  ARNResource() : resource_type(""), resource(wildcard), qualifier("") {}
+  
+  ARNResource(const std::string& _resource_type, const std::string& _resource, const std::string& _qualifier) : 
+    resource_type(std::move(_resource_type)), resource(std::move(_resource)), qualifier(std::move(_qualifier)) {}
+
+  static boost::optional<ARNResource> parse(const std::string& s);
+  
+  std::string to_string() const;
+};
+
+inline std::string to_string(const ARNResource& r) {
+  return r.to_string();
+}
+
+} // namespace rgw
+
+namespace std {
+template<>
+struct hash<::rgw::Service> {
+  size_t operator()(const ::rgw::Service& s) const noexcept {
+    // Invoke a default-constructed hash object for int.
+    return hash<int>()(static_cast<int>(s));
+  }
+};
+} // namespace std
+
index 8431be0b89557f6e03b538866de9b05e50e8cd16..82e2a45da6c3abd6bf1a2bb4dd700dc1c57113c7 100644 (file)
@@ -32,14 +32,16 @@ namespace http = boost::beast::http;
 namespace ssl = boost::asio::ssl;
 #endif
 
+using parse_buffer = boost::beast::flat_static_buffer<65536>;
+
 template <typename Stream>
 class StreamIO : public rgw::asio::ClientIO {
   CephContext* const cct;
   Stream& stream;
-  boost::beast::flat_buffer& buffer;
+  parse_buffer& buffer;
  public:
   StreamIO(CephContext *cct, Stream& stream, rgw::asio::parser_type& parser,
-           boost::beast::flat_buffer& buffer, bool is_ssl,
+           parse_buffer& buffer, bool is_ssl,
            const tcp::endpoint& local_endpoint,
            const tcp::endpoint& remote_endpoint)
       : ClientIO(parser, is_ssl, local_endpoint, remote_endpoint),
@@ -82,7 +84,7 @@ using SharedMutex = ceph::async::SharedMutex<boost::asio::io_context::executor_t
 
 template <typename Stream>
 void handle_connection(RGWProcessEnv& env, Stream& stream,
-                       boost::beast::flat_buffer& buffer, bool is_ssl,
+                       parse_buffer& buffer, bool is_ssl,
                        SharedMutex& pause_mutex,
                        rgw::dmclock::Scheduler *scheduler,
                        boost::system::error_code& ec,
@@ -177,6 +179,9 @@ void handle_connection(RGWProcessEnv& env, Stream& stream,
       body.data = discard_buffer.data();
 
       http::async_read_some(stream, buffer, parser, yield[ec]);
+      if (ec == http::error::need_buffer) {
+        continue;
+      }
       if (ec == boost::asio::error::connection_reset) {
         return;
       }
@@ -569,7 +574,8 @@ void AsioFrontend::accept(Listener& l, boost::system::error_code ec)
   } else if (ec == boost::asio::error::operation_aborted) {
     return;
   } else if (ec) {
-    throw ec;
+    ldout(ctx(), 1) << "accept failed: " << ec.message() << dendl;
+    return;
   }
   auto socket = std::move(l.socket);
   tcp::no_delay options(l.use_nodelay);
@@ -588,17 +594,17 @@ void AsioFrontend::accept(Listener& l, boost::system::error_code ec)
         auto c = connections.add(conn);
         // wrap the socket in an ssl stream
         ssl::stream<tcp::socket&> stream{s, *ssl_context};
-        boost::beast::flat_buffer buffer;
+        auto buffer = std::make_unique<parse_buffer>();
         // do ssl handshake
         boost::system::error_code ec;
         auto bytes = stream.async_handshake(ssl::stream_base::server,
-                                            buffer.data(), yield[ec]);
+                                            buffer->data(), yield[ec]);
         if (ec) {
           ldout(ctx(), 1) << "ssl handshake failed: " << ec.message() << dendl;
           return;
         }
-        buffer.consume(bytes);
-        handle_connection(env, stream, buffer, true, pause_mutex,
+        buffer->consume(bytes);
+        handle_connection(env, stream, *buffer, true, pause_mutex,
                           scheduler.get(), ec, yield);
         if (!ec) {
           // ssl shutdown (ignoring errors)
@@ -614,9 +620,9 @@ void AsioFrontend::accept(Listener& l, boost::system::error_code ec)
       [this, s=std::move(socket)] (boost::asio::yield_context yield) mutable {
         Connection conn{s};
         auto c = connections.add(conn);
-        boost::beast::flat_buffer buffer;
+        auto buffer = std::make_unique<parse_buffer>();
         boost::system::error_code ec;
-        handle_connection(env, s, buffer, false, pause_mutex,
+        handle_connection(env, s, *buffer, false, pause_mutex,
                           scheduler.get(), ec, yield);
         s.shutdown(tcp::socket::shutdown_both, ec);
       });
index c87060a8e0c4005acd4cc94119f3f6cac060171b..0780101fb4aeab0652d6aab2c900ac634990224e 100644 (file)
@@ -47,7 +47,8 @@ static const auto signed_subresources = {
   "versionId",
   "versioning",
   "versions",
-  "website"
+  "website",
+  "object-lock"
 };
 
 /*
index b4ac14a7d2e708abf7dabadf6598cbf56842f76c..b1db690bdb5247699e85d90cc7c716684233adb4 100644 (file)
@@ -6,6 +6,7 @@
 #include <string>
 
 #include "rgw_basic_types.h"
+#include "rgw_xml.h"
 #include "common/ceph_json.h"
 
 using std::string;
@@ -13,14 +14,17 @@ using std::stringstream;
 
 void decode_json_obj(rgw_user& val, JSONObj *obj)
 {
-  string s = obj->get_data();
-  val.from_str(s);
+  val.from_str(obj->get_data());
 }
 
 void encode_json(const char *name, const rgw_user& val, Formatter *f)
 {
-  string s = val.to_str();
-  f->dump_string(name, s);
+  f->dump_string(name, val.to_str());
+}
+
+void encode_xml(const char *name, const rgw_user& val, Formatter *f)
+{
+  encode_xml(name, val.to_str(), f);
 }
 
 namespace rgw {
index b2b9b7b4ec75c13342d3cd41fa451c86cc44078c..c8d3abb7d07ccb65a4371f6743a7b0e3b7c5eefa 100644 (file)
@@ -201,6 +201,7 @@ class JSONObj;
 
 void decode_json_obj(rgw_user& val, JSONObj *obj);
 void encode_json(const char *name, const rgw_user& val, Formatter *f);
+void encode_xml(const char *name, const rgw_user& val, Formatter *f);
 
 inline ostream& operator<<(ostream& out, const rgw_user &u) {
   string s;
index e1dd5832e6d845629356eaa73bd1c220d9b26bb1..dfb71c9c400cb52c329bed179270bb475810ae55 100644 (file)
@@ -694,7 +694,7 @@ int rgw_remove_bucket_bypass_gc(RGWRados *store, rgw_bucket& bucket,
         for (; miter != manifest.obj_end() && max_aio--; ++miter) {
           if (!max_aio) {
             ret = drain_handles(handles);
-            if (ret < 0) {
+            if (ret < 0 && ret != -ENOENT) {
               lderr(store->ctx()) << "ERROR: could not drain handles as aio completion returned with " << ret << dendl;
               return ret;
             }
@@ -723,17 +723,18 @@ int rgw_remove_bucket_bypass_gc(RGWRados *store, rgw_bucket& bucket,
 
       if (!max_aio) {
         ret = drain_handles(handles);
-        if (ret < 0) {
+        if (ret < 0 && ret != -ENOENT) {
           lderr(store->ctx()) << "ERROR: could not drain handles as aio completion returned with " << ret << dendl;
           return ret;
         }
         max_aio = concurrent_max;
       }
+      obj_ctx.invalidate(obj);
     } // for all RGW objects
   }
 
   ret = drain_handles(handles);
-  if (ret < 0) {
+  if (ret < 0 && ret != -ENOENT) {
     lderr(store->ctx()) << "ERROR: could not drain handles as aio completion returned with " << ret << dendl;
     return ret;
   }
@@ -2388,32 +2389,11 @@ int RGWDataChangesLog::get_info(int shard_id, RGWDataChangesLogInfo *info)
 int RGWDataChangesLog::trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
                                     const string& start_marker, const string& end_marker)
 {
-  int ret;
-
   if (shard_id > num_shards)
     return -EINVAL;
 
-  ret = store->time_log_trim(oids[shard_id], start_time, end_time, start_marker, end_marker);
-
-  if (ret == -ENOENT || ret == -ENODATA)
-    ret = 0;
-
-  return ret;
-}
-
-int RGWDataChangesLog::trim_entries(const real_time& start_time, const real_time& end_time,
-                                    const string& start_marker, const string& end_marker)
-{
-  for (int shard = 0; shard < num_shards; shard++) {
-    int ret = store->time_log_trim(oids[shard], start_time, end_time, start_marker, end_marker);
-    if (ret == -ENOENT || ret == -ENODATA) {
-      continue;
-    }
-    if (ret < 0)
-      return ret;
-  }
-
-  return 0;
+  return store->time_log_trim(oids[shard_id], start_time, end_time,
+                               start_marker, end_marker, nullptr);
 }
 
 int RGWDataChangesLog::lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id) {
index fec77ba39b3cd6692d574a651765fa15ba67515c..b32049639d446804013eff0a54b6d94ac3ef3d90 100644 (file)
@@ -542,8 +542,6 @@ public:
                   bool *truncated);
   int trim_entries(int shard_id, const real_time& start_time, const real_time& end_time,
                    const string& start_marker, const string& end_marker);
-  int trim_entries(const real_time& start_time, const real_time& end_time,
-                   const string& start_marker, const string& end_marker);
   int get_info(int shard_id, RGWDataChangesLogInfo *info);
   int lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id);
   int unlock(int shard_id, string& zone_id, string& owner_id);
index dcade32363e0a9b7be3a9826a716735f82a55773..e8a6438daecea772905c14ee59e935fd559255b4 100644 (file)
@@ -16,6 +16,7 @@
 #include "rgw_string.h"
 #include "rgw_rados.h"
 #include "rgw_http_errors.h"
+#include "rgw_arn.h"
 
 #include "common/ceph_crypto.h"
 #include "common/armor.h"
@@ -33,7 +34,7 @@
 #define dout_context g_ceph_context
 #define dout_subsys ceph_subsys_rgw
 
-using rgw::IAM::ARN;
+using rgw::ARN;
 using rgw::IAM::Effect;
 using rgw::IAM::op_to_perm;
 using rgw::IAM::Policy;
@@ -73,6 +74,7 @@ rgw_http_errors rgw_http_s3_errors({
     { ERR_INVALID_CORS_RULES_ERROR, {400, "InvalidRequest" }},
     { ERR_INVALID_WEBSITE_ROUTING_RULES_ERROR, {400, "InvalidRequest" }},
     { ERR_INVALID_ENCRYPTION_ALGORITHM, {400, "InvalidEncryptionAlgorithmError" }},
+    { ERR_INVALID_RETENTION_PERIOD,{400, "InvalidRetentionPeriod"}},
     { ERR_LENGTH_REQUIRED, {411, "MissingContentLength" }},
     { EACCES, {403, "AccessDenied" }},
     { EPERM, {403, "AccessDenied" }},
@@ -95,6 +97,7 @@ rgw_http_errors rgw_http_s3_errors({
     { ERR_NO_SUCH_SUBUSER, {404, "NoSuchSubUser"}},
     { ERR_NO_SUCH_ENTITY, {404, "NoSuchEntity"}},
     { ERR_NO_SUCH_CORS_CONFIGURATION, {404, "NoSuchCORSConfiguration"}},
+    { ERR_NO_SUCH_OBJECT_LOCK_CONFIGURATION, {404, "ObjectLockConfigurationNotFoundError"}},
     { ERR_METHOD_NOT_ALLOWED, {405, "MethodNotAllowed" }},
     { ETIMEDOUT, {408, "RequestTimeout" }},
     { EEXIST, {409, "BucketAlreadyExists" }},
@@ -1089,7 +1092,7 @@ bool verify_user_permission(const DoutPrefixProvider* dpp,
                             struct req_state * const s,
                             RGWAccessControlPolicy * const user_acl,
                             const vector<rgw::IAM::Policy>& user_policies,
-                            const rgw::IAM::ARN& res,
+                            const rgw::ARN& res,
                             const uint64_t op)
 {
   auto usr_policy_res = eval_user_policies(user_policies, s->env, boost::none, op, res);
@@ -1129,7 +1132,7 @@ bool verify_user_permission_no_policy(const DoutPrefixProvider* dpp, struct req_
 
 bool verify_user_permission(const DoutPrefixProvider* dpp,
                             struct req_state * const s,
-                            const rgw::IAM::ARN& res,
+                            const rgw::ARN& res,
                             const uint64_t op)
 {
   return verify_user_permission(dpp, s, s->user_acl.get(), s->iam_user_policies, res, op);
index 07d6e802c4e608f2f5a73219e08589556b020678..2f684972182dfe356ceb508bd0221c2e0eedd595 100644 (file)
@@ -30,6 +30,7 @@
 #include "rgw_string.h"
 #include "common/async/yield_context.h"
 #include "rgw_website.h"
+#include "rgw_object_lock.h"
 #include "cls/version/cls_version_types.h"
 #include "cls/user/cls_user_types.h"
 #include "cls/rgw/cls_rgw_types.h"
@@ -80,6 +81,12 @@ using ceph::crypto::MD5;
 #define RGW_ATTR_X_ROBOTS_TAG  RGW_ATTR_PREFIX "x-robots-tag"
 #define RGW_ATTR_STORAGE_CLASS  RGW_ATTR_PREFIX "storage_class"
 
+/* S3 Object Lock*/
+#define RGW_ATTR_OBJECT_LOCK        RGW_ATTR_PREFIX "object-lock"
+#define RGW_ATTR_OBJECT_RETENTION   RGW_ATTR_PREFIX "object-retention"
+#define RGW_ATTR_OBJECT_LEGAL_HOLD  RGW_ATTR_PREFIX "object-legal-hold"
+
+
 #define RGW_ATTR_PG_VER        RGW_ATTR_PREFIX "pg_ver"
 #define RGW_ATTR_SOURCE_ZONE    RGW_ATTR_PREFIX "source_zone"
 #define RGW_ATTR_TAGS           RGW_ATTR_PREFIX RGW_AMZ_PREFIX "tagging"
@@ -208,6 +215,8 @@ using ceph::crypto::MD5;
 #define ERR_NO_SUCH_SUBUSER      2043
 #define ERR_MFA_REQUIRED         2044
 #define ERR_NO_SUCH_CORS_CONFIGURATION 2045
+#define ERR_NO_SUCH_OBJECT_LOCK_CONFIGURATION  2046
+#define ERR_INVALID_RETENTION_PERIOD 2047
 #define ERR_USER_SUSPENDED       2100
 #define ERR_INTERNAL_ERROR       2200
 #define ERR_NOT_IMPLEMENTED      2201
@@ -285,31 +294,35 @@ struct rgw_err {
 /* Helper class used for RGWHTTPArgs parsing */
 class NameVal
 {
-   string str;
-   string name;
-   string val;
+   const std::string str;
+   std::string name;
+   std::string val;
  public:
-    explicit NameVal(string nv) : str(nv) {}
+    explicit NameVal(const std::string& nv) : str(nv) {}
 
     int parse();
 
-    string& get_name() { return name; }
-    string& get_val() { return val; }
+    std::string& get_name() { return name; }
+    std::string& get_val() { return val; }
 };
 
 /** Stores the XML arguments associated with the HTTP request in req_state*/
 class RGWHTTPArgs {
-  string str, empty_str;
-  map<string, string> val_map;
-  map<string, string> sys_val_map;
-  map<string, string> sub_resources;
-  bool has_resp_modifier;
-  bool admin_subresource_added;
+  std::string str, empty_str;
+  std::map<std::string, std::string> val_map;
+  std::map<std::string, std::string> sys_val_map;
+  std::map<std::string, std::string> sub_resources;
+  bool has_resp_modifier = false;
+  bool admin_subresource_added = false;
  public:
-  RGWHTTPArgs() : has_resp_modifier(false), admin_subresource_added(false) {}
+  RGWHTTPArgs() = default;
+  explicit RGWHTTPArgs(const std::string& s) {
+      set(s);
+      parse();
+  }
 
   /** Set the arguments; as received */
-  void set(string s) {
+  void set(const std::string& s) {
     has_resp_modifier = false;
     val_map.clear();
     sub_resources.clear();
@@ -317,18 +330,18 @@ class RGWHTTPArgs {
   }
   /** parse the received arguments */
   int parse();
-  void append(const string& name, const string& val);
+  void append(const std::string& name, const string& val);
   /** Get the value for a specific argument parameter */
-  const string& get(const string& name, bool *exists = NULL) const;
+  const string& get(const std::string& name, bool *exists = NULL) const;
   boost::optional<const std::string&>
   get_optional(const std::string& name) const;
-  int get_bool(const string& name, bool *val, bool *exists);
+  int get_bool(const std::string& name, bool *val, bool *exists);
   int get_bool(const char *name, bool *val, bool *exists);
   void get_bool(const char *name, bool *val, bool def_val);
   int get_int(const char *name, int *val, int def_val);
 
   /** Get the value for specific system argument parameter */
-  std::string sys_get(const string& name, bool *exists = nullptr) const;
+  std::string sys_get(const std::string& name, bool *exists = nullptr) const;
 
   /** see if a parameter is contained in this RGWHTTPArgs */
   bool exists(const char *name) const {
@@ -337,7 +350,7 @@ class RGWHTTPArgs {
   bool sub_resource_exists(const char *name) const {
     return (sub_resources.find(name) != std::end(sub_resources));
   }
-  map<string, string>& get_params() {
+  std::map<std::string, std::string>& get_params() {
     return val_map;
   }
   const std::map<std::string, std::string>& get_sub_resources() const {
@@ -350,12 +363,12 @@ class RGWHTTPArgs {
     return has_resp_modifier;
   }
   void set_system() { /* make all system params visible */
-    map<string, string>::iterator iter;
+    std::map<std::string, std::string>::iterator iter;
     for (iter = sys_val_map.begin(); iter != sys_val_map.end(); ++iter) {
       val_map[iter->first] = iter->second;
     }
   }
-  const string& get_str() {
+  const std::string& get_str() {
     return str;
   }
 }; // RGWHTTPArgs
@@ -488,6 +501,12 @@ enum RGWOpType {
   RGW_OP_GET_USER_POLICY,
   RGW_OP_LIST_USER_POLICIES,
   RGW_OP_DELETE_USER_POLICY,
+  RGW_OP_PUT_BUCKET_OBJ_LOCK,
+  RGW_OP_GET_BUCKET_OBJ_LOCK,
+  RGW_OP_PUT_OBJ_RETENTION,
+  RGW_OP_GET_OBJ_RETENTION,
+  RGW_OP_PUT_OBJ_LEGAL_HOLD,
+  RGW_OP_GET_OBJ_LEGAL_HOLD,
   /* rgw specific */
   RGW_OP_ADMIN_SET_METADATA,
   RGW_OP_GET_OBJ_LAYOUT,
@@ -1331,6 +1350,7 @@ enum RGWBucketFlags {
   BUCKET_VERSIONS_SUSPENDED = 0x4,
   BUCKET_DATASYNC_DISABLED = 0X8,
   BUCKET_MFA_ENABLED = 0X10,
+  BUCKET_OBJ_LOCK_ENABLED = 0X20,
 };
 
 enum RGWBucketIndexType {
@@ -1390,12 +1410,16 @@ struct RGWBucketInfo {
 
   map<string, uint32_t> mdsearch_config;
 
+
+
   /* resharding */
   uint8_t reshard_status;
   string new_bucket_instance_id;
 
+  RGWObjectLock obj_lock;
+
   void encode(bufferlist& bl) const {
-     ENCODE_START(19, 4, bl);
+     ENCODE_START(20, 4, bl);
      encode(bucket, bl);
      encode(owner.id, bl);
      encode(flags, bl);
@@ -1422,10 +1446,13 @@ struct RGWBucketInfo {
      encode(mdsearch_config, bl);
      encode(reshard_status, bl);
      encode(new_bucket_instance_id, bl);
+     if (obj_lock_enabled()) {
+       encode(obj_lock, bl);
+     }
      ENCODE_FINISH(bl);
   }
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START_LEGACY_COMPAT_LEN_32(19, 4, 4, bl);
+    DECODE_START_LEGACY_COMPAT_LEN_32(20, 4, 4, bl);
      decode(bucket, bl);
      if (struct_v >= 2) {
        string s;
@@ -1489,6 +1516,9 @@ struct RGWBucketInfo {
        decode(reshard_status, bl);
        decode(new_bucket_instance_id, bl);
      }
+     if (struct_v >= 20 && obj_lock_enabled()) {
+       decode(obj_lock, bl);
+     }
      DECODE_FINISH(bl);
   }
   void dump(Formatter *f) const;
@@ -1501,6 +1531,7 @@ struct RGWBucketInfo {
   bool versioning_enabled() const { return (versioning_status() & (BUCKET_VERSIONED | BUCKET_VERSIONS_SUSPENDED)) == BUCKET_VERSIONED; }
   bool mfa_enabled() const { return (versioning_status() & BUCKET_MFA_ENABLED) != 0; }
   bool datasync_flag_enabled() const { return (flags & BUCKET_DATASYNC_DISABLED) == 0; }
+  bool obj_lock_enabled() const { return (flags & BUCKET_OBJ_LOCK_ENABLED) != 0; }
 
   bool has_swift_versioning() const {
     /* A bucket may be versioned through one mechanism only. */
@@ -2450,12 +2481,12 @@ rgw::IAM::Effect eval_user_policies(const vector<rgw::IAM::Policy>& user_policie
                           const rgw::IAM::Environment& env,
                           boost::optional<const rgw::auth::Identity&> id,
                           const uint64_t op,
-                          const rgw::IAM::ARN& arn);
+                          const rgw::ARN& arn);
 bool verify_user_permission(const DoutPrefixProvider* dpp,
                             struct req_state * const s,
                             RGWAccessControlPolicy * const user_acl,
                             const vector<rgw::IAM::Policy>& user_policies,
-                            const rgw::IAM::ARN& res,
+                            const rgw::ARN& res,
                             const uint64_t op);
 bool verify_user_permission_no_policy(const DoutPrefixProvider* dpp,
                                       struct req_state * const s,
@@ -2463,7 +2494,7 @@ bool verify_user_permission_no_policy(const DoutPrefixProvider* dpp,
                                       const int perm);
 bool verify_user_permission(const DoutPrefixProvider* dpp,
                             struct req_state * const s,
-                            const rgw::IAM::ARN& res,
+                            const rgw::ARN& res,
                             const uint64_t op);
 bool verify_user_permission_no_policy(const DoutPrefixProvider* dpp,
                                       struct req_state * const s,
index b1acb9813d92432be90a0fbaaf630bc4693198f8..bcd7fbc27a08b3c1e89286cf9247beeb3494d6cf 100644 (file)
@@ -98,7 +98,7 @@ int RGWGetObj_Decompress::handle_data(bufferlist& bl, off_t bl_ofs, off_t bl_len
     in_bl.copy(ofs_in_bl, first_block->len, tmp);
     int cr = compressor->decompress(tmp, out_bl);
     if (cr < 0) {
-      lderr(cct) << "Compression failed with exit code " << cr << dendl;
+      lderr(cct) << "Decompression failed with exit code " << cr << dendl;
       return cr;
     }
     ++first_block;
index 4ef9a6ac94e2233a7b2eea0a0dd602efbd9779d4..1ccefc2daba54b827400e63ce0e0f5d951159a6f 100644 (file)
@@ -874,7 +874,12 @@ void RGWCoroutinesManagerRegistry::dump(Formatter *f) const {
 
 void RGWCoroutine::call(RGWCoroutine *op)
 {
-  stack->call(op);
+  if (op) {
+    stack->call(op);
+  } else {
+    // the call()er expects this to set a retcode
+    retcode = 0;
+  }
 }
 
 RGWCoroutinesStack *RGWCoroutine::spawn(RGWCoroutine *op, bool wait)
index 7284c10dc4e4fe49d8bd17e27756618580fc55e2..66d05e0876e75637a879bb87f54ff033189c3d53 100644 (file)
@@ -836,7 +836,7 @@ int RGWSyncLogTrimCR::request_complete()
     return r;
   }
   // nothing left to trim, update last_trim_marker
-  if (*last_trim_marker < to_marker) {
+  if (*last_trim_marker < to_marker && to_marker != max_marker) {
     *last_trim_marker = to_marker;
   }
   return 0;
index e919217cbaac02b9a4248ea86fa2f378868cb289..70b52f357af48502a39a6cf7d0f2dafbccb74784 100644 (file)
@@ -1278,6 +1278,9 @@ class RGWSyncLogTrimCR : public RGWRadosTimelogTrimCR {
   CephContext *cct;
   std::string *last_trim_marker;
  public:
+  // a marker that compares greater than any timestamp-based index
+  static constexpr const char* max_marker = "99999999";
+
   RGWSyncLogTrimCR(RGWRados *store, const std::string& oid,
                    const std::string& to_marker, std::string *last_trim_marker);
   int request_complete() override;
index 57ee38f3267b9c4e3aa10e35fdffca5aa8aee045..0920e66ecf2ce51e680461f6ba8cc69da58e4f5b 100644 (file)
@@ -1421,7 +1421,7 @@ public:
         spawned_keys.clear();
         yield call(new RGWReadRemoteDataLogShardCR(sync_env, shard_id, sync_marker.marker,
                                                    &next_marker, &log_entries, &truncated));
-        if (retcode < 0) {
+        if (retcode < 0 && retcode != -ENOENT) {
           tn->log(0, SSTR("ERROR: failed to read remote data log info: ret=" << retcode));
           stop_spawned_services();
           drain_all();
@@ -3545,14 +3545,6 @@ const std::string& get_stable_marker(const rgw_data_sync_marker& m)
   return m.state == m.FullSync ? m.next_step_marker : m.marker;
 }
 
-/// comparison operator for take_min_markers()
-bool operator<(const rgw_data_sync_marker& lhs,
-               const rgw_data_sync_marker& rhs)
-{
-  // sort by stable marker
-  return get_stable_marker(lhs) < get_stable_marker(rhs);
-}
-
 /// populate the container starting with 'dest' with the minimum stable marker
 /// of each shard for all of the peers in [first, last)
 template <typename IterIn, typename IterOut>
@@ -3561,18 +3553,12 @@ void take_min_markers(IterIn first, IterIn last, IterOut dest)
   if (first == last) {
     return;
   }
-  // initialize markers with the first peer's
-  auto m = dest;
-  for (auto &shard : first->sync_markers) {
-    *m = std::move(shard.second);
-    ++m;
-  }
-  // for remaining peers, replace with smaller markers
-  for (auto p = first + 1; p != last; ++p) {
-    m = dest;
+  for (auto p = first; p != last; ++p) {
+    auto m = dest;
     for (auto &shard : p->sync_markers) {
-      if (shard.second < *m) {
-        *m = std::move(shard.second);
+      const auto& stable = get_stable_marker(shard.second);
+      if (*m > stable) {
+        *m = stable;
       }
       ++m;
     }
@@ -3582,12 +3568,13 @@ void take_min_markers(IterIn first, IterIn last, IterOut dest)
 } // anonymous namespace
 
 class DataLogTrimCR : public RGWCoroutine {
+  using TrimCR = RGWSyncLogTrimCR;
   RGWRados *store;
   RGWHTTPManager *http;
   const int num_shards;
   const std::string& zone_id; //< my zone id
   std::vector<rgw_data_sync_status> peer_status; //< sync status for each peer
-  std::vector<rgw_data_sync_marker> min_shard_markers; //< min marker per shard
+  std::vector<std::string> min_shard_markers; //< min marker per shard
   std::vector<std::string>& last_trim; //< last trimmed marker per shard
   int ret{0};
 
@@ -3598,7 +3585,7 @@ class DataLogTrimCR : public RGWCoroutine {
       num_shards(num_shards),
       zone_id(store->svc.zone->get_zone().id),
       peer_status(store->svc.zone->get_zone_data_notify_to_map().size()),
-      min_shard_markers(num_shards),
+      min_shard_markers(num_shards, TrimCR::max_marker),
       last_trim(last_trim)
   {}
 
@@ -3651,16 +3638,14 @@ int DataLogTrimCR::operate()
 
       for (int i = 0; i < num_shards; i++) {
         const auto& m = min_shard_markers[i];
-        auto& stable = get_stable_marker(m);
-        if (stable <= last_trim[i]) {
+        if (m <= last_trim[i]) {
           continue;
         }
         ldout(cct, 10) << "trimming log shard " << i
-            << " at marker=" << stable
+            << " at marker=" << m
             << " last_trim=" << last_trim[i] << dendl;
-        using TrimCR = RGWSyncLogTrimCR;
         spawn(new TrimCR(store, store->data_log->get_oid(i),
-                         stable, &last_trim[i]),
+                         m, &last_trim[i]),
               true);
       }
     }
index 6bdda2b460f2d01360aff3a014a77af3d31bfddb..d2aec4e71647ea762418f4bb0820465c250d219a 100644 (file)
@@ -107,6 +107,42 @@ namespace rgw {
     return fhr;
   }
 
+  LookupFHResult RGWLibFS::fake_leaf(RGWFileHandle* parent,
+                                    const char *path,
+                                    enum rgw_fh_type type,
+                                    struct stat *st, uint32_t st_mask,
+                                    uint32_t flags)
+  {
+    /* synthesize a minimal handle from parent, path, type, and st */
+    using std::get;
+
+    flags |= RGWFileHandle::FLAG_CREATE;
+
+    switch (type) {
+    case RGW_FS_TYPE_DIRECTORY:
+      flags |= RGWFileHandle::FLAG_DIRECTORY;
+      break;
+    default:
+      /* file */
+      break;
+    };
+
+    LookupFHResult fhr = lookup_fh(parent, path, flags);
+    if (get<0>(fhr)) {
+      RGWFileHandle* rgw_fh = get<0>(fhr);
+      if (st) {        
+       lock_guard guard(rgw_fh->mtx);
+       if (st_mask & RGW_SETATTR_SIZE) {
+         rgw_fh->set_size(st->st_size);
+       }
+       if (st_mask & RGW_SETATTR_MTIME) {
+         rgw_fh->set_times(st->st_mtim);
+       }
+      } /* st */
+    } /* rgw_fh */
+    return fhr;
+  } /* RGWLibFS::fake_leaf */
+
   LookupFHResult RGWLibFS::stat_leaf(RGWFileHandle* parent,
                                     const char *path,
                                     enum rgw_fh_type type,
@@ -355,6 +391,7 @@ namespace rgw {
         * atomicity at this endpoint */
        struct rgw_file_handle *fh;
        rc = rgw_lookup(get_fs(), parent->get_fh(), name, &fh,
+                       nullptr /* st */, 0 /* mask */,
                        RGW_LOOKUP_FLAG_NONE);
        if (!! rc)
          return rc;
@@ -528,6 +565,7 @@ namespace rgw {
     rgw_file_handle *lfh;
 
     rc = rgw_lookup(get_fs(), parent->get_fh(), name, &lfh,
+                   nullptr /* st */, 0 /* mask */,
                    RGW_LOOKUP_FLAG_NONE);
     if (! rc) {
       /* conflict! */
@@ -642,6 +680,7 @@ namespace rgw {
 
     rgw_file_handle *lfh;
     rc = rgw_lookup(get_fs(), parent->get_fh(), name, &lfh,
+                   nullptr /* st */, 0 /* mask */,
                    RGW_LOOKUP_FLAG_NONE);
     if (! rc) {
       /* conflict! */
@@ -709,7 +748,8 @@ namespace rgw {
     using std::get;
 
     rgw_file_handle *lfh;
-    rc = rgw_lookup(get_fs(), parent->get_fh(), name, &lfh, 
+    rc = rgw_lookup(get_fs(), parent->get_fh(), name, &lfh,
+                   nullptr /* st */, 0 /* mask */,
                     RGW_LOOKUP_FLAG_NONE);
     if (! rc) {
       /* conflict! */
@@ -1936,7 +1976,8 @@ int rgw_unlink(struct rgw_fs *rgw_fs, struct rgw_file_handle *parent_fh,
 */
 int rgw_lookup(struct rgw_fs *rgw_fs,
              struct rgw_file_handle *parent_fh, const char* path,
-             struct rgw_file_handle **fh, uint32_t flags)
+             struct rgw_file_handle **fh,
+             struct stat *st, uint32_t mask, uint32_t flags)
 {
   //CephContext* cct = static_cast<CephContext*>(rgw_fs->rgw);
   RGWLibFS *fs = static_cast<RGWLibFS*>(rgw_fs->fs_private);
@@ -1972,14 +2013,29 @@ int rgw_lookup(struct rgw_fs *rgw_fs,
        << dendl;
       fs->ref(rgw_fh);
     } else {
-      /* lookup in a readdir callback */
       enum rgw_fh_type fh_type = fh_type_of(flags);
 
       uint32_t sl_flags = (flags & RGW_LOOKUP_FLAG_RCB)
        ? RGWFileHandle::FLAG_NONE
        : RGWFileHandle::FLAG_EXACT_MATCH;
 
-      fhr = fs->stat_leaf(parent, path, fh_type, sl_flags);
+      bool fast_attrs= fs->get_context()->_conf->rgw_nfs_s3_fast_attrs;
+
+      if ((flags & RGW_LOOKUP_FLAG_RCB) && fast_attrs) {
+       /* FAKE STAT--this should mean, interpolate special
+        * owner, group, and perms masks */
+       fhr = fs->fake_leaf(parent, path, fh_type, st, mask, sl_flags);
+      } else {
+       if ((fh_type == RGW_FS_TYPE_DIRECTORY) && fast_attrs) {
+         /* trust cached dir, if present */
+         fhr = fs->lookup_fh(parent, path, RGWFileHandle::FLAG_DIRECTORY);
+         if (get<0>(fhr)) {
+           rgw_fh = get<0>(fhr);
+           goto done;
+         }
+       }
+       fhr = fs->stat_leaf(parent, path, fh_type, sl_flags);
+      }
       if (! get<0>(fhr)) {
        if (! (flags & RGW_LOOKUP_FLAG_CREATE))
          return -ENOENT;
@@ -1990,6 +2046,7 @@ int rgw_lookup(struct rgw_fs *rgw_fs,
     }
   } /* !root */
 
+done:
   struct rgw_file_handle *rfh = rgw_fh->get_fh();
   *fh = rfh;
 
@@ -2124,8 +2181,8 @@ int rgw_readdir(struct rgw_fs *rgw_fs,
   if ((*offset == 0) &&
       (flags & RGW_READDIR_FLAG_DOTDOT)) {
     /* send '.' and '..' with their NFS-defined offsets */
-    rcb(".", cb_arg, 1, RGW_LOOKUP_FLAG_DIR);
-    rcb("..", cb_arg, 2, RGW_LOOKUP_FLAG_DIR);
+    rcb(".", cb_arg, 1, nullptr, 0, RGW_LOOKUP_FLAG_DIR);
+    rcb("..", cb_arg, 2, nullptr, 0, RGW_LOOKUP_FLAG_DIR);
   }
 
   int rc = parent->readdir(rcb, cb_arg, offset, eof, flags);
@@ -2152,8 +2209,8 @@ int rgw_readdir2(struct rgw_fs *rgw_fs,
   if ((! name) &&
       (flags & RGW_READDIR_FLAG_DOTDOT)) {
     /* send '.' and '..' with their NFS-defined offsets */
-    rcb(".", cb_arg, 1, RGW_LOOKUP_FLAG_DIR);
-    rcb("..", cb_arg, 2, RGW_LOOKUP_FLAG_DIR);
+    rcb(".", cb_arg, 1, nullptr, 0, RGW_LOOKUP_FLAG_DIR);
+    rcb("..", cb_arg, 2, nullptr, 0, RGW_LOOKUP_FLAG_DIR);
   }
 
   int rc = parent->readdir(rcb, cb_arg, name, eof, flags);
index 46623ecb4b0f62aadf165743af11e8398d4bb7cf..f9cebc02e33b9e589ba055891c2d53a4e5fc464e 100644 (file)
@@ -272,6 +272,9 @@ namespace rgw {
 #define CREATE_FLAGS(x) \
     ((x) & ~(RGWFileHandle::FLAG_CREATE|RGWFileHandle::FLAG_LOCK))
 
+    static constexpr uint32_t RCB_MASK = \
+      RGW_SETATTR_MTIME|RGW_SETATTR_CTIME|RGW_SETATTR_ATIME|RGW_SETATTR_SIZE;
+
     friend class RGWLibFS;
 
   private:
@@ -499,17 +502,17 @@ namespace rgw {
        reserve += (1 + tfh->object_name().length());
        tfh = tfh->parent;
       }
-      bool first = true;
+      int pos = 1;
       path.reserve(reserve);
       for (auto& s : boost::adaptors::reverse(segments)) {
-       if (! first)
+       if (pos > 1) {
          path += "/";
-       else {
+       else {
          if (!omit_bucket && (path.front() != '/')) // pretty-print
            path += "/";
-         first = false;
        }
        path += *s;
+       ++pos;
       }
       return path;
     }
@@ -636,12 +639,16 @@ namespace rgw {
       state.size = size;
     }
 
-    void set_times(real_time t) {
-      state.ctime = real_clock::to_timespec(t);
+    void set_times(const struct timespec &ts) {
+      state.ctime = ts;
       state.mtime = state.ctime;
       state.atime = state.ctime;
     }
 
+    void set_times(real_time t) {
+      set_times(real_clock::to_timespec(t));
+    }
+
     void set_ctime(const struct timespec &ts) {
       state.ctime = ts;
     }
@@ -1173,6 +1180,11 @@ namespace rgw {
                               RGWLibFS::BucketStats& bs,
                               uint32_t flags);
 
+    LookupFHResult fake_leaf(RGWFileHandle* parent, const char *path,
+                            enum rgw_fh_type type = RGW_FS_TYPE_NIL,
+                            struct stat *st = nullptr, uint32_t mask = 0,
+                            uint32_t flags = RGWFileHandle::FLAG_NONE);
+
     LookupFHResult stat_leaf(RGWFileHandle* parent, const char *path,
                             enum rgw_fh_type type = RGW_FS_TYPE_NIL,
                             uint32_t flags = RGWFileHandle::FLAG_NONE);
@@ -1399,7 +1411,7 @@ public:
     rgw_fh->add_marker(off, rgw_obj_key{marker.data(), ""},
                       RGW_FS_TYPE_DIRECTORY);
     ++d_count;
-    return rcb(name.data(), cb_arg, off, RGW_LOOKUP_FLAG_DIR);
+    return rcb(name.data(), cb_arg, off, nullptr, 0, RGW_LOOKUP_FLAG_DIR);
   }
 
   bool eof() {
@@ -1453,8 +1465,9 @@ public:
       const char* mk = get<const char*>(offset);
       if (mk) {
        std::string tmark{rgw_fh->relative_object_name()};
-       tmark += "/";
-       tmark += mk;    
+       if (tmark.length() > 0)
+         tmark += "/";
+       tmark += mk;
        marker = rgw_obj_key{std::move(tmark), "", ""};
       }
     }
@@ -1502,7 +1515,7 @@ public:
   }
 
   int operator()(const boost::string_ref name, const rgw_obj_key& marker,
-               uint8_t type) {
+                const ceph::real_time& t, const uint64_t fsz, uint8_t type) {
 
     assert(name.length() > 0); // all cases handled in callers
 
@@ -1511,10 +1524,25 @@ public:
     if (unlikely(!! ioff)) {
       *ioff = off;
     }
+
     /* update traversal cache */
     rgw_fh->add_marker(off, marker, type);
     ++d_count;
-    return rcb(name.data(), cb_arg, off,
+
+    /* set c/mtime and size from bucket index entry */
+    struct stat st = {};
+#ifdef HAVE_STAT_ST_MTIMESPEC_TV_NSEC
+    st.st_atimespec = ceph::real_clock::to_timespec(t);
+    st.st_mtimespec = st.st_atimespec;
+    st.st_ctimespec = st.st_atimespec;
+#else
+    st.st_atim = ceph::real_clock::to_timespec(t);
+    st.st_mtim = st.st_atim;
+    st.st_ctim = st.st_atim;
+#endif
+    st.st_size = fsz;
+
+    return rcb(name.data(), cb_arg, off, &st, RGWFileHandle::RCB_MASK,
               (type == RGW_FS_TYPE_DIRECTORY) ?
               RGW_LOOKUP_FLAG_DIR :
               RGW_LOOKUP_FLAG_FILE);
@@ -1548,9 +1576,13 @@ public:
                             << " prefix=" << prefix << " "
                             << " obj path=" << iter.key.name
                             << " (" << sref << ")" << ""
+                            << " mtime="
+                            << real_clock::to_time_t(iter.meta.mtime)
+                            << " size=" << iter.meta.accounted_size
                             << dendl;
 
-      if (! this->operator()(sref, next_marker, RGW_FS_TYPE_FILE)) {
+      if (! this->operator()(sref, next_marker, iter.meta.mtime,
+                            iter.meta.accounted_size, RGW_FS_TYPE_FILE)) {
        /* caller cannot accept more */
        lsubdout(cct, rgw, 5) << "readdir rcb failed"
                              << " dirent=" << sref.data()
@@ -1561,6 +1593,8 @@ public:
       }
       ++ix;
     }
+
+    auto cnow = real_clock::now();
     for (auto& iter : common_prefixes) {
 
       lsubdout(cct, rgw, 15) << "readdir common prefixes prefix: " << prefix
@@ -1597,7 +1631,8 @@ public:
        return;
       }
 
-      if (! this->operator()(sref, next_marker, RGW_FS_TYPE_DIRECTORY)) {
+      if (! this->operator()(sref, next_marker, cnow, 0,
+                            RGW_FS_TYPE_DIRECTORY)) {
        /* caller cannot accept more */
        lsubdout(cct, rgw, 5) << "readdir rcb failed"
                              << " dirent=" << sref.data()
index d0f0baead6e5f95622787459b1e42d20f6903ffd..bb68c1450ce1b40ab411090e36d41fc88715837d 100644 (file)
@@ -13,6 +13,7 @@
 #include "rgw_common.h"
 #include "rgw_http_client.h"
 #include "rgw_http_errors.h"
+#include "common/async/completion.h"
 #include "common/RefCountedObj.h"
 
 #include "rgw_coroutine.h"
@@ -46,15 +47,38 @@ struct rgw_http_req_data : public RefCountedObject {
   Mutex lock;
   Cond cond;
 
+  using Signature = void(boost::system::error_code);
+  using Completion = ceph::async::Completion<Signature>;
+  std::unique_ptr<Completion> completion;
+
   rgw_http_req_data() : id(-1), lock("rgw_http_req_data::lock") {
     memset(error_buf, 0, sizeof(error_buf));
   }
 
-  int wait() {
-    Mutex::Locker l(lock);
+  template <typename ExecutionContext, typename CompletionToken>
+  auto async_wait(ExecutionContext& ctx, CompletionToken&& token) {
+    boost::asio::async_completion<CompletionToken, Signature> init(token);
+    auto& handler = init.completion_handler;
+    {
+      std::unique_lock l{lock};
+      completion = Completion::create(ctx.get_executor(), std::move(handler));
+    }
+    return init.result.get();
+  }
+  int wait(optional_yield y) {
     if (done) {
       return ret;
     }
+#ifdef HAVE_BOOST_CONTEXT
+    if (y) {
+      auto& context = y.get_io_context();
+      auto& yield = y.get_yield_context();
+      boost::system::error_code ec;
+      async_wait(context, yield[ec]);
+      return -ec.value();
+    }
+#endif
+    Mutex::Locker l(lock);
     cond.Wait(lock);
     return ret;
   }
@@ -73,15 +97,15 @@ struct rgw_http_req_data : public RefCountedObject {
     curl_handle = NULL;
     h = NULL;
     done = true;
-    cond.Signal();
-  }
-
-  bool _is_done() {
-    return done;
+    if (completion) {
+      boost::system::error_code ec(-ret, boost::system::system_category());
+      Completion::post(std::move(completion), ec);
+    } else {
+      cond.Signal();
+    }
   }
 
   bool is_done() {
-    Mutex::Locker l(lock);
     return done;
   }
 
@@ -448,9 +472,9 @@ static bool is_upload_request(const string& method)
 /*
  * process a single simple one off request
  */
-int RGWHTTPClient::process()
+int RGWHTTPClient::process(optional_yield y)
 {
-  return RGWHTTP::process(this);
+  return RGWHTTP::process(this, y);
 }
 
 string RGWHTTPClient::to_str()
@@ -528,9 +552,9 @@ bool RGWHTTPClient::is_done()
 /*
  * wait for async request to complete
  */
-int RGWHTTPClient::wait()
+int RGWHTTPClient::wait(optional_yield y)
 {
-  return req_data->wait();
+  return req_data->wait(y);
 }
 
 void RGWHTTPClient::cancel()
@@ -867,7 +891,7 @@ void RGWHTTPManager::_unlink_request(rgw_http_req_data *req_data)
   if (req_data->curl_handle) {
     curl_multi_remove_handle((CURLM *)multi_handle, req_data->get_easy_handle());
   }
-  if (!req_data->_is_done()) {
+  if (!req_data->is_done()) {
     _finish_request(req_data, -ECANCELED);
   }
 }
@@ -1211,7 +1235,7 @@ int RGWHTTP::send(RGWHTTPClient *req) {
   return 0;
 }
 
-int RGWHTTP::process(RGWHTTPClient *req) {
+int RGWHTTP::process(RGWHTTPClient *req, optional_yield y) {
   if (!req) {
     return 0;
   }
@@ -1220,6 +1244,6 @@ int RGWHTTP::process(RGWHTTPClient *req) {
     return r;
   }
 
-  return req->wait();
+  return req->wait(y);
 }
 
index 04d8506e3903d7aa0432048a883550abfe7bb465..d519fbb8ca774a7da3e5a5aaf8bae7fff2c27fba 100644 (file)
@@ -4,6 +4,7 @@
 #ifndef CEPH_RGW_HTTP_CLIENT_H
 #define CEPH_RGW_HTTP_CLIENT_H
 
+#include "common/async/yield_context.h"
 #include "common/RWLock.h"
 #include "common/Cond.h"
 #include "rgw_common.h"
@@ -178,9 +179,9 @@ public:
     verify_ssl = flag;
   }
 
-  int process();
+  int process(optional_yield y=null_yield);
 
-  int wait();
+  int wait(optional_yield y=null_yield);
   void cancel();
   bool is_done();
 
@@ -360,6 +361,6 @@ class RGWHTTP
 {
 public:
   static int send(RGWHTTPClient *req);
-  static int process(RGWHTTPClient *req);
+  static int process(RGWHTTPClient *req, optional_yield y=null_yield);
 };
 #endif
index 05357917f07bc90d2b90367573678c1814a86354..846d5052e5736004dde487df558299d1a839e4e9 100644 (file)
@@ -61,340 +61,7 @@ struct actpair {
   const uint64_t bit;
 };
 
-namespace {
-boost::optional<Partition> to_partition(const smatch::value_type& p,
-                                       bool wildcards) {
-  if (p == "aws") {
-    return Partition::aws;
-  } else if (p == "aws-cn") {
-    return Partition::aws_cn;
-  } else if (p == "aws-us-gov") {
-    return Partition::aws_us_gov;
-  } else if (p == "*" && wildcards) {
-    return Partition::wildcard;
-  } else {
-    return boost::none;
-  }
-
-  ceph_abort();
-}
-
-boost::optional<Service> to_service(const smatch::value_type& s,
-                                   bool wildcards) {
-  static const unordered_map<string, Service> services = {
-    { "acm", Service::acm },
-    { "apigateway", Service::apigateway },
-    { "appstream", Service::appstream },
-    { "artifact", Service::artifact },
-    { "autoscaling", Service::autoscaling },
-    { "aws-marketplace", Service::aws_marketplace },
-    { "aws-marketplace-management",
-      Service::aws_marketplace_management },
-    { "aws-portal", Service::aws_portal },
-    { "cloudformation", Service::cloudformation },
-    { "cloudfront", Service::cloudfront },
-    { "cloudhsm", Service::cloudhsm },
-    { "cloudsearch", Service::cloudsearch },
-    { "cloudtrail", Service::cloudtrail },
-    { "cloudwatch", Service::cloudwatch },
-    { "codebuild", Service::codebuild },
-    { "codecommit", Service::codecommit },
-    { "codedeploy", Service::codedeploy },
-    { "codepipeline", Service::codepipeline },
-    { "cognito-identity", Service::cognito_identity },
-    { "cognito-idp", Service::cognito_idp },
-    { "cognito-sync", Service::cognito_sync },
-    { "config", Service::config },
-    { "datapipeline", Service::datapipeline },
-    { "devicefarm", Service::devicefarm },
-    { "directconnect", Service::directconnect },
-    { "dms", Service::dms },
-    { "ds", Service::ds },
-    { "dynamodb", Service::dynamodb },
-    { "ec2", Service::ec2 },
-    { "ecr", Service::ecr },
-    { "ecs", Service::ecs },
-    { "elasticache", Service::elasticache },
-    { "elasticbeanstalk", Service::elasticbeanstalk },
-    { "elasticfilesystem", Service::elasticfilesystem },
-    { "elasticloadbalancing", Service::elasticloadbalancing },
-    { "elasticmapreduce", Service::elasticmapreduce },
-    { "elastictranscoder", Service::elastictranscoder },
-    { "es", Service::es },
-    { "events", Service::events },
-    { "firehose", Service::firehose },
-    { "gamelift", Service::gamelift },
-    { "glacier", Service::glacier },
-    { "health", Service::health },
-    { "iam", Service::iam },
-    { "importexport", Service::importexport },
-    { "inspector", Service::inspector },
-    { "iot", Service::iot },
-    { "kinesis", Service::kinesis },
-    { "kinesisanalytics", Service::kinesisanalytics },
-    { "kms", Service::kms },
-    { "lambda", Service::lambda },
-    { "lightsail", Service::lightsail },
-    { "logs", Service::logs },
-    { "machinelearning", Service::machinelearning },
-    { "mobileanalytics", Service::mobileanalytics },
-    { "mobilehub", Service::mobilehub },
-    { "opsworks", Service::opsworks },
-    { "opsworks-cm", Service::opsworks_cm },
-    { "polly", Service::polly },
-    { "rds", Service::rds },
-    { "redshift", Service::redshift },
-    { "route53", Service::route53 },
-    { "route53domains", Service::route53domains },
-    { "s3", Service::s3 },
-    { "sdb", Service::sdb },
-    { "servicecatalog", Service::servicecatalog },
-    { "ses", Service::ses },
-    { "sns", Service::sns },
-    { "sqs", Service::sqs },
-    { "ssm", Service::ssm },
-    { "states", Service::states },
-    { "storagegateway", Service::storagegateway },
-    { "sts", Service::sts },
-    { "support", Service::support },
-    { "swf", Service::swf },
-    { "trustedadvisor", Service::trustedadvisor },
-    { "waf", Service::waf },
-    { "workmail", Service::workmail },
-    { "workspaces", Service::workspaces }};
-
-  if (wildcards && s == "*") {
-    return Service::wildcard;
-  }
-
-  auto i = services.find(s);
-  if (i == services.end()) {
-    return boost::none;
-  } else {
-    return i->second;
-  }
-}
-}
-
-ARN::ARN(const rgw_obj& o)
-  : partition(Partition::aws),
-    service(Service::s3),
-    region(),
-    account(o.bucket.tenant),
-    resource(o.bucket.name)
-{
-  resource.push_back('/');
-  resource.append(o.key.name);
-}
-
-ARN::ARN(const rgw_bucket& b)
-  : partition(Partition::aws),
-    service(Service::s3),
-    region(),
-    account(b.tenant),
-    resource(b.name) { }
-
-ARN::ARN(const rgw_bucket& b, const string& o)
-  : partition(Partition::aws),
-    service(Service::s3),
-    region(),
-    account(b.tenant),
-    resource(b.name) {
-  resource.push_back('/');
-  resource.append(o);
-}
-
-ARN::ARN(const string& resource_name, const string& type, const string& tenant, bool has_path)
-  : partition(Partition::aws),
-    service(Service::iam),
-    region(),
-    account(tenant),
-    resource(type) {
-  if (! has_path)
-    resource.push_back('/');
-  resource.append(resource_name);
-}
-
-boost::optional<ARN> ARN::parse(const string& s, bool wildcards) {
-  static const regex rx_wild("arn:([^:]*):([^:]*):([^:]*):([^:]*):([^:]*)",
-                            std::regex_constants::ECMAScript |
-                            std::regex_constants::optimize);
-  static const regex rx_no_wild(
-    "arn:([^:*]*):([^:*]*):([^:*]*):([^:*]*):(.*)",
-    std::regex_constants::ECMAScript |
-    std::regex_constants::optimize);
-
-  smatch match;
-
-  if ((s == "*") && wildcards) {
-    return ARN(Partition::wildcard, Service::wildcard, "*", "*", "*");
-  } else if (regex_match(s, match, wildcards ? rx_wild : rx_no_wild) &&
-            match.size() == 6) {
-    if (auto p = to_partition(match[1], wildcards)) {
-      if (auto s = to_service(match[2], wildcards)) {
-       return ARN(*p, *s, match[3], match[4], match[5]);
-      }
-    }
-  }
-  return boost::none;
-}
-
-string ARN::to_string() const {
-  string s;
-
-  if (partition == Partition::aws) {
-    s.append("aws:");
-  } else if (partition == Partition::aws_cn) {
-    s.append("aws-cn:");
-  } else if (partition == Partition::aws_us_gov) {
-    s.append("aws-us-gov:");
-  } else {
-    s.append("*:");
-  }
-
-  static const unordered_map<Service, string> services = {
-    { Service::acm, "acm" },
-    { Service::apigateway, "apigateway" },
-    { Service::appstream, "appstream" },
-    { Service::artifact, "artifact" },
-    { Service::autoscaling, "autoscaling" },
-    { Service::aws_marketplace, "aws-marketplace" },
-    { Service::aws_marketplace_management, "aws-marketplace-management" },
-    { Service::aws_portal, "aws-portal" },
-    { Service::cloudformation, "cloudformation" },
-    { Service::cloudfront, "cloudfront" },
-    { Service::cloudhsm, "cloudhsm" },
-    { Service::cloudsearch, "cloudsearch" },
-    { Service::cloudtrail, "cloudtrail" },
-    { Service::cloudwatch, "cloudwatch" },
-    { Service::codebuild, "codebuild" },
-    { Service::codecommit, "codecommit" },
-    { Service::codedeploy, "codedeploy" },
-    { Service::codepipeline, "codepipeline" },
-    { Service::cognito_identity, "cognito-identity" },
-    { Service::cognito_idp, "cognito-idp" },
-    { Service::cognito_sync, "cognito-sync" },
-    { Service::config, "config" },
-    { Service::datapipeline, "datapipeline" },
-    { Service::devicefarm, "devicefarm" },
-    { Service::directconnect, "directconnect" },
-    { Service::dms, "dms" },
-    { Service::ds, "ds" },
-    { Service::dynamodb, "dynamodb" },
-    { Service::ec2, "ec2" },
-    { Service::ecr, "ecr" },
-    { Service::ecs, "ecs" },
-    { Service::elasticache, "elasticache" },
-    { Service::elasticbeanstalk, "elasticbeanstalk" },
-    { Service::elasticfilesystem, "elasticfilesystem" },
-    { Service::elasticloadbalancing, "elasticloadbalancing" },
-    { Service::elasticmapreduce, "elasticmapreduce" },
-    { Service::elastictranscoder, "elastictranscoder" },
-    { Service::es, "es" },
-    { Service::events, "events" },
-    { Service::firehose, "firehose" },
-    { Service::gamelift, "gamelift" },
-    { Service::glacier, "glacier" },
-    { Service::health, "health" },
-    { Service::iam, "iam" },
-    { Service::importexport, "importexport" },
-    { Service::inspector, "inspector" },
-    { Service::iot, "iot" },
-    { Service::kinesis, "kinesis" },
-    { Service::kinesisanalytics, "kinesisanalytics" },
-    { Service::kms, "kms" },
-    { Service::lambda, "lambda" },
-    { Service::lightsail, "lightsail" },
-    { Service::logs, "logs" },
-    { Service::machinelearning, "machinelearning" },
-    { Service::mobileanalytics, "mobileanalytics" },
-    { Service::mobilehub, "mobilehub" },
-    { Service::opsworks, "opsworks" },
-    { Service::opsworks_cm, "opsworks-cm" },
-    { Service::polly, "polly" },
-    { Service::rds, "rds" },
-    { Service::redshift, "redshift" },
-    { Service::route53, "route53" },
-    { Service::route53domains, "route53domains" },
-    { Service::s3, "s3" },
-    { Service::sdb, "sdb" },
-    { Service::servicecatalog, "servicecatalog" },
-    { Service::ses, "ses" },
-    { Service::sns, "sns" },
-    { Service::sqs, "sqs" },
-    { Service::ssm, "ssm" },
-    { Service::states, "states" },
-    { Service::storagegateway, "storagegateway" },
-    { Service::sts, "sts" },
-    { Service::support, "support" },
-    { Service::swf, "swf" },
-    { Service::trustedadvisor, "trustedadvisor" },
-    { Service::waf, "waf" },
-    { Service::workmail, "workmail" },
-    { Service::workspaces, "workspaces" }};
-
-  auto i = services.find(service);
-  if (i != services.end()) {
-    s.append(i->second);
-  } else {
-    s.push_back('*');
-  }
-  s.push_back(':');
-
-  s.append(region);
-  s.push_back(':');
-
-  s.append(account);
-  s.push_back(':');
 
-  s.append(resource);
-
-  return s;
-}
-
-bool operator ==(const ARN& l, const ARN& r) {
-  return ((l.partition == r.partition) &&
-         (l.service == r.service) &&
-         (l.region == r.region) &&
-         (l.account == r.account) &&
-         (l.resource == r.resource));
-}
-bool operator <(const ARN& l, const ARN& r) {
-  return ((l.partition < r.partition) ||
-         (l.service < r.service) ||
-         (l.region < r.region) ||
-         (l.account < r.account) ||
-         (l.resource < r.resource));
-}
-
-// The candidate is not allowed to have wildcards. The only way to
-// do that sanely would be to use unification rather than matching.
-bool ARN::match(const ARN& candidate) const {
-  if ((candidate.partition == Partition::wildcard) ||
-      (partition != candidate.partition && partition
-       != Partition::wildcard)) {
-    return false;
-  }
-
-  if ((candidate.service == Service::wildcard) ||
-      (service != candidate.service && service != Service::wildcard)) {
-    return false;
-  }
-
-  if (!match_policy(region, candidate.region, MATCH_POLICY_ARN)) {
-    return false;
-  }
-
-  if (!match_policy(account, candidate.account, MATCH_POLICY_ARN)) {
-    return false;
-  }
-
-  if (!match_policy(resource, candidate.resource, MATCH_POLICY_RESOURCE)) {
-    return false;
-  }
-
-  return true;
-}
 
 static const actpair actpairs[] =
 {{ "s3:AbortMultipartUpload", s3AbortMultipartUpload },
@@ -419,6 +86,7 @@ static const actpair actpairs[] =
  { "s3:GetBucketVersioning", s3GetBucketVersioning },
  { "s3:GetBucketWebsite", s3GetBucketWebsite },
  { "s3:GetLifecycleConfiguration", s3GetLifecycleConfiguration },
+ { "s3:GetBucketObjectLockConfiguration", s3GetBucketObjectLockConfiguration },
  { "s3:GetObjectAcl", s3GetObjectAcl },
  { "s3:GetObject", s3GetObject },
  { "s3:GetObjectTorrent", s3GetObjectTorrent },
@@ -427,6 +95,8 @@ static const actpair actpairs[] =
  { "s3:GetObjectVersionTorrent", s3GetObjectVersionTorrent },
  { "s3:GetObjectTagging", s3GetObjectTagging },
  { "s3:GetObjectVersionTagging", s3GetObjectVersionTagging},
+ { "s3:GetObjectRetention", s3GetObjectRetention},
+ { "s3:GetObjectLegalHold", s3GetObjectLegalHold},
  { "s3:GetReplicationConfiguration", s3GetReplicationConfiguration },
  { "s3:ListAllMyBuckets", s3ListAllMyBuckets },
  { "s3:ListBucketMultipartUploads", s3ListBucketMultipartUploads },
@@ -444,11 +114,15 @@ static const actpair actpairs[] =
  { "s3:PutBucketVersioning", s3PutBucketVersioning },
  { "s3:PutBucketWebsite", s3PutBucketWebsite },
  { "s3:PutLifecycleConfiguration", s3PutLifecycleConfiguration },
+ { "s3:PutBucketObjectLockConfiguration", s3PutBucketObjectLockConfiguration },
  { "s3:PutObjectAcl",  s3PutObjectAcl },
  { "s3:PutObject", s3PutObject },
  { "s3:PutObjectVersionAcl", s3PutObjectVersionAcl },
  { "s3:PutObjectTagging", s3PutObjectTagging },
  { "s3:PutObjectVersionTagging", s3PutObjectVersionTagging },
+ { "s3:PutObjectRetention", s3PutObjectRetention },
+ { "s3:PutObjectLegalHold", s3PutObjectLegalHold },
+ { "s3:BypassGovernanceRetention", s3BypassGovernanceRetention },
  { "s3:PutReplicationConfiguration", s3PutReplicationConfiguration },
  { "s3:RestoreObject", s3RestoreObject },
  { "iam:PutUserPolicy", iamPutUserPolicy },
@@ -1514,6 +1188,27 @@ const char* action_bit_string(uint64_t action) {
   case s3DeleteObjectVersionTagging:
     return "s3:DeleteObjectVersionTagging";
 
+  case s3PutBucketObjectLockConfiguration:
+    return "s3:PutBucketObjectLockConfiguration";
+
+  case s3GetBucketObjectLockConfiguration:
+    return "s3:GetBucketObjectLockConfiguration";
+
+  case s3PutObjectRetention:
+    return "s3:PutObjectRetention";
+
+  case s3GetObjectRetention:
+    return "s3:GetObjectRetention";
+
+  case s3PutObjectLegalHold:
+    return "s3:PutObjectLegalHold";
+
+  case s3GetObjectLegalHold:
+    return "s3:GetObjectLegalHold";
+
+  case s3BypassGovernanceRetention:
+    return "s3:BypassGovernanceRetention";
+
   case iamPutUserPolicy:
     return "iam:PutUserPolicy";
 
index 0a325c5e1dd59efdd3baef40814717a01788318f..cc6453acd9b0a752f56fa5c0373c245685b8fe13 100644 (file)
@@ -29,6 +29,7 @@
 #include "rgw_basic_types.h"
 #include "rgw_iam_policy_keywords.h"
 #include "rgw_string.h"
+#include "rgw_arn.h"
 
 class RGWRados;
 namespace rgw {
@@ -96,39 +97,46 @@ static constexpr std::uint64_t s3DeleteObjectTagging = 50;
 static constexpr std::uint64_t s3GetObjectVersionTagging = 51;
 static constexpr std::uint64_t s3PutObjectVersionTagging = 52;
 static constexpr std::uint64_t s3DeleteObjectVersionTagging = 53;
-static constexpr std::uint64_t s3All = 54;
-
-static constexpr std::uint64_t iamPutUserPolicy = 55;
-static constexpr std::uint64_t iamGetUserPolicy = 56;
-static constexpr std::uint64_t iamDeleteUserPolicy = 57;
-static constexpr std::uint64_t iamListUserPolicies = 58;
-static constexpr std::uint64_t iamCreateRole = 59;
-static constexpr std::uint64_t iamDeleteRole = 60;
-static constexpr std::uint64_t iamModifyRole = 61;
-static constexpr std::uint64_t iamGetRole = 62;
-static constexpr std::uint64_t iamListRoles = 63;
-static constexpr std::uint64_t iamPutRolePolicy = 64;
-static constexpr std::uint64_t iamGetRolePolicy = 65;
-static constexpr std::uint64_t iamListRolePolicies = 66;
-static constexpr std::uint64_t iamDeleteRolePolicy = 67;
-static constexpr std::uint64_t iamAll = 68;
-static constexpr std::uint64_t stsAssumeRole = 69;
-static constexpr std::uint64_t stsAssumeRoleWithWebIdentity = 70;
-static constexpr std::uint64_t stsGetSessionToken = 71;
-static constexpr std::uint64_t stsAll = 72;
-
-static constexpr std::uint64_t s3Count = s3DeleteObjectVersionTagging + 1;
+static constexpr std::uint64_t s3PutBucketObjectLockConfiguration = 54;
+static constexpr std::uint64_t s3GetBucketObjectLockConfiguration = 55;
+static constexpr std::uint64_t s3PutObjectRetention = 56;
+static constexpr std::uint64_t s3GetObjectRetention = 57;
+static constexpr std::uint64_t s3PutObjectLegalHold = 58;
+static constexpr std::uint64_t s3GetObjectLegalHold = 59;
+static constexpr std::uint64_t s3BypassGovernanceRetention = 60;
+static constexpr std::uint64_t s3All = 61;
+
+static constexpr std::uint64_t iamPutUserPolicy = 62;
+static constexpr std::uint64_t iamGetUserPolicy = 63;
+static constexpr std::uint64_t iamDeleteUserPolicy = 64;
+static constexpr std::uint64_t iamListUserPolicies = 65;
+static constexpr std::uint64_t iamCreateRole = 66;
+static constexpr std::uint64_t iamDeleteRole = 67;
+static constexpr std::uint64_t iamModifyRole = 68;
+static constexpr std::uint64_t iamGetRole = 69;
+static constexpr std::uint64_t iamListRoles = 70;
+static constexpr std::uint64_t iamPutRolePolicy = 71;
+static constexpr std::uint64_t iamGetRolePolicy = 72;
+static constexpr std::uint64_t iamListRolePolicies = 73;
+static constexpr std::uint64_t iamDeleteRolePolicy = 74;
+static constexpr std::uint64_t iamAll = 75;
+static constexpr std::uint64_t stsAssumeRole = 76;
+static constexpr std::uint64_t stsAssumeRoleWithWebIdentity = 77;
+static constexpr std::uint64_t stsGetSessionToken = 78;
+static constexpr std::uint64_t stsAll = 79;
+
+static constexpr std::uint64_t s3Count = s3BypassGovernanceRetention + 1;
 static constexpr std::uint64_t allCount = stsAll + 1;
 
 using Action_t = bitset<allCount>;
 using NotAction_t = Action_t;
 
 static const Action_t None(0);
-static const Action_t s3AllValue("111111111111111111111111111111111111111111111111111111");
-static const Action_t iamAllValue("11111111111110000000000000000000000000000000000000000000000000000000");
-static const Action_t stsAllValue("111000000000000000000000000000000000000000000000000000000000000000000000");
+static const Action_t s3AllValue("1111111111111111111111111111111111111111111111111111111111111");
+static const Action_t iamAllValue("111111111111100000000000000000000000000000000000000000000000000000000000000");
+static const Action_t stsAllValue("1110000000000000000000000000000000000000000000000000000000000000000000000000000");
 //Modify allValue if more Actions are added
-static const Action_t allValue("1111111111111111111111111111111111111111111111111111111111111111111111111");
+static const Action_t allValue("11111111111111111111111111111111111111111111111111111111111111111111111111111111");
 
 namespace {
 // Please update the table in doc/radosgw/s3/authentication.rst if you
@@ -141,6 +149,8 @@ inline int op_to_perm(std::uint64_t op) {
   case s3GetObjectVersionTorrent:
   case s3GetObjectTagging:
   case s3GetObjectVersionTagging:
+  case s3GetObjectRetention:
+  case s3GetObjectLegalHold:
   case s3ListAllMyBuckets:
   case s3ListBucket:
   case s3ListBucketMultipartUploads:
@@ -159,6 +169,9 @@ inline int op_to_perm(std::uint64_t op) {
   case s3DeleteObjectTagging:
   case s3DeleteObjectVersionTagging:
   case s3RestoreObject:
+  case s3PutObjectRetention:
+  case s3PutObjectLegalHold:
+  case s3BypassGovernanceRetention:
     return RGW_PERM_WRITE;
 
   case s3GetAccelerateConfiguration:
@@ -176,6 +189,7 @@ inline int op_to_perm(std::uint64_t op) {
   case s3GetObjectAcl:
   case s3GetObjectVersionAcl:
   case s3GetReplicationConfiguration:
+  case s3GetBucketObjectLockConfiguration:
     return RGW_PERM_READ_ACP;
 
   case s3DeleteBucketPolicy:
@@ -195,6 +209,7 @@ inline int op_to_perm(std::uint64_t op) {
   case s3PutObjectAcl:
   case s3PutObjectVersionAcl:
   case s3PutReplicationConfiguration:
+  case s3PutBucketObjectLockConfiguration:
     return RGW_PERM_WRITE_ACP;
 
   case s3All:
@@ -206,70 +221,6 @@ inline int op_to_perm(std::uint64_t op) {
 
 using Environment = boost::container::flat_map<std::string, std::string>;
 
-enum struct Partition {
-  aws, aws_cn, aws_us_gov, wildcard
-  // If we wanted our own ARNs for principal type unique to us
-  // (maybe to integrate better with Swift) or for anything else we
-  // provide that doesn't map onto S3, we could add an 'rgw'
-  // partition type.
-};
-
-enum struct Service {
-  apigateway, appstream, artifact, autoscaling, aws_portal, acm,
-  cloudformation, cloudfront, cloudhsm, cloudsearch, cloudtrail,
-  cloudwatch, events, logs, codebuild, codecommit, codedeploy,
-  codepipeline, cognito_idp, cognito_identity, cognito_sync,
-  config, datapipeline, dms, devicefarm, directconnect,
-  ds, dynamodb, ec2, ecr, ecs, ssm, elasticbeanstalk, elasticfilesystem,
-  elasticloadbalancing, elasticmapreduce, elastictranscoder, elasticache,
-  es, gamelift, glacier, health, iam, importexport, inspector, iot,
-  kms, kinesisanalytics, firehose, kinesis, lambda, lightsail,
-  machinelearning, aws_marketplace, aws_marketplace_management,
-  mobileanalytics, mobilehub, opsworks, opsworks_cm, polly,
-  redshift, rds, route53, route53domains, sts, servicecatalog,
-  ses, sns, sqs, s3, swf, sdb, states, storagegateway, support,
-  trustedadvisor, waf, workmail, workspaces, wildcard
-};
-
-struct ARN {
-  Partition partition;
-  Service service;
-  std::string region;
-  // Once we refit tenant, we should probably use that instead of a
-  // string.
-  std::string account;
-  std::string resource;
-
-  ARN()
-    : partition(Partition::wildcard), service(Service::wildcard) {}
-  ARN(Partition partition, Service service, std::string region,
-      std::string account, std::string resource)
-    : partition(partition), service(service), region(std::move(region)),
-      account(std::move(account)), resource(std::move(resource)) {}
-  ARN(const rgw_obj& o);
-  ARN(const rgw_bucket& b);
-  ARN(const rgw_bucket& b, const std::string& o);
-  ARN(const string& resource_name, const string& type, const string& tenant, bool has_path=false);
-
-  static boost::optional<ARN> parse(const std::string& s,
-                                   bool wildcard = false);
-  std::string to_string() const;
-
-  // `this` is the pattern
-  bool match(const ARN& candidate) const;
-};
-
-inline std::string to_string(const ARN& a) {
-  return a.to_string();
-}
-
-inline std::ostream& operator <<(std::ostream& m, const ARN& a) {
-  return m << to_string(a);
-}
-
-bool operator ==(const ARN& l, const ARN& r);
-bool operator <(const ARN& l, const ARN& r);
-
 using Address = std::bitset<128>;
 struct MaskedIP {
   bool v6;
@@ -527,14 +478,4 @@ std::ostream& operator <<(ostream& m, const Policy& p);
 }
 }
 
-namespace std {
-template<>
-struct hash<::rgw::IAM::Service> {
-  size_t operator()(const ::rgw::IAM::Service& s) const noexcept {
-    // Invoke a default-constructed hash object for int.
-    return hash<int>()(static_cast<int>(s));
-  }
-};
-}
-
 #endif
index e9030ad8308a3f05ebb7658a805f9897810514e8..b9a2ed26bfc7405b3e6e257b8fcc63a2e3920e5f 100644 (file)
@@ -483,6 +483,9 @@ void RGWUserInfo::dump(Formatter *f) const
   if (system) { /* no need to show it for every user */
     encode_json("system", (bool)system, f);
   }
+  if (admin) {
+    encode_json("admin", (bool)admin, f);
+  }
   encode_json("default_placement", default_placement.name, f);
   encode_json("default_storage_class", default_placement.storage_class, f);
   encode_json("placement_tags", placement_tags, f);
@@ -561,6 +564,9 @@ void RGWUserInfo::decode_json(JSONObj *obj)
   bool sys = false;
   JSONDecoder::decode_json("system", sys, obj);
   system = (__u8)sys;
+  bool ad = false;
+  JSONDecoder::decode_json("admin", ad, obj);
+  admin = (__u8)ad;
   JSONDecoder::decode_json("default_placement", default_placement.name, obj);
   JSONDecoder::decode_json("default_storage_class", default_placement.storage_class, obj);
   JSONDecoder::decode_json("placement_tags", placement_tags, obj);
@@ -1526,10 +1532,10 @@ void rgw::keystone::AdminTokenRequestVer2::dump(Formatter* const f) const
   f->open_object_section("token_request");
     f->open_object_section("auth");
       f->open_object_section("passwordCredentials");
-        encode_json("username", to_string(conf.get_admin_user()), f);
-        encode_json("password", to_string(conf.get_admin_password()), f);
+        encode_json("username", ::to_string(conf.get_admin_user()), f);
+        encode_json("password", conf.get_admin_password(), f);
       f->close_section();
-      encode_json("tenantName", to_string(conf.get_admin_tenant()), f);
+      encode_json("tenantName", ::to_string(conf.get_admin_tenant()), f);
     f->close_section();
   f->close_section();
 }
@@ -1545,22 +1551,22 @@ void rgw::keystone::AdminTokenRequestVer3::dump(Formatter* const f) const
         f->open_object_section("password");
           f->open_object_section("user");
             f->open_object_section("domain");
-              encode_json("name", to_string(conf.get_admin_domain()), f);
+              encode_json("name", ::to_string(conf.get_admin_domain()), f);
             f->close_section();
-            encode_json("name", to_string(conf.get_admin_user()), f);
-            encode_json("password", to_string(conf.get_admin_password()), f);
+            encode_json("name", ::to_string(conf.get_admin_user()), f);
+            encode_json("password", conf.get_admin_password(), f);
           f->close_section();
         f->close_section();
       f->close_section();
       f->open_object_section("scope");
         f->open_object_section("project");
           if (! conf.get_admin_project().empty()) {
-            encode_json("name", to_string(conf.get_admin_project()), f);
+            encode_json("name", ::to_string(conf.get_admin_project()), f);
           } else {
-            encode_json("name", to_string(conf.get_admin_tenant()), f);
+            encode_json("name", ::to_string(conf.get_admin_tenant()), f);
           }
           f->open_object_section("domain");
-            encode_json("name", to_string(conf.get_admin_domain()), f);
+            encode_json("name", ::to_string(conf.get_admin_domain()), f);
           f->close_section();
         f->close_section();
       f->close_section();
index 6fc0af0ec59c7396945106c7d7e5a6207c5a4caf..951244396ac0872bc67041efbe8689da6ae6d03c 100644 (file)
@@ -16,6 +16,7 @@
 #include "rgw_common.h"
 #include "rgw_bucket.h"
 #include "rgw_lc.h"
+#include "rgw_zone.h"
 #include "rgw_string.h"
 
 #include "services/svc_sys_obj.h"
@@ -312,6 +313,53 @@ static bool obj_has_expired(CephContext *cct, ceph::real_time mtime, int days, c
   return (timediff >= cmp);
 }
 
+static bool pass_object_lock_check(RGWRados *store, RGWBucketInfo& bucket_info, rgw_obj& obj, RGWObjectCtx& ctx)
+{
+  if (!bucket_info.obj_lock_enabled()) {
+    return true;
+  }
+  RGWRados::Object op_target(store, bucket_info, ctx, obj);
+  RGWRados::Object::Read read_op(&op_target);
+  map<string, bufferlist> attrs;
+  read_op.params.attrs = &attrs;
+  int ret = read_op.prepare();
+  if (ret < 0) {
+    if (ret == -ENOENT) {
+      return true;
+    } else {
+      return false;
+    }
+  } else {
+    auto iter = attrs.find(RGW_ATTR_OBJECT_RETENTION);
+    if (iter != attrs.end()) {
+      RGWObjectRetention retention;
+      try {
+        decode(retention, iter->second);
+      } catch (buffer::error& err) {
+        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
+        return false;
+      }
+      if (ceph::real_clock::to_time_t(retention.get_retain_until_date()) > ceph_clock_now()) {
+        return false;
+      }
+    }
+    iter = attrs.find(RGW_ATTR_OBJECT_LEGAL_HOLD);
+    if (iter != attrs.end()) {
+      RGWObjectLegalHold obj_legal_hold;
+      try {
+        decode(obj_legal_hold, iter->second);
+      } catch (buffer::error& err) {
+        ldout(store->ctx(), 0) << "ERROR: failed to decode RGWObjectLegalHold" << dendl;
+        return false;
+      }
+      if (obj_legal_hold.is_enabled()) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
+
 int RGWLC::handle_multipart_expiration(
   RGWRados::Bucket *target, const multimap<string, lc_op>& prefix_map)
 {
@@ -672,6 +720,14 @@ public:
       ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": not current, skipping" << dendl;
       return false;
     }
+    if (o.is_delete_marker()) {
+      if (oc.ol.next_has_same_name()) {
+        return false;
+      } else {
+        *exp_time = real_clock::now();
+        return true;
+      }
+    }
 
     auto& mtime = o.meta.mtime;
     bool is_expired;
@@ -693,7 +749,12 @@ public:
 
   int process(lc_op_ctx& oc) {
     auto& o = oc.o;
-    int r = remove_expired_obj(oc, !oc.bucket_info.versioned());
+    int r;
+    if (o.is_delete_marker()) {
+      r = remove_expired_obj(oc, true);
+    } else {
+      r = remove_expired_obj(oc, !oc.bucket_info.versioned());
+    }
     if (r < 0) {
       ldout(oc.cct, 0) << "ERROR: remove_expired_obj " << dendl;
       return r;
@@ -717,7 +778,7 @@ public:
     bool is_expired = obj_has_expired(oc.cct, mtime, expiration, exp_time);
 
     ldout(oc.cct, 20) << __func__ << "(): key=" << o.key << ": is_expired=" << is_expired << dendl;
-    return is_expired;
+    return is_expired && pass_object_lock_check(oc.store, oc.bucket_info, oc.obj, oc.rctx);
   }
 
   int process(lc_op_ctx& oc) {
@@ -815,6 +876,13 @@ public:
     target_placement.inherit_from(oc.bucket_info.placement_rule);
     target_placement.storage_class = transition.storage_class;
 
+    if (!oc.store->svc.zone->get_zone_params().valid_placement(target_placement)) {
+      ldout(oc.cct, 0) << "ERROR: non existent dest placement: " << target_placement
+                       << " bucket="<< oc.bucket_info.bucket
+                       << " rule_id=" << oc.op.id << dendl;
+      return -EINVAL;
+    }
+
     int r = oc.store->transition_obj(oc.rctx, oc.bucket_info, oc.obj,
                                      target_placement, o.meta.mtime, o.versioned_epoch);
     if (r < 0) {
index d662173d9ff1bc7ff884dde736b6ab73f3671313..df101e8370e07c8eef46efb8916aec4ca7947d8b 100644 (file)
@@ -85,7 +85,7 @@ public:
   bool valid() const {
     if (!days.empty() && !date.empty()) {
       return false;
-    } else if (!days.empty() && get_days() <= 0) {
+    } else if (!days.empty() && get_days() < 0) {
       return false;
     }
     //We've checked date in xml parsing
index ad21c3974030110cb45143e080db1b1b31c84618..fa5cc7f633b260eba3d020682617162524bb6a2f 100644 (file)
@@ -38,6 +38,9 @@
 #include "rgw_frontend.h"
 #include "rgw_http_client_curl.h"
 #include "rgw_perf_counters.h"
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+#include "rgw_amqp.h"
+#endif
 #if defined(WITH_RADOSGW_BEAST_FRONTEND)
 #include "rgw_asio_frontend.h"
 #endif /* WITH_RADOSGW_BEAST_FRONTEND */
@@ -357,12 +360,13 @@ int main(int argc, const char **argv)
   // S3 website mode is a specialization of S3
   const bool s3website_enabled = apis_map.count("s3website") > 0;
   const bool sts_enabled = apis_map.count("sts") > 0;
+  const bool pubsub_enabled = apis_map.count("pubsub") > 0;
   // Swift API entrypoint could placed in the root instead of S3
   const bool swift_at_root = g_conf()->rgw_swift_url_prefix == "/";
   if (apis_map.count("s3") > 0 || s3website_enabled) {
     if (! swift_at_root) {
       rest.register_default_mgr(set_logging(rest_filter(store, RGW_REST_S3,
-                                                        new RGWRESTMgr_S3(s3website_enabled, sts_enabled))));
+                                                        new RGWRESTMgr_S3(s3website_enabled, sts_enabled, pubsub_enabled))));
     } else {
       derr << "Cannot have the S3 or S3 Website enabled together with "
            << "Swift API placed in the root of hierarchy" << dendl;
@@ -370,6 +374,14 @@ int main(int argc, const char **argv)
     }
   }
 
+  if (pubsub_enabled) {
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+    if (!rgw::amqp::init(cct.get())) {
+        dout(1) << "ERROR: failed to initialize AMQP manager" << dendl;
+    }
+#endif
+  }
+
   if (apis_map.count("swift") > 0) {
     RGWRESTMgr_SWIFT* const swift_resource = new RGWRESTMgr_SWIFT;
 
@@ -593,6 +605,9 @@ int main(int argc, const char **argv)
   rgw_shutdown_resolver();
   rgw_http_client_cleanup();
   rgw::curl::cleanup_curl();
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+  rgw::amqp::shutdown();
+#endif
 
   rgw_perf_stop(g_ceph_context);
 
index 44ceb2ecea2f4fda05d06720c906ad7544877116..b894bb99aeab2b9eeafe24e3649672fd8d543c34 100644 (file)
@@ -226,14 +226,8 @@ int RGWMetadataLog::trim(int shard_id, const real_time& from_time, const real_ti
   string oid;
   get_shard_oid(shard_id, oid);
 
-  int ret;
-
-  ret = store->time_log_trim(oid, from_time, end_time, start_marker, end_marker);
-
-  if (ret == -ENOENT || ret == -ENODATA)
-    ret = 0;
-
-  return ret;
+  return store->time_log_trim(oid, from_time, end_time, start_marker,
+                              end_marker, nullptr);
 }
   
 int RGWMetadataLog::lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id) {
diff --git a/ceph/src/rgw/rgw_notify.cc b/ceph/src/rgw/rgw_notify.cc
new file mode 100644 (file)
index 0000000..c2454b1
--- /dev/null
@@ -0,0 +1,137 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw_notify.h"
+#include <memory>
+#include <boost/algorithm/hex.hpp>
+#include "rgw_pubsub.h"
+#include "rgw_pubsub_push.h"
+#include "rgw_perf_counters.h"
+#include "common/dout.h"
+
+#define dout_subsys ceph_subsys_rgw
+
+namespace rgw::notify {
+
+// populate record from request
+void populate_record_from_request(const req_state *s, 
+        const ceph::real_time& mtime, 
+        const std::string& etag, 
+        EventType event_type,
+        rgw_pubsub_s3_record& record) { 
+  record.eventVersion = "2.1";
+  record.eventSource = "aws:s3";
+  record.eventTime = mtime;
+  record.eventName = to_string(event_type);
+  record.userIdentity = s->user->user_id.id;    // user that triggered the change
+  record.sourceIPAddress = "";                  // IP address of client that triggered the change: TODO
+  record.x_amz_request_id = s->req_id;          // request ID of the original change
+  record.x_amz_id_2 = s->host_id;               // RGW on which the change was made
+  record.s3SchemaVersion = "1.0";
+  // configurationId is filled from subscription configuration
+  record.bucket_name = s->bucket_name;
+  record.bucket_ownerIdentity = s->bucket_owner.get_id().id;
+  record.bucket_arn = to_string(rgw::ARN(s->bucket));
+  record.object_key = s->object.name;
+  record.object_size = s->obj_size;
+  record.object_etag = etag;
+  record.object_versionId = s->object.instance;
+  // use timestamp as per key sequence id (hex encoded)
+  const utime_t ts(real_clock::now());
+  boost::algorithm::hex((const char*)&ts, (const char*)&ts + sizeof(utime_t), 
+          std::back_inserter(record.object_sequencer));
+  // event ID is rgw extension (not in the S3 spec), used for acking the event
+  // same format is used in both S3 compliant and Ceph specific events
+  // not used in case of push-only mode
+  record.id = "";
+  record.bucket_id = s->bucket.bucket_id;
+  // pass meta data
+  record.x_meta_map = s->info.x_meta_map;
+}
+
+bool match(const rgw_pubsub_topic_filter& filter, const req_state* s, EventType event) {
+  if (!::match(filter.events, event)) { 
+    return false;
+  }
+  if (!::match(filter.s3_filter.key_filter, s->object.name)) {
+    return false;
+  }
+  if (!::match(filter.s3_filter.metadata_filter, s->info.x_meta_map)) {
+    return false;
+  }
+  return true;
+}
+
+int publish(const req_state* s, 
+        const ceph::real_time& mtime, 
+        const std::string& etag, 
+        EventType event_type,
+        RGWRados* store) {
+    RGWUserPubSub ps_user(store, s->user->user_id);
+    RGWUserPubSub::Bucket ps_bucket(&ps_user, s->bucket);
+    rgw_pubsub_bucket_topics bucket_topics;
+    auto rc = ps_bucket.get_topics(&bucket_topics);
+    if (rc < 0) {
+        // failed to fetch bucket topics
+        return rc;
+    }
+    rgw_pubsub_s3_record record;
+    populate_record_from_request(s, mtime, etag, event_type, record);
+    bool event_handled = false;
+    bool event_should_be_handled = false;
+    for (const auto& bucket_topic : bucket_topics.topics) {
+        const rgw_pubsub_topic_filter& topic_filter = bucket_topic.second;
+        const rgw_pubsub_topic& topic_cfg = topic_filter.topic;
+        if (!match(topic_filter, s, event_type)) {
+            // topic does not apply to req_state
+            continue;
+        }
+        event_should_be_handled = true;
+        record.configurationId = topic_filter.s3_id;
+        ldout(s->cct, 20) << "notification: '" << topic_filter.s3_id << 
+            "' on topic: '" << topic_cfg.dest.arn_topic << 
+            "' and bucket: '" << s->bucket.name << 
+            "' (unique topic: '" << topic_cfg.name <<
+            "') apply to event of type: '" << to_string(event_type) << "'" << dendl;
+        try {
+            // TODO add endpoint LRU cache
+            const auto push_endpoint = RGWPubSubEndpoint::create(topic_cfg.dest.push_endpoint, 
+                    topic_cfg.dest.arn_topic,
+                    RGWHTTPArgs(topic_cfg.dest.push_endpoint_args), 
+                    s->cct);
+            const std::string push_endpoint_str = push_endpoint->to_str();
+            ldout(s->cct, 20) << "push endpoint created: " << push_endpoint_str << dendl;
+            auto rc = push_endpoint->send_to_completion_async(s->cct, record, s->yield);
+            if (rc < 0) {
+                // bail out on first error
+                // TODO: add conf for bail out policy
+                ldout(s->cct, 1) << "push to endpoint " << push_endpoint_str << " failed, with error: " << rc << dendl;
+                if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_failed);
+                return rc;
+            }
+            if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_ok);
+            ldout(s->cct, 20) << "successfull push to endpoint " << push_endpoint_str << dendl;
+            event_handled = true;
+        } catch (const RGWPubSubEndpoint::configuration_error& e) {
+            ldout(s->cct, 1) << "ERROR: failed to create push endpoint: " 
+                << topic_cfg.dest.push_endpoint << " due to: " << e.what() << dendl;
+            if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_failed);
+            return -EINVAL;
+        }
+    }
+
+    if (event_should_be_handled) {
+        // not counting events with no notifications or events that are filtered
+        // counting a single event, regardless of the number of notifications it sends
+        if (perfcounter) perfcounter->inc(l_rgw_pubsub_event_triggered);
+        if (!event_handled) {
+            // all notifications for this event failed
+            if (perfcounter) perfcounter->inc(l_rgw_pubsub_event_lost);
+        }
+    }
+
+    return 0;
+}
+
+}
+
diff --git a/ceph/src/rgw/rgw_notify.h b/ceph/src/rgw/rgw_notify.h
new file mode 100644 (file)
index 0000000..486e7df
--- /dev/null
@@ -0,0 +1,24 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+
+#pragma once
+
+#include <string>
+#include "common/ceph_time.h"
+#include "rgw_notify_event_type.h"
+
+// forward declarations
+class RGWRados;
+class req_state;
+
+namespace rgw::notify {
+
+// publish notification
+int publish(const req_state* s, 
+        const ceph::real_time& mtime, 
+        const std::string& etag, 
+        EventType event_type,
+        RGWRados* store);
+
+}
+
diff --git a/ceph/src/rgw/rgw_notify_event_type.cc b/ceph/src/rgw/rgw_notify_event_type.cc
new file mode 100644 (file)
index 0000000..10c77c2
--- /dev/null
@@ -0,0 +1,82 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw_notify_event_type.h"
+#include "include/str_list.h"
+
+namespace rgw::notify {
+
+  std::string to_string(EventType t) {
+    switch (t) {
+      case ObjectCreated:
+        return "s3:ObjectCreated:*";
+      case ObjectCreatedPut:
+        return "s3:ObjectCreated:Put";
+      case ObjectCreatedPost:
+        return "s3:ObjectCreated:Post";
+      case ObjectCreatedCopy:
+        return "s3:ObjectCreated:Copy";
+      case ObjectCreatedCompleteMultipartUpload:
+        return "s3:ObjectCreated:CompleteMultipartUpload";
+      case ObjectRemoved:
+        return "s3:ObjectRemoved:*";
+      case ObjectRemovedDelete:
+        return "s3:ObjectRemoved:Delete";
+      case ObjectRemovedDeleteMarkerCreated:
+        return "s3:ObjectRemoved:DeleteMarkerCreated";
+      case UnknownEvent:
+        return "s3:UnknownEvet";
+    }
+    return "s3:UnknownEvent";
+  }
+
+  std::string to_ceph_string(EventType t) {
+    switch (t) {
+      case ObjectCreated:
+      case ObjectCreatedPut:
+      case ObjectCreatedPost:
+      case ObjectCreatedCopy:
+      case ObjectCreatedCompleteMultipartUpload:
+        return "OBJECT_CREATE";
+      case ObjectRemovedDelete:
+        return "OBJECT_DELETE";
+      case ObjectRemovedDeleteMarkerCreated:
+        return "DELETE_MARKER_CREATE";
+      case ObjectRemoved:
+      case UnknownEvent:
+        return "UNKNOWN_EVENT";
+    }
+    return "UNKNOWN_EVENT";
+  }
+
+  EventType from_string(const std::string& s) {
+    if (s == "s3:ObjectCreated:*" || s == "OBJECT_CREATE")
+        return ObjectCreated;
+    if (s == "s3:ObjectCreated:Put")
+        return ObjectCreatedPut;
+    if (s == "s3:ObjectCreated:Post")
+        return ObjectCreatedPost;
+    if (s == "s3:ObjectCreated:Copy")
+        return ObjectCreatedCopy;
+    if (s == "s3:ObjectCreated:CompleteMultipartUpload")
+        return ObjectCreatedCompleteMultipartUpload;
+    if (s == "s3:ObjectRemoved:*")
+        return ObjectRemoved;
+    if (s == "s3:ObjectRemoved:Delete" || s == "OBJECT_DELETE")
+        return ObjectRemovedDelete;
+    if (s == "s3:ObjectRemoved:DeleteMarkerCreated" || s == "DELETE_MARKER_CREATE")
+        return ObjectRemovedDeleteMarkerCreated;
+    return UnknownEvent;
+  }
+
+bool operator==(EventType lhs, EventType rhs) {
+  return lhs & rhs;
+}
+
+void from_string_list(const std::string& string_list, EventTypeList& event_list) {
+  event_list.clear();
+  ceph::for_each_substr(string_list, ",", [&event_list] (auto token) {
+    event_list.push_back(rgw::notify::from_string(std::string(token.begin(), token.end())));
+  });
+}
+}
diff --git a/ceph/src/rgw/rgw_notify_event_type.h b/ceph/src/rgw/rgw_notify_event_type.h
new file mode 100644 (file)
index 0000000..0d86bf3
--- /dev/null
@@ -0,0 +1,35 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+
+#pragma once
+#include <string>
+#include <vector>
+
+namespace rgw::notify {
+  enum EventType {
+    ObjectCreated                        = 0xF,
+    ObjectCreatedPut                     = 0x1,
+    ObjectCreatedPost                    = 0x2,
+    ObjectCreatedCopy                    = 0x4,
+    ObjectCreatedCompleteMultipartUpload = 0x8,
+    ObjectRemoved                        = 0xF0,
+    ObjectRemovedDelete                  = 0x10,
+    ObjectRemovedDeleteMarkerCreated     = 0x20,
+    UnknownEvent                         = 0x100
+  };
+
+  using EventTypeList = std::vector<EventType>;
+
+  // two event types are considered equal if their bits intersect
+  bool operator==(EventType lhs, EventType rhs);
+
+  std::string to_string(EventType t);
+
+  std::string to_ceph_string(EventType t);
+
+  EventType from_string(const std::string& s);
+  // create a vector of event types from comma separated list of event types
+  void from_string_list(const std::string& string_list, EventTypeList& event_list);
+}
+
diff --git a/ceph/src/rgw/rgw_object_lock.cc b/ceph/src/rgw/rgw_object_lock.cc
new file mode 100644 (file)
index 0000000..69da888
--- /dev/null
@@ -0,0 +1,96 @@
+#include "rgw_object_lock.h"
+
+void DefaultRetention::decode_xml(XMLObj *obj) {
+  RGWXMLDecoder::decode_xml("Mode", mode, obj, true);
+  if (mode.compare("GOVERNANCE") != 0 && mode.compare("COMPLIANCE") != 0) {
+    throw RGWXMLDecoder::err("bad Mode in lock rule");
+  }
+  bool days_exist = RGWXMLDecoder::decode_xml("Days", days, obj);
+  bool years_exist = RGWXMLDecoder::decode_xml("Years", years, obj);
+  if ((days_exist && years_exist) || (!days_exist && !years_exist)) {
+    throw RGWXMLDecoder::err("either Days or Years must be specified, but not both");
+  }
+}
+
+void DefaultRetention::dump_xml(Formatter *f) const {
+  encode_xml("Mode", mode, f);
+  if (days > 0) {
+    encode_xml("Days", days, f);
+  } else {
+    encode_xml("Years", years, f);
+  }
+}
+
+void ObjectLockRule::decode_xml(XMLObj *obj) {
+  RGWXMLDecoder::decode_xml("DefaultRetention", defaultRetention, obj, true);
+}
+
+void ObjectLockRule::dump_xml(Formatter *f) const {
+  encode_xml("DefaultRetention", defaultRetention, f);
+}
+
+void RGWObjectLock::decode_xml(XMLObj *obj) {
+  string enabled_str;
+  RGWXMLDecoder::decode_xml("ObjectLockEnabled", enabled_str, obj, true);
+  if (enabled_str.compare("Enabled") != 0) {
+    throw RGWXMLDecoder::err("invalid ObjectLockEnabled value");
+  } else {
+    enabled = true;
+  }
+  rule_exist = RGWXMLDecoder::decode_xml("Rule", rule, obj);
+}
+
+void RGWObjectLock::dump_xml(Formatter *f) const {
+  if (enabled) {
+    encode_xml("ObjectLockEnabled", "Enabled", f);
+  }
+  if (rule_exist) {
+    encode_xml("Rule", rule, f);
+  }
+}
+
+ceph::real_time RGWObjectLock::get_lock_until_date(const ceph::real_time& mtime) const {
+  if (!rule_exist) {
+    return ceph::real_time();
+  }
+  int days = get_days();
+  if (days <= 0) {
+    days = get_years()*365;
+  }
+  return mtime + make_timespan(days*24*60*60);
+}
+
+void RGWObjectRetention::decode_xml(XMLObj *obj) {
+  RGWXMLDecoder::decode_xml("Mode", mode, obj, true);
+  if (mode.compare("GOVERNANCE") != 0 && mode.compare("COMPLIANCE") != 0) {
+    throw RGWXMLDecoder::err("bad Mode in retention");
+  }
+  string date_str;
+  RGWXMLDecoder::decode_xml("RetainUntilDate", date_str, obj, true);
+  boost::optional<ceph::real_time> date = ceph::from_iso_8601(date_str);
+  if (boost::none == date) {
+    throw RGWXMLDecoder::err("invalid RetainUntilDate value");
+  }
+  retain_until_date = *date;
+}
+
+void RGWObjectRetention::dump_xml(Formatter *f) const {
+  encode_xml("Mode", mode, f);
+  string date = ceph::to_iso_8601(retain_until_date);
+  encode_xml("RetainUntilDate", date, f);
+}
+
+void RGWObjectLegalHold::decode_xml(XMLObj *obj) {
+  RGWXMLDecoder::decode_xml("Status", status, obj, true);
+  if (status.compare("ON") != 0 && status.compare("OFF") != 0) {
+    throw RGWXMLDecoder::err("bad status in legal hold");
+  }
+}
+
+void RGWObjectLegalHold::dump_xml(Formatter *f) const {
+  encode_xml("Status", status, f);
+}
+
+bool RGWObjectLegalHold::is_enabled() const {
+  return status.compare("ON") == 0;
+}
diff --git a/ceph/src/rgw/rgw_object_lock.h b/ceph/src/rgw/rgw_object_lock.h
new file mode 100644 (file)
index 0000000..63990d6
--- /dev/null
@@ -0,0 +1,221 @@
+#ifndef CEPH_RGW_OBJECT_LOCK_H
+#define CEPH_RGW_OBJECT_LOCK_H
+
+#include <string>
+#include "common/ceph_time.h"
+#include "common/iso_8601.h"
+#include "rgw_xml.h"
+
+class DefaultRetention
+{
+protected:
+  string mode;
+  int days;
+  int years;
+
+public:
+  DefaultRetention(): days(0), years(0) {};
+
+  int get_days() const {
+    return days;
+  }
+
+  int get_years() const {
+    return years;
+  }
+
+  string get_mode() const {
+    return mode;
+  }
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(mode, bl);
+    encode(days, bl);
+    encode(years, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(mode, bl);
+    decode(days, bl);
+    decode(years, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+};
+WRITE_CLASS_ENCODER(DefaultRetention)
+
+class ObjectLockRule
+{
+protected:
+  DefaultRetention defaultRetention;
+public:
+  int get_days() const {
+    return defaultRetention.get_days();
+  }
+
+  int get_years() const {
+    return defaultRetention.get_years();
+  }
+
+  string get_mode() const {
+    return defaultRetention.get_mode();
+  }
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(defaultRetention, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(defaultRetention, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+};
+WRITE_CLASS_ENCODER(ObjectLockRule)
+
+class RGWObjectLock
+{
+protected:
+  bool enabled;
+  bool rule_exist;
+  ObjectLockRule rule;
+
+public:
+  RGWObjectLock():enabled(true), rule_exist(false) {}
+
+  int get_days() const {
+    return rule.get_days();
+  }
+
+  int get_years() const {
+    return rule.get_years();
+  }
+
+  string get_mode() const {
+    return rule.get_mode();
+  }
+
+  bool retention_period_valid() const {
+    // DefaultRetention requires either Days or Years.
+    // You can't specify both at the same time.
+    // see https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTObjectLockConfiguration.html
+    return (get_years() > 0) != (get_days() > 0);
+  }
+
+  bool has_rule() const {
+    return rule_exist;
+  }
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(enabled, bl);
+    encode(rule_exist, bl);
+    if (rule_exist) {
+      encode(rule, bl);
+    }
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(enabled, bl);
+    decode(rule_exist, bl);
+    if (rule_exist) {
+      decode(rule, bl);
+    }
+    DECODE_FINISH(bl);
+  }
+
+  void decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+  ceph::real_time get_lock_until_date(const ceph::real_time& mtime) const;
+};
+WRITE_CLASS_ENCODER(RGWObjectLock)
+
+class RGWObjectRetention
+{
+protected:
+  string mode;
+  ceph::real_time retain_until_date;
+public:
+  RGWObjectRetention() {}
+  RGWObjectRetention(string _mode, ceph::real_time _date): mode(_mode), retain_until_date(_date) {}
+
+  void set_mode(string _mode) {
+    mode = _mode;
+  }
+
+  string get_mode() const {
+    return mode;
+  }
+
+  void set_retain_until_date(ceph::real_time _retain_until_date) {
+    retain_until_date = _retain_until_date;
+  }
+
+  ceph::real_time get_retain_until_date() const {
+    return retain_until_date;
+  }
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(mode, bl);
+    encode(retain_until_date, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(mode, bl);
+    decode(retain_until_date, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+};
+WRITE_CLASS_ENCODER(RGWObjectRetention)
+
+class RGWObjectLegalHold
+{
+protected:
+  string status;
+public:
+  RGWObjectLegalHold() {}
+  RGWObjectLegalHold(string _status): status(_status) {}
+  void set_status(string _status) {
+    status = _status;
+  }
+
+  string get_status() const {
+    return status;
+  }
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(status, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(status, bl);
+    DECODE_FINISH(bl);
+  }
+
+  void decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+  bool is_enabled() const;
+};
+WRITE_CLASS_ENCODER(RGWObjectLegalHold)
+#endif //CEPH_RGW_OBJECT_LOCK_H
index 645a29f99c8a89e665838f6e76ba6ac32700ba5f..4ddaf8bc44c15c515b1cade8c327c0713221eadb 100644 (file)
@@ -48,6 +48,8 @@
 #include "rgw_putobj_processor.h"
 #include "rgw_crypt.h"
 #include "rgw_perf_counters.h"
+#include "rgw_notify.h"
+#include "rgw_notify_event_type.h"
 
 #include "services/svc_zone.h"
 #include "services/svc_quota.h"
@@ -79,7 +81,7 @@ using ceph::crypto::MD5;
 using boost::optional;
 using boost::none;
 
-using rgw::IAM::ARN;
+using rgw::ARN;
 using rgw::IAM::Effect;
 using rgw::IAM::Policy;
 
@@ -320,12 +322,13 @@ vector<Policy> get_iam_user_policy_from_attr(CephContext* cct,
   return policies;
 }
 
-static int get_obj_attrs(RGWRados *store, struct req_state *s, const rgw_obj& obj, map<string, bufferlist>& attrs)
+static int get_obj_attrs(RGWRados *store, struct req_state *s, const rgw_obj& obj, map<string, bufferlist>& attrs, rgw_obj *target_obj = nullptr)
 {
   RGWRados::Object op_target(store, s->bucket_info, *static_cast<RGWObjectCtx *>(s->obj_ctx), obj);
   RGWRados::Object::Read read_op(&op_target);
 
   read_op.params.attrs = &attrs;
+  read_op.params.target_obj = target_obj;
 
   return read_op.prepare();
 }
@@ -977,6 +980,11 @@ int RGWGetObj::verify_permission()
     return -EACCES;
   }
 
+  if (s->bucket_info.obj_lock_enabled()) {
+    get_retention = verify_object_permission(this, s, rgw::IAM::s3GetObjectRetention);
+    get_legal_hold = verify_object_permission(this, s, rgw::IAM::s3GetObjectLegalHold);
+  }
+
   return 0;
 }
 
@@ -1611,7 +1619,7 @@ static int iterate_slo_parts(CephContext *cct,
     ent.meta.etag = part.etag;
 
     uint64_t cur_total_len = obj_ofs;
-    uint64_t start_ofs = 0, end_ofs = ent.meta.size;
+    uint64_t start_ofs = 0, end_ofs = ent.meta.size - 1;
 
     if (!found_start && cur_total_len + ent.meta.size > (uint64_t)ofs) {
       start_ofs = ofs - obj_ofs;
@@ -1621,7 +1629,7 @@ static int iterate_slo_parts(CephContext *cct,
     obj_ofs += ent.meta.size;
 
     if (!found_end && obj_ofs > (uint64_t)end) {
-      end_ofs = end - cur_total_len + 1;
+      end_ofs = end - cur_total_len;
       found_end = true;
     }
 
@@ -1630,6 +1638,12 @@ static int iterate_slo_parts(CephContext *cct,
 
     if (found_start) {
       if (cb) {
+        dout(20) << "iterate_slo_parts()"
+                          << " obj=" << part.obj_name
+                          << " start_ofs=" << start_ofs
+                          << " end_ofs=" << end_ofs
+                          << dendl;
+
        // SLO is a Swift thing, and Swift has no knowledge of S3 Policies.
         int r = cb(part.bucket, ent, part.bucket_acl,
                   (part.bucket_policy ?
@@ -1856,8 +1870,7 @@ int RGWGetObj::handle_slo_manifest(bufferlist& bl)
     part.obj_name = obj_name;
     part.size = entry.size_bytes;
     part.etag = entry.etag;
-    ldpp_dout(this, 20) << "slo_part: ofs=" << ofs
-                      << " bucket=" << part.bucket
+    ldpp_dout(this, 20) << "slo_part: bucket=" << part.bucket
                       << " obj=" << part.obj_name
                       << " size=" << part.size
                       << " etag=" << part.etag
@@ -1881,6 +1894,10 @@ int RGWGetObj::handle_slo_manifest(bufferlist& bl)
   }
 
   total_len = end - ofs + 1;
+  ldpp_dout(this, 20) << "Requested: ofs=" << ofs
+                    << " end=" << end
+                    << " total=" << total_len
+                    << dendl;
 
   r = iterate_slo_parts(s->cct, store, ofs, end, slo_parts,
         get_obj_user_manifest_iterate_cb, (void *)this);
@@ -2154,8 +2171,8 @@ int RGWGetObj::init_common()
 
 int RGWListBuckets::verify_permission()
 {
-  rgw::IAM::Partition partition = rgw::IAM::Partition::aws;
-  rgw::IAM::Service service = rgw::IAM::Service::s3;
+  rgw::Partition partition = rgw::Partition::aws;
+  rgw::Service service = rgw::Service::s3;
 
   if (!verify_user_permission(this, s, ARN(partition, service, "", s->user->user_id.tenant, "*"), rgw::IAM::s3ListAllMyBuckets)) {
     return -EACCES;
@@ -2420,6 +2437,11 @@ void RGWSetBucketVersioning::execute()
   if (op_ret < 0)
     return;
 
+  if (s->bucket_info.obj_lock_enabled() && versioning_status != VersioningEnabled) {
+    op_ret = -ERR_INVALID_BUCKET_STATE;
+    return;
+  }
+
   bool cur_mfa_status = (s->bucket_info.flags & BUCKET_MFA_ENABLED) != 0;
 
   mfa_set_status &= (mfa_status != cur_mfa_status);
@@ -3033,6 +3055,7 @@ void RGWCreateBucket::execute()
     creation_time = master_info.creation_time;
     pmaster_num_shards = &master_info.num_shards;
     pobjv = &objv;
+    obj_lock_enabled = master_info.obj_lock_enabled();
   } else {
     pmaster_bucket = NULL;
     pmaster_num_shards = NULL;
@@ -3106,6 +3129,10 @@ void RGWCreateBucket::execute()
     s->bucket_info.swift_ver_location = *swift_ver_location;
     s->bucket_info.swift_versioning = (! swift_ver_location->empty());
   }
+  if (obj_lock_enabled) {
+    info.flags = BUCKET_VERSIONED | BUCKET_OBJ_LOCK_ENABLED;
+  }
+
 
   op_ret = store->create_bucket(*(s->user), s->bucket, zonegroup_id,
                                 placement_rule, s->bucket_info.swift_ver_location,
@@ -3346,7 +3373,7 @@ int RGWPutObj::verify_permission()
                              cs_object.instance.empty() ?
                              rgw::IAM::s3GetObject :
                              rgw::IAM::s3GetObjectVersion,
-                             rgw::IAM::ARN(obj)); usr_policy_res == Effect::Deny)
+                             rgw::ARN(obj)); usr_policy_res == Effect::Deny)
             return -EACCES;
           else if (usr_policy_res == Effect::Allow)
             break;
@@ -3357,7 +3384,7 @@ int RGWPutObj::verify_permission()
                              cs_object.instance.empty() ?
                              rgw::IAM::s3GetObject :
                              rgw::IAM::s3GetObjectVersion,
-                             rgw::IAM::ARN(obj));
+                             rgw::ARN(obj));
   }
        if (e == Effect::Deny) {
          return -EACCES; 
@@ -3655,10 +3682,10 @@ void RGWPutObj::execute()
 
   rgw_placement_rule *pdest_placement;
 
+  multipart_upload_info upload_info;
   if (multipart) {
     RGWMPObj mp(s->object.name, multipart_upload_id);
 
-    multipart_upload_info upload_info;
     op_ret = get_multipart_info(store, s, mp.get_meta(), nullptr, nullptr, &upload_info);
     if (op_ret < 0) {
       if (op_ret != -ENOENT) {
@@ -3735,20 +3762,23 @@ void RGWPutObj::execute()
   boost::optional<RGWPutObj_Compress> compressor;
 
   std::unique_ptr<DataProcessor> encrypt;
-  op_ret = get_encrypt_filter(&encrypt, filter);
-  if (op_ret < 0) {
-    return;
-  }
-  if (encrypt != nullptr) {
-    filter = &*encrypt;
-  } else if (compression_type != "none") {
-    plugin = get_compressor_plugin(s, compression_type);
-    if (!plugin) {
-      ldpp_dout(this, 1) << "Cannot load plugin for compression type "
-          << compression_type << dendl;
-    } else {
-      compressor.emplace(s->cct, plugin, filter);
-      filter = &*compressor;
+
+  if (!append) { // compression and encryption only apply to full object uploads
+    op_ret = get_encrypt_filter(&encrypt, filter);
+    if (op_ret < 0) {
+      return;
+    }
+    if (encrypt != nullptr) {
+      filter = &*encrypt;
+    } else if (compression_type != "none") {
+      plugin = get_compressor_plugin(s, compression_type);
+      if (!plugin) {
+        ldpp_dout(this, 1) << "Cannot load plugin for compression type "
+            << compression_type << dendl;
+      } else {
+        compressor.emplace(s->cct, plugin, filter);
+        filter = &*compressor;
+      }
     }
   }
   tracepoint(rgw_op, before_data_transfer, s->req_id.c_str());
@@ -3890,6 +3920,16 @@ void RGWPutObj::execute()
     slo_userindicator_bl.append("True", 4);
     emplace_attr(RGW_ATTR_SLO_UINDICATOR, std::move(slo_userindicator_bl));
   }
+  if (obj_legal_hold) {
+    bufferlist obj_legal_hold_bl;
+    obj_legal_hold->encode(obj_legal_hold_bl);
+    emplace_attr(RGW_ATTR_OBJECT_LEGAL_HOLD, std::move(obj_legal_hold_bl));
+  }
+  if (obj_retention) {
+    bufferlist obj_retention_bl;
+    obj_retention->encode(obj_retention_bl);
+    emplace_attr(RGW_ATTR_OBJECT_RETENTION, std::move(obj_retention_bl));
+  }
 
   tracepoint(rgw_op, processor_complete_enter, s->req_id.c_str());
   op_ret = processor->complete(s->obj_size, etag, &mtime, real_time(), attrs,
@@ -3909,6 +3949,15 @@ void RGWPutObj::execute()
       return;
     }
   }
+
+  // send request to notification manager
+  const auto ret = rgw::notify::publish(s, mtime, etag, rgw::notify::ObjectCreatedPut, store);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 int RGWPostObj::verify_permission()
@@ -4137,6 +4186,14 @@ void RGWPostObj::execute()
       return;
     }
   } while (is_next_file_to_upload());
+
+  const auto ret = rgw::notify::publish(s, ceph::real_clock::now(), etag, rgw::notify::ObjectCreatedPost, store);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 
@@ -4378,6 +4435,7 @@ void RGWPutMetadataObject::pre_exec()
 void RGWPutMetadataObject::execute()
 {
   rgw_obj obj(s->bucket, s->object);
+  rgw_obj target_obj;
   map<string, bufferlist> attrs, orig_attrs, rmattrs;
 
   store->set_atomic(s->obj_ctx, obj);
@@ -4393,7 +4451,7 @@ void RGWPutMetadataObject::execute()
   }
 
   /* check if obj exists, read orig attrs */
-  op_ret = get_obj_attrs(store, s, obj, orig_attrs);
+  op_ret = get_obj_attrs(store, s, obj, orig_attrs, &target_obj);
   if (op_ret < 0) {
     return;
   }
@@ -4418,7 +4476,7 @@ void RGWPutMetadataObject::execute()
     }
   }
 
-  op_ret = store->set_attrs(s->obj_ctx, s->bucket_info, obj, attrs, &rmattrs);
+  op_ret = store->set_attrs(s->obj_ctx, s->bucket_info, target_obj, attrs, &rmattrs);
 }
 
 int RGWDeleteObj::handle_slo_manifest(bufferlist& bl)
@@ -4472,7 +4530,24 @@ int RGWDeleteObj::handle_slo_manifest(bufferlist& bl)
 
 int RGWDeleteObj::verify_permission()
 {
+  int op_ret = get_params();
+  if (op_ret) {
+    return op_ret;
+  }
   if (s->iam_policy || ! s->iam_user_policies.empty()) {
+    if (s->bucket_info.obj_lock_enabled() && bypass_governance_mode) {
+      auto r = eval_user_policies(s->iam_user_policies, s->env, boost::none,
+                                               rgw::IAM::s3BypassGovernanceRetention, ARN(s->bucket, s->object.name));
+      if (r == Effect::Deny) {
+        bypass_perm = false;
+      } else if (r == Effect::Pass && s->iam_policy) {
+        r = s->iam_policy->eval(s->env, *s->auth.identity, rgw::IAM::s3BypassGovernanceRetention,
+                                     ARN(s->bucket, s->object.name));
+        if (r == Effect::Deny) {
+          bypass_perm = false;
+        }
+      }
+    }
     auto usr_policy_res = eval_user_policies(s->iam_user_policies, s->env,
                                               boost::none,
                                               s->object.instance.empty() ?
@@ -4525,14 +4600,10 @@ void RGWDeleteObj::execute()
     return;
   }
 
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-
   rgw_obj obj(s->bucket, s->object);
   map<string, bufferlist> attrs;
 
+  bool check_obj_lock = obj.key.have_instance() && s->bucket_info.obj_lock_enabled();
 
   if (!s->object.empty()) {
     if (need_object_expiration() || multipart_delete) {
@@ -4543,6 +4614,54 @@ void RGWDeleteObj::execute()
       }
     }
 
+    if (check_obj_lock) {
+      /* check if obj exists, read orig attrs */
+      op_ret = get_obj_attrs(store, s, obj, attrs);
+      if (op_ret < 0) {
+        if (op_ret == -ENOENT) {
+          /* object maybe delete_marker, skip check_obj_lock*/
+          check_obj_lock = false;
+        } else {
+          return;
+        }
+      }
+    }
+
+    if (check_obj_lock) {
+      auto aiter = attrs.find(RGW_ATTR_OBJECT_RETENTION);
+      if (aiter != attrs.end()) {
+        RGWObjectRetention obj_retention;
+        try {
+          decode(obj_retention, aiter->second);
+        } catch (buffer::error& err) {
+          ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
+          op_ret = -EIO;
+          return;
+        }
+        if (ceph::real_clock::to_time_t(obj_retention.get_retain_until_date()) > ceph_clock_now()) {
+          if (obj_retention.get_mode().compare("GOVERNANCE") != 0 || !bypass_perm || !bypass_governance_mode) {
+            op_ret = -EACCES;
+            return;
+          }
+        }
+      }
+      aiter = attrs.find(RGW_ATTR_OBJECT_LEGAL_HOLD);
+      if (aiter != attrs.end()) {
+        RGWObjectLegalHold obj_legal_hold;
+        try {
+          decode(obj_legal_hold, aiter->second);
+        } catch (buffer::error& err) {
+          ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectLegalHold" << dendl;
+          op_ret = -EIO;
+          return;
+        }
+        if (obj_legal_hold.is_enabled()) {
+          op_ret = -EACCES;
+          return;
+        }
+      }
+    }
+
     if (multipart_delete) {
       const auto slo_attr = attrs.find(RGW_ATTR_SLO_MANIFEST);
 
@@ -4610,6 +4729,16 @@ void RGWDeleteObj::execute()
   } else {
     op_ret = -EINVAL;
   }
+
+  const auto ret = rgw::notify::publish(s, ceph::real_clock::now(), attrs[RGW_ATTR_ETAG].to_str(),
+          delete_marker && s->object.instance.empty() ? rgw::notify::ObjectRemovedDeleteMarkerCreated : rgw::notify::ObjectRemovedDelete,
+          store);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 bool RGWCopyObj::parse_copy_location(const boost::string_view& url_src,
@@ -4909,6 +5038,14 @@ void RGWCopyObj::execute()
                           &etag,
                           copy_obj_progress_cb, (void *)this
     );
+
+  const auto ret = rgw::notify::publish(s, mtime, etag, rgw::notify::ObjectCreatedCopy, store);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 int RGWGetACLs::verify_permission()
@@ -5573,6 +5710,14 @@ void RGWInitMultipart::execute()
 
     op_ret = obj_op.write_meta(bl.length(), 0, attrs);
   } while (op_ret == -EEXIST);
+  
+  const auto ret = rgw::notify::publish(s, 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;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 int RGWCompleteMultipart::verify_permission()
@@ -5879,6 +6024,14 @@ void RGWCompleteMultipart::execute()
   } else {
     ldpp_dout(this, 0) << "WARNING: failed to remove object " << meta_obj << dendl;
   }
+  
+  const auto ret = rgw::notify::publish(s, ceph::real_clock::now(), etag, rgw::notify::ObjectCreatedCompleteMultipartUpload, store);
+  if (ret < 0) {
+    ldpp_dout(this, 5) << "WARNING: publishing notification failed, with error: " << ret << dendl;
+       // TODO: we should have conf to make send a blocking coroutine and reply with error in case sending failed
+       // this should be global conf (probably returnign a different handler)
+    // so we don't need to read the configured values before we perform it
+  }
 }
 
 int RGWCompleteMultipart::MPSerializer::try_lock(
@@ -7369,6 +7522,315 @@ void RGWDeleteBucketPolicy::execute()
     });
 }
 
+void RGWPutBucketObjectLock::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+int RGWPutBucketObjectLock::verify_permission()
+{
+  return verify_bucket_owner_or_policy(s, rgw::IAM::s3PutBucketObjectLockConfiguration);
+}
+
+void RGWPutBucketObjectLock::execute()
+{
+  if (!s->bucket_info.obj_lock_enabled()) {
+    ldpp_dout(this, 0) << "ERROR: object Lock configuration cannot be enabled on existing buckets" << dendl;
+    op_ret = -ERR_INVALID_BUCKET_STATE;
+    return;
+  }
+
+  RGWXMLDecoder::XMLParser parser;
+  if (!parser.init()) {
+    ldpp_dout(this, 0) << "ERROR: failed to initialize parser" << dendl;
+    op_ret = -EINVAL;
+    return;
+  }
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  if (!parser.parse(data.c_str(), data.length(), 1)) {
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+
+  try {
+    RGWXMLDecoder::decode_xml("ObjectLockConfiguration", obj_lock, &parser, true);
+  } catch (RGWXMLDecoder::err& err) {
+    ldout(s->cct, 5) << "unexpected xml:" << err << dendl;
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+  if (obj_lock.has_rule() && !obj_lock.retention_period_valid()) {
+    ldpp_dout(this, 0) << "ERROR: retention period must be a positive integer value" << dendl;
+    op_ret = -ERR_INVALID_RETENTION_PERIOD;
+    return;
+  }
+
+  if (!store->svc.zone->is_meta_master()) {
+    op_ret = forward_request_to_master(s, NULL, store, data, nullptr);
+    if (op_ret < 0) {
+      ldout(s->cct, 20) << __func__ << "forward_request_to_master returned ret=" << op_ret << dendl;
+      return;
+    }
+  }
+
+  op_ret = retry_raced_bucket_write(store, s, [this] {
+    s->bucket_info.obj_lock = obj_lock;
+    op_ret = store->put_bucket_instance_info(s->bucket_info, false,
+                                             real_time(), &s->bucket_attrs);
+    return op_ret;
+  });
+  return;
+}
+
+void RGWGetBucketObjectLock::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+int RGWGetBucketObjectLock::verify_permission()
+{
+  return verify_bucket_owner_or_policy(s, rgw::IAM::s3GetBucketObjectLockConfiguration);
+}
+
+void RGWGetBucketObjectLock::execute()
+{
+  if (!s->bucket_info.obj_lock_enabled()) {
+    op_ret = -ERR_NO_SUCH_OBJECT_LOCK_CONFIGURATION;
+    return;
+  }
+}
+
+int RGWPutObjRetention::verify_permission()
+{
+  if (!verify_object_permission(this, s, rgw::IAM::s3PutObjectRetention)) {
+    return -EACCES;
+  }
+  op_ret = get_params();
+  if (op_ret) {
+    return op_ret;
+  }
+  if (bypass_governance_mode) {
+    bypass_perm = verify_object_permission(this, s, rgw::IAM::s3BypassGovernanceRetention);
+  }
+  return 0;
+}
+
+void RGWPutObjRetention::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+void RGWPutObjRetention::execute()
+{
+  if (!s->bucket_info.obj_lock_enabled()) {
+    ldpp_dout(this, 0) << "ERROR: object retention can't be set if bucket object lock not configured" << dendl;
+    op_ret = -ERR_INVALID_REQUEST;
+    return;
+  }
+
+  RGWXMLDecoder::XMLParser parser;
+  if (!parser.init()) {
+    ldpp_dout(this, 0) << "ERROR: failed to initialize parser" << dendl;
+    op_ret = -EINVAL;
+    return;
+  }
+
+  if (!parser.parse(data.c_str(), data.length(), 1)) {
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+
+  try {
+    RGWXMLDecoder::decode_xml("Retention", obj_retention, &parser, true);
+  } catch (RGWXMLDecoder::err& err) {
+    ldpp_dout(this, 5) << "unexpected xml:" << err << dendl;
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+
+  if (ceph::real_clock::to_time_t(obj_retention.get_retain_until_date()) < ceph_clock_now()) {
+    ldpp_dout(this, 0) << "ERROR: the retain until date must be in the future" << dendl;
+    op_ret = -EINVAL;
+    return;
+  }
+  bufferlist bl;
+  obj_retention.encode(bl);
+  rgw_obj obj(s->bucket, s->object);
+
+  //check old retention
+  map<string, bufferlist> attrs;
+  op_ret = get_obj_attrs(store, s, obj, attrs);
+  if (op_ret < 0) {
+    ldpp_dout(this, 0) << "ERROR: get obj attr error"<< dendl;
+    return;
+  }
+  auto aiter = attrs.find(RGW_ATTR_OBJECT_RETENTION);
+  if (aiter != attrs.end()) {
+    RGWObjectRetention old_obj_retention;
+    try {
+      decode(old_obj_retention, aiter->second);
+    } catch (buffer::error& err) {
+      ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
+      op_ret = -EIO;
+      return;
+    }
+    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) {
+        op_ret = -EACCES;
+        return;
+      }
+    }
+  }
+
+  op_ret = modify_obj_attr(store, s, obj, RGW_ATTR_OBJECT_RETENTION, bl);
+
+  return;
+}
+
+int RGWGetObjRetention::verify_permission()
+{
+  if (!verify_object_permission(this, s, rgw::IAM::s3GetObjectRetention)) {
+    return -EACCES;
+  }
+  return 0;
+}
+
+void RGWGetObjRetention::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+void RGWGetObjRetention::execute()
+{
+  if (!s->bucket_info.obj_lock_enabled()) {
+    ldpp_dout(this, 0) << "ERROR: bucket object lock not configured" << dendl;
+    op_ret = -ERR_INVALID_REQUEST;
+    return;
+  }
+  rgw_obj obj(s->bucket, s->object);
+  map<string, bufferlist> attrs;
+  op_ret = get_obj_attrs(store, s, obj, attrs);
+  if (op_ret < 0) {
+    ldpp_dout(this, 0) << "ERROR: failed to get obj attrs, obj=" << obj
+                       << " ret=" << op_ret << dendl;
+    return;
+  }
+  auto aiter = attrs.find(RGW_ATTR_OBJECT_RETENTION);
+  if (aiter == attrs.end()) {
+    op_ret = -ERR_NO_SUCH_OBJECT_LOCK_CONFIGURATION;
+    return;
+  }
+
+  bufferlist::const_iterator iter{&aiter->second};
+  try {
+    obj_retention.decode(iter);
+  } catch (const buffer::error& e) {
+    ldout(s->cct, 0) << __func__ <<  "decode object retention config failed" << dendl;
+    op_ret = -EIO;
+    return;
+  }
+  return;
+}
+
+int RGWPutObjLegalHold::verify_permission()
+{
+  if (!verify_object_permission(this, s, rgw::IAM::s3PutObjectLegalHold)) {
+    return -EACCES;
+  }
+  return 0;
+}
+
+void RGWPutObjLegalHold::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+void RGWPutObjLegalHold::execute() {
+  if (!s->bucket_info.obj_lock_enabled()) {
+    ldpp_dout(this, 0) << "ERROR: object legal hold can't be set if bucket object lock not configured" << dendl;
+    op_ret = -ERR_INVALID_REQUEST;
+    return;
+  }
+
+  RGWXMLDecoder::XMLParser parser;
+  if (!parser.init()) {
+    ldpp_dout(this, 0) << "ERROR: failed to initialize parser" << dendl;
+    op_ret = -EINVAL;
+    return;
+  }
+
+  op_ret = get_params();
+  if (op_ret < 0)
+    return;
+
+  if (!parser.parse(data.c_str(), data.length(), 1)) {
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+
+  try {
+    RGWXMLDecoder::decode_xml("LegalHold", obj_legal_hold, &parser, true);
+  } catch (RGWXMLDecoder::err &err) {
+    ldout(s->cct, 5) << "unexpected xml:" << err << dendl;
+    op_ret = -ERR_MALFORMED_XML;
+    return;
+  }
+  bufferlist bl;
+  obj_legal_hold.encode(bl);
+  rgw_obj obj(s->bucket, s->object);
+  //if instance is empty, we should modify the latest object
+  op_ret = modify_obj_attr(store, s, obj, RGW_ATTR_OBJECT_LEGAL_HOLD, bl);
+  return;
+}
+
+int RGWGetObjLegalHold::verify_permission()
+{
+  if (!verify_object_permission(this, s, rgw::IAM::s3GetObjectLegalHold)) {
+    return -EACCES;
+  }
+  return 0;
+}
+
+void RGWGetObjLegalHold::pre_exec()
+{
+  rgw_bucket_object_pre_exec(s);
+}
+
+void RGWGetObjLegalHold::execute()
+{
+  if (!s->bucket_info.obj_lock_enabled()) {
+    ldpp_dout(this, 0) << "ERROR: bucket object lock not configured" << dendl;
+    op_ret = -ERR_INVALID_REQUEST;
+    return;
+  }
+  rgw_obj obj(s->bucket, s->object);
+  map<string, bufferlist> attrs;
+  op_ret = get_obj_attrs(store, s, obj, attrs);
+  if (op_ret < 0) {
+    ldpp_dout(this, 0) << "ERROR: failed to get obj attrs, obj=" << obj
+                       << " ret=" << op_ret << dendl;
+    return;
+  }
+  auto aiter = attrs.find(RGW_ATTR_OBJECT_LEGAL_HOLD);
+  if (aiter == attrs.end()) {
+    op_ret = -ERR_NO_SUCH_OBJECT_LOCK_CONFIGURATION;
+    return;
+  }
+
+  bufferlist::const_iterator iter{&aiter->second};
+  try {
+    obj_legal_hold.decode(iter);
+  } catch (const buffer::error& e) {
+    ldout(s->cct, 0) << __func__ <<  "decode object legal hold config failed" << dendl;
+    op_ret = -EIO;
+    return;
+  }
+  return;
+}
+
 void RGWGetClusterStat::execute()
 {
   op_ret = this->store->get_rados_handle()->cluster_stat(stats_op);
index 346c518ff343f819177e068bc111739802b86cab..56454460a51c2310e62d5adefc5c416c5af0bd28 100644 (file)
@@ -45,6 +45,7 @@
 #include "rgw_lc.h"
 #include "rgw_torrent.h"
 #include "rgw_tag.h"
+#include "rgw_object_lock.h"
 #include "cls/lock/cls_lock_client.h"
 #include "cls/rgw/cls_rgw_client.h"
 
@@ -294,6 +295,9 @@ protected:
   bufferlist waiting;
   uint64_t action = 0;
 
+  bool get_retention;
+  bool get_legal_hold;
+
   int init_common();
 public:
   RGWGetObj() {
@@ -321,6 +325,8 @@ public:
     q_len = 0;
     first_data = true;
     cur_ofs = 0;
+    get_retention = false;
+    get_legal_hold = false;
  }
 
   bool prefetch_data() override;
@@ -915,6 +921,7 @@ protected:
   obj_version ep_objv;
   bool has_cors;
   bool relaxed_region_enforcement;
+  bool obj_lock_enabled;
   RGWCORSConfiguration cors_config;
   boost::optional<std::string> swift_ver_location;
   map<string, buffer::list> attrs;
@@ -925,7 +932,7 @@ protected:
   virtual bool need_metadata_upload() const { return false; }
 
 public:
-  RGWCreateBucket() : has_cors(false), relaxed_region_enforcement(false) {}
+  RGWCreateBucket() : has_cors(false), relaxed_region_enforcement(false), obj_lock_enabled(false) {}
 
   void emplace_attr(std::string&& key, buffer::list&& bl) {
     attrs.emplace(std::move(key), std::move(bl)); /* key and bl are r-value refs */
@@ -1058,6 +1065,10 @@ protected:
   uint64_t position;
   uint64_t cur_accounted_size;
 
+  //object lock
+  RGWObjectRetention *obj_retention;
+  RGWObjectLegalHold *obj_legal_hold;
+
 public:
   RGWPutObj() : ofs(0),
                 supplied_md5_b64(NULL),
@@ -1073,10 +1084,14 @@ public:
                 olh_epoch(0),
                 append(false),
                 position(0),
-                cur_accounted_size(0) {}
+                cur_accounted_size(0),
+                obj_retention(nullptr),
+                obj_legal_hold(nullptr) {}
 
   ~RGWPutObj() override {
     delete slo_info;
+    delete obj_retention;
+    delete obj_legal_hold;
   }
 
   void init(RGWRados *store, struct req_state *s, RGWHandler *h) override {
@@ -1280,13 +1295,17 @@ protected:
   ceph::real_time unmod_since; /* if unmodified since */
   bool no_precondition_error;
   std::unique_ptr<RGWBulkDelete::Deleter> deleter;
+  bool bypass_perm;
+  bool bypass_governance_mode;
 
 public:
   RGWDeleteObj()
     : delete_marker(false),
       multipart_delete(false),
       no_precondition_error(false),
-      deleter(nullptr) {
+      deleter(nullptr),
+      bypass_perm(true),
+      bypass_governance_mode(false) {
   }
 
   int verify_permission() override;
@@ -1954,26 +1973,23 @@ static inline int rgw_get_request_metadata(CephContext* const cct,
        * name. Passing here doesn't guarantee that an OSD will accept that
        * as ObjectStore::get_max_attr_name_length() can set the limit even
        * lower than the "osd_max_attr_name_len" configurable.  */
-      const size_t max_attr_name_len = \
-        cct->_conf.get_val<Option::size_t>("rgw_max_attr_name_len");
+      const auto max_attr_name_len = cct->_conf->rgw_max_attr_name_len;
       if (max_attr_name_len && attr_name.length() > max_attr_name_len) {
         return -ENAMETOOLONG;
       }
 
       /* Similar remarks apply to the check for value size. We're veryfing
        * it early at the RGW's side as it's being claimed in /info. */
-      const size_t max_attr_size = \
-        cct->_conf.get_val<Option::size_t>("rgw_max_attr_size");
+      const auto max_attr_size = cct->_conf->rgw_max_attr_size;
       if (max_attr_size && xattr.length() > max_attr_size) {
         return -EFBIG;
       }
 
       /* Swift allows administrators to limit the number of metadats items
        * send _in a single request_. */
-      const auto rgw_max_attrs_num_in_req = \
-        cct->_conf.get_val<uint64_t>("rgw_max_attrs_num_in_req");
-      if (rgw_max_attrs_num_in_req &&
-          ++valid_meta_count > rgw_max_attrs_num_in_req) {
+      const auto max_attrs_num_in_req = cct->_conf->rgw_max_attrs_num_in_req;
+      if (max_attrs_num_in_req &&
+          ++valid_meta_count > max_attrs_num_in_req) {
         return -E2BIG;
       }
 
@@ -2140,6 +2156,94 @@ public:
   }
 };
 
+class RGWPutBucketObjectLock : public RGWOp {
+protected:
+  bufferlist data;
+  bufferlist obj_lock_bl;
+  RGWObjectLock obj_lock;
+public:
+  RGWPutBucketObjectLock() = default;
+  ~RGWPutBucketObjectLock() {}
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() = 0;
+  virtual int get_params() = 0;
+  const char* name() const override { return "put_bucket_object_lock"; }
+  RGWOpType get_type() override { return RGW_OP_PUT_BUCKET_OBJ_LOCK; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+};
+
+class RGWGetBucketObjectLock : public RGWOp {
+public:
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() = 0;
+  const char* name() const override {return "get_bucket_object_lock"; }
+  RGWOpType get_type() override { return RGW_OP_GET_BUCKET_OBJ_LOCK; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+class RGWPutObjRetention : public RGWOp {
+protected:
+  bufferlist data;
+  RGWObjectRetention obj_retention;
+  bool bypass_perm;
+  bool bypass_governance_mode;
+public:
+  RGWPutObjRetention():bypass_perm(true), bypass_governance_mode(false) {}
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() override = 0;
+  virtual int get_params() = 0;
+  const char* name() const override { return "put_obj_retention"; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+  RGWOpType get_type() override { return RGW_OP_PUT_OBJ_RETENTION; }
+};
+
+class RGWGetObjRetention : public RGWOp {
+protected:
+  RGWObjectRetention obj_retention;
+public:
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() = 0;
+  const char* name() const override {return "get_obj_retention"; }
+  RGWOpType get_type() override { return RGW_OP_GET_OBJ_RETENTION; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+class RGWPutObjLegalHold : public RGWOp {
+protected:
+  bufferlist data;
+  RGWObjectLegalHold obj_legal_hold;
+public:
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() override = 0;
+  virtual int get_params() = 0;
+  const char* name() const override { return "put_obj_legal_hold"; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+  RGWOpType get_type() override { return RGW_OP_PUT_OBJ_LEGAL_HOLD; }
+};
+
+class RGWGetObjLegalHold : public RGWOp {
+protected:
+  RGWObjectLegalHold obj_legal_hold;
+public:
+  int verify_permission() override;
+  void pre_exec() override;
+  void execute() override;
+  virtual void send_response() = 0;
+  const char* name() const override {return "get_obj_legal_hold"; }
+  RGWOpType get_type() override { return RGW_OP_GET_OBJ_LEGAL_HOLD; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
 
 class RGWConfigBucketMetaSearch : public RGWOp {
 protected:
index 1a5519e6478775f59b0a92ba1bf6a6967905a80b..21d1a3636b443b32335f795cb3af68842479d9ab 100644 (file)
@@ -44,6 +44,7 @@ int rgw_perf_start(CephContext *cct)
   plb.add_u64_counter(l_rgw_pubsub_push_ok, "pubsub_push_ok", "Pubsub events pushed to an endpoint");
   plb.add_u64_counter(l_rgw_pubsub_push_failed, "pubsub_push_failed", "Pubsub events failed to be pushed to an endpoint");
   plb.add_u64(l_rgw_pubsub_push_pending, "pubsub_push_pending", "Pubsub events pending reply from endpoint");
+  plb.add_u64_counter(l_rgw_pubsub_missing_conf, "pubsub_missing_conf", "Pubsub events could not be handled because of missing configuration");
   
   perfcounter = plb.create_perf_counters();
   cct->get_perfcounters_collection()->add(perfcounter);
index 254cd724ab47f5f358e1494f881764fa279e4c30..1f0b6fc316f9073a807e10960356adfcc9c495b6 100644 (file)
@@ -43,6 +43,7 @@ enum {
   l_rgw_pubsub_push_ok,
   l_rgw_pubsub_push_failed,
   l_rgw_pubsub_push_pending,
+  l_rgw_pubsub_missing_conf,
 
   l_rgw_last,
 };
index 5922760e2128a9e01706354366933891a6892feb..ed9da7eec1caa16180ab5a7b68a87f83f37bbc3f 100644 (file)
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+#include "services/svc_zone.h"
 #include "rgw_b64.h"
 #include "rgw_rados.h"
 #include "rgw_pubsub.h"
 #include "rgw_tools.h"
+#include "rgw_xml.h"
+#include "rgw_arn.h"
+#include "rgw_pubsub_push.h"
+#include "rgw_rados.h"
+#include <regex>
+#include <algorithm>
 
 #define dout_subsys ceph_subsys_rgw
 
+bool rgw_s3_key_filter::decode_xml(XMLObj* obj) {
+  XMLObjIter iter = obj->find("FilterRule");
+  XMLObj *o;
+
+  const auto throw_if_missing = true;
+  auto prefix_not_set = true;
+  auto suffix_not_set = true;
+  auto regex_not_set = true;
+  std::string name;
+
+  while ((o = iter.get_next())) {
+    RGWXMLDecoder::decode_xml("Name", name, o, throw_if_missing);
+    if (name == "prefix" && prefix_not_set) {
+        prefix_not_set = false;
+        RGWXMLDecoder::decode_xml("Value", prefix_rule, o, throw_if_missing);
+    } else if (name == "suffix" && suffix_not_set) {
+        suffix_not_set = false;
+        RGWXMLDecoder::decode_xml("Value", suffix_rule, o, throw_if_missing);
+    } else if (name == "regex" && regex_not_set) {
+        regex_not_set = false;
+        RGWXMLDecoder::decode_xml("Value", regex_rule, o, throw_if_missing);
+    } else {
+        throw RGWXMLDecoder::err("invalid/duplicate S3Key filter rule name: '" + name + "'");
+    }
+  }
+  return true;
+}
+
+void rgw_s3_key_filter::dump_xml(Formatter *f) const {
+  if (!prefix_rule.empty()) {
+    f->open_object_section("FilterRule");
+    ::encode_xml("Name", "prefix", f);
+    ::encode_xml("Value", prefix_rule, f);
+    f->close_section();
+  }
+  if (!suffix_rule.empty()) {
+    f->open_object_section("FilterRule");
+    ::encode_xml("Name", "suffix", f);
+    ::encode_xml("Value", suffix_rule, f);
+    f->close_section();
+  }
+  if (!regex_rule.empty()) {
+    f->open_object_section("FilterRule");
+    ::encode_xml("Name", "regex", f);
+    ::encode_xml("Value", regex_rule, f);
+    f->close_section();
+  }
+}
+
+bool rgw_s3_key_filter::has_content() const {
+    return !(prefix_rule.empty() && suffix_rule.empty() && regex_rule.empty());
+}
+
+bool rgw_s3_metadata_filter::decode_xml(XMLObj* obj) {
+  metadata.clear();
+  XMLObjIter iter = obj->find("FilterRule");
+  XMLObj *o;
+
+  const auto throw_if_missing = true;
+
+  std::string key;
+  std::string value;
+
+  while ((o = iter.get_next())) {
+    RGWXMLDecoder::decode_xml("Name", key, o, throw_if_missing);
+    RGWXMLDecoder::decode_xml("Value", value, o, throw_if_missing);
+    metadata.emplace(key, value);
+  }
+  return true;
+}
+
+void rgw_s3_metadata_filter::dump_xml(Formatter *f) const {
+  for (const auto& key_value : metadata) {
+    f->open_object_section("FilterRule");
+    ::encode_xml("Name", key_value.first, f);
+    ::encode_xml("Value", key_value.second, f);
+    f->close_section();
+  }
+}
+
+bool rgw_s3_metadata_filter::has_content() const {
+    return !metadata.empty();
+}
+
+bool rgw_s3_filter::decode_xml(XMLObj* obj) {
+    RGWXMLDecoder::decode_xml("S3Key", key_filter, obj);
+    RGWXMLDecoder::decode_xml("S3Metadata", metadata_filter, obj);
+  return true;
+}
+
+void rgw_s3_filter::dump_xml(Formatter *f) const {
+  if (key_filter.has_content()) {
+      ::encode_xml("S3Key", key_filter, f);
+  }
+  if (metadata_filter.has_content()) {
+      ::encode_xml("S3Metadata", metadata_filter, f);
+  }
+}
+
+bool rgw_s3_filter::has_content() const {
+    return key_filter.has_content()  ||
+           metadata_filter.has_content();
+}
+
+bool match(const rgw_s3_key_filter& filter, const std::string& key) {
+  const auto key_size = key.size();
+  const auto prefix_size = filter.prefix_rule.size();
+  if (prefix_size != 0) {
+    // prefix rule exists
+    if (prefix_size > key_size) {
+      // if prefix is longer than key, we fail
+      return false;
+    }
+    if (!std::equal(filter.prefix_rule.begin(), filter.prefix_rule.end(), key.begin())) {
+        return false;
+    }
+  }
+  const auto suffix_size = filter.suffix_rule.size();
+  if (suffix_size != 0) {
+    // suffix rule exists
+    if (suffix_size > key_size) {
+      // if suffix is longer than key, we fail
+      return false;
+    }
+    if (!std::equal(filter.suffix_rule.begin(), filter.suffix_rule.end(), (key.end() - suffix_size))) {
+        return false;
+    }
+  }
+  if (!filter.regex_rule.empty()) {
+    // TODO add regex chaching in the filter
+    const std::regex base_regex(filter.regex_rule);
+    if (!std::regex_match(key, base_regex)) {
+      return false;
+    }
+  }
+  return true;
+}
+
+bool match(const rgw_s3_metadata_filter& filter, const Metadata& metadata) {
+  // all filter pairs must exist with the same value in the object's metadata
+  // object metadata may include items not in the filter
+  return std::includes(metadata.begin(), metadata.end(), filter.metadata.begin(), filter.metadata.end());
+}
+
+bool match(const rgw::notify::EventTypeList& events, rgw::notify::EventType event) {
+  // if event list exists, and none of the events in the list matches the event type, filter the message
+  if (!events.empty() && std::find(events.begin(), events.end(), event) == events.end()) {
+    return false;
+  }
+  return true;
+}
+
+void do_decode_xml_obj(rgw::notify::EventTypeList& l, const string& name, XMLObj *obj) {
+  l.clear();
+
+  XMLObjIter iter = obj->find(name);
+  XMLObj *o;
+
+  while ((o = iter.get_next())) {
+    std::string val;
+    decode_xml_obj(val, o);
+    l.push_back(rgw::notify::from_string(val));
+  }
+}
+
+bool rgw_pubsub_s3_notification::decode_xml(XMLObj *obj) {
+  const auto throw_if_missing = true;
+  RGWXMLDecoder::decode_xml("Id", id, obj, throw_if_missing);
+  
+  RGWXMLDecoder::decode_xml("Topic", topic_arn, obj, throw_if_missing);
+  
+  RGWXMLDecoder::decode_xml("Filter", filter, obj);
+
+  do_decode_xml_obj(events, "Event", obj);
+  if (events.empty()) {
+    // if no events are provided, we assume all events
+    events.push_back(rgw::notify::ObjectCreated);
+    events.push_back(rgw::notify::ObjectRemoved);
+  }
+  return true;
+}
+
+void rgw_pubsub_s3_notification::dump_xml(Formatter *f) const {
+  ::encode_xml("Id", id, f);
+  ::encode_xml("Topic", topic_arn.c_str(), f);
+  if (filter.has_content()) {
+      ::encode_xml("Filter", filter, f);
+  }
+  for (const auto& event : events) {
+    ::encode_xml("Event", rgw::notify::to_string(event), f);
+  }
+}
+
+bool rgw_pubsub_s3_notifications::decode_xml(XMLObj *obj) {
+  do_decode_xml_obj(list, "TopicConfiguration", obj);
+  if (list.empty()) {
+    throw RGWXMLDecoder::err("at least one 'TopicConfiguration' must exist");
+  }
+  return true;
+}
+
+rgw_pubsub_s3_notification::rgw_pubsub_s3_notification(const rgw_pubsub_topic_filter& topic_filter) :
+    id(topic_filter.s3_id), events(topic_filter.events), topic_arn(topic_filter.topic.arn), filter(topic_filter.s3_filter) {} 
+
+void rgw_pubsub_s3_notifications::dump_xml(Formatter *f) const {
+  do_encode_xml("NotificationConfiguration", list, "TopicConfiguration", f);
+}
+
+void rgw_pubsub_s3_record::dump(Formatter *f) const {
+  encode_json("eventVersion", eventVersion, f);
+  encode_json("eventSource", eventSource, f);
+  encode_json("awsRegion", awsRegion, f);
+  utime_t ut(eventTime);
+  encode_json("eventTime", ut, f);
+  encode_json("eventName", eventName, f);
+  {
+    Formatter::ObjectSection s(*f, "userIdentity");
+    encode_json("principalId", userIdentity, f);
+  }
+  {
+    Formatter::ObjectSection s(*f, "requestParameters");
+    encode_json("sourceIPAddress", sourceIPAddress, f);
+  }
+  {
+    Formatter::ObjectSection s(*f, "responseElements");
+    encode_json("x-amz-request-id", x_amz_request_id, f);
+    encode_json("x-amz-id-2", x_amz_id_2, f);
+  }
+  {
+    Formatter::ObjectSection s(*f, "s3");
+    encode_json("s3SchemaVersion", s3SchemaVersion, f);
+    encode_json("configurationId", configurationId, f);
+    {
+        Formatter::ObjectSection sub_s(*f, "bucket");
+        encode_json("name", bucket_name, f);
+        {
+            Formatter::ObjectSection sub_sub_s(*f, "ownerIdentity");
+            encode_json("principalId", bucket_ownerIdentity, f);
+        }
+        encode_json("arn", bucket_arn, f);
+        encode_json("id", bucket_id, f);
+    }
+    {
+        Formatter::ObjectSection sub_s(*f, "object");
+        encode_json("key", object_key, f);
+        encode_json("size", object_size, f);
+        encode_json("etag", object_etag, f);
+        encode_json("versionId", object_versionId, f);
+        encode_json("sequencer", object_sequencer, f);
+        encode_json("metadata", x_meta_map, f);
+    }
+  }
+  encode_json("eventId", id, f);
+}
 
 void rgw_pubsub_event::dump(Formatter *f) const
 {
   encode_json("id", id, f);
-  encode_json("event", event, f);
+  encode_json("event", event_name, f);
   utime_t ut(timestamp);
   encode_json("timestamp", ut, f);
   encode_json("info", info, f);
@@ -19,6 +283,25 @@ void rgw_pubsub_topic::dump(Formatter *f) const
 {
   encode_json("user", user, f);
   encode_json("name", name, f);
+  encode_json("dest", dest, f);
+  encode_json("arn", arn, f);
+}
+
+void rgw_pubsub_topic::dump_xml(Formatter *f) const
+{
+  encode_xml("User", user, f);
+  encode_xml("Name", name, f);
+  encode_xml("EndPoint", dest, f);
+  encode_xml("TopicArn", arn, f);
+}
+
+void encode_json(const char *name, const rgw::notify::EventTypeList& l, Formatter *f)
+{
+  f->open_array_section(name);
+  for (auto iter = l.cbegin(); iter != l.cend(); ++iter) {
+    f->dump_string("obj", rgw::notify::to_ceph_string(*iter));
+  }
+  f->close_section();
 }
 
 void rgw_pubsub_topic_filter::dump(Formatter *f) const
@@ -49,11 +332,27 @@ void rgw_pubsub_user_topics::dump(Formatter *f) const
   }
 }
 
+void rgw_pubsub_user_topics::dump_xml(Formatter *f) const
+{
+  for (auto& t : topics) {
+    encode_xml("member", t.second.topic, f);
+  }
+}
+
 void rgw_pubsub_sub_dest::dump(Formatter *f) const
 {
   encode_json("bucket_name", bucket_name, f);
   encode_json("oid_prefix", oid_prefix, f);
   encode_json("push_endpoint", push_endpoint, f);
+  encode_json("push_endpoint_args", push_endpoint_args, f);
+  encode_json("push_endpoint_topic", arn_topic, f);
+}
+
+void rgw_pubsub_sub_dest::dump_xml(Formatter *f) const
+{
+  encode_xml("EndpointAddress", push_endpoint, f);
+  encode_xml("EndpointArgs", push_endpoint_args, f);
+  encode_xml("EndpointTopic", arn_topic, f);
 }
 
 void rgw_pubsub_sub_config::dump(Formatter *f) const
@@ -62,6 +361,7 @@ void rgw_pubsub_sub_config::dump(Formatter *f) const
   encode_json("name", name, f);
   encode_json("topic", topic, f);
   encode_json("dest", dest, f);
+  encode_json("s3_id", s3_id, f);
 }
 
 
@@ -78,8 +378,8 @@ int RGWUserPubSub::remove(const rgw_raw_obj& obj, RGWObjVersionTracker *objv_tra
 int RGWUserPubSub::read_user_topics(rgw_pubsub_user_topics *result, RGWObjVersionTracker *objv_tracker)
 {
   int ret = read(user_meta_obj, result, objv_tracker);
-  if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+  if (ret < 0) {
+    ldout(store->ctx(), 10) << "WARNING: failed to read topics info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
@@ -89,7 +389,7 @@ int RGWUserPubSub::write_user_topics(const rgw_pubsub_user_topics& topics, RGWOb
 {
   int ret = write(user_meta_obj, topics, objv_tracker);
   if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write topics info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
@@ -104,7 +404,7 @@ int RGWUserPubSub::Bucket::read_topics(rgw_pubsub_bucket_topics *result, RGWObjV
 {
   int ret = ps->read(bucket_meta_obj, result, objv_tracker);
   if (ret < 0 && ret != -ENOENT) {
-    ldout(ps->store->ctx(), 0) << "ERROR: failed to read bucket topics info: ret=" << ret << dendl;
+    ldout(ps->store->ctx(), 1) << "ERROR: failed to read bucket topics info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
@@ -114,7 +414,7 @@ int RGWUserPubSub::Bucket::write_topics(const rgw_pubsub_bucket_topics& topics,
 {
   int ret = ps->write(bucket_meta_obj, topics, objv_tracker);
   if (ret < 0) {
-    ldout(ps->store->ctx(), 0) << "ERROR: failed to write bucket topics info: ret=" << ret << dendl;
+    ldout(ps->store->ctx(), 1) << "ERROR: failed to write bucket topics info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -131,13 +431,13 @@ int RGWUserPubSub::get_topic(const string& name, rgw_pubsub_topic_subs *result)
   rgw_pubsub_user_topics topics;
   int ret = get_user_topics(&topics);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics info: ret=" << ret << dendl;
     return ret;
   }
 
   auto iter = topics.topics.find(name);
   if (iter == topics.topics.end()) {
-    ldout(store->ctx(), 0) << "ERROR: cannot add subscription to topic: topic not found" << dendl;
+    ldout(store->ctx(), 1) << "ERROR: topic not found" << dendl;
     return -ENOENT;
   }
 
@@ -145,36 +445,67 @@ int RGWUserPubSub::get_topic(const string& name, rgw_pubsub_topic_subs *result)
   return 0;
 }
 
-
-int RGWUserPubSub::Bucket::create_notification(const string& topic_name, const set<string, ltstr_nocase>& events)
+int RGWUserPubSub::get_topic(const string& name, rgw_pubsub_topic *result)
 {
+  rgw_pubsub_user_topics topics;
+  int ret = get_user_topics(&topics);
+  if (ret < 0) {
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    return ret;
+  }
+
+  auto iter = topics.topics.find(name);
+  if (iter == topics.topics.end()) {
+    ldout(store->ctx(), 1) << "ERROR: topic not found" << dendl;
+    return -ENOENT;
+  }
+
+  *result = iter->second.topic;
+  return 0;
+}
+
+int RGWUserPubSub::Bucket::create_notification(const string& topic_name, const rgw::notify::EventTypeList& events) {
+    return create_notification(topic_name, events, std::nullopt, "");
+}
+
+int RGWUserPubSub::Bucket::create_notification(const string& topic_name, const rgw::notify::EventTypeList& events, OptionalFilter s3_filter, const std::string& notif_name) {
   rgw_pubsub_topic_subs user_topic_info;
   RGWRados *store = ps->store;
 
   int ret = ps->get_topic(topic_name, &user_topic_info);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topic info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read topic '" << topic_name << "' info: ret=" << ret << dendl;
     return ret;
   }
+  ldout(store->ctx(), 20) << "successfully read topic '" << topic_name << "' info" << dendl;
 
   RGWObjVersionTracker objv_tracker;
   rgw_pubsub_bucket_topics bucket_topics;
 
   ret = read_topics(&bucket_topics, &objv_tracker);
-  if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read bucket topics info: ret=" << ret << dendl;
+  if (ret < 0) {
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics from bucket '" << 
+      bucket.name << "': ret=" << ret << dendl;
     return ret;
   }
+  ldout(store->ctx(), 20) << "successfully read " << bucket_topics.topics.size() << " topics from bucket '" << 
+    bucket.name << "'" << dendl;
 
   auto& topic_filter = bucket_topics.topics[topic_name];
   topic_filter.topic = user_topic_info.topic;
   topic_filter.events = events;
+  topic_filter.s3_id = notif_name;
+  if (s3_filter) {
+    topic_filter.s3_filter = *s3_filter;
+  }
 
   ret = write_topics(bucket_topics, &objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write topics to bucket '" << bucket.name << "': ret=" << ret << dendl;
     return ret;
   }
+    
+  ldout(store->ctx(), 20) << "successfully wrote " << bucket_topics.topics.size() << " topics to bucket '" << bucket.name << "'" << dendl;
 
   return 0;
 }
@@ -186,7 +517,7 @@ int RGWUserPubSub::Bucket::remove_notification(const string& topic_name)
 
   int ret = ps->get_topic(topic_name, &user_topic_info);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topic info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read topic info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -194,8 +525,8 @@ int RGWUserPubSub::Bucket::remove_notification(const string& topic_name)
   rgw_pubsub_bucket_topics bucket_topics;
 
   ret = read_topics(&bucket_topics, &objv_tracker);
-  if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read bucket topics info: ret=" << ret << dendl;
+  if (ret < 0) {
+    ldout(store->ctx(), 1) << "ERROR: failed to read bucket topics info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -203,31 +534,37 @@ int RGWUserPubSub::Bucket::remove_notification(const string& topic_name)
 
   ret = write_topics(bucket_topics, &objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write topics info: ret=" << ret << dendl;
     return ret;
   }
 
   return 0;
 }
 
-int RGWUserPubSub::create_topic(const string& name)
-{
+int RGWUserPubSub::create_topic(const string& name) {
+  return create_topic(name, rgw_pubsub_sub_dest(), "");
+}
+
+int RGWUserPubSub::create_topic(const string& name, const rgw_pubsub_sub_dest& dest, const std::string& arn) {
   RGWObjVersionTracker objv_tracker;
   rgw_pubsub_user_topics topics;
 
   int ret = read_user_topics(&topics, &objv_tracker);
   if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    // its not an error if not topics exist, we create one
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics info: ret=" << ret << dendl;
     return ret;
   }
-
   rgw_pubsub_topic_subs& new_topic = topics.topics[name];
   new_topic.topic.user = user;
   new_topic.topic.name = name;
+  new_topic.topic.dest = dest;
+  new_topic.topic.arn = arn;
 
   ret = write_user_topics(topics, &objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write topics info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -241,15 +578,19 @@ int RGWUserPubSub::remove_topic(const string& name)
 
   int ret = read_user_topics(&topics, &objv_tracker);
   if (ret < 0 && ret != -ENOENT) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics info: ret=" << ret << dendl;
     return ret;
+  } else if (ret == -ENOENT) {
+      // its not an error if no topics exist, just a no-op
+      ldout(store->ctx(), 10) << "WARNING: failed to read topics info, deletion is a no-op: ret=" << ret << dendl;
+      return 0;
   }
 
   topics.topics.erase(name);
 
   ret = write_user_topics(topics, &objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to remove topics info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -260,7 +601,7 @@ int RGWUserPubSub::Sub::read_sub(rgw_pubsub_sub_config *result, RGWObjVersionTra
 {
   int ret = ps->read(sub_meta_obj, result, objv_tracker);
   if (ret < 0 && ret != -ENOENT) {
-    ldout(ps->store->ctx(), 0) << "ERROR: failed to read subscription info: ret=" << ret << dendl;
+    ldout(ps->store->ctx(), 1) << "ERROR: failed to read subscription info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
@@ -270,7 +611,7 @@ int RGWUserPubSub::Sub::write_sub(const rgw_pubsub_sub_config& sub_conf, RGWObjV
 {
   int ret = ps->write(sub_meta_obj, sub_conf, objv_tracker);
   if (ret < 0) {
-    ldout(ps->store->ctx(), 0) << "ERROR: failed to write subscription info: ret=" << ret << dendl;
+    ldout(ps->store->ctx(), 1) << "ERROR: failed to write subscription info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -281,7 +622,7 @@ int RGWUserPubSub::Sub::remove_sub(RGWObjVersionTracker *objv_tracker)
 {
   int ret = ps->remove(sub_meta_obj, objv_tracker);
   if (ret < 0) {
-    ldout(ps->store->ctx(), 0) << "ERROR: failed to write subscription info: ret=" << ret << dendl;
+    ldout(ps->store->ctx(), 1) << "ERROR: failed to remove subscription info: ret=" << ret << dendl;
     return ret;
   }
 
@@ -293,7 +634,7 @@ int RGWUserPubSub::Sub::get_conf(rgw_pubsub_sub_config *result)
   return read_sub(result, nullptr);
 }
 
-int RGWUserPubSub::Sub::subscribe(const string& topic, const rgw_pubsub_sub_dest& dest)
+int RGWUserPubSub::Sub::subscribe(const string& topic, const rgw_pubsub_sub_dest& dest, const std::string& s3_id)
 {
   RGWObjVersionTracker user_objv_tracker;
   rgw_pubsub_user_topics topics;
@@ -301,14 +642,14 @@ int RGWUserPubSub::Sub::subscribe(const string& topic, const rgw_pubsub_sub_dest
 
   int ret = ps->read_user_topics(&topics, &user_objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
-    return ret;
+    ldout(store->ctx(), 1) << "ERROR: failed to read topics info: ret=" << ret << dendl;
+    return ret != -ENOENT ? ret : -EINVAL;
   }
 
   auto iter = topics.topics.find(topic);
   if (iter == topics.topics.end()) {
-    ldout(store->ctx(), 0) << "ERROR: cannot add subscription to topic: topic not found" << dendl;
-    return -ENOENT;
+    ldout(store->ctx(), 1) << "ERROR: cannot add subscription to topic: topic not found" << dendl;
+    return -EINVAL;
   }
 
   auto& t = iter->second;
@@ -319,18 +660,19 @@ int RGWUserPubSub::Sub::subscribe(const string& topic, const rgw_pubsub_sub_dest
   sub_conf.name = sub;
   sub_conf.topic = topic;
   sub_conf.dest = dest;
+  sub_conf.s3_id = s3_id;
 
   t.subs.insert(sub);
 
   ret = ps->write_user_topics(topics, &user_objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write topics info: ret=" << ret << dendl;
     return ret;
   }
 
   ret = write_sub(sub_conf, nullptr);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to write subscription info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to write subscription info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
@@ -346,7 +688,7 @@ int RGWUserPubSub::Sub::unsubscribe(const string& _topic)
     rgw_pubsub_sub_config sub_conf;
     int ret = read_sub(&sub_conf, &sobjv_tracker);
     if (ret < 0) {
-      ldout(store->ctx(), 0) << "ERROR: failed to read subscription info: ret=" << ret << dendl;
+      ldout(store->ctx(), 1) << "ERROR: failed to read subscription info: ret=" << ret << dendl;
       return ret;
     }
     topic = sub_conf.topic;
@@ -357,10 +699,9 @@ int RGWUserPubSub::Sub::unsubscribe(const string& _topic)
 
   int ret = ps->read_user_topics(&topics, &objv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read topics info: ret=" << ret << dendl;
-  }
-
-  if (ret >= 0) {
+    // not an error - could be that topic was already deleted
+    ldout(store->ctx(), 10) << "WARNING: failed to read topics info: ret=" << ret << dendl;
+  } else {
     auto iter = topics.topics.find(topic);
     if (iter != topics.topics.end()) {
       auto& t = iter->second;
@@ -369,7 +710,7 @@ int RGWUserPubSub::Sub::unsubscribe(const string& _topic)
 
       ret = ps->write_user_topics(topics, &objv_tracker);
       if (ret < 0) {
-        ldout(store->ctx(), 0) << "ERROR: failed to write topics info: ret=" << ret << dendl;
+        ldout(store->ctx(), 1) << "ERROR: failed to write topics info: ret=" << ret << dendl;
         return ret;
       }
     }
@@ -377,31 +718,32 @@ int RGWUserPubSub::Sub::unsubscribe(const string& _topic)
 
   ret = remove_sub(&sobjv_tracker);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to delete subscription info: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to delete subscription info: ret=" << ret << dendl;
     return ret;
   }
   return 0;
 }
 
-void RGWUserPubSub::Sub::list_events_result::dump(Formatter *f) const
+template<typename EventType>
+void RGWUserPubSub::SubWithEvents<EventType>::list_events_result::dump(Formatter *f) const
 {
   encode_json("next_marker", next_marker, f);
   encode_json("is_truncated", is_truncated, f);
 
-  Formatter::ArraySection s(*f, "events");
+  Formatter::ArraySection s(*f, EventType::json_type_plural);
   for (auto& event : events) {
-    encode_json("event", event, f);
+    encode_json(EventType::json_type_single, event, f);
   }
 }
 
-int RGWUserPubSub::Sub::list_events(const string& marker, int max_events,
-                               list_events_result *result)
+template<typename EventType>
+int RGWUserPubSub::SubWithEvents<EventType>::list_events(const string& marker, int max_events)
 {
   RGWRados *store = ps->store;
   rgw_pubsub_sub_config sub_conf;
   int ret = get_conf(&sub_conf);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read sub config: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read sub config: ret=" << ret << dendl;
     return ret;
   }
 
@@ -410,11 +752,11 @@ int RGWUserPubSub::Sub::list_events(const string& marker, int max_events,
   RGWSysObjectCtx obj_ctx(store->svc.sysobj->init_obj_ctx());
   ret = store->get_bucket_info(obj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, nullptr);
   if (ret == -ENOENT) {
-    result->is_truncated = false;
+    list.is_truncated = false;
     return 0;
   }
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read bucket info for events bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read bucket info for events bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
     return ret;
   }
 
@@ -424,15 +766,15 @@ int RGWUserPubSub::Sub::list_events(const string& marker, int max_events,
   list_op.params.prefix = sub_conf.dest.oid_prefix;
   list_op.params.marker = marker;
 
-  vector<rgw_bucket_dir_entry> objs;
+  std::vector<rgw_bucket_dir_entry> objs;
 
-  ret = list_op.list_objects(max_events, &objs, nullptr, &result->is_truncated);
+  ret = list_op.list_objects(max_events, &objs, nullptr, &list.is_truncated);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to list bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to list bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
     return ret;
   }
-  if (result->is_truncated) {
-    result->next_marker = list_op.get_next_marker().name;
+  if (list.is_truncated) {
+    list.next_marker = list_op.get_next_marker().name;
   }
 
   for (auto& obj : objs) {
@@ -442,31 +784,32 @@ int RGWUserPubSub::Sub::list_events(const string& marker, int max_events,
     try {
       bl.decode_base64(bl64);
     } catch (buffer::error& err) {
-      ldout(store->ctx(), 0) << "ERROR: failed to event (not a valid base64)" << dendl;
+      ldout(store->ctx(), 1) << "ERROR: failed to event (not a valid base64)" << dendl;
       continue;
     }
-    rgw_pubsub_event event;
+    EventType event;
 
     auto iter = bl.cbegin();
     try {
       decode(event, iter);
     } catch (buffer::error& err) {
-      ldout(store->ctx(), 0) << "ERROR: failed to decode event" << dendl;
+      ldout(store->ctx(), 1) << "ERROR: failed to decode event" << dendl;
       continue;
     };
 
-    result->events.push_back(event);
+    list.events.push_back(event);
   }
   return 0;
 }
 
-int RGWUserPubSub::Sub::remove_event(const string& event_id)
+template<typename EventType>
+int RGWUserPubSub::SubWithEvents<EventType>::remove_event(const string& event_id)
 {
   RGWRados *store = ps->store;
   rgw_pubsub_sub_config sub_conf;
   int ret = get_conf(&sub_conf);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read sub config: ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read sub config: ret=" << ret << dendl;
     return ret;
   }
 
@@ -475,7 +818,7 @@ int RGWUserPubSub::Sub::remove_event(const string& event_id)
   RGWSysObjectCtx sysobj_ctx(store->svc.sysobj->init_obj_ctx());
   ret = store->get_bucket_info(sysobj_ctx, tenant, sub_conf.dest.bucket_name, bucket_info, nullptr, nullptr);
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to read bucket info for events bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to read bucket info for events bucket: bucket=" << sub_conf.dest.bucket_name << " ret=" << ret << dendl;
     return ret;
   }
 
@@ -494,7 +837,18 @@ int RGWUserPubSub::Sub::remove_event(const string& event_id)
 
   ret = del_op.delete_obj();
   if (ret < 0) {
-    ldout(store->ctx(), 0) << "ERROR: failed to remove event (obj=" << obj << "): ret=" << ret << dendl;
+    ldout(store->ctx(), 1) << "ERROR: failed to remove event (obj=" << obj << "): ret=" << ret << dendl;
   }
   return 0;
 }
+
+template<typename EventType>
+void RGWUserPubSub::SubWithEvents<EventType>::dump(Formatter* f) const {
+  list.dump(f);
+}
+
+// explicit instantiation for the only two possible types
+// no need to move implementation to header
+template class RGWUserPubSub::SubWithEvents<rgw_pubsub_event>;
+template class RGWUserPubSub::SubWithEvents<rgw_pubsub_s3_record>;
+
index 7c65fe283356e25c3ddce1df164dd1a380956d7c..e73fc8b46b0df5a96e1c8eaf83f8b8ef5d6ba167 100644 (file)
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
 #ifndef CEPH_RGW_PUBSUB_H
 #define CEPH_RGW_PUBSUB_H
 
 #include "rgw_common.h"
 #include "rgw_tools.h"
 #include "rgw_zone.h"
-
+#include "rgw_rados.h"
+#include "rgw_notify_event_type.h"
 #include "services/svc_sys_obj.h"
 
+class XMLObj;
+
+struct rgw_s3_key_filter {
+  std::string prefix_rule;
+  std::string suffix_rule;
+  std::string regex_rule;
+
+  bool has_content() const;
+
+  bool decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+  
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(prefix_rule, bl);
+    encode(suffix_rule, bl);
+    encode(regex_rule, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(prefix_rule, bl);
+    decode(suffix_rule, bl);
+    decode(regex_rule, bl);
+    DECODE_FINISH(bl);
+  }
+};
+WRITE_CLASS_ENCODER(rgw_s3_key_filter)
+
+using Metadata = std::map<std::string, std::string>;
+
+struct rgw_s3_metadata_filter {
+  Metadata metadata;
+  
+  bool has_content() const;
+  
+  bool decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+  
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(metadata, bl);
+    ENCODE_FINISH(bl);
+  }
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(metadata, bl);
+    DECODE_FINISH(bl);
+  }
+};
+WRITE_CLASS_ENCODER(rgw_s3_metadata_filter)
+
+struct rgw_s3_filter {
+  rgw_s3_key_filter key_filter;
+  rgw_s3_metadata_filter metadata_filter;
+
+  bool has_content() const;
+  
+  bool decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+  
+  void encode(bufferlist& bl) const {
+    ENCODE_START(1, 1, bl);
+    encode(key_filter, bl);
+    encode(metadata_filter, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(1, bl);
+    decode(key_filter, bl);
+    decode(metadata_filter, bl);
+    DECODE_FINISH(bl);
+  }
+};
+WRITE_CLASS_ENCODER(rgw_s3_filter)
+
+using OptionalFilter = std::optional<rgw_s3_filter>;
+
+class rgw_pubsub_topic_filter;
+/* S3 notification configuration
+ * based on: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html
+<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
+  <TopicConfiguration>
+    <Filter>
+      <S3Key>
+        <FilterRule>
+          <Name>suffix</Name>
+          <Value>jpg</Value>
+        </FilterRule>
+      </S3Key>
+      <S3Metadata>
+        <FilterRule>
+          <Name></Name>
+          <Value></Value>
+        </FilterRule>
+      </s3Metadata>
+    </Filter>
+    <Id>notification1</Id>
+    <Topic>arn:aws:sns:<region>:<account>:<topic></Topic>
+    <Event>s3:ObjectCreated:*</Event>
+    <Event>s3:ObjectRemoved:*</Event>
+  </TopicConfiguration>
+</NotificationConfiguration>
+*/
+struct rgw_pubsub_s3_notification {
+  // notification id
+  std::string id;
+  // types of events
+  rgw::notify::EventTypeList events;
+  // topic ARN
+  std::string topic_arn;
+  // filter rules
+  rgw_s3_filter filter;
+
+  bool decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+
+  rgw_pubsub_s3_notification() = default;
+  // construct from rgw_pubsub_topic_filter (used by get/list notifications)
+  rgw_pubsub_s3_notification(const rgw_pubsub_topic_filter& topic_filter);
+};
+
+// return true if the key matches the prefix/suffix/regex rules of the key filter
+bool match(const rgw_s3_key_filter& filter, const std::string& key);
+// return true if the key matches the metadata rules of the metadata filter
+bool match(const rgw_s3_metadata_filter& filter, const Metadata& metadata);
+// return true if the event type matches (equal or contained in) one of the events in the list
+bool match(const rgw::notify::EventTypeList& events, rgw::notify::EventType event);
+
+struct rgw_pubsub_s3_notifications {
+  std::list<rgw_pubsub_s3_notification> list;
+  bool decode_xml(XMLObj *obj);
+  void dump_xml(Formatter *f) const;
+};
+
+/* S3 event records structure
+ * based on: https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html
+{  
+"Records":[  
+  {
+    "eventVersion":""
+    "eventSource":"",
+    "awsRegion":"",
+    "eventTime":"",
+    "eventName":"",
+    "userIdentity":{  
+      "principalId":""
+    },
+    "requestParameters":{
+      "sourceIPAddress":""
+    },
+    "responseElements":{
+      "x-amz-request-id":"",
+      "x-amz-id-2":""
+    },
+    "s3":{
+      "s3SchemaVersion":"1.0",
+      "configurationId":"",
+      "bucket":{
+        "name":"",
+        "ownerIdentity":{
+          "principalId":""
+        },
+        "arn":""
+        "id": ""
+      },
+      "object":{
+        "key":"",
+        "size": ,
+        "eTag":"",
+        "versionId":"",
+        "sequencer": "",
+        "metadata": ""
+      }
+    },
+    "eventId":"",
+  }
+]
+}*/
+
+struct rgw_pubsub_s3_record {
+  constexpr static const char* const json_type_single = "Record";
+  constexpr static const char* const json_type_plural = "Records";
+  // 2.1
+  std::string eventVersion;
+  // aws:s3
+  std::string eventSource;
+  // zonegroup
+  std::string awsRegion;
+  // time of the request
+  ceph::real_time eventTime;
+  // type of the event
+  std::string eventName;
+  // user that sent the requet (not implemented)
+  std::string userIdentity;
+  // IP address of source of the request (not implemented)
+  std::string sourceIPAddress;
+  // request ID (not implemented)
+  std::string x_amz_request_id;
+  // radosgw that received the request
+  std::string x_amz_id_2;
+  // 1.0
+  std::string s3SchemaVersion;
+  // ID received in the notification request
+  std::string configurationId;
+  // bucket name
+  std::string bucket_name;
+  // bucket owner (not implemented)
+  std::string bucket_ownerIdentity;
+  // bucket ARN
+  std::string bucket_arn;
+  // object key
+  std::string object_key;
+  // object size (not implemented)
+  uint64_t object_size;
+  // object etag
+  std::string object_etag;
+  // object version id bucket is versioned
+  std::string object_versionId;
+  // hexadecimal value used to determine event order for specific key
+  std::string object_sequencer;
+  // this is an rgw extension (not S3 standard)
+  // used to store a globally unique identifier of the event
+  // that could be used for acking
+  std::string id;
+  // this is an rgw extension holding the internal bucket id
+  std::string bucket_id;
+  // meta data
+  std::map<std::string, std::string> x_meta_map;
+
+  void encode(bufferlist& bl) const {
+    ENCODE_START(2, 1, bl);
+    encode(eventVersion, bl);
+    encode(eventSource, bl);
+    encode(awsRegion, bl);
+    encode(eventTime, bl);
+    encode(eventName, bl);
+    encode(userIdentity, bl);
+    encode(sourceIPAddress, bl);
+    encode(x_amz_request_id, bl);
+    encode(x_amz_id_2, bl);
+    encode(s3SchemaVersion, bl);
+    encode(configurationId, bl);
+    encode(bucket_name, bl);
+    encode(bucket_ownerIdentity, bl);
+    encode(bucket_arn, bl);
+    encode(object_key, bl);
+    encode(object_size, bl);
+    encode(object_etag, bl);
+    encode(object_versionId, bl);
+    encode(object_sequencer, bl);
+    encode(id, bl);
+    encode(bucket_id, bl);
+    encode(x_meta_map, bl);
+    ENCODE_FINISH(bl);
+  }
+
+  void decode(bufferlist::const_iterator& bl) {
+    DECODE_START(2, bl);
+    decode(eventVersion, bl);
+    decode(eventSource, bl);
+    decode(awsRegion, bl);
+    decode(eventTime, bl);
+    decode(eventName, bl);
+    decode(userIdentity, bl);
+    decode(sourceIPAddress, bl);
+    decode(x_amz_request_id, bl);
+    decode(x_amz_id_2, bl);
+    decode(s3SchemaVersion, bl);
+    decode(configurationId, bl);
+    decode(bucket_name, bl);
+    decode(bucket_ownerIdentity, bl);
+    decode(bucket_arn, bl);
+    decode(object_key, bl);
+    decode(object_size, bl);
+    decode(object_etag, bl);
+    decode(object_versionId, bl);
+    decode(object_sequencer, bl);
+    decode(id, bl);
+    if (struct_v >= 2) {
+        decode(bucket_id, bl);
+        decode(x_meta_map, bl);
+    }
+    DECODE_FINISH(bl);
+  }
+
+  void dump(Formatter *f) const;
+};
+WRITE_CLASS_ENCODER(rgw_pubsub_s3_record)
 
 struct rgw_pubsub_event {
-  string id;
-  string event;
-  string source;
+  constexpr static const char* const json_type_single = "event";
+  constexpr static const char* const json_type_plural = "events";
+  std::string id;
+  std::string event_name;
+  std::string source;
   ceph::real_time timestamp;
   JSONFormattable info;
 
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
     encode(id, bl);
-    encode(event, bl);
+    encode(event_name, bl);
     encode(source, bl);
     encode(timestamp, bl);
     encode(info, bl);
@@ -28,7 +325,7 @@ struct rgw_pubsub_event {
   void decode(bufferlist::const_iterator& bl) {
     DECODE_START(1, bl);
     decode(id, bl);
-    decode(event, bl);
+    decode(event_name, bl);
     decode(source, bl);
     decode(timestamp, bl);
     decode(info, bl);
@@ -40,56 +337,67 @@ struct rgw_pubsub_event {
 WRITE_CLASS_ENCODER(rgw_pubsub_event)
 
 struct rgw_pubsub_sub_dest {
-  string bucket_name;
-  string oid_prefix;
-  string push_endpoint;
-  string push_endpoint_args;
+  std::string bucket_name;
+  std::string oid_prefix;
+  std::string push_endpoint;
+  std::string push_endpoint_args;
+  std::string arn_topic;
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(2, 1, bl);
+    ENCODE_START(3, 1, bl);
     encode(bucket_name, bl);
     encode(oid_prefix, bl);
     encode(push_endpoint, bl);
     encode(push_endpoint_args, bl);
+    encode(arn_topic, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(2, bl);
+    DECODE_START(3, bl);
     decode(bucket_name, bl);
     decode(oid_prefix, bl);
     decode(push_endpoint, bl);
     if (struct_v >= 2) {
         decode(push_endpoint_args, bl);
     }
+    if (struct_v >= 3) {
+        decode(arn_topic, bl);
+    }
     DECODE_FINISH(bl);
   }
 
   void dump(Formatter *f) const;
+  void dump_xml(Formatter *f) const;
 };
 WRITE_CLASS_ENCODER(rgw_pubsub_sub_dest)
 
 struct rgw_pubsub_sub_config {
   rgw_user user;
-  string name;
-  string topic;
+  std::string name;
+  std::string topic;
   rgw_pubsub_sub_dest dest;
+  std::string s3_id;
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 1, bl);
     encode(user, bl);
     encode(name, bl);
     encode(topic, bl);
     encode(dest, bl);
+    encode(s3_id, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
+    DECODE_START(2, bl);
     decode(user, bl);
     decode(name, bl);
     decode(topic, bl);
     decode(dest, bl);
+    if (struct_v >= 2) {
+      decode(s3_id, bl);
+    }
     DECODE_FINISH(bl);
   }
 
@@ -99,19 +407,27 @@ WRITE_CLASS_ENCODER(rgw_pubsub_sub_config)
 
 struct rgw_pubsub_topic {
   rgw_user user;
-  string name;
+  std::string name;
+  rgw_pubsub_sub_dest dest;
+  std::string arn;
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(2, 1, bl);
     encode(user, bl);
     encode(name, bl);
+    encode(dest, bl);
+    encode(arn, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
+    DECODE_START(2, bl);
     decode(user, bl);
     decode(name, bl);
+    if (struct_v >= 2) {
+      decode(dest, bl);
+      decode(arn, bl);
+    }
     DECODE_FINISH(bl);
   }
 
@@ -120,6 +436,7 @@ struct rgw_pubsub_topic {
   }
 
   void dump(Formatter *f) const;
+  void dump_xml(Formatter *f) const;
 
   bool operator<(const rgw_pubsub_topic& t) const {
     return to_str().compare(t.to_str());
@@ -129,7 +446,7 @@ WRITE_CLASS_ENCODER(rgw_pubsub_topic)
 
 struct rgw_pubsub_topic_subs {
   rgw_pubsub_topic topic;
-  set<string> subs;
+  std::set<std::string> subs;
 
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
@@ -151,19 +468,37 @@ WRITE_CLASS_ENCODER(rgw_pubsub_topic_subs)
 
 struct rgw_pubsub_topic_filter {
   rgw_pubsub_topic topic;
-  set<string, ltstr_nocase> events;
+  rgw::notify::EventTypeList events;
+  std::string s3_id;
+  rgw_s3_filter s3_filter;
 
   void encode(bufferlist& bl) const {
-    ENCODE_START(1, 1, bl);
+    ENCODE_START(3, 1, bl);
     encode(topic, bl);
-    encode(events, bl);
+    // events are stored as a vector of strings
+    std::vector<std::string> tmp_events;
+    const auto converter = s3_id.empty() ? rgw::notify::to_ceph_string : rgw::notify::to_string;
+    std::transform(events.begin(), events.end(), std::back_inserter(tmp_events), converter);
+    encode(tmp_events, bl);
+    encode(s3_id, bl);
+    encode(s3_filter, bl);
     ENCODE_FINISH(bl);
   }
 
   void decode(bufferlist::const_iterator& bl) {
-    DECODE_START(1, bl);
+    DECODE_START(3, bl);
     decode(topic, bl);
-    decode(events, bl);
+    // events are stored as a vector of strings
+    events.clear();
+    std::vector<std::string> tmp_events;
+    decode(tmp_events, bl);
+    std::transform(tmp_events.begin(), tmp_events.end(), std::back_inserter(events), rgw::notify::from_string);
+    if (struct_v >= 2) {
+      decode(s3_id, bl);
+    }
+    if (struct_v >= 3) {
+      decode(s3_filter, bl);
+    }
     DECODE_FINISH(bl);
   }
 
@@ -172,7 +507,7 @@ struct rgw_pubsub_topic_filter {
 WRITE_CLASS_ENCODER(rgw_pubsub_topic_filter)
 
 struct rgw_pubsub_bucket_topics {
-  map<string, rgw_pubsub_topic_filter> topics;
+  std::map<std::string, rgw_pubsub_topic_filter> topics;
 
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
@@ -191,7 +526,7 @@ struct rgw_pubsub_bucket_topics {
 WRITE_CLASS_ENCODER(rgw_pubsub_bucket_topics)
 
 struct rgw_pubsub_user_topics {
-  map<string, rgw_pubsub_topic_subs> topics;
+  std::map<std::string, rgw_pubsub_topic_subs> topics;
 
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
@@ -206,10 +541,11 @@ struct rgw_pubsub_user_topics {
   }
 
   void dump(Formatter *f) const;
+  void dump_xml(Formatter *f) const;
 };
 WRITE_CLASS_ENCODER(rgw_pubsub_user_topics)
 
-static string pubsub_user_oid_prefix = "pubsub.user.";
+static std::string pubsub_user_oid_prefix = "pubsub.user.";
 
 class RGWUserPubSub
 {
@@ -221,15 +557,15 @@ class RGWUserPubSub
 
   rgw_raw_obj user_meta_obj;
 
-  string user_meta_oid() const {
+  std::string user_meta_oid() const {
     return pubsub_user_oid_prefix + user.to_str();
   }
 
-  string bucket_meta_oid(const rgw_bucket& bucket) const {
+  std::string bucket_meta_oid(const rgw_bucket& bucket) const {
     return pubsub_user_oid_prefix + user.to_str() + ".bucket." + bucket.name + "/" + bucket.bucket_id;
   }
 
-  string sub_meta_oid(const string& name) const {
+  std::string sub_meta_oid(const string& name) const {
     return pubsub_user_oid_prefix + user.to_str() + ".sub." + name;
   }
 
@@ -243,6 +579,7 @@ class RGWUserPubSub
 
   int read_user_topics(rgw_pubsub_user_topics *result, RGWObjVersionTracker *objv_tracker);
   int write_user_topics(const rgw_pubsub_user_topics& topics, RGWObjVersionTracker *objv_tracker);
+
 public:
   RGWUserPubSub(RGWRados *_store, const rgw_user& _user) : store(_store),
                                                            user(_user),
@@ -256,46 +593,85 @@ public:
     rgw_bucket bucket;
     rgw_raw_obj bucket_meta_obj;
 
+    // read the list of topics associated with a bucket and populate into result
+    // use version tacker to enforce atomicity between read/write
+    // return 0 on success or if no topic was associated with the bucket, error code otherwise
     int read_topics(rgw_pubsub_bucket_topics *result, RGWObjVersionTracker *objv_tracker);
+    // set the list of topics associated with a bucket
+    // use version tacker to enforce atomicity between read/write
+    // return 0 on success, error code otherwise
     int write_topics(const rgw_pubsub_bucket_topics& topics, RGWObjVersionTracker *objv_tracker);
   public:
     Bucket(RGWUserPubSub *_ps, const rgw_bucket& _bucket) : ps(_ps), bucket(_bucket) {
       ps->get_bucket_meta_obj(bucket, &bucket_meta_obj);
     }
 
+    // read the list of topics associated with a bucket and populate into result
+    // return 0 on success or if no topic was associated with the bucket, error code otherwise
     int get_topics(rgw_pubsub_bucket_topics *result);
-    int create_notification(const string& topic_name, const set<string, ltstr_nocase>& events);
+    // adds a topic + filter (event list, and possibly name and metadata filters) to a bucket
+    // assigning a notification name is optional (needed for S3 compatible notifications)
+    // if the topic already exist on the bucket, the filter event list may be updated
+    // for S3 compliant notifications the version with: s3_filter and notif_name should be used
+    // return -ENOENT if the topic does not exists
+    // return 0 on success, error code otherwise
+    int create_notification(const string& topic_name, const rgw::notify::EventTypeList& events);
+    int create_notification(const string& topic_name, const rgw::notify::EventTypeList& events, OptionalFilter s3_filter, const std::string& notif_name);
+    // remove a topic and filter from bucket
+    // if the topic does not exists on the bucket it is a no-op (considered success)
+    // return -ENOENT if the topic does not exists
+    // return 0 on success, error code otherwise
     int remove_notification(const string& topic_name);
   };
 
+  // base class for subscription
   class Sub {
     friend class RGWUserPubSub;
-    RGWUserPubSub *ps;
-    string sub;
+  protected:
+    RGWUserPubSub* const ps;
+    const std::string sub;
     rgw_raw_obj sub_meta_obj;
 
     int read_sub(rgw_pubsub_sub_config *result, RGWObjVersionTracker *objv_tracker);
     int write_sub(const rgw_pubsub_sub_config& sub_conf, RGWObjVersionTracker *objv_tracker);
     int remove_sub(RGWObjVersionTracker *objv_tracker);
   public:
-    Sub(RGWUserPubSub *_ps, const string& _sub) : ps(_ps), sub(_sub) {
+    Sub(RGWUserPubSub *_ps, const std::string& _sub) : ps(_ps), sub(_sub) {
       ps->get_sub_meta_obj(sub, &sub_meta_obj);
     }
 
-    int subscribe(const string& topic_name, const rgw_pubsub_sub_dest& dest);
+    virtual ~Sub() = default;
+
+    int subscribe(const string& topic_name, const rgw_pubsub_sub_dest& dest, const std::string& s3_id="");
     int unsubscribe(const string& topic_name);
-    int get_conf(rgw_pubsub_sub_config *result);
+    int get_conf(rgw_pubsub_sub_config* result);
+    
+    static const int DEFAULT_MAX_EVENTS = 100;
+    // followint virtual methods should only be called in derived
+    virtual int list_events(const string& marker, int max_events) {ceph_assert(false);}
+    virtual int remove_event(const string& event_id) {ceph_assert(false);}
+    virtual void dump(Formatter* f) const {ceph_assert(false);}
+  };
 
+  // subscription with templated list of events to support both S3 compliant and Ceph specific events
+  template<typename EventType>
+  class SubWithEvents : public Sub {
+  private:
     struct list_events_result {
-      string next_marker;
+      std::string next_marker;
       bool is_truncated{false};
-      std::vector<rgw_pubsub_event> events;
-
       void dump(Formatter *f) const;
-    };
+      std::vector<EventType> events;
+    } list;
 
-    int list_events(const string& marker, int max_events, list_events_result *result);
-    int remove_event(const string& event_id);
+  public:
+    SubWithEvents(RGWUserPubSub *_ps, const string& _sub) : Sub(_ps, _sub) {}
+
+    virtual ~SubWithEvents() = default;
+    
+    int list_events(const string& marker, int max_events) override;
+    int remove_event(const string& event_id) override;
+    void dump(Formatter* f) const override;
   };
 
   using BucketRef = std::shared_ptr<Bucket>;
@@ -308,7 +684,19 @@ public:
   SubRef get_sub(const string& sub) {
     return std::make_shared<Sub>(this, sub);
   }
-
+  
+  SubRef get_sub_with_events(const string& sub) {
+    auto tmpsub = Sub(this, sub);
+    rgw_pubsub_sub_config conf;
+    if (tmpsub.get_conf(&conf) < 0) {
+      return nullptr;
+    }
+    if (conf.s3_id.empty()) {
+      return std::make_shared<SubWithEvents<rgw_pubsub_event>>(this, sub);
+    }
+    return std::make_shared<SubWithEvents<rgw_pubsub_s3_record>>(this, sub);
+  }
+  
   void get_user_meta_obj(rgw_raw_obj *obj) const {
     *obj = rgw_raw_obj(store->svc.zone->get_zone_params().log_pool, user_meta_oid());
   }
@@ -321,9 +709,28 @@ public:
     *obj = rgw_raw_obj(store->svc.zone->get_zone_params().log_pool, sub_meta_oid(name));
   }
 
+  // get all topics defined for the user and populate them into "result"
+  // return 0 on success or if no topics exist, error code otherwise
   int get_user_topics(rgw_pubsub_user_topics *result);
+  // get a topic with its subscriptions by its name and populate it into "result"
+  // return -ENOENT if the topic does not exists 
+  // return 0 on success, error code otherwise
   int get_topic(const string& name, rgw_pubsub_topic_subs *result);
+  // get a topic with by its name and populate it into "result"
+  // return -ENOENT if the topic does not exists 
+  // return 0 on success, error code otherwise
+  int get_topic(const string& name, rgw_pubsub_topic *result);
+  // create a topic with a name only
+  // if the topic already exists it is a no-op (considered success)
+  // return 0 on success, error code otherwise
   int create_topic(const string& name);
+  // create a topic with push destination information and ARN
+  // if the topic already exists the destination and ARN values may be updated (considered succsess)
+  // return 0 on success, error code otherwise
+  int create_topic(const string& name, const rgw_pubsub_sub_dest& dest, const std::string& arn);
+  // remove a topic according to its name
+  // if the topic does not exists it is a no-op (considered success)
+  // return 0 on success, error code otherwise
   int remove_topic(const string& name);
 };
 
@@ -363,6 +770,7 @@ int RGWUserPubSub::write(const rgw_raw_obj& obj, const T& info, RGWObjVersionTra
     return ret;
   }
 
+  obj_ctx.invalidate(const_cast<rgw_raw_obj&>(obj));
   return 0;
 }
 
index efc1823e748488bc225b224aa70e764a8063e4c6..0c13886e01b31b8bf8f39dac66d3048f3da1c949 100644 (file)
@@ -7,6 +7,7 @@
 #include <algorithm>
 #include "include/buffer_fwd.h"
 #include "common/Formatter.h"
+#include "common/async/completion.h"
 #include "rgw_common.h"
 #include "rgw_data_sync.h"
 #include "rgw_pubsub.h"
 
 using namespace rgw;
 
-std::string json_format_pubsub_event(const rgw_pubsub_event& event) {
+template<typename EventType>
+std::string json_format_pubsub_event(const EventType& event) {
   std::stringstream ss;
   JSONFormatter f(false);
-  encode_json("event", event, &f);
+  encode_json(EventType::json_type_single, event, &f);
   f.flush(ss);
   return ss.str();
 }
@@ -88,41 +90,57 @@ private:
 
 public:
   RGWPubSubHTTPEndpoint(const std::string& _endpoint, 
-      const RGWHTTPArgs& args) :
-    endpoint(_endpoint) {
-      bool exists;
-
-      str_ack_level = args.get("http-ack-level", &exists);
-      if (!exists || str_ack_level == "any") {
-        // "any" is default
-        ack_level = ACK_LEVEL_ANY;
-      } else if (str_ack_level == "non-error") {
-        ack_level = ACK_LEVEL_NON_ERROR;
-      } else {
-        ack_level = std::atoi(str_ack_level.c_str());
-        if (ack_level < 100 || ack_level >= 600) {
-          throw configuration_error("HTTP: invalid http-ack-level " + str_ack_level);
-        }
-      }
+    const RGWHTTPArgs& args) : endpoint(_endpoint) {
+    bool exists;
 
-      auto str_verify_ssl = args.get("verify-ssl", &exists);
-      boost::algorithm::to_lower(str_verify_ssl);
-      // verify server certificate by default
-      if (!exists || str_verify_ssl == "true") {
-        verify_ssl = true;
-      } else if (str_verify_ssl == "false") {
-        verify_ssl = false;
-      } else {
-          throw configuration_error("HTTP: verify-ssl must be true/false, not: " + str_verify_ssl);
+    str_ack_level = args.get("http-ack-level", &exists);
+    if (!exists || str_ack_level == "any") {
+      // "any" is default
+      ack_level = ACK_LEVEL_ANY;
+    } else if (str_ack_level == "non-error") {
+      ack_level = ACK_LEVEL_NON_ERROR;
+    } else {
+      ack_level = std::atoi(str_ack_level.c_str());
+      if (ack_level < 100 || ack_level >= 600) {
+        throw configuration_error("HTTP/S: invalid http-ack-level: " + str_ack_level);
       }
     }
 
+    auto str_verify_ssl = args.get("verify-ssl", &exists);
+    boost::algorithm::to_lower(str_verify_ssl);
+    // verify server certificate by default
+    if (!exists || str_verify_ssl == "true") {
+      verify_ssl = true;
+    } else if (str_verify_ssl == "false") {
+      verify_ssl = false;
+    } else {
+        throw configuration_error("HTTP/S: verify-ssl must be true/false, not: " + str_verify_ssl);
+    }
+  }
+
   RGWCoroutine* send_to_completion_async(const rgw_pubsub_event& event, RGWDataSyncEnv* env) override {
     return new PostCR(json_format_pubsub_event(event), env, endpoint, ack_level, verify_ssl);
   }
 
+  RGWCoroutine* send_to_completion_async(const rgw_pubsub_s3_record& record, RGWDataSyncEnv* env) override {
+    return new PostCR(json_format_pubsub_event(record), env, endpoint, ack_level, verify_ssl);
+  }
+
+  int send_to_completion_async(CephContext* cct, const rgw_pubsub_s3_record& record, optional_yield y) override {
+    bufferlist read_bl;
+    RGWPostHTTPData request(cct, "POST", endpoint, &read_bl, verify_ssl);
+    const auto post_data = json_format_pubsub_event(record);
+    request.set_post_data(post_data);
+    request.set_send_length(post_data.length());
+    if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_pending);
+    const auto rc = RGWHTTP::process(&request, y);
+    if (perfcounter) perfcounter->dec(l_rgw_pubsub_push_pending);
+    // TODO: use read_bl to process return code and handle according to ack level
+    return rc;
+  }
+
   std::string to_str() const override {
-    std::string str("HTTP Endpoint");
+    std::string str("HTTP/S Endpoint");
     str += "\nURI: " + endpoint;
     str += "\nAck Level: " + str_ack_level;
     str += (verify_ssl ? "\nverify SSL" : "\ndon't verify SSL");
@@ -133,42 +151,43 @@ public:
 
 #ifdef WITH_RADOSGW_AMQP_ENDPOINT
 class RGWPubSubAMQPEndpoint : public RGWPubSubEndpoint {
-  private:
-    enum ack_level_t {
-      ACK_LEVEL_NONE,
-      ACK_LEVEL_BROKER,
-      ACK_LEVEL_ROUTEABLE
-    };
-    const std::string endpoint;
-    const std::string topic;
-    amqp::connection_ptr_t conn;
-    ack_level_t ack_level;
-    std::string str_ack_level;
-
-    static std::string get_exchange(const RGWHTTPArgs& args) {
-      bool exists;
-      const auto exchange = args.get("amqp-exchange", &exists);
-      if (!exists) {
-        throw configuration_error("AMQP: missing amqp-exchange");
-      }
-      return exchange;
+private:
+  enum ack_level_t {
+    ACK_LEVEL_NONE,
+    ACK_LEVEL_BROKER,
+    ACK_LEVEL_ROUTEABLE
+  };
+  CephContext* const cct;
+  const std::string endpoint;
+  const std::string topic;
+  const std::string exchange;
+  amqp::connection_ptr_t conn;
+  ack_level_t ack_level;
+  std::string str_ack_level;
+
+  static std::string get_exchange(const RGWHTTPArgs& args) {
+    bool exists;
+    const auto exchange = args.get("amqp-exchange", &exists);
+    if (!exists) {
+      throw configuration_error("AMQP: missing amqp-exchange");
     }
+    return exchange;
+  }
 
   // NoAckPublishCR implements async amqp publishing via coroutine
   // This coroutine ends when it send the message and does not wait for an ack
   class NoAckPublishCR : public RGWCoroutine {
   private:
-    RGWDataSyncEnv* const sync_env;
     const std::string topic;
     amqp::connection_ptr_t conn;
     const std::string message;
 
   public:
-    NoAckPublishCR(RGWDataSyncEnv* _sync_env,
+    NoAckPublishCR(CephContext* cct,
               const std::string& _topic,
               amqp::connection_ptr_t& _conn,
               const std::string& _message) :
-      RGWCoroutine(_sync_env->cct), sync_env(_sync_env),
+      RGWCoroutine(cct),
       topic(_topic), conn(_conn), message(_message) {}
 
     // send message to endpoint, without waiting for reply
@@ -189,19 +208,18 @@ class RGWPubSubAMQPEndpoint : public RGWPubSubEndpoint {
   // note that it does not wait for an ack fron the end client
   class AckPublishCR : public RGWCoroutine, public RGWIOProvider {
   private:
-    RGWDataSyncEnv* const sync_env;
     const std::string topic;
     amqp::connection_ptr_t conn;
     const std::string message;
     const ack_level_t ack_level; // TODO not used for now
 
   public:
-    AckPublishCR(RGWDataSyncEnv* _sync_env,
+    AckPublishCR(CephContext* cct,
               const std::string& _topic,
               amqp::connection_ptr_t& _conn,
               const std::string& _message,
               ack_level_t _ack_level) :
-      RGWCoroutine(_sync_env->cct), sync_env(_sync_env),
+      RGWCoroutine(cct),
       topic(_topic), conn(_conn), message(_message), ack_level(_ack_level) {}
 
     // send message to endpoint, waiting for reply
@@ -247,86 +265,200 @@ class RGWPubSubAMQPEndpoint : public RGWPubSubEndpoint {
     }
   };
 
+public:
+  RGWPubSubAMQPEndpoint(const std::string& _endpoint,
+      const std::string& _topic,
+      const RGWHTTPArgs& args,
+      CephContext* _cct) : 
+        cct(_cct),
+        endpoint(_endpoint), 
+        topic(_topic),
+        exchange(get_exchange(args)),
+        conn(amqp::connect(endpoint, exchange)) {
+    if (!conn) { 
+      throw configuration_error("AMQP: failed to create connection to: " + endpoint);
+    }
+    bool exists;
+    // get ack level
+    str_ack_level = args.get("amqp-ack-level", &exists);
+    if (!exists || str_ack_level == "broker") {
+      // "broker" is default
+      ack_level = ACK_LEVEL_BROKER;
+    } else if (str_ack_level == "none") {
+      ack_level = ACK_LEVEL_NONE;
+    } else if (str_ack_level == "routable") {
+      ack_level = ACK_LEVEL_ROUTEABLE;
+    } else {
+      throw configuration_error("AMQP: invalid amqp-ack-level: " + str_ack_level);
+    }
+  }
+
+  RGWCoroutine* send_to_completion_async(const rgw_pubsub_event& event, RGWDataSyncEnv* env) override {
+    ceph_assert(conn);
+    if (ack_level == ACK_LEVEL_NONE) {
+      return new NoAckPublishCR(cct, topic, conn, json_format_pubsub_event(event));
+    } else {
+      // TODO: currently broker and routable are the same - this will require different flags
+      // but the same mechanism
+      return new AckPublishCR(cct, topic, conn, json_format_pubsub_event(event), ack_level);
+    }
+  }
+  
+  RGWCoroutine* send_to_completion_async(const rgw_pubsub_s3_record& record, RGWDataSyncEnv* env) override {
+    ceph_assert(conn);
+    if (ack_level == ACK_LEVEL_NONE) {
+      return new NoAckPublishCR(cct, topic, conn, json_format_pubsub_event(record));
+    } else {
+      // TODO: currently broker and routable are the same - this will require different flags
+      // but the same mechanism
+      return new AckPublishCR(cct, topic, conn, json_format_pubsub_event(record), ack_level);
+    }
+  }
+
+  // this allows waiting untill "finish()" is called from a different thread
+  // waiting could be blocking the waiting thread or yielding, depending
+  // with compilation flag support and whether the optional_yield is set
+  class Waiter {
+    using Signature = void(boost::system::error_code);
+    using Completion = ceph::async::Completion<Signature>;
+    std::unique_ptr<Completion> completion = nullptr;
+    int ret;
+
+    mutable std::atomic<bool> done = false;
+    mutable std::mutex lock;
+    mutable std::condition_variable cond;
+
+    template <typename ExecutionContext, typename CompletionToken>
+    auto async_wait(ExecutionContext& ctx, CompletionToken&& token) {
+      boost::asio::async_completion<CompletionToken, Signature> init(token);
+      auto& handler = init.completion_handler;
+      {
+        std::unique_lock l{lock};
+        completion = Completion::create(ctx.get_executor(), std::move(handler));
+      }
+      return init.result.get();
+    }
+
   public:
-    RGWPubSubAMQPEndpoint(const std::string& _endpoint,
-        const std::string& _topic,
-        const RGWHTTPArgs& args) : 
-          endpoint(_endpoint), 
-          topic(_topic), 
-          conn(amqp::connect(endpoint, get_exchange(args))) {
-      bool exists;
-      // get ack level
-      str_ack_level = args.get("amqp-ack-level", &exists);
-      if (!exists || str_ack_level == "broker") {
-        // "broker" is default
-        ack_level = ACK_LEVEL_BROKER;
-      } else if (str_ack_level == "none") {
-        ack_level = ACK_LEVEL_NONE;
-      } else if (str_ack_level == "routable") {
-        ack_level = ACK_LEVEL_ROUTEABLE;
-      } else {
-        throw configuration_error("HTTP: invalid amqp-ack-level " + str_ack_level);
+    int wait(optional_yield y) {
+      if (done) {
+        return ret;
+      }
+#ifdef HAVE_BOOST_CONTEXT
+      if (y) {
+        auto& io_ctx = y.get_io_context();
+        auto& yield_ctx = y.get_yield_context();
+        boost::system::error_code ec;
+        async_wait(io_ctx, yield_ctx[ec]);
+        return -ec.value();
       }
+#endif
+      std::unique_lock l(lock);
+      cond.wait(l, [this]{return (done==true);});
+      return ret;
     }
 
-    RGWCoroutine* send_to_completion_async(const rgw_pubsub_event& event, RGWDataSyncEnv* env) override {
-      if (ack_level == ACK_LEVEL_NONE) {
-        return new NoAckPublishCR(env, topic, conn, json_format_pubsub_event(event));
+    void finish(int r) {
+      std::unique_lock l{lock};
+      ret = r;
+      done = true;
+      if (completion) {
+        boost::system::error_code ec(-ret, boost::system::system_category());
+        Completion::post(std::move(completion), ec);
       } else {
-        // TODO: currently broker and routable are the same - this will require different flags
-        // but the same mechanism
-        return new AckPublishCR(env, topic, conn, json_format_pubsub_event(event), ack_level);
+        cond.notify_all();
       }
     }
+  };
 
-    std::string to_str() const override {
-      std::string str("AMQP(0.9.1) Endpoint");
-      str += "\nURI: " + endpoint;
-      str += "\nTopic: " + topic;
-      str += "\nAck Level: " + str_ack_level;
-      return str;
+  int send_to_completion_async(CephContext* cct, const rgw_pubsub_s3_record& record, optional_yield y) override {
+    ceph_assert(conn);
+    if (ack_level == ACK_LEVEL_NONE) {
+      return amqp::publish(conn, topic, json_format_pubsub_event(record));
+    } else {
+      // TODO: currently broker and routable are the same - this will require different flags but the same mechanism
+      // note: dynamic allocation of Waiter is needed when this is invoked from a beast coroutine
+      auto w = std::unique_ptr<Waiter>(new Waiter);
+      const auto rc = amqp::publish_with_confirm(conn, 
+        topic,
+        json_format_pubsub_event(record),
+        std::bind(&Waiter::finish, w.get(), std::placeholders::_1));
+      if (rc < 0) {
+        // failed to publish, does not wait for reply
+        return rc;
+      }
+      return w->wait(y);
     }
+  }
+
+  std::string to_str() const override {
+    std::string str("AMQP(0.9.1) Endpoint");
+    str += "\nURI: " + endpoint;
+    str += "\nTopic: " + topic;
+    str += "\nExchange: " + exchange;
+    str += "\nAck Level: " + str_ack_level;
+    return str;
+  }
 };
 
 static const std::string AMQP_0_9_1("0-9-1");
 static const std::string AMQP_1_0("1-0");
+static const std::string AMQP_SCHEMA("amqp");
 #endif // ifdef WITH_RADOSGW_AMQP_ENDPOINT
 
-RGWPubSubEndpoint::Ptr RGWPubSubEndpoint::create(const std::string& endpoint, 
-    const std::string& topic, 
-    const RGWHTTPArgs& args) {
-  //fetch the schema from the endpoint
+static const std::string WEBHOOK_SCHEMA("webhook");
+static const std::string UNKNOWN_SCHEMA("unknown");
+static const std::string NO_SCHEMA("");
+
+const std::string& get_schema(const std::string& endpoint) {
+  if (endpoint.empty()) {
+    return NO_SCHEMA; 
+  }
   const auto pos = endpoint.find(':');
   if (pos == std::string::npos) {
-    throw configuration_error("malformed endpoint " + endpoint);
-    return nullptr;
+    return UNKNOWN_SCHEMA;
   }
   const auto& schema = endpoint.substr(0,pos);
   if (schema == "http" || schema == "https") {
-    return Ptr(new RGWPubSubHTTPEndpoint(endpoint, args));
+    return WEBHOOK_SCHEMA;
 #ifdef WITH_RADOSGW_AMQP_ENDPOINT
   } else if (schema == "amqp") {
+    return AMQP_SCHEMA;
+#endif
+  }
+  return UNKNOWN_SCHEMA;
+}
+
+RGWPubSubEndpoint::Ptr RGWPubSubEndpoint::create(const std::string& endpoint, 
+    const std::string& topic, 
+    const RGWHTTPArgs& args,
+    CephContext* cct) {
+  const auto& schema = get_schema(endpoint);
+  if (schema == WEBHOOK_SCHEMA) {
+    return Ptr(new RGWPubSubHTTPEndpoint(endpoint, args));
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+  } else if (schema == AMQP_SCHEMA) {
     bool exists;
     std::string version = args.get("amqp-version", &exists);
     if (!exists) {
       version = AMQP_0_9_1;
     }
     if (version == AMQP_0_9_1) {
-      return Ptr(new RGWPubSubAMQPEndpoint(endpoint, topic, args));
+      return Ptr(new RGWPubSubAMQPEndpoint(endpoint, topic, args, cct));
     } else if (version == AMQP_1_0) {
-      throw configuration_error("amqp v1.0 not supported");
+      throw configuration_error("AMQP: v1.0 not supported");
       return nullptr;
     } else {
-      throw configuration_error("unknown amqp version " + version);
+      throw configuration_error("AMQP: unknown version: " + version);
       return nullptr;
     }
   } else if (schema == "amqps") {
-    throw configuration_error("amqps not supported");
+    throw configuration_error("AMQP: ssl not supported");
     return nullptr;
 #endif
   }
 
-  throw configuration_error("unknown schema " + schema);
+  throw configuration_error("unknown schema in: " + endpoint);
   return nullptr;
 }
 
index 1a6c0d85f7c1efbf0ee56afe2e29af252bf6446a..8cfdeb5f3bca7a89f009b2aaa2720a99b2e57541 100644 (file)
@@ -6,14 +6,15 @@
 #include <memory>
 #include <stdexcept>
 #include "include/buffer_fwd.h"
+#include "common/async/yield_context.h"
 
-// TODO the env should be used as a template parameter to differentiate
-// synchronization driven pushes to (when running on the pubsub zone) to direct rados driven pushes
-// when running on the main zone
+// TODO the env should be used as a template parameter to differentiate the source that triggers the pushes
 class RGWDataSyncEnv;
 class RGWCoroutine;
 class RGWHTTPArgs;
+class CephContext;
 struct rgw_pubsub_event;
+struct rgw_pubsub_s3_record;
 
 // endpoint base class all endpoint  - types should derive from it
 class RGWPubSubEndpoint {
@@ -28,12 +29,20 @@ public:
   // factory method for the actual notification endpoint
   // derived class specific arguments are passed in http args format
   // may throw a configuration_error if creation fails
-  static Ptr create(const std::string& endpoint, const std::string& topic, const RGWHTTPArgs& args);
+  static Ptr create(const std::string& endpoint, const std::string& topic, const RGWHTTPArgs& args, CephContext *cct=nullptr);
  
-  // this method is used in order to send notification and wait for completion 
-  // in async manner via a coroutine
+  // this method is used in order to send notification (Ceph specific) and wait for completion 
+  // in async manner via a coroutine when invoked in the data sync environment
   virtual RGWCoroutine* send_to_completion_async(const rgw_pubsub_event& event, RGWDataSyncEnv* env) = 0;
 
+  // this method is used in order to send notification (S3 compliant) and wait for completion 
+  // in async manner via a coroutine when invoked in the data sync environment
+  virtual RGWCoroutine* send_to_completion_async(const rgw_pubsub_s3_record& record, RGWDataSyncEnv* env) = 0;
+
+  // this method is used in order to send notification (S3 compliant) and wait for completion 
+  // in async manner via a coroutine when invoked in the frontend environment
+  virtual int send_to_completion_async(CephContext* cct, const rgw_pubsub_s3_record& record, optional_yield y) = 0;
+
   // present as string
   virtual std::string to_str() const { return ""; }
   
index bdea1249c96c83cde43e44dc2893e6d9cd00a018..70246ced0fa7ae5db8caf2c555b44f1e2797c662 100644 (file)
@@ -2376,6 +2376,15 @@ int RGWRados::Bucket::update_bucket_id(const string& new_bucket_id)
 }
 
 
+static inline std::string after_delim(std::string_view delim)
+{
+  // assert: ! delim.empty()
+  std::string result{delim.data(), delim.length()};
+  result += char(255);
+  return result;
+}
+
+
 /**
  * Get ordered listing of the objects in a bucket.
  *
@@ -2393,16 +2402,8 @@ int RGWRados::Bucket::update_bucket_id(const string& new_bucket_id)
  * is_truncated: if number of objects in the bucket is bigger than
  * max, then truncated.
  */
-static inline std::string after_delim(std::string_view delim)
-{
-  // assert: ! delim.empty()
-  std::string result{delim.data(), delim.length()};
-  result += char(255);
-  return result;
-}
-
 int RGWRados::Bucket::List::list_objects_ordered(
-  int64_t max,
+  int64_t max_p,
   vector<rgw_bucket_dir_entry> *result,
   map<string, bool> *common_prefixes,
   bool *is_truncated)
@@ -2413,7 +2414,9 @@ int RGWRados::Bucket::List::list_objects_ordered(
 
   int count = 0;
   bool truncated = true;
-  int read_ahead = std::max(cct->_conf->rgw_list_bucket_min_readahead,max);
+  const int64_t max = // protect against memory issues and negative vals
+    std::min(bucket_list_objects_absolute_max, std::max(int64_t(0), max_p));
+  int read_ahead = std::max(cct->_conf->rgw_list_bucket_min_readahead, max);
 
   result->clear();
 
@@ -2446,14 +2449,6 @@ int RGWRados::Bucket::List::list_objects_ordered(
 
   string skip_after_delim;
   while (truncated && count <= max) {
-    if (skip_after_delim > cur_marker.name) {
-      cur_marker = skip_after_delim;
-
-      ldout(cct, 20) << "setting cur_marker="
-                    << cur_marker.name
-                    << "[" << cur_marker.instance << "]"
-                    << dendl;
-    }
     std::map<string, rgw_bucket_dir_entry> ent_map;
     int r = store->cls_bucket_list_ordered(target->get_bucket_info(),
                                           shard_id,
@@ -2535,14 +2530,6 @@ int RGWRados::Bucket::List::list_objects_ordered(
             next_marker = prefix_key;
             (*common_prefixes)[prefix_key] = true;
 
-            int marker_delim_pos = cur_marker.name.find(
-             params.delim, cur_prefix.size());
-
-            skip_after_delim = cur_marker.name.substr(0, marker_delim_pos);
-            skip_after_delim.append(after_delim_s);
-
-            ldout(cct, 20) << "skip_after_delim=" << skip_after_delim << dendl;
-
             count++;
           }
 
@@ -2558,6 +2545,24 @@ int RGWRados::Bucket::List::list_objects_ordered(
       result->emplace_back(std::move(entry));
       count++;
     }
+
+    if (!params.delim.empty()) {
+      int marker_delim_pos = cur_marker.name.find(params.delim, cur_prefix.size());
+      if (marker_delim_pos >= 0) {
+        skip_after_delim = cur_marker.name.substr(0, marker_delim_pos);
+        skip_after_delim.append(after_delim_s);
+
+        ldout(cct, 20) << "skip_after_delim=" << skip_after_delim << dendl;
+
+        if (skip_after_delim > cur_marker.name) {
+          cur_marker = skip_after_delim;
+          ldout(cct, 20) << "setting cur_marker="
+                         << cur_marker.name
+                         << "[" << cur_marker.instance << "]"
+                         << dendl;
+        }
+      }
+    }
   }
 
 done:
@@ -2587,7 +2592,7 @@ done:
  * is_truncated: if number of objects in the bucket is bigger than max, then
  *               truncated.
  */
-int RGWRados::Bucket::List::list_objects_unordered(int64_t max,
+int RGWRados::Bucket::List::list_objects_unordered(int64_t max_p,
                                                   vector<rgw_bucket_dir_entry> *result,
                                                   map<string, bool> *common_prefixes,
                                                   bool *is_truncated)
@@ -2599,6 +2604,9 @@ int RGWRados::Bucket::List::list_objects_unordered(int64_t max,
   int count = 0;
   bool truncated = true;
 
+  const int64_t max = // protect against memory issues and negative vals
+    std::min(bucket_list_objects_absolute_max, std::max(int64_t(0), max_p));
+
   // read a few extra in each call to cls_bucket_list_unordered in
   // case some are filtered out due to namespace matching, versioning,
   // filtering, etc.
@@ -3575,6 +3583,18 @@ int RGWRados::Object::Write::_do_write_meta(uint64_t size, uint64_t accounted_si
     meta.set_mtime = real_clock::now();
   }
 
+  if (target->bucket_info.obj_lock_enabled() && target->bucket_info.obj_lock.has_rule() && meta.flags == PUT_OBJ_CREATE) {
+    auto iter = attrs.find(RGW_ATTR_OBJECT_RETENTION);
+    if (iter == attrs.end()) {
+      real_time lock_until_date = target->bucket_info.obj_lock.get_lock_until_date(meta.set_mtime);
+      string mode = target->bucket_info.obj_lock.get_mode();
+      RGWObjectRetention obj_retention(mode, lock_until_date);
+      bufferlist bl;
+      obj_retention.encode(bl);
+      op.setxattr(RGW_ATTR_OBJECT_RETENTION, bl);
+    }
+  }
+
   if (state->is_olh) {
     op.setxattr(RGW_ATTR_OLH_ID_TAG, state->olh_tag);
   }
@@ -6305,6 +6325,9 @@ int RGWRados::Object::Read::prepare()
   if (r < 0) {
     return r;
   }
+  if (params.target_obj) {
+    *params.target_obj = state.obj;
+  }
   if (params.attrs) {
     *params.attrs = astate->attrset;
     if (cct->_conf->subsys.should_gather<ceph_subsys_rgw, 20>()) {
@@ -9136,6 +9159,8 @@ int RGWRados::cls_bucket_list_ordered(RGWBucketInfo& bucket_info,
       if (r < 0 && r != -ENOENT) {
           return r;
       }
+    } else {
+        r = 0;
     }
     if (r >= 0) {
       ldout(cct, 10) << "RGWRados::cls_bucket_list_ordered: got " <<
@@ -9276,6 +9301,8 @@ int RGWRados::cls_bucket_list_unordered(RGWBucketInfo& bucket_info,
        if (r < 0 && r != -ENOENT) {
          return r;
        }
+      } else {
+        r = 0;
       }
 
       // at this point either r >=0 or r == -ENOENT
index 78f28fa0749b1590f420889ce66779ea20c3da16..deb8b55328d0dee550bf7b0f1c2c340b4597c3f2 100644 (file)
@@ -1567,8 +1567,10 @@ public:
         ceph::real_time *lastmod;
         uint64_t *obj_size;
         map<string, bufferlist> *attrs;
+        rgw_obj *target_obj;
 
-        Params() : lastmod(NULL), obj_size(NULL), attrs(NULL) {}
+        Params() : lastmod(nullptr), obj_size(nullptr), attrs(nullptr),
+                target_obj(nullptr) {}
       } params;
 
       explicit Read(RGWRados::Object *_source) : source(_source) {}
@@ -1781,6 +1783,9 @@ public:
 
     class List {
     protected:
+      // absolute maximum number of objects that
+      // list_objects_(un)ordered can return
+      static constexpr int64_t bucket_list_objects_absolute_max = 25000;
 
       RGWRados::Bucket *target;
       rgw_obj_key next_marker;
index 02e8b130e27f8c99f76e5b59facaa56eb4458f7f..ee154f0f299ebb6c7c4e2badbf22f351d1af8c3a 100644 (file)
@@ -71,13 +71,11 @@ void RGWRealmWatcher::handle_notify(uint64_t notify_id, uint64_t cookie,
 
 void RGWRealmWatcher::handle_error(uint64_t cookie, int err)
 {
+  lderr(cct) << "RGWRealmWatcher::handle_error oid=" << watch_oid << " err=" << err << dendl;
   if (cookie != watch_handle)
     return;
 
-  if (err == -ENOTCONN) {
-    ldout(cct, 4) << "Disconnected watch on " << watch_oid << dendl;
-    watch_restart();
-  }
+  watch_restart();
 }
 
 int RGWRealmWatcher::watch_start(const RGWRealm& realm)
index c265f9190644b6b0716057ea7b1a46539b16f869..c95e41a45224babcc88bd000e63688d9bfe4fa74 100644 (file)
@@ -227,7 +227,7 @@ void rgw_rest_init(CephContext *cct, RGWRados *store, const RGWZoneGroup& zone_g
    */
 }
 
-static bool str_ends_with(const string& s, const string& suffix, size_t *pos)
+static bool str_ends_with_nocase(const string& s, const string& suffix, size_t *pos)
 {
   size_t len = suffix.size();
   if (len > (size_t)s.size()) {
@@ -239,10 +239,11 @@ static bool str_ends_with(const string& s, const string& suffix, size_t *pos)
     *pos = p;
   }
 
-  return s.compare(p, len, suffix) == 0;
+  return boost::algorithm::iends_with(s, suffix);
 }
 
-static bool rgw_find_host_in_domains(const string& host, string *domain, string *subdomain, set<string> valid_hostnames_set)
+static bool rgw_find_host_in_domains(const string& host, string *domain, string *subdomain,
+                                     const set<string>& valid_hostnames_set)
 {
   set<string>::iterator iter;
   /** TODO, Future optimization
@@ -251,7 +252,7 @@ static bool rgw_find_host_in_domains(const string& host, string *domain, string
    */
   for (iter = valid_hostnames_set.begin(); iter != valid_hostnames_set.end(); ++iter) {
     size_t pos;
-    if (!str_ends_with(host, *iter, &pos))
+    if (!str_ends_with_nocase(host, *iter, &pos))
       continue;
 
     if (pos == 0) {
@@ -1445,6 +1446,21 @@ int RGWPutLC_ObjStore::get_params()
   return op_ret;
 }
 
+int RGWPutBucketObjectLock_ObjStore::get_params()
+{
+  const auto max_size = s->cct->_conf->rgw_max_put_param_size;
+  std::tie(op_ret, data) = rgw_rest_read_all_input(s, max_size, false);
+  return op_ret;
+}
+
+int RGWPutObjLegalHold_ObjStore::get_params()
+{
+  const auto max_size = s->cct->_conf->rgw_max_put_param_size;
+  std::tie(op_ret, data) = rgw_rest_read_all_input(s, max_size, false);
+  return op_ret;
+}
+
+
 static std::tuple<int, bufferlist> read_all_chunked_input(req_state *s, const uint64_t max_read)
 {
 #define READ_CHUNK 4096
@@ -1665,15 +1681,16 @@ int RGWHandler_REST::allocate_formatter(struct req_state *s,
                                        int default_type,
                                        bool configurable)
 {
-  s->format = default_type;
+  s->format = -1; // set to invalid value to allocation happens anyway 
+  auto type = default_type;
   if (configurable) {
     string format_str = s->info.args.get("format");
     if (format_str.compare("xml") == 0) {
-      s->format = RGW_FORMAT_XML;
+      type = RGW_FORMAT_XML;
     } else if (format_str.compare("json") == 0) {
-      s->format = RGW_FORMAT_JSON;
+      type = RGW_FORMAT_JSON;
     } else if (format_str.compare("html") == 0) {
-      s->format = RGW_FORMAT_HTML;
+      type = RGW_FORMAT_HTML;
     } else {
       const char *accept = s->info.env->get("HTTP_ACCEPT");
       if (accept) {
@@ -1684,15 +1701,30 @@ int RGWHandler_REST::allocate_formatter(struct req_state *s,
         }
         format_buf[i] = 0;
         if ((strcmp(format_buf, "text/xml") == 0) || (strcmp(format_buf, "application/xml") == 0)) {
-          s->format = RGW_FORMAT_XML;
+          type = RGW_FORMAT_XML;
         } else if (strcmp(format_buf, "application/json") == 0) {
-          s->format = RGW_FORMAT_JSON;
+          type = RGW_FORMAT_JSON;
         } else if (strcmp(format_buf, "text/html") == 0) {
-          s->format = RGW_FORMAT_HTML;
+          type = RGW_FORMAT_HTML;
         }
       }
     }
   }
+  return RGWHandler_REST::reallocate_formatter(s, type);
+}
+
+int RGWHandler_REST::reallocate_formatter(struct req_state *s, int type)
+{
+  if (s->format == type) {
+    // do nothing, just reset
+    ceph_assert(s->formatter);
+    s->formatter->reset();
+    return 0;
+  }
+
+  delete s->formatter;
+  s->formatter = nullptr;
+  s->format = type;
 
   const string& mm = s->info.args.get("multipart-manifest");
   const bool multipart_delete = (mm.compare("delete") == 0);
index e1c8712f6ec074e6c95f83dc550e3a21757739aa..f755af3179acffcabedb7d7b687c50108fc30fb2 100644 (file)
@@ -473,6 +473,44 @@ public:
     ~RGWInfo_ObjStore() override = default;
 };
 
+class RGWPutBucketObjectLock_ObjStore : public RGWPutBucketObjectLock {
+public:
+  RGWPutBucketObjectLock_ObjStore() = default;
+  ~RGWPutBucketObjectLock_ObjStore() = default;
+  int get_params() override;
+};
+
+class RGWGetBucketObjectLock_ObjStore : public RGWGetBucketObjectLock {
+public:
+  RGWGetBucketObjectLock_ObjStore() = default;
+  ~RGWGetBucketObjectLock_ObjStore() override = default;
+};
+
+class RGWPutObjRetention_ObjStore : public RGWPutObjRetention {
+public:
+  RGWPutObjRetention_ObjStore() = default;
+  ~RGWPutObjRetention_ObjStore() override = default;
+};
+
+class RGWGetObjRetention_ObjStore : public RGWGetObjRetention {
+public:
+  RGWGetObjRetention_ObjStore() = default;
+  ~RGWGetObjRetention_ObjStore() = default;
+};
+
+class RGWPutObjLegalHold_ObjStore : public RGWPutObjLegalHold {
+public:
+  RGWPutObjLegalHold_ObjStore() = default;
+  ~RGWPutObjLegalHold_ObjStore() override = default;
+  int get_params() override;
+};
+
+class RGWGetObjLegalHold_ObjStore : public RGWGetObjLegalHold {
+public:
+  RGWGetObjLegalHold_ObjStore() = default;
+  ~RGWGetObjLegalHold_ObjStore() = default;
+};
+
 class RGWRESTOp : public RGWOp {
 protected:
   int http_ret;
@@ -503,9 +541,10 @@ protected:
   virtual RGWOp *op_copy() { return NULL; }
   virtual RGWOp *op_options() { return NULL; }
 
+public:
   static int allocate_formatter(struct req_state *s, int default_formatter,
                                bool configurable);
-public:
+
   static constexpr int MAX_BUCKET_NAME_LEN = 255;
   static constexpr int MAX_OBJ_NAME_LEN = 1024;
 
@@ -514,6 +553,7 @@ public:
 
   static int validate_bucket_name(const string& bucket);
   static int validate_object_name(const string& object);
+  static int reallocate_formatter(struct req_state *s, int type);
 
   int init_permissions(RGWOp* op) override;
   int read_permissions(RGWOp* op) override;
diff --git a/ceph/src/rgw/rgw_rest_pubsub.cc b/ceph/src/rgw/rgw_rest_pubsub.cc
new file mode 100644 (file)
index 0000000..5b582cb
--- /dev/null
@@ -0,0 +1,722 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include <algorithm>
+#include <boost/tokenizer.hpp>
+#include <optional>
+#include "rgw_rest_pubsub_common.h"
+#include "rgw_rest_pubsub.h"
+#include "rgw_pubsub_push.h"
+#include "rgw_pubsub.h"
+#include "rgw_sync_module_pubsub.h"
+#include "rgw_op.h"
+#include "rgw_rest.h"
+#include "rgw_rest_s3.h"
+#include "rgw_arn.h"
+#include "rgw_auth_s3.h"
+#include "services/svc_zone.h"
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_rgw
+
+// command (AWS compliant): 
+// POST
+// Action=CreateTopic&Name=<topic-name>[&push-endpoint=<endpoint>[&<arg1>=<value1>]]
+class RGWPSCreateTopic_ObjStore_AWS : public RGWPSCreateTopicOp {
+public:
+  int get_params() override {
+    topic_name = s->info.args.get("Name");
+    if (topic_name.empty()) {
+        ldout(s->cct, 1) << "CreateTopic Action 'Name' argument is missing" << dendl;
+        return -EINVAL;
+    }
+
+    dest.push_endpoint = s->info.args.get("push-endpoint");
+    for (const auto param : s->info.args.get_params()) {
+        if (param.first == "Action" || param.first == "Name" || param.first == "PayloadHash") {
+            continue;
+        }
+        dest.push_endpoint_args.append(param.first+"="+param.second+"&");
+    }
+
+    if (!dest.push_endpoint_args.empty()) {
+        // remove last separator
+        dest.push_endpoint_args.pop_back();
+    }
+    
+    // dest object only stores endpoint info
+    // bucket to store events/records will be set only when subscription is created
+    dest.bucket_name = "";
+    dest.oid_prefix = "";
+    dest.arn_topic = topic_name;
+    // the topic ARN will be sent in the reply
+    const rgw::ARN arn(rgw::Partition::aws, rgw::Service::sns, 
+        store->svc.zone->get_zonegroup().get_name(),
+        s->user->user_id.tenant, topic_name);
+    topic_arn = arn.to_string();
+    return 0;
+  }
+
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/xml");
+
+    if (op_ret < 0) {
+      return;
+    }
+
+    const auto f = s->formatter;
+    f->open_object_section_in_ns("CreateTopicResponse", "https://sns.amazonaws.com/doc/2010-03-31/");
+    f->open_object_section("CreateTopicResult");
+    encode_xml("TopicArn", topic_arn, f); 
+    f->close_section();
+    f->open_object_section("ResponseMetadata");
+    encode_xml("RequestId", s->req_id, f); 
+    f->close_section();
+    f->close_section();
+    rgw_flush_formatter_and_reset(s, f);
+  }
+};
+
+// command (AWS compliant): 
+// POST 
+// Action=ListTopics
+class RGWPSListTopics_ObjStore_AWS : public RGWPSListTopicsOp {
+public:
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/xml");
+
+    if (op_ret < 0) {
+      return;
+    }
+
+    const auto f = s->formatter;
+    f->open_object_section_in_ns("ListTopicsResponse", "https://sns.amazonaws.com/doc/2010-03-31/");
+    f->open_object_section("ListTopicsResult");
+    encode_xml("Topics", result, f); 
+    f->close_section();
+    f->open_object_section("ResponseMetadata");
+    encode_xml("RequestId", s->req_id, f); 
+    f->close_section();
+    f->close_section();
+    rgw_flush_formatter_and_reset(s, f);
+  }
+};
+
+// command (extension to AWS): 
+// POST
+// Action=GetTopic&TopicArn=<topic-arn>
+class RGWPSGetTopic_ObjStore_AWS : public RGWPSGetTopicOp {
+public:
+  int get_params() override {
+    const auto topic_arn = rgw::ARN::parse((s->info.args.get("TopicArn")));
+
+    if (!topic_arn || topic_arn->resource.empty()) {
+        ldout(s->cct, 1) << "GetTopic Action 'TopicArn' argument is missing or invalid" << dendl;
+        return -EINVAL;
+    }
+
+    topic_name = topic_arn->resource;
+    return 0;
+  }
+
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/xml");
+
+    if (op_ret < 0) {
+      return;
+    }
+
+    const auto f = s->formatter;
+    f->open_object_section("GetTopicResponse");
+    f->open_object_section("GetTopicResult");
+    encode_xml("Topic", result.topic, f); 
+    f->close_section();
+    f->open_object_section("ResponseMetadata");
+    encode_xml("RequestId", s->req_id, f); 
+    f->close_section();
+    f->close_section();
+    rgw_flush_formatter_and_reset(s, f);
+  }
+};
+
+// command (AWS compliant): 
+// POST
+// Action=DeleteTopic&TopicArn=<topic-arn>
+class RGWPSDeleteTopic_ObjStore_AWS : public RGWPSDeleteTopicOp {
+public:
+  int get_params() override {
+    const auto topic_arn = rgw::ARN::parse((s->info.args.get("TopicArn")));
+
+    if (!topic_arn || topic_arn->resource.empty()) {
+        ldout(s->cct, 1) << "DeleteTopic Action 'TopicArn' argument is missing or invalid" << dendl;
+        return -EINVAL;
+    }
+
+    topic_name = topic_arn->resource;
+    return 0;
+  }
+  
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/xml");
+
+    if (op_ret < 0) {
+      return;
+    }
+
+    const auto f = s->formatter;
+    f->open_object_section_in_ns("DeleteTopicResponse", "https://sns.amazonaws.com/doc/2010-03-31/");
+    f->open_object_section("ResponseMetadata");
+    encode_xml("RequestId", s->req_id, f); 
+    f->close_section();
+    f->close_section();
+    rgw_flush_formatter_and_reset(s, f);
+  }
+};
+
+namespace {
+// utility classes and functions for handling parameters with the following format:
+// Attributes.entry.{N}.{key|value}={VALUE}
+// N - any unsigned number
+// VALUE - url encoded string
+
+// and Attribute is holding key and value
+// ctor and set are done according to the "type" argument
+// if type is not "key" or "value" its a no-op
+class Attribute {
+    std::string key;
+    std::string value;
+public:
+    Attribute(const std::string& type, const std::string& key_or_value) {
+        set(type, key_or_value);
+    }
+    void set(const std::string& type, const std::string& key_or_value) {
+        if (type == "key") {
+            key = key_or_value;
+        } else if (type == "value") {
+            value = key_or_value;
+        }
+    }
+    const std::string& get_key() const { return key; }
+    const std::string& get_value() const { return value; }
+};
+
+using AttributeMap = std::map<unsigned, Attribute>;
+
+// aggregate the attributes into a map
+// the key and value are associated by the index (N)
+// no assumptions are made on the order in which these parameters are added
+void update_attribute_map(const std::string& input, AttributeMap& map) {
+  const boost::char_separator<char> sep(".");
+  const boost::tokenizer tokens(input, sep);
+  auto token = tokens.begin();
+  if (*token != "Attributes") {
+      return;
+  }
+  ++token;
+
+  if (*token != "entry") {
+      return;
+  }
+  ++token;
+
+  unsigned idx;
+  try {
+    idx = std::stoul(*token);
+  } catch (const std::invalid_argument&) {
+    return;
+  }
+  ++token;
+
+  std::string key_or_value = "";
+  // get the rest of the string regardless of dots
+  // this is to allow dots in the value
+  while (token != tokens.end()) {
+    key_or_value.append(*token+".");
+    ++token;
+  }
+  // remove last separator
+  key_or_value.pop_back();
+
+  auto pos = key_or_value.find("=");
+  if (pos != string::npos) {
+    const auto key_or_value_lhs = key_or_value.substr(0, pos);
+    const auto key_or_value_rhs = url_decode(key_or_value.substr(pos + 1, key_or_value.size() - 1));
+    const auto map_it = map.find(idx);
+    if (map_it == map.end()) {
+      // new entry
+      map.emplace(std::make_pair(idx, Attribute(key_or_value_lhs, key_or_value_rhs)));
+    } else {
+      // existing entry
+      map_it->second.set(key_or_value_lhs, key_or_value_rhs);
+    }
+  }
+}
+}
+
+void RGWHandler_REST_PSTopic_AWS::rgw_topic_parse_input() {
+  if (post_body.size() > 0) {
+    ldout(s->cct, 10) << "Content of POST: " << post_body << dendl;
+
+    if (post_body.find("Action") != string::npos) {
+      const boost::char_separator<char> sep("&");
+      const boost::tokenizer<boost::char_separator<char>> tokens(post_body, sep);
+      AttributeMap map;
+      for (const auto& t : tokens) {
+        auto pos = t.find("=");
+        if (pos != string::npos) {
+          const auto key = t.substr(0, pos);
+          if (key == "Action") {
+            s->info.args.append(key, t.substr(pos + 1, t.size() - 1));
+          } else if (key == "Name" || key == "TopicArn") {
+            const auto value = url_decode(t.substr(pos + 1, t.size() - 1));
+            s->info.args.append(key, value);
+          } else {
+            update_attribute_map(t, map);
+          }
+        }
+      }
+      // update the regular args with the content of the attribute map
+      for (const auto attr : map) {
+          s->info.args.append(attr.second.get_key(), attr.second.get_value());
+      }
+    }
+    const auto payload_hash = rgw::auth::s3::calc_v4_payload_hash(post_body);
+    s->info.args.append("PayloadHash", payload_hash);
+  }
+}
+
+RGWOp* RGWHandler_REST_PSTopic_AWS::op_post() {
+  rgw_topic_parse_input();
+
+  if (s->info.args.exists("Action")) {
+    const auto action = s->info.args.get("Action");
+    if (action.compare("CreateTopic") == 0)
+      return new RGWPSCreateTopic_ObjStore_AWS();
+    if (action.compare("DeleteTopic") == 0)
+      return new RGWPSDeleteTopic_ObjStore_AWS;
+    if (action.compare("ListTopics") == 0)
+      return new RGWPSListTopics_ObjStore_AWS();
+    if (action.compare("GetTopic") == 0)
+      return new RGWPSGetTopic_ObjStore_AWS();
+  }
+
+  return nullptr;
+}
+
+int RGWHandler_REST_PSTopic_AWS::authorize(const DoutPrefixProvider* dpp) {
+  /*if (s->info.args.exists("Action") && s->info.args.get("Action").find("Topic") != std::string::npos) {
+      // TODO: some topic specific authorization
+      return 0;
+  }*/
+  return RGW_Auth_S3::authorize(dpp, store, auth_registry, s);
+}
+
+
+namespace {
+// return a unique topic by prefexing with the notification name: <notification>_<topic>
+std::string topic_to_unique(const std::string& topic, const std::string& notification) {
+  return notification + "_" + topic;
+}
+
+// extract the topic from a unique topic of the form: <notification>_<topic>
+[[maybe_unused]] std::string unique_to_topic(const std::string& unique_topic, const std::string& notification) {
+  if (unique_topic.find(notification + "_") == string::npos) {
+    return "";
+  }
+  return unique_topic.substr(notification.length() + 1);
+}
+
+// from list of bucket topics, find the one that was auto-generated by a notification
+auto find_unique_topic(const rgw_pubsub_bucket_topics& bucket_topics, const std::string& notif_name) {
+    auto it = std::find_if(bucket_topics.topics.begin(), bucket_topics.topics.end(), [&](const auto& val) { return notif_name == val.second.s3_id; });
+    return it != bucket_topics.topics.end() ?
+        std::optional<std::reference_wrapper<const rgw_pubsub_topic_filter>>(it->second):
+        std::nullopt;
+}
+}
+
+// command (S3 compliant): PUT /<bucket name>?notification
+// a "notification" and a subscription will be auto-generated
+// actual configuration is XML encoded in the body of the message
+class RGWPSCreateNotif_ObjStore_S3 : public RGWPSCreateNotifOp {
+  rgw_pubsub_s3_notifications configurations;
+
+  int get_params_from_body() {
+    const auto max_size = s->cct->_conf->rgw_max_put_param_size;
+    int r;
+    bufferlist data;
+    std::tie(r, data) = rgw_rest_read_all_input(s, max_size, false);
+
+    if (r < 0) {
+      ldout(s->cct, 1) << "failed to read XML payload" << dendl;
+      return r;
+    }
+    if (data.length() == 0) {
+      ldout(s->cct, 1) << "XML payload missing" << dendl;
+      return -EINVAL;
+    }
+
+    RGWXMLDecoder::XMLParser parser;
+
+    if (!parser.init()){
+      ldout(s->cct, 1) << "failed to initialize XML parser" << dendl;
+      return -EINVAL;
+    }
+    if (!parser.parse(data.c_str(), data.length(), 1)) {
+      ldout(s->cct, 1) << "failed to parse XML payload" << dendl;
+      return -ERR_MALFORMED_XML;
+    }
+    try {
+      // NotificationConfigurations is mandatory
+      RGWXMLDecoder::decode_xml("NotificationConfiguration", configurations, &parser, true);
+    } catch (RGWXMLDecoder::err& err) {
+      ldout(s->cct, 1) << "failed to parse XML payload. error: " << err << dendl;
+      return -ERR_MALFORMED_XML;
+    }
+    return 0;
+  }
+
+  int get_params() override {
+    bool exists;
+    const auto no_value = s->info.args.get("notification", &exists);
+    if (!exists) {
+      ldout(s->cct, 1) << "missing required param 'notification'" << dendl;
+      return -EINVAL;
+    } 
+    if (no_value.length() > 0) {
+      ldout(s->cct, 1) << "param 'notification' should not have any value" << dendl;
+      return -EINVAL;
+    }
+    if (s->bucket_name.empty()) {
+      ldout(s->cct, 1) << "request must be on a bucket" << dendl;
+      return -EINVAL;
+    }
+    bucket_name = s->bucket_name;
+    return 0;
+  }
+
+public:
+  const char* name() const override { return "pubsub_notification_create_s3"; }
+  void execute() override;
+};
+
+void RGWPSCreateNotif_ObjStore_S3::execute() {
+  op_ret = get_params_from_body();
+  if (op_ret < 0) {
+    return;
+  }
+
+  ups.emplace(store, s->owner.get_id());
+  auto b = ups->get_bucket(bucket_info.bucket);
+  ceph_assert(b);
+  std::string data_bucket_prefix = "";
+  std::string data_oid_prefix = "";
+  bool push_only = true;
+  if (store->get_sync_module()) {
+    const auto psmodule = dynamic_cast<RGWPSSyncModuleInstance*>(store->get_sync_module().get());
+    if (psmodule) {
+        const auto& conf = psmodule->get_effective_conf();
+        data_bucket_prefix = conf["data_bucket_prefix"];
+        data_oid_prefix = conf["data_oid_prefix"];
+        // TODO: allow "push-only" on PS zone as well
+        push_only = false;
+    }
+  }
+
+  for (const auto& c : configurations.list) {
+    const auto& notif_name = c.id;
+    if (notif_name.empty()) {
+      ldout(s->cct, 1) << "missing notification id" << dendl;
+      op_ret = -EINVAL;
+      return;
+    }
+    if (c.topic_arn.empty()) {
+      ldout(s->cct, 1) << "missing topic ARN in notification: '" << notif_name << "'" << dendl;
+      op_ret = -EINVAL;
+      return;
+    }
+
+    const auto arn = rgw::ARN::parse(c.topic_arn);
+    if (!arn || arn->resource.empty()) {
+      ldout(s->cct, 1) << "topic ARN has invalid format: '" << c.topic_arn << "' in notification: '" << notif_name << "'" << dendl;
+      op_ret = -EINVAL;
+      return;
+    }
+
+    if (std::find(c.events.begin(), c.events.end(), rgw::notify::UnknownEvent) != c.events.end()) {
+      ldout(s->cct, 1) << "unknown event type in notification: '" << notif_name << "'" << dendl;
+      op_ret = -EINVAL;
+      return;
+    }
+
+    const auto topic_name = arn->resource;
+
+    // get topic information. destination information is stored in the topic
+    rgw_pubsub_topic topic_info;  
+    op_ret = ups->get_topic(topic_name, &topic_info);
+    if (op_ret < 0) {
+      ldout(s->cct, 1) << "failed to get topic '" << topic_name << "', ret=" << op_ret << dendl;
+      return;
+    }
+    // make sure that full topic configuration match
+    // TODO: use ARN match function
+    
+    // create unique topic name. this has 2 reasons:
+    // (1) topics cannot be shared between different S3 notifications because they hold the filter information
+    // (2) make topic clneaup easier, when notification is removed
+    const auto unique_topic_name = topic_to_unique(topic_name, notif_name);
+    // generate the internal topic. destination is stored here for the "push-only" case
+    // when no subscription exists
+    // ARN is cached to make the "GET" method faster
+    op_ret = ups->create_topic(unique_topic_name, topic_info.dest, topic_info.arn);
+    if (op_ret < 0) {
+      ldout(s->cct, 1) << "failed to auto-generate unique topic '" << unique_topic_name << 
+        "', ret=" << op_ret << dendl;
+      return;
+    }
+    ldout(s->cct, 20) << "successfully auto-generated unique topic '" << unique_topic_name << "'" << dendl;
+    // generate the notification
+    rgw::notify::EventTypeList events;
+    op_ret = b->create_notification(unique_topic_name, c.events, std::make_optional(c.filter), notif_name);
+    if (op_ret < 0) {
+      ldout(s->cct, 1) << "failed to auto-generate notification for unique topic '" << unique_topic_name <<
+        "', ret=" << op_ret << dendl;
+      // rollback generated topic (ignore return value)
+      ups->remove_topic(unique_topic_name);
+      return;
+    }
+    ldout(s->cct, 20) << "successfully auto-generated notification for unique topic '" << unique_topic_name << "'" << dendl;
+  
+    if (!push_only) {
+      // generate the subscription with destination information from the original topic
+      rgw_pubsub_sub_dest dest = topic_info.dest;
+      dest.bucket_name = data_bucket_prefix + s->owner.get_id().to_str() + "-" + unique_topic_name;
+      dest.oid_prefix = data_oid_prefix + notif_name + "/";
+      auto sub = ups->get_sub(notif_name);
+      op_ret = sub->subscribe(unique_topic_name, dest, notif_name);
+      if (op_ret < 0) {
+        ldout(s->cct, 1) << "failed to auto-generate subscription '" << notif_name << "', ret=" << op_ret << dendl;
+        // rollback generated notification (ignore return value)
+        b->remove_notification(unique_topic_name);
+        // rollback generated topic (ignore return value)
+        ups->remove_topic(unique_topic_name);
+        return;
+      }
+      ldout(s->cct, 20) << "successfully auto-generated subscription '" << notif_name << "'" << dendl;
+    }
+  }
+}
+
+// command (extension to S3): DELETE /bucket?notification[=<notification-id>]
+class RGWPSDeleteNotif_ObjStore_S3 : public RGWPSDeleteNotifOp {
+private:
+  std::string notif_name;
+
+  int get_params() override {
+    bool exists;
+    notif_name = s->info.args.get("notification", &exists);
+    if (!exists) {
+      ldout(s->cct, 1) << "missing required param 'notification'" << dendl;
+      return -EINVAL;
+    } 
+    if (s->bucket_name.empty()) {
+      ldout(s->cct, 1) << "request must be on a bucket" << dendl;
+      return -EINVAL;
+    }
+    bucket_name = s->bucket_name;
+    return 0;
+  }
+
+  void remove_notification_by_topic(const std::string& topic_name, const RGWUserPubSub::BucketRef& b) {
+    op_ret = b->remove_notification(topic_name);
+    if (op_ret < 0) {
+      ldout(s->cct, 1) << "failed to remove notification of topic '" << topic_name << "', ret=" << op_ret << dendl;
+    }
+    op_ret = ups->remove_topic(topic_name);
+    if (op_ret < 0) {
+      ldout(s->cct, 1) << "failed to remove auto-generated topic '" << topic_name << "', ret=" << op_ret << dendl;
+    }
+  }
+
+public:
+  void execute() override;
+  const char* name() const override { return "pubsub_notification_delete_s3"; }
+};
+
+void RGWPSDeleteNotif_ObjStore_S3::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+
+  ups.emplace(store, s->owner.get_id());
+  auto b = ups->get_bucket(bucket_info.bucket);
+  ceph_assert(b);
+
+  // get all topics on a bucket
+  rgw_pubsub_bucket_topics bucket_topics;
+  op_ret = b->get_topics(&bucket_topics);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get list of topics from bucket '" << bucket_info.bucket.name << "', ret=" << op_ret << dendl;
+    return;
+  }
+
+  if (!notif_name.empty()) {
+    // delete a specific notification
+    const auto unique_topic = find_unique_topic(bucket_topics, notif_name);
+    if (unique_topic) {
+      // remove the auto generated subscription according to notification name (if exist)
+      const auto unique_topic_name = unique_topic->get().topic.name;
+      auto sub = ups->get_sub(notif_name);
+      op_ret = sub->unsubscribe(unique_topic_name);
+      if (op_ret < 0 && op_ret != -ENOENT) {
+        ldout(s->cct, 1) << "failed to remove auto-generated subscription '" << notif_name << "', ret=" << op_ret << dendl;
+        return;
+      }
+      remove_notification_by_topic(unique_topic_name, b);
+      return;
+    }
+    // notification to be removed is not found - considered success
+    ldout(s->cct, 20) << "notification '" << notif_name << "' already removed" << dendl;
+    return;
+  }
+
+  // delete all notification of on a bucket
+  for (const auto& topic : bucket_topics.topics) {
+    // remove the auto generated subscription of the topic (if exist)
+    rgw_pubsub_topic_subs topic_subs;
+    op_ret = ups->get_topic(topic.first, &topic_subs);
+    for (const auto& topic_sub_name : topic_subs.subs) {
+      auto sub = ups->get_sub(topic_sub_name);
+      rgw_pubsub_sub_config sub_conf;
+      op_ret = sub->get_conf(&sub_conf);
+      if (op_ret < 0) {
+        ldout(s->cct, 1) << "failed to get subscription '" << topic_sub_name << "' info, ret=" << op_ret << dendl;
+        return;
+      }
+      if (!sub_conf.s3_id.empty()) {
+        // S3 notification, has autogenerated subscription
+        const auto& sub_topic_name = sub_conf.topic;
+        op_ret = sub->unsubscribe(sub_topic_name);
+        if (op_ret < 0) {
+          ldout(s->cct, 1) << "failed to remove auto-generated subscription '" << topic_sub_name << "', ret=" << op_ret << dendl;
+          return;
+        }
+      }
+    }
+    remove_notification_by_topic(topic.first, b);
+  }
+}
+
+// command (S3 compliant): GET /bucket?notification[=<notification-id>]
+class RGWPSListNotifs_ObjStore_S3 : public RGWPSListNotifsOp {
+private:
+  std::string notif_name;
+  rgw_pubsub_s3_notifications notifications;
+
+  int get_params() override {
+    bool exists;
+    notif_name = s->info.args.get("notification", &exists);
+    if (!exists) {
+      ldout(s->cct, 1) << "missing required param 'notification'" << dendl;
+      return -EINVAL;
+    } 
+    if (s->bucket_name.empty()) {
+      ldout(s->cct, 1) << "request must be on a bucket" << dendl;
+      return -EINVAL;
+    }
+    bucket_name = s->bucket_name;
+    return 0;
+  }
+
+public:
+  void execute() override;
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/xml");
+
+    if (op_ret < 0) {
+      return;
+    }
+    notifications.dump_xml(s->formatter);
+    rgw_flush_formatter_and_reset(s, s->formatter);
+  }
+  const char* name() const override { return "pubsub_notifications_get_s3"; }
+};
+
+void RGWPSListNotifs_ObjStore_S3::execute() {
+  ups.emplace(store, s->owner.get_id());
+  auto b = ups->get_bucket(bucket_info.bucket);
+  ceph_assert(b);
+  
+  // get all topics on a bucket
+  rgw_pubsub_bucket_topics bucket_topics;
+  op_ret = b->get_topics(&bucket_topics);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get list of topics from bucket '" << bucket_info.bucket.name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  if (!notif_name.empty()) {
+    // get info of a specific notification
+    const auto unique_topic = find_unique_topic(bucket_topics, notif_name);
+    if (unique_topic) {
+      notifications.list.emplace_back(unique_topic->get());
+      return;
+    }
+    op_ret = -ENOENT;
+    ldout(s->cct, 1) << "failed to get notification info for '" << notif_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  // loop through all topics of the bucket
+  for (const auto& topic : bucket_topics.topics) {
+    if (topic.second.s3_id.empty()) {
+        // not an s3 notification
+        continue;
+    }
+    notifications.list.emplace_back(topic.second);
+  }
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::op_get() {
+  return new RGWPSListNotifs_ObjStore_S3();
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::op_put() {
+  return new RGWPSCreateNotif_ObjStore_S3();
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::op_delete() {
+  return new RGWPSDeleteNotif_ObjStore_S3();
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::create_get_op() {
+    return new RGWPSListNotifs_ObjStore_S3();
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::create_put_op() {
+  return new RGWPSCreateNotif_ObjStore_S3();
+}
+
+RGWOp* RGWHandler_REST_PSNotifs_S3::create_delete_op() {
+  return new RGWPSDeleteNotif_ObjStore_S3();
+}
+
diff --git a/ceph/src/rgw/rgw_rest_pubsub.h b/ceph/src/rgw/rgw_rest_pubsub.h
new file mode 100644 (file)
index 0000000..f2f6335
--- /dev/null
@@ -0,0 +1,41 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+#pragma once
+
+#include "rgw_rest_s3.h"
+
+// s3 compliant notification handler factory
+class RGWHandler_REST_PSNotifs_S3 : public RGWHandler_REST_S3 {
+protected:
+  int init_permissions(RGWOp* op) override {return 0;}
+  int read_permissions(RGWOp* op) override {return 0;}
+  bool supports_quota() override {return false;}
+  RGWOp* op_get() override;
+  RGWOp* op_put() override;
+  RGWOp* op_delete() override;
+public:
+  using RGWHandler_REST_S3::RGWHandler_REST_S3;
+  virtual ~RGWHandler_REST_PSNotifs_S3() = default;
+  // following are used to generate the operations when invoked by another REST handler
+  static RGWOp* create_get_op();
+  static RGWOp* create_put_op();
+  static RGWOp* create_delete_op();
+};
+
+// AWS compliant topics handler factory
+class RGWHandler_REST_PSTopic_AWS : public RGWHandler_REST {
+  const rgw::auth::StrategyRegistry& auth_registry;
+  const std::string& post_body;
+  void rgw_topic_parse_input();
+  //static int init_from_header(struct req_state *s, int default_formatter, bool configurable_format);
+protected:
+  RGWOp* op_post() override;
+public:
+  RGWHandler_REST_PSTopic_AWS(const rgw::auth::StrategyRegistry& _auth_registry, const std::string& _post_body) : 
+      auth_registry(_auth_registry),
+      post_body(_post_body) {}
+  virtual ~RGWHandler_REST_PSTopic_AWS() = default;
+  int postauth_init() override { return 0; }
+  int authorize(const DoutPrefixProvider* dpp) override;
+};
+
diff --git a/ceph/src/rgw/rgw_rest_pubsub_common.cc b/ceph/src/rgw/rgw_rest_pubsub_common.cc
new file mode 100644 (file)
index 0000000..7e38599
--- /dev/null
@@ -0,0 +1,204 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw_rest_pubsub_common.h"
+#include "common/dout.h"
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_rgw
+
+void RGWPSCreateTopicOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+
+  ups.emplace(store, s->owner.get_id());
+  op_ret = ups->create_topic(topic_name, dest, topic_arn);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to create topic '" << topic_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully created topic '" << topic_name << "'" << dendl;
+}
+
+void RGWPSListTopicsOp::execute() {
+  ups.emplace(store, s->owner.get_id());
+  op_ret = ups->get_user_topics(&result);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get topics, ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully got topics" << dendl;
+}
+
+void RGWPSGetTopicOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  op_ret = ups->get_topic(topic_name, &result);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get topic '" << topic_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 1) << "successfully got topic '" << topic_name << "'" << dendl;
+}
+
+void RGWPSDeleteTopicOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  op_ret = ups->remove_topic(topic_name);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to remove topic '" << topic_name << ", ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 1) << "successfully removed topic '" << topic_name << "'" << dendl;
+}
+
+void RGWPSCreateSubOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  auto sub = ups->get_sub(sub_name);
+  op_ret = sub->subscribe(topic_name, dest);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to create subscription '" << sub_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully created subscription '" << sub_name << "'" << dendl;
+}
+
+void RGWPSGetSubOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  auto sub = ups->get_sub(sub_name);
+  op_ret = sub->get_conf(&result);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get subscription '" << sub_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully got subscription '" << sub_name << "'" << dendl;
+}
+
+void RGWPSDeleteSubOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  auto sub = ups->get_sub(sub_name);
+  op_ret = sub->unsubscribe(topic_name);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to remove subscription '" << sub_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully removed subscription '" << sub_name << "'" << dendl;
+}
+
+void RGWPSAckSubEventOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  auto sub = ups->get_sub_with_events(sub_name);
+  op_ret = sub->remove_event(event_id);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to ack event on subscription '" << sub_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully acked event on subscription '" << sub_name << "'" << dendl;
+}
+
+void RGWPSPullSubEventsOp::execute() {
+  op_ret = get_params();
+  if (op_ret < 0) {
+    return;
+  }
+  ups.emplace(store, s->owner.get_id());
+  sub = ups->get_sub_with_events(sub_name);
+  if (!sub) {
+    op_ret = -ENOENT;
+    ldout(s->cct, 1) << "failed to get subscription '" << sub_name << "' for events, ret=" << op_ret << dendl;
+    return;
+  }
+  op_ret = sub->list_events(marker, max_entries);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get events from subscription '" << sub_name << "', ret=" << op_ret << dendl;
+    return;
+  }
+  ldout(s->cct, 20) << "successfully got events from subscription '" << sub_name << "'" << dendl;
+}
+
+
+int RGWPSCreateNotifOp::verify_permission() {
+  int ret = get_params();
+  if (ret < 0) {
+    return ret;
+  }
+
+  const auto& id = s->owner.get_id();
+
+  ret = store->get_bucket_info(*s->sysobj_ctx, id.tenant, bucket_name,
+                               bucket_info, nullptr, nullptr);
+  if (ret < 0) {
+    ldout(s->cct, 1) << "failed to get bucket info, cannot verify ownership" << dendl;
+    return ret;
+  }
+
+  if (bucket_info.owner != id) {
+    ldout(s->cct, 1) << "user doesn't own bucket, not allowed to create notification" << dendl;
+    return -EPERM;
+  }
+  return 0;
+}
+
+int RGWPSDeleteNotifOp::verify_permission() {
+  int ret = get_params();
+  if (ret < 0) {
+    return ret;
+  }
+
+  ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
+                               bucket_info, nullptr, nullptr);
+  if (ret < 0) {
+    return ret;
+  }
+
+  if (bucket_info.owner != s->owner.get_id()) {
+    ldout(s->cct, 1) << "user doesn't own bucket, cannot remove notification" << dendl;
+    return -EPERM;
+  }
+  return 0;
+}
+
+int RGWPSListNotifsOp::verify_permission() {
+  int ret = get_params();
+  if (ret < 0) {
+    return ret;
+  }
+
+  ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
+                               bucket_info, nullptr, nullptr);
+  if (ret < 0) {
+    return ret;
+  }
+
+  if (bucket_info.owner != s->owner.get_id()) {
+    ldout(s->cct, 1) << "user doesn't own bucket, cannot get topic list" << dendl;
+    return -EPERM;
+  }
+
+  return 0;
+}
+
diff --git a/ceph/src/rgw/rgw_rest_pubsub_common.h b/ceph/src/rgw/rgw_rest_pubsub_common.h
new file mode 100644 (file)
index 0000000..6d78ce5
--- /dev/null
@@ -0,0 +1,281 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+#pragma once
+#include <string>
+#include <optional>
+#include "rgw_op.h"
+#include "rgw_pubsub.h"
+
+// create a topic
+class RGWPSCreateTopicOp : public RGWDefaultResponseOp {
+protected:
+  std::optional<RGWUserPubSub> ups;
+  std::string topic_name;
+  rgw_pubsub_sub_dest dest;
+  std::string topic_arn;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_topic_create"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_CREATE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+};
+
+// list all topics
+class RGWPSListTopicsOp : public RGWOp {
+protected:
+  std::optional<RGWUserPubSub> ups;
+  rgw_pubsub_user_topics result;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_topics_list"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPICS_LIST; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+// get topic information
+class RGWPSGetTopicOp : public RGWOp {
+protected:
+  std::string topic_name;
+  std::optional<RGWUserPubSub> ups;
+  rgw_pubsub_topic_subs result;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_topic_get"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_GET; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+// delete a topic
+class RGWPSDeleteTopicOp : public RGWDefaultResponseOp {
+protected:
+  string topic_name;
+  std::optional<RGWUserPubSub> ups;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_topic_delete"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_DELETE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
+};
+
+// create a subscription
+class RGWPSCreateSubOp : public RGWDefaultResponseOp {
+protected:
+  std::string sub_name;
+  std::string topic_name;
+  std::optional<RGWUserPubSub> ups;
+  rgw_pubsub_sub_dest dest;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_subscription_create"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_CREATE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+};
+
+// get subscription information (including push-endpoint if exist)
+class RGWPSGetSubOp : public RGWOp {
+protected:
+  std::string sub_name;
+  std::optional<RGWUserPubSub> ups;
+  rgw_pubsub_sub_config result;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_subscription_get"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_GET; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+// delete subscription
+class RGWPSDeleteSubOp : public RGWDefaultResponseOp {
+protected:
+  std::string sub_name;
+  std::string topic_name;
+  std::optional<RGWUserPubSub> ups;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_subscription_delete"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_DELETE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
+};
+
+// acking of an event
+class RGWPSAckSubEventOp : public RGWDefaultResponseOp {
+protected:
+  std::string sub_name;
+  std::string event_id;
+  std::optional<RGWUserPubSub> ups;
+  
+  virtual int get_params() = 0;
+
+public:
+  RGWPSAckSubEventOp() {}
+
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_subscription_ack"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_ACK; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+};
+
+// fetching events from a subscription
+// dpending on whether the subscription was created via s3 compliant API or not
+// the matching events will be returned
+class RGWPSPullSubEventsOp : public RGWOp {
+protected:
+  int max_entries{0};
+  std::string sub_name;
+  std::string marker;
+  std::optional<RGWUserPubSub> ups;
+  RGWUserPubSub::SubRef sub; 
+
+  virtual int get_params() = 0;
+
+public:
+  RGWPSPullSubEventsOp() {}
+
+  int verify_permission() override {
+    return 0;
+  }
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  void execute() override;
+
+  const char* name() const override { return "pubsub_subscription_pull"; }
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_PULL; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
+// notification creation
+class RGWPSCreateNotifOp : public RGWDefaultResponseOp {
+protected:
+  std::optional<RGWUserPubSub> ups;
+  string bucket_name;
+  RGWBucketInfo bucket_info;
+
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override;
+
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_CREATE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
+};
+
+// delete a notification
+class RGWPSDeleteNotifOp : public RGWDefaultResponseOp {
+protected:
+  std::optional<RGWUserPubSub> ups;
+  std::string bucket_name;
+  RGWBucketInfo bucket_info;
+  
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override;
+
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+  
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_DELETE; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
+};
+
+// get topics/notifications on a bucket
+class RGWPSListNotifsOp : public RGWOp {
+protected:
+  std::string bucket_name;
+  RGWBucketInfo bucket_info;
+  std::optional<RGWUserPubSub> ups;
+
+  virtual int get_params() = 0;
+
+public:
+  int verify_permission() override;
+
+  void pre_exec() override {
+    rgw_bucket_object_pre_exec(s);
+  }
+
+  RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_LIST; }
+  uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
+};
+
index 7c36a032538815377840a3261a7ade6f43897fb7..300aebbe5511952816e9df1124f2a5d9983149e4 100644 (file)
@@ -42,7 +42,7 @@ int RGWRestRole::verify_permission()
   uint64_t op = get_op();
   if (!verify_user_permission(this,
                               s,
-                              rgw::IAM::ARN(resource_name,
+                              rgw::ARN(resource_name,
                                             "role",
                                              s->user->user_id.tenant, true),
                                              op)) {
@@ -89,7 +89,7 @@ int RGWCreateRole::verify_permission()
   string resource_name = role_path + role_name;
   if (!verify_user_permission(this,
                               s,
-                              rgw::IAM::ARN(resource_name,
+                              rgw::ARN(resource_name,
                                             "role",
                                              s->user->user_id.tenant, true),
                                              get_op())) {
@@ -188,7 +188,7 @@ int RGWGetRole::_verify_permission(const RGWRole& role)
   string resource_name = role.get_path() + role.get_name();
   if (!verify_user_permission(this,
                               s,
-                              rgw::IAM::ARN(resource_name,
+                              rgw::ARN(resource_name,
                                             "role",
                                              s->user->user_id.tenant, true),
                                              get_op())) {
@@ -274,7 +274,7 @@ int RGWListRoles::verify_permission()
 
   if (!verify_user_permission(this, 
                               s,
-                              rgw::IAM::ARN(),
+                              rgw::ARN(),
                               get_op())) {
     return -EACCES;
   }
index 60e5cbd42fab08bf2a20bab53aed8175a58b3bfb..0a28abaeb455606a9df3a4e656ccaa4efa5ffdef 100644 (file)
@@ -21,6 +21,7 @@
 #include "rgw_rest.h"
 #include "rgw_rest_s3.h"
 #include "rgw_rest_s3website.h"
+#include "rgw_rest_pubsub.h"
 #include "rgw_auth_s3.h"
 #include "rgw_acl.h"
 #include "rgw_policy_s3.h"
@@ -262,6 +263,7 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
   } else {
     dump_header(s, "x-rgw-object-type", "Normal");
   }
+
   if (! op_ret) {
     if (! lo_etag.empty()) {
       /* Handle etag of Swift API's large objects (DLO/SLO). It's entirerly
@@ -327,6 +329,23 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
           ldout(s->cct,0) << "Error caught buffer::error couldn't decode TagSet " << dendl;
         }
         dump_header(s, RGW_AMZ_TAG_COUNT, obj_tags.count());
+      } else if (iter->first.compare(RGW_ATTR_OBJECT_RETENTION) == 0 && get_retention){
+        RGWObjectRetention retention;
+        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());
+        } catch (buffer::error& err) {
+          ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectRetention" << dendl;
+        }
+      } else if (iter->first.compare(RGW_ATTR_OBJECT_LEGAL_HOLD) == 0 && get_legal_hold) {
+        RGWObjectLegalHold legal_hold;
+        try {
+          decode(legal_hold, iter->second);
+          dump_header(s, "x-amz-object-lock-legal-hold",legal_hold.get_status());
+        } catch (buffer::error& err) {
+          ldpp_dout(this, 0) << "ERROR: failed to decode RGWObjectLegalHold" << dendl;
+        }
       }
     }
   }
@@ -658,33 +677,24 @@ void RGWGetUsage_ObjStore_S3::send_response()
   rgw_flush_formatter_and_reset(s, s->formatter);
 }
 
-int RGWListBucket_ObjStore_S3::get_params()
+int RGWListBucket_ObjStore_S3::get_common_params()
 {
   list_versions = s->info.args.exists("versions");
   prefix = s->info.args.get("prefix");
-  if (!list_versions) {
-    marker = s->info.args.get("marker");
-  } else {
-    marker.name = s->info.args.get("key-marker");
-    marker.instance = s->info.args.get("version-id-marker");
-  }
 
   // non-standard
   s->info.args.get_bool("allow-unordered", &allow_unordered, false);
-
   delimiter = s->info.args.get("delimiter");
-
   max_keys = s->info.args.get("max-keys");
   op_ret = parse_max_keys();
   if (op_ret < 0) {
-    return op_ret;
+   return op_ret;
   }
-
   encoding_type = s->info.args.get("encoding-type");
   if (s->system_request) {
     s->info.args.get_bool("objs-container", &objs_container, false);
     const char *shard_id_str = s->info.env->get("HTTP_RGWX_SHARD_ID");
-    if (shard_id_str) {
+    if (shard_id_str) {  
       string err;
       shard_id = strict_strtol(shard_id_str, 10, &err);
       if (!err.empty()) {
@@ -692,18 +702,50 @@ int RGWListBucket_ObjStore_S3::get_params()
         return -EINVAL;
       }
     } else {
-      shard_id = s->bucket_instance_shard_id;
+     shard_id = s->bucket_instance_shard_id;
     }
   }
+  return 0;
+}
 
+int RGWListBucket_ObjStore_S3::get_params()
+{
+  int ret = get_common_params();
+  if (ret < 0) {
+    return ret;
+  }
+  if (!list_versions) {
+    marker = s->info.args.get("marker");
+  } else {
+    marker.name = s->info.args.get("key-marker");
+    marker.instance = s->info.args.get("version-id-marker");
+  }
   return 0;
 }
 
-void RGWListBucket_ObjStore_S3::send_versioned_response()
+int RGWListBucket_ObjStore_S3v2::get_params()
 {
-  s->formatter->open_object_section_in_ns("ListVersionsResult", XMLNS_AWS_S3);
-  if (!s->bucket_tenant.empty())
+int ret = get_common_params();
+if (ret < 0) {
+  return ret;
+}
+s->info.args.get_bool("fetch-owner", &fetchOwner, false);
+startAfter = s->info.args.get("start-after", &start_after_exist);
+continuation_token = s->info.args.get("continuation-token", &continuation_token_exist);
+if(!continuation_token_exist) {
+  marker = startAfter;
+} else {
+  marker = continuation_token;
+}
+return 0;
+}
+
+void RGWListBucket_ObjStore_S3::send_common_versioned_response()
+{
+  
+  if (!s->bucket_tenant.empty()) {
     s->formatter->dump_string("Tenant", s->bucket_tenant);
+  }
   s->formatter->dump_string("Name", s->bucket_name);
   s->formatter->dump_string("Prefix", prefix);
   s->formatter->dump_string("KeyMarker", marker.name);
@@ -713,11 +755,38 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
     s->formatter->dump_string("NextVersionIdMarker", next_marker.instance);
   }
   s->formatter->dump_int("MaxKeys", max);
-  if (!delimiter.empty())
+  if (!delimiter.empty()) {
     s->formatter->dump_string("Delimiter", delimiter);
-
+  }
   s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true"
-                                           : "false"));
+              : "false"));
+
+  if (!common_prefixes.empty()) {
+      map<string, bool>::iterator pref_iter;
+      for (pref_iter = common_prefixes.begin();
+      pref_iter != common_prefixes.end(); ++pref_iter) {
+      s->formatter->open_array_section("CommonPrefixes");
+      s->formatter->dump_string("Prefix", pref_iter->first);
+      s->formatter->close_section();
+      }
+    }
+  }
+  
+void RGWListBucket_ObjStore_S3::send_versioned_response()
+{
+  s->formatter->open_object_section_in_ns("ListVersionsResult", XMLNS_AWS_S3);
+  RGWListBucket_ObjStore_S3::send_common_versioned_response();
+  s->formatter->dump_string("KeyMarker", marker.name);
+  s->formatter->dump_string("VersionIdMarker", marker.instance);
+  if (is_truncated && !next_marker.empty()) {
+    s->formatter->dump_string("NextKeyMarker", next_marker.name);
+    if (next_marker.instance.empty()) {
+      s->formatter->dump_string("NextVersionIdMarker", "null");  
+    }
+    else {
+      s->formatter->dump_string("NextVersionIdMarker", next_marker.instance);
+    }
+  }
 
   bool encode_key = false;
   if (strcasecmp(encoding_type.c_str(), "url") == 0) {
@@ -729,26 +798,27 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
     if (objs_container) {
       s->formatter->open_array_section("Entries");
     }
-
     vector<rgw_bucket_dir_entry>::iterator iter;
     for (iter = objs.begin(); iter != objs.end(); ++iter) {
       const char *section_name = (iter->is_delete_marker() ? "DeleteMarker"
-                                 : "Version");
+          : "Version");
       s->formatter->open_object_section(section_name);
       if (objs_container) {
         s->formatter->dump_bool("IsDeleteMarker", iter->is_delete_marker());
       }
       rgw_obj_key key(iter->key);
       if (encode_key) {
-       string key_name;
-       url_encode(key.name, key_name);
-       s->formatter->dump_string("Key", key_name);
-      } else {
-       s->formatter->dump_string("Key", key.name);
+        string key_name;
+        url_encode(key.name, key_name);
+        s->formatter->dump_string("Key", key_name);
+      } 
+      else {
+        s->formatter->dump_string("Key", key.name);
       }
       string version_id = key.instance;
       if (version_id.empty()) {
-       version_id = "null";
+        version_id = "null";
       }
       if (s->system_request) {
         if (iter->versioned_epoch > 0) {
@@ -762,10 +832,10 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
       s->formatter->dump_bool("IsLatest", iter->is_current());
       dump_time(s, "LastModified", &iter->meta.mtime);
       if (!iter->is_delete_marker()) {
-       s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str());
-       s->formatter->dump_int("Size", iter->meta.accounted_size);
-       auto& storage_class = rgw_placement_rule::get_canonical_storage_class(iter->meta.storage_class);
-       s->formatter->dump_string("StorageClass", storage_class.c_str());
+        s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str());
+        s->formatter->dump_int("Size", iter->meta.accounted_size);
+        auto& storage_class = rgw_placement_rule::get_canonical_storage_class(iter->meta.storage_class);
+        s->formatter->dump_string("StorageClass", storage_class.c_str());
       }
       dump_owner(s, iter->meta.owner, iter->meta.owner_display_name);
       if (iter->meta.appendable) {
@@ -773,83 +843,243 @@ void RGWListBucket_ObjStore_S3::send_versioned_response()
       } else {
         s->formatter->dump_string("Type", "Normal");
       }
+      s->formatter->close_section(); // Version/DeleteMarker
+    }
+    if (objs_container) {
+      s->formatter->close_section(); // Entries
+    }
+    s->formatter->close_section(); // ListVersionsResult
+  }
+  rgw_flush_formatter_and_reset(s, s->formatter);
+}
+
+
+void RGWListBucket_ObjStore_S3::send_common_response()
+{
+  if (!s->bucket_tenant.empty()) {
+    s->formatter->dump_string("Tenant", s->bucket_tenant);
+  }
+  s->formatter->dump_string("Name", s->bucket_name);
+  s->formatter->dump_string("Prefix", prefix);
+  s->formatter->dump_int("MaxKeys", max);
+  if (!delimiter.empty()) {
+    s->formatter->dump_string("Delimiter", delimiter);
+  }
+  s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true"
+              : "false"));
+
+    if (!common_prefixes.empty()) {
+      map<string, bool>::iterator pref_iter;
+      for (pref_iter = common_prefixes.begin();
+      pref_iter != common_prefixes.end(); ++pref_iter) {
+      s->formatter->open_array_section("CommonPrefixes");
+      s->formatter->dump_string("Prefix", pref_iter->first);
       s->formatter->close_section();
+      }
+    }
+  }
+  
+void RGWListBucket_ObjStore_S3::send_response()
+{
+  if (op_ret < 0) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+
+  // Explicitly use chunked transfer encoding so that we can stream the result
+  // to the user without having to wait for the full length of it.
+  end_header(s, this, "application/xml", CHUNKED_TRANSFER_ENCODING);
+  dump_start(s);
+  if (op_ret < 0) {
+    return;
+  }
+  if (list_versions) {
+    send_versioned_response();
+    return;
+  }
+
+  s->formatter->open_object_section_in_ns("ListBucketResult", XMLNS_AWS_S3);
+  RGWListBucket_ObjStore_S3::send_common_response();
+  bool encode_key = false;
+  if (strcasecmp(encoding_type.c_str(), "url") == 0) {
+    s->formatter->dump_string("EncodingType", "url");
+    encode_key = true;
+  }
+    if (op_ret >= 0) {
+      vector<rgw_bucket_dir_entry>::iterator iter;
+      for (iter = objs.begin(); iter != objs.end(); ++iter) {
+        rgw_obj_key key(iter->key);
+        s->formatter->open_array_section("Contents");
+        if (encode_key) {
+          string key_name;
+          url_encode(key.name, key_name);
+          s->formatter->dump_string("Key", key_name);
+      } else {
+          s->formatter->dump_string("Key", key.name);
+      }
+        dump_time(s, "LastModified", &iter->meta.mtime);
+        s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str());
+        s->formatter->dump_int("Size", iter->meta.accounted_size);
+        auto& storage_class = rgw_placement_rule::get_canonical_storage_class(iter->meta.storage_class);
+        s->formatter->dump_string("StorageClass", storage_class.c_str());
+        dump_owner(s, iter->meta.owner, iter->meta.owner_display_name);
+        if (s->system_request) {
+          s->formatter->dump_string("RgwxTag", iter->tag);
+      }
+        if (iter->meta.appendable) {
+          s->formatter->dump_string("Type", "Appendable");
+      } else {
+          s->formatter->dump_string("Type", "Normal");
+      }
+        s->formatter->close_section();
     }
+  }
+    s->formatter->dump_string("Marker", marker.name);
+    if (is_truncated && !next_marker.empty()) {
+      s->formatter->dump_string("NextMarker", next_marker.name);
+    }
+    s->formatter->close_section();
+    rgw_flush_formatter_and_reset(s, s->formatter);
+}
+  
+void RGWListBucket_ObjStore_S3v2::send_versioned_response()
+{
+  s->formatter->open_object_section_in_ns("ListVersionsResult", XMLNS_AWS_S3);
+  RGWListBucket_ObjStore_S3v2::send_common_versioned_response();
+  s->formatter->dump_string("KeyContinuationToken", marker.name);
+  s->formatter->dump_string("VersionIdContinuationToken", marker.instance);
+  if (is_truncated && !next_marker.empty()) {
+    s->formatter->dump_string("NextKeyContinuationToken", next_marker.name);
+    s->formatter->dump_string("NextVersionIdContinuationToken", next_marker.instance);
+  }
+
+  bool encode_key = false;
+  if (strcasecmp(encoding_type.c_str(), "url") == 0) {
+    s->formatter->dump_string("EncodingType", "url");
+    encode_key = true;
+  }
+
+  if (op_ret >= 0) {
     if (objs_container) {
+      s->formatter->open_array_section("Entries");
+    }
+    vector<rgw_bucket_dir_entry>::iterator iter;
+    for (iter = objs.begin(); iter != objs.end(); ++iter) {
+      const char *section_name = (iter->is_delete_marker() ? "DeleteContinuationToken"
+          : "Version");
+      s->formatter->open_object_section(section_name);
+      if (objs_container) {
+        s->formatter->dump_bool("IsDeleteContinuationToken", iter->is_delete_marker());
+      }
+      rgw_obj_key key(iter->key);
+      if (encode_key) {
+        string key_name;
+        url_encode(key.name, key_name);
+        s->formatter->dump_string("Key", key_name);
+      } 
+      else {
+        s->formatter->dump_string("Key", key.name);
+      }
+      string version_id = key.instance;
+      if (version_id.empty()) {
+        version_id = "null";
+      }
+      if (s->system_request) {
+        if (iter->versioned_epoch > 0) {
+          s->formatter->dump_int("VersionedEpoch", iter->versioned_epoch);
+        }
+        s->formatter->dump_string("RgwxTag", iter->tag);
+        utime_t ut(iter->meta.mtime);
+        ut.gmtime_nsec(s->formatter->dump_stream("RgwxMtime"));
+      }
+      s->formatter->dump_string("VersionId", version_id);
+      s->formatter->dump_bool("IsLatest", iter->is_current());
+      dump_time(s, "LastModified", &iter->meta.mtime);
+      if (!iter->is_delete_marker()) {
+        s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str());
+        s->formatter->dump_int("Size", iter->meta.accounted_size);
+        auto& storage_class = rgw_placement_rule::get_canonical_storage_class(iter->meta.storage_class);
+        s->formatter->dump_string("StorageClass", storage_class.c_str());
+      }
+      if (fetchOwner == true) {
+        dump_owner(s, s->user->user_id, s->user->display_name);
+      }
       s->formatter->close_section();
     }
 
-    if (!common_prefixes.empty()) {
+
+    if (objs_container) {
+      s->formatter->close_section();
+    }
+
+     if (!common_prefixes.empty()) {
       map<string, bool>::iterator pref_iter;
       for (pref_iter = common_prefixes.begin();
-          pref_iter != common_prefixes.end(); ++pref_iter) {
-       s->formatter->open_array_section("CommonPrefixes");
-       s->formatter->dump_string("Prefix", pref_iter->first);
-       s->formatter->close_section();
+      pref_iter != common_prefixes.end(); ++pref_iter) {
+      s->formatter->open_array_section("CommonPrefixes");
+      s->formatter->dump_string("Prefix", pref_iter->first);
+      s->formatter->dump_int("KeyCount",objs.size());
+      if (start_after_exist) {
+        s->formatter->dump_string("StartAfter", startAfter);
+      }
+      s->formatter->close_section();
       }
     }
+  
+    s->formatter->close_section();
+    rgw_flush_formatter_and_reset(s, s->formatter);
   }
-  s->formatter->close_section();
-  rgw_flush_formatter_and_reset(s, s->formatter);
 }
 
-void RGWListBucket_ObjStore_S3::send_response()
+void RGWListBucket_ObjStore_S3v2::send_response()
 {
-  if (op_ret < 0)
+  if (op_ret < 0) {
     set_req_state_err(s, op_ret);
+  }
   dump_errno(s);
 
   // Explicitly use chunked transfer encoding so that we can stream the result
   // to the user without having to wait for the full length of it.
   end_header(s, this, "application/xml", CHUNKED_TRANSFER_ENCODING);
   dump_start(s);
-  if (op_ret < 0)
+  if (op_ret < 0) {
     return;
-
+  }
   if (list_versions) {
     send_versioned_response();
     return;
   }
 
   s->formatter->open_object_section_in_ns("ListBucketResult", XMLNS_AWS_S3);
-  if (!s->bucket_tenant.empty())
-    s->formatter->dump_string("Tenant", s->bucket_tenant);
-  s->formatter->dump_string("Name", s->bucket_name);
-  s->formatter->dump_string("Prefix", prefix);
-  s->formatter->dump_string("Marker", marker.name);
-  if (is_truncated && !next_marker.empty())
-    s->formatter->dump_string("NextMarker", next_marker.name);
-  s->formatter->dump_int("MaxKeys", max);
-  if (!delimiter.empty())
-    s->formatter->dump_string("Delimiter", delimiter);
-
-  s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true"
-                                           : "false"));
 
+  RGWListBucket_ObjStore_S3::send_common_response();
   bool encode_key = false;
   if (strcasecmp(encoding_type.c_str(), "url") == 0) {
     s->formatter->dump_string("EncodingType", "url");
     encode_key = true;
   }
-
   if (op_ret >= 0) {
     vector<rgw_bucket_dir_entry>::iterator iter;
     for (iter = objs.begin(); iter != objs.end(); ++iter) {
       rgw_obj_key key(iter->key);
       s->formatter->open_array_section("Contents");
       if (encode_key) {
-       string key_name;
-       url_encode(key.name, key_name);
-       s->formatter->dump_string("Key", key_name);
-      } else {
-       s->formatter->dump_string("Key", key.name);
+        string key_name;
+        url_encode(key.name, key_name);
+        s->formatter->dump_string("Key", key_name);
+      }
+      else {
+        s->formatter->dump_string("Key", key.name);
       }
       dump_time(s, "LastModified", &iter->meta.mtime);
       s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str());
       s->formatter->dump_int("Size", iter->meta.accounted_size);
       auto& storage_class = rgw_placement_rule::get_canonical_storage_class(iter->meta.storage_class);
       s->formatter->dump_string("StorageClass", storage_class.c_str());
-      dump_owner(s, iter->meta.owner, iter->meta.owner_display_name);
+      if (fetchOwner == true) {
+        dump_owner(s, s->user->user_id, s->user->display_name);
+      }
       if (s->system_request) {
         s->formatter->dump_string("RgwxTag", iter->tag);
       }
@@ -860,15 +1090,16 @@ void RGWListBucket_ObjStore_S3::send_response()
       }
       s->formatter->close_section();
     }
-    if (!common_prefixes.empty()) {
-      map<string, bool>::iterator pref_iter;
-      for (pref_iter = common_prefixes.begin();
-          pref_iter != common_prefixes.end(); ++pref_iter) {
-       s->formatter->open_array_section("CommonPrefixes");
-       s->formatter->dump_string("Prefix", pref_iter->first);
-       s->formatter->close_section();
-      }
-    }
+  }
+  if (continuation_token_exist) {
+    s->formatter->dump_string("ContinuationToken", continuation_token);
+  }
+  if (is_truncated && !next_marker.empty()) {
+    s->formatter->dump_string("NextContinuationToken", next_marker.name);
+  }
+  s->formatter->dump_int("KeyCount",objs.size());
+  if (start_after_exist) {
+    s->formatter->dump_string("StartAfter", startAfter);
   }
   s->formatter->close_section();
   rgw_flush_formatter_and_reset(s, s->formatter);
@@ -1068,6 +1299,21 @@ int RGWSetBucketWebsite_ObjStore_S3::get_params()
     return -EINVAL;
   }
 
+  if (website_conf.is_redirect_all && website_conf.redirect_all.hostname.empty()) {
+    s->err.message = "A host name must be provided to redirect all requests (e.g. \"example.com\").";
+    ldout(s->cct, 5) << s->err.message << dendl;
+    return -EINVAL;
+  } else if (!website_conf.is_redirect_all && !website_conf.is_set_index_doc) {
+    s->err.message = "A value for IndexDocument Suffix must be provided if RedirectAllRequestsTo is empty";
+    ldout(s->cct, 5) << s->err.message << dendl;
+    return -EINVAL;
+  } else if (!website_conf.is_redirect_all && website_conf.is_set_index_doc &&
+             website_conf.index_doc_suffix.empty()) {
+    s->err.message = "The IndexDocument Suffix is not well formed";
+    ldout(s->cct, 5) << s->err.message << dendl;
+    return -EINVAL;
+  }
+
 #define WEBSITE_ROUTING_RULES_MAX_NUM      50
   int max_num = s->cct->_conf->rgw_website_routing_rules_max_num;
   if (max_num < 0) {
@@ -1268,7 +1514,13 @@ int RGWCreateBucket_ObjStore_S3::get_params()
   } else {
     placement_rule.storage_class = s->info.storage_class;
   }
-
+  auto iter = s->info.x_meta_map.find("x-amz-bucket-object-lock-enabled");
+  if (iter != s->info.x_meta_map.end()) {
+    if (!boost::algorithm::iequals(iter->second, "true") && !boost::algorithm::iequals(iter->second, "false")) {
+      return -EINVAL;
+    }
+    obj_lock_enabled = boost::algorithm::iequals(iter->second, "true");
+  }
   return 0;
 }
 
@@ -1439,6 +1691,41 @@ int RGWPutObj_ObjStore_S3::get_params()
     }
   }
 
+  //handle object lock
+  auto obj_lock_mode_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_MODE");
+  auto obj_lock_date_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE");
+  auto obj_legal_hold_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_LEGAL_HOLD");
+  if (obj_lock_mode_str && obj_lock_date_str) {
+    boost::optional<ceph::real_time> date = ceph::from_iso_8601(obj_lock_date_str);
+    if (boost::none == date || ceph::real_clock::to_time_t(*date) <= ceph_clock_now()) {
+        ret = -EINVAL;
+        ldpp_dout(this,0) << "invalid x-amz-object-lock-retain-until-date value" << dendl;
+        return ret;
+    }
+    if (strcmp(obj_lock_mode_str, "GOVERNANCE") != 0 && strcmp(obj_lock_mode_str, "COMPLIANCE") != 0) {
+        ret = -EINVAL;
+        ldpp_dout(this,0) << "invalid x-amz-object-lock-mode value" << dendl;
+        return ret;
+    }
+    obj_retention = new RGWObjectRetention(obj_lock_mode_str, *date);
+  } else if ((obj_lock_mode_str && !obj_lock_date_str) || (!obj_lock_mode_str && obj_lock_date_str)) {
+    ret = -EINVAL;
+    ldpp_dout(this,0) << "need both x-amz-object-lock-mode and x-amz-object-lock-retain-until-date " << dendl;
+    return ret;
+  }
+  if (obj_legal_hold_str) {
+    if (strcmp(obj_legal_hold_str, "ON") != 0 && strcmp(obj_legal_hold_str, "OFF") != 0) {
+        ret = -EINVAL;
+        ldpp_dout(this,0) << "invalid x-amz-object-lock-legal-hold value" << dendl;
+        return ret;
+    }
+    obj_legal_hold = new RGWObjectLegalHold(obj_legal_hold_str);
+  }
+  if (!s->bucket_info.obj_lock_enabled() && (obj_retention || obj_legal_hold)) {
+    ldpp_dout(this, 0) << "ERROR: object retention or legal hold can't be set if bucket object lock not configured" << dendl;
+    ret = -ERR_INVALID_REQUEST;
+    return ret;
+  }
   multipart_upload_id = s->info.args.get("uploadId");
   multipart_part_str = s->info.args.get("partNumber");
   if (!multipart_part_str.empty()) {
@@ -2159,6 +2446,12 @@ int RGWDeleteObj_ObjStore_S3::get_params()
     unmod_since = utime_t(epoch, nsec).to_real_time();
   }
 
+  const char *bypass_gov_header = s->info.env->get("HTTP_X_AMZ_BYPASS_GOVERNANCE_RETENTION");
+  if (bypass_gov_header) {
+    std::string bypass_gov_decoded = url_decode(bypass_gov_header);
+    bypass_governance_mode = boost::algorithm::iequals(bypass_gov_decoded, "true");
+  }
+
   return 0;
 }
 
@@ -3060,6 +3353,95 @@ void RGWDelBucketMetaSearch_ObjStore_S3::send_response()
   end_header(s, this);
 }
 
+void RGWPutBucketObjectLock_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s);
+}
+
+void RGWGetBucketObjectLock_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s, this, "application/xml");
+  dump_start(s);
+
+  if (op_ret) {
+    return;
+  }
+  encode_xml("ObjectLockConfiguration", s->bucket_info.obj_lock, s->formatter);
+  rgw_flush_formatter_and_reset(s, s->formatter);
+}
+
+
+int RGWPutObjRetention_ObjStore_S3::get_params()
+{
+  const char *bypass_gov_header = s->info.env->get("HTTP_X_AMZ_BYPASS_GOVERNANCE_RETENTION");
+  if (bypass_gov_header) {
+    std::string bypass_gov_decoded = url_decode(bypass_gov_header);
+    bypass_governance_mode = boost::algorithm::iequals(bypass_gov_decoded, "true");
+  }
+
+  const auto max_size = s->cct->_conf->rgw_max_put_param_size;
+  std::tie(op_ret, data) = rgw_rest_read_all_input(s, max_size, false);
+  return op_ret;
+}
+
+void RGWPutObjRetention_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s);
+}
+
+void RGWGetObjRetention_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s, this, "application/xml");
+  dump_start(s);
+
+  if (op_ret) {
+    return;
+  }
+  encode_xml("Retention", obj_retention, s->formatter);
+  rgw_flush_formatter_and_reset(s, s->formatter);
+}
+
+void RGWPutObjLegalHold_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s);
+}
+
+void RGWGetObjLegalHold_ObjStore_S3::send_response()
+{
+  if (op_ret) {
+    set_req_state_err(s, op_ret);
+  }
+  dump_errno(s);
+  end_header(s, this, "application/xml");
+  dump_start(s);
+
+  if (op_ret) {
+    return;
+  }
+  encode_xml("LegalHold", obj_legal_hold, s->formatter);
+  rgw_flush_formatter_and_reset(s, s->formatter);
+}
+
 
 RGWOp *RGWHandler_REST_Service_S3::op_get()
 {
@@ -3077,6 +3459,17 @@ RGWOp *RGWHandler_REST_Service_S3::op_head()
 
 RGWOp *RGWHandler_REST_Service_S3::op_post()
 {
+  const auto max_size = s->cct->_conf->rgw_max_put_param_size;
+
+  int ret;
+  bufferlist data;
+  std::tie(ret, data) = rgw_rest_read_all_input(s, max_size, false);
+  if (ret < 0) {
+      return nullptr;
+  }
+
+  const auto post_body = data.to_str();
+
   if (s->info.args.exists("Action")) {
     string action = s->info.args.get("Action");
     if (action.compare("CreateRole") == 0)
@@ -3106,19 +3499,42 @@ RGWOp *RGWHandler_REST_Service_S3::op_post()
     if (action.compare("DeleteUserPolicy") == 0)
       return new RGWDeleteUserPolicy;
   }
-  if (this->isSTSenabled) {
-    RGWHandler_REST_STS sts_handler(auth_registry);
+
+  if (isSTSenabled) {
+    RGWHandler_REST_STS sts_handler(auth_registry, post_body);
     sts_handler.init(store, s, s->cio);
-    return sts_handler.get_op(store);
+    auto op = sts_handler.get_op(store);
+    if (op) {
+      return op;
+    }
   }
+  if (isPSenabled) {
+    RGWHandler_REST_PSTopic_AWS topic_handler(auth_registry, post_body);
+    topic_handler.init(store, s, s->cio);
+    auto op = topic_handler.get_op(store);
+    if (op) {
+      return op;
+    }
+  }
+
   return NULL;
 }
 
 RGWOp *RGWHandler_REST_Bucket_S3::get_obj_op(bool get_data)
 {
   // Non-website mode
-  if (get_data) {
-    return new RGWListBucket_ObjStore_S3;
+  if (get_data) {   
+    int list_type = 1;
+    s->info.args.get_int("list-type", &list_type, 1);
+    switch (list_type) {
+      case 1:
+        return new RGWListBucket_ObjStore_S3;
+      case 2:
+        return new RGWListBucket_ObjStore_S3v2;
+      default:
+        ldpp_dout(s, 5) << __func__ << ": unsupported list-type " << list_type << dendl;
+        return new RGWListBucket_ObjStore_S3;
+    }
   } else {
     return new RGWStatBucket_ObjStore_S3;
   }
@@ -3158,6 +3574,10 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_get()
     return new RGWGetLC_ObjStore_S3;
   } else if(is_policy_op()) {
     return new RGWGetBucketPolicy;
+  } else if (is_object_lock_op()) {
+    return new RGWGetBucketObjectLock_ObjStore_S3;
+  } else if (is_notification_op()) {
+    return RGWHandler_REST_PSNotifs_S3::create_get_op();
   }
   return get_obj_op(true);
 }
@@ -3194,6 +3614,10 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_put()
     return new RGWPutLC_ObjStore_S3;
   } else if(is_policy_op()) {
     return new RGWPutBucketPolicy;
+  } else if (is_object_lock_op()) {
+    return new RGWPutBucketObjectLock_ObjStore_S3;
+  } else if (is_notification_op()) {
+    return RGWHandler_REST_PSNotifs_S3::create_put_op();
   }
   return new RGWCreateBucket_ObjStore_S3;
 }
@@ -3206,6 +3630,8 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_delete()
     return new RGWDeleteLC_ObjStore_S3;
   } else if(is_policy_op()) {
     return new RGWDeleteBucketPolicy;
+  } else if (is_notification_op()) {
+    return RGWHandler_REST_PSNotifs_S3::create_delete_op();
   }
 
   if (s->info.args.sub_resource_exists("website")) {
@@ -3257,6 +3683,10 @@ RGWOp *RGWHandler_REST_Obj_S3::op_get()
     return new RGWGetObjLayout_ObjStore_S3;
   } else if (is_tagging_op()) {
     return new RGWGetObjTags_ObjStore_S3;
+  } else if (is_obj_retention_op()) {
+    return new RGWGetObjRetention_ObjStore_S3;
+  } else if (is_obj_legal_hold_op()) {
+    return new RGWGetObjLegalHold_ObjStore_S3;
   }
   return get_obj_op(true);
 }
@@ -3277,6 +3707,10 @@ RGWOp *RGWHandler_REST_Obj_S3::op_put()
     return new RGWPutACLs_ObjStore_S3;
   } else if (is_tagging_op()) {
     return new RGWPutObjTags_ObjStore_S3;
+  } else if (is_obj_retention_op()) {
+    return new RGWPutObjRetention_ObjStore_S3;
+  } else if (is_obj_legal_hold_op()) {
+    return new RGWPutObjLegalHold_ObjStore_S3;
   }
 
   if (s->init_state.src_bucket.empty())
@@ -3618,9 +4052,9 @@ RGWHandler_REST* RGWRESTMgr_S3::get_handler(struct req_state* const s,
     }
   } else {
     if (s->init_state.url_bucket.empty()) {
-      handler = new RGWHandler_REST_Service_S3(auth_registry, enable_sts);
+      handler = new RGWHandler_REST_Service_S3(auth_registry, enable_sts, enable_pubsub);
     } else if (s->object.empty()) {
-      handler = new RGWHandler_REST_Bucket_S3(auth_registry);
+      handler = new RGWHandler_REST_Bucket_S3(auth_registry, enable_pubsub);
     } else {
       handler = new RGWHandler_REST_Obj_S3(auth_registry);
     }
@@ -3687,7 +4121,13 @@ int RGWHandler_REST_S3Website::retarget(RGWOp* op, RGWOp** new_op) {
   }
 
   rgw_obj_key new_obj;
-  s->bucket_info.website_conf.get_effective_key(s->object.name, &new_obj.name, web_dir());
+  bool get_res = s->bucket_info.website_conf.get_effective_key(s->object.name, &new_obj.name, web_dir());
+  if (!get_res) {
+    s->err.message = "The IndexDocument Suffix is not configurated or not well formed!";
+    ldout(s->cct, 5) << s->err.message << dendl;
+    return -EINVAL;
+  }
+
   ldout(s->cct, 10) << "retarget get_effective_key " << s->object << " -> "
                    << new_obj << dendl;
 
@@ -4053,6 +4493,12 @@ AWSGeneralAbstractor::get_auth_data_v4(const req_state* const s,
         case RGW_OP_PUT_OBJ_TAGGING:
         case RGW_OP_PUT_LC:
         case RGW_OP_SET_REQUEST_PAYMENT:
+        case RGW_OP_PUBSUB_NOTIF_CREATE:
+        case RGW_OP_PUT_BUCKET_OBJ_LOCK:
+        case RGW_OP_PUT_OBJ_RETENTION:
+        case RGW_OP_PUT_OBJ_LEGAL_HOLD:
+        case RGW_STS_GET_SESSION_TOKEN:
+        case RGW_STS_ASSUME_ROLE:
           break;
         default:
           dout(10) << "ERROR: AWS4 completion for this operation NOT IMPLEMENTED" << dendl;
@@ -4386,7 +4832,7 @@ rgw::auth::s3::LDAPEngine::authenticate(
   }*/
 
   if (ldh->auth(base64_token.id, base64_token.key) != 0) {
-    return result_t::deny();
+    return result_t::deny(-ERR_INVALID_ACCESS_KEY);
   }
 
   auto apl = apl_factory->create_apl_remote(cct, s, get_acl_strategy(),
index 0c5ab184ddddcf36c43f18f6a8300ef5f5a31b95..1be767dd978339bcdd91ee970cb6c005ad86b870 100644 (file)
@@ -107,8 +107,11 @@ public:
 };
 
 class RGWListBucket_ObjStore_S3 : public RGWListBucket_ObjStore {
-  bool objs_container;
-public:
+  protected:  bool objs_container;
+  int get_common_params();
+  void send_common_response();
+  void send_common_versioned_response();
+  public:
   RGWListBucket_ObjStore_S3() : objs_container(false) {
     default_max = 1000;
   }
@@ -119,6 +122,22 @@ public:
   void send_versioned_response();
 };
 
+class RGWListBucket_ObjStore_S3v2 : public RGWListBucket_ObjStore_S3 {
+  bool fetchOwner;
+  bool start_after_exist;
+  bool continuation_token_exist;
+  string startAfter;
+  string continuation_token;
+public:
+  RGWListBucket_ObjStore_S3v2() :  fetchOwner(false) {
+  }
+  ~RGWListBucket_ObjStore_S3v2() override {}
+
+  int get_params() override;
+  void send_response() override;
+  void send_versioned_response();
+};
+
 class RGWGetBucketLogging_ObjStore_S3 : public RGWGetBucketLogging {
 public:
   RGWGetBucketLogging_ObjStore_S3() {}
@@ -434,6 +453,49 @@ public:
   void end_response() override;
 };
 
+class RGWPutBucketObjectLock_ObjStore_S3 : public RGWPutBucketObjectLock_ObjStore {
+public:
+  RGWPutBucketObjectLock_ObjStore_S3() {}
+  ~RGWPutBucketObjectLock_ObjStore_S3() override {}
+  void send_response() override;
+};
+
+class RGWGetBucketObjectLock_ObjStore_S3 : public RGWGetBucketObjectLock_ObjStore {
+public:
+  RGWGetBucketObjectLock_ObjStore_S3() {}
+  ~RGWGetBucketObjectLock_ObjStore_S3() {}
+  void send_response() override;
+};
+
+class RGWPutObjRetention_ObjStore_S3 : public RGWPutObjRetention_ObjStore {
+public:
+  RGWPutObjRetention_ObjStore_S3() {}
+  ~RGWPutObjRetention_ObjStore_S3() {}
+  int get_params() override;
+  void send_response() override;
+};
+
+class RGWGetObjRetention_ObjStore_S3 : public RGWGetObjRetention_ObjStore {
+public:
+  RGWGetObjRetention_ObjStore_S3() {}
+  ~RGWGetObjRetention_ObjStore_S3() {}
+  void send_response() override;
+};
+
+class RGWPutObjLegalHold_ObjStore_S3 : public RGWPutObjLegalHold_ObjStore {
+public:
+  RGWPutObjLegalHold_ObjStore_S3() {}
+  ~RGWPutObjLegalHold_ObjStore_S3() {}
+  void send_response() override;
+};
+
+class RGWGetObjLegalHold_ObjStore_S3 : public RGWGetObjLegalHold_ObjStore {
+public:
+  RGWGetObjLegalHold_ObjStore_S3() {}
+  ~RGWGetObjLegalHold_ObjStore_S3() {}
+  void send_response() override;
+};
+
 class RGWGetObjLayout_ObjStore_S3 : public RGWGetObjLayout {
 public:
   RGWGetObjLayout_ObjStore_S3() {}
@@ -521,7 +583,8 @@ public:
 
 class RGWHandler_REST_Service_S3 : public RGWHandler_REST_S3 {
 protected:
-    bool isSTSenabled;
+    const bool isSTSenabled;
+    const bool isPSenabled;
     bool is_usage_op() {
     return s->info.args.exists("usage");
   }
@@ -530,12 +593,13 @@ protected:
   RGWOp *op_post() override;
 public:
    RGWHandler_REST_Service_S3(const rgw::auth::StrategyRegistry& auth_registry,
-                              bool isSTSenabled) :
-      RGWHandler_REST_S3(auth_registry), isSTSenabled(isSTSenabled) {}
+                              bool _isSTSenabled, bool _isPSenabled) :
+      RGWHandler_REST_S3(auth_registry), isSTSenabled(_isSTSenabled), isPSenabled(_isPSenabled) {}
   ~RGWHandler_REST_Service_S3() override = default;
 };
 
 class RGWHandler_REST_Bucket_S3 : public RGWHandler_REST_S3 {
+  const bool enable_pubsub;
 protected:
   bool is_acl_op() {
     return s->info.args.exists("acl");
@@ -555,6 +619,15 @@ protected:
   bool is_policy_op() {
     return s->info.args.exists("policy");
   }
+  bool is_object_lock_op() {
+    return s->info.args.exists("object-lock");
+  }
+  bool is_notification_op() const {
+    if (enable_pubsub) {
+        return s->info.args.exists("notification");
+    }
+    return false;
+  }
   RGWOp *get_obj_op(bool get_data);
 
   RGWOp *op_get() override;
@@ -564,7 +637,8 @@ protected:
   RGWOp *op_post() override;
   RGWOp *op_options() override;
 public:
-  using RGWHandler_REST_S3::RGWHandler_REST_S3;
+  RGWHandler_REST_Bucket_S3(const rgw::auth::StrategyRegistry& auth_registry, bool _enable_pubsub) :
+      RGWHandler_REST_S3(auth_registry), enable_pubsub(_enable_pubsub) {}
   ~RGWHandler_REST_Bucket_S3() override = default;
 };
 
@@ -576,8 +650,15 @@ protected:
   bool is_tagging_op() {
     return s->info.args.exists("tagging");
   }
+  bool is_obj_retention_op() {
+    return s->info.args.exists("retention");
+  }
+  bool is_obj_legal_hold_op() {
+    return s->info.args.exists("legal-hold");
+  }
+
   bool is_obj_update_op() override {
-    return is_acl_op() || is_tagging_op() ;
+    return is_acl_op() || is_tagging_op() || is_obj_retention_op() || is_obj_legal_hold_op();
   }
   RGWOp *get_obj_op(bool get_data);
 
@@ -596,10 +677,12 @@ class RGWRESTMgr_S3 : public RGWRESTMgr {
 private:
   bool enable_s3website;
   bool enable_sts;
+  const bool enable_pubsub;
 public:
-  explicit RGWRESTMgr_S3(bool enable_s3website = false, bool enable_sts = false)
+  explicit RGWRESTMgr_S3(bool enable_s3website = false, bool enable_sts = false, bool _enable_pubsub = false)
     : enable_s3website(enable_s3website),
-      enable_sts(enable_sts) {
+      enable_sts(enable_sts),
+      enable_pubsub(_enable_pubsub) {
   }
 
   ~RGWRESTMgr_S3() override = default;
index 3791ef0f1adebe20ac5504ec609865564ef7894e..a988b5d903743ebe54fb8a8730cc85bf3fc8d74d 100644 (file)
@@ -169,11 +169,11 @@ void RGWREST_STS::send_response()
 
 int RGWSTSGetSessionToken::verify_permission()
 {
-  rgw::IAM::Partition partition = rgw::IAM::Partition::aws;
-  rgw::IAM::Service service = rgw::IAM::Service::s3;
+  rgw::Partition partition = rgw::Partition::aws;
+  rgw::Service service = rgw::Service::s3;
   if (!verify_user_permission(this,
                               s,
-                              rgw::IAM::ARN(partition, service, "", s->user->user_id.tenant, ""),
+                              rgw::ARN(partition, service, "", s->user->user_id.tenant, ""),
                               rgw::IAM::stsGetSessionToken)) {
     return -EACCES;
   }
@@ -345,13 +345,7 @@ int RGW_Auth_STS::authorize(const DoutPrefixProvider *dpp,
 
 void RGWHandler_REST_STS::rgw_sts_parse_input()
 {
-  const auto max_size = s->cct->_conf->rgw_max_put_param_size;
-
-  int ret = 0;
-  bufferlist data;
-  std::tie(ret, data) = rgw_rest_read_all_input(s, max_size, false);
-  string post_body = data.to_str();
-  if (data.length() > 0) {
+  if (post_body.size() > 0) {
     ldout(s->cct, 10) << "Content of POST: " << post_body << dendl;
 
     if (post_body.find("Action") != string::npos) {
index a89c381d66efc49f8b5084109d2823ff5f14dad3..d9baa2c3cacd8a93660442aba6625178da1a89af 100644 (file)
@@ -162,15 +162,17 @@ public:
 
 class RGWHandler_REST_STS : public RGWHandler_REST {
   const rgw::auth::StrategyRegistry& auth_registry;
+  const string& post_body;
   RGWOp *op_post() override;
   void rgw_sts_parse_input();
 public:
 
   static int init_from_header(struct req_state *s, int default_formatter, bool configurable_format);
 
-  RGWHandler_REST_STS(const rgw::auth::StrategyRegistry& auth_registry)
+  RGWHandler_REST_STS(const rgw::auth::StrategyRegistry& auth_registry, const string& post_body="")
     : RGWHandler_REST(),
-      auth_registry(auth_registry) {}
+      auth_registry(auth_registry),
+      post_body(post_body) {}
   ~RGWHandler_REST_STS() override = default;
 
   int init(RGWRados *store,
index 31323f34038b338a553f7dfa813bd42c398ee1c0..2b4ffe21d97bfdfe47e9280305790146aab82342 100644 (file)
@@ -49,7 +49,7 @@ int RGWRestUserPolicy::verify_permission()
   uint64_t op = get_op();
   string user_name = s->info.args.get("UserName");
   rgw_user user_id(user_name);
-  if (! verify_user_permission(this, s, rgw::IAM::ARN(rgw::IAM::ARN(user_id.id,
+  if (! verify_user_permission(this, s, rgw::ARN(rgw::ARN(user_id.id,
                                                 "user",
                                                  user_id.tenant)), op)) {
     return -EACCES;
@@ -90,9 +90,9 @@ uint64_t RGWPutUserPolicy::get_op()
 
 int RGWPutUserPolicy::get_params()
 {
-  policy_name = s->info.args.get("PolicyName");
-  user_name = s->info.args.get("UserName");
-  policy = s->info.args.get("PolicyDocument");
+  policy_name = url_decode(s->info.args.get("PolicyName"), true);
+  user_name = url_decode(s->info.args.get("UserName"), true);
+  policy = url_decode(s->info.args.get("PolicyDocument"), true);
 
   if (policy_name.empty() || user_name.empty() || policy.empty()) {
     ldout(s->cct, 20) << "ERROR: one of policy name, user name or policy document is empty"
index 2d8b6588f74747b591960f20dc64d748427fad75..80daa04cbbcaf61c18773e0a9a78e4347e7bc558 100644 (file)
@@ -142,7 +142,7 @@ void AssumedRoleUser::dump(Formatter *f) const
 int AssumedRoleUser::generateAssumedRoleUser(CephContext* cct,
                                               RGWRados *store,
                                               const string& roleId,
-                                              const rgw::IAM::ARN& roleArn,
+                                              const rgw::ARN& roleArn,
                                               const string& roleSessionName)
 {
   string resource = std::move(roleArn.resource);
@@ -150,8 +150,8 @@ int AssumedRoleUser::generateAssumedRoleUser(CephContext* cct,
   resource.append("/");
   resource.append(roleSessionName);
   
-  rgw::IAM::ARN assumed_role_arn(rgw::IAM::Partition::aws,
-                                  rgw::IAM::Service::sts,
+  rgw::ARN assumed_role_arn(rgw::Partition::aws,
+                                  rgw::Service::sts,
                                   "", roleArn.account, resource);
   arn = assumed_role_arn.to_string();
 
@@ -248,7 +248,7 @@ int AssumeRoleRequest::validate_input() const
 
 std::tuple<int, RGWRole> STSService::getRoleInfo(const string& arn)
 {
-  if (auto r_arn = rgw::IAM::ARN::parse(arn); r_arn) {
+  if (auto r_arn = rgw::ARN::parse(arn); r_arn) {
     auto pos = r_arn->resource.find_last_of('/');
     string roleName = r_arn->resource.substr(pos + 1);
     RGWRole role(cct, store, roleName, r_arn->account);
@@ -296,7 +296,7 @@ AssumeRoleWithWebIdentityResponse STSService::assumeRoleWithWebIdentity(AssumeRo
   response.sub = req.getSub();
 
   //Get the role info which is being assumed
-  boost::optional<rgw::IAM::ARN> r_arn = rgw::IAM::ARN::parse(req.getRoleARN());
+  boost::optional<rgw::ARN> r_arn = rgw::ARN::parse(req.getRoleARN());
   if (r_arn == boost::none) {
     response.assumeRoleResp.retCode = -EINVAL;
     return response;
@@ -345,7 +345,7 @@ AssumeRoleResponse STSService::assumeRole(AssumeRoleRequest& req)
   response.packedPolicySize = 0;
 
   //Get the role info which is being assumed
-  boost::optional<rgw::IAM::ARN> r_arn = rgw::IAM::ARN::parse(req.getRoleARN());
+  boost::optional<rgw::ARN> r_arn = rgw::ARN::parse(req.getRoleARN());
   if (r_arn == boost::none) {
     response.retCode = -EINVAL;
     return response;
index 89d66e2d15eb8325af5bde6fbd3409c98c05f81e..68187ba19960b505f9725ddb258c476f29d3ab82 100644 (file)
@@ -109,7 +109,7 @@ public:
   int generateAssumedRoleUser( CephContext* cct,
                                 RGWRados *store,
                                 const string& roleId,
-                                const rgw::IAM::ARN& roleArn,
+                                const rgw::ARN& roleArn,
                                 const string& roleSessionName);
   const string& getARN() const { return arn; }
   const string& getAssumeRoleId() const { return assumeRoleId; }
index 53aa8e10aa90c35e7525d345140f63c7e532de1f..a8a3fdee913b20a60a678cd820011da1c22a991e 100644 (file)
@@ -353,14 +353,8 @@ template <typename Iter>
 int take_min_status(CephContext *cct, Iter first, Iter last,
                     std::vector<std::string> *status)
 {
-  status->clear();
-  std::optional<uint64_t> num_shards;
   for (auto peer = first; peer != last; ++peer) {
-    const size_t peer_shards = peer->size();
-    if (!num_shards) {
-      num_shards = peer_shards;
-      status->resize(*num_shards);
-    } else if (*num_shards != peer_shards) {
+    if (peer->size() != status->size()) {
       // all peers must agree on the number of shards
       return -EINVAL;
     }
@@ -483,6 +477,11 @@ int BucketTrimInstanceCR::operate()
       }
     }
 
+    // initialize each shard with the maximum marker, which is only used when
+    // there are no peers syncing from us
+    min_markers.assign(std::max(1u, bucket_info.num_shards),
+                       RGWSyncLogTrimCR::max_marker);
+
     // determine the minimum marker for each shard
     retcode = take_min_status(cct, peer_status.begin(), peer_status.end(),
                               &min_markers);
@@ -665,7 +664,7 @@ int AsyncMetadataList::_send_request()
       ceph_assert(keys.size() == 1);
       auto& key = keys.front();
       // stop at original marker
-      if (marker >= start_marker) {
+      if (marker > start_marker) {
         return 0;
       }
       if (!callback(std::move(key), std::move(marker))) {
index 5c376dc937114e62693adbba8a4b203bdec90c96..aa68934c06b157264e907ca55d9ab6c81354014d 100644 (file)
@@ -51,6 +51,12 @@ public:
   }
   virtual RGWMetadataHandler *alloc_bucket_meta_handler();
   virtual RGWMetadataHandler *alloc_bucket_instance_meta_handler();
+
+  // indication whether the sync module start with full sync (default behavior)
+  // incremental sync would follow anyway
+  virtual bool should_full_sync() const {
+      return true;
+  }
 };
 
 typedef std::shared_ptr<RGWSyncModuleInstance> RGWSyncModuleInstanceRef;
index f9b02a4027bbfa917ef413f3ca25600f1a90515d..36b652a1b6020493c192a190b74d0131cc567eb5 100644 (file)
@@ -112,6 +112,7 @@ public:
 
 using ESVersion = std::pair<int,int>;
 static constexpr ESVersion ES_V5{5,0};
+static constexpr ESVersion ES_V7{7,0};
 
 struct ESInfo {
   std::string name;
@@ -171,6 +172,7 @@ struct ElasticConfig {
   uint32_t num_shards{0};
   uint32_t num_replicas{0};
   std::map <string,string> default_headers = {{ "Content-Type", "application/json" }};
+  ESInfo es_info;
 
   void init(CephContext *cct, const JSONFormattable& config) {
     string elastic_endpoint = config["endpoint"];
@@ -216,7 +218,12 @@ struct ElasticConfig {
   }
 
   string get_obj_path(const RGWBucketInfo& bucket_info, const rgw_obj_key& key) {
-    return index_path +  "/object/" + url_encode(bucket_info.bucket.bucket_id + ":" + key.name + ":" + (key.instance.empty() ? "null" : key.instance));
+    if (es_info.version >= ES_V7) {
+      return index_path+ "/_doc/" + url_encode(bucket_info.bucket.bucket_id + ":" + key.name + ":" + (key.instance.empty() ? "null" : key.instance));
+;
+    } else {
+      return index_path +  "/object/" + url_encode(bucket_info.bucket.bucket_id + ":" + key.name + ":" + (key.instance.empty() ? "null" : key.instance));
+    }
   }
 
   bool should_handle_operation(RGWBucketInfo& bucket_info) {
@@ -328,8 +335,12 @@ struct es_type : public T {
 
 template <class T>
 struct es_index_mappings {
+  ESVersion es_version;
   ESType string_type {ESType::String};
 
+  es_index_mappings(ESVersion esv):es_version(esv) {
+  }
+
   es_type<T> est(ESType t) const {
     return es_type<T>(t);
   }
@@ -345,7 +356,8 @@ struct es_index_mappings {
   }
 
   void dump(Formatter *f) const {
-    f->open_object_section("object");
+    if (es_version <= ES_V7)
+      f->open_object_section("object");
     f->open_object_section("properties");
     encode_json("bucket", est(string_type), f);
     encode_json("name", est(string_type), f);
@@ -370,6 +382,8 @@ struct es_index_mappings {
     f->close_section(); // properties
     f->close_section(); // meta
     f->close_section(); // properties
+
+    if (es_version <= ES_V7)
     f->close_section(); // object
   }
 };
@@ -396,7 +410,8 @@ struct es_index_config : public es_index_config_base {
   es_index_settings settings;
   es_index_mappings<T> mappings;
 
-  es_index_config(es_index_settings& _s) : settings(_s) {}
+  es_index_config(es_index_settings& _s, ESVersion esv) : settings(_s), mappings(esv) {
+  }
 
   void dump(Formatter *f) const {
     encode_json("settings", settings, f);
@@ -679,10 +694,10 @@ public:
 
         if (es_info.version >= ES_V5) {
           ldout(sync_env->cct, 0) << "elasticsearch: index mapping: version >= 5" << dendl;
-          index_conf.reset(new es_index_config<es_type_v5>(settings));
+          index_conf.reset(new es_index_config<es_type_v5>(settings, es_info.version));
         } else {
           ldout(sync_env->cct, 0) << "elasticsearch: index mapping: version < 5" << dendl;
-          index_conf.reset(new es_index_config<es_type_v2>(settings));
+          index_conf.reset(new es_index_config<es_type_v2>(settings, es_info.version));
         }
         call(new RGWPutRESTResourceCR<es_index_config_base, int, _err_response> (sync_env->cct,
                                                              conf->conn.get(),
@@ -694,7 +709,8 @@ public:
       if (retcode < 0) {
         ldout(sync_env->cct, 0) << "elasticsearch: failed to initialize index: response.type=" << err_response.error.type << " response.reason=" << err_response.error.reason << dendl;
 
-        if (err_response.error.type != "index_already_exists_exception") {
+        if (err_response.error.type != "index_already_exists_exception" &&
+           err_response.error.type != "resource_already_exists_exception") {
           return set_cr_error(retcode);
         }
 
@@ -801,6 +817,25 @@ public:
 
   void init(RGWDataSyncEnv *sync_env, uint64_t instance_id) override {
     conf->init_instance(sync_env->store->svc.zone->get_realm(), instance_id);
+    // try to get elastic search version
+    RGWCoroutinesManager crs(sync_env->store->ctx(), sync_env->store->get_cr_registry());
+    RGWHTTPManager http_manager(sync_env->store->ctx(), crs.get_completion_mgr());
+    int ret = http_manager.start();
+    if (ret < 0) {
+      return;
+    }
+    ret = crs.run(new RGWReadRESTResourceCR<ESInfo>(sync_env->cct,
+                                             conf->conn.get(),
+                                             &http_manager,
+                                             "/", nullptr,
+                                             &(conf->default_headers),
+                                             &(conf->es_info)));
+    http_manager.stop();
+    if (ret < 0) {
+      ldout(sync_env->cct, 1) << conf->id << ": fetch elastic info failed: " << ret << dendl;
+    } else {
+      ldout(sync_env->cct, 5) << conf->id << ": got elastic version=" << conf->es_info.get_version_str() << dendl;
+    }
   }
 
   RGWCoroutine *init_sync(RGWDataSyncEnv *sync_env) override {
index 8e977ff4b859b94144df7993c5654e249da3999f..cf1d9543ac139f487add36b60f1f33d22fdf2ed5 100644 (file)
 #include "rgw_op.h"
 #include "rgw_pubsub.h"
 #include "rgw_pubsub_push.h"
+#include "rgw_notify_event_type.h"
 #include "rgw_perf_counters.h"
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+#include "rgw_amqp.h"
+#endif
 
+#include <boost/algorithm/hex.hpp>
 #include <boost/asio/yield.hpp>
 
 #define dout_subsys ceph_subsys_rgw
@@ -29,42 +34,8 @@ config:
    "uid": <uid>,                   # default: "pubsub"
    "data_bucket_prefix": <prefix>  # default: "pubsub-"
    "data_oid_prefix": <prefix>     #
-
-   "events_retention_days": <days> # default: 7
-
-    # non-dynamic config
-    "notifications": [
-        {
-            "path": <notification-path>,    # this can be either an explicit path: <bucket>, or <bucket>/<object>,
-                                            # or a prefix if it ends with a wildcard
-            "topic": <topic-name>
-         },
-        ...
-    ],
-    "subscriptions": [
-        {
-            "name": <subscription-name>,
-            "topic": <topic>,
-            "push_endpoint": <endpoint>,
-            "args:" <arg list>.            # any push endpoint specific args (include all args)
-            "data_bucket": <bucket>,       # override name of bucket where subscription data will be store
-            "data_oid_prefix": <prefix>    # set prefix for subscription data object ids
-        },
-        ...
-    ]
-}
-
-*/
-
-/*
-
-config:
-
-{
-   "tenant": <tenant>,             # default: <empty>
-   "uid": <uid>,                   # default: "pubsub"
-   "data_bucket_prefix": <prefix>  # default: "pubsub-"
-   "data_oid_prefix": <prefix>     #
+   "events_retention_days": <int>  # default: 7
+   "start_with_full_sync" <bool>   # default: false
 
     # non-dynamic config
     "notifications": [
@@ -80,9 +51,10 @@ config:
             "name": <subscription-name>,
             "topic": <topic>,
             "push_endpoint": <endpoint>,
-            "args:" <arg list>.            # any push endpoint specific args (include all args)
+            "push_endpoint_args:" <arg list>.            # any push endpoint specific args (include all args)
             "data_bucket": <bucket>,       # override name of bucket where subscription data will be store
             "data_oid_prefix": <prefix>    # set prefix for subscription data object ids
+            "s3_id": <id>                  # in case of S3 compatible notifications, the notification ID will be set here
         },
         ...
     ]
@@ -99,28 +71,32 @@ RGWHTTPArgs string_to_args(const std::string& str_args) {
   return args;
 }
 
-struct PSSubConfig { /* subscription config */
-  string name;
-  string topic;
-  string push_endpoint_name;
-  string push_endpoint_args;
+struct PSSubConfig {
+  std::string name;
+  std::string topic;
+  std::string push_endpoint_name;
+  std::string push_endpoint_args;
+  std::string data_bucket_name;
+  std::string data_oid_prefix;
+  std::string s3_id;
+  std::string arn_topic;
   RGWPubSubEndpoint::Ptr push_endpoint;
 
-  string data_bucket_name;
-  string data_oid_prefix;
-
   void from_user_conf(CephContext *cct, const rgw_pubsub_sub_config& uc) {
     name = uc.name;
     topic = uc.topic;
     push_endpoint_name = uc.dest.push_endpoint;
     data_bucket_name = uc.dest.bucket_name;
     data_oid_prefix = uc.dest.oid_prefix;
-    if (push_endpoint_name != "") {
+    s3_id = uc.s3_id;
+    arn_topic = uc.dest.arn_topic;
+    if (!push_endpoint_name.empty()) {
       push_endpoint_args = uc.dest.push_endpoint_args;
       try {
-        push_endpoint = RGWPubSubEndpoint::create(push_endpoint_name, topic, string_to_args(push_endpoint_args));
+        push_endpoint = RGWPubSubEndpoint::create(push_endpoint_name, arn_topic, string_to_args(push_endpoint_args), cct);
+        ldout(cct, 20) << "push endpoint created: " << push_endpoint->to_str() << dendl;
       } catch (const RGWPubSubEndpoint::configuration_error& e) {
-          ldout(cct, 0) << "ERROR: failed to create push endpoint: " 
+          ldout(cct, 1) << "ERROR: failed to create push endpoint: " 
             << push_endpoint_name << " due to: " << e.what() << dendl;
       }
     }
@@ -130,9 +106,10 @@ struct PSSubConfig { /* subscription config */
     encode_json("name", name, f);
     encode_json("topic", topic, f);
     encode_json("push_endpoint", push_endpoint_name, f);
-    encode_json("args", push_endpoint_args, f);
+    encode_json("push_endpoint_args", push_endpoint_args, f);
     encode_json("data_bucket_name", data_bucket_name, f);
     encode_json("data_oid_prefix", data_oid_prefix, f);
+    encode_json("s3_id", s3_id, f);
   }
 
   void init(CephContext *cct, const JSONFormattable& config,
@@ -144,12 +121,15 @@ struct PSSubConfig { /* subscription config */
     string default_bucket_name = data_bucket_prefix + name;
     data_bucket_name = config["data_bucket"](default_bucket_name.c_str());
     data_oid_prefix = config["data_oid_prefix"](default_oid_prefix.c_str());
+    s3_id = config["s3_id"];
+    arn_topic = config["arn_topic"];
     if (!push_endpoint_name.empty()) {
       push_endpoint_args = config["push_endpoint_args"];
       try {
-        push_endpoint = RGWPubSubEndpoint::create(push_endpoint_name, topic, string_to_args(push_endpoint_args));
+        push_endpoint = RGWPubSubEndpoint::create(push_endpoint_name, arn_topic, string_to_args(push_endpoint_args), cct);
+        ldout(cct, 20) << "push endpoint created: " << push_endpoint->to_str() << dendl;
       } catch (const RGWPubSubEndpoint::configuration_error& e) {
-        ldout(cct, 0) << "ERROR: failed to create push endpoint: " 
+        ldout(cct, 1) << "ERROR: failed to create push endpoint: " 
           << push_endpoint_name << " due to: " << e.what() << dendl;
       }
     }
@@ -159,8 +139,8 @@ struct PSSubConfig { /* subscription config */
 using  PSSubConfigRef = std::shared_ptr<PSSubConfig>;
 
 struct PSTopicConfig {
-  string name;
-  set<string> subs;
+  std::string name;
+  std::set<std::string> subs;
 
   void dump(Formatter *f) const {
     encode_json("name", name, f);
@@ -205,8 +185,7 @@ static string json_str(const char *name, const T& obj, bool pretty = false)
 }
 
 using PSTopicConfigRef = std::shared_ptr<PSTopicConfig>;
-using TopicsRef = std::shared_ptr<vector<PSTopicConfigRef>>;
-
+using TopicsRef = std::shared_ptr<std::vector<PSTopicConfigRef>>;
 
 struct PSConfig {
   string id{"pubsub"};
@@ -220,9 +199,11 @@ struct PSConfig {
   uint64_t max_id{0};
 
   /* FIXME: no hard coded buckets, we'll have configurable topics */
-  map<string, PSSubConfigRef> subs;
-  map<string, PSTopicConfigRef> topics;
-  multimap<string, PSNotificationConfig> notifications;
+  std::map<std::string, PSSubConfigRef> subs;
+  std::map<std::string, PSTopicConfigRef> topics;
+  std::multimap<std::string, PSNotificationConfig> notifications;
+  
+  bool start_with_full_sync{false};
 
   void dump(Formatter *f) const {
     encode_json("id", id, f);
@@ -262,6 +243,7 @@ struct PSConfig {
         f->close_section();
       }
     }
+    encode_json("start_with_full_sync", start_with_full_sync, f);
   }
 
   void init(CephContext *cct, const JSONFormattable& config) {
@@ -289,6 +271,7 @@ struct PSConfig {
         iter->second->subs.insert(sc->name);
       }
     }
+    start_with_full_sync = config["start_with_full_sync"](false);
 
     ldout(cct, 5) << "pubsub: module config (parsed representation):\n" << json_str("config", *this, true) << dendl;
   }
@@ -326,7 +309,8 @@ struct PSConfig {
         continue;
       }
 
-      ldout(cct, 10) << ": found topic for path=" << bucket << "/" << key << ": id=" << target.id << " target_path=" << target.path << ", topic=" << target.topic << dendl;
+      ldout(cct, 20) << ": found topic for path=" << bucket << "/" << key << ": id=" << target.id << 
+          " target_path=" << target.path << ", topic=" << target.topic << dendl;
       (*result)->push_back(topic->second);
     } while (iter != notifications.begin());
   }
@@ -341,34 +325,9 @@ struct PSConfig {
   }
 };
 
-enum RGWPubSubEventType {
-  UNKNOWN_EVENT        = 0,
-  OBJECT_CREATE        = 1,
-  OBJECT_DELETE        = 2,
-  DELETE_MARKER_CREATE = 3,
-};
-
-#define EVENT_NAME_OBJECT_CREATE               "OBJECT_CREATE"
-#define EVENT_NAME_OBJECT_DELETE               "OBJECT_DELETE"
-#define EVENT_NAME_OBJECT_DELETE_MARKER_CREATE "DELETE_MARKER_CREATE"
-#define EVENT_NAME_UNKNOWN                    "UNKNOWN_EVENT"
-
-static const char *get_event_name(const RGWPubSubEventType& val)
-{
-  switch (val) {
-    case OBJECT_CREATE:
-      return EVENT_NAME_OBJECT_CREATE;
-    case OBJECT_DELETE:
-      return EVENT_NAME_OBJECT_DELETE;
-    case DELETE_MARKER_CREATE:
-      return EVENT_NAME_OBJECT_DELETE_MARKER_CREATE;
-    default:
-      return "EVENT_NAME_UNKNOWN";
-  };
-}
-
 using PSConfigRef = std::shared_ptr<PSConfig>;
-using EventRef = std::shared_ptr<rgw_pubsub_event>;
+template<typename EventType>
+using EventRef = std::shared_ptr<EventType>;
 
 struct objstore_event {
   string id;
@@ -421,30 +380,75 @@ struct objstore_event {
   }
 };
 
+static void set_event_id(std::string& id, const std::string& hash, const utime_t& ts) {
+  char buf[64];
+  const auto len = snprintf(buf, sizeof(buf), "%010ld.%06ld.%s", (long)ts.sec(), (long)ts.usec(), hash.c_str());
+  if (len > 0) {
+    id.assign(buf, len);
+  }
+}
+
 static void make_event_ref(CephContext *cct, const rgw_bucket& bucket,
                        const rgw_obj_key& key,
                        const ceph::real_time& mtime,
                        const std::vector<std::pair<std::string, std::string> > *attrs,
-                       const string& event_name,
-                       EventRef *event) {
+                       rgw::notify::EventType event_type,
+                       EventRef<rgw_pubsub_event> *event) {
   *event = std::make_shared<rgw_pubsub_event>();
 
-  EventRef& e = *event;
-  e->event = event_name;
+  EventRef<rgw_pubsub_event>& e = *event;
+  e->event_name = rgw::notify::to_ceph_string(event_type);
   e->source = bucket.name + "/" + key.name;
   e->timestamp = real_clock::now();
 
   objstore_event oevent(bucket, key, mtime, attrs);
 
-  string hash = oevent.get_hash();
-  utime_t ts(e->timestamp);
-  char buf[64];
-  snprintf(buf, sizeof(buf), "%010ld.%06ld.%s", (long)ts.sec(), (long)ts.usec(), hash.c_str());
-  e->id = buf;
+  const utime_t ts(e->timestamp);
+  set_event_id(e->id, oevent.get_hash(), ts);
 
   encode_json("info", oevent, &e->info);
 }
 
+static void make_s3_record_ref(CephContext *cct, const rgw_bucket& bucket,
+                       const rgw_user& owner,
+                       const rgw_obj_key& key,
+                       const ceph::real_time& mtime,
+                       const std::vector<std::pair<std::string, std::string> > *attrs,
+                       rgw::notify::EventType event_type,
+                       EventRef<rgw_pubsub_s3_record> *record) {
+  *record = std::make_shared<rgw_pubsub_s3_record>();
+
+  EventRef<rgw_pubsub_s3_record>& r = *record;
+  r->eventVersion = "2.1";
+  r->eventSource = "aws:s3";
+  r->eventTime = mtime;
+  r->eventName = rgw::notify::to_string(event_type);
+  r->userIdentity = "";         // user that triggered the change: not supported in sync module
+  r->sourceIPAddress = "";      // IP address of client that triggered the change: not supported in sync module
+  r->x_amz_request_id = "";     // request ID of the original change: not supported in sync module
+  r->x_amz_id_2 = "";           // RGW on which the change was made: not supported in sync module
+  r->s3SchemaVersion = "1.0";
+  // configurationId is filled from subscription configuration
+  r->bucket_name = bucket.name;
+  r->bucket_ownerIdentity = owner.to_str();
+  r->bucket_arn = to_string(rgw::ARN(bucket));
+  r->bucket_id = bucket.bucket_id; // rgw extension
+  r->object_key = key.name;
+  r->object_size = 0;           // not supported in sync module
+  objstore_event oevent(bucket, key, mtime, attrs);
+  r->object_etag = oevent.get_hash();
+  r->object_versionId = key.instance;
+  // use timestamp as per key sequence id (hex encoded)
+  const utime_t ts(real_clock::now());
+  boost::algorithm::hex((const char*)&ts, (const char*)&ts + sizeof(utime_t), 
+          std::back_inserter(r->object_sequencer));
+  // event ID is rgw extension (not in the S3 spec), used for acking the event
+  // same format is used in both S3 compliant and Ceph specific events
+  set_event_id(r->id, r->object_etag, ts);
+}
+
 class PSManager;
 using PSManagerRef = std::shared_ptr<PSManager>;
 
@@ -465,14 +469,15 @@ struct PSEnv {
 
 using PSEnvRef = std::shared_ptr<PSEnv>;
 
+template<typename EventType>
 class PSEvent {
-  const EventRef event;
+  const EventRef<EventType> event;
 
 public:
-  PSEvent(const EventRef& _event) : event(_event) {}
+  PSEvent(const EventRef<EventType>& _event) : event(_event) {}
 
   void format(bufferlist *bl) const {
-    bl->append(json_str("event", *event));
+    bl->append(json_str(EventType::json_type_single, *event));
   }
 
   void encode_event(bufferlist& bl) const {
@@ -587,16 +592,11 @@ class PSSubscription {
   RGWDataSyncEnv *sync_env;
   PSEnvRef env;
   PSSubConfigRef sub_conf;
-  shared_ptr<rgw_get_bucket_info_result> get_bucket_info_result;
+  std::shared_ptr<rgw_get_bucket_info_result> get_bucket_info_result;
   RGWBucketInfo *bucket_info{nullptr};
   RGWDataAccessRef data_access;
   RGWDataAccess::BucketRef bucket;
 
-  struct push_endpoint_info {
-    shared_ptr<RGWRESTConn> conn;
-    string path;
-  } push;
-
   InitCR *init_cr{nullptr};
 
   class InitBucketLifecycleCR : public RGWCoroutine {
@@ -612,7 +612,7 @@ class PSSubscription {
     InitBucketLifecycleCR(RGWDataSyncEnv *_sync_env,
            PSConfigRef& _conf,
            RGWBucketInfo& _bucket_info,
-           map<string, bufferlist>& _bucket_attrs) : RGWCoroutine(_sync_env->cct),
+           std::map<string, bufferlist>& _bucket_attrs) : RGWCoroutine(_sync_env->cct),
                                                      sync_env(_sync_env),
                                                      conf(_conf) {
       lc_config.bucket_info = _bucket_info;
@@ -745,16 +745,17 @@ class PSSubscription {
     }
   };
 
+  template<typename EventType>
   class StoreEventCR : public RGWCoroutine {
     RGWDataSyncEnv* const sync_env;
     const PSSubscriptionRef sub;
-    const PSEvent pse;
+    const PSEvent<EventType> pse;
     const string oid_prefix;
 
   public:
     StoreEventCR(RGWDataSyncEnv* const _sync_env,
                  const PSSubscriptionRef& _sub,
-                 const EventRef& _event) : RGWCoroutine(_sync_env->cct),
+                 const EventRef<EventType>& _event) : RGWCoroutine(_sync_env->cct),
                                      sync_env(_sync_env),
                                      sub(_sub),
                                      pse(_event),
@@ -762,7 +763,6 @@ class PSSubscription {
     }
 
     int operate() override {
-      // TODO: in case of "push-only" subscription no need to store event
       rgw_object_simple_put_params put_obj;
       reenter(this) {
 
@@ -783,12 +783,10 @@ class PSSubscription {
                                             sync_env->store,
                                             put_obj));
         if (retcode < 0) {
-          ldout(sync_env->cct, 10) << "ERROR: failed to store event: " << put_obj.bucket << "/" << put_obj.key << " ret=" << retcode << dendl;
-          if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_fail);
+          ldpp_dout(sync_env->dpp, 10) << "failed to store event: " << put_obj.bucket << "/" << put_obj.key << " ret=" << retcode << dendl;
           return set_cr_error(retcode);
         } else {
-          ldout(sync_env->cct, 20) << "event stored: " << put_obj.bucket << "/" << put_obj.key << dendl;
-          if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_ok);
+          ldpp_dout(sync_env->dpp, 20) << "event stored: " << put_obj.bucket << "/" << put_obj.key << dendl;
         }
 
         return set_cr_done();
@@ -797,15 +795,16 @@ class PSSubscription {
     }
   };
 
+  template<typename EventType>
   class PushEventCR : public RGWCoroutine {
     RGWDataSyncEnv* const sync_env;
-    const EventRef event;
+    const EventRef<EventType> event;
     const PSSubConfigRef& sub_conf;
 
   public:
     PushEventCR(RGWDataSyncEnv* const _sync_env,
                  const PSSubscriptionRef& _sub,
-                 const EventRef& _event) : RGWCoroutine(_sync_env->cct),
+                 const EventRef<EventType>& _event) : RGWCoroutine(_sync_env->cct),
                                      sync_env(_sync_env),
                                      event(_event),
                                      sub_conf(_sub->sub_conf) {
@@ -817,15 +816,13 @@ class PSSubscription {
         yield call(sub_conf->push_endpoint->send_to_completion_async(*event.get(), sync_env));
       
         if (retcode < 0) {
-          ldout(sync_env->cct, 10) << "ERROR: failed to push event: " << event->id <<
+          ldout(sync_env->cct, 10) << "failed to push event: " << event->id <<
             " to endpoint: " << sub_conf->push_endpoint_name << " ret=" << retcode << dendl;
-          if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_failed);
           return set_cr_error(retcode);
         }
         
-        ldout(sync_env->cct, 10) << "event: " << event->id <<
+        ldout(sync_env->cct, 20) << "event: " << event->id <<
           " pushed to endpoint: " << sub_conf->push_endpoint_name << dendl;
-        if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_ok);
         return set_cr_done();
       }
       return 0;
@@ -868,23 +865,24 @@ public:
     return init_cr->execute(caller);
   }
 
-  static RGWCoroutine *store_event_cr(RGWDataSyncEnv* const sync_env, const PSSubscriptionRef& sub, const EventRef& event) {
-    return new StoreEventCR(sync_env, sub, event);
+  template<typename EventType>
+  static RGWCoroutine *store_event_cr(RGWDataSyncEnv* const sync_env, const PSSubscriptionRef& sub, const EventRef<EventType>& event) {
+    return new StoreEventCR<EventType>(sync_env, sub, event);
   }
 
-  static RGWCoroutine *push_event_cr(RGWDataSyncEnv* const sync_env, const PSSubscriptionRef& sub, const EventRef& event) {
-    return new PushEventCR(sync_env, sub, event);
+  template<typename EventType>
+  static RGWCoroutine *push_event_cr(RGWDataSyncEnv* const sync_env, const PSSubscriptionRef& sub, const EventRef<EventType>& event) {
+    return new PushEventCR<EventType>(sync_env, sub, event);
   }
   friend class InitCR;
 };
 
-
 class PSManager
 {
   RGWDataSyncEnv *sync_env;
   PSEnvRef env;
 
-  map<string, PSSubscriptionRef> subs;
+  std::map<string, PSSubscriptionRef> subs;
 
   class GetSubCR : public RGWSingletonCR<PSSubscriptionRef> {
     RGWDataSyncEnv *sync_env;
@@ -898,6 +896,7 @@ class PSManager
 
     PSSubConfigRef sub_conf;
     rgw_pubsub_sub_config user_sub_conf;
+
   public:
     GetSubCR(RGWDataSyncEnv *_sync_env,
                       PSManagerRef& _mgr,
@@ -911,14 +910,13 @@ class PSManager
                                                  ref(_ref),
                                                  conf(mgr->env->conf) {
     }
-    ~GetSubCR() {
-    }
+    ~GetSubCR() { }
 
     int operate() override {
       reenter(this) {
         if (owner.empty()) {
           if (!conf->find_sub(sub_name, &sub_conf)) {
-            ldout(sync_env->cct, 10) << "ERROR: could not find subscription config: name=" << sub_name << dendl;
+            ldout(sync_env->cct, 10) << "failed to find subscription config: name=" << sub_name << dendl;
             mgr->remove_get_sub(owner, sub_name);
             return set_cr_error(-ENOENT);
           }
@@ -945,7 +943,7 @@ class PSManager
 
         yield (*ref)->call_init_cr(this);
         if (retcode < 0) {
-          ldout(sync_env->cct, 10) << "ERROR: failed to init subscription" << dendl;
+          ldout(sync_env->cct, 10) << "failed to init subscription" << dendl;
           mgr->remove_get_sub(owner, sub_name);
           return set_cr_error(retcode);
         }
@@ -977,7 +975,7 @@ class PSManager
     return owner_prefix + sub_name;
   }
 
-  map<string, GetSubCR *> get_subs;
+  std::map<std::string, GetSubCR *> get_subs;
 
   GetSubCR *& get_get_subs(const rgw_user& owner, const string& name) {
     return get_subs[sub_id(owner, name)];
@@ -1072,13 +1070,23 @@ public:
   }
 };
 
+bool match(const rgw_pubsub_topic_filter& filter, const std::string& key_name, rgw::notify::EventType event_type) {
+  if (!match(filter.events, event_type)) {
+    return false;
+  }
+  if (!match(filter.s3_filter.key_filter, key_name)) {
+    return false;
+  }
+  return true;
+}
+
 class RGWPSFindBucketTopicsCR : public RGWCoroutine {
   RGWDataSyncEnv *sync_env;
   PSEnvRef env;
   rgw_user owner;
   rgw_bucket bucket;
   rgw_obj_key key;
-  string event_name;
+  rgw::notify::EventType event_type;
 
   RGWUserPubSub ups;
 
@@ -1093,14 +1101,14 @@ public:
                       const rgw_user& _owner,
                       const rgw_bucket& _bucket,
                       const rgw_obj_key& _key,
-                      const string& _event_name,
+                      rgw::notify::EventType _event_type,
                       TopicsRef *_topics) : RGWCoroutine(_sync_env->cct),
                                                           sync_env(_sync_env),
                                                           env(_env),
                                                           owner(_owner),
                                                           bucket(_bucket),
                                                           key(_key),
-                                                          event_name(_event_name),
+                                                          event_type(_event_type),
                                                           ups(_sync_env->store, owner),
                                                           topics(_topics) {
     *topics = std::make_shared<vector<PSTopicConfigRef> >();
@@ -1139,11 +1147,10 @@ public:
       for (auto& titer : bucket_topics.topics) {
         auto& topic_filter = titer.second;
         auto& info = topic_filter.topic;
-        if (!topic_filter.events.empty() &&
-            topic_filter.events.find(event_name) == topic_filter.events.end()) {
+        if (!match(topic_filter, key.name, event_type)) {
           continue;
         }
-        shared_ptr<PSTopicConfig> tc = std::make_shared<PSTopicConfig>();
+        std::shared_ptr<PSTopicConfig> tc = std::make_shared<PSTopicConfig>();
         tc->name = info.name;
         tc->subs = user_topics.topics[info.name].subs;
         (*topics)->push_back(tc);
@@ -1160,7 +1167,8 @@ class RGWPSHandleObjEventCR : public RGWCoroutine {
   RGWDataSyncEnv* const sync_env;
   const PSEnvRef env;
   const rgw_user& owner;
-  const EventRef event;
+  const EventRef<rgw_pubsub_event> event;
+  const EventRef<rgw_pubsub_s3_record> record;
   const TopicsRef topics;
   const std::array<rgw_user, 2> owners;
   bool has_subscriptions;
@@ -1168,20 +1176,22 @@ class RGWPSHandleObjEventCR : public RGWCoroutine {
   bool sub_conf_found;
   PSSubscriptionRef sub;
   std::array<rgw_user, 2>::const_iterator oiter;
-  vector<PSTopicConfigRef>::const_iterator titer;
-  set<string>::const_iterator siter;
+  std::vector<PSTopicConfigRef>::const_iterator titer;
+  std::set<string>::const_iterator siter;
   int last_sub_conf_error;
 
 public:
   RGWPSHandleObjEventCR(RGWDataSyncEnv* const _sync_env,
                       const PSEnvRef _env,
                       const rgw_user& _owner,
-                      const EventRef& _event,
+                      const EventRef<rgw_pubsub_event>& _event,
+                      const EventRef<rgw_pubsub_s3_record>& _record,
                       const TopicsRef& _topics) : RGWCoroutine(_sync_env->cct),
                                           sync_env(_sync_env),
                                           env(_env),
                                           owner(_owner),
                                           event(_event),
+                                          record(_record),
                                           topics(_topics),
                                           owners({owner, rgw_user{}}),
                                           has_subscriptions(false),
@@ -1189,59 +1199,96 @@ public:
 
   int operate() override {
     reenter(this) {
-      ldout(sync_env->cct, 10) << ": handle event: obj: z=" << sync_env->source_zone
+      ldout(sync_env->cct, 20) << ": handle event: obj: z=" << sync_env->source_zone
                                << " event=" << json_str("event", *event, false)
                                << " owner=" << owner << dendl;
 
       ldout(sync_env->cct, 20) << "pubsub: " << topics->size() << " topics found for path" << dendl;
-      
-      if (topics->empty()) {
-        // if event has no topics - no further processing is needed
-        return set_cr_done();
-      }
+     
+      // outside caller should check that
+      ceph_assert(!topics->empty());
 
       if (perfcounter) perfcounter->inc(l_rgw_pubsub_event_triggered);
 
+      // loop over all topics related to the bucket/object
       for (titer = topics->begin(); titer != topics->end(); ++titer) {
-        ldout(sync_env->cct, 10) << ": notification for " << event->source << ": topic=" << 
+        ldout(sync_env->cct, 20) << ": notification for " << event->source << ": topic=" << 
           (*titer)->name << ", has " << (*titer)->subs.size() << " subscriptions" << dendl;
-
+        // loop over all subscriptions of the topic
         for (siter = (*titer)->subs.begin(); siter != (*titer)->subs.end(); ++siter) {
-          ldout(sync_env->cct, 10) << ": subscription: " << *siter << dendl;
+          ldout(sync_env->cct, 20) << ": subscription: " << *siter << dendl;
           has_subscriptions = true;
           sub_conf_found = false;
+          // try to read subscription configuration from global/user cond
+          // configuration is considered missing only if does not exist in either
           for (oiter = owners.begin(); oiter != owners.end(); ++oiter) {
-            /*
-             * once for the global subscriptions, once for the user specific subscriptions
-             */
             yield PSManager::call_get_subscription_cr(sync_env, env->manager, this, *oiter, *siter, &sub);
             if (retcode < 0) {
+              if (sub_conf_found) {
+                // not a real issue, sub conf already found
+                retcode = 0;
+              }
               last_sub_conf_error = retcode;
               continue;
             }
             sub_conf_found = true;
-
-            ldout(sync_env->cct, 20) << "storing event for subscription=" << *siter << " owner=" << *oiter << " ret=" << retcode << dendl;
-            yield call(PSSubscription::store_event_cr(sync_env, sub, event));
-            if (retcode < 0) {
-              ldout(sync_env->cct, 10) << "ERROR: failed to store event for subscription=" << *siter << " ret=" << retcode << dendl;
-            } else {
-              event_handled = true;
-            }
-            if (sub->sub_conf->push_endpoint) {
+            if (sub->sub_conf->s3_id.empty()) {
+              // subscription was not made by S3 compatible API
+              ldout(sync_env->cct, 20) << "storing event for subscription=" << *siter << " owner=" << *oiter << " ret=" << retcode << dendl;
+              yield call(PSSubscription::store_event_cr(sync_env, sub, event));
+              if (retcode < 0) {
+                if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_fail);
+                ldout(sync_env->cct, 1) << "ERROR: failed to store event for subscription=" << *siter << " ret=" << retcode << dendl;
+              } else {
+                if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_ok);
+                event_handled = true;
+              }
+              if (sub->sub_conf->push_endpoint) {
                 ldout(sync_env->cct, 20) << "push event for subscription=" << *siter << " owner=" << *oiter << " ret=" << retcode << dendl;
-              yield call(PSSubscription::push_event_cr(sync_env, sub, event));
+                yield call(PSSubscription::push_event_cr(sync_env, sub, event));
+                if (retcode < 0) {
+                  if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_failed);
+                  ldout(sync_env->cct, 1) << "ERROR: failed to push event for subscription=" << *siter << " ret=" << retcode << dendl;
+                } else {
+                  if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_ok);
+                  event_handled = true;
+                }
+              } 
+            } else {
+              // subscription was made by S3 compatible API
+              ldout(sync_env->cct, 20) << "storing record for subscription=" << *siter << " owner=" << *oiter << " ret=" << retcode << dendl;
+              record->configurationId = sub->sub_conf->s3_id;
+              yield call(PSSubscription::store_event_cr(sync_env, sub, record));
               if (retcode < 0) {
-                ldout(sync_env->cct, 10) << "ERROR: failed to push event for subscription=" << *siter << " ret=" << retcode << dendl;
+                if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_fail);
+                ldout(sync_env->cct, 1) << "ERROR: failed to store record for subscription=" << *siter << " ret=" << retcode << dendl;
               } else {
+                if (perfcounter) perfcounter->inc(l_rgw_pubsub_store_ok);
                 event_handled = true;
               }
+              if (sub->sub_conf->push_endpoint) {
+                  ldout(sync_env->cct, 20) << "push record for subscription=" << *siter << " owner=" << *oiter << " ret=" << retcode << dendl;
+                yield call(PSSubscription::push_event_cr(sync_env, sub, record));
+                if (retcode < 0) {
+                  if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_failed);
+                  ldout(sync_env->cct, 1) << "ERROR: failed to push record for subscription=" << *siter << " ret=" << retcode << dendl;
+                } else {
+                  if (perfcounter) perfcounter->inc(l_rgw_pubsub_push_ok);
+                  event_handled = true;
+                }
+              }
             }
           }
           if (!sub_conf_found) {
             // could not find conf for subscription at user or global levels
-            ldout(sync_env->cct, 10) << "ERROR: failed to find subscription config for subscription=" << *siter 
+            if (perfcounter) perfcounter->inc(l_rgw_pubsub_missing_conf);
+            ldout(sync_env->cct, 1) << "ERROR: failed to find subscription config for subscription=" << *siter 
               << " ret=" << last_sub_conf_error << dendl;
+              if (retcode == -ENOENT) {
+                // missing subscription info should be reflected back as invalid argument
+                // and not as missing object
+                retcode =  -EINVAL;
+              }
           }
         }
       }
@@ -1259,12 +1306,13 @@ public:
   }
 };
 
-
+// coroutine invoked on remote object creation
 class RGWPSHandleRemoteObjCBCR : public RGWStatRemoteObjCBCR {
   RGWDataSyncEnv *sync_env;
   PSEnvRef env;
   std::optional<uint64_t> versioned_epoch;
-  EventRef event;
+  EventRef<rgw_pubsub_event> event;
+  EventRef<rgw_pubsub_s3_record> record;
   TopicsRef topics;
 public:
   RGWPSHandleRemoteObjCBCR(RGWDataSyncEnv *_sync_env,
@@ -1278,7 +1326,7 @@ public:
   }
   int operate() override {
     reenter(this) {
-      ldout(sync_env->cct, 10) << ": stat of remote obj: z=" << sync_env->source_zone
+      ldout(sync_env->cct, 20) << ": stat of remote obj: z=" << sync_env->source_zone
                                << " b=" << bucket_info.bucket << " k=" << key << " size=" << size << " mtime=" << mtime
                                << " attrs=" << attrs << dendl;
       {
@@ -1289,14 +1337,21 @@ public:
             k = k.substr(sizeof(RGW_ATTR_PREFIX) - 1);
           }
           attrs.push_back(std::make_pair(k, attr.second));
-        }
+        } 
+        // at this point we don't know whether we need the ceph event or S3 record
+        // this is why both are created here, once we have information about the 
+        // subscription, we will store/push only the relevant ones
         make_event_ref(sync_env->cct,
                        bucket_info.bucket, key,
                        mtime, &attrs,
-                       EVENT_NAME_OBJECT_CREATE, &event);
+                       rgw::notify::ObjectCreated, &event);
+        make_s3_record_ref(sync_env->cct,
+                       bucket_info.bucket, bucket_info.owner, key,
+                       mtime, &attrs,
+                       rgw::notify::ObjectCreated, &record);
       }
 
-      yield call(new RGWPSHandleObjEventCR(sync_env, env, bucket_info.owner, event, topics));
+      yield call(new RGWPSHandleObjEventCR(sync_env, env, bucket_info.owner, event, record, topics));
       if (retcode < 0) {
         return set_cr_error(retcode);
       }
@@ -1351,10 +1406,10 @@ public:
     reenter(this) {
       yield call(new RGWPSFindBucketTopicsCR(sync_env, env, bucket_info.owner,
                                              bucket_info.bucket, key,
-                                             EVENT_NAME_OBJECT_CREATE,
+                                             rgw::notify::ObjectCreated,
                                              &topics));
       if (retcode < 0) {
-        ldout(sync_env->cct, 0) << "ERROR: RGWPSFindBucketTopicsCR returned ret=" << retcode << dendl;
+        ldout(sync_env->cct, 1) << "ERROR: RGWPSFindBucketTopicsCR returned ret=" << retcode << dendl;
         return set_cr_error(retcode);
       }
       if (topics->empty()) {
@@ -1371,6 +1426,7 @@ public:
   }
 };
 
+// coroutine invoked on remote object deletion
 class RGWPSGenericObjEventCBCR : public RGWCoroutine {
   RGWDataSyncEnv *sync_env;
   PSEnvRef env;
@@ -1378,41 +1434,46 @@ class RGWPSGenericObjEventCBCR : public RGWCoroutine {
   rgw_bucket bucket;
   rgw_obj_key key;
   ceph::real_time mtime;
-  string event_name;
-  EventRef event;
+  rgw::notify::EventType event_type;
+  EventRef<rgw_pubsub_event> event;
+  EventRef<rgw_pubsub_s3_record> record;
   TopicsRef topics;
 public:
   RGWPSGenericObjEventCBCR(RGWDataSyncEnv *_sync_env,
                            PSEnvRef _env,
                            RGWBucketInfo& _bucket_info, rgw_obj_key& _key, const ceph::real_time& _mtime,
-                           RGWPubSubEventType _event_type) : RGWCoroutine(_sync_env->cct),
+                           rgw::notify::EventType _event_type) : RGWCoroutine(_sync_env->cct),
                                                              sync_env(_sync_env),
                                                              env(_env),
                                                              owner(_bucket_info.owner),
                                                              bucket(_bucket_info.bucket),
                                                              key(_key),
-                                                             mtime(_mtime), event_name(get_event_name(_event_type)) {}
+                                                             mtime(_mtime), event_type(_event_type) {}
   int operate() override {
     reenter(this) {
-      ldout(sync_env->cct, 10) << ": remove remote obj: z=" << sync_env->source_zone
+      ldout(sync_env->cct, 20) << ": remove remote obj: z=" << sync_env->source_zone
                                << " b=" << bucket << " k=" << key << " mtime=" << mtime << dendl;
-      yield call(new RGWPSFindBucketTopicsCR(sync_env, env, owner, bucket, key, event_name, &topics));
+      yield call(new RGWPSFindBucketTopicsCR(sync_env, env, owner, bucket, key, event_type, &topics));
       if (retcode < 0) {
-        ldout(sync_env->cct, 0) << "ERROR: RGWPSFindBucketTopicsCR returned ret=" << retcode << dendl;
+        ldout(sync_env->cct, 1) << "ERROR: RGWPSFindBucketTopicsCR returned ret=" << retcode << dendl;
         return set_cr_error(retcode);
       }
       if (topics->empty()) {
         ldout(sync_env->cct, 20) << "no topics found for " << bucket << "/" << key << dendl;
         return set_cr_done();
       }
-      {
-        make_event_ref(sync_env->cct,
-                       bucket, key,
-                       mtime, nullptr,
-                       event_name, &event);
-      }
-
-      yield call(new RGWPSHandleObjEventCR(sync_env, env, owner, event, topics));
+      // at this point we don't know whether we need the ceph event or S3 record
+      // this is why both are created here, once we have information about the 
+      // subscription, we will store/push only the relevant ones
+      make_event_ref(sync_env->cct,
+                     bucket, key,
+                     mtime, nullptr,
+                     event_type, &event);
+      make_s3_record_ref(sync_env->cct,
+                     bucket, owner, key,
+                     mtime, nullptr,
+                     event_type, &record);
+      yield call(new RGWPSHandleObjEventCR(sync_env, env, owner, event, record, topics));
       if (retcode < 0) {
         return set_cr_error(retcode);
       }
@@ -1426,10 +1487,12 @@ public:
 class RGWPSDataSyncModule : public RGWDataSyncModule {
   PSEnvRef env;
   PSConfigRef& conf;
+
 public:
   RGWPSDataSyncModule(CephContext *cct, const JSONFormattable& config) : env(std::make_shared<PSEnv>()), conf(env->conf) {
     env->init(cct, config);
   }
+
   ~RGWPSDataSyncModule() override {}
 
   void init(RGWDataSyncEnv *sync_env, uint64_t instance_id) override {
@@ -1441,19 +1504,26 @@ public:
     ldout(sync_env->cct, 5) << conf->id << ": start" << dendl;
     return new RGWPSInitEnvCBCR(sync_env, env);
   }
-  RGWCoroutine *sync_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, std::optional<uint64_t> versioned_epoch, rgw_zone_set *zones_trace) override {
-    ldout(sync_env->cct, 10) << conf->id << ": sync_object: b=" << bucket_info.bucket << " k=" << key << " versioned_epoch=" << versioned_epoch.value_or(0) << dendl;
+
+  RGWCoroutine *sync_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, 
+      rgw_obj_key& key, std::optional<uint64_t> versioned_epoch, rgw_zone_set *zones_trace) override {
+    ldout(sync_env->cct, 10) << conf->id << ": sync_object: b=" << bucket_info.bucket << 
+          " k=" << key << " versioned_epoch=" << versioned_epoch.value_or(0) << dendl;
     return new RGWPSHandleObjCreateCR(sync_env, bucket_info, key, env, versioned_epoch);
   }
-  RGWCoroutine *remove_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, real_time& mtime, bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override {
-    ldout(sync_env->cct, 10) << conf->id << ": rm_object: b=" << bucket_info.bucket << " k=" << key << " mtime=" << mtime << " versioned=" << versioned << " versioned_epoch=" << versioned_epoch << dendl;
-    return new RGWPSGenericObjEventCBCR(sync_env, env, bucket_info, key, mtime, OBJECT_DELETE);
+
+  RGWCoroutine *remove_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, 
+      rgw_obj_key& key, real_time& mtime, bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override {
+    ldout(sync_env->cct, 10) << conf->id << ": rm_object: b=" << bucket_info.bucket << 
+          " k=" << key << " mtime=" << mtime << " versioned=" << versioned << " versioned_epoch=" << versioned_epoch << dendl;
+    return new RGWPSGenericObjEventCBCR(sync_env, env, bucket_info, key, mtime, rgw::notify::ObjectRemovedDelete);
   }
-  RGWCoroutine *create_delete_marker(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, real_time& mtime,
-                                     rgw_bucket_entry_owner& owner, bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override {
-    ldout(sync_env->cct, 10) << conf->id << ": create_delete_marker: b=" << bucket_info.bucket << " k=" << key << " mtime=" << mtime
-                            << " versioned=" << versioned << " versioned_epoch=" << versioned_epoch << dendl;
-    return new RGWPSGenericObjEventCBCR(sync_env, env, bucket_info, key, mtime, DELETE_MARKER_CREATE);
+
+  RGWCoroutine *create_delete_marker(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, 
+      rgw_obj_key& key, real_time& mtime, rgw_bucket_entry_owner& owner, bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override {
+    ldout(sync_env->cct, 10) << conf->id << ": create_delete_marker: b=" << bucket_info.bucket << 
+          " k=" << key << " mtime=" << mtime << " versioned=" << versioned << " versioned_epoch=" << versioned_epoch << dendl;
+    return new RGWPSGenericObjEventCBCR(sync_env, env, bucket_info, key, mtime, rgw::notify::ObjectRemovedDeleteMarkerCreated);
   }
 
   PSConfigRef& get_conf() { return conf; }
@@ -1465,11 +1535,22 @@ RGWPSSyncModuleInstance::RGWPSSyncModuleInstance(CephContext *cct, const JSONFor
   string jconf = json_str("conf", *data_handler->get_conf());
   JSONParser p;
   if (!p.parse(jconf.c_str(), jconf.size())) {
-    ldout(cct, 0) << "ERROR: failed to parse sync module effective conf: " << jconf << dendl;
+    ldout(cct, 1) << "ERROR: failed to parse sync module effective conf: " << jconf << dendl;
     effective_conf = config;
   } else {
     effective_conf.decode_json(&p);
   }
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+  if (!rgw::amqp::init(cct)) {
+    ldout(cct, 1) << "ERROR: failed to initialize AMQP manager in pubsub sync module" << dendl;
+  }
+#endif
+}
+
+RGWPSSyncModuleInstance::~RGWPSSyncModuleInstance() {
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+  rgw::amqp::shutdown();
+#endif
 }
 
 RGWDataSyncModule *RGWPSSyncModuleInstance::get_data_handler()
@@ -1481,7 +1562,11 @@ RGWRESTMgr *RGWPSSyncModuleInstance::get_rest_filter(int dialect, RGWRESTMgr *or
   if (dialect != RGW_REST_S3) {
     return orig;
   }
-  return new RGWRESTMgr_PubSub_S3(orig);
+  return new RGWRESTMgr_PubSub();
+}
+
+bool RGWPSSyncModuleInstance::should_full_sync() const {
+   return data_handler->get_conf()->start_with_full_sync;
 }
 
 int RGWPSSyncModule::create_instance(CephContext *cct, const JSONFormattable& config, RGWSyncModuleInstanceRef *instance) {
@@ -1489,3 +1574,4 @@ int RGWPSSyncModule::create_instance(CephContext *cct, const JSONFormattable& co
   return 0;
 }
 
+
index 37a055e76bffa60fc96cb176ad76a1ce69c1e24f..68d397867fa8b6d784871daffe05003a01b5a67c 100644 (file)
@@ -23,6 +23,7 @@ class RGWPSSyncModuleInstance : public RGWSyncModuleInstance {
   JSONFormattable effective_conf;
 public:
   RGWPSSyncModuleInstance(CephContext *cct, const JSONFormattable& config);
+  ~RGWPSSyncModuleInstance();
   RGWDataSyncModule *get_data_handler() override;
   RGWRESTMgr *get_rest_filter(int dialect, RGWRESTMgr *orig) override;
   bool supports_user_writes() override {
@@ -31,6 +32,9 @@ public:
   const JSONFormattable& get_effective_conf() {
     return effective_conf;
   }
+  // start with full sync based on configuration
+  // default to incremental only
+  virtual bool should_full_sync() const override;
 };
 
 #endif
index ef87613989ce5b280b0b3f956d080d5e5f0c9408..66c99e94bbf509838cfc73dd7f743c2a14c49bee 100644 (file)
@@ -1,98 +1,66 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+#include <algorithm>
+#include "rgw_rest_pubsub_common.h"
+#include "rgw_rest_pubsub.h"
 #include "rgw_sync_module_pubsub.h"
+#include "rgw_pubsub_push.h"
 #include "rgw_sync_module_pubsub_rest.h"
 #include "rgw_pubsub.h"
 #include "rgw_op.h"
 #include "rgw_rest.h"
 #include "rgw_rest_s3.h"
+#include "rgw_arn.h"
+#include "rgw_zone.h"
 
 #define dout_context g_ceph_context
 #define dout_subsys ceph_subsys_rgw
 
-class RGWPSCreateTopicOp : public RGWDefaultResponseOp {
-protected:
-  std::unique_ptr<RGWUserPubSub> ups;
-  string topic_name;
-  string bucket_name;
-
+// command: PUT /topics/<topic-name>[&push-endpoint=<endpoint>[&<arg1>=<value1>]]
+class RGWPSCreateTopic_ObjStore : public RGWPSCreateTopicOp {
 public:
-  RGWPSCreateTopicOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_topic_create"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_CREATE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSCreateTopicOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  op_ret = ups->create_topic(topic_name);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to create topic, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSCreateTopic_ObjStore_S3 : public RGWPSCreateTopicOp {
-public:
-  explicit RGWPSCreateTopic_ObjStore_S3() {}
-
   int get_params() override {
+    
     topic_name = s->object.name;
+
+    dest.push_endpoint = s->info.args.get("push-endpoint");
+    dest.push_endpoint_args = s->info.args.get_str();
+    // dest object only stores endpoint info
+    // bucket to store events/records will be set only when subscription is created
+    dest.bucket_name = "";
+    dest.oid_prefix = "";
+    dest.arn_topic = topic_name;
+    // the topic ARN will be sent in the reply
+    const rgw::ARN arn(rgw::Partition::aws, rgw::Service::sns, 
+        store->svc.zone->get_zonegroup().get_name(),
+        s->user->user_id.tenant, topic_name);
+    topic_arn = arn.to_string();
     return 0;
   }
-};
-
-class RGWPSListTopicsOp : public RGWOp {
-protected:
-  std::unique_ptr<RGWUserPubSub> ups;
-  rgw_pubsub_user_topics result;
 
+  void send_response() override {
+    if (op_ret) {
+      set_req_state_err(s, op_ret);
+    }
+    dump_errno(s);
+    end_header(s, this, "application/json");
 
-public:
-  RGWPSListTopicsOp() {}
+    if (op_ret < 0) {
+      return;
+    }
 
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
+    {
+      Formatter::ObjectSection section(*s->formatter, "result");
+      encode_json("arn", topic_arn, s->formatter);
+    }
+    rgw_flush_formatter_and_reset(s, s->formatter);
   }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_topics_list"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPICS_LIST; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
 };
 
-void RGWPSListTopicsOp::execute()
-{
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  op_ret = ups->get_user_topics(&result);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to get topics, ret=" << op_ret << dendl;
-    return;
-  }
-
-}
-
-class RGWPSListTopics_ObjStore_S3 : public RGWPSListTopicsOp {
+// command: GET /topics
+class RGWPSListTopics_ObjStore : public RGWPSListTopicsOp {
 public:
-  explicit RGWPSListTopics_ObjStore_S3() {}
-
   void send_response() override {
     if (op_ret) {
       set_req_state_err(s, op_ret);
@@ -109,47 +77,9 @@ public:
   }
 };
 
-class RGWPSGetTopicOp : public RGWOp {
-protected:
-  string topic_name;
-  std::unique_ptr<RGWUserPubSub> ups;
-  rgw_pubsub_topic_subs result;
-
+// command: GET /topics/<topic-name>
+class RGWPSGetTopic_ObjStore : public RGWPSGetTopicOp {
 public:
-  RGWPSGetTopicOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_topic_get"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_GET; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSGetTopicOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  op_ret = ups->get_topic(topic_name, &result);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to get topic, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSGetTopic_ObjStore_S3 : public RGWPSGetTopicOp {
-public:
-  explicit RGWPSGetTopic_ObjStore_S3() {}
-
   int get_params() override {
     topic_name = s->object.name;
     return 0;
@@ -171,204 +101,89 @@ public:
   }
 };
 
-class RGWPSDeleteTopicOp : public RGWDefaultResponseOp {
-protected:
-  string topic_name;
-  std::unique_ptr<RGWUserPubSub> ups;
-
+// command: DELETE /topics/<topic-name>
+class RGWPSDeleteTopic_ObjStore : public RGWPSDeleteTopicOp {
 public:
-  RGWPSDeleteTopicOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_topic_delete"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_TOPIC_DELETE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSDeleteTopicOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  op_ret = ups->remove_topic(topic_name);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to remove topic, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSDeleteTopic_ObjStore_S3 : public RGWPSDeleteTopicOp {
-public:
-  explicit RGWPSDeleteTopic_ObjStore_S3() {}
-
   int get_params() override {
     topic_name = s->object.name;
     return 0;
   }
 };
 
-class RGWHandler_REST_PSTopic_S3 : public RGWHandler_REST_S3 {
+// ceph specifc topics handler factory
+class RGWHandler_REST_PSTopic : public RGWHandler_REST_S3 {
 protected:
   int init_permissions(RGWOp* op) override {
     return 0;
   }
+
   int read_permissions(RGWOp* op) override {
     return 0;
   }
+
   bool supports_quota() override {
     return false;
   }
+
   RGWOp *op_get() override {
     if (s->init_state.url_bucket.empty()) {
       return nullptr;
     }
     if (s->object.empty()) {
-      return new RGWPSListTopics_ObjStore_S3();
+      return new RGWPSListTopics_ObjStore();
     }
-    return new RGWPSGetTopic_ObjStore_S3();
+    return new RGWPSGetTopic_ObjStore();
   }
   RGWOp *op_put() override {
     if (!s->object.empty()) {
-      return new RGWPSCreateTopic_ObjStore_S3();
+      return new RGWPSCreateTopic_ObjStore();
     }
     return nullptr;
   }
   RGWOp *op_delete() override {
     if (!s->object.empty()) {
-      return new RGWPSDeleteTopic_ObjStore_S3();
+      return new RGWPSDeleteTopic_ObjStore();
     }
     return nullptr;
   }
 public:
-  explicit RGWHandler_REST_PSTopic_S3(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
-  virtual ~RGWHandler_REST_PSTopic_S3() {}
+  explicit RGWHandler_REST_PSTopic(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
+  virtual ~RGWHandler_REST_PSTopic() = default;
 };
 
-
-class RGWPSCreateSubOp : public RGWDefaultResponseOp {
-protected:
-  string sub_name;
-  string topic_name;
-  std::unique_ptr<RGWUserPubSub> ups;
-  rgw_pubsub_sub_dest dest;
-
+// command: PUT /subscriptions/<sub-name>?topic=<topic-name>[&push-endpoint=<endpoint>[&<arg1>=<value1>]]...
+class RGWPSCreateSub_ObjStore : public RGWPSCreateSubOp {
 public:
-  RGWPSCreateSubOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_subscription_create"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_CREATE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSCreateSubOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto sub = ups->get_sub(sub_name);
-  op_ret = sub->subscribe(topic_name, dest);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to create subscription, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSCreateSub_ObjStore_S3 : public RGWPSCreateSubOp {
-public:
-  explicit RGWPSCreateSub_ObjStore_S3() {}
-
   int get_params() override {
     sub_name = s->object.name;
 
     bool exists;
-
     topic_name = s->info.args.get("topic", &exists);
     if (!exists) {
-      ldout(s->cct, 20) << "ERROR: missing required param 'topic' for request" << dendl;
+      ldout(s->cct, 1) << "missing required param 'topic'" << dendl;
       return -EINVAL;
     }
 
-    auto psmodule = static_cast<RGWPSSyncModuleInstance *>(store->get_sync_module().get());
-    auto conf = psmodule->get_effective_conf();
+    const auto psmodule = static_cast<RGWPSSyncModuleInstance*>(store->get_sync_module().get());
+    const auto& conf = psmodule->get_effective_conf();
 
     dest.push_endpoint = s->info.args.get("push-endpoint");
     dest.bucket_name = string(conf["data_bucket_prefix"]) + s->owner.get_id().to_str() + "-" + topic_name;
     dest.oid_prefix = string(conf["data_oid_prefix"]) + sub_name + "/";
     dest.push_endpoint_args = s->info.args.get_str();
+    dest.arn_topic = topic_name;
 
     return 0;
   }
 };
 
-class RGWPSGetSubOp : public RGWOp {
-protected:
-  string sub_name;
-  std::unique_ptr<RGWUserPubSub> ups;
-  rgw_pubsub_sub_config result;
-
-public:
-  RGWPSGetSubOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_subscription_get"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_GET; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSGetSubOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto sub = ups->get_sub(sub_name);
-  op_ret = sub->get_conf(&result);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to get subscription, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSGetSub_ObjStore_S3 : public RGWPSGetSubOp {
+// command: GET /subscriptions/<sub-name>
+class RGWPSGetSub_ObjStore : public RGWPSGetSubOp {
 public:
-  explicit RGWPSGetSub_ObjStore_S3() {}
-
   int get_params() override {
     sub_name = s->object.name;
     return 0;
   }
-
   void send_response() override {
     if (op_ret) {
       set_req_state_err(s, op_ret);
@@ -380,58 +195,14 @@ public:
       return;
     }
 
-    {
-      Formatter::ObjectSection section(*s->formatter, "result");
-      encode_json("topic", result.topic, s->formatter);
-      encode_json("push_endpoint", result.dest.push_endpoint, s->formatter);
-      encode_json("args", result.dest.push_endpoint_args, s->formatter);
-    }
+    encode_json("result", result, s->formatter);
     rgw_flush_formatter_and_reset(s, s->formatter);
   }
 };
 
-class RGWPSDeleteSubOp : public RGWDefaultResponseOp {
-protected:
-  string sub_name;
-  string topic_name;
-  std::unique_ptr<RGWUserPubSub> ups;
-
-public:
-  RGWPSDeleteSubOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_subscription_delete"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_DELETE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSDeleteSubOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto sub = ups->get_sub(sub_name);
-  op_ret = sub->unsubscribe(topic_name);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to remove subscription, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSDeleteSub_ObjStore_S3 : public RGWPSDeleteSubOp {
+// command: DELETE /subscriptions/<sub-name>
+class RGWPSDeleteSub_ObjStore : public RGWPSDeleteSubOp {
 public:
-  explicit RGWPSDeleteSub_ObjStore_S3() {}
-
   int get_params() override {
     sub_name = s->object.name;
     topic_name = s->info.args.get("topic");
@@ -439,47 +210,10 @@ public:
   }
 };
 
-class RGWPSAckSubEventOp : public RGWDefaultResponseOp {
-protected:
-  string sub_name;
-  string event_id;
-  std::unique_ptr<RGWUserPubSub> ups;
-
+// command: POST /subscriptions/<sub-name>?ack&event-id=<event-id>
+class RGWPSAckSubEvent_ObjStore : public RGWPSAckSubEventOp {
 public:
-  RGWPSAckSubEventOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_subscription_ack"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_ACK; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSAckSubEventOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto sub = ups->get_sub(sub_name);
-  op_ret = sub->remove_event(event_id);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to ack event, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSAckSubEvent_ObjStore_S3 : public RGWPSAckSubEventOp {
-public:
-  explicit RGWPSAckSubEvent_ObjStore_S3() {}
+  explicit RGWPSAckSubEvent_ObjStore() {}
 
   int get_params() override {
     sub_name = s->object.name;
@@ -488,64 +222,23 @@ public:
 
     event_id = s->info.args.get("event-id", &exists);
     if (!exists) {
-      ldout(s->cct, 20) << "ERROR: missing required param 'event-id' for request" << dendl;
+      ldout(s->cct, 1) << "missing required param 'event-id'" << dendl;
       return -EINVAL;
     }
     return 0;
   }
 };
 
-class RGWPSPullSubEventsOp : public RGWOp {
-protected:
-  int max_entries{0};
-  string sub_name;
-  string marker;
-  std::unique_ptr<RGWUserPubSub> ups;
-  RGWUserPubSub::Sub::list_events_result result;
-
-public:
-  RGWPSPullSubEventsOp() {}
-
-  int verify_permission() override {
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
-  void execute() override;
-
-  const char* name() const override { return "pubsub_subscription_pull"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_SUB_PULL; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSPullSubEventsOp::execute()
-{
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto sub = ups->get_sub(sub_name);
-  op_ret = sub->list_events(marker, max_entries, &result);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to get subscription, ret=" << op_ret << dendl;
-    return;
-  }
-}
-
-class RGWPSPullSubEvents_ObjStore_S3 : public RGWPSPullSubEventsOp {
+// command: GET /subscriptions/<sub-name>?events[&max-entries=<max-entries>][&marker=<marker>]
+class RGWPSPullSubEvents_ObjStore : public RGWPSPullSubEventsOp {
 public:
-  explicit RGWPSPullSubEvents_ObjStore_S3() {}
-
   int get_params() override {
     sub_name = s->object.name;
     marker = s->info.args.get("marker");
-#define DEFAULT_MAX_ENTRIES 100
-    int ret = s->info.args.get_int("max-entries", &max_entries, DEFAULT_MAX_ENTRIES);
+    const int ret = s->info.args.get_int("max-entries", &max_entries, 
+        RGWUserPubSub::Sub::DEFAULT_MAX_EVENTS);
     if (ret < 0) {
-      ldout(s->cct, 20) << "failed to parse 'max-entries' param" << dendl;
+      ldout(s->cct, 1) << "failed to parse 'max-entries' param" << dendl;
       return -EINVAL;
     }
     return 0;
@@ -562,12 +255,13 @@ public:
       return;
     }
 
-    encode_json("result", result, s->formatter);
+    encode_json("result", *sub, s->formatter);
     rgw_flush_formatter_and_reset(s, s->formatter);
   }
 };
 
-class RGWHandler_REST_PSSub_S3 : public RGWHandler_REST_S3 {
+// subscriptions handler factory
+class RGWHandler_REST_PSSub : public RGWHandler_REST_S3 {
 protected:
   int init_permissions(RGWOp* op) override {
     return 0;
@@ -584,36 +278,37 @@ protected:
       return nullptr;
     }
     if (s->info.args.exists("events")) {
-      return new RGWPSPullSubEvents_ObjStore_S3();
+      return new RGWPSPullSubEvents_ObjStore();
     }
-    return new RGWPSGetSub_ObjStore_S3();
+    return new RGWPSGetSub_ObjStore();
   }
   RGWOp *op_put() override {
     if (!s->object.empty()) {
-      return new RGWPSCreateSub_ObjStore_S3();
+      return new RGWPSCreateSub_ObjStore();
     }
     return nullptr;
   }
   RGWOp *op_delete() override {
     if (!s->object.empty()) {
-      return new RGWPSDeleteSub_ObjStore_S3();
+      return new RGWPSDeleteSub_ObjStore();
     }
     return nullptr;
   }
   RGWOp *op_post() override {
     if (s->info.args.exists("ack")) {
-      return new RGWPSAckSubEvent_ObjStore_S3();
+      return new RGWPSAckSubEvent_ObjStore();
     }
     return nullptr;
   }
 public:
-  explicit RGWHandler_REST_PSSub_S3(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
-  virtual ~RGWHandler_REST_PSSub_S3() {}
+  explicit RGWHandler_REST_PSSub(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
+  virtual ~RGWHandler_REST_PSSub() = default;
 };
 
-
-static int notif_bucket_path(const string& path, string *bucket_name)
-{
+namespace {
+// extract bucket name from ceph specific notification command, with the format:
+// /notifications/<bucket-name>
+int notif_bucket_path(const string& path, std::string& bucket_name) {
   if (path.empty()) {
     return -EINVAL;
   }
@@ -630,218 +325,103 @@ static int notif_bucket_path(const string& path, string *bucket_name)
     return -EINVAL;
   }
 
-  *bucket_name = path.substr(pos + 1);
+  bucket_name = path.substr(pos + 1);
   return 0;
 }
+}
 
-class RGWPSCreateNotifOp : public RGWDefaultResponseOp {
-protected:
-  std::unique_ptr<RGWUserPubSub> ups;
-  string topic_name;
-  set<string, ltstr_nocase> events;
-
-  string bucket_name;
-  RGWBucketInfo bucket_info;
-
-public:
-  RGWPSCreateNotifOp() {}
+// command (ceph specific): PUT /notification/bucket/<bucket name>?topic=<topic name>
+class RGWPSCreateNotif_ObjStore : public RGWPSCreateNotifOp {
+private:
+  std::string topic_name;
+  rgw::notify::EventTypeList events;
 
-  int verify_permission() override {
-    int ret = get_params();
-    if (ret < 0) {
-      return ret;
+  int get_params() override {
+    bool exists;
+    topic_name = s->info.args.get("topic", &exists);
+    if (!exists) {
+      ldout(s->cct, 1) << "missing required param 'topic'" << dendl;
+      return -EINVAL;
     }
 
-    ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
-                                 bucket_info, nullptr, nullptr);
-    if (ret < 0) {
-      return ret;
+    std::string events_str = s->info.args.get("events", &exists);
+    if (!exists) {
+      // if no events are provided, we notify on all of them
+      events_str = "OBJECT_CREATE,OBJECT_DELETE,DELETE_MARKER_CREATE";
     }
-
-    if (bucket_info.owner != s->owner.get_id()) {
-      ldout(s->cct, 20) << "user doesn't own bucket, cannot create topic" << dendl;
-      return -EPERM;
+    rgw::notify::from_string_list(events_str, events);
+    if (std::find(events.begin(), events.end(), rgw::notify::UnknownEvent) != events.end()) {
+      ldout(s->cct, 1) << "invalid event type in list: " << events_str << dendl;
+      return -EINVAL;
     }
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
+    return notif_bucket_path(s->object.name, bucket_name);
   }
-  void execute() override;
 
+public:
   const char* name() const override { return "pubsub_notification_create"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_CREATE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_WRITE; }
-  virtual int get_params() = 0;
+  void execute() override;
 };
 
-void RGWPSCreateNotifOp::execute()
+void RGWPSCreateNotif_ObjStore::execute()
 {
-  op_ret = get_params();
-  if (op_ret < 0) {
-    return;
-  }
+  ups.emplace(store, s->owner.get_id());
 
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
   auto b = ups->get_bucket(bucket_info.bucket);
   op_ret = b->create_notification(topic_name, events);
   if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to create notification, ret=" << op_ret << dendl;
+    ldout(s->cct, 1) << "failed to create notification for topic '" << topic_name << "', ret=" << op_ret << dendl;
     return;
   }
+  ldout(s->cct, 20) << "successfully created notification for topic '" << topic_name << "'" << dendl;
 }
 
-class RGWPSCreateNotif_ObjStore_S3 : public RGWPSCreateNotifOp {
-public:
-  explicit RGWPSCreateNotif_ObjStore_S3() {}
+// command: DELETE /notifications/bucket/<bucket>?topic=<topic-name>
+class RGWPSDeleteNotif_ObjStore : public RGWPSDeleteNotifOp {
+private:
+  std::string topic_name;
 
   int get_params() override {
     bool exists;
     topic_name = s->info.args.get("topic", &exists);
     if (!exists) {
-      ldout(s->cct, 20) << "param 'topic' not provided" << dendl;
+      ldout(s->cct, 1) << "missing required param 'topic'" << dendl;
       return -EINVAL;
     }
-
-    string events_str = s->info.args.get("events", &exists);
-    if (exists) {
-      get_str_set(events_str, ",", events);
-    }
-    return notif_bucket_path(s->object.name, &bucket_name);
+    return notif_bucket_path(s->object.name, bucket_name);
   }
-};
-
-class RGWPSDeleteNotifOp : public RGWDefaultResponseOp {
-protected:
-  std::unique_ptr<RGWUserPubSub> ups;
-  string topic_name;
-  string bucket_name;
-  RGWBucketInfo bucket_info;
 
 public:
-  RGWPSDeleteNotifOp() {}
-
-  int verify_permission() override {
-    int ret = get_params();
-    if (ret < 0) {
-      return ret;
-    }
-
-    ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
-                                 bucket_info, nullptr, nullptr);
-    if (ret < 0) {
-      return ret;
-    }
-
-    if (bucket_info.owner != s->owner.get_id()) {
-      ldout(s->cct, 20) << "user doesn't own bucket, cannot create topic" << dendl;
-      return -EPERM;
-    }
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
   void execute() override;
-
   const char* name() const override { return "pubsub_notification_delete"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_DELETE; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_DELETE; }
-  virtual int get_params() = 0;
 };
 
-void RGWPSDeleteNotifOp::execute()
-{
+void RGWPSDeleteNotif_ObjStore::execute() {
   op_ret = get_params();
   if (op_ret < 0) {
     return;
   }
 
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
+  ups.emplace(store, s->owner.get_id());
   auto b = ups->get_bucket(bucket_info.bucket);
   op_ret = b->remove_notification(topic_name);
   if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to remove notification, ret=" << op_ret << dendl;
+    ldout(s->cct, 1) << "failed to remove notification from topic '" << topic_name << "', ret=" << op_ret << dendl;
     return;
   }
+  ldout(s->cct, 20) << "successfully removed notification from topic '" << topic_name << "'" << dendl;
 }
 
-class RGWPSDeleteNotif_ObjStore_S3 : public RGWPSCreateNotifOp {
-public:
-  explicit RGWPSDeleteNotif_ObjStore_S3() {}
+// command: GET /notifications/bucket/<bucket>
+class RGWPSListNotifs_ObjStore : public RGWPSListNotifsOp {
+private:
+  rgw_pubsub_bucket_topics result;
 
   int get_params() override {
-    bool exists;
-    topic_name = s->info.args.get("topic", &exists);
-    if (!exists) {
-      ldout(s->cct, 20) << "param 'topic' not provided" << dendl;
-      return -EINVAL;
-    }
-    return notif_bucket_path(s->object.name, &bucket_name);
+    return notif_bucket_path(s->object.name, bucket_name);
   }
-};
-
-class RGWPSListNotifsOp : public RGWOp {
-protected:
-  string bucket_name;
-  RGWBucketInfo bucket_info;
-  std::unique_ptr<RGWUserPubSub> ups;
-  rgw_pubsub_bucket_topics result;
-
 
 public:
-  RGWPSListNotifsOp() {}
-
-  int verify_permission() override {
-    int ret = get_params();
-    if (ret < 0) {
-      return ret;
-    }
-
-    ret = store->get_bucket_info(*s->sysobj_ctx, s->owner.get_id().tenant, bucket_name,
-                                 bucket_info, nullptr, nullptr);
-    if (ret < 0) {
-      return ret;
-    }
-
-    if (bucket_info.owner != s->owner.get_id()) {
-      ldout(s->cct, 20) << "user doesn't own bucket, cannot create topic" << dendl;
-      return -EPERM;
-    }
-
-    return 0;
-  }
-  void pre_exec() override {
-    rgw_bucket_object_pre_exec(s);
-  }
   void execute() override;
-
-  const char* name() const override { return "pubsub_notifications_list"; }
-  virtual RGWOpType get_type() override { return RGW_OP_PUBSUB_NOTIF_LIST; }
-  virtual uint32_t op_mask() override { return RGW_OP_TYPE_READ; }
-  virtual int get_params() = 0;
-};
-
-void RGWPSListNotifsOp::execute()
-{
-  ups = make_unique<RGWUserPubSub>(store, s->owner.get_id());
-  auto b = ups->get_bucket(bucket_info.bucket);
-  op_ret = b->get_topics(&result);
-  if (op_ret < 0) {
-    ldout(s->cct, 20) << "failed to get topics, ret=" << op_ret << dendl;
-    return;
-  }
-
-}
-
-class RGWPSListNotifs_ObjStore_S3 : public RGWPSListNotifsOp {
-public:
-  explicit RGWPSListNotifs_ObjStore_S3() {}
-
-  int get_params() override {
-    return notif_bucket_path(s->object.name, &bucket_name);
-  }
-
   void send_response() override {
     if (op_ret) {
       set_req_state_err(s, op_ret);
@@ -852,14 +432,25 @@ public:
     if (op_ret < 0) {
       return;
     }
-
     encode_json("result", result, s->formatter);
     rgw_flush_formatter_and_reset(s, s->formatter);
   }
+  const char* name() const override { return "pubsub_notifications_list"; }
 };
 
+void RGWPSListNotifs_ObjStore::execute()
+{
+  ups.emplace(store, s->owner.get_id());
+  auto b = ups->get_bucket(bucket_info.bucket);
+  op_ret = b->get_topics(&result);
+  if (op_ret < 0) {
+    ldout(s->cct, 1) << "failed to get topics, ret=" << op_ret << dendl;
+    return;
+  }
+}
 
-class RGWHandler_REST_PSNotifs_S3 : public RGWHandler_REST_S3 {
+// ceph specific notification handler factory
+class RGWHandler_REST_PSNotifs : public RGWHandler_REST_S3 {
 protected:
   int init_permissions(RGWOp* op) override {
     return 0;
@@ -875,52 +466,53 @@ protected:
     if (s->object.empty()) {
       return nullptr;
     }
-    return new RGWPSListNotifs_ObjStore_S3();
+    return new RGWPSListNotifs_ObjStore();
   }
   RGWOp *op_put() override {
     if (!s->object.empty()) {
-      return new RGWPSCreateNotif_ObjStore_S3();
+      return new RGWPSCreateNotif_ObjStore();
     }
     return nullptr;
   }
   RGWOp *op_delete() override {
     if (!s->object.empty()) {
-      return new RGWPSDeleteNotif_ObjStore_S3();
+      return new RGWPSDeleteNotif_ObjStore();
     }
     return nullptr;
   }
 public:
-  explicit RGWHandler_REST_PSNotifs_S3(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
-  virtual ~RGWHandler_REST_PSNotifs_S3() {}
+  explicit RGWHandler_REST_PSNotifs(const rgw::auth::StrategyRegistry& auth_registry) : RGWHandler_REST_S3(auth_registry) {}
+  virtual ~RGWHandler_REST_PSNotifs() = default;
 };
 
-
-RGWHandler_REST* RGWRESTMgr_PubSub_S3::get_handler(struct req_state* const s,
+// factory for ceph specific PubSub REST handlers 
+RGWHandler_REST* RGWRESTMgr_PubSub::get_handler(struct req_state* const s,
                                                      const rgw::auth::StrategyRegistry& auth_registry,
                                                      const std::string& frontend_prefix)
 {
-  int ret =
-    RGWHandler_REST_S3::init_from_header(s,
-                                       RGW_FORMAT_JSON, true);
-  if (ret < 0) {
+  if (RGWHandler_REST_S3::init_from_header(s, RGW_FORMAT_JSON, true) < 0) {
     return nullptr;
   }
+  RGWHandler_REST* handler{nullptr};
 
-  RGWHandler_REST *handler = nullptr;;
-
+  // ceph specific PubSub API: topics/subscriptions/notification are reserved bucket names
+  // this API is available only on RGW that belong to a pubsub zone
   if (s->init_state.url_bucket == "topics") {
-    handler = new RGWHandler_REST_PSTopic_S3(auth_registry);
-  }
-
-  if (s->init_state.url_bucket == "subscriptions") {
-    handler = new RGWHandler_REST_PSSub_S3(auth_registry);
-  }
-
-  if (s->init_state.url_bucket == "notifications") {
-    handler = new RGWHandler_REST_PSNotifs_S3(auth_registry);
-  }
-
+    handler = new RGWHandler_REST_PSTopic(auth_registry);
+  } else if (s->init_state.url_bucket == "subscriptions") {
+    handler = new RGWHandler_REST_PSSub(auth_registry);
+  } else if (s->init_state.url_bucket == "notifications") {
+    handler = new RGWHandler_REST_PSNotifs(auth_registry);
+  } else if (s->info.args.exists("notification")) {
+    const int ret = RGWHandler_REST::allocate_formatter(s, RGW_FORMAT_XML, true);
+    if (ret == 0) {
+        handler = new RGWHandler_REST_PSNotifs_S3(auth_registry);
+    }
+  }
+  
   ldout(s->cct, 20) << __func__ << " handler=" << (handler ? typeid(*handler).name() : "<null>") << dendl;
+
   return handler;
 }
 
index 120cb3d3cd98ccbab5e1f0317e2733a458c3464a..92fd8fe7e3ff43c08dfca470ee7386fb529d8617 100644 (file)
@@ -3,12 +3,9 @@
 
 #include "rgw_rest.h"
 
-class RGWRESTMgr_PubSub_S3 : public RGWRESTMgr {
-  RGWRESTMgr *next;
+class RGWRESTMgr_PubSub : public RGWRESTMgr {
 public:
-  explicit RGWRESTMgr_PubSub_S3(RGWRESTMgr *_next) : next(_next) {}
-
-  RGWHandler_REST *get_handler(struct req_state* s,
+  virtual RGWHandler_REST* get_handler(struct req_state* s,
                                const rgw::auth::StrategyRegistry& auth_registry,
                                const std::string& frontend_prefix) override;
 };
index df93659d39c71bd98859d1a392f184a46dc4a87d..3d369cce0c4bfd942535e5675960426bf0750e61 100644 (file)
@@ -743,6 +743,7 @@ static void dump_user_info(Formatter *f, RGWUserInfo &info,
   op_type_to_str(info.op_mask, buf, sizeof(buf));
   encode_json("op_mask", (const char *)buf, f);
   encode_json("system", (bool)info.system, f);
+  encode_json("admin", (bool)info.admin, f);
   encode_json("default_placement", info.default_placement.name, f);
   encode_json("default_storage_class", info.default_placement.storage_class, f);
   encode_json("placement_tags", info.placement_tags, f);
index a546b349fc734961c20b6afa5fbff46e0b276c19..13a3b1de9e36c137f9209d07163ad9c282b715cb 100644 (file)
@@ -107,8 +107,11 @@ bool RGWBucketWebsiteConf::should_redirect(const string& key, const int http_err
   return true;
 }
 
-void RGWBucketWebsiteConf::get_effective_key(const string& key, string *effective_key, bool is_file) const
+bool RGWBucketWebsiteConf::get_effective_key(const string& key, string *effective_key, bool is_file) const
 {
+  if (index_doc_suffix.empty()) {
+    return false;
+  }
 
   if (key.empty()) {
     *effective_key = index_doc_suffix;
@@ -119,4 +122,6 @@ void RGWBucketWebsiteConf::get_effective_key(const string& key, string *effectiv
   } else {
     *effective_key = key;
   }
+
+  return true;
 }
index fb6a2d4d9468a0c5176927323f4bfe9abb2adc5e..8366f39c02c69793fc94ae91eacb114224384214 100644 (file)
@@ -182,10 +182,14 @@ struct RGWBucketWebsiteConf
   std::string subdir_marker;
   std::string listing_css_doc;
   bool listing_enabled;
+  bool is_redirect_all;
+  bool is_set_index_doc;
   RGWBWRoutingRules routing_rules;
 
   RGWBucketWebsiteConf()
     : listing_enabled(false) {
+    is_redirect_all = false;
+    is_set_index_doc = false;
   }
 
   void encode(bufferlist& bl) const {
@@ -222,7 +226,7 @@ struct RGWBucketWebsiteConf
                        const int http_error_code,
                        RGWBWRoutingRule *redirect);
 
-  void get_effective_key(const std::string& key,
+  bool get_effective_key(const std::string& key,
                          std::string *effective_key, bool is_file) const;
 
   const std::string& get_index_doc() const {
index 44a9364b8028b027afeb3c8136683c42de34284e..1b9d250a7a6ccde07132a40d91e52b37cc4dfd60 100644 (file)
@@ -116,11 +116,13 @@ void decode_xml_obj(list<RGWBWRoutingRule>& l, XMLObj *obj)
 void RGWBucketWebsiteConf::decode_xml(XMLObj *obj) {
   XMLObj *o = obj->find_first("RedirectAllRequestsTo");
   if (o) {
+    is_redirect_all = true;
     RGWXMLDecoder::decode_xml("HostName", redirect_all.hostname, o, true);
     RGWXMLDecoder::decode_xml("Protocol", redirect_all.protocol, o);
   } else {
     o = obj->find_first("IndexDocument");
     if (o) {
+      is_set_index_doc = true;
       RGWXMLDecoder::decode_xml("Suffix", index_doc_suffix, o);
     }
     o = obj->find_first("ErrorDocument");
index 7c9f414ca17da38be0e34ce56013729a30f72296..4dee08bd5f32944e8e467d6d584d9dc51f267a8b 100644 (file)
@@ -1759,7 +1759,7 @@ const string& RGWZoneParams::get_compression_type(const rgw_placement_rule& plac
   if (p == placement_pools.end()) {
     return NONE;
   }
-  const auto& type = p->second.get_compression_type(placement_rule.storage_class);
+  const auto& type = p->second.get_compression_type(placement_rule.get_storage_class());
   return !type.empty() ? type : NONE;
 }
 
index 8e62a310f75ebfcc776484d7cc61ba11d6bb38a9..cf1b7f266d7e19cc6b84e4ac45878ea569e32d23 100755 (executable)
 # filesystem, etc.). Without correct values for these four variables, this
 # script will not work!
 #
+#
+
+function deprecation_warning {
+    echo "*******************"
+    echo "DEPRECATION WARNING"
+    echo "*******************"
+    echo
+    echo "This is an outdated, unmaintained version of ceph-backport.sh. Using this"
+    echo "version can have unpredictable results. It is recommended to use the"
+    echo "version from the \"master\" branch, instead. In other words, use this:"
+    echo
+    echo "https://github.com/ceph/ceph/blob/master/src/script/ceph-backport.sh"
+    echo
+}
+
+if [[ "$@" =~ "--version" ]] ; then
+    deprecation_warning
+    echo "$0: version 14.2.0 (DEPRECATED - DO NOT USE)"
+    exit 0
+fi
+
+deprecation_warning
+echo "Sleeping for 5 seconds to give you time to hit CTRL-C..."
+sleep 5
+
 source $HOME/bin/backport_common.sh
 
 function failed_required_variable_check () {
index cbc024d769171ac03c78312e34ff2b75d5641215..da50ae67365e55b9d6fd492e02831be6acbc7348 100644 (file)
@@ -84,42 +84,41 @@ matrix:
           sources:
             - ubuntu-toolchain-r-test
       # Android
-#    - language: android
-#      android:
-#      addons:
-#        apt:
-#          update: true
-#      components:
-#        - tools
-#        - platform-tools
-#        - android-21
-#        - sys-img-armeabi-v7a-android-21
-#      env:
-#        - ANDROID=true
-#      before_install:
-#        - git submodule update --init --recursive
-#        - sudo apt-get install wget unzip tree
-#      install:
-#        # Accept SDK Licenses + Install NDK
-#        - yes | sdkmanager --update > /dev/null 2>&1
-#        - sdkmanager ndk-bundle > /dev/null 2>&1
-#        # Download Gradle 4.3.1 
-#        - wget https://services.gradle.org/distributions/gradle-4.3.1-bin.zip
-#        - mkdir -p gradle
-#        - unzip -q -d ./gradle gradle-4.3.1-bin.zip
-#        - export GRADLE=${TRAVIS_BUILD_DIR}/gradle/gradle-4.3.1/bin/gradle
-#      before_script:
-#        - bash $GRADLE --version
-#        - cd ./support
-#      script:
-#        - bash $GRADLE clean assemble
-#      after_success:
-#        - cd ${TRAVIS_BUILD_DIR}
-#        - tree ./libs
-  allow_failures:
-      # Errors
-    - env: COMPILER=g++-4.4 BUILD=Debug STANDARD=11
-      compiler: gcc
+    - language: android
+      addons:
+        apt:
+          update: true
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - wget
+            - unzip
+            - tree
+      android:
+        components:
+          - tools
+          - platform-tools
+          - android-21
+      env:
+        - ANDROID=true
+      before_install:
+        # Download/Install Gradle 
+        - wget https://services.gradle.org/distributions/gradle-4.10.2-bin.zip
+        - mkdir -p gradle
+        - unzip -q -d ./gradle gradle-4.10.2-bin.zip
+        - export GRADLE=gradle/gradle-4.10.2/bin/gradle
+        - bash $GRADLE --version
+      install:
+        # Accept SDK Licenses + Install NDK
+        - yes | sdkmanager --update > /dev/null 2>&1
+        - sdkmanager ndk-bundle > /dev/null 2>&1
+      before_script:
+        - pushd ./support
+      script:
+        - bash ../$GRADLE clean assemble
+      after_success:
+        - popd;
+        - tree ./libs
 
 before_script:
   - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then export CXX=${COMPILER}; fi
index f872e3c909d0d9f5368926f763a2c7c87517d0f0..2b443a158502bb0525f85fabde6181eb0495b219 100644 (file)
@@ -68,13 +68,13 @@ include(CheckCXXCompilerFlag)
 
 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
   set(PEDANTIC_COMPILE_FLAGS -pedantic-errors -Wall -Wextra -pedantic
-      -Wold-style-cast -Wfloat-equal -Wlogical-op -Wundef
-      -Wredundant-decls -Wshadow -Wwrite-strings -Wpointer-arith
+      -Wold-style-cast -Wundef
+      -Wredundant-decls -Wwrite-strings -Wpointer-arith
       -Wcast-qual -Wformat=2 -Wmissing-include-dirs
       -Wcast-align -Wnon-virtual-dtor
       -Wctor-dtor-privacy -Wdisabled-optimization
       -Winvalid-pch -Woverloaded-virtual
-      -Wno-ctor-dtor-privacy -Wno-dangling-else -Wno-float-equal
+      -Wno-ctor-dtor-privacy -Wno-dangling-else
       -Wno-format-nonliteral -Wno-sign-conversion -Wno-shadow)
   if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
       set(PEDANTIC_COMPILE_FLAGS ${PEDANTIC_COMPILE_FLAGS} -Wnoexcept)
@@ -88,29 +88,17 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
       set(PEDANTIC_COMPILE_FLAGS ${PEDANTIC_COMPILE_FLAGS} -Wshift-overflow=2
           -Wnull-dereference -Wduplicated-cond)
   endif ()
-
   set(WERROR_FLAG -Werror)
 endif ()
 
 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  set(PEDANTIC_COMPILE_FLAGS -Weverything -Wpedantic
-      -Wno-weak-vtables -Wno-padded -Wno-gnu-statement-expression
-      -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-reserved-id-macro
-      -Wno-global-constructors -Wno-disabled-macro-expansion
-      -Wno-switch-enum -Wno-documentation-unknown-command
-      -Wno-unused-member-function
-      -Wno-format-nonliteral -Wno-missing-noreturn -Wno-undefined-func-template
-      -Wno-shadow -Wno-sign-conversion -Wno-used-but-marked-unused
-      -Wno-covered-switch-default -Wno-missing-prototypes
-      -Wno-missing-variable-declarations -Wno-double-promotion)
-
-  set(WERROR_FLAG -Werror)
-
-  check_cxx_compiler_flag(-Wno-zero-as-null-pointer-constant HAS_NULLPTR_WARNING)
+  set(PEDANTIC_COMPILE_FLAGS -Wall -Wextra -pedantic)
+  check_cxx_compiler_flag(-Wzero-as-null-pointer-constant HAS_NULLPTR_WARNING)
   if (HAS_NULLPTR_WARNING)
     set(PEDANTIC_COMPILE_FLAGS ${PEDANTIC_COMPILE_FLAGS}
-        -Wno-zero-as-null-pointer-constant)
+        -Wzero-as-null-pointer-constant)
   endif ()
+  set(WERROR_FLAG -Werror)
 endif ()
 
 if (MSVC)
@@ -150,8 +138,8 @@ function(add_headers VAR)
 endfunction()
 
 # Define the fmt library, its includes and the needed defines.
-add_headers(FMT_HEADERS color.h core.h format.h format-inl.h ostream.h printf.h
-                        time.h ranges.h)
+add_headers(FMT_HEADERS chrono.h color.h core.h format.h format-inl.h locale.h
+                        ostream.h printf.h time.h ranges.h)
 set(FMT_SOURCES src/format.cc)
 if (HAVE_OPEN)
   add_headers(FMT_HEADERS posix.h)
@@ -202,6 +190,7 @@ if (FMT_INSTALL)
     "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.")
   set(version_config ${PROJECT_BINARY_DIR}/fmt-config-version.cmake)
   set(project_config ${PROJECT_BINARY_DIR}/fmt-config.cmake)
+  set(pkgconfig ${PROJECT_BINARY_DIR}/fmt.pc)
   set(targets_export_name fmt-targets)
 
   set (INSTALL_TARGETS fmt)
@@ -215,11 +204,18 @@ if (FMT_INSTALL)
   set(FMT_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR}/fmt CACHE STRING
       "Installation directory for include files, relative to ${CMAKE_INSTALL_PREFIX}.")
 
+  set(FMT_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH
+    "Installation directory for pkgconfig (.pc) files, relative to ${CMAKE_INSTALL_PREFIX}.")
+
   # Generate the version, config and target files into the build directory.
   write_basic_package_version_file(
     ${version_config}
     VERSION ${FMT_VERSION}
     COMPATIBILITY AnyNewerVersion)
+  configure_file(
+    "${PROJECT_SOURCE_DIR}/support/cmake/fmt.pc.in"
+    "${pkgconfig}"
+    @ONLY)
   configure_package_config_file(
     ${PROJECT_SOURCE_DIR}/support/cmake/fmt-config.cmake.in
     ${project_config}
@@ -239,7 +235,10 @@ if (FMT_INSTALL)
   # Install the library and headers.
   install(TARGETS ${INSTALL_TARGETS} EXPORT ${targets_export_name}
           DESTINATION ${FMT_LIB_DIR})
+
+  install(FILES $<TARGET_PDB_FILE:${INSTALL_TARGETS}> DESTINATION ${FMT_LIB_DIR} OPTIONAL)
   install(FILES ${FMT_HEADERS} DESTINATION ${FMT_INC_DIR})
+  install(FILES "${pkgconfig}" DESTINATION "${FMT_PKGCONFIG_DIR}")
 endif ()
 
 if (FMT_DOC)
index bd634a4a9fa0afbb5e9a6b9cfee3d90e9846b3f3..3e43b308cc4f29d1797458b8e9fc53d5a0f153b8 100644 (file)
@@ -30,7 +30,7 @@ Features
   of `str.format <https://docs.python.org/2/library/stdtypes.html#str.format>`_
   in Python.
 * Safe `printf implementation
-  <http://fmtlib.net/latest/api.html#printf-formatting-functions>`_ including
+  <http://fmtlib.net/latest/api.html#printf-formatting>`_ including
   the POSIX extension for positional arguments.
 * Support for user-defined types.
 * High speed: performance of the format API is close to that of glibc's `printf
@@ -126,7 +126,7 @@ Formatting of user-defined types is supported via a simple
 
       template <typename FormatContext>
       auto format(const date &d, FormatContext &ctx) {
-        return format_to(ctx.begin(), "{}-{}-{}", d.year, d.month, d.day);
+        return format_to(ctx.out(), "{}-{}-{}", d.year, d.month, d.day);
       }
     };
 
@@ -153,19 +153,27 @@ which take arbitrary arguments (`godbolt <https://godbolt.org/g/MHjHVf>`_):
     report_error("file not found: {}", path);
 
 Note that ``vreport_error`` is not parameterized on argument types which can
-improve compile times and reduce code size compared to fully parameterized version.
+improve compile times and reduce code size compared to fully parameterized
+version.
 
 Projects using this library
 ---------------------------
 
-* `0 A.D. <http://play0ad.com/>`_: A free, open-source, cross-platform real-time strategy game
+* `0 A.D. <http://play0ad.com/>`_: A free, open-source, cross-platform real-time
+  strategy game
 
 * `AMPL/MP <https://github.com/ampl/mp>`_:
   An open-source library for mathematical programming
   
-* `AvioBook <https://www.aviobook.aero/en>`_: A comprehensive aircraft operations suite
+* `AvioBook <https://www.aviobook.aero/en>`_: A comprehensive aircraft
+  operations suite
+  
+* `Celestia <https://celestia.space/>`_: Real-time 3D visualization of space
+
+* `Ceph <https://ceph.com/>`_: A scalable distributed storage system
 
-* `CUAUV <http://cuauv.org/>`_: Cornell University's autonomous underwater vehicle
+* `CUAUV <http://cuauv.org/>`_: Cornell University's autonomous underwater
+  vehicle
 
 * `HarpyWar/pvpgn <https://github.com/pvpgn/pvpgn-server>`_:
   Player vs Player Gaming Network with tweaks
@@ -200,7 +208,11 @@ Projects using this library
 
 * `readpe <https://bitbucket.org/sys_dev/readpe>`_: Read Portable Executable
 
-* `redis-cerberus <https://github.com/HunanTV/redis-cerberus>`_: A Redis cluster proxy
+* `redis-cerberus <https://github.com/HunanTV/redis-cerberus>`_: A Redis cluster
+  proxy
+
+* `rpclib <http://rpclib.net/>`_: A modern C++ msgpack-RPC server and client
+  library
 
 * `Saddy <https://github.com/mamontov-cpp/saddy-graphics-engine-2d>`_:
   Small crossplatform 2D graphic engine
@@ -208,11 +220,11 @@ Projects using this library
 * `Salesforce Analytics Cloud <http://www.salesforce.com/analytics-cloud/overview/>`_:
   Business intelligence software
 
-* `Scylla <http://www.scylladb.com/>`_: A Cassandra-compatible NoSQL data store that can handle
-  1 million transactions per second on a single server
+* `Scylla <http://www.scylladb.com/>`_: A Cassandra-compatible NoSQL data store
+  that can handle 1 million transactions per second on a single server
 
-* `Seastar <http://www.seastar-project.org/>`_: An advanced, open-source C++ framework for
-  high-performance server applications on modern hardware
+* `Seastar <http://www.seastar-project.org/>`_: An advanced, open-source C++
+  framework for high-performance server applications on modern hardware
 
 * `spdlog <https://github.com/gabime/spdlog>`_: Super fast C++ logging library
 
@@ -220,7 +232,8 @@ Projects using this library
 
 * `Touch Surgery <https://www.touchsurgery.com/>`_: Surgery simulator
 
-* `TrinityCore <https://github.com/TrinityCore/TrinityCore>`_: Open-source MMORPG framework
+* `TrinityCore <https://github.com/TrinityCore/TrinityCore>`_: Open-source
+  MMORPG framework
 
 `More... <https://github.com/search?q=cppformat&type=Code>`_
 
index 5ecaaa46b214213b8adf8a01f84291331c7d043f..861594ecb2c710821bb2fa6591df3bf054972320 100644 (file)
@@ -26,30 +26,29 @@ Core API
 and a lightweight subset of formatting functions.
 
 The following functions use :ref:`format string syntax <syntax>`
-imilar to that of Python's `str.format
+similar to that of Python's `str.format
 <http://docs.python.org/3/library/stdtypes.html#str.format>`_.
 They take *format_str* and *args* as arguments.
 
 *format_str* is a format string that contains literal text and replacement
 fields surrounded by braces ``{}``. The fields are replaced with formatted
-arguments in the resulting string.
+arguments in the resulting string. A function taking *format_str* doesn't
+participate in an overload resolution if the latter is not a string.
 
 *args* is an argument list representing objects to be formatted.
 
 .. _format:
 
-.. doxygenfunction:: format(const String&, const Args&...)
-.. doxygenfunction:: vformat(const String&, basic_format_args<typename buffer_context<Char>::type>)
+.. doxygenfunction:: format(const S&, const Args&...)
+.. doxygenfunction:: vformat(const S&, basic_format_args<typename buffer_context<Char>::type>)
 
 .. _print:
 
-.. doxygenfunction:: print(string_view, const Args&...)
+.. doxygenfunction:: print(const S&, const Args&...)
 .. doxygenfunction:: vprint(string_view, format_args)
 
-.. doxygenfunction:: print(std::FILE *, string_view, const Args&...)
+.. doxygenfunction:: print(std::FILE *, const S&, const Args&...)
 .. doxygenfunction:: vprint(std::FILE *, string_view, format_args)
-
-.. doxygenfunction:: print(std::FILE *, wstring_view, const Args&...)
 .. doxygenfunction:: vprint(std::FILE *, wstring_view, wformat_args)
 
 Named arguments
@@ -149,6 +148,35 @@ You can also reuse existing formatters, for example::
     }
   };
 
+You can also write a formatter for a hierarchy of classes::
+
+  #include <type_traits>
+  #include <fmt/format.h>
+
+  struct A {
+    virtual ~A() {}
+    virtual std::string name() const { return "A"; }
+  };
+
+  struct B : A {
+    virtual std::string name() const { return "B"; }
+  };
+
+  template <typename T>
+  struct fmt::formatter<T, std::enable_if_t<std::is_base_of<A, T>::value, char>> :
+      fmt::formatter<std::string> {
+    template <typename FormatCtx>
+    auto format(const A& a, FormatCtx& ctx) {
+      return fmt::formatter<std::string>::format(a.name(), ctx);
+    }
+  };
+
+  int main() {
+    B b;
+    A& a = b;
+    fmt::print("{}", a); // prints "B"
+  }
+
 This section shows how to define a custom format function for a user-defined
 type. The next section describes how to get ``fmt`` to use a conventional stream
 output ``operator<<`` when one is defined for a user-defined type.
@@ -156,7 +184,7 @@ output ``operator<<`` when one is defined for a user-defined type.
 Output iterator support
 -----------------------
 
-.. doxygenfunction:: fmt::format_to(OutputIt, string_view, const Args&...)
+.. doxygenfunction:: fmt::format_to(OutputIt, const S &, const Args &...)
 .. doxygenfunction:: fmt::format_to_n(OutputIt, std::size_t, string_view, const Args&...)
 .. doxygenstruct:: fmt::format_to_n_result
    :members:
@@ -173,6 +201,8 @@ The following user-defined literals are defined in ``fmt/format.h``.
 Utilities
 ---------
 
+.. doxygentypedef:: fmt::char_t
+
 .. doxygenfunction:: fmt::formatted_size(string_view, const Args&...)
 
 .. doxygenfunction:: fmt::to_string(const T&)
@@ -248,7 +278,8 @@ custom argument formatter class::
   // with the ``x`` format specifier.
   class custom_arg_formatter : public arg_formatter {
    public:
-    custom_arg_formatter(fmt::format_context &ctx, fmt::format_specs &spec)
+    custom_arg_formatter(fmt::format_context &ctx,
+                         fmt::format_specs *spec = nullptr)
       : arg_formatter(ctx, spec) {}
 
     using arg_formatter::operator();
@@ -319,7 +350,7 @@ user-defined types that have overloaded ``operator<<``::
   std::string s = fmt::format("The date is {}", date(2012, 12, 9));
   // s == "The date is 2012-12-9"
 
-.. doxygenfunction:: print(std::ostream&, string_view, const Args&...)
+.. doxygenfunction:: print(std::basic_ostream<fmt::char_t<S>>&, const S&, const Args&...)
 
 .. _printf-api:
 
@@ -333,10 +364,10 @@ the POSIX extension for positional arguments. Unlike their standard
 counterparts, the ``fmt`` functions are type-safe and throw an exception if an
 argument type doesn't match its format specification.
 
-.. doxygenfunction:: printf(string_view, const Args&...)
+.. doxygenfunction:: printf(const S&, const Args&...)
 
-.. doxygenfunction:: fprintf(std::FILE *, string_view, const Args&...)
+.. doxygenfunction:: fprintf(std::FILE *, const S&, const Args&...)
 
-.. doxygenfunction:: fprintf(std::ostream&, string_view, const Args&...)
+.. doxygenfunction:: fprintf(std::basic_ostream<fmt::char_t<S>>&, const S&, const Args&...)
 
-.. doxygenfunction:: sprintf(string_view, const Args&...)
+.. doxygenfunction:: sprintf(const S&, const Args&...)
index 5947e465fecfaaf358bdef445411b8abfc33f1db..e44ad7c33dae6f85d34062e962a0529b1f014e71 100755 (executable)
@@ -89,6 +89,7 @@ def build_docs(version='dev', **kwargs):
                           FMT_USE_VARIADIC_TEMPLATES=1 \
                           FMT_USE_RVALUE_REFERENCES=1 \
                           FMT_USE_USER_DEFINED_LITERALS=1 \
+                          FMT_USE_ALIAS_TEMPLATES=1 \
                           FMT_API= \
                           "FMT_BEGIN_NAMESPACE=namespace fmt {{" \
                           "FMT_END_NAMESPACE=}}" \
index 17d6b4bb5521255cd19e717ac5edafcefc96bed6..a8dc05e5518a222b559047a6cc01a3a8867688b3 100644 (file)
@@ -40,7 +40,7 @@ The ``fmt::format`` function returns a string "The answer is 42.". You can use
   format_to(out, "For a moment, {} happened.", "nothing");
   out.data(); // returns a pointer to the formatted data
 
-The ``fmt::print`` function performs formatting and writes the result to a file:
+The ``fmt::print`` function performs formatting and writes the result to a stream:
 
 .. code:: c++
 
@@ -94,7 +94,7 @@ Safety
 
 The library is fully type safe, automatic memory management prevents buffer
 overflow, errors in format strings are reported using exceptions or at compile
-tim. For example, the code
+time. For example, the code
 
 .. code:: c++
 
index 4d39882cc20f4b4eb6d32455802b5c2c326d4967..e8894cfcef9d3423bbaf66ad83a16192c2462950 100644 (file)
@@ -74,7 +74,12 @@ or
 
 to exclude it from ``make``, ``make all``, or ``cmake --build .``.
 
-Settting up your target to use a header-only version of ``fmt`` is equaly easy::
+You can detect and use an installed version of {fmt} as follows::
+
+   find_package(fmt)
+   target_link_libraries(<your-target> fmt::fmt)
+
+Setting up your target to use a header-only version of ``fmt`` is equaly easy::
 
    target_link_libraries(<your-target> PRIVATE fmt-header-only)
 
diff --git a/ceph/src/seastar/fmt/include/fmt/chrono.h b/ceph/src/seastar/fmt/include/fmt/chrono.h
new file mode 100644 (file)
index 0000000..6610e62
--- /dev/null
@@ -0,0 +1,406 @@
+// Formatting library for C++ - chrono support
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#ifndef FMT_CHRONO_H_
+#define FMT_CHRONO_H_
+
+#include "format.h"
+#include "locale.h"
+
+#include <chrono>
+#include <ctime>
+#include <locale>
+#include <sstream>
+
+FMT_BEGIN_NAMESPACE
+
+namespace internal{
+
+enum class numeric_system {
+  standard,
+  // Alternative numeric system, e.g. 十二 instead of 12 in ja_JP locale.
+  alternative
+};
+
+// Parses a put_time-like format string and invokes handler actions.
+template <typename Char, typename Handler>
+FMT_CONSTEXPR const Char *parse_chrono_format(
+    const Char *begin, const Char *end, Handler &&handler) {
+  auto ptr = begin;
+  while (ptr != end) {
+    auto c = *ptr;
+    if (c == '}') break;
+    if (c != '%') {
+      ++ptr;
+      continue;
+    }
+    if (begin != ptr)
+      handler.on_text(begin, ptr);
+    ++ptr; // consume '%'
+    if (ptr == end)
+      throw format_error("invalid format");
+    c = *ptr++;
+    switch (c) {
+    case '%':
+      handler.on_text(ptr - 1, ptr);
+      break;
+    case 'n': {
+      const char newline[] = "\n";
+      handler.on_text(newline, newline + 1);
+      break;
+    }
+    case 't': {
+      const char tab[] = "\t";
+      handler.on_text(tab, tab + 1);
+      break;
+    }
+    // Day of the week:
+    case 'a':
+      handler.on_abbr_weekday();
+      break;
+    case 'A':
+      handler.on_full_weekday();
+      break;
+    case 'w':
+      handler.on_dec0_weekday(numeric_system::standard);
+      break;
+    case 'u':
+      handler.on_dec1_weekday(numeric_system::standard);
+      break;
+    // Month:
+    case 'b':
+      handler.on_abbr_month();
+      break;
+    case 'B':
+      handler.on_full_month();
+      break;
+    // Hour, minute, second:
+    case 'H':
+      handler.on_24_hour(numeric_system::standard);
+      break;
+    case 'I':
+      handler.on_12_hour(numeric_system::standard);
+      break;
+    case 'M':
+      handler.on_minute(numeric_system::standard);
+      break;
+    case 'S':
+      handler.on_second(numeric_system::standard);
+      break;
+    // Other:
+    case 'c':
+      handler.on_datetime(numeric_system::standard);
+      break;
+    case 'x':
+      handler.on_loc_date(numeric_system::standard);
+      break;
+    case 'X':
+      handler.on_loc_time(numeric_system::standard);
+      break;
+    case 'D':
+      handler.on_us_date();
+      break;
+    case 'F':
+      handler.on_iso_date();
+      break;
+    case 'r':
+      handler.on_12_hour_time();
+      break;
+    case 'R':
+      handler.on_24_hour_time();
+      break;
+    case 'T':
+      handler.on_iso_time();
+      break;
+    case 'p':
+      handler.on_am_pm();
+      break;
+    case 'z':
+      handler.on_utc_offset();
+      break;
+    case 'Z':
+      handler.on_tz_name();
+      break;
+    // Alternative representation:
+    case 'E': {
+      if (ptr == end)
+        throw format_error("invalid format");
+      c = *ptr++;
+      switch (c) {
+      case 'c':
+        handler.on_datetime(numeric_system::alternative);
+        break;
+      case 'x':
+        handler.on_loc_date(numeric_system::alternative);
+        break;
+      case 'X':
+        handler.on_loc_time(numeric_system::alternative);
+        break;
+      default:
+        throw format_error("invalid format");
+      }
+      break;
+    }
+    case 'O':
+      if (ptr == end)
+        throw format_error("invalid format");
+      c = *ptr++;
+      switch (c) {
+      case 'w':
+        handler.on_dec0_weekday(numeric_system::alternative);
+        break;
+      case 'u':
+        handler.on_dec1_weekday(numeric_system::alternative);
+        break;
+      case 'H':
+        handler.on_24_hour(numeric_system::alternative);
+        break;
+      case 'I':
+        handler.on_12_hour(numeric_system::alternative);
+        break;
+      case 'M':
+        handler.on_minute(numeric_system::alternative);
+        break;
+      case 'S':
+        handler.on_second(numeric_system::alternative);
+        break;
+      default:
+        throw format_error("invalid format");
+      }
+      break;
+    default:
+      throw format_error("invalid format");
+    }
+    begin = ptr;
+  }
+  if (begin != ptr)
+    handler.on_text(begin, ptr);
+  return ptr;
+}
+
+struct chrono_format_checker {
+  void report_no_date() { throw format_error("no date"); }
+
+  template <typename Char>
+  void on_text(const Char *, const Char *) {}
+  void on_abbr_weekday() { report_no_date(); }
+  void on_full_weekday() { report_no_date(); }
+  void on_dec0_weekday(numeric_system) { report_no_date(); }
+  void on_dec1_weekday(numeric_system) { report_no_date(); }
+  void on_abbr_month() { report_no_date(); }
+  void on_full_month() { report_no_date(); }
+  void on_24_hour(numeric_system) {}
+  void on_12_hour(numeric_system) {}
+  void on_minute(numeric_system) {}
+  void on_second(numeric_system) {}
+  void on_datetime(numeric_system) { report_no_date(); }
+  void on_loc_date(numeric_system) { report_no_date(); }
+  void on_loc_time(numeric_system) { report_no_date(); }
+  void on_us_date() { report_no_date(); }
+  void on_iso_date() { report_no_date(); }
+  void on_12_hour_time() {}
+  void on_24_hour_time() {}
+  void on_iso_time() {}
+  void on_am_pm() {}
+  void on_utc_offset() { report_no_date(); }
+  void on_tz_name() { report_no_date(); }
+};
+
+template <typename Int>
+inline int to_int(Int value) {
+  FMT_ASSERT(value >= (std::numeric_limits<int>::min)() &&
+             value <= (std::numeric_limits<int>::max)(), "invalid value");
+  return static_cast<int>(value);
+}
+
+template <typename FormatContext>
+struct chrono_formatter {
+  FormatContext &context;
+  typename FormatContext::iterator out;
+  std::chrono::seconds s;
+  std::chrono::milliseconds ms;
+
+  typedef typename FormatContext::char_type char_type;
+
+  explicit chrono_formatter(FormatContext &ctx)
+    : context(ctx), out(ctx.out()) {}
+
+  int hour() const { return to_int((s.count() / 3600) % 24); }
+
+  int hour12() const {
+    auto hour = to_int((s.count() / 3600) % 12);
+    return hour > 0 ? hour : 12;
+  }
+
+  int minute() const { return to_int((s.count() / 60) % 60); }
+  int second() const { return to_int(s.count() % 60); }
+
+  std::tm time() const {
+    auto time = std::tm();
+    time.tm_hour = hour();
+    time.tm_min = minute();
+    time.tm_sec = second();
+    return time;
+  }
+
+  void write(int value, int width) {
+    typedef typename int_traits<int>::main_type main_type;
+    main_type n = to_unsigned(value);
+    int num_digits = static_cast<int>(internal::count_digits(n));
+    if (width > num_digits)
+      out = std::fill_n(out, width - num_digits, '0');
+    out = format_decimal<char_type>(out, n, num_digits);
+  }
+
+  void format_localized(const tm &time, const char *format) {
+    auto locale = context.locale().template get<std::locale>();
+    auto &facet = std::use_facet<std::time_put<char_type>>(locale);
+    std::basic_ostringstream<char_type> os;
+    os.imbue(locale);
+    facet.put(os, os, ' ', &time, format, format + std::strlen(format));
+    auto str = os.str();
+    std::copy(str.begin(), str.end(), out);
+  }
+
+  void on_text(const char_type *begin, const char_type *end) {
+    std::copy(begin, end, out);
+  }
+
+  // These are not implemented because durations don't have date information.
+  void on_abbr_weekday() {}
+  void on_full_weekday() {}
+  void on_dec0_weekday(numeric_system) {}
+  void on_dec1_weekday(numeric_system) {}
+  void on_abbr_month() {}
+  void on_full_month() {}
+  void on_datetime(numeric_system) {}
+  void on_loc_date(numeric_system) {}
+  void on_loc_time(numeric_system) {}
+  void on_us_date() {}
+  void on_iso_date() {}
+  void on_utc_offset() {}
+  void on_tz_name() {}
+
+  void on_24_hour(numeric_system ns) {
+    if (ns == numeric_system::standard)
+      return write(hour(), 2);
+    auto time = tm();
+    time.tm_hour = hour();
+    format_localized(time, "%OH");
+  }
+
+  void on_12_hour(numeric_system ns) {
+    if (ns == numeric_system::standard)
+      return write(hour12(), 2);
+    auto time = tm();
+    time.tm_hour = hour();
+    format_localized(time, "%OI");
+  }
+
+  void on_minute(numeric_system ns) {
+    if (ns == numeric_system::standard)
+      return write(minute(), 2);
+    auto time = tm();
+    time.tm_min = minute();
+    format_localized(time, "%OM");
+  }
+
+  void on_second(numeric_system ns) {
+    if (ns == numeric_system::standard) {
+      write(second(), 2);
+      if (ms != std::chrono::milliseconds(0)) {
+        *out++ = '.';
+        write(to_int(ms.count()), 3);
+      }
+      return;
+    }
+    auto time = tm();
+    time.tm_sec = second();
+    format_localized(time, "%OS");
+  }
+
+  void on_12_hour_time() { format_localized(time(), "%r"); }
+
+  void on_24_hour_time() {
+    write(hour(), 2);
+    *out++ = ':';
+    write(minute(), 2);
+  }
+
+  void on_iso_time() {
+    on_24_hour_time();
+    *out++ = ':';
+    write(second(), 2);
+  }
+
+  void on_am_pm() { format_localized(time(), "%p"); }
+};
+}  // namespace internal
+
+template <typename Period> FMT_CONSTEXPR const char *get_units() {
+  return FMT_NULL;
+}
+template <> FMT_CONSTEXPR const char *get_units<std::atto>() { return "as"; }
+template <> FMT_CONSTEXPR const char *get_units<std::femto>() { return "fs"; }
+template <> FMT_CONSTEXPR const char *get_units<std::pico>() { return "ps"; }
+template <> FMT_CONSTEXPR const char *get_units<std::nano>() { return "ns"; }
+template <> FMT_CONSTEXPR const char *get_units<std::micro>() { return "µs"; }
+template <> FMT_CONSTEXPR const char *get_units<std::milli>() { return "ms"; }
+template <> FMT_CONSTEXPR const char *get_units<std::centi>() { return "cs"; }
+template <> FMT_CONSTEXPR const char *get_units<std::deci>() { return "ds"; }
+template <> FMT_CONSTEXPR const char *get_units<std::ratio<1>>() { return "s"; }
+template <> FMT_CONSTEXPR const char *get_units<std::deca>() { return "das"; }
+template <> FMT_CONSTEXPR const char *get_units<std::hecto>() { return "hs"; }
+template <> FMT_CONSTEXPR const char *get_units<std::kilo>() { return "ks"; }
+template <> FMT_CONSTEXPR const char *get_units<std::mega>() { return "Ms"; }
+template <> FMT_CONSTEXPR const char *get_units<std::giga>() { return "Gs"; }
+template <> FMT_CONSTEXPR const char *get_units<std::tera>() { return "Ts"; }
+template <> FMT_CONSTEXPR const char *get_units<std::peta>() { return "Ps"; }
+template <> FMT_CONSTEXPR const char *get_units<std::exa>() { return "Es"; }
+template <> FMT_CONSTEXPR const char *get_units<std::ratio<60>>() {
+  return "m";
+}
+template <> FMT_CONSTEXPR const char *get_units<std::ratio<3600>>() {
+  return "h";
+}
+
+template <typename Rep, typename Period, typename Char>
+struct formatter<std::chrono::duration<Rep, Period>, Char> {
+  mutable basic_string_view<Char> format_str;
+  typedef std::chrono::duration<Rep, Period> duration;
+
+  FMT_CONSTEXPR auto parse(basic_parse_context<Char> &ctx)
+      -> decltype(ctx.begin()) {
+    auto begin = ctx.begin(), end = ctx.end();
+    end = parse_chrono_format(begin, end, internal::chrono_format_checker());
+    format_str = basic_string_view<Char>(&*begin, end - begin);
+    return end;
+  }
+
+  template <typename FormatContext>
+  auto format(const duration &d, FormatContext &ctx)
+      -> decltype(ctx.out()) {
+    auto begin = format_str.begin(), end = format_str.end();
+    if (begin == end || *begin == '}') {
+      if (const char *unit = get_units<Period>())
+        return format_to(ctx.out(), "{}{}", d.count(), unit);
+      if (Period::den == 1)
+        return format_to(ctx.out(), "{}[{}s]", d.count(), Period::num);
+      return format_to(ctx.out(), "{}[{}/{}s]",
+                       d.count(), Period::num, Period::den);
+    }
+    internal::chrono_formatter<FormatContext> f(ctx);
+    f.s = std::chrono::duration_cast<std::chrono::seconds>(d);
+    f.ms = std::chrono::duration_cast<std::chrono::milliseconds>(d - f.s);
+    parse_chrono_format(begin, end, f);
+    return f.out;
+  }
+};
+
+FMT_END_NAMESPACE
+
+#endif  // FMT_CHRONO_H_
index 4973976a392a9dd17582b0a958ab722db237fcd9..78b7895640fbd8ac9490a01be8b14a69b34a8f52 100644 (file)
@@ -47,7 +47,6 @@ inline void vprint_colored(color c, wstring_view format, wformat_args args) {
 
 #else
 
-// Experimental color support.
 enum class color : uint32_t {
   alice_blue              = 0xF0F8FF, // rgb(240,248,255)
   antique_white           = 0xFAEBD7, // rgb(250,235,215)
@@ -189,9 +188,16 @@ enum class color : uint32_t {
   white                   = 0xFFFFFF, // rgb(255,255,255)
   white_smoke             = 0xF5F5F5, // rgb(245,245,245)
   yellow                  = 0xFFFF00, // rgb(255,255,0)
-  yellow_green            = 0x9ACD32, // rgb(154,205,50)
+  yellow_green            = 0x9ACD32  // rgb(154,205,50)
 };  // enum class color
 
+enum class emphasis : uint8_t {
+  bold = 1,
+  italic = 1 << 1,
+  underline = 1 << 2,
+  strikethrough = 1 << 3
+};  // enum class emphasis
+
 // rgb is a struct for red, green and blue colors.
 // We use rgb as name because some editors will show it as color direct in the
 // editor.
@@ -209,66 +215,281 @@ struct rgb {
   uint8_t b;
 };
 
-void vprint_rgb(rgb fd, string_view format, format_args args);
-void vprint_rgb(rgb fd, rgb bg, string_view format, format_args args);
+// Experimental text formatting support.
+class text_style {
+ public:
+  FMT_CONSTEXPR text_style(emphasis em = emphasis()) FMT_NOEXCEPT
+      : set_foreground_color(), set_background_color(), ems(em) {}
 
-/**
-  Formats a string and prints it to stdout using ANSI escape sequences to
-  specify foreground color 'fd'.
-  Example:
-    fmt::print(fmt::color::red, "Elapsed time: {0:.2f} seconds", 1.23);
- */
-template <typename... Args>
-inline void print(rgb fd, string_view format_str, const Args & ... args) {
-  vprint_rgb(fd, format_str, make_format_args(args...));
+  FMT_CONSTEXPR_DECL
+  text_style &operator|=(const text_style &rhs) FMT_NOEXCEPT {
+    if (!set_foreground_color) {
+      set_foreground_color = rhs.set_foreground_color;
+      foreground_color = rhs.foreground_color;
+    } else if (rhs.set_foreground_color) {
+      foreground_color.r |= rhs.foreground_color.r;
+      foreground_color.g |= rhs.foreground_color.g;
+      foreground_color.b |= rhs.foreground_color.b;
+    }
+
+    if (!set_background_color) {
+      set_background_color = rhs.set_background_color;
+      background_color = rhs.background_color;
+    } else if (rhs.set_background_color) {
+      background_color.r |= rhs.background_color.r;
+      background_color.g |= rhs.background_color.g;
+      background_color.b |= rhs.background_color.b;
+    }
+
+    ems = static_cast<emphasis>(static_cast<uint8_t>(ems) |
+                                static_cast<uint8_t>(rhs.ems));
+    return *this;
+  }
+
+  friend FMT_CONSTEXPR
+  text_style operator|(text_style lhs, const text_style &rhs) FMT_NOEXCEPT {
+    return lhs |= rhs;
+  }
+
+  FMT_CONSTEXPR text_style &operator&=(const text_style &rhs) FMT_NOEXCEPT {
+    if (!set_foreground_color) {
+      set_foreground_color = rhs.set_foreground_color;
+      foreground_color = rhs.foreground_color;
+    } else if (rhs.set_foreground_color) {
+      foreground_color.r &= rhs.foreground_color.r;
+      foreground_color.g &= rhs.foreground_color.g;
+      foreground_color.b &= rhs.foreground_color.b;
+    }
+
+    if (!set_background_color) {
+      set_background_color = rhs.set_background_color;
+      background_color = rhs.background_color;
+    } else if (rhs.set_background_color) {
+      background_color.r &= rhs.background_color.r;
+      background_color.g &= rhs.background_color.g;
+      background_color.b &= rhs.background_color.b;
+    }
+
+    ems = static_cast<emphasis>(static_cast<uint8_t>(ems) &
+                                static_cast<uint8_t>(rhs.ems));
+    return *this;
+  }
+
+  friend FMT_CONSTEXPR
+  text_style operator&(text_style lhs, const text_style &rhs) FMT_NOEXCEPT {
+    return lhs &= rhs;
+  }
+
+  FMT_CONSTEXPR bool has_foreground() const FMT_NOEXCEPT {
+    return set_foreground_color;
+  }
+  FMT_CONSTEXPR bool has_background() const FMT_NOEXCEPT {
+    return set_background_color;
+  }
+  FMT_CONSTEXPR bool has_emphasis() const FMT_NOEXCEPT {
+    return static_cast<uint8_t>(ems) != 0;
+  }
+  FMT_CONSTEXPR rgb get_foreground() const FMT_NOEXCEPT {
+    assert(has_foreground() && "no foreground specified for this style");
+    return foreground_color;
+  }
+  FMT_CONSTEXPR rgb get_background() const FMT_NOEXCEPT {
+    assert(has_background() && "no background specified for this style");
+    return background_color;
+  }
+  FMT_CONSTEXPR emphasis get_emphasis() const FMT_NOEXCEPT {
+    assert(has_emphasis() && "no emphasis specified for this style");
+    return ems;
+  }
+
+private:
+  FMT_CONSTEXPR text_style(bool is_foreground, rgb text_color) FMT_NOEXCEPT
+    : set_foreground_color(), set_background_color(), ems() {
+    if (is_foreground) {
+      foreground_color = text_color;
+      set_foreground_color = true;
+    } else {
+      background_color = text_color;
+      set_background_color = true;
+    }
+  }
+
+  friend FMT_CONSTEXPR_DECL text_style fg(rgb foreground) FMT_NOEXCEPT;
+  friend FMT_CONSTEXPR_DECL text_style bg(rgb background) FMT_NOEXCEPT;
+
+  rgb foreground_color;
+  rgb background_color;
+  bool set_foreground_color;
+  bool set_background_color;
+  emphasis ems;
+};
+
+FMT_CONSTEXPR text_style fg(rgb foreground) FMT_NOEXCEPT {
+  return text_style(/*is_foreground=*/true, foreground);
 }
 
-/**
-  Formats a string and prints it to stdout using ANSI escape sequences to
-  specify foreground color 'fd' and background color 'bg'.
-  Example:
-    fmt::print(fmt::color::red, fmt::color::black,
-               "Elapsed time: {0:.2f} seconds", 1.23);
- */
-template <typename... Args>
-inline void print(rgb fd, rgb bg, string_view format_str,
-                  const Args & ... args) {
-  vprint_rgb(fd, bg, format_str, make_format_args(args...));
+FMT_CONSTEXPR text_style bg(rgb background) FMT_NOEXCEPT {
+  return text_style(/*is_foreground=*/false, background);
+}
+
+FMT_CONSTEXPR text_style operator|(emphasis lhs, emphasis rhs) FMT_NOEXCEPT {
+  return text_style(lhs) | rhs;
 }
+
 namespace internal {
-FMT_CONSTEXPR void to_esc(uint8_t c, char out[], int offset) {
-  out[offset + 0] = static_cast<char>('0' + c / 100);
-  out[offset + 1] = static_cast<char>('0' + c / 10 % 10);
-  out[offset + 2] = static_cast<char>('0' + c % 10);
+
+template <typename Char>
+struct ansi_color_escape {
+  FMT_CONSTEXPR ansi_color_escape(rgb color, const char * esc) FMT_NOEXCEPT {
+    for (int i = 0; i < 7; i++) {
+      buffer[i] = static_cast<Char>(esc[i]);
+    }
+    to_esc(color.r, buffer +  7, ';');
+    to_esc(color.g, buffer + 11, ';');
+    to_esc(color.b, buffer + 15, 'm');
+    buffer[19] = static_cast<Char>(0);
+  }
+  FMT_CONSTEXPR ansi_color_escape(emphasis em) FMT_NOEXCEPT {
+    uint8_t em_codes[4] = {};
+    uint8_t em_bits = static_cast<uint8_t>(em);
+    if (em_bits & static_cast<uint8_t>(emphasis::bold))
+      em_codes[0] = 1;
+    if (em_bits & static_cast<uint8_t>(emphasis::italic))
+      em_codes[1] = 3;
+    if (em_bits & static_cast<uint8_t>(emphasis::underline))
+      em_codes[2] = 4;
+    if (em_bits & static_cast<uint8_t>(emphasis::strikethrough))
+      em_codes[3] = 9;
+
+    std::size_t index = 0;
+    for (int i = 0; i < 4; ++i) {
+      if (!em_codes[i])
+        continue;
+      buffer[index++] = static_cast<Char>('\x1b');
+      buffer[index++] = static_cast<Char>('[');
+      buffer[index++] = static_cast<Char>('0' + em_codes[i]);
+      buffer[index++] = static_cast<Char>('m');
+    }
+    buffer[index++] = static_cast<Char>(0);
+  }
+  FMT_CONSTEXPR operator const Char *() const FMT_NOEXCEPT { return buffer; }
+
+private:
+  Char buffer[7 + 3 * 4 + 1];
+
+  static FMT_CONSTEXPR void to_esc(uint8_t c, Char *out,
+                                   char delimiter) FMT_NOEXCEPT {
+    out[0] = static_cast<Char>('0' + c / 100);
+    out[1] = static_cast<Char>('0' + c / 10 % 10);
+    out[2] = static_cast<Char>('0' + c % 10);
+    out[3] = static_cast<Char>(delimiter);
+  }
+};
+
+template <typename Char>
+FMT_CONSTEXPR ansi_color_escape<Char>
+make_foreground_color(rgb color) FMT_NOEXCEPT {
+  return ansi_color_escape<Char>(color, internal::data::FOREGROUND_COLOR);
 }
-} // namespace internal
 
-inline void vprint_rgb(rgb fd, string_view format, format_args args) {
-  char escape_fd[] = "\x1b[38;2;000;000;000m";
-  internal::to_esc(fd.r, escape_fd, 7);
-  internal::to_esc(fd.g, escape_fd, 11);
-  internal::to_esc(fd.b, escape_fd, 15);
+template <typename Char>
+FMT_CONSTEXPR ansi_color_escape<Char>
+make_background_color(rgb color) FMT_NOEXCEPT {
+  return ansi_color_escape<Char>(color, internal::data::BACKGROUND_COLOR);
+}
 
-  std::fputs(escape_fd, stdout);
-  vprint(format, args);
-  std::fputs(internal::data::RESET_COLOR, stdout);
+template <typename Char>
+FMT_CONSTEXPR ansi_color_escape<Char>
+make_emphasis(emphasis em) FMT_NOEXCEPT {
+  return ansi_color_escape<Char>(em);
 }
 
-inline void vprint_rgb(rgb fd, rgb bg, string_view format, format_args args) {
-  char escape_fd[] = "\x1b[38;2;000;000;000m"; // foreground color
-  char escape_bg[] = "\x1b[48;2;000;000;000m"; // background color
-  internal::to_esc(fd.r, escape_fd, 7);
-  internal::to_esc(fd.g, escape_fd, 11);
-  internal::to_esc(fd.b, escape_fd, 15);
+template <typename Char>
+inline void fputs(const Char *chars, FILE *stream) FMT_NOEXCEPT {
+  std::fputs(chars, stream);
+}
 
-  internal::to_esc(bg.r, escape_bg, 7);
-  internal::to_esc(bg.g, escape_bg, 11);
-  internal::to_esc(bg.b, escape_bg, 15);
+template <>
+inline void fputs<wchar_t>(const wchar_t *chars, FILE *stream) FMT_NOEXCEPT {
+  std::fputws(chars, stream);
+}
 
-  std::fputs(escape_fd, stdout);
-  std::fputs(escape_bg, stdout);
-  vprint(format, args);
-  std::fputs(internal::data::RESET_COLOR, stdout);
+template <typename Char>
+inline void reset_color(FILE *stream) FMT_NOEXCEPT {
+  fputs(internal::data::RESET_COLOR, stream);
+}
+
+template <>
+inline void reset_color<wchar_t>(FILE *stream) FMT_NOEXCEPT {
+  fputs(internal::data::WRESET_COLOR, stream);
+}
+
+// The following specialiazation disables using std::FILE as a character type,
+// which is needed because or else
+//   fmt::print(stderr, fmt::emphasis::bold, "");
+// would take stderr (a std::FILE *) as the format string.
+template <>
+struct is_string<std::FILE *> : std::false_type {};
+template <>
+struct is_string<const std::FILE *> : std::false_type {};
+} // namespace internal
+
+template <
+  typename S, typename Char = typename internal::char_t<S>::type>
+void vprint(std::FILE *f, const text_style &ts, const S &format,
+            basic_format_args<typename buffer_context<Char>::type> args) {
+  bool has_style = false;
+  if (ts.has_emphasis()) {
+    has_style = true;
+    internal::fputs<Char>(
+          internal::make_emphasis<Char>(ts.get_emphasis()), f);
+  }
+  if (ts.has_foreground()) {
+    has_style = true;
+    internal::fputs<Char>(
+          internal::make_foreground_color<Char>(ts.get_foreground()), f);
+  }
+  if (ts.has_background()) {
+    has_style = true;
+    internal::fputs<Char>(
+        internal::make_background_color<Char>(ts.get_background()), f);
+  }
+  vprint(f, format, args);
+  if (has_style) {
+    internal::reset_color<Char>(f);
+  }
+}
+
+/**
+  Formats a string and prints it to the specified file stream using ANSI
+  escape sequences to specify text formatting.
+  Example:
+    fmt::print(fmt::emphasis::bold | fg(fmt::color::red),
+               "Elapsed time: {0:.2f} seconds", 1.23);
+ */
+template <typename String, typename... Args>
+typename std::enable_if<internal::is_string<String>::value>::type print(
+    std::FILE *f, const text_style &ts, const String &format_str,
+    const Args &... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef typename internal::char_t<String>::type char_t;
+  typedef typename buffer_context<char_t>::type context_t;
+  format_arg_store<context_t, Args...> as{args...};
+  vprint(f, ts, format_str, basic_format_args<context_t>(as));
+}
+
+/**
+  Formats a string and prints it to stdout using ANSI escape sequences to
+  specify text formatting.
+  Example:
+    fmt::print(fmt::emphasis::bold | fg(fmt::color::red),
+               "Elapsed time: {0:.2f} seconds", 1.23);
+ */
+template <typename String, typename... Args>
+typename std::enable_if<internal::is_string<String>::value>::type print(
+    const text_style &ts, const String &format_str,
+    const Args &... args) {
+  return print(stdout, ts, format_str, args...);
 }
 
 #endif
index 5912afef82b9595186ae1a71f3ed41d8035f4b52..a867d8d7761dcbffdd31dae7226c93f2a068f93f 100644 (file)
@@ -16,7 +16,7 @@
 #include <type_traits>
 
 // The fmt library version in the form major * 10000 + minor * 100 + patch.
-#define FMT_VERSION 50201
+#define FMT_VERSION 50202
 
 #ifdef __has_feature
 # define FMT_HAS_FEATURE(x) __has_feature(x)
@@ -25,7 +25,7 @@
 #endif
 
 #if defined(__has_include) && !defined(__INTELLISENSE__) && \
-    (!defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1600)
+    !(defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1600)
 # define FMT_HAS_INCLUDE(x) __has_include(x)
 #else
 # define FMT_HAS_INCLUDE(x) 0
@@ -72,7 +72,7 @@
 
 #ifndef FMT_USE_CONSTEXPR11
 # define FMT_USE_CONSTEXPR11 \
-    (FMT_MSC_VER >= 1900 || FMT_GCC_VERSION >= 406 || FMT_USE_CONSTEXPR)
+    (FMT_USE_CONSTEXPR || FMT_GCC_VERSION >= 406 || FMT_MSC_VER >= 1900)
 #endif
 #if FMT_USE_CONSTEXPR11
 # define FMT_CONSTEXPR11 constexpr
 # endif
 #endif
 
-#if FMT_HAS_FEATURE(cxx_explicit_conversions) || FMT_MSC_VER >= 1800
+#if FMT_HAS_FEATURE(cxx_explicit_conversions) || \
+    FMT_GCC_VERSION >= 405 || FMT_MSC_VER >= 1800
+# define FMT_USE_EXPLICIT 1
 # define FMT_EXPLICIT explicit
 #else
+# define FMT_USE_EXPLICIT 0
 # define FMT_EXPLICIT
 #endif
 
 #  define FMT_NULL NULL
 # endif
 #endif
-
 #ifndef FMT_USE_NULLPTR
 # define FMT_USE_NULLPTR 0
 #endif
 
-#if FMT_HAS_CPP_ATTRIBUTE(noreturn)
-# define FMT_NORETURN [[noreturn]]
-#else
-# define FMT_NORETURN
-#endif
-
 // Check if exceptions are disabled.
-#if defined(__GNUC__) && !defined(__EXCEPTIONS)
-# define FMT_EXCEPTIONS 0
-#elif FMT_MSC_VER && !_HAS_EXCEPTIONS
-# define FMT_EXCEPTIONS 0
-#endif
 #ifndef FMT_EXCEPTIONS
-# define FMT_EXCEPTIONS 1
+# if (defined(__GNUC__) && !defined(__EXCEPTIONS)) || \
+     FMT_MSC_VER && !_HAS_EXCEPTIONS
+#  define FMT_EXCEPTIONS 0
+# else
+#  define FMT_EXCEPTIONS 1
+# endif
 #endif
 
 // Define FMT_USE_NOEXCEPT to make fmt use noexcept (C++11 feature).
 # endif
 #endif
 
-// This is needed because GCC still uses throw() in its headers when exceptions
-// are disabled.
-#if FMT_GCC_VERSION
-# define FMT_DTOR_NOEXCEPT FMT_DETECTED_NOEXCEPT
-#else
-# define FMT_DTOR_NOEXCEPT FMT_NOEXCEPT
-#endif
-
 #ifndef FMT_BEGIN_NAMESPACE
 # if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \
      FMT_MSC_VER >= 1900
       (__cplusplus > 201402L || defined(_LIBCPP_VERSION))) || \
     (defined(_MSVC_LANG) && _MSVC_LANG > 201402L && _MSC_VER >= 1910)
 # include <string_view>
-# define FMT_USE_STD_STRING_VIEW
-#elif (FMT_HAS_INCLUDE(<experimental/string_view>) && \
-       __cplusplus >= 201402L)
+# define FMT_STRING_VIEW std::basic_string_view
+#elif FMT_HAS_INCLUDE(<experimental/string_view>) && __cplusplus >= 201402L
 # include <experimental/string_view>
-# define FMT_USE_EXPERIMENTAL_STRING_VIEW
+# define FMT_STRING_VIEW std::experimental::basic_string_view
 #endif
 
 // std::result_of is defined in <functional> in gcc 4.4.
@@ -223,18 +210,135 @@ FMT_CONSTEXPR typename std::make_unsigned<Int>::type to_unsigned(Int value) {
   return static_cast<typename std::make_unsigned<Int>::type>(value);
 }
 
-// A constexpr std::char_traits::length replacement for pre-C++17.
-template <typename Char>
-FMT_CONSTEXPR size_t length(const Char *s) {
-  const Char *start = s;
-  while (*s) ++s;
-  return s - start;
+/** A contiguous memory buffer with an optional growing ability. */
+template <typename T>
+class basic_buffer {
+ private:
+  basic_buffer(const basic_buffer &) = delete;
+  void operator=(const basic_buffer &) = delete;
+
+  T *ptr_;
+  std::size_t size_;
+  std::size_t capacity_;
+
+ protected:
+  // Don't initialize ptr_ since it is not accessed to save a few cycles.
+  basic_buffer(std::size_t sz) FMT_NOEXCEPT: size_(sz), capacity_(sz) {}
+
+  basic_buffer(T *p = FMT_NULL, std::size_t sz = 0, std::size_t cap = 0)
+    FMT_NOEXCEPT: ptr_(p), size_(sz), capacity_(cap) {}
+
+  /** Sets the buffer data and capacity. */
+  void set(T *buf_data, std::size_t buf_capacity) FMT_NOEXCEPT {
+    ptr_ = buf_data;
+    capacity_ = buf_capacity;
+  }
+
+  /** Increases the buffer capacity to hold at least *capacity* elements. */
+  virtual void grow(std::size_t capacity) = 0;
+
+ public:
+  typedef T value_type;
+  typedef const T &const_reference;
+
+  virtual ~basic_buffer() {}
+
+  T *begin() FMT_NOEXCEPT { return ptr_; }
+  T *end() FMT_NOEXCEPT { return ptr_ + size_; }
+
+  /** Returns the size of this buffer. */
+  std::size_t size() const FMT_NOEXCEPT { return size_; }
+
+  /** Returns the capacity of this buffer. */
+  std::size_t capacity() const FMT_NOEXCEPT { return capacity_; }
+
+  /** Returns a pointer to the buffer data. */
+  T *data() FMT_NOEXCEPT { return ptr_; }
+
+  /** Returns a pointer to the buffer data. */
+  const T *data() const FMT_NOEXCEPT { return ptr_; }
+
+  /**
+    Resizes the buffer. If T is a POD type new elements may not be initialized.
+   */
+  void resize(std::size_t new_size) {
+    reserve(new_size);
+    size_ = new_size;
+  }
+
+  /** Clears this buffer. */
+  void clear() { size_ = 0; }
+
+  /** Reserves space to store at least *capacity* elements. */
+  void reserve(std::size_t new_capacity) {
+    if (new_capacity > capacity_)
+      grow(new_capacity);
+  }
+
+  void push_back(const T &value) {
+    reserve(size_ + 1);
+    ptr_[size_++] = value;
+  }
+
+  /** Appends data to the end of the buffer. */
+  template <typename U>
+  void append(const U *begin, const U *end);
+
+  T &operator[](std::size_t index) { return ptr_[index]; }
+  const T &operator[](std::size_t index) const { return ptr_[index]; }
+};
+
+typedef basic_buffer<char> buffer;
+typedef basic_buffer<wchar_t> wbuffer;
+
+// A container-backed buffer.
+template <typename Container>
+class container_buffer : public basic_buffer<typename Container::value_type> {
+ private:
+  Container &container_;
+
+ protected:
+  void grow(std::size_t capacity) FMT_OVERRIDE {
+    container_.resize(capacity);
+    this->set(&container_[0], capacity);
+  }
+
+ public:
+  explicit container_buffer(Container &c)
+    : basic_buffer<typename Container::value_type>(c.size()), container_(c) {}
+};
+
+// Extracts a reference to the container from back_insert_iterator.
+template <typename Container>
+inline Container &get_container(std::back_insert_iterator<Container> it) {
+  typedef std::back_insert_iterator<Container> bi_iterator;
+  struct accessor: bi_iterator {
+    accessor(bi_iterator iter) : bi_iterator(iter) {}
+    using bi_iterator::container;
+  };
+  return *accessor(it).container;
 }
-#if FMT_GCC_VERSION
-FMT_CONSTEXPR size_t length(const char *s) { return std::strlen(s); }
-#endif
+
+struct error_handler {
+  FMT_CONSTEXPR error_handler() {}
+  FMT_CONSTEXPR error_handler(const error_handler &) {}
+
+  // This function is intentionally not constexpr to give a compile-time error.
+  FMT_API void on_error(const char *message);
+};
+
+template <typename T>
+struct no_formatter_error : std::false_type {};
 }  // namespace internal
 
+#if FMT_GCC_VERSION && FMT_GCC_VERSION < 405
+template <typename... T>
+struct is_constructible: std::false_type {};
+#else
+template <typename... T>
+struct is_constructible : std::is_constructible<T...> {};
+#endif
+
 /**
   An implementation of ``std::basic_string_view`` for pre-C++17. It provides a
   subset of the API. ``fmt::basic_string_view`` is used for format strings even
@@ -252,18 +356,6 @@ class basic_string_view {
   typedef Char char_type;
   typedef const Char *iterator;
 
-  // Standard basic_string_view type.
-#if defined(FMT_USE_STD_STRING_VIEW)
-  typedef std::basic_string_view<Char> type;
-#elif defined(FMT_USE_EXPERIMENTAL_STRING_VIEW)
-  typedef std::experimental::basic_string_view<Char> type;
-#else
-  struct type {
-    const char *data() const { return FMT_NULL; }
-    size_t size() const { return 0; }
-  };
-#endif
-
   FMT_CONSTEXPR basic_string_view() FMT_NOEXCEPT : data_(FMT_NULL), size_(0) {}
 
   /** Constructs a string reference object from a C string and a size. */
@@ -276,8 +368,8 @@ class basic_string_view {
     the size with ``std::char_traits<Char>::length``.
     \endrst
    */
-  FMT_CONSTEXPR basic_string_view(const Char *s)
-    : data_(s), size_(internal::length(s)) {}
+  basic_string_view(const Char *s)
+    : data_(s), size_(std::char_traits<Char>::length(s)) {}
 
   /** Constructs a string reference from a ``std::basic_string`` object. */
   template <typename Alloc>
@@ -285,8 +377,10 @@ class basic_string_view {
       const std::basic_string<Char, Alloc> &s) FMT_NOEXCEPT
   : data_(s.data()), size_(s.size()) {}
 
-  FMT_CONSTEXPR basic_string_view(type s) FMT_NOEXCEPT
+#ifdef FMT_STRING_VIEW
+  FMT_CONSTEXPR basic_string_view(FMT_STRING_VIEW<Char> s) FMT_NOEXCEPT
   : data_(s.data()), size_(s.size()) {}
+#endif
 
   /** Returns a pointer to the string data. */
   FMT_CONSTEXPR const Char *data() const { return data_; }
@@ -334,19 +428,68 @@ class basic_string_view {
 typedef basic_string_view<char> string_view;
 typedef basic_string_view<wchar_t> wstring_view;
 
+/**
+  \rst
+  The function ``to_string_view`` adapts non-intrusively any kind of string or
+  string-like type if the user provides a (possibly templated) overload of
+  ``to_string_view`` which takes an instance of the string class
+  ``StringType<Char>`` and returns a ``fmt::basic_string_view<Char>``.
+  The conversion function must live in the very same namespace as
+  ``StringType<Char>`` to be picked up by ADL. Non-templated string types
+  like f.e. QString must return a ``basic_string_view`` with a fixed matching
+  char type.
+
+  **Example**::
+
+    namespace my_ns {
+    inline string_view to_string_view(const my_string &s) {
+        return { s.data(), s.length() };
+    }
+    }
+
+    std::string message = fmt::format(my_string("The answer is {}"), 42);
+  \endrst
+ */
+template <typename Char>
+inline basic_string_view<Char>
+  to_string_view(basic_string_view<Char> s) { return s; }
+
+template <typename Char>
+inline basic_string_view<Char>
+  to_string_view(const std::basic_string<Char> &s) { return s; }
+
+template <typename Char>
+inline basic_string_view<Char> to_string_view(const Char *s) { return s; }
+
+#ifdef FMT_STRING_VIEW
+template <typename Char>
+inline basic_string_view<Char>
+  to_string_view(FMT_STRING_VIEW<Char> s) { return s; }
+#endif
+
+// A base class for compile-time strings. It is defined in the fmt namespace to
+// make formatting functions visible via ADL, e.g. format(fmt("{}"), 42).
+struct compile_string {};
+
+template <typename S>
+struct is_compile_string : std::is_base_of<compile_string, S> {};
+
+template <
+  typename S,
+  typename Enable = typename std::enable_if<is_compile_string<S>::value>::type>
+FMT_CONSTEXPR basic_string_view<typename S::char_type>
+  to_string_view(const S &s) { return s; }
+
 template <typename Context>
 class basic_format_arg;
 
 template <typename Context>
 class basic_format_args;
 
-template <typename T>
-struct no_formatter_error : std::false_type {};
-
 // A formatter for objects of type T.
 template <typename T, typename Char = char, typename Enable = void>
 struct formatter {
-  static_assert(no_formatter_error<T>::value,
+  static_assert(internal::no_formatter_error<T>::value,
     "don't know how to format the type, include fmt/ostream.h if it provides "
     "an operator<< that should be used");
 
@@ -358,143 +501,32 @@ struct formatter {
 };
 
 template <typename T, typename Char, typename Enable = void>
-struct convert_to_int {
-  enum {
-    value = !std::is_arithmetic<T>::value && std::is_convertible<T, int>::value
-  };
-};
+struct convert_to_int: std::integral_constant<
+  bool, !std::is_arithmetic<T>::value && std::is_convertible<T, int>::value> {};
 
 namespace internal {
 
-/** A contiguous memory buffer with an optional growing ability. */
-template <typename T>
-class basic_buffer {
- private:
-  basic_buffer(const basic_buffer &) = delete;
-  void operator=(const basic_buffer &) = delete;
-
-  T *ptr_;
-  std::size_t size_;
-  std::size_t capacity_;
-
- protected:
-  // Don't initialize ptr_ since it is not accessed to save a few cycles.
-  basic_buffer(std::size_t sz) FMT_NOEXCEPT: size_(sz), capacity_(sz) {}
-
-  basic_buffer(T *p = FMT_NULL, std::size_t sz = 0, std::size_t cap = 0)
-    FMT_NOEXCEPT: ptr_(p), size_(sz), capacity_(cap) {}
+struct dummy_string_view { typedef void char_type; };
+dummy_string_view to_string_view(...);
+using fmt::v5::to_string_view;
 
-  /** Sets the buffer data and capacity. */
-  void set(T *buf_data, std::size_t buf_capacity) FMT_NOEXCEPT {
-    ptr_ = buf_data;
-    capacity_ = buf_capacity;
-  }
-
-  /** Increases the buffer capacity to hold at least *capacity* elements. */
-  virtual void grow(std::size_t capacity) = 0;
-
- public:
-  typedef T value_type;
-  typedef const T &const_reference;
-
-  virtual ~basic_buffer() {}
-
-  T *begin() FMT_NOEXCEPT { return ptr_; }
-  T *end() FMT_NOEXCEPT { return ptr_ + size_; }
-
-  /** Returns the size of this buffer. */
-  std::size_t size() const FMT_NOEXCEPT { return size_; }
-
-  /** Returns the capacity of this buffer. */
-  std::size_t capacity() const FMT_NOEXCEPT { return capacity_; }
-
-  /** Returns a pointer to the buffer data. */
-  T *data() FMT_NOEXCEPT { return ptr_; }
-
-  /** Returns a pointer to the buffer data. */
-  const T *data() const FMT_NOEXCEPT { return ptr_; }
-
-  /**
-    Resizes the buffer. If T is a POD type new elements may not be initialized.
-   */
-  void resize(std::size_t new_size) {
-    reserve(new_size);
-    size_ = new_size;
-  }
-
-  /** Clears this buffer. */
-  void clear() { size_ = 0; }
-
-  /** Reserves space to store at least *capacity* elements. */
-  void reserve(std::size_t new_capacity) {
-    if (new_capacity > capacity_)
-      grow(new_capacity);
-  }
-
-  void push_back(const T &value) {
-    reserve(size_ + 1);
-    ptr_[size_++] = value;
-  }
-
-  /** Appends data to the end of the buffer. */
-  template <typename U>
-  void append(const U *begin, const U *end);
-
-  T &operator[](std::size_t index) { return ptr_[index]; }
-  const T &operator[](std::size_t index) const { return ptr_[index]; }
-};
-
-typedef basic_buffer<char> buffer;
-typedef basic_buffer<wchar_t> wbuffer;
-
-// A container-backed buffer.
-template <typename Container>
-class container_buffer : public basic_buffer<typename Container::value_type> {
- private:
-  Container &container_;
-
- protected:
-  void grow(std::size_t capacity) FMT_OVERRIDE {
-    container_.resize(capacity);
-    this->set(&container_[0], capacity);
-  }
-
- public:
-  explicit container_buffer(Container &c)
-    : basic_buffer<typename Container::value_type>(c.size()), container_(c) {}
-};
-
-struct error_handler {
-  FMT_CONSTEXPR error_handler() {}
-  FMT_CONSTEXPR error_handler(const error_handler &) {}
+// Specifies whether S is a string type convertible to fmt::basic_string_view.
+template <typename S>
+struct is_string : std::integral_constant<bool, !std::is_same<
+    dummy_string_view, decltype(to_string_view(declval<S>()))>::value> {};
 
-  // This function is intentionally not constexpr to give a compile-time error.
-  FMT_API void on_error(const char *message);
+template <typename S>
+struct char_t {
+  typedef decltype(to_string_view(declval<S>())) result;
+  typedef typename result::char_type type;
 };
 
-// Formatting of wide characters and strings into a narrow output is disallowed:
-//   fmt::format("{}", L"test"); // error
-// To fix this, use a wide format string:
-//   fmt::format(L"{}", L"test");
-template <typename Char>
-inline void require_wchar() {
-  static_assert(
-      std::is_same<wchar_t, Char>::value,
-      "formatting of wide characters into a narrow output is disallowed");
-}
-
 template <typename Char>
 struct named_arg_base;
 
 template <typename T, typename Char>
 struct named_arg;
 
-template <typename T>
-struct is_named_arg : std::false_type {};
-
-template <typename T, typename Char>
-struct is_named_arg<named_arg<T, Char>> : std::true_type {};
-
 enum type {
   none_type, named_arg_type,
   // Integer types should go first,
@@ -639,15 +671,17 @@ FMT_MAKE_VALUE_SAME(long_long_type, long long)
 FMT_MAKE_VALUE_SAME(ulong_long_type, unsigned long long)
 FMT_MAKE_VALUE(int_type, signed char, int)
 FMT_MAKE_VALUE(uint_type, unsigned char, unsigned)
-FMT_MAKE_VALUE(char_type, char, int)
 
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// This doesn't use FMT_MAKE_VALUE because of ambiguity in gcc 4.4.
+template <typename C, typename Char>
+FMT_CONSTEXPR typename std::enable_if<
+  std::is_same<typename C::char_type, Char>::value,
+  init<C, int, char_type>>::type make_value(Char val) { return val; }
+
 template <typename C>
-inline init<C, int, char_type> make_value(wchar_t val) {
-  require_wchar<typename C::char_type>();
-  return static_cast<int>(val);
-}
-#endif
+FMT_CONSTEXPR typename std::enable_if<
+  !std::is_same<typename C::char_type, char>::value,
+  init<C, int, char_type>>::type make_value(char val) { return val; }
 
 FMT_MAKE_VALUE(double_type, float, double)
 FMT_MAKE_VALUE_SAME(double_type, double)
@@ -695,15 +729,17 @@ inline typename std::enable_if<
 
 template <typename C, typename T, typename Char = typename C::char_type>
 inline typename std::enable_if<
-    std::is_constructible<basic_string_view<Char>, T>::value,
+    is_constructible<basic_string_view<Char>, T>::value &&
+    !internal::is_string<T>::value,
     init<C, basic_string_view<Char>, string_type>>::type
   make_value(const T &val) { return basic_string_view<Char>(val); }
 
 template <typename C, typename T, typename Char = typename C::char_type>
 inline typename std::enable_if<
-    !convert_to_int<T, Char>::value &&
+    !convert_to_int<T, Char>::value && !std::is_same<T, Char>::value &&
     !std::is_convertible<T, basic_string_view<Char>>::value &&
-    !std::is_constructible<basic_string_view<Char>, T>::value,
+    !is_constructible<basic_string_view<Char>, T>::value &&
+    !internal::is_string<T>::value,
     // Implicit conversion to std::string is not handled here because it's
     // unsafe: https://github.com/fmtlib/fmt/issues/729
     init<C, const T &, custom_type>>::type
@@ -717,8 +753,21 @@ init<C, const void*, named_arg_type>
   return static_cast<const void*>(&val);
 }
 
+template <typename C, typename S>
+FMT_CONSTEXPR11 typename std::enable_if<
+  internal::is_string<S>::value,
+  init<C, basic_string_view<typename C::char_type>, string_type>>::type
+    make_value(const S &val) {
+  // Handle adapted strings.
+  static_assert(std::is_same<
+    typename C::char_type, typename internal::char_t<S>::type>::value,
+    "mismatch between char-types of context and argument");
+  return to_string_view(val);
+}
+
 // Maximum number of arguments with packed types.
 enum { max_packed_args = 15 };
+enum : unsigned long long { is_unpacked_bit = 1ull << 63 };
 
 template <typename Context>
 class arg_map;
@@ -738,7 +787,7 @@ class basic_format_arg {
 
   template <typename Visitor, typename Ctx>
   friend FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
-    visit(Visitor &&vis, const basic_format_arg<Ctx> &arg);
+    visit_format_arg(Visitor &&vis, const basic_format_arg<Ctx> &arg);
 
   friend class basic_format_args<Context>;
   friend class internal::arg_map<Context>;
@@ -779,7 +828,7 @@ struct monostate {};
  */
 template <typename Visitor, typename Context>
 FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
-    visit(Visitor &&vis, const basic_format_arg<Context> &arg) {
+    visit_format_arg(Visitor &&vis, const basic_format_arg<Context> &arg) {
   typedef typename Context::char_type char_type;
   switch (arg.type_) {
   case internal::none_type:
@@ -816,6 +865,12 @@ FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
   return vis(monostate());
 }
 
+template <typename Visitor, typename Context>
+FMT_CONSTEXPR typename internal::result_of<Visitor(int)>::type
+    visit(Visitor &&vis, const basic_format_arg<Context> &arg) {
+  return visit_format_arg(std::forward<Visitor>(vis), arg);
+}
+
 // Parsing context consisting of a format string range being parsed and an
 // argument counter for automatic indexing.
 template <typename Char, typename ErrorHandler = internal::error_handler>
@@ -866,6 +921,10 @@ class basic_parse_context : private ErrorHandler {
   FMT_CONSTEXPR ErrorHandler error_handler() const { return *this; }
 };
 
+typedef basic_parse_context<char> format_parse_context;
+typedef basic_parse_context<wchar_t> wformat_parse_context;
+
+// DEPRECATED!
 typedef basic_parse_context<char> parse_context;
 typedef basic_parse_context<wchar_t> wparse_context;
 
@@ -904,10 +963,26 @@ class arg_map {
       if (it->name == name)
         return it->arg;
     }
-    return basic_format_arg<Context>();
+    return {};
   }
 };
 
+// A type-erased reference to an std::locale to avoid heavy <locale> include.
+class locale_ref {
+ private:
+  const void *locale_;  // A type-erased pointer to std::locale.
+  friend class locale;
+
+ public:
+  locale_ref() : locale_(FMT_NULL) {}
+
+  template <typename Locale>
+  explicit locale_ref(const Locale &loc);
+
+  template <typename Locale>
+  Locale get() const;
+};
+
 template <typename OutputIt, typename Context, typename Char>
 class context_base {
  public:
@@ -917,14 +992,16 @@ class context_base {
   basic_parse_context<Char> parse_context_;
   iterator out_;
   basic_format_args<Context> args_;
+  locale_ref loc_;
 
  protected:
   typedef Char char_type;
   typedef basic_format_arg<Context> format_arg;
 
   context_base(OutputIt out, basic_string_view<char_type> format_str,
-               basic_format_args<Context> ctx_args)
-  : parse_context_(format_str), out_(out), args_(ctx_args) {}
+               basic_format_args<Context> ctx_args,
+               locale_ref loc = locale_ref())
+  : parse_context_(format_str), out_(out), args_(ctx_args), loc_(loc) {}
 
   // Returns the argument with specified index.
   format_arg do_get_arg(unsigned arg_id) {
@@ -942,9 +1019,9 @@ class context_base {
   }
 
  public:
-  basic_parse_context<char_type> &parse_context() {
-    return parse_context_;
-  }
+  basic_parse_context<char_type> &parse_context() { return parse_context_; }
+  basic_format_args<Context> args() const { return args_; } // DEPRECATED!
+  basic_format_arg<Context> arg(unsigned id) const { return args_.get(id); }
 
   internal::error_handler error_handler() {
     return parse_context_.error_handler();
@@ -959,18 +1036,42 @@ class context_base {
   // Advances the begin iterator to ``it``.
   void advance_to(iterator it) { out_ = it; }
 
-  basic_format_args<Context> args() const { return args_; }
+  locale_ref locale() { return loc_; }
 };
 
-// Extracts a reference to the container from back_insert_iterator.
-template <typename Container>
-inline Container &get_container(std::back_insert_iterator<Container> it) {
-  typedef std::back_insert_iterator<Container> bi_iterator;
-  struct accessor: bi_iterator {
-    accessor(bi_iterator iter) : bi_iterator(iter) {}
-    using bi_iterator::container;
-  };
-  return *accessor(it).container;
+template <typename Context, typename T>
+struct get_type {
+  typedef decltype(make_value<Context>(
+        declval<typename std::decay<T>::type&>())) value_type;
+  static const type value = value_type::type_tag;
+};
+
+template <typename Context>
+FMT_CONSTEXPR11 unsigned long long get_types() { return 0; }
+
+template <typename Context, typename Arg, typename... Args>
+FMT_CONSTEXPR11 unsigned long long get_types() {
+  return get_type<Context, Arg>::value | (get_types<Context, Args...>() << 4);
+}
+
+template <typename Context, typename T>
+FMT_CONSTEXPR basic_format_arg<Context> make_arg(const T &value) {
+  basic_format_arg<Context> arg;
+  arg.type_ = get_type<Context, T>::value;
+  arg.value_ = make_value<Context>(value);
+  return arg;
+}
+
+template <bool IS_PACKED, typename Context, typename T>
+inline typename std::enable_if<IS_PACKED, value<Context>>::type
+    make_arg(const T &value) {
+  return make_value<Context>(value);
+}
+
+template <bool IS_PACKED, typename Context, typename T>
+inline typename std::enable_if<!IS_PACKED, basic_format_arg<Context>>::type
+    make_arg(const T &value) {
+  return make_arg<Context>(value);
 }
 }  // namespace internal
 
@@ -1005,8 +1106,9 @@ class basic_format_context :
    stored in the object so make sure they have appropriate lifetimes.
    */
   basic_format_context(OutputIt out, basic_string_view<char_type> format_str,
-                basic_format_args<basic_format_context> ctx_args)
-    : base(out, format_str, ctx_args) {}
+                       basic_format_args<basic_format_context> ctx_args,
+                       internal::locale_ref loc = internal::locale_ref())
+    : base(out, format_str, ctx_args, loc) {}
 
   format_arg next_arg() {
     return this->do_get_arg(this->parse_context().next_arg_id());
@@ -1026,43 +1128,6 @@ struct buffer_context {
 typedef buffer_context<char>::type format_context;
 typedef buffer_context<wchar_t>::type wformat_context;
 
-namespace internal {
-template <typename Context, typename T>
-struct get_type {
-  typedef decltype(make_value<Context>(
-        declval<typename std::decay<T>::type&>())) value_type;
-  static const type value = value_type::type_tag;
-};
-
-template <typename Context>
-FMT_CONSTEXPR11 unsigned long long get_types() { return 0; }
-
-template <typename Context, typename Arg, typename... Args>
-FMT_CONSTEXPR11 unsigned long long get_types() {
-  return get_type<Context, Arg>::value | (get_types<Context, Args...>() << 4);
-}
-
-template <typename Context, typename T>
-FMT_CONSTEXPR basic_format_arg<Context> make_arg(const T &value) {
-  basic_format_arg<Context> arg;
-  arg.type_ = get_type<Context, T>::value;
-  arg.value_ = make_value<Context>(value);
-  return arg;
-}
-
-template <bool IS_PACKED, typename Context, typename T>
-inline typename std::enable_if<IS_PACKED, value<Context>>::type
-    make_arg(const T &value) {
-  return make_value<Context>(value);
-}
-
-template <bool IS_PACKED, typename Context, typename T>
-inline typename std::enable_if<!IS_PACKED, basic_format_arg<Context>>::type
-    make_arg(const T &value) {
-  return make_arg<Context>(value);
-}
-}  // namespace internal
-
 /**
   \rst
   An array of references to arguments. It can be implicitly converted into
@@ -1088,17 +1153,17 @@ class format_arg_store {
 
   friend class basic_format_args<Context>;
 
-  static FMT_CONSTEXPR11 long long get_types() {
+  static FMT_CONSTEXPR11 unsigned long long get_types() {
     return IS_PACKED ?
-      static_cast<long long>(internal::get_types<Context, Args...>()) :
-      -static_cast<long long>(NUM_ARGS);
+      internal::get_types<Context, Args...>() :
+      internal::is_unpacked_bit | NUM_ARGS;
   }
 
  public:
 #if FMT_USE_CONSTEXPR11
-  static FMT_CONSTEXPR11 long long TYPES = get_types();
+  static FMT_CONSTEXPR11 unsigned long long TYPES = get_types();
 #else
-  static const long long TYPES;
+  static const unsigned long long TYPES;
 #endif
 
 #if (FMT_GCC_VERSION && FMT_GCC_VERSION <= 405) || \
@@ -1117,7 +1182,8 @@ class format_arg_store {
 
 #if !FMT_USE_CONSTEXPR11
 template <typename Context, typename ...Args>
-const long long format_arg_store<Context, Args...>::TYPES = get_types();
+const unsigned long long format_arg_store<Context, Args...>::TYPES =
+    get_types();
 #endif
 
 /**
@@ -1127,17 +1193,9 @@ const long long format_arg_store<Context, Args...>::TYPES = get_types();
   can be omitted in which case it defaults to `~fmt::context`.
   \endrst
  */
-template <typename Context, typename ...Args>
+template <typename Context = format_context, typename ...Args>
 inline format_arg_store<Context, Args...>
-    make_format_args(const Args & ... args) {
-  return format_arg_store<Context, Args...>(args...);
-}
-
-template <typename ...Args>
-inline format_arg_store<format_context, Args...>
-    make_format_args(const Args & ... args) {
-  return format_arg_store<format_context, Args...>(args...);
-}
+  make_format_args(const Args &... args) { return {args...}; }
 
 /** Formatting arguments. */
 template <typename Context>
@@ -1160,11 +1218,12 @@ class basic_format_args {
     const format_arg *args_;
   };
 
+  bool is_packed() const { return (types_ & internal::is_unpacked_bit) == 0; }
+
   typename internal::type type(unsigned index) const {
     unsigned shift = index * 4;
-    unsigned long long mask = 0xf;
     return static_cast<typename internal::type>(
-      (types_ & (mask << shift)) >> shift);
+      (types_ & (0xfull << shift)) >> shift);
   }
 
   friend class internal::arg_map<Context>;
@@ -1174,10 +1233,8 @@ class basic_format_args {
 
   format_arg do_get(size_type index) const {
     format_arg arg;
-    long long signed_types = static_cast<long long>(types_);
-    if (signed_types < 0) {
-      unsigned long long num_args =
-          static_cast<unsigned long long>(-signed_types);
+    if (!is_packed()) {
+      auto num_args = max_size();
       if (index < num_args)
         arg = args_[index];
       return arg;
@@ -1212,7 +1269,7 @@ class basic_format_args {
    \endrst
    */
   basic_format_args(const format_arg *args, size_type count)
-  : types_(-static_cast<int64_t>(count)) {
+    : types_(internal::is_unpacked_bit | count) {
     set_data(args);
   }
 
@@ -1224,34 +1281,58 @@ class basic_format_args {
     return arg;
   }
 
-  unsigned max_size() const {
-    long long signed_types = static_cast<long long>(types_);
-    return static_cast<unsigned>(
-        signed_types < 0 ?
-        -signed_types : static_cast<long long>(internal::max_packed_args));
+  size_type max_size() const {
+    unsigned long long max_packed = internal::max_packed_args;
+    return static_cast<size_type>(
+      is_packed() ? max_packed : types_ & ~internal::is_unpacked_bit);
   }
 };
 
 /** An alias to ``basic_format_args<context>``. */
 // It is a separate type rather than a typedef to make symbols readable.
-struct format_args: basic_format_args<format_context> {
+struct format_args : basic_format_args<format_context> {
   template <typename ...Args>
-  format_args(Args && ... arg)
+  format_args(Args &&... arg)
   : basic_format_args<format_context>(std::forward<Args>(arg)...) {}
 };
 struct wformat_args : basic_format_args<wformat_context> {
   template <typename ...Args>
-  wformat_args(Args && ... arg)
+  wformat_args(Args &&... arg)
   : basic_format_args<wformat_context>(std::forward<Args>(arg)...) {}
 };
 
+#ifndef FMT_USE_ALIAS_TEMPLATES
+# define FMT_USE_ALIAS_TEMPLATES FMT_HAS_FEATURE(cxx_alias_templates)
+#endif
+#if FMT_USE_ALIAS_TEMPLATES
+/** String's character type. */
+template <typename S>
+using char_t = typename std::enable_if<internal::is_string<S>::value,
+  typename internal::char_t<S>::type>::type;
+#define FMT_CHAR(S) fmt::char_t<S>
+
+template <typename S, typename T>
+using enable_if_string_t =
+  typename std::enable_if<internal::is_string<S>::value, T>::type;
+#define FMT_ENABLE_IF_STRING(S, T) enable_if_string_t<S, T>
+#else
+template <typename S>
+struct char_t : std::enable_if<
+    internal::is_string<S>::value, typename internal::char_t<S>::type> {};
+#define FMT_CHAR(S) typename char_t<S>::type
+
+#define FMT_ENABLE_IF_STRING(S, T) \
+  typename std::enable_if<internal::is_string<S>::value, T>::type
+#endif
+
 namespace internal {
 template <typename Char>
 struct named_arg_base {
   basic_string_view<Char> name;
 
   // Serialized value<context>.
-  mutable char data[sizeof(basic_format_arg<format_context>)];
+  mutable char data[
+    sizeof(basic_format_arg<typename buffer_context<Char>::type>)];
 
   named_arg_base(basic_string_view<Char> nm) : name(nm) {}
 
@@ -1270,6 +1351,36 @@ struct named_arg : named_arg_base<Char> {
   named_arg(basic_string_view<Char> name, const T &val)
     : named_arg_base<Char>(name), value(val) {}
 };
+
+template <typename... Args, typename S>
+inline typename std::enable_if<!is_compile_string<S>::value>::type
+  check_format_string(const S &) {}
+template <typename... Args, typename S>
+typename std::enable_if<is_compile_string<S>::value>::type
+  check_format_string(S);
+
+template <typename S, typename... Args>
+struct checked_args : format_arg_store<
+  typename buffer_context<FMT_CHAR(S)>::type, Args...> {
+  typedef typename buffer_context<FMT_CHAR(S)>::type context;
+
+  checked_args(const S &format_str, const Args &... args):
+    format_arg_store<context, Args...>(args...) {
+    internal::check_format_string<Args...>(format_str);
+  }
+
+  basic_format_args<context> operator*() const { return *this; }
+};
+
+template <typename Char>
+std::basic_string<Char> vformat(
+  basic_string_view<Char> format_str,
+  basic_format_args<typename buffer_context<Char>::type> args);
+
+template <typename Char>
+typename buffer_context<Char>::type::iterator vformat_to(
+  internal::basic_buffer<Char> &buf, basic_string_view<Char> format_str,
+  basic_format_args<typename buffer_context<Char>::type> args);
 }
 
 /**
@@ -1283,142 +1394,55 @@ struct named_arg : named_arg_base<Char> {
  */
 template <typename T>
 inline internal::named_arg<T, char> arg(string_view name, const T &arg) {
-  return internal::named_arg<T, char>(name, arg);
+  return {name, arg};
 }
 
 template <typename T>
 inline internal::named_arg<T, wchar_t> arg(wstring_view name, const T &arg) {
-  return internal::named_arg<T, wchar_t>(name, arg);
+  return {name, arg};
 }
 
-// This function template is deleted intentionally to disable nested named
-// arguments as in ``format("{}", arg("a", arg("b", 42)))``.
+// Disable nested named arguments, e.g. ``arg("a", arg("b", 42))``.
 template <typename S, typename T, typename Char>
 void arg(S, internal::named_arg<T, Char>) = delete;
 
-// A base class for compile-time strings. It is defined in the fmt namespace to
-// make formatting functions visible via ADL, e.g. format(fmt("{}"), 42).
-struct compile_string {};
-
-namespace internal {
-// If S is a format string type, format_string_traints<S>::char_type gives its
-// character type.
-template <typename S, typename Enable = void>
-struct format_string_traits {
- private:
-  // Use constructability as a way to detect if format_string_traits is
-  // specialized because other methods are broken on MSVC2013.
-  format_string_traits();
-};
-
-template <typename Char>
-struct format_string_traits_base { typedef Char char_type; };
-
-template <typename Char>
-struct format_string_traits<Char *> : format_string_traits_base<Char> {};
-
-template <typename Char>
-struct format_string_traits<const Char *> : format_string_traits_base<Char> {};
-
-template <typename Char, std::size_t N>
-struct format_string_traits<Char[N]> : format_string_traits_base<Char> {};
-
-template <typename Char, std::size_t N>
-struct format_string_traits<const Char[N]> : format_string_traits_base<Char> {};
-
-template <typename Char>
-struct format_string_traits<std::basic_string<Char>> :
-    format_string_traits_base<Char> {};
-
-template <typename S>
-struct format_string_traits<
-    S, typename std::enable_if<std::is_base_of<
-         basic_string_view<typename S::char_type>, S>::value>::type> :
-    format_string_traits_base<typename S::char_type> {};
-
-template <typename S>
-struct is_format_string :
-    std::integral_constant<
-      bool, std::is_constructible<format_string_traits<S>>::value> {};
-
-template <typename S>
-struct is_compile_string :
-    std::integral_constant<bool, std::is_base_of<compile_string, S>::value> {};
-
-template <typename... Args, typename S>
-inline typename std::enable_if<!is_compile_string<S>::value>::type
-    check_format_string(const S &) {}
-template <typename... Args, typename S>
-typename std::enable_if<is_compile_string<S>::value>::type
-    check_format_string(S);
-
-template <typename Char>
-std::basic_string<Char> vformat(
-    basic_string_view<Char> format_str,
-    basic_format_args<typename buffer_context<Char>::type> args);
-}  // namespace internal
-
-format_context::iterator vformat_to(
-    internal::buffer &buf, string_view format_str, format_args args);
-wformat_context::iterator vformat_to(
-    internal::wbuffer &buf, wstring_view format_str, wformat_args args);
-
 template <typename Container>
-struct is_contiguous : std::false_type {};
+struct is_contiguous: std::false_type {};
 
 template <typename Char>
-struct is_contiguous<std::basic_string<Char>: std::true_type {};
+struct is_contiguous<std::basic_string<Char> >: std::true_type {};
 
 template <typename Char>
-struct is_contiguous<internal::basic_buffer<Char>: std::true_type {};
+struct is_contiguous<internal::basic_buffer<Char> >: std::true_type {};
 
 /** Formats a string and writes the output to ``out``. */
-template <typename Container>
-typename std::enable_if<
-  is_contiguous<Container>::value, std::back_insert_iterator<Container>>::type
-    vformat_to(std::back_insert_iterator<Container> out,
-               string_view format_str, format_args args) {
-  internal::container_buffer<Container> buf(internal::get_container(out));
-  vformat_to(buf, format_str, args);
-  return out;
-}
-
-template <typename Container>
+template <typename Container, typename S>
 typename std::enable_if<
-  is_contiguous<Container>::value, std::back_insert_iterator<Container>>::type
-  vformat_to(std::back_insert_iterator<Container> out,
-             wstring_view format_str, wformat_args args) {
+    is_contiguous<Container>::value, std::back_insert_iterator<Container>>::type
+  vformat_to(
+    std::back_insert_iterator<Container> out,
+    const S &format_str,
+    basic_format_args<typename buffer_context<FMT_CHAR(S)>::type> args) {
   internal::container_buffer<Container> buf(internal::get_container(out));
-  vformat_to(buf, format_str, args);
+  internal::vformat_to(buf, to_string_view(format_str), args);
   return out;
 }
 
-template <typename Container, typename... Args>
-inline typename std::enable_if<
-  is_contiguous<Container>::value, std::back_insert_iterator<Container>>::type
-    format_to(std::back_insert_iterator<Container> out,
-              string_view format_str, const Args & ... args) {
-  format_arg_store<format_context, Args...> as{args...};
-  return vformat_to(out, format_str, as);
-}
-
-template <typename Container, typename... Args>
+template <typename Container, typename S, typename... Args>
 inline typename std::enable_if<
-  is_contiguous<Container>::value, std::back_insert_iterator<Container>>::type
-    format_to(std::back_insert_iterator<Container> out,
-              wstring_view format_str, const Args & ... args) {
-  return vformat_to(out, format_str,
-                    make_format_args<wformat_context>(args...));
+  is_contiguous<Container>::value && internal::is_string<S>::value,
+  std::back_insert_iterator<Container>>::type
+    format_to(std::back_insert_iterator<Container> out, const S &format_str,
+              const Args &... args) {
+  internal::checked_args<S, Args...> ca(format_str, args...);
+  return vformat_to(out, to_string_view(format_str), *ca);
 }
 
-template <
-    typename String,
-    typename Char = typename internal::format_string_traits<String>::char_type>
+template <typename S, typename Char = FMT_CHAR(S)>
 inline std::basic_string<Char> vformat(
-    const String &format_str,
+    const S &format_str,
     basic_format_args<typename buffer_context<Char>::type> args) {
-  // Convert format string to string_view to reduce the number of overloads.
-  return internal::vformat(basic_string_view<Char>(format_str), args);
+  return internal::vformat(to_string_view(format_str), args);
 }
 
 /**
@@ -1431,19 +1455,12 @@ inline std::basic_string<Char> vformat(
     std::string message = fmt::format("The answer is {}", 42);
   \endrst
 */
-template <typename String, typename... Args>
-inline std::basic_string<
-  typename internal::format_string_traits<String>::char_type>
-    format(const String &format_str, const Args & ... args) {
-  internal::check_format_string<Args...>(format_str);
-  // This should be just
-  //   return vformat(format_str, make_format_args(args...));
-  // but gcc has trouble optimizing the latter, so break it down.
-  typedef typename internal::format_string_traits<String>::char_type char_t;
-  typedef typename buffer_context<char_t>::type context_t;
-  format_arg_store<context_t, Args...> as{args...};
+template <typename S, typename... Args>
+inline std::basic_string<FMT_CHAR(S)> format(
+    const S &format_str, const Args &... args) {
   return internal::vformat(
-      basic_string_view<char_t>(format_str), basic_format_args<context_t>(as));
+    to_string_view(format_str),
+    *internal::checked_args<S, Args...>(format_str, args...));
 }
 
 FMT_API void vprint(std::FILE *f, string_view format_str, format_args args);
@@ -1451,27 +1468,20 @@ FMT_API void vprint(std::FILE *f, wstring_view format_str, wformat_args args);
 
 /**
   \rst
-  Prints formatted data to the file *f*.
+  Prints formatted data to the file *f*. For wide format strings,
+  *f* should be in wide-oriented mode set via ``fwide(f, 1)`` or
+  ``_setmode(_fileno(f), _O_U8TEXT)`` on Windows.
 
   **Example**::
 
     fmt::print(stderr, "Don't {}!", "panic");
   \endrst
  */
-template <typename... Args>
-inline void print(std::FILE *f, string_view format_str, const Args & ... args) {
-  format_arg_store<format_context, Args...> as(args...);
-  vprint(f, format_str, as);
-}
-/**
-  Prints formatted data to the file *f* which should be in wide-oriented mode
-  set via ``fwide(f, 1)`` or ``_setmode(_fileno(f), _O_U8TEXT)`` on Windows.
- */
-template <typename... Args>
-inline void print(std::FILE *f, wstring_view format_str,
-                  const Args & ... args) {
-  format_arg_store<wformat_context, Args...> as(args...);
-  vprint(f, format_str, as);
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, void)
+    print(std::FILE *f, const S &format_str, const Args &... args) {
+  vprint(f, to_string_view(format_str),
+         internal::checked_args<S, Args...>(format_str, args...));
 }
 
 FMT_API void vprint(string_view format_str, format_args args);
@@ -1486,16 +1496,11 @@ FMT_API void vprint(wstring_view format_str, wformat_args args);
     fmt::print("Elapsed time: {0:.2f} seconds", 1.23);
   \endrst
  */
-template <typename... Args>
-inline void print(string_view format_str, const Args & ... args) {
-  format_arg_store<format_context, Args...> as{args...};
-  vprint(format_str, as);
-}
-
-template <typename... Args>
-inline void print(wstring_view format_str, const Args & ... args) {
-  format_arg_store<wformat_context, Args...> as(args...);
-  vprint(format_str, as);
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, void)
+    print(const S &format_str, const Args &... args) {
+  vprint(to_string_view(format_str),
+         internal::checked_args<S, Args...>(format_str, args...));
 }
 FMT_END_NAMESPACE
 
index 56c4d581dffc5746cf4149f51371214c2682338d..9b7396359f5361f8f38aedaffe5dd2486e17a817 100644 (file)
@@ -136,12 +136,14 @@ int safe_strerror(
             ERANGE : result;
     }
 
+#if !FMT_MSC_VER
     // Fallback to strerror if strerror_r and strerror_s are not available.
     int fallback(internal::null<>) {
       errno = 0;
       buffer_ = strerror(error_code_);
       return errno;
     }
+#endif
 
    public:
     dispatcher(int err_code, char *&buf, std::size_t buf_size)
@@ -192,34 +194,39 @@ void report_error(FormatFunc func, int error_code,
 }
 }  // namespace
 
-#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR)
-class locale {
- private:
-  std::locale locale_;
-
- public:
-  explicit locale(std::locale loc = std::locale()) : locale_(loc) {}
-  std::locale get() { return locale_; }
-};
-
-FMT_FUNC size_t internal::count_code_points(u8string_view s) {
+FMT_FUNC size_t internal::count_code_points(basic_string_view<char8_t> s) {
   const char8_t *data = s.data();
-  int num_code_points = 0;
+  size_t num_code_points = 0;
   for (size_t i = 0, size = s.size(); i != size; ++i) {
-    if ((data[i].value & 0xc0) != 0x80)
+    if ((data[i] & 0xc0) != 0x80)
       ++num_code_points;
   }
   return num_code_points;
 }
 
+#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR)
+namespace internal {
+
+template <typename Locale>
+locale_ref::locale_ref(const Locale &loc) : locale_(&loc) {
+  static_assert(std::is_same<Locale, std::locale>::value, "");
+}
+
+template <typename Locale>
+Locale locale_ref::get() const {
+  static_assert(std::is_same<Locale, std::locale>::value, "");
+  return locale_ ? *static_cast<const std::locale*>(locale_) : std::locale();
+}
+
 template <typename Char>
-FMT_FUNC Char internal::thousands_sep(locale_provider *lp) {
-  std::locale loc = lp ? lp->locale().get() : std::locale();
-  return std::use_facet<std::numpunct<Char>>(loc).thousands_sep();
+FMT_FUNC Char thousands_sep_impl(locale_ref loc) {
+  return std::use_facet<std::numpunct<Char> >(
+    loc.get<std::locale>()).thousands_sep();
+}
 }
 #else
 template <typename Char>
-FMT_FUNC Char internal::thousands_sep(locale_provider *lp) {
+FMT_FUNC Char internal::thousands_sep_impl(locale_ref) {
   return FMT_STATIC_THOUSANDS_SEPARATOR;
 }
 #endif
@@ -236,19 +243,19 @@ FMT_FUNC void system_error::init(
 namespace internal {
 template <typename T>
 int char_traits<char>::format_float(
-    char *buffer, std::size_t size, const char *format, int precision, T value) {
+    char *buf, std::size_t size, const char *format, int precision, T value) {
   return precision < 0 ?
-      FMT_SNPRINTF(buffer, size, format, value) :
-      FMT_SNPRINTF(buffer, size, format, precision, value);
+      FMT_SNPRINTF(buf, size, format, value) :
+      FMT_SNPRINTF(buf, size, format, precision, value);
 }
 
 template <typename T>
 int char_traits<wchar_t>::format_float(
-    wchar_t *buffer, std::size_t size, const wchar_t *format, int precision,
+    wchar_t *buf, std::size_t size, const wchar_t *format, int precision,
     T value) {
   return precision < 0 ?
-      FMT_SWPRINTF(buffer, size, format, value) :
-      FMT_SWPRINTF(buffer, size, format, precision, value);
+      FMT_SWPRINTF(buf, size, format, value) :
+      FMT_SWPRINTF(buf, size, format, precision, value);
 }
 
 template <typename T>
@@ -337,6 +344,8 @@ const int16_t basic_data<T>::POW10_EXPONENTS[] = {
     827,   853,   880,   907,   933,   960,   986,  1013,  1039,  1066
 };
 
+template <typename T> const char basic_data<T>::FOREGROUND_COLOR[] = "\x1b[38;2;";
+template <typename T> const char basic_data<T>::BACKGROUND_COLOR[] = "\x1b[48;2;";
 template <typename T> const char basic_data<T>::RESET_COLOR[] = "\x1b[0m";
 template <typename T> const wchar_t basic_data<T>::WRESET_COLOR[] = L"\x1b[0m";
 
@@ -363,7 +372,7 @@ class fp {
     sizeof(significand_type) * char_size;
 
   fp(): f(0), e(0) {}
-  fp(uint64_t f, int e): f(f), e(e) {}
+  fp(uint64_t f_val, int e_val): f(f_val), e(e_val) {}
 
   // Constructs fp from an IEEE754 double. It is a template to prevent compile
   // errors on platforms where double is not IEEE754.
@@ -454,19 +463,28 @@ FMT_FUNC fp get_cached_power(int min_exponent, int &pow10_exponent) {
   return fp(data::POW10_SIGNIFICANDS[index], data::POW10_EXPONENTS[index]);
 }
 
+FMT_FUNC bool grisu2_round(
+    char *buf, ptrdiff_t &size, size_t max_digits, uint64_t delta,
+    uint64_t remainder, uint64_t exp, uint64_t diff, int &exp10) {
+  while (remainder < diff && delta - remainder >= exp &&
+        (remainder + exp < diff || diff - remainder > remainder + exp - diff)) {
+    --buf[size - 1];
+    remainder += exp;
+  }
+  if (size > static_cast<ptrdiff_t>(max_digits)) {
+    --size;
+    ++exp10;
+    if (buf[size] >= '5')
+      return false;
+  }
+  return true;
+}
+
 // Generates output using Grisu2 digit-gen algorithm.
-FMT_FUNC void grisu2_gen_digits(
-    const fp &scaled_value, const fp &scaled_upper, uint64_t delta,
-    char *buffer, size_t &size, int &dec_exp) {
-  internal::fp one(1ull << -scaled_upper.e, scaled_upper.e);
-  // hi (p1 in Grisu) contains the most significant digits of scaled_upper.
-  // hi = floor(scaled_upper / one).
-  uint32_t hi = static_cast<uint32_t>(scaled_upper.f >> -one.e);
-  // lo (p2 in Grisu) contains the least significants digits of scaled_upper.
-  // lo = scaled_upper mod 1.
-  uint64_t lo = scaled_upper.f & (one.f - 1);
-  size = 0;
-  auto exp = count_digits(hi);  // kappa in Grisu.
+FMT_FUNC bool grisu2_gen_digits(
+    char *buf, ptrdiff_t &size, uint32_t hi, uint64_t lo, int &exp,
+    uint64_t delta, const fp &one, const fp &diff, size_t max_digits) {
+  // Generate digits for the most significant part (hi).
   while (exp > 0) {
     uint32_t digit = 0;
     // This optimization by miloyip reduces the number of integer divisions by
@@ -486,208 +504,304 @@ FMT_FUNC void grisu2_gen_digits(
       FMT_ASSERT(false, "invalid number of digits");
     }
     if (digit != 0 || size != 0)
-      buffer[size++] = static_cast<char>('0' + digit);
+      buf[size++] = static_cast<char>('0' + digit);
     --exp;
     uint64_t remainder = (static_cast<uint64_t>(hi) << -one.e) + lo;
-    if (remainder <= delta) {
-      dec_exp += exp;
-      // TODO: use scaled_value
-      (void)scaled_value;
-      return;
+    if (remainder <= delta || size > static_cast<ptrdiff_t>(max_digits)) {
+      return grisu2_round(
+            buf, size, max_digits, delta, remainder,
+            static_cast<uint64_t>(data::POWERS_OF_10_32[exp]) << -one.e,
+            diff.f, exp);
     }
   }
+  // Generate digits for the least significant part (lo).
   for (;;) {
     lo *= 10;
     delta *= 10;
     char digit = static_cast<char>(lo >> -one.e);
     if (digit != 0 || size != 0)
-      buffer[size++] = static_cast<char>('0' + digit);
+      buf[size++] = static_cast<char>('0' + digit);
     lo &= one.f - 1;
     --exp;
-    if (lo < delta) {
-      dec_exp += exp;
-      return;
+    if (lo < delta || size > static_cast<ptrdiff_t>(max_digits)) {
+      return grisu2_round(buf, size, max_digits, delta, lo, one.f,
+                          diff.f * data::POWERS_OF_10_32[-exp], exp);
     }
   }
 }
 
-FMT_FUNC void grisu2_format_positive(double value, char *buffer, size_t &size,
-                                     int &dec_exp) {
-  FMT_ASSERT(value > 0, "value is nonpositive");
-  fp fp_value(value);
-  fp lower, upper;  // w^- and w^+ in the Grisu paper.
-  fp_value.compute_boundaries(lower, upper);
-  // Find a cached power of 10 close to 1 / upper.
-  const int min_exp = -60;  // alpha in Grisu.
-  auto dec_pow = get_cached_power(  // \tilde{c}_{-k} in Grisu.
-      min_exp - (upper.e + fp::significand_size), dec_exp);
-  dec_exp = -dec_exp;
-  fp_value.normalize();
-  fp scaled_value = fp_value * dec_pow;
-  fp scaled_lower = lower * dec_pow;  // \tilde{M}^- in Grisu.
-  fp scaled_upper = upper * dec_pow;  // \tilde{M}^+ in Grisu.
-  ++scaled_lower.f;  // \tilde{M}^- + 1 ulp -> M^-_{\uparrow}.
-  --scaled_upper.f;  // \tilde{M}^+ - 1 ulp -> M^+_{\downarrow}.
-  uint64_t delta = scaled_upper.f - scaled_lower.f;
-  grisu2_gen_digits(scaled_value, scaled_upper, delta, buffer, size, dec_exp);
-}
-
-FMT_FUNC void round(char *buffer, size_t &size, int &exp,
-                    int digits_to_remove) {
-  size -= to_unsigned(digits_to_remove);
-  exp += digits_to_remove;
-  int digit = buffer[size] - '0';
-  // TODO: proper rounding and carry
-  if (digit > 5 || (digit == 5 && (digits_to_remove > 1 ||
-                                   (buffer[size - 1] - '0') % 2) != 0)) {
-    ++buffer[size - 1];
+#if FMT_CLANG_VERSION
+# define FMT_FALLTHROUGH [[clang::fallthrough]];
+#elif FMT_GCC_VERSION >= 700
+# define FMT_FALLTHROUGH [[gnu::fallthrough]];
+#else
+# define FMT_FALLTHROUGH
+#endif
+
+struct gen_digits_params {
+  int num_digits;
+  bool fixed;
+  bool upper;
+  bool trailing_zeros;
+};
+
+struct prettify_handler {
+  char *data;
+  ptrdiff_t size;
+  buffer &buf;
+
+  explicit prettify_handler(buffer &b, ptrdiff_t n)
+    : data(b.data()), size(n), buf(b) {}
+  ~prettify_handler() {
+    assert(buf.size() >= to_unsigned(size));
+    buf.resize(to_unsigned(size));
   }
-}
 
-// Writes the exponent exp in the form "[+-]d{1,3}" to buffer.
-FMT_FUNC char *write_exponent(char *buffer, int exp) {
+  template <typename F>
+  void insert(ptrdiff_t pos, ptrdiff_t n, F f) {
+    std::memmove(data + pos + n, data + pos, to_unsigned(size - pos));
+    f(data + pos);
+    size += n;
+  }
+
+  void insert(ptrdiff_t pos, char c) {
+    std::memmove(data + pos + 1, data + pos, to_unsigned(size - pos));
+    data[pos] = c;
+    ++size;
+  }
+
+  void append(ptrdiff_t n, char c) {
+    std::uninitialized_fill_n(data + size, n, c);
+    size += n;
+  }
+
+  void append(char c) { data[size++] = c; }
+
+  void remove_trailing(char c) {
+    while (data[size - 1] == c) --size;
+  }
+};
+
+// Writes the exponent exp in the form "[+-]d{2,3}" to buffer.
+template <typename Handler>
+FMT_FUNC void write_exponent(int exp, Handler &&h) {
   FMT_ASSERT(-1000 < exp && exp < 1000, "exponent out of range");
   if (exp < 0) {
-    *buffer++ = '-';
+    h.append('-');
     exp = -exp;
   } else {
-    *buffer++ = '+';
+    h.append('+');
   }
   if (exp >= 100) {
-    *buffer++ = static_cast<char>('0' + exp / 100);
+    h.append(static_cast<char>('0' + exp / 100));
     exp %= 100;
     const char *d = data::DIGITS + exp * 2;
-    *buffer++ = d[0];
-    *buffer++ = d[1];
+    h.append(d[0]);
+    h.append(d[1]);
   } else {
     const char *d = data::DIGITS + exp * 2;
-    *buffer++ = d[0];
-    *buffer++ = d[1];
+    h.append(d[0]);
+    h.append(d[1]);
   }
-  return buffer;
-}
-
-FMT_FUNC void format_exp_notation(
-    char *buffer, size_t &size, int exp, int precision, bool upper) {
-  // Insert a decimal point after the first digit and add an exponent.
-  std::memmove(buffer + 2, buffer + 1, size - 1);
-  buffer[1] = '.';
-  exp += static_cast<int>(size) - 1;
-  int num_digits = precision - static_cast<int>(size) + 1;
-  if (num_digits > 0) {
-    std::uninitialized_fill_n(buffer + size + 1, num_digits, '0');
-    size += to_unsigned(num_digits);
-  } else if (num_digits < 0) {
-    round(buffer, size, exp, -num_digits);
-  }
-  char *p = buffer + size + 1;
-  *p++ = upper ? 'E' : 'e';
-  size = to_unsigned(write_exponent(p, exp) - buffer);
 }
 
-// Prettifies the output of the Grisu2 algorithm.
-// The number is given as v = buffer * 10^exp.
-FMT_FUNC void grisu2_prettify(char *buffer, size_t &size, int exp,
-                              int precision, bool upper) {
+struct fill {
+  size_t n;
+  void operator()(char *buf) const {
+    buf[0] = '0';
+    buf[1] = '.';
+    std::uninitialized_fill_n(buf + 2, n, '0');
+  }
+};
+
+// The number is given as v = f * pow(10, exp), where f has size digits.
+template <typename Handler>
+FMT_FUNC void grisu2_prettify(const gen_digits_params &params,
+                              int size, int exp, Handler &&handler) {
+  if (!params.fixed) {
+    // Insert a decimal point after the first digit and add an exponent.
+    handler.insert(1, '.');
+    exp += size - 1;
+    if (size < params.num_digits)
+      handler.append(params.num_digits - size, '0');
+    handler.append(params.upper ? 'E' : 'e');
+    write_exponent(exp, handler);
+    return;
+  }
   // pow(10, full_exp - 1) <= v <= pow(10, full_exp).
-  int int_size = static_cast<int>(size);
-  int full_exp = int_size + exp;
+  int full_exp = size + exp;
   const int exp_threshold = 21;
-  if (int_size <= full_exp && full_exp <= exp_threshold) {
+  if (size <= full_exp && full_exp <= exp_threshold) {
     // 1234e7 -> 12340000000[.0+]
-    std::uninitialized_fill_n(buffer + int_size, full_exp - int_size, '0');
-    char *p = buffer + full_exp;
-    if (precision > 0) {
-      *p++ = '.';
-      std::uninitialized_fill_n(p, precision, '0');
-      p += precision;
+    handler.append(full_exp - size, '0');
+    int num_zeros = params.num_digits - full_exp;
+    if (num_zeros > 0 && params.trailing_zeros) {
+      handler.append('.');
+      handler.append(num_zeros, '0');
     }
-    size = to_unsigned(p - buffer);
-  } else if (0 < full_exp && full_exp <= exp_threshold) {
+  } else if (full_exp > 0) {
     // 1234e-2 -> 12.34[0+]
-    int fractional_size = -exp;
-    std::memmove(buffer + full_exp + 1, buffer + full_exp,
-                 to_unsigned(fractional_size));
-    buffer[full_exp] = '.';
-    int num_zeros = precision - fractional_size;
-    if (num_zeros > 0) {
-      std::uninitialized_fill_n(buffer + size + 1, num_zeros, '0');
-      size += to_unsigned(num_zeros);
+    handler.insert(full_exp, '.');
+    if (!params.trailing_zeros) {
+      // Remove trailing zeros.
+      handler.remove_trailing('0');
+    } else if (params.num_digits > size) {
+      // Add trailing zeros.
+      ptrdiff_t num_zeros = params.num_digits - size;
+      handler.append(num_zeros, '0');
     }
-    ++size;
-  } else if (-6 < full_exp && full_exp <= 0) {
-    // 1234e-6 -> 0.001234
-    int offset = 2 - full_exp;
-    std::memmove(buffer + offset, buffer, size);
-    buffer[0] = '0';
-    buffer[1] = '.';
-    std::uninitialized_fill_n(buffer + 2, -full_exp, '0');
-    size = to_unsigned(int_size + offset);
   } else {
-    format_exp_notation(buffer, size, exp, precision, upper);
+    // 1234e-6 -> 0.001234
+    handler.insert(0, 2 - full_exp, fill{to_unsigned(-full_exp)});
   }
 }
 
-#if FMT_CLANG_VERSION
-# define FMT_FALLTHROUGH [[clang::fallthrough]];
-#elif FMT_GCC_VERSION >= 700
-# define FMT_FALLTHROUGH [[gnu::fallthrough]];
-#else
-# define FMT_FALLTHROUGH
-#endif
+struct char_counter {
+  ptrdiff_t size;
 
-// Formats a nonnegative value using Grisu2 algorithm. Grisu2 doesn't give any
-// guarantees on the shortness of the result.
-FMT_FUNC void grisu2_format(double value, char *buffer, size_t &size, char type,
-                            int precision, bool write_decimal_point) {
-  FMT_ASSERT(value >= 0, "value is negative");
-  int dec_exp = 0;  // K in Grisu.
-  if (value > 0) {
-    grisu2_format_positive(value, buffer, size, dec_exp);
-  } else {
-    *buffer = '0';
-    size = 1;
-  }
-  const int default_precision = 6;
-  if (precision < 0)
-    precision = default_precision;
-  bool upper = false;
-  switch (type) {
+  template <typename F>
+  void insert(ptrdiff_t, ptrdiff_t n, F) { size += n; }
+  void insert(ptrdiff_t, char) { ++size; }
+  void append(ptrdiff_t n, char) { size += n; }
+  void append(char) { ++size; }
+  void remove_trailing(char) {}
+};
+
+// Converts format specifiers into parameters for digit generation and computes
+// output buffer size for a number in the range [pow(10, exp - 1), pow(10, exp)
+// or 0 if exp == 1.
+FMT_FUNC gen_digits_params process_specs(const core_format_specs &specs,
+                                         int exp, buffer &buf) {
+  auto params = gen_digits_params();
+  int num_digits = specs.precision >= 0 ? specs.precision : 6;
+  switch (specs.type) {
   case 'G':
-    upper = true;
+    params.upper = true;
     FMT_FALLTHROUGH
-  case '\0': case 'g': {
-    int digits_to_remove = static_cast<int>(size) - precision;
-    if (digits_to_remove > 0) {
-      round(buffer, size, dec_exp, digits_to_remove);
-      // Remove trailing zeros.
-      while (size > 0 && buffer[size - 1] == '0') {
-        --size;
-        ++dec_exp;
-      }
+  case '\0': case 'g':
+    params.trailing_zeros = (specs.flags & HASH_FLAG) != 0;
+    if (-4 <= exp && exp < num_digits + 1) {
+      params.fixed = true;
+      if (!specs.type && params.trailing_zeros && exp >= 0)
+        num_digits = exp + 1;
     }
-    precision = 0;
     break;
-  }
   case 'F':
-    upper = true;
+    params.upper = true;
     FMT_FALLTHROUGH
   case 'f': {
-    int digits_to_remove = -dec_exp - precision;
-    if (digits_to_remove > 0) {
-      if (digits_to_remove >= static_cast<int>(size))
-        digits_to_remove = static_cast<int>(size) - 1;
-      round(buffer, size, dec_exp, digits_to_remove);
-    }
+    params.fixed = true;
+    params.trailing_zeros = true;
+    int adjusted_min_digits = num_digits + exp;
+    if (adjusted_min_digits > 0)
+      num_digits = adjusted_min_digits;
     break;
   }
-  case 'e': case 'E':
-    format_exp_notation(buffer, size, dec_exp, precision, type == 'E');
-    return;
+  case 'E':
+    params.upper = true;
+    FMT_FALLTHROUGH
+  case 'e':
+    ++num_digits;
+    break;
+  }
+  params.num_digits = to_unsigned(num_digits);
+  char_counter counter{num_digits};
+  grisu2_prettify(params, params.num_digits, exp - num_digits, counter);
+  buf.resize(to_unsigned(counter.size));
+  return params;
+}
+
+template <typename Double>
+FMT_FUNC typename std::enable_if<sizeof(Double) == sizeof(uint64_t), bool>::type
+    grisu2_format(Double value, buffer &buf, core_format_specs specs) {
+  FMT_ASSERT(value >= 0, "value is negative");
+  if (value == 0) {
+    gen_digits_params params = process_specs(specs, 1, buf);
+    const size_t size = 1;
+    buf[0] = '0';
+    grisu2_prettify(params, size, 0, prettify_handler(buf, size));
+    return true;
+  }
+
+  fp fp_value(value);
+  fp lower, upper;  // w^- and w^+ in the Grisu paper.
+  fp_value.compute_boundaries(lower, upper);
+
+  // Find a cached power of 10 close to 1 / upper and use it to scale upper.
+  const int min_exp = -60;  // alpha in Grisu.
+  int cached_exp = 0;  // K in Grisu.
+  auto cached_pow = get_cached_power(  // \tilde{c}_{-k} in Grisu.
+      min_exp - (upper.e + fp::significand_size), cached_exp);
+  cached_exp = -cached_exp;
+  upper = upper * cached_pow;  // \tilde{M}^+ in Grisu.
+  --upper.f;  // \tilde{M}^+ - 1 ulp -> M^+_{\downarrow}.
+  fp one(1ull << -upper.e, upper.e);
+  // hi (p1 in Grisu) contains the most significant digits of scaled_upper.
+  // hi = floor(upper / one).
+  uint32_t hi = static_cast<uint32_t>(upper.f >> -one.e);
+  int exp = static_cast<int>(count_digits(hi));  // kappa in Grisu.
+  gen_digits_params params = process_specs(specs, cached_exp + exp, buf);
+  fp_value.normalize();
+  fp scaled_value = fp_value * cached_pow;
+  lower = lower * cached_pow;  // \tilde{M}^- in Grisu.
+  ++lower.f;  // \tilde{M}^- + 1 ulp -> M^-_{\uparrow}.
+  uint64_t delta = upper.f - lower.f;
+  fp diff = upper - scaled_value; // wp_w in Grisu.
+  // lo (p2 in Grisu) contains the least significants digits of scaled_upper.
+  // lo = supper % one.
+  uint64_t lo = upper.f & (one.f - 1);
+  ptrdiff_t size = 0;
+  if (!grisu2_gen_digits(buf.data(), size, hi, lo, exp, delta, one, diff,
+                         params.num_digits)) {
+    buf.clear();
+    return false;
+  }
+  grisu2_prettify(params, size, cached_exp + exp, prettify_handler(buf, size));
+  return true;
+}
+
+template <typename Double>
+void sprintf_format(Double value, internal::buffer &buf,
+                    core_format_specs spec) {
+  // Buffer capacity must be non-zero, otherwise MSVC's vsnprintf_s will fail.
+  FMT_ASSERT(buf.capacity() != 0, "empty buffer");
+
+  // Build format string.
+  enum { MAX_FORMAT_SIZE = 10}; // longest format: %#-*.*Lg
+  char format[MAX_FORMAT_SIZE];
+  char *format_ptr = format;
+  *format_ptr++ = '%';
+  if (spec.has(HASH_FLAG))
+    *format_ptr++ = '#';
+  if (spec.precision >= 0) {
+    *format_ptr++ = '.';
+    *format_ptr++ = '*';
+  }
+  if (std::is_same<Double, long double>::value)
+    *format_ptr++ = 'L';
+  *format_ptr++ = spec.type;
+  *format_ptr = '\0';
+
+  // Format using snprintf.
+  char *start = FMT_NULL;
+  for (;;) {
+    std::size_t buffer_size = buf.capacity();
+    start = &buf[0];
+    int result = internal::char_traits<char>::format_float(
+        start, buffer_size, format, spec.precision, value);
+    if (result >= 0) {
+      unsigned n = internal::to_unsigned(result);
+      if (n < buf.capacity()) {
+        buf.resize(n);
+        break;  // The buffer is large enough - continue with formatting.
+      }
+      buf.reserve(n + 1);
+    } else {
+      // If result is negative we ask to increase the capacity by at least 1,
+      // but as std::vector, the buffer grows exponentially.
+      buf.reserve(buf.capacity() + 1);
+    }
   }
-  if (write_decimal_point && precision < 1)
-    precision = 1;
-  grisu2_prettify(buffer, size, dec_exp, precision, upper);
 }
 }  // namespace internal
 
@@ -812,11 +926,6 @@ FMT_FUNC void format_system_error(
   format_error_code(out, error_code, message);
 }
 
-template <typename Char>
-void basic_fixed_buffer<Char>::grow(std::size_t) {
-  FMT_THROW(std::runtime_error("buffer overflow"));
-}
-
 FMT_FUNC void internal::error_handler::on_error(const char *message) {
   FMT_THROW(format_error(message));
 }
@@ -835,13 +944,14 @@ FMT_FUNC void report_windows_error(
 
 FMT_FUNC void vprint(std::FILE *f, string_view format_str, format_args args) {
   memory_buffer buffer;
-  vformat_to(buffer, format_str, args);
+  internal::vformat_to(buffer, format_str,
+                       basic_format_args<buffer_context<char>::type>(args));
   std::fwrite(buffer.data(), 1, buffer.size(), f);
 }
 
 FMT_FUNC void vprint(std::FILE *f, wstring_view format_str, wformat_args args) {
   wmemory_buffer buffer;
-  vformat_to(buffer, format_str, args);
+  internal::vformat_to(buffer, format_str, args);
   std::fwrite(buffer.data(), sizeof(wchar_t), buffer.size(), f);
 }
 
@@ -853,10 +963,6 @@ FMT_FUNC void vprint(wstring_view format_str, wformat_args args) {
   vprint(stdout, format_str, args);
 }
 
-#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR)
-FMT_FUNC locale locale_provider::locale() { return fmt::locale(); }
-#endif
-
 FMT_END_NAMESPACE
 
 #ifdef _MSC_VER
index 9f522f39b7213cfec7e88f753080c34de994401c..3f4fe90f55402c360982e4f6f5370746db1203cf 100644 (file)
 // Disable the warning about implicit conversions that may change the sign of
 // an integer; silencing it otherwise would require many explicit casts.
 # pragma GCC diagnostic ignored "-Wsign-conversion"
+
+// Disable the warning about nonliteral format strings because we construct
+// them dynamically when falling back to snprintf for FP formatting.
+# pragma GCC diagnostic ignored "-Wformat-nonliteral"
 #endif
 
 # if FMT_CLANG_VERSION
@@ -163,6 +167,7 @@ FMT_END_NAMESPACE
 
 #ifndef FMT_USE_GRISU
 # define FMT_USE_GRISU 0
+//# define FMT_USE_GRISU std::numeric_limits<double>::is_iec559
 #endif
 
 // __builtin_clz is broken in clang with Microsoft CodeGen:
@@ -177,14 +182,6 @@ FMT_END_NAMESPACE
 # endif
 #endif
 
-// A workaround for gcc 4.4 that doesn't support union members with ctors.
-#if (FMT_GCC_VERSION && FMT_GCC_VERSION <= 404) || \
-    (FMT_MSC_VER && FMT_MSC_VER <= 1800)
-# define FMT_UNION struct
-#else
-# define FMT_UNION union
-#endif
-
 // Some compilers masquerade as both MSVC and GCC-likes or otherwise support
 // __builtin_clz and __builtin_clzll, so only define FMT_BUILTIN_CLZ using the
 // MSVC intrinsics if the clz and clzll builtins are not available.
@@ -278,24 +275,13 @@ struct dummy_int {
 };
 typedef std::numeric_limits<internal::dummy_int> fputil;
 
-// Dummy implementations of system functions such as signbit and ecvt called
-// if the latter are not available.
-inline dummy_int signbit(...) { return dummy_int(); }
-inline dummy_int _ecvt_s(...) { return dummy_int(); }
+// Dummy implementations of system functions called if the latter are not
+// available.
 inline dummy_int isinf(...) { return dummy_int(); }
 inline dummy_int _finite(...) { return dummy_int(); }
 inline dummy_int isnan(...) { return dummy_int(); }
 inline dummy_int _isnan(...) { return dummy_int(); }
 
-inline bool use_grisu() {
-  return FMT_USE_GRISU && std::numeric_limits<double>::is_iec559;
-}
-
-// Formats value using Grisu2 algorithm:
-// https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf
-FMT_API void grisu2_format(double value, char *buffer, size_t &size, char type,
-                           int precision, bool write_decimal_point);
-
 template <typename Allocator>
 typename Allocator::value_type *allocate(Allocator& alloc, std::size_t n) {
 #if __cplusplus >= 201103L || FMT_MSC_VER >= 1700
@@ -316,7 +302,7 @@ namespace std {
 // Standard permits specialization of std::numeric_limits. This specialization
 // is used to resolve ambiguity between isinf and std::isinf in glibc:
 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48891
-// and the same for isnan and signbit.
+// and the same for isnan.
 template <>
 class numeric_limits<fmt::internal::dummy_int> :
     public std::numeric_limits<int> {
@@ -327,7 +313,7 @@ class numeric_limits<fmt::internal::dummy_int> :
     using namespace fmt::internal;
     // The resolution "priority" is:
     // isinf macro > std::isinf > ::isinf > fmt::internal::isinf
-    if (const_check(sizeof(isinf(x)) != sizeof(dummy_int)))
+    if (const_check(sizeof(isinf(x)) != sizeof(fmt::internal::dummy_int)))
       return isinf(x) != 0;
     return !_finite(static_cast<double>(x));
   }
@@ -340,19 +326,6 @@ class numeric_limits<fmt::internal::dummy_int> :
       return isnan(x) != 0;
     return _isnan(static_cast<double>(x)) != 0;
   }
-
-  // Portable version of signbit.
-  static bool isnegative(double x) {
-    using namespace fmt::internal;
-    if (const_check(sizeof(signbit(x)) != sizeof(fmt::internal::dummy_int)))
-      return signbit(x) != 0;
-    if (x < 0) return true;
-    if (!isnotanumber(x)) return false;
-    int dec = 0, sign = 0;
-    char buffer[2];  // The buffer size must be >= 2 or _ecvt_s will fail.
-    _ecvt_s(buffer, sizeof(buffer), x, 0, &dec, &sign);
-    return sign != 0;
-  }
 };
 }  // namespace std
 
@@ -431,48 +404,32 @@ void basic_buffer<T>::append(const U *begin, const U *end) {
 }
 }  // namespace internal
 
+// C++20 feature test, since r346892 Clang considers char8_t a fundamental
+// type in this mode. If this is the case __cpp_char8_t will be defined.
+#if !defined(__cpp_char8_t)
 // A UTF-8 code unit type.
-struct char8_t {
-  char value;
-  FMT_CONSTEXPR explicit operator bool() const FMT_NOEXCEPT {
-    return value != 0;
-  }
-};
+enum char8_t: unsigned char {};
+#endif
 
 // A UTF-8 string view.
 class u8string_view : public basic_string_view<char8_t> {
- private:
-  typedef basic_string_view<char8_t> base;
-
  public:
-  using basic_string_view::basic_string_view;
-  using basic_string_view::char_type;
-
-  u8string_view(const char *s)
-    : base(reinterpret_cast<const char8_t*>(s)) {}
+  typedef char8_t char_type;
 
-  u8string_view(const char *s, size_t count) FMT_NOEXCEPT
-    : base(reinterpret_cast<const char8_t*>(s), count) {}
+  u8string_view(const char *s):
+    basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s)) {}
+  u8string_view(const char *s, size_t count) FMT_NOEXCEPT:
+    basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s), count) {}
 };
 
 #if FMT_USE_USER_DEFINED_LITERALS
 inline namespace literals {
 inline u8string_view operator"" _u(const char *s, std::size_t n) {
-  return u8string_view(s, n);
+  return {s, n};
 }
 }
 #endif
 
-// A wrapper around std::locale used to reduce compile times since <locale>
-// is very heavy.
-class locale;
-
-class locale_provider {
- public:
-  virtual ~locale_provider() {}
-  virtual fmt::locale locale();
-};
-
 // The number of characters to store in the basic_memory_buffer object itself
 // to avoid dynamic memory allocation.
 enum { inline_buffer_size = 500 };
@@ -497,7 +454,7 @@ enum { inline_buffer_size = 500 };
      fmt::memory_buffer out;
      format_to(out, "The answer is {}.", 42);
 
-  This will write the following output to the ``out`` object:
+  This will append the following output to the ``out`` object:
 
   .. code-block:: none
 
@@ -597,43 +554,6 @@ void basic_memory_buffer<T, SIZE, Allocator>::grow(std::size_t size) {
 typedef basic_memory_buffer<char> memory_buffer;
 typedef basic_memory_buffer<wchar_t> wmemory_buffer;
 
-/**
-  \rst
-  A fixed-size memory buffer. For a dynamically growing buffer use
-  :class:`fmt::basic_memory_buffer`.
-
-  Trying to increase the buffer size past the initial capacity will throw
-  ``std::runtime_error``.
-  \endrst
- */
-template <typename Char>
-class basic_fixed_buffer : public internal::basic_buffer<Char> {
- public:
-  /**
-   \rst
-   Constructs a :class:`fmt::basic_fixed_buffer` object for *array* of the
-   given size.
-   \endrst
-   */
-  basic_fixed_buffer(Char *array, std::size_t size) {
-    this->set(array, size);
-  }
-
-  /**
-   \rst
-   Constructs a :class:`fmt::basic_fixed_buffer` object for *array* of the
-   size known at compile time.
-   \endrst
-   */
-  template <std::size_t SIZE>
-  explicit basic_fixed_buffer(Char (&array)[SIZE]) {
-    this->set(array, SIZE);
-  }
-
- protected:
-  FMT_API void grow(std::size_t size) FMT_OVERRIDE;
-};
-
 namespace internal {
 
 template <typename Char>
@@ -718,7 +638,7 @@ class null_terminating_iterator {
   }
 
   FMT_CONSTEXPR Char operator*() const {
-    return ptr_ != end_ ? *ptr_ : 0;
+    return ptr_ != end_ ? *ptr_ : Char();
   }
 
   FMT_CONSTEXPR null_terminating_iterator operator++() {
@@ -816,35 +736,49 @@ class counting_iterator {
   T &operator*() const { return blackhole_; }
 };
 
+template <typename OutputIt>
+class truncating_iterator_base {
+ protected:
+  OutputIt out_;
+  std::size_t limit_;
+  std::size_t count_;
+
+  truncating_iterator_base(OutputIt out, std::size_t limit)
+    : out_(out), limit_(limit), count_(0) {}
+
+ public:
+  typedef std::output_iterator_tag iterator_category;
+  typedef void difference_type;
+  typedef void pointer;
+  typedef void reference;
+  typedef truncating_iterator_base _Unchecked_type; // Mark iterator as checked.
+
+  OutputIt base() const { return out_; }
+  std::size_t count() const { return count_; }
+};
+
 // An output iterator that truncates the output and counts the number of objects
 // written to it.
+template <typename OutputIt, typename Enable = typename std::is_void<
+    typename std::iterator_traits<OutputIt>::value_type>::type>
+class truncating_iterator;
+
 template <typename OutputIt>
-class truncating_iterator {
- private:
+class truncating_iterator<OutputIt, std::false_type>:
+  public truncating_iterator_base<OutputIt> {
   typedef std::iterator_traits<OutputIt> traits;
 
-  OutputIt out_;
-  std::size_t limit_;
-  std::size_t count_;
   mutable typename traits::value_type blackhole_;
 
  public:
-  typedef std::output_iterator_tag iterator_category;
   typedef typename traits::value_type value_type;
-  typedef typename traits::difference_type difference_type;
-  typedef typename traits::pointer pointer;
-  typedef typename traits::reference reference;
-  typedef truncating_iterator _Unchecked_type;  // Mark iterator as checked.
 
   truncating_iterator(OutputIt out, std::size_t limit)
-    : out_(out), limit_(limit), count_(0) {}
-
-  OutputIt base() const { return out_; }
-  std::size_t count() const { return count_; }
+    : truncating_iterator_base<OutputIt>(out, limit) {}
 
   truncating_iterator& operator++() {
-    if (count_++ < limit_)
-      ++out_;
+    if (this->count_++ < this->limit_)
+      ++this->out_;
     return *this;
   }
 
@@ -854,7 +788,29 @@ class truncating_iterator {
     return it;
   }
 
-  reference operator*() const { return count_ < limit_ ? *out_ : blackhole_; }
+  value_type& operator*() const {
+    return this->count_ < this->limit_ ? *this->out_ : blackhole_;
+  }
+};
+
+template <typename OutputIt>
+class truncating_iterator<OutputIt, std::true_type>:
+  public truncating_iterator_base<OutputIt> {
+ public:
+  typedef typename OutputIt::container_type::value_type value_type;
+
+  truncating_iterator(OutputIt out, std::size_t limit)
+    : truncating_iterator_base<OutputIt>(out, limit) {}
+
+  truncating_iterator& operator=(value_type val) {
+    if (this->count_++ < this->limit_)
+      this->out_ = val;
+    return *this;
+  }
+
+  truncating_iterator& operator++() { return *this; }
+  truncating_iterator& operator++(int) { return *this; }
+  truncating_iterator& operator*() { return *this; }
 };
 
 // Returns true if value is negative, false otherwise.
@@ -888,6 +844,8 @@ struct FMT_API basic_data {
   static const uint64_t POW10_SIGNIFICANDS[];
   static const int16_t POW10_EXPONENTS[];
   static const char DIGITS[];
+  static const char FOREGROUND_COLOR[];
+  static const char BACKGROUND_COLOR[];
   static const char RESET_COLOR[];
   static const wchar_t WRESET_COLOR[];
 };
@@ -925,8 +883,33 @@ inline unsigned count_digits(uint64_t n) {
 }
 #endif
 
+template <typename Char>
+inline size_t count_code_points(basic_string_view<Char> s) { return s.size(); }
+
 // Counts the number of code points in a UTF-8 string.
-FMT_API size_t count_code_points(u8string_view s);
+FMT_API size_t count_code_points(basic_string_view<char8_t> s);
+
+inline char8_t to_char8_t(char c) { return static_cast<char8_t>(c); }
+
+template <typename InputIt, typename OutChar>
+struct needs_conversion: std::integral_constant<bool,
+  std::is_same<
+    typename std::iterator_traits<InputIt>::value_type, char>::value &&
+  std::is_same<OutChar, char8_t>::value> {};
+
+template <typename OutChar, typename InputIt, typename OutputIt>
+typename std::enable_if<
+  !needs_conversion<InputIt, OutChar>::value, OutputIt>::type
+    copy_str(InputIt begin, InputIt end, OutputIt it) {
+  return std::copy(begin, end, it);
+}
+
+template <typename OutChar, typename InputIt, typename OutputIt>
+typename std::enable_if<
+  needs_conversion<InputIt, OutChar>::value, OutputIt>::type
+    copy_str(InputIt begin, InputIt end, OutputIt it) {
+  return std::transform(begin, end, it, to_char8_t);
+}
 
 #if FMT_HAS_CPP_ATTRIBUTE(always_inline)
 # define FMT_ALWAYS_INLINE __attribute__((always_inline))
@@ -1018,6 +1001,8 @@ struct no_thousands_sep {
 
   template <typename Char>
   void operator()(Char *) {}
+
+  enum { size = 0 };
 };
 
 // A functor that adds a thousands separator.
@@ -1042,10 +1027,22 @@ class add_thousands_sep {
     std::uninitialized_copy(sep_.data(), sep_.data() + sep_.size(),
                             internal::make_checked(buffer, sep_.size()));
   }
+
+  enum { size = 1 };
 };
 
 template <typename Char>
-FMT_API Char thousands_sep(locale_provider *lp);
+FMT_API Char thousands_sep_impl(locale_ref loc);
+
+template <typename Char>
+inline Char thousands_sep(locale_ref loc) {
+  return Char(thousands_sep_impl<char>(loc));
+}
+
+template <>
+inline wchar_t thousands_sep(locale_ref loc) {
+  return thousands_sep_impl<wchar_t>(loc);
+}
 
 // Formats a decimal unsigned integer value writing into buffer.
 // thousands_sep is a functor that is called after writing each char to
@@ -1061,35 +1058,38 @@ inline Char *format_decimal(Char *buffer, UInt value, unsigned num_digits,
     // "Three Optimization Tips for C++". See speed-test for a comparison.
     unsigned index = static_cast<unsigned>((value % 100) * 2);
     value /= 100;
-    *--buffer = data::DIGITS[index + 1];
+    *--buffer = static_cast<Char>(data::DIGITS[index + 1]);
     thousands_sep(buffer);
-    *--buffer = data::DIGITS[index];
+    *--buffer = static_cast<Char>(data::DIGITS[index]);
     thousands_sep(buffer);
   }
   if (value < 10) {
-    *--buffer = static_cast<char>('0' + value);
+    *--buffer = static_cast<Char>('0' + value);
     return end;
   }
   unsigned index = static_cast<unsigned>(value * 2);
-  *--buffer = data::DIGITS[index + 1];
+  *--buffer = static_cast<Char>(data::DIGITS[index + 1]);
   thousands_sep(buffer);
-  *--buffer = data::DIGITS[index];
+  *--buffer = static_cast<Char>(data::DIGITS[index]);
   return end;
 }
 
-template <typename UInt, typename Iterator, typename ThousandsSep>
+template <typename OutChar, typename UInt, typename Iterator,
+          typename ThousandsSep>
 inline Iterator format_decimal(
     Iterator out, UInt value, unsigned num_digits, ThousandsSep sep) {
   typedef typename ThousandsSep::char_type char_type;
-  // Buffer should be large enough to hold all digits (digits10 + 1) and null.
-  char_type buffer[std::numeric_limits<UInt>::digits10 + 2];
-  format_decimal(buffer, value, num_digits, sep);
-  return std::copy_n(buffer, num_digits, out);
+  // Buffer should be large enough to hold all digits (<= digits10 + 1).
+  enum { max_size = std::numeric_limits<UInt>::digits10 + 1 };
+  FMT_ASSERT(ThousandsSep::size <= 1, "invalid separator");
+  char_type buffer[max_size + max_size / 3];
+  auto end = format_decimal(buffer, value, num_digits, sep);
+  return internal::copy_str<OutChar>(buffer, end, out);
 }
 
-template <typename It, typename UInt>
+template <typename OutChar, typename It, typename UInt>
 inline It format_decimal(It out, UInt value, unsigned num_digits) {
-  return format_decimal(out, value, num_digits, no_thousands_sep());
+  return format_decimal<OutChar>(out, value, num_digits, no_thousands_sep());
 }
 
 template <unsigned BASE_BITS, typename Char, typename UInt>
@@ -1100,19 +1100,19 @@ inline Char *format_uint(Char *buffer, UInt value, unsigned num_digits,
   do {
     const char *digits = upper ? "0123456789ABCDEF" : "0123456789abcdef";
     unsigned digit = (value & ((1 << BASE_BITS) - 1));
-    *--buffer = BASE_BITS < 4 ? static_cast<char>('0' + digit) : digits[digit];
+    *--buffer = static_cast<Char>(BASE_BITS < 4 ? '0' + digit : digits[digit]);
   } while ((value >>= BASE_BITS) != 0);
   return end;
 }
 
-template <unsigned BASE_BITS, typename It, typename UInt>
+template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
 inline It format_uint(It out, UInt value, unsigned num_digits,
                       bool upper = false) {
   // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1)
   // and null.
   char buffer[std::numeric_limits<UInt>::digits / BASE_BITS + 2];
   format_uint<BASE_BITS>(buffer, value, num_digits, upper);
-  return std::copy_n(buffer, num_digits, out);
+  return internal::copy_str<Char>(buffer, buffer + num_digits, out);
 }
 
 #ifndef _WIN32
@@ -1171,72 +1171,35 @@ enum alignment {
 };
 
 // Flags.
-enum {SIGN_FLAG = 1, PLUS_FLAG = 2, MINUS_FLAG = 4, HASH_FLAG = 8};
-
-enum format_spec_tag {fill_tag, align_tag, width_tag, type_tag};
-
-// Format specifier.
-template <typename T, format_spec_tag>
-class format_spec {
- private:
-  T value_;
-
- public:
-  typedef T value_type;
-
-  explicit format_spec(T value) : value_(value) {}
-
-  T value() const { return value_; }
-};
-
-// template <typename Char>
-// typedef format_spec<Char, fill_tag> fill_spec;
-template <typename Char>
-class fill_spec : public format_spec<Char, fill_tag> {
- public:
-  explicit fill_spec(Char value) : format_spec<Char, fill_tag>(value) {}
-};
-
-typedef format_spec<unsigned, width_tag> width_spec;
-typedef format_spec<char, type_tag> type_spec;
-
-// An empty format specifier.
-struct empty_spec {};
+enum { SIGN_FLAG = 1, PLUS_FLAG = 2, MINUS_FLAG = 4, HASH_FLAG = 8 };
 
 // An alignment specifier.
-struct align_spec : empty_spec {
+struct align_spec {
   unsigned width_;
   // Fill is always wchar_t and cast to char if necessary to avoid having
   // two specialization of AlignSpec and its subclasses.
   wchar_t fill_;
   alignment align_;
 
-  FMT_CONSTEXPR align_spec(
-      unsigned width, wchar_t fill, alignment align = ALIGN_DEFAULT)
-  : width_(width), fill_(fill), align_(align) {}
-
+  FMT_CONSTEXPR align_spec() : width_(0), fill_(' '), align_(ALIGN_DEFAULT) {}
   FMT_CONSTEXPR unsigned width() const { return width_; }
   FMT_CONSTEXPR wchar_t fill() const { return fill_; }
   FMT_CONSTEXPR alignment align() const { return align_; }
+};
+
+struct core_format_specs {
+  int precision;
+  uint_least8_t flags;
+  char type;
 
-  int precision() const { return -1; }
+  FMT_CONSTEXPR core_format_specs() : precision(-1), flags(0), type(0) {}
+  FMT_CONSTEXPR bool has(unsigned f) const { return (flags & f) != 0; }
 };
 
 // Format specifiers.
 template <typename Char>
-class basic_format_specs : public align_spec {
- public:
-  unsigned flags_;
-  int precision_;
-  Char type_;
-
-  FMT_CONSTEXPR basic_format_specs(
-      unsigned width = 0, char type = 0, wchar_t fill = ' ')
-  : align_spec(width, fill), flags_(0), precision_(-1), type_(type) {}
-
-  FMT_CONSTEXPR bool flag(unsigned f) const { return (flags_ & f) != 0; }
-  FMT_CONSTEXPR int precision() const { return precision_; }
-  FMT_CONSTEXPR Char type() const { return type_; }
+struct basic_format_specs : align_spec, core_format_specs {
+  FMT_CONSTEXPR basic_format_specs() {}
 };
 
 typedef basic_format_specs<char> format_specs;
@@ -1251,13 +1214,20 @@ FMT_CONSTEXPR unsigned basic_parse_context<Char, ErrorHandler>::next_arg_id() {
 
 namespace internal {
 
-template <typename S>
-struct format_string_traits<
-  S, typename std::enable_if<std::is_base_of<compile_string, S>::value>::type>:
-    format_string_traits_base<char> {};
+// Formats value using Grisu2 algorithm:
+// https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf
+template <typename Double>
+FMT_API typename std::enable_if<sizeof(Double) == sizeof(uint64_t), bool>::type
+  grisu2_format(Double value, buffer &buf, core_format_specs);
+template <typename Double>
+inline typename std::enable_if<sizeof(Double) != sizeof(uint64_t), bool>::type
+  grisu2_format(Double, buffer &, core_format_specs) { return false; }
 
-template <typename Char, typename Handler>
-FMT_CONSTEXPR void handle_int_type_spec(Char spec, Handler &&handler) {
+template <typename Double>
+void sprintf_format(Double, internal::buffer &, core_format_specs);
+
+template <typename Handler>
+FMT_CONSTEXPR void handle_int_type_spec(char spec, Handler &&handler) {
   switch (spec) {
   case 0: case 'd':
     handler.on_dec();
@@ -1279,8 +1249,8 @@ FMT_CONSTEXPR void handle_int_type_spec(Char spec, Handler &&handler) {
   }
 }
 
-template <typename Char, typename Handler>
-FMT_CONSTEXPR void handle_float_type_spec(Char spec, Handler &&handler) {
+template <typename Handler>
+FMT_CONSTEXPR void handle_float_type_spec(char spec, Handler &&handler) {
   switch (spec) {
   case 0: case 'g': case 'G':
     handler.on_general();
@@ -1304,8 +1274,8 @@ template <typename Char, typename Handler>
 FMT_CONSTEXPR void handle_char_specs(
     const basic_format_specs<Char> *specs, Handler &&handler) {
   if (!specs) return handler.on_char();
-  if (specs->type() && specs->type() != 'c') return handler.on_int();
-  if (specs->align() == ALIGN_NUMERIC || specs->flag(~0u) != 0)
+  if (specs->type && specs->type != 'c') return handler.on_int();
+  if (specs->align() == ALIGN_NUMERIC || specs->flags != 0)
     handler.on_error("invalid format specifier for char");
   handler.on_char();
 }
@@ -1364,13 +1334,13 @@ class float_type_checker : private ErrorHandler {
   }
 };
 
-template <typename ErrorHandler, typename CharType>
+template <typename ErrorHandler>
 class char_specs_checker : public ErrorHandler {
  private:
-  CharType type_;
+  char type_;
 
  public:
-  FMT_CONSTEXPR char_specs_checker(CharType type, ErrorHandler eh)
+  FMT_CONSTEXPR char_specs_checker(char type, ErrorHandler eh)
     : ErrorHandler(eh), type_(type) {}
 
   FMT_CONSTEXPR void on_int() {
@@ -1394,8 +1364,7 @@ void arg_map<Context>::init(const basic_format_args<Context> &args) {
   if (map_)
     return;
   map_ = new entry[args.max_size()];
-  bool use_values = args.type(max_packed_args - 1) == internal::none_type;
-  if (use_values) {
+  if (args.is_packed()) {
     for (unsigned i = 0;/*nothing*/; ++i) {
       internal::type arg_type = args.type(i);
       switch (arg_type) {
@@ -1436,21 +1405,25 @@ class arg_formatter_base {
 
   struct char_writer {
     char_type value;
+
+    size_t size() const { return 1; }
+    size_t width() const { return 1; }
+
     template <typename It>
     void operator()(It &&it) const { *it++ = value; }
   };
 
   void write_char(char_type value) {
     if (specs_)
-      writer_.write_padded(1, *specs_, char_writer{value});
+      writer_.write_padded(*specs_, char_writer{value});
     else
       writer_.write(value);
   }
 
   void write_pointer(const void *p) {
     format_specs specs = specs_ ? *specs_ : format_specs();
-    specs.flags_ = HASH_FLAG;
-    specs.type_ = 'x';
+    specs.flags = HASH_FLAG;
+    specs.type = 'x';
     writer_.write_int(reinterpret_cast<uintptr_t>(p), specs);
   }
 
@@ -1473,7 +1446,8 @@ class arg_formatter_base {
   }
 
  public:
-  arg_formatter_base(Range r, format_specs *s): writer_(r), specs_(s) {}
+  arg_formatter_base(Range r, format_specs *s, locale_ref loc)
+    : writer_(r, loc), specs_(s) {}
 
   iterator operator()(monostate) {
     FMT_ASSERT(false, "invalid argument type");
@@ -1481,12 +1455,13 @@ class arg_formatter_base {
   }
 
   template <typename T>
-  typename std::enable_if<std::is_integral<T>::value, iterator>::type
-      operator()(T value) {
+  typename std::enable_if<
+    std::is_integral<T>::value || std::is_same<T, char_type>::value,
+    iterator>::type operator()(T value) {
     // MSVC2013 fails to compile separate overloads for bool and char_type so
     // use std::is_same instead.
     if (std::is_same<T, bool>::value) {
-      if (specs_ && specs_->type_)
+      if (specs_ && specs_->type)
         return (*this)(value ? 1 : 0);
       write(value != 0);
     } else if (std::is_same<T, char_type>::value) {
@@ -1535,14 +1510,14 @@ class arg_formatter_base {
   iterator operator()(const char_type *value) {
     if (!specs_) return write(value), out();
     internal::handle_cstring_type_spec(
-          specs_->type_, cstring_spec_handler(*this, value));
+          specs_->type, cstring_spec_handler(*this, value));
     return out();
   }
 
   iterator operator()(basic_string_view<char_type> value) {
     if (specs_) {
       internal::check_string_type_spec(
-            specs_->type_, internal::error_handler());
+            specs_->type, internal::error_handler());
       writer_.write_str(value, *specs_);
     } else {
       writer_.write(value);
@@ -1552,7 +1527,7 @@ class arg_formatter_base {
 
   iterator operator()(const void *value) {
     if (specs_)
-      check_pointer_type_spec(specs_->type_, internal::error_handler());
+      check_pointer_type_spec(specs_->type, internal::error_handler());
     write_pointer(value);
     return out();
   }
@@ -1570,6 +1545,10 @@ FMT_CONSTEXPR bool is_name_start(Char c) {
 template <typename Iterator, typename ErrorHandler>
 FMT_CONSTEXPR unsigned parse_nonnegative_int(Iterator &it, ErrorHandler &&eh) {
   assert('0' <= *it && *it <= '9');
+  if (*it == '0') {
+    ++it;
+    return 0;
+  }
   unsigned value = 0;
   // Convert to unsigned to prevent a warning.
   unsigned max_int = (std::numeric_limits<int>::max)();
@@ -1597,6 +1576,10 @@ template <typename Char, typename ErrorHandler>
 FMT_CONSTEXPR unsigned parse_nonnegative_int(
     const Char *&begin, const Char *end, ErrorHandler &&eh) {
   assert(begin != end && '0' <= *begin && *begin <= '9');
+  if (*begin == '0') {
+    ++begin;
+    return 0;
+  }
   unsigned value = 0;
   // Convert to unsigned to prevent a warning.
   unsigned max_int = (std::numeric_limits<int>::max)();
@@ -1607,7 +1590,8 @@ FMT_CONSTEXPR unsigned parse_nonnegative_int(
       value = max_int + 1;
       break;
     }
-    value = value * 10 + unsigned(*begin++ - '0');
+    value = value * 10 + unsigned(*begin - '0');
+    ++begin;
   } while (begin != end && '0' <= *begin && *begin <= '9');
   if (value > max_int)
     eh.on_error("number is too big");
@@ -1695,14 +1679,14 @@ class specs_setter {
   explicit FMT_CONSTEXPR specs_setter(basic_format_specs<Char> &specs):
     specs_(specs) {}
 
-  FMT_CONSTEXPR specs_setter(const specs_setter &other) : specs_(other.specs_) {}
+  FMT_CONSTEXPR specs_setter(const specs_setter &other): specs_(other.specs_) {}
 
   FMT_CONSTEXPR void on_align(alignment align) { specs_.align_ = align; }
   FMT_CONSTEXPR void on_fill(Char fill) { specs_.fill_ = fill; }
-  FMT_CONSTEXPR void on_plus() { specs_.flags_ |= SIGN_FLAG | PLUS_FLAG; }
-  FMT_CONSTEXPR void on_minus() { specs_.flags_ |= MINUS_FLAG; }
-  FMT_CONSTEXPR void on_space() { specs_.flags_ |= SIGN_FLAG; }
-  FMT_CONSTEXPR void on_hash() { specs_.flags_ |= HASH_FLAG; }
+  FMT_CONSTEXPR void on_plus() { specs_.flags |= SIGN_FLAG | PLUS_FLAG; }
+  FMT_CONSTEXPR void on_minus() { specs_.flags |= MINUS_FLAG; }
+  FMT_CONSTEXPR void on_space() { specs_.flags |= SIGN_FLAG; }
+  FMT_CONSTEXPR void on_hash() { specs_.flags |= HASH_FLAG; }
 
   FMT_CONSTEXPR void on_zero() {
     specs_.align_ = ALIGN_NUMERIC;
@@ -1711,11 +1695,13 @@ class specs_setter {
 
   FMT_CONSTEXPR void on_width(unsigned width) { specs_.width_ = width; }
   FMT_CONSTEXPR void on_precision(unsigned precision) {
-    specs_.precision_ = static_cast<int>(precision);
+    specs_.precision = static_cast<int>(precision);
   }
   FMT_CONSTEXPR void end_precision() {}
 
-  FMT_CONSTEXPR void on_type(Char type) { specs_.type_ = type; }
+  FMT_CONSTEXPR void on_type(Char type) {
+    specs_.type = static_cast<char>(type);
+  }
 
  protected:
   basic_format_specs<Char> &specs_;
@@ -1789,8 +1775,9 @@ template <template <typename> class Handler, typename T,
           typename Context, typename ErrorHandler>
 FMT_CONSTEXPR void set_dynamic_spec(
     T &value, basic_format_arg<Context> arg, ErrorHandler eh) {
-  unsigned long long big_value = fmt::visit(Handler<ErrorHandler>(eh), arg);
-  if (big_value > (std::numeric_limits<int>::max)())
+  unsigned long long big_value =
+      visit_format_arg(Handler<ErrorHandler>(eh), arg);
+  if (big_value > to_unsigned((std::numeric_limits<int>::max)()))
     eh.on_error("number is too big");
   value = static_cast<T>(big_value);
 }
@@ -1816,7 +1803,7 @@ class specs_handler: public specs_setter<typename Context::char_type> {
   template <typename Id>
   FMT_CONSTEXPR void on_dynamic_precision(Id arg_id) {
     set_dynamic_spec<precision_checker>(
-          this->specs_.precision_, get_arg(arg_id), context_.error_handler());
+          this->specs_.precision, get_arg(arg_id), context_.error_handler());
   }
 
   void on_error(const char *message) {
@@ -1844,7 +1831,9 @@ struct arg_ref {
 
   FMT_CONSTEXPR arg_ref() : kind(NONE), index(0) {}
   FMT_CONSTEXPR explicit arg_ref(unsigned index) : kind(INDEX), index(index) {}
-  explicit arg_ref(basic_string_view<Char> name) : kind(NAME), name(name) {}
+  explicit arg_ref(basic_string_view<Char> nm) : kind(NAME) {
+    name = {nm.data(), nm.size()};
+  }
 
   FMT_CONSTEXPR arg_ref &operator=(unsigned idx) {
     kind = INDEX;
@@ -1853,9 +1842,9 @@ struct arg_ref {
   }
 
   Kind kind;
-  FMT_UNION {
+  union {
     unsigned index;
-    basic_string_view<Char> name;
+    string_value<Char> name;  // This is not string_view because of gcc 4.4.
   };
 };
 
@@ -2022,19 +2011,19 @@ FMT_CONSTEXPR Iterator parse_format_specs(Iterator it, SpecHandler &&handler) {
   int i = 1;
   do {
     auto p = it + i;
-    switch (*p) {
-      case '<':
-        align = ALIGN_LEFT;
-        break;
-      case '>':
-        align = ALIGN_RIGHT;
-        break;
-      case '=':
-        align = ALIGN_NUMERIC;
-        break;
-      case '^':
-        align = ALIGN_CENTER;
-        break;
+    switch (static_cast<char>(*p)) {
+    case '<':
+      align = ALIGN_LEFT;
+      break;
+    case '>':
+      align = ALIGN_RIGHT;
+      break;
+    case '=':
+      align = ALIGN_NUMERIC;
+      break;
+    case '^':
+      align = ALIGN_CENTER;
+      break;
     }
     if (align != ALIGN_DEFAULT) {
       if (p != it) {
@@ -2051,19 +2040,19 @@ FMT_CONSTEXPR Iterator parse_format_specs(Iterator it, SpecHandler &&handler) {
   } while (--i >= 0);
 
   // Parse sign.
-  switch (*it) {
-    case '+':
-      handler.on_plus();
-      ++it;
-      break;
-    case '-':
-      handler.on_minus();
-      ++it;
-      break;
-    case ' ':
-      handler.on_space();
-      ++it;
-      break;
+  switch (static_cast<char>(*it)) {
+  case '+':
+    handler.on_plus();
+    ++it;
+    break;
+  case '-':
+    handler.on_minus();
+    ++it;
+    break;
+  case ' ':
+    handler.on_space();
+    ++it;
+    break;
   }
 
   if (*it == '#') {
@@ -2162,7 +2151,8 @@ FMT_CONSTEXPR void parse_format_string(
     }
     Handler &handler_;
   } write{handler};
-  auto begin = format_str.data(), end = begin + format_str.size();
+  auto begin = format_str.data();
+  auto end = begin + format_str.size();
   while (begin != end) {
     // Doing two passes with memchr (one for '{' and another for '}') is up to
     // 2.5x faster than the naive one-pass implementation on big format strings.
@@ -2173,14 +2163,14 @@ FMT_CONSTEXPR void parse_format_string(
     ++p;
     if (p == end)
       return handler.on_error("invalid format string");
-    if (*p == '}') {
+    if (static_cast<char>(*p) == '}') {
       handler.on_arg_id();
       handler.on_replacement_field(p);
     } else if (*p == '{') {
       handler.on_text(p, p + 1);
     } else {
       p = parse_arg_id(p, end, id_adapter<Handler, Char>{handler});
-      Char c = p != end ? *p : 0;
+      Char c = p != end ? *p : Char();
       if (c == '}') {
         handler.on_replacement_field(p);
       } else if (c == ':') {
@@ -2259,19 +2249,19 @@ class format_string_checker {
 };
 
 template <typename Char, typename ErrorHandler, typename... Args>
-FMT_CONSTEXPR bool check_format_string(
+FMT_CONSTEXPR bool do_check_format_string(
     basic_string_view<Char> s, ErrorHandler eh = ErrorHandler()) {
   format_string_checker<Char, ErrorHandler, Args...> checker(s, eh);
   parse_format_string<true>(s, checker);
   return true;
 }
 
-template <typename... Args, typename String>
-typename std::enable_if<is_compile_string<String>::value>::type
-    check_format_string(String format_str) {
-  FMT_CONSTEXPR_DECL bool invalid_format =
-      internal::check_format_string<char, internal::error_handler, Args...>(
-        string_view(format_str.data(), format_str.size()));
+template <typename... Args, typename S>
+typename std::enable_if<is_compile_string<S>::value>::type
+    check_format_string(S format_str) {
+  typedef typename S::char_type char_t;
+  FMT_CONSTEXPR_DECL bool invalid_format = internal::do_check_format_string<
+      char_t, internal::error_handler, Args...>(to_string_view(format_str));
   (void)invalid_format;
 }
 
@@ -2295,7 +2285,8 @@ void handle_dynamic_spec(
     break;
   case arg_ref<char_type>::NAME:
     internal::set_dynamic_spec<Handler>(
-          value, ctx.get_arg(ref.name), ctx.error_handler());
+          value, ctx.get_arg({ref.name.value, ref.name.size}),
+          ctx.error_handler());
     break;
   }
 }
@@ -2326,8 +2317,8 @@ class arg_formatter:
     *spec* contains format specifier information for standard argument types.
     \endrst
    */
-  explicit arg_formatter(context_type &ctx, format_specs *spec = {})
-  : base(Range(ctx.out()), spec), ctx_(ctx) {}
+  explicit arg_formatter(context_type &ctx, format_specs *spec = FMT_NULL)
+  : base(Range(ctx.out()), spec, ctx.locale()), ctx_(ctx) {}
 
   // Deprecated.
   arg_formatter(context_type &ctx, format_specs &spec)
@@ -2375,7 +2366,7 @@ class system_error : public std::runtime_error {
    \endrst
   */
   template <typename... Args>
-  system_error(int error_code, string_view message, const Args & ... args)
+  system_error(int error_code, string_view message, const Args &... args)
     : std::runtime_error("") {
     init(error_code, message, make_format_args(args...));
   }
@@ -2415,7 +2406,7 @@ class basic_writer {
 
  private:
   iterator out_;  // Output iterator.
-  std::unique_ptr<locale_provider> locale_;
+  internal::locale_ref locale_;
 
   iterator out() const { return out_; }
 
@@ -2429,19 +2420,23 @@ class basic_writer {
   //   <left-padding><value><right-padding>
   // where <value> is written by f(it).
   template <typename F>
-  void write_padded(std::size_t size, const align_spec &spec, F &&f);
+  void write_padded(const align_spec &spec, F &&f);
 
   template <typename F>
   struct padded_int_writer {
+    size_t size_;
     string_view prefix;
     char_type fill;
     std::size_t padding;
     F f;
 
+    size_t size() const { return size_; }
+    size_t width() const { return size_; }
+
     template <typename It>
     void operator()(It &&it) const {
       if (prefix.size() != 0)
-        it = std::copy_n(prefix.data(), prefix.size(), it);
+        it = internal::copy_str<char_type>(prefix.begin(), prefix.end(), it);
       it = std::fill_n(it, padding, fill);
       f(it);
     }
@@ -2461,15 +2456,15 @@ class basic_writer {
         padding = spec.width() - size;
         size = spec.width();
       }
-    } else if (spec.precision() > static_cast<int>(num_digits)) {
-      size = prefix.size() + static_cast<std::size_t>(spec.precision());
-      padding = static_cast<std::size_t>(spec.precision()) - num_digits;
-      fill = '0';
+    } else if (spec.precision > static_cast<int>(num_digits)) {
+      size = prefix.size() + internal::to_unsigned(spec.precision);
+      padding = internal::to_unsigned(spec.precision) - num_digits;
+      fill = static_cast<char_type>('0');
     }
     align_spec as = spec;
     if (spec.align() == ALIGN_DEFAULT)
       as.align_ = ALIGN_RIGHT;
-    write_padded(size, as, padded_int_writer<F>{prefix, fill, padding, f});
+    write_padded(as, padded_int_writer<F>{size, prefix, fill, padding, f});
   }
 
   // Writes a decimal integer.
@@ -2483,8 +2478,8 @@ class basic_writer {
     unsigned num_digits = internal::count_digits(abs_value);
     auto &&it = reserve((is_negative ? 1 : 0) + num_digits);
     if (is_negative)
-      *it++ = '-';
-    it = internal::format_decimal(it, abs_value, num_digits);
+      *it++ = static_cast<char_type>('-');
+    it = internal::format_decimal<char_type>(it, abs_value, num_digits);
   }
 
   // The handle_int_type_spec handler that writes an integer.
@@ -2518,8 +2513,8 @@ class basic_writer {
         prefix[0] = '-';
         ++prefix_size;
         abs_value = 0 - abs_value;
-      } else if (spec.flag(SIGN_FLAG)) {
-        prefix[0] = spec.flag(PLUS_FLAG) ? '+' : ' ';
+      } else if (spec.has(SIGN_FLAG)) {
+        prefix[0] = spec.has(PLUS_FLAG) ? '+' : ' ';
         ++prefix_size;
       }
     }
@@ -2530,7 +2525,7 @@ class basic_writer {
 
       template <typename It>
       void operator()(It &&it) const {
-        it = internal::format_decimal(it, abs_value, num_digits);
+        it = internal::format_decimal<char_type>(it, abs_value, num_digits);
       }
     };
 
@@ -2546,15 +2541,15 @@ class basic_writer {
 
       template <typename It>
       void operator()(It &&it) const {
-        it = internal::format_uint<4>(it, self.abs_value, num_digits,
-                                      self.spec.type() != 'x');
+        it = internal::format_uint<4, char_type>(
+              it, self.abs_value, num_digits, self.spec.type != 'x');
       }
     };
 
     void on_hex() {
-      if (spec.flag(HASH_FLAG)) {
+      if (spec.has(HASH_FLAG)) {
         prefix[prefix_size++] = '0';
-        prefix[prefix_size++] = static_cast<char>(spec.type());
+        prefix[prefix_size++] = static_cast<char>(spec.type);
       }
       unsigned num_digits = count_digits<4>();
       writer.write_int(num_digits, get_prefix(), spec,
@@ -2568,14 +2563,14 @@ class basic_writer {
 
       template <typename It>
       void operator()(It &&it) const {
-        it = internal::format_uint<BITS>(it, abs_value, num_digits);
+        it = internal::format_uint<BITS, char_type>(it, abs_value, num_digits);
       }
     };
 
     void on_bin() {
-      if (spec.flag(HASH_FLAG)) {
+      if (spec.has(HASH_FLAG)) {
         prefix[prefix_size++] = '0';
-        prefix[prefix_size++] = static_cast<char>(spec.type());
+        prefix[prefix_size++] = static_cast<char>(spec.type);
       }
       unsigned num_digits = count_digits<1>();
       writer.write_int(num_digits, get_prefix(), spec,
@@ -2584,8 +2579,8 @@ class basic_writer {
 
     void on_oct() {
       unsigned num_digits = count_digits<3>();
-      if (spec.flag(HASH_FLAG) &&
-          spec.precision() <= static_cast<int>(num_digits)) {
+      if (spec.has(HASH_FLAG) &&
+          spec.precision <= static_cast<int>(num_digits)) {
         // Octal prefix '0' is counted as a digit, so only add it if precision
         // is not greater than the number of digits.
         prefix[prefix_size++] = '0';
@@ -2604,14 +2599,14 @@ class basic_writer {
       template <typename It>
       void operator()(It &&it) const {
         basic_string_view<char_type> s(&sep, SEP_SIZE);
-        it = format_decimal(it, abs_value, size,
-                            internal::add_thousands_sep<char_type>(s));
+        it = internal::format_decimal<char_type>(
+              it, abs_value, size, internal::add_thousands_sep<char_type>(s));
       }
     };
 
     void on_num() {
       unsigned num_digits = internal::count_digits(abs_value);
-      char_type sep = internal::thousands_sep<char_type>(writer.locale_.get());
+      char_type sep = internal::thousands_sep<char_type>(writer.locale_);
       unsigned size = num_digits + SEP_SIZE * ((num_digits - 1) / 3);
       writer.write_int(size, get_prefix(), spec,
                        num_writer{abs_value, size, sep});
@@ -2625,7 +2620,7 @@ class basic_writer {
   // Writes a formatted integer.
   template <typename T, typename Spec>
   void write_int(T value, const Spec &spec) {
-    internal::handle_int_type_spec(spec.type(),
+    internal::handle_int_type_spec(spec.type,
                                    int_writer<T, Spec>(*this, value, spec));
   }
 
@@ -2635,71 +2630,75 @@ class basic_writer {
     char sign;
     const char *str;
 
+    size_t size() const {
+      return static_cast<std::size_t>(INF_SIZE + (sign ? 1 : 0));
+    }
+    size_t width() const { return size(); }
+
     template <typename It>
     void operator()(It &&it) const {
       if (sign)
-        *it++ = sign;
-      it = std::copy_n(str, static_cast<std::size_t>(INF_SIZE), it);
+        *it++ = static_cast<char_type>(sign);
+      it = internal::copy_str<char_type>(
+            str, str + static_cast<std::size_t>(INF_SIZE), it);
     }
   };
 
   struct double_writer {
     size_t n;
     char sign;
-    basic_memory_buffer<char_type> &buffer;
+    internal::buffer &buffer;
+
+    size_t size() const { return buffer.size() + (sign ? 1 : 0); }
+    size_t width() const { return size(); }
 
     template <typename It>
     void operator()(It &&it) {
       if (sign) {
-        *it++ = sign;
+        *it++ = static_cast<char_type>(sign);
         --n;
       }
-      it = std::copy_n(buffer.begin(), n, it);
+      it = internal::copy_str<char_type>(buffer.begin(), buffer.end(), it);
     }
   };
 
   // Formats a floating-point number (double or long double).
   template <typename T>
   void write_double(T value, const format_specs &spec);
-  template <typename T>
-  void write_double_sprintf(T value, const format_specs &spec,
-                            internal::basic_buffer<char_type>& buffer);
 
   template <typename Char>
   struct str_writer {
     const Char *s;
-    std::size_t size;
+    size_t size_;
+
+    size_t size() const { return size_; }
+    size_t width() const {
+      return internal::count_code_points(basic_string_view<Char>(s, size_));
+    }
 
     template <typename It>
     void operator()(It &&it) const {
-      it = std::copy_n(s, size, it);
+      it = internal::copy_str<char_type>(s, s + size_, it);
     }
   };
 
   // Writes a formatted string.
   template <typename Char>
   void write_str(const Char *s, std::size_t size, const align_spec &spec) {
-    write_padded(size, spec, str_writer<Char>{s, size});
+    write_padded(spec, str_writer<Char>{s, size});
   }
 
   template <typename Char>
   void write_str(basic_string_view<Char> str, const format_specs &spec);
 
-  // Appends floating-point length specifier to the format string.
-  // The second argument is only used for overload resolution.
-  void append_float_length(char_type *&format_ptr, long double) {
-    *format_ptr++ = 'L';
-  }
-
-  template<typename T>
-  void append_float_length(char_type *&, T) {}
-
   template <typename Char>
   friend class internal::arg_formatter_base;
 
  public:
   /** Constructs a ``basic_writer`` object. */
-  explicit basic_writer(Range out): out_(out.begin()) {}
+  explicit basic_writer(
+      Range out, internal::locale_ref loc = internal::locale_ref())
+    : out_(out.begin()), locale_(loc) {}
 
   void write(int value) { write_decimal(value); }
   void write(long value) { write_decimal(value); }
@@ -2740,9 +2739,8 @@ class basic_writer {
   void write(char value) {
     *reserve(1) = value;
   }
-
   void write(wchar_t value) {
-    internal::require_wchar<char_type>();
+    static_assert(std::is_same<char_type, wchar_t>::value, "");
     *reserve(1) = value;
   }
 
@@ -2753,11 +2751,10 @@ class basic_writer {
    */
   void write(string_view value) {
     auto &&it = reserve(value.size());
-    it = std::copy(value.begin(), value.end(), it);
+    it = internal::copy_str<char_type>(value.begin(), value.end(), it);
   }
-
   void write(wstring_view value) {
-    internal::require_wchar<char_type>();
+    static_assert(std::is_same<char_type, wchar_t>::value, "");
     auto &&it = reserve(value.size());
     it = std::copy(value.begin(), value.end(), it);
   }
@@ -2771,22 +2768,23 @@ class basic_writer {
   typename std::enable_if<std::is_same<T, void>::value>::type
       write(const T *p) {
     format_specs specs;
-    specs.flags_ = HASH_FLAG;
-    specs.type_ = 'x';
+    specs.flags = HASH_FLAG;
+    specs.type = 'x';
     write_int(reinterpret_cast<uintptr_t>(p), specs);
   }
 };
 
 template <typename Range>
 template <typename F>
-void basic_writer<Range>::write_padded(
-    std::size_t size, const align_spec &spec, F &&f) {
-  unsigned width = spec.width();
-  if (width <= size)
+void basic_writer<Range>::write_padded(const align_spec &spec, F &&f) {
+  unsigned width = spec.width(); // User-perceived width (in code points).
+  size_t size = f.size(); // The number of code units.
+  size_t num_code_points = width != 0 ? f.width() : size;
+  if (width <= num_code_points)
     return f(reserve(size));
-  auto &&it = reserve(width);
+  auto &&it = reserve(width + (size - num_code_points));
   char_type fill = static_cast<char_type>(spec.fill());
-  std::size_t padding = width - size;
+  std::size_t padding = width - num_code_points;
   if (spec.align() == ALIGN_RIGHT) {
     it = std::fill_n(it, padding, fill);
     f(it);
@@ -2807,18 +2805,16 @@ void basic_writer<Range>::write_str(
     basic_string_view<Char> s, const format_specs &spec) {
   const Char *data = s.data();
   std::size_t size = s.size();
-  std::size_t precision = static_cast<std::size_t>(spec.precision_);
-  if (spec.precision_ >= 0 && precision < size)
-    size = precision;
+  if (spec.precision >= 0 && internal::to_unsigned(spec.precision) < size)
+    size = internal::to_unsigned(spec.precision);
   write_str(data, size, spec);
 }
 
-template <typename Char>
 struct float_spec_handler {
-  Char type;
+  char type;
   bool upper;
 
-  explicit float_spec_handler(Char t) : type(t), upper(false) {}
+  explicit float_spec_handler(char t) : type(t), upper(false) {}
 
   void on_general() {
     if (type == 'G')
@@ -2856,17 +2852,17 @@ template <typename Range>
 template <typename T>
 void basic_writer<Range>::write_double(T value, const format_specs &spec) {
   // Check type.
-  float_spec_handler<char_type> handler(spec.type());
-  internal::handle_float_type_spec(spec.type(), handler);
+  float_spec_handler handler(static_cast<char>(spec.type));
+  internal::handle_float_type_spec(handler.type, handler);
 
   char sign = 0;
-  // Use isnegative instead of value < 0 because the latter is always
+  // Use signbit instead of value < 0 because the latter is always
   // false for NaN.
-  if (internal::fputil::isnegative(static_cast<double>(value))) {
+  if (std::signbit(value)) {
     sign = '-';
     value = -value;
-  } else if (spec.flag(SIGN_FLAG)) {
-    sign = spec.flag(PLUS_FLAG) ? '+' : ' ';
+  } else if (spec.has(SIGN_FLAG)) {
+    sign = spec.has(PLUS_FLAG) ? '+' : ' ';
   }
 
   struct write_inf_or_nan_t {
@@ -2874,8 +2870,7 @@ void basic_writer<Range>::write_double(T value, const format_specs &spec) {
     format_specs spec;
     char sign;
     void operator()(const char *str) const {
-      writer.write_padded(INF_SIZE + (sign ? 1 : 0), spec,
-                          inf_or_nan_writer{sign, str});
+      writer.write_padded(spec, inf_or_nan_writer{sign, str});
     }
   } write_inf_or_nan = {*this, spec, sign};
 
@@ -2886,28 +2881,21 @@ void basic_writer<Range>::write_double(T value, const format_specs &spec) {
   if (internal::fputil::isinfinity(value))
     return write_inf_or_nan(handler.upper ? "INF" : "inf");
 
-  basic_memory_buffer<char_type> buffer;
-  char type = static_cast<char>(spec.type());
-  if (internal::const_check(
-        internal::use_grisu() && sizeof(T) <= sizeof(double)) &&
-      type != 'a' && type != 'A') {
-    char buf[100]; // TODO: correct buffer size
-    size_t size = 0;
-    internal::grisu2_format(static_cast<double>(value), buf, size, type,
-                            spec.precision(), spec.flag(HASH_FLAG));
-    FMT_ASSERT(size <= 100, "buffer overflow");
-    buffer.append(buf, buf + size); // TODO: avoid extra copy
-  } else {
+  memory_buffer buffer;
+  bool use_grisu = FMT_USE_GRISU && sizeof(T) <= sizeof(double) &&
+      spec.type != 'a' && spec.type != 'A' &&
+      internal::grisu2_format(static_cast<double>(value), buffer, spec);
+  if (!use_grisu) {
     format_specs normalized_spec(spec);
-    normalized_spec.type_ = handler.type;
-    write_double_sprintf(value, normalized_spec, buffer);
+    normalized_spec.type = handler.type;
+    internal::sprintf_format(value, buffer, normalized_spec);
   }
   size_t n = buffer.size();
   align_spec as = spec;
   if (spec.align() == ALIGN_NUMERIC) {
     if (sign) {
       auto &&it = reserve(1);
-      *it++ = sign;
+      *it++ = static_cast<char_type>(sign);
       sign = 0;
       if (as.width_)
         --as.width_;
@@ -2919,53 +2907,7 @@ void basic_writer<Range>::write_double(T value, const format_specs &spec) {
     if (sign)
       ++n;
   }
-  write_padded(n, as, double_writer{n, sign, buffer});
-}
-
-template <typename Range>
-template <typename T>
-void basic_writer<Range>::write_double_sprintf(
-    T value, const format_specs &spec,
-    internal::basic_buffer<char_type>& buffer) {
-  // Buffer capacity must be non-zero, otherwise MSVC's vsnprintf_s will fail.
-  FMT_ASSERT(buffer.capacity() != 0, "empty buffer");
-
-  // Build format string.
-  enum { MAX_FORMAT_SIZE = 10}; // longest format: %#-*.*Lg
-  char_type format[MAX_FORMAT_SIZE];
-  char_type *format_ptr = format;
-  *format_ptr++ = '%';
-  if (spec.flag(HASH_FLAG))
-    *format_ptr++ = '#';
-  if (spec.precision() >= 0) {
-    *format_ptr++ = '.';
-    *format_ptr++ = '*';
-  }
-
-  append_float_length(format_ptr, value);
-  *format_ptr++ = spec.type();
-  *format_ptr = '\0';
-
-  // Format using snprintf.
-  char_type *start = FMT_NULL;
-  for (;;) {
-    std::size_t buffer_size = buffer.capacity();
-    start = &buffer[0];
-    int result = internal::char_traits<char_type>::format_float(
-        start, buffer_size, format, spec.precision(), value);
-    if (result >= 0) {
-      unsigned n = internal::to_unsigned(result);
-      if (n < buffer.capacity()) {
-        buffer.resize(n);
-        break;  // The buffer is large enough - continue with formatting.
-      }
-      buffer.reserve(n + 1);
-    } else {
-      // If result is negative we ask to increase the capacity by at least 1,
-      // but as std::vector, the buffer grows exponentially.
-      buffer.reserve(buffer.capacity() + 1);
-    }
-  }
+  write_padded(as, double_writer{n, sign, buffer});
 }
 
 // Reports a system error without throwing an exception.
@@ -3010,7 +2952,7 @@ class windows_error : public system_error {
    \endrst
   */
   template <typename... Args>
-  windows_error(int error_code, string_view message, const Args & ... args) {
+  windows_error(int error_code, string_view message, const Args &... args) {
     init(error_code, message, make_format_args(args...));
   }
 };
@@ -3033,7 +2975,7 @@ class format_int {
 
   // Formats value in reverse and returns a pointer to the beginning.
   char *format_decimal(unsigned long long value) {
-    char *ptr = buffer_ + BUFFER_SIZE - 1;
+    char *ptr = buffer_ + (BUFFER_SIZE - 1);  // Parens to workaround MSVC bug.
     while (value >= 100) {
       // Integer division is slow so do it for a group of two digits instead
       // of for every digit. The idea comes from the talk by Alexandrescu
@@ -3099,6 +3041,7 @@ class format_int {
   std::string str() const { return std::string(str_, size()); }
 };
 
+// DEPRECATED!
 // Formats a decimal integer value writing into buffer and returns
 // a pointer to the end of the formatted string. This function doesn't
 // write a terminating null character.
@@ -3121,7 +3064,8 @@ inline void format_decimal(char *&buffer, T value) {
     return;
   }
   unsigned num_digits = internal::count_digits(abs_value);
-  internal::format_decimal(buffer, abs_value, num_digits);
+  internal::format_decimal<char>(
+        internal::make_checked(buffer, num_digits), abs_value, num_digits);
   buffer += num_digits;
 }
 
@@ -3143,7 +3087,7 @@ struct formatter<
     internal::specs_checker<handler_type>
         handler(handler_type(specs_, ctx), type);
     it = parse_format_specs(it, handler);
-    auto type_spec = specs_.type();
+    auto type_spec = specs_.type;
     auto eh = ctx.error_handler();
     switch (type) {
     case internal::none_type:
@@ -3161,8 +3105,7 @@ struct formatter<
     case internal::char_type:
       handle_char_specs(
           &specs_,
-          internal::char_specs_checker<decltype(eh), decltype(type_spec)>(
-              type_spec, eh));
+          internal::char_specs_checker<decltype(eh)>(type_spec, eh));
       break;
     case internal::double_type:
     case internal::long_double_type:
@@ -3192,10 +3135,10 @@ struct formatter<
     internal::handle_dynamic_spec<internal::width_checker>(
       specs_.width_, specs_.width_ref, ctx);
     internal::handle_dynamic_spec<internal::precision_checker>(
-      specs_.precision_, specs_.precision_ref, ctx);
+      specs_.precision, specs_.precision_ref, ctx);
     typedef output_range<typename FormatContext::iterator,
                          typename FormatContext::char_type> range_type;
-    return fmt::visit(arg_formatter<range_type>(ctx, &specs_),
+    return visit_format_arg(arg_formatter<range_type>(ctx, &specs_),
                       internal::make_arg<FormatContext>(val));
   }
 
@@ -3240,23 +3183,18 @@ class dynamic_formatter {
     internal::specs_checker<null_handler>
         checker(null_handler(), internal::get_type<FormatContext, T>::value);
     checker.on_align(specs_.align());
-    if (specs_.flags_ == 0) {
-      // Do nothing.
-    } else if (specs_.flag(SIGN_FLAG)) {
-      if (specs_.flag(PLUS_FLAG))
-        checker.on_plus();
-      else
-        checker.on_space();
-    } else if (specs_.flag(MINUS_FLAG)) {
+    if (specs_.flags == 0);  // Do nothing.
+    else if (specs_.has(SIGN_FLAG))
+      specs_.has(PLUS_FLAG) ? checker.on_plus() : checker.on_space();
+    else if (specs_.has(MINUS_FLAG))
       checker.on_minus();
-    } else if (specs_.flag(HASH_FLAG)) {
+    else if (specs_.has(HASH_FLAG))
       checker.on_hash();
-    }
-    if (specs_.precision_ != -1)
+    if (specs_.precision != -1)
       checker.end_precision();
     typedef output_range<typename FormatContext::iterator,
                          typename FormatContext::char_type> range;
-    fmt::visit(arg_formatter<range>(ctx, &specs_),
+    visit_format_arg(arg_formatter<range>(ctx, &specs_),
                internal::make_arg<FormatContext>(val));
     return ctx.out();
   }
@@ -3267,7 +3205,7 @@ class dynamic_formatter {
     internal::handle_dynamic_spec<internal::width_checker>(
       specs_.width_, specs_.width_ref, ctx);
     internal::handle_dynamic_spec<internal::precision_checker>(
-      specs_.precision_, specs_.precision_ref, ctx);
+      specs_.precision, specs_.precision_ref, ctx);
   }
 
   internal::dynamic_format_specs<Char> specs_;
@@ -3290,8 +3228,9 @@ struct format_handler : internal::error_handler {
   typedef typename ArgFormatter::range range;
 
   format_handler(range r, basic_string_view<Char> str,
-                 basic_format_args<Context> format_args)
-    : context(r.begin(), str, format_args) {}
+                 basic_format_args<Context> format_args,
+                 internal::locale_ref loc)
+    : context(r.begin(), str, format_args, loc) {}
 
   void on_text(const Char *begin, const Char *end) {
     auto size = internal::to_unsigned(end - begin);
@@ -3312,14 +3251,16 @@ struct format_handler : internal::error_handler {
 
   void on_replacement_field(const Char *p) {
     context.parse_context().advance_to(p);
-    if (!fmt::visit(internal::custom_formatter<Char, Context>(context), arg))
-      context.advance_to(fmt::visit(ArgFormatter(context), arg));
+    internal::custom_formatter<Char, Context> f(context);
+    if (!visit_format_arg(f, arg))
+      context.advance_to(visit_format_arg(ArgFormatter(context), arg));
   }
 
   iterator on_format_specs(iterator it) {
-    autoparse_ctx = context.parse_context();
+    auto &parse_ctx = context.parse_context();
     parse_ctx.advance_to(pointer_from(it));
-    if (fmt::visit(internal::custom_formatter<Char, Context>(context), arg))
+    internal::custom_formatter<Char, Context> f(context);
+    if (visit_format_arg(f, arg))
       return iterator(parse_ctx);
     basic_format_specs<Char> specs;
     using internal::specs_handler;
@@ -3329,7 +3270,7 @@ struct format_handler : internal::error_handler {
     if (*it != '}')
       on_error("missing '}' in format string");
     parse_ctx.advance_to(pointer_from(it));
-    context.advance_to(fmt::visit(ArgFormatter(context, &specs), arg));
+    context.advance_to(visit_format_arg(ArgFormatter(context, &specs), arg));
     return it;
   }
 
@@ -3339,10 +3280,12 @@ struct format_handler : internal::error_handler {
 
 /** Formats arguments and writes the output to the range. */
 template <typename ArgFormatter, typename Char, typename Context>
-typename Context::iterator vformat_to(typename ArgFormatter::range out,
-                                      basic_string_view<Char> format_str,
-                                      basic_format_args<Context> args) {
-  format_handler<ArgFormatter, Char, Context> h(out, format_str, args);
+typename Context::iterator vformat_to(
+    typename ArgFormatter::range out,
+    basic_string_view<Char> format_str,
+    basic_format_args<Context> args,
+    internal::locale_ref loc = internal::locale_ref()) {
+  format_handler<ArgFormatter, Char, Context> h(out, format_str, args, loc);
   internal::parse_format_string<false>(format_str, h);
   return h.context.out();
 }
@@ -3445,31 +3388,80 @@ std::basic_string<Char> to_string(const basic_memory_buffer<Char, SIZE> &buf) {
   return std::basic_string<Char>(buf.data(), buf.size());
 }
 
-inline format_context::iterator vformat_to(
-    internal::buffer &buf, string_view format_str, format_args args) {
-  typedef back_insert_range<internal::buffer> range;
-  return vformat_to<arg_formatter<range>>(buf, format_str, args);
+template <typename Char>
+typename buffer_context<Char>::type::iterator internal::vformat_to(
+    internal::basic_buffer<Char> &buf, basic_string_view<Char> format_str,
+    basic_format_args<typename buffer_context<Char>::type> args) {
+  typedef back_insert_range<internal::basic_buffer<Char> > range;
+  return vformat_to<arg_formatter<range>>(
+    buf, to_string_view(format_str), args);
 }
 
-inline wformat_context::iterator vformat_to(
-    internal::wbuffer &buf, wstring_view format_str, wformat_args args) {
-  typedef back_insert_range<internal::wbuffer> range;
-  return vformat_to<arg_formatter<range>>(buf, format_str, args);
+template <typename S, typename Char = FMT_CHAR(S)>
+inline typename buffer_context<Char>::type::iterator vformat_to(
+    internal::basic_buffer<Char> &buf, const S &format_str,
+    basic_format_args<typename buffer_context<Char>::type> args) {
+  return internal::vformat_to(buf, to_string_view(format_str), args);
 }
 
 template <
-    typename String, typename... Args,
+    typename S, typename... Args,
     std::size_t SIZE = inline_buffer_size,
-    typename Char = typename internal::format_string_traits<String>::char_type>
+    typename Char = typename internal::char_t<S>::type>
 inline typename buffer_context<Char>::type::iterator format_to(
-    basic_memory_buffer<Char, SIZE> &buf, const String &format_str,
-    const Args & ... args) {
+    basic_memory_buffer<Char, SIZE> &buf, const S &format_str,
+    const Args &... args) {
   internal::check_format_string<Args...>(format_str);
-  return vformat_to(
-        buf, basic_string_view<Char>(format_str),
-        make_format_args<typename buffer_context<Char>::type>(args...));
+  typedef typename buffer_context<Char>::type context;
+  format_arg_store<context, Args...> as{args...};
+  return internal::vformat_to(buf, to_string_view(format_str),
+                              basic_format_args<context>(as));
 }
 
+namespace internal {
+
+// Detect the iterator category of *any* given type in a SFINAE-friendly way.
+// Unfortunately, older implementations of std::iterator_traits are not safe
+// for use in a SFINAE-context.
+
+// the gist of C++17's void_t magic
+template<typename... Ts>
+struct void_ { typedef void type; };
+
+template <typename T, typename Enable = void>
+struct it_category : std::false_type {};
+
+template <typename T>
+struct it_category<T*> { typedef std::random_access_iterator_tag type; };
+
+template <typename T>
+struct it_category<T, typename void_<typename T::iterator_category>::type> {
+  typedef typename T::iterator_category type;
+};
+
+// Detect if *any* given type models the OutputIterator concept.
+template <typename It>
+class is_output_iterator {
+  // Check for mutability because all iterator categories derived from
+  // std::input_iterator_tag *may* also meet the requirements of an
+  // OutputIterator, thereby falling into the category of 'mutable iterators'
+  // [iterator.requirements.general] clause 4.
+  // The compiler reveals this property only at the point of *actually
+  // dereferencing* the iterator!
+  template <typename U>
+  static decltype(*(internal::declval<U>())) test(std::input_iterator_tag);
+  template <typename U>
+  static char& test(std::output_iterator_tag);
+  template <typename U>
+  static const char& test(...);
+
+  typedef decltype(test<It>(typename it_category<It>::type{})) type;
+  typedef typename std::remove_reference<type>::type result;
+ public:
+  static const bool value = !std::is_const<result>::value;
+};
+} // internal
+
 template <typename OutputIt, typename Char = char>
 //using format_context_t = basic_format_context<OutputIt, Char>;
 struct format_context_t { typedef basic_format_context<OutputIt, Char> type; };
@@ -3481,18 +3473,14 @@ struct format_args_t {
     typename format_context_t<OutputIt, Char>::type> type;
 };
 
-template <typename OutputIt, typename... Args>
-inline OutputIt vformat_to(OutputIt out, string_view format_str,
-                           typename format_args_t<OutputIt>::type args) {
-  typedef output_range<OutputIt, char> range;
-  return vformat_to<arg_formatter<range>>(range(out), format_str, args);
-}
-template <typename OutputIt, typename... Args>
-inline OutputIt vformat_to(
-    OutputIt out, wstring_view format_str,
-    typename format_args_t<OutputIt, wchar_t>::type args) {
-  typedef output_range<OutputIt, wchar_t> range;
-  return vformat_to<arg_formatter<range>>(range(out), format_str, args);
+template <typename String, typename OutputIt, typename... Args>
+inline typename std::enable_if<internal::is_output_iterator<OutputIt>::value,
+                               OutputIt>::type
+    vformat_to(OutputIt out, const String &format_str,
+               typename format_args_t<OutputIt, FMT_CHAR(String)>::type args) {
+  typedef output_range<OutputIt, FMT_CHAR(String)> range;
+  return vformat_to<arg_formatter<range>>(range(out),
+                                          to_string_view(format_str), args);
 }
 
 /**
@@ -3506,11 +3494,16 @@ inline OutputIt vformat_to(
    fmt::format_to(std::back_inserter(out), "{}", 42);
  \endrst
  */
-template <typename OutputIt, typename... Args>
-inline OutputIt format_to(OutputIt out, string_view format_str,
-                          const Args & ... args) {
-  return vformat_to(out, format_str,
-      make_format_args<typename format_context_t<OutputIt>::type>(args...));
+template <typename OutputIt, typename S, typename... Args>
+inline typename std::enable_if<
+    internal::is_string<S>::value &&
+    internal::is_output_iterator<OutputIt>::value, OutputIt>::type
+    format_to(OutputIt out, const S &format_str, const Args &... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef typename format_context_t<OutputIt, FMT_CHAR(S)>::type context;
+  format_arg_store<context, Args...> as{args...};
+  return vformat_to(out, to_string_view(format_str),
+                    basic_format_args<context>(as));
 }
 
 template <typename OutputIt>
@@ -3521,23 +3514,30 @@ struct format_to_n_result {
   std::size_t size;
 };
 
-template <typename OutputIt>
-using format_to_n_context = typename fmt::format_context_t<
-  fmt::internal::truncating_iterator<OutputIt>>::type;
+template <typename OutputIt, typename Char = typename OutputIt::value_type>
+struct format_to_n_context :
+  format_context_t<fmt::internal::truncating_iterator<OutputIt>, Char> {};
 
-template <typename OutputIt>
-using format_to_n_args = fmt::basic_format_args<format_to_n_context<OutputIt>>;
+template <typename OutputIt, typename Char = typename OutputIt::value_type>
+struct format_to_n_args {
+  typedef basic_format_args<
+    typename format_to_n_context<OutputIt, Char>::type> type;
+};
 
-template <typename OutputIt, typename ...Args>
-inline format_arg_store<format_to_n_context<OutputIt>, Args...>
-    make_format_to_n_args(const Args & ... args) {
-  return format_arg_store<format_to_n_context<OutputIt>, Args...>(args...);
+template <typename OutputIt, typename Char, typename ...Args>
+inline format_arg_store<
+  typename format_to_n_context<OutputIt, Char>::type, Args...>
+    make_format_to_n_args(const Args &... args) {
+  return format_arg_store<
+    typename format_to_n_context<OutputIt, Char>::type, Args...>(args...);
 }
 
-template <typename OutputIt, typename... Args>
-inline format_to_n_result<OutputIt> vformat_to_n(
-    OutputIt out, std::size_t n, string_view format_str,
-    format_to_n_args<OutputIt> args) {
+template <typename OutputIt, typename Char, typename... Args>
+inline typename std::enable_if<
+    internal::is_output_iterator<OutputIt>::value,
+    format_to_n_result<OutputIt>>::type vformat_to_n(
+    OutputIt out, std::size_t n, basic_string_view<Char> format_str,
+    typename format_to_n_args<OutputIt, Char>::type args) {
   typedef internal::truncating_iterator<OutputIt> It;
   auto it = vformat_to(It(out, n), format_str, args);
   return {it.base(), it.count()};
@@ -3550,20 +3550,19 @@ inline format_to_n_result<OutputIt> vformat_to_n(
  end of the output range.
  \endrst
  */
-template <typename OutputIt, typename... Args>
-inline format_to_n_result<OutputIt> format_to_n(
-    OutputIt out, std::size_t n, string_view format_str, const Args &... args) {
-  return vformat_to_n<OutputIt>(
-    out, n, format_str, make_format_to_n_args<OutputIt>(args...));
-}
-template <typename OutputIt, typename... Args>
-inline format_to_n_result<OutputIt> format_to_n(
-    OutputIt out, std::size_t n, wstring_view format_str,
-    const Args &... args) {
-  typedef internal::truncating_iterator<OutputIt> It;
-  auto it = vformat_to(It(out, n), format_str,
-      make_format_args<typename format_context_t<It, wchar_t>::type>(args...));
-  return {it.base(), it.count()};
+template <typename OutputIt, typename S, typename... Args>
+inline typename std::enable_if<
+    internal::is_string<S>::value &&
+    internal::is_output_iterator<OutputIt>::value,
+    format_to_n_result<OutputIt>>::type
+    format_to_n(OutputIt out, std::size_t n, const S &format_str,
+                const Args &... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef FMT_CHAR(S) Char;
+  format_arg_store<
+      typename format_to_n_context<OutputIt, Char>::type, Args...> as(args...);
+  return vformat_to_n(out, n, to_string_view(format_str),
+                      typename format_to_n_args<OutputIt, Char>::type(as));
 }
 
 template <typename Char>
@@ -3571,24 +3570,17 @@ inline std::basic_string<Char> internal::vformat(
     basic_string_view<Char> format_str,
     basic_format_args<typename buffer_context<Char>::type> args) {
   basic_memory_buffer<Char> buffer;
-  vformat_to(buffer, format_str, args);
+  internal::vformat_to(buffer, format_str, args);
   return fmt::to_string(buffer);
 }
 
-template <typename String, typename... Args>
-inline typename std::enable_if<internal::is_compile_string<String>::value>::type
-    print(String format_str, const Args & ... args) {
-  internal::check_format_string<Args...>(format_str);
-  return vprint(format_str.data(), make_format_args(args...));
-}
-
 /**
   Returns the number of characters in the output of
   ``format(format_str, args...)``.
  */
 template <typename... Args>
 inline std::size_t formatted_size(string_view format_str,
-                                  const Args & ... args) {
+                                  const Args &... args) {
   auto it = format_to(internal::counting_iterator<char>(), format_str, args...);
   return it.count();
 }
@@ -3604,7 +3596,7 @@ class udl_formatter {
   std::basic_string<Char> operator()(const Args &... args) const {
     FMT_CONSTEXPR_DECL Char s[] = {CHARS..., '\0'};
     FMT_CONSTEXPR_DECL bool invalid_format =
-        check_format_string<Char, error_handler, Args...>(
+        do_check_format_string<Char, error_handler, Args...>(
           basic_string_view<Char>(s, sizeof...(CHARS)));
     (void)invalid_format;
     return format(s, args...);
@@ -3616,7 +3608,7 @@ struct udl_formatter {
   const Char *str;
 
   template <typename... Args>
-  auto operator()(Args && ... args) const
+  auto operator()(Args &&... args) const
                   -> decltype(format(str, std::forward<Args>(args)...)) {
     return format(str, std::forward<Args>(args)...);
   }
@@ -3678,13 +3670,15 @@ operator"" _a(const wchar_t *s, std::size_t) { return {s}; }
 FMT_END_NAMESPACE
 
 #define FMT_STRING(s) [] { \
-    typedef typename std::decay<decltype(s)>::type pointer; \
-    struct S : fmt::compile_string { \
-      static FMT_CONSTEXPR pointer data() { return s; } \
-      static FMT_CONSTEXPR size_t size() { return sizeof(s); } \
-      explicit operator fmt::string_view() const { return s; } \
+    typedef typename std::remove_cv<std::remove_pointer< \
+      typename std::decay<decltype(s)>::type>::type>::type ct; \
+    struct str : fmt::compile_string { \
+      typedef ct char_type; \
+      FMT_CONSTEXPR operator fmt::basic_string_view<ct>() const { \
+        return {s, sizeof(s) / sizeof(ct) - 1}; \
+      } \
     }; \
-    return S{}; \
+    return str{}; \
   }()
 
 #if defined(FMT_STRING_ALIAS) && FMT_STRING_ALIAS
diff --git a/ceph/src/seastar/fmt/include/fmt/locale.h b/ceph/src/seastar/fmt/include/fmt/locale.h
new file mode 100644 (file)
index 0000000..8e021bc
--- /dev/null
@@ -0,0 +1,77 @@
+// Formatting library for C++ - std::locale support
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#ifndef FMT_LOCALE_H_
+#define FMT_LOCALE_H_
+
+#include "format.h"
+#include <locale>
+
+FMT_BEGIN_NAMESPACE
+
+namespace internal {
+template <typename Char>
+typename buffer_context<Char>::type::iterator vformat_to(
+    const std::locale &loc, basic_buffer<Char> &buf,
+    basic_string_view<Char> format_str,
+    basic_format_args<typename buffer_context<Char>::type> args) {
+  typedef back_insert_range<basic_buffer<Char> > range;
+  return vformat_to<arg_formatter<range>>(
+    buf, to_string_view(format_str), args, internal::locale_ref(loc));
+}
+
+template <typename Char>
+std::basic_string<Char> vformat(
+    const std::locale &loc, basic_string_view<Char> format_str,
+    basic_format_args<typename buffer_context<Char>::type> args) {
+  basic_memory_buffer<Char> buffer;
+  internal::vformat_to(loc, buffer, format_str, args);
+  return fmt::to_string(buffer);
+}
+}
+
+template <typename S, typename Char = FMT_CHAR(S)>
+inline std::basic_string<Char> vformat(
+    const std::locale &loc, const S &format_str,
+    basic_format_args<typename buffer_context<Char>::type> args) {
+  return internal::vformat(loc, to_string_view(format_str), args);
+}
+
+template <typename S, typename... Args>
+inline std::basic_string<FMT_CHAR(S)> format(
+    const std::locale &loc, const S &format_str, const Args &... args) {
+  return internal::vformat(
+    loc, to_string_view(format_str),
+    *internal::checked_args<S, Args...>(format_str, args...));
+}
+
+template <typename String, typename OutputIt, typename... Args>
+inline typename std::enable_if<internal::is_output_iterator<OutputIt>::value,
+                               OutputIt>::type
+    vformat_to(OutputIt out, const std::locale &loc, const String &format_str,
+               typename format_args_t<OutputIt, FMT_CHAR(String)>::type args) {
+  typedef output_range<OutputIt, FMT_CHAR(String)> range;
+  return vformat_to<arg_formatter<range>>(
+    range(out), to_string_view(format_str), args, internal::locale_ref(loc));
+}
+
+template <typename OutputIt, typename S, typename... Args>
+inline typename std::enable_if<
+    internal::is_string<S>::value &&
+    internal::is_output_iterator<OutputIt>::value, OutputIt>::type
+    format_to(OutputIt out, const std::locale &loc, const S &format_str,
+              const Args &... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef typename format_context_t<OutputIt, FMT_CHAR(S)>::type context;
+  format_arg_store<context, Args...> as{args...};
+  return vformat_to(out, loc, to_string_view(format_str),
+                    basic_format_args<context>(as));
+}
+
+FMT_END_NAMESPACE
+
+#endif  // FMT_LOCALE_H_
index e467f1ae6acc65ada418f3a10a4aea92b023fa7e..84b31cc5547ff8004d962cc308241d6db8dbc36e 100644 (file)
@@ -1,6 +1,6 @@
 // Formatting library for C++ - std::ostream support
 //
-// Copyright (c) 2012 - 2016, Victor Zverovich
+// Copyright (c) 2012 - present, Victor Zverovich
 // All rights reserved.
 //
 // For the license information refer to format.h.
@@ -129,7 +129,7 @@ inline void vprint(std::basic_ostream<Char> &os,
                    basic_string_view<Char> format_str,
                    basic_format_args<typename buffer_context<Char>::type> args) {
   basic_memory_buffer<Char> buffer;
-  vformat_to(buffer, format_str, args);
+  internal::vformat_to(buffer, format_str, args);
   internal::write(os, buffer);
 }
 /**
@@ -141,16 +141,12 @@ inline void vprint(std::basic_ostream<Char> &os,
     fmt::print(cerr, "Don't {}!", "panic");
   \endrst
  */
-template <typename... Args>
-inline void print(std::ostream &os, string_view format_str,
-                  const Args & ... args) {
-  vprint<char>(os, format_str, make_format_args<format_context>(args...));
-}
-
-template <typename... Args>
-inline void print(std::wostream &os, wstring_view format_str,
-                  const Args & ... args) {
-  vprint<wchar_t>(os, format_str, make_format_args<wformat_context>(args...));
+template <typename S, typename... Args>
+inline typename std::enable_if<internal::is_string<S>::value>::type
+print(std::basic_ostream<FMT_CHAR(S)> &os, const S &format_str,
+      const Args & ... args) {
+  internal::checked_args<S, Args...> ca(format_str, args...);
+  vprint(os, to_string_view(format_str), *ca);
 }
 FMT_END_NAMESPACE
 
index 7bf877b454110901439e8f724c52602f9a68f205..f4e3fad7ef7bde38d780c539221d15ccc94a7b59 100644 (file)
@@ -137,7 +137,7 @@ class buffered_file {
   buffered_file() FMT_NOEXCEPT : file_(FMT_NULL) {}
 
   // Destroys the object closing the file it represents if any.
-  FMT_API ~buffered_file() FMT_DTOR_NOEXCEPT;
+  FMT_API ~buffered_file() FMT_NOEXCEPT;
 
  private:
   buffered_file(const buffered_file &) = delete;
@@ -223,7 +223,7 @@ class file {
   }
 
   // Destroys the object closing the file it represents if any.
-  FMT_API ~file() FMT_DTOR_NOEXCEPT;
+  FMT_API ~file() FMT_NOEXCEPT;
 
   // Returns the file descriptor.
   int descriptor() const FMT_NOEXCEPT { return fd_; }
index 190784df0aeafe25387fa613d4dc1d98f370f7b5..005df5f19beb6eff2d278cdccda6945155f04481 100644 (file)
@@ -133,7 +133,7 @@ class arg_converter: public function<void> {
 // unsigned).
 template <typename T, typename Context, typename Char>
 void convert_arg(basic_format_arg<Context> &arg, Char type) {
-  fmt::visit(arg_converter<T, Context>(arg, type), arg);
+  visit_format_arg(arg_converter<T, Context>(arg, type), arg);
 }
 
 // Converts an integer argument to char for printf.
@@ -222,12 +222,12 @@ class printf_arg_formatter:
   context_type &context_;
 
   void write_null_pointer(char) {
-    this->spec()->type_ = 0;
+    this->spec()->type = 0;
     this->write("(nil)");
   }
 
   void write_null_pointer(wchar_t) {
-    this->spec()->type_ = 0;
+    this->spec()->type = 0;
     this->write(L"(nil)");
   }
 
@@ -243,7 +243,8 @@ class printf_arg_formatter:
    */
   printf_arg_formatter(internal::basic_buffer<char_type> &buffer,
                        format_specs &spec, context_type &ctx)
-    : base(back_insert_range<internal::basic_buffer<char_type>>(buffer), &spec),
+    : base(back_insert_range<internal::basic_buffer<char_type>>(buffer), &spec,
+           ctx.locale()),
       context_(ctx) {}
 
   template <typename T>
@@ -253,15 +254,15 @@ class printf_arg_formatter:
     // use std::is_same instead.
     if (std::is_same<T, bool>::value) {
       format_specs &fmt_spec = *this->spec();
-      if (fmt_spec.type_ != 's')
+      if (fmt_spec.type != 's')
         return base::operator()(value ? 1 : 0);
-      fmt_spec.type_ = 0;
+      fmt_spec.type = 0;
       this->write(value != 0);
     } else if (std::is_same<T, char_type>::value) {
       format_specs &fmt_spec = *this->spec();
-      if (fmt_spec.type_ && fmt_spec.type_ != 'c')
+      if (fmt_spec.type && fmt_spec.type != 'c')
         return (*this)(static_cast<int>(value));
-      fmt_spec.flags_ = 0;
+      fmt_spec.flags = 0;
       fmt_spec.align_ = ALIGN_RIGHT;
       return base::operator()(value);
     } else {
@@ -280,7 +281,7 @@ class printf_arg_formatter:
   iterator operator()(const char *value) {
     if (value)
       base::operator()(value);
-    else if (this->spec()->type_ == 'p')
+    else if (this->spec()->type == 'p')
       write_null_pointer(char_type());
     else
       this->write("(null)");
@@ -291,7 +292,7 @@ class printf_arg_formatter:
   iterator operator()(const wchar_t *value) {
     if (value)
       base::operator()(value);
-    else if (this->spec()->type_ == 'p')
+    else if (this->spec()->type == 'p')
       write_null_pointer(char_type());
     else
       this->write(L"(null)");
@@ -310,7 +311,7 @@ class printf_arg_formatter:
   iterator operator()(const void *value) {
     if (value)
       return base::operator()(value);
-    this->spec()->type_ = 0;
+    this->spec()->type = 0;
     write_null_pointer(char_type());
     return this->out();
   }
@@ -394,16 +395,16 @@ void basic_printf_context<OutputIt, Char, AF>::parse_flags(
         spec.align_ = ALIGN_LEFT;
         break;
       case '+':
-        spec.flags_ |= SIGN_FLAG | PLUS_FLAG;
+        spec.flags |= SIGN_FLAG | PLUS_FLAG;
         break;
       case '0':
         spec.fill_ = '0';
         break;
       case ' ':
-        spec.flags_ |= SIGN_FLAG;
+        spec.flags |= SIGN_FLAG;
         break;
       case '#':
-        spec.flags_ |= HASH_FLAG;
+        spec.flags |= HASH_FLAG;
         break;
       default:
         --it;
@@ -453,8 +454,8 @@ unsigned basic_printf_context<OutputIt, Char, AF>::parse_header(
     spec.width_ = parse_nonnegative_int(it, eh);
   } else if (*it == '*') {
     ++it;
-    spec.width_ =
-        fmt::visit(internal::printf_width_handler<char_type>(spec), get_arg(it));
+    spec.width_ = visit_format_arg(
+          internal::printf_width_handler<char_type>(spec), get_arg(it));
   }
   return arg_index;
 }
@@ -486,19 +487,19 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
       ++it;
       if ('0' <= *it && *it <= '9') {
         internal::error_handler eh;
-        spec.precision_ = static_cast<int>(parse_nonnegative_int(it, eh));
+        spec.precision = static_cast<int>(parse_nonnegative_int(it, eh));
       } else if (*it == '*') {
         ++it;
-        spec.precision_ =
-            fmt::visit(internal::printf_precision_handler(), get_arg(it));
+        spec.precision =
+            visit_format_arg(internal::printf_precision_handler(), get_arg(it));
       } else {
-        spec.precision_ = 0;
+        spec.precision = 0;
       }
     }
 
     format_arg arg = get_arg(it, arg_index);
-    if (spec.flag(HASH_FLAG) && fmt::visit(internal::is_zero_int(), arg))
-      spec.flags_ &= ~internal::to_unsigned<int>(HASH_FLAG);
+    if (spec.has(HASH_FLAG) && visit_format_arg(internal::is_zero_int(), arg))
+      spec.flags &= ~internal::to_unsigned<int>(HASH_FLAG);
     if (spec.fill_ == '0') {
       if (arg.is_arithmetic())
         spec.align_ = ALIGN_NUMERIC;
@@ -542,16 +543,17 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
     // Parse type.
     if (!*it)
       FMT_THROW(format_error("invalid format string"));
-    spec.type_ = static_cast<char>(*it++);
+    spec.type = static_cast<char>(*it++);
     if (arg.is_integral()) {
       // Normalize type.
-      switch (spec.type_) {
+      switch (spec.type) {
       case 'i': case 'u':
-        spec.type_ = 'd';
+        spec.type = 'd';
         break;
       case 'c':
         // TODO: handle wchar_t better?
-        fmt::visit(internal::char_converter<basic_printf_context>(arg), arg);
+        visit_format_arg(
+              internal::char_converter<basic_printf_context>(arg), arg);
         break;
       }
     }
@@ -559,7 +561,7 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
     start = it;
 
     // Format argument.
-    fmt::visit(AF(buffer, spec, *this), arg);
+    visit_format_arg(AF(buffer, spec, *this), arg);
   }
   buffer.append(pointer_from(start), pointer_from(it));
 }
@@ -571,23 +573,44 @@ void printf(internal::basic_buffer<Char> &buf, basic_string_view<Char> format,
 }
 
 template <typename Buffer>
-struct printf_context {
+struct basic_printf_context_t {
   typedef basic_printf_context<
     std::back_insert_iterator<Buffer>, typename Buffer::value_type> type;
 };
 
-template <typename ...Args>
-inline format_arg_store<printf_context<internal::buffer>::type, Args...>
-    make_printf_args(const Args & ... args) {
-  return format_arg_store<printf_context<internal::buffer>::type, Args...>(
-      args...);
-}
-typedef basic_format_args<printf_context<internal::buffer>::type> printf_args;
-typedef basic_format_args<printf_context<internal::wbuffer>::type> wprintf_args;
+typedef basic_printf_context_t<internal::buffer>::type printf_context;
+typedef basic_printf_context_t<internal::wbuffer>::type wprintf_context;
+
+typedef basic_format_args<printf_context> printf_args;
+typedef basic_format_args<wprintf_context> wprintf_args;
+
+/**
+  \rst
+  Constructs an `~fmt::format_arg_store` object that contains references to
+  arguments and can be implicitly converted to `~fmt::printf_args`. 
+  \endrst
+ */
+template<typename... Args>
+inline format_arg_store<printf_context, Args...>
+  make_printf_args(const Args &... args) { return {args...}; }
 
-inline std::string vsprintf(string_view format, printf_args args) {
-  memory_buffer buffer;
-  printf(buffer, format, args);
+/**
+  \rst
+  Constructs an `~fmt::format_arg_store` object that contains references to
+  arguments and can be implicitly converted to `~fmt::wprintf_args`. 
+  \endrst
+ */
+template<typename... Args>
+inline format_arg_store<wprintf_context, Args...>
+  make_wprintf_args(const Args &... args) { return {args...}; }
+
+template <typename S, typename Char = FMT_CHAR(S)>
+inline std::basic_string<Char>
+vsprintf(const S &format,
+         basic_format_args<typename basic_printf_context_t<
+           internal::basic_buffer<Char>>::type> args) {
+  basic_memory_buffer<Char> buffer;
+  printf(buffer, to_string_view(format), args);
   return to_string(buffer);
 }
 
@@ -600,30 +623,23 @@ inline std::string vsprintf(string_view format, printf_args args) {
     std::string message = fmt::sprintf("The answer is %d", 42);
   \endrst
 */
-template <typename... Args>
-inline std::string sprintf(string_view format_str, const Args & ... args) {
-  return vsprintf(format_str,
-    make_format_args<typename printf_context<internal::buffer>::type>(args...));
-}
-
-inline std::wstring vsprintf(wstring_view format, wprintf_args args) {
-  wmemory_buffer buffer;
-  printf(buffer, format, args);
-  return to_string(buffer);
-}
-
-template <typename... Args>
-inline std::wstring sprintf(wstring_view format_str, const Args & ... args) {
-  return vsprintf(format_str,
-    make_format_args<typename printf_context<internal::wbuffer>::type>(args...));
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, std::basic_string<FMT_CHAR(S)>)
+    sprintf(const S &format, const Args & ... args) {
+  internal::check_format_string<Args...>(format);
+  typedef internal::basic_buffer<FMT_CHAR(S)> buffer;
+  typedef typename basic_printf_context_t<buffer>::type context;
+  format_arg_store<context, Args...> as{ args... };
+  return vsprintf(to_string_view(format),
+                  basic_format_args<context>(as));
 }
 
-template <typename Char>
-inline int vfprintf(std::FILE *f, basic_string_view<Char> format,
-                    basic_format_args<typename printf_context<
+template <typename S, typename Char = FMT_CHAR(S)>
+inline int vfprintf(std::FILE *f, const S &format,
+                    basic_format_args<typename basic_printf_context_t<
                       internal::basic_buffer<Char>>::type> args) {
   basic_memory_buffer<Char> buffer;
-  printf(buffer, format, args);
+  printf(buffer, to_string_view(format), args);
   std::size_t size = buffer.size();
   return std::fwrite(
     buffer.data(), sizeof(Char), size, f) < size ? -1 : static_cast<int>(size);
@@ -638,26 +654,22 @@ inline int vfprintf(std::FILE *f, basic_string_view<Char> format,
     fmt::fprintf(stderr, "Don't %s!", "panic");
   \endrst
  */
-template <typename... Args>
-inline int fprintf(std::FILE *f, string_view format_str, const Args & ... args) {
-  auto vargs = make_format_args<
-    typename printf_context<internal::buffer>::type>(args...);
-  return vfprintf<char>(f, format_str, vargs);
-}
-
-template <typename... Args>
-inline int fprintf(std::FILE *f, wstring_view format_str,
-                   const Args & ... args) {
-  return vfprintf(f, format_str,
-    make_format_args<typename printf_context<internal::wbuffer>::type>(args...));
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, int)
+    fprintf(std::FILE *f, const S &format, const Args & ... args) {
+  internal::check_format_string<Args...>(format);
+  typedef internal::basic_buffer<FMT_CHAR(S)> buffer;
+  typedef typename basic_printf_context_t<buffer>::type context;
+  format_arg_store<context, Args...> as{ args... };
+  return vfprintf(f, to_string_view(format),
+                  basic_format_args<context>(as));
 }
 
-inline int vprintf(string_view format, printf_args args) {
-  return vfprintf(stdout, format, args);
-}
-
-inline int vprintf(wstring_view format, wprintf_args args) {
-  return vfprintf(stdout, format, args);
+template <typename S, typename Char = FMT_CHAR(S)>
+inline int vprintf(const S &format,
+                   basic_format_args<typename basic_printf_context_t<
+                    internal::basic_buffer<Char>>::type> args) {
+  return vfprintf(stdout, to_string_view(format), args);
 }
 
 /**
@@ -669,30 +681,24 @@ inline int vprintf(wstring_view format, wprintf_args args) {
     fmt::printf("Elapsed time: %.2f seconds", 1.23);
   \endrst
  */
-template <typename... Args>
-inline int printf(string_view format_str, const Args & ... args) {
-  return vprintf(format_str,
-    make_format_args<typename printf_context<internal::buffer>::type>(args...));
-}
-
-template <typename... Args>
-inline int printf(wstring_view format_str, const Args & ... args) {
-  return vprintf(format_str,
-    make_format_args<typename printf_context<internal::wbuffer>::type>(args...));
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, int)
+    printf(const S &format_str, const Args & ... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef internal::basic_buffer<FMT_CHAR(S)> buffer;
+  typedef typename basic_printf_context_t<buffer>::type context;
+  format_arg_store<context, Args...> as{ args... };
+  return vprintf(to_string_view(format_str),
+                 basic_format_args<context>(as));
 }
 
-inline int vfprintf(std::ostream &os, string_view format_str,
-                    printf_args args) {
-  memory_buffer buffer;
-  printf(buffer, format_str, args);
-  internal::write(os, buffer);
-  return static_cast<int>(buffer.size());
-}
-
-inline int vfprintf(std::wostream &os, wstring_view format_str,
-                    wprintf_args args) {
-  wmemory_buffer buffer;
-  printf(buffer, format_str, args);
+template <typename S, typename Char = FMT_CHAR(S)>
+inline int vfprintf(std::basic_ostream<Char> &os,
+                    const S &format,
+                    basic_format_args<typename basic_printf_context_t<
+                      internal::basic_buffer<Char>>::type> args) {
+  basic_memory_buffer<Char> buffer;
+  printf(buffer, to_string_view(format), args);
   internal::write(os, buffer);
   return static_cast<int>(buffer.size());
 }
@@ -706,20 +712,16 @@ inline int vfprintf(std::wostream &os, wstring_view format_str,
     fmt::fprintf(cerr, "Don't %s!", "panic");
   \endrst
  */
-template <typename... Args>
-inline int fprintf(std::ostream &os, string_view format_str,
-                   const Args & ... args) {
-  auto vargs = make_format_args<
-    typename printf_context<internal::buffer>::type>(args...);
-  return vfprintf(os, format_str, vargs);
-}
-
-template <typename... Args>
-inline int fprintf(std::wostream &os, wstring_view format_str,
-                   const Args & ... args) {
-  auto vargs = make_format_args<
-    typename printf_context<internal::buffer>::type>(args...);
-  return vfprintf(os, format_str, vargs);
+template <typename S, typename... Args>
+inline FMT_ENABLE_IF_STRING(S, int)
+    fprintf(std::basic_ostream<FMT_CHAR(S)> &os,
+            const S &format_str, const Args & ... args) {
+  internal::check_format_string<Args...>(format_str);
+  typedef internal::basic_buffer<FMT_CHAR(S)> buffer;
+  typedef typename basic_printf_context_t<buffer>::type context;
+  format_arg_store<context, Args...> as{ args... };
+  return vfprintf(os, to_string_view(format_str),
+                  basic_format_args<context>(as));
 }
 FMT_END_NAMESPACE
 
index a624058f39f13c4e53bd98b2532b413173ec2414..b269eda1dfb306d7506171e941831d5012a0959f 100644 (file)
@@ -1,6 +1,6 @@
 // Formatting library for C++ - time formatting
 //
-// Copyright (c) 2012 - 2016, Victor Zverovich
+// Copyright (c) 2012 - present, Victor Zverovich
 // All rights reserved.
 //
 // For the license information refer to format.h.
@@ -10,6 +10,7 @@
 
 #include "format.h"
 #include <ctime>
+#include <locale>
 
 FMT_BEGIN_NAMESPACE
 
@@ -22,7 +23,7 @@ inline null<> localtime_r FMT_NOMACRO(...) { return null<>(); }
 inline null<> localtime_s(...) { return null<>(); }
 inline null<> gmtime_r(...) { return null<>(); }
 inline null<> gmtime_s(...) { return null<>(); }
-}
+}  // namespace internal
 
 // Thread-safe replacement for std::localtime
 inline std::tm localtime(std::time_t time) {
@@ -46,18 +47,20 @@ inline std::tm localtime(std::time_t time) {
 
     bool fallback(int res) { return res == 0; }
 
+#if !FMT_MSC_VER
     bool fallback(internal::null<>) {
       using namespace fmt::internal;
       std::tm *tm = std::localtime(&time_);
       if (tm) tm_ = *tm;
       return tm != FMT_NULL;
     }
+#endif
   };
   dispatcher lt(time);
-  if (lt.run())
-    return lt.tm_;
   // Too big time values may be unsupported.
-  FMT_THROW(format_error("time_t value out of range"));
+  if (!lt.run())
+    FMT_THROW(format_error("time_t value out of range"));
+  return lt.tm_;
 }
 
 // Thread-safe replacement for std::gmtime
@@ -82,17 +85,19 @@ inline std::tm gmtime(std::time_t time) {
 
     bool fallback(int res) { return res == 0; }
 
+#if !FMT_MSC_VER
     bool fallback(internal::null<>) {
       std::tm *tm = std::gmtime(&time_);
       if (tm) tm_ = *tm;
       return tm != FMT_NULL;
     }
+#endif
   };
   dispatcher gt(time);
-  if (gt.run())
-    return gt.tm_;
   // Too big time values may be unsupported.
-  FMT_THROW(format_error("time_t value out of range"));
+  if (!gt.run())
+    FMT_THROW(format_error("time_t value out of range"));
+  return gt.tm_;
 }
 
 namespace internal {
@@ -126,7 +131,7 @@ struct formatter<std::tm, Char> {
 
   template <typename FormatContext>
   auto format(const std::tm &tm, FormatContext &ctx) -> decltype(ctx.out()) {
-    internal::basic_buffer<Char> &buf = internal::get_container(ctx.out());
+    basic_memory_buffer<Char> buf;
     std::size_t start = buf.size();
     for (;;) {
       std::size_t size = buf.capacity() - start;
@@ -146,7 +151,7 @@ struct formatter<std::tm, Char> {
       const std::size_t MIN_GROWTH = 10;
       buf.reserve(buf.capacity() + (size > MIN_GROWTH ? size : MIN_GROWTH));
     }
-    return ctx.out();
+    return std::copy(buf.begin(), buf.end(), ctx.out());
   }
 
   basic_memory_buffer<Char> tm_format;
index ab5663e1036909f82e07b311cd897ead79b14d9e..dadfc8dd378929674062d4510829fb7b53e5c86b 100644 (file)
@@ -9,16 +9,16 @@
 
 FMT_BEGIN_NAMESPACE
 template struct internal::basic_data<void>;
+template FMT_API internal::locale_ref::locale_ref(const std::locale &loc);
+template FMT_API std::locale internal::locale_ref::get<std::locale>() const;
 
 // Explicit instantiations for char.
 
-template FMT_API char internal::thousands_sep(locale_provider *lp);
+template FMT_API char internal::thousands_sep_impl(locale_ref);
 
-template void internal::basic_buffer<char>::append(const char *, const char *);
+template FMT_API void internal::basic_buffer<char>::append(const char *, const char *);
 
-template void basic_fixed_buffer<char>::grow(std::size_t);
-
-template void internal::arg_map<format_context>::init(
+template FMT_API void internal::arg_map<format_context>::init(
     const basic_format_args<format_context> &args);
 
 template FMT_API int internal::char_traits<char>::format_float(
@@ -30,16 +30,22 @@ template FMT_API int internal::char_traits<char>::format_float(
 template FMT_API std::string internal::vformat<char>(
     string_view, basic_format_args<format_context>);
 
+template FMT_API format_context::iterator internal::vformat_to(
+    internal::buffer &, string_view, basic_format_args<format_context>);
+
+template FMT_API void internal::sprintf_format(
+    double, internal::buffer &, core_format_specs);
+template FMT_API void internal::sprintf_format(
+    long double, internal::buffer &, core_format_specs);
+
 // Explicit instantiations for wchar_t.
 
-template FMT_API wchar_t internal::thousands_sep(locale_provider *);
+template FMT_API wchar_t internal::thousands_sep_impl(locale_ref);
 
-template void internal::basic_buffer<wchar_t>::append(
+template FMT_API void internal::basic_buffer<wchar_t>::append(
     const wchar_t *, const wchar_t *);
 
-template void basic_fixed_buffer<wchar_t>::grow(std::size_t);
-
-template void internal::arg_map<wformat_context>::init(
+template FMT_API void internal::arg_map<wformat_context>::init(
     const basic_format_args<wformat_context> &);
 
 template FMT_API int internal::char_traits<wchar_t>::format_float(
index 29fb0789b18db3201f4f4e6c048f180c4e66aec5..b5281fee181e19fcf6a3b19dd177de8cb08b36d7 100644 (file)
@@ -1 +1 @@
-<manifest package="fmt" />
\ No newline at end of file
+<manifest package="net.fmtlib" />
index 1dd64391b45071e12c4809a40795798765463456..797cf4915789ad842b59d6cb6ea5dbf2114a8e50 100644 (file)
@@ -1,15 +1,25 @@
+
 // General gradle arguments for root project
 buildscript {    
     repositories {
         google()
         jcenter()
     }
-
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.1'
+        //
+        // https://developer.android.com/studio/releases/gradle-plugin
+        //
+        // Notice that 3.1.3 here is the version of [Android Gradle Plugin]
+        // Accroding to URL above you will need Gradle 4.4 or higher
+        //
+        classpath 'com.android.tools.build:gradle:3.1.3'
     }
 }
-
+repositories {
+    google()
+    jcenter()
+}
+    
 // Output: Shared library (.so) for Android 
 apply plugin: 'com.android.library'
 
@@ -24,20 +34,17 @@ android {
     splits {
         abi {
             enable true
-            // Be general, as much as possible ...
-            // universalApk true 
-
             // Specify platforms for Application
             reset()
-            include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
+            include  "arm64-v8a", "armeabi-v7a", "x86_64"
         }
     }
 
     defaultConfig {
         minSdkVersion 21    // Android 5.0+
         targetSdkVersion 25 // Follow Compile SDK
-        versionCode 16      // Follow release count
-        versionName "4.1.0" // Follow Official version
+        versionCode 20      // Follow release count
+        versionName "5.2.1" // Follow Official version
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         
         externalNativeBuild {
@@ -46,7 +53,7 @@ android {
                 arguments "-DBUILD_SHARED_LIBS=true"    // Build shared object
                 arguments "-DFMT_TEST=false"            // Skip test
                 arguments "-DFMT_DOC=false"             // Skip document
-                cppFlags  "-std=c++14"
+                cppFlags  "-std=c++17"
             }
         }
         println("Gradle CMake Plugin: ")
index 1866cdcc5f2c5df23a7492c99a8c5a03e52c7c35..6aa9e21dd5316945e85bd7a7337d5dd46aa4c49e 100644 (file)
@@ -3,10 +3,15 @@
 include(CheckCXXSourceCompiles)
 include(CheckCXXCompilerFlag)
 
-if (NOT CMAKE_CXX_STANDARD)
+if (CMAKE_CXX_STANDARD)
+  message(STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
+elseif (CMAKE_CXX_FLAGS MATCHES "-std=(c|gnu)\\+\\+")
+  string(REGEX MATCH "-std=(c|gnu)\\+\\+[^ ]+" CXX_STANDARD_FLAG "${CMAKE_CXX_FLAGS}")
+  message(STATUS "CXX_STANDARD_FLAG: ${CXX_STANDARD_FLAG}")
+else()
   set(CMAKE_CXX_STANDARD 11)
+  message(STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
 endif()
-message(STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
 
 if (CMAKE_CXX_STANDARD EQUAL 20)
   check_cxx_compiler_flag(-std=c++20 has_std_20_flag)
diff --git a/ceph/src/seastar/fmt/support/cmake/fmt.pc.in b/ceph/src/seastar/fmt/support/cmake/fmt.pc.in
new file mode 100644 (file)
index 0000000..79de0b6
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+
+Name: fmt
+Description: A modern formatting library
+Version: @FMT_VERSION@
+Libs: -L${libdir} -lfmt
+Cflags: -I${includedir}
+
index fa8402e1e897adbc08aa8305ecb3e7e9c87a4029..70e19db77aab4161584492590ec69cc4c82f4f02 100644 (file)
@@ -85,10 +85,14 @@ function(add_fmt_test name)
 endfunction()
 
 add_fmt_test(assert-test)
+add_fmt_test(chrono-test)
 add_fmt_test(core-test)
 add_fmt_test(gtest-extra-test)
 add_fmt_test(format-test mock-allocator.h)
-add_fmt_test(format-impl-test)
+if (NOT (MSVC AND BUILD_SHARED_LIBS))
+  add_fmt_test(format-impl-test)
+endif ()
+add_fmt_test(locale-test)
 add_fmt_test(ostream-test)
 add_fmt_test(printf-test)
 add_fmt_test(time-test)
@@ -165,8 +169,11 @@ if (FMT_PEDANTIC)
     "-DCXX_STANDARD_FLAG=${CXX_STANDARD_FLAG}"
     "-DPEDANTIC_COMPILE_FLAGS=${PEDANTIC_COMPILE_FLAGS}"
     "-DSUPPORTS_USER_DEFINED_LITERALS=${SUPPORTS_USER_DEFINED_LITERALS}")
+endif ()
 
-  # test if the targets are findable from the build directory
+# These tests are disabled on Windows because they take too long.
+if (FMT_PEDANTIC AND NOT WIN32)
+  # Test if the targets are found from the build directory.
   add_test(find-package-test ${CMAKE_CTEST_COMMAND}
     -C ${CMAKE_BUILD_TYPE}
     --build-and-test
@@ -181,7 +188,7 @@ if (FMT_PEDANTIC)
     "-DPEDANTIC_COMPILE_FLAGS=${PEDANTIC_COMPILE_FLAGS}"
     "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
 
-  # test if the targets are findable when add_subdirectory is used
+  # Test if the targets are found when add_subdirectory is used.
   add_test(add-subdirectory-test ${CMAKE_CTEST_COMMAND}
     -C ${CMAKE_BUILD_TYPE}
     --build-and-test
diff --git a/ceph/src/seastar/fmt/test/chrono-test.cc b/ceph/src/seastar/fmt/test/chrono-test.cc
new file mode 100644 (file)
index 0000000..ca25d18
--- /dev/null
@@ -0,0 +1,170 @@
+// Formatting library for C++ - time formatting tests
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#include "fmt/chrono.h"
+#include "gtest-extra.h"
+
+#include <iomanip>
+
+std::tm make_tm() {
+  auto time = std::tm();
+  time.tm_mday = 1;
+  return time;
+}
+
+std::tm make_hour(int h) {
+  auto time = make_tm();
+  time.tm_hour = h;
+  return time;
+}
+
+std::tm make_minute(int m) {
+  auto time = make_tm();
+  time.tm_min = m;
+  return time;
+}
+
+std::tm make_second(int s) {
+  auto time = make_tm();
+  time.tm_sec = s;
+  return time;
+}
+
+std::string format_tm(const std::tm &time, const char *spec,
+                      const std::locale &loc) {
+  auto &facet = std::use_facet<std::time_put<char>>(loc);
+  std::ostringstream os;
+  os.imbue(loc);
+  facet.put(os, os, ' ', &time, spec, spec + std::strlen(spec));
+  return os.str();
+}
+
+#define EXPECT_TIME(spec, time, duration) { \
+    std::locale loc("ja_JP.utf8"); \
+    EXPECT_EQ(format_tm(time, spec, loc), \
+              fmt::format(loc, "{:" spec "}", duration)); \
+  }
+
+TEST(ChronoTest, FormatDefault) {
+  EXPECT_EQ("42s", fmt::format("{}", std::chrono::seconds(42)));
+  EXPECT_EQ("42as",
+            fmt::format("{}", std::chrono::duration<int, std::atto>(42)));
+  EXPECT_EQ("42fs",
+            fmt::format("{}", std::chrono::duration<int, std::femto>(42)));
+  EXPECT_EQ("42ps",
+            fmt::format("{}", std::chrono::duration<int, std::pico>(42)));
+  EXPECT_EQ("42ns", fmt::format("{}", std::chrono::nanoseconds(42)));
+  EXPECT_EQ("42µs", fmt::format("{}", std::chrono::microseconds(42)));
+  EXPECT_EQ("42ms", fmt::format("{}", std::chrono::milliseconds(42)));
+  EXPECT_EQ("42cs",
+            fmt::format("{}", std::chrono::duration<int, std::centi>(42)));
+  EXPECT_EQ("42ds",
+            fmt::format("{}", std::chrono::duration<int, std::deci>(42)));
+  EXPECT_EQ("42s", fmt::format("{}", std::chrono::seconds(42)));
+  EXPECT_EQ("42das",
+            fmt::format("{}", std::chrono::duration<int, std::deca>(42)));
+  EXPECT_EQ("42hs",
+            fmt::format("{}", std::chrono::duration<int, std::hecto>(42)));
+  EXPECT_EQ("42ks",
+            fmt::format("{}", std::chrono::duration<int, std::kilo>(42)));
+  EXPECT_EQ("42Ms",
+            fmt::format("{}", std::chrono::duration<int, std::mega>(42)));
+  EXPECT_EQ("42Gs",
+            fmt::format("{}", std::chrono::duration<int, std::giga>(42)));
+  EXPECT_EQ("42Ts",
+            fmt::format("{}", std::chrono::duration<int, std::tera>(42)));
+  EXPECT_EQ("42Ps",
+            fmt::format("{}", std::chrono::duration<int, std::peta>(42)));
+  EXPECT_EQ("42Es",
+            fmt::format("{}", std::chrono::duration<int, std::exa>(42)));
+  EXPECT_EQ("42m", fmt::format("{}", std::chrono::minutes(42)));
+  EXPECT_EQ("42h", fmt::format("{}", std::chrono::hours(42)));
+  EXPECT_EQ("42[15s]",
+            fmt::format("{}",
+                        std::chrono::duration<int, std::ratio<15, 1>>(42)));
+  EXPECT_EQ("42[15/4s]",
+            fmt::format("{}",
+                        std::chrono::duration<int, std::ratio<15, 4>>(42)));
+}
+
+TEST(ChronoTest, FormatSpecs) {
+  EXPECT_EQ("%", fmt::format("{:%%}", std::chrono::seconds(0)));
+  EXPECT_EQ("\n", fmt::format("{:%n}", std::chrono::seconds(0)));
+  EXPECT_EQ("\t", fmt::format("{:%t}", std::chrono::seconds(0)));
+  EXPECT_EQ("00", fmt::format("{:%S}", std::chrono::seconds(0)));
+  EXPECT_EQ("00", fmt::format("{:%S}", std::chrono::seconds(60)));
+  EXPECT_EQ("42", fmt::format("{:%S}", std::chrono::seconds(42)));
+  EXPECT_EQ("01.234", fmt::format("{:%S}", std::chrono::milliseconds(1234)));
+  EXPECT_EQ("00", fmt::format("{:%M}", std::chrono::minutes(0)));
+  EXPECT_EQ("00", fmt::format("{:%M}", std::chrono::minutes(60)));
+  EXPECT_EQ("42", fmt::format("{:%M}", std::chrono::minutes(42)));
+  EXPECT_EQ("01", fmt::format("{:%M}", std::chrono::seconds(61)));
+  EXPECT_EQ("00", fmt::format("{:%H}", std::chrono::hours(0)));
+  EXPECT_EQ("00", fmt::format("{:%H}", std::chrono::hours(24)));
+  EXPECT_EQ("14", fmt::format("{:%H}", std::chrono::hours(14)));
+  EXPECT_EQ("01", fmt::format("{:%H}", std::chrono::minutes(61)));
+  EXPECT_EQ("12", fmt::format("{:%I}", std::chrono::hours(0)));
+  EXPECT_EQ("12", fmt::format("{:%I}", std::chrono::hours(12)));
+  EXPECT_EQ("12", fmt::format("{:%I}", std::chrono::hours(24)));
+  EXPECT_EQ("04", fmt::format("{:%I}", std::chrono::hours(4)));
+  EXPECT_EQ("02", fmt::format("{:%I}", std::chrono::hours(14)));
+  EXPECT_EQ("03:25:45",
+            fmt::format("{:%H:%M:%S}", std::chrono::seconds(12345)));
+  EXPECT_EQ("03:25", fmt::format("{:%R}", std::chrono::seconds(12345)));
+  EXPECT_EQ("03:25:45", fmt::format("{:%T}", std::chrono::seconds(12345)));
+}
+
+TEST(ChronoTest, InvalidSpecs) {
+  auto sec = std::chrono::seconds(0);
+  EXPECT_THROW_MSG(fmt::format("{:%a}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%A}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%c}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%x}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%Ex}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%X}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%EX}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%D}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%F}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%Ec}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%w}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%u}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%b}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%B}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%z}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%Z}", sec), fmt::format_error, "no date");
+  EXPECT_THROW_MSG(fmt::format("{:%q}", sec), fmt::format_error,
+                   "invalid format");
+  EXPECT_THROW_MSG(fmt::format("{:%Eq}", sec), fmt::format_error,
+                   "invalid format");
+  EXPECT_THROW_MSG(fmt::format("{:%Oq}", sec), fmt::format_error,
+                   "invalid format");
+}
+
+TEST(ChronoTest, Locale) {
+  const char *loc_name = "ja_JP.utf8";
+  bool has_locale = false;
+  std::locale loc;
+  try {
+    loc = std::locale(loc_name);
+    has_locale = true;
+  } catch (const std::runtime_error &) {}
+  if (!has_locale) {
+    fmt::print("{} locale is missing.\n", loc_name);
+    return;
+  }
+  EXPECT_TIME("%OH", make_hour(14), std::chrono::hours(14));
+  EXPECT_TIME("%OI", make_hour(14), std::chrono::hours(14));
+  EXPECT_TIME("%OM", make_minute(42), std::chrono::minutes(42));
+  EXPECT_TIME("%OS", make_second(42), std::chrono::seconds(42));
+  auto time = make_tm();
+  time.tm_hour = 3;
+  time.tm_min = 25;
+  time.tm_sec = 45;
+  auto sec = std::chrono::seconds(12345);
+  EXPECT_TIME("%r", time, sec);
+  EXPECT_TIME("%p", time, sec);
+}
index fed78c3ba4d16602f5f6deb06eb790c52ed3ef7c..fe7583baf0d0580f632fc23c0a462347f68e72fc 100644 (file)
@@ -13,6 +13,7 @@
 #include <limits>
 #include <string>
 #include <type_traits>
+#include <memory>
 
 #include "test-assert.h"
 
@@ -64,6 +65,7 @@ struct formatter<test_struct, Char> {
 };
 FMT_END_NAMESPACE
 
+#if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 470
 TEST(BufferTest, Noncopyable) {
   EXPECT_FALSE(std::is_copy_constructible<basic_buffer<char> >::value);
 #if !FMT_MSC_VER
@@ -79,11 +81,12 @@ TEST(BufferTest, Nonmoveable) {
   EXPECT_FALSE(std::is_move_assignable<basic_buffer<char> >::value);
 #endif
 }
+#endif
 
 // A test buffer with a dummy grow method.
 template <typename T>
 struct test_buffer : basic_buffer<T> {
-  void grow(std::size_t capacity) { this->set(nullptr, capacity); }
+  void grow(std::size_t capacity) { this->set(FMT_NULL, capacity); }
 };
 
 template <typename T>
@@ -103,7 +106,7 @@ struct mock_buffer : basic_buffer<T> {
 TEST(BufferTest, Ctor) {
   {
     mock_buffer<int> buffer;
-    EXPECT_EQ(nullptr, &buffer[0]);
+    EXPECT_EQ(FMT_NULL, &buffer[0]);
     EXPECT_EQ(static_cast<size_t>(0), buffer.size());
     EXPECT_EQ(static_cast<size_t>(0), buffer.capacity());
   }
@@ -218,14 +221,16 @@ struct custom_context {
 
       const char *format(const T &, custom_context& ctx) {
         ctx.called = true;
-        return nullptr;
+        return FMT_NULL;
       }
     };
   };
 
   bool called;
 
-  fmt::parse_context parse_context() { return fmt::parse_context(""); }
+  fmt::format_parse_context parse_context() {
+    return fmt::format_parse_context("");
+  }
   void advance_to(const char *) {}
 };
 
@@ -364,8 +369,8 @@ TEST(ArgTest, WStringArg) {
 }
 
 TEST(ArgTest, PointerArg) {
-  void *p = nullptr;
-  const void *cp = nullptr;
+  void *p = FMT_NULL;
+  const void *cp = FMT_NULL;
   CHECK_ARG_(char, cp, p);
   CHECK_ARG_(wchar_t, cp, p);
   CHECK_ARG(cp, );
@@ -376,7 +381,7 @@ struct check_custom {
       fmt::basic_format_arg<fmt::format_context>::handle h) const {
     struct test_buffer : fmt::internal::basic_buffer<char> {
       char data[10];
-      test_buffer() : basic_buffer(data, 0, 10) {}
+      test_buffer() : fmt::internal::basic_buffer<char>(data, 0, 10) {}
       void grow(std::size_t) {}
     } buffer;
     fmt::internal::basic_buffer<char> &base = buffer;
@@ -451,6 +456,76 @@ TEST(CoreTest, IsEnumConvertibleToInt) {
   EXPECT_TRUE((fmt::convert_to_int<enum_with_underlying_type, char>::value));
 }
 
+namespace my_ns {
+template <typename Char>
+class my_string {
+ public:
+  my_string(const Char *s) : s_(s) {}
+  const Char * data() const FMT_NOEXCEPT { return s_.data(); }
+  std::size_t length() const FMT_NOEXCEPT { return s_.size(); }
+  operator const Char*() const { return s_.c_str(); }
+ private:
+  std::basic_string<Char> s_;
+};
+
+template <typename Char>
+inline fmt::basic_string_view<Char>
+    to_string_view(const my_string<Char> &s) FMT_NOEXCEPT {
+  return { s.data(), s.length() };
+}
+
+struct non_string {};
+}
+
+namespace FakeQt {
+class QString {
+ public:
+  QString(const wchar_t *s) : s_(std::make_shared<std::wstring>(s)) {}
+  const wchar_t *utf16() const FMT_NOEXCEPT { return s_->data(); }
+  int size() const FMT_NOEXCEPT { return static_cast<int>(s_->size()); }
+#ifdef FMT_STRING_VIEW
+  operator FMT_STRING_VIEW<wchar_t>() const FMT_NOEXCEPT { return *s_; }
+#endif
+ private:
+  std::shared_ptr<std::wstring> s_;
+};
+
+inline fmt::basic_string_view<wchar_t> to_string_view(
+    const QString &s) FMT_NOEXCEPT {
+  return {reinterpret_cast<const wchar_t *>(s.utf16()),
+          static_cast<std::size_t>(s.size())};
+}
+}
+
+template <typename T>
+class IsStringTest : public testing::Test {};
+
+typedef ::testing::Types<char, wchar_t, char16_t, char32_t> StringCharTypes;
+TYPED_TEST_CASE(IsStringTest, StringCharTypes);
+
+namespace {
+template <typename Char>
+struct derived_from_string_view : fmt::basic_string_view<Char> {};
+}
+
+TYPED_TEST(IsStringTest, IsString) {
+  EXPECT_TRUE((fmt::internal::is_string<TypeParam *>::value));
+  EXPECT_TRUE((fmt::internal::is_string<const TypeParam *>::value));
+  EXPECT_TRUE((fmt::internal::is_string<TypeParam[2]>::value));
+  EXPECT_TRUE((fmt::internal::is_string<const TypeParam[2]>::value));
+  EXPECT_TRUE((fmt::internal::is_string<std::basic_string<TypeParam>>::value));
+  EXPECT_TRUE(
+        (fmt::internal::is_string<fmt::basic_string_view<TypeParam>>::value));
+  EXPECT_TRUE(
+        (fmt::internal::is_string<derived_from_string_view<TypeParam>>::value));
+#ifdef FMT_STRING_VIEW
+  EXPECT_TRUE((fmt::internal::is_string<FMT_STRING_VIEW<TypeParam>>::value));
+#endif
+  EXPECT_TRUE((fmt::internal::is_string<my_ns::my_string<TypeParam>>::value));
+  EXPECT_FALSE((fmt::internal::is_string<my_ns::non_string>::value));
+  EXPECT_TRUE((fmt::internal::is_string<FakeQt::QString>::value));
+}
+
 TEST(CoreTest, Format) {
   // This should work without including fmt/format.h.
 #ifdef FMT_FORMAT_H_
@@ -458,3 +533,81 @@ TEST(CoreTest, Format) {
 #endif
   EXPECT_EQ(fmt::format("{}", 42), "42");
 }
+
+TEST(CoreTest, FormatTo) {
+  // This should work without including fmt/format.h.
+#ifdef FMT_FORMAT_H_
+# error fmt/format.h must not be included in the core test
+#endif
+  std::string s;
+  fmt::format_to(std::back_inserter(s), "{}", 42);
+  EXPECT_EQ(s, "42");
+}
+
+TEST(CoreTest, ToStringViewForeignStrings) {
+  using namespace my_ns;
+  using namespace FakeQt;
+  EXPECT_EQ(to_string_view(my_string<char>("42")), "42");
+  EXPECT_EQ(to_string_view(my_string<wchar_t>(L"42")), L"42");
+  EXPECT_EQ(to_string_view(QString(L"42")), L"42");
+  fmt::internal::type type =
+      fmt::internal::get_type<fmt::format_context, my_string<char>>::value;
+  EXPECT_EQ(type, fmt::internal::string_type);
+  type =
+      fmt::internal::get_type<fmt::wformat_context, my_string<wchar_t>>::value;
+  EXPECT_EQ(type, fmt::internal::string_type);
+  type = fmt::internal::get_type<fmt::wformat_context, QString>::value;
+  EXPECT_EQ(type, fmt::internal::string_type);
+  // Does not compile: only wide format contexts are compatible with QString!
+  // type = fmt::internal::get_type<fmt::format_context, QString>::value;
+}
+
+TEST(CoreTest, FormatForeignStrings) {
+  using namespace my_ns;
+  using namespace FakeQt;
+  EXPECT_EQ(fmt::format(my_string<char>("{}"), 42), "42");
+  EXPECT_EQ(fmt::format(my_string<wchar_t>(L"{}"), 42), L"42");
+  EXPECT_EQ(fmt::format(QString(L"{}"), 42), L"42");
+  EXPECT_EQ(fmt::format(QString(L"{}"), my_string<wchar_t>(L"42")), L"42");
+  EXPECT_EQ(fmt::format(my_string<wchar_t>(L"{}"), QString(L"42")), L"42");
+}
+
+struct implicitly_convertible_to_string_view {
+  operator fmt::string_view() const { return "foo"; }
+};
+
+TEST(FormatterTest, FormatImplicitlyConvertibleToStringView) {
+  EXPECT_EQ("foo", fmt::format("{}", implicitly_convertible_to_string_view()));
+}
+
+// std::is_constructible is broken in MSVC until version 2015.
+#if FMT_USE_EXPLICIT && (!FMT_MSC_VER || FMT_MSC_VER >= 1900)
+struct explicitly_convertible_to_string_view {
+  explicit operator fmt::string_view() const { return "foo"; }
+};
+
+TEST(FormatterTest, FormatExplicitlyConvertibleToStringView) {
+  EXPECT_EQ("foo", fmt::format("{}", explicitly_convertible_to_string_view()));
+}
+
+struct explicitly_convertible_to_wstring_view {
+  explicit operator fmt::wstring_view() const { return L"foo"; }
+};
+
+TEST(FormatterTest, FormatExplicitlyConvertibleToWStringView) {
+  EXPECT_EQ(L"foo",
+            fmt::format(L"{}", explicitly_convertible_to_wstring_view()));
+}
+
+struct explicitly_convertible_to_string_like {
+  template <
+      typename String,
+      typename = typename std::enable_if<
+        std::is_constructible<String, const char*, std::size_t>::value>::type>
+  FMT_EXPLICIT operator String() const { return String("foo", 3u); }
+};
+
+TEST(FormatterTest, FormatExplicitlyConvertibleToStringLike) {
+  EXPECT_EQ("foo", fmt::format("{}", explicitly_convertible_to_string_like()));
+}
+#endif
index 88336cbe0c9678b7c5b87dd5d55ba4df0bb80149..d529771c888989e88fe72d3a3421166892f5f9e6 100644 (file)
@@ -26,8 +26,8 @@ class custom_arg_formatter :
   using base::operator();
 
   iterator operator()(double value) {
-    // Comparing a float to 0.0 is safe
-    if (round(value * pow(10, spec()->precision())) == 0.0)
+    // Comparing a float to 0.0 is safe.
+    if (round(value * pow(10, spec()->precision)) == 0.0)
       value = 0;
     return base::operator()(value);
   }
index 070c4b277a182b484d9fbb6e6871c80c51ecf5eb..f4d75aaef28762758f4704b20c6969feaee273f9 100644 (file)
 #undef min
 #undef max
 
+#if FMT_HAS_CPP_ATTRIBUTE(noreturn)
+# define FMT_NORETURN [[noreturn]]
+#else
+# define FMT_NORETURN
+#endif
+
 using fmt::internal::fp;
 
 template <bool is_iec559>
@@ -96,6 +102,11 @@ TEST(FPTest, GetCachedPower) {
   }
 }
 
+TEST(FPTest, Grisu2FormatCompilesWithNonIEEEDouble) {
+  fmt::memory_buffer buf;
+  grisu2_format(4.2f, buf, fmt::core_format_specs());
+}
+
 template <typename T>
 struct ValueExtractor: fmt::internal::function<T> {
   T operator()(T value) {
@@ -118,16 +129,17 @@ TEST(FormatTest, ArgConverter) {
 
 TEST(FormatTest, FormatNegativeNaN) {
   double nan = std::numeric_limits<double>::quiet_NaN();
-  if (fmt::internal::fputil::isnegative(-nan))
+  if (std::signbit(-nan))
     EXPECT_EQ("-nan", fmt::format("{}", -nan));
   else
     fmt::print("Warning: compiler doesn't handle negative NaN correctly");
 }
 
 TEST(FormatTest, StrError) {
-  char *message = nullptr;
+  char *message = FMT_NULL;
   char buffer[BUFFER_SIZE];
-  EXPECT_ASSERT(fmt::safe_strerror(EDOM, message = nullptr, 0), "invalid buffer");
+  EXPECT_ASSERT(fmt::safe_strerror(EDOM, message = FMT_NULL, 0),
+                "invalid buffer");
   EXPECT_ASSERT(fmt::safe_strerror(EDOM, message = buffer, 0),
                 "invalid buffer");
   buffer[0] = 'x';
@@ -140,7 +152,7 @@ TEST(FormatTest, StrError) {
 #endif
 
   int result = fmt::safe_strerror(error_code, message = buffer, BUFFER_SIZE);
-  EXPECT_EQ(0, result);
+  EXPECT_EQ(result, 0);
   std::size_t message_size = std::strlen(message);
   EXPECT_GE(BUFFER_SIZE - 1u, message_size);
   EXPECT_EQ(get_system_error(error_code), message);
@@ -195,8 +207,30 @@ TEST(FormatTest, CountCodePoints) {
 }
 
 TEST(ColorsTest, Colors) {
-  EXPECT_WRITE(stdout, fmt::print(fmt::rgb(255,20,30), "rgb(255,20,30)"),
+  EXPECT_WRITE(stdout, fmt::print(fg(fmt::rgb(255, 20, 30)), "rgb(255,20,30)"),
                "\x1b[38;2;255;020;030mrgb(255,20,30)\x1b[0m");
-  EXPECT_WRITE(stdout, fmt::print(fmt::color::blue, "blue"),
+  EXPECT_WRITE(stdout, fmt::print(fg(fmt::color::blue), "blue"),
                "\x1b[38;2;000;000;255mblue\x1b[0m");
+  EXPECT_WRITE(
+      stdout,
+      fmt::print(fg(fmt::color::blue) | bg(fmt::color::red), "two color"),
+      "\x1b[38;2;000;000;255m\x1b[48;2;255;000;000mtwo color\x1b[0m");
+  EXPECT_WRITE(stdout, fmt::print(fmt::emphasis::bold, "bold"),
+               "\x1b[1mbold\x1b[0m");
+  EXPECT_WRITE(stdout, fmt::print(fmt::emphasis::italic, "italic"),
+               "\x1b[3mitalic\x1b[0m");
+  EXPECT_WRITE(stdout, fmt::print(fmt::emphasis::underline, "underline"),
+               "\x1b[4munderline\x1b[0m");
+  EXPECT_WRITE(stdout,
+               fmt::print(fmt::emphasis::strikethrough, "strikethrough"),
+               "\x1b[9mstrikethrough\x1b[0m");
+  EXPECT_WRITE(
+      stdout,
+      fmt::print(fg(fmt::color::blue) | fmt::emphasis::bold, "blue/bold"),
+      "\x1b[1m\x1b[38;2;000;000;255mblue/bold\x1b[0m");
+  EXPECT_WRITE(stderr, fmt::print(stderr, fmt::emphasis::bold, "bold error"),
+               "\x1b[1mbold error\x1b[0m");
+  EXPECT_WRITE(stderr, fmt::print(stderr, fg(fmt::color::blue), "blue log"),
+                 "\x1b[38;2;000;000;255mblue log\x1b[0m");
+  EXPECT_WRITE(stdout, fmt::print(fmt::text_style(), "hi"), "hi");
 }
index 31a76c3a30659d0476367725ef658140aba93e56..aa69a1a2c5b80863ea2d17ee0d0832eff8ba5d35 100644 (file)
@@ -12,6 +12,7 @@
 #include <cstring>
 #include <list>
 #include <memory>
+#include <string>
 #include <stdint.h>
 
 // Check if fmt/format.h compiles with windows.h included before it.
@@ -44,6 +45,38 @@ using testing::StrictMock;
 
 namespace {
 
+#if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 408
+template <typename Char, typename T>
+bool check_enabled_formatter() {
+  static_assert(
+        std::is_default_constructible<fmt::formatter<T, Char>>::value, "");
+  return true;
+}
+
+template <typename Char, typename... T>
+void check_enabled_formatters() {
+  auto dummy = {check_enabled_formatter<Char, T>()...};
+  (void)dummy;
+}
+
+TEST(FormatterTest, TestFormattersEnabled) {
+  check_enabled_formatters<char,
+      bool, char, signed char, unsigned char, short, unsigned short,
+      int, unsigned, long, unsigned long, long long, unsigned long long,
+      float, double, long double, void*, const void*,
+      char*, const char*, std::string>();
+  check_enabled_formatters<wchar_t,
+      bool, wchar_t, signed char, unsigned char, short, unsigned short,
+      int, unsigned, long, unsigned long, long long, unsigned long long,
+      float, double, long double, void*, const void*,
+      wchar_t*, const wchar_t*, std::wstring>();
+#if FMT_USE_NULLPTR
+  check_enabled_formatters<char, std::nullptr_t>();
+  check_enabled_formatters<wchar_t, std::nullptr_t>();
+#endif
+}
+#endif
+
 // Format value using the standard library.
 template <typename Char, typename T>
 void std_format(const T &value, std::basic_string<Char> &result) {
@@ -185,6 +218,35 @@ TEST(IteratorTest, TruncatingIterator) {
   EXPECT_EQ(it.base(), p + 1);
 }
 
+TEST(IteratorTest, TruncatingBackInserter) {
+  std::string buffer;
+  auto bi = std::back_inserter(buffer);
+  fmt::internal::truncating_iterator<decltype(bi)> it(bi, 2);
+  *it++ = '4';
+  *it++ = '2';
+  *it++ = '1';
+  EXPECT_EQ(buffer.size(), 2);
+  EXPECT_EQ(buffer, "42");
+}
+
+TEST(IteratorTest, IsOutputIterator) {
+  EXPECT_TRUE(fmt::internal::is_output_iterator<char*>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<const char*>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<std::string>::value);
+  EXPECT_TRUE(fmt::internal::is_output_iterator<
+              std::back_insert_iterator<std::string>>::value);
+  EXPECT_TRUE(fmt::internal::is_output_iterator<
+              std::string::iterator>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<
+               std::string::const_iterator>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<std::list<char>>::value);
+  EXPECT_TRUE(fmt::internal::is_output_iterator<
+              std::list<char>::iterator>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<
+               std::list<char>::const_iterator>::value);
+  EXPECT_FALSE(fmt::internal::is_output_iterator<uint32_pair>::value);
+}
+
 TEST(MemoryBufferTest, Ctor) {
   basic_memory_buffer<char, 123> buffer;
   EXPECT_EQ(static_cast<size_t>(0), buffer.size());
@@ -212,7 +274,7 @@ TEST(AllocatorTest, allocator_ref) {
   test_allocator_ref ref2(ref);
   check_forwarding(alloc, ref2);
   test_allocator_ref ref3;
-  EXPECT_EQ(nullptr, ref3.get());
+  EXPECT_EQ(FMT_NULL, ref3.get());
   ref3 = ref;
   check_forwarding(alloc, ref3);
 }
@@ -228,7 +290,7 @@ static void check_move_buffer(const char *str,
   EXPECT_EQ(str, std::string(&buffer2[0], buffer2.size()));
   EXPECT_EQ(5u, buffer2.capacity());
   // Move should transfer allocator.
-  EXPECT_EQ(nullptr, buffer.get_allocator().get());
+  EXPECT_EQ(FMT_NULL, buffer.get_allocator().get());
   EXPECT_EQ(alloc, buffer2.get_allocator().get());
 }
 
@@ -313,7 +375,7 @@ TEST(MemoryBufferTest, Grow) {
 TEST(MemoryBufferTest, Allocator) {
   typedef allocator_ref< mock_allocator<char> > TestAllocator;
   basic_memory_buffer<char, 10, TestAllocator> buffer;
-  EXPECT_EQ(nullptr, buffer.get_allocator().get());
+  EXPECT_EQ(FMT_NULL, buffer.get_allocator().get());
   StrictMock< mock_allocator<char> > alloc;
   char mem;
   {
@@ -351,29 +413,6 @@ TEST(MemoryBufferTest, ExceptionInDeallocate) {
   EXPECT_CALL(alloc, deallocate(&mem2[0], 2 * size));
 }
 
-TEST(FixedBufferTest, Ctor) {
-  char array[10] = "garbage";
-  fmt::basic_fixed_buffer<char> buffer(array, sizeof(array));
-  EXPECT_EQ(static_cast<size_t>(0), buffer.size());
-  EXPECT_EQ(10u, buffer.capacity());
-  EXPECT_EQ(array, buffer.data());
-}
-
-TEST(FixedBufferTest, CompileTimeSizeCtor) {
-  char array[10] = "garbage";
-  fmt::basic_fixed_buffer<char> buffer(array);
-  EXPECT_EQ(static_cast<size_t>(0), buffer.size());
-  EXPECT_EQ(10u, buffer.capacity());
-  EXPECT_EQ(array, buffer.data());
-}
-
-TEST(FixedBufferTest, BufferOverflow) {
-  char array[10];
-  fmt::basic_fixed_buffer<char> buffer(array);
-  buffer.resize(10);
-  EXPECT_THROW_MSG(buffer.resize(11), std::runtime_error, "buffer overflow");
-}
-
 #ifdef _WIN32
 TEST(UtilTest, UTF16ToUTF8) {
   std::string s = "ёжик";
@@ -476,7 +515,7 @@ TEST(UtilTest, FormatSystemError) {
     fmt::print("warning: std::allocator allocates {} chars", max_size);
     return;
   }
-  fmt::format_system_error(message, EDOM, fmt::string_view(nullptr, max_size));
+  fmt::format_system_error(message, EDOM, fmt::string_view(FMT_NULL, max_size));
   EXPECT_EQ(fmt::format("error {}", EDOM), to_string(message));
 }
 
@@ -564,17 +603,6 @@ TEST(StringViewTest, Ctor) {
   EXPECT_EQ(4u, string_view(std::string("defg")).size());
 }
 
-// GCC 4.6 doesn't have std::is_copy_*.
-#if FMT_GCC_VERSION && FMT_GCC_VERSION >= 407
-TEST(WriterTest, NotCopyConstructible) {
-  EXPECT_FALSE(std::is_copy_constructible<fmt::writer>::value);
-}
-
-TEST(WriterTest, NotCopyAssignable) {
-  EXPECT_FALSE(std::is_copy_assignable<fmt::writer>::value);
-}
-#endif
-
 TEST(WriterTest, Data) {
   memory_buffer buf;
   fmt::writer w(buf);
@@ -682,9 +710,15 @@ TEST(FormatToTest, Format) {
   EXPECT_EQ("part1part2", s);
 }
 
+TEST(FormatToTest, WideString) {
+  std::vector<wchar_t> buf;
+  fmt::format_to(std::back_inserter(buf), L"{}{}", 42, L'\0');
+  EXPECT_STREQ(buf.data(), L"42");
+}
+
 TEST(FormatToTest, FormatToNonbackInsertIteratorWithSignAndNumericAlignment) {
   char buffer[16] = {};
-  fmt::format_to(buffer, "{: =+}", 42.0);
+  fmt::format_to(fmt::internal::make_checked(buffer, 16), "{: =+}", 42.0);
   EXPECT_STREQ("+42", buffer);
 }
 
@@ -737,6 +771,7 @@ TEST(FormatterTest, ArgErrors) {
   EXPECT_THROW_MSG(format("{?}"), format_error, "invalid format string");
   EXPECT_THROW_MSG(format("{0"), format_error, "invalid format string");
   EXPECT_THROW_MSG(format("{0}"), format_error, "argument index out of range");
+  EXPECT_THROW_MSG(format("{00}", 42), format_error, "invalid format string");
 
   char format_str[BUFFER_SIZE];
   safe_sprintf(format_str, "{%u", INT_MAX);
@@ -754,7 +789,7 @@ TEST(FormatterTest, ArgErrors) {
 template <int N>
 struct TestFormat {
   template <typename... Args>
-  static std::string format(fmt::string_view format_str, const Args & ... args) {
+  static std::string format(fmt::string_view format_str, const Args &... args) {
     return TestFormat<N - 1>::format(format_str, N - 1, args...);
   }
 };
@@ -762,7 +797,7 @@ struct TestFormat {
 template <>
 struct TestFormat<0> {
   template <typename... Args>
-  static std::string format(fmt::string_view format_str, const Args & ... args) {
+  static std::string format(fmt::string_view format_str, const Args &... args) {
     return fmt::format(format_str, args...);
   }
 };
@@ -1013,7 +1048,7 @@ TEST(FormatterTest, HashFlag) {
   EXPECT_EQ("0x42", format("{0:#x}", 0x42ull));
   EXPECT_EQ("042", format("{0:#o}", 042ull));
 
-  if (fmt::internal::use_grisu())
+  if (FMT_USE_GRISU)
     EXPECT_EQ("-42.0", format("{0:#}", -42.0));
   else
     EXPECT_EQ("-42.0000", format("{0:#}", -42.0));
@@ -1395,6 +1430,8 @@ TEST(FormatterTest, FormatIntLocale) {
   EXPECT_EQ("123", format("{:n}", 123));
   EXPECT_EQ("1,234", format("{:n}", 1234));
   EXPECT_EQ("1,234,567", format("{:n}", 1234567));
+  EXPECT_EQ("4,294,967,295",
+            format("{:n}", std::numeric_limits<uint32_t>::max()));
 }
 
 struct ConvertibleToLongLong {
@@ -1411,13 +1448,14 @@ TEST(FormatterTest, FormatFloat) {
 
 TEST(FormatterTest, FormatDouble) {
   check_unknown_types(1.2, "eEfFgGaA", "double");
-  EXPECT_EQ("0", format("{0:}", 0.0));
-  EXPECT_EQ("0.000000", format("{0:f}", 0.0));
-  EXPECT_EQ("392.65", format("{0:}", 392.65));
-  EXPECT_EQ("392.65", format("{0:g}", 392.65));
-  EXPECT_EQ("392.65", format("{0:G}", 392.65));
-  EXPECT_EQ("392.650000", format("{0:f}", 392.65));
-  EXPECT_EQ("392.650000", format("{0:F}", 392.65));
+  EXPECT_EQ("0", format("{:}", 0.0));
+  EXPECT_EQ("0.000000", format("{:f}", 0.0));
+  EXPECT_EQ("0", format("{:g}", 0.0));
+  EXPECT_EQ("392.65", format("{:}", 392.65));
+  EXPECT_EQ("392.65", format("{:g}", 392.65));
+  EXPECT_EQ("392.65", format("{:G}", 392.65));
+  EXPECT_EQ("392.650000", format("{:f}", 392.65));
+  EXPECT_EQ("392.650000", format("{:F}", 392.65));
   char buffer[BUFFER_SIZE];
   safe_sprintf(buffer, "%e", 392.65);
   EXPECT_EQ(buffer, format("{0:e}", 392.65));
@@ -1430,6 +1468,12 @@ TEST(FormatterTest, FormatDouble) {
   EXPECT_EQ(buffer, format("{:A}", -42.0));
 }
 
+TEST(FormatterTest, FormatDoubleBigPrecision) {
+  // sprintf with big precision is broken in MSVC2013, so only test on Grisu.
+  if (FMT_USE_GRISU)
+    EXPECT_EQ(format("0.{:0<1000}", ""), format("{:.1000f}", 0.0));
+}
+
 TEST(FormatterTest, FormatNaN) {
   double nan = std::numeric_limits<double>::quiet_NaN();
   EXPECT_EQ("nan", format("{}", nan));
@@ -1498,7 +1542,7 @@ TEST(FormatterTest, FormatCString) {
   EXPECT_EQ("test", format("{0:s}", "test"));
   char nonconst[] = "nonconst";
   EXPECT_EQ("nonconst", format("{0}", nonconst));
-  EXPECT_THROW_MSG(format("{0}", static_cast<const char*>(nullptr)),
+  EXPECT_THROW_MSG(format("{0}", static_cast<const char*>(FMT_NULL)),
       format_error, "string pointer is null");
 }
 
@@ -1520,7 +1564,7 @@ TEST(FormatterTest, FormatUCharString) {
 
 TEST(FormatterTest, FormatPointer) {
   check_unknown_types(reinterpret_cast<void*>(0x1234), "p", "pointer");
-  EXPECT_EQ("0x0", format("{0}", static_cast<void*>(nullptr)));
+  EXPECT_EQ("0x0", format("{0}", static_cast<void*>(FMT_NULL)));
   EXPECT_EQ("0x1234", format("{0}", reinterpret_cast<void*>(0x1234)));
   EXPECT_EQ("0x1234", format("{0:p}", reinterpret_cast<void*>(0x1234)));
   EXPECT_EQ("0x" + std::string(sizeof(void*) * CHAR_BIT / 4, 'f'),
@@ -1546,45 +1590,6 @@ TEST(FormatterTest, FormatStdStringView) {
 }
 #endif
 
-struct implicitly_convertible_to_string_view {
-  operator fmt::string_view() const { return "foo"; }
-};
-
-TEST(FormatterTest, FormatImplicitlyConvertibleToStringView) {
-  EXPECT_EQ("foo", format("{}", implicitly_convertible_to_string_view()));
-}
-
-// std::is_constructible is broken in MSVC until version 2015.
-#if !FMT_MSC_VER || FMT_MSC_VER >= 1900
-struct explicitly_convertible_to_string_view {
-  explicit operator fmt::string_view() const { return "foo"; }
-};
-
-TEST(FormatterTest, FormatExplicitlyConvertibleToStringView) {
-  EXPECT_EQ("foo", format("{}", explicitly_convertible_to_string_view()));
-}
-
-struct explicitly_convertible_to_wstring_view {
-  explicit operator fmt::wstring_view() const { return L"foo"; }
-};
-
-TEST(FormatterTest, FormatExplicitlyConvertibleToWStringView) {
-  EXPECT_EQ(L"foo", format(L"{}", explicitly_convertible_to_wstring_view()));
-}
-
-struct explicitly_convertible_to_string_like {
-  template <
-      typename String,
-      typename = typename std::enable_if<
-        std::is_constructible<String, const char*, std::size_t>::value>::type>
-  explicit operator String() const { return String("foo", 3u); }
-};
-
-TEST(FormatterTest, FormatExplicitlyConvertibleToStringLike) {
-  EXPECT_EQ("foo", format("{}", explicitly_convertible_to_string_like()));
-}
-#endif
-
 FMT_BEGIN_NAMESPACE
 template <>
 struct formatter<Date> {
@@ -1628,7 +1633,8 @@ TEST(FormatterTest, CustomFormat) {
 
 TEST(FormatterTest, CustomFormatTo) {
   char buf[10] = {};
-  auto end = fmt::format_to(buf, "{}", Answer());
+  auto end = &*fmt::format_to(
+        fmt::internal::make_checked(buf, 10), "{}", Answer());
   EXPECT_EQ(end, buf + 2);
   EXPECT_STREQ(buf, "42");
 }
@@ -1661,7 +1667,7 @@ TEST(FormatterTest, FormatExamples) {
   FILE *ftest = safe_fopen(filename, "r");
   if (ftest) fclose(ftest);
   int error_code = errno;
-  EXPECT_TRUE(ftest == nullptr);
+  EXPECT_TRUE(ftest == FMT_NULL);
   EXPECT_SYSTEM_ERROR({
     FILE *f = safe_fopen(filename, "r");
     if (!f)
@@ -1778,7 +1784,7 @@ TEST(FormatTest, Variadic) {
 }
 
 TEST(FormatTest, Dynamic) {
-  using ctx = fmt::format_context;
+  typedef fmt::format_context ctx;
   std::vector<fmt::basic_format_arg<ctx>> args;
   args.emplace_back(fmt::internal::make_arg<ctx>(42));
   args.emplace_back(fmt::internal::make_arg<ctx>("abc1"));
@@ -1830,7 +1836,7 @@ TEST(StrTest, Convert) {
   EXPECT_EQ("2012-12-9", s);
 }
 
-static std::string vformat_message(int id, const char *format, fmt::format_args args) {
+std::string vformat_message(int id, const char *format, fmt::format_args args) {
   fmt::memory_buffer buffer;
   format_to(buffer, "[{}] ", id);
   vformat_to(buffer, format, args);
@@ -1895,6 +1901,7 @@ TEST(FormatTest, UdlTemplate) {
   EXPECT_EQ("foo", "foo"_format());
   EXPECT_EQ("        42", "{0:10}"_format(42));
   EXPECT_EQ("42", fmt::format(FMT_STRING("{}"), 42));
+  EXPECT_EQ(L"42", fmt::format(FMT_STRING(L"{}"), 42));
 }
 #endif // FMT_USE_USER_DEFINED_LITERALS
 
@@ -1930,7 +1937,7 @@ class mock_arg_formatter:
   typedef buffer_range range;
 
   mock_arg_formatter(fmt::format_context &ctx, fmt::format_specs *s = FMT_NULL)
-    : base(fmt::internal::get_container(ctx.out()), s) {
+    : base(fmt::internal::get_container(ctx.out()), s, ctx.locale()) {
     EXPECT_CALL(*this, call(42));
   }
 
@@ -2199,18 +2206,18 @@ FMT_CONSTEXPR fmt::format_specs parse_specs(const char *s) {
 TEST(FormatTest, ConstexprSpecsHandler) {
   static_assert(parse_specs("<").align() == fmt::ALIGN_LEFT, "");
   static_assert(parse_specs("*^").fill() == '*', "");
-  static_assert(parse_specs("+").flag(fmt::PLUS_FLAG), "");
-  static_assert(parse_specs("-").flag(fmt::MINUS_FLAG), "");
-  static_assert(parse_specs(" ").flag(fmt::SIGN_FLAG), "");
-  static_assert(parse_specs("#").flag(fmt::HASH_FLAG), "");
+  static_assert(parse_specs("+").has(fmt::PLUS_FLAG), "");
+  static_assert(parse_specs("-").has(fmt::MINUS_FLAG), "");
+  static_assert(parse_specs(" ").has(fmt::SIGN_FLAG), "");
+  static_assert(parse_specs("#").has(fmt::HASH_FLAG), "");
   static_assert(parse_specs("0").align() == fmt::ALIGN_NUMERIC, "");
   static_assert(parse_specs("42").width() == 42, "");
   static_assert(parse_specs("{}").width() == 11, "");
   static_assert(parse_specs("{0}").width() == 22, "");
-  static_assert(parse_specs(".42").precision() == 42, "");
-  static_assert(parse_specs(".{}").precision() == 11, "");
-  static_assert(parse_specs(".{0}").precision() == 22, "");
-  static_assert(parse_specs("d").type() == 'd', "");
+  static_assert(parse_specs(".42").precision == 42, "");
+  static_assert(parse_specs(".{}").precision == 11, "");
+  static_assert(parse_specs(".{0}").precision == 22, "");
+  static_assert(parse_specs("d").type == 'd', "");
 }
 
 FMT_CONSTEXPR fmt::internal::dynamic_format_specs<char>
@@ -2225,18 +2232,18 @@ FMT_CONSTEXPR fmt::internal::dynamic_format_specs<char>
 TEST(FormatTest, ConstexprDynamicSpecsHandler) {
   static_assert(parse_dynamic_specs("<").align() == fmt::ALIGN_LEFT, "");
   static_assert(parse_dynamic_specs("*^").fill() == '*', "");
-  static_assert(parse_dynamic_specs("+").flag(fmt::PLUS_FLAG), "");
-  static_assert(parse_dynamic_specs("-").flag(fmt::MINUS_FLAG), "");
-  static_assert(parse_dynamic_specs(" ").flag(fmt::SIGN_FLAG), "");
-  static_assert(parse_dynamic_specs("#").flag(fmt::HASH_FLAG), "");
+  static_assert(parse_dynamic_specs("+").has(fmt::PLUS_FLAG), "");
+  static_assert(parse_dynamic_specs("-").has(fmt::MINUS_FLAG), "");
+  static_assert(parse_dynamic_specs(" ").has(fmt::SIGN_FLAG), "");
+  static_assert(parse_dynamic_specs("#").has(fmt::HASH_FLAG), "");
   static_assert(parse_dynamic_specs("0").align() == fmt::ALIGN_NUMERIC, "");
   static_assert(parse_dynamic_specs("42").width() == 42, "");
   static_assert(parse_dynamic_specs("{}").width_ref.index == 33, "");
   static_assert(parse_dynamic_specs("{42}").width_ref.index == 42, "");
-  static_assert(parse_dynamic_specs(".42").precision() == 42, "");
+  static_assert(parse_dynamic_specs(".42").precision == 42, "");
   static_assert(parse_dynamic_specs(".{}").precision_ref.index == 33, "");
   static_assert(parse_dynamic_specs(".{42}").precision_ref.index == 42, "");
-  static_assert(parse_dynamic_specs("d").type() == 'd', "");
+  static_assert(parse_dynamic_specs("d").type == 'd', "");
 }
 
 FMT_CONSTEXPR test_format_specs_handler check_specs(const char *s) {
@@ -2282,9 +2289,10 @@ struct test_format_string_handler {
   bool error = false;
 };
 
-FMT_CONSTEXPR bool parse_string(fmt::string_view s) {
+template <size_t N>
+FMT_CONSTEXPR bool parse_string(const char (&s)[N]) {
   test_format_string_handler h;
-  fmt::internal::parse_format_string<true>(s, h);
+  fmt::internal::parse_format_string<true>(fmt::string_view(s, N - 1), h);
   return !h.error;
 }
 
@@ -2330,8 +2338,8 @@ FMT_CONSTEXPR bool equal(const char *s1, const char *s2) {
 
 template <typename... Args>
 FMT_CONSTEXPR bool test_error(const char *fmt, const char *expected_error) {
-  const char *actual_error = nullptr;
-  fmt::internal::check_format_string<char, test_error_handler, Args...>(
+  const char *actual_error = FMT_NULL;
+  fmt::internal::do_check_format_string<char, test_error_handler, Args...>(
         string_view(fmt, len(fmt)), test_error_handler(actual_error));
   return equal(actual_error, expected_error);
 }
@@ -2342,7 +2350,7 @@ FMT_CONSTEXPR bool test_error(const char *fmt, const char *expected_error) {
   static_assert(test_error<__VA_ARGS__>(fmt, error), "")
 
 TEST(FormatTest, FormatStringErrors) {
-  EXPECT_ERROR_NOARGS("foo", nullptr);
+  EXPECT_ERROR_NOARGS("foo", FMT_NULL);
   EXPECT_ERROR_NOARGS("}", "unmatched '}' in format string");
   EXPECT_ERROR("{0:s", "unknown format specifier", Date);
 #ifndef _MSC_VER
@@ -2395,23 +2403,46 @@ TEST(FormatTest, FormatStringErrors) {
                "cannot switch from automatic to manual argument indexing",
                int, int);
 }
+
+TEST(FormatTest, VFormatTo) {
+  typedef fmt::format_context context;
+  fmt::basic_format_arg<context> arg = fmt::internal::make_arg<context>(42);
+  fmt::basic_format_args<context> args(&arg, 1);
+  std::string s;
+  fmt::vformat_to(std::back_inserter(s), "{}", args);
+  EXPECT_EQ("42", s);
+  s.clear();
+  fmt::vformat_to(std::back_inserter(s), FMT_STRING("{}"), args);
+  EXPECT_EQ("42", s);
+
+  typedef fmt::wformat_context wcontext;
+  fmt::basic_format_arg<wcontext> warg = fmt::internal::make_arg<wcontext>(42);
+  fmt::basic_format_args<wcontext> wargs(&warg, 1);
+  std::wstring w;
+  fmt::vformat_to(std::back_inserter(w), L"{}", wargs);
+  EXPECT_EQ(L"42", w);
+  w.clear();
+  fmt::vformat_to(std::back_inserter(w), FMT_STRING(L"{}"), wargs);
+  EXPECT_EQ(L"42", w);
+}
+
 #endif  // FMT_USE_CONSTEXPR
 
 TEST(FormatTest, ConstructU8StringViewFromCString) {
   fmt::u8string_view s("ab");
   EXPECT_EQ(s.size(), 2u);
   const fmt::char8_t *data = s.data();
-  EXPECT_EQ(data[0].value, 'a');
-  EXPECT_EQ(data[1].value, 'b');
+  EXPECT_EQ(data[0], 'a');
+  EXPECT_EQ(data[1], 'b');
 }
 
 TEST(FormatTest, ConstructU8StringViewFromDataAndSize) {
   fmt::u8string_view s("foobar", 3);
   EXPECT_EQ(s.size(), 3u);
   const fmt::char8_t *data = s.data();
-  EXPECT_EQ(data[0].value, 'f');
-  EXPECT_EQ(data[1].value, 'o');
-  EXPECT_EQ(data[2].value, 'o');
+  EXPECT_EQ(data[0], 'f');
+  EXPECT_EQ(data[1], 'o');
+  EXPECT_EQ(data[2], 'o');
 }
 
 #if FMT_USE_USER_DEFINED_LITERALS
@@ -2420,7 +2451,12 @@ TEST(FormatTest, U8StringViewLiteral) {
   fmt::u8string_view s = "ab"_u;
   EXPECT_EQ(s.size(), 2u);
   const fmt::char8_t *data = s.data();
-  EXPECT_EQ(data[0].value, 'a');
-  EXPECT_EQ(data[1].value, 'b');
+  EXPECT_EQ(data[0], 'a');
+  EXPECT_EQ(data[1], 'b');
+  EXPECT_EQ(format("{:*^5}"_u, "🤡"_u), "**🤡**"_u);
 }
 #endif
+
+TEST(FormatTest, FormatU8String) {
+  EXPECT_EQ(format(fmt::u8string_view("{}"), 42), fmt::u8string_view("42"));
+}
index 13596b18923be1125c3d3a81f66e02e772a258d8..43088db4193789cc5d1555b418755a161be86f8b 100644 (file)
@@ -311,8 +311,8 @@ using fmt::error_code;
 using fmt::file;
 
 TEST(ErrorCodeTest, Ctor) {
-  EXPECT_EQ(0, error_code().get());
-  EXPECT_EQ(42, error_code(42).get());
+  EXPECT_EQ(error_code().get(), 0);
+  EXPECT_EQ(error_code(42).get(), 42);
 }
 
 TEST(OutputRedirectTest, ScopedRedirect) {
@@ -340,10 +340,10 @@ TEST(OutputRedirectTest, FlushErrorInCtor) {
   // Put a character in a file buffer.
   EXPECT_EQ('x', fputc('x', f.get()));
   FMT_POSIX(close(write_fd));
-  scoped_ptr<OutputRedirect> redir{nullptr};
+  scoped_ptr<OutputRedirect> redir{FMT_NULL};
   EXPECT_SYSTEM_ERROR_NOASSERT(redir.reset(new OutputRedirect(f.get())),
       EBADF, "cannot flush stream");
-  redir.reset(nullptr);
+  redir.reset(FMT_NULL);
   write_copy.dup2(write_fd);  // "undo" close or dtor will fail
 }
 
@@ -352,7 +352,7 @@ TEST(OutputRedirectTest, DupErrorInCtor) {
   int fd = (f.fileno)();
   file copy = file::dup(fd);
   FMT_POSIX(close(fd));
-  scoped_ptr<OutputRedirect> redir{nullptr};
+  scoped_ptr<OutputRedirect> redir{FMT_NULL};
   EXPECT_SYSTEM_ERROR_NOASSERT(redir.reset(new OutputRedirect(f.get())),
       EBADF, fmt::format("cannot duplicate file descriptor {}", fd));
   copy.dup2(fd);  // "undo" close or dtor will fail
@@ -403,7 +403,7 @@ TEST(OutputRedirectTest, ErrorInDtor) {
       // output in EXPECT_STDERR and the second close will break output
       // redirection.
       FMT_POSIX(close(write_fd));
-      SUPPRESS_ASSERT(redir.reset(nullptr));
+      SUPPRESS_ASSERT(redir.reset(FMT_NULL));
   }, format_system_error(EBADF, "cannot flush stream"));
   write_copy.dup2(write_fd); // "undo" close or dtor of buffered_file will fail
 }
index c3728f535ae0f602721f81c5da57e44b657a2457..61e262e452ec940d8ccf74e75ab01c7cc0773c86 100644 (file)
@@ -155,7 +155,7 @@ std::string read(fmt::file &f, std::size_t count);
 template <typename Mock>
 struct ScopedMock : testing::StrictMock<Mock> {
   ScopedMock() { Mock::instance = this; }
-  ~ScopedMock() { Mock::instance = nullptr; }
+  ~ScopedMock() { Mock::instance = FMT_NULL; }
 };
 
 #endif  // FMT_GTEST_EXTRA_H_
diff --git a/ceph/src/seastar/fmt/test/locale-test.cc b/ceph/src/seastar/fmt/test/locale-test.cc
new file mode 100644 (file)
index 0000000..83b0f31
--- /dev/null
@@ -0,0 +1,34 @@
+// Formatting library for C++ - locale tests
+//
+// Copyright (c) 2012 - present, Victor Zverovich
+// All rights reserved.
+//
+// For the license information refer to format.h.
+
+#include "fmt/locale.h"
+#include "gmock.h"
+
+template <typename Char>
+struct numpunct : std::numpunct<Char> {
+ protected:
+  Char do_thousands_sep() const FMT_OVERRIDE { return '~'; }
+};
+
+TEST(LocaleTest, Format) {
+  std::locale loc(std::locale(), new numpunct<char>());
+  EXPECT_EQ("1,234,567", fmt::format(std::locale(), "{:n}", 1234567));
+  EXPECT_EQ("1~234~567", fmt::format(loc, "{:n}", 1234567));
+  fmt::format_arg_store<fmt::format_context, int> as{1234567};
+  EXPECT_EQ("1~234~567", fmt::vformat(loc, "{:n}", fmt::format_args(as)));
+  std::string s;
+  fmt::format_to(std::back_inserter(s), loc, "{:n}", 1234567);
+  EXPECT_EQ("1~234~567", s);
+}
+
+TEST(LocaleTest, WFormat) {
+  std::locale loc(std::locale(), new numpunct<wchar_t>());
+  EXPECT_EQ(L"1,234,567", fmt::format(std::locale(), L"{:n}", 1234567));
+  EXPECT_EQ(L"1~234~567", fmt::format(loc, L"{:n}", 1234567));
+  fmt::format_arg_store<fmt::wformat_context, int> as{1234567};
+  EXPECT_EQ(L"1~234~567", fmt::vformat(loc, L"{:n}", fmt::wformat_args(as)));
+}
index 8776969033105975585db95a7dc59afb393cd5e4..65ee6ab818564b75b14c2dd1f748c4c2648a3175 100644 (file)
@@ -28,13 +28,13 @@ class allocator_ref {
 
   void move(allocator_ref &other) {
     alloc_ = other.alloc_;
-    other.alloc_ = nullptr;
+    other.alloc_ = FMT_NULL;
   }
 
  public:
   typedef typename Allocator::value_type value_type;
 
-  explicit allocator_ref(Allocator *alloc = nullptr) : alloc_(alloc) {}
+  explicit allocator_ref(Allocator *alloc = FMT_NULL) : alloc_(alloc) {}
 
   allocator_ref(const allocator_ref &other) : alloc_(other.alloc_) {}
   allocator_ref(allocator_ref &&other) { move(other); }
index 50b8e4e80d08219884f24f2dca4b5072a234ed4d..b93fedc6c072d880e55e747fcfdcd0b492f71716 100644 (file)
@@ -146,12 +146,11 @@ TEST(OStreamTest, WriteToOStreamMaxSize) {
   } os(streambuf);
 
   testing::InSequence sequence;
-  const char *data = nullptr;
-  std::size_t size = max_size;
+  const char *data = FMT_NULL;
+  typedef std::make_unsigned<std::streamsize>::type ustreamsize;
+  ustreamsize size = max_size;
   do {
-    typedef std::make_unsigned<std::streamsize>::type ustreamsize;
-    ustreamsize n = std::min<ustreamsize>(
-          size, fmt::internal::to_unsigned(max_streamsize));
+    auto n = std::min(size, fmt::internal::to_unsigned(max_streamsize));
     EXPECT_CALL(streambuf, xsputn(data, static_cast<std::streamsize>(n)))
         .WillOnce(testing::Return(max_streamsize));
     data += n;
index 83a9ac3c2569e8d9259b7116a8890d77d3df8a6a..8b0e14e13352cfd1d7882b3decbacfaa92a74da6 100644 (file)
@@ -133,7 +133,7 @@ int test::dup2(int fildes, int fildes2) {
 }
 
 FILE *test::fdopen(int fildes, const char *mode) {
-  EMULATE_EINTR(fdopen, nullptr);
+  EMULATE_EINTR(fdopen, FMT_NULL);
   return ::FMT_POSIX(fdopen(fildes, mode));
 }
 
@@ -162,7 +162,7 @@ int test::pipe(int *pfds, unsigned psize, int textmode) {
 #endif
 
 FILE *test::fopen(const char *filename, const char *mode) {
-  EMULATE_EINTR(fopen, nullptr);
+  EMULATE_EINTR(fopen, FMT_NULL);
   return ::fopen(filename, mode);
 }
 
@@ -216,7 +216,7 @@ TEST(UtilTest, GetPageSize) {
 
 TEST(FileTest, OpenRetry) {
   write_file("test", "there must be something here");
-  scoped_ptr<file> f{nullptr};
+  scoped_ptr<file> f{FMT_NULL};
   EXPECT_RETRY(f.reset(new file("test", file::RDONLY)),
                open, "cannot open file test");
 #ifndef _WIN32
@@ -232,7 +232,7 @@ TEST(FileTest, CloseNoRetryInDtor) {
   int saved_close_count = 0;
   EXPECT_WRITE(stderr, {
     close_count = 1;
-    f.reset(nullptr);
+    f.reset(FMT_NULL);
     saved_close_count = close_count;
     close_count = 0;
   }, format_system_error(EINTR, "cannot close file") + "\n");
@@ -385,7 +385,7 @@ TEST(FileTest, FdopenNoRetry) {
 
 TEST(BufferedFileTest, OpenRetry) {
   write_file("test", "there must be something here");
-  scoped_ptr<buffered_file> f{nullptr};
+  scoped_ptr<buffered_file> f{FMT_NULL};
   EXPECT_RETRY(f.reset(new buffered_file("test", "r")),
                fopen, "cannot open file test");
 #ifndef _WIN32
@@ -402,7 +402,7 @@ TEST(BufferedFileTest, CloseNoRetryInDtor) {
   int saved_fclose_count = 0;
   EXPECT_WRITE(stderr, {
     fclose_count = 1;
-    f.reset(nullptr);
+    f.reset(FMT_NULL);
     saved_fclose_count = fclose_count;
     fclose_count = 0;
   }, format_system_error(EINTR, "cannot close file") + "\n");
@@ -440,7 +440,7 @@ TEST(ScopedMock, Scope) {
     TestMock &copy = mock;
     static_cast<void>(copy);
   }
-  EXPECT_EQ(nullptr, TestMock::instance);
+  EXPECT_EQ(FMT_NULL, TestMock::instance);
 }
 
 #ifdef FMT_LOCALE
@@ -515,7 +515,7 @@ TEST(LocaleTest, Locale) {
 #endif
   ScopedMock<LocaleMock> mock;
   LocaleType impl = reinterpret_cast<LocaleType>(42);
-  EXPECT_CALL(mock, newlocale(LC_NUMERIC_MASK, StrEq("C"), nullptr))
+  EXPECT_CALL(mock, newlocale(LC_NUMERIC_MASK, StrEq("C"), FMT_NULL))
       .WillOnce(Return(impl));
   EXPECT_CALL(mock, freelocale(impl));
   fmt::Locale locale;
index f23d06b37bb05c2d2de52d39ab580729281ad5d5..fbd4568add47b5502a3f9fff40223055ce1471ee 100644 (file)
@@ -59,26 +59,26 @@ static void write(file &f, fmt::string_view s) {
 
 TEST(BufferedFileTest, DefaultCtor) {
   buffered_file f;
-  EXPECT_TRUE(f.get() == nullptr);
+  EXPECT_TRUE(f.get() == FMT_NULL);
 }
 
 TEST(BufferedFileTest, MoveCtor) {
   buffered_file bf = open_buffered_file();
   FILE *fp = bf.get();
-  EXPECT_TRUE(fp != nullptr);
+  EXPECT_TRUE(fp != FMT_NULL);
   buffered_file bf2(std::move(bf));
   EXPECT_EQ(fp, bf2.get());
-  EXPECT_TRUE(bf.get() == nullptr);
+  EXPECT_TRUE(bf.get() == FMT_NULL);
 }
 
 TEST(BufferedFileTest, MoveAssignment) {
   buffered_file bf = open_buffered_file();
   FILE *fp = bf.get();
-  EXPECT_TRUE(fp != nullptr);
+  EXPECT_TRUE(fp != FMT_NULL);
   buffered_file bf2;
   bf2 = std::move(bf);
   EXPECT_EQ(fp, bf2.get());
-  EXPECT_TRUE(bf.get() == nullptr);
+  EXPECT_TRUE(bf.get() == FMT_NULL);
 }
 
 TEST(BufferedFileTest, MoveAssignmentClosesFile) {
@@ -90,13 +90,13 @@ TEST(BufferedFileTest, MoveAssignmentClosesFile) {
 }
 
 TEST(BufferedFileTest, MoveFromTemporaryInCtor) {
-  FILE *fp = nullptr;
+  FILE *fp = FMT_NULL;
   buffered_file f(open_buffered_file(&fp));
   EXPECT_EQ(fp, f.get());
 }
 
 TEST(BufferedFileTest, MoveFromTemporaryInAssignment) {
-  FILE *fp = nullptr;
+  FILE *fp = FMT_NULL;
   buffered_file f;
   f = open_buffered_file(&fp);
   EXPECT_EQ(fp, f.get());
@@ -126,7 +126,7 @@ TEST(BufferedFileTest, CloseErrorInDtor) {
       // output in EXPECT_STDERR and the second close will break output
       // redirection.
       FMT_POSIX(close(f->fileno()));
-      SUPPRESS_ASSERT(f.reset(nullptr));
+      SUPPRESS_ASSERT(f.reset(FMT_NULL));
   }, format_system_error(EBADF, "cannot close file") + "\n");
 }
 
@@ -134,7 +134,7 @@ TEST(BufferedFileTest, Close) {
   buffered_file f = open_buffered_file();
   int fd = f.fileno();
   f.close();
-  EXPECT_TRUE(f.get() == nullptr);
+  EXPECT_TRUE(f.get() == FMT_NULL);
   EXPECT_TRUE(isclosed(fd));
 }
 
@@ -142,7 +142,7 @@ TEST(BufferedFileTest, CloseError) {
   buffered_file f = open_buffered_file();
   FMT_POSIX(close(f.fileno()));
   EXPECT_SYSTEM_ERROR_NOASSERT(f.close(), EBADF, "cannot close file");
-  EXPECT_TRUE(f.get() == nullptr);
+  EXPECT_TRUE(f.get() == FMT_NULL);
 }
 
 TEST(BufferedFileTest, Fileno) {
@@ -253,7 +253,7 @@ TEST(FileTest, CloseErrorInDtor) {
       // output in EXPECT_STDERR and the second close will break output
       // redirection.
       FMT_POSIX(close(f->descriptor()));
-      SUPPRESS_ASSERT(f.reset(nullptr));
+      SUPPRESS_ASSERT(f.reset(FMT_NULL));
   }, format_system_error(EBADF, "cannot close file") + "\n");
 }
 
@@ -334,7 +334,7 @@ TEST(FileTest, Dup2NoExcept) {
   file copy = open_file();
   error_code ec;
   f.dup2(copy.descriptor(), ec);
-  EXPECT_EQ(0, ec.get());
+  EXPECT_EQ(ec.get(), 0);
   EXPECT_NE(f.descriptor(), copy.descriptor());
   EXPECT_READ(copy, FILE_CONTENT);
 }
index bb656859e282640ff83001aa9536907ed3259c33..cc62b9123ec96369573becca9b0f6ebec71a02c6 100644 (file)
@@ -32,22 +32,33 @@ static std::wstring make_positional(fmt::wstring_view format) {
   return s;
 }
 
+// A wrapper around fmt::sprintf to workaround bogus warnings about invalid
+// format strings in MSVC.
+template <typename... Args>
+std::string test_sprintf(fmt::string_view format, const Args &... args) {
+  return fmt::sprintf(format, args...);
+}
+template <typename... Args>
+std::wstring test_sprintf(fmt::wstring_view format, const Args &... args) {
+  return fmt::sprintf(format, args...);
+}
+
 #define EXPECT_PRINTF(expected_output, format, arg) \
-  EXPECT_EQ(expected_output, fmt::sprintf(format, arg)) \
+  EXPECT_EQ(expected_output, test_sprintf(format, arg)) \
     << "format: " << format; \
   EXPECT_EQ(expected_output, fmt::sprintf(make_positional(format), arg))
 
 TEST(PrintfTest, NoArgs) {
-  EXPECT_EQ("test", fmt::sprintf("test"));
+  EXPECT_EQ("test", test_sprintf("test"));
   EXPECT_EQ(L"test", fmt::sprintf(L"test"));
 }
 
 TEST(PrintfTest, Escape) {
-  EXPECT_EQ("%", fmt::sprintf("%%"));
-  EXPECT_EQ("before %", fmt::sprintf("before %%"));
-  EXPECT_EQ("% after", fmt::sprintf("%% after"));
-  EXPECT_EQ("before % after", fmt::sprintf("before %% after"));
-  EXPECT_EQ("%s", fmt::sprintf("%%s"));
+  EXPECT_EQ("%", test_sprintf("%%"));
+  EXPECT_EQ("before %", test_sprintf("before %%"));
+  EXPECT_EQ("% after", test_sprintf("%% after"));
+  EXPECT_EQ("before % after", test_sprintf("before %% after"));
+  EXPECT_EQ("%s", test_sprintf("%%s"));
   EXPECT_EQ(L"%", fmt::sprintf(L"%%"));
   EXPECT_EQ(L"before %", fmt::sprintf(L"before %%"));
   EXPECT_EQ(L"% after", fmt::sprintf(L"%% after"));
@@ -56,60 +67,60 @@ TEST(PrintfTest, Escape) {
 }
 
 TEST(PrintfTest, PositionalArgs) {
-  EXPECT_EQ("42", fmt::sprintf("%1$d", 42));
-  EXPECT_EQ("before 42", fmt::sprintf("before %1$d", 42));
-  EXPECT_EQ("42 after", fmt::sprintf("%1$d after",42));
-  EXPECT_EQ("before 42 after", fmt::sprintf("before %1$d after", 42));
-  EXPECT_EQ("answer = 42", fmt::sprintf("%1$s = %2$d", "answer", 42));
+  EXPECT_EQ("42", test_sprintf("%1$d", 42));
+  EXPECT_EQ("before 42", test_sprintf("before %1$d", 42));
+  EXPECT_EQ("42 after", test_sprintf("%1$d after",42));
+  EXPECT_EQ("before 42 after", test_sprintf("before %1$d after", 42));
+  EXPECT_EQ("answer = 42", test_sprintf("%1$s = %2$d", "answer", 42));
   EXPECT_EQ("42 is the answer",
-      fmt::sprintf("%2$d is the %1$s", "answer", 42));
-  EXPECT_EQ("abracadabra", fmt::sprintf("%1$s%2$s%1$s", "abra", "cad"));
+      test_sprintf("%2$d is the %1$s", "answer", 42));
+  EXPECT_EQ("abracadabra", test_sprintf("%1$s%2$s%1$s", "abra", "cad"));
 }
 
 TEST(PrintfTest, AutomaticArgIndexing) {
-  EXPECT_EQ("abc", fmt::sprintf("%c%c%c", 'a', 'b', 'c'));
+  EXPECT_EQ("abc", test_sprintf("%c%c%c", 'a', 'b', 'c'));
 }
 
 TEST(PrintfTest, NumberIsTooBigInArgIndex) {
-  EXPECT_THROW_MSG(fmt::sprintf(format("%{}$", BIG_NUM)),
+  EXPECT_THROW_MSG(test_sprintf(format("%{}$", BIG_NUM)),
       format_error, "number is too big");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%{}$d", BIG_NUM)),
+  EXPECT_THROW_MSG(test_sprintf(format("%{}$d", BIG_NUM)),
       format_error, "number is too big");
 }
 
 TEST(PrintfTest, SwitchArgIndexing) {
-  EXPECT_THROW_MSG(fmt::sprintf("%1$d%", 1, 2),
+  EXPECT_THROW_MSG(test_sprintf("%1$d%", 1, 2),
       format_error, "cannot switch from manual to automatic argument indexing");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%1$d%{}d", BIG_NUM), 1, 2),
+  EXPECT_THROW_MSG(test_sprintf(format("%1$d%{}d", BIG_NUM), 1, 2),
       format_error, "number is too big");
-  EXPECT_THROW_MSG(fmt::sprintf("%1$d%d", 1, 2),
+  EXPECT_THROW_MSG(test_sprintf("%1$d%d", 1, 2),
       format_error, "cannot switch from manual to automatic argument indexing");
 
-  EXPECT_THROW_MSG(fmt::sprintf("%d%1$", 1, 2),
+  EXPECT_THROW_MSG(test_sprintf("%d%1$", 1, 2),
       format_error, "cannot switch from automatic to manual argument indexing");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%d%{}$d", BIG_NUM), 1, 2),
+  EXPECT_THROW_MSG(test_sprintf(format("%d%{}$d", BIG_NUM), 1, 2),
       format_error, "number is too big");
-  EXPECT_THROW_MSG(fmt::sprintf("%d%1$d", 1, 2),
+  EXPECT_THROW_MSG(test_sprintf("%d%1$d", 1, 2),
       format_error, "cannot switch from automatic to manual argument indexing");
 
   // Indexing errors override width errors.
-  EXPECT_THROW_MSG(fmt::sprintf(format("%d%1${}d", BIG_NUM), 1, 2),
+  EXPECT_THROW_MSG(test_sprintf(format("%d%1${}d", BIG_NUM), 1, 2),
       format_error, "number is too big");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%1$d%{}d", BIG_NUM), 1, 2),
+  EXPECT_THROW_MSG(test_sprintf(format("%1$d%{}d", BIG_NUM), 1, 2),
       format_error, "number is too big");
 }
 
 TEST(PrintfTest, InvalidArgIndex) {
-  EXPECT_THROW_MSG(fmt::sprintf("%0$d", 42), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%0$d", 42), format_error,
       "argument index out of range");
-  EXPECT_THROW_MSG(fmt::sprintf("%2$d", 42), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%2$d", 42), format_error,
       "argument index out of range");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%{}$d", INT_MAX), 42),
+  EXPECT_THROW_MSG(test_sprintf(format("%{}$d", INT_MAX), 42),
       format_error, "argument index out of range");
 
-  EXPECT_THROW_MSG(fmt::sprintf("%2$", 42),
+  EXPECT_THROW_MSG(test_sprintf("%2$", 42),
       format_error, "argument index out of range");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%{}$d", BIG_NUM), 42),
+  EXPECT_THROW_MSG(test_sprintf(format("%{}$d", BIG_NUM), 42),
       format_error, "number is too big");
 }
 
@@ -180,13 +191,8 @@ TEST(PrintfTest, HashFlag) {
   safe_sprintf(buffer, "%#E", -42.0);
   EXPECT_PRINTF(buffer, "%#E", -42.0);
 
-  if (fmt::internal::use_grisu()) {
-    EXPECT_PRINTF("-42.0", "%#g", -42.0);
-    EXPECT_PRINTF("-42.0", "%#G", -42.0);
-  } else {
-    EXPECT_PRINTF("-42.0000", "%#g", -42.0);
-    EXPECT_PRINTF("-42.0000", "%#G", -42.0);
-  }
+  EXPECT_PRINTF("-42.0000", "%#g", -42.0);
+  EXPECT_PRINTF("-42.0000", "%#G", -42.0);
 
   safe_sprintf(buffer, "%#a", 16.0);
   EXPECT_PRINTF(buffer, "%#a", 16.0);
@@ -201,23 +207,23 @@ TEST(PrintfTest, Width) {
   EXPECT_PRINTF("  abc", "%5s", "abc");
 
   // Width cannot be specified twice.
-  EXPECT_THROW_MSG(fmt::sprintf("%5-5d", 42), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%5-5d", 42), format_error,
       "invalid type specifier");
 
-  EXPECT_THROW_MSG(fmt::sprintf(format("%{}d", BIG_NUM), 42),
+  EXPECT_THROW_MSG(test_sprintf(format("%{}d", BIG_NUM), 42),
       format_error, "number is too big");
-  EXPECT_THROW_MSG(fmt::sprintf(format("%1${}d", BIG_NUM), 42),
+  EXPECT_THROW_MSG(test_sprintf(format("%1${}d", BIG_NUM), 42),
       format_error, "number is too big");
 }
 
 TEST(PrintfTest, DynamicWidth) {
-  EXPECT_EQ("   42", fmt::sprintf("%*d", 5, 42));
-  EXPECT_EQ("42   ", fmt::sprintf("%*d", -5, 42));
-  EXPECT_THROW_MSG(fmt::sprintf("%*d", 5.0, 42), format_error,
+  EXPECT_EQ("   42", test_sprintf("%*d", 5, 42));
+  EXPECT_EQ("42   ", test_sprintf("%*d", -5, 42));
+  EXPECT_THROW_MSG(test_sprintf("%*d", 5.0, 42), format_error,
       "width is not integer");
-  EXPECT_THROW_MSG(fmt::sprintf("%*d"), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%*d"), format_error,
       "argument index out of range");
-  EXPECT_THROW_MSG(fmt::sprintf("%*d", BIG_NUM, 42), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%*d", BIG_NUM, 42), format_error,
       "number is too big");
 }
 
@@ -258,17 +264,17 @@ TEST(PrintfTest, IgnorePrecisionForNonNumericArg) {
 }
 
 TEST(PrintfTest, DynamicPrecision) {
-  EXPECT_EQ("00042", fmt::sprintf("%.*d", 5, 42));
-  EXPECT_EQ("42", fmt::sprintf("%.*d", -5, 42));
-  EXPECT_THROW_MSG(fmt::sprintf("%.*d", 5.0, 42), format_error,
+  EXPECT_EQ("00042", test_sprintf("%.*d", 5, 42));
+  EXPECT_EQ("42", test_sprintf("%.*d", -5, 42));
+  EXPECT_THROW_MSG(test_sprintf("%.*d", 5.0, 42), format_error,
       "precision is not integer");
-  EXPECT_THROW_MSG(fmt::sprintf("%.*d"), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%.*d"), format_error,
       "argument index out of range");
-  EXPECT_THROW_MSG(fmt::sprintf("%.*d", BIG_NUM, 42), format_error,
+  EXPECT_THROW_MSG(test_sprintf("%.*d", BIG_NUM, 42), format_error,
       "number is too big");
   if (sizeof(long long) != sizeof(int)) {
     long long prec = static_cast<long long>(INT_MIN) - 1;
-    EXPECT_THROW_MSG(fmt::sprintf("%.*d", prec, 42), format_error,
+    EXPECT_THROW_MSG(test_sprintf("%.*d", prec, 42), format_error,
         "number is too big");
  }
 }
@@ -431,11 +437,11 @@ TEST(PrintfTest, Char) {
 
 TEST(PrintfTest, String) {
   EXPECT_PRINTF("abc", "%s", "abc");
-  const char *null_str = nullptr;
+  const char *null_str = FMT_NULL;
   EXPECT_PRINTF("(null)", "%s", null_str);
   EXPECT_PRINTF("    (null)", "%10s", null_str);
   EXPECT_PRINTF(L"abc", L"%s", L"abc");
-  const wchar_t *null_wstr = nullptr;
+  const wchar_t *null_wstr = FMT_NULL;
   EXPECT_PRINTF(L"(null)", L"%s", null_wstr);
   EXPECT_PRINTF(L"    (null)", L"%10s", null_wstr);
 }
@@ -444,22 +450,22 @@ TEST(PrintfTest, Pointer) {
   int n;
   void *p = &n;
   EXPECT_PRINTF(fmt::format("{}", p), "%p", p);
-  p = nullptr;
+  p = FMT_NULL;
   EXPECT_PRINTF("(nil)", "%p", p);
   EXPECT_PRINTF("     (nil)", "%10p", p);
   const char *s = "test";
   EXPECT_PRINTF(fmt::format("{:p}", s), "%p", s);
-  const char *null_str = nullptr;
+  const char *null_str = FMT_NULL;
   EXPECT_PRINTF("(nil)", "%p", null_str);
 
   p = &n;
   EXPECT_PRINTF(fmt::format(L"{}", p), L"%p", p);
-  p = nullptr;
+  p = FMT_NULL;
   EXPECT_PRINTF(L"(nil)", L"%p", p);
   EXPECT_PRINTF(L"     (nil)", L"%10p", p);
   const wchar_t *w = L"test";
   EXPECT_PRINTF(fmt::format(L"{:p}", w), L"%p", w);
-  const wchar_t *null_wstr = nullptr;
+  const wchar_t *null_wstr = FMT_NULL;
   EXPECT_PRINTF(L"(nil)", L"%p", null_wstr);
 }
 
@@ -495,7 +501,7 @@ TEST(PrintfTest, WideString) {
 }
 
 TEST(PrintfTest, PrintfCustom) {
-  EXPECT_EQ("abc", fmt::sprintf("%s", TestString("abc")));
+  EXPECT_EQ("abc", test_sprintf("%s", TestString("abc")));
 }
 
 TEST(PrintfTest, OStream) {
@@ -504,3 +510,60 @@ TEST(PrintfTest, OStream) {
   EXPECT_EQ("Don't panic!", os.str());
   EXPECT_EQ(12, ret);
 }
+
+TEST(PrintfTest, VPrintf) {
+  fmt::format_arg_store<fmt::printf_context, int> as{42};
+  fmt::basic_format_args<fmt::printf_context> args(as);
+  EXPECT_EQ(fmt::vsprintf("%d", args), "42");
+  EXPECT_WRITE(stdout, fmt::vprintf("%d", args), "42");
+  EXPECT_WRITE(stdout, fmt::vfprintf(stdout, "%d", args), "42");
+  EXPECT_WRITE(stdout, fmt::vfprintf(std::cout, "%d", args), "42");
+}
+
+template<typename... Args>
+void check_format_string_regression(fmt::string_view s, const Args&... args) {
+  fmt::sprintf(s, args...);
+}
+
+TEST(PrintfTest, CheckFormatStringRegression) {
+  check_format_string_regression("%c%s", 'x', "");
+}
+
+TEST(PrintfTest, VSPrintfMakeArgsExample) {
+  fmt::format_arg_store<fmt::printf_context, int, const char *> as{
+      42, "something"};
+  fmt::basic_format_args<fmt::printf_context> args(as);
+  EXPECT_EQ(
+      "[42] something happened", fmt::vsprintf("[%d] %s happened", args));
+  auto as2 = fmt::make_printf_args(42, "something");
+  fmt::basic_format_args<fmt::printf_context> args2(as2);
+  EXPECT_EQ(
+      "[42] something happened", fmt::vsprintf("[%d] %s happened", args2));
+  //the older gcc versions can't cast the return value
+#if !defined(__GNUC__) || (__GNUC__ > 4) 
+  EXPECT_EQ(
+      "[42] something happened",
+      fmt::vsprintf(
+          "[%d] %s happened", fmt::make_printf_args(42, "something")));
+#endif
+}
+
+TEST(PrintfTest, VSPrintfMakeWArgsExample) {
+  fmt::format_arg_store<fmt::wprintf_context, int, const wchar_t *> as{
+     42, L"something"};
+  fmt::basic_format_args<fmt::wprintf_context> args(as);
+  EXPECT_EQ(
+     L"[42] something happened",
+     fmt::vsprintf(L"[%d] %s happened", args));
+  auto  as2 = fmt::make_wprintf_args(42, L"something");
+  fmt::basic_format_args<fmt::wprintf_context> args2(as2);
+  EXPECT_EQ(
+      L"[42] something happened", fmt::vsprintf(L"[%d] %s happened", args2));
+  // the older gcc versions can't cast the return value
+#if !defined(__GNUC__) || (__GNUC__ > 4)
+  EXPECT_EQ(
+      L"[42] something happened",
+      fmt::vsprintf(
+          L"[%d] %s happened", fmt::make_wprintf_args(42, L"something")));
+#endif
+}
index 3f02cbf565ad0626c3969ff465ba075d5b92251b..77b4ced568c708f8a29a89b4ec4f10538a1923b1 100644 (file)
@@ -9,12 +9,11 @@
 // All Rights Reserved
 // {fmt} support for ranges, containers and types tuple interface.
 
-#include "fmt/ranges.h"
-
 /// Check if  'if constexpr' is supported.
 #if (__cplusplus > 201402L) || \
     (defined(_MSVC_LANG) && _MSVC_LANG > 201402L && _MSC_VER >= 1910)
 
+#include "fmt/ranges.h"
 #include "gtest.h"
 
 #include <vector>
index bc05f24c4f18a188d95900cac2d95bdad3a53e68..686d387014574c24e9788e54bcd70af1facdd88c 100644 (file)
@@ -10,6 +10,7 @@
 #endif
 
 #include "gmock.h"
+#include "fmt/locale.h"
 #include "fmt/time.h"
 
 TEST(TimeTest, Format) {
@@ -26,10 +27,18 @@ TEST(TimeTest, GrowBuffer) {
   for (int i = 0; i < 30; ++i)
     s += "%c";
   s += "}\n";
-  std::time_t t = std::time(nullptr);
+  std::time_t t = std::time(FMT_NULL);
   fmt::format(s, *std::localtime(&t));
 }
 
+TEST(TimeTest, FormatToEmptyContainer) {
+  std::string s;
+  auto time = std::tm();
+  time.tm_sec = 42;
+  fmt::format_to(std::back_inserter(s), "{:%S}", time);
+  EXPECT_EQ(s, "42");
+}
+
 TEST(TimeTest, EmptyResult) {
   EXPECT_EQ("", fmt::format("{}", std::tm()));
 }
@@ -47,13 +56,13 @@ static bool EqualTime(const std::tm &lhs, const std::tm &rhs) {
 }
 
 TEST(TimeTest, LocalTime) {
-  std::time_t t = std::time(nullptr);
+  std::time_t t = std::time(FMT_NULL);
   std::tm tm = *std::localtime(&t);
   EXPECT_TRUE(EqualTime(tm, fmt::localtime(t)));
 }
 
 TEST(TimeTest, GMTime) {
-  std::time_t t = std::time(nullptr);
+  std::time_t t = std::time(FMT_NULL);
   std::tm tm = *std::gmtime(&t);
   EXPECT_TRUE(EqualTime(tm, fmt::gmtime(t)));
 }
index c0af03c78c5649e420f54a187443ed69ff328f18..2b068d95cb335385942aa1a362d64d20c8519338 100644 (file)
@@ -35,7 +35,7 @@ std::string get_system_error(int error_code);
 extern const char *const FILE_CONTENT;
 
 // Opens a buffered file for reading.
-fmt::buffered_file open_buffered_file(FILE **fp = nullptr);
+fmt::buffered_file open_buffered_file(FILE **fp = FMT_NULL);
 
 inline FILE *safe_fopen(const char *filename, const char *mode) {
 #if defined(_WIN32) && !defined(__MINGW32__)
index f2c2b99737733aafe2098b235a34e29341cacae0..0d2b5e1d7603eecbd753e9b553448b69eed40ed6 100755 (executable)
@@ -2,7 +2,7 @@
 import argparse
 from flask_restful import Api
 from flask import Flask
-from ceph_telemetry.rest import Index, Report
+from ceph_telemetry.rest import Index, Report, Device
 
 
 def create_app(name):
@@ -10,6 +10,7 @@ def create_app(name):
     api = Api(app, catch_all_404s=True)
     api.add_resource(Index, '/')
     api.add_resource(Report, '/report')
+    api.add_resource(Device, '/device')
     return app
 
 
diff --git a/ceph/src/telemetry/server/ceph_telemetry/rest/device.py b/ceph/src/telemetry/server/ceph_telemetry/rest/device.py
new file mode 100644 (file)
index 0000000..02506c0
--- /dev/null
@@ -0,0 +1,40 @@
+from flask import request, jsonify
+from flask_restful import Resource
+import datetime
+import hashlib
+import json
+import copy
+import psycopg2
+
+class Device(Resource):
+    def __init__(self, report=None):
+        super(Device, self).__init__()
+        self.report = report
+        with open('/opt/telemetry/pg_pass.txt', 'r') as f:
+            p = f.read()
+            self.pg_password = p.strip()
+
+    def put(self):
+        self.report = request.get_json(force=True)
+
+        self.post_to_postgres()
+
+        return jsonify(status=True)
+
+    def _connect_pg(self):
+        return psycopg2.connect(
+            host='localhost',
+            database='telemetry',
+            user='telemetry',
+            password=self.pg_password,
+            )
+
+    def post_to_postgres(self):
+        conn = self._connect_pg()
+        cur = conn.cursor()
+        for devid, devinfo in self.report:
+            for stamp, report in devinfo:
+                cur.execute(
+                    'INSERT INTO device_report (device_id, report_stamp, report) VALUES (%s,%s,%s) ON CONFLICT DO NOTHING',
+                    (devid, stamp, report))
+        conn.commit()
diff --git a/ceph/src/test/cli-integration/balancer/misplaced.t b/ceph/src/test/cli-integration/balancer/misplaced.t
new file mode 100644 (file)
index 0000000..5ab21ff
--- /dev/null
@@ -0,0 +1,28 @@
+  $ ceph osd pool create balancer_opt 128
+  pool 'balancer_opt' created
+  $ ceph osd pool application enable balancer_opt rados
+  enabled application 'rados' on pool 'balancer_opt'
+  $ rados bench -p balancer_opt 50 write --no-cleanup > /dev/null
+  $ ceph balancer on
+  $ ceph balancer mode crush-compat
+  $ ceph balancer ls
+  []
+  $ ceph config set osd.* target_max_misplaced_ratio .07
+  $ ceph balancer eval
+  current cluster score [0-9]*\.?[0-9]+.* (re)
+# Turn off active balancer to use manual commands
+  $ ceph balancer off
+  $ ceph balancer optimize test_plan balancer_opt
+  $ ceph balancer ls
+  [
+      "test_plan"
+  ]
+  $ ceph balancer execute test_plan
+  $ ceph balancer eval
+  current cluster score [0-9]*\.?[0-9]+.* (re)
+# Plan is gone after execution ?
+  $ ceph balancer execute test_plan
+  Error ENOENT: plan test_plan not found
+  [2]
+  $ ceph osd pool rm balancer_opt balancer_opt --yes-i-really-really-mean-it
+  pool 'balancer_opt' removed
index 6cbc9ccd19455594028e4e7a5893bcf1f44cd53d..c22783cd78d700f80390375b6e49a2d1e0a34fa3 100644 (file)
       mirror pool info                  Show information about the pool mirroring
                                         configuration.
       mirror pool peer add              Add a mirroring peer to a pool.
+      mirror pool peer bootstrap create Create a peer bootstrap token to import
+                                        in a remote cluster
+      mirror pool peer bootstrap import Import a peer bootstrap token created
+                                        from a remote cluster
       mirror pool peer remove           Remove a mirroring peer from a pool.
       mirror pool peer set              Update mirroring peer settings.
       mirror pool promote               Promote all non-primary images in the
     -p [ --pool ] arg    pool name
   
   rbd help mirror pool enable
-  usage: rbd mirror pool enable [--pool <pool>] 
+  usage: rbd mirror pool enable [--pool <pool>] [--site-name <site-name>] 
                                 <pool-name> <mode> 
   
   Enable RBD mirroring by default within a pool.
   
   Optional arguments
     -p [ --pool ] arg    pool name
+    --site-name arg      local site name
   
   rbd help mirror pool info
   usage: rbd mirror pool info [--pool <pool>] [--format <format>] 
     --remote-mon-host arg    remote mon host(s)
     --remote-key-file arg    path to file containing remote key
   
+  rbd help mirror pool peer bootstrap create
+  usage: rbd mirror pool peer bootstrap create
+                                           [--pool <pool>] 
+                                           [--site-name <site-name>] 
+                                           <pool-name> 
+  
+  Create a peer bootstrap token to import in a remote cluster
+  
+  Positional arguments
+    <pool-name>          pool name
+  
+  Optional arguments
+    -p [ --pool ] arg    pool name
+    --site-name arg      local site name
+  
+  rbd help mirror pool peer bootstrap import
+  usage: rbd mirror pool peer bootstrap import
+                                           [--pool <pool>] 
+                                           [--site-name <site-name>] 
+                                           [--token-path <token-path>] 
+                                           [--direction <direction>] 
+                                           <pool-name> <token-path> 
+  
+  Import a peer bootstrap token created from a remote cluster
+  
+  Positional arguments
+    <pool-name>          pool name
+    <token-path>         bootstrap token file (or '-' for stdin)
+  
+  Optional arguments
+    -p [ --pool ] arg    pool name
+    --site-name arg      local site name
+    --token-path arg     bootstrap token file (or '-' for stdin)
+    --direction arg      mirroring direction (rx-only, rx-tx)
+                         [default: rx-tx]
+  
   rbd help mirror pool peer remove
   usage: rbd mirror pool peer remove [--pool <pool>] 
                                      <pool-name> <uuid> 
index b3ee9e44a12b9b869fbe13cfb384fe0c99e72337..8d03aadc1601ae8f2140c44647d7d461a3f3ea6c 100644 (file)
@@ -1555,21 +1555,17 @@ TEST_F(TestClsRbd, mirror) {
   ASSERT_EQ(0, mirror_peer_add(&ioctx, "uuid2", "cluster2", "admin"));
   ASSERT_EQ(-ESTALE, mirror_peer_add(&ioctx, "uuid2", "cluster3", "foo"));
   ASSERT_EQ(-EEXIST, mirror_peer_add(&ioctx, "uuid3", "cluster1", "foo"));
-  ASSERT_EQ(0, mirror_peer_add(&ioctx, "uuid3", "cluster3", "admin", 123));
+  ASSERT_EQ(0, mirror_peer_add(&ioctx, "uuid3", "cluster3", "admin"));
   ASSERT_EQ(-EEXIST, mirror_peer_add(&ioctx, "uuid4", "cluster3", "admin"));
-  ASSERT_EQ(-EEXIST, mirror_peer_add(&ioctx, "uuid4", "cluster3", "admin", 123));
-  ASSERT_EQ(0, mirror_peer_add(&ioctx, "uuid4", "cluster3", "admin", 234));
 
   ASSERT_EQ(0, mirror_peer_list(&ioctx, &peers));
   std::vector<cls::rbd::MirrorPeer> expected_peers = {
     {"uuid1", "cluster1", "client", -1},
     {"uuid2", "cluster2", "admin", -1},
-    {"uuid3", "cluster3", "admin", 123},
-    {"uuid4", "cluster3", "admin", 234}};
+    {"uuid3", "cluster3", "admin", -1}};
   ASSERT_EQ(expected_peers, peers);
 
   ASSERT_EQ(0, mirror_peer_remove(&ioctx, "uuid5"));
-  ASSERT_EQ(0, mirror_peer_remove(&ioctx, "uuid4"));
   ASSERT_EQ(0, mirror_peer_remove(&ioctx, "uuid2"));
 
   ASSERT_EQ(-ENOENT, mirror_peer_set_client(&ioctx, "uuid4", "new client"));
@@ -1581,7 +1577,7 @@ TEST_F(TestClsRbd, mirror) {
   ASSERT_EQ(0, mirror_peer_list(&ioctx, &peers));
   expected_peers = {
     {"uuid1", "cluster1", "new client", -1},
-    {"uuid3", "new cluster", "admin", 123}};
+    {"uuid3", "new cluster", "admin", -1}};
   ASSERT_EQ(expected_peers, peers);
   ASSERT_EQ(-EBUSY, mirror_mode_set(&ioctx, cls::rbd::MIRROR_MODE_DISABLED));
 
@@ -3073,13 +3069,20 @@ TEST_F(TestClsRbd, sparsify)
   ASSERT_EQ(0, sparsify(&ioctx, oid, 16, false));
   std::map<uint64_t, uint64_t> m;
   bufferlist outbl;
-  std::map<uint64_t, uint64_t> expected_m = {{0, 0}};
+  std::map<uint64_t, uint64_t> expected_m;
   bufferlist expected_outbl;
-  if (sparse_read_supported) {
+  switch (int r = ioctx.sparse_read(oid, m, outbl, inbl.length(), 0); r) {
+  case 0:
     expected_m = {};
+    ASSERT_EQ(expected_m, m);
+    break;
+  case 1:
+    expected_m = {{0, 0}};
+    ASSERT_EQ(expected_m, m);
+    break;
+  default:
+    FAIL() << r << " is odd";
   }
-  ASSERT_EQ((int)expected_m.size(),
-            ioctx.sparse_read(oid, m, outbl, inbl.length(), 0));
   ASSERT_EQ(m, expected_m);
   ASSERT_EQ(0, sparsify(&ioctx, oid, 16, true));
   ASSERT_EQ(-ENOENT, sparsify(&ioctx, oid, 16, true));
index f556b2776e06238b677ef08da0e9f964408a6eba..cf812f36fff8795bfc41c81710f33085cdcafd3e 100644 (file)
@@ -28,7 +28,7 @@ TEST(BloomFilter, Basic) {
 TEST(BloomFilter, Empty) {
   bloom_filter bf;
   for (int i=0; i<100; ++i) {
-    ASSERT_FALSE(bf.contains(i));
+    ASSERT_FALSE(bf.contains((uint32_t) i));
     ASSERT_FALSE(bf.contains(stringify(i)));
   }
 }
@@ -74,6 +74,7 @@ TEST(BloomFilter, Sweep) {
 }
 
 TEST(BloomFilter, SweepInt) {
+  unsigned int seed = 0;
   std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
   std::cout.precision(5);
   std::cout << "# max\tfpp\tactual\tsize\tB/insert\tdensity\tapprox_element_count" << std::endl;
@@ -87,13 +88,21 @@ TEST(BloomFilter, SweepInt) {
       ASSERT_TRUE(123);
       ASSERT_TRUE(456);
 
+      // In Ceph code, the uint32_t input routines to the bloom filter
+      // are used with hash values that are uniformly distributed over
+      // the uint32_t range.  To model this behavior in the test, we
+      // pass in values generated by a pseudo-random generator.
+      // To make the test reproducible anyway, use a fixed seed here,
+      // but a different one in each instance.
+      srand(seed++);
+
       for (int n = 0; n < max; n++)
-       bf.insert(n);
+       bf.insert((uint32_t) rand());
 
       int test = max * 100;
       int hit = 0;
       for (int n = 0; n < test; n++)
-       if (bf.contains(100000 + n))
+       if (bf.contains((uint32_t) rand()))
          hit++;
 
       ASSERT_TRUE(123);
@@ -108,8 +117,8 @@ TEST(BloomFilter, SweepInt) {
 
       std::cout << max << "\t" << fpp << "\t" << actual << "\t" << bl.length() << "\t" << byte_per_insert
                << "\t" << bf.density() << "\t" << bf.approx_unique_element_count() << std::endl;
-      ASSERT_TRUE(actual < fpp * 10);
-      ASSERT_TRUE(actual > fpp / 10);
+      ASSERT_TRUE(actual < fpp * 3);
+      ASSERT_TRUE(actual > fpp / 3);
       ASSERT_TRUE(bf.density() > 0.40);
       ASSERT_TRUE(bf.density() < 0.60);
     }
@@ -118,6 +127,7 @@ TEST(BloomFilter, SweepInt) {
 
 
 TEST(BloomFilter, CompressibleSweep) {
+  unsigned int seed = 0;
   std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
   std::cout.precision(5);
   std::cout << "# max\tins\test ins\tafter\ttgtfpp\tactual\tsize\tb/elem\n";
@@ -125,21 +135,29 @@ TEST(BloomFilter, CompressibleSweep) {
   int max = 1024;
   for (int div = 1; div < 10; div++) {
     compressible_bloom_filter bf(max, fpp, 1);
+
+    // See the comment in SweepInt.
+    srand(seed++);
+
+    std::vector<uint32_t> values;
     int t = max/div;
-    for (int n = 0; n < t; n++)
-      bf.insert(n);
+    for (int n = 0; n < t; n++) {
+      uint32_t val = (uint32_t) rand();
+      bf.insert(val);
+      values.push_back(val);
+    }
 
     unsigned est = bf.approx_unique_element_count();
     if (div > 1)
       bf.compress(1.0 / div);
 
-    for (int n = 0; n < t; n++)
-      ASSERT_TRUE(bf.contains(n));
+    for (auto val : values)
+      ASSERT_TRUE(bf.contains(val));
 
     int test = max * 100;
     int hit = 0;
     for (int n = 0; n < test; n++)
-      if (bf.contains(100000 + n))
+      if (bf.contains((uint32_t) rand()))
        hit++;
 
     double actual = (double)hit / (double)test;
index 3ab2d8d8f562e380d363b0e0a9b33e627f33cef7..c517a61033bffc2db7bb35a09f32d22576280a85 100644 (file)
@@ -50,7 +50,7 @@ static constexpr uint32_t bns = 123456789;
 static constexpr uint32_t bus = 123456;
 static constexpr time_t btt = bs;
 static constexpr struct timespec bts = { bs, bns };
-static constexpr struct ceph_timespec bcts = { bs, bns };
+static struct ceph_timespec bcts = { init_le32(bs), init_le32(bns) };
 static constexpr struct timeval btv = { bs, bus };
 static constexpr double bd = bs + ((double)bns / 1000000000.);
 
index 42ba357a019adafd58cae658e1f4ddb2deb3ddf4..11acabb0a585677122af5be630d2428858810984 100644 (file)
@@ -1,5 +1,7 @@
 #define _FILE_OFFSET_BITS 64
+#if defined(__linux__)
 #include <features.h>
+#endif
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
index b9286929acd57c734a13044c9ca4b9f934b646cc..cac42f33fb9c062f37c8080a206ef8067663adfd 100644 (file)
@@ -24,7 +24,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
 #include <sys/uio.h>
 #include <iostream>
 #include <vector>
@@ -32,6 +31,7 @@
 
 #ifdef __linux__
 #include <limits.h>
+#include <sys/xattr.h>
 #endif
 
 
index a9a800d00aae8c21e87dea96a0ee12d0e4ee3531..a6c4a65963d92778645610b7d264a9bdde1885bb 100644 (file)
@@ -21,7 +21,9 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#ifdef __linux__
 #include <sys/xattr.h>
+#endif
 
 static size_t acl_ea_size(int count)
 {
index 4af9b418d2e8345dd36aa6d6752369e1cfc9472f..b4976c9c3effb5ab2224afceca1025300cc53480 100644 (file)
@@ -22,7 +22,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
+#ifdef __linux__
 #include <sys/xattr.h>
+#endif
 #include <signal.h>
 
 TEST(Caps, ReadZero) {
diff --git a/ceph/src/test/libcephfs/ceph_pthread_self.h b/ceph/src/test/libcephfs/ceph_pthread_self.h
new file mode 100644 (file)
index 0000000..4c0c98f
--- /dev/null
@@ -0,0 +1,31 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_TEST_LIBCEPHFS_PTHREAD_SELF
+#define CEPH_TEST_LIBCEPHFS_PTHREAD_SELF
+
+#include <pthread.h>
+
+#include <type_traits>
+
+/*
+ * There is a  difference between libc shipped with FreeBSD and
+ * glibc shipped with GNU/Linux for the return type of pthread_self().
+ *
+ * Introduced a conversion function in include/compat.h
+ *     (uint64_t)ceph_pthread_self()
+ *
+ * libc returns an opague pthread_t that is not default convertable
+ * to a uint64_t, which is what gtest expects.
+ * And tests using gtest will not compile because of this difference.
+ * 
+ */
+static uint64_t ceph_pthread_self() {
+  auto me = pthread_self();
+  static_assert(std::is_convertible_v<decltype(me), uint64_t> ||
+                std::is_pointer_v<decltype(me)>,
+                "we need to use pthread_self() for the owner parameter");
+  return reinterpret_cast<uint64_t>(me);
+}
+
+#endif
index 36c0346d49bef6af2cda351b50a5417cdacd0c0f..1a6376ee5e19a632d81fe6d731e923643e3e1603 100644 (file)
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
 #include <sys/uio.h>
 
 #ifdef __linux__
 #include <limits.h>
+#include <sys/xattr.h>
 #endif
 
 #include <map>
index 79f8a0777ade565e1c0f750cf9ce16c5577bbd50..9add019d37ae915737953ecc1dc9f23809bdb539 100644 (file)
@@ -26,8 +26,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
-
 #include <stdlib.h>
 #include <semaphore.h>
 #include <time.h>
 
 #ifdef __linux__
 #include <limits.h>
+#include <sys/xattr.h>
+#elif __FreeBSD__
+#include <sys/types.h>
+#include <sys/wait.h>
 #endif
 
 #include "include/ceph_assert.h"
+#include "ceph_pthread_self.h"
 
 // Startup common: create and mount ceph fs
 #define STARTUP_CEPH() do {                            \
@@ -175,27 +178,27 @@ static void thread_ConcurrentLocking(str_ConcurrentLocking& s) {
   ASSERT_GE(fd, 0); 
 
   ASSERT_EQ(-EWOULDBLOCK,
-           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
   PING_MAIN(1); // (1)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
   PING_MAIN(2); // (2)
 
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
   PING_MAIN(3); // (3)
 
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH, ceph_pthread_self()));
   PING_MAIN(4); // (4)
 
   WAIT_MAIN(1); // (R1)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
   PING_MAIN(5); // (5)
 
   WAIT_MAIN(2); // (R2)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
   PING_MAIN(6); // (6)
 
   WAIT_MAIN(3); // (R3)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
   PING_MAIN(7); // (7)
 }
 
@@ -218,7 +221,7 @@ TEST(LibCephFS, ConcurrentLocking) {
   ASSERT_GE(fd, 0); 
 
   // Lock
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
 
   // Start locker thread
   pthread_t thread;
@@ -233,7 +236,7 @@ TEST(LibCephFS, ConcurrentLocking) {
   NOT_WAIT_WORKER(2); // (2)
 
   // Unlock
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
 
   // Shall have lock
   // Synchronization point with thread (failure: thread is dead)
@@ -245,8 +248,8 @@ TEST(LibCephFS, ConcurrentLocking) {
   // Wait for thread to share lock
   WAIT_WORKER(4); // (4)
   ASSERT_EQ(-EWOULDBLOCK,
-           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
 
   // Wake up thread to unlock shared lock
   PING_WORKER(1); // (R1)
@@ -254,7 +257,7 @@ TEST(LibCephFS, ConcurrentLocking) {
 
   // Now we can lock exclusively
   // Upgrade to exclusive lock (as per POSIX)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
 
   // Wake up thread to lock shared lock
   PING_WORKER(2); // (R2)
@@ -263,22 +266,22 @@ TEST(LibCephFS, ConcurrentLocking) {
   NOT_WAIT_WORKER(6); // (6)
 
   // Release lock ; thread will get it
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
   WAIT_WORKER(6); // (6)
 
   // We no longer have the lock
   ASSERT_EQ(-EWOULDBLOCK,
-           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
   ASSERT_EQ(-EWOULDBLOCK,
-           ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+           ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
 
   // Wake up thread to unlock exclusive lock
   PING_WORKER(3); // (R3)
   WAIT_WORKER(7); // (7)
 
   // We can lock it again
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
 
   // Cleanup
   void *retval = (void*) (uintptr_t) -1;
@@ -301,7 +304,7 @@ TEST(LibCephFS, ThreesomeLocking) {
   ASSERT_GE(fd, 0); 
 
   // Lock
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
 
   // Start locker thread
   pthread_t thread[2];
@@ -317,7 +320,7 @@ TEST(LibCephFS, ThreesomeLocking) {
   NOT_WAIT_WORKER(2); // (2)
 
   // Unlock
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
 
   // Shall have lock
   TWICE(// Synchronization point with thread (failure: thread is dead)
@@ -329,8 +332,8 @@ TEST(LibCephFS, ThreesomeLocking) {
   // Wait for thread to share lock
   TWICE(WAIT_WORKER(4)); // (4)
   ASSERT_EQ(-EWOULDBLOCK,
-           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+           ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
 
   // Wake up thread to unlock shared lock
   TWICE(PING_WORKER(1); // (R1)
@@ -338,7 +341,7 @@ TEST(LibCephFS, ThreesomeLocking) {
 
   // Now we can lock exclusively
   // Upgrade to exclusive lock (as per POSIX)
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
 
   TWICE(  // Wake up thread to lock shared lock
        PING_WORKER(2); // (R2)
@@ -347,14 +350,14 @@ TEST(LibCephFS, ThreesomeLocking) {
        NOT_WAIT_WORKER(6)); // (6)
   
   // Release lock ; thread will get it
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
   TWICE(WAIT_WORKER(6); // (6)
        
        // We no longer have the lock
        ASSERT_EQ(-EWOULDBLOCK,
-                 ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+                 ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
        ASSERT_EQ(-EWOULDBLOCK,
-                 ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+                 ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
        
        // Wake up thread to unlock exclusive lock
        PING_WORKER(3); // (R3)
@@ -362,8 +365,8 @@ TEST(LibCephFS, ThreesomeLocking) {
        );
   
   // We can lock it again
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
-  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+  ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
 
   // Cleanup
   void *retval = (void*) (uintptr_t) -1;
index 179109de25b0bdc5132f048f43c72caf09e40f4f..465bbd8f77246f0362d55b5a16ed8ba5b8fc37a4 100644 (file)
@@ -20,7 +20,9 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
+#ifdef __linux__
 #include <sys/xattr.h>
+#endif
 
 TEST(LibCephFS, MulticlientSimple) {
   struct ceph_mount_info *ca, *cb;
index e019dd25a6443d4d80cb0fa647467e3a529a305f..7b2f7b7694f283df7d7c03534ce0318758642f13 100644 (file)
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
 #include <sys/uio.h>
 #include <libgen.h>
 #include <stdlib.h>
 
 #ifdef __linux__
+#include <sys/xattr.h>
 #include <limits.h>
 #endif
 
+#ifdef __FreeBSD__
+#include <sys/wait.h>
+#endif
+
 
 #include <map>
 #include <vector>
index 9d1fcdede8b9ede7c6c9b8b9361fb2bc24a93702..efcfc6aab5c3fe102c4e20879a7a793fbc741f47 100644 (file)
@@ -27,7 +27,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
 
 #include <stdlib.h>
 #include <semaphore.h>
 
 #ifdef __linux__
 #include <limits.h>
+#include <sys/xattr.h>
+#elif __FreeBSD__
+#include <sys/types.h>
+#include <sys/wait.h>
 #endif
 
 #include "include/ceph_assert.h"
+#include "ceph_pthread_self.h"
 
 // Startup common: create and mount ceph fs
 #define STARTUP_CEPH() do {                            \
@@ -304,7 +308,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   PING_MAIN(1); // (1)
   lock1.l_type = F_WRLCK;
@@ -312,7 +316,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
   PING_MAIN(2); // (2)
 
   lock1.l_type = F_UNLCK;
@@ -320,7 +324,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   PING_MAIN(3); // (3)
 
   lock1.l_type = F_RDLCK;
@@ -328,7 +332,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
   PING_MAIN(4); // (4)
 
   WAIT_MAIN(1); // (R1)
@@ -337,7 +341,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   PING_MAIN(5); // (5)
 
   WAIT_MAIN(2); // (R2)
@@ -346,7 +350,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
   PING_MAIN(6); // (6)
 
   WAIT_MAIN(3); // (R3)
@@ -355,7 +359,7 @@ static void thread_ConcurrentRecordLocking(str_ConcurrentRecordLocking& s) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   PING_MAIN(7); // (7)
 
   ASSERT_EQ(0, ceph_ll_close(cmount, fh));
@@ -398,7 +402,7 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
 
   // Start locker thread
   pthread_t thread;
@@ -418,7 +422,7 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Shall have lock
   // Synchronization point with thread (failure: thread is dead)
@@ -434,13 +438,13 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   lock1.l_type = F_RDLCK;
   lock1.l_whence = SEEK_SET;
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Wake up thread to unlock shared lock
   PING_WORKER(1); // (R1)
@@ -453,7 +457,7 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
 
   // Wake up thread to lock shared lock
   PING_WORKER(2); // (R2)
@@ -467,7 +471,7 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   WAIT_WORKER(6); // (6)
 
   // We no longer have the lock
@@ -476,13 +480,13 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   lock1.l_type = F_RDLCK;
   lock1.l_whence = SEEK_SET;
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Wake up thread to unlock exclusive lock
   PING_WORKER(3); // (R3)
@@ -494,13 +498,13 @@ TEST(LibCephFS, ConcurrentRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   lock1.l_type = F_UNLCK;
   lock1.l_whence = SEEK_SET;
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Cleanup
   void *retval = (void*) (uintptr_t) -1;
@@ -541,7 +545,7 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
 
   // Start locker thread
   pthread_t thread[2];
@@ -562,7 +566,7 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Shall have lock
   TWICE(// Synchronization point with thread (failure: thread is dead)
@@ -578,13 +582,13 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   lock1.l_type = F_RDLCK;
   lock1.l_whence = SEEK_SET;
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Wake up thread to unlock shared lock
   TWICE(PING_WORKER(1); // (R1)
@@ -597,7 +601,7 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
 
   TWICE(  // Wake up thread to lock shared lock
        PING_WORKER(2); // (R2)
@@ -611,7 +615,7 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   TWICE(WAIT_WORKER(6); // (6)
        
        // We no longer have the lock
@@ -620,13 +624,13 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
        lock1.l_start = 0;
        lock1.l_len = 1024;
        lock1.l_pid = getpid();
-       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
        lock1.l_type = F_RDLCK;
        lock1.l_whence = SEEK_SET;
        lock1.l_start = 0;
        lock1.l_len = 1024;
        lock1.l_pid = getpid();
-       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
        
        // Wake up thread to unlock exclusive lock
        PING_WORKER(3); // (R3)
@@ -639,13 +643,13 @@ TEST(LibCephFS, ThreesomeRecordLocking) {
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
   lock1.l_type = F_UNLCK;
   lock1.l_whence = SEEK_SET;
   lock1.l_start = 0;
   lock1.l_len = 1024;
   lock1.l_pid = getpid();
-  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+  ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
 
   // Cleanup
   void *retval = (void*) (uintptr_t) -1;
@@ -1049,13 +1053,13 @@ TEST(LibCephFS, DISABLED_ThreesomeInterProcessRecordLocking) {
        lock1.l_start = 0;
        lock1.l_len = 1024;
        lock1.l_pid = getpid();
-       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
        lock1.l_type = F_RDLCK;
        lock1.l_whence = SEEK_SET;
        lock1.l_start = 0;
        lock1.l_len = 1024;
        lock1.l_pid = getpid();
-       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+       ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
        
        // Wake up process to unlock exclusive lock
        PING_WORKER(4); // (R4)
index 9dd0e1c69ebe25f3db5b84f4797606290766ac35..0b7a967df4d360406240a1b6253649ffad3fde10 100644 (file)
@@ -12,6 +12,7 @@
  *
  */
 
+#include "include/compat.h"
 #include "gtest/gtest.h"
 #include "include/cephfs/libcephfs.h"
 #include "include/stat.h"
@@ -21,7 +22,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
-#include <sys/xattr.h>
 #include <sys/uio.h>
 #include <sys/time.h>
 #include <sys/resource.h>
@@ -30,6 +30,7 @@
 
 #ifdef __linux__
 #include <limits.h>
+#include <sys/xattr.h>
 #endif
 
 #include <map>
index 503f992c06912ef6ff481e5b13b519d711015f5d..a8ca47b8b8fcc87a2e5838b0cdd325700f608fb5 100644 (file)
@@ -226,8 +226,8 @@ TEST(LibRadosAio, RoundTrip3) {
   rados_read_op_read(op2, 0, sizeof(buf2), buf2, NULL, NULL);
   rados_read_op_set_flags(op2, LIBRADOS_OP_FLAG_FADVISE_NOCACHE |
                               LIBRADOS_OP_FLAG_FADVISE_RANDOM);
-  __le32 init_value = -1;
-  __le32 checksum[2];
+  ceph_le32 init_value = init_le32(-1);
+  ceph_le32 checksum[2];
   rados_read_op_checksum(op2, LIBRADOS_CHECKSUM_TYPE_CRC32C,
                         reinterpret_cast<char *>(&init_value),
                         sizeof(init_value), 0, 0, 0,
index f82d5130d5aeb5dcab93f42b2b775d09059d4972..66152990cae20365cbe5eaf976da6122e7f8d666 100644 (file)
@@ -990,6 +990,19 @@ Rados::~Rados() {
   shutdown();
 }
 
+void Rados::from_rados_t(rados_t p, Rados &rados) {
+  if (rados.client != nullptr) {
+    reinterpret_cast<TestRadosClient*>(rados.client)->put();
+    rados.client = nullptr;
+  }
+
+  auto impl = reinterpret_cast<TestRadosClient*>(p);
+  if (impl) {
+    impl->get();
+    rados.client = reinterpret_cast<RadosClient*>(impl);
+  }
+}
+
 AioCompletion *Rados::aio_create_completion(void *cb_arg,
                                             callback_t cb_complete,
                                             callback_t cb_safe) {
index 3988e94bd3105694052904b1ea1a1124bb3e7846..3c3e9db6c1d7cc1bcf762abca9d06c970537fe0b 100644 (file)
@@ -103,6 +103,7 @@ set(unittest_librbd_srcs
   operation/test_mock_SnapshotUnprotectRequest.cc
   operation/test_mock_TrimRequest.cc
   trash/test_mock_MoveRequest.cc
+  trash/test_mock_RemoveRequest.cc
   watcher/test_mock_RewatchRequest.cc
   )
 add_executable(unittest_librbd
index 24b0538e72ab0cf784c394e0d3f15f8f408cfcfb..56f8e6c60ca20ca7c02ec9bbef14c2bc2b53513b 100644 (file)
@@ -1226,6 +1226,7 @@ nbd_open(const char *name, struct rbd_ctx *ctx)
        SubProcess process("rbd-nbd", SubProcess::KEEP, SubProcess::PIPE,
                           SubProcess::KEEP);
        process.add_cmd_arg("map");
+       process.add_cmd_arg("--timeout=600");
        std::string img;
        img.append(pool);
        img.append("/");
index 131b1d801273ac9f58f01c394b8e94c69344290f..65a20db9dbee0962373c1d3f11d96eec6cb01786 100644 (file)
@@ -203,9 +203,9 @@ public:
 };
 
 TEST_F(TestMockImagePreRemoveRequest, Success) {
-  MockExclusiveLock *mock_exclusive_lock = new MockExclusiveLock();
+  MockExclusiveLock mock_exclusive_lock;
   if (m_test_imctx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
-    m_mock_imctx->exclusive_lock = mock_exclusive_lock;
+    m_mock_imctx->exclusive_lock = &mock_exclusive_lock;
   }
 
   expect_op_work_queue(*m_mock_imctx);
@@ -213,7 +213,8 @@ TEST_F(TestMockImagePreRemoveRequest, Success) {
 
   InSequence seq;
   expect_set_journal_policy(*m_mock_imctx);
-  expect_shut_down_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock, 0);
+  expect_try_acquire_exclusive_lock(*m_mock_imctx, mock_exclusive_lock, 0);
+  expect_is_exclusive_lock_owner(*m_mock_imctx, mock_exclusive_lock, true);
 
   MockListWatchersRequest mock_list_watchers_request;
   expect_list_image_watchers(*m_mock_imctx, mock_list_watchers_request, 0);
@@ -221,7 +222,7 @@ TEST_F(TestMockImagePreRemoveRequest, Success) {
   expect_get_group(*m_mock_imctx, 0);
 
   C_SaferCond ctx;
-  auto req = MockPreRemoveRequest::create(m_mock_imctx, true, &ctx);
+  auto req = MockPreRemoveRequest::create(m_mock_imctx, false, &ctx);
   req->send();
 
   ASSERT_EQ(0, ctx.wait());
@@ -239,43 +240,40 @@ TEST_F(TestMockImagePreRemoveRequest, OperationsDisabled) {
   ASSERT_EQ(-EROFS, ctx.wait());
 }
 
-TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockShutDownFailed) {
+TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockTryAcquireFailed) {
   REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
 
-  MockExclusiveLock *mock_exclusive_lock = new MockExclusiveLock();
-  if (m_test_imctx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
-    m_mock_imctx->exclusive_lock = mock_exclusive_lock;
-  }
+  MockExclusiveLock mock_exclusive_lock;
+  m_mock_imctx->exclusive_lock = &mock_exclusive_lock;
 
   expect_op_work_queue(*m_mock_imctx);
   expect_test_features(*m_mock_imctx);
 
   InSequence seq;
   expect_set_journal_policy(*m_mock_imctx);
-  expect_shut_down_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock, -EINVAL);
+  expect_try_acquire_exclusive_lock(*m_mock_imctx, mock_exclusive_lock,
+                                    -EINVAL);
 
   C_SaferCond ctx;
-  auto req = MockPreRemoveRequest::create(m_mock_imctx, true, &ctx);
+  auto req = MockPreRemoveRequest::create(m_mock_imctx, false, &ctx);
   req->send();
 
-  ASSERT_EQ(-EINVAL, ctx.wait());
+  ASSERT_EQ(-EBUSY, ctx.wait());
 }
 
-TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockTryAcquireFailed) {
+TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockTryAcquireNotLockOwner) {
   REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
 
   MockExclusiveLock mock_exclusive_lock;
-  if (m_test_imctx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) {
-    m_mock_imctx->exclusive_lock = &mock_exclusive_lock;
-  }
+  m_mock_imctx->exclusive_lock = &mock_exclusive_lock;
 
   expect_op_work_queue(*m_mock_imctx);
   expect_test_features(*m_mock_imctx);
 
   InSequence seq;
   expect_set_journal_policy(*m_mock_imctx);
-  expect_try_acquire_exclusive_lock(*m_mock_imctx, mock_exclusive_lock,
-                                    -EINVAL);
+  expect_try_acquire_exclusive_lock(*m_mock_imctx, mock_exclusive_lock, 0);
+  expect_is_exclusive_lock_owner(*m_mock_imctx, mock_exclusive_lock, false);
 
   C_SaferCond ctx;
   auto req = MockPreRemoveRequest::create(m_mock_imctx, false, &ctx);
@@ -284,6 +282,54 @@ TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockTryAcquireFailed) {
   ASSERT_EQ(-EBUSY, ctx.wait());
 }
 
+TEST_F(TestMockImagePreRemoveRequest, Force) {
+  REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
+
+  MockExclusiveLock *mock_exclusive_lock = new MockExclusiveLock();
+  m_mock_imctx->exclusive_lock = mock_exclusive_lock;
+
+  expect_op_work_queue(*m_mock_imctx);
+  expect_test_features(*m_mock_imctx);
+
+  InSequence seq;
+  expect_set_journal_policy(*m_mock_imctx);
+  expect_try_acquire_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock,
+                                    -EINVAL);
+  expect_shut_down_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock, 0);
+
+  MockListWatchersRequest mock_list_watchers_request;
+  expect_list_image_watchers(*m_mock_imctx, mock_list_watchers_request, 0);
+
+  expect_get_group(*m_mock_imctx, 0);
+
+  C_SaferCond ctx;
+  auto req = MockPreRemoveRequest::create(m_mock_imctx, true, &ctx);
+  req->send();
+
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImagePreRemoveRequest, ExclusiveLockShutDownFailed) {
+  REQUIRE_FEATURE(RBD_FEATURE_EXCLUSIVE_LOCK);
+
+  MockExclusiveLock *mock_exclusive_lock = new MockExclusiveLock();
+  m_mock_imctx->exclusive_lock = mock_exclusive_lock;
+
+  expect_op_work_queue(*m_mock_imctx);
+  expect_test_features(*m_mock_imctx);
+
+  InSequence seq;
+  expect_set_journal_policy(*m_mock_imctx);
+  expect_try_acquire_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock, -EINVAL);
+  expect_shut_down_exclusive_lock(*m_mock_imctx, *mock_exclusive_lock, -EINVAL);
+
+  C_SaferCond ctx;
+  auto req = MockPreRemoveRequest::create(m_mock_imctx, true, &ctx);
+  req->send();
+
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
 TEST_F(TestMockImagePreRemoveRequest, Migration) {
   m_mock_imctx->features |= RBD_FEATURE_MIGRATING;
 
index 5ce1feda777d070413bf9a3148b6929cb8c3fd03..a920948fb11e4d9d41c97bf296246eedbc8a06b2 100644 (file)
@@ -378,7 +378,7 @@ public:
   }
 
   void expect_init_layout(MockRefreshImageCtx &mock_image_ctx) {
-    EXPECT_CALL(mock_image_ctx, init_layout());
+    EXPECT_CALL(mock_image_ctx, init_layout(_));
   }
 
   void expect_test_features(MockRefreshImageCtx &mock_image_ctx) {
index 4c45011d3ce54aa620f09c107ff2103f2802fecb..5c0db6a8fc164c9968e0a4c6216bc577298b484d 100644 (file)
@@ -139,7 +139,7 @@ struct MockImageCtx {
     ctx.wait();
   }
 
-  MOCK_METHOD0(init_layout, void());
+  MOCK_METHOD1(init_layout, void(int64_t));
 
   MOCK_CONST_METHOD1(get_object_name, std::string(uint64_t));
   MOCK_CONST_METHOD0(get_object_size, uint64_t());
index 5f95429acd2ed9dfa01521e41bc017535ac1d904..5954a461e7edef32f9d314b456cf06593c257bf3 100644 (file)
@@ -46,11 +46,12 @@ public:
       entity_name_t entity2(entity_name_t::CLIENT(2));
 
       cls_lock_get_info_reply reply;
-      reply.lockers = decltype(reply.lockers){
-        {rados::cls::lock::locker_id_t(entity1, "cookie1"),
-         rados::cls::lock::locker_info_t()},
-        {rados::cls::lock::locker_id_t(entity2, "cookie2"),
-         rados::cls::lock::locker_info_t()}};
+      reply.lockers.emplace(
+        rados::cls::lock::locker_id_t(entity1, "cookie1"),
+        rados::cls::lock::locker_info_t());
+      reply.lockers.emplace(
+        rados::cls::lock::locker_id_t(entity2, "cookie2"),
+        rados::cls::lock::locker_info_t());
 
       bufferlist bl;
       encode(reply, bl, CEPH_FEATURES_SUPPORTED_DEFAULT);
index 0202ed278b9445d4c1d941537ec9729765966818..b477082796a342191499fb0abb4f396647277991 100644 (file)
@@ -89,4 +89,20 @@ TEST_F(TestTrash, UserRemovingSource) {
   ASSERT_EQ(expected_images, images);
 }
 
+TEST_F(TestTrash, RestoreMirroringSource) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::RBD rbd;
+  librbd::Image image;
+  std::string image_id;
+  ASSERT_EQ(0, rbd.open(m_ioctx, image, m_image_name.c_str()));
+  ASSERT_EQ(0, image.get_id(&image_id));
+  ASSERT_EQ(0, image.close());
+
+  ASSERT_EQ(0, api::Trash<>::move(m_ioctx, RBD_TRASH_IMAGE_SOURCE_MIRRORING,
+                                  m_image_name, 0));
+  ASSERT_EQ(0, rbd.trash_restore(m_ioctx, image_id.c_str(),
+                                 m_image_name.c_str()));
+}
+
 } // namespace librbd
index e95be0b8a9f20504cfe8820e4975173b80876720..0caf9ffff431de59f49c353015f4e60937dbe35b 100644 (file)
@@ -1683,3 +1683,72 @@ TEST_F(TestInternal, SparsifyClone) {
   ASSERT_EQ(0, ictx->data_ctx.stat(oid, &size, NULL));
   ASSERT_EQ(0, ictx->data_ctx.read(oid, read_bl, 4096, 0));
 }
+
+TEST_F(TestInternal, MissingDataPool) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+  ASSERT_EQ(0, snap_create(*ictx, "snap1"));
+  std::string header_oid = ictx->header_oid;
+  close_image(ictx);
+
+  // emulate non-existent data pool
+  int64_t pool_id = 1234;
+  std::string pool_name;
+  int r;
+  while ((r = _rados.pool_reverse_lookup(pool_id, &pool_name)) == 0) {
+    pool_id++;
+  }
+  ASSERT_EQ(r, -ENOENT);
+  bufferlist bl;
+  using ceph::encode;
+  encode(pool_id, bl);
+  ASSERT_EQ(0, m_ioctx.omap_set(header_oid, {{"data_pool_id", bl}}));
+
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  ASSERT_FALSE(ictx->data_ctx.is_valid());
+  ASSERT_EQ(pool_id, librbd::api::Image<>::get_data_pool_id(ictx));
+
+  librbd::image_info_t info;
+  ASSERT_EQ(0, librbd::info(ictx, info, sizeof(info)));
+
+  vector<librbd::snap_info_t> snaps;
+  EXPECT_EQ(0, librbd::snap_list(ictx, snaps));
+  EXPECT_EQ(1U, snaps.size());
+  EXPECT_EQ("snap1", snaps[0].name);
+
+  bufferptr read_ptr(256);
+  bufferlist read_bl;
+  read_bl.push_back(read_ptr);
+  librbd::io::ReadResult read_result{&read_bl};
+  ASSERT_EQ(-ENODEV,
+            ictx->io_work_queue->read(0, 256,
+                                      librbd::io::ReadResult{read_result}, 0));
+  ASSERT_EQ(-ENODEV,
+            ictx->io_work_queue->write(0, bl.length(), bufferlist{bl}, 0));
+  ASSERT_EQ(-ENODEV, ictx->io_work_queue->discard(0, 1, 256));
+  ASSERT_EQ(-ENODEV,
+            ictx->io_work_queue->writesame(0, bl.length(), bufferlist{bl}, 0));
+  uint64_t mismatch_off;
+  ASSERT_EQ(-ENODEV,
+            ictx->io_work_queue->compare_and_write(0, bl.length(),
+                                                   bufferlist{bl},
+                                                   bufferlist{bl},
+                                                   &mismatch_off, 0));
+  ASSERT_EQ(-ENODEV, ictx->io_work_queue->flush());
+
+  ASSERT_EQ(-ENODEV, snap_create(*ictx, "snap2"));
+  ASSERT_EQ(0, ictx->operations->snap_remove(cls::rbd::UserSnapshotNamespace(),
+                                             "snap1"));
+
+  librbd::NoOpProgressContext no_op;
+  ASSERT_EQ(-ENODEV, ictx->operations->resize(0, true, no_op));
+
+  close_image(ictx);
+
+  ASSERT_EQ(0, librbd::api::Image<>::remove(m_ioctx, m_image_name, no_op));
+
+  ASSERT_EQ(0, create_image_pp(m_rbd, m_ioctx, m_image_name, m_image_size));
+}
index 1aa72da51774d7ed1a24a432a3886243a96102fa..73c5479b4ea3ebc4cd50bfb00cca380a2ddd671f 100644 (file)
@@ -911,3 +911,43 @@ TEST_F(TestMirroring, AioGetStatus) {
     ASSERT_EQ(0, status.last_update);
   }
 }
+
+TEST_F(TestMirroring, SiteName) {
+  REQUIRE(!is_librados_test_stub(_rados));
+
+  const std::string expected_site_name("us-east-1a");
+  ASSERT_EQ(0, m_rbd.mirror_site_name_set(_rados, expected_site_name));
+
+  std::string site_name;
+  ASSERT_EQ(0, m_rbd.mirror_site_name_get(_rados, &site_name));
+  ASSERT_EQ(expected_site_name, site_name);
+
+  ASSERT_EQ(0, m_rbd.mirror_site_name_set(_rados, ""));
+
+  std::string fsid;
+  ASSERT_EQ(0, _rados.cluster_fsid(&fsid));
+  ASSERT_EQ(0, m_rbd.mirror_site_name_get(_rados, &site_name));
+  ASSERT_EQ(fsid, site_name);
+}
+
+TEST_F(TestMirroring, Bootstrap) {
+  REQUIRE(!is_librados_test_stub(_rados));
+
+  std::string token_b64;
+  ASSERT_EQ(0, m_rbd.mirror_mode_set(m_ioctx, RBD_MIRROR_MODE_DISABLED));
+  ASSERT_EQ(-EINVAL, m_rbd.mirror_peer_bootstrap_create(m_ioctx, &token_b64));
+
+  ASSERT_EQ(0, m_rbd.mirror_mode_set(m_ioctx, RBD_MIRROR_MODE_POOL));
+  ASSERT_EQ(0, m_rbd.mirror_peer_bootstrap_create(m_ioctx, &token_b64));
+
+  bufferlist token_b64_bl;
+  token_b64_bl.append(token_b64);
+
+  bufferlist token_bl;
+  token_bl.decode_base64(token_b64_bl);
+
+  // cannot import token into same cluster
+  ASSERT_EQ(-EINVAL,
+            m_rbd.mirror_peer_bootstrap_import(
+              m_ioctx, RBD_MIRROR_PEER_DIRECTION_RX, token_b64));
+}
diff --git a/ceph/src/test/librbd/trash/test_mock_RemoveRequest.cc b/ceph/src/test/librbd/trash/test_mock_RemoveRequest.cc
new file mode 100644 (file)
index 0000000..407855a
--- /dev/null
@@ -0,0 +1,231 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "test/librbd/test_mock_fixture.h"
+#include "test/librbd/test_support.h"
+#include "test/librbd/mock/MockExclusiveLock.h"
+#include "test/librbd/mock/MockImageCtx.h"
+#include "test/librbd/mock/MockImageState.h"
+#include "test/librados_test_stub/MockTestMemIoCtxImpl.h"
+#include "test/librados_test_stub/MockTestMemRadosClient.h"
+#include "include/rbd/librbd.hpp"
+#include "librbd/Utils.h"
+#include "librbd/image/TypeTraits.h"
+#include "librbd/image/RemoveRequest.h"
+#include "librbd/internal.h"
+#include "librbd/trash/RemoveRequest.h"
+
+namespace librbd {
+namespace {
+
+struct MockTestImageCtx : public MockImageCtx {
+  MockTestImageCtx(ImageCtx &image_ctx) : MockImageCtx(image_ctx) {
+  }
+};
+
+} // anonymous namespace
+
+namespace image {
+
+// template <>
+// struct TypeTraits<MockTestImageCtx> {
+//   typedef librbd::MockContextWQ ContextWQ;
+// };
+
+template <>
+class RemoveRequest<MockTestImageCtx> {
+private:
+  typedef ::librbd::image::TypeTraits<MockTestImageCtx> TypeTraits;
+  typedef typename TypeTraits::ContextWQ ContextWQ;
+public:
+  static RemoveRequest *s_instance;
+  static RemoveRequest *create(librados::IoCtx &ioctx,
+                               const std::string &image_name,
+                               const std::string &image_id,
+                               bool force, bool from_trash_remove,
+                               ProgressContext &prog_ctx,
+                               ContextWQ *op_work_queue,
+                               Context *on_finish) {
+    ceph_assert(s_instance != nullptr);
+    s_instance->on_finish = on_finish;
+    return s_instance;
+  }
+
+  static RemoveRequest *create(librados::IoCtx &ioctx, MockTestImageCtx *image_ctx,
+                               bool force, bool from_trash_remove,
+                               ProgressContext &prog_ctx,
+                               ContextWQ *op_work_queue,
+                               Context *on_finish) {
+    ceph_assert(s_instance != nullptr);
+    s_instance->on_finish = on_finish;
+    return s_instance;
+  }
+
+  Context *on_finish = nullptr;
+
+  RemoveRequest() {
+    s_instance = this;
+  }
+
+  MOCK_METHOD0(send, void());
+};
+
+RemoveRequest<MockTestImageCtx> *RemoveRequest<MockTestImageCtx>::s_instance;
+
+} // namespace image
+} // namespace librbd
+
+#include "librbd/trash/RemoveRequest.cc"
+
+namespace librbd {
+namespace trash {
+
+using ::testing::_;
+using ::testing::InSequence;
+using ::testing::Invoke;
+using ::testing::Return;
+using ::testing::StrEq;
+
+struct TestMockTrashRemoveRequest : public TestMockFixture {
+  typedef RemoveRequest<librbd::MockTestImageCtx> MockRemoveRequest;
+  typedef image::RemoveRequest<librbd::MockTestImageCtx> MockImageRemoveRequest;
+
+  NoOpProgressContext m_prog_ctx;
+
+  void expect_set_state(MockTestImageCtx& mock_image_ctx,
+                        cls::rbd::TrashImageState trash_set_state,
+                        cls::rbd::TrashImageState trash_expect_state,
+                        int r) {
+    bufferlist in_bl;
+    encode(mock_image_ctx.id, in_bl);
+    encode(trash_set_state, in_bl);
+    encode(trash_expect_state, in_bl);
+
+    EXPECT_CALL(get_mock_io_ctx(mock_image_ctx.md_ctx),
+                exec(StrEq("rbd_trash"), _, StrEq("rbd"), StrEq("trash_state_set"),
+                     ContentsEqual(in_bl), _, _))
+      .WillOnce(Return(r));
+  }
+
+  void expect_set_deleting_state(MockTestImageCtx& mock_image_ctx, int r) {
+    expect_set_state(mock_image_ctx, cls::rbd::TRASH_IMAGE_STATE_REMOVING,
+                     cls::rbd::TRASH_IMAGE_STATE_NORMAL, r);
+  }
+
+  void expect_restore_normal_state(MockTestImageCtx& mock_image_ctx, int r) {
+    expect_set_state(mock_image_ctx, cls::rbd::TRASH_IMAGE_STATE_NORMAL,
+                     cls::rbd::TRASH_IMAGE_STATE_REMOVING, r);
+  }
+
+  void expect_close_image(MockTestImageCtx &mock_image_ctx, int r) {
+    EXPECT_CALL(*mock_image_ctx.state, close(_))
+      .WillOnce(Invoke([r](Context *on_finish) {
+                  on_finish->complete(r);
+                }));
+    EXPECT_CALL(mock_image_ctx, destroy());
+  }
+
+  void expect_remove_image(MockImageRemoveRequest& mock_image_remove_request,
+                           int r) {
+    EXPECT_CALL(mock_image_remove_request, send())
+      .WillOnce(Invoke([&mock_image_remove_request, r]() {
+          mock_image_remove_request.on_finish->complete(r);
+        }));
+  }
+
+  void expect_remove_trash_entry(MockTestImageCtx& mock_image_ctx,
+                                 int r) {
+    bufferlist in_bl;
+    encode(mock_image_ctx.id, in_bl);
+
+    EXPECT_CALL(get_mock_io_ctx(mock_image_ctx.md_ctx),
+                exec(StrEq("rbd_trash"), _, StrEq("rbd"), StrEq("trash_remove"),
+                     ContentsEqual(in_bl), _, _))
+      .WillOnce(Return(r));
+  }
+};
+
+TEST_F(TestMockTrashRemoveRequest, Success) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  MockImageRemoveRequest mock_image_remove_request;
+
+  InSequence seq;
+  expect_set_deleting_state(mock_image_ctx, 0);
+  expect_remove_image(mock_image_remove_request, 0);
+  expect_remove_trash_entry(mock_image_ctx, 0);
+
+  C_SaferCond ctx;
+  auto req = MockRemoveRequest::create(mock_image_ctx.md_ctx, &mock_image_ctx,
+                                       nullptr, false, m_prog_ctx, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+TEST_F(TestMockTrashRemoveRequest, SetDeletingStateError) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  MockImageRemoveRequest mock_image_remove_request;
+
+  InSequence seq;
+  expect_set_deleting_state(mock_image_ctx, -EINVAL);
+  expect_close_image(mock_image_ctx, 0);
+
+  C_SaferCond ctx;
+  auto req = MockRemoveRequest::create(mock_image_ctx.md_ctx, &mock_image_ctx,
+                                       nullptr, false, m_prog_ctx, &ctx);
+  req->send();
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
+TEST_F(TestMockTrashRemoveRequest, RemoveImageError) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  MockImageRemoveRequest mock_image_remove_request;
+
+  InSequence seq;
+  expect_set_deleting_state(mock_image_ctx, 0);
+  expect_remove_image(mock_image_remove_request, -EINVAL);
+  expect_restore_normal_state(mock_image_ctx, 0);
+
+  C_SaferCond ctx;
+  auto req = MockRemoveRequest::create(mock_image_ctx.md_ctx, &mock_image_ctx,
+                                       nullptr, false, m_prog_ctx, &ctx);
+  req->send();
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
+TEST_F(TestMockTrashRemoveRequest, RemoveTrashEntryError) {
+  REQUIRE_FORMAT_V2();
+
+  librbd::ImageCtx *ictx;
+  ASSERT_EQ(0, open_image(m_image_name, &ictx));
+
+  MockTestImageCtx mock_image_ctx(*ictx);
+  MockImageRemoveRequest mock_image_remove_request;
+
+  InSequence seq;
+  expect_set_deleting_state(mock_image_ctx, 0);
+  expect_remove_image(mock_image_remove_request, 0);
+  expect_remove_trash_entry(mock_image_ctx, -EINVAL);
+
+  C_SaferCond ctx;
+  auto req = MockRemoveRequest::create(mock_image_ctx.md_ctx, &mock_image_ctx,
+                                       nullptr, false, m_prog_ctx, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+} // namespace trash
+} // namespace librbd
index 3689a0529033e75b46375e914075f68288dfa1a2..fea8a061191681bd20ffb49d67f6dca465c6dcf7 100644 (file)
@@ -72,6 +72,7 @@ TEST(LibRGW, GETATTR_ROOT) {
 
 extern "C" {
   static bool r1_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat* st, uint32_t st_mask,
                    uint32_t flags) {
     // don't need arg--it would point to fids1
     fids1.push_back(fid_type(name, offset, nullptr /* handle */));
@@ -110,7 +111,7 @@ TEST(LibRGW, LOOKUP_BUCKETS) {
     // auto& obj_vector = get<1>(fid_row);
     struct rgw_file_handle *rgw_fh = nullptr;
     ASSERT_EQ(0, rgw_lookup(fs, fs->root_fh, get<0>(fid).c_str(), &rgw_fh,
-                           0 /* flags */));
+                           nullptr /* stat */, 0 /* mask */, 0 /* flags */));
     get<2>(fid) = rgw_fh;
     ASSERT_NE(get<2>(fid), nullptr);
   }
@@ -135,6 +136,7 @@ TEST(LibRGW, GETATTR_BUCKETS) {
 
 extern "C" {
   static bool r2_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat* st, uint32_t st_mask,
                    uint32_t flags) {
     std::vector<fid_type>& obj_vector = *(static_cast<std::vector<fid_type>*>(arg));
     obj_vector.push_back(fid_type(name, offset, nullptr));
@@ -188,7 +190,7 @@ TEST(LibRGW, GETATTR_OBJECTS) {
        struct rgw_file_handle *obj_fh = nullptr;
        std::string object_name = get<0>(obj);
        ret = rgw_lookup(fs, bucket_fh, get<0>(obj).c_str(), &obj_fh,
-                       0 /* flags */);
+                        nullptr /* stat */, 0 /* mask */, 0 /* flags */);
        ASSERT_EQ(ret, 0);
        get<2>(obj) = obj_fh; // stash obj_fh for cleanup
        ASSERT_NE(get<2>(obj), nullptr);
index 859cd14074dc2a4efe10967ad1b15d003af76e81..ed51610cecf8fa0e7bf8330fc252bc5d77136e6e 100644 (file)
@@ -199,13 +199,13 @@ TEST(LibRGW, CREATE_BUCKET) {
 
 TEST(LibRGW, LOOKUP_BUCKET) {
   int ret = rgw_lookup(fs, fs->root_fh, bucket_name.c_str(), &bucket_fh,
-                     RGW_LOOKUP_FLAG_NONE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_NONE);
   ASSERT_EQ(ret, 0);
 }
 
 TEST(LibRGW, LOOKUP_OBJECT) {
   int ret = rgw_lookup(fs, bucket_fh, object_name.c_str(), &object_fh,
-                      RGW_LOOKUP_FLAG_CREATE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
   ASSERT_EQ(ret, 0);
 }
 
index 80a165418a4e4eea3acdd1d48a33c28ed9e6587e..1ad41cfd30f2cadd3f5f1993b3afa2c95a729af8 100644 (file)
@@ -187,12 +187,13 @@ TEST(LibRGW, MOUNT) {
 
 TEST(LibRGW, LOOKUP_BUCKET) {
   int ret = rgw_lookup(fs, fs->root_fh, bucket_name.c_str(), &bucket_fh,
-                      RGW_LOOKUP_FLAG_NONE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_NONE);
   ASSERT_EQ(ret, 0);
 }
 
 extern "C" {
   static bool r2_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat *st, uint32_t st_mask,
                    uint32_t flags) {
     // don't need arg--it would point to fids
     fids.push_back(fid_type(name, offset, nullptr));
@@ -222,7 +223,7 @@ TEST(LibRGW, LIST_OBJECTS) {
 TEST(LibRGW, LOOKUP_OBJECT) {
   if (do_get || do_stat || do_put || do_bulk || do_readv || do_writev) {
     int ret = rgw_lookup(fs, bucket_fh, object_name.c_str(), &object_fh,
-                       RGW_LOOKUP_FLAG_CREATE);
+                        nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
     ASSERT_EQ(ret, 0);
   }
 }
index 105ab90ee2a25c89ceb0c4e7bd3d43d14bc50926..9aaa6b3256b52ece726f4636a3e4e8f7f419954a 100644 (file)
@@ -216,7 +216,7 @@ TEST(LibRGW, MARKER1_SETUP_BUCKET) {
   st.st_mode = 755;
 
   (void) rgw_lookup(fs, fs->root_fh, bucket_name.c_str(), &bucket_fh,
-                   RGW_LOOKUP_FLAG_NONE);
+                   nullptr, 0, RGW_LOOKUP_FLAG_NONE);
   if (! bucket_fh) {
     if (do_create) {
       struct stat st;
@@ -234,7 +234,7 @@ TEST(LibRGW, MARKER1_SETUP_BUCKET) {
   ASSERT_NE(bucket_fh, nullptr);
 
   (void) rgw_lookup(fs, bucket_fh, marker_dir.c_str(), &marker_fh,
-                   RGW_LOOKUP_FLAG_NONE);
+                   nullptr, 0, RGW_LOOKUP_FLAG_NONE);
   if (! marker_fh) {
     if (do_create) {
       ret = rgw_mkdir(fs, bucket_fh, marker_dir.c_str(), &st, create_mask,
@@ -259,7 +259,7 @@ TEST(LibRGW, MARKER1_SETUP_OBJECTS)
       obj_rec obj{object_name, nullptr, marker_fh, nullptr};
       // lookup object--all operations are by handle
       ret = rgw_lookup(fs, marker_fh, obj.name.c_str(), &obj.fh,
-                      RGW_LOOKUP_FLAG_CREATE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
       ASSERT_EQ(ret, 0);
       obj.rgw_fh = get_rgwfh(obj.fh);
       // open object--open transaction
@@ -285,6 +285,7 @@ TEST(LibRGW, MARKER1_SETUP_OBJECTS)
 
 extern "C" {
   static bool r2_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat* st, uint32_t st_mask,
                    uint32_t flags) {
     dirent_vec& dvec =
       *(static_cast<dirent_vec*>(arg));
index 38a76053e146e578e8a4d904477e0c3f922bf18d..9e023c28af0e764f91175e3a89d91e0ab3dd0f08 100644 (file)
@@ -201,7 +201,7 @@ TEST(LibRGW, SETUP_HIER1)
 {
   if (do_hier1) {
     (void) rgw_lookup(fs, fs->root_fh, bucket_name.c_str(), &bucket_fh,
-                     RGW_LOOKUP_FLAG_NONE);
+                     nullptr, 0, RGW_LOOKUP_FLAG_NONE);
     if (! bucket_fh) {
       if (do_create) {
        struct stat st;
@@ -265,7 +265,7 @@ TEST(LibRGW, SETUP_DIRS1) {
     dirs1_b.parent_fh = fs->root_fh;
 
     (void) rgw_lookup(fs, dirs1_b.parent_fh, dirs1_bucket_name.c_str(),
-                     &dirs1_b.fh, RGW_LOOKUP_FLAG_NONE);
+                     &dirs1_b.fh, nullptr, 0, RGW_LOOKUP_FLAG_NONE);
 
     if (! dirs1_b.fh) {
       if (do_create) {
@@ -289,7 +289,7 @@ TEST(LibRGW, SETUP_DIRS1) {
       ovec.clear();
 
       (void) rgw_lookup(fs, dir.parent_fh, dir.name.c_str(), &dir.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
       if (! dir.fh) {
        if (do_create) {
          rc = rgw_mkdir(fs, dir.parent_fh, dir.name.c_str(), &st, create_mask,
@@ -311,7 +311,7 @@ TEST(LibRGW, SETUP_DIRS1) {
        obj_rec sdir{sdname, nullptr, dir.fh, nullptr};
 
        (void) rgw_lookup(fs, sdir.parent_fh, sdir.name.c_str(), &sdir.fh,
-                         RGW_LOOKUP_FLAG_NONE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_NONE);
 
        if (! sdir.fh) {
          if (do_create) {
@@ -334,13 +334,13 @@ TEST(LibRGW, SETUP_DIRS1) {
        obj_rec sf{sfname, nullptr, dir.fh, nullptr};
 
        (void) rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                         RGW_LOOKUP_FLAG_NONE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_NONE);
 
        if (! sf.fh) {
          if (do_create) {
            /* make a new file object (the hard way) */
            rc = rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                           RGW_LOOKUP_FLAG_CREATE);
+                           nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
            ASSERT_EQ(rc, 0);
            sf.sync();
            ASSERT_TRUE(sf.rgw_fh->is_file());
@@ -396,7 +396,7 @@ TEST(LibRGW, SETATTR) {
 
       /* dir_0 MUST exist and MUST be resident */
       (void) rgw_lookup(fs, dir.parent_fh, dir.name.c_str(), &dir.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
 
       ASSERT_NE(dir.fh, nullptr);
       dir.sync();
@@ -408,12 +408,12 @@ TEST(LibRGW, SETATTR) {
       obj_rec sf{sfname, nullptr, dir.fh, nullptr};
 
       (void) rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
 
       if (! sf.fh) {
        /* make a new file object (the hard way) */
        rc = rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                       RGW_LOOKUP_FLAG_CREATE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
        ASSERT_EQ(rc, 0);
        sf.sync();
        ASSERT_TRUE(sf.rgw_fh->is_file());
@@ -457,7 +457,7 @@ TEST(LibRGW, SETATTR) {
 
       /* revalidate -- expect magic uid and gid */
       (void) rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
       sf.sync();
       ASSERT_NE(sf.fh, nullptr);
 
@@ -495,7 +495,7 @@ TEST(LibRGW, RGW_CREATE_DIRS1) {
        std::string sfname{"sfile_" + to_string(n_dirs1_objs)};
        obj_rec sf{sfname, nullptr, dir.fh, nullptr};
        (void) rgw_lookup(fs, sf.parent_fh, sf.name.c_str(), &sf.fh,
-                         RGW_LOOKUP_FLAG_NONE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_NONE);
        if (! sf.fh) {
          rc = rgw_create(fs, sf.parent_fh, sf.name.c_str(), &st, create_mask,
                          &sf.fh, 0 /* posix flags */, RGW_CREATE_FLAG_NONE);
@@ -523,7 +523,7 @@ TEST(LibRGW, RGW_SETUP_RENAME1) {
       std::string bname{"brename_" + to_string(b_ix)};
       obj_rec brec{bname, nullptr, nullptr, nullptr};
       (void) rgw_lookup(fs, fs->root_fh, brec.name.c_str(), &brec.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
       if (! brec.fh) {
        if (do_create) {
          struct stat st;
@@ -542,7 +542,7 @@ TEST(LibRGW, RGW_SETUP_RENAME1) {
        rfname += to_string(f_ix);
        obj_rec rf{rfname, nullptr, brec.fh, nullptr};
        (void) rgw_lookup(fs, rf.parent_fh, rf.name.c_str(), &rf.fh,
-                         RGW_LOOKUP_FLAG_NONE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_NONE);
        if (! rf.fh) {
          rc = rgw_create(fs, rf.parent_fh, rf.name.c_str(), &st, create_mask,
                          &rf.fh, 0 /* posix flags */, RGW_CREATE_FLAG_NONE);
@@ -729,7 +729,7 @@ TEST(LibRGW, READF_DIRS1) {
       obj_rec fobj{readf_name, nullptr, dirs1_b.fh, nullptr};
 
       int rc = rgw_lookup(fs, dirs1_b.fh, fobj.name.c_str(), &fobj.fh,
-                         RGW_LOOKUP_FLAG_NONE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_NONE);
       ASSERT_EQ(rc, 0);
       ASSERT_NE(fobj.fh, nullptr);
       fobj.sync();
@@ -768,12 +768,12 @@ TEST(LibRGW, WRITEF_DIRS1) {
       obj_rec fobj{writef_name, nullptr, dirs1_b.fh, nullptr};
 
       (void) rgw_lookup(fs, fobj.parent_fh, fobj.name.c_str(), &fobj.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
       if (! fobj.fh) {
        if (do_create) {
          /* make a new file object (the hard way) */
          rc = rgw_lookup(fs, fobj.parent_fh, fobj.name.c_str(), &fobj.fh,
-                         RGW_LOOKUP_FLAG_CREATE);
+                         nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
          ASSERT_EQ(rc, 0);
        }
       }
@@ -853,6 +853,7 @@ TEST(LibRGW, RELEASE_DIRS1) {
 
 extern "C" {
   static bool r1_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat* st, uint32_t st_mask,
                    uint32_t flags) {
     struct rgw_file_handle* parent_fh
       = static_cast<struct rgw_file_handle*>(arg);
@@ -892,7 +893,7 @@ TEST(LibRGW, HIER1) {
          << " elt.name=" << elt.name
          << dendl;
        rc = rgw_lookup(fs, parent_fh, elt.name.c_str(), &elt.fh,
-                       RGW_LOOKUP_FLAG_NONE);
+                       nullptr, 0, RGW_LOOKUP_FLAG_NONE);
        ASSERT_EQ(rc, 0);
        // XXXX
        RGWFileHandle* efh = get_rgwfh(elt.fh);
@@ -965,7 +966,7 @@ TEST(LibRGW, MARKER1_SETUP_BUCKET) {
                      &marker_fh, RGW_MKDIR_FLAG_NONE);
     } else {
       ret = rgw_lookup(fs, bucket_fh, marker_dir.c_str(), &marker_fh,
-                      RGW_LOOKUP_FLAG_NONE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_NONE);
     }
     ASSERT_EQ(ret, 0);
   }
@@ -984,7 +985,7 @@ TEST(LibRGW, MARKER1_SETUP_OBJECTS)
       obj_rec obj{object_name, nullptr, marker_fh, nullptr};
       // lookup object--all operations are by handle
       ret = rgw_lookup(fs, marker_fh, obj.name.c_str(), &obj.fh,
-                      RGW_LOOKUP_FLAG_CREATE);
+                      nullptr, 0, RGW_LOOKUP_FLAG_CREATE);
       ASSERT_EQ(ret, 0);
       obj.rgw_fh = get_rgwfh(obj.fh);
       // open object--open transaction
@@ -1010,6 +1011,7 @@ TEST(LibRGW, MARKER1_SETUP_OBJECTS)
 
 extern "C" {
   static bool r2_cb(const char* name, void *arg, uint64_t offset,
+                   struct stat* st, uint32_t st_mask,
                    uint32_t flags) {
     dirent_vec& dvec =
       *(static_cast<dirent_vec*>(arg));
index 53b57dfe4d27d8b248a0b7a92490db9e616db765..b712e95be7d478897455d2119eea7f209a1fc86b 100644 (file)
@@ -39,3 +39,27 @@ add_executable(unittest_mon_montypes
   )
 add_ceph_unittest(unittest_mon_montypes)
 target_link_libraries(unittest_mon_montypes mon global)
+
+# ceph_test_mon_memory_target
+add_executable(ceph_test_mon_memory_target
+  test_mon_memory_target.cc
+  )
+target_link_libraries(ceph_test_mon_memory_target ${UNITTEST_LIBS} Boost::system)
+install(TARGETS ceph_test_mon_memory_target
+  DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_mon_log_rss_usage
+add_executable(ceph_test_log_rss_usage
+  test_log_rss_usage.cc
+  )
+target_link_libraries(ceph_test_log_rss_usage ${UNITTEST_LIBS})
+install(TARGETS ceph_test_log_rss_usage
+  DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_mon_rss_usage
+add_executable(ceph_test_mon_rss_usage
+  test_mon_rss_usage.cc
+  )
+target_link_libraries(ceph_test_mon_rss_usage ${UNITTEST_LIBS})
+install(TARGETS ceph_test_mon_rss_usage
+  DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/ceph/src/test/mon/test_log_rss_usage.cc b/ceph/src/test/mon/test_log_rss_usage.cc
new file mode 100644 (file)
index 0000000..f6e85f4
--- /dev/null
@@ -0,0 +1,101 @@
+#include <sys/types.h>
+#include <dirent.h>
+#include <errno.h>
+#include <vector>
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+using namespace std;
+
+int getPidByName(string procName)
+{
+  int pid = -1;
+
+  // Open the /proc directory
+  DIR *dp = opendir("/proc");
+  if (dp != NULL)
+  {
+    // Enumerate all entries in '/proc' until process is found
+    struct dirent *dirp;
+    while (pid < 0 && (dirp = readdir(dp)))
+    {
+      // Skip non-numeric entries
+      int id = atoi(dirp->d_name);
+      if (id > 0)
+      {
+        // Read contents of virtual /proc/{pid}/cmdline file
+        string cmdPath = string("/proc/") + dirp->d_name + "/cmdline";
+        ifstream cmdFile(cmdPath.c_str());
+        string cmdLine;
+        getline(cmdFile, cmdLine);
+        if (!cmdLine.empty())
+        {
+          // Keep first cmdline item which contains the program path
+          size_t pos = cmdLine.find('\0');
+          if (pos != string::npos) {
+            cmdLine = cmdLine.substr(0, pos);
+          }
+          // Get program name only, removing the path
+          pos = cmdLine.rfind('/');
+          if (pos != string::npos) {
+            cmdLine = cmdLine.substr(pos + 1);
+          }
+          // Compare against requested process name
+          if (procName == cmdLine) {
+            pid = id;
+          }
+        }
+      }
+    }
+  }
+
+  closedir(dp);
+
+  return pid;
+}
+
+uint64_t getRssUsage(string pid)
+{
+  int totalSize = 0;
+  int resSize = 0;
+
+  string statmPath = string("/proc/") + pid + "/statm";
+  ifstream buffer(statmPath);
+  buffer >> totalSize >> resSize;
+  buffer.close();
+
+  long page_size = sysconf(_SC_PAGE_SIZE);
+  uint64_t rss = resSize * page_size;
+
+  return rss;
+}
+
+int main(int argc, char* argv[])
+{
+  if (argc != 2) {
+    cout << "Syntax: "
+         << "ceph_test_log_rss_usage <process name>"
+         << endl;
+    exit(EINVAL);
+  }
+  uint64_t rss = 0;
+  int pid = getPidByName(argv[1]);
+  string rssUsage;
+
+  // Use the pid to get RSS memory usage
+  // and print it to stdout
+  if (pid != -1) {
+    rss = getRssUsage(to_string(pid));
+  } else {
+    cout << "Process " << argv[1] << " NOT FOUND!\n" << endl;
+    exit(ESRCH);
+  }
+
+  rssUsage = to_string(rss) + ":" + to_string(pid) + ":";
+  cout << rssUsage.c_str() << endl;
+  return 0;
+}
diff --git a/ceph/src/test/mon/test_mon_memory_target.cc b/ceph/src/test/mon/test_mon_memory_target.cc
new file mode 100644 (file)
index 0000000..da3a86d
--- /dev/null
@@ -0,0 +1,78 @@
+#include <algorithm>
+#include <iostream>
+#include <string>
+#include <numeric>
+#include <regex>
+#include <system_error>
+
+#include <boost/process.hpp>
+#include <boost/tokenizer.hpp>
+
+namespace bp = boost::process;
+using namespace std;
+
+int main(int argc, char** argv)
+{
+  cout << "Mon Memory Target Test" << endl;
+
+  if (argc != 2) {
+    cout << "Syntax: "
+         << "ceph_test_mon_memory_target <mon-memory-target-bytes>"
+         << endl;
+    exit(EINVAL);
+  }
+
+  string target_directory("/var/log/ceph/");
+  unsigned long maxallowed = stoul(argv[1], nullptr, 10);
+  regex reg(R"(cache_size:(\d*)\s)");
+
+  string grep_command("grep _set_new_cache_sizes " + target_directory
+                      + "ceph-mon.a.log");
+  bp::ipstream is;
+  error_code ec;
+  bp::child grep(grep_command, bp::std_out > is, ec);
+  if (ec) {
+    cout << "Error grepping logs! Exiting" << endl;
+    cout << "Error: " << ec.value() << " " << ec.message() << endl;
+    exit(ec.value());
+  }
+
+  string line;
+  vector<unsigned long> results;
+  while (grep.running() && getline(is, line) && !line.empty()) {
+    smatch match;
+    if (regex_search(line, match, reg)) {
+      results.push_back(stoul(match[1].str()));
+    }
+  }
+
+  if (results.empty()) {
+    cout << "Error: No grep results found!" << endl;
+    exit(ENOENT);
+  }
+
+  auto maxe = *(max_element(results.begin(), results.end()));
+  cout << "Results for mon_memory_target:" << endl;
+  cout << "Max: " << maxe << endl;
+  cout << "Min: " << *(min_element(results.begin(), results.end())) << endl;
+  auto sum = accumulate(results.begin(), results.end(),
+                        static_cast<unsigned long long>(0));
+  auto mean = sum / results.size();
+  cout << "Mean average: " << mean << endl;
+  vector<unsigned long> diff(results.size());
+  transform(results.begin(), results.end(), diff.begin(),
+            [mean](unsigned long x) { return x - mean; });
+  auto sump = inner_product(diff.begin(), diff.end(), diff.begin(), 0.0);
+  auto stdev = sqrt(sump / results.size());
+  cout << "Standard deviation: " << stdev << endl;
+
+  if (maxe > maxallowed) {
+    cout << "Error: Mon memory consumption exceeds maximum allowed!" << endl;
+    exit(ENOMEM);
+  }
+
+  grep.wait();
+
+  cout << "Completed successfully" << endl;
+  return 0;
+}
diff --git a/ceph/src/test/mon/test_mon_rss_usage.cc b/ceph/src/test/mon/test_mon_rss_usage.cc
new file mode 100644 (file)
index 0000000..76b5856
--- /dev/null
@@ -0,0 +1,72 @@
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <numeric>
+#include <regex>
+#include <cmath>
+#include <system_error>
+
+using namespace std;
+
+int main(int argc, char **argv)
+{
+  cout << "Mon RSS Usage Test" << endl;
+
+  if (argc != 2) {
+    cout << "Syntax: "
+         << "ceph_test_mon_rss_usage <mon-memory-target-bytes>"
+         << endl;
+    exit(EINVAL);
+  }
+
+  unsigned long maxallowed = stoul(argv[1], nullptr, 10);
+  // Set max allowed RSS usage to be 125% of mon-memory-target
+  maxallowed *= 1.25;
+
+  string target_directory("/var/log/ceph/");
+  string filePath = target_directory + "ceph-mon-rss-usage.log";
+  ifstream buffer(filePath.c_str());
+  string line;
+  vector<unsigned long> results;
+  while(getline(buffer, line) && !line.empty()) {
+    string rssUsage;
+    size_t pos = line.find(':');
+    if (pos != string::npos) {
+      rssUsage = line.substr(0, pos);
+    }
+    if (!rssUsage.empty()) {
+      results.push_back(stoul(rssUsage));
+    }
+  }
+
+  buffer.close();
+  if (results.empty()) {
+    cout << "Error: No grep results found!" << endl;
+    exit(ENOENT);
+  }
+
+  auto maxe = *(max_element(results.begin(), results.end()));
+  cout << "Stats for mon RSS Memory Usage:" << endl;
+  cout << "Parsed " << results.size() << " entries." << endl;
+  cout << "Max: " << maxe << endl;
+  cout << "Min: " << *(min_element(results.begin(), results.end())) << endl;
+  auto sum = accumulate(results.begin(), results.end(),
+                        static_cast<unsigned long long>(0));
+  auto mean = sum / results.size();
+  cout << "Mean average: " << mean << endl;
+  vector<unsigned long> diff(results.size());
+  transform(results.begin(), results.end(), diff.begin(),
+            [mean](unsigned long x) { return x - mean; });
+  auto sump = inner_product(diff.begin(), diff.end(), diff.begin(), 0.0);
+  auto stdev = sqrt(sump / results.size());
+  cout << fixed <<  "Standard deviation: " << stdev << endl;
+
+  if (maxe > maxallowed) {
+    cout << "Error: Mon RSS memory usage exceeds maximum allowed!" << endl;
+    exit(ENOMEM);
+  }
+
+  cout << "Completed successfully" << endl;
+  return 0;
+}
index 753851e89e1757b017e43c78741604ae1b3bef78..c4ea76f78233e167b5c29e528ec55fd101337b9f 100644 (file)
@@ -287,6 +287,68 @@ TEST_P(AllocTest, test_alloc_fragmentation)
   EXPECT_EQ(0u, uint64_t(alloc->get_fragmentation(alloc_unit) * 100));
 }
 
+TEST_P(AllocTest, test_dump_fragmentation_score)
+{
+  uint64_t capacity = 1024 * 1024 * 1024;
+  uint64_t one_alloc_max = 2 * 1024 * 1024;
+  uint64_t alloc_unit = 4096;
+  uint64_t want_size = alloc_unit;
+  uint64_t rounds = 10;
+  uint64_t actions_per_round = 1000;
+  PExtentVector allocated, tmp;
+  gen_type rng;
+
+  init_alloc(capacity, alloc_unit);
+  alloc->init_add_free(0, capacity);
+
+  EXPECT_EQ(0.0, alloc->get_fragmentation(alloc_unit));
+
+  uint64_t allocated_cnt = 0;
+  for (size_t round = 0; round < rounds ; round++) {
+    for (size_t j = 0; j < actions_per_round ; j++) {
+      //free or allocate ?
+      if ( rng() % capacity >= allocated_cnt ) {
+       //allocate
+       want_size = ( rng() % one_alloc_max ) / alloc_unit * alloc_unit + alloc_unit;
+       tmp.clear();
+       uint64_t r = alloc->allocate(want_size, alloc_unit, 0, 0, &tmp);
+       for (auto& t: tmp) {
+         if (t.length > 0)
+           allocated.push_back(t);
+       }
+       allocated_cnt += r;
+      } else {
+       //free
+       ceph_assert(allocated.size() > 0);
+       size_t item = rng() % allocated.size();
+       ceph_assert(allocated[item].length > 0);
+       allocated_cnt -= allocated[item].length;
+       interval_set<uint64_t> release_set;
+       release_set.insert(allocated[item].offset, allocated[item].length);
+       alloc->release(release_set);
+       std::swap(allocated[item], allocated[allocated.size() - 1]);
+       allocated.resize(allocated.size() - 1);
+      }
+    }
+
+    size_t free_sum = 0;
+    auto iterated_allocation = [&](size_t off, size_t len) {
+      ceph_assert(len > 0);
+      free_sum += len;
+    };
+    alloc->dump(iterated_allocation);
+    EXPECT_GT(1, alloc->get_fragmentation_score());
+    EXPECT_EQ(capacity, free_sum + allocated_cnt);
+  }
+
+  for (size_t i = 0; i < allocated.size(); i ++)
+  {
+    interval_set<uint64_t> release_set;
+    release_set.insert(allocated[i].offset, allocated[i].length);
+    alloc->release(release_set);
+  }
+}
+
 TEST_P(AllocTest, test_alloc_bug_24598)
 {
   if (string(GetParam()) != "bitmap")
index 7e1d442f4ebb64e82964583ecf7ffc501223cfd0..392ef580cf0796adad09f47a53127bdc7aac2f7c 100644 (file)
@@ -1320,6 +1320,7 @@ TEST_P(StoreTestSpecificAUSize, BluestoreStatFSTest) {
     return;
   StartDeferred(65536);
   SetVal(g_conf(), "bluestore_compression_mode", "force");
+  SetVal(g_conf(), "bluestore_max_blob_size", "524288");
   // just a big number to disble gc
   SetVal(g_conf(), "bluestore_gc_enable_total_threshold", "100000");
   SetVal(g_conf(), "bluestore_fsck_on_umount", "true");
@@ -7322,7 +7323,7 @@ TEST_P(StoreTestSpecificAUSize, BluestoreRepairTest) {
   SetVal(g_conf(), "bluestore_max_blob_size", 
     stringify(2 * offs_base).c_str());
   SetVal(g_conf(), "bluestore_extent_map_shard_max_size", "12000");
-  SetVal(g_conf(), "bluestore_no_per_pool_stats_tolerance", "enforce");
+  SetVal(g_conf(), "bluestore_fsck_error_on_no_per_pool_stats", "false");
 
   StartDeferred(0x10000);
 
@@ -7396,7 +7397,7 @@ TEST_P(StoreTestSpecificAUSize, BluestoreRepairTest) {
   bstore->inject_statfs("bluestore_statfs", statfs);
   bstore->umount();
 
-  ASSERT_EQ(bstore->fsck(false), 1);
+  ASSERT_EQ(bstore->fsck(false), 2);
   ASSERT_EQ(bstore->repair(false), 0);
   ASSERT_EQ(bstore->fsck(false), 0);
   ASSERT_EQ(bstore->mount(), 0);
@@ -7462,18 +7463,138 @@ TEST_P(StoreTestSpecificAUSize, BluestoreRepairTest) {
     ASSERT_EQ(bstore->fsck(false), 0);
   }
 
+  cerr << "Completing" << std::endl;
+  bstore->mount();
+
+}
+
+TEST_P(StoreTest, BluestoreRepairGlobalStats)
+{
+  if (string(GetParam()) != "bluestore")
+    return;
+  const size_t offs_base = 65536 / 2;
+
+  BlueStore* bstore = dynamic_cast<BlueStore*> (store.get());
+
+  // start with global stats
+  bstore->inject_global_statfs({});
+  bstore->umount();
+  SetVal(g_conf(), "bluestore_fsck_quick_fix_on_mount", "false");
+  bstore->mount();
+
+  // fill the store with some data
+  const uint64_t pool = 555;
+  coll_t cid(spg_t(pg_t(0, pool), shard_id_t::NO_SHARD));
+  auto ch = store->create_new_collection(cid);
+
+  ghobject_t hoid = make_object("Object 1", pool);
+  ghobject_t hoid_dup = make_object("Object 1(dup)", pool);
+  ghobject_t hoid2 = make_object("Object 2", pool);
+  ghobject_t hoid_cloned = hoid2;
+  hoid_cloned.hobj.snap = 1;
+  ghobject_t hoid3 = make_object("Object 3", pool);
+  ghobject_t hoid3_cloned = hoid3;
+  hoid3_cloned.hobj.snap = 1;
+  bufferlist bl;
+  bl.append("1234512345");
+  int r;
+  const size_t repeats = 16;
+  {
+    auto ch = store->create_new_collection(cid);
+    cerr << "create collection + write" << std::endl;
+    ObjectStore::Transaction t;
+    t.create_collection(cid, 0);
+    for( auto i = 0ul; i < repeats; ++i ) {
+      t.write(cid, hoid, i * offs_base, bl.length(), bl);
+      t.write(cid, hoid_dup, i * offs_base, bl.length(), bl);
+    }
+    for( auto i = 0ul; i < repeats; ++i ) {
+      t.write(cid, hoid2, i * offs_base, bl.length(), bl);
+    }
+    t.clone(cid, hoid2, hoid_cloned);
+
+    r = queue_transaction(store, ch, std::move(t));
+    ASSERT_EQ(r, 0);
+  }
+
+  bstore->umount();
+
   // enable per-pool stats collection hence causing fsck to fail
   cerr << "per-pool statfs" << std::endl;
-  SetVal(g_conf(), "bluestore_no_per_pool_stats_tolerance", "until_fsck");
+  SetVal(g_conf(), "bluestore_fsck_error_on_no_per_pool_stats", "true");
   g_ceph_context->_conf.apply_changes(nullptr);
 
-  ASSERT_EQ(bstore->fsck(false), 2);
+  ASSERT_EQ(bstore->fsck(false), 1);
   ASSERT_EQ(bstore->repair(false), 0);
   ASSERT_EQ(bstore->fsck(false), 0);
 
-  cerr << "Completing" << std::endl;
   bstore->mount();
+}
+
+TEST_P(StoreTest, BluestoreRepairGlobalStatsFixOnMount)
+{
+  if (string(GetParam()) != "bluestore")
+    return;
+  const size_t offs_base = 65536 / 2;
+
+  BlueStore* bstore = dynamic_cast<BlueStore*> (store.get());
+
+  // start with global stats
+  bstore->inject_global_statfs({});
+  bstore->umount();
+  SetVal(g_conf(), "bluestore_fsck_quick_fix_on_mount", "false");
+  bstore->mount();
+
+  // fill the store with some data
+  const uint64_t pool = 555;
+  coll_t cid(spg_t(pg_t(0, pool), shard_id_t::NO_SHARD));
+  auto ch = store->create_new_collection(cid);
+
+  ghobject_t hoid = make_object("Object 1", pool);
+  ghobject_t hoid_dup = make_object("Object 1(dup)", pool);
+  ghobject_t hoid2 = make_object("Object 2", pool);
+  ghobject_t hoid_cloned = hoid2;
+  hoid_cloned.hobj.snap = 1;
+  ghobject_t hoid3 = make_object("Object 3", pool);
+  ghobject_t hoid3_cloned = hoid3;
+  hoid3_cloned.hobj.snap = 1;
+  bufferlist bl;
+  bl.append("1234512345");
+  int r;
+  const size_t repeats = 16;
+  {
+    auto ch = store->create_new_collection(cid);
+    cerr << "create collection + write" << std::endl;
+    ObjectStore::Transaction t;
+    t.create_collection(cid, 0);
+    for( auto i = 0ul; i < repeats; ++i ) {
+      t.write(cid, hoid, i * offs_base, bl.length(), bl);
+      t.write(cid, hoid_dup, i * offs_base, bl.length(), bl);
+    }
+    for( auto i = 0ul; i < repeats; ++i ) {
+      t.write(cid, hoid2, i * offs_base, bl.length(), bl);
+    }
+    t.clone(cid, hoid2, hoid_cloned);
+
+    r = queue_transaction(store, ch, std::move(t));
+    ASSERT_EQ(r, 0);
+  }
+
+  bstore->umount();
+
+  // enable per-pool stats collection hence causing fsck to fail
+  cerr << "per-pool statfs" << std::endl;
+  SetVal(g_conf(), "bluestore_fsck_error_on_no_per_pool_stats", "true");
+  g_ceph_context->_conf.apply_changes(nullptr);
+
+  ASSERT_EQ(bstore->fsck(false), 1);
+
+  SetVal(g_conf(), "bluestore_fsck_quick_fix_on_mount", "true");
+  bstore->mount();
+  bstore->umount();
+  ASSERT_EQ(bstore->fsck(false), 0);
 
+  bstore->mount();
 }
 
 TEST_P(StoreTest, BluestoreStatistics) {
@@ -7731,6 +7852,82 @@ TEST_P(StoreTest, mergeRegionTest) {
     ASSERT_EQ(final_len, static_cast<uint64_t>(r));
   }
 }
+  
+TEST_P(StoreTestSpecificAUSize, ReproNoBlobMultiTest) {
+
+  if(string(GetParam()) != "bluestore")
+    return;
+
+  SetVal(g_conf(), "bluestore_block_db_create", "true");
+  SetVal(g_conf(), "bluestore_block_db_size", "4294967296");
+  SetVal(g_conf(), "bluestore_block_size", "12884901888");
+  SetVal(g_conf(), "bluestore_max_blob_size", "524288");
+
+  g_conf().apply_changes(nullptr);
+
+  StartDeferred(65536);
+
+  int r;
+  coll_t cid;
+  ghobject_t hoid(hobject_t(sobject_t("Object 1", CEPH_NOSNAP)));
+  ghobject_t hoid2 = hoid;
+  hoid2.hobj.snap = 1;
+
+  auto ch = store->create_new_collection(cid);
+  {
+    ObjectStore::Transaction t;
+    t.create_collection(cid, 0);
+    cerr << "Creating collection " << cid << std::endl;
+    r = queue_transaction(store, ch, std::move(t));
+    ASSERT_EQ(r, 0);
+  }
+  {
+    bool exists = store->exists(ch, hoid);
+    ASSERT_TRUE(!exists);
+
+    ObjectStore::Transaction t;
+    t.touch(cid, hoid);
+    cerr << "Creating object " << hoid << std::endl;
+    r = queue_transaction(store, ch, std::move(t));
+    ASSERT_EQ(r, 0);
+
+    exists = store->exists(ch, hoid);
+    ASSERT_EQ(true, exists);
+  }
+  {
+    uint64_t offs = 0;
+    bufferlist bl;
+    const int size = 0x100;
+    bufferptr ap(size);
+    memset(ap.c_str(), 'a', size);
+    bl.append(ap);
+    int i = 0;
+    uint64_t  blob_size = 524288;
+    uint64_t total = 0;
+    for (i = 0; i <= 512; i++) {
+      offs = 0 + i * size;
+      ObjectStore::Transaction t;
+      ghobject_t hoid2 = hoid;
+      hoid2.hobj.snap = i + 1;
+      while (offs < 128 * 1024 * 1024) {
+
+        t.write(cid, hoid, offs, ap.length(), bl);
+       offs += blob_size;
+       total += ap.length();
+      }
+      t.clone(cid, hoid, hoid2);
+      r = queue_transaction(store, ch, std::move(t));
+      ASSERT_EQ(r, 0);
+    }
+    cerr << "Total written = " << total << std::endl;
+  }
+  {
+    cerr << "Finalizing" << std::endl;
+    const PerfCounters* logger = store->get_perf_counters();
+    ASSERT_GE(logger->get(l_bluestore_gc_merged), 1024*1024*1024);
+  }
+}
+
 #endif  // WITH_BLUESTORE
 
 int main(int argc, char **argv) {
index 4e8c21a8d70e677427ca36f746ee2ec9213346ff..37b0e8455e58f2f5b56f21e5b8b260127399c6cc 100644 (file)
@@ -1241,8 +1241,8 @@ TEST(GarbageCollector, BasicTest)
     saving = gc.estimate(300, 100, em, old_extents, 4096);
     ASSERT_EQ(saving, 1);
     auto& to_collect = gc.get_extents_to_collect();
-    ASSERT_EQ(to_collect.size(), 1u);
-    ASSERT_EQ(to_collect[0], bluestore_pextent_t(100,10) );
+    ASSERT_EQ(to_collect.num_intervals(), 1u);
+    ASSERT_EQ(*to_collect.begin(), std::make_pair(100ul, 10ul));
 
     em.clear();
     old_extents.clear();
@@ -1311,11 +1311,11 @@ TEST(GarbageCollector, BasicTest)
     saving = gc.estimate(0x30000, 0xf000, em, old_extents, 0x10000);
     ASSERT_EQ(saving, 2);
     auto& to_collect = gc.get_extents_to_collect();
-    ASSERT_EQ(to_collect.size(), 2u);
-    ASSERT_TRUE(to_collect[0] == bluestore_pextent_t(0x0,0x8000) ||
-                 to_collect[1] == bluestore_pextent_t(0x0,0x8000));
-    ASSERT_TRUE(to_collect[0] == bluestore_pextent_t(0x3f000,0x1000) ||
-                 to_collect[1] == bluestore_pextent_t(0x3f000,0x1000));
+    ASSERT_EQ(to_collect.num_intervals(), 2u);
+    ASSERT_TRUE((*to_collect.begin()) == std::make_pair(0x0ul ,0x8000ul) ||
+                 *(++to_collect.begin()) == std::make_pair(0x0ul, 0x8000ul));
+    ASSERT_TRUE((*to_collect.begin()) == std::make_pair(0x3f000ul, 0x1000ul) ||
+                 *(++to_collect.begin()) == std::make_pair(0x3f000ul, 0x1000ul));
 
     em.clear();
     old_extents.clear();
@@ -1357,7 +1357,7 @@ TEST(GarbageCollector, BasicTest)
     saving = gc.estimate(0x3000, 0x4000, em, old_extents, 0x1000);
     ASSERT_EQ(saving, 0);
     auto& to_collect = gc.get_extents_to_collect();
-    ASSERT_EQ(to_collect.size(), 0u);
+    ASSERT_EQ(to_collect.num_intervals(), 0u);
     em.clear();
     old_extents.clear();
   }
@@ -1432,11 +1432,11 @@ TEST(GarbageCollector, BasicTest)
     saving = gc.estimate(0x30000, 0xf000, em, old_extents, 0x10000);
     ASSERT_EQ(saving, 2);
     auto& to_collect = gc.get_extents_to_collect();
-    ASSERT_EQ(to_collect.size(), 2u);
-    ASSERT_TRUE(to_collect[0] == bluestore_pextent_t(0x0,0x8000) ||
-                 to_collect[1] == bluestore_pextent_t(0x0,0x8000));
-    ASSERT_TRUE(to_collect[0] == bluestore_pextent_t(0x3f000,0x1000) ||
-                 to_collect[1] == bluestore_pextent_t(0x3f000,0x1000));
+    ASSERT_EQ(to_collect.num_intervals(), 2u);
+    ASSERT_TRUE(*to_collect.begin() == std::make_pair(0x0ul, 0x8000ul) ||
+                 *(++to_collect.begin()) == std::make_pair(0x0ul, 0x8000ul));
+    ASSERT_TRUE(*to_collect.begin() == std::make_pair(0x3f000ul, 0x1000ul) ||
+                 *(++to_collect.begin()) == std::make_pair(0x3f000ul, 0x1000ul));
 
     em.clear();
     old_extents.clear();
index 2bd873fd01a615125cce5defdd71e0a88ebfc7f0..0ecae54fbc3cbef9e239d7b90b2aeee9a0ac4a66 100644 (file)
@@ -1397,6 +1397,92 @@ TEST_F(OSDMapTest, BUG_40104) {
   }
 }
 
+TEST_F(OSDMapTest, BUG_42052) {
+  // https://tracker.ceph.com/issues/42052
+  set_up_map(6, true);
+  const string pool_name("pool");
+  // build customized crush rule for "pool"
+  CrushWrapper crush;
+  get_crush(osdmap, crush);
+  string rule_name = "rule";
+  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) && !crush.ruleset_exists(rno))
+      break;
+  }
+  int min_size = 3;
+  int max_size = 3;
+  int steps = 8;
+  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);
+  // always choose osd.0, osd.1, osd.2
+  crush_rule_set_step(rule, step++, CRUSH_RULE_TAKE, 0, 0);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_EMIT, 0, 0);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_TAKE, 0, 1);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_EMIT, 0, 0);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_TAKE, 0, 2);
+  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(osdmap.get_epoch() + 1);
+    pending_inc.crush.clear();
+    crush.encode(pending_inc.crush, CEPH_FEATURES_SUPPORTED_DEFAULT);
+    osdmap.apply_incremental(pending_inc);
+  }
+
+  // create "pool"
+  OSDMap::Incremental pending_inc(osdmap.get_epoch() + 1);
+  pending_inc.new_pool_max = osdmap.get_pool_max();
+  auto pool_id = ++pending_inc.new_pool_max;
+  pg_pool_t empty;
+  auto p = pending_inc.get_new_pool(pool_id, &empty);
+  p->size = 3;
+  p->min_size = 1;
+  p->set_pg_num(1);
+  p->set_pgp_num(1);
+  p->type = pg_pool_t::TYPE_REPLICATED;
+  p->crush_rule = rno;
+  p->set_flag(pg_pool_t::FLAG_HASHPSPOOL);
+  pending_inc.new_pool_names[pool_id] = pool_name;
+  osdmap.apply_incremental(pending_inc);
+  ASSERT_TRUE(osdmap.have_pg_pool(pool_id));
+  ASSERT_TRUE(osdmap.get_pool_name(pool_id) == pool_name);
+  pg_t rawpg(0, pool_id);
+  pg_t pgid = osdmap.raw_pg_to_pg(rawpg);
+  {
+    // pg_upmap 1.0 [2,3,5]
+    vector<int32_t> new_up{2,3,5};
+    OSDMap::Incremental pending_inc(osdmap.get_epoch() + 1);
+    pending_inc.new_pg_upmap[pgid] = mempool::osdmap::vector<int32_t>(
+      new_up.begin(), new_up.end());
+    osdmap.apply_incremental(pending_inc);
+  }
+  {
+    // pg_upmap_items 1.0 [0,3,4,5]
+    vector<pair<int32_t,int32_t>> new_pg_upmap_items;
+    new_pg_upmap_items.push_back(make_pair(0, 3));
+    new_pg_upmap_items.push_back(make_pair(4, 5));
+    OSDMap::Incremental pending_inc(osdmap.get_epoch() + 1);
+    pending_inc.new_pg_upmap_items[pgid] =
+    mempool::osdmap::vector<pair<int32_t,int32_t>>(
+      new_pg_upmap_items.begin(), new_pg_upmap_items.end());
+    osdmap.apply_incremental(pending_inc);
+  }
+  {
+    OSDMap::Incremental pending_inc(osdmap.get_epoch() + 1);
+    clean_pg_upmaps(g_ceph_context, osdmap, pending_inc);
+    osdmap.apply_incremental(pending_inc);
+    ASSERT_FALSE(osdmap.have_pg_upmaps(pgid));
+  }
+}
+
 TEST(PGTempMap, basic)
 {
   PGTempMap m;
index 81bfad982427ac9c89bd4cb7dc163fc78bf533e5..bdf62b9bd2653bfcf6587c161b88daad54615c8b 100644 (file)
@@ -2931,7 +2931,6 @@ TEST_F(PGLogTest, _merge_object_divergent_entries) {
     _merge_object_divergent_entries(log, hoid,
                                     orig_entries, oinfo,
                                     log.get_can_rollback_to(),
-                                    log.get_can_rollback_to(),
                                     missing, &rollbacker,
                                     this);
     // No core dump
@@ -2958,7 +2957,6 @@ TEST_F(PGLogTest, _merge_object_divergent_entries) {
     _merge_object_divergent_entries(log, hoid,
                                     orig_entries, oinfo,
                                     log.get_can_rollback_to(),
-                                    log.get_can_rollback_to(),
                                     missing, &rollbacker,
                                     this);
     // No core dump
index 0742ab8069c6f49dc285b7f764ce1a33ceaf6088..214266515fe4c0c906e3f0682fcc08a23f4bd411 100644 (file)
@@ -1,6 +1,8 @@
 # vim: expandtab smarttab shiftwidth=4 softtabstop=4
+import base64
 import errno
 import functools
+import json
 import socket
 import os
 import time
@@ -28,7 +30,8 @@ from rbd import (RBD, Group, Image, ImageNotFound, InvalidArgument, ImageExists,
                  RBD_IMAGE_MIGRATION_STATE_PREPARED, RBD_CONFIG_SOURCE_CONFIG,
                  RBD_CONFIG_SOURCE_POOL, RBD_CONFIG_SOURCE_IMAGE,
                  RBD_MIRROR_PEER_ATTRIBUTE_NAME_MON_HOST,
-                 RBD_MIRROR_PEER_ATTRIBUTE_NAME_KEY)
+                 RBD_MIRROR_PEER_ATTRIBUTE_NAME_KEY,
+                 RBD_MIRROR_PEER_DIRECTION_RX)
 
 rados = None
 ioctx = None
@@ -1775,6 +1778,30 @@ class TestMirroring(object):
         remove_image()
         self.rbd.mirror_mode_set(ioctx, self.initial_mirror_mode)
 
+    def test_site_name(self):
+        site_name = "us-west-1"
+        self.rbd.mirror_site_name_set(rados, site_name)
+        eq(site_name, self.rbd.mirror_site_name_get(rados))
+        self.rbd.mirror_site_name_set(rados, "")
+        eq(rados.get_fsid(), self.rbd.mirror_site_name_get(rados))
+
+    def test_mirror_peer_bootstrap(self):
+        eq([], list(self.rbd.mirror_peer_list(ioctx)))
+
+        self.rbd.mirror_mode_set(ioctx, RBD_MIRROR_MODE_DISABLED)
+        assert_raises(InvalidArgument, self.rbd.mirror_peer_bootstrap_create,
+                      ioctx);
+
+        self.rbd.mirror_mode_set(ioctx, RBD_MIRROR_MODE_POOL)
+        token_b64 = self.rbd.mirror_peer_bootstrap_create(ioctx)
+        token = base64.b64decode(token_b64)
+        token_dict = json.loads(token)
+        eq(sorted(['fsid', 'client_id', 'key', 'mon_host']),
+            sorted(list(token_dict.keys())))
+
+        # requires different cluster
+        assert_raises(InvalidArgument, self.rbd.mirror_peer_bootstrap_import,
+            ioctx, RBD_MIRROR_PEER_DIRECTION_RX, token_b64)
 
     def test_mirror_peer(self):
         eq([], list(self.rbd.mirror_peer_list(ioctx)))
index 2af8680b2f2d2ea7f6e598b2e6dfdc82c5d56a89..1d8a975767399e972c09ac0694841eeb0dc4b44f 100644 (file)
@@ -27,9 +27,9 @@ add_executable(unittest_rbd_mirror
   test_mock_LeaderWatcher.cc
   test_mock_PoolReplayer.cc
   test_mock_PoolWatcher.cc
-  image_deleter/test_mock_RemoveRequest.cc
   image_deleter/test_mock_SnapshotPurgeRequest.cc
   image_deleter/test_mock_TrashMoveRequest.cc
+  image_deleter/test_mock_TrashRemoveRequest.cc
   image_deleter/test_mock_TrashWatcher.cc
   image_replayer/test_mock_BootstrapRequest.cc
   image_replayer/test_mock_CreateImageRequest.cc
diff --git a/ceph/src/test/rbd_mirror/image_deleter/test_mock_RemoveRequest.cc b/ceph/src/test/rbd_mirror/image_deleter/test_mock_RemoveRequest.cc
deleted file mode 100644 (file)
index 66d613c..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "test/rbd_mirror/test_mock_fixture.h"
-#include "cls/rbd/cls_rbd_types.h"
-#include "librbd/ImageCtx.h"
-#include "librbd/Utils.h"
-#include "librbd/image/RemoveRequest.h"
-#include "tools/rbd_mirror/Threads.h"
-#include "tools/rbd_mirror/image_deleter/RemoveRequest.h"
-#include "tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.h"
-#include "test/librados_test_stub/MockTestMemIoCtxImpl.h"
-#include "test/librbd/mock/MockImageCtx.h"
-
-namespace librbd {
-
-namespace {
-
-struct MockTestImageCtx : public librbd::MockImageCtx {
-  MockTestImageCtx(librbd::ImageCtx &image_ctx)
-    : librbd::MockImageCtx(image_ctx) {
-  }
-};
-
-} // anonymous namespace
-
-namespace image {
-
-template <>
-struct RemoveRequest<librbd::MockTestImageCtx> {
-  static RemoveRequest *s_instance;
-  Context *on_finish = nullptr;
-
-  static RemoveRequest *create(librados::IoCtx &io_ctx,
-                               const std::string &image_name,
-                               const std::string &image_id,
-                               bool force,
-                               bool remove_from_trash,
-                               librbd::ProgressContext &progress_ctx,
-                               ContextWQ *work_queue,
-                               Context *on_finish) {
-    ceph_assert(s_instance != nullptr);
-    EXPECT_TRUE(image_name.empty());
-    EXPECT_TRUE(force);
-    EXPECT_TRUE(remove_from_trash);
-    s_instance->construct(image_id);
-    s_instance->on_finish = on_finish;
-    return s_instance;
-  }
-
-  MOCK_METHOD1(construct, void(const std::string&));
-  MOCK_METHOD0(send, void());
-
-  RemoveRequest() {
-    s_instance = this;
-  }
-};
-
-RemoveRequest<librbd::MockTestImageCtx>* RemoveRequest<librbd::MockTestImageCtx>::s_instance = nullptr;
-
-} // namespace image
-} // namespace librbd
-
-namespace rbd {
-namespace mirror {
-namespace image_deleter {
-
-template <>
-struct SnapshotPurgeRequest<librbd::MockTestImageCtx> {
-  static SnapshotPurgeRequest *s_instance;
-  Context *on_finish = nullptr;
-
-  static SnapshotPurgeRequest *create(librados::IoCtx &io_ctx,
-                                      const std::string &image_id,
-                                      Context *on_finish) {
-    ceph_assert(s_instance != nullptr);
-    s_instance->construct(image_id);
-    s_instance->on_finish = on_finish;
-    return s_instance;
-  }
-
-  MOCK_METHOD1(construct, void(const std::string&));
-  MOCK_METHOD0(send, void());
-
-  SnapshotPurgeRequest() {
-    s_instance = this;
-  }
-};
-
-SnapshotPurgeRequest<librbd::MockTestImageCtx>* SnapshotPurgeRequest<librbd::MockTestImageCtx>::s_instance = nullptr;
-
-} // namespace image_deleter
-} // namespace mirror
-} // namespace rbd
-
-#include "tools/rbd_mirror/image_deleter/RemoveRequest.cc"
-
-namespace rbd {
-namespace mirror {
-namespace image_deleter {
-
-using ::testing::_;
-using ::testing::Invoke;
-using ::testing::InSequence;
-using ::testing::Return;
-using ::testing::StrEq;
-using ::testing::WithArg;
-using ::testing::WithArgs;
-
-class TestMockImageDeleterRemoveRequest : public TestMockFixture {
-public:
-  typedef RemoveRequest<librbd::MockTestImageCtx> MockRemoveRequest;
-  typedef SnapshotPurgeRequest<librbd::MockTestImageCtx> MockSnapshotPurgeRequest;
-  typedef librbd::image::RemoveRequest<librbd::MockTestImageCtx> MockImageRemoveRequest;
-
-  void expect_get_snapcontext(const std::string& image_id,
-                              const ::SnapContext &snapc, int r) {
-    bufferlist bl;
-    encode(snapc, bl);
-
-    EXPECT_CALL(get_mock_io_ctx(m_local_io_ctx),
-                exec(librbd::util::header_name(image_id), _, StrEq("rbd"),
-                     StrEq("get_snapcontext"), _, _, _))
-      .WillOnce(DoAll(WithArg<5>(Invoke([bl](bufferlist *out_bl) {
-                                          *out_bl = bl;
-                                        })),
-                      Return(r)));
-  }
-
-  void expect_snapshot_purge(MockSnapshotPurgeRequest &snapshot_purge_request,
-                             const std::string &image_id, int r) {
-    EXPECT_CALL(snapshot_purge_request, construct(image_id));
-    EXPECT_CALL(snapshot_purge_request, send())
-      .WillOnce(Invoke([this, &snapshot_purge_request, r]() {
-                  m_threads->work_queue->queue(snapshot_purge_request.on_finish, r);
-                }));
-  }
-
-  void expect_image_remove(MockImageRemoveRequest &image_remove_request,
-                           const std::string &image_id, int r) {
-    EXPECT_CALL(image_remove_request, construct(image_id));
-    EXPECT_CALL(image_remove_request, send())
-      .WillOnce(Invoke([this, &image_remove_request, r]() {
-                  m_threads->work_queue->queue(image_remove_request.on_finish, r);
-                }));
-  }
-};
-
-TEST_F(TestMockImageDeleterRemoveRequest, Success) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, 0);
-
-  MockSnapshotPurgeRequest mock_snapshot_purge_request;
-  expect_snapshot_purge(mock_snapshot_purge_request, "image id", 0);
-
-  MockImageRemoveRequest mock_image_remove_request;
-  expect_image_remove(mock_image_remove_request, "image id", 0);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(0, ctx.wait());
-}
-
-TEST_F(TestMockImageDeleterRemoveRequest, GetSnapContextDNE) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, -ENOENT);
-
-  MockImageRemoveRequest mock_image_remove_request;
-  expect_image_remove(mock_image_remove_request, "image id", 0);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(0, ctx.wait());
-}
-
-TEST_F(TestMockImageDeleterRemoveRequest, GetSnapContextError) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, -EINVAL);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(-EINVAL, ctx.wait());
-}
-
-TEST_F(TestMockImageDeleterRemoveRequest, PurgeSnapshotBusy) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, 0);
-
-  MockSnapshotPurgeRequest mock_snapshot_purge_request;
-  expect_snapshot_purge(mock_snapshot_purge_request, "image id", -EBUSY);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(-EBUSY, ctx.wait());
-  ASSERT_EQ(ERROR_RESULT_RETRY_IMMEDIATELY, error_result);
-}
-
-TEST_F(TestMockImageDeleterRemoveRequest, PurgeSnapshotError) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, 0);
-
-  MockSnapshotPurgeRequest mock_snapshot_purge_request;
-  expect_snapshot_purge(mock_snapshot_purge_request, "image id", -EINVAL);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(-EINVAL, ctx.wait());
-}
-
-TEST_F(TestMockImageDeleterRemoveRequest, RemoveError) {
-  InSequence seq;
-  expect_get_snapcontext("image id", {1, {1}}, 0);
-
-  MockSnapshotPurgeRequest mock_snapshot_purge_request;
-  expect_snapshot_purge(mock_snapshot_purge_request, "image id", 0);
-
-  MockImageRemoveRequest mock_image_remove_request;
-  expect_image_remove(mock_image_remove_request, "image id", -EINVAL);
-
-  C_SaferCond ctx;
-  ErrorResult error_result;
-  auto req = MockRemoveRequest::create(m_local_io_ctx, "image id",
-                                       &error_result, m_threads->work_queue,
-                                       &ctx);
-  req->send();
-  ASSERT_EQ(-EINVAL, ctx.wait());
-}
-
-} // namespace image_deleter
-} // namespace mirror
-} // namespace rbd
index b3f204c574983ad1b416a025b59868a60de65584..b2ec9692060fc868a732a1f5b482790b0b4f4c16 100644 (file)
@@ -98,6 +98,7 @@ struct ResetRequest<MockTestImageCtx> {
                               const std::string &mirror_uuid,
                               ContextWQ *op_work_queue, Context *on_finish) {
     ceph_assert(s_instance != nullptr);
+    EXPECT_EQ(librbd::Journal<>::LOCAL_MIRROR_UUID, mirror_uuid);
     s_instance->on_finish = on_finish;
     return s_instance;
   }
diff --git a/ceph/src/test/rbd_mirror/image_deleter/test_mock_TrashRemoveRequest.cc b/ceph/src/test/rbd_mirror/image_deleter/test_mock_TrashRemoveRequest.cc
new file mode 100644 (file)
index 0000000..be87570
--- /dev/null
@@ -0,0 +1,452 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "test/rbd_mirror/test_mock_fixture.h"
+#include "cls/rbd/cls_rbd_types.h"
+#include "librbd/ImageCtx.h"
+#include "librbd/TrashWatcher.h"
+#include "librbd/Utils.h"
+#include "librbd/trash/RemoveRequest.h"
+#include "tools/rbd_mirror/Threads.h"
+#include "tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.h"
+#include "tools/rbd_mirror/image_deleter/TrashRemoveRequest.h"
+#include "test/librados_test_stub/MockTestMemIoCtxImpl.h"
+#include "test/librbd/mock/MockImageCtx.h"
+
+namespace librbd {
+
+namespace {
+
+struct MockTestImageCtx : public librbd::MockImageCtx {
+  MockTestImageCtx(librbd::ImageCtx &image_ctx)
+    : librbd::MockImageCtx(image_ctx) {
+  }
+};
+
+} // anonymous namespace
+
+template<>
+struct TrashWatcher<MockTestImageCtx> {
+  static TrashWatcher* s_instance;
+  static void notify_image_removed(librados::IoCtx&,
+                                   const std::string& image_id, Context *ctx) {
+    ceph_assert(s_instance != nullptr);
+    s_instance->notify_image_removed(image_id, ctx);
+  }
+
+  MOCK_METHOD2(notify_image_removed, void(const std::string&, Context*));
+
+  TrashWatcher() {
+    s_instance = this;
+  }
+};
+
+TrashWatcher<MockTestImageCtx>* TrashWatcher<MockTestImageCtx>::s_instance = nullptr;
+
+namespace trash {
+
+template <>
+struct RemoveRequest<librbd::MockTestImageCtx> {
+  static RemoveRequest *s_instance;
+  Context *on_finish = nullptr;
+
+  static RemoveRequest *create(librados::IoCtx &io_ctx,
+                               const std::string &image_id,
+                               ContextWQ *work_queue,
+                               bool force,
+                               librbd::ProgressContext &progress_ctx,
+                               Context *on_finish) {
+    ceph_assert(s_instance != nullptr);
+    EXPECT_TRUE(force);
+    s_instance->construct(image_id);
+    s_instance->on_finish = on_finish;
+    return s_instance;
+  }
+
+  MOCK_METHOD1(construct, void(const std::string&));
+  MOCK_METHOD0(send, void());
+
+  RemoveRequest() {
+    s_instance = this;
+  }
+};
+
+RemoveRequest<librbd::MockTestImageCtx>* RemoveRequest<librbd::MockTestImageCtx>::s_instance = nullptr;
+
+} // namespace trash
+} // namespace librbd
+
+namespace rbd {
+namespace mirror {
+namespace image_deleter {
+
+template <>
+struct SnapshotPurgeRequest<librbd::MockTestImageCtx> {
+  static SnapshotPurgeRequest *s_instance;
+  Context *on_finish = nullptr;
+
+  static SnapshotPurgeRequest *create(librados::IoCtx &io_ctx,
+                                      const std::string &image_id,
+                                      Context *on_finish) {
+    ceph_assert(s_instance != nullptr);
+    s_instance->construct(image_id);
+    s_instance->on_finish = on_finish;
+    return s_instance;
+  }
+
+  MOCK_METHOD1(construct, void(const std::string&));
+  MOCK_METHOD0(send, void());
+
+  SnapshotPurgeRequest() {
+    s_instance = this;
+  }
+};
+
+SnapshotPurgeRequest<librbd::MockTestImageCtx>* SnapshotPurgeRequest<librbd::MockTestImageCtx>::s_instance = nullptr;
+
+} // namespace image_deleter
+} // namespace mirror
+} // namespace rbd
+
+#include "tools/rbd_mirror/image_deleter/TrashRemoveRequest.cc"
+
+namespace rbd {
+namespace mirror {
+namespace image_deleter {
+
+using ::testing::_;
+using ::testing::Invoke;
+using ::testing::InSequence;
+using ::testing::Return;
+using ::testing::StrEq;
+using ::testing::WithArg;
+using ::testing::WithArgs;
+
+class TestMockImageDeleterTrashRemoveRequest : public TestMockFixture {
+public:
+  typedef TrashRemoveRequest<librbd::MockTestImageCtx> MockTrashRemoveRequest;
+  typedef SnapshotPurgeRequest<librbd::MockTestImageCtx> MockSnapshotPurgeRequest;
+  typedef librbd::TrashWatcher<librbd::MockTestImageCtx> MockTrashWatcher;
+  typedef librbd::trash::RemoveRequest<librbd::MockTestImageCtx> MockLibrbdTrashRemoveRequest;
+
+  void expect_trash_get(const cls::rbd::TrashImageSpec& trash_spec, int r) {
+    using ceph::encode;
+    EXPECT_CALL(get_mock_io_ctx(m_local_io_ctx),
+                exec(StrEq(RBD_TRASH), _, StrEq("rbd"),
+                     StrEq("trash_get"), _, _, _))
+      .WillOnce(WithArg<5>(Invoke([trash_spec, r](bufferlist* bl) {
+                             encode(trash_spec, *bl);
+                             return r;
+                           })));
+  }
+
+  void expect_trash_state_set(const std::string& image_id, int r) {
+    bufferlist in_bl;
+    encode(image_id, in_bl);
+    encode(cls::rbd::TRASH_IMAGE_STATE_REMOVING, in_bl);
+    encode(cls::rbd::TRASH_IMAGE_STATE_NORMAL, in_bl);
+
+    EXPECT_CALL(get_mock_io_ctx(m_local_io_ctx),
+                exec(StrEq(RBD_TRASH), _, StrEq("rbd"),
+                     StrEq("trash_state_set"),
+                     ContentsEqual(in_bl), _, _))
+      .WillOnce(Return(r));
+  }
+
+  void expect_get_snapcontext(const std::string& image_id,
+                              const ::SnapContext &snapc, int r) {
+    bufferlist bl;
+    encode(snapc, bl);
+
+    EXPECT_CALL(get_mock_io_ctx(m_local_io_ctx),
+                exec(librbd::util::header_name(image_id), _, StrEq("rbd"),
+                     StrEq("get_snapcontext"), _, _, _))
+      .WillOnce(DoAll(WithArg<5>(Invoke([bl](bufferlist *out_bl) {
+                                          *out_bl = bl;
+                                        })),
+                      Return(r)));
+  }
+
+  void expect_snapshot_purge(MockSnapshotPurgeRequest &snapshot_purge_request,
+                             const std::string &image_id, int r) {
+    EXPECT_CALL(snapshot_purge_request, construct(image_id));
+    EXPECT_CALL(snapshot_purge_request, send())
+      .WillOnce(Invoke([this, &snapshot_purge_request, r]() {
+                  m_threads->work_queue->queue(
+                    snapshot_purge_request.on_finish, r);
+                }));
+  }
+
+  void expect_image_remove(MockLibrbdTrashRemoveRequest &image_remove_request,
+                           const std::string &image_id, int r) {
+    EXPECT_CALL(image_remove_request, construct(image_id));
+    EXPECT_CALL(image_remove_request, send())
+      .WillOnce(Invoke([this, &image_remove_request, r]() {
+                  m_threads->work_queue->queue(
+                    image_remove_request.on_finish, r);
+                }));
+  }
+
+  void expect_notify_image_removed(MockTrashWatcher& mock_trash_watcher,
+                                   const std::string& image_id) {
+    EXPECT_CALL(mock_trash_watcher, notify_image_removed(image_id, _))
+      .WillOnce(WithArg<1>(Invoke([this](Context *ctx) {
+                             m_threads->work_queue->queue(ctx, 0);
+                           })));
+  }
+
+};
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, Success) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, 0);
+
+  MockSnapshotPurgeRequest mock_snapshot_purge_request;
+  expect_snapshot_purge(mock_snapshot_purge_request, "image id", 0);
+
+  MockLibrbdTrashRemoveRequest mock_image_remove_request;
+  expect_image_remove(mock_image_remove_request, "image id", 0);
+
+  MockTrashWatcher mock_trash_watcher;
+  expect_notify_image_removed(mock_trash_watcher, "image id");
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashDNE) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, -ENOENT);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashError) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, -EPERM);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EPERM, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashSourceIncorrect) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_USER, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashStateIncorrect) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  trash_image_spec.state = cls::rbd::TRASH_IMAGE_STATE_RESTORING;
+  expect_trash_get(trash_image_spec, 0);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EBUSY, ctx.wait());
+  ASSERT_EQ(ERROR_RESULT_RETRY_IMMEDIATELY, error_result);
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashSetStateDNE) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", -ENOENT);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, TrashSetStateError) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", -EPERM);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EPERM, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, GetSnapContextDNE) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, -ENOENT);
+
+  MockLibrbdTrashRemoveRequest mock_image_remove_request;
+  expect_image_remove(mock_image_remove_request, "image id", 0);
+
+  MockTrashWatcher mock_trash_watcher;
+  expect_notify_image_removed(mock_trash_watcher, "image id");
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(0, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, GetSnapContextError) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, -EINVAL);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, PurgeSnapshotBusy) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, 0);
+
+  MockSnapshotPurgeRequest mock_snapshot_purge_request;
+  expect_snapshot_purge(mock_snapshot_purge_request, "image id", -EBUSY);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EBUSY, ctx.wait());
+  ASSERT_EQ(ERROR_RESULT_RETRY_IMMEDIATELY, error_result);
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, PurgeSnapshotError) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, 0);
+
+  MockSnapshotPurgeRequest mock_snapshot_purge_request;
+  expect_snapshot_purge(mock_snapshot_purge_request, "image id", -EINVAL);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
+TEST_F(TestMockImageDeleterTrashRemoveRequest, RemoveError) {
+  InSequence seq;
+
+  cls::rbd::TrashImageSpec trash_image_spec{
+    cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING, "image name", {}, {}};
+  expect_trash_get(trash_image_spec, 0);
+
+  expect_trash_state_set("image id", 0);
+
+  expect_get_snapcontext("image id", {1, {1}}, 0);
+
+  MockSnapshotPurgeRequest mock_snapshot_purge_request;
+  expect_snapshot_purge(mock_snapshot_purge_request, "image id", 0);
+
+  MockLibrbdTrashRemoveRequest mock_image_remove_request;
+  expect_image_remove(mock_image_remove_request, "image id", -EINVAL);
+
+  C_SaferCond ctx;
+  ErrorResult error_result;
+  auto req = MockTrashRemoveRequest::create(m_local_io_ctx, "image id",
+                                            &error_result,
+                                            m_threads->work_queue, &ctx);
+  req->send();
+  ASSERT_EQ(-EINVAL, ctx.wait());
+}
+
+} // namespace image_deleter
+} // namespace mirror
+} // namespace rbd
index 36df883a66fb9a3b183dc3a81ab1f3f9a7621b84..cde6348d57ac0086f88d9b2352737b70a52a01ea 100644 (file)
@@ -157,5 +157,11 @@ endif()
 add_executable(unittest_rgw_xml test_rgw_xml.cc)
 add_ceph_unittest(unittest_rgw_xml)
 
-target_link_libraries(unittest_rgw_xml rgw_a ${EXPAT_LIBRARIES})
+target_link_libraries(unittest_rgw_xml ${rgw_libs} ${EXPAT_LIBRARIES})
+
+# unittest_rgw_arn
+add_executable(unittest_rgw_arn test_rgw_arn.cc)
+add_ceph_unittest(unittest_rgw_arn)
+
+target_link_libraries(unittest_rgw_arn ${rgw_libs})
 
index b16095de1c7ef92b504eaf399ef616bbe2f25615..e37151e48fc7264cb1c02bd5d2793e64c2b46a29 100644 (file)
@@ -39,6 +39,19 @@ void set_valid_user(const std::string& user, const std::string& password) {
   VALID_PASSWORD = password;
 }
 
+std::atomic<unsigned> g_tag_skip = 0;
+std::atomic<int> g_multiple = 0;
+
+void set_multiple(unsigned tag_skip) {
+    g_multiple = 1;
+    g_tag_skip = tag_skip;
+}
+
+void reset_multiple() {
+    g_multiple = 0;
+    g_tag_skip = 0;
+}
+
 bool FAIL_NEXT_WRITE(false);
 bool FAIL_NEXT_READ(false);
 bool REPLY_ACK(true);
@@ -250,28 +263,49 @@ int amqp_simple_wait_frame_noblock(amqp_connection_state_t state, amqp_frame_t *
     // "wait" for queue
     usleep(tv->tv_sec*1000000+tv->tv_usec);
     // read from queue
-    if (REPLY_ACK) {
-      if (state->ack_list.pop(state->ack)) {
-        decoded_frame->frame_type = AMQP_FRAME_METHOD;
+    if (g_multiple) {
+      // pop multiples and reply once at the end
+      for (auto i = 0U; i < g_tag_skip; ++i) {
+        if (REPLY_ACK && !state->ack_list.pop(state->ack)) {
+          // queue is empty
+          return AMQP_STATUS_TIMEOUT;
+        } else if (!REPLY_ACK && !state->nack_list.pop(state->nack)) {
+          // queue is empty
+          return AMQP_STATUS_TIMEOUT;
+        }
+      }
+      if (REPLY_ACK) {
+        state->ack.multiple = g_multiple;
         decoded_frame->payload.method.id = AMQP_BASIC_ACK_METHOD;
         decoded_frame->payload.method.decoded = &state->ack;
-        state->reply.reply_type = AMQP_RESPONSE_NORMAL;
-        return AMQP_STATUS_OK;
       } else {
-        // queue is empty
-        return AMQP_STATUS_TIMEOUT;
-      }
-    } else {
-      if (state->nack_list.pop(state->nack)) {
-        decoded_frame->frame_type = AMQP_FRAME_METHOD;
+        state->nack.multiple = g_multiple;
         decoded_frame->payload.method.id = AMQP_BASIC_NACK_METHOD;
         decoded_frame->payload.method.decoded = &state->nack;
-        state->reply.reply_type = AMQP_RESPONSE_NORMAL;
-        return AMQP_STATUS_OK;
-      } else {
-        // queue is empty
-        return AMQP_STATUS_TIMEOUT;
       }
+      decoded_frame->frame_type = AMQP_FRAME_METHOD;
+      state->reply.reply_type = AMQP_RESPONSE_NORMAL;
+      reset_multiple();
+      return AMQP_STATUS_OK;
+    }
+    // pop replies one by one
+    if (REPLY_ACK && state->ack_list.pop(state->ack)) {
+      state->ack.multiple = g_multiple;
+      decoded_frame->frame_type = AMQP_FRAME_METHOD;
+      decoded_frame->payload.method.id = AMQP_BASIC_ACK_METHOD;
+      decoded_frame->payload.method.decoded = &state->ack;
+      state->reply.reply_type = AMQP_RESPONSE_NORMAL;
+      return AMQP_STATUS_OK;
+    } else if (!REPLY_ACK && state->nack_list.pop(state->nack)) {
+      state->nack.multiple = g_multiple;
+      decoded_frame->frame_type = AMQP_FRAME_METHOD;
+      decoded_frame->payload.method.id = AMQP_BASIC_NACK_METHOD;
+      decoded_frame->payload.method.decoded = &state->nack;
+      state->reply.reply_type = AMQP_RESPONSE_NORMAL;
+      return AMQP_STATUS_OK;
+    } else {
+      // queue is empty
+      return AMQP_STATUS_TIMEOUT;
     }
   }
   return AMQP_STATUS_CONNECTION_CLOSED;
index ac36e49000ae57067c9743eaad262458bada8c53..94fdfdddcc1c85e8f43f1692fbe586ccb07d3175 100644 (file)
@@ -9,6 +9,8 @@ void set_valid_port(int port);
 void set_valid_host(const std::string& host);
 void set_valid_vhost(const std::string& vhost);
 void set_valid_user(const std::string& user, const std::string& password);
+void set_multiple(unsigned tag);
+void reset_multiple();
   
 extern bool FAIL_NEXT_WRITE;        // default "false"
 extern bool FAIL_NEXT_READ;         // default "false"
index 78e8a6b56e8481616f8815acbd0ff1da22a95120..47afe052048a2b5de77d5015c9d0f5e8901172ec 100644 (file)
@@ -344,14 +344,18 @@ class Credentials:
         return ['--access-key', self.access_key, '--secret', self.secret]
 
 class User(SystemObject):
-    def __init__(self, uid, data = None, name = None, credentials = None):
+    def __init__(self, uid, data = None, name = None, credentials = None, tenant = None):
         self.name = name
         self.credentials = credentials or []
+        self.tenant = tenant
         super(User, self).__init__(data, uid)
 
     def user_arg(self):
         """ command-line argument to specify this user """
-        return ['--uid', self.id]
+        args = ['--uid', self.id]
+        if self.tenant:
+            args += ['--tenant', self.tenant]
+        return args
 
     def build_command(self, command):
         """ build a command line for the given command and args """
index 39315c8b60de299e4a4cddcef419172f73440d46..68bf6ab4f2feaf068dc1dd25575a9f64e4ff80f0 100644 (file)
@@ -35,6 +35,7 @@ class Config:
         self.checkpoint_delay = kwargs.get('checkpoint_delay', 5)
         # allow some time for realm reconfiguration after changing master zone
         self.reconfigure_delay = kwargs.get('reconfigure_delay', 5)
+        self.tenant = kwargs.get('tenant', '')
 
 # rgw multisite tests, written against the interfaces provided in rgw_multi.
 # these tests must be initialized and run by another module that provides
@@ -51,6 +52,12 @@ def init_multi(_realm, _user, _config=None):
     config = _config or Config()
     realm_meta_checkpoint(realm)
 
+def get_user():
+    return user.id if user is not None else ''
+
+def get_tenant():
+    return config.tenant if config is not None and config.tenant is not None else ''
+
 def get_realm():
     return realm
 
@@ -108,6 +115,7 @@ def datalog_autotrim(zone):
 
 def bilog_list(zone, bucket, args = None):
     cmd = ['bilog', 'list', '--bucket', bucket] + (args or [])
+    cmd += ['--tenant', config.tenant, '--uid', user.name] if config.tenant else []
     bilog, _ = zone.cluster.admin(cmd, read_only=True)
     bilog = bilog.decode('utf-8')
     return json.loads(bilog)
@@ -265,6 +273,7 @@ def bucket_sync_status(target_zone, source_zone, bucket_name):
     cmd = ['bucket', 'sync', 'markers'] + target_zone.zone_args()
     cmd += ['--source-zone', source_zone.name]
     cmd += ['--bucket', bucket_name]
+    cmd += ['--tenant', config.tenant, '--uid', user.name] if config.tenant else []
     while True:
         bucket_sync_status_json, retcode = target_zone.cluster.admin(cmd, check_retcode=False, read_only=True)
         if retcode == 0:
@@ -300,6 +309,7 @@ def data_source_log_status(source_zone):
 def bucket_source_log_status(source_zone, bucket_name):
     cmd = ['bilog', 'status'] + source_zone.zone_args()
     cmd += ['--bucket', bucket_name]
+    cmd += ['--tenant', config.tenant, '--uid', user.name] if config.tenant else []
     source_cluster = source_zone.cluster
     bilog_status_json, retcode = source_cluster.admin(cmd, read_only=True)
     bilog_status = json.loads(bilog_status_json.decode('utf-8'))
index 38d7088182f13ce09bb9d1b27e7f687df6eb1379..bee36670eaf58240ec1395067ef164fedd1b529f 100644 (file)
 import logging
 import json
 import tempfile
-from rgw_multi.tests import get_realm, \
+import BaseHTTPServer
+import SocketServer
+import random
+import threading
+import subprocess
+import socket
+import time
+import os
+from .tests import get_realm, \
     ZonegroupConns, \
     zonegroup_meta_checkpoint, \
     zone_meta_checkpoint, \
     zone_bucket_checkpoint, \
     zone_data_checkpoint, \
+    zonegroup_bucket_checkpoint, \
     check_bucket_eq, \
-    gen_bucket_name
-from rgw_multi.zone_ps import PSTopic, PSNotification, PSSubscription
+    gen_bucket_name, \
+    get_user, \
+    get_tenant
+from .zone_ps import PSTopic, PSTopicS3, PSNotification, PSSubscription, PSNotificationS3, print_connection_info, delete_all_s3_topics
+from multisite import User
 from nose import SkipTest
 from nose.tools import assert_not_equal, assert_equal
 
 # configure logging for the tests module
-log = logging.getLogger('rgw_multi.tests')
+log = logging.getLogger(__name__)
+
+skip_push_tests = True
 
 ####################################
 # utility functions for pubsub tests
 ####################################
 
+def set_contents_from_string(key, content):
+    try:
+        key.set_contents_from_string(content)
+    except Exception as e:
+        print 'Error: ' + str(e) 
+
+
+# HTTP endpoint functions
+# multithreaded streaming server, based on: https://stackoverflow.com/questions/46210672/
+
+class HTTPPostHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+    """HTTP POST hanler class storing the received events in its http server"""
+    def do_POST(self):
+        """implementation of POST handler"""
+        try:
+            content_length = int(self.headers['Content-Length'])
+            body = self.rfile.read(content_length)
+            log.info('HTTP Server (%d) received event: %s', self.server.worker_id, str(body))
+            self.server.append(json.loads(body))
+        except:
+            log.error('HTTP Server received empty event')
+            self.send_response(400)
+        else:
+            self.send_response(100)
+        finally:
+            self.end_headers()
+
+
+class HTTPServerWithEvents(BaseHTTPServer.HTTPServer):
+    """HTTP server used by the handler to store events"""
+    def __init__(self, addr, handler, worker_id):
+        BaseHTTPServer.HTTPServer.__init__(self, addr, handler, False)
+        self.worker_id = worker_id
+        self.events = []
+
+    def append(self, event):
+        self.events.append(event)
+
+
+class HTTPServerThread(threading.Thread):
+    """thread for running the HTTP server. reusing the same socket for all threads"""
+    def __init__(self, i, sock, addr):
+        threading.Thread.__init__(self)
+        self.i = i
+        self.daemon = True
+        self.httpd = HTTPServerWithEvents(addr, HTTPPostHandler, i)
+        self.httpd.socket = sock
+        # prevent the HTTP server from re-binding every handler
+        self.httpd.server_bind = self.server_close = lambda self: None
+        self.start()
+
+    def run(self):
+        try:
+            log.info('HTTP Server (%d) started on: %s', self.i, self.httpd.server_address)
+            self.httpd.serve_forever()
+            log.info('HTTP Server (%d) ended', self.i)
+        except Exception as error:
+            # could happen if the server r/w to a closing socket during shutdown
+            log.info('HTTP Server (%d) ended unexpectedly: %s', self.i, str(error))
+
+    def close(self):
+        self.httpd.shutdown()
+
+    def get_events(self):
+        return self.httpd.events
+
+    def reset_events(self):
+        self.httpd.events = []
+
+
+class StreamingHTTPServer:
+    """multi-threaded http server class also holding list of events received into the handler
+    each thread has its own server, and all servers share the same socket"""
+    def __init__(self, host, port, num_workers=100):
+        addr = (host, port)
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+        self.sock.bind(addr)
+        self.sock.listen(num_workers)
+        self.workers = [HTTPServerThread(i, self.sock, addr) for i in range(num_workers)]
+
+    def verify_s3_events(self, keys, exact_match=False, deletions=False):
+        """verify stored s3 records agains a list of keys"""
+        events = []
+        for worker in self.workers:
+            events += worker.get_events()
+            worker.reset_events()
+        verify_s3_records_by_elements(events, keys, exact_match=exact_match, deletions=deletions)
+
+    def verify_events(self, keys, exact_match=False, deletions=False):
+        """verify stored events agains a list of keys"""
+        events = []
+        for worker in self.workers:
+            events += worker.get_events()
+            worker.reset_events()
+        verify_events_by_elements(events, keys, exact_match=exact_match, deletions=deletions)
+
+    def close(self):
+        """close all workers in the http server and wait for it to finish"""
+        # make sure that the shared socket is closed
+        # this is needed in case that one of the threads is blocked on the socket
+        self.sock.shutdown(socket.SHUT_RDWR)
+        self.sock.close()
+        # wait for server threads to finish
+        for worker in self.workers:
+            worker.close()
+            worker.join()
+
+
+# AMQP endpoint functions
+
+rabbitmq_port = 5672
+
+class AMQPReceiver(object):
+    """class for receiving and storing messages on a topic from the AMQP broker"""
+    def __init__(self, exchange, topic):
+        import pika
+        hostname = get_ip()
+        remaining_retries = 10
+        while remaining_retries > 0:
+            try:
+                connection = pika.BlockingConnection(pika.ConnectionParameters(host=hostname, port=rabbitmq_port))
+                break
+            except Exception as error:
+                remaining_retries -= 1
+                print 'failed to connect to rabbitmq (remaining retries ' + str(remaining_retries) + '): ' + str(error)
+                time.sleep(0.5)
+
+        if remaining_retries == 0:
+            raise Exception('failed to connect to rabbitmq - no retries left')
+
+        self.channel = connection.channel()
+        self.channel.exchange_declare(exchange=exchange, exchange_type='topic', durable=True)
+        result = self.channel.queue_declare('', exclusive=True)
+        queue_name = result.method.queue
+        self.channel.queue_bind(exchange=exchange, queue=queue_name, routing_key=topic)
+        self.channel.basic_consume(queue=queue_name,
+                                   on_message_callback=self.on_message,
+                                   auto_ack=True)
+        self.events = []
+        self.topic = topic
+
+    def on_message(self, ch, method, properties, body):
+        """callback invoked when a new message arrive on the topic"""
+        log.info('AMQP received event for topic %s:\n %s', self.topic, body)
+        self.events.append(json.loads(body))
+
+    # TODO create a base class for the AMQP and HTTP cases
+    def verify_s3_events(self, keys, exact_match=False, deletions=False):
+        """verify stored s3 records agains a list of keys"""
+        verify_s3_records_by_elements(self.events, keys, exact_match=exact_match, deletions=deletions)
+        self.events = []
+
+    def verify_events(self, keys, exact_match=False, deletions=False):
+        """verify stored events agains a list of keys"""
+        verify_events_by_elements(self.events, keys, exact_match=exact_match, deletions=deletions)
+        self.events = []
+
+    def get_and_reset_events(self):
+        tmp = self.events
+        self.events = []
+        return tmp
+
+
+def amqp_receiver_thread_runner(receiver):
+    """main thread function for the amqp receiver"""
+    try:
+        log.info('AMQP receiver started')
+        receiver.channel.start_consuming()
+        log.info('AMQP receiver ended')
+    except Exception as error:
+        log.info('AMQP receiver ended unexpectedly: %s', str(error))
+
+
+def create_amqp_receiver_thread(exchange, topic):
+    """create amqp receiver and thread"""
+    receiver = AMQPReceiver(exchange, topic)
+    task = threading.Thread(target=amqp_receiver_thread_runner, args=(receiver,))
+    task.daemon = True
+    return task, receiver
+
+
+def stop_amqp_receiver(receiver, task):
+    """stop the receiver thread and wait for it to finis"""
+    try:
+        receiver.channel.stop_consuming()
+        log.info('stopping AMQP receiver')
+    except Exception as error:
+        log.info('failed to gracefuly stop AMQP receiver: %s', str(error))
+    task.join(5)
 
 def check_ps_configured():
     """check if at least one pubsub zone exist"""
     realm = get_realm()
     zonegroup = realm.master_zonegroup()
 
-    es_zones = zonegroup.zones_by_type.get("pubsub")
-    if not es_zones:
+    ps_zones = zonegroup.zones_by_type.get("pubsub")
+    if not ps_zones:
         raise SkipTest("Requires at least one PS zone")
 
 
@@ -45,7 +249,7 @@ def verify_events_by_elements(events, keys, exact_match=False, deletions=False):
         key_found = False
         for event in events:
             if event['info']['bucket']['name'] == key.bucket.name and \
-               event['info']['key']['name'] == key.name:
+                event['info']['key']['name'] == key.name:
                 if deletions and event['event'] == 'OBJECT_DELETE':
                     key_found = True
                     break
@@ -65,9 +269,85 @@ def verify_events_by_elements(events, keys, exact_match=False, deletions=False):
             assert False, err
 
 
-def init_env():
+def verify_s3_records_by_elements(records, keys, exact_match=False, deletions=False):
+    """ verify there is at least one record per element """
+    err = ''
+    for key in keys:
+        key_found = False
+        for record in records:
+            if record['s3']['bucket']['name'] == key.bucket.name and \
+                record['s3']['object']['key'] == key.name:
+                if deletions and 'ObjectRemoved' in record['eventName']:
+                    key_found = True
+                    break
+                elif not deletions and 'ObjectCreated' in record['eventName']:
+                    key_found = True
+                    break
+        if not key_found:
+            err = 'no ' + ('deletion' if deletions else 'creation') + ' event found for key: ' + str(key)
+            for record in records:
+                log.error(str(record['s3']['bucket']['name']) + ',' + str(record['s3']['object']['key']))
+            assert False, err
+
+    if not len(records) == len(keys):
+        err = 'superfluous records are found'
+        log.warning(err)
+        if exact_match:
+            for record in records:
+                log.error(str(record['s3']['bucket']['name']) + ',' + str(record['s3']['object']['key']))
+            assert False, err
+
+
+def init_rabbitmq():
+    """ start a rabbitmq broker """
+    hostname = get_ip()
+    #port = str(random.randint(20000, 30000))
+    #data_dir = './' + port + '_data'
+    #log_dir = './' + port + '_log'
+    #print('')
+    #try:
+    #    os.mkdir(data_dir)
+    #    os.mkdir(log_dir)
+    #except:
+    #    print('rabbitmq directories already exists')
+    #env = {'RABBITMQ_NODE_PORT': port,
+    #       'RABBITMQ_NODENAME': 'rabbit'+ port + '@' + hostname,
+    #       'RABBITMQ_USE_LONGNAME': 'true',
+    #       'RABBITMQ_MNESIA_BASE': data_dir,
+    #       'RABBITMQ_LOG_BASE': log_dir}
+    # TODO: support multiple brokers per host using env
+    # make sure we don't collide with the default
+    try:
+        proc = subprocess.Popen('rabbitmq-server')
+    except Exception as error:
+        log.info('failed to execute rabbitmq-server: %s', str(error))
+        print 'failed to execute rabbitmq-server: %s' % str(error)
+        return None
+    # TODO add rabbitmq checkpoint instead of sleep
+    time.sleep(5)
+    return proc #, port, data_dir, log_dir
+
+
+def clean_rabbitmq(proc): #, data_dir, log_dir)
+    """ stop the rabbitmq broker """
+    try:
+        subprocess.call(['rabbitmqctl', 'stop'])
+        time.sleep(5)
+        proc.terminate()
+    except:
+        log.info('rabbitmq server already terminated')
+    # TODO: add directory cleanup once multiple brokers are supported
+    #try:
+    #    os.rmdir(data_dir)
+    #    os.rmdir(log_dir)
+    #except:
+    #    log.info('rabbitmq directories already removed')
+
+
+def init_env(require_ps=True):
     """initialize the environment"""
-    check_ps_configured()
+    if require_ps:
+        check_ps_configured()
 
     realm = get_realm()
     zonegroup = realm.master_zonegroup()
@@ -85,142 +365,160 @@ def init_env():
             zones.append(conn)
 
     assert_not_equal(len(zones), 0)
-    assert_not_equal(len(ps_zones), 0)
+    if require_ps:
+        assert_not_equal(len(ps_zones), 0)
     return zones, ps_zones
 
 
+def get_ip():
+    """ This method returns the "primary" IP on the local box (the one with a default route)
+    source: https://stackoverflow.com/a/28950776/711085
+    this is needed because on the teuthology machines: socket.getfqdn()/socket.gethostname() return 127.0.0.1 """
+    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    try:
+        # address should not be reachable
+        s.connect(('10.255.255.255', 1))
+        ip = s.getsockname()[0]
+    finally:
+        s.close()
+    return ip
+
+
 TOPIC_SUFFIX = "_topic"
 SUB_SUFFIX = "_sub"
+NOTIFICATION_SUFFIX = "_notif"
 
 ##############
 # pubsub tests
 ##############
 
-
-def test_ps_topic():
-    """ test set/get/delete of topic """
-    _, ps_zones = init_env()
+def test_ps_info():
+    """ log information for manual testing """
+    return SkipTest("only used in manual testing")
+    zones, ps_zones = init_env()
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
-
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    _, status = topic_conf.set_config()
-    assert_equal(status/100, 2)
-    # get topic
-    result, _ = topic_conf.get_config()
-    # verify topic content
-    parsed_result = json.loads(result)
-    assert_equal(parsed_result['topic']['name'], topic_name)
-    assert_equal(len(parsed_result['subs']), 0)
-    # delete topic
-    _, status = topic_conf.del_config()
-    assert_equal(status/100, 2)
-    # verift topic is deleted
-    result, _ = topic_conf.get_config()
-    parsed_result = json.loads(result)
-    assert_equal(parsed_result['Code'], 'NoSuchKey')
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    print 'Zonegroup: ' + zonegroup.name
+    print 'user: ' + get_user()
+    print 'tenant: ' + get_tenant()
+    print 'Master Zone'
+    print_connection_info(zones[0].conn)
+    print 'PubSub Zone'
+    print_connection_info(ps_zones[0].conn)
+    print 'Bucket: ' + bucket_name
 
 
-def test_ps_notification():
-    """ test set/get/delete of notification """
+def test_ps_s3_notification_low_level():
+    """ test low level implementation of s3 notifications """
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
-
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
     zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name)
-    _, status = notification_conf.set_config()
+    # create topic
+    topic_name = bucket_name + TOPIC_SUFFIX
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    result, status = topic_conf.set_config()
     assert_equal(status/100, 2)
-    # get notification
-    result, _ = notification_conf.get_config()
     parsed_result = json.loads(result)
-    assert_equal(len(parsed_result['topics']), 1)
-    assert_equal(parsed_result['topics'][0]['topic']['name'],
-                 topic_name)
-    # delete notification
-    _, status = notification_conf.del_config()
+    topic_arn = parsed_result['arn']
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    generated_topic_name = notification_name+'_'+topic_name
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
     assert_equal(status/100, 2)
-    # TODO: deletion cannot be verified via GET
-    # result, _ = notification_conf.get_config()
-    # parsed_result = json.loads(result)
-    # assert_equal(parsed_result['Code'], 'NoSuchKey')
-
-    # cleanup
-    topic_conf.del_config()
-    zones[0].delete_bucket(bucket_name)
-
-
-def test_ps_notification_events():
-    """ test set/get/delete of notification on specific events"""
-    zones, ps_zones = init_env()
-    bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
-
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
-    # create bucket on the first of the rados zones
-    zones[0].create_bucket(bucket_name)
-    # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    events = "OBJECT_CREATE,OBJECT_DELETE"
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name,
-                                       events)
-    _, status = notification_conf.set_config()
+    # get auto-generated topic
+    generated_topic_conf = PSTopic(ps_zones[0].conn, generated_topic_name)
+    result, status = generated_topic_conf.get_config()
+    parsed_result = json.loads(result)
     assert_equal(status/100, 2)
-    # get notification
-    result, _ = notification_conf.get_config()
+    assert_equal(parsed_result['topic']['name'], generated_topic_name)
+    # get auto-generated notification
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       generated_topic_name)
+    result, status = notification_conf.get_config()
     parsed_result = json.loads(result)
+    assert_equal(status/100, 2)
     assert_equal(len(parsed_result['topics']), 1)
-    assert_equal(parsed_result['topics'][0]['topic']['name'],
-                 topic_name)
-    assert_not_equal(len(parsed_result['topics'][0]['events']), 0)
-    # TODO add test for invalid event name
+    # get auto-generated subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, notification_name,
+                              generated_topic_name)
+    result, status = sub_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(status/100, 2)
+    assert_equal(parsed_result['topic'], generated_topic_name)
+    # delete s3 notification
+    _, status = s3_notification_conf.del_config(notification=notification_name)
+    assert_equal(status/100, 2)
+    # delete topic
+    _, status = topic_conf.del_config()
+    assert_equal(status/100, 2)
+
+    # verify low-level cleanup
+    _, status = generated_topic_conf.get_config()
+    assert_equal(status, 404)
+    result, status = notification_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(len(parsed_result['topics']), 0)
+    # TODO should return 404
+    # assert_equal(status, 404)
+    result, status = sub_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic'], '')
+    # TODO should return 404
+    # assert_equal(status, 404)
 
     # cleanup
-    notification_conf.del_config()
     topic_conf.del_config()
+    # delete the bucket
     zones[0].delete_bucket(bucket_name)
 
 
-def test_ps_subscription():
-    """ test set/get/delete of subscription """
+def test_ps_s3_notification_records():
+    """ test s3 records fetching """
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
-
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
     bucket = zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name)
-    _, status = notification_conf.set_config()
+    # create topic
+    topic_name = bucket_name + TOPIC_SUFFIX
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    result, status = topic_conf.set_config()
     assert_equal(status/100, 2)
-    # create subscription
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+    parsed_result = json.loads(result)
+    topic_arn = parsed_result['arn']
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # get auto-generated subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, notification_name,
                               topic_name)
-    _, status = sub_conf.set_config()
+    _, status = sub_conf.get_config()
     assert_equal(status/100, 2)
-    # get the subscription
-    result, _ = sub_conf.get_config()
-    parsed_result = json.loads(result)
-    assert_equal(parsed_result['topic'], topic_name)
     # create objects in the bucket
     number_of_objects = 10
     for i in range(number_of_objects):
@@ -229,257 +527,2080 @@ def test_ps_subscription():
     # wait for sync
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
 
-    # get the create events from the subscription
+    # get the events from the subscription
     result, _ = sub_conf.get_events()
     parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    for record in parsed_result['Records']:
+        log.debug(record)
     keys = list(bucket.list())
-    # TODO: set exact_match to true
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
-    # delete objects from the bucket
-    for key in bucket.list():
-        key.delete()
-    # wait for sync
-    zone_meta_checkpoint(ps_zones[0].zone)
-    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
-
-    # get the delete events from the subscriptions
-    result, _ = sub_conf.get_events()
-    for event in parsed_result['events']:
-        log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
-    # TODO: check deletions
-    # verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
-    # we should see the creations as well as the deletions
-    # delete subscription
-    _, status = sub_conf.del_config()
-    assert_equal(status/100, 2)
-    result, _ = sub_conf.get_config()
-    parsed_result = json.loads(result)
-    assert_equal(parsed_result['topic'], '')
-    # TODO should return "no-key" instead
-    # assert_equal(parsed_result['Code'], 'NoSuchKey')
+    # TODO: use exact match
+    verify_s3_records_by_elements(parsed_result['Records'], keys, exact_match=False)
 
     # cleanup
-    notification_conf.del_config()
+    _, status = s3_notification_conf.del_config()
     topic_conf.del_config()
+    # delete the keys
+    for key in bucket.list():
+        key.delete()
     zones[0].delete_bucket(bucket_name)
 
 
-def test_ps_event_type_subscription():
-    """ test subscriptions for different events """
+def test_ps_s3_notification():
+    """ test s3 notification set/get/delete """
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-
-    # create topic for objects creation
-    topic_create_name = bucket_name+TOPIC_SUFFIX+'_create'
-    topic_create_conf = PSTopic(ps_zones[0].conn, topic_create_name)
-    topic_create_conf.set_config()
-    # create topic for objects deletion
-    topic_delete_name = bucket_name+TOPIC_SUFFIX+'_delete'
-    topic_delete_conf = PSTopic(ps_zones[0].conn, topic_delete_name)
-    topic_delete_conf.set_config()
-    # create topic for all events
-    topic_name = bucket_name+TOPIC_SUFFIX+'_all'
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
-    bucket = zones[0].create_bucket(bucket_name)
+    zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
-    # create notifications for objects creation
-    notification_create_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                              topic_create_name, "OBJECT_CREATE")
-    _, status = notification_create_conf.set_config()
+    topic_name = bucket_name + TOPIC_SUFFIX
+    # create topic
+    topic_name = bucket_name + TOPIC_SUFFIX
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    response, status = topic_conf.set_config()
     assert_equal(status/100, 2)
-    # create notifications for objects deletion
-    notification_delete_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                              topic_delete_name, "OBJECT_DELETE")
-    _, status = notification_delete_conf.set_config()
+    parsed_result = json.loads(response)
+    topic_arn = parsed_result['arn']
+    # create one s3 notification
+    notification_name1 = bucket_name + NOTIFICATION_SUFFIX + '_1'
+    topic_conf_list = [{'Id': notification_name1,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf1 = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf1.set_config()
     assert_equal(status/100, 2)
-    # create notifications for all events
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name, "OBJECT_DELETE,OBJECT_CREATE")
-    _, status = notification_conf.set_config()
+    # create another s3 notification with the same topic
+    notification_name2 = bucket_name + NOTIFICATION_SUFFIX + '_2'
+    topic_conf_list = [{'Id': notification_name2,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*']
+                       }]
+    s3_notification_conf2 = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf2.set_config()
     assert_equal(status/100, 2)
-    # create subscription for objects creation
-    sub_create_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_create',
-                                     topic_create_name)
-    _, status = sub_create_conf.set_config()
+    zone_meta_checkpoint(ps_zones[0].zone)
+
+    # get all notification on a bucket
+    response, status = s3_notification_conf1.get_config()
     assert_equal(status/100, 2)
-    # create subscription for objects deletion
-    sub_delete_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_delete',
-                                     topic_delete_name)
-    _, status = sub_delete_conf.set_config()
+    assert_equal(len(response['TopicConfigurations']), 2)
+    assert_equal(response['TopicConfigurations'][0]['TopicArn'], topic_arn)
+    assert_equal(response['TopicConfigurations'][1]['TopicArn'], topic_arn)
+
+    # get specific notification on a bucket
+    response, status = s3_notification_conf1.get_config(notification=notification_name1)
     assert_equal(status/100, 2)
-    # create subscription for all events
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_all',
-                              topic_name)
-    _, status = sub_conf.set_config()
+    assert_equal(response['NotificationConfiguration']['TopicConfiguration']['Topic'], topic_arn)
+    assert_equal(response['NotificationConfiguration']['TopicConfiguration']['Id'], notification_name1)
+    response, status = s3_notification_conf2.get_config(notification=notification_name2)
     assert_equal(status/100, 2)
-    # create objects in the bucket
-    number_of_objects = 10
-    for i in range(number_of_objects):
-        key = bucket.new_key(str(i))
-        key.set_contents_from_string('bar')
-    # wait for sync
-    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    assert_equal(response['NotificationConfiguration']['TopicConfiguration']['Topic'], topic_arn)
+    assert_equal(response['NotificationConfiguration']['TopicConfiguration']['Id'], notification_name2)
+
+    # delete specific notifications
+    _, status = s3_notification_conf1.del_config(notification=notification_name1)
+    assert_equal(status/100, 2)
+    _, status = s3_notification_conf2.del_config(notification=notification_name2)
+    assert_equal(status/100, 2)
+
+    # cleanup
+    topic_conf.del_config()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+
+def test_ps_s3_topic_on_master():
+    """ test s3 notification set/get/delete on master """
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # clean all topics
+    delete_all_s3_topics(zones[0].conn, zonegroup.name)
+   
+    # create s3 topics
+    endpoint_address = 'amqp://127.0.0.1:7001'
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=amqp.direct&amqp-ack-level=none'
+    topic_conf1 = PSTopicS3(zones[0].conn, topic_name+'_1', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf1.set_config()
+    assert_equal(topic_arn,
+                 'arn:aws:sns:' + zonegroup.name + ':' + get_tenant() + ':' + topic_name + '_1')
+
+    endpoint_address = 'http://127.0.0.1:9001'
+    endpoint_args = 'push-endpoint='+endpoint_address
+    topic_conf2 = PSTopicS3(zones[0].conn, topic_name+'_2', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf2.set_config()
+    assert_equal(topic_arn,
+                 'arn:aws:sns:' + zonegroup.name + ':' + get_tenant() + ':' + topic_name + '_2')
+    endpoint_address = 'http://127.0.0.1:9002'
+    endpoint_args = 'push-endpoint='+endpoint_address
+    topic_conf3 = PSTopicS3(zones[0].conn, topic_name+'_3', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf3.set_config()
+    assert_equal(topic_arn,
+                 'arn:aws:sns:' + zonegroup.name + ':' + get_tenant() + ':' + topic_name + '_3')
+
+    # get topic 3
+    result, status = topic_conf3.get_config()
+    assert_equal(status, 200)
+    assert_equal(topic_arn, result['GetTopicResponse']['GetTopicResult']['Topic']['TopicArn'])
+    assert_equal(endpoint_address, result['GetTopicResponse']['GetTopicResult']['Topic']['EndPoint']['EndpointAddress'])
+    # Note that endpoint args may be ordered differently in the result
+
+    # delete topic 1
+    result = topic_conf1.del_config()
+    assert_equal(status, 200)
+
+    # try to get a deleted topic
+    _, status = topic_conf1.get_config()
+    assert_equal(status, 404)
+
+    # get the remaining 2 topics
+    result = topic_conf1.get_list()
+    assert_equal(len(result['Topics']), 2)
+    
+    # delete topics
+    result = topic_conf2.del_config()
+    # TODO: should be 200OK
+    # assert_equal(status, 200)
+    result = topic_conf3.del_config()
+    # TODO: should be 200OK
+    # assert_equal(status, 200)
+
+    # get topic list, make sure it is empty
+    result = topic_conf1.get_list()
+    assert_equal(len(result['Topics']), 0)
+
+
+def test_ps_s3_notification_on_master():
+    """ test s3 notification set/get/delete on master """
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    bucket_name = gen_bucket_name()
+    # create bucket
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+    # create s3 topic
+    endpoint_address = 'amqp://127.0.0.1:7001'
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=amqp.direct&amqp-ack-level=none'
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name+'_1',
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       },
+                       {'Id': notification_name+'_2',
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectRemoved:*']
+                       },
+                       {'Id': notification_name+'_3',
+                        'TopicArn': topic_arn,
+                        'Events': []
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # get notifications on a bucket
+    response, status = s3_notification_conf.get_config(notification=notification_name+'_1')
+    assert_equal(status/100, 2)
+    assert_equal(response['NotificationConfiguration']['TopicConfiguration']['Topic'], topic_arn)
+
+    # delete specific notifications
+    _, status = s3_notification_conf.del_config(notification=notification_name+'_1')
+    assert_equal(status/100, 2)
+
+    # get the remaining 2 notifications on a bucket
+    response, status = s3_notification_conf.get_config()
+    assert_equal(status/100, 2)
+    assert_equal(len(response['TopicConfigurations']), 2)
+    assert_equal(response['TopicConfigurations'][0]['TopicArn'], topic_arn)
+    assert_equal(response['TopicConfigurations'][1]['TopicArn'], topic_arn)
+
+    # delete remaining notifications
+    _, status = s3_notification_conf.del_config()
+    assert_equal(status/100, 2)
+
+    # make sure that the notifications are now deleted
+    _, status = s3_notification_conf.get_config()
+
+    # cleanup
+    topic_conf.del_config()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+
+
+def ps_s3_notification_filter(on_master):
+    """ test s3 notification filter on master """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    if on_master:
+        zones, _  = init_env(require_ps=False)
+        ps_zone = zones[0]
+    else:
+        zones, ps_zones  = init_env(require_ps=True)
+        ps_zone = ps_zones[0]
+
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # start amqp receivers
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+
+    # create s3 topic
+    endpoint_address = 'amqp://' + hostname
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=broker'
+    if on_master:
+        topic_conf = PSTopicS3(ps_zone.conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+        topic_arn = topic_conf.set_config()
+    else:
+        topic_conf = PSTopic(ps_zone.conn, topic_name, endpoint=endpoint_address, endpoint_args=endpoint_args)
+        result, _ = topic_conf.set_config()
+        parsed_result = json.loads(result)
+        topic_arn = parsed_result['arn']
+        zone_meta_checkpoint(ps_zone.zone)
+
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name+'_1',
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*'],
+                       'Filter': {
+                         'Key': {
+                            'FilterRules': [{'Name': 'prefix', 'Value': 'hello'}]
+                         }
+                        }
+                       },
+                       {'Id': notification_name+'_2',
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*'],
+                       'Filter': {
+                         'Key': {
+                            'FilterRules': [{'Name': 'prefix', 'Value': 'world'},
+                                            {'Name': 'suffix', 'Value': 'log'}]
+                         }
+                        }
+                       },
+                       {'Id': notification_name+'_3',
+                        'TopicArn': topic_arn,
+                        'Events': [],
+                       'Filter': {
+                          'Key': {
+                            'FilterRules': [{'Name': 'regex', 'Value': '([a-z]+)\\.txt'}]
+                         }
+                        }
+                       }]
+
+    s3_notification_conf = PSNotificationS3(ps_zone.conn, bucket_name, topic_conf_list)
+    result, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    if on_master:
+        topic_conf_list = [{'Id': notification_name+'_4',
+                            'TopicArn': topic_arn,
+                            'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*'],
+                           'Filter': {
+                               'Metadata': {
+                                    'FilterRules': [{'Name': 'x-amz-meta-foo', 'Value': 'bar'},
+                                                    {'Name': 'x-amz-meta-hello', 'Value': 'world'}]
+                               },
+                                'Key': {
+                                    'FilterRules': [{'Name': 'regex', 'Value': '([a-z]+)'}]
+                                }
+                            }
+                            }]
+
+        try:
+            s3_notification_conf4 = PSNotificationS3(ps_zone.conn, bucket_name, topic_conf_list)
+            _, status = s3_notification_conf4.set_config()
+            assert_equal(status/100, 2)
+            skip_notif4 = False
+        except Exception as error:
+            print 'note: metadata filter is not supported by boto3 - skipping test'
+            skip_notif4 = True
+    else:
+        print 'filtering by attributes only supported on master zone'
+        skip_notif4 = True
+
+
+    # get all notifications
+    result, status = s3_notification_conf.get_config()
+    assert_equal(status/100, 2)
+    for conf in result['TopicConfigurations']:
+        filter_name = conf['Filter']['Key']['FilterRules'][0]['Name']
+        assert filter_name == 'prefix' or filter_name == 'suffix' or filter_name == 'regex', filter_name
+
+    if not skip_notif4:
+        result, status = s3_notification_conf4.get_config(notification=notification_name+'_4')
+        assert_equal(status/100, 2)
+        filter_name = result['NotificationConfiguration']['TopicConfiguration']['Filter']['S3Metadata']['FilterRule'][0]['Name']
+        assert filter_name == 'x-amz-meta-foo' or filter_name == 'x-amz-meta-hello'
+
+    expected_in1 = ['hello.kaboom', 'hello.txt', 'hello123.txt', 'hello']
+    expected_in2 = ['world1.log', 'world2log', 'world3.log']
+    expected_in3 = ['hello.txt', 'hell.txt', 'worldlog.txt']
+    expected_in4 = ['foo', 'bar', 'hello', 'world']
+    filtered = ['hell.kaboom', 'world.og', 'world.logg', 'he123ll.txt', 'wo', 'log', 'h', 'txt', 'world.log.txt']
+    filtered_with_attr = ['nofoo', 'nobar', 'nohello', 'noworld']
+    # create objects in bucket
+    for key_name in expected_in1:
+        key = bucket.new_key(key_name)
+        key.set_contents_from_string('bar')
+    for key_name in expected_in2:
+        key = bucket.new_key(key_name)
+        key.set_contents_from_string('bar')
+    for key_name in expected_in3:
+        key = bucket.new_key(key_name)
+        key.set_contents_from_string('bar')
+    if not skip_notif4:
+        for key_name in expected_in4:
+            key = bucket.new_key(key_name)
+            key.set_metadata('foo', 'bar')
+            key.set_metadata('hello', 'world')
+            key.set_metadata('goodbye', 'cruel world')
+            key.set_contents_from_string('bar')
+    for key_name in filtered:
+        key = bucket.new_key(key_name)
+        key.set_contents_from_string('bar')
+    for key_name in filtered_with_attr:
+        key.set_metadata('foo', 'nobar')
+        key.set_metadata('hello', 'noworld')
+        key.set_metadata('goodbye', 'cruel world')
+        key = bucket.new_key(key_name)
+        key.set_contents_from_string('bar')
+
+    if on_master:
+        print 'wait for 5sec for the messages...'
+        time.sleep(5)
+    else:
+        zone_bucket_checkpoint(ps_zone.zone, zones[0].zone, bucket_name)
+
+    found_in1 = []
+    found_in2 = []
+    found_in3 = []
+    found_in4 = []
+
+    for event in receiver.get_and_reset_events():
+        notif_id = event['s3']['configurationId']
+        key_name = event['s3']['object']['key']
+        if notif_id == notification_name+'_1':
+            found_in1.append(key_name)
+        elif notif_id == notification_name+'_2':
+            found_in2.append(key_name)
+        elif notif_id == notification_name+'_3':
+            found_in3.append(key_name)
+        elif not skip_notif4 and notif_id == notification_name+'_4':
+            found_in4.append(key_name)
+        else:
+            assert False, 'invalid notification: ' + notif_id
+
+    assert_equal(set(found_in1), set(expected_in1))
+    assert_equal(set(found_in2), set(expected_in2))
+    assert_equal(set(found_in3), set(expected_in3))
+    if not skip_notif4:
+        assert_equal(set(found_in4), set(expected_in4))
+
+    # cleanup
+    s3_notification_conf.del_config()
+    if not skip_notif4:
+        s3_notification_conf4.del_config()
+    topic_conf.del_config()
+    # delete the bucket
+    for key in bucket.list():
+        key.delete()
+    zones[0].delete_bucket(bucket_name)
+    stop_amqp_receiver(receiver, task)
+    clean_rabbitmq(proc)
+
+
+def test_ps_s3_notification_filter_on_master():
+    ps_s3_notification_filter(on_master=True)
+
+
+def test_ps_s3_notification_filter():
+    ps_s3_notification_filter(on_master=False)
+
+
+def test_ps_s3_notification_errors_on_master():
+    """ test s3 notification set/get/delete on master """
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    bucket_name = gen_bucket_name()
+    # create bucket
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+    # create s3 topic
+    endpoint_address = 'amqp://127.0.0.1:7001'
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=amqp.direct&amqp-ack-level=none'
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+
+    # create s3 notification with invalid event name
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:Kaboom']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    try:
+      result, status = s3_notification_conf.set_config()
+    except Exception as error:
+      print str(error) + ' - is expected'
+    else:
+      assert False, 'invalid event name is expected to fail'
+
+    # create s3 notification with missing name
+    topic_conf_list = [{'Id': '',
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:Put']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    try:
+      _, _ = s3_notification_conf.set_config()
+    except Exception as error:
+      print str(error) + ' - is expected'
+    else:
+      assert False, 'missing notification name is expected to fail'
+
+    # create s3 notification with invalid topic ARN
+    invalid_topic_arn = 'kaboom'
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': invalid_topic_arn,
+                        'Events': ['s3:ObjectCreated:Put']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    try:
+      _, _ = s3_notification_conf.set_config()
+    except Exception as error:
+      print str(error) + ' - is expected'
+    else:
+      assert False, 'invalid ARN is expected to fail'
+
+    # create s3 notification with unknown topic ARN
+    invalid_topic_arn = 'arn:aws:sns:a::kaboom'
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': invalid_topic_arn ,
+                        'Events': ['s3:ObjectCreated:Put']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    try:
+      _, _ = s3_notification_conf.set_config()
+    except Exception as error:
+      print str(error) + ' - is expected'
+    else:
+      assert False, 'unknown topic is expected to fail'
+
+    # create s3 notification with wrong bucket
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:Put']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, 'kaboom', topic_conf_list)
+    try:
+      _, _ = s3_notification_conf.set_config()
+    except Exception as error:
+      print str(error) + ' - is expected'
+    else:
+      assert False, 'unknown bucket is expected to fail'
+
+    topic_conf.del_config()
+
+    status = topic_conf.del_config()
+    # deleting an unknown notification is not considered an error
+    assert_equal(status, 200)
+    
+    _, status = topic_conf.get_config()
+    assert_equal(status, 404)
+    
+    # cleanup
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_objcet_timing():
+    return SkipTest("only used in manual testing")
+    zones, _  = init_env(require_ps=False)
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    # create objects in the bucket (async)
+    print 'creating objects...'
+    number_of_objects = 1000
+    client_threads = []
+    start_time = time.time()
+    content = str(bytearray(os.urandom(1024*1024)))
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        thr = threading.Thread(target = set_contents_from_string, args=(key, content,))
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+
+    time_diff = time.time() - start_time
+    print 'average time for object creation: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+    
+    print 'total number of objects: ' + str(len(list(bucket.list())))
+
+    print 'deleting objects...'
+    client_threads = []
+    start_time = time.time()
+    for key in bucket.list():
+        thr = threading.Thread(target = key.delete, args=())
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+    
+    time_diff = time.time() - start_time
+    print 'average time for object deletion: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+    
+    # cleanup
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_s3_notification_push_amqp_on_master():
+    """ test pushing amqp s3 notification on master """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name1 = bucket_name + TOPIC_SUFFIX + '_1'
+    topic_name2 = bucket_name + TOPIC_SUFFIX + '_2'
+
+    # start amqp receivers
+    exchange = 'ex1'
+    task1, receiver1 = create_amqp_receiver_thread(exchange, topic_name1)
+    task2, receiver2 = create_amqp_receiver_thread(exchange, topic_name2)
+    task1.start()
+    task2.start()
+
+    # create two s3 topic
+    endpoint_address = 'amqp://' + hostname
+    # with acks from broker
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=broker'
+    topic_conf1 = PSTopicS3(zones[0].conn, topic_name1, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn1 = topic_conf1.set_config()
+    # without acks from broker
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=none'
+    topic_conf2 = PSTopicS3(zones[0].conn, topic_name2, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn2 = topic_conf2.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name+'_1', 'TopicArn': topic_arn1,
+                         'Events': []
+                       },
+                       {'Id': notification_name+'_2', 'TopicArn': topic_arn2,
+                         'Events': ['s3:ObjectCreated:*']
+                       }]
+
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket (async)
+    number_of_objects = 100
+    client_threads = []
+    start_time = time.time()
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        content = str(os.urandom(1024*1024))
+        thr = threading.Thread(target = set_contents_from_string, args=(key, content,))
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+
+    time_diff = time.time() - start_time
+    print 'average time for creation + qmqp notification is: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+
+    # check amqp receiver
+    keys = list(bucket.list())
+    print 'total number of objects: ' + str(len(keys))
+    receiver1.verify_s3_events(keys, exact_match=True)
+    receiver2.verify_s3_events(keys, exact_match=True)
+    
+    # delete objects from the bucket
+    client_threads = []
+    start_time = time.time()
+    for key in bucket.list():
+        thr = threading.Thread(target = key.delete, args=())
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+    
+    time_diff = time.time() - start_time
+    print 'average time for creation + http notification is: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+    
+    # check amqp receiver 1 for deletions
+    receiver1.verify_s3_events(keys, exact_match=True, deletions=True)
+    # check amqp receiver 2 has no deletions
+    try:
+        receiver1.verify_s3_events(keys, exact_match=False, deletions=True)
+    except:
+        pass
+    else:
+        err = 'amqp receiver 2 should have no deletions'
+        assert False, err
+
+
+    # cleanup
+    stop_amqp_receiver(receiver1, task1)
+    stop_amqp_receiver(receiver2, task2)
+    s3_notification_conf.del_config()
+    topic_conf1.del_config()
+    topic_conf2.del_config()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_s3_notification_push_http_on_master():
+    """ test pushing http s3 notification on master """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create random port for the http server
+    host = get_ip()
+    port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    number_of_objects = 100
+    http_server = StreamingHTTPServer(host, port, num_workers=number_of_objects)
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # create s3 topic
+    endpoint_address = 'http://'+host+':'+str(port)
+    endpoint_args = 'push-endpoint='+endpoint_address
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': []
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket
+    client_threads = []
+    start_time = time.time()
+    content = 'bar'
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        thr = threading.Thread(target = set_contents_from_string, args=(key, content,))
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+
+    time_diff = time.time() - start_time
+    print 'average time for creation + http notification is: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+    
+    # check http receiver
+    keys = list(bucket.list())
+    print 'total number of objects: ' + str(len(keys))
+    http_server.verify_s3_events(keys, exact_match=True)
+    
+    # delete objects from the bucket
+    client_threads = []
+    start_time = time.time()
+    for key in bucket.list():
+        thr = threading.Thread(target = key.delete, args=())
+        thr.start()
+        client_threads.append(thr)
+    [thr.join() for thr in client_threads] 
+    
+    time_diff = time.time() - start_time
+    print 'average time for creation + http notification is: ' + str(time_diff*1000/number_of_objects) + ' milliseconds'
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+    
+    # check http receiver
+    http_server.verify_s3_events(keys, exact_match=True, deletions=True)
+    
+    # cleanup
+    topic_conf.del_config()
+    s3_notification_conf.del_config(notification=notification_name)
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    http_server.close()
+
+
+def test_ps_topic():
+    """ test set/get/delete of topic """
+    _, ps_zones = init_env()
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    _, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    # get topic
+    result, _ = topic_conf.get_config()
+    # verify topic content
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic']['name'], topic_name)
+    assert_equal(len(parsed_result['subs']), 0)
+    assert_equal(parsed_result['topic']['arn'],
+                 'arn:aws:sns:' + zonegroup.name + ':' + get_tenant() + ':' + topic_name)
+    # delete topic
+    _, status = topic_conf.del_config()
+    assert_equal(status/100, 2)
+    # verift topic is deleted
+    result, status = topic_conf.get_config()
+    assert_equal(status, 404)
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['Code'], 'NoSuchKey')
+
+
+def test_ps_topic_with_endpoint():
+    """ test set topic with endpoint"""
+    _, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    dest_endpoint = 'amqp://localhost:7001'
+    dest_args = 'amqp-exchange=amqp.direct&amqp-ack-level=none'
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name,
+                         endpoint=dest_endpoint,
+                         endpoint_args=dest_args)
+    _, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    # get topic
+    result, _ = topic_conf.get_config()
+    # verify topic content
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic']['name'], topic_name)
+    assert_equal(parsed_result['topic']['dest']['push_endpoint'], dest_endpoint)
+    # cleanup
+    topic_conf.del_config()
+
+
+def test_ps_notification():
+    """ test set/get/delete of notification """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # get notification
+    result, _ = notification_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(len(parsed_result['topics']), 1)
+    assert_equal(parsed_result['topics'][0]['topic']['name'],
+                 topic_name)
+    # delete notification
+    _, status = notification_conf.del_config()
+    assert_equal(status/100, 2)
+    result, status = notification_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(len(parsed_result['topics']), 0)
+    # TODO should return 404
+    # assert_equal(status, 404)
+
+    # cleanup
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_notification_events():
+    """ test set/get/delete of notification on specific events"""
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    events = "OBJECT_CREATE,OBJECT_DELETE"
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name,
+                                       events)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # get notification
+    result, _ = notification_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(len(parsed_result['topics']), 1)
+    assert_equal(parsed_result['topics'][0]['topic']['name'],
+                 topic_name)
+    assert_not_equal(len(parsed_result['topics'][0]['events']), 0)
+    # TODO add test for invalid event name
+
+    # cleanup
+    notification_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_subscription():
+    """ test set/get/delete of subscription """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name)
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # get the subscription
+    result, _ = sub_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic'], topic_name)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # get the create events from the subscription
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # get the delete events from the subscriptions
+    result, _ = sub_conf.get_events()
+    for event in parsed_result['events']:
+        log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    # TODO: check deletions
+    # TODO: use exact match
+    # verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
+    # we should see the creations as well as the deletions
+    # delete subscription
+    _, status = sub_conf.del_config()
+    assert_equal(status/100, 2)
+    result, status = sub_conf.get_config()
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic'], '')
+    # TODO should return 404
+    # assert_equal(status, 404)
+
+    # cleanup
+    notification_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_event_type_subscription():
+    """ test subscriptions for different events """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+
+    # create topic for objects creation
+    topic_create_name = bucket_name+TOPIC_SUFFIX+'_create'
+    topic_create_conf = PSTopic(ps_zones[0].conn, topic_create_name)
+    topic_create_conf.set_config()
+    # create topic for objects deletion
+    topic_delete_name = bucket_name+TOPIC_SUFFIX+'_delete'
+    topic_delete_conf = PSTopic(ps_zones[0].conn, topic_delete_name)
+    topic_delete_conf.set_config()
+    # create topic for all events
+    topic_name = bucket_name+TOPIC_SUFFIX+'_all'
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # create notifications for objects creation
+    notification_create_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                              topic_create_name, "OBJECT_CREATE")
+    _, status = notification_create_conf.set_config()
+    assert_equal(status/100, 2)
+    # create notifications for objects deletion
+    notification_delete_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                              topic_delete_name, "OBJECT_DELETE")
+    _, status = notification_delete_conf.set_config()
+    assert_equal(status/100, 2)
+    # create notifications for all events
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name, "OBJECT_DELETE,OBJECT_CREATE")
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription for objects creation
+    sub_create_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_create',
+                                     topic_create_name)
+    _, status = sub_create_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription for objects deletion
+    sub_delete_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_delete',
+                                     topic_delete_name)
+    _, status = sub_delete_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription for all events
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_all',
+                              topic_name)
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
 
     # get the events from the creation subscription
     result, _ = sub_create_conf.get_events()
     parsed_result = json.loads(result)
     for event in parsed_result['events']:
-        log.debug('Event (OBJECT_CREATE): objname: "' + str(event['info']['key']['name']) + \
-                  '" type: "' + str(event['event']) + '"')
+        log.debug('Event (OBJECT_CREATE): objname: "' + str(event['info']['key']['name']) +
+                  '" type: "' + str(event['event']) + '"')
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
+    # get the events from the deletions subscription
+    result, _ = sub_delete_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) +
+                  '" type: "' + str(event['event']) + '"')
+    assert_equal(len(parsed_result['events']), 0)
+    # get the events from the all events subscription
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (OBJECT_CREATE,OBJECT_DELETE): objname: "' +
+                  str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    log.debug("Event (OBJECT_DELETE) synced")
+
+    # get the events from the creations subscription
+    result, _ = sub_create_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (OBJECT_CREATE): objname: "' + str(event['info']['key']['name']) +
+                  '" type: "' + str(event['event']) + '"')
+    # deletions should not change the creation events
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
+    # get the events from the deletions subscription
+    result, _ = sub_delete_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) +
+                  '" type: "' + str(event['event']) + '"')
+    # only deletions should be listed here
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
+    # get the events from the all events subscription
+    result, _ = sub_create_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (OBJECT_CREATE,OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) +
+                  '" type: "' + str(event['event']) + '"')
+    # both deletions and creations should be here
+    # TODO: use exact match
+    verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=False)
+    # verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
+    # TODO: (1) test deletions (2) test overall number of events
+
+    # test subscription deletion when topic is specified
+    _, status = sub_create_conf.del_config(topic=True)
+    assert_equal(status/100, 2)
+    _, status = sub_delete_conf.del_config(topic=True)
+    assert_equal(status/100, 2)
+    _, status = sub_conf.del_config(topic=True)
+    assert_equal(status/100, 2)
+
+    # cleanup
+    notification_create_conf.del_config()
+    notification_delete_conf.del_config()
+    notification_conf.del_config()
+    topic_create_conf.del_config()
+    topic_delete_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_event_fetching():
+    """ test incremental fetching of events from a subscription """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name)
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 100
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    max_events = 15
+    total_events_count = 0
+    next_marker = None
+    all_events = []
+    while True:
+        # get the events from the subscription
+        result, _ = sub_conf.get_events(max_events, next_marker)
+        parsed_result = json.loads(result)
+        events = parsed_result['events']
+        total_events_count += len(events)
+        all_events.extend(events)
+        next_marker = parsed_result['next_marker']
+        for event in events:
+            log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+        if next_marker == '':
+            break
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_events_by_elements(all_events, keys, exact_match=False)
+
+    # cleanup
+    sub_conf.del_config()
+    notification_conf.del_config()
+    topic_conf.del_config()
+    for key in bucket.list():
+        key.delete()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_event_acking():
+    """ test acking of some events in a subscription """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name)
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # get the create events from the subscription
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    events = parsed_result['events']
+    original_number_of_events = len(events)
+    for event in events:
+        log.debug('Event (before ack)  id: "' + str(event['id']) + '"')
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_events_by_elements(events, keys, exact_match=False)
+    # ack half of the  events
+    events_to_ack = number_of_objects/2
+    for event in events:
+        if events_to_ack == 0:
+            break
+        _, status = sub_conf.ack_events(event['id'])
+        assert_equal(status/100, 2)
+        events_to_ack -= 1
+
+    # verify that acked events are gone
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event (after ack) id: "' + str(event['id']) + '"')
+    assert len(parsed_result['events']) >= (original_number_of_events - number_of_objects/2)
+
+    # cleanup
+    sub_conf.del_config()
+    notification_conf.del_config()
+    topic_conf.del_config()
+    for key in bucket.list():
+        key.delete()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_creation_triggers():
+    """ test object creation notifications in using put/copy/post """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    topic_conf.set_config()
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name)
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket using PUT
+    key = bucket.new_key('put')
+    key.set_contents_from_string('bar')
+    # create objects in the bucket using COPY
+    bucket.copy_key('copy', bucket.name, key.name)
+    # create objects in the bucket using multi-part upload
+    fp = tempfile.TemporaryFile(mode='w')
+    fp.write('bar')
+    fp.close()
+    uploader = bucket.initiate_multipart_upload('multipart')
+    fp = tempfile.TemporaryFile(mode='r')
+    uploader.upload_part_from_file(fp, 1)
+    uploader.complete_upload()
+    fp.close()
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # get the create events from the subscription
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    for event in parsed_result['events']:
+        log.debug('Event key: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+
+    # TODO: verify the specific 3 keys: 'put', 'copy' and 'multipart'
+    assert len(parsed_result['events']) >= 3
+    # cleanup
+    sub_conf.del_config()
+    notification_conf.del_config()
+    topic_conf.del_config()
+    for key in bucket.list():
+        key.delete()
+    zones[0].delete_bucket(bucket_name)
+
+
+def test_ps_s3_creation_triggers_on_master():
+    """ test object creation s3 notifications in using put/copy/post on master"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # start amqp receiver
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+
+    # create s3 topic
+    endpoint_address = 'amqp://' + hostname
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=broker'
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:Put', 's3:ObjectCreated:Copy']
+                       }]
+
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket using PUT
+    key = bucket.new_key('put')
+    key.set_contents_from_string('bar')
+    # create objects in the bucket using COPY
+    bucket.copy_key('copy', bucket.name, key.name)
+    # create objects in the bucket using multi-part upload
+    fp = tempfile.TemporaryFile(mode='w')
+    fp.write('bar')
+    fp.close()
+    uploader = bucket.initiate_multipart_upload('multipart')
+    fp = tempfile.TemporaryFile(mode='r')
+    uploader.upload_part_from_file(fp, 1)
+    uploader.complete_upload()
+    fp.close()
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+
+    # check amqp receiver
     keys = list(bucket.list())
-    # TODO: set exact_match to true
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
-    # get the events from the deletions subscription
-    result, _ = sub_delete_conf.get_events()
+    receiver.verify_s3_events(keys, exact_match=True)
+
+    # cleanup
+    stop_amqp_receiver(receiver, task)
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
+    for key in bucket.list():
+        key.delete()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_s3_multipart_on_master():
+    """ test multipart object upload on master"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # start amqp receivers
+    exchange = 'ex1'
+    task1, receiver1 = create_amqp_receiver_thread(exchange, topic_name+'_1')
+    task1.start()
+    task2, receiver2 = create_amqp_receiver_thread(exchange, topic_name+'_2')
+    task2.start()
+    task3, receiver3 = create_amqp_receiver_thread(exchange, topic_name+'_3')
+    task3.start()
+
+    # create s3 topics
+    endpoint_address = 'amqp://' + hostname
+    endpoint_args = 'push-endpoint=' + endpoint_address + '&amqp-exchange=' + exchange + '&amqp-ack-level=broker'
+    topic_conf1 = PSTopicS3(zones[0].conn, topic_name+'_1', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn1 = topic_conf1.set_config()
+    topic_conf2 = PSTopicS3(zones[0].conn, topic_name+'_2', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn2 = topic_conf2.set_config()
+    topic_conf3 = PSTopicS3(zones[0].conn, topic_name+'_3', zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn3 = topic_conf3.set_config()
+
+    # create s3 notifications
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name+'_1', 'TopicArn': topic_arn1,
+                        'Events': ['s3:ObjectCreated:*']
+                       },
+                       {'Id': notification_name+'_2', 'TopicArn': topic_arn2,
+                        'Events': ['s3:ObjectCreated:Post']
+                       },
+                       {'Id': notification_name+'_3', 'TopicArn': topic_arn3,
+                        'Events': ['s3:ObjectCreated:CompleteMultipartUpload']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket using multi-part upload
+    fp = tempfile.TemporaryFile(mode='w+b')
+    content = bytearray(os.urandom(1024*1024))
+    fp.write(content)
+    fp.flush()
+    fp.seek(0)
+    uploader = bucket.initiate_multipart_upload('multipart')
+    uploader.upload_part_from_file(fp, 1)
+    uploader.complete_upload()
+    fp.close()
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+
+    # check amqp receiver
+    events = receiver1.get_and_reset_events()
+    assert_equal(len(events), 3)
+
+    events = receiver2.get_and_reset_events()
+    assert_equal(len(events), 1)
+    assert_equal(events[0]['eventName'], 's3:ObjectCreated:Post')
+    assert_equal(events[0]['s3']['configurationId'], notification_name+'_2')
+
+    events = receiver3.get_and_reset_events()
+    assert_equal(len(events), 1)
+    assert_equal(events[0]['eventName'], 's3:ObjectCreated:CompleteMultipartUpload')
+    assert_equal(events[0]['s3']['configurationId'], notification_name+'_3')
+
+    # cleanup
+    stop_amqp_receiver(receiver1, task1)
+    stop_amqp_receiver(receiver2, task2)
+    stop_amqp_receiver(receiver3, task3)
+    s3_notification_conf.del_config()
+    topic_conf1.del_config()
+    topic_conf2.del_config()
+    topic_conf3.del_config()
+    for key in bucket.list():
+        key.delete()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_versioned_deletion():
+    """ test notification of deletion markers """
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topics
+    topic_conf1 = PSTopic(ps_zones[0].conn, topic_name+'_1')
+    _, status = topic_conf1.set_config()
+    assert_equal(status/100, 2)
+    topic_conf2 = PSTopic(ps_zones[0].conn, topic_name+'_2')
+    _, status = topic_conf2.set_config()
+    assert_equal(status/100, 2)
+    
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    bucket.configure_versioning(True)
+    
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    
+    # create notifications
+    event_type1 = 'OBJECT_DELETE'
+    notification_conf1 = PSNotification(ps_zones[0].conn, bucket_name,
+                                        topic_name+'_1',
+                                        event_type1)
+    _, status = notification_conf1.set_config()
+    assert_equal(status/100, 2)
+    event_type2 = 'DELETE_MARKER_CREATE'
+    notification_conf2 = PSNotification(ps_zones[0].conn, bucket_name,
+                                        topic_name+'_2',
+                                        event_type2)
+    _, status = notification_conf2.set_config()
+    assert_equal(status/100, 2)
+    
+    # create subscriptions
+    sub_conf1 = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_1',
+                               topic_name+'_1')
+    _, status = sub_conf1.set_config()
+    assert_equal(status/100, 2)
+    sub_conf2 = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX+'_2',
+                               topic_name+'_2')
+    _, status = sub_conf2.set_config()
+    assert_equal(status/100, 2)
+    
+    # create objects in the bucket
+    key = bucket.new_key('foo')
+    key.set_contents_from_string('bar')
+    v1 = key.version_id
+    key.set_contents_from_string('kaboom')
+    v2 = key.version_id
+    # create deletion marker
+    delete_marker_key = bucket.delete_key(key.name)
+    
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # delete the deletion marker
+    delete_marker_key.delete()
+    # delete versions
+    bucket.delete_key(key.name, version_id=v2)
+    bucket.delete_key(key.name, version_id=v1)
+    
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    # get the delete events from the subscription
+    result, _ = sub_conf1.get_events()
     parsed_result = json.loads(result)
     for event in parsed_result['events']:
-        log.debug('Event (OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) + \
-                  '" type: "' + str(event['event']) + '"')
-    assert_equal(len(parsed_result['events']), 0)
-    # get the events from the all events subscription
-    result, _ = sub_conf.get_events()
+        log.debug('Event key: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+        assert_equal(str(event['event']), event_type1)
+
+    result, _ = sub_conf2.get_events()
     parsed_result = json.loads(result)
     for event in parsed_result['events']:
-        log.debug('Event (OBJECT_CREATE,OBJECT_DELETE): objname: "' + \
-                  str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
-    # TODO: set exact_match to true
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
+        log.debug('Event key: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+        assert_equal(str(event['event']), event_type2)
+
+    # cleanup
+    # follwing is needed for the cleanup in the case of 3-zones
+    # see: http://tracker.ceph.com/issues/39142
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    zonegroup_conns = ZonegroupConns(zonegroup)
+    try:
+        zonegroup_bucket_checkpoint(zonegroup_conns, bucket_name)
+        zones[0].delete_bucket(bucket_name)
+    except:
+        log.debug('zonegroup_bucket_checkpoint failed, cannot delete bucket')
+    sub_conf1.del_config()
+    sub_conf2.del_config()
+    notification_conf1.del_config()
+    notification_conf2.del_config()
+    topic_conf1.del_config()
+    topic_conf2.del_config()
+
+
+def test_ps_s3_metadata_on_master():
+    """ test s3 notification of metadata on master """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # start amqp receiver
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+
+    # create s3 topic
+    endpoint_address = 'amqp://' + hostname
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=broker'
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket
+    key = bucket.new_key('foo')
+    key.set_metadata('meta1', 'This is my metadata value')
+    key.set_contents_from_string('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
+    keys = list(bucket.list())
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+    # check amqp receiver
+    receiver.verify_s3_events(keys, exact_match=True)
+
+    # cleanup
+    stop_amqp_receiver(receiver, task)
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
+    for key in bucket.list():
+        key.delete()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_s3_versioned_deletion_on_master():
+    """ test s3 notification of deletion markers on master """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, _  = init_env(require_ps=False)
+    realm = get_realm()
+    zonegroup = realm.master_zonegroup()
+    
+    # create bucket
+    bucket_name = gen_bucket_name()
+    bucket = zones[0].create_bucket(bucket_name)
+    bucket.configure_versioning(True)
+    topic_name = bucket_name + TOPIC_SUFFIX
+
+    # start amqp receiver
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+
+    # create s3 topic
+    endpoint_address = 'amqp://' + hostname
+    endpoint_args = 'push-endpoint='+endpoint_address+'&amqp-exchange=' + exchange +'&amqp-ack-level=broker'
+    topic_conf = PSTopicS3(zones[0].conn, topic_name, zonegroup.name, endpoint_args=endpoint_args)
+    topic_arn = topic_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    # TODO use s3:ObjectRemoved:DeleteMarkerCreated once supported in the code
+    topic_conf_list = [{'Id': notification_name+'_1', 'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectRemoved:*']
+                       },
+                       {'Id': notification_name+'_2', 'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectRemoved:DeleteMarkerCreated']
+                       },
+                       {'Id': notification_name+'_3', 'TopicArn': topic_arn,
+                         'Events': ['s3:ObjectRemoved:Delete']
+                       }]
+    s3_notification_conf = PSNotificationS3(zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create objects in the bucket
+    key = bucket.new_key('foo')
+    key.set_contents_from_string('bar')
+    v1 = key.version_id
+    key.set_contents_from_string('kaboom')
+    v2 = key.version_id
+    # create delete marker (non versioned deletion)
+    delete_marker_key = bucket.delete_key(key.name)
+    
+    time.sleep(1)
+    
+    # versioned deletion
+    bucket.delete_key(key.name, version_id=v2)
+    bucket.delete_key(key.name, version_id=v1)
+    delete_marker_key.delete()
+
+    print 'wait for 5sec for the messages...'
+    time.sleep(5)
+
+    # check amqp receiver
+    events = receiver.get_and_reset_events()
+    delete_events = 0
+    delete_marker_create_events = 0
+    for event in events:
+        if event['eventName'] == 's3:ObjectRemoved:Delete':
+            delete_events += 1
+            assert event['s3']['configurationId'] in [notification_name+'_1', notification_name+'_3']
+        if event['eventName'] == 's3:ObjectRemoved:DeleteMarkerCreated':
+            delete_marker_create_events += 1
+            assert event['s3']['configurationId'] in [notification_name+'_1', notification_name+'_2']
+   
+    # 3 key versions were deleted (v1, v2 and the deletion marker)
+    # notified over the same topic via 2 notifications (1,3)
+    assert_equal(delete_events, 3*2)
+    # 1 deletion marker was created
+    # notified over the same topic over 2 notifications (1,2)
+    assert_equal(delete_marker_create_events, 1*2)
+
+    # cleanup
+    stop_amqp_receiver(receiver, task)
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_push_http():
+    """ test pushing to http endpoint """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create random port for the http server
+    host = get_ip()
+    port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    http_server = StreamingHTTPServer(host, port)
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    _, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name, endpoint='http://'+host+':'+str(port))
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check http server
+    keys = list(bucket.list())
+    # TODO: use exact match
+    http_server.verify_events(keys, exact_match=False)
+
     # delete objects from the bucket
     for key in bucket.list():
         key.delete()
     # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
-    log.debug("Event (OBJECT_DELETE) synced")
-    
-    # get the events from the creations subscription
-    result, _ = sub_create_conf.get_events()
-    parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event (OBJECT_CREATE): objname: "' + str(event['info']['key']['name']) + \
-                  '" type: "' + str(event['event']) + '"')
-    # deletions should not change the creation events
-    # TODO: set exact_match to true
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False)
-    # get the events from the deletions subscription
-    result, _ = sub_delete_conf.get_events()
-    parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event (OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) + \
-                  '" type: "' + str(event['event']) + '"')
-    # only deletions should be listed here
-    # TODO: set exact_match to true
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
-    # get the events from the all events subscription
-    result, _ = sub_create_conf.get_events()
+    # check http server
+    # TODO: use exact match
+    http_server.verify_events(keys, deletions=True, exact_match=False)
+
+    # cleanup
+    sub_conf.del_config()
+    notification_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+    http_server.close()
+
+
+def test_ps_s3_push_http():
+    """ test pushing to http endpoint s3 record format"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create random port for the http server
+    host = get_ip()
+    port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    http_server = StreamingHTTPServer(host, port)
+
+    # create topic
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name,
+                         endpoint='http://'+host+':'+str(port))
+    result, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
     parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event (OBJECT_CREATE,OBJECT_DELETE): objname: "' + str(event['info']['key']['name']) + \
-                  '" type: "' + str(event['event']) + '"')
-    # both deletions and creations should be here
-    verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=False)
-    # verify_events_by_elements(parsed_result['events'], keys, exact_match=False, deletions=True)
-    # TODO: (1) test deletions (2) test overall number of events
+    topic_arn = parsed_result['arn']
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check http server
+    keys = list(bucket.list())
+    # TODO: use exact match
+    http_server.verify_s3_events(keys, exact_match=False)
+
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check http server
+    # TODO: use exact match
+    http_server.verify_s3_events(keys, deletions=True, exact_match=False)
+
+    # cleanup
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+    http_server.close()
+
+
+def test_ps_push_amqp():
+    """ test pushing to amqp endpoint """
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    _, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create notifications
+    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
+                                       topic_name)
+    _, status = notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
+                              topic_name, endpoint='amqp://'+hostname,
+                              endpoint_args='amqp-exchange='+exchange+'&amqp-ack-level=broker')
+    _, status = sub_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check amqp receiver
+    keys = list(bucket.list())
+    # TODO: use exact match
+    receiver.verify_events(keys, exact_match=False)
+
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check amqp receiver
+    # TODO: use exact match
+    receiver.verify_events(keys, deletions=True, exact_match=False)
 
     # cleanup
-    sub_create_conf.del_config()
-    sub_delete_conf.del_config()
+    stop_amqp_receiver(receiver, task)
     sub_conf.del_config()
-    notification_create_conf.del_config()
-    notification_delete_conf.del_config()
     notification_conf.del_config()
-    topic_create_conf.del_config()
-    topic_delete_conf.del_config()
     topic_conf.del_config()
     zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
+
+
+def test_ps_s3_push_amqp():
+    """ test pushing to amqp endpoint s3 record format"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    proc = init_rabbitmq()
+    if proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create topic
+    exchange = 'ex1'
+    task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    task.start()
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name,
+                         endpoint='amqp://' + hostname,
+                         endpoint_args='amqp-exchange=' + exchange + '&amqp-ack-level=none')
+    result, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    parsed_result = json.loads(result)
+    topic_arn = parsed_result['arn']
+    # create bucket on the first of the rados zones
+    bucket = zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check amqp receiver
+    keys = list(bucket.list())
+    # TODO: use exact match
+    receiver.verify_s3_events(keys, exact_match=False)
+
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # check amqp receiver
+    # TODO: use exact match
+    receiver.verify_s3_events(keys, deletions=True, exact_match=False)
+
+    # cleanup
+    stop_amqp_receiver(receiver, task)
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
+    zones[0].delete_bucket(bucket_name)
+    clean_rabbitmq(proc)
 
 
-def test_ps_event_fetching():
-    """ test incremental fetching of events from a subscription """
+def test_ps_delete_bucket():
+    """ test notification status upon bucket deletion """
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
-
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
     bucket = zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
+    topic_name = bucket_name + TOPIC_SUFFIX
+    # create topic
+    topic_name = bucket_name + TOPIC_SUFFIX
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
+    response, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    parsed_result = json.loads(response)
+    topic_arn = parsed_result['arn']
+    # create one s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    response, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+
+    # create non-s3 notification
     notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
                                        topic_name)
     _, status = notification_conf.set_config()
     assert_equal(status/100, 2)
-    # create subscription
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
-                              topic_name)
-    _, status = sub_conf.set_config()
-    assert_equal(status/100, 2)
+
     # create objects in the bucket
-    number_of_objects = 100
+    number_of_objects = 10
     for i in range(number_of_objects):
         key = bucket.new_key(str(i))
         key.set_contents_from_string('bar')
-    # wait for sync
+    # wait for bucket sync
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
-    max_events = 15
-    total_events_count = 0
-    next_marker = None
-    all_events = []
-    while True:
-        # get the events from the subscription
-        result, _ = sub_conf.get_events(max_events, next_marker)
-        parsed_result = json.loads(result)
-        events = parsed_result['events']
-        total_events_count += len(events)
-        all_events.extend(events)
-        next_marker = parsed_result['next_marker']
-        for event in events:
-            log.debug('Event: objname: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
-        if next_marker == '':
-            break
     keys = list(bucket.list())
-    # TODO: set exact_match to true
-    verify_events_by_elements(all_events, keys, exact_match=False)
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
+    # wait for bucket sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+    # delete the bucket
+    zones[0].delete_bucket(bucket_name)
+    # wait for meta sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+
+    # get the events from the auto-generated subscription
+    sub_conf = PSSubscription(ps_zones[0].conn, notification_name,
+                              topic_name)
+    result, _ = sub_conf.get_events()
+    parsed_result = json.loads(result)
+    # TODO: use exact match
+    verify_s3_records_by_elements(parsed_result['Records'], keys, exact_match=False)
 
+    # s3 notification is deleted with bucket
+    _, status = s3_notification_conf.get_config(notification=notification_name)
+    assert_equal(status, 404)
+    # non-s3 notification is deleted with bucket
+    _, status = notification_conf.get_config()
+    assert_equal(status, 404)
     # cleanup
     sub_conf.del_config()
-    notification_conf.del_config()
     topic_conf.del_config()
-    for key in bucket.list():
-        key.delete()
+
+
+def test_ps_missing_topic():
+    """ test creating a subscription when no topic info exists"""
+    zones, ps_zones = init_env()
+    bucket_name = gen_bucket_name()
+    topic_name = bucket_name+TOPIC_SUFFIX
+
+    # create bucket on the first of the rados zones
+    zones[0].create_bucket(bucket_name)
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_arn = 'arn:aws:sns:::' + topic_name
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    try:
+        s3_notification_conf.set_config()
+    except:
+        log.info('missing topic is expected')
+    else:
+        assert 'missing topic is expected'
+
+    # cleanup
     zones[0].delete_bucket(bucket_name)
 
 
-def test_ps_event_acking():
-    """ test acking of some events in a subscription """
+def test_ps_s3_topic_update():
+    """ test updating topic associated with a notification"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    rabbit_proc = init_rabbitmq()
+    if rabbit_proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
     topic_name = bucket_name+TOPIC_SUFFIX
 
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
+    # create amqp topic
+    hostname = get_ip()
+    exchange = 'ex1'
+    amqp_task, receiver = create_amqp_receiver_thread(exchange, topic_name)
+    amqp_task.start()
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name,
+                          endpoint='amqp://' + hostname,
+                          endpoint_args='amqp-exchange=' + exchange + '&amqp-ack-level=none')
+    result, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    parsed_result = json.loads(result)
+    topic_arn = parsed_result['arn']
+    # get topic
+    result, _ = topic_conf.get_config()
+    # verify topic content
+    parsed_result = json.loads(result)
+    assert_equal(parsed_result['topic']['name'], topic_name)
+    assert_equal(parsed_result['topic']['dest']['push_endpoint'], topic_conf.parameters['push-endpoint'])
+    
+    # create http server
+    port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    http_server = StreamingHTTPServer(hostname, port)
+
     # create bucket on the first of the rados zones
     bucket = zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name)
-    _, status = notification_conf.set_config()
-    assert_equal(status/100, 2)
-    # create subscription
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
-                              topic_name)
-    _, status = sub_conf.set_config()
+    # create s3 notification
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
     assert_equal(status/100, 2)
     # create objects in the bucket
     number_of_objects = 10
@@ -489,146 +2610,282 @@ def test_ps_event_acking():
     # wait for sync
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
 
-    # get the create events from the subscription
-    result, _ = sub_conf.get_events()
-    parsed_result = json.loads(result)
-    events = parsed_result['events']
-    original_number_of_events = len(events)
-    for event in events:
-        log.debug('Event (before ack)  id: "' + str(event['id']) + '"')
     keys = list(bucket.list())
-    # TODO: set exact_match to true
-    verify_events_by_elements(events, keys, exact_match=False)
-    # ack half of the  events
-    events_to_ack = number_of_objects/2
-    for event in events:
-        if events_to_ack == 0:
-            break
-        _, status = sub_conf.ack_events(event['id'])
-        assert_equal(status/100, 2)
-        events_to_ack -= 1
+    # TODO: use exact match
+    receiver.verify_s3_events(keys, exact_match=False)
 
-    # verify that acked events are gone
-    result, _ = sub_conf.get_events()
+    # update the same topic with new endpoint
+    topic_conf = PSTopic(ps_zones[0].conn, topic_name,
+                         endpoint='http://'+ hostname + ':' + str(port))
+    _, status = topic_conf.set_config()
+    assert_equal(status/100, 2)
+    # get topic
+    result, _ = topic_conf.get_config()
+    # verify topic content
     parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event (after ack) id: "' + str(event['id']) + '"')
-    assert_equal(len(parsed_result['events']), original_number_of_events - number_of_objects/2)
+    assert_equal(parsed_result['topic']['name'], topic_name)
+    assert_equal(parsed_result['topic']['dest']['push_endpoint'], topic_conf.parameters['push-endpoint'])
+
+    # delete current objects and create new objects in the bucket
+    for key in bucket.list():
+        key.delete()
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i+100))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    keys = list(bucket.list())
+    # verify that notifications are still sent to amqp
+    # TODO: use exact match
+    receiver.verify_s3_events(keys, exact_match=False)
+
+    # update notification to update the endpoint from the topic
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
+    assert_equal(status/100, 2)
+    
+    # delete current objects and create new objects in the bucket
+    for key in bucket.list():
+        key.delete()
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i+200))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    keys = list(bucket.list())
+    # check that updates switched to http
+    # TODO: use exact match
+    http_server.verify_s3_events(keys, exact_match=False)
 
     # cleanup
-    sub_conf.del_config()
-    notification_conf.del_config()
-    topic_conf.del_config()
+    # delete objects from the bucket
+    stop_amqp_receiver(receiver, amqp_task)
     for key in bucket.list():
         key.delete()
+    s3_notification_conf.del_config()
+    topic_conf.del_config()
     zones[0].delete_bucket(bucket_name)
+    http_server.close()
+    clean_rabbitmq(rabbit_proc)
+
+
+def test_ps_s3_notification_update():
+    """ test updating the topic of a notification"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    rabbit_proc = init_rabbitmq()
+    if rabbit_proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
 
-def test_ps_creation_triggers():
-    """ test object creation notifications in using put/copy/post """
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
+    topic_name1 = bucket_name+'amqp'+TOPIC_SUFFIX
+    topic_name2 = bucket_name+'http'+TOPIC_SUFFIX
+
+    # create topics
+    # start amqp receiver in a separate thread
+    exchange = 'ex1'
+    amqp_task, receiver = create_amqp_receiver_thread(exchange, topic_name1)
+    amqp_task.start()
+    # create random port for the http server
+    http_port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    http_server = StreamingHTTPServer(hostname, http_port)
+
+    topic_conf1 = PSTopic(ps_zones[0].conn, topic_name1,
+                          endpoint='amqp://' + hostname,
+                          endpoint_args='amqp-exchange=' + exchange + '&amqp-ack-level=none')
+    result, status = topic_conf1.set_config()
+    parsed_result = json.loads(result)
+    topic_arn1 = parsed_result['arn']
+    assert_equal(status/100, 2)
+    topic_conf2 = PSTopic(ps_zones[0].conn, topic_name2,
+                          endpoint='http://'+hostname+':'+str(http_port))
+    result, status = topic_conf2.set_config()
+    parsed_result = json.loads(result)
+    topic_arn2 = parsed_result['arn']
+    assert_equal(status/100, 2)
 
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
     bucket = zones[0].create_bucket(bucket_name)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name)
-    _, status = notification_conf.set_config()
+    # create s3 notification with topic1
+    notification_name = bucket_name + NOTIFICATION_SUFFIX
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn1,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
     assert_equal(status/100, 2)
-    # create subscription
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
-                              topic_name)
-    _, status = sub_conf.set_config()
+    # create objects in the bucket
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
+    # wait for sync
+    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
+
+    keys = list(bucket.list())
+    # TODO: use exact match
+    receiver.verify_s3_events(keys, exact_match=False);
+
+    # update notification to use topic2
+    topic_conf_list = [{'Id': notification_name,
+                        'TopicArn': topic_arn2,
+                        'Events': ['s3:ObjectCreated:*']
+                       }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
     assert_equal(status/100, 2)
-    # create objects in the bucket using PUT
-    key = bucket.new_key('put')
-    key.set_contents_from_string('bar')
-    # create objects in the bucket using COPY
-    bucket.copy_key('copy', bucket.name, key.name)
-    # create objects in the bucket using multi-part upload
-    fp = tempfile.TemporaryFile(mode='w')
-    fp.write('bar')
-    fp.close()
-    uploader = bucket.initiate_multipart_upload('multipart')
-    fp = tempfile.TemporaryFile(mode='r')
-    uploader.upload_part_from_file(fp, 1)
-    uploader.complete_upload()
-    fp.close()
+
+    # delete current objects and create new objects in the bucket
+    for key in bucket.list():
+        key.delete()
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i+100))
+        key.set_contents_from_string('bar')
     # wait for sync
+    zone_meta_checkpoint(ps_zones[0].zone)
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
 
-    # get the create events from the subscription
-    result, _ = sub_conf.get_events()
-    parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event key: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    keys = list(bucket.list())
+    # check that updates switched to http
+    # TODO: use exact match
+    http_server.verify_s3_events(keys, exact_match=False)
 
-    # TODO: verify the specific 3 keys: 'put', 'copy' and 'multipart'
-    assert len(parsed_result['events']) >= 3
     # cleanup
-    sub_conf.del_config()
-    notification_conf.del_config()
-    topic_conf.del_config()
+    # delete objects from the bucket
+    stop_amqp_receiver(receiver, amqp_task)
     for key in bucket.list():
         key.delete()
+    s3_notification_conf.del_config()
+    topic_conf1.del_config()
+    topic_conf2.del_config()
     zones[0].delete_bucket(bucket_name)
+    http_server.close()
+    clean_rabbitmq(rabbit_proc)
 
 
-def test_ps_versioned_deletion():
-    """ test notification of deletion markers """
+def test_ps_s3_multiple_topics_notification():
+    """ test notification creation with multiple topics"""
+    if skip_push_tests:
+        return SkipTest("PubSub push tests don't run in teuthology")
+    hostname = get_ip()
+    rabbit_proc = init_rabbitmq()
+    if rabbit_proc is  None:
+        return SkipTest('end2end amqp tests require rabbitmq-server installed')
+
     zones, ps_zones = init_env()
     bucket_name = gen_bucket_name()
-    topic_name = bucket_name+TOPIC_SUFFIX
+    topic_name1 = bucket_name+'amqp'+TOPIC_SUFFIX
+    topic_name2 = bucket_name+'http'+TOPIC_SUFFIX
+
+    # create topics
+    # start amqp receiver in a separate thread
+    exchange = 'ex1'
+    amqp_task, receiver = create_amqp_receiver_thread(exchange, topic_name1)
+    amqp_task.start()
+    # create random port for the http server
+    http_port = random.randint(10000, 20000)
+    # start an http server in a separate thread
+    http_server = StreamingHTTPServer(hostname, http_port)
+
+    topic_conf1 = PSTopic(ps_zones[0].conn, topic_name1,
+                          endpoint='amqp://' + hostname,
+                          endpoint_args='amqp-exchange=' + exchange + '&amqp-ack-level=none')
+    result, status = topic_conf1.set_config()
+    parsed_result = json.loads(result)
+    topic_arn1 = parsed_result['arn']
+    assert_equal(status/100, 2)
+    topic_conf2 = PSTopic(ps_zones[0].conn, topic_name2,
+                          endpoint='http://'+hostname+':'+str(http_port))
+    result, status = topic_conf2.set_config()
+    parsed_result = json.loads(result)
+    topic_arn2 = parsed_result['arn']
+    assert_equal(status/100, 2)
 
-    # create topic
-    topic_conf = PSTopic(ps_zones[0].conn, topic_name)
-    topic_conf.set_config()
     # create bucket on the first of the rados zones
     bucket = zones[0].create_bucket(bucket_name)
-    bucket.configure_versioning(True)
     # wait for sync
     zone_meta_checkpoint(ps_zones[0].zone)
-    # create notifications
-    notification_conf = PSNotification(ps_zones[0].conn, bucket_name,
-                                       topic_name, "OBJECT_DELETE")
-    _, status = notification_conf.set_config()
+    # create s3 notification
+    notification_name1 = bucket_name + NOTIFICATION_SUFFIX + '_1'
+    notification_name2 = bucket_name + NOTIFICATION_SUFFIX + '_2'
+    topic_conf_list = [
+        {
+            'Id': notification_name1,
+            'TopicArn': topic_arn1,
+            'Events': ['s3:ObjectCreated:*']
+        },
+        {
+            'Id': notification_name2,
+            'TopicArn': topic_arn2,
+            'Events': ['s3:ObjectCreated:*']
+        }]
+    s3_notification_conf = PSNotificationS3(ps_zones[0].conn, bucket_name, topic_conf_list)
+    _, status = s3_notification_conf.set_config()
     assert_equal(status/100, 2)
-    # create subscription
-    sub_conf = PSSubscription(ps_zones[0].conn, bucket_name+SUB_SUFFIX,
-                              topic_name)
-    _, status = sub_conf.set_config()
+    result, _ = s3_notification_conf.get_config()
+    assert_equal(len(result['TopicConfigurations']), 2)
+    assert_equal(result['TopicConfigurations'][0]['Id'], notification_name1)
+    assert_equal(result['TopicConfigurations'][1]['Id'], notification_name2)
+
+    # get auto-generated subscriptions
+    sub_conf1 = PSSubscription(ps_zones[0].conn, notification_name1,
+                               topic_name1)
+    _, status = sub_conf1.get_config()
     assert_equal(status/100, 2)
+    sub_conf2 = PSSubscription(ps_zones[0].conn, notification_name2,
+                               topic_name2)
+    _, status = sub_conf2.get_config()
+    assert_equal(status/100, 2)
+
     # create objects in the bucket
-    key = bucket.new_key('foo')
-    key.set_contents_from_string('bar')
-    v1 = key.version_id
-    key.set_contents_from_string('kaboom')
-    v2 = key.version_id
-    # wait for sync
-    zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
-    # set delete markers
-    bucket.delete_key(key.name, version_id=v2)
-    bucket.delete_key(key.name, version_id=v1)
+    number_of_objects = 10
+    for i in range(number_of_objects):
+        key = bucket.new_key(str(i))
+        key.set_contents_from_string('bar')
     # wait for sync
     zone_bucket_checkpoint(ps_zones[0].zone, zones[0].zone, bucket_name)
 
-    # get the create events from the subscription
-    result, _ = sub_conf.get_events()
+    # get the events from both of the subscription
+    result, _ = sub_conf1.get_events()
     parsed_result = json.loads(result)
-    for event in parsed_result['events']:
-        log.debug('Event key: "' + str(event['info']['key']['name']) + '" type: "' + str(event['event']) + '"')
+    for record in parsed_result['Records']:
+        log.debug(record)
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_s3_records_by_elements(parsed_result['Records'], keys, exact_match=False)
+    receiver.verify_s3_events(keys, exact_match=False)
+
+    result, _ = sub_conf2.get_events()
+    parsed_result = json.loads(result)
+    for record in parsed_result['Records']:
+        log.debug(record)
+    keys = list(bucket.list())
+    # TODO: use exact match
+    verify_s3_records_by_elements(parsed_result['Records'], keys, exact_match=False)
+    http_server.verify_s3_events(keys, exact_match=False)
 
-    # TODO: verify the specific events
-    assert len(parsed_result['events']) >=  2
-    
     # cleanup
-    sub_conf.del_config()
-    notification_conf.del_config()
-    topic_conf.del_config()
+    stop_amqp_receiver(receiver, amqp_task)
+    s3_notification_conf.del_config()
+    topic_conf1.del_config()
+    topic_conf2.del_config()
+    # delete objects from the bucket
+    for key in bucket.list():
+        key.delete()
     zones[0].delete_bucket(bucket_name)
+    http_server.close()
+    clean_rabbitmq(rabbit_proc)
index 31a7d4726b1eb8cfa463708a59754ad058e7d795..8ee49f2036b164d1bda7b7a5c968908a84d5db2a 100644 (file)
@@ -1,17 +1,27 @@
 import logging
 import httplib
 import urllib
+import urlparse
 import hmac
 import hashlib
 import base64
+import xmltodict
 from time import gmtime, strftime
-from multisite import Zone
+from .multisite import Zone
+import boto3
+from botocore.client import Config
 
 log = logging.getLogger('rgw_multi.tests')
 
 
 class PSZone(Zone):  # pylint: disable=too-many-ancestors
     """ PubSub zone class """
+    def __init__(self, name, zonegroup=None, cluster=None, data=None, zone_id=None, gateways=None, full_sync='false', retention_days ='7'):
+        self.full_sync = full_sync
+        self.retention_days = retention_days
+        self.master_zone = zonegroup.master_zone
+        super(PSZone, self).__init__(name, zonegroup, cluster, data, zone_id, gateways)
+
     def is_read_only(self):
         return True
 
@@ -21,7 +31,8 @@ class PSZone(Zone):  # pylint: disable=too-many-ancestors
     def create(self, cluster, args=None, **kwargs):
         if args is None:
             args = ''
-        args += ['--tier-type', self.tier_type()]
+        tier_config = ','.join(['start_with_full_sync=' + self.full_sync, 'event_retention_days=' + self.retention_days])
+        args += ['--tier-type', self.tier_type(), '--sync-from-all=0', '--sync-from', self.master_zone.name, '--tier-config', tier_config] 
         return self.json_command(cluster, 'create', args)
 
     def has_buckets(self):
@@ -31,7 +42,14 @@ class PSZone(Zone):  # pylint: disable=too-many-ancestors
 NO_HTTP_BODY = ''
 
 
-def make_request(conn, method, resource, parameters=None):
+def print_connection_info(conn):
+    """print connection details"""
+    print('Endpoint: ' + conn.host + ':' + str(conn.port))
+    print('AWS Access Key:: ' + conn.aws_access_key_id)
+    print('AWS Secret Key:: ' + conn.aws_secret_access_key)
+
+
+def make_request(conn, method, resource, parameters=None, sign_parameters=False, extra_parameters=None):
     """generic request sending to pubsub radogw
     should cover: topics, notificatios and subscriptions
     """
@@ -41,8 +59,12 @@ def make_request(conn, method, resource, parameters=None):
         # remove 'None' from keys with no values
         url_params = url_params.replace('=None', '')
         url_params = '?' + url_params
+    if extra_parameters is not None:
+        url_params = url_params + '&' + extra_parameters
     string_date = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
     string_to_sign = method + '\n\n\n' + string_date + '\n' + resource
+    if sign_parameters:
+        string_to_sign += url_params
     signature = base64.b64encode(hmac.new(conn.aws_secret_access_key,
                                           string_to_sign.encode('utf-8'),
                                           hashlib.sha1).digest())
@@ -60,20 +82,36 @@ def make_request(conn, method, resource, parameters=None):
     return data, status
 
 
+def print_connection_info(conn):
+    """print info of connection"""
+    print("Host: " + conn.host+':'+str(conn.port))
+    print("AWS Secret Key: " + conn.aws_secret_access_key)
+    print("AWS Access Key: " + conn.aws_access_key_id)
+
+
 class PSTopic:
     """class to set/get/delete a topic
-    PUT /topics/<topic name>
+    PUT /topics/<topic name>[?push-endpoint=<endpoint>&[<arg1>=<value1>...]]
     GET /topics/<topic name>
     DELETE /topics/<topic name>
     """
-    def __init__(self, conn, topic_name):
+    def __init__(self, conn, topic_name, endpoint=None, endpoint_args=None):
         self.conn = conn
         assert topic_name.strip()
         self.resource = '/topics/'+topic_name
+        if endpoint is not None:
+            self.parameters = {'push-endpoint': endpoint}
+            self.extra_parameters = endpoint_args
+        else:
+            self.parameters = None
+            self.extra_parameters = None
 
-    def send_request(self, method):
+    def send_request(self, method, get_list=False, parameters=None, extra_parameters=None):
         """send request to radosgw"""
-        return make_request(self.conn, method, self.resource)
+        if get_list:
+            return make_request(self.conn, method, '/topics')
+        return make_request(self.conn, method, self.resource, 
+                            parameters=parameters, extra_parameters=extra_parameters)
 
     def get_config(self):
         """get topic info"""
@@ -81,11 +119,99 @@ class PSTopic:
 
     def set_config(self):
         """set topic"""
-        return self.send_request('PUT')
+        return self.send_request('PUT', parameters=self.parameters, extra_parameters=self.extra_parameters)
 
     def del_config(self):
         """delete topic"""
         return self.send_request('DELETE')
+    
+    def get_list(self):
+        """list all topics"""
+        return self.send_request('GET', get_list=True)
+
+
+def delete_all_s3_topics(conn, region):
+    try:
+        client = boto3.client('sns',
+                              endpoint_url='http://'+conn.host+':'+str(conn.port),
+                              aws_access_key_id=conn.aws_access_key_id,
+                              aws_secret_access_key=conn.aws_secret_access_key,
+                              region_name=region,
+                              config=Config(signature_version='s3'))
+
+        topics = client.list_topics()['Topics']
+        for topic in topics:
+            print 'topic cleanup, deleting: ' + topic['TopicArn']
+            assert client.delete_topic(TopicArn=topic['TopicArn'])['ResponseMetadata']['HTTPStatusCode'] == 200
+    except:
+        print 'failed to do topic cleanup. if there are topics they may need to be manually deleted'
+    
+
+class PSTopicS3:
+    """class to set/list/get/delete a topic
+    POST ?Action=CreateTopic&Name=<topic name>&push-endpoint=<endpoint>&[<arg1>=<value1>...]]
+    POST ?Action=ListTopics
+    POST ?Action=GetTopic&TopicArn=<topic-arn>
+    POST ?Action=DeleteTopic&TopicArn=<topic-arn>
+    """
+    def __init__(self, conn, topic_name, region, endpoint_args=None):
+        self.conn = conn
+        self.topic_name = topic_name.strip()
+        assert self.topic_name
+        self.topic_arn = ''
+        self.attributes = {}
+        if endpoint_args is not None:
+            self.attributes = {nvp[0] : nvp[1] for nvp in urlparse.parse_qsl(endpoint_args, keep_blank_values=True)}
+        self.client = boto3.client('sns',
+                                   endpoint_url='http://'+conn.host+':'+str(conn.port),
+                                   aws_access_key_id=conn.aws_access_key_id,
+                                   aws_secret_access_key=conn.aws_secret_access_key,
+                                   region_name=region,
+                                   config=Config(signature_version='s3'))
+
+
+    def get_config(self):
+        """get topic info"""
+        parameters = {'Action': 'GetTopic', 'TopicArn': self.topic_arn}
+        body = urllib.urlencode(parameters)
+        string_date = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
+        content_type = 'application/x-www-form-urlencoded; charset=utf-8'
+        resource = '/'
+        method = 'POST'
+        string_to_sign = method + '\n\n' + content_type + '\n' + string_date + '\n' + resource
+        log.debug('StringTosign: %s', string_to_sign) 
+        signature = base64.b64encode(hmac.new(self.conn.aws_secret_access_key,
+                                     string_to_sign.encode('utf-8'),
+                                     hashlib.sha1).digest())
+        headers = {'Authorization': 'AWS '+self.conn.aws_access_key_id+':'+signature,
+                   'Date': string_date,
+                   'Host': self.conn.host+':'+str(self.conn.port),
+                   'Content-Type': content_type}
+        http_conn = httplib.HTTPConnection(self.conn.host, self.conn.port)
+        if log.getEffectiveLevel() <= 10:
+            http_conn.set_debuglevel(5)
+        http_conn.request(method, resource, body, headers)
+        response = http_conn.getresponse()
+        data = response.read()
+        status = response.status
+        http_conn.close()
+        dict_response = xmltodict.parse(data)
+        return dict_response, status
+
+    def set_config(self):
+        """set topic"""
+        result = self.client.create_topic(Name=self.topic_name, Attributes=self.attributes)
+        self.topic_arn = result['TopicArn']
+        return self.topic_arn
+
+    def del_config(self):
+        """delete topic"""
+        result = self.client.delete_topic(TopicArn=self.topic_arn)
+        return result['ResponseMetadata']['HTTPStatusCode']
+    
+    def get_list(self):
+        """list all topics"""
+        return self.client.list_topics()
 
 
 class PSNotification:
@@ -113,7 +239,7 @@ class PSNotification:
         return self.send_request('GET')
 
     def set_config(self):
-        """setnotification"""
+        """set notification"""
         return self.send_request('PUT', self.parameters)
 
     def del_config(self):
@@ -121,24 +247,82 @@ class PSNotification:
         return self.send_request('DELETE', self.parameters)
 
 
+class PSNotificationS3:
+    """class to set/get/delete an S3 notification
+    PUT /<bucket>?notification
+    GET /<bucket>?notification[=<notification>]
+    DELETE /<bucket>?notification[=<notification>]
+    """
+    def __init__(self, conn, bucket_name, topic_conf_list):
+        self.conn = conn
+        assert bucket_name.strip()
+        self.bucket_name = bucket_name
+        self.resource = '/'+bucket_name
+        self.topic_conf_list = topic_conf_list
+        self.client = boto3.client('s3',
+                                   endpoint_url='http://'+conn.host+':'+str(conn.port),
+                                   aws_access_key_id=conn.aws_access_key_id,
+                                   aws_secret_access_key=conn.aws_secret_access_key,
+                                   config=Config(signature_version='s3'))
+
+    def send_request(self, method, parameters=None):
+        """send request to radosgw"""
+        return make_request(self.conn, method, self.resource,
+                            parameters=parameters, sign_parameters=True)
+
+    def get_config(self, notification=None):
+        """get notification info"""
+        parameters = None
+        if notification is None:
+            response = self.client.get_bucket_notification_configuration(Bucket=self.bucket_name)
+            status = response['ResponseMetadata']['HTTPStatusCode']
+            return response, status
+        parameters = {'notification': notification}
+        response, status = self.send_request('GET', parameters=parameters)
+        dict_response = xmltodict.parse(response)
+        return dict_response, status
+
+    def set_config(self):
+        """set notification"""
+        response = self.client.put_bucket_notification_configuration(Bucket=self.bucket_name,
+                                                                     NotificationConfiguration={
+                                                                         'TopicConfigurations': self.topic_conf_list
+                                                                     })
+        status = response['ResponseMetadata']['HTTPStatusCode']
+        return response, status
+
+    def del_config(self, notification=None):
+        """delete notification"""
+        parameters = {'notification': notification}
+
+        return self.send_request('DELETE', parameters)
+
+
 class PSSubscription:
     """class to set/get/delete a subscription:
-    PUT /subscriptions/<sub-name>?topic=<topic-name>
+    PUT /subscriptions/<sub-name>?topic=<topic-name>[&push-endpoint=<endpoint>&[<arg1>=<value1>...]]
     GET /subscriptions/<sub-name>
     DELETE /subscriptions/<sub-name>
     also to get list of events, and ack them:
     GET /subscriptions/<sub-name>?events[&max-entries=<max-entries>][&marker=<marker>]
     POST /subscriptions/<sub-name>?ack&event-id=<event-id>
     """
-    def __init__(self, conn, sub_name, topic_name):
+    def __init__(self, conn, sub_name, topic_name, endpoint=None, endpoint_args=None):
         self.conn = conn
         assert topic_name.strip()
         self.resource = '/subscriptions/'+sub_name
-        self.parameters = {'topic': topic_name}
+        if endpoint is not None:
+            self.parameters = {'topic': topic_name, 'push-endpoint': endpoint}
+            self.extra_parameters = endpoint_args
+        else:
+            self.parameters = {'topic': topic_name}
+            self.extra_parameters = None
 
-    def send_request(self, method, parameters=None):
+    def send_request(self, method, parameters=None, extra_parameters=None):
         """send request to radosgw"""
-        return make_request(self.conn, method, self.resource, parameters)
+        return make_request(self.conn, method, self.resource, 
+                            parameters=parameters,
+                            extra_parameters=extra_parameters)
 
     def get_config(self):
         """get subscription info"""
@@ -146,10 +330,12 @@ class PSSubscription:
 
     def set_config(self):
         """set subscription"""
-        return self.send_request('PUT', self.parameters)
+        return self.send_request('PUT', parameters=self.parameters, extra_parameters=self.extra_parameters)
 
-    def del_config(self):
+    def del_config(self, topic=False):
         """delete subscription"""
+        if topic:
+            return self.send_request('DELETE', self.parameters)
         return self.send_request('DELETE')
 
     def get_events(self, max_entries=None, marker=None):
@@ -165,3 +351,10 @@ class PSSubscription:
         """ ack events in a subscription """
         parameters = {'ack': None, 'event-id': event_id}
         return self.send_request('POST', parameters)
+
+
+class PSZoneConfig:
+    """ pubsub zone configuration """
+    def __init__(self, cfg, section):
+        self.full_sync = cfg.get(section, 'start_with_full_sync')
+        self.retention_days = cfg.get(section, 'retention_days')
index 9be658b7ff4126caf675ca23b11a8082fdad27d3..6acba7d7323b4e0f4c820ee0ccc2206021758bb0 100644 (file)
@@ -14,15 +14,25 @@ Since we use the same entry point file for all tests, running specific tests is
 ```
 $ nosetests test_multi.py:<specific_test_name>
 ```
+To run miltiple tests based on wildcard string, use the following format:
+```
+$ nosetests test_multi.py -m "<wildcard string>"
+```
 Note that the test to run, does not have to be inside the `test_multi.py` file.
 Note that different options for running specific and multiple tests exists in the [nose documentation](https://nose.readthedocs.io/en/latest/usage.html#options), as well as other options to control the execution of the tests.
 ## Configuration
+### Environment Variables
+Following RGW environment variables are taken into consideration when running the tests:
+ - `RGW_FRONTEND`: used to change frontend to 'civetweb' or 'beast' (default)
+ - `RGW_VALGRIND`: used to run the radosgw under valgrind. e.g. RGW_VALGRIND=yes
+Other environment variables used to configure elements other than RGW can also be used as they are used in vstart.sh. E.g. MON, OSD, MGR, MSD
 The configuration file for the run has 3 sections:
 ### Default
 This section holds the following parameters:
  - `num_zonegroups`: number of zone groups (integer, default 1)
  - `num_zones`: number of regular zones in each group (integer, default 3)
  - `num_ps_zones`: number of pubsub zones in each group (integer, default 0)         
+ - `num_az_zones`: number of archive zones (integer, default 0, max value 1)
  - `gateways_per_zone`: number of RADOS gateways per zone (integer, default 2)
  - `no_bootstrap`: whether to assume that the cluster is already up and does not need to be setup again. If set to "false", it will try to re-run the cluster, so, `mstop.sh` must be called beforehand. Should be set to false, anytime the configuration is changed. Otherwise, and assuming the cluster is already up, it should be set to "true" to save on execution time (boolean, default false)
  - `log_level`: console log level of the logs in the tests, note that any program invoked from the test my emit logs regardless of that setting (integer, default 20)
@@ -41,6 +51,8 @@ This section holds the following parameters:
 *TODO*
 ### Cloud
 *TODO*
+### PubSub
+*TODO*
 ## Writing Tests
 New tests should be added into the `/path/to/ceph/src/test/rgw/rgw_multi` subdirectory.
 - Base classes are in: `/path/to/ceph/src/test/rgw/rgw_multi/multisite.py`
index 6b12a6c0e0e3be120b1961f956f0cc019256bf38..99a0438f4f6b24886e147c8634a562c5ef58e376 100644 (file)
@@ -19,6 +19,7 @@ from rgw_multi.zone_es import ESZoneConfig as ESZoneConfig
 from rgw_multi.zone_cloud import CloudZone as CloudZone
 from rgw_multi.zone_cloud import CloudZoneConfig as CloudZoneConfig
 from rgw_multi.zone_ps import PSZone as PSZone
+from rgw_multi.zone_ps import PSZoneConfig as PSZoneConfig
 
 # make tests from rgw_multi.tests available to nose
 from rgw_multi.tests import *
@@ -70,6 +71,8 @@ class Cluster(multisite.Cluster):
             env = os.environ.copy()
             env['CEPH_NUM_MDS'] = '0'
             cmd += ['-n']
+            # cmd += ['-o']
+            # cmd += ['rgw_cache_enabled=false']
         bash(cmd, env=env)
         self.needs_reset = False
 
@@ -86,13 +89,18 @@ class Gateway(multisite.Gateway):
     def start(self, args = None):
         """ start the gateway """
         assert(self.cluster)
+        env = os.environ.copy()
+        # to change frontend, set RGW_FRONTEND env variable
+        # e.g. RGW_FRONTEND=civetweb
+        # to run test under valgrind memcheck, set RGW_VALGRIND to 'yes'
+        # e.g. RGW_VALGRIND=yes
         cmd = [mstart_path + 'mrgw.sh', self.cluster.cluster_id, str(self.port)]
         if self.id:
             cmd += ['-i', self.id]
         cmd += ['--debug-rgw=20', '--debug-ms=1']
         if args:
             cmd += args
-        bash(cmd)
+        bash(cmd, env=env)
 
     def stop(self):
         """ stop the gateway """
@@ -162,6 +170,7 @@ def init(parse_args):
                                          'num_zonegroups': 1,
                                          'num_zones': 3,
                                          'num_ps_zones': 0,
+                                         'num_az_zones': 0,
                                          'gateways_per_zone': 2,
                                          'no_bootstrap': 'false',
                                          'log_level': 20,
@@ -202,14 +211,19 @@ def init(parse_args):
     parser.add_argument('--reconfigure-delay', type=int, default=cfg.getint(section, 'reconfigure_delay'))
     parser.add_argument('--num-ps-zones', type=int, default=cfg.getint(section, 'num_ps_zones'))
 
+
     es_cfg = []
     cloud_cfg = []
+    ps_cfg = []
+    az_cfg = []
 
     for s in cfg.sections():
         if s.startswith('elasticsearch'):
             es_cfg.append(ESZoneConfig(cfg, s))
         elif s.startswith('cloud'):
             cloud_cfg.append(CloudZoneConfig(cfg, s))
+        elif s.startswith('pubsub'):
+            ps_cfg.append(PSZoneConfig(cfg, s))
 
     argv = []
 
@@ -232,7 +246,7 @@ def init(parse_args):
     admin_user = multisite.User('zone.user')
 
     user_creds = gen_credentials()
-    user = multisite.User('tester')
+    user = multisite.User('tester', tenant=args.tenant)
 
     realm = multisite.Realm('r')
     if bootstrap:
@@ -245,6 +259,9 @@ def init(parse_args):
 
     num_es_zones = len(es_cfg)
     num_cloud_zones = len(cloud_cfg)
+    num_ps_zones_from_conf = len(ps_cfg)
+    num_ps_zones = args.num_ps_zones if num_ps_zones_from_conf == 0 else num_ps_zones_from_conf 
+    print 'num_ps_zones = ' + str(num_ps_zones)
 
     num_zones = args.num_zones + num_es_zones + num_cloud_zones + args.num_ps_zones
 
@@ -300,7 +317,12 @@ def init(parse_args):
                                  ccfg.target_path, zonegroup, cluster)
             elif ps_zone:
                 zone_index = z - args.num_zones - num_es_zones - num_cloud_zones
-                zone = PSZone(zone_name(zg, z), zonegroup, cluster)
+                if num_ps_zones_from_conf == 0:
+                    zone = PSZone(zone_name(zg, z), zonegroup, cluster)
+                else:
+                    pscfg = ps_cfg[zone_index]
+                    zone = PSZone(zone_name(zg, z), zonegroup, cluster,
+                                  full_sync=pscfg.full_sync, retention_days=pscfg.retention_days)
             else:
                 zone = RadosZone(zone_name(zg, z), zonegroup, cluster)
 
@@ -346,14 +368,13 @@ def init(parse_args):
                     # create test user
                     arg = ['--display-name', '"Test User"']
                     arg += user_creds.credential_args()
-                    if args.tenant:
-                        cmd += ['--tenant', args.tenant]
                     user.create(zone, arg)
                 else:
                     # read users and update keys
                     admin_user.info(zone)
                     admin_creds = admin_user.credentials[0]
-                    user.info(zone)
+                    arg = []
+                    user.info(zone, arg)
                     user_creds = user.credentials[0]
 
     if not bootstrap:
@@ -361,7 +382,8 @@ def init(parse_args):
 
     config = Config(checkpoint_retries=args.checkpoint_retries,
                     checkpoint_delay=args.checkpoint_delay,
-                    reconfigure_delay=args.reconfigure_delay)
+                    reconfigure_delay=args.reconfigure_delay,
+                    tenant=args.tenant)
     init_multi(realm, user, config)
 
 def setup_module():
index 2ad1157d25ff893d9ac39cc4834aef18f8f5cb6c..0f11b817e8d19e97b0c844c183e98f423a5d1aa2 100644 (file)
@@ -2,6 +2,7 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "rgw/rgw_amqp.h"
+#include "common/ceph_context.h"
 #include "amqp_mock.h"
 #include <gtest/gtest.h>
 #include <chrono>
 
 using namespace rgw;
 
-const std::chrono::milliseconds wait_time(300);
+const std::chrono::milliseconds wait_time(10);
+const std::chrono::milliseconds long_wait_time = wait_time*50;
 
-TEST(AMQP_Connection, ConnectionOK)
+
+class CctCleaner {
+  CephContext* cct;
+public:
+  CctCleaner(CephContext* _cct) : cct(_cct) {}
+  ~CctCleaner() { 
+#ifdef WITH_SEASTAR
+    delete cct; 
+#else
+    cct->put(); 
+#endif
+  }
+};
+
+auto cct = new CephContext(CEPH_ENTITY_TYPE_CLIENT);
+
+CctCleaner cleaner(cct);
+
+class TestAMQP : public ::testing::Test {
+protected:
+  amqp::connection_ptr_t conn = nullptr;
+  unsigned current_dequeued = 0U;
+
+  void SetUp() override {
+    ASSERT_TRUE(amqp::init(cct));
+  }
+
+  void TearDown() override {
+    amqp::shutdown();
+  }
+
+  // wait for at least one new (since last drain) message to be dequeueud
+  // and then wait for all pending answers to be received
+  void wait_until_drained() {  
+    while (amqp::get_dequeued() == current_dequeued) {
+      std::this_thread::sleep_for(wait_time);
+    }
+    while (amqp::get_inflight() > 0) {
+      std::this_thread::sleep_for(wait_time);
+    }
+    current_dequeued = amqp::get_dequeued();
+  }
+};
+
+TEST_F(TestAMQP, ConnectionOK)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://localhost", "ex1");
+  conn = amqp::connect("amqp://localhost", "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_EQ(rc, 0);
 }
 
-TEST(AMQP_Connection, ConnectionReuse)
+TEST_F(TestAMQP, ConnectionReuse)
 {
+  amqp::connection_ptr_t conn1 = amqp::connect("amqp://localhost", "ex1");
+  EXPECT_TRUE(conn1);
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://localhost", "ex1");
-  EXPECT_TRUE(conn);
+  amqp::connection_ptr_t conn2 = amqp::connect("amqp://localhost", "ex1");
+  EXPECT_TRUE(conn2);
   EXPECT_EQ(amqp::get_connection_count(), connection_number);
-  auto rc = amqp::publish(conn, "topic", "message");
+  auto rc = amqp::publish(conn1, "topic", "message");
   EXPECT_EQ(rc, 0);
 }
 
-TEST(AMQP_Connection, NameResolutionFail)
+TEST_F(TestAMQP, NameResolutionFail)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://kaboom", "ex1");
+  conn = amqp::connect("amqp://kaboom", "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, InvalidPort)
+TEST_F(TestAMQP, InvalidPort)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://localhost:1234", "ex1");
+  conn = amqp::connect("amqp://localhost:1234", "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, InvalidHost)
+TEST_F(TestAMQP, InvalidHost)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://0.0.0.1", "ex1");
+  conn = amqp::connect("amqp://0.0.0.1", "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, InvalidVhost)
+TEST_F(TestAMQP, InvalidVhost)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://localhost/kaboom", "ex1");
+  conn = amqp::connect("amqp://localhost/kaboom", "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, UserPassword)
+TEST_F(TestAMQP, UserPassword)
 {
   amqp_mock::set_valid_host("127.0.0.1");
   {
     const auto connection_number = amqp::get_connection_count();
-    amqp::connection_ptr_t conn = amqp::connect("amqp://foo:bar@127.0.0.1", "ex1");
+    conn = amqp::connect("amqp://foo:bar@127.0.0.1", "ex1");
     EXPECT_TRUE(conn);
     EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
     auto rc = amqp::publish(conn, "topic", "message");
@@ -87,7 +135,7 @@ TEST(AMQP_Connection, UserPassword)
   amqp_mock::set_valid_host("127.0.0.2");
   {
     const auto connection_number = amqp::get_connection_count();
-    amqp::connection_ptr_t conn = amqp::connect("amqp://guest:guest@127.0.0.2", "ex1");
+    conn = amqp::connect("amqp://guest:guest@127.0.0.2", "ex1");
     EXPECT_TRUE(conn);
     EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
     auto rc = amqp::publish(conn, "topic", "message");
@@ -96,27 +144,27 @@ TEST(AMQP_Connection, UserPassword)
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_Connection, URLParseError)
+TEST_F(TestAMQP, URLParseError)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("http://localhost", "ex1");
+  conn = amqp::connect("http://localhost", "ex1");
   EXPECT_FALSE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, ExchangeMismatch)
+TEST_F(TestAMQP, ExchangeMismatch)
 {
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("http://localhost", "ex2");
+  conn = amqp::connect("http://localhost", "ex2");
   EXPECT_FALSE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
 }
 
-TEST(AMQP_Connection, MaxConnections)
+TEST_F(TestAMQP, MaxConnections)
 {
   // fill up all connections
   std::vector<amqp::connection_ptr_t> connections;
@@ -148,12 +196,14 @@ TEST(AMQP_Connection, MaxConnections)
     EXPECT_TRUE(amqp::disconnect(conn));
   }
   // wait for them to be deleted
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   EXPECT_LT(amqp::get_connection_count(), amqp::get_max_connections());
 }
 
 std::atomic<bool> callback_invoked = false;
 
+std::atomic<int> callbacks_invoked = 0;
+
 // note: because these callback are shared among different "publish" calls
 // they should be used on different connections
 
@@ -167,140 +217,238 @@ void my_callback_expect_nack(int rc) {
   callback_invoked = true;
 }
 
-TEST(AMQP_PublishAndWait, ReceiveAck)
+void my_callback_expect_multiple_acks(int rc) {
+  EXPECT_EQ(0, rc);
+  ++callbacks_invoked;
+}
+
+class dynamic_callback_wrapper {
+    dynamic_callback_wrapper() = default;
+public:
+    static dynamic_callback_wrapper* create() {
+        return new dynamic_callback_wrapper;
+    }
+    void callback(int rc) {
+      EXPECT_EQ(0, rc);
+      ++callbacks_invoked;
+      delete this;
+    }
+};
+
+void my_callback_expect_close_or_ack(int rc) {
+  // deleting the connection should trigger the callback with -4098
+  // but due to race conditions, some my get an ack
+  EXPECT_TRUE(-4098 == rc || 0 == rc);
+}
+
+TEST_F(TestAMQP, ReceiveAck)
 {
   callback_invoked = false;
   const std::string host("localhost1");
   amqp_mock::set_valid_host(host);
-  amqp::connection_ptr_t conn = amqp::connect("amqp://" + host, "ex1");
+  conn = amqp::connect("amqp://" + host, "ex1");
   EXPECT_TRUE(conn);
   auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_ack);
   EXPECT_EQ(rc, 0);
-  std::this_thread::sleep_for(wait_time);
+  wait_until_drained();
   EXPECT_TRUE(callback_invoked);
+  amqp_mock::set_valid_host("localhost");
+}
+
+TEST_F(TestAMQP, ImplicitConnectionClose)
+{
   callback_invoked = false;
+  const std::string host("localhost1");
+  amqp_mock::set_valid_host(host);
+  conn = amqp::connect("amqp://" + host, "ex1");
+  EXPECT_TRUE(conn);
+  const auto NUMBER_OF_CALLS = 2000;
+  for (auto i = 0; i < NUMBER_OF_CALLS; ++i) {
+    auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_close_or_ack);
+    EXPECT_EQ(rc, 0);
+  }
+  wait_until_drained();
+  // deleting the connection object should close the connection
+  conn.reset(nullptr);
+  amqp_mock::set_valid_host("localhost");
+}
+
+TEST_F(TestAMQP, ReceiveMultipleAck)
+{
+  callbacks_invoked = 0;
+  const std::string host("localhost1");
+  amqp_mock::set_valid_host(host);
+  conn = amqp::connect("amqp://" + host, "ex1");
+  EXPECT_TRUE(conn);
+  const auto NUMBER_OF_CALLS = 100;
+  for (auto i=0; i < NUMBER_OF_CALLS; ++i) {
+    auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_multiple_acks);
+    EXPECT_EQ(rc, 0);
+  }
+  wait_until_drained();
+  EXPECT_EQ(callbacks_invoked, NUMBER_OF_CALLS);
+  callbacks_invoked = 0;
+  amqp_mock::set_valid_host("localhost");
+}
+
+TEST_F(TestAMQP, ReceiveAckForMultiple)
+{
+  callbacks_invoked = 0;
+  const std::string host("localhost1");
+  amqp_mock::set_valid_host(host);
+  conn = amqp::connect("amqp://" + host, "ex1");
+  EXPECT_TRUE(conn);
+  amqp_mock::set_multiple(59);
+  const auto NUMBER_OF_CALLS = 100;
+  for (auto i=0; i < NUMBER_OF_CALLS; ++i) {
+    auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_multiple_acks);
+    EXPECT_EQ(rc, 0);
+  }
+  wait_until_drained();
+  EXPECT_EQ(callbacks_invoked, NUMBER_OF_CALLS);
+  callbacks_invoked = 0;
+  amqp_mock::set_valid_host("localhost");
+}
+
+TEST_F(TestAMQP, DynamicCallback)
+{
+  callbacks_invoked = 0;
+  const std::string host("localhost1");
+  amqp_mock::set_valid_host(host);
+  conn = amqp::connect("amqp://" + host, "ex1");
+  EXPECT_TRUE(conn);
+  amqp_mock::set_multiple(59);
+  const auto NUMBER_OF_CALLS = 100;
+  for (auto i=0; i < NUMBER_OF_CALLS; ++i) {
+    auto rc = publish_with_confirm(conn, "topic", "message",
+            std::bind(&dynamic_callback_wrapper::callback, dynamic_callback_wrapper::create(), std::placeholders::_1));
+    EXPECT_EQ(rc, 0);
+  }
+  wait_until_drained();
+  EXPECT_EQ(callbacks_invoked, NUMBER_OF_CALLS);
+  callbacks_invoked = 0;
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_PublishAndWait, ReceiveNack)
+TEST_F(TestAMQP, ReceiveNack)
 {
   callback_invoked = false;
   amqp_mock::REPLY_ACK = false;
   const std::string host("localhost2");
   amqp_mock::set_valid_host(host);
-  amqp::connection_ptr_t conn = amqp::connect("amqp://" + host, "ex1");
+  conn = amqp::connect("amqp://" + host, "ex1");
   EXPECT_TRUE(conn);
   auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_nack);
   EXPECT_EQ(rc, 0);
-  std::this_thread::sleep_for(wait_time);
+  wait_until_drained();
   EXPECT_TRUE(callback_invoked);
   amqp_mock::REPLY_ACK = true;
   callback_invoked = false;
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_PublishAndWait, FailWrite)
+TEST_F(TestAMQP, FailWrite)
 {
   callback_invoked = false;
   amqp_mock::FAIL_NEXT_WRITE = true;
   const std::string host("localhost2");
   amqp_mock::set_valid_host(host);
-  amqp::connection_ptr_t conn = amqp::connect("amqp://" + host, "ex1");
+  conn = amqp::connect("amqp://" + host, "ex1");
   EXPECT_TRUE(conn);
   auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_nack);
   EXPECT_EQ(rc, 0);
-  std::this_thread::sleep_for(wait_time);
+  wait_until_drained();
   EXPECT_TRUE(callback_invoked);
   amqp_mock::FAIL_NEXT_WRITE = false;
   callback_invoked = false;
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_PublishAndWait, ClosedConnection)
+TEST_F(TestAMQP, ClosedConnection)
 {
   callback_invoked = false;
   const auto current_connections = amqp::get_connection_count();
   const std::string host("localhost3");
   amqp_mock::set_valid_host(host);
-  amqp::connection_ptr_t conn = amqp::connect("amqp://" + host, "ex1");
+  conn = amqp::connect("amqp://" + host, "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), current_connections + 1);
   EXPECT_TRUE(amqp::disconnect(conn));
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   // make sure number of connections decreased back
   EXPECT_EQ(amqp::get_connection_count(), current_connections);
   auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_nack);
   EXPECT_LT(rc, 0);
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   EXPECT_FALSE(callback_invoked);
   callback_invoked = false;
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_ConnectionRetry, InvalidHost)
+TEST_F(TestAMQP, RetryInvalidHost)
 {
   const std::string host = "192.168.0.1";
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://"+host, "ex1");
+  conn = amqp::connect("amqp://"+host, "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
   // now next retry should be ok
   amqp_mock::set_valid_host(host);
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   rc = amqp::publish(conn, "topic", "message");
   EXPECT_EQ(rc, 0);
   amqp_mock::set_valid_host("localhost");
 }
 
-TEST(AMQP_ConnectionRetry, InvalidPort)
+TEST_F(TestAMQP, RetryInvalidPort)
 {
   const int port = 9999;
   const auto connection_number = amqp::get_connection_count();
-  amqp::connection_ptr_t conn = amqp::connect("amqp://localhost:" + std::to_string(port), "ex1");
+  conn = amqp::connect("amqp://localhost:" + std::to_string(port), "ex1");
   EXPECT_TRUE(conn);
   EXPECT_EQ(amqp::get_connection_count(), connection_number + 1);
   auto rc = amqp::publish(conn, "topic", "message");
   EXPECT_LT(rc, 0);
   // now next retry should be ok
   amqp_mock::set_valid_port(port);
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   rc = amqp::publish(conn, "topic", "message");
   EXPECT_EQ(rc, 0);
   amqp_mock::set_valid_port(5672);
 }
 
-TEST(AMQP_ConnectionRetry, FailWrite)
+TEST_F(TestAMQP, RetryFailWrite)
 {
   callback_invoked = false;
   amqp_mock::FAIL_NEXT_WRITE = true;
   const std::string host("localhost4");
   amqp_mock::set_valid_host(host);
-  amqp::connection_ptr_t conn = amqp::connect("amqp://" + host, "ex1");
+  conn = amqp::connect("amqp://" + host, "ex1");
   EXPECT_TRUE(conn);
   auto rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_nack);
   EXPECT_EQ(rc, 0);
   // set port to a different one, so that reconnect would fail
   amqp_mock::set_valid_port(9999);
-  std::this_thread::sleep_for(wait_time);
+  wait_until_drained();
   EXPECT_TRUE(callback_invoked);
   callback_invoked = false;
   rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_nack);
   EXPECT_LT(rc, 0);
   // expect immediate failure, no callback called after sleep
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   EXPECT_FALSE(callback_invoked);
   // set port to the right one so that reconnect would succeed
   amqp_mock::set_valid_port(5672);
   callback_invoked = false;
   amqp_mock::FAIL_NEXT_WRITE = false;
   // give time to reconnect
-  std::this_thread::sleep_for(wait_time);
+  std::this_thread::sleep_for(long_wait_time);
   // retry to publish should succeed now
   rc = publish_with_confirm(conn, "topic", "message", my_callback_expect_ack);
   EXPECT_EQ(rc, 0);
-  std::this_thread::sleep_for(wait_time);
+  wait_until_drained();
   EXPECT_TRUE(callback_invoked);
   callback_invoked = false;
   amqp_mock::set_valid_host("localhost");
diff --git a/ceph/src/test/rgw/test_rgw_arn.cc b/ceph/src/test/rgw/test_rgw_arn.cc
new file mode 100644 (file)
index 0000000..334c5ec
--- /dev/null
@@ -0,0 +1,107 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw/rgw_arn.h"
+#include <gtest/gtest.h>
+
+using namespace rgw;
+
+const int BASIC_ENTRIES = 6;
+
+const std::string basic_str[BASIC_ENTRIES] = {"arn:aws:s3:us-east-1:12345:resource",
+                                  "arn:aws:s3:us-east-1:12345:resourceType/resource",
+                                  "arn:aws:s3:us-east-1:12345:resourceType/resource/qualifier",
+                                  "arn:aws:s3:us-east-1:12345:resourceType/resource:qualifier",
+                                  "arn:aws:s3:us-east-1:12345:resourceType:resource",
+                                  "arn:aws:s3:us-east-1:12345:resourceType:resource/qualifier"};
+
+const std::string expected_basic_resource[BASIC_ENTRIES] = {"resource", 
+                                                "resourceType/resource", 
+                                                "resourceType/resource/qualifier",
+                                                "resourceType/resource:qualifier",
+                                                "resourceType:resource",
+                                                "resourceType:resource/qualifier"};
+TEST(TestARN, Basic)
+{
+  for (auto i = 0; i < BASIC_ENTRIES; ++i) {
+    boost::optional<ARN> arn = ARN::parse(basic_str[i]);
+    ASSERT_TRUE(arn);
+    EXPECT_EQ(arn->partition, Partition::aws);
+    EXPECT_EQ(arn->service, Service::s3);
+    EXPECT_STREQ(arn->region.c_str(), "us-east-1");
+    EXPECT_STREQ(arn->account.c_str(), "12345");
+    EXPECT_STREQ(arn->resource.c_str(), expected_basic_resource[i].c_str());
+  }
+}
+
+TEST(TestARN, ToString)
+{
+  for (auto i = 0; i < BASIC_ENTRIES; ++i) {
+    boost::optional<ARN> arn = ARN::parse(basic_str[i]);
+    ASSERT_TRUE(arn);
+    EXPECT_STREQ(to_string(*arn).c_str(), basic_str[i].c_str());
+  }
+}
+
+const std::string expected_basic_resource_type[BASIC_ENTRIES] = 
+    {"", "resourceType", "resourceType", "resourceType", "resourceType", "resourceType"};
+const std::string expected_basic_qualifier[BASIC_ENTRIES] = 
+    {"", "", "qualifier", "qualifier", "", "qualifier"};
+
+TEST(TestARNResource, Basic)
+{
+  for (auto i = 0; i < BASIC_ENTRIES; ++i) {
+    boost::optional<ARN> arn = ARN::parse(basic_str[i]);
+    ASSERT_TRUE(arn);
+    ASSERT_FALSE(arn->resource.empty());
+    boost::optional<ARNResource> resource = ARNResource::parse(arn->resource);
+    ASSERT_TRUE(resource);
+    EXPECT_STREQ(resource->resource.c_str(), "resource");
+    EXPECT_STREQ(resource->resource_type.c_str(), expected_basic_resource_type[i].c_str());
+    EXPECT_STREQ(resource->qualifier.c_str(), expected_basic_qualifier[i].c_str());
+  }
+}
+
+const int EMPTY_ENTRIES = 4;
+
+const std::string empty_str[EMPTY_ENTRIES] = {"arn:aws:s3:::resource",
+                                  "arn:aws:s3::12345:resource",
+                                  "arn:aws:s3:us-east-1::resource",
+                                  "arn:aws:s3:us-east-1:12345:"};
+
+TEST(TestARN, Empty)
+{
+  for (auto i = 0; i < EMPTY_ENTRIES; ++i) {
+    boost::optional<ARN> arn = ARN::parse(empty_str[i]);
+    ASSERT_TRUE(arn);
+    EXPECT_EQ(arn->partition, Partition::aws);
+    EXPECT_EQ(arn->service, Service::s3);
+    EXPECT_TRUE(arn->region.empty() || arn->region == "us-east-1");
+    EXPECT_TRUE(arn->account.empty() || arn->account == "12345");
+    EXPECT_TRUE(arn->resource.empty() || arn->resource == "resource");
+  }
+}
+
+const int WILDCARD_ENTRIES = 3;
+
+const std::string wildcard_str[WILDCARD_ENTRIES] = {"arn:aws:s3:*:*:resource",
+                                  "arn:aws:s3:*:12345:resource",
+                                  "arn:aws:s3:us-east-1:*:resource"};
+
+// FIXME: currently the following: "arn:aws:s3:us-east-1:12345:*"
+// does not fail, even if "wildcard" is not set to "true" 
+
+TEST(TestARN, Wildcard)
+{
+  for (auto i = 0; i < WILDCARD_ENTRIES; ++i) {
+    EXPECT_FALSE(ARN::parse(wildcard_str[i]));
+    boost::optional<ARN> arn = ARN::parse(wildcard_str[i], true);
+    ASSERT_TRUE(arn);
+    EXPECT_EQ(arn->partition, Partition::aws);
+    EXPECT_EQ(arn->service, Service::s3);
+    EXPECT_TRUE(arn->region == "*" || arn->region == "us-east-1");
+    EXPECT_TRUE(arn->account == "*" || arn->account == "12345");
+    EXPECT_TRUE(arn->resource == "*" || arn->resource == "resource");
+  }
+}
+
index 7d2ef9b3281a952f979947f18514016e6abf86a3..b7e9b0eabf7cacf0bd3f936cf034a2a65a0a344d 100644 (file)
@@ -18,7 +18,9 @@
 #include "rgw/rgw_dmclock_async_scheduler.h"
 
 #include <optional>
+#ifdef HAVE_BOOST_CONTEXT
 #include <boost/asio/spawn.hpp>
+#endif
 #include <gtest/gtest.h>
 #include "acconfig.h"
 #include "global/global_context.h"
index a42360030ab795e84cf9581eb2df28837e1699b0..c21546c4ba318c456189f416864559771d9728b2 100644 (file)
@@ -39,10 +39,10 @@ using boost::none;
 using rgw::auth::Identity;
 using rgw::auth::Principal;
 
-using rgw::IAM::ARN;
+using rgw::ARN;
 using rgw::IAM::Effect;
 using rgw::IAM::Environment;
-using rgw::IAM::Partition;
+using rgw::Partition;
 using rgw::IAM::Policy;
 using rgw::IAM::s3All;
 using rgw::IAM::s3Count;
@@ -76,7 +76,10 @@ using rgw::IAM::s3ListMultipartUploadParts;
 using rgw::IAM::None;
 using rgw::IAM::s3PutBucketAcl;
 using rgw::IAM::s3PutBucketPolicy;
-using rgw::IAM::Service;
+using rgw::Service;
+using rgw::IAM::s3GetBucketObjectLockConfiguration;
+using rgw::IAM::s3GetObjectRetention;
+using rgw::IAM::s3GetObjectLegalHold;
 using rgw::IAM::TokenID;
 using rgw::IAM::Version;
 using rgw::IAM::Action_t;
@@ -367,6 +370,9 @@ TEST_F(PolicyTest, Parse3) {
   act2[s3GetReplicationConfiguration] = 1;
   act2[s3GetObjectTagging] = 1;
   act2[s3GetObjectVersionTagging] = 1;
+  act2[s3GetBucketObjectLockConfiguration] = 1;
+  act2[s3GetObjectRetention] = 1;
+  act2[s3GetObjectLegalHold] = 1;
 
   EXPECT_EQ(p->statements[2].action, act2);
   EXPECT_EQ(p->statements[2].notaction, None);
@@ -430,6 +436,9 @@ TEST_F(PolicyTest, Eval3) {
   s3allow[s3GetReplicationConfiguration] = 1;
   s3allow[s3GetObjectTagging] = 1;
   s3allow[s3GetObjectVersionTagging] = 1;
+  s3allow[s3GetBucketObjectLockConfiguration] = 1;
+  s3allow[s3GetObjectRetention] = 1;
+  s3allow[s3GetObjectLegalHold] = 1;
 
   EXPECT_EQ(p.eval(em, none, s3PutBucketPolicy,
                   ARN(Partition::aws, Service::s3,
index 0277493a269312c152f0620b930529a485e565c1..50c42c7af7eddb8f09685c5e36a2d492dfaf13d2 100644 (file)
@@ -433,3 +433,31 @@ TEST(TestDecoder, Attributes)
       expected_output_with_attributes);
 }
 
+static const char* expected_xml_output = "<Items xmlns=\"https://www.ceph.com/doc/\">"
+                             "<Item Order=\"0\"><NameAndStatus><Name>hello</Name><Status>True</Status></NameAndStatus><Value>0</Value></Item>"
+                             "<Item Order=\"1\"><NameAndStatus><Name>hello</Name><Status>False</Status></NameAndStatus><Value>1</Value></Item>"
+                             "<Item Order=\"2\"><NameAndStatus><Name>hello</Name><Status>True</Status></NameAndStatus><Value>2</Value></Item>"
+                             "<Item Order=\"3\"><NameAndStatus><Name>hello</Name><Status>False</Status></NameAndStatus><Value>3</Value></Item>"
+                             "<Item Order=\"4\"><NameAndStatus><Name>hello</Name><Status>True</Status></NameAndStatus><Value>4</Value></Item>"
+                           "</Items>";
+TEST(TestEncoder, ListWithAttrsAndNS)
+{
+  XMLFormatter f;
+  const auto array_size = 5;
+  f.open_array_section_in_ns("Items", "https://www.ceph.com/doc/");
+  for (auto i = 0; i < array_size; ++i) {
+    FormatterAttrs item_attrs("Order", std::to_string(i).c_str(), NULL);
+    f.open_object_section_with_attrs("Item", item_attrs);
+    f.open_object_section("NameAndStatus");
+    encode_xml("Name", "hello", &f);
+    encode_xml("Status", (i%2 == 0), &f);
+    f.close_section();
+    encode_xml("Value", i, &f);
+    f.close_section();
+  }
+  f.close_section();
+  std::stringstream ss;
+  f.flush(ss);
+  ASSERT_STREQ(ss.str().c_str(), expected_xml_output);
+}
+
index 162cec99a6a0e579bbdc5957568b9d698718e08a..bef0be6166322b7c02ac9842f7e0e7118be0b962 100644 (file)
@@ -1947,7 +1947,9 @@ int do_remove_object(ObjectStore *store, coll_t coll,
     r = get_snapset(store, coll, ghobj, ss, false);
     if (r < 0) {
       cerr << "Can't get snapset error " << cpp_strerror(r) << std::endl;
-      return r;
+      // If --force and bad snapset let them remove the head
+      if (!(force && !all))
+        return r;
     }
     if (!ss.snaps.empty() && !all) {
       if (force) {
index bd048c2e4593503e0584e12eaee456d886e0929c..8ab134f8d61235bff7e0be3f2e82dfa48a43aec7 100644 (file)
@@ -11,7 +11,7 @@
  * Foundation.  See file COPYING.
  * 
  */
-
+#include <memory>
 #include "common/errno.h"
 #include "osdc/Journaler.h"
 #include "mds/JournalPointer.h"
@@ -196,7 +196,7 @@ int Resetter::_write_reset_event(Journaler *journaler)
 {
   ceph_assert(journaler != NULL);
 
-  LogEvent *le = new EResetJournal;
+  auto le = std::make_unique<EResetJournal>();
 
   bufferlist bl;
   le->encode_with_header(bl, CEPH_FEATURES_SUPPORTED_DEFAULT);
index 09eed5a006ddaaa7f10e505b53d0c1d41a5344b4..5db84b56f6509c027e6b7f7f1ad8d641ae04b339 100644 (file)
@@ -116,14 +116,11 @@ def ls(path, opts=''):
         return []
 
 def glob(path, pattern):
-    if isinstance(path, bytes):
-        path = path.decode('utf-8')
     paths = []
     parent_dir = os.path.dirname(path)
-    if parent_dir == '':
-        parent_dir = '/'
-    if path == '/' or is_dir_exists(os.path.basename(path),
-                                        parent_dir):
+    if parent_dir == b'':
+        parent_dir = b'/'
+    if path == b'/' or is_dir_exists(os.path.basename(path), parent_dir):
         for i in ls(path, opts='A'):
             if fnmatch.fnmatch(i.d_name, pattern):
                 paths.append(os.path.join(path, i.d_name))
@@ -131,7 +128,7 @@ def glob(path, pattern):
 
 
 def locate_file(name, case_sensitive=True):
-    dir_list = sorted(set(dirwalk(cephfs.getcwd().decode('utf-8'))))
+    dir_list = sorted(set(dirwalk(cephfs.getcwd())))
     if not case_sensitive:
         return [dname for dname in dir_list if name.lower() in dname.lower()]
     else:
@@ -145,16 +142,16 @@ def get_all_possible_paths(pattern):
     if is_rel_path:
         dir_ = cephfs.getcwd()
     else:
-        dir_ = '/'
+        dir_ = b'/'
         pattern = pattern[1:]
-    patterns = pattern.split('/')
+    patterns = pattern.split(b'/')
     paths.extend(glob(dir_, patterns[0]))
     patterns.pop(0)
     for pattern in patterns:
         for path in paths:
             paths.extend(glob(path, pattern))
     return [path for path in paths if fnmatch.fnmatch(path,
-            os.path.join(cephfs.getcwd().decode('utf-8'), complete_pattern))]
+            os.path.join(cephfs.getcwd(), complete_pattern))]
 
 
 suffixes = ['B', 'K', 'M', 'G', 'T', 'P']
@@ -171,8 +168,6 @@ def humansize(nbytes):
 
 
 def print_long(path, is_dir, human_readable):
-    if not isinstance(path, bytes):
-        path = to_bytes(path)
     info = cephfs.stat(path)
     pretty = os.path.basename(path.decode('utf-8'))
     if is_dir:
@@ -197,11 +192,7 @@ def word_len(word):
     return len(word)
 
 
-def is_dir_exists(path, dir_=''):
-    if isinstance(path, bytes):
-        path = path.decode('utf-8')
-    if isinstance(dir_, bytes):
-        dir_ = dir_.decode('utf-8')
+def is_dir_exists(path, dir_=b''):
     path_to_stat = os.path.join(dir_, path)
     try:
         return ((cephfs.stat(path_to_stat).st_mode & 0o0040000) != 0)
@@ -209,11 +200,7 @@ def is_dir_exists(path, dir_=''):
         return False
 
 
-def is_file_exists(path, dir_=''):
-    if isinstance(path, bytes):
-        path = path.decode('utf-8')
-    if isinstance(dir_, bytes):
-        dir_ = dir_.decode('utf-8')
+def is_file_exists(path, dir_=b''):
     try:
         # if its not a directory, then its a file
         return ((cephfs.stat(os.path.join(dir_, path)).st_mode & 0o0040000) == 0)
@@ -224,6 +211,7 @@ def is_file_exists(path, dir_=''):
 def print_list(words, termwidth=79):
     if not words:
         return
+    words = [word.decode('utf-8') if isinstance(word, bytes) else word for word in words]
     width = max([word_len(word) for word in words]) + 2
     nwords = len(words)
     ncols = max(1, (termwidth + 1) // (width + 1))
@@ -244,20 +232,22 @@ def copy_from_local(local_path, remote_path):
     file_ = None
     fd = None
     convert_to_bytes = False
-    if local_path == '-':
+    if local_path == b'-':
         file_ = sys.stdin
         convert_to_bytes = True
     else:
         try:
             file_ = open(local_path, 'rb')
         except PermissionError:
-            poutput("error: no permission to read local file %s" % local_path)
+            perror('error: no permission to read local file {}'.format(
+                   local_path.decode('utf-8')), end='\n', apply_style=True)
             return
         stdin = 1
     try:
         fd = cephfs.open(remote_path, 'w', 0o666)
     except libcephfs.Error:
-        poutput("error: no permission to write remote file %s" % remote_path)
+        perror('error: no permission to write remote file {}'.format(
+               remote_path.decode('utf-8')), end='\n', apply_style=True)
         return
     progress = 0
     while True:
@@ -278,12 +268,12 @@ def copy_from_local(local_path, remote_path):
 
 def copy_to_local(remote_path, local_path):
     fd = None
-    if local_path != '-':
+    if local_path != b'-':
         local_dir = os.path.dirname(local_path)
-        dir_list = remote_path.rsplit('/', 1)
+        dir_list = remote_path.rsplit(b'/', 1)
         if not os.path.exists(local_dir):
             os.makedirs(local_dir)
-        if len(dir_list) > 2 and dir_list[1] == '':
+        if len(dir_list) > 2 and dir_list[1] == b'':
             return
         fd = open(local_path, 'wb+')
     file_ = cephfs.open(remote_path, 'r')
@@ -309,8 +299,8 @@ def dirwalk(path):
     """
     path = os.path.normpath(path)
     for item in ls(path, opts='A'):
-        fullpath = os.path.join(path, item.d_name.decode('utf-8'))
-        src_path = fullpath.rsplit('/', 1)[0]
+        fullpath = os.path.join(path, item.d_name)
+        src_path = fullpath.rsplit(b'/', 1)[0]
 
         yield os.path.normpath(fullpath)
         if is_dir_exists(item.d_name, src_path):
@@ -401,6 +391,14 @@ class CephFSShell(Cmd):
             self.poutput(e)
             traceback.print_exc(file=sys.stdout)
 
+    class path_to_bytes(argparse.Action):
+        def __call__(self, parser, namespace, values, option_string=None):
+            if isinstance(values, str):
+                values = to_bytes(values)
+            if isinstance(values, list):
+                values = list(map(to_bytes, values))
+            setattr(namespace, self.dest, values)
+
     def complete_mkdir(self, text, line, begidx, endidx):
         """
         auto complete of file name.
@@ -477,6 +475,7 @@ class CephFSShell(Cmd):
     mkdir_parser = argparse.ArgumentParser(
         description='Create the directory(ies), if they do not already exist.')
     mkdir_parser.add_argument('dirs', type=str,
+                              action=path_to_bytes,
                               metavar='DIR_NAME',
                               help='Name of new_directory.',
                               nargs='+')
@@ -517,9 +516,9 @@ exists.')
 
     put_parser = argparse.ArgumentParser(
         description='Copy a file/directory to Ceph File System from Local File System.')
-    put_parser.add_argument('local_path', type=str,
+    put_parser.add_argument('local_path', type=str, action=path_to_bytes,
                             help='Path of the file in the local system')
-    put_parser.add_argument('remote_path', type=str,
+    put_parser.add_argument('remote_path', type=str, action=path_to_bytes,
                             help='Path of the file in the remote system.',
                             nargs='?', default='.')
     put_parser.add_argument('-f', '--force', action='store_true',
@@ -532,24 +531,24 @@ exists.')
         """
         root_src_dir = args.local_path
         root_dst_dir = args.remote_path
-        if args.local_path == '.' or args.local_path == './':
-            root_src_dir = os.getcwd()
-        elif len(args.local_path.rsplit('/', 1)) < 2:
-            root_src_dir = os.path.join(os.getcwd(), args.local_path)
+        if args.local_path == b'.' or args.local_path == b'./':
+            root_src_dir = os.getcwdb()
+        elif len(args.local_path.rsplit(b'/', 1)) < 2:
+            root_src_dir = os.path.join(os.getcwdb(), args.local_path)
         else:
-            p = args.local_path.split('/')
-            if p[0] == '.':
-                root_src_dir = os.getcwd()
+            p = args.local_path.split(b'/')
+            if p[0] == b'.':
+                root_src_dir = os.getcwdb()
                 p.pop(0)
                 while len(p) > 0:
-                    root_src_dir += '/' + p.pop(0)
-
-        if root_dst_dir == '.':
-            if args.local_path != '-':
-                root_dst_dir = root_src_dir.rsplit('/', 1)[1]
-                if root_dst_dir == "":
-                    root_dst_dir = root_src_dir.rsplit('/', 1)[0]
-                    a = root_dst_dir.rsplit('/', 1)
+                    root_src_dir += b'/' + p.pop(0)
+
+        if root_dst_dir == b'.':
+            if args.local_path != b'-':
+                root_dst_dir = root_src_dir.rsplit(b'/', 1)[1]
+                if root_dst_dir == b'':
+                    root_dst_dir = root_src_dir.rsplit(b'/', 1)[0]
+                    a = root_dst_dir.rsplit(b'/', 1)
                     if len(a) > 1:
                         root_dst_dir = a[1]
                     else:
@@ -558,31 +557,35 @@ exists.')
                 self.poutput("error: no filename specified for destination")
                 return
 
-        if root_dst_dir[-1] != '/':
-            root_dst_dir += '/'
+        if root_dst_dir[-1] != b'/':
+            root_dst_dir += b'/'
 
-        if args.local_path == '-' or os.path.isfile(root_src_dir):
+        if args.local_path == b'-' or os.path.isfile(root_src_dir):
             if not args.force:
                 if os.path.isfile(root_src_dir):
                     dst_file = root_dst_dir
                     if is_file_exists(dst_file):
-                        self.poutput("%s: file exists! use --force to overwrite" % dst_file)
+                        self.perror('{}: file exists! use --force to overwrite'.format(
+                                    dst_file.decode('utf-8')), end='\n',
+                                    apply_style=True)
                         return
-            if args.local_path == '-':
-                root_src_dir = '-'
+            if args.local_path == b'-':
+                root_src_dir = b'-'
             copy_from_local(root_src_dir, root_dst_dir)
         else:
             for src_dir, dirs, files in os.walk(root_src_dir):
+                if isinstance(src_dir, str):
+                    src_dir = to_bytes(src_dir)
                 dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
-                dst_dir = re.sub(r'\/+', '/', cephfs.getcwd().decode('utf-8')
+                dst_dir = re.sub(rb'\/+', b'/', cephfs.getcwd()
                                  + dst_dir)
-                if args.force and dst_dir != '/' and not is_dir_exists(
+                if args.force and dst_dir != b'/' and not is_dir_exists(
                         dst_dir[:-1]) and not locate_file(dst_dir):
                     try:
                         cephfs.mkdirs(dst_dir, 0o777)
                     except libcephfs.Error:
                         pass
-                if (not args.force) and dst_dir != '/' and not is_dir_exists(
+                if (not args.force) and dst_dir != b'/' and not is_dir_exists(
                         dst_dir) and not os.path.isfile(root_src_dir):
                     try:
                         cephfs.mkdirs(dst_dir, 0o777)
@@ -599,11 +602,11 @@ exists.')
 
                 for file_ in files:
                     src_file = os.path.join(src_dir, file_)
-                    dst_file = re.sub(r'\/+', '/', '/' + dst_dir + '/' + file_)
+                    dst_file = re.sub(rb'\/+', b'/', b'/' + dst_dir + b'/' + file_)
                     if (not args.force) and is_file_exists(dst_file):
                         return
-                    copy_from_local(src_file, os.path.join(
-                        cephfs.getcwd().decode('utf-8'), dst_file))
+                    copy_from_local(src_file, os.path.join(cephfs.getcwd(),
+                                    dst_file))
 
     def complete_get(self, text, line, begidx, endidx):
         """
@@ -613,9 +616,9 @@ exists.')
 
     get_parser = argparse.ArgumentParser(
         description='Copy a file from Ceph File System from Local Directory.')
-    get_parser.add_argument('remote_path', type=str,
+    get_parser.add_argument('remote_path', type=str, action=path_to_bytes,
                             help='Path of the file in the remote system')
-    get_parser.add_argument('local_path', type=str,
+    get_parser.add_argument('local_path', type=str, action=path_to_bytes,
                             help='Path of the file in the local system',
                             nargs='?', default='.')
     get_parser.add_argument('-f', '--force', action='store_true',
@@ -628,35 +631,38 @@ exists.')
         """
         root_src_dir = args.remote_path
         root_dst_dir = args.local_path
-        fname = root_src_dir.rsplit('/', 1)
-        if args.local_path == '.':
-            root_dst_dir = os.getcwd()
-        if args.remote_path == '.':
-            root_src_dir = cephfs.getcwd().decode('utf-8')
-        if args.local_path == '-':
-            if args.remote_path == '.' or args.remote_path == './':
-                self.poutput("error: no remote file name specified")
+        fname = root_src_dir.rsplit(b'/', 1)
+        if args.local_path == b'.':
+            root_dst_dir = os.getcwdb()
+        if args.remote_path == b'.':
+            root_src_dir = cephfs.getcwd()
+        if args.local_path == b'-':
+            if args.remote_path == b'.' or args.remote_path == b'./':
+                self.perror('error: no remote file name specified', end='\n',
+                            apply_style=True)
                 return
-            copy_to_local(root_src_dir, '-')
+            copy_to_local(root_src_dir, b'-')
         elif is_file_exists(args.remote_path):
             copy_to_local(root_src_dir,
-                          root_dst_dir + '/' + root_src_dir)
-        elif '/'in root_src_dir and is_file_exists(fname[1], fname[0]):
+                          root_dst_dir + b'/' + root_src_dir)
+        elif b'/'in root_src_dir and is_file_exists(fname[1], fname[0]):
             copy_to_local(root_src_dir, root_dst_dir)
         else:
             files = list(reversed(sorted(dirwalk(root_src_dir))))
             if len(files) == 0:
                 try:
-                    os.makedirs(root_dst_dir + '/' + root_src_dir)
+                    os.makedirs(root_dst_dir + b'/' + root_src_dir)
                 except OSError:
                     if args.force:
                         pass
                     else:
-                        self.poutput("%s: already exists! use --force to overwrite" % root_src_dir)
+                        self.perror('{}: already exists! use --force to overwrite'.format(
+                                    root_src_dir.decode('utf-8')), end='\n',
+                                    apply_style=True)
                         return
 
             for file_ in files:
-                dst_dirpath, dst_file = file_.rsplit('/', 1)
+                dst_dirpath, dst_file = file_.rsplit(b'/', 1)
                 if dst_dirpath in files:
                     files.remove(dst_dirpath)
                 dst_path = os.path.join(root_dst_dir, dst_dirpath, dst_file)
@@ -670,7 +676,9 @@ exists.')
                     if not args.force:
                         try:
                             os.stat(dst_path)
-                            self.poutput("%s: file already exists! use --force to override" % file_)
+                            self.perror('{}: file already exists! use --force to override'.format(
+                                        file_.decode('utf-8')), end='\n',
+                                        apply_style=True)
                             return
                         except OSError:
                             copy_to_local(file_, dst_path)
@@ -695,7 +703,8 @@ exists.')
     ls_parser.add_argument('-a', '--all', action='store_true',
                            help='Do not Ignore entries starting with .')
     ls_parser.add_argument('-S', action='store_true', help='Sort by file_size')
-    ls_parser.add_argument('paths', help='Name of Directories', nargs='*', default=['.'])
+    ls_parser.add_argument('paths', help='Name of Directories',
+                           action=path_to_bytes, nargs='*', default=['.'])
 
     @with_argparser(ls_parser)
     def do_ls(self, args):
@@ -706,17 +715,17 @@ exists.')
         for path in paths:
             values = []
             items = []
-            if path.count('*') > 0:
+            if path.count(b'*') > 0:
                 all_items = get_all_possible_paths(path)
                 if len(all_items) == 0:
                     continue
-                path = all_items[0].rsplit('/', 1)[0]
-                if path == '':
-                    path = '/'
+                path = all_items[0].rsplit(b'/', 1)[0]
+                if path == b'':
+                    path = b'/'
                 dirs = []
                 for i in all_items:
                     for item in ls(path):
-                        d_name = item.d_name.decode('utf-8')
+                        d_name = item.d_name
                         if os.path.basename(i) == d_name:
                             if item.is_dir():
                                 dirs.append(os.path.join(path, d_name))
@@ -725,12 +734,11 @@ exists.')
                 if dirs:
                     paths.extend(dirs)
                 else:
-                    self.poutput(path, end=':\n')
+                    self.poutput(path.decode('utf-8'), end=':\n')
                 items = sorted(items, key=lambda item: item.d_name)
             else:
-                if path != '' and path != cephfs.getcwd().decode(
-                        'utf-8') and len(paths) > 1:
-                    self.poutput(path, end=':\n')
+                if path != b'' and path != cephfs.getcwd() and len(paths) > 1:
+                    self.poutput(path.decode('utf-8'), end=':\n')
                 items = sorted(ls(path),
                                key=lambda item: item.d_name)
             if not args.all:
@@ -738,34 +746,34 @@ exists.')
 
             if args.S:
                 items = sorted(items, key=lambda item: cephfs.stat(
-                    path + '/' + item.d_name.decode('utf-8')).st_size)
+                    path + b'/' + item.d_name).st_size)
 
             if args.reverse:
                 items = reversed(items)
             for item in items:
-                path = item
-                is_dir = False
-                if not isinstance(item, str):
-                    path = item.d_name.decode('utf-8')
-                    is_dir = item.is_dir()
+                filepath = item.d_name
+                is_dir = item.is_dir()
 
                 if args.long and args.H:
-                    print_long(cephfs.getcwd().decode(
-                        'utf-8') + path + '/' + path, is_dir, True)
+                    print_long(cephfs.getcwd()
+                               + path
+                               + b'/'
+                               + filepath,
+                               is_dir, True)
                 elif args.long:
-                    print_long(cephfs.getcwd().decode('utf-8') +
-                               path +
-                               '/' +
-                               path,
+                    print_long(cephfs.getcwd()
+                               + path
+                               + b'/'
+                               + filepath,
                                is_dir, False)
                 elif is_dir:
-                    values.append(colorama.Style.BRIGHT +
-                                  colorama.Fore.CYAN +
-                                  path +
-                                  '/' +
-                                  colorama.Style.RESET_ALL)
+                    values.append(colorama.Style.BRIGHT
+                                  + colorama.Fore.CYAN
+                                  + filepath.decode('utf-8')
+                                  + '/'
+                                  colorama.Style.RESET_ALL)
                 else:
-                    values.append(path)
+                    values.append(filepath)
             if not args.long:
                 print_list(values, shutil.get_terminal_size().columns)
                 if path != paths[-1]:
@@ -778,7 +786,8 @@ exists.')
         return self.complete_filenames(text, line, begidx, endidx)
 
     rmdir_parser = argparse.ArgumentParser(description='Remove Directory.')
-    rmdir_parser.add_argument('paths', help='Directory Path.', nargs='+')
+    rmdir_parser.add_argument('paths', help='Directory Path.', nargs='+',
+                              action=path_to_bytes)
     rmdir_parser.add_argument('-p', '--parent', action='store_true',
                               help='Remove parent directories as necessary. \
 When this option is specified, no error is reported if a directory has any \
@@ -792,13 +801,13 @@ sub-directories, files')
         is_pattern = False
         paths = args.paths
         for path in paths:
-            if path.count('*') > 0:
+            if path.count(b'*') > 0:
                 is_pattern = True
                 all_items = get_all_possible_paths(path)
                 if len(all_items) > 0:
-                    path = all_items[0].rsplit('/', 1)[0]
-                if path == '':
-                    path = '/'
+                    path = all_items[0].rsplit(b'/', 1)[0]
+                if path == b'':
+                    path = b'/'
                 dirs = []
                 for i in all_items:
                     for item in ls(path):
@@ -810,24 +819,23 @@ sub-directories, files')
                 continue
             else:
                 is_pattern = False
-            path = ''
-            path = os.path.normpath(os.path.join(
-                cephfs.getcwd().decode('utf-8'), path))
+            path = os.path.normpath(os.path.join(cephfs.getcwd(), path))
             if args.parent:
-                files = reversed(
-                    sorted(set(dirwalk(path))))
-                for path in files:
-                    path = os.path.normpath(path)
-                    if path[1:] != path:
+                files = reversed(sorted(set(dirwalk(path))))
+                for filepath in files:
+                    filepath = os.path.normpath(filepath)
+                    if filepath[1:] != path:
                         try:
-                            cephfs.rmdir(path)
+                            cephfs.rmdir(filepath)
                         except libcephfs.Error:
-                            cephfs.unlink(path)
-            if not is_pattern and path != os.path.normpath(path):
+                            cephfs.unlink(filepath)
+            if not is_pattern and path != os.path.normpath(b''):
                 try:
                     cephfs.rmdir(path)
                 except libcephfs.Error:
-                    self.poutput('error: no such directory "%s"' % path)
+                    self.perror('error: no such directory {} exists'.format(
+                                path.decode('utf-8')), end='\n',
+                                apply_style=True)
 
     def complete_rm(self, text, line, begidx, endidx):
         """
@@ -836,7 +844,8 @@ sub-directories, files')
         return self.complete_filenames(text, line, begidx, endidx)
 
     rm_parser = argparse.ArgumentParser(description='Remove File.')
-    rm_parser.add_argument('paths', help='File Path.', nargs='+')
+    rm_parser.add_argument('paths', help='File Path.', nargs='+',
+                           action=path_to_bytes)
 
     @with_argparser(rm_parser)
     def do_rm(self, args):
@@ -845,14 +854,15 @@ sub-directories, files')
         """
         file_paths = args.paths
         for path in file_paths:
-            if path.count('*') > 0:
+            if path.count(b'*') > 0:
                 file_paths.extend([i for i in get_all_possible_paths(
                     path) if is_file_exists(i)])
             else:
                 try:
                     cephfs.unlink(path)
                 except libcephfs.Error:
-                    self.poutput('%s: no such file' % path)
+                    self.perror('{}: no such file'.format(path.decode('utf-8')),
+                                end='\n', apply_style=True)
 
     def complete_mv(self, text, line, begidx, endidx):
         """
@@ -861,8 +871,9 @@ sub-directories, files')
         return self.complete_filenames(text, line, begidx, endidx)
 
     mv_parser = argparse.ArgumentParser(description='Move File.')
-    mv_parser.add_argument('src_path', type=str, help='Source File Path.')
-    mv_parser.add_argument('dest_path', type=str,
+    mv_parser.add_argument('src_path', type=str, action=path_to_bytes,
+                           help='Source File Path.')
+    mv_parser.add_argument('dest_path', type=str, action=path_to_bytes,
                            help='Destination File Path.')
 
     @with_argparser(mv_parser)
@@ -882,7 +893,8 @@ sub-directories, files')
         return self.complete_filenames(text, line, begidx, endidx)
 
     cd_parser = argparse.ArgumentParser(description='Change working directory')
-    cd_parser.add_argument('path', type=str, help='Name of the directory.', default='/')
+    cd_parser.add_argument('path', type=str, help='Name of the directory.',
+                           action=path_to_bytes, nargs='?', default='/')
 
     @with_argparser(cd_parser)
     def do_cd(self, args):
@@ -894,7 +906,8 @@ sub-directories, files')
             self.working_dir = cephfs.getcwd().decode('utf-8')
             self.set_prompt()
         except libcephfs.Error:
-            self.poutput("%s: no such directory" % args.path)
+            self.perror('{}: no such directory'.format(args.path.decode('utf-8')),
+                        end='\n', apply_style=True)
 
     def do_cwd(self, arglist):
         """
@@ -910,7 +923,8 @@ sub-directories, files')
 
     chmod_parser = argparse.ArgumentParser(description='Create Directory.')
     chmod_parser.add_argument('mode', type=str, action=ModeAction, help='Mode')
-    chmod_parser.add_argument('paths', type=str, help='Name of the file', nargs="+")
+    chmod_parser.add_argument('paths', type=str, action=path_to_bytes,
+                              help='Name of the file', nargs='+')
 
     @with_argparser(chmod_parser)
     def do_chmod(self, args):
@@ -922,7 +936,8 @@ sub-directories, files')
             try:
                 cephfs.chmod(path, mode)
             except libcephfs.Error:
-                self.poutput('%s: no such file or directory' % path)
+                self.perror('{}: no such file or directory'.format(
+                            path.decode('utf-8')), end='\n', apply_style=True)
 
     def complete_cat(self, text, line, begidx, endidx):
         """
@@ -931,7 +946,8 @@ sub-directories, files')
         return self.complete_filenames(text, line, begidx, endidx)
 
     cat_parser = argparse.ArgumentParser(description='')
-    cat_parser.add_argument('paths', help='Name of Files', nargs='+')
+    cat_parser.add_argument('paths', help='Name of Files', action=path_to_bytes,
+                            nargs='+')
 
     @with_argparser(cat_parser)
     def do_cat(self, args):
@@ -940,9 +956,10 @@ sub-directories, files')
         """
         for path in args.paths:
             if is_file_exists(path):
-                copy_to_local(path, '-')
+                copy_to_local(path, b'-')
             else:
-                self.poutput('%s: no such file' % path)
+                self.perror('{}: no such file'.format(path.decode('utf-8')),
+                            end='\n', apply_style=True)
 
     umask_parser = argparse.ArgumentParser(description='Set umask value.')
     umask_parser.add_argument('mode', help='Mode', type=str, action=ModeAction,
@@ -965,8 +982,9 @@ sub-directories, files')
         """
         return self.complete_filenames(text, line, begidx, endidx)
 
-    write_parser = argparse.ArgumentParser(description='')
-    write_parser.add_argument('path', type=str, help='Name of File')
+    write_parser = argparse.ArgumentParser(description='Writes data into a file')
+    write_parser.add_argument('path', type=str, action=path_to_bytes,
+                              help='Name of File')
 
     @with_argparser(write_parser)
     def do_write(self, args):
@@ -974,7 +992,7 @@ sub-directories, files')
         Write data into a file.
         """
 
-        copy_from_local('-', args.path)
+        copy_from_local(b'-', args.path)
 
     def complete_lcd(self, text, line, begidx, endidx):
         """
@@ -984,7 +1002,7 @@ sub-directories, files')
         return self.index_based_complete(text, line, begidx, endidx, index_dict)
 
     lcd_parser = argparse.ArgumentParser(description='')
-    lcd_parser.add_argument('path', type=str, help='Path')
+    lcd_parser.add_argument('path', type=str, action=path_to_bytes, help='Path')
 
     @with_argparser(lcd_parser)
     def do_lcd(self, args):
@@ -1006,7 +1024,8 @@ sub-directories, files')
 
     lls_parser = argparse.ArgumentParser(
         description='List files in local system.')
-    lls_parser.add_argument('paths', help='Paths', nargs='*')
+    lls_parser.add_argument('paths', help='Paths', action=path_to_bytes,
+                            nargs='*')
 
     @with_argparser(lls_parser)
     def do_lls(self, args):
@@ -1014,12 +1033,12 @@ sub-directories, files')
         Lists all files and folders in the current local directory
         """
         if not args.paths:
-            print_list(os.listdir(os.getcwd()))
+            print_list(os.listdir(os.getcwdb()))
         else:
             for path in args.paths:
                 try:
                     items = os.listdir(path)
-                    self.poutput("{}:".format(path))
+                    self.poutput("{}:".format(path.decode('utf-8')))
                     print_list(items)
                 except OSError as e:
                     self.perror("'{}': {}".format(e.filename, e.strerror), False)
@@ -1039,7 +1058,7 @@ sub-directories, files')
         """
         Display the amount of available disk space for file systems
         """
-        for index, i in enumerate(ls(".", opts='A')):
+        for index, i in enumerate(ls(b".", opts='A')):
             if index == 0:
                 self.poutput('{:25s}\t{:5s}\t{:15s}{:10s}{}'.format(
                     "1K-blocks", "Used", "Available", "Use%", "Stored on"))
@@ -1057,7 +1076,8 @@ sub-directories, files')
 
     locate_parser = argparse.ArgumentParser(
         description='Find file within file system')
-    locate_parser.add_argument('name', help='name', type=str)
+    locate_parser.add_argument('name', help='name', type=str,
+                               action=path_to_bytes)
     locate_parser.add_argument('-c', '--count', action='store_true',
                                help='Count list of items located.')
     locate_parser.add_argument(
@@ -1068,12 +1088,12 @@ sub-directories, files')
         """
         Find a file within the File System
         """
-        if args.name.count('*') == 1:
-            if args.name[0] == '*':
-                args.name += '/'
+        if args.name.count(b'*') == 1:
+            if args.name[0] == b'*':
+                args.name += b'/'
             elif args.name[-1] == '*':
-                args.name = '/' + args.name
-        args.name = args.name.replace('*', '')
+                args.name = b'/' + args.name
+        args.name = args.name.replace(b'*', b'')
         if args.ignorecase:
             locations = locate_file(args.name, False)
         else:
@@ -1081,7 +1101,7 @@ sub-directories, files')
         if args.count:
             self.poutput(len(locations))
         else:
-            self.poutput('\n'.join(locations))
+            self.poutput((b'\n'.join(locations)).decode('utf-8'))
 
     def complete_du(self, text, line, begidx, endidx):
         """
@@ -1091,8 +1111,9 @@ sub-directories, files')
 
     du_parser = argparse.ArgumentParser(
         description='Disk Usage of a Directory')
-    du_parser.add_argument(
-        'dirs', type=str, help='Name of the directory.', nargs='?', default='.')
+    du_parser.add_argument('dirs', type=str, action=path_to_bytes,
+                           help='Name of the directory.', nargs='?',
+                           default='.')
     du_parser.add_argument('-r', action='store_true',
                            help='Recursive Disk usage of all directories.')
 
@@ -1101,29 +1122,31 @@ sub-directories, files')
         """
         Disk Usage of a Directory
         """
-        if args.dirs == '':
-            args.dirs = cephfs.getcwd().decode('utf-8')
+        if args.dirs == b'':
+            args.dirs = cephfs.getcwd()
         for dir_ in args.dirs:
             if args.r:
                 for i in reversed(sorted(set(dirwalk(dir_)))):
                     i = os.path.normpath(i)
                     try:
-                        xattr = cephfs.getxattr(to_bytes(i), 'ceph.dir.rbytes')
+                        xattr = cephfs.getxattr(i, 'ceph.dir.rbytes')
                         self.poutput('{:10s} {}'.format(
-                            humansize(int(xattr.decode('utf-8'))), '.' + i))
+                            humansize(int(xattr.decode('utf-8'))), '.'
+                            + i.decode('utf-8')))
                     except libcephfs.Error:
                         continue
             else:
                 dir_ = os.path.normpath(dir_)
                 self.poutput('{:10s} {}'.format(humansize(int(cephfs.getxattr(
-                    to_bytes(dir_), 'ceph.dir.rbytes').decode('utf-8'))), '.'
-                    + dir_))
+                    dir_, 'ceph.dir.rbytes').decode('utf-8'))), '.'
+                    + dir_.decode('utf-8')))
 
     quota_parser = argparse.ArgumentParser(
         description='Quota management for a Directory')
     quota_parser.add_argument('op', choices=['get', 'set'],
                               help='Quota operation type.')
-    quota_parser.add_argument('path', type=str, help='Name of the directory.')
+    quota_parser.add_argument('path', type=str, action=path_to_bytes,
+                              help='Name of the directory.')
     quota_parser.add_argument('--max_bytes', type=int, default=-1, nargs='?',
                               help='Max cumulative size of the data under '
                                    'this directory.')
@@ -1137,7 +1160,8 @@ sub-directories, files')
         Quota management.
         """
         if not is_dir_exists(args.path):
-            self.poutput("error: no such directory '%s'" % str(args.path))
+            self.perror('error: no such directory {}'.format(args.path.decode('utf-8')),
+                        end='\n', apply_style=True)
             return
 
         if args.op == 'set':
@@ -1217,7 +1241,7 @@ sub-directories, files')
     stat_parser = argparse.ArgumentParser(
                   description='Display file or file system status')
     stat_parser.add_argument('paths', type=str, help='file paths',
-                             nargs='+')
+                             action=path_to_bytes, nargs='+')
 
     @with_argparser(stat_parser)
     def do_stat(self, args):
@@ -1233,13 +1257,14 @@ sub-directories, files')
 
                 self.poutput("File: {}\nSize: {:d}\nBlocks: {:d}\nIO Block: {:d}\n\
 Device: {:d}\tInode: {:d}\tLinks: {:d}\nPermission: {:o}/{}\tUid: {:d}\tGid: {:d}\n\
-Access: {}\nModify: {}\nChange: {}".format(path, stat.st_size, stat.st_blocks,
-                             stat.st_blksize, stat.st_dev, stat.st_ino,
-                             stat.st_nlink, stat.st_mode,
+Access: {}\nModify: {}\nChange: {}".format(path.decode('utf-8'), stat.st_size,
+                             stat.st_blocks, stat.st_blksize, stat.st_dev,
+                             stat.st_ino, stat.st_nlink, stat.st_mode,
                              mode_notation(stat.st_mode), stat.st_uid,
                              stat.st_gid, atime, mtime, ctime))
             except libcephfs.Error:
-                self.poutput("{}: no such file or directory".format(path))
+                self.perror('{}: no such file or directory'.format(path.decode('utf-8')),
+                            end='\n', apply_style=True)
 
 
 if __name__ == '__main__':
index 37c6d3352e0d69446630261942bb46d7b598fda0..6ec1df98d5039243cf80b3a12f84613999da4de4 100644 (file)
@@ -157,8 +157,8 @@ void usage(ostream& out)
 "\n"
 "SCRUB AND REPAIR:\n"
 "   list-inconsistent-pg <pool>      list inconsistent PGs in given pool\n"
-"   list-inconsistent-obj <pgid>     list inconsistent objects in given pg\n"
-"   list-inconsistent-snapset <pgid> list inconsistent snapsets in the given pg\n"
+"   list-inconsistent-obj <pgid>     list inconsistent objects in given PG\n"
+"   list-inconsistent-snapset <pgid> list inconsistent snapsets in the given PG\n"
 "\n"
 "CACHE POOLS: (for testing/development only)\n"
 "   cache-flush <obj-name>           flush cache pool object (blocking)\n"
@@ -175,6 +175,8 @@ void usage(ostream& out)
 "        select given pool by name\n"
 "   --target-pool=pool\n"
 "        select target pool by name\n"
+"   --pgid PG id\n"
+"        select given PG id\n"
 "   -f [--format plain|json|json-pretty]\n"
 "   --format=[--format plain|json|json-pretty]\n"
 "   -b op_size\n"
@@ -1621,6 +1623,8 @@ static void dump_obj_errors(const obj_err_t &err, Formatter &f)
     f.dump_string("error", "snapset_inconsistency");
   if (err.has_hinfo_inconsistency())
     f.dump_string("error", "hinfo_inconsistency");
+  if (err.has_size_too_large())
+    f.dump_string("error", "size_too_large");
   f.close_section();
 }
 
@@ -2106,13 +2110,6 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts,
     with_reference = true;
   }
 
-  i = opts.find("pgid");
-  boost::optional<pg_t> pgid(i != opts.end(), pg_t());
-  if (pgid && (!pgid->parse(i->second.c_str()) || (pool_name && rados.pool_lookup(pool_name) != pgid->pool()))) {
-    cerr << "invalid pgid" << std::endl;
-    return 1;
-  }
-
   // open rados
   ret = rados.init_with_context(g_ceph_context);
   if (ret < 0) {
@@ -2141,6 +2138,13 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts,
     }
   }
 
+  i = opts.find("pgid");
+  boost::optional<pg_t> pgid(i != opts.end(), pg_t());
+  if (pgid && (!pgid->parse(i->second.c_str()) || (pool_name && rados.pool_lookup(pool_name) != pgid->pool()))) {
+    cerr << "invalid pgid" << std::endl;
+    return 1;
+  }
+
   // open io context.
   if (pool_name || pgid) {
     ret = pool_name ? rados.ioctx_create(pool_name, io_ctx) : rados.ioctx_create2(pgid->pool(), io_ctx);
index 24da115bfcd2d2f1638dfb35e54e9cdbf3f3c853..ff7c303192ec15a5f9f1cac3065ef5d117620b54 100644 (file)
@@ -39,9 +39,46 @@ namespace at = argument_types;
 namespace po = boost::program_options;
 
 static const std::string ALL_NAME("all");
+static const std::string SITE_NAME("site-name");
 
 namespace {
 
+void add_site_name_optional(po::options_description *options) {
+  options->add_options()
+    (SITE_NAME.c_str(), po::value<std::string>(), "local site name");
+}
+
+int set_site_name(librados::Rados& rados, const std::string& site_name) {
+  librbd::RBD rbd;
+  int r = rbd.mirror_site_name_set(rados, site_name);
+  if (r == -EOPNOTSUPP) {
+    std::cerr << "rbd: cluster does not support site names" << std::endl;
+    return r;
+  } else if (r < 0) {
+    std::cerr << "rbd: failed to set site name" << cpp_strerror(r)
+              << std::endl;
+    return r;
+  }
+
+  return 0;
+}
+
+struct MirrorPeerDirection {};
+
+void validate(boost::any& v, const std::vector<std::string>& values,
+              MirrorPeerDirection *target_type, int) {
+  po::validators::check_first_occurrence(v);
+  const std::string &s = po::validators::get_single_string(values);
+
+  if (s == "rx-only") {
+    v = boost::any(RBD_MIRROR_PEER_DIRECTION_RX);
+  } else if (s == "rx-tx") {
+    v = boost::any(RBD_MIRROR_PEER_DIRECTION_RX_TX);
+  } else {
+    throw po::validation_error(po::validation_error::invalid_option_value);
+  }
+}
+
 int validate_mirroring_enabled(librados::IoCtx& io_ctx) {
   librbd::RBD rbd;
   rbd_mirror_mode_t mirror_mode;
@@ -653,6 +690,154 @@ private:
 
 } // anonymous namespace
 
+void get_peer_bootstrap_create_arguments(po::options_description *positional,
+                                         po::options_description *options) {
+  at::add_pool_options(positional, options, false);
+  options->add_options()
+    (SITE_NAME.c_str(), po::value<std::string>(), "local site name");
+}
+
+int execute_peer_bootstrap_create(
+    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,
+                                              nullptr, &arg_index);
+  if (r < 0) {
+    return r;
+  }
+
+  librados::Rados rados;
+  librados::IoCtx io_ctx;
+  r = utils::init(pool_name, "", &rados, &io_ctx);
+  if (r < 0) {
+    return r;
+  }
+
+  r = validate_mirroring_enabled(io_ctx);
+  if (r < 0) {
+    return r;
+  }
+
+  if (vm.count(SITE_NAME)) {
+    r = set_site_name(rados, vm[SITE_NAME].as<std::string>());
+    if (r < 0) {
+      return r;
+    }
+  }
+
+  librbd::RBD rbd;
+  std::string token;
+  r = rbd.mirror_peer_bootstrap_create(io_ctx, &token);
+  if (r == -EEXIST) {
+    std::cerr << "rbd: mismatch with pre-existing RBD mirroring peer user caps"
+              << std::endl;
+  } else if (r < 0) {
+    std::cerr << "rbd: failed to create mirroring bootstrap token: "
+              << cpp_strerror(r) << std::endl;
+    return r;
+  }
+
+  std::cout << token << std::endl;
+  return 0;
+}
+
+void get_peer_bootstrap_import_arguments(po::options_description *positional,
+                                         po::options_description *options) {
+  at::add_pool_options(positional, options, false);
+  options->add_options()
+    (SITE_NAME.c_str(), po::value<std::string>(), "local site name");
+  positional->add_options()
+    ("token-path", po::value<std::string>(),
+     "bootstrap token file (or '-' for stdin)");
+  options->add_options()
+    ("token-path", po::value<std::string>(),
+     "bootstrap token file (or '-' for stdin)")
+    ("direction", po::value<MirrorPeerDirection>(),
+     "mirroring direction (rx-only, rx-tx)\n"
+     "[default: rx-tx]");
+}
+
+int execute_peer_bootstrap_import(
+    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,
+                                              nullptr, &arg_index);
+  if (r < 0) {
+    return r;
+  }
+
+  std::string token_path;
+  if (vm.count("token-path")) {
+    token_path = vm["token-path"].as<std::string>();
+  } else {
+    token_path = utils::get_positional_argument(vm, arg_index++);
+  }
+
+  if (token_path.empty()) {
+    std::cerr << "rbd: token path was not specified" << std::endl;
+    return -EINVAL;
+  }
+
+  rbd_mirror_peer_direction_t mirror_peer_direction =
+    RBD_MIRROR_PEER_DIRECTION_RX_TX;
+  if (vm.count("direction")) {
+    mirror_peer_direction = vm["direction"].as<rbd_mirror_peer_direction_t>();
+  }
+
+  int fd = STDIN_FILENO;
+  if (token_path != "-") {
+    fd = open(token_path.c_str(), O_RDONLY);
+    if (fd < 0) {
+      r = -errno;
+      std::cerr << "rbd: error opening " << token_path << std::endl;
+      return r;
+    }
+  }
+
+  char token[1024];
+  memset(token, 0, sizeof(token));
+  r = safe_read(fd, token, sizeof(token) - 1);
+  if (fd != STDIN_FILENO) {
+    VOID_TEMP_FAILURE_RETRY(close(fd));
+  }
+
+  if (r < 0) {
+    std::cerr << "rbd: error reading token file: " << cpp_strerror(r)
+              << std::endl;
+    return r;
+  }
+
+  librados::Rados rados;
+  librados::IoCtx io_ctx;
+  r = utils::init(pool_name, "", &rados, &io_ctx);
+  if (r < 0) {
+    return r;
+  }
+
+  if (vm.count(SITE_NAME)) {
+    r = set_site_name(rados, vm[SITE_NAME].as<std::string>());
+    if (r < 0) {
+      return r;
+    }
+  }
+
+  librbd::RBD rbd;
+  r = rbd.mirror_peer_bootstrap_import(io_ctx, mirror_peer_direction, token);
+  if (r == -ENOSYS) {
+    std::cerr << "rbd: mirroring is not enabled on remote peer" << std::endl;
+    return r;
+  } else if (r < 0) {
+    std::cerr << "rbd: failed to import peer bootstrap token" << std::endl;
+    return r;
+  }
+
+  return 0;
+}
+
 void get_peer_add_arguments(po::options_description *positional,
                             po::options_description *options) {
   at::add_pool_options(positional, options, false);
@@ -871,23 +1056,15 @@ void get_enable_arguments(po::options_description *positional,
   at::add_pool_options(positional, options, false);
   positional->add_options()
     ("mode", "mirror mode [image or pool]");
+  add_site_name_optional(options);
 }
 
-int execute_enable_disable(const std::string &pool_name,
+int execute_enable_disable(librados::IoCtx& io_ctx,
                            rbd_mirror_mode_t next_mirror_mode,
-                           const std::string &mode) {
-  librados::Rados rados;
-  librados::IoCtx io_ctx;
-  rbd_mirror_mode_t current_mirror_mode;
-
-  // TODO support namespaces
-  int r = utils::init(pool_name, "", &rados, &io_ctx);
-  if (r < 0) {
-    return r;
-  }
-
+                           const std::string &mode, bool ignore_no_update) {
   librbd::RBD rbd;
-  r = rbd.mirror_mode_get(io_ctx, &current_mirror_mode);
+  rbd_mirror_mode_t current_mirror_mode;
+  int r = rbd.mirror_mode_get(io_ctx, &current_mirror_mode);
   if (r < 0) {
     std::cerr << "rbd: failed to retrieve mirror mode: "
               << cpp_strerror(r) << std::endl;
@@ -895,11 +1072,13 @@ int execute_enable_disable(const std::string &pool_name,
   }
 
   if (current_mirror_mode == next_mirror_mode) {
-    if (mode == "disabled") {
-      std::cout << "mirroring is already " << mode << std::endl;
-    } else {
-      std::cout << "mirroring is already configured for "
-                << mode << " mode" << std::endl;
+    if (!ignore_no_update) {
+      if (mode == "disabled") {
+        std::cout << "rbd: mirroring is already " << mode << std::endl;
+      } else {
+        std::cout << "rbd: mirroring is already configured for "
+                  << mode << " mode" << std::endl;
+      }
     }
     return 0;
   } else if (next_mirror_mode == RBD_MIRROR_MODE_IMAGE &&
@@ -929,8 +1108,17 @@ int execute_disable(const po::variables_map &vm,
     return r;
   }
 
-  return execute_enable_disable(pool_name, RBD_MIRROR_MODE_DISABLED,
-                                "disabled");
+  librados::Rados rados;
+  librados::IoCtx io_ctx;
+
+  // TODO support namespaces
+  r = utils::init(pool_name, "", &rados, &io_ctx);
+  if (r < 0) {
+    return r;
+  }
+
+  return execute_enable_disable(io_ctx, RBD_MIRROR_MODE_DISABLED, "disabled",
+                                false);
 }
 
 int execute_enable(const po::variables_map &vm,
@@ -954,7 +1142,31 @@ int execute_enable(const po::variables_map &vm,
     return -EINVAL;
   }
 
-  return execute_enable_disable(pool_name, mirror_mode, mode);
+  librados::Rados rados;
+  librados::IoCtx io_ctx;
+
+  // TODO support namespaces
+  r = utils::init(pool_name, "", &rados, &io_ctx);
+  if (r < 0) {
+    return r;
+  }
+
+  bool updated = false;
+  if (vm.count(SITE_NAME)) {
+    librbd::RBD rbd;
+
+    auto site_name = vm[SITE_NAME].as<std::string>();
+    std::string original_site_name;
+    r = rbd.mirror_site_name_get(rados, &original_site_name);
+    updated = (r >= 0 && site_name != original_site_name);
+
+    r = set_site_name(rados, site_name);
+    if (r < 0) {
+      return r;
+    }
+  }
+
+  return execute_enable_disable(io_ctx, mirror_mode, mode, updated);
 }
 
 void get_info_arguments(po::options_description *positional,
@@ -996,6 +1208,12 @@ int execute_info(const po::variables_map &vm,
     return r;
   }
 
+  std::string site_name;
+  r = rbd.mirror_site_name_get(rados, &site_name);
+  if (r < 0 && r != -EOPNOTSUPP) {
+    return r;
+  }
+
   std::vector<librbd::mirror_peer_t> mirror_peers;
   r = rbd.mirror_peer_list(io_ctx, &mirror_peers);
   if (r < 0) {
@@ -1026,6 +1244,12 @@ int execute_info(const po::variables_map &vm,
   }
 
   if (mirror_mode != RBD_MIRROR_MODE_DISABLED) {
+    if (formatter != nullptr) {
+      formatter->dump_string("site_name", site_name);
+    } else {
+      std::cout << "Site Name: " << site_name << std::endl;
+    }
+
     r = format_mirror_peers(io_ctx, formatter, mirror_peers,
                             vm[ALL_NAME].as<bool>());
     if (r < 0) {
@@ -1261,6 +1485,15 @@ int execute_demote(const po::variables_map &vm,
   return r;
 }
 
+Shell::Action action_bootstrap_create(
+  {"mirror", "pool", "peer", "bootstrap", "create"}, {},
+  "Create a peer bootstrap token to import in a remote cluster", "",
+  &get_peer_bootstrap_create_arguments, &execute_peer_bootstrap_create);
+Shell::Action action_bootstreap_import(
+  {"mirror", "pool", "peer", "bootstrap", "import"}, {},
+  "Import a peer bootstrap token created from a remote cluster", "",
+  &get_peer_bootstrap_import_arguments, &execute_peer_bootstrap_import);
+
 Shell::Action action_add(
   {"mirror", "pool", "peer", "add"}, {},
   "Add a mirroring peer to a pool.", "",
index 67fe81942b4fd81a875a2c223d9d8b8eaaffca7c..5ed582fbf81c5d745532dd684eb7828558b54237 100644 (file)
@@ -102,14 +102,13 @@ static int do_map(int argc, const char *argv[])
       std::cerr << err << std::endl;
       return r;
     }
-
     if (forker.is_parent()) {
-      global_init_postfork_start(g_ceph_context);
       if (forker.parent_wait(err) != 0) {
         return -ENXIO;
       }
       return 0;
     }
+    global_init_postfork_start(g_ceph_context);
   }
 
   common_init_finish(g_ceph_context);
@@ -204,9 +203,8 @@ static int do_map(int argc, const char *argv[])
   std::cout << "/dev/" << drv->get_devname() << std::endl;
 
   if (g_conf()->daemonize) {
-    forker.daemonize();
-    global_init_postfork_start(g_ceph_context);
     global_init_postfork_finish(g_ceph_context);
+    forker.daemonize();
   }
 
   init_async_signal_handler();
index 6184e418d97bf169aef1069fbbac75cae5572c73..30106a863c043312824f757f1724468c7f76c129 100644 (file)
@@ -21,9 +21,9 @@ set(rbd_mirror_internal
   ServiceDaemon.cc
   Threads.cc
   Types.cc
-  image_deleter/RemoveRequest.cc
   image_deleter/SnapshotPurgeRequest.cc
   image_deleter/TrashMoveRequest.cc
+  image_deleter/TrashRemoveRequest.cc
   image_deleter/TrashWatcher.cc
   image_map/LoadRequest.cc
   image_map/Policy.cc
index 93ddf5cea1b257cd052ba1d4c1c84d790a547b54..f4d928caa51cfad70be008be002e21387b965364 100644 (file)
 #include "librbd/ImageState.h"
 #include "librbd/Journal.h"
 #include "librbd/Operations.h"
-#include "librbd/image/RemoveRequest.h"
 #include "cls/rbd/cls_rbd_client.h"
 #include "cls/rbd/cls_rbd_types.h"
 #include "librbd/Utils.h"
 #include "ImageDeleter.h"
 #include "tools/rbd_mirror/Threads.h"
-#include "tools/rbd_mirror/image_deleter/RemoveRequest.h"
 #include "tools/rbd_mirror/image_deleter/TrashMoveRequest.h"
+#include "tools/rbd_mirror/image_deleter/TrashRemoveRequest.h"
 #include "tools/rbd_mirror/image_deleter/TrashWatcher.h"
 #include <map>
 #include <sstream>
@@ -388,7 +387,7 @@ void ImageDeleter<I>::remove_image(DeleteInfoRef delete_info) {
       m_async_op_tracker.finish_op();
     });
 
-  auto req = image_deleter::RemoveRequest<I>::create(
+  auto req = image_deleter::TrashRemoveRequest<I>::create(
     m_local_io_ctx, delete_info->image_id, &delete_info->error_result,
     m_threads->work_queue, ctx);
   req->send();
index 14d66df135ff3889d6effecae787b89e05831879..6c6ee2d5fb9bc8ca0db5eae26f07836b1ff7eaed 100644 (file)
@@ -965,14 +965,13 @@ void ImageReplayer<I>::handle_replay_complete(int r, const std::string &error_de
   dout(10) << "r=" << r << dendl;
   if (r < 0) {
     derr << "replay encountered an error: " << cpp_strerror(r) << dendl;
-    set_state_description(r, error_desc);
   }
 
   {
     Mutex::Locker locker(m_lock);
     m_stop_requested = true;
   }
-  on_replay_interrupted();
+  on_stop_journal_replay(r, error_desc);
 }
 
 template <typename I>
index 370d81f447065601c13d8af7cc6d787c00bcacc9..7c450379f64859858e9848677824b0a10e703e80 100644 (file)
@@ -433,10 +433,9 @@ int PoolReplayer<I>::init_rados(const std::string &cluster_name,
   // librados::Rados::conf_read_file
   int r = cct->_conf.parse_config_files(nullptr, nullptr, 0);
   if (r < 0 && r != -ENOENT) {
+    // do not treat this as fatal, it might still be able to connect
     derr << "could not read ceph conf for " << description << ": "
         << cpp_strerror(r) << dendl;
-    cct->put();
-    return r;
   }
 
   // preserve cluster-specific config settings before applying environment/cli
diff --git a/ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc b/ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.cc
deleted file mode 100644 (file)
index 36f0686..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "tools/rbd_mirror/image_deleter/RemoveRequest.h"
-#include "include/ceph_assert.h"
-#include "common/debug.h"
-#include "common/errno.h"
-#include "common/WorkQueue.h"
-#include "cls/rbd/cls_rbd_client.h"
-#include "librbd/ImageCtx.h"
-#include "librbd/Journal.h"
-#include "librbd/Utils.h"
-#include "librbd/image/RemoveRequest.h"
-#include "tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.h"
-
-#define dout_context g_ceph_context
-#define dout_subsys ceph_subsys_rbd_mirror
-#undef dout_prefix
-#define dout_prefix *_dout << "rbd::mirror::image_deleter::RemoveRequest: " \
-                           << this << " " << __func__ << ": "
-
-namespace rbd {
-namespace mirror {
-namespace image_deleter {
-
-using librbd::util::create_context_callback;
-using librbd::util::create_rados_callback;
-
-template <typename I>
-void RemoveRequest<I>::send() {
-  *m_error_result = ERROR_RESULT_RETRY;
-
-  get_snap_context();
-}
-
-template <typename I>
-void RemoveRequest<I>::get_snap_context() {
-  dout(10) << dendl;
-
-  librados::ObjectReadOperation op;
-  librbd::cls_client::get_snapcontext_start(&op);
-
-  std::string header_oid = librbd::util::header_name(m_image_id);
-
-  auto aio_comp = create_rados_callback<
-    RemoveRequest<I>, &RemoveRequest<I>::handle_get_snap_context>(this);
-  m_out_bl.clear();
-  int r = m_io_ctx.aio_operate(header_oid, aio_comp, &op, &m_out_bl);
-  ceph_assert(r == 0);
-  aio_comp->release();
-}
-
-template <typename I>
-void RemoveRequest<I>::handle_get_snap_context(int r) {
-  dout(10) << "r=" << r << dendl;
-
-  ::SnapContext snapc;
-  if (r == 0) {
-    auto bl_it = m_out_bl.cbegin();
-    r = librbd::cls_client::get_snapcontext_finish(&bl_it, &snapc);
-  }
-  if (r < 0 && r != -ENOENT) {
-    derr << "error retrieving snapshot context for image "
-         << m_image_id << ": " << cpp_strerror(r) << dendl;
-    finish(r);
-    return;
-  }
-
-  m_has_snapshots = (!snapc.empty());
-  purge_snapshots();
-}
-
-template <typename I>
-void RemoveRequest<I>::purge_snapshots() {
-  if (!m_has_snapshots) {
-    remove_image();
-    return;
-  }
-
-  dout(10) << dendl;
-  auto ctx = create_context_callback<
-    RemoveRequest<I>, &RemoveRequest<I>::handle_purge_snapshots>(this);
-  auto req = SnapshotPurgeRequest<I>::create(m_io_ctx, m_image_id, ctx);
-  req->send();
-}
-
-template <typename I>
-void RemoveRequest<I>::handle_purge_snapshots(int r) {
-  dout(10) << "r=" << r << dendl;
-
-  if (r == -EBUSY) {
-    dout(10) << "snapshots still in-use" << dendl;
-    *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY;
-    finish(r);
-    return;
-  } else if (r < 0) {
-    derr << "failed to purge image snapshots: " << cpp_strerror(r) << dendl;
-    finish(r);
-    return;
-  }
-
-  remove_image();
-}
-
-template <typename I>
-void RemoveRequest<I>::remove_image() {
-  dout(10) << dendl;
-
-  auto ctx = create_context_callback<
-    RemoveRequest<I>, &RemoveRequest<I>::handle_remove_image>(this);
-  auto req = librbd::image::RemoveRequest<I>::create(
-    m_io_ctx, "", m_image_id, true, true, m_progress_ctx, m_op_work_queue,
-    ctx);
-  req->send();
-}
-
-template <typename I>
-void RemoveRequest<I>::handle_remove_image(int r) {
-  dout(10) << "r=" << r << dendl;
-  if (r == -ENOTEMPTY) {
-    // image must have clone v2 snapshot still associated to child
-    dout(10) << "snapshots still in-use" << dendl;
-    *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY;
-    finish(-EBUSY);
-    return;
-  }
-
-  if (r < 0 && r != -ENOENT) {
-    derr << "error removing image " << m_image_id << " "
-         << "(" << m_image_id << ") from local pool: "
-         << cpp_strerror(r) << dendl;
-    finish(r);
-    return;
-  }
-
-  finish(0);
-}
-
-template <typename I>
-void RemoveRequest<I>::finish(int r) {
-  dout(10) << "r=" << r << dendl;
-
-  m_on_finish->complete(r);
-  delete this;
-}
-
-} // namespace image_deleter
-} // namespace mirror
-} // namespace rbd
-
-template class rbd::mirror::image_deleter::RemoveRequest<librbd::ImageCtx>;
diff --git a/ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.h b/ceph/src/tools/rbd_mirror/image_deleter/RemoveRequest.h
deleted file mode 100644 (file)
index 75353aa..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#ifndef CEPH_RBD_MIRROR_IMAGE_DELETER_REMOVE_REQUEST_H
-#define CEPH_RBD_MIRROR_IMAGE_DELETER_REMOVE_REQUEST_H
-
-#include "include/rados/librados.hpp"
-#include "include/buffer.h"
-#include "librbd/internal.h"
-#include "tools/rbd_mirror/image_deleter/Types.h"
-#include <string>
-#include <vector>
-
-class Context;
-class ContextWQ;
-namespace librbd { struct ImageCtx; }
-
-namespace rbd {
-namespace mirror {
-namespace image_deleter {
-
-template <typename ImageCtxT = librbd::ImageCtx>
-class RemoveRequest {
-public:
-  static RemoveRequest* create(librados::IoCtx &io_ctx,
-                               const std::string &image_id,
-                               ErrorResult *error_result,
-                               ContextWQ *op_work_queue, Context *on_finish) {
-    return new RemoveRequest(io_ctx, image_id, error_result, op_work_queue,
-                             on_finish);
-  }
-
-  RemoveRequest(librados::IoCtx &io_ctx, const std::string &image_id,
-                ErrorResult *error_result, ContextWQ *op_work_queue,
-                Context *on_finish)
-    : m_io_ctx(io_ctx), m_image_id(image_id), m_error_result(error_result),
-      m_op_work_queue(op_work_queue), m_on_finish(on_finish) {
-  }
-
-  void send();
-
-private:
-  /*
-   * @verbatim
-   *
-   * <start>
-   *    |
-   *    v
-   * GET_SNAP_CONTEXT
-   *    |
-   *    v
-   * PURGE_SNAPSHOTS
-   *    |
-   *    v
-   * REMOVE_IMAGE
-   *    |
-   *    v
-   * <finish>
-   *
-   * @endverbatim
-   */
-
-  librados::IoCtx &m_io_ctx;
-  std::string m_image_id;
-  ErrorResult *m_error_result;
-  ContextWQ *m_op_work_queue;
-  Context *m_on_finish;
-
-  ceph::bufferlist m_out_bl;
-  bool m_has_snapshots = false;
-  librbd::NoOpProgressContext m_progress_ctx;
-
-  void get_snap_context();
-  void handle_get_snap_context(int r);
-
-  void purge_snapshots();
-  void handle_purge_snapshots(int r);
-
-  void remove_image();
-  void handle_remove_image(int r);
-
-  void finish(int r);
-
-};
-
-} // namespace image_deleter
-} // namespace mirror
-} // namespace rbd
-
-extern template class rbd::mirror::image_deleter::RemoveRequest<librbd::ImageCtx>;
-
-#endif // CEPH_RBD_MIRROR_IMAGE_DELETER_REMOVE_REQUEST_H
index 90a45090874f22e019d05acb64d9c6f484113479..92db22cac548931193903b40314f3d948c50ff4c 100644 (file)
@@ -159,7 +159,7 @@ void TrashMoveRequest<I>::reset_journal() {
     TrashMoveRequest<I>, &TrashMoveRequest<I>::handle_reset_journal>(this);
   auto req = librbd::journal::ResetRequest<I>::create(
     m_io_ctx, m_image_id, librbd::Journal<>::IMAGE_CLIENT_ID,
-    m_mirror_uuid, m_op_work_queue, ctx);
+    librbd::Journal<>::LOCAL_MIRROR_UUID, m_op_work_queue, ctx);
   req->send();
 }
 
diff --git a/ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.cc b/ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.cc
new file mode 100644 (file)
index 0000000..e7c725d
--- /dev/null
@@ -0,0 +1,265 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "tools/rbd_mirror/image_deleter/TrashRemoveRequest.h"
+#include "include/ceph_assert.h"
+#include "common/debug.h"
+#include "common/errno.h"
+#include "common/WorkQueue.h"
+#include "cls/rbd/cls_rbd_client.h"
+#include "librbd/ImageCtx.h"
+#include "librbd/Journal.h"
+#include "librbd/TrashWatcher.h"
+#include "librbd/Utils.h"
+#include "librbd/trash/RemoveRequest.h"
+#include "tools/rbd_mirror/image_deleter/SnapshotPurgeRequest.h"
+
+#define dout_context g_ceph_context
+#define dout_subsys ceph_subsys_rbd_mirror
+#undef dout_prefix
+#define dout_prefix *_dout << "rbd::mirror::image_deleter::TrashRemoveRequest: " \
+                           << this << " " << __func__ << ": "
+
+namespace rbd {
+namespace mirror {
+namespace image_deleter {
+
+using librbd::util::create_context_callback;
+using librbd::util::create_rados_callback;
+
+template <typename I>
+void TrashRemoveRequest<I>::send() {
+  *m_error_result = ERROR_RESULT_RETRY;
+
+  get_trash_image_spec();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::get_trash_image_spec() {
+  dout(10) << dendl;
+
+  librados::ObjectReadOperation op;
+  librbd::cls_client::trash_get_start(&op, m_image_id);
+
+  auto aio_comp = create_rados_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_get_trash_image_spec>(this);
+  m_out_bl.clear();
+  int r = m_io_ctx.aio_operate(RBD_TRASH, aio_comp, &op, &m_out_bl);
+  ceph_assert(r == 0);
+  aio_comp->release();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_get_trash_image_spec(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  if (r == 0) {
+    auto bl_it = m_out_bl.cbegin();
+    r = librbd::cls_client::trash_get_finish(&bl_it, &m_trash_image_spec);
+  }
+
+  if (r == -ENOENT || (r >= 0 && m_trash_image_spec.source !=
+                                   cls::rbd::TRASH_IMAGE_SOURCE_MIRRORING)) {
+    dout(10) << "image id " << m_image_id << " not in mirroring trash" << dendl;
+    finish(0);
+    return;
+  } else if (r < 0) {
+    derr << "error getting image id " << m_image_id << " info from trash: "
+         << cpp_strerror(r) << dendl;
+    finish(r);
+    return;
+  }
+
+  if (m_trash_image_spec.state != cls::rbd::TRASH_IMAGE_STATE_NORMAL &&
+      m_trash_image_spec.state != cls::rbd::TRASH_IMAGE_STATE_REMOVING) {
+    dout(10) << "image " << m_image_id << " is not in an expected trash state: "
+             << m_trash_image_spec.state << dendl;
+    *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY;
+    finish(-EBUSY);
+    return;
+  }
+
+  set_trash_state();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::set_trash_state() {
+  if (m_trash_image_spec.state == cls::rbd::TRASH_IMAGE_STATE_REMOVING) {
+    get_snap_context();
+    return;
+  }
+
+  dout(10) << dendl;
+
+  librados::ObjectWriteOperation op;
+  librbd::cls_client::trash_state_set(&op, m_image_id,
+                                      cls::rbd::TRASH_IMAGE_STATE_REMOVING,
+                                      cls::rbd::TRASH_IMAGE_STATE_NORMAL);
+
+  auto aio_comp = create_rados_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_set_trash_state>(this);
+  int r = m_io_ctx.aio_operate(RBD_TRASH, aio_comp, &op);
+  ceph_assert(r == 0);
+  aio_comp->release();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_set_trash_state(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  if (r == -ENOENT) {
+    dout(10) << "image id " << m_image_id << " not in mirroring trash" << dendl;
+    finish(0);
+    return;
+  } else if (r < 0 && r != -EOPNOTSUPP) {
+    derr << "error setting trash image state for image id " << m_image_id
+         << ": " << cpp_strerror(r) << dendl;
+    finish(r);
+    return;
+  }
+
+  get_snap_context();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::get_snap_context() {
+  dout(10) << dendl;
+
+  librados::ObjectReadOperation op;
+  librbd::cls_client::get_snapcontext_start(&op);
+
+  std::string header_oid = librbd::util::header_name(m_image_id);
+
+  auto aio_comp = create_rados_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_get_snap_context>(this);
+  m_out_bl.clear();
+  int r = m_io_ctx.aio_operate(header_oid, aio_comp, &op, &m_out_bl);
+  ceph_assert(r == 0);
+  aio_comp->release();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_get_snap_context(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  ::SnapContext snapc;
+  if (r == 0) {
+    auto bl_it = m_out_bl.cbegin();
+    r = librbd::cls_client::get_snapcontext_finish(&bl_it, &snapc);
+  }
+  if (r < 0 && r != -ENOENT) {
+    derr << "error retrieving snapshot context for image "
+         << m_image_id << ": " << cpp_strerror(r) << dendl;
+    finish(r);
+    return;
+  }
+
+  m_has_snapshots = (!snapc.empty());
+  purge_snapshots();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::purge_snapshots() {
+  if (!m_has_snapshots) {
+    remove_image();
+    return;
+  }
+
+  dout(10) << dendl;
+  auto ctx = create_context_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_purge_snapshots>(this);
+  auto req = SnapshotPurgeRequest<I>::create(m_io_ctx, m_image_id, ctx);
+  req->send();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_purge_snapshots(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  if (r == -EBUSY) {
+    dout(10) << "snapshots still in-use" << dendl;
+    *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY;
+    finish(r);
+    return;
+  } else if (r < 0) {
+    derr << "failed to purge image snapshots: " << cpp_strerror(r) << dendl;
+    finish(r);
+    return;
+  }
+
+  remove_image();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::remove_image() {
+  dout(10) << dendl;
+
+  auto ctx = create_context_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_remove_image>(this);
+  auto req = librbd::trash::RemoveRequest<I>::create(
+    m_io_ctx, m_image_id, m_op_work_queue, true, m_progress_ctx,
+    ctx);
+  req->send();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_remove_image(int r) {
+  dout(10) << "r=" << r << dendl;
+  if (r == -ENOTEMPTY) {
+    // image must have clone v2 snapshot still associated to child
+    dout(10) << "snapshots still in-use" << dendl;
+    *m_error_result = ERROR_RESULT_RETRY_IMMEDIATELY;
+    finish(-EBUSY);
+    return;
+  }
+
+  if (r < 0 && r != -ENOENT) {
+    derr << "error removing image " << m_image_id << " "
+         << "(" << m_image_id << ") from local pool: "
+         << cpp_strerror(r) << dendl;
+    finish(r);
+    return;
+  }
+
+  notify_trash_removed();
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::notify_trash_removed() {
+  dout(10) << dendl;
+
+  Context *ctx = create_context_callback<
+    TrashRemoveRequest<I>,
+    &TrashRemoveRequest<I>::handle_notify_trash_removed>(this);
+  librbd::TrashWatcher<I>::notify_image_removed(m_io_ctx, m_image_id, ctx);
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::handle_notify_trash_removed(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  if (r < 0) {
+    derr << "failed to notify trash watchers: " << cpp_strerror(r) << dendl;
+  }
+
+  finish(0);
+}
+
+template <typename I>
+void TrashRemoveRequest<I>::finish(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  m_on_finish->complete(r);
+  delete this;
+}
+
+} // namespace image_deleter
+} // namespace mirror
+} // namespace rbd
+
+template class rbd::mirror::image_deleter::TrashRemoveRequest<librbd::ImageCtx>;
diff --git a/ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.h b/ceph/src/tools/rbd_mirror/image_deleter/TrashRemoveRequest.h
new file mode 100644 (file)
index 0000000..d2295e8
--- /dev/null
@@ -0,0 +1,113 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_RBD_MIRROR_IMAGE_DELETER_TRASH_REMOVE_REQUEST_H
+#define CEPH_RBD_MIRROR_IMAGE_DELETER_TRASH_REMOVE_REQUEST_H
+
+#include "include/rados/librados.hpp"
+#include "include/buffer.h"
+#include "cls/rbd/cls_rbd_types.h"
+#include "librbd/internal.h"
+#include "tools/rbd_mirror/image_deleter/Types.h"
+#include <string>
+#include <vector>
+
+class Context;
+class ContextWQ;
+namespace librbd { struct ImageCtx; }
+
+namespace rbd {
+namespace mirror {
+namespace image_deleter {
+
+template <typename ImageCtxT = librbd::ImageCtx>
+class TrashRemoveRequest {
+public:
+  static TrashRemoveRequest* create(librados::IoCtx &io_ctx,
+                                    const std::string &image_id,
+                                    ErrorResult *error_result,
+                                    ContextWQ *op_work_queue,
+                                    Context *on_finish) {
+    return new TrashRemoveRequest(io_ctx, image_id, error_result, op_work_queue,
+                                  on_finish);
+  }
+
+  TrashRemoveRequest(librados::IoCtx &io_ctx, const std::string &image_id,
+                     ErrorResult *error_result, ContextWQ *op_work_queue,
+                     Context *on_finish)
+    : m_io_ctx(io_ctx), m_image_id(image_id), m_error_result(error_result),
+      m_op_work_queue(op_work_queue), m_on_finish(on_finish) {
+  }
+
+  void send();
+
+private:
+  /*
+   * @verbatim
+   *
+   * <start>
+   *    |
+   *    v
+   * GET_TRASH_IMAGE_SPEC
+   *    |
+   *    v
+   * SET_TRASH_STATE
+   *    |
+   *    v
+   * GET_SNAP_CONTEXT
+   *    |
+   *    v
+   * PURGE_SNAPSHOTS
+   *    |
+   *    v
+   * TRASH_REMOVE
+   *    |
+   *    v
+   * NOTIFY_TRASH_REMOVE
+   *    |
+   *    v
+   * <finish>
+   *
+   * @endverbatim
+   */
+
+  librados::IoCtx &m_io_ctx;
+  std::string m_image_id;
+  ErrorResult *m_error_result;
+  ContextWQ *m_op_work_queue;
+  Context *m_on_finish;
+
+  ceph::bufferlist m_out_bl;
+  cls::rbd::TrashImageSpec m_trash_image_spec;
+  bool m_has_snapshots = false;
+  librbd::NoOpProgressContext m_progress_ctx;
+
+  void get_trash_image_spec();
+  void handle_get_trash_image_spec(int r);
+
+  void set_trash_state();
+  void handle_set_trash_state(int r);
+
+  void get_snap_context();
+  void handle_get_snap_context(int r);
+
+  void purge_snapshots();
+  void handle_purge_snapshots(int r);
+
+  void remove_image();
+  void handle_remove_image(int r);
+
+  void notify_trash_removed();
+  void handle_notify_trash_removed(int r);
+
+  void finish(int r);
+
+};
+
+} // namespace image_deleter
+} // namespace mirror
+} // namespace rbd
+
+extern template class rbd::mirror::image_deleter::TrashRemoveRequest<librbd::ImageCtx>;
+
+#endif // CEPH_RBD_MIRROR_IMAGE_DELETER_TRASH_REMOVE_REQUEST_H
index d7ce811e9634f7b19952428a87595c90fd1c02ff..5356fae4f9bdc51241c4d55a56932d4a6589158b 100644 (file)
@@ -1,3 +1,4 @@
 add_executable(rbd-nbd rbd-nbd.cc)
-target_link_libraries(rbd-nbd librbd librados global)
+target_include_directories(rbd-nbd PUBLIC ${GENL_INCLUDE_DIR})
+target_link_libraries(rbd-nbd librbd librados global ${GENL_LIBRARIES})
 install(TARGETS rbd-nbd DESTINATION bin)
diff --git a/ceph/src/tools/rbd_nbd/nbd-netlink.h b/ceph/src/tools/rbd_nbd/nbd-netlink.h
new file mode 100644 (file)
index 0000000..f932f96
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2017 Facebook.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License v2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 021110-1307, USA.
+ */
+#ifndef _UAPILINUX_NBD_NETLINK_H
+#define _UAPILINUX_NBD_NETLINK_H
+
+#define NBD_GENL_FAMILY_NAME   "nbd"
+#define NBD_GENL_VERSION       0x1
+
+/* Configuration policy attributes, used for CONNECT */
+enum {
+       NBD_ATTR_UNSPEC,
+       NBD_ATTR_INDEX,
+       NBD_ATTR_SIZE_BYTES,
+       NBD_ATTR_BLOCK_SIZE_BYTES,
+       NBD_ATTR_TIMEOUT,
+       NBD_ATTR_SERVER_FLAGS,
+       NBD_ATTR_CLIENT_FLAGS,
+       NBD_ATTR_SOCKETS,
+       __NBD_ATTR_MAX,
+};
+#define NBD_ATTR_MAX (__NBD_ATTR_MAX - 1)
+
+/*
+ * This is the format for multiple sockets with NBD_ATTR_SOCKETS
+ *
+ * [NBD_ATTR_SOCKETS]
+ *   [NBD_SOCK_ITEM]
+ *     [NBD_SOCK_FD]
+ *   [NBD_SOCK_ITEM]
+ *     [NBD_SOCK_FD]
+ */
+enum {
+       NBD_SOCK_ITEM_UNSPEC,
+       NBD_SOCK_ITEM,
+       __NBD_SOCK_ITEM_MAX,
+};
+#define NBD_SOCK_ITEM_MAX (__NBD_SOCK_ITEM_MAX - 1)
+
+enum {
+       NBD_SOCK_UNSPEC,
+       NBD_SOCK_FD,
+       __NBD_SOCK_MAX,
+};
+#define NBD_SOCK_MAX (__NBD_SOCK_MAX - 1)
+
+enum {
+       NBD_CMD_UNSPEC,
+       NBD_CMD_CONNECT,
+       NBD_CMD_DISCONNECT,
+       NBD_CMD_RECONFIGURE,
+       __NBD_CMD_MAX,
+};
+#define NBD_CMD_MAX    (__NBD_CMD_MAX - 1)
+
+#endif /* _UAPILINUX_NBD_NETLINK_H */
index 5aa3ea1092d5af2ba79682812bf6a285480a5a07..ea36ba8b3584874d2c0707a59b9c0cc3188065d3 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 
+#include "nbd-netlink.h"
+#include <libnl3/netlink/genl/genl.h>
+#include <libnl3/netlink/genl/ctrl.h>
+#include <libnl3/netlink/genl/mngt.h>
+
 #include <fstream>
 #include <iostream>
 #include <memory>
@@ -72,6 +77,7 @@ struct Config {
   bool exclusive = false;
   bool readonly = false;
   bool set_max_part = false;
+  bool try_netlink = false;
 
   std::string poolname;
   std::string nsname;
@@ -95,6 +101,7 @@ static void usage()
             << "  --max_part <limit>      Override for module param max_part\n"
             << "  --exclusive             Forbid writes by other clients\n"
             << "  --timeout <seconds>     Set nbd request timeout\n"
+            << "  --try-netlink           Use the nbd netlink interface\n"
             << "\n"
             << "List options:\n"
             << "  --format plain|json|xml Output format (default: plain)\n"
@@ -104,6 +111,7 @@ static void usage()
 }
 
 static int nbd = -1;
+static int nbd_index = -1;
 
 enum Command {
   None,
@@ -130,18 +138,7 @@ static Command cmd = None;
 
 static int parse_args(vector<const char*>& args, std::ostream *err_msg,
                       Command *command, Config *cfg);
-
-static void handle_signal(int signum)
-{
-  ceph_assert(signum == SIGINT || signum == SIGTERM);
-  derr << "*** Got signal " << sig_str(signum) << " ***" << dendl;
-  dout(20) << __func__ << ": " << "sending NBD_DISCONNECT" << dendl;
-  if (ioctl(nbd, NBD_DISCONNECT) < 0) {
-    derr << "rbd-nbd: disconnect failed: " << cpp_strerror(errno) << dendl;
-  } else {
-    dout(20) << __func__ << ": " << "disconnected" << dendl;
-  }
-}
+static int netlink_resize(int nbd_index, uint64_t size);
 
 class NBDServer
 {
@@ -153,6 +150,7 @@ public:
   NBDServer(int _fd, librbd::Image& _image)
     : fd(_fd)
     , image(_image)
+    , disconnect_lock("NBDServer::DisconnectLocker")
     , lock("NBDServer::Locker")
     , reader_thread(*this, &NBDServer::reader_entry)
     , writer_thread(*this, &NBDServer::writer_entry)
@@ -160,6 +158,8 @@ public:
   {}
 
 private:
+  Mutex disconnect_lock;
+  Cond disconnect_cond;
   std::atomic<bool> terminated = { false };
 
   void shutdown()
@@ -284,12 +284,12 @@ private:
       if (r < 0) {
        derr << "failed to read nbd request header: " << cpp_strerror(r)
             << dendl;
-       return;
+       goto signal;
       }
 
       if (ctx->request.magic != htonl(NBD_REQUEST_MAGIC)) {
        derr << "invalid nbd request header" << dendl;
-       return;
+       goto signal;
       }
 
       ctx->request.from = ntohll(ctx->request.from);
@@ -308,14 +308,14 @@ private:
         case NBD_CMD_DISC:
           // NBD_DO_IT will return when pipe is closed
          dout(0) << "disconnect request received" << dendl;
-          return;
+          goto signal;
         case NBD_CMD_WRITE:
           bufferptr ptr(ctx->request.len);
          r = safe_read_exact(fd, ptr.c_str(), ctx->request.len);
           if (r < 0) {
            derr << *ctx << ": failed to read nbd request data: "
                 << cpp_strerror(r) << dendl;
-            return;
+            goto signal;
          }
           ctx->data.push_back(ptr);
           break;
@@ -341,10 +341,14 @@ private:
         default:
          derr << *pctx << ": invalid request command" << dendl;
           c->release();
-          return;
+          goto signal;
       }
     }
     dout(20) << __func__ << ": terminated" << dendl;
+
+signal:
+    Mutex::Locker l(disconnect_lock);
+    disconnect_cond.Signal();
   }
 
   void writer_entry()
@@ -413,6 +417,15 @@ public:
     }
   }
 
+  void wait_for_disconnect()
+  {
+    if (!started)
+      return;
+
+    Mutex::Locker l(disconnect_lock);
+    disconnect_cond.Wait(disconnect_lock);
+  }
+
   ~NBDServer()
   {
     if (started) {
@@ -463,15 +476,21 @@ class NBDWatchCtx : public librbd::UpdateWatchCtx
 {
 private:
   int fd;
+  int nbd_index;
+  bool use_netlink;
   librados::IoCtx &io_ctx;
   librbd::Image &image;
   unsigned long size;
 public:
   NBDWatchCtx(int _fd,
+              int _nbd_index,
+              bool _use_netlink,
               librados::IoCtx &_io_ctx,
               librbd::Image &_image,
               unsigned long _size)
     : fd(_fd)
+    , nbd_index(_nbd_index)
+    , use_netlink(_use_netlink)
     , io_ctx(_io_ctx)
     , image(_image)
     , size(_size)
@@ -484,23 +503,30 @@ public:
     librbd::image_info_t info;
     if (image.stat(info, sizeof(info)) == 0) {
       unsigned long new_size = info.size;
+      int ret;
 
       if (new_size != size) {
         dout(5) << "resize detected" << dendl;
         if (ioctl(fd, BLKFLSBUF, NULL) < 0)
-            derr << "invalidate page cache failed: " << cpp_strerror(errno)
-                 << dendl;
-        if (ioctl(fd, NBD_SET_SIZE, new_size) < 0) {
+          derr << "invalidate page cache failed: " << cpp_strerror(errno)
+               << dendl;
+       if (use_netlink) {
+         ret = netlink_resize(nbd_index, new_size);
+       } else {
+          ret = ioctl(fd, NBD_SET_SIZE, new_size);
+          if (ret < 0)
             derr << "resize failed: " << cpp_strerror(errno) << dendl;
-        } else {
+       }
+
+        if (!ret)
           size = new_size;
-        }
+
         if (ioctl(fd, BLKRRPART, NULL) < 0) {
           derr << "rescan of partition table failed: " << cpp_strerror(errno)
                << dendl;
         }
         if (image.invalidate_cache() < 0)
-            derr << "invalidate rbd cache failed" << dendl;
+          derr << "invalidate rbd cache failed" << dendl;
       }
     }
   }
@@ -579,37 +605,30 @@ private:
   }
 };
 
-static int open_device(const char* path, Config *cfg = nullptr, bool try_load_module = false)
+static int load_module(Config *cfg)
 {
-  int nbd = open(path, O_RDWR);
-  bool loaded_module = false;
+  ostringstream param;
+  int ret;
 
-  if (nbd < 0 && try_load_module && access("/sys/module/nbd", F_OK) != 0) {
-    ostringstream param;
-    int r;
-    if (cfg->nbds_max) {
-      param << "nbds_max=" << cfg->nbds_max;
-    }
-    if (cfg->max_part) {
-        param << " max_part=" << cfg->max_part;
-    }
-    r = module_load("nbd", param.str().c_str());
-    if (r < 0) {
-      cerr << "rbd-nbd: failed to load nbd kernel module: " << cpp_strerror(-r) << std::endl;
-      return r;
-    } else {
-      loaded_module = true;
-    }
-    nbd = open(path, O_RDWR);
+  if (cfg->nbds_max)
+    param << "nbds_max=" << cfg->nbds_max;
+
+  if (cfg->max_part)
+    param << " max_part=" << cfg->max_part;
+
+  if (!access("/sys/module/nbd", F_OK)) {
+    if (cfg->nbds_max || cfg->set_max_part)
+      cerr << "rbd-nbd: ignoring kernel module parameter options: nbd module already loaded"
+           << std::endl;
+    return 0;
   }
 
-  if (try_load_module && !loaded_module &&
-      (cfg->nbds_max || cfg->set_max_part)) {
-    cerr << "rbd-nbd: ignoring kernel module parameter options: nbd module already loaded" 
+  ret = module_load("nbd", param.str().c_str());
+  if (ret < 0)
+    cerr << "rbd-nbd: failed to load nbd kernel module: " << cpp_strerror(-ret)
          << std::endl;
-  }
 
-  return nbd;
+  return ret;
 }
 
 static int check_device_size(int nbd_index, unsigned long expected_size)
@@ -644,6 +663,449 @@ static int check_device_size(int nbd_index, unsigned long expected_size)
   return 0;
 }
 
+static int parse_nbd_index(const std::string& devpath)
+{
+  int index, ret;
+
+  ret = sscanf(devpath.c_str(), "/dev/nbd%d", &index);
+  if (ret <= 0) {
+    // mean an early matching failure. But some cases need a negative value.
+    if (ret == 0)
+      ret = -EINVAL;
+    cerr << "rbd-nbd: invalid device path: " <<  devpath
+         << " (expected /dev/nbd{num})" << std::endl;
+    return ret;
+  }
+
+  return index;
+}
+
+static int try_ioctl_setup(Config *cfg, int fd, uint64_t size, uint64_t flags)
+{
+  int index = 0, r;
+
+  if (cfg->devpath.empty()) {
+    char dev[64];
+    const char *path = "/sys/module/nbd/parameters/nbds_max";
+    int nbds_max = -1;
+    if (access(path, F_OK) == 0) {
+      std::ifstream ifs;
+      ifs.open(path, std::ifstream::in);
+      if (ifs.is_open()) {
+        ifs >> nbds_max;
+        ifs.close();
+      }
+    }
+
+    while (true) {
+      snprintf(dev, sizeof(dev), "/dev/nbd%d", index);
+
+      nbd = open(dev, O_RDWR);
+      if (nbd < 0) {
+        if (nbd == -EPERM && nbds_max != -1 && index < (nbds_max-1)) {
+          ++index;
+          continue;
+        }
+        r = nbd;
+        cerr << "rbd-nbd: failed to find unused device" << std::endl;
+        goto done;
+      }
+
+      r = ioctl(nbd, NBD_SET_SOCK, fd);
+      if (r < 0) {
+        close(nbd);
+        ++index;
+        continue;
+      }
+
+      cfg->devpath = dev;
+      break;
+    }
+  } else {
+    r = parse_nbd_index(cfg->devpath);
+    if (r < 0)
+      goto done;
+    index = r;
+
+    nbd = open(cfg->devpath.c_str(), O_RDWR);
+    if (nbd < 0) {
+      r = nbd;
+      cerr << "rbd-nbd: failed to open device: " << cfg->devpath << std::endl;
+      goto done;
+    }
+
+    r = ioctl(nbd, NBD_SET_SOCK, fd);
+    if (r < 0) {
+      r = -errno;
+      cerr << "rbd-nbd: the device " << cfg->devpath << " is busy" << std::endl;
+      close(nbd);
+      goto done;
+    }
+  }
+
+  r = ioctl(nbd, NBD_SET_BLKSIZE, RBD_NBD_BLKSIZE);
+  if (r < 0) {
+    r = -errno;
+    goto close_nbd;
+  }
+
+  r = ioctl(nbd, NBD_SET_SIZE, size);
+  if (r < 0) {
+    r = -errno;
+    goto close_nbd;
+  }
+
+  ioctl(nbd, NBD_SET_FLAGS, flags);
+
+  if (cfg->timeout >= 0) {
+    r = ioctl(nbd, NBD_SET_TIMEOUT, (unsigned long)cfg->timeout);
+    if (r < 0) {
+      r = -errno;
+      cerr << "rbd-nbd: failed to set timeout: " << cpp_strerror(r)
+           << std::endl;
+      goto close_nbd;
+    }
+  }
+
+  dout(10) << "ioctl setup complete for " << cfg->devpath << dendl;
+  nbd_index = index;
+  return 0;
+
+close_nbd:
+  if (r < 0) {
+    ioctl(nbd, NBD_CLEAR_SOCK);
+    cerr << "rbd-nbd: failed to map, status: " << cpp_strerror(-r) << std::endl;
+  }
+  close(nbd);
+done:
+  return r;
+}
+
+static void netlink_cleanup(struct nl_sock *sock)
+{
+  if (!sock)
+    return;
+
+  nl_close(sock);
+  nl_socket_free(sock);
+}
+
+static struct nl_sock *netlink_init(int *id)
+{
+  struct nl_sock *sock;
+  int ret;
+
+  sock = nl_socket_alloc();
+  if (!sock) {
+    cerr << "rbd-nbd: Could not allocate netlink socket." << std::endl;
+    return NULL;
+  }
+
+  ret = genl_connect(sock);
+  if (ret < 0) {
+    cerr << "rbd-nbd: Could not connect netlink socket. Error " << ret
+         << std::endl;
+    goto free_sock;
+  }
+
+  *id = genl_ctrl_resolve(sock, "nbd");
+  if (*id < 0)
+    //  nbd netlink interface not supported.
+    goto close_sock;
+
+  return sock;
+
+close_sock:
+  nl_close(sock);
+free_sock:
+  nl_socket_free(sock);
+  return NULL;
+}
+
+static int netlink_disconnect(int index)
+{
+  struct nl_sock *sock;
+  struct nl_msg *msg;
+  int ret, nl_id;
+
+  sock = netlink_init(&nl_id);
+  if (!sock)
+    // Try ioctl
+    return 1;
+
+  nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, genl_handle_msg, NULL);
+
+  msg = nlmsg_alloc();
+  if (!msg) {
+    cerr << "rbd-nbd: Could not allocate netlink message." << std::endl;
+    goto free_sock;
+  }
+
+  if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, nl_id, 0, 0,
+                   NBD_CMD_DISCONNECT, 0)) {
+    cerr << "rbd-nbd: Could not setup message." << std::endl;
+    goto nla_put_failure;
+  }
+
+  NLA_PUT_U32(msg, NBD_ATTR_INDEX, index);
+
+  ret = nl_send_sync(sock, msg);
+  netlink_cleanup(sock);
+  if (ret < 0) {
+    cerr << "rbd-nbd: netlink disconnect failed: " << nl_geterror(-ret)
+         << std::endl;
+    return -EIO;
+  }
+
+  return 0;
+
+nla_put_failure:
+  nlmsg_free(msg);
+free_sock:
+  netlink_cleanup(sock);
+  return -EIO;
+}
+
+static int netlink_disconnect_by_path(const std::string& devpath)
+{
+  int index;
+
+  index = parse_nbd_index(devpath);
+  if (index < 0)
+    return index;
+
+  return netlink_disconnect(index);
+}
+
+static int netlink_resize(int nbd_index, uint64_t size)
+{
+  struct nl_sock *sock;
+  struct nl_msg *msg;
+  int nl_id, ret;
+
+  sock = netlink_init(&nl_id);
+  if (!sock) {
+    cerr << "rbd-nbd: Netlink interface not supported." << std::endl;
+    return 1;
+  }
+
+  nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, genl_handle_msg, NULL);
+
+  msg = nlmsg_alloc();
+  if (!msg) {
+    cerr << "rbd-nbd: Could not allocate netlink message." << std::endl;
+    goto free_sock;
+  }
+
+  if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, nl_id, 0, 0,
+                   NBD_CMD_RECONFIGURE, 0)) {
+    cerr << "rbd-nbd: Could not setup message." << std::endl;
+    goto free_msg;
+  }
+
+  NLA_PUT_U32(msg, NBD_ATTR_INDEX, nbd_index);
+  NLA_PUT_U64(msg, NBD_ATTR_SIZE_BYTES, size);
+
+  ret = nl_send_sync(sock, msg);
+  if (ret < 0) {
+    cerr << "rbd-nbd: netlink resize failed: " << nl_geterror(ret) << std::endl;
+    goto free_sock;
+  }
+
+  netlink_cleanup(sock);
+  dout(10) << "netlink resize complete for nbd" << nbd_index << dendl;
+  return 0;
+
+nla_put_failure:
+free_msg:
+  nlmsg_free(msg);
+free_sock:
+  netlink_cleanup(sock);
+  return -EIO;
+}
+
+static int netlink_connect_cb(struct nl_msg *msg, void *arg)
+{
+  struct genlmsghdr *gnlh = (struct genlmsghdr *)nlmsg_data(nlmsg_hdr(msg));
+  Config *cfg = (Config *)arg;
+  struct nlattr *msg_attr[NBD_ATTR_MAX + 1];
+  uint32_t index;
+  int ret;
+
+  ret = nla_parse(msg_attr, NBD_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
+                  genlmsg_attrlen(gnlh, 0), NULL);
+  if (ret) {
+    cerr << "rbd-nbd: Unsupported netlink reply" << std::endl;
+    return -NLE_MSGTYPE_NOSUPPORT;
+  }
+
+  if (!msg_attr[NBD_ATTR_INDEX]) {
+    cerr << "rbd-nbd: netlink connect reply missing device index." << std::endl;
+    return -NLE_MSGTYPE_NOSUPPORT;
+  }
+
+  index = nla_get_u32(msg_attr[NBD_ATTR_INDEX]);
+  cfg->devpath = "/dev/nbd" + stringify(index);
+  nbd_index = index;
+
+  return NL_OK;
+}
+
+static int netlink_connect(Config *cfg, struct nl_sock *sock, int nl_id, int fd,
+                           uint64_t size, uint64_t flags)
+{
+  struct nlattr *sock_attr;
+  struct nlattr *sock_opt;
+  struct nl_msg *msg;
+  int ret;
+
+  nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, netlink_connect_cb, cfg);
+
+  msg = nlmsg_alloc();
+  if (!msg) {
+    cerr << "rbd-nbd: Could not allocate netlink message." << std::endl;
+    return -ENOMEM;
+  }
+
+  if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, nl_id, 0, 0, NBD_CMD_CONNECT,
+                   0)) {
+    cerr << "rbd-nbd: Could not setup message." << std::endl;
+    goto free_msg;
+  }
+
+  if (!cfg->devpath.empty()) {
+    ret = parse_nbd_index(cfg->devpath);
+    if (ret < 0)
+      goto free_msg;
+
+    NLA_PUT_U32(msg, NBD_ATTR_INDEX, ret);
+  }
+
+  if (cfg->timeout >= 0)
+    NLA_PUT_U64(msg, NBD_ATTR_TIMEOUT, cfg->timeout);
+
+  NLA_PUT_U64(msg, NBD_ATTR_SIZE_BYTES, size);
+  NLA_PUT_U64(msg, NBD_ATTR_BLOCK_SIZE_BYTES, RBD_NBD_BLKSIZE);
+  NLA_PUT_U64(msg, NBD_ATTR_SERVER_FLAGS, flags);
+
+  sock_attr = nla_nest_start(msg, NBD_ATTR_SOCKETS);
+  if (!sock_attr) {
+    cerr << "rbd-nbd: Could not init sockets in netlink message." << std::endl;
+    goto free_msg;
+  }
+
+  sock_opt = nla_nest_start(msg, NBD_SOCK_ITEM);
+  if (!sock_opt) {
+    cerr << "rbd-nbd: Could not init sock in netlink message." << std::endl;
+    goto free_msg;
+  }
+
+  NLA_PUT_U32(msg, NBD_SOCK_FD, fd);
+  nla_nest_end(msg, sock_opt);
+  nla_nest_end(msg, sock_attr);
+
+  ret = nl_send_sync(sock, msg);
+  if (ret < 0) {
+    cerr << "rbd-nbd: netlink connect failed: " << nl_geterror(ret)
+         << std::endl;
+    return -EIO;
+  }
+
+  dout(10) << "netlink connect complete for " << cfg->devpath << dendl;
+  return 0;
+
+nla_put_failure:
+free_msg:
+  nlmsg_free(msg);
+  return -EIO;
+}
+
+static int try_netlink_setup(Config *cfg, int fd, uint64_t size, uint64_t flags)
+{
+  struct nl_sock *sock;
+  int nl_id, ret;
+
+  sock = netlink_init(&nl_id);
+  if (!sock) {
+    cerr << "rbd-nbd: Netlink interface not supported. Using ioctl interface."
+         << std::endl;
+    return 1;
+  }
+
+  dout(10) << "netlink interface supported." << dendl;
+
+  ret = netlink_connect(cfg, sock, nl_id, fd, size, flags);
+  netlink_cleanup(sock);
+
+  if (ret != 0)
+    return ret;
+
+  nbd = open(cfg->devpath.c_str(), O_RDWR);
+  if (nbd < 0) {
+    cerr << "rbd-nbd: failed to open device: " << cfg->devpath << std::endl;
+    return nbd;
+  }
+
+  return 0;
+}
+
+static void handle_signal(int signum)
+{
+  int ret;
+
+  ceph_assert(signum == SIGINT || signum == SIGTERM);
+  derr << "*** Got signal " << sig_str(signum) << " ***" << dendl;
+
+  if (nbd < 0 || nbd_index < 0) {
+    dout(20) << __func__ << ": " << "disconnect not needed." << dendl;
+    return;
+  }
+
+  dout(20) << __func__ << ": " << "sending NBD_DISCONNECT" << dendl;
+  ret = netlink_disconnect(nbd_index);
+  if (ret == 1)
+    ret = ioctl(nbd, NBD_DISCONNECT);
+
+  if (ret != 0) {
+    derr << "rbd-nbd: disconnect failed. Error: " << ret << dendl;
+  } else {
+    dout(20) << __func__ << ": " << "disconnected" << dendl;
+  }
+}
+
+static NBDServer *start_server(int fd, librbd::Image& image)
+{
+  NBDServer *server;
+
+  server = new NBDServer(fd, image);
+  server->start();
+
+  init_async_signal_handler();
+  register_async_signal_handler(SIGHUP, sighup_handler);
+  register_async_signal_handler_oneshot(SIGINT, handle_signal);
+  register_async_signal_handler_oneshot(SIGTERM, handle_signal);
+
+  return server;
+}
+
+static void run_server(Preforker& forker, NBDServer *server, bool netlink_used)
+{
+  if (g_conf()->daemonize) {
+    global_init_postfork_finish(g_ceph_context);
+    forker.daemonize();
+  }
+
+  if (netlink_used)
+    server->wait_for_disconnect();
+  else
+    ioctl(nbd, NBD_DO_IT);
+
+  unregister_async_signal_handler(SIGHUP, sighup_handler);
+  unregister_async_signal_handler(SIGINT, handle_signal);
+  unregister_async_signal_handler(SIGTERM, handle_signal);
+  shutdown_async_signal_handler();
+}
+
 static int do_map(int argc, const char *argv[], Config *cfg)
 {
   int r;
@@ -656,13 +1118,14 @@ static int do_map(int argc, const char *argv[], Config *cfg)
   int read_only = 0;
   unsigned long flags;
   unsigned long size;
+  bool use_netlink;
 
-  int index = 0;
   int fd[2];
 
   librbd::image_info_t info;
 
   Preforker forker;
+  NBDServer *server;
 
   vector<const char*> args;
   argv_to_vec(argc, argv, args);
@@ -741,104 +1204,46 @@ static int do_map(int argc, const char *argv[], Config *cfg)
   if (r < 0)
     goto close_fd;
 
-  if (cfg->devpath.empty()) {
-    char dev[64];
-    bool try_load_module = true;
-    const char *path = "/sys/module/nbd/parameters/nbds_max";
-    int nbds_max = -1;
-    if (access(path, F_OK) == 0) {
-      std::ifstream ifs;
-      ifs.open(path, std::ifstream::in);
-      if (ifs.is_open()) {
-        ifs >> nbds_max;
-        ifs.close();
-      }
-    }
-
-    while (true) {
-      snprintf(dev, sizeof(dev), "/dev/nbd%d", index);
-
-      nbd = open_device(dev, cfg, try_load_module);
-      try_load_module = false;
-      if (nbd < 0) {
-        if (nbd == -EPERM && nbds_max != -1 && index < (nbds_max-1)) {
-          ++index;
-          continue;
-        }
-        r = nbd;
-        cerr << "rbd-nbd: failed to find unused device" << std::endl;
-        goto close_fd;
-      }
-
-      r = ioctl(nbd, NBD_SET_SOCK, fd[0]);
-      if (r < 0) {
-        close(nbd);
-        ++index;
-        continue;
-      }
-
-      cfg->devpath = dev;
-      break;
-    }
-  } else {
-    r = sscanf(cfg->devpath.c_str(), "/dev/nbd%d", &index);
-    if (r <= 0) {
-      // mean an early matching failure. But some cases need a negative value.
-      if (r == 0)
-       r = -EINVAL;
-      cerr << "rbd-nbd: invalid device path: " << cfg->devpath
-           << " (expected /dev/nbd{num})" << std::endl;
-      goto close_fd;
-    }
-    nbd = open_device(cfg->devpath.c_str(), cfg, true);
-    if (nbd < 0) {
-      r = nbd;
-      cerr << "rbd-nbd: failed to open device: " << cfg->devpath << std::endl;
-      goto close_fd;
-    }
-
-    r = ioctl(nbd, NBD_SET_SOCK, fd[0]);
-    if (r < 0) {
-      r = -errno;
-      cerr << "rbd-nbd: the device " << cfg->devpath << " is busy" << std::endl;
-      close(nbd);
-      goto close_fd;
-    }
-  }
-
   flags = NBD_FLAG_SEND_FLUSH | NBD_FLAG_SEND_TRIM | NBD_FLAG_HAS_FLAGS;
   if (!cfg->snapname.empty() || cfg->readonly) {
     flags |= NBD_FLAG_READ_ONLY;
     read_only = 1;
   }
 
-  r = ioctl(nbd, NBD_SET_BLKSIZE, RBD_NBD_BLKSIZE);
-  if (r < 0) {
-    r = -errno;
-    goto close_nbd;
-  }
-
   if (info.size > ULONG_MAX) {
     r = -EFBIG;
     cerr << "rbd-nbd: image is too large (" << byte_u_t(info.size)
          << ", max is " << byte_u_t(ULONG_MAX) << ")" << std::endl;
-    goto close_nbd;
+    goto close_fd;
   }
 
   size = info.size;
 
-  r = ioctl(nbd, NBD_SET_SIZE, size);
-  if (r < 0) {
-    r = -errno;
-    goto close_nbd;
+  r = load_module(cfg);
+  if (r < 0)
+    goto close_fd;
+
+  server = start_server(fd[1], image);
+
+  use_netlink = cfg->try_netlink;
+  if (use_netlink) {
+    r = try_netlink_setup(cfg, fd[0], size, flags);
+    if (r < 0) {
+      goto free_server;
+    } else if (r == 1) {
+      use_netlink = false;
+    }
   }
 
-  r = check_device_size(index, size);
-  if (r < 0) {
-    goto close_nbd;
+  if (!use_netlink) {
+    r = try_ioctl_setup(cfg, fd[0], size, flags);
+    if (r < 0)
+      goto free_server;
   }
 
-  ioctl(nbd, NBD_SET_FLAGS, flags);
+  r = check_device_size(nbd_index, size);
+  if (r < 0)
+    goto close_nbd;
 
   r = ioctl(nbd, BLKROSET, (unsigned long) &read_only);
   if (r < 0) {
@@ -846,48 +1251,18 @@ static int do_map(int argc, const char *argv[], Config *cfg)
     goto close_nbd;
   }
 
-  if (cfg->timeout >= 0) {
-    r = ioctl(nbd, NBD_SET_TIMEOUT, (unsigned long)cfg->timeout);
-    if (r < 0) {
-      r = -errno;
-      cerr << "rbd-nbd: failed to set timeout: " << cpp_strerror(r)
-           << std::endl;
-      goto close_nbd;
-    }
-  }
-
   {
     uint64_t handle;
 
-    NBDWatchCtx watch_ctx(nbd, io_ctx, image, info.size);
+    NBDWatchCtx watch_ctx(nbd, nbd_index, use_netlink, io_ctx, image,
+                          info.size);
     r = image.update_watch(&watch_ctx, &handle);
     if (r < 0)
       goto close_nbd;
 
     cout << cfg->devpath << std::endl;
 
-    if (g_conf()->daemonize) {
-      global_init_postfork_finish(g_ceph_context);
-      forker.daemonize();
-    }
-
-    {
-      NBDServer server(fd[1], image);
-
-      server.start();
-
-      init_async_signal_handler();
-      register_async_signal_handler(SIGHUP, sighup_handler);
-      register_async_signal_handler_oneshot(SIGINT, handle_signal);
-      register_async_signal_handler_oneshot(SIGTERM, handle_signal);
-
-      ioctl(nbd, NBD_DO_IT);
-
-      unregister_async_signal_handler(SIGHUP, sighup_handler);
-      unregister_async_signal_handler(SIGINT, handle_signal);
-      unregister_async_signal_handler(SIGTERM, handle_signal);
-      shutdown_async_signal_handler();
-    }
+    run_server(forker, server, use_netlink);
 
     r = image.update_unwatch(handle);
     ceph_assert(r == 0);
@@ -895,10 +1270,17 @@ static int do_map(int argc, const char *argv[], Config *cfg)
 
 close_nbd:
   if (r < 0) {
-    ioctl(nbd, NBD_CLEAR_SOCK);
-    cerr << "rbd-nbd: failed to map, status: " << cpp_strerror(-r) << std::endl;
+    if (use_netlink) {
+      netlink_disconnect(nbd_index);
+    } else {
+      ioctl(nbd, NBD_CLEAR_SOCK);
+      cerr << "rbd-nbd: failed to map, status: " << cpp_strerror(-r)
+          << std::endl;
+    }
   }
   close(nbd);
+free_server:
+  delete server;
 close_fd:
   close(fd[0]);
   close(fd[1]);
@@ -912,23 +1294,30 @@ close_ret:
   return r;
 }
 
-static int do_unmap(const std::string &devpath)
+static int do_unmap(Config *cfg)
 {
-  int r = 0;
+  int r, nbd;
+
+  /*
+   * The netlink disconnect call supports devices setup with netlink or ioctl,
+   * so we always try that first.
+   */
+  r = netlink_disconnect_by_path(cfg->devpath);
+  if (r != 1)
+    return r;
 
-  int nbd = open_device(devpath.c_str());
+  nbd = open(cfg->devpath.c_str(), O_RDWR);
   if (nbd < 0) {
-    cerr << "rbd-nbd: failed to open device: " << devpath << std::endl;
+    cerr << "rbd-nbd: failed to open device: " << cfg->devpath << std::endl;
     return nbd;
   }
 
   r = ioctl(nbd, NBD_DISCONNECT);
   if (r < 0) {
-      cerr << "rbd-nbd: the device is not used" << std::endl; 
+      cerr << "rbd-nbd: the device is not used" << std::endl;
   }
 
   close(nbd);
-
   return r;
 }
 
@@ -1097,6 +1486,8 @@ static int parse_args(vector<const char*>& args, std::ostream *err_msg,
                                      (char *)NULL)) {
     } else if (ceph_argparse_flag(args, i, "--pretty-format", (char *)NULL)) {
       cfg->pretty_format = true;
+    } else if (ceph_argparse_flag(args, i, "--try-netlink", (char *)NULL)) {
+      cfg->try_netlink = true;
     } else {
       ++i;
     }
@@ -1197,7 +1588,7 @@ static int rbd_nbd(int argc, const char *argv[])
         return -EINVAL;
       break;
     case Disconnect:
-      r = do_unmap(cfg.devpath);
+      r = do_unmap(&cfg);
       if (r < 0)
         return -EINVAL;
       break;
index 7704bd2507b0391e8ae60a4f02d78a776dbc62d7..8e3d5b45888024813bf35a1cf422fe5a61d0c057 100644 (file)
@@ -244,13 +244,13 @@ int update_osdmap(ObjectStore& fs, OSDSuperblock& sb, MonitorDBStore& ms)
     uint32_t crc = -1;
     uint64_t features = 0;
     // add inc maps
-    {
+    auto add_inc_result = [&] {
       const auto oid = OSD::get_inc_osdmap_pobject_name(e);
       bufferlist bl;
       int nread = fs.read(ch, oid, 0, 0, bl);
       if (nread <= 0) {
-        cerr << "missing " << oid << std::endl;
-        return -EINVAL;
+        cout << "missing " << oid << std::endl;
+        return -ENOENT;
       }
       t->put(prefix, e, bl);
 
@@ -277,6 +277,18 @@ int update_osdmap(ObjectStore& fs, OSDSuperblock& sb, MonitorDBStore& ms)
           // inc.decode() verifies `inc_crc`, so it's been taken care of.
         }
       }
+      return 0;
+    }();
+    switch (add_inc_result) {
+    case -ENOENT:
+      // no worries, we always have full map
+      break;
+    case -EINVAL:
+      return -EINVAL;
+    case 0:
+      break;
+    default:
+      assert(0);
     }
     // add full maps
     {